Aktuality  |  Články  |  Recenze
Doporučení  |  Diskuze
Grafické karty a hry  |  Procesory
Storage a RAM
Monitory  |  Ostatní
Akumulátory, EV
Robotika, AI
Průzkum vesmíru
Digimanie  |  TV Freak  |  Svět mobilně

Levné, drahé paměti - jaké koupit?

1.11.2005, Eagle , recenze
Levné, drahé paměti - jaké koupit?
Na trhu se vyskytuje řada různých typů pamětí. Hlavními rozdíly jsou frekvence, časování a cena. Poslední jmenovaný faktor se u modulů stejné kapacity může lišit až faktorem 2x či více. Je však otázkou, nakolik dokážou rychlejší paměti ovlivnit výkon.
Burst přenosy

Jakmile jsou data vyhledána, probíhá burst přenos (dávkový přenos). To znamená, že jsou přečtena nejen hledaná data, ale i ta okolo.


Proč? Důvodem je, že to významně zvyšuje výkon. Vyhledávání dat je velmi pomalé, zatímco samotné čtení poměrně rychlé. Tím, že se přečtou data okolo vyhledaného údaje, se ušetří čas. Většina programovacích jazyků (například Pascal, C++ a jiné) navíc proměnné (data) seskupují k sobě. Takže například takovýto program napsaný ve Visual C++ ...


... po kompilaci seskupí proměnné penize_mama, penize_tata, penize_ja a penize_celkem do paměťového prostoru vedle sebe. Tedy pokud bude mít proměnná penize_mama adresu X, pak proměnná penize_tata bude mít adresu X+4 (datový typ int je čtyřbajtový) a proměnná penize_ja adresu X+8 atd.

Představme si nyní, jak bude v programu uvedená operace sčítání postupovat. Procesor si vyžádá data z paměti. Paměť bude vyhledávat proměnnou penize_mama a přečte jí, což jí bude trvat řekněme 6 hodinových cyklů (tj. zhruba 60 cyklů procesoru). Další proměnné přečte v rámci burst přenosu a dodá je do procesoru - pokud budeme uvažovat, že čtení každé proměnné bude trvat jeden cyklus, pak tři proměnné budou trvat celkově tři cykly (tj. zhruba 30 cyklů procesoru). Všimněte si, jak burst přenos šetří čas - kdyby se měla každá proměnná vyhledávat zvlášť, bude to trvat 4x 6 cyklů namísto 1x 6 + 3x 1 cyklů.

Poznámka: Uvedený příklad je samozřejmě modelový, protože datová šířka dnešních pamětí SDRAM je natolik veliká, že by se v rámci hledání a prvního čtení přečetlo několik proměnných zároveň. Vyhledávání v rámci jednoho řádku také probíhá výrazně rychleji.

Jednotlivé typy pamětí umí různě rychlé burst přenosy s různou délkou. Paměti typu FPM (Fast Page Mode) používané u procesorů třídy 486 uměly v burst přenosu dodávat data každé tři hodinové cykly. Paměti EDO (Extended Data Out) byly rychlejší a uměly to každé dva cykly. Proto například značení pamětí FPM bylo 7-3-3-3 (sedm cyklů první hledání a tři cykly další data v burst přenosu) a u EDO pak 7-2-2-2. Délka řetězce pak značí, kolik dat je možné dodat. V zde uvedených příkladech se jedná o čtyři číslice, tedy je možné dodat čtvery data.

Poznámka: Celkové množství dodaných bitů je určeno nejen délkou burst přenosu, ale také datovou šířkou pamětí. Čipové sady pro procesory třídy 486 používaly datovou šířku 32 bitů, tedy čtyřdatový burst přenos dodal 4x 32bitů, tedy 16 bytů. U procesorů Pentium se používaly paměti s datovou šířkou 64bitů, takže burst přenos dodal 32 bytů.

Nejnovější používaný typ pamětí jsou SDRAM. Zkratka znamená Synchronous Dynamic Random Access Memory a, jak už název napovídá, tyto paměti jsou schopny dodávat v burst přenosu data každý hodinový cyklus. Jejich označení proto bývá 7-1-1-1. Protože tyto paměti mají rychlejší burst přenos, jsou schopny za stejný okamžik dodat více dat. Pokud budeme uvažovat zde zmíněné časování pro EDO a SDRAM, pak druhé zmíněné dosáhnou o 30% vyššího výkonu (7-2-2-2 = 13 cyklů celkem, 7-1-1-1 = 10 cyklů celkem).

Novější variantou SDRAM jsou paměti DDR SDRAM (Double Data Rate Synchronous Random Access Memory). Tyto paměti se liší tím, že jsou v burst režimu schopny dodávat každý hodinový cyklus dvoje data. Zápis pak vypadá jako 7-1/2-1/2-1/2-1/2-1/2-1/2-1/2, kde značka 1/2 značí, že data jsou dodána za půlku hodinového cyklu. Všimněte si, že narozdíl od pamětí FPM, EDO a klasických SDRAM jsou DDR SDRAM schopny v burst režimu dodat osm dat namísto čtyřech.



Procesor musí být přizpůsoben

K tomu, aby se využila celková délka burst přenosu, musí být procesor náležitě navržen. Onen návrh spočívá v tom, že musí být schopen přijmout tolik dat. Pokud je nepřijme, jsou poslední čtená data zahozena.


Magické slovíčko je prefetch (spekulativní načítání). Procesor při zjištění požadavku na data (výše zmíněná proměnná penize_mama) vyvolá požadavek na určitý počet dat. Tento počet je určen délkou prefetch mechanismu a udává se v bytech. Například procesor Pentium III vyvolává požadavek na 32 bytů.

Výrobci procesorů většinou koncipují délku prefetch podle dostupných paměťových technologií tak, aby se využila celá délka burst přenosu. Například zmíněné Pentium III se svými 32byte přesně odpovídá množství dat dodaných SDRAM paměťmi - jak už jsme si říkali výše, burst přenos pamětí 7-1-1-1 dodá čtvery data. A protože datová šířka pamětí SDRAM je 64bit (8bytů), pak tedy 4x 8bytů = 32bytů. Kdyby Pentium III načítalo 64bytů, bylo by nutné vyvolat dva burst přenosy, což by trvalo 2x (7-1-1-1) cyklů, tedy 20T. A protože toto načítání je až na vyžadovanou proměnnou spekulativní (další proměnné jsou načítány proto, že se jejich využití očekává... ale není jisté !) a čím vzdálenější jsou spekulativně načítaná data od vyžadované proměnné, tím je spekulace větší, je dvojí burst přenos nežádoucí.

Představme si nyní, co by se stalo, kdyby základní deska s Pentiem III byla osazena paměťmi DDR SDRAM. Ty by dodaly ne 32bytů, ale rovnou 64bytů. Procesor by ale přijal pouze prvních 32bytů a zbytek by zahodil. Je vidět, že DDR SDRAM u Pentia III nemají žádný smysl. I když jeden teoretický by tu přeci jen byl. Paměti DDR SDRAM umožňují zvolit délku burst přenosu. Ta může být buďto 2, 4 nebo 8 dat. Zatím jsme v textu uvažovali o nejdelší variantě.


2 data: 7-1/2 (= 7.5T)
4 data: 7-1/2-1/2-1/2 (= 8.5T)
8 dat: 7-1/2-1/2-1/2-1/2-1/2-1/2-1/2 (= 10.5T)

Všimněte si ale, že díky rychlejšímu burst přenosu jsou DDR SDRAM schopny dodat za stejný okamžik více dat než klasické SDRAMy. Proto onen požadavek 32bytů vyřídí za osm a půl hodinových cyklů, zatímco původním SDRAMům to bude trvat cyklů deset. Potenciálně tedy DDR SDRAMy i u Pentia III znamenají vyšší propustnost. V praxi je ale něco takového nemožné, protože Pentium III je bržděno pomalou sběrnicí FSB, která není schopná takové množství dat přepravit.

Pentium III je dnes již samozřejmě zastaralé, takže má prefetch poměrně krátký. S stále novějšími procesory s větší cache a stále většími rozdíly mezi rychlostí cache a pamětí je tendence prefetch natahovat. Procesory Athlon jsou proto nastaveny na 64byte prefetch. To je shodou okolností přesně délka 8 datového burst přenosu DDR SDRAM. Z toho je vidět, že AMD již při uvedení v roce 1999 počítalo s tím, že v budoucnu budou dostupné paměti schopné delšího burst přenosu (toho se procesory dočkaly ke konci roku 2000).

Pokud nechcete svému Athlonu výkonem ublížit, nezapomeňte v Setupu BIOSu nastavit Burst lenght na 8.

Nejdelší prefetch mají v současnosti Pentia 4, která jsou nastavena na 128byte, přičemž 64byte je možné dodatečně zapnout (hodí se v situacích, kdy je počítač vybaven velmi pomalými paměťmi). 128bytů je přesně schopnost burst přenosu dual-channel DDR SDRAM. Připomeňme v této souvislosti, že dual-channel znamená dvě paměti zapojené paralelně - protože datová šířka dual-channel DDR SDRAM činí 128bitů, znamená to při 8 datovém burst přenosu přesně oněch 128bytů.



Frekvence

Frekvence je jedním z určujících parametrů výkonu nejen u procesorů, ale také u pamětí. Čím vyšší frekvence, tím vyšší výkon. U pamětí to má ale jeden menší zádrhel - ne vždy to musí fungovat tak, jak by za ideálních podmínek mělo.

Frekvence ovlivňuje především rychlost burst přenosů. Je zcela zřejmé, že burst přenos 7-1-1-1 bude trvat deset cyklů, ať už se jedná o frekvenci 100 či 200 MHz. V druhém případě ale data dostaneme dvojnásobnou rychlostí. Toto vychází z faktu, že při 200 MHz frekvenci trvá jeden hodinový cyklus 5ns, zatímco při 100 MHz 10ns.

Frekvence
Perioda (délka hodinového cyklu)
100 MHz
10ns
125 MHz
8ns
133 MHz
7.5ns
142 MHz
7ns
154 MHz
6.5ns
166 MHz
6ns
182 MHz
5.5ns
200 MHz
5ns
217 MHz
4.6ns
233 MHz
4.3ns
250 MHz
4ns
266 MHz
3.7ns

Časový rozdíl tak bude 100ns vs. 50ns. To jasně hovoří ve prospěch vyšší frekvence. Je nutné si ale uvědomit, že frekvence zároveň znamená větší požadavky na paměťový řadič i samotnou paměť. Ty nemusí vyšší rychlost předávání dat v burst režimu zvládat, takže může docházet k problémům.

U časování je situace ještě složitější. Rychlost provádění jednotlivých příkazů zůstává s měnící se frekvencí konstantní. Máme-li tedy paměť schopnou vykonat příkaz CAS Latency za dva cykly při rychlosti 200 MHz, znamená to, že tento příkaz paměť zvládá za 2x 5ns, tedy 10ns. Pokud snížíme frekvenci na 100 MHz, bude paměť schopná vykonat příkaz CAS Latency za jediný cyklus. A naopak při zvýšení frekvence na 250 MHz bude zapotřebí dva a půl cyklu.

Poznámka: Uvedený přepočet vychází z předpokladu, že závislost časování na frekvenci je zcela lineární a paměťový řadič je schopen takové nastavení ustát. To ale často nebývá reálné, takže na tCL = 1T zapomeňte. Stejně tak není možné "natahovat" hodnoty nad povolené meze - například tak, že by tCL = 5T. Prostě a jednoduše je nutné se pohybovat v určitých rozumných mezích, protože jenom tak bude celá věc fungovat. Mimochodem, není tajemstvím, že paměťové čipy používané u grafických karet mají hrozné hodnoty vyhledávání - napříkad CAS Latency za 5 či 6 cyklů. V tomto případě to ale moc nevadí, protože grafická karta v drtivé většině případů požaduje rychlý burst přenos, vyhledávání je vedlejší.

Jak vidíte z přepočtu, plyne vyšší rychlost pamětí při vyšší frekvenci v zásadě ze dvou faktorů:

    1. Rychlejšího burst přenosu.
    2. Možnosti zkrátit časy některých parametrů v okamžiku, kdy při nižší frekvenci nelze tak nízké hodnoty nastavit (například 100 MHz frekvence a tCL = 1T neprojde, zatímco stejně dlouhý tCL = 2T při 200 MHz ano).

V zásadě lze proto říct, že nejideálnějším nastavením je takové, která dosahuje nejvyšší frekvence a zároveň co nejkratších dob časování v nanosekundách.