How to check Ram Rank and Bank details in Linux – decode-dimms

By | May 20, 2023

The decode-dimms program from i2c-tools package can be used to extract spd information from the ram modules which provides details about the module including the timings, clock speed, internal layout of the memory blocks including rank and bank count.

The command can be installed with the following commands:

sudo apt-get install i2c-tools
sudo modprobe eeprom    
decode-dimms

The number of ranks and banks determines the performance of the ram module. In general more ranks are better, and fewer banks are better. For example:

Test Results

1. Ubuntu desktop system

The ram setup on this system is:

Size: 16G+16G (Dual Channel)
Timings: 16-16-16-39
Clock: 2400 MT/s

Now run the program as follows:

decode-dimms

The command output a lengthy page of information, but we are interested in the section titled: "Memory Characteristics". It should look something like this:

---=== Memory Characteristics ===---
Maximum module speed                             2400 MT/s (PC4-19200)
Size                                             16384 MB
Banks x Rows x Columns x Bits                    16 x 16 x 10 x 64
SDRAM Device Width                               8 bits
Ranks                                            2
Rank Mix                                         Symmetrical
Primary Bus Width                                64 bits
AA-RCD-RP-RAS (cycles)                           16-16-16-39
Supported CAS Latencies                          25T, 20T, 19T, 18T, 17T, 16T, 15T, 14T, 13T, 12T, 11T, 10T, 9T

The following lines are of interest:

Banks x Rows x Columns x Bits: 16 x 16 x 10 x 64
Ranks: 2
SDRAM Device Width: 8 bits

The output above shows there are 2 Ranks and total of 16 Banks (in each rank).
Device width is 8-bit, so this is a 2Rx8 ram module.

The total size of the memory on each module (stick) can be calculated with the following formula:

Nos of Ranks x Nos of banks x Nos of Rows x Nos of Columns x Nos of bytes = Total memory size of ram stick (DIMM Module)

We can use the above information to calculate the total memory size on this stick as follows:

2 (ranks) x 16 (banks) x 2^16 (rows) x 2^10 (columns) x 64/8 BYTES = 16 GigaBytes

2. Machine 2: Asus TUF A17

Size: 8G+8G (Dual Channel)
Timings: 22-22-22-52
Clock: 3200 MT/s
---=== Memory Characteristics ===---
Maximum module speed                             3200 MT/s (PC4-25600)
Size                                             8192 MB
Banks x Rows x Columns x Bits                    8 x 17 x 10 x 64
SDRAM Device Width                               16 bits
Ranks                                            1
Primary Bus Width                                64 bits
AA-RCD-RP-RAS (cycles)                           22-22-22-52
Supported CAS Latencies                          28T, 26T, 25T, 24T, 23T, 22T, 21T, 20T, 19T, 18T, 17T, 16T, 15T, 14T, 13T, 12T, 11T, 10T

On this laptop we have 2 identical ram sticks and each one has the following configuration:

Banks x Rows x Columns x Bits: 8 x 17 x 10 x 64
Ranks: 1

The memory is arranged in 1 Rank with 8 Banks. So this is a 1Rx8 memory.

Applying the earlier formula:

1 (ranks) x 8 (banks) x 2^17 (rows) x 2^10 (columns) x 64/8 BYTES = 8 Giga Bytes

1Rx8 performs better compared to 2Rx16

Onboard ram - No SPD available

Laptops with onboard soldered ram will not have any spd information available, so this command would fail. For example my Acer Swift 3 laptop has 16gb onboard ram and running the decode-dimms command shows the following:

acerlight@acerlight-laptop:~$ decode-dimms 
# decode-dimms version 4.3

Memory Serial Presence Detect Decoder
By Philip Edelbrock, Christian Zuckschwerdt, Burkart Lingner,
Jean Delvare, Trent Piepho and others


Number of SDRAM DIMMs detected and decoded: 0
$

Then you have to look for other ways to find the memory timing information. For example, the cpu-z windows utility might show some of the timing information, however rank and bank details might be totally inaccessible.

More Ranks = Better performance

The number of ranks of a memory module (dimm) affects its performance. In general more ranks are better and a dual rank ram module will have better read/write speeds compared to single rank modules.

Ranks are basically groups of memory blocks that can be accessed independantly. So dual rank means memory on 2 groups. The rank is usually selected with the

This is because dual rank memory modules have partial-parallelism internally. For instance when the module is waiting for data to be read from one rank, it can perform another operation on another rank without waiting. Though this will not double the performance, it will certainly boost it by a noticeable factor.

Links and Resources

https://en.wikipedia.org/wiki/Memory_rank - Wikipedia article explaining memory ranks.
https://en.wikipedia.org/wiki/Serial_presence_detect#DDR4_SDRAM

About Silver Moon

A Tech Enthusiast, Blogger, Linux Fan and a Software Developer. Writes about Computer hardware, Linux and Open Source software and coding in Python, Php and Javascript. He can be reached at [email protected].

Leave a Reply

Your email address will not be published. Required fields are marked *