[Web pekare och referenser till krönikan] --- [Läsarnas åsikter] --- [Tillbaks till krönikor]

Peter S. Magnusson

Parallel PC snart på var mans bord

Datateknik, 9 Juni 1994

Det har alltid varit svårt att få sekventiella datorer att bli snabba. Dessutom, sägs det, kan processorerna inte bli snabbare i nuvarande takt hur länge som helst: Förr eller senare behöver vi ta till mer än en processor för att öka prestanda.

På ett parallelldatorsymposium som jag deltog i nyligen (i Cancún, Mexiko - vad gör man inte för forskningen?) diskuterades bland annat det övergripande konceptet ubiquitous parallalel computing. Ubiquitous är ett nytt inneord som betyder ungefär "allmänt utbredd" eller "allestädes närvarande". Vanliga tolkningar är även "alla kan söka forskningspengar" alternativt "alla behöver konsulthjälp", beroende på var man jobbar. Trots detta nya koncepts påstått garanterade seger så har de specialiserace parallelldatorerna haft det svårt att bli allestädes närvarande.

Men ser man det i ett maskinvaruperspektiv är egentligen alla datorer idag parallella: en modern arbetsstation gör hundratusentals operationer samtidigt eftersom en mikroprocessor har miljontals transistorer. Stödkretsar för bildskärm, minneshantering (DMA), signalbehandling (DSP) och kommunikation avlastar den centrala mikroprocessorn genom att arbeta parallellt med den.

Och trots allt har programvaran blivit allt mer parallell. När Intels gamla hederliga 386-processor var ny skrev jag en assemblerrutin för 32-bitars addition som kunde anropas från vanliga C program - den var 6 gånger snabbare än biblioteksrutinen som bara använde 16-bitars instruktioner - tyvärr orkade Borlands kompilator inte lägga ut dylik komplicerad kod trots en "386 flagga". Eller ta superskalära processorer. Nyligen skulle jag optimera en viktig kodsnutt som skulle köra på Suns SS10 (SuperSparc processor). Genom att tänka på vilka instruktioner som kunde startas samtidigt och köra parallellt blev hela programmet cirka 5 procent snabbare.

Det som behöver mogna är grov parallellism, och detta verkar vara på gång. Låt oss se varför, och börja med maskinvarusidan. Intel presenterade nyligen MPS (Multi-Processor Specification), som är tänkt att bli en standard för multiprocessorer på samma sätt som IBMs PC AT är för PC-datorer.

En fundamental del av MPS är Intels avbrottshanterare APIC (Advanced Programmable Interrupt Controller). Den finns bland annat integrerad i senare upplagor av Pentium-processorn. Operativsystemet tar reda på maskinvarukonfigurationen genom att leta efter en tabell i minnet. Därför kan samma version av ett operativsystem köras på alla MPS-kompatibla maskiner! Tidigare har leverantörerna varit tvungna att anpassa operativsystemet till datorn.

Ett flertal stora PC-tillverkare, bland annat AST, ALR, och Dell, har sagt att de satsar på MPS. Alla viktiga leverantörer av operativsystem har också hoppat på: Novell, Microsoft, SCO, IBM, och Sun. Om det fungerar som tänkt, så ska du innan årsskiftet kunna köpa en multiprocessor-PC från en av flera datorleverantörer och oberoende av märke kunna köpa en MPS-version av Windows NT, NetWare, UnixWare, OS/2, SCO Unix eller Solaris. Jag skulle tro att högst NT och möjligtvis Solaris och SCO Unix kommer att vara klara före årets slut.

Precis när superskalära processorer - de kan starta flera instruktioner per cykel - börjar bli populära så närmar sig deras skaläritet taket. Under 1995 kommer flera mikroprocessorer med mellan 6- och 8-faldig skaläritet (de startar alltså 6-8 instruktioner per cykel): DEC 21164, Mips T5, PowerPC 604 och 620, och UltraSparc. Men superskaläritet har fallande marginalnytta. Ett effektivare alternativ är att husera flera processorer på ett chip - vilket kiselytan blivit stor nog att klara. Flerprocessorchips för nischtillämpningar finns redan från et flertal tillverkare. Men även för generella mikroprocessorer funderar de stora leverantörer över en liknande strategi. Själv skulle jag gissa att Intels P7 blir av dylik design, och att detta är en av anledningarna till att Intel med MPS på ett tidigt stadium vill uppmuntra programvaruleverantörer till att parallellisera sin kod.

Men viktigare är troligen programvarutrender som att Microsofts nya operativsystem Chicago kommer att stödja så kallad flertrådskörning (multithreading) som ger fördelar redan på singelprocessorer. Däremot stödjer Chicago inte flera processorer. Trådade program kan hålla flera bollar i luften och behöver i princip aldrig låsa gränssnittet. Användaren får därmed både bättre respons och högre produktivitet.

En stor finess är att Windows NT (Microsofts "high end"-operativsystem) stöjder flera processorer och model för flertrådskörning. Det betyder att trådade program för Chicago med få eller inga förändringar kan utnyttja flera processorer i NT! En liknande situation gäller för Solaris 2.4.

Componentware är det nya inneordet för en annan trend som innebär att parallellismen ökar. Tanken är att framtidens applikationer ska byggas med legokloss-liknande programbitar. De viktigaste ramverken lär bli Common Object Model (COM) och OLE från Microsoft samt System Object Model (SOM) och OpenDoc från IBM, Apple, och Sun.

Tanken är att exempelvis en editorkomponent skall kunna användas av flera applikationer, och att text i olika typer av dokument kan redigeras med samma editor. Komponenter skall kunna prata med varandra, lokalt eller över ett nätverk.

Komponenter kommer att introducera grov parallellism inte bara i applikationer utan även i dokument. Dokument som består av en samling objekt kommer att bli allt vanligare - och då finns det ingen anledning till att objekten inte kan uppdateras samtidigt.

Så det är bara att vänja sig: ubiquitious MPS-compatible multithreaded componentware är framtiden!

Peter S. Magnusson

Tillbaka...


[Web pekare och referenser till krönikan] --- [Läsarnas åsikter] --- [Tillbaks till krönikor]