William Sandqvist KIA’s fabrik i Slovenien En bil i minuten lämnar bandet – tar det en minut att bygga en bil? Nej för KIA's fabrik utanför Zilina tar det 18 mantimmar att bygga en bil (detta är ändå världsrekord! Toyota behöver c:a 30 mantimmar). Lösningen är en Pipeline. 18 timmar är 1080 minuter, så bygget kan ske parallellt vid 1080 enminutersstationer. Fabriken har 3000 anställda som arbetar i treskift, dvs 1000 arbetare per skift. Många av station- erna är således helt robotiserade.
William Sandqvist Fem steg Processorer brukar behöva utföra följande fem steg: 1.Fetch the instruction (from main memory) 2.Decode the instruction. 3.Fetch Data (from main memory). 4.Execute the instruction. 5.Store results.
William Sandqvist En 5-stegs Pipeline 5-stegs pipeline. Varje klockcykel blir en instruktion klar, trots att det åtgår fem klockcykler för att bearbeta instruktionerna.
William Sandqvist GOTO-instruktionen! Instruktionen GOTO 10 gör det påbörjade arbetet med instruktionerna 5, 6 och 7 ”bortkastat”. Nu dröjer det 5 Klockcykler tills nästa instruktion blir klar!
William Sandqvist Olika lösningar på hopp-problemet Branch Prediction (speculative branching) – Hoppgissning, gissar man rätt vinner man tid, gissar man fel måste pipelinen ”startas om”. Multiway Branching – Exekvera bägge fallen, behåll data från det relevanta fallet. För att kunna exekvera bägge fallen krävs att man har ”dubblerad” hårdvara, dvs. det som kallas för en superskalär processor.
William Sandqvist Databeroende Antag att en instruktion i pipeline är beroende av ett resultat från en annan instruktion som inte hunnit utföras än. Processorn måste då ”stoppa” exekveringen av den aktuella instruktionen till dess resultatet från den andra instruktionen finns tillgängligt. ( = sämre prestanda!). Detta ”stopp” kan alternativt ske genom att kompilatorn ”lägger till” ett antal NOP -instruktioner mellan de beroende instruktionerna. ( = sämre prestanda!) Har man ”tur” så kan det finnas andra helt oberoende instruk- tioner, som ändå ska utföras någon gång, och som kompilatorn kan flytta och ersätta NOP -instruktionerna med. ( = oförändrade prestanda!)
William Sandqvist PC började med Intel 8086 (1978) Internt finns bara 8 st 16- bitars arbetsregister. 16 bits-processor. Minneskretsar med upp till 1MB minne kunde anslutas externt. (20 bitsadress) Ingen trodde då att större minnen än så någonsin skulle kunna behövas. Von Neumann CISC- arkitektur utan pipeline!
William Sandqvist Bakåtkompatibilitet? Bakåtkompatibilitet innebär att gamla program för äldre Intelprocessorer ska kunna fortsätta att exekveras på nyare processortyper utan att behöva kompileras om. Databeroenden bör därför lösas av hårdvaran eftersom kompilatorn inte finns att hjälpa till! Nya program utnyttjar de nya processortypernas alla finesser – de kan därför knappast ens fås att starta på den första PC:n!
William Sandqvist Processorutvecklingen Intel processors evolution Generation Typ ÅrData/Adress Buss CacheBuss klocka Processor klocka / MHz / MHz / MHz DX198532/ MHz SX198816/328 kB16-33 MHz DX198932/328 kB25-50 MHz DX /328 kB25-40 MHz50-80 MHz DX /328+8 kB25-40 MHz MHz 5 Pentium199364/328+8 kB60-66 MHz MHz 6 PentiumPro199564/328+8 kB66 MHz MHz 6 PentiumII199864/ kB66/100 MHz MHz 6 PentiumIII199964/ kB100 MHz0,5-1,2 GHz 7 AMD Athlon199964/ kB266 MHz0,5-2,2 GHz 7 Pentium / kB400 MHz1,4-3,6 GHz 8 AMD Ath / kB400 MHz2-2,4 GHz
William Sandqvist Pentium arkitektur (1993) Frontend – ger bakåtkompati- bilitet (detta var Intels viktig- aste affärsbeslut någonsin …) BU Branch Unit gör hoppgiss- ning. Execution core Superskalär beräkningsenhet U-pipe och V-pipe 5-stegs pipelines för heltalsaritmetik (V har ett enklare utförande). FPU flyttalsenhet med 6-stegs pipeline. Totalt tre enheter. L1 Cache 8kB Data 8kB Instruktioner Copyright © Ars Technica, LLC BU gissar rätt för 75% av hoppen!
William Sandqvist Hopp statistik 20% av vanlig programkod är hoppinstruktioner – var femte instruktion är således ett hopp. 80% av hoppinstruktionerna är vilkorliga hopp % av hoppen utförs.
William Sandqvist Hoppgissning Pentiums hoppgissning: Det krävs ”två i rad” utförda hopp eller uteblivna hopp för att hoppgissningen ska ändras. - Gissar man hopp laddas pipelinen med instruktioner från hoppdestinationen. - Gissar man uteblivet hopp laddas pipelinen med efter- följande instruktioner. Gissar man rätt sparar man tid – gissar man fel måste pipelinen ”startas om”.
William Sandqvist Pentium Pro (1995) ”Out-of-order execution” Reservation Station Reorder Buffer Register Register renaming (40 register i stället för ursprungliga 8) Nu 12 stegs pipeline Mer superskalär – tre enheter för minnesoperationer. Totalt 6 enheter! Copyright © Ars Technica, LLC Hoppgissningen träffar nu i 90% av fallen! 40% av chippytan används för bakåtkompatibiliteten!
William Sandqvist Två nivåers hoppgissning Pentium Pro har lång pipeline och måste därför kunna ”gissa” hoppen ändå bättre! Hoppmönstret av de senaste fyra hoppen, aktiverar en av sexton ”två i rad-kretsar” som gör gissningen. Ett sådant anordning klarar att ”lära” sig olika hoppmönster. Resultatet blir bättre än 90% korrekta gissningar.
William Sandqvist Principschema Två nivåers hopp-gissning bygger på ett skiftregister, en avkodare, och 16 st ”två i rad” sekvensnät. Sekvensnät förklaras senare i kursen.
William Sandqvist Pentium 4 (2000) Hyper Pipeline 20-steg Därefter infördes Hyper Pipeline 31-steg! (2004)
William Sandqvist Dual Core (2006) Flertrådade operativsystem vinner på att ha fler processor-kärnor. Parallelliteten åstadkoms genom trådbyten. Vid varje trådbyte måste cache och pipeline ”börja om från början”. Med två kärnor kan två trådar köra parallellt hela tiden!
William Sandqvist Vem behöver 128 bitars register? VLIW Very Long Instruction Word. Kompilatorn parar ihop lämpliga instruktioner och packar ihop dem för att exekveras samtidigt. Matteläxa: a) addera b) addera = Kronor? Den här tekniken används i Intel Itanium ( EPIC, Explicit Parallel Instruction Code ). Varför inte göra hela matteläxan, uppgifterna a och b, på en och samma gång? Svar: a) 86 och b) 66
William Sandqvist Sammanfattning, exempel Skalär: 1 instruktion / 3 klockcykler Superskalär: 3 instruktioner / 3 klockcykler Pipeline: 3 instruktioner / 3 klockcykler Superskalär+Pipeline: 9 instruktioner / 3 klockcykler 11 3 Exemplets tre klockcykler per instruktion är helt godtyckligt valt.
William Sandqvist Sammanfattning pipeline Problem vid pipeline: Hopp kan innebära att pipelinen måste startas om. Lösningen är ”hoppgissning”. Superskalär hårdvara kan göra ”flervägs exekvering”. Databeroenden stoppar upp pipelinen. Vid kompilering är lösningen att ”skjuta in” nop eller nyttoinstruktioner. Hårdvaran kan stoppa exekvering av en instruktion och vänta in resultat. Mer avancerad hårdvara kan ändra instruktionsordningen, och därefter ändra tillbaka resultaten.