ECC scheint nur Einzelbitfehler zu korrigieren.
Richtig. Um mehr Fehler zu korrigieren, wären mehr Bits erforderlich. So wie es ist, verwenden Sie bereits 10 Bits zum Speichern von 8 Bits an Informationen und verschwenden 20% der Speicherchips, um eine Einzelbitkorrektur und bis zu zwei Bits an Fehlererkennung zu ermöglichen.
Es funktioniert wie folgt. Stellen Sie sich ein 0
oder ein 1
. Wenn ich auch lese, muss ich nur hoffen, dass ich das Richtige lese. Wenn eine 0 durch eine kosmische Strahlung oder durch einen schlechten Chip auf eine 1 gedreht wurde, werde ich es nie erfahren.
In der Vergangenheit haben wir versucht, das mit Parität zu lösen. Die Parität fügte ein neuntes Bit pro 8 gespeicherten Bits hinzu. Wir haben überprüft, wie viele Nullen und wie viele 1 im Byte sind. Die neunte sollte eine gerade Zahl ergeben. (für gerade Parität) Wenn Sie jemals ein Byte gelesen haben und die Nummer falsch war, dann wussten Sie, dass etwas falsch war. Sie wissen jedoch nicht, welches Bit falsch war.
Das ECC hat das erweitert. Es verwendet 10 Bits und einen komplexen Algorithmus, um festzustellen, wann ein einzelnes Bit umgedreht wurde. Es weiß auch, was der ursprüngliche Wert war. Ein sehr einfacher Weg, um zu erklären, wie es funktioniert, wäre dieser:
Ersetzen Sie alle 0
s durch 000
. Ersetzen Sie alle 1
s durch 111
.
Jetzt können Sie sechs Kombinationen lesen:
000
001
010
100
101
111
Wir sind uns nie zu 100% sicher, was ursprünglich gelagert wurde. Wenn wir 000
dann lesen , könnte das genau das gewesen sein, 000
was wir erwartet hatten, oder alle drei Bits könnten sich umgedreht haben. Letzteres ist sehr unwahrscheinlich. Bits kippen nicht zufällig, obwohl es passiert. Nehmen wir an, das passiert für einfache Berechnungen eins zu zehn Mal (die Realität ist viel weniger). Das ergibt folgende Chancen, den richtigen Wert zu lesen:
000
-> Entweder 000
(99,9% sicher) oder ein Triple Flip (1/1000 Chance)
001
-> Wir wissen, dass etwas schief gelaufen ist. Aber es war auch so
000
und ein Bit ist umgedreht (Chance 1:10), oder es war
111
und zwei Bits sind umgedreht (Chance 1: 100). Behandeln wir es also so, als würden wir 000
den Fehler lesen, aber protokollieren.
010
-> wie oben
100
-> wie oben
011
-> Wie oben, jedoch unter der Annahme, dass es sich um eine 111
101
-> Wie oben, jedoch unter der Annahme, dass es sich um eine 111
110
-> Wie oben, jedoch unter der Annahme, dass es sich um eine 111
111
-> Entweder 111
(99,9% sicher) oder ein Triple Flip (1/1000 Chance)
111
-> Entweder 000
(99,9% sicher) oder ein Triple Flip (1/1000 Chance)
ECCs machen ähnliche Tricks, aber effizienter. Für 8 Bits (ein Byte) werden nur 10 Bits zum Erkennen und Korrigieren verwendet.
ECC-registrierter RAM kann nur mit Workstation- / Server-Boards verwendet werden. ECC-ungepuffert ist auf Intel Xeon lga1155 oder AMD AM3 + auf Asus-Boards verwendbar.
Ich habe bereits erwähnt, was der ECC-Teil ist, jetzt der registrierte vs ungepufferte Teil.
In modernen CPUs befindet sich der Speichercontroller auf dem CPU-Chip, angefangen bei AMD Opteron-Chips und bei der Core i-Serie für Intel. Die meisten Desktop-CPUs kommunizieren dann direkt mit den DIMM-Sockeln, in denen sich der RAM befindet. Es funktioniert und es wird keine zusätzliche Logik benötigt. Das ist billig zu bauen und die Geschwindigkeit ist hoch, weil es keine Verzögerung vom Speichercontroller zum RAM gibt.
Ein Speichercontroller kann jedoch nur einen begrenzten Strom mit hohen Geschwindigkeiten treiben. Dies bedeutet, dass die Anzahl der Speichersockel, die einem Motherboard hinzugefügt werden können, begrenzt ist. (Und um es komplexer zu machen, wie viel die DIMMs verwenden können, was zu Speicherreihen führt. Ich werde das überspringen, da dies bereits lang ist).
Auf Server-Boards möchten Sie häufig mehr Speicher als auf einem Desktop-System verwenden. Daher wird dem Speicher ein "Register" -Puffer hinzugefügt. Lesevorgänge von den Chips auf dem DIMM werden zuerst in diesen Puffer kopiert. Ein Taktzyklus später verbindet sich dieser Puffer mit der Speichersteuerung, um die Daten zu übertragen.
Dieser Puffer / dieses Register verzögert Dinge und verlangsamt den Speicher. Das ist unerwünscht und wird daher nur auf Karten mit vielen Speicherbänken benötigt. Die meisten Consumer-Boards benötigen dies nicht und die meisten Consumer-CPUs unterstützen dies nicht.
Direkt verbundener, ungepufferter RAM vs. gepufferter / registrierter RAM ist kein Fall, in dem einer besser oder schlechter ist als der andere. Sie haben nur unterschiedliche Kompromisse in Bezug auf die Anzahl der Speichersteckplätze, die Sie haben können. Registrierter RAM ermöglicht mehr RAM auf Kosten einer gewissen Geschwindigkeit (und möglicherweise Kosten). In den meisten Fällen, in denen Sie so viel Speicher wie möglich benötigen, wird durch diesen zusätzlichen Speicher mehr als ausgeglichen, dass der Arbeitsspeicher etwas langsamer ausgeführt wird.
Der Zweifel, den ich habe, ist (hauptsächlich in Bezug auf Asus am3 + Board): Ist ECC-ungepuffertes RAM so gut wie ECC-registriertes RAM (aus Sicht der Sicherheit und Zuverlässigkeit)? Oder ist es eine schlechtere Wahl. Die Geschwindigkeit ist mir egal. **
Im Hinblick auf Sicherheit und Stabilität sind ECC-ungepuffert und ECC-registriert gleich.
Weitere Details: Der Server verwendet ein Servergehäuse mit bis zu 24 x 3 ½ Zoll großen Laufwerken und sollte so wenig wie möglich verbrauchen.
24 Laufwerke werden viel Strom verbrauchen. Wie viel hängt von den Laufwerken ab. Mein 140-GB-SAS-Laufwerk mit 15.000 U / min verbraucht im Leerlauf nur 10 Watt, genau wie die 1-TB-SATA-7-k2-Festplatte. Bei Benutzung ziehen beide mehr.
Multiplizieren Sie das mit 24. 24x10 Watt im Leerlauf bedeutet 240 Watt, damit die Platten nicht durchdrehen und der Luftwiderstand überwunden wird. Das ist doppelt so wichtig.
LGA1155 scheint in diesem Sinne eine bessere Wahl zu sein (TDP ~ 20-95W) als die anderen (> 80W) für den doppelten Preis.
Intel ist besser bei Low-Power-CPUs, zum Zeitpunkt des Schreibens und für die von Ihnen erwähnten CPUs.
Jeder Vorschlag ist willkommen. Sagen wir weniger als 120 W im Leerlauf (~ mit 10 von 24 Festplatten).
Wenn Sie sich für FreeBSD entscheiden, schauen Sie sich ZFS genau an. Es kann großartig sein. Viele seiner erweiterten Funktionen (z. B. Deduplizierung und / oder Komprimierung) verbrauchen viel CPU-Leistung und benötigen viel Arbeitsspeicher. ZFS für die grundlegende Verwendung mit ZRAID funktioniert auf beiden von Ihnen erwähnten CPU-Sätzen und mit 16 GB. Wenn Sie jedoch Funktionen wie die Deduplizierung aktivieren, sollten Sie den für Ihre Festplattenkapazität empfohlenen Speicher sorgfältig prüfen. Einige Anleitungen empfehlen bis zu 5 GB Speicherplatz pro TB .
Zwei weitere Dinge:
- Ich habe nichts über das Anschließen der Laufwerke gesehen. Einige Karten können bis zu 10 SATA-Ports belegen. Aber für alles darüber benötigen Sie Add-In-Karten. Wenn Sie Hardware-RAID in Betracht ziehen, ist es möglicherweise am besten, dies von Anfang an zu planen.
- Laufwerksfehler: Wenn Sie SATA-Port-Multiplikatoren verwenden, überprüfen Sie sorgfältig, wie diese bei einem Ausfall eines SATA-Laufwerks funktionieren. Es ist oft nicht schön. Kein großes Problem für ein Heim-Setup, aber sehr viel nicht für Unternehmen. Möglicherweise müssen Sie berücksichtigen, wie einzelne Laufwerke auch mit Fehlern umgehen. Der Grund, warum manche Laufwerke als "NAS" oder "RAID" bezeichnet werden, ist, dass sie anders mit Fehlern umgehen als normale Laufwerke. Wenn kein RAID vorhanden ist, soll das Laufwerk so oft wie möglich erneut versuchen. Mit RAID soll das Laufwerk schnell ausfallen , damit Sie von einer anderen Kopie lesen können.