MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY Systémová struktura počítače Řízení běhu programu České vysoké učení technické Fakulta elektrotechnická A1B14MIS Mikroprocesory pro výkonové systémy 05 Ver.1.20 J. Zděnek, 20131
Požadované vlastnosti počítače Požadované vlastnosti počítače Required computer features Řízení toku programu synchronní akce asynchronní akce (řízení událostmi) Přesun proměnných Zpracování proměnných Funkce vstupu/výstupu Pomocné řídicí funkce Program flow control Synchronous actions Asynchronous actions (event driven) Variable transport Variable processing Input/Output functions Auxiliary control functions Zabezpečení běhu Konzistence dat Ochrana proti kopírování Další Operation security Data consistency Reverse engineering protection Others A1B14MIS Mikroprocesory pro výkonové systémy 05 2
Architektura typu von Neumann A1B14MIS Mikroprocesory pro výkonové systémy 05 3
Architektura typu Harvard Typ.různá šířka A1B14MIS Mikroprocesory pro výkonové systémy 05 4
Architektura typu Harvard další modifikace Paralelní čtení/zápis dat Čtení konstant z Flash A1B14MIS Mikroprocesory pro výkonové systémy 05 5
Architektura von Neumann versus Harvard von Neumann Harvard Jednodušší struktura Sdílená sběrnice nelze paralelně transportovat instrukce a data Společný paměťový prostor instrukcí a dat. Možno pružně rozdělit paměť pro instrukce data a zásobník (pokud vše v RAM) Prostor pro zásobník (Stack) bývá dostatečný. Složitější struktura Oddělené sběrnice možnost paralelního transportu instrukce a dat (rychlost větší) Oddělené prostory instrukcí a dat. Paměť programu (instrukcí) často širší slovo proti paměti dat kompaktnější jednocyklové instrukční kódy. Zásobník často mimo paměť dat (rozdílná šířka paměti programu a dat). Hloubka zásobníku omezená (pak nutno přemístit do paměti dat a to pomalé) A1B14MIS Mikroprocesory pro výkonové systémy 05 6
Systémová struktura počítače Kontrolní seznam 1 Check list No.1 Počítač sériový stroj CPU - Procesor Paměť programu Paměť dat Vstup / výstup Společná sběrnice Hodiny (synchronizace) XTAL krystal Nulování Periferie Vnější paměť Master sběrnice Computer sequence machine CPU Central Processing Unit Program memory Data memory Input / output Bus Clock XTAL crystal Reset Peripherals External memory Bus master A1B14MIS Mikroprocesory pro výkonové systémy 05 7
Počítač sériový stroj Kontrolní seznam 2 Check list No.2 Počítač sériový stroj FSA - konečný automat FSM konečný automat Sychronní automat Stav automatu Podmínky přechodu Instrukce programu Proměnné programu Zásobník programu BIOS Operační systém Aplikační program Zaváděcí program Computer sequence machine FSA Finite State Automaton FSM Finite State Machine Synchronous FSA FSA state Transition conditions Program instructions Program variables Program stack BIOS (Basic I/O System) Operating system Users application Bootstrap A1B14MIS Mikroprocesory pro výkonové systémy 05 8
Počítač sekvenční stroj A1B14MIS Mikroprocesory pro výkonové systémy 05 9
Instrukční cyklus Kontrolní seznam 3 Check list No.3 Instrukční cyklus Čtení instrukce Vykonání instrukce Dekódování instrukce Čtení operandu Zpracování operandů Zápis výsledku Řídicí sběrnice (CB) Datová sběrnice (DB) Adresová sběrnice (AB) Sběrnicový cyklus Směr přenosu informace Instruction cycle Operational code (Opcode) fetch Instruction execution Instruction decode Operand read Operand processing Result write Control bus (CB) Data bus (DB) Address bus Bus cycle Information transfer direction A1B14MIS Mikroprocesory pro výkonové systémy 05 10
Vykonání instrukce A1B14MIS Mikroprocesory pro výkonové systémy 05 11
Rozdělení společné sběrnice A1B14MIS Mikroprocesory pro výkonové systémy 05 12
Komunikace mezi bloky Kontrolní seznam 4 Check list No.4 Komunikace mezi bloky CB, DB, AB Obousměrná sběrnice Jednosměrná sběrnice Pouze jeden bus master Směr čtení Směr zápis Adresa platná Data platná Dekodér adresy Pole paměťových jednotek čtení/zápis z/do paměti Block communication CB, DB, AB Bidirectional bus Unidirectiona bus One bus master only Direction READ Direction WRITE Address valid Data valid Address decoder Memory array Memory READ/WRITE A1B14MIS Mikroprocesory pro výkonové systémy 05 13
Činnost společné sběrnice (AB, DB, CB) A1B14MIS Mikroprocesory pro výkonové systémy 05 14
Kde číst následující instrukci Čítač instrukcí 1) Další instrukci čti vždy z adresy uložené v PC 2) Adresa v PC se mění automaticky, po čtení instrukce ukazuje na další instrukci 3) Adresa v PC se dá změnit vykonáním instrukce skoku, cílová adresa je součástí instrukce A1B14MIS Mikroprocesory pro výkonové systémy 05 15
Větvení programu (Jump, Branch) Realizace větvení programu A1B14MIS Mikroprocesory pro výkonové systémy 05 16
Dekompozice problému na dílčí části A1B14MIS Mikroprocesory pro výkonové systémy 05 17
Zde příklad v Javě A1B14MIS Mikroprocesory pro výkonové systémy 05 18
Požadavky pro volání procedury Návratová adresa A1B14MIS Mikroprocesory pro výkonové systémy 05 19
Princip volání procedury (Procedure Call) Zásobník (návratových adres) Ukazatel zásobníku A1B14MIS Mikroprocesory pro výkonové systémy 05 20
Synchronní akce volání procedury Kontrolní seznam 5 Check list No.5 Synchronní akce Čítač instrukcí - PC Ukazatel do paměti programu Postupné čtení Automatická inkrementace Vnucená adresa Zásobník Ukazatel zásobníku Ukazatel na vrchol zásobníku Vrchol zásobníku Vlož do zásobníku - PUSH Vyzvedni ze zásobníku - POP Synchronous actions Program Counter PC Pointer to program memory Sequential read Auto-increment Forced address Stack Stack Pointer Pointer to stack top TOS top of stack PUSH POP A1B14MIS Mikroprocesory pro výkonové systémy 05 21
Synchronní akce volání procedury - pokrač. Kontrolní seznam 6 Check list No.6 Synchronní akce - pokrač. Začátek programu Hlavní smyčka Volání procedury Návratová adresa Začátek procedury Tělo procedury Bod návratu (return) Vnořené volání Návěští (cílová adresa skoku) Skok (bez návratové adresy) Hloubka zásobníku Synchronous actions cont'd Program start point Main loop Procedure call Return address Procedure start Procedure body Return Nested calls Label (jump target address) Jump (no return address) Stack depth A1B14MIS Mikroprocesory pro výkonové systémy 05 22
Prostředky pro organizaci volání procedury A1B14MIS Mikroprocesory pro výkonové systémy 05 23
Sdílené prostředky (sdílí je procedury) A1B14MIS Mikroprocesory pro výkonové systémy 05 24
Princip volání procedury (synchronní) Volání procedury - souhrn akcí Volání procedury je vyvolané programem (synchronní) ne vnější událostí (vnější událost viz. přerušení) Stejným mechanismem se řídí i vnořené volání (procedura volá proceduru) Další instrukce se vždy čte z adresy právě uložené v čítači instrukcí (PC) Čti instrukci Call Ulož návratovou adresu (tj. obsah čítače instrukcí) do zásobníku Vlož do čítače instrukcí počáteční adresu procedury Ulož kontext do zásobníku Proveď tělo procedury Vyzvedni kontext Proveď instrukci Return Ta vyzvedne Návratovou adresu ze zásobníku do čítače instrukcí (PC) Pokračuj v programu za místem volání Call na pozadí tj. čti instrukci z adresy uložené v PC A1B14MIS Mikroprocesory pro výkonové systémy 05 25
Před čtením CALL 1 2 3 4 5 6 7 A1B14MIS Mikroprocesory pro výkonové systémy 05 26
Po čtení CALL 1 1 2 3 4 5 6 7 A1B14MIS Mikroprocesory pro výkonové systémy 05 27
Během provádění CALL 2 1 2 3 4 5 6 7 A1B14MIS Mikroprocesory pro výkonové systémy 05 28
Po provedení CALL 3 1 2 3 4 5 6 7 A1B14MIS Mikroprocesory pro výkonové systémy 05 29
Před čtením RETURN 4 1 2 3 4 5 6 7 A1B14MIS Mikroprocesory pro výkonové systémy 05 30
Po čtení RETURN 5 1 2 3 4 5 6 7 A1B14MIS Mikroprocesory pro výkonové systémy 05 31
Po čtení RETURN 7 6 1 2 3 4 5 6 7 A1B14MIS Mikroprocesory pro výkonové systémy 05 32
Princip volání procedury (synchronní) - souhrn Volání procedury - souhrn akcí Volání procedury je vyvolané programem (synchronní) ne vnější událostí (vnější událost viz. přerušení) Stejným mechanismem se řídí i vnořené volání (procedura volá proceduru) Další instrukce se vždy čte z adresy právě uložené v čítači instrukcí (PC) Čti instrukci Call Ulož návratovou adresu (tj. obsah čítače instrukcí) do zásobníku Vlož do čítače instrukcí počáteční adresu procedury Ulož kontext do zásobníku Proveď tělo procedury Vyzvedni kontext Proveď instrukci Return Ta vyzvedne Návratovou adresu ze zásobníku do čítače instrukcí (PC) Pokračuj v programu za místem volání Call na pozadí tj. čti instrukci z adresy uložené v PC A1B14MIS Mikroprocesory pro výkonové systémy 05 33
Asynchronní akce hardwareové (hw) volání procedury Žádosti o přerušení Řadič přerušení A1B14MIS Mikroprocesory pro výkonové systémy 05 34
Asynchronní akce hw volání procedury (ISR) Kontrolní seznam 7 Check list No.7 Asynchronní akce Systém přerušení Hardwarové volání procedury Předdefinovaná cílová adresa Vektor přerušení Tabulka vektorů přerušení Asynchronní žádost o přerušení Řadič přerušení Vstupy žádostí o přerušení Asynchronní událost Žádost o přerušení do CPU Potvrzení žádosti od CPU Asynchronous actions Interrupt system Hardware procedure call Predefined target address Interrupt vector Interrupt vector table Asynchronous interrupt request Interrupt controller Interrupt request inputs Interrupt event CPU interrupt request CPU interrupt acknowledge A1B14MIS Mikroprocesory pro výkonové systémy 05 35
Asynchronní akce hw volání procedury (ISR). Kontrolní seznam 8 Check list No.8 Asynchronní akce - pokrač. Instrukce je nepřerušitelná Reakční doba přerušení Priorita přerušení Statická priorita přerušení Dynamická priorita přerušení Programová priorita přerušení Typy přerušení Maskovatelné přerušení Nemaskovatelné Programové (ladící) přerušení Program řízený událostmi Asynchronous actions cont'd Instruction is uninterruptable Interrupt latency Interrupt priority Static interrupt priority Dynamic interrupt priority Software interrupt priority Interrupt types Maskable interrupt Nonmaskable interrupt Trap (software interrupt) Event driven program A1B14MIS Mikroprocesory pro výkonové systémy 05 36
Asynchronní akce hw volání procedury (ISR) Kontrolní seznam 9 Check list No.9 Asynchronní akce - pokrač. Obsluha přerušení - ISR Návratová adresa z přerušení Instrukce návratu z přerušení Asynchronní událost Pozadí programu Nejnižší hladina programu Sdílené zdroje Střadač Stavové slovo procesoru - PSW Příznakový registr Kontext programu (uložit/obnovit) Asynchronous actions cont'd Interrupt service routine - ISR Interrupt return address Interrupt return instruction Asynchronous event Background (level) Lowest program level Shared resources Accumulator Processor status word - PSW Flag register Program context (save/restore) A1B14MIS Mikroprocesory pro výkonové systémy 05 37
Asynchronní akce hw volání procedury (ISR) A1B14MIS Mikroprocesory pro výkonové systémy 05 38
Prostředky pro organizaci hw volání procedury (interrupt) A1B14MIS Mikroprocesory pro výkonové systémy 05 39
Sdílené prostředky (sdílí je ISR a přerušený program) A1B14MIS Mikroprocesory pro výkonové systémy 05 40
Žádost o obsluhu přerušení (hw volání procedury) A1B14MIS Mikroprocesory pro výkonové systémy 05 41
Žádost o obsluhu aktivní - 1 A1B14MIS Mikroprocesory pro výkonové systémy 05 42
Dokončení aktivní instrukce - 2 A1B14MIS Mikroprocesory pro výkonové systémy 05 43
Uložení (Push) návratové adresy do zásobníku (Stack) - 3 A1B14MIS Mikroprocesory pro výkonové systémy 05 44
Vyzvednutí adresy obslužného programu (ISR) - 4 A1B14MIS Mikroprocesory pro výkonové systémy 05 45
Spuštění obslužné procedury přerušení (ISR) - 5 A1B14MIS Mikroprocesory pro výkonové systémy 05 46
Uložení kontextu do zásobníku - 6 A1B14MIS Mikroprocesory pro výkonové systémy 05 47
Provedení těla obslužné procedury (ISR) - 7 A1B14MIS Mikroprocesory pro výkonové systémy 05 48
Obnovení kontextu (ze zásobníku) - 8 A1B14MIS Mikroprocesory pro výkonové systémy 05 49
Vyzvednutí návratové adresy (ze zásobníku) - 9 A1B14MIS Mikroprocesory pro výkonové systémy 05 50
Obnovení běhu přerušeného programu - 10 A1B14MIS Mikroprocesory pro výkonové systémy 05 51
Princip programu řízeného událostmi - souhrn Obsluha žádosti o přerušení souhrn akcí Dokonči právě prováděnou instrukci (instrukce je nepřerušitelná) Ulož (Push) návratovou adresu do zásobníku (tj. adresu, která je právě v čítači instrukcí (PC)) Vyzvedni adresu ISR (tj. podprogramu obsluhy přerušení) z tabulky vektorů přerušení Spusť ISR Vynuluj Interrupt Request Flag (závisí na typu procesoru) Ulož kontext do zásobníku Proveď tělo ISR (vlastní obsluhu žádosti o přerušení) Obnov původní kontext (vyzvedni ho ze zásobníku) Proveď instrukci Return Ta vyzvedne Návratovou adresu ze zásobníku do čítače instrukcí (PC) Pokračuj v programu na pozadí tj. čti instrukci z adresy uložené v PC A1B14MIS Mikroprocesory pro výkonové systémy 05 52
Event Driven Program Principle - summary Interrupt request service summary Finish current background instruction (instruction is uninterruptable) Push Return Address to stack (i.e. address in program counter) Get ISR Address from Interrupt Vector Table Start ISR routine Clear Interrupt Request Flag (depends on processor type) Save context to stack Run ISR body Restore context from stack Execute Return instruction Pop Return Address from stack (Pop it to program counter) Continue background program read next instruction from address in PC A1B14MIS Mikroprocesory pro výkonové systémy 05 53
Typy systémů přerušení Jednohladinové neprioritní Single level - non-priority interrupt system Vícehladinové prioritní Nemaskovatelné Softwareové Trap Maskovatelné Multi level priority interrupt system Nonmaskable Trap Maskable S pevnou hw prioritou S dynamicky volitelnou prioritou Fixed priority system Flexible priority system A1B14MIS Mikroprocesory pro výkonové systémy 05 54
Řadič přerušení princip (Interrupt Controller) Interrupt Enable Interrupt Flag Žádost o přerušeni Povolení maskovatelných žádostí A1B14MIS Mikroprocesory pro výkonové systémy 05 55
Programátorský model počítače Kontrolní seznam 13 Check list No.13 Programátorský model ALU aritmetická jednotka PC čítač instrukcí SP ukazatel zásobníku PSW stavové slovo procesoru Střadač Adresový prostor univ. registrů Adr. prostor paměti programu Adresový prostor paměti dat Adresový prostor zásobníku Adr. prostor vstupů/výstupů Umístění tabulky vekt.přerušení Programmer s model ALU arithmetic logic unit PC program counter SP stack pointer PSW processor státu word Accumulator Universal register addr. space Program memory addr. space Data memory addr. space Stack addr. space Input/output space Interrupt vector table space A1B14MIS Mikroprocesory pro výkonové systémy 05 56
Programátorský model počítače A1B14MIS Mikroprocesory pro výkonové systémy 05 57
PIC18F Family Modifikovaný Harvard A1B14MIS Mikroprocesory pro výkonové systémy 05 58
PIC18F Family Modifikovaný Harvard Program Memory Program Counter Hardware Stack Instruction Register Data Memory I/O Ports Accumulator WREG ALU Memory Mapped Input/Output Internal Peripherals A1B14MIS Mikroprocesory pro výkonové systémy 05 59
PIC18F Family Program Memory PROGRAM COUNTER PROGRAM MEMORY SP STACK POINTER Top of Stack -TOS 5 PC STACK 1 31 018AF4h 21 21 000000h 000008h 000018h RESET HIGH PRIORITY LOW PRIORITY RESET VECTOR HIGH PRIORITY INTERRUPT VECTOR LOW PRIORITY INTERRUPT VECTOR INTERRUPT VECTOR TABLE TOS REGISTERS TOSU 01h 8 TOSH 8Ah 8 TOSL F4h 8 TABLE READ IMPLEMENTED MEMORY (FLASH) 01FFF8h 01FFFFh CONFIG. WORDs PROGRAM MEMORY ADDRESS SPACE Read as 0 1FFFFFh 16 A1B14MIS Mikroprocesory pro výkonové systémy 05 60
PIC18F Family Data Memory A1B14MIS Mikroprocesory pro výkonové systémy 05 61
PIC18F Family Interrupt System High Priority Enable Priority System On Low Priority Enable Interrupt Priority Interrupt Enable Interrupt Flag (Request) A1B14MIS Mikroprocesory pro výkonové systémy 05 62
Struktura CPU versus operandy Kontrolní seznam 14 Check list No.14 Struktura CPU versus operandy Orientovaný na zásobník ALU, PSW (Příznakový reg) zásobník Střadačově orientovaný ALU, PSW (Příznakový reg) Paměť dat Registrově orientovaný ALU, PSW (Příznakový reg) univerzální registry (v CPU) Paměťově orientovaný ALU, PSW, paměť dat CPU systems versus operands Stack oriented ALU, PSW (Flags) stack Accumulator oriented ALU, PSW (Flags), Accumulator Data memory Register oriented ALU,PSW (Flags) Universal (scratchpad) registers Memory oriented ALU, PSW (Flags), data memory A1B14MIS Mikroprocesory pro výkonové systémy 05 63
Struktura CPU versus operandy - 1 STACK TOS ALU FLAGS STATUS STACK ORIENTED CPU A1B14MIS Mikroprocesory pro výkonové systémy 05 64
Struktura CPU versus operandy - 2 DATA MEMORY ALU FLAGS STATUS ACCUMULATOR ACCUMULATOR ORIENTED CPU A1B14MIS Mikroprocesory pro výkonové systémy 05 65
Struktura CPU versus operandy - 3 REGISTERS (INSIDE CPU) ALU FLAGS STATUS REGISTER ORIENTED CPU A1B14MIS Mikroprocesory pro výkonové systémy 05 66
Struktura CPU versus operandy - 4 DATA MEMORY ALU FLAGS STATUS MEMORY ORIENTED CPU A1B14MIS Mikroprocesory pro výkonové systémy 05 67
MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY Systémová struktura počítače Řízení běhu programu Systém přerušení KONEC České vysoké učení technické Fakulta elektrotechnická A1B14MIS Mikroprocesory pro výkonové systémy 05 68