基于存儲空間復(fù)用提高sdram總線有效訪問速率的方法
【技術(shù)領(lǐng)域】
[00011本發(fā)明涉及SDRAM領(lǐng)域,具體涉及基于存儲空間復(fù)用提高SDRAM總線有效訪問速率 的方法。
【背景技術(shù)】
[0002] 隨著網(wǎng)絡(luò)帶寬和網(wǎng)絡(luò)數(shù)據(jù)量的不斷快速增加,處于網(wǎng)絡(luò)各個(gè)關(guān)鍵節(jié)點(diǎn)的通信設(shè)備 處理能力要求也不斷提高。通信設(shè)備的處理能力不僅僅體現(xiàn)在芯片本身運(yùn)算能力的提升, 同時(shí)也要求芯片對外圍數(shù)據(jù)的存儲、讀寫、輸入輸出等單元速率相應(yīng)提升。然而,芯片本身 對外部存儲訪問能力的快速提升與外部存儲器的性能總是不完全同步,這在一定程度上成 為制約芯片性能發(fā)揮的瓶頸。
[0003] 作為網(wǎng)絡(luò)重要組件之一的核心路由器,除了擁有上百萬條路由表外,還有大量的 MAC地址表、MPLS標(biāo)簽表、接口表、VLAN表和訪問控制列表(ACL)等表項(xiàng),因此,對芯片外圍數(shù) 據(jù)存儲的容量和性能提出了更高的要求。
[0004] SDRAM(同步動(dòng)態(tài)隨機(jī)存儲器)相對于其它如SRAM(Static Random Access Memory)、TCAM(Ternary Content Addressable Memory)等存儲芯片,以其價(jià)格低廉和存儲 空間大的優(yōu)勢,在網(wǎng)絡(luò)設(shè)備存儲擴(kuò)展方面有著廣泛的應(yīng)用。當(dāng)前芯片外部SDRAM接口已經(jīng)發(fā) 展到第三代(DDR3)并取得廣泛應(yīng)用,其主頻從800MHz到2133MHz;部分芯片已經(jīng)開始兼容集 成第四代(DDR4)接口,DDR4雖然支持更高主頻,但是其價(jià)格昂貴,目前在產(chǎn)品商用方面使用 較少。雖然SDRAM訪問頻率有所提高,但仍滿足不了芯片線速處理報(bào)文時(shí)對SDRAM接口訪問 的性能要求。主要原因在于:訪問一次SDRAM要完成必要的準(zhǔn)備工作(激活)和必要的收尾工 作(充電、刷新、校準(zhǔn)),數(shù)據(jù)總線上有效數(shù)據(jù)傳輸時(shí)間DQ占整個(gè)訪問時(shí)間比例比較小,也就 是說即使總線頻率很高,時(shí)鐘tCK周期很短,但由于tCL周期變長,數(shù)據(jù)總線的利用率(一次 操作連讀8次為例計(jì)算)只有15 %左右。以DDR3SDRAM常用1600MHz的訪問頻率為例計(jì)算,在 易1J除芯片讀寫過程中激活時(shí)間、充電時(shí)間、刷新時(shí)間、校驗(yàn)時(shí)間等開銷后,對一個(gè)SDRAM的同 一物理Bank隨機(jī)訪問的實(shí)際速率約20Mpps,這與當(dāng)前40G芯片60Mpps隨機(jī)訪問要求有很大 差別。
[0005] 鑒于SDRAM存在上述局限,當(dāng)前業(yè)界對SDRAM存儲接口進(jìn)行了不同方式的優(yōu)化和改 進(jìn),主要有以下幾個(gè)方面:
[0006] (1)在片內(nèi)增加讀寫臨時(shí)存儲空間Cache。
[0007] 一個(gè)SDRAM局部區(qū)域共享一個(gè)Cache項(xiàng),Cache項(xiàng)中臨時(shí)保存著該區(qū)域SDRAM最近一 次讀入的數(shù)據(jù),芯片如果在需要讀入外部數(shù)據(jù)時(shí),首先會(huì)在片內(nèi)Cache中查找,如果查找命 中,將直接使用Cache中的數(shù)據(jù)交給芯片運(yùn)算器處理,而不用在外部SDRAM中去讀取,這樣就 節(jié)省了一次SDRAM的訪問開銷,從而提高了數(shù)據(jù)讀寫的速率。這種利用芯片運(yùn)行過程中空間 局部性,對于芯片長期從事重復(fù)數(shù)據(jù)運(yùn)算的應(yīng)用場景確實(shí)有一定的效果,但是對于網(wǎng)絡(luò)設(shè) 備中需要處理的形式多樣的網(wǎng)絡(luò)報(bào)文和交替查找大量轉(zhuǎn)發(fā)表項(xiàng)的應(yīng)用場景,其效果并不明 顯,反而會(huì)適得其反。這是由于進(jìn)入芯片的每個(gè)數(shù)據(jù)報(bào)文可能查找SDRAM的表項(xiàng)各不一樣, C a c h e項(xiàng)會(huì)被頻繁的更新,新來的數(shù)據(jù)報(bào)文往往在C a c h e中找不到需要的數(shù)據(jù)(C a c h e Miss),轉(zhuǎn)而要向SDRAM中讀取,數(shù)據(jù)從外部SDRAM中讀取到Cache中后再傳遞給運(yùn)算單元進(jìn) 行處理,這種Cache Miss造成讀寫一次SDRAM需要更長的時(shí)間,反而不能提高讀寫外部存儲 的速率。
[0008] (2)基于SDRAM讀寫同一個(gè)Bank下的連續(xù)地址效率高,以及每次讀寫操作后都需要 進(jìn)行預(yù)充電的特點(diǎn),對芯片動(dòng)態(tài)隨機(jī)訪問SDRAM的中間加入讀寫命令緩沖區(qū),通過對讀寫命 令的序列進(jìn)行分析和仲裁,根據(jù)SDRAM讀寫時(shí)序特點(diǎn)進(jìn)行讀寫操作的優(yōu)化。優(yōu)化的方法一是 對于緩沖區(qū)中讀相同Bank下的同一行但是不連續(xù)的數(shù)據(jù)的幾次操作,轉(zhuǎn)換為一次連續(xù)讀操 作,再通過掩碼去掉中間的無關(guān)數(shù)據(jù),返回需要讀操作需要的數(shù)據(jù);優(yōu)化的方法二是對不同 Bank下的不同行進(jìn)行隨機(jī)訪問優(yōu)化,通過"兵乓操作"讓訪問在不同的Bank上輪換進(jìn)行,從 而隱藏了訪問操作后所需的充電時(shí)間。然而,方法一的優(yōu)化作用比較有限,原因在于:這種 對同一 Bank下同一行的讀寫操作在實(shí)際中概率不高,能夠?qū)嵤﹥?yōu)化的概率不大;方法二為 了實(shí)現(xiàn)輪換的"兵乓操作",改變了訪問SDRAM的順序,有可能會(huì)導(dǎo)致數(shù)據(jù)的錯(cuò)誤,這種優(yōu)化 方案比較適合對于讀寫操作順序沒有太多要求的場合,并且這種采用"兵乓操作"的算法對 提高SDRAM訪問速率比較有限,算法對SDRAM訪問優(yōu)化的深度還不夠完善。另外,在采用常用 的"兵乓操作"進(jìn)行優(yōu)化后,通過FIFO緩沖去將原本連續(xù)訪問同一個(gè)Bank不同行的操作轉(zhuǎn)換 為依次訪問兩個(gè)不同Bank下的數(shù)據(jù),可以部分隱藏系統(tǒng)充電時(shí)間tRP(7clock),通過時(shí)間疊 加隱藏了 2clock,優(yōu)化后的帶寬利用率大約為15.4%,訪問帶寬為21.321^?8;如果采用 4Bank之間的"乒乓操作",可以隱藏整個(gè)充電時(shí)間(7clock),優(yōu)化后最大的帶寬利用率為 20 %,訪問速率為26.65Mpps??梢妰?yōu)化后帶寬利用率還是沒有得到較大的改善,與實(shí)際應(yīng) 用60Mpps的需要還是有較大的差距。
[0009] 由此,在網(wǎng)絡(luò)設(shè)備40G平臺中,要求SDRAM提供足夠大的訪問帶寬,保證其及時(shí)查找 表項(xiàng)并實(shí)現(xiàn)報(bào)文的線速轉(zhuǎn)發(fā),并且這個(gè)過程中訪問SDRAM動(dòng)態(tài)隨機(jī)性大、規(guī)律性小,涉及表 項(xiàng)條目多、重復(fù)性小,單純的應(yīng)用上述優(yōu)化方法難以滿足實(shí)際應(yīng)用需求。
【發(fā)明內(nèi)容】
[0010]本發(fā)明所要解決的技術(shù)問題是現(xiàn)有提高SDRAM存儲訪問能力的方式難以滿足實(shí)際 應(yīng)用需求的問題。
[0011] 為了解決上述技術(shù)問題,本發(fā)明所采用的技術(shù)方案是提供一種基于存儲空間復(fù)用 提高SDRAM總線有效訪問速率的方法,包括以下步驟:
[0012] 將4片位寬為8比特的SDRAM芯片分成兩個(gè)組GroupO和Groupl,每組2片SDRAM芯片 共用一個(gè)片選信號,內(nèi)存訪問命令利用不同的片選信號在時(shí)序上對GroupO和Groupl交替進(jìn) 行;
[0013] 將表項(xiàng)在物理Bank上存儲為4份鏡像,且所述4份鏡像分別處在不同的Bank內(nèi),對 用戶虛擬出4個(gè)邏輯Bank;
[0014] 對邏輯Bank進(jìn)行仲裁選擇,將用戶的內(nèi)存訪問請求按照時(shí)序分發(fā)到不同的物理 Bank上,實(shí)現(xiàn)多個(gè)物理Bank之間的輪轉(zhuǎn)訪問。
[0015] 在上述方法中,對SDRAM的實(shí)際物理內(nèi)存地址空間與用戶地址空間之間做映射,形 成邏輯地址。
[0016]在上述方法中,邏輯地址的最高兩位作為SDRAM的Bank的低2位選擇地址,依據(jù)用 戶的訪問仲裁輸出。
[0017]在上述方法中,每個(gè)Bank上增加了兩個(gè)分別用于存放讀寫訪問命令的隊(duì)列緩沖 區(qū),用戶的隨機(jī)訪問通過處理后,被緩存在對應(yīng)的邏輯Bank緩沖區(qū)上。
[0018] 在上述方法中,用戶對同一個(gè)邏輯Bank的訪問被劃分到不同的4個(gè)物理Bank上,對 緩沖區(qū)中訪問請求仲裁器執(zhí)行的邏輯步驟如下,其中刷新操作P需要在Ts為0或1上,寫操作 Μ必須在Ts為0、4、8和12上,讀操作F對Ts沒有要求。
[0019]本發(fā)明,基于Bank鏡像和Bank仲裁相結(jié)合,通過對總線分組復(fù)用,對用戶隱藏了每 次SDRAM訪問間消耗的激活時(shí)間和預(yù)充電時(shí)間,使得SDRAM同一Bank的訪問速率由約20Mpps 提高到65Mpps,滿足了當(dāng)前網(wǎng)絡(luò)設(shè)備40G平臺60Mpps的訪問速率要求。
【附圖說明】
[0020] 圖1為本發(fā)明中4片SDRAM芯片分組示意圖;
[0021 ]圖2為本發(fā)明中不同Bank內(nèi)存儲示意圖;
[0022] 圖3為本發(fā)明中實(shí)際物理內(nèi)存地址空間與用戶地址空間映射示意圖;
[0023] 圖4為本發(fā)明中用戶訪問示意圖;
[0024] 圖5為本發(fā)明中優(yōu)化后的讀時(shí)序圖。
【具體實(shí)施方式】
[0025] 本發(fā)明提供了一種基于存儲空間復(fù)用提高SDRAM總線有效訪問速率的方法,基于 Bank鏡像和Bank仲裁相結(jié)合,通過對總線分組復(fù)用,對用戶隱藏了每次SDRAM訪問間消耗的 激活時(shí)間和預(yù)充電時(shí)間,使得SDRAM同一Bank的訪問速率由約20Mpps提高到65Mpps,滿足了 當(dāng)前網(wǎng)絡(luò)設(shè)備40G平臺60Mpps的訪問速率要求。下面結(jié)合說明書附圖和【具體實(shí)施方式】對本 發(fā)明做出詳細(xì)的說明。
[0026] 本發(fā)明提供的基于存儲空間復(fù)用提高SDRAM總線有效訪問速率的方法,包括步驟:
[0027] 1)將4片位寬為8比特的SDRAM芯片分成兩個(gè)組GroupO和Groupl,每組2片SDRAM芯 片共用一個(gè)片選信號,內(nèi)存訪問命令利用不同的片選信號在時(shí)序上對GroupO和Groupl交替 進(jìn)行。
[0028]如圖1所示,本實(shí)施例采用4片SDRAM芯片組成外圍數(shù)據(jù)存儲器,采用兩個(gè)片選信號 CS0和CS1,4片位寬為8比特的SDRAM芯片501?艦1、501^12、50狀13和501^14,每兩片組成一個(gè) 組(GroupO和Groupl ),每組共用一個(gè)片選信號。GroupO的數(shù)據(jù)連接接口數(shù)據(jù)總線的DATA [15:0 ],Group 1的數(shù)據(jù)連接接口數(shù)據(jù)總線的DATA[ 31:16 ],所有其它控制信號四芯片共享。 [0029] 訪問命令在時(shí)序上對GroupO和Groupl交替進(jìn)行,每次訪問連讀8次,共可讀出 16bitX8 = 128bit 的數(shù)據(jù)。
[0030]實(shí)際應(yīng)用過程中,為了能夠一次訪問讀出整條表項(xiàng),SDRAM的表項(xiàng)存儲設(shè)計(jì),每條 表項(xiàng)寬度不要超過128bit。
[0031 ] 2)將SDRAM的表項(xiàng)在物理Bank上存儲為4份鏡像形成4個(gè)邏輯Bank。
[0032] 每片SDRAM芯片內(nèi)部劃分為8個(gè)物理Bank(Physics Bank),每個(gè)物理Bank提供8bit 數(shù)據(jù)。
[0033]物理Bank類似于一張表格,每次訪問需要先指定行,再指定列,從而能夠找到這個(gè) 單元格,訪問SDRAM時(shí)一次只能對一個(gè)物理Bank訪問。SDRAM支持在本Bank預(yù)充電的時(shí)間內(nèi), 對別的Bank進(jìn)行訪問操作,即Bank輪換的尋址(乒乓操作)。
[0034]單一的Bank輪換雖然可以通過隱藏預(yù)充電時(shí)間,提高