Přenos dat & Paměti Otázka č. 4 — Hardware & Architektura počítačů

1Sériový vs. paralelní přenos dat

Abychom pochopili, jak data proudí mezi součástkami v počítači nebo mezi počítačem a periferií, musíme nejprve porozumět dvěma základním filozofiím přenosu: sériové a paralelní.

Paralelní přenos si lze představit jako dálnici s mnoha pruhy. Máme-li například 8bitovou datovou sběrnici, existuje 8 fyzických vodičů, každý přenáší jeden bit, a všechny bity jednoho bajtu se přenesou najednou, v jednom taktu. Intuitivně to zní ideálně – čím více pruhů, tím rychleji, ne? Jenže realita je komplikovanější. Při vysokých frekvencích nastává problém zvaný skew (časové zkreslení): jednotlivé vodiče mají mírně odlišné elektrické vlastnosti a délky, takže bity, které vyslaly ve stejný okamžik, dorazí na druhý konec v mírně různých časech. Čím vyšší frekvence a čím delší vodič, tím horší skew. Proto bylo paralelní přenosné rozhraní (jako starý IDE nebo paralelní port LPT) omezeno na relativně krátké vzdálenosti a nižší frekvence. Navíc více vodičů znamená širší, dražší a těžší kabely.

Sériový přenos posílá bity jeden za druhým po jediném vodiči (nebo páru vodičů). Vypadá to pomaleji, ale díky jedinému vodiči lze dramaticky zvýšit taktovací frekvenci, protože odpadají problémy se skewem. Moderní sériové rozhraní jako USB 3.x, SATA nebo PCIe dosahují přenosových rychlostí, které starý paralelní přenos nemohl ani zdaleka splnit. Jde o paradox: méně pruhů, ale každý pruh jezdí mnohonásobně rychleji – výsledek je celkově rychlejší.

Klíčová intuice
Důležité je chápat, že „sériový" neznamená pomalý. Je to jen jiná architektura přenosu, vhodná pro jiné požadavky, a v moderní elektronice zcela dominuje.

2Princip připojení s otevřeným kolektorem

Abychom pochopili sběrnice, musíme nejprve rozumět tomu, jak jsou fyzicky realizovány – tedy jak jsou jednotlivá zařízení elektricky připojena ke společnému vodiči.

Normální digitální výstup tranzistoru (nebo logického obvodu) umí aktivně řídit výstupní napětí do dvou stavů: buď aktivně tlačí napětí nahoru (HIGH), nebo aktivně táhne napětí dolů (LOW). Takový výstup se nazývá push-pull a je to nejběžnější typ. Problém nastane, chcete-li propojit více takových výstupů na jeden společný vodič: jestliže jeden výstup tlačí HIGH a druhý táhne LOW, vznikne zkrat – oba zdroje bojují proti sobě, teče velký proud a obvody se poškodí.

Tady přichází otevřený kolektor (open-collector). Jde o tranzistorový výstup, kde kolektor tranzistoru NPN není připojen k ničemu – je „otevřený". Tranzistor umí pouze jednu věc: buď je rozepnutý (nepropustný) a nic nedělá, nebo se sepne a přitáhne výstupní vodič k zemi (LOW). Výstup sám o sobě nedokáže vodič aktivně přitáhnout do HIGH – to dělá pull-up rezistor, který je připojen mezi napájení (VCC) a vodič. Pokud žádný z připojených tranzistorů není sepnut, pull-up rezistor drží vodič na úrovni HIGH. Jakmile se kterýkoliv tranzistor sepne, vodič se přitáhne na LOW.

Princip wired-AND
Toto uspořádání se nazývá wired-AND (drátové AND): výsledek na vodiči je HIGH jedině tehdy, když ŽÁDNÝ z připojených obvodů netáhne dolů. Pokud alespoň jeden táhne dolů, je výsledek LOW. Je to přesně logická funkce AND aplikovaná na fyzickou úroveň vodiče.

Díky tomu lze na jeden vodič připojit libovolně mnoho zařízení bez rizika zkratu. Každé zařízení buď „mlčí" (odpojený tranzistor, vysoká impedance) nebo „mluví" (sepnutý tranzistor, LOW). Toto je klíčový princip pro budování sběrnic, kde musí komunikovat více zařízení.

Vytvoření sběrnice s otevřeným kolektorem

Představme si sběrnici I²C jako typický příklad. Existují dva vodiče: SDA (data) a SCL (hodiny). Oba jsou realizovány pomocí otevřeného kolektoru s pull-up rezistory. Na sběrnici může být připojeno mnoho zařízení (master i slave). Každé z nich může přitáhnout vodič na LOW, ale žádné z nich ho aktivně nedrží na HIGH – o to se starají pull-up rezistory. Díky tomuto principu lze detekovat i kolize: pokud jedno zařízení vyšle HIGH (tím, že uvolní vodič), ale jiné ho zároveň drží na LOW, první zařízení to pozná tím, že vodič zůstane LOW, ačkoliv ho nepřitahuje. Tím se implementuje arbitráž – mechanismus pro řešení konfliktu při přístupu ke sběrnici.

3Princip připojení s třístavovým zesilovačem

Druhou metodou, jak připojit více zařízení na společný vodič, je použití třístavových (tri-state) výstupů.

Klasický digitální výstup má dva stavy: LOG 0 (LOW, nízké napětí) a LOG 1 (HIGH, vysoké napětí). Třístavový výstup přidává třetí stav: vysokou impedanci (Hi-Z, high-Z). V tomto stavu je výstup elektricky odpojen od vodiče – jako kdybyste fyzicky přestřihli drát. Výstup ani netáhne dolů, ani netlačí nahoru. Vodič je pak ovládán jiným zařízením.

Každé zařízení připojené ke sběrnici má svůj výstup řízen signálem OE (Output Enable). Pokud OE = 0, výstup je ve stavu Hi-Z a zařízení je elektricky neviditelné. Pokud OE = 1, zařízení aktivně řídí vodič (HIGH nebo LOW). Klíčové pravidlo je, že v jeden okamžik smí mít aktivovaný výstup vždy jen jedno zařízení – jinak by opět nastala kolize (push-pull vs. push-pull). O dodržení tohoto pravidla se stará řídicí logika sběrnice (bus controller).

Vytvoření sběrnice s třístavovými zesilovači

Typickým příkladem jsou datové sběrnice uvnitř počítače, například u mikroprocesoru nebo pamětí. Procesor, paměť, řadiče periferií – všichni jsou připojeni na společnou datovou sběrnici přes třístavové budiče. Řídicí logika (bus controller) zajišťuje, že v každém okamžiku je aktivní právě jeden vysílač, zatímco ostatní jsou v Hi-Z. Výhodou oproti otevřenému kolektoru je rychlost: třístavový výstup dokáže aktivně řídit úroveň v obou směrech (tlačit HIGH i táhnout LOW), takže se vodič přepíná rychleji než kdyby čekal na nabití přes pull-up rezistor.

4Princip diferenciálního datového páru

Dosud jsme uvažovali o přenosu dat jako o napětí na jednom vodiči vůči společné zemi (GND). Tento přístup se nazývá single-ended přenos a je náchylný na elektromagnetické rušení (EMI). Představte si, že vedle datového vodiče prochází silový kabel nebo motor – elektrické rušení se indukcí nebo kapacitní vazbou naváže na datový vodič a způsobí chyby.

Diferenciální přenos řeší toto elegantně: místo jednoho vodiče používá vždy pár vodičů (D+ a D−). Na jednom vodiči je signál v přímé podobě, na druhém vodiči je přesně invertovaný (opačný) signál. Přijímač pak neměří absolutní napětí na jednom vodiči, ale rozdíl napětí mezi oběma vodiči:

Vzorec
Udiff = U(D+) − U(D−)

Logická 1 odpovídá např. D+ > D− (kladný rozdíl), logická 0 odpovídá D+ < D− (záporný rozdíl).

Geniálnost tohoto přístupu spočívá v odolnosti vůči rušení: rušivý signál (interferenci) naindukuje na oba vodiče stejné napětí (tzv. common-mode noise – souhlasné rušení), protože oba vodiče leží těsně vedle sebe a jsou vystaveny prakticky identickému elektromagnetickému prostředí. Při výpočtu rozdílu se toto rušení odečte samo od sebe a výsledný diferenciální signál zůstane čistý. Přijímač implementuje CMRR (Common Mode Rejection Ratio) – schopnost potlačit souhlasné rušení, typicky desítky až stovky dB.

Díky tomu může diferenciální přenos pracovat s mnohem nižšími napěťovými úrovněmi (např. 400 mV místo 3,3 V nebo 5 V), protože nepotřebuje velkou rezervu vůči šumu. Nižší napětí znamená rychlejší přepínání a nižší spotřebu. Diferenciální přenos je základem RS-422, RS-485, USB, HDMI, DisplayPort, LVDS, CAN a mnoha dalších moderních rozhraní.

5Popis vybraných sběrnic

Sběrnice je komunikační systém, který umožňuje přenos dat mezi více zařízeními po sdíleném médiu. Každá sběrnice má svůj protokol – sadu pravidel určující, jak se data posílají, adresují, synchronizují a jak se řeší kolize.

I²C (Inter-Integrated Circuit)

I²C (čteno „I squared C" nebo „I two C") je sériová sběrnice navržená firmou Philips (dnes NXP) v 80. letech pro komunikaci mezi integrovanými obvody na jedné desce. Fyzicky ji tvoří pouze dva vodiče: SCL (Serial Clock Line) a SDA (Serial Data Line), oba realizované pomocí otevřeného kolektoru s pull-up rezistory.

Sběrnice funguje na principu master-slave: jeden (nebo více) masterů generuje hodinový signál SCL a iniciuje komunikaci, zatímco slaves odpovídají. Každý slave má svoji 7bitovou (nebo 10bitovou) adresu – master vždy nejprve vyšle adresu a bit R/W (čtení/zápis), slave se pozná a odpoví potvrzením (ACK – acknowledge bit). Tím pádem může na sběrnici existovat až 128 různých zařízení (při 7bitové adrese).

I²C je relativně pomalé (standardní 100 kbit/s, fast mode 400 kbit/s, high-speed 3,4 Mbit/s) a hodí se pro komunikaci s pomalými periferiemi jako teplotní senzory, EEPROM paměti, I/O expandéry, displeje nebo obvody reálného času (RTC). Výhodou je minimální počet vodičů a snadná rozšiřitelnost sběrnice o další zařízení.

SPI (Serial Peripheral Interface)

SPI je sériové synchronní rozhraní navržené firmou Motorola, které používá čtyři vodiče: SCLK (hodinový signál), MOSI (Master Out Slave In – data od mastera ke slave), MISO (Master In Slave Out – data od slave k masterovi) a CS/SS (Chip Select/Slave Select – výběr konkrétního slave).

Na rozdíl od I²C nemá SPI adresování – slave se vybírá dedikovaným signálem CS pro každé zařízení zvlášť. Pokud chceme připojit 5 různých zařízení, potřebujeme 5 pinů CS. To je nevýhoda při velkém počtu zařízení, ale výhodou je, že komunikace je plně duplexní (data lze posílat oběma směry současně po MOSI a MISO) a je rychlejší než I²C – typicky desítky až stovky Mbit/s.

SPI je standardem pro flash paměti, SD karty, displeje, analogově-digitální převodníky a podobné obvody vyžadující rychlejší přenos dat.

RS-232

RS-232 je jeden z nejstarších standardů pro sériovou komunikaci, původně navržený pro komunikaci počítače s modemem. Používá asynchronní přenos – neexistuje sdílený hodinový signál. Místo toho obě strany předem souhlasí na přenosové rychlosti (baud rate) a každý bajt je ohraničen start bitem a stop bitem, takže přijímač ví, kde bajt začíná a kde končí.

Napěťové úrovně RS-232 jsou neobvyklé: logická 1 je reprezentována napětím od −3 V do −15 V, logická 0 je +3 V až +15 V – tedy opačně, než by člověk čekal, a s výrazně vyššími napětími než TTL logika. Proto je potřeba převodník (jako MAX232) mezi TTL logikou mikroprocesoru a RS-232 konektorem.

Omezení RS-232
RS-232 je single-ended, náchylné na rušení, a vhodné jen na krátké vzdálenosti (do ~15 m při nižší rychlosti). Dnes ho najdeme hlavně v průmyslových zařízeních a starší technice; v PC ho nahradilo USB.

IEEE 1284 (paralelní port)

IEEE 1284 je standard pro paralelní port (někdy nazývaný Centronics port nebo LPT port), který byl dlouhá léta standardním rozhraním pro připojení tiskáren k PC. Přenáší data po 8 bitech paralelně, doplněných řídicími signály (Strobe, Busy, Acknowledge atd.). Standard IEEE 1284 definoval několik provozních módů: jednosměrný (Compatibility), obousměrný (Nibble nebo Byte mode) a vysokorychlostní ECP/EPP mody. Maximální přenosová rychlost se pohybuje kolem 1–4 MB/s. Dnes je paralelní port zcela obsoletní, nahrazený USB.

USB (Universal Serial Bus)

USB je dnes nejrozšířenějším rozhraním pro připojení periferií k počítači. Je navrženo jako hierarchická hvězdicová topologie: centrální host (počítač) komunikuje s huby, na které jsou připojena zařízení. Komunikace je vždy iniciována hostem – zařízení nemohou sama od sebe začít posílat data, musí čekat na výzvu od hosta.

USB prošlo několika generacemi:

Verze Rychlost Označení
USB 1.112 Mbit/sFull Speed
USB 2.0480 Mbit/sHigh Speed
USB 3.0 / 3.1 Gen 15 Gbit/sSuperSpeed
USB 3.1 Gen 210 Gbit/sSuperSpeed+
USB 3.2 Gen 2×220 Gbit/sSuperSpeed 20G
USB 4až 40 Gbit/sUSB4

Fyzicky USB 3.x a novější používají diferenciální páry pro superspeed přenos. USB-C konektor je oboustranný a podporuje nejnovější verze protokolu, ale i alternativní módy (DisplayPort, Thunderbolt). USB také umožňuje napájení zařízení (USB Power Delivery až 240 W).

6Rozdělení paměti v PC – RWM vs. ROM paměti

Paměť v počítači není monolit – existuje hierarchie různých typů pamětí s odlišnými vlastnostmi, rychlostmi a účely. Základní dělení je na RWM (paměti pro čtení i zápis) a ROM (paměti pouze pro čtení, případně s omezeným zápisem).

ROM (Read-Only Memory)

ROM je historicky paměť, do které lze pouze číst a nelze ji přepsat za normálního provozu. Uchovává data i bez napájení (je nevolatilní). Původní ROM byla naprogramována při výrobě a nelze ji změnit vůbec. Postupem času vznikly modifikace:

TypCelý názevVlastnosti
ROM Read-Only Memory Naprogramována při výrobě, nelze změnit
PROM Programmable ROM Naprogramovat jednou elektricky (přepálení pojistek)
EPROM Erasable PROM Mazání UV světlem, opakovaně programovatelná
EEPROM Electrically Erasable PROM Elektrické mazání byte po bytu; pomalé, omezený počet zápisů
Flash Flash paměť Mazání celého bloku; rychlejší, levnější. Základ SSD, USB flash, SD, BIOS/UEFI

Moderní „ROM" v počítači je tedy vlastně flash paměť, která je technicky přepisovatelná, ale z pohledu běžného provozu ji čteme a zapisujeme do ní jen výjimečně (při aktualizaci firmware).

RWM (Read-Write Memory) – RAM

RWM je paměť, do které lze libovolně číst i zapisovat za běhu. Tuto skupinu dnes nejčastěji nazýváme prostě RAM (Random Access Memory) – byť technicky je RAM pouze označení pro přímý přístup (na rozdíl od sekvenčního přístupu u páskových pamětí), v praxi se tím myslí operační paměť. RWM dělíme dále na:

SRAM – Static RAM

Data jsou uložena v bistabilních klopných obvodech (flip-flopech). Dokud je napájení, data zůstávají bez potřeby obnovy. Je velmi rychlá (nanosekundová latence) a spolehlivá, ale zabírá mnoho plochy na čipu (6 tranzistorů na bit) a je drahá. Používá se jako cache paměť procesoru (L1, L2, L3 cache).

DRAM – Dynamic RAM

Data jsou uložena jako náboj na kondenzátoru (1 tranzistor + 1 kondenzátor na bit). Kondenzátor se vybíjí, takže je třeba data pravidelně obnovovat (refresh) – typicky každých 64 ms se projdou všechny buňky a náboj se doplní. DRAM je hustší (více bitů na mm²) a levnější než SRAM, ale pomalejší a komplikovanější na řízení. Slouží jako hlavní operační paměť PC (DDR SDRAM a její generace DDR2 až DDR5).

DDR SDRAM – Double Data Rate Synchronous DRAM

Moderní provedení DRAM, které přenáší data při náběžné i sestupné hraně hodinového signálu (odtud „Double Data Rate"), čímž zdvojuje efektivní přenosovou šířku pásma oproti SDR (Single Data Rate) paměti při stejném hodinovém kmitočtu.

7Organizace paměti: kapacita, hloubka a délka datového slova

Abychom rozuměli tomu, jak paměti fungují a jak se popisují, musíme si zavést tři základní pojmy: kapacita, hloubka a délka datového slova.

Délka datového slova (anglicky word width nebo data width) je počet bitů, které paměť dokáže přečíst nebo zapsat v jedné operaci přístupu. Jinými slovy, kolik bitů má paměť datovou sběrnici. Paměť se v technické literatuře popisuje zápisem ve tvaru hloubka × šířka, například 1M × 8 bit.

Hloubka paměti je počet adresovatelných míst (buněk, slov, řádků) – tedy kolik různých adres paměť obsahuje. V příkladu 1M × 8 je hloubka 1 milión (1 048 576 = 220) adresovatelných míst.

Kapacita paměti je celkový počet bitů (nebo bajtů), které paměť pojme. Vypočítá se jako:

Vzorec
Kapacita = hloubka × délka datového slova

V příkladu 1M × 8 bit:

Tato trojice pojmů je klíčová při návrhu systémů s pamětí. Pokud například potřebujeme adresovatelnou paměť o kapacitě 1 MB s 8bitovým datovým slovem, potřebujeme adresní sběrnici o šířce 20 bitů (protože 220 = 1 048 576). Pokud bychom chtěli 16bitové datové slovo (word), stačilo by nám 19 adresních bitů pro stejnou kapacitu v bajtech (ale 20 bitů pro stejný počet 16bitových slov).

Hloubka přímo určuje počet potřebných adresních vodičů: pro hloubku 2n potřebujeme n adresních bitů (n vodičů adresní sběrnice). Šířka datového slova určuje počet datových vodičů.

Příklad paměti Hloubka Šířka Adresní vodiče Datové vodiče Kapacita
1M × 81M = 2208 bit2081 MiB
256K × 16256K = 21816 bit1816512 KiB
4M × 14M = 2221 bit221512 KiB
30pin SIMMrůzná8 bit8256 KB – 16 MB
72pin SIMMrůzná32 bit321 MB – 128 MB
DDR4 DIMMrůzná64 bit64 (72 s ECC)4 GB – 64 GB

Porozumění organizaci paměti je nezbytné nejen při výběru nebo návrhu paměťového subsystému, ale i při psaní nízkoúrovňového kódu, práci s registry a portovém mapování v embedded systémech.

Shrnutí

Tímto jsme prošli celou otázku č. 4 od přenosů dat přes fyzické principy připojení a typy sběrnic až po hierarchii paměti a její vnitřní organizaci. Každý z těchto konceptů na sebe navazuje: bez pochopení otevřeného kolektoru nelze plně pochopit I²C, bez pochopení rozdílu SRAM/DRAM nelze správně vybrat paměť pro danou aplikaci a bez pojmů hloubka/šířka nelze správně dimenzovat adresní nebo datovou sběrnici.

Schéma hradla NAND s otevřeným kolektorem

Níže je uvedeno reálné schéma zapojení hradla NAND s otevřeným kolektorem (SPSE Havířov). Schéma zachycuje NPN tranzistory Q1 a Q2, rezistory R1–R3, diody D1 a D2 a výstupní konektory J1–J3. Jde o typické obvodové řešení, kde kolektor výstupního tranzistoru je ponechán bez vnitřního připojení k napájení, takže pull-up rezistor musí být připojen externě.

Schéma NAND s otevřeným kolektorem

Schéma zapojení hradla NAND s otevřeným kolektorem – SPSE Havířov

Sběrnice – rozšiřující informace ze školních slidů

Definice a základní vlastnosti sběrnice

Sběrnice – úvod
Sběrnice – rozdělení

Sběrnice je svazek vodičů propojující jednotlivá zařízení nebo obvody mezi sebou. Zajišťuje přenos nejen dat, ale také adres nebo řídících signálů či stavových hlášení. Každá periferie v PC je připojena k nějaké sběrnici – ty jsou pak přivedeny k severnímu nebo jižnímu mostu (chipset, obsahující jejich řadiče). Rychlost sběrnice může podstatně ovlivnit běh celého systému a její návrh je neméně důležitý jako návrh architektury mikroprocesoru.

Sběrnice v PC dělíme na dvě hlavní skupiny. Lokální sběrnice jsou přímo připojeny k mikroprocesoru nebo v rámci chipsetu a jsou nejrychlejší (FSB, QPI, DMI, …). Rozšiřující sběrnice (také systémové) umožňují připojení dalších komponent (periferií), jsou pomalejší než lokální, zakončeny slotem nebo portem, a je kladen důraz na rychlost a standardizaci.

Nejdůležitější parametry sběrnice

Parametry sběrnice

Mezi klíčové parametry každé sběrnice patří: šířka přenosu (počet bitů, které lze současně přenést, udávaná v bitech), frekvence (maximální fMAX, s jakou může sběrnice pracovat, v Hz), přenosová rychlost (propustnost) (počet přenesených bitů za jednotku času, v bit/s nebo T/s) a přístupová doba (doba čekání na uvolnění sběrnice, v sekundách).

Výhody a nevýhody sběrnic

Výhody a nevýhody sběrnic

Mezi výhody sběrnic patří možnost připojení více zařízení najednou, přehledná konstrukce, otevřené systémy (možnost připojit/odpojit za chodu). Nevýhodami jsou složité řízení (protokoly), skutečnost, že je sběrnice tak rychlá jako její nejpomalejší článek, rušení od jiných obvodů nebo sebe samotných, a omezení vzdáleností při vysokých frekvencích.

Rozdělení sběrnic

Rozdělení sběrnic
Sériové vs paralelní sběrnice

Sběrnice dělíme podle přenášeného signálu na řídící, datové a adresní. Podle typu přenosu rozlišujeme sériové vs. paralelní (u sériových jsou jednotlivé bity posílány za sebou v rámci CLK, u paralelních jdou všechny bity současně s CLK) a synchronní vs. asynchronní (u synchronních jeden CLK generuje master a posílá všem slave, u asynchronních má každé zařízení svůj CLK). Podle směru dělíme sběrnice na jednosměrné vs. obousměrné (simplex, half-duplex, full-duplex).

Příklady sériových sběrnic: RS-232, RS-422, RS-485, I²C, SPI, PS/2, USB, FireWire, PCI-Ex, SATA, eSATA. Příklady paralelních sběrnic: IEEE 1284, IEEE 488, ISA, SCSI, PCI, PATA (IDE/ATA).

Výstup s otevřeným kolektorem – schéma sběrnice

Výstup s otevřeným kolektorem – pull-up
Výstup s otevřeným kolektorem – sběrnice

Výstup s otevřeným kolektorem vyžaduje vnější zátěžový odpor (pull-up rezistor, Rpu = 1–10 kΩ). V klidovém režimu udržuje logickou '1' a umožňuje rozlišení chybového stavu. Využívá se všude, kde hrozí vysílání více zdrojů současně – každý zdroj si sám přiděluje sběrnici. Připojením více obvodů na jednu linku (jako u I²C) lze vytvořit sběrnici, kde zdrojů vysílání může být více, ale v danou chvíli vysílá pouze jeden. Komunikaci může zablokovat kdokoliv, kdo vnutí na sběrnici logickou '0'.

Třístavový výstup – schéma

Třístavový výstup – tri-state

Třístavový výstup nabývá tří stavů: logická '1', logická '0', a stav vysoké impedance (Hi-Z), ve kterém se obvod chová jako by byl odpojen. Vysílá pouze jedno zařízení, ostatní jsou ve třetím stavu. Výstupy ostatních nijak nezatěžují sběrnici. Třístavové výstupy jsou základem systémových sběrnic v PC (datová sběrnice procesoru, pamětí, řadičů).

I²C – schéma zapojení a princip

I2C – schéma zapojení
I2C – vlastnosti
I2C – adresace a rychlost
I2C – princip komunikace
I2C – přenos a ACK bit

I²C (Inter-Integrated Circuit, Philips 1982) je dvouvodičová, obousměrná, synchronní, sériová, half-duplex, multi-master, multi-slave sběrnice. Je určena pro nízkorychlostní periférie (A/D a D/A převodníky, LCD, externí paměť, RTC, …). Master řídí komunikaci a generuje CLK. Sběrnice poskytuje detekci kolize a prevenci proti poškození dat při vysílání více zdrojů současně.

Adresace zařízení umožňuje připojit až 128 zařízení (7bit) nebo až 1024 zařízení (10bit v rozšířené verzi). Přenosová rychlost: Standard Mode < 100 kbit/s, Fast Mode < 400 kbit/s, High Speed Mode < 3,4 Mbit/s.

Princip I²C: jeden vysílá, všichni ostatní poslouchají – na základě adresy se ohlásí cíl. Je nutno definovat adresu cíle a zda R/W (R/W bit může být součástí adresy). Klidový stav = logická '0' na SDA i SCL. Přenos start/stop bitem (přechod SDA do log. '0'/'1', když SCL v log. '1') zahájí/ukončí přenos. Data se přenáší po 1 bajtu, od MSB po LSB. Změna hodnoty na SDA probíhá pouze při SCL v log. '0'. S jedním CLK se přenese 1 bit. Po každém bajtu přijímač generuje ACK (potvrzující) bit (ACK v log. '0' = přenos ok).

SPI – schéma zapojení a vlastnosti

SPI – schéma zapojení
SPI – vlastnosti

SPI (Serial Peripheral Interface, Motorola 1985) je čtyřvodičová, obousměrná, synchronní, sériová, full-duplex, multi-slave sběrnice. DI = MISO, DO = MOSI. Výběr slave probíhá demultiplexorem (CS/SS). Master řídí komunikaci a generuje CLK. Není nutná adresace – každý slave má svůj CS pin. Přenosová rychlost 1–70 MHz (cca 0,9–66,7 Mbit/s).

RS-232 – sériový port COM

RS-232 – vlastnosti
RS-232 – konektor a parametry
RS-232 – průběh signálu

RS-232 zajišťuje full-duplex komunikaci pouze dvou zařízení. Používá asynchronní přenos dat s paritním bitem a start/stop bity. Řízený přenos dat probíhá hardwarově (vodiče sběrnice zabraňují vysílat data dříve, než je přijímací zařízení připraveno) nebo softwarově (speciální znaky synchronizující komunikaci). Možno využít různé kódování: ASCII, Baudot, EBCDIC. Maximální vzdálenost je 15 m (čím větší vzdálenost, tím pomalejší komunikace), maximální rychlost 115,2 Bd. Využívá tzv. modulační rychlost – počet změn stavu přenosového média za jednotku času. Konektor DE-9 má 9 pinů: DCD, RXD, TXD, DTR, GND, DSR, RTS, CTS, RI.

FireWire – IEEE 1394

FireWire IEEE 1394 – vlastnosti
FireWire IEEE 1394 – rychlosti

FireWire (Apple 1986, spolupracovaly Texas Instruments, Sony, DEC, IBM, STM) je sériová sběrnice pro připojení periferií k PC se stromovou topologií a možností P2P komunikace (např. tiskárna a scanner bez nutnosti CPU). Podporuje až 63 zařízení. Dříve se využíval hlavně u digitálních kamer a externích disků. Dnes nalézá uplatnění v automobilovém nebo vojenském průmyslu. Přenosové rychlosti: IEEE 1394a < 400 Mbit/s (half-duplex, FireWire400), IEEE 1394b < 800 Mbit/s (full-duplex, FireWire800), IEEE 1394c < 3,2 Gbit/s, IEEE 1394d < 6,4 Gbit/s. Maximální délka kabelu do 4,5 m.

RS-422 a RS-485

RS-422 a RS-485

RS-422 je sériová sběrnice s 2× krouceným párem (TP), full-duplex. TP eliminuje přeslechy a šum. Umožňuje 1 vysílač a až 10 přijímačů. Bez konektoru (svorkovnice). Využití jako prodloužení RS-232. Maximální vzdálenost 1200 m.

RS-485 je sériová sběrnice s TP, (full)duplex. Využití v průmyslovém prostředí. Podporuje až 32 jednotek (vysílačů a přijímačů). Využívá diferenciální kódování dat. Přenos až 10 Mbit/s. V jeden okamžik může vysílat pouze jeden vysílač. Maximální vzdálenost 1200 m.

Paralelní port – IEEE 1284 – LPT

IEEE 1284 LPT – paralelní port

Paralelní port (Printer port / Line Printer Terminal, 1970) byl původně pouze simplexní, později half-duplex. Má 25 vodičů: 8 datových, 9 řídících, 8 zemnících. Maximální vzdálenost do 5 m (ideálně do 2 m). Řídící signály: STROBE, SEL (Select), PE (Paper End), BUSY, ACK, ERROR, AUTOF, INIT, SELIN.

IEEE 488 – GPIB

IEEE 488 – GPIB vlastnosti
IEEE 488 – vodičení a parametry

IEEE 488 je také znám jako GPIB (General Purpose Interface Bus) nebo HP-IB (Hewlett Packard Interface Bus, 1972) nebo IMS (International Measurement System). Byl původně navržen jako sběrnice pro automatizované testování přístrojů – dnes je standardem pro automatizované a průmyslové řízení přístrojů. Umožňuje přenos mezi dvěma a více přístroji, až 15 zařízení na jedné 8bitové sběrnici. Lze připojit PC, který řídí přenos dat. Celková délka max. 20 m (mezi přístroji max. 4 m, lze prodloužit extendery/zesilovači). Má 24 vodičů: 16 signálových (8 datových, 3 pro handshake, 5 řídících) a 8 zemnících. Asynchronní half-duplex, přenosová rychlost max. 1 MB/s (záleží na vzdálenosti).

Paměti – rozšiřující informace ze školních slidů

Úvod do pamětí

Paměti – úvod
Paměti – adresa, data, paměťové místo

Paměti slouží k uchování a opětovnému vyvolání informace v binární formě. Jsou realizovány jako polovodičové obvody/moduly, jejichž vlastnosti závisí na typu konstrukce paměťových buněk. Jsou složeny z paměťových buněk (1 bit = 1 paměťová buňka) v maticovém uspořádání (paměťová mřížka/matice). Poloha umístění buňky je dána souřadnicemi řádku a sloupce.

Adresa je souřadnice řádku a sloupce, zadávaná binárně na adresní sběrnici (A0–An), v textu obvykle uváděná v hexadecimální soustavě (např. 0x1B). Data jsou přenášena po datové sběrnici (D0–Dn), která může být jednosměrná nebo obousměrná. Paměťové místo je nejmenší adresovatelná jednotka, daná adresou a počtem paměťových buněk, které jsou zde uloženy.

Kapacita paměti

Kapacita paměti

Kapacita paměti je celkový objem dat/informací, které mohou být v paměti uloženy – tedy počet paměťových buněk, jež paměť obsahuje. Je to součin hloubky paměti a délky datového slova. Jednotkou je bit, respektive bajt a jeho násobky.

Hloubka paměti

Hloubka paměti – schéma zapojení

Hloubka paměti je počet různých adres, s nimiž je možno pracovat – tedy počet všech adres paměti (počet slov paměti), udávaný v jednotce „slovo". Hloubku paměti lze rozšířit paralelním zapojením paměťových čipů (jak ukazuje schéma se dvěma čipy 2716 a 7404, kde jsou propojeny adresní vodiče a jejich výstupy jsou spojeny paralelně přes OE signál).

Délka datového slova

Délka datového slova – schéma zapojení

Délka datového slova je šířka datové sběrnice – počet bitů, které mohou být na určité adrese paralelně uloženy. Obecně se řídí délkou slova CPU (64bit CPU → 64bit datová sběrnice). Délku datového slova lze rozšířit sériovým zapojením paměťových čipů – jak ukazuje schéma se dvěma čipy 2716 zapojenými tak, že první obsluhuje bity d0–d7 a druhý d8–d15, přičemž obě sdílejí stejné adresní vodiče a OE/CE signály.

Organizace paměti

Organizace paměti – zápis 16k (2k x 8)
Organizace paměti – počty a vzorce

Standardní zápis organizace paměti má tvar: celková kapacita (hloubka × šířka), např. 16k (2k × 8), kde 16k bitů je celková kapacita, 2k je hloubka (2048 adresovatelných míst) a 8 je délka datového slova v bitech.

Informace je uspořádána do N paměťových míst (slov) s n bity. Platí: Kapacita = N × n. Jedno z N slov je vybráno pomocí p-bitové adresy, kde N = 2p. Počet adresových vodičů (p-bitová adresa) se vypočítá jako: p = log N / log 2. Příklad 1: máme-li 14 adresových vodičů, hloubka paměti je 214 = 16 384 slov. Příklad 2: hloubka 128k slov = 131 072 = 217, tedy potřebujeme 17 adresních vodičů.

Paměťová mapa

Paměťová mapa

Paměťová mapa graficky znázorňuje rozmístění paměťových prostorů v adresním prostoru procesoru. První adresa (0x0000…) je nahoře, poslední adresa je dole. Vodiče adresní sběrnice jsou označovány A0–An. Mapa ukazuje, jaké paměťové oblasti jsou přiřazeny různým zařízením a kde se nacházejí volné oblasti.

Rozdělení pamětí – přehled

Rozdělení pamětí – RWM vs ROM

Paměti dělíme na dvě základní skupiny. RWM (Read Write Memory) jsou volatilní paměti – po odpojení napájení je informace ztracena. Patří sem: RAM (SRAM, DRAM) a No-RAM (LIFO, FIFO). ROM (Read Only Memory) jsou nevolatilní paměti – data zůstanou uchována i po odpojení napájení. Patří sem: ROM, PROM, EPROM, EEPROM, FLASH.

No-RAM paměti – LIFO a FIFO

No-RAM – LIFO a FIFO

No-RAM paměti jsou paměti bez náhodilého přístupu. LIFO (Last In First Out) – zásobník, česky „zásobník" nebo „magický sud". FIFO (First In First Out) – fronta, česky „fronta" nebo „trubka". Tyto paměti přistupují k datům v pevně daném pořadí, nikoliv přímo na libovolnou adresu.

RWM – RAM (SRAM a DRAM)

RWM – RAM, SRAM, DRAM

SRAM (Static RAM): rychlejší, dražší, mnohem menší kapacita na čip, menší spotřeba. DRAM (Dynamic RAM): nutný refresh z důvodu parazitní kapacity tranzistoru (kondenzátoru), pomalejší, levnější, méně náročná na výrobu. Adresa přidělována ve dvou krocích: nejprve RAS (Row Address Strobe), pak CAS (Column Address Strobe). Počet adresních vodičů bývá proto poloviční oproti skutečnému počtu adres.

SRAM – vnitřní schéma buňky

SRAM – schéma buňky se 6 tranzistory
SRAM – přístup, row select, column select

Buňka SRAM je tvořena bistabilním klopným obvodem (flip-flopem) ze 6 tranzistorů (T1–T6 na schématu). Tranzistory T5 a T6 jsou zátěžové (PMOS), T3 a T4 tvoří inverty (NMOS), T1 a T2 jsou přístupové tranzistory řízené adresním vodičem. Data jsou uložena jako stabilní stav cross-coupled invertorů. Přístupové schéma SRAM zahrnuje: RAM buňku, signály ROW SELECT, COLUMN SELECT, CHIP SELECT, třístavový zesilovač na výstupu a READ/WRITE control logiku.

DRAM – vnitřní schéma buňky

DRAM – schéma buňky s kondenzátorem

Buňka DRAM se skládá z jednoho přístupového tranzistoru (Q3) a jednoho parazitního kondenzátoru (C1 PARAZIT). Data jsou uložena jako elektrický náboj na kondenzátoru. Protože se kondenzátor vybíjí (parazitní proud), je nutný pravidelný refresh. Schéma ukazuje datové vodiče DATA write a DATA read a adresní sběrnici.

ROM (Read Only Memory) – vnitřní schéma

ROM – vlastnosti a použití
ROM – schéma buňky, Hodnota 0 a 1

Obsah ROM je dán již při výrobě (programována maskou – MROM, Mask ROM). Vhodná pro velkovýrobu – je náročná a drahá na výrobu, při chybě je nutno vyměnit celý čip. Životnost 50–60 let. Použití: BIOS, firmware (mechanik, grafických karet, …). Schéma ukazuje princip buňky ROM: adresový vodič a pull-up rezistor R, tranzistor T a datový vodič. Hodnota „0" = tranzistor je zapojen a přitáhne datový vodič k zemi. Hodnota „1" = tranzistor není zapojen (odpojeno), datový vodič zůstane na HIGH (pull-up).

PROM – Programmable ROM (1956)

PROM – vlastnosti
PROM – schéma s tavnými pojistkami

PROM (také OTP – One Time Programmable) je elektricky jednou programovatelná paměť (možno i po částech). Není nutno zadávat „know-how" výrobci. Verze s initial stavem „samé 1": tavná pojistka/drátek – proražení = „0", dioda kvůli zpětné vazbě. Verze s initial stavem „samé 0": dvě diody proti sobě – proražení jedné = „1", druhá slouží pro zpětnou vazbu. Použití a životnost jsou obdobné jako u ROM. Schéma PROM ukazuje matici diod s tavnými pojistkami (Fuse link), dekodér 2:4, pull-up rezistory, signál Output Enable (OE) a výstupy D0–D7.

EPROM – Erasable PROM (1971)

EPROM – vlastnosti a foto čipu

EPROM (UV-EPROM) je první mazatelná ROM. Mazatelná UV světlem, přibližně 25 minut (pozor při zapomenutí na stole!). Pro programování je nutný speciální programátor a provádí se kompletní přepis. Použití je obdobné jako u předchůdců. Životnost 10–20 let.

EEPROM a Flash

EEPROM a Flash – vlastnosti

EEPROM (Electrically EPROM, 1983) – E²PROM je elektricky mazatelná a přepisovatelná PROM. Před zápisem je nutno celou smazat. Potřebuje speciální programátor. Rozdílné napětí pro mazání, zápis a čtení. Životnost cca 10 let. Je pomalejší než Flash.

Flash (počátek 90. let) – možno mazat po částech (po blocích). Nevyžaduje speciální programátor. Má omezený počet zápisů. Jde o jeden z typů EEPROM → EEPROM Flash.

Cyklus čtení a zápisu do paměti

Čtení a zápis – zjednodušeně
Čtení z paměti – časový diagram
Zápis do paměti – časový diagram

Cyklus pro čtení: (1) Vystavení požadované adresy na adresní sběrnici. (2) Aktivace čtecího signálu (R/W̄). (3) Přečtení dat z datové sběrnice. (4) Ukončení čtecího signálu.

Cyklus pro zápis: (1) Vystavení požadované adresy na adresní sběrnici. (2) Vystavení požadovaných dat na datovou sběrnici. (3) Aktivace signálu pro zápis (R/W̄). (4) Ukončení signálu pro zápis.

Časové diagramy ukazují průběhy signálů R̄A̅S̅ (Row Address Strobe), C̄A̅S̅ (Column Address Strobe), adresního vodiče A (nejprve ROW ADDRESS, pak COLUMN ADDRESS), signálu W̄ a výstupu Q (VALID DATA). Klíčové časové parametry: tRC (cyklus RAS), tRAS, tCAS, tRCD, tAA, tCAC a další.

Přidělování operační paměti (OS)

Operační paměť (OP) využívají procesy při zpracování instrukcí a dat a je nutno ji spravovat. Správce paměti je součástí OS a kooperuje s HW. Jeho úkoly jsou: přidělovat OP jednotlivým procesům při vyžádání, udržovat informace o paměti (která část je volná nebo obsazená a kým), zařazovat uvolněnou paměť zpátky (spojování volných částí), odebírat paměť procesům (v případě nutnosti, např. pádu procesu) a zajistit ochranu paměti (přístup procesů jen v rámci vyhrazeného prostoru).

Řízení operační paměti – správce paměti

Přidělování souvislé oblasti

Přidělování souvislé oblasti – relokační registr

Přidělování souvislé oblasti využívá limitní (mezní) registr a relokační (bázový) registr. CPU generuje logickou adresu (LA). Pokud LA > Limit, vzniká chyba narušení ochrany. Pokud LA ≤ Limit, fyzická adresa = LA + báze (relokační registr). Tím je zajištěna jak ochrana paměti, tak flexibilní umístění procesu v paměti (relokace).

Přidělování po blocích

Přidělování po blocích – schéma sekce 1,2,3
Přidělování po blocích – alokační strategie

Přidělování po blocích umožňuje provozovat více uživatelských úloh v rámci OP najednou. Nevýhodou jsou interní a externí fragmentace. Alokační strategie při výběru vhodného bloku: First-Fit (první dostatečně velký blok), Last-Fit (poslední dostatečně velký blok), Best-Fit (nejmenší dostatečně velký blok – minimální zbytky), Worst-Fit (největší dostatečně velký blok – maximální zbytky pro budoucí procesy).

Dynamické přemísťování (setřásání paměti)

Dynamické přemísťování – zhušťování paměti

Dynamické přemísťování je vylepšená verze dynamického přidělování, která využívá setřásání (zhušťování) paměti. Volné oblasti paměti jsou přesunuty na jedno místo (typicky na konec), čímž vznikne jeden velký volný blok. Schéma ukazuje tři stavy: počáteční stav (fragmentovaná paměť s úlohami 1, 4, 5, 6), stav po zhušťování (volné oblasti sloučeny do jednoho bloku 296K), a stav po přidělení sekce úloze 7 (256K).

Stránkování

Stránkování – princip page table
Stránkování – příklad rozmístění
Stránkování s využitím TLB Cache

Stránkování je metoda správy paměti, kde logický adresový prostor procesu je rozdělen na stránky (pages) stejné velikosti a fyzická paměť je rozdělena na rámce (frames) stejné velikosti. CPU generuje logickou adresu složenou z čísla stránky (p) a offsetu (o). Číslo stránky je indexem do stránkové tabulky (page table), která obsahuje číslo fyzického rámce (f). Fyzická adresa se skládá z čísla rámce a offsetu.

Pro urychlení překladu adres slouží TLB Cache (Translation Lookaside Buffer) – rychlá asociativní paměť uchovávající nedávno použité překlady stránek. Při TLB hit je fyzická adresa dostupná okamžitě. Při TLB miss se musí sáhnout do stránkové tabulky v paměti.

Algoritmy výměny stránek

Algoritmy výměny stránek

Při výpadku stránky (page fault) je nutno vybrat stránku k vyřazení z paměti. Existují tyto algoritmy výměny stránek: a) Optimální – vyřadí stránku, která bude nejdéle nepotřebná (teoreticky optimální, nelze implementovat), b) FIFO – vyřadí nejstarší stránku (první do paměti), c) LRU (Least Recently Used) – vyřadí stránku, která byla nejdéle nepoužita, d) Druhá šance – modifikace FIFO s referenčním bitem, e) Hodiny – kruhová implementace algoritmu Druhá šance, f) NUR/NRU (Not Used/Not Recently Used) – kategorizace stránek podle referenčního a modifikačního bitu, g) NFU (Not Frequently Used) – aproximace LRU s čítači přístupů, h) Random – náhodný výběr stránky k vyřazení.

Segmentace

Segmentace – schéma a segment table
Segmentace – mechanismus překladu adresy

Segmentace je metoda správy paměti, kde logický adresový prostor procesu je rozdělen na segmenty různé délky (main program, subroutine, stack, symbol table, Sqrt, …). Logická adresa se skládá z čísla segmentu (s) a offsetu (d). Tabulka segmentů (segment table) obsahuje pro každý segment bázi (base – fyzická adresa začátku segmentu) a limit (délku segmentu). Pokud offset d < limit, fyzická adresa = base + d. Pokud d ≥ limit, vzniká výjimka „Chyba segmentace".

Segmentace se stránkováním

Segmentace se stránkováním – schéma
Segmentace se stránkováním – postup
Segmentace se stránkováním – detailní postup adresace

Segmentace se stránkováním kombinuje výhody obou metod. Postup: (1) Proces je nejdříve rozdělen na jednotlivé segmenty. (2) Následně jsou segmenty rozděleny na jednotlivé stránky. (3) Nakonec jsou jednotlivé stránky umístěny do rámců v OP.

CPU vysílá požadavek na logickou adresu (48 bitů: 16bit selektor + 32bit offset). Logická adresa je převedena na lineární adresu (součet bázové adresy segmentu a offsetu z LA), výsledná lineární adresa má 32 bitů (10bit stránkový adresář + 10bit stránková tabulka + 12bit offset). Pozor: „součet" offsetu z logické adresy a báze ze segmentové tabulky dává 32bit!

🏠