Algoritmizace a programování Struktura počítače České vysoké učení technické Fakulta elektrotechnická Ver.1.10 J. Zděnek 2015
Struktura předmětu Systémová struktura počítače, procesor, paměti, periferní zařízení Systém přerušení, zpracování asynchronních událostí Algoritmy, programy, programovací jazyky, jazyk C Proměnné, typy, operátory, výrazy, příkazy, vstup a výstup Řízení běhu programu, řídící struktury Struktura programu v C, podprogramy a funkce Předávání parametrů (hodnotou, odkazem), reentrantní funkce Procedurální programování Pole, struktury a uniony Ukazatele a ukazatelová aritmetika Soubory, standardní knihovny Algoritmy vyhledávání a řazení, rekurze Preprocesor, podmíněný překlad, makra, hlavičkové soubory Specifika programování vestavěných (Embedded) systémů A8B14ADP Algoritmizace a programovaní - Struktura počítače 2
Zdroje informací Přednášky k předmětu A8B14ADP Web předmětu A7B14SAP http://motor.feld.cvut.cz Literatura [1] Kernighan, B.W. - Ritchie, D.M.: Programovací jazyk C, Computer Press, Brno 2006. ISBN: 97880251089702. [2] Harbison, S.P.- Steele, G.L.: A Reference Manual 5th ed. Prentice Hall 2002. ISBN: 978-01308959293. [3] Herout, P.: Učebnice jazyka C. 6. vyd. Kopp 2010. ISBN: 978-80-7232-383-84. [4] Herout, P.: Učebnice jazyka C - 2.díl, 4. vyd. Kopp 2010. ISBN: 978-80-7232-367-85. [5] Wróblenski, P.-Michalek, M.-Kiszka, B: Algoritmy. Datové struktury a programovací techniky. ComputerPress, 2004. ISBN: 80-251-0343-9 A8B14ADP Algoritmizace a programovaní - Struktura počítače 3
Učební pomůcky (software) Integrované vývojové prostředí pro OS Windows nebo Linux IDE NetBeans s instalací kompilátoru pro jazyk C http://www.netbeans.org (instalace pro studenty zdarma) Integrované vývojové prostředí pro OS Windows IDE MPLAB s instalací kompilátoru pro jazyk C, (Microchip C18) http://www.microchip.com (instalace pro studenty zdarma) A8B14ADP Algoritmizace a programovaní - Struktura počítače 4
Systémová struktura počítače - úvod Struktura počítače A8B14ADP Algoritmizace a programovaní - Struktura počítače 5
Architektura počítače - hardware Hlavní komponenty počítače Paměť programu a dat Vstupní a výstupní zařízení Komunikace s okolním světem Procesor Výpočetní část Mezipaměť výsledků Řízení Řadič (Controller) A8B14ADP Algoritmizace a programovaní - Struktura počítače 6
Architektura typu von Neumann Společná paměť programu (instrukcí) a dat NELZE paralelně číst instrukce a přenášet data (cesta je společná) A8B14ADP Algoritmizace a programovaní - Struktura počítače 7
Architektura typu von Neumann Instrukce a data jsou uložena v téže paměti. Instrukce a data nelze přenášet po sběrnici současně (společná cesta) pomalejší činnost Jednodušší propojení procesoru s pamětí Paměť je organizována lineárně (tzn. jednorozměrně) a je rozdělena na stejně velké buňky, které se adresují celými čísly (zprav. 0, 1, 2, 3,... ). Data ani instrukce nejsou explicitně označeny. Explicitně nejsou označeny ani různé datové typy. Pro reprezentaci dat i instrukcí se používají dvojkové signály. Instrukce se provádějí jednotlivě, a to v pořadí, v němž jsou zapsány v paměti, pokud není toto pořadí změněno speciálními instrukcemi (nazývanými skoky). Počítač tvoří: Processor (ALU aritmetická a logická jednotky, registry, řídicí část (řadič controller), hlavní paměť (main memory) společně instrukce a data, systém přerušení, vstupní a výstupní zařízení (periferie peripherals) A8B14ADP Algoritmizace a programovaní - Struktura počítače 8
Architektura typu Harvard Oddělená paměť programu (instrukcí) a dat LZE paralelně číst instrukce a přenášet data (cesty jsou oddělené) A8B14ADP Algoritmizace a programovaní - Struktura počítače 9
Architektura typu Harvard Instrukce a data jsou uložena v oddělených pamětech. Instrukce lze číst současně s přenosem dat (oddělené cesty) rychlejší činnost Šířka přenosové cesty instrukcí může být jiná (větší) než přenosová cesta dat. Složitější propojení procesoru s pamětmi (vs von Neumann ) Data a instrukce jsou explicitně označeny Paměť je organizována lineárně (tzn. jednorozměrně) a je rozdělena na stejně velké buňky, které se adresují celými čísly (zprav. 0, 1, 2, 3,... ). Pro reprezentaci dat i instrukcí se používají dvojkové signály. Instrukce se provádějí jednotlivě, a to v pořadí, v němž jsou zapsány v paměti, pokud není toto pořadí změněno speciálními instrukcemi (nazývanými skoky). Počítač tvoří: Processor (ALU aritmetická a logická jednotky, registry, řídicí část (řadič controller), paměť programu (instrukcí), paměť dat, systém přerušení, vstupní a výstupní zařízení (periferie peripherals) A8B14ADP Algoritmizace a programovaní - Struktura počítače 10
Vývoj software úrovně abstrakce Literatura: [1] A8B14ADP Algoritmizace a programovaní - Struktura počítače 11
Vývoj software úrovně abstrakce Překladač (sw) Asembler (sw) Processor (hw) if( z < 0 z > 35} x++; else y++; cmp z, #0 bnc Cont1 cmp z, LIM bc Cont1 inc x 1001 0011 0101 0001 0110 1101 0011 1010 0001 1110 1100 0011 0111 0010 1010 0001 0101 1110 0010 0011 *WR *RD DB 1 2 3 4 A8B14ADP Algoritmizace a programovaní - Struktura počítače 12
Organizace hlavní (operační) paměti počítače Hlavní paměť je rozdělena na buňky paměťová místa, kterým jsou přiřazena nezáporná čísla nazývaná adresy Obsah paměťového místa je slovo slovo (word) velikost závisí na procesoru (např. 16b, 24b, 32b, 64b), b značí bit (binary digit) B značí byte (slabika), 8b = 1B, byte je uspořádaná osmice bitů, obvykle 2 nebo i více byteů tvoří slovo, např. u procesorů Intel řady x86 1 slovo = 2B = 16b. Obsah paměťového místa na adrese adr bývá někdy označován <adr>; nehrozí-li nedorozumění píše se však často adr místo <adr>. A8B14ADP Algoritmizace a programovaní - Struktura počítače 13
Slabiková organizace paměti Dva používané způsoby uložení v paměti (Big vs Little endian) Př. 1 slabika = 1B 1 slovo = 2B 1 dvojité slovo = 4B [dw Double Word] tedy 32b Od adresy 8001 má být uloženo dvojité slovo 1234ABCD: 1. způsob 2. způsob Adresa Big-endian Little-endian Big-endian (IBM360, Motorola 6800) 8001 12 CD 8002 34 AB Little-endian (Intel x86, DEC Alpha) 8003 AB 34 Oba způsoby (Motorola 88110) 8004 CD 12 A8B14ADP Algoritmizace a programovaní - Struktura počítače 14
Zobrazení dat v paměti Numerická data čísla: V pevné řádové čárce (fixed point) celá čísla (integer format) byte, word, racionální čísla (fraction format) byte, word, V pohyblivéřádovéčárce (floating point), racionální čísla, double, float,, matisa+charakteristika Formát zobrazení: Dvojková (binary), př. 10100011b Šestnáctková (hexadecimal), př. A3h nebo 0xA3 Desítková (decimal), př. 163d nebo 163 Bez znaménka (unsigned), pouze nezáporná, byte, word, unsigned Se znaménkem (signed), integer, short int, signed Různě dlouhá, různý rozsah hodnot (short int, integer, long int, byte, word, double, A8B14ADP Algoritmizace a programovaní - Struktura počítače 15
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 A8B14ADP Algoritmizace a programovaní - Struktura počítače 16
Architektura typu von Neumann A8B14ADP Algoritmizace a programovaní - Struktura počítače 17
Architektura typu Harvard Typ.různá šířka A8B14ADP Algoritmizace a programovaní - Struktura počítače 18
Architektura typu Harvard další modifikace Paralelní čtení/zápis dat Čtení konstant z Flash A8B14ADP Algoritmizace a programovaní - Struktura počítače 19
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é) A8B14ADP Algoritmizace a programovaní - Struktura počítače 20
Systémová struktura počítače A8B14ADP Algoritmizace a programovaní - Struktura počítače 21
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 A8B14ADP Algoritmizace a programovaní - Struktura počítače 22
Systémová struktura počítače 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 A8B14ADP Algoritmizace a programovaní - Struktura počítače 23
Instrukční cyklus A8B14ADP Algoritmizace a programovaní - Struktura počítače 24
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 A8B14ADP Algoritmizace a programovaní - Struktura počítače 25
Rozdělení společné sběrnice A8B14ADP Algoritmizace a programovaní - Struktura počítače 26
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 A8B14ADP Algoritmizace a programovaní - Struktura počítače 27
Činnost společné sběrnice (AB, DB, CB) A8B14ADP Algoritmizace a programovaní - Struktura počítače 28
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 A8B14ADP Algoritmizace a programovaní - Struktura počítače 29
Větvení programu (Jump, Branch) Realizace větvení programu A8B14ADP Algoritmizace a programovaní - Struktura počítače 30
Dekompozice problému na dílčí části A8B14ADP Algoritmizace a programovaní - Struktura počítače 31
Požadavky pro volání procedury Návratová adresa A8B14ADP Algoritmizace a programovaní - Struktura počítače 32
Princip volání procedury (Procedure Call) Zásobník (návratových adres) Ukazatel zásobníku A8B14ADP Algoritmizace a programovaní - Struktura počítače 33
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 A8B14ADP Algoritmizace a programovaní - Struktura počítače 34
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 A8B14ADP Algoritmizace a programovaní - Struktura počítače 35
Sdílené prostředky (sdílí je procedury) A8B14ADP Algoritmizace a programovaní - Struktura počítače 36
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 A8B14ADP Algoritmizace a programovaní - Struktura počítače 37
Algoritmizace a programování Struktura počítače KONEC České vysoké učení technické Fakulta elektrotechnická