Dukungan ECC RAM pada CPU Desktop AMD Ryzen 7000 Dikonfirmasi
(sunshowers.io)- Dukungan ECC RAM, yang sempat hilang dari tabel spesifikasi saat peluncuran AM5, kembali dikonfirmasi lewat kasus yang menunjukkan dukungan tersebut berjalan pada kombinasi Ryzen 7000 “Raphael” dan motherboard ASRock
- Pengujian dilakukan dengan Ryzen 7950X, ASRock B650E PG Riptide, UEFI 1.28, AGESA 1.0.0.7b, serta 2 modul v-color 32GB ECC UDIMM, dan sistem berhasil boot ke Linux setelah DDR5 link training
- Lebar memori 72-bit dan penanda
Multi-bit ECCdaridmidecodeadalah petunjuk yang berguna, tetapi karena berasal dari informasi SMBIOS milik UEFI, hal itu sendiri tidak membuktikan bahwa ECC aktif - Jika AMD UMC ditanya langsung melalui SMN, bit 30 pada
UmcCapHimenunjukkan status aktivasi ECC, dan pada Linuxryzen_smujuga terlihat nilai dengan bit tersebut disetel untuk kedua kanal memori - Injeksi kesalahan nyata tidak dilakukan, tetapi log EDAC kernel Linux keluar melalui jalur yang memeriksa bit aktivasi ECC pada UMC, sehingga menjadi bukti kuat untuk menilai apakah ECC bekerja
Perubahan dukungan ECC pada desktop Ryzen
- CPU desktop AMD Ryzen sejak dulu memiliki dukungan resmi ECC RAM sebagai salah satu keunggulannya
- Sebagian besar seri Ryzen 1000~5000 dapat menggunakan ECC RAM jika dipasangkan dengan motherboard yang sesuai, tanpa perlu CPU kelas workstation yang lebih mahal
- Halaman spesifikasi ASRock B550 Steel Legend adalah contoh yang menampilkan informasi kompatibilitas ECC RAM secara rinci menurut generasi CPU
- Saat Ryzen 7000 “Raphael” dan Socket AM5 diluncurkan, penyebutan dukungan ECC menghilang
- Bahkan pada halaman spesifikasi ASRock X670E Taichi, motherboard AM5 kelas mahal, tidak ada penyebutan dukungan ECC pada saat penulisan
- Setelah upgrade ke Ryzen 7950X, performanya memuaskan, tetapi ketiadaan ECC saat pembelian tetap menjadi kekecewaan besar
Pengujian ECC AM5 yang berawal dari forum ASRock
- Dalam topik forum ASRock, pengguna bernama ApplesOfEpicness membagikan pengalamannya menjalankan ECC RAM pada firmware AMD AGESA bersama seorang engineer AMD
- Ia mengatakan telah mengonfirmasi bahwa pada motherboard ASRock dengan UEFI yang diperbarui, kesalahan yang dibuat dengan menghubungkan pin data dan pin ground secara short dapat dilaporkan hingga ke OS
- Pengujian berikutnya menggunakan ASRock B650E PG Riptide dan 2 modul v-color 32GB ECC UDIMM
- UEFI motherboard diperbarui ke 1.28, dan AGESA ke 1.0.0.7b
- Setelah RAM diganti, DDR5 link training berjalan cukup lama, lalu sistem berhasil boot
- Pada sistem tersebut, link training untuk RAM 64GB memakan waktu hampir 3 menit
- Pada desktop Ryzen 7000, ini hanya diperlukan sekali setelah penggantian RAM atau perubahan timing; UEFI menyimpan hasilnya dalam cache dan menggunakannya kembali pada boot berikutnya
Tampilan ECC di Linux dan keterbatasannya
- Di Linux,
sudo dmidecode -t memorymenampilkan nilai terkait ECCError Correction Type: Multi-bit ECCTotal Width: 72 bitsData Width: 64 bits
- Total Width 72 bits adalah sinyal yang menonjol
- Pada RAM non-ECC, nilainya ditampilkan sebagai 64 bit
- RAM ECC 64-bit memiliki tambahan 8 bit untuk data paritas
- EDAC pada kernel Linux juga terlihat aktif
EDAC MC: Ver: 3.0.0EDAC MC0: Giving out device to module amd64_edacEDAC amd64: F19h_M60h detected
Mengapa dmidecode saja tidak cukup
dmidecodeadalah alat yang menampilkan tabel DMI atau SMBIOS komputer dalam bentuk yang mudah dibaca manusia- Tabel ini berisi informasi seperti komponen hardware, nomor seri, dan revisi BIOS
- Tidak perlu memeriksa hardware secara langsung, tetapi informasi yang ditampilkan bisa saja tidak dapat dipercaya
- SMBIOS mendefinisikan struktur data dan cara akses untuk membaca informasi manajemen yang dibuat BIOS
- Ini memungkinkan sistem operasi tidak perlu memeriksa perangkat secara langsung
- Informasi
dmidecodeterkait ECC berasal dari UEFI, bukan dari prosesor- Beberapa informasi seperti kecepatan memori bisa berasal dari memory controller
- Karena informasi ECC berasal dari UEFI, hal ini memang menunjukkan bahwa memori mendukung ECC, tetapi tidak menjamin bahwa ECC benar-benar aktif
- Apakah ECC aktif pada akhirnya ditentukan oleh memory controller sistem
Cara menanyakan AMD UMC secara langsung
- Prosesor AMD mengekspos bus bernama System Management Network, atau SMN
- Bus ini dapat digunakan untuk menanyakan dan mengonfigurasi AMD Unified Memory Controller, atau UMC
- Melalui dokumentasi AMD UMC milik illumos, status aktivasi ECC dapat diperiksa dengan membaca register
UmcCapHi- Informasi terkait bukan bagian dari AMD Processor Programming Reference yang dipublikasikan, dan dapat diketahui dari source code kernel Linux dan illumos yang bersifat open source
- Akses langsung ke SMN berbahaya
- Khususnya perintah tulis dapat merusak komputer secara serius
- Jangan melakukan operasi tulis ke SMN
- Di illumos, dua kanal memori pada prosesor Ryzen 7000 ditanyakan secara terpisah
- Alamat kanal 0:
0x50df4 - Alamat kanal 1:
0x150df4 - Nilai balik untuk kedua kanal adalah
0x40000030
- Alamat kanal 0:
- Bagian kuncinya adalah bit 30
- Jika bit ini disetel, berarti ECC aktif pada memory controller
Menanyakan SMN di Linux dengan ryzen_smu
- Di Linux, bus SMN juga dapat diakses dengan driver
ryzen_smu- Pada sistem tersebut, patch diperlukan untuk instalasi
- Driver menyediakan file
/sys/kernel/ryzen_smu_drv/smn- Untuk melakukan kueri, tulis alamat 4-byte dalam format little-endian, lalu baca hasil 4-byte dalam format little-endian
- Hasil menanyakan kedua kanal dengan skrip Python adalah sebagai berikut
0x00050df4:0x400000000x00150df4:0x40000000
- Angka
4pada nibble pertama dari nilai balik berarti bit 30 disetel, dan memory controller melaporkan bahwa ECC aktif - Di Windows, kueri serupa mungkin dapat dilakukan dengan alat seperti SMUDebugTool, tetapi perilaku alat tersebut tidak dijamin
Injeksi kesalahan nyata dan keandalan EDAC
- Cara paling pasti untuk memverifikasi kerja ECC adalah menyuntikkan kesalahan nyata
- ApplesOfEpicness melakukan short antara pin data dan pin ground pada motherboard
- Metode lain adalah menaikkan overclock RAM hingga ke titik yang tidak stabil
- Dalam pengujian ini, short pin fisik maupun overclock RAM berulang tidak dilakukan
- Fakta bahwa DDR5 link training memakan waktu beberapa menit setiap kali juga menjadi beban untuk pengujian overclock
- Hingga saat ini, tidak ada kesalahan yang terjadi secara alami yang diamati
- Jalur pesan EDAC pada kernel Linux terhubung dengan bit aktivasi ECC di AMD UMC
- Log
Giving out device to moduleberasal dariedac_mc_add_mc_with_groups - Fungsi ini dipanggil melalui jalur
init_one_instance init_one_instancehanya dipanggil ketikapvt->ops->ecc_enabledbernilai true- Ryzen 7000, yaitu Zen 4, adalah family
0x19; dalam kasus iniumc_ecc_enableddariumc_opsdigunakan
- Log
umc_ecc_enabledmemeriksa bitUMC_ECC_ENABLEDpadaumc_cap_hiUMC_ECC_ENABLEDadalah bit 30- Pada prosesor AMD, pesan
EDAC MC0: Giving out device to module amd64_edacadalah indikator tepercaya bahwa UMC melaporkan ECC aktif
Kesimpulan
- Pada CPU desktop Ryzen 7000, setidaknya dalam kombinasi dengan motherboard ASRock, ECC RAM dapat dijalankan dengan relatif mudah
- Informasi berbasis SMBIOS dari
dmidecodesaja tidak cukup, tetapi jika bit 30 pada UMC dan jalur EDAC Linux dilihat bersama, status aktivasi ECC dapat dikonfirmasi secara lebih langsung
1 komentar
Komentar Hacker News
Saya perlu upgrade prosesor dan sangat tertarik dengan konfigurasi RAM ECC
Di /r/AMD saya melihat dua orang berdebat apakah prosesor atau motherboard AMD benar-benar mendukung ECC, tetapi saya tidak tahu siapa yang benar: https://www.reddit.com/r/Amd/comments/lzxqod/list_of_am4_mot...
Saya penasaran apakah tulisan ini memastikan bahwa kombinasi AMD+ASRock memang benar-benar RAM ECC
Biasanya di bagian “Memory” tertulis seperti “ECC & Non-ECC, Unbuffered Memory”
Perlu hati-hati karena istilah “On-die ECC” adalah fitur yang juga ada pada memori Non-ECC, jadi tidak terkait dengan ECC yang dimaksud di sini
Harus membeli ECC DDR5 UDIMM, dan jangan sampai keliru membeli ECC DDR5 RDIMM yang tidak kompatibel dengan motherboard AM5
ECC DDR5 UDIMM bisa memiliki lebar 80-bit atau 72-bit; yang penting bukan 64-bit seperti Non-ECC DDR5 UDIMM
Saat terakhir saya mengecek, ASUS punya papan AM5 dengan dukungan ECC paling banyak, dan saya paling menyukai PRIME X670E-PRO WIFI karena ekspansi PCIe selain slot GPU-nya bagus
Level 0 berarti sama sekali tidak mendukung sehingga tidak bisa boot jika RAM ECC dipasang, level 1 berarti bisa dipasang tetapi fungsi ECC tidak digunakan, level 2 berarti rangkaiannya ada tetapi produsen motherboard belum memverifikasi deteksi dan koreksi error, level 3 berarti fungsi ECC ada dan telah diverifikasi oleh produsen
Untuk papan kelas server seperti Supermicro, level 3 bisa diharapkan
Jika pada prosesor AMD terlihat “ECC supported”, sulit mengetahui itu level yang mana, tetapi jika Intel menyatakan CPU/chipset mendukung ECC, itu bisa dianggap benar-benar mendukungnya
Dengan sengaja memakai DIMM ECC yang rusak, saya bisa menghasilkan error yang dapat dikoreksi dan yang tidak dapat dikoreksi dalam waktu singkat
Jika semua komponen lain sudah siap, kecil kemungkinan ASRock tidak memasang jalurnya, tetapi kalau kernel mengatakan ada ECC, saya anggap itu benar
Kalau tidak, kembalikan papan sebagai barang cacat dan pakai produsen lain saja
Namun sayang tidak ada papan mini-ITX/mATX X670E. Yang punya hanya ASUS
dmidecodemelaporkan lebar data 128-bit, bukan 72-bit, tetapi juga melaporkan koreksi multi-bit, bukan hanya single-bitPada UDIMM untuk papan Intel, misalnya Supermicro+Xeon, saya terbiasa melihat 72-bit, tetapi informasi ini tampaknya lebih dipengaruhi oleh cara memory controller dan motherboard melaporkannya daripada dukungan hardware sebenarnya
Meski begitu, EDAC berjalan, driver yang benar terdaftar, dan dari EDAC/RAS saya kadang menerima peringatan bahwa error yang dapat dikoreksi benar-benar telah dikoreksi, jadi menurut saya ini sudah cukup menjadi kesimpulan
Agak keluar dari topik, tetapi dukungan ECC yang juga berfungsi pada platform AM4 lama dan core APU Zen3 terlihat seperti ini, dan di sistem saya jelas ada
Kombinasinya ASRock B550M-ITX/ac dan AMD Ryzen 5 PRO 5650G, dan dulu saat memakai Ryzen 5 3600 dengan GPU diskret pun fungsinya sama
Pada GNU/Linux terbaru, untuk mendeteksi dan mencatat aktivitas ECC, layanan
rasdaemonharus diaktifkanLayanan ini menafsirkan MCE dan error terkait hardware lainnya lalu menyimpannya ke database, dan output yang dilihat di atas juga merupakan hasilnya
Namun jika dipikir lagi, frekuensinya cukup tinggi sehingga mungkin modul memorinya rusak. Apalagi setiap kali modul dan alamatnya sama
https://www.asus.com/global/support/FAQ/1045186/
dmidecodemenunjukkan lebar 72-bit, sementaradmesg | grep -i EDACjuga menampilkan banyak informasi yang seolah-olah ECC aktifNamun output perintah tersebut kosong dan hanya muncul “No Memory errors”, “No PCIe AER errors”, “No Extlog errors”, “No MCE errors”
Saya penasaran apakah ada sesuatu yang perlu diaktifkan agar error dicatat, atau saya tertipu oleh
dmidecodedandmesgTulisan yang bagus. Di board Threadripper saya juga memakai ECC RAM
Salah satu hal yang ditemukan tim operasi Blekko pada board Intel adalah bahwa mereka harus secara eksplisit memberi tahu board agar benar-benar melaporkan error yang dapat dikoreksi
Default-nya adalah mengeluarkan machine check jika ada error yang tidak dapat dipulihkan, dan selain itu dibiarkan saja
Seingat saya, pada sekitar 1.600 sistem dengan RAM 192GB, kami melihat error yang dapat dikoreksi kira-kira seminggu sekali
Selama 6 tahun saya tidak ingat ada satu pun error yang tidak dapat dipulihkan, jadi itu cukup bagus
Kami punya perangkat dalam skala serupa dan rata-rata kapasitas RAM yang mirip, dan kadang ada juga error yang tidak dapat dipulihkan. Mungkin sekitar satu atau dua kali setahun, sehingga dibuatlah sebuah kebijakan
Kami memantau apakah itu hanya terjadi sekali; kalau tidak segera gagal lagi, kami anggap baik-baik saja, dan kalau segera gagal lagi, RAM diganti
Board server yang lebih bagus bahkan memberi tahu modul RAM mana yang harus diganti lewat LED
Untuk error yang dapat dikoreksi, kami tidak mengganti sampai jumlahnya cukup besar, dan ada sistem yang error sekali-dua kali sehari tetapi tetap berjalan baik dalam waktu lama
Sebaliknya, ada juga sistem yang lama sekali 0 kasus, lalu muncul sedikit selama beberapa hari, kemudian melonjak ke angka besar
Satu sistem naik sampai ribuan kasus per jam sehingga menjadi tidak bisa dipakai karena biaya penanganan machine check exception, tetapi karena periode pelaporannya 1 jam, kami tidak tahu penyebabnya sampai laporan berikutnya
Saat ini saya memakai Ryzen 3700X dan motherboard ASUS TUF Gaming X570, dan butuh performa single-core serta kecepatan NVMe/disk yang lebih tinggi
Saya sudah memakai dual GPU, 2 M.2 NVMe, dan 6 SATA
Saya sedang mempertimbangkan upgrade akhir tahun; sempat terpikir Threadripper karena PCIe lane, tetapi Zen4 Threadripper belum ada dan harganya tampaknya akan sangat tinggi
Pilihannya adalah naik ke Ryzen 5900X dan mempertahankan sisanya, atau keluar uang lebih untuk AM5 Ryzen dan motherboard baru
Saya juga melihat Intel, tetapi setelah melihat PCIe lane berhenti di 20, saya cenderung mencoretnya
Saya ingin menambahkan adaptor 10Gb agar bisa memindahkan sebagian disk berputar ke luar, jadi butuh lebih banyak PCIe lane
Performa multicore 3700X sudah cukup, dan kalau membeli motherboard baru, demi kecepatan saya ingin minimal mirror 2 NVMe dan setidaknya 6 port SATA
Saya tidak tahu di sisi AMD, tetapi board Intel biasanya hanya satu slot M.2 yang terhubung langsung ke CPU, sedangkan tiga lainnya lewat chipset, sehingga bottleneck-nya juga berbagi dengan kartu Ethernet 10Gb
Pada akhirnya, membeli board yang mendukung PCIe 5.0 dan satu SSD yang cukup besar jauh lebih cepat, dan baik total IOPS maupun throughput-nya lebih tinggi daripada array RAID 0 sebelumnya
5900X bukan upgrade yang sebesar itu
Sebagai contoh referensi, Hetzner sudah beberapa bulan menyediakan server CPU Ryzen 7000 dengan ECC RAM
https://www.hetzner.com/dedicated-rootserver/matrix-ax
AX52 menawarkan ECC RAM sebagai upgrade opsional, dan AX102 menyertakan ECC secara default
Rasanya kecil kemungkinan mereka menawarkan ECC yang sebenarnya tidak berfungsi
Jadi mereka mungkin bisa memastikan dukungan ECC dari awal sampai akhir
Semoga para legislator sadar dan membuat ECC wajib
Meresahkan bahwa sebagian besar komputasi terjadi di sistem Non-ECC yang rentan
Ini bentuk segmentasi pasar artifisial yang sangat berantakan
Bagaimana bisa berharap orang-orang seperti itu membuat undang-undang soal ECC
Namun sistem Intel saya dengan RAM Non-ECC 64GB berjalan setengah hari setiap hari dan hibernate pada malam hari; meski menjalankan 3D CAD, Photoshop, VS Code dengan banyak ekstensi, dan container WSL2 Docker, saya hampir tidak pernah melihat error
Tidak ada crash atau blue screen juga
Saya penasaran, sebenarnya apa yang seharusnya diharapkan dari error bit flip. Kalau single-bit flip terjadi sesering itu saat RAM 64GB hampir penuh, rasanya semestinya akan terlihat dalam bentuk tertentu
Saya tidak punya keberanian untuk secara fisik men-short pin, dan juga tidak punya kesabaran untuk menunggu link training DDR5 beberapa menit setiap kali sambil meng-overclock RAM pelan-pelan
Jadi saya cukup puas kalau memory controller melaporkan bahwa ECC aktif
Sebagai gantinya, bagaimana kalau meniupkan udara hangat dari pengering rambut ke RAM? Dulu saya pernah melihat teknik seperti itu dipakai untuk membuat error
https://hackaday.com/2022/01/29/blast-chips-with-this-bbq-li...
https://hackaday.com/tag/emfi/
Tidak disarankan untuk penggunaan sebenarnya, tetapi bisa dipakai saat mencari batas memori atau membuat error
Pada sistem I7-4770K saya yang tidak di-overclock, error terlihat, tetapi board Supermicro generasi X10 lama tampaknya tidak mendeteksi error meski pengujian Rowhammer dijalankan tanpa batas waktu
Namun, jika sistem modern dirancang agar tidak rentan terhadap serangan Rowhammer, metode ini mungkin tidak berhasil
RAM pada Raspberry Pi 4B dan CM4 diketahui menggunakan ECC RAM, tetapi berbeda dari ECC yang dibahas di sini
Itu adalah on-die ECC, ditujukan untuk meningkatkan yield chip, dan error ECC diperbaiki tanpa dilaporkan melalui hardware
Error ECC yang tidak dapat diperbaiki sepertinya hanya akan terbaca sebagai data yang salah
Saya penasaran apakah modul RAM modern juga memakai chip dengan on-die ECC
Link training bisa dimatikan di BIOS, sehingga pengaturan bandwidth yang berada di ambang batas bisa ditemukan dengan cepat
Hasilnya mungkin tidak terlalu dapat direproduksi, tetapi itu tidak penting
Sebagian, mungkin semua, motherboard ASUS AM5 memiliki dukungan ECC resmi
Ini tercantum di manual board dan manual BIOS untuk model yang baru saja saya periksa
Salah satu pengaturan BIOS terkait bernilai default Auto, tetapi berlawanan dengan intuisi, dalam keadaan ini fitur tersebut dinonaktifkan sehingga harus diubah
Pelaporan ECC untuk prosesor-prosesor ini masuk ke Linux 6.5, jadi pengguna Debian Stable harus menunggu sampai masuk Backports atau keluar dari jalur standar
https://www.phoronix.com/news/AMD-EDAC-Ryzen-7000-Series
Kalau nilai yang benar-benar diterapkan bisa dilihat, masih lumayan, tetapi sembilan dari sepuluh kali tidak jelas
Ada rumor bahwa versi AGESA lama memiliki bug yang membuat chipset tidak dapat mengenali dan memanfaatkan ECC RAM dengan benar
Padahal chipset tersebut seharusnya mendukungnya
Untuk motherboard yang sedang dipertimbangkan, pastikan ada pembaruan firmware yang setidaknya menyertakan AGESA 1.0.0.5 patch C
https://www.reddit.com/r/truenas/comments/10lqofy/
AGESA adalah bagian dari firmware sistem AMD yang menginisialisasi komponen inti sistem: https://en.wikipedia.org/wiki/AGESA
Saya memperbarui ke AGESA 1.0.0.7b sebelum memasang ECC RAM
Saya tidak tahu bahwa seri Ryzen 7000 tidak secara resmi mencantumkan dukungan ECC
Misalnya lini ASRock Rack mendukungnya: https://www.asrockrack.com/general/productdetail.asp?Model=1...
Motherboard ASUS ini juga mengklaim dukungan ECC: https://www.asus.com/us/motherboards-components/motherboards...
Keduanya belum ada saat saya pertama kali membeli motherboard AM5. Saat itu baru segera setelah peluncuran, dan angka performanya begitu bagus sehingga saya membelinya lebih awal
Semua CPU seri Ryzen 7000 yang saat ini dijual memiliki dukungan ECC resmi, tetapi juga memerlukan dukungan motherboard
Dukungan ECC bersyarat semacam ini sebenarnya sudah lama ada pada CPU konsumer AMD, sejak Athlon 64, tetapi sepertinya baru di seri Ryzen 7000 hal itu dicantumkan dalam materi pemasaran AMD
Yang dimaksud penulis adalah bahwa penyebutan dukungan ECC menghilang dari dokumentasi motherboard ASRock
Karena ASRock sebelumnya mencantumkan dukungan ECC pada motherboard Ryzen mereka, ini merupakan perubahan yang mencolok
Contoh halaman spesifikasi Ryzen 5 7600: https://www.amd.com/en/product/12756#:~:text=ECC%20Support,R...)
Selain itu, juga sering membingungkan dengan on-chip ECC yang digunakan semua DDR5
DDR5 membutuhkan on-chip ECC untuk memperbaiki error yang terjadi selama operasi normal, tetapi itu bukan ECC yang melindungi data yang dikirim ke CPU melalui bus memori