Utasításszintű architektúra Adattér

Hasonló dokumentumok
5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

Számítógépek felépítése

Operandus típusok Bevezetés: Az utasítás-feldolgozás menete

Számítógép architektúra

elektronikus adattárolást memóriacím

SzA19. Az elágazások vizsgálata

Számítógépek felépítése, alapfogalmak

Programozás alapjai. 10. előadás

Számítógép felépítése

Ismerkedjünk tovább a számítógéppel. Alaplap és a processzeor

találhatók. A memória-szervezési modell mondja meg azt, hogy miként

A számítógép egységei

Párhuzamos programozási platformok

Operációs rendszerek III.

Máté: Számítógép architektúrák

Adatok ábrázolása, adattípusok

Architektúra, megszakítási rendszerek

Mutatók és mutató-aritmetika C-ben március 19.

2. Számítógépek működési elve. Bevezetés az informatikába. Vezérlés elve. Külső programvezérlés... Memória. Belső programvezérlés

Párhuzamos programozási platformok

6. óra Mi van a számítógépházban? A számítógép: elektronikus berendezés. Tárolja az adatokat, feldolgozza és az adatok ki és bevitelére is képes.

Számítógép Architektúrák I-II-III.

Nagy adattömbökkel végzett FORRÓ TI BOR tudományos számítások lehetőségei. kisszámítógépes rendszerekben. Kutató Intézet

8. Fejezet Processzor (CPU) és memória: tervezés, implementáció, modern megoldások

Egyszerű RISC CPU tervezése

A mikroprocesszor egy RISC felépítésű (LOAD/STORE), Neumann architektúrájú 32 bites soft processzor, amelyet FPGA val valósítunk meg.

8. Fejezet Processzor (CPU) és memória: tervezés, implementáció, modern megoldások

A processzor hajtja végre a műveleteket. összeadás, szorzás, logikai műveletek (és, vagy, nem)

SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1

Bevezetés a számítástechnikába

Tamás Péter (D. 424) Mechatronika, Optika és Gépészeti Informatika Tanszék (D 407)

Máté: Számítógép architektúrák

Memóriák - tárak. Memória. Kapacitás Ár. Sebesség. Háttértár. (felejtő) (nem felejtő)

Bevezetés az informatikába

1. Az utasítás beolvasása a processzorba

7. Fejezet A processzor és a memória

Máté: Számítógép architektúrák

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Operációs rendszerek. UNIX fájlrendszer

Számítógép architektúrák

Bepillantás a gépházba

Digitális rendszerek. Utasításarchitektúra szintje

Számítógépek felépítése, alapfogalmak

Összeadás BCD számokkal

Bevezetés az informatikába

A mikroprocesszor felépítése és működése

A 32 bites x86-os architektúra regiszterei

Processzor (CPU - Central Processing Unit)

Adatbázis-kezelő rendszerek. dr. Siki Zoltán

Hardver Ismeretek IA32 -> IA64

Máté: Assembly programozás

Máté: Számítógép architektúrák

ISA szimulátor objektum-orientált modell (C++)

GPU Lab. 4. fejezet. Fordítók felépítése. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

Dr. Illés Zoltán

Műveletek. Dr. Seebauer Márta. Budapesti Műszaki Főiskola Regionális Oktatási és Innovációs Központ Székesfehérvár

VLIW processzorok (Működési elvük, jellemzőik, előnyeik, hátrányaik, kereskedelmi rendszerek)

1. Fejezet: Számítógép rendszerek. Tipikus számítógép hirdetés

Utolsó módosítás:

Ez egy program. De ki tudja végrehajtani?

Nagy Gergely április 4.

Számítógép architektúrák záróvizsga-kérdések február

Számítógépes alapismeretek

IT - Alapismeretek. Feladatgyűjtemény

DSP architektúrák dspic30f család memória kezelése

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

VI. SZOFTVERES PROGRAMOZÁSÚ VLSI ÁRAMKÖRÖK

A C programozási nyelv I. Bevezetés

Assembly programozás levelező tagozat

Programozási nyelvek Java

Tamás Péter (D. 424) Mechatronika, Optika és Gépészeti Informatika Tanszék (D 407)

Számítógép architektúrák

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Jelszavak helyes megválasztása, szótáras törés. Pánczél Zoltán

Utasításfajták Memóriacímzés Architektúrák Végrehajtás Esettanulmányok. 2. előadás. Kitlei Róbert november 28.

Adatszerkezetek 1. Dr. Iványi Péter

Adatelérés és memóriakezelés

ARM (Advanced RISC Machine)

Szupermikroprocesszorok és alkalmazásaik

Az operációs rendszer szerkezete, szolgáltatásai

A C programozási nyelv I. Bevezetés

Utolsó módosítás:

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Máté: Számítógép architektúrák

Informatika érettségi vizsga

Számítógép architektúrák I. Várady Géza

Operációs rendszerek. Az NT memóriakezelése

Operációs rendszerek Memóriakezelés 1.1

Architektúra I. A Számítási modell fogalma: A számításra vonatkozó alapelvek absztarakciója. Jellemzői: - Tudás alapú számítási modell.

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Alapismeretek. Tanmenet

Cloud computing. Cloud computing. Dr. Bakonyi Péter.

Nyíregyházi Egyetem Matematika és Informatika Intézete. Input/Output

SZÁMÍTÓGÉPES ARCHITEKTÚRÁK

5. Fejezet : Lebegőpontos számok

Digitális rendszerek. Digitális logika szintje

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

Cloud computing Dr. Bakonyi Péter.

Máté: Számítógép architektúrák

Aritmetikai utasítások I.

Átírás:

Budapesti Műszaki Főiskola Regionális Oktatási és Innovációs Központ Székesfehérvár Utasításszintű architektúra Adattér Dr. Seebauer Márta főiskolai tanár seebauer.marta@roik.bmf.hu

ISA Instruction Set Architecture ami a gépi szintű programozónak a számítógépből látszik a fordítóprogram kimenete, eltekintve az operációs rendszer hívásoktól és a szimbolikus assemblytől A fordítóprogram írójának ismernie kell: a memóriamodellt regisztereket adat- és utasítástípusokat, amelyeket bizonyos processzorgyártók esetén specifikációs dokumentum, a Gépi Nyelv Referencia Kézikönyv rögzít. Ennek ismerete lehetővé teszi a klónok létrehozását.

A számítógép üzemmódjai ISA szinten Kernel mód az operációs rendszer futtatására szánt mód minden utasítás végrehajtható Felhasználói mód felhasználó programok futtatására nem teszi lehetővé bizonyos érzékeny utasítások végrehajtását (pl, gyorsítótár közvetlen manipulációja)

Adattér Az adattér egy olyan tér, amely biztosítja az adattárolást egy olyan formában, hogy az látható legyen a processzor számára, azaz az adattérben tárolt adatok a processzor által közvetlenül manipulálhatók. Az adattér elvben két különböző típusú térből áll: memóriatér külön lapkán található regisztertér a processzor lapkáján helyezkedik el ahol a regisztertér kisebb, gyorsabb, de drágább erőforrás, mint a memória. Regiszter Cache Operatív tár Mágneslemez Szalagos tároló Optikai lemez Teljes tárhierarchia

Memóriatér Alapjellemző kapacitás [bájt] Címtér modell elvi címtere 2 n címbusz szélessége n konkrét konfiguráció címtere az installált memória mérete Fejlődés 1946 néhány száz szó 1952 IAS 1K 1964 IBM360 16M 1978 8086 1MB 1982 80286 16M 1985 80386 4G 1960 virtuális memória

Virtuális memória Két különböző címtér létezik: a programozó által látott virtuális címtér az implementáció (processzor) által látott valós címtér. virtual address space A virtuális címtérben lévő címeket virtuális, a valós címtérben lévő címeket pedig valós címeknek nevezzük. A virtuális címtér általában jóval nagyobb, mint a valós címtér. A virtuális térben tárolt program- és adatrészek háttértárolón vannak (általában lemezen) user programs are written / translated for the virtual space 8086 80286 year of introduction 78 82 user programs can be executed only in the real space real memory space Mbyte 1 16 real address space virtual memory space Gbyte - 1 80386 85 4096 65536

Virtuális memória Létezik egy, a felhasználó számára transzparens mechanizmus, amely automatikusan betölti a felhasználó számára szükséges programokat vagy adatmennyiséget a virtuális memóriaterületről a valós memóriaterületre, amennyiben a feldolgozás során szükségessé válnak, automatikusan kiteszi a virtuális területre, amennyiben a valós memóriatér - nem lévén több elérhető valós memóriatér - más program vagy adatmennyiség számára szükségessé vált. Ezt a transzformáció dinamikusan, azaz a végrehajtás során történik. virtual address space real address space main memory implemented usually on a disk user transparent transfer of program and data portions

Regisztertér A regisztertér az adattérnek egy nagyteljesítményű része, és általában csupán egy kis részét képezi annak. Céljuk az adattérben fontos lokális változók és időleges eredmények tárolása, ezért általános célú regisztereknek nevezik őket. A nagy teljesítmény alatt a gyors elérést értjük, amely az olvasási és az írási műveletre vonatkozó igény és az olvasási vagy az írási művelet befejeződése között eltelik. A regiszter tér általában nem képezi a címtér részét, különállóan történik a címzése. A regiszter-terek fajtái egyszerű regiszter-készlet különféle adattípusokhoz különálló regiszterek többszörös regiszter-készlet.

Egyszerű regiszter struktúra Az egyetlen akkumulátorral rendelkező architektúrák Az egy akkumulátoros és dedikált regiszterekkel rendelkező architektúrák Az univerzális regiszterekkel rendelkező architektúrák A stack architektúrák One single register set accumulator accumulator with dedicated extension registers general purpose registers (a set of direct accessible registers) stack (a set of LIFO registers)

Egyetlen akkumulátorral rendelkező architektúrák A korai architektúrákban - mint az eredetileg Neumann által tervezettben - csupán egyetlen akkumulátor volt. Ezekben a gépekben az akkumulátort olyan helyként használták, ahol egy halmozott összeg eredménye képződik vagy ahonnan az egyik operandust veszik.

Egy akkumulátoros és dedikált regiszterekkel rendelkező architektúrák Egyetlen akkumulátorral rendelkezni egy sor korlátozást és jelentős teljesítménycsökkenést eredményez. Például, egyetlen akkumulátor nem elegendő az osztás elvégzésére, mivel az osztásnál két eredményt kapunk: a hányadost és a maradékot. Másrészt pedig egyetlen regiszter esetén egy további adatátvitel keletkezik, amikor lementjük az eredményt és be-fetch-eljük az új operandusokat. Következésképpen már a korai architektúrákat is hamar kibővítették egy vagy több adatregiszterrel (ezeket hányados-regiszternek vagy kiterjesztés regiszternek hívták). Általában ez volt a tipikus architektúra az 50-es és a korai 60-as években.

Univerzális regiszterekkel rendelkező architektúrák Az általános célú regiszter-készlettel rendelkező architektúrák jelentősen növelik a teljesítményt. Lehetővé teszik, hogy új programozási stílust vezessünk be és/vagy, hogy a gyakran használt változót állandóan a regiszterben tartsuk és minél több műveletet hajtsunk végre a gyors regisztereket használva. Az első számítógép, amely univerzális regisztert használt, az 1956-ban megjelent Ferranti Pegasus volt, amelynek 8 általános célú regiszterrel rendelkezett. A nyilvánvaló teljesítménynövelő előnyei miatt az univerzális regiszterkészlettel rendelkező architektúrák igen gyorsan terjedtek és ezek képviselték a 60-as és a 70- es évek fő fejlődési irányát. Architectures with general purpose registers Computer model Pegasus Univac 1107 1108 DEC PDP-6 CDC 6600 IBM System/360 Delivery date 1956 1962 1966 1964 1964 1965

Stack architektúrák Az első stack-architektúra az English Electric KDF-9 volt 1960-ban. Érdekesség, hogy az IBM is foglalkozott a stack architektúra bevezetésével, bár ezek sohasem jutottak el a gyártási fázisba. Később több stack architektúrával rendelkező miniszámítógép jelent meg a piacon, mint a HP 3000 vagy a Videoton 1005. Korlátai miatt nem lett fő fejlesztési irányvonal. A stack előnyei a stack operandust használó utasítás rövid, mivel nem igényel címzést a kifejezések értéke könnyen meghatározható stack használatával procedúra hívás esetén a stack alkalmazható paraméter átadásra és eredmény tárolásra vagy a stack használható a program status megőrzésére az megszakítás idejére. A stack korlátjai az adatokat csak szekvenciálisan lehet fetch-elni a stack-bõl közvetlen elérésükhöz nem áll rendelkezésre eszköz, mivel a processzor kizárólag a stack tetejét látja: P stack stack top

Különféle adattípusokhoz különálló regiszterek Egy regiszter-készlet kiterjeszthető a különböző adattípusokra szolgáló két különálló regiszter-készletre: az univerzális regiszterkészletet a fixpontos és logikai adatok esetében egy különálló regiszter-készletet a lebegőpontos műveletekhez. Az első olyan architektúrák egyike, amely két különálló regiszterkészletet deklarált, az IBM 360-as gépcsalád volt. Két jelenlegi típus létezik: az i860 és az IBM RISC 6000 superskalár architektúra. Tört vagy egész szám Előjel Fix pontos FX-register set FP-register set Karakterisztika (egész) Mantissza (tört) Lebegő pontos Előny: lehetőséget biztosít a fixpontos és a lebegőpontos műveletek párhuzamos végrehajtására. Lebegőpontos SIMD regiszterkészlet multimédia alkalmazásokra IBM/360 (1964) i860 (1989) IBM RISC 6000 (1990) FX-register set 16x32 Bit 32x32 Bit 32x32 Bit FP-register set 4x64 Bit 16x64 Bit 32x64 Bit

Többszörös regiszter-készlet Legfejlettebb regiszterkészletet, mely különösen hatékony a kontextuális kapcsolókkal rendelkező program-végrehajtásnál. Kontextus - a program végrehajtása során a regisztertér állapotát az állapottérrel (PC, flags, stb) együtt határozza meg. Eljáráshívásnál a hívó eljárás kontextusát általában el kell menteni a hívási pontnál, mielőtt az aktivált eljárás elindulna. Az eljárás-hívás általában egymásba ágyazottan történik. Egy többfelhasználós környezetben egy task végrehajtását megszakíthatjuk és egy új task végrehajtását indíthatjuk el. Ebben az esetben egy kontextus kapcsoló lép működésbe, amely a régi kontextust behelyettesíti az újjal. A kontextus kapcsolók radikális teljesítmény-csökkenéshez vezethetnek. A kontextus kapcsolók csak akkor hajthatók gyorsan végre, ha nem kell lementeni a kontextust, azaz amennyiben többszörös regiszter-készlet áll rendelkezésre és minden kontextus számára különálló regiszter-készletünk van. Ezen túlmenően szükség van egy olyan univerzális regiszterkészletre is, amely lehetőséget biztosít a különböző kontextusok közötti kommunikációra.

A többszörös regiszter-készlet megvalósítása 1. Minden kontextus számára önálló regiszter-készlet 60-as évek közepén jelent meg a megszakítási folyamatok gyors kontextus kapcsolására. Ez akkor jelent hatékony megoldást, ha nincs kommunikációs igény azon folyamatok között, amelyek számára különálló regiszter-készletet allokáltunk, ilyen eset például a megszakítás. 2. Átfedő regiszter-készlet vagy átfedő regiszter-ablak 1980-ban jelent meg a RISC I gépben az egymásba ágyazott eljárások támogatására. A másik jelentősebb architektúra, amely ilyen típusú többszörös regiszter-készlettel rendelkezik, a SPARC (Scalable Processor Architecture). 3. Stack cache elvét 1982-ben vezették be a C-Machine-ben. A stack cache a stack és a közvetlen elérésű regiszter készlet kombinálása, melynek célja az egymásba ágyazott eljárás-hívások kezelése Multiple register sets multiple distinct overlapping stack cache register sets register sets SDS SIGMA-7 (1966) IBM System-7 (1971) (4 sets/8 reg./16 Bit) UNIDATA 7720 (1976) (16 sets/16 reg./32 Bit) RISC I/II (1980/84) (8 sets of 6/10/6 reg.) SPARC CY7C601 (1988) (8 sets of 8/8/8 reg.) globale registers RISC I/II: 10 reg SPARC: 8 reg WP C-Machine (1982) AM 29000 (1987)

Átfedő regiszter-készlet Minden készlet (ablak vagy bank) három részből áll: input regiszterek (INS); lokális regiszterek (LOCALS); output regiszterek (OUTS). A hívó eljárás output regisztere fizikailag ugyanaz, mint a hívott eljárás input regisztere. Ily módon van egy közös terület a hívó és a hívott folyamat számára, melyen keresztül át lehet adni a paramétereket: Previous Window (CWP + 1) r 31 r 24 r 23 r 16 r 15 INS LOCALS OUTS (input/local/output regiszterek) RISC 8 regiszter-készlet 6/10/6 SPARC 8 regiszter-készlet 8/8/8 r 8 r 31 r 24 r 23 r 16 r 15 r 8 Save Restore Current Window (CWP) INS LOCALS OUTS r 31 r 24 r 23 r 16 r 15 r 8 Next Window (CWP - 1) INS LOCALS OUTS r 7 r 0 GLOBALS

Number of register banks Átfedő regiszter-készlet értékelése A regiszter-készletek számára vonatkozóan 1980-ban a következő kutatási eredményre jutottak a túlcsordulások aránya tekintetében Percentage calls that overflow 60% 50% 40% 30% 20% Amennyiben az egymásba ágyazott eljárások száma meghaladja a regiszterkészletek számát, akkor a túlcsordultakat az operatív tár fogja kezelni Smalltalk Lisp C 10% 0% 2 4 6 8 10 12 14 16

Stack cache A fordítás során minden eljárást hozzárendelnek egy regiszter-készlethez, amit aktiválási rekordnak neveznek. Az aktiválási rekord tartalmazza a lokális változókat az input és az output paraméterek átadására szolgál. A rekord bizonyos korlátok között bármilyen hosszú lehet. Az egymásba ágyazott eljárások aktiválási rekordjai a stack cache-ben egy összefüggő területet képeznek. Az aktiválási rekordban tárolt adatot a rekord legalsó pontjára mutató stack pointer (SP) használatával lehet elérni. A tárolt adat (a lokális változók, az input és az output paraméterek) "közvetlenül" is elérhetők az SP és a relatív távolság specifikálásával. Az egymást követő eljárások aktiválási rekordjai átfedik egymást, és így a hívó eljárás output paraméterei közvetlenül elérhetők a hívott eljárás számára mint input paraméterek. A visszatérés után, a hívott eljárás eredményei szintén közvetlenül elérhetők a hívó eljárás számára. SP INS LOCALS OUTS/INS LOCALS OUTS SP