OBSAH WEBU
ČTĚTE!
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
temata:07-princip_cinnosti_pocitace:main [2011/04/12 20:39] vagabund |
temata:07-princip_cinnosti_pocitace:main [2013/02/20 13:35] (aktuální) marho [CISC architektura] |
||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
+ | ~~ODT~~ | ||
+ | |||
====== 07 - Princip činnosti počítače ====== | ====== 07 - Princip činnosti počítače ====== | ||
Řádek 34: | Řádek 36: | ||
- __instrukční registr__ - IR | - __instrukční registr__ - IR | ||
* uchovává právě zpracovávanou instrukci | * uchovává právě zpracovávanou instrukci | ||
+ | * //neviditelný registr//, v podstatě se jedná o aktuální stav konečného automatu | ||
- __řadič__ | - __řadič__ | ||
* řídí činnost procesoru - vykonává instrukce | * řídí činnost procesoru - vykonává instrukce | ||
Řádek 42: | Řádek 45: | ||
- __I/O jednotka__ | - __I/O jednotka__ | ||
* umožňuje vstup a výstup dat do/z procesoru (obvykle do jeho registrů) i jinak než pouze skrz paměť | * umožňuje vstup a výstup dat do/z procesoru (obvykle do jeho registrů) i jinak než pouze skrz paměť | ||
+ | * TODO | ||
- __registry__ | - __registry__ | ||
* klopné obvody, které ochovávají informace po dobu napájení | * klopné obvody, které ochovávají informace po dobu napájení | ||
Řádek 49: | Řádek 53: | ||
- __Von Neumannova (princetonská) koncepce procesoru__ | - __Von Neumannova (princetonská) koncepce procesoru__ | ||
* společná paměť pro data a programy | * 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** | * **rozhraní procesoru** | ||
- __RESET__ - definuje obsah PC a inicializuje procesor | - __RESET__ - definuje obsah PC a inicializuje procesor | ||
Řádek 74: | Řádek 84: | ||
* **obvodová realizace procesoru** | * **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. | * 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 | + | * 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> | <note tip> | ||
Řádek 96: | Řádek 113: | ||
* __parametr V__ - počet instrukcí, které se v jednom okamžiku vydají ke zpracování | * __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í | * __parametr P__ - počet současně prováděných (rozpracovaných) instrukcí | ||
- | - **subskalární procesory** - P = 1, V = 1 (286, 383) | + | - **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) | + | - **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 | + | - **superskalární procesory** - P > 1, V > 1 (s zřetězeným zpracováním + multithreading/multicore) |
* **Flynnova klasifikace procesorů** | * **Flynnova klasifikace procesorů** | ||
* je založena na sledování počtu instrukčních a datových proudů v počítači | * je založena na sledování počtu instrukčních a datových proudů v počítači | ||
Řádek 105: | Řádek 122: | ||
* příklady: | * příklady: | ||
* __SISD__ - von Neumannův počítač | * __SISD__ - von Neumannův počítač | ||
- | * __SIMD__ - vektorový procesor - dva vektory (více čísel) sčítá jedna instrukce | + | * __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 | + | * __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 | + | * __MIMD__ - multiprocesorový systém (více instrukcí zpracovává více dat) |
* **Současné kategorie procesorů** | * **Současné kategorie procesorů** | ||
* Univerzální (Intel, AMD, HP, IBM, ...) | * Univerzální (Intel, AMD, HP, IBM, ...) | ||
Řádek 217: | Řá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ěd je neskoč (-) | + | * stav 0 = skok se minule neprovedl, předpověď je neskoč (-) |
- | * stav 1 = skok se minile provedl => předpověd 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 240: | Řá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) |