Memory benchmark - test your memory speed

The Advanced Memory Test is part of the PerformanceTest application, and it is designed to test several factors which affect the speed of which data is accessed in PC memory.

You can think of computer memory as a long continuous strip. The strip is composed of millions (sometimes billions) of slots. Each slot has a unique identifying value called its address. On 32 bit Windows platforms the size of each slot is 32 bits or 4 bytes ( 1 byte = 8 bits ). Windows moves data onto and off of this strip as required. For instance, running an executable file from a disk causes Windows to copy the file from the disk to memory and then run the executable from there.

One principle of memory design is known as Spatial Locality. It says that memory addresses which are near each other tend to be referenced close together in time. Memory is designed with this principle in mind and so, we should expect to see a decline in memory access time if we continually request addresses that are far apart from each other.

Users can choose between two types of test - Memory Speed Per Access Step Size and Memory Speed Per Block Size

Memory Speed Per Access Step Size
The first test type, 'Memory Speed Per Access Step Size' accesses a large block, of memory in various sized steps. First, it runs through the block of memory sequentially, accessing every value. Next it runs through the same block again, except this time it accesses every second value. On this occasion, it runs through the block twice in order to access the same amount of data as the initial step. Next it runs through the same block again, except this time it accesses every fourth value and so makes four passes. And so on, until a certain maximum step size is reached.

The size of the block of memory used for this test is one quarter the amount of system RAM or 512MB, whichever is smaller. The size of the steps vary from 1 (continuous sequential access), to 1/65536th of the size of the block of memory.

Memory Speed Per Block Size
When a computer program wants to use a section of memory to store data, it makes a request to Windows for the amount of memory it requires. Windows allocates the memory to the program ( unless system resources are very low ) and returns to the requesting program the address of the first memory slot in the allocated block. It is possible that some programs may request very large amounts of memory. The 'Memory Speed Per Block Size' test like the 'Memory Speed Per Access Step Size' test, is composed of many steps. During each step of the test, PerformanceTest requests a block of memory and runs through the block measuring the access speed. However on each subsequent step the size of the requested memory is increased, until finally a block close to the size of the system RAM is requested. In this way it is possible to observe the different access speeds for the different sizes of blocks.

Typically it is possible to see a drop in speed when the block no longer fits in level 1 cache, then again when it no longer fits in level 2 cache and goes back to main memory. In the case where system resources are low, swapping to the disk may even be required for very large blocks.

NUMA Settings
Non-uniform memory access (NUMA) is a computer memory design used on motherboards with multiple CPUs, where the memory access time depends on the memory location relative to the processor. Each CPU can have its own low latency local memory, but can still access the remote memory of other CPUs. To make good use of NUMA, software applications need to be NUMA aware and coded in a way to prefer the use of local memory over remote memory. The settings in PerformanceTest allow the user to force the RAM test to run on a particular CPU while accessing the RAM connected to another CPU.

RAM type compatibility
The PerformanceTest memory test works will different types of PC RAM, including SDRAM, EDO, RDRAM, DDR, DDR2, DDR3 & DDR4 at all bus speeds.

Graphing RAM speeds
The results of all completed tests may be graphed using our colourful custom graphing components.

RAM benchmark parameter selection

RAM benchmark graph showing memory speed