卡內(nèi)基梅隆大學(xué)的Kevin K. Chang發(fā)表了一篇亮眼、出色的博士論文——《理解和改進(jìn)基于DRAM的內(nèi)存系統(tǒng)的延遲》(Understanding and Improving the Latency of DRAM-Based Memory Systems),解決了DRAM問(wèn)題,并提出了一些新的架構(gòu)改進(jìn)辦法,以在DRAM延遲方面做出實(shí)質(zhì)性的改進(jìn)。
三個(gè)問(wèn)題
Kevin將DRAM延遲問(wèn)題分成四個(gè)部分,筆者將在這里總結(jié)其中三個(gè):
·低效的批量數(shù)據(jù)移動(dòng)。
·DRAM刷新干擾。當(dāng)DRAM正在刷新時(shí),它不能全部被訪問(wèn)。
·單元格(Cell)潛伏期的變化——由于制造變異性。
至于第四個(gè)問(wèn)題:延遲所帶來(lái)的影響,有興趣的朋友可以一起討論。
1.低效的批量數(shù)據(jù)移動(dòng)
在內(nèi)存和存儲(chǔ)代價(jià)高昂的時(shí)候,數(shù)據(jù)移動(dòng)被限制在一個(gè)寄存器大小的塊中,或者最多是來(lái)自磁盤的512字節(jié)塊。但如今,在存儲(chǔ)容量達(dá)千兆字節(jié)的存儲(chǔ)空間和海量?jī)?nèi)存的情況下,海量數(shù)據(jù)移動(dòng)變得越來(lái)越普遍。
但數(shù)據(jù)移動(dòng)的架構(gòu)——從內(nèi)存到CPU,再到有限的內(nèi)存總線——都沒(méi)有改變。Chang的建議是一種新型的、高帶寬的存儲(chǔ)器子陣列之間的數(shù)據(jù)通路,利用幾個(gè)隔離晶體管在同一存儲(chǔ)器中的子陣列之間創(chuàng)建寬——8192位寬——并行總線。
2.DRAM刷新干擾
DRAM內(nèi)存單元需要刷新以保存數(shù)據(jù),這就是為什么它被稱為動(dòng)態(tài)RAM。DRAM刷新是成隊(duì)列,而不是一次性刷新的,因?yàn)檫@樣做需要太多的能耗。但是,當(dāng)一個(gè)隊(duì)列被刷新時(shí),它不能被訪問(wèn),這會(huì)造成延遲。
DRAM的延遲正在變高,因?yàn)殡S著芯片密度的增加,需要更新更多的隊(duì)列,32Gb的芯片上可能降低將近20%的性能。
Chang提出了兩種機(jī)制,即通過(guò)對(duì)bank和子陣列的內(nèi)存訪問(wèn)進(jìn)行并行刷新來(lái)隱藏刷新延遲。一個(gè)是使用無(wú)序的per-bank刷新,使內(nèi)存控制器可以指定一個(gè)空閑的bank來(lái)刷新,而不是常規(guī)的嚴(yán)格循環(huán)順序。第二種策略是寫-刷新操作并行化,使刷新延遲和寫延遲重疊。
在他的測(cè)試中,使用8核CPU,這些策略提高了超過(guò)27%的加權(quán)內(nèi)存性能。
3.單元格延遲變化
得益于制造工藝的提升,記憶單元格可以有大量性能提升,隨著密度的增加而增加。但是DRAM被指定以最慢的單元的速度可靠運(yùn)行,這意味著如果使用最快的單元格,就會(huì)有顯著的性能上升。
Chang在論文中提出了兩種利用這種變化的機(jī)制,獲得的速度提升從13%提高到了幾乎20%。
探索與優(yōu)化
在系統(tǒng)架構(gòu)中,探索瓶頸和修復(fù)瓶頸的工作是沒(méi)有終點(diǎn)的。過(guò)去20年內(nèi),DRAM一度被認(rèn)為難有進(jìn)步,但我們看到,其延遲水平也會(huì)被改變。
隨著越來(lái)越多的晶體管、專業(yè)指令集和諸如此類的性能的提高,降低DRAM延遲也將成為性能改進(jìn)的主要目標(biāo)。