Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

temata:07-princip_cinnosti_pocitace:main [2011/03/29 11:05]
ofeig [Princip činnosti počítače]
temata:07-princip_cinnosti_pocitace:main [2013/02/20 13:35] (aktuální)
marho [CISC architektura]
Řádek 1: Řádek 1:
-===== Princip činnosti počítače ===== +~~ODT~~
-Obecně lze princip činnosti počítače může být dvojí: +
-  * analogový počítač, který zpracovává analogová data (obvykle úzká specializace na jednu úlohu) +
-  * **číslicový počítač**, který zpracovává digitální data +
-Číslicový počítač lze snadno zkonstruovat jako univerzální počítač. Č.p. s určitými minimálními schopnostmi umí provést totéž co libovolný jiný počítač, proto jsou dnes kontruovány především číslicové počítače, protože jsou rychlejší a přesnější. Zpracovávají logické a číselné hodnoty. Operace jsou prováděny v aritmetické jednotce jedna za druhou. Hodnoty i program jsou uloženy v operační paměti na část pro data a program (Hardvardská architektura). +
-Základní části počítače: +
-  * aritmeticko-lofická jednotka (ALU) +
-  * pamět +
-  * řadič +
-  * periferní zařízení+
  
 +====== 07 - Princip činnosti počítače ======
 +
 +===== Obecné informace =====
 +
 +  * **počítač**
 +    * vymyslel Turing - 30. léta
 +    * 1. počítač - ENIAC (1946), 2. počítač - EDVAC (1952)
 +    * __dnes:__ je v informatice elektronické zařízení, které zpracovává data pomocí **předem vytvořeného programu**
 +      * data ovládají hardware => lze přeprogramovat pro jinou činnost
 +  * **algoritmus**
 +    * je přesně definovaná konečná posloupnost příkazů (které jsou vybírány z předem definované konečné množiny elementárních příkazů), jejichž prováděním pro každé přípustné vstupní hodnoty získáme po konečném počtu kroků odpovídající hodnoty výstupní
 +    - aplikačně specifický číslicový obvod - optimalizovaný, výkonný pro jeden algoritmus ... dlouho se navrhuje, je drahý
 +    - program pro procesor - univerzální pro více algoritmů, nízká cena ... výkonnost nemusí být dostačující
 +  * **komponenty HW**
 +    - __datové struktury__ - registry (proměnné)
 +    - __řídící struktury__
 +      - //sekvence// - komponenty seřazeny za sebou
 +      - //selekce// - multiplexor
 +      - //iterace// - čítač a řídící automat
 +      - //rekurze// - NEJDE vyřešit v HW
 +
 +{{ :temata:07-princip_cinnosti_pocitace:ridici_struktury.jpeg?600 |Řídící striktury}}
 +
 +  * **procesor**
 +    * obvodová realizace algoritmu, který dokáže vykonávat libovolné programy (algoritmy), sestavené z předem definovaných elementárních operací (instrukcí)
 +    * vykoná **program**, který je uložen od zadané adresy v paměti
 +      * program transformuje data, uložená na zadané adrese v paměti, na jiná data, jejichž nové umístění musí být rovněž specifikováno
 +      * programy jsou uloženy v paměti jako posloupnosti instrukcí, vykonávají se sekvenčně
 +    * [[temata:03-sekvencni_obvody:main|sekvenční]] (obvykle) synchronní číslicový obvod
 +  * **hlavní komponenty procesoru**
 +    - __programový čítač__ - PC
 +      * určuje adresu, kde se nachází následující instrukce
 +      * po //resetu// dochází k inicializaci procesoru a mj. je definován obsah PC (např. PC = 0003h)
 +    - __instrukční registr__ - IR
 +      * uchovává právě zpracovávanou instrukci
 +      * //neviditelný registr//, v podstatě se jedná o aktuální stav konečného automatu
 +    - __řadič__
 +      * řídí činnost procesoru  - vykonává instrukce
 +      * konečný automat - FSM (konečný stavový stroj)
 +    - __aritmeticko-logická jednotka__ - ALU
 +      * slouží k provádění matematických operací
 +      * převádí vstup na výstup
 +    - __I/O jednotka__
 +      * umožňuje vstup a výstup dat do/z procesoru (obvykle do jeho registrů) i jinak než pouze skrz paměť
 +      * TODO
 +    - __registry__
 +      * klopné obvody, které ochovávají informace po dobu napájení
 +  * **Program a jeho uložení**
 +    - __Harwardská koncepce procesoru__
 +      * paměť pro data a programy je oddělena
 +    - __Von Neumannova (princetonská) koncepce procesoru__
 +      * společná paměť pro data a programy
 +
 +<note>
 +**Ještě tu dodávám tuto poznámku:**
 +{{ :temata:07-princip_cinnosti_pocitace:usporadani_bytu.jpeg?600 |Uspořádání bytů}}
 +</note>
 +
 +  * **rozhraní procesoru**
 +    - __RESET__ - definuje obsah PC a inicializuje procesor
 +    - __CLK__ - hodinový signál (v INP jsme řešili pouze synchronní procesory a obvody)
 +    - __adresová sběrnice__ - je připojena na paměť (procesor generuje adresy pro paměť)
 +    - __datová sběrnice__
 +    - __řídící sběrnice__
 +
 +{{ :temata:07-princip_cinnosti_pocitace:procesor.jpeg?600 |Princip procesoru}}
 +
 +  * **vykonání instrukce**
 +    * instrukce, která se vykoná je uložena v PC (programovém čítači)
 +    * vykoná se obvykle v několika hodinových taktech
 +    - __fetch - F__: načtení instrukce
 +      - adresa určená obsahem PC je vystavena na adresovou sběrnici a je iniciováno čtení z paměti
 +      - paměť dodá na datovou sběrnici kód instrukce, která se má vykonat
 +      - instrukce je uložena do IR (instrukčního registru)
 +    - __instruction decode - ID__: dekódování instrukce
 +      - Instrukce je dekódována (tzn., že jsou nastaveny řídicí signály pro komponenty procesoru, které se podílí na vykonání instrukce – je např. vybrána operace sčítání a operandy ALU)
 +    - __execute - E__: vykonání instrukce
 +      - pokud instrukce vyžaduje pro své vykonání operand z paměti, musí být z příslušné adresy načten tento operand
 +      - instrukce je vykonána (např. provede se sčítání), jsou nastaveny příznaky (např. přetečení)
 +      - uloží se výsledek do registru, popř. se iniciuje zapsání výsledku do paměti
 +    * pro další instrukci se určí nový obsah PC
 +  * **obvodová realizace procesoru**
 +    * při návrhu procesoru se vychází ze specifikace, která obsahuje požadavky na instrukční soubor, architekturu, šířku dat a adres, výkonnost, plochu na čipu, spotřebu atd.
 +    * používali jsme (na příkladech, v projektu) tzv. __střádačovou architekturu__ - speciální registr střádač (acumulator) - do něj se ukládají výsledku z ALU (existuje i zásobníková, registrová a smíšená)
 +      - __zásobníková__ - má zásobník a registr SP (Stack pointer) a používají se operace PUSH m_a, POP m_a, nejsou registry
 +      - __registrová__
 +        * sada registrů - připojeny k ALU + sada FP (plovoucí řádová čárka) registrů - připojeny k FPU (operace v plovoucí řádové čárce)
 +        * ADD R1, R2, R3
 +
 +
 +{{ :temata:07-princip_cinnosti_pocitace:architektury.jpeg?600 |Architektury procesoru}}
 +
 +<note tip>
 +**Mluvili jsme často o stavu vysoké impedance. Na INP to vysvětloval a na netu jsem našel obrázek:**
 +{{ :temata:07-princip_cinnosti_pocitace:princip_tristavoveho_budice.jpg?600 |Třístavový budič}}
 +**Vysokou impedanci značí první obrázek => zařízení je odpojeno. Pokud by byly zapojeny oba spínače, nastal by zkrat.**
 +
 +**=> __Třístavový budič__ => používá se například u sběrnic, pamětí, ...**
 +</note>
 +
 +  * **nepřímé adresování**
 +    * například ACC = M[M[123]] => do akumulátoru vlož obsah paměti s adresou, která je uložena v paměti na adrese 123
 +    * potřebujeme registr IAR, který nám zjistí a uschová přímou
 +    * IAR proto má:
 +      - výstup na adresovou sběrnici => pošle adresu do paměti (123)
 +      - vstup z datové sběrnice => přijde mu obsah z paměti daný adresou 123 => adresa obsahu, který chceme nahrát do akumulátoru
 +
 +{{ :temata:07-princip_cinnosti_pocitace:schema_procesoru.jpeg?600 |Schéma procesoru}}
 +
 +  * **klasifikace moderních procesorů**
 +    * __parametr V__ - počet instrukcí, které se v jednom okamžiku vydají ke zpracování
 +    * __parametr P__ - počet současně prováděných (rozpracovaných) instrukcí
 +    - **subskalární procesory** - P = 1, V = 1 (286, 383) (bez zřetězeného zpracovaní)
 +    - **skalární procesory** - P > 1, V = 1 - využívá řetězené zpracování (Pentium) (s zřetězeným zpracováním)
 +    - **superskalární procesory** - P > 1, V > 1 (s zřetězeným zpracováním + multithreading/multicore)
 +  * **Flynnova klasifikace procesorů**
 +    * je založena na sledování počtu instrukčních a datových proudů v počítači
 +    - jeden (single) instrukční resp. datový proud označujeme symboly SI resp. SD
 +    - více než jeden proud (multiple) označujeme analogicky zkratkami MI resp. MD
 +    * příklady:
 +      * __SISD__ - von Neumannův počítač
 +      * __SIMD__ - vektorový procesor - dva vektory (více čísel) sčítá jedna instrukce (např. grafická karta vykonává 1 instrukci na více datech[napr. pixelech])
 +      * __MISD__ - více počítačů zpracovává stejná data (řídicí počítač Space Shuttle) - stehný problém řeší více počítačů => bezpečnost (výsledek všech počítačů se porovnává a vybírá výsledná hodnota [např. většina počítačů musí mít stejný výsledek])
 +      * __MIMD__ - multiprocesorový systém (více instrukcí zpracovává více dat)
 +  * **Současné kategorie procesorů**
 +    * Univerzální (Intel, AMD, HP, IBM, ...)
 +    * Grafické (Nvidia, ATI, Matrox, ...)
 +    * Signálové (TI, Fujitsu, ...)
 +    * Aplikační, např. pro mobilní telefony (Intel PXA250, ...)
 +    * Multimediální (TI, Mpact, ...)
 +    * Speciální (šifrovací, kompresní, např. pro MPEG-2, I/O, šachové, hrací, ...)
 +===== Urychlování činnosti procesoru =====
  
   * techniky urychlování výpočtu v HW   * techniky urychlování výpočtu v HW
Řádek 57: Řádek 180:
   * princip zřetězení se značně překrývá s principy procesorů RISC   * princip zřetězení se značně překrývá s principy procesorů RISC
   * základní myšlenka:   * základní myšlenka:
-<note>"V procesorech CIS používají složité strojové instrukce (CPI>>1) pouze špičkový programátoři, ale standartí rutiny kompilátoru je nepoužívají."</note>+<note>"V procesorech CISC používají složité strojové instrukce (CPI>>1) pouze špičkový programátoři, ale standartí rutiny kompilátoru je nepoužívají."</note>
 <note tip>**CPI** = průměrný počet taktů na jednu instrukci</note>     <note tip>**CPI** = průměrný počet taktů na jednu instrukci</note>    
   * výhodnější by bylo implementovat pouze jednoduché, ale rychlé instrukce   * výhodnější by bylo implementovat pouze jednoduché, ale rychlé instrukce
Řádek 93: Řádek 216:
     * když jsou zapotřebí data z předcházející instrukce, která ještě není dokončena     * když jsou zapotřebí data z předcházející instrukce, která ještě není dokončena
     * {{:temata:07-princip_cinnosti_pocitace:datovy_konflikt.png|}}     * {{:temata:07-princip_cinnosti_pocitace:datovy_konflikt.png|}}
-    * klasifikace +    * klasifikace (nechť máme dve instrukce v pořadí (i, j)), Pozn. k významu (AAB: operace A se začne vykonávat před dokončením operace B) 
-      * //RAW// - Read After Write +      * //RAW// - Read After Write (j se snaží o přečtení registru předtím, než do něj i zapíše, j pak dostává starou hodnotu) 
-      * //WAW// - Write After Write +      * //WAW// - Write After Write (j se snaží zapsat do registru předtím, než do něj zapíše i, takže dojde k přepisu instrukcí i a instrukce j jakoby se nevykonala) 
-      * //WAR// - Write After Read+      * //WAR// - Write After Read (j zapisuje do registru předtím, než ho i přečtě)
     * **Bypassing**     * **Bypassing**
       * poskytnutí mezivýsledku dřív než bude zapsán do registru       * poskytnutí mezivýsledku dřív než bude zapsán do registru
Řádek 111: Řádek 234:
   * experimenty bylo zjištěno, že četnost skoků v programech je značná - z toho se asi 83% povede   * experimenty bylo zjištěno, že četnost skoků v programech je značná - z toho se asi 83% povede
   * u skoků je třeba zrychlit zjištění cílové adresy (kam skočit), proto se používá malá cache pamět pro uložení cílových adres (//BTB// - Branch Target Buffer)   * u skoků je třeba zrychlit zjištění cílové adresy (kam skočit), proto se používá malá cache pamět pro uložení cílových adres (//BTB// - Branch Target Buffer)
-  * u podmíněných skoků jsou navíc ještě vyhodnocovány podmínky, o jejich splnění je možné spelukovat **predikce skoků** - ta může být statická (kompilátor nastaví bit predikce) nebo dynamická (pomocí speciálního HW)+  * u podmíněných skoků jsou navíc ještě vyhodnocovány podmínky, o jejich splnění je možné spekulovat **predikce skoků** - ta může být statická (kompilátor nastaví bit predikce) nebo dynamická (pomocí speciálního HW)
   * predikce (spekulace) probíhá podle předchozích směrů skoku (historii lze popsat binárním řetězcem několika bitů)   * predikce (spekulace) probíhá podle předchozích směrů skoku (historii lze popsat binárním řetězcem několika bitů)
   * nejjednodušší prediktor = **Jednobitový prediktor**   * nejjednodušší prediktor = **Jednobitový prediktor**
     * použí 1 bit z historie (tj. předchozí skok) a předpovídá následující     * použí 1 bit z historie (tj. předchozí skok) a předpovídá následující
     * {{:temata:07-princip_cinnosti_pocitace:jednobitovy_prediktor.png|}}     * {{:temata:07-princip_cinnosti_pocitace:jednobitovy_prediktor.png|}}
-    * stav 0 = skok se minule neprovedl, předpověje neskoč (-) +    * stav 0 = skok se minule neprovedl, předpověď je neskoč (-) 
-    * stav 1 = skok se minile provedl => předpověje skoč (+) +    * stav 1 = skok se minile provedl => předpověď je skoč (+) 
     * pokud je předpověd špatná musí být špatná větev programu ukončena a musí začít načítání instrukcí ze správné větve (je třeba aktualizovat BTB, to stojí několik taktů zřetězené linky)     * pokud je předpověd špatná musí být špatná větev programu ukončena a musí začít načítání instrukcí ze správné větve (je třeba aktualizovat BTB, to stojí několik taktů zřetězené linky)
  
  
 Zřetězené zpracování přináší urychlení výpočtu nejen v procesorech, ale i jiných číslicových obvodech (např. pro zpracování obrazu, bioinformatických dat apod.). Zřetězené zpracování přináší urychlení výpočtu nejen v procesorech, ale i jiných číslicových obvodech (např. pro zpracování obrazu, bioinformatických dat apod.).
-Pokud použijeme zřetězené zpracování, musíme dodat řadu podpůrných oibvodů a řešit řadu nových problémů.+Pokud použijeme zřetězené zpracování, musíme dodat řadu podpůrných obvodů a řešit řadu nových problémů.
 Moderní procesory používají kromě zřetězení i další koncepty: Moderní procesory používají kromě zřetězení i další koncepty:
   * superskalární architektury   * superskalární architektury
-  * VLIW procesory+  * VLIW procesory - má více ALU - tzn. může zároveň dělat více operací => k tomu slouží dlouhé instrukce
   * vektorové procesory   * vektorové procesory
-  * multivlákonové procesory                            +  * multivláknové procesory                            
  
 ==== CISC architektura ==== ==== CISC architektura ====
Řádek 134: Řádek 257:
   * vysoká složitost instrukcí => nutný systematický návrh řadiče procesoru   * vysoká složitost instrukcí => nutný systematický návrh řadiče procesoru
   * vykonání strojové instrukce probíhá posloupností mikrooperací (předpepsána mikroinstrukcí v řídící paměti)   * vykonání strojové instrukce probíhá posloupností mikrooperací (předpepsána mikroinstrukcí v řídící paměti)
-  * řidící paměti byly pevné (Read-Only Memory = ROM) a mnohem rychlejší než RAM    +  * řidící paměti byly pevné (Read-Only Memory = ROM) a mnohem rychlejší než RAM (je rychlejší načíst 1 složitou instrukci z RAM, která "obsahuje" 10 obyčených instrukcí, které se už načítají z napr. EEPROM než všech 10 instrukcí načítat z RAM)
   * díky vývoji mikrotechniky se řídící pamět přesuna na cache; to umožnilo držet krok s RISC architekturou   * díky vývoji mikrotechniky se řídící pamět přesuna na cache; to umožnilo držet krok s RISC architekturou
   * patří mezi nejvíce rozšířené (486, Pentium)   * patří mezi nejvíce rozšířené (486, Pentium)
-  * ** !!! OBRAYEK procesor_cisc.gif ** 
   * {{:temata:07-princip_cinnosti_pocitace:procesor_cisc.gif|}}         * {{:temata:07-princip_cinnosti_pocitace:procesor_cisc.gif|}}      
  
Řádek 145: Řádek 267:
 Dvořák Václav Prof.Ing. DrSc., Drábek VLadimír Doc.Ing. CSc. - Architektura procesorů - VUTIUM 1999  Dvořák Václav Prof.Ing. DrSc., Drábek VLadimír Doc.Ing. CSc. - Architektura procesorů - VUTIUM 1999 
    
-CIS architektura (ilustrace z) http://www.wiki.sps-pi.com/index.php/CISC_architektura</note>                                                                         +CIS architektura (ilustrace z) http://www.wiki.sps-pi.com/index.php/CISC_architektura</note>           
 + 
 +<doodle single login|07> 
 +^ OK ^ !!! ^ 
 +</doodle> 
 + 
 +{{tag>ofeig george INP pocitac procesor}} 
 + 
 +~~DISCUSSION~~                                                               
temata/07-princip_cinnosti_pocitace/main.1301389505.txt.gz · Poslední úprava: 2011/03/29 11:05 autor: ofeig
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki