Typy pamětí a jejich funkce v PC Hardware · 4. ročník · ROM · DRAM · SDRAM · DDR · Cache · ECC

1. Paměťová hierarchie PC – proč existuje více typů pamětí

Blokové schéma osobního počítače. Základní deska obsahuje CPU, paměť RAM (hlavní pracovní paměť), paměť CMOS (nevolatilní pro uložení nastavení BIOSu), paměť EPROM (pro firmware BIOSu/UEFI) a čipovou sadu CHIPSET. Vše je propojeno systémovou sběrnicí (data, adresy, řízení). K základní desce se přes PCIe připojují grafický, zvukový a síťový adaptér. Periferní zařízení jsou připojena přes USB, PS/2, LPT a SATA.Blokové schéma osobního počítače. Základní deska obsahuje CPU, paměť RAM (hlavní pracovní paměť), paměť CMOS (nevolatilní pro uložení nastavení BIOSu), paměť EPROM (pro firmware BIOSu/UEFI) a čipovou sadu CHIPSET. Vše je propojeno systémovou sběrnicí (data, adresy, řízení). K základní desce se přes PCIe připojují grafický, zvukový a síťový adaptér. Periferní zařízení jsou připojena přes USB, PS/2, LPT a SATA.

Klíčovou otázkou při návrhu počítače je: proč nemáme jen jeden typ paměti? Odpověď tkví ve fyzikálních a ekonomických zákonech. Velmi rychlá paměť je extrémně drahá a spotřebovává hodně energie. Velmi levná paměť je pomalá. Fyzikálně neexistuje způsob, jak vytvořit velkou, levnou a zároveň rychlou paměť. Tento kompromis vedl k vytvoření paměťové hierarchie – systému několika vrstev pamětí s různou rychlostí, velikostí a cenou.

Paměťová hierarchie reálného počítače. Od nejrychlejší/nejdražší (vlevo) po nejpomalejší/nejlevnější (vpravo): Datová část procesoru + Registry (přímá součást ALU, sub-nanosekunda, bajty) → On-chip L1 Cache (ve stejném pouzdru jako CPU, 1–4 ns, stovky KB) → Off-chip L2 Cache / SRAM (mimo CPU čip, 4–10 ns, MB) → Hlavní paměť / DRAM (desítky ns, GB) → Vedlejší paměť / Disk (ms, TB). Šipky ukazují: čím blíže CPU, tím rychlejší, menší, dražší; čím dál, tím pomalejší, větší, levnější.Paměťová hierarchie reálného počítače. Od nejrychlejší/nejdražší (vlevo) po nejpomalejší/nejlevnější (vpravo): Datová část procesoru + Registry (přímá součást ALU, sub-nanosekunda, bajty) → On-chip L1 Cache (ve stejném pouzdru jako CPU, 1–4 ns, stovky KB) → Off-chip L2 Cache / SRAM (mimo CPU čip, 4–10 ns, MB) → Hlavní paměť / DRAM (desítky ns, GB) → Vedlejší paměť / Disk (ms, TB). Šipky ukazují: čím blíže CPU, tím rychlejší, menší, dražší; čím dál, tím pomalejší, větší, levnější.

Procesor pracuje na frekvencích 3–5 GHz – za jednu sekundu provede miliardy operací. Jeho interní registry a L1 cache drží krok díky tomu, že jsou fyzicky součástí procesoru. Operační paměť DRAM je již výrazně pomalejší a CPU na ni musí čekat (tzv. wait states). Pevný disk je o 5–6 řádů pomalejší než registry. Úkolem celé hierarchie je zajistit, aby CPU co nejméně čekal – tomu slouží cache paměti, jejichž princip vysvětlíme v kapitole 6.

2. ROM paměti – ROM BIOS, EPROM, Flash a CMOS RAM

Na základní desce PC najdeme kromě operační paměti DRAM ještě dvě speciální typy pamětí: firmware paměť pro BIOS/UEFI a konfigurační CMOS paměť. Obě jsou nevolatilní – data uchovávají i bez napájení.

ROM (Read-Only Memory) – základní princip

ROM je paměť, jejíž obsah byl zapsán při výrobě a nelze ho za normálního provozu měnit. Fyzicky je realizována maticí spojů ve vrstevnaté struktuře – bit "1" nebo "0" je dán přítomností nebo absencí konkrétního spoje. Je tedy statická, rychlá, bez nutnosti obnovy. Nevýhoda: obsah nelze změnit vůbec. Používala se pro starý BIOS, kdy bylo jasné, že firmware se nikdy měnit nebude.

PROM (Programmable ROM)

PROM lze jednou naprogramovat po výrobě. Každý bit obsahuje tavnou propojku (fuse). Programátor ji "přepálí" proudovým impulzem – odtud název jednou programovatelná. Tento proces je nevratný.

EPROM (Erasable Programmable ROM)

EPROM přinesla revoluci: lze ji smazat a přeprogramovat, ale mazání vyžaduje expozici UV světlem po dobu 15–20 minut (odtud charakteristické průhledné okénko na pouzdru čipu). Data uchovává pomocí plovoucí hradlové struktury MOS tranzistoru (floating gate) – elektrony zachycené v izolaci mění práh tranzistoru. UV záření elektrony uvolní. Programování probíhá elektrickým proudem přes speciální programátor.

EEPROM a Flash paměť – dnešní standard BIOSu

EEPROM (Electrically Erasable PROM) lze mazat i programovat elektricky – bez UV světla, přímo v cílovém zařízení. To umožnilo flashování BIOSu přes software. Flash paměť je moderní varianta EEPROM s buněčnou strukturou NOR nebo NAND. Mazání probíhá po blocích (sektorech), zápis pak po bajtech nebo stránkách. Flash v NOR provedení (jakou mají BIOS čipy) umožňuje přímý (random) přístup pro čtení – CPU může spouštět kód přímo z flash bez kopírování do RAM (execute in place, XIP). Kapacita BIOS flash čipu je typicky 32–128 Mbit.

CMOS RAM – paměť nastavení BIOSu

CMOS RAM (Complementary Metal-Oxide-Semiconductor RAM) je malá (64–256 bajtů) nevolatilní paměť na základní desce napájená lithiovou knoflíkovou baterií CR2032. Ukládá uživatelská nastavení BIOSu: aktuální datum a čas (RTC – Real Time Clock integrovaný v čipu), pořadí bootovacích zařízení, nastavení frekvence RAM a procesoru, heslo BIOSu, a konfiguraci periferií. CMOS je jiný typ paměti než DRAM – má velmi nízkou spotřebu (mikroampéry) díky CMOS technologii, proto ji baterie udrží léta. Po vybití baterie (5–10 let) se CMOS vynuluje, počítač ztratí čas a resetuje se nastavení na výchozí hodnoty.

Proč se říká "CMOS paměť" a ne prostě "konfigurace BIOSu"?Historicky byl RTC s malou nevolatilní pamětí integrován v čipu Motorola MC146818A (1984), který byl vyroben CMOS technologií. Odtud pochází název "CMOS", který se ujal jako označení pro celou konfigurační paměť základní desky. Dnes je RTC i CMOS RAM integrována přímo v čipsetu nebo v SIO (Super I/O) čipu, ale název "CMOS" zůstal.

3. SRAM – statická RAM a princip buňky

Schéma buňky SRAM. Jádro buňky tvoří bistabilní klopný obvod (latch) ze šesti tranzistorů: T1 a T2 jsou přístupové tranzistory (access transistors) ovládané adresovým vodičem (Word Line). T3–T6 tvoří vlastní klopný obvod tvořený dvěma křížově zapojenými invertory (T3+T5 a T4+T6). Data a jejich inverze (Data / NOT Data) jsou dostupná přes datový vodič (Bit Line). Napravo: DRAM buňka s jedním tranzistorem T a kondenzátorem C pro srovnání.Schéma buňky SRAM. Jádro buňky tvoří bistabilní klopný obvod (latch) ze šesti tranzistorů: T1 a T2 jsou přístupové tranzistory (access transistors) ovládané adresovým vodičem (Word Line). T3–T6 tvoří vlastní klopný obvod tvořený dvěma křížově zapojenými invertory (T3+T5 a T4+T6). Data a jejich inverze (Data / NOT Data) jsou dostupná přes datový vodič (Bit Line). Napravo: DRAM buňka s jedním tranzistorem T a kondenzátorem C pro srovnání.

SRAM (Static Random Access Memory) si pamatuje data pomocí bistabilního klopného obvodu – flip-flopu. Každá buňka obsahuje 6 tranzistorů (nebo 4 u jednodušší varianty). Klopný obvod má dva stabilní stavy ("0" a "1") a bez napájení přechází mezi nimi. Pokud napájení zůstane, data zůstanou neomezeně dlouho bez jakékoli obnovy – odtud název statická. SRAM nevyžaduje refresh, je okamžitě přístupná a velmi rychlá (přístupová doba 0,5–10 ns).

Nevýhoda SRAM je jasná z obrázku buňky: 6 tranzistorů na bit oproti 1 tranzistoru + 1 kondenzátoru u DRAM. SRAM je proto 4–6× větší na čipu a tedy i mnohem dražší. Z tohoto důvodu se SRAM nepoužívá jako hlavní operační paměť (musela by být extrémně drahá), ale výhradně jako cache paměť, kde její rychlost má největší smysl.

4. DRAM – dynamická RAM, princip a adresování

DRAM (Dynamic Random Access Memory) je nejrozšířenější typ hlavní operační paměti PC. Každý bit je uložen jako náboj v miniaturním kondenzátoru spolu s jedním přístupovým tranzistorem – odtud 1T1C struktura (1 tranzistor, 1 kondenzátor). Díky tomu je DRAM výrazně hustší než SRAM – na jeden čip se vejde gigabity dat. Cena na bit je proto mnohonásobně nižší.

Problém: kondenzátor se samovolně vybíjí. Náboj "uteče" díky svodovým proudům ve zlomcích milisekundy. Proto musí paměťový řadič každých ~64 ms přečíst a znovu zapsat obsah všech řádků paměti – tento proces se nazývá refresh. Právě proto se paměť jmenuje dynamická – data se musí neustále obnovovat. Zatímco probíhá refresh konkrétního řádku, k tomuto řádku nelze přistoupit, což způsobuje drobné zpoždění.

4.1 RAS/CAS adresování a banky SDRAM

Nahoře: Časový diagram RAS/CAS adresování DRAM. RAS (Row Address Strobe) – záporná hrana říká paměti: 'právě platná adresa je adresa ŘÁDKU'. CAS (Column Address Strobe) – záporná hrana říká: 'právě platná adresa je adresa SLOUPCE'. Po RAS paměť načte celý řádek do registru (sense amplifiers). Po CAS vybere konkrétní buňku z registru a dá ji na datový vodič. Čtení dat probíhá mezi t2 a t3. Nový přístup začíná novým RAS (t3). Dole: Schéma matice DRAM. Fyzická adresa → Řadič paměti → Adresa řádku → Matice paměťových buněk (mřížka řádků a sloupců) → Adresa sloupce → Operační zesilovač → Datový vodič → 1 bit výstupu.Nahoře: Časový diagram RAS/CAS adresování DRAM. RAS (Row Address Strobe) – záporná hrana říká paměti: 'právě platná adresa je adresa ŘÁDKU'. CAS (Column Address Strobe) – záporná hrana říká: 'právě platná adresa je adresa SLOUPCE'. Po RAS paměť načte celý řádek do registru (sense amplifiers). Po CAS vybere konkrétní buňku z registru a dá ji na datový vodič. Čtení dat probíhá mezi t2 a t3. Nový přístup začíná novým RAS (t3). Dole: Schéma matice DRAM. Fyzická adresa → Řadič paměti → Adresa řádku → Matice paměťových buněk (mřížka řádků a sloupců) → Adresa sloupce → Operační zesilovač → Datový vodič → 1 bit výstupu.

DRAM buňky jsou uspořádány do dvourozměrné matice (řádky × sloupce). K buňce na průsečíku řádku R a sloupce C se přistupuje ve dvou krocích: nejprve je poslána adresa řádku (aktivovaná signálem RAS – Row Address Strobe), pak adresa sloupce (CAS – Column Address Strobe). Toto se nazývá multiplexované adresování – adresové vodiče slouží jednou pro adresu řádku, podruhé pro adresu sloupce. Díky tomu stačí méně adresových vodičů.

Po aktivaci RAS se celý řádek načte do rychlého vyrovnávacího registru (row buffer nebo sense amplifiers – zesilovače signálu). Jakmile je řádek v registru, přístup ke sloupcům ve stejném řádku (tzv. CAS-only přístup) je mnohem rychlejší – nemusí se znovu aktivovat RAS. Toho využívají burst přístupy (přenáší více slov v jednom RAS cyklu).

Banky paměti (memory banks) jsou nezávislé sekce DRAM čipu nebo modulu, ke kterým lze přistupovat paralelně. Každá banka má vlastní sadu sense amplifierů a vlastní row buffer. Moderní DDR4/DDR5 čipy mají 8 nebo 16 bank. Klíčová výhoda: zatímco v bance A probíhá precharge (uzavírání řádku), banka B může zároveň obsluhovat požadavek CPU. Tím se výrazně zvyšuje efektivní propustnost paměti při střídavém přístupu do různých bank.

Časový diagram SDRAM (Synchronous DRAM). Na rozdíl od asynchronní DRAM je vše synchronizováno hodinovým signálem CLK (Clock). Signály: CLK – hodinový signál, RAS – Row Address Strobe, CAS – Column Address Strobe, Adresa – multiplexovaná adresa (Row / Col1 / Col2), BA – Bank Address (číslo banky: Bank 1, Bank 2), WE – Write Enable, Data – výstup dat (Data1 při Col1, Data2 při Col2). Fáze: t1=Activate Row (RAS low, adresa řádku), t2=Nop, t3=Nop (latence tRCD), t4=Read (CAS low, adresa sloupce), t5=Nop, t6=Nop (CAS latency), t7=Read (druhý sloupec bez nového RAS).Časový diagram SDRAM (Synchronous DRAM). Na rozdíl od asynchronní DRAM je vše synchronizováno hodinovým signálem CLK (Clock). Signály: CLK – hodinový signál, RAS – Row Address Strobe, CAS – Column Address Strobe, Adresa – multiplexovaná adresa (Row / Col1 / Col2), BA – Bank Address (číslo banky: Bank 1, Bank 2), WE – Write Enable, Data – výstup dat (Data1 při Col1, Data2 při Col2). Fáze: t1=Activate Row (RAS low, adresa řádku), t2=Nop, t3=Nop (latence tRCD), t4=Read (CAS low, adresa sloupce), t5=Nop, t6=Nop (CAS latency), t7=Read (druhý sloupec bez nového RAS).

SDRAM (Synchronous DRAM, od roku 1993) přinesla zásadní změnu: synchronizaci s hodinovým signálem FSB (Front Side Bus, sběrnice mezi CPU a paměťovým řadičem). Asynchronní DRAM reagovala na příkazy kdykoliv, což komplikovalo timing. SDRAM přijímá příkazy jen na náběžné hraně hodinového signálu, a výsledky dodává po přesném počtu hodinových cyklů. To zjednodušilo řízení a umožnilo vyšší frekvence. Typické SDRAM frekvence: 66, 100 a 133 MHz (PC66, PC100, PC133).

5. DDR, DDR2, DDR3, DDR4 a DDR5 – evoluce synchronní RAM

Fotografie fyzických paměťových modulů: 1) SDRAM modul (Kingston KVR133X64C2/128) – 168 pinů, DIMM formát, 512MB kapacita. 2) DDR (DDR1) modul – 184 pinů, DIMM formát, zářez uprostřed pinů. 3) DDR2 DIMM (Kingston, KIT OF 2) – 240 pinů, DIMM formát, zářez posunutý doprava. 4) DDR3 DIMM (Kingston, označení DDR3) – 240 pinů, ale nekompatibilní fyzicky s DDR2, jiné napájení.Fotografie fyzických paměťových modulů: 1) SDRAM modul (Kingston KVR133X64C2/128) – 168 pinů, DIMM formát, 512MB kapacita. 2) DDR (DDR1) modul – 184 pinů, DIMM formát, zářez uprostřed pinů. 3) DDR2 DIMM (Kingston, KIT OF 2) – 240 pinů, DIMM formát, zářez posunutý doprava. 4) DDR3 DIMM (Kingston, označení DDR3) – 240 pinů, ale nekompatibilní fyzicky s DDR2, jiné napájení.

DDR (Double Data Rate) paměti přenášejí data na obou hranách hodinového signálu – jak na náběžné, tak na sestupné. Tím se efektivní přenosová frekvence zdvojnásobí oproti SDRAM bez zvýšení frekvence vlastního hodinového signálu. Pokud hodiny běží na 100 MHz, DDR efektivně přenáší data na 200 MHz. Tento princip se zachoval ve všech generacích DDR.

Porovnání technologie přenosu dat DDR, DDR2 a DDR3 prostřednictvím tzv. prefetch bufferu. DDR (DDR-400): Memory Cell Array běží na 200 MHz, I/O Buffers na 200 MHz, výsledný Data Bus 400 MHz effective (2n prefetch – 2 bity najednou). DDR2-800: Memory Cell Array stále 200 MHz, ale I/O Buffers 400 MHz (4n prefetch – 4 bity najednou), výsledný Data Bus 800 MHz effective. DDR3-1600: Memory Cell Array stále 200 MHz, I/O Buffers 800 MHz (8n prefetch – 8 bitů najednou), Data Bus 1600 MHz effective. Klíčové: buňky se zrychlovat nemusí – zrychluje se I/O logika a prefetch.Porovnání technologie přenosu dat DDR, DDR2 a DDR3 prostřednictvím tzv. prefetch bufferu. DDR (DDR-400): Memory Cell Array běží na 200 MHz, I/O Buffers na 200 MHz, výsledný Data Bus 400 MHz effective (2n prefetch – 2 bity najednou). DDR2-800: Memory Cell Array stále 200 MHz, ale I/O Buffers 400 MHz (4n prefetch – 4 bity najednou), výsledný Data Bus 800 MHz effective. DDR3-1600: Memory Cell Array stále 200 MHz, I/O Buffers 800 MHz (8n prefetch – 8 bitů najednou), Data Bus 1600 MHz effective. Klíčové: buňky se zrychlovat nemusí – zrychluje se I/O logika a prefetch.

5.1 Technologie přenosu dat – prefetch buffer

Základní paměťové buňky DRAM se s každou generací DDR tolik nezrychlují – to by bylo fyzicky velmi obtížné. Místo toho se zvyšuje šířka prefetch bufferu. Prefetch je technika, kde paměť z buněčného pole načte více bitů najednou (2n, 4n, 8n) a tyto bity pak pošle přes I/O rozhraní na sběrnici v rychlém sledu. Je to jako naložit celý bagr místo lopaty, i když samotný pohyb lopaty by byl stejně pomalý.

DDR1 používá 2n prefetch: při každém přístupu se z buněčného pole načtou 2 bity a pošlou na sběrnici na obou hranách jednoho hodinového cyklu. DDR2 zavedl 4n prefetch: načte se 4 bity, I/O rozhraní běží dvakrát rychleji. DDR3 používá 8n prefetch: 8 bitů najednou, I/O čtyřikrát rychleji než buňky. DDR4 zachovává 8n prefetch, ale zvyšuje frekvenci samotných I/O bufferů a zlepšuje signálovou integritu (POD terminace). DDR5 přechází na 16n prefetch a zavádí dva 32bitové kanály na jeden fyzický modul (místo jednoho 64bitového).

Srovnání fyzických modulů DDR3 (nahoře) a DDR4 (dole). DDR3: Kingston KVR13311A0L/F, 240 pinů, 1.35V nebo 1.5V napájení. DDR4: Crucial (vpravo dole), 288 pinů, 1.2V napájení. Fyzické rozdíly: DDR4 má o 48 pinů více, zářez (key notch) je na jiném místě (znemožňuje záměnu), DDR4 modul je lehce prohnutý uprostřed (bow shape) pro lepší kontakt pinů. LPDDR4 (nalevo dole) je Low Power varianta pro notebooky.Srovnání fyzických modulů DDR3 (nahoře) a DDR4 (dole). DDR3: Kingston KVR13311A0L/F, 240 pinů, 1.35V nebo 1.5V napájení. DDR4: Crucial (vpravo dole), 288 pinů, 1.2V napájení. Fyzické rozdíly: DDR4 má o 48 pinů více, zářez (key notch) je na jiném místě (znemožňuje záměnu), DDR4 modul je lehce prohnutý uprostřed (bow shape) pro lepší kontakt pinů. LPDDR4 (nalevo dole) je Low Power varianta pro notebooky.

5.2 Provedení a moduly – SIMM, DIMM, SO-DIMM

SIMM (Single Inline Memory Module) byl první standardní modul – má 30 nebo 72 pinů. Charakteristika: piny na obou stranách plošného spoje jsou elektricky propojeny (=stejný signál). Starší desktop paměti z éry 486 a Pentium I.

DIMM (Dual Inline Memory Module) přišel s SDRAM a je standardem dodnes. Piny na obou stranách jsou elektricky odděleny – každá strana nese jiné signály. Datová šířka standardního DIMM je 64 bitů (nebo 72 bitů s ECC). Délka standardního desktopového DIMM: 133,35 mm. Každá generace DDR má fyzicky jiný počet pinů a jinak umístěný zářez (key), aby nebylo možné záměnné vložení.

SO-DIMM (Small Outline DIMM) je zmenšená verze pro notebooky a malé systémy. Délka jen 67,6 mm (DDR4/DDR5). SO-DIMM má stejnou funkčnost jako plný DIMM, jen v menším formátu.

RDIMM (Registered DIMM) obsahuje navíc registrační obvody (Register, odtud R) mezi paměťovým řadičem a DRAM čipy. Register zachytává příkazy a adresy, čímž snižuje elektrickou zátěž na piny řadiče – umožňuje přidat více modulů bez nestability. Cena: o jeden hodinový cyklus vyšší latence. Používá se výhradně na serverech a workstation deskách.

LRDIMM (Load-Reduced DIMM) je vylepšení RDIMM pro maximální kapacitu. Místo registru použije buffer pro datové signály i pro adresy – výrazně snižuje zátěž na řadič a umožňuje ještě více modulů na kanál. Pro serverové systémy s terabajty RAM.

GeneracePiny (DIMM)NapájeníFrekvence buněkEfektiv. frekv.Šířka prefetchMax. kapacita modulu
SDRAM1683,3 V66–133 MHz66–133 MHz1n1 GB
DDR11842,5 V100–200 MHz200–400 MT/s2n1 GB
DDR22401,8 V100–200 MHz400–1066 MT/s4n4 GB
DDR32401,5 V (1,35 V LP)~200 MHz800–2133 MT/s8n8 GB
DDR42881,2 V~200 MHz1600–3200 MT/s8n32 GB
DDR52881,1 V~200 MHz3200–8400 MT/s16n128 GB

5.3 Označení pamětí – DDR vs. PC notace

Příklad označení na štítku paměťového modulu: CMX512-3200XLPRO (Corsair XMS Extreme Memory Speed, 512 MB). Dolní banner: PC3200 2-3-4-6 1T. Vysvětlení: PC3200 = označení modulu (přenosová rychlost 3200 MB/s), 2-3-4-6 = latence v hodinových cyklech (CL=2, tRCD=3, tRP=4, tRAS=6), 1T = Command Rate (1 hodinový cyklus mezi příkazy). Alternativní označení DDR400 odpovídá PC3200 (DDR400 přenáší 400 milionů přenosů za sekundu × 8 bytů datové šířky = 3200 MB/s).Příklad označení na štítku paměťového modulu: CMX512-3200XLPRO (Corsair XMS Extreme Memory Speed, 512 MB). Dolní banner: PC3200 2-3-4-6 1T. Vysvětlení: PC3200 = označení modulu (přenosová rychlost 3200 MB/s), 2-3-4-6 = latence v hodinových cyklech (CL=2, tRCD=3, tRP=4, tRAS=6), 1T = Command Rate (1 hodinový cyklus mezi příkazy). Alternativní označení DDR400 odpovídá PC3200 (DDR400 přenáší 400 milionů přenosů za sekundu × 8 bytů datové šířky = 3200 MB/s).

Paměti mají dvojí systém označování, který způsobuje zmatení. Je důležité vědět, čím se liší.

DDR označení (například DDR400, DDR2-800, DDR3-1600, DDR4-3200) uvádí efektivní přenosovou frekvenci v megatransferech za sekundu (MT/s). DDR400 přenáší 400 milionů přenosů za sekundu. Číslo za DDR je tedy efektivní frekvence, nikoli fyzická frekvence hodin.

PC označení (například PC3200, PC2-6400, PC3-12800, PC4-25600) uvádí teoretickou přenosovou šířku pásma modulu v MB/s. Výpočet:

Přenosová šířka pásma [MB/s] = Efektivní frekvence [MT/s] × Datová šířka [bajty]

Datová šířka standardního DIMM je 64 bitů = 8 bajtů. Takže DDR400 → 400 MT/s × 8 B = 3 200 MB/s → označení PC3200. Nebo DDR4-3200 → 3 200 MT/s × 8 B = 25 600 MB/s → PC4-25600. Je to přímý přepočet, stačí znát datovou šířku sběrnice.

5.4 ECC – Error Correcting Code paměti

ECC (Error Correcting Code) paměti mají schopnost automaticky detekovat a opravovat chyby v přenášených datech. Standardní DIMM je 64bitový (8 datových čipů × 8 bitů). ECC DIMM je 72bitový – navíc má 9. čip (nebo rozšíření stávajících čipů) věnovaný ECC kódu.

Jak ECC funguje? Používá Hammingův kód (nebo jeho rozšíření SEC-DED – Single Error Correction, Double Error Detection). Při každém zápisu 64 bitů dat vypočítá řadič 8 bitů ECC kódu a uloží je spolu s daty. Při čtení řadič znovu vypočítá ECC z přečtených dat a porovná s uloženým ECC. Pokud se liší, určí (pomocí syndromového kódu), který přesný bit je chybný, a opraví ho. Dokáže opravit jeden chybný bit a detekovat dva chybné bity (ty ale neopraví, jen signalizuje fatal error).

Chyby v paměti mohou vznikat z několika příčin: kosmické záření (vysokoenergetické částice způsobují tzv. bit flip – náhodná změna bitu; v letadle je toto riziko 100× vyšší než na zemi), alfa záření z příměsí v pouzdru čipu, elektromagnetické rušení, a fyzická degradace buněk. Pro normální domácí PC je riziko chyby malé. Pro servery, databáze, bankovní systémy a vědecké výpočty je ECC paměť absolutní nutností – jedna nekorigovaná chyba v datech může způsobit pád OS nebo korumpci databáze.

ECC je vždy serverová záležitostECC paměti vyžadují podporu jak paměťového řadiče, tak základní desky – spotřebitelské platformy (Intel Core bez Xeon, AMD Ryzen bez PRO nebo Threadripper) ECC buď vůbec nepodporují, nebo pouze detekci bez korekce. AMD Ryzen Pro a EPYC ECC nativně podporuje. Intel Core 12./13./14. gen – většina čipsetu podporuje ECC jen na specifických deskách. Xeon a EPYC procesory ECC vždy vyžadují.

6. Cache paměť – HW cache a SW cache

Nahoře: Schéma cache paměti. Procesor komunikuje přes interní cache paměť (L1 cache, fyzicky uvnitř CPU čipu). Dále přes FSB (Front Side Bus) komunikuje s externí cache pamětí (L2/L3 cache, historicky mimo čip, dnes integrována uvnitř). External cache komunikuje s operační pamětí (DRAM). Dole: Schéma přímého mapování (direct-mapped cache). Hlavní paměť M má bloky 0 až F (16 bloků). Cache má jen 4 řádky (Index 0-3). Přímé mapování: blok 0 mapuje na Index 0, blok 4 na Index 0 (aliasing), blok 8 na Index 0 atd. Šipky ukazují mapování více bloků hlavní paměti na jeden cache řádek.Nahoře: Schéma cache paměti. Procesor komunikuje přes interní cache paměť (L1 cache, fyzicky uvnitř CPU čipu). Dále přes FSB (Front Side Bus) komunikuje s externí cache pamětí (L2/L3 cache, historicky mimo čip, dnes integrována uvnitř). External cache komunikuje s operační pamětí (DRAM). Dole: Schéma přímého mapování (direct-mapped cache). Hlavní paměť M má bloky 0 až F (16 bloků). Cache má jen 4 řádky (Index 0-3). Přímé mapování: blok 0 mapuje na Index 0, blok 4 na Index 0 (aliasing), blok 8 na Index 0 atd. Šipky ukazují mapování více bloků hlavní paměti na jeden cache řádek.

Cache paměť (česky zásobníková paměť nebo skrytá paměť) je malá, ale velmi rychlá SRAM paměť, která stojí mezi procesorem a pomalejší hlavní pamětí DRAM. Jejím cílem je snížit průměrnou dobu přístupu k datům tím, že nejčastěji používaná data udržuje blízko CPU.

Proč cache vůbec funguje? Protože programy vykazují dvě klíčové vlastnosti: časovou lokalitu (pokud byl přistoupen adresa X, pravděpodobně se k ní bude přistupovat opět brzy – např. proměnná v smyčce) a prostorovou lokalitu (pokud byl přistoupen adresa X, pravděpodobně brzy bude potřeba i adresa X+1, X+2... – např. prvky pole). Cache využívá obou těchto vlastností.

HW cache – hardwarová cache v CPU

Hardwarová cache je přímo integrována do procesoru a spravuje se automaticky, bez zásahu programátora nebo OS. Moderní procesory mají tři (nebo čtyři) úrovně cache:

L1 cache (Level 1) je nejblíže jádrům CPU – fyzicky integrována uvnitř každého jádra. Přístupová doba typicky 3–5 hodinových cyklů (~1 ns). Kapacita typicky 32–64 KB (někdy 128 KB+ u moderních CPU) na jádro. Dělí se na L1 datová cache (L1d) a L1 instrukční cache (L1i), protože procesor tyto dva typy dat přistupuje různými způsoby.

L2 cache je větší a o trochu pomalejší (10–20 cyklů, ~4 ns). Kapacita typicky 256 KB – 1 MB na jádro. U moderních CPU je L2 stále privátní pro každé jádro.

L3 cache je sdílena mezi všemi jádry procesoru (anglicky Last Level Cache, LLC). Přístupová doba 30–60 cyklů. Kapacita 8–96 MB (u serverových CPU až stovky MB). Když jádro A potřebuje data, která jádro B má v L1/L2, komunikace přes L3 je výrazně rychlejší než přes DRAM.

Fungování cache: CPU potřebuje data na adrese X. Nejdříve se podívá do L1 cache – pokud je data tam (cache hit), přečte je okamžitě. Pokud ne (cache miss), jde do L2, pak L3, pak do DRAM. Pokud data nejsou v žádné cache, musí CPU čekat na DRAM (100+ cyklů zpoždění). Správná implementace cache tedy dramaticky snižuje průměrnou latenci přístupu k datům.

Způsoby mapování cache – přímé, asociativní

Přímé mapování (Direct-mapped): každý blok hlavní paměti může být umístěn jen do jednoho konkrétního řádku cache (určeno adresou modulo počet řádků). Jednoduché a rychlé vyhledávání, ale může docházet ke konfliktům – dva různé bloky, které se mapují na stejný řádek, se navzájem "vyhazují" z cache (aliasing).

Plně asociativní (Fully Associative): blok může být uložen do libovolného řádku cache. Maximální flexibilita, žádné konflikty, ale pomalé vyhledávání (musí se porovnat se všemi řádky najednou).

Set-asociativní (Set-Associative): kompromis. Cache je rozdělena do setů (skupin), každý set obsahuje N řádků (N-way = N-cestná asociativita). Blok paměti se mapuje vždy do konkrétního setu, ale v rámci setu může být v libovolném řádku. Moderní CPU L1 cache je typicky 8-cestná, L2 8-16cestná, L3 16-32cestná.

SW cache – softwarová cache

Softwarová cache je cache realizovaná softwarem, ne speciálním hardwarem. Principiálně jde o stejný nápad – uchovávat kopie dříve vypočtených nebo přečtených dat v rychlejší paměti. Příklady: File system cache (OS udržuje nedávno přečtené bloky disku v RAM; proto čtení souboru podruhé je mnohonásobně rychlejší). CPU instruction cache v JIT kompilátorech. DNS cache (výsledky překladu doménových jmen). Webový browser cache (stažené obrázky, CSS, JS soubory). Memcached/Redis (databázová cache pro webové aplikace).

7. Časování pamětí – latence CL, tRCD, tRP, tRAS

Detailní časový diagram časování DDR SDRAM s popsanými parametry latence. CLK = hodinový signál. RAS a CAS jsou záporně aktivní řídicí signály. ADR = adresový vodič (nejprve ROW adresa, pak COL adresa). READ = signál čtecí operace. DQ = datový výstup. Parametry: tRP (Row Precharge time) – čas od konce RAS do doby, kdy lze znovu aktivovat nový řádek (uzavření starého řádku). tRCD (RAS to CAS Delay) – čas od aktivace řádku (RAS) do vydání adresy sloupce (CAS). tCL (CAS Latency, CL) – čas od vydání CAS do dostupnosti prvního datového slova na DQ vodiči. Data pak přicházejí v burstu D D D D D D D D.Detailní časový diagram časování DDR SDRAM s popsanými parametry latence. CLK = hodinový signál. RAS a CAS jsou záporně aktivní řídicí signály. ADR = adresový vodič (nejprve ROW adresa, pak COL adresa). READ = signál čtecí operace. DQ = datový výstup. Parametry: tRP (Row Precharge time) – čas od konce RAS do doby, kdy lze znovu aktivovat nový řádek (uzavření starého řádku). tRCD (RAS to CAS Delay) – čas od aktivace řádku (RAS) do vydání adresy sloupce (CAS). tCL (CAS Latency, CL) – čas od vydání CAS do dostupnosti prvního datového slova na DQ vodiči. Data pak přicházejí v burstu D D D D D D D D.

Latence paměti popisuje, kolik hodinových cyklů musí CPU čekat na data po odeslání požadavku. Existují čtyři hlavní parametry, které se uvádějí jako čtveřice čísel na štítku každého modulu (například 9-9-9-24 nebo 16-18-18-38):

CL (CAS Latency) je nejdůležitější parametr. Udává počet hodinových cyklů mezi okamžikem, kdy řadič paměti odešle příkaz ke čtení konkrétního sloupce (CAS), a okamžikem, kdy jsou data dostupná na datové sběrnici. Typické hodnoty: DDR3 = CL 9–11, DDR4 = CL 14–19, DDR5 = CL 32–40.

tRCD (RAS to CAS Delay) je čas (v hodinových cyklech) od aktivace řádku (příkaz RAS / ACTIVATE) do okamžiku, kdy lze odeslat příkaz ke čtení nebo zápisu konkrétního sloupce. Fyzicky jde o čas potřebný pro nabití sense amplifierů, které zachytí náboj z buněk aktivovaného řádku.

tRP (Row Precharge time) je čas potřebný k uzavření aktivního řádku (precharge) a přípravě paměti k aktivaci nového řádku. Při prechargi se kondenzátory sense amplifierů vrátí do neutrálního stavu. Než tato operace skončí, nelze otevřít jiný řádek.

tRAS (Row Active time / Active to Precharge Delay) je minimální čas, po který musí zůstat řádek otevřený. Platí: tRAS ≥ CL + tRCD + 2 (přibližně). Příliš krátké tRAS by způsobilo, že data se nestihnou zapsat zpět do buněk při refresh operaci (data by se ztratila).

Proč mají DDR5 moduly při 6 400 MT/s CL = 32–40, zatímco DDR3 na 1 600 MT/s měly CL = 9–11? Protože CL se uvádí v hodinových cyklech, nikoli v ns. Skutečná latence v nanosekundách:

Latence [ns] = CL ÷ (Frekvence [MHz] / 1000)

DDR3-1600 CL11: 11 ÷ (800 MHz) = 13,75 ns. DDR4-3200 CL22: 22 ÷ (1600 MHz) = 13,75 ns. Skutečná latence je tedy přibližně stejná! Vyšší číslo CL u vyšší generace kompenzuje vyšší frekvenci. Proto při porovnání pamětí je vždy nutné přepočítat CL na nanosekundy, ne jen porovnávat čísla CL.

Grafy porovnání vlivu frekvence a latence pamětí DDR2/DDR3 na výkon (benchmark Everest). Levý graf: Everest latence v ns (méně = lépe). DDR3 1600MHz CL20 = 58,2 ns (nejlepší), DDR3 1333MHz CL15 = 58,7 ns, DDR2 800MHz CL10 = 73,5 ns (nejhorší). Pravý graf: Celkový výkon v procentech (více = lépe). DDR3 1600MHz 20-7-7-7 = 99,9% (nejlepší), DDR2 800MHz 15-5-5-5 = 92,6% (nejhorší). Závěr: DDR3 při vyšší frekvenci s vyšším CL je v absolutních nanosekundách rychlejší než DDR2 s nižším CL. Samotné číslo CL bez znalosti frekvence nic nevypovídá.Grafy porovnání vlivu frekvence a latence pamětí DDR2/DDR3 na výkon (benchmark Everest). Levý graf: Everest latence v ns (méně = lépe). DDR3 1600MHz CL20 = 58,2 ns (nejlepší), DDR3 1333MHz CL15 = 58,7 ns, DDR2 800MHz CL10 = 73,5 ns (nejhorší). Pravý graf: Celkový výkon v procentech (více = lépe). DDR3 1600MHz 20-7-7-7 = 99,9% (nejlepší), DDR2 800MHz 15-5-5-5 = 92,6% (nejhorší). Závěr: DDR3 při vyšší frekvenci s vyšším CL je v absolutních nanosekundách rychlejší než DDR2 s nižším CL. Samotné číslo CL bez znalosti frekvence nic nevypovídá.

8. Multi-channel struktury – Dual, Triple a Quad Channel

Schéma Single Channel vs Dual Channel. Nahoře: Single Channel – jeden paměťový kanál (Paměťový kanál) mezi Řadičem paměti a jediným Paměťovým modulem. Sběrnice: 64 bitů (datová šířka). Dole: Dual Channel – dva nezávislé paměťové kanály (Paměťový kanál A a Paměťový kanál B) mezi Řadičem paměti a dvěma Paměťovými moduly. Řadič přistupuje k oběma kanálům paralelně, efektivní šířka sběrnice: 128 bitů. Propustnost je teoreticky dvojnásobná.Schéma Single Channel vs Dual Channel. Nahoře: Single Channel – jeden paměťový kanál (Paměťový kanál) mezi Řadičem paměti a jediným Paměťovým modulem. Sběrnice: 64 bitů (datová šířka). Dole: Dual Channel – dva nezávislé paměťové kanály (Paměťový kanál A a Paměťový kanál B) mezi Řadičem paměti a dvěma Paměťovými moduly. Řadič přistupuje k oběma kanálům paralelně, efektivní šířka sběrnice: 128 bitů. Propustnost je teoreticky dvojnásobná.

Multi-channel technologie je jedním z nejjednodušších způsobů, jak zdvojnásobit (nebo více) propustnost paměťové sběrnice bez výměny samotných modulů. Princip je přímočarý: místo jednoho 64bitového kanálu se používají dva (nebo více) nezávislé 64bitové kanály, ke kterým paměťový řadič přistupuje paralelně.

Single Channel: jeden kanál, 64bitová sběrnice. Maximální propustnost: 64 ÷ 8 = 8 B × frekvence. Například DDR4-3200 single channel: 3 200 MT/s × 8 B = 25,6 GB/s.

Dual Channel: dva paralelní kanály, efektivně 128bitová sběrnice. Maximální propustnost: 25,6 GB/s × 2 = 51,2 GB/s. Aby Dual Channel fungoval, musí být v obou kanálech identické nebo párované moduly. Základní deska obvykle barevně označuje sloty pro Dual Channel – moduly musí být vloženy do párových slotů (typicky A2+B2 nebo DIMM1+DIMM3). Pokud se vloží modul jen do jednoho kanálu, systém běží v Single Channel.

Triple Channel: tři kanály, 192bitová sběrnice. Používal se u Intel Nehalem (Core i7-9xx) s X58 čipsetem (2008–2012). Vyžadoval tři moduly stejné kapacity a frekvence.

Quad Channel: čtyři kanály, 256bitová sběrnice. Používá se u Intel Xeon, AMD EPYC a Intel Core X (HEDT platformy – Skylake-X, Cascade Lake-X). Poskytuje propustnost přes 100 GB/s. Pro servery s DDR5 je standardem.

Kdy Dual Channel opravdu pomůže?Dual Channel má největší přínos pro aplikace s vysokou paměťovou propustností: renderování, kompilace, vědecké výpočty, velké databáze. Pro hry v 1440p/4K je rozdíl znatelný, protože GPU framebuffer sdílí RAM s CPU. Pro kancelářské aplikace je rozdíl minimální. Integrovaná grafika (Intel UHD, AMD Radeon Vega/RDNA on-die) profituje z Dual Channel enormně – může být 30–100% rychlejší, protože GPU nemá vlastní VRAM a závisí na šířce pásma systémové paměti.
FB-DIMM (Fully Buffered DIMM) – serverová technologie. Schéma: Memory Controller (řadič paměti) komunikuje přes sériové rozhraní (Serial signaling similar to PCI Express, 10 diff. párů) s prvním FB-DIMM modulem. Každý modul obsahuje AMB (Advanced Memory Buffer – čip, který přijímá sériová data, převádí je na paralelní a řídí DRAM čipy) a standardní Commodity DRAM čipy. Moduly jsou zřetězeny (daisy chain): výstup prvního AMB → vstup druhého AMB atd. Feedback kanál (14 párů) vede od posledního modulu zpět k řadiči. Lze zapojit až 8 DIMM modulů na jeden kanál. DDR2 Connector with unique key (fyzicky odlišný konektor od standardního DDR2).FB-DIMM (Fully Buffered DIMM) – serverová technologie. Schéma: Memory Controller (řadič paměti) komunikuje přes sériové rozhraní (Serial signaling similar to PCI Express, 10 diff. párů) s prvním FB-DIMM modulem. Každý modul obsahuje AMB (Advanced Memory Buffer – čip, který přijímá sériová data, převádí je na paralelní a řídí DRAM čipy) a standardní Commodity DRAM čipy. Moduly jsou zřetězeny (daisy chain): výstup prvního AMB → vstup druhého AMB atd. Feedback kanál (14 párů) vede od posledního modulu zpět k řadiči. Lze zapojit až 8 DIMM modulů na jeden kanál. DDR2 Connector with unique key (fyzicky odlišný konektor od standardního DDR2).

FB-DIMM je zajímavá serverová technologie z pohledu multi-channel: zatímco standardní RDIMM modulů lze na jeden 64bitový kanál zapojit max. 2–4 (kvůli elektrické zátěži), FB-DIMM jich zvládne až 8, protože řetězení přes AMB buffer izoluje elektrický vliv každého modulu. Cena: vyšší latence a spotřeba (AMB chip spotřebuje ~6 W navíc). Dnes nahrazena technologií LRDIMM.

9. Souvislost adresace RAM s BIOS a UEFI – logická organizace operační paměti

Logická organizace operační paměti v DOS/Real Mode prostředí. Adresní prostor 0x0000 – 0xFFFF (1 MB, 20bitová adresace v Real Mode). Spodní část: Conventional Memory (640 KB, adresy 0x0000 – 0xA000) – přístupná pro DOS a DOS programy, base memory. Horní část: Upper Memory Area (UMA, 384 KB, 0xA000 – 0xFFFF) – vyhrazena pro ROM BIOS, grafická BIOS, I/O paměti řadičů. Extended Memory – paměť nad 1 MB (>0xFFFFF), přístupná jen v Protected Mode nebo přes XMS ovladač. Přechod: 64 KB High Memory Area (HMA) těsně nad 1 MB (0xFFFF0 – 0x10FFEF).Logická organizace operační paměti v DOS/Real Mode prostředí. Adresní prostor 0x0000 – 0xFFFF (1 MB, 20bitová adresace v Real Mode). Spodní část: Conventional Memory (640 KB, adresy 0x0000 – 0xA000) – přístupná pro DOS a DOS programy, base memory. Horní část: Upper Memory Area (UMA, 384 KB, 0xA000 – 0xFFFF) – vyhrazena pro ROM BIOS, grafická BIOS, I/O paměti řadičů. Extended Memory – paměť nad 1 MB (>0xFFFFF), přístupná jen v Protected Mode nebo přes XMS ovladač. Přechod: 64 KB High Memory Area (HMA) těsně nad 1 MB (0xFFFF0 – 0x10FFEF).

Aby bylo pochopení adresace paměti kompletní, je třeba znát historii, protože část paměťového prostoru je stále rezervována z historických důvodů – a to ovlivňuje moderní systémy dodnes.

Konvenční paměť (Base Memory, 0–640 KB)

Intel 8086 (1978) měl 20bitovou adresovou sběrnici – dokázal adresovat 2²⁰ = 1 048 576 bajtů = 1 MiB. Z tohoto megabajtu bylo prvních 640 KB (adresy 0x00000–0x9FFFF) určeno pro programy a OS. Tato oblast se nazývá konvenční paměť nebo base memory. DOS operoval výhradně v této oblasti. Horních 384 KB (0xA0000–0xFFFFF) bylo rezervováno pro systémové účely: video paměť (0xA0000–0xBFFFF pro EGA/VGA), ROM BIOS rozšíření pro síťové karty a pevné disky, ROM samotného BIOSu (0xF0000–0xFFFFF). Tato oblast se nazývá UMA (Upper Memory Area).

Extended Memory (XMS, paměť nad 1 MB)

S příchodem Intel 286 (16 MB adresovací prostor) a 386 (4 GB) bylo problémem, jak se dostat k paměti nad 1 MB při zachování zpětné kompatibility s DOS. XMS (eXtended Memory Specification) definoval rozhraní pro přístup k rozšířené paměti v chráněném módu. Driver HIMEM.SYS (Windows 3.x, DOS 6) spravoval extended memory. HMA (High Memory Area) jsou prvních 64 KB nad 1 MB – zvláštní oblast přístupná i v Real Mode díky přetečení 20bitové adresy přes A20 linku.

Adresace RAM v BIOS systémech – memory map

BIOS při startu sestaví E820 memory map (pojmenováno podle INT 15h, funkce E820h) – tabulku, která popisuje fyzický adresní prostor: která oblast je použitelná pro OS (Available), která je rezervovaná pro ACPI tabulky, která pro PCI zařízení (paměťově mapované I/O registrů), která pro BIOS ROM. Tuto tabulku pak OS přečte a ví přesně, které adresy může použít pro alokaci RAM stránek.

Adresace RAM v UEFI systémech

UEFI nahrazuje E820 tabulku UEFI Memory Map – strukturou GetMemoryMap(), která vrací podrobnější popis paměti s typy: EfiLoaderCode, EfiBootServicesData, EfiRuntimeServicesData, EfiConventionalMemory (volná RAM pro OS), EfiMemoryMappedIO (PCI zařízení), EfiPersistentMemory (NVDIMM). UEFI Boot Services jsou aktivní jen při bootování – po předání řízení OS volá OS funkci ExitBootServices(), která odstraní všechny UEFI boot-time alokace a vrátí paměť k dispozici OS.

PAE (Physical Address Extension) je technologie, která umožňuje 32bitovému OS přistupovat k více než 4 GB RAM. Rozšiřuje fyzické adresy na 36 bitů (max. 64 GB). 32bitový Windows použával PAE pro jádro, ale jednotlivé 32bitové procesy stále viděly max. 4 GB virtuálního adresního prostoru. Teprve 64bitový OS s 64bitovou adresaci virtuálního prostoru (2⁶⁴ adres – ve skutečnosti dnes ~256 TB fyzický prostor u Intel) odstranil omezení.

Proč 32bitový Windows viděl jen ~3,2 GB ze 4 GB RAM?Fyzický adresní prostor 32bitového systému je 4 GB (2³² bajtů). Z toho ale část zabírají PCI Express zařízení a jejich MMIO registry (paměťově mapované I/O) – například grafická karta s 1 GB VRAM mapuje svou paměť do tohoto prostoru. Tedy z 4 GB fyzické RAM zbyde pro OS typicky jen 3,0–3,5 GB viditelných adres. Tento problém odpadl s 64bitovými systémy, kde adresní prostor je prakticky neomezený.