CN114756287B - 一种重排序缓冲区的数据处理方法、装置及存储介质 - Google Patents

一种重排序缓冲区的数据处理方法、装置及存储介质 Download PDF

Info

Publication number
CN114756287B
CN114756287B CN202210663685.2A CN202210663685A CN114756287B CN 114756287 B CN114756287 B CN 114756287B CN 202210663685 A CN202210663685 A CN 202210663685A CN 114756287 B CN114756287 B CN 114756287B
Authority
CN
China
Prior art keywords
sub
data item
buffer
main
buffer area
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
Application number
CN202210663685.2A
Other languages
English (en)
Other versions
CN114756287A (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.)
Phytium Technology Co Ltd
Original Assignee
Phytium Technology Co Ltd
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 Phytium Technology Co Ltd filed Critical Phytium Technology Co Ltd
Priority to CN202210663685.2A priority Critical patent/CN114756287B/zh
Publication of CN114756287A publication Critical patent/CN114756287A/zh
Application granted granted Critical
Publication of CN114756287B publication Critical patent/CN114756287B/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请公开了一种重排序缓冲区的数据处理方法、装置及存储介质。该方法将一个大的重排序缓冲区拆分为一个主缓冲区和多个子缓冲区,其中,在存储指令信息时,将一批指令的共用信息存储至主缓冲区,将各个指令的特有信息存储至不同的子缓冲区,并在主缓冲区中设置关联每一子缓冲区数据的关联字段。如此,可减小主缓存冲区和子缓冲区对存储空间的需要,从而减少重排序缓冲区所在芯片的面积和功耗,进一步将重排序缓冲区所能容纳的指令数增大,使乱序窗口更大,计算性能更佳。

Description

一种重排序缓冲区的数据处理方法、装置及存储介质
技术领域
本申请涉及计算机数据处理领域,尤其涉及一种重排序缓冲区的数据处理方法、装置及存储介质。
背景技术
在顺序引退指令的微处理器的微架构中,指令的执行是以乱序方式(Out-Of-Order)执行以产生指令结果,之后再依照程序的顺序将其结果写入微处理器架构的状态中。
在这种情况下,微处理器通常会使用重排序缓冲区(Re-order Buffer,ROB)的硬件架构,以在指令非顺序执行的情况下顺序引退指令。具体地,重排序缓冲区用于保存每一个未提交指令的信息,其中,未提交指令是指已经被提取、解码、甚至被执行(即执行单元已经产生其结果),或者是等待发送以被执行,但其结果仍未写入状态中的指令。
发明内容
在重排序缓冲区中缓冲的每一项数据包括:一些随时可能发生改变的动态数据,或一直不会发生改变的静态数据;每个指令都可能用到的数据,或只有一部分指令才会用到的数据。
目前,在重排序缓冲区中存储数据时,大多数实现会将每个指令对应的数据都存储为一条完整的数据项。无论该指令是否存在相关的数据,都会为该指令保留相关的存储空间。例如,分支指令是没有目的寄存器的,但仍然会为分支指令保存一个目的寄存器数据项。这样就导致存储空间的浪费,增加了器件面积和功耗。
本申请人创造性地提供一种重排序缓冲区的数据处理方法、装置及存储介质。
根据本申请实施例第一方面,提供一种重排序缓冲区的数据处理方法,该方法包括:获取待缓存至重排序缓冲区的指令信息,其中,重排序缓冲区包括一个主缓冲区和至少一个子缓冲区,主缓冲区用于存储第一类型的指令信息,第一类型的指令信息包括第一数量级的指令的共用信息,主缓冲区设置有与至少一个子缓冲区关联的至少一个关联字段;确定指令信息所属的类型;若指令信息所属的类型为第一类型,则将指令信息存储至主缓冲区形成主数据项,否则将指令信息存储至至少一个子缓冲区形成子数据项。
根据本申请实施例一实施方式,至少一个子缓冲区中的第一子缓冲区用于存储第二类型的指令信息, 相应地,将指令信息存储至至少一个子缓冲区形成子数据项包括:若指令信息所属的类型为第二类型,则将指令信息存储至第一子缓冲区得到第一子数据项;设置主数据项中第一关联字段的值,以根据第一关联字段的值从第一子缓冲区中得到第一子数据项,第一关联字段为与第一子缓冲区关联的关联字段。
根据本申请实施例一实施方式,第二类型的指令信息包括第二数量级的指令的共用信息,第二数量级小于第一数量级。
根据本申请实施例一实施方式,第二类型的指令信息包括指定指令类型的指令信息。
根据本申请实施例一实施方式,第一关联字段用于对第一子数据项进行计数,相应地,设置主数据项中第一关联字段的值,包括:对第一子数据项进行计数得到第一计数值;将第一关联字段的值设置为第一计数值。
根据本申请实施例一实施方式,该方法还包括响应于获取指令信息的请求,执行以下操作:在主缓冲区中,获取与请求匹配的主数据项,得到目标主数据项;根据目标主数据项的至少一个关联字段的值,从至少一个子缓冲区中获取子数据项,得到目标子数据项;合并目标主数据项和目标子数据项,得到与请求对应的目标数据项;返回目标数据项。
根据本申请实施例一实施方式,该方法还包括响应于引退指令的请求,执行以下操作:在主缓冲区中,获取与请求匹配的主数据项,得到待释放主数据项;将待释放主数据项的至少一个关联字段的值,发送给相应的子缓冲区;释放待释放主数据项。
根据本申请实施例一实施方式,该方法还包括根据待释放主数据项的至少一个关联字段的值,从相应的子缓冲区中,确定待释放子数据项;等待被引退指令的结果写回;释放待释放子数据项。
根据本申请实施例第二方面,提供一种重排序缓冲区的数据处理装置,该装置包括:指令信息获取模块,用于获取待缓存至重排序缓冲区的指令信息,其中,重排序缓冲区包括一个主缓冲区和至少一个子缓冲区,主缓冲区用于存储第一类型的指令信息,第一类型的指令信息包括第一数量级的指令的共用信息,主缓冲区设置有与至少一个子缓冲区关联的至少一个关联字段;类型确定模块,用于确定指令信息所属的类型;重排序缓冲模块,用于若指令信息所属的类型为第一类型,则将指令信息存储至主缓冲区形成主数据项,否则将指令信息存储至至少一个子缓冲区形成子数据项。
根据本申请实施例第三方面,提供一种计算机存储介质,存储介质包括一组计算机可执行指令,当指令被执行时用于执行上述任一项重排序缓冲区的数据处理方法。
本申请实施例提供一种重排序缓冲区的数据处理方法、装置及存储介质,该方法将一个大的重排序缓冲区拆分为一个主缓冲区和多个子缓冲区,其中,在存储指令信息时,将一批指令的共用信息存储至主缓冲区,将各个指令的特有信息存储至不同的子缓冲区,并在主缓冲区中设置关联每一子缓冲区数据的关联字段。如此,可减小主缓存冲区和子缓冲区对存储空间的需要,从而减少重排序缓冲区所在芯片的面积和功耗,进一步将重排序缓冲区所能容纳的指令数增大,使乱序窗口更大,计算性能更佳。
需要理解的是,本申请的实施并不需要实现上面所述的全部有益效果,而是特定的技术方案可以实现特定的技术效果,并且本申请的其他实施方式还能够实现上面未提到的有益效果。
附图说明
通过参考附图阅读下文的详细描述,本申请示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本申请的若干实施方式,其中:
在附图中,相同或对应的标号表示相同或对应的部分。
图1为现有技术中所采用的重排序缓冲区的数据结构示意图;
图2为本申请一实施例所采用重排序缓冲区的数据结构示意图;
图3为图2所示实施例实现重排序缓冲区的数据处理方法的流程示意图之一;
图4为图2所示实施例实现重排序缓冲区的数据处理方法的流程示意图之二;
图5为图2所示实施例实现重排序缓冲区的数据处理方法的流程示意图之三;
图6为图2所示实施例实现重排序缓冲区的数据处理方法的流程示意图之四;
图7为本申请另一实施例所采用重排序缓冲区的数据结构示意图;
图8为本申请另一实施例所采用重排序缓冲区的数据结构示意图;
图9为本申请实施例重排序缓冲区的数据处理装置的组成结构示意图。
具体实施方式
为使本申请的目的、特征、优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而非全部实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
乱序执行(Out-of-order Execution,OOE)是一种应用在高性能微处理器中来利用指令周期以避免特定类型的延迟消耗的方式,其中,处理器由输入数据可用性所决定的顺序中执行指令,而不是由程序的原始数据所决定的顺序中执行指令。
重排序缓冲区(Re-order Buffer, ROB),也称重排序缓冲器,指用于存储指令相关信息,以使得指令在乱序执行之后,仍可按照原有顺序提交的缓冲区(Buffer)。
在最初的动态调度乱序执行机制中,主要分三个阶段:发射(issue)、执行(execute)和写结果(write result)。在写结果阶段,指令的结果暂时被保存在重排序缓冲区中。随后,指令执行的结果再被保存在寄存器或主保存器中。如果其他指令急切需要此结果,那么重排序缓冲可以直接为其传输所需的数据。
图1示出了一种常用的重排序缓冲区结构,在这种重排序缓冲区中,每一条数据项(例如图1中的一行数据)中会包含各个指令所需的全部字段,例如:字段1、字段2和字段3等。
当该一批指令中某个字段值均相同(例如,数据项标识为“ROB_1”的数据项和数据项标识为“ROB_2”的数据项,其字段1的值均为“x_1”)时,则该字段值(例如,“x_1”)可能会被重复存储多次;或者,对于不是每条指令都会使用到的字段(例如,字段3),也需要预留出存储空间,而该存储空间对于不使用该字段的指令所对应的数据项(例如,数据项标识为“ROB_1”的数据项)不会存储任何值。
如此,就会造成存储资源的浪费,使得重排序缓冲区所在的芯片面积变大,功耗也会相应增加。
在本申请实施例中,提供了一种不同结构的重排序缓冲区,该重排序缓冲区将传统的一个大的重排序缓冲区(如图1所示)拆分为一个主缓冲区和至少一个子缓冲区,如图2所示。其中,主缓冲区用于存储第一类型的指令信息,所述第一类型的指令信息包括第一数量级的指令的共用信息;第一子缓冲区用于存储其他类型的指令信息,即各个指令的特有信息;主缓冲区设置有与所述至少一个子缓冲区关联的至少一个关联字段(例如,第一子数据项标识)。
其中,第一数量级通常指某一数量以上,例如,所有指令或者90%以上的指令条数等。
共用信息指第一数量级的指令都会用到的信息(例如,图1中的字段1和字段2),尤其指不仅都会用到且字段值都相同的信息(例如,图1中的字段1)。第一数量级也往往是各指令之间共用信息所能达到得最高数量级。如此,可最大程度地去除重排序缓冲区中的冗余数据或重复数据。
在图2所示的实施例中,就将图1中的字段1作为共用信息存储至图2所示的主缓冲区形成主数据项,而将图1中的其他字段(字段2和字段3等)存储至图2所示的第一子缓冲区形成子数据项,主数据项和子数据项共同组成指令所需的一条数据项。
相应地,在本申请实施例中,还提供了一种重排序缓冲区的数据处理方法,如图3所示,该方法包括:
操作S310,获取待缓存至重排序缓冲区的指令信息;
其中,重排序缓冲区包括一个主缓冲区和至少一个子缓冲区,所述主缓冲区用于存储第一类型的指令信息,所述第一类型的指令信息包括第一数量级的指令的共用信息,所述主缓冲区设置有与所述至少一个子缓冲区关联的至少一个关联字段。例如,上述图2所示的重排序缓冲区。
待缓存至重排序缓冲区的指令信息,指为了能顺序提交、或顺序引退指令,而按照程序中的指令顺序存储在重排序缓冲区的指令信息,例如,指令类型、目标寄存器地址和运算结果等。
操作S320,确定所述指令信息所属的类型;
在本申请实施例中,将指令信息分为多个类型,包括上述第一类型和其他类型等。
通常,每一指令信息所属的类型都是预先定义好的,可以预置在某个表或配置文件中。而在确定指令信息所属的类型时,只需查询预置的表或配置文件即可获取该指令信息所属的类型。
操作S330,若所述指令信息所属的类型为第一类型,则将所述指令信息存储至所述主缓冲区形成主数据项,否则将所述指令信息存储至所述至少一个子缓冲区形成子数据项。
由于缓冲区设置有与所述至少一个子缓冲区关联的至少一个关联字段,可以通过关联字段从至少一个子缓冲区中获取至少一个子数据项,之后合并主数据项和子数据项,即可获得所需的全部数据项。
通过与图1所示的将全部字段放入一个大的重排序缓冲区相比,一方面,本申请实施例所使用的图2所示的主缓冲区所需的存储空间更小(从2条数据项减少为1条主数据项),如此,可减小重排序缓冲区所在芯片的面积;另一方面,本申请实施例所使用的主缓冲区中的冗余信息更少(减少了1条字段1的值也为“x_1”的数据项),在所提供的存储空间既定的情况下,就可以存储更多指令的信息,例如,利用减少出来的存储空间可以再存储进一条字段1的值也为“x_2”的数据项,如此,可以将重排序缓冲区所能容纳的指令数增大,使乱序窗口更大,计算性能更佳。
相应地,图4示出了本申请实施例在响应于获取指令信息的请求,执行以下操作:
操作S410,在主缓冲区中,获取与请求匹配的主数据项,得到目标主数据项;
以图2所示的重排序缓冲区为例,假设与此次请求匹配的目标主数据项为主数据项标识为“ROB_1”的主数据项。
操作S420,根据目标主数据项的至少一个关联字段的值,从至少一个子缓冲区中获取子数据项,得到目标子数据项;
如图2所示,通过主缓冲区中与第一子缓冲区关联的关联字段“第一子数据项标识”:ROB_A_1和ROB_A_2,得到两条目标子数据项:“字段2:y_1”和“字段2:y_2、字段3:z_2”。
操作S430,合并目标主数据项和目标子数据项,得到与请求对应的目标数据项;
将目标主数据项“字段1:x_1” 分别和两条目标子数据项:“字段2:y_1”和“字段2:y_2、字段3:z_2”进行合并,可得到以下目标数据项:
“字段1:x_1、字段2:y_1”;
“字段1:x_1、字段2:y_2、字段3:z_2”
操作S440,返回目标数据项。
如此,可见本申请实施例使用如图2所示的重排序缓冲区所获得的目标数据项也是完整的,和常用方法从如图1所示的传统的一个大的重排序缓冲区所返回的目标数据项是相同的。
而且,由于本申请实施例所使用的图2所示的主缓冲区所包含的字段更少,查询效率或获取数据的速度也更快。
相应地,图5示出了本申请实施例在响应于引退指令的请求,执行以下操作:
操作S510,在主缓冲区中,获取与请求匹配的主数据项,得到待释放主数据项;
其中,待释放主数据项指响应指令已提交(committed),可以从重排序缓冲区中删除的与已提交指令对应的主数据项。
以图2所示的重排序缓冲区为例,假设与此次请求匹配的待释放主数据项为主数据项标识为“ROB_1”的主数据项。
操作S520,将待释放主数据项的至少一个关联字段的值,发送给相应的子缓冲区;
如图2所示,将主缓冲区中与第一子缓冲区关联的关联字段“第一子数据项标识”:ROB_A_1和ROB_A_2发送给第一子缓冲区。
操作S530,释放待释放主数据项。
其中,释放待释放主数据项主要指从重排序缓冲区中删除待释放主数据项。
通常,重排序缓冲区释放数据需要满足一定条件,例如, 1)本身不发生异常并且不被其它分支指令刷新掉。2)如果该条指令有目的寄存器,那么该目的寄存器所对应的物理寄存器要回收。
在本申请实施例中,则无须等待目的寄存器所对应的物理寄存器得到回收,只要确定本身不发生异常,就可以释放主数据项。
而与该指令相关的子数据项的释放,以及等待目的寄存器所对应的物理寄存器回收等事件,则可以交由各子缓冲区处理。
如此,可进一步提高处理指令信息的速度,进而大幅提高整个指令执行的流水线的处理效率,使计算性能更佳。
图6示出了从子缓冲区中释放子数据项的过程,包括:
操作S610,根据待释放主数据项的至少一个关联字段的值,从相应的子缓冲区中,确定待释放子数据项;
以图2所示的重排序缓冲区为例,假设此次待释放主数据项为主数据项标识为“ROB_1”的主数据项,则可以通过主缓冲区中与第一子缓冲区关联的关联字段“第一子数据项标识”:ROB_A_1和ROB_A_2,确定两条待释放子数据项:“字段2:y_1”和“字段2:y_2、字段3:z_2”。
操作S620,等待被引退指令的结果写回;
操作S630,释放待释放子数据项。
将两条待释放子数据项:“字段2:y_1”和“字段2:y_2、字段3:z_2”从第一子缓冲区中删除。
如此,可以由子缓冲区分担一些数据项释放工作,并由子缓冲区来等待结果写回,从而更快地释放重排序缓冲区的主缓冲区,使得重排序缓冲区的主缓冲区可以尽早地腾出更多的存储空间以存储更多指令的信息。
在本申请另一些实施例中,还可根据指令信息的使用范围或指令类型等,将指令信息分为更多类型,为重排序缓冲区建立更多的子缓冲区,将不同类型的指令信息分别存储至不同的子缓冲区。
例如,假设图2所示的重排序缓冲区中,字段2为指令类型,而字段3为目的寄存器的信息,子数据项“字段2:y_1;”为分支指令对应的一条子数据项。由于分支指令,没有目的寄存器的信息,所以字段3的值为空。
在图2所示的重排序缓冲区中,分支指令的在存储至第一子缓冲区时,也依然会分配一个存储空间来存储字段3的值。如此,也会导致轻微的存储空间浪费。
为此,在图7所示的本申请另一实施例中,对在图2所示的重排序缓冲区进行了进一步改进,根据指令类型对子缓冲区进行了再次拆分,将指令类型为指定类型指令(例如,分支指令)的指令信息从第一子缓冲区分出来,存储至专门为指定类型指令设置的只有“字段2”的第二子缓冲区中。
如此,当指令类型为“分支指令”时则不必再为其分配字段3的存储空间以存储目的寄存器的信息,从而可以节约存储空间,进一步减小重排序缓冲区所在的芯片面积。
图8示出了本申请另一实施例所采用的重排序缓冲区结构,其根据各个字段被使用的情况,将第二数量级的指令的共用信息(例如,字段2、字段3等字段)设置为第二类型的指令信息;将第三数量级的指令的共用信息(例如字段4、字段5等字段)设置为第三类型的指令信息;将第四数量级的指令的共用信息(例如字段6、字段7等字段)设置为第四类型的指令信息等。其中,第二数据量级、第三数据量级和第四数据量级通常都小于第一数量级。
相应地,以第二类型的指令信息为例,将指令信息存储至至少一个子缓冲区形成子数据项包括:
若指令信息所属的类型为第二类型,则将指令信息存储至第一子缓冲区得到第一子数据项;
设置主数据项中第一关联字段的值,以根据第一关联字段的值从第一子缓冲区中得到第一子数据项,第一关联字段为与第一子缓冲区关联的关联字段。
如此,可以根据各个指令信息在各个指令之间的使用情况或共用程度对指令信息进行分类管理,最大程度减少信息的冗余,减少存储空间,使重排序缓冲区所在的芯片的面积更小。
此外,在图8所示的本申请实施例中,还会在与子缓冲区关联的关联字段中对与之关联的子数据项进行计数,即在将指令信息存储至子缓冲区中时,会对该计数进行加1,并根据该计数确定:在提交指令时,需要获取的子数据项的个数;或是在引退指令时,需要释放的子数据项的个数。
例如,在以引退“ROB_1”所对应的指令时,首先在主缓冲区中确定与待引退指令对应的主数据项,即主数据项标识为“ROB_1”的主数据项“字段1:x_1”,并释放该主数据项;之后,由各个子缓冲区等待结果提交,并在结果提交后根据其对应的数据项计数,释放各个缓冲区头部对应项数的子数据项。
以第一子缓冲区为例,与第一子缓冲区对应的第一子数据下计数为“3”,则从第一子缓冲区中依次释放第一子数据项标识为“ROB_A_1”、“ROB_A_2”和“ROB_A_3”的3条子数据项。
类似的,与第二子缓冲区对应的第二子数据下计数为“2”,则从第二子缓冲区中依次释放第二子数据项标识为“ROB_B_1”和“ROB_B_2”的2条子数据项;与第三子缓冲区对应的第一子数据下计数为“1”,则从第三子缓冲区中释放第一子数据项标识为“ROB_C_1”的子数据项。
如此,关联字段所占空间更小,主缓冲区的存储空间利用率更高,重排序缓冲区所在的芯片面积和功耗都可以得到进一步减小,且在进行子缓冲区的关联操作时,速度更快,操作更为简单,所需的计算资源更少。
进一步地,本申请实施例还提供一种重排序缓冲区的缓冲装置,如图9所示,该装置90包括:指令信息获取模块901,用于获取待缓存至重排序缓冲区的指令信息,其中,重排序缓冲区包括一个主缓冲区和至少一个子缓冲区,主缓冲区用于存储第一类型的指令信息,第一类型的指令信息包括第一数量级的指令的共用信息,主缓冲区设置有与至少一个子缓冲区关联的至少一个关联字段;类型确定模块902,用于确定指令信息所属的类型;重排序缓冲模块903,用于若指令信息所属的类型为第一类型,则将指令信息存储至主缓冲区形成主数据项,否则将指令信息存储至至少一个子缓冲区形成子数据项。
根据本申请实施例一实施方式,至少一个子缓冲区中的第一子缓冲区用于存储第二类型的指令信息,相应地,重排序缓冲模块903包括:子数据项存储子模块,用于若指令信息所属的类型为第二类型,则将指令信息存储至第一子缓冲区得到第一子数据项;关联字段设置子模块,用于设置主数据项中第一关联字段的值,以根据第一关联字段的值从第一子缓冲区中得到第一子数据项,第一关联字段为与第一子缓冲区关联的关联字段。
根据本申请实施例一实施方式,第一关联字段用于对第一子数据项进行计数,相应地,关联字段设置子模块包括:计数单元,用于对第一子数据项进行计数得到第一计数值;关联字段设置单元,用于将第一关联字段的值设置为第一计数值。
根据本申请实施例一实施方式,该装置还包括:目标主数据项获取模块,用于在主缓冲区中,获取与请求匹配的主数据项,得到目标主数据项;目标子数据项获取模块,用于根据目标主数据项的至少一个关联字段的值,从至少一个子缓冲区中获取子数据项,得到目标子数据项;数据项合并模块,用于合并目标主数据项和目标子数据项,得到与请求对应的目标数据项;目标数据项返回模块,用于返回目标数据项。
根据本申请实施例一实施方式,该装置还包括:待释放主数据项获取模块,用于在主缓冲区中,获取与请求匹配的主数据项,得到待释放主数据项;关联值获取模块,用于将待释放主数据项的至少一个关联字段的值,发送给相应的子缓冲区;主数据项释放模块,用于释放待释放主数据项。
根据本申请实施例一实施方式,该装置还包括:待释放子数据项确定模块,用于根据待释放主数据项的至少一个关联字段的值,从相应的子缓冲区中,确定待释放子数据项;结果写回等待模块,用于等待被引退指令的结果写回;子数据项释放模块,用于释放待释放子数据项。
需要说明的是,自第一台通用电子计算机问世以来,计算机技术在几十年间取得了飞速的发展,计算机技术的飞速发展得益于计算机体系结构的改进以及计算机生产技术的发展。计算机生产技术对计算机技术的发展的贡献一直是稳定的;然而,由于计算机体系结构经历几十年的改进,使得计算机体系结构的改进空间愈发狭小,因此针对计算机体系结构的任意小的改进都将对处理器的性能和计算机技术的发展带来较明显的影响。
根据本申请实施例第三方面,提供一种计算机存储介质,存储介质包括一组计算机可执行指令,当指令被执行时用于执行上述任一项的 方法。
这里需要指出的是:以上针对重排序缓冲区的数据处理装置实施例的描述和以上针对计算机存储介质实施例的描述,与前述方法实施例的描述是类似的,具有同前述方法实施例相似的有益效果,因此不做赘述。对于本申请对重排序缓冲区的数据处理装置实施例的描述和对计算机存储介质实施例的描述尚未披露的技术细节,请参照本申请前述方法实施例的描述而理解,为节约篇幅,因此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的流程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种流程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的流程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个装置,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本申请实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以利用硬件的形式实现,也可以利用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通流程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储介质、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例方法的全部或部分。而前述的存储介质包括:移动存储介质、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种重排序缓冲区的数据处理方法,其特征在于,所述方法包括:
获取待缓存至重排序缓冲区的指令信息,其中,所述重排序缓冲区包括一个主缓冲区和至少一个子缓冲区,所述主缓冲区用于存储第一类型的指令信息,所述第一类型的指令信息包括第一数量级的指令的共用信息,所述主缓冲区设置有与所述至少一个子缓冲区关联的至少一个关联字段;
确定所述指令信息所属的类型;
若所述指令信息所属的类型为所述第一类型,则将所述指令信息存储至所述主缓冲区形成主数据项,否则将所述指令信息存储至所述至少一个子缓冲区形成子数据项,所述主数据项和所述子数据项共同组成一条指令所需的完整数据项。
2.根据权利要求1所述的方法,其特征在于,所述至少一个子缓冲区中的第一子缓冲区用于存储第二类型的指令信息,
相应地,所述将所述指令信息存储至所述至少一个子缓冲区形成子数据项包括:
若所述指令信息所属的类型为所述第二类型,则将所述指令信息存储至所述第一子缓冲区得到第一子数据项;
设置所述主数据项中第一关联字段的值,以根据所述第一关联字段的值从所述第一子缓冲区中得到第一子数据项,所述第一关联字段为与所述第一子缓冲区关联的关联字段。
3.根据权利要求2所述的方法,其特征在于,所述第二类型的指令信息包括第二数量级的指令的共用信息,所述第二数量级小于所述第一数量级。
4.根据权利要求2所述的方法,其特征在于,所述第二类型的指令信息包括指定指令类型的指令信息。
5.根据权利要求2所述的方法,其特征在于,所述第一关联字段用于对所述第一子数据项进行计数,
相应地,所述设置所述主数据项中第一关联字段的值,包括:
对所述第一子数据项进行计数得到第一计数值;
将所述第一关联字段的值设置为所述第一计数值。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括响应于获取指令信息的请求,执行以下操作:
在所述主缓冲区中,获取与所述请求匹配的主数据项,得到目标主数据项;
根据所述目标主数据项的至少一个关联字段的值,从所述至少一个子缓冲区中获取子数据项,得到目标子数据项;
合并所述目标主数据项和所述目标子数据项,得到与所述请求对应的目标数据项;
返回所述目标数据项。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括响应于引退指令的请求,执行以下操作:
在所述主缓冲区中,获取与所述请求匹配的主数据项,得到待释放主数据项;
将所述待释放主数据项的至少一个关联字段的值,发送给相应的子缓冲区;
释放所述待释放主数据项。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
根据所述待释放主数据项的至少一个关联字段的值,从相应的子缓冲区中,确定待释放子数据项;
等待所述被引退指令的结果写回;
释放所述待释放子数据项。
9.一种重排序缓冲区的数据处理装置,其特征在于,所述装置包括:
指令信息获取模块,用于获取待缓存至重排序缓冲区的指令信息,其中,所述重排序缓冲区包括一个主缓冲区和至少一个子缓冲区,所述主缓冲区用于存储第一类型的指令信息,所述第一类型的指令信息包括第一数量级的指令的共用信息,所述主缓冲区设置有与所述至少一个子缓冲区关联的至少一个关联字段;
类型确定模块,用于确定所述指令信息所属的类型;
重排序缓冲模块,用于若所述指令信息所属的类型为所述第一类型,则将所述指令信息存储至所述主缓冲区形成主数据项,否则将所述指令信息存储至所述至少一个子缓冲区形成子数据项,所述主数据项和所述子数据项共同组成一条指令所需的完整数据项。
10.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行根据权利要求1-8中任一项所述的方法。
CN202210663685.2A 2022-06-14 2022-06-14 一种重排序缓冲区的数据处理方法、装置及存储介质 Active CN114756287B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210663685.2A CN114756287B (zh) 2022-06-14 2022-06-14 一种重排序缓冲区的数据处理方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210663685.2A CN114756287B (zh) 2022-06-14 2022-06-14 一种重排序缓冲区的数据处理方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN114756287A CN114756287A (zh) 2022-07-15
CN114756287B true CN114756287B (zh) 2022-09-02

Family

ID=82337217

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210663685.2A Active CN114756287B (zh) 2022-06-14 2022-06-14 一种重排序缓冲区的数据处理方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN114756287B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115061952B (zh) * 2022-08-19 2022-12-27 飞狐信息技术(天津)有限公司 一种数据缓存方法、装置、电子设备、及计算机存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100373379C (zh) * 2003-05-29 2008-03-05 华为技术有限公司 一种设备性能统计数据的采集及处理方法
US7350059B2 (en) * 2004-05-21 2008-03-25 Via Technologies, Inc. Managing stack transfers in a register-based processor
US9069829B2 (en) * 2011-01-21 2015-06-30 Microsoft Technology Licensing, Llc Data items manager
CN103914565B (zh) * 2014-04-21 2017-05-24 北京搜狐新媒体信息技术有限公司 一种向数据库插入数据的方法及装置
CN105426160B (zh) * 2015-11-10 2018-02-23 北京时代民芯科技有限公司 基于sprac v8指令集的指令分类多发射方法
US11481221B2 (en) * 2018-05-02 2022-10-25 Micron Technology, Inc. Separate branch target buffers for different levels of calls
CN111258649B (zh) * 2020-01-21 2022-03-01 Oppo广东移动通信有限公司 处理器、芯片和电子设备
CN111708288B (zh) * 2020-05-18 2021-11-26 慧灵科技(深圳)有限公司 数据处理的方法、装置、电子设备及存储介质
CN112416972A (zh) * 2020-09-25 2021-02-26 上海哔哩哔哩科技有限公司 实时数据流处理方法、装置、设备、及可读存储介质
CN112256739B (zh) * 2020-11-12 2022-11-18 同济大学 一种基于多臂赌博机的动态流大数据中数据项筛选方法
CN114253930A (zh) * 2021-12-09 2022-03-29 中信银行股份有限公司 数据处理方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN114756287A (zh) 2022-07-15

Similar Documents

Publication Publication Date Title
US20230185607A1 (en) Hardware accelerated dynamic work creation on a graphics processing unit
US20150186068A1 (en) Command queuing using linked list queues
US10255107B2 (en) Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US10402223B1 (en) Scheduling hardware resources for offloading functions in a heterogeneous computing system
JP2010108153A (ja) スケジューラ、プロセッサシステム、プログラム生成方法およびプログラム生成用プログラム
US20120297216A1 (en) Dynamically selecting active polling or timed waits
US9244734B2 (en) Mechanism of supporting sub-communicator collectives with o(64) counters as opposed to one counter for each sub-communicator
CN110659115A (zh) 具有硬件辅助任务调度的多线程处理器核
CN114756287B (zh) 一种重排序缓冲区的数据处理方法、装置及存储介质
KR20210108973A (ko) 입/출력 저장 명령의 처리
US10942772B2 (en) Dispatching jobs for execution in parallel by multiple processors
JP2002287959A (ja) ロード・ストアキュー
US10552158B2 (en) Reorder buffer scoreboard having multiple valid bits to indicate a location of data
US11481250B2 (en) Cooperative workgroup scheduling and context prefetching based on predicted modification of signal values
US9384047B2 (en) Event-driven computation
US9811403B1 (en) Method, apparatus and system for performing matching operations in a computing system
US11086669B2 (en) System and method for sorting and scheduling workflows
US6658525B1 (en) Concurrent access of an unsegmented buffer by writers and readers of the buffer
US20040128484A1 (en) Method and apparatus for transparent delayed write-back
US11112999B2 (en) Optimizing I/O latency by software stack latency reduction in a cooperative thread processing model
CN118159947A (zh) 用于处理任务请求的方法和计算设备
US8375155B2 (en) Managing concurrent serialized interrupt broadcast commands in a multi-node, symmetric multiprocessing computer
US10664276B2 (en) Remote command invocation using a register for storing a command and an attention bit indicating command has been issued
WO2023093984A1 (en) Method and computing device for processing task request
CN117707623A (zh) 一种risc-v矩阵指令的寄存器重命名方法和装置

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