Uw vraagbaar voor geheugen en memory
Home - Geheugen en Vista - Veel gestelde vragen over geheugen - Zelf geheugen installeren - Links - Contact
Op deze site vindt je alle informatie over geheugen in je computer.
Bijv. Dimm, SODimm, sDRAM, DDR, DDR2, DDR3 DualChannel?
Aangepast zoeken
Je zoekt informatie over geheugen?



Introductie

Waarom geheugen?

De reden is vrij simpel: de CPU leest en schrijft in een enorm hoog tempo data, een tempo dat de harde schijf nooit en te nimmer kan bijbenen. Plaats tussen de CPU en de harde schijf een soort van snelle buffer en de CPU kan een stuk vlotter z’n gang gaan. Dit buffer noemen we het fysiek geheugen; een medium dat zowel qua doorvoer (factor 25~80) en reactietijd (factor 1000+) veel sneller is dan de harde schijf.

Terug naar boven
Werking van geheugen, het basisprincipe

Een computer kent één taal, en dat is de taal van enen en nullen. Het is toevalligerwijs ook de enige taal die het geheugen machtig is; het slaat simpelweg enen en nullen op, op adreslocaties gespecificeerd door de CPU en staat toe dat deze data te zijner tijd weer gelezen kan worden. Ziedaar, het onthoudt! :)

Dit onthouden gaat betrekkelijk simpel: een geheugen chip bestaat uit verschrikkelijk veel cellen, en elke cel kan zich in twee toestanden bevinden: opgeladen (=1) of ongeladen (=0).

De cellen in een chip liggen allemaal naast elkaar als de vakjes op een schaakbord (echt 2-dimensionaal dus), hierdoor is het mogelijk elke cel binnen de chip een eigen adres te geven (net als ‘a2’ of ‘e6’ op een schaakbord); het snijpunt van de rij en de kolom. Zodoende kan de CPU bijvoorbeeld een Byte opslaan door acht cellen te adresseren en er vervolgens de acht enen en/of nullen in plaatsen. Overigens, de CPU houdt in z’n L2 cache bij waar hij dit Byte heeft opgeslagen, anders volgt een enorme zoektocht naar dit Byte als hij hem weer wil lezen (net als een adresboekje/plattegrond ook erg makkelijk is in een grote, onbekende stad).

Terug naar boven
Het benaderen van het geheugen

We gaan nu een reisje maken van de processor naar de juiste geheugencel en weer terug, dit om een overzicht te krijgen van wat er nu precies gebeurd maar ook om alle termen een juiste plaats te kunnen geven. Als voorbeeld neem ik een moderne situatie met SDRAM/DDR-SDRAM. De termen die je tegenkomt zijn klikbaar voor verdere uitleg. Zoek je een term die niet tijdens de reis genoemd wordt, kijk dan bij de termen lijst.

De reis
Als de processor data nodig heeft wat niet in zijn cache staat zal hij het uit het geheugen moeten halen, hiertoe zet hij een leesopdracht uit richting de geheugencontroller. De geheugencontroller stuurt via de adres- en commandolijnen de leesopdracht plus het adres van de desbetreffende geheugencellen naar de DIMM. Bij meerdere bezette DIMM sockets of bij modules die aan twee kanten zijn bezet moet eerst de juiste chiprij worden geselecteerd, dit heet de Chip-Select (CS). Vervolgens wordt binnen de chiprij de gewenste interne bank geactiveerd door een Bank-Select (BS) signaal (wachttijd tussen CS en BS is CMD rate). Omdat een interne bank over alle chips van de module is verdeeld, is er nu in elke chip op de DIMM een specifiek geheugenveld uitgekozen. Het enige wat nog ontbreekt zijn de rij- en kolomnummers om de juiste cel uit te kiezen binnen de geheugenvelden. Deze twee nummers worden in deze volgorde achter elkaar door de controller via dezelfde adreslijnen doorgegeven. Om voor de geheugenchip duidelijk te maken waar de rij- en kolomnummers beginnen en eindigen wordt er via de commandolijnen een RAS signaal voor de rij en een CAS signaal voor het kolomadres mee verstuurd. Als eenmaal de juiste rij binnen het geheugenveld is geselecteerd lezen de Sense Amps de gehele rij uit en bufferen de inhoud (dit kost tijd; de RAS-To-CAS delay). Vervolgens wordt door middel van het kolomadres de juiste bit in de Sense Amps geselecteerd en wordt deze verstuurd naar de latch voor de desbetreffende datalijn op de geheugenchip (ook dit kost tijd: de CAS Latency). Vanuit hier leest de controller uiteindelijk de gewenste gegevens en worden ze doorgestuurd naar de processor waarmee de reis ten einde komt.

Er bestaat ook een snellere manier van reizen, en dat is waar wij natuurlijk wel oren naar hebben :) Een geheugenchip heeft enkele troefkaarten waarmee er flink wat snelheid kan worden gewonnen ten opzichte van onze eerste reis:

De snelle reis
Nadat een rij voor de eerste keer is gelezen is de inhoud van deze rij (page) in de Sense Amps opgeslagen, dit heet een Open Page. Als de geheugencontroller data opvraagt die toevallig in deze Open Page staat spreken we van een Page-hit, en wanneer de Open Page een groot aantal bits achter elkaar kan leveren is er sprake van Burst-mode. Het snelheidsvoordeel wordt gecreëerd doordat er twee stappen over kunnen worden geslagen: de inhoud van de Sense Amps hoeft niet teruggeschreven te worden naar de originele geheugencellen (de RAS precharge tRP, dit om de Sense Amps vrij te geven) en de inhoud van de juiste geheugencellen hoeft ook niet naar de Sense Amps weg te worden geschreven (want het stond er al), oftewel, we hebben geen last van de RAS-To-CAS delay (tRCD) en de data kan met minder vertraging worden geleverd. In het geval van een Page-miss moeten deze extra stappen wél worden genomen (Sense Amps legen, Sense Amps vullen).

De snelheid wordt nog verder opgevoerd door goed gebruik te maken van de banken. Een geheugencontroller vult tijdens het opslaan een bank niet rij voor rij, maar hij verdeelt de gegevens per rij onderling over de afzonderlijke banken. Om tussen de banken over te schakelen moet weliswaar de Row-Active-To-Row-Active delay (tRRD) voor lief worden genomen, maar dit betekend wel dat er hierdoor bij burst benaderingen geen vertragingen zijn; het is mogelijk een bank te adresseren terwijl een andere bank gegevens levert of schrijft (als dit allemaal binnen één bank gebeurd moet er veel meer gewacht worden). Dit proces heet bank interleaving en levert in feite alleen voordeel op wanneer er grote datablokken sequentieel worden verzonden.

De terugreis
Het bovenstaande gaat allemaal over het lezen van het geheugen, er is ook een omgekeerde weg; het schrijven. De processor heeft bijvoorbeeld data bewerkt en wil deze nu in het geheugen zetten. In principe gaat dat op dezelfde manier als hier boven (maar dan met omgekeerde data richting). Het schrijven is iets minder interessant omdat de processor niet echt hoeft te wachten (hij staat niet te springen om data waar hij wat mee wil doe zeg maar). De chipset is uitgerust met een writeback buffer waar de processor zijn schrijfopdrachten heen stuurt en de geheugencontroller handelt het schrijven af wanneer daar een goede gelegenheid voor is (tussen de lees en refresh acties door).

Terug naar boven
Persoonlijk advies

Ben je op zoek naar geheugen en wil je advies op maat dan ben je goed af bij een (online) specialist. Goede ervaringen hebben en scherpe prijzen krijg je o.a. bij InternGeheugen.com of Geheugen.nl. Vooral interngeheugen.com heeft een erg groot assortiment

Terug naar boven

Geheugentermen en -jargon

Geheugencontroller

Het onderdeel van de chipset dat het geheugen aanstuurt. Ook vaak aangeduid als Northbridge.

Terug naar boven
Adres- en commandolijnen

De lijnen die van de chipset naar de geheugenmodules lopen. Over deze lijnen verzend de geheugencontroller de adressen en de commando’s waarmee de geheugenchips worden aangestuurd. Zeg maar de teugels van de geheugencontroller. Er zijn maximaal 13 adreslijnen waarmee er dus maximaal 2^13 = 8192 rijen en kolommen geadresseerd kunnen worden.

Terug naar boven
Datalijnen

De lijnen tussen de geheugencontroller en de geheugenchips waar de daadwerkelijke data overheen gaat. Dit zijn in het geval van de recente SDRAM soorten 64 stuks (64bit) en voor RIMM worden er 16 gebruikt. In het geval van ECC worden er respectievelijk 72 en 18 datalijnen gebruikt.

Terug naar boven
DIMM

Dual Inline Memory Module. Ze heten zo omdat aan beide kanten van het PCB pinnen zitten daar waar op een SIMM de pinnen allemaal aan één kant zitten. Verkrijgbaar in drie soorten, met 168, 184 en 240 pinnen, allen voorzien van een 64/72bits databreedte. De 168pins DIMM’s zijn te krijgen met FPM- EDO- en (VC- en E-) SDRAM chips in vele verschillende maten (van 16MB tot 1GB). De 184pins uitvoering wordt gebruikt voor de DDR-SDRAM modules en deze zijn verkrijgbaar in 128MB t/m 2GB uitvoering. De 240pins uitvoering wordt gebruikt voor de DDR2-SDRAM modules. Deze laatste is verkrijgbaar in 256MB t/m 4GB uitvoering.

Terug naar boven
RIMM

Rambus Inline Memory Module. Module gebruikt voor RDRAM. Een RIMM telt 184 pinnen en kan 16 chips bevatten. De databreedte is 16/18bits. In combinatie met de Pentium4 worden deze RIMM’s per identiek paar op het moederbord geplaatst om zo nog meer bandbreedte ter beschikking te stellen. Dankzij het lage aantal lijnen in vergelijking met DIMM’s is een dubbele RIMM geheugenbus relatief makkelijk te implementeren.

Terug naar boven
SO-DIMM

Small Outline Dual Inline Memory Module. Dit is de laptopvariant van de DIMM, ze zijn ongeveer de helft kleiner dan een reguliere DIMM. Verkrijgbaar in vier soorten, met 72, 100, 144 en 200 pinnen. Met uitzondering van de 32bits 100pins uitvoering zijn ze voorzien van een 64/72bits databreedte. De 72pins SO-DIMM’s zijn te krijgen met EDO chips, de 100pins SO-DIMM’s zijn te krijgen met FPM chips, de 144 pins uitvoering wordt gebruikt voor SDR-SDRAM chips en de 200 pins voor DDR en DDR2 chips.

Terug naar boven
RAS

Row Address Strobe. Signaal dat wordt verstuurd om de geheugenchip de verstuurde rij adressen te laten herkennen.

Terug naar boven
RAS precharge

tRP. Het terugschrijven van de data in de Sense Amps naar de originele geheugencellen. Hierdoor worden de Sense Amps weer vrijgegeven voor een volgende actie (refresh of RAS-To-CAS)

Terug naar boven
Auto precharge

In deze modus regelt de DIMM zelf de RAS Precharge. Het effect is dat na élke benadering de Open Page gesloten wordt, waarmee je het voordeel van een langer open te houden page mist.

Terug naar boven
CAS

Column Address Strobe. Signaal dat wordt verstuurd om de geheugenchip de verstuurde kolom adressen te laten herkennen.

Terug naar boven
CAS latency

CL. Het aantal kloktikken dat nodig is om de juiste kolom te selecteren van de rij (page) die in de Sense Amps zit en de inhoud naar de latch te transporteren alwaar de data beschikbaar is voor de geheugencontroller. Hoe lager het aantal kloktikken hoe beter (want minder wachttijd). In de SPD staat de juiste instelling, maar het kan ook in het BIOS met de hand worden ingesteld: 2, 2,5 of 3.

Terug naar boven
RAS-To-CAS delay

tRCD. Het aantal kloktikken dat nodig is om een geadresseerde rij (page) volledig naar de Sense Amps te schrijven (alwaar het gebufferd wordt). Mogelijkheden zijn 2 of 3 tikken waarbij de laagste de snelste is.

Terug naar boven
Command rate

CMD rate. Het aantal kloktikken tussen de Chip-Select (CS) en de Bank-Select (BS). De waarde kan op 1T of 2T in worden gesteld (mits de juiste chipset en BIOS). 1T is sneller. Hoe minder chiprijen aanwezig zijn hoe makkelijker 1T ingesteld kan worden.

Terug naar boven
Sense amps

Sense Amplifier. Dit is een buffer aan het uiteinde van de kolommen (elke kolom heeft één Sense Amp). Een Sense Amp kan precies de inhoud van één geheugencel omvatten en de Sense Amps binnen één bank kunnen precies één rij (page) omvatten. De hoeveelheid Sense Amps binnen een bank, de Page Size, is een belangrijke maat voor een geheugenmodule. Afhankelijk van de interne constructie van de geheugenchips is deze buffer 2, 4, 8 of 16Kbyte groot.

Een belangrijke wetenswaardigheid is dat als een geheugencel wordt benaderd (lees- en/of schrijfactie) de inhoud gewist wordt! Door telkens gebruik te maken van de Sense Amps kan de gebufferde inhoud naderhand weer naar de originele cellen worden teruggeschreven (tRP).

Terug naar boven
Page

Een page is de verzameling van alle geheugencellen met hetzelfde rij adres binnen een bepaalde bank/chiprij van alle chips op een module. Een page (rij) past precies in z’n geheel in de Sense Amps (de kleine buffers aan het uiteinde v.d. kolommen).

Terug naar boven
Page hit

Wanneer de gewenste data reeds in de Sense Amps (Open Page) staat. Hier wordt een extra adresseringsstap overgeslagen; de juiste rij hoeft niet geselecteerd te worden en hoeft ook niet naar de Sense Amps te worden weggeschreven. Dit bespaart tijd.

Terug naar boven
Active to precharge time

tRC (RAS Cycle time). De tijd dat een Open Page actief/open is totdat er een RAS Precharge (tRP) optreed. Dit is van belang wanneer er een Page-miss optreed en de benodigde data in dezelfde bank staat. Hierdoor moeten de Sense Amps eerst worden geleegd (tRP) en vervolgens weer worden gevuld met de juiste page. De tRP (2 of 3 kloktikken) plus de minimale tijd dat een page open moet zijn (Row Active Time, tRAS) vormen samen de Active to Precharge time met een minimum van 5T (kloktikken)

Terug naar boven
Page miss

Tegenovergestelde van Page Hit. De benodigde data staat niet in een Open Page zodat de juiste rij geselecteerd moet worden, de huidige inhoud v.d. Sense Amps naar de originele cellen teruggeschreven (RAS Precharge) moet worden en daarna de inhoud van de juiste cellen naar de Sense Amps moet worden geschreven.

Terug naar boven
Open page

Wanneer een page in de Sense Amps staat is noemen we het een Open Page. Een page kan niet altijd open blijven omdat de Sense Amps nodig zijn voor de refresh-cycli. Aan de andere kant is er ook een minimale hoeveelheid tijd dat een page open moet blijven, de Row Active Time (tRAS).

Terug naar boven
Page size

Zie Sense Amps

Terug naar boven
Geheugenveld

Een geheugenchip bestaat vanwege snelheidseisen uit meerdere kleine tweedimensionale geheugenvelden met de per veld noodzakelijke schakelingen voor het lezen en schrijven daaromheen geplaatst. De velden hebben een vaste afmeting van 4096 rijen en in het geval van 256+Mbit chips 8192 rijen (die 8192 is het maximum zoals onder Adres- en commandolijnen wordt verklaard). De reden voor de 2^12 = 4096 rijen is de refresh.

Terug naar boven
Rij en kolom

Het tweedimensionale principe waarmee een geheugenveld in adressen wordt opgedeeld. Als een schaakbord, maar dan met 4096*512=2097152 of 8192*512=4194304 vakjes.

Terug naar boven
Latch

Het uitgangsregister. De opgevraagde data wordt vanuit de Sense Amps naar de Latch getransporteerd van waaruit de cpu/geheugencontroller de data ophaalt.

Terug naar boven
ECC

Error Checking & Correcting of Error Correcting Code. Dit is een functie waarmee foutieve bits kunnen worden hersteld. Door omstandigheden (straling van buiten af, spanningspieken e.d.) kan een de inhoud van een geheugencel beschadigd raken (een Soft Error); een logische één wordt een logische nul. Dit omvallen van een bit kan behoorlijke gevolgen hebben voor de werking van een computer. Een DIMM met ECC functie heeft een extra geheugenchip en elke databyte (8bits) dat wordt opgeslagen krijgt een pariteit bit mee welke in de extra geheugenchip wordt opgeslagen. Bij het opvragen van data wordt middels een snel algoritme aan de hand v.d. pariteitsbit gecontroleerd of alle bits in de byte onbeschadigd zijn, zo ja dan is er niets aan het handje, zo nee, dan wordt de omgevallen bit hersteld alvorens het byte naar de processor verstuurd wordt.

ECC DIMM’s zijn logischerwijs duurder dan non-ECC DIMM’s; voor elke byte zijn er 9bits nodig i.p.v. 8, vandaar de extra geheugenchip (welke de totale nuttige omvang overigens niet vergroot), zie ook het plaatje bij DIMM keys. Een ECC DIMM is overigens niks langzamer dan een non-ECC DIMM, alleen in het geval dat er tegen een Soft error op wordt gelopen, dan zal er een extra kloktik in worden gelast om de fout te herstellen.

De kans op een omgevallen bit is niet zo groot; volgens een technische studie van Micron ontstaat op een 16MB DIMM slechts één maal in de 16 jaar een Soft error. Dit betekend dat in een 256MB DIMM elk jaar een Soft error voorkomt. Je kunt je voorstellen dat in een kritieke bedrijfsserver met meerdere Gigabytes aan ram het aantal Soft errors per jaar behoorlijk kan oplopen, vandaar dat daar te allen tijde ECC wordt gebruikt.

ECC en non-ECC DIMM’s kunnen samenwerken op één moederbord, met als gevolg dat de ECC functie niet gebruikt kan worden. Overigens moet een moederbord/geheugencontroller wel de mogelijkheid hebben om met ECC om te gaan; niet alle moederborden kunnen de ECC functie van ECC DIMM’s activeren.

Terug naar boven
Chiprij

Een DIMM is single-sided of double-sided. Één side is een chiprij.

Terug naar boven
Single-sided

Een DIMM met één chiprij (verwarrend genoeg ook wel ‘bank’ genaamd). Veelal te herkennen omdat er slechts aan één kant geheugenchips zitten. Dit hoeft niet altijd het geval te zijn; er bestaan ook single-sided DIMM’s met aan beide kanten chips. Een DIMM heeft een databreedte van 64bits, dit betekend dat alle chips op de DIMM tezamen minimaal deze 64bits moeten kunnen vullen. Acht chips met elk acht datalijnen krijgen de 64 datalijnen van de DIMM vol, dit kunnen ook 16 chips met elk 4 datalijnen zijn (simpel rekensommetje van 8x8 of 16x4 = 64). In het geval dat alle chips gezamenlijk op 64 datalijnen uitkomen spreekt met altijd van een single-sided DIMM, ongeacht of er nu wel of niet aan beide kanten v.d. DIMM chips zitten. (zie ook chipstructuur)

Een RIMM wordt single-sided genoemd als er chips aan beide kanten zitten. Door het seriële karakter maakt het totaal aantal datapinnen van alle RDRAM chips tezamen niet uit (elke RDRAM chip, buiten de ECC lijnen gerekend, precies 16 stuks); één chip vult het Rambus geheugenkanaal al op.

Terug naar boven
Double-sided

Een DIMM met twee chiprijen (banken). Veelal te herkennen omdat er aan beide kanten geheugenchips zitten. Echter, zoals bij ‘Single-sided’ opgemerkt kan een DIMM met aan beide zijden chips ook single-sided zijn. Om een DIMM daadwerkelijk als double-sided te kenmerken moeten alle chips op de DIMM gezamenlijk 128 datalijnen hebben, dit door bijvoorbeeld 16 chips met elk acht datalijnen (16x8 = 128). Alleen kunnen er maar 64 datalijnen van de DIMM naar buiten, dus hebben we er tweemaal te veel. Wel, de datalijnen worden per paar parallel geschakeld zodat we toch weer op 64 datalijnen voor de DIMM uitkomen. Het gevolg van dit concept is wel dat de geheugencontroller twee chiprijen (banken) ziet en deze ook moet selecteren (Chip-Select, SC) eer hij ze aan kan spreken.

Veel chipsets kunnen nogal lastig doen wat betreft het aantal banken. Er zijn moederborden met bijvoorbeeld vier DIMM sockets, maar waarvan de chipset maximaal zes banken aan kan sturen. In zo’n geval moet je er voor zorgen dat je alle vier de sockets niet gaat vullen met alleen maar double-sided DIMM’s, want dat zijn acht banken. Neem vier single-sided’s of een combinatie van single- en double-sided waarmee je niet boven de zes banken uit komt.

Ook bij RIMM’s komt de term double-sided voor. Net als eerder opgemerkt (zie Single-sided) gaat het hier alleen om het fysieke voorkomen.

Terug naar boven
Burst-mode

Direct op elkaar volgende gegevens die binnen dezelfde rij van een geheugenmodule zijn opgeslagen kan de chipset zonder veel adresseerwerk (overslaan van tRP en tRCD) met elke kloktik verzenden. Dit is de maximum doorvoer die een DIMM kan halen (en waar de snelheidsaanduiding op gebaseerd is). Zie het als het openen van een waterkraan; eerst moet je handelingen verrichten om de kraan te openen zodat de eerste drup er uit komt, maar vervolgens stromen de overige druppels er automatisch achteraan.

Terug naar boven
Bank

Een term die verwarrend genoeg in meerdere gevallen gebruikt wordt. Een geheugenchip is intern opgedeeld in geheugenvelden en een aantal geheugenvelden vormen samen een bank. Een (DDR-)SDRAM chip van 64Mbit en groter bestaat uit vier banken en een 128Mbit RDRAM chip telt zelfs 32 banken. De chip is om snelheidsredenen opgedeeld in deze banken zodat bepaalde acties elkaar kunnen overlappen; van één bank wordt gelezen terwijl het proces om het juiste adres te benaderen op de andere bank alvast ingezet kan worden. Belangrijk om te weten is dat in het geval van een DIMM de banken van elke individuele chiprij samen worden gevoegd; zodoende kan een DIMM, ongeacht het aantal chips nooit meer dan vier (single-sided) of acht (double-sided) banken totaal tellen. Alle eerste banken van alle chips binnen de chiprij vormen samen de gehele eerste bank, en dit geldt ook voor de tweede, derde en vierde bank. In het geval van een RIMM (dus met RDRAM chips) is dit niet zo; hier blijven alle interne banken apart en zal met het toevoegen van elke chip op de RIMM het totaal aantal banken op de RIMM alleen maar stijgen. Dit komt voort uit het feit dat RDRAM chips onafhankelijk van elkaar de hele 16bits geheugenbus opvullen en bij DIMM’s de chips parallel geschakeld zijn om de gehele 64bits geheugenbus op te vullen.

Terug naar boven
Bank interleaving

Het laten overlappen van meerdere acties om tijd te winnen. Één bank adresseren terwijl de ander data levert of schrijft. Bank interleaving levert alleen maar voordeel op bij sequentieel transport van grote gegevenspakketten. Deze functie werkt prima met één DIMM; deze bestaat tenslotte uit meerdere banken. De omvang v.d. gebruikte chips is bepalend of 2-way of 4-way interleaving ingesteld kan worden: alle chips van 64Mbit en groter hebben vier banken en kunnen dus met 4-way-interleave overweg. (zie voor omvang: chipstructuur)

Terug naar boven
Refresh

Een DRAM geheugencel lijdt aan geheugenverlies, hoe ironisch! Een cel is een minuscule condensator en omdat de directe omgeving (silicium) een beetje geleidend is ontlaad deze kleine condensator (30~40 femtoFarad) zich continu met als gevolg dat na verloop van tijd (we praten over milliseconden) alle opgeslagen informatie verloren gaat. Om deze amnesie tegen te gaan worden om de 64ms de cellen ververst, de Refresh; de inhoud van een complete rij cellen (page) wordt naar de Sense Amps aan het uiteinde v.d. kolommen geschreven en vervolgens weer teruggekopieerd naar de desbetreffende rij cellen, zodat ze weer volledig opgeladen zijn. Dit rij na rij. Een extern kloksignaal met een periode van 15,6µs zorgt er voor dat na 64ms exact 4096 rijen per keer worden ververst (het standaard ritme van 4k-refresh). 256Mbit chips gebruiken een 8k-refresh (deze hebben twee maal zoveel rijen).

Terug naar boven
PCB

Printed Circuit Board (printplaat). Het rechthoekige plaatje waar de chips en de pinnen op zitten. Deze plaat bestaat uit meerdere lagen met daartussen de printbanen van en naar de chips en de externe pinnen. Het minimum aantal lagen is vier, maar de betere DIMM fabrikanten gebruiken zes lagen. Een belangrijk aspect v.d. DIMM; wanneer goed geconstrueerd zijn de signalen minder ontvankelijk voor storingen en ruis. Hierdoor is de dataoverdracht betrouwbaarder, maar kan de DIMM ook op hogere snelheden draaien.

Terug naar boven
Chipstructuur

De chipstructuur geeft aan hoe een chip is opgebouwd; hoeveel datalijnen, hoeveel geheugencellen en hoe deze zijn gerangschikt. Veelal kom je termen tegen als 32Mx8 of 64Mx4 om maar wat te noemen, maar wat betekenen ze nu precies? Het staat voor het aantal Megabits per datalijn van één chip. Dus 32Mx8 betekend 32Megabit per elke datalijn, en daar zijn er acht van, dat maakt 32Megabit maal acht is 256Mbit. Dit is dus een chip welke 256Mbit groot is. Hieronder een overzichtje voor diverse (DDR-)SDRAM DIMM maten:

chipstructuurDIMM structuur (aantal chips / pagesize)
capaciteit
(DRAM density)
structuurdiepte
x datalijnen
bankrowcol32MB64MB128MB256MB512MB1GB
16Mbit4Mx42129161 / 4K
64Mbit4Mx1641284 / 2K
64Mbit8Mx84129 8 / 4K161 / 4K
64Mbit16Mx441210 321/3 / 8K
128Mbit8Mx1641294 / 4K
128Mbit16Mx841210 8 / 8K161 / 8K
128Mbit32Mx441211 162 / 16K323 / 16K
256Mbit16Mx164139 4 / 4K
256Mbit32Mx841310 8 / 8K161 / 8K
256Mbit64Mx441311 162 / 16K323 / 16K
512Mbit64Mx841311 8 / 16K161 / 16K
512Mbit128Mx441312 162 / 32K

1 Double-sided DIMM met per twee chips de datalijnen parallel geschakeld.
2 Single-sided DIMM met aan beide kanten chips. Voldoet niet aan de PC100/133 specs.
3 32 chip modules (stacked DIMM's), alleen registered DIMM's.

512Mbit bestaat alleen in DDR-SDRAM. Nog slecht verkrijgbaar en op dit moment erg duur. 1024Mbit (1Gbit) DDR-SDRAM chips worden op dit moment gesampled. Met 32 van deze chips is zelfs een 4GB stacked DIMM te construeren (extreem prijzige DIMM's).

Bovenstaand overzicht geldt ook voor DDR-SDRAM DIMM’s, met de opmerking dat daar geen 16Mbit voor verkrijgbaar is.

Af en toe wordt er een andere notatie gebruikt, bijvoorbeeld 4x2Mx8. Dit houdt in dat er 8 datalijnen zijn met elk 4 geheugenvelden van 2Mbit. Dit is hetzelfde als een 8Mx8 chip.

Verder staat er Row en Col vermeld in de tabel. Dit zijn de adresbits voor respectievelijk de rijen en de kolommen. Bij de 64Mbit 4Mx16 chip staat Row 12 en Col 8, dit houdt in dat er per geheugenveld 2^12=4096 rijen zijn en 2^8=256 kolommen (is 1Mbit per geheugenveld, wat het een 4x1Mx16 chip maakt).

Terug naar boven
Registered

Een DIMM kan voorzien zijn van extra registers (zeg maar een soort buffer) voor de inkomende adres- en commandosignalen. Een standaard huis- tuin en keuken DIMM is niet van registers voorzien en die noemen we dan ook unbuffered DIMM. Als een computer uitgerust is met veel DIMM’s en dus geheugenchips zijn er veel meer signalen nodig om deze chips aan te sturen, plus dat al deze signalen een behoorlijke elektrische last genereren op de bus (iets wat ongewenst is). De functie van de registers is om een deel van het adresseerwerk van de chipset over te nemen; in plaats van afzonderlijke chips 'ziet' de chipset alleen de enkele registers van de diverse DIMM's. De registers adresseren vervolgens de benodigde chips. Het voordeel is dat de chipset meer chips aan kan sturen (indirect welliswaar) en er een mindere elekrische belasting is op de geheugenbus.

Zie het als een manier om het grote aantal teugels niet te laten verwarren in het geval van een achtspan koets, daar waar bij een tweespan koets de teugels een veel geringere kans hebben om in elkaar verwikkeld te raken.

Het nadeel van deze stabiliteitsbevorderende functie is dat alle inkomende adres- en commandosignalen met één tik worden vertraagd (deze tijd is namelijk nodig om de juiste chips te adresseren) waardoor de totale geheugenperformance iets minder is. Echter, dit is een nadeel dat niet opweegt tegen het voordeel. Registered DIMM’s kunnen niet samenwerken met unbuffered DIMM’s, je kan deze twee soorten dus niet tegelijk op één moederbord gebruiken. Overigens moet de geheugencontroller wel met registered DIMM’s om kunnen gaan; niet alle moederborden werken met registered DIMM’s.Registered geheugen is te herkennen aan de twee extra registerchips en een PLL chip, zie ook het plaatje bij DIMM keys

Terug naar boven
Unbuffered

Het tegenovergestelde van registered. De geheugencontroller staat zonder tussenkomst van een register in direct contact met alle aanwezige geheugenchips. In het geval van drie en soms vier dubbelzijdige DIMM’s is dit geen probleem. Unbuffered en registered DIMM’s kunnen nooit met elkaar samenwerken op één moederbord, vergewis je er dus van dat je geen registered en unbuffered mengt.

Terug naar boven
Latentie

Latency betekend niets anders dan wachttijd. Alle stappen die worden genomen om de benodigde data op te halen kosten tijd, deze tijd wordt tegenwoordig in het aantal kloktikken uitgedrukt. De kloktikken zijn afgeleid van de snelheid waar het geheugen op draait. Zo betekend een latentie van 3 kloktikken in het geval van een PC133 DIMM dat er 22,5ns moet worden gewacht (één kloktik van een 133MHz DIMM duurt 1000ns/133=7.5ns).

Terug naar boven
Latentie aanduidingen

Geheugenmodules zijn naast de snelheidsaanduiding voorzien van latentie aanduidingen (in feite ook een snelheidsaanduiding maar voor de duidelijkheid heb ik het gescheiden). Een voorbeeld: PC133 333. Dit betekend dat het een PC133 DIMM is met de volgende latenties: CL = 3, RAS-to-CAS delay = 3 en RAS precharge time =3. Waarbij de 3 staat voor het aantal kloktikken dat er gewacht wordt. I.p.v. een 3 kan er ook een 2 staan, dat zijn de snellere modules.

Op een DDR-SDRAM DIMM is er naast de 2 en 3 nog een derde mogelijkheid voor CL, namelijk 2,5.

Op een RIMM staat er achter de snelheidsaanduiding slechts één getal, b.v. PC800-45. Dit is de Row Access Time, en hoe lager hoe beter (laagste is vooralsnog 40ns).

Ook hier geldt dat modules met verschillende latentietijden gemengd kunnen worden. De traagste settings zullen evenwel gebruikt worden.

Terug naar boven
SPD

Serial Presence Detect. Een EEPROM (ROM chip) op de geheugenmodule waarin alle parameters staan met hun waarde plus extra info over de fabrikant en het type module. Het BIOS leest de SPD uit via de System Management Bus en stelt de parameters overeenkomstig de waardes in de SPD in. Het gevolg is dat er niet in het BIOS hoeft te worden gefrutseld om de module goed te laten functioneren.

Een optie is om in het BIOS de SPD te overrulen en handmatig instellingen te doen. Dit laatste kan je doen om het maximale uit de module te halen; vaak is een geheugenmodule tot strakkere (lees: snellere) timings in staat dan door de SPD wordt aangegeven (dit i.v.m. stabiliteit en Jedec of Intel standaarden).

Terug naar boven
Page policy

Dit is de manier hoe de chipset met pages omgaat. Dit is met name relevant in het geval van toevallige benaderingen van kleine datablokken. Als de chipset genoeg pages simultaan open kan houden is de kans op een toevalstreffer dat de gevraagde data in de Sense Amps staat (Page Hit) een stuk groter. Nu kan de chipset twee dingen doen 1) na het benaderen van de open page deze page sluiten om de Sense Amps te gebruiken voor b.v. de refresh of een precharge, en daarmee de kans op een volgende toevalstreffer verkleinen, of 2) de page nog openhouden en de kans op een volgende toevalstreffer vergroten. Nu kan een page niet onbeperkt openstaat omdat de Sense Amps gebruikt moeten worden voor de refresh. De chipset kan ook een pagehit-limit instellen; na een x aantal malen (b.v. 4, 8 of 16) een page hit wordt de page gesloten.

Terug naar boven
DIMM formaat aanduidingen

Naast de gebruikelijk aanduiding in totaal aantal MB’s (b.v. 256MB, 512MB) wordt er een andere manier gebruikt om de omvang van een DIMM aan te geven. Zo kun je 32Mx64 of 64Mx72 tegenkomen. Het eerste getal staat voor het aantal megabits en het tweede getal staat voor het aantal datalijnen. Een DIMM heeft altijd 64 nuttige datalijnen, de overige acht zijn in het geval van een x72 DIMM de ECC lijnen en deze tellen niet mee in de berekening voor de totale omvang. Zo telt een 32Mx64 DIMM 32x64=2048Mbit en dat is gedeeld door acht 256MB. Een 64Mx72 DIMM telt 64x64=4096Mbits is 512MB.

Terug naar boven
DDR

Double Data Rate. Een techniek waarbij per kloktik twee maal zoveel data kan worden getransporteerd; op zowel de op- als neergaande klokflank wordt een bit vervoerd. Wordt toegepast voor DDR-SDRAM maar ook voor RDRAM.

Terug naar boven
DDR2

De tweede versie van Double Data Rate SDRAM. Het grootste verschil met DDR-SDRAM is dat er 4 bits tegelijk wordt uitgelezen, in plaats van de gebruikelijke 2 bits. Om de aanvoer van de extra bits bij te kunnen houden is de I/O buffer tweemaal sneller gemaakt. Door dit allemaal is er tweemaal zoveel bandbreedte ten opzichte van DDR-SDRAM. Er worden dus gewoon nog steeds 2 bitjes per kloktik verstuurd, echter de klok is tweemaal sneller.

Terug naar boven
SDR

Single Data Rate. Per kloktik wordt er één bit getransporteerd op de opgaande klokflank. Wordt met uitzondering van DDR-SDRAM door alle SDRAM soorten gebruikt.

Terug naar boven
QDR

Quad Data Rate. Per kloktik worden vier bits getransporteerd. Er zijn verschillende manieren om zoiets voor elkaar te krijgen, één is dat er gelijktijdig geschreven en gelezen kan worden op DDR snelheid (b.v. in het geval van de QDR-SRAM's waar het lezen en schrijven door afzonderlijke lijnen/poorten gaat). In feite is een zuivere leesactie net zo snel als een leesactie op een DDR chip, er worden in totaal pas vier bits verplaatst als er gelijktijdig wordt geschrven en gelezen.

Een andere manier is per op- of neergaande kloktik twee bits mee te zenden (is vier per gehele kloktik). Dit heeft nogal wat voeten in aarde omdat timings erg belangrijk worden. Stel je een kloksignaal voor dat op 1.6V werkt, als de spanning nul is en snel wordt opgevoerd naar 1.6V heb je een opgaande klokflank. Echter, verdeel je deze opgaande klokflank in twee gedeeltes (0,0V ~ 0,8V en 0,9V ~ 1,6V) dan kun je elk spanningsniveau een bit meegeven. De geheugencontroller zal de verschillen tussen 0,0V, 0,8V en 1,6V zien en twee bits lezen per op- of neergaande klokflank. De Quad Pumped FSB van de P4 werkt naar alle waarschijnlijkheid ook met dit principe.

Hieronder een voorbeeld van een 100MHz frequentie (10ns) met de drie soorten; SDR, DDR en QDR. Elk pijltje geeft een bit aan op de respectievelijke klokflank (in het geval van SDR alleen op de opgaande etc.)

Terug naar boven
Single/Dual/Quad Channel

Het aantal kanalen tussen de geheugencontroller en het geheugen. Meer kanalen betekent dat meer data per seconde getransporteerd kan worden (bandbreedte). Bijkomstigheid is wel dat bij veruit de meeste dual-channel chipsets elk geheugenkanaal voorzien moet zijn van geheugen; dus de modules per identiek paar (of zelfs viertal) plaatsen. Identiek betekent niet noodzakelijkerwijs hetzelfde merk en partnummer, maar wel hetzelfde aantal chips met dezelfde dichtheden en organisatie. Soms is het wel mogelijk met slechts gedeeltelijk of ongelijk gevulde kanalen te draaien, maar dan zal het trager draaien en ben je dus de meerwaarde van een dual-channel chipset kwijt. Een afrader dus. Uitzondering op deze regel is de crossbar memory controller van de nVidia nForce chipsets. Omdat het over twee losse memory controllers beschikt zal het altijd dual channel draaien als beide mem controllers bezet zijn, ongeacht exacte DIMM combinatie. Toch is ook hier de performance optimaal bij identieke DIMMs.

Linkjes:
Alle Single Channel chipsets
Alle Dual Channel chipsets
Alle Quad Channel chipsets

Meestal is in een ideale situatie de bandbreedte van alle geheugenkanalen samen gelijk aan die van de processor (FSB). Daarnaast is dual channel nuttig voor servers wanneer er veel DMA activiteiten plaatsvinden (b.v. meerdere PCI bussen die intensief gebruikt worden door veel I/O's). In specifiek dit geval wil je dus meer bandbreedte dan de FSB kan verwerken.

Terug naar boven
Snelheidsaanduidingen

De moderne DIMM’s en RIMM’s hebben allemaal een PC rating die op een bepaalde manier de maximaal te halen snelheid aanduidt. Voor SDRAM DIMM’s worden PC66, PC100 en PC133 gebruikt. Deze getallen staan voor het aantal MHz waarop de DIMM kan werken. Voor RDRAM RIMM’s geldt hetzelfde: PC600, PC700 en PC800 (hoewel het hier om discutabele MHz’en gaat daar een RIMM met het Double Data Rate principe werkt).

In het geval van een DDR-SDRAM DIMM staan de getallen voor het aantal MB’s die de DIMM per seconde kan leveren. PC1600, PC2100 en PC2700 draaien op 100, 133 en 166MHz wat vervolgens door het DDR principe verdubbeld wordt.

Het mixen van modules met een verschillende snelheidsaanduiding levert in principe geen problemen op; zo kan een PC133 DIMM prima naast een PC100 DIMM worden gebruikt. Een PC2100 naast een PC2700 DIMM of PC700 naast een PC800 RIMM hoeft ook geen problemen op te leveren. Let wel dat de langzaamste module bepalend is voor de totale snelheid (de snelste DIMM past zich aan aan de langzaamste DIMM, mits handmatig niet anders geforceerd).

Let wel dat alle snelheidsaanduidingen weergegeven worden in het ideale geval van Burst-mode. Hiermee worden we enigszins om de tuin geleid omdat deze snelheid in lang niet alle gevallen wordt gehaald; de latenties steken daar een stokje voor.

Terug naar boven

Hoe haal ik zoveel mogelijk performance uit mijn geheugen?

BIOS tweaken, pushing the envelope

Als je jouw net nieuwe DIMM in je moederbord steekt en vervolgens de pc aanzet zal het BIOS allerlei informatie over de DIMM en de bijbehorende parameters uit de SPD halen en de DIMM overeenkomstig benaderen. Nu wil het geval dat de meeste DIMM's best wel iets strakker afgesteld kunnen worden dan dat de SPD aangeeft, om deze strakkere timings in te stellen zul je het BIOS in moeten gaan om het één en ander in te stellen. Nu is lang niet elk BIOS hetzelfde; het hangt af van de chipset, het moederbord en het BIOS zelf wat je allemaal in kunt stellen. Ik zal daarom een paar parameters aanstippen, het is ondoenlijk om volledig te zijn. Mocht één zo'n parameter niet in jouw BIOS voorkomen dan houdt het op (hoewel, soms heeft zo'n parameter een andere naam).

Timings: belangrijke parameters zijn CAS latency, RAS-To-CAS delay, RAS Precharge time, Active to Precharge time, CMD rate en de bank interleave instelling. De snelste timing voor deze parameters is respectievelijk 222 5 1T 4-way. Met deze instellingen beperk je de wachttijden tot het minimum en zal de DIMM het snelst de verzochte data leveren. Een nadeel is dat deze snelle timings nogal wat vergen van je materiaal; de DIMM's zelf en de chipset worden tot het uiterste gedreven wat tot instabiliteit kan leiden, helemaal als er geen gebruik wordt gemaakt van goede onderdelen. In feite is het niets anders dan een kwestie trial and error; pas de instellingen aan en test de stabiliteit van de pc. Afhankelijk van de ervaringen kun je de parameters weer wijzigen. Daarnaast kun je nog de kloksnelheid van het geheugen opvoeren. Er zit een nauw verband tussen het aantal MHz'en en de timings; hoe strakker de timings hoe minder hoog je komt met het aantal MHz'en. Ook hier geldt dat dit een kwestie van proberen is.

Voltage: wanneer je het plafond bereikt kun je de spanning van de modules enigszins verhogen. SDRAM DIMM's draaien standaard op 3.3V, DDR-SDRAM DIMM's en RDRAM RIMM's draaien op 2.5V (intern draait DDR-SDRAM op nog wat minder spanning). Wees voorzichtig, want het is niet ondenkbaar dat je met teveel spanning de module beschadigd.

Terug naar boven
Invloed van CAS latency

De voordelen zijn dat je met minder wachttijden te maken hebt en het totale systeem dus sneller kan worden. Nadelen zijn er technisch gezien niet behalve dat de prijs hoger is.

Prijs/Performance: je zult je dus moeten afvragen of het snelheidsvoordeel de hogere prijs rechtvaardigt. Hogere prijs is makkelijk te herkennen alleen de extra performance herkennen kan lastig zijn. Dit hangt namelijk af van wat je met je bak doet en wat de overige componenten zijn. Zo hebben de geheugentiming een mindere invloed gekregen bij een P4 met FSB800 gekoppeld aan een dualchannel chipset met DDR400 geheugen. Je kunt de verschillen wel meten maar deze zijn dusdanig dat je ze in de praktijk niet merkt.

Verklaring: mijn guess is dat de invloed van de timings enigszins wordt opgeheven door de combinatie P4, enorme bandbreedte, hoge bus/geheugen snelheden, snelle chipsets (buffering, pipelining) en de werking van DDR-SDRAM itself. De P4 is dol op bandbreedte, is voorzien van een goede en snelle cache architectuur, goede prefetch, grotere cachelines en de bussen lopen ook nog eens met hoge snelheden. Hoge snelheden betekenen automatisch lagere wachttijden (want één kloktik duurt minder nanoseconden bij hogere snelheden). Een voorbeeld: een oudere setup waar timings meer inlvoed hadden zoals bij een P!!! met PC100 geheugen. Één kloktik duurde 10ns waardoor je per strakker ingestelde timing (2 t.o.v. 3 kloktikken) 10ns winst kon boeken in het meest ideale geval. Tegenwoordig doen bussen en geheugen 200Mhz waardoor één kloktik slechts 5ns duurt. Het verschil tussen b.v. CAS2,5 en CAS3 is dan nog maar 2.5ns. Plaats dit gegeven temidden van alle andere snelheids bevorderende zaken die ik al opgenoemd had en de uiteindelijke impact van alleen zo'n enkele geheugentiming is gedecimeerd.

Meerdere timings: verder doet het er ook toe over welke timings we praten. Een bekende als CAS is sinds de intrede van het DDR geheugen veel van zijn waarde verloren door de iets andere werking van het DDR geheugen t.o.v. het destijds mainstream PC133 SDRAM spul. Ook is het zo dat niet alle geheugentimings participeren in elke geheugen lees actie; CAS bijvoorbeeld is alleen een issue bij de allereerste benadering van een kolom en aangezien er meestentijds opeenvolgende reads plaatsvinden uit dezelfde kolom doet de CAS in die tijdspanne maar één keer mee. Zodoende hebben strakkere timings die te allen tijde meedoen aan een leesactie overall gezien meer invloed (timings in b.v. de chipset om de juiste fysieke adressen te decoden, neem bijvoorbeeld de invloed van PAT).

Gebruikte software: naast dit hardwarematige verhaal maakt het natuurlijk ook uit welke software je gaat draaien. Voor simpel werk als Word, mail, internetten maakt het geen donder uit (heck: dan is een dualchannel DDR400 set-up al overkill). Op games kán het effect hebben maar dit is zo afhankelijk van b.v. welke game, welke resolutie en wat voor grafische kaart dat je daar ook niet iets zinnigs over kunt zeggen.

Overclocking: wat wel zo is, is dat dergelijke Low Latency DIMM's behoorlijk wat aankunnen, meer dan de conservatief ingestelde modules en je hogere snelheden kunt verwachten als het op overclocken aankomt. met overclocken verhoog je het aantal MHz'en waarmee je de overall latency van cpu via chipset naar het geheugen en vice versa weer verlaagt en de bandbreedte zelf neemt toe. Dit heeft over het algemeen meer positieve invloed op de systeemperformance van de huidige P4's dan een of twee strakker ingestelde geheugentimings bij lagere absolute snelheden

Persoonlijke mening: in ieder geval zou ik persoonlijk niet meer zo snel geneigd zijn de vette meerprijzen voor zogenaamde Low Latency DIMM's op tafel te leggen; dat geld (zeker als we over een gieg aan geheugen praten) levert imo te weinig praktisch snelheidsvoordeel op in een recente P4 FSB800 bak.

Terug naar boven
Invloed van het aantal geheugenmodules

Het aantal DIMM's alleen van invloed wanneer je het geheugen wil gaan tweaken en overklokken. In het algemeen heb je een grotere kans van slagen wanneer je zo min mogelijk geheugenreepjes hebt, zoals één of twee DIMM's. In dit geval zijn er minder chiprijen waardoor de CMD rate met grotere kans op 1T gezet kan worden en er zijn minder adres- en commando signalen die 'elkaar in de weg' kunnen zitten (zie 'teugels' metafoor onder registered). Voor de gewone gebruiker die niet aan tweaken en overklokken denkt, maakt het totaal niet uit hoeveel geheugenmodules je in het moederbord prikt.

Page hits: het gebruiken van meerdere DIMM's betekend dat je meerdere interne banken hebt (elke DIMM vier of acht stuks afhankelijk van single- of doublesided) en meer Open Pages. Dit verhoogt theoretisch de kans op een Page Hit en zal de algemene geheugenprestaties ten goede komen. In de praktijk blijkt dit jammer genoeg bijna niets uit te maken; dit heeft waarschijnlijk te maken met de tijd die nodig is om tussen de chiprijen te wisselen.

Databreedte: omdat de geheugenbus een databreedte heeft van 64bit (de 64 datalijnen) maakt het voor de doorvoer niets uit of er meerdere DIMM's worden gebruikt; één DIMM is ook 64bit breed (telt 64 datalijnen) zodat er niet aan DIMM interleaving kan worden gedaan. Enkele uitzonderingen hierop zijn de chipsets die een 128bit brede geheugeninterface hebben (Dual Channel), hier heeft het plaatsen van meerdere DIMM's wél effect op de totale prestaties (en is in sommige gevallen een must).

RDRAM: voor RDRAM geldt een iets ander verhaal. In eerste instantie moeten in samenwerking met de RDRAM chipsets de RIMM's sowieso per identiek paar geplaatst worden (met uitzondering van de Camino chipset) omdat er sprake is van een dubbele geheugenbus. Daarnaast heeft het toevoegen van RIMM's twee gevolgen: het pad tussen de eerste en laatste Rambus chip wordt door het seriële karakter v.d. bus erg lang waardoor kunstmatige wachttijden worden in gebouwd (zie RDRAM), het andere gevolg is dat het aantal banken en Open Pages behoorlijk toeneemt. Afhankelijk van de chipset zijn page policy kan dit een positief effect hebben op de prestaties (de enige moderne RDRAM chipsets i850 en i860 kunnen helaas maar acht pages tegelijk open houden).

Terug naar boven
Invloed van Dual Channel geheugen

Net voor de stille dood van Rambus RDRAM is Dual Channel geheugen wedergekeerd naar de desktops. In een grijs verleden werd een soortgelijk systeem bij 286/386/486's en vroege Pentiums gebruikt om de geheugenbandbreedte te bundelen (SIMM's moesten altijd per 4 (Quad Channel) worden geplaatst, remember? Zodat het precies genoeg bandbreedte aan de CPU kon leveren. De Intel Pentium4 is dankzij een Quad Pumped FSB (QDR; Quad Data Rate) een bandbreedtehongerig beest en het seriële RDRAM geheugen leverde precies genoeg bandbreedte aan de P4. Omdat RDRAM schaars en duur was en omdat SDR SDRAM en Single Channel DDR SDRAM de vereiste bandbreedte van de P4 onvoloende kunnen vullen werd Dual Channel DDR geïntroduceerd. Met trager geheugen wordt de P4 namelijk de das omgedaan en gaat de performance zienderogen achteruit.

Intel: een P4 met een FSB van 133MHz QDR heeft een geheugenbandbreedte van 133MHz x 4 (QDR) x 8 Bytes (64bits geheugenbus) = 4266MB/s nodig. Dual Channel PC2100 (DDR266) kon deze precies vullen: 133MHz x 2 (DDR) x 8 Bytes (64 bits geheugenbus) x 2 (Dual Channel) = 4266MB/s. Aldus werden er Dual Channel DDR chipsets voor de P4 ontwikkeld en geïntroduceerd.

AMD: nVidia volgde deze marketinghit met het nForce2 chipset voor AMD Athlon XP CPU's. Echter dat heeft op papier weinig zin, het is namelijk een overkill van geheugenbandbreedte aan de Athlon XP. Een XP met een FSB van 133MHz DDR heeft namelijk een geheugenbandbreedte van: 133MHz x 2 (DDR) x 8 Bytes (64bits geheugenbus) = 2133MB/s. Precies net zoveel als Single Channel PC2100 (DDR266) kan leveren. Maar deze overkill kan ook ergens nuttig voor zijn en dan met name voor de AGP (zie ook het stukje hieronder bij "nForce2 Dual Channel geheugen en Synchroniteit"). Met de Introductie van de Athlon64 veranderde dat: Dual Channel geheugen is zinvol voor de Socket939 en Socket940 varianten van de A64. Deze A64 CPU's hebben namelijk een 128bits geheugencontroller die twéémaal 64bit (1 SDRAM geheugenreepje is 64bit breed) x 200MHz x 2 (DDR) x 8 Bytes (64bits geheugenbus) = 6400MB/s kunnen verstouwen. Precies de bandbreedte van Dual Channel PC3200 (DDR400). Let wel dat dit niet voor de Socket754 variant van de A64 geldt, deze beschikt namelijk slechts over een 64bits geheugencontroller: 3200MB/s dus, oftewel Single Channel PC3200.

DIMM's: de geheugenreepjes die samen een Dual Channel paar vormen hoeven niet hetzelfde te zijn. Bij de Dual Channel chipsets voor de Athlon XP mogen de DIMM's in alle opzichten verschillend zijn: merk, type, grootte, chipopbouw, etc. Bijvoorbeeld de nForce2, zie ook hieronder bij nForce2 Dual Channel en Synchroniteit. Voor de Dual Channel chipsets voor de Pentium4 en de Athlon64 zijn wat strengere eisen, zo moet de grootte en de chipconfiguratie van het paartje identiek zijn. Echter de merk en type mogen hier nog wel verschillen. En de paren mogen ook qua grootte en chipconfiguratie van elkaar verschillen. De zogenaamde Dual Channel kits die je kunt kopen zijn niets anders dan 2 geheugenreepjes van dezelfde merk/type, die door de fabrikant zijn getest in een DC configuratie en aldus verkocht als zijnde "gegarandeerd DC compatibel paar". Echter dat is puur marketingtechnisch. Zo verdient de fabrikant een aardig centje aan alleen het testen en de stempel "Dual Channel capable" op de reepjes.

Terug naar boven
Invloed van Bank Interleaving op Dual Channel

Bank interleaving kun je op twee manieren uitleggen. De meest voorkomende manier (as in: elke chipset doet er aan) is de interleaving welke zich binnen de geheugenchips zelf afspeelt en geheel los staat van het fenomeen dualchannel. Een geheugenchip is namelijk onderverdeeld in vier zogenaamde banken, deze banken strekken zich uit over alle geheugenchips op de logische zijde (chiprij) van één enkele DIMM. Dus één chiprij heeft vier banken waar vervolgens op een efficiente manier van gelezen en naar geschreven wordt (zie ook RAM FAQ - Bank interleaving: één bank wordt bijvoorbeeld geadresseerd terwijl gelijktijdig van een andere bank in dezelfde chiprij wordt gelezen).

Dual dual channel: bank interleaving valt probleemloos te combineren met dualchannel. Zo benadert b.v. de nForce2 met z'n twee onafhankelijke geheugencontrollers gelijktijdig twee afzonderlijke chiprijen en de nieuwe Intel chipsets benaderen in dualchannel modus via twee geheugenkanalen gelijkertijd twee chiprijen (waarbij de twee chiprijen samen één logische chiprij van 128bit vormen). Het interleaven binnen de chips zelf staat hier los van en vindt dan ook gewoon plaats. Een andere uitleg van bank interleaving is complete chiprijen (ook wel banken genoemd) gelijktijdig benaderen via twee geheugenkanalen. Dit is exact hetzelfde als dualchannel, zeg maar een synoniem. De meeste verwarring ontstaat omdat enkele termen dubbel worden gebruikt (bank bijvoorbeeld).

Terug naar boven
nForce2 Dual Channel en Synchroniteit

In bijna elk nForce2 gerelateerd topic wordt wel de vraag gesteld waarom bepaalde benchmarks (met als meest populaire Sisoft Sandra) minder bandbreedte laten zien dan verwacht, temeer twee DIMM's samen het dubbele zouden 'moeten' leveren.

FSB: het antwoord is eigenlijk heel simpel: de FSB (de verbinding tussen de CPU en de geheugencontroller) is de beperkende factor! De nForce2 kan dan wel twee PC2700 DIMM's parallel aansturen en zo over 5334MB/s bandbreedte beschikken maar slechts de helft hiervan of zelfs nog minder past door de FSB op z'n weg naar de CPU (en vice versa). Vandaar dat je nooit 5334MB/s of daaromtrent zult meten maar grofweg de helft.

Illustratie: hieronder een beknopte uitleg van de werking van het nForce(2) geheugensubsysteem waardoor het evt. nog duidelijker wordt.

Uitleg illustratie: de nForce2 telt in tegenstelling tot de overige desktop chipsets twéé 64bit Memory Controllers (MC0 en MC1), beide controllers werken onafhankelijk van elkaar en sturen zodoende elk hun eigen DIMM's aan. Beide MC's zijn d.m.v. een crossbar'achtige architectuur verbonden met alle overige componenten in de chipset die geheugentoegang nodig hebben. In het plaatje hierboven zie je dat elke MC z'n eigen lijnen heeft naar de AGP poort, de eventueel aanwezige ingebouwde GPU (on-board video), de Hypertransportlink (die de 'north- en south bridge' met elkaar verbindt) en natuurlijk via de FSB met de CPU.

Nut van tweede geheugencontroller: in bovenstaand voorbeeld wordt gebruik gemaakt van twee PC2100 DIMM's en een Athlon met een 133MHz FSB. Één Dimm kan 2.1GB/s bandbreedte leveren en de FSB kan ook maximaal 2.1GB/s bandbreedte verhapstukken, waarom dan die tweede memory controller plus DIMM, da's toch niet nodig dan? Er zijn hier in feite twee reden voor:

  • Performance is niet alleen afhankelijk van brute bandbreedte maar ook van de bijbehorende wachttijden (latencies).
  • De CPU vraagt inderdaad niet om meer bandbreedte maar de CPU is niet de enige in het systeem die om bandbreedte vraagt; de grafische kaart kan middels het AGP protocol textures laden in het hoofdgeheugen als het geheugen op de grafische kaart zelf vol is en via de Hypertransport link vragen diverse devices zoals disken, USB2.0 en geluidskaart d.m.v. het DMA protocol (Direct Memory Access) ook toegang tot het geheugen.

Met een beetje pech vragen ze allemaal gelijktijdig om toegang terwijl er maar één verzoek tegelijk door het geheugen afgehandeld kan worden, hierdoor moeten de aanvragen op elkaar wachten en dat brengt ons weer terug bij punt 1, de wachttijden. Zorg voor twee toegangen en er hoeft minder gewacht te worden; de CPU bijvoorbeeld leest en/of schrijft naar het geheugen via MC0 en de grafische kaart kan z'n gang gaan via MC1, dit scheelt tijd waardoor het gehele systeem sneller wordt. Hóeveel sneller is geheel afhankelijk van de toepassingen en dus hoe intensief de geheugenactiviteiten zijn.

Synchroniteit: een ander belangrijk aspect is de synchroniteit. De nForce2 presteert het beste wanneer zowel het geheugen als de FSB even snel lopen (synchroon). Het is met de nForce2 mogelijk de FSB op b.v. 133MHz in te stellen en het geheugen op 166Mhz (PC2700) te laten draaien (asynchroon). Hoewel dit gevoelsmatig misschien het snelste lijkt omdat je zo je mooie nieuwe PC2700 DIMM met optimale snelheid laat draaien draait het systeem hierdoor juist trager(!) Een geheugensignaal van 166MHz dient door de chipset in fase gebracht te worden met de 133MHz signalen van de FSB, dit in fase brengen kost tijd en als een computer ergens gebrek aan heeft is het tijd; er moet her en der in het systeem al (te)veel gewacht worden. Laat je de FSB en het geheugen even snel draaien dan wordt je niet geconfronteerd met deze extra wachttijden en loopt het zaakje vlotter

Overclocken: een ander oplossing is natuurlijk de geheugensnelheid ongemoeid laten en de FSB verhogen om zo een synchrone toestand te bereiken (b.v. 166MHz FSB/geheugen of zelfs 200MHz). Dankzij de flexibele CPU multiplier kun je zo een heel eind komen zonder dat de externe kloksnelheid v.d. cpu (de totale snelheid: FSB maal multiplier) een beperkende factor kan vormen.

DIMM's: beide DIMM's hoeven niet hetzelfde te zijn; de beide MC's van de nForce2 zijn zoals eerder gezegd onafhankelijk van elkaar waardoor ze elk een DIMM met eigen toegangsparameters kunnen aansturen. De DIMM's hoeven zelfs geen eens dezelfde omvang te hebben. Het is overigens wél aan te raden dezelfde DIMM's te gebruiken omdat bij 128bit benaderingen (dus beide DIMM's tegelijk) de langzaamste DIMM bepalend is voor de gehele snelheid. Ook is het mogelijk om (als je mobo tenminste extra slots heeft) meer dan 1 DIMM op een kanaal te gebruiken. Zo is bijvoorbeeld een combinatie van 2x 256MB en 1x 512MB mogelijk. Let wel op dat naarmate je meer banks bezet de maximaal haalbare snelheid daalt- een afrader voor overclockers dus.

DIMM: overigens doet de nForce2 het prima met slechts één DIMM. Je zult dan alleen de eerder genoemde dual channel voordelen missen. In de praktijk uit zich dit in slechts een paar procent performance verlies, verwacht dus geen wonderen van twee dezelfde DIMM's.

Terug naar boven

Welke soorten geheugen bestaan er allemaal?

Overzichtje


Module
aanduiding
PC66-22
PC100-333
PC100-222
PC133-333
PC133-222
PC150-333
PC166-333
PC1600-2022
PC2100-2533
PC2100-2033
PC2100-2022
PC2700-2533
PC2700-2032
PC2700-2022
PC3200-3044
PC3200-3033
PC3200-2533
PC3200-2033
PC3200-2032
PC3200-2022
PC3500-3044
PC3700-3044
PC4000-3044
PC4400-3044
PC2-3200-4044
PC2-4300-4044
PC2-5300-5055
PC2-6400-5055
PC600-45
PC700-45
PC800-45
PC1066
PC1200
RIMM3200
RIMM4200
RIMM4800
RIMM6400
IntroMaximale
doorvoer
Chip
aanduiding
SpecsClock
MHz/ns
tCAS
T/ns
tRCD
T/ns
tRP
T/ns
tRAS
T/ns
1996533MB/sPC66Intel/JEDEC66/152T/302T/302T/305T/75
1998800MB/sPC100Intel/JEDEC100/103T/303T/303T/305T/50
1999800MB/sPC100Intel/JEDEC100/102T/202T/202T/205T/50
19991066MB/sPC133Intel/JEDEC133/7,53T/22,53T/22,53T/22,56T/45
20001066MB/sPC133Intel/JEDEC133/7,52T/152T/152T/156T/45
20001200MB/sPC150-150/6,673T/203T/203T/207T/47
20001333MB/sPC166-166/63T/183T/183T/188T/48
20001600MB/sDDR200JEDEC100/102T/202T/202T/205T/50
20002133MB/sDDR266JEDEC133/7,52,5T/18,83T/22,53T/22,56T/45
20012133MB/sDDR266JEDEC133/7,52T/153T/22,53T/22,56T/45
20012133MB/sDDR266JEDEC133/7,52T/152T/152T/156T/45
20012666MB/sDDR333JEDEC166/62,5T/152T/182T/187T/42
20022666MB/sDDR333Micron166/62T/123T/182T/127T/45
20012666MB/sDDR333JEDEC166/62T/122T/122T/127T/45
20013200MB/sDDR400Micron/JEDEC200/53T/154T/204T/208T/40
20013200MB/sDDR400Micron200/53T/153T/153T/158T/40
20013200MB/sDDR400Micron/JEDEC200/52,5T/12,53T/153T/156T/30
20013200MB/sDDR400Micron/JEDEC200/52T/103T/153T/156T/30
20023200MB/sDDR400Micron200/52T/103T/152T/106T/30
20013200MB/sDDR400Micron200/52T/102T/102T/105T/40
20023466MB/sDDR433Micron216/4,63T/13,84T/18,44T/18,48T/36,8
20033733MB/sDDR466Micron233/4,33T/12,94T/17,24T/17,28T/34,4
20034000MB/sDDR500Micron250/43T/124T/164T/168T/32
20044400MB/sDDR550Micron275/3,643T/10,94T/14,54T/14,58T/29,1
20043200MB/sDDR2-400JEDEC200/54T/204T/204T/2010T/50
20044266MB/sDDR2-533JEDEC266/3,754T/154T/154T/1512T/45
20045333MB/sDDR2-667JEDEC333/35T/155T/155T/1515T/45
20056400MB/sDDR2-800-400/2,55T/12,55T/12,55T/12,515T/37,5
19991200MB/s-RAMBUS300/3,337~11T/23,3~33,35T/16,76T/2016T/53,3
19991600MB/s-RAMBUS356/2,808~12T/22,4~33,67T/19,68T/22,420T/56
19991433MB/s-RAMBUS400/2,58~12T/20~309T/22,58T/2020T/50
20012133MB/s-RAMBUS533/1,87----
20042400MB/s-RAMBUS600/1,67----
20023200MB/s-RAMBUS400/2,5----
20024266MB/s-RAMBUS533/1,87----
20034800MB/s-RAMBUS600/1,67----
20046400MB/s-RAMBUS800/1,25----

RDRAM: CAS Latency is variabel door o.a. de uitrusting van het Rambuskanaal (aantal chips en RIMM's, dit i.v.m. de afstanden en daaraan gerelateerde (kunstmatige) synchronisatie wachttijden.
PC3200: Intel heeft de specs voor DDR400 vrijgegeven. Dit is een aanvulling op de bestaande JEDEC DDR1 rev. 2.0 specs.

Terug naar boven
DIMM keys

Hieronder vind je een illustratie om de verschillende soorten (DDR) SDRAM geheugenreepjes te kunnen onderscheiden qua voltages, ECC en buffering.De keys (de inkepingen) zijn bepalend voor de vDDQ (spanning op het I/O gedeelte v.d. chips) en of een DIMM unbuffered of buffered is. ECC is te herkennen aan de extra geheugen chip en een registered DIMM telt twee extra register chips en een PLL chip.

Terug naar boven
FPM

Omschrijving:
Fast Page Mode. Dit is een verbetering op het standaard DRAM (Dynamic Random Access Memory). FPM slaat in sommige gevallen een stap over waardoor het in de praktijk sneller werkt. Mocht een te benaderen cel in de rij (de Page dus) staan welke al in de Sense Amps staat, dan kan deze direct worden uitgelezen i.p.v. dat de rij eerst nogmaals naar de Sense Amps moet worden weggeschreven. Aangezien opeenvolgende celbenaderingen erg vaak in dezelfde Page staan (Page Hit) kan dit qua performance behoorlijk schelen.

Introductie:
1987

Snelheid:
60ns en 70ns
CAS latency: 40ns
Theoretische bandbreedte: 175~200MB/s
Berekening in geval van 66MHz (15ns) FSB: CAS 40ns / FSB 15ns = 2,66 (per gemiddeld 2,66 kloktikken éénmaal dataoverdracht). FSB 66MHz * 64bit = 533 / 2,66 = ~200MB/s

Modules:
30pins SIMM* 5V 8bits
72pins SIMM 5 en 3,3V 32bits
168pins DIMM* 5 en 3,3V 64bits

Terug naar boven
EDRAM

Omschrijving:
Enhanced DRAM. Een stervensdure en daarom hoogst ongebruikelijke variant op FPM. De chips combineren 'normale' DRAM met SRAM caches. Dit maskeert de DRAM charge time volledig waardoor de prestatie vergelijkbaar wordt met het latere SDRAM. Het werd als de ideale combinatie met een 50MHz FSB 486 gepromote.

Introductie:
?

Snelheid:
10ns en 15ns
CAS latency: ?
Theoretische bandbreedte: ~400MB/s op 50MHz

Modules:
72pins SIMM 5V 32bits

Terug naar boven
EDO

Omschrijving:
Extended Data Out. Een directe doorontwikkeling van FPM (ook wel HPM, Hyper Page Mode genoemd). Het principe is dat de data langer in de latch (het uitgangsregister) staat, waardoor tijdens het lezen vanuit de latch er al begonnen kan worden met de volgende adresseringsstap (zeg maar een soort pipelining), dit scheelt tijd en verhoogd de doorvoer.

Introductie:
1995

Snelheid:
50ns, 60ns en 70ns
CAS latency: 25ns (in geval van een 60ns chip)
Theoretische bandbreedte: ~300MB/s
Berekening in geval van 66MHz (15ns) FSB: CAS 25ns / FSB 15ns = 1,66. FSB66MHz * 64bit = 533 / 1,66 = ~300MB/s.

Modules:
72pins SIMM 5 en 3,3V 32bits
168pins DIMM* 5 en 3,3V 64bits
72pins SO-DIMM 3,3V 64bits

Terug naar boven
BEDO

Omschrijving:
Burst EDO. Heeft twee extra technieken, 1) de chips zijn intern dual-banked (zie bank). Hierdoor kan binnen één chip interleaving plaats vinden: de ene logische bank wordt geadresseerd terwijl de ander nog bezig is data te verzenden. 2) er is een adresgenerator toegevoegd. Als de geheugencontroller een adresseringsstap uitvoert genereert de BEDO chip adresgenerator vervolgens zélf twee kolom adressen. Hierdoor wordt tijd gewonnen in het (ideale) geval de geheugencontroller sowieso deze twee adressen opeenvolgend zou hebben geadresseerd. Het gevolg is dat in burst-mode de bandbreedte toeneemt. BEDO is overigens erg weinig toegepast.

Introductie:
?

Snelheid:
CAS latency: 15ns
Theoretische bandbreedte: 533MB/s in burst-mode
Berekening in geval van 66MHz (15ns) FSB: CAS 15ns / FSB 15ns = 1,0 (elke kloktik dataoverdracht). FSB66MHz * 64bit = 533 / 1,0 = 533MB/s.

Modules:
SIMM/DIMM?

Terug naar boven
SDRAM

Omschrijving:
Synchronous DRAM. Van origine ontworpen om synchroon te lopen met de FSB en de chipset snelheid. Iets waar in latere jaren deels verandering in kwam (zie asynchrone FSB – RAM opties v.d. huidige chipsets, desalniettemin loopt het geheugen net zo snel als de chipset). Vertoont veel overeenkomsten met BEDO, heeft ook een interne adresgenerator om in burst-mode de volgende kolomen zélf te adresseren en bestaat ook intern uit meerdere banken (twee voor 64Mbit chips, vier voor grotere chips), echter daar waar BEDO niet tot boven de 66MHz kon werken kan SDRAM het dubbele en meer halen.

Introductie:
1997 (PC66), 1998 (PC100), 1999/2000 (PC133)

Snelheid:
PC66 (66MHz, 15ns), PC100 (100MHz, 10ns) en PC133 (133MHz, 7,5ns)
CAS latency 2 en 3 kloktikken
Theoretische bandbreedte: 533, 800 en 1066MB/s in burst-mode
Berekening: xxxMHz* 64bit / 8 = xxxMB/s

Modules:
168pins DIMM 3,3V 64bits
144pins SO-DIMM 3,3V 64bits

Terug naar boven
VC-SDRAM

Omschrijving:
Virtual Channel SDRAM. Dit is hetzelfde als SDRAM, met als extra enkele high-speed registers. Deze registers zorgen ervoor dat elke geheugenbenadering een eigen "Virtual Channel" krijgt. Zo kan er gelijktijdig via het ene kanaal een leesbenadering worden afgehandeld, terwijl via een ander kanaal een adressering plaatsvindt. VC-SDRAM zorgt zodoende niet voor een grotere bandbreedte, maar voor een efficiënter gebruik v.d. bandbreedte. Afhankelijk van het soort benaderingen kan in specifieke gevallen (simultane benaderingen) de latency lager uitvallen. VC SDRAM is vrij schaars, is niet met alle chipsets compatible en biedt in de praktijk slechts een erg klein performancevoordeel t.o.v. standaard SDRAM.

Introductie:
?

Snelheid:
PC100 (100MHz, 10ns) en PC133 (133MHz, 7.5ns)
CAS latency 2 kloktikken
Theoretische bandbreedte: 800 en 1066MB/s in burst-mode

Modules:
168pins DIMM 3,3V 64bits

Terug naar boven
ESDRAM

Omschrijving:
Enhanced SDRAM. Een techniek wederom gebaseerd op SDRAM. Deze chips lopen op maximaal 166MHz en de Sense Amps zijn voorzien van extra cache; het row register cache. Dit cache neemt direct de inhoud v.d. Sense Amps over, waardoor deze laatste gelijk weer ingezet kunnen worden voor een andere actie (veelal een precharge) met als gevolg dat de volgende stap eerder uitgevoerd kan worden. Het effect is een efficiënter gebruik v.d. bandbreedte.

ESDRAM is compatible met de meeste chipsets alleen nooit echt doorgebroken. De daadwerkelijke praktijkwinst is niet helemaal duidelijk, dit hangt ook af van hoe het geheugen gebruikt wordt (lees: welke applicaties/toepassingen).

Introductie:
?

Snelheid:
133 (7,5ns) en 166MHz (6ns)
CAS latency 2 kloktikken
Theoretische bandbreedte: 1066 en 1333MB/s in burst-mode

Modules:
168pins DIMM 3,3V 64bits

Terug naar boven
DDR-SDRAM

Omschrijving:
Double Data Rate SDRAM. In feite een SDRAM waarbij er per kloktik twee maal zoveel data wordt verstuurd; een bit op de opgaande en een bit op de neergaande klokflank (SDRAM verstuurd alleen data op de opgaande klokflank). De inkomende signalen (adres en commando) verlopen nog wel via het ‘ouderwetse’ SDR (Single Data Rate) principe.

Een bijkomstigheid is dat CAS latenties nu ook in halve waardes kunnen worden weergegeven; moest in het oude geval er twee of drie kloktikken gewacht worden, nu kan er ook tweeëneenhalf kloktik gewacht worden. Data kan halverwege een kloktik op de neergaande flank worden gezet (nadat de opgaande al voorbij is) voor transport. Wordt tegenwoordig steeds meer gebruikt, in eerste instantie alleen voor AMD CPU’s, maar nu ook te gebruiken in combinatie met Intel CPU’s.

Introductie:
2000

Snelheid:
PC1600 (DDR200, 100MHz), PC2100 (DDR266, 133MHz), PC2700 (DDR333, 166MHz) en PC3200 (DDR400, 200MHz)
Cas latency 2,5 en 2 kloktikken
Theoretische bandbreedte: 1600, 2133 2667 en 3200MB/s in burst-mode

Modules:
184pins DIMM 2,5V 64bits
200pins SO-DIMM 2,5V 64bits

Terug naar boven
DDR2-SDRAM

Omschrijving:
DDR2 (ook wel DDRII, DDR-II genoemd) is simpel gezegd DDR in een nieuw jasje (tamelijk simpel gezegd); het basis principe is namelijk gewoon hetzelfde namelijk data op zowel de op- als neergaande klokflank. Er is een redelijk stel veranderingen doorgevoerd om het aantal MHz'en van de in- en outputbuffers/data queue's omhoog te gooien (let wel, de kern v.d. geheugenchip wordt niet sneller, alleen de buffers en de bus) omdat met de huidige protocollen en toegepaste technieken het aantal MHz'en moeilijk kan worden verhoogd daar er allerlei reflecties ontstaan en je onzuivere signalen krijgt maar ook problemen met het adresseren v.d. chips. Voor bus based toepassingen (zoals op een mobo waar alle chips samen op een lange bus zitten) is 200MHz het officiële maximum voor DDR (PC3200), sneller kan wel getuige de diverse officieuze DIMM's (PC3500,PC4000,etc) maar het is niet voor niets dat alle chipsetfabrikanten er hun handen vanaf getrokken hebben; bij dergelijke snelheden is 100% stabilteit met meerdere DIMM's niet meer te garanderen, het is zelfs zo dat hoe sneller de operationele snelheid v.d. DIMM's hoe minder DIMM's ondersteund worden (veelal max drie unbuffered in het geval van PC2700 en twee in het geval van PC3200). In het geval van videokaarten heb je het meer over een point-to-point achtige verbinding; je hebt geen last van grote stubs (het gedeelte op de DIMM vanaf de bus/DIMM socket naar de chips zelf dat haaks op de bus op het moederbird staat) en de verbindingen tussen de controller en de chips zijn vele malen korter, hierdoor kan met DDR-SDRAM een veel hogere snelheid worden. Maar ook hier houdt 't op een gegeven moment op.

Wat zijn dan die veranderingen ten opzichte van DDR-SDRAM? Onder andere een lagere spanning (1,8v i.p.v. 2,5v), betere terminering van differential clocking (het verschil tussen signalen i.p.v. het signaal zelf) en een andere chip packaging (micro BGA) en in het geval van DIMM's kleinere stubs (dus minder reflectie op de bus). Dit allemaal om hogere kloksnelheden te halen. Er zijn trouwens meer wijzigingen die o.a. betrekking hebben op wachttijden (zoals additieve wachttijden vóór de CAS Latency).

Tevens is de burst-length voor DDR2 gefixeerd op vier zodat de hoeveelheid data die bij elke benadering van een 64bit DIMM 32Byte oplevert, namelijk 2 kloktikken met telkens twee maal (want DDR) 8Byte is, dit om diepere technische zaken als driver/tranceiver logica simpeler te houden (nu is een flexibele burst van 2~8 normaal).

Gevolg is dat je met DDR2 hogere snelheden = meer MB/s kunt halen. Een 200MHz DDR2 DIMM doet dus 200MHz maal twee (want DDR) keer 64bit (databusbreedte) 3.2GB/s, een 266MHz'er (DDR533) haalt zo 4.3GB/s etc.

Introductie:
2004

Snelheid:
PC2-3200 (DDR2-400, 200MHz), PC2-4300 (DDR2-533, 266MHz), PC2-5300 (DDR2-667, 333MHz) en PC2-6400 (DDR2-800, 400MHz)
Cas latency 3, 4 en 5 kloktikken
Theoretische bandbreedte: 3200, 4266, 5333 en 6400MB/s in burst-mode

Modules:
240pins DIMM 1,8V 64bits
200pins SO-DIMM 1,8V 64bits

Terug naar boven
RDRAM

Omschrijving:
Rambus DRAM. Ook wel DRDRAM (Direct Rambus DRAM) genoemd. Een techniek die afwijkt van alle eerder genoemde geheugensoorten. Het basisprincipes van data opslaan en adresseren is hetzelfde, echter, alle overige zaken verlopen anders. Het grootste verschil is dat er van het parallelle principe is afgestapt. In het geval van (DDR)SDRAM vullen meerdere chips het 64bits geheugenkanaal op (bijvoorbeeld 8 chips met elk 8 datalijnen is 64 lijnen totaal). In het geval van RDRAM vult één chip voorzien van 16 datalijnen het 16bits Rambus kanaal op. Een 32bits Dual Channel Rambus kanaal kan al gevuld worden met twéé chips. Daarnaast bestaat een RDRAM chip (ook wel Rambus device genoemd) met 32 stuks uit veel meer interne banken dan een (DDR)SDRAM chip (4 banken). Hierdoor zijn veel hogere snelheden te bereiken; van 400MHz met het DDR principe (800MHz effectief) tot 800MHz DDR (1600MHz effectief). De overige RDRAM chips sluiten als een ketting gewoon aan op de eerste RDRAM chip (serieel principe). Het grote voordeel is dat er een hoge theoretische bandbreedte beschikbaar is, de keerzijde van de medaille zijn de hogere latenties. Deze hoge latenties worden ondermeer veroorzaakt door het lange Rambus kanaal. Door het seriële principe zit er een behoorlijke fysieke afstand tussen de eerste RDRAM chip die de geheugencontroller tegenkomt en de laatste, en omdat de overdracht zo enorm snel gaat (800MHz effectief = 2.5ns) zal de laatste chip in het kanaal relatief veel later antwoorden op een leesopdracht dan de eerste chip, wat enorme datachaos met zich meebrengt. Hiertoe wordt bij elke chip een vertragingstijd ingeprogrammeerd. Deze kunstmatige rem zorgt er voor dat de antwoordtijd van alle afzonderlijke chips zodoende is dat alles in de juiste volgorde en binnen het juiste tijdsbestek bij de geheugencontroller aankomt. Een ander vertragend aspect is de hitte. De RDRAM chips zijn heethoofden zodat er meerdere bedrijfsmodi in het bestaan zijn geroepen om het hoofd koel te houden: Active, Stand-by, Nap en Power-down. Van Stand-by naar Active overschakelen kost enkele kloktikken, maar van Nap (dutje) naar Active (weer wakker) kan duizenden kloktikken tijd kosten. Daarenboven kan een chipset niet alle RDRAM chips continu Active houden (de i820 chipset kan b.v. maar 4 chips tegelijk Active houden). De eerste RDRAM chipsets hadden een 16bits Dual Channel geheugencontroller, waardoor je de In de 16bits RIMM reepjes per-se in paren moet plaatsen om aan de CPU bandbreedte te voldoen. In de nadagen van RDRAM werden ook RDRAM chipsets met een 32bits geheugencontroller uitbracht, waarmee de geheugenbandbreedte per kanaal wordt verdubbeld. Hiervoor heb je echter wel speciale 32bits RIMM modules nodig, de 242pins RIMMxxxx modules. Deze hoeven niet meer in paren te worden geplaatst.

Introductie:
1999

Snelheid:
PC600 (300MHz DDR), PC700 (356MHz DDR), PC800 (400MHz DDR), PC1066 (533MHz DDR), PC1200 (600MHz DDR), RIMM3200 (2x 400MHz DDR), RIMM4200 (2x 533MHz DDR), RIMM4800 (2x 600MHz DDR) en RIMM6400 (2x 800MHz DDR).
Toegangstijd (als getal achter de PCxxx aanduiding) 50ns, 45ns en 40ns (lager=sneller)
Theoretische bandbreedte: 1066, 1200, 1600, 2133, 2400, 3200, 4200, 4800 en 6400MB/s.

Modules:
184pins RIMM 2,5V 16bits
242pins RIMM 2,5V 32bits

Terug naar boven

FAQ Processors, Mobo's & Geheugen

RAM FAQ



4GB en desktop PC's



Wanneer je 4GB in jouw pc stopt is er een gerede kans dat het OS slechts ca. 3GB herkent. Hoe kan dit?


De architectuur van de hedendaagse PC is gebasseerd op een 32bits processor, hierdoor zijn er in totaal 2^32 (4294967296 = 4GB) adressen beschikbaar. Bij het starten van de PC kent het BIOS na het initialiseren van alle hardware een hele range adressen toe aan de hardware resources (IOxAPICS, PCI space, VGA en andere Memory Mapped IO ranges). De resterende adressen worden vervolgens door het BIOS in een tabel gezet welke de beschikbare adressen voor het OS definieert. Dit zijn dus per definitie minder dan de 4294967296 (4GB) adressen.

Kort gezegd: voordat het OS boot is al een flink aantal van de totaal beschikbare geheugenadressen door de diverse hardware opgesoupeerd. Het OS komt als laatste aan bod en mag het doen met de overgebleven adressen. Hieronder een voorbeeld:


In beide gevallen blijft er van het fysiek geheugen maar 2.84GB nuttig door het OS te gebruiken geheugen over. Afhankelijk van de geïnstalleerde hardware kan dit meer of minder zijn. Bij Windows Vista 32bit zal dit maximaal 3.12GB zijn, meer kan dit OS niet adresseren.

N.B. de systeem resources claimen niet het fysieke geheugen maar leggen beslag op de bijbehorende adresrange, dit is altijd de range vlak onder 4GB. Hierdoor blijven er te weinig adressen over om het fysiek geheugen in het geheel te adresseren.


Oplossingen


Om het OS toch 4GB geheugen te laten gebruiken dient er aan de volgende eisen te worden voldaan:

i) 64bits OS
ii) x86 CPU met 64bits instructieset
iii) Chipset met remapping mogelijkheid (Intel 955, 965, 975 of enterprise chipset. Alle AMD chipsets die AMD64 cpu's ondersteunen)
iv) BIOS met remapping functie (staat default uit, dus wel aanzetten)
v) 4GB geheugen installeren

Als aan deze eisen voldaan is zal het OS 4GB herkennen en volledig kunnen benutten. De simpele uitleg is dat het BIOS, transparant voor het OS, de geheugenadressen die samenvallen met de hardware resources (MMIO, Memory Mapped IO) remapped naar een hoger deel in de adresrange waardoor het al fysieke geheugen geadresseerd kan worden.


In voorbeeld 1 zie je de totale 32bits 4GB adresruimte. Het bovenste deel, terugtellend vanaf de 4GB grens tot TOLM (Top Of Lower Memory), wordt gebruikt voor Memory Mapped IO, dit is het deel wat af wordt gesnoept van het voor het OS beschikbare geheugen. In voorbeeld 2 zie je dat met 64bits hard- en software tot 64GB kan worden geadresseerd (de hardware gaat veelal maar tot 36bit, dat is 64GB). De MMIO neemt ook hier weer dezelfde adresruimte in beslag maar de bijbehorende geheugenadressen worden door het BIOS geremapped naar een hoger gedeelte in de adresruimte zodat transparant voor het OS al het fysieke geheugen geadresseerd kan worden en dus beschikbaar is voor het OS.

PAE


Een andere manier waar dit mee bereikt kan worden is PAE. Physical Address Extention is een feature van 32bits OS'en waarmee in combinatie met geschikte hardware (minimaal 36bits adresseringsmogelijkheden) via een omweg de adresruimte wordt vergroot van 4GB naar 64GB. Echter voor XP SP2 en Vista 32bit geldt dat PAE gebruikt wordt voor de DEP (Data Execution Prevention) functie en de geheugenruimte beperkt is tot 32bit. Dus met PAE enabled (de bekende /PAE switch in de boot.ini) zullen deze OS'en nog steeds niet alle 4GB's kunnen gebruiken. De reden waarom Microsoft de geheugenruimte onder PAE beperkt heeft tot 32bit heeft is de incompatibiliteit tussen veel 32bits drivers en de PAE functie. Zodoende is PAE sinds XP SP2 geen optie meer voor de 32bits desktop OS'en om meer geheugen aan te spreken.

Problemen


Mocht je aan alle vijf eerder genoemde eisen voldoen en toch problemen hebben met de geheugenherkenning dan is waarschijnlijk of het BIOS niet helemaal goed of je geheugen niet in orde. Wanneer je 4GB wilt gaan gebruiken is het belangrijk dat je een moederbord neemt met een goed BIOS. Veel moederborden hadden in eerste instantie de memory remap functie in het BIOS niet goed op orde dus het kan lonen te informeren naar ervaringen met 4GB geheugen op het desbetreffende moederbord.


Bron: Tweakers.net

Gesponserde links:

InternGeheugen.com geheugen!
Standaard Geheugen