CN105677583B - 一种缓存管理方法及装置 - Google Patents
一种缓存管理方法及装置 Download PDFInfo
- Publication number
- CN105677583B CN105677583B CN201511032088.6A CN201511032088A CN105677583B CN 105677583 B CN105677583 B CN 105677583B CN 201511032088 A CN201511032088 A CN 201511032088A CN 105677583 B CN105677583 B CN 105677583B
- Authority
- CN
- China
- Prior art keywords
- cache unit
- state table
- value
- pair
- cache
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/0893—Caches characterised by their organisation or structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Transfer Systems (AREA)
Abstract
本申请涉及芯片设计领域,尤其涉及一种缓存管理方法及装置,用以提高缓存效率,减少缓存资源的浪费。本申请提供的缓存管理方法包括:当接收到待处理命令后,确定所述待处理命令所需要的缓存单元数量;若所述待处理命令所需要的缓存单元数量为一个缓存单元,则基于所述缓存单元对第一状态表,查找仅有一个缓存单元空闲的一对缓存单元,并将该对缓存单元中的空闲的缓存单元分配给所述待处理命令;若所述待处理命令所需要的缓存单元数量为两个缓存单元,则基于所述缓存单元对第二状态表,在一个时钟周期内为该待处理命令查找并分配两个缓存单元均为空闲的一对缓存单元。
Description
技术领域
本申请涉及芯片设计领域,尤其涉及一种缓存管理方法及装置。
背景技术
专用的命令处理芯片用于处理系统预先定义的一种或多种命令,比如路由器专用于处理数据的转发等。随着数据处理芯片规模越来越大,片上存储器越来越多,为了减小存储器的规模,在一些不需要全线程缓存的地方采用共享缓存来减少存储器资源,因此对共享缓存的设计以及管理就显得尤为重要。为了便于缓存的分配和管理,共享缓存被划分为多个相同大小的缓存单元,可以根据命令处理的实际需要预先设置该缓存单元的大小。
芯片中负责进行命令处理的功能模块的命令处理流程一般为:当该模块接收到来自可编程处理器的待处理命令时,解析该命令以确认该命令是否需要缓存数据,如果需要缓存数据则在一个时钟周期内为该待处理命令分配一个缓存单元,将该待处理命令的线程标识(Identity,ID)等不参与数据处理的随路数据写入分配到的缓存单元中,并进行命令的处理,在命令处理过程中,随路数据将始终保存在缓存单元中,在命令处理完成后,读取该缓存单元中的随路数据,释放该缓存单元。
为了便于缓存管理,缓存单元的大小一般只有一种。随着芯片命令处理的多样化和复杂化,缓存单元大小设置不合理的问题变得突出。如果采用小粒度的缓存单元,当存在待处理命令所需缓存的数据量较大时,将需要多个时钟周期才能缓存完一次数据,缓存效率太低,而如果采用大粒度的缓存单元,当存在待处理命令所需缓存的数据量较小时,又会造成缓存资源的浪费。
可见,如何在提高缓存效率的同时,减少缓存资源的浪费,成为一个急需解决的问题。
发明内容
本申请实施例提供一种缓存管理方法及装置,用以提高缓存效率,减少缓存资源的浪费。
本申请实施例提供一种缓存管理方法,该缓存管理方法应用于共享缓存管理系统中,共享缓存管理系统中设有N个连续地址的缓存单元,并维护有缓存单元对第一状态表和缓存单元对第二状态表,其中,共享缓存管理系统将N个连续的缓存单元按顺序分对,缓存单元对第一状态表用于指示每对缓存单元中是否仅有一个缓存单元空闲,缓存单元对第二状态表用于指示每对缓存单元中的两个缓存单元是否均为空闲,该方法包括:当接收到待处理命令后,确定该待处理命令所需要的缓存单元数量;若该待处理命令所需要的缓存单元数量为一个缓存单元,则基于缓存单元对第一状态表,查找仅有一个缓存单元空闲的一对缓存单元,并将该对缓存单元中的空闲的缓存单元分配给待处理命令;若该待处理命令所需要的缓存单元数量为两个缓存单元,则基于缓存单元对第二状态表,在一个时钟周期内为该待处理命令查找并分配两个缓存单元均为空闲的一对缓存单元。
在上述步骤中,若待处理命令所需要的缓存单元数量为一个缓存单元,而基于缓存单元对第一状态表,没有查找到仅有一个缓存单元空闲的一对缓存单元,则该缓存管理方法还包括:基于缓存单元对第二状态表,查找两个缓存单元均为空闲的一对缓存单元,并将该对缓存单元中的任一个缓存单元分配给待处理命令。
共享缓存管理系统中还可以维护有奇数地址状态表、偶数地址状态表,其中,奇数地址状态表用于指示奇数地址的缓存单元的空闲状态,偶数地址状态表用于指示偶数地址的缓存单元的空闲状态。
作为一种实施方式,缓存单元对第二状态表为与AND表,该AND表为将每对缓存单元所对应的奇数地址状态表中的值和偶数地址状态表中的值进行AND运算后的值,在奇数地址状态表和偶数地址状态表中空闲状态指示位的值为1表示空闲,为0表示占用;在上述步骤中,基于缓存单元对第二状态表,查找两个缓存单元均为空闲的一对缓存单元,包括:在AND表中,查找值为1的AND指示位,将查找到的值为1的AND指示位所指示的一对缓存单元确定为查找到的一对缓存单元。
作为另外一种实施方式,缓存单元对第二状态表为或OR表,该OR表为将每对缓存单元所对应的奇数地址状态表中的值和偶数地址状态表中的值进行OR运算后的值,在奇数地址状态表和偶数地址状态表中空闲状态指示位的值为1表示占用,为0表示空闲;在上述步骤中,基于缓存单元对第二状态表,查找两个缓存单元均为空闲的一对缓存单元,包括:在OR表中,查找值为0的OR指示位,若查找到值为0的OR指示位,则将查找到的值为0的OR指示位所指示的一对缓存单元确定为查找到的所述一对缓存单元。
作为一种实施方式,缓存单元对第一状态表为异或XOR表,XOR表为将每对缓存单元所对应的奇数地址状态表中的值和偶数地址状态表中的值进行XOR运算后的值;基于缓存单元对第一状态表,查找仅有一个缓存单元空闲的一对缓存单元,包括:在XOR表中,查找值为1的XOR指示位,若查找到值为1的XOR指示位,则将查找到的值为1的XOR指示位所指示的一对缓存单元确定为查找到的所述一对缓存单元;上述步骤中,将一对缓存单元中的空闲的缓存单元分配给待处理命令,包括:根据查找到的值为1的XOR指示位所对应的奇数地址状态表中的值和偶数地址状态表中的值,确定该对缓存单元中的空闲的缓存单元,将确定的该空闲的缓存单元分配给所述待处理命令。
上述步骤中,若待处理命令所需要的缓存单元数量为两个缓存单元,则将一对缓存单元分配给所述待处理命令之后,还包括:在处理完该待处理命令后,在一个时钟周期内回收分配的所述一对缓存单元。
进一步地,在一个时钟周期内回收所述一对缓存单元之后,根据所述一对缓存单元所对应的缓存地址中除最后一位之外的其它位,确定所述一对缓存单元所对应的奇数地址状态表和偶数地址状态表中的指示位,更新确定的所述奇数地址状态表和偶数地址状态表中的指示位的值。
本申请实施例提供一种缓存管理装置,该装置应用于共享缓存管理系统中,包括确定模块、缓存单元单个分配模块和缓存单元成对分配模块,其中:
共享缓存管理系统中设有N个连续地址的缓存单元,所述共享缓存管理系统中维护有缓存单元对第一状态表和缓存单元对第二状态表,其中,共享缓存管理系统将N个连续的缓存单元按顺序分对,缓存单元对第一状态表用于指示每对缓存单元中是否仅有一个缓存单元空闲,缓存单元对第二状态表用于指示每对缓存单元中的两个缓存单元是否均为空闲;
确定模块,用于当接收到待处理命令后,确定所述待处理命令所需要的缓存单元数量,若所述待处理命令所需要的缓存单元数量为一个缓存单元,则指示所述缓存单元单个分配模块进行缓存分配,若所述待处理命令所需要的缓存单元数量为两个缓存单元,则指示所述缓存单元成对分配模块进行缓存分配;
缓存单元单个分配模块,用于基于所述缓存单元对第一状态表,查找仅有一个缓存单元空闲的一对缓存单元,并将该对缓存单元中的空闲的缓存单元分配给所述待处理命令;
缓存单元成对分配模块,用于基于所述缓存单元对第二状态表,在一个时钟周期内为该待处理命令查找并分配两个缓存单元均为空闲的一对缓存单元。
本申请中,若所述待处理命令所需要的缓存单元数量为一个缓存单元,所述缓存单元单个分配模块没有查找到仅有一个缓存单元空闲的一对缓存单元,则缓存单元单个分配模块还用于:通过所述缓存单元成对分配模块查找两个缓存单元均为空闲的一对缓存单元,并将该对缓存单元中的任一个缓存单元分配给所述待处理命令。
共享缓存管理系统中还可以维护有奇数地址状态表、偶数地址状态表,其中,奇数地址状态表用于指示奇数地址的缓存单元的空闲状态,偶数地址状态表用于指示偶数地址的缓存单元的空闲状态。
作为一种实施方式,缓存单元对第二状态表为与AND表,该AND表为将每对缓存单元所对应的奇数地址状态表中的值和偶数地址状态表中的值进行AND运算后的值,在奇数地址状态表和偶数地址状态表中空闲状态指示位的值为1表示空闲,为0表示占用;缓存单元成对分配模块具体用于:在所述AND表中,查找值为1的AND指示位,将查找到的值为1的AND指示位所指示的一对缓存单元确定为查找到的两个缓存单元均为空闲的一对缓存单元。
作为另外一种实施方式,缓存单元对第二状态表为或OR表,所述OR表为将每对缓存单元所对应的奇数地址状态表中的值和偶数地址状态表中的值进行OR运算后的值,在奇数地址状态表和偶数地址状态表中空闲状态指示位的值为1表示占用,为0表示空闲;所述缓存单元成对分配模块具体用于:在所述OR表中,查找值为0的OR指示位,若查找到值为0的OR指示位,则将查找到的值为0的OR指示位所指示的一对缓存单元确定为查找到的两个缓存单元均为空闲的一对缓存单元。
作为一种实施方式,缓存单元对第一状态表为异或XOR表,所述XOR表为将每对缓存单元所对应的奇数地址状态表中的值和偶数地址状态表中的值进行XOR运算后的值;缓存单元单个分配模块具体用于:在XOR表中,查找值为1的XOR指示位,若查找到值为1的XOR指示位,则将查找到的值为1的XOR指示位所指示的一对缓存单元确定为查找到的所述一对缓存单元;根据查找到的值为1的XOR指示位所对应的奇数地址状态表中的值和偶数地址状态表中的值,确定该对缓存单元中的空闲的缓存单元,将确定的该空闲的缓存单元分配给所述待处理命令。
本申请中,若待处理命令所需要的缓存单元数量为两个缓存单元,则该装置还包括:回收模块,用于在处理完所述待处理命令后,在一个时钟周期内回收为该待处理命令分配的一对缓存单元。
进一步地,回收模块还用于:在一个时钟周期内回收所述一对缓存单元之后,根据所述一对缓存单元所对应的缓存地址中除最后一位之外的其它位,确定所述一对缓存单元所对应的奇数地址状态表和偶数地址状态表中的指示位,更新确定的所述奇数地址状态表和偶数地址状态表中的指示位的值。
本申请实施例还提供芯片中进行命令处理的装置,包括输入处理单元、缓存管理单元、命令处理单元、输出处理单元和多线程共享的共享缓存,共享缓存一般为静态随机存储器SRAM。其中,
共享缓存中设有N个连续地址的缓存单元,缓存管理单元中维护有缓存单元对第一状态表和缓存单元对第二状态表,其中,缓存管理单元将所述N个连续的缓存单元按顺序分对,缓存单元对第一状态表用于指示每对缓存单元中是否仅有一个缓存单元空闲,缓存单元对第二状态表用于指示每对缓存单元中的两个缓存单元是否均为空闲;
输入处理单元,用于在接收到待处理命令后,解析该待处理命令,确定需要申请的缓存单元数量,向缓存管理单元发出缓存申请;根据缓存管理单元分配的缓存单元的地址,将待处理命令中不参与数据处理的随路数据(比如线程ID等)存入共享缓存中,并将分配的缓存单元的地址发送给命令处理单元。
缓存管理单元,用于若输入处理单元申请的缓存单元数量为一个缓存单元,则基于缓存单元对第一状态表,查找仅有一个缓存单元空闲的一对缓存单元,并将该对缓存单元中的空闲的缓存单元传输给输入处理单元;若待处理命令所需要的缓存单元数量为两个缓存单元,则基于缓存单元对第二状态表,为该待处理命令查找两个缓存单元均为空闲的一对缓存单元,并在一个时钟周期内传输给输入处理单元。在接收到输出处理单元传输的两个连续的缓存单元的缓存地址后,在一个时钟周期内对该缓存地址进行回收。
命令处理单元,用于对命令进行处理(比如加、减、乘、除等,在命令处理过程中,随路数据始终保持在缓存单元中),在处理完成后,将处理结果和缓存地址传输给输出处理单元。
输出处理单元,用于根据命令处理单元传输的缓存地址,读出共享缓存中的随路数据,将其与处理结果一起输出,同时将该缓存地址传输给缓存管理单元进行缓存回收。
本申请中,若所述待处理命令所需要的缓存单元数量为一个缓存单元,而缓存管理单元基于所述缓存单元对第一状态表,没有查找到仅有一个缓存单元空闲的一对缓存单元,则缓存管理单元还用于:基于所述缓存单元对第二状态表,查找两个缓存单元均为空闲的一对缓存单元,并将该对缓存单元中的任一个缓存单元分配给所述待处理命令。
缓存管理单元中还可以维护有奇数地址状态表、偶数地址状态表,其中,奇数地址状态表用于指示奇数地址的缓存单元的空闲状态,偶数地址状态表用于指示偶数地址的缓存单元的空闲状态。
作为一种实施方式,缓存单元对第二状态表为与AND表,所述AND表为将每对缓存单元所对应的奇数地址状态表中的值和偶数地址状态表中的值进行AND运算后的值,在奇数地址状态表和偶数地址状态表中空闲状态指示位的值为1表示空闲,为0表示占用;缓存管理单元具体用于根据以下步骤查找所述两个缓存单元均为空闲的一对缓存单元:在该AND表中,查找值为1的AND指示位,将查找到的值为1的AND指示位所指示的一对缓存单元确定为查找到的所述两个缓存单元均为空闲的一对缓存单元。
作为另外一种实施方式,缓存单元对第二状态表为或OR表,所述OR表为将每对缓存单元所对应的奇数地址状态表中的值和偶数地址状态表中的值进行OR运算后的值,在奇数地址状态表和偶数地址状态表中空闲状态指示位的值为1表示占用,为0表示空闲;缓存管理单元具体用于根据以下步骤查找所述两个缓存单元均为空闲的一对缓存单元:在OR表中,查找值为0的OR指示位,若查找到值为0的OR指示位,则将查找到的值为0的OR指示位所指示的一对缓存单元确定为查找到的所述两个缓存单元均为空闲的一对缓存单元。
作为一种实施方式,缓存单元对第一状态表为异或XOR表,所述XOR表为将每对缓存单元所对应的奇数地址状态表中的值和偶数地址状态表中的值进行XOR运算后的值;缓存管理单元具体用于:在所述XOR表中,查找值为1的XOR指示位,若查找到值为1的XOR指示位,则将查找到的值为1的XOR指示位所指示的一对缓存单元确定为查找到的所述一对缓存单元;根据查找到的值为1的XOR指示位所对应的奇数地址状态表中的值和偶数地址状态表中的值,确定该对缓存单元中的空闲的缓存单元,将确定的该空闲的缓存单元分配给所述待处理命令。
本申请中,若待处理命令所需要的缓存单元数量为两个缓存单元,则在命令处理单元处理完所述待处理命令后,在一个时钟周期内回收所述一对缓存单元。
进一步地,缓存管理单元还用于:在一个时钟周期内回收所述一对缓存单元之后,根据所述一对缓存单元所对应的缓存地址中除最后一位之外的其它位,确定所述一对缓存单元所对应的奇数地址状态表和偶数地址状态表中的指示位,更新确定的所述奇数地址状态表和偶数地址状态表中的指示位的值。
本申请采用缓存单元对第一状态表指示每对缓存单元(每对缓存单元地址连续)中是否仅有一个缓存单元空闲,采用缓存单元对第二状态表指示每对缓存单元中的两个缓存单元是否均为空闲。若待处理命令所需要的缓存单元数量为一个缓存单元,则基于缓存单元对第一状态表,查找仅有一个缓存单元空闲的一对缓存单元,若待处理命令所需要的缓存单元数量为两个缓存单元,则基于缓存单元对第二状态表,查找两个缓存单元均为空闲的一对缓存单元,这样可以实现为该待处理命令在一个时钟周期内分配两个连续的缓存单元。针对占用数据位宽较大的待处理命令,无需采用多个时钟周期进行缓存分配,提高了缓存分配效率。另一方面,针对占用数据位宽较小的待处理命令,可以只为其分配一个缓存单元,减少了缓存资源的浪费。
附图说明
图1为本申请的even bitmap和odd bitmap的示意图;
图2为本申请实施例一提供的缓存管理方法流程图;
图3为本申请实施例二提供的缓存管理方法流程图;
图4(a)为实施例二分配单个空闲缓存单元的示意图之一;
图4(b)为实施例二分配单个空闲缓存单元的示意图之二;
图5为实施例二分配两个连续的空闲缓存单元的示意图;
图6为实施例二回收单个空闲缓存单元的示意图;
图7为实施例二回收两个连续的缓存单元的示意图;
图8为本申请实施例三提供的缓存管理方法流程图;
图9(a)为实施例三分配单个空闲缓存单元的示意图之一;
图9(b)为实施例三分配单个空闲缓存单元的示意图之二;
图10为实施例三分配两个连续的空闲缓存单元的示意图;
图11为实施例三回收单个空闲缓存单元的示意图;
图12为实施例二回收两个连续的缓存单元的示意图;
图13为本申请实施例提供的缓存管理装置结构示意图;
图14为本申请实施例提供的芯片中命令处理装置的设计原理图。
具体实施方式
本申请采用缓存单元对第一状态表指示每对缓存单元(每对缓存单元地址连续)中是否仅有一个缓存单元空闲,采用缓存单元对第二状态表指示每对缓存单元中的两个缓存单元是否均为空闲。若待处理命令所需要的缓存单元数量为一个缓存单元,则基于缓存单元对第一状态表,查找并分配单个空闲的缓存单元,若待处理命令所需要的缓存单元数量为两个缓存单元,则基于缓存单元对第二状态表,查找并分配两个连续的空闲缓存单元。采用本申请方案,一方面,针对占用数据位宽较大的待处理命令,无需采用多个时钟周期进行缓存分配,提高了缓存分配效率。另一方面,针对占用数据位宽较小的待处理命令,可以只为其分配一个缓存单元,减少了缓存资源的浪费。
下面结合说明书附图对本申请作进一步详细描述。
本申请实施例应用于共享缓存管理系统中,该共享缓存管理系统可以用于对芯片中多线程共享缓存的管理,该芯片用于处理至少一种预定义的命令。本申请实施例的共享缓存管理系统中设有N个连续地址的缓存单元,共享缓存管理系统中维护有缓存单元对第一状态表和缓存单元对第二状态表,其中,共享缓存管理系统将N个连续的缓存单元按顺序分对,缓存单元对第一状态表用于指示每对缓存单元中是否仅有一个缓存单元空闲,缓存单元对第二状态表用于指示每对缓存单元中的两个缓存单元是否均为空闲。另外,共享缓存管理系统中还可以维护有奇数地址状态表和偶数地址状态表,采用奇数地址状态表指示奇数地址的缓存单元的空闲状态,采用偶数地址状态表指示偶数地址的缓存单元的空闲状态,基于该奇数地址状态表和偶数地址状态表可以得到所述缓存单元对第一状态表和缓存单元对第二状态表。
如图1所示,该实施例中,将共享缓存中的缓存单元根据其逻辑地址(如图1所示,2N个缓存单元所对应的逻辑地址分别为0~2N-1)划分为奇数(odd)地址缓存单元(1、3、2N-3、2N-1)和偶数(even)地址缓存单元(0、2、2N-4、2N-2,在本申请实施例中,0为偶数),分别采用奇数地址状态表和偶数地址状态表(该奇数地址状态表和偶数地址状态表具体可以体现为bitmap的形式,以下简称为奇数bitmap和偶数bitmap)来指示奇数地址缓存单元和偶数地址缓存单元的空闲状态。在具体实施中,可以以空闲状态指示位的值为1表示空闲、为0表示占用,也可以以空闲状态指示位的值为0表示空闲,为1表示占用。
以空闲状态指示位的值为1表示空闲、为0表示占用为例,如下表一所示,基于奇数bitmap和偶数bitmap,可以得到缓存单元对第一状态表和缓存单元对第二状态表,缓存单元对第一状态表指示每对缓存单元中是否仅有一个缓存单元空闲(1表示是,0表示否),缓存单元对第二状态表指示每对缓存单元中的两个缓存单元是否均为空闲(1表示是,0表示否)。在具体实施中,缓存单元对第一状态表具体可以是由奇数bitmap和偶数bitmap通过异或(XOR)运算得到的,缓存单元对第二状态表具体可以是由奇数bitmap和偶数bitmap通过与(AND)运算得到的。
Even bitmap | Odd bitmap | XOR | AND | 缓存单元占用状态 |
0 | 0 | 0 | 0 | 成对占用 |
0 | 1 | 1 | 0 | Even占用,Odd空闲 |
1 | 0 | 1 | 0 | Even空闲,Odd占用 |
1 | 1 | 0 | 1 | 成对空闲 |
表一
如表一所示,如果XOR指示位的值为1,则表示其对应的奇数bitmap中的空闲状态指示位的值和偶数bitmap中的空闲状态指示位的值中有一个为1,另一个为0,也就是说,其对应的奇数地址缓存单元和偶数地址缓存单元中有一个为空闲状态,另一个为被占用状态;相应地,XOR指示位的值为0时表示其对应的奇数bitmap中的空闲状态指示位的值和偶数bitmap中的空闲状态指示位的值都为0或都为1,也就是说,其对应的奇数地址缓存单元和偶数地址缓存单元都为空闲状态或者都为被占用状态。
AND指示位的值为0时,表示其对应的奇数bitmap中的空闲状态指示位的值和偶数bitmap中的空闲状态指示位的值中至少有一个为0,如果0表示被占用,也就是说奇数地址缓存单元和偶数地址缓存单元中有至少一个为被占用状态。相应的,AND指示位的值为1时表示其对应的奇数bitmap中的空闲状态指示位的值和偶数bitmap中的空闲状态指示位的值都为1,如果1表示空闲,也就是说奇数地址缓存单元和偶数地址缓存单元都为空闲状态。
可见,当以空闲状态指示位的值为1表示空闲、为0表示占用时,可以采用XOR指示信号来指示连续2个缓存单元中有单个空闲缓存单元的存在,采用AND指示信号来指示连续的空闲缓存单元的存在。
相应地,如果以空闲状态指示位的值为0表示空闲、为1表示占用,仍可以采用XOR指示信号来指示连续两个缓存单元中有单个空闲缓存单元的存在,不同的是,需要采用或(OR)指示信号来指示连续空闲缓存单元的存在。如下表二所示,当OR指示位的值为0时表示其对应的奇数bitmap中的空闲状态指示位的值和偶数bitmap中的空闲状态指示位的值都为0,也就是表示其对应的奇数地址缓存单元和偶数地址缓存单元都为空闲状态。当OR指示位的值为1时表示其对应的奇数bitmap中的空闲状态指示位的值和偶数bitmap中的空闲状态指示位的值至少有一个为1,也就是表示其对应的奇数地址缓存单元和偶数地址缓存单元至少有一个为被占用状态。
Even bitmap | Odd bitmap | XOR | OR | 缓存单元占用状态 |
1 | 1 | 0 | 1 | 成对占用 |
1 | 0 | 1 | 1 | Even占用,Odd空闲 |
0 | 1 | 1 | 1 | Even空闲,Odd占用 |
0 | 0 | 0 | 0 | 成对空闲 |
表二
如图2所示,结合上述内容,本申请实施例一提供一种缓存管理方法,该方法包括以下步骤:
S201:当接收到待处理命令后,确定待处理命令所需要的缓存单元数量。
该步骤中,在接收到待处理的命令后,根据该命令所需要缓存数据的大小以及每个缓存单元的大小,确定该命令所需要的缓存单元数量。这里,可以设置每个缓存单元的大小大于芯片中至少一种预定义的命令对于共享缓存的最低需求大小,小于该至少一种预定义的命令对于共享缓存的最高需求大小。
S202:若待处理命令所需要的缓存单元数量为一个缓存单元,则基于缓存单元对第一状态表,查找仅有一个缓存单元空闲的一对缓存单元,若查找到,则进入S203,否则,进入S204。
这里,针对申请一个缓存单元的待处理命令,优先查找共享缓存中存在的零散的单个空闲缓存单元,以便为申请两个连续缓存单元的待处理命令预留较多的可选资源。本申请实施例中,由于缓存单元对第一状态表中指示了每对缓存单元中是否仅有一个缓存单元空闲,因此,通过查找该表,可以快速判断是否存在仅有一个缓存单元空闲的一对缓存单元。
S203:将查找到的一对缓存单元中的空闲的缓存单元分配给所述待处理命令。
该步骤中,在查找到仅有一个缓存单元空闲的一对缓存单元后,可以根据该对缓存单元所对应的奇数地址状态表和偶数地址状态表中的值,确定该对缓存单元中的空闲的缓存单元,将确定的该空闲的缓存单元分配给待处理命令。
S204:基于缓存单元对第二状态表,查找两个缓存单元均为空闲的一对缓存单元,并将该对缓存单元中的任一个缓存单元分配给待处理命令。
这里,若不存在单个空闲缓存单元,则只能从两个连续的空闲缓存单元中选择一个空闲缓存单元分配给待处理命令。由于缓存单元对第二状态表中指示了每对缓存单元中的两个缓存单元是否均为空闲,因此,通过查找该表,可以快速查找到两个缓存单元均为空闲的一对缓存单元。
S205:若待处理命令所需要的缓存单元数量为两个缓存单元,则基于缓存单元对第二状态表,在一个时钟周期(比如1ns)内为该待处理命令查找并分配两个缓存单元均为空闲的一对缓存单元。
该步骤中,若待处理命令所需要的缓存单元数量为两个缓存单元,则基于缓存单元对第二状态表,在一个时钟周期内为该待处理命令查找并一次性分配两个空闲的缓存单元,以提高缓存分配效率,另外,分配的两个缓存单元是连续的,这样可以避免因缓存地址不连续而浪费寄存器资源及逻辑资源,因为缓存地址是和命令一起传输的,如果缓存地址不连续就需要传输多个缓存地址,浪费寄存器资源,同时,如果缓存地址不连续,在读写数据时,需要多套读写逻辑,浪费了逻辑资源。
S206:将待处理命令中不参与数据处理的随路数据存入分配的缓存单元中,并进行命令处理。
S207:在处理完所述待处理命令后,在一个时钟周期内回收该待处理命令所占用的单个缓存单元或一对缓存单元。
这里,在进行缓存回收时,在一个时钟周期内完成对待处理命令所占用的单个缓存单元或两个连续的缓存单元的回收。
下面,通过实施例二和实施例三对本申请缓存管理的方法作进一步介绍。实施例二以空闲状态指示位的值为1表示空闲、为0表示占用为例进行介绍,该实施例二中采用异或(XOR)表及与(AND)表来进行缓存单元的查找。实施例三以空闲状态指示位的值为0表示空闲、为1表示占用为例进行介绍,该实施例二中采用异或(XOR)表及或(OR)表来进行缓存单元的查找。
实施例二
如图3所示,本发明实施例二提供一种缓存管理方法,该实施例中,空闲状态指示位的值为1表示空闲、为0表示占用,包括以下步骤:
S301:当接收到待处理命令后,确定待处理命令所需要的缓存单元数量。
S302:若待处理命令所需要的缓存单元数量为一个缓存单元,则在XOR表中,查找值为1的XOR指示位,若查找到,则进入S303,否则,进入S304。
S303:根据查找到的值为1的XOR指示位所对应的奇数地址状态表中的值和偶数地址状态表中的值,确定该对缓存单元中的空闲的缓存单元,将确定的该空闲的缓存单元分配给所述待处理命令。
如图4(a)所示,将从共享缓存的起始地址起第三对缓存单元中的偶数地址缓存单元分配给待处理命令,并更新对应的XOR指示位的值为0,对应的AND指示位的值仍为0。
S304:在AND表中,查找值为1的AND指示位,将查找到值为1的AND指示位所指示的一对缓存单元中的任一个缓存单元分配给待处理命令。
如图4(b)所示,将从共享缓存的起始地址起第二对空闲缓存单元中的偶数地址缓存单元分配给待处理命令,并更新对应的XOR指示位的值为1,更新对应的AND指示位的值为0。
S305:若待处理命令所需要的缓存单元数量为两个缓存单元,则在AND表中,查找值为1的AND指示位,将查找到的值为1的AND指示位所指示的一对缓存单元在一个时钟周期内分配给待处理命令。
如图5所示,为待处理命令直接分配从共享缓存的起始地址起第三对奇偶缓存单元所指示的两个连续的空闲缓存单元。并更新对应的AND指示位的值为0,对应的XOR指示位的值仍为0。
S306:将待处理命令中不参与数据处理的随路数据存入分配的缓存单元中,并进行命令处理。
S307:在处理完所述待处理命令后,在一个时钟周期内回收该待处理命令所占用的单个缓存单元或一对缓存单元,并更新回收的缓存单元的空闲状态指示位的值,以及对应的XOR指示位和AND指示位的值。
这里,若之前为待处理命令分配的缓存单元为单个缓存单元,则在回收时回收这一个缓存单元,若之前为待处理命令分配的缓存单元为两个连续的缓存单元,则在回收时,对这两个连续的缓存单元进行一次性回收,并将bitmap中对应的回收缓存单元的空闲状态指示位的值置为1。
如图6所示,回收共享缓存的第一个缓存单元,将bitmap中对应该缓存单元的空闲状态指示位的值置为1,并将对应的XOR指示位的值置为1,对应的AND指示位的值不变。
如图7所示,回收共享缓存的第三对缓存单元,将bitmap中对应该对缓存单元的空闲状态指示位的值置为1,并将对应的AND指示位的值置为1,对应的XOR指示位的值不变。
在具体实施过程中,当回收单个缓存单元时,需要查看该缓存单元地址的全部位数,才能确认该缓存单元地址所对应的bitmap中的空闲状态指示位,而在回收两个连续的缓存单元,也即一对缓存单元时,由于这一对缓存单元的缓存地址的最后一位一个是0,一个是1,因此无需关注这最后一位。也即,在具体实施中,根据这一对缓存单元所对应的缓存地址中除最后一位之外的其它位,确定这一对缓存单元所对应的奇数地址状态表和偶数地址状态表中的指示位,更新确定的奇数地址状态表和偶数地址状态表中的指示位的值,并更新这一对缓存单元所对应的AND指示位的值。
上述实施例二是以空闲状态指示位的值为1表示空闲、为0表示占用,采用XOR指示信号来指示单个空闲缓存单元的存在,采用AND指示信号来指示两个连续空闲缓存单元的存在为例进行的介绍。作为另一种实施方式,还可以以空闲状态指示位的值为0表示空闲、为1表示占用,采用XOR指示信号来指示单个空闲缓存单元的存在,采用OR指示信号来指示两个连续空闲缓存单元的存在,详见实施例三的描述。
实施例三
如图8所示,本发明实施例三提供一种缓存管理方法,该实施例中,空闲状态指示位的值为0表示空闲、为1表示占用,包括以下步骤:
S801:当接收到待处理命令后,确定待处理命令所需要的缓存单元数量。
S802:若待处理命令所需要的缓存单元数量为一个缓存单元,则在XOR表中,查找值为1的XOR指示位,若查找到,则进入S803,否则,进入S804。
S803:根据查找到的值为1的XOR指示位所对应的奇数地址状态表中的值和偶数地址状态表中的值,确定该对缓存单元中的空闲的缓存单元,将确定的该空闲的缓存单元分配给所述待处理命令。
如图9(a)所示,将从共享缓存的起始地址起第三对缓存单元中的偶数地址缓存单元分配给待处理命令,并更新对应的XOR指示位的值为0,对应的OR指示位的值仍为1。
S804:在OR表中,查找值为0的OR指示位,将查找到值为0的OR指示位所指示的一对缓存单元中的任一个缓存单元分配给待处理命令。
如图9(b)所示,将从共享缓存的起始地址起第二对空闲缓存单元中的偶数地址缓存单元分配给待处理命令,并更新对应的XOR指示位的值为1,更新对应的OR指示位的值为1。
S805:若待处理命令所需要的缓存单元数量为两个缓存单元,则在OR表中,查找值为0的OR指示位,将查找到的值为0的OR指示位所指示的一对缓存单元在一个时钟周期内分配给待处理命令。
如图10所示,为所述待处理命令直接分配从共享缓存的起始地址起第三对奇偶缓存单元所指示的两个连续的空闲缓存单元。并更新对应的OR指示位的值为1,对应的XOR指示位的值仍为0。
S806:将待处理命令中不参与数据处理的随路数据存入分配的缓存单元中,并进行命令处理。
S807:在处理完所述待处理命令后,在一个时钟周期内回收该待处理命令所占用的单个缓存单元或一对缓存单元,并更新回收的缓存单元的空闲状态指示位的值,以及对应的XOR指示位和OR指示位的值。
这里,若之前为待处理命令分配的缓存单元为单个缓存单元,则在回收时回收这一个缓存单元,若之前为待处理命令分配的缓存单元为两个连续的缓存单元,则在回收时,对这两个连续的缓存单元进行一次性回收,并将bitmap中对应的回收缓存单元的空闲状态指示位的值置为0。
如图11所示,回收共享缓存的第一个缓存单元,将bitmap中对应该缓存单元的空闲状态指示位的值置为0,并将对应的XOR指示位的值置为1,对应的OR指示位的值不变。
如图12所示,回收共享缓存的第三对缓存单元,将bitmap中对应该对缓存单元的空闲状态指示位的值置为0,并将对应的OR指示位的值置为0,对应的XOR指示位的值仍为0。
基于同一发明构思,本申请实施例中还提供了一种与缓存管理方法对应的缓存管理装置,由于该装置解决问题的原理与本申请实施例的缓存管理方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
如图13所示,本申请实施例提供的缓存管理装置应用于共享缓存管理系统中,包括确定模块131、缓存单元单个分配模块132和缓存单元成对分配模块133,其中:
所述共享缓存管理系统中设有N个连续地址的缓存单元,所述共享缓存管理系统中维护有缓存单元对第一状态表和缓存单元对第二状态表,其中,所述共享缓存管理系统将所述N个连续的缓存单元按顺序分对,缓存单元对第一状态表用于指示每对缓存单元中是否仅有一个缓存单元空闲,缓存单元对第二状态表用于指示每对缓存单元中的两个缓存单元是否均为空闲;
所述确定模块131,用于当接收到待处理命令后,确定所述待处理命令所需要的缓存单元数量,若所述待处理命令所需要的缓存单元数量为一个缓存单元,则指示所述缓存单元单个分配模块132进行缓存分配,若所述待处理命令所需要的缓存单元数量为两个缓存单元,则指示所述缓存单元成对分配模块83进行缓存分配;
所述缓存单元单个分配模块132,用于基于所述缓存单元对第一状态表,查找仅有一个缓存单元空闲的一对缓存单元,并将该对缓存单元中的空闲的缓存单元分配给所述待处理命令;
所述缓存单元成对分配模块133,用于基于所述缓存单元对第二状态表,在一个时钟周期内为该待处理命令查找并分配两个缓存单元均为空闲的一对缓存单元。
共享缓存管理系统中还可以维护有奇数地址状态表、偶数地址状态表,其中,奇数地址状态表用于指示奇数地址的缓存单元的空闲状态,偶数地址状态表用于指示偶数地址的缓存单元的空闲状态。
可选地,缓存单元单个分配模块132还用于:
若待处理命令所需要的缓存单元数量为一个缓存单元,所述缓存单元单个分配模块没有查找到仅有一个缓存单元空闲的一对缓存单元,则通过所述缓存单元成对分配模块查找两个缓存单元均为空闲的一对缓存单元,并将该对缓存单元中的任一个缓存单元分配给所述待处理命令。
可选地,缓存单元对第二状态表为与AND表,该AND表为将每对缓存单元所对应的奇数地址状态表中的值和偶数地址状态表中的值进行AND运算后的值,在奇数地址状态表和偶数地址状态表中空闲状态指示位的值为1表示空闲,为0表示占用;
缓存单元成对分配模块133具体用于:
在所述AND表中,查找值为1的AND指示位,将查找到的值为1的AND指示位所指示的一对缓存单元确定为查找到的所述一对缓存单元。
可选地,缓存单元对第二状态表为或OR表,所述OR表为将每对缓存单元所对应的奇数地址状态表中的值和偶数地址状态表中的值进行OR运算后的值,在奇数地址状态表和偶数地址状态表中空闲状态指示位的值为1表示占用,为0表示空闲;
缓存单元成对分配模块133具体用于:
在所述OR表中,查找值为0的OR指示位,若查找到值为0的OR指示位,则将查找到的值为0的OR指示位所指示的一对缓存单元确定为查找到的所述一对缓存单元。
可选地,所述缓存单元对第一状态表为异或XOR表,所述XOR表为将每对缓存单元所对应的奇数地址状态表中的值和偶数地址状态表中的值进行XOR运算后的值;
缓存单元单个分配模块132具体用于:
在所述XOR表中,查找值为1的XOR指示位,若查找到值为1的XOR指示位,则将查找到的值为1的XOR指示位所指示的一对缓存单元确定为查找到的所述一对缓存单元;根据查找到的值为1的XOR指示位所对应的奇数地址状态表中的值和偶数地址状态表中的值,确定该对缓存单元中的空闲的缓存单元,将确定的该空闲的缓存单元分配给所述待处理命令。
可选地,若所述待处理命令所需要的缓存单元数量为两个缓存单元,则所述装置还包括:
回收模块134,用于在处理完所述待处理命令后,在一个时钟周期内回收为该待处理命令分配的一对缓存单元。
可选地,回收模块134还用于:在一个时钟周期内回收所述一对缓存单元之后,根据所述一对缓存单元所对应的缓存地址中除最后一位之外的其它位,确定所述一对缓存单元所对应的奇数地址状态表和偶数地址状态表中的指示位,更新确定的所述奇数地址状态表和偶数地址状态表中的指示位的值。
如图14所示,为本申请实施例提供的芯片中进行命令处理的装置结构图,包括输入处理单元141、缓存管理单元142、命令处理单元143、输出处理单元144和多线程共享的共享缓存145,共享缓存145一般为静态随机存储器(Static Random Access Memory,SRAM)。其中,
共享缓存145中设有N个连续地址的缓存单元,缓存管理单元142中维护有缓存单元对第一状态表和缓存单元对第二状态表,其中,缓存管理单元142将所述N个连续的缓存单元按顺序分对,缓存单元对第一状态表用于指示每对缓存单元中是否仅有一个缓存单元空闲,缓存单元对第二状态表用于指示每对缓存单元中的两个缓存单元是否均为空闲;
输入处理单元141,用于在接收到待处理命令后,解析该待处理命令,确定需要申请的缓存单元数量,向缓存管理单元142发出缓存申请;根据缓存管理单元142分配的缓存单元的地址,将待处理命令中不参与数据处理的随路数据(比如线程ID等)存入共享缓存145中,并将分配的缓存单元的地址发送给命令处理单元143。
缓存管理单元142,用于若输入处理单元141申请的缓存单元数量为一个缓存单元,则基于缓存单元对第一状态表,查找仅有一个缓存单元空闲的一对缓存单元,并将该对缓存单元中的空闲的缓存单元传输给输入处理单元141;若待处理命令所需要的缓存单元数量为两个缓存单元,则基于缓存单元对第二状态表,为该待处理命令查找两个缓存单元均为空闲的一对缓存单元,并在一个时钟周期内传输给输入处理单元141。在接收到输出处理单元144传输的两个连续的缓存单元的缓存地址后,在一个时钟周期内对该缓存地址进行回收。
命令处理单元143,用于对命令进行处理(比如加、减、乘、除等,在命令处理过程中,随路数据始终保持在缓存单元中),在处理完成后,将处理结果和缓存地址传输给输出处理单元144。
输出处理单元144,用于根据命令处理单元143传输的缓存地址,读出共享缓存145中的随路数据,将其与处理结果一起输出,同时将该缓存地址传输给缓存管理单元142进行缓存回收。
可选地,若待处理命令所需要的缓存单元数量为一个缓存单元,而缓存管理单元142基于缓存单元对第一状态表,没有查找到仅有一个缓存单元空闲的一对缓存单元,则缓存管理单元142还用于:基于缓存单元对第二状态表,查找两个缓存单元均为空闲的一对缓存单元,并将该对缓存单元中的任一个缓存单元分配给待处理命令。
缓存管理单元中还可以维护有奇数地址状态表、偶数地址状态表,其中,奇数地址状态表用于指示奇数地址的缓存单元的空闲状态,偶数地址状态表用于指示偶数地址的缓存单元的空闲状态。
可选地,缓存单元对第二状态表为与AND表,该AND表为将每对缓存单元所对应的奇数地址状态表中的值和偶数地址状态表中的值进行AND运算后的值,在奇数地址状态表和偶数地址状态表中空闲状态指示位的值为1表示空闲,为0表示占用;缓存管理单元142具体用于根据以下步骤查找所述两个缓存单元均为空闲的一对缓存单元:在该AND表中,查找值为1的AND指示位,将查找到的值为1的AND指示位所指示的一对缓存单元确定为查找到的所述两个缓存单元均为空闲的一对缓存单元。
可选地,缓存单元对第二状态表为或OR表,该OR表为将每对缓存单元所对应的奇数地址状态表中的值和偶数地址状态表中的值进行OR运算后的值,在奇数地址状态表和偶数地址状态表中空闲状态指示位的值为1表示占用,为0表示空闲;缓存管理单元142具体用于根据以下步骤查找所述两个缓存单元均为空闲的一对缓存单元:在OR表中,查找值为0的OR指示位,若查找到值为0的OR指示位,则将查找到的值为0的OR指示位所指示的一对缓存单元确定为查找到的所述两个缓存单元均为空闲的一对缓存单元。
可选地,缓存单元对第一状态表为异或XOR表,该XOR表为将每对缓存单元所对应的奇数地址状态表中的值和偶数地址状态表中的值进行XOR运算后的值;缓存管理单元142具体用于:在XOR表中,查找值为1的XOR指示位,若查找到值为1的XOR指示位,则将查找到的值为1的XOR指示位所指示的一对缓存单元确定为查找到的所述仅有一个缓存单元空闲的一对缓存单元;根据查找到的值为1的XOR指示位所对应的奇数地址状态表中的值和偶数地址状态表中的值,确定该对缓存单元中的空闲的缓存单元,将确定的该空闲的缓存单元分配给待处理命令。
可选地,若所述待处理命令所需要的缓存单元数量为两个缓存单元,则在命令处理单元143处理完待处理命令后,在一个时钟周期内回收分配的一对缓存单元。
可选地,缓存管理单元142还用于:在一个时钟周期内回收一对缓存单元之后,根据这一对缓存单元所对应的缓存地址中除最后一位之外的其它位,确定这一对缓存单元所对应的奇数地址状态表和偶数地址状态表中的指示位,更新确定的奇数地址状态表和偶数地址状态表中的指示位的值。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种缓存管理方法,其特征在于,应用于共享缓存管理系统中,所述共享缓存管理系统中设有N个连续地址的缓存单元,所述共享缓存管理系统中维护有缓存单元对第一状态表和缓存单元对第二状态表,其中,所述共享缓存管理系统将所述N个连续地址的缓存单元按顺序分对,缓存单元对第一状态表用于指示每对缓存单元中是否仅有一个缓存单元空闲,缓存单元对第二状态表用于指示每对缓存单元中的两个缓存单元是否均为空闲,所述方法包括:
当接收到待处理命令后,确定所述待处理命令所需要的缓存单元数量;
若所述待处理命令所需要的缓存单元数量为一个缓存单元,则基于所述缓存单元对第一状态表,查找仅有一个缓存单元空闲的一对缓存单元,并将该对缓存单元中的空闲的缓存单元分配给所述待处理命令;
若所述待处理命令所需要的缓存单元数量为两个缓存单元,则基于所述缓存单元对第二状态表,在一个时钟周期内为该待处理命令查找并分配两个缓存单元均为空闲的一对缓存单元。
2.如权利要求1所述的方法,其特征在于,若所述待处理命令所需要的缓存单元数量为一个缓存单元,而基于所述缓存单元对第一状态表,没有查找到仅有一个缓存单元空闲的一对缓存单元,则所述方法还包括:
基于所述缓存单元对第二状态表,查找两个缓存单元均为空闲的一对缓存单元,并将该对缓存单元中的任一个缓存单元分配给所述待处理命令。
3.如权利要求1所述的方法,其特征在于,所述共享缓存管理系统中还维护有奇数地址状态表、偶数地址状态表,其中,所述奇数地址状态表用于指示奇数地址的缓存单元的空闲状态,所述偶数地址状态表用于指示偶数地址的缓存单元的空闲状态;
所述缓存单元对第一状态表为异或XOR表,所述XOR表为将每对缓存单元所对应的奇数地址状态表中的值和偶数地址状态表中的值进行XOR运算后的值;基于所述缓存单元对第一状态表,查找仅有一个缓存单元空闲的一对缓存单元,包括:在所述XOR表中,查找值为1的XOR指示位,若查找到值为1的XOR指示位,则将查找到的值为1的XOR指示位所指示的一对缓存单元确定为查找到的所述仅有一个缓存单元空闲的一对缓存单元;
将查找到的所述一对缓存单元中的空闲的缓存单元分配给所述待处理命令,包括:
根据查找到的值为1的XOR指示位所对应的奇数地址状态表中的值和偶数地址状态表中的值,确定该对缓存单元中的空闲的缓存单元,将确定的该空闲的缓存单元分配给所述待处理命令;
所述缓存单元对第二状态表为与AND表,所述AND表为将每对缓存单元所对应的奇数地址状态表中的值和偶数地址状态表中的值进行AND运算后的值,在奇数地址状态表和偶数地址状态表中空闲状态指示位的值为1表示空闲,为0表示占用;基于所述缓存单元对第二状态表,查找两个缓存单元均为空闲的一对缓存单元,包括:在所述AND表中,查找值为1的AND指示位,将查找到的值为1的AND指示位所指示的一对缓存单元确定为查找到的所述一对缓存单元;或者,
所述缓存单元对第二状态表为或OR表,所述OR表为将每对缓存单元所对应的奇数地址状态表中的值和偶数地址状态表中的值进行OR运算后的值,在奇数地址状态表和偶数地址状态表中空闲状态指示位的值为1表示占用,为0表示空闲;基于所述缓存单元对第二状态表,查找两个缓存单元均为空闲的一对缓存单元,包括:在所述OR表中,查找值为0的OR指示位,若查找到值为0的OR指示位,则将查找到的值为0的OR指示位所指示的一对缓存单元确定为查找到的所述一对缓存单元。
4.如权利要求1~3任一所述的方法,其特征在于,若所述待处理命令所需要的缓存单元数量为两个缓存单元,则将一对缓存单元分配给所述待处理命令之后,还包括:
在处理完所述待处理命令后,在一个时钟周期内回收所述一对缓存单元。
5.如权利要求4所述的方法,其特征在于,在一个时钟周期内回收所述一对缓存单元之后,还包括:
根据所述一对缓存单元所对应的缓存地址中除最后一位之外的其它位,确定所述一对缓存单元所对应的奇数地址状态表和偶数地址状态表中的指示位,更新确定的所述奇数地址状态表和偶数地址状态表中的指示位的值。
6.一种缓存管理装置,其特征在于,所述装置应用于共享缓存管理系统中,包括确定模块、缓存单元单个分配模块和缓存单元成对分配模块,其中:
所述共享缓存管理系统中设有N个连续地址的缓存单元,所述共享缓存管理系统中维护有缓存单元对第一状态表和缓存单元对第二状态表,其中,所述共享缓存管理系统将所述N个连续地址的缓存单元按顺序分对,缓存单元对第一状态表用于指示每对缓存单元中是否仅有一个缓存单元空闲,缓存单元对第二状态表用于指示每对缓存单元中的两个缓存单元是否均为空闲;
所述确定模块,用于当接收到待处理命令后,确定所述待处理命令所需要的缓存单元数量,若所述待处理命令所需要的缓存单元数量为一个缓存单元,则指示所述缓存单元单个分配模块进行缓存分配,若所述待处理命令所需要的缓存单元数量为两个缓存单元,则指示所述缓存单元成对分配模块进行缓存分配;
所述缓存单元单个分配模块,用于基于所述缓存单元对第一状态表,查找仅有一个缓存单元空闲的一对缓存单元,并将该对缓存单元中的空闲的缓存单元分配给所述待处理命令;
所述缓存单元成对分配模块,用于基于所述缓存单元对第二状态表,在一个时钟周期内为该待处理命令查找并分配两个缓存单元均为空闲的一对缓存单元。
7.如权利要求6所述的装置,其特征在于,所述缓存单元单个分配模块还用于:
若所述待处理命令所需要的缓存单元数量为一个缓存单元,所述缓存单元单个分配模块没有查找到仅有一个缓存单元空闲的一对缓存单元,则通过所述缓存单元成对分配模块查找两个缓存单元均为空闲的一对缓存单元,并将该对缓存单元中的任一个缓存单元分配给所述待处理命令。
8.如权利要求6所述的装置,其特征在于,所述共享缓存管理系统中还维护有奇数地址状态表、偶数地址状态表,其中,所述奇数地址状态表用于指示奇数地址的缓存单元的空闲状态,所述偶数地址状态表用于指示偶数地址的缓存单元的空闲状态;
所述缓存单元对第一状态表为异或XOR表,所述XOR表为将每对缓存单元所对应的奇数地址状态表中的值和偶数地址状态表中的值进行XOR运算后的值;所述缓存单元单个分配模块具体用于:在所述XOR表中,查找值为1的XOR指示位,若查找到值为1的XOR指示位,则将查找到的值为1的XOR指示位所指示的一对缓存单元确定为查找到的所述仅有一个缓存单元空闲的一对缓存单元;根据查找到的值为1的XOR指示位所对应的奇数地址状态表中的值和偶数地址状态表中的值,确定该对缓存单元中的空闲的缓存单元,将确定的该空闲的缓存单元分配给所述待处理命令;
所述缓存单元对第二状态表为与AND表,所述AND表为将每对缓存单元所对应的奇数地址状态表中的值和偶数地址状态表中的值进行AND运算后的值,在奇数地址状态表和偶数地址状态表中空闲状态指示位的值为1表示空闲,为0表示占用;所述缓存单元成对分配模块具体用于:在所述AND表中,查找值为1的AND指示位,将查找到的值为1的AND指示位所指示的一对缓存单元确定为查找到的所述两个缓存单元均为空闲的一对缓存单元;或者,
所述缓存单元对第二状态表为或OR表,所述OR表为将每对缓存单元所对应的奇数地址状态表中的值和偶数地址状态表中的值进行OR运算后的值,在奇数地址状态表和偶数地址状态表中空闲状态指示位的值为1表示占用,为0表示空闲;所述缓存单元成对分配模块具体用于:在所述OR表中,查找值为0的OR指示位,若查找到值为0的OR指示位,则将查找到的值为0的OR指示位所指示的一对缓存单元确定为查找到的所述两个缓存单元均为空闲的一对缓存单元。
9.如权利要求6~8任一所述的装置,其特征在于,若所述待处理命令所需要的缓存单元数量为两个缓存单元,则所述装置还包括:
回收模块,用于在处理完所述待处理命令后,在一个时钟周期内回收为该待处理命令分配的一对缓存单元。
10.如权利要求9所述的装置,其特征在于,所述回收模块还用于:在一个时钟周期内回收所述一对缓存单元之后,根据所述一对缓存单元所对应的缓存地址中除最后一位之外的其它位,确定所述一对缓存单元所对应的奇数地址状态表和偶数地址状态表中的指示位,更新确定的所述奇数地址状态表和偶数地址状态表中的指示位的值。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511032088.6A CN105677583B (zh) | 2015-12-31 | 2015-12-31 | 一种缓存管理方法及装置 |
US15/391,112 US10482027B2 (en) | 2015-12-31 | 2016-12-27 | Cache management method and apparatus |
EP16207047.8A EP3188028B1 (en) | 2015-12-31 | 2016-12-28 | Buffer management method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511032088.6A CN105677583B (zh) | 2015-12-31 | 2015-12-31 | 一种缓存管理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105677583A CN105677583A (zh) | 2016-06-15 |
CN105677583B true CN105677583B (zh) | 2019-01-08 |
Family
ID=56298432
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511032088.6A Active CN105677583B (zh) | 2015-12-31 | 2015-12-31 | 一种缓存管理方法及装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10482027B2 (zh) |
EP (1) | EP3188028B1 (zh) |
CN (1) | CN105677583B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108615077B (zh) * | 2016-12-09 | 2021-08-24 | 杭州海康威视数字技术股份有限公司 | 一种应用于深度学习网络的缓存优化方法及装置 |
US11573899B1 (en) * | 2021-10-21 | 2023-02-07 | International Business Machines Corporation | Transparent interleaving of compressed cache lines |
KR102579319B1 (ko) * | 2023-04-19 | 2023-09-18 | 메티스엑스 주식회사 | 캐시 메모리 장치 및 이를 이용하는 캐시 스케줄링 구현 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5715430A (en) * | 1994-04-26 | 1998-02-03 | Kabushiki Kaisha Toshiba | Multiprocessor computer system and a method for memory allocation to optimize cache coherency within the system |
CN103257850A (zh) * | 2013-05-03 | 2013-08-21 | 中国科学院声学研究所 | 一种基于标志位访问踪迹的指令高速缓冲存储器 |
US20150261683A1 (en) * | 2014-03-11 | 2015-09-17 | Samsung Electronics Co., Ltd. | Cache memory control in electronic device |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4851993A (en) | 1987-04-20 | 1989-07-25 | Amdahl Corporation | Cache move-in bypass |
GB2216308A (en) | 1988-03-01 | 1989-10-04 | Ardent Computer Corp | Maintaining cache consistency |
US6427195B1 (en) | 2000-06-13 | 2002-07-30 | Hewlett-Packard Company | Thread local cache memory allocator in a multitasking operating system |
US7610468B2 (en) * | 2006-10-26 | 2009-10-27 | Hewlett-Packard Development Company, L.P. | Modified buddy system memory allocation |
KR20160022716A (ko) * | 2014-08-20 | 2016-03-02 | 삼성전자주식회사 | 메모리 할당 방법 및 이를 지원하는 전자 장치 |
KR102376474B1 (ko) * | 2015-03-20 | 2022-03-21 | 한국전자통신연구원 | 버디 할당자를 이용한 저장 공간 할당 방법 |
-
2015
- 2015-12-31 CN CN201511032088.6A patent/CN105677583B/zh active Active
-
2016
- 2016-12-27 US US15/391,112 patent/US10482027B2/en active Active
- 2016-12-28 EP EP16207047.8A patent/EP3188028B1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5715430A (en) * | 1994-04-26 | 1998-02-03 | Kabushiki Kaisha Toshiba | Multiprocessor computer system and a method for memory allocation to optimize cache coherency within the system |
CN103257850A (zh) * | 2013-05-03 | 2013-08-21 | 中国科学院声学研究所 | 一种基于标志位访问踪迹的指令高速缓冲存储器 |
US20150261683A1 (en) * | 2014-03-11 | 2015-09-17 | Samsung Electronics Co., Ltd. | Cache memory control in electronic device |
Non-Patent Citations (1)
Title |
---|
Online CS Modules: Memory Allocation;Bowie State University;《Operating Systems》;20010201;第1页 |
Also Published As
Publication number | Publication date |
---|---|
EP3188028B1 (en) | 2019-12-04 |
CN105677583A (zh) | 2016-06-15 |
EP3188028A1 (en) | 2017-07-05 |
US20170192899A1 (en) | 2017-07-06 |
US10482027B2 (en) | 2019-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8938603B2 (en) | Cache system optimized for cache miss detection | |
US9396030B2 (en) | Quota-based adaptive resource balancing in a scalable heap allocator for multithreaded applications | |
CN110741356A (zh) | 多处理器系统中的中继一致存储器管理 | |
CN103853618B (zh) | 基于截止日期驱动的云系统代价最小化资源分配方法 | |
CN105677583B (zh) | 一种缓存管理方法及装置 | |
CN106844041A (zh) | 内存管理的方法及内存管理系统 | |
CN106462394B (zh) | 使用共享硬件资源的群集处理器核心中硬件线程的动态负载平衡以及相关的电路、方法和计算机可读媒体 | |
CN105843775A (zh) | 片上数据划分读写方法、系统及其装置 | |
CN103207774A (zh) | 用于解决线程发散的方法和系统 | |
CN101488919B (zh) | 存储地址分配方法和装置 | |
CN115080455B (zh) | 一种计算机芯片、计算机板卡、存储空间分配方法及装置 | |
CN103699497A (zh) | 一种缓存分配方法及装置 | |
US20120092352A1 (en) | Method and system for performing event-matching with a graphical processing unit | |
CN102708009A (zh) | 一种基于cuda实现多任务共享gpu的方法 | |
CN104796449A (zh) | 内容分发方法、装置及设备 | |
CN103425534A (zh) | 在许多应用之间共享的图形处理单元 | |
CN107391402A (zh) | 一种数据运算方法、装置及一种数据运算卡 | |
CN104050215A (zh) | 清除和重建相关性的系统和方法 | |
CN105095104A (zh) | 数据缓存处理方法及装置 | |
CN104199781A (zh) | 一种基于共享内存的内存碎片分配方法和装置 | |
CN101341471A (zh) | 动态高速缓存管理的设备和方法 | |
CN104636276A (zh) | 一种保护内存存储器数据机密性和完整性的方法 | |
US20150089145A1 (en) | Multiple core processing with high throughput atomic memory operations | |
US20140310461A1 (en) | Optimized and parallel processing methods with application to query evaluation | |
CN108694187A (zh) | 实时流数据的存储方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |