本文從底層往上搞懂內存的物理結構。
1.Bank
在芯片的內部,內存的數據是以位(bit)為單位寫入一張大的矩陣中,每個單元我們稱為CELL,只要指定一個行(Row),再指定一個列(Column),就可以準確地定位到某個CELL,這就是內存芯片尋址的基本原理。這個陣列我們就稱為內存芯片的BANK。
2.Bank Group
隨着顆粒容量提升,bank數越來越多,到DDR4時出現Bank Group,我們可以理解為,將多個Bank編成一個組,這個組就是Bank Group。
3. 內存顆粒
圖中的黑色芯片就是內存顆粒,英文一般稱為Chip。
一般來説一個內存顆粒的大小=每個BANK的格子數 × BANK數 × 芯片位寬
若為DDR4/5,則DDR4/DDR5顆粒容量 = 每個BANK的格子數 × BANK數 × 芯片位寬 x BankGroup數 。 因為從DDR4開始才出現BankGroup.
4. Rank
存條上可不止一個內存顆粒,一般都是由很多內存顆粒共同組成一根內存條。
我們知道,CPU與內存之間的數據接口位寬是64bit,也就意味着CPU在一個時鐘週期內會向內存發送或從內存讀取64bit的數據。
可是,單個內存顆粒的位寬僅有4bit、8bit或16bit,個別也有32bit的。顯然發送方和接收方的位寬必須一致,不能説我發了64位數據出來,你才收到前面的16位,後面的就丟掉了。因此,必須把多個顆粒並聯起來,組成一個位寬為64bit的數據集合,才可以和CPU互連。
多個顆粒組成當前內存通道的位寬,這個位寬集合,稱之為一個RANK。
比如,128MB內存芯片,其位寬為8bit,那麼需要8塊芯片才能組成64bit位寬,將這些芯片焊接到一塊DIMM上,插到主板上就可以使用了。這時,該DIMM的總容量就是128MB*8=1GB。
不同類型DDR,其通道位寬不一樣,如:
• 在DDR3、DDR4上內存通道位寬為64bit。
• DDR5上,單根DIMM雙通道,每個通道位寬為32bit。
如下圖,8個ddr4內存芯片組成一個RANK
5.DIMM
為了保證和CPU的溝通,一個DIMM(內存模組)中至少要有一個RANK。但是,為了保證有一定的內存容量,經常是採用一個DIMM兩個RANK的結構,即內存條的正反面都有內存芯片。
同一個RANK內部的所有內存顆粒chips,連接到同一個CS(Chip Select,片選)信號線上,內存控制器能夠對同一個RANK的所有chips同時進行讀寫操作,RANK內部的所有內存顆粒一起被選中,共提供64bit的數據。
6. CHANNEL
內存控制器(Memory Controller)是計算機系統內部控制內存並且負責內存與CPU之間數據交換的重要組成部分。早期存在於北橋芯片中, 現大部分併入CPU中。
,
CHANNEL即內存通道,一個內存控制器中可能有一個內存通道,也可能有兩個內存通道。最常見的是雙通道,民用級電腦都支持,即2*64bit,服務器還有3通道和4通道等。
DDR3/DDR4內存通道
一般桌面級處理器都使用一個雙通道的內存控制器或者説是兩個內存控制器,簡單來説就是有兩條平行、寬度均為64-bit的路可以用來跑去內存存取數據,一條路就是1個channel(通道)。一般一個內存通道,可以連接若干個DIMM。
DDR3/DDR4的內存通道,如下圖所示:
2、DDR5內存通道
DDR5不會為每個DIMM提供一個64位數據通道,而是為每個DIMM提供兩個獨立的32位數據通道(考慮ECC時為40位)。一個DDR5內存控制器,對應2個通道,每個通道32bit。這2個通道一起向一根DIMM累計提供64bit的數據訪問。
與傳統的DDR4雙通道相比,一個DDR5內存控制器對應2個通道,2個DDR5內存控制器就對應4個通道。説的更直白就是,DDR4需要至少2根DIMM才能組成雙通道;DDR5一根DIMM就可以組成雙通道,2根DIMM就可以組成4通道。
例如,我的電腦的內控制器支持的是雙通道,可由於用的是ddr5,每個ddr5內部對應兩個通道,所以顯示4通道。 總量與 兩個ddr4 組成的 2*64bit相同,都是128bit, 但由於通道數提升了,速率也就更快了。
7. 層次總結
從內存控制器到內存顆粒內部邏輯,籠統上講從大到小為:channel>DIMM>rank>chip>bank>row/column,如下圖示:
整體數據流向如下圖所示:
從內存控制器開始沿着兩條通道一路往前,第一個分叉路口是內存插槽,在這裏一般的非低端芯片組主板都會提供4條路,每個通道分成兩條一樣的64-bit寬度道路通往內存模組(DIMM),一共有4個插槽,就是有4條64-bit寬度的道路通向內存,但並不是每個通道就這麼拓寬成了128-bit,它仍然是64-bit的寬度,在同一時間一個通道中的兩條路只有一條可以用。
DIMM再往下就是上面提到的Rank,再到chip,bank 和 row,column
8. SPD
SPD(serial presence detect),即串行存在檢測,中文怪怪的。SPD是DIMM的相關描述信息。
在每根內存條上,都有一份SPD數據,這份數據保存在一個可擦寫的eeprom芯片中。SPD數據記錄了該內存的許多重要信息,諸如內存的芯片及模組廠商、工作頻率、工作電壓、速度、容量、電壓與行、列地址帶寬等參數。SPD數據一般都是在出廠前,由DIMM製造商根據內存芯片的實際性能寫入到eeprom芯片中。
所以山寨產品就是通過改SPD中的內容達到魚目混珠的目的。
例如,我電腦的SPD信息如下:
總結
本文介紹了內存從下到上的結構。希望能有所幫助。
參考:
https://blog.csdn.net/zyhse/article/details/120771121
https://blog.csdn.net/shenmingxueIT/article/details/115524046