CN111722876A - 利用超标量流水线执行程序的方法、装置、系统及介质 - Google Patents
利用超标量流水线执行程序的方法、装置、系统及介质 Download PDFInfo
- Publication number
- CN111722876A CN111722876A CN202010565522.1A CN202010565522A CN111722876A CN 111722876 A CN111722876 A CN 111722876A CN 202010565522 A CN202010565522 A CN 202010565522A CN 111722876 A CN111722876 A CN 111722876A
- Authority
- CN
- China
- Prior art keywords
- program
- target
- target instructions
- instruction
- executing
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 230000008707 rearrangement Effects 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 claims description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 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/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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
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完成一条指令,多分为五步,分别为——取指令(IF,Instruction fetch);译码(ID,Instruction decode);取操作数(OF,Operand fetch);执行(EX,Instructionexecution);写回(WB,Write back)。
流水线(pipeline)技术是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。流水线是Intel首次在486芯片中开始使用的。在CPU中由5—6个不同功能的电路单元组成一条指令处理流水线,然后将一条指令分成5—6步后再由这些电路单元分别执行,这样就能实现在一个CPU时钟周期完成一条指令,因此提高CPU的运算速度。经典奔腾每条整数流水线都分为四级流水,即取指令、译码、执行、写回结果,浮点流水又分为八级流水。
超标量(superscalar)试图在一个周期取出多条指令并行执行,是通过内置多条流水线来同时执行多个处理,其实质是以空间换取时间。超标量流水线,在不考虑CPU乱序发射的情况下,某个时刻有多条不同类型的指令在各个步骤中执行相应操作,如下表中时刻5,在进行指令1的写回、指令2的执行、指令3的取操作数、指令4的译码、指令5的取指令。这样从时刻5开始每一个时刻都有一条指令写回。
超标量流水线中是将现有的流水线技术与超标量技术相结合的CPU执行程序的技术。
发明人了解到,在利用超标量流水线技术执行程序的过程中,如后一条指令需要前一条指令的运算结果,则两条指令不一定能连续发射,此时后一条指令与前一条指令之间也会有停顿。这种停顿降低了CPU的效率。
发明内容
本公开的目的是提供超标量流水线执行程序的方法、装置、系统及介质,能够至少解决上述技术问题之一。
为实现上述目的,本公开的第一方面提供一种利用超标量流水线执行程序的方法,包括以下步骤:
读取程序中待执行的多条目标指令;
按照预设的规则对目标指令进行重排,并通过超标量流水线方式设置多个模块单元,每个模块单元能够独立完成相应的目标指令;
利用超标量流水线的方式发射目标指令,以执行程序;
其中,若相邻两条目标指令之间存在运算结果的依存关系且无法连续发射:对目标指令进行重排时,在具有依存关系的两条目标指令之间加入无关语句,以填充空语句的运算周期。
两个目标指令之间存在运算结果的依存关系且无法连续发射指的是:后一条目标指令需要读取前一条目标指令的运算结果,且无法通过数据旁路的方法实现连续发射。
本公开的第二方面提供一种利用超标量流水线执行程序的装置,包括:
读取模块,用于读取存储模块中的目标指令;
重排模块,用于重排目标指令,以调节目标指令的发射顺序;
执行模块,用于执行重排模块发出的目标指令,以实现程序的执行。所述执行模块中的模块单元按照超标量流水线方式布置。
本公开的第三方面提供一种利用超标量流水线执行程序的系统,包括:
存储器,用于存储目标指令;
处理器,用于执行所述的利用超标量流水线执行程序的方法。
本公开的第四方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有目标指令组成的计算机程序,目标指令被执行时实现所述的利用超标量流水线执行程序的方法。
以上一个或多个技术方案的有益效果:
本公开在相邻两个具有运算结果依存关系的语句之间加入了一条无关语句,利用无关语句来填充原本空语句占用的运算周期,能够减少程序执行时的停顿,提高了程序的运行效率。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的限定。
图1为本公开实施例中程序的执行过程流程图。
具体实施方式
应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
表格1
时刻1 | 时刻2 | 时刻3 | 时刻5 | 时刻6 | 时刻7 | 时刻8 | 时刻9 | 时刻10 |
IF1 | ID1 | OF1 | WB1 | IF2 | ID2 | OF2 | EX2 | WB2 |
表格2
如上文所示,表格1提供了一种串行执行目标指令的示意图。表格2提供了一种流水线方式,部分重叠的准并行执行目标指令的示意图。
实施例1
本实施例提供了一种利用超标量流水线执行程序的方法,包括以下步骤:
读取程序中待执行的多条目标指令;
按照预设的规则对目标指令进行重排,并通过超标量流水线方式设置多个模块单元,每个模块单元能够独立完成相应的目标指令;
利用超标量流水线的方式发射目标指令,以执行程序;
其中,若相邻两条目标指令之间存在运算结果的依存关系且无法连续发射:对目标指令进行重排时,在具有依存关系的两条目标指令之间加入无关语句,以填充空语句的运算周期。
两个目标指令之间存在运算结果的依存关系且无法连续发射指的是:后一条目标指令需要读取前一条目标指令的运算结果,且无法通过数据旁路的方法实现连续发射。
判断两条目标指令之间的无关语句是否存在分支语句:若不存在,按照目标指令运行规则进行目标指令运算;若存在,当分支语句跳转到相关目标指令自行结束后,跳回无关语句后方的目标指令处,继续执行。
所述目标指令的执行步骤依次为:取指令、译码、取操作数、执行和写回。
实施例2
本实施例提供了一种利用超标量流水线执行程序的装置,包括:
读取模块,用于读取存储模块中的目标指令;
重排模块,用于重排目标指令,以调节目标指令的发射顺序;
执行模块,用于执行重排模块发出的目标指令,以实现程序的执行。所述执行模块中的模块单元按照超标量流水线方式布置。
实施例3
本实施例提供了一种利用超标量流水线执行程序的系统,包括:
存储器,用于存储目标指令;
处理器,用于执行所述的利用超标量流水线执行程序的方法。
实施例4
本实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有目标指令组成的计算机程序,目标指令被执行时实现所述的利用超标量流水线执行程序的方法。
上述虽然结合附图对本公开的具体实施方式进行了描述,但并非对本公开保护范围的限制,所属领域技术人员应该明白,在本公开的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本公开的保护范围以内。
Claims (8)
1.一种利用超标量流水线执行程序的方法,其特征是,包括以下步骤:
读取程序中待执行的多条目标指令;
按照预设的规则对目标指令进行重排,并通过超标量流水线方式设置多个模块单元,每个模块单元能够独立完成相应的目标指令;
利用超标量流水线的方式发射目标指令,以执行程序;
其中,若相邻两条目标指令之间存在运算结果的依存关系且无法连续发射:对目标指令进行重排时,在具有依存关系的两条目标指令之间加入无关语句,以填充空语句的运算周期。
2.根据权利要求1所述的利用超标量流水线执行程序的方法,其特征是,两个目标指令之间存在运算结果的依存关系且无法连续发射指的是:后一条目标指令需要读取前一条目标指令的运算结果,且无法通过数据旁路的方法实现连续发射。
3.根据权利要求1所述的利用超标量流水线执行程序的方法,其特征是,判断两条目标指令之间的无关语句是否存在分支语句:
若不存在,按照目标指令运行规则进行目标指令运算;
若存在,当分支语句跳转到相关目标指令自行结束后,跳回无关语句后方的目标指令处,继续执行。
4.根据权利要求1所述的利用超标量流水线执行程序的方法,其特征是,所述目标指令的执行步骤依次为:取指令、译码、取操作数、执行和写回。
5.一种利用超标量流水线执行程序的装置,其特征是,包括:
读取模块,用于读取存储模块中的目标指令;
重排模块,用于重排目标指令,以调节目标指令的发射顺序;
执行模块,用于执行重排模块发出的目标指令,以实现程序的执行。。
6.根据权利要求5所述的利用超标量流水线执行程序的装置,其特征是,所述执行模块中的模块单元按照超标量流水线方式布置。
7.一种利用超标量流水线执行程序的系统,其特征是,包括:
存储器,用于存储目标指令;
处理器,用于执行权利要求1-4中任意一项所述的利用超标量流水线执行程序的方法。
8.一种计算机可读存储介质,其特征是,所述计算机可读存储介质上存储有目标指令组成的计算机程序,目标指令被执行时实现如权利要求1-6中任意一项所述的利用超标量流水线执行程序的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010565522.1A CN111722876A (zh) | 2020-06-19 | 2020-06-19 | 利用超标量流水线执行程序的方法、装置、系统及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010565522.1A CN111722876A (zh) | 2020-06-19 | 2020-06-19 | 利用超标量流水线执行程序的方法、装置、系统及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111722876A true CN111722876A (zh) | 2020-09-29 |
Family
ID=72567711
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010565522.1A Withdrawn CN111722876A (zh) | 2020-06-19 | 2020-06-19 | 利用超标量流水线执行程序的方法、装置、系统及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111722876A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117472445A (zh) * | 2023-12-26 | 2024-01-30 | 睿思芯科(深圳)技术有限公司 | 基于发射缓冲的超标量处理系统、方法及相关设备 |
-
2020
- 2020-06-19 CN CN202010565522.1A patent/CN111722876A/zh not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117472445A (zh) * | 2023-12-26 | 2024-01-30 | 睿思芯科(深圳)技术有限公司 | 基于发射缓冲的超标量处理系统、方法及相关设备 |
CN117472445B (zh) * | 2023-12-26 | 2024-04-23 | 睿思芯科(深圳)技术有限公司 | 基于发射缓冲的超标量处理系统、方法及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106104481B (zh) | 用于执行确定性和机会性多线程的系统和方法 | |
JP4292198B2 (ja) | 実行スレッドをグループ化するための方法 | |
US20080244247A1 (en) | Processing long-latency instructions in a pipelined processor | |
US9170816B2 (en) | Enhancing processing efficiency in large instruction width processors | |
WO2015114305A1 (en) | A data processing apparatus and method for executing a vector scan instruction | |
US7620804B2 (en) | Central processing unit architecture with multiple pipelines which decodes but does not execute both branch paths | |
JP2009099097A (ja) | データ処理装置 | |
RU2375768C2 (ru) | Процессор и способ осуществления операций непрямого чтения и записи регистра | |
CN114968373A (zh) | 指令分派方法、装置、电子设备及计算机可读存储介质 | |
WO2020210624A1 (en) | Data loading and storage instruction processing method and device | |
US20100306504A1 (en) | Controlling issue and execution of instructions having multiple outcomes | |
CN111722876A (zh) | 利用超标量流水线执行程序的方法、装置、系统及介质 | |
CN116737241B (zh) | 一种指令融合方法、处理器核、处理器和计算机系统 | |
US10503541B2 (en) | System and method for handling dependencies in dynamic thread spawning for a multi-threading processor | |
US9213547B2 (en) | Processor and method for processing instructions using at least one processing pipeline | |
KR101420592B1 (ko) | 컴퓨터 시스템 | |
US20090144523A1 (en) | Multiple-simd processor for processing multimedia data and arithmetic method using the same | |
US10459725B2 (en) | Execution of load instructions in a processor | |
CN114610395A (zh) | 指令分派方法、装置、电子设备及计算机可存储介质 | |
US8966230B2 (en) | Dynamic selection of execution stage | |
CN111857830A (zh) | 一种提前转发指令数据的通路设计方法、系统及存储介质 | |
JP2008242947A (ja) | 半導体装置 | |
CN114047956B (zh) | 处理器指令多发射方法、双发射方法、装置及处理器 | |
CN112579168B (zh) | 指令执行单元、处理器以及信号处理方法 | |
CN113703841B (zh) | 一种寄存器数据读取的优化方法、装置及介质 |
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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20200929 |