Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
statnice:bakalar:b0b35apo [2025/06/09 18:38] – [5. Vstupně výstupní periferie] zapleka3 | statnice:bakalar:b0b35apo [2025/06/09 21:41] (current) – zapleka3 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== Architektura počítače; | + | ====== Architektura počítače; |
[[https:// | [[https:// | ||
Line 422: | Line 422: | ||
* Binární reprezentace má své specifické chování, včetně přetečení, | * Binární reprezentace má své specifické chování, včetně přetečení, | ||
* Na rovnost dvou desetinných čísel nelze spoléhat — i malá aritmetická chyba způsobí rozdíl. | * Na rovnost dvou desetinných čísel nelze spoléhat — i malá aritmetická chyba způsobí rozdíl. | ||
- | |||
- | ===== 2. CPU ===== | ||
- | RISC/CISC architektura, | ||
- | |||
- | ** RISC/CISC ** | ||
- | |||
- | Reduced Instruction Set Computing vs. Complex Instruction Set Computing referuje o přístupu k návrhu procesorů. Jak název napovídá první z přístupů disponuje tzv. redukovanou instrukční sadou a druhý komplexní instrukční sadou. V redukované sadě mají standardně všechny instrukce stejnou délku a jejich sada není příliš početná. V komplexní nemusí mít instrukce konstantní délku, a jejich množství je větší. Redukovaná sada představuje většinou více práce pro programátora, | ||
- | |||
- | ** Registry ** | ||
- | |||
- | |Registr | Popis| | ||
- | |PC | Program counter - dresa právě prováděné (nebo následující) instrukce| | ||
- | |IR | Instruction register - obsahje kód prováděné instrukce načtený zpaměti | | ||
- | |GPR | General purpose registers – obecné uživatelské registry, mohou se dělit na data a adresy do paměti, nebo být univerzální| | ||
- | |SP | Stack Pointer - kazuje na vrchol zásobníku, | ||
- | |PSW | Program Status Word – definuje v jakém stavu je procesor | | ||
- | |IM | Interrupt Mask – kontrola přerušení | | ||
- | |FPR | Floating point registers – rozšíření procesoru pro práci s reálnými čísly, případně i vektorové/ | ||
- | |||
- | ** Formát RISC CPU instrukcí ** | ||
- | |||
- | Obecně – instrukce mají 32bit, kde bity 0-7 (LSb, little endian -> " | ||
- | |||
- | ** Porovnání jednocyklového procesoru a zřetězeného zpracování instrukcí ** | ||
- | |||
- | Jednocyklový procesor funguje asi takto | ||
- | |||
- | - Počáteční nastavení – inicializace PC a PSW | ||
- | - Načtení instrukce z paněti z adresy PC (nastav PC -> Přečti obsah do IR -> uprav PC dle délky instrukce) | ||
- | - Dekóduj instrukci | ||
- | - Proveď instrukci | ||
- | - Kontrola přerušení nebo výjimky | ||
- | - Opakuj od kroku 2 | ||
- | |||
- | |||
- | Zřetězení přináší rozdělení vykonání jednotlivých úkonů instrukce. Tj. mezitím co dochází k faktickému vykonání instrukce, již se připravuje vykonání další, či dalších několika. | ||
- | Tomuto procesu se také jinak říká pipelining. | ||
- | |||
- | {{: | ||
- | |||
- | | ||
- | - Instruction Fetch - přivedení PC na adreosvý vstup paměti, načtení instrukce | ||
- | - Instruction Decode - dokódování opcode (bity 0-7), přímého operandu a načtení registrů | ||
- | - EXecution - provedení požadované operace v ALU | ||
- | - MEMory - zápis/ | ||
- | - Write Back - zpětný zápis výsledků do pole registrů pro meziregistrové instrukce a paměti | ||
- | |||
- | ** Jaké problémy přináší zřetězené zpracování instrukcí a jak je lze řešit – stall/ | ||
- | |||
- | Za předpokladu, | ||
- | |||
- | Další možné hazardy, které mohou vzniknout, jsou tzv. " | ||
Line 689: | Line 637: | ||
Statická predikce je jednoduchá a nezatěžuje hardware, ale neposkytuje dostatečnou flexibilitu při složitějším chování programů. | Statická predikce je jednoduchá a nezatěžuje hardware, ale neposkytuje dostatečnou flexibilitu při složitějším chování programů. | ||
- | ===== Dynamické prediktory | + | ==== Dynamické prediktory ==== |
Dynamické prediktory se snaží zjistit, zda se skoková instrukce provede, a to na základě jejího předchozího chování. Jinými slovy, sledují minulost konkrétní skokové instrukce a podle toho se snaží odhadnout, zda se tentokrát skočí nebo ne. | Dynamické prediktory se snaží zjistit, zda se skoková instrukce provede, a to na základě jejího předchozího chování. Jinými slovy, sledují minulost konkrétní skokové instrukce a podle toho se snaží odhadnout, zda se tentokrát skočí nebo ne. | ||