The wiki page is under active construction, expect bugs.

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
statnice:bakalar:b0b35apo [2025/06/09 18:28] – [Hiearchie] zapleka3statnice:bakalar:b0b35apo [2025/06/09 21:41] (current) zapleka3
Line 1: Line 1:
-==== Architektura počítače; CPU, paměti, subsystémy ====+====== Architektura počítače; CPU, paměti, subsystémy ======
  
 [[https://fel.cvut.cz/cz/education/bk/predmety/50/99/p5099306.html|B0B35APO]] [[https://cw.fel.cvut.cz/wiki/courses/b35apo/lectures/start|Webové stránky předmětu]] [[https://comparch.edu.cvut.cz|CompArch]] [[https://eval.comparch.edu.cvut.cz|WebEval]] [[https://fel.cvut.cz/cz/education/bk/predmety/50/99/p5099306.html|B0B35APO]] [[https://cw.fel.cvut.cz/wiki/courses/b35apo/lectures/start|Webové stránky předmětu]] [[https://comparch.edu.cvut.cz|CompArch]] [[https://eval.comparch.edu.cvut.cz|WebEval]]
Line 422: Line 422:
   * Binární reprezentace má své specifické chování, včetně přetečení, podtečení a zaokrouhlovacích chyb.   * Binární reprezentace má své specifické chování, včetně přetečení, podtečení a zaokrouhlovacích chyb.
   * 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, registry, formát RISC CPU instrukcí, porovnání jednocyklového procesoru a zřetězeného zpracování instrukcí. Jaké problémy přináší zřetězené zpracování instrukcí a jak je lze řešit – stall/forwarding. 
- 
-** 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, kdežto komplexní sada často umožňuje provedení několika operací zavoláním jedné instrukce.  
- 
-** 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, slouží k organizaci lokálních dat funkcí| 
-|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é/multimediální registry | 
- 
-** Formát RISC CPU instrukcí ** 
- 
-Obecně – instrukce mají 32bit, kde bity 0-7 (LSb, little endian -> "zprava doleva") definují operaci, následně zbytek obsahuje registry cíle a zdrojů, případně konstant, či další specifikaci operace. 
- 
-** 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.  
- 
-{{:statnice:bakalar:pasted:20250529-123852.png|400}} 
- 
- Jednotlivé fáze pro pětistupňovou pipeline jsou - 
-  - 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/čtení z paměti 
-  - 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/forwarding ** 
- 
-Za předpokladu, že výsledek předchozí instrukce potřebujeme využít v další instrukci, došlo by bez ošetření k "datovému hazardu". Ten lze vyřešit pomocí zpoždění vykonání následující operace (stall), či doplněním procesoru o tzv. forwarding, při kterém jsou nově vypočítané hodnoty přímo předány instrukci následující. 
- 
-Další možné hazardy, které mohou vzniknout, jsou tzv. "control hazardy" (tj. řídící). Ty nastávají v případě, kdy je vyhodnocován skok. Pokud dojde ke skoku, může tak dojít na stav, kdy instrukce nejsou předpočítané a dochází tak k významnému zpomalení. Toto lze omezit efektivní predikcí skoků, či přesunutím rozhodování o skocích do kroku ID (jako například u architektury MIPS).  
  
  
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á/paralelní, half-duplex/full-duplex, sběrnice PCI. periferie mapované do paměti, sériový port, sběrnice – sériová/paralelní, half-duplex/full-duplex, sběrnice PCI.
  
-RISC-V nemá speciální instrukce pro komunikaci s periferiemi, místo toho se zapisuje do určené oblasti pamětito vede k zápisu / čtení z periferií+==== Periferie mapované do paměti ==== 
 +  * RISC-V nemá speciální instrukce pro komunikaci s periferiemi
 +  * Místo toho se čtení a zápis do periferií provádí zápisem do vyhrazené oblasti paměťovém prostoru. 
 +  * 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**: USB, SATA 
 +    * **Synchroní sběrnice**: PCI, PCIe 
 +  * Tento způsob je jednoduchý na implementacipřehledný a často používaný v embedded systémech. 
 +  * Komunikace přes paměťovou mapu je vhodná pro zařízení, která nepotřebují složité řízení přenosu.
  
-velmi jednoduchá konfigurace - periferie i inicializaci získají paměťový rozsahten slouží esunu dat mezi CPU periferiemi+==== Sériová vs paralelní sběrnice ==== 
 +  * **Paralelní sběrnice** enáší více bitů najednoukaždým vodičem jeden bit. 
 +    * Vyšší propustnost, ale více vodičů = vyšší nároky na prostor a synchronizaci. 
 +  * **Sériová sběrnice** enáší data bit po bitu jedním vodičem. 
 +    * Nižší náklady menší fyzické rozměry – dnes preferovaná varianta i pro vysokorychlostní přenosy. 
 +  * 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/Transmitter)** – obvod pro obousměrný sériový přenos: 
 +    * 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 se data přečtou a příznak ready se smaže 
 +    * **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 +  * **Half-duplex** – data mohou proudit **pouze jedním směrem v daný čas**. 
-  * 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í sběrnice** +=== Asynchronní sběrnice === 
-  * 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í sběrnice === +=== Synchronní sběrnice === 
-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í se musí synchronizovat. 
- +    * **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í zařízení které přijímá a vysílá byty po sériové lince (dva dráty RX a TX) +
- +
-RX_ST - stav přijímání dat +
-   bit 0 ready - byla přijata data +
-RX_DATA - přijatá data +
-  Čtení z adresy RX_DATA současně odstraní čtená data z UARTu a vymaže příznak ready (pokud nejsou další data) +
-TX_ST - stav odesílání dat +
-  bit 0 ready - můžeme zadávat data k odeslání +
-TX_DATA - data k odeslání +
-  Zápis do TX_DATA vede rovnou k odesílání data+
  
 === PCI === === PCI ===
-sběrnice PCI je řízena hodinamipro správnou činnost je nutná co nejpřesnější synchronizace hodin +  * **Paralelní synchronní sběrnice**half-duplex. 
- +  * Počáteční přenos vyžaduje řízení ístupu pomocí arbitra. 
-  přenos začíná tím, že iniciátor pořádá arbitra o idělení sběrnice +  * Iniciátor nastaví adresu a příznak **FRAME** – tím začíná rámec přenosu. 
-  - iniciátor začne vysílání nastavením adresy cílové periferie na AD sběrnici nastavením íznaku FRAME rámec přenosu a bitů cmd +  * Cílové zařízení (**Target**odpoví signálem **DEVSEL**že rozpoznalo svou adresu
-  - periférie, která rozpozná svoji adresu nastaví DevSel na 1 +  * Data se enášejíkdyž jsou oba signály **TRDY** (Target Ready) a **IRDY** (Initiator Ready) aktivní. 
-  - pokud je cílová periferie (Target) připravena přijmout datanastaví TRDY na 1+  * Přenos končí shozením **FRAME** na 0. 
-  - pokud je iniciátor ipraven vyslat datanastaví IRDY na 1 +  * Po přenosu všechny signály přejdou zpět na 0 a sběrnice je opět volná
-  - pyslání posledních dat je indikováno shozením příznaku FRAME na 0. +   
-  - po ukončení přenosu se signály IRDY, TRDY a DEVSEL vrátí na 0 a sběrnice se uvolní pro další přenos+  * **Nevýhody:** 
- +    * Half-duplex – nelze komunikovat oběma směry současně
-PCI je half-duplexnelze současně posílat data oběma směry. +    * Sdílená sběrnice – pomalá periferie brzdí všechny ostatní
- +    * Omezená přenosová rychlost – 33 nebo 66 MHz: 
-Více zařízení na sběrnici - pomalá periférie brzdí rychlé periférie, zvyšuje latency ech ostatních periférií+      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 sběrnicedata se posílají jen mezi dvěma zařízeními+  * Velmi vysoké rychlostiale vyžaduje kvalitní spoje – i drobné rozdíly v délce vodičů nebo kvalitě mohou narušit komunikaci. 
 +  * Nahrazuje klasické PCI u moderních zařízení (grafické karty, SSD, síťové adaptéry apod.).
  
-je full-duplex, tedy data mohou být posílána oběma směry současně 
Navigation

Playground

QR Code
QR Code statnice:bakalar:b0b35apo (generated for current page)