一种具有二次索引结构的存储设备及其操作方法.pdf

上传人:xia****o6 文档编号:1271498 上传时间:2018-04-11 格式:PDF 页数:10 大小:363.31KB
返回 下载 相关 举报
摘要
申请专利号:

CN201010259765.9

申请日:

2010.08.20

公开号:

CN101963896A

公开日:

2011.02.02

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 5/06申请日:20100820|||公开

IPC分类号:

G06F5/06; G06F9/38

主分类号:

G06F5/06

申请人:

中国科学院计算技术研究所

发明人:

陈飞; 曹政; 王凯; 安学军; 孙凝晖

地址:

100080 北京市海淀区中关村科学院南路6号

优先权:

专利代理机构:

北京律诚同业知识产权代理有限公司 11006

代理人:

祁建国;梁挥

PDF下载: PDF下载
内容摘要

本发明公开了一种具有二次索引结构的存储设备,所述设备,包括:多队列存储单元,从逻辑上被划分为N个FIFO,具有单独的读端口和写端口,能够对单元内任意FIFO同时进行读写操作;索引表模块,用于存储所述N个先入先出队列的索引信息,每个先入先出队列的索引信息存储在所述索引表模块中的一行;两个索引寄存器,用于暂存从所述索引表模块中读取出来的索引信息以供读操作和写操作同时使用。

权利要求书

1: 一种具有二次索引结构的存储设备, 其特征在于, 所述设备, 包括 : 多队列存储单元, 从逻辑上被划分为 N 个 FIFO, 具有单独的读端口和写端口, 能够对单 元内任意 FIFO 同时进行读写操作 ; 索引表模块, 用于存储所述 N 个先入先出队列的索引信息, 每个先入先出队列的索引 信息存储在所述索引表模块中的一行 ; 两个索引寄存器, 用于暂存从所述索引表模块中读取出来的索引信息以供读操作和写 操作同时使用。
2: 根据权利要求 1 所述的具有二次索引结构的存储设备, 其特征在于, 所述多队列存 储单元是一双端口存储。
3: 根据权利要求 1 所述的具有二次索引结构的存储设备, 其特征在于, 所述索引表模 块使用深度为 N 的双端口存储。
4: 根据权利要求 1 所述的具有二次索引结构的存储设备, 其特征在于, 所述索引表模 块中的每一行的索引信息由下面的元素构成 { 头部指针, 尾部指针, 空满信息 } ; 头部指针 指向多队列存储中对应的 FIFO 的头部, 尾部指针指向多队列存储中对应 FIFO 的尾部 ; 空满 信息表示此 FIFO 的状态, 是空队列还是满队列。
5: 根据权利要求 1 所述的具有二次索引结构的存储设备, 其特征在于, 对某个 FIFO 的 读写应该首先根据 FIFO 的号码到索引表中取出索引信息, 然后根据索引信息里面头部指 针或者尾部指针索引到对应的 FIFO 的头部或者尾部, 从而进行读或者写操作。
6: 根据权利要求 1 所述的具有二次索引结构的存储设备, 其特征在于, 所述索引寄存 器使用通用寄存器实现。
7: 根据权利要求 1 所述的具有二次索引结构的存储设备, 其特征在于, 所述索引寄存 器的结构为 { 索引状态, FIFO 号, 头部指针, 尾部指针, 空满信息 } ; 索引状态表示此索引寄 存器的状态, 是四种状态中的一种 : 空闲、 读、 写、 读写, FIFO 号表示此索引寄存器的内容代 表哪个 FIFO 的索引信息, 同时也代表了此索引寄存器对应于所述索引表模块中的哪一行, 头部指针指向多队列存储单元中对应的 FIFO 的头部, 尾部指针指向多队列存储模块中对 应 FIFO 的尾部, 空满信息表示对应 FIFO 的状态, 是空队列还是满队列。
8: 一种具有二次索引结构的存储设备的操作方法, 其特征在于, 所述方法, 包括下列步 骤: 步骤 100. 外部设备输入期望操作的先入先出队列号, 查看两个索引寄存器中的先入 先出队列号, 判断是否存在一个索引寄存器中的先入先出队列号与当前要操作的先入先出 队列号相同, 若存在, 则执行步骤 200 ; 否则, 执行步骤 300 ; 步骤 200. 使用此匹配的索引寄存器来操作对应的先入先出队列 ; 步骤 300. 选择两个索引寄存器中索引状态为空闲状态的索引寄存器, 根据此索引寄 存器的先入先出队列号把索引寄存器的内容写回到索引表中以更新所述索引表, 同时根据 将要操作的先入先出队列号从索引表中把新的索引信息从索引表中读取到此索引寄存器 中, 并更新索引寄存器的索引状态和先入先出队列号。
9: 根据权利要求 8 所述的具有二次索引结构的存储设备的操作方法, 其特征在于, 所 述索引表中的每一行的索引信息由下面的元素构成 { 头部指针, 尾部指针, 空满信息 } ; 头 部指针指向多队列存储中对应的 FIFO 的头部, 尾部指针指向多队列存储中对应 FIFO 的尾 2 部; 空满信息表示此 FIFO 的状态, 是空队列还是满队列。
10: 根据权利要求 8 所述的具有二次索引结构的存储设备的操作方法, 其特征在于, 所 述索引寄存器的结构为 { 索引状态, FIFO 号, 头部指针, 尾部指针, 空满信息 } ; 索引状态表 示此索引寄存器的状态, 是四种状态中的一种 : 空闲、 读、 写、 读写, FIFO 号表示此索引寄存 器的内容代表哪个 FIFO 的索引信息, 同时也代表了此索引寄存器对应于所述索引表模块 中的哪一行, 头部指针指向多队列存储单元中对应的 FIFO 的头部, 尾部指针指向多队列存 储模块中对应 FIFO 的尾部, 空满信息表示对应 FIFO 的状态, 是空队列还是满队列。
11: 根据权利要求 8 所述的具有二次索引结构的存储设备的操作方法, 其特征在于, 当 所述索引寄存器的内容将要被一个新的 FIFO 的索引信息所替换时, 当前索引寄存器中存 储的索引信息需要先写回到索引表中以更新索引表对应的行。

说明书


一种具有二次索引结构的存储设备及其操作方法

    技术领域 本发明涉及通信网络领域中多通道数据的存储, 或者并行处理领域中多处理单元 指令的存储领域, 特别是涉及一种具有二次索引结构的存储设备及其操作方法。
     背景技术 在芯片设计中, 通常涉及多个相同属性, 但是具有不同来源, 或者不同目标的数据 存储问题。设计一般要求不同来源, 或者不同目标的数据分别存储而互不干扰。比如在多 核处理器设计中, 不同处理器核的指令流应该被存放在不同的先进先出队列, 否则一个指 令流的执行可能会阻塞另外一个指令流的执行, 在某些情况下, 由于阻塞会造成死锁。
     为了使用不同的先进先出队列保存不同的数据流, 通常的做法是实现多个完整的 先进先出队列 (FIFO), 每个 FIFO 对应于不同的数据流, 每个 FIFO 各自管理各自的存储队 列, 则不同 FIFO 的数据流不会相互阻塞。这样的实现方式会造成硬件资源的浪费, 比如每 个 FIFO 都要使用一块双端口存储 (Dual-port RAM), 在 RAM 数量受限的情况 ( 如可编程逻 辑器件中 ) 下会造成资源紧张 ; 再比如每个 FIFO 都有独立的计数器来记录 FIFO 中数据队 列的头部、 尾部, 需要较多的硬件资源。
     发明内容 本发明的目的在于提供一种具有二次索引结构的存储设备及其操作方法, 通过采 用两次索引结构, 减少了双端口存储的使用, 以及队列管理资源的使用, 并且能够保证同一 时刻同一个 FIFO 被读写, 或者同一时刻不同 FIFO 一个被读而另一个被写, 充分发挥双端口 存储的性能。
     为实现本发明的目的而提供的一种具有二次索引结构的存储设备, 所述设备, 包 括:
     多队列存储单元, 从逻辑上被划分为 N 个 FIFO, 具有单独的读端口和写端口, 能够 对单元内任意 FIFO 同时进行读写操作 ;
     索引表模块, 用于存储所述 N 个先入先出队列的索引信息, 每个先入先出队列的 索引信息存储在所述索引表模块中的一行 ;
     两个索引寄存器, 用于暂存从所述索引表模块中读取出来的索引信息以供读操作 和写操作同时使用。
     所述多队列存储单元是一双端口存储。
     所述索引表模块使用深度为 N 的双端口存储。
     所述索引表模块中的每一行的索引信息由下面的元素构成 { 头部指针, 尾部指 针, 空满信息 } ; 头部指针指向多队列存储中对应的 FIFO 的头部, 尾部指针指向多队列存储 中对应 FIFO 的尾部 ; 空满信息表示此 FIFO 的状态, 是空队列还是满队列。
     对某个 FIFO 的读写应该首先根据 FIFO 的号码到索引表中取出索引信息, 然后根 据索引信息里面头部指针或者尾部指针索引到对应的 FIFO 的头部或者尾部, 从而进行读
     或者写操作
     所述索引寄存器使用通用寄存器实现。
     所述索引寄存器的结构为 { 索引状态, FIFO 号, 头部指针, 尾部指针, 空满信息 } ; 索引状态表示此索引寄存器的状态, 是四种状态中的一种 : 空闲、 读、 写、 读写, FIFO 号表示 此索引寄存器的内容代表哪个 FIFO 的索引信息, 同时也代表了此索引寄存器对应于所述 索引表模块中的哪一行, 头部指针指向多队列存储单元中对应的 FIFO 的头部, 尾部指针指 向多队列存储模块中对应 FIFO 的尾部, 空满信息表示对应 FIFO 的状态, 是空队列还是满队 列。
     为实现本发明的目的还提供一种具有二次索引结构的存储设备的操作方法, 所述 方法, 包括下列步骤 :
     步骤 100. 外部设备输入期望操作的先入先出队列号, 查看两个索引寄存器中的 先入先出队列号, 判断是否存在一个索引寄存器中的先入先出队列号与当前要操作的先入 先出队列号相同, 若存在, 则执行步骤 200 ; 否则, 执行步骤 300 ;
     步骤 200. 使用此匹配的索引寄存器来操作对应的先入先出队列 ;
     步骤 300. 选择两个索引寄存器中索引状态为空闲状态的索引寄存器, 根据此索 引寄存器的先入先出队列号把索引寄存器的内容写回到索引表中以更新所述索引表, 同时 根据将要操作的先入先出队列号从索引表中把新的索引信息从索引表中读取到此索引寄 存器中, 并更新索引寄存器的索引状态和先入先出队列号。
     所述索引表中的每一行的索引信息由下面的元素构成 { 头部指针, 尾部指针, 空 满信息 } ; 头部指针指向多队列存储中对应的 FIFO 的头部, 尾部指针指向多队列存储中对 应 FIFO 的尾部 ; 空满信息表示此 FIFO 的状态, 是空队列还是满队列。
     所述索引寄存器的结构为 { 索引状态, FIFO 号, 头部指针, 尾部指针, 空满信息 } ; 索引状态表示此索引寄存器的状态, 是四种状态中的一种 : 空闲、 读、 写、 读写, FIFO 号表示 此索引寄存器的内容代表哪个 FIFO 的索引信息, 同时也代表了此索引寄存器对应于所述 索引表模块中的哪一行, 头部指针指向多队列存储单元中对应的 FIFO 的头部, 尾部指针指 向多队列存储模块中对应 FIFO 的尾部, 空满信息表示对应 FIFO 的状态, 是空队列还是满队 列。
     当所述索引寄存器的内容将要被一个新的 FIFO 的索引信息所替换时, 当前索引 寄存器中存储的索引信息需要先写回到索引表中以更新索引表对应的行。
     本发明的有益效果是 : 采用两次索引, 将一块双端口存储从逻辑上划分为多个 FIFO 结构的存储, 减少了双端口存储的使用, 以及队列管理资源的使用, 并且能够保证同一 时刻同一个 FIFO 被读写, 或者同一时刻不同 FIFO 一个被读而另一个被写, 充分发挥双端口 存储的性能。 附图说明
     图 1 是本发明的具有二次索引结构的存储设备的结构示意图 ; 图 2 是本发明的一种具有二次索引结构的存储设备的操作方法的步骤流程图。具体实施方式
     为了使本发明的目的、 技术方案及优点更加清楚明白, 以下结合附图及实施例, 对 本发明的一种具有二次索引结构的存储设备及其操作方法进行进一步详细说明。应当理 解, 此处所描述的具体实施例仅仅用以解释本发明, 并不用于限定本发明。
     本发明的一种具有二次索引结构的存储设备及其操作方法, 通过两次索引, 仅仅 使用一套队列管理模块, 就可以把一块双端口存储从逻辑上划分为多个 FIFO 结构的存储, 减少了双端口存储的使用, 以及队列管理资源的使用, 并且能够保证同一时刻同一个 FIFO 被读写, 或者同一时刻不同 FIFO 一个被读而另一个被写, 充分发挥双端口存储的性能。
     下面结合上述目标详细介绍本发明的具有二次索引结构的存储设备, 图 1 是本发 明的具有二次索引结构的存储设备的结构示意图, 如图 1 所示, 所述设备, 包括 :
     多队列存储单元 1, 从逻辑上被划分为 N 个 FIFO, 具有单独的读端口和写端口, 能 够对单元内任意 FIFO 同时读写 ;
     如图 1 所示, 所述多队列存储单元是一块双端口存储, 具有单独的读写端口, 可以 对存储内任意位置同时读写, 此双端口存储从逻辑上被划分为 N 个 FIFO, 如图 1 中 FIFO 0 到 FIFO N-1。 索引表模块 2, 用于存储 N 个 FIFO 的索引信息, 每个 FIFO 的索引信息存储在所述 索引表模块中的一行 ;
     所述索引表模块使用深度为 N 的双端口存储, 用于存储 N 个 FIFO 的索引信息, 每 个 FIFO 的索引信息存储在所述索引表模块中的一行, 第 0 行对应于 FIFO 0 的索引信息, 第 1 行对应于 FIFO 1 的索引信息……第 N-1 行对应于 FIFON-1 的索引信息。
     所述索引表中的每一行的索引信息由下面的元素构成 { 头部指针, 尾部指针, 空 满信息 }。头部指针指向多队列存储中对应的 FIFO 的头部 ; 尾部指针指向多队列存储中对 应 FIFO 的尾部 ; 空满信息表示此 FIFO 的状态, 是空队列还是满队列。
     对某个 FIFO 的读写应该首先根据 FIFO 的号码到索引表中取出索引信息, 然后根 据索引信息里面头部指针或者尾部指针索引到对应的 FIFO 的头部或者尾部, 从而进行读 或者写操作。此种方法称之为二次索引。
     两个索引寄存器 3, 用于暂存从所述索引表模块 2 中读取出来的索引信息以供读 操作和写操作使用 ;
     图 1 所示的索引寄存器 1 和索引寄存器 2 是两行结构相同的索引信息, 使用寄存 器实现。此两行索引的作用是暂存从索引表读取出来内容。由于索引表只有一个读端口以 及一个写端口, 而两个 FIFO 同时被操作时会引起对两行索引信息的改写, 一个写端口不能 满足这种需求 ; 同时索引表的存储结构不能仅仅直接改变索引表中一行中的某几位信息, 基于这两种原因, 有必要先把索引表中的信息读取出来放到索引寄存器 1 或者索引寄存器 2 中, 如此才能实现同时对多队列存储中不同的 FIFO 进行读或者写。
     索引寄存器的结构为 { 索引状态, FIFO 号, 头部指针, 尾部指针, 空满信息 }。当 FIFO 被操作的时候, 对应的索引寄存器的内容会发生改变, 比如头部指针和尾部指针会改 变, 为了避免对索引表写端口的频繁操作, 这个时候不需要更新其在索引表中对应的行的 内容。也即是说, 索引寄存器中的信息是最新的信息, 而索引表的信息可能是落后的信息。 索引寄存器的内容仅仅在被新的一个 FIFO 的索引信息替换的时候, 才会被更新到索引表
     对应的行中。索引寄存器各项的含义如下 :
     1. 索引状态表示此索引寄存器的状态, 可以是四种状态中的一种 : 空闲、 读、 写、 读写。空闲表示此寄存器空闲, 其对应的 FIFO 无读写操作, 寄存器内容可以被索引表新的 内容替换 ; 读状态表示此索引对应的 FIFO 当前正在被读取, 而没有被写入 ; 写状态表示此 索引对应的 FIFO 当前正在被写入, 而没有被读取 ; 读写状态表示此索引对应的 FIFO 当前既 被写入, 也被读取。
     2.FIFO 号表示此索引寄存器的内容代表哪个 FIFO 的索引信息, 同时也代表了此 索引寄存器对应于索引表中的哪一行。
     3. 头部指针 (H) 指向多队列存储中对应的 FIFO 的头部, 如图 1 中所示的 H1 或者 H2。
     4. 尾部指针 (T) 指向多队列存储中对应 FIFO 的尾部, 如图 1 中所示的 T1 或者 T2。
     5. 空满信息表示对应 FIFO 的状态, 是空队列还是满队列。
     由于多队列存储单元只有一个读端口和一个写端口, 因此不可能出现同时读两个 FIFO, 或者同时写两个 FIFO 的情况, 也不会出现同时操作三个 ( 含三个 ) 以上 FIFO 的情况, 因此两个索引寄存器足够维护多队列存储结构的运行。也因此不会出现头指针 H1 和 H2 同 时有效, 或者尾指针 T1 和 T2 同时有效的情况。所以多队列存储单元中的写端口所需要的 尾部指针 T 会选择 T1 或者 T2 中有效的那个, 读端口所需要的头部指针 H 会选择 H1 或者 H2 中有效的那个。 相应于本发明的一种具有二次索引结构的存储设备, 还提供一种具有二次索引结 构的存储设备的操作方法, 图 2 是本发明的一种具有二次索引结构的存储设备的操作方法 的步骤流程图, 如图 2 所示, 所述方法, 包括下列步骤 :
     步骤 000. 当设备外部希望操作多队列存储中的某个 FIFO 时, 则向本专利所说的 设备输入期望操作的 FIFO 号。写操作发生在图 1 所示的多队列存储写端口, 读操作发生在 图 1 所示的多队列存储读端口。两种操作可以单独发生, 也可以同时发生。多队列存储的 读端口和写端口的输入的 FIFO 号可以相同, 也可以不同。
     步骤 100. 当对多队列存储中的 FIFO 有写操作或者读操作时, 查看两个索引寄存 器中的 FIFO 号, 判断是否存在一个索引寄存器中的 FIFO 号与当前要操作的 FIFO 号相同, 若存在, 则执行步骤 200 ; 否则, 执行步骤 300 ;
     步骤 200. 不管所述索引寄存器的状态如何, 使用此匹配的索引寄存器来操作对 应的 FIFO ;
     步骤 300. 选择两个索引寄存器中索引状态为空闲状态的索引寄存器, 根据此索 引寄存器的 FIFO 号把索引寄存器中的 { 头部指针, 尾部指针, 空满信息 } 内容写回到索引 表中以更新所述索引表, 同时根据将要操作的 FIFO 号从索引表中把新的索引信息 { 头部指 针, 尾部指针, 空满信息 } 从索引表中读取到此索引寄存器中, 并更新索引寄存器的索引状 态和 FIFO 号。
     当相应 FIFO 被操作的时候, 对应的索引寄存器的内容会发生改变, 比如头部指针 和尾部指针会改变, 为了避免对索引表写端口的频繁操作, 这个时候不需要更新其在索引 表中对应的行的内容, 而仅更新相应索引寄存器的内容。 而在本步骤中, 由于索引寄存器的 内容将要被一个新的 FIFO 的索引信息所替换, 因此, 当前索引寄存器中存储的索引信息需
     要先写回到索引表中以更新索引表对应的行中, 然后才会根据将要操作的 FIFO 号从索引 表中把新的索引信息从索引表中读取到此索引寄存器中, 并更新索引寄存器的索引状态和 FIFO 号。
     较佳地, 由于多队列存储器只有一个读端口和一个写端口, 在新的操作到达多队 列存储时, 两个索引寄存器必然至少有一个是空闲状态, 所以一定能够找到索引寄存器来 操作对应的 FIFO。 也由于索引表是双端口存储, 在更新索引寄存器的时候, 可以同时发起对 索引表的读和写, 不会造成时间的延误。
     本发明的有益效果是 : 采用两次索引, 将一块双端口存储从逻辑上划分为多个 FIFO 结构的存储, 减少了双端口存储的使用, 以及队列管理资源的使用, 并且能够保证同一 时刻同一个 FIFO 被读写, 或者同一时刻不同 FIFO 一个被读而另一个被写, 充分发挥双端口 存储的性能。
     通过结合附图对本发明具体实施例的描述, 本发明的其它方面及特征对本领域的 技术人员而言是显而易见的。
     以上对本发明的具体实施例进行了描述和说明, 这些实施例应被认为其只是示例 性的, 并不用于对本发明进行限制, 本发明应根据所附的权利要求进行解释。

一种具有二次索引结构的存储设备及其操作方法.pdf_第1页
第1页 / 共10页
一种具有二次索引结构的存储设备及其操作方法.pdf_第2页
第2页 / 共10页
一种具有二次索引结构的存储设备及其操作方法.pdf_第3页
第3页 / 共10页
点击查看更多>>
资源描述

《一种具有二次索引结构的存储设备及其操作方法.pdf》由会员分享,可在线阅读,更多相关《一种具有二次索引结构的存储设备及其操作方法.pdf(10页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN101963896A43申请公布日20110202CN101963896ACN101963896A21申请号201010259765922申请日20100820G06F5/06200601G06F9/3820060171申请人中国科学院计算技术研究所地址100080北京市海淀区中关村科学院南路6号72发明人陈飞曹政王凯安学军孙凝晖74专利代理机构北京律诚同业知识产权代理有限公司11006代理人祁建国梁挥54发明名称一种具有二次索引结构的存储设备及其操作方法57摘要本发明公开了一种具有二次索引结构的存储设备,所述设备,包括多队列存储单元,从逻辑上被划分为N个FIFO,具有单独的。

2、读端口和写端口,能够对单元内任意FIFO同时进行读写操作;索引表模块,用于存储所述N个先入先出队列的索引信息,每个先入先出队列的索引信息存储在所述索引表模块中的一行;两个索引寄存器,用于暂存从所述索引表模块中读取出来的索引信息以供读操作和写操作同时使用。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书5页附图2页CN101963897A1/2页21一种具有二次索引结构的存储设备,其特征在于,所述设备,包括多队列存储单元,从逻辑上被划分为N个FIFO,具有单独的读端口和写端口,能够对单元内任意FIFO同时进行读写操作;索引表模块,用于存储所述N个先入先出队列的索。

3、引信息,每个先入先出队列的索引信息存储在所述索引表模块中的一行;两个索引寄存器,用于暂存从所述索引表模块中读取出来的索引信息以供读操作和写操作同时使用。2根据权利要求1所述的具有二次索引结构的存储设备,其特征在于,所述多队列存储单元是一双端口存储。3根据权利要求1所述的具有二次索引结构的存储设备,其特征在于,所述索引表模块使用深度为N的双端口存储。4根据权利要求1所述的具有二次索引结构的存储设备,其特征在于,所述索引表模块中的每一行的索引信息由下面的元素构成头部指针,尾部指针,空满信息;头部指针指向多队列存储中对应的FIFO的头部,尾部指针指向多队列存储中对应FIFO的尾部;空满信息表示此FI。

4、FO的状态,是空队列还是满队列。5根据权利要求1所述的具有二次索引结构的存储设备,其特征在于,对某个FIFO的读写应该首先根据FIFO的号码到索引表中取出索引信息,然后根据索引信息里面头部指针或者尾部指针索引到对应的FIFO的头部或者尾部,从而进行读或者写操作。6根据权利要求1所述的具有二次索引结构的存储设备,其特征在于,所述索引寄存器使用通用寄存器实现。7根据权利要求1所述的具有二次索引结构的存储设备,其特征在于,所述索引寄存器的结构为索引状态,FIFO号,头部指针,尾部指针,空满信息;索引状态表示此索引寄存器的状态,是四种状态中的一种空闲、读、写、读写,FIFO号表示此索引寄存器的内容代表。

5、哪个FIFO的索引信息,同时也代表了此索引寄存器对应于所述索引表模块中的哪一行,头部指针指向多队列存储单元中对应的FIFO的头部,尾部指针指向多队列存储模块中对应FIFO的尾部,空满信息表示对应FIFO的状态,是空队列还是满队列。8一种具有二次索引结构的存储设备的操作方法,其特征在于,所述方法,包括下列步骤步骤100外部设备输入期望操作的先入先出队列号,查看两个索引寄存器中的先入先出队列号,判断是否存在一个索引寄存器中的先入先出队列号与当前要操作的先入先出队列号相同,若存在,则执行步骤200;否则,执行步骤300;步骤200使用此匹配的索引寄存器来操作对应的先入先出队列;步骤300选择两个索引。

6、寄存器中索引状态为空闲状态的索引寄存器,根据此索引寄存器的先入先出队列号把索引寄存器的内容写回到索引表中以更新所述索引表,同时根据将要操作的先入先出队列号从索引表中把新的索引信息从索引表中读取到此索引寄存器中,并更新索引寄存器的索引状态和先入先出队列号。9根据权利要求8所述的具有二次索引结构的存储设备的操作方法,其特征在于,所述索引表中的每一行的索引信息由下面的元素构成头部指针,尾部指针,空满信息;头部指针指向多队列存储中对应的FIFO的头部,尾部指针指向多队列存储中对应FIFO的尾权利要求书CN101963896ACN101963897A2/2页3部;空满信息表示此FIFO的状态,是空队列还。

7、是满队列。10根据权利要求8所述的具有二次索引结构的存储设备的操作方法,其特征在于,所述索引寄存器的结构为索引状态,FIFO号,头部指针,尾部指针,空满信息;索引状态表示此索引寄存器的状态,是四种状态中的一种空闲、读、写、读写,FIFO号表示此索引寄存器的内容代表哪个FIFO的索引信息,同时也代表了此索引寄存器对应于所述索引表模块中的哪一行,头部指针指向多队列存储单元中对应的FIFO的头部,尾部指针指向多队列存储模块中对应FIFO的尾部,空满信息表示对应FIFO的状态,是空队列还是满队列。11根据权利要求8所述的具有二次索引结构的存储设备的操作方法,其特征在于,当所述索引寄存器的内容将要被一个。

8、新的FIFO的索引信息所替换时,当前索引寄存器中存储的索引信息需要先写回到索引表中以更新索引表对应的行。权利要求书CN101963896ACN101963897A1/5页4一种具有二次索引结构的存储设备及其操作方法技术领域0001本发明涉及通信网络领域中多通道数据的存储,或者并行处理领域中多处理单元指令的存储领域,特别是涉及一种具有二次索引结构的存储设备及其操作方法。背景技术0002在芯片设计中,通常涉及多个相同属性,但是具有不同来源,或者不同目标的数据存储问题。设计一般要求不同来源,或者不同目标的数据分别存储而互不干扰。比如在多核处理器设计中,不同处理器核的指令流应该被存放在不同的先进先出队。

9、列,否则一个指令流的执行可能会阻塞另外一个指令流的执行,在某些情况下,由于阻塞会造成死锁。0003为了使用不同的先进先出队列保存不同的数据流,通常的做法是实现多个完整的先进先出队列FIFO,每个FIFO对应于不同的数据流,每个FIFO各自管理各自的存储队列,则不同FIFO的数据流不会相互阻塞。这样的实现方式会造成硬件资源的浪费,比如每个FIFO都要使用一块双端口存储DUALPORTRAM,在RAM数量受限的情况如可编程逻辑器件中下会造成资源紧张;再比如每个FIFO都有独立的计数器来记录FIFO中数据队列的头部、尾部,需要较多的硬件资源。发明内容0004本发明的目的在于提供一种具有二次索引结构的。

10、存储设备及其操作方法,通过采用两次索引结构,减少了双端口存储的使用,以及队列管理资源的使用,并且能够保证同一时刻同一个FIFO被读写,或者同一时刻不同FIFO一个被读而另一个被写,充分发挥双端口存储的性能。0005为实现本发明的目的而提供的一种具有二次索引结构的存储设备,所述设备,包括0006多队列存储单元,从逻辑上被划分为N个FIFO,具有单独的读端口和写端口,能够对单元内任意FIFO同时进行读写操作;0007索引表模块,用于存储所述N个先入先出队列的索引信息,每个先入先出队列的索引信息存储在所述索引表模块中的一行;0008两个索引寄存器,用于暂存从所述索引表模块中读取出来的索引信息以供读操。

11、作和写操作同时使用。0009所述多队列存储单元是一双端口存储。0010所述索引表模块使用深度为N的双端口存储。0011所述索引表模块中的每一行的索引信息由下面的元素构成头部指针,尾部指针,空满信息;头部指针指向多队列存储中对应的FIFO的头部,尾部指针指向多队列存储中对应FIFO的尾部;空满信息表示此FIFO的状态,是空队列还是满队列。0012对某个FIFO的读写应该首先根据FIFO的号码到索引表中取出索引信息,然后根据索引信息里面头部指针或者尾部指针索引到对应的FIFO的头部或者尾部,从而进行读说明书CN101963896ACN101963897A2/5页5或者写操作0013所述索引寄存器使。

12、用通用寄存器实现。0014所述索引寄存器的结构为索引状态,FIFO号,头部指针,尾部指针,空满信息;索引状态表示此索引寄存器的状态,是四种状态中的一种空闲、读、写、读写,FIFO号表示此索引寄存器的内容代表哪个FIFO的索引信息,同时也代表了此索引寄存器对应于所述索引表模块中的哪一行,头部指针指向多队列存储单元中对应的FIFO的头部,尾部指针指向多队列存储模块中对应FIFO的尾部,空满信息表示对应FIFO的状态,是空队列还是满队列。0015为实现本发明的目的还提供一种具有二次索引结构的存储设备的操作方法,所述方法,包括下列步骤0016步骤100外部设备输入期望操作的先入先出队列号,查看两个索引。

13、寄存器中的先入先出队列号,判断是否存在一个索引寄存器中的先入先出队列号与当前要操作的先入先出队列号相同,若存在,则执行步骤200;否则,执行步骤300;0017步骤200使用此匹配的索引寄存器来操作对应的先入先出队列;0018步骤300选择两个索引寄存器中索引状态为空闲状态的索引寄存器,根据此索引寄存器的先入先出队列号把索引寄存器的内容写回到索引表中以更新所述索引表,同时根据将要操作的先入先出队列号从索引表中把新的索引信息从索引表中读取到此索引寄存器中,并更新索引寄存器的索引状态和先入先出队列号。0019所述索引表中的每一行的索引信息由下面的元素构成头部指针,尾部指针,空满信息;头部指针指向多。

14、队列存储中对应的FIFO的头部,尾部指针指向多队列存储中对应FIFO的尾部;空满信息表示此FIFO的状态,是空队列还是满队列。0020所述索引寄存器的结构为索引状态,FIFO号,头部指针,尾部指针,空满信息;索引状态表示此索引寄存器的状态,是四种状态中的一种空闲、读、写、读写,FIFO号表示此索引寄存器的内容代表哪个FIFO的索引信息,同时也代表了此索引寄存器对应于所述索引表模块中的哪一行,头部指针指向多队列存储单元中对应的FIFO的头部,尾部指针指向多队列存储模块中对应FIFO的尾部,空满信息表示对应FIFO的状态,是空队列还是满队列。0021当所述索引寄存器的内容将要被一个新的FIFO的索。

15、引信息所替换时,当前索引寄存器中存储的索引信息需要先写回到索引表中以更新索引表对应的行。0022本发明的有益效果是采用两次索引,将一块双端口存储从逻辑上划分为多个FIFO结构的存储,减少了双端口存储的使用,以及队列管理资源的使用,并且能够保证同一时刻同一个FIFO被读写,或者同一时刻不同FIFO一个被读而另一个被写,充分发挥双端口存储的性能。附图说明0023图1是本发明的具有二次索引结构的存储设备的结构示意图;0024图2是本发明的一种具有二次索引结构的存储设备的操作方法的步骤流程图。说明书CN101963896ACN101963897A3/5页6具体实施方式0025为了使本发明的目的、技术方。

16、案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种具有二次索引结构的存储设备及其操作方法进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。0026本发明的一种具有二次索引结构的存储设备及其操作方法,通过两次索引,仅仅使用一套队列管理模块,就可以把一块双端口存储从逻辑上划分为多个FIFO结构的存储,减少了双端口存储的使用,以及队列管理资源的使用,并且能够保证同一时刻同一个FIFO被读写,或者同一时刻不同FIFO一个被读而另一个被写,充分发挥双端口存储的性能。0027下面结合上述目标详细介绍本发明的具有二次索引结构的存储设备,图1是本发明的具有二次。

17、索引结构的存储设备的结构示意图,如图1所示,所述设备,包括0028多队列存储单元1,从逻辑上被划分为N个FIFO,具有单独的读端口和写端口,能够对单元内任意FIFO同时读写;0029如图1所示,所述多队列存储单元是一块双端口存储,具有单独的读写端口,可以对存储内任意位置同时读写,此双端口存储从逻辑上被划分为N个FIFO,如图1中FIFO0到FIFON1。0030索引表模块2,用于存储N个FIFO的索引信息,每个FIFO的索引信息存储在所述索引表模块中的一行;0031所述索引表模块使用深度为N的双端口存储,用于存储N个FIFO的索引信息,每个FIFO的索引信息存储在所述索引表模块中的一行,第0行。

18、对应于FIFO0的索引信息,第1行对应于FIFO1的索引信息第N1行对应于FIFON1的索引信息。0032所述索引表中的每一行的索引信息由下面的元素构成头部指针,尾部指针,空满信息。头部指针指向多队列存储中对应的FIFO的头部;尾部指针指向多队列存储中对应FIFO的尾部;空满信息表示此FIFO的状态,是空队列还是满队列。0033对某个FIFO的读写应该首先根据FIFO的号码到索引表中取出索引信息,然后根据索引信息里面头部指针或者尾部指针索引到对应的FIFO的头部或者尾部,从而进行读或者写操作。此种方法称之为二次索引。0034两个索引寄存器3,用于暂存从所述索引表模块2中读取出来的索引信息以供读。

19、操作和写操作使用;0035图1所示的索引寄存器1和索引寄存器2是两行结构相同的索引信息,使用寄存器实现。此两行索引的作用是暂存从索引表读取出来内容。由于索引表只有一个读端口以及一个写端口,而两个FIFO同时被操作时会引起对两行索引信息的改写,一个写端口不能满足这种需求;同时索引表的存储结构不能仅仅直接改变索引表中一行中的某几位信息,基于这两种原因,有必要先把索引表中的信息读取出来放到索引寄存器1或者索引寄存器2中,如此才能实现同时对多队列存储中不同的FIFO进行读或者写。0036索引寄存器的结构为索引状态,FIFO号,头部指针,尾部指针,空满信息。当FIFO被操作的时候,对应的索引寄存器的内容。

20、会发生改变,比如头部指针和尾部指针会改变,为了避免对索引表写端口的频繁操作,这个时候不需要更新其在索引表中对应的行的内容。也即是说,索引寄存器中的信息是最新的信息,而索引表的信息可能是落后的信息。索引寄存器的内容仅仅在被新的一个FIFO的索引信息替换的时候,才会被更新到索引表说明书CN101963896ACN101963897A4/5页7对应的行中。索引寄存器各项的含义如下00371索引状态表示此索引寄存器的状态,可以是四种状态中的一种空闲、读、写、读写。空闲表示此寄存器空闲,其对应的FIFO无读写操作,寄存器内容可以被索引表新的内容替换;读状态表示此索引对应的FIFO当前正在被读取,而没有被。

21、写入;写状态表示此索引对应的FIFO当前正在被写入,而没有被读取;读写状态表示此索引对应的FIFO当前既被写入,也被读取。00382FIFO号表示此索引寄存器的内容代表哪个FIFO的索引信息,同时也代表了此索引寄存器对应于索引表中的哪一行。00393头部指针H指向多队列存储中对应的FIFO的头部,如图1中所示的H1或者H2。00404尾部指针T指向多队列存储中对应FIFO的尾部,如图1中所示的T1或者T2。00415空满信息表示对应FIFO的状态,是空队列还是满队列。0042由于多队列存储单元只有一个读端口和一个写端口,因此不可能出现同时读两个FIFO,或者同时写两个FIFO的情况,也不会出现。

22、同时操作三个含三个以上FIFO的情况,因此两个索引寄存器足够维护多队列存储结构的运行。也因此不会出现头指针H1和H2同时有效,或者尾指针T1和T2同时有效的情况。所以多队列存储单元中的写端口所需要的尾部指针T会选择T1或者T2中有效的那个,读端口所需要的头部指针H会选择H1或者H2中有效的那个。0043相应于本发明的一种具有二次索引结构的存储设备,还提供一种具有二次索引结构的存储设备的操作方法,图2是本发明的一种具有二次索引结构的存储设备的操作方法的步骤流程图,如图2所示,所述方法,包括下列步骤0044步骤000当设备外部希望操作多队列存储中的某个FIFO时,则向本专利所说的设备输入期望操作的。

23、FIFO号。写操作发生在图1所示的多队列存储写端口,读操作发生在图1所示的多队列存储读端口。两种操作可以单独发生,也可以同时发生。多队列存储的读端口和写端口的输入的FIFO号可以相同,也可以不同。0045步骤100当对多队列存储中的FIFO有写操作或者读操作时,查看两个索引寄存器中的FIFO号,判断是否存在一个索引寄存器中的FIFO号与当前要操作的FIFO号相同,若存在,则执行步骤200;否则,执行步骤300;0046步骤200不管所述索引寄存器的状态如何,使用此匹配的索引寄存器来操作对应的FIFO;0047步骤300选择两个索引寄存器中索引状态为空闲状态的索引寄存器,根据此索引寄存器的FIF。

24、O号把索引寄存器中的头部指针,尾部指针,空满信息内容写回到索引表中以更新所述索引表,同时根据将要操作的FIFO号从索引表中把新的索引信息头部指针,尾部指针,空满信息从索引表中读取到此索引寄存器中,并更新索引寄存器的索引状态和FIFO号。0048当相应FIFO被操作的时候,对应的索引寄存器的内容会发生改变,比如头部指针和尾部指针会改变,为了避免对索引表写端口的频繁操作,这个时候不需要更新其在索引表中对应的行的内容,而仅更新相应索引寄存器的内容。而在本步骤中,由于索引寄存器的内容将要被一个新的FIFO的索引信息所替换,因此,当前索引寄存器中存储的索引信息需说明书CN101963896ACN1019。

25、63897A5/5页8要先写回到索引表中以更新索引表对应的行中,然后才会根据将要操作的FIFO号从索引表中把新的索引信息从索引表中读取到此索引寄存器中,并更新索引寄存器的索引状态和FIFO号。0049较佳地,由于多队列存储器只有一个读端口和一个写端口,在新的操作到达多队列存储时,两个索引寄存器必然至少有一个是空闲状态,所以一定能够找到索引寄存器来操作对应的FIFO。也由于索引表是双端口存储,在更新索引寄存器的时候,可以同时发起对索引表的读和写,不会造成时间的延误。0050本发明的有益效果是采用两次索引,将一块双端口存储从逻辑上划分为多个FIFO结构的存储,减少了双端口存储的使用,以及队列管理资源的使用,并且能够保证同一时刻同一个FIFO被读写,或者同一时刻不同FIFO一个被读而另一个被写,充分发挥双端口存储的性能。0051通过结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本领域的技术人员而言是显而易见的。0052以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只是示例性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。说明书CN101963896ACN101963897A1/2页9图1说明书附图CN101963896ACN101963897A2/2页10图2说明书附图CN101963896A。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1