基于ddr sdram的計數(shù)器及其實現(xiàn)方法
【專利摘要】本發(fā)明提供一種基于DDR?SDRAM的計數(shù)器及其實現(xiàn)方法。該方法包括接收到第一報文后,向DDR?SDRAM發(fā)送第一激活命令和第一讀命令,所述第一激活命令用于激活所述DDR?SDRAM內(nèi)的第一子存儲塊,所述第一讀命令用于讀取所述第一子存儲塊內(nèi)存儲的第一計數(shù)值;對所述第一計數(shù)值進行第一更新處理,得到第二計數(shù)值;向所述DDR?SDRAM發(fā)送第二激活命令和第一寫命令,所述第二激活命令用于激活所述DDR?SDRAM內(nèi)的第二子存儲塊,所述第一寫命令用于將所述第二計數(shù)值寫入所述第二子存儲塊內(nèi)。本發(fā)明實施例可以滿足高速設(shè)備的速率要求。
【專利說明】基于DDR SDRAM的計數(shù)器及其實現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計數(shù)器技術(shù),尤其涉及一種基于DDR SDRAM的計數(shù)器及其實現(xiàn)方法。【背景技術(shù)】
[0002]在電信設(shè)備上需要對于出入設(shè)備的報文做報文個數(shù)和報文長度的計數(shù),用于網(wǎng)絡(luò)的安全維護、計費及設(shè)備的調(diào)試。計數(shù)一般會根據(jù)端口、IP地址等報文的字段區(qū)分流,每條流需要單獨技術(shù),這種對于每條流計數(shù)的結(jié)構(gòu)就是計數(shù)器。
[0003]雙數(shù)據(jù)率同步動態(tài)隨機訪問存儲器(Double Data Rate Synchronous DynamicRandom, DDR SDRAM)作為目前應(yīng)用最廣泛的外部存儲器,在成本、帶寬、功耗等領(lǐng)域都有巨大優(yōu)勢,但DDR SDRAM (以下簡稱為DDR)本身是為大數(shù)據(jù)量訪問、大數(shù)據(jù)量存儲所設(shè)計,在單次訪問數(shù)據(jù)量較小時,效率上具有劣勢。
[0004]以DDR為DDR3為例,DDR3存儲體分為8個子存儲塊(Bank)。當(dāng)以DDR3作為計數(shù)器的存儲媒介時的操作流程包括:接收到一個報文后,發(fā)送激活(ACT)命令打開計數(shù)值所在的Bank,之后發(fā)送讀(RD)命令讀取計數(shù)值;在讀取的計數(shù)值的基礎(chǔ)上增加報文長度或者報文個數(shù),得到更新后的計數(shù)值;在間隔同一個Bank兩次激活之間的最小延時(tRC)時間之后,發(fā)送ACT命令打開該同一個Bank,之后發(fā)送寫(WR)命令將更新后的計數(shù)值寫入。
[0005]由于打開同一個Bank需要等待tRC時間,tRC時間通常為40個時鐘周期,另外不同的計數(shù)器之間的讀寫操作也可能要間隔40個時鐘周期,那么,當(dāng)DDR3的頻率為1600兆赫茲(MHz)時,基于該DDR3的計數(shù)器的最大帶寬就是800MHz/(40X2)=10兆報文每秒(Mpps),也就是每秒只能操作IOM次,這一帶寬很難滿足高速設(shè)備的速率要求。
【發(fā)明內(nèi)容】
[0006]有鑒于此,本發(fā)明實施例提供了一種基于DDR SDRAM的計數(shù)器及其實現(xiàn)方法,用以解決基于DDR SDRAM的計數(shù)器帶寬不足的問題。
[0007]第一方面,提供了一種基于DDR SDRAM的計數(shù)器及其實現(xiàn)方法,包括:
[0008]接收到第一報文后,向DDR SDRAM發(fā)送第一激活命令和第一讀命令,所述第一激活命令用于激活所述DDR SDRAM內(nèi)的第一子存儲塊,所述第一讀命令用于讀取所述第一子存儲塊內(nèi)存儲的第一計數(shù)值;
[0009]對所述第一計數(shù)值進行第一更新處理,得到第二計數(shù)值;
[0010]向所述DDR SDRAM發(fā)送第二激活命令和第一寫命令,所述第二激活命令用于激活所述DDR SDRAM內(nèi)的第二子存儲塊,所述第一寫命令用于將所述第二計數(shù)值寫入所述第二子存儲塊內(nèi)。
[0011]結(jié)合第一方面,在第一方面的第一種可能的實現(xiàn)方式中,還包括:
[0012]記錄所述第二子存儲塊的編號;
[0013]接收到第二報文后,根據(jù)記錄的所述第二子存儲塊的編號,向所述DDR SDRAM發(fā)送第三激活命令和第二讀命令,所述第三激活命令用于激活所述第二子存儲塊,所述第二讀命令用于從所述第二子存儲塊內(nèi)讀取所述第二計數(shù)值;
[0014]對所述第二計數(shù)值進行第二更新處理,得到第三計數(shù)值;
[0015]向所述DDR SDRAM發(fā)送第四激活命令和第二寫命令,所述第四激活命令用于激活與所述第二子存儲塊不同的子存儲塊,所述第二寫命令用于將所述第三計數(shù)值寫入所述與所述第二子存儲塊不同的子存儲塊內(nèi)。
[0016]記錄所述與所述第二子存儲塊不同的子存儲塊的編號,以便下次需要計數(shù)時從所述與所述第二子存儲塊不同的子存儲塊內(nèi)讀取計數(shù)值。
[0017]結(jié)合第一方面的第一種可能的實現(xiàn)方式,在第一方面的第二種可能的實現(xiàn)方式中,所述與所述第二子存儲塊不同的子存儲塊為:所述第一子存儲塊。
[0018]結(jié)合第一方面,在第一方面的第三種可能的實現(xiàn)方式中,所述第二激活命令與所述第一讀命令之間的時間間隔小于tRC。
[0019]結(jié)合第一方面的第一種可能的實現(xiàn)方式,在第一方面的第四種可能的實現(xiàn)方式中,所述第三激活命令與所述第一寫命令之間的時間間隔等于tRC。
[0020]第二方面,提供了一種基于DDR SDRAM的計數(shù)器,包括:
[0021]計數(shù)邏輯模塊和DDR SDRAM ;
[0022]所述DDR SDRAM包括第一子存儲塊和第二子存儲塊;
[0023]所述計數(shù)邏輯模塊用于接收到第一報文后,向所述第一子存儲塊發(fā)送第一激活命令和第一讀命令,所述第一激活命令用于激活所述第一子存儲塊,所述第一讀命令用于讀取所述第一子存儲塊內(nèi)存儲的第一計數(shù)值;
[0024]所述第一子存儲塊用于根據(jù)所述第一激活命令和所述第一讀命令,將所述第一計數(shù)值讀出給所述計數(shù)邏輯模塊;
[0025]所述計數(shù)邏輯模塊還用于所述第一計數(shù)值進行第一更新處理,得到第二計數(shù)值;
[0026]所述計數(shù)邏輯模塊還用于向所述第二子存儲塊發(fā)送第二激活命令和第一寫命令,所述第二激活命令用于激活所述第二子存儲塊,所述第一寫命令用于將所述第二計數(shù)值寫入所述第二子存儲塊;
[0027]所述第二子存儲塊還用于根據(jù)所述第一激活命令和所述第一寫命令,寫入所述第二計數(shù)值。
[0028]結(jié)合第二方面,在第二方面的第一種可能的實現(xiàn)方式中,
[0029]所述計數(shù)邏輯模塊還用于記錄所述第二子存儲塊的編號;
[0030]所述計數(shù)邏輯模塊還用于接收到第二報文后,根據(jù)記錄的所述第二子存儲塊的編號,向所述第二子存儲塊發(fā)送第三激活命令和第二讀命令,所述第三激活命令用于激活所述第二子存儲塊,所述第二讀命令用于從所述第二子存儲塊內(nèi)讀取所述第二計數(shù)值;
[0031]所述第二子存儲塊還用于根據(jù)所述第三激活命令和所述第二讀命令,將所述第二計數(shù)值讀出給所述計數(shù)邏輯模塊;
[0032]所述計數(shù)邏輯模塊還用于對所述第二計數(shù)值進行第二更新處理,得到第三計數(shù)值;
[0033]所述計數(shù)邏輯模塊還用于向所述DDR SDRAM內(nèi)與所述第二子存儲塊不同的子存儲塊發(fā)送第四激活命令和第二寫命令,所述第四激活命令用于激活與所述第二子存儲塊不同的子存儲塊,所述第二寫命令用于將所述第三計數(shù)值寫入所述與所述第二子存儲塊不同的子存儲塊內(nèi);
[0034]所述與所述第二子存儲塊不同的子存儲塊還用于根據(jù)所述第四激活命令和所述第二寫命令,寫入所述第三計數(shù)值;
[0035]所述計數(shù)邏輯模塊還用于記錄所述與所述第二子存儲塊不同的子存儲塊的編號,以便下次需要計數(shù)時從所述與所述第二子存儲塊不同的子存儲塊內(nèi)讀取計數(shù)值。
[0036]結(jié)合第二方面的第一種可能的實現(xiàn)方式,在第二方面的第二種可能的實現(xiàn)方式中,所述與所述第二子存儲塊不同的子存儲塊為所述第一子存儲塊。
[0037]結(jié)合第二方面,在第二方面的第三種可能的實現(xiàn)方式中,所述計數(shù)邏輯模塊發(fā)送的所述第二激活命令與所述第一讀命令之間的時間間隔小于tRC。
[0038]結(jié)合第二方面的第一種可能的實現(xiàn)方式,在第二方面的第四種可能的實現(xiàn)方式中,所述計數(shù)邏輯模塊發(fā)送的所述第三激活命令與所述第一寫命令之間的時間間隔等于tRC。
[0039]通過上述技術(shù)方案,將第一計數(shù)值保存在第一子存儲塊內(nèi),將第二計數(shù)值保存在第二子存儲塊內(nèi),也就是將更新前后的計數(shù)值分別保存在不同的子存儲塊內(nèi),由于更新前后的計數(shù)值保存在不同的子存儲塊內(nèi),那么兩次的激活命令就沒有延時限制,也就不需要等待tRC時間,縮短等待時間后就可以提高帶寬,滿足高速設(shè)備的速率要求。
【專利附圖】
【附圖說明】
[0040]為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0041]圖1為本發(fā)明基于DDR SDRAM的計數(shù)器的實現(xiàn)方法一實施例的結(jié)構(gòu)示意圖;
[0042]圖2為本發(fā)明實施例中計數(shù)器實現(xiàn)的結(jié)構(gòu)示意圖;
[0043]圖3為本發(fā)明基于DDR SDRAM的計數(shù)器的實現(xiàn)方法另一實施例的流程示意圖;
[0044]圖4為圖3對應(yīng)的時序示意圖;
[0045]圖5為本發(fā)明基于DDR SDRAM的計數(shù)器的結(jié)構(gòu)示意圖。
【具體實施方式】
[0046]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0047]圖1為本發(fā)明基于DDR SDRAM的計數(shù)器的實現(xiàn)方法一實施例的結(jié)構(gòu)示意圖,包括:
[0048]步驟11:接收到第一報文后,向DDR SDRAM發(fā)送第一激活(ACT)命令和第一讀(RD)命令,所述第一激活命令用于激活所述DDR SDRAM內(nèi)的第一子存儲塊(Bank),所述第一讀命令用于讀取所述第一子存儲塊內(nèi)存儲的第一計數(shù)值;
[0049]步驟12:對所述第一計數(shù)值進行第一更新處理,得到第二計數(shù)值;
[0050]步驟13:向所述DDR SDRAM發(fā)送第二激活命令和第一寫命令,所述第二激活命令用于激活所述DDR SDRAM內(nèi)的第二子存儲塊,所述第一寫命令用于將所述第二計數(shù)值寫入所述第二子存儲塊內(nèi)。
[0051]如圖2所示,為本發(fā)明實施例中計數(shù)器實現(xiàn)的結(jié)構(gòu)示意圖,轉(zhuǎn)發(fā)芯片用于轉(zhuǎn)發(fā)各種報文,計數(shù)器是基于DDR SDRAM (簡稱為DDR)的計數(shù)器,包括現(xiàn)場可編程門陣列(FieldProgrammable Gate Array, FPGA)和DDR, FPGA中包括計數(shù)邏輯模塊。計數(shù)邏輯模塊用于更新計數(shù)值,DDR用于存儲計數(shù)值。
[0052]如圖1所示的實施例的執(zhí)行主體可以具體為計數(shù)器內(nèi)的計數(shù)邏輯模塊。針對第一報文,更新前的計數(shù)值(也就是第一計數(shù)值)保存在第一子存儲塊(Bank)內(nèi),更新后的計數(shù)值(也就是第二計數(shù)值)保存在第二子存儲塊內(nèi)。
[0053]結(jié)合圖2所示的結(jié)構(gòu)示意圖,圖3為本發(fā)明基于DDR SDRAM的計數(shù)器的實現(xiàn)方法另一實施例的流程不意圖,圖4為圖3對應(yīng)的時序不意圖。本實施例包括:
[0054]步驟31:計數(shù)邏輯模塊接收到轉(zhuǎn)發(fā)芯片轉(zhuǎn)發(fā)的第一報文后,向DDR發(fā)送第一激活命令和第一讀命令,第一激活命令用于激活DDR內(nèi)的第一子存儲塊,第一讀命令用于讀取第一子存儲塊內(nèi)存儲的第一計數(shù)值。
[0055]可選的,計數(shù)邏輯模塊可以根據(jù)預(yù)先記錄的子存儲塊的編號,確定激活的子存儲塊,例如,記錄的子存儲塊的編號為第一子存儲塊的編號,那么發(fā)送的第一激活命令就用于激活第一子存儲塊。
[0056]可選的,在計數(shù)時,可以根據(jù)端口、IP地址等報文字段區(qū)分不同的流,對不同的流分別進行計數(shù),例如,將端口 I的報文劃分為第一組流,具有第計數(shù)值_1,將端口 2的報文劃分為第二組流,具有計數(shù)值_2等。每個不同的計數(shù)值保存在DDR的不同的子存儲塊(Bank)內(nèi),例如,計數(shù)值_1保存在子存儲塊_1內(nèi),第二個計數(shù)值保存在子存儲塊_3內(nèi)等,在初始時的計數(shù)值具體保存在哪個子存儲塊內(nèi)可以預(yù)先約定,并記錄在計數(shù)邏輯模塊中,這樣當(dāng)計數(shù)邏輯模塊得到計數(shù)值后就可以根據(jù)記錄的子存儲塊的編號將計數(shù)值保存到對應(yīng)的子存儲塊內(nèi)。例如,當(dāng)對第一組流進行計數(shù)時,得到第一計數(shù)值后,可以將第一計數(shù)值存儲到子存儲塊_1內(nèi)。
[0057]步驟32:計數(shù)邏輯模塊對所述第一計數(shù)值進行第一更新處理,得到第二計數(shù)值;
[0058]其中,可以根據(jù)要計數(shù)的內(nèi)容進行相應(yīng)的更新,例如,需要對報文的個數(shù)進行計數(shù)時,那么每接收到一個屬于對應(yīng)流的報文后就對計數(shù)值加1,具體如每接收到一個端口 I的報文,那么將第一計數(shù)值加I。
[0059]可以理解的是,也可以根據(jù)實際需要對其它參數(shù)進行計數(shù),例如需要對報文的長度進行計數(shù)時,每接收到一個屬于對應(yīng)流的報文后,就在原有計數(shù)值的基礎(chǔ)上加上接收到的報文的長度,得到更新后的報文長度。
[0060]步驟33:計數(shù)邏輯模塊向DDR發(fā)送第二激活命令和第一寫命令,所述第二激活命令用于激活DDR內(nèi)的第二子存儲塊,所述第一寫命令用于將所述第二計數(shù)值寫入所述第二子存儲塊內(nèi)。
[0061]其中,第二子存儲塊是與第一子存儲塊不同的子存儲塊,具體是哪個存儲塊也可以預(yù)先約定,例如,對于第一組流,其更新前的計數(shù)值和更新后的計數(shù)值分別存儲在DDR的子存儲塊_1和子存儲塊_2內(nèi),對應(yīng)第一組流的第一計數(shù)值保存在子存儲塊_1內(nèi),那么對應(yīng)第一組流的第二計數(shù)值就保存在子存儲塊_2內(nèi),之后得到第二計數(shù)值后就可以激活子存儲塊_2并將第二計數(shù)值寫入子存儲塊_2內(nèi)。
[0062]如圖4所示,由于第一子存儲塊和第二子存儲塊屬于不同的子存儲塊,沒有延時限制,那么在得到第二計數(shù)值后就可以直接寫入第二子存儲塊內(nèi),不需要再等待tRC時間后才寫入,就可以降低讀出、寫入之間的延時。
[0063]步驟34:計數(shù)邏輯模塊記錄第二子存儲塊的編號。
[0064]通過記錄的子存儲塊的編號,在下次接收到報文后,可以根據(jù)編號從對應(yīng)的子存儲塊內(nèi)讀取計數(shù)值。
[0065]S卩,可選的,還可以包括:
[0066]步驟35:計數(shù)邏輯模塊接收到第二報文后,根據(jù)記錄的第二子存儲塊的編號,向DDR發(fā)送第三激活命令和第二讀命令,第三激活命令用于激活所述第二子存儲塊,所述第二讀命令用于從所述第二子存儲塊內(nèi)讀取所述第二計數(shù)值;
[0067]由于第三激活命令和第二激活命令都是用于激活第二子存儲塊,因此,如圖4所示,第三激活命令與第一寫命令之間需要間隔tRC時間。之后,通過激活和讀命令,可以從第二子存儲塊內(nèi)讀取第二計數(shù)值。
[0068]步驟36:計數(shù)邏輯模塊對所述第二計數(shù)值進行第二更新處理,得到第三計數(shù)值;
[0069]例如,類似第一更新處理的內(nèi)容,如果是對報文個數(shù)進行增加,那么可以是加I。
[0070]步驟37:計數(shù)邏輯模塊向DDR發(fā)送第四激活命令和第二寫命令,所述第四激活命令用于激活所述第一子存儲塊,所述第二寫命令用于將所述第三計數(shù)值寫入所述第一子存儲塊內(nèi)。
[0071]類似步驟33都是進行寫操作,與步驟33不同的是,步驟33是寫入第二子存儲塊,而這里是寫入第一子存儲塊,實現(xiàn)子存儲塊間的輪流存儲。
[0072]步驟38:記錄第一子存儲塊的編號。
[0073]之后,當(dāng)再次接收到報文后,可以根據(jù)步驟3廣步驟38重復(fù)執(zhí)行。
[0074]通過上述流程計數(shù)值在第一子存儲塊和第二子存儲塊內(nèi)輪流存儲,也就是使用乒兵(ping-pong)操作完成一次計數(shù)器的讀寫。
[0075]本實施例以計數(shù)值在第一子存儲塊和第二子存儲塊間輪流存儲為例,可以理解的是,也可以在其余子存儲塊內(nèi)進行存儲,例如,從第二子存儲塊內(nèi)讀取并更新后,將更新后的計數(shù)值存儲到第三子存儲塊內(nèi)。
[0076]從上面流程可以看出,對于每個報文的讀和寫之間,由于激活不同的子存儲塊,因此不用間隔一個tRC時間,這樣就比原有方案減少了 40個時鐘周期的等待時間,還是假設(shè)DDR3為存儲介質(zhì),頻率為1600MHz為例,那么應(yīng)用本發(fā)明實施例后的帶寬就是:800MHz/40=20Mpps,比原有方案提高了一倍的訪問帶寬。
[0077]另外,以IGbit的DDR3為例,當(dāng)計數(shù)值為128位(bit)時,能夠?qū)崿F(xiàn)4MX 128bit的計數(shù)器。
[0078]本實施例以DDR作為存儲媒介,可以保證存儲容量;通過將更新前后的計數(shù)值分別保存在不同的子存儲塊內(nèi),兩次的激活命令就沒有延時限制,也就不需要等待tRC時間,縮短等待時間后就可以提高帶寬,滿足高速設(shè)備的速率要求,避免DDR的帶寬浪費。
[0079]圖5為本發(fā)明基于DDR SDRAM的計數(shù)器的結(jié)構(gòu)示意圖,包括計數(shù)邏輯模塊51和DDRSDRAM 52 ;所述DDR SDRAM包括第一子存儲塊521和第二子存儲塊522 ;所述計數(shù)邏輯模塊51用于接收到第一報文后,向所述第一子存儲塊521發(fā)送第一激活命令和第一讀命令,所述第一激活命令用于激活所述第一子存儲塊521,所述第一讀命令用于讀取所述第一子存儲塊521內(nèi)存儲的第一計數(shù)值;所述第一子存儲塊521用于根據(jù)所述第一激活命令和所述第一讀命令,將所述第一子存儲塊521內(nèi)存儲的第一計數(shù)值讀出給所述計數(shù)邏輯模塊;所述計數(shù)邏輯模塊51還用于所述第一計數(shù)值進行第一更新處理,得到第二計數(shù)值;所述計數(shù)邏輯模塊51還用于向所述第二子存儲塊522發(fā)送第二激活命令和第一寫命令,所述第二激活命令用于激活所述第二子存儲塊522,所述第一寫命令用于將所述第二計數(shù)值寫入所述第二子存儲塊522 ;所述第二子存儲塊522還用于根據(jù)所述第一激活命令和所述第一寫命令,寫入所述第二計數(shù)值。
[0080]可選的,所述計數(shù)邏輯模塊51還用于記錄所述第二子存儲塊522的編號;
[0081]所述計數(shù)邏輯模塊51還用于接收到第二報文后,根據(jù)記錄的所述第二子存儲塊的編號,向所述第二子存儲塊522發(fā)送第三激活命令和第二讀命令,所述第三激活命令用于激活所述第二子存儲塊522,所述第二讀命令用于從所述第二子存儲塊522內(nèi)讀取所述第二計數(shù)值;
[0082]第二子存儲塊522還用于根據(jù)所述第三激活命令和所述第二讀命令,將所述第二子存儲塊內(nèi)存儲的第二計數(shù)值讀出給所述計數(shù)邏輯模塊51 ;
[0083]所述計數(shù)邏輯模塊51還用于對所述第二計數(shù)值進行第二更新處理,得到第三計數(shù)值;
[0084]所述計數(shù)邏輯模塊51還用于向DDR SDRAM 52內(nèi)與所述第二子存儲塊不同的子存儲塊發(fā)送第四激活命令和第二寫命令,所述第四激活命令用于激活與所述第二子存儲塊不同的子存儲塊,所述第二寫命令用于將所述第三計數(shù)值寫入所述與所述第二子存儲塊不同的子存儲塊內(nèi);
[0085]所述與所述第二子存儲塊不同的子存儲塊還用于根據(jù)所述第四激活命令和所述第二寫命令,寫入所述第三計數(shù)值;
[0086]所述計數(shù)邏輯模塊51還用于記錄所述與所述第二子存儲塊不同的子存儲塊的編號,以便下次需要計數(shù)時從所述與所述第二子存儲塊不同的子存儲塊內(nèi)讀取計數(shù)值。
[0087]可選的,所述與所述第二子存儲塊不同的子存儲塊為所述第一子存儲塊521。
[0088]可選的,所述計數(shù)邏輯模塊51發(fā)送的所述第二激活命令與所述第一讀命令之間的時間間隔小于tRC。
[0089]可選的,所述計數(shù)邏輯模塊51發(fā)送的所述第三激活命令與所述第一寫命令之間的時間間隔等于tRC。
[0090]本實施例以DDR作為存儲媒介,可以保證存儲容量;通過將更新前后的計數(shù)值分別保存在不同的子存儲塊內(nèi),兩次的激活命令就沒有延時限制,也就不需要等待tRC時間,縮短等待時間后就可以提高帶寬,滿足高速設(shè)備的速率要求,避免DDR的帶寬浪費。
[0091]本發(fā)明實施例可以應(yīng)用到各種需要高性能計數(shù)器的場合,如操作管理維護(Operation Administration and Maintenance, 0ΑΜ)、網(wǎng)絡(luò)流(NETSTREAM)等協(xié)議的場景。
[0092]所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,僅以上述各功能模塊的劃分進行舉例說明,實際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。
[0093]在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述模塊或單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
[0094]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
[0095]另外,在本申請各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
[0096]所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本申請的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本申請各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM, Read-Only Memory)、隨機存取存儲器(RAM, Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0097]以上所述,以上實施例僅用以說明本申請的技術(shù)方案,而非對其限制;盡管參照前述實施例對本申請進行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本申請各實施例技術(shù)方案的精神和范圍。
【權(quán)利要求】
1.一種基于雙數(shù)據(jù)率同步動態(tài)隨機訪問存儲器DDR SDRAM的計數(shù)器的實現(xiàn)方法,其特征在于,包括: 接收到第一報文后,向DDR SDRAM發(fā)送第一激活命令和第一讀命令,所述第一激活命令用于激活所述DDR SDRAM內(nèi)的第一子存儲塊,所述第一讀命令用于讀取所述第一子存儲塊內(nèi)存儲的第一計數(shù)值; 對所述第一計數(shù)值進行第一更新處理,得到第二計數(shù)值; 向所述DDR SDRAM發(fā)送第二激活命令和第一寫命令,所述第二激活命令用于激活所述DDR SDRAM內(nèi)的第二子存儲塊,所述第一寫命令用于將所述第二計數(shù)值寫入所述第二子存儲塊內(nèi)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括: 記錄所述第二子存儲塊的編號; 接收到第二報文后,根據(jù)記錄的所述第二子存儲塊的編號,向所述DDR SDRAM發(fā)送第三激活命令和第二讀命令,所述第三激活命令用于激活所述第二子存儲塊,所述第二讀命令用于從所述第二子存儲塊內(nèi)讀取所述第二計數(shù)值; 對所述第二計數(shù)值進行第二更新處理,得到第三計數(shù)值; 向所述DDR SDRAM發(fā)送第四激活命令和第二寫命令,所述第四激活命令用于激活與所述第二子存儲塊不同的子存儲塊,所述第二寫命令用于將所述第三計數(shù)值寫入所述與所述第二子存儲塊不同 的子存儲塊內(nèi)。 記錄所述與所述第二子存儲塊不同的子存儲塊的編號,以便下次需要計數(shù)時從所述與所述第二子存儲塊不同的子存儲塊內(nèi)讀取計數(shù)值。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述與所述第二子存儲塊不同的子存儲塊為:所述第一子存儲塊。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于, 所述第二激活命令與所述第一讀命令之間的時間間隔小于同一個子存儲塊兩次激活之間的最小延時tRC。
5.根據(jù)權(quán)利要求2所述的方法,其特征在于, 所述第三激活命令與所述第一寫命令之間的時間間隔等于同一個子存儲塊兩次激活之間的最小延時tRC。
6.一種基于雙數(shù)據(jù)率同步動態(tài)隨機訪問存儲器DDR SDRAM的計數(shù)器,其特征在于,包括: 計數(shù)邏輯模塊和DDR SDRAM ; 所述DDR SDRAM包括第一子存儲塊和第二子存儲塊; 所述計數(shù)邏輯模塊用于接收到第一報文后,向所述第一子存儲塊發(fā)送第一激活命令和第一讀命令,所述第一激活命令用于激活所述第一子存儲塊,所述第一讀命令用于讀取所述第一子存儲塊內(nèi)存儲的第一計數(shù)值; 所述第一子存儲塊用于根據(jù)所述第一激活命令和所述第一讀命令,將所述第一計數(shù)值讀出給所述計數(shù)邏輯模塊; 所述計數(shù)邏輯模塊還用于所述第一計數(shù)值進行第一更新處理,得到第二計數(shù)值; 所述計數(shù)邏輯模塊還用于向所述第二子存儲塊發(fā)送第二激活命令和第一寫命令,所述第二激活命令用于激活所述第二子存儲塊,所述第一寫命令用于將所述第二計數(shù)值寫入所述第二子存儲塊; 所述第二子存儲塊還用于根據(jù)所述第一激活命令和所述第一寫命令,寫入所述第二計數(shù)值。
7.根據(jù)權(quán)利要求6所述的計數(shù)器,其特征在于, 所述計數(shù)邏輯模塊還用于記錄所述第二子存儲塊的編號; 所述計數(shù)邏輯模塊還用于接收到第二報文后,根據(jù)記錄的所述第二子存儲塊的編號,向所述第二子存儲塊發(fā)送第三激活命令和第二讀命令,所述第三激活命令用于激活所述第二子存儲塊,所述第二讀命令用于從所述第二子存儲塊內(nèi)讀取所述第二計數(shù)值; 所述第二子存儲塊還用于根據(jù)所述第三激活命令和所述第二讀命令,將所述第二計數(shù)值讀出給所述計數(shù)邏輯模塊;所述計數(shù)邏輯模塊還用于對所述第二計數(shù)值進行第二更新處理,得到第三計數(shù)值;所述計數(shù)邏輯模塊還用于向所述DDR SDRAM內(nèi)與所述第二子存儲塊不同的子存儲塊發(fā)送第四激活命令和第二寫命令,所述第四激活命令用于激活與所述第二子存儲塊不同的子存儲塊,所述第二寫命令用于將所述第三計數(shù)值寫入所述與所述第二子存儲塊不同的子存儲塊內(nèi); 所述與所述第二子存儲塊不同的子存儲塊還用于根據(jù)所述第四激活命令和所述第二寫命令,寫入所述第三計數(shù)值; 所述計數(shù)邏輯模塊還用于記錄所述與所述第二子存儲塊不同的子存儲塊的編號,以便下次需要計數(shù)時從所述與所述第二子存儲塊不同的子存儲塊內(nèi)讀取計數(shù)值。
8.根據(jù)權(quán)利要求7所述的計數(shù)器,其特征在于,` 所述與所述第二子存儲塊不同的子存儲塊為所述第一子存儲塊。
9.根據(jù)權(quán)利要求6所述的計數(shù)器,其特征在于, 所述計數(shù)邏輯模塊發(fā)送的所述第二激活命令與所述第一讀命令之間的時間間隔小于同一個子存儲塊兩次激活之間的最小延時tRC。
10.根據(jù)權(quán)利要求7所述的計數(shù)器,其特征在于, 所述計數(shù)邏輯模塊發(fā)送的所述第三激活命令與所述第一寫命令之間的時間間隔等于同一個子存儲塊兩次激活之間的最小延時tRC。
【文檔編號】H04L12/26GK103731313SQ201210381346
【公開日】2014年4月16日 申請日期:2012年10月10日 優(yōu)先權(quán)日:2012年10月10日
【發(fā)明者】尤科劍, 孔超, 孫蘇偉, 李力, 劉軼 申請人:華為技術(shù)有限公司