一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于指令相关性的指令分派方法与装置与流程

2022-09-04 05:25:26 来源:中国专利 TAG:


1.本发明涉及微处理器技术领域,具体涉及一种基于指令相关性的指令分派方法与装置。


背景技术:

2.微处理器的发展在短短的几十年里,取得了巨大的进步。从硬件架构,工艺和软硬件结合多个方面不断提高处理器的性能。硬件架构经历了从单发射标量到多发射超标量;从最初的3级流水线到几十级流水线;从顺序执行指令到乱序执行指令;从无cache到多级cache存储结构;从物理单核到物理多核(cmp,chip multi-processors)及逻辑单核到逻辑多核(smt,simultaneous multi-threading);甚至用于超级运算的集群系统,处理器的指令级并行和线程级并行执行得到了极致的发展。单核微处理器的指令级并行带宽要求越来越高,芯片实现逻辑复杂度成倍数增加。


技术实现要素:

3.针对现有技术的不足,本发明公开了一种基于指令相关性的指令分派方法与装置,用于根据指令间的依赖关系,将存在依赖关系的指令分派到相同的保留站,从而不会阻塞不存在依赖关系的指令并行发射与执行。
4.本发明通过以下技术方案予以实现:
5.第一方面,本发明提供了一种基于指令相关性的指令分派方法,包括以下步骤:
6.s1在指令重名后,根据译码器的译码信息,判断指令间的依赖关系;
7.s2进入指令分派阶段,将有依赖关系的指令分派到相同的保留站;
8.s3在指令的源操作数准备完成后,将不存在依赖关系的指令发射到不同的执行单元执行;
9.s4指令执行完成后,将指令的目的寄存器和指令执行结构进行广播。
10.更进一步的,所述方法中,指令间的假相关通过重命名后,指令可在相同类型的执行部件上同时执行。
11.更进一步的,所述方法中,保留站是多端口的队列结构,当指令进入保留站后,指令实时监测执行单元的forward路径。
12.更进一步的,所述方法中,当保留站中的指令的源操作数唤醒为ready状态后,指令提前发射,指令在ex0阶段,可forward到执行单元返回的数据。
13.更进一步的,所述方法中,执行单元根据指令的执行周期,产生提前唤醒保留站中指令的提前唤醒控制信号。
14.更进一步的,所述方法中,指令在分派到执行单元的时候,首先判断执行单元对应的保留站rv是否有空闲空间,如果保留站rv没有空闲空间,则当前指令不能分派到该保留站。
15.更进一步的,所述方法中,指令在分派到执行单元的时候,同时判断其他整数执行
单元对应的保留站rv是否存在空闲空间,如果所有的整数执行单元对应的rv都不存在空闲空间,则当前指令不能分派到保留站,直到保留站有空闲空间时,才可分派到保留站。
16.更进一步的,所述方法中,指令在分派到执行单元的时候,当存在多个整数执行单元的保留站都有空闲空间时,则整数指令可分派到任意一个整数执行单元的保留站rv。
17.第二方面,本发明提供了一种基于指令相关性的指令分派装置,其上存储有指令,其中,所述指令被执行时实现第一方面所述的基于指令相关性的指令分派方法。
18.本发明的有益效果为:
19.本发明能够根据指令间的依赖关系,将存在依赖关系的指令分派到相同的保留站,从而不会阻塞不存在依赖关系的指令并行发射与执行。
附图说明
20.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
21.图1是本发明实施例多核cpu架构图;
22.图2是本发明实施例cpu流水线架构图;
23.图3是本发明实施例指令分派图;
24.图4是本发明实施例执行单元forward结果图;
25.图5是本发明实施例指令依赖关系图。
具体实施方式
26.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
27.实施例1
28.本实施例提供一种基于指令相关性的指令分派方法,包括以下步骤:
29.s1在指令重名后,根据译码器的译码信息,判断指令间的依赖关系;
30.s2进入指令分派阶段,将有依赖关系的指令分派到相同的保留站;
31.s3在指令的源操作数准备完成后,将不存在依赖关系的指令发射到不同的执行单元执行;
32.s4指令执行完成后,将指令的目的寄存器和指令执行结构进行广播。
33.本实施例提出根据指令的相关性,把有依赖关系的指令分派到相同的保留站,从而不会阻塞不存在依赖关系的指令并行执行。
34.本实施例中,当执行单元存在多个相同类型的执行部件时,存在依赖关系的指令不会同一个时钟周期发射,但是无依赖关系的指令可以在同一个周期发射到不同的执行单元。
35.当把不存在依赖关系的指令分派到同一个保留站,并且把有存在依赖关系的指令
发射到不同的执行单元,那么当前周期很可能只能发射一条指令。
36.当把存在依赖关系的指令分派到同一个保留站,并且把不存在依赖关系的指令发射到不同的执行单元,那么当前周期很可能可以发射多条指令。
37.本实施例中,指令在重命名之后,根据译码器的译码信息,判断指令间的依赖关系,即指令之间存在数据相关。指令间的假相关通过重命名后,指令可以在相同类型的执行部件上同时执行。只有存在真相关的指令才需要根据相关性进行指令分派。
38.本实施例进入指令分派阶段,根据在重命名阶段得到的指令分派信息,把指令分派到保留站上。指令进入保留站后,如果指令的源操作数准备完成后,指令发射到执行单元执行,如图3所示。
39.本实施例保留站是一个多端口的队列结构,当指令进入保留站后,指令实时监测执行单元的forward路径。
40.本实施例执行单元根据指令的执行周期,产生提前唤醒保留站中指令的提前唤醒控制信号,如图4所示。当保留站中的指令的源操作数唤醒为ready状态后,指令不需要等到执行单元执行完成,而是指令提前发射,指令在ex0阶段,可以forward到执行单元返回的数据。
41.当执行单元的指令执行完成后,将指令的目的寄存器和指令执行结构进行广播。保留站中所有存在相关的指令可以取到源操作数。当保留站中的指令的每个源操作数都ready后,指令可以进入发射状态,保留站将处于发射状态的指令发生到执行单元。
42.本实施例中,高性能处理器的每个时钟周期,都会尽可能的把指令从保留站发射到执行单元,理论带宽为执行单元的数目。根据不同的应用场景,分析不同场景下的指令比率。根据指令占有的比率,决定执行单元的数目,特别是同类型的指令,比率超过一定的阈值后,会重复放置多个相同类型的执行单元。
43.本实施例中,为了提高指令的处理性能,cpu内部会放置多个相同类型的执行单元,同时执行相同类型的指令。
44.比如,整数指令在指令流的比率平均超过50%。因此在执行部件需要重复放多个整数执行单元。一条整数指令可以分派到任意一个整数执行单元执行。指令在分派到执行单元的时候,首先判断执行单元对应的保留站rv是否有空闲空间,如果保留站rv没有空闲空间,那么当前指令不能分派到该保留站。同时判断其他整数执行单元对应的保留站rv是否存在空闲空间,如果所有的整数执行单元对应的rv都不存在空闲空间,那么当前指令不能分派到保留站,直到保留站有空闲空间时,才可以分派到保留站。
45.相反当存在多个整数执行单元的保留站都有空闲空间时,那么整数指令可以分派到任意一个整数执行单元的保留站rv。被分派到保留站的指令可能与更老的指令存在依赖关系,即当被依赖的指令还未执行完成时,依赖的指令也不能执行,而是需要得到被依赖指令的执行结果。
46.实施例2
47.本实施例提供一种n个物理核共享l3和内存的多核cpu,参照图1所示,每个物理核可以是单线程或者是多线程架构。每个core适用于所有的指令集,架构及工艺。
48.本实施例提供了一种单物理核,参照图2所示,物理核可以是单线程或者是多线程架构。该核的模块划分在表1中给出功能描述。
49.表格1cpu流水线说明
[0050][0051]
实施例3
[0052]
在具体实施层面,本实施例提供一种指令间的依赖关系,即指令之间存在真相关。不妨假设指令检测的窗口为3条指令。指令从0开始为第1条指令,其他情况依次类推。第1个检测窗口的指令为0,1和2。第1条指令和当前时钟周期之前的指令检查依赖关系;第2条指令和第1条指令检查依赖关系;第3条指令同时和第1条及第2条指令检查依赖关系;
[0053]
本实施例涵盖了所有指令源寄存器与目的寄存器的依赖关系,及源寄存器和目的寄存器的数目。为了便于说明本发明的原理:1,假设每条指令只存在2个源寄存器rs1和rs2。2,假设每条指令只有一个目的寄存器。
[0054]
本实施例中,当第2条指令的源操作数依赖第1条指令的目的寄存器时,那么它们的依赖关系为:
[0055]
第1个源寄存器dep_1_0_rs1=(r_x1_1==r_x3_0)
[0056]
第2个源寄存器dep_1_0_rs2=(r_x2_1==r_x3_0)
[0057]
第2条指令依赖第1条指令dep_1_0={dep_1_0_rs2,dep_1_0_rs1}。
[0058]
本实施例中,当第3条指令的源操作数依赖第1条指令的目的寄存器时,那么它们的依赖关系为:
[0059]
第1个源寄存器dep_2_0_rs1=(r_x1_2==r_x3_0)
[0060]
第2个源寄存器dep_2_0_rs2=(r_x2_2==r_x3_0)
[0061]
第3条指令依赖第1条指令dep_2_0={dep_2_0_rs2,dep_2_0_rs1}。
[0062]
本实施例中,当第3条指令的源操作数依赖第2条指令的目的寄存器时,那么它们的依赖关系为:
[0063]
第1个源寄存器dep_2_1_rs1=(r_x1_2==r_x3_1)
[0064]
第2个源寄存器dep_2_1_rs2=(r_x2_2==r_x3_1)
[0065]
第3条指令依赖第2条指令dep_2_1={dep_2_1_rs2,dep_2_1_rs1}。
[0066]
本实施例中,假设第1个指令窗口的3条指令都是整数指令,并且他们分派到2个完全相同的执行单元对应的保留站rv_0和rv_1,并且rv_0和rv_1每次能分派2条指令及发射一条指令。
[0067]
本实施例主要提出了根据指令的相关性进行指令调度,不限定具体的分派调度方法,为了便于说明本发明的原理,假设第1条指令分派到rv_0,那么其它指令分派的调度示例如下表所示:
[0068]
表格2指令分派调度
[0069]
[0070]
[0071][0072]
本实施例中,rv_v0为001表示第1条指令分派到rv_0;rv_v0为010表示第2条指令分派到rv_0;rv_v0为100表示第3条指令分派到rv_0;rv_v0为011表示第1条指令与第2条指令都分派到rv_0;rv_v0为101表示第1条指令与第3条指令都分派到rv_0;rv_v0为110表示第2条指令与第3条指令都分派到rv_0。同理,rv_v1表示分派到rv_1的指令情况。在上文中,假设第1条指令分派到rv_0,第1条指令到底是分派到rv_0还是rv_1,主要取决于第1条指令依赖的指令在rv_0还是rv_1中。
[0073]
本实施例在判断的过程中,分别考虑每条指令的rs1和rs2与其它指令目的寄存器的依赖关系。同一条指令的rs1和rs2可能会与不同的指令或者相同的一条指令存在依赖关系。多条指令与同一条指令存在依赖关系。
[0074]
实施例4
[0075]
在其他层面,本实施例提供一种根据指令的相关性,进行指令分派调度的方法,使有依赖的指令分派到同一个保留站,使无依赖关系的指令分派到不同的保留站,使无关的指令在不同的保留站中并行发射到不同的执行单元执行。
[0076]
本实施例了更进一步阐述原理,优选出一个实际risc v指令的实例进行补充说明。
[0077]
本优选的实施例中,当指令序列为下表所示,假设有2个整数指令保留站,每个保留站每次能分派2条指令,每个保留站每个时钟周期能发射一条指令到执行单元执行。指令流水线宽度为4条指令,每个时钟周期最多有4条指令需要分派到保留站。
[0078]
表格3 risc v指令序列实例
[0079][0080]
本优选的实施例中,第1个时钟周期的4条指令,addiw,slli,addi和add。第4条指令add的源操作数是t5和t6。第2条指令slli写目的寄存器t5。第3条指令addi写目的寄存器t6。第4条指令同时与第2条及第3条指令存在相关。由于整数保留站每个时钟周期只能接收2条指令,为了便于说明本发明的原理,并且假设每个保留站的空闲空间不小于2,实际情况当保留站的空闲空间为1时,只能分派一条指令;或者当保留站的空间为0时,一条指令都不能分派。第2个时钟周期的4条指令,slli,srli,add和sd。
[0081]
本优选的实施例中,第2个时钟周期分派指令的同时,保留站发射了第3条指令addi和第1条指令addiw。第6条指令srli的源操作数t1依赖于第5条指令的目的寄存器t1。第8条指令的源操作数ra依赖第4条指令add的目的寄存器ra。
[0082]
本优选的实施例中,第3个时钟周期的4条指令,c.addi,bne,sllw和and。c.addi和bne分派到保留站rv_1。and和sllw分派到保留站rv_0。同时,第2条指令slli指令发射到执行单元执行。第7条指令add也发射到执行单元执行。
[0083]
本优选的实施例中,第4个时钟周期的3条指令,addiw,slli和addi。addiw分派到保留站rv_0。slli和addi分派到保留站rv_2。
[0084]
表格4保留站状态一
[0085][0086]
本优选的实施例中,第5个时钟周期,rv_0发射指令and,rv_1发射指令c.addi。c.addi写目的寄存器a1,因此保留站rv_0中的指令sllw被唤醒,保留站rv_1中的指令slli和bne被唤醒。
[0087]
本优选的实施例中,第6个时钟周期,rv_0发射指令sllw,rv_1发射指令bne。
[0088]
本优选的实施例中,第7个时钟周期,rv_0发射指令addiw,rv_1发射指令slli。
[0089]
本优选的实施例中,第8个时钟周期,rv_1发射指令andi。
[0090]
表格5保留站状态二
[0091][0092]
综上,risc v指令全部为整数类型指令,并且分派到2个完全相同的执行单元执行。根据指令间的依赖关系进行指令分派。
[0093]
实施例5
[0094]
本实施例提供一种基于指令相关性的指令分派装置,其上存储有指令,其中,所述指令被执行时实现基于指令相关性的指令分派方法。
[0095]
综上,本发明能够根据指令间的依赖关系,将存在依赖关系的指令分派到相同的保留站,从而不会阻塞不存在依赖关系的指令并行发射与执行。
[0096]
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献