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. | ||