Kontakty Webpage přednášky: – Slajdy (MS PowerPoint): –ftp://ulita.ms.mff.cuni.cz/predn/PRG017 Technické informace (manuály ap.): –ftp://ulita.ms.mff.cuni.cz/techdoc/index.html Mail:
8-bitové procesory 1 „Intel line“ Intel 4004 – 1971: –4-bitový procesor –8-bitové instrukce –Harvardská architektura – oddělený adresový prostor pro kód a data –1K datové paměti, 4K programové paměti (12bit PC) –4-úrovňový interní stack (CALL, RET) –16 čtyřbitových regs., spojitelných do 8 osmibitových –46 instrukcí –16-pin DPI futrál –740kHz (původně zamýšlen jako 1MHz) – cca ops –Bez podpory přerušení –Určený pro kalkulátory
Mezidobí Intel 4040: –vylepšená verze 4004 –+14 instrukcí –8-úrovňový stack –přerušovací systém (shadowing of 1 st 8 regs) Intel 8008 – 1972: –první (nepříliš úspěšný) pokus o 8-bitový procesor; záhy překonán typem 8080 –podobný 4040, terminálový kontroler –14-bitová adresace
Zlatý hřeb Intel 8080(A) – 1974: –jeden z prvních 8-bitových procesorů –považován za typického představitele éry množství napodobenin a odvozených typů –8-bitová datová a 16-bitová adresová sběrnice –little endian –cca 78 instrukcí –hw podpora pro zásobník v hlavní paměti signal pin pro existenci stacku v jiné bance paměti –oddělení adresového prostoru paměti a I/O zařízení 256 I/O portů –jednoduchý systém přerušení (instrukce od periferie) – RST0, RST8, RST16,... –Altair 8800 Intel 8085 – 1976: –hw vylepšení (jednotné napajení, další I/O vstupy, generátor hodin na čipu)
8080 – registry AF BC DE HL S Z 0 AC 0 P 1 CYINTE PC SP
8080 – instrukční soubor Akumulátorově orientovaný IS Instrukční repertoár typický pro dané období: –instrukce přesunů dat (8- a 16-bitových) –8-bitové aritmetické instrukce (bez násobení a dělení) –8-bitové logické instrukce chybí instrukce logických či aritmetických posunů (jen rotace) –Omezený výběr 16-bitových aritmetických instrukcí určeny primárně pro formování adres –Skokové instrukce pro nepodmíněné a podmíněné skoky –Instrukce volání podprogramu využívají hw podpory pro implementaci zásobníku existují i podmíněné varianty –Instrukce pro komunikaci s I/O zařízeními
8080 – způsoby adresace Implicitní adresace střadače (aritmetické a logické instrukce) Explicitní přímá adresace registrů (aritmetické a logické instrukce) Přímá adresace (instrukce přesunu dat, I/O instrukce) Nepřímá adresace obsahem registru (přesunové, aritmetické n. logické instrukce) Implicitní adresace ukazatele zásobníku (instrukce pro manipulaci se zásobníkem, instrukce volání podprogramu) Instrukce skoků a volání podprogramů používají přímou adresaci s plnou 16-bitovou adresou
8080 – systém přerušení Pro dané období poměrně pokročilý Náznak vektorového systému Výrazně využívá speciálních instrukcí RSTn
Motorola & spol: jiná cesta Motorola 6800 – 1974 (1975?) –big endian –redukovaný počet registrů (v podstatě pouze 2 střadače) –naopak silně rozšířený repertoár adresačních módů –instrukční soubor rozsahem zhruba odpovídá tomu u 8080 –zjednodušený systém přerušení MOS Technologies – 65xx –„odpadlíci“ z Motoroly 6501 byla tak „podobná“ 6800, že se na trhu prakticky neohřála 6502 – 1975?: –velký komerční úspěch –levný, nenáročný procesor oblíbenec designerů „osobních mikropočítačů“ – Atari, Apple, Commodore –celkově podobný charakter jako 6800 –následovaly odvozené (rovněž komerčně úspěšné) typy, např. 6510
6502 – registry A X Y N V. B D I Z C PC SP Příznaky: C - Carry Z - Zero I - Interrupts disable D - Decimal (BCD arithm.) B - BRK instr. flag V - Overflow N - Negative (Sign flag)
6502 – způsoby adresace Absolutní adresace: –CMP&1900 Zkrácená absolutní adresace (zero page addressing): –CPY&80 Nepřímá adresace obsahem paměti: –JMP(&1900) Indexovaná adresace: –LDA&2800,X –ADCtable,Y Zkrácená indexovaná adresace (zero page indexed addressing): –ADD&80,X Zero page pre-indexed indirect addressing: –LDA(&80,X) Zero page post-indexed indirect addressing: –LDA(&80),Y
Konec 8-bitové éry ZiLOG Z80 – 1976 –konec sporů o „nejlepší“ 8-bitový procesor –opět „odpadlík“ – tentokrát od Intelu –bin. kompatibilita s 8080 –nové registry (indexované adresování) –dvě sady registrů pro zrychlení obsluhy přerušení –+cca 80 nových instrukcí skokové instrukce s krátkou autorelativní adresou stringové operace ( LDI(R), LDD(R), CPI(R), CPD(R) ) s možností opakování bitové instrukce i jiné obskurnosti ( DJNZ ) „tajné“ instrukce –paměťové rozhraní – RAM refresh cycles –velmi pokročilý systém přerušení – 3 módy (8080 comp., RST38h a vektorový) mode 2: relokovatelný vektorový –úspěch = kompatibilita s mem IF + CP/M (+ ZX Spectrum) –některé verze až 10 MHz hodiny!
Z80 – registry AF BC DE HL S Z 0 H 0 P N CYIFF1IFF2 A’F’ B’C’ D’E’ H’L’ IR IX IY PC SP
Z80 – instrukční soubor Binární kompatibilita kompletní instrukční sada 8080 (z licenčních důvodů ovšem se zcela novou mnemonikou ) Množství nových instrukcí: –„jednoduchá rozšíření“ – např. doplněny instrukce logických operací o posuny (aritmetické i logické) –odklon od čistě „akumulátorové“ filozofie –instrukce pro manipulaci s novými registry –zcela nové třídy instrukcí: bitové instrukce ( BIT, SET, RES ) řetězcové instrukce (s/bez opakování) – kopírování bloků paměti ( LDI(R), LDD(R) ), vyhledávání v blocích ( CPI(R), CPD(R) ) a především blokové vstupy a výstupy ( INI(R), IND(R), OUTI(R), OUTD(R) ) a jiné ( DJNZ ) Nové adresační módy: –autorelativní („krátká“) adresace u skoků –indexové adresování (prostřednictvím registrů IX, IY ): LD A, (IX+10) RLC (IY+11)
Z80 – systém přerušení Relokovatelný vektorový systém –zařízení v okamžiku přijetí svého požadavku o přerušení dodá procesoru 8-bitovou hodnotu (vektor) –vektor je použit jako index do relokovatelné tabulky obslužných rutin přerušení Kromě tohoto pokročilého mechanismu jsou implementovány i další módy: –mód kompatibility s 8080 –zjednodušený mód (tzv. mód RST38), zhruba na úrovni systému přerušení procesorů 65xx Vlastností procesoru, využitelnou při obsluze přerušení, je i shadowing registrů –vzhledem k nepřítomnosti jakýchkoliv ochranných mechanismů se však příliš neužívá
8-bitové evergreeny: Intel MCS 51 8-bitový procesor optimalizovaný pro řídící aplikace Rozšířené možnosti práce v jednobitové logice 64K adresový prostor pro kód 64K adresový prostor pro data 4K zabudované kódové PROM 128B zabudované datové RAM 32 obousměrných a jednotlivě adresovatelných 1/0 linek Dva 16-bitové časovače/čítače Plně obousměrný UART 6-zdrojová/5-vektorová architektura přerušení se dvěmi úrovněmi priorit Zabudovaný generátor hodinového kmitočtu Kmitočet Mhz
Intel MCS 51 – Blokové schéma
Intel MCS 51 - Rozdělení kódové a datové paměti
Intel MCS 51 – Organizace paměti Výřez kódové paměti Organizace interní datové paměti
Intel MCS 51 - Rozdělení interní datové paměti
Intel MCS 51 - SFR SFR=Special Function Registers:
Intel MCS 51 - SFR
Intel MCS 51 - Adresovací módy Přímé adresování –8-bitová adresa v instrukci, pouze na interní datovou paměť a SFR Nepřímé adresování –instrukce specifikuje registr, který obsahuje adresu –8-bitová adresace pomocí R0, R1 nebo SP –16-bitová adresace pomocí DPTR Registrová adresace –instrukce obsahuje tříbitový kód registru ve zvolené bance Registrově specifické instrukce –instrukce přímo bez kódování určuje použitý registr Přímý operand –konstanta následuje operační kód instrukce Indexované adresování –v kódové paměti na čtení, DPTR ukazuje na začátek tabulky, akumulátor obsahuje položku, výsledná adresa=DPTR+ACC –nepřímý indexovaný skok, opět výsledná adresa=DPTR+ACC
Intel MCS 51 - Přerušení Vektory přerušení: Nastavení priority zdroje přerušení v registru IP Priority uvnitř jedné úrovně priority přerušení –IE0, TF0, IE1, TF1, RI nebo TI, TF2 nebo EXF
Intel MCS 51 – Instrukční soubor Aritmetické instrukce –ADD A, ; ADDC A, ; MUL AB ; DIV AB ; INC A ; INC DPTR ; INC ; DEC xxx ; SUBB A, ; DA A Logické instrukce –ANL A, ; ANL,A ; ANL,#data ; ORL xxx ; XRL xxx ; CRL A ; CPL A ; RL A ; RLC A ; RR A ; RRC A ; SWAP A Přesun dat v interní paměti –MOV A, ; MOV,A ; MOV, ; MOV DPTR,#data16 ; PUSH ; POP ; XCH A, ; XCHD Přesun dat v externí paměti –MOVX ; ; MOVX ; Vyhledávací tabulky –MOVC ; MOVC
Intel MCS 51 – Instrukční soubor Bitové instrukce –ANL C,bit ; ANL C,/bit ; ORL xxx ; MOV C,bit ; MOV bit,C ; CLR C ; CLR bit ; SETB C ; SETB bit ; CPL C ; CPL bit ; JC rel ; JNC rel ; JB bit,rel ; JNB bit,rel ; JBC bit,rel Skokové instrukce –JMP addr ; ; CALL addr ; RET ; RETI ; NOP Podmíněné skoky –JZ rel ; JNZ rel ; DJNZ,rel ; CJNE A,,rel ; CJNE,#data,rel
8-bitové procesory – celkové zhodnocení Sběrnice: –8 bitová datová sběrnice –16 bitová adresová sběrnice, obvykle multiplexovaná Instrukční soubor: –CISC –akumulátorově orientovaný –8-bitová aritmetika, bez násobení/dělení –omezeně i 16-bitová aritmetika (obvykle však jen v souvislosti s adresací) Systém přerušení: –obvykle velmi jednoduchý (jediná obslužná rutina, rozlišení zdroje přerušení dodatečným HW) –výjimka: Z80 –jen vnější přerušení, v některých případech SW přerušení Zcela chybí: –podpora virtuální paměti (MMU) –mechanismy ochrany