RDIMM vs. UDIMM

Bundkort / CPU d.  01. maj. 2011, skrevet af Moze15
Vist: 1708 gange.

Moze15
 
Superbruger
Tilføjet:
01-05-2011 14:55:40
Svar/Indlæg:
1235/80
En fortsættelse af diskussion mellem mig og Swayde fra: http://hwt.dk/markedthread.asp... angående RDIMM og UDIMM.

I er meget velkomne til at bidrage med Jeres viden 🙂

@ Swayde
Jeg skal lige gennemgå Intel's dokumentation for adresse registrene som bliver brugt sammen med on-die memory controller, for at komme med en fyldestgørende argument for hvorfor det er chipset som sætter begrænsningen for hvilke RAM du kan bruge.
Illuminati
 
Elitebruger
Tilføjet:
01-05-2011 19:00:01
Svar/Indlæg:
10398/435
Hvorfor diskuterer i det? For at ECC virker skal både chipset og cpu supportere det, er det ikke nok 😉 Ergo, lad være med at købe ECC ram hvis chipset eller cpu ikke supporterer det.


Swayde
 
Elitebruger
Tilføjet:
01-05-2011 22:55:27
Svar/Indlæg:
2246/14
for at finde ud af hvad er rigtigt ? hvis jeg skal købe en server vil jeg jo godt være 100% sikker på at jeg ikke får købt inkompatible ram... (ligemeget om det er cpu/chipset der er skyld i det)...

og for sjov ? det er dejligt at tilegne sig ny viden/få rettet noget man troede var rigtigt...


TheReazepter
 
Elitebruger
Tilføjet:
01-05-2011 23:01:12
Svar/Indlæg:
772/49
ECC, error correction control ram, kan fungere i "normale" pc'ere/chipsæt, dog uden at ECC er slået til.

Bufferede, eller registrerede ram, kan IKKE fungere i en "normal" pc.


The Core i7 Bloomfield does not support error-correcting memory.[1][2][3] Some motherboards with an LGA 1366 socket support both Core i7 and the Xeon 35xx and 55xx series processors, and advertise support for ECC memory.[21][22] However ECC functionality is only available if a Xeon is installed, not if a Core i7 is installed.


Svaret blev redigeret 1 gang, sidst af TheReazepter d. 01-05-2011 23:15:45.


Moze15
 
Superbruger
Tilføjet:
02-05-2011 20:01:41
Svar/Indlæg:
1235/80
#2
Du havde ret i at ECC support er de-aktiveret i ikke-Xeon CPU'er fra Intel. Det er chipset, og dermed bundkortet, der begrænser brug af ECC og Registreret ECC - eller alle kilder jeg kunne finde(Intel, Kingston og Crucial) siger at er bundkort/chipset som er begrænsningen.

Jeg har lige skrevet lidt om RAM og Nehalem.

Memory controller i Nehalem arkitekturen:
Som bekendt er Memory controlleren i Nehalem integreret i selve CPU, udover dette er der nu mulighed for max 3 hukommelses kanaler pr. CPU og 3 DIMM's pr. kanal - altså max 9 DIMMs pr. CPU. Afhængig af CPU model vil disse tal se anderledes ud.


ECC:
Paritetskontrol er en ret simpel metode til påvisning af hukommelse fejl. Kort sagt har hver byte har en 'paritet-bit' tilknyttet, dette giver i alt 9 bits per byte (otte data-bit + en paritets-bit).
Paritet-bit bliver benyttet/skrevet så snart der skrives på data-bitsene, og derefter beregnet og sammenlignet når data-bitsene aflæses for at afgøre om nogen af data-bitsene har ændret sig siden de blev skrevet. Denne type af kontrol er begrænset til påvisning af en enkelt bit fejl, hvis to bits er blevet ændret, vil paritet-test give en 'pass', og fejlen kan eventuelt ødelægge data.

Paritets-kontrol kan gennemføres enten som '0' paritet eller '1' paritet. Når 1 byte er gemt, bliver antallet af 0'ere (eller 1'ere, hvis '1' paritet) lagt sammen - resultatet bliver gemt i paritets-biten: '1' hvis ulige, '0' hvis lige. Når denne byte læses fra hukommelsen, er det bitsene igen lagt sammen og resultatet sammenlignet med hvad der var gemt i paritets-biten. En match betyder at data ikke er blevet ændret siden det blev gemt (eller at to bits er blevet ændret).

Da ca. 90% af alle fejl er af 1 bit størrelse, er paritets-kontrol normalt tilstrækkelig til de fleste systemer. Desværre betaler man for denne sikkerhed/kontrol, som form af en lidt langsommere ydeevne. Dette er fordi at der skal bruges ekstra clock cyklusser til beregningen, opbevaring og hentning af paritets-biten. (Paritet kan ikke bruges til at rette fejl, kun at opdage!!)
En endnu bedre kontrol er ECC (Error Correction Control), som ikke kun omfatter kontrol af enkelte bit, men også 2, 3 eller 4 bits (afhængig af system og implementering). Hertil kommer at ECC faktisk kan rette 1-bit fejl, så programmer rent faktisk kan forsætte som om der ikke var sket en fejl.
ECC kan implementeres enten på selve RAM modulet eller i chipsettet - oftest sker det i chipsettet.

ECC bliver gennemført ved en 'hashing' algoritme som virker på 8 bytes (64 bits) ad gangen og gemmer resultatet i en 8-bit ECC 'ord'. Ved aflæsning, bliver de 8 bytes igen 'hashet' og resultatet sammenlignet med det lagrede ECC ord, ligesom ved paritets-kontrollen.

Den væsentligste forskel er at på ved paritets-kontrol er hver paritet-bit tilknyttet en enkelt byte, hvorimod ECC ord er forbundet med otte bytes. Dette betyder at paritets-bit værdier for ECC højst sandsynligt ikke er de samme som de enkelte paritets-bits ville være ved en paritets-kontrol for de otte byte - dvs. ECC moduler ikke kan anvendes i paritets-mode (men paritets-moduler kan bruges i ECC-mode). (Denne beskrivelse af ECC er baseret på en bus-bredde på 64 bits, 32-bit bredde ville det kræve 7 bit ECC-ord.)

RAM moduller med ECC/paritet kan benyttes i systemer som ikke understøtter dem, da vil paritets-biten bliver ignoreret (hverken skrevet eller aflæst). Paritets moduler findes kun som SIMMs, mens DIMMs findes i ECC og ikke-ECC.


UDIMM og RDIMM:
RDIMMs har et register på DIMM-modulet, deraf navnet "registreret" DIMM. Registret/PLL (Phase Locked Loop) bruges som en buffer for adresse, kontrol linjer og clocks, hvilket betyder at ingen data går gennem registret/PLL på en RDIMM. (For DDR2 var registret, brugt til buffer adresser og kontrol linier, og PLL, brugt til at generere kopier af clocks, separate men for DDR3 er de i samme enhed.)

Der er ca. en clock cyklus forsinkelse gennem registret, hvilket betyder at med kun én DIMM pr. kanal, vil UDIMMs have lidt bedre båndbredde, mindre latency. Men når man går til 2 DIMM'er pr. hukommelse kanal så vil memory controller bruge noget der kaldes en '2T' eller '2N' timing for UDIMMs - detter betyder at hver kommando, der normalt tager en clock cyklus, bliver strakt til to cyklusser pga. 'settling time'. Derfor, ved 2 eller flere DIMM'er pr. kanal vil RDIMMs have bedre båndbredde og latency end UDIMMs.

Så ved UDIMM 'taler' memory controller direkte med til DIMMs, mens ved RDIMM så 'taler memory controller til registret/PLL - dette betyder at RDIMM sætter mindst pres på memory controller, da memory controlleren kun skal snakke med registret/PLL i stedet for alle adresser i RAM.

Taget fra Intel:
1 DIMM pr. kanal: UDIMMs har ca. 0,5% bedre båndbredde end RDIMMs for samme CPU frekvens, RAM frekvens og rang(DIMM rank).
2 DIMM'er pr. kanal: RDIMMs har ca. 8,7% bedre båndbredde end UDIMMs.



For at gøre forvirringen total er der også noget der hedder FBDIMM :P Men det må i selv læse om, f.eks. er der en god begyndelse her: http://images.crucial.com/pdf/...


Svaret blev redigeret 3 gange, sidst af Moze15 d. 02-05-2011 20:05:38.