SzA2 - Az Adattér, Adatmanipulációs Fa Flashcards
Az adattér fogalma
Olyan tér, ami biztosítja az adattárolást olyan formában, hogy az adattérben található adatok közvetlenül manipulálhatók legyenek a CPU által.
Az adattér két része és jellemzőik
Memóriatér
- Nagyobb, lassabb, olcsóbb
- Külső lapkán helyezkedik el
- Címtere közös lehet az I/O eszközök címterével
Részei: fizikai memória, virtuális memória
Regisztertér
Az adattér egy nagyteljesítményű része.
- Kisebb, gyorsabb, drágább
- Processzor lapkán helyezkedik el
- Külön címtere van
Osztályozása:
- egyszerű regisztertér
- különféle adattípusokhoz különálló regiszterek
- összetett (többszörös) regiszterkészlet
A virtuális és fizikai memória kulcsjellemzői
Létezik olyan transzparens (a felhasználó szempontjából) mechanizmus, amely az éppen futó program számára nem szükséges adatokat automatikusan a fizikai címtérből átteszi a virtuális memóriába. Kétirányú adatforgalom: FM (itt fut a program, sokkal kisebb, gyorsabb) <=> VM (ezt látja a programozó, nagyobb, lassabb)
Létezik olyan a felhasználó számára transzparens mechanizmus, amely a felhasználó által használt virtuális címet futási (execution) fázisban automatikusan lefordítja valós címekké. Egyirányú adatforgalom VM => FM (ma már erre a célra címfordító hardverek vannak a CPU- ban)
Az egyszerű regisztertér
- egyszerű regiszter struktúra AC-> akkumulátor regiszter (egyetlen, kitüntetett regiszter volt régebben, minden művelet után menteni kellett az eredményt az operatív tárba, hogy a következő operandust be tudjuk hívni)
- +néhány dedikált adatregisztert AC + Data regiszterek (a programok feldolgozását felgyorsította)
- univerzális regiszterkészlet (több regiszter volt, amit szabadon fel lehetett használni, hatékonyság növelése, gyorsabb, új programozási stílus, a gyakran használt változókat regiszterekbe lehetett menteni). Az első ilyen gép 1956-ban jelent meg, ami 8 db regisztert tartalmazott.
- Stack Architektúra (regiszter): a processzor mindig a legfelső regisztert látja. Stack operandus: a regiszter címzés rövid, gyors, tulajdonképpen nem igényel címzést. Hátránya: szekvenciális hozzáférés a regiszter tartalmához, lassítja a feldolgozást, nem lehet a belső adatokat közvetlenül elérni (lehívás (fetch) szűk keresztmetszet).
Különféle adattípusokhoz különálló regiszterek
Cél a folyamatok felgyorsítása különös tekintettel a lebegőpontos (FP) műveletekre 4 byte (100szoros sebességnövekedés érhető el velük)
Összetett (többszörös) regiszterkészlet
Kontextus: a program végrehajtás során a regiszterek állapotát az állapot információkkal (PC, flag) együtt kontextusnak nevezzük. Amennyiben egy eljárást hívunk kontextust kimentjük az operatív tárba LASSÚ folyamat!
Megoldás: ahány eljárás annyi regiszter, több regiszterkészlet.
Többszörös regiszterkészlet tervezési tere:
- Több egymástól független regiszterkészlet: Adatátadás (paraméterátadás) operatív táron keresztül történik.
-
Átfedő regiszterkészlet:
- Több egymásba ágyazott eljárás gyorsítására alkották meg.
- Hátránya, hogy fix és merev.
- A regiszterek száma és a regiszterkészletek száma szerint is lehet szűk a keresztmetszet, túlcsordulás léphet fel.
- 6-8 regiszterkészlet esetén már kezelhető (4-5%) a túlcsordulások száma
- Max. 8 egymásba ágyazott eljárás/folyamatunk legyen.
- Stack-cache
Stack-cache
Ötvözi a stack gyorsaságát, a veremregiszter szervezését és a regiszterek közvetlen címezhetőségét.
Működése:
- A compiler minden eljáráshoz hozzárendel egy változó hosszúságú aktiválási rekordot (regiszterkészlet)
- a StackPointer (SP) lehetővé teszi az aktiválási rekordok közvetlen elérését
- A SP és a relatív távolság megadásával bármely adat közvetlenül elérhető a stack-cache-ben
- Az aktiválási rekordok számának csak a stack-cache fizikai mérete szab határt.
Adatmanipulációs fa
Megmutatja a potenciális adatmanipulációs lehetőségeket. Bizonyos részfái megmutatják például egy adott implementáció adatmanipulációs lehetőségeit.
Adattípusok: FX1(Byte), FX2, FX4, BCD, FP4, FP8, boolean (FX = fix, FP = lebegő pontos, BCD = binárisan ábrázolt decimális)
Műveletek: például fix számosnál: +, -, *, /
Operandusok típusai: rrr, rmr, …, mmm (r = regiszter, m = memória)
Címzési módok: memória típusú operandusoknál R+D, PC+D, RI+D(D = displacement, R = regiszter, PC = program counter, RI = index register)
Gépi kódok (utasítások): Pl.: 10011110
Adattípusok (ábra)
Címzési módok
Címosztás (4GB->64GB)
- Abszolút címzés (nem használjuk)
- Relatív címzés (választunk egy bázis címet, és megadjuk a tőle való távolságot(különbséget). Y=B+D).
- Báziscím lehet:
- Dedikált regiszter
- Program counter
- Top offset
- Bármilyen más mutató
Cím módosítása:
- Egy adatblokk egymás követő elemeit (autóinkrementálás/autódeklarálás)
- Egy adatblokk egyes speciális elemét
S-Start
Rxi- az adott indexregiszter tartalma
Y: cím
- meghatározása: Ye=S+Rxi
- kétdimenziós esetben: Ye=S+(Rbi)+(Rbj)
Tényleges (deklarált) cím interpretálása
- Direkt vagy indirekt címzés
- Valós vagy virtuális
- Utasításos kódok