07 - Princip činnosti počítače
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
algoritmus
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
Ještě tu dodávám tuto poznámku:
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
Mluvili jsme často o stavu vysoké impedance. Na INP to vysvětloval a na netu jsem našel obrázek:
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í, …
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
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ů
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
Zřetězené zpracování
Jako vzorvný příklad se uvádí grafický filtr. Vstupem obvodu je pixel, který se po projití obvodu (filtrem) přefiltruje.
1) obvod bez zřětězení
2) zřetězený filtr
1. pixel se zpracuje za 9 x 10 = 90 ns
2., 3., … 65 536. pixel vždy po 10 ns
zrychlení není 9x, protože se musí naplnit zřetězená linka ve výpočtu se neuvažuje zpoždění registru
zrychlení použitím řetězením
Řetězené zpracování instrukcí v procesorech
„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í.“
CPI = průměrný počet taktů na jednu instrukci
výhodnější by bylo implementovat pouze jednoduché, ale rychlé instrukce
cílem je dosáhnout parametru instrukčního souboru CPI = 1
toho lze dosáhnout pouze trikem - překrýváním cyklů (u jednoduchého procesoru má instrukce CPI minimálně 3)
-
Popis cyklů reálného procesoru
-
Obecné rysy architektur RISC
malý počet relativně jednoduchých instrukcí
snaha o CPI = 1 (ideální teoretický případ) ⇒ v každém taktu se procesoru se většinou dokončí jedna instrukce (reálný průměr je CPI < 1,5)
všechny instrukce mají stejnou složitost
přístup k paměti mají pouze 2 instrukce: LOAD a STORE (zbytek pracuje s registry) → malý počet adresivých modů (3-5)
registrová architektura (dostupných je 32-192)
rychlý obvodový řadič
oddělená pamět (cache) instrukcí a dat
-
DLX procesor
MX: multiplexor, DC: cache dat, =O?: detektor nuly, IC: cache instrukcí, ALU: aritmeticko-logická jednotka, PC: čítač instrukcí, IR: registr instruce, RF: soubor registrů, s.ex: jednotka rozšíření znaménka, dst: adresa cílového registru, src1 a scr2: adresy zdrojových registrů, imm: přímý operand, L/S: load/store
paměť M je rozdělena na paměť instrukcí (IC) a paměť dat (DC)
v každém taktu je celý stav zpracování instrukce obsažen úplně a výhradně v obvodech jen jednoho stupně → ostatní stupně jsou volné a dají se použít pro paralelní zpracování dalších nezávislých instrukcí
Konflikty u řetězeného zpracování v procesorech
Strukturální
Datové
když jsou zapotřebí data z předcházející instrukce, která ještě není dokončena
-
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 (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 (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 (j zapisuje do registru předtím, než ho i přečtě)
Bypassing
poskytnutí mezivýsledku dřív než bude zapsán do registru
je to umožněno přidáním speciálních datových cest (např. příklady na obrázku)
pomáhá řešit datové konflikty
-
Řídící
když skoková instrukce mění obsah PC nebo jiné
-
neví, kam skočit, protože adresa bude známa až po fázi M na řádku BC
řešení:
Řídící konflikty a prediktory skoku
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 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ů)
nejjednodušší prediktor = Jednobitový prediktor
použí 1 bit z historie (tj. předchozí skok) a předpovídá následující
-
stav 0 = skok se minule neprovedl, předpověď je neskoč (-)
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)
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 obvodů a řešit řadu nových problémů.
Moderní procesory používají kromě zřetězení i další koncepty:
CISC architektura
Vloženo jako poznámka pro znázornění rozdílu v architekturách.
= procesory s komplexním instrukčním souborem
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)
ř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
patří mezi nejvíce rozšířené (486, Pentium)
-
Zdroje
07 |
Celé jméno | OK | !!! |
vagy | | |
Jirka Hynek | | |
Tom Ofeig | | |
| 3 | |