Technologie operačních pamětí

5. 6. 2008
Doba čtení: 10 minut

Sdílet

Kromě mikroprocesorů jsou nedílnou součástí prakticky všech dnešních počítačů i operační paměti, jejichž popisem se začneme v dnešní části seriálu o funkci počítačů podrobněji zabývat. Nejprve si řekneme, jaké technologie pamětí se používaly v minulosti a posléze se dostaneme až k moderním pamětem typu DRAM.

Obsah

1. Význam operační paměti pro činnost počítače
2. Releové paměti
3. Bubnové paměti (drum memories)
4. Paměťové buňky složené z feritových jader
5. Paměťová buňka vytvořená na principu klopného obvodu
6. Klopné obvody sestavené z triod
7. Klopné obvody sestavené z tranzistorů
8. Integrované klopné obvody, statické paměti o velké integraci (SRAM)
9. Obsah následující části seriálu

1. Význam operační paměti pro činnost počítače

Již v první části seriálu o principu práce počítačů jsme si ukázali schéma takzvané von Neumannovy architektury. Podle této koncepce se počítač skládá z pěti navzájem propojených bloků. Jedná se o operační paměť, ve které je uschován jak program, tak i data, se kterými program běžící na mikroprocesoru pracuje. Dále se zde nachází programový řadič řídící celý počítač a aritmeticko-logická jednotka, ve které jsou vykonávány, jak již název naznačuje, aritmetické a logické operace s registry nebo přímo místy v paměti. Poslední dva bloky, tj. vstupy a výstupy jsou představovány jednotlivými zařízeními, která se k počítači připojují. V tom nejjednodušším případě se může jednat například o LED-diody na výstupu a několik tlačítek na vstupu, stejně tak se však k počítači mohou připojit inteligentní řadiče disků, grafické subsystémy, různá čidla (počítače v autech jich obsluhují i několik desítek) atd.

pc1401

Von Neumannova architektura počítače

Funkci aritmeticko-logické jednotky i programového řadiče jsme si již vysvětlili v předchozích částech tohoto seriálu, ovšem role operační paměti – jakkoli je nenahraditelná – jsme se prozatím dotkli pouze okrajově. Dnes se tématem operačních pamětí budeme zabývat podrobněji, konkrétně především technologiemi, které se pro stavbu operačních pamětí používaly v dávné i zcela nedávné minulosti. Nejprve si však řekněme, k čemu se operační paměť vůbec používá. Jedná se o paměť, jež je zpravidla součástí takzvané hierarchie pamětí, na jejímž začátku stojí nízkokapacitní ale velmi rychlé paměti typu akumulátor a pracovní registry mikroprocesoru a na straně druhé pomalé paměti s velkou kapacitou typu pevného disku či páskové jednotky. Zatímco v pracovních registrech může být po krátký čas uloženo pouze malé množství zpracovávaných dat, bývá v operační paměti v ideálním případě přítomný jak celý program, tak i zpracovávaná data (podle von Neumannových tezí není mezi programem a daty žádný podstatný rozdíl).

Operační paměť by tedy měla mít dostatečně velkou kapacitu na to, aby se do ní mohl uložit celý operační systém, vlastní uživatelský program (programy) i jejich data, ovšem současně je požadována dostatečně rychlá paměť, na kterou by nemusel mikroprocesor čekat. Vzhledem k tomu, že rychlosti mikroprocesorů dnes rostou mnohem rychleji než rychlosti cenově dostupných (=dostatečně velkých) operačních pamětí, vkládá se mezi mikroprocesor a operační paměť rychlá, drahá a někdy též náležitě „topící“ vyrovnávací paměť (cache memory), která je většinou rozdělena do dvou částí – datové vyrovnávací paměti (data cache, D-cache) a instrukční vyrovnávací paměti (instruction cache, I-cache). To vlastně znamená, že je zde klasická von Neumannova architektura částečně nahrazena Harvardskou architekturou, těmito technologiemi se však budeme zabývat až v některé z dalších částí tohoto seriálu. Taktéž u mikrořadičů, které mívají paměť rozdělenou na část určenou pro data a část pro instrukce (program) budeme za operační paměť považovat pouze zapisovatelnou (datovou) část.

2. Releové paměti

První prakticky použitelné paměťové prvky, které v tom nejjednodušším případě slouží k úschově jednoho bitu, byly založeny na mechanickém principu (viz například starší a v některých obchodech doposud používané mechanické pokladny s jejich mechanickými obdobami pracovních registrů) a později na principu elektromagnetických relé. Důvod byl celkem logický – technologie relé byla odzkoušena při konstrukci telefonních ústředen a k tomu jsou relé typické elektromechanické součástky přirozeně pracující v dvojkové číselné soustavě (nehledě na velkou „logickou zatížitelnost“ výstupů).

pc1402

Mechanický počítač od Charlese Babbageho (Analytical Engine a Differencial Engine) měl mechanickou obdobu pracovních registrů

Konstrukce jednobitové paměťové buňky pomocí relé není příliš složitá. Buď se dá využít relé přepínacích (jednou cívkou se docílí přepnutí do stavu „0“, druhou cívkou do stavu „1“, nebo obdoby klopných obvodů s dvojicí relé se čtyřmi kontakty (může se jednat i o dvojici relé integrovanou do jedné součástky). Nevýhody těchto typů pamětí jsou zřejmé – jedná se o elektromechanický systém náchylný k poruchám (opět je zde patrná analogie s releovými telefonními ústřednami, na kterých se neustále něco opravovalo), samotná relé nejsou příliš rychlá a jejich rychlost je navíc obecně rozdílná (dvě relé ovládané stejným vstupem nemusí sepnout ve stejnou chvíli), takže je zapotřebí do obvodů zavádět i různé synchronizační mechanismy pro odstranění hazardů a také spotřeba, velikost a cena prakticky omezovala kapacitu operační paměti, která mohla dosahovat cca jednotek kilobytů. Z těchto důvodů (a také s příchodem polovodičů) relé představují zajímavou, ale v oblasti počítačů dávno překonanou technologii.

pc1403

Tento počítač vytvořený v domácích podmínkách jedním nadšencem používá pro implementaci operační paměti relé

3. Bubnové paměti (drum memories)

Technologicky velmi zajímavým typem operačních pamětí jsou takzvané bubnové paměti neboli drum memories. Bubnová paměť je sestrojena z válce vytvořeného z nemagnetického materiálu (například hliníku), na který je nanesena feromagnetická vrstva, podobně jako na magnetofonové pásce, disketě nebo plotně pevného disku. Válec se otáčí konstantní rychlostí a k jeho povrchu jsou přitlačovány čtecí a zápisové hlavy, opět podobné těm použitým v magnetofonech či disketových jednotkách. Tyto hlavy však nemění svou polohu, každá hlava tedy dokáže přečíst pouze jednu jedinou stopu po obvodu celého válce.

pc1404

Základní součásti bubnové paměti

Vzhledem k tomu, že je hlav vedle sebe umístěno více (typicky se jedná o šířku zpracovávaného slova, což však v tomto historickém kontextu neznamená nutně pouze šestnáct bitů, ale například 18 či dokonce 36 bitů), je čtení i zápis prováděn paralelně, což zjednodušuje implementaci řadiče. Dalšího zjednodušení je dosaženo způsobem adresování tohoto typu operační paměti – buď přímo na válci nebo na přidaném kotouči byly vytvořeny magnetické, optické nebo mechanické značky odpovídající adrese, tj. konkrétnímu úhlu natočení válce. Při požadavku na čtení či zápis tedy stačilo, aby se operace pozdržela do té doby, než se otáčející se válec dostane do správného úhlu. To znamená, že nebylo zapotřebí použít ani krokový motorek (disketová jednotka), ani složitě zapisované synchronizační značky (pevný disk), ale pouze jednoduchý kombinační obvod, který porovnal požadovanou adresu a aktuální hodnotu přečtených značek.

pc1405

Bubnová paměť po otevření krytu (v dolní části jsou patrné čtecí a zápisové hlavy)

Bubnové paměti byly ve své době poměrně populární, protože byly relativnělevné, konstrukčně jednoduché (použil se pouze jediný motor, hlavy se nepohybovaly ani „neplavaly“ nad povrchem, řadič byl primitivní, nebylo zapotřebí vše uzavírat do prachotěsného krytu atd.) a také na svou velikost měly relativně velkou kapacitu. Na rozdíl od na první pohled příbuzné disketové jednotky či pevného disku se však skutečně jednalo o nefalšovanou operační paměť s pseudonáhodným přístupem – doba přístupu byla statisticky rovna polovině času nutného pro otočení válce okolo své osy (ovšem i dnešní DRAM se také zdaleka nemohou pyšnit skutečně náhodným přístupem). Nevýhodou bubnových pamětí je malá odolnost vůči magnetickým a mechanickým vlivům a samozřejmě také větší poruchovost, ať už se jedná o takzvané měkké chyby (poškození zapsané informace) či tvrdé chyby (poškození paměťového zařízení).

pc1406

Je ovšem nutné přiznat, že dnešní paměti Compact Flash či USB Stick jsou poněkud menší než většina bubnových pamětí

4. Paměťové buňky složené z feritových jader

Další velmi často používanou technologií operačních pamětí založených na magnetickém principu, která v některých aplikacích přežila až do dnešní doby, jsou paměti složené z feritových jader (ostatně známý termín core dump vychází z pojmenování feritových jader – core). Tato paměť vypadá následovně: z izolovaných (adresových) vodičů je vytvořena pravidelná mřížka, přičemž v místě, kde se dvojice vodičů (nevodivě) kříží, je na oba tyto vodiče navlečeno feritové jadérko ve tvaru toroidu. Kromě toho prochází všemi jadérky jediný čtecí vodič vedený „cik-cak“. Každé feritové jadérko slouží pro záznam jednoho bitu. Zápis je proveden přivedením elektrického proudu do jednoho vodorovného a jednoho svislého vodiče, přičemž v místě jejich křížení dojde k takovému nárůstu magnetického toku, že to postačí na změnu stavu feritového jádra (nesmíme zapomenout na hysterezi, díky níž je stav zapamatován). Podle směru toku proudu je do jadérka zapsána bitová jednička či nula. Čtení se provádí čtecím vodičem – opět je přiveden proud na příslušný vodorovný a svislý adresní vodič a na čtecím vodiči se zjistí míra indukce (příslušné jadérko však musí být znovu zmagnetizováno, čtení je destruktivní).

pc1407

Blok operační paměti složené z feritových jader

Zatímco většina pamětí vytvořených na základě některé z dále popsaných technologií je při vypnutí napájení „zapomětlivá“ (zapsané informace se ihned nebo po relativně velmi krátkém okamžiku ztratí), dovolují feritové paměti obsah zapsaných dat přečíst i po několika minutách či dokonce desítkách minut. Může se jednat o docela užitečnou vlastnost, například při analýze pádu programu, který způsobil zastavení celého systému (při použití feritových pamětí vlastně získáme „core-dump“ zadarmo). Tradují se historky, že technici dokázali přečíst obsah feritové paměti i několik hodin po havárii letadla a mohly se tak přečíst stavy zkoumaných zařízení těsně před poruchou; netroufám si však říci, zda jde o historky založené na skutečné události nebo o urban legend. Také další vlastnost feritových pamětí – odolnost proti různým druhům záření – je v některých aplikacích ceněna, například v kosmickém programu (ušetří se za těžké stínění).

pc1408

Detail čtyř buněk paměti (adresové vodiče a červený čtecí vodič)

5. Paměťová buňka sestavená na základě klopného obvodu

Zatímco předchozí typy pamětí byly založeny na mechanickém, elektromagnetickém či magnetickém principu (hystereze), je u dalších popisovaných typů pamětí použit jen elektrický obvod bez mechanických částí. To samozřejmě zvyšuje spolehlivost paměti, především proti tvrdým chybám. V případě, že je zapotřebí vytvořit paměťový prvek pomocí elektrického obvodu, využívá se většinou nějaké formy klopného obvodu, jehož princip jsme si již vysvětlili v předchozích částech tohoto seriálu. Pro úschovu jednoho bitu lze například použít klopný obvody typu D. Právě těmito typy pamětí se budeme zabývat v dalších kapitolách (dalším způsobem uchování informace je použití kondenzátoru, což je doména dynamických pamětí).

pc1409

Schéma klopného obvodu typu D

6. Klopné obvody sestavené z triod

V počátcích vývoje elektronických počítačů se klopné obvody sestavovaly z triod, což jsou elektronky, jež mohou pracovat v podobném režimu jako tranzistor (zesilovací efekt) nebo relé (spínání). Z dvojice triod a několika dalších (pasivních) součástek je možné poskládat klopný obvod představující paměťovou buňku o kapacitě jednoho bitu. Paralelním seřazením čtyř či osmi dvojic triod se vytvoří osmibitový pracovní či záchytný registr, který je zobrazený na následujícím obrázku. V jedné baňce elektronky se v tomto případě nachází dvě triody (to jsou ony typické šedozelené anodové „sloupečky“, uvnitř kterých je vestavěno žhavicí vlákno, katoda a mřížka).

pc1410

Čtveřice klopných obvodů sestavená z triod tvořících čtyřbitový pracovní registr

Triodové klopné obvody se používaly buď pro sestavení pracovních registrů (akumulátoru atd.), které byly doplněny například bubnovou pamětí nebo se pomocí nich daly sestavit i bloky paměti o větší kapacitě. To s sebou neslo zvýšení ceny celého počítače i elektrického příkonu (a s ním souvisejícího tepelného výkonu). Jeden větší blok paměti je zobrazený na dalším obrázku, jeho kapacita je odhadem několik desítek bytů.

pc1411

Větší blok operační paměti sestavený z triod

7. Klopné obvody sestavené z tranzistorů

Nástupci triod jsou tranzistory. I z nich se vytvářely paměťové bloky použité v počítačích ve funkci operační paměti. Oproti triodám (a elektronkám obecně) jsou tranzistory mnohem menší, levnější a současně mají větší rychlost, vlastní šum a spolehlivost. Původně se využívaly především bipolární tranzistory, později se operační paměti vytvářely z tranzistorů unipolárních. Teoretický nejmenší počet tranzistorů nutných pro implementaci jednobitové paměťové buňky je roven dvěma, u unipolární technologie MOS se však většinou používá tranzistorů šest (dva slouží pro připojení buňky k datovým vodičům a z další čtveřice je sestaven klopný obvod, což je ostatně patrné z obrázku).

pc1412

Jednobitová paměťová buňka sestavená z šesti tranzistorů NMOS a PMOS

8. Integrované klopné obvody, statické paměti o velké integraci (SRAM)

Podobně jako se procesory sestavené z diskrétních součástek začaly v sedmdesátých letech minulého století integrovat do jednoho čipu (mikroprocesoru), se totéž stalo i s operačními paměťmi, dokonce snad ještě ve vyšší míře. Původní paměti sestavené z tranzistorů začaly být nahrazovány paměťovými čipy, například typu CMOS. Výsledkem jsou statické paměti (SRAM). Slovem statické je myšleno to, že jednou zapsaný bit je v paměťové buňce držen po libovolně dlouhou dobu (pokud se nepřeruší napájení) a nepřímo také to, že čtení nebývá destruktivní, tj. přečtením hodnoty bitu se obsah paměťové buňky neztrácí. Za tuto vlastnost se však platí nutností použití až šesti tranzistorů pro jednu paměťovou buňku a tím i vyšší cenou za jeden bit i větší ploše, která se na čipu musí pro onen bit obětovat. Naproti tomu dynamické paměti (DRAM) mají paměťové buňky sice jednodušší (většinou pouze jeden tranzistor + integrovaný kondenzátor), ovšem náboj v kondenzátoru je nutné obnovovat a čtení je destruktivní. Tomuto tématu se však budeme podrobněji věnovat až příště.

pc1413

Jedna paměťová buňka ve statické paměti CMOS (viz předchozí obrázek)

pc1414

Blok paměťových buněk v dynamické paměti DRAM

bitcoin_skoleni

9. Obsah následující části seriálu

V další části seriálu o činnosti počítačů bude popsán princip dynamických pamětí vytvořených pomocí unipolárních technologií. Jedná se o levné a relativně rychlé paměti používané i v současných počítačích. Popíšeme si i různé způsoby adresování pamětí, včetně principů urychlení operací čtení či zápisů do sousedních paměťových buněk.

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.