Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60 Superscalar vs VLIW Cornelia Kloth IDA2 Inlämningsdatum: 2018-12-05
Abstract Rapporten handlar om två tekniker inom multiple issue processorer som används för att öka parallellismen. Dessa kallas för superscalar och Very Long Instruction Word(VLIW). Båda teknikerna vill uppnå samma sak, men de gör det på olika sätt. En processor som använder superscalar implementeras dynamiskt och hårdvaran är mer komplex då det är den som gör det mesta jobbet. En VLIW processor implementeras istället statiskt och där är det kompilatorn som gör jobbet, därför blir hårdvaran enklare men kompilatorn komplex.
Innehåll 1. Inledning 1.1 Bakgrund 1.2 Syfte 2. Parallellism i multiple-issue processorer 2.1 VLIW(Very Long Instruction Word) 2.2 Superscalar 3. Fördelar och nackdelar 3.1 Superscalar 3.2 VLIW 4. Slutsats 5. Referenser
1 Inledning 1.1 Bakgrund När man använder sig av pipelining så tillåter man att köra flera instruktioner vid samma tidpunkt men i olika steg. För att effektivisera detta använder man också parallelism för att öka antalet instruktioner som initieras samtidigt och exekveras oberoende. Detta kan man mäta, det kallas för instruction-level parallelism (ILP) och det finns olika sätt för att få den att öka. En av teknikerna som används för att öka parallelismen heter multiple issue där flera instruktioner initieras i en och samma klockcykel. Det gör att CPI (Cycles Per Instruction) blir mindre än 1, vilket gör att processorn kan exekvera fler instruktioner snabbare. 1.2 Syfte En multiple-issue processor kan i sin tur implementeras på olika sätt, där de två vanligaste är static multiple issue och dynamic multiple issue. De kallas också för superscalar processors (dynamic) och VLIW processors (static). Syftet med denna rapport är att ge information om de två typerna och att förklara skillnader samt för- och nackdelar. 2 Parallellism i multiple-issue processorer De största skillnaderna mellan static- och dynamic multiple issue är att schemaläggningen sker på olika ställen. Om processorn är av typen superscalar så kommer instruktionerna schemaläggas statiskt av kompilatorn innan exekvering, om den istället är av typen VLIW så kommer de schemaläggas dynamiskt av processorn under exekveringen. De båda typerna är alltså tekniker som exekverar flera instruktioner samtidigt och deras arkitekturer liknar RISC processorerna, där man har flera enheter som använder pipeline för att exekvera instruktioner parallellt. Men de använder parallellismen på olika sätt. 2.1 VLIW (Very Long Instruction Word) I en static multiple-issue processor är det kompilatorn som hanterar instruktioner, hazards, alla val angående ordning av exekvering och hur man ska lösa problem sker där. Den här metoden grupperar instruktionerna inom en klockcykel och de förvaras i så kallade issue packets. Dessa kan ses som en enda stor instruktion som innehåller flera oberoende instruktioner och måste då också tillåta flera olika operationer. Den här typen av arkitektur kallas alltså också för Very Long Instruction Word (VLIW). I och med att det är kompilatorn som hanterar ordningen av exekveringen så behöver VLIW processorer inte den hårdvara som superscalars ofta har. När instruktionerna istället schemaläggs
under kompileringstid, som de görs i VLIW, så försöker kompilatorn att göra så att varje fält i den långa instruktionen innehåller en operation. Men på grund av begränsningar som kontroll-, data- och resurskonflikter så måste den fylla i vissa fält med no-ops för inga operationer har kunnat schemaläggas där. Det gör att antalet operationer per cykel kommer att minska vilket i sin tur kommer att öka kodens storlek. Processorer som använder sig av static multiple-issue hanterar hazards på olika sätt. De kan antingen låta hårdvaran leta efter data hazards under tiden mellan separata issue packets och låta kompilatorn sköta dependences inne i paketen. Eller så kan de låta kompilatorn hantera allt, koden, borttagning av hazards osv. Exempel på VLIW processorer är Intels IA-64 arkitektur som används till servers och workstations, eller TriMedia media processoren från NXP (tidigare Philips). 2.2 Superscalar En dynamic multiple-issue processor har också fått namnet superscalar, och i denna teknik är hårdvaran mer komplex och parallella instruktioner kan väljas under run-time. Många superscalar processorer har utvecklade hårdvaror och använder något som kallas dynamic scheduling. Den metoden försöker minimera de förseningar som kan ske, då en del instruktioner är beroende av andra innan de kan exekveras. Exempelvis om en instruktion ska skrivas till en minnesadress och sedan ska en annan instruktion läsa från den. Den andra instruktionen måste då vänta på att exekveras tills den första är klar så att den inte får fel data. Men genom att använda dynamic scheduling så kan processorn då välja de instruktioner som exekveras och internt flytta runt dessa. Pipelinen delas in i tre större delar i de processorer som använder dynamic schedueling. Först finns en enhet som hämtar och avkodar instruktionerna samt skickar de vidare till rätt funktionell enhet (ex. ALU, minne, I/O). Den andra delen är just de funktionella enheterna, och där exekveras instruktionen så fort deras reservation stations (fungerar som en buffert) innehåller alla de operander och dess operationer som behövs. Resultatet skickas sedan vidare till andra funktionella enheter eller till den tredje delen som kallas commit unit. Detta är en enhet som kommer att hålla kvar resultatet i sin buffert som kallas reorder buffer tills det är okej att lägga det någonstans där programmeraren kan se det (som i register eller minne). Dynamic scheduling är viktig för att kunna bevara parallellismen, och den ger också kompilatorn en enklare design och ser till att koden är samma storlek (eftersom man schemalägger). Den kan ha två olika designer, in-order issue och out-of-order issue. Då instruktionerna exekveras i den ordning de kommer till processorn, kallas det för in-order issue. Out-of-order issue är istället när
instruktionerna kan flyttas under run-time för att undvika stalls och hazards samt effektivisera exekveringen genom att se vad det kommer för instruktioner i förväg. Superscalar processorer fortsätter att öka i prestanda ju mer komplex hårdvaran blir och ju längre fram den kan se i instruktionerna, desto mer effektiv kan den bli. Exempel på superscalar processorer är Pentium processorer med både in- och out-of-order issue, samt PowerPC604 (in-order) eller den liknande PowerPC620 (out-of-order). 3 Fördelar och nackdelar 3.1 Superscalar I en superscalar processor så är det hårdvaran som löser allt. Det är hårdvaran som upptäcker parallellism och försöker initiera så många som möjligt av de instruktionerna. Koden är binärt kompatibel, vilket innebär att om arkitekturen skulle förbättras eller om något nytt skulle läggas till så kan även de gamla programmen fungera med det nya, då hårdvaran nu kan exekvera det mer effektivt. En annan fördel med superscalar är att kompilatorn blir mindre komplex än den i en VLIW processor, nackdelen blir istället att komplexiteten av hårdvaran ökar. Att kunna använda out-of-order issue är en av de större fördelarna med en superscalar processor. Med detta kan den ändra ordningen på instruktionerna samtidigt som programmet körs. Detta innebär att med superscalar kan man undvika stalls och hazards när man kan se i förväg vad för instruktioner som är påväg. Det som annars kanske skulle skapa problem försvinner istället då den stoppar det innan det hänt. En processor kommer att ha flera instruktioner (ett set ) den kan välja att exekvera vid olika tider, dessa kallas för instruktions fönster och ska helst vara så stort som möjligt för att instruktionerna ska väljas på det mest effektiva sättet. En superscalar processor har ett begränsat instruktions fönster då den använder hårdvara till detta (som den gör till i princip allt), istället för att låta kompilatorn hantera det. Därför kan det här fönstret inte bli hur stort som helst, eftersom ett större fönster kräver större utrymme på chippet. Men denna begränsning stoppas innan utrymmet tar slut då ett större fönster också tar längre tid och man vill inte riskera att klockfrekvensen minskar. För att kunna upptäcka tidigare nämnda parallellism under run-time så behövs mycket hårdvara. En nackdel med en superscalar processor är att om man skulle behöva utveckla eller förbättra processorn så krävs det att man ändrar på själva hårdvaran, alltså lägga till eller ta bort saker från chippet. Detta kostar mycket pengar och kan bli omständigt.
3.2 VLIW En av de största fördelarna med VLIW är att eftersom det inte är hårdvaran som används för att upptäcka de ställen man kan exekvera flera operationer samtidigt på, så blir den därmed blir mindre komplex. Det ansvaret har man istället gett till kompilatorn, som alltså bestämmer vad som kan exekveras parallellt. Det gör också att effektförbrukningen kan reduceras vilket gör att VLIW passar bättre för bärbara enheter. En VLIW processor har inget begränsat tidigare nämnt instruktions fönster. Kompilatorn sköter detta och kan se mycket större fönster än en superscalar processor, då den använder global analys av hela programmet för att hitta parallellism. Alltså är det en stor fördel för VLIW då det ger bättre resultat att använda kompilatorn som man gör här, istället för att använda hårdvaran som i superscalar. En av fördelarna med VLIW var att man kan öka antalet funktionella enheter utan att man behöver göra hårdvaran mer komplex. Efter chippet är tillverkat så kan man förbättra processorn genom kompilatorn, det kan man inte göra i superscalar. Men med detta kommer också nackdelen att om man lägger till flera funktionella enheter så behöver man många register för att hålla dem aktiva då man ska lagra resultat och dess operander. En annan nackdel med VLIW är att programmen blir stora med många instruktioner. Detta på grund av att ibland kan man inte hitta tillräckligt med instruktioner som kan exekveras parallellt, och man måste då fylla platserna med no ops. När det sker så kommer både minne och bandbredd förloras och därmed bli bortkastat. Skulle man utveckla en ny VLIW processor som ex. hade fler funktionella enheter så skulle instruktionerna bli annorlunda än de tidigare. Det kommer leda till att koden som användes innan inte kan exekveras på den nya processorn. Detta kallas att binärer inte är kompatibla, alltså att koden inte kan samordnas med den nya utvecklade delen. 4 Slutsats Som slutsats kan sägas att efter forskning i ämnet så är det stor skillnad på VLIW och superscalar processorer, trots att de båda vill uppnå samma sak. I VLIW processorer finns en mycket mer komplex kompilator, men enklare hårdvara och i superscalar processorer är hårdvaran mer komplex och kompilatorn enklare. Enkelt sagt är en VLIW processor en lättare och billigare version av en superscalar processor. Den största fördelen med VLIW är att den har möjligheten att kunna köra en global analys av hela programmet då den inte har ett begränsat instruktions fönster (som en superscalar processor
har). Den kan därmed snabbare detektera parallellism, vilket är något som är svårt att hantera i superscalar. Men en superscalar har en av de största fördelarna i det att den kan optimera exekveringen genom att använda out-of-order issue under tiden som programmet körs, vilket man inte kan göra i VLIW.
5 Referenser 1) Lenell, J. and Bagherzadeh, N. (1994) A performance comparison of several superscalar processor models with a VLIW processor, Microprocessors and Microsystems, 18(3), pp. 131 139. doi: 10.1016/0141-9331(94)90110-4. 2) Patterson, D. and Hennessy, J. (2014) Parallelism via Instructions, Computer Organization and Design: The Hardware/Software Interface, Fifth Edition, pp. 332-343. doi: 10.1016/B978-0-12-407726-3.00001-1 3) Larsson, E. (2018) Datorarkitekturer med operativsystem, Superscalar arkitekturer och Very Long Instruction Word Architectures, Hämtad 2018-11-18 från Lunds Tekniska Högskola: https://www.eit.lth.se/fileadmin/eit/courses/eitf60/f%d6/f%d63.pdf 4) Philips Semiconductors (2011) An introduction to Very-Long Instruction Word(VLIW)Computer Architecture, vliw-wp.pdf, pp. 1-11(Hämtad 2018-11-20) 5) Harman, N. and Gimblett, A.() High Performance Microprocessors,VLIW Machines, chapter 10 (Hämtad 2018-11-23) 6) Eggers, S. (2006) Multiple Instruction Issue, multipleissue.pdf, pp. 1-20 (Hämtad 2018-11-23)