DRAM命令到底是什么
本文將仔細(xì)研究用于控制和與 DRAM 交互的命令。
我之前的文章介紹了動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器,即 DRAM。DRAM 是一種需要經(jīng)常動(dòng)態(tài)刷新的 RAM。這是因?yàn)?DRAM 使用一組電容器來存儲(chǔ)數(shù)字信息。當(dāng)存在電荷時(shí),存儲(chǔ)二進(jìn)制“1”,而沒有電荷表示二進(jìn)制“0”。DRAM 被組織成多個(gè)存儲(chǔ)體,這些存儲(chǔ)體進(jìn)一步分為行和列。電容器位于這些行和列的交叉處。
圖 1 顯示了上一篇文章中介紹的 x4 DRAM bank。
圖 1. 帶有讀出放大器和解碼器的存儲(chǔ)器陣列
但是如何實(shí)際使用 DRAM 呢?處理器或內(nèi)存控制器如何告訴 DRAM 在特定位置返回或存儲(chǔ)特定數(shù)據(jù)?了解發(fā)送到 DRAM 芯片的命令是實(shí)際設(shè)計(jì)使用 DRAM 的系統(tǒng)的第一步。
基本 DRAM 命令
雖然 DRAM 可能因制造商而異,但大多數(shù) DRAM 芯片使用一組基本命令來執(zhí)行操作。為了執(zhí)行命令,內(nèi)存控制器會(huì)將值寫入 DRAM 中的一組輸入。這些輸入屬于 DRAM 的命令解碼器。該解碼器有一個(gè) 4 位輸入,根據(jù)位的組合,請(qǐng)求不同的命令。
圖 2. 帶輸入的 DRAM 解碼器(# 符號(hào)表示這些是低電平有效信號(hào))
這些低電平有效輸入都有名稱,通常定義為 CS、CAS、RAS 和 WE:
CS:片選(啟用或禁用命令解碼器)
RAS:行地址選通
CAS:列地址選通
WE: 寫使能
這四個(gè)輸入允許將多達(dá) 16 個(gè)命令內(nèi)置到 DRAM 中。
圖 3 顯示了 DRAM 芯片的簡(jiǎn)化視圖。它可以用作參考,以更好地理解列出的不同命令。
圖 3. DRAM 參考。圖片由Alliance Memory提供
命令禁止
命令禁止,或有時(shí)稱為設(shè)備取消選擇,禁用在 DRAM 上執(zhí)行命令的能力。要使用該命令,請(qǐng)將 CS 輸入拉高(忽略其他輸入,即“不關(guān)心”)。如前所述,CS 代表芯片選擇并禁用命令解碼器。因此,這將被拉高以抑制命令是有道理的。
啟用
激活本質(zhì)上是行訪問命令。意思是,它打開一行并將電荷從電容器移動(dòng)到感應(yīng)放大器。訪問一行總是在 DRAM 中的一列之前完成。該命令與存儲(chǔ)體地址寄存器(選擇當(dāng)前存儲(chǔ)體)和行地址寄存器(選擇所需行)的輸入配對(duì)。關(guān)于激活命令的一個(gè)重要注意事項(xiàng)是,當(dāng)前打開的行保持打開狀態(tài),直到發(fā)出預(yù)充電命令(稍后將詳細(xì)介紹預(yù)充電)。要使用此命令,大多數(shù) DRAM 需要將 CS 和 RAS 拉低,而將 CAS 和 WE 拉高。
預(yù)充電
預(yù)充電會(huì)停用當(dāng)前在銀行中打開的行。當(dāng)發(fā)出預(yù)充電命令時(shí),DRAM 被告知恢復(fù)從電容器行讀取的值。這是由讀出放大器完成的,當(dāng)完成時(shí),為另一行訪問做好準(zhǔn)備。通過將 CS、RAS 和 WE 拉低并將 CAS 拉高來執(zhí)行預(yù)充電。
讀
讀取命令也可以被認(rèn)為是列讀取命令。當(dāng)與適當(dāng)?shù)拇鎯?chǔ)體地址和列地址相結(jié)合時(shí),最近從激活命令(行訪問)移入讀出放大器的數(shù)據(jù)現(xiàn)在被推送到數(shù)據(jù)總線上。DRAM 通常包含“讀取和自動(dòng)預(yù)充電”命令,該命令執(zhí)行列讀取,然后關(guān)閉/預(yù)充電行。這樣,不需要發(fā)出單獨(dú)的預(yù)充電命令。如果需要訪問同一行但不同的列,則根本不會(huì)發(fā)出預(yù)充電,并且該行將保持打開狀態(tài)。要使用讀取命令,CS 和 CAS 被拉低,而 RAS 和 WE 被拉高。
寫
除了數(shù)據(jù)的方向之外,寫入命令實(shí)際上與讀取相同。在寫入命令期間,數(shù)據(jù)從數(shù)據(jù)總線中拉出并放入選定的存儲(chǔ)區(qū)、行和列。自動(dòng)預(yù)充電可以像讀取一樣執(zhí)行,并在寫入完成時(shí)關(guān)閉當(dāng)前激活的行。為了執(zhí)行寫操作,CS、CAS 和 WE 被拉低,而 RAS 保持高。
圖 4 以黃色顯示激活命令(行訪問),隨后以藍(lán)色顯示讀/寫命令(列訪問)。行列交叉處的數(shù)據(jù)(以綠色顯示)在讀出放大器和數(shù)據(jù)緩沖器之間移動(dòng)。
圖 4. 突出顯示激活和讀/寫命令
刷新
DRAM 與其他類型的隨機(jī)存取存儲(chǔ)器的不同之處在于,用于存儲(chǔ)器存儲(chǔ)的電容器會(huì)隨著時(shí)間的推移而泄漏電荷。因此,DRAM 是動(dòng)態(tài)的,因?yàn)樗枰ㄆ谒⑿隆_@就是刷新命令的用武之地。在 DRAM 中,刷新命令每隔一段時(shí)間就會(huì)發(fā)出一次。刷新的一個(gè)重要方面是任何活動(dòng)的銀行都應(yīng)該在發(fā)出命令之前進(jìn)行預(yù)充電。為了執(zhí)行刷新 CS、RAS 和 CAS 被拉低,WE 為高。
刷新后,DRAM 跟蹤最后刷新的行并遞增刷新計(jì)數(shù)器,以便下一個(gè)刷新命令對(duì)下一行進(jìn)行操作。請(qǐng)記住,當(dāng)發(fā)出刷新命令時(shí),會(huì)刷新每個(gè) bank 中的當(dāng)前行。大多數(shù) DRAM 將每 64 毫秒執(zhí)行 8192 次刷新周期。那是每 7.813 μs。盡管設(shè)備密度不斷增加,但這種情況一直保持不變。
其他命令
其他常見的 DRAM 命令包括 NOP(無(wú)操作)、突發(fā)終止和加載模式寄存器。NOP 用于強(qiáng)制 DRAM 什么也不做。這在 DRAM 需要等待時(shí)很有用,例如當(dāng)前正在刷新時(shí)。實(shí)際上,對(duì) DRAM 的讀取和寫入是在短時(shí)間內(nèi)完成的。Burst terminate 將截?cái)嘧x或?qū)懨睿丛谕瓿芍皩⑵渫V埂RAM 可以置于不同的模式。這些模式通過加載模式寄存器命令進(jìn)行更改。
圖 5 顯示了一個(gè)真值表,列出了用于執(zhí)行不同 DRAM 命令的解碼器輸入組合。
圖 5. DRAM 命令——真值表
結(jié)論
本文討論了 DRAM 能夠執(zhí)行的不同命令。這些命令由與 DRAM 交互的內(nèi)存控制器或 CPU 發(fā)起。
通過寫入 DRAM 命令解碼器的輸入來執(zhí)行命令。任何需要認(rèn)真工作的系統(tǒng)都將具有板載內(nèi)存。如果您了解這些命令,那么在您的下一個(gè)項(xiàng)目中實(shí)現(xiàn) DRAM 將會(huì)容易得多。
-
DRAM
+關(guān)注
關(guān)注
40文章
2326瀏覽量
183870 -
控制
+關(guān)注
關(guān)注
4文章
1014瀏覽量
122774 -
內(nèi)存控制器
+關(guān)注
關(guān)注
0文章
40瀏覽量
8941
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論