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