How to check RAM Timings and SPD information on Linux

By | December 2, 2023

Ram timings are technical specs about ram modules that are installed in laptops or desktops. These number indicate the performance of the ram module interms of how fast they can read and write data.

The appear as 4 number set separated by a hyphen, for example like this: 16-16-16-39. Now these numbers tell us how fast the ram would potentially be able to handle data read/write requests from the cpu.

The timings are indicative of clock cycles required for circuit level operations inside the ram module, and usually higher timing means slower performance. So ideally you want ram with low timings. But yes faster ram is also more expensive.

On Windows there are plenty of gui tools to check the ram timings for example Rammon, HwInfo, CPU-Z etc. However on Linux there are limited gui tools for this feature. However there are commond line tools that can report ram timings

Get memory module info on Linux

On linux there are multiple commands to show memory module information including decode-dimms and dmidecode. In this particular we shall be check the decode-dimms command that comes from the i2c-tools package on ubuntu/debian linux.

The decode-dimms command can be used to get or extract the following information about ram modules:

  • Memory Timings
  • RAM Manufacturer Details
  • RAM Model or Part Number
  • RAM DDR Type

Instal i2c-tools

The first step is to install the i2c-tools package and then load the eeprom module from it.

sudo apt-get install i2c-tools
sudo modprobe eeprom

Now you can run the decode-dimms command and get the spd information the ram's spd eeprom chips.

decode-dimms

According to the man page for decode-dimms: "decode-dimms - decode the information found in memory module SPD EEPROMs". So its pretty self explanatory. We shall try running this command on multiple systems like desktops and laptops all of which are physical hardware located near me.

Command Examples - decode-dimms

In this example we shall run decode-dimms command on multiple systems and compare the output, to estimate the performance of the ram module. In general faster ram means faster read/write speeds and overall better system performance.

1. Ubuntu system

The first one is a Ubuntu desktop machine with Gigabyte motherboard and Corsair ram (2400 MT/s-DDR) in 16G+16G configuration with identical sticks. Lets run the decode-dimms command and see the output:

$ 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


Decoding EEPROM: /sys/bus/i2c/drivers/ee1004/0-0050
Guessing DIMM is in                              bank 1
Kernel driver used                               ee1004

---=== SPD EEPROM Information ===---
EEPROM CRC of bytes 0-125                        OK (0x085B)
# of bytes written to SDRAM EEPROM               384
Total number of bytes in EEPROM                  512
Fundamental Memory type                          DDR4 SDRAM
SPD Revision                                     1.0
Module Type                                      UDIMM
EEPROM CRC of bytes 128-253                      OK (0x27DE)

---=== 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

---=== Timings at Standard Speeds ===---
AA-RCD-RP-RAS (cycles) as DDR4-2400              16-16-16-39
AA-RCD-RP-RAS (cycles) as DDR4-2133              15-15-15-35
AA-RCD-RP-RAS (cycles) as DDR4-1866              13-13-13-31
AA-RCD-RP-RAS (cycles) as DDR4-1600              11-11-11-26

---=== Timing Parameters ===---
Minimum Cycle Time (tCKmin)                      0.833 ns
Maximum Cycle Time (tCKmax)                      1.500 ns
Minimum CAS Latency Time (tAA)                   13.320 ns
Minimum RAS to CAS Delay (tRCD)                  13.320 ns
Minimum Row Precharge Delay (tRP)                13.320 ns
Minimum Active to Precharge Delay (tRAS)         32.375 ns
Minimum Active to Auto-Refresh Delay (tRC)       45.810 ns
Minimum Recovery Delay (tRFC1)                   350.000 ns
Minimum Recovery Delay (tRFC2)                   260.000 ns
Minimum Recovery Delay (tRFC4)                   160.000 ns
Minimum Four Activate Window Delay (tFAW)        22.000 ns
Minimum Row Active to Row Active Delay (tRRD_S)  4.160 ns
Minimum Row Active to Row Active Delay (tRRD_L)  5.820 ns
Minimum CAS to CAS Delay (tCCD_L)                5.356 ns

---=== Other Information ===---
Package Type                                     Monolithic
Maximum Activate Count (MAC)                     Unlimited
Post Package Repair                              Not supported
Module Nominal Voltage                           1.2 V
Thermal Sensor                                   No

---=== Physical Characteristics ===---
Module Height                                    32 mm
Module Thickness                                 2 mm front, 2 mm back
Module Reference Card                            B revision 0

---=== Manufacturer Data ===---
Module Manufacturer                              Corsair
DRAM Manufacturer                                Micron Technology
Part Number                                      CMK16GX4M1A2400C16  


Decoding EEPROM: /sys/bus/i2c/drivers/ee1004/0-0052
Guessing DIMM is in                              bank 3
Kernel driver used                               ee1004

---=== SPD EEPROM Information ===---
EEPROM CRC of bytes 0-125                        OK (0x085B)
# of bytes written to SDRAM EEPROM               384
Total number of bytes in EEPROM                  512
Fundamental Memory type                          DDR4 SDRAM
SPD Revision                                     1.0
Module Type                                      UDIMM
EEPROM CRC of bytes 128-253                      OK (0x27DE)

---=== 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

---=== Timings at Standard Speeds ===---
AA-RCD-RP-RAS (cycles) as DDR4-2400              16-16-16-39
AA-RCD-RP-RAS (cycles) as DDR4-2133              15-15-15-35
AA-RCD-RP-RAS (cycles) as DDR4-1866              13-13-13-31
AA-RCD-RP-RAS (cycles) as DDR4-1600              11-11-11-26

---=== Timing Parameters ===---
Minimum Cycle Time (tCKmin)                      0.833 ns
Maximum Cycle Time (tCKmax)                      1.500 ns
Minimum CAS Latency Time (tAA)                   13.320 ns
Minimum RAS to CAS Delay (tRCD)                  13.320 ns
Minimum Row Precharge Delay (tRP)                13.320 ns
Minimum Active to Precharge Delay (tRAS)         32.375 ns
Minimum Active to Auto-Refresh Delay (tRC)       45.810 ns
Minimum Recovery Delay (tRFC1)                   350.000 ns
Minimum Recovery Delay (tRFC2)                   260.000 ns
Minimum Recovery Delay (tRFC4)                   160.000 ns
Minimum Four Activate Window Delay (tFAW)        22.000 ns
Minimum Row Active to Row Active Delay (tRRD_S)  4.160 ns
Minimum Row Active to Row Active Delay (tRRD_L)  5.820 ns
Minimum CAS to CAS Delay (tCCD_L)                5.356 ns

---=== Other Information ===---
Package Type                                     Monolithic
Maximum Activate Count (MAC)                     Unlimited
Post Package Repair                              Not supported
Module Nominal Voltage                           1.2 V
Thermal Sensor                                   No

---=== Physical Characteristics ===---
Module Height                                    32 mm
Module Thickness                                 2 mm front, 2 mm back
Module Reference Card                            B revision 0

---=== Manufacturer Data ===---
Module Manufacturer                              Corsair
DRAM Manufacturer                                Micron Technology
Part Number                                      CMK16GX4M1A2400C16  


Number of SDRAM DIMMs detected and decoded: 2
$

The currently active ram timings and speed is indicated in the section titled Memory Characteristics :

---=== Memory Characteristics ===---
Maximum module speed                             2400 MT/s (PC4-19200)
...
AA-RCD-RP-RAS (cycles)                           16-16-16-39
...

The SPD timings supported by the ram modules is shown by this particular section titled, Timings at Standard Speeds:

---=== Timings at Standard Speeds ===---
AA-RCD-RP-RAS (cycles) as DDR4-2400              16-16-16-39
AA-RCD-RP-RAS (cycles) as DDR4-2133              15-15-15-35
AA-RCD-RP-RAS (cycles) as DDR4-1866              13-13-13-31
AA-RCD-RP-RAS (cycles) as DDR4-1600              11-11-11-26

And the ram module is actively running in this particular timing configuration:

DDR4-2400              16-16-16-39

From the output we are able to check a lot of information about the ram modules like, the brand, module, total memory size, number of ranks, lots of timing parameters and other useful information.

Note that there are 2 sections with similar information because there are 2 sticks of ram present. The sections start with the following lines

Decoding EEPROM: /sys/bus/i2c/drivers/ee1004/0-0050
Guessing DIMM is in                              bank 1
...
Decoding EEPROM: /sys/bus/i2c/drivers/ee1004/0-0052
Guessing DIMM is in                              bank 3
...

Looking at this data it is not possible to tell whether the ram is in separate channels or same channels. If you need to check the channel of each memory module then use the dmidecode command and fetch the memory details like this:

sudo dmidecode -t memory

Look for the "locator" field to know which channel each ram stick is in.

Can also use the lshw command for memory channel details.

sudo lshw -class memory

This tells us that the ram sticks are installed in 2 channels which matches with the actual hardware configuration. Good job here!

Check RAM DDR Type

Look at the field titled Fundamental Memory type. It tells about the ram ddr type, which in this case is DDR4.

Fundamental Memory type                          DDR4 SDRAM

Check RAM Manufacturer

To check the ram manufacturer details check the section titled "Manufacturer Data" in the decode-dimms command output. It shows the RAM chip manufacturer, the module manufacturer and the specific model or part number.

---=== Manufacturer Data ===---
Module Manufacturer                              Corsair
DRAM Manufacturer                                Micron Technology
Part Number                                      CMK16GX4M1A2400C16

In the above output, Micron is manufacturer of the dram chips, corsair is the maker of the full ram stick (memory module) and the part number indicates the specific model. We can then lookup further details online using the part number.

Note that the full manufacturer details may not always be present in the spd data.

2. Asus TUF A17

The next machine that we are testing is an Asus TUF A17 gaming laptop with 16GB ram in 8G+8G configuration.

ubuntu@ubuntu:~$ 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
WARNING: /sys/bus/i2c/drivers/eeprom/1-0050/eeprom is smaller than expected
WARNING: Fewer data bytes available (256) than needed (384)
HINT: You should be using the ee1004 driver instead of the eeprom driver
WARNING: /sys/bus/i2c/drivers/eeprom/1-0051/eeprom is smaller than expected
WARNING: Fewer data bytes available (256) than needed (384)
HINT: You should be using the ee1004 driver instead of the eeprom driver


Decoding EEPROM: /sys/bus/i2c/drivers/eeprom/1-0050
Guessing DIMM is in                              bank 1
Kernel driver used                               eeprom

---=== SPD EEPROM Information ===---
EEPROM CRC of bytes 0-125                        OK (0x2850)
# of bytes written to SDRAM EEPROM               384
Total number of bytes in EEPROM                  512
Fundamental Memory type                          DDR4 SDRAM
SPD Revision                                     1.1
Module Type                                      SO-DIMM
EEPROM CRC of bytes 128-253                      OK (0xE2C0)

---=== 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

---=== Timings at Standard Speeds ===---
AA-RCD-RP-RAS (cycles) as DDR4-3200              22-22-22-52
AA-RCD-RP-RAS (cycles) as DDR4-2933              21-21-21-47
AA-RCD-RP-RAS (cycles) as DDR4-2666              19-19-19-43
AA-RCD-RP-RAS (cycles) as DDR4-2400              17-17-17-39
AA-RCD-RP-RAS (cycles) as DDR4-2133              15-15-15-35
AA-RCD-RP-RAS (cycles) as DDR4-1866              13-13-13-30
AA-RCD-RP-RAS (cycles) as DDR4-1600              11-11-11-26

---=== Timing Parameters ===---
Minimum Cycle Time (tCKmin)                      0.625 ns
Maximum Cycle Time (tCKmax)                      1.600 ns
Minimum CAS Latency Time (tAA)                   13.750 ns
Minimum RAS to CAS Delay (tRCD)                  13.750 ns
Minimum Row Precharge Delay (tRP)                13.750 ns
Minimum Active to Precharge Delay (tRAS)         32.000 ns
Minimum Active to Auto-Refresh Delay (tRC)       45.750 ns
Minimum Recovery Delay (tRFC1)                   350.000 ns
Minimum Recovery Delay (tRFC2)                   260.000 ns
Minimum Recovery Delay (tRFC4)                   160.000 ns
Minimum Four Activate Window Delay (tFAW)        30.000 ns
Minimum Row Active to Row Active Delay (tRRD_S)  5.300 ns
Minimum Row Active to Row Active Delay (tRRD_L)  6.400 ns
Minimum CAS to CAS Delay (tCCD_L)                5.000 ns
Minimum Write Recovery Time (tWR)                15.000 ns
Minimum Write to Read Time (tWTR_S)              2.500 ns
Minimum Write to Read Time (tWTR_L)              7.500 ns

---=== Other Information ===---
Package Type                                     Monolithic
Maximum Activate Count (MAC)                     Unlimited
Post Package Repair                              One row per bank group
Soft PPR                                         Supported
Module Nominal Voltage                           1.2 V
Thermal Sensor                                   No

---=== Physical Characteristics ===---
Module Height                                    30 mm
Module Thickness                                 2 mm front, 1 mm back
Module Reference Card                            C revision 0


Decoding EEPROM: /sys/bus/i2c/drivers/eeprom/1-0051
Guessing DIMM is in                              bank 2
Kernel driver used                               eeprom

---=== SPD EEPROM Information ===---
EEPROM CRC of bytes 0-125                        OK (0x2850)
# of bytes written to SDRAM EEPROM               384
Total number of bytes in EEPROM                  512
Fundamental Memory type                          DDR4 SDRAM
SPD Revision                                     1.1
Module Type                                      SO-DIMM
EEPROM CRC of bytes 128-253                      OK (0xE2C0)

---=== 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

---=== Timings at Standard Speeds ===---
AA-RCD-RP-RAS (cycles) as DDR4-3200              22-22-22-52
AA-RCD-RP-RAS (cycles) as DDR4-2933              21-21-21-47
AA-RCD-RP-RAS (cycles) as DDR4-2666              19-19-19-43
AA-RCD-RP-RAS (cycles) as DDR4-2400              17-17-17-39
AA-RCD-RP-RAS (cycles) as DDR4-2133              15-15-15-35
AA-RCD-RP-RAS (cycles) as DDR4-1866              13-13-13-30
AA-RCD-RP-RAS (cycles) as DDR4-1600              11-11-11-26

---=== Timing Parameters ===---
Minimum Cycle Time (tCKmin)                      0.625 ns
Maximum Cycle Time (tCKmax)                      1.600 ns
Minimum CAS Latency Time (tAA)                   13.750 ns
Minimum RAS to CAS Delay (tRCD)                  13.750 ns
Minimum Row Precharge Delay (tRP)                13.750 ns
Minimum Active to Precharge Delay (tRAS)         32.000 ns
Minimum Active to Auto-Refresh Delay (tRC)       45.750 ns
Minimum Recovery Delay (tRFC1)                   350.000 ns
Minimum Recovery Delay (tRFC2)                   260.000 ns
Minimum Recovery Delay (tRFC4)                   160.000 ns
Minimum Four Activate Window Delay (tFAW)        30.000 ns
Minimum Row Active to Row Active Delay (tRRD_S)  5.300 ns
Minimum Row Active to Row Active Delay (tRRD_L)  6.400 ns
Minimum CAS to CAS Delay (tCCD_L)                5.000 ns
Minimum Write Recovery Time (tWR)                15.000 ns
Minimum Write to Read Time (tWTR_S)              2.500 ns
Minimum Write to Read Time (tWTR_L)              7.500 ns

---=== Other Information ===---
Package Type                                     Monolithic
Maximum Activate Count (MAC)                     Unlimited
Post Package Repair                              One row per bank group
Soft PPR                                         Supported
Module Nominal Voltage                           1.2 V
Thermal Sensor                                   No

---=== Physical Characteristics ===---
Module Height                                    30 mm
Module Thickness                                 2 mm front, 1 mm back
Module Reference Card                            C revision 0


Number of SDRAM DIMMs detected and decoded: 2
ubuntu@ubuntu:~$

This is the section which shows clock speed and compatible timings, and tells us how the ram will likely perform. The ram on this laptop supports lots of clock speeds and timing settings. Note that with faster clock speed the timings also increase to keep the data operations stable and reliable.

---=== Timings at Standard Speeds ===---
AA-RCD-RP-RAS (cycles) as DDR4-3200              22-22-22-52
AA-RCD-RP-RAS (cycles) as DDR4-2933              21-21-21-47
AA-RCD-RP-RAS (cycles) as DDR4-2666              19-19-19-43
AA-RCD-RP-RAS (cycles) as DDR4-2400              17-17-17-39
AA-RCD-RP-RAS (cycles) as DDR4-2133              15-15-15-35
AA-RCD-RP-RAS (cycles) as DDR4-1866              13-13-13-30
AA-RCD-RP-RAS (cycles) as DDR4-1600              11-11-11-26

Though the ram operates at 3200 MT/s the timings are quite high. Comparing it with the 2400 MT/s memory on the ubuntu desktop, their performance will be close and will not have a huge difference.

DDR4-3200              22-22-22-52
DDR4-2400              17-17-17-39

3. Acer Swift 3

This Acer Swift 3 laptop has 16GB of ram in 8G+8G configuration, but the ram is not slotted dimm. It is onboard ram. In case of onboard soldered ram, the spd information is not available, so the decode-dimms command won't show much information.

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
acerlight@acerlight-laptop:~$

However there are other ways to find the memory timing information. For example, the cpu-z windows utility might show the timing information. On this particular laptop the timings (as shown by cpu-z) are :

36-39-39-90

Comparing the Timings and Speed

Once we know the DDR4-speed and timings, we can estimate the latency using the following equation:

Absolute latency = (CAS latency*2000) / Frequency

The latency is an indication (not an exact measure) of how fast or slow the ram is. Lower timings means faster ram and vice-versa.

Machine 2400 MT/s 3200 MT/s 4267 MT/s
ubuntu 16-16-16-39 (13.3ns) -
asus tuf a17 17-17-17-39 22-22-22-52 (13.8ns)
acer swift 3 - - 36-39-39-90 (10.3)
acer aspire 5 - 22-22-22-52 (13.8ns) -

Links and Resources

https://en.wikipedia.org/wiki/Memory_timings - Wikipedia page explaining Memory Timing numbers on RAM modules.

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 *