專利名稱:一種高帶寬利用率的ddr2 sdram控制器設(shè)計(jì)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)交換設(shè)備的關(guān)鍵裝置設(shè)計(jì)方法,尤其是網(wǎng)絡(luò)數(shù)據(jù)交換 設(shè)備中的控制器設(shè)計(jì)方法。
背景技術(shù):
隨著通信領(lǐng)域的網(wǎng)絡(luò)傳輸速度高速增加,各種通訊設(shè)備,尤其是城域網(wǎng),骨 干網(wǎng)的數(shù)據(jù)交換設(shè)備對(duì)緩沖器提出了更大的帶寬,更大的容量,更低的成本的 需求。目前的緩沖器主要以兩種Memory為主SDRAM和SRAM。
SRAM的特點(diǎn)是容量小, 一般僅能提供幾十M比特這一數(shù)量級(jí)的存儲(chǔ)容量, 接口數(shù)據(jù)速度較低,體積較大,價(jià)格也較高,其最突出之處是操作很簡(jiǎn)單,帶 寬利用率可達(dá)到100%。
SDRAM的特點(diǎn)是容量大,目前的DDR2 SDRAM單顆粒就可以提供多達(dá)1G 比特級(jí)別的存儲(chǔ)容量;存儲(chǔ)密度高,價(jià)格低廉,接口理論帶寬很高,缺點(diǎn)是帶 寬利用率較低, 一般情況下,帶寬利用率僅為30%~40%左右。
DDR2 SDRAM的帶寬利用率低是由其結(jié)構(gòu)導(dǎo)致的。
由于DDR2 SDRAM每次同一個(gè)Bank內(nèi),換行操作時(shí),需要先關(guān)閉當(dāng)前Bank 中己經(jīng)打開的行(Precharge),然后激活需要訪問(wèn)的行(Active),然后才能對(duì)數(shù) 據(jù)做讀寫操作。每一個(gè)Bank內(nèi),Precharge到Active操作之間有一個(gè)固定的延 遲要求(TRP)。 一般,SDRAM的TRP有3個(gè)時(shí)鐘周期,數(shù)據(jù)采用突發(fā)長(zhǎng)度 (BurstLength)為2, 4, 8時(shí),對(duì)應(yīng)的帶寬利用率分別為28%, 44%和61.5%。 另外,在DDR2 SDRAM操作中,同一個(gè)Bank內(nèi),相鄰兩次Active操作之 間有一個(gè)固定間隔時(shí)間要求(TRC), 一般TRC在11個(gè)時(shí)鐘到20個(gè)時(shí)鐘左右, 也帶來(lái)極大的帶寬利用率的浪費(fèi)。如何解決TRP, TRC和帶寬利用率之間的矛
盾成為提高DDR2 SDRAM帶寬利用率的關(guān)鍵因素。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種DDR2SDRAM控制器設(shè)計(jì)方法的改進(jìn),該方法應(yīng) 能在Burst Length為8的情況下提高總線利用率,并具有低成本、高帶寬、大存 儲(chǔ)容量的特點(diǎn)。
本發(fā)明提供的技術(shù)方案是
一種高帶寬利用率的DDR2 SDRAM控制器設(shè)計(jì)方法,該方法包括
1) Bank輪換Bank在每次Burst操作之后切換Bank,盡量在保證數(shù)據(jù)總
線高利用率的前提下,將每個(gè)Bank相鄰兩次訪問(wèn)的間隔加大;
2)提前Precharge操作如果下一次操作將需要Precharge然后在Active,
并且和本次操作不沖突,那么,就將這個(gè)Precharge操作提前到本次操作之前執(zhí)
行。當(dāng)本次操作完成后,要進(jìn)行下次操作的Active操作時(shí),TRP時(shí)間也已經(jīng)滿足了。
數(shù)據(jù)采用的突發(fā)長(zhǎng)度(BurstLength)為8。 本發(fā)明采用的Bank輪換方法,因?yàn)橥话l(fā)長(zhǎng)度Burst Length為8,所以在最理 想的狀態(tài)下,同一個(gè)Bank的訪問(wèn)間隔將加大到4x4=16個(gè)時(shí)鐘周期,能夠滿足 絕大多是情況下的TRC要求。采用的提前Precharge操作方法,在本次操作完 成后,要進(jìn)行下次操作的Active操作時(shí),己經(jīng)滿足了TRP時(shí)間。該控制方法可 將DDR2 SDRAM的數(shù)據(jù)總線帶寬平均利用率提高到70%,配合Bank輪換的機(jī)制, 帶寬利用率最高可達(dá)99%,幾乎可以和昂貴的SRAM媲美;并且克服了 DDR2 SDRAM 在帶寬利用率上的不足,使廉價(jià)的大容量的DDR2 SDRAM在計(jì)算機(jī)應(yīng)用,通訊設(shè) 備,或者個(gè)人數(shù)據(jù)處理終端等有高帶寬利用率的領(lǐng)域得到更廣泛的使用,極大 地降低了系統(tǒng)在高帶寬存儲(chǔ)方面的成本壓力。該DDR2 SDRAM控制器可直接 集成于FPGA或者ASIC電路。
圖1是本發(fā)明的Bank輪換以及提前Precharge操作示意圖。 圖2是DDR2 SDRAM控制器控制原理示意圖。 圖3是FSM狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移示意圖。
具體實(shí)施例方式
本發(fā)明的最基本的原理就是盡量在TRC以及TRP的時(shí)間內(nèi),讓SDRAM提 供其他后續(xù)操作,以減少為了等到TRP和TRC這兩個(gè)時(shí)間而無(wú)謂的帶寬消耗。 由此采用的方法是
l)Bank輪換Bank在每次Burst操作之后切換Bank,盡量在保證數(shù)據(jù)總 線高利用率的前提下,將每個(gè)Bank相鄰兩次訪問(wèn)的間隔加大;
2)提前Precharge操作如果下一次操作將需要Precharge然后再Active, 并且和本次操作不沖突,那么,就將這個(gè)Precharge操作提前到本次操作之前執(zhí) 行。那么當(dāng)本次操作完成后,要進(jìn)行下次操作的Active操作時(shí),TRP時(shí)間也己 經(jīng)滿足了。
上述兩種設(shè)計(jì)方法將所需要的時(shí)間隱藏到正常的數(shù)據(jù)操作中,成功地避免 了因?yàn)檫@兩個(gè)參數(shù)而導(dǎo)致總線操作利用率的極大消耗,使得總線操作利用率有 可能達(dá)到99%這一極限值。
如圖1所示,對(duì)于BankO,連續(xù)兩次Read操作針對(duì)不同的Row,也就是說(shuō), 第一次Read操作完成之后,在第二次Read之前需要一次Precharge操作將第一 次Read操作打開的Row關(guān)閉,然后再加入一次Active操作將第二次Read操作 需要訪問(wèn)的Row打開。按照Bank輪換的方式,BankO的連續(xù)兩次操作之間,應(yīng) 該插入其他3個(gè)Bank的3次操作。每次操作都是Burst Length為8,也就是需 要4個(gè)時(shí)鐘,那么BankO的連續(xù)兩個(gè)Read操作之間將會(huì)有16個(gè)時(shí)鐘周期的間 隔??梢钥闯鯞ank輪換的方式隱藏了 TRC所需要的時(shí)間,節(jié)省了很多空閑的等待周期。Bank輪換牽涉到地址管理的問(wèn)題,不僅僅是本控制器能夠控制的范
圍,所以對(duì)于Bank輪換,本控制器僅提供一個(gè)增加地址訪問(wèn)離散性的可選項(xiàng),
將Memory訪問(wèn)地址的最低兩位和最高兩位互換位置,也就是將列地址的最低
兩位和Bank地址互換來(lái)加大Memory訪問(wèn)地址的離散性,使得四個(gè)Bank輪換
的幾率更大。但是實(shí)現(xiàn)這一目標(biāo)的最根本解決方式來(lái)自地址管理,而不是純粹 依靠本控制器。
另一個(gè)操作是由提前插入Precharge來(lái)實(shí)現(xiàn)的。在執(zhí)行對(duì)Bank3的Read操作 時(shí),控制器發(fā)現(xiàn)下一個(gè)操作,也就是對(duì)Bank0的Read操作,需要對(duì)Bank0做 Precharge和Active操作;控制器在Bank3的Read操作之前,提前插入BankO 的Precharge,這樣當(dāng)Bank3的Read操作結(jié)束后,BankO的TRP時(shí)間也已經(jīng)滿 足,先Active需要激活的BankO的Row,然后就可以執(zhí)行Read操作。
需要注意的是,無(wú)論是插入Precharge操作還是Active操作,各個(gè)Read操作 之間僅相差4個(gè)時(shí)鐘周期,因?yàn)锽urst Length為8,所以這時(shí)候數(shù)據(jù)總線上的數(shù) 據(jù)將是連續(xù)的,如圖l所示,也就是說(shuō),這時(shí)候DDR2 SDRAM的總線利用率 達(dá)到了 100%。假如地址管理做得出色,那么DDR2 SDRAM的總線利用率將達(dá) 到99%以上(因?yàn)镾DRAM的固有特性導(dǎo)致Refresh操作不可避免帶來(lái)利用率損 耗)。
根據(jù)以上方法設(shè)計(jì)的DDR2 SDRAM控制器在各種集成電路設(shè)計(jì)中均可以實(shí) 現(xiàn)。目前杭州瑞那科技有限公司已經(jīng)將其廣泛應(yīng)用在FPGA設(shè)計(jì)中。在這里講 述的設(shè)計(jì)方法不僅僅可以應(yīng)用在FPGA設(shè)計(jì)中,對(duì)于ASIC電路一樣適用。
圖2所示的控制原理圖中,控制器對(duì)外包括兩部分接口對(duì)內(nèi)部其他功能模 塊的接口 ;對(duì)外部DDR2 SDRAM芯片接口 。
內(nèi)部模塊接口包括操作指令和操作數(shù)據(jù)兩部分。操作指令由當(dāng)前操作指令和 下一操作指令組成,目的是為了能讓控制器在當(dāng)前的操作命令中確定是否需要
為下一個(gè)操作指令提前插入一次Precharge操作。操作數(shù)據(jù)則是需要寫入Memory 以及從Memory返回的數(shù)據(jù)。由控制器內(nèi)部狀態(tài)機(jī)控制何時(shí)提供寫入數(shù)據(jù)以及 何時(shí)返回有效數(shù)據(jù)。
4Bank激活行信息表用于記錄每個(gè)Bank當(dāng)前已經(jīng)激活的Row,這些記錄和 輸入的操作指令比較,判斷是否需要插入Precharge和Active操作;然后和輸入 的操作指令一起做一次指令編碼輸給狀態(tài)機(jī)。
狀態(tài)機(jī)是控制器各種控制信號(hào)生成的核心。狀態(tài)機(jī)由7個(gè)狀態(tài)組成,如圖3 所示。
> IDLE為空閑狀態(tài),所有的指令執(zhí)行均從該狀態(tài)開始,根據(jù)輸入的指令編 碼,判斷后續(xù)跳轉(zhuǎn)狀態(tài);
> Wait為等待狀態(tài),該狀態(tài)是一個(gè)特殊狀態(tài),仟何其他狀態(tài)在轉(zhuǎn)入Wait狀 態(tài)時(shí),都需要準(zhǔn)備好需要等待的時(shí)鐘數(shù)量,以及等待時(shí)間滿之后的下一 跳狀態(tài)。進(jìn)入Wait狀態(tài)之后,計(jì)數(shù)器計(jì)滿需要等待的時(shí)間,然后根據(jù)下 一跳狀態(tài)轉(zhuǎn)入下一個(gè)狀態(tài)機(jī)的狀態(tài)。Wait狀態(tài)不做任何指令處理,只是 負(fù)責(zé)等待;
> Precharge狀態(tài),輸出DDR2 SDRAM的Precharge指令;
> Active狀態(tài),輸出DDR2 SDRAM的Active指令;
> Read狀態(tài),輸出DDR2 SDRAM的Read指令;
> Writer狀態(tài),輸出DDR2 SDRAM的Writer指令;
> Refresh狀態(tài),輸出DDR2 SDRAM的Refresh指令。 延遲計(jì)數(shù)器模塊為狀態(tài)機(jī)提供判斷是否需要進(jìn)入Wait狀態(tài)以及等待時(shí)間的
依據(jù)。延遲計(jì)數(shù)器包括每一個(gè)Bank的TRC時(shí)間,以及總線卜.的TRTP和TWTR 時(shí)間。
DQ Logic模塊為控制DQ, DQS輸出和輸入采樣的電路。根據(jù)FPGA的器件
不同,有不同的做法,可以參考FPGA的器件手冊(cè)。如果是ASIC設(shè)計(jì),也會(huì)根 據(jù)器件庫(kù)不同有不同的設(shè)計(jì),這里不再說(shuō)明。
杭州瑞納科技有限公司己經(jīng)將該DDR2 SDRAM控制器應(yīng)用于多項(xiàng)產(chǎn)品。 配合合理的地址管理機(jī)制,均實(shí)現(xiàn)了平均帶寬利用率超過(guò)80%。有的產(chǎn)品已經(jīng) 達(dá)到99%的極限利用率。
根據(jù)目標(biāo)FPGA的工藝不同,具有不同的控制器時(shí)鐘頻率;采用Altera 的CycloneII器件,控制器時(shí)鐘頻率能達(dá)到125MHz以上,采用StratixII器件, 可以達(dá)到200MHz以上;采用Xilinx的Virtex5器件,最高可以達(dá)到266MHz。
原有需要提供SRAM器件的設(shè)備均改為采用DDR2 SDRAM,在價(jià)格上, DDR2 SDRAM以僅為SRAM的不到10%的價(jià)格提供了相通的帶寬,而且提供 了16倍以上的存儲(chǔ)容量,為實(shí)際設(shè)備節(jié)省了可觀的成本,具有很好的經(jīng)濟(jì)效 益和社會(huì)效益。
此外,圖2中還標(biāo)注有cmd—cur一valid (當(dāng)前命令有效指示)、 cmd—next—valid (下一個(gè)命令有效指示)、cmd—addr—cur (當(dāng)前命令需要操作的 存儲(chǔ)器地址)、cmd—addr—next (下一個(gè)命令需要操作的存儲(chǔ)器地址)、cur—status (當(dāng)前命令對(duì)應(yīng)地址的激活狀態(tài))、next—status (下一個(gè)命令對(duì)應(yīng)地址的激活狀 態(tài))、cmd—clear (清除命令編碼指示)、fsm—cur—status (狀態(tài)機(jī)當(dāng)前狀態(tài))、 cmd—code (命令編碼)、cmd—ack (命令接受指示)、cmd—done (命令執(zhí)行完成 指示)、data—in一ref (待寫入存儲(chǔ)器數(shù)據(jù)輸入時(shí)刻指示)、data—valid (讀存儲(chǔ)器 返回?cái)?shù)據(jù)有效指示)、data—in (待寫入存儲(chǔ)其數(shù)據(jù))、data—out (讀存儲(chǔ)器返回 數(shù)據(jù))、rasn(SDRAM接口信號(hào),斤選擇)、casn (SDRAM接口信號(hào),列選擇)、 wen (SDRAM接口信號(hào),寫使能)、csn ( SDRAM接口信號(hào),片選)、dq (SDRAM 接口信號(hào),雙向輸入輸出數(shù)據(jù))、dqs (SDRAM接口信號(hào),雙向輸入輸出數(shù)據(jù) 時(shí)鐘)。
權(quán)利要求
1、一種高帶寬利用率的DDR2SDRAM控制器設(shè)計(jì)方法,該方法包括1)Bank輪換Bank在每次Burst操作之后切換Bank,盡量在保證數(shù)據(jù)總線高利用率的前提下,將每個(gè)Bank相鄰兩次訪問(wèn)的間隔加大;2)提前Precharge操作如果下一次操作將需要Precharge然后在Active,并且和本次操作不沖突,那么,就將這個(gè)Precharge操作提前到本次操作之前執(zhí)行。
2、 根據(jù)權(quán)利要求1所述的一種禽帶寬利用率的DDR2 SDRAM控制器設(shè)計(jì) 方法,其特征在于該方法中數(shù)據(jù)采用的突發(fā)長(zhǎng)度為8。
全文摘要
本發(fā)明涉及一種網(wǎng)絡(luò)數(shù)據(jù)交換設(shè)備中的控制器設(shè)計(jì)方法。目的是提供的方法應(yīng)能在突發(fā)長(zhǎng)度為8的情況下提高總線利用率,并具有低成本、高帶寬、大存儲(chǔ)容量的特點(diǎn)。技術(shù)方案是一種高帶寬利用率的DDR2 SDRAM控制器設(shè)計(jì)方法,包括1)Bank輪換Bank在每次Burst操作之后切換Bank,盡量在保證數(shù)據(jù)總線高利用率的前提下,將每個(gè)Bank相鄰兩次訪問(wèn)的間隔加大;2)提前Precharge操作如果下一次操作將需要Precharge然后在Active,并且和本次操作不沖突,那么,就將這個(gè)Precharge操作提前到本次操作之前執(zhí)行。數(shù)據(jù)采用的突發(fā)長(zhǎng)度為8。
文檔編號(hào)H04L29/02GK101340365SQ200810063328
公開日2009年1月7日 申請(qǐng)日期2008年8月11日 優(yōu)先權(quán)日2008年8月11日
發(fā)明者斌 向, 吳辰敦, 駿 張, 科 路, 旭 鄧, 鐘林鋼 申請(qǐng)人:杭州瑞納科技有限公司