麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

一種緩存管理方法、裝置及現場可編程門陣列與流程

文檔序號:11199131閱讀:1019來源:國知局
一種緩存管理方法、裝置及現場可編程門陣列與流程
本發明涉及數據緩存
技術領域
,尤其涉及一種緩存管理方法、裝置及現場可編程門陣列。
背景技術
:隨著信息技術和網絡技術的發展,緩存技術逐漸成為一個熱門且不可或缺的領域,緩存技術指可以進行高速數據交換,因此緩存技術對系統的響應速度有很大的提高。然而,傳統的緩存裝置的存儲容量通常是有限的,使得其存儲的內容也較有限,因此對緩存進行管理是本領域一個熱點研究問題。參照圖1所示,現有技術中的緩存系統包括:數據包輸入電路11、緩存接口電路12、鏈表管理電路13、調度電路14、數據輸出電路15、數據緩存16以及鏈表存儲器17。圖1所示緩存系統的緩存管理過程為:將數據緩存16切片為多個固定大小的存儲單元(例如:512b);當收到數據包時,若接收到的數據包小于或等于一個存儲單元的大小(例如:256b),則該數據包占用一個獨立的存儲單元,而若接收到的數據包大于一個存儲單元的大小(例如:2kb),則將數據包切割為多個數據分片(例如:將2kb的數據包切割為大小為:512b的四個數據分片),然后通過緩存接口電路12將多個數據分片分別存儲在一個存儲單元中,并通過鏈表管理電路13將存儲多個數據分片的存儲單元組成鏈表發送至調度電路14和鏈表存儲器17,從而完成數據包的寫入;當需從數據緩存16中讀取數據包時,調度電路14根據鏈表存儲器17中的鏈表信息從對應的存儲單元中讀取數據,同時數據緩存14回收對應的存儲單元,通過數據輸出電路15將讀取的數據分片拼接為一個完整的數據包后輸出,從而完成數據包的讀取。雖然上述緩存管理系統可以使任意數量的隊列的性能都十分接近,但是上述緩存系統提供的帶寬極其有限。具體的,64bit帶寬ddr4工作在2400mbps的速率時,物理帶寬僅有153gbps,并且64bit位寬的ddr控制器64字節短包的帶寬利用率非常低,僅有20%左右,其能提供的實際雙向帶寬僅有153*0.2=30.72gbps,單向僅約為15gbps。技術實現要素:本發明的實施例提供一種緩存管理方法、裝置及現場可編程門陣列,用于提高緩存系統的帶寬。為達到上述目的,本發明的實施例采用如下技術方案:第一方面,一種緩存管理方法,用于對緩存系統進行管理,所述緩存系統中包括多個數據緩存通道,任一數據緩存通道包括一數據緩存和一數據緩存控制器,且各數據緩存通道具有唯一的數據緩存通道號;所述方法包括:在收到入隊報文時,根據預設分片大小和所述入隊報文的長度將所述入隊報文切割為至少一個數據分片;向各所述數據分片分配所述數據緩存通道號;根據向所述數據分片分配的數據緩存通道號將數據分片分發至對應的所述數據緩存通道的數據緩存控制器;在所述數據緩存控制器的控制下將所述數據分片寫入對應的數據緩存;接收所述數據緩存返回的緩存地址和緩存長度,并根據向數據分片分配的數據緩存通道號以及所述數據緩存返回的緩存地址和緩存長度生成各數據分片的緩存描述符;將各數據分片的緩存描述符寫入bd緩存。可選的,所述向各所述數據分片分配所述數據緩存通道號,包括:將多個所述數據緩存通道號輪轉向各所述數據分片分配。可選的,所述方法還包括:上電時分別向各隊列隨機分配一個數據緩存通道號作各隊列的當前狀態的數據緩存通道號;在將多個所述數據緩存通道號輪轉向各所述數據分片分配后,將所述入隊報文所屬的隊列的當前狀態的數據緩存通道號更新為輪轉結束時的數據緩存通道號之后的下一個數據緩存通道號;所述將多個所述數據緩存通道號輪轉向各所述數據分片分配,包括:由所述入隊報文所屬的隊列的當前狀態的數據緩存通道號開始將多個所述數據緩存通道號輪轉向各所述數據分片分配。可選的,任一所述數據緩存包括多個內存庫,任一所述內存庫中包括:一回收區和一未使用區域;其中,所述回收區用于存放回收的緩存空間的緩存地址,所述未使用區域用于存放未使用的緩存空間的緩存地址;所述在所述數據緩存控制器的控制下將所述數據分片寫入對應的數據緩存,包括:控制所述數據緩存中的多個內存庫輪轉向所述數據分片分配緩存地址;判斷各所述數據分片的數據緩存通道號對應的數據緩存的內存庫的回收區是否具有緩存地址;若是,則從回收區取出一個緩存地址向所述數據分片分配;若否,則從未使用區取出一個緩存地址向所述數據分片分配;在所述數據緩存控制器的控制下將數據分片寫入向其分配的緩存地址所指示的緩存空間。可選的,所述緩存系統包括多個bd緩存通道,任一所述bd緩存通道包括一bd緩存控制器和一bd緩存;所述將各數據分片的緩存描述符寫入bd緩存,包括:根據各數據分片在所述入隊報文中的順序對各數據分片的數據緩存通道號進行排序;各bd緩存通道的bd緩存控制器根據各數據分片的數據緩存通道號的順序分別將各數據分片的緩存描述符寫入對應的bd緩存。可選的,所述各bd緩存通道的bd緩存控制器根據各數據分片的數據緩存通道號的順序分別將各數據分片的緩存描述符寫入對應的bd緩存,包括:按照預設緩存大小將所述多個bd緩存分割為多個緩存塊;向各所述隊列分配所述緩存塊、首端緩存地址和尾端緩存地址,并記錄向各所述隊列分配的首端緩存地址和尾端緩存地址;其中,向不同隊列分配的緩存塊不同,任一隊列的首端緩存地址和尾端緩存地址所指示的緩存空間為向該隊列分配的緩存塊中的同一個緩存空間;接收到緩存描述符時,獲取第一隊列的首端緩存地址;所述第一隊列為接收到的緩存描述符所屬的數據分片所屬的入隊報文所屬的隊列;將接收到的緩存描述符寫入所述第一隊列的首端緩存地址所指示的緩存空間;判斷第一緩存塊剩余的緩存空間是否小于或等于一個緩存描述符的大小;所述第一緩存塊為向第一隊列分配的緩存塊;若否,則將第一隊列的首端緩存地址更新為所述第一緩存塊中首端緩存地址后的下一個緩存地址;若是,則向所述第一隊列分配第二緩存塊,將所述第二緩存塊的緩存塊地址寫入第一緩存塊,將所述第一隊列的首端緩存地址更新為第二緩存塊中的第一個緩存地址;根據各數據分片的數據緩存通道號的順序依次將各數據分片的緩存描述符寫入所述第一隊列的首端緩存地址所指示的緩存空間。可選的,所述方法還包括:在向所述第一隊列分配第二緩存塊時,將所述多個bd緩存中的緩存塊輪轉向所述第一隊列分配。可選的,所述方法還包括:接收出隊命令;所述出隊命令用于指示將出隊報文從所述數據緩存中調出,所述出隊命令包括所述出隊報文的隊列信息;根據所述出隊報文的隊列信息獲取第二隊列;所述第二隊列為所述出隊報文所屬的隊列;獲取所述第二隊列的尾端緩存地址;讀出所述第二隊列的尾端緩存地址所指示的緩存空間中的緩存描述符;判斷第三緩存塊中的緩存描述符是否已經全部取出;所述第三緩存塊為所述第二隊列的尾端緩存地址所指示的緩存空間所述的緩存塊;若否,則將所述第二隊列的尾端緩存地址更新為所述第三緩存塊中尾端緩存地址后的下一個緩存地址;若是,則獲取第三緩存塊中的緩存塊地址,并將所述第二隊列的尾端緩存地址更新為向所述第三緩存塊中的緩存塊地址所指示的緩存塊中的第一個緩存地址;根據所述第二隊列的入隊信息獲取所述出隊報文的包含的數據分片的數量;判斷從所述第二隊列的尾端緩存地址所指示的緩存空間中讀取的緩存描述符數量是否等于所述出隊報文包含的數據分片的數量;若是,將各從所述第二隊列的尾端緩存地址所指示的緩存空間中讀取的緩存描述符分發至對應數據緩存通道的數據緩存控制器;在所述數據緩存控制器的控制下根據從所述第二隊列的尾端緩存地址所指示的緩存空間中讀取的緩存描述符從對應的數據緩存中讀取數據分片;按照已讀出的各緩存描述符中的數據緩存通道號的順序依次將各數據分片輸出。可選的,所述方法還包括:記錄各數據緩存的累計寫入數據量和累計讀取數據量;在任一數據緩存為空閑狀態時,當該數據緩存的累計讀取數據量為零或者累計讀取數據量大于預設數據量且檢測到有數據分片需要寫入時,該數據緩存跳轉至寫入狀態并將累計讀取數據量清零;當該數據緩存的累計寫入數據量為零且需要讀取數據分片時,該數據緩存跳轉至讀取狀態并將累計寫入數據量清零;在任一數據緩存為寫入狀態時,判斷該數據緩存的累計寫入數據量是否大于預設數據量,當該數據緩存的累計寫入數據量大于預設數據量,則該數據緩存跳轉至空閑狀態;在任一數據緩存為讀取狀態時,判斷該數據緩存的累計讀取數據量是否大于預設數據量,當該數據緩存的累計讀取數據量大于預設數據量,則該數據緩存跳轉至空閑狀態。第二方面,提供一種緩存管理裝置,用于對緩存系統進行管理,所述緩存系統中包括多個數據緩存通道,任一數據緩存通道包括一數據緩存和一數據緩存控制器,各數據緩存通道具有唯一的數據緩存通道號;所述緩存管理裝置包括:入隊數據切片電路,用于在收到入隊報文時,根據預設分片大小和所述入隊報文的長度將所述入隊報文切割為至少一個數據分片;數據緩存通道號查詢電路,用于向各所述數據分片分配所述數據緩存通道號;入隊分發電路,用于根據向數據分片分配的數據緩存通道號將數據分片分發至對應的所述數據緩存通道的數據緩存控制器;數據緩存控制器,用于將所述數據分片寫入對應的數據緩存;鏈表管理電路,用于接收所述數據緩存返回的緩存地址和緩存長度,以及根據向數據分片分配的數據緩存通道號以及所述數據緩存返回的緩存地址和緩存長度生成各數據分片的緩存描述符;bd緩存控制器,用于將各數據分片的緩存描述符寫入bd緩存。可選的,所述緩存系統包括多個bd緩存通道,任一所述bd緩存通道包括一bd緩存控制器和一bd緩存;所述緩存管理裝置還包括:分片地址重排序電路;所述分片地址重排序電路用于根據各數據分片在所述入隊報文中的順序對各數據分片的數據緩存通道號進行排序;各bd緩存通道的bd緩存控制器用于根據各數據分片的數據緩存通道號的順序分別將各數據分片的緩存描述符寫入對應的bd緩存。可選的,所述bd緩存控制器具體用于按照預設緩存大小將所述多個bd緩存分割為多個緩存塊;向各所述隊列分配所述緩存塊,并向各隊列分配首端緩存地址;其中,向不同隊列分配的緩存塊不同,任一隊列的首端緩存地址所指示的緩存空間向該隊列分配的緩存塊;接收到緩存描述符時,獲取第一隊列的首端緩存地址;所述第一隊列為接收到的緩存描述符所屬的數據分片所屬的入隊報文所屬的隊列;將接收到的緩存描述符寫入所述第一隊列的首端緩存地址所指示的緩存空間,并將向第一隊列分配的首端緩存地址記錄為第一隊列的尾端緩存地址;判斷第一緩存塊剩余的緩存空間是否小于或等于一個緩存描述符的大小;所述第一緩存塊為向第一隊列分配的緩存塊;若否,則將第一隊列的首端緩存地址更新為所述第一緩存塊中首端緩存地址后的下一個緩存地址;若是,則向所述第一隊列分配第二緩存塊,將所述第二緩存塊的緩存塊地址寫入第一緩存塊,以及所述第一隊列的首端緩存地址更新為第二緩存塊中的第一個緩存地址;根據各數據分片的數據緩存通道號的順序依次將各數據分片的緩存描述符寫入所述第一隊列的首端緩存地址所指示的緩存空間。可選的,所述緩存系統還包括:調度單元,所述調度單元用于記錄各隊列的入隊信息,接收出隊命令,根據所述出隊報文的隊列信息獲取第二隊列,根據所述第二隊列的入隊信息獲取所述出隊報文的包含的數據分片的數量;所述緩存管理裝置還包括:出隊分發電路和出隊數據重組電路;所述鏈表管理電路還用于獲取所述第二隊列的尾端緩存地址并將所述第二隊列的尾端緩存地址分發至所述bd緩存控制器;其中,所述出隊命令用于指示將出隊報文從所述數據緩存中調出,所述出隊命令包括所述出隊報文的隊列信息;所述第二隊列為所述出隊報文所屬的隊列;所述bd緩存控制器還用于讀出所述第二隊列的尾端緩存地址所指示的緩存空間中緩存描述符;判斷第三緩存塊中的緩存描述符是否已經全部取出;若否,則將所述第二隊列的尾端緩存地址更新為所述第三緩存塊中尾端緩存地址后的下一個緩存地址;若是,則獲取第三緩存塊中的緩存塊地址,并將所述第二隊列的尾端緩存地址更新為向所述第三緩存塊中的緩存塊地址所指示的緩存塊中的第一個緩存地址;所述第三緩存塊為所述第二隊列的尾端緩存地址所指示的緩存空間所述的緩存塊;判斷從所述第二隊列的尾端緩存地址所指示的緩存空間中讀取的緩存描述符數量是否等于根據所述出隊報文的長度信息獲取所述出隊報文包含的數據分片的數量;所述出隊分發電路,用于判斷從所述第二隊列的尾端緩存地址所指示的緩存空間中讀取的緩存描述符數量是否等于根據所述出隊報文的長度信息獲取所述出隊報文包含的數據分片的數量以及在從所述第二隊列的尾端緩存地址所指示的緩存空間中讀取的緩存描述符數量等于根據所述出隊報文的長度信息獲取所述出隊報文包含的數據分片的數量時將各從所述第二隊列的尾端緩存地址所指示的緩存空間中讀取的緩存描述符分發至對應數據緩存通道的數據緩存控制器;所述數據緩存控制器還用于根據從所述第二隊列的尾端緩存地址所指示的緩存空間中讀取的緩存描述符從對應的數據緩存中讀取數據分片;所述出隊數據重組電路,用于按照已讀出的各緩存描述符中的數據緩存通道號的順序依次將各數據分片輸出。第三方面,提供一種現場可編程門陣列,包括:第二方面任一項所述的緩存管理裝置。本發明的實施例提供的緩存管理方法用于對緩存系統進行管理,其中,緩存系統中包括多個數據緩存通道,任一數據緩存通道包括一數據緩存和一數據緩存控制器,在接收到入隊報文且將入隊報文切割問數據分片后,首先根據向數據分片分配的數據緩存通道號將數據分片分發至對應的數據緩存通道的數據緩存控制器,然后再在數據緩存控制器的控制下將數據分片寫入對應的數據緩存;即各數據緩存通道中的數據緩存控制器獨立控制數據緩存通道中的數據緩存的數據寫入,由于本發明提供的緩存管理方法提供了多個獨立的數據緩存通道,所以相比于單個數據緩存通道,本發明實施例可以提供更高的帶寬,且相比將多個緩存通道中的緩存地址統一分配管理,本發明實施例可以最大化每個緩存通道的帶寬利用率,所以本發明實施例提供的緩存管理方法可以提高緩存系統的帶寬。附圖說明為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。圖1為現有技術中的緩存系統的示意性結構圖;圖2為本發明實施例提供的緩存管理方法的硬件框架圖之一;圖3為本發明實施例提供的緩存管理方法的步驟流程圖之一;圖4為本發明實施例提供的偽隨機碼生成電路的示意圖;圖5為本發明實施例提供的隨機碼生成模塊的電路圖;圖6為本發明實施例提供的數據緩存的示意性結構圖;圖7為本發明實施例提供的數據緩存的狀態機輪轉圖之一;圖8為本發明實施例提供的緩存管理方法的硬件框架圖之二;圖9為本發明實施例提供的緩存管理方法的硬件框架圖之三;圖10為本發明實施例提供的緩存管理方法的步驟流程圖之二;圖11為本發明實施例提供的bd鏈表的示意性結構圖;圖12為本發明實施例提供的緩存管理方法的步驟流程圖之三;圖13為本發明實施例提供的數據緩存的狀態機輪轉圖之二;圖14為本發明實施例提供的緩存管理方法的硬件框架圖之四。具體實施方式下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。以下首先對本發明實施例提供的緩存管理方法的應用場景的總體硬件框架作簡要說明。參照圖2所示,本發明實施例提供的緩存管理方法的應用場景的硬件包括:位于現場可編程門陣列(英文名稱:fieldprogrammablegatearray,簡稱:fpga)內部的數據切片電路201、數據緩存通道號查詢電路202、入隊分發電路203、分片地址重排序電路204、鏈表管理電路205、多個緩存描述符(英文名稱:bufferdescription,簡稱:bd)緩存控制器206(圖2中以包括2個bd緩存控制器為例進行說明)、出隊分發電路207、多個數據緩存控制器208(圖2中以包括4個數據緩存控制器為例進行說明)以及出隊數據重組電路209、位于fpga外部的與多個數據緩存控制器208一一對應的數據緩存210、與bd緩存控制器206一一對應的bd緩存211以及調度單元212。上述硬件框架中各個單元、模塊以及電路的連接關系為:數據切片電路201連接數據緩存通道號查詢電路202;數據緩存通道號查詢電路202連接入隊分發電路203;入隊分發電路203分別與連接多個數據緩存控制器208連接且與分片地址重排序電路204連接;分片地址重排序電路204電路連接鏈表管理電路205;鏈表管理電路205分別與多個bd緩存控制器206連接且連接調度單元212;出隊分發電路207分別與連接多個數據緩存控制器208連接且與調度單元212連接;出隊數據重組電路209分別連接多個數據緩存控制器208;多個數據緩存控制器208還分別與一個數據緩存210連接形成一個數據緩存通道;多個bd緩存控制器206還分別與一個bd緩存211連接形成一個bd緩存通道。上述硬件框架中各個單元、模塊以及電路的主要功能為:入隊數據切片電路201:將輸入的各個隊列的報文切割為固定大小的數據分片。數據緩存通道號查詢電路202:查詢各隊列的初始數據緩存通道號,并根據各隊列的初始數據緩存通道號為各隊列的數據分片分配數據緩存通道號。入隊分發電路203:根據各數據分片的數據緩存通道號將各數據分片分發至各數據緩存通道上,并接收數據緩存210為數據分片分配的緩存地址以及將數據緩存210為數據分片分配的緩存地址發送至分片地址重排序電路204。分片地址重排序電路204:根據向數據分片分配的數據緩存通道號對各數據分片的緩存地址進行重排序,從而保證數據分片的緩存地址的順序與數據分片在報文中的順序相同。鏈表管理電路205:管理各個隊列的首端緩存地址和尾端緩存地址;根據向數據分片分配的數據緩存通道號以及數據緩存210返回的緩存地址和緩存長度生成各數據分片的bd,根據各數據分片的bd組成bd鏈表;并將各個隊列的入隊信息提交給調度單元。bd緩存控制器206:對fpga外部存儲bd的bd緩存的讀寫操作進行管理。出隊分發電路207:將調度單元212輸入的各隊列的入隊信息分發給對應通道的數據緩存控制器208。數據緩存控制器208:對數據緩存的讀寫操作進行管理以及數據分片的緩存地址的分配與回收。數據緩存210:存儲各隊列的數據分片。bd緩存211:儲存各數據分片的bd。調度單元212:記錄各隊列的入隊信息,按照流量管理(英文名稱:trafficmanagement,簡稱:tm)的調度策略和配置,完成各個隊列的調度出隊,將調度出隊信息提交給出隊命令分發電路207。基于上述硬件框架,本發明的實施例提供了一種緩存管理方法,該緩存管理方法用于對緩存系統進行管理,如上圖2所示,該緩存系統中包括多個數據緩存通道,任一數據緩存通道包括一數據緩存和一數據緩存控制器,且各數據緩存通道具有唯一的數據緩存通道號。具體的,參照圖3所示,本發明實施例提供的緩存管理方法包括如下步驟:s31、在收到入隊報文時,根據預設分片大小和入隊報文的長度將入隊報文切割為至少一個數據分片。其中,預設分片大小可以根據實際應用場景進行設定,本發明實施例中對預設分片具體值不做限定。示例性的,預設分片大小可以為:128b、256b、512b等。示例性的,當預設分片大小為256b、入隊報文的長度為1518b時,由于1518b/256b=5余238b;因此將入隊報文切割為6個數據分片,且該6個數據分片的大小依次為:256b、256b、256b、256b、256b、238b。示例性的,當預設分片大小為256b、入隊報文的長度為125b時,將入隊報文切割為1個數據分片,且該1個數據分片的大小為125b。s32、向各數據分片分配數據緩存通道號。可選的,上述步驟s32中向各數據分片分配數據緩存通道號具體可以通過如下方式來實現:a、上電時分別向各隊列隨機分配一個數據緩存通道號作各隊列的當前狀態的數據緩存通道號。b、從各隊列的當前狀態的數據緩存通道號開始將多個所述數據緩存通道號輪轉向各所述數據分片分配c、在將多個所述數據緩存通道號輪轉向各所述數據分片分配后,將所述入隊報文所屬的隊列的當前狀態的數據緩存通道號更新為輪轉結束時的數據緩存通道號之后的下一個數據緩存通道號。上述方法中在系統上電時為每一個隊列隨機分配一個數據緩存通道號作為該隊列的當前狀態的數據緩存通道號,并由入隊報文所屬的隊列的當前狀態的數據緩存通道號開始將各數據緩存通道號輪轉向各數據分片分配,所以上述方法可以避免所有隊列都從同一個數據緩存通道開始存放數據分片,進而可以避免部分數據緩存通道過載,而部分數據緩存通道空閑的情況,因此上述方法可以提高數據緩存的效率。示例性的,以下以緩存系統中共包括8個數據緩存通道,且該8個數據緩存通道的數據換緩存通道號分別為0、1、2、3、4、5、6、7;隊列0、隊列1、隊列2、隊列3具有輸入入隊報文為例對上述實施例的原理進行說明。首先,若在上電時不向各隊列隨機分配當前狀態的數據緩存通道號,各隊列的當前狀態的數據緩存通道號相同,則會出現如下狀況:隊列0的當前狀態的數據緩存通道號被設置為0,隊列0的入隊報文切割為4個數據分片,將各數據緩存通道號輪轉向各數據分片分配,那么向該4個數據分片的通道號分別為0、1、2、3。隊列1的當前狀態的數據緩存通道號被設置為0,隊列1的入隊報文切割為1個數據分片,將各數據緩存通道號輪轉向各數據分片分配,那么向該1個數據分片的通道號分別為0。隊列2的當前狀態的數據緩存通道號被設置為0,隊列2的入隊報文切割為2個數據分片,將各數據緩存通道號輪轉向各數據分片分配,那么向該2個數據分片的通道號分別為0、1。隊列3的當前狀態的數據緩存通道號被設置為0,隊列3的入隊報文切割為10個數據分片,將各數據緩存通道號輪轉向各數據分片分配,那么向該10個數據分片的通道號分別為0、1、2、3、4、5、6、7、0、1。此時,如下表1所示,各數據緩存通道被使用的次數為:數據緩存通道號01234567被使用次數54221111表1在上實施例中,若在上電時為每一個隊列隨機分配一個數據緩存通道號作為該隊列的當前狀態的數據緩存通道號,則會出現如下狀況:隊列0的當前狀態的數據緩存通道號隨機化為3,隊列0的入隊報文切割為4個數據分片,將各數據緩存通道號輪轉向各數據分片分配,那么向該4個數據分片的通道號分別為3、4、5、6。隊列1的當前狀態的數據緩存通道號隨機化為0,隊列1的入隊報文切割為1個數據分片,將各數據緩存通道號輪轉向各數據分片分配,那么向該1個數據分片的通道號分別為0。隊列2的當前狀態的數據緩存通道號隨機化為7,隊列2的入隊報文切割為2個數據分片,將各數據緩存通道號輪轉向各數據分片分配,那么向該2個數據分片的通道號分別為7、0。隊列3的當前狀態的數據緩存通道號隨機化為4,隊列3的入隊報文切割為10個數據分片,將各數據緩存通道號輪轉向各數據分片分配,那么向該10個數據分片的通道號分別為4、5、6、7、0、1、2、3、4、5。此時,如下表2所示,各數據緩存通道被使用的次數為:數據緩存通道號01234567被使用次數31123322表2通過對比上述表1和表2可得知,上電時為每一個隊列隨機分配一個數據緩存通道號作為該隊列的當前狀態的數據緩存通道號,并由入隊報文所屬的隊列的當前狀態的數據緩存通道號開始將各數據緩存通道號輪轉向各數據分片分配,可以使各數據緩存通道的利用率均衡,進而可以避免部分數據緩存通道過載,而部分數據緩存通道空閑的情況。進一步的,本發明實施例可以通過偽隨機碼生成電路來為各隊列分配當前狀態的數據緩存通道號,且在向各隊列隨機分配當前狀態的數據緩存通道號后可以通過靜態隨機存取存儲器(英文名稱:staticrandomaccessmemory,簡稱:sram)來存儲各隊列的當前狀態的數據緩存通道號。示例性的,參照圖4所示,偽隨機碼生成電路包括:隨機碼生成模塊41和靜態隨機存取存儲器42。其中,隨機碼生成模塊41的寫入使能端portnum_wr_en連接靜態隨機存取存儲器42的寫入使能端wr_en;隨機碼生成模塊41的寫入數據輸出端portnum_wr_din連接靜態隨機存取存儲器42的寫入數據輸入端wr_din;隨機碼生成模塊41的寫入地址輸出端portnum_wr_addr與靜態隨機存取存儲器42的寫入地址輸入端wr_addr。此外,靜態隨機存取存儲器42還包括:讀取使能端rd_en、讀取數據輸出端rd_din以及讀取地址輸出端ed_addr。本發明實施例還提供了一種隨機碼生成模塊的電路圖。具體的,參照圖5所示,隨機碼生成模塊的具體電路包括:4個異或邏輯運算單元411、8個觸發器412(分別為a0、a1、a2、a0、a3、a4、a5、a6、a7)、1個計數器413、1個比較器414以及1個與邏輯運算單元415。其中,與邏輯運算單元415的輸出端為隨機碼生成模塊41的寫入數據輸出端portnum_wr_din,比較器414的輸出端為隨機碼生成模塊41的寫入地址輸出端portnum_wr_addr,計數器413的輸出端為隨機碼生成模塊41的寫入使能端portnum_wr_en。圖5所示隨機碼生成模塊41的電路的多項表達式為:f(x)=1+x2+x3+x4+x8示例性的,假設上述偽隨機碼生成電路應用于數據緩存通道號為8個、隊列書為64k的應用場景時,靜態隨機存取存儲器的設計選取深度m=64k,寬度n=3(23=8),因此對靜態隨機存取存儲器選取a0、a1、a23個觸發器輸出的抽頭系數進行存儲即可。進一步的,在上述步驟s32由入隊報文所屬的隊列的當前狀態的數據緩存通道號開始輪轉將多個數據緩存通道號輪轉向各數據分片分配之后,方法還包括:將入隊報文所屬的隊列的當前狀態的數據緩存通道號更新為輪轉結束時的數據緩存通道號之后的下一個數據緩存通道號。示例性的,緩存系統中共包括8個數據緩存通道,且該8個數據緩存通道的數據換緩存通道號分別為0、1、2、3、4、5、6、7,向隊列0的四個數據分片分配的數據緩存通道號分別為3、4、5、6,則將隊列0的當前狀態的數據緩存通道號更新為數據緩存通道號6后的下一個數據緩存通道號7;向隊列1的一個數據分片分配的數據緩存通道號為0,則將隊列1的當前狀態的數據緩存通道號更新為數據緩存通道號0后的下一個數據緩存通道號1;向隊列2的兩個數據分片分配的數據緩存通道號分別為7、0,則將隊列2的當前狀態的數據緩存通道號更新為數據緩存通道號0后的下一個數據緩存通道號1;向隊列3的十個數據分片分配的數據緩存通道號分別為4、5、6、7、0、1、2、3、4、5,則將隊列3的當前狀態的數據緩存通道號更新為數據緩存通道號5后的下一個數據緩存通道號6。s33、根據向數據分片分配的數據緩存通道號將數據分片分發至對應的數據緩存通道的數據緩存控制器。示例性的,隊列4的入隊報文切割為四個數據分片(數據分片0、數據分片1、數據分片2、數據分片3、),且向該四個數據分片分配的數據緩存通道號分別為:3、4、5、6,則將數據分片0分發至數據緩存通道3的數據緩存控制器208、將數據分片1分發至數據緩存通道4的數據緩存控制器208、將數據分片2分發至數據緩存通道5的數據緩存控制器208、將數據分片3分發至數據緩存通道6的數據緩存控制器208。s34、在數據緩存控制器的控制下將數據分片寫入對應的數據緩存。如上,若將數據分片0分發至數據緩存通道3的數據緩存控制器208、將數據分片1分發至數據緩存通道4的數據緩存控制器208、將數據分片2分發至數據緩存通道5的數據緩存控制器208、將數據分片3分發至數據緩存通道6的數據緩存控制器208,則在數據緩存通道3的數據緩存控制器208的控制下將數據分片0寫入數據緩存通道3的數據緩存210中,在數據緩存通道4的數據緩存控制器208的控制下將數據分片1寫入數據緩存通道4的數據緩存210中,在數據緩存通道5的數據緩存控制器208的控制下將數據分片2寫入數據緩存通道5的數據緩存210中,在數據緩存通道6的數據緩存控制器208的控制下將數據分片3寫入數據緩存通道6的數據緩存210中。示例性的,數據緩存可以為第四代雙倍速率同步動態隨機存儲器(英文名稱:doubledataratesynchronousdynamicrandomaccessmemory4,簡稱:ddrsdram4或者ddr4)。通常,ddr4的存儲空間按照固定大小劃分為無數個小的存儲空間。且ddr4在緩存較短的數據包時的效能很低,而且在其讀寫狀態切換越頻繁其效能越低;此外,ddr4在同一個內存庫(英文名稱:bank)內換行的時候效能會急劇下降,為了解決數據緩存效能低的問題,本發明進一步提供了如下幾種用于實現上述步驟s34的方法。參照圖6所示,任一數據緩存210包括多個內存庫(圖6中以一個數據緩存210中包括4個內存庫,且4個內存庫分別為:bank0、bank1、bank2、bank3為例進行說明),任一內存庫中包括:一回收區和一未使用區域;其中,回收區用于存放回收的緩存空間的緩存地址,未使用區域用于存放未使用的緩存空間的緩存地址;上述步驟s36中在數據緩存控制器的控制下將數據分片寫入對應的數據緩存,包括:控制數據緩存中的多個內存庫輪轉向數據分片分配緩存地址。本發明實施例中的輪轉是指輪流、循環。具體的,多個內存庫輪轉向數據分片分配緩存地址是指,由多個內存庫中的一個開始依次向數據分片分配緩存地址,當多個內存庫中的最后一個內存庫向數據分片分配緩存地址后,再次從多個內存庫中的第一個內存庫開始依次向數據分片分配緩存地址。判斷各數據分片的數據緩存通道號對應的數據緩存的內存庫的回收區是否具有緩存地址;若是,則從回收區取出一個緩存地址向數據分片分配;若否,則從未使用區取出一個緩存地址向數據分片分配;在數據緩存控制器的控制下將數據分片寫入向其分配的緩存地址所指示的緩存空間。由于本發明實施例中數據緩存中的每個bank的緩存地址獨立管理,且在向數據分片分配緩存地址時,優先從數據緩存的bank的回收區向數據分片分配緩存地址,在回收區沒有緩存地址時再從未使用區域中向數據分片分配緩存地址,所以本發明實施例可以最大程度避免從bank未使用區域讀取緩存地址,進而提高數據緩存的能效。例如:如上圖6所示,數據緩存通道的數據緩存中包括4個bank(分別為bank0、bank1、bank2、bank3),在本次向數據分片分配緩存地址之前訪問的bank為bank0、bank1、bank2,那么再次向數據分片分配緩存地址時,則向數據分片分配bank3中的緩存地址。可選的,上述方法還包括:記錄各數據緩存的累計寫入數據量和累計讀取數據量。在任一數據緩存為空閑狀態時,當該數據緩存的累計寫入數據量為零或者累計寫入數據量大于預設數據量且檢測到有數據分片需要寫入時,該數據緩存跳轉至寫入狀態并將累計寫入數據量清零;在任一數據緩存為寫入狀態時,判斷該數據緩存的累計寫入數據量是否大于預設數據量,當該數據緩存的累計寫入數據量大于預設數據量,則該數據緩存跳轉至空閑狀態。具體的,以下參照圖7所示狀態機輪轉圖對上述實施例中數據緩存的讀寫狀態的切換過程進行詳細說明。轉換過程1、在空閑(英文名稱:idle)狀態時,若之前沒有處理過讀請求(即累計讀取數據量為0),檢測到有數據分片需要寫入時,狀態機跳轉至寫入狀態;若之前有處理過讀請求,并且累計讀取數據量大于或等于預設數據量(示例性的,預設數據量可以為1kb)時,檢測到有數據分片需要寫入時,狀態機也跳轉至寫入狀態。轉換過程2、進入寫入狀態后,對累計讀取數據量清零,并且確認在向當前數據分片分配緩存地址之前送入數據緩存的讀寫命令所訪問的bank;若當前數據分片分配緩存地址之前送入數據緩存的讀寫命令所訪問的bank是bank3,則跳轉至bank0的寫入狀態(st_get_ba0),取bank0中的緩存地址分配給當前數據分片;若當前數據分片分配緩存地址之前送入數據緩存的讀寫命令所訪問的bank是bank0,則跳轉至bank1的寫入狀態(st_get_ba1),取bank1中的緩存地址分配給當前數據分片;若當前數據分片分配緩存地址之前送入數據緩存的讀寫命令所訪問的bank是bank1,則跳轉至bank2的寫入狀態(st_get_ba2),取bank2中的緩存地址分配給當前數據分片;若當前數據分片分配緩存地址之前送入數據緩存的讀寫命令所訪問的bank是bank2,則跳轉至bank3的寫入狀態(st_get_ba3),取bank3中的緩存地址分配給當前數據分片;向數據分片分配緩存地址后,根據向數據分片分配的緩存地址將數據分片寫入緩存地址對應的緩存空間中。轉換過程3、在寫入狀態向數據分片分配緩存地址后,根據向數據分片分配的緩存地址將數據分片寫入緩存地址對應的緩存空間中,并跳轉到寫入狀態。轉換過程4、在寫入狀態,使累計寫入數據量加上當前數據分片的長度,判斷累計寫入數據量是否大于或等于預設數據量,若累計寫入數據量大于或等于預設數據量,則跳轉到空閑狀態。s35、接收數據緩存返回的緩存地址和緩存長度,并根據向數據分片分配的數據緩存通道號以及數據緩存返回的緩存地址和緩存長度生成各數據分片的緩存描述符。示例性的,數據分片的緩存描述符可以如下表3所示:數據緩存通道號緩存地址緩存長度首片指示尾片指示30x123456780x1001040x234567800x1000050x345678000x1000060x000000000x1000070x5555555a0x1000000xaaaaaaaa0x0ee01表3s36、將各數據分片的緩存描述符寫入bd緩存以及存儲各隊列的入隊信息。具體的,上述步驟s36中將各數據分片的緩存描述符寫入bd緩存,具體可以通過如下步驟來實現:s361、根據各數據分片在入隊報文中的順序對各數據分片的數據緩存通道號進行排序。示例性的,參照圖8所示,本發明提供的緩存管理方法的硬件框架還包括一個用于存儲各數據分片的數據緩存通道號順序的存入先入先出(英文名稱:firstinputfirstoutput,簡稱:fifo)存儲器81以及多個用于存儲數據緩存返回的緩存地址的fifo存儲器82,其中,fifo存儲器82的數據量與數據緩存控制器208的數量相同,且fifo存儲器82分別與一個數據緩存控制器208連接。在上述圖8所示硬件框架下,步驟s32中向各數據分片分配數據緩存通道號時,根據各數據分片在入隊報文中的順序將向各數據分片分配的數據緩存通道號存入fifo存儲器81中。例如:向入隊報文的6個數據分片分配的通道號如下表4所示:數據分片號123456數據緩存通道號345670表4則,寫入fifo存儲器中的數據緩存通道號的順序即為3、4、5、6、7、0。由于多個數據緩存刷新頻率不同、數據分片長度不相等、讀寫操作交替不同步等原因,所以每個通道返回數據分片地址的時間點的順序并不一定與各數據分片的數據緩存通道號的順序相同。為了避免同一入隊報文的多個數據分片的bd順序混亂,如圖8所示,可以先采用fifo存儲器82記錄各數據緩存通道返回的緩存地址,然后根據fifo存儲器81中記錄的各數據分片的數據緩存通道號的順序按照將各數據緩存通道返回的換地址和緩存長度依次生成各數據分片的緩存描述符。s362、根據各數據分片的數據緩存通道號的順序依次將各數據分片的緩存描述符寫入bd緩存。具體的,可以根據fifo存儲器81中記錄的各數據分片的數據緩存通道號的順序,將入隊報文的數據分片的bd發送至bd緩存,最后根據接收的數據分片的bd的順序將各數據分片的緩存描述符寫入bd緩存。本發明的實施例提供的緩存管理方法用于對緩存系統進行管理,其中,緩存系統中包括多個數據緩存通道,任一數據緩存通道包括一數據緩存和一數據緩存控制器,在接收到入隊報文且將入隊報文切割問數據分片后,首先根據向數據分片分配的數據緩存通道號將數據分片分發至對應的數據緩存通道的數據緩存控制器,然后再在數據緩存控制器的控制下將數據分片寫入對應的數據緩存;即各數據緩存通道中的數據緩存控制器獨立控制數據緩存通道中的數據緩存的數據寫入,由于本發明提供的緩存管理方法提供了多個獨立的數據緩存通道,所以相比于單個數據緩存通道,本發明實施例可以提供更高的帶寬,且相比將多個緩存通道中的緩存地址統一分配管理,本發明實施例可以最大化每個緩存通道的帶寬利用率,所以本發明實施例提供的緩存管理方法可以提高緩存系統的帶寬。此外,還需要說明的是,上述實施例提供的緩存管理方法中的隊列數沒有限制條件,因此本發明實施例可以實現任意隊列數的緩存管理,即通過上述實施例提供的緩存管理方法,本發明實施例可以對緩存管理系統中的隊列數進行任意擴展。進一步的,通常的bd都是以鏈表單通道方式進行管理的,但是隨著性能要求提升,100g系統短包打流的雙向bd訪問會達到300mpps。而單通道緩存難以達到這個性能。雖然四倍數據倍率(英文名稱:quaddatarate,簡稱:qdr)可以提高bd訪問帶寬,但qdr的成本太高,且在多隊列的情況下需要大容量qdr,因此實際用于中難以承受。為了解決上述問題,本發明實施例進一步提供了一種多bd緩存通道的緩存系統,具體的,參照圖9所示,圖9為本發明實施例提供的緩存管理方法的硬件架構圖,本發明實施例提供的緩存管理方法的硬件架構圖包括:由緩存系統的數據切片電路201、數據緩存通道號查詢電路202、入隊分發電路203以及分片地址重排序電路204組成的入隊單元92、由鏈表管理電路205、多個bd緩存控制器206以及多個bd緩存組成的bd緩存單元91、鏈表管理電路205。其中,鏈表管理電路205包括:初始化單元2051和片內片內緩存2052。多個bd緩存控制器206與多個bd緩存一一對應形成多個bd緩存通道(圖9中以緩存系統包括兩個緩存通道為例進行說明)。當本發明實施例提供的緩存管理方法應于如圖9所示的緩存系統,包括多個bd緩存通道,任一所述bd緩存通道包括一緩存描述緩存控制器和一bd緩存時,上述步驟s363中根據各數據分片的數據緩存通道號的順序依次將各數據分片的bd寫入bd緩存,包括:各bd緩存通道的存描述緩存控制器根據各數據分片的數據緩存通道號的順序分別將各數據分片的緩存描述符寫入對應的bd緩存。本發明實施例提供的緩存系統可以包括多個bd緩存通道,且任一bd緩存通道中的bd緩存控制器獨立管理該bd緩存通道中的bd緩存進行讀寫操作,由于本發明實施例中增加了bd緩存通道數量,所以本發明實施例可以增加系統的bd緩存通道的帶寬,此外,由于各bd緩存通道種的bd緩存控制器獨立對各bd緩存通道中的bd緩存的讀寫進行管理,因此可以最大化每個bd緩存通道的利用率,因此本發明實施例可以提高bd緩存的能效。具體的,參照圖10所示,當緩存系統包括多個bd緩存通道時,上述步驟s363中根據各數據分片的數據緩存通道號的順序依次將各數據分片的bd寫入bd緩存可以通過如下步驟來實現:s101、按照預設緩存大小將多個bd緩存分割為多個緩存塊。示例性的,預設緩存大小可以為2kb。s102、向各隊列分配緩存塊、首端緩存地址和尾端緩存地址,并記錄向各隊列分配的首端緩存地址和尾端緩存地址。其中,向不同隊列分配的緩存塊不同,任一隊列的首端緩存地址和尾端緩存地址所指示的緩存空間為向該隊列分配的緩存塊中的同一個緩存空間。可選的,可以通過鏈表管理電路205中的片內緩存2052記錄向各隊列分配的首端緩存地址和尾端緩存地址。示例性的,假設bd緩存通道中的bd緩存的緩存空間為2gb,預設緩存大小為2kb,一個數據分片的bd的大小為8bt,則一個bd緩存中包括1000000個緩存塊,一個緩存塊中可以存放256個數據分片的bd。片內緩存2052中記錄各隊列的地址首端緩存地址和尾端緩存地址的緩存內容格式可以如下表5所示:緩存塊地址[19:0]偏移地址[7:0]表5此外,上述步驟s102中向各隊列分配緩存塊、首端緩存地址和尾端緩存地址即為對片內緩存2052中各隊列的緩存塊地址進行設置以及對各隊列的偏移地址置零。進一步的,上述步驟s102中向各隊列分配緩存塊,具體可以為:向各隊列隨機分配多個bd緩存中的緩存塊。即,將各隊列隨機分配到多個bd緩存通道上。示例性的,假設包括:5個隊列(隊列0、隊列1、隊列2、隊列3、隊列4),2個bd緩存通道(bd緩存通道0、bd緩存通道1),則各隊列隨機分配到多個bd緩存通道上可以如下表6所示:隊列bd緩存通道0010213140表6向各隊列隨機分配多個bd緩存中的緩存塊,可以將各隊列隨機分配到多個bd緩存通道上,從而避免部分bd緩存通道過載,而部分bd緩存通道空閑,進而均衡多個bd緩存通道的流量,提升bd緩存的性能。s103、接收到緩存描述符時,獲取第一隊列的首端緩存地址。其中,第一隊列為接收到的緩存描述符所屬的數據分片所屬的入隊報文所屬的隊列。示例性的,若入隊報文1的隊列為隊列1,數據分片1為由入隊報文1切割形成數據分片中的一個,bd1為數據分片1的緩存描述符,則在接收到bd1時,獲取隊列1的首端緩存地址。s104、將接收到的緩存描述符寫入第一隊列的首端緩存地址所指示的緩存空間。s105、判斷第一緩存塊剩余的緩存空間是否小于或等于一個緩存描述符的大小。其中,第一緩存塊為向第一隊列分配的緩存塊。具體的,若記錄各隊列的地址首端緩存地址和尾端緩存地址的緩存內容格式如表5所示,則步驟s105中判斷一緩存塊剩余的緩存空間是否小于或等于一個緩存描述符的大小,可以為:判斷偏移地址+1是否等于255。在步驟s105中,若第一緩存塊剩余的緩存空間大于一個緩存描述符的大小(偏移地址+1不等于255),則執行步驟s86,而若第一緩存塊剩余的緩存空間小于或等于一個緩存描述符的大小(偏移地址+1等于255),則執行步驟s87。s106、將第一隊列的首端緩存地址更新為第一緩存塊中首端緩存地址后的下一個緩存地址。s107、向第一隊列分配第二緩存塊,將第二緩存塊的緩存塊地址寫入第一緩存塊,將第一隊列的首端緩存地址更新為第二緩存塊中的第一個緩存地址。可選的,上述步驟s107中在向第一隊列分配第二緩存塊時,將多個bd緩存中的緩存塊輪轉向第一隊列分配。例如:緩存系統中包括2個bd緩存(bd緩存0、bd緩存1),且隊列0的第一緩存塊屬于bd緩存0,則向隊列0分配第二緩存塊時,從bd緩存1選取緩存塊作為第二緩存塊向隊列0分配。上述實施例中在向第一隊列分配第二緩存塊時,將多個bd緩存中的緩存塊輪轉向第一隊列分配,即分配緩存塊時多個bd緩存通道輪轉分配;在分配緩存塊時多個bd緩存通道輪轉分配可以使各數據分片的bd平均的緩存在多個bd緩存通道上,從而避免部分bd緩存通道過載,而部分bd緩存通道空閑,進而均衡多個bd緩存通道的流量,提升bd緩存的能效。s108、根據各數據分片的數據緩存通道號的順序依次將各數據分片的緩存描述符寫入第一隊列的首端緩存地址所指示的緩存空間。示例性的,bd緩存的bd鏈表可以如圖11所示,包括多個數據分片的bd組成的鏈表,且每一個bd塊的最后一個存儲空間存放一個緩存塊地址。此外,由于本發明實施例提供的緩存管理方法在管理數據分片的bd鏈表時,僅需要在鏈表管理電路205的片內緩存2052中存儲向各隊列分配的首端緩存地址和尾端緩存地址,所以可以節省存儲資源,降低制造成本。以下對基于上述數據入隊流程對本發明實施例提供的緩存管理方法的出隊流程進行詳細說明,具體的,參照圖12所示上述緩存管理方法還包括:s201、接收出隊命令。其中,出隊命令用于指示將出隊報文從數據緩存中調出,出隊命令包括出隊報文的隊列信息。s202、根據出隊報文的隊列信息獲取第二隊列。其中,第二隊列為出隊報文所屬的隊列。即,根據出隊報文的隊列信息獲取出隊報文的隊列。s203、獲取第二隊列的尾端緩存地址。s204、讀出第二隊列的尾端緩存地址所指示的緩存空間中的緩存描述符。s205、判斷第三緩存塊中的緩存描述符是否已經全部取出。其中,第三緩存塊為第二隊列的尾端緩存地址所指示的緩存空間的緩存塊。在步驟s205中,若第三緩存塊中的緩存描述符沒有全部取出,則執行步驟s206;若第三緩存塊中的緩存描述符已經全部取出,則執行步驟s207。s206、將第二隊列的尾端緩存地址更新為第三緩存塊中尾端緩存地址后的下一個緩存地址。s207、獲取第三緩存塊中的緩存塊地址,并將第二隊列的尾端緩存地址更新為向第三緩存塊中的緩存塊地址所指示的緩存塊中的第一個緩存地址。其中,上述步驟s207中獲取的第三緩存塊中的緩存塊地址即為上述實施例中步驟s207中向緩存換寫入的緩存塊地址。s208、根據第二隊列的入隊信息獲取出隊報文的包含的數據分片的數量。s209、判斷從第二隊列的尾端緩存地址所指示的緩存空間中讀取的緩存描述符數量是否等于出隊報文包含的數據分片的數量。例如:出隊報文的大小為2kb,且出隊報文的數據分片均為64字節時,需要從讀取的數據分片的數量為32個。在步驟s209中,若從第二隊列的尾端緩存地址所指示的緩存空間中讀取的緩存描述符數量等于出隊報文包含的數據分片的數量,則執行步驟s210;若從第二隊列的尾端緩存地址所指示的緩存空間中讀取的緩存描述符數量小于出隊報文包含的數據分片的數量,則返回步驟s203中重復執行上述步驟s203-s209直到從第二隊列的尾端緩存地址所指示的緩存空間中讀取的緩存描述符數量等于出隊報文包含的數據分片的數量。s210、將各從第二隊列的尾端緩存地址所指示的緩存空間中讀取的緩存描述符分發至對應數據緩存通道的數據緩存控制器。s211、在數據緩存控制器的控制下根據從第二隊列的尾端緩存地址所指示的緩存空間中讀取的緩存描述符從對應的數據緩存中讀取數據分片。在執行上述步驟s211時,本發明實施例提供的緩存管理方法還包括:記錄各數據緩存的累計寫入數據量和累計讀取數據量;在任一數據緩存為空閑狀態時,當該數據緩存的累計寫入數據量為零且需要讀取數據分片時,該數據緩存跳轉至讀取狀態并將累計寫入數據量清零;在任一數據緩存為讀取狀態時,判斷該數據緩存的累計讀取數據量是否大于預設數據量,當該數據緩存的累計讀取數據量大于預設數據量,則該數據緩存跳轉至空閑狀態。具體的,以下在圖7所示狀態機轉換的基礎上參照圖13所示狀態機輪轉圖對上述實施例中數據緩存的狀態轉換過程進行詳細說明。轉換過程5、在空閑狀態時,若之前沒有處理過寫請求(即累計寫入數據量為0),檢測到需要讀取數據分片時,狀態機跳轉至讀取狀態;若之前有處理過寫請求,并且累計寫入數據量大于或等于預設數據量時,檢測到需要讀取數據分片時,狀態機也跳轉至寫入狀態。轉換過程6、在讀取狀態下,對累計寫入數據量清0,根據出隊bd讀取數據分片。給累計讀取數據量加上當前讀取數據分片的長度,若當前累計讀取數據量小于預設數據量,則仍舊停留在讀取狀態。轉換過程7、在讀取狀態下,若當前累計讀取數據量大于或等于預設數據量,則返回空閑狀態下。s112、按照已讀出的各緩存描述符中的數據緩存通道號的順序依次將各數據分片輸出。上述步驟s101-109為本發明實施例提供的緩存管理方法中的數據分片的bd讀取流程,步驟s110-s112為根據步驟s101-109讀取的數據分片的bd從數據緩存中讀取數據分片并輸出的過程。同樣,由于多個數據緩存刷新頻率不同、數據分片長度不相等、讀寫操作交替不同步等原因,所以每個數據緩存通道返回數據分片的時間點的順序并不一定與出隊報文中各個數據分片的相同,因此需對各數據緩存通道返回數據分片進行排序后輸出。基于上述需求,本發明實施例進一步提供了一種緩存管理方法的硬件框架。具體的,參照圖14所示,本發明提供的緩存管理方法的硬件框架還包括一個用于存儲各數據分片的數據緩存通道號順序的fifo存儲器81以及多個用于存儲數據緩存返回的緩存地址的fifo存儲器82,其中,fifo存儲器82的數據量與數據緩存控制器208的數量相同,且fifo存儲器82分別與一個數據緩存控制器208連接。在步驟209中,若從第二隊列的尾端緩存地址所指示的緩存空間中讀取的緩存描述符數量等于出隊報文包含的數據分片的數量,則通過fifo存儲器81存儲各bd的數據緩存通道號順,在各數據緩存通道的數據緩存返回數據分片后首先存儲在對應的fifo存儲器82中,安然按照fifo存儲器81存儲的各bd的數據緩存通道號順序對數據緩存返回數據分片進行輸出。上述方法可以保證單一隊列在連續讀寫的時候,對數據緩存的操作都是連續的,其性能可以達到最高。即使所有隊列挨個發包時也可以存保證數據緩入隊分別寫入,出隊時連續讀取。使用單通道16bitddr顆粒時,連續讀出的ddr使用效能在80%以上。零散寫入也能接近40%.因此即使所有隊列輪流發包時,本發明采用的方法也能保證ddr的帶寬利用率達到50%以上。且存放bdblock是可以重復利用的,當block中的bd全部取出后,就可以回收該block以便下一次利用。本發明再一實施例提供與上述實施例提供的緩存管理方法相對應的緩存管理裝置,需要說明的是,上述緩存管理方法中的解釋說明均可援引至下述實施例中對本發明實施例提供的緩存管理裝置進行解釋說明。同樣本發明實施例提供的緩存管理裝置用于對緩存系統進行管理,緩存系統中包括多個數據緩存通道,任一數據緩存通道包括一數據緩存和一數據緩存控制器,且各數據緩存通道具有唯一的數據緩存通道號。具體的,該緩存管理裝置包括:入隊數據切片電路,用于在收到入隊報文時,根據預設分片大小和入隊報文的長度將入隊報文切割為至少一個數據分片;數據緩存通道號查詢電路,用于向各數據分片分配數據緩存通道號;入隊分發電路,用于根據向數據分片分配的數據緩存通道號將數據分片分發至對應的數據緩存通道的數據緩存控制器;數據緩存控制器,用于將所述數據分片寫入對應的數據緩存;鏈表管理電路,用于接收數據緩存返回的緩存地址和緩存長度,以及根據向數據分片分配的數據緩存通道號以及數據緩存返回的緩存地址和緩存長度生成各數據分片的緩存描述符;bd緩存控制器,用于將各數據分片的緩存描述符寫入bd緩存。可選的,所述緩存系統包括多個bd緩存通道,任一所述bd緩存通道包括一bd緩存控制器和一bd緩存;所述緩存管理裝置還包括:分片地址重排序電路;所述分片地址重排序電路用于根據各數據分片在所述入隊報文中的順序對各數據分片的數據緩存通道號進行排序;各bd緩存通道的bd緩存控制器用于根據各數據分片的數據緩存通道號的順序分別將各數據分片的緩存描述符寫入對應的bd緩存。可選的,bd緩存控制器具體用于按照預設緩存大小將多個bd緩存分割為多個緩存塊;向各隊列分配緩存塊,并向各隊列分配首端緩存地址;其中,向不同隊列分配的緩存塊不同,任一隊列的首端緩存地址所指示的緩存空間向該隊列分配的緩存塊;接收到緩存描述符時,獲取第一隊列的首端緩存地址;第一隊列為接收到的緩存描述符所屬的數據分片所屬的入隊報文所屬的隊列;將接收到的緩存描述符寫入第一隊列的首端緩存地址所指示的緩存空間,并將向第一隊列分配的首端緩存地址記錄為第一隊列的尾端緩存地址;判斷第一緩存塊剩余的緩存空間是否小于或等于一個緩存描述符的大小;第一緩存塊為向第一隊列分配的緩存塊;若否,則將第一隊列的首端緩存地址更新為第一緩存塊中首端緩存地址后的下一個緩存地址;若是,則向第一隊列分配第二緩存塊,將第二緩存塊的緩存塊地址寫入第一緩存塊,將第一隊列的首端緩存地址更新為第二緩存塊中的第一個緩存地址;根據各數據分片的數據緩存通道號的順序依次將各數據分片的緩存描述符寫入第一隊列的首端緩存地址所指示的緩存空間。可選的,緩存系統還包括:調度單元,調度單元用于記錄各隊列的入隊信息,接收出隊命令,根據出隊報文的隊列信息獲取第二隊列,根據第二隊列的入隊信息獲取出隊報文的包含的數據分片的數量;緩存管理裝置還包括:出隊分發電路和出隊數據重組電路;鏈表管理電路還用于獲取第二隊列的尾端緩存地址并將第二隊列的尾端緩存地址分發至bd緩存控制器;其中,出隊命令用于指示將出隊報文從數據緩存中調出,出隊命令包括出隊報文的隊列信息;第二隊列為出隊報文所屬的隊列;bd緩存控制器還用于讀出第二隊列的尾端緩存地址所指示的緩存空間中緩存描述符;判斷第三緩存塊中的緩存描述符是否已經全部取出;若否,則將第二隊列的尾端緩存地址更新為第三緩存塊中尾端緩存地址后的下一個緩存地址;若是,則獲取第三緩存塊中的緩存塊地址,并將第二隊列的尾端緩存地址更新為向第三緩存塊中的緩存塊地址所指示的緩存塊中的第一個緩存地址;第三緩存塊為第二隊列的尾端緩存地址所指示的緩存空間的緩存塊;判斷從第二隊列的尾端緩存地址所指示的緩存空間中讀取的緩存描述符數量是否等于根據出隊報文的長度信息獲取出隊報文包含的數據分片的數量;出隊分發電路,用于判斷從第二隊列的尾端緩存地址所指示的緩存空間中讀取的緩存描述符數量是否等于根據出隊報文的長度信息獲取出隊報文包含的數據分片的數量以及在從第二隊列的尾端緩存地址所指示的緩存空間中讀取的緩存描述符數量等于根據出隊報文的長度信息獲取出隊報文包含的數據分片的數量時將各從第二隊列的尾端緩存地址所指示的緩存空間中讀取的緩存描述符分發至對應數據緩存通道的數據緩存控制器;數據緩存控制器還用于根據從第二隊列的尾端緩存地址所指示的緩存空間中讀取的緩存描述符從對應的數據緩存中讀取數據分片;出隊數據重組電路,用于按照已讀出的各緩存描述符中的數據緩存通道號的順序依次將各數據分片輸出。本發明在意實施例提供一種現場可編程門陣列,包括:上述任一實施例提供的緩存管理裝置。現場可編程門陣列是一種集成度很高的新型高性能可編程芯片。fpga內部電路功能是可編程的,可以通過硬件描述語言(英文名稱:hardwaredescriptionlanguage,簡稱:hdl)和專用設計工具,在fpga內部靈活地實現極其復雜的電路功能,適用于高速、高密度的高端數字邏輯電路設計領域。當將上述實施例中的緩存管理裝置實現在fpga內部實現時,占用邏輯資源少,且在不使用中央處理器等第三方控制器件的情況下,以最低的成本實現了fpga的主動升級,并且提供了單板雙功能的效果。基于上述實施例提供的緩存管理方法、裝置以及fpga,本發明實施例可以利用fpga豐富的輸出/輸出(英文名稱:input/output,簡稱:i/o)資源和內部緩存資源,使用多各通道的數據緩存和多個通道的bd緩存,實現任意隊列數的高性能緩存管理。以上所述,僅為本發明的具體實施方式,但本發明的保護范圍并不局限于此,任何熟悉本
技術領域
的技術人員在本發明揭露的技術范圍內,可輕易想到的變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明的保護范圍應以權利要求的保護范圍為準。當前第1頁12
當前第1頁1 2 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 阳谷县| 门源| 襄汾县| 德兴市| 吉林市| 鹤岗市| 龙井市| 连南| 雷州市| 兴和县| 防城港市| 德惠市| 庆安县| 思南县| 睢宁县| 弋阳县| 周口市| 株洲县| 浦江县| 突泉县| 鄢陵县| 合山市| 白河县| 改则县| 三门峡市| 虹口区| 军事| 荥阳市| 营山县| 哈密市| 湟源县| 石家庄市| 河源市| 定边县| 库车县| 靖远县| 包头市| 五大连池市| 格尔木市| 天水市| 邵东县|