【x86】DRAM、SRAM、DDR、FLASH、雙通道的概念科普
內存的DRAM、SRAM
在學習數電的時候就學習過,RAM分為兩大類,有DRAM(Dynamic RAM)、SRAM(Static RAM),在裝機器的時候也經常會聽到DDR3 DDR4 DDR5等概念,下面詳細介紹。
首先DRAM和SRAM這兩大類,從原理上說:DRAM是將每bit數據保存在一個個的電容+晶體管內,而SRAM是將數據保存在一個個觸發器中,由于電容儲存的電荷會隨時間減少,因此,DRAM需要周期性刷新否則數據將會丟失,SRAM則沒有這種困擾。
但從工藝上來說,DRAM的電容會比SRAM觸發器更簡單,成本因此就更低,也更容易制作得更大容量,集成度更高。DRAM使用成本換取了訪問速度和集成度。
SRAM通常用在CPU Cache的小容量但高速的場景中。DRAM需要刷新 + 預充 + 激活等一系列步驟才能訪問使用,因此速度相對慢很多。
總結就是:
- SRAM 快但貴,小容量 → 用于 CPU cache。
- DDR 是 DRAM 快速變種,便宜大容量 → 用于主內存。
DDR
平時裝機佬們說的DDR4 DDR5這些,是指DDR(Double Data Rate DRAM:“雙倍數據速率”,所以是一種高速DRAM。
從原理上,它每個時鐘周期傳輸兩次數據(上升沿+下降沿),帶寬比傳統 SDRAM 更高。
其實,我們市面上現如今能買到的一般都是更好的DDR SDRAM,多了個S,代表著Synchronous DRAM,意思是和系統時鐘同步。這個具體不用管,反正DDR就是雙倍速率,就是快 φ(゜▽゜*)?
FLASH
FLASH,又叫閃存,是一種斷電不丟失數據(非易失性存儲器,NVM,Non-Volatile Memory)存儲器,是一種外存。其由浮柵晶體管構成,用于長期存儲數據或文件(例如U盤),寫入速度比較慢但是讀取速度很快。
常見的FLASH有兩種:
- NAND FLASH: 用于 SSD、U盤、TF 卡、eMMC(手機)
- NOR FLASH: 可隨機讀寫,常用于固件(BIOS/UEFI ROM)存儲 SPI NOR(BIOS 芯片)
沒錯,FLASH如今一般走SPI總線協議。
有關SPI FLASH,具體可以看這個:
https://zhuanlan.zhihu.com/p/631629580
Intel于1988年首先開發出NOR Flash 技術,徹底改變了原先由EPROM(Erasable Programmable Read-Only-Memory電可編程序只讀存儲器)和EEPROM(電可擦只讀存儲器Electrically Erasable Programmable Read - Only Memory)一統天下的局面。緊接著,1989年,東芝公司發表了NAND Flash 結構,強調降低每比特的成本,有更高的性能,并且像磁盤一樣可以通過接口輕松升級。NOR Flash 的特點是芯片內執行(XIP ,eXecute In Place),這樣應用程序可以直接在Flash閃存內運行,不必再把代碼讀到系統RAM中。NOR 的傳輸效率很高,在1~4MB的小容量時具有很高的成本效益,但是很低的寫入和擦除速度大大影響到它的性能。NAND的結構能提供極高的單元密度,可以達到高存儲密度,并且寫入和擦除的速度也很快。應用NAND的困難在于Flash的管理需要特殊的系統接口。通常讀取NOR的速度比NAND稍快一些,而NAND的寫入速度比NOR快很多,在設計中應該考慮這些情況。
——《ARM嵌入式Linux系統開發從入門到精通》 李亞峰 歐文盛 等編著 清華大學出版社 P52
Flash閃存是NVM,可以對稱為塊的存儲器單元塊進行擦寫和再編程。任何flash器件的寫入操作只能在空或已擦除的單元內進行,所以大多數情況下,在進行寫入操作之前必須先執行擦除。NAND器件執行擦除操作是十分簡單的,而NOR則要求在進行擦除前先要將目標塊內所有的位都寫為0。
由于擦除NOR器件時是以64~128KB的塊進行的,執行一個寫入/擦除操作的時間為5s,與此相反,擦除NAND器件是以8~32KB的塊進行的,執行相同的操作最多只需要4ms。
其他有關NOR和NAND的區別,具體可以看這個:
http://www.rzrgm.cn/eleclsc/p/11393461.html
順便一提,手機中一般使用的eMMC也是使用FLASH做的:eMMC = NAND Flash + 控制器(Controller)
它是把 Flash 芯片和控制器封裝在一個 BGA 封裝中,通過標準化接口(JESD84)提供存儲功能,不需要額外的 Flash 控制器芯片。
SSD硬盤也是NAND FLASH制作而成的。NAND Flash 的成本更低,容量更高。
但是NOR FLASH也不是一無是處,雖然很難做大容量,但是其可以直接從FLASH中執行代碼,類似于ROM,并且支持隨機讀取,因此在BIOS固件的場景或者MCU/嵌入式設備啟動代碼、Bootloader(例如,STM32 芯片的內置 Flash等) 存儲等有重要作用。
注意:
剛剛說Flash 是一種 NVM(非易失性存儲器),它
- ? 不是 RAM(隨機存取存儲器)
- ? 不是傳統意義上的 ROM(只讀存儲器)
- ? 更準確地說,它是一種可擦寫的 ROM(即 EEPROM 的變種)
NVMe和PCIe
剛剛也說到了FLASH是一種NVM,順帶再提一嘴NVMe,NVMe是一種協議,全稱:Non-Volatile Memory Express。NVMe 專為 Flash 打造。
NVMe是專為基于 Flash 的固態硬盤(SSD)設計的一種訪問協議,工作在 PCIe 總線上。
如果說PCIe是高速公路,那么NVMe就是高速物流協議(專為 Flash 設計)。
NVMe 是協議層,是數據訪問的協議;PCIe 是物理層,是硬件接口(物理的數據傳輸通道),也就是 NVMe 協議運行在 PCIe 總線上。
如果你買了一個 NVMe SSD:它里面的顆粒是 NAND Flash,控制器支持 NVMe 協議,使用 PCIe 通道 與 CPU 通信
雙通道
裝機時,經常也可以聽到需要將內存條組成雙通道的說法,這樣性能更好,但是這具體是什么意思?
雙通道(Dual Channel)是一種內存帶寬增強的技術,這個技術是主板或內存控制器的一種工作方式,而非內存條本身的特性。
如果使用兩根規格同樣的內存條,主板可以將他們組成雙通道模式。采用這個模式下的主板,可以同時讀寫兩條內存,也就說性能可以翻倍。
兩根內存條帶寬就是兩個總線,相當于高速路由單車道變成雙車道,所以數據傳輸效率更高。
有雙通道了,有三通道、四通道....這些說法嗎?
答:對也不對,可以看下表:
| 模式 | 通道數 | 理論帶寬提升倍數 | 常見平臺 |
|---|---|---|---|
| 單通道 | 1 | 1x | 所有系統最低配置 |
| 雙通道 | 2 | 2x | 主流桌面平臺、筆記本平臺 |
| 三通道 | 3 | 3x | 已過時(曾用于 Intel X58 平臺) |
| 四通道 | 4 | 4x | 高端桌面(HEDT)、服務器平臺 |
| 六/八通道 | 6 / 8 | 6x / 8x | 專業工作站、服務器(如 Xeon) |
- Intel X58 平臺(2008):支持 三通道,典型配置是 3×2GB 內存;
- Intel X299、AMD TRX40(Threadripper):支持 四通道;
- Intel Xeon Scalable/AMD EPYC:支持 六或八通道(每個內存控制器掛更多 DIMM)。
多通道的目的是為了提升帶寬,提升數據的傳輸效率,不能提高時序延遲,但是對于機器來說,2 * 8GB 總是比單根 16GB 的內存條確實性能要更好的,但是這個也取決于主板是否支持。
如今的家用電腦/筆記本等一般均支持雙通道,服務器支持更多通道組成。

浙公網安備 33010602011771號