• 320 likes • 459 Views
Hardware přednáška. Mikroprocesory Obecné charakteristiky. Obsah přednášky. Mikroprocesory – architektura a funkce Fyzické charakteristiky CISC/RISC. Zpracování programu. Počítačový program je tvořen lineární řadou instrukcí
E N D
Hardwarepřednáška Mikroprocesory Obecné charakteristiky
Obsah přednášky • Mikroprocesory – architekturaa funkce • Fyzické charakteristiky • CISC/RISC
Zpracování programu • Počítačový program je tvořen lineární řadou instrukcí • Instrukce je příkaz k elementární operaci, která má být provedena počítačem • Instrukce provádí (nebo provedení zabezpečuje) procesor počítače v pořadí,v jakém jsou tyto zapsány v programu • Pořadí postupného zpracování narušují instrukce volání podprogramů a instrukce podmíněného a nepodmíněného skoku
Instrukční cyklus • = proces zpracování jedné instrukce. • Struktura instrukce: nepovinné • Provedení instrukce: výběr operačního kódu z paměti, výběr operandu / adresy operandu z paměti, (výběr operandu z paměti), provedení instrukce
Mikroprocesor • Je synchronní stroj řízený řadičem • Mikroprocesor můžeme rozdělit na4 části • I/O (= vstupně-výstupní) jednotka • registry • řadič • ALU • Poslední tři části nazýváme CPU (Central Processing Unit)
I/O jednotka • Spojuje mikroprocesor se zbytkem počítače • Umožňuje přesun dat a instrukcí z hl. paměti do registrů řadiče a ALU • Obsahuje také vyrovnávací paměť cache a obvody, které synchronizují rychlost procesoru s pomalejší hlavní pamětí
I/O jednotka • Spojení se zbytkem počítače je realizováno pomocí adresové a datové sběrnice • Množství bitů, které přenáší datová sběrnice (její šířka) určuje rychlost přenosu informací • Šířka adresové sběrnice určuje, kolik paměti můžeme adresovat (dokáže procesor používat)
ALU (Arithmetic–Logic Unit) • Buď bere instrukce dekódované řadičem a přímo je provádí (obvodové řízení – viz dále), nebo spouští příslušný mikrokód (mikroprogramové řízení – viz dále) • Provádí logické operace a operace s čísly v pevné řádové čárce (tzn. s celými čísly) – výkonnost ALU se dá vyjádřit počtem vykonaných instrukcí za sekundu (Million Instructions Per Second – MIPS) • Neprovádí operace v pohyblivé řádové čárce • Svou činností modifikuje údaje obsaženév registrech
Operace v pohyblivé řádové čárce • Matematické operace s reálnými čísly • Provádí je speciální jednotka – FPU (Float Point Unit) – nebo jsou softwarově převedeny na operace s číslyv pevné řádové čárce a následně provedeny ALU(u starších procesorů které FPU neměli – do 486SX) • FPU – provádí vyšší matematické operace s vyšší přesností a rychleji – výkonnost měřenav jednotkách MFLOPS (Million Float Point Operations Per Second) • Dříve (do i80386) byla FPU samostatným čipem – matematický koprocesor – od 486DX součástí procesoru
Časování • Mikroprocesor nereaguje na příchozí data okamžitě, protože by některé signály zpracovával v nestabilním stavu (viz sekvenční obvody). • Proto zavádíme systémové hodiny, které vysílají pravidelné napěťové pulsy. Při jejich přijetí provádí mikroprocesor instrukce.
Časování • Některé instrukce jsou provedeny během jednoho cyklu, některé trvají více cyklů. • Hodinová frekvence je vyjádřenáv MHz, ale nemusí přesně vyjadřovat rychlost procesoru. • Frekvence procesoru se většinou odvozuje od frekvence sběrnice pro komunikaci s pamětí, je jejím násobkem (cca 3–12×).
Registry • Provádění operací na datech v operační paměti je pomalé • Proto procesor používá registry – rychlé paměťové buňky přímo v mikroprocesoru • Některé registry používá pro data, jiné pro adresaci, jiné pro informace o stavu, ...
Příklady registrůprocesoru Intel 8086 • CS (code segment) – segment adresy instrukce • IP (Instruction Pointer) – offsetová část právě prováděné instrukce (adresa právě prováděné instrukce je tedy CS:IP) • AX – accumulator – střadač – pro matemat. operace • CX – counter – čítač – např. počet opakování cyklu • DX – data – zde jsou uložena zpracovávaná data • F – flags – 16bitový příznakový registr, obsahuje informace o výsledku vykonaných instrukcí (každý příznak = 1 bit) • příznak ZF (Zero Flag) je nastaven na hodnotu 1 při nulovém výsledku operace, jinak 0 • příznak OF (Overflow Flag) je nastaven na hodnotu 1, došlo-liv průběhu provádění instrukce k aritmetickému přeplnění, tzn., že výsledek se nevejde do určeného místa
Příklady instrukcíprocesoru Intel 8086 • Assembler – jazyk pro programování přímo ve strojovém kódu • Každému příkazu assembleru odpovídá jedna instrukce procesoru • Instrukce se nezadávají pomocí čísel, nýbrž symbolickými názvy • Např. • MOVzdroj cíl, např. MOV AX, BX provede operaci AX := BXMOV AH, ES:[$1A40] zapíše do registru AH data z adresy, jejíž segment je uložen v registru ES a ofset je $1A40 (zdroj a cíl mohou být např. registr nebo adresa v paměti) • INCcíl– zvýší hodnotu cíle o 1 • ADDkam co – do argumentu kam přičte hodnotu uloženou v co • JZnávěští – skok na návěští při ZF = 1 • PUSHF – uložení registru příznaků do zásobníku
Způsoby řízení počítače • Obvodové řízení – řadič je tvořen logickými obvody přímo navazujícími na instrukční a datový registr, řízení realizováno obvodovými prostředky. • Mikroprogramové řízení – každá instrukce se při provádění převede na řadu mikroinstrukcí (8–30(–100)), které se potom provedou.
Mikroprogramový řadič IR DAM RAM PM R SIGNÁLY RM ZČP ŘÍDICÍ SIGNÁLY
Porovnání Mikroprogramové řízení (oproti obvodovému): • poskytuje programovým překladačům možnost použít komplexnější instrukce, • umožňuje výrobcům procesorů snadné provádění změn v algoritmech jednotl. instrukcí (změnou mikrokódu), • znamená nižší rychlost procesoru (o dobu dekódování instrukce a vybavovací dobu paměti mikroinstrukcí).
CISC × RISC CISC (Complete Instruction Set Computing) • mikroprogramové řízení • von Neumannova koncepce RISC (Reduced Instruction Set Computing) • obvodové řízení • současný trend (rychlost) • problém: zpětná kompatibilita
RISC – charakteristika • Umí pouze jednoduché instrukce • V každém taktu zpravidla provedena jedna instrukce • Uniformita instrukcí – stejná délka, parametry • Minimální instrukční soubor (80–150) • Chybějící mikrokód • Jednoduchý design (méně součástek než u srovnatelné CISC) – zbývá více místa na další registry • Všechny operace algoritmu musí překladač převést na posloupnost jednoduchých instrukcí
Vyrovnávací paměť – cache • Je rychlejší, než hlavní paměť • Obsahuje vždy část hlavní paměti • Procesor data hledá nejprve zde, teprve pokud je nenajde, čte z hlavní paměti a celý blok dat uloží do cache. • Princip lokality reference adres: procesor pracuje vždy určitou dobu v jedné určité oblasti hlavní paměti – proto je pravděpodobnost nalezení potřebných dat v cache poměrně velká a její používání výrazně urychluje práci procesoru.
Druhy (úrovně) cache • L1 (Level 1 – úroveň 1): malá (cca32–128 kB) a rychlá (na stejné frekvenci jako jádro procesoru) vyrovnávací paměť přímo v procesoru, bývá rozdělena na část pro data a část pro instrukce • L2: velikost cca 128 kB až 2 MB, na frekvenci jádra procesoru nebo na nižší Například • Pentium4 2,8 GHz: 8 + 12 kB L1, 512 kB L2 • AMD Opteron 254: 128 kB L1, 1 MB L2
Metody urychlení vykonávání instrukcíProudové zpracování instrukcí • Anglicky Pipelining. Proces zpracování instrukce lze rozdělit do několika fází, např. • Výběr instrukce z paměti • Dekódování (náhrada mikroinstrukcemi) • Příprava operandů – z hlavní paměti nebo cache • Vykonání operace • Zápis výsledků operace do registrů či paměti • Zatímco 1 instrukce prochází jednotlivými fázemi, začínají se zpracovávat další
Metody urychlení vykonávání instrukcíVykonávání instrukcí mimo pořadí • Anglicky Out of Order – instrukce nejsou vykonávány ve stanoveném pořadí, ale tak, aby byly zpracovány v co nejkratším čase. K současnému zpracování se vybírají instrukce, které využívají vzájemně různé části procesoru, i když zrovna nejsou „na řadě“. Při vykonávání instrukcí v původním pořadí by některé části procesoru zůstávaly nevyužity.
Metody urychlení vykonávání instrukcíPředpověď větvení a skoků • Anglicky Branch Prediction – do speciální paměti se ukládají informace o instrukcích, kterév minulosti provedly skok. Při jejich dalším výskytu procesor už ve fázi jejich dekódování předpokládá skok a rozpracovává odpovídající instrukce (namísto těch, které následují za touto instrukcí).
Metody urychlení vykonávání instrukcíZvyšování hustoty hradel,zvyšování frekvence procesoru • Hradlo = elementární prvek logických obvodů (AND, OR, NOT, …) • Po zmenšením vzdálenosti mezi hradly lze aplikovat vyšší frekvenci, procesor může pracovat s nižším napětím, má menší spotřebu energie a méně se zahřívá • Současné vzdálenosti: 90 nm, 65nm (dříve 180 nm a 130 nm) • pozn.: 130 nm = 0,13 µm = 0,13 mikronu
Metody urychlení vykonávání instrukcíVícejádrové procesory • Současný trendem je výroba procesorů s více (2, 4, …) jádry. • Jádro je tvořeno výpočetními obvody a často také řadičem. Vyrovnávací paměť má každé jádro svou, nebo je společná pro všechna jádra. • Každé jádro může v daném okamžiku zpracovávat více procesů nebo více vláken jednho procesu.
Superskalární počítače • To jsou počítače se superskalárními procesory • Superskalární = procesor obsahuje více než jednu pipeline • Díky tomu může být schopen dokončit více než jednu instrukci za jeden takt
Hyperthreading • Cílem hyperthreadingu je, aby jeden „fyzický“ procesor byl schopen pracovat jako dva „logické“ procesory. • Řešení: je zdvojeno to, co určuje aktuální stav jednoho výpočetního procesu – především registry a stavový vektor (vlajky, programový čítač atd.). Pak je možno, v okamžiku kdy určitý thread (vlákno) čeká například na data z hlavní paměti, prostým přepnutím registrových sad přepnout na druhý thread. Toto samozřejmě optimálně funguje především u vícevláknových úloh. Výkonový zisk se pohybuje okolo 30 %, thready je možno přepnout během jednoho taktu hodin. Přitom všechny ostatní prostředky procesoru jako jsou výpočetní jednotky nebo pamět L2 cache, jsou sdílené.
Vektorové počítače • Četné veličiny ve vědeckých a technických výpočtech jsou popsány jako datová pole. • Proto se v algoritmech pro tyto výpočty používají operace typu vektor–vektor, matice–vektor a matice–matice. • Procesory vektorových počítačů zpracovávají celé vektory dat najednou. • Buď počítač obsahuje více procesorů nebo tuto schopnost má jeden procesor
Přerušení • je signál, který k procesoru vyšle některé hardwarové zařízení nebo program. Vysílatel signálu se tak snaží zabrat procesor sám pro sebe. Klasickým příkladem je stisk klávesy klávesnice. Procesor musí přerušit svoji činnost a povel daný klávesou zpracovat. • Procesory používají vektorový signál přerušení. To znamená, že každé přerušení je identifikováno svým číslem. Na určitém místě v operační paměti je uložena tabulka vektorů přerušení. Vektor přerušení, identifikovaný právě číslem přerušení, ukazuje na adresu v paměti, kde je uložen obslužný podprogram přerušení.
Přerušení • N-té přerušení tedy spustí (přes N-tý vektor přerušení) N-tý program, který zpracuje požadavek zdroje přerušení. Před přechodem na vektor přerušení uloží mikroprocesor svůj momentální stav do speciálního registru zásobníku. To mu umožní vrátit se po zpracování přerušení k původní činnosti. • Pro zpracování přerušení je určen speciální obvod – řadič přerušení (interrupt controller). Ten určuje, jaké přerušení bude obslouženo. • Reakci na některá přerušení lze dočasně zakázat (maskovat). K obsluze pak dojde až po opětovném povolení přerušení.