Memtest86+ adalah penguji memori mandiri, sumber terbuka, dan gratis untuk komputer berarsitektur x86 dan x86-64. Ini memberikan pemeriksaan memori yang jauh lebih menyeluruh daripada yang disediakan oleh tes memori BIOS.
Ia juga dapat mengakses hampir seluruh memori komputer, tidak dibatasi oleh memori yang digunakan oleh sistem operasi dan tidak bergantung pada perangkat lunak yang mendasarinya seperti perpustakaan UEFI.
Memtest86+ dapat dimuat dan dijalankan secara langsung oleh BIOS PC (legacy atau UEFI) atau melalui bootloader perantara yang mendukung protokol boot handover Linux 16-bit, 32-bit, 64-bit, atau EFI. Ini harus bekerja pada semua kelas Pentium atau CPU 32-bit atau 64-bit yang lebih baru.
Rilis biner (baik build stable maupun nightly dev) tersedia di memtest.org.
Memtest86+ v6.00 didasarkan pada PCMemTest, yang merupakan fork dan penulisan ulang dari Memtest86+ v5 sebelumnya, yang pada gilirannya merupakan fork dari MemTest-86. Tujuan penulisan ulang PCMemTest adalah untuk:
Dalam proses pembuatan PCMemTest, sejumlah fitur Memtest86+ v5 yang tidak sepenuhnya diperlukan untuk pengujian memori sistem dihilangkan. Secara khusus, tidak ada upaya yang dilakukan untuk mengukur kecepatan cache dan memori utama, atau untuk mengidentifikasi dan melaporkan jenis DRAM. Fitur-fitur ini ditambahkan kembali dan diperluas di Memtest86+ v6.0 untuk membuat rilis terpadu dan berfitur lengkap.
Memtest86+ dirilis berdasarkan ketentuan GNU General Public License versi 2 (GPLv2). Selain ketentuan GPL tidak ada batasan untuk penggunaan, pribadi atau komersial. Lihat file LISENSI untuk detailnya.
Build hanya diuji pada sistem Linux, tetapi dapat dilakukan pada sistem apa pun yang menggunakan rantai alat GNU dan format file ELF. Alat yang dibutuhkan adalah:
Untuk membuat image 32-bit, ubah direktori menjadi direktori build32
dan ketik make
. Hasilnya adalah file gambar biner memtest.bin
yang dapat di-boot langsung oleh BIOS lama (dalam mode floppy) atau oleh bootloader perantara menggunakan protokol boot Linux 16-bit dan file gambar biner memtest.efi
yang dapat di-boot secara langsung oleh UEFI BIOS 32-bit. Gambar mana pun dapat di-boot oleh bootloader perantara menggunakan protokol boot handover EFI Linux 32-bit atau 32-bit.
Untuk membuat image 64-bit, ubah direktori menjadi direktori build64
dan ketik make
. Hasilnya adalah file gambar biner memtest.bin
yang dapat di-boot langsung oleh BIOS lama (dalam mode floppy) atau oleh bootloader perantara menggunakan protokol boot Linux 16-bit dan file gambar biner memtest.efi
yang dapat di-boot secara langsung oleh UEFI BIOS 64-bit. Gambar mana pun dapat di-boot oleh bootloader perantara menggunakan protokol boot handover EFI Linux 32-bit, 64-bit, atau 64-bit.
Apa pun kasusnya, untuk membuat image ISO yang dapat digunakan untuk membuat CD, DVD, atau drive Flash USB yang dapat di-boot, ketik make iso
, Hasilnya adalah file image ISO memtest.iso
. Ini kemudian dapat ditulis langsung ke CD atau DVD kosong, atau ke drive Flash USB, yang kemudian dapat di-boot langsung oleh BIOS PC lawas atau UEFI.
Perhatikan bahwa saat menulis ke USB Flash drive, image ISO harus ditulis langsung ('dibuang') ke perangkat mentah, baik dengan menggunakan perintah dd
atau dengan menggunakan utilitas yang menyediakan fungsi yang sama.
Saat menggunakan bootloader perantara, file memtest.bin
atau file memtest.efi
harus disimpan di partisi disk yang dapat diakses oleh bootloader, dan konfigurasi bootloader harus diperbarui untuk melakukan booting dari file tersebut seolah-olah itu adalah kernel Linux dengan tidak ada disk RAM awal. Beberapa opsi baris perintah boot dikenali, seperti dijelaskan di bawah. Jika menggunakan protokol booting 16-bit, Memtest86+ akan menggunakan tampilan dalam mode teks (640x400). Jika menggunakan protokol boot 32-bit atau 64-bit, Memtest86+ akan menggunakan tampilan dalam mode teks atau mode grafis, seperti yang ditentukan dalam struct boot_params
yang diteruskan oleh bootloader. Jika dalam mode grafis, framebuffer yang disediakan minimal harus 640x400 piksel; jika lebih besar, tampilan akan berada di tengah. Jika sistem di-boot dalam mode UEFI, mode grafis harus digunakan.
Untuk tujuan pengujian, ada juga opsi untuk membuat image ISO yang menggunakan GRUB sebagai bootloader perantara. Lihat Makefile
di direktori build32
atau build64
untuk detailnya. Image ISO adalah legacy dan UEFI bootable, jadi Anda memerlukan modul GRUB untuk boot legacy dan EFI yang diinstal pada sistem build Anda (misalnya di Debian, modul GRUB yang diperlukan terletak di paket grub-pc-bin
, grub-efi-ia32-bin
dan grub-efi-amd64-bin
). Anda mungkin perlu menyesuaikan beberapa jalur dan nama file di Makefile agar sesuai dengan penamaan di sistem Anda.
File konfigurasi GRUB yang terdapat dalam direktori grub
ada untuk digunakan pada pengujian ISO, tetapi juga berfungsi sebagai contoh cara mem-boot Memtest86+ dari GRUB.
Bootloader perantara dapat meneruskan baris perintah boot ke Memtest86+. Baris perintah mungkin berisi satu atau lebih opsi, dipisahkan dengan spasi. Setiap opsi terdiri dari nama opsi, yang dapat diikuti dengan tanda =
dan satu atau lebih parameter, dipisahkan dengan koma. Opsi berikut ini dikenali:
0x
(misal: 0xFEDC9000) Memtest86+ mendukung antarmuka keyboard lama (menggunakan port I/O 0x60 dan 0x64) dan keyboard USB (menggunakan driver perangkat USB sendiri). Salah satu atau yang lain atau keduanya dapat dipilih melalui baris perintah boot, Jika tidak ditentukan pada baris perintah, defaultnya adalah menggunakan keduanya jika sistem di-boot dalam mode UEFI, jika tidak, hanya menggunakan antarmuka lama.
BIOS lama biasanya mendukung emulasi keyboard USB lama, yang membuat keyboard USB berfungsi seperti keyboard lama yang terhubung ke port 0x60 dan 0x64. Hal ini sering kali dapat diaktifkan atau dinonaktifkan di menu pengaturan BIOS. Jika driver perangkat USB Memtest86+ diaktifkan, driver tersebut akan menimpanya dan mengakses keyboard USB apa pun secara langsung. Kelemahannya adalah pengontrol USB dan driver perangkat memerlukan sejumlah memori untuk dicadangkan untuk penggunaan pribadi, yang berarti memori tersebut tidak dapat dicakup oleh pengujian memori. Jadi untuk memaksimalkan cakupan pengujian, jika didukung, aktifkan emulasi keyboard USB lawas dan, jika melakukan booting dalam mode UEFI, tambahkan keyboard=legacy
pada baris perintah boot.
CATATAN : Beberapa UEFI BIOS hanya mendukung emulasi keyboard lama USB ketika Anda mengaktifkan Modul Sistem Kompatibilitas (CSM) di pengaturan BIOS. Yang lain hanya mendukungnya ketika benar-benar melakukan booting dalam mode lama.
Banyak perangkat USB yang tidak sepenuhnya sesuai dengan spesifikasi USB. Jika probe keyboard USB hang atau gagal mendeteksi keyboard Anda, cobalah berbagai solusi yang disediakan oleh opsi boot "usbinit".
CATATAN : Hot-plugging saat ini tidak didukung oleh driver USB Memtest86+. Saat menggunakan ini, keyboard USB Anda harus dicolokkan sebelum menjalankan Memtest86+ dan harus tetap terpasang selama pengujian.
Beberapa mesin 2-in-1 menggunakan panel LCD yang pada dasarnya merupakan tampilan mode potret namun dipasang pada sisinya saat dipasang ke keyboard. Saat menggunakan tampilan dalam mode grafis, Memtest86+ dapat memutar tampilannya agar sesuai. Tambahkan opsi "screen.rhs-up" atau "screen.lhs-up" pada baris perintah boot, tergantung pada orientasi panel LCD. Saat menggunakan tampilan dalam mode teks, diharapkan BIOS akan menangani hal ini secara otomatis.
Saat boot dalam mode lama, Memtest86+ akan menggunakan resolusi layar yang telah diatur oleh BIOS atau oleh bootloader perantara. Saat di-boot dalam mode UEFI, Memtest86+ biasanya akan memilih resolusi layar terkecil yang tersedia yang mencakup tampilan 640x400 piksel. Beberapa BIOS mengembalikan informasi yang salah tentang mode tampilan yang tersedia, sehingga Anda dapat menimpanya dengan menambahkan opsi "screen.mode=" pada baris perintah boot.
Perhatikan bahwa saat menggunakan rotasi tampilan, resolusi layar yang ditentukan adalah untuk tampilan yang tidak diputar.
Setelah di-boot, Memtest86+ akan menginisialisasi tampilannya, lalu berhenti selama beberapa detik agar pengguna dapat mengonfigurasi pengoperasiannya. Jika tidak ada tombol yang ditekan, maka secara otomatis akan mulai menjalankan semua pengujian menggunakan satu inti CPU, berlanjut tanpa batas waktu hingga pengguna melakukan boot ulang atau menghentikan mesin.
Saat startup, dan saat menjalankan pengujian, Memtest86+ merespons kunci berikut:
Perhatikan bahwa pengujian terhenti ketika kunci gulir diaktifkan dan wilayah gulir penuh.
Menu konfigurasi memungkinkan pengguna untuk:
Dalam semua kasus, tombol angka dapat digunakan sebagai alternatif tombol fungsi (1 = F1, 2 = F2, ... 0 = F10).
Mode pelaporan kesalahan dapat diubah kapan saja tanpa mengganggu rangkaian pengujian saat ini. Statistik kesalahan dikumpulkan terlepas dari mode pelaporan kesalahan saat ini (jadi beralih ke mode ringkasan kesalahan akan menampilkan akumulasi statistik sejak rangkaian pengujian saat ini dimulai). Pola BadRAM hanya terakumulasi saat berada dalam mode BadRAM. Wilayah memmap Linux hanya diakumulasikan saat berada dalam mode memmap. Nomor halaman buruk hanya diakumulasikan saat berada dalam mode halaman buruk.
Setiap perubahan pada pengujian yang dipilih, rentang alamat, atau mode pengurutan CPU akan memulai urutan pengujian baru dan mengatur ulang statistik kesalahan.
Mode hanya menghitung kesalahan hanya menampilkan jumlah total kesalahan yang ditemukan sejak rangkaian pengujian saat ini dimulai.
Mode ringkasan kesalahan menampilkan informasi berikut:
Mode kesalahan individual menampilkan informasi berikut untuk setiap contoh kesalahan:
Mode pola BadRAM terakumulasi dan menampilkan pola kesalahan untuk digunakan dengan fitur Linux BadRAM atau perintah GRUB badram. Garis dicetak dalam bentuk badram=F1,M1,F2,M2...
Di setiap pasangan F,M
, F
mewakili alamat kesalahan dan M
adalah bitmask untuk alamat tersebut. Pola-pola ini menyatakan bahwa kesalahan telah terjadi pada alamat yang sama dengan F pada semua 1
bit di M. Pola seperti itu mungkin menangkap lebih banyak kesalahan daripada yang sebenarnya ada, namun setidaknya semua kesalahan ditangkap. Pola-pola ini telah dirancang untuk menangkap pola kesalahan reguler yang disebabkan oleh struktur perangkat keras dalam sintaksis yang singkat.
Pola BadRAM dikembangkan secara bertahap, bukan dihitung dari ikhtisar semua kesalahan. Jumlah pasangan dibatasi hingga 20 karena sejumlah alasan praktis. Hasilnya, pola kerajinan tangan dari keluaran dalam mode pencetakan alamat, dalam kasus luar biasa, dapat memberikan hasil yang lebih baik.
CATATAN Sebagaimana disebutkan dalam deskripsi pengujian individual, pengujian alamat berjalan (pengujian 0) dan pengujian perpindahan blok (pengujian 7) tidak berkontribusi pada pola BadRAM karena pengujian ini tidak memungkinkan penentuan alamat kesalahan yang tepat. .
Mode memmap Linux mengakumulasi dan menampilkan wilayah memori yang rusak untuk digunakan dengan [opsi baris perintah boot memmap Linux] (https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt). Garis dicetak dalam bentuk memmap=S1$A1,S2,A2...
Di setiap pasangan S,A
, A
mewakili alamat pertama di wilayah dan S
adalah ukuran wilayah (dalam byte). Hingga 20 wilayah memori yang rusak dicatat. Setelah lebih dari 20 wilayah dengan lokasi kesalahan yang berdekatan ditemukan, wilayah akan digabungkan, yang berarti beberapa wilayah menyertakan lokasi yang tidak rusak. Program ini akan mencoba meminimalkan jumlah lokasi yang tidak salah yang disertakan.
CATATAN Sebagaimana disebutkan dalam deskripsi pengujian individual, pengujian alamat berjalan (pengujian 0) dan pengujian perpindahan blok (pengujian 7) tidak berkontribusi pada wilayah memori yang salah karena pengujian ini tidak memungkinkan alamat kesalahan yang tepat untuk ditentukan. bertekad.
Mode halaman buruk terakumulasi dan menampilkan nomor halaman memori yang salah. Ini dapat digunakan dengan perintah Windows bcdedit untuk menambahkan halaman tersebut ke daftar memori Windows PFA. Nomor halaman ditampilkan sebagai angka heksadesimal tunggal (misalnya 0x20
) atau rentang nomor halaman heksadesimal (misalnya 0x20..0x2a
). Hingga 20 rentang halaman yang salah dicatat. Setelah lebih dari 20 rentang halaman rusak yang berdekatan ditemukan, rentang tersebut akan digabungkan, yang berarti beberapa rentang menyertakan halaman yang tidak rusak. Program ini akan mencoba meminimalkan jumlah halaman yang tidak rusak yang disertakan.
CATATAN Sebagaimana disebutkan dalam deskripsi pengujian individual, pengujian alamat berjalan (pengujian 0) dan pengujian perpindahan blok (pengujian 7) tidak berkontribusi pada nomor halaman yang salah karena pengujian ini tidak memungkinkan alamat kesalahan yang tepat untuk ditentukan. bertekad.
Perlu diketahui bahwa tidak semua kesalahan yang dilaporkan oleh Memtest86+ disebabkan oleh memori yang buruk. Tes ini secara implisit menguji CPU, cache, dan motherboard. Pengujian tidak mungkin menentukan apa yang menyebabkan kegagalan terjadi. Kebanyakan kegagalan disebabkan oleh masalah memori. Jika tidak, satu-satunya pilihan adalah mengganti suku cadang sampai kerusakannya diperbaiki.
Setelah kesalahan memori terdeteksi, menentukan modul yang gagal bukanlah prosedur yang jelas. Dengan banyaknya vendor motherboard dan kemungkinan kombinasi slot memori, akan sulit bahkan tidak mungkin untuk mengumpulkan informasi lengkap tentang bagaimana kesalahan tertentu akan dipetakan ke modul memori yang rusak. Namun, ada beberapa langkah yang dapat diambil untuk menentukan modul yang gagal. Berikut beberapa teknik yang mungkin ingin Anda gunakan:
Menghapus modul
Modul berputar
Mengganti modul
Terkadang kesalahan memori muncul karena ketidakcocokan komponen. Modul memori mungkin berfungsi dengan baik di satu sistem dan tidak di sistem lain. Hal ini biasa terjadi dan merupakan sumber kebingungan. Komponennya tidak selalu buruk namun kombinasi tertentu mungkin perlu dihindari.
Dalam sebagian besar kasus, kesalahan yang dilaporkan oleh Memtest86+ adalah valid. Ada beberapa sistem yang menyebabkan Memtest86+ bingung tentang ukuran memori dan akan mencoba menguji memori yang tidak ada. Hal ini akan menyebabkan sejumlah besar alamat berturut-turut dilaporkan sebagai buruk dan umumnya akan ada banyak bit yang salah. Jika Anda mempunyai alamat yang gagal dalam jumlah yang relatif kecil dan hanya ada satu atau dua bit kesalahan, Anda dapat yakin bahwa kesalahan tersebut valid. Kesalahan intermiten juga selalu valid.
Semua kesalahan memori yang valid harus diperbaiki. Ada kemungkinan bahwa kesalahan tertentu tidak akan pernah muncul dalam pengoperasian normal. Namun, pengoperasian dengan memori marjinal berisiko dan dapat mengakibatkan hilangnya data dan bahkan kerusakan disk.
Memtest86+ tidak dapat mendiagnosis banyak jenis kegagalan PC. Misalnya, CPU yang rusak yang menyebabkan OS Anda mogok kemungkinan besar juga menyebabkan Memtest86+ mogok dengan cara yang sama.
Waktu yang diperlukan untuk menyelesaikan Memtest86+ akan sangat bervariasi tergantung pada kecepatan CPU, kecepatan memori, dan ukuran memori. Memtest86+ dijalankan tanpa batas waktu. Penghitung kelulusan bertambah setiap kali semua tes yang dipilih telah dijalankan. Umumnya satu pass sudah cukup untuk menangkap semua kesalahan kecuali kesalahan yang paling tidak jelas. Namun, untuk keyakinan penuh ketika diduga terjadi kesalahan intermiten, disarankan untuk melakukan pengujian dalam jangka waktu yang lebih lama.
Ada banyak pendekatan bagus untuk menguji memori. Namun, banyak pengujian yang hanya membuang beberapa pola ke memori tanpa banyak memikirkan atau mengetahui arsitektur memori atau cara terbaik untuk mendeteksi kesalahan. Ini berfungsi dengan baik untuk kegagalan memori keras tetapi tidak banyak membantu menemukan kesalahan yang terputus-putus. Tes memori berbasis BIOS tidak berguna untuk menemukan kesalahan memori yang terputus-putus.
Chip memori terdiri dari sejumlah besar sel memori yang dikemas rapat, satu untuk setiap bit data. Sebagian besar kegagalan intermiten adalah akibat interaksi antara sel-sel memori ini. Seringkali penulisan sel memori dapat menyebabkan salah satu sel yang berdekatan ditulis dengan data yang sama. Tes memori yang efektif mencoba menguji kondisi ini. Oleh karena itu, strategi ideal untuk menguji memori adalah sebagai berikut:
Jelas terlihat bahwa strategi ini memerlukan pengetahuan pasti tentang bagaimana sel memori diletakkan di dalam chip. Selain itu, banyaknya kemungkinan tata letak chip untuk berbagai jenis dan produsen chip yang berbeda membuat strategi ini tidak praktis. Namun, ada algoritma pengujian yang dapat memperkirakan strategi ideal ini.
Memtest86+ menggunakan dua algoritma yang memberikan perkiraan yang masuk akal tentang strategi pengujian ideal di atas. Strategi pertama disebut inversi bergerak. Tes inversi bergerak bekerja sebagai berikut:
Algoritme ini merupakan perkiraan yang baik untuk pengujian memori ideal, namun terdapat beberapa keterbatasan. Kebanyakan chip dengan kepadatan tinggi saat ini menyimpan data dengan lebar 4 hingga 16 bit. Dengan chip yang lebarnya lebih dari satu bit, mustahil untuk membaca atau menulis secara selektif hanya satu bit saja. Artinya, kami tidak dapat menjamin bahwa semua sel yang berdekatan telah diuji interaksinya. Dalam hal ini hal terbaik yang bisa kita lakukan adalah menggunakan beberapa pola untuk memastikan bahwa semua sel yang berdekatan setidaknya telah ditulis dengan semua kemungkinan kombinasi satu dan nol.
Terlihat juga bahwa caching, buffering, dan eksekusi yang tidak sesuai pesanan akan mengganggu algoritma inversi bergerak dan membuatnya kurang efektif. Dimungkinkan untuk mematikan caching tetapi buffering memori pada chip berkinerja tinggi yang baru tidak dapat dinonaktifkan. Untuk mengatasi keterbatasan ini, algoritma baru yang disebut Modulo-20 telah dibuat. Algoritma ini tidak terpengaruh oleh caching atau buffering. Algoritmanya bekerja sebagai berikut:
Algoritme ini menyelesaikan tingkat pengujian kedekatan yang hampir sama dengan inversi bergerak tetapi tidak terpengaruh oleh caching atau buffering. Karena pass tulis terpisah (1.1, 1.2) dan pass baca (1.4) dilakukan untuk seluruh memori, kita dapat yakin bahwa semua buffer dan cache telah dibersihkan di antara pass. Pemilihan 20 sebagai ukuran langkah agak sewenang-wenang. Langkah yang lebih besar mungkin lebih efektif namun memerlukan waktu yang lebih lama untuk dilaksanakan. Pilihan 20 tampaknya merupakan kompromi yang masuk akal antara kecepatan dan ketelitian.
Memtest86+ menjalankan serangkaian tes bernomor untuk memeriksa kesalahan. Pengujian ini terdiri dari kombinasi algoritma pengujian, pola data, dan caching. Urutan pelaksanaan pengujian ini diatur sedemikian rupa sehingga kesalahan akan terdeteksi secepat mungkin. Penjelasan masing-masing tes berikut ini.
Untuk memungkinkan pengujian memori lebih dari 4GB pada CPU 32-bit, rentang alamat fisik dibagi menjadi jendela 1GB yang dipetakan satu per satu ke dalam jendela memori virtual. Setiap jendela 1GB mungkin berisi satu atau lebih wilayah memori yang berdekatan. Untuk sebagian besar pengujian, pengujian dilakukan pada setiap wilayah memori secara bergantian. Caching diaktifkan untuk semua kecuali pengujian pertama.
Di setiap wilayah memori secara bergantian, uji semua bit alamat dengan menggunakan pola alamat berjalan. Kesalahan dari pengujian ini tidak berkontribusi pada pola BadRAM, wilayah memmap, atau wilayah halaman buruk.
Di setiap wilayah memori secara bergantian, setiap alamat ditulis dengan alamatnya sendiri dan kemudian setiap alamat diperiksa konsistensinya. Pengujian ini dilakukan secara berurutan dengan setiap CPU yang tersedia, terlepas dari mode pengurutan CPU yang dipilih oleh pengguna.
Di seluruh wilayah memori, setiap alamat ditulis dengan alamat virtualnya sendiri ditambah nomor jendela (untuk gambar 32-bit) atau alamat fisiknya sendiri (untuk gambar 64-bit) dan kemudian setiap alamat diperiksa konsistensinya. Ini menangkap kesalahan apa pun dalam bit alamat tingkat tinggi yang mungkin terlewatkan saat menguji setiap jendela secara bergantian. Pengujian ini dilakukan secara berurutan dengan setiap CPU yang tersedia, terlepas dari mode pengurutan CPU yang dipilih oleh pengguna.
Di setiap wilayah memori secara bergantian, dan untuk setiap pola secara bergantian, menggunakan algoritma inversi bergerak dengan pola semua satu dan semua nol.
Di setiap wilayah memori secara bergantian, dan untuk setiap pola pada gilirannya, menggunakan algoritma inversi bergerak dengan pola berjalan selebar 8-bit dan berjalan nol.
Di setiap wilayah memori secara bergantian, dan untuk setiap pola pada gilirannya, menggunakan algoritma inversi bergerak dengan pola bilangan acak dan komplemennya. Nomor acak berbeda pada setiap kelulusan tes sehingga beberapa kali lulus meningkatkan efektivitas.
Di setiap wilayah memori secara bergantian, dan untuk setiap pola pada gilirannya, menggunakan algoritma inversi bergerak dengan pola lebar 32-bit (pada build 32-bit) atau lebar 64-bit (pada build 64-bit) yang berjalan dan berjalan nol . Berbeda dengan pengujian sebelumnya, pola diputar 1 bit pada setiap alamat yang berurutan.
Tes ini menekankan memori dengan menggunakan instruksi perpindahan blok (movs) dan didasarkan pada tes burnBX Robert Redelmeier.
Di setiap wilayah memori secara bergantian, memori diinisialisasi dengan pola pergeseran yang dibalik setiap 8 byte. Kemudian blok memori dipindahkan menggunakan instruksi movs. Setelah pemindahan selesai, pola data diperiksa. Karena data diperiksa hanya setelah pemindahan memori selesai, maka tidak mungkin mengetahui di mana kesalahan terjadi. Alamat yang dilaporkan hanya untuk tempat ditemukannya pola buruk. Akibatnya, kesalahan dari pengujian ini tidak berkontribusi pada pola BadRAM, wilayah memmap, atau wilayah halaman buruk.
Pada setiap wilayah memori secara bergantian, setiap alamat ditulis dengan nomor acak, kemudian setiap alamat diperiksa konsistensinya dan ditulis dengan pelengkap data asli, kemudian setiap alamat diperiksa kembali konsistensinya.
Di setiap wilayah memori secara bergantian, dan untuk setiap pola secara bergantian, menggunakan algoritma Modulo-20 dengan pola bilangan acak dan komplemennya. Nomor acak berbeda pada setiap kelulusan tes sehingga beberapa kali lulus meningkatkan efektivitas.
Di seluruh wilayah memori, dan untuk setiap pola secara bergantian, menginisialisasi setiap lokasi memori dengan sebuah pola, tidur selama jangka waktu tertentu, lalu memeriksa konsistensi setiap lokasi memori. Pengujian dilakukan dengan pola semua nol dan semua satu.
Silakan lihat daftar masalah terbuka dan permintaan peningkatan di GitHub.
Jangan ragu untuk mengirimkan laporan bug!
Kontribusi kode disambut baik, baik untuk memperbaiki bug atau untuk melakukan penyempurnaan. Lihat README_DEVEL.md di direktori doc untuk beberapa pedoman dasar.
Memtest86+ v6.0 didasarkan pada PCMemTest, dikembangkan oleh Martin Whitaker, yang didasarkan pada Memtest86+ v5.01, dikembangkan oleh Samuel Demeulemeester, yang kemudian didasarkan pada Memtest86, dikembangkan oleh Chris Brady dengan sumber daya dan bantuan yang tercantum di bawah ini:
Versi awal file sumber bootsect.S, setup.S, head.S dan build.c berasal dari kernel Linux 1.2.1 dan telah banyak dimodifikasi.
Doug Sisk memberikan kode untuk mendukung konsol yang terhubung melalui port serial. (saat ini tidak digunakan)
Kode untuk membuat pola BadRAM disediakan oleh Rick van Rein.
Tes perpindahan blok didasarkan pada tes burnBX Robert Redelmeier.
Kode buffer layar disediakan oleh Jani Averbach. (tidak digunakan oleh Memtest86+ v6.0)
Eric Biederman menyediakan semua konten fitur untuk versi 3.0 ditambah banyak perbaikan bug dan pembersihan kode yang signifikan.
Peningkatan besar pada deteksi dan pelaporan perangkat keras di versi 3.2, 3.3 dan 3.4 disediakan oleh Samuel Demeulemeester (dari Memtest86+ v1.11, v1.60 dan v1.70).
Selain itu, beberapa perbaikan bug untuk Memtest86+ diimpor dari anphsw/memtest86.