[go: up one dir, main page]

CN117539800A - 缓冲区管理装置及缓冲区管理方法 - Google Patents

缓冲区管理装置及缓冲区管理方法 Download PDF

Info

Publication number
CN117539800A
CN117539800A CN202210915189.1A CN202210915189A CN117539800A CN 117539800 A CN117539800 A CN 117539800A CN 202210915189 A CN202210915189 A CN 202210915189A CN 117539800 A CN117539800 A CN 117539800A
Authority
CN
China
Prior art keywords
buffer
buffer block
specific
software
record table
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
CN202210915189.1A
Other languages
English (en)
Inventor
杜鹏
颜飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dafa Technology Suzhou Co ltd
Original Assignee
Dafa Technology Suzhou Co ltd
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 Dafa Technology Suzhou Co ltd filed Critical Dafa Technology Suzhou Co ltd
Priority to CN202210915189.1A priority Critical patent/CN117539800A/zh
Priority to TW111134255A priority patent/TWI870693B/zh
Priority to US18/211,243 priority patent/US12386548B2/en
Publication of CN117539800A publication Critical patent/CN117539800A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0866Addressing 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/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F3/0679Non-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)策略。这些不断提高的网络输送量需求,对嵌入式设备中有限的资源提出挑战,尤其表现在受限的缓冲区管理问题上。传统作法是利用软件方式来进行缓冲区管理,然而,缓冲区块的申请与释放等工作需要占用处理器资源来处理,另外,针对多处理器进行同步存取(concurrentaccess)的情况,利用软件方式来进行缓冲区管理会需要采用锁的机制来提供保护,然而这会占用大量处理器资源并影响同步存取的效率。
发明内容
因此,本发明的目的之一在于提出一种使用纯硬件来管理存储介质中所配置的缓冲区块的缓冲区管理装置及缓冲区管理方法,以解决上述问题。
在本发明的一个实施例中,公开一种缓冲区管理装置。该缓冲区管理装置包含多个寄存器以及一缓冲区块管理电路。该缓冲区块管理电路用以通过该多个寄存器来与软件进行沟通,并且使用纯硬件来管理一存储介质中所配置的多个缓冲区块,以供该软件对该多个缓冲区块进行数据存取。
在本发明的另一个实施例中,公开一种缓冲区管理方法。该缓冲区管理方法包含:通过多个寄存器来让纯硬件与软件进行沟通;以及使用该纯硬件来管理一存储介质中所配置的多个缓冲区块,以供该软件对该多个缓冲区块进行数据存取。
本发明缓冲区管理装置及缓冲区管理方法是使用纯硬件来管理存储介质中所配置的缓冲区块,例如通过纯硬件的使用所完成的管理工作可包含:缓冲区块记录表的初始化、缓冲区块的申请、缓冲区块的释放(回收)以及缓冲区块记录表的去初始化,通过纯硬件方式来进行缓冲区管理,由于无需软件介入缓冲区管理,故可避免传统作法采用软件方式来进行缓冲区管理所面临的种种问题。
附图说明
图1为本发明一实施例的缓冲区管理装置的示意图。
图2为本发明一实施例的缓冲区块记录表的初始化操作的流程图。
图3为初始化操作所对应的缓冲区块记录表的范例。
图4为本发明一实施例的缓冲区块的申请操作的流程图。
图5为缓冲区块的申请操作所对应的缓冲区块记录表的范例。
图6为本发明一实施例的缓冲区块的释放(回收)操作的流程图。
图7为缓冲区块的释放(回收)操作所对应的缓冲区块记录表的范例。
图8为本发明一实施例的缓冲区块记录表的去初始化操作的流程图。
【符号说明】
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为本发明一实施例的缓冲区管理装置的示意图。缓冲区管理装置100可应用于高吞吐量转发设备10,然而,这仅作为范例说明,并非作为本发明的限制条件,亦即,任何采用本发明缓冲区管理装置100的设备均落入本发明的范围。如图1所示,除了缓冲区管理装置100,高吞吐量转发设备10还包含处理器12、存储器14以及直接存储器存取(directmemory 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_3=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)。
综上所述,本发明缓冲区管理装置及缓冲区管理方法是使用纯硬件来管理存储介质中所配置的缓冲区块,例如通过纯硬件的使用所完成的管理工作可包含:缓冲区块记录表的初始化、缓冲区块的申请、缓冲区块的释放(回收)以及缓冲区块记录表的去初始化,通过纯硬件方式来进行缓冲区管理,由于无需软件介入缓冲区管理,故可避免传统作法采用软件方式来进行缓冲区管理所面临的种种问题。
以上所述仅为本发明的优选实施例,凡依本发明权利要求书所做的均等变化与修饰,皆应属本发明的涵盖范围。

Claims (20)

1.一种缓冲区管理装置,包含:
多个寄存器;以及
缓冲区块管理电路,用以通过该多个寄存器来与软件进行沟通,并且使用纯硬件来管理存储介质中所配置的多个缓冲区块,以供该软件对该多个缓冲区块进行数据存取。
2.如权利要求1所述的缓冲区管理装置,其中该缓冲区块管理电路另用以维护缓冲区块记录表以及搭配该缓冲区块记录表的多个使用进度指标,并根据该缓冲区块记录表及该多个使用进度指标来管理该多个缓冲区块。
3.如权利要求2所述的缓冲区管理装置,其中该缓冲区块记录表包含多个记录表项,每一记录表项记载记录表项编号、缓冲区块起始地址以及缓冲区块使用状态;以及该多个使用进度指标包含申请进度指标以及释放进度指标,该申请进度指标用以指示下一个待申请缓冲区块的记录表项编号,以及该释放进度指标用以指示下一个待释放缓冲区块的记录表项编号。
4.如权利要求3所述的缓冲区管理装置,其中响应于该软件写入多个初始化参数至该多个寄存器中的多个特定寄存器,该缓冲区块管理电路依据该多个初始化参数在该存储介质中配置该多个缓冲区块,将该多个缓冲区块的缓冲区块起始地址分别保存在该多个记录表项,初始化该多个记录表项所保存的缓冲区块使用状态,以及初始化该申请进度指标以及该释放进度指标。
5.如权利要求3所述的缓冲区管理装置,其中响应于该软件读取该多个寄存器中的特定寄存器,该缓冲区块管理电路依据该申请进度指标所对应的特定记录表项中所保存的特定缓冲区块使用状态,判断是否要将该特定记录表项中所保存的特定缓冲区块起始地址写入该特定寄存器以供该软件读取。
6.如权利要求5所述的缓冲区管理装置,其中响应于该特定缓冲区块使用状态指示具有该特定缓冲区块起始地址的特定缓冲区块目前尚未被申请,该缓冲区块管理电路将该特定缓冲区块起始地址写入该特定寄存器以供该软件读取。
7.如权利要求6所述的缓冲区管理装置,其中在该缓冲区块管理电路将该特定缓冲区块起始地址写入该特定寄存器之后,该缓冲区块管理电路另更新该特定记录表项中所保存的该特定缓冲区块起始地址以及该特定缓冲区块使用状态,并更新该申请进度指标。
8.如权利要求5所述的缓冲区管理装置,其中响应于该特定缓冲区块使用状态指示具有该特定缓冲区块起始地址的缓冲区块目前已被申请,该缓冲区块管理电路将错误码写入该特定寄存器以供该软件读取。
9.如权利要求3所述的缓冲区管理装置,其中响应于该软件将特定缓冲区块起始地址写入该多个寄存器中的特定寄存器,该缓冲区块管理电路将该特定缓冲区块起始地址保存到该释放进度指标所对应的特定记录表项,更新该特定记录表项中所保存的特定缓冲区块使用状态,并更新该释放进度指标。
10.如权利要求3所述的缓冲区管理装置,其中响应于该软件触发去初始化,该缓冲区块管理电路释放该多个缓冲区块,删除该缓冲区块记录表,并使该多个寄存器中有关缓冲区块申请与缓冲区块释放的寄存器失效。
11.一种缓冲区管理方法,包含:
通过多个寄存器来让纯硬件与软件进行沟通;以及
使用该纯硬件来管理存储介质中所配置的多个缓冲区块,以供该软件对该多个缓冲区块进行数据存取。
12.如权利要求11所述的缓冲区管理方法,其中使用该纯硬件来管理该存储介质中所配置的该多个缓冲区块的步骤包含:
维护缓冲区块记录表以及搭配该缓冲区块记录表的多个使用进度指标;以及
根据该缓冲区块记录表及该多个使用进度指标来管理该多个缓冲区块。
13.如权利要求12所述的缓冲区管理方法,其中该缓冲区块记录表包含多个记录表项,每一记录表项记载记录表项编号、缓冲区块起始地址以及缓冲区块使用状态;以及该多个使用进度指标包含申请进度指标以及释放进度指标,该申请进度指标用以指示下一个待申请缓冲区块的记录表项编号,以及该释放进度指标用以指示下一个待释放缓冲区块的记录表项编号。
14.如权利要求13所述的缓冲区管理方法,其中使用该纯硬件来管理该存储介质中所配置的该多个缓冲区块的步骤还包含:
响应于该软件写入多个初始化参数至该多个寄存器中的多个特定寄存器,依据该多个初始化参数在该存储介质中配置该多个缓冲区块,将该多个缓冲区块的缓冲区块起始地址分别保存在该多个记录表项,初始化该多个记录表项所保存的缓冲区块使用状态,以及初始化该申请进度指标以及该释放进度指标。
15.如权利要求13所述的缓冲区管理方法,其中根据该缓冲区块记录表及该多个使用进度指标来管理该多个缓冲区块的步骤包含:
响应于该软件读取该多个寄存器中的特定寄存器,依据该申请进度指标所对应的特定记录表项中所保存的特定缓冲区块使用状态,判断是否要将该特定记录表项中所保存的特定缓冲区块起始地址写入该特定寄存器以供该软件读取。
16.如权利要求15所述的缓冲区管理方法,其中根据该缓冲区块记录表及该多个使用进度指标来管理该多个缓冲区块的步骤还包含:
响应于该特定缓冲区块使用状态指示具有该特定缓冲区块起始地址的特定缓冲区块目前尚未被申请,将该特定缓冲区块起始地址写入该特定寄存器以供该软件读取。
17.如权利要求16所述的缓冲区管理方法,其中根据该缓冲区块记录表及该多个使用进度指标来管理该多个缓冲区块的步骤还包含:
将该特定缓冲区块起始地址写入该特定寄存器之后,另更新该特定记录表项中所保存的该特定缓冲区块起始地址以及该特定缓冲区块使用状态,并更新该申请进度指标。
18.如权利要求15所述的缓冲区管理方法,其中根据该缓冲区块记录表及该多个使用进度指标来管理该多个缓冲区块的步骤还包含:
响应于该特定缓冲区块使用状态指示具有该特定缓冲区块起始地址的缓冲区块目前已被申请,将错误码写入该特定寄存器以供该软件读取。
19.如权利要求13所述的缓冲区管理方法,其中根据该缓冲区块记录表及该多个使用进度指标来管理该多个缓冲区块的步骤包含:
响应于该软件将特定缓冲区块起始地址写入该多个寄存器中的特定寄存器,将该特定缓冲区块起始地址保存到该释放进度指标所对应的特定记录表项,更新该特定记录表项中所保存的特定缓冲区块使用状态,并更新该释放进度指标。
20.如权利要求13所述的缓冲区管理方法,其中使用该纯硬件来管理该存储介质中所配置的该多个缓冲区块的步骤还包含:
响应于该软件触发去初始化,释放该多个缓冲区块,删除该缓冲区块记录表,并使该多个寄存器中有关缓冲区块申请与缓冲区块释放的寄存器失效。
CN202210915189.1A 2022-08-01 2022-08-01 缓冲区管理装置及缓冲区管理方法 Pending CN117539800A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202210915189.1A CN117539800A (zh) 2022-08-01 2022-08-01 缓冲区管理装置及缓冲区管理方法
TW111134255A TWI870693B (zh) 2022-08-01 2022-09-12 緩衝區管理裝置及緩衝區管理方法
US18/211,243 US12386548B2 (en) 2022-08-01 2023-06-17 Buffer management apparatus that uses pure hardware to manage buffer blocks configured in storage medium and associated buffer management method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210915189.1A CN117539800A (zh) 2022-08-01 2022-08-01 缓冲区管理装置及缓冲区管理方法

Publications (1)

Publication Number Publication Date
CN117539800A true CN117539800A (zh) 2024-02-09

Family

ID=89665358

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210915189.1A Pending CN117539800A (zh) 2022-08-01 2022-08-01 缓冲区管理装置及缓冲区管理方法

Country Status (3)

Country Link
US (1) US12386548B2 (zh)
CN (1) CN117539800A (zh)
TW (1) TWI870693B (zh)

Family Cites Families (15)

* Cited by examiner, † Cited by third party
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
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 杭州华三通信技术有限公司 基于地址指针链表的缓存管理装置和方法
US9690695B2 (en) * 2012-09-20 2017-06-27 Silicon Motion, Inc. Data storage device and flash memory control method thereof
US10802866B2 (en) * 2015-04-30 2020-10-13 Microchip Technology Incorporated Central processing unit with DSP engine and enhanced context switch capabilities
US10210089B2 (en) * 2015-06-18 2019-02-19 Nxp Usa, Inc. Shared buffer management for variable length encoded data
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
US10346324B2 (en) * 2017-02-13 2019-07-09 Microchip Technology Incorporated Devices and methods for autonomous hardware management of circular buffers
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 瑞昱半導體股份有限公司 存取系統記憶體的方法及設置於網路卡上的處理電路

Also Published As

Publication number Publication date
US12386548B2 (en) 2025-08-12
TW202408211A (zh) 2024-02-16
TWI870693B (zh) 2025-01-21
US20240036761A1 (en) 2024-02-01

Similar Documents

Publication Publication Date Title
US8583851B2 (en) Convenient, flexible, and efficient management of memory space and bandwidth
EP0805396B1 (en) Multi-tier cache system for mass storage device and method for implementing such a system
US7315550B2 (en) Method and apparatus for shared buffer packet switching
US7155516B2 (en) Method and apparatus for overflowing data packets to a software-controlled memory when they do not fit into a hardware-controlled memory
CN108496161A (zh) 数据缓存装置及控制方法、数据处理芯片、数据处理系统
CN117312201B (zh) 一种数据传输方法、装置及加速器设备、主机和存储介质
US20010007565A1 (en) Packet receiving method on a network with parallel and multiplexing capability
US12477038B2 (en) Data access system and method, device, and network adapter
US12340114B2 (en) Append-only data access method and apparatus
US7457925B2 (en) Storage control method and system
JP2007026094A (ja) 実行装置およびアプリケーションプログラム
CN114489943B (zh) 一种数据访问方法和装置
CN117785755B (zh) Cxl内存模组及资源配置方法、控制芯片、介质和系统
CN106294191B (zh) 处理表的方法、访问表的方法和装置
US20240345982A1 (en) Parallel ras channels in cxl memory device
CN117539800A (zh) 缓冲区管理装置及缓冲区管理方法
US8447952B2 (en) Method for controlling access to regions of a memory from a plurality of processes and a communication module having a message memory for implementing the method
US20070086428A1 (en) Network packet storage method and network packet transmitting apparatus using the same
US9846658B2 (en) Dynamic temporary use of packet memory as resource memory
US7596670B2 (en) Restricting access to improve data availability
US7185134B2 (en) Apparatus for managing Ethernet physical layer registers using external bus interface and method thereof
CN117785757B (zh) Cxl内存模组、内存页交换的方法、芯片、介质和系统
CN116932451A (zh) 一种数据处理方法、主机及相关设备
CN114401235A (zh) 一种队列管理中重载处理方法、系统、介质、设备及应用
CN114900456B (zh) 一种mac地址管理装置及方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination