SZGarchitekt_KGY09

Download Report

Transcript SZGarchitekt_KGY09

Számítógéparchitektúrák
dr. Kovács György
DE AVK GAIT
A projekt az Európai Unió társfinanszírozásával,
az Európa terv keretében valósul meg.
Számítógéparchitektúrák
Memóriák hierarchiája
A projekt az Európai Unió társfinanszírozásával,
az Európa terv keretében valósul meg.
2
Regisztertárak
A processzorok teljesítményének fokozásában az elmúlt években
fontos szerephez jutott a regiszterek darabszámának növelése.
Ez segítette például a főtár és a processzor közötti adatforgalom
csökkentését, és ezáltal az utasításvégrehajtás gyorsítását is.
 A regiszterek általában nagyobb egységet alkotnak, melyeket
regisztertáraknak nevezünk. A regisztertárakkal szemben
támasztott elvárások pl.:
 a regisztertár általános volta, vagyis, hogy a tár általánosan
felhasználható regisztereket tartalmazzon, vagy
 minél több regiszter legyen benne (100-500),
 támogassa a 3 címes elérési formát, avagy legyen képes
egyszerre az első operandus (az első művelethez szükséges
adat), a második operandus, ill.az eredmény címét is értelmezni;
tárolni.
HEFOP 3.3.1–P-2004-06-0071/1.0
3
Regisztertárak megoldásai
HEFOP 3.3.1–P-2004-06-0071/1.0
4
A regiszterbank (register
banking)

A regisztertömb fix méretű (azaz
meghatározott darabszámú regiszterből álló)
részekre van felosztva, melyek a felhasználói
taszkokhoz kerülnek hozzárendelésre, a
processzor számára látható tartományok
kezdetét a CBP (current bank pointer) jelzi.
HEFOP 3.3.1–P-2004-06-0071/1.0
5
Az ablaktechnikát alkalmazó
(register windowing)


regisztertömb szintén fix méretű részekre van
felosztva, de ezeknek lehetnek az egyes
taszkok között átlapolható részei (azaz ez
esetben egy taszk egy másik taszk
regisztereinek egy részét is „láthatja”).
A regisztertár mérete meghatározott
nagyságú, 2 valamely hatványa, a
processzor számára látható tartományok
kezdetét a CWP (current window pointer)
jelzi.
HEFOP 3.3.1–P-2004-06-0071/1.0
6
A blokktechnika (register
blocking)


a regisztertömb változó méretű átlapolható
részekre van felosztva. CBP (current blokk
pointer) jelzi.
Az ablaktechnika és a blokktechnika a
különböző taszkok közötti, regiszterekben
történő paraméterátadást segíti.
HEFOP 3.3.1–P-2004-06-0071/1.0
7
Gyorsító (rejtett, vagy cache)
tárak és megoldásaik



a memóriák sebességnövekedése egyre
jelentősebb mértékben elmarad a processzorokhoz
viszonyítva.
A dinamikus RAM-ok sebességenövekedése kb. 7%
évente, addig a processzoroké 60%. A különbség az
idő függvényében pedig egyre nő.
(A növekedés szabályát Gordon Moore 1965-ben
fogalmazta meg: az egységnyi területre jutó
tranzisztorok száma nagyjából másfél évente
megduplázódik.)
HEFOP 3.3.1–P-2004-06-0071/1.0
8
A processzorok és a dinamikus
memóriák sebességnövekedése
HEFOP 3.3.1–P-2004-06-0071/1.0
9
A továbbfejlesztés problémái
Tények:
 a processzor egyre gyorsabb lesz,
 a memória kapacitás növekszik,
 de a memória nem lesz annyira gyors mint a processzor,
 a számítógép sebességét jelentős mértékben meghatározza a
memória sebessége,
 a processzor a lassú memóriával való együttmüködés esetén
„holtidejű” várakozásokra van kényszerítve.
Kérdés:
 Hogyan tudjuk a CPU-t "teljes időben" foglalkoztatni?
 További tények, melyekkel számolni kell:
 A gyors memória drága
 Lassú memória jelentősen ronthatja az összteljesítményt
HEFOP 3.3.1–P-2004-06-0071/1.0
10
Tervezési filozófia




Fogadjunk el egy olyan megoldást, amelyik
mindkét aspektust figyelembe veszi!
Tároljuk a gyakran használt dolgok egy kicsi
mennyiségét gyors/drága memóriában, amit
cache-nek nevezünk!
Helyezzünk el minden mást egy lassú/olcsó
memóriába!
Tegyük gyorssá a kettő közötti adatcserét!
HEFOP 3.3.1–P-2004-06-0071/1.0
11
A megoldás:


Legyen a számítógépben lévő adattárolóegységek felépítése hierarchikus.
A hierarchikus felépítés lényege, hogy az
adathozzáférések gyakorisága szerint:


a processzor közelében igen gyors elérésű, kis
kapacitású és drága tárolók helyezkedjenek el,
majd ahogy távolodunk a processzortól az
adattárolók elérése lassul, kapacitásuk nő és az
egységnyi információtárolás költsége is csökken.
HEFOP 3.3.1–P-2004-06-0071/1.0
12
Hagyományos felépítés
problémái:




A processzor ún. várakozó állapotba kerül, ha a
szükséges adatot a központi tárból, a memória nem
tudja olyan ütemben adni, mint ahogy a processzor
ütemezése miatt igényelné.
Ekkor semmilyen műveletet nem képes elvégezni
addig, amíg a memóriától az igényelt adatot meg
nem kapja.
Ezek a várakozási állapotok a teljes számítógépes
rendszer műveletvégző képességét lényegesen
leronthatják.
A megoldást a processzor és a főtár közé
behelyezett gyorsabb, de drágább cache tár jelenti.
HEFOP 3.3.1–P-2004-06-0071/1.0
13
Tárolók hozzáférési ideje és
tárolókapacitásuk nagyságrendje
HEFOP 3.3.1–P-2004-06-0071/1.0
14
A hierarchikus felépítés elemei




A processzor tartalmazza a regisztereket, melyek az információ
átmeneti tárolását végzik és ezek a számítógép leggyorsabb
(ugyanakkor legdrágább) tárolóegységei.
A gyorsító (cache) tárak tárolókapacitása — melyek a futó
programból a processzor számára leggyakrabban szükséges
utasításokat és adatokat tartalmazzák—, két nagyságrenddel
nagyobb a regiszterekénél, ugyanakkor az adatok kiolvasása kb.
2-szer, annyi időt igényel, mint a regisztertáraknál.
A főtár — mely az aktuálisan végrehajtott programot és ennek
adatait tárolja — kb. 10-szer lassúbb a regisztereknél,
ugyanakkor viszont adattároló képessége több százerszer
nagyobb.
A programvégrehajtáshoz aktuálisan nem szükséges adatokat
tároljuk a háttértarolókon, ezek általában mágneslemezek. Ezek
tárolókapacitása 10 milliószor nagyobb a regiszterekénél, viszont
5 milliószor lassúbbak.
HEFOP 3.3.1–P-2004-06-0071/1.0
15
A lokalitás elve



A program-lokalitás elve szerint a programok egy kis
időintervallumban a memória címterének csak egy relatíve kis
részét veszik igénybe. Ez a megállapítás nemcsak a
programutasításokra, hanem az adatokra is igaz. Ennek két
oldala van:
Időbeli lokalitás: Ha egy adatra vagy egy utasításra hivatkozás
történik, akkor ez nagy valószínűséggel rövid időn belül újra
megtörténik. (ciklus). Másképp megfogalmazva a programok egy
kis időintervallumban a címtér viszonylag kis hányadát
próbálják meg elérni.
Helyi lokalitás: Ha egy adatra vagy egy utasításra hivatkozás
történik, akkor ez nagy valószínűséggel a környezetében lévő
címekre is megtörténik. (Soros utasítás végrehajtás.)
HEFOP 3.3.1–P-2004-06-0071/1.0
16
A cache működése
HEFOP 3.3.1–P-2004-06-0071/1.0
17
Egy cache tároló legfontosabb
jellemzői




a cache-tár mérete, a blokk mérete (az adatcsere a
főtár és a cache között mindig blokkos formában
történik),
egy blokk kikeresésének eljárása a cache tárban,
aktualizálási eljárás, amely szerint a processzor által
módosított adatot a cache-tárba és a főtárba írjuk,
a megfelelő helyettesítési stratégia (replacement
policy), amivel eldöntjük, hogy a cache-ben melyik
blokkot lehet felülírni, ha új blokkot kell bemásolni.
HEFOP 3.3.1–P-2004-06-0071/1.0
18
Cache tárak általános
felépítése
HEFOP 3.3.1–P-2004-06-0071/1.0
19
Asszociatív tárolók




Az eddig megismert tárolók működési elve azon alapult, hogy az
adatokat a memória rekesz címe szerint helyeztük el bennük, vagy
olvastuk ki onnan. A cache tárak ettől eltérő módon, részben, vagy
teljesen asszociatív tárolóként működnek.
Asszociatívnak nevezzük azokat a tárolókat (CAM = Content
Addressable Memory), melyek az adatok visszakeresését tartalom
szerint végzik, azaz a tárolóban lévő adatokat nem kell megcímezni,
hanem a keresett adatokat a tároló bemenetére helyezve eldönthető,
hogy az adatokat a tároló tartalmazza-e vagy sem.
Az asszociatív elven működő cache tárolók esetében a visszakeresés
adatai, a főtárbeli blokkok címei, vagy részcímei lesznek.
A cache memória méreténél fogva a végrehajtandó utasításoknak és
adatoknak csak egy részét tartalmazza. A program futása közben
azonban szükségessé válik a cache memóriába újabb főtár terület
bemásolása.
HEFOP 3.3.1–P-2004-06-0071/1.0
20
Bemásolási eljárások


Teljesen asszociatív cache (fully associative cache) tárolóknál egy
főtárbeli blokk a cache bármelyik sorába bemásolható, a blokk címe
(sorszáma) pedig bekerül a cache toldalék részébe. Ha a processzor
egy adatot keres a cache-ben, akkor az adat memóriacíméből képzett
blokksorszám asszociatív módon összehasonlításra kerül a cache-ben
lévő blokkok sorszámaival. Az összehasonlítás rendkívül gyorsan,
minden sorra vonatkoztatva azonos időben történik meg. Ezt a cache
típust nagyon gyorsnak és egyúttal nagyon drágának jellemezhetjük,
mivel felépítése bonyolult, annyi összehasonlító áramkörre van
szükség, amennyi sort tartalmaz a cache.
Közvetlen leképezésű (direct mapping) cache tárolóban egy blokk
csak a cache egy konkrét sorába kerülhet. Ez a sor úgy kerül
meghatározásra, hogy a blokksorszám alsó „n” db bitjét használjuk fel
sorindexnek. Például, ha a cache-ben 256 sor van, akkor (mivel 28 =
256) a blokksorszám legkisebb helyiértékű 8 bitjével indexelünk. Ez
gyakorlatilag azt jelenti, hogy a főtárban egymástól azonos távolságra
elhelyezkedő blokkok azonos cache sorba fognak bekerülni (lásd a
3.13 ábrát).
HEFOP 3.3.1–P-2004-06-0071/1.0
21
Helyettesítési stratégiák
Legelterjedtebb az LRU (least recently used) stratégia, mely esetében a
processzor által legrégebben használt blokk kerül felülírásra. Ehhez
valamilyen módon tárolni kell azt az információt, hogy az egyes
blokkokat mikor használta a processzor. (Ezt a blokk „életkorának” is
szokták nevezni.)
Az új blokknak a cache-be történő beírására szintén többfajta eljárás
létezik. A leggyakoribbak:
 demand fetching, ami azt jelenti, hogy csak a processzor adatigénye
esetén keresik ki a főtárból a megfelelő blokkot és töltik be a cache-be.
Ezzel párhuzamosan a processzor is azonnal megkapja az adatot
(load through);
 a prefetching, ami azt jelenti, hogy ha a főtárból be kell tölteni egy
blokkot a cache-be, akkor automatikusan betöltésre kerül a főtár
következő blokkja is. (Feltételezhető, hogy ha a processzornak
szüksége volt egy blokkra, akkor nagy valószínűséggel szükség lesz a
rákövetkező blokk adataira is. Ez az eset áll elő, ha utasításcache
esetén az utasításszámláló például a blokk végét címzi.).

HEFOP 3.3.1–P-2004-06-0071/1.0
22
A cache-ben megváltoztatott
adatok visszaírása a főtárba



Ha a processzor egy művelet végrehajtás során megváltoztat egy adatot a cacheben, akkor igen rövid idő alatt a főtár tartalmát is módosítani kell, hogy a két
memória tartalma azonos legyen. Ez két eljárással történhet:
A közvetlen átírás ( write throug) eljárás automatikusan biztosítja főtár és a cache
adategyezőségét, mivel a gyorsítótár írásával együtt megtörténik a főtár írása is.
Ennek alkalmazása esetén a főtár írásműveleteinek végrehajtási idejét a cache
alkalmazása nem javítja.
A pufferelt közvetlen átírás (buffered write through) módszere a közvetlen átírás
hatékonyságát javítja azzal, hogy




a megváltoztatandó főtárbeli adatokat egy (tipikusan 4 elemű) íráspufferbe írja be, és nem
várja meg a főtár írásának a befejeződését.
A főtár aktualizálása azonnal megkezdődik, de a sebességkülönbség miatt némi
késleltetés is fellép.
Amennyiben műveletet akarnánk végezni a visszaírás alatt álló, (de még nem visszaírt)
adatokra, a végrehajtott memóriaművelet hamis eredményeket szolgáltathatna.
Ennek kivédéséről hardver szinten kell megfelelő áramkörökkel gondoskodni. Továbbá
gondot jelenthet az is, ha a puffer megtelne, mivel ez esetben a processzor, várakozásra
kényszerül.
HEFOP 3.3.1–P-2004-06-0071/1.0
23
Visszaírás (write back)



A gyorsírótárban módosított adat csak akkor kerül
visszamásolásra a főtárba, ha a cache-nek azt a sorát mely
módosított adatot tartalmaz, felül kell írni egy a főtárból
bemásolandó újabb blokkal. Ez a módszer gyorsabb a közvetlen
átírásnál, viszont minden cache-beli sor esetében meg kell
jegyezni, hogy az adott sor lett-e módosítva.
Ennek adminisztrálására soronként egy kiegészítő bit szolgál,
melynek állapota "módosult" (alter) vagy "piszkos" (dirty) lehet.
Ha írás történik a cache-be, akkor megfelelő sorban a "módosult"
bit beállításra kerül.
Ha a sor tartalmát cserélni kell egy másik főtár blokkal, akkor a
módosult bit beállított állapota jelzi a cache vezérlőnek, hogy a
sor tartalmát előzőleg vissza kell írni a főtárba. Nyilvánvaló, a
visszaírási eljárást akkor célszerű alkalmazni, ha a gyorsító tár
sorait sokszor kell módosítani a processzornak, mielőtt azok
visszaírásra kerülnének a főtárba.
HEFOP 3.3.1–P-2004-06-0071/1.0
24
Cache kezelés multiprocesszoros
rendszerekben
Cache tárolók multiprocesszoros rendszerben
HEFOP 3.3.1–P-2004-06-0071/1.0
25
MESI protokoll
A főtár és a cache azonosságának biztosítására szabvány eljárásokat
dolgoztak ki. A MESI protokoll egy ilyen szabványos eljárás, amely
nevét a blokkok lehetséges állapotainak angol kezdőbetűiből
képezték.(Modified, Exclusive, Shared, Invalid).
Egy blokk lehet:
 Módosított, ha a cache blokkja a főtár-blokkhoz képest módosítva lett
és csak a cache tár blokk tartalmazza az aktuális adatokat.
 Kizárólagos, ha a cache blokkja megegyezik ugyan a főtár-blokkal, de
ez a blokk a többi cache-ben nem található meg.
 Megosztott, vagy közös esetén a főtár-blokk és a cache blokk
érvényes adatokat tartalmaz, és a blokk a többi cache-ben is
megtalálható.
 Érvénytelen egy cache blokk amennyiben olyan adatot tartalmaz,
amelyet például egy másik cache-ben már módosítottak.

HEFOP 3.3.1–P-2004-06-0071/1.0
26
A tárolóhierarchia
alkalmazásának okai




ha a processzornak a főtárból kell adatot kiolvasni, akkor már
komoly várakozásokra kényszerül;
ha a processzornak a művelet végrehajtáshoz olyan adatra van
szüksége, melyet a háttértárolóról kell kiolvasni, akkor már
„elviselhetetlen" ideig kell várakoznia;
egy lassú periféria művelet végrehajtási ideje a processzor
számára gyakorlatilag végtelennek tűnik.
Ezért a háttértárakat és a lassú perifériákat önálló
vezérlőegységekkel és átmeneti puffer (buffer) rátolókkal kell
ellátni, melyek biztosítják, hogy ezek az eszközök az I/O
műveleteket relatívan a processzortól függetlenül képesek
legyenek végrehajtani.
HEFOP 3.3.1–P-2004-06-0071/1.0
27
A tárolókezelés alapfeladata


biztosítsa a processzor műveletvégrehajtásához
szükséges adatokat, összehangolva a tárolóhierarchia egyes szintjein lévő memóriaegységek
működésével.
A tároló-kezelés feladatainak megoldását a
számítógépek tároló kezelő hardver egysége a
MMU = Memory Management Unit biztosítja. Ez
lehet a processzorba beépített áramkörökből álló
egység (például Intet processzoroknál az AU =
Adress Unit), de lehet önálló hardver elem is
(például a RISC processzoroknál).
HEFOP 3.3.1–P-2004-06-0071/1.0
28
Lemezgyorsító tárak



A mágneslemezes háttértárak elérési ideje
több nagyságrenddel nagyobb a főtáréhoz
képest.
Ezért az adatok írása/olvasása a
háttértárolóra, illetve a háttértárolóról egy
nagyteljesítményű processzorhoz képest
rendkívül lassú.
E probléma feloldása érdekében a főtár és a
mágneslemez közé is beiktatható egy
gyorsító cache-tár.
HEFOP 3.3.1–P-2004-06-0071/1.0
29
A merevlemez gyorsításnak
megoldásai


Gyorsítás programmal, amely az operációs
rendszer részét képezi. Ez esetben a
lemezgyorsító tárrészt a főtárból kell kijelölni.
Gyorsítás hardver eszközzel, amely
előnyösebb és hatékonyabb megoldás. A
korszerű merevlemez interfészek általában
tartalmaznak egy a merevlemez
vezérlőelektronikájával egybeépített több tíz
Mbájt nagyságrendű kapacitással rendelkező
hardver gyorsító-tárat is.
HEFOP 3.3.1–P-2004-06-0071/1.0
30
A tároló hierarchia egyes
szintjei közötti adatáramlás
HEFOP 3.3.1–P-2004-06-0071/1.0
31