CN118133050B - 一种存储单元匹配方法和装置 - Google Patents
一种存储单元匹配方法和装置 Download PDFInfo
- Publication number
- CN118133050B CN118133050B CN202410558114.1A CN202410558114A CN118133050B CN 118133050 B CN118133050 B CN 118133050B CN 202410558114 A CN202410558114 A CN 202410558114A CN 118133050 B CN118133050 B CN 118133050B
- Authority
- CN
- China
- Prior art keywords
- matching
- algorithm
- strategy
- matching algorithm
- storage unit
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 230000003068 static effect Effects 0.000 claims abstract description 30
- 230000015654 memory Effects 0.000 claims description 51
- 239000002699 waste material Substances 0.000 claims description 4
- 238000005516 engineering process Methods 0.000 abstract description 4
- 230000008569 process Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/0683—Plurality of storage devices
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)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了一种存储单元匹配方法、装置及存储单元匹配模块,涉及片上系统软硬件共享缓存区的管理技术领域,目的是为了解决现有软硬件共享缓存技术由于存储单元匹配算法固定,导致无法为用户提供多种场景下的选择、缓存利用率低的问题。上述方法包括:读取匹配策略;判断是否为动态策略;若否,则读取静态策略对应的匹配算法进行存储单元匹配;若是,则读取动态策略对应的匹配原则并选取匹配算法,进行存储单元匹配。上述模块包括:算法寄存器;策略寄存器;动态开关单元,适于根据算法寄存器和策略寄存器的配置动态切换匹配算法;以及匹配单元,适于根据算法寄存器的配置、或在动态开关单元的控制下选择相应的匹配算法进行存储单元匹配。
Description
技术领域
本发明涉及片上系统软硬件共享缓存区的管理技术领域,具体涉及一种存储单元匹配方法、装置及存储单元匹配模块。
背景技术
软硬件共享缓存区是片上系统(System on Chip,SOC)(例如WIFI SOC)中不可回避的一个技术领域。数据从上层软件通过接口层发送到SOC中,一般需要事先缓存,而后通过固件或者硬件将缓存数据取走发送,本次发送动作完成后,后续到来的数据需要再次使用这片内存,从而使得通信可以持续进行。常用的软硬件共享缓存技术有连续循环buf方式、链表管理方式以及单块内存软硬件交替使用等共享方式。
连续循环缓冲(buffer,buf)架构由读、写指针寄存器和一块连续的buf组成。在软件数据帧交给硬件前,先比较读写指针寄存器。如果存在空闲的buf,则将数据帧存入该buf,然后更新写寄存器;如果不存在空闲的buf,则返回满状态,并等待下一次处理。硬件有数据帧发送时,先比较读写寄存器,如果读写指针寄存器显示有数据要发,则发送该数据,发送完由硬件更新读寄存器。此架构决定了数据帧的存放必须是依次存放、且帧与帧间是连续存放的,如存放顺序为frame0、frame1、frame2、frame3...,那么发送也必须依照frame0、frame1、frame2、frame3....的顺序依次发送、依次释放。如果由于某种原因,比如发送失败后需要重新入队,使得需要先发送frame2再发其他帧,那么frame2发送后这片内存的释放和重新利用则很难操作,比如需要把后面所有的帧均向前挪动frame2个位置才能填补这一空缺,从而腾出空间供后续帧使用,这一操作不仅处理过程复杂,而且缓冲内移动数据块的算力开销大,浪费系统资源。如果按frame0、frame1、frame2、frame3...的顺序存储在共享缓冲区的帧的发送顺序经过底层软件处理后,要求为以frame2、frame1、frame0、frame3、...、frame_n的顺序进行发送,则共享区释放和获取(这里的释放指代硬件发送完腾出空间给上层软件以装载下一帧数据,获取指代硬件从中读取需要发送的帧以进行后续处理)的管理复杂度会指数级增长,并且将无法进行。
而链表管理方式数据存取过程复杂,单块内存软硬件交替使用方式虽然数据存取过程比较简单,但是数据存取效率低。
综上,以上软硬件共享缓存技术由于缓存的存储单元匹配算法固定,导致无法为用户提供多种场景下的选择、以及缓存利用率低。
发明内容
为了解决上述技术缺陷,本申请实施例提供了一种存储单元匹配方法、装置及存储单元匹配模块。
本申请第一方面实施例提供一种存储单元匹配方法,包括:读取匹配策略;判断所述匹配策略是否为动态策略;若否,则读取静态策略对应的匹配算法,以根据所述匹配算法为上层软件发来的数据匹配存储单元;以及若是,则读取所述动态策略对应的匹配原则,并根据所述匹配原则动态选取匹配算法,以根据所述匹配算法为所述上层软件发来的数据匹配存储单元。
在其中一种可能的实现方式中,所述匹配原则为根据吞吐量匹配、根据总包数匹配或根据满次数匹配。
在其中一种可能的实现方式中,所述根据所述匹配原则动态选取匹配算法,包括:根据所述匹配原则,按照权重由高到低的顺序在各个匹配算法之间进行切换。
在其中一种可能的实现方式中,所述匹配算法包括:随机尺寸匹配算法,随机选取某个尺寸的存储单元;最大尺寸优先匹配算法,优先选取尺寸最大的存储单元;以及最小尺寸优先匹配算法,优先选取尺寸最小的存储单元。
在其中一种可能的实现方式中,所述匹配算法包括:经济算法,选取能够容纳所述数据、且浪费存储空间最小的存储单元或存储单元的组合。
在其中一种可能的实现方式中,所述匹配算法包括:本次最大尺寸预留优先匹配算法,当最大尺寸的存储单元的数量降低至预设数量时,本次不再为所述数据匹配所述最大尺寸的存储单元;以及本次最小尺寸预留优先匹配算法,当最小尺寸的存储单元的数量降低至预设数量时,本次不再为所述数据匹配所述最小尺寸的存储单元。
在其中一种可能的实现方式中,所述匹配算法包括:固定尺寸优先匹配算法,优先选取固定尺寸的存储单元。
在其中一种可能的实现方式中,所述匹配算法包括:轮盘匹配算法,按预设的顺序轮询选取各种尺寸的存储单元。
本申请第二方面实施例还提供了一种存储单元匹配装置,包括:读取单元,适于读取匹配策略;判断单元,适于判断所述匹配策略是否为动态策略;静态匹配单元,适于在判断结果为否时,读取静态策略对应的匹配算法,以根据所述匹配算法为上层软件发来的数据匹配存储单元;以及动态匹配单元,适于在判断结果为是时,读取所述动态策略对应的匹配原则,并根据所述匹配原则动态选取匹配算法,以根据所述匹配算法为所述上层软件发来的数据匹配存储单元。
本申请第三方面实施例还提供了一种存储单元匹配模块,包括:算法寄存器,包括算法选择位、算法权重位、存储单元尺寸位以及动态算法切换控制位;策略寄存器,包括用于限定每种算法持续发送总字节数的总字节数位、用于限定每种算法持续发送工作包数量的工作包数位、用于限定每种算法发生满事件的最大次数的满事件次数位、以及用于限定匹配策略的策略选择开关位;动态开关单元,适于根据所述算法寄存器和所述策略寄存器的配置,动态切换匹配算法;以及匹配单元,适于根据所述算法寄存器的配置、或在所述动态开关单元的控制下,选择相应的匹配算法进行存储单元匹配。
本申请实施例中提供的存储单元匹配方法、装置及模块,提供了多种cell匹配算法、多种匹配原则、以及动态和静态两种匹配策略,应用场景丰富,能够在各种场景下提升共享缓存的使用效率,使得系统关键路径的效率在使用中得到最好的优化。
附图说明
图1为根据本发明一个实施例的bitmap pool与sram pool的架构示意图;
图2为根据本发明一个实施例的txd的数据结构示意图;
图3为根据本发明一个实施例的软硬件共享缓存的原理示意图;
图4为根据本发明一个实施例的存储单元匹配模块的架构;
图5为根据本发明一个实施例的一种存储单元匹配方法的流程图;
图6为根据本发明一个实施例的另一种存储单元匹配方法的流程图;
图7为根据本发明一个实施例的一种存储单元匹配装置的结构示意图。
具体实施方式
为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
针对现有软硬件共享缓存技术由于缓存的存储单元匹配算法固定,导致无法为用户提供多种场景下的选择、以及缓存利用率低的问题,提供了一种存储单元匹配方法、装置及存储单元匹配模块,设置了多种存储单元匹配算法,可以灵活根据实际情况在多种存储单元匹配算法之间进行切换,满足多种场景需求,大大提高了缓存的利用率。
本申请实施例的存储单元匹配方法基于以下片上系统软硬共享缓存架构实现,该架构包括静态随机存取存储池sram pool、位图池bitmap pool、直接内存访问单元(DirectMemory Access,DMA)以及共享内存管理单元(SHARE MEMOERY MANAGEMENT,SMM)。其中,sram是指静态随机存取存储器Static Random-Access Memory,sram pool为事先初始化好的分块地址池,sram pool分为多个组,每组包括多个最小存储单元cell,同一组的cell具有相同的尺寸,不同组的cell尺寸不同。bitmap pool为预先初始化好的bitmap池,bitmappool包括多个寄存器,每个寄存器与一组cell相对应,每个寄存器用于记录与其对应的一组cell的使用状态。当上层软件需要将数据写入缓存时,可以从空闲的cell中选取一个cell或多个cell组合来存储数据。
在一种实现方式中,sram pool分为四组,分别为base_a、base_b、base_c和base_d,如图1所示。每组包含32个cell,同一组的cell大小一致,同一个cell是空间连续的,不同组的cell大小不一致,组与组之间可以连续或不连续,具体由软件来指定。其中,base_a的每个cell为1024连续字节,base_b的每个cell为512连续字节,base_c的每个cell为256连续字节,base_d的每个cell为128连续字节。相应地,bitmap是由四个不同的寄存器组成的寄存器堆,四个寄存器分别为bitmap_reg_a、bitmap_reg_b、bitmap_reg_c和bitmap_reg_d,四个寄存器分别与base_a、base_b、base_c和base_d相对应,每个寄存器为32比特(bit),32个bit用来表示各自sram pool中编号为0~31的cell的使用状态:比特为0表示处于使用状态;比特为1表示处于空闲状态。如图1所示,m[31..0]为寄存器bitmap_reg_a,作为base_a的位图A map,其0至31位分别表示base_a中32个cell的使用状态;n[31..0]为寄存器bitmap_reg_b,作为base_b的位图B map,其0至31位分别表示base_b中32个cell的使用状态;p[31..0]为寄存器bitmap_reg_c,作为base_c的位图C map,其0至31位分别表示base_c中32个cell的使用状态;q[31..0]为寄存器bitmap_reg_d,作为base_d的位图D map,其0至31位分别表示base_d中32个cell的使用状态。SMM 将数据存入某个cell后,该cell对应的寄存器中的bit 被SMM清零。
SMM用于实现缓存的管理,主要包括存储单元匹配模块(cell_match_unit,CMU)、位图搜索(bitmap search)模块、直接内存访问单元目的地址计算(dma by bitmap)模块、以及空白发送描述符产生(generate txd)模块,其中,txd 指代transmit descript,是一种数据结构格式,用于描述发送数据时硬件所需要的各种信息。
在一种实现方式中,cell的前两个字节cell len用来记录存入该cell的数据的真实长度,数据的长度信息不含len本身。例如base_a的每个cell包含1024连续字节,那么每个cell最多能够存储1022字节的数据。DMA每搬完一块(一个cell)都将当前cell的头两个字节len更新为存入该cell里的数据的真实长度。
SMM在底层软件模块SMM driver的控制下,将来自上层软件的数据搬移至srampool的cell中,与此同时生成有效txd,txd再被DMA搬运至硬件、并释放cell以供下次使用(上述某些软硬衔接过程将由底层软件控制逻辑实现)。
图2为根据本发明一个实施例的txd的数据结构示意图。如图2所示,一个txd有两组cell_info,因此一个txd最多能够携带8个sub_cell_info,约定SMM按顺序填入,后级硬件按顺序取用。由于sub_cell_info由tpye和id两部分内容组成,因此sub_cell_info能体现出使用了哪种类型的cell和哪个位置的cell。当上层数据需要两块或多块不同的cell来承载时,需要将cell_info0 中的type-cell_id 填入对应的sub_cell_info,进而生成完整的cell_info,填入顺序依次位sub_cell_info0 ...sub_cell_info7,例如001:00000(001组的00000号cell) 以及100:00000(100组的00000号cell)依次填入。三位的cell_type 和五位的id数据构成一个sub_cell_info,由低位到高位依次存放,为sub_cell_info0,...sub_cell_info3。四个sub_cell_info 组成一个cell_info,记录在Cell_info寄存器中,这一寄存器为32位寄存器,该寄存器分为四组,每一组代表一个cell,每一组记录了这一cell的typt和id。其中type指1024、512、256和128,type为001表示1024类型、002表示512类型、003表示256类型、004表示128类型,type占用3bit,例如图2中的2:0 是type,4:0是id。假设SMM取到1024这一类型时,图中的2:0则应当为0:0。图中2:0和4:0称为sub_cell_info,一个cell_info可以写入四个sub_cell_info(如图中的cell_info 0[(type:id)4]和cell_info 1[(type:id)4])。Cell_info记录了这些数据分布在哪些cell,1025的数据要分成两块来存储,len占两个字节(这两个字节记录了本cell记录的数据的长度,这个数据不包括len本身),所以一个1024的cell能存储1024-2=1022个字节,另一块内存需要存储1025-1022=3个字节,这两块的数据长度加起来等于Total_len记录的数据总长度。
DMA负责将上层软件发来的数据搬移至cell中。在搬移数据的同时,DMA将当前cell的cell_info 填入txd,具体为:将数据搬进内存的一个cell后,SMM产生中断给fwallocate(底层软件的分配模块),fw allocate捕获到该中断后分配一个空白的txd给SMM,SMM将这一cell在bitmap pool中所对应的比特转换成一个序号,具体为,将bit_n转换为序号n,并记录对应的base_x的地址。例如,该cell在bitmap pool中对应的比特为bit_0,那么将其转换成序号0,这一序号即为id号,然后将id号写入txd中,则txd记录了这一cell的信息。接下来SMM会产生txd中断,软件捕获该中断,并开始使用txd所记录的信息。具体为:每进来一个txd,底层软件fw从SMM 中读取txd的起始地址,将这一txd的信息挂到自身的txd队列(即txd_hdr 队列)中。Txd_next表示一个指针(或者称链接),指向下一个txd,后续硬件处理时将按照txd的顺序依次处理。当全部txd 的信息挂至txd_hdr队列后,启动硬件处理模块,将txd_hdr 队列交给硬件。
图3为根据本发明一个实施例的软硬件共享缓存的原理示意图。如图3所示,系统上电,进行寄存器配置,这里的寄存器指算法寄存器和策略寄存器,当来自上层软件的数据(upper layer sw_tx_buf)通过上层软件发送接口SMMI发送至SMM时,如(1)所示,SMM的CMU读取算法寄存器和策略寄存器的配置,为upper layer sw_tx_buf匹配一个或多个cell,然后产生中断,如图2所示;接下来,底层软件fw allocate捕获到该中断后产生txd,如(3)所示;接下来,软件判断该txd是否为空白的txd,如果是空白的txd,则将该txd交给SMM,如(4)所示;接下来,SMM的bitmap search模块从bitmap pool中查找cell,如(5)所示;接下来,dma by bitmap模块根据查找到的cell,计算DMA的目的地址,以使DMA根据该地址将数据从cell搬运到硬件中,如(6)所示;接下来,generate txd模块产生cell的信息,包括cell的类型和id,如(7)所示;接下来,SMM产生中断,底层软件捕获该中断,并从SMM里读取cell的起始地址,挂到空白发送描述符队列(txd_hdr队列)中,如(8)所示;当参与本次缓存的全部cell的信息均挂至txd_hdr 队列后,硬件开始处理txd,如(9)所示,硬件处理txd_hdr队列及获取数据的方法SMM放入数据方式一致, 先依次获取txd_hdr队列中的各个sub_cell_info, 经过地址换算得到真实的数据地址然后加以处理;硬件处理完txd_hdr队列后产生中断,如(10)所示;软件捕获到硬件的处理中断后,对于数据已成功搬运至硬件的cell,释放模块fw release在寄存器堆中释放该cell所对应的比特位,如(11)所示;而对于硬件没有搬运走的数据、或者搬运失败的数据,将重新搬运,如(12)所示。
图4为根据本发明一个实施例的存储单元匹配模块的架构。如图4所示,CMU主要包括算法寄存器、策略寄存器、动态开关单元和匹配单元。
如表1所示,算法寄存器指定了CMU 使用的具体算法以及是否使用动态策略。算法寄存器的位域包括算法选择位、算法权重位、存储单元尺寸位以及动态算法切换控制位。以8种匹配算法为例,第24至31位为算法选择位,每一位对应一种算法,置1有效,表示使用对应的算法,置0无效;第8至23位为算法权重位,其中每两位对应一种算法,用于记录该算法在动态切换时的权重,算法位的取值为0至3;第6位和第7位代表固定尺寸分配算法时的cell大小,0、1、2和3分别对应bitmap_a_reg、bitmap_b_reg、bitmap_c_reg和bitmap_d_reg;第1至5位保留;第0位为动态算法切换控制位,bit[0]为0 则表示使用静态策略,bit[0]为1则表示使用动态策略。
表1 算法寄存器各位域的含义与取值
如表2所示,策略寄存器指定了使用的算法切换原则以及动态切换算法时候的每种算法使能位。策略寄存器包括用于限定每种匹配算法持续发送总字节数的总字节数位、用于限定每种匹配算法持续发送工作包数量的工作包数位、用于限定每种匹配算法发生满事件的最大次数的满事件次数位、以及用于限定匹配策略的策略选择开关位。其中,第20至31位为总字节数位,对应于吞吐量匹配原则,总字节数位表示每种匹配算法最大可持续发送的最大字节数,以M为单位,例如可以限定每种匹配算法最大可持续发送字节数为4096Mbytes;第10至19位表示每种匹配算法可持续工作的最大包数,对应于总包数匹配原则,最大包数以100包为单位,例如可以限定每种匹配算法可持续工作的最大包数为102400,那么当某种匹配算法持续工作的包数达到102400包时将切换至下一种算法;第3至9位用于限定每种匹配算法下sram pool发生的最大满次数,对应于满次数匹配原则,例如限定最大满次数为127,那么当某种匹配算法发生了127次满事件后将切换至下一种匹配算法;第0至2位为匹配原则选择开关,分别对应以上三种匹配原则,三种匹配原则互斥,置1有效,表示使用对应的匹配原则,置0无效,第0至2位全部置0意味着指使用静态算法,该配置方案由软件保证。
表2 策略寄存器各位域的含义与取值
使用静态策略时,系统使用某种固定的匹配算法匹配bitmap 中的bit。
使用动态策略时,系统开始启动内部统计计算值。SMM 内部有三个统计模块,分别为当前总流量统计模块(对应于吞吐量匹配原则),总包个数统计模块(对应于总包数匹配原则)以及SRAM满事件发生次数(对应于满次数匹配原则),采用当前匹配算法无法找到合适的cell组合来承载上层的tx_buf 为一次满计数。三个统计模块分别受控于cmu_policy_reg的bit[2:0]。在选定了匹配原则后,相关的统计模块开始工作,当计数值达到设定的最大门限后触发匹配算法的切换,同时该统计模块清零。清零后继续统计,供下一次切换使用。静态算法时此三个内部统计模块无效。
本实施例提供了8种匹配算法,以适应不同场景。8种算法中,bitmap_a_reg、bitmap_b_reg、bitmap_c_reg 和bitmap_d_rge四种尺寸cell的id分别为0、1、2和3,其中,bitmap_a_reg的cell大小为1024字节,bitmap_b_reg的cell大小为512字节,bitmap_c_reg的cell大小为256字节,bitmap_d_reg的cell大小为128字节,如表3所示。
表3 cell类型及id
表4给出了8种匹配算法的cell匹配方式。如表4所示:
随机尺寸匹配算法(RAND SIZE,RDMS)的id为0,该算法由CMU 内部的随机数发生器模块从0~3中随机选出一个数字,然后再从选取的cell类型中选取空闲的cell,例如,SMM收到来自上层软件的数据包时,随机数发生器模块随机选取的数字为2,那么接下来将从bitmap_c_rge中选取空闲的cell来存储数据;
最大尺寸优先匹配算法(MAX SIZE,MAXS)的id为1,该算法从多种cell类型中优先选取尺寸最大的cell类型,即,优先选取bitmap_a_reg,若bitmap_a_reg对应的cell均为使用状态,则再从1~3中随机选择一个数字,即,从bitmap_b_reg ~ bitmap_d_reg中随机选取一个cell的类型,然后再选出该类型下空闲的cell,该算法适用于适用于大流量、长数据的情况;
最小尺寸优先匹配算法(MIN SIZE,MINS)的id为2,该算法从多种cell类型中优先选取尺寸最小的cell类型,即,优先选取bitmap_d_reg,若bitmap_d_reg对应的cell均为使用状态,则再从0~2中随机选择一个数字,即,从bitmap_a_reg ~ bitmap_c_reg中随机选取一个cell的类型,然后再选出该类型下空闲的cell,该算法适用于适用于控制信息或者短消息等小流量、短数据的情况;
经济算法(ECONOMY SIZE,ECOS)的id为3,该算法根据来自上层软件的数据的长度来选择cell的类型,使得选取的cell存入该数据后浪费的存储空间最小,具体地,待存数据长度在1~126 区间时选择bitmap_d_reg,待存数据长度在127~254区间时选择bitmap_c_reg,待存数据长度在255~510区间时选择bitmap_b_reg,待存数据长度在511~1023区间时选择bitmap_a_reg;
本次最大尺寸预留优先匹配算法(MAX RESERVED SIZE,MAXRSV)的id为4,该算法预先设定预留的最大尺寸cell的数量,例如,最大尺寸的cell为bitmap_a_reg,设定预留数量为4片,那么在bitmap_a_reg中还剩余4片内存时,本次将不再分配bitmap_a_reg的cell,同时预留标记为置1,便于下次使用至少有四片1024字节的 cell可用,下次需要使用预留的4片1024字节的内存时,软件需要预先将预留标记清除,具体策略由软件根据实际场景而定;
本次最小尺寸预留优先匹配算法(MIN RESERVED SIZE,MINRSV)的id为5,该算法预先设定预留的最小尺寸cell的数量,例如,最小尺寸的cell为bitmap_d_reg,设定预留数量为4片,那么在bitmap_d_reg中还剩余4片内存时,本次将不再分配bitmap_d_reg的cell,同时预留标记为置1,便于下次使用至少有4片128字节的 cell可用,下次需要使用预留的4片128字节的内存时,软件需要预先将预留标记清除,具体策略由软件根据实际场景而定;
固定尺寸优先匹配算法(FIXED SIZE,FIXS)的id为6,该算法每次分配cell时,优先按固定的配置长度选取cell,即,优先选取某一固定尺寸的cell,在当前固定尺寸的cell中取不到空闲的 cell时,再选取其他尺寸的cell,例如设定固定尺寸为512字节的cell,那么每次分配cell时,将优先从bitmap_c_reg中选取空闲的cell,如果从bitmap_c_reg中选取不到空闲的cell,再从bitmap_a _reg、bitmap_b_reg和bitmap_d_reg中选取空闲的cell;
轮盘匹配算法(RAND ROBIN,RR)的id为7,该算法每次分配cell时,都从各种尺寸的内存中顺序轮询选取空闲的cell,如果本轮中取到某个尺寸的内存时,该尺寸的内存已全部取完,则忽略该尺寸的内存,直接跳到下一个尺寸,例如,设定该算法每次分配内存时,顺序从bitmap_a_reg、bitmap_b_reg、bitmap_c_reg 和bitmap_d_rge中轮询选取空闲cell,当本轮选取到bitmap_c_reg时,发现bitmap_c_reg中的cell全部为使用状态,则跳过bitmap_c_reg从bitmap_d_rge中选取空闲的cell。
表4 八种匹配算法的匹配方式
CMU的动态开关单元用于根据算法寄存器和策略寄存器的配置,动态切换匹配算法。匹配单元用于根据算法寄存器的配置、或在动态开关单元的控制下,选择相应的匹配算法进行存储单元匹配。
如图4所示,首先对算法寄存器和策略寄存器进行配置,如(1)和(2)所示;接下来,将根据两个寄存器的配置情况选取相应的匹配算法进行cell匹配,如果是静态策略,则直接由匹配单元采用相应的匹配算法对来自上层软件的数据进行匹配,如果是动态策略,则开启动态开关单元,由动态开关单元控制匹配单元采用相应的匹配算法对来自上层软件的数据进行匹配;匹配过程中,从bitmap pool选取合适的cell,如(3)所示;确定选取到的cell在bitmap pool中的位置,如(4)所示;接下来根据这一位置结合cell的起始地址确定DMA的目的地址,如(5)所示;最后触发DMA,如(6)所示,以使DMA将存储在cell中的数据搬运至硬件。
本申请实施例的存储单元匹配方法包括:读取匹配策略;若所述匹配策略为静态策略,则读取所述静态策略对应的匹配算法,以根据所述匹配算法为上层软件发来的数据匹配存储单元;以及若所述匹配策略为动态策略,则读取所述动态策略对应的匹配原则,并根据所述匹配原则动态选取匹配算法,以根据所述匹配算法为所述上层软件发来的数据匹配存储单元。
图5为根据本发明一个实施例的存储单元匹配方法500的流程图。如图5所示,存储单元匹配方法500始于步骤S510。
在步骤S510中,读取匹配策略。
匹配策略从从策略寄存器中读取。
接下来,在步骤S520中,判断匹配策略是否为动态策略,并在判断结果为否时,执行步骤S530,在判断结果为是时,执行步骤S540。
判断结果为否,表示配置的匹配策略为静态策略。在步骤S530中,读取静态策略对应的匹配算法,以根据匹配算法为上层软件发来的数据匹配存储单元。例如,对于小包较多的数据,可以通过配置算法寄存器来采用最小尺寸优先匹配算法或经济算法,这样,小包数据不会占用大尺寸的内存,当有大包数据到来时,不会因为小包过多而导致大包分不到缓存,避免由此而产生的吞吐量下降的问题;同样,对于大包较多的数据,可以通过配置算法寄存器来采用最大尺寸优先匹配算法或经济算法,这样,大包数据不会占用大尺寸的内存,当有大包数据到来时,不会因为小包过多而导致大包分不到缓存,避免由此而产生的关键信息延时长的问题。
从算法寄存器中读取静态策略对应的匹配算法的id,根据读取到的算法id,调用相应的匹配算法为上层软件发来的数据匹配存储单元。
在步骤S540中,读取动态策略对应的匹配原则,并根据匹配原则动态选取匹配算法,以根据匹配算法为上层软件发来的数据匹配存储单元。
从策略寄存器中读取配置的匹配原则,算法寄存器中配置了动态策略下每种匹配算法的权重,按照匹配原则,结合每种匹配算法的权重,进行匹配算法的切换。每个匹配原则都可以指定优先级,优先级由0~3表示,数值越大则优先级越高。当切换条件达成时,先选出最优先级高的匹配算法进行cell匹配,同一优先级的若干个算法为一个集合,该集合里的算法切换按id 由小到大依次切换,然后跳到下一个优先级集合。例如, 优先级为3的算法id分别为2、4、6,优先级为2的算法id为0、1,优先级为1的算法id为3,优先级为0的算法id为5、7。那么根据切换条件,被执行的切换顺序是先执行 2->4->6 的切换,再执行0>1的切换,再执行3,再执行5->7,从最高优先级执行到最低优先后,周而复始。
假设策略寄存器的bit[0]对应的匹配原则为根据满次数匹配,bit[1]对应的匹配原则为根据总包数匹配,bit[2]对应的匹配原则为根据吞吐量匹配,bit[0]和bit[1]置0,bit[2]置1,那么配置的匹配原则为根据吞吐量匹配,算法寄存器配置了id从0至7的算法的权重值分别为0、1、1、3、1、1、1、2,那么按照优先级由高到低的顺序对8种匹配算法的id进行排序,应当为:3、7、1、2、4、5、6、0。在进行cell匹配时,将优先选取id为3的算法(经济算法),采用该算法为上层软件发来的数据进行cell匹配,当匹配的数据总字节数达到4096Mbytes时,切换至id为7的算法(轮盘匹配算法)
图6是图5所示的存储单元匹配方法的详细流程图。如图6所示,系统上电后,首先对算法寄存器和策略寄存器进行配置。接下来,根据策略寄存器的配置情况判断采用静态策略还是动态策略。如果算法寄存器的bit[0]置0,则表示使用静态策略,结合算法寄存器的bit[31:24],查看静态策略采取的匹配算法;接下来,使用上述匹配算法为上层软件发来的数据包分配cell。如果算法寄存器的bit[0]置1,则表示使用动态策略。接下来,开启动态开关,读取策略寄存器的bit[2:0],确定动态切换的匹配原则,具体地,先判断是否采用吞吐量匹配原则,如果是,则根据吞吐量匹配原则、结合算法寄存器的bit[23:8],选取相应的匹配算法,然后使用选取的匹配算法为上层软件发来的数据包分配cell,分配cell的过程中,根据匹配原则切换匹配算法;如果不是采用吞吐量匹配原则,则继续判断是否采用总包数匹配原则,如果是,则根据总包数匹配原则、结合算法寄存器的bit[23:8],选取相应的匹配算法,然后使用选取的匹配算法为上层软件发来的数据包分配cell,分配cell的过程中,根据匹配原则切换匹配算法;如果不是根据总包数匹配原则,则表示采用满次数匹配原则,根据满次数匹配原则、结合算法寄存器的bit[23:8],选取相应的匹配算法,然后使用选取的匹配算法为上层软件发来的数据包分配cell,分配cell的过程中,根据匹配原则切换匹配算法。当系统工作一定时间时,可以再次查看当前使用的策略是动态策略还是静态策略,然后返回根据策略寄存器的配置情况判断采用静态策略还是动态策略的步骤。
本申请实施例还提供了一种存储单元匹配装置,如图7所示,存储单元匹配装置700,包括读取单元710、判断单元720、静态匹配单元730以及动态匹配单元740。
读取单元710适于读取匹配策略。
判断单元720适于判断所述匹配策略是否为动态策略。
静态匹配单元730适于在判断结果为否时,读取所述静态策略对应的匹配算法,以根据所述匹配算法为上层软件发来的数据匹配存储单元。
动态匹配单元740适于在判断结果为是时,读取所述动态策略对应的匹配原则,并根据所述匹配原则动态选取匹配算法,以根据所述匹配算法为所述上层软件发来的数据匹配存储单元。
作为本申请的优先实施例,所述匹配原则为根据吞吐量匹配、根据总包数匹配或根据满次数匹配。
作为本申请的优先实施例,所述根据所述匹配原则动态选取匹配算法,包括:根据所述匹配原则,按照权重由高到低的顺序在各个匹配算法之间进行切换。
作为本申请的优先实施例,所述匹配算法包括:
随机尺寸匹配算法,随机选取某个尺寸的存储单元;
最大尺寸优先匹配算法,优先选取尺寸最大的存储单元;以及
最小尺寸优先匹配算法,优先选取尺寸最小的存储单元。
作为本申请的优先实施例,所述匹配算法包括:
经济算法,选取能够容纳所述数据、且浪费存储空间最小的存储单元或存储单元的组合。
作为本申请的优先实施例,所述匹配算法包括:
本次最大尺寸预留优先匹配算法,当最大尺寸的存储单元的数量降低至预设数量时,本次不再为所述数据匹配所述最大尺寸的存储单元;以及
本次最小尺寸预留优先匹配算法,当最小尺寸的存储单元的数量降低至预设数量时,本次不再为所述数据匹配所述最小尺寸的存储单元。
作为本申请的优先实施例,所述匹配算法包括:
固定尺寸优先匹配算法,优先选取固定尺寸的存储单元。
作为本申请的优先实施例,所述匹配算法包括:
轮盘匹配算法,按预设的顺序轮询选取各种尺寸的存储单元。
存储单元匹配装置700能够实现方法500的各步骤的处理,具有与方法500相同的原理和技术效果,在此不再赘述。
本申请实施例的存储单元匹配方法、装置及模块,设置了多种匹配算法、多种匹配原则、以及静态和动态两种匹配策略,可根据上层软件数据的特点配置算法寄存器和策略寄存器,系统根据算法寄存器和策略寄存器的配置情况采用静态策略或动态策略,采用动态策略时,在多种匹配算法之间进行切换。本申请实施例适用于各种包长的场景,在各种场景下提升共享缓存的使用效率,避免单一匹配算法缓存利用率低的问题。采用本申请实施例的存储单元匹配方法、装置及模块进行缓存管理,对于小包过多的场景,能够避免大包分不到缓存而导致的吞吐量下降的问题,对于大包过多的场景,能够避免小包分不到缓存而导致关键信息延时长的问题。
本申请实施例的存储单元匹配方法、装置及模块可以应用在SOC系统中软硬件共享缓存区管理领域,这里的SOC不局限于WIFI SOC和其他通信类SOC,凡涉及通过某种接口使得软件和硬件存在共享数据的场景都可适用。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (7)
1.一种存储单元匹配方法,其特征在于,包括:
读取匹配策略;
判断所述匹配策略是否为动态策略;
若否,则读取静态策略对应的匹配算法,以根据所述匹配算法为上层软件发来的数据匹配存储单元;以及
若是,则读取所述动态策略对应的匹配原则,并根据所述匹配原则动态选取匹配算法,以根据所述匹配算法为所述上层软件发来的数据匹配存储单元;其中:所述匹配原则为根据吞吐量匹配、根据总包数匹配或根据满次数匹配,根据所述匹配原则动态选取匹配算法,包括:从策略寄存器中读取配置的所述匹配原则,算法寄存器中配置了所述动态策略下每种所述匹配算法的权重;根据所述匹配原则,达成所述匹配原则对应的切换条件时,按照每种所述匹配算法的权重由高到低的顺序在各个所述匹配算法之间进行切换。
2.如权利要求1所述的方法,其特征在于,所述匹配算法包括:
随机尺寸匹配算法,随机选取某个尺寸的存储单元;
最大尺寸优先匹配算法,优先选取尺寸最大的存储单元;以及
最小尺寸优先匹配算法,优先选取尺寸最小的存储单元。
3.如权利要求1所述的方法,其特征在于,所述匹配算法包括:
经济算法,选取能够容纳所述数据、且浪费存储空间最小的存储单元或存储单元的组合。
4.如权利要求1所述的方法,其特征在于,所述匹配算法包括:
本次最大尺寸预留优先匹配算法,当最大尺寸的存储单元的数量降低至预设数量时,本次不再为所述数据匹配所述最大尺寸的存储单元;以及
本次最小尺寸预留优先匹配算法,当最小尺寸的存储单元的数量降低至预设数量时,本次不再为所述数据匹配所述最小尺寸的存储单元。
5.如权利要求1所述的方法,其特征在于,所述匹配算法包括:
固定尺寸优先匹配算法,优先选取固定尺寸的存储单元。
6.如权利要求1所述的方法,其特征在于,所述匹配算法包括:
轮盘匹配算法,按预设的顺序轮询选取各种尺寸的存储单元。
7.一种存储单元匹配装置,其特征在于,包括:
读取单元,适于读取匹配策略;
判断单元,适于判断所述匹配策略是否为动态策略;
静态匹配单元,适于在判断结果为否时,读取静态策略对应的匹配算法,以根据所述匹配算法为上层软件发来的数据匹配存储单元;以及
动态匹配单元,适于在判断结果为是时,读取所述动态策略对应的匹配原则,并根据所述匹配原则动态选取匹配算法,以根据所述匹配算法为所述上层软件发来的数据匹配存储单元;其中:所述匹配原则为根据吞吐量匹配、根据总包数匹配或根据满次数匹配,根据所述匹配原则动态选取匹配算法,包括:从策略寄存器中读取配置的所述匹配原则,算法寄存器中配置了所述动态策略下每种所述匹配算法的权重;根据所述匹配原则,达成所述匹配原则对应的切换条件时,按照每种所述匹配算法的权重由高到低的顺序在各个所述匹配算法之间进行切换。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410558114.1A CN118133050B (zh) | 2024-05-07 | 2024-05-07 | 一种存储单元匹配方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410558114.1A CN118133050B (zh) | 2024-05-07 | 2024-05-07 | 一种存储单元匹配方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN118133050A CN118133050A (zh) | 2024-06-04 |
CN118133050B true CN118133050B (zh) | 2024-09-17 |
Family
ID=91240854
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410558114.1A Active CN118133050B (zh) | 2024-05-07 | 2024-05-07 | 一种存储单元匹配方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118133050B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102640472A (zh) * | 2009-12-14 | 2012-08-15 | 瑞典爱立信有限公司 | 动态缓存选择方法和系统 |
CN113168349A (zh) * | 2021-03-26 | 2021-07-23 | 珠海全志科技股份有限公司 | Ai处理器的内存分配方法、计算机装置及计算机可读存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105843752A (zh) * | 2016-03-29 | 2016-08-10 | 乐视控股(北京)有限公司 | 分配移动终端内存缓存图片数据方法及装置 |
CN112559389A (zh) * | 2019-09-25 | 2021-03-26 | 阿里巴巴集团控股有限公司 | 存储控制装置、处理装置、计算机系统和存储控制方法 |
-
2024
- 2024-05-07 CN CN202410558114.1A patent/CN118133050B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102640472A (zh) * | 2009-12-14 | 2012-08-15 | 瑞典爱立信有限公司 | 动态缓存选择方法和系统 |
CN113168349A (zh) * | 2021-03-26 | 2021-07-23 | 珠海全志科技股份有限公司 | Ai处理器的内存分配方法、计算机装置及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN118133050A (zh) | 2024-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4483535B2 (ja) | ネットワーク装置 | |
CN107204198B (zh) | 高速访问双倍速率同步动态随机存储器的控制方法及装置 | |
CN104090847B (zh) | 一种固态存储设备的地址分配方法 | |
US8325603B2 (en) | Method and apparatus for dequeuing data | |
US6925520B2 (en) | Self-optimizing crossbar switch | |
US20070011396A1 (en) | Method and apparatus for bandwidth efficient and bounded latency packet buffering | |
EP3657744B1 (en) | Message processing | |
CN106502806B (zh) | 一种总线协议命令处理装置及相关方法 | |
US10248350B2 (en) | Queue management method and apparatus | |
EP1237337A2 (en) | Efficient optimization algorithm in memory utilization for network applications | |
US20050025140A1 (en) | Overcoming access latency inefficiency in memories for packet switched networks | |
US7627672B2 (en) | Network packet storage method and network packet transmitting apparatus using the same | |
CN102377682A (zh) | 基于定长单元存储变长分组的队列管理方法及设备 | |
US20090187681A1 (en) | Buffer controller and management method thereof | |
CN112084136A (zh) | 队列缓存管理方法、系统、存储介质、计算机设备及应用 | |
WO2006084417A1 (fr) | Méthode de gestion de tampon basée sur une table de bitmap | |
CN112214427B (zh) | 缓存结构、工作量证明运算芯片电路及其数据调用方法 | |
CN107025184B (zh) | 一种数据管理方法及装置 | |
JPH10187635A (ja) | バッファ・スペース動的割り当てシステム | |
CN1426560A (zh) | 具有不同资源访问方案的系统集成代理程序 | |
CN110519180A (zh) | 网卡虚拟化队列调度方法及系统 | |
CN118133050B (zh) | 一种存储单元匹配方法和装置 | |
CN103220230A (zh) | 支持报文交叉存储的动态共享缓冲方法 | |
JP2023504441A (ja) | メモリファブリック物理レイヤインタフェースにわたるパケット転送を管理する装置及び方法 | |
CN106547707B (zh) | 阵列处理器中簇内存储并行访问局部优先交换电路 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |