Mikrokontroléry Úvod Popis a definice mikrokontroléru Typy architektur v mikroprocesorové technice von Neumann, Harvardská, CISC, RISC, VLIW,... Obecná bloková struktura mikrokontroléru Aritmeticko/logicka jednotka, centralní řídicí jednotka, paměti, vstupně/výstupní obvody 1
Úvod Popis a použití mikrokontroléru Typy architektur v mikroprocesorove technice von Neumann, Harvardská, CISC, RISC, VLIW,... Obecná bloková struktura mikrokontroléru Aritmeticko/logicka jednotka, centralní řídicí jednotka, paměti, vstupně/výstupní obvody Popis a použití mikrokontroléru Definice: Mikroprocesor (MPU - Microprocessor Unit) je centrální řídicí jednotka (CPU - Central Processing Unit) realizovaná na samostatném čipu. Doplněním mikroprocesoru o podpůrné obvody, tj. vstupně/vystupní periferie a pamet' (pro program i data) vznikne mikropočítač. 2
Popis a použití mikrokontroléru Definice: Mikrokontrolér (MCU - Microcomputer Unit) vznikne sdružením všech částí mikropočítače (řídicí jednotka, paměti RAM, ROM, vstupně/výstupní, čítač/časovač, a jiné periferie) na čipp Trocha historie První mikroprocesor vyvinula firma Intel v roce 1971. 1 Dostal označení č 4004, které pocházelo z jeho 4- bitové architektury» 4bitova CPU, 16pinove pouzdro, hodinový signál 740kHz,» Harvardská architektura (tj. oddělená pamět' pro program a data),» 8 bitu instrukce, 4 bity data,» Instrukční sada: 46 instrukcí»původně určen pro kalkulačky. 3
Trocha historie První mikrokontrolér vytvořila firma Texas Instruments pod oznacenm TMS1000 v roce1974» 4bitová CPU, 28pinove pouzdro, hodinový signál 400kHz,» Harvardská architektura 32 B RAM a 1kB ROM,» periferie - oscilátor, 4 vstupní a11 výstupních bran, 8bitový paralelní port Historie přehled 1971 - Intel 4004 - první mikroprocesor - 4bitový 1972 - Intel 8008-8bitový mikroprocesor 1974 - Intel 8080-8bitový mikroprocesor, který se stal základem prvních 8bitových osobních počítačů 1975 - MOS Technology 6502-8bitový mikroprocesor, montovaný do Apple II, Commodore 64 a Atari 1975 - Motorola 6800 - první procesor firmy Motorola 1975 - AMD nastupuje na trh s řadou Am2900 1976 - TI TMS 9900-16bitový mikroprocesor 1976 - Zilog Z80-8bitový mikroprocesor, s rozšířenou instrukční sadou Intel 8080, frekvence až 10 MHz 1978 - Intel 8086-16bitový mikroprocesor, první z architektury x86 1978 - Intel 8088-16bitový mikroprocesor s 8bitovou sběrnicí, který byl použit v prvním IBM PC v roce 1981 4
Historie přehled 1979 - Motorola 68000-32/16bitový mikroprocesor 1979 - Zilog Z8000-16bitový mikroprocesor 1980 - IBM 801-24bitový experimentální procesor s revoluční RISC architekturou dosahující vynikajícího výkonu 1980 - Intel 8051-8bitový mikroprocesor se základní sadou periferií pro emebedded systémy 1982 - Intel 80286-16bitový mikroprocesor 1983 - TMS32010 - první DSP firmy Texas Instruments 1985 - Intel 80386-32bitový mikroprocesor (měl 275 000 tranzistorů) 1986 - Acorn ARM - 32bitový RISC mikroprocesor, z Advanced RISC Machine, původně Acorn RISC Machine, použit i v domácích počítačích 1989 - Intel 80486-32bitový mikroprocesor s integrovaným matematickým koprocesorem 1989 - Sun SPARC - 32bitový RISC mikroprocesor, z Scalable (původně Sun Processor ARChitecture) Historie přehled 1992 - DEC Alpha - 64bitový RISC mikroprocesor 1992 - Siemens 80C166-16bitový mikroprocesor pro průmyslové embedded systémy s bohatou sadou periferií 1993 - Intel Pentium - 32bitový mikroprocesor nové generace (3,3 milionu tranzistorů) 1995 - Intel Pentium Pro - 32bitový mikroprocesor nové generace pro servery a pracovní stanice (5,5 milionu tranzistorů) 1995 - Sun UltraSPARC - 64bitový RISC mikroprocesor 1997 - Intel Pentium II - 32bitový mikroprocesor nové generace s novou sadou instrukcí MMX (7,5 milionu tranzistorů) 1997 - Sun picojava - mikroprocesor pro zpracování Java bytekódu 1999 - Intel Celeron - 32bitový mikroprocesor odvozený původně od Intel Pentium II pro nejlevnější PC 1999 - Intel Pentium III - 32bitový mikroprocesor nové generace s novou sadou instrukcí SIMD (9,5 milionu tranzistorů) 5
Historie přehled 2000 - Intel Pentium 4-32bitový mikroprocesor s řadou technologií orientovaných na dosažení vysoké frekvence 2001 - Intel Itanium - 64bitový mikroprocesor nové generace pro servery 2003 - AMD Athlon 64-64bitový mikroprocesor nové generace pro desktopy s instrukční sadou AMD64, zpětně kompatibilní s x86 2006 - Intel Core - 64bitová architektura, na které jsou postaveny procesory Core Duo, Core 2 Duo, Core Solo, Core 2 Quad 2007 - AMD uvádí novou řadu procesorů Phenom 2008 - Intel Core i7 - nová řada CPU od Intelu Úvod Popis a definice mikrokontroléru Typy architektur v mikroprocesorové technice von Neumann, Harvardská, CISC, RISC, VLIW,... Obecná bloková struktura mikrokontroléru Aritmeticko/logicka jednotka, centralní řídicí jednotka, paměti, vstupně/výstupní obvody 6
Základní struktura ALU - taktovací kmitočet bývá jednotky až stovky MHz, šířka slova procesoru 4 až 64 bitů, operační paměť - paměť typu RAM, velikost od jednotek byte po desítky kb, paměť programu - paměť typu ROM, EPROM, EEPROM nebo flash obsahující program a data, velikost řádově desítky až stovky kb, oscilátor - RC nebo řízený krystalem, vstupně/výstupní rozhraní - takzvané porty. Počítač může mít architekturu typu von Neumann nebo harvardskou. Obecné schéma Mikroprocesoru Datová sběrnice systému Vnitřní datová sběrnice Vyrovnávací registr Aritmeticko - logická jednotka Řídící jednotka Datové registry Adresové registry Přizpůsobovací obvody Řídící signály Synchronizační signály Adresová sběrnice systému 7
Dělení mikropočítačů podle architektury Dvě základní koncepce: Von Neumannova Harvardská Tyto dvě koncepce vznikly jako výsledek snažení se Princetonské a Harvardské university navrhnout architekturu, která by se nejvíce hodila pro potřeby americké armády Poznámka: Dělení na Harvardskou a Von Neumannovu architekturu je však při dnešním stupni integrace již poněkud akademické. U moderních architektur se často uživateli adresový prostor jeví navenek jako lineární (Von Neumannovský), zatímco fyzicky jsou paměti k jádru připojeny pomocí několika nezávislých sběrnic (např. jedna sběrnice pro FLASH/ROM (paměť programu), druhá pro uživatelskou vnitřní RAM a zásobník, třetí pro připojení integrovaných paměťově mapovaných periferií, další pro připojení externí RAM). Von Neumannova architektura Popisuje základní bloky systému mikropočítače Základní myšlenka spočívá v použití pouze jedné paměti pro data i program Von Neumannovu architekturu využívají počítače typux86(pc) 8
Von Neumannova architektura Paměť ALU Řídící jednotka Vstupně-výstupní obvody Von Neumannova architektura Číslicový počítač se skládá z následujících funkčních jednotek: paměť (vnitřní, operační paměť), řadič, aritmetická a logická jednotka (ALJ), vstupní a výstupní jednotky. 2) Struktura číslicového počítače není závislá na typu řešené úlohy, je univerzální, číslicový počítač se programuje obsahem operační paměti. 3) Instrukce programu i operandy, s nimiž program pracuje, jsou uloženy v téže paměti (operační paměti), jde-li o instrukci či o operand rozpoznává počítač z kontextu. 9
Pravidla Program je vykonáván sekvenčně, tzn. tak jak jdou instrukce za sebou Změnu pořadí vykonávání instrukcí lze provést pouze podmíněným či nepodmíněným skokem nebo voláním podprogramu p Přednost v podobě universálnosti vede k neefektivnosti zpracování problému Pravidla Neexistuje princip paralelismu Výhodnější a přehlednější pro tvorbu aplikací Nevýhodné pro optimalizaci výkonu vždy je zatížena jen jedna část Vnitřní architektura je nezávislá na řešení úloze. Veškeré změny jsou řešeny programově tzn. počítač je řízen obsahem paměti. 10
Harvardská architektura Chronologicky navazuje na architekturu von Neumnannovu a odstraňuje ň některé její jí nedostatky tk Zásadní rozdíl je v oddělení paměti dat a programu Program nemůže přepsat sám sebe Využití pamětí realizovaných jinými technologiemi (EEPROM, Flash, FRAM, DRAM) Dvě sběrnice (adresová a datová) umožňuje současný přístup k instrukcím i datům Sekvenční vykonávání instrukcí je zachováno Harvardská architektura Paměť programu Paměť dat ALU Řídící jednotka Vstupně-výstupní obvody 11
Koncepce oddělené paměti Harvardské architektury Paměť programu je uložen v paměti FLASH, šířka slova 16bitů Paměť dat (RAM) je typu SRAM. 32B zabírají pracovní 8bitové registry, 64 SFR a zbytek do 8kB je určen pro všeobecné použití. Mikrokontroler integruje také 512B paměti EEPROM V čem spočívá činnost mikropočítače? Adresa kódu první instrukce je dána HW ČP. Výběr je vyvolán aktivací RESET! Od tohoto okamžiku procesor (ČP) ví, co má dělat. Činnost ČP spočívá v neustálém opakování dvou pracovních cyklů: - ČTENÍ INSTRUKCE Z OP, -DEKÓDOVÁNÍ A PROVEDENÍ INSTRUKCE. V této činnosti má výhradní postavení registr PROGRAMOVÝ ČÍTAČ (PC) 12
Rozdělení CISC/RISC Dělení z pohledu instrukční sady CISC (Complex Instruction Set Computer) RISC (Reduced Instruction Set Computer) VLIW (Very Long Instruction Word) RISC RISC (Reduced Instruction Set Computer) počítač č s redukovanou instrukční sadou Shrnutí typických rysů RISC procesorů: redukovaná sada instrukcí obsahuje hlavně jednoduché instrukce, délka provádění jedné instrukce je vždy jeden cyklus (tj. délka v bitech všech instrukcí je stejná), mikroinstrukce kce jsou hardwarově aro ě implementovány na procesoru, čímž je velmi výrazně zvýšena rychlost jejich provádění, registry jsou pouze víceúčelové (nezáleží, který z nich instrukce využije, což zjednodušuje návrh překladačů), využívají řetězení instrukcí (pipelining). 13
CISC CISC (Complex Instruction Set Computer) procesor s velkou sadou instrukcí (řádově stovky) a relativně malým počtem registrů (jejich počet obvykle nepřesahuje 30). Procesory CISC mají různě dlouhé strojové instrukce, jejichž vykonání trvá různě dlouhou dobu. Označení CISC bylo zavedeno jako protiklad až poté, co se prosadily procesory RISC, které mají instrukční sadu naopak maximálně redukovanou. CISC versus RISC široká instrukční sada procesorů CISC usnadňuje jejich programování, protože není některé operace nutné rozepisovat (například násobení) ve strojovém kódu (nebo v jazyce symbolických adres) se dnes programuje jen minimálně. Složitost CISC procesorů vede k problémům při výrobě (velká spotřeba materiálu, větší pravděpodobnost vady, komplikovaný návrh, problémy s vysokými frekvencemi, pipelining, cache atd). Typickými zástupci koncepce CISC jsou procesory rodiny Motorola 68000 a procesory postavené na architektuře Intel x86. 14
Procesory VLIW Procesory VLIV (Very Long Instruction Word Velmi dlouhé instrukční slovo) umožňují efektivnější vykonávání programu, protože je u nich podporováno hardwarově paralelní zpracování instrukcí Paralelismus je realizován větším počtem funkčních jednotek Podstata paralelního zpracování: během násobení dvou čísel je možné operandy sčítat a z paměti načíst další hodnoty ARM Advanced RISC Machine Je 32bitová mikroprocesorová architektura typu RISC vyvinutá firmou ARM Limited Energeticky úsporné vlastnosti (používány hlavně v mobilním odvětví spotřební elektroniky) První mikroprocesor s architekturou ARM byl navržen firmou ARM Limited v roce 1984. Dnes tvoří rodina procesorů ARM 75 % všech 32bitových RISC procesorů ve vestavěných zařízeních, což z ní dělá nejpoužívanější architekturu na světě. 15
ARM - charakteristika 32bitová vnitřní architektura 32bitová datová sběrnice s propustností tí 32 MB/s 26bitová adresová sběrnice (dostupný lineární adresní prostor 64 MiB) 25 vnitřních 32bitových registrů přístup do paměti pouze instrukcemi Load/Store částečné překrývání vnitřních registrů nejdelší doba reakce na přerušení 3 milisekundy hodinová frekvence 8 MHz možnost podmíněného vykonání instrukcí průměrná rychlost vykonání instrukcí 3 až 4 MIPS možnost připojení standardních pamětí DRAM jednoduchý a výkonný instrukční soubor Architektura procesoru ARM Procesor ARM obsahuje 44 základních instrukcí s jednotnou šířkou 32 bitů. V jednom taktu jsou vykonány pouze instrukce pracující salu, s registry nebo s přímými operandy. Procesor pracuje ve čtyřech základních režimech: uživatelský režim USR privilegovaný režim supervizora SUP privilegovaný ilego režim přerušení IRQ privilegovaný režim rychlého přerušení FIQ V procesoru je obsaženo 25 částečně se překrývajících 32bitových registrů (15 registrů je univerzálních a zbývajících 10 má speciální funkce), z toho 16 registrů je v každém režimu činnosti programově přístupných. 16
Periferie mikrokontrolerů řadič přerušení, časovače, č čítače, watchdog timer, řadič displeje, řadič klávesnice, programovatelné hradlové pole, paralelní porty (až desítky pinů), sériové porty (asynchronní, synchronní) porty komunikačních sběrnic (CAN, Ethernet) A/D převodníky Watchdog timer Watchdog nebo Watchdog timer, zkráceně WDT resetuje systém při jeho zaseknutí (deadlocku). Program (většinou v hlavní smyčce) periodicky signalizuje watchdogu svůj chod. Pokud systém určitý čas nesignalizuje chod (typicky milisekundy až sekundy), pak watchdog způsobí reset systému. Složitější watchdogy mohou navíc ještě zaznamenávat na nevolatilní (nezávislé na napájení tj. ukládání do energeticky nezávislé paměti) médium ladící informace (např. časy kdy došlo k zresetování systému a jaký byl obsah registrů). Watchdog může být realizován pomocí x-bitového čítače Účelem a současně důvodem existence watchdogu je přivést systém prostřednictvím resetu ze zaseknutého stavu zpět k normální funkci. Bez watchdogu by musel být čip resetován manuálně. 17
Přerušení Přerušení je způsobeno vnější událostí, která nastává asynchronně vzhledem k běhu HLAVNÍHO PROGRAMU Účelem přerušení je přimět procesor, aby na tuto vnější událost určitým způsobem reagoval. Procesor neumí nic jiného, než postupně vykonávat instrukce programu to je i jeho jedinou možnou reakcí. REAKCÍ procesoru na vnější přerušení je tedy dočasné pozastavení vykonávání instrukcí hlavního programu a spuštění programu jiného obslužného podprogramu přerušení vše probíhá formou volání podprogramu. Reakce procesoru na přerušení Jakou část své činnosti procesor po přijetí žádosti o přerušení dokončí??? Protože následuje programová obsluha přerušení, musí se dokončit instrukce přerušovací vstup je testován před koncem každé z prováděných instrukcí!!! Co by procesor dělal po dokončení instrukce, kdyby nepřišla žádost o přerušení??? 18
Co tedy udělá procesor po dokončení instrukce po přerušení??? Předpokládáme jediný přerušovací vstup!!! Varianta 1 bez účasti vnějšího hardware, působí ů pouze HW řadiče!!! Začne se provádět instrukce CALL APPP, kde APPP je vstupní adresa obslužného podprogramu přerušení do STACKU je uchována návratová adresa = adresa následující instrukce hlavního programu. Kromě toho může procesor učinit nějakou akci vedoucí k uchování stavu (registry, příznaky) Co tedy udělá procesor po dokončení instrukce po přerušení??? Předpokládáme jediný přerušovací vstup!!! Varianta 2 súčastí vnějšího hardware!!! MP generuje signál INTA/ (časově odpovídá signálu MEMR/ je to obdoba cyklu FETCH), ale adresová sběrnice je pasivní, INTA/ uvolňuje na datovou sběrnici informaci z vnější logiky. Může to být kód instrukce CALL APPP, kód jakékoliv jiné instrukce, ale většinou to je alespoň část adresy APPP (nebo zkrácené volání RST n). Do STACKU je uchována návratová adresa = adresa následující instrukce hlavního programu. Kromě toho může procesor učinit nějakou akci vedoucí k uchování stavu (registry, příznaky). 19
Programové ovládání přerušovacího systému, možnost zákazu přerušení Přerušení lze programově zakázat (instrukce typu DisableInterrupt) aopět povolit (instrukce typu EnableInterrupt) v těch úsecích programu, které musí proběhnout jako celek (např. při sekvenčním řízení). Přerušení je vždy zakázáno hardwarem (nutno napřed programově inicializovat přerušovací systém, přerušení povoluje až uživatelský program): - po RESETU, - po přijetí přerušení. Specifika hladinových a dynamických vstupů žádostí o přerušení (s ohledem na testování 1x během instrukce a na zdroj vstupního signálu). Prioritní přerušovací systém V1 jeden vstup, reaguje jen HW MP nutno řešit softwarově za podpory vnějšího hardware. V2 jeden vstup, reaguje i vnější HW možno řešit vnějším HW například podle priority přerušení je procesoru vnucována příslušná APPP nebo její část. V3 více vstupů, reaguje i vnější HW p g j j řešeno vnitřním HW procesoru, často v kombinaci s vnějším HW. 20
Maskování přerušení Individuální maskování jednotlivých (prioritních) úrovní. Možnost programového čtení stavu přerušovacích vstupů ještě před maskou. Nemaskovatelné přerušení nejvyšší priorita, vždy povoleno (ošetření výpadku napájení) speciální instrukce návratu (zachovává informaci o stavu přerušovacího systému před tímto přerušením). Adresování V/V zařízení 1. Adresa je součástí či externím parametrem V/V instrukce. 2. Každý bit adresy vybírá právě ě jedno V/V zařízení í lineární adresace. NEBO 3. Adresa je plně dekódována (n-bitů, výběr jednoho z 2 n zařízení adresace s dekódováním. NEBO 4. Kombinace způsobů 2a3 3. 21
Kvaziobousměrný V/V Realizace V/V bran 8051 22
Násobky a užívané předpony V prosinci 1998 proto IEC vytvořila dodatek k normě IEC 60027-2(v Česku převzatá jako ČSN IEC 60027-2), 2) ve kterém zavedla pro počítačové jednotky nový systém označování násobků. V tomto systému bylo pro původní velké kilo = 1024 B navrženo označení kibibyte a značka KiB, zatímco jednotka kilobyte (se značkou kb) označuje 1000 B, tak jak je obvyklé v soustavě SI. Binární násobky Binární násobky Jednotka Značka Velikost v B (byte) Mocnina Kibibyte KiB 1 024 2 10 Mebibyte MiB 1 048 576 2 20 Gibibyte GiB 1 073 741 824 2 30 Tebibyte TiB 1 099 511 627 776 2 40 Pebibyte PiB 1 125 899 906 842 624 2 50 Exbibyte EiB 1 152 921 504 606 846 976 2 60 Zebibyte ZiB 1 180 591 620 717 411 303 424 2 70 Yobibyte YiB 1 208 925 819 614 629 174 706 176 2 80 23
Přehled násobných jednotek Násobky a užívané předpony Jednotka Značka B kb KiB MB MiB GB GiB TB TiB Kilobyte kb 1000 1 ~0,9766 Kibibyte KiB 1024 1,024 1 Megabyte MB 1 000 000 1000 ~976,6 1 ~0,9537 Mebibyte MiB 1 048 576 ~1048,6 1024 1,049 1 Gigabyte GB 10 9 1 000 000 976 562,5 1000 953,7 1 ~0,9313 Gibibyte GiB ~1,074 10 9 ~1 073 742 1 048 576 ~1073,7 1024 1,074 1 Terabyte TB 10 12 10 9 ~0,9766 10 9 1 000 000 ~953 674,3 1000 931,3 1 ~0,9095 Tebibyte TiB ~1,1 10 12 ~1,1 10 9 ~1,074 10 9 ~1 099 512 1 048 576 ~1099,5 1024 ~1,1 1 24