Ladda ner presentationen
Presentation laddar. Vänta.
Publicerades avBritta Sundström
1
William Sandqvist william@kth.se 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.
2
William Sandqvist william@kth.se 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.
3
William Sandqvist william@kth.se 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.
4
William Sandqvist william@kth.se 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!
5
William Sandqvist william@kth.se 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.
6
William Sandqvist william@kth.se 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!)
7
William Sandqvist william@kth.se 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!
8
William Sandqvist william@kth.se 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!
9
William Sandqvist william@kth.se Processorutvecklingen Intel processors evolution Generation Typ ÅrData/Adress Buss CacheBuss klocka Processor klocka 1 808819798/20-5-8 MHz 1 8086197816/20-5-8 MHz 2 80286198216/24-6-20 MHz 3 80386DX198532/32-16-33 MHz 3 80386SX198816/328 kB16-33 MHz 4 80486DX198932/328 kB25-50 MHz 4 80486DX2199232/328 kB25-40 MHz50-80 MHz 4 80486DX4199432/328+8 kB25-40 MHz75-120 MHz 5 Pentium199364/328+8 kB60-66 MHz60-200 MHz 6 PentiumPro199564/328+8 kB66 MHz150-200 MHz 6 PentiumII199864/3216+16 kB66/100 MHz300-450 MHz 6 PentiumIII199964/3216+16 kB100 MHz0,5-1,2 GHz 7 AMD Athlon199964/3264+64 kB266 MHz0,5-2,2 GHz 7 Pentium4200064/3212+8 kB400 MHz1,4-3,6 GHz 8 AMD Ath 64200364/6464+64 kB400 MHz2-2,4 GHz
10
William Sandqvist william@kth.se 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 © 1998-2008 Ars Technica, LLC BU gissar rätt för 75% av hoppen!
11
William Sandqvist william@kth.se Hopp statistik 20% av vanlig programkod är hoppinstruktioner – var femte instruktion är således ett hopp. 80% av hoppinstruktionerna är vilkorliga hopp. 75-80% av hoppen utförs.
12
William Sandqvist william@kth.se 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”.
13
William Sandqvist william@kth.se 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 © 1998-2008 Ars Technica, LLC Hoppgissningen träffar nu i 90% av fallen! 40% av chippytan används för bakåtkompatibiliteten!
14
William Sandqvist william@kth.se 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.
15
William Sandqvist william@kth.se 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.
16
William Sandqvist william@kth.se Pentium 4 (2000) Hyper Pipeline 20-steg Därefter infördes Hyper Pipeline 31-steg! (2004)
17
William Sandqvist william@kth.se 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!
18
William Sandqvist william@kth.se 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 12+74 b) addera 27+39 2 128 = 34028236692093846346337460743177 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
19
William Sandqvist william@kth.se 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.
20
William Sandqvist william@kth.se 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.
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.