專利名稱:一種實現(xiàn)小包訪問內(nèi)存高速線速的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種實現(xiàn)小包訪問內(nèi)存高速線速的 方法及裝置。
背景技術(shù):
路由器是一種連接多個不同網(wǎng)絡(luò)或網(wǎng)段的數(shù)據(jù)通訊設(shè)備,提供數(shù)據(jù)包的 轉(zhuǎn)發(fā)和傳輸路徑的選擇,通過轉(zhuǎn)發(fā)數(shù)據(jù)包來實現(xiàn)不同網(wǎng)絡(luò)或網(wǎng)段的互連。在
路由器實現(xiàn)中,通常利用內(nèi)存緩存報文,例如,DDR SDRAM ( Double Data Rate Synchronous Dynamic RAM,雙倍速率同步動態(tài)隨才幾存儲器)或DDR2 SDRAM ( Double Data Rate 2 Synchronous Dynamic RAM,第二代雙倍速率同 步動態(tài)隨機存儲器),其中,報文處理示例如圖l所示,包括以下步驟
步驟101,線卡板0的GE (Gigabit Ethernet,千兆比特以太網(wǎng))控制器 從外部接收報文,通過內(nèi)存控制器將報文存放到指定的內(nèi)存區(qū)域中等待被處 理;
步驟102,在內(nèi)存區(qū)域中進(jìn)行報文處理;
步驟103,報文處理完畢后,內(nèi)存控制器將報文從內(nèi)存區(qū)域中取出,并從 相應(yīng)的接口發(fā)出,通過背板到達(dá)其他線卡板,例如線卡板l。
內(nèi)存控制器對內(nèi)存區(qū)域的訪問為一寫、 一讀兩次操作,由此可知,如果 FPGA ( Field Programmable Gate Array,現(xiàn)場可編程門陣列)處理足夠快,則 內(nèi)存讀寫速度將成為系統(tǒng)性能的核心。
現(xiàn)有設(shè)計中,對于內(nèi)存的讀寫沒有做特殊的處理,即只是簡單的實現(xiàn)收 發(fā)報文過程中對于內(nèi)存的讀寫操作。對于64字節(jié)小包(通常小于256字節(jié)的 包稱為小包)內(nèi)存訪問時序如圖2所示, 一次讀操作為12個時鐘周期,而其 中真正的有用數(shù)據(jù)為4個時鐘周期,即帶寬利用率為1/3。對于64字節(jié)小包 總帶寬為400M (數(shù)據(jù)速率)x 64 (內(nèi)存數(shù)據(jù)位寬)=25G,有效利用帶寬為8G;由于對該有效利用帶寬包括讀寫兩次操作,因此,其中一次操作只能達(dá) 到4G左右的性能。
因此,現(xiàn)有技術(shù)中,由于內(nèi)存利用率低,導(dǎo)致路由器性能較低,無法實 現(xiàn)小包高速線速。
發(fā)明內(nèi)容
本發(fā)明提供了 一種實現(xiàn)小包訪問內(nèi)存高速線速的方法及裝置,提高內(nèi)存 利用率,實現(xiàn)小包高速線速。
本發(fā)明提供了 一種實現(xiàn)小包訪問內(nèi)存高速線速的方法,應(yīng)用于包括接收 模塊、內(nèi)存區(qū)域、內(nèi)存控制器和發(fā)送模塊的裝置中,所述方法包括以下步驟
所述內(nèi)存控制器對需要寫入的小包進(jìn)行組包,并判斷組合后的小包是否 大于等于第一組包閾值,如果達(dá)到所述組合后的小包寫入內(nèi)存區(qū)域;
在所述內(nèi)存區(qū)域中的包處理后,所述內(nèi)存控制器對需要讀出的包進(jìn)行組 包,當(dāng)所述組包大于等于第二組包閾值時從所述內(nèi)存區(qū)域中讀出,并通過所
述報文發(fā)送模塊轉(zhuǎn)發(fā)所述組包;
第 一組包閾值為寫入時需要達(dá)到的高速線速的組包長度,第二組包閾值 為讀出時需要達(dá)到的高速線速的組包長度。
所述從所述內(nèi)存區(qū)域中讀出,之前還包括
判斷所述組包中的相鄰小包是否屬于同一Bank,如果屬于同一Bank,則 通過緩存FIFO將后續(xù)相同Bank的小包進(jìn)行調(diào)序,4吏其遠(yuǎn)離前一個相同Bank 的小包。
所述對需要寫入的小包進(jìn)行組包,之后還包括
檢測到若干小包的組包長度達(dá)到包長門限,將所述組包發(fā)出,并啟動超 時判斷;
如果后續(xù)又發(fā)生組包,結(jié)束上次超時判斷,并開始新的超時判斷;如果 所述超時判斷時間達(dá)到預(yù)設(shè)超時閥值而沒發(fā)生組包,則自動觸發(fā)內(nèi)存寫操作, 將沒有達(dá)到包長門限且待寫入的小包組包寫入到內(nèi)存。
所述第 一組包閾值和所述第二組包閾值根據(jù)內(nèi)存時鐘頻率確定。本發(fā)明還提供了 一種實現(xiàn)小包訪問內(nèi)存高速線速的裝置,包括 接收模塊,用于接收外部發(fā)送的小包報文;
內(nèi)存控制模塊,與所述接收模塊連接,用于對需要寫入的小包進(jìn)行組包, 并判斷組合后的小包是否大于等于第 一組包閾值,如果達(dá)到所述組合后的小 包寫入內(nèi)存區(qū)域;在所述內(nèi)存區(qū)域中的包處理后,對需要讀出的包進(jìn)行組包, 當(dāng)所述組包大于等于第二組包閾值時從所述內(nèi)存區(qū)域中讀出,并通過所述報 文發(fā)送模塊轉(zhuǎn)發(fā)所述組包;第一組包閾值為寫入時需要達(dá)到的高速線速的組 包長度,第二組包閾值為讀出時需要達(dá)到的高速線速的組包長度;
發(fā)送模塊,與所述內(nèi)存控制模塊連接,用于將所述內(nèi)存控制模塊讀取的 組包發(fā)送到外部。
所述內(nèi)存控制模塊,還用于在讀取組包時,判斷所述組包中的相鄰小包 是否屬于同一Bank,如果屬于同一Bank,則通過緩存FIFO將后續(xù)相同Bank 的小包進(jìn)行調(diào)序,使其盡量遠(yuǎn)離前一個相同Bank的小包。
所述內(nèi)存控制模塊,還用于檢測到若干小包的組包長度達(dá)到包長門限, 將所述組包發(fā)出,并啟動超時判斷;如果后續(xù)又發(fā)生組包,結(jié)束上次超時判 斷,并開始新的超時判斷;如果所述超時判斷時間達(dá)到預(yù)設(shè)超時閥值而沒發(fā) 生組包,則自動觸發(fā)內(nèi)存寫操作,將沒有達(dá)到包長門限且待寫入的小包組包 寫入到內(nèi)存。
所述第 一組包闊值和所述第二組包闊值#4居內(nèi)存時鐘頻率確定。 與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點
本發(fā)明中,在讀、寫訪問內(nèi)存過程中基于內(nèi)存的Bank Interleave特性采用 組包方法,并可以在讀訪問內(nèi)存時采用報文調(diào)序,達(dá)到提高內(nèi)存的帶寬利用
圖l是現(xiàn)有技術(shù)中路由器報文處理示意圖;圖2是現(xiàn)有技術(shù)中無特殊處理的64字節(jié)小包內(nèi)存訪問時序圖3是本發(fā)明中DDR2 SDRAM采用Bank interleave進(jìn)行連續(xù)的讀4喿作時
序圖4是本發(fā)明中一種報文寫訪問內(nèi)存高速線速流程圖; 圖5是本發(fā)明中圖4所示內(nèi)存寫操作示意圖7是本發(fā)明中圖6所示內(nèi)存讀操作示意圖8是本發(fā)明中讀操作中調(diào)整報文順序示意圖9是本發(fā)明中一種實現(xiàn)小包訪問內(nèi)存高速線速的裝置結(jié)構(gòu)圖。
具體實施例方式
SDRAM采用的是時鐘驅(qū)動方式,其指令與數(shù)據(jù)輸出之間的延時是可編 程的。在SDRAM的內(nèi)部有一個模式儲存器可以設(shè)定一次存取的數(shù)據(jù)量及存 取方式(Sequential或Interleave )以及CAS延時時間,因此,所有的SDRAM 都能夠以Interleave方式工作。
內(nèi)存數(shù)據(jù)是以位(bit)為單位,以行(Row)、歹'J (Column)方式儲存在 內(nèi)存區(qū)域中,這樣的數(shù)據(jù)陣稱為Bank,目前的內(nèi)存芯片規(guī)格有2 ~ 4個Bank。 在內(nèi)存區(qū)域中選定數(shù)據(jù)的方法是先選行再選列,進(jìn)而準(zhǔn)確地找到數(shù)據(jù)位置。 在一個內(nèi)存訪問周期內(nèi)包括Bank的預(yù)充電(Precharge,因為SDRAM需要恒 電流以保存信息, 一旦斷電信息即丟失)、RAS (RowAddress Strobe,行地址 選通脈沖)、CAS (Column Address Strobe,列地址選通脈沖)三個周期。訪 問過程首先是對Bank進(jìn)行充電,預(yù)充電周期是tRP;充電完成后使Bank行 地址有效,由于在選擇了 Bank的同時也選擇了相應(yīng)的行,所以Bank有效和 行地址有效是同一個意思。Bank行地址有效的周期是tRCD,指在經(jīng)過tRCD 的周期后就進(jìn)入了列地址選通階段。CAS有效后還要經(jīng)過一定的周期才能開 始數(shù)據(jù)的傳輸,這個周期就是CL (CAS Latency ),經(jīng)過CL的周期后'被選 中的行與列的交叉格開始進(jìn)行讀取或?qū)懭氲牟僮鳌?br>
圖3所示為DDR2 SDRAM采用Bank interleave (分級交錯)進(jìn)行連續(xù)的讀操作時序圖,DDR2 SDRAM每次的讀、寫操作配置為Burst 8模式(突發(fā) 傳輸是指在一個限定的周期次數(shù)內(nèi),批量傳輸數(shù)據(jù),只需對第一個數(shù)據(jù)位置 進(jìn)行定位,其后的數(shù)據(jù)可以依次自動進(jìn)行操作,這樣大幅提高了傳輸效率。)。 圖3中所示在時鐘周期0發(fā)送讀取Bank
的ACT (激活)和RD (讀取,包 括Auto precharge預(yù)沖電壓)命令,周期4發(fā)送讀取Bank[l]的ACT和RD(包 括Auto precharge )命令,周期8發(fā)送讀取Bank[2]的ACT和RD (包括Auto precharge )命令,周期12發(fā)送讀取Bank[3]的ACT和RD(包括Auto precharge ) 命令,在周期16又重新發(fā)送讀取Bank[O]的ACT和RD(包括Auto precharge ) 命令,利用這種方法在時鐘周期8以后數(shù)據(jù)連續(xù)不斷的從DDR2 SDRAM讀 出數(shù)據(jù),總線效率為100% 。在周期0發(fā)送讀取Bank[O]的ACT和RD (包括 Auto precharge )命令,同周期16發(fā)送讀取Bank[O]的ACT和RD (包括Auto precharge )命令,可以為分別讀取Bank[O]任意Row的數(shù)據(jù),Bank[l]、 Bank[2]、 Bank[3]同理。
本發(fā)明為實現(xiàn)訪問內(nèi)存小包高速線速處理,需要盡可能提高內(nèi)存的帶寬 利用率,下面以64字節(jié)的包作為小包為例進(jìn)行說明,高速線速以10G為例說 明,實際應(yīng)用中,小包可以為小于256字節(jié)的包,例如128字節(jié)小包等,高 速線速也可以是其他速率,例如20G或40G等。
本發(fā)明在讀、寫訪問內(nèi)存過程中基于內(nèi)存的Bank Interleave特性采用組包 方法,并可以在讀訪問內(nèi)存時采用報文調(diào)序,達(dá)到提高內(nèi)存的帶寬利用率。 本發(fā)明中報文寫訪問內(nèi)存過程如圖4所示,包括以下步驟
步驟401,根據(jù)內(nèi)存時鐘頻率確定第一組包閾值;
對于任意報文都需要對內(nèi)存進(jìn)行兩次操作,即收到報文后將報文寫入內(nèi) 存中,當(dāng)準(zhǔn)備發(fā)送報文時將報文從內(nèi)存中讀出。比如M字節(jié)的小包,由于該 小包速率為15Mpps (每秒15, 000, 000個包)時線速為10G,則每個包滿 足10G線速的讀寫處理時間為1/15Mpps二66ns,因此處理一個包的時間為 66ns,即只有讀寫操作在66ns之內(nèi)完成,才能實現(xiàn)10G線速。
由于接收報文的速度要小于內(nèi)存的處理速率,將使得內(nèi)存中的BIU (Bus Interface Unit,總線接口單元,用于同外部聯(lián)系,負(fù)責(zé)所有涉及外部總線的操作,包括取指令、讀操作數(shù)、寫操作數(shù)、地址轉(zhuǎn)換和總線控制等)極快地處 理完一個寫操作后發(fā)現(xiàn)沒有后續(xù)的寫搡作,而去進(jìn)行讀操作,且讀寫搡作之
間會產(chǎn)生切換時間,因此,無法利用上述Bank Interleave特性,使得內(nèi)存帶寬 利用率下降,為此,需要能夠一次處理幾個小包的寫操作以提高效率。
本發(fā)明通過將幾次寫操作進(jìn)行組合的方式將幾個小包組合,能夠發(fā)起連 續(xù)的Bank Interleave寫操作。這種報文組合其實類似于收到了 一個大包時的處 理,節(jié)省了每個小包從寫入到讀出的切換時間,從而達(dá)到IOG線速,就可以 知道要組合多長的報文進(jìn)行合并操作,該值和內(nèi)存的時鐘頻率有關(guān),以時鐘 為250M的DDR2 SDRAM為例,選纟奪組合包長大于等于256B作為組合條件, 對于256B的報文,滿足10G線速的條件是讀寫內(nèi)存的時間小于217ns,推導(dǎo) 方式如下
選定長度的組包實際讀操作時間+寫操作時間<=定長度的報文10G線速
的時間; (公式l)
以太網(wǎng)的凈良文長度=以太網(wǎng)的IPG (Inter Packet Gap,幀間間隙)+前導(dǎo)
碼共20Bytes; ( 7>式2 )
64字節(jié)的小包長度=64字節(jié)+20字節(jié); (公式3 )
64字節(jié)的小包只有讀寫操作在66ns之內(nèi)完成,才能實現(xiàn)IOG線速; 因此,對于256字節(jié)的以太網(wǎng)報文,根據(jù)公式1實現(xiàn)定長度的報文10G
線速的時間=(256+20) /(64+20)*66=217ns;
實際發(fā)起一次讀或?qū)懖僮髟谧顗那闆r下(在同一個BANK中) 讀操作時間二tRCD( Time of RAS to CAS Delay, Bank/行有效的周期)+CL (column arrange select延遲)+256B讀凄M居日寸間+tRP ( Time of Row Precharge,
預(yù)充電周期)
=15ns+16ns+64ns+4ns=99ns; (公式4 )
寫操作時間二tRCD( ACTIVE到READ或WRITE的延遲)+( CL-1 )+256B 寫數(shù)據(jù)時間+寫命令恢復(fù)時間(tWR+tRP )
=15ns+12ns+64ns+15ns+15ns=121ns; (公式5 )
根據(jù)公式4和公式5,讀寫內(nèi)存操作時間共需要220ns,略大于定長度的報文IOG線速的時間217ns,但由于通常情況大部分情況下讀寫不會在同一個 BANK,所以對于256字節(jié)的報文通常可以滿足10G線速,所以當(dāng)收到大于 256B的報文,不需要在進(jìn)行報文組合。
對于其他頻率的DDR2 SDRAM, tRCD、 tWR(寫恢復(fù)時間)和tRP( Time of Row Precharge,預(yù)充電周期)參數(shù)值和略孩i不同,只需要按照上面的公式 計算即可。
步驟402,所述內(nèi)存控制器對需要寫入的小包進(jìn)行組包,并判斷組合后 的小包是否大于等于第一組包閾值,如果是則將所述組合后的小包寫入內(nèi)存 區(qū)域。上述的小包通常情況下為相同大小的小包,此時每個組包的長度達(dá)到 第一組包閾值時,可以作為一個大包寫入內(nèi)存區(qū)域;當(dāng)小包的大小不同時, 組包后長度有可能超出第一組包閾值,此時,可以作為一個大包寫入內(nèi)存區(qū) 域。
以太網(wǎng)控制器接收到的報文,處理單元會向內(nèi)存控制器申請空閑內(nèi)存地 址,然后向該內(nèi)存地址發(fā)起內(nèi)存寫操作,將報文分級存放到內(nèi)存中,如圖5 所示,向DDR2 SDRAM中存儲時是按BANK順序存儲的(Bank0、 Bankl 、 Bank2、 Bank3 ),這樣可以基于圖3所示的Bank Interleave特性大幅提高內(nèi)存 的帶寬利用率。
門限,導(dǎo)致長時間不能被發(fā)出。還是以5個小包為例,前四個小包的組包長 度到達(dá)包長門限,將該組包發(fā)出,此操作結(jié)束后超時判斷機制即時開始(一 般通過計數(shù)器實現(xiàn)),如果后續(xù)又有組包發(fā)生,則結(jié)束上次超時判斷,并開始 新的一次超時判斷(超時計數(shù)器清零后開始重新計數(shù)),如果一直沒有后續(xù)組 包的發(fā)生,像此例中的第五個包,由于包長不夠門限且后續(xù)沒有報文,在達(dá) 到設(shè)定的超時閥值后會自動觸發(fā)一次內(nèi)存寫操作,將這個最后一包寫入到內(nèi) 存中,這里提到的超時閥值通常情況下是可以設(shè)置的,比如可以定為lms, 即前4個包組包完成后,過了 lms,第五個包在超時才幾制的幫助下寫入到內(nèi) 存中。本發(fā)明中,將組包寫入內(nèi)存區(qū)域后,F(xiàn)PGA對報文解析處理,隨后會根據(jù) 處理結(jié)果,將報文從內(nèi)存中取出發(fā)往目的出接口,如圖6所示,包括以下步 驟..
步驟601,根據(jù)內(nèi)存時鐘頻率確定第二組包閾值;在小包的情況下需要進(jìn) 行組包的操作,這樣能夠充分利用Bank Interleave特性,并能夠減小讀寫的切 換次數(shù)。
步驟602,在所述內(nèi)存區(qū)域中的包處理后,所述內(nèi)存控制器對需要讀出的 包進(jìn)行組包,當(dāng)所述組包大于第二組包閾值時從所述內(nèi)存區(qū)域中讀出,并通 過所述報文發(fā)送模塊轉(zhuǎn)發(fā)所述組包。與寫才喿作同理,讀出的小包長度可以相 同,也可以不同。
以太網(wǎng)控制器向該內(nèi)存地址發(fā)起內(nèi)存讀操作,將報文分級讀出,如圖7 所示,每次將內(nèi)存中讀出 一個組包(Bank0、 Bankl 、 Bank2、 Bank3 ),這樣 可以基于圖3所示的Bank Interleave特性大幅提高內(nèi)存的帶寬利用率。
還是以64字節(jié)小包的IOG線速為例,任何包長的報文都會對內(nèi)存進(jìn)行一 次讀、 一次寫操作,為達(dá)到線速,這兩次操作需要在66ns內(nèi)完成操作。對于 寫操作,由于都能夠?qū)崿F(xiàn)Bank Interleave特性,使得寫的效率很高,理論上在 64ns可以完成256B的寫操作,每個64字節(jié)的小包只需要16ns的時間(不考 慮前后BANK相撞的問題)。對于讀操作,由于出隊的任意性,使得即使在組 包的情況下,也無法完全實現(xiàn)Bank Interleave特性,比如連著到來的4個報文 分別在1、 1、 2、 3上,這樣還是存在兩次操作發(fā)生在相同BANK上,導(dǎo)致 precharge時間無法被隱藏,使得性能下降,根據(jù)調(diào)度的隨機性,可以簡單的 分成四種情況,4個小包均在同一個BANK上(最惡劣情況,每個64字節(jié)的 小包需要64ns), 3個小包在同一個BANK上(較惡劣情況,每個64字節(jié)的 小包需要48ns ), 2個小包在同一個BANK上(每個64字節(jié)的小包需要32ns ), 4個小包均不在同一個BANK上(最好情況,每個64字節(jié)的小包需要16ns ), 按照概率分配,可以得到每個64字節(jié)的小包需要的平均時間為40ns。另外還 要考慮讀到寫和寫到讀的切換時間,大致為(24+8 ) /4-8ns。由此可以得到 一個64字節(jié)的小包需要的平均讀、寫時間為16+40+8=62ns,該值小于 ,由此理論上可以達(dá)到線速。
上述第 一組包閾值與第二組包閾值可以設(shè)置相同,也可以設(shè)置不同。
另夕卜,在讀操作時,可以調(diào)整報文的順序,以增加Bank Interleave特性的 效果,具體實現(xiàn)如圖8所示
圖8中1、 2、 3、 4為來包順序,橫條代表位于BankO、豎條代表Bankl 、 左斜條代表Bank2、右斜條代表Bank3。如果兩個相鄰才艮文的BANK號相同, 則后面那個先放入到緩存FIFO中,將該報文調(diào)序到遠(yuǎn)離BANK號相同的報 文;否則入命令FIFO,直接讀出。這種實現(xiàn)的基本初衷就是盡量在本次操作 中岔開兩次對相同BANK的操作。比如四次才喿作(沖艮文順序1、 2、 3、 4)的 BANK為"B0、 B0、 B2、 B3"(圖8中示例2), 一奪調(diào)整為"B0、 B2、 B3、 B0"這樣大大減少第二次對BANK1操作的等待時間(precharge)。
本發(fā)明提供了一種實現(xiàn)小包訪問內(nèi)存高速線速的裝置,如圖9所示,包
括
接收模塊910,用于接收外部發(fā)送的小包報文;
內(nèi)存控制模塊920,與接收模塊910連接,用于對需要寫入的小包進(jìn)行組 包,并判斷組合后的小包是否大于等于第一組包閾值,如果達(dá)到所述組合后 的小包寫入內(nèi)存區(qū)域。當(dāng)接收模塊910接收到的報文,向內(nèi)存控制器申請空 閑內(nèi)存地址,然后向該內(nèi)存地址發(fā)起內(nèi)存寫操作,將報文分級存放到內(nèi)存中, 向DDR2 SDRAM中存儲時是按BANK順序存儲的(BankO、 Bankl 、 Bank2、 Bank3 ),這樣可以基于Bank Interleave特性大幅提高內(nèi)存的帶寬利用率。
通過將幾次寫操作進(jìn)行組合的方式將幾個小包組合,能夠發(fā)起連續(xù)的 Bank Interleave寫操作。這種報文組合其實類似于收到了 一個大包時的處理, 節(jié)省了每個小包從寫入到讀出的切換時間,從而達(dá)到10G線速,就可以知道 要組合多長的報文進(jìn)行合并操作,該值和內(nèi)存的時鐘頻率有關(guān),以時鐘為 250M的DDR2 SDRAM為例,選擇組合包長大于等于256B作為組合條件。
內(nèi)存控制模塊920在所述內(nèi)存區(qū)域中的包處理后,對需要讀出的包進(jìn)行 組包,當(dāng)所述組包大于等于第二組包閾值時從所述內(nèi)存區(qū)域中讀出,并通過所述報文發(fā)送模塊轉(zhuǎn)發(fā)所述組包;第 一組包閾值為寫入時需要達(dá)到的高速線 速的組包長度,第二組包閾值為讀出時需要達(dá)到的高速線速的組包長度;內(nèi) 存控制模塊920向該內(nèi)存地址發(fā)起內(nèi)存讀操作,將報文分級讀出,每次將內(nèi) 存中讀出一個組包(BankO 、 Bankl 、 Bank2 、 Bank3 ),這樣可以基于Bank Interleave特性大幅提高內(nèi)存的帶寬利用率。
發(fā)送模塊930,與內(nèi)存控制模塊920連接,用于將所述內(nèi)存控制模塊讀取 的組包發(fā)送到外部。
其中,內(nèi)存控制模塊920,還用于在讀取組包時,判斷所述組包中的相鄰 小包是否屬于同一Bank,如果屬于同一Bank,則通過緩存FIFO將后續(xù)相同 Bank的小包進(jìn)行調(diào)序,使其盡量遠(yuǎn)離前一個相同Bank的小包。
其中,每次組合小包時除了判斷包長以外,在每次發(fā)送完本次組包,如 果還有小包沒有發(fā)送,就啟動定時。因此,內(nèi)存控制模塊920,還用于檢測到 若干小包的組包長度達(dá)到包長門限,將所述組包發(fā)出,并啟動超時判斷;如 果后續(xù)又發(fā)生組包,結(jié)束上次超時判斷,并開始新的超時判斷;如果所述超 時判斷時間達(dá)到預(yù)設(shè)超時閥值而沒達(dá)到包長門限,則自動觸發(fā)內(nèi)存寫操作, 將沒有達(dá)到包長門限且待寫入的小包組包寫入到內(nèi)存。
其中,內(nèi)存控制模塊920中所述第一組包閾值和所述第二組包闊值根據(jù) 內(nèi)存時鐘頻率確定。
本發(fā)明中,在讀、寫訪問內(nèi)存過程中基于內(nèi)存的Bank Interleave特性采用 組包方法,并可以在讀訪問內(nèi)存時采用報文調(diào)序,達(dá)到提高內(nèi)存的帶寬利用 率。
通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā) 明可以通過硬件實現(xiàn),也可以借助軟件加必要的通用硬件平臺的方式來實現(xiàn)。 基于這樣的理解,本發(fā)明的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟 件產(chǎn)品可以存儲在一個非易失性存儲介質(zhì)(可以是CD-ROM, U盤,移動硬 盤等)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,月良 務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述的方法。
本領(lǐng)域技術(shù)人員可以理解附圖只是一個優(yōu)選實施例的示意圖,附圖中的模塊或流程并不 一定是實施本發(fā)明所必須的。
本領(lǐng)域技術(shù)人員可以理解實施例中的裝置中的模塊可以按照實施例描述 進(jìn)行分布于實施例的裝置中,也可以進(jìn)行相應(yīng)變化位于不同于本實施例的一 個或多個裝置中。上述實施例的模塊可以合并為一個模塊,也可以進(jìn)一步拆
,\ JP 々入義丄it
力一力、夕'廣"T^關(guān)》尺。
上述本發(fā)明序號僅僅為了描述,不代表實施例的優(yōu)劣。
以上公開的僅為本發(fā)明的幾個具體實施例,但是,本發(fā)明并非局限于此, 任何本領(lǐng)域的技術(shù)人員能思之的變化都應(yīng)落入本發(fā)明的保護范圍。
權(quán)利要求
1、一種實現(xiàn)小包訪問內(nèi)存高速線速的方法,應(yīng)用于包括接收模塊、內(nèi)存區(qū)域、內(nèi)存控制器和發(fā)送模塊的裝置中,其特征在于,所述方法包括以下步驟所述內(nèi)存控制器對需要寫入的小包進(jìn)行組包,并判斷組合后的小包是否大于等于第一組包閾值,如果達(dá)到所述組合后的小包寫入內(nèi)存區(qū)域;在所述內(nèi)存區(qū)域中的包處理后,所述內(nèi)存控制器對需要讀出的包進(jìn)行組包,當(dāng)所述組包大于等于第二組包閾值時從所述內(nèi)存區(qū)域中讀出,并通過所述報文發(fā)送模塊轉(zhuǎn)發(fā)所述組包;第一組包閾值為寫入時需要達(dá)到的高速線速的組包長度,第二組包閾值為讀出時需要達(dá)到的高速線速的組包長度。
2、 如權(quán)利要求1所述的方法,其特征在于,所述A^所述內(nèi)存區(qū)域中讀出, 之前還包括判斷所述組包中的相鄰小包是否屬于同一Bank,如果屬于同一Bank,則 通過緩存FIFO將后續(xù)相同Bank的小包進(jìn)行調(diào)序,使其遠(yuǎn)離前一個相同Bank 的小包。
3、 如權(quán)利要求l所述的方法,其特征在于,所述對需要寫入的小包進(jìn)行 組包,之后還包括檢測到若干小包的組包長度達(dá)到包長門限,將所述組包發(fā)出,并啟動超 時判斷;如果后續(xù)又發(fā)生組包,結(jié)束上次超時判斷,并開始新的超時判斷;如果 所述超時判斷時間達(dá)到預(yù)設(shè)超時閥值而沒發(fā)生組包,則自動觸發(fā)內(nèi)存寫操作, 將沒有達(dá)到包長門限且待寫入的小包組包寫入到內(nèi)存。
4、 如權(quán)利要求l所述的方法,其特征在于,所述第一組包闊值和所述第 二組包閣值才艮據(jù)內(nèi)存時鐘頻率確定。
5、 一種實現(xiàn)小包訪問內(nèi)存高速線速的裝置,其特征在于,包括 接收模塊,用于接收外部發(fā)送的小包報文;內(nèi)存控制模塊,與所述接收模塊連接,用于對需要寫入的小包進(jìn)行組包, 并判斷組合后的小包是否大于等于第 一組包閾值,如果達(dá)到所述組合后的"J、包寫入內(nèi)存區(qū)域;在所述內(nèi)存區(qū)域中的包處理后,對需要讀出的包進(jìn)行組包, 當(dāng)所述組包大于等于第二組包閾值時從所述內(nèi)存區(qū)域中讀出,并通過所述報 文發(fā)送模塊轉(zhuǎn)發(fā)所述組包;第 一組包闊值為寫入時需要達(dá)到的高速線速的組 包長度,第二組包閾值為讀出時需要達(dá)到的高速線速的組包長度;發(fā)送模塊,與所述內(nèi)存控制模塊連接,用于將所述內(nèi)存控制模塊讀取的 組包發(fā)送到外部。
6、 如權(quán)利要求5所述的裝置,其特征在于,所述內(nèi)存控制模塊,還用于在讀取組包時,判斷所述組包中的相鄰小包 是否屬于同一Bank,如果屬于同一Bank,則通過緩存FIFO將后續(xù)相同Bank 的小包進(jìn)行調(diào)序,z使其盡量遠(yuǎn)離前一個相同Bank的小包。
7、 如權(quán)利要求5所述的裝置,其特征在于,所述內(nèi)存控制模塊,還用于檢測到若干小包的組包長度達(dá)到包長門限, 將所述組包發(fā)出,并啟動超時判斷;如果后續(xù)又發(fā)生組包,結(jié)束上次超時判 斷,并開始新的超時判斷;如果所述超時判斷時間達(dá)到預(yù)設(shè)超時閥值而沒發(fā) 生組包,則自動觸發(fā)內(nèi)存寫操作,將沒有達(dá)到包長門限且待寫入的小包組包 寫入到內(nèi)存。
8、 如權(quán)利要求5所述的裝置,其特征在于,所述第一組包閾值和所述第 二組包閾值根據(jù)內(nèi)存時鐘頻率確定。
全文摘要
本發(fā)明公開了一種實現(xiàn)小包訪問內(nèi)存高速線速的方法,包括所述內(nèi)存控制器對需要寫入的小包進(jìn)行組包,并判斷組合后的小包是否大于等于第一組包閾值,如果達(dá)到所述組合后的小包寫入內(nèi)存區(qū)域;在所述內(nèi)存區(qū)域中的包處理后,所述內(nèi)存控制器對需要讀出的包進(jìn)行組包,當(dāng)所述組包大于等于第二組包閾值時從所述內(nèi)存區(qū)域中讀出,并通過所述報文發(fā)送模塊轉(zhuǎn)發(fā)所述組包;第一組包閾值為寫入時需要達(dá)到的高速線速的組包長度,第二組包閾值為讀出時需要達(dá)到的高速線速的組包長度。本發(fā)明中,在讀、寫訪問內(nèi)存過程中基于內(nèi)存的Bank Interleave特性采用組包方法,并可以在讀訪問內(nèi)存時采用報文調(diào)序,達(dá)到提高內(nèi)存的帶寬利用率。
文檔編號H04L12/56GK101621474SQ20091016286
公開日2010年1月6日 申請日期2009年8月11日 優(yōu)先權(quán)日2009年8月11日
發(fā)明者浩 田, 趙云峰 申請人:杭州華三通信技術(shù)有限公司