Architektura mikroprocesorů
Architektura procesoru je náčrt struktury a funkčnosti procesoru. Architektura mikroprocesorů je charakterizována výčtem registrů a jejich funkcí, vnitřních a vnějších sběrnic, způsobem adresování a instrukční souborem.
Registr je malé uložiště dat v mikroprocesoru s rychlým přístupem, které slouží jako pracovní paměť během výpočtů.
Sběrnice je soustava vodičů pro přenos informací mezi více účastníky na principu jeden vysílá ostatní příjímají. Podle typu přenášené informace je dělíme na datové, adresové a řídící. V praxi však díky multiplexu může jít o jedny dráty.
Procesory CISC a RISC
V dnešní době se ustálilo dělení počítačů do dvou základních kategorií podle typu použitého procesoru:
- CISC - počítač se složitým souborem instrukcí (Complex Instruction Set Computer)
- RISC - počítač s redukovaným souborem instrukcí (Reduced Instruction Set Computer)
CISC
- Procesory CISC jsou charakteristické velmi košatou instrukční sadou strojových instrukcí, instrukce mají proměnlivou délku i dobu vykonání a procesor obsahuje relativně nízký počet registrů. Paradoxně se tak může stát, že operace provedená složenou instrukcí (například násobení) může být nahrazena sledem jednodušších strojových instrukcí (sčítánía bitové posuvy), které mohou být ve výsledku vykonány rychleji, než hardwarově implementovaná složená varianta.
- Označení CISC bylo zavedeno jako protiklad až poté, co se prosadily procesory RISC, které mají instrukční sadu naopak maximálně redukovanou (pouze jednoduché operace, tj. žádné složené, jsou stejně dlouhé a jejich vykonání trvá stejnou dobu).
- Obvyklou chybou je domněnka, že procesory CISC mají více strojových instrukcí, než procesory RISC. Ve skutečnosti nejde o absolutní počet, ale o počet různých druhů operací, které procesor sám přímo umí vykonat na hardwarové úrovni (tj. již z výroby). Procesor CISC tak může například paradoxně obsahovat pouze jednu strojovou instrukci pro danou operaci (např. logická operace), zatímco procesor RISC může tuto operaci obsahovat jako několik strojových instrukcí, které stejnou operaci umí provést nad různými registry
RISC
- Reduced Instruction Set Computer = počítač s redukovaným souborem instrukcí
- počet instrukcí a způsobů adresování je malý, ale zůstává úplný, aby bylo možno provést vše -> v tom se liší od CISC, což je procesor s velkým počtem instrukcí
- instrukce jsou vytvořeny pomocí obvodu -> jednodušší na výrobu než CISC
- širší sběrnice, rychlejší tok instrukcí a dat do procesoru
- instrukce jen nad registry
- navýšený počet registrů ->delší program
- instrukce mají jednotný formát – délku i obsah
- komunikace s pamětí pouze pomocí instrukcí LOAD/ STORE
- každý strojový cyklus znamená dokončení jedné instrukce
- používá se zřetězené zpracování instrukcí
- řešení problému s frontou instrukcí
- mikroprogramový řadič může být nahrazen rychlejším obvodovým
- přenášejí složitost technologického řešení do programu (překladače)
- ředtavitelé : ARM, MOTOROLA 6800, INTEL i960, MIPS R6000
Problémy zřetězeného zpracování
Zřetězené zpracování instrukcí (pipelining)
Na dosažení zřetězení je nutné rozdělit úlohu do posloupnosti dílčích úloh, z nichž každá může být vykonána samostatně, např. oddělit načítaní a ukládání dat z paměti od provádění výpočtu instrukce…a tyto části pak mohou běžet souběžně.
To znamená že musíme osamostatnit jednotlivé části sekvenčního obvodu tak, aby každému obvodu odpovídala jedna fáze zpracování inst. Všechny fáze musí být stejně časově náročné, jinak je rychlost degradována na nejpomalejší z nich. Fáze zpracování je rozdělena minimálně na 2 úseky:
● načtení a dekódování instrukce
● provedení instrukce a případné uložení výsledku
Zřetězení se stále vylepšuje a u novějších procesorů se již můžeme setkat stále s více řetězci rozpracovaných informací (více pipelines), dnes je standardem 5 pipelines.
Problém:
Největší problém spočívá v plnění zřetězené jednotky, hlavně při provádění podmíněných skoků, kdy během stejného počtu cyklů se vykoná více instrukcí.
U pipelingu se instrukce následující po skoku vyzvedává dřív než je skok dokončen. Primitivní implementace vyzvedává vždy následující instrukci, což vede k tomu že se vždy mýlí, pokud je skok nepodmíněný. Pozdější implementace mají jednotku předpovídání skoku (1 bit), která vždy správně předpoví nepodmíněný skok a s použitím cache se záznamem předchozího chování programu se pokusí předpovědět i cíl podmíněných skoků nebo skoků s adresou v registru nebo paměti.
V případě, že se predikce nepovede, bývá nutné vyprázdnit celou pipeline a začít vyzvedávat instrukce ze správné adresy, což znamená relativně velké zdržení. Souvisejícím problémem je přerušení.
Plnění fronty instrukcí
Pokud se dokončí skoková instrukce která odkazuje na jinou část kódu musejí být instrukce za ní zahozeny (problém plnění fronty intrukcí).
- u malého zřetězení neřešíme
- používání bublin na vyprázdnění pipeline, naplnění prázdnými instrukcemi
- predikace skoku - vyhrazen jeden bit předurčující, zda se skok provede či nikoliv
- statická – součást instrukce, řeší programátor
- dynamická
- jednobitová – zaznamenává jestli se skok provedl či ne (1/ 0) - příště bude vědět
- dvoubitová - metoda zpožděného skoku, v procesoru řeší se např. tabulkou s 4kB instr.
- superskalární architektura (zdvojení) - když nastane podmíněný skok, začnou se vykonávat instrukce obou variant, nepotřebná část se pak zahodí. Tento způsob, pak vyžaduje vyřešit ukládání výsledku.
Von Neumannovo schéma počítače
Von Neumannovo schéma počítače bylo navrženo v 40.letech Neumannem a v podstatě se dodnes příliš nezměnila. Je postavena na těchto pricipech:
- architektura je nezávislá na řešeném problému
- paměť rozdělená do buněk stejné velikosti
- program dán sekvencí instrukcí, která je změněny pouze skokem (podmíněným skokem)
- využita dvojkovou soustavou
- Operační paměť - slouží k uchování programu, dat a výsledků výpočtů. Jelikož přístup do hlavní paměti je časově náročný vznikla zásobníková paměť (skupina rychlých registrů) ke které se přistupuje sekvenčně jako na haldu.
- ALU - Arithmetic-Logic Unit - výpočetní jednotka, provádí aritmetické a logické operace.
- Řadič - řídicí jednotka řídí činnost všech částí počítače pomocí řídících signálů. Řadiči zpět jsou zasílané stavové hlášení.
- I/O - zařízení určená pro vstup a výstp
CPU (processor) = Řadič + ALU
Od dnešních počítačů se Von Neumannová architektura liší v množství použitých procesorů. Von Neumann počítá s jedním procesorem zatímco dnešní počítače dokáží rozdělit výpočty mezi více procesoru. Podobně je to s množstvím spuštěných programů, dnešní počítače jsou schopny paralelně zpracovávat více programů, které navíc nemusí být celé, může se vykonat jen část programu a zbytek se zavede v případě potřeby.
Hardvardské schéma počítače
Hardvardské schéma počítače má na rozdíl od Von Neumannova dvě oddělené paměti. Jedna slouží k uložení programu a druhá pro proměnná data. Přičemž je vyloučeno aby se paměti používaly jinak. Tato architektura dr používá např. pro jednoúčelné programové automaty či kalkulačky.