a CPU gyorsítása, pipeline, cache

Slides:



Advertisements
Hasonló előadás
„Esélyteremtés és értékalakulás” Konferencia Megyeháza Kaposvár, 2009
Advertisements

Alaplap.
1 Számítógépek felépítése 9. előadás I/O rendszerek.
A számítógép felépítése
Erőállóképesség mérése Találjanak teszteket az irodalomban
CUDA.
A mikroprocesszor 1. rész.
Számítógépek felépítése 3. előadás CPU, utasítás ciklus, címzés
Koordináta transzformációk
Koordináta transzformációk
Ütemezési algoritmusok (FCFS, SJF, RR)
 Többszálúság  Gyártási költségek  A modellnevek megváltoztatása  Processzor magok  Athlon és Phenom összehasonlítása.
A számítógép felépítése
Belső memóriák tipusai
Mérés és adatgyűjtés laboratóriumi gyakorlat Karakterisztikák mérése 1 Makan Gergely, Mingesz Róbert, Nagy Tamás V
Egyensúly és stabilizációs politika
Mikroszámítógépek I 8085 processzor.
Mikroszámítógépek I 8085 processzor.
Utasítás végrehajtás lépései
Pázmány - híres perek Pázmány híres perek.
Rögvest kezdünk MÁMI_05.
PIC processzor és környezete
CISC - RISC processzor jellemzők
Számítógépek felépítése 4. előadás ALU megvalósítása, vezérlő egység
Többmagos processzorok
A PLC-s vezérlés előnyei és alkalmazásai (Mitsubishi)
Memória hierarchia Tárolókezelő egység
Sínrendszer.
Egy egyszerű gép vázlata
TÖMEGKÖZÉPPONT A kiterjedt test egy idealizált, elméletileg meghatározott pontja, amelyben a testszegmensek súlyerejének forgatónyomatéka nulla.
TÖMEGKÖZÉPPONT A kiterjedt test egy idealizált, elméletileg meghatározott pontja, amelyben a testszegmensek súlyerejének forgatónyomatéka nulla.
Operációs Rendszerek II.
Hardvereszközök Hardvereszközök I.rész. Hardvereszközök CPU Memóri a Input Háttértárolók Outpu t A számítógép felépítési elve Neumann elvek: 1.Soros utasításvégrehajtás.
RISC processzorok Processzorkategóriák RISC tervezési filozófia
szakmérnök hallgatók számára
Exponenciális egyenletek
9.1. ábra. A 135Xe abszorpciós hatáskeresztmetszetének energiafüggése.
Kaszkád erősítő Munkapont Au Rbe Rki nagyfrekvenciás viselkedés
Mikrokontroller (MCU, mikroC)
Visszatérve a 3 szennyező példához: Három szennyezőforrás esetén a gazdaságilag legkedvezőbb megoldás kiépítését szeretnénk hatósági eszközökkel elősegíteni.
7. Házi feladat megoldása
Budapesti Műszaki és Gazdaságtudományi Egyetem Elektronikus Eszközök Tanszéke MIKROELEKTRONIKA, VIEEA306 Integrált áramkörök: áttekintés,
Analitikus geometria gyorstalpaló
A pneumatika alapjai A pneumatikában alkalmazott építőelemek és működésük vezérlő elemek (szelepek)
Műholdas navigációs rendszerek Kovács Béla Térképtudományi és Geoinformatikai Tanszék Eötvös Loránd Tudományegyetem, Informatika Kar Térképtudományi és.
Egy második generációs gép (az IBM 7094) felépítése
Egy első generációs gép (az IAS) felépítése
CUDA C/C++ programozás
Hányszor csodálkozunk azon, amikor halljuk, hogy mások már 100%-ot teljesítenek! Thema: 100%-os teljesítmény És hányszor halljuk, hogy több, mint 100%-ot.
Mikroprocesszor.
Ismerkedjünk tovább a számítógéppel
Pipeline példák. Pipe 1. feladat Adott a következő utasítás sorozat i1: R0 MEM [R1+8] i2: R2 R0 * 3 i3: R3 MEM [R1+12] i4: R4 R3 * 5 i5: R0 R2 + R4 A.
Számítógépek felépítése 3. előadás CPU, utasítás ciklus, címzés
BIOLÓGUS INFORMATIKA 2008 – 2009 (1. évfolyam/1.félév) 3. Előadás.
Írja fel a tizes számrendszerbeli
Mikroprocesszorok Működés.
IT ALAPFOGALMAK HARDVER.
Mikroprocesszorok (Microprocessors, CPU-s)
ifin811/ea1 C Programozás: Hardver alapok áttekintése
CISC-RISC processzor jellemzők Előadó: Thész Péter Programtervező informatikus hallgató Budapest,
Számítógépek felépítése 4. előadás ALU megvalósítása, vezérlő egység
1 Számítógépek felépítése 5. előadás a CPU gyorsítása, pipeline, cache Dr. Istenes Zoltán ELTE-TTK.
A CPU (központi feldolgozó egység vagy processzor)
1 A számítógépek felépítése jellemzői, működése. 2 A számítógép feladata Az adatok Bevitele Tárolása Feldolgozása Kivitele (eredmény megjelenítése)
1 A számítógépek tárolói. 2 Memória Memóriaszó  A tárak olyan egységei, melyek egyetlen művelettel kezelhetők.  A legrövidebb memóriaszó a byte (bájt)
A számítógép működésének alapjai
Fejlett pipeline megoldások IMSC 2019
Pipeline példák (IMSC, 2019).
Számítógépek felépítése 9. előadás I/O rendszerek
Előadás másolata:

a CPU gyorsítása, pipeline, cache

Processzor gyorsítási lehetőségek Pipeline feldolgozás Cache gyorsító tár CISC vs. RISC... Bitszelet processzorok Co-processzorok Pédák processzorokra...

Órajelfrekvencia, idő, távolság 1 „normál” kapu kapcsolási idő ≈ 10ns 1200 MHz-es órajel => 1/(1200*10e6) s (két órajel közötti idő) ≈ 0.8ns „fénysebesség” ≈ 300.000 km/s (300000*10e3 m/s) * (1/(1200*10e6s)) => ≈ 0.25m (utat tesz meg a fény két órajel között!)

Processzor gyorsítási lehetőségek művelet végzés gyorsítása ? utasítás végrehajtás gyorsítása ? párhuzamosítás !

Műveletvégzés gyorsítása Összeadás átvitel-előrelátás (addition carry-lookahead)

Teljes összeadó „késleltetése” (ripple carry) y3 x3 y2 x2 y1 x1 y0 x0 c0 c3 c2 c1 1+ 1+ 1+ 1+ c4 s3 s2 s1 s0 késleltetés (3dt) 1 dt = 1 kapu kapcsolási idő (kb. 10ns)

Gyorsított összeadás Ci+1= (Xi AND Yi) OR (Xi AND Ci) OR (Yi AND Ci) Ci+1=(Xi * Yi) + (Xi * Ci) + (Yi * Ci) Ci+1=(Xi * Yi) + ((Xi + Yi ) * Ci) Gi = generate = Xi *Yi Pi = propagate =Xi + Yi Ci+1=Gi+Pi*Ci 16 bites összeadónál... 1 kapu késleltetése = dt (kb. 10ns) 15x2dt+3dt = 33dt = kb. 330ns -> túl sok 10ns=100MHz 300.000km/s 0.3*10e9m/s 1ns=10e-9s -> .3m/ns

4bites átvitel-előrelátás („carry lookahead”) Ci+1=Gi+Pi*Ci C1=G0+P0*C0 C2=G1+P1*C1 =G1+P1*G0+P1*P0*C0 C3=G2+P2*C2 =G2+P2*G1+P2*P1*G0+P2*P1*P0*C0 C4=G3+P3*C3 =G3+P3*G2+P3*P2*G1+P3*P2*P1*G0+P3*P2*P1*P0*C0 C1 behelyettesítve [Modern comp. pp 67] shiftelő áramkör C4 független C1..C3-tól, csak X1..4 , Y1..4 és C0-tól függ

Szorzás ROM-ból kiolvasással X Y Z 0*0 00 00 0000 0*1 00 01 0000 0*2 00 10 0000 0*3 00 11 0000 1*1 01 01 0001 1*2 01 10 0010 1*3 01 11 0011 2*0 10 00 0000 2*1 10 01 0010 2*2 10 10 0100 2*3 10 11 0110 3*0 11 00 0000 3*1 11 01 0011 3*2 11 10 0110 3*3 11 11 1001 X MEM 16x 4bit Y Z 2x 2 bites szorzó : 2e4x 4bit = 16x 4bit (8byte) 2x 8 bites szorzó : 2e16x 16bit = 64x 16bit = 128Kbyte 2x 16 bites szorzó : 2e32x 32bit =32x 4Mbit =16Mbyte 2x 32 bites szorzó : 2e64x 64bit =nagyon sok (tényleg) gyors, egyszerű, olcsó tetszőleges függvényre csak kisméretben alkalmazható

(csővezeték, futószalag feldolgozás) Pipeline feldolgozás (csővezeték, futószalag feldolgozás)

„Pipelining” részfázisokra bontás független részfázisok, önálló erőforrásokkal az egyik fázis eredménye a következő induló adata

Utasítások egymás utáni végrehajtása 1. utasítás feldolgozása előkészítés dekodolás végrehajtás tárolás 1. utasítás feldolgozása 2. utasítás feldolgozása 3. utasítás feldolgozása idő

Utasítás végrehajtás fokozatokra bontása előkészítés dekódolás végrehajtás tárolás 1. utasítás feldolgozása 2. utasítás feldolgozása tárolás végrehajtás dekódolás előkészítés 1 2 1 2 1 2 idő 1 2

Csővezetékszerű utasítás végrehajtás (pipelined) feldolgozása 2. utasítás feldolgozása 1. utasítás feldolgozása tárolás végrehajtás dekódolás előkészítés 1 utasítás végrehajtási ideje nem változik utasítások végrehajtásának a frekvenciája n (ahol n a fokozatok száma) szeresére nő 1 2 3 4 5 1 2 3 4 5 ... 1 2 3 4 5 6 ... idő ... 1 2 3 4 5 6 7

Csővezetékszerű utasítás végrehajtás ? nem egyenlő hosszú fokozatok nem egyenlő hosszú fokozatok tárolás végrehajtás dekódolás előkészítés 1 utasítás végrehajtási ideje nem változik utasítások végrehajtásának a frekvenciája n (ahol n a fokozatok száma) szeresére nő 1 2 3 4 1 2 3 4 1 2 3 4 idő 1 2 3 4 5 6 7 8 9

Problémák a pipeline-vel tárolóhivatkozás : lassú memória miatt várni kell az operandusokra egyszerre kéne ugyanabból a tárból adatot és utasítást elérni vezérlés átadó utasítások... megszakítások... [Cserny pp 135-] folyamatos pipeline feldolgozás megszakítása, felfüggesztése

Memória utasítások a pipeline-ben „Várakoztató utasítások” beiktatása - „lyukak” a pipeline-ben késleltetett memória utasítás - utasítások átrendezése, üres utasítás beiktatása load R1, (A) load R2, (B) add R1,R2,R3

Elágazások kezelése a pipeline-ben az ugrási cím csak az utasítás feldolgozása után lesz ismert... ha „rossz” ágat utasításait kezdi el feldolgozni akkor a pipeline-t (és az utasítások hatásait) törölni kell... delayed branch (NOP utasítással feltöltés)

Adatok felhasználása a pipeline-ben ütközések : írás utáni írás : 2. írás után ír az 1. írás utáni olvasás : 2. előbb olvas mint az 1. ír olvasás utáni írás : 2. előbb ír mint az 1. olvas olvasás utáni olvasás :-) adat függőség add (M1),R2,R3 sub R3,R0,R3 add R1,R2,R3 sub R3,R0,R4 add (M1),R2,R3 sub R2,R0,R2 instruction scheduling... internal forewarding... scoreboarding...

Pipeline összefoglalás egyszerű elv bonyolult, „trükkös” megvalósítás sokat segíthet a fordítóprogram

Cache „gyorsító” tár

Cache memória Probléma : a központi memória általában sokkal lassabb (5x-10x-...) mint a processzor... Kicsi, gyors (drága!), puffer memória a központi memória és a processzor közé... Központi memória CDC STAR 100 : processzor 40ns , memória 1280 ns (32x) Első megvalósítás IBM 360/85 Motorola MC68020, Intel 80386 processzor on-board cache Cache memória CPU

„Tipikus” cache 64 Mbyte memóriához 64 Kbyte cache 20x gyorsabb 1/1000 méret 98% cache találat

Cache működés (olvasás) CPU által generált memóriacím küldése a cache-nek : 1. ha az adat a cache-ben van (cache hit, cache találat) : adat elküldése a CPU-nak 2. ha az adat nincs a cache-ben (cache miss, cache „nemtalálat”, „találat hiba”) : a generált memóriacím küldése közp. memóriának adat kiolvasása a központi memóriából, adat elküldése a CPU-nak, és a cache-be

Cache a memória és a cache között blokkos adatátvitel (4-64 szó) => programok lokalitása teli cache esetén egy cache blokkot fel kell szabadítani (helyettesítési eljárások)

Cache hatása az átlagos elérési időre és a hatékonyságra (példa) Adatok : cache elérési idő tc = 160ns memória elérési idő tm = 960ns átlagos cache találati arány h = 90% Kérdés : mennyi az átlagos elérési idő ? (ta) mekkora a hatékonyság növekedés ? (g)

Cache hatása az átlagos elérési időre és a hatékonyságra (példa) ta = h*tc + (1-h)*(tc+tm) = 0.9*160 + 0.1*(960+160) = 256 ns (átlagos elérési idő) r = tm/tc = 960/160 = 6 g = 1/(1+r*(1-h)) =1/(1+6*0.1) = 0.625 = 62.5% (hatékonyság növekedés)

Cache hatása (SuperSPARC példa) CPU 0.75 CPI (cycles per instruction) 3% cache miss memória késleltetés 10 ciklus 1.33 memória referencia / utasítás cache miss „büntetés” 0.4 CPI 0,75*1,33*3%*10 35% teljesítmény csökkenés 1-1/(1+3%*(10+1))

Memória „leképzése” a cache-ra Teljesen asszociatív cache Közvetlen leképzésű cache Csoport asszociatív cache

Teljesen asszociatív cache (fully associative cache) központi memória blokk „i” (0<=i<=M-1) leképezhető bármelyik „j” (0<=j<=N-1) cache blokkra memória M=2m N=2n tag érték N darab m bites összehasonlítás (hasonlító) !!! idő... j „i” x i ... x N-1 m M-1 k blokkméret : k

Közvetlen leképzésű cache (direct mapping cache) egy-egy memória blokk csak meghatározott helyre kerülhet (I-way set associative cache) memória i MOD N i DIV N x i x N-1 M-1 m-n k k

Közvetlen leképzésű cache (direct mapping cache) Pld. 10-es számrendszer, M=1000, N=10 memória i=785 i MOD N i DIV N 785. x i 5. 78 x N-1 M-1 k m-n k

Közvetlen leképzésű cache (direct mapping cache) Pld. 2-es számrendszer, M=1024=210, N=8=23 memória i=1001101011 i MOD N i DIV N 1001101011 x i 011 1001101 x N-1 M-1 k m-n k

Közvetlen leképzésű cache címformátuma memória blokk cím M=2m m bit m-n bit n-bit N=2n „tag” cache blokk cím

Közvetlen leképzésű cache a memória cím „alsó” n bitje a memória cím „felső” m-n bitje memória „tag” közvetlenül megvan a cache cím csak 1 összehasonlítás kell N nagyságú ugrásoknál nem teli cache-nél is kiüti... i MOD N. i DIV N i N-1 M-1 m-n k k

Csoport asszociatív cache (set associative cache) S csoport blokkonként S=2s a memória cím „alsó” n-s bitje a memória cím „felső” m-n+s bitje memória blokk csoport „tag” cache csoport cím j ... N/S-1 M-1 N-1 m-n+s k k

Cache-ben lévő adat megváltoztatása cache - memória koherencia fenntartása ! azonnali átírás (write-through) : blokk tartalom módosítás esetén a blokk visszaírása a memóriába visszamásolási eljárás (write back) : a frissen betöltött blokk „dirty” („piszkos”) bitje = 0 blokk tartalom módosítás esetén dirty bit = 1 blokk cache-ból törlésekor : ha dirty bit = 1 akkor vissza kell írni a memóriába (különben nem)

CISC vs. RISC processzorok CISC = Complet Instruction Set Computer (teljes utasítás készletű számítógép) RISC = Reduced Instruction Set Computer (csökkentett utasítás készletű számítógép)

CISC vs. RISC processzorok „könnyebb programozás” összetett utasítások, sokféle címzési mód utasítás végrehajtás több órajel alatt mikroprogramozott ... RISC egyszerűbb, gyorsabb optimalizált fordítók kevés utasítás és címzési mód rögzített utasítás forma utasítás végrehajtás 1 órajel alatt kevés memória hozzáférés sok regiszter huzalozott vezérlő pipeline feldolgozás [Modern comp. pp 51-] RISC füzet...

CISC vs. RISC CISC (VAX) 14 féle címzési mód 250 utasítás RISC 32 (50) regiszter... 30-40 utasítás

Bit-szelet processzorok Bit-szelet (bit slice) processzor példa : AM 2901 4 bites ALU + regisztertömb 3 aritmetikai, 5 logikai művelet 9 bites vezérlés állapot jelek [Modern comp. arc. pp 89-94]

Segédprocesszorok co-processzorok gyorsabb lebegőpontos, mátrix, grafikai műveletek új utasítások, adattípusok, regiszterek együttműködés a processzorral

Végrehajtó egységek (Execution Units)

Pentium 4 Processzor adat-útvonalak (Data Stream of Pentium 4 Processor)

Intel Pentium XEON

MIPS R16000

Sorrendet nem megtartó végrehajtó egység csővezeték (Out-of-order execution engine detailed pipeline)