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

Peter S. Magnusson

Emulering är förlorarnas teknik

Datateknik, 5 Maj 1994

Desperationen som följt på de stora framgångarna för gammal och trött teknik som x86-processorer och Dos har lett till att en religion stiftats. Den religion har bara ett budord: kompatibilitet. När det nu ändock kommer en flora av nya moderna operativsystem och nya processorer blir därför tolkningen av budet från ovan: du skall emulera.

Kort sagt: Emulering skall tillåta alla användare av alla datorer att köra alla program (läs: Windows- och Dos-program). Därmed kan helt plötsligt Apple, IBM, Sun, Digital, osv skryta med "tiotusentals program".

Emulering skiljer sig från en populär visdom inom datateknik: alla intressanta idéer har någon redan kommit på under femtio- eller sextiotalet. Emulering är nämligen ännu äldre!

Den brittiske matematikern Turing (med flera) visade på trettiotalet att alla rimliga beräkningsmodeller var ekvivalenta, dvs de kunde alla fås att emulera varandra. Speciellt den modell som förespråkades av amerikanen von Neumann blev populär. Han förespråkade bland annat läs- och skrivbart minne, register, och en processor som utför en instruktion i taget. Alla vanliga datorer är idag så kallade von Neuman maskiner.

Att vilken dator som helst kan emulera vilken annan dator som helst visste man alltså redan innan den första datorn byggdes. Kommersiellt har man utnyttjat detta i princip hela tiden. IBMs System/360 från 1964 kunde till till exempel emulera program skrivan för IBM 1401.

Varför kör då inte alla program på alla datorer? Det finns två skäl: det är svårt att emulera, och det går långsamt. Att emulera instruktioner innebär i princip att simulera processonr som programmen skrevs för. För varje instruktion måste emulatorn tänka efter vad effekten skulle bli, vilket tar tid. Dessutom gör de flesta instruktioner mer arbete än vad som egentligen efterfrågas (statusflaggor är ett bra exempel).

Emulatorer använder sig idag av antingen interpretering eller binär översättning, eller en blandning av metoderna. Interpretering (varje maskininstruktion översätts och körs därefter direkt) är långsamt (program kör 10-40 gånger långsammare än om de kopmileras om), men portabelt. Binär översättning (maskininstruktionerna översätts och körs först när hela programmet översatts) är ca 2-4 ggr snabbare än interpretering, men är betydligt svårare och inte särskilt portabelt. Dagens bästa emulatorer innebär en prestandaförlust på en faktor 5-15.

Specialiserad maskinvara är snabbare men dyrare: instickskort med processor, dubbla processorer, osv, har funnits länge. Ett exempel är att processorn IMS 3250 kan emulera både Intels 486 och Motorolas 68040 (90 Mips utlovas). Ett annat att en PowerPC 615 från IBM har stöd för att kunna emulera processorer i x86-familjen. Ett tredje är att Digitals Alpha stödjer samma flyttalsformat som Vax. Ett fjärde att Intels 386:a kom med ordentligt stöd för virtuella 8060-maskiner. På sätt och viss gör processortillverkare något liknande med varje ny generation.

Varför har då emulering ändå blivit modernt? Jo, för det första kan emulatorerna konstrueras på ett litet smartare sätt: interaktiva program (typ Macintosh eller Windows program) spenderar mycket tid i operativsystemet (mellan 60% och 80%). Och om operativsystemkoden kompileras om för den nya processorn samtidigt som operativsystemanropen är desamma så kan effektiviteten ökas rejält. Alltså är moderna program lämpliga för emulering.

För det andra har datorerna blivit tillräckligt mycket snabbare. På cirka fem år har persondatorer ökat sin prestanda från ett SPECint92-värde på under 5 (33 MHz 386:a) till 62.6 (66 MHz PowerPC). Eftersom smärtgränsen för Windows 3.1 låg någonstans kring den förstnämnda 386-datorn, så kan emulering idag vara ett realistiskt alternativ. Det finns prestanda att ta av så att säga. Man ska alltså inte tro på leverantörernas påståenden om att emuleringsteknologin utvecklats kraftigt de senaste åren.

Ett tredje skäl till att emulering kommit i ropet är att Microsoft låtit emulatortillverkaren Insignia få tillgång till Windwows källkod. Skälet är att Microsoft vill ta initiativet från Suns Windowsemulator Wabi.

Windows-program kommer därför att kunna köra på i princip alla plattformar. Dessutom kommer IBM/Motorola att flytta Windows NT som ett av tre operativsystem för processorn Power PC. Gränssnittet mellan tillämpningsprogrammen och Windows NT, Win32, blir därför det enda programmeringsgränssnittet (API, Application Programming Interface) som finns på både Intel-datorer och PowerPC-datorer. Windows NT-program för PowerPC behövs därför inte emuleras för att kunna köra på en Power Mac!

Insignia har också löst problemet med att översätt Windows-anrop till de 680x0-baserade Macintosh-datorernas programmeringsgränssnitt.

Programutvecklare torde alltså mer än någonsin tidigare välja att i första hand skriva program för Windows. Programmet kan ju då köra på i princip alla datorer! Apple tappar därmed sakta kontrollen över sitt API. Apple kommer att tvingas vara Windows-friendly, annars kommer programvaruutvecklarna inte flytta programmen till Macintosh. Med andra ord, nya program kommer i första hand att vara skrivna för Microsofts nya Windows-version Chicago och/eller Windows NT, och ändå kunna köras bra eller utmärkt på Power Macintosh. Dessutom kommer Mac-program att med hjälp av Apples emulator MAE/MAS kunna köras bra på Unix-arbetsstationer. Och IBMs emulator IST stödjer x86-Windows program på IBMs arbetsstationer.

Dessutom är APIer rörliga mål. Allteftersom Microsoft kommer med nya idéer till sitt API så kommer Insignia, IBM, Apple och Sun att kämpa för att hänga med och vara kompatibla. Men oundvikligen kommer de att ligga ett steg efter (även Microsofts eget Windows NT har ännu inte OLE 2.0 stöd).

Microsoft släpper inte ifrån sig Windows källkod till IBM, Sun, eller Apple. Som en parentes kan nämnas att Macintosh över huvud taget kommer att få svårt att hantera de Windows-program som inom det närmaste året utnyttjar trådar, virtuellt minne, eller säkerhet eftersom Macintosh operativsystem inte stödjer de funktionerna.

Om alla emulerar Dos och Windows, kommer konkurrensfördelarna att ta ut varandra. För att överleva krävs emulering, men det ger ingen speciell fördel (ungefär som att alla bilar har handbroms). Att använda emulering för att brygga generationsväxlar är utmärkt, men i övrigt? Nej, Apple, IBM, och Sun borde ändra kurs: utnyttja kombinationen av maskinvara och programvara till att innovera, inte emulera: emulation is for losers.

Peter S. Magnusson

Tillbaka...


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