深入理解DDR:DDR基本原理
掃描二維碼
隨時(shí)隨地手機(jī)看文章
現(xiàn)代的SoC中,基本是以DDR為核心,整個(gè)系統(tǒng)的瓶頸也大多出在DDR,系統(tǒng)的主要目標(biāo)也是合理的利用DDR,使得DDR效率最高,同時(shí)能滿足各個(gè)組件的需求。所以,對(duì)DDR的了解和掌握,是芯片進(jìn)階和成為芯片架構(gòu)必不可少的知識(shí)。作者以前雖然不斷碎片化的了解和學(xué)習(xí)過DDR,但是還是不夠系統(tǒng),所以最近希望系統(tǒng)的再把DDR的知識(shí)點(diǎn)梳理一下。
先從最基本的原理開始。
-
什么是DDR
DDR(Double Data Rate)是指雙倍數(shù)據(jù)速率同步動(dòng)態(tài)隨機(jī)存取內(nèi)存(Double Data Rate Synchronous Dynamic Random Access Memory,簡(jiǎn)稱DDR SDRAM)。它是一種用于計(jì)算機(jī)和其他電子設(shè)備的內(nèi)存技術(shù),旨在提高數(shù)據(jù)傳輸速率和系統(tǒng)性能。
DDR的核心技術(shù)在于:
-
時(shí)鐘同步:DDR內(nèi)存是同步的,這意味著數(shù)據(jù)傳輸與系統(tǒng)時(shí)鐘同步。時(shí)鐘信號(hào)用于協(xié)調(diào)內(nèi)存控制器和內(nèi)存模塊之間的數(shù)據(jù)傳輸。
-
雙倍數(shù)據(jù)速率:與傳統(tǒng)的SDR內(nèi)存相比,DDR內(nèi)存能夠在每個(gè)時(shí)鐘周期的上升沿和下降沿各傳輸一次數(shù)據(jù)。這種雙倍數(shù)據(jù)速率的機(jī)制使得DDR內(nèi)存的數(shù)據(jù)傳輸速率是SDR內(nèi)存的兩倍。
-
SDR:在每個(gè)時(shí)鐘周期的上升沿傳輸一次數(shù)據(jù)。
-
DDR:在每個(gè)時(shí)鐘周期的上升沿和下降沿各傳輸一次數(shù)據(jù)。
-
預(yù)取架構(gòu):DDR內(nèi)存采用了預(yù)取架構(gòu),可以在一個(gè)時(shí)鐘周期內(nèi)處理更多的數(shù)據(jù)。例如,DDR3內(nèi)存通常預(yù)取8位數(shù)據(jù),而DDR4內(nèi)存預(yù)取16位數(shù)據(jù)。
DDR 分為三個(gè)主要類別,每個(gè)類別都有獨(dú)特的功能,可幫助設(shè)計(jì)人員滿足其目標(biāo)片上系統(tǒng) (SoC) 的功耗、性能和面積要求。下圖顯示了不同的 DDR 類別及其目標(biāo)應(yīng)用場(chǎng)景。
-
DDR的基本原理
我們先從最基本的組成單元來(lái)看。
DDR內(nèi)存的基本單元是存儲(chǔ)單元(Memory Cell),這些存儲(chǔ)單元組成了存儲(chǔ)陣列,構(gòu)成了DDR內(nèi)存的核心部分。
-
電容和晶體管:每個(gè)存儲(chǔ)單元由一個(gè)電容和一個(gè)晶體管(通常是MOSFET)組成。電容用于存儲(chǔ)電荷,表示數(shù)據(jù)的“0”或“1”狀態(tài);晶體管用于控制電容的充電和放電。
-
位線(Bit Line)和字線(Word Line):位線用于讀取或?qū)懭霐?shù)據(jù),字線用于選擇特定的存儲(chǔ)單元。
存儲(chǔ)單元和存儲(chǔ)整列就是組成DDR的基本單元,所有復(fù)雜的DDR都是由基本的單元組成的。可以看到單個(gè)存儲(chǔ)單元的結(jié)構(gòu)非常簡(jiǎn)單,每一個(gè)基本單元由一個(gè)電容和一個(gè)晶體管構(gòu)成(又稱1T1C結(jié)構(gòu))。電容中存儲(chǔ)電荷量的多寡,用于表示“0”和“1”。而晶體管,則用來(lái)控制電容的充放電。
由于電容會(huì)存在漏電現(xiàn)象。所以,必須在數(shù)據(jù)改變或斷電前,進(jìn)行周期性“動(dòng)態(tài)”充電,保持電勢(shì)。否則,就會(huì)丟失數(shù)據(jù)。因此,DRAM才被稱為“動(dòng)態(tài)”隨機(jī)存儲(chǔ)器。
所以DDR的基本操作有以下三種:
-
讀操作:當(dāng)需要讀取數(shù)據(jù)時(shí),字線激活,對(duì)應(yīng)的晶體管導(dǎo)通,電容上的電荷通過位線傳輸?shù)阶x出放大器(Sense Amplifier)。讀出放大器將微弱的電信號(hào)放大,然后輸出為標(biāo)準(zhǔn)的邏輯電平。
-
寫操作:當(dāng)需要寫入數(shù)據(jù)時(shí),字線激活,對(duì)應(yīng)的晶體管導(dǎo)通,位線上施加相應(yīng)的電壓,使電容充電或放電,從而存儲(chǔ)數(shù)據(jù)。
-
刷新:由于電容會(huì)逐漸泄漏電荷,需要定期刷新存儲(chǔ)單元,以保持?jǐn)?shù)據(jù)的準(zhǔn)確性。刷新操作通常由內(nèi)存控制器自動(dòng)管理。
另外一種我們常見的存儲(chǔ)單元是SRAM,這個(gè)是芯片設(shè)計(jì)中必不可少的單元。SRAM的基本單元如下所示:
SRAM(靜態(tài)隨機(jī)存取存儲(chǔ)器)的基本單元由至少六個(gè)場(chǎng)效應(yīng)晶體管組成。其中,四個(gè)場(chǎng)效應(yīng)晶體管(M1, M2, M3, M4)構(gòu)成兩個(gè)交叉耦合的反相器,這兩個(gè)反相器共同形成一個(gè)鎖存器(觸發(fā)器)。另外兩個(gè)場(chǎng)效應(yīng)晶體管(M5, M6)作為控制開關(guān),用于連接位線(Bit Line),以便進(jìn)行讀寫操作。通過這些場(chǎng)效應(yīng)管的協(xié)同工作,SRAM能夠在通電時(shí)穩(wěn)定地鎖住二進(jìn)制數(shù)0和1。因此,SRAM被稱為“靜態(tài)隨機(jī)存儲(chǔ)器”。
DDR和SRAM的基本單元對(duì)比如下:
可以看到,DRAM cell比SRAM cell 結(jié)構(gòu)簡(jiǎn)單很多,使用的晶體管也少很多。晶體管就是面積,當(dāng)容量擴(kuò)大到KB,MB,GB級(jí)別的時(shí)候,這個(gè)差別就非常大了。所以SRAM一般都是比較昂貴的,DDR就便宜很多,
| 特性 | SRAM | DRAM |
| 基本單元 | 6個(gè)晶體管 | 1個(gè)晶體管 + 1個(gè)電容 |
| 工作原理 | 鎖存器保持?jǐn)?shù)據(jù) | 電容存儲(chǔ)電荷 |
| 訪問速度 | 快,低延遲 | 較慢,高延遲 |
| 功耗 | 較高 | 較低 |
| 容量 | 低 | 高 |
| 成本 | 高 | 低 |
| 刷新機(jī)制 | 不需要刷新 | 需要定期刷新 |
| 可靠性 | 高 | 較低 |
| 適用場(chǎng)景 | 高速緩存、寄存器文件 | 主內(nèi)存、圖形內(nèi)存、移動(dòng)設(shè)備 |
主要是出于成本考慮,雖然DRAM有各種缺點(diǎn),但是人家便宜量大,適合量產(chǎn)和商用。所以SRAM主要用在Cache,偏上緩存,一個(gè)芯片放上64MB, 128MB就已經(jīng)很豪橫了。但是DDR現(xiàn)在都是4GB, 8GB,16GB起步了。這也是DDR成為主存的主要原因。
在AI芯片初期,大模型還沒出來(lái),當(dāng)時(shí)的趨勢(shì)是放大量的片上SRAM,以減少對(duì)DDR的使用,但是當(dāng)大模型出來(lái)之后,這條路就走不通了,因?yàn)榧词狗派?28MB的SRAM, 對(duì)于大模型動(dòng)輒幾GB的參數(shù)來(lái)說,都是杯水車薪。采用速度更高的存儲(chǔ),如HBM;提高訪問速度這些才是唯一出路。
-
DDR的組織結(jié)構(gòu)
我們平時(shí)說的DDR顆粒也是一種芯片:
也就是我們說的內(nèi)存顆粒,而多個(gè)內(nèi)存顆粒組成內(nèi)存模組或者內(nèi)存條,就是計(jì)算機(jī)里面使用的內(nèi)存了。
如果以內(nèi)存顆粒,也就是chip為分界點(diǎn),那么板級(jí)的概念是:Channel,DIMM, Rank
而Chip內(nèi)部就是微觀的概念是:Bank,Row,Column,Page,以及最小的Memory Cell。
從大到小的組織層級(jí)如下:
這里chip就是內(nèi)存顆粒了。比如一個(gè)Intel I7 CPU連接兩個(gè)channel的DDR連接圖如下:
這里,Intel I7 CPU內(nèi)部有內(nèi)存控制器, 內(nèi)存條在外部:
Memory Controller
-
負(fù)責(zé)管理內(nèi)存的讀寫操作,包括地址生成、時(shí)序控制、刷新管理等。
Channel
-
內(nèi)存控制器與內(nèi)存模塊之間的一條獨(dú)立的通信路徑。每個(gè)通道可以獨(dú)立地進(jìn)行讀寫操作,提高內(nèi)存的并行處理能力。一個(gè)Channel對(duì)應(yīng)一個(gè)內(nèi)存控制器,有幾個(gè)channel,CPU內(nèi)部就必須有幾個(gè)控制器。
DIMM:
-
雙列直插式內(nèi)存模塊,是最常見的內(nèi)存模塊類型之一。DIMM由多個(gè)內(nèi)存芯片組成,安裝在主板上的內(nèi)存插槽中。
-
DIMM的位寬是指每次數(shù)據(jù)傳輸?shù)膶挾?,通常?4位(對(duì)于大多數(shù)服務(wù)器和臺(tái)式機(jī))。為了滿足64位的數(shù)據(jù)傳輸要求,DIMM上的芯片數(shù)量和規(guī)格需要匹配。芯片規(guī)格有x4、x8和x16三種,分別提供4位、8位和16位的數(shù)據(jù)寬度,其中x16規(guī)格較少使用。為了達(dá)到64位的數(shù)據(jù)寬度,使用x4規(guī)格時(shí)需要16個(gè)芯片,使用x8規(guī)格時(shí)需要8個(gè)芯片,使用x16規(guī)格時(shí)需要4個(gè)芯片。DIMM可以是單面的(Single-Sided DIMM),所有芯片分布在DIMM的一側(cè),例如使用8個(gè)x8芯片;也可以是雙面的(Double-Sided DIMM),芯片分布在DIMM的兩側(cè),例如使用16個(gè)x4芯片,每側(cè)8個(gè)。
-
還有其他內(nèi)存模塊:SO-DIMM:小型雙列直插式內(nèi)存模塊,常用于筆記本電腦和小型設(shè)備。UDIMM:無(wú)緩沖雙列直插式內(nèi)存模塊,直接與內(nèi)存控制器通信。RDIMM:注冊(cè)雙列直插式內(nèi)存模塊,通過寄存器與內(nèi)存控制器通信,適用于服務(wù)器。LRDIMM:負(fù)載減少雙列直插式內(nèi)存模塊,通過緩沖器減少內(nèi)存控制器的負(fù)載,適用于高性能服務(wù)器。
Rank
-
定義:Rank是內(nèi)存模塊中的一個(gè)獨(dú)立的存儲(chǔ)區(qū)域,可以獨(dú)立地響應(yīng)內(nèi)存控制器的命令。Rank是DIMM中的一個(gè)獨(dú)立的存儲(chǔ)區(qū)域,可以獨(dú)立地響應(yīng)內(nèi)存控制器的命令。一個(gè)DIMM可以包含一個(gè)或多個(gè)Rank。
-
組成:一個(gè)Rank由多個(gè)內(nèi)存芯片(Chips)組成,這些芯片并聯(lián)在一起,共享同一組地址和控制信號(hào)。每個(gè)Rank需要提供64位的數(shù)據(jù)寬度,因此,使用x8規(guī)格的芯片時(shí),一個(gè)Rank需要8個(gè)芯片。
-
為了和邏輯BANK相區(qū)分,也經(jīng)常把RANK稱為Physical BANK(物理BANK),簡(jiǎn)寫為P-BANK。邏輯Bank,簡(jiǎn)寫為L-BANK。
Chip
-
定義:芯片是內(nèi)存模塊中的最小物理單位,包含存儲(chǔ)陣列和控制邏輯。
-
組成:每個(gè)芯片包含多個(gè)銀行(Banks)。
-
存儲(chǔ)陣列:每個(gè)芯片包含多個(gè)存儲(chǔ)單元的存儲(chǔ)陣列。
-
控制邏輯:包括地址解碼器、讀出放大器、寫驅(qū)動(dòng)器、時(shí)序控制器等。
-
I/O接口:用于與外部設(shè)備(如內(nèi)存控制器)進(jìn)行數(shù)據(jù)傳輸。
Bank
-
定義:Bank是內(nèi)存芯片中的一組存儲(chǔ)陣列,可以獨(dú)立地進(jìn)行行激活和列訪問操作。一個(gè)芯片可以包含多個(gè)Bank。Bank就是之前提到的Memory Array
-
數(shù)量:DDR3內(nèi)存通常有8個(gè)銀行,DDR4內(nèi)存通常有16個(gè)銀行,DDR5內(nèi)存則更多。
行(Row)和列(Column)
-
定義:存儲(chǔ)單元按照行和列的二維數(shù)組排列,形成存儲(chǔ)陣列。
-
行激活:行地址被發(fā)送到內(nèi)存芯片,激活相應(yīng)的行(頁(yè))。
-
列訪問:行激活后,列地址被發(fā)送到內(nèi)存芯片,選擇特定的列。
頁(yè)(Page)
-
定義:行的另一種稱呼,指的是一行存儲(chǔ)單元。
一種DDR層次結(jié)構(gòu)示意圖如下所示
System | +-- Memory Controller | | | +-- Channel 1 | | | | | +-- DIMM 1 | | | | | | | +-- Rank 1 | | | | | | | | | +-- Chip 1 | | | | | | | | | | | +-- Bank 0 | | | | | +-- Bank 1 | | | | | ... | | | | | +-- Bank 7 (DDR3) / Bank 15 (DDR4) | | | | | | | | | +-- Chip 2 | | | | | | | | | | | +-- Bank 0 | | | | | +-- Bank 1 | | | | | ... | | | | | +-- Bank 7 (DDR3) / Bank 15 (DDR4) | | | | ... | | | | +-- Chip N | | | | | | | | | +-- Bank 0 | | | | +-- Bank 1 | | | | ... | | | | +-- Bank 7 (DDR3) / Bank 15 (DDR4) | | | | | | | +-- Rank 2 | | | ... | | | | | +-- DIMM 2 | | | | | +-- Rank 1 | | | ... | | | +-- Channel 2 | ... | +-- Other Components
下圖可以很好的解釋這些層次結(jié)構(gòu)的關(guān)系:
后紀(jì)
技術(shù)很重要,技術(shù)背后的思想更重要!
技術(shù)背后的某些思想就是你解決以后問題的鑰匙。我的文章可能一篇中知識(shí)點(diǎn)不太多,但是力求讓你能深入理解,為你進(jìn)階打下基礎(chǔ)。如果有一點(diǎn)點(diǎn)收獲,也算是我對(duì)中國(guó)芯片行業(yè)的一點(diǎn)點(diǎn)貢獻(xiàn)吧。
贈(zèng)人玫瑰,手有余香。如果你有所收獲,麻煩花一秒時(shí)間幫我點(diǎn)個(gè)贊和在看吧,謝謝!





