CN110688238A - 一种分离存储的队列实现方法及装置 - Google Patents

一种分离存储的队列实现方法及装置 Download PDF

Info

Publication number
CN110688238A
CN110688238A CN201910846465.1A CN201910846465A CN110688238A CN 110688238 A CN110688238 A CN 110688238A CN 201910846465 A CN201910846465 A CN 201910846465A CN 110688238 A CN110688238 A CN 110688238A
Authority
CN
China
Prior art keywords
queue
main memory
chip
entry
entries
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.)
Granted
Application number
CN201910846465.1A
Other languages
English (en)
Other versions
CN110688238B (zh
Inventor
曹志强
斯添浩
牟华先
冯冬明
王梦嘉
周舟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuxi Jiangnan Computing Technology Institute
Original Assignee
Wuxi Jiangnan Computing Technology Institute
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuxi Jiangnan Computing Technology Institute filed Critical Wuxi Jiangnan Computing Technology Institute
Priority to CN201910846465.1A priority Critical patent/CN110688238B/zh
Publication of CN110688238A publication Critical patent/CN110688238A/zh
Application granted granted Critical
Publication of CN110688238B publication Critical patent/CN110688238B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

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)

Abstract

一种分离存储的队列实现方法及装置,属于数字电路技术领域。本发明的方法包括:将片上队列和主存队列组成一条逻辑队列,片上队列位于逻辑队列的头部,主存队列位于逻辑队列的尾部;当片上队列非满且主存队列非空时,从主存队列头部读取条目到片上队列尾部。本发明的装置包括:写入控制模块、读取控制模块、主存队列管理模块、片上队列管理模块、片上队列存储器、主存队列条目预取模块、主存读写控制模块。本发明既能够保证队列有足够大的存储空间,同时又具有较快的访问速度。

Description

一种分离存储的队列实现方法及装置
技术领域
本发明涉及数字电路技术领域,尤其涉及一种分离存储的队列实现方法及装置。
背景技术
在数字电路设计领域,队列是常用的存储结构,具有FIFO(First In First Out,先进先出)的特性。在集成DMA引擎的数字电路系统中,队列结构的实现方式一般有两种:片上队列和主存队列。片上队列存储空间位于芯片内部,具有访问速率快的优点,不足是存储容量有限;主存队列存储空间位于系统主存中,优点是存储容量大,但存在访问速率慢的不足。
发明内容
本发明的目的是为了解决上述现有技术存在的问题,提供一种分离存储的队列实现方法及装置,其既能够保证队列有足够大的存储空间,同时又具有较快的访问速度。
本发明的目的是通过以下技术方案实现的:
一种分离存储的队列实现方法,包括:
将片上队列和主存队列组成一条逻辑队列,所述片上队列位于所述逻辑队列的头部,所述主存队列位于所述逻辑队列的尾部;
当所述片上队列非满且所述主存队列非空时,从所述主存队列头部读取条目到所述片上队列尾部。
本发明充分利用了片上队列访问速率快,以及主存队列存储容量大的优势,并将两者合理有效地结合利用。主要的工作原理:从整个逻辑队列的头部读取条目,即从片上队列读取条目,保证速率;而当从片上队列读取条目后,片上队列处于非满状态,且主存队列非空时,按写入时的顺序从主存队列的头部读取条目到片上队列的尾部,以使得所有条目均从片上队列读取。写入条目时,从整条逻辑队列的尾部写入,即当主存队列空时,从片上队列的尾部写入(片上队列非满);当主存队列非空时(同时非满),从主存队列的尾部写入,以保证整条逻辑队列中条目按照写入顺序排列,及按照写入的顺序读取条目。
作为本发明优选,所述主存队列非满时允许写入条目,且写入条目时,如果所述片上队列非满且所述主存队列空,则把条目写入所述片上队列;否则把条目写入所述主存队列。
作为本发明优选,所述片上队列非空时允许读取条目,且只从所述片上队列头部读取条目。
作为本发明优选,所述片上队列和主存队列分别通过一组寄存器记录各自状态,头指针寄存器和尾指针寄存器记录队列的头位置和尾位置,队列条目计数寄存器记录队列当前条目数,空满标记寄存器记录队列空满状态。
作为本发明优选,所述逻辑队列中的条目写入的顺序与读取的顺序相同。
本发明还提供一种分离存储的队列装置,其特征在于,包括:
片上队列,与主存队列组成一条逻辑队列,且位于所述逻辑队列的头部;
主存队列,与片上队列组成一条逻辑队列,且位于所述逻辑队列的尾部;
主存队列条目预取模块,用于当所述片上队列非满且所述主存队列非空时,从所述主存队列头部读取条目到所述片上队列尾部。
作为本发明优选,还包括:
写入控制模块,用于当所述主存队列非满时写入条目,且写入条目时,如果所述片上队列非满且所述主存队列空,则把条目写入所述片上队列;否则把条目写入所述主存队列。
作为本发明优选,还包括:
读取控制模块,用于当所述片上队列非空时读取条目,且只从所述片上队列头部读取条目。
作为本发明优选,还包括:
片上队列管理模块,用于管理片上队列结构,包括记录片上队列的头指针、尾指针、空状态、满状态、条目数等实时信息;
主存队列管理模块,用于管理主存队列结构,包括记记录主存队列头指针、尾指针、空状态、满状态、条目数等实时信息。
作为本发明优选,还包括:
主存读写控制模块,用于主存读写请求的发起,包括所述主存队列管理模块输入的主存条目写入请求,和所述主存队列条目预取模块输入的主存条目预取请求;并处理主存读响应的处理,即预取响应的处理,将预取响应返回到所述主存队列条目预取模块。
本发明的优点是:本发明结合了片上队列访问速率快和主存队列存储容量大的优势,同时又保证队列先进先出的逻辑属性。当写入的队列条目较少时,优先使用片上队列,可实现队列条目的快速读写。当写入的队列条目较多时,大容量的主存队列保证能够接收写入的条目。同时主存队列条目预取逻辑可最大限度地提升队列读取速率。
附图说明
图1为本发明装置的结构原理图;
图2为主存队列指针管理视图;
图3为片上队列指针管理视图。
具体实施方式
下面将结合附图和具体实施方式对本发明做进一步的详细说明。
一种分离存储的队列实现方法,包括:
将片上队列和主存队列组成一条逻辑队列,所述片上队列位于所述逻辑队列的头部,所述主存队列位于所述逻辑队列的尾部;所述片上队列和主存队列分别通过一组寄存器记录各自状态,头指针寄存器和尾指针寄存器记录队列的头位置和尾位置,队列条目计数寄存器记录队列当前条目数,空满标记寄存器记录队列空满状态。
写入条目:所述主存队列非满时允许写入条目,且写入条目时,如果所述片上队列非满且所述主存队列空,则把条目写入所述片上队列;否则把条目写入所述主存队列。
读取条目:所述片上队列非空时允许读取条目,且只从所述片上队列头部读取条目。
预读条目:当所述片上队列非满且所述主存队列非空时,从所述主存队列头部读取条目到所述片上队列尾部。
本方法充分利用了片上队列访问速率快,以及主存队列存储容量大的优势,并将两者合理有效地结合利用。主要的工作原理:从整个逻辑队列的头部读取条目,即从片上队列读取条目,保证速率;而当从片上队列读取条目后,片上队列处于非满状态,且主存队列非空时,按写入时的顺序从主存队列的头部读取条目到片上队列的尾部,以使得所有条目均从片上队列读取。写入条目时,从整条逻辑队列的尾部写入,即当主存队列空时,从片上队列的尾部写入(片上队列非满);当主存队列非空时(同时非满),从主存队列的尾部写入,以保证整条逻辑队列中条目按照写入顺序排列,及按照写入的顺序读取条目。
另外,本发明还提供一种分离存储的队列装置,包括:
片上队列,控制逻辑和存储空间完全在片上实现,存储空间使用片上存储器实现;
主存队列,存储空间位于主存中,片上只实现队列配置信息和控制信息,主存队列的深度和主存起始地址可通过寄存器配置;片上队列与主存队列共同组成一条逻辑队列,其中片上队列位于队列头部位置,主存队列位于队列尾部位置。
写入控制模块,当有队列条目写入时,根据片上队列管理模块和主存队列管理模块输入的队列空满信号决定条目写入的队列,当主存队列满时,拒绝接收该写入条目;当主存队列非空或片上队列满时,该写入条目输入到主存队列管理模块处理;当主存队列空且片上队列非满时,该写入条目输入到片上队列管理模块处理。
读取控制模块,当收到外部读信号时,判断片上队列管理模块输入的空信号,如果片上队列非空,则从片上管理队列读取队列条目并输出,否则不输出队列条目。
主存队列管理模块,当收到外部队列配置请求时,更新主存队列配置寄存器,包括起始地址寄存器和队列深度寄存器。该模块向写入控制模块输入队列空满信号,当收到写入控制模块输入的条目时,根据尾指针寄存器和起始地址寄存器内容,生成写主存请求输入到主存读写控制模块,请求地址为“起始地址+尾指针*条目大小”,同时尾指针加1,条目计数器加1。该向主存队列条目预取模块输入头指针、预取头指针信号,当主存队列条目预取模块生成预取请求时,预取头指针加1,当主存队列条目预取模块收到预取响应时,头指针加1,条目计数器减1。该模块的队列指针视图如图2所示,尾指针指向下一个写入条目存放的位置,头指针指向下一个将被读取的位置,预取头指针指向下一个预取请求的位置。条目计数器为0时,空信号输出有效,条目计数器等于队列深度时,满信号输出有效。
片上队列管理模块,当收到写入控制模块输入的条目时,根据尾指针值生成片上队列存储器写地址,再把条目输入到片上队列存储器指定位置,同时尾指针加1,条目计数器加1,判满计数器加1。当收到主存队列条目预取模块输入的预取条目时,根据尾指针值生成片上队列存储器写地址,再把条目输入到片上队列存储器指定位置,同时尾指针加1,条目计数器加1,判满计数器加1。当主存队列条目预取模块发起预取时,预取尾指针加1,判满计数器加1。当收到读取控制模块输入的读请求时,根据头指针生成片上队列存储器读地址,向片上队列存储器输入读请求,并把读回的数据输入到读取控制模块,同时头指针加1,条目计数器减1,判满计数器减1。该模块的队列指针视图如图3所示,头指针执行下一个读取的位置,尾指针指向下一个写入的位置,预取尾指针执行下一个预取请求存放的位置。当条目计数器为0时,输出空信号有效,当判满计数器等于队列深度时,输出满信号有效。
片上队列存储器,该模块为片上队列的存储体,接收片上队列管理模块输入的读写控制,实现片上队列条目数据的存储。当收到片上队列管理模块输入的写请求时,根据地址把数据写入到指定的单元中,当收到片上队列管理模块输入的读请求时,根据地址把指定单元的数据输出到片上队列管理模块。
主存队列条目预取模块,该模块接收主存队列管理模块输入的空信号、预取头指针信号,接收片上队列管理模块输入的满信号,接收主存读写控制模块输入的预取响应。当主存队列管理模块输入的空信号无效且片上队列管理模块输入的满信号无效时,根据主存队列预取头指针信号生成预取请求输入到主存读写控制模块。当主存读写控制模块输入预取响应有效时,把预取响应输入到片上队列管理模块。
主存读写控制模块,该模块接收主存队列管理模块输入的写请求、主存队列条目预取模块输入的预取读请求、访存接口的预取读响应。当主存队列管理模块输入的写请求有效时,接收写请求并输出到访存接口。当主存队列条目预取模块输入的预取读请求有效时,接收读请求并输出到访存接口。当收到访存接口输入的预取读响应时,接收该读响应并输入到主存队列条目预取模块。
以上所述,仅为本发明较佳的具体实施方式,该具体实施方式是基于本发明整体构思下的一种实现方式,而且本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。

Claims (10)

1.一种分离存储的队列实现方法,其特征在于,包括:
将片上队列和主存队列组成一条逻辑队列,所述片上队列位于所述逻辑队列的头部,所述主存队列位于所述逻辑队列的尾部;
当所述片上队列非满且所述主存队列非空时,从所述主存队列头部读取条目到所述片上队列尾部。
2.根据权利要求1所述的分离存储的队列实现方法,其特征在于,所述主存队列非满时允许写入条目,且写入条目时,如果所述片上队列非满且所述主存队列空,则把条目写入所述片上队列;否则把条目写入所述主存队列。
3.根据权利要求1所述的分离存储的队列实现方法,其特征在于,所述片上队列非空时允许读取条目,且只从所述片上队列头部读取条目。
4.根据权利要求1所述的分离存储的队列实现方法,其特征在于,所述片上队列和主存队列分别通过一组寄存器记录各自状态,头指针寄存器和尾指针寄存器记录队列的头位置和尾位置,队列条目计数寄存器记录队列当前条目数,空满标记寄存器记录队列空满状态。
5.根据权利要求1所述的分离存储的队列实现方法,其特征在于,所述逻辑队列中的条目写入的顺序与读取的顺序相同。
6.一种分离存储的队列装置,其特征在于,包括:
片上队列,与主存队列组成一条逻辑队列,且位于所述逻辑队列的头部;
主存队列,与片上队列组成一条逻辑队列,且位于所述逻辑队列的尾部;
主存队列条目预取模块,用于当所述片上队列非满且所述主存队列非空时,从所述主存队列头部读取条目到所述片上队列尾部。
7.根据权利要求6所述的分离存储的队列装置,其特征在于,还包括:
写入控制模块,用于当所述主存队列非满时写入条目,且写入条目时,如果所述片上队列非满且所述主存队列空,则把条目写入所述片上队列;否则把条目写入所述主存队列。
8.根据权利要求6所述的分离存储的队列装置,其特征在于,还包括:
读取控制模块,用于当所述片上队列非空时读取条目,且只从所述片上队列头部读取条目。
9.根据权利要求6所述的分离存储的队列装置,其特征在于,还包括:
片上队列管理模块,用于管理片上队列结构,包括记录片上队列的头指针、尾指针、空状态、满状态、条目数等实时信息;
主存队列管理模块,用于管理主存队列结构,包括记记录主存队列头指针、尾指针、空状态、满状态、条目数等实时信息。
10.根据权利要求9所述的分离存储的队列装置,其特征在于,还包括:
主存读写控制模块,用于主存读写请求的发起,包括所述主存队列管理模块输入的主存条目写入请求,和所述主存队列条目预取模块输入的主存条目预取请求;并处理主存读响应的处理,即预取响应的处理,将预取响应返回到所述主存队列条目预取模块。
CN201910846465.1A 2019-09-09 2019-09-09 一种分离存储的队列实现方法及装置 Active CN110688238B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910846465.1A CN110688238B (zh) 2019-09-09 2019-09-09 一种分离存储的队列实现方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910846465.1A CN110688238B (zh) 2019-09-09 2019-09-09 一种分离存储的队列实现方法及装置

Publications (2)

Publication Number Publication Date
CN110688238A true CN110688238A (zh) 2020-01-14
CN110688238B CN110688238B (zh) 2021-05-07

Family

ID=69107925

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910846465.1A Active CN110688238B (zh) 2019-09-09 2019-09-09 一种分离存储的队列实现方法及装置

Country Status (1)

Country Link
CN (1) CN110688238B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114816319A (zh) * 2022-04-21 2022-07-29 中国人民解放军32802部队 一种fifo存储器的多级流水读写方法和装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1303053A (zh) * 2000-01-04 2001-07-11 国际商业机器公司 缓冲器的队列管理器
CN1949163A (zh) * 2006-11-30 2007-04-18 北京中星微电子有限公司 一种虚拟先入先出内存的实现方法和控制装置
CN103345429A (zh) * 2013-06-19 2013-10-09 中国科学院计算技术研究所 基于片上ram的高并发访存加速方法、加速器及cpu
CN105930282A (zh) * 2016-04-14 2016-09-07 北京时代民芯科技有限公司 一种用于nand flash的数据缓存方法
US9838500B1 (en) * 2014-03-11 2017-12-05 Marvell Israel (M.I.S.L) Ltd. Network device and method for packet processing
CN108595258A (zh) * 2018-05-02 2018-09-28 北京航空航天大学 一种gpgpu寄存器文件动态扩展方法
CN108897630A (zh) * 2018-06-06 2018-11-27 郑州云海信息技术有限公司 一种基于OpenCL的全局内存缓存方法、系统及装置
CN109783035A (zh) * 2019-02-28 2019-05-21 中国人民解放军陆军工程大学 一种基于大颗粒度存储单元的队列管理器及方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1303053A (zh) * 2000-01-04 2001-07-11 国际商业机器公司 缓冲器的队列管理器
CN1949163A (zh) * 2006-11-30 2007-04-18 北京中星微电子有限公司 一种虚拟先入先出内存的实现方法和控制装置
CN103345429A (zh) * 2013-06-19 2013-10-09 中国科学院计算技术研究所 基于片上ram的高并发访存加速方法、加速器及cpu
US9838500B1 (en) * 2014-03-11 2017-12-05 Marvell Israel (M.I.S.L) Ltd. Network device and method for packet processing
CN105930282A (zh) * 2016-04-14 2016-09-07 北京时代民芯科技有限公司 一种用于nand flash的数据缓存方法
CN108595258A (zh) * 2018-05-02 2018-09-28 北京航空航天大学 一种gpgpu寄存器文件动态扩展方法
CN108897630A (zh) * 2018-06-06 2018-11-27 郑州云海信息技术有限公司 一种基于OpenCL的全局内存缓存方法、系统及装置
CN109783035A (zh) * 2019-02-28 2019-05-21 中国人民解放军陆军工程大学 一种基于大颗粒度存储单元的队列管理器及方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114816319A (zh) * 2022-04-21 2022-07-29 中国人民解放军32802部队 一种fifo存储器的多级流水读写方法和装置

Also Published As

Publication number Publication date
CN110688238B (zh) 2021-05-07

Similar Documents

Publication Publication Date Title
US5388074A (en) FIFO memory using single output register
US7603496B2 (en) Buffering data during data transfer through a plurality of channels
US5490257A (en) RAM based FIFO memory half-full detection apparatus and method
JPS58225432A (ja) 要求バツフア装置
US11681632B2 (en) Techniques for storing data and tags in different memory arrays
CN111684427A (zh) 高速缓存控制感知的存储器控制器
US10133549B1 (en) Systems and methods for implementing a synchronous FIFO with registered outputs
CN115080455B (zh) 一种计算机芯片、计算机板卡、存储空间分配方法及装置
US7870310B2 (en) Multiple counters to relieve flag restriction in a multi-queue first-in first-out memory system
US20030097526A1 (en) High-speed first-in-first-out buffer
CN101681289A (zh) 处理器性能监测
CN110688238B (zh) 一种分离存储的队列实现方法及装置
CN109508782A (zh) 基于神经网络深度学习的加速电路和方法
US7489567B2 (en) FIFO memory device with non-volatile storage stage
TW491970B (en) Page collector for improving performance of a memory
US20100122033A1 (en) Memory system including a spiral cache
US6292807B1 (en) Method for controlling pipelined memory access requests
US8209492B2 (en) Systems and methods of accessing common registers in a multi-core processor
CN115048320A (zh) Vtc加速器及其计算vtc的方法
CN114860158A (zh) 一种高速数据采集记录方法
CN114091384A (zh) 数据处理电路及人工智能芯片、数据处理方法和装置
EP1596280A1 (en) Pseudo register file write ports
CN117917735B (zh) 伪双端口sram的读写控制方法及装置
CN115658568A (zh) 一种fifo装置及其数据处理方法
US20230136654A1 (en) Memory system and command determination method

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