JavaScript is currently disabled.Please enable it for a better experience of Jumi. Arkitekturen avgör processorns prestanda

Ska en processor ha många instruktioner eller bara några få? Ska instruktionerna vara långa eller korta? Eller kan man rentav klara sig utan några instruktioner alls? Vilket alternativ man än använder så finns åtminstone en adekvat förkortning.
Akronymen "risc" är nästan ett honnörsord inom elektroniken. Risc betyder "reduced instruction set computer", vilket på svenska blir "dator som arbetar med få och enkla instruktioner". Ordet computer är lite missvisande. Det handlar i själva verket om en processor. Att processorn sitter i en dator är strängt taget bara en tillämpning, låt vara en viktig sådan.
 
Risc är, som många andra uttryck, en idealisering. Termen myntades när några amerikanska elektronikingenjörer vid mitten av 1980-talet upptäckte, eller snarare insåg, att det var ganska få typer av instruktioner som tog upp det mesta av processorns arbete. Av hela den tillgängliga instruktionsuppsättningen var det 20 procent som användes verkligt ofta. Därifrån var steget inte långt till att rensa bort de instruktioner som sällan användes. När man någon gång behövde en bortrensad instruktion fick man ersätta den med en kombination av de kvarvarande.
 
Riscprocessorerna används ofta i arbetsstationer och servrar med beräkningskrävande arbetsuppgifter. Den rensade instruktionsuppsättningen fungerade förstås bäst när den användes i en processor som var skräddarsydd för uppgiften, till exempel Digitals Alpha, Hewlett-Packards PA-Risc eller Suns Sparc-processor. När termen risc myntades fick den "gamla" typen av processorer för persondatorer, till exempel Motorolas 68000 och Intels x86:or, döpas om till cisc, complex instruction set computer. Sedan dess har det kommit några nya, fyrbokstaviga uttryck för andra typer av processorer. Dit hör vliw, epic och nisc.
 
Kisel, instruktioner och firmware
I stort sett handlar det om ekonomi i ordets egentliga mening: hur man bäst använder två begränsade resurser. Den ena är transistorerna, den andra är instruktionerna. Det blir en fråga om att bäst balansera de två mot varandra. Dessutom ingår en tredje ingrediens, ett mellanting, som på engelska kallas för firmware. Det är instruktioner som lagts i någon form av läsminnen, Rom. Det är visserligen instruktioner men det är instruktioner med en fast instruktionsuppsättning.
 
Maskinkoden, eller makrokoden som den också kallas, är de instruktioner som processorn matas med utifrån. Den är obegriplig för processorn. Istället behöver processorn enkla, stegvisa styrinstruktioner. Mikrokoden är det verktyg som översätter maskinkoden till styrinstruktioner till processorn. Den genererar mikroinstruktioner, och en mikroinstruktion styr till exempel en speciell grind eller beordrar processorns räkneenhet (ALU, aritmetisk-logisk enhet) att utföra en viss operation. Sist i mikroinstruktionen ligger också adressen till nästa mikroinstruktion.
 
Två sorters mikrokod
För att göra saken mer invecklad skiljer man på två typer av mikrokod - horisontell och vertikal. Den horisontella är mer maskinnära, det vill säga den ger direkta styrinstruktioner till olika delar av processorn. Den vertikala mikrokoden innehåller sammansatta instruktioner. De måste separeras till enskilda styrinstruktioner med hjälp av kretsar i processorn. Fördelen med den vertikala mikrokoden är att den kan undvika att ge styrinstruktioner som är motstridiga, till exempel att två delar av processorn försöker att komma åt den interna bussen samtidigt.
 
Nackdelen med vertikal kod är att den kräver en egen avkodning, och den avkodningen klarar bara av ett begränsat antal kombinationer av styrinstruktioner. Dessutom tar detta extra steg att gå igenom. Idén bakom risc-processorn är att den snabbt kan utföra ett stort antal instruktioner av ett fåtal typer. Då är mikrokoden egentligen en hämsko, eftersom den alltid kräver en viss hantering. Därför lägger konstruktörerna av riscprocessorer allt oftare in avkodningen i själva kretsarna. Man hoppar helt enkelt över mikrokoden och låter inbyggd logik snabböversätta maskinkoden direkt till styrinstruktioner. Ju bättre hanteringen av instruktionerna flyter, desto snabbare arbetar processorn. En teknik för att få en processor snabbare är att införa rörledningar (pipelines).
 
Det är funktionsenheter där bearbetningen av en instruktion startar innan bearbetningen av den föregående avslutats. Rörledningar kan liknas vid löpande band och består i princip av fyra steg: hämta instruktionen, avkoda den, utför arbetet och skriv tillbaka resultatet till minnet (fetch, decode, execute, write back). Rörledningar höjer processorernas prestanda betydligt, men det är en dyr teknik eftersom storleken på kretsen ökar. En akilleshäl med tekniken är att koden innehåller hopp. Efter en hoppinstruktion, det vill säga en instruktion vars resultat medför ett val mellan olika instruktioner, kan tekniken slå fel. Om processorn har börjat att bearbeta "fel" instruktion måste rörledningen tömmas och den riktiga instruktionen matas in. Då går värdefull tid förlorad.
 
Parallellism ökar farten
Ett sätt att komma runt problemet är att gissa vart hoppet ska gå, så kallad branch prediction. För att ytterligare öka prestanda försöker moderna processorer utföra flera arbetsuppgifter parallellt. Processorer av den här typen kallas superskalära. Uppgiften att få så många instruktioner som möjligt att utföras parallellt utförs av hårdvara i processorn efter det att instruktionen avkodats. Intels flaggskepp, Pentium II, som i grunden är en ciscprocessor använder både långa rörledningar med 12 steg, avancerade algoritmer för att gissa om det blir ett hopp i koden och är dessutom superskalära.
 
Långa ord i nästa generation
En radikalt annorlunda metod för att öka prestanda är att göra långa instruktioner. En mycket lång instruktion är en instruktion som innehåller minst fyra andra operationer. Tekniken kallas vliw, very long instruction word. Vliwtekniken befriar processorn från att behöva analysera flödet av instruktioner och sen gissa sig till vilka instruktioner som kan utföras parallellt. Analysen av programkoden görs redan vid kompileringen. Myntets baksida är att tekniken drastiskt ökar kraven på kompilatorn. Kraven gäller för kompilatorns prestanda, men framför allt att den inte innehåller några fel. Ett fel i kompilatorn får ju mångfalt värre följder vid exekveringen av instruktionerna. Eftersom vliwprocessorena bli väldigt känsliga för fel i instruktionskoden stiger också kraven på utvecklingshjälpmedlen, framför allt för avlusningen - debuggningen. Företaget Multiflow Computer gjorde ett kortlivat försök att använda vliw- tekniken. Instruktionerna bestod av ord på 256 - 1 024 bitar, som exekverades under en klockcykel. Varje instruktion innehöll flera oberoende operationer, som utfördes parallellt.
 
Eftersom varje operation själv talade om vilka register som skulle användas var det en mycket snabb teknik där alla operationer utnyttjade rörledningsteknik. Tekniken med långa instruktioner har fått en kraftig puff framåt i och med att Intel, med Hewlett-Packard som partner, satsar på vliw. Här rör det sig om en vidareutvecklad vliwteknik, som döpts till epic, explicitly parallel instruction set. Intels kommande processor går under kodnamnet Merced och kommer i produktion år 2000. Raka motsatsen till vliw vore om kraven på koden kunde minskas. Enklast, i det avseendet, vore förstås en processor som inte behöver någon intern instruktionsuppsättning. En sådan processor finns faktiskt, och kallas för nisc - no instruction set computer. Mikrokoden i nisc ligger färdig i ett särskilt minne i processorn. Niscprocessorn har utvecklats i Sverige och marknadsförs av skrivartillverkaren Array Printers som ska använda den i skrivare och kopiatorer. Per Stymne Frilansjournalist
 
Ordlista
 
 
cisc
(complex instruction set computer) Processor med komplex instruktionsuppsättning. Exempel på ciscprocessorer är Intels Pentium och Motorolas 68000-serie.
 
epic
(explicitly parallell instruction set) Intel och Hewlett-Packards version av vliw-processorn, en processor som arbetar parallellt med flera instruktioner.
 
nisc
(no instruction set computer) Processor utan egen instruktionsuppsättning.
 
risc
(reduced instruction set computer) Processor med begränsad instruktionsuppsättning. Exempel på risc-processorer är Digital/Compaqs Alpha och HPs-PA-processorer.
 
vliw
(very long instruction word computer) Processor för mycket långa instruktioner. Exempel på en vliw-processor gjordes av Multiflow Computer. En modern variant är TM-1000 Trimedia från Philips. PS

Prenumerera på Elektroniktidningens nyhetsbrev eller på vårt magasin.


MER LÄSNING:
 
KOMMENTARER
Kommentarer via Disqus

Rainer Raitasuo

Rainer
Raitasuo

+46(0)734-171099 rainer@etn.se
(sälj och marknads­föring)
Per Henricsson

Per
Henricsson
+46(0)734-171303 per@etn.se
(redaktion)

Jan Tångring

Jan
Tångring
+46(0)734-171309 jan@etn.se
(redaktion)