用基于CAM的DDR控制器架構(gòu)實(shí)現(xiàn)DDR DRAM效率最大化
多年來,對(duì)芯片外部DDR SDRAM的訪問已經(jīng)成為SoC設(shè)計(jì)的一個(gè)不可分割的部分。當(dāng)考慮DDR IP時(shí),SoC設(shè)計(jì)師面臨的一個(gè)選擇是自己做IP還是從第三方IP供應(yīng)商那里獲得授權(quán)。
本文引用地址:http://cafeforensic.com/article/201610/307440.htm正如大多數(shù)IP一樣,選擇DDR接口IP的標(biāo)準(zhǔn)包括面積、功耗、功能和性能。隨著更多的功能和應(yīng)用被集成到SoC之中,CPU所需的處理能力和其它處理功能也必須相應(yīng)地提高。與處理能力提高攜手并進(jìn)的通常是DDR帶寬需求的提高,因此性能便成為了選擇DDR IP的最重要標(biāo)準(zhǔn)。
起初,DDR SDRAM被設(shè)計(jì)成目前架構(gòu)的一個(gè)主要原因是為了滿足我們熟知的DDR SDRAM體系結(jié)構(gòu)要求。它的主要目的就是創(chuàng)造一種小尺寸和引腳數(shù)量少的低成本片外存儲(chǔ)器。SDRAM的存儲(chǔ)單元非常小,它們由單通道柵極晶體管和儲(chǔ)存電荷的電容構(gòu)成。該接口通過共享相同的、用于讀寫的總線和分清行列的地址引腳來降低使用的引腳數(shù)量。雖然實(shí)現(xiàn)低成本這一主要目標(biāo)得以實(shí)現(xiàn),但它導(dǎo)致了一種不能以高效的方式進(jìn)行隨機(jī)尋址的芯片外存儲(chǔ)器架構(gòu)。為適應(yīng)數(shù)據(jù)寫入或從SDRAM讀出的低效率,SoC需要使用一個(gè)控制器來管理對(duì)DDR SDRAM的訪問。當(dāng)今絕大多數(shù)存儲(chǔ)器控制器都會(huì)考慮DDR SDRAM的低效性,并且試圖重組到DDR SDRAM的命令,以將無效指令數(shù)量減至最少,并提高SoC訪問SDRAM的效率(帶寬)。
DDR SDRAM控制器傳統(tǒng)上通過使用一個(gè)先入先出(FIFO)架構(gòu)來評(píng)估流量請(qǐng)求隊(duì)列(通常被稱為一種前瞻性)來對(duì)流量重新排序。后來,隨著技術(shù)進(jìn)步引入了一種新的DDR控制器,它充分利用了一種內(nèi)容可尋址存儲(chǔ)器(CAM)前瞻性架構(gòu)來對(duì)流量重新排序。
【分頁導(dǎo)航】
第1頁:背景介紹
第2頁:DDR SDRAM訪問特性和效率測試
第3頁:DDR控制器效率對(duì)比
DDR SDRAM訪問特性
DDR SDRAM芯片內(nèi)包含多個(gè)獨(dú)立的存儲(chǔ)體(Banks)—典型的是8個(gè)存儲(chǔ)體,如圖1所示。每個(gè)存儲(chǔ)體可以處于閑置、活躍或者依次充電的狀態(tài)。通過一個(gè)“激活”指令可以“打開”一個(gè)閑置bank,并將規(guī)定行的數(shù)據(jù)讀進(jìn)一個(gè)感知放大器陣列中,它存儲(chǔ)了所有讀寫操作期間的數(shù)據(jù)。
EDA_AN_01.jpg onload=thumbImg(this) alt= />
這個(gè)過程需要一些時(shí)間,并導(dǎo)致在從任何給定行中讀取數(shù)據(jù)前就增加了開銷。訪問存儲(chǔ)于讀出放大器中的數(shù)據(jù)的速度會(huì)更快。此外,每條讀/寫命令在行內(nèi)使用一個(gè)列地址來訪問數(shù)據(jù)。
若存儲(chǔ)控制器想要訪問一個(gè)不同的行,它必須首先讓該存儲(chǔ)體的讀出放大器返回到一個(gè)閑置狀態(tài),準(zhǔn)備去讀出下一行。這被稱作“預(yù)充電”命令,或者“關(guān)閉”這一行。在該存儲(chǔ)體完全變成閑置狀態(tài)以便于在可以接受另一個(gè)激活指令之前,有一段必須清空的最短時(shí)間。
訪問時(shí)間從最長到最短,分為如下的層級(jí):
1,在另一不同的行被打開時(shí),訪問一行(要求處于打開的行先被關(guān)閉,另一個(gè)新的行才被打開)
2,訪問一個(gè)處于關(guān)閉的行(要求該行被打開)
3,訪問當(dāng)前被打開的行除了訪問時(shí)間之外,存儲(chǔ)控制器的實(shí)現(xiàn)還有許多其它時(shí)序考慮因素(如:刷新、斷電和初始化)。例如:將存儲(chǔ)子系統(tǒng)從讀狀態(tài)轉(zhuǎn)變?yōu)閷憼顟B(tài),或者從寫狀態(tài)轉(zhuǎn)變?yōu)樽x狀態(tài),會(huì)造成與接口總線轉(zhuǎn)換方向相關(guān)的延遲。如果發(fā)生次數(shù)太多,就會(huì)降低數(shù)據(jù)從SDRAM移進(jìn)和移出的整體效率。
測量效率
數(shù)據(jù)傳輸效率是通過一個(gè)存儲(chǔ)器接口的可用數(shù)據(jù)傳輸帶寬數(shù)值的一種度量。效率通常由一種特定的存儲(chǔ)器接口實(shí)現(xiàn)方式的理論最大存儲(chǔ)器傳輸帶寬的一個(gè)百分比來表示。
例如,如果一個(gè)DDR3SDRAM是八位寬度,工作在800MHz時(shí)鐘,那么理論上的最大傳輸速率為1600Mbps。如果該SDRAM實(shí)現(xiàn)的平均傳輸速率為800Mbps,那么該存儲(chǔ)控制器的效率為50%。各種不同的存儲(chǔ)控制器實(shí)現(xiàn)的效率通常為25%~90%。顯而易見,一個(gè)低效的設(shè)計(jì)實(shí)現(xiàn)會(huì)嚴(yán)重影響關(guān)鍵系統(tǒng)特性,增加整體解決方案的成本。
在某些情況下,高數(shù)據(jù)傳輸效率難以實(shí)現(xiàn),這是因?yàn)镾oC中的訪問請(qǐng)求者的訪問模式是隨機(jī)的。因?yàn)榇蜷_的行具有更快的訪問時(shí)間,如果存儲(chǔ)器請(qǐng)求多數(shù)時(shí)間在一個(gè)打開的行上工作,那么在這些訪問期間就可以實(shí)現(xiàn)理論上的最大帶寬。如果存儲(chǔ)器訪問是凌亂分散的,那么可能很難再次訪問到相同的行,導(dǎo)致了去訪問不同的行更長的訪問時(shí)間,因此縮短了平均訪問時(shí)間,降低了整體的數(shù)據(jù)傳輸速率。很顯然,如果一個(gè)存儲(chǔ)控制器可以評(píng)估流量模式和發(fā)現(xiàn)一種以更高效的方式給操作排序的可能性—如集合在一起成組地訪問相同的存儲(chǔ)行,而不是僅僅依照存儲(chǔ)訪問的請(qǐng)求順序來執(zhí)行它們,或者為高優(yōu)先級(jí)數(shù)據(jù)提供快速訪問—那么就可以減小低效率流量模式所帶來的影響。一個(gè)能夠并特別擅長管理隨機(jī)流量的DDR存儲(chǔ)控制器可以顯著地提高效率。
【分頁導(dǎo)航】
第1頁:背景介紹
第2頁:DDR SDRAM訪問特性和效率測試
第3頁:DDR控制器效率對(duì)比
DDR控制器效率對(duì)比
圖2展示了由一個(gè)基于FIFO的DDR控制器的效率分析,數(shù)據(jù)結(jié)果來自于市場基準(zhǔn)研究。這些實(shí)例模式代表了三種不同的流量類型,分別被標(biāo)記為模式_80_20、模式_50_50和模式_20_80。標(biāo)記的命名代表了模式的類型:標(biāo)簽中第一個(gè)數(shù)字代表連續(xù)或遞增訪問的百分比,第二個(gè)數(shù)字代表隨機(jī)訪問的百分比。隨著隨機(jī)部分的百分比從20%增長到80%,效率則如預(yù)期一樣降低。模式中的連續(xù)部分為針對(duì)一個(gè)打開頁的流量請(qǐng)求,這是設(shè)計(jì)的最佳情況,提供了最高的效率。流量的隨機(jī)部分抑或是對(duì)一個(gè)關(guān)閉頁的訪問,或者是對(duì)一個(gè)帶有不同打開頁的存儲(chǔ)體的訪問請(qǐng)求。通過深入分析,模式_20_80的效率大概為55%,模式_50_50的效率大概為60%,而模式_80_20的效率可以達(dá)到75%。
圖3說明了一個(gè)基于CAM的DDR控制器在執(zhí)行這三種相同模式時(shí)產(chǎn)生的效率結(jié)果。帶有32個(gè)條目的CAM的效率大于或者等于基于FIFO的DDR控制器的效率結(jié)果,而擁有64個(gè)條目的CAM的效率結(jié)果則明顯更高。帶有64個(gè)條目的基于CAM的DDR控制器在模式_80_20下效率結(jié)果為接近98%,模式_50_50為80%,模式_20_80為65%。這表明了相對(duì)于基于FIFO的控制器,基于CAM的架構(gòu)在效率上實(shí)現(xiàn)了顯著的提高—這意味著提高了帶寬。
由于DRAM的存儲(chǔ)體(Bank)架構(gòu),設(shè)計(jì)師過去不得不很困難地分配到DDR SDRAM的存儲(chǔ)空間訪問,以使SoC循環(huán)讀寫8個(gè)可用的存儲(chǔ)體。在多種模式下循環(huán)訪問存儲(chǔ)體可使控制器工作在存儲(chǔ)體架構(gòu)范圍內(nèi),以提供合理的效率。然而,一些SoC系統(tǒng)并沒有在不同存儲(chǔ)體和DDR控制器之間定期發(fā)送循環(huán)數(shù)據(jù)流,而這正是基于CAM架構(gòu)的控制器足以勝任的。基于CAM的架構(gòu)可以調(diào)整整個(gè)指令序列,甚至為了更高的效率可以將最隨機(jī)的流量模式重新排序。
隨機(jī)模式1和隨機(jī)模式2是兩種不同種類的非常隨機(jī)的數(shù)據(jù)流,但它們不在各存儲(chǔ)體間循環(huán)。隨機(jī)/連續(xù)模式將隨機(jī)模式與相似的連續(xù)模式結(jié)合在一起,并應(yīng)用到那些在以上例子討論過的情況中。在圖4中,F(xiàn)IFO_CTL的效率在隨機(jī)/連續(xù)模式下有所提高,但是在圖中可以看到基于CAM的控制器的所有模式得到的效率數(shù)值均比FIFO_CTL的效率高出很多。
評(píng)論