在每一個記憶體模組上面都會有一塊 SPD(Serial presence detect) 他是一塊容量為256 字元(bytes) 的 EEPROM(Electrically Erasable Programmable Read Only Memory). 主要記載了該憶體模組的資訊,如:RAS to CAS Delay,CL(CAS Latency),Refresh 等時脈參數.主要可以讓系統開機時, BIOS 可以直接讀取記記體的 SPD 資訊不用再對記憶體進行偵測等動作.
圖片出自於 http://www.synnex.com.tw/asp/images/Info174661.jpg
紅色框框為 SPD EEPROM ,但每一家的記憶體的 SPD 位置均不相同.且 SPD 是一顆 I²C EEPROM.雖然部份 SPD 可以透過 BIOS 的設定環境去查詢,但 SPD 的資料不會完全顯示在 BIOS 設定中,此時我們可以在 Linux 底下透過 I²C (I2C)的方式去讀取該 SPD 的資訊
那在 Linux 要讀取 I²C 要用什麼方式呢!!我們可以透過 lm_sensors 所提供的 decode-dimms.pl 這一支工具去查詢這些資料.
[root@benjr ~]# yum install lm_sensors [root@benjr ~]# modprobe eeprom [root@benjr ~]# decode-dimms.pl Memory Serial Presence Detect Decoder By Philip Edelbrock, Christian Zuckschwerdt, Burkart Lingner, Jean Delvare and others Version 2.10.6 Decoding EEPROM: /sys/bus/i2c/drivers/eeprom/0-0050 Guessing DIMM is in bank 1 —=== SPD EEPROM Information ===— EEPROM Checksum of bytes 0-62 OK (0x4D) # of bytes written to SDRAM EEPROM 128 Total number of bytes in EEPROM 256 Fundamental Memory type DDR2 SDRAM SPD Revision 1.2 —=== Memory Characteristics ===— Maximum module speed 800MHz (PC2-6400) Size 512 MB tCL-tRCD-tRP-tRAS 6-6-6-18 Supported CAS Latencies 6, 5, 4 Minimum Cycle Time (CAS 6) 2.5 ns Maximum Access Time (CAS 6) 0.4 ns Minimum Cycle Time (CAS 5) 3 ns Maximum Access Time (CAS 5) 0.45 ns Minimum Cycle Time (CAS 4) 3.75 ns Maximum Access Time (CAS 4) 0.5 ns —=== Manufacturing Information ===— Manufacturer Elpida Manufacturing Location Code L Part Number EBE51ED8AJWA-8G-E Revision Code 0×3020 Manufacturing Date 2007-W49 Assembly Serial Number 0xB0A0BAA5 …略 Number of SDRAM DIMMs detected and decoded: 4
上面會顯示出所有 bank 的記憶體模組的 SPD 資料.每個 bank 的資料內容大致一樣.不過使用 decode-dimms.p 並不會顯示出所有 SPD 的資訊l我們可以使用 Memtest86+ https://benjr.tw/491 他可以直接把記憶體模組的 SPD 資料 dump 出來 ,不過工具所顯示出的是 SPD Raw data ,需要自行查詢各欄位所代表的意義,我們可以參考 wiki SPD 的說明 http://en.wikipedia.org/wiki/Serial_presence_detect
不過新版的 lm_sensors 已經將這些工具獨立成單一個套件 I2C tools, 這套件包含了 a bus probing tool, a chip dumper, register-level SMBus access helpers, EEPROM decoding scripts, EEPROM programming tools, 以及 a python module for SMBus access. 有興趣的可以上 Lm-sensors 的官方網站做查詢. http://www.lm-sensors.org/wiki/I2CTools
[root@benjr ~]# yum install i2c-tools
不過目前這一支工具只能用來看 SDRAM DIMM ,像是 RDIMM 是無法透過它來讀取 SPD.
關於 i2c-tools 的使用請參考 https://benjr.tw/93901
關於 SPD 的官方網頁 JEDEC(Joint Electron Device Engineering Council) 如下 http://www.jedec.org/
2 thoughts on “Linux – DIMM SPD”