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:28] – [Hiearchie] 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. | ||
Line 1054: | Line 1002: | ||
periferie mapované do paměti, sériový port, sběrnice – sériová/ | periferie mapované do paměti, sériový port, sběrnice – sériová/ | ||
- | RISC-V nemá speciální instrukce pro komunikaci s periferiemi, místo | + | ==== Periferie mapované do paměti ==== |
+ | * RISC-V nemá speciální instrukce pro komunikaci s periferiemi. | ||
+ | * Místo | ||
+ | * Periferie při inicializaci získají svůj vlastní **paměťový rozsah**, přes který komunikují s CPU. | ||
+ | * **Address Decoder** rozhoduje, ke které periferii daný paměťový přístup patří. | ||
+ | * **Asynchroní sběrnice**: | ||
+ | * **Synchroní sběrnice**: | ||
+ | * Tento způsob je jednoduchý na implementaci, přehledný a často používaný v embedded systémech. | ||
+ | * Komunikace přes paměťovou mapu je vhodná pro zařízení, | ||
- | velmi jednoduchá konfigurace - periferie | + | ==== Sériová vs paralelní sběrnice ==== |
+ | * **Paralelní sběrnice** | ||
+ | * Vyšší propustnost, | ||
+ | * **Sériová sběrnice** | ||
+ | * Nižší náklady | ||
+ | * Paralelní sběrnice se používaly u starších zařízení (např. ATA), sériové dnes dominují (např. USB, PCIe). | ||
- | Adress Decoder rozhoduje kam se data přesměrují | + | === Sériový port (UART) === |
+ | * Jeden z nejstarších a nejjednodušších způsobů komunikace. | ||
+ | * **Asynchronní přenos** bez hodin – vysílač a přijímač musejí být nastaveny na stejnou přenosovou rychlost (**baud rate**). | ||
+ | * Např. 9600 Bd, 115200 Bd, nově až 921600 Bd (Bd = 1 bit/s). | ||
+ | * **UART (Universal Asynchronous Receiver/ | ||
+ | * Využívá dvě linky: **TX** (transmit) a **RX** (receive). | ||
+ | |||
+ | * **Paměťově mapované registry UARTu**: | ||
+ | * **RX_ST** – stav přijímání dat | ||
+ | * bit 0: **ready** – byla přijata data | ||
+ | * **RX_DATA** – čtení přijatých dat | ||
+ | * čtením z této adresy | ||
+ | * **TX_ST** – stav vysílání | ||
+ | * bit 0: **ready** – UART je připraven k odeslání | ||
+ | * **TX_DATA** – zápis dat k odeslání | ||
+ | * zápis do registru rovnou spouští odeslání po TX | ||
- | **Asynchroní sběrnice** | + | === Half-duplex vs Full-duplex === |
- | * USB | + | |
- | * SATA | + | * Např. klasický PCI – nelze současně odesílat i přijímat. |
+ | * **Full-duplex** – data mohou proudit **oběma směry současně**. | ||
+ | * Např. PCIe – vyšší efektivita přenosu. | ||
- | **Synchroní | + | === Asynchronní |
- | * PCI | + | * Data nejsou přenášena podle společného hodinového signálu. |
- | * PCIe | + | * Používají se tam, kde nelze garantovat přesnou synchronizaci nebo to není potřeba. |
+ | * **USB** – univerzální rozhraní pro připojení periferií. | ||
+ | * **SATA** – rozhraní pro připojení disků. | ||
- | === Sériová vs paralelní | + | === Synchronní |
- | Sériová sběrnice přenáší data po jedné datové lince, paralelní sběrnice přenáší data po více datových linkách současně | + | * Přenos je řízen společným hodinovým signálem, všechna zařízení |
- | + | * **PCI** | |
- | Sériová linka | + | * **PCIe** |
- | + | ||
- | jeden z nejstarších způsobů komunikace, asynchronní přenos bez hodin | + | |
- | obě strany jsou nastaveny na stejnou rychlost která definuje délku vysílání jednoho bitu (baud rate, dříve např 9600 - 115200 Bd, nově až 921600 Bd, Bd = 1bit/s) | + | |
- | + | ||
- | === UART === | + | |
- | Universal Asychronous Receiver Transmitter | + | |
- | + | ||
- | speciální | + | |
- | + | ||
- | RX_ST - stav přijímání dat | + | |
- | | + | |
- | RX_DATA - přijatá data | + | |
- | | + | |
- | TX_ST - stav odesílání dat | + | |
- | | + | |
- | TX_DATA - data k odeslání | + | |
- | | + | |
=== PCI === | === PCI === | ||
- | sběrnice | + | * **Paralelní synchronní |
- | + | | |
- | | + | |
- | | + | |
- | | + | |
- | - pokud je cílová periferie | + | |
- | | + | |
- | | + | |
- | | + | * **Nevýhody: |
- | + | * Half-duplex | |
- | PCI je half-duplex, nelze současně posílat data oběma směry. | + | * Sdílená |
- | + | * Omezená přenosová rychlost – 33 nebo 66 MHz: | |
- | Více zařízení na sběrnici - pomalá | + | * 32bit: 132 MB/s nebo 264 MB/ |
- | + | * 64bit: 264 MB/s nebo 528 MB/s | |
- | PCI sběrnice umožňuje pouze hodiny s 33 MHz, nebo 66 MHz. | + | |
- | * To odpovídá 132MB/s nebo 264 MB/s pro 32 bitovou variantu | + | |
- | * To odpovídá 264MB/s nebo 528 MB/s pro 64 bitovou variantu | + | |
=== PCIe === | === PCIe === | ||
- | i malé nepřesnosti v délce vodičů, kvalitě spojů vedou k rozdílným rychlostem šíření signálů | + | * **Sériová sběrnice**, point-to-point (peer-to-peer). |
- | to je problém pro vysoké frekvence přenosů | + | * **Full-duplex** – data mohou proudit současně v obou směrech. |
- | + | * Každé spojení je realizováno jako samostatný link – nedochází ke sdílení přenosového pásma. | |
- | PCIe te peer-to-peer | + | * Velmi vysoké rychlosti, ale vyžaduje kvalitní spoje – i drobné rozdíly v délce vodičů nebo kvalitě mohou narušit komunikaci. |
+ | * Nahrazuje klasické PCI u moderních | ||
- | je full-duplex, |