TWI792728B - 封包處理加速裝置 - Google Patents

封包處理加速裝置 Download PDF

Info

Publication number
TWI792728B
TWI792728B TW110144453A TW110144453A TWI792728B TW I792728 B TWI792728 B TW I792728B TW 110144453 A TW110144453 A TW 110144453A TW 110144453 A TW110144453 A TW 110144453A TW I792728 B TWI792728 B TW I792728B
Authority
TW
Taiwan
Prior art keywords
ring
packet
buffer
cpu
data
Prior art date
Application number
TW110144453A
Other languages
English (en)
Other versions
TW202322598A (zh
Inventor
呂國正
Original Assignee
瑞昱半導體股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 瑞昱半導體股份有限公司 filed Critical 瑞昱半導體股份有限公司
Priority to TW110144453A priority Critical patent/TWI792728B/zh
Priority to US17/972,603 priority patent/US20230169006A1/en
Application granted granted Critical
Publication of TWI792728B publication Critical patent/TWI792728B/zh
Publication of TW202322598A publication Critical patent/TW202322598A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/742Route cache; Operation thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/17Embedded application
    • G06F2212/174Telecommunications system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/305Providing cache or TLB in specific location of a processing system being part of a memory device, e.g. cache DRAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache

Abstract

一種封包處理加速裝置包含一中央處理器(CPU)、一緊密耦合記憶體(TCM)、一緩衝區描述符(BD)預取電路以及一BD寫回電路。該BD預取電路讀取一記憶體(DRAM)之一接收BD環的接收BD,再將它們寫入該TCM的一接收封包資訊環;該BD預取電路另讀取該DRAM之一封包緩衝區的接收表頭資料,再將它們寫入該接收封包資訊環。該CPU存取該TCM,以讀取及處理該接收BD與該接收表頭資料,並產生傳送BD與傳送表頭資料,然後將它們寫入該TCM的一傳送封包資訊環。該BD寫回電路讀取該傳送封包資訊環的該傳送BD,再將它們寫入該DRAM的一傳送BD環;該BD寫回電路另讀取該傳送封包資訊環的該傳送表頭資料,再將它們寫入該封包緩衝區。該CPU存取該TCM而非該DRAM,故能減少延遲。

Description

封包處理加速裝置
本發明是關於封包處理裝置,尤其是關於封包處理加速裝置。
圖1顯示一通用型的封包處理裝置(例如:家用閘道器(Home Gateway)、WiFi存取點、5G基站(5G base station))。圖1的封包處理裝置100包含一中央處理器(CPU)110、一快取記憶體(Cache)120、一多工器/解多工器130、一動態隨機存取記憶體(DRAM)140、一第一網路介面卡(NIC1)150與一第二網路介面卡(NIC2)160。第一網路介面卡150會透過它的接收直接記憶體存取(receiver direct memory access;RX DMA)控制器(未顯示於圖),將接收封包儲存於DRAM 140。CPU 110會存取DRAM 140,以讀取並處理該些接收封包的至少一部分資料(例如:緩衝區描述符(buffer descriptor;BD)與封包表頭資料(packet header data)),並將處理好的資料寫回DRAM 140。第二網路介面卡160會透過它的傳送直接記憶體存取(transmitter direct memory access;TX DMA)控制器(未顯示於圖)存取DRAM 140,以讀取處理好的封包作為傳送封包,並將其輸出。
承上所述,CPU 110須存取DRAM 140以取得該些接收封包的至少一部分資料,也須存取第一網路介面卡150之RX DMA控制器的讀寫索引以 得知該DRAM 140中是否有封包資料待讀取。為了增加處理效率,CPU 110會以快取存取(cached access)與非快取存取(uncached access)的方式來存取封包資料。非快取存取方式的效率不佳;而快取存取方式須額外處理快取一致性(cache coherency)與快取汙染(cache pollution)問題。另外,CPU 110在存取第一網路介面卡150之RX DMA控制器或TX DMA控制器的讀寫索引時,會有長延遲(long latency)問題。
為了解決圖1之封包處理裝置100所遇到的效能瓶頸,一種解決方案是以一靜態隨機存取記憶體(SRAM)取代圖1的DRAM 140。然而,此解決方案的成本高,且在某些情形(例如:網路發生壅塞的情形)下,不足的SRAM空間會導致封包丟棄率增加,進而影響使用者體驗。此外,該解決方案在存取第一網路介面卡150之RX DMA控制器或TX DMA控制器的讀寫索引時,仍會有長延遲問題。
另有一種解決方案是於圖1的封包處理裝置100中,加入一輸入輸出一致性單元(IO Coherency Unit),如圖2所示。輸入輸出一致性單元210能監看(snoop)第一網路介面卡150對DRAM 140的存取,以自動地將一部分資料(例如:緩衝區描述符與封包表頭資料)寫入快取記憶體120,使得CPU 110在採用快取存取時能有最低的延遲。此外,當第二網路介面卡160想要讀取處理好的資料(例如:緩衝區描述符或傳送封包)時,輸入輸出一致性單元210能在偵測到此意向後,自動地將位於快取記憶體120裡的資料寫回DRAM 140,以讓第二網路介面卡160取得最新的資料。上述解決方案有不錯的效能,但輸入輸出一致性單元210的複雜度高且成本高,且需要網路介面卡與它協同 運作。此外,該解決方案仍有前述的快取汙染問題,也無法避免前述的長延遲問題。
本揭露的目的之一在於提供一種封包處理加速裝置,以避免先前技術的問題。
本揭露之封包處理加速裝置的一實施例包含一中央處理器(CPU)、一緊密耦合記憶體(tightly coupled memory;TCM)、一緩衝區描述符(buffer descriptor;BD)預取電路以及一BD寫回電路。
該TCM耦接該CPU,且為一第一類型記憶體(例如:靜態隨機存取記憶體(SRAM))。該BD預取電路耦接該TCM,用來依據一BD抽取圖,讀取儲存於一接收BD環的複數筆接收BD資料,再將該複數筆接收BD資料寫入一接收封包資訊環,其中該接收BD環包含於一系統記憶體(例如:動態隨機存取記憶體(DRAM)),該接收封包資訊環包含於該TCM。該BD預取電路另用來依據一緩衝區抽取圖,讀取儲存於一封包緩衝區的複數筆接收表頭資料,再將該複數筆接收表頭資料寫入該接收封包資訊環,其中該封包緩衝區包含於該系統記憶體。該CPU用來存取該接收封包資訊環,以讀取及處理該複數筆接收BD資料與該複數筆接收表頭資料,並產生複數筆傳送BD資料與複數筆傳送表頭資料。該CPU另用來將該複數筆傳送BD資料與該複數筆傳送表頭資料寫入一傳送封包資訊環,其中該傳送封包資訊環包含於該TCM。該BD寫回電路耦接該TCM,用來讀取儲存於該傳送封包資訊環的該複數筆傳送BD資料,再將該複數筆傳送BD資料寫入一傳送BD環,其中該傳送BD環包含於該系統記 憶體。該BD寫回電路另用來讀取儲存於該傳送封包資訊環的該複數筆傳送表頭資料,再將該複數筆傳送表頭資料寫入該封包緩衝區。
本揭露之封包處理加速裝置的另一實施例包含一中央處理器(CPU)與一緊密耦合記憶體。該緊密耦合記憶體耦接該CPU。該CPU用來執行一BD預取作業,該BD預取作業包含:該CPU依據一緩衝區描述符(buffer descriptor;BD)抽取圖,讀取儲存於一接收BD環的複數筆接收BD資料,再將該複數筆接收BD資料寫入一接收封包資訊環;該CPU另用來依據一緩衝區抽取圖,讀取儲存於一封包緩衝區的複數筆接收表頭資料,再將該複數筆接收表頭資料寫入該接收封包資訊環,其中該接收BD環與該封包緩衝區均包含於一系統記憶體,該接收封包資訊環包含於該緊密耦合記憶體。該CPU用來執行一BD處理作業,該BD處理作業包含:該CPU存取該接收封包資訊環,以讀取及處理該複數筆接收BD資料與該複數筆接收表頭資料,並產生複數筆傳送BD資料與複數筆傳送表頭資料;該CPU進一步用來將該複數筆傳送BD資料與該複數筆傳送表頭資料寫入一傳送封包資訊環,其中該傳送封包資訊環包含於該緊密耦合記憶體。該CPU用來執行一BD寫回作業,該BD寫回作業包含:該CPU讀取儲存於該傳送封包資訊環的該複數筆傳送BD資料,再將該複數筆傳送BD資料寫入一傳送BD環;該CPU另用來讀取儲存於該傳送封包資訊環的該複數筆傳送表頭資料,再將該複數筆傳送表頭資料寫入該封包緩衝區,其中該傳送BD環包含於該系統記憶體。
有關本發明的特徵、實作與功效,茲配合圖式作較佳實施例詳細說明如下。
100:封包處理裝置
110:CPU(中央處理器)
120:快取記憶體
130:多工器/解多工器
140:DRAM(動態隨機存取記憶體)
150:NIC1(第一網路介面卡)
160:NIC2(第二網路介面卡)
210:輸入輸出一致性單元
30:封包轉發裝置
32:NIC(網路介面控制電路)
34:NIC(網路介面控制電路)
36:系統記憶體
300:封包處理加速裝置
310:CPU(中央處理器)
320:TCM(緊密耦合記憶體)
330:BDP電路(緩衝區描述符預取電路)
340:BDW電路(緩衝區描述符寫回電路)
302:接收BD環(接收緩衝區描述符環)
304:封包緩衝區
306:傳送BD環(傳送緩衝區描述符環)
322:接收封包資訊環
324:傳送封包資訊環
410:RX DMA寫入指針(接收直接記憶體存取寫入指針)
420:BDP讀取指針
430:BDP寫入指針
440:CPU讀取指針
BD DW0、BD DW1、BD DW2、BD DW3:接收BD
PKT_BUF_DW0、PKT_BUF_DW1、PKT_BUF_DW2、PKT_BUF_DW3、PKT_BUF_DW4、PKT_BUF_DW5、…、PKT_BUF_DW15:接收表頭資料
510:CPU寫入指針
520:BDW讀取指針
530:BDW寫入指針
540:TX DMA讀取指針(傳送直接記憶體存取讀取指針)
BD DW0、BD DW1、…、BD DW7:傳送BD
PKT_BUF_DW0、PKT_BUF_DW1、…、PKT_BUF_DW15:傳送表頭資料
600:封包處理加速裝置
610:FBM(空閒緩衝區管理器)
BUF_Add_1、BUF_Add_2、BUF_Add_3、…、BUF_Add_K:緩衝區位址
800:封包處理加速裝置
302-1:接收BD環(接收緩衝區描述符環)
306-1:傳送BD環(傳送緩衝區描述符環)
〔圖1〕顯示一已知的封包處理裝置;〔圖2〕顯示另一已知的封包處理裝置;〔圖3〕顯示本揭露之封包處理加速裝置的一實施例;〔圖4〕顯示圖3的BDP電路存取接收BD環、封包緩衝區與接收封包資訊環的一實施例;〔圖5〕顯示圖3的BDW電路存取傳送封包資訊環、傳送BD環與封包緩衝區的一實施例;〔圖6〕顯示本揭露之封包處理加速裝置的另一實施例;〔圖7〕顯示圖6之空閒緩衝區管理器如何管理緩衝區位址的一實施例;以及〔圖8〕顯示本揭露之封包處理加速裝置的一多通道實施例。
本說明書揭露一種封包處理加速裝置。本揭露之封包處理加速裝置不須使用快取記憶體,能夠避免快取一致性(cache coherency)與快取汙染(cache pollution)問題。本揭露之封包處理加速裝置的中央處理器無須存取網路介面卡之直接記憶體存取(DMA)控制器的讀寫索引,能夠避免長延遲(long latency)問題。如本說明書所用,「A及/或B」以及「A及B中之至少一者」係指列出的關聯項目(A、B)中的一個或多個的任意組合(例如為A、B或A與B之組合)。
圖3顯示本揭露之封包處理加速裝置的一實施例。圖3的封包處理加速裝置300包含一中央處理器(central processing unit;CPU)310、一緊密耦合記憶體(tightly coupled memory;TCM)320、一緩衝區描述符(buffer descriptor;BD)預取(prefetch)電路330(簡稱BDP電路330)以及一BD寫回電路340(簡稱BDW電路340),該些電路分述於後。
圖3也顯示封包處理加速裝置300的一範例性的應用;在此應用中,封包處理加速裝置300包含於一封包轉發裝置30,封包轉發裝置30另包含一第一網路介面控制電路32(簡稱NIC 32)(例如:乙太網路介面控制電路)、一第二網路介面控制電路34(簡稱NIC 34)(例如:無線網路介面控制電路)以及一系統記憶體36(例如:動態隨機存取記憶體(DRAM))。
請參閱圖3。TCM 320分別耦接CPU 310、BDP電路330與BDW電路340。於一實作範例中,TCM 320為一靜態隨機存取記憶體(SRAM)。於一實作範例中,TCM 320直接地耦接CPU 310,以讓CPU 310能夠快速地存取TCM 320。於一實作範例中,TCM 320不同於快取記憶體(cache),故不包含快取控制器(cache controller)。
請參閱圖3。BDP電路330用來依據一BD抽取圖(BD extraction map),讀取儲存於一接收BD環302(reception-end(RX)BD ring)的複數筆接收BD資料,再將該複數筆接收BD資料寫入一接收封包資訊環322(RX packet information ring)。接收BD環302包含於系統記憶體36,用來服務NIC 32的一接收直接記憶體存取(RX DMA)控制器(未顯示於圖)。而接收封包資訊環322包含於TCM 320。該BD抽取圖是視實施及/或使用需求而定的一種BD抽取根據;決定該BD抽取圖的方式不在本揭露的討論範圍內。於一實作範例中,該 複數筆接收BD資料載有緩衝區資訊(例如:緩衝區位址與緩衝區長度),BDP電路330可依據該複數筆接收BD資料得到至少一接收封包的緩衝區位址,再依據該緩衝區位址從系統記憶體36讀取該至少一接收封包的資料。於一實作範例中,接收BD環302為具有一固定/可調長度的儲存單元陣列(array),接收封包資訊環322也為具有一固定/可調長度的儲存單元陣列。
請參閱圖3。BDP電路330另用來依據一緩衝區抽取圖(buffer extraction map),讀取儲存於一封包緩衝區304(packet buffer)的複數筆接收表頭資料(RX header data),再將該複數筆接收表頭資料寫入接收封包資訊環322。該緩衝區抽取圖是視實施及/或使用需求而定的一種緩衝區資料抽取根據;決定該緩衝區抽取圖的方式不在本揭露的討論範圍內。
請參閱圖3。CPU 310用來存取接收封包資訊環322,以讀取及處理該複數筆接收BD資料與該複數筆接收表頭資料,並產生複數筆傳送BD資料與複數筆傳送表頭資料。CPU 310進一步用來將該複數筆傳送BD資料與該複數筆傳送表頭資料寫入一傳送封包資訊環324(TX packet information ring)。傳送封包資訊環324包含於TCM 320。CPU 310處理該複數筆接收BD資料與該複數筆接收表頭資料的方式是視實施/應用需求而定,可藉由已知/自行開發的技術來實現,其細節不在本揭露的討論範圍內。值得注意的是,CPU 310存取TCM 320,而無需存取接收BD環302、封包緩衝區304與後述的傳送BD環306,故能減少存取延遲。另值得注意的是,CPU 310可依運作需求存取系統記憶體36。
請參閱圖3。BDW電路340用來讀取儲存於傳送封包資訊環324的該複數筆傳送BD資料,再將該複數筆傳送BD資料寫入一傳送BD環306(TX BD ring)。傳送BD環306包含於系統記憶體36,用來服務NIC 34的一傳送直接記憶體存取(TX DMA)控制器(未顯示於圖)。BDW電路340另用來讀取儲存於傳送封包資訊環324的該複數筆傳送表頭資料,再將該複數筆傳送表頭資料寫入封包緩衝區304。於一實作範例中,該複數筆傳送BD資料載有緩衝區資訊(例如:緩衝區位址與緩衝區長度),BDW電路340可依據該複數筆傳送BD資料得到至少一傳送封包的緩衝區位址,再依據該緩衝區位址以該複數筆傳送表頭資料更新該至少一傳送封包的資料。
圖4顯示圖3的BDP電路330存取接收BD環302、封包緩衝區304與接收封包資訊環322的一實施例。如圖4所示,BDP電路330依據接收BD環302的一RX DMA寫入指針410與一BDP讀取指針420之間是否有所不同,以得知是否有BD資料待讀取,進而依據前述BD抽取圖從接收BD環302的BD資料(亦即:圖4的BD DW0、BD DW1、BD DW2、BD DW3)中選擇該複數筆接收BD資料(亦即:圖4的BD DW0、BD DW1、BD DW3)並加以讀取。BDP電路330依據該複數筆接收BD資料得知包含該複數筆接收表頭資料之至少一接收封包的緩衝區位址,並依據該緩衝區位址與前述緩衝區抽取圖,從封包緩衝區304的表頭資料(亦即:PKT_BUF_DW0、PKT_BUF_DW1、PKT_BUF_DW2、PKT_BUF_DW3、PKT_BUF_DW4、PKT_BUF_DW5、…、PKT_BUF_DW15)中選擇該複數筆接收表頭資料(亦即:PKT_BUF_DW0、PKT_BUF_DW1、PKT_BUF_DW2、PKT_BUF_DW5)並加以讀取。BDP電路330另依據一BDP寫入指針430,將該複數筆接收BD資料以及該複數筆接收表頭資料寫入接收封包資訊環322。RX DMA寫入指針410受控於NIC 32的RX DMA控制器。BDP讀取指針420與BDP寫入指針430受控於BDP電路330。值得注意的 是,圖4中,接收BD環302/封包緩衝區304/接收封包資訊環322的每一單位代表一儲存單元,其大小可依實施需求而定;每個儲存單元用來儲存一項目(例如:BD項目或封包資訊項目),或為空的儲存單元。
請參閱圖3~4。CPU 310依據接收封包資訊環322的BDP寫入指針430與一CPU讀取指針440之間是否有所不同,以得知是否有資料待讀取,進而決定是否從接收封包資訊環322讀取該複數筆接收BD資料與該複數筆接收表頭資料。圖5顯示圖3的BDW電路340存取傳送封包資訊環324、傳送BD環306與封包緩衝區304的一實施例,其中CPU 310依據一CPU寫入指針510將該複數筆傳送BD資料與該複數筆傳送表頭資料寫入傳送封包資訊環324,CPU讀取指針440與CPU寫入指針510受控於CPU 310。
請參閱圖3與圖5。BDW電路340依據傳送封包資訊環324的CPU寫入指針510與一BDW讀取指針520之間是否有所不同,以得知是否有資料待讀取,進而決定是否從傳送封包資訊環324讀取該複數筆傳送BD資料(亦即:圖5的BD DW0、BD DW1、…、BD DW7)與該複數筆傳送表頭資料(亦即:圖5的PKT_BUF_DW0、PKT_BUF_DW1、…、PKT_BUF_DW15)。BDW電路340另依據一BDW寫入指針530,將該複數筆傳送BD資料寫入傳送BD環306。BDW電路340另依據該複數筆傳送BD資料得知包含該複數筆傳送表頭資料之至少一傳送封包的緩衝區位址,並依據該緩衝區位址將該複數筆傳送表頭資料寫入封包緩衝區304,以更新該至少一傳送封包。NIC 34的TX DMA控制器會依據一TX DMA讀取指針540讀取該至少一封包,然此不在本揭露的討論範圍內。值得注意的是,圖5中,傳送封包資訊環324/傳送BD環306/封包緩衝區304的每一 單位代表一儲存單元,其大小可依實施需求而定;每個儲存單元用來儲存一項目(例如:BD項目或封包資訊項目),或為空的儲存單元。
圖6顯示本揭露之封包處理加速裝置的另一實施例。相較於圖3,圖6的封包處理加速裝置600進一步包含一空閒緩衝區管理器(free buffer manager;FBM)610。FBM 610用來透過BDP電路330以回收傳送BD環306中N個已傳送空間(N transmission-complete space(s))的N個緩衝區位址,其中該N個緩衝區位址所對應的緩衝區資料(亦即:該N個已傳送空間所儲存的資料)已被NIC 34的TX DMA控制器讀取,該N為正整數。更詳細地說,傳送BD環306包含:等待被該TX DMA控制器讀取的儲存單元(亦即:圖6中,傳送BD環306之填滿斜線的方格);已被該TX DMA控制器讀取的儲存單元(亦即:圖6中,傳送BD環306之填滿點的方格),其緩衝區位址尚未被回收(recycle);以及緩衝區位址已被BDP電路330回收的儲存單元(亦即:圖6中,傳送BD環306的空白方格)。值得注意的是,FBM 610也可用來透過BDP電路330以回收複數個接收BD環的其中之一(例如:圖8的接收BD環302-1)的緩衝區位址,此時這個接收BD環是供NIC 34的TX DMA控制器使用;上述操作的細節可由前述說明推導而得,於此不再重複說明。另值得注意的是,CPU 310可依據NIC 32/34之DMA控制器的要求,來通知BDP電路330執行緩衝區位址的回收作業。另值得注意的是,該回收作業可改由CPU 310執行。
請參閱圖6。FBM 610另用來透過BDW電路340以重填(refill)M個緩衝區位址至接收BD環302中M個已讀取空間(M reading-complete space(s)),其中該M個緩衝區位址所對應的緩衝區資料(亦即:該M個已讀取空間所儲存的資料)已被CPU 310讀取,該M為正整數。更詳細地說,接收BD 環302包含:等待被BDP電路330讀取的儲存單元(亦即:圖6中,接收BD環302之填滿斜線的方格);已被BDP電路330讀取的儲存單元(亦即:圖6中,接收BD環302之填滿點的方格),其緩衝區位址尚未被重填;以及緩衝區位址已被BDW電路340重填的儲存單元(亦即:圖6中,接收BD環302的空白方格)。值得注意的是,FBM 610也可用來透過BDW電路340以重填緩衝區位址至複數個傳送BD環的其中之一(例如:圖8的傳送BD環306-1)的緩衝區空間,此時這個傳送BD環是供NIC 32的RX DMA控制器使用;上述操作的細節可由前述說明推導而得,於此不再重複說明。另值得注意的是,CPU 310可依據NIC 32/34之DMA控制器的要求,來通知BDW電路340執行緩衝區位址的重填作業。另值得注意的是,該重填作業可改由CPU 310執行。
圖7顯示圖6之FBM 610如何管理緩衝區位址的一實施例。如圖7所示,FBM 610將K個緩衝區位址(亦即:圖7的BUF_Add_1、BUF_Add_2、BUF_Add_3、…、BUF_Add_K)視為一疊緩衝區位址(a stack of buffer addresses),該K為大於一的整數。當FBM 610要重填一緩衝區位址至接收BD環302中的一已讀取空間時,FBM 610提供該疊緩衝區位址的一最上層位址作為該緩衝區位址。當FBM 610回收了傳送BD環306中一已傳送空間的一緩衝區位址時,FBM 610將該緩衝區位址作為該疊緩衝區位址的該最上層位址。
圖8顯示本揭露之封包處理加速裝置的一多通道實施例。圖8的封包處理加速裝置800中,BDP電路330支持8個BDP通道,每個BDP通道都對應一接收BD環302與一接收封包資訊環322,一部分或全部的接收BD環302受控於一RX DMA控制器(未顯示於圖),也透過BDW電路340受控於FBM 610(如圖8的虛線箭頭所示);BDW電路340支持8個BDW通道,每個BDW通道都對 應一傳送BD環306與一傳送封包資訊環324,一部分或全部的傳送BD環306受控於一TX DMA控制器(未顯示於圖),也透過BDP電路330受控於FBM 610(如圖8的虛線箭頭所示)。由於本領域具有通常知識者能夠參酌圖3~7之實施例的揭露來瞭解圖8之實施例的細節與變化,重複及冗餘的說明在此省略。
於一替代實施例中,圖3的CPU 310執行一程式以實現圖3的BDP電路330與BDW電路340的功能。於一替代實施例中,圖6的CPU 310執行一程式以實現圖6的BDP電路330、BDW電路340與FBM 610的功能。於一替代實施例中,CPU 310為一多核心處理器(multi-core processor),亦即,CPU 310可包含兩個或以上的獨立中央處理單元,且該些核心可分別獨立地執行程式指令以進行多工作業(multitasking),利用平行計算的能力加快程式的執行速度。更詳細地說,CPU 310藉由多工作業方式來執行BD預取作業、BD處理作業、BD寫回作業、回收作業及重填作業中之至少一者。於一實施例中,圖6的BDP電路330、BDW電路340與FBM 610之至少一部分的功能是由CPU 310的一獨立中央處理單元來實現。由於本領域具有通常知識者能夠參酌圖3~8之實施例的揭露來瞭解上述實施例的細節與變化,重複及冗餘的說明在此省略。
請注意,在實施為可能的前提下,本技術領域具有通常知識者可選擇性地實施前述任一實施例中部分或全部技術特徵,或選擇性地實施前述複數個實施例中部分或全部技術特徵的組合,藉此增加本發明實施時的彈性。
綜上所述,本揭露的封包處理加速裝置能夠避免快取一致性與快取汙染問題,也能夠避免長延遲問題。
雖然本發明之實施例與實作範例如上所述,然而該些實施例與實作範例並非用來限定本發明,本技術領域具有通常知識者可依據本發明之明 示或隱含之內容對本發明之技術特徵施以變化,凡此種種變化均可能屬於本發明所尋求之專利保護範疇,換言之,本發明之專利保護範圍須視本說明書之申請專利範圍所界定者為準。
30:封包轉發裝置
32:NIC(網路介面控制電路)
34:NIC(網路介面控制電路)
36:系統記憶體
300:封包處理加速裝置
310:CPU(中央處理器)
320:TCM(緊密耦合記憶體)
330:BDP電路(緩衝區描述符預取電路)
340:BDW電路(緩衝區描述符寫回電路)
302:接收BD環(接收緩衝區描述符環)
304:封包緩衝區
306:傳送BD環(傳送緩衝區描述符環)
322:接收封包資訊環
324:傳送封包資訊環

Claims (10)

  1. 一種封包處理加速裝置,包含一中央處理器(CPU)、一緊密耦合記憶體、一緩衝區描述符(buffer descriptor;BD)預取電路以及一BD寫回電路,其中:該緊密耦合記憶體耦接該CPU;該BD預取電路耦接該緊密耦合記憶體,用來依據一BD抽取圖,讀取儲存於一接收BD環的複數筆接收BD資料,再將該複數筆接收BD資料寫入一接收封包資訊環;該BD預取電路另用來依據一緩衝區抽取圖,讀取儲存於一封包緩衝區的複數筆接收表頭資料,再將該複數筆接收表頭資料寫入該接收封包資訊環,其中該接收BD環與該封包緩衝區均包含於一系統記憶體,該接收封包資訊環包含於該緊密耦合記憶體;該CPU用來存取該接收封包資訊環,以讀取及處理該複數筆接收BD資料與該複數筆接收表頭資料,並產生複數筆傳送BD資料與複數筆傳送表頭資料,該CPU進一步用來將該複數筆傳送BD資料與該複數筆傳送表頭資料寫入一傳送封包資訊環,其中該傳送封包資訊環包含於該緊密耦合記憶體;以及該BD寫回電路耦接該緊密耦合記憶體,用來讀取儲存於該傳送封包資訊環的該複數筆傳送BD資料,再將該複數筆傳送BD資料寫入一傳送BD環;該BD寫回電路另用來讀取儲存於該傳送封包資訊環的該複數筆傳送表頭資料,再將該複數筆傳送表頭資料寫入該封包緩衝區,其中該傳送BD環包含於該系統記憶體。
  2. 如請求項1之封包處理加速裝置,其中該CPU不存取該接收BD環與該傳送BD環。
  3. 如請求項1之封包處理加速裝置,其中該BD預取電路依據該接收BD環的一接收直接記憶體存取寫入指針與一BD預取讀取指針之間是否有所不同,以決定是否從該接收BD環讀取該複數筆接收BD資料;該BD預取電路依據該複數筆接收BD資料以得知包含該複數筆接收表頭資料之至少一封包的至少一緩衝區位址,並據以從該封包緩衝區讀取該複數筆接收表頭資料;該BD預取電路依據一BD預取寫入指針,將該複數筆接收BD資料與該複數筆接收表頭資料寫入該接收封包資訊環;該接收直接記憶體存取寫入指針受控於一接收直接記憶體存取控制器;該BD預取讀取指針與該BD預取寫入指針受控於該BD預取電路。
  4. 如請求項1之封包處理加速裝置,其中該CPU依據該接收封包資訊環的一BD預取寫入指針與一CPU讀取指針之間是否有所不同,以決定是否從該接收封包資訊環讀取該複數筆接收BD資料與該複數筆接收表頭資料;該CPU依據一CPU寫入指針以將該複數筆傳送BD資料與該複數筆傳送表頭資料寫入該傳送封包資訊環;該BD預取寫入指針受控於該BD預取電路;該CPU讀取指針與該CPU寫入指針受控於該CPU。
  5. 如請求項1之封包處理加速裝置,其中該BD寫回電路依據該傳送封包資訊環的一CPU寫入指針與一BD寫回讀取指針之間是否有所不同,以決定是否讀取該複數筆傳送BD資料與該複數筆傳送表頭資料;該BD寫回電路依據一BD寫回寫入指針以將該複數筆傳送BD資料寫入該傳送BD環;該BD寫回電路另依據該複數筆傳送BD資料以得知包含該複數筆傳送表頭資料之至少一封包的至少一緩衝區位址,並據以將該複數筆傳送表頭資料寫入該封包緩衝區。
  6. 如請求項1之封包處理加速裝置,進一步包含一空閒緩衝區管理器,該空閒緩衝區管理器用來透過該BD預取電路以回收該傳送BD環中N個已傳送空間的N個緩衝區位址,該N為正整數;該空閒緩衝區管理器另用來透過該BD寫回電路以重填M個緩衝區位址至該接收BD環中M個已讀取空間,該M為正整數。
  7. 如請求項6之封包處理加速裝置,其中該空閒緩衝區管理器將K個緩衝區位址視為一疊緩衝區位址,該K為大於一的整數;當該空閒緩衝區管理器要重填一第一緩衝區位址至該接收BD環中的一第一已讀取空間時,該空閒緩衝區管理器使用該疊緩衝區位址的一最上層位址作為該第一緩衝區位址;當該空閒緩衝區管理器回收該傳送BD環中一第一已傳送空間的一第一已傳送位址時,該空閒緩衝區管理器將該第一已傳送位址作為該疊緩衝區位址的該最上層位址。
  8. 如請求項1之封包處理加速裝置,其中該封包處理加速裝置與該系統記憶體包含於一封包轉發裝置,該接收BD環用來服務該封包轉發裝置的一第一網路介面控制電路,該傳送BD環用來服務該封包轉發裝置的一第二網路介面控制電路。
  9. 一種封包處理加速裝置,包含一中央處理器(CPU)與一緊密耦合記憶體,其中:該緊密耦合記憶體耦接該CPU;該CPU用來執行一BD預取作業,該BD預取作業包含:該CPU依據一緩衝區描述符(buffer descriptor;BD)抽取圖,讀取儲存於一接收BD環的複數筆接收BD資料,再將該複數筆接收BD資料寫入一接收封包資訊環;該CPU另 依據一緩衝區抽取圖,讀取儲存於一封包緩衝區的複數筆接收表頭資料,再將該複數筆接收表頭資料寫入該接收封包資訊環,其中該接收BD環與該封包緩衝區均包含於一系統記憶體,該接收封包資訊環包含於該緊密耦合記憶體;該CPU用來執行一BD處理作業,該BD處理作業包含:該CPU存取該接收封包資訊環,以讀取及處理該複數筆接收BD資料與該複數筆接收表頭資料,並產生複數筆傳送BD資料與複數筆傳送表頭資料;該CPU進一步將該複數筆傳送BD資料與該複數筆傳送表頭資料寫入一傳送封包資訊環,其中該傳送封包資訊環包含於該緊密耦合記憶體;以及該CPU用來執行一BD寫回作業,該BD寫回作業包含:該CPU讀取儲存於該傳送封包資訊環的該複數筆傳送BD資料,再將該複數筆傳送BD資料寫入一傳送BD環;該CPU另讀取儲存於該傳送封包資訊環的該複數筆傳送表頭資料,再將該複數筆傳送表頭資料寫入該封包緩衝區,其中該傳送BD環包含於該系統記憶體。
  10. 如請求項9之封包處理加速裝置,其中該CPU進一步用來執行一回收作業以回收該傳送BD環中N個已傳送空間的N個緩衝區位址,該N為正整數;該CPU另用來執行一重填作業以重填M個緩衝區位址至該接收BD環中M個已讀取空間,該M為正整數。
TW110144453A 2021-11-29 2021-11-29 封包處理加速裝置 TWI792728B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
TW110144453A TWI792728B (zh) 2021-11-29 2021-11-29 封包處理加速裝置
US17/972,603 US20230169006A1 (en) 2021-11-29 2022-10-25 Device for packet processing acceleration

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW110144453A TWI792728B (zh) 2021-11-29 2021-11-29 封包處理加速裝置

Publications (2)

Publication Number Publication Date
TWI792728B true TWI792728B (zh) 2023-02-11
TW202322598A TW202322598A (zh) 2023-06-01

Family

ID=86500012

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110144453A TWI792728B (zh) 2021-11-29 2021-11-29 封包處理加速裝置

Country Status (2)

Country Link
US (1) US20230169006A1 (zh)
TW (1) TWI792728B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5606665A (en) * 1994-07-01 1997-02-25 Digital Equipment Corporation Buffer descriptor prefetch in network and I/O design
TW201237762A (en) * 2010-11-12 2012-09-16 Alcatel Lucent Lock-less and zero copy messaging scheme for telecommunication network applications
CN104243344A (zh) * 2014-10-11 2014-12-24 网宿科技股份有限公司 一种有效数据包捕获方法及请求重定向服务器

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7461180B2 (en) * 2006-05-08 2008-12-02 Cisco Technology, Inc. Method and apparatus for synchronizing use of buffer descriptor entries for shared data packets in memory
TWI394049B (zh) * 2008-02-20 2013-04-21 Ralink Technology Corp 直接記憶體存取系統及其傳送/接收封包之方法
US20150281109A1 (en) * 2014-03-30 2015-10-01 Sachin Saxena System for en-queuing and de-queuing data packets in communication network
US9569264B2 (en) * 2015-03-17 2017-02-14 Freescale Semiconductor,Inc. Multi-core system for processing data packets

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5606665A (en) * 1994-07-01 1997-02-25 Digital Equipment Corporation Buffer descriptor prefetch in network and I/O design
TW201237762A (en) * 2010-11-12 2012-09-16 Alcatel Lucent Lock-less and zero copy messaging scheme for telecommunication network applications
CN104243344A (zh) * 2014-10-11 2014-12-24 网宿科技股份有限公司 一种有效数据包捕获方法及请求重定向服务器

Also Published As

Publication number Publication date
US20230169006A1 (en) 2023-06-01
TW202322598A (zh) 2023-06-01

Similar Documents

Publication Publication Date Title
US7366865B2 (en) Enqueueing entries in a packet queue referencing packets
CN111602377B (zh) 高速缓存中资源调整方法、数据访问方法及装置
CN109582214B (zh) 数据访问方法以及计算机系统
WO2022178998A1 (zh) 一种基于SEDRAM的堆叠式Cache系统、控制方法和Cache装置
US11403247B2 (en) Methods and apparatus for network interface fabric send/receive operations
CN106843772A (zh) 一种基于一致性总线扩展非易失内存的系统及方法
WO2018090255A1 (zh) 内存访问技术
WO2019128958A1 (zh) 缓存替换技术
WO2023066124A1 (zh) 缓存管理方法、缓存管理装置、处理器
CN110832466B (zh) 读、部分写数据方法以及相关装置
WO2016015583A1 (zh) 一种内存管理方法、装置以及内存控制器
WO2017005761A1 (en) Method for managing a distributed cache
US20090262739A1 (en) Network device of processing packets efficiently and method thereof
TWI792728B (zh) 封包處理加速裝置
WO2016131175A1 (zh) 多核系统中数据访问者目录的访问方法及设备
US10331570B2 (en) Real time memory address translation device
TW569219B (en) Architecture and method for updating cache data
US20230305749A1 (en) Nonvolatile storage device, host, and method of controlling nonvolatile storage device
CN113742115B (zh) 用于通过处理器处理页面错误的方法
WO2021008552A1 (zh) 数据读取方法和装置、计算机可读存储介质
CN109983444A (zh) 具有不同高速缓存结构和支持对不同高速缓存结构的并发查找的存储器控制器的多级系统存储器
CN116244215A (zh) 数据包处理加速装置
CN109117388B (zh) 针对内存端缓存的数据动态旁路装置及方法
TW202020674A (zh) 數據處理系統
US11954037B2 (en) Memory address allocation and cache mapping to retain data in cache