Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Struktura a architektura počítačů (BI-SAP) 9 doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních technologii ČVUT v Praze Hana Kubátová BI-SAP 9, podprogramy letní semestr 2010-11
BI-SAP 9: osnova ISA: architektura souboru instrukcí, architektura procesoru, přerušení, podprogramy sběrnice Hana Kubátová BI-SAP 9, podprogramy 2
Vývoj softwaru úrovně abstrakce Vyšší programovací jazyk Překladač Jazyk symbolických instrukcí Asembler Strojový kód Procesor a = b+c If (a > MAX) a = MAX for (i==0; i<a; i++) mov reg1, konst[0] mov reg2, konst[2] add reg1, reg2 jc lab 0000 1111 0101 0111 1011 0001 1110 0011 1100 1000 1001 0110 Řídící signály Hana Kubátová BI-SAP 9, podprogramy 3
Technologie tvorby programu v asembleru Zdrojový soubor *.asm Překladač (asembler) Binární soubor (případně HEX soubor) *.bin, *.hex Toto se nahrává do paměti programu mikropočítače Hana Kubátová BI-SAP 9, podprogramy 4
Příklad programu v symbolickém vyjádření a ve strojovém kódu Tuto transformaci provádí program zvaný asembler Symbolické vyjádření programu ldi r17, 0x55 ldi r18, 0x88 mov r16, r17 mov r17, r18 mov r18, r16 jmp 0 Převod mezi symbolickým vyjádřením a strojovým kódem zajišťuje překladač (asembler) Toto píše programátor 0000: E515 0001: E828 0002: 2F01 0003: 2F12 0004: 2F20 0005: 940C 0006: 0000 Adresa v paměti programu Obsah paměti programu Toto je mikropočítačem načítáno a dekódováno jako instrukce Poznámka: mlčky předpokládáme, že strojový kód umísťujeme od adresy 0x0000. Hana Kubátová BI-SAP 9, podprogramy 5
Instrukce, pseudoinstrukce, direktivy Instrukce = existuje pro ni kód a umístění na určité adrese v paměti Pseudoinstrukce = např. vyhrazení místa pro proměnné, deklarace proměnných Direktiva = instrukce pro předkladač Makroinstrukce = konkrétní instrukce se na několik míst v programu doplní až při překladu Hana Kubátová BI-SAP 9, podprogramy 6
Instrukční cyklus Čtení instrukce Dekódování instrukce Načtení operandů Činnost procesoru: sekvenční zpracování instrukcí v nekonečné smyčce, podle instrukčního cyklu Provedení instrukce Uložení výsledku přerušení? Hana Kubátová BI-SAP 9, podprogramy 7
Změna pořadí provádění instrukcí Instrukcemi: Skoku: nepodmíněný.. JMP, podmíněný BRxx realizace: změna obsahu PC Voláním podprogramu.. CALL realizace: změna obsahu PC a uložení návratové adresy na zásobník, při návratu (konci) podprogramu se pomocí instrukce RET nastaví obsah PC na adresu instrukce následující po CALL Přerušením Hana Kubátová BI-SAP 9, podprogramy 8
Příklad. AVR BRBC: skok jestliže bit S ve SREG je 0 Syntax: Operandy: BRBC S,k 0 s 7, -64 k +63 Operace: If SREG(s) = 0 then PC PC + k + 1 else PC PC + 1 Programový čítač: PC PC + k + 1 PC PC + 1 když podmínka není splněna Podobně BRBS Hana Kubátová BI-SAP 9, podprogramy 9
Další podmíněné skoky BRCS BRCC... S set, C clear Syntax: BRCS k BREQ... Z=1, BRNE... Z=0, BRGE... N xor V = 0... Procesor umí nastavit či vynulovat příznaky v SREG Hana Kubátová BI-SAP 9, podprogramy 10
Posuvy SHL, SHR, ASR aritmetický posun vpravo, RRC, RLC Hana Kubátová BI-SAP 8, ISA 11
Posuvy LSL, LSR posuvy logické (SHIFT) ROL, ROR rotace přes Carry ASR aritmetický posuv vpravo (? Vlevo?)... A řada dalších instrukcí, viz web SAP Hana Kubátová BI-SAP 7, AVR 12
Podprogramy Volání... CALL k k je adresa Umožňuje strukturovat program a vytvářet kratší programy Při tzv. volání je nutné na rozdíl od skoků zapamatovat, kam se vrátit, tzn. uložit návratovou adresu Ukládá se na zásobník Při návratu (na konci podprogramu je třeba instrukce RET návrat z podprogramu) Předávání parametrů: přes registry, paměť nebo zásobník Hana Kubátová BI-SAP 9, podprogramy 13
Podprogramy Volání... CALL k k je adresa Program counter: PC k Stack: STACK PC + 2 SP SP 2, (2 bytes, 16 bits) post-dekrementace Návrat z podprogramu... RET Při volání se ukládá návratová adresa na zásobník, Při návratu se obnovuje původní obsah PC ze zás. pre-inkrementace Stack: SP SP + 2, (2 bytes, 16 bits) Hana Kubátová BI-SAP 9, podprogramy 14
Zásobník -stack Operace: PUSH Rr... uložení registru na zásobník Rr STACK Program counter: Stack: PC PC + 1 SP SP 1 POP Rd... nahrání registru ze zásobníku Rd STACK Program counter: PC PC + 1 Stack: SP SP + 1 Hana Kubátová BI-SAP 9, podprogramy 15
Zásobník... Zásobník roste směrem k nižším adresám (podle typu procesoru pak jsou jinak realizované operace PUSH a POP) Obsah SP registru ukazuje na vrchol zásobníku na první prázdnou položku, na kterou se bude zapisovat (např. instrukcí PUSH, ale i přivolání podprogramu CALL nebo při přerušení) Je simulován v hlavní paměti (v AVR v paměti dat, při psaní programu je třeba ho inicializovat) Hana Kubátová BI-SAP 9, podprogramy 16
... zásobník 000 8 bitů data data 4FF Hana Kubátová BI-SAP 9, podprogramy 17
Zásobník... AVR inicializace Zásobník inicializujeme na dostatečně vysokou adresu, protože roste směrem dolů. Maximální počáteční hodnota SP pro ATmega169 je 0x4FF.include "m169def.inc" ldi r16, 0x00 out SPL, r16 ldi r16, 0x04 out SPH, r16. Vložení definičního souboru V/V registrů ATmega169 do zdrojového kódu. Zápis hodnoty 400h do SP Poznámka: V definičním souboru m169def.inc jsou adresy dolní a horní poloviny SP registru definovány takto:.equ SPL = 0x3d (dolní polovina SP).equ SPH = 0x3e (horní polovina SP) Hana Kubátová BI-SAP 9, podprogramy 18
Zásobník... použití Ukládání návratových adres na zásobník při volání podprogramu Uložení návratové adresy při vyvolaném přerušení Předávání parametrů podprogramům Lokální proměnné podprogramů Dočasné uložení registrů pro zachování transparentnosti kódu. Typicky v obsluze přerušení. Hana Kubátová BI-SAP 9, podprogramy 19
Příklad... AVR volání podprogramu Sečtěte 8000h + 0100h + 0100h ldi r16, 0x00 ldi r17, 0x80 ldi r18, 0x00 ldi r19, 0x01 call add16 call add16. Podprogram ; Součet dvou 16bitových čísel ; vstup: R17:R16 sčítanec 1 ; R19:R18 sčítanec 2 ; ; výstup: R17:R16 součet ; ; používá: R16, R17, ; R18, R19, SREG add16: add r16, r18 adc r17, r19 ret Parametry jsou předávány v registrech Poznámka: nezapomeňte přidat na začátek programu inicializaci zásobníku Hana Kubátová BI-SAP 9, podprogramy 20
Přerušení Vnější (periférie, uživatel) Nemaskovatelné (NMI) Maskovatelné (z řadiče přerušení) Vnitřní Chyby operandů, výsledků, krokování, Instrukce INT n (n konstanta) Postup při obsluze přerušení 1. Uloží se na zásobník informace o právě probíhajícím programu: SREG, PC 2. Zakáže se další přerušení 3. Nastaví se PC na hodnotu adresy začátku podprogramu, který provádí obsluhu daného typu přerušení 4. Provedení přerušení 5. Návrat z programu obsluhy přerušení a obnova informaci patřící původnímu programu, ve kterém bylo přerušení vyvoláno SREG, PC Hana Kubátová BI-SAP 9, podprogramy 21
Přerušení Maskování přerušení pomocí příznaku IF Povolení např. pomocí nové instrukce STI, která nastaví IF, tj. IF 1 Zákaz např. pomocí nové instrukce CLI, která nuluje IF, tj. IF 0 Vektor přerušení Obsahuje adresu podprogramu obsluhy přerušení, která je zapsána do PC V paměti obyčejně na nejnižších hodnotách je vyhrazen prostor, kde je umístěno n (INT n) vektoru přerušení, tj. adres podprogramů pro zpracování daného typu přerušení v AVR si přerušovací rutiny musí napsat programátor Řadič přerušení Hardwarové zařízení přijímající signály z vstupně-výstupných zařízení Identifikuje požadavky na přerušení podle jejích priorit IRQ (Interrupt request) Generuje přerušovací signál INT Hana Kubátová BI-SAP 9, podprogramy 22
Přerušení 7a.adresa Vekt. Př. Paměť Zásobník Obsluha V/V rozhraní 4.INTA 2.IRQ 7b.adresa 6.SREG,PC 9.SREG,PC Řadič přerušení 3.INT CPU 8.provedení programu obsluhy 5. HW 1.- 3. Vznik žádostí o přerušení 4. Rozhodnutí o obsluze (IF=1 a INTA) 5. Identifikace příčiny přerušení (číslo typu) 6. Uložení stavové informace SREG a PC na zásobník 7. Nalezení začátku podprogramu pro obsluhu daného typu přerušení pomocí vektoru přerušení (nové PC) 8. Provedení podprogramu obsluhy přerušení 9. Návrat do přerušeného programu a obnovení PC a SREG SW Hana Kubátová BI-SAP 9, podprogramy 23
HW počítače -shrnutí Všechny počítače se skládají z 5 základních částí: Datová část (ALU) -část procesoru Řídící část (řadič) část procesoru Hlavní paměť Vstupní zařízení Výstupní zařízení Paměťový systém Caches: rychlé, dražší, kapacitně menší, umísťované blíž k procesoru Hlavní paměť: pomalejší, levnější, větší Vnější paměť: ještě pomalejší Vstupní a výstupní zařízení mají nejméně pravidelné struktury: Široký rozsah rychlosti: klávesnice vs. Grafika Široký rozsah požadavku: rychlost, cena, norma atd. Hana Kubátová BI-SAP 9, podprogramy 24
Hardwarová architektura počítače Procesor Hlavní paměť PCI interface/ řadič paměti Sériové porty I/O řadič USB porty I/O řadič Desktop sběrnice I/O řadič HW architektura počítače (2) PCI CDROM I/O řadič I/O řadič Tape SCSI bus Grafický výstup Ethernet Disk Typický počítačový systém s I/O Hana Kubátová BI-SAP 9, podprogramy 25
Vstup a výstup Pro jednoduchou komunikaci s prostředím je možné připojit tzv. brány (porty). Ovládá je procesor pomocí instrukcí vstupu a výstupu IN a OUT Jsou připojené na sběrnici Jejích výstupy ovládají nebo monitorují vnější prostředí Příklad možných instrukcí pro ovládaní bran Instrukce Význam IN A Reg brána OUT A Brána Reg IN OUT Adresy těchto bran (registrů) tvoří nezávislý datový prostor oddělený od pamětí pro programy a data. DB Hana Kubátová BI-SAP 9, podprogramy 26
V/V jednotky a jejich řízení vstupní a výstupní zařízení připojení periferních zařízení přes sběrnice zařízení mapovaná do paměti zařízení řízená instrukcemi DMA Hana Kubátová BI-SAP 9, podprogramy 27
V/V zařízení mapovaná do paměti Část adresového prostoru není využívaná jako paměť. Tyto adresy se používají jako čísla zařízení V/ V. Tomu musí odpovídat dekodéry adres. Pro výstup se používají instrukce zápis do paměti. Pro vstup se používají instrukce čtení z paměti. Hana Kubátová BI-SAP 9, podprogramy 28
V/V zařízení řízená instrukcemi Zařízení V/V mají vlastní adresový prostor. Existují speciální instrukce pro vstup a výstup. Možnosti: 1. Instrukce trvá, dokud není provedena příslušná operace (popř. její nezbytná část). 2. Existuje instrukce, kterou lze zjistit stav zařízení. Programově (s využitím dotazů na stav zařízení) se zajišťuje potřebné čekání. 3. Po provedení instrukce pro vstup nebo výstup pracuje zařízení autonomně. Procesor může v té době provádět jiné instrukce. Ukončení činnosti periferního zařízení je signalizováno přerušením. Hana Kubátová BI-SAP 9, podprogramy 29
SBĚRNICE BUS soubor vodičů a pravidel určený k propojení jednotek počítače styk = propojení = rozhraní [interface] podsběrnice obvykle též nazývané sběrnice: adresová [Address Bus] datová [Data Bus] řidící... řidící a stavové signály [Control Bus] adresy a data mohou být multiplexovány (časově): stačí jedina sběrnice pro adresy i data je třeba řidící signál adresa / data Hana Kubátová BI-SAP 9, podprogramy 30
Typy výstupů, připojení ke sběrnici Standardní výstup totem-pole Výstupy nelze spojovat!!! Otevřený kolektor open collector (OC) Montážní součin wired-and gate (TTL) Třístavový výstup tri-state output Připojení ke sběrnici, 3 stavy: H, L, Z vysoká impedance Hana Kubátová BI-SAP 9, podprogramy 31
Operace na SBĚRNICÍCH operace (typické): čtení [read] zápis [write] čtení změna zápis [read modify write] zápis čtení [read after write] přenos bloku [block data transfer] broadcast (oběžník?): příkaz všem jednotkám broadcall (?): vyžádané informace od všech jednotek (popř. od určených jednotek) Hana Kubátová BI-SAP 9, podprogramy 32
Typy sběrnic sběrnice: paralelní sériové používají se zprav. pro systémové účely jako záložní (např. při poruše paralelní sběrnice) Hana Kubátová BI-SAP 9, podprogramy 33
Typy sběrnic. jednosměrně řízené řídící jednotka nečeká na potvrzení příkazu k provedení operace obousměrně řízené synchronní -řízená hodinami (vysílanými po příslušném vodiči). (jednosměrné řízení) pseudosynchronní (obousměrné řízení) hodiny + čekání speciální signál(y) např. WAIT asynchronní (obousměrné řízení) Hana Kubátová BI-SAP 9, podprogramy 34
asynchronní sběrnice Handshake korespondenčni režim.. hand shake Operace Příkaz (žádost request RQ) Potvrzení (acknowledgement ACK) Hana Kubátová BI-SAP 9, podprogramy 35
Přidělování sběrnic centralizované... přidělovač sběrnice (funkci přidělovače někdy zastává procesor) cyklické výzvy přidělovač nabízí postupně a adresně sběrnici jednotlivým jednotkám paralelní = nezávislé. žádosti a potvrzení sériové kombinované paralelní a sériové distribuované... bez přidělovače round-robin postupné cyklické přidělování prioritní přidělování na základě priorit Hana Kubátová BI-SAP 9, podprogramy 36