DRAM基本組成
對于DRAM,其主要由行和列組成,每一個bit中都是由類似右下圖的類晶體管的結構組成,對于sdram的數據,可以通過控制column和row就可以訪問sdram的隨機地址的內容。
·讀取某一個bit的狀態,就是選中word line,那么圖示中的晶體管M1就會導通,通過bit line的sense就可以感知到這個時候電容Cs上的狀態,例如,現在如果這個bit的狀態為1,那么導通之后就會從bit line上得到1,反之也是同樣的道理。
·向某一bit寫入1,首先通過row decoder選中word line,將會導致m1導通,那么bit line為1,會導致電容Cs充電,導致其電平為1,如果要寫入,那么bit line的電平 為0,將會導致電容Cs放電,致使此時的電平為0。
由上面可以看出一個位只能表示一個bit,那么我們想讀取多個位的時候,該怎么辦呢?那就出現了ddr中的bank的概念,由多個memory array就組成了一個bank,如下圖,一次可以讀取2bit/4bit/8bit的數據:
由多個bank就可以組成一個memory device,如下圖,一個dram的芯片,由8個banks組成,而每個bank由4個memory array構成,而此時每個bank輸出4個bit的I/O bus,那么為什么會出現bank的概念呢?動態內存區別于靜態內存要定時刷新,每讀取一個狀態的時候,都需要重新充電。如果沒有采用bank,假設我們現在要讀取01-08地址的數據,當讀取01的地址后,要等這個bank自刷新后才能讀取02地址的值,而采用8個bank之后,沒有這類問題,例如我們讀取完01地址之后,那么讀取02,因為02與01的控制方式不同,所以對于這段時間01可以后臺的完成自刷新,依次類推,那么就可以很好的解決動態內存需要刷新的問題。
上圖中,對于RANK、DIMM等在深入淺出DDR系列(1)——DDR原理篇中已經詳細介紹了。
2
DDR工作原理
了解了DDR的基本組成后,我們來看看DDR如何來完成一次的讀寫過程。如下圖所示,DRAM 的相關操作在內部大概可以分為以下的四個階段:
·command transport and decode: 在這個階段,Host 端會通過 Command Bus 和 Address Bus 將具體的 Command 以及相應參數傳遞給 DRAM。DRAM 接收并解析 Command,接著驅動內部模塊進行相應的操作。其中會根據將addr bus上的數據解碼成對應的row address和通過bank control解碼后得到對應的bank,其次對應的column也會解碼得到對應的地址
**·in bank data movement: **在這個階段,第一階段發送需要讀取的 Column 的地址給 DRAM。然后 DRAM 再將 Active Command 所選中的 Row 中,DRAM 就將 Memory Array 中的數據從 DRAM Cells 中讀出到 Sense Amplifiers,或者將數據從 Sense Amplifiers 寫入到 DRAM Cells。
·in device data movement: 這個階段中,數據將通過 IO 電路緩存到 Read Latchs 或者通過 IO 電路和 Write Drivers 更新到 Sense Amplifiers。
**·system data transport: **在這個階段,進行讀數據操作時,SDRAM 會將數據輸出到數據總線上,進行寫數據操作時,則是 Host 端的 Controller 將數據輸出到總線上。
在上述的四個階段中,每個階段都會有一定的耗時,例如數據從 DRAM Cells 搬運到 Read Latchs 的操作需要一定的時間,因此在一個具體的操作需要按照一定時序進行。同時,由于內部的一些部件可能會被多個操作使用,例如讀數據和寫數據都需要用到部分 IO 電路,因此多個不同的操作通常不能同時進行,也需要遵守一定的時序。此外,某些操作會消耗很大的電流,為了滿足 SDRAM 設計上的功耗指標,可能會限制某一些操作的執行頻率。
3
DRAM基本命令
對于一款ddr,我們需要知道通過什么樣的方式來控制完成我們需要,我們來看看ddr的狀態,ddr的工作就是在這幾個狀態之間切換:
在芯片上電后,完成初始化后,dram處于idle階段,上圖是需要進入各個階段的時候,應該需要進行那些基本的操作,對于ddr使用比較頻繁的幾個基本命令訪問方式如下
·刷新模式: 儲體中電容的數據有效是有時間限制的,所以為了保證數據的不丟失,所以要對ddr進行定時的刷新,SDRAM內部有一個行地址生成器(也稱刷新計數器)用來自動的依次生成行地址。由于刷新是針對一行中的所有存儲體進行。該模式是由Host主動控制DRAM完成刷新,存儲體中電容的數據有效保存期上限是64ms(毫秒,1/1000秒),也就是說每一行刷新的循環周期是64ms。
·自我刷新模式: 當系統進入低功耗模式,只需要發送一條 SRF指令,主要用于休眠模式低功耗狀態下的數據保存,比較常見的應用是STR(Suspend to RAM,休眠掛起于內存)。就進入了該模式,此時不再依靠系統時鐘工作,而是根據內部的時鐘進行刷新操作。期間除了CKE之外的所有外部信號都是無效的(無需外部提供刷新指令),只有重新使CKE有效才能退出自刷新模式并進入正常操作狀態。
·MRS模式(mode register set): 模式寄存器中的數據控制著 DDR2 SDRAM的操作模式.它控制著 CAS 延遲, 突發長度, 突發順序, 測試模式, DLL復位, WR等各種選項,支持著 DDR2 SDRAM 的各種應用. 模式寄存器的默認值沒有被定義, 所以上電之后必須按規定的時序規范來設定模式寄存器的值。
·EMRS 擴展模式寄存器: 存儲著激活或禁止DLL的控制信息, 輸出驅動強度, ODT 值的選擇 和附加延遲等信息。
·預充電: 對一行讀寫操作后,關閉現有工作行,準備打開新行的操作就是預充電。
·讀過程: 訪問操作開始ACT一個激活命令,主要是激活bank和rol,就等于選通了某一Bank的某一行,接著發送一個read指令,就可以通過數據總線將數據送出去了,然后就進行預充電,恢復到讀寫的狀態,預充電完成后,就恢復到idle狀態。
·寫過程: 與讀過程基本類似。
DRAM的基本命令是通過操作各種控制信號/地址信號的組合來完成,下表是DRAM的命令表:
-
DRAM
+關注
關注
40文章
2303瀏覽量
183319 -
晶體管
+關注
關注
77文章
9635瀏覽量
137858 -
bit
+關注
關注
0文章
48瀏覽量
31990
發布評論請先 登錄
相關推薦
評論