TWI870693B - 緩衝區管理裝置及緩衝區管理方法 - Google Patents
緩衝區管理裝置及緩衝區管理方法 Download PDFInfo
- Publication number
- TWI870693B TWI870693B TW111134255A TW111134255A TWI870693B TW I870693 B TWI870693 B TW I870693B TW 111134255 A TW111134255 A TW 111134255A TW 111134255 A TW111134255 A TW 111134255A TW I870693 B TWI870693 B TW I870693B
- Authority
- TW
- Taiwan
- Prior art keywords
- buffer block
- buffer
- specific
- software
- record
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
- Communication Control (AREA)
Abstract
本發明揭露一種緩衝區管理裝置。該緩衝區管理裝置包含複數個暫存器以及一緩衝區塊管理電路。該緩衝區塊管理電路用以通過該複數個暫存器來與軟體進行溝通,並且使用純硬體來管理一儲存媒體中所配置的複數個緩衝區塊,以供該軟體對該複數個緩衝區塊進行資料存取。
Description
本發明係有關於緩衝區管理,尤指一種使用純硬體來管理儲存媒體中所配置的緩衝區塊的緩衝區管理裝置及緩衝區管理方法。
隨著虛擬化的爆發,頻寬的需求不斷增加,處於網路節點的封包轉發設備需要更強的資料處理能力,尤其對於網路邊緣設備而言,需要在不同傳輸速率的多種介質上傳輸資料,並且需要滿足不同頻寬網路的各種服務品質(Quality of Service,QoS)策略。這些不斷提高的網路輸送量需求,對嵌入式設備中有限的資源提出挑戰,尤其表現在受限的緩衝區管理問題上。傳統作法是利用軟體方式來進行緩衝區管理,然而,緩衝區塊的申請與釋放等工作需要佔用處理器資源來處理,另外,針對多處理器進行同步存取(concurrent access)的情況,利用軟體方式來進行緩衝區管理會需要採用鎖的機制來提供保護,然而這會佔用大量處理器資源並影響同步存取的效率。
因此,本發明的目的之一在於提出一種使用純硬體來管理儲存媒體中所配置的緩衝區塊的緩衝區管理裝置及緩衝區管理方法,以解決上述問題。
在本發明的一個實施例中,揭露一種緩衝區管理裝置。該緩衝區管
理裝置包含複數個暫存器以及一緩衝區塊管理電路。該緩衝區塊管理電路用以通過該複數個暫存器來與軟體進行溝通,並且使用純硬體來管理一儲存媒體中所配置的複數個緩衝區塊,以供該軟體對該複數個緩衝區塊進行資料存取。
在本發明的另一個實施例中,揭露一種緩衝區管理方法。該緩衝區管理方法包含:通過複數個暫存器來讓純硬體與軟體進行溝通;以及使用該純硬體來管理一儲存媒體中所配置的複數個緩衝區塊,以供該軟體對該複數個緩衝區塊進行資料存取。
本發明緩衝區管理裝置及緩衝區管理方法是使用純硬體來管理儲存媒體中所配置的緩衝區塊,例如透過純硬體的使用所完成的管理工作可包含:緩衝區塊記錄表的初始化、緩衝區塊的申請、緩衝區塊的釋放(回收)以及緩衝區塊記錄表的去初始化,透過純硬體方式來進行緩衝區管理,由於無需軟體介入緩衝區管理,故可避免傳統作法採用軟體方式來進行緩衝區管理所面臨的種種問題。
10:高吞吐量轉發設備
12:處理器
14:記憶體
16:直接記憶體存取控制器
18:緩衝區
20_1,20_2,20_3,20_N:緩衝區塊
100:緩衝區管理裝置
102_1,102_M:暫存器
104:緩衝區塊管理電路
106:緩衝區塊記錄表
108_1,108_2,108_K:使用進度指標
202-210,402-416,602-610,802-808:步驟
302_1,302_2,302_3:記錄表項
SW:軟體
entry_idx:記錄表項編號
buf-addr:緩衝區塊起始位址
buf-status:緩衝區塊使用狀態
alloc_idx:申請進度指標
free_idx:釋放進度指標
第1圖為本發明一實施例之緩衝區管理裝置的示意圖。
第2圖為本發明一實施例之緩衝區塊記錄表的初始化操作的流程圖。
第3圖為初始化操作所對應的緩衝區塊記錄表的範例。
第4圖為本發明一實施例之緩衝區塊的申請操作的流程圖。
第5圖為緩衝區塊的申請操作所對應的緩衝區塊記錄表的範例。
第6圖為本發明一實施例之緩衝區塊的釋放(回收)操作的流程圖。
第7圖為緩衝區塊的釋放(回收)操作所對應的緩衝區塊記錄表的範例。
第8圖為本發明一實施例之緩衝區塊記錄表的去初始化操作的流程圖。
在說明書及申請專利範圍當中使用了某些詞彙來指稱特定的元件。所屬技術領域具有通常知識者應可理解,硬體製造商可能會用不同的名詞來稱呼同一個元件,本說明書及申請專利範圍並不以名稱的差異來作為區分元件的方式,而是以元件在功能上的差異來作為區分的準則。在通篇說明書及申請專利範圍當中所提及的“包含”及“包括”為一開放式的用語,故應解釋成“包含但不限定於”。此外,“耦接”或“耦合”一詞在此包含任何直接及間接的電性連接手段,因此,若文中描述一第一裝置耦接至一第二裝置,則代表該第一裝置可直接電性連接於該第二裝置,或者通過其它裝置和連接手段間接地電性連接至該第二裝置。
第1圖為本發明一實施例之緩衝區管理裝置的示意圖。緩衝區管理裝置100可應用於高吞吐量轉發設備10,然而,這僅作為範例說明,並非作為本發明的限制條件,亦即,任何採用本發明緩衝區管理裝置100的設備均落入本發明的範疇。如第1圖所示,除了緩衝區管理裝置100,高吞吐量轉發設備10另包含處理器12、記憶體14以及直接記憶體存取(direct memory access,DMA)控制器16。處理器12可以是中央處理器(central processing unit,CPU)或神經網路處理器(neural network processing unit,NPU),用來載入並執行軟體SW,以處理網路封包的接收與轉發。高吞吐量轉發設備10的儲存媒體可以採用記憶體14或是任何可實現資料暫存的元件來實現,本實施例中,記憶體14可以是動態隨機存取記憶體(dynamic random access memory,DRAM)。直接記憶體存取控制器16可以不
通過處理器12的介入來直接存取(讀取與寫入)記憶體14。由於本發明的重點在於緩衝區管理裝置100且熟習技藝者可輕易瞭解處理器12、記憶體14及直接記憶體存取控制器16的操作細節,故處理器12、記憶體14及直接記憶體存取控制器16的相關說明便不再贅述。
緩衝區管理裝置100包含複數個暫存器(register)102_1~102_M以及一緩衝區塊管理電路104。暫存器102_1~102_M作為軟體與純硬體之間的溝通介面。緩衝區塊管理電路104是純硬體架構,用以通過暫存器102_1~102_M來與處理器12所執行的軟體SW進行溝通,並且使用純硬體來管理儲存媒體(例如記憶體14)中的緩衝區18(尤其是緩衝區18內所配置的複數個緩衝區塊20_1~20_N),以供軟體SW對緩衝區塊20_1~20_N進行資料存取(資料讀取與資料寫入)。此外,緩衝區塊管理電路104另用以維護一緩衝區塊記錄表106以及搭配緩衝區塊記錄表106的複數個使用進度指標108_1~108_K,例如緩衝區塊記錄表106及使用進度指標108_1~108_K可儲存於緩衝區塊管理電路104的內部儲存元件(未顯示)中。透過純硬體所完成的緩衝區18(尤其是緩衝區18內所配置的緩衝區塊20_1~20_N)的管理工作可包含:緩衝區塊記錄表的初始化、緩衝區塊的申請、緩衝區塊的釋放(回收)以及緩衝區塊記錄表的去初始化。這些管理工作的操作細節將搭配圖式而於下說明。
請一併參考第2圖與第3圖,第2圖為本發明一實施例之緩衝區塊記錄表的初始化操作的流程圖,而第3圖則是初始化操作所對應的緩衝區塊記錄表的範例。請注意,假若可得到大致相同的結果,則初始化操作的步驟不一定要完全遵照第2圖所示的順序來執行。本實施例中,緩衝區塊記錄表106包含複數個記錄表項(table entry),例如第3圖所示的記錄表項302_1、302_2、302_3,其中每
一記錄表項302_1、302_2、302_3記載一記錄表項編號entry_idx、一緩衝區塊起始位址buf-addr以及一緩衝區塊使用狀態buf-status,另外關於緩衝區塊記錄表106所搭配的使用進度指標108_1~108_K(例如K=2),使用進度指標108_1可以是申請進度指標alloc_idx,以及使用進度指標108_2可以是釋放進度指標free_idx,其中申請進度指標alloc_idx用以指示下一個待申請緩衝區塊的記錄表項編號,以及釋放進度指標free_idx用以指示下一個待釋放緩衝區塊的記錄表項編號。
當進行初始化時,處理器12所執行的軟體SW負責在儲存媒體(例如記憶體14)中預留並鎖定一塊儲存空間來作為緩衝區18。於步驟202,處理器12所執行的軟體SW將複數個初始化參數[Addr,Size,Num]分別寫入暫存器102_1~102_M中的複數個特定暫存器。於步驟204,因應軟體SW寫入初始化參數[Addr,Size,Num]至該複數個特定暫存器,緩衝區塊管理電路104便讀取該複數個特定暫存器,並依據初始化參數[Addr,Size,Num]在儲存媒體(例如記憶體14)中配置緩衝區塊20_1~20_M,進一步來說,緩衝區塊管理電路104會自記憶體位址Addr開始,每隔一個記憶體容量Size便劃分一個緩衝區塊,直到總共劃分出Num(例如Num=M)個緩衝區塊為止。
於步驟206,緩衝區塊管理電路104會將緩衝區塊20_1~20_M的緩衝區塊起始位址分別保存於緩衝區塊記錄表106的複數個記錄表項,舉例來說,假設緩衝區塊20_1~20_M的個數為3(亦即Num=M=3),以及緩衝區塊20_1、20_2、20_3於記憶體14中的緩衝區塊起始位址分別為Addr_1、Addr_2、Addr_3,其中Addr_1=Addr,Addr_2-Addr_1=Size,以及Addr_3-Addr_2=Size。緩衝區塊管理電路104會將緩衝區塊20_1~20_M(M=3)的緩衝區塊起始位址Addr_1、Addr_2、Addr_3分別保存於記錄表項302_1、302_2、302_3,如第3圖
所示,記錄表項302_1、302_2、302_3的記錄表項編號entry_idx分別是0、1、2,另外,緩衝區塊起始位址Addr_1、Addr_2、Addr_3分別為0x93000000、0x93000800、0x93001000,因此,記錄表項302_1的緩衝區塊起始位址buf-addr會記載0x93000000,記錄表項302_2的緩衝區塊起始位址buf-addr會記載0x93000800,以及記錄表項302_3的緩衝區塊起始位址buf-addr會記載0x93001000。
於步驟208,緩衝區塊管理電路104會初始化緩衝區塊記錄表106的複數個記錄表項中的緩衝區塊使用狀態buf-status,如第3圖所示,記錄表項302_1~302_3的緩衝區塊使用狀態buf-status均會賦值為0,用以指示記錄表項302_1~302_3所保存之緩衝區塊起始位址buf-addr(例如0x93000000,0x93000800,0x93001000)所對應的緩衝區塊20_1~20_M(M=3)目前均尚未被申請而處於閒置(idle)狀態。
於步驟210,緩衝區塊管理電路104會初始化申請進度指標alloc_idx以及釋放進度指標free_idx。如第3圖所示,由於緩衝區塊20_1~20_M(M=3)目前均尚未被申請,因此申請進度指標alloc_idx以及釋放進度指標free_idx均會被初始化為0(亦即alloc_idx=0及free_idx=0),換言之,兩者一開始都指向緩衝區塊記錄表106的第一個記錄表項302_1(具有entry_idx=0)。
請一併參考第4圖與第5圖,第4圖為本發明一實施例之緩衝區塊的申請操作的流程圖,而第5圖則是緩衝區塊的申請操作所對應的緩衝區塊記錄表的範例。請注意,假若可得到大致相同的結果,則申請操作的步驟不一定要完全遵照第4圖所示的順序來執行。於步驟402,處理器12所執行的軟體SW讀取暫存
器102_1~102_M中的一特定暫存器。於步驟404,因應軟體SW讀取該特定暫存器,緩衝區塊管理電路104依據申請進度指標alloc_idx所對應之一特定記錄表項中所保存的一特定緩衝區塊使用狀態buf-status,判斷是否要將該特定記錄表項中所保存的一特定緩衝區塊起始位址buf-addr寫入該特定暫存器以供軟體SW讀取。若該特定緩衝區塊使用狀態buf-status為1,則表示具有該特定緩衝區塊起始位址的一特定緩衝區塊目前已經被申請而處於使用中狀態,由於申請進度指標alloc_idx是用以指示下一個待申請緩衝區塊的記錄表項編號,這表示緩衝區18中所有的緩衝區塊20_1~20_N目前均已經被申請而處於使用中狀態,因此沒有可供軟體SW申請使用的緩衝區塊,故緩衝區塊管理電路104會將一錯誤碼(例如0)寫入該特定暫存器以供軟體SW讀取,透過此錯誤碼(例如0)來告知緩衝區塊的申請失敗。
若該特定緩衝區塊使用狀態buf-status為0,則表示具有該特定緩衝區塊起始位址的該特定緩衝區塊目前尚未被申請而處於閒置狀態,這表示緩衝區18具有可供軟體SW申請使用的緩衝區塊,因此,申請操作的流程便進入步驟408。於步驟408,因應該特定緩衝區塊使用狀態buf-status(buf-status=0)指示具有該特定緩衝區塊起始位址的該特定緩衝區塊目前尚未被申請,緩衝區塊管理電路104會將該特定緩衝區塊起始位址buf-addr寫入該特定暫存器以供軟體SW讀取,透過該特定緩衝區塊起始位址buf-addr告知軟體SW後續可以使用該特定緩衝區塊起始位址buf-addr所對應的該特定緩衝區塊來進行資料存取。接著,由於該特定緩衝區塊起始位址buf-addr所對應的該特定緩衝區塊目前已經提供給軟體SW來進行資料存取,因此,該特定緩衝區塊起始位址buf-addr所對應的該特定緩衝區塊目前無法再被重複申請,因此於步驟410,緩衝區塊管理電路104另會更新申請進度指標alloc_idx所對應之該特定記錄表項中原本保存的該特定
緩衝區塊起始位址buf-addr,例如將申請進度指標alloc_idx所對應之該特定記錄表項中原本保存的該特定緩衝區塊起始位址buf-addr重置為一預定值(例如0)。
由於該特定緩衝區塊起始位址buf-addr所對應的該特定緩衝區塊目前已經提供給軟體SW來進行資料存取,於步驟412,緩衝區塊管理電路104將該特定緩衝區塊起始位址buf-addr寫入該特定暫存器之後,緩衝區塊管理電路104另更新該特定記錄表項中所保存的該特定緩衝區塊使用狀態buf-status,例如將該特定緩衝區塊使用狀態buf-status由0改寫為1。
於步驟414,緩衝區塊管理電路104會更新申請進度指標alloc_idx,由於申請進度指標alloc_idx是用以指示下一個待申請緩衝區塊的記錄表項編號,因此,緩衝區塊管理電路104會將申請進度指標alloc_idx加1(亦即alloc_idx=alloc_idx+1),另外,緩衝區塊記錄表106是採用環狀資料結構,因此緩衝區塊記錄表106的複數個記錄表項會重複循環使用,當申請進度指標alloc_idx加1(亦即alloc_idx=alloc_idx+1)之後的數值超過最大記錄表項編號(例如entry_idx=2),則申請進度指標alloc_idx會回環而重置為最小記錄表項編號(例如entry_idx=0)。
於步驟416,緩衝區塊管理電路104會將軟體SW目前所申請到的緩衝區塊中的資料先完全初始化,例如將緩衝區塊中所有位元均填入默認填充值(例如0),而軟體SW後續再對此初始化後的緩衝區塊進行資料存取。
假若在緩衝區塊記錄表106的初始化操作完成之後,處理器12所執行的軟體SW透過緩衝區塊管理電路104依序申請到兩個緩衝區塊302_1(具有緩衝
區塊起始位址0x93000000)、302_2(具有緩衝區塊起始位址0x93000800),如第5圖所示,對於軟體SW的第一次緩衝區塊申請,由於申請進度指標alloc_idx的初始值為0,因此,記錄表項302_1原本保存的緩衝區塊起始位址buf-addr=0x93000000會作為暫存器值以供軟體SW讀取,接著,記錄表項302_1所保存的緩衝區塊起始位址buf-addr會由0x93000000更新為0以及緩衝區塊使用狀態buf-status會由0更新為1,另外,申請進度指標alloc_idx會由0更新為1;對於軟體SW的第二次緩衝區塊申請,由於申請進度指標alloc_idx目前為1,因此,記錄表項302_2原本保存的緩衝區塊起始位址buf-addr=0x93000800會作為暫存器值以供軟體SW讀取,接著,記錄表項302_2所保存的緩衝區塊起始位址buf-addr會由0x93000800更新為0以及緩衝區塊使用狀態buf-status會由0更新為1,另外,申請進度指標alloc_idx會由1更新為2。
請一併參考第6圖與第7圖,第6圖為本發明一實施例之緩衝區塊的釋放(回收)操作的流程圖,而第7圖則是緩衝區塊的釋放(回收)操作所對應的緩衝區塊記錄表的範例。請注意,假若可得到大致相同的結果,則釋放(回收)操作的步驟不一定要完全遵照第6圖所示的順序來執行。當處理器12所執行的軟體SW收到「TX Done(網路封包已發送出去)」,會要求釋放原本用來暫存網路封包之資料的某個緩衝區塊,於步驟602,處理器12所執行的軟體SW會將待釋放的特定緩衝區塊的特定緩衝區塊起始位址Addr寫入暫存器102_1~102_M中的一特定暫存器。因應軟體SW將特定緩衝區塊起始位址Addr寫入該特定暫存器,緩衝區塊管理電路104將特定緩衝區塊起始位址Addr保存到釋放進度指標free_idx所對應的一特定記錄表項(步驟604)並更新該特定記錄表項中所保存的一特定緩衝區塊使用狀態(步驟606),例如將該特定緩衝區塊使用狀態由1改寫為0。
於步驟608,緩衝區塊管理電路104會更新釋放進度指標free_idx。由於釋放進度指標free_idx是用以指示下一個待釋放緩衝區塊的記錄表項編號,因此,緩衝區塊管理電路104會將釋放進度指標free_idx加1(亦即free_idx=free_idx+1),另外,如前所述,緩衝區塊記錄表106是採用環狀資料結構,因此緩衝區塊記錄表106的複數個記錄表項會重複循環使用,當釋放進度指標free_idx加1(亦即free_idx=free_idx+1)之後的數值超過最大記錄表項編號(例如entry_idx=2),則釋放進度指標free_idx會回環而重置為最小記錄表項編號(例如entry_idx=0)。
於步驟610,緩衝區塊管理電路104會將軟體SW目前所要釋放的緩衝區塊中的資料先完全重置,例如將緩衝區塊中所有位元均重置為默認填充值(例如0),而此重置後的緩衝區塊後續可再被軟體SW申請來進行資料存取。
假若在緩衝區塊記錄表106的初始化操作完成之後,處理器12所執行的軟體SW已透過緩衝區塊管理電路104依序申請到兩個緩衝區塊302_1(具有緩衝區塊起始位址0x93000000)、302_2(具有緩衝區塊起始位址0x93000800),當處理器12所執行的軟體SW收到「TX Done(網路封包已發送出去)」而要求釋放緩衝區塊302_2(具有緩衝區塊起始位址buf-addr=0x93000800),如第7圖所示,由於釋放進度指標free_idx的初始值為0,因此,記錄表項302_1目前保存的緩衝區塊起始位址buf-addr會由0更新為0x93000800,接著,記錄表項302_1所保存的緩衝區塊使用狀態buf-status會由1更新為0,另外,釋放進度指標free_idx會由0更新為1。
第8圖為本發明一實施例之緩衝區塊記錄表的去初始化操作的流程
圖。請注意,假若可得到大致相同的結果,則去初始化操作的步驟不一定要完全遵照第8圖所示的順序來執行。於步驟802,處理器12所執行的軟體SW觸發去初始化操作,例如透過暫存器102_1~102_M中的一特定暫存器來觸發緩衝區塊管理電路104執行去初始化操作。因應軟體SW觸發去初始化,緩衝區塊管理電路104會釋放緩衝區18中的緩衝區塊20_1~20_N(步驟804),刪除緩衝區塊記錄表106(步驟806),並使作為軟體與純硬體之間接口的暫存器102_1~102_M中有關緩衝區塊申請與緩衝區塊釋放的暫存器失效(或返回提示碼以告知「未初始化」)(步驟808)。
綜上所述,本發明緩衝區管理裝置及緩衝區管理方法是使用純硬體來管理儲存媒體中所配置的緩衝區塊,例如透過純硬體的使用所完成的管理工作可包含:緩衝區塊記錄表的初始化、緩衝區塊的申請、緩衝區塊的釋放(回收)以及緩衝區塊記錄表的去初始化,透過純硬體方式來進行緩衝區管理,由於無需軟體介入緩衝區管理,故可避免傳統作法採用軟體方式來進行緩衝區管理所面臨的種種問題。以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
10:高吞吐量轉發設備
12:處理器
14:記憶體
16:直接記憶體存取控制器
18:緩衝區
20_1,20_N:緩衝區塊
100:緩衝區管理裝置
102_1,102_M:暫存器
104:緩衝區塊管理電路
106:緩衝區塊記錄表
108_1,108_K:使用進度指標
SW:軟體
Claims (18)
- 一種緩衝區管理裝置,包含:複數個暫存器,用以作為軟體與純硬體之間的溝通介面;以及一緩衝區塊管理電路,用以通過該複數個暫存器來與該軟體進行溝通,並且使用該純硬體來管理一儲存媒體中所配置的複數個緩衝區塊,以供該軟體對該複數個緩衝區塊進行資料存取;其中該緩衝區塊管理電路另用以維護一緩衝區塊記錄表以及一申請進度指標,該緩衝區塊記錄表包含複數個記錄表項,每一記錄表項記載一記錄表項編號、一緩衝區塊起始位址以及一緩衝區塊使用狀態,該申請進度指標用以指示下一個待申請緩衝區塊的記錄表項編號;因應該軟體讀取該複數個暫存器中的一特定暫存器,該緩衝區塊管理電路依據該申請進度指標所對應之一特定記錄表項中所保存的一特定緩衝區塊使用狀態,判斷是否要將該特定記錄表項中所保存的一特定緩衝區塊起始位址寫入該特定暫存器以供該軟體讀取。
- 如請求項1所述之緩衝區管理裝置,其中該緩衝區塊管理電路係維護複數個使用進度指標,並根據該緩衝區塊記錄表及該複數個使用進度指標來管理該複數個緩衝區塊;以及該複數個使用進度指標包含該申請進度指標。
- 如請求項2所述之緩衝區管理裝置,其中該複數個使用進度指標另包含一釋放進度指標,以及該釋放進度指標用以指示下一個待釋放緩衝區塊的記錄表項編號。
- 如請求項3所述之緩衝區管理裝置,其中因應該軟體寫入複數個初始化參數至該複數個暫存器中的複數個特定暫存器,該緩衝區塊管理電路依據該複數個初始化參數在該儲存媒體中配置該複數個緩衝區塊,將該複數個緩衝區塊的緩衝區塊起始位址分別保存於該複數個記錄表項,初始化該複數個記錄表項所保存的緩衝區塊使用狀態,以及初始化該申請進度指標以及該釋放進度指標。
- 如請求項3所述之緩衝區管理裝置,其中因應該軟體觸發去初始化,該緩衝區塊管理電路釋放該複數個緩衝區塊,刪除該緩衝區塊記錄表,並使該複數個暫存器中有關緩衝區塊申請與緩衝區塊釋放的暫存器失效。
- 如請求項1所述之緩衝區管理裝置,其中因應該特定緩衝區塊使用狀態指示具有該特定緩衝區塊起始位址的一特定緩衝區塊目前尚未被申請,該緩衝區塊管理電路將該特定緩衝區塊起始位址寫入該特定暫存器以供該軟體讀取。
- 如請求項6所述之緩衝區管理裝置,其中於該緩衝區塊管理電路將該特定緩衝區塊起始位址寫入該特定暫存器之後,該緩衝區塊管理電路另更新該特定記錄表項中所保存的該特定緩衝區塊起始位址以及該特定緩衝區塊使用狀態,並更新該申請進度指標。
- 如請求項1所述之緩衝區管理裝置,其中因應該特定緩衝區塊使用狀態指示具有該特定緩衝區塊起始位址的一緩衝區塊目前已被申請,該緩衝區塊管理電路將一錯誤碼寫入該特定暫存器以供該軟體讀取。
- 一種緩衝區管理裝置,包含:複數個暫存器,用以作為軟體與純硬體之間的溝通介面;以及一緩衝區塊管理電路,用以通過該複數個暫存器來與該軟體進行溝通,並且使用該純硬體來管理一儲存媒體中所配置的複數個緩衝區塊,以供該軟體對該複數個緩衝區塊進行資料存取;其中該緩衝區塊管理電路另用以維護一緩衝區塊記錄表以及一釋放進度指標,該緩衝區塊記錄表包含複數個記錄表項,每一記錄表項記載一記錄表項編號、一緩衝區塊起始位址以及一緩衝區塊使用狀態,以及該釋放進度指標用以指示下一個待釋放緩衝區塊的記錄表項編號;因應該軟體將一特定緩衝區塊起始位址寫入該複數個暫存器中的一特定暫存器,該緩衝區塊管理電路將該特定緩衝區塊起始位址保存到該釋放進度指標所對應的一特定記錄表項,更新該特定記錄表項中所保存的一特定緩衝區塊使用狀態,並更新該釋放進度指標。
- 一種緩衝區管理方法,包含:通過作為軟體與純硬體之間的溝通介面的複數個暫存器,來讓該純硬體與該軟體進行溝通;以及使用該純硬體來管理一儲存媒體中所配置的複數個緩衝區塊,以供該軟體對該複數個緩衝區塊進行資料存取;其中使用該純硬體來管理該儲存媒體中所配置的該複數個緩衝區塊的步驟包含:維護一緩衝區塊記錄表以及一申請進度指標,其中該緩衝區塊記錄表包含複數個記錄表項,每一記錄表項記載一記錄表項編號、一緩衝區塊起始位 址以及一緩衝區塊使用狀態,以及該申請進度指標用以指示下一個待申請緩衝區塊的記錄表項編號搭配該緩衝區塊記錄表的複數個使用進度指標;以及因應該軟體讀取該複數個暫存器中的一特定暫存器,該緩衝區塊管理電路依據該申請進度指標所對應之一特定記錄表項中所保存的一特定緩衝區塊使用狀態,判斷是否要將該特定記錄表項中所保存的一特定緩衝區塊起始位址寫入該特定暫存器以供該軟體讀取。
- 如請求項10所述之緩衝區管理方法,其中使用該純硬體來管理該儲存媒體中所配置的該複數個緩衝區塊的步驟係維護一緩衝區塊記錄表以及搭配該緩衝區塊記錄表的複數個使用進度指標;以及根據該緩衝區塊記錄表及該複數個使用進度指標來管理該複數個緩衝區塊,其中該複數個使用進度指標包含該申請進度指標。
- 如請求項11所述之緩衝區管理方法,其中該複數個使用進度指標另包含一釋放進度指標,以及該釋放進度指標用以指示下一個待釋放緩衝區塊的記錄表項編號。
- 如請求項12所述之緩衝區管理方法,其中使用該純硬體來管理該儲存媒體中所配置的該複數個緩衝區塊的步驟另包含:因應該軟體寫入複數個初始化參數至該複數個暫存器中的複數個特定暫存器,依據該複數個初始化參數在該儲存媒體中配置該複數個緩衝區塊,將該複數個緩衝區塊的緩衝區塊起始位址分別保存於該複數個記錄表項,初始化該複數個記錄表項所保存的緩衝區塊使用狀態,以及初始化 該申請進度指標以及該釋放進度指標。
- 如請求項12所述之緩衝區管理方法,其中使用該純硬體來管理該儲存媒體中所配置的該複數個緩衝區塊的步驟另包含:因應該軟體觸發去初始化,釋放該複數個緩衝區塊,刪除該緩衝區塊記錄表,並使該複數個暫存器中有關緩衝區塊申請與緩衝區塊釋放的暫存器失效。
- 如請求項10所述之緩衝區管理方法,其中使用該純硬體來管理該儲存媒體中所配置的該複數個緩衝區塊的步驟另包含:因應該特定緩衝區塊使用狀態指示具有該特定緩衝區塊起始位址的一特定緩衝區塊目前尚未被申請,將該特定緩衝區塊起始位址寫入該特定暫存器以供該軟體讀取。
- 如請求項15所述之緩衝區管理方法,其中使用該純硬體來管理該儲存媒體中所配置的該複數個緩衝區塊的步驟另包含:將該特定緩衝區塊起始位址寫入該特定暫存器之後,另更新該特定記錄表項中所保存的該特定緩衝區塊起始位址以及該特定緩衝區塊使用狀態,並更新該申請進度指標。
- 如請求項10所述之緩衝區管理方法,其中使用該純硬體來管理該儲存媒體中所配置的該複數個緩衝區塊的步驟另包含:因應該特定緩衝區塊使用狀態指示具有該特定緩衝區塊起始位址的一緩衝區塊目前已被申請,將一錯誤碼寫入該特定暫存器以供該軟體讀取。
- 一種緩衝區管理方法,包含:通過作為軟體與純硬體之間的溝通介面的複數個暫存器,來讓該純硬體與該軟體進行溝通;以及使用該純硬體來管理一儲存媒體中所配置的複數個緩衝區塊,以供該軟體對該複數個緩衝區塊進行資料存取;其中使用該純硬體來管理該儲存媒體中所配置的該複數個緩衝區塊的步驟包含:維護一緩衝區塊記錄表以及一釋放進度指標,其中該緩衝區塊記錄表包含複數個記錄表項,每一記錄表項記載一記錄表項編號、一緩衝區塊起始位址以及一緩衝區塊使用狀態,以及該釋放進度指標用以指示下一個待釋放緩衝區塊的記錄表項編號;以及因應該軟體將一特定緩衝區塊起始位址寫入該複數個暫存器中的一特定暫存器,將該特定緩衝區塊起始位址保存到該釋放進度指標所對應的一特定記錄表項,更新該特定記錄表項中所保存的一特定緩衝區塊使用狀態,並更新該釋放進度指標。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202210915189.1 | 2022-08-01 | ||
| CN202210915189.1A CN117539800A (zh) | 2022-08-01 | 2022-08-01 | 缓冲区管理装置及缓冲区管理方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202408211A TW202408211A (zh) | 2024-02-16 |
| TWI870693B true TWI870693B (zh) | 2025-01-21 |
Family
ID=89665358
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW111134255A TWI870693B (zh) | 2022-08-01 | 2022-09-12 | 緩衝區管理裝置及緩衝區管理方法 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US12386548B2 (zh) |
| CN (1) | CN117539800A (zh) |
| TW (1) | TWI870693B (zh) |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TW535059B (en) * | 2001-01-19 | 2003-06-01 | Akamba Corp | System and method for managing connections between clients and a server with independent connection and data buffers |
| US20040003148A1 (en) * | 2002-06-28 | 2004-01-01 | Sun Microsystems, Inc., A Delaware Corporation | Buffer management for real time systems management controller |
| US20140082265A1 (en) * | 2012-09-20 | 2014-03-20 | Silicon Motion, Inc. | Data storage device and flash memory control method thereof |
| TW201706829A (zh) * | 2015-04-30 | 2017-02-16 | 微晶片科技公司 | 具有數位信號處理引擎及增強上下文切換能力之中央處理單元 |
| TW201830256A (zh) * | 2017-02-13 | 2018-08-16 | 美商微晶片科技公司 | 用於循環緩衝區之自主硬體管理之裝置及方法 |
| US10210089B2 (en) * | 2015-06-18 | 2019-02-19 | Nxp Usa, Inc. | Shared buffer management for variable length encoded data |
Family Cites Families (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2007077496A1 (en) | 2006-01-04 | 2007-07-12 | Freescale Semiconductor, Inc. | Method for managing under-runs and a device having under-run management capabilities |
| EP1806203A1 (de) * | 2006-01-10 | 2007-07-11 | Siemens Aktiengesellschaft | Verfahren zur Herstellung eines Lochs |
| CN101551736B (zh) * | 2009-05-20 | 2010-11-03 | 杭州华三通信技术有限公司 | 基于地址指针链表的缓存管理装置和方法 |
| WO2017209876A1 (en) * | 2016-05-31 | 2017-12-07 | Brocade Communications Systems, Inc. | Buffer manager |
| US20210182190A1 (en) * | 2016-07-22 | 2021-06-17 | Pure Storage, Inc. | Intelligent die aware storage device scheduler |
| US10289315B2 (en) * | 2017-03-27 | 2019-05-14 | Western Digital Technologies, Inc. | Managing I/O operations of large data objects in a cache memory device by dividing into chunks |
| US20190042473A1 (en) * | 2017-12-28 | 2019-02-07 | Intel Corporation | Technologies for enabling slow speed controllers to use hw crypto engine for i/o protection |
| US12430066B2 (en) * | 2021-11-08 | 2025-09-30 | SanDisk Technologies, Inc. | Dynamic controller buffer management and configuration |
| TWI779938B (zh) | 2021-11-29 | 2022-10-01 | 瑞昱半導體股份有限公司 | 存取系統記憶體的方法及設置於網路卡上的處理電路 |
-
2022
- 2022-08-01 CN CN202210915189.1A patent/CN117539800A/zh active Pending
- 2022-09-12 TW TW111134255A patent/TWI870693B/zh active
-
2023
- 2023-06-17 US US18/211,243 patent/US12386548B2/en active Active
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TW535059B (en) * | 2001-01-19 | 2003-06-01 | Akamba Corp | System and method for managing connections between clients and a server with independent connection and data buffers |
| US20040003148A1 (en) * | 2002-06-28 | 2004-01-01 | Sun Microsystems, Inc., A Delaware Corporation | Buffer management for real time systems management controller |
| US20140082265A1 (en) * | 2012-09-20 | 2014-03-20 | Silicon Motion, Inc. | Data storage device and flash memory control method thereof |
| TW201706829A (zh) * | 2015-04-30 | 2017-02-16 | 微晶片科技公司 | 具有數位信號處理引擎及增強上下文切換能力之中央處理單元 |
| US10210089B2 (en) * | 2015-06-18 | 2019-02-19 | Nxp Usa, Inc. | Shared buffer management for variable length encoded data |
| TW201830256A (zh) * | 2017-02-13 | 2018-08-16 | 美商微晶片科技公司 | 用於循環緩衝區之自主硬體管理之裝置及方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| US12386548B2 (en) | 2025-08-12 |
| TW202408211A (zh) | 2024-02-16 |
| CN117539800A (zh) | 2024-02-09 |
| US20240036761A1 (en) | 2024-02-01 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP7001533B2 (ja) | NVMe-oF SSDにおける低レイテンシ直接データアクセス方法、及びそのためのシステム | |
| US9461939B2 (en) | Processing concurrency in a network device | |
| EP3441884B1 (en) | Method for managing translation lookaside buffer and multi-core processor | |
| US7877481B2 (en) | Method and apparatus for overflowing data packets to a software-controlled memory when they do not fit into a hardware-controlled memory | |
| US8327047B2 (en) | Buffer manager and methods for managing memory | |
| EP4160425B1 (en) | Data transmission method, chip, and device | |
| CN108496161A (zh) | 数据缓存装置及控制方法、数据处理芯片、数据处理系统 | |
| US12340114B2 (en) | Append-only data access method and apparatus | |
| US11231964B2 (en) | Computing device shared resource lock allocation | |
| US20180316602A1 (en) | Path Resolution in InfiniBand and Roce Networks | |
| CN114489943B (zh) | 一种数据访问方法和装置 | |
| CN106294191B (zh) | 处理表的方法、访问表的方法和装置 | |
| US20230088344A1 (en) | Storage medium management method and apparatus, device, and computer-readable storage medium | |
| TWI870693B (zh) | 緩衝區管理裝置及緩衝區管理方法 | |
| CN117075815A (zh) | 一种磁盘数据缓冲区管理方法、装置、设备及存储介质 | |
| CN114253733B (zh) | 一种内存管理方法、装置、计算机设备和存储介质 | |
| US20060153185A1 (en) | Method and apparatus for dynamically changing ring size in network processing | |
| WO2025200438A1 (zh) | 共享内存的读写权限管理方法、控制器及内存扩展设备 | |
| US20230244417A1 (en) | Storage node, storage device, and network chip | |
| CN114900456B (zh) | 一种mac地址管理装置及方法 | |
| JP2005521939A (ja) | メモリプールの変形 | |
| CN117971113B (zh) | 存储阵列的动态资源分配方法、装置、电子设备、介质 | |
| CN110300068A (zh) | Arp资源管理方法、装置、电子设备 | |
| WO2025227824A1 (zh) | 计算设备的存储容量分析方法及装置 | |
| WO2025227823A1 (zh) | 计算设备及其存储容量调整方法 |