SDRAM基本操作與優(yōu)化策略_第1頁
SDRAM基本操作與優(yōu)化策略_第2頁
SDRAM基本操作與優(yōu)化策略_第3頁
SDRAM基本操作與優(yōu)化策略_第4頁
SDRAM基本操作與優(yōu)化策略_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第二章SDRAM基本操作與優(yōu)化策略由于指令操作的存在,SDRAM系統(tǒng)的硬件帶寬往往得不到充分利用。良好的 SDRAM訪 問策略可以提高SDRAM系統(tǒng)的硬件帶寬的利用率,在相同硬件條件下獲得更好的性能或在相 同性能要求下降低硬件成本。SDRAM具有多Bank、流水線化等結(jié)構(gòu)特性,如果能夠巧妙地排列指令,可以開發(fā)SDRAM 的并行化優(yōu)勢節(jié)省總線時間;SDRAM具有行緩沖,如果根據(jù)數(shù)據(jù)訪問的空間局部性、請求延 時的限度,適當(dāng)重排訪問請求、控制緩沖策略,可以減少指令的數(shù)量,提高總線效率。本章內(nèi)容包括:SDRAM的特性回顧與基本操作、SDRAM訪問的優(yōu)化方向與常用策略。由 于SDRAM的初始化與帶寬利用

2、率的優(yōu)化策略無關(guān),故另行歸入控制器設(shè)計原理的章節(jié)中。從 本章開始SDRAM 專指SDR SDRAM 。1 SDRAM的基本操作SDRAM 回顧SDRAM是同步動態(tài)隨機存儲器的縮寫。同步,指它有統(tǒng)一的時鐘,在時鐘上升沿采樣指令、 讀入或輸出數(shù)據(jù),與早期的異步 DRAM不同;動態(tài),指它必須不斷刷新以維持?jǐn)?shù)據(jù),與 SRAM 不同;隨機存儲器,指對它的訪問是任意的,而不像 FIFO或堆棧那樣存在訪問限制;同時, RAM 一直以來也隱含著掉電后會丟失數(shù)據(jù)的意思,與 ROM、PROM、Flash等非揮發(fā)存儲器 相對。SDRAM具有由Bank、行(Row)、歹U(Column)構(gòu)成的三維結(jié)構(gòu),如下圖:4me

3、mcell sf orx4SDRAM8memcell sf orx8SDRAM16memcell sf orx16SDRAM32memcell sf orx32SDRAM如圖,SDRAM分為4個Bank;每個Bank都包含一套二維存儲陣列,以及一個行緩沖 (即 一排靈敏放大器);陣列中的每一行,分為若干列,行激活(Activate)時,對應(yīng)的行被放入行緩沖 中,預(yù)充電(Precharge)時,對應(yīng)的行被寫回存儲陣列;行中的每一個列,由若干 DRAM單元 構(gòu)成,單元個數(shù)由SDRAM芯片的數(shù)據(jù)總線位寬決定,SDRAM的讀寫操作對應(yīng)的都是行緩沖 中的某個列。SDRAM的多個Bank可以進(jìn)行不同的工作

4、。例如,Bank0進(jìn)行行激活時,Bankl的數(shù)據(jù)傳 輸或預(yù)充電不會受到影響。實質(zhì)性的限制只有兩方面:SDRAM的指令、數(shù)據(jù)總線個只有一套,SDRAM指令之間必須滿足規(guī)定的延時條件。了解SDRAM指令與基本操作,是研究 SDRAM訪問優(yōu)化策略的基礎(chǔ),接下來將對它們作 簡要介紹。SDRAM的基本指令首先簡要介紹一下SDRAM的管腳。1973年Mostek發(fā)布了 Mostek MK4096存儲器,容量為4k,創(chuàng)新地采用了行列地址線復(fù) 用技術(shù),從而減少了管腳降低了成本,這個傳統(tǒng)延續(xù)至今。典型SDRAM的I/O管腳包括:時鐘輸入(clk)。SDRAM的最高工作頻率一般在100200MHz之間。時鐘使能(

5、cke) o與各種休眠模式有關(guān),不在本課題研究范圍之內(nèi),相關(guān)設(shè)計中直接置為1。Bank地址(ba1, ba0)。 Bank地址,選取當(dāng)前指令對應(yīng)的 Bank。地址總線(ana0)。這就是復(fù)用的行列地址總線,行操作時發(fā)送行地址,列操作時發(fā)送列地址。在Precharge、Read、Write時a10有特殊含義,見下文表格。數(shù)據(jù)總線(dqndq0)。在SDRAM術(shù)語中,dqndq0所有數(shù)據(jù)的總和也稱為1個word ,它 是三維存儲整列訪問的最小單元。數(shù)據(jù)Mask(dqm 或dqm3:0或dqmh、dqml)。4位和8位的SDRAM 使用dqm 對應(yīng)整個 word; 16位SDRAM使用dqmh、dq

6、ml對應(yīng)高、低字節(jié);32位SDRAM使用dqm分別對應(yīng)4 個字節(jié)。讀數(shù)據(jù)時dqm為1會使輸出高阻態(tài),寫數(shù)據(jù)時 DQM為1表示當(dāng)前數(shù)據(jù)不寫入。指令輸入(cs_n、ras_n、cas_n、we_n、a10)。負(fù)責(zé)向SDRAM 發(fā)送指令,不考慮休眠模式的指令真值表如下:指令縮寫cs nras ncas nwe na10地址Load Mode RegisterLMR0000 xOp-CodeAuto RefreshREF0001xxPrechargePRE00100Bank/xPrecharge AllPREA00101xBurst TerminateBT0011xxWriteWR01000Bank/

7、ColWrite with autoprechargeWRA01001Bank/ColReadRD01010Bank/ColRead with autoprechargeRDA01011Bank/ColActivateACT01011Bank/RowNo OperationNOP01111xDeselectDSEL1xxxxxLMR指令與模式寄存器模式寄存器的典型定義如下圖:MR 9Wr i t e Bur st Mode0Pr ogr ammed Bur st Lengt h1Si ngl e Locat i on AccessMR 8: 7Cper at i on Mode2 b00St

8、andsr d Oper at i onel seReser vedMR 2: 0Bur st Lengt hMR 3 =0MR 3 =13 b000113 b001223 b010443 b011883 b111Ful l PageReser vedel seReser vedReser vedMR 6: 4CAS Lat ency3 b01023 b0113el seReservedMR 3Bur st Type0Sequent i al1I nt er l eavedA_W1: 1098: 76: 432: 0Reser vedWBOp ModeCAS Lat encyBTBur st

9、Lengt h通常,Write Burst Mode 取 0, Operation Mode 取 2b00 , Burst Type 取 0,而突發(fā)傳送長 度(Burst Length)、CAS延時(Cas Latency)根據(jù)需要來選取。Burst Length ,即讀寫突發(fā)傳送的周期數(shù),一般可設(shè)置為 1、2、4、8以及Full Page ,在初 始化時通過寫模式寄存器來設(shè)置。需要注意的是,如果列讀寫時,地址沒有與BL對齊,SDRAM 會自行Wrap地址,導(dǎo)致意外的結(jié)果。Cas Latency ,即從發(fā)送列讀取指令到有效數(shù)據(jù)出現(xiàn)的延時,一般為 2或3個時鐘周期,少 數(shù)器件可以為1個周期,在初

10、始化時通過寫模式寄存器來設(shè)置。一般 CL=3時,tAC參數(shù)(即時 鐘上升沿到有效數(shù)據(jù)出現(xiàn)的延時)較小,從而使器件可以工作在較高的頻率。LMR(Load Mode Register)指令用于寫模式寄存器,以設(shè)定 Burst Length Cas Latency 等 參數(shù)。進(jìn)行LMR前,必須關(guān)閉所有的Bank中的行緩沖。發(fā)送LMR指令的同時,Bank地址為 2b00,模式寄存器的值通過地址總線發(fā)送。通常, 只在初始化時設(shè)定一次LMR之后不再更改。LMR指令之后,必須隔tMRD才能發(fā)送其他指令,當(dāng)代SDRAM中tMRD的典型值為2個時鐘 周期。從此處開始的講解中,如非特殊說明,則默認(rèn) Write B

11、urst Mode取0, Operation Mode取 2b00 , Burst Type 取 0,突發(fā)傳送長度(Burst Length)取 4, CAS 延時(Cas Latency)取 3。ACT(Activate)指令、WR(write)指令、RD(Read)指令A(yù)CT(Activate)指令。用于把指定Bank中的指定行放入該Bank的行緩沖里。發(fā)送ACT指 令的同時,ba1:0給出Bank地址,地址總線發(fā)送行地址。如果需要讀寫的數(shù)據(jù)不在相應(yīng) Bank 的行緩沖里,就需要先發(fā)送 ACT指令,載入相應(yīng)的行,之后才能完成列讀寫。ACT指令之后可以進(jìn)行列讀寫,但必須間隔 tRCD的時間。

12、不同Bank的ACT指令之間必 須滿足tRRD的時間間隔;相同Bank的ACT指令之間比滿足tRC的時間間隔。WR(Write)指令。用于向行緩沖中的指定列寫入數(shù)據(jù)。發(fā)送 WR指令的同時,ba1:0給出 Bank地址,地址總線發(fā)送列地址,并給出第一個 word的數(shù)據(jù),之后的(Burst Length - 1)個周 期里給出剩下數(shù)據(jù)。給出數(shù)據(jù)的同時可用 DQM來做Mask, 1為不寫入,0為寫入。表示列地 址時,跳過a10位,而a10為0,表示是不在寫操作后自動 Precharge。RD(Read)指令。用于從行緩沖中的指定列讀出數(shù)據(jù)。發(fā)送 RD指令的同時,ba1:0給出 Bank地址,地址總線

13、發(fā)送列地址。有效數(shù)據(jù)在 CL個周期后輸出,在Burst Length個周期內(nèi), 分別輸出Burst Length個word的數(shù)據(jù)。讀操作時,也可給出 DQM ,時序與寫操作類似,但是 不常用到。表示列地址時,跳過 a10位,而a10為0,表示是不在讀操作后自動 Precharge。如果要訪問的列在當(dāng)前行緩沖中,就不必先執(zhí)行 ACT指令了。連續(xù)的讀或?qū)懼噶钪g要滿 足tCCD間隔,tCCD 一般為2個時鐘周期,如果Burst Length為4或8,則連續(xù)的數(shù)據(jù)輸入 或輸出不受其影響。所以說,開發(fā)空間局部性可以提高 SDRAM訪問效率。從讀切換到寫的時候,由于數(shù)據(jù)總線的參數(shù)限制,可能要添加一個 B

14、us Turn Around的周 期,視具體情況而定。PRE(Precharge)、PREA(Precharge All)、WRA(Write with autoprecharge) 、RDA(Read with autoprecharge)指令PRE(Precharge)指令。用于關(guān)閉指定Bank的行緩沖,并寫回數(shù)據(jù)。發(fā)送PRE指令的同時 給出Bank地址,A10為0,表示只對當(dāng)前 Bank預(yù)充電。PREA(Precharge All)指令。用于關(guān)閉所有Bank的行緩沖,并寫回數(shù)據(jù)。發(fā)送PRE指令的 同時,A10為1,表示只對當(dāng)前Bank預(yù)充電。PRE、PREA指令之后必須隔tRP后才能進(jìn)行

15、相應(yīng)Bank的列操作,tRP典型值略小于20ns, 約對應(yīng)23個時鐘周期。當(dāng)由WR指令發(fā)起的寫操作給出最后一個數(shù)據(jù)后,間隔tWR才能發(fā)送PRE指令。因為數(shù)據(jù)寫入行緩沖需要時間。tWR也稱tDPL,典型值為2個時鐘周期。因此寫操作給出最后一個 數(shù)據(jù)后,相隔tWR+tRP才能給出相應(yīng)Bank的下一個列操作指令,這個延時簡稱tDAL。由于SDRAM的流水線化設(shè)計,tWR對同一行內(nèi)的寫后寫、寫后讀無限制。當(dāng)由RD指令發(fā)起的讀操作輸出最后一個數(shù)據(jù)前的CL-1個周期可以發(fā)送PRE指令。后面的列操作只要滿足tRP就行。WRA(Write with autoprecharge) 指令。特性與 WR指令一樣,只

16、是給出指令時 A10為1, 表示是不在寫操作后自動Precharge。其效果與“由WR指令發(fā)起的寫操作給出最后一個數(shù)據(jù) 后間隔tWR發(fā)送PRE指令” 一致。RDA(Read with autoprecharge)指令。特性與 RD指令一樣,只是給出指令時 A10為1, 表示是不在讀操作后自動 Precharge。其效果與“在由RD指令發(fā)起的讀操作輸出最后一個數(shù) 據(jù)前的CL-1個周期發(fā)送PRE指令” 一致。REF(Refresh)指令REF(Refresh)指令。用于通知 SDRAM進(jìn)行“自動”刷新,每次刷新對應(yīng)一行(row)?!白?動”指的是SDRAM內(nèi)部都包含刷新計數(shù)器,發(fā)送REF指令時,不

17、需要發(fā)送對應(yīng)的Row地址, 故也把Refresh也稱為CBR(Column Before Row)操作。發(fā)送REF指令前,必須保證每個Bank 都空閑,如果任意一個 Bank中有打開的Row Buffer ,必須先發(fā)送Precharge All或Precharge 指令。每次Refresh指令發(fā)送后,必須等待tRFC時間才能發(fā)送下一條指令,這就是刷新延時。通用SDRAM要求在64ms內(nèi)將所有Row刷新一遍,這個周期稱為tREF。SDRAM的row 數(shù)一般為4096或8192,故如果均勻地刷新,每隔15.625us或7.8125us要發(fā)送一次REF指 令。有時,即使SDRAM的row數(shù)不到409

18、6,刷新周期也按4096 row的情況計算。只要能滿 足tRFC、tREF,連續(xù)的突發(fā) Refresh也是允許的。2 SDRAM的優(yōu)化策略SDRAM的優(yōu)化策略主要包括:行緩沖策略選取、地址重映射、訪問請求重排、SDRAM指令重排。決定SDRAM優(yōu)化策略時的重要因素包括:帶寬利用率、最大訪問延時、存儲器功耗。行緩沖策略選取,與訪問的空間局部性、延時限制有關(guān)。核心思想包括:Open Page Policy , Close Page Policy ,各類折中優(yōu)化的策略,以及一些動態(tài)調(diào)整 Page Policy的技術(shù)。一般而言, Close Page Policy適用于實時性要求高或者空間局部性差的應(yīng)

19、用場合;Open Page Policy適用于實時性要求不高且空間局部性好的應(yīng)用場合。SDRAM指令重排,著重發(fā)揮SDRAM的多Bank并行、流水線化的特性,從而提升總線效率。訪問請求重排、地址重映射,是為行緩沖策略、 SDRAM指令重排服務(wù)的??梢韵蛱岣咴L問 請求空間局部性的方向優(yōu)化,從而提升Open Page Policy的效率;也可以使請求目標(biāo)地址更分 散的方向優(yōu)化,從而便于SDRAM指令重排,充分發(fā)揮多Bank并行工作的優(yōu)勢。下面對這些技術(shù)做簡要討論。行緩沖與SDRAM優(yōu)化策略。SDRAM讀寫特征與行緩沖回顧SDRAM的四個Bank各有一個Row Buffer ACT指令會將一行數(shù)據(jù)放

20、入相應(yīng) Bank的Row Buffer中;PRE、PREA指令會關(guān)閉Row Buffer寫回數(shù)據(jù)。如果某 Bank的Row Buffer是關(guān)閉 的,我們稱它為空閑(Idle)的。SDRAM的訪問存在三種情況:Page Hit。當(dāng)前訪問的Row,正好保存在相應(yīng)bank的row buffer里。此時,不需要激 活Row,直接發(fā)讀寫指令和Column地址,就可以進(jìn)行列讀寫,這就是 Back to Back讀寫。此 情況,讀寫延時最小。Page Empty。當(dāng)前訪問的Row所在的bank中,row buffer關(guān)閉。此時,需要先激活 Row,再發(fā)讀寫指令和Column地址。此情況,讀寫延時中等。Pag

21、e Miss。當(dāng)前訪問的 Row所在的bank中,row buffer打開,存的是另一個 Row的 數(shù)據(jù)。此時,必須先發(fā)送Precharge或Precharge All指令關(guān)閉row buffer ,再激活Row ,最后 發(fā)讀寫指令和Column地址。此情況,讀寫延時最大。假設(shè)PRE指令延時tRP為2個時鐘周期、ACT指令延時tRCD為2個時鐘周期,則以上 三種情況的寫時序簡圖如下:從圖中可以看出,Page Hit不導(dǎo)致帶寬損失,Page Empty的帶寬損失較小,Page Miss導(dǎo) 致的帶寬損失最大。需要注意的是,在進(jìn)行指令重排優(yōu)化的情況下,多 Bank并行工作,PRE指令延時、ACT指令

22、延時可以被“隱藏”,不一定會導(dǎo)致帶寬損失,詳細(xì)情況將在后文敘述Close Page Policy 簡介Close Page Policy指的是盡量保持行緩沖關(guān)閉的策略。對當(dāng)前行訪問結(jié)束后立刻進(jìn)行 Precharge操作,不論后面是否還要訪問該行。Close Page Policy中只發(fā)生一種情況:PageEmpty(即行緩沖為空,需要先激活行)。其讀延時為tRCD+CL ,寫延時為tRCD。Close Page Policy的讀寫延時適中并且恒定,與訪問請求的時間空間局部性無關(guān),具有良 好的可預(yù)測性(Predictabilility),適用于實時性要求較高的應(yīng)用場合。Close Page Po

23、licy的硬件實現(xiàn)比較簡潔,因為每次讀寫都是一個行激活、列讀寫、預(yù)充電 的過程。Open Page Policy 簡介Open Page Policy指的是盡量保持行緩沖打開的策略。除非需要訪問當(dāng)前同一bank中的其它行,則不進(jìn)行Precharge操作。Open Page Policy中常會發(fā)生兩種情況:Page Hit(即再次 訪問Row Buffer中的數(shù)據(jù))、Page Miss(Row Buffer中的行不是要訪問的行)。前者讀延時為 CL,寫延時為0;后者讀延時為tRP+tRCD+CL ,寫延時為tRP+tRCD。如果訪問請求的時間空間局部性很好,則發(fā)生 Page Hit的概率遠(yuǎn)大于發(fā)

24、生Page Miss的概 率,應(yīng)用Open Page Policy可以大大減少讀寫延時;如果訪問請求的時間空間分部很分散,則 發(fā)生Page Miss的概率遠(yuǎn)大于發(fā)生 Page Hit ,應(yīng)用Open Page Policy會造成較大的讀寫延時。假設(shè)Row Buffer中的數(shù)據(jù)能被下次訪問用到的概率為 x,則Open Page Policy優(yōu)于Close Page Policy的判斷條件如下:即當(dāng) x 大于 tRP/(tRP+tRCD)時,Open Page Policy 的平均讀寫延時低于 Close Page Policy 。Open Page Policy 的硬件實現(xiàn)比Close Page

25、 Policy 略復(fù)雜一些,需要判斷Page Hit與否, 還需要保證Row Buffer開啟時間不超過tRASmax的限制以防數(shù)據(jù)丟失。Open Page Policy 與 Close Page Policy 的進(jìn)一步討論由于Row Buffer的開啟與關(guān)閉消耗的能量比較多, Close Page Policy的功耗大于 OpenPage Policy ,且訪問的局部性越好,差距越明顯對于輕量級的應(yīng)用,Close Page Policy具有讀寫延時固定、電路簡潔的優(yōu)勢,Xilinx公司在Synthesizable High Performance SDRAM Controller 中給出了一

26、個不錯的設(shè)計方案。PC應(yīng)用以及單核SOC ,往往具有較好的訪問請求局部性,多采用 Open Page Policy或類 似的衍生方案。Altera公司為其NIOS軟核設(shè)計的SDRAM IP就是一個典型的例子。對于圖像處理的應(yīng)用,存儲器的訪問是很有規(guī)律性的,這給訪問的優(yōu)化帶來了方便。在每 次訪問的同時給出連續(xù)訪問長度等信息,即可實現(xiàn)存儲器的高效訪問,這也是接下來的幾章中 將要詳細(xì)討論的設(shè)計方案。在多核應(yīng)用、網(wǎng)絡(luò)服務(wù)器應(yīng)用中,由于訪問請求的來源較為分散導(dǎo)致局部性下降,似乎更 傾向于Close Page Policy,但實際應(yīng)用中往往采用更復(fù)雜動態(tài)的行緩沖策略。動態(tài)的行緩沖策略動態(tài)的行緩沖策略,即根

27、據(jù)運行中前一段時間的訪問歷史動態(tài)決定SDRAM行緩沖策略的技術(shù)。Intel在其2003年的一份專利中提出了如下思想:假設(shè)存在偏向于Open-Row和偏向于Close-Row的兩種策略。若當(dāng)前策略偏向于 Open-Row ,則對下列情況進(jìn)行雙向計數(shù):關(guān)閉當(dāng) 前行以打開新行、訪問當(dāng)前行,如果前者接二連三地出現(xiàn)并超過閾值,則更換策略;若當(dāng)前策 略偏向于Close-Row ,則對下列情況進(jìn)行雙向計數(shù):打開新行、打開上一次操作中被關(guān)閉的行, 如果后者接二連三地出現(xiàn)并超過閾值,則更換策略。不難發(fā)現(xiàn),如果兩個計數(shù)器的閾值都設(shè)為2,則整個結(jié)構(gòu)與計算機體系結(jié)構(gòu)課上討論的 2-bit 分支跳轉(zhuǎn)預(yù)測器類似。這種設(shè)計

28、的簡化框圖如下:AMD在其2005年的一份專利中,闡述了另一種典型的動態(tài)行緩沖策略。它是基于定時器 和動態(tài)計數(shù)閾值實現(xiàn)的,依然采樣如下四個事件:關(guān)閉當(dāng)前行以打開新行、訪問當(dāng)前行、打開 新行、打開上一次操作中被關(guān)閉的行。如果“關(guān)閉當(dāng)前行以打開新行”接二連三地發(fā)生,則下 調(diào)動態(tài)計數(shù)閾值;如果“打開上一次操作中被關(guān)閉的行”接二連三地發(fā)生,則上調(diào)動態(tài)計數(shù)閾 值。每當(dāng)定時器數(shù)值到達(dá)動態(tài)計數(shù)閾值時,定時器清零。另外,更新動態(tài)計數(shù)閾值時,也要清 零定時器。行緩沖關(guān)閉操作,在定時器數(shù)值到達(dá)動態(tài)計數(shù)閾值時觸發(fā),其他時間不進(jìn)行任何關(guān) 閉行緩沖的操作?;诙〞r器的設(shè)計有兩個好處:SDRAM的行緩沖開啟有時間極限,此

29、設(shè)計中只需給定動態(tài) 計數(shù)閾值的上限即可滿足此要求;此設(shè)計對應(yīng)的電路相對簡單,不必為各種策略設(shè)計不同的狀 態(tài)機與控制邏輯。此設(shè)計的簡單框圖如下。Utah大學(xué)的研究人員在2011年提出了一種基于請求預(yù)測的動態(tài)行緩沖策略。請求預(yù)測存 儲在行地址連續(xù)訪問次數(shù)表中。首次訪問時保持行緩沖打開,記下行地址、連續(xù)訪問次數(shù);如 果又一次訪問該行,則預(yù)測將發(fā)生相同次數(shù)的連續(xù)訪問。如果連續(xù)訪問次數(shù)預(yù)測過低(發(fā)生同一行關(guān)了又開的情況),則保持行緩沖打開直到連續(xù)訪問 結(jié)束,更新連續(xù)訪問預(yù)測值;如果連續(xù)訪問次數(shù)預(yù)測過高(提前開始訪問其他行),則將連續(xù)訪問 預(yù)測值減1。行地址連續(xù)訪問次數(shù)表,采取 FIFO形式,只對最近訪問

30、過的行做記錄,以減少硬件開銷。Utah大學(xué)的研究人員認(rèn)為此方法優(yōu)于之前提到的基于動態(tài)策略選擇的方案和基于可調(diào)閾值Benchmark 測試。定時器的方案,但是我認(rèn)為這需要進(jìn)一步硬件驗證與跟具體的當(dāng)然不論采用什么樣的動態(tài)行緩沖策略, 都是在以控制器的功耗、面積為代價,換取性能(或 者說帶寬利用率、最大訪問延時)的改善,小型應(yīng)用往往不需要這么復(fù)雜的策略。動態(tài)行緩沖策 略的實現(xiàn)粒度可分為:全局、Bank、行三個層次。以全局或 Bank為粒度的實現(xiàn)十分普遍;以 行為粒度,效果最好,但硬件代價巨大,可以改進(jìn)為只對最近用到過的行做預(yù)測。SDRAM 指令重排SDRAM具有四個Bank,可以同時進(jìn)行不同的操作。

31、SDRAM的操作也存在一些資源限制: 每個Bank只有一個Row Buffer ;指令總線只有一條;指令之間要滿足規(guī)定的延時;數(shù)據(jù)總線 只有一條;數(shù)據(jù)總線從讀切換到寫可能需要等待SDRAM的指令重排,與超標(biāo)量CPU的亂序執(zhí)行十分類似,都是在不產(chǎn)生數(shù)據(jù)沖突的前提 下,盡快把可用資源調(diào)配給待執(zhí)行的指令,用有意義的指令去替代NOP指令。下圖給出了一Bank交錯是一種簡單有效的指令重排,常常與Close Page Policy合用。如果能保證相鄰請求訪問的Bank不同且讀寫方向一致,則通過此技術(shù)可以達(dá)到幾乎100%的帶寬利用率。下圖給出Bank交錯的寫時序示例。Bank I nt er l eavi

32、ng Wi t h Cl ose Page Pol i cyBank xBank yBank zDat aNOP (nop) nop,pre)(nopDx6 Dx7 Dy0 vDy1 ZDy2 X Dy3 Z Dy4 Dy5Dy6Dy7 Dz0 Dz1) Dz2Assume t RCD = t RP = t DPL = BL =2228Denis Shekhalev 在 OpenCore 網(wǎng)站上給出了一種結(jié)合 Open Page Policy 以及 SDRAM 指令流水線化的SDRAM控制器設(shè)計實例。該設(shè)計的讀寫請求預(yù)取深度為3,在滿足指令延時的情況下,將第1條請求未用到的資源分配給第2條請求

33、,將前兩條請求都沒用到的資源分配給第3條請求。其基本結(jié)構(gòu)如下圖CMD DECAXSSMANBAMAPARBOUTSI G PATHDATPATHI NI TCTRL此設(shè)計的關(guān)鍵部件為 Bank Map 以及 Access Manager。 Bank Map 為 Open Page Policy 服務(wù),記錄4個Bank是否空閑,若不空閑則Row Buffer中存的是哪一行,從而判斷當(dāng)前讀寫 請求需要用什么樣的指令實現(xiàn)。Access Manager用以判斷SDRAM總線資源的可用性并保證 指令之間滿足規(guī)定的延時,有了它,就可以合理地實現(xiàn)SDRAM指令流水線化。然而,像這樣見縫插針的指令重排雖然可以

34、有效地提高SDRAM帶寬利用率,降低平均等待時間,但是也帶來了請求響應(yīng)時間的不可預(yù)測性,不利于大型系統(tǒng)中的整體性能分析。荷蘭的研究人員提出了一種基于“預(yù)先計算的訪問pattern”的解決方案,在保證響應(yīng)時間可預(yù)測性的同時,達(dá)到了較高的性能。通過 Bank交錯構(gòu)建較短的讀pattern 寫pattern、讀寫 切換pattern 寫讀切換pattern 0所有的讀寫請求都用這些 pattern來實現(xiàn),由于這些 pattern 的形式固定,讀寫請求的相應(yīng)實現(xiàn)有較高的可預(yù)測性。讀 pattern和寫pattern有近乎100%的 帶寬利用率,并且同類pattern之間可以無縫拼接并保持100%的帶寬

35、利用率。拼接pattern以 完成系統(tǒng)端讀寫請求后,帶寬利用率可能由于讀寫方向變化略有退化,但任然保持了較高的水 平。請求響應(yīng)簡圖如下:Request sPat t er nsREADW i t eREADREADWTi te( ReadJ Ref r esh W i t e JQw R工Read 工 Read 工 R/ W W i t e )Fr om Request s t o Pat t er nsSDRAM地址映射方案SDRAMSDRAM地址映射方案由兩個優(yōu)化方向:提高讀寫請求的時間空間局部性、增加操作的可并行性。良好的地址映射方案,不會把原本空間連續(xù)的請求拆分到不同的SDRAM行中;

36、良好的地址映射方案,會使連續(xù)的操作面向不同Bank中的不同行,從而為指令流水線化或多Bank交錯讀寫提供可能。地址映射方案一般是固定的,不可以在系統(tǒng)運行時更改。Utah大學(xué)的研究人員在2001年提出了一種創(chuàng)新的Impulse內(nèi)存控制器。一般計算機系統(tǒng)中,進(jìn)程的 Virtual Address需要在 TLB(Translation Lookaside Buffer) 的幫助下轉(zhuǎn)換為Physical Address ,再由內(nèi)存控制單元轉(zhuǎn)化 為DRAM硬件地址。Impulse內(nèi)存控制器旨在直接完成 Virtual Address到DRAM硬件地址的 轉(zhuǎn)換,并根據(jù)正在運行的應(yīng)用動態(tài)選擇優(yōu)化的映射方案。

37、該設(shè)計思路新穎、系統(tǒng)性強,可惜由 于實現(xiàn)復(fù)雜,至今未得到廣泛應(yīng)用。訪問請求調(diào)度實際應(yīng)用中,往往存在一個 SDRAM訪問請求隊列,這使得 SDRAM控制器可以提前知道 接下來的若干條指令。如果合理地重排這些指令,不但可以提高訪問的時間空間局部性,而且 能夠促進(jìn)SDRAM指令的并行化執(zhí)行。以下是兩種常見的訪問請求調(diào)度方案。以Bank為單位的Round Robin調(diào)度。即為每個Bank建立一個請求隊列,然后依次從每個 隊列中取出一個請求來執(zhí)行,沒有就跳過,如此循環(huán)往復(fù)。這種調(diào)度方案簡潔明了、實現(xiàn)簡便、 可預(yù)測性強、不會導(dǎo)致“請求饑餓”,而且由于它利于多bank的交錯工作,特別適合于流水線 化的 Cl

38、ose Page Policy 設(shè)計。以Bank為單位的加權(quán)調(diào)度。依然為每個 Bank建立一個請求隊列,然后循環(huán)執(zhí)行,但是等 待請求較多的隊列被優(yōu)先執(zhí)行。此方案更適合在訪問局部性較好的情況下, 與Open Page Policy 配合。Scott Rixner在ISCA2000上提出了一種結(jié)合了訪問請求調(diào)度與 SDRAM指令重排的優(yōu)化方案。該方案任然每個Bank建立一個請求隊列,然后分行激活、列訪問、預(yù)充電三個指令單元進(jìn)行仲裁,最后重排指令發(fā)給 SDRAM 0其結(jié)構(gòu)框圖如下:P Pr echar ge_C t r l _0Bank0 Ref er ence QueueRow Ar bi t e

39、r 0Col Ar bi t erAddr Ar bi t erRow Ar bi t er 3Bank3 Ref er ence QueueP Pr echar ge_C t r l _3MEM REFVDRAM OP該研究中,提到了三個仲裁優(yōu)先級的考慮因素:1等待閾值,指令單元等待超過一定閾值后優(yōu)先級提升,以防“請求饑餓”;2次序,舊的指令單元有較高的優(yōu)先級;3讀優(yōu)先,優(yōu)先滿足讀請求,減少系統(tǒng)延時。兩種預(yù)充電策略:Open ,預(yù)充電的條件為:隊列中不再有對當(dāng)前行的訪問,且存在對其他行的訪問。Closed ,預(yù)充電的條件為:隊列中不再有對當(dāng)前行的訪問。兩種行、列仲裁策略:Most Pendi

40、ng ,選擇隊列中訪問請求最多的行或列進(jìn)行操作,發(fā)掘局部性優(yōu)勢。Fewest Pending ,選擇隊列中訪問請求最少的列,盡快釋放資源。The University of Texas at Austin 的研究人員,在 MICRO2004 中指出了 Scott Rixner 方案 的兩個不足:做短期優(yōu)化不考慮長期影響、與 CPU需求結(jié)合不緊密。該團隊針對 舊M Power5 處理器,提出了基于“訪問歷史” 、“CPU讀寫平均比例”的動態(tài)調(diào)整的請求仲裁方案,在實測 中獲得了更好的效果。提高請求隊列的規(guī)模,可以使訪問請求調(diào)度的效果更好,但是這也加大了硬件開銷、使數(shù) 據(jù)沖突的檢測更為復(fù)雜,所以實際

41、應(yīng)用中需要折中考慮。需要指出的是,訪問請求仲裁一般適用于訪問請求密度較大、可用 bank較少的場合;如果 請求密度較小、可用bank較多,直接依照訪問請求隊列的順序執(zhí)行,也不會有大的性能損失。訪問請求仲裁在多核或較復(fù)雜的系統(tǒng)中,同一塊 SDRAM硬件需要響應(yīng)不同來源的請求,而這些請求的 帶寬要求與優(yōu)先級互不相同,此時就需要進(jìn)行請求仲裁。請求仲裁有很多形式,公平性、平均 性能、最差情況性能、可預(yù)測性各有千秋,該話題超出了本課題的研究范圍,此處不做深入討 論。SDRAM訪問優(yōu)化策略回顧在前面的小節(jié)里,我們討論了行緩沖策略、SDRAM指令重排、SDRAM地址映射方案、訪問請求調(diào)度、訪問請求仲裁五個主

42、題。實際上, SDRAM的各種訪問優(yōu)化技術(shù)不是孤立的,往 往要相互配合才能獲得較好的效果。這里的討論不僅適用于 SDRAM ,也適用于DDR、DDR2、DDR3 SDRAM ; Rambus公司 的DRAM以其Bank數(shù)量多著稱,更易于通過并行化提高效率,也更適合采用Open PagePolicy,但要知道Bank中的Row Buffer都是由靈敏放大器構(gòu)成的,高昂的成本使其產(chǎn)品至今 未得到廣泛應(yīng)用。作為回顧,此處給出一張SDRAM控制系統(tǒng)的示意圖:Exampl e DRAM Syst em3本章參考文獻(xiàn)Micron. 64Mb x4, x8, x16 SDR SDRAM. 2012B. Fa

43、nning. Method for Dynamically Adjusting a Memory System Paging Policy. 2003. United States Patent, Number -B1B. Sander, P . Madrid, and G. Samus, Dynamic Idle Counter Threshold Value for Use in Memory Paging Policy. 2005. United States Patent, Number -B1S. Rixner, W. J. Dally, U. J. Kapasi, P. Mattson, and J. D. Owens. Memory access scheduling. ISCA

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論