詳述DRAM、SDRAM及DDR SDRAM的概念
DRAM (動(dòng)態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器)對(duì)設(shè)計(jì)人員特別具有吸引力,因?yàn)樗峁┝藦V泛的性能,用于各種計(jì)算機(jī)和嵌入式系統(tǒng)的存儲(chǔ)系統(tǒng)設(shè)計(jì)中。本文概括闡述了DRAM 的概念,及介紹了SDRAM、DDR SDRAM、DDR2 SDRAM、DDR3 SDRAM、DDR4 SDRAM、LPDDR、GDDR。
DRAM
DRAM較其它內(nèi)存類型的一個(gè)優(yōu)勢(shì)是它能夠以IC(集成電路)上每個(gè)內(nèi)存單元更少的電路實(shí)現(xiàn)。DRAM 的內(nèi)存單元基于電容器上貯存的電荷。典型的DRAM 單元使用一個(gè)電容器及一個(gè)或三個(gè)FET(場(chǎng)效應(yīng)晶體管)制成。典型的SRAM (靜態(tài)隨機(jī)訪問(wèn)內(nèi)存)內(nèi)存單元采取六個(gè)FET 器件,降低了相同尺寸時(shí)每個(gè)IC 的內(nèi)存單元數(shù)量。與DRAM 相比,SRAM 使用起來(lái)更簡(jiǎn)便,接口更容易,數(shù)據(jù)訪問(wèn)時(shí)間更快。
DRAM核心結(jié)構(gòu)由多個(gè)內(nèi)存單元組成,這些內(nèi)存單元分成由行和列組成的兩維陣列(參見(jiàn)圖1)。訪問(wèn)內(nèi)存單元需要兩步。先尋找某個(gè)行的地址,然后在選定行中尋找特定列的地址。換句話說(shuō),先在DRAM IC 內(nèi)部讀取整個(gè)行,然后列地址選擇DRAM IC I/O(輸入/ 輸出)針腳要讀取或要寫入該行的哪一列。
DRAM讀取具有破壞性,也就是說(shuō),在讀操作中會(huì)破壞內(nèi)存單元行中的數(shù)據(jù)。因此,必需在該行上的讀或?qū)懖僮鹘Y(jié)束時(shí),把行數(shù)據(jù)寫回到同一行中。這一操作稱為預(yù)充電,是行上的最后一項(xiàng)操作。必須完成這一操作之后,才能訪問(wèn)新的行,這一操作稱為關(guān)閉打開(kāi)的行。
對(duì)計(jì)算機(jī)內(nèi)存訪問(wèn)進(jìn)行分析后表明,內(nèi)存訪問(wèn)中最常用的類型是讀取順序的內(nèi)存地址。這是合理的,因?yàn)樽x取計(jì)算機(jī)指令一般要比數(shù)據(jù)讀取或?qū)懭敫映S?。此外,大多?shù)指令讀取在內(nèi)存中順序進(jìn)行,直到發(fā)生到指令分支或跳到子例程。
圖1. DRAMs 內(nèi)存單元分成由行和列組成的兩維陣列。
DRAM的一個(gè)行稱為內(nèi)存頁(yè)面,一旦打開(kāi)行,您可以訪問(wèn)該行中多個(gè)順序的或不同的列地址。這提高了內(nèi)存訪問(wèn)速度,降低了內(nèi)存時(shí)延,因?yàn)樵谠L問(wèn)同一個(gè)內(nèi)存頁(yè)面中的內(nèi)存單元時(shí),其不必把行地址重新發(fā)送給DRAM。結(jié)果,行地址是計(jì)算機(jī)的高階地址位,列地址是低階地址位。由于行地址和列地址在不同的時(shí)間發(fā)送,因此行地址和列地址復(fù)用到相同的DRAM 針腳上,以降低封裝針腳數(shù)量、成本和尺寸。一般來(lái)說(shuō),行地址尺寸要大于列地址,因?yàn)槭褂玫墓β逝c列數(shù)有關(guān)。
早期的RAM擁有控制信號(hào),如RAS# (行地址選擇低有效)和CAS# (列地址選擇低有效),選擇執(zhí)行的行和列尋址操作。其它DRAM 控制信號(hào)包括用來(lái)選擇寫入或讀取操作的WE# (寫啟動(dòng)低有效)、用來(lái)選擇DRAM的CS#(芯片選擇低有效)及OE# (輸出啟動(dòng)低有效)。早期的DRAM擁有異步控制信號(hào),并有各種定時(shí)規(guī)范,涵蓋了其順序和時(shí)間關(guān)系,來(lái)確定DRAM 工作模式。
早期的DRAM讀取周期有四個(gè)步驟。第一步,RAS# 與地址總線上的行地址變低。第二步,CAS# 與地址總線上的列地址變低。第三步,OE#變低,讀取數(shù)據(jù)出現(xiàn)在DQ 數(shù)據(jù)針腳上。在DQ 針腳上提供數(shù)據(jù)時(shí),從第一步第三步的時(shí)間稱為時(shí)延。最后一步是RAS#, CAS# 和OE# 變高(不活動(dòng)),等待內(nèi)部預(yù)充電操作在破壞性讀取后完成行數(shù)據(jù)的恢復(fù)工作。從第一步開(kāi)始到最后一步結(jié)束的時(shí)間是內(nèi)存周期時(shí)間。上述信號(hào)的信號(hào)定時(shí)與邊沿順序有關(guān),是異步的。這些早期DRAM沒(méi)有同步時(shí)鐘操作。
DRAM 內(nèi)存單元必需刷新,避免丟失數(shù)據(jù)內(nèi)容。這要求丟失電荷前刷新電容器。刷新內(nèi)存由內(nèi)存控制器負(fù)責(zé),刷新時(shí)間指標(biāo)因不同DRAM內(nèi)存而不同。內(nèi)存控制器對(duì)行地址進(jìn)行僅RAS# 循環(huán),進(jìn)行刷新。在僅RAS# 循環(huán)結(jié)束時(shí),進(jìn)行預(yù)充電操作,恢復(fù)僅RAS# 循環(huán)中尋址的行數(shù)據(jù)。一般來(lái)說(shuō),內(nèi)存控制器有一個(gè)行計(jì)數(shù)器,其順序生成僅RAS# 刷新周期所需的所有行地址。
刷新策略有兩個(gè)(參見(jiàn)圖2)。第一個(gè)策略內(nèi)存控制器在刷新周期突發(fā)中順序刷新所有行,然后把內(nèi)存控制返回處理器,以進(jìn)行正常操作。在到達(dá)最大刷新時(shí)間前,會(huì)發(fā)生下一個(gè)刷新操作突發(fā)。第二個(gè)刷新策略是內(nèi)存控制器使用正常處理器內(nèi)存操作隔行掃描刷新周期。這種刷新方法在最大刷新時(shí)間內(nèi)展開(kāi)刷新周期。
圖2. DRAM 刷新實(shí)現(xiàn)方案包括分布式刷新和突發(fā)刷新。
早期的DRAM 演進(jìn)及實(shí)現(xiàn)了DRAM IC 上的刷新計(jì)數(shù)器,處理順序生成的行地址。在DRAM IC 內(nèi)部,刷新計(jì)數(shù)器是復(fù)用器輸入,控制著內(nèi)存陣列行地址。另一個(gè)復(fù)用器輸入來(lái)自外部地址輸入針腳的行地址。這個(gè)內(nèi)部刷新計(jì)數(shù)器不需要內(nèi)存控制器中的外部刷新計(jì)數(shù)器電路。部分DRAM 在RAS# 周期前支持一個(gè)CAS#,以使用內(nèi)部生成的行地址發(fā)起刷新周期。
SDRAM
在接口到同步處理器時(shí),DRAM 的異步操作帶來(lái)了許多設(shè)計(jì)挑戰(zhàn)。
SDRAM (同步DRAM)是為把DRAM操作同步到計(jì)算機(jī)系統(tǒng)其余部分,而不需要根據(jù)CE# (芯片啟動(dòng)活動(dòng)低)、RAS#、CAS#和WE#邊沿轉(zhuǎn)換順序定義所有內(nèi)存操作模式而設(shè)計(jì)的。
SDRAM增加了時(shí)鐘信號(hào)和內(nèi)存命令的概念。內(nèi)存命令的類型取決于SDRAM 時(shí)鐘上升沿上的CE#, RAS#,CAS# 和WE# 信號(hào)狀態(tài)。產(chǎn)品資料根據(jù)CE#, RAS#,CAS# 和WE# 信號(hào)狀態(tài),以表格形式描述內(nèi)存命令。
例如,Activate (激活)命令向SDRAM發(fā)送一個(gè)行地址,打開(kāi)內(nèi)存的一個(gè)行(頁(yè)面)。然后是一個(gè)Deselect (反選)命令序列,在對(duì)列地址發(fā)送Read 或Write 命令前滿足定時(shí)要求。一旦使用Activate命令打開(kāi)內(nèi)存的行(頁(yè)面),那么可以在內(nèi)存的該行(頁(yè)面)上運(yùn)行多個(gè)Read和Write命令。要求Precharge(預(yù)充電)命令,關(guān)閉該行,然后才能打開(kāi)另一行。
表1. DDR SDRAM 數(shù)據(jù)速率和時(shí)鐘速度。
DDR SDRAM
通過(guò)提高時(shí)鐘速率、突發(fā)數(shù)據(jù)及每個(gè)時(shí)鐘周期傳送兩個(gè)數(shù)據(jù)位(參見(jiàn)表1),DDR (雙倍數(shù)據(jù)速率) SDRAM 提高了內(nèi)存數(shù)據(jù)速率性能。DDR SDRAM 在一條讀取命令或一條寫入命令中突發(fā)多個(gè)內(nèi)存位置。讀取內(nèi)存操作必需發(fā)送一條Activate 命令,后面跟著一條Read 命令。內(nèi)存在時(shí)延后以每個(gè)時(shí)鐘周期兩個(gè)內(nèi)存位置的數(shù)據(jù)速率應(yīng)答由兩個(gè)、四個(gè)或八個(gè)內(nèi)存位置組成的突發(fā)。因此,從兩個(gè)連續(xù)的時(shí)鐘周期中讀取四個(gè)內(nèi)存位置,或把四個(gè)內(nèi)存位置寫入兩個(gè)連續(xù)的時(shí)鐘周期中。
DDR SDRAM 有多個(gè)內(nèi)存條,提供多個(gè)隔行掃描的內(nèi)存訪問(wèn),從而提高內(nèi)存帶寬。內(nèi)存條是一個(gè)內(nèi)存陣列,兩個(gè)內(nèi)存條是兩個(gè)內(nèi)存陣列,四個(gè)內(nèi)存條是四個(gè)內(nèi)存陣列,依此類推(參見(jiàn)圖3)。四個(gè)內(nèi)存條要求兩個(gè)位用于內(nèi)存條地址(BA0 和BA1)。
圖3. DDR SDRAM中多個(gè)內(nèi)存條提高了訪問(wèn)靈活性,改善了性能。
例如,有四個(gè)內(nèi)存條的DDR SDRAM的工作方式如下。首先,Activate命令在第一個(gè)內(nèi)存條中打開(kāi)一行。第二個(gè)Activate命令在第二個(gè)內(nèi)存條中打開(kāi)一行?,F(xiàn)在,可以把Read 或Write 命令的任意組合發(fā)送到打開(kāi)行的第一個(gè)內(nèi)存條或第二個(gè)內(nèi)存條。在內(nèi)存條上的Read 和Write 操作結(jié)束時(shí),Precharge 命令關(guān)閉行,內(nèi)存條對(duì)Activate 命令準(zhǔn)備就緒,可以打開(kāi)一個(gè)新行。
注意,DDR SDRAM要求的功率與打開(kāi)行的內(nèi)存條數(shù)量有關(guān)。打開(kāi)的行越多,要求的功率越高,行尺寸越大,要求的功率越高。因此,對(duì)低功率應(yīng)用,一次在每個(gè)內(nèi)存條中只應(yīng)打開(kāi)一行,而不是一次打開(kāi)行的多個(gè)內(nèi)存條。
在內(nèi)存條地址位連接到內(nèi)存系統(tǒng)中的低階地址位時(shí),支持隔行掃描連續(xù)內(nèi)存條中的連續(xù)內(nèi)存字。在內(nèi)存條地址位連接到內(nèi)存系統(tǒng)中的高階地址時(shí),連續(xù)內(nèi)存字位于同一個(gè)內(nèi)存條中。
DDR2 SDRAM
DDR2 SDRAM 較DDR SDRAM 有多處改進(jìn)。DDR2SDRAM時(shí)鐘速率更高,從而提高了內(nèi)存數(shù)據(jù)速率(參見(jiàn)表2)。隨著時(shí)鐘速率提高,信號(hào)完整性對(duì)可靠運(yùn)行內(nèi)存變得越來(lái)越重要。隨著時(shí)鐘速率提高,電路板上的信號(hào)軌跡變成傳輸線,在信號(hào)線末端進(jìn)行合理的布局和端接變得更加重要。
地址、時(shí)鐘和命令信號(hào)的端接相對(duì)簡(jiǎn)明,因?yàn)檫@些信號(hào)是單向的,并端接在電路板上。數(shù)據(jù)信號(hào)和數(shù)據(jù)選通是雙向的。內(nèi)存控制器中心在寫入操作中驅(qū)動(dòng)這些信號(hào),DDR2 SDRAM在讀取操作中驅(qū)動(dòng)這些信號(hào)。多個(gè)DDR2 SDRAM 連接到同一個(gè)數(shù)據(jù)信號(hào)和數(shù)據(jù)選通上,進(jìn)一步提高了復(fù)雜度。多個(gè)DDR2 SDRAM 可以位于內(nèi)存系統(tǒng)相同的DIMM上,也可以位于內(nèi)存系統(tǒng)不同的DIMM上。結(jié)果,數(shù)據(jù)和數(shù)據(jù)選通驅(qū)動(dòng)器和接收機(jī)不斷變化,具體取決于讀取/ 寫入操作及訪問(wèn)的是哪個(gè)DDR2 SDRAM。
表2. DDR2 SDRAM 數(shù)據(jù)速率和時(shí)鐘速度。
通過(guò)提供ODT (芯片內(nèi)端接),并提供ODT 信號(hào),實(shí)現(xiàn)片內(nèi)端接,并能夠使用DDR2 SDRAM 擴(kuò)展模式寄存器對(duì)片內(nèi)端接值編程(75 歐姆、150 歐姆等等),DDR2SDRAM 改善了信號(hào)完整性。
片內(nèi)端接大小和操作由內(nèi)存控制器中心控制,與DDR2SDRAM DIMM 的位置及內(nèi)存操作類型(讀取或?qū)懭?有關(guān)。通過(guò)為數(shù)據(jù)有效窗口創(chuàng)建更大的眼圖,提高電壓余量、提高轉(zhuǎn)換速率、降低過(guò)沖、降低ISI (碼間干擾),ODT操作改善了信號(hào)完整性。
DDR2 SDRAM 在1.8V 上操作,降低了內(nèi)存系統(tǒng)的功率,這一功率是DDR SDRAM 的2.5V 功率的72%。在某些實(shí)現(xiàn)方案中,行中的列數(shù)已經(jīng)下降,在激活行進(jìn)行讀取或?qū)懭霑r(shí)降低了功率。
降低工作電壓的另一個(gè)優(yōu)勢(shì)是降低了邏輯電壓擺幅。在轉(zhuǎn)換速率相同時(shí),電壓擺幅下降會(huì)提高邏輯轉(zhuǎn)換速度,支持更快的時(shí)鐘速率。此外,數(shù)據(jù)選通可以編程為差分信號(hào)。使用差分?jǐn)?shù)據(jù)選通信號(hào)降低了噪聲、串?dāng)_、動(dòng)態(tài)功耗和EMI (電磁干擾),提高了噪聲余量。差分或單端數(shù)據(jù)選通操作配置有DDR2 SDRAM 擴(kuò)展模式寄存器。
DDR2 SDRAM 引入的一種新功能是附加時(shí)延,它使得內(nèi)存控制器中心能夠在Activate命令后,更快地靈活發(fā)送Read 和Write 命令。這優(yōu)化了內(nèi)存吞吐量,通過(guò)使用DDR2 SDRAM擴(kuò)展模式寄存器對(duì)附加時(shí)延編程來(lái)配置。DDR2 SDRAM使用八個(gè)內(nèi)存條,改善了1Gb和2GbDDR2 SDRAM 的數(shù)據(jù)帶寬。通過(guò)隔行掃描不同的內(nèi)存條操作,八個(gè)內(nèi)存條提高了訪問(wèn)大型內(nèi)存D D R 2SDRAM的靈活性。此外,對(duì)大型內(nèi)存,DDR2 SDRAM支持最多八個(gè)內(nèi)存條的突發(fā)長(zhǎng)度。
DDR3 SDRAM
DDR3 SDRAM 是一種性能演進(jìn)版本,增強(qiáng)了SDRAM技術(shù),它從800 Mb/s開(kāi)始,這是大多數(shù)DDR2 SDRAM支持的最高數(shù)據(jù)速率。DDR3 SDRAM支持六檔數(shù)據(jù)速率和時(shí)鐘速度(參見(jiàn)表3)。DDR3-800/1066/1333SDRAM 于2007 年投入使用,DDR3-1600/1866SDRAM 則預(yù)計(jì)在2008 年投入使用,DDR3-2133SDRAM 則預(yù)計(jì)在2009 投入使用。
DDR3-1066 SDRAM的能耗低于DDR2-800 SDRAM,因?yàn)镈DR3 SDRAM 的工作電壓是1.5 V,是DDR2SDRAM 的83%,DDR2 SDRAM 的工作電壓是1.8 伏。此外,DDR3 SDRAM數(shù)據(jù)DQ驅(qū)動(dòng)器的阻抗是34歐姆,DDR2 SDRAM 的阻抗較低,是18 歐姆。
表3. 預(yù)計(jì)的DDR3 SDRAM 數(shù)據(jù)速率和時(shí)鐘速度。
DDR3 SDRAM 將從512 Mb 內(nèi)存開(kāi)始,將來(lái)將發(fā)展到8 Gb 內(nèi)存。與DDR2 SDRAM 一樣,DDR3 SDRAM 數(shù)據(jù)輸出配置包括x4、x8 和x16。DDR3 SDRAM 有8 個(gè)內(nèi)存條,DDR2 SDRAM 則有4 個(gè)或8 個(gè)內(nèi)存條,具體視內(nèi)存大小而定。
DDR2 和DDR3 SDRAM 都有4 個(gè)模式寄存器。DDR2 定義了前兩個(gè)模式寄存器,另兩個(gè)模式寄存器則預(yù)留給將來(lái)使用。DDR3使用全部4個(gè)模式寄存器。一個(gè)重要差異是DDR2 模式寄存器規(guī)定了讀出操作的CAS 時(shí)延,寫入時(shí)延則是1減去模式寄存器讀出時(shí)延設(shè)置。DDR3模式寄存器對(duì)CAS 讀出時(shí)延和寫入時(shí)延的設(shè)置是唯一的。
DDR3 SDRAM使用8n預(yù)取架構(gòu),在4個(gè)時(shí)鐘周期中傳送8 個(gè)數(shù)據(jù)字。DDR2 SDRAM 使用4n 預(yù)取架構(gòu),在2個(gè)時(shí)鐘周期中傳送4 個(gè)數(shù)據(jù)字。
DDR3 SDRAM 模式寄存器可以編程為支持飛行突變,這會(huì)把傳送8個(gè)數(shù)據(jù)字縮短到傳送4個(gè)數(shù)據(jù)字,這在讀出或?qū)懭朊钇陂g把地址行12 設(shè)為低來(lái)實(shí)現(xiàn)。飛行突變?cè)诟拍钌吓cDDR2 和DDR3 SDRAM 中地址行10 的讀出和寫入自動(dòng)預(yù)充電功能類似。
值得一提的另一個(gè)DDR3 SDRAM屬性是差分的數(shù)據(jù)選通信號(hào)DQS,DDR2 SDRAM數(shù)據(jù)通信號(hào)則可以由模式寄存器編程為單端或差分。DDR3 SDRAM 還有一個(gè)新引腳,這個(gè)引腳為活動(dòng)低異步RESET# 引腳,通過(guò)把SDRAM 置于已知狀態(tài),而不管當(dāng)前狀態(tài)如何,改善系統(tǒng)穩(wěn)定性。DDR3 SDRAM 使用的FBGA 封裝類型與DDR2 SDRAM 相同。
DDR3 DIMM為DIMM上的命令、時(shí)鐘和地址提供了端接。采用DDR2 DIMM 的內(nèi)存系統(tǒng)端接主板上的命令、時(shí)鐘和地址。DIMM上的DDR3 DIMM端接支持飛行拓?fù)?,SDRAM 上的每個(gè)命令、時(shí)鐘和地址引腳都連接到一條軌跡上,然后這條軌跡終結(jié)在DIMM的軌跡端。這改善了信號(hào)完整性,其運(yùn)行速度要快于DDR2 DIMM樹(shù)型結(jié)構(gòu)。
飛行拓?fù)錇閮?nèi)存控制器引入了新的DDR3 SDRAM寫入電平功能,考慮了寫入過(guò)程中時(shí)鐘CK和數(shù)據(jù)選通信號(hào)DQS 之間的定時(shí)偏移。DDR3 DIMM 的主要不同于DDR2 DIMM,防止把錯(cuò)誤的DIMM 插入主板中。
DDR4 SDRAM
DDR4 SDRAM 已經(jīng)拉開(kāi)帷幕,預(yù)計(jì)將在2012 年發(fā)布。其目標(biāo)是在1.2V 或以下的電源上運(yùn)行這些新存儲(chǔ)器芯片,同時(shí)實(shí)現(xiàn)每秒200 萬(wàn)以上的數(shù)據(jù)傳送速度。
GDDR 和LPDDR
其它DDR變種,如GDDR (圖形DDR)和LPDDR (低功率DDR),在業(yè)內(nèi)的地位也在不斷提高。
GDDR是一種圖形卡專用存儲(chǔ)技術(shù),目前規(guī)定的變種有四個(gè):GDDR2、GDDR3、GDDR4 和GDDR5。GDDR的技術(shù)與傳統(tǒng)DDR SDRAM 非常類似,但功率要求不同。其降低了功率要求,以簡(jiǎn)化冷卻,提供更高性能的存儲(chǔ)器模塊。GDDR也是為更好地處理處理圖形要求設(shè)計(jì)的。
LPDDR 采用166 MHz 時(shí)鐘速率,在要求低功耗的便攜式消費(fèi)電子中正越來(lái)越流行。LPDDR2 改善了能源效率,其工作電壓最低1.2V,時(shí)鐘速度為100 -533 MHz。