Struktura a architektura počítačů Systémová struktura počítače Řízení běhu programu Systém přerušení České vysoké učení technické Fakulta elektrotechnická Ver.1.30 J. Zděnek / M. Chomát 2014
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 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 2
Architektura typu von Neumann Common Bus CPU Program Memory Data Memory I/O Channels Output Input World A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 3
Architektura typu Harvard Common Bus Program Memory 24 CPU Data Memory 16 Typ.různá šířka I/O Channels Output World Input A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 4
Architektura typu Harvard další modifikace Paralelní čtení/zápis dat Program Memory 24 CPU Data Memory 24 Data Bridge 16 16 Output I/O Channels World Čtení konstant z Flash Input A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 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é) A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 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 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 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 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 8
Počítač sekvenční stroj XTAL (CRYSTAL) STABLE SYNC. SIGNAL SYNCHRONIZATION CLOCK Clock RESET CENTRAL PROCESSING UNIT CPU BUS MASTER SEQUENTIAL PROGRAM PROCESSING (ONE INSTRUCTION AT A TIME) Common Bus Program Memory BIOS Operating System Application Program MAIN MEMORY PROGRAM INSTRUCTIONS Power Supply I 0 Power Monitor CPU - SYNCHRONOUS FINITE STATE MACHINE (FSA, FSM) OTHER DEVICES DEFINED START POINT Data Memory PROGRAM VARIABLES & PROGRAM STACK 0 1 I 0 S 0 S 3 I 0 I 1 0 0 I 1 S 1 0 0 COMMON DATA PATH (BIDIRECTIONAL) I/O Channels Output Input World I 0 S 2 I 1 0 0 I 1 EXTERNAL MEMORY A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 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 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 10
Vykonání instrukce INSTRUCTION EXECUTION FETCH EXECUTION DATA BUS BUS CYCLE INSTRUCTION CYCLE * OPERATIONAL CODE FETCH (OPCODE FETCH) * INSTRUCTION EXECUTION * INSTRUCTION DECODE * OPERAND READ * OPERAND PROCESSING * RESULT WRITE NOTE: DATA STABLE (= DATA VALID) DATA UNDEF. A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 11
Rozdělení společné sběrnice CONTROL BUS DATA BUS ADDRESS BUS CB DB AB CPU Program Memory BUS MASTER TRANSFER DIRECTION (TRANSFER PATH) Data Memory I/O Channels Output Input Common Bus A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 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 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 13
Činnost společné sběrnice (AB, DB, CB) CB DB AB ADDRESS DECODER CPU Program Memory MEMORY ARRAY BUS MASTER ADDRESS VALID DATA VALID TRANSFER DIRECTION (TRANSFER PATH) Data Memory ADDRESS DECODER MEMORY ARRAY ADDR.BUS DATA BUS nread nwrite CPU DATA READ CPU DATA WRITE (to MEMORY) NOTE: nread, nwrite - SIGNAL ACTIVE IN 0 Common Bus ADDRESS DECODER Output I/O Channels Input INPUT/OUTPUT REGISTERS BUS TRANSFER DIRECTIONS: DB = BIDIRECTIONAL CB, AB = UNIDIRECTIONAL A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 14
Kde číst následující instrukci PC PROGRAM COUNTER ADDRESS PROGRAM MEMORY INSTRUCTIONS Čí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 IR INSTRUCTION REGISTER DECODE EXECUTE + + 00100 LD R0, MAX 00101 ADD R0, R1 00102 ST R0, SUM 00103 JMP 00805 00104 NOP 00105 CMP SUM, R3 00106 BNZ 00630C 00107 00805 00806 00807 LD R7, PORT3 AND R7, 3FEh JMP 00105 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 15
Větvení programu (Jump, Branch) PC PROGRAM COUNTER ADDRESS PROGRAM MEMORY INSTRUCTIONS IR INSTRUCTION REGISTER DECODE EXECUTE + 00100 LD R0, MAX 00101 ADD R0, R1 00102 ST R0, SUM 00103 JMP 00805 00104 NOP 00105 CMP SUM, R3 00106 BNZ 00630C 00107 Realizace větvení programu 00805 00806 00807 LD R7, PORT3 AND R7, 3FEh JMP 00105 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 16
Dekompozice problému na dílčí části A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 17
Zde příklad v Javě A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 18
Požadavky pro volání procedury START P1 CALL P1 RETADR1 CALL P2 RETADR4 P2 CALL P1 RETADR2 RET CALL P2 RETADR3 RET END Návratová adresa A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 19
Princip volání procedury (Procedure Call) PC PROGRAM COUNTER ADDRESS PROGRAM MEMORY INSTRUCTIONS Zásobník (návratových adres) IR INSTRUCTION REGISTER DECODE EXECUTE + 00100 LD R0, MAX 00101 ADD R0, R1 00102 ST R0, SUM 00103 CALL 00805 00104 NOP 00105 CMP SUM, R3 00106 BNZ 00630C 00107 SP STACK POINTER 00805 00806 00807 LD R7, PORT3 AND R7, 3FEh RET 00104 STACK (LIFO) TOS Ukazatel zásobníku A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 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 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 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 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 22
Prostředky pro organizaci volání procedury A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 23
Sdílené prostředky (sdílí je procedury) A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 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 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 25
Před čtením CALL 1 2 3 4 5 6 7 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 26
Po čtení CALL 1 1 2 3 4 5 6 7 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 27
Během provádění CALL 2 1 2 3 4 5 6 7 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 28
Po provedení CALL 3 1 2 3 4 5 6 7 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 29
Před čtením RETURN 4 1 2 3 4 5 6 7 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 30
Po čtení RETURN 5 1 2 3 4 5 6 7 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 31
Po čtení RETURN 7 6 1 2 3 4 5 6 7 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 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 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 33
Asynchronní akce hardwareové (hw) volání procedury Common Bus Program Memory MAIN MEMORY BIOS XTAL (CRYSTAL) STABLE SYNC. SIGNAL Clock RESET CPU Operating System Application Program PROGRAM INSTRUCTIONS Power Supply Power Monitor IRQ1 INTRQ INTACK Data Memory PROGRAM VARIABLES & PROGRAM STACK Žádosti o přerušení IRQ2 IRQn Interrupt Controller INTERRUPT CONTROLLER I/O Channels Output Input World Řadič přerušení A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 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 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 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 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 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) A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 37
Asynchronní akce hw volání procedury (ISR) A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 38
Prostředky pro organizaci hw volání procedury (interrupt) A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 39
Sdílené prostředky (sdílí je ISR a přerušený program) A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 40
Žádost o obsluhu přerušení (hw volání procedury) A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 41
Žádost o obsluhu aktivní - 1 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 42
Dokončení aktivní instrukce - 2 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 43
Uložení (Push) návratové adresy do zásobníku (Stack) - 3 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 44
Vyzvednutí adresy obslužného programu (ISR) - 4 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 45
Spuštění obslužné procedury přerušení (ISR) - 5 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 46
Uložení kontextu do zásobníku - 6 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 47
Provedení těla obslužné procedury (ISR) - 7 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 48
Obnovení kontextu (ze zásobníku) - 8 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 49
Vyzvednutí návratové adresy (ze zásobníku) - 9 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 50
Obnovení běhu přerušeného programu - 10 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 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 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 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 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 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 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 54
Řadič přerušení princip (Interrupt Controller) TRAP DECODED INTRQ NMI Register (Active Interrupt) IR0 IR1 Event Detector Priority Encoder Comparator IR2 IF0 IE0 IF1 IE1 Driver IF2 GIE IE1 Control Interrupt Enable Interrupt Flag Žádost o přerušeni Povolení maskovatelných žádostí A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 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 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 56
Programátorský model počítače ACCUMULATOR PC PROGRAM COUNTER ALU UNIVERSAL (SCRATCHPAD, GENERAL PURPOSE REGISTERS) REGISTER SPACE SP FLAGS STACK POINTER PROCESSOR STATUS WORD (PSW) DATA PATH WIDTH (8, 16, 32, 64 bits) RESET PROGRAM MEMORY SPACE??? DATA MEMORY SPACE MEMORY MAPPED I/O INPUT/OUTPUT SPACE (SPECIAL FUNCTION REGISTERS)?????? INTERRUPT VECTOR TABLE STACK??? HW STACK (CPU) STACK LIMITED DEPTH A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 57
PIC18F Family Modifikovaný Harvard Program Memory 21 16 CPU 12 Data Memory 6,9728 16 Data Bridge 8 8 12 I/O Channels Output Input World A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 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 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 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 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 60
PIC18F Family Data Memory BSR BANK ADDRESS 000h DATA MEMORY 00h ALU 8 FSR0 4 BANK 0 05Fh 060h 5Fh 60h 8 8 FSR1 FSR2 12 12 12 BANK 1 BANK 14 0FFh 100h EFFh F00h FFh 00h FFh 00h GPR ACCESS BANK WREG STATUS 8 00h 5Fh 60h FFh REGISTER FILE ADDRESS BANKING BANK 15 F5Fh F60h FFFh WREG STATUS 8 5Fh 60h FFh SFR ACCUMULATOR FLAGS (PSW) SPECIAL FUNCTION REGISTERS MEMORY MAPPED INPUT/OUTPUT SPACE REMAPING A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 61
PIC18F Family Interrupt System High Priority Enable GIEH HIGH PRIORITY Priority Encoder INTRQ LOW PRIORITY xip yip GIEL IPEN xie yie Priority System On xif yif Low Priority Enable INPUT Event Detector........ Clk Timer Interrupt Priority INTERRUPT RESOURCES Interrupt Enable Interrupt Flag (Request) A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 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 A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 63
Struktura CPU versus operandy - 1 STACK TOS ALU FLAGS STATUS STACK ORIENTED CPU A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 64
Struktura CPU versus operandy - 2 DATA MEMORY ALU FLAGS STATUS ACCUMULATOR ACCUMULATOR ORIENTED CPU A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 65
Struktura CPU versus operandy - 3 REGISTERS (INSIDE CPU) ALU FLAGS STATUS REGISTER ORIENTED CPU A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 66
Struktura CPU versus operandy - 4 DATA MEMORY ALU FLAGS STATUS MEMORY ORIENTED CPU A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 67
Příklad program v ASM PIC18F - 1 #include <P18F87J11.INC> ; processor specific variable definitions CONFIG FOSC = HS ; High speed oscilator CONFIG WDTEN = OFF ; Watchdog disabled CONFIG XINST = OFF ; Istruction set extension disabled #define TIMER0_16bit b'00000010 UDATA_ACS ; variable declaration part WREG_TEMP res 1 ; variable used for context saving STATUS_TEMP res 1 ; variable used for context saving BSR_TEMP res 1 ; variable used for context saving REG res 1 TEMP res 1 CODE ORG 0x00000 goto Main ORG 0x00008 goto HighInt ; program code part ; go to start of main code ; go to high priority interrupt routine A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 68
Příklad program v ASM PIC18F - 2 Main: movlw 0x00 ; store 0 to W movwf TRISD ; W -> TRISD - all bits of PORTD are outputs movwf TRISB ; W -> TRISB - all bits of PORTB are outputs movwf PORTD ; W -> PORTD - PORTD value is 0 movwf REG ; W -> REG - REG value is 0 bsf TRISB,0,0 ; bit 0 set as input movlw TIMER0_16bit ; 0x02 -> W of PORTB movwf T0CON ; Timer0 off, configured as 16 bit counter; movlw 0A0h ; 10100000b, 0A0h -> W movwf INTCON ; INTCON configured as - Interrupts enabled; movlw 04h ; 00000100b, 04h -> W movwf INTCON2 ; Timer0 overflow int. priority set to High movlw b'10000000' ; 10000000b, 080h -> W movwf RCON ; enables priority levels on interrupts bsf T0CON,7,0 ; start Timer0 Loop: goto Loop ;loop forever A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 69
Příklad program v ASM PIC18F - 3 HighInt: ; ISR start (Interrupt Service Routine) movff STATUS,STATUS_TEMP ; save STATUS register movff WREG,WREG_TEMP ; save working register movff BSR,BSR_TEMP ; save BSR register rlncf REG,1,0 ; rotation to left btfss PORTB,0,0 ; is RB0 pressed? bsf REG,0,0 ; set bit 0 of REG to 1 movff REG,PORTD ; REG -> PORTD bcf INTCON,2,0 ; clear Interrupt Flag movff BSR_TEMP,BSR ; restore BSR register movff WREG_TEMP,WREG ; restore working register movff STATUS_TEMP,STATUS ; restore STATUS register retfie ; return from interrupt END A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 70
Struktura a architektura počítačů Systémová struktura počítače Řízení běhu programu Systém přerušení KONEC České vysoké učení technické Fakulta elektrotechnická A7B14SAP Struktura a architektura počítačů 6 - Řízení běhu programu a přerušení 71