CN115576610A - 一种适用于通用顺序发射处理器的指令分发处理方法及装置 - Google Patents
一种适用于通用顺序发射处理器的指令分发处理方法及装置 Download PDFInfo
- Publication number
- CN115576610A CN115576610A CN202211443004.8A CN202211443004A CN115576610A CN 115576610 A CN115576610 A CN 115576610A CN 202211443004 A CN202211443004 A CN 202211443004A CN 115576610 A CN115576610 A CN 115576610A
- Authority
- CN
- China
- Prior art keywords
- instruction
- module
- execution
- information
- write
- 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
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 14
- 238000001514 detection method Methods 0.000 claims abstract description 25
- 238000000605 extraction Methods 0.000 claims abstract description 8
- 239000013598 vector Substances 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 8
- 238000012544 monitoring process Methods 0.000 claims description 6
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims description 3
- 238000013461 design Methods 0.000 description 8
- 238000000034 method Methods 0.000 description 8
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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
- 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)
Abstract
本发明提供一种适用于通用顺序发射处理器的指令分发处理方法及装置,所述指令分发装置的前端连接到处理器的指令提取单元,后端连接到处理器的执行单元。所述指令分发装置包括指令译码模块、指令执行状态跟踪模块、操作数队列模块、写回数据前递模块、数据冒险与资源冲突检测模块、指令发射模块。所述指令译码模块的前端连接到指令提取单元,后端分别连接到指令执行状态跟踪模块、操作数队列模块,所述指令执行状态跟踪模块与写回数据前递模块、数据冒险与资源冲突检测模块分别相连接,所述操作数队列模块与指令发射模块相连接,所述指令发射模块、写回数据前递模块分别和执行单元相连接。本发明能够显著提升指令调度效率和处理器执行效率,减少编译器进行指令排布的开销。
Description
技术领域
本发明涉及一种指令分发装置,尤其是涉及一种适用于通用顺序发射处理器的指令分发处理方法及装置。
背景技术
记分板(Scoreboard)是一种应用在顺序指令发射处理器中基于硬件的动态指令调度技术,以实现流水线效率执行。指令分发(Dispatch)与发射(Issue)过程的调节由记分板逻辑的一部分进行,将每条未提交的执行指令的目的操作数与作为后续发出的指令的源操作数进行比较。如果存在硬件执行资源冲突,或者数据冒险(DataHazard)或依赖性(Dependency),则后续指令暂停(Stall),只要当前指令不依赖于先前的指令并且不存在结构性冒险或硬件执行资源冲突,就可以执行指令。记分板可以认为是与取指阶段和执行阶段交换信息的中介单元,负责处理数据依赖关系以及数据前递(Forwarding)。整体执行过程大致如下:取指并分发到指令队列,并在队列中等待译码,直到其输入操作数可用。一旦可用,指令由记分板的功能单元执行,结果写入寄存器文件中的目标寄存器。
当具有数据依赖性的指令在流水线的不同阶段修改数据时,就会发生数据冒险。必须防止它们,否则它们会导致意外输出。例如,在三种情况下可能会发生数据冒险,记分板会处理这些情况:
(1)写后读 (RAW) :是指指令引用尚未计算或检索的结果的情况。之所以会发生这种情况,是因为即使在前一条指令之后执行了一条指令,但前一条指令还没有完全通过流水线进行处理。在这个实现中,当源操作数被检查时,将被保持在重试状态中,直到该寄存器上的写入被较早的指令完成,新内容可用。
(2)读后写 (WAR): 是指指令在被前一条指令读取之前尝试写入目标寄存器的情况。因为只有源操作数的有效值才会被放置在指令流水线中,它们不能被覆盖,所以记分板确保能够防止这样的冒险。
(3)写后写 (WAW) :是指指令尝试在前一条指令写入操作数之前写入操作数的情况。
记分板(Scoreboard)在处理器指令发射单元中的应用不是一个新的概念,在高性能通用处理器设计中,指令的乱序发射单元有专门的微架构设计来完成指令分发和发射。传统的数字信号处理器设计中,记分板又设计的过于冗杂。然而,对于当前强调计算密集型的处理器,例如向量处理器、张量处理器、数字信号处理器等,硬件资源主要集中在计算单元上,而同时对指令的乱序发射没有硬性的需求。但如果完全通过编译器来解决指令间的数据冒险或是资源冲突,对编译器的开发也会带来较大的负担,同时,如果硬件不做专门的处理,可能出现非预期的流水线停顿,降低处理器性能。
发明内容
本发明提供了一种适用于通用顺序发射处理器的指令分发处理方法及装置,解决了指令间的数据冒险或是资源冲突的问题,其技术方案如下所述:
一种适用于通用顺序发射处理器的指令分发处理方法,包括以下步骤:
S1:处理器初始化时,将所有资源可用位复位;
S2:指令译码模块对指令进行译码并注册指令状态信息,同时,将当前指令块的资源需求与目前操作数队列中对应的指令资源可用性进行比较;
S3:指令执行状态跟踪模块记录指令状态信息并在状态表更新资源使用状态以及执行单元写回结果,同时准备为下一个指令块更新对应信息;
S4:操作数队列模块将待执行指令的对应操作数信息发送到数据冒险与资源冲突检测模块,检测无误后,发送至执行单元,操作数队列更新队列指针以表明刚分发的待执行指令;
S5:当来自执行单元完成的结果可以被写入通用寄存器堆,操作数队列模块设置写回标志位并根据指令状态跟踪模块中对应的条目刷新相应的信息;
S6:通过监测指令提交状态以确保对应资源可以被释放,操作数队列模块释放对应位置和指令执行状态跟踪模块中的状态表条目以使它们能用于后续指令。
进一步的,步骤S2中,所述指令译码模块对指令提取单元接收到的指令块进行译码,然后对指令块中的各待处理指令,在指令执行状态跟踪模块和操作数队列模块中注册指令状态信息,包括将待处理指令相应信息发送到指令执行状态跟踪模块,将待处理指令相应信息的索引发送到操作数队列模块中,所述操作数队列模块的每一个条目对应指令执行状态跟踪模块的一个状态表条目。
进一步的,步骤S4中,执行指令在执行单元进行执行时,对于需要进行数据前递操作的数据,经过写回数据前递模块,将数据发送到对应的执行单元。
进一步的,步骤S4中,所述操作数队列模块能够用来跟踪发射到执行单元后但尚未执行的指令状态,当新的待处理指令从指令译码模块分发出来,需要检查当前队列里对应的每条待执行指令信息并与新的待处理指令进行对比,之后将新的待处理指令给到数据冒险与资源冲突检测模块来决策输入操作数相关性,同时跟踪流水和待执行指令提交的状态,确定在待执行指令进行执行完成之后是否可以释放相应的位置,在发射所有相关待执行指令之前,无法释放操作数队列中具有相关指令的位置。
进一步的,步骤S4中,所述数据冒险与资源冲突检测模块进行检测的步骤如下:
S11:首先检查执行单元各功能模块的可用性;
S12:然后根据指令译码模块的指令译码信息和操作数队列中对应的数据冒险与资源冲突检测模块的状态表信息,检查各操作数的可用性;
S13:经过前向推送仲裁、数据冒险检查,以及硬件资源的可用性,发送可用的操作数到对应的执行单元;
S14:待执行指令发送后对操作数队列给出响应信号以更新操作数队列的指针。
进一步的,步骤S5中,当分发待处理指令时,操作数队列模块找到第一个空位,指令执行状态跟踪模块的指令发射状态位设置为1,当待执行指令被提交时,提交标记位设置为1,指令执行状态跟踪模块使用上述标记位来确定是否可以释放和重新分配操作数队列位置并复位对应流水运行表,如果指令流中没有引用特定寄存器位置的指令,则可以在提交后立即释放该寄存器位置,否则,对应位置仍不可用。
一种适用于通用顺序发射处理器的指令分发处理装置,包括:
指令译码模块:将从指令提取单元接收到的指令块译码成待处理指令,将待处理指令相应信息发送到指令执行状态跟踪模块,将待处理指令相应信息的索引发送到操作数队列模块;
指令执行状态跟踪模块:用于存储指令译码模块传来的待处理指令相应信息,还有跟踪指令执行状态跟踪模块和操作数队列模块中待执行指令的信息变动,以及执行单元对于执行指令的写回信息;
操作数队列模块:用于存储待处理指令被分配的标识,所述操作数队列模块的条目内容作为指令执行状态跟踪模块的状态表条目的索引;
写回数据前递模块:对于执行单元对指令的执行数据,通过写回数据前递模块仲裁,不需要写入寄存器堆;
数据冒险与资源冲突检测模块:决定当前待执行指令是发送到执行单元或是暂停运行;对发射到执行单元的待执行指令进行流水线执行阶段监测;
指令发射模块:用于将指令执行状态跟踪模块和操作数队列模块中待执行指令发射到执行单元的标量执行流水线、向量执行流水线、张量执行流水线中;
所述指令译码模块的前端连接到指令提取单元,后端分别连接到指令执行状态跟踪模块、操作数队列模块,所述指令执行状态跟踪模块与写回数据前递模块、数据冒险与资源冲突检测模块分别相连接,所述操作数队列模块与指令发射模块相连接,所述指令发射模块、写回数据前递模块分别和执行单元相连接。
所述指令执行状态跟踪模块设置有状态表,所述状态表包括多条状态表条目,用于存储指令的状态信息,所述指令的状态信息包括待处理指令相应信息和执行指令的写回信息,所述写回信息包括执行单元写回数据有效和执行单元写回数据。
所述状态表条目的内容包括指令发射状态、指令类型、指令操作、指令标识、立即数或寄存器使用标识、寄存器源地址1~N、寄存器目的地址1~N、执行单元写回数据有效和执行单元写回数据。
所述指令执行状态跟踪模块的状态表条目在被分配给待处理指令时,该状态表条目被标记为已发射。
所述适用于通用顺序发射处理器的指令分发处理方法及装置,在顺序指令发射的精简指令集(RISC)或超长指令字(VLIW)架构通用处理器、人工智能/训练处理器以及数字信号处理器芯片设计中,能够以硬件资源开销较小的简单组件实现高效的指令调度与分发组件,并且同时适配标量及向量处理器的指令分发与发射单元配合编译器优化设计,支持数据乱序写回,显著提升指令调度效率和处理器执行效率,减少编译器进行指令排布的开销。
附图说明
图1是所述指令分发装置的连接位置示意图;
图2是所述指令分发装置的微架构示意图;
图3是所述指令执行状态跟踪模块中状态表条目内容的示意图。
具体实施方式
如图1所示,所述指令分发装置需要接入处理器前端的指令块,也就是需要接收处理器前端取到的指令块,所述处理器包括通用处理器、人工智能处理器、数字信号处理器。所述指令分发装置接收指令块后对指令进行分发,分发的指令可以分别进入执行单元的标量执行流水线、向量执行流水线、张量执行流水线的一个或多个,相互之间不同类型的指令分发过程并行不受干扰。
如图2所示的适用于通用顺序发射处理器的指令分发处理装置中(简称指令分发装置),所述指令分发装置的前端连接到处理器的指令提取单元,后端连接到处理器的执行单元。所述指令分发装置包括指令译码模块、指令执行状态跟踪模块、操作数队列模块、写回数据前递模块、数据冒险与资源冲突检测模块、指令发射模块。
所述指令译码模块的前端连接到指令提取单元,后端分别连接到指令执行状态跟踪模块、操作数队列模块,所述指令执行状态跟踪模块与写回数据前递模块、数据冒险与资源冲突检测模块分别相连接,所述操作数队列模块与指令发射模块相连接,所述指令发射模块、写回数据前递模块分别和执行单元相连接。
(1)所述指令译码模块:对从指令提取单元接收到的指令块进行译码,区分指令块中各待处理指令的类型,所述类型是指标量、向量、张量,将所述待处理指令分发进入对应的指令执行状态跟踪模块和操作数队列模块中,所述指令执行状态跟踪模块同样设置有标量、向量、张量三种类型的流水线,所述操作数队列模块同样设置有标量、向量、张量三种类型的队列。同时将待处理指令相应信息发送到指令执行状态跟踪模块,将待处理指令相应信息的索引发送到操作数队列模块中。其中,相应信息在某实施例中,包括类型、寄存器地址、操作数类型、使用的功能单元以及执行的周期数等。
(2)所述指令执行状态跟踪模块:用于存储指令译码模块传来的待处理指令相应信息,还有跟踪指令执行状态跟踪模块和操作数队列模块中待执行指令的信息变动,以及执行单元对于执行指令的写回(Write Back)信息,所述指令执行状态跟踪模块设置有状态表,所述状态表包括多条状态表条目,构成相应的资源使用数据结构,所述状态表条目用于存储指令的状态信息,其中,所述指令的状态信息包括待处理指令相应信息和执行指令的写回信息,所述写回信息包括执行单元写回数据有效和执行单元写回数据。如图3所示的指令执行状态跟踪模块中状态表条目内容某实施例中,所述状态表条目的内容包括指令发射状态、指令类型、指令操作、指令标识、立即数或寄存器使用标识、寄存器源地址1~N、寄存器目的地址1~N、执行单元写回数据有效和执行单元写回数据。
所述指令执行状态跟踪模块的状态表条目在被分配给待处理指令时,该状态表条目被标记为已发射(使用中,Issued),待处理指令的状态变为待执行指令,随着待执行指令进入执行单元,待执行指令的状态变为执行指令,状态表条目随着执行指令被执行而被释放。所述待处理指令、待执行指令、执行指令是对指令在不同阶段的表述方式,方便描述。可见,所述指令执行状态跟踪模块的数据来源为指令译码模块和执行单元写回。
(3)所述指令发射模块:用于将指令执行状态跟踪模块和操作数队列模块中待执行指令发射到执行单元的标量执行流水线、向量执行流水线、张量执行流水线中,多条待执行指令可以同时发射,发射后待执行指令占用的状态表条目空出,相应数量的状态表条目被分配给新的待处理指令。
(4)操作数队列模块:当待处理指令分发之后,待处理指令相应信息存储在指令执行状态跟踪模块的状态表条目中,同时该待处理指令被分配一个标识(id),所述标识(id)存储在操作数队列模块的条目中,这样,指令执行状态跟踪模块每一个状态表条目对应操作数队列模块中的一个条目,所述操作数队列模块的条目内容作为指令执行状态跟踪模块的状态表条目的索引。
(5)数据冒险与资源冲突检测模块:根据指令执行状态跟踪模块的信息检查数据相关性,以及当前待执行指令所需执行单元的硬件资源是否空闲可用,决定当前待执行指令是发送到执行单元或是暂停运行(Stall),同时仲裁并选择需要前递(写入寄存器堆之前直接发送到执行单元供使用)的数据。在数据冒险与资源冲突检测模块中会对发射到执行单元的待执行指令(标量、向量、张量)进行流水线执行阶段监测,即确认前级指令经过对应流水线阶段后能够释放硬件资源。
(6)写回数据前递模块:执行单元在对执行指令进行执行时,对于执行后的数据,正好用于下一条执行指令,这种情况下,该数据通过写回数据前递模块,不需要写入寄存器堆,而是存储在写回数据前递模块中,以便发送到执行单元供使用。
在适用于通用顺序发射处理器的指令分发处理装置的基础上,对应的适用于通用顺序发射处理器的指令分发处理方法,包括以下步骤:
S1:处理器初始化时,将所有资源可用位复位;
S2:指令译码模块对指令进行译码并注册指令状态信息,同时,将当前指令块的资源需求与目前操作数队列中对应的指令资源可用性进行比较;
所述指令译码模块对指令提取单元接收到的指令块进行译码,然后对指令块中的各待处理指令,在指令执行状态跟踪模块和操作数队列模块中注册指令状态信息,包括将待处理指令相应信息发送到指令执行状态跟踪模块,将待处理指令相应信息的索引发送到操作数队列模块中,所述操作数队列模块的每一个条目对应指令执行状态跟踪模块的一个状态表条目。
所述指令块的资源需求是针对待处理指令被分配的标识(id),操作数队列中对应的指令资源是用于存储待处理指令被分配的标识,作为指令执行状态跟踪模块的待处理指令相应信息的索引,当有足够的指令资源可用时,指令译码单元可以分发到指令执行状态跟踪模块,记入操作数队列,然后等待发射到执行单元。
S3:指令执行状态跟踪模块记录指令状态信息并在状态表更新资源使用状态以及执行单元写回结果,同时准备为下一个指令块更新对应信息;
所述指令执行状态跟踪模块状态表的每一个状态表条目,内容(如图3所示)包括待处理指令相应信息和执行指令的写回信息,所述待处理指令相应信息对应的待处理指令,在通过状态表条目匹配后,待处理指令相应信息被标记为已发射,对应的待处理指令状态变为待执行指令。所述状态表中的状态表条目形成资源使用数据结构,同时状态表条目会接收待执行指令发射到执行单元的写回结果。
S4:操作数队列模块将待执行指令的对应操作数信息发送到数据冒险与资源冲突检测模块,检测无误后,发送至执行单元,操作数队列更新队列指针以表明刚分发的待执行指令。其中,执行指令在执行单元进行执行时,对于需要进行数据前递操作的数据,经过写回数据前递模块,将数据发送到对应的执行单元。
所述操作数队列模块能够用来跟踪发射到执行单元后但尚未执行的执行指令(执行过程中的)状态,当新的待处理指令从指令译码模块分发出来,需要检查当前队列里对应的每条待执行指令信息并与新的待处理指令进行对比,之后将新的待处理指令给到数据冒险与资源冲突检测模块来决策输入操作数相关性。同时跟踪流水和待执行指令提交的状态,确定在待执行指令进行执行完成之后是否可以释放相应的位置。
由于输入操作数的相关性在分发阶段被评估并记录在指令执行状态跟踪模块状态表中,这些相关性应该保持有效,因此,在发射所有相关待执行指令之前,无法释放操作数队列中具有相关指令的位置。
所述指令执行状态跟踪模块的状态表条目,以及操作数队列模块对应的索引的信息需要根据待执行指令的被执行进行更新,同时将待执行指令提供给数据冒险与资源冲突检测模块,如果待执行指令没有相关性或者较老未提交的待执行指令占用功能单元资源,待执行指令通过指令发射模块正常发射,如果发现数据冒险或新的待执行指令需要使用的硬件资源尚未被释放,则暂停流水线等待。所述数据冒险的情况包括:待执行指令没有相关性或者存在较老未提交的待执行指令占用功能单元资源。
待执行指令需要使用的硬件资源尚未被释放的情况包括:提供于指令译码单元的接口以接收关于要分发的待处理指令的信息;指令执行状态跟踪模块中关于指令执行状态跟踪模块和操作数队列模块中运行待执行指令的信息;跟踪通用寄存器堆的可用性,并在分发待处理指令时将(通用寄存器堆的可用性)信息分发给待处理指令;跟踪可用的操作数队列模块的条目数,根据指令发射(Issue)和提交(Commit)信息维护操作数队列读写指针;将资源可用性广播给数据冒险与资源检测模块以及写回数据前递(Data Forwarding)模块,以获取输入源数据发射给到执行单元。
所述数据冒险与资源冲突检测模块进行检测的步骤如下:
S11:首先检查执行单元各功能模块的可用性;
S12:然后根据指令译码模块的指令译码信息和操作数队列中对应的数据冒险与资源冲突检测模块的状态表信息,检查各操作数的可用性;
S13:经过前向推送仲裁、数据冒险检查,以及硬件资源的可用性,发送可用的操作数到对应的执行单元;
S14:待执行指令发送后对操作数队列给出响应信号以更新操作数队列的指针。
S5:当来自执行单元完成的结果可以被写入通用寄存器堆,操作数队列模块设置写回标志位并根据指令状态跟踪模块中对应的条目刷新相应的信息。
在待执行指令被分发到执行单元并执行完毕之前为了确保通用寄存器堆对应位置不被重新分配和覆盖,操作数队列用于跟踪执行单元中的指令流中引用通用寄存器堆位置的执行指令信息,并映射到指令执行状态跟踪模块的状态表。对于指令译码模块送出的指令,都需要与操作数队列中的指令信息(指令执行状态跟踪模块的状态表)进行对比,判断通用寄存器堆的可用性。
当分发待处理指令时,操作数队列模块找到第一个空位,指令执行状态跟踪模块的指令发射状态位设置为1。当待执行指令被提交(发射)时,提交标记位设置为1。指令执行状态跟踪模块使用上述标记位来确定是否可以释放和重新分配操作数队列位置并复位对应流水运行表。如果指令流中没有引用特定寄存器位置的指令,则可以在提交后立即释放该寄存器位置。否则,对应位置仍不可用。
操作数队列模块负责跟踪发射到执行单元的“执行中”和“提交”状态。 当通用寄存器堆对应位置被分配给操作数队列中的待执行指令时,指令执行状态跟踪模块的状态表被更新以指示目的寄存器的进行中和提交状态,该信息然后用于分发后的后续指令的源寄存器相关性检查。
S6:通过监测指令提交状态以确保对应资源可以被释放,操作数队列模块释放对应位置和指令执行状态跟踪模块中的状态表条目以使它们可用于后续指令。
本发明在通用处理器、人工智能推理/训练处理器、数字信号处理器芯片应用中,通过资源开销较小的硬件指令分发与发射单元设计配合编译器优化,能够在最大限度上提升处理器的运行效率和面效比。本发明具有以下优点:(1)实现方案简单,硬件资源开销较小。(2)通用性好,可以适用于不同的指令集(精简指令集RISC,超长指令字VLIW)架构的顺序指令发射处理器,支持数据顺序及乱序写回,并且标量(或超标量)处理器和向量处理器可以共享硬件资源。(3)对编译器设计友好,无需限制由编译器完全处理指令间的数据相关性。
Claims (10)
1.一种适用于通用顺序发射处理器的指令分发处理方法,包括以下步骤:
S1:处理器初始化时,将所有资源可用位复位;
S2:指令译码模块对指令进行译码并注册指令状态信息,同时,将当前指令块的资源需求与目前操作数队列中对应的指令资源可用性进行比较;
S3:指令执行状态跟踪模块记录指令状态信息并在状态表更新资源使用状态以及执行单元写回结果,同时准备为下一个指令块更新对应信息;
S4: 操作数队列模块将待执行指令的对应操作数信息发送到数据冒险与资源冲突检测模块,检测无误后,发送至执行单元,操作数队列更新队列指针以表明刚分发的待执行指令;
S5:当来自执行单元完成的结果可以被写入通用寄存器堆,操作数队列模块设置写回标志位并根据指令状态跟踪模块中对应的条目刷新相应的信息;
S6:通过监测指令提交状态以确保对应资源可以被释放,操作数队列模块释放对应位置和指令执行状态跟踪模块中的状态表条目以使它们能用于后续指令。
2.根据权利要求1所述的适用于通用顺序发射处理器的指令分发处理方法,其特征在于:步骤S2中,所述指令译码模块对指令提取单元接收到的指令块进行译码,然后对指令块中的各待处理指令,在指令执行状态跟踪模块和操作数队列模块中注册指令状态信息,包括将待处理指令相应信息发送到指令执行状态跟踪模块,将待处理指令相应信息的索引发送到操作数队列模块中,所述操作数队列模块的每一个条目对应指令执行状态跟踪模块的一个状态表条目。
3.根据权利要求1所述的适用于通用顺序发射处理器的指令分发处理方法,其特征在于:步骤S4中,执行指令在执行单元进行执行时,对于需要进行数据前递操作的数据,经过写回数据前递模块,将数据发送到对应的执行单元。
4.根据权利要求1所述的适用于通用顺序发射处理器的指令分发处理方法,其特征在于:步骤S4中,所述操作数队列模块能够用来跟踪发射到执行单元后但尚未执行的指令状态,当新的待处理指令从指令译码模块分发出来,需要检查当前队列里对应的每条待执行指令信息并与新的待处理指令进行对比,之后将新的待处理指令给到数据冒险与资源冲突检测模块来决策输入操作数相关性,同时跟踪流水和待执行指令提交的状态,确定在待执行指令进行执行完成之后是否可以释放相应的位置,在发射所有相关待执行指令之前,无法释放操作数队列中具有相关指令的位置。
5.根据权利要求1所述的适用于通用顺序发射处理器的指令分发处理方法,其特征在于:步骤S4中,所述数据冒险与资源冲突检测模块进行检测的步骤如下:
S11:首先检查执行单元各功能模块的可用性;
S12:然后根据指令译码模块的指令译码信息和操作数队列中对应的数据冒险与资源冲突检测模块的状态表信息,检查各操作数的可用性;
S13:经过前向推送仲裁、数据冒险检查,以及硬件资源的可用性,发送可用的操作数到对应的执行单元;
S14:待执行指令发送后对操作数队列给出响应信号以更新操作数队列的指针。
6.根据权利要求1所述的适用于通用顺序发射处理器的指令分发处理方法,其特征在于:步骤S5中,当分发待处理指令时,操作数队列模块找到第一个空位,指令执行状态跟踪模块的指令发射状态位设置为1,当待执行指令被提交时,提交标记位设置为1,指令执行状态跟踪模块使用上述标记位来确定是否可以释放和重新分配操作数队列位置并复位对应流水运行表,如果指令流中没有引用特定寄存器位置的指令,则可以在提交后立即释放该寄存器位置,否则,对应位置仍不可用。
7.一种适用于通用顺序发射处理器的指令分发处理装置,其特征在于,包括:
指令译码模块:将从指令提取单元接收到的指令块译码成待处理指令,将待处理指令相应信息发送到指令执行状态跟踪模块,将待处理指令相应信息的索引发送到操作数队列模块;
指令执行状态跟踪模块:用于存储指令译码模块传来的待处理指令相应信息,还有跟踪指令执行状态跟踪模块和操作数队列模块中待执行指令的信息变动,以及执行单元对于执行指令的写回信息;
操作数队列模块:用于存储待处理指令被分配的标识,所述操作数队列模块的条目内容作为指令执行状态跟踪模块的状态表条目的索引;
写回数据前递模块:对于执行单元对指令的执行数据,通过写回数据前递模块仲裁,不需要写入寄存器堆;
数据冒险与资源冲突检测模块:决定当前待执行指令是发送到执行单元或是暂停运行;对发射到执行单元的待执行指令进行流水线执行阶段监测;
指令发射模块:用于将指令执行状态跟踪模块和操作数队列模块中待执行指令发射到执行单元的标量执行流水线、向量执行流水线、张量执行流水线中;
所述指令译码模块的前端连接到指令提取单元,后端分别连接到指令执行状态跟踪模块、操作数队列模块,所述指令执行状态跟踪模块与写回数据前递模块、数据冒险与资源冲突检测模块分别相连接,所述操作数队列模块与指令发射模块相连接,所述指令发射模块、写回数据前递模块分别和执行单元相连接。
8.根据权利要求7所述的适用于通用顺序发射处理器的指令分发处理装置,其特征在于:所述指令执行状态跟踪模块设置有状态表,所述状态表包括多条状态表条目,用于存储指令的状态信息,所述指令的状态信息包括待处理指令相应信息和执行指令的写回信息,所述写回信息包括执行单元写回数据有效和执行单元写回数据。
9.根据权利要求8所述的适用于通用顺序发射处理器的指令分发处理装置,其特征在于:所述状态表条目的内容包括指令发射状态、指令类型、指令操作、指令标识、立即数或寄存器使用标识、寄存器源地址1~N、寄存器目的地址1~N、执行单元写回数据有效和执行单元写回数据。
10.根据权利要求7所述的适用于通用顺序发射处理器的指令分发处理装置,其特征在于:所述指令执行状态跟踪模块的状态表条目在被分配给待处理指令时,该状态表条目被标记为已发射。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211443004.8A CN115576610B (zh) | 2022-11-18 | 2022-11-18 | 一种适用于通用顺序发射处理器的指令分发处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211443004.8A CN115576610B (zh) | 2022-11-18 | 2022-11-18 | 一种适用于通用顺序发射处理器的指令分发处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115576610A true CN115576610A (zh) | 2023-01-06 |
CN115576610B CN115576610B (zh) | 2023-03-10 |
Family
ID=84589094
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211443004.8A Active CN115576610B (zh) | 2022-11-18 | 2022-11-18 | 一种适用于通用顺序发射处理器的指令分发处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115576610B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115878190A (zh) * | 2023-03-08 | 2023-03-31 | 北京工业大学 | 一种应用于发射队列间指令调度填充的方法 |
CN116841614A (zh) * | 2023-05-29 | 2023-10-03 | 进迭时空(杭州)科技有限公司 | 乱序访存机制下的顺序向量调度方法 |
CN117667223A (zh) * | 2024-02-01 | 2024-03-08 | 上海登临科技有限公司 | 一种数据冒险解决方法、计算引擎、处理器及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102652304A (zh) * | 2009-12-22 | 2012-08-29 | 国际商业机器公司 | 预测并避免乱序微处理器中的操作数-存储-比较冒险 |
GB201917083D0 (en) * | 2017-06-16 | 2020-01-08 | Imagination Tech Ltd | Queues for inter-pipeline data hazard avoidance |
GB202012008D0 (en) * | 2017-06-16 | 2020-09-16 | Imagination Tech Ltd | Inter-pipeline data hazard avoidance |
-
2022
- 2022-11-18 CN CN202211443004.8A patent/CN115576610B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102652304A (zh) * | 2009-12-22 | 2012-08-29 | 国际商业机器公司 | 预测并避免乱序微处理器中的操作数-存储-比较冒险 |
GB201917083D0 (en) * | 2017-06-16 | 2020-01-08 | Imagination Tech Ltd | Queues for inter-pipeline data hazard avoidance |
GB202012008D0 (en) * | 2017-06-16 | 2020-09-16 | Imagination Tech Ltd | Inter-pipeline data hazard avoidance |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115878190A (zh) * | 2023-03-08 | 2023-03-31 | 北京工业大学 | 一种应用于发射队列间指令调度填充的方法 |
CN115878190B (zh) * | 2023-03-08 | 2023-04-21 | 北京工业大学 | 一种应用于发射队列间指令调度填充的方法 |
CN116841614A (zh) * | 2023-05-29 | 2023-10-03 | 进迭时空(杭州)科技有限公司 | 乱序访存机制下的顺序向量调度方法 |
CN116841614B (zh) * | 2023-05-29 | 2024-03-15 | 进迭时空(杭州)科技有限公司 | 乱序访存机制下的顺序向量调度方法 |
CN117667223A (zh) * | 2024-02-01 | 2024-03-08 | 上海登临科技有限公司 | 一种数据冒险解决方法、计算引擎、处理器及电子设备 |
CN117667223B (zh) * | 2024-02-01 | 2024-04-12 | 上海登临科技有限公司 | 一种数据冒险解决方法、计算引擎、处理器及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115576610B (zh) | 2023-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115576610B (zh) | 一种适用于通用顺序发射处理器的指令分发处理方法及装置 | |
CN1294484C (zh) | 利用重新调度的重放队列中断处理器中的重放依赖关系循环 | |
US11275590B2 (en) | Device and processing architecture for resolving execution pipeline dependencies without requiring no operation instructions in the instruction memory | |
KR100303673B1 (ko) | 저장인스트럭션의결과전달방법및이를구현한프로세서 | |
US5870582A (en) | Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched | |
US6349382B1 (en) | System for store forwarding assigning load and store instructions to groups and reorder queues to keep track of program order | |
US8069340B2 (en) | Microprocessor with microarchitecture for efficiently executing read/modify/write memory operand instructions | |
US5611063A (en) | Method for executing speculative load instructions in high-performance processors | |
US5913048A (en) | Dispatching instructions in a processor supporting out-of-order execution | |
US7096345B1 (en) | Data processing system with bypass reorder buffer having non-bypassable locations and combined load/store arithmetic logic unit and processing method thereof | |
US11204770B2 (en) | Microprocessor having self-resetting register scoreboard | |
CN109564546B (zh) | 通过绕过加载存储单元来跟踪存储和加载 | |
US20030182536A1 (en) | Instruction issuing device and instruction issuing method | |
US7203821B2 (en) | Method and apparatus to handle window management instructions without post serialization in an out of order multi-issue processor supporting multiple strands | |
JP2003523574A (ja) | 2次リオーダ・バッファ・マイクロプロセッサ | |
JP3207124B2 (ja) | カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置 | |
KR0122527B1 (ko) | 슈퍼스칼라 프로세서 시스템에서 비순차적 명령어의 디스패치 및 실행을 위한 방법 및 시스템 | |
US6240507B1 (en) | Mechanism for multiple register renaming and method therefor | |
US5812812A (en) | Method and system of implementing an early data dependency resolution mechanism in a high-performance data processing system utilizing out-of-order instruction issue | |
EP0753810B1 (en) | Computer instruction execution method and apparatus | |
US6134645A (en) | Instruction completion logic distributed among execution units for improving completion efficiency | |
WO1990010267A1 (en) | Distributed pipeline control for a computer | |
US7124284B2 (en) | Method and apparatus for processing a complex instruction for execution and retirement | |
EP3497558B1 (en) | System and method for load and store queue allocations at address generation time | |
US5758117A (en) | Method and system for efficiently utilizing rename buffers to reduce dispatch unit stalls in a superscalar processor |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230620 Address after: 610, Floor 6, Block A, No. 2, Lize Middle Second Road, Chaoyang District, Beijing 100102 Patentee after: Zhongguancun Technology Leasing Co.,Ltd. Address before: 606-1, Floor 5, Yard 31, Yard 8, West Cultural Park Road, Beijing Economic and Technological Development Zone, Daxing District, Beijing 100176 Patentee before: Beijing Shudu Information Technology Co.,Ltd. |