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

文档序号:6608061阅读:131来源:国知局
专利名称:一种具有二次索引结构的存储设备及其操作方法
技术领域
本发明涉及通信网络领域中多通道数据的存储,或者并行处理领域中多处理单元 指令的存储领域,特别是涉及一种具有二次索引结构的存储设备及其操作方法
背景技术
在芯片设计中,通常涉及多个相同属性,但是具有不同来源,或者不同目标的数据 存储问题。设计一般要求不同来源,或者不同目标的数据分别存储而互不干扰。比如在多 核处理器设计中,不同处理器核的指令流应该被存放在不同的先进先出队列,否则一个指 令流的执行可能会阻塞另外一个指令流的执行,在某些情况下,由于阻塞会造成死锁。为了使用不同的先进先出队列保存不同的数据流,通常的做法是实现多个完整的 先进先出队列(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的状态,是空队列还是满队 列。为实现本发明的目的还提供一种具有二次索弓I结构的存储设备的操作方法,所述 方法,包括下列步骤步骤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-I。索引表模块2,用于存储N个FIFO的索引信息,每个FIFO的索引信息存储在所述 索引表模块中的一行;所述索引表模块使用深度为N的双端口存储,用于存储N个FIFO的索引信息,每 个FIFO的索引信息存储在所述索引表模块中的一行,第0行对应于FIFO 0的索引信息,第 1行对应于FIFO 1的索引信息……第N-I行对应于FIF0N-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中所示的Hl或者 H2。4.尾部指针⑴指向多队列存储中对应FIFO的尾部,如图1中所示的Tl或者T2。5.空满信息表示对应FIFO的状态,是空队列还是满队列。由于多队列存储单元只有一个读端口和一个写端口,因此不可能出现同时读两个 FIFO,或者同时写两个FIFO的情况,也不会出现同时操作三个(含三个)以上FIFO的情况, 因此两个索引寄存器足够维护多队列存储结构的运行。也因此不会出现头指针Hl和H2同 时有效,或者尾指针Tl和T2同时有效的情况。所以多队列存储单元中的写端口所需要的 尾部指针T会选择Tl或者T2中有效的那个,读端口所需要的头部指针H会选择Hl或者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—个被读而另一个被写,充分发挥双端口 存储的性能。通过结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本领域的 技术人员而言是显而易见的。以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只是示例 性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。
权利要求
一种具有二次索引结构的存储设备,其特征在于,所述设备,包括多队列存储单元,从逻辑上被划分为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的尾部;空满信息表示此FIFO的状态,是空队列还是满队列。
10.根据权利要求8所述的具有二次索引结构的存储设备的操作方法,其特征在于,所 述索引寄存器的结构为{索引状态,FIFO号,头部指针,尾部指针,空满信息};索引状态表 示此索引寄存器的状态,是四种状态中的一种空闲、读、写、读写,FIFO号表示此索引寄存 器的内容代表哪个FIFO的索引信息,同时也代表了此索引寄存器对应于所述索引表模块 中的哪一行,头部指针指向多队列存储单元中对应的FIFO的头部,尾部指针指向多队列存 储模块中对应FIFO的尾部,空满信息表示对应FIFO的状态,是空队列还是满队列。
11.根据权利要求8所述的具有二次索引结构的存储设备的操作方法,其特征在于,当 所述索引寄存器的内容将要被一个新的FIFO的索引信息所替换时,当前索引寄存器中存 储的索引信息需要先写回到索引表中以更新索引表对应的行。
全文摘要
本发明公开了一种具有二次索引结构的存储设备,所述设备,包括多队列存储单元,从逻辑上被划分为N个FIFO,具有单独的读端口和写端口,能够对单元内任意FIFO同时进行读写操作;索引表模块,用于存储所述N个先入先出队列的索引信息,每个先入先出队列的索引信息存储在所述索引表模块中的一行;两个索引寄存器,用于暂存从所述索引表模块中读取出来的索引信息以供读操作和写操作同时使用。
文档编号G06F5/06GK101963896SQ20101025976
公开日2011年2月2日 申请日期2010年8月20日 优先权日2010年8月20日
发明者孙凝晖, 安学军, 曹政, 王凯, 陈飞 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1