串行存在檢測
此條目翻譯自其他語言維基百科,需要相關領域的編者協助校對翻譯。 |
此條目可參照英語維基百科相應條目來擴充。 (2023年3月9日) |
串行存在檢測(英語:serial presence detect,縮寫SPD)[1]是一種訪問內存模塊有關信息的標準化方式。 早期的72 pin SIMM包括五個引腳,提供5位元並行存在檢測(PPD)數據,而168 pin DIMM標準更改為串行存在檢測,以編碼更多信息。[2]
在普通的現代電腦開機時,它將進行一次加電自檢(POST)。自從20世紀90年代中期以來,這個過程包括自動設定當前存在的硬件。SPD是一項內存硬件特性,可使電腦了解存在的內存以及訪問內存要使用的時序。
部分電腦可以完全自動地適應硬件變更。在大多數情況下,有一個特殊的可選步驟可以訪問BIOS參數,得以查看並可能更改相關設定。有些電腦可以控制如何使用SPD中存儲的數據——可以選擇性的修改內存時序,乃至完全覆蓋(忽視)SPD數據,詳見超頻。
存儲的信息
編輯對於支持SPD的內存模塊,JEDEC標準要求在內存模塊的一個EEPROM上的低128字節中存有特定參數。這些字節包括模塊相關的時序參數、製造商、序列號及其他實用信息。利用內存的設備可以讀取該信息來自動確定模塊的關鍵參數。例如,SDRAM模塊上的SPD數據可能提供有關CAS潛伏時間的信息,使系統可以自動配置而無需用戶干預。
SPD EEPROM採用SMBus訪問,這是I²C協議的一個變種。這將模塊上的通信引腳數量減少到兩個:時鐘信號和數據信號。EEPROM與RAM共享接地引腳,有自己的電源引腳,並有三個額外引腳(SA0-2)來標識該槽,用於將EEPROM分配到0x50-0x57範圍內的唯一地址。通信線路不僅可以在8個內存模塊之間共享,同一SMBus通常也用於主板上的系統健康監控任務,例如讀取電源電壓、CPU溫度和風扇速度。
(如果沒有寫保護,SPD EEPROMs也響應I²C地址0x30–0x37。一個擴展使用0x18–0x1F地址訪問可選的芯片上溫度傳感器。[3])
SDR SDRAM
編輯第一個SPD規範由JEDEC發布,並由英特爾加強,作為其PC100內存規範的一部分。[4]指定的大多數值為二進碼十進數形式。最重要的半字節可以包含10到15個值,並在某些情況下可以擴展到更高。在這種情況下, 1、2、3的編碼用於編碼16,17和18。最高的0的半字節被保留表示為「未定義」。
SPD ROM定義了最多三個DRAM時序,在字節18中用設置位指定了三個CAS延遲。首先是最高的CAS延遲(最快時鐘),然後是兩個降低時鐘速度的較低的CAS延遲。
DDR2 SDRAM
編輯DDR2 SPD標準做了一些修改,但大致同上。一個顯着變化是刪除混亂且很少使用的有兩個不同大小Rank的DIMM支持。
時間周期字段(字節9、23、25和49)以二進碼十進數(BCD)編碼,一些額外編碼以十分位定義,以正確表示一些常見時序:
DDR3 SDRAM
編輯DDR3 SDRAM標準大幅修繕,簡化了SPD內容布局。取代多個BCD編碼的納秒字段,一些「時基」單元被規定為高精度,並且各種時序參數被編碼為基本單元的倍數。[5]此外,根據CAS延遲指定不同時序的做法已被刪除,現在只有一組時序參數。
修訂1.1使一些參數表示為「中等時基」值加上(帶符號,-128 +127)「精細時基」校正。通常來說,中等時基為1/8 ns(125 ps),精細時基為1、2,5或5 ps。為了與缺少校正的早期版本兼容,中等時間基數通常向上取整,並且校正為負。以這種方式工作的值為:
模塊的存儲容量可以從字節4、7和8計算。模塊寬度(字節8)除以每個芯片的位數(字節7)得出每個rank的芯片數量。然後可以乘以每個芯片的容量(字節4)和模塊上芯片的Rank數量(通常為1或2,從字節7)。
DDR4 SDRAM
編輯擴展
編輯JEDEC標準僅規定了部分SPD字節。真正關鍵的數據放在了前64個字節[6][7][8][9][10],而其餘部分則由製造商標定。然而,通常提供的EEPROM為256字節。剩餘空間目前已有一些用途。
增強性能配置(EPP)
編輯內存通常在SPD ROM中附有保守的時序建議,以確保在所有系統上基本功能運行正常。愛好者通常會花費很多時間來手動調整內存時序以提高速度。
增強性能配置文件是一項SPD擴展,由Nvidia和Corsair開發,其中包含使DDR2 SDRAM以更高性能運行的額外信息,例如JEDEC SPD規範中不包括的供電電壓和命令時序信息。EPP信息存儲在同一個EEPROM中,不過字節在99-127,屬於DDR2 SPD標準中的未使用區域。[11]
這些參數專為nForce 5、nForce 6和nForce 7芯片組上的內存控制器設計。Nvidia鼓勵在BIOS為其高端主板芯片組支持EPP。此能旨在提供「一鍵超頻」,以最小的努力取得更佳性能。
Nvidia為性能和穩定性得到認證的EPP內存提供的名稱是「SLI-Ready 內存」。[12]術語「SLI-Ready 內存」引起了一些混亂,因為這與NVIDIA SLI無關。用戶可以使用單個視頻卡(哪怕非Nvidia卡)搭配EPP/SLI內存,也可以在沒有EPP/SLI內存的情況下運行多卡SLI視頻配置。
其擴展版本EPP 2.0則支持DDR3內存。[13]
Extreme Memory Profile(XMP)
編輯與之類似的是,英特爾為DDR3 SDRAM DIMM開發了一個JEDEC SPD擴展。它使用JEDEC未分配的字節176-255來編碼更高性能的內存時序。中文也稱「擴展內存配置」[14] 頭部包含下列數據。其中最重要的是「中等時基」值MTB,它是一個合理的納秒(常用值為1/8、1/12和1/16 納秒)。之後的許多時序值都以整數個MTB單位表示。
頭部還包括該配置文件旨在支持的每個內存通道的DIMM數量;更多的DIMM可能無法正常工作。
AMD也開發了一個SPD擴充集名為AMP,功用與XMP一樣。[15]
供應商指定內存
編輯一種常見的濫用是將信息寫入某些內存區域,以將特定供應商的內存模塊綁定到特定系統。已知富士通技術解決方案有這樣做。向系統添加不同的內存模塊通常會導致拒絕運行或其他反制措施(例如每次啟動時需按F1)。
02 0E 00 01-00 00 00 EF-02 03 19 4D-BC 47 C3 46 ...........M.G.F 53 43 00 04-EF 4F 8D 1F-00 01 70 00-01 03 C1 CF SC...O....p.....
這是一個美光科技512 MB內存模塊的輸出,它的品牌是富士通西門子,注意「FSC」字符串。該系統BIOS拒絕從偏移128h開始沒有此信息的內存模塊。
讀取和寫入SPD信息
編輯內存模塊製造商會將SPD信息寫入模塊上的EEPROM。主板BIOS則讀取SPD信息來配置內存控制器。在大多數(但不是所有)主板芯片組中,存在多個能讀取和修改SPD信息的程序。
- dmidecode(頁面存檔備份,存於網際網路檔案館)程序可以解碼內存(及其他)有關信息,可以在Linux、FreeBSD、NetBSD、OpenBSD、BeOS、Cygwin和Solaris上運行。dmidecode不直接訪問SPD信息;它會報告有關內存的BIOS數據。[16]此信息可能受限或不正確。
- 在Linux系統上,使用者空間程序decode-dimms可以以i2c-tools[17][18]解碼和印出計算機中任何有SPD信息的內存信息。它需要內核中支持SMBus控制器、EEPROM內核驅動,並且SPD EEPROM已連接到SMBus。在舊的Linux發行版上,decode-dimms.pl作為lm_sensors的一部分可用。
- OpenBSD自4.3版本起包含驅動程序spdmem(4)[永久失效連結]來提供有關內存模塊的信息。該驅動程序從NetBSD移植(自5.0版本可用)。
- Coreboot讀取和使用SPD信息來初始計算機中的所有內存控制器的時序、大小及其他屬性。
- Windows上使用如HWiNFO32[19]、CPU-Z或Speccy軟件可以讀取和顯示SPD中的DRAM模塊信息。
使用eeprom編程器硬件和軟件直接訪問內存的EEPROM,可以直接讀寫SPD信息,而無需關心芯片組。
對於舊筆記本電腦來說,一種不太常見的用法是通用的SMBus讀取器,因為BIOS可以在讀取後禁用模塊上的內部EEPROM,因此總線基本上可以使用[需要解釋]。所用方法是將A0、A1線拉低,使內部存儲器關閉,從而允許外部設備訪問SMBus。完成此操作後,定製的Linux版本或DOS應用程序就可以訪問外部設備。這樣做的一個常見目的是從LCD面板的內存芯片中恢復數據,將通用面板改裝為筆記本電腦專用。
在舊設備
編輯部分較舊的設備必需使用具有並行存在檢測(常稱為簡單存在檢測,或縮寫PD)的SIMM。這些設備中部分使用非標準的PD編碼,尤其是如IBM計算機、惠普LaserJet,及其他一些打印機。
參見
編輯參考資料
編輯- ^ JEDEC发布DDR3串行存在检测规格文档. EDN電子技術設計. 2011-09-05 [2017-05-07]. (原始內容存檔於2019-02-21).
- ^ Thomas P. Koenig; Nathan John, Serial Presence Detection poised for limelight, Electronic News, 1997-02-03, 43 (2153) [2017-05-07], (原始內容存檔於2015-05-03)
- ^ JEDEC Standard 21-C section 4.1.4 "Definition of the TSE2002av Serial Presence Detect (SPD) EEPROM with Temperature Sensor (TS) for Memory Module Applications"
- ^ Application note INN-8668-APN3: SDRAM SPD Data Standards (頁面存檔備份,存於網際網路檔案館), memorytesters.com
- ^ Understanding DDR3 Serial Presence Detect (SPD) Table. [2017-05-07]. (原始內容存檔於2015-12-22).
- ^ JEDEC Standard 21-C section 4.1.2.4 (頁面存檔備份,存於網際網路檔案館) "SPDs for DDR SDRAM"
- ^ JEDEC Standard 21-C section 4.1.2.10 (頁面存檔備份,存於網際網路檔案館) "Specific SPDs for DDR2 SDRAM"
- ^ JEDEC Standard 21-C section 4.1.2.11 "Serial Presence Detect (SPD) for DDR3 SDRAM Modules"
- ^ JEDEC Standard 21-C section 4.1.2 (頁面存檔備份,存於網際網路檔案館) "SERIAL PRESENCE DETECT STANDARD, General Standard"
- ^ JEDEC Standard 21-C section 4.1.2.5 (頁面存檔備份,存於網際網路檔案館) "Specific PDs for Synchronous DRAM (SDRAM)"
- ^ DDR2 UDIMM Enhanced Performance Profiles Design Specification (PDF), Nvidia, 2006-05-12 [2009-05-05], (原始內容存檔 (PDF)於2020-02-21)
- ^ SLI-Ready Memory with Enhanced Performance Profiles One-Click Hassle-Free Memory Performance Boost (PDF). [2017-05-07]. (原始內容存檔 (PDF)於2020-02-21).
- ^ Enhanced Performance Profiles 2.0 (頁面存檔備份,存於網際網路檔案館) (pages 2–3)
- ^ Intel Extreme Memory Profile (Intel XMP) DDR3 Technology (PDF). [2017-05-07]. (原始內容存檔 (PDF)於2010-01-05).
- ^ AMD 平台也有 XMP 記憶體超頻,這是怎麼一回事?. [2018-06-11]. (原始內容存檔於2020-11-05).
- ^ dmidecode: What's it good for?. [2017-05-07]. (原始內容存檔於2011-05-22).
- ^ decode-dimms Perl program. [2017-05-07]. (原始內容存檔於2008-12-02).
- ^ I2CTools – lm-sensors. Lm-sensors.org. [2014-08-14]. (原始內容存檔於2012-03-11).
- ^ HWiNFO32. [2017-05-07]. (原始內容存檔於2020-12-11).
外部連結
編輯- Serial Presence Detect Standard, General Standard
- SPD Rev1.0 for DDR SDRAM(頁面存檔備份,存於網際網路檔案館)
- SPD Rev1.2 for DDR2 SDRAM(頁面存檔備份,存於網際網路檔案館)
- SPD Rev1.3 for DDR2 SDRAM
- SPECIALITY DDR2-1066 SDRAM(頁面存檔備份,存於網際網路檔案館)
- Linux軟件包i2c-tools
- Instructions on how to use lm-sensors or i2c-tools to read the data
- Memory Performance: 16GB DDR3-1333 to DDR3-2400 on Ivy Bridge IGP with G.Skill(頁面存檔備份,存於網際網路檔案館) – explanation of various timing values