ECC tampaknya hanya mengoreksi kesalahan bit tunggal.
Benar. Untuk memperbaiki lebih banyak kesalahan akan membutuhkan lebih banyak bit. Seperti itu, Anda sudah menggunakan 10 bit untuk menyimpan 8 bit informasi, 'membuang' 20% dari chip memori untuk memungkinkan koreksi bit tunggal dan hingga dua bit deteksi kesalahan.
Ini berfungsi sebagai berikut. Bayangkan a 0
atau a 1
. Jika saya membaca keduanya maka saya hanya harus berharap saya membaca hal yang benar. Jika 0 dibalik ke 1 oleh beberapa radiasi kosmik atau oleh chip yang buruk maka saya tidak akan pernah tahu.
Di masa lalu kami mencoba menyelesaikannya dengan paritas. Parity menambahkan bit kesembilan per 8 bit yang disimpan. Kami memeriksa berapa nol dan berapa 1 dalam byte. Kesembilan ditetapkan untuk membuat angka genap. (untuk paritas genap) Jika Anda pernah membaca byte dan angkanya salah, maka Anda tahu ada yang salah. Anda tidak tahu bit mana yang salah.
ECC memperluasnya. Ini menggunakan 10 bit dan algoritma yang kompleks untuk menemukan ketika bit tunggal telah membalik. Ia juga tahu apa nilai aslinya. Cara yang sangat sederhana untuk menjelaskan bagaimana hal itu terjadi adalah:
Ganti semua 0
dengan 000
. Ganti semua 1
dengan 111
.
Sekarang Anda dapat membaca enam kombinasi:
000
001
010
100
101
111
Kami tidak pernah 100% yakin apa yang awalnya disimpan. Jika kita membaca 000
maka itu mungkin hanya 000
yang kita harapkan, atau ketiga bit itu mungkin terbalik. Yang terakhir sangat tidak mungkin. Bit tidak terbalik secara acak, meskipun itu terjadi. Katakanlah itu terjadi satu dari sepuluh kali untuk beberapa perhitungan yang mudah (kenyataannya jauh lebih sedikit). Itu berhasil dengan peluang berikut untuk membaca nilai yang benar:
000
-> Baik 000
(99,9% yakin), atau flip tiga (peluang 1/1000)
001
-> Kami tahu ada yang salah. Tapi entah itu
000
dan satu bit terbalik (peluang 1:10), atau itu
111
dan dua bit terbalik (peluang 1: 100). Jadi mari kita perlakukan seolah-olah kita membaca 000
tetapi mencatat kesalahannya.
010
-> Sama seperti di atas.
100
-> Sama seperti di atas.
011
-> Sama seperti di atas, tetapi dengan asumsi itu adalah 111
101
-> Sama seperti di atas, tetapi dengan asumsi itu adalah 111
110
-> Sama seperti di atas, tetapi dengan asumsi itu adalah 111
111
-> Baik 111
(99,9% yakin), atau flip tiga (peluang 1/1000)
111
-> Baik 000
(99,9% yakin), atau flip tiga (peluang 1/1000)
ECC melakukan trik serupa tetapi melakukannya dengan lebih efisien. Untuk 8 bit (satu byte) mereka hanya menggunakan 10 bit untuk mendeteksi dan memperbaiki.
RAM yang terdaftar ECC hanya dapat digunakan dengan papan workstation / server ECC unbuffered dapat digunakan pada Intel Xeon lga1155 atau AMD AM3 + pada papan Asus.
Saya sudah menyebutkan apa bagian ECC itu, sekarang bagian yang terdaftar vs yang tidak dibangun.
Pada CPU modern, pengontrol memori ada pada die CPU, dimulai sejak lama untuk chip AMD Opteron dan dengan seri Core i untuk Intel. Sebagian besar CPU desktop kemudian berbicara langsung ke soket DIMM yang memegang RAM. Ini bekerja dan tidak ada logika tambahan yang diperlukan. Itu murah untuk dibuat, dan kecepatannya tinggi karena tidak ada penundaan dari pengontrol memori ke RAM.
Tetapi pengontrol memori hanya dapat menggerakkan arus terbatas pada kecepatan tinggi. Ini berarti ada batasan berapa banyak soket memori yang dapat ditambahkan ke motherboard. (Dan untuk membuatnya lebih kompleks, seberapa banyak DIMM dapat digunakan, yang mengarah ke peringkat memori. Saya akan melewatkan itu karena ini sudah lama).
Pada papan server Anda sering ingin menggunakan lebih banyak memori daripada sistem desktop. Oleh karena itu buffer "register" ditambahkan ke memori. Membaca dari chip pada DIMM pertama kali disalin ke buffer ini. Siklus clock kemudian buffer ini terhubung ke pengontrol memori untuk mentransfer data.
Buffer / register ini menunda banyak hal, membuat memori lebih lambat. Itu tidak diinginkan dan karenanya hanya digunakan / dibutuhkan pada papan yang memiliki banyak bank memori. Sebagian besar papan konsumen tidak membutuhkan ini, dan sebagian besar CPU konsumen tidak mendukungnya.
RAM yang terhubung langsung, tidak terbuffer vs RAM yang disangga / terdaftar bukan merupakan kasus di mana yang satu lebih baik atau lebih buruk daripada yang lain. Mereka hanya memiliki trade-off yang berbeda dalam hal berapa banyak slot memori yang dapat Anda miliki. Registered RAM memungkinkan lebih banyak RAM dengan mengorbankan beberapa kecepatan (dan mungkin biaya). Dalam kebanyakan kasus di mana Anda membutuhkan memori sebanyak mungkin, memori ekstra itu lebih dari mengimbangi RAM yang berjalan pada kecepatan yang sedikit lebih lambat.
Keraguan yang saya alami adalah (terutama mengenai asus am3 + board): apakah ECC-unbuffered RAM dan ECC-terdaftar RAM (dari sudut pandang keselamatan dan keandalan)? Atau itu pilihan yang lebih buruk. Saya tidak terlalu peduli dengan kecepatannya. **
Dari sudut pandang keselamatan dan stabilitas, ECC-unbuffered dan ECC-terdaftar adalah sama.
Lebih detail: server akan menggunakan kasing server dengan drive hingga 24 x 3 ½ 'dan harus mengkonsumsi sesedikit mungkin.
24 drive akan mengkonsumsi banyak daya. Berapa banyak tergantung pada drive. Drive 140GB 15K RPM SAS saya hanya menghasilkan 10 watt saat idle, sama dengan disk 1TB SATA 7k2. Saat digunakan keduanya lebih menarik.
Lipat gandakan dengan 24. 24x10 Watt saat idle berarti 240 watt hanya menjaga piringan piringan berputar, mengatasi hambatan udara. Double-ish untuk digunakan.
LGA1155 tampaknya dalam arti itu taruhan yang lebih baik (TDP ~ 20-95W) dibandingkan yang lain (> 80W) dengan harga dua kali lipat.
Intel lebih baik pada CPU berdaya rendah, pada saat penulisan dan untuk CPU yang Anda sebutkan.
Setiap saran diterima. Katakanlah kurang dari 120W saat idle (~ dengan 10 hard disk dari 24).
Jika Anda menggunakan FreeBSD, perhatikan keras pada ZFS. Itu bisa bagus. Banyak fitur yang lebih canggih (mis. Deduplikasi dan / atau kompresi) menggunakan daya CPU yang serius, dan ingin banyak memori. ZFS untuk penggunaan dasar dengan ZRAID akan baik-baik saja pada kedua set CPU yang Anda sebutkan dan dengan 16 GB, tetapi jika Anda mengaktifkan fitur seperti deduplikasi, Anda harus melihat dengan hati-hati ke memori yang direkomendasikan yang diperlukan untuk kapasitas disk Anda; direkomendasikan hingga 5GB per TB penyimpanan oleh beberapa panduan .
Dua hal lagi:
- Saya tidak melihat apa-apa tentang menghubungkan drive. Beberapa papan mungkin mencapai hingga 10 port SATA. Tetapi untuk apa pun yang lebih dari itu, Anda akan membutuhkan kartu tambahan. Jika Anda mempertimbangkan RAID perangkat keras, mungkin yang terbaik adalah merencanakannya sejak awal.
- Kegagalan drive: Jika Anda menggunakan pengganda port SATA, kemudian perhatikan dengan cermat bagaimana mereka bertindak jika drive SATA gagal. Seringkali tidak cantik. Bukan masalah besar untuk pengaturan rumah, tetapi sangat tidak kelas perusahaan. Anda mungkin perlu mempertimbangkan bagaimana masing-masing drive menangani kesalahan juga. Alasan beberapa drive diberi label untuk penggunaan "NAS" atau "RAID" adalah karena mereka menangani kesalahan secara berbeda dari drive biasa. Tanpa RAID, Anda ingin drive mencoba sebanyak mungkin. Dengan RAID, Anda ingin drive gagal dengan cepat , sehingga Anda dapat membaca dari salinan lain.