Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Struktura a architektura počítačů (BI-SAP) 7 doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních technologii ČVUT v Praze letní semestr 2010-11
BI-SAP 7-II: osnova Strojový kód Jazyk symbolických instrukcí asembler Základní popis procesoru AVR podle Ing. Skrbka 2
Architektura souboru instrukcí, ISA - Instruction Set Architecture Vysoká Architektura počítače ISA Aplikace Úroveň abstrakce Nízká Operační systém Překladač Architektura souboru instrukcí Architektura procesoru I/O Systém Číslicový návrh VLSI obvodový návrh 3
Instrukční soubor kritický interface software instruction set hardware 4
Vytváření programů ve strojovém kódu Program v JSI Vstupní data assembler Program Program ve strojovém kódu Výstupní data 5
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 6
ISA: Co musí být definováno? Čtení instrukce Dekódování instrukce Načtení operandů Provedení instrukce Uložení výsledku přerušení? Formát a kódování instrukcí Jak se instrukce dekóduje? Umístění operandů a výsledku Kolik explicitních operandů je v instrukci pro ALU? Jak jsou operandy umístěny v paměti nebo jinde? Který operand může být v paměti? Typy dat a velikosti operandů Operace v ISA Které jsou podporovány? Výběr další instrukce Skoky, větvení programu, volání podprogramů fetch-decode-execute je implicitní! 7
Jednoduchý procesor von Neumannova typu CPU ALU Řadič Registry Paměť DB AB CB D7:D0 A7:A0 Sběrnice CPU musí obsahovat aritmeticko-logickou jednotku (ALU), řadič a registry pro dočasné uchování dat, instrukcí a pomocných proměnných CPU pro běh programu prochází základním cyklem počítače: 1. Instruction Fetch IF načtení instrukce 2. Instruction Decode ID dekódování instrukce 3. Operand Fetch OF načtení operandu(ů) 4. Instruction Execution IE vykonání instrukce 5. Write Back WB zapsání výsledku IF ID OF IE WB Interrupt? 8
Jaké instrukce??? bitový procesor Registry kolik, jakých, jak přístupných, PC, IR, PSW, adresace?, datové? Paměť?? 16 bitů adresuje 64 Kslov... slovo?? příznaky Z (Zero), S (Sign), C (Carry), O (Overflow) a další? instrukce v JSI: aritmetické ADD, SUB, AND, OR, XOR, NEG, NOT, MOV, CMP Přímý operand, nepřímý operand řídící JMP, JO, JNO, JS, JNS, JC, JNC, JZ, JNZ, JE, JNE, JG, JL, JGE, JLE, JA, JB, JAE, JBE uložení do paměti ST HALT, OUT, IND reprezentace hodnot přímý kód, doplňkový kód, nezáporná čísla syntaxe jazyka symbolických instrukcí 9
Návrh instrukcí procesoru jaké jak kódované jak dlouhé jaká adresace operandů kolik registrů 10
Popis AVR, autor M. Skrbek Architektura mikropočítače AVR Kódování instrukcí Symbolické vyjádření instrukce Symbolické vyjádření adresy Technologie tvorby programu v asembleru 11
Literatura [1] [2] [3] [4] [5] Váňa V.: Mikrokontroléry ATMEL AVR - assembler. Nakladatelství BEN technická literatura, 1. vydání, Praha 2003, ISBN 80-7300-093-8, Váňa V: Mikrokontroléry ATMEL AVR - popis procesorů a instrukční soubor. Nakladatelství BEN - technická literatura, 1. vydání, Praha 2003, ISBN 80-7300-083-0, www.ben.cz. 8-bit AVR Instruction Set, Technická literatura ATMEL Corporation, 2002. http://www.atmel.com 8-bit AVR Microcontroller width 16K Bytes In-System Programmable Flash ATmega169. Datasheet. Technická literatura ATMEL Corporation, 2003. http://www.atmel.com Data-File conversion to Intel HEX-32 format. Technická literatura Intel Corporation. http://www.intel.com 12
Architektura mikropočítače AVR Paměť programu (16kB) Řadič Registry Paměť Dat (1kB) ALU Vstup/výstup 13
Registry 32 8bitů 8bitů X(16bitů) R0 R1 R14 R15 SREG R16 R17 R24 R25 SP (16bitů) PC (16bitů) R26 R27 Y(16bitů) R28 R29 Z(16bitů) R30 R31 14
Paměť programu Data (8 bitů, zápis) Adresa Paměť programu (16kB) Zapiš Čti Instrukce (16 bitů, čtení) Data (8 bitů, čtení) 15
Paměť dat Adresa Paměť dat (1kB) Data (8 bitů, zápis) Zapiš Čti Data (8 bitů, čtení) 16
Činnost řadiče 1. Načti instrukci z adresy v PC 2. Dekóduj instrukci 3. Získej operandy 4. Vykonej instrukci 5. Ulož výsledek 6. Urči adresu následující instrukce 7. Pokračuj bodem 1 17
Příklad kódování instrukce Symbolický zápis instrukce mov r1, r2 Zdrojový operand Cílový operand Strojový kód instrukce mov, kterou načítá a dekóduje mikropočítač Cílový operand 0 0 1 0 1 1 r d d d d d r r r r Jméno instrukce Příklad Operační znak mov r1, r2 : 0x2C12 Zdrojový operand 18
Příklad programu v symbolickém vyjádření a ve strojovém kódu Tuto transformaci provádí program zvaný asembler Adresa v paměti programu 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 Poznámka: mlčky předpokládáme, že strojový kód umísťujeme od adresy 0x0000. Obsah paměti programu Toto je mikropočítače m načítáno a dekódováno jako instrukce 19
Technologie tvorby programu v asembleru Zdrojový soubor *.asm Překladač (asembler) *.bin, *.hex Binární soubor (případně HEX soubor) Toto se nahrává do paměti programu mikropočítače 20
LABORATOŘ - Mikropočítač AVR Produkt firmy Atmel, které mají na jednom čipu integrován procesor paměť programu paměť dat rozsáhlou sadu periferíí (vstupně-výstupní brány, čítače, časovače, převodníky, komunikační rozhraní apod.) 21
AVR Butterfly LCD displej - 6 alfanumerických znaků (po 14 segmentech) Joystick - 5 směrů (nahoru, dolů, doleva, doprava, kolmý stisk (enter)) Čidlo teploty Čidlo osvětlení Krystalový oscilátor 32,768 khz (pro měření času) Elektroakustický měnič (piezo) Napájení z baterie 22
ATMEGA169 Univerzální registry - 32 osmibitových registrů (R0 až R31) Posledních šest z nich tvoří po dvojicích tři indexregistry (Slouží k adresování přístupu do paměti) Speciální registry Programový čítač - 16bitový (Program Counter - PC) Ukazatel na vrchol zásobníku - 16bitový (Stack Pointer - SP) Registr příznaků - 8bitový (Status Register - SREG) Paměť dat: 1 KB, organizace 1K x 8 bitů, čtení i zápis Paměť programu: 16KB, organizace 8K x 16 bitů, pouze čtení (zápis speciálním způsobem) Periferie např. řadič displeje (LCD) Vnitřní zdroj hodinového kmitočtu 23