There are many good approaches for testing memory. However, many tests simply throw some patterns at memory without much thought or knowledge of memory architecture or how errors can best be detected. This works fine for hard memory failures but does little to find intermittent errors. BIOS based memory tests are useless for finding intermittent memory errors.
RAM chips consist of a large array of tightly packed memory cells, one for each bit of data. The vast majority of the intermittent failures are a result of interaction between these memory cells. Often writing a memory cell can cause one of the adjacent cells to be written with the same data. An effective memory test attempts to test for this condition. Therefore, an ideal strategy for testing memory would be the following:
- Write a cell with a zero.
- Write all of the adjacent cells with a one, one or more times.
- Check that the first cell still has a zero.
It should be obvious that this strategy requires an exact knowledge of how the memory cells are laid out on the chip. In addition there are a never ending number of possible chip layouts for different chip types and manufacturers making this strategy impractical. However, there are testing algorithms that can approximate this ideal and MemTest86 does just this.
- Added version information and total CPU threads to test summary screen
- Increased maximum number of CPU threads to 256
- Added text colour to error messages during testing
- Added Mac Mini 2018 to blacklist which sets the lower address limit to 0x1000 by default
- Fixed bug in detection of hyperthreads when the number of CPU threads exceeds the maximum
- Fixed incorrect JEDEC manufacture names (Bank 10)
- Fixed missing RAM part number / serial number obtained from SMBIOS in HTML report
- Fixed incorrect channel/slot number for ECC errors on Skylake-SP chipsets
- Fixed bug in specifying the number of test passes for Free version