崔澤漢 陳明宇
1(計算機體系結(jié)構(gòu)國家重點實驗室(中國科學院計算技術(shù)研究所) 北京 100190)2(中國科學院大學 北京 100049)(cuizehan@ict.a(chǎn)c.cn)
大容量DRAM的刷新開銷問題及優(yōu)化技術(shù)綜述
崔澤漢1,2陳明宇1
1(計算機體系結(jié)構(gòu)國家重點實驗室(中國科學院計算技術(shù)研究所) 北京 100190)2(中國科學院大學 北京 100049)(cuizehan@ict.a(chǎn)c.cn)
動態(tài)隨機存儲器(DRAM)具有速度快、密度高、成本低的優(yōu)勢,被廣泛應(yīng)用于計算機的主存.DRAM采用電容作為存儲單元,電容電荷的多少表示數(shù)字“0”或“1”.由于存在漏電現(xiàn)象,電容里的電荷會緩慢流失,造成數(shù)據(jù)丟失.為保證數(shù)據(jù)正確性,DRAM采用周期性的刷新操作,在數(shù)據(jù)丟失前,把數(shù)據(jù)讀出然后重新寫入存儲單元.刷新操作會阻礙正常訪存的執(zhí)行,造成性能上的開銷;同時刷新操作會消耗額外的功耗,帶來功耗上的開銷.刷新的開銷與DRAM密度相關(guān):在過去,當DRAM密度較小時,需要刷新的存儲單元數(shù)較少,刷新開銷很小,并未引起關(guān)注;但是,隨著摩爾定律的發(fā)展,DRAM密度越來越大,目前已發(fā)展到千兆比特級別,其刷新周期并沒有改善,單位時間內(nèi)需要刷新的存儲單元數(shù)越來越多,從而使刷新帶來的性能和功耗開銷越來越嚴重.刷新問題目前得到了工業(yè)界和學術(shù)界的廣泛關(guān)注.首先介紹了目前DRAM的刷新方式和開銷,以及工業(yè)界已經(jīng)實現(xiàn)的一些改進;然后把工業(yè)界和學術(shù)界提出的眾多優(yōu)化方法分為“減輕刷新操作對訪存的阻塞”和“減少不必要的刷新操作”兩大類,分別進行了分析和總結(jié);最后給出了關(guān)于智能刷新管理的總結(jié)和展望.
主存;動態(tài)隨機存儲器;刷新;性能;功耗;保持時間;不必要刷新
DRAM具有速度快、密度高、成本低的特性,因此近幾十年來一直是計算機主存的首選.隨著摩爾定律的發(fā)展,處理器的頻率越來越高、核數(shù)越來越多,雖然DRAM的密度越來越高,但是其延遲、帶寬增長卻很緩慢,越來越成為制約系統(tǒng)性能的瓶頸[1-2].與此同時,隨著內(nèi)存容量需求的逐漸增大,DRAM占系統(tǒng)整體功耗的比例可達40%[3-4].
圖1顯示了DRAM系統(tǒng)的層次結(jié)構(gòu),從頂層到底層包含Rank,Chip,Bank,Sub-array,MAT,Cell.一個Rank由多個Chip并列組成,同步工作,共同驅(qū)動內(nèi)存總線.一個Chip內(nèi)部包含多個Bank,它們包含獨立的行地址譯碼器(row decoder)和感應(yīng)放大器(sense amplifier),可以并發(fā)訪問.通常認為,Bank是DRAM完成獨立操作的最小單元.但事實上,每個Bank又可進一步分割為很多Sub-array(縱向),每個Sub-array包含很多MAT(橫向).每個MAT有獨立的局部感應(yīng)放大器.一個典型的MAT包含512×512個Cell,即存儲單元.每個存儲單元由1個電容和1個晶體管組成:電容的電荷多少表示數(shù)字“1”或“0”;晶體管的柵極與字線(wordline)相連,由字線控制晶體管的導通;晶體管的漏極與位線(bitline)相連,導通時由位線表示單元里存儲的數(shù)據(jù).
Fig.1 The hierarchy of DRAM system[5].圖1 DRAM系統(tǒng)的層次結(jié)構(gòu)[5]
訪問DRAM時,首先需要“激活”1行,即提供行地址,由行地址譯碼器選通1個Sub-array中的1行,使其字線電平拉高;與字線相連的所有存儲單元的晶體管打開,電容與位線連通,電容電荷流向位線,造成細微的電壓變動;每個Sub-array的局部感應(yīng)放大器可以感知到位線上的電壓變動,并將其驅(qū)動到一定的高電平或低電平(與位線相連的電容也進行了充?放電).當局部感性放大器進一步將數(shù)據(jù)驅(qū)動到全局感應(yīng)放大器后,才能進行“讀寫”,根據(jù)提供的列地址,從全局感應(yīng)放大器中選中相應(yīng)的數(shù)據(jù),進行讀取或修改.在需要讀取另一行的數(shù)據(jù)前,需要對當前行進行“預充電”,拉低字線電平,關(guān)閉晶體管,使存儲單元與位線斷開,然后將位線電平驅(qū)動到中間狀態(tài).
DRAM數(shù)據(jù)能被正常讀取的關(guān)鍵在于上述激活過程中,電容電荷對位線造成的細微電壓變動可以被感應(yīng)放大器識別.但是,由于電容存在漏電,電容電荷會隨著時間而流失,從而導致激活過程中的電壓變動變小,直至不可識別.因此,DRAM需要被定期“刷新”,以補充流失的電荷,保證在激活過程中可以造成足夠顯著的電壓變動.
刷新操作會阻礙正常訪存的執(zhí)行,造成性能上的開銷;同時刷新操作會消耗額外的功耗,帶來功耗上的開銷.在過去,DRAM密度較小,刷新造成的影響很小,因此并未受到關(guān)注.但是,隨著摩爾定律不斷發(fā)展,DRAM密度不斷增大[6],目前已達千兆比特的量級,刷新造成的性能和功耗開銷指數(shù)增加,漸漸引起了工業(yè)界和學術(shù)界的重視.近年來,工業(yè)界的一些標準和學術(shù)界的一些研究工作都對刷新進行了一些優(yōu)化,以減輕其性能和功耗開銷.本文標題中的“大容量”即指目前千兆比特量級的DRAM,以及未來更高密度的DRAM,如無特殊說明,下文所述的DRAM都是指大容量DRAM.
本文首先簡介了目前DRAM刷新存在的問題以及工業(yè)界已經(jīng)提出的一些解決方案;然后把工業(yè)界和學術(shù)界的優(yōu)化方法分為“減輕刷新操作對訪存的阻塞”和“減少不必要的刷新操作”兩大類,進行了分析和總結(jié);最后給出了關(guān)于DRAM刷新的研究展望.
1.1 刷新要求
以JEDEC①DDRx規(guī)范[7-10]為例,要求在常溫下每64ms(高溫下為32ms)刷新一遍所有DRAM存儲單元.DDRx規(guī)范定義了一種刷新方式AR(auto refresh),為了簡化DRAM控制器設(shè)計,使其方便支持不同類型的DRAM芯片,DRAM控制器只需在每個刷新周期(比如64ms)內(nèi)向每個Rank發(fā)送8 192個刷新命令,由DRAM芯片內(nèi)部維護刷新的行指針,并根據(jù)自身密度決定要刷新的行數(shù).DRAM控制器發(fā)送2個刷新命令之間的間隔為刷新周期的1?8192,定義為tREFI;DRAM芯片執(zhí)行1個刷新命令的時間取決于DRAM芯片的密度,定義為tRFC.表1列出了DDR3DRAM在常溫(85℃以下)?高溫(85℃~95℃)下的刷新參數(shù),在高溫下刷新周期減半為32ms,相應(yīng)的刷新間隔tREFI也減半.隨著DRAM密度增大,其行大小保持不變,而總行數(shù)增多,因此每個間隔內(nèi)需要刷新的行數(shù)增多,導致tRFC不斷增大,刷新所占的時間比例tRFC?tREFI不斷增大.
Table 1 Parameters of DDR3DRAM AR(Normal?Extended Temperature)表1 DDR3DRAM AR參數(shù)(常溫?高溫)
JEDEC協(xié)議只是規(guī)定了刷新時間,但并沒有規(guī)定刷新操作具體如何實現(xiàn).以4Gb DDR3DRAM為例,要求300ns內(nèi)完成對64行(8個Bank,每個Bank刷新8行)的刷新操作.本文在接下來的章節(jié)中先介紹單行的刷新操作是如何執(zhí)行的,然后介紹如何在規(guī)定時間完成對多行的刷新.
1.2 單行刷新原理
一般來講,對DRAM單行的刷新操作是這樣執(zhí)行的:1)起始狀態(tài),所有的位線電平被預充電至VDD?2;2)行地址譯碼器選通該行,拉高字線電平,該行所有存儲單元的晶體管導通,使電容和位線連通;3)根據(jù)電容電平為高或低,電荷從電容流向位線或者從位線流入電容,從而在位線上造成細微的電平變動VDD?2±Δ,其變動方向被感應(yīng)放大器識別;4)局部感應(yīng)放大器根據(jù)變動方向,對位線進行充電或放電,將其電平拉至VDD或0,在此過程中,由于位線和電容連通,電容也被重新充電至VDD或放電至0,即進行了刷新操作.
上述過程類似于激活操作,在DDR3協(xié)議中激活操作的延遲定義為tRAS,約為35ns.在刷新下一行之前,還必須先斷開晶體管,將位線電平重新預充電至VDD?2.此過程類似于預充電操作,在DDR3協(xié)議中預充電操作的延遲定義為tRP,約為15ns.因此Joint Electron Device Engineering Council.http:??www.jedec.org可認為單行刷新等效于激活操作和預充電操作的組合,其延遲大致為50ns.
1.3 AR實現(xiàn)
由于單行刷新的延遲大致為50ns,以4Gb DRAM為例,AR要求在300ns內(nèi)完成對64行的刷新操作,因此只能通過并行方式實現(xiàn).但是,并行刷新所消耗的疊加電流必須在DRAM容許范圍內(nèi).比如,DDR3協(xié)議為了避免多個并行的激活操作帶來的電流疊加,規(guī)定了在tFAW時間(約30ns)內(nèi)只能執(zhí)行4個激活操作.如1.2節(jié)所述,單行刷新類似于激活操作,也會受到DRAM最大容許電流的限制.
目前,DRAM執(zhí)行AR時利用了Bank內(nèi)Subarray級的并發(fā)度,而不是Bank間的并發(fā)度(8個Bank并行刷新造成的電流疊加會超出DRAM的電流限制).由于刷新只需要使用每個Sub-array的局部感應(yīng)放大器(區(qū)別于激活操作),使得多個Subarray可以并行刷新,而且Bank內(nèi)多個Sub-array的并行刷新可以共用很多電路,從而使其消耗的電流大大低于線性疊加.
具體地,DRAM將一次刷新操作內(nèi)要刷新的行分為若干個組,每個組包含1個Bank內(nèi)的多行①,位于不同的Sub-array.組內(nèi)的多行利用每個Subarray的局部感應(yīng)放大器,并行進行刷新.在電流限制范圍內(nèi),組與組之間的刷新過程可以有一定的重疊.圖2顯示了多行刷新實現(xiàn)的示例:
Fig.2 Implementation of DRAM AR.圖2 DRAM AR實現(xiàn)
在AR執(zhí)行期間,DRAM Rank的所有Bank都無法處理正常訪存請求.最壞情況下,訪存的等待時間為tRFC.
1.4 ROR(RAS-only Refresh)實現(xiàn)
另一種沒有在JEDEC協(xié)議中定義、但是在學術(shù)研究中經(jīng)常被提到的刷新實現(xiàn)方式是利用DRAM激活操作實現(xiàn)刷新功能.如1.2節(jié)所述,單行刷新操作等效于對其的激活操作,由于激活操作在早期被稱為行地址選通(row address strobe,RAS),因此這種刷新實現(xiàn)方式被稱為ROR[11].
不同于AR只需控制器在每個刷新間隔內(nèi)向DRAM發(fā)送1個刷新命令,即可完成對多行的刷新;ROR要求控制器向DRAM的每個待刷新的行發(fā)送1個激活命令.激活命令的粒度更小,可以指定刷新的行地址,實現(xiàn)對單行進行控制,因此其刷新實現(xiàn)方式更靈活.比如為了避免在時間tRFC里集中刷新多行從而長時間占用整個Rank,可以將對多行的激活操作盡量分散到整個刷新間隔中;同時,當一個Bank執(zhí)行激活操作時,其他Bank仍然可以執(zhí)行正常訪存操作,減少訪存的等待時間.
由于ROR以行為粒度進行刷新控制,因此經(jīng)常被使用于一些智能刷新管理方法中.其缺點是不能充分利用Sub-array級的并發(fā)刷新在時間和功耗上的優(yōu)勢.同時,由于需要發(fā)送大量的激活命令,DRAM的命令總線更容易飽和,從而影響正常訪存命令的發(fā)送.
1.5 DRAM刷新開銷
刷新操作會阻塞正常訪存的執(zhí)行,造成性能的開銷.AR執(zhí)行期間,DRAM Rank的所有Bank都無法響應(yīng)訪存請求.ROR執(zhí)行過程中,正在刷新的Bank無法接受訪存請求.不論哪種刷新方式,都會導致訪存被堵塞,延遲增大,最終導致CPU流水線堵塞,性能降低.
同時,刷新是非常消耗功耗的操作.表2顯示了DRAM一些操作所消耗的平均電流[12].可見刷新操作是功耗最高的操作,而且持續(xù)時間很長.
Table 2 Power Parameters of 4Gb DDR3-1600DRAM表2 4Gb DDR3-1600DRAM功耗參數(shù)
隨著工藝縮進,DRAM密度仍將以2~3年的速度成倍增長,但是每64ms需要將整個DRAM刷新一遍的約束并沒有得到改善,因此,每個刷新間隔內(nèi)需要刷新的行數(shù)相應(yīng)地成倍增加,刷新所導致的性能和功耗開銷隨著密度增大而指數(shù)增長.圖3預測了DRAM密度從4Gb增長到32Gb(tRFC為640ns),相比于理想無刷新的DRAM,上述2種刷新方式所帶來的性能和功耗開銷[13].在32Gb時,AR使性能下降23.8%,功耗增長114%(ROR由于命令總線飽和,而無法完成刷新要求).
Fig.3 The normalized performance and energy of AR and ROR relative to an ideal refresh-less system.圖3 2種刷新方式相比于理想無刷新DRAM的歸一化性能和功耗
1.6 工業(yè)界關(guān)于刷新的一些優(yōu)化
1)Self Refresh.JEDEC DDRx協(xié)議[7-10]和LPDDRx[14-16]協(xié)議都支持一種Self Refresh模式,是一種低功耗模式.在這種模式下,DRAM的時鐘、DLL、輸入?輸出緩沖等部件停止工作,只有維持刷新的電路仍然工作,因此這種刷新方式相比于AR更加節(jié)省功耗.但是,這種模式的退出要耗費很長時間(≥500ns),如果有訪存到來,會被阻塞得更久,更加影響性能,因此一般只用于DRAM長期休眠的場景.
2)Postponed Refresh.JEDEC的DDRx協(xié)議[7-10]支持靈活的刷新調(diào)度,允許將AR命令推遲最多8個刷新間隔,以避免阻塞訪存請求.但這種方式一般只適用于訪存不密集的場景,對于訪存密集的場景,無論如何推遲,總是會阻塞訪存請求.
3)Per-Bank Refresh.JEDEC的LPDDR2協(xié)議[14]和LPDDR3協(xié)議[15]支持以Bank為單位進行刷新.這種方式有2個好處:①把每次耗時較長的刷新操作分成了多個耗時較短的刷新操作,從而減少阻塞訪存的時間;②一個Bank刷新時,其他Bank可以并行處理正常訪存請求.但是,完成同樣多行的刷新,多個Per-Bank Refresh的總執(zhí)行時間要長于單個All-Bank Refresh(即AR)的執(zhí)行時間,這是因為每個Per-Bank Refresh后都需要一段恢復時間,而且Bank間的刷新過程不能重疊.以Bank數(shù)為8、容量為4Gb的LPDDR3DRAM為例,AR的持續(xù)時間tRFCab=130ns,而單個Bank的刷新持續(xù)時間tRFCpb=60ns.因此,這種方式有優(yōu)勢也有劣勢,其效果取決于具體的應(yīng)用場景.
4)Fine Granularity Refresh.JEDEC的DDR4協(xié)議[7]支持1x,2x,4x的刷新模式.1x同上述的AR模式,每個刷新周期發(fā)送8192個刷新命令;2x,4x模式每個刷新周期發(fā)送的刷新命令個數(shù)增加2倍和4倍.相應(yīng)地,2x,4x的單次刷新行數(shù)也減少為1x的1?2,1?4,刷新時間tRFC有一定程度的減少.這種方式也是把一個耗時較長的刷新操作分解為多個耗時較短的刷新操作(每個操作仍以Rank為單位),但是,2x,4x模式的刷新操作后都需要一段恢復時間,其刷新消耗的總時間長于1x模式.以容量為4Gb的DDR4DRAM為例,1x模式的刷新持續(xù)時間tRFC1為260ns,而2x,4x模式的刷新持續(xù)時間tRFC2,tRFC4分別為160ns,110ns,大于1x模式的1?2,1?4.
5)Temperature Controlled Refresh.JEDEC的DDR4協(xié)議[7]支持在溫度低于45℃時,由DRAM內(nèi)部按一定的比率選擇性地跳過一些刷新命令的執(zhí)行,從而達到降低刷新功耗的目的.這主要是得益于溫度低時,電容的漏電速度減慢,保持數(shù)據(jù)的時間變長,從而可以降低刷新的頻率.但是,對于訪存密集的場景,DRAM的溫度通常會高于85℃[17],使得這種改進只能在訪存很不密集并且散熱很好的場景下才能起作用.
6)Partial Array Self Refresh.JEDEC的LPDDRx協(xié)議[14-16]支持在Self Refresh模式下禁止DRAM里的部分Bank以及Bank里的部分陣列的刷新操作,從而減少刷新的次數(shù),降低功耗.這種方式不能保證未刷新的存儲單元里的數(shù)據(jù)的正確性,因此適用于不存儲有效數(shù)據(jù)的場景.雖然目前這種方式只適用于類似休眠的Self Refresh模式,但是其工作原理很容易能擴展到正常工作的AR模式.但是,要實際應(yīng)用這種方式,需要操作系統(tǒng)事先回收相應(yīng)的存儲空間,遷移出有效數(shù)據(jù),才能禁止對其的刷新操作.
如上所述,刷新操作對性能的影響主要歸咎于其阻塞了正常訪存的執(zhí)行.因此,如何從命令調(diào)度以及刷新實現(xiàn)方式上避免刷新操作對正常訪存的阻塞,是降低刷新的性能開銷的一個研究方向.
2.1 刷新命令調(diào)度
刷新命令調(diào)度主要是DRAM控制器調(diào)整刷新操作的執(zhí)行時機,以避開正常的訪存命令執(zhí)行.圖4顯示了DRAM控制器對1個DRAM Rank進行命令調(diào)度的基本原理.在不調(diào)度的情況下,DRAM控制器每隔tREFI生成1個刷新命令,并立即執(zhí)行該刷新操作.如果訪存命令隊列不空,那么隊列中的這些訪存將至少被延遲tRFC時間.JEDEC DDRx協(xié)議的Postponed Refresh[7-10]允許將AR命令推遲最多8tREFI,從而為調(diào)度刷新命令執(zhí)行時機提供了可能.
Fig.4 Principle of request scheduling in DRAM controller.圖4 DRAM控制器的命令調(diào)度原理
一種基本的調(diào)度策略是推遲刷新操作的執(zhí)行,優(yōu)先執(zhí)行隊列中的訪存命令.新生成的刷新命令并不立即執(zhí)行,而是先填入刷新命令隊列,只有當訪存命令隊列為空或者刷新命令已經(jīng)被推遲了8tREFI時,才執(zhí)行刷新命令.這種策略降低了刷新操作的優(yōu)先級,從而減輕其對正常訪存請求的阻塞.但是這種基于訪存命令隊列是否為空的策略存在一個風險,即有可能當前訪存命令隊列為空并因此執(zhí)行了刷新操作,但是馬上又有訪存請求到來,那么新到來的訪存請求最多將被推遲tRFC時間.
ER(elastic refresh)[18]改進了上述調(diào)度策略:當訪存命令隊列為空時,不立即執(zhí)行刷新操作,而是等待一段空閑時間(idle delay),如果沒有訪存請求到來,才執(zhí)行刷新操作.其基本思想是,訪存命令隊列為空后,訪存請求有可能在idle delay的時間內(nèi)到達,因此再適當?shù)赝七t刷新操作,進一步降低阻塞訪存請求的概率.其idle delay值的選取是動態(tài)進行的,當刷新被推遲的時間較短時(小于2tREFI),idle delay值設(shè)置為較大的預測值,允許多等待一段時間;隨著刷新被推遲的時間增長(2tREFI~6tREFI),idle delay值線性下降,表示刷新的優(yōu)先級不斷提高;當刷新被推遲足夠長時間后(大于6tREFI),Idle Delay設(shè)置為0.上述idle delay的變化過程,體現(xiàn)了刷新操作的優(yōu)先級從低到高的轉(zhuǎn)變過程.
上述2種調(diào)度策略在訪存不是很密集、訪存命令隊列有可能為空的場景下比較有效,但是在訪存很密集的場景下,比如多核,訪存命令隊列基本不會為空,所有的刷新操作都將被推遲8tREFI然后強制執(zhí)行,因此并不能有效改善對訪存命令的阻塞問題[6].
2.2 訪存命令調(diào)度
除了對刷新命令進行調(diào)度外,DRAM控制器還可以對正常的訪存命令進行調(diào)度,使其避開刷新操作的執(zhí)行,避免被阻塞.主存系統(tǒng)通常擁有多個Rank,一個Rank執(zhí)行刷新操作時,其他Rank仍然可以正常工作,從而為訪存命令調(diào)度提供了可能.
PCD(preemptive command drain)策略[19]提前執(zhí)行訪存命令隊列中屬于即將要刷新的Rank的訪存請求.由于刷新有很強的周期性和規(guī)律性,DRAM控制器很容易預測即將刷新的Rank.這樣當這個Rank進入刷新狀態(tài)時,可以盡量減少訪存命令隊列中屬于這個Rank的訪存請求,減輕隊列中訪存請求與刷新的沖突概率和等待時間.
DCE(delayed command expansion)策略[19]在將訪存請求填入訪存命令隊列時,推遲填入那些屬于正在刷新的Rank的訪存請求,避免它們占用訪存命令隊列的調(diào)度資源.這樣可以將更多可執(zhí)行的訪存請求填入訪存命令隊列進行調(diào)度.
PCD和DCE策略的目標都是當一個Rank正在執(zhí)行刷新操作時,盡量減少訪存命令隊列里中屬于該Rank的訪存請求.因為這些訪存請求在訪存命令隊列中并不會被調(diào)度執(zhí)行,反而占用了隊列資源,減少了隊列中其他Rank可調(diào)度請求的數(shù)目,降低了其他Rank的命令調(diào)度效率,甚至是占滿隊列后阻塞其他Rank的命令執(zhí)行.
2.3 減少單次刷新的阻塞時間
除了利用命令調(diào)度避免訪存與刷新沖突外,如何通過刷新實現(xiàn)方式的改進,在發(fā)生沖突時減少單次刷新阻塞訪存的時間也是一個的研究方向.
FGR(fine granularity refresh)[7]通過提高刷新頻率,減少每次刷新的工作量,以降低每次刷新阻塞訪存的時間.但是FGR增加了總的刷新時間,實驗評估顯示對于大多數(shù)應(yīng)用,4x模式的性能不如1x模式的性能[19].
RP(refresh pausing)[20]是基于基本的AR所做的改進.由于AR需要一次刷新很多行,如果訪存命令在此期間到來,就會被阻塞很長時間.RP通過修改DRAM,允許在訪存命令到來時,立即暫停當前的AR,優(yōu)先執(zhí)行訪存命令,等訪存命令執(zhí)行完后,再接著執(zhí)行未完成的刷新操作.但是,在訪存密集的場景下,RP的效果有限,其會導致刷新操作被頻繁暫停,并且最終需要被強制執(zhí)行(推遲的時間超過8tREFI).
2.4 刷新與訪存并發(fā)
如何盡量使正常訪存和刷新并發(fā)進行,是降低刷新影響的另一種方法.
ROR[11]利用激活操作進行刷新,一次只刷新一個Bank的1行,允許刷新操作和訪存命令在Bank級并發(fā)執(zhí)行:一個Bank執(zhí)行刷新操作時,其他Bank可以并發(fā)執(zhí)行訪存命令.對于低密度的DRAM,這種方式降低了刷新操作和訪存命令的沖突概率,可以減少訪存的平均等待時間,因此其性能優(yōu)于AR.但是,由于不能利用Sub-array級的并發(fā)刷新,需要更多次刷新操作完成1次AR的工作量,在高密度的DRAM場景下其刷新效率不高的劣勢體現(xiàn)出來[13],一方面,頻繁的激活操作反而增大了沖突概率,另一方面,也會嚴重影響系統(tǒng)的訪存并發(fā)度,因此其性能反而不如AR,如圖3(a)所示;另外,由于同樣的原因,其功耗開銷要更大,如圖3(b)所示.
PBR(per-bank refresh)[14-15]同樣支持刷新操作和訪存命令在Bank級并發(fā)執(zhí)行,而且可以在一定程度上利用Sub-array級的并發(fā)刷新,改善ROR刷新效率不高的劣勢.實驗評估顯示PBR的性能總是好于AR[21].但是受最大電流的限制,刷新操作執(zhí)行時,可以并發(fā)執(zhí)行的訪存命令數(shù)相應(yīng)地減少,降低了系統(tǒng)的訪存并發(fā)度;而且由于Bank個數(shù)較少,仍然會有相當概率導致訪存命令和刷新操作沖突,因此這種方式依然會帶來一定的性能開銷[21].
SALR(sub-array-level refresh)[6,21]在PBR基礎(chǔ)上,更進一步的改進是在Sub-array級支持刷新操作和訪存命令的并發(fā)執(zhí)行.由于刷新只需要使用每個Sub-array的局部感應(yīng)放大器,因此可以通過修改DRAM硬件的方式,使一些Sub-array在執(zhí)行刷新時其他Sub-array可以進行正常的激活、讀寫、預充電操作.由于Sub-array的個數(shù)遠大于Bank的個數(shù),因此訪存命令和刷新操作的沖突概率極小,可以基本做到不阻塞訪存命令.不過,由于最大電流的限制,執(zhí)行刷新操作時,會減少可并發(fā)執(zhí)行的訪存命令個數(shù),從而仍在一定程度上影響性能.另外,這種方式需要對DRAM硬件進行較大改動.
2.5 小 結(jié)
表3對本節(jié)所述方法進行了歸納:
Table 3 Summary of Reducing the Blocking of Memory Accesses Due to Refresh表3 減輕刷新操作對訪存阻塞的方法匯總
不管是刷新命令調(diào)度還是訪存命令調(diào)度,其思想是不修改DRAM本身,而是改進DRAM控制器的調(diào)度策略,使刷新命令和訪存命令相互避開,降低沖突導致的訪存延遲增加,減少性能開銷.上述策略都是基于一定的先驗信息,對刷新或者訪存命令的執(zhí)行時機進行調(diào)度.不同的是,ER所依據(jù)的先驗信息(idle delay)由訪存歷史信息預測得來,而PCD和DCE所依據(jù)先驗信息(即將刷新的Rank)由刷新的規(guī)律性很容易準確得到,因此相比而言,后者更具優(yōu)勢.雖然后者可以成功地使訪存命令避開刷新操作,提高吞吐量,但是其不可避免地推遲了某些訪存命令的執(zhí)行,使其等待時間增長,從而可能造成性能上的損失.因此,更加智能的調(diào)度算法仍然是未來的研究方向.
刷新實現(xiàn)的改進可分2類:FGR和RP盡量減少單次刷新操作阻塞訪存的時間(更短的刷新操作或者可暫停的刷新操作);ROR,PBR,SALR則是尋求刷新和正常訪存可并發(fā)執(zhí)行的機會,使得刷新操作在“后臺”進行,盡量把其對正常訪存的干擾降至最低.FGR,RP在訪存很密集的情況下效果有限,因為其堵塞訪存的總時間沒變,甚至有所增長.ROR雖然實現(xiàn)最簡單,不需要修改DRAM,但是不能利用Bank內(nèi)多個Sub-array實現(xiàn)并行刷新,因此在高密度
場景下效率不高,性能反而不如AR.PBR的實現(xiàn)簡單(LPDDRx已經(jīng)支持),而且可以利用多Bank并發(fā).SALR的性能最好,但是需要對DRAM進行加大改動.PBR和SALR可能是未來的發(fā)展方向.值得注意的是,將刷新與訪存并發(fā)執(zhí)行并不是完美的解決方案,即使完全沒有沖突,由于DRAM最大電流的限制,刷新操作的“后臺”執(zhí)行會影響“前臺”可并發(fā)執(zhí)行的訪存請求數(shù),仍帶來一定的性能開銷.
上述方法在一定程度上降低了刷新操作對性能的影響,但是并沒有改變刷新操作的總量,執(zhí)行刷新操作消耗的功耗并沒有得到改善.
從圖3(b)來看,隨著DRAM密度進一步增大,刷新操作所消耗的功耗將超過執(zhí)行正常訪存命令所消耗的功耗.因此,如何識別并減少不必要的刷新操作,省去其消耗的功耗,是降低刷新的功耗開銷的一個研究方向;與此同時,由于刷新操作的減少,其對性能的影響也能得到改善.
事實上所有的DRAM行并不需要以同樣的周期刷新,有很多方法可以利用各種信息,減少不必要的刷新操作.根據(jù)所利用信息的不同,本節(jié)將從信息是什么、如何獲取相關(guān)信息、以及如何利用相關(guān)信息減少刷新操作等方面展開介紹.
3.1 利用單元保持時間差異性
保持時間指DRAM存儲單元從被寫入數(shù)據(jù)到仍然可以讀出正確數(shù)據(jù)所持續(xù)的時間,即一個存儲單元不刷新而能保持數(shù)據(jù)正確的最長時間.由于制造工藝的偏差(process variation),不同存儲單元的保持時間有較大差異,而JEDEC規(guī)范對所有存儲單元規(guī)定了統(tǒng)一的刷新周期,其實是為了保證保持時間最短的存儲單元不丟失數(shù)據(jù).事實上,保持時間的概率分布呈現(xiàn)為2部分:主要分布和長尾分布.前者涵蓋了普通的存儲單元,其平均保持時間通常長于40s;后者包括那些有缺陷的存儲單元,其保持時間較短[22].圖5顯示了不同工藝下保持時間的累計分布.從圖5可見,除了極少數(shù)存儲單元需要64ms刷新周期外,大部分的存儲單元都可以忍受更長的刷新周期.
Fig.5 The cumulative distribution of retention time at different technology nodes[22].圖5 不同工藝下保持時間的累計分布[22]
每個單元的保持時間可以通過軟件測試獲取.一種簡單的測試方法是,把所有單元的保持時間初始化為0,然后執(zhí)行下面流程:
1)設(shè)置刷新周期為T;
2)把所有存儲單元初始化為特定的數(shù)據(jù),比如全0、全1或其他模式;
3)等待一定時間,比如10×T;
4)檢查所有存儲單元的值是否為初始值,如果是,則更新該單元的保持時間為T;
5)把T設(shè)置為T+ΔT,重新執(zhí)行上述流程.
由于刷新以行為粒度,每個行的保持時間可以定義為該行中所有存儲單元的保持時間最小值.根據(jù)保持時間的差異性,不同的DRAM行實際所需要的刷新周期是不同的.利用這個信息,以下這些方式可以從硬件上對不同的行以不同的周期刷新,或者從軟件上對不同的行加以區(qū)分.
VRA(variable refresh period architecture)[23]將每行所需要的刷新周期值存儲在DRAM芯片內(nèi)部的寄存器或者非易失性存儲單元中,比如存儲N,表示該行需要的刷新周期為N×64ms;然后由DRAM芯片內(nèi)部的刷新執(zhí)行邏輯根據(jù)存儲的信息減少某些行的刷新頻率.具體地,在DRAM內(nèi)部維護計數(shù)器,記錄當前經(jīng)過了多個64ms.DRAM控制器仍按正常頻率發(fā)送AR命令,但DRAM芯片在對相應(yīng)行執(zhí)行刷新命令時,檢查其刷新周期值(N)和計數(shù)器,只有當后者為N的整數(shù)倍時,才執(zhí)行該行的刷新命令.這種方式由于需要在DRAM芯片內(nèi)增加存儲和控制開銷,會造成約7%~20%的面積開銷.
RAIDR(retention-aware intelligent DRAM refresh)[24]采用和VRA類似的思想,區(qū)別在于不修改DRAM芯片,而是將每行所需要的刷新周期值存儲在DRAM控制器內(nèi)部,由DRAM控制器對不同的行以不同的周期生成刷新命令.更進一步地,RAIDR為了優(yōu)化控制器的存儲開銷,并不精確存儲每行的刷新周期,而是將所有行按所需刷新周期分為若干個桶,每個桶用1個Bloom Filter表示.對于某一行,按照刷新周期從小到大的順序依次查找各級Bloom Filter,如果在某一級命中,則說明需要以該周期進行刷新.根據(jù)Bloom Filter的假陽性(false positive),不屬于其中的元素也可能查找命中,但這只會導致少部分行以比需求更高的頻率刷新,并不會帶來正確性問題.根據(jù)保持時間的分布,前2個桶只包含極少數(shù)的行,那么可以以極小的開銷只維護這2級Bloom Filter,從而把所有內(nèi)存行分為3個刷新等級.由于RAIDR需要通過控制刷新命令的生成,控制相應(yīng)行的刷新執(zhí)行,因此只能采用ROR方式.
DTail-R[13]也采用類似VRA的思想,區(qū)別在于把每行所需要的刷新周期值作為普通數(shù)據(jù)存儲在DRAM存儲單元中(而非特殊寄存器或者非易失性存儲單元);然后由DRAM控制器適時從DRAM中讀取出存儲的周期值,控制刷新命令的生成以減少特定行的刷新頻率.相比于DRAM芯片的容量,這種方式的存儲開銷很低.另外,由于刷新的順序性和周期性,可以設(shè)計簡單的緩存和預取機制,掩蓋DRAM控制器讀取存儲周期值的開銷.同RAIDR一樣,DTail需要由DRAM控制器跳過某些行的刷新,因此采用ROR方式是一種直接的做法.同時,DTail還提出了一種silent refresh命令,DRAM在收到這種命令后,只增加內(nèi)部計數(shù)器,不執(zhí)行刷新操作,從而允許在AR模式下跳過刷新.
ProactiveDRAM[25]降低AR的頻率,同時對那些保持時間較短的行使用額外的ROR進行刷新.ProactiveDRAM將這些保持時間較短的行的信息以Bloom Filter的形式存儲在DRAM硬件中.DRAM硬件定期檢查Bloom Filter,將保持時間較短的行的地址通過旁路信號反饋給DRAM控制器,然后觸發(fā)DRAM控制器生成相應(yīng)的ROR命令,進行額外的刷新操作.通過這種方式,對不同的行采用不同的刷新頻率.
RAPID(retention-aware placement in DRAM)[26]修改操作系統(tǒng)的內(nèi)存管理系統(tǒng),盡量不使用保持時間較小的物理頁面,以增大AR的刷新周期.首先,RAPID禁用那些保持時間特別小的物理頁面,這些頁面永遠不會被使用,因此增大刷新周期導致的錯誤也不會產(chǎn)生影響.通過刪除1%的物理頁面可以把刷新周期提高到3.2s.進一步地,RAPID把剩余的物理頁面按其保持時間大小分為幾個桶,分配內(nèi)存時優(yōu)先從保持時間較大的桶里分配物理頁面,當其中頁面使用完時,再從下一個保持時間較小的桶里分配.通過這種分配策略,RAPID可以把刷新周期設(shè)置為已經(jīng)使用的桶里的最小保持時間.那些保持時間更小的桶里的頁面由于未被使用,所以即使出錯也不會產(chǎn)生影響.然而,RAPID刪除物理頁面的做法有實用性的缺陷——通常內(nèi)核、驅(qū)動等需要使用大頁面(2MB),而在刪除了1%的物理頁面(4KB)后,很難找到可用的大頁面.
RIO(refresh incessantly but occasionally)[27]采用和RAPID類似的思想,即刪除那些保持時間特別小的物理頁面,以增大AR刷新周期.為了避免RAPID的缺陷,RIO做出了折衷,只刪除0.1%的物理頁面,這樣既能保證很容易找到可用的大頁面,又能適當?shù)卦龃笏⑿轮芷冢?/p>
3.2 利用單元數(shù)據(jù)有效性
數(shù)據(jù)有效性指DRAM存儲單元里是否存儲了有效數(shù)據(jù).系統(tǒng)初始狀態(tài)下,所有存儲單元的數(shù)據(jù)都是無效.隨著存儲單元被分配給進程,并被寫入有效數(shù)據(jù),這些存儲單元里的數(shù)據(jù)才變得有意義.而隨著這些存儲單元被進程釋放,其存儲的數(shù)據(jù)也變得無效.那么,對于這些不存儲有效數(shù)據(jù)的存儲單元,其數(shù)據(jù)正確性不需要被維護,對其的刷新操作是不必要的.
每行的數(shù)據(jù)有效性與物理內(nèi)存的分配與釋放相關(guān).通常,操作系統(tǒng)以頁面為粒度分配和回收內(nèi)存,而內(nèi)存的1行包含1個或多個物理頁面.因此,可以通過監(jiān)控操作系統(tǒng)分配頁面和回收頁面的例程,得到物理頁面的數(shù)據(jù)有效性,進而轉(zhuǎn)換為DRAM行的數(shù)據(jù)有效性信息.
SRA(selective refresh architecture)[23,28]在DRAM芯片內(nèi)部為每行增加1位寄存器,表示該行是否存儲有效數(shù)據(jù);然后由DRAM芯片內(nèi)的刷新執(zhí)行邏輯在接收到AR刷新命令時,根據(jù)相應(yīng)行的寄存器值,決定是否執(zhí)行刷新操作.這種方式由于需要在DRAM芯片內(nèi)增加存儲和控制開銷,會造成約5%的面積開銷.
PARIS(placement-aware refresh in situ)[27]在DRAM控制器內(nèi)部維護bitmap,每行或每幾行對應(yīng)1b,表示是否存儲有效數(shù)據(jù).DRAM控制器的刷新控制器邏輯在生成刷新命令時,檢查bitmap,確定是否發(fā)送相應(yīng)行的刷新命令.這種方式需要在DRAM控制器內(nèi)增加bitmap存儲空間,為了減少存儲開銷,可以使1b表示更多的行.由于需要DRAM控制器跳過某些行的刷新,因此PARIS采用ROR作為基本的刷新方式.
DTail-V[13]類似于上述的DTail-R,把每行是否存儲有效數(shù)據(jù)的信息存儲在DRAM存儲陣列中;然后由DRAM控制器適時從DRAM中讀取出相應(yīng)行的信息,控制刷新命令的生成,從而選擇是否對相應(yīng)行進行刷新.如3.1節(jié)所述,DTail既可以采用ROR,又可以支持AR.
PASR(partial array self refresh)[14-16]在硬件上將DRAM分為2個分區(qū):一個分區(qū)正常刷新,另一個分區(qū)不刷新,分區(qū)比例可調(diào).操作系統(tǒng)可以使用一定的機制,將分配的頁面遷移到正常刷新的分區(qū)中,從而關(guān)閉另一個分區(qū)的刷新,節(jié)省功耗.雖然PASR目前只支持Self Refresh,但是其原理很容易被擴展到AR.
3.3 利用單元數(shù)據(jù)容錯性
數(shù)據(jù)容錯性指對某些應(yīng)用(如多媒體、機器學習等),有些數(shù)據(jù)出現(xiàn)一定的誤差只會影響結(jié)果的精度,并不影響正確性.那么,可以利用應(yīng)用的這一特性,對不同的數(shù)據(jù)以不同的周期進行刷新,允許其出現(xiàn)一定的錯誤.
每行的數(shù)據(jù)容錯性通常需要由程序員提供信息,因為哪些數(shù)據(jù)可以容忍錯誤依賴于具體應(yīng)用,程序員將數(shù)據(jù)標注為“關(guān)鍵”和“可容錯”的.
Flikker[29]將DRAM Bank分為上下2個分區(qū)(比例可調(diào)):其中一個分區(qū)以正常周期刷新,另一分區(qū)以多倍的正常周期刷新.這種簡單的劃分方法只需要很少的硬件開銷.它需要操作系統(tǒng)在分配頁面時,根據(jù)程序員的標注,把“關(guān)鍵”的數(shù)據(jù)映射到正常刷新的分區(qū)中,把“可容錯”的數(shù)據(jù)映射到低頻率刷新的分區(qū)中.雖然Flikker只支持Self Refresh,但是其原理很容易被擴展到AR.
DTail-T[13]不需要修改操作系統(tǒng)的頁面分配策略,而是分配完物理頁面后,將程序員的標注信息進一步傳遞到具體的物理頁面,最終再標注到DRAM行.DTail-T類似于DTail-R,將標注信息存儲在DRAM存儲陣列中,然后由內(nèi)存控制器從中讀出標注信息,根據(jù)容錯能力進行多周期刷新.如3.1節(jié)所述,DTail既可以采用ROR,又可以支持AR.
3.4 利用單元訪問歷史
訪問歷史指DRAM存儲單元在多久之前被訪問過.由于對DRAM存儲單元的訪問需要先對其所在的行進行激活操作,而激活操作相當于對該行進行了刷新,因此對于那些剛剛訪問過的行,其刷新操作可以被適當推遲.
Smart Refresh[30]把內(nèi)存刷新周期分成4個階段,在內(nèi)存控制器里為每行維護2b的減1計數(shù)器.當該行被訪問時,對應(yīng)計數(shù)器值被復位為3,然后每經(jīng)過1?4周期,所有計數(shù)值減1.內(nèi)存控制器的刷新控制邏輯每個階段檢查所有行的計數(shù)值,只有那些計數(shù)值為0(說明距其上次被訪問或刷新至少經(jīng)歷了3?4周期的時間)的行才執(zhí)行刷新,并把計數(shù)器復位為3.通過這種機制,Smart Refresh可以避免重復刷新那些剛剛被訪問的行.由于需要DRAM控制器跳過某些行的刷新,因此Smart Refresh只支持采用ROR作為基本的刷新方式.
3.5 利用單元冗余信息
JEDEC之所以要求DRAM以64ms為周期刷新,是為了保證數(shù)據(jù)正確性.而為了保證數(shù)據(jù)正確性,另一種常用的做法是存儲冗余信息,如糾錯碼.比如,為了更高的可靠性,現(xiàn)在的服務(wù)器通常使用ECC內(nèi)存(可以糾正1位錯誤,檢測2位錯誤).因此,只要我們使用足夠強的糾錯機制,即使放松64ms的刷新周期,導致一定的錯誤,也可以恢復出正確數(shù)據(jù).
SEC(selective error correction)[31]降低整體刷新頻率,使得少部分存儲單元出現(xiàn)錯誤,然后對這部分內(nèi)存單元采用針對性的糾錯方式,保證其數(shù)據(jù)正確性.SEC采用ECP(error correcting pointer)[32]方式進行糾錯,每個ECP保存了1個錯誤單元的地址,以及1個額外單元用于替換錯誤單元,這種方式的存儲開銷與出錯單元的個數(shù)成正比.SEC需要事先知道所有由于降低刷新頻率而可能出現(xiàn)錯誤的內(nèi)存單元,然后構(gòu)造相應(yīng)的ECP.在每次讀取數(shù)據(jù)時,首先通過一定的方式檢查當前訪問的存儲單元是否存在對應(yīng)的ECP;如果存在ECP,則利用其中的替換單元替換從內(nèi)存中讀出的數(shù)據(jù);如果不存在ECP,則直接返回從內(nèi)存中讀出的數(shù)據(jù).在每次寫入數(shù)據(jù)時,也需要先檢查是否存在ECP,如果存在,則把數(shù)據(jù)寫入ECP的替換單元中.
ArchShield[33]是一個體系結(jié)構(gòu)級容忍內(nèi)存錯誤的框架,也支持降低刷新頻率,其思想與SEC類似.區(qū)別是SEC利用ECP進行單元級的替換,而Arch-Shield則利用Fault Map進行字級的替換(selective word-level replication).Fault Map相當于一個表格,記錄了當前地址是否存在錯誤,以及替換字的位置.每次訪問數(shù)據(jù)時,需要先檢查Fault Map,如果不存在錯誤,則訪問原始位置,否則訪問替換字.
SEC和ArchShield需要在每次數(shù)據(jù)訪問時檢查ECP和Fault Map,為了加速查找過程,2種方法都需要在DRAM控制器內(nèi)增加Cache結(jié)構(gòu),緩存最近使用過的部分ECP和Fault Map.
3.6 利用溫度信息
DRAM存儲單元的保持時間與溫度相關(guān),當溫度較低時,單元漏電速度減慢,因此可以適當?shù)亟档退⑿骂l率.
TCR(temperature controlled refresh)[7]在DRAM顆粒內(nèi)增加溫度傳感器,當溫度低于45℃時,由DRAM顆粒的控制邏輯按一定比例跳過一些刷新命令的執(zhí)行,達到節(jié)省功耗的目的.但這時DRAM控制器仍認為DRAM處于刷新狀態(tài),因此這種方式并不能降低性能開銷.
曾峰等人提出了一種溫度自適應(yīng)的DRAM刷新時鐘電路[34],頻率隨溫度上升而上升.該電路應(yīng)用于內(nèi)存控制器中,當溫度降低時,降低刷新頻率.
殷萬君提出了在DRAM存儲陣列中加入與溫度相關(guān)的PTAT冗余單元作為溫度傳感監(jiān)測單元[35].利用該傳感電路的輸出作為控制刷新時鐘頻率的輸入,從而根據(jù)溫度調(diào)節(jié)刷新頻率.
3.7 小 結(jié)
上述所利用的各種信息可以統(tǒng)稱為元數(shù)據(jù).表4總結(jié)了本節(jié)所述的各種方法:
Table 4 Summary of Reducing Unnecessary Refresh表4 減少不必要刷新操作的方法匯總
①“DRAM Chip”means that metadata is stored in extra circuit;“DRAM Array”means that metadata is stored in existing array.
②Bitmap can be considered as a table with 1bentry.
③Though PASR and Flikker are designed for Self Refresh,it is easy to implement them with AR.
利用保持時間差異性的方法最有潛力.因為從保持時間的分布[22]來看,只有很少一部分內(nèi)存單元需要64ms周期刷新,大部分內(nèi)存單元的刷新頻率可以降得很低,因此目前研究最多的也是這種方法.VRA[23],RAIDR[24],DTail-R[13],ProactiveDRAM[25]這4種硬件方法思想類似,都是對不同行采用不同的刷新頻率,區(qū)別在于智能控制和元數(shù)據(jù)的實現(xiàn)位置不同:VRA把元數(shù)據(jù)和控制邏輯都實現(xiàn)在DRAM電路中;RAIDR把元數(shù)據(jù)和控制邏輯都實現(xiàn)在DRAM控制器中;DTail-R把元數(shù)據(jù)存儲在DRAM存儲單元中,把控制邏輯實現(xiàn)在DRAM控制器中;ProactiveDRAM把元數(shù)據(jù)存儲在DRAM電路中,把控制邏輯實現(xiàn)在DRAM電路和DRAM控制器中.RAPID[26],RIO[27]都是通過把保持能力差的行在操作系統(tǒng)中隔離起來,不存儲有效數(shù)據(jù),從而降低整個DRAM的刷新頻率.
這些基于保持時間的方法都面臨2個挑戰(zhàn):1)這些方法都需要知道DRAM所有單元的保持時間分布,但是保持時間受很多因素影響,其中最難以預測的2個因素是DPD(data pattern dependence)[36]和VRT(variable retention time)[36-39].前者指單元的保持時間和周圍單元所存儲的數(shù)據(jù)相關(guān),后者指單元的保持時間會隨著時間而變化.因此,必須在保持時間測試中,測試更多的數(shù)據(jù)組合以盡量消除DPD的影響,測試更長的時間盡量覆蓋VRT的變化周期.但是這無形中增加了測試的成本,而且測試的準確性(可靠性)很難保證.2)這些方法都是以行為單位進行管理,即假設(shè)只有很少一部分行需要64 ms刷新周期.但是隨著制造工藝向20nm以下縮進,保持時間較短的單元數(shù)會增加[40],從而導致包含這樣單元的行數(shù)增加,即需要64ms刷新的行數(shù)增加.極端情況下,只要每行包含1個這樣的存儲單元,那么所有的內(nèi)存行都需要以64ms為周期進行刷新.這個趨勢會減弱這些以行為粒度管理的方法的效果,而那些從操作系統(tǒng)中刪除行的做法將變得更加不可行.針對第1個挑戰(zhàn),如何解決測試的可靠性問題,是采用更嚴格(成本更高)的測試,還是運行時動態(tài)檢測,是未來需要研究的問題.針對第2個挑戰(zhàn),如何以其他粒度管理刷新,或者進一步利用不同單元保持時間的空間分布特性,是可能的研究方向.
利用數(shù)據(jù)有效性的方法最可靠,只有使用的內(nèi)存才需要刷新,其效果取決于系統(tǒng)的內(nèi)存使用量.因此,在內(nèi)存利用率很高的系統(tǒng)中,其效果非常有限.不過,這種方法適宜和其他方法結(jié)合使用,空閑內(nèi)存完全不刷新,使用的內(nèi)存通過其他方式減少刷新.
利用數(shù)據(jù)容錯性的方法依賴于具體的應(yīng)用程序,對有些應(yīng)用程序(多媒體、機器學習等)會有比較大的應(yīng)用潛力.但是,這種方法必須保證程序能正確執(zhí)行,即某些數(shù)據(jù)的錯誤只帶來結(jié)果的精度誤差,而不能導致程序的控制流出錯.因此,如何在保證程序正確執(zhí)行的前提下,在應(yīng)用層面更好地發(fā)掘數(shù)據(jù)的容錯性,是未來需要研究的問題.
利用訪問歷史的方法的效果取決于刷新周期時間內(nèi)被訪問的行的比例,然而隨著內(nèi)存密度增大,總行數(shù)越來越多,但是刷新周期內(nèi)被訪問的行數(shù)受限于應(yīng)用程序的footprint,卻是很有限的,因此這種方式的效果隨著密度增大變得越來越有限.不過這種方式非常適用于作為高速緩存的eDRAM,因為其總行數(shù)很小,且訪問頻度很高[41].
利用冗余信息的方法,其糾錯機制的性能、成本開銷需要在可承受的范圍內(nèi).盲目地為所有存儲單元增強糾錯能力并不可取,更好的做法是選擇性地為最可能出現(xiàn)錯誤的單元增強糾錯能力.但是這種選擇性的機制都需要事先知道哪些單元在降低刷新頻率時會出現(xiàn)錯誤,然后才能為其提供冗余信息[31,33],從而也面臨著與保持時間測試同樣的挑戰(zhàn)——其測試的可靠性是需要解決的問題.
利用溫度的方法實現(xiàn)簡單,只需簡單的傳感器和頻率調(diào)節(jié)功能.不過,隨著溫度的下降,刷新頻率的降低比例是一個重要的參數(shù).如果頻率降低過多,有可能導致單元丟失數(shù)據(jù),造成可靠性的問題.
對于利用保持時間差異性、數(shù)據(jù)有效性、數(shù)據(jù)容錯性這3類元數(shù)據(jù)的方法,其元數(shù)據(jù)的更新和使用都相對不頻繁,只需在初始測試或數(shù)據(jù)分配?釋放時設(shè)置,在執(zhí)行刷新命令時使用.DTail[13]提供了一種比較好的解決方案,把這些元數(shù)據(jù)存儲在DRAM陣列中,相比于DRAM容量,其存儲開銷可忽略不計.另外,由于刷新有很強的規(guī)律性,并且相對不頻繁,可以設(shè)計簡單的預取和緩存機制,掩蓋元數(shù)據(jù)的訪問開銷.
對于利用訪問歷史信息和冗余信息這2類元數(shù)據(jù)的方法,其元數(shù)據(jù)的更新或使用很頻繁,比如Smart Refresh[30]需要在每次訪問時更新計數(shù)器,SEC[31],ArchShield[33]需要在每次訪問時檢查ECP,F(xiàn)ault Map.由于元數(shù)據(jù)的數(shù)據(jù)量過大,在DRAM控制器內(nèi)維護的成本很高,而將其維護在DRAM陣列中又會帶來很大的訪問開銷.因此,一種解決思路[31,33]是將其維護在DRAM陣列中,同時在DRAM控制器內(nèi)維護簡單的Cache結(jié)構(gòu)緩存最近使用的元數(shù)據(jù).但是,由于元數(shù)據(jù)的數(shù)據(jù)量與內(nèi)存容量成正比,隨著內(nèi)存容量的增大,Cache的命中率勢必會下降,從而導致元數(shù)據(jù)訪問開銷增大.目前的Cache解決方案比較簡單,而且最大只評估了8GB的內(nèi)存容量[33],但是,對于更大容量的內(nèi)存系統(tǒng)其效果如何值得商榷(目前主流的服務(wù)器內(nèi)存配置遠大于8GB).因此,評估內(nèi)存容量對于DRAM控制器中的元數(shù)據(jù)Cache的影響,以及如何設(shè)計對內(nèi)存容量可擴展的Cache機制,是未來值得研究的問題.
雖然在過去,DRAM刷新的性能和功耗開銷很小,并未受到太多關(guān)注.但是,隨著摩爾定律的發(fā)展,DRAM密度持續(xù)增大,刷新所造成的性能和功耗開銷指數(shù)增加.而且,隨著3D堆疊技術(shù)的興起[42-43],DRAM芯片的工作溫度進一步提升,導致刷新頻率進一步提高(95℃~115℃溫度范圍內(nèi),刷新周期進一步減小為8ms[43]),其開銷也進一步增大.因此,近幾年工業(yè)界和學術(shù)界越來越重視刷新問題的研究.
本文將工業(yè)界和學術(shù)界提出的眾多優(yōu)化方案歸納為兩大類進行了分析和總結(jié).首先,可以通過控制器調(diào)度或改進刷新實現(xiàn)機制的方法,降低正常訪存和刷新操作沖突的概率和時間,發(fā)掘兩者并發(fā)執(zhí)行的可能,從而減輕刷新操作對訪存的阻塞.其次,可以利用各種指導信息(元數(shù)據(jù)),對不同的內(nèi)存單元采用不同的刷新策略,減少不必要的刷新.前者可以改善性能,后者可同時降低功耗.
其中,利用保持時間的方法最具吸引力,因為工藝偏差使得絕大部分單元都可以容忍更低的刷新頻率.但是,這種方法有2個問題,目前尚沒有得到很好的解決:1)由于DPD和VRT問題的存在,使得準確獲取保持時間比較困難,基于不準確的測試結(jié)果進行刷新控制會帶來可靠性的問題.因此需要從測試方法或者容錯方向進行優(yōu)化,提高可靠性.2)DRAM以行為粒度刷新,雖然保持時間很短的單元占單元總數(shù)的比例很小,但是如果它們在空間上分布很隨機,且數(shù)量足夠多,那么有可能大部分行都會包含這些單元,從而無法降低刷新頻率.因此需要研究這些單元的空間分布特性,或者改進刷新的粒度,從而避免這種情況.
綜合現(xiàn)有的研究情況,目前已經(jīng)有很多不同的優(yōu)化方案,這些方案從研究走向?qū)嵱茫媾R著效果、成本和可靠性的問題.一個比較容易接受的方案:首先,應(yīng)該硬件改動較?。黄浯?,應(yīng)該把改動盡量限制在一個層次,并對其他層次透明,否則可能需要對接口協(xié)議進行擴展;另外,最好能同時兼顧多種方法同時發(fā)揮效果;最重要的是,那些放松64ms刷新約束的方案必須保證可靠性不受影響.
[1]Wulf W A,McKee S A.Hitting the memory wall:Implications of the obvious[J].ACM SIGARCH Computer Architecture News,1995,23(1):20 24
[2]Rogers B M,Krishna A,Bell G B,et al.Scaling the bandwidth wall:Challenges in and avenues for CMP scaling[C]??Proc of the Int Symp on Computer Architecture(ISCA).New York:ACM,2009:371 382
[3]Barroso L A,H lzle U.The datacenter as a computer:An introduction to the design of warehouse-scale machines[J].Synthesis Lectures on Computer Architecture,2009,4(1):1 108
[4]Lefurgy C,Rajamani K,Rawson F,et al.Energy management for commercial servers[J].IEEE Computer,2003,36(12):39 48
[5]Zhang T,Poremba M,Xu C,et al.CREAM:A concurrentrefresh-aware DRAM memory system[C]??Proc of the Int Symp on High-Performance Computer Architecture(HPCA).Piscataway,NJ:IEEE,2014:368 379
[6]ITRS.ITRS report 2012update[R?OL].Int Technology Roadmap for Semiconductors,2012[2014-12-11].http:??www.itrs.net?ITRS%201999-2014%20Mtgs,%20Presentations% 20&%20Links?2012ITRS?Home2012.htm
[7]JEDEC.JESD79-4:DDR4SDRAM[S].Arlington,VA:JEDEC Solid State Technology Association,2012
[8]JEDEC.JESD79-3D:DDR3SDRAM[S].Arlington,VA:JEDEC Solid State Technology Association,2009
[9]JEDEC.JESD79-2C:DDR2SDRAM[S].Arlington,VA:JEDEC Solid State Technology Association,2006
[10]JEDEC.JESD79C:Double Data Rate(DDR)SDRAM[S].Arlington,VA:JEDEC Solid State Technology Association,2003
[11]Micron.Various methods of DRAM refresh,TN-04-30[R].Boise,ID:Micron Technology,Inc,1999
[12]Micron.4Gb:x4,x8,x16DDR3SDRAM features[R].Boise,ID:Micron Technology,Inc,2009
[13]Cui Z,McKee S A,Zha Z,et al.DTail:A flexible approach to DRAM refresh management[C]??Proc of the Int Conf on Supercomputing(ICS).New York:ACM,2014:43 52
[14]JEDEC.JESD209-2E:Low Power Double Data Rate 2(LPDDR2)[S].Arlington,VA:JEDEC Solid State Technology Association,2010
[15]JEDEC.JESD209-3:Low Power Double Data Rate 3(LPDDR3)[S].Arlington,VA:JEDEC Solid State Technology Association,2012
[16]JEDEC.JESD209B:Low Power Double Data Rate(LPDDR)[S].Arlington,VA:JEDEC Solid State Technology Association,2010
[17]Liu S,Leung B,Neckar A,et al.Hardware?software techniques for DRAM thermal management[C]??Proc of the Int Symp on High-Performance Computer Architecture(HPCA).Piscataway,NJ:IEEE,2011:515 525
[18]Stuecheli J,Kaseridis D.Elastic refresh:Techniques to mitigate refresh penalties in high density memory[C]??Proc of the Int Symp on Microarchitecture(MICRO).Los Alamitos,CA:IEEE Computer Society,2010:375 384
[19]Mukundan J,Hunter H,Kim K H,et al.Understanding and mitigating refresh overheads in high-density DDR4 DRAM systems[C]??Proc of the Int Symp on Computer Architecture(ISCA).New York:ACM,2013:48 59
[20]Nair P,Chou C C,Qureshi M K.A case for refresh pausing in DRAM memory systems[C]??Proc of the Int Symp on High-Performance Computer Architecture(HPCA).Piscataway,NJ:IEEE,2013:627 638
[21]Chang K K W,Lee D,Chishti Z,et al.Improving DRAM performance by parallelizing refreshes with accesses[C]?? Proc of the Int Symp on High-Performance Computer Architecture(HPCA).Piscataway,NJ:IEEE,2014:356 367
[22]Kim K,Lee J.A new investigation of data retention time in truly nanoscaled DRAMs[J].IEEE Electron Device Letters,2009,30(8):846 848
[23]Ohsawa T,Kai K,Murakami K.Optimizing the DRAM refresh count for merged DRAM?logic LSIs[C]??Proc of the Int Symp on Low Power Electronics and Design(ISLPED).New York:ACM,1998:82 87
[24]Liu J,Jaiyen B,Veras R,et al.RAIDR:Retention-aware intelligent DRAM refresh[C]??Proc of the Int Symp on Computer Architecture(ISCA).Piscataway,NJ:IEEE,2012:1 12
[25]Wang J,Dong X,Xie Y.ProactiveDRAM:A DRAM-initiated retention management scheme[C]??Proc of the Int Conf on Computer Design(ICCD).Piscataway,NJ:IEEE,2014:22 27
[26]Venkatesan R K,Herr S,Rotenberg E.Retention-aware placement in DRAM(RAPID):Software methods for quasinon-volatile DRAM[C]??Proc of the Int Symp on High-Performance Computer Architecture(HPCA).Piscataway,NJ:IEEE,2006:155 165
[27]Baek S,Cho S,Melhem R.Refresh now and then[J].IEEE Trans on Computers,2013,63(12):3114 3126
[28]Isen C,John L.ESKIMO:Energy savings using semantic knowledge of inconsequential memory occupancy for DRAM subsystem[C]??Proc of the Int Symp on Microarchitecture(MICRO).New York:ACM,2009:337 346
[29]Liu S,Pattabiraman K,Moscibroda T,et al.Flikker:Saving DRAM refresh-power through critical data partitioning[C]??Proc of the Int Conf on Architectural Support for Programming Languages and Operating Systems(ASPLOS).New York:ACM,2011:213 224
[30]Ghosh M,Lee H H S.Smart refresh:An enhanced memory controller design for reducing energy in conventional and 3D die-stacked DRAMs[C]??Proc of the Int Symp on Microarchitecture(MICRO).Los Alamitos,CA:IEEE Computer Society,2007:134 145
[31]Lin C H,Shen D Y,Chen Y J,et al.SECRET:Selective error correction for refresh energy reduction in DRAMs[C]??Proc of the Int Conf on Computer Design(ICCD).Piscataway,NJ:IEEE,2012:67 74
[32]Schechter S,Loh G H,Straus K,et al.Use ECP,not ECC,for hard failures in resistive memories[C]??Proc of the Int Symp on Computer Architecture(ISCA).New York:ACM,2010:141 152
[33]Nair P J,Kim D H,Qureshi M K.ArchShield:Architectural framework for assisting DRAM scaling by tolerating high error rates[C]??Proc of the Int Symp on Computer Architecture(ISCA).New York:ACM,2013:72 83
[34]Zeng Feng,Ren Mingming,Yi Maoxiang,et al.Temperature controlled DRAM refresh clocking circuit[J].Modern Electronics Technique,2009,32(15):181 183(in Chinese)(曾鋒,任明明,易茂祥,等.溫度自適應(yīng)性DRAM刷新時鐘電路[J].現(xiàn)代電子技術(shù),2009,32(15):181 183)
[35]Yin Wanjun.Design of DRAM refresh clock generation circuit based on temperature[D].Chengdu:Southwest Jiaotong University,2014(in Chinese)(殷萬君.基于溫度的DRAM刷新時鐘產(chǎn)生電路設(shè)計[D].成都:西南交通大學,2014)
[36]Liu J,Jaiyen B,Kim Y,et al.An experimental study of data retention behavior in modern DRAM devices:Implications for retention time profiling mechanisms[C]??Proc of the Int Symp on Computer Architecture(ISCA).New York:ACM,2013:60 71
[37]Yaney D,Lu C,Kohler R,et al.A meta-stable leakage phenomenon in DRAM charge storage—Variable hold time[C]??Proc of the Int Electron Devices Meeting(IEDM).Piscataway,NJ:IEEE,1987:336 339
[38]Restle P,Park J,Lloyd B.DRAM variable retention time[C]??Proc of the Int Electron Devices Meeting(IEDM).Piscataway,NJ:IEEE,1992:807 810
[39]Kim H,Oh B,Son Y,et al.Characterization of the variable retention time in dynamic random access memory[J].IEEE Trans on Electron Devices,2011,58(9):2952 2958
[40]Kim K,Chung U I,Park Y,et al.Extending the DRAM and FLASH memory technologies to 10nm and beyond[C]?? Proc of the SPIE Advanced Lithography.San Jose,CA:Int Society for Optics and Photonics,2012:1 11
[41]Agrawal A,Jain P,Ansari A,et al.Refrint:Intelligent refresh to minimize power in on-chip multiprocessor cache hierarchies[C]??Proc of the Int Symp on High-Performance Computer Architecture(HPCA).Piscataway,NJ:IEEE,2013:400 411
[42]HMCC.Hybrid Memory Cube Specification 1.0[S].Beaverton,OR:Hybrid Memory Cube Consortium,2013
[43]Tezzaron.OctopusTM8-port DRAM for die-stack applications[R].Naperville,IL:Tezzaron Semiconductor Corp,2010
Cui Zehan,born in 1989.PhD.Member of China Computer Federation.His main research interests include computer architecture,memory system,performance optimization and low power(cuizehan@ict.a(chǎn)c.cn).
Chen Mingyu,born in 1972.Professor and PhD supervisor.Member of China Computer Federation.His main research interests include architecture,operating system and algorithm optimization for high performance computers and datacenter networks(cmy@ict.a(chǎn)c.cn).
Problems and Optimizations of Refresh for Large-Capacity DRAM
Cui Zehan1,2and Chen Mingyu11(State Key Laboratory of Computer Architecture(Institute of Computing Technology,Chinese Academy of Sciences),Beijing100190)2(University of Chinese Academy of Sciences,Beijing100049)
DRAM(dynamic random access memory)is widely used as main memory of computer system,which is of fast speed,high density and low cost.DRAM uses capacitors as basic storage cells,and uses the amount of charges to represent digital“0”and“1”.However,the capacitor charges leak over time,causing data lost.To maintain data integrity,DRAM periodically refreshes all cells-read data out before lost and rewrite into cells.Refresh operations block normal memory requests,causing performance overhead;refresh operations also consume extra power,causing energy overhead.The refresh overheads are related to DRAM density.In the past,DRAM density was relative small,and the amount of cells needing to be refreshed was not that large,so the overheads gain little attention.But as the evolving of Moore s Law,DRAM density grows to Gigabits today,and more cells need to be refreshed during the same period,exacerbating the performance and energy overheads.The problem of refresh has now been an important concern for both industry and academia.In this paper,we first introduce how refreshes are performed,its overheads,and some improvements from industry;then we classify the many improvements from industry and academia into two categories-reducing the blocking of memory requests,and reducing the unnecessary refreshesand give our analysis and summaries,respectively;finally,we conclude the research work and point out the possible research directions.
main memory;dynamic random access memory(DRAM);refresh;performance;power;retention time;unnecessary refresh
TP333.1
2014-12-11;
2015-04-28
國家自然科學基金項目(61221062,61272132,61331008);國家“九七三”重點基礎(chǔ)研究發(fā)展計劃基金項目(2011CB302502);中國科學院戰(zhàn)略性先導專項課題(XDA06010401)
This work was supported by the National Natural Science Foundation of China(61221062,61272132,61331008),the National Basic Research Program of China(973Program)(2011CB302502),and the State Priority Research Program of the Chinese Academy of Sciences(XDA06010401).
①根據(jù)具體實現(xiàn)和電流限制,每個組也可能包含少數(shù)幾個(比如2個)Bank的行.