CN115934004B - 链表形式的队列管理电路、方法、存储装置及电子设备 - Google Patents
链表形式的队列管理电路、方法、存储装置及电子设备 Download PDFInfo
- Publication number
- CN115934004B CN115934004B CN202310220260.9A CN202310220260A CN115934004B CN 115934004 B CN115934004 B CN 115934004B CN 202310220260 A CN202310220260 A CN 202310220260A CN 115934004 B CN115934004 B CN 115934004B
- Authority
- CN
- China
- Prior art keywords
- queue
- linked list
- address
- storage device
- value
- 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
- 238000000034 method Methods 0.000 title claims abstract description 33
- 230000015654 memory Effects 0.000 claims abstract description 270
- 238000007726 management method Methods 0.000 claims description 201
- 230000004044 response Effects 0.000 claims description 74
- 238000013500 data storage Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 14
- 230000001747 exhibiting effect Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种链表形式的队列管理电路、方法、存储装置及电子设备,链表形式的队列管理电路包括链表参数存储装置、串链存储器和控制模块。链表参数存储装置被配置成存储与队列相关的链表参数。串链存储器被配置成存储队列中每一个元素链接到下一个元素的链接地址。控制模块被配置成:接收针对队列的操作指令,响应于该操作指令,对链表参数存储装置进行操作或对链表参数存储装置和串链存储器进行操作。根据本申请的链表形式的队列管理电路、方法、存储装置及电子设备利用硬件架构实现了链表形式的队列管理,由此,提升了针对队列的处理速度和存储空间利用率,并进一步提高了芯片的性能。
Description
技术领域
本申请涉及存储领域,特别涉及链表形式的队列管理电路、方法、存储装置及电子设备。
背景技术
链表作为一种物理存储单元上非连续、非顺序的存储结构,可以灵活使用存储单元,因此链表形式的队列可以充分利用计算机的存储空间管理其队列元素。然而,现有的链表形式的队列管理通常利用计算机软件实现,这不仅提高了队列对使用环境的要求,也限制了队列的适用范围。例如,在片上环境中,很难适用基于计算机软件的队列管理。
发明内容
鉴于此,本申请提供了一种链表形式的队列管理方法、电路、以及包括其的存储装置及电子设备,其能够缓解或克服上面提到的部分或全部缺陷以及其他可能的缺陷。
根据本申请的一个方面,提供了一种链表形式的队列管理电路,其包括:链表参数存储装置,其被配置成存储与队列相关的链表参数;串链存储器,其被配置成存储队列中每一个元素链接到下一个元素的链接地址;以及控制模块,其被配置成:接收针对队列的操作指令,响应于操作指令,对链表参数存储装置进行操作或对链表参数存储装置和串链存储器进行操作。
根据本申请的一些实施例的链表形式的队列管理电路,其中,响应于操作指令,对链表参数存储装置进行操作或对链表参数存储装置和串链存储器进行操作包括:响应于操作指令包含元素入队指令,从链表参数存储装置读取关于队列的队列长度的值;响应于该队列长度的值等于零,对链表参数存储装置进行第一改写操作;以及,响应于该队列长度的值大于零,对链表参数存储装置和串链存储器进行第二改写操作。
根据本申请的一些实施例的链表形式的队列管理电路,其中,链表参数包括头指针、尾指针和队列长度;第一改写操作包括:使链表参数存储装置中队列长度的值递增一;获取空闲地址;以及将链表参数存储装置中关于队列的尾指针的值改写为空闲地址,以及将链表参数存储装置中关于队列的头指针的值改写为空闲地址。
根据本申请的一些实施例的链表形式的队列管理电路,其中,链表参数包括头指针、尾指针和队列长度;第二改写操作包括:使链表参数存储装置中队列长度的值递增一;获取空闲地址;从链表参数存储装置中读取关于队列的尾指针的值作为第一地址;在串链存储器中由第一地址指示的存储单元中写入空闲地址;以及将链表参数存储装置中关于队列的尾指针的值改写为空闲地址。
根据本申请的一些实施例的链表形式的队列管理电路,还包括用于进行地址管理的地址管理模块;获取空闲地址包括:向地址管理模块申请空闲地址,以及,获取地址管理模块分配的空闲地址。
根据本申请的一些实施例的链表形式的队列管理电路,其中,响应于操作指令,对链表参数存储装置进行操作或对链表参数存储装置和串链存储器进行操作包括:响应于操作指令包含元素出队指令,从链表参数存储装置读取关于队列的队列长度的值;响应于队列长度的值大于一,对链表参数存储装置和串链存储器进行第三改写操作;以及,响应于队列长度的值等于一,对链表参数存储装置进行第四改写操作。
根据本申请的一些实施例的链表形式的队列管理电路,其中,链表参数包括头指针、尾指针和队列长度;第三改写操作包括:使链表参数存储装置中队列长度的值递减一;从链表参数存储装置读取关于队列的头指针的值作为第二地址;读取串链存储器中由第二地址指示的存储单元中存储的链接地址,将该链接地址作为第三地址;以及将链表参数存储装置中关于队列的头指针的值改写为第三地址。
根据本申请的一些实施例的链表形式的队列管理电路,其中,链表参数包括头指针、尾指针和队列长度;第四改写操作包括:使链表参数存储装置中队列长度的值递减一;以及从链表参数存储装置读取关于队列的头指针的值作为第二地址。
根据本申请的一些实施例的链表形式的队列管理电路,还包括用于进行地址管理的地址管理模块;控制模块被进一步配置成:响应于确定操作指令包含元素出队指令,申请地址管理模块将第二地址设置为空闲地址。
根据本申请的一些实施例的链表形式的队列管理电路,其中,链表参数存储装置包括头指针存储器、尾指针存储器和队列长度存储器,其中头指针存储器被配置成存储头指针的值,头指针指向存储队列的第一个元素的存储单元,尾指针存储器被配置成存储尾指针的值,尾指针指向存储队列的最后一个元素的存储单元,以及队列长度存储器被配置成存储队列长度的值,队列长度指队列包含的元素的数量。
根据本申请的一些实施例的链表形式的队列管理电路,其中,控制模块包括:头指针管理子模块、尾指针管理子模块、队列长度管理子模块和串链管理子模块,其中,头指针管理子模块被配置成:响应于操作指令,对头指针存储器中头指针的值进行修改;尾指针管理子模块被配置成:响应于操作指令,对尾指针存储器中尾指针的值进行修改;队列长度管理子模块被配置成:响应于操作指令,对队列长度存储器中队列长度的值进行修改;以及,串链管理子模块被配置成:响应于操作指令并基于链表参数,对串链存储器进行操作。
根据本申请的一些实施例的链表形式的队列管理电路,其中,接收针对队列的操作指令包括:接收队列的队列标识、使能信号和操作信号;其中,当使能信号非零、操作信号也非零时,操作指令包含针对队列的元素入队指令;以及,当使能信号非零、操作信号为零时,操作指令包含针对队列的元素出队指令。
根据本申请的一些实施例的链表形式的队列管理电路,其中,对链表参数存储装置进行操作或对链表参数存储装置和串链存储器进行操作包括:在接收到操作指令后的预定时刻,对链表参数存储装置进行操作或对链表参数存储装置和串链存储器进行操作。
根据本申请的一个方面,提供了一种链表形式的队列存储装置,其包括:如上文实施例中提供的链表形式的队列管理电路和队列数据存储器;队列数据存储器被配置成存储队列的元素包含的数据,元素包含的数据在队列数据存储器中的存储地址与元素对应的链接地址在串链存储器中的存储地址相同;其中,控制模块被进一步配置成:接收数据,并且在队列数据存储器中的空闲地址处存储数据。
根据本申请的一个方面,提供了一种链表形式的队列存储装置,其包括:如上文实施例中提供的链表形式的队列管理电路和队列数据存储器;队列数据存储器被配置成存储队列的元素包含的数据,元素包含的数据在队列数据存储器中的存储地址与元素对应的链接地址在串链存储器中的存储地址相同;其中,控制模块被进一步配置成:在队列数据存储器中读取头指针指向的存储单元中存储的数据,并输出数据。
根据本申请的一个方面,提供了一种电子设备,其包括如上文实施例中提供的链表形式的队列存储装置。
根据本申请的一个方面,提供了一种链表形式的队列管理方法,应用于链表形式的队列管理电路,该方法包括:接收针对队列的操作指令,响应于操作指令,对链表参数存储装置进行操作或对链表参数存储装置和串链存储器进行操作。
在根据本申请的一些实施例的链表形式的队列管理方法中,响应于操作指令,对链表参数存储装置进行操作或对链表参数存储装置和串链存储器进行操作包括:响应于操作指令包含元素入队指令,从链表参数存储装置读取关于队列的队列长度的值;响应于队列长度的值等于零,对链表参数存储装置进行第一改写操作;以及,响应于队列长度的值大于零,对链表参数存储装置和串链存储器进行第二改写操作。
在根据本申请的一些实施例的链表形式的队列管理方法中,链表参数包括头指针、尾指针和队列长度;第一改写操作包括:使链表参数存储装置中队列长度的值递增一;获取空闲地址;以及将链表参数存储装置中关于队列的尾指针的值改写为空闲地址,以及将链表参数存储装置中关于队列的头指针的值改写为空闲地址。
在根据本申请的一些实施例的链表形式的队列管理方法中,链表参数包括头指针、尾指针和队列长度;第二改写操作包括:使链表参数存储装置中队列长度的值递增一;获取空闲地址;从链表参数存储装置中读取关于队列的尾指针的值作为第一地址;在串链存储器中由第一地址指示的存储单元中写入空闲地址;以及将链表参数存储装置中关于队列的尾指针的值改写为空闲地址。
在根据本申请的一些实施例的链表形式的队列管理方法中,链表形式的队列管理装置还包括用于进行地址管理的地址管理模块;获取空闲地址包括:向地址管理模块申请空闲地址,以及,获取地址管理模块分配的空闲地址。
在根据本申请的一些实施例的链表形式的队列管理方法中,响应于操作指令,对链表参数存储装置进行操作或对链表参数存储装置和串链存储器进行操作包括:响应于操作指令包含元素出队指令,从链表参数存储装置读取关于队列的队列长度的值;响应于队列长度的值大于一,对链表参数存储装置和串链存储器进行第三改写操作;以及,响应于队列长度的值等于一,对链表参数存储装置进行第四改写操作。
在根据本申请的一些实施例的链表形式的队列管理方法中,链表参数包括头指针、尾指针和队列长度;第三改写操作包括:使链表参数存储装置中队列长度的值递减一;从链表参数存储装置读取关于队列的头指针的值作为第二地址;读取串链存储器中由第二地址指示的存储单元中存储的链接地址,将链接地址作为第三地址;以及将链表参数存储装置中关于队列的头指针的值改写为第三地址。
在根据本申请的一些实施例的链表形式的队列管理方法中,链表参数包括头指针、尾指针和队列长度;第四改写操作包括:使链表参数存储装置中队列长度的值递减一;以及从链表参数存储装置读取关于队列的头指针的值作为第二地址。
在根据本申请的一些实施例的链表形式的队列管理方法中,链表形式的队列管理装置还包括用于进行地址管理的地址管理模块;控制模块被进一步配置成:响应于确定操作指令包含元素出队指令,申请地址管理模块将第二地址设置为空闲地址。
在根据本申请的一些实施例的链表形式的队列管理方法中,链表参数存储装置包括头指针存储器、尾指针存储器和队列长度存储器,其中,头指针存储器被配置成存储头指针的值,头指针指向存储队列的第一个元素的存储单元,尾指针存储器被配置成存储尾指针的值,尾指针指向存储队列的最后一个元素的存储单元,以及队列长度存储器被配置成存储队列长度的值,队列长度指队列包含的元素的数量。
在根据本申请的一些实施例的链表形式的队列管理方法中,控制模块包括:头指针管理子模块、尾指针管理子模块、队列长度管理子模块和串链管理子模块,其中,头指针管理子模块被配置成:响应于操作指令,对头指针存储器中存储的头指针的值进行修改;尾指针管理子模块被配置成:响应于操作指令,对尾指针存储器中存储的尾指针的值进行修改;队列长度管理子模块被配置成:响应于操作指令,对队列长度存储器中存储的的队列长度的值进行修改;以及,串链管理子模块被配置成:响应于操作指令并基于链表参数,对串链存储器进行操作。
在根据本申请的一些实施例的链表形式的队列管理方法中,接收针对队列的操作指令包括:接收队列的队列标识、使能信号和操作信号;其中,当使能信号非零、操作信号也非零时,操作指令包含针对队列的元素入队指令;以及,当使能信号非零、操作信号为零时,操作指令包含针对队列的元素出队指令。
在根据本申请的一些实施例的链表形式的队列管理方法中,对链表参数存储装置进行操作或对链表参数存储装置和串链存储器进行操作包括:在接收到操作指令后的预定时刻,对链表参数存储装置进行操作或对链表参数存储装置和串链存储器进行操作。
因此,在本申请公开的链表形式的队列管理电路中,利用硬件架构实现了链表形式的队列管理,实现了在不增加太多硬件结构的情况下,大幅提高针对队列操作的响应和处理速度。并且,由于本申请公开的队列管理电路采用链表进行队列管理,这不仅保证了队列中元素的顺序,还降低了对队列存储位置的约束,有利于存储空间的合理分配和利用。这使得存储空间的利用率被有效提高,并进一步提升了芯片的性能。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。应理解的是,下面描述中的附图仅仅是本申请的一些示例性实施例,其仅仅用于对本发明的原理进行描述,并不旨在将本公开的范围局限于此。本领域的技术人员基于这些附图的教导,能够认识到其他的示例性实施例,这些示例性实施例也应当被认为落在本公开的范围内。在附图中:
图1是示出了根据本申请的一些实施例的链表形式的队列管理电路的示意图;
图2是示出了根据本申请的一些实施例的链表形式的队列管理电路的示意图;
图3是示出了根据本申请的一些实施例的链表形式的队列存储装置的示意图;
图4是示出了根据本申请的一些实施例的串链存储器和队列数据存储器的示意图;
图5是示出了根据本申请的一些实施例的链表形式的队列存储装置的示意图;
图6是示出了根据本申请的一些实施例的队列第一次入队的示意图;
图7是示出了根据本申请的一些实施例的队列普通入队的示意图;
图8是示出了根据本申请的一些实施例的队列普通出队的示意图;
图9是示出了根据本申请的一些实施例的队列最后出队的示意图;以及,
图10是示出了根据本申请的一些实施例的电子设备的示意图。
具体实施方式
下面将参考附图更全面地描述示例性实施例。应理解的是,示例性实施例能够以多种形式实施,因此不应被理解为仅限于在此阐述的实施例;相反,提供这些实施例能够使得本申请变得全面和完整,并将本发明的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性或者所描述的结构的任何部分可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组件、装置、步骤等。此外,本领域中已知的方法、装置、实现或者操作不会被描述,以避免本申请变得冗长。
应理解,虽然本文中可能使用术语“第一”、“第二”、“第三”等来描述各种特征,但这些特征不应受这些术语限制。这些术语仅用于区分一特征与另一特征。因此,下文论述的第一特征可称为第二特征而不偏离本申请概念的教示。如本文中所使用,术语“和/或”及类似术语包括相关联的列出项目中的任一个、多个和全部的所有组合。
在详细介绍本申请的实施例之前,首先对一些术语进行解释,以有利于对本发明原理的更好的理解。
链表:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。
队列:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(对应于队列开头)进行删除操作,而在表的后端(对应于队列末尾)进行插入操作,因此,队列是一种操作受限制的线性表。队列管理通常包括元素入队和元素出队。元素入队指将元素加入队列,通常添加到队尾。元素出队指将队列的头元素输出,并将该头元素的后一个元素作为新的头元素。
图1示出了根据本申请的一些实施例的链表形式的队列管理电路100A的结构。如图1所示,链表形式的队列管理电路100A包括链表参数存储装置110、串链存储器120和控制模块130。链表参数存储装置110被配置成存储与队列相关的链表参数。串链存储器120被配置成存储队列中每一个元素链接到下一个元素的链接地址。控制模块130被配置成:接收针对队列的操作指令;以及,响应于操作指令,对链表参数存储装置进行操作或对链表参数存储装置和串链存储器进行操作。
作为示例,操作指令可以包含元素入队指令或元素出队指令。例如,响应于操作指令包含元素入队指令,可以对链表参数存储装置和串链存储器进行操作,使得链表参数存储装置包含元素入队后该队列的链表参数。例如,响应于操作指令包含元素出队指令,可以对链表参数存储装置和串链存储器进行操作,使得链表参数存储装置包含元素出队后该队列的链表参数。
作为示例,链表参数可以包括头指针、尾指针和队列长度。以及,链表参数存储装置可以包括用于存储头指针的头指针存储器、用于存储尾指针的尾指针存储器和用于存储队列长度的队列长度存储器。
因此,链表形式的队列管理电路100A利用硬件架构实现了队列管理,这减小了链表队列对使用环境的要求、扩大了链表队列的适用范围。相比于利用软件实现队列管理,链表形式的队列管理电路100A实现了在不增加太多硬件结构的情况下,大幅提高针对队列的响应和处理速度。并且,由于链表形式的队列管理电路100A采用链表进行队列管理,在保证了队列中元素的顺序的情况下,降低了对队列存储位置的约束,有利于存储空间的合理分配和利用。这使得存储空间的利用率被有效提高,并进一步提升了芯片的性能。例如,由于存储空间的利用率被有效提高,芯片在响应和处理指令请求时将更加高效和稳定(例如更快和更有序地处理更多的队列操作指令),表现出更好的性能。
在一些实施例中,响应于操作指令,对链表参数存储装置进行操作或对链表参数存储装置和串链存储器进行操作包括:响应于操作指令包含元素入队指令,从链表参数存储装置读取关于队列的队列长度的值;响应于该队列长度的值等于零,对链表参数存储装置进行第一改写操作;以及,响应于该队列长度的值大于零,对链表参数存储装置和串链存储器进行第二改写操作。
作为示例,可以通过多种信号来传达操作指令,例如可以利用使能信号、操作信号和队列标识。当使能信号非零、操作信号也非零时,操作指令包含针对队列的元素入队指令。当使能信号非零、操作信号为零时,操作指令包含针对队列的元素出队指令。队列标识用于指示该操作指令所针对的队列。
作为示例,队列长度的值等于零可能意味着入队指令在指示进行队列的首次入队。此时,可以对链表参数存储装置进行第一改写操作,使得链表参数存储装置存储队列首次入队后的链表参数。以及,队列长度的值大于零可能意味着入队指令在指示进行队列的普通入队(即非首次入队)。此时,可以对链表参数存储装置和串链存储器进行第二改写操作,使得链表参数存储装置存储队列普通入队后的链表参数以及串链存储器存储普通入队后队列中每一个元素链接到下一个元素的链接地址。
在一些实施例中,链表参数包括头指针、尾指针和队列长度。作为示例,头指针指向队列的第一个元素,即头指针的值是队列第一个元素的地址;尾指针指向队列的最后一个元素,即尾指针的值是队列最后一个元素的地址;队列长度包含队列中元素的数量。第一改写操作包括:使链表参数存储装置中队列长度的值递增一;获取空闲地址,例如从外部设备获取空闲地址或从链表形式的队列存储装置的内部设备获取空闲地址;以及将链表参数存储装置中队列的尾指针的值改写为该空闲地址,以及将链表参数存储装置中队列的头指针的值改写为该空闲地址。
在一些实施例中,第二改写操作包括:使链表参数存储装置中队列长度的值递增一;获取空闲地址;从链表参数存储装置中读取关于队列的尾指针的值作为第一地址;在串链存储器中由第一地址指示的存储单元中写入该空闲地址;以及将链表参数存储装置中关于队列的尾指针的值改写为该空闲地址。
图2示出了根据本申请的一些实施例的链表形式的队列管理电路100B的结构。如图2所示,链表形式的队列管理电路100B还包括用于进行地址管理的地址管理模块140。作为示例,获取空闲地址可以包括:向地址管理模块140申请空闲地址,以及,获取地址管理模块140分配的空闲地址。
作为示例,地址管理模块140可以利用FIFO存储器(先入先出存储器)实现,其对地址的管理可以采用FIFO(First Input First Output,即先入先出)的方式。例如,先将可用地址全部存入FIFO存储器,然后FIFO存储器将响应于申请地址的请求分配空闲地址,以及响应于释放地址的请求,将待释放地址设置为空闲地址。
在一些实施例中,响应于操作指令,对链表参数存储装置进行操作或对链表参数存储装置和串链存储器进行操作包括:响应于操作指令包含元素出队指令,从链表参数存储装置读取队列的队列长度的值;响应于队列长度的值大于一,对链表参数存储装置和串链存储器进行第三改写操作;以及,响应于队列长度的值等于一,对链表参数存储装置进行第四改写操作。
作为示例,队列长度的值等于一可能意味着出队指令在指示进行队列的最后出队。此时,可以对链表参数存储装置进行第四改写操作,使得链表参数存储装置存储最后出队后队列的链表参数。以及,队列长度的值大于一可能意味着出队指令在指示进行队列的普通出队(即非最后出队)。此时,可以对链表参数存储装置和串链存储器进行第三改写操作,使得链表参数存储装置存储队列普通出队后的链表参数。
在一些实施例中,第三改写操作包括:使链表参数存储装置中队列长度的值递减一;从链表参数存储装置读取关于队列的头指针的值作为第二地址;读取串链存储器中由第二地址指示的存储单元中的链接地址作为第三地址;以及将链表参数存储装置中关于队列的头指针的值改写为第三地址。可以看出,第三地址指向队列中头元素的下一个元素,将链表参数存储装置中关于队列的头指针的值改写为第三地址意味着队列的头元素的下一个元素将作为队列的新的头元素。
在一些实施例中,第四改写操作包括:使链表参数存储装置中队列的队列长度的值递减一;以及从链表参数存储装置读取队列的头指针的值作为第二地址。可以看出,在最后出队时,主要修改队列的队列长度的值。
在一些实施例中,链表形式的队列管理电路还包括用于进行地址管理的地址管理模块,作为示例,地址管理模块可以如图2示出的地址管理模块140。以及,控制模块可以进一步被配置成:响应于确定操作指令包含元素出队指令,申请地址管理模块140将第二地址设置为空闲地址。
在一些实施例中,链表参数存储装置包括头指针存储器、尾指针存储器和队列长度存储器。作为示例,头指针存储器可以被配置成存储头指针的值,即存储队列的第一个元素的存储地址;尾指针存储器可以被配置成存储尾指针的值,即存储队列的最后一个元素的存储地址;队列长度存储器可以被配置成存储队列长度的值,队列长度指队列包含的元素的数量。
在一些实施例中,控制模块130包括:头指针管理子模块、尾指针管理子模块、队列长度管理子模块和串链管理子模块。作为示例,头指针管理子模块被配置成:响应于操作指令,对头指针存储器中存储的头指针的值进行修改。尾指针管理子模块被配置成:响应于操作指令,对尾指针存储器中存储的尾指针的值进行修改。队列长度管理子模块被配置成:响应于操作指令,对队列长度存储器中存储的队列长度的值进行修改。串链管理子模块被配置成:响应于操作指令并基于链表参数,对串链存储器进行操作。
作为示例,链表参数存储装置110可以利用存储器或寄存器实现。控制模块130可以利用逻辑电路实现,例如时序逻辑电路、可编程逻辑器件等。当链表参数存储装置110利用存储器实现时,控制模块130可以对元素入队和元素出队操作的时序进行设置,以减少产生冲突的风险。在一些实施例中,在接收到操作指令后的预定时刻,控制模块130才对链表参数存储装置进行操作。作为示例,可以禁止队列的拍拍入队或出队,例如在接收到操作指令后的第3、9、15、21拍进行元素入队操作或元素出队操作。例如,可以设置同一队列的元素入队或元素出队间隔至少2拍,也可以限制同一个队列5拍内不可以2次入队,以避免产生冲突。
在一些实施例中,接收针对队列的操作指令包括:接收队列的队列标识、使能信号和操作信号。当使能信号非零、操作信号也非零时,操作指令包含针对队列的元素入队指令。当使能信号非零、操作信号为零时,操作指令包含针对队列的元素出队指令。
图3示出了根据本申请的一些实施例的链表形式的队列存储装置200A的结构。如图3所示,链表形式的队列存储装置200A包括:链表形式的队列管理电路210和队列数据存储器220。作为示例,队列数据存储器220被配置成存储队列的元素包含的数据,元素包含的数据在队列数据存储器中的存储地址与该元素对应的链接地址在串链存储器中的存储地址相同。在一些实施例中,链表形式的队列管理电路210可以如图1中示出的链表形式的队列管理电路100A或图2中示出的链表形式的队列管理电路100B。此时,链表形式的队列管理电路210的控制模块可以被进一步配置成:响应于操作指令包含元素入队指令,接收数据,并且在队列数据存储器220中的空闲地址处存储该数据。作为示例,链表形式的队列管理电路210的控制模块可以被进一步配置成:响应于操作指令包含元素出队指令,在队列数据存储器220中读取头指针指向的存储单元中存储的数据,并输出该数据。
可见,链表形式的队列存储装置200A利用硬件架构实现了队列存储,这减小了队列对使用环境的要求、扩大了队列的适用范围。
图4示出了根据本申请的一些实施例的串链存储器和队列数据存储器的结构。作为示例,队列数据存储器被配置成存储队列的元素包含的数据,元素包含的数据在队列数据存储器中的存储地址与该元素对应的链接地址在串链存储器中的存储地址相同。例如,队列依次包含元素a1、a2、a3、a4、a5,它们在队列数据存储器中的存储地址依次是5、1、3、9、6,则元素a1的链接地址是1,元素a2的链接地址是3,元素a3的链接地址是9,元素a4的链接地址是6,故可以在串链存储器中的地址5处存储1,在串链存储器中的地址1处存储3,在串链存储器中的地址3处存储9,在串链存储器中的地址9处存储6。可见,利用串链存储器,可以实现对队列中各元素的准确串链。
图5示出了根据本申请的一些实施例的链表形式的队列存储装置200B的结构。如图5所示,链表形式的队列存储装置200B包括头指针存储器211、尾指针存储器212、队列长度存储器213、串链存储器214、链表逻辑管理模块215、地址池216以及队列数据存储器220。作为示例,头指针存储器211、尾指针存储器212、队列长度存储器213、串链存储器214、链表逻辑管理模块215、地址池216可以被包含在图3示出的链表形式的队列管理电路210中,头指针存储器211、尾指针存储器212、队列长度存储器213可以被包含在图1或图2示出的链表参数存储装置110中,链表逻辑管理模块215可以被包含在图1或图2示出的控制模块130中,串链存储器214可以被包含在图1或图2示出的串链存储器120中,以及地址池216可以被包含在图2示出的地址管理模块140中。
如图5所示,头指针存储器211被配置成存储头指针的值;尾指针存储器212被配置成存储尾指针的值;队列长度存储器213被配置成存储队列长度的值;串链存储器214被配置成存储队列中每一个元素链接到下一个元素的链接地址;地址池216被配置成为队列分配空闲地址或释放被队列占用的地址;队列数据存储器220被配置成存储队列元素的数据;以及,链表逻辑管理模块215被配置成接收针对队列的操作指令,并响应于该操作指令,对头指针存储器211、尾指针存储器212、队列长度存储器213、串链存储器214、链表逻辑管理模块215、地址池216以及队列数据存储器220中的一个或多个进行操作。
作为示例,可以通过多种信号来传达操作指令,例如可以利用使能信号、操作信号和队列标识。当使能信号非零、操作信号也非零时,操作指令包含针对队列的元素入队指令。当使能信号非零、操作信号为零时,操作指令包含针对队列的元素出队指令。
链表逻辑管理模块215被配置成:响应于操作指令包含元素入队指令,从队列长度存储器213读取队列的队列长度的值;响应于队列长度的值等于零,对头指针存储器211、尾指针存储器212、队列长度存储器213进行第一改写操作;以及,响应于队列长度的值大于零,对尾指针存储器212、队列长度存储器213、串链存储器214进行第二改写操作。可见,第一改写操作可以用于进行队列的第一次入队,第二改写操作可以用于进行队列的普通入队(即非第一次入队)。作为示例,图6示出了根据本申请的一些实施例的队列第一次入队的示意图,图7示出了根据本申请的一些实施例的队列普通入队的示意图。
作为示例,头指针存储器211、尾指针存储器212、队列长度存储器213以及队列数据存储器220可以利用存储器实现,例如RAM等。例如,当需要管理1000个队列,每个队列占用10位地址空间时,头指针存储器211可以选用1000*10的单口RAM,尾指针存储器212可以选用1000*10的单口RAM,队列长度存储器213可以选用1000*W的单口RAM(W取决于队列的深度,例如,当队列的深度为50,W可以选择6,因为25<50<26),串链存储器214可以选用为1024*10的双口RAM。
作为示例,头指针存储器211、尾指针存储器212、队列长度存储器213以及串链存储器214可以利用存储器或寄存器实现。链表逻辑管理模块215可以利用逻辑电路实现,例如时序逻辑电路、可编程逻辑器件等。当头指针存储器211、尾指针存储器212、队列长度存储器213以及串链存储器214利用存储器实现时,可以对元素入队和元素出队操作的时序进行设置,以减少产生冲突的风险。作为示例。在接收到操作指令后的预定时刻,链表逻辑管理模块215才对链表参数存储装置进行操作。例如,可以禁止队列的拍拍入队或出队。例如,可以设置同一队列的元素入队或元素出队间隔至少2拍,也可以限制同一个队列5拍内不可以2次入队,以避免产生冲突。
作为示例,地址池216可以利用FIFO存储器(先入先出存储器)实现,其对地址的管理可以采用FIFO(First Input First Output,即先入先出)的方式。例如,先将可用地址全部存入FIFO存储器,然后FIFO存储器将响应于申请地址的请求分配空闲地址,以及响应于释放地址的请求,将待释放地址设置为空闲地址。
如图6所示,当使能信号非零、操作信号也非零时,操作指令包含针对队列的元素入队指令。此时,链表逻辑管理模块215将从队列长度存储器213读取关于队列的队列长度(该队列是与队列标识对应的队列,例如与id0对应的队列),并响应于队列长度的值等于零,进行第一改写操作。如图6所示,第一改写操作可以包括:从队列长度存储器213中读取关于该队列的队列长度的值,将其加一作为关于该队列的新的队列长度的值写入队列长度存储器213;从地址池216申请空闲地址,将空闲地址作为关于该队列的头指针的值写入头指针存储器211,将空闲地址作为关于该队列的尾指针的值写入尾指针存储器212,以及将接收的数据写入队列数据存储器220中由空闲地址指示的存储单元。
如图7所示,当使能信号非零、操作信号也非零时,操作指令包含针对队列的元素入队指令(该队列是与队列标识对应的队列,例如与id0对应的队列)。此时,链表逻辑管理模块215将从队列长度存储器213读取关于该队列的队列长度的值,并响应于队列长度的值大于零,进行第二改写操作。如图7所示,第二改写操作可以包括:将关于该队列的队列长度的值加一作为新的队列长度的值写入队列长度存储器213;从地址池216申请空闲地址,从尾指针存储器212读取关于该队列的尾指针的值,在串链存储器214中尾指针指向的存储单元上写入空闲地址,将空闲地址作为关于该队列的尾指针的值写入尾指针存储器212,以及将接收的数据写入队列数据存储器220中空闲地址对应的位置。
在一些实施例中,链表逻辑管理模块215被进一步配置成:响应于操作指令包含元素出队指令,从队列长度存储器213读取关于队列的队列长度的值;响应于队列长度的值大于一,对头指针存储器211、队列长度存储器213进行第三改写操作;以及,响应于队列长度的值等于一,对队列长度存储器213进行第四改写操作。可见,第三改写操作可以用于进行队列的普通出队,第四改写操作可以用于进行队列的最后出队。作为示例,图8示出了根据本申请的一些实施例的队列普通出队的示意图,图9示出了根据本申请的一些实施例的队列最后出队的示意图。
如图8所示,当使能信号非零、操作信号为零时,操作指令包含针对队列的元素出队指令(该队列是与队列标识对应的队列,例如与id0对应的队列)。此时,链表逻辑管理模块215将从队列长度存储器213读取关于该队列的队列长度的值,并响应于队列长度的值大于一,进行第三改写操作。如图8所示,第三改写操作可以包括:将关于该队列的队列长度的值减一作为关于该队列的新的队列长度的值写入队列长度存储器213;从头指针存储器211读取关于该队列的头指针的值,从头指针在队列数据存储器220中指向的存储单元处读取元素数据并将其输出;申请地址池216释放头指针的值对应的地址,使得头指针的值对应的地址不再被队列占用;以及,从串链存储器214中头指针的值对应的地址处读取队列的头元素对应的链接地址(即,队列中头元素下一个元素的地址),并将该链接地址作为关于该队列的头指针的值写入头指针存储器211。
如图9所示,当使能信号非零、操作信号为零时,操作指令包含针对队列的元素出队指令(该队列是与队列标识对应的队列,例如与id0对应的队列)。此时,链表逻辑管理模块215将从队列长度存储器213读取关于该队列的队列长度,并响应于队列长度的值等于一,进行第四改写操作。如图9所示,第四改写操作可以包括:将关于该队列的队列长度的值减一作为关于该队列的新的队列长度的值写入队列长度存储器213;从头指针存储器211读取关于该队列的头指针,从头指针在队列数据存储器220中指向的存储单元处读取元素数据并将其输出;申请地址池216释放头指针的值对应的地址,使得头指针的值对应的地址不再被队列占用。
图10示出了根据本申请的一些实施例的电子设备300的结构。如图10所示,电子设备300包括链表形式的队列存储装置310。可选地,链表形式的队列存储装置310可以是上文实施例中提出的任意链表形式的队列存储装置,例如链表形式的队列存储装置200A、链表形式的队列存储装置200B等。电子设备300可以是包含链表形式的队列存储装置310的任意电子设备,例如GPU(图形处理器)设备、CPU(中央处理器)设备、存储器设备等,常见的如显卡、板卡、服务器、计算机等,此处不做限制。
本申请还提供了一种链表形式的队列管理方法,应用于链表形式的队列管理电路(例如上文实施例示出的队列管理电路等),该方法包括:接收针对队列的操作指令,响应于操作指令,对链表参数存储装置进行操作或对链表参数存储装置和串链存储器进行操作。
作为示例,操作指令可以包含元素入队指令或元素出队指令。例如,响应于操作指令包含元素入队指令,可以对链表参数存储装置和串链存储器进行操作,使得链表参数存储装置包含元素入队后该队列的链表参数。例如,响应于操作指令包含元素出队指令,可以对链表参数存储装置和串链存储器进行操作,使得链表参数存储装置包含元素出队后该队列的链表参数。
作为示例,链表参数可以包括头指针、尾指针和队列长度。以及,链表参数存储装置可以包括用于存储头指针的头指针存储器、用于存储尾指针的尾指针存储器和用于存储队列长度的队列长度存储器。
相比于利用软件实现队列管理,链表形式的队列管理方法利用少量硬件结构实现了对队列的管理,大幅提高了针对队列的响应和处理速度。并且,由于链表形式的队列管理方法采用链表进行队列管理,在保证了队列中元素的顺序的情况下,还降低了对存储位置的约束,有利于存储空间的合理分配和利用。这使得存储空间的利用率被有效提高,并进一步提升了芯片的性能。例如,由于存储空间的利用率被有效提高,芯片能在单位时间内处理更多的指令请求(例如管理更多的队列),表现出更好的性能。
在一些实施例中,响应于操作指令,对链表参数存储装置进行操作或对链表参数存储装置和串链存储器进行操作包括:响应于操作指令包含元素入队指令,从链表参数存储装置读取关于队列的队列长度的值;响应于队列长度的值等于零,对链表参数存储装置进行第一改写操作;以及,响应于队列长度的值大于零,对链表参数存储装置和串链存储器进行第二改写操作。
作为示例,可以通过多种信号来传达操作指令,例如可以利用使能信号、操作信号和队列标识。当使能信号非零、操作信号也非零时,操作指令包含针对队列的元素入队指令。当使能信号非零、操作信号为零时,操作指令包含针对队列的元素出队指令。队列标识用于指示该操作指令所针对的队列。
作为示例,队列长度的值等于零可能意味着入队指令在指示进行队列的首次入队。此时,可以对链表参数存储装置进行第一改写操作,使得链表参数存储装置存储队列首次入队后的链表参数。以及,队列长度的值大于零可能意味着入队指令在指示进行队列的普通入队(即非首次入队)。此时,可以对链表参数存储装置和串链存储器进行第二改写操作,使得链表参数存储装置存储队列普通入队后的链表参数以及串链存储器存储普通入队后队列中每一个元素链接到下一个元素的链接地址。
在一些实施例中,链表参数包括头指针、尾指针和队列长度。作为示例,头指针指向队列的第一个元素,即头指针的值是队列第一个元素的地址;尾指针指向队列的最后一个元素,即尾指针的值是队列最后一个元素的地址;队列长度包含队列中元素的数量。第一改写操作包括:使链表参数存储装置中队列长度的值递增一;获取空闲地址,例如从外部设备获取空闲地址或从链表形式的队列存储装置的内部设备获取空闲地址;以及将链表参数存储装置中队列的尾指针的值改写为该空闲地址,以及将链表参数存储装置中队列的头指针的值改写为该空闲地址。
在一些实施例中,第二改写操作包括:使链表参数存储装置中队列长度的值递增一;获取空闲地址;从链表参数存储装置中读取关于队列的尾指针的值作为第一地址;在串链存储器中由第一地址指示的存储单元中写入该空闲地址;以及将链表参数存储装置中关于队列的尾指针的值改写为该空闲地址。
在一些实施例中,链表形式的队列管理装置还包括用于进行地址管理的地址管理模块;获取空闲地址包括:向所述地址管理模块申请空闲地址,以及,获取所述地址管理模块分配的空闲地址。
在一些实施例中,响应于操作指令,对链表参数存储装置进行操作或对链表参数存储装置和串链存储器进行操作包括:响应于操作指令包含元素出队指令,从链表参数存储装置读取队列的队列长度的值;响应于队列长度的值大于一,对链表参数存储装置和串链存储器进行第三改写操作;以及,响应于队列长度的值等于一,对链表参数存储装置进行第四改写操作。
作为示例,队列长度的值等于一可能意味着出队指令在指示进行队列的最后出队。此时,可以对链表参数存储装置进行第四改写操作,使得链表参数存储装置存储最后出队后队列的链表参数。以及,队列长度的值大于一可能意味着出队指令在指示进行队列的普通出队(即非最后出队)。此时,可以对链表参数存储装置和串链存储器进行第三改写操作,使得链表参数存储装置存储队列普通出队后的链表参数。
在一些实施例中,第三改写操作包括:使链表参数存储装置中队列长度的值递减一;从链表参数存储装置读取关于队列的头指针的值作为第二地址;读取串链存储器中由第二地址指示的存储单元中的链接地址作为第三地址;以及将链表参数存储装置中关于队列的头指针的值改写为第三地址。可以看出,第三地址指向队列中头元素的下一个元素,将链表参数存储装置中关于队列的头指针的值改写为第三地址意味着队列的头元素的下一个元素将作为队列的新的头元素。
在一些实施例中,第四改写操作包括:使链表参数存储装置中队列的队列长度的值递减一;以及从链表参数存储装置读取队列的头指针的值作为第二地址。可以看出,在最后出队时,主要修改队列的队列长度的值。
在一些实施例中,链表形式的队列管理电路还包括用于进行地址管理的地址管理模块。以及,控制模块可以进一步被配置成:响应于确定操作指令包含元素出队指令,申请地址管理模块将第二地址设置为空闲地址。
在一些实施例中,链表参数存储装置包括头指针存储器、尾指针存储器和队列长度存储器。作为示例,头指针存储器可以被配置成存储头指针的值,即存储队列的第一个元素的存储地址;尾指针存储器可以被配置成存储尾指针的值,即存储队列的最后一个元素的存储地址;队列长度存储器可以被配置成存储队列长度的值,队列长度指队列包含的元素的数量。
在一些实施例中,控制模块包括:头指针管理子模块、尾指针管理子模块、队列长度管理子模块和串链管理子模块。作为示例,头指针管理子模块被配置成:响应于操作指令,对头指针存储器中存储的头指针的值进行修改。尾指针管理子模块被配置成:响应于操作指令,对尾指针存储器中存储的尾指针的值进行修改。队列长度管理子模块被配置成:响应于操作指令,对队列长度存储器中存储的队列长度的值进行修改。串链管理子模块被配置成:响应于操作指令并基于链表参数,对串链存储器进行操作。
作为示例,链表参数存储装置可以利用存储器或寄存器实现。控制模块可以利用逻辑电路实现,例如时序逻辑电路、可编程逻辑器件等。当链表参数存储装置利用存储器实现时,控制模块可以对元素入队和元素出队操作的时序进行设置,以减少产生冲突的风险。在一些实施例中,在接收到操作指令后的预定时刻,才对链表参数存储装置进行操作。作为示例,可以禁止队列的拍拍入队或出队,例如在接收到操作指令后的第3、9、15、21拍进行元素入队操作或元素出队操作。例如,可以设置同一队列的元素入队或元素出队间隔至少2拍,也可以限制同一个队列5拍内不可以2次入队,以避免产生冲突。
在一些实施例中,接收针对队列的操作指令包括:接收队列的队列标识、使能信号和操作信号。当使能信号非零、操作信号也非零时,操作指令包含针对队列的元素入队指令。当使能信号非零、操作信号为零时,操作指令包含针对队列的元素出队指令。
本申请提供的链表形式的队列管理方法可以应用于链表形式的队列管理电路(例如上文实施例示出的队列管理装置等),例如可以由队列管理装置中的逻辑电路执行(例如时序逻辑电路、可编程逻辑器件等)。作为示例,可以由队列管理装置中的控制模块等执行。
尽管已经结合一些实施例描述了本申请,但是其不旨在被限于在本文中所阐述的特定形式。相反,本申请的范围仅由所附权利要求来限制。
Claims (29)
1.一种链表形式的队列管理电路,其特征在于,包括:
链表参数存储装置,其被配置成存储与队列相关的链表参数;
串链存储器,其被配置成存储所述队列中每一个元素链接到下一个元素的链接地址;以及
控制模块,其被配置成:
接收针对所述队列的操作指令,所述操作指令包含元素入队指令或元素出队指令;
从所述链表参数存储装置读取关于所述队列的队列长度的值;
响应于所述操作指令,基于所述队列长度的值对所述链表参数存储装置进行改写操作或对所述链表参数存储装置和所述串链存储器进行改写操作。
2.根据权利要求1所述的链表形式的队列管理电路,其特征在于,所述操作指令包含元素入队指令,所述响应于所述操作指令,基于所述队列长度的值对所述链表参数存储装置进行改写操作或对所述链表参数存储装置和所述串链存储器进行改写操作包括:
响应于所述队列长度的值等于零,对所述链表参数存储装置进行第一改写操作;以及,
响应于所述队列长度的值大于零,对所述链表参数存储装置和所述串链存储器进行第二改写操作。
3.根据权利要求2所述的链表形式的队列管理电路,其特征在于,所述链表参数包括头指针、尾指针和队列长度;
所述第一改写操作包括:
使所述链表参数存储装置中所述队列长度的值递增一;
获取空闲地址;以及
将所述链表参数存储装置中关于所述队列的尾指针的值改写为所述空闲地址,以及将所述链表参数存储装置中关于所述队列的头指针的值改写为所述空闲地址。
4.根据权利要求2所述的链表形式的队列管理电路,其特征在于,所述链表参数包括头指针、尾指针和队列长度;
所述第二改写操作包括:
使所述链表参数存储装置中所述队列长度的值递增一;
获取空闲地址;
从所述链表参数存储装置中读取关于所述队列的尾指针的值作为第一地址;
在所述串链存储器中由所述第一地址指示的存储单元中写入所述空闲地址;以及
将所述链表参数存储装置中关于所述队列的尾指针的值改写为所述空闲地址。
5.根据权利要求3或4所述的链表形式的队列管理电路,其特征在于,还包括用于进行地址管理的地址管理模块;
所述获取空闲地址包括:
向所述地址管理模块申请空闲地址,以及,
获取所述地址管理模块分配的空闲地址。
6.根据权利要求1所述的链表形式的队列管理电路,其特征在于,所述操作指令包含元素出队指令,所述响应于所述操作指令,基于所述队列长度的值对所述链表参数存储装置进行改写操作或对所述链表参数存储装置和所述串链存储器进行改写操作包括:
响应于所述队列长度的值大于一,对所述链表参数存储装置和所述串链存储器进行第三改写操作;以及,
响应于所述队列长度的值等于一,对所述链表参数存储装置进行第四改写操作。
7.根据权利要求6所述的链表形式的队列管理电路,其特征在于,所述链表参数包括头指针、尾指针和队列长度;
所述第三改写操作包括:
使所述链表参数存储装置中所述队列长度的值递减一;
从所述链表参数存储装置读取关于所述队列的头指针的值作为第二地址;
读取所述串链存储器中由所述第二地址指示的存储单元中存储的链接地址,将所述链接地址作为第三地址;以及
将所述链表参数存储装置中关于所述队列的头指针的值改写为所述第三地址。
8.根据权利要求6所述的链表形式的队列管理电路,其特征在于,所述链表参数包括头指针、尾指针和队列长度;
所述第四改写操作包括:
使所述链表参数存储装置中所述队列长度的值递减一;以及
从所述链表参数存储装置读取关于所述队列的头指针的值作为第二地址。
9.根据权利要求7或8所述的链表形式的队列管理电路,其特征在于,还包括用于进行地址管理的地址管理模块;
所述控制模块被进一步配置成:
响应于确定所述操作指令包含元素出队指令,申请所述地址管理模块将所述第二地址设置为空闲地址。
10.根据权利要求1所述的链表形式的队列管理电路,其特征在于,所述链表参数存储装置包括头指针存储器、尾指针存储器和队列长度存储器,其中
所述头指针存储器被配置成存储头指针的值,所述头指针指向存储队列的第一个元素的存储单元,
所述尾指针存储器被配置成存储尾指针的值,所述尾指针指向存储队列的最后一个元素的存储单元,以及
所述队列长度存储器被配置成存储队列长度的值,所述队列长度指队列包含的元素的数量。
11.根据权利要求10所述的链表形式的队列管理电路,其特征在于,所述控制模块包括:头指针管理子模块、尾指针管理子模块、队列长度管理子模块和串链管理子模块,其中,
所述头指针管理子模块被配置成:响应于所述操作指令,对所述头指针存储器中存储的头指针的值进行修改;
所述尾指针管理子模块被配置成:响应于所述操作指令,对所述尾指针存储器中存储的尾指针的值进行修改;
所述队列长度管理子模块被配置成:响应于所述操作指令,对所述队列长度存储器中存储的队列长度的值进行修改;以及,
所述串链管理子模块被配置成:响应于所述操作指令并基于所述链表参数,对所述串链存储器进行操作。
12.根据权利要求1所述的链表形式的队列管理电路,其特征在于,所述接收针对所述队列的操作指令包括:接收队列的队列标识、使能信号和操作信号;其中,
当所述使能信号非零、所述操作信号也非零时,所述操作指令包含针对所述队列的元素入队指令;以及,
当所述使能信号非零、所述操作信号为零时,所述操作指令包含针对所述队列的元素出队指令。
13.根据权利要求1所述的链表形式的队列管理电路,其特征在于,所述基于所述队列长度的值对所述链表参数存储装置进行改写操作或对所述链表参数存储装置和所述串链存储器进行改写操作包括:
在接收到所述操作指令后的预定时刻,基于所述队列长度的值对所述链表参数存储装置进行改写操作或对所述链表参数存储装置和所述串链存储器进行改写操作。
14.一种链表形式的队列存储装置,其特征在于,包括:如权利要求3或4所述的链表形式的队列管理电路和队列数据存储器;所述队列数据存储器被配置成存储队列的元素包含的数据,所述元素包含的数据在所述队列数据存储器中的存储地址与所述元素对应的链接地址在所述串链存储器中的存储地址相同;
其中,所述控制模块被进一步配置成:接收数据,并且在所述队列数据存储器中的所述空闲地址处存储所述数据。
15.一种链表形式的队列存储装置,其特征在于,包括:如权利要求7所述的链表形式的队列管理电路和队列数据存储器;所述队列数据存储器被配置成存储队列的元素包含的数据,所述元素包含的数据在所述队列数据存储器中的存储地址与所述元素对应的链接地址在所述串链存储器中的存储地址相同;
其中,所述控制模块被进一步配置成:在所述队列数据存储器中读取所述头指针指向的存储单元中存储的数据,并输出所述数据。
16.一种电子设备,其特征在于,包括如权利要求14或15所述的链表形式的队列存储装置。
17.一种链表形式的队列管理方法,应用于根据权利要求1所述的链表形式的队列管理电路,其特征在于,所述方法包括:
接收针对所述队列的操作指令,所述操作指令包含元素入队指令或元素出队指令;
从所述链表参数存储装置读取关于所述队列的队列长度的值;
响应于所述操作指令,基于所述队列长度的值对所述链表参数存储装置进行改写操作或对所述链表参数存储装置和所述串链存储器进行改写操作。
18.根据权利要求17所述的方法,其特征在于,所述操作指令包含元素入队指令,所述响应于所述操作指令,基于所述队列长度的值对所述链表参数存储装置进行改写操作或对所述链表参数存储装置和所述串链存储器进行改写操作包括:
响应于所述队列长度的值等于零,对所述链表参数存储装置进行第一改写操作;以及,
响应于所述队列长度的值大于零,对所述链表参数存储装置和所述串链存储器进行第二改写操作。
19.根据权利要求18所述的方法,其特征在于,所述链表参数包括头指针、尾指针和队列长度;
所述第一改写操作包括:
使所述链表参数存储装置中所述队列长度的值递增一;
获取空闲地址;以及
将所述链表参数存储装置中关于所述队列的尾指针的值改写为所述空闲地址,以及将所述链表参数存储装置中关于所述队列的头指针的值改写为所述空闲地址。
20.根据权利要求18所述的方法,其特征在于,所述链表参数包括头指针、尾指针和队列长度;
所述第二改写操作包括:
使所述链表参数存储装置中所述队列长度的值递增一;
获取空闲地址;
从所述链表参数存储装置中读取关于所述队列的尾指针的值作为第一地址;
在所述串链存储器中由所述第一地址指示的存储单元中写入所述空闲地址;以及
将所述链表参数存储装置中关于所述队列的尾指针的值改写为所述空闲地址。
21.根据权利要求19或20所述的方法,其特征在于,所述链表形式的队列管理装置还包括用于进行地址管理的地址管理模块;
所述获取空闲地址包括:
向所述地址管理模块申请空闲地址,以及,
获取所述地址管理模块分配的空闲地址。
22.根据权利要求17所述的方法,其特征在于,所述操作指令包含元素出队指令,所述响应于所述操作指令,基于所述队列长度的值对所述链表参数存储装置进行改写操作或对所述链表参数存储装置和所述串链存储器进行改写操作包括:
响应于所述队列长度的值大于一,对所述链表参数存储装置和所述串链存储器进行第三改写操作;以及,
响应于所述队列长度的值等于一,对所述链表参数存储装置进行第四改写操作。
23.根据权利要求22所述的方法,其特征在于,所述链表参数包括头指针、尾指针和队列长度;
所述第三改写操作包括:
使所述链表参数存储装置中所述队列长度的值递减一;
从所述链表参数存储装置读取关于所述队列的头指针的值作为第二地址;
读取所述串链存储器中由所述第二地址指示的存储单元中存储的链接地址,将所述链接地址作为第三地址;以及
将所述链表参数存储装置中关于所述队列的头指针的值改写为所述第三地址。
24.根据权利要求22所述的方法,其特征在于,所述链表参数包括头指针、尾指针和队列长度;
所述第四改写操作包括:
使所述链表参数存储装置中所述队列长度的值递减一;以及
从所述链表参数存储装置读取关于所述队列的头指针的值作为第二地址。
25.根据权利要求23或24所述的方法,其特征在于,所述链表形式的队列管理装置还包括用于进行地址管理的地址管理模块;
所述控制模块被进一步配置成:
响应于确定所述操作指令包含元素出队指令,申请所述地址管理模块将所述第二地址设置为空闲地址。
26.根据权利要求17所述的方法,其特征在于,所述链表参数存储装置包括头指针存储器、尾指针存储器和队列长度存储器,其中
所述头指针存储器被配置成存储头指针的值,所述头指针指向存储队列的第一个元素的存储单元,
所述尾指针存储器被配置成存储尾指针的值,所述尾指针指向存储队列的最后一个元素的存储单元,以及
所述队列长度存储器被配置成存储队列长度的值,所述队列长度指队列包含的元素的数量。
27.根据权利要求26所述的方法,其特征在于,所述控制模块包括:头指针管理子模块、尾指针管理子模块、队列长度管理子模块和串链管理子模块,其中,
所述头指针管理子模块被配置成:响应于所述操作指令,对所述头指针存储器中存储的头指针的值进行修改;
所述尾指针管理子模块被配置成:响应于所述操作指令,对所述尾指针存储器中存储的尾指针的值进行修改;
所述队列长度管理子模块被配置成:响应于所述操作指令,对所述队列长度存储器中存储的队列长度的值进行修改;以及,
所述串链管理子模块被配置成:响应于所述操作指令并基于所述链表参数,对所述串链存储器进行操作。
28.根据权利要求17所述的方法,其特征在于,所述接收针对所述队列的操作指令包括:接收队列的队列标识、使能信号和操作信号;其中,
当所述使能信号非零、所述操作信号也非零时,所述操作指令包含针对所述队列的元素入队指令;以及,
当所述使能信号非零、所述操作信号为零时,所述操作指令包含针对所述队列的元素出队指令。
29.根据权利要求17所述的方法,其特征在于,所述基于所述队列长度的值对所述链表参数存储装置进行改写操作或对所述链表参数存储装置和所述串链存储器进行改写操作包括:
在接收到所述操作指令后的预定时刻,基于所述队列长度的值对所述链表参数存储装置进行改写操作或对所述链表参数存储装置和所述串链存储器进行改写操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310220260.9A CN115934004B (zh) | 2023-03-09 | 2023-03-09 | 链表形式的队列管理电路、方法、存储装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310220260.9A CN115934004B (zh) | 2023-03-09 | 2023-03-09 | 链表形式的队列管理电路、方法、存储装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115934004A CN115934004A (zh) | 2023-04-07 |
CN115934004B true CN115934004B (zh) | 2023-06-02 |
Family
ID=85834040
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310220260.9A Active CN115934004B (zh) | 2023-03-09 | 2023-03-09 | 链表形式的队列管理电路、方法、存储装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115934004B (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6769092B1 (en) * | 2001-07-31 | 2004-07-27 | Cisco Technology, Inc. | Method and system for testing linked list integrity |
CN104598194B (zh) * | 2014-12-09 | 2017-10-24 | 中国航空工业集团公司第六三一研究所 | 一种头尾指针链表存储器的初始化方法及电路 |
WO2017208182A1 (en) * | 2016-06-02 | 2017-12-07 | Marvell Israel (M.I.S.L) Ltd. | Packet descriptor storage in packet memory with cache |
-
2023
- 2023-03-09 CN CN202310220260.9A patent/CN115934004B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115934004A (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7337275B2 (en) | Free list and ring data structure management | |
US5487049A (en) | Page-in, burst-out FIFO | |
US5961640A (en) | Virtual contiguous FIFO having the provision of packet-driven automatic endian conversion | |
US8429661B1 (en) | Managing multi-threaded FIFO memory by determining whether issued credit count for dedicated class of threads is less than limit | |
US7603496B2 (en) | Buffering data during data transfer through a plurality of channels | |
JP2000148444A (ja) | 複数論理fifoシステム | |
US6738831B2 (en) | Command ordering | |
US20060020743A1 (en) | Multi-queue address generator for start and end addresses in a multi-queue first-in first-out memory system | |
US10140020B2 (en) | Data queue having an unlimited depth | |
US9262554B1 (en) | Management of linked lists within a dynamic queue system | |
CN107888512B (zh) | 动态共享缓冲存储器及交换机 | |
US20030056073A1 (en) | Queue management method and system for a shared memory switch | |
US20050204103A1 (en) | Split queuing | |
US7870310B2 (en) | Multiple counters to relieve flag restriction in a multi-queue first-in first-out memory system | |
US7266650B2 (en) | Method, apparatus, and computer program product for implementing enhanced circular queue using loop counts | |
US7035988B1 (en) | Hardware implementation of an N-way dynamic linked list | |
US20030145012A1 (en) | Shared resource virtual queues | |
US20160139880A1 (en) | Bypass FIFO for Multiple Virtual Channels | |
CN109298888B (zh) | 队列的数据存取方法及装置 | |
US5944788A (en) | Message transfer system and control method for multiple sending and receiving modules in a network supporting hardware and software emulated modules | |
CN115934004B (zh) | 链表形式的队列管理电路、方法、存储装置及电子设备 | |
US8156265B2 (en) | Data processor coupled to a sequencer circuit that provides efficient scalable queuing and method | |
CN111970213A (zh) | 排队系统 | |
EP2318924B1 (en) | Synchronization of multiple processor cores | |
EP0418447B1 (en) | Device for controlling the enqueuing and dequeuing operations of messages in a memory |
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 |