一种缓存管理方法及装置的制造方法
【技术领域】
[0001] 本申请涉及芯片设计领域,尤其涉及一种缓存管理方法及装置。
【背景技术】
[0002] 专用的命令处理芯片用于处理系统预先定义的一种或多种命令,比如路由器专用 于处理数据的转发等。随着数据处理芯片规模越来越大,片上存储器越来越多,为了减小存 储器的规模,在一些不需要全线程缓存的地方采用共享缓存来减少存储器资源,因此对共 享缓存的设计以及管理就显得尤为重要。为了便于缓存的分配和管理,共享缓存被划分为 多个相同大小的缓存单元,可以根据命令处理的实际需要预先设置该缓存单元的大小。
[0003] 芯片中负责进行命令处理的功能模块的命令处理流程一般为:当该模块接收到来 自可编程处理器的待处理命令时,解析该命令以确认该命令是否需要缓存数据,如果需要 缓存数据则在一个时钟周期内为该待处理命令分配一个缓存单元,将该待处理命令的线程 标识(Identity,ID)等不参与数据处理的随路数据写入分配到的缓存单元中,并进行命令 的处理,在命令处理过程中,随路数据将始终保存在缓存单元中,在命令处理完成后,读取 该缓存单元中的随路数据,释放该缓存单元。
[0004] 为了便于缓存管理,缓存单元的大小一般只有一种。随着芯片命令处理的多样化 和复杂化,缓存单元大小设置不合理的问题变得突出。如果采用小粒度的缓存单元,当存在 待处理命令所需缓存的数据量较大时,将需要多个时钟周期才能缓存完一次数据,缓存效 率太低,而如果采用大粒度的缓存单元,当存在待处理命令所需缓存的数据量较小时,又会 造成缓存资源的浪费。
[0005] 可见,如何在提高缓存效率的同时,减少缓存资源的浪费,成为一个急需解决的问 题。
【发明内容】
[0006] 本申请实施例提供一种缓存管理方法及装置,用以提高缓存效率,减少缓存资源 的浪费。
[0007] 本申请实施例提供一种缓存管理方法,该缓存管理方法应用于共享缓存管理系统 中,共享缓存管理系统中设有N个连续地址的缓存单元,并维护有缓存单元对第一状态表和 缓存单元对第二状态表,其中,共享缓存管理系统将N个连续的缓存单元按顺序分对,缓存 单元对第一状态表用于指示每对缓存单元中是否仅有一个缓存单元空闲,缓存单元对第二 状态表用于指示每对缓存单元中的两个缓存单元是否均为空闲,该方法包括:当接收到待 处理命令后,确定该待处理命令所需要的缓存单元数量;若该待处理命令所需要的缓存单 元数量为一个缓存单元,则基于缓存单元对第一状态表,查找仅有一个缓存单元空闲的一 对缓存单元,并将该对缓存单元中的空闲的缓存单元分配给待处理命令;若该待处理命令 所需要的缓存单元数量为两个缓存单元,则基于缓存单元对第二状态表,在一个时钟周期 内为该待处理命令查找并分配两个缓存单元均为空闲的一对缓存单元。
[0008] 在上述步骤中,若待处理命令所需要的缓存单元数量为一个缓存单元,而基于缓 存单元对第一状态表,没有查找到仅有一个缓存单元空闲的一对缓存单元,则该缓存管理 方法还包括:基于缓存单元对第二状态表,查找两个缓存单元均为空闲的一对缓存单元,并 将该对缓存单元中的任一个缓存单元分配给待处理命令。
[0009] 共享缓存管理系统中还可以维护有奇数地址状态表、偶数地址状态表,其中,奇数 地址状态表用于指示奇数地址的缓存单元的空闲状态,偶数地址状态表用于指示偶数地址 的缓存单元的空闲状态。
[0010] 作为一种实施方式,缓存单元对第二状态表为与AND表,该AND表为将每对缓存单 元所对应的奇数地址状态表中的值和偶数地址状态表中的值进行AND运算后的值,在奇数 地址状态表和偶数地址状态表中空闲状态指示位的值为1表示空闲,为0表示占用;在上述 步骤中,基于缓存单元对第二状态表,查找两个缓存单元均为空闲的一对缓存单元,包括: 在AND表中,查找值为1的AND指示位,将查找到的值为1的AND指示位所指示的一对缓存单元 确定为查找到的一对缓存单元。
[0011]作为另外一种实施方式,缓存单元对第二状态表为或0R表,该0R表为将每对缓存 单元所对应的奇数地址状态表中的值和偶数地址状态表中的值进行0R运算后的值,在奇数 地址状态表和偶数地址状态表中空闲状态指示位的值为1表示占用,为0表示空闲;在上述 步骤中,基于缓存单元对第二状态表,查找两个缓存单元均为空闲的一对缓存单元,包括: 在0R表中,查找值为0的0R指示位,若查找到值为0的0R指示位,则将查找到的值为0的0R指 示位所指示的一对缓存单元确定为查找到的所述一对缓存单元。
[0012] 作为一种实施方式,缓存单元对第一状态表为异或X0R表,X0R表为将每对缓存单 元所对应的奇数地址状态表中的值和偶数地址状态表中的值进行X0R运算后的值;基于缓 存单元对第一状态表,查找仅有一个缓存单元空闲的一对缓存单元,包括:在X0R表中,查找 值为1的X0R指示位,若查找到值为1的X0R指示位,则将查找到的值为1的X0R指示位所指示 的一对缓存单元确定为查找到的所述一对缓存单元;上述步骤中,将一对缓存单元中的空 闲的缓存单元分配给待处理命令,包括:根据查找到的值为1的X0R指示位所对应的奇数地 址状态表中的值和偶数地址状态表中的值,确定该对缓存单元中的空闲的缓存单元,将确 定的该空闲的缓存单元分配给所述待处理命令。
[0013] 上述步骤中,若待处理命令所需要的缓存单元数量为两个缓存单元,则将一对缓 存单元分配给所述待处理命令之后,还包括:在处理完该待处理命令后,在一个时钟周期内 回收分配的所述一对缓存单元。
[0014] 进一步地,在一个时钟周期内回收所述一对缓存单元之后,根据所述一对缓存单 元所对应的缓存地址中除最后一位之外的其它位,确定所述一对缓存单元所对应的奇数地 址状态表和偶数地址状态表中的指示位,更新确定的所述奇数地址状态表和偶数地址状态 表中的指示位的值。
[0015]本申请实施例提供一种缓存管理装置,该装置应用于共享缓存管理系统中,包括 确定模块、缓存单元单个分配模块和缓存单元成对分配模块,其中:
[0016]共享缓存管理系统中设有N个连续地址的缓存单元,所述共享缓存管理系统中维 护有缓存单元对第一状态表和缓存单元对第二状态表,其中,共享缓存管理系统将N个连续 的缓存单元按顺序分对,缓存单元对第一状态表用于指示每对缓存单元中是否仅有一个缓 存单元空闲,缓存单元对第二状态表用于指示每对缓存单元中的两个缓存单元是否均为空 闲;
[0017] 确定模块,用于当接收到待处理命令后,确定所述待处理命令所需要的缓存单元 数量,若所述待处理命令所需要的缓存单元数量为一个缓存单元,则指示所述缓存单元单 个分配模块进行缓存分配,若所述待处理命令所需要的缓存单元数量为两个缓存单元,则 指示所述缓存单元成对分配模块进行缓存分配;
[0018] 缓存单元单个分配模块,用于基于所述缓存单元对第一状态表,查找仅有一个缓 存单元空闲的一对缓存单元,并将该对缓存单元中的空闲的缓存单元分配给所述待处理命 令;
[0019] 缓存单元成对分配模块,用于基于所述缓存单元对第二状态表,在一个时钟周期 内为该待处理命令查找并分配两个缓存单元均为空闲的一对缓存单元。
[0020] 本申请中,若所述待处理命令所需要的缓存单元数量为一个缓存单元,所述缓存 单元单个分配模块没有查找到仅有一个缓存单元空闲的一对缓存单元,则缓存单元单个分 配模块还用于:通过所述缓存单元成对分配模块查找两个缓存单元均为空闲的一对缓存单 元,并将该对缓存单元中的任一个缓存单元分配给所述待处理命令。
[0021] 共享缓存管理系统中还可以维护有奇数地址状态表、偶数地址状态表,其中,奇数 地址状态表用于指示奇数地址的缓存单元的空闲状态,偶数地址状态表用于指示偶数地址 的缓存单元的空闲状态。
[0022]作为一种实施方式,缓存单元对第二状态表为与AND表,该AND表为将每对缓存单 元所对应的奇数地址状态表中的值和偶数地址状态表中的值进行AND运算后的值,在奇数 地址状态表和偶数地址状态表中空闲状态指示位的值为1表示空闲,为0表示占用;缓存单 元成对分配模块具体用于:在所述AND表中,查找值为1的AND指示位,将查找到的值为1的 AND指示位所指示的一对缓存单元确定为查找到的两个缓存单元均为空闲的一对缓存单 J L· 〇
[0023]作为另外一种实施方式,缓存单元对第二状态表为或0R表,所述0R表为将每对缓 存单元所对应的奇数地址状态表中的值和偶数地址状态表中的值进行0R运算后的值,在奇 数地址状态表和偶数地址状态表中空闲状态指示位的值为1表示占用,为0表示空闲;所述 缓存单元成对分配模块具体用于:在所述0R表中,查找值为0的0R指示位,若查找到值为0的 0R指示位,则将查找到的值为0的0R指示位所指示的一对缓存单元确定为查找到的两个缓 存单元均为空闲的一对缓存单元。
[0024]作为一种实施方式,缓存单元对第一状态表为异或X0R表,所述X0R表为将每对缓 存单元所对应的奇数地址状态表中的值和偶数地址状态表中的值进行X0R运算后的值;缓 存单元单个分配模块具体用于:在X0R表中,查找值为1的X0R指示位,若查找到值为1的X0R 指示位,则将查找到的值为1的X0R指示位所指示的一对缓存单元确定为查找到的所述一对 缓存单元;根据查找到的值为1的X0R指示位所对应的奇数地址状态表中的值和偶数地址状 态表中的值,确定该对缓存单元中的空闲的缓存单元,将确定的该空闲的缓存单元分配给 所述待处理命令。
[0025]本申请中,若待处理命令所需要的缓存单元数量为两个缓存单元,则该装置还包 括:回收模块,用于在处理完所述待处理命令后,在一个时钟周期内回收为该待处理命令分 配的一对缓存单元。
[0026]进一步地,回收模块还用于:在一个时钟周期内回收所述一对缓存单元之后,根据 所述一对缓存单元所对应的缓存地址中除最后一位之外的其它位,确定所述一对缓存单元 所对应的奇数地址状态表和偶数地址状态表中的指示位,更新确定的所述奇数地址状态表 和偶数地址状态表中的指示位的值。
[0027]本申请实施例还提供芯片中进行命令处理的装置,包括输入处理单元、缓存管理 单元、命令处理单元、输出处理单元和多线程共享的共享缓存,共享缓存一般为静态随机存 储器SRAM。其中,
[0028]共享缓存中设有N个连续地址的缓存单元,缓存管理单元中维护有缓存单元对第 一状态表和缓存单元对第二状态表,其中,缓存管理单元将所述N个连续的缓存单元按顺序 分对,缓存单元对第一状态表用于指示每对缓存单元中是否仅有一个缓存单元空闲,缓存 单元对第二状态表用于指示每对缓存单元中的两个缓存单元是否均为空闲;
[0029]输入处理单元,用于在接收到待处理命令后,解析该待处理命令,确定需要申请的 缓存单元数量,向缓存管理单元发出缓存申请;根据缓存管理单元分配的缓存单元的地址, 将待处理命令中不参与数据处理的随路数据(