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)