CN117931294B - 指令处理设备和处理系统 - Google Patents
指令处理设备和处理系统 Download PDFInfo
- Publication number
- CN117931294B CN117931294B CN202410331327.0A CN202410331327A CN117931294B CN 117931294 B CN117931294 B CN 117931294B CN 202410331327 A CN202410331327 A CN 202410331327A CN 117931294 B CN117931294 B CN 117931294B
- Authority
- CN
- China
- Prior art keywords
- instruction
- unit
- queue
- execution
- execution unit
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 126
- 230000005856 abnormality Effects 0.000 claims abstract description 40
- 230000011218 segmentation Effects 0.000 claims abstract description 32
- 230000002159 abnormal effect Effects 0.000 claims description 39
- 238000001514 detection method Methods 0.000 claims description 39
- 238000000034 method Methods 0.000 claims description 27
- 238000013507 mapping Methods 0.000 claims description 21
- 230000006870 function Effects 0.000 claims description 11
- 238000003860 storage Methods 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 claims description 3
- 238000003672 processing method Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 22
- 230000003139 buffering effect Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 8
- 101000618467 Hypocrea jecorina (strain ATCC 56765 / BCRC 32924 / NRRL 11460 / Rut C-30) Endo-1,4-beta-xylanase 2 Proteins 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000005520 cutting process Methods 0.000 description 2
- 238000012512 characterization method Methods 0.000 description 1
- 101150047356 dec-1 gene Proteins 0.000 description 1
- 230000002542 deteriorative effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- 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/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- 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/3861—Recovery, e.g. branch miss-prediction, exception handling
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
技术领域
本申请涉及计算机技术领域,具体地,涉及一种指令处理设备和处理系统。
背景技术
随着计算机设备的快速发展,中央处理器(CPU,Central Processing Unit)作为一台计算机设备的运算和控制核心,其功能主要是完成对计算机指令的执行和对数据的处理,在计算复杂度不断增大的过程中,CPU的性能也变得越来越重要。其中,计算机设备上运行的计算机程序的本质是指令的执行过程,为了提高计算机设备中CPU的工作效率和性能,如何对计算机指令进行处理的研究显得尤为重要。
目前,相关技术中采用经典的五级流水线的处理器架构,该架构中每级流水线依次包含IF、ID、EX、MEM和WB共五个指令处理单元,因此每级流水线用于处理一条指令执行过程中的不同任务。然而,该方案只有一条流水线,因此单周期内只能执行一条指令,处理器性能有限, 并且由于只有一条流水线,当某些运算指令执行时,其参与运算的数据与之前指令具有数据相关性,造成该当前指令执行需要等待之前指令执行完成,造成流水线卡顿,且执行时间过长,导致数据处理效率较低。
发明内容
本申请实施例中提供了一种指令处理设备和处理系统。
本申请实施例的第一个方面,提供了一种指令处理设备,包括:
取指模块,所述取指模块包括获取单元、切分处理单元、取指单元;所述切分处理单元分别与所述获取单元、所述取指单元连接;
执行模块,所述执行模块包括依次连接的第一执行单元、第二执行单元、第三执行单元和第四执行单元;所述取指单元与所述第一执行单元连接;
所述获取单元用于获取多个待处理指令数据;所述切分处理单元用于对所述多个待处理指令数据进行切分处理,得到目标指令;所述取指单元用于对所述目标指令进行缓存、预解码处理,得到预解码后的指令,并将所述预解码后的指令存储至寄存器中;所述第一执行单元用于对所述预解码后的指令进行解码、物理寄存器重命名、标签分配和分类存储处理至相应的指令队列;所述第二执行单元用于将所述指令队列缓存处理,所述第三执行单元用于进行指令异常检测和操作数缓存处理,所述第四执行单元用于执行指令处理,得到指令结果并将所述指令结果进行写回处理。
在本申请一个可选的实施例中,所述取指单元包括第一取指子单元、第二取指子单元和第三取指子单元;所述第一取指子单元的一端与所述切分处理单元连接,所述第二取指子单元分别与所述第一取指子单元的另一端、所述第三取指子单元连接;
所述第一取指子单元用于对所述目标指令进行缓存处理;
所述第二取指子单元用于对所述目标指令进行预解码处理,得到预解码后的指令;
所述第三取指子单元用于将所述预解码后的指令存储至与执行模块接口对应的指令寄存器中;以及用于将所述预解码后的指令对应的程序存储至与执行模块接口对应的程序寄存器中。
在本申请一个可选的实施例中,所述第一执行单元包括解码单元、物理寄存器、标签队列单元、计分板、指令队列单元;
所述解码单元用于对所述预解码后的指令进行解码处理,得到解码后的指令信息;
所述第一执行单元还用于基于所述物理寄存器列表,对所述解码后的指令信息建立寄存器重命名映射关系并存储至所述计分板,并基于所述标签队列单元中的标签队列,为所述解码后的指令信息分配目标标签;
所述第一执行单元还用于将所述解码后的指令信息按照指令功能进行分类处理,得到指令类型,并将所述解码后的指令信息存储至与所述指令类型对应的所述指令队列单元。
在本申请一个可选的实施例中,所述第一执行单元还用于:
从所述物理寄存器列表中查找处于空闲状态的目标物理寄存器;根据所述目标物理寄存器,对所述解码后的指令信息进行寄存器重命名处理,建立所述目标物理寄存器与所述解码后的指令信息之间的寄存器重命名映射关系并存储至计分板;从所述标签队列单元中查找处于未使用状态的目标标签;根据所述目标标签,为所述解码后的指令信息分配所述目标标签。
在本申请一个可选的实施例中,所述第二执行单元与所述第一执行单元连接,所述第二执行单元包括指令队列缓存单元和交付单元;
所述指令队列缓存单元用于接收所述指令队列单元传输的指令信息,并存储至所述指令队列缓存单元;
所述交付单元用于获取包括操作数的指令信息,并对所述包括所述操作数的指令信息进行交付处理。
在本申请一个可选的实施例中,所述第三执行单元与所述第二执行单元连接,所述第三执行单元包括操作数缓存单元和异常检测单元;
所述操作数缓存单元用于将所述指令队列的操作数进行缓存处理;
所述异常检测单元用于检测所述指令队列中的指令信息是否出现异常,得到异常检测结果;所述异常检测结果用于表征所述指令信息是否出现异常。
在本申请一个可选的实施例中,所述异常检测单元还用于当所述异常检测结果用于表征所述指令信息出现异常时,确定异常指令信息并生成异常信号;将所述异常信号进行广播,停止对所述异常指令信息的交付、执行和写回操作。
在本申请一个可选的实施例中,所述第四执行单元与所述第三执行单元连接;所述第四执行单元包括执行单元和写回单元;
所述执行单元用于当所述异常检测结果用于表征所述指令信息未出现异常时,执行所述指令队列中的指令信息,得到指令结果;
所述写回单元用于将所述指令结果进行写回至所述目标物理存储器。
在本申请一个可选的实施例中,所述执行单元包括:运算指令单元、跳转指令单元、访存指令单元和控制与状态寄存器指令单元;
所述访存指令单元和所述控制与状态寄存器指令单元位于同一执行单元。
本申请实施例的第二个方面,提供了一种处理系统,包括如上述实施例提供的指令处理设备。
本申请实施例中的指令处理设备,包括取指模块和执行模块,该取指模块包括获取单元、切分处理单元、取指单元;切分处理单元分别与获取单元、取指单元连接;执行模块包括依次连接的第一执行单元、第二执行单元、第三执行单元和第四执行单元;获取单元用于获取多个待处理指令数据;切分处理单元用于对多个待处理指令数据进行切分处理,得到目标指令;取指单元用于对目标指令进行缓存、预解码处理,得到预解码后的指令,并将预解码后的指令存储至寄存器中;第一执行单元用于对预解码后的指令进行解码、物理寄存器重命名、标签分配和分类存储至相应的指令队列;第二执行单元用于将指令队列缓存处理,第三执行单元用于进行指令异常检测和操作数缓存处理,第四执行单元用于执行指令处理,得到指令结果并将指令结果进行写回处理。
本申请的指令处理设备与现有技术相比而言,一方面,通过采用多个单元对获取的待处理指令数据切分处理,得到多个目标指令,以在后续对多个指令进行并行处理,能够采用指令多发射的结构,在单周期内处理更多的指令,通过对目标指令进行缓存、预解码处理,得到解码后的指令,并将预解码后的指令放置至寄存器中,能够极大地减少WAW和WAR数据相关性导致的依赖关系,从而降低了流水线中常见的因等待指令操作数而产生的卡顿。另一方面,采用四个执行单元通过对预解码后的指令进行解码、物理寄存器重命名、标签分配和存储处理至指令队列,以及将指令队列进行缓存、指令异常检测、操作数缓存和执行指令处理,得到指令结果并写回指令结果,能够采用多级流水线,使得碎片化的指令任务均匀的分布在各个不同的流水线级,不会出现单级流水线任务量过重而限制工作频率的情况,缩短了执行时间,提高了数据处理效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请一个实施例提供的现有技术中经典五级流水线的结构图;
图2为本申请一个实施例提供的指令处理设备的流程图;
图3为本申请一个实施例提供的指令处理设备的流程图;
图4为本申请一个实施例提供的操作指令处理方法的流程图;
图5为本申请一个实施例提供的处理器的结构示意图。
附图标记说明:
取指模块-10;获取单元-11;切分处理单元-12;取指单元-13;执行模块-20;第一执行单元-21;第二执行单元-22;第三执行单元-23;第四执行单元-24;第一取指子单元-131;第二取指子单元-132;第三取指子单元-133。
具体实施方式
在实现本申请的过程中,发明人发现,目前当前指令在执行时需要等待之前指令执行完成,造成流水线卡顿,且执行时间过长,导致数据处理效率较低。
可以理解的是,请参见图1所示,相关技术的处理器CPU采用流水线技术,例如经典的五级流水线。每级流水线依次包含IF、ID、EX、MEM和WB共五个指令处理单元。其中,IF单元用于负责从存储器中读取指令,ID单元用于负责指令的解码,即识别指令类型,获取指令相关信息,EX单元用于负责指令的执行,得到运算结果,MEM单元用于存储器访问操作,可以是从内部或者外部存储器中读取数据,或者将指令结果写入存储器里,WB单元用于将指令执行的结果写入处理器的寄存器堆里,方便下次快速取用。其中,也可以是采用四级流水线(例如有些流水线不需要WB单元,或者有些流水线不需要MEM单元)。
然而,该方案由于只有一条流水线,因此单周期内最多只能执行一条指令,使得处理器性能极其有限;并且该流水线的级数有限,导致每一级流水线都有大量的组合逻辑电路执行相关操作,使得单级流水线处理任务过重;并且由于只有一条流水线,当某些运算指令执行时,其参与运算的数据恰好是之前指令的运算结果,将其称为数据相关性,然而该指令在执行时需要等待之前指令执行完成,否则就必须等待,在指令等待过程中就会造成流水线卡顿,这种卡顿可以称为空泡,且执行时间过长,导致数据处理效率较低。
针对上述问题,本申请实施例中提供了指令处理设备和处理系统,能够通过对获取的待处理指令数据切分处理,得到多个目标指令,以在后续对多个指令进行并行处理,能够采用指令多发射的结构,在单周期内处理更多的指令,通过对目标指令进行缓存、预解码处理,得到解码后的指令,并将预解码后的指令放置至寄存器中,能够极大地减少WAW和WAR数据相关性导致的依赖关系,从而降低了流水线中常见的因等待指令操作数而产生的卡顿。另一方面,采用四个执行单元通过对预解码后的指令进行解码、物理寄存器重命名、标签分配和分类存储至相应的指令队列,以及将指令队列进行缓存、指令异常检测、操作数缓存和执行指令处理,得到指令结果并写回指令结果,能够采用九级流水线,使得碎片化的指令任务均匀的分布在各个不同的流水线级,不会出现单级流水线任务量过重而限制工作频率的情况,缩短了执行时间,提高了数据处理效率。
本申请实施例中的方案可以采用各种计算机语言实现,例如,面向对象的程序设计语言Java和直译式脚本语言JavaScript等。
为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
请参见图2,图2为本申请实施例提供的指令处理设备的结构示意图,该指令处理设备包括取指模块10和执行模块20,取指模块10包括获取单元11、切分处理单元12、取指单元13;切分处理单元12分别与获取单元11、取指单元13连接;执行模块20包括第一执行单元21、第二执行单元22、第三执行单元23和第四执行单元24;取指单元13与第一执行单元21连接。
获取单元11用于获取多个待处理指令数据;切分处理单元12用于对多个待处理指令数据进行切分处理,得到目标指令;取指单元13用于对目标指令进行缓存、预解码处理,得到预解码后的指令,并将预解码后的指令存储至寄存器中;第一执行单元21用于对预解码后的指令进行解码、物理寄存器重命名、标签分配和存储处理至指令队列;第二执行单元22用于将指令队列缓存处理,第三执行单元23用于进行指令异常检测和操作数缓存处理,第四执行单元24用于执行指令处理,得到指令结果并将指令结果进行写回处理。
需要说明的是,上述待处理指令数据是需要进行处理的指令数据,该待处理指令数据可以是从存储器中获取的,该待处理指令数据是原始的未进行切分处理的数据,例如可以是一整段指令数据,其包括多个指令数据,该多个指令数据可以是不同指令类型的指令数据,也可以是相同指令类型的指令数据。
可选的,在获取到多个待处理指令数据的过程中,该待处理指令数据可以是通过云端下载获取的,也可以是其他外部设备导入的,还可以是通过数据库或区块链上获取的,本实施例对此不作限定。
上述获取单元11在获取到多个待处理指令数据之后,可以通过切分处理单元12对待处理指令数据进行指令对齐处理,按照预设的指令长度对多个待处理指令数据进行切分处理,得到多个目标指令。预设的指令长度可以是根据实际指令数据进行整理得到的,可以自定义设置。
其中,上述目标指令为完整的指令数据,每个目标指令对应有一种指令类型,例如可以为运算指令、跳转指令或访存指令等。该目标指令数量可以有三个,或四个,也可以是其他任意数量个。
本实施例中通过对多个待处理指令数据进行切分处理,能够精准地获取到多个目标指令,提高了指令获取的准确度。
需要说明的是,上述预解码后的指令为经过预解码处理后的指令。
具体地,上述取指单元13在获取到目标指令后,可以从目标指令中确定出有效指令,然后对有效指令进行缓存处理,防止时序恶化,在经过缓存处理之后,可以对目标指令进行预解码处理,得到预解码后的指令。
在获取到预解码后的指令后,在每个时钟周期,可以将预解码后的指令,放置于与执行模块(EXU模块)接口的指令寄存器中(IR,Instruction Register)中,并将这些指令的PC值也会被放置于和EXU模块接口的PC寄存器中。执行模块(EXU模块)会使用IR和PC进行后续的执行操作。
本步骤中通过对目标指令进行预解码处理,得到预解码后的指令,能够为后续分支跳转指令预测提供数据指导信息。
上述第一执行单元21在获取到预解码后的指令后,可以对预解码后的指令进行解码处理,得到解码后的指令信息,并进行物理寄存器重命名,建立物理寄存器与解码后的指令信息之间的映射关系,然后为解码后的指令信息进行标签分配,以分配唯一对应的标签(itag),并确定该解码后的指令信息的指令类型,根据指令类型将解码后的信息存储至指令队列中。
上述第二执行单元22在将解码后的信息存储至指令队列之后,可以对指令队列进行缓存处理,然后通过第三执行单元23对指令队列中的指令信息进行指令异常检测处理,查找出有效指令信息,并对有效指令信息进行操作数缓存,进而通过第四执行单元24执行该指令信息,得到指令结果并将指令结果进行写回至物理寄存器中。
本申请的指令处理设备与现有技术而言,一方面,通过对获取的待处理指令数据切分处理,得到多个目标指令,以在后续对多个指令进行并行处理,能够采用指令多发射的结构,在单周期内处理更多的指令,通过对目标指令进行缓存、预解码处理,得到解码后的指令,并将预解码后的指令放置至寄存器中,能够极大地减少WAW和WAR数据相关性导致的依赖关系,从而降低了流水线中常见的因等待指令操作数而产生的卡顿。另一方面,通过对预解码后的指令进行解码、物理寄存器重命名、标签分配和分类存储至相应的指令队列,以及将指令队列进行缓存、指令异常检测、操作数缓存和执行指令处理,得到指令结果并写回指令结果,能够采用九级流水线,使得碎片化的指令任务均匀的分布在各个不同的流水线级,不会出现单级流水线任务量过重而限制工作频率的情况,缩短了执行时间,提高了数据处理效率。
在本申请一个可选实施例中,请参见图3所示,取指单元13包括第一取指子单元131、第二取指子单元132和第三取指子单元133;第一取指子单元131的一端与切分处理单元12连接,第二取指子单元132分别与第一取指子单元131的另一端、第三取指子单元133连接;第一取指子单元131用于对目标指令进行缓存处理;第二取指子单元132用于对目标指令进行预解码处理,得到预解码后的指令;第三取指子单元133用于将预解码后的指令存储至与执行模块接口对应的指令寄存器中;以及用于将预解码后的指令对应的程序存储至与执行模块接口对应的程序寄存器中。
示例性地,当获取的预解码后的指令为四个时,可以将该四个预解码后的指令放置于与执行模块接口对应的指令寄存器(IR)中,用于保存当前正在执行的一条指令,并将预解码后的指令对应的程序(PC)放置至与执行模块接口对应的程序PC寄存器中,以存放指令的地址。
需要说明的是,程序寄存器又称PC寄存器,用于存放指令的地址,为了保证程序(在操作系统中理解为进程)能够连续地执行下去,CPU必须具有某些手段来确定下一条指令的地址。当执行一条指令时,首先需要根据PC中存放的指令地址,将指令由内存取到指令寄存器中,此过程称为“取指令”。与此同时,PC中的地址或自自动加1或由转移指针给出下一条指令的地址,此后经过分析指令,执行指令,完成第一条指令的执行,而后根据PC取出第二条指令的地址,如此循环,执行每一条指令。
指令寄存器用于保存当前正在执行的一条指令,是是临时放置从内存里面取得的程序指令的寄存器,用于存放当前从主存储器读出的正在执行的一条指令。当执行一条指令时,先把它从内存取到数据寄存器(DR,Data Register)中,然后再传送至IR(指令寄存器)。指令划分为操作码和地址码字段,由二进制数字组成。为了执行任何给定的指令,必须对操作码进行测试,以便识别所要求的操作。指令译码器就是做这项工作的。指令寄存器中操作码字段的输出就是指令译码器的输入。操作码一经译码后,即可向操作控制器发出具体操作的特定信号。
本实施例中通过将预解码后的指令放置至与执行模块接口对应的指令寄存器中,并将预解码后的指令对应的程序放置至与执行模块接口对应的程序寄存器中,由于获取多个待处理指令数据,能够采用指令多发射的结构,在单周期内处理更多的指令。
在本申请一个可选实施例中,第一执行单元21包括解码单元(DEC)、物理寄存器(physical regfile)、标签队列单元(itag queue)、计分板(scoreboard)、指令队列单元(IQ);
解码单元(DEC)用于对预解码后的指令进行解码处理,得到解码后的指令信息;第一执行单元21还用于基于物理寄存器列表,对解码后的指令信息建立寄存器重命名映射关系并存储至计分板,并基于标签队列单元中的标签队列,为解码后的指令信息分配目标标签;
第一执行单元21还用于将解码后的指令信息按照指令功能进行分类处理,得到指令类型,并将解码后的指令信息存储至与指令类型对应的指令队列单元。
可以理解的是,上述解码后的指令信息为进行解码处理后的指令信息。物理寄存器列表可以是预先根据实际需求自定义建立的列表,可以包括多个物理寄存器和每个物理寄存器的属性信息,该物理寄存器的属性信息可以包括物理寄存器标识、物理寄存器状态信息。其中,物理寄存器标识用于唯一表征物理寄存器的身份信息,物理寄存器状态信息用于表征物理寄存器当前的状态信息,可以为使用状态和空闲状态。计分板用于记录寄存器重命名映射关系,该寄存器重命名映射关系用于表征物理寄存器与解码后的指令信息之间的对应关系。每个指令信息对应有一种指令类型,该指令类型可以是运算类型、访存类型和跳转类型等。目标标签为标签队列中处于未使用状态的标签。
以解码后的指令信息为四条为例,在将四条解码后的指令信息放置于EXU模块接口的指令寄存器(IR)中。这些指令的PC也会放置于和EXU模块接口的PC寄存器后,然后对四条预解码后的指令进行全部解码处理,得到解码后的指令信息,例如可以采用与编码算法对应的解码算法,然后从物理寄存器列表中查找到空闲的目标物理寄存器,并建立目标物理寄存器与四条解码后的指令信息之间的寄存器重命名映射关系,进而将该寄存器重命名映射关系存储至计分板,并从标签队列中查找出未使用的标签,然后为解码后的指令信息分配目标标签。最后将解码后的指令信息,按指令功能进行分类处理,可以分为通用运算指令、跳转指令和访存指令,然后根据指令类型,将该解码后的指令信息派遣给指令队列模块(IQ)。
可选的,每个指令队列都是按照顺序进入,但是根据指令类型的不同,存在两种出队列情况,分别包括顺序出队列和乱序出队列两种情况。当指令类型对应的指令信息支持顺序出队列时,则指令出队列的顺序必须与指令进队列的顺序保持一致。当指令类型对应的指令信息支持乱序出队列时,指令出队列的顺序不受限制,只要对应的指令队列缓存模块(IQBUF)可以接受该类型的指令,该指令便可以出指令队列。
本实施例中通过对预解码后的指令进行解码处理,得到解码后的指令信息,并基于物理寄存器列表,对解码后的指令信息建立寄存器重命名映射关系并存储至计分板,并基于标签队列,为解码后的指令信息分配目标标签,然后将解码后的指令信息按照指令功能进行分类处理,得到指令类型,将解码后的指令信息存储至与指令类型对应的指令队列,并且能够采用物理寄存器重命名、Replay机制和指令乱序交付特性,其中,通过设置物理寄存器重命名,能够极大地减少WAW数据和WAR数据相关性导致的依赖关系,从而降低了流水线中常见的因等待指令操作数而产生的卡顿,以及由于采用Replay机制能够对提前从指令队列出去的指令,如果在特定时间内,仍旧没有解除因数据相关性导致的依赖关系。该指令不会像现有技术中的经典流水线那样阻塞在执行单元,而是会回到指令队列中,等待依赖关系解除后继续执行,不会影响该执行单元,执行其他指令。并且由于支持指令乱序交付,指令在经过译码以后,当旧指令的操作数未准备就绪,新指令成功获取到操作数的情况下,新指令可以提前交付,减少了流水线卡顿。指令交付以后,本架构通过指令标签(itag)、计分板(scoreboard),来保证指令流的指令结果,不会因乱序交付而受到影响。通过乱序交付,减少了流水线卡顿,提高了处理器性能。并且采用多发射的架构,使得处理器可以在同一时刻,最多并行执行多条指令,高并发的微架构,可以显著地提高指令流的执行速度。
在本申请一个可选实施例中,第一执行单元还用于:
从物理寄存器列表中查找处于空闲状态的目标物理寄存器;根据目标物理寄存器,对解码后的指令信息进行寄存器重命名处理,建立目标物理寄存器与解码后的指令信息之间的寄存器重命名映射关系并存储至计分板;从标签队列单元中查找处于未使用状态的目标标签;根据目标标签,为解码后的指令信息分配目标标签。
需要说明的是,上述解码后的执行信息可以包括指令类型和当前物理寄存器信息。目标标签为标签队列中处于未使用状态的标签。目标物理寄存器为物理寄存器列表中处于空闲状态的物理寄存器。
在对预解码后的指令进行解码处理,得到解码后的指令信息后,可以获取物理寄存器列表(physical regfile list),然后从物理寄存器列表(physical regfile list)中查找到处于空闲状态的目标物理寄存器,根据目标物理寄存器,该目标物理寄存器的数量可以为多个,并对解码后的指令信息进行寄存器重命名处理,建立目标物理寄存器与解码后的指令信息之间的寄存器重命名映射关系,并将该映射关系存储至计分板(scoreboard)。
上述标签队列中包括多个标签,每个标签对应的状态信息不同,有的标签已经被使用,有的标签未使用。可以获取标签队列(itag queue)中查找到处于未使用状态的目标标签,然后为解码后的指令信息分配目标标签。
示例性地,以预解码后的指令为四个为例,物理寄存器列表中包括六个物理寄存器,其物理寄存器标识分别为01、02、03、04、05、06。在对预解码后的指令进行解码处理,得到解码后的指令信息,该解码后的指令信息包括当前物理寄存器标识,然后从物理寄存器中查找到处于空闲状态的目标物理寄存器,例如其目标物理寄存器标识分别为01、02、03、04,然后对解码后的指令信息进行寄存器重命名处理,建立目标物理寄存器与解码后的指令信息之间的寄存器重命名映射关系,例如第一个指令信息对应的目标物理寄存器标识为01,第二个指令信息对应的目标物理寄存器标识为02,第三个指令信息对应的目标物理寄存器标识为03,第四个指令信息对应的目标物理寄存器标识为04。并将该寄存器重命名映射关系存储至计分板。
进一步地,可以获取标签队列中的所有标签,确定出处于未使用状态的目标标签,例如该目标标签对应的标签标识为0a、0b、0c、0d,可以为解码后的指令信息分配标签标识为0a、0b、0c、0d的目标标签(itag)。
本实施例中通过采用物理寄存器重命名,每次会从物理寄存器列表中找出空闲的寄存器,提供给指令来使用;指令使用的寄存器索引值与物理寄存器列表的映射关系,记录在计分板中;极大地减少WAW和WAR数据相关性导致的依赖关系,从而降低了流水线中常见的因等待指令操作数而产生的卡顿,并且由于将寄存器重命名映射关系记录至计分板,能够当遇到流水线被冲刷的情况时,可以通过计分板记录的信息来恢复现场。通过为解码后的指令信息分配目标标签,能够便于后续判断RAW依赖关系。
在本申请一个可选实施例中,第二执行单元22与第一执行单元21连接,第二执行单元22包括指令队列缓存单元和交付单元。指令队列缓存单元用于接收指令队列单元传输的指令信息,并存储至指令队列缓存单元;交付单元用于获取包括操作数的指令信息,并对包括操作数的指令信息进行交付处理。
具体地,上述第二执行单元22用于接收指令队列单元传输的指令信息,并对指令队列进行缓存处理,存储至指令队列缓存单元;上述交付单元用于获取包括操作数的指令信息,并对包括操作数的指令信息进行交付处理。
需要说明的是,上述流水线中的指令被交付,是指该指令不再是预测执行状态。他被判定为可以真正地在处理器中被执行,可以对处理器状态产生影响。与交付相反的为取消,表示该指令最后被判定为需要取消。
可选的,上述对指令信息进行交付处理可以是按照顺序执行,例如当前一条指令完成了交付之后,才会轮到后一条指令的交付。其中,可以是在指令操作数缓存模块(OPBUF)中成功拿到操作数的指令,进行交付(CMT)处理。只有交付过的指令,可以确定未预测执行状态,才可以被执行。
上述指令信息在执行的过程中,可以是通过执行模块进行执行,该执行模块而可以包括4个通用运算指令(ALU)执行单元、1个跳转指令(BJP)和1个访存(LSU)、CSR指令共用执行单元,对于不同类型的指令信息,可以通过与该指令类型对应的执行单元,分类并行进行执行,在指令执行完成后,会根据指令类型和数据依赖情况,将指令结果写回到目标物理寄存器。
本实施例中通过将不同类型的指令通过对应的执行单元进行分类执行,能够使得处理器在单个时钟周期内,并行执行多条指令,从而显著地提高了指令流的执行速度,并且通过对执行信息进行交付处理,能够及时确定指令信息的执行状态,便于有效地进行指令执行,提高了指令处理效率。
在本申请一个可选实施例中,第三执行单元23包括操作数缓存单元和异常检测单元,第三执行单元23与第二执行单元22连接。操作数缓存单元用于将指令队列的操作数进行缓存处理;异常检测单元用于检测指令队列中的指令信息是否出现异常,得到异常检测结果;异常检测结果用于表征指令信息是否出现异常。
本实施例中第三执行单元通过接收指令队列单元传输的指令信息,并存储至指令队列缓存单元,以及通过交付单元获取包括操作数的指令信息,并对包括操作数的指令信息进行交付处理,能够让处理器有足够的时间分解指令中的的任务量,让碎片化的指令任务均匀的分配到不同的流水线级。通过分解流水线中任务量最重的级别,从而达到提升整个架构的工作频率
在本申请一个可选实施例中,异常检测单元还用于当异常检测结果用于表征所述指令信息出现异常时,确定异常指令信息并生成异常信号;将异常信号进行广播,停止对异常指令信息的交付、执行和写回操作。
具体地,在检测指令队列中的指令信息是否出现异常的过程中,可以检测指令信息中的字段,判断该字段是否符合是否出现异常的异常检测条件,当该字段符合出现异常的异常检测条件时,则表示该指令信息为出现异常;当字段不符合出现异常的异常检测条件时,则表示该指令信息未出现异常。
当异常检测结果用于表征指令信息出现异常时,确定异常指令信息,并对该异常指令信息进行封装处理生成异常信号,对该异常信号进行广播处至该模块的上一传输模块或下一传输模块,停止对该异常指令信息的交付、执行和写回操作,并冲刷流水线。还可以会准备操作数,这里会读取物理寄存器或接收来自下一模块中写回单元的转发数据;如果指令在这里没有拿到转发数据,会继续等预设时间,之后如果还没有等到数据,则会停止准备操作数,回到指令队列中继续等待。其中,该预设时间可以是根据实际需求自定义设置的,例如可以是5分钟。
本实施例中当异常检测结果用于表征指令信息出现异常时,确定异常指令信息并生成异常信号,然后将异常信号进行广播,停止对异常指令信息的交付、执行和写回操作,能够及时检测异常指令,以对有效指令进行后续执行和写回操作,提高了指令处理的准确度。
在本申请一个可选实施例中,第四执行单元24与第三执行单元23连接;第四执行单元24包括执行单元和写回单元;
执行单元用于当异常检测结果用于表征指令信息未出现异常时,执行指令队列中的指令信息,得到指令结果;写回单元用于并将指令结果进行写回至目标物理存储器。
具体地,上述第四执行单元24主要是进行指令的执行和写回(WBCK)操作。执行单元可以对异常检测结果表征指令信息未出现异常的有效指令信息进行执行处理。该执行单元根据指令类型进行分类,包括ALU4、BJP、访存LSU、CSR,其中访存LSU和状态寄存器指令CSR单元共用一个执行单元,通过EX1传输过来的不同类型的指令信息,会通过与该指令类型对应的执行单元,分类并行执行。因此处理器在单个时钟周期内,最多可以并行执行多条指令,执行完成后,可以根据执行类型和数据依赖情况,通过写回单元(WBCK)将指令结果写回到物理寄存器。
本实施例中的第四执行单元当异常检测结果用于表征指令信息未出现异常时,执行指令队列中的指令信息,得到指令结果;并将指令结果进行写回至目标物理存储器,采用指令多发射的结构,能够在单周期内处理更多的指令,并且采用物理寄存器重命名和Replay机制和乱序交付的架构,使得常见指令无需因为等待操作数而造成流水线卡顿。并且由于采用了九级流水线,使得碎片化的指令任务均匀的分布在各个不同的流水线级,不会出现单级流水线任务量过重而限制工作频率的情况,很大程度上提高了工作效率。
在本申请一个可选实施例中,执行单元包括:运算指令单元、跳转指令单元、访存指令单元和控制与状态寄存器指令单元;访存指令单元和控制与状态寄存器指令单元位于同一执行单元。
具体地,上述运算指令单元、跳转指令单元、访存指令单元和控制与状态寄存器指令单元可以是根据指令类型划分的,每个执行单元用于执行与该指令类型对应的指令信息。例如,运算指令单元用于执行与运算指令对应的指令信息;跳转指令单元用于执行与跳转指令对应的指令信息;访存指令单元用于执行与访存指令对应的指令信息;控制与状态寄存器指令单元用于执行与控制与状态寄存器指令对应的指令信息。
本实施例中通过设置不同指令类型对应的执行单元,能够更细粒度地对不同类型的指令信息进行执行处理,提高了指令处理效率,缩短了处理时间。
示例性地,本申请实施例还提供了一种操作指令处理方法,请参见图4所示,该操作指令处理方法包括如下步骤201-步骤205:
步骤201、获取多个待处理指令数据。
步骤202、对多个待处理指令数据进行切分处理,得到多个目标指令。
步骤203、对目标指令进行缓存、预解码处理,得到预解码后的指令,并将预解码后的指令放置至寄存器中。
步骤204、对预解码后的指令进行解码、物理寄存器重命名、标签分配和分类存储至相应的指令队列。
步骤205、将指令队列进行缓存、指令异常检测、操作数缓存和执行指令处理,得到指令结果并将指令结果进行写回处理。
请参见图5所示,图5为本申请实施例提供的处理器的结构示意图,该处理器包括取指模块(IFU)和执行模块(EXU),取指模块(IFU)包括获取单元(IF1)、切分处理单元(IF2)、取指单元(IF3、IF4、IF5);切分处理单元(IF2)分别与获取单元(IF1)、取指单元(IF3、IF4、IF5)连接;执行模块(EXU)包括依次连接的第一执行单元(EX0)、第二执行单元(EX1)、第三执行单元(EX2)和第四执行单元(EX3)。
获取单元(IF1)获取多个待处理指令数据并发送至切分处理单元((IF2);切分处理单元(IF2)对多个待处理指令数据进行切分处理,得到目标指令,并发送至取指单元(IF3、IF4、IF5)。取指单元(IF3、IF4、IF5)用于对目标指令进行缓存、预解码处理,得到预解码后的指令,并将预解码后的指令存储至寄存器中;第一执行单元(EX0)用于对预解码后的指令进行解码、物理寄存器重命名、标签分配和存储处理至指令队列;第二执行单元(EX1)用于将指令队列缓存、第三执行单元(EX2)用于进行指令异常检测和操作数缓存处理,第四执行单元(EX3)执行指令处理,得到指令结果并将指令结果进行写回处理。
其中,取指单元(IF3、IF4、IF5)包括包括第一取指子单元(IF3)、第二取指子单元(IF4)和第三取指子单元(IF5);第一取指子单元(IF3)的一端与切分处理单元连接,第二取指子单元(IF4)分别与第一取指子单元(IF3)的另一端、第三取指子单元(IF5)连接。
第一执行单元(EX0)包括解码单元(DEC)、物理寄存器(physical regfile)、标签队列单元(itag queue)、计分板(scoreboard)、指令队列单元(IQ);该解码单元(DEC)可以为四个,分别为(DEC0)、(DEC1)、(DEC2)、(DEC3)。
解码单元(DEC)用于对预解码后的指令进行解码处理,得到解码后的指令信息;第一执行单元还用于基于物理寄存器列表(physical regfile list),对解码后的指令信息建立寄存器重命名映射关系并存储至计分板(scoreboard),并基于标签队列单元(itagqueue)中的标签队列单元,为解码后的指令信息分配目标标签;第一执行单元还用于将解码后的指令信息按照指令功能进行分类处理,得到指令类型,并将解码后的指令信息存储至与指令类型对应的指令队列单元(IQ)。可选的,上述指令类型可以包括四个运算单元(ALU)、跳转指令类型(BJP)、访存指令类型(LSU),与指令类型对应的指令队列单元分别为(ALU4 IQ)、(BJP IQ)、(LSU IQ),可以将解码后的信息存储至与指令类型对应的指令队列单元(IQ)。
第二执行单元(EX1)与第一执行单元(EX0)连接,第二执行单元(EX1)包括指令队列缓存单元(IQBUF)和交付单元(CMT)。
第二执行单元(EX1)用于接收指令队列单元传输的指令信息,并存储至指令队列缓存单元(IQBUF),该指令队列缓存单元(IQBUF)根据指令类型进行分类,包括(ALU4IQBUF)、(BJP IQBUF)、(LSU IQBUF);交付单元(CMT)用于获取包括操作数的指令信息,并对包括操作数的指令信息进行交付处理。
第三执行单元(EX2)包括操作数缓存单元(OPBUF)和异常检测单元,第三执行单元(EX2)与第二执行单元(EX1)连接;操作数缓存单元(OPBUF)可以根据指令类型进行分类,包括(ALU4 OPBUF)、(BJP OPBUF)、(LSU OPBUF),操作数缓存单元(OPBUF)用于将指令队列的操作数进行缓存处理;异常检测单元用于检测指令队列中的指令信息是否出现异常,得到异常检测结果;该异常检测结果用于表征指令信息是否出现异常。
第四执行单元(EX3)与第三执行单元(EX2)连接,可以包括执行单元和写回单元(WBCK),该执行单元根据指令类型进行分类,包括ALU4、BJP、访存LSU、CSR,其中访存LSU和状态寄存器指令CSR单元共用一个执行单元,通过EX1传输过来的不同类型的指令信息,会通过与该指令类型对应的执行单元,分类并行执行;因此处理器在单个时钟周期内,最多可以并行执行多条指令,执行完成后,可以根据执行类型和数据依赖情况,通过写回单元(WBCK)将指令结果写回到物理寄存器。
本实施例中采用指令多发射的结构,能够在单周期内处理更多的指令,并且采用物理寄存器重命名和Replay机制和乱序交付的架构,使得常见指令无需因为等待操作数而造成流水线卡顿。并且由于采用了九级流水线,使得碎片化的指令任务均匀的分布在各个不同的流水线级,不会出现单级流水线任务量过重而限制工作频率的情况,很大程度上提高了工作效率。
另一方面,本申请实施例还提供了一种处理系统,该处理系统包括上述实施例提供的指令处理设备。
本申请的处理系统与现有技术相比而言,一方面,通过对获取的待处理指令数据切分处理,得到多个目标指令,以在后续对多个指令进行并行处理,能够采用指令多发射的结构,在单周期内处理更多的指令,通过对目标指令进行缓存、预解码处理,得到解码后的指令,并将预解码后的指令放置至寄存器中,能够极大地减少WAW和WAR数据相关性导致的依赖关系,从而降低了流水线中常见的因等待指令操作数而产生的卡顿。另一方面,通过对预解码后的指令进行解码、物理寄存器重命名、标签分配和存储处理至指令队列,以及将指令队列进行缓存、指令异常检测、操作数缓存和执行指令处理,得到指令结果并写回指令结果,能够采用九级流水线,使得碎片化的指令任务均匀的分布在各个不同的流水线级,不会出现单级流水线任务量过重而限制工作频率的情况,缩短了执行时间,提高了数据处理效率。
应该理解的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (4)
1.一种指令处理设备,其特征在于,采用多发射九级流水线的指令处理方法,采用九级流水线,使碎片化的指令任务均匀的分布在各个不同的流水线级;
所述指令处理设备包括:
取指模块,所述取指模块包括获取单元、切分处理单元、取指单元;所述切分处理单元分别与所述获取单元、所述取指单元连接;其中,所述取指单元包括第一取指子单元、第二取指子单元和第三取指子单元;所述第一取指子单元的一端与所述切分处理单元连接,所述第二取指子单元分别与所述第一取指子单元的另一端、所述第三取指子单元连接;
执行模块,所述执行模块包括依次连接的第一执行单元、第二执行单元、第三执行单元和第四执行单元;所述取指单元与所述第一执行单元连接;其中,所述第一执行单元包括解码单元、物理寄存器、标签队列单元、计分板、指令队列单元;所述第二执行单元与所述第一执行单元连接,所述第二执行单元包括指令队列缓存单元和交付单元;所述第三执行单元与所述第二执行单元连接,所述第三执行单元包括操作数缓存单元和异常检测单元;所述第四执行单元与所述第三执行单元连接;所述第四执行单元包括执行单元和写回单元;所述执行单元包括:运算指令单元、跳转指令单元、访存指令单元和控制与状态寄存器指令单元;所述访存指令单元和所述控制与状态寄存器指令单元位于同一执行单元;
所述获取单元获取多个待处理指令数据;所述切分处理单元对所述多个待处理指令数据进行切分处理,得到目标指令码;所述第一取指子单元对所述目标指令码进行缓存,所述第二取指子单元对所述目标指令码进行预解码处理,得到预解码后的指令信息;所述第三取指子单元将所述预解码后的指令存储至寄存器中,以及将所述预解码后的指令对应的程序存储至与执行模块接口对应的程序寄存器中;所述第一执行单元采用指令多发射的结构,对所述预解码后的指令进行并行解码、物理寄存器重命名、标签分配和分类存储至相应的指令队列,包括:所述解码单元对所述预解码后的指令进行解码处理,得到解码后的指令信息;所述第一执行单元从所述物理寄存器列表中查找处于空闲状态的目标物理寄存器,根据所述目标物理寄存器,对所述解码后的指令信息进行寄存器重命名处理,建立所述目标物理寄存器与所述解码后的指令信息之间的寄存器重命名映射关系并存储至计分板;从所述标签队列中查找处于未使用状态的目标标签;根据所述目标标签,为所述解码后的指令信息分配所述目标标签;所述第一执行单元还将所述解码后的指令信息按照指令功能进行分类处理,得到指令类型;将所述解码后的指令信息存储至与所述指令类型对应的指令队列;
其中:每个所述指令队列都是按照顺序进入,按照根据指令类型的不同,存在两种出队列情况,分别包括顺序出队列和乱序出队列;当所述指令类型对应的指令信息支持所述顺序出队列时,则指令出队列的顺序与指令进队列的顺序保持一致;当所述指令类型对应的指令信息支持所述乱序出队列时,指令出队列的顺序不受限制,只要对应的指令队列缓存模块可以接受该类型的指令,该指令便可以出指令队列;所述第二执行单元将所述指令队列缓存处理,所述指令队列缓存单元接收所述指令队列单元传输的指令信息,并存储至所述指令队列缓存单元;所述交付单元获取包括操作数的指令信息,并对包括所述操作数的指令信息进行交付处理;所述第三执行单元进行指令异常检测和操作数缓存处理,所述第四执行单元执行指令处理,得到指令结果并将所述指令结果进行写回处理,包括:将所述指令队列进行缓存处理;所述操作数缓存单元将所述指令队列的操作数进行缓存处理;所述异常检测单元检测所述指令队列中的指令信息是否出现异常,得到异常检测结果;所述异常检测结果表征所述指令信息是否出现异常;当所述异常检测结果表征所述指令信息未出现异常时,执行所述指令队列中的指令信息,得到指令结果并将所述指令结果进行写回至所述目标物理寄存器。
2.根据权利要求1所述的设备,其特征在于,所述异常检测单元还用于当所述异常检测结果用于表征所述指令信息出现异常时,确定异常指令信息并生成异常信号;将所述异常信号进行广播,停止对所述异常指令信息的交付、执行和写回操作。
3.根据权利要求2所述的设备,其特征在于,所述执行单元用于当所述异常检测结果用于表征所述指令信息未出现异常时,执行所述指令队列中的指令信息,得到指令结果;
所述写回单元用于将所述指令结果进行写回至所述目标物理寄存器。
4.一种处理系统,其特征在于,包括:如权利要求1-3任一项所述的指令处理设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410331327.0A CN117931294B (zh) | 2024-03-22 | 2024-03-22 | 指令处理设备和处理系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410331327.0A CN117931294B (zh) | 2024-03-22 | 2024-03-22 | 指令处理设备和处理系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117931294A CN117931294A (zh) | 2024-04-26 |
CN117931294B true CN117931294B (zh) | 2024-07-16 |
Family
ID=90766927
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410331327.0A Active CN117931294B (zh) | 2024-03-22 | 2024-03-22 | 指令处理设备和处理系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117931294B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118349286B (zh) * | 2024-06-18 | 2024-09-10 | 联芸科技(杭州)股份有限公司 | 处理器、指令处理的装置、电子设备以及指令处理方法 |
CN118467041A (zh) * | 2024-07-09 | 2024-08-09 | 芯来智融半导体科技(上海)有限公司 | 用于乱序多发射处理器的指令处理方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113590197A (zh) * | 2021-07-30 | 2021-11-02 | 中国人民解放军国防科技大学 | 一种支持可变长向量处理的可配置处理器及其实现方法 |
CN114675890A (zh) * | 2022-05-26 | 2022-06-28 | 飞腾信息技术有限公司 | 一种指令执行方法、装置、设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9430243B2 (en) * | 2012-04-30 | 2016-08-30 | Apple Inc. | Optimizing register initialization operations |
CN109101276B (zh) * | 2018-08-14 | 2020-05-05 | 阿里巴巴集团控股有限公司 | 在cpu中执行指令的方法 |
US11392386B2 (en) * | 2020-08-14 | 2022-07-19 | International Business Machines Corporation | Program counter (PC)-relative load and store addressing for fused instructions |
CN116661870A (zh) * | 2023-04-07 | 2023-08-29 | 东北大学 | 一种基于risc-v架构的高性能嵌入式处理器 |
CN117193861B (zh) * | 2023-11-07 | 2024-03-15 | 芯来智融半导体科技(上海)有限公司 | 指令处理方法、装置、计算机设备和存储介质 |
-
2024
- 2024-03-22 CN CN202410331327.0A patent/CN117931294B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113590197A (zh) * | 2021-07-30 | 2021-11-02 | 中国人民解放军国防科技大学 | 一种支持可变长向量处理的可配置处理器及其实现方法 |
CN114675890A (zh) * | 2022-05-26 | 2022-06-28 | 飞腾信息技术有限公司 | 一种指令执行方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117931294A (zh) | 2024-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN117931294B (zh) | 指令处理设备和处理系统 | |
JP3580657B2 (ja) | 並列マルチタスキングの方法及びシステム | |
US10296346B2 (en) | Parallelized execution of instruction sequences based on pre-monitoring | |
US7032101B2 (en) | Method and apparatus for prioritized instruction issue queue in a processor | |
US5694565A (en) | Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions | |
US9678758B2 (en) | Coprocessor for out-of-order loads | |
US20010010073A1 (en) | Non-stalling circular counterflow pipeline processor with reorder buffer | |
US11900120B2 (en) | Issuing instructions based on resource conflict constraints in microprocessor | |
US9354888B2 (en) | Performing predecode-time optimized instructions in conjunction with predecode time optimized instruction sequence caching | |
KR100483463B1 (ko) | 사전-스케쥴링 명령어 캐시를 구성하기 위한 방법 및 장치 | |
US9223577B2 (en) | Processing multi-destination instruction in pipeline by splitting for single destination operations stage and merging for opcode execution operations stage | |
CN116302106A (zh) | 用于促进分支预测单元的改善的带宽的设备、方法和系统 | |
EP1354267A2 (en) | A superscalar processor having content addressable memory structures for determining dependencies | |
CN118295710A (zh) | 多端口发射的空间回收方法、装置、设备和介质 | |
CN112540792A (zh) | 指令处理方法及装置 | |
US11249757B1 (en) | Handling and fusing load instructions in a processor | |
US20100306513A1 (en) | Processor Core and Method for Managing Program Counter Redirection in an Out-of-Order Processor Pipeline | |
US5809324A (en) | Multiple instruction dispatch system for pipelined microprocessor without branch breaks | |
CN117931293B (zh) | 指令处理方法、装置、设备及存储介质 | |
US5850563A (en) | Processor and method for out-of-order completion of floating-point operations during load/store multiple operations | |
KR19990072269A (ko) | 무순서인스트럭션발행이가능한프로세서의인스트럭션버퍼에인스트럭션을로드하는방법및장치 | |
US10437596B2 (en) | Processor with a full instruction set decoder and a partial instruction set decoder | |
KR100861701B1 (ko) | 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍시스템 및 방법 | |
US20040128476A1 (en) | Scheme to simplify instruction buffer logic supporting multiple strands | |
EP3278212A1 (en) | Parallelized execution of instruction sequences based on premonitoring |
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 |