610 likes | 726 Views
Pentium II Felülről kompatibilis az I8088 , … , Pentium Pro -val. 29.000, …, 7.5 millió tranzisztor, 242 láb, 233 MHz , 32 bites gép, 64 bites adat sín. SEC (Single Edge Cartridge) tokozás ( 3. 43. ábra ).
E N D
Pentium II Felülről kompatibilis az I8088, …, Pentium Pro-val. 29.000, …, 7.5 millió tranzisztor, 242 láb, 233 MHz, 32 bites gép, 64 bites adat sín. SEC (Single Edge Cartridge) tokozás (3. 43. ábra). Két szintű belső gyorsító tár: 16 KB utasítás +16 KB adat, 512 KB közös, másodlagos (fele olyan gyors, mint a CPU), 32 B-os gyorsító sor (cashe line). 1 vagy 2 CPU közös memóriával (szimatolás - snoop). Gépi utasítások RISC szerű mikroutasítások, több mikroutasítás futhat egyszerre: szuperskaláris gép. Két külső szinkron sín (PCI és ISA): 3. 50. ábra. 5. előadás
Gyorsító tár sín CPU Memória sín Másodlagos gyorsító tár Fő memória Gyorsító tár PCI-híd PCI sín IDE diszk Szabad PCI bővítő hely Grafikus illesztő SCSI USB ISA-híd Egér Billentyűzet Monitor ISA sín Szabad ISA bővítő helyek Monitor Hangkártya Nyomtató 3.50. ábra.Egy tipikus Pentium II rendszer architektúrája 5. előadás
BPRI#LOCK#Misc# A#ADS#REQ#Paritás# Misc# Misc# RS#TRDY#Paritás# D#DRY#DBSY#Paritás# RESET# Megszakítások VID Kompatibilitás Diagnosztika Inicializálás Energia ellátás vezérlése Egyéb Sín ütemezés KérésHiba SzimatolásVálaszAdat 3 33 5 5 4 3 5 11 3 3 3 2 64 7 8 35 27 Φ Pentium II logikai lábkiosztása (3.44. ábra) Pentium IICPU táp 5. előadás
RESET# Megszakítások VID Kompatibilitás Diagnosztika Inicializálás Energia ellátás vezérlése Egyéb 5 4 11 3 2 7 35 27 Φ Pentium II logikai lábkiosztása (3.44. ábra) RESET#: a CPU alapállapotba hozatala, Megszakítások: régi vezérlő, és APIC (Advanced Programmable Interrupt Controller), VID: a különböző tápfeszültségek kiválasztására szolgál, … Pentium IICPU táp 5. előadás
BPRI#LOCK#Misc# A#ADS#REQ#Paritás# Misc# Misc# RS#TRDY#Paritás# D#DRDY#DBSY#Paritás# Pentium II CPU 3 33 5 3 5 3 3 64 8 Sín ütemezés KérésHiba SzimatolásVálaszAdat Pentium II logikai lábkiosztása (3.44. ábra) Sín ütemezés:BPRI#: magas prioritású igény engedélyezése, LOCK#: sín foglalás több ciklusra, Kérés: A#: 8 bájtos adat címe (64 GB címezhető), ADS#: a cím érvényes, REQ#: kívánság, Válasz: RS#: státus, TRDY#: a szolga tud adatot fogadni, Adat: D#: 8 bájtos adat, DRDY#: az adat a sínen van, DBSY#: a sín foglalt. 5. előadás
Pentium II memória sín A memóriaigények, tranzakciók 6 állapota: 6 fázisú csővezeték (3.44. ábra bal oldal) fázisonként külön vezérlő vonalakkal (amint a mester megkap valamit, elengedi a vonalakat): 0. Sín ütemezés (kiosztás, bus arbitration): eldől, hogy melyik sínmester következik, • Kérés: cím a sínre, kérés indítása, • Hibajelzés: a szolga hibát jelez(het), • Szimatolás: a másik CPU gyorsító tárában, • Válasz: kész lesz-e az adat a következő ciklusban, • Adat: megvan az adat. (3.45. ábra) 5. előadás
Pentium II memória sín csővezetéke (3.45. ábra) K: kérés, H: hiba, S: szimatolás (átkérés), V: válasz, A: adat 5. előadás
UltraSPARC II 64 bites RISC gép, felűről kompatibilis a 32 bites SPARC V8 architektúrával. CPU 5.4 millió tranzisztor, 4 CPU közös memóriával használható. 787 láb (3.46-47. ábra). 64 (jelenleg csak 44) bites cím és 128 bites adat lehetséges. Belső gyorsító tár (16 KB utasítás + 16 KB adat). Külső 512 KB - 16 MB.8 K - 256 K db 64 B-os gyorsító sor (cashe line) lehet. A címzéséhez 13 – 18 bit szükséges. A CPU mindig 18 bites Line címet (Címkeazonosítót) ad át.Csak maximális méret esetén van mind a 18 bit kihasználva. 5. előadás
512 KB –os gyorsító tár esetén a 44 bites cím felosztása (3.47. ábra, 3_47_abrahoz):Tag: 25 bit, Line: 13 bit, bájt cím: 6 bit = 44 bit. 16 MB –os tár esetén 18 bites Line kell, és 20 bites Tag (Címkeadat) is elég lenne, de ilyekor – hogy a CPU egységesen működhessen – a gyorsító tárban tárolt 20 bites Tag –et a gyorsító tár kiegészíti Line 5 legmagasabb helyértékű bitjével. Az Adat címe a gyorsító sor címén (Címkeazonosító, Line) kívül még 2 bitet tartalmaz, mert egy átvitel során a gyorsító sornak csak negyed része (16 bájt) mozgatható. 5. előadás
Tag Line Word Byte 5 bit átfedés 4 bit 2 bit 25 bit 18 bit Address in cashe line Address: 64 bit-es, de egyelőre 44 bitre van korlátozva = ? Enrty: bejegyzés a gyorsító tárbanCashe line: gyorsító sor 64 bájtEgyszerre mozgatható adat 16 bájt (1/4 gyorsító sor) 5. előadás
18 25 Másodlagos gyorsító tár(címkék -tags) Címke cím (Line)Érvényes címke Címke adat (tag)Címke paritása Adat címeÉrvényes adat cím AdatParitás UltraSPARC IIközpontiegység Első szintűgyorsító tárak 4 20 Másodlagos gyorsító tár(adatok) 128 vezérlés 16 5 UDB IImemóriapuffer UltraSPARC II 5. előadás
UltraSPARC II UPA (Ultra Port Architecture) sín, kapcsoló vagy mindkettő. A memóriák és max. 4 CPU kommunikációját kezeli. UDB II (UltraSPARC Data Buffer II): ezen keresztül zajlik a memória és a gyorsító tárak közötti adatforgalom. SBus: 25 MHz-es szinkron sín a perifériáknak. A memóriához lassú lenne! 5. előadás
UltraSPARC IIközpontiegység Első szintűgyorsító tárak vezérlés 5 UDB IImemóriapuffer Sín ütemezés Memória címCím paritásaÉrvényes cím Várakozás Válasz Memória adatHiba javító kód UPAinterfésza főmemóriához 5 35 4 128 16 5. előadás
picoJava II JVM-et (Java Virtual Machine) megvalósító hardver. Elsősorban beépített számítógépekben alkalmazzák. Szabványos BGA (Ball Grid Array) tokban: SUN microJava 701 lapka + 316 láb, benne a SUN picoJava II központi egység (3.48. ábra). 5. előadás
3.48. ábra. A microJava 701-es rendszer MicroJava 701CPU Első szintűgyorsító tárak FlashPROM ProgramozhatóB/K vonalak 16 A Főmemória U PC sín Memória sín Lábak vezérlés, órák, megszakítás, tesztelés, …számára. Programozható B/K (nyomógombok, lámpák, …) Memória sín (64 bites adat, 32 bites cím) és 32 bites PCI sín Flash PROM. 5. előadás
Egyszerűsített lexikális elemző Feladata, hogy azonosító, szám, speciális jelek és a program vége jel előfordulásakor rendre A, 0, , és . karaktert írjon a képernyőre. Az esetleges hibákat ? jelezze. XLAT utasítás alkalmazásának tervezése: 5. előadás
data segment para public ’data’ ; ugró táblák a szintaktikus helyzetnek megfelelően: ; kezdetben, speciális és hibás karakter után t_s dw hiba ; hibás kar.: spec. jel szint dw lev_a ; betű: dw lev_n ; számjegy: dw lev_s ; spec. jel: dw vege ; szöveg vége: program vége 5. előadás
; azonosító szint t_a dw hiba ; hibás kar.: spec. jel szint dw OK ; betű: nincs teendő dw OK ; számjegy: nincs teendő dw lev_s ; speciális jel: azonosító vége dw vege ; szöveg vége: program vége ; szám szint t_n dw hiba ; hibás kar.: spec. jel szint dw hiba ; betű: hiba: spec. jel szint dw OK ; számjegy: nincs teendő dw lev_s ; speciális jel: szám vége dw vege ; szöveg vége: program vége 5. előadás
level dw ? ; az aktuális ugrótábla címe c_h db 0 ; hibás karakter kódja c_b db 2 ; betű kódja c_n db 4 ; számjegy kódja c_s db 6 ; speciális jel kódja c_v db 8 ; végjel kódja specjel db ’ ,. ;+-()’, 13, 10 ; a speciális jelek vegjel db ’$’ ; vége jel, kihasználjuk, ; hogy itt van! table db 256 dup (?) ; átkódoló tábla (256 byte) text db ’a,tz.fe&a 21 a12 12a $’ ; elemzendő szöveg DATA ends 5. előadás
code segment para public ’CODE’ assume cs:code, ds:data, es:data, ss:stack Lex proc far push ds xor ax,ax push ax ; visszatérési cím a veremben mov ax,data mov ds,ax mov es,ax ; assume miatt call prepare ; átkódoló tábla elkészítése mov si, offset text ; az elemzendő szöveg ; kezdőcíme call parsing ; elemzés ret ; vissza az Op. rendszerhez Lex endp 5. előadás
prepare proc ; az átkódoló tábla elkészítése ; az eljárás rontja AX, BX, CX, DI, SI tartalmát cld ; a string műveletek iránya pozitív mov bx, offset table mov di,bx mov al,c_h ; hibás karakter kódja mov cx,256 ; a tábla hossza rep stos table ; table minden karakter hibás 5. előadás
mov al,c_b ; betű kódja mov di,’A’ ; A ASCII kódja add di,bx ; A helyének offset címe mov cx,’Z’-’A’+1 ; a nagybetűk száma ; a betűk ASCII kódja folyamatos! rep stosb mov di,’a’ ; a ASCII kódja add di,bx ; a helyének offset címe mov cx,’z’-’a’+1 ; a kisbetűk száma rep stosb 5. előadás
mov al,c_n ; számjegy kódja mov di,’0’ ; 0 ASCII kódja add di,bx ; 0 helyének offset címe mov cx,’9’-’0’+1 ; a számjegyek száma ; a számjegyek ASCII kódja folyamatos! rep stosb 5. előadás
mov si,offset specjel ; speciális jelek ; feldolgozása xor ah,ah ; hogy ax=al legyen pr1: lods specjel ; speciális jel ASCII kódja mov di,ax ; ah=0 miatt ax = a jel kódja cmp al,vegjel ; vegjel közvetlenül a ; speciális jelek után van! je pr2 ; ez már a vegjel mov al,c_s ; speciális karakter kódja mov [BX+DI],al ; elhelyezés a táblában jmp pr1 ; ciklus vége 5. előadás
pr2: mov al,c_v ; a végjel kódja mov [BX+DI],al ; elhelyezés a táblában ret ; vissza a hívó eljáráshoz prepare endp 5. előadás
parsing proc ; elemzés ; az eljárás rontja AX, BX, CX, DI, SI tartalmát cld ; a string műveletek iránya pozitív mov bx, offset table mov di,offset t_s ; spec. jel szint lv1: mov level,di ; szint beállítás xor ah,ah ; hogy ax=al legyen OK: lods text ; a következő karakter XLAT ; AL 0, 2, 4, 6 vagy 8 ADD AX,LEVEL ; AX az aktuális ; ugró táblán belüli cím JMP [AX] ; kapcsoló utasítás 5. előadás
hiba: mov di,offset t_s ; hibás karakter, ; spec. jel szint következik mov al,’?’ lv2: mov ah,14 ; BIOS hívás előkészítése int 10h ; BIOS hívás: ; karakter írás a képernyőre jmp lv1 lev_a: mov di,offset t_a ; azonosító kezdődik mov al,’A’ jmp lv2 5. előadás
lev_n: mov di,offset t_n ; szám kezdődik mov al,’0’ jmp lv2 lev_s: mov di,offset t_s ; speciális jel mov al,’,’ jmp lv2 vege: mov al,’.’ ; szöveg vége mov ah,14 ; BIOS hívás előkészítése int 10h ; BIOS hívás: ; karakter írás a képernyőre ret ; elemzés vége, vissza a hívóhoz parsing endp code ends 5. előadás
stack segment para stack ’stack’ dw 100 dup (?) ; 100 word legyen a verem stack ends end Lex ; modul vége, start cím: Lex 5. előadás
Mikroarchitektúra szint Feladata az ISA (Instruction Set Architecture – gépi utasítás szint) megvalósítása. Nincs rá általánosan elfogadott, egységes elv. A ISA-szintű utasítások „függvények”, ezeket egy főprogram hívja meg végtelen ciklusban. A függvények a mikroarchitektúra szintjén valósulnak meg (mikroprogram). A mikroprogram változói (a regiszterek) definiálják a számítógép állapotát, pl.: PC (Program Counter, utasításszámláló). 5. előadás
IJVM (Integer Java Virtual Machine): a JVM egész értékű aritmetikát tartalmazó része. Az IJVM utasítások szerkezete: • az első mező az opcode (Operation Code, műveleti kód), • az esetleges második mezőben az operandus meghatározására szolgáló adat van. Nem használjuk a C-ben írt SUN JVM interpretert, mert nem elég hatékony az elemi logikai áramkörök kezelésére. Mikroprogram: betölti, értelmezi és végrehajtja az IJVM utasításokat: betöltés-végrehajtás (fetch-execute) ciklus. 5. előadás
INVA A ENA B ENB dekódoló F0 teljes összeadó F1 • INVA: HaENA = 1, akkor A#, Ha ENA = 0, akkor 0# = FFFF = – 1. átvitel be Az ALU-nak(3.19-20. ábra) 6 vezérlő bemenete van: • ENA az A bemenet engedélyezése (1) tiltása (0), • ENB a B bemenet engedélyezése (1) tiltása (0), • F0, • F1. F0, F1 kiválasztja az AND, OR, B#, + művelet valamelyikét, • INC: +1. átvitel ki 5. előadás
Néhány példa (4.2. ábra átrendezve) A könyvben nem logikus, hibás. 5. előadás
Adatút (Data Path, 4.1. ábra) 32 bites regiszterek, sínek,ALU, léptetőSLL8 8 bittel balra, SRA1 1 bittel jobbra léptet. ALU bemenetei:H (Holding – tartó), B sín. Egy cikluson belül lehetséges egy regiszterből olvasni és az eredményt akár ugyanoda visszaírni 4.3. ábra. memória MAR MDR PC MBR SP LV CPP TOS OPC H ALU Léptető Memória vezérlő regiszterek Vezérlő jelek B sínre írja a regisztertC sínt a regiszterbe írja Bsín Csín B A N 1, ha az eredmény < 0, különben 0, 6 Z 1, ha az eredmény = 0, különben 0. ALUvezérlés Léptető vezérlés 2 5. előadás
memória MAR MDR PC MBR Memóriaműveletek (4.1. ábra) • Szócímzés: 32 bites adat írása, olvasása. szó cím = 4 * (bájt cím), a túlcsorduló bitek elvesznek MAR (Memory Address Register) MDR (Memory Data Register) • Bájtcímzés: gépi szintű utasítás bájt olvasás. PC (Program Counter): bájt cím, MBR (Memory Byte Register): bájt. MBR kétfajta értelmezése (két vezérlőjel): • MBR: MBR előjelesen kerül a B sínre, • MBRU: MBR előjel nélkül kerül a B sínre. 5. előadás
Az adatút vezérlése (4.1., 5-6. ábra) memória MAR MDR PC MBR SP LV CPP TOS OPC H ALU Léptető 9 jel: a B sínre írás a regiszterekből, 8 jel: 6 az ALU és 2 a léptető vezérlésére, 9 jel: a C sínről regiszterekbe írás, 3 jel: a memória eléréshez (nem ábrázoltuk!) 2 jel: szó íráshoz/olvasáshoz 1 jel: bájt olvasáshoz. Összesen 29 jel szükséges Bsín Csín A B sínre csak egy regiszter írhat egyszerre, ezért 9 helyett elég 4 jel, összesen 24 vezérlő jelre van szükség. B A N 6 Z ALUvezérlés Léptető vezérlés 2 5. előadás
Mikroutasítások 24 bit: az adatút vezérléséhez 9 bit: a következő utasítás címének megadásához, 3 bit: a következő utasítás kiválasztásának módjára. Ez adja a 36 bites mikroutasítást: 4.5. ábra. NEXTADDRESS JMPC JAMNJAMZSLL8SRA1F0F1ENAENBINVAINCHOPCTOSLVSPPCMDRMARWRITEREADFETCHB sín 5. előadás
MPC 9 512x36 bites vezérlőtár a mikroprogram tárolására MIR 4-ről 16-ra dekódoló Mic-1:4.6. ábra. • 512x36 bites vezérlőtár a mikroprogramnak, • MPC (MicroProgram Counter): mikroprogram-utasításszámláló. • MIR (MicroInstruction Register): mikroutasítás-regiszter. Az adatút ciklus (4.6. ábra) elején MIR feltöltődik a vezérlőtár MPC által mutatott szavával. 5. előadás
Adatút ciklus (4.6. ábra): • (MIR feltöltődik a vezérlőtár MPC által mutatott szavával.) • Kialakul a B sín kívánt tartalma, ALU és a léptető megtudja, mit kell csinálnia, • Az ALU és a léptető elvégzi a feladatát, a C sín, N (Negative) és Z (Zero) megkapja az új értékét, • A regiszterek feltöltődnek a C sínről. MBR/MDR megkapja az értékét, ha az előző ciklus adatot kért a memóriából. • Kialakul MPC új értéke. • Memória ciklus kezdete. MAR MDR PC MBR SP LV CPP TOS OPC H 6 N Z ALU ALUvezérlés 2 Léptető A B 5. előadás
memória MAR MDR PC MBR Memória ciklus A memória ciklus az adatút végén kezdődik (MAR ill. PC feltöltése után), ezért ha a memória címet módosította ez a mikroutasítás, akkor a memória cím a módosított MAR ill. PC regiszter értéke lesz. Olvasásnál az eredmény csak két ciklussal később használható, mert MDR ill. MBR csak a következő adatút ciklus vége felé töltődik fel a memóriából, addig MDR ill. MBR régi értéke érhető el. 5. előadás
MPC 9 512x36 bites vezérlőtár a mikroprogram tárolására MIR 9 Mic-1:4.6. ábra. MPC új tartalmának kialakítása. + 8 MBR (N&JAMN) + (Z&JAMZ) JMPC JAMN/JAMZ N 1 bites flipflopok Z 5. előadás
MPC új tartalma • A 9 bites következő cím (Addr) az MPC-be kerül. • JAMN/JAMZ esetén MPC legmagasabb bitjének és az N/Z bitnek logikai vagy kapcsolata képződik MPC legmagasabb helyértékével (elágazás). Pl.: esetén a mikroprogram a 0x092 címen folytatódik, ha Z = 0,0x192 címen folytatódik, ha Z = 1. Feltételes ugrás – elágazás – a mikroprogramban. 5. előadás
MPC új tartalma (folytatás) • JMPC esetén MPC 8 alacsonyabb helyértékű bitjének és MBR 8 bitjének bitenkénti vagy kapcsolata képződik MPC-ben az adatút ciklus vége felé (MBR megérkezése után). Ilyenkor Addr 8 alacsonyabb helyértékű bitje általában 0Feltétlen ugrás az MBR –ben tárolt címre – kapcsoló utasítás. Kezdődhet az újabb mikroutasítás végrehajtása. 5. előadás
Mic-1 működése (MPC) MIR regiszter B sín, AddrMPC ALU, léptető megtudja, mit kell csináljon, eredmény C, N, Z C regiszterekbe JAMN, JAMZ (N, Z) mem. MDR és/vagy alapján módosul MPC mem. MBR Memória ciklus indítása JMPC (MBR) (rd, wr, fetch) alapján módosul MPC. 5. előadás
Eljárás: paraméterek, munka terület. A hívó és hívott eljárás paraméterei, változói nem lehetnek azonos területen: lokális változók. Verem (stack): LV (Local Variable), SP (Stack Pointer) verem mutató (4.8. ábra). 5. előadás
A verem operandusok és az eredmény ideiglenes tárolására is használható, pl. (4.9. ábra): a1 = a2 + a3 5. előadás
Konstansok, mutatók Tartalma a program betöltésekor alakul ki, ISA utasítások nem írhatják felül Verem lokális változók és operandus verem Program PC bájtot címez a metódus területen belül Az IJVM memóriamodellje (4.10. ábra) A 4 GB memória, 1 G szóként is szervezhető. 5. előadás
IJVM néhány utasítása: 4.11. ábra. 5. előadás
Java (C) IJVM program4.14. ábra Bin. kód program 1 ILOAD j // i = j + k 15 02 2 ILOAD k 15 03 i = j + k; 3 IADD 60 if(i = = 3) 4 ISTORE i 36 01 k = 0; 5 ILOAD i // if(i = = 3) 15 01 else 6 BIPUSH 3 10 03 j = j – 1; 7 IF_ICMPEQ L1 9F 00 0D 8 ILOAD j // j = j – 1 15 02 9 BIPUSH 1 10 01 10 ISUB 64 11 ISTORE j 36 02 12 GOTO L2 A7 00 0F 13 L1: BIPUSH 0 // k = 0 10 00 14 ISTORE k 36 03 15 L2: 5. előadás