Szmtgpek felptse 5 elads a CPU gyorstsa pipeline

  • Slides: 39
Download presentation
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 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 1

5. előadás tartalma • • Processzor gyorsítási lehetőségek Pipeline feldolgozás Cache gyorsító tár CISC

5. előadás tartalma • • 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. . . 2

Órajelfrekvencia, idő, távolság • 1 „normál” kapu kapcsolási idő = 10 ns • 300

Órajelfrekvencia, idő, távolság • 1 „normál” kapu kapcsolási idő = 10 ns • 300 MHz = 0. 3*10 e 9 1/s -> 3 ns • 300. 000 km/s = 0. 3*10 e 9 m/s -> 0. 3 m/ns 3

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 ! 4

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 ! 4

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

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

Teljes összeadó „késleltetése” (ripple carry) y 3 x 3 1+ c 4 s 3

Teljes összeadó „késleltetése” (ripple carry) y 3 x 3 1+ c 4 s 3 y 2 x 2 c 3 1+ s 2 y 1 x 1 c 2 1+ s 1 y 0 x 0 c 1 c 0 1+ s 0 késleltetés (3 dt) 1 dt = 1 kapu kapcsolási idő (kb. 10 ns) 6

Gyorsított összeadás • • Ci+1=Xi. Yi+Xi. Ci+Yi. Ci Ci+1=Gi+Pi. Ci ahol Gi=Xi. Yi és

Gyorsított összeadás • • Ci+1=Xi. Yi+Xi. Ci+Yi. Ci Ci+1=Gi+Pi. Ci ahol Gi=Xi. Yi és Pi=Xi+Yi Gi = generate (Xi=Yi=1) Pi = propagate (Xi vagy Yi = 1) 7

4 bites átvitel-előrelátás („carry lookahead”) • C 1=G 0+P 0. C 0 • C

4 bites átvitel-előrelátás („carry lookahead”) • C 1=G 0+P 0. C 0 • C 2=G 1+P 1. C 1 =G 1+P 1. G 0+P 1. P 0. C 0 • C 3=G 2+P 2. C 2 =G 2+P 2. G 1+P 2. P 1. G 0+P 2. P 1. P 0. C 0 • C 4=G 3+P 3. C 3 =G 3+P 3. G 2+P 3. P 2. G 1+P 3. P 2. P 1. G 0+P 3. P 2. P 1. P 0. C 0 8

Szorzás ROM-ból kiolvasással 0*0 0*1 0*2 0*3 1*1 1*2 1*3 2*0 2*1 2*2 2*3

Szorzás ROM-ból kiolvasással 0*0 0*1 0*2 0*3 1*1 1*2 1*3 2*0 2*1 2*2 2*3 3*0 3*1 3*2 3*3 X Y 00 00 00 01 00 10 00 11 01 01 01 10 01 11 10 00 10 01 10 10 10 11 11 00 11 01 11 10 11 11 Z 0000 0001 0010 0011 0000 0010 0100 0110 0000 0011 0110 1001 X Y MEM 16 x 4 bit Z • gyors, egyszerű, olcsó • tetszőleges függvényre • csak kisméretben alkalmazható 9

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

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

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

„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 11

Utasítások egymás utáni végrehajtása utasítás dekódolás operandus végrehajtás előkészítés meghatározás 1. utasítás feldolgozása 2.

Utasítások egymás utáni végrehajtása utasítás dekódolás operandus végrehajtás előkészítés meghatározás 1. utasítás feldolgozása 2. utasítás feldolgozása 3. utasítás feldolgozása idő 12

Utasítás végrehajtás fokozatokra bontása utasítás előkészítés dekódolás operandus meghatározás végrehajtás utasítás feldolgozása végrehajtás op.

Utasítás végrehajtás fokozatokra bontása utasítás előkészítés dekódolás operandus meghatározás végrehajtás utasítás feldolgozása végrehajtás op. meghatározás dekódolás út. előkészítés idő 13

Csővezetékszerű utasítás végrehajtás (pipelined) 2. utasítás feldolgozása 3. utasítás feldolgozása 1. utasítás feldolgozása végrehajtás

Csővezetékszerű utasítás végrehajtás (pipelined) 2. utasítás feldolgozása 3. utasítás feldolgozása 1. utasítás feldolgozása végrehajtás op. meghatározás dekódolás út. előkészítés 1 1 2 3 4 5 3 4 5 6 7 5. . . idő. . . 14

Problémák a pipeline-vel tárolóhivatkozás : • lassú memória miatt várni kell az operandusokra •

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. . . folyamatos pipeline feldolgozás megszakítása, felfüggesztése 15

Memória utasítások a pipeline-ben • várakozó ciklusok beiktatása - „lyukak” a pipeline-ben • késleltetett

Memória utasítások a pipeline-ben • várakozó ciklusok 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 R 1, (A) load R 2, (B) add R 3, R 1, R 2 16

Elágazások kezelése a pipeline-ben • az ugrási cím csak az utasítás feldolgozása után lesz

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) 17

Adatok felhasználása a pipeline-ben • adat függőség add R 3, R 1, R 2

Adatok felhasználása a pipeline-ben • adat függőség add R 3, R 1, R 2 sub R 4, R 3, R 0 ü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 : -) instruction scheduling. . . internal forewarding. . . scoreboarding. . . 18

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

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

Cache „gyorsító” tár 20

Cache „gyorsító” tár 20

Cache memória Probléma : a központi memória általában sokkal lassabb (5 x-10 x-. .

Cache memória Probléma : a központi memória általában sokkal lassabb (5 x-10 x-. . . ) mint a processzor. . . Kicsi, gyors (drága!), puffer memória a központi memória és a processzor közé. . . Cache memória CPU Központi memória 21

„Tipikus” cache • • 64 Mbyte memóriához 64 Kbyte cache 20 x gyorsabb 1/1000

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

Cache működés (olvasás) CPU által generált memóriacím küldése a cache-nek : 1. ha az

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 23

Cache • a memória és a cache között blokkos adatátvitel (4 -64 szó) •

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

Cache hatása az átlagos elérési időre és a hatékonyságra (példa) Adatok : • cache

Cache hatása az átlagos elérési időre és a hatékonyságra (példa) Adatok : • cache elérési idő tc = 160 ns • memória elérési idő tm = 960 ns • á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) 25

Cache hatása az átlagos elérési időre és a hatékonyságra (példa) ta = h*tc +

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) 26

Cache hatása (Super. SPARC példa) • • CPU 0. 75 CPI (cycles per instruction)

Cache hatása (Super. SPARC 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)) 27

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

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

Teljesen asszociatív cache (fully associative cache) központi memória blokk „i” (0<=i<=M-1) leképezhető bármelyik „j”

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 M=2 m N=2 n 0 „j” m 0 k memória j . . . N-1 M-1 blokkméret : k 29

Közvetlen leképzésű cache (direct mapping cache) egy-egy memória blokk csak meghatározott helyre kerülhet (I-way

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) 0 0 memória i MOD N i DIV N m-n i k N-1 M-1 k 30

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

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

Közvetlen leképzésű cache a memória cím „alsó” n bitje a memória cím „felső” m-n

Közvetlen leképzésű cache a memória cím „alsó” n bitje a memória cím „felső” m-n bitje 0 „tag” 0 memória i MOD N. i DIV N m-n i k N-1 M-1 k 32

Csoport asszociatív cache (set associative cache) S csoport blokkonként S=2 s a memória cím

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

Cache-ben lévő adat megváltoztatása cache - memória koherencia fenntartása ! • azonnali átírás (write-through)

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) 34

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

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) 35

CISC vs. RISC processzorok CISC • „könnyebb programozás” • összetett utasítások, sokféle címzési mód

CISC vs. RISC processzorok CISC • „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 36

CISC vs. RISC CISC (VAX) • 14 féle címzési mód • 250 utasítás RISC

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

Bit-szelet processzorok Bit-szelet (bit slice) processzor • • • példa : AM 2901 4

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 38

Segédprocesszorok co-processzorok • gyorsabb lebegőpontos, mátrix, grafikai műveletek • új utasítások, adattípusok, regiszterek •

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 39