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