Přenos dat, rozdělení paměti
a jejich organizace
Sériový & paralelní přenos · Sběrnice · RWM, ROM · Organizace paměti · Správa OP
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ší.
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.
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:
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.
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.1 | 12 Mbit/s | Full Speed |
| USB 2.0 | 480 Mbit/s | High Speed |
| USB 3.0 / 3.1 Gen 1 | 5 Gbit/s | SuperSpeed |
| USB 3.1 Gen 2 | 10 Gbit/s | SuperSpeed+ |
| USB 3.2 Gen 2×2 | 20 Gbit/s | SuperSpeed 20G |
| USB 4 | až 40 Gbit/s | USB4 |
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:
| Typ | Celý název | Vlastnosti |
|---|---|---|
| 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:
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).
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).
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:
V příkladu 1M × 8 bit:
- Kapacita v bitech = 1 048 576 × 8 = 8 388 608 bitů
- Kapacita v bajtech = 8 388 608 / 8 = 1 048 576 B = 1 MiB
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 × 8 | 1M = 220 | 8 bit | 20 | 8 | 1 MiB |
| 256K × 16 | 256K = 218 | 16 bit | 18 | 16 | 512 KiB |
| 4M × 1 | 4M = 222 | 1 bit | 22 | 1 | 512 KiB |
| 30pin SIMM | různá | 8 bit | — | 8 | 256 KB – 16 MB |
| 72pin SIMM | různá | 32 bit | — | 32 | 1 MB – 128 MB |
| DDR4 DIMM | různá | 64 bit | — | 64 (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.
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ě.
✦Sběrnice – rozšiřující informace ze školních slidů
Definice a základní vlastnosti sběrnice
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
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
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
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 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 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
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 (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 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 (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 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
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 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 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 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 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 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
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 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
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 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)
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
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
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
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 (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 (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 (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
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).
Přidělování souvislé oblasti
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 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í 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í 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
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 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 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!