一种指令处理装置、处理器及其处理方法与流程

文档序号:24397312发布日期:2021-03-26 22:12阅读:112来源:国知局
一种指令处理装置、处理器及其处理方法与流程

1.本发明涉及处理器领域,尤其涉及进行推测执行的处理器核心和处理器。


背景技术:

2.现代的处理器或者处理器核心以流水线的方式来处理指令。典型的流水线通常包括取指令、指令译码、指令调度、指令执行和指令退休等各个流水线阶段。在现在多发射的高性能处理器中,在指令译码阶段,可以在同一个时钟周期内对多条指令进行顺序译码,然后在指令调度阶段,对顺序译码的指令根据指令类型和流水线下游的指令执行状态,将指令乱序发射到各个指令执行阶段,从而在指令执行阶段同时执行多条指令。最后,在指令退休阶段,对执行完成的指令顺序退出,从而完成一条指令在处理器中的执行。
3.为了提升处理器核心的性能,在处理器核心中会采用推测执行(也称为投机执行)的方法,即允许处理器根据先前执行情况等信息,在取指令阶段就假定存在某个推测前提(例如跳转分支指令的跳转目标),读取在这个推测前提下的后续指令进行投机执行,这意味着处理器可以在更老的指令执行完成之前,提前执行更新的指令。如果更老的指令没有发生投机失败,那么新指令的执行结果就是有效的。这种方式可以有效提升处理器的性能。
4.另外,为了进一步提升处理器核心的性能,如果认为更老的指令不会产生投机失败,处理器可以在指令执行完成之前,提前提交指令的执行结果(即,将未来产生的执行结果提前标记为已提交)。这意味着在指令执行和指令退休阶段,存在提前退休的指令。提前退休的指令会在执行结果产生之后被立刻提交并退休。
5.然而,一旦出现了推测失败(即投机失败),那么投机执行的指令就是在错误路径上的指令,它们的执行结果是无效的,应当被清除。在现有的处理器设计方案中,需要等待执行推测条件判断的指令(例如,跳转分支指令)退休,然后等待提前退休的指令执行完毕后,才可以清空流水线,并向正确路径发起取指请求。这种传统方式会导致正确路径的取指请求较晚发出,延后正确路径的指令执行时间,进而降低处理器在投机失败场景下的性能。
6.因此,需要一种新的处理器流水线方案,可以在投机失败时较快发出对正确路径的取值请求,以加快在正确路径上的指令执行速度,从而提高处理器的性能。


技术实现要素:

7.为此,本发明提供了一种新的指令处理装置、处理器和指令处理方法,以力图解决或者至少缓解上面存在的至少一个问题。
8.根据本发明的一个方面,提供了一种指令处理设备,包括:指令读取和译码单元、指令调度单元、指令执行单元和指令退休单元。指令读取和译码单元读取指令并对所读取的指令进行译码,并缓存所读取和/或译码的指令。指令调度单元接收已译码的指令并缓存,并将所接收的指令发射到指令执行单元来执行。指令执行单元接收从指令调度单元发射过来的指令并执行指令。指令退休单元缓存指令执行单元完成执行的指令并退休这些指令。其中指令包括推测执行指令和推测条件判断指令。推测执行指令为假定推测条件正确
时要执行的指令。指令读取和译码单元适于在读取并译码推测条件判断指令时,假定推测条件正确,并读取并译码推测执行指令以便推测执行。当推测条件判断指令的执行结果指示推测条件错误时:指令读取和译码单元清除所缓存的读取和/或译码的指令;并在退休推测条件判断指令之后,指示指令调度单元清除所缓存的指令;以及在比推测条件判断指令老的指令执行完成并退休了之后,指示指令执行单元清除其中执行的指令,并清除指令退休单元中缓存的指令。
9.可选地,在根据本发明的指令处理装置中,其中指令读取和译码单元适于在清除所缓存的读取和/或译码指令之后,新读取在推测条件错误时要执行的指令并译码,并缓存新读取和/或译码的指令。
10.可选地,在根据本发明的指令处理装置中,其中指令读取和译码单元适于在指令执行单元中缓存的指令被清除之前,不将新读取并译码的指令发送到指令调度单元。
11.可选地,在根据本发明的指令处理装置中,其中指令执行单元适于确定结果指示错误的推测条件判断指令是否为目前最老的、结果为错误的推测条件判断指令,以及当结果错误的推测条件判断指令不是最老的、结果错误的推测条件判断指令时,则不指示指令读取和译码单元清除所缓存的读取和/或译码的指令。
12.可选地,在根据本发明的指令处理装置中,其中指令执行单元适于将结果错误的推测条件判断指令与已记录的、结果为错误的推测条件判断指令进行比较;如果推荐条件判断指令老于已记录的推测条件判断指令,则用推测条件判断指令替换已记录的推测条件判断指令,并指示指令读取和译码单元清除所缓存的读取和/或译码的指令。
13.可选地,在根据本发明的指令处理装置中,其中推测条件为跳转分支预测,推测条件判断指令为跳转分支指令,以及指令读取和译码单元适于根据跳转分支指令的历史跳转记录来设置预测的跳转分支作为推测条件。
14.可选地,在根据本发明的指令处理装置中,其中指令执行单元包括分支跳转单元,分支跳转单元中记录最老的、发生跳转分支预测失败的指令作为老的、结果为错误的推测条件判断指令。
15.可选地,在根据本发明的指令处理装置中,指令读取和译码单元顺序读取指令并译码;指令调度单元将所译码的指令乱序发射到指令执行单元来执行;以及指令退休单元顺序退出执行完成的指令。
16.根据本发明的一个方面,提供了一种指令处理方法,包括步骤:读取指令并对所读取的指令进行译码,并缓存所读取和/或译码的指令,指令包括推测执行指令和推测条件判断指令,而推测执行指令为假定推测条件正确时要执行的指令,其中在读取并译码推测条件判断指令时,假定推测条件正确,并读取并译码推测执行指令以便推测执行;在指令调度单元接收已译码的指令并缓存,并将所接收的指令发射到指令执行单元来执行;由指令执行单元接收所发射过来的指令并执行指令;以及缓存指令执行单元完成执行的指令,并退休指令。该方法还包括步骤,当执行推测条件判断指令所产生的结果指示推测条件错误时:清除所缓存的读取和/或译码的指令;在退休推测条件判断指令之后,清除指令调度单元中所缓存的指令;以及在比推测条件判断指令老的指令执行完成并退休了之后,清除指令执行单元中执行的指令,并清除所缓存的、已完成执行并等待退休的指令。
17.根据本发明的另一个方面,提供了一种片上系统,包括根据本发明的指令处理装
置或者处理器。
18.根据本发明的还有一个方面,提供了一种智能设备,包括根据本发明的片上系统。
19.根据本发明的方案,将整个处理器流水线划分为3个部分,即与取指令和指令译码相关的前端流水线、用于将指令乱序发射到后端流水线的调取流水线、以及与指令执行和退休相关的后端流水线,随后,在指令投机执行的投机条件不成立时,立即清空前端流水线,并开始读取和译码在正确路径下的指令,随后根据投机条件判断指令的执行而逐步清空调度流水线和后端流水线,从而减少了正确路径下的指令在整个流水线中的处理时间,提高了处理性能。
20.另外,根据本发明的方案,充分考虑到指令顺序退出和乱序执行的特点,在后端流水线被清空之前,就先在前端流水线中读取并译码新的指令,并在所有相关的指令顺序退出之后,就马上由调度流水线来调度已经在前端流水线中的指令并执行,从而提高了处理性能。
附图说明
21.为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
22.图1示出了根据本发明一个实施例的指令处理装置的示意图;
23.图2示出了根据本发明另一个实施例的指令处理装置的示意图;
24.图3示出了根据本发明一个实施例的指令处理方法的流程示意图;
25.图4示出了根据本发明一个实施例的处理器的示意图;
26.图5示出了根据本发明一个实施例的计算机系统的示意图;以及
27.图6示出了根据本发明的一个实施例的片上系统(soc)的示意图。
具体实施方式
28.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
29.图1是根据本发明一个实施例的指令处理装置100的示意图。在一些实施例中,指令处理装置100可以是处理器、多核处理器的处理器核、或者电子系统中的处理元件。
30.如图1所示,指令处理装置100包括取指令单元130。取指令单元130可以从高速缓存110、存储器120或其他源获取要处理的指令,并发送给译码单元140。取指令单元130所取出的指令包括但不限于高级机器指令或者宏指令等。处理装置100通过执行这些指令来完成特定功能。
31.译码单元140接收从取指令单元130传入的指令,并且译码这些指令以生成低级微操作、微代码进入点、微指令或其他低级指令或控制信号,它们反映了所接收的指令或者从
所接收的指令导出。低级指令或控制信号可通过低级(例如,电路级或硬件级)操作来实现高级指令的操作。可使用各种不同的机制来实现译码单元140。合适机制的示例包括但不限于,微代码、查找表、硬件实现、可编程逻辑阵列(pla)。本发明不受限于实现译码单元140的各种机制,任何可以实现译码单元140的机制都在本发明的保护范围之内。
32.指令处理装置100采用流水线设计,因此,在取指令单元130和译码单元140读取和译码指令之后,将指令发送给流水线下一级的处理单元之前,会缓存指令。即,取指令单元130会缓存所读取的指令以便发送到译码单元140,而译码单元140会缓存所译码的指令以便发送到调度单元160。
33.根据一种实施方式,在指令处理装置100中,指令在取指令单元130和译码单元140被顺序读取和译码。取指令单元130和译码单元140称为前端流水线。在本发明中,有时候将二者合并称为指令读取和译码单元,并涵盖取指令单元130和译码单元140的全部功能。
34.译码单元140将经过译码的指令发送到指令调度单元160。调度单元160将译码单元140译码后的指令根据其指令类型而发射到不同的指令执行单元150。根据一种实施方式,调度单元160将译码指令乱序发射到不同的指令执行单元150来执行。在调度单元160中,维护指令发射队列,其中存储了从译码单元140接收的、并要发射到指令执行单元150的指令。在调度单元中,可以为所有的执行单元150维护统一的发射队列,也可以为每个执行单元150维护一个专门的发射队列,甚至也可以为同一类型的指令维护专门的发射队列以便将指令发射到可以执行相同类型指令的不同执行单元150。本发明不受限于发射队列的具体形式,所有可以在调度单元160中缓存译码单元140所译码的指令,并维护要发射到各个执行单元来执行的发射队列的方式都在本发明的保护范围之内。
35.执行单元150包括可操作用于执行指令的电路。执行单元150在执行这些指令时,从寄存器组170、高速缓存110和/或存储器120接收数据输入并向它们生成数据输出。
36.在一个实施例中,寄存器组170包括架构寄存器,架构寄存器也被称为寄存器。除非另外予以规定或清楚明显可知,在本文中,短语架构寄存器、寄存器组、以及寄存器用于表示对软件和/或编程器可见(例如,软件可见的)和/或由宏指令指定来标识操作数的寄存器。这些寄存器不同于给定微架构中的其他非架构式寄存器(例如,临时寄存器、重排序缓冲器、引退寄存器等)。根据一个实施例,寄存器组170可以包括一组矢量寄存器175,其中的每个矢量寄存器175可以是512位、256位、或128位宽,或者可以使用不同的向量宽度。可选地,寄存器组170还可以包括一组通用寄存器176。通用寄存器176可以在执行单元执行指令时使用,例如存储跳转条件等。
37.应当理解,在指令处理装置100中,可以具有超过一个执行单元。例如,指令执行装置100可包括多个不同类型的执行单元,诸如例如算术单元、算术逻辑单元(alu)、整数单元、浮点单元、分支跳转单元等。根据从指令调度单元160乱序发射过来的指令的特征(例如,指令为算术运算指令、条浮点数计算指令、分支跳转或者无条件跳转指令等),由不同的执行单元150分别执行这些指令。
38.执行单元150在完成指令执行之后,由指令退休单元180对执行完成的指令进行退休处理,即根据指令执行的结果来修改各个寄存器或者存储器的内容、进行中断或者异常处理等,从而最终完成指令处理。
39.同样地,根据流水线处理方式,各个执行单元150中可以同时执行超过一条指令,
因此可以缓存其中执行的指令。另外,在指令退休单元中,也对各个执行单元150已经执行完成的指令进行缓存以等待最后退出。执行单元150和指令退休单元180被称为后端流水线。
40.为了避免混淆描述,已示出和描述了相对简单的指令处理装置100。指令处理装置或处理器的其他实施例可具有多个核、逻辑处理器或执行引擎。
41.指令处理装置100中可以进行指令的推测执行。例如,对于一系列要在指令处理装置100中执行的指令来说,有些指令可以推测执行(即投机执行)。推测执行意味着可以假定某个推测条件成立而预先读取在该条件成立的前提下要处理的指令,并在处理器的流水线中先完成指令读取、译码和执行,并且在最终确认推测条件成立时退休推测执行的指令,以完成正确路径下的指令执行。
42.因此,就推测执行而言,指令包括推测执行指令和推测条件判断指令。推测执行指令是在推测条件正确时要执行的指令,而推测条件判断指令则在执行时提供推测条件是否正确的判断。
43.根据本发明的一种实施方式,推测执行包括分支跳转。在这种情况下,推测执行指令包括在某个跳转分支下的所有指令,而推测条件判断指令为跳转分支指令。跳转分支指令在执行时会确定实际要跳转到的分支是否与预测的跳转分支是否相同。如果相同,则说明推测执行正确,对推测执行指令的事先处理是恰当的,因此提交在这个跳转分支下的所有指令的执行结果并退出。相反,如果不相同,说明推测是错误的,因此要放弃之前预处理的推测执行指令,并重新读取在正确的跳转分支下的指令并执行。
44.当译码单元140确定所译码的指令为跳转分支指令时,可以根据该跳转分支指令的历史执行记录,预测该跳转分支指令要跳转去的分支。随后,译码单元140指示取指令单元130事先读取该分支路径下的全部指令(在下文中称为推测执行指令或者投机执行指令),并进行译码。随后,译码单元140将跳转分支指令以及相关的推测执行指令发送到调度单元160,由调度单元160发射到指令执行单元150来执行。
45.由于调度单元160进行乱序发射,并且各个类型指令的执行方式不同,一些投机执行的指令可能会先执行完成而在退出单元180中等待退出。当跳转分支指令在执行单元150(根据一种实施方式,执行单元150包括分支跳转单元来执行跳转分支指令)中执行时,如果对跳转的判断和之前预测的一样,即跳转到与推测执行相同的分支,则在跳转分支指令执行完成并在退出单元180退出之后,所有已经执行完成和未完成执行的推测执行指令也都在完成执行之后退出。以这种方式,通过投机执行,可以让某个跳转分支下的指令提前被处理,从而提高了处理器的处理性能。
46.但是,当推测条件判断指令的执行结果是推测条件不正确,即推测错误时,则需要放弃目前已经处理的推测执行指令,并重新读取在推测条件正确情况下的指令来处理。
47.例如,对于推测执行为分支跳转的情况,当跳转分支指令的执行结果表示之前预测的跳转分支不正确时,则需要放弃目前处理中的分支路径中的指令,并重新读取正确分支路径下的指令。
48.图2示出了根据本发明另一个实施例的指令处理装置200的示意图。图2所示的指令处理装置200示出了与本发明相关的、图1所示的指令处理装置100相应部分的具体说明,即图2所示的指令处理装置200针对当推测错误时在装置200中的处理相关的部分进行了具
体描述,因此,与图1所示的指令处理装置100中相同或者相关的部件用相同或者相似的标记来指示。另外,对于各个单元中的各个部件件的划分是功能性的,并且为了物理实现可以进行重新布置和组合而没有脱离本发明的保护范围。
49.在图2给出的示例中,以推测条件为分支跳转为例进行了描述。应当注意的是,本发明不受限于基于分支跳转的投机执行,所有基于推测条件进行投机执行的方式都在本发明的保护范围之内。
50.如图2所示,调度单元160将指令根据其类型发射到不同的指令执行单元150来执行。例如,指令执行单元150中的分支跳转单元152适于执行跳转分支指令j。调度单元160还将基于跳转分支的跳转分支预测而推测读取的推测执行指令s1-sn发射到不同的执行单元150来执行。由于推测执行的指令为一个跳转分支下的指令,因此可能分布在不同的流水线级中。如图2所示,推测执行指令s1-s2在取值令单元130中缓存,而指令s3-s4在译码单元140中缓存,s5-s8在调度单元160的调度流水线中等待发射,而指令s9-s11在各个执行单元150中执行,另外,指令s12-sn已经完成了执行,并且在退休单元180中等待跳转分支指令j如果判断推测正确,则可以尽快完成退休。
51.另外,还存在提前退休的指令f1-f3,这些指令已经在退休单元180中标记为以提交,但是还没有完成执行,因此还在执行单元150中执行,这些指令老于跳转分支指令j。在本发明的描述中,一条指令老于另一条指令是指在在包含这些指令的指令序列中,根据顺序,老的指令要在新的指令之前处理。例如,如果指令序列为汇编代码列表,那么老的指令排列在新的指令前面,并且要先被处理和退休。
52.分支跳转单元152在执行跳转分支指令j时,根据执行结果,确定要跳转去的分支不同于在译码单元140中推测的分支,即出现了推测错误的情况。
53.在这种情况下,说明在指令处理装置100或者200中对推测执行指令s1-sn的执行是错误的,这些指令的执行结果不应当被提交或者退休,并应当尽快在指令处理装置10中清除这些指令。
54.分支跳转单元152在确定跳转分支指令j的执行结果与推测结果不一致而发生推测错误时,通知取值令单元130和译码单元140清除其中缓存的指令,即指令s1-s4。以便根据分支跳转单元152确定的正确分支,读取在正确路径下的指令并进行译码。根据本发明的一个实施方式,由于在指令调度单元160和后端流水线中的推测执行指令还未清除,因此译码单元140对正确路径下的指令进行译码之后,并不将译码指令发送到调度单元160进行指令调度。
55.根据本发明的一个实施例,考虑到存在跳转嵌套等情况,当前判断预测错误的跳转分支指令j可能并不是最老的、发生预测错误的跳转分支指令,而目前的推测执行指令与最老的跳转分支指令相对应,因此应该在该指令发生预测错误时清除相应的推测执行指令。分支跳转单元152在向前端流水线(即取指令单元130和译码单元140)发出清除指令的指示之前,需要判断跳转分支指令j是否为最老的、发生预测错误的跳转分支指令。
56.根据本发明的一个实施例,分支跳转单元(bju)152中记录了最老的、发生分支预测错误的指令。当bju 152在执行跳转分支指令j时检测到指令j的执行结果指示分支预测错误,会将指令j与bju152中记录的指令进行比较,如果记录的指令更老,那么说明针对预测错误的通知或者指示已经发出,并因此不再继续发通知。相反,如果指令j更老或者之前
没有预测失败的记录,则在bju 152中记录指令j或者用指令j来替换之前记录的指令,并发通知或者指示前端流水线(包括取指令单元130和译码单元140)清除在其上的指令。
57.随后,跳转分支指令j的执行完成,并发送到退休单元180进行退休处理。
58.由于指令虽然在执行单元150中乱序执行,但是会在退休单元180中顺序退休,因此当跳转分支指令j在退休单元180中退休时,说明比指令j更老的指令都应当发射到执行单元150执行了,而且除了提前退休的指令之外,都还没有完成退休。考虑到此,在指令j退休时,退休单元180指示调度单元160清除在调度流水线上的指令,即清除指令s5-s8。
59.随后,等待提前退休的指令(例如指令f1-f3)完成执行,当这些指令完成执行之后,在现在的后端流水线(即执行单元150和退休单元180)中就没有比分支指令j更老的指令。因此,退休单元180指示清除在后端流水线中的所有指令,即指令s9-sn。具体而言,退休单元180指示执行单元150清除正在执行的指令s9-s11,并在退休单元180本身中清除指令s12-sn。
60.在后端流水线中的指令清除了之后,在前端流水线中已经读取并译码的、与实际跳转分支相对应的正确路径下的指令就可以发送到调度单元160,并发射到各个执行单元150来执行。
61.根据本发明的方案,将整个处理器流水线划分为3个部分,即与取指令和指令译码相关的前端流水线、用于将指令乱序发射到后端流水线的调取流水线、以及与指令执行和退休相关的后端流水线。当指令投机执行出现错误时,立即清空前端流水线,并开始读取和译码在正确路径下的指令,随后随着投机条件判断指令的执行而逐步清空调度流水线和后端流水线,从而减少了正确路径下的指令在整个流水线中的处理时间,提高了处理性能。
62.另外,根据本发明的方案,充分考虑到指令顺序退出和乱序执行的特点,在后端流水线被清空之前,就先在前端流水线中读取并译码新的指令,并在所有相关的指令顺序退出之后,就马上由调度流水线来调度已经在前端流水线中的指令并执行,从而提高了处理性能。
63.另外,根据本发明的方案,在投机条件判断指令退出之后,还考虑到可能存在提前退休的指令在执行中,因此,在提前退休的指令执行完成之后,才清除后端流水线,从而使得本方案适用于现有的、支持提前退休的流水线设计。
64.下面将结合图3描述的指令处理方法300来进一步描述在指令处理装置100,特别是在指令处理装置200中进行的操作。
65.指令处理方法300始于步骤s305,在步骤s305中,读取指令并缓存,随后在步骤s310中,并对所读取的指令进行译码,并缓存译码的指令。例如,对于一系列要在指令处理装置100或者200中执行的指令来说,有些指令可以推测执行(即投机执行)。推测执行意味着可以假定某个推测条件成立而预先读取在该条件成立的前提下要处理的指令,并在处理器的流水线中先完成指令读取、译码和执行,并且在最终确认推测条件成立时退休推测执行的指令,以完成正确路径下的指令执行。因此,就推测执行而言,要读取并译码的指令包括推测执行指令和推测条件判断指令。推测执行指令是在推测条件正确时要执行的指令,而推测条件判断指令则在执行时提供推测条件是否正确的判断。
66.根据本发明的一种实施方式,推测执行包括分支跳转。在这种情况下,推测执行指令包括在某个跳转分支下的所有指令,而推测条件判断指令为跳转分支指令。跳转分支指
令在执行时会确定实际要跳转到的分支是否与预测的跳转分支是否相同。如果相同,则说明推测执行正确,对推测执行指令的事先处理是恰当的,因此提交在这个跳转分支下的所有指令的执行结果并退出。相反,如果不相同,说明推测是错误的,因此要放弃之前预处理的推测执行指令,并重新读取在正确的跳转分支下的指令并执行。
67.在下面描述的方法中,以推测条件为分支跳转为例进行了描述。应当注意的是,本发明不受限于基于分支跳转的投机执行,所有基于推测条件进行投机执行的方式都在本发明的保护范围之内。
68.在方法300中,以流水线的方式来处理这些指令,例如,在步骤s320中,在指令调度单元处接收在步骤s310中译码的指令并缓存,并将所接收的指令发射到指令执行单元来执行,接着在步骤s330中,由指令执行单元接收在步骤s320从指令调度单元发射过来的指令并执行这些指令。随后,在步骤s340中,缓存步骤s330中由指令执行单元完成执行的指令,并退休这些指令。
69.如果在步骤s310中确定所译码的指令为跳转分支指令时,则可以根据该跳转分支指令的历史执行记录,预测该跳转分支指令要跳转去的分支。随后,指示在步骤s305中,去事先读取该分支路径下的全部指令(在下文中称为推测执行指令或者投机执行指令),并发送到步骤s310中进行译码。
70.在步骤s330中执行指令时,如果要执行的指令是跳转分支指令,则利用分支跳转单元152来执行该指令。分支跳转单元152在执行跳转分支指令j时,如果根据执行结果,确定要跳转去的分支不同于在步骤s310中推测的分支,即出现了推测错误的情况。则在这种情况下,说明在该方法中对推测执行指令的提前处理是错误的,这些指令的执行结果不应当被提交或者退休,并应当尽快在指令处理装置100或者200中清除这些指令。
71.为此,方法300还包括步骤s335,在确定跳转分支指令j的执行结果与推测结果不一致而发生推测错误时,清除在步骤s305和步骤s310中缓存的指令,并根据分支跳转单元152确定的正确分支,指示在步骤s305中读取在正确路径下的指令并在步骤s310进行译码。根据本发明的一个实施方式,由于在指令调度单元160和后端流水线中的推测执行指令还未清除,因此在步骤s310中对正确路径下的指令进行译码之后,并不执行步骤s320将译码指令发送到调度单元160进行指令调度。
72.根据本发明的一个实施例,考虑到存在跳转嵌套等情况,当前判断预测错误的跳转分支指令j可能并不是最老的、发生预测错误的跳转分支指令,而目前的推测执行指令与最老的跳转分支指令相对应,因此应该在该指令发生预测错误时清除相应的推测执行指令。分支跳转单元152在步骤s335向前端流水线发出清除指令的指示之前,需要判断跳转分支指令j是否为最老的、发生预测错误的跳转分支指令。
73.根据本发明的一个实施例,分支跳转单元(bju)152中记录了最老的、发生分支预测错误的指令。当bju 152在执行跳转分支指令j时检测到指令j的执行结果指示分支预测错误,会将指令j与bju152中记录的指令进行比较,如果记录的指令更老,那么说明针对预测错误的通知或者指示已经发出,并因此不再继续发通知。相反,如果指令j更老或者之前没有预测失败的记录,则在bju 152中记录指令j或者用指令j来替换之前记录的指令,并发通知或者指示前端流水线清除在其上的指令。
74.随后,在步骤s330中完成跳转分支指令j的执行完成,并进入步骤s340,缓存跳转
分支指令j并进行退休处理。
75.由于指令虽然在执行单元150中乱序执行,但是会在步骤s340中顺序退休,因此当跳转分支指令j退休时,说明比指令j更老的指令都应当发射到执行单元150执行了,而且除了提前退休的指令之外,都还没有完成退休。考虑到此,方法还包括步骤s345,其中在指令j退休时,指示调度单元160清除在调度流水线上的指令。随后,在步骤s350中,等待提前退休的指令完成执行,当这些指令完成执行之后,在现在的后端流水线(即执行单元150和退休单元180)中就没有比分支指令j更老的指令。因此,在步骤s350中指示清除在后端流水线中的所有指令。具体而言,指示指令执行单元150清除正在执行的指令,并清除目前在退休中的指令。
76.接着,在步骤s360中,在后端流水线中的指令清除了之后,指示在步骤s305和s310中的前端流水线中已经读取并译码的、与实际跳转分支相对应的正确路径下的指令就可以发送到调度单元160,以执行步骤s320来发射到各个执行单元150来执行。
77.根据本发明的方案,将整个处理器流水线划分为3个部分,即与取指令和指令译码相关的前端流水线、用于将指令乱序发射到后端流水线的调取流水线、以及与指令执行和退休相关的后端流水线。当指令投机执行出现错误时,立即清空前端流水线,并开始读取和译码在正确路径下的指令,随后随着投机条件判断指令的执行而逐步清空调度流水线和后端流水线,从而减少了正确路径下的指令在整个流水线中的处理时间,提高了处理性能。
78.如上所述,根据本发明的指令处理装置可以实现为处理器核,且指令处理方法可以在处理器核中执行。处理器核可以不同的方式在不同的处理器中实现。例如,处理器核可以实现为用于通用计算的通用有序核、用于通用计算的高性能通用无序核、以及用于图形和/或科学(吞吐量)计算的专用核。而处理器可以实现为cpu(中央处理器)和/或协处理器,其中cpu可以包括一个或多个通用有序核和/或一个或多个通用无序核,而协处理器可以包括一个或多个专用核。这样的不同处理器的组合可以导致不同的计算机系统架构。在一种计算机系统架构中,协处理器在与cpu分开的芯片上。在另一种计算机系统架构中,协处理器在与cpu相同的封装中但处于分开的管芯上。在还有一种计算机系统架构中,协处理器与cpu在相同管芯上(在该情况下,这样的协处理器有时被称为诸如集成图形和/或科学(吞吐量)逻辑等专用逻辑,或被称为专用核)。在还有一种称为片上系统的计算机系统架构中,可以将所描述的cpu(有时被称为应用核或应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上。
79.图4示出了根据本发明一个实施例的处理器1100的示意图。如图4中的实线框所示,根据一种实施方式,处理器1110包括单个核1102a、系统代理单元1110、总线控制器单元1116。如图4中的虚线框所示,根据本发明的另一个实施方式,处理器1100还可以包括多个核1102a-n、处于系统代理单元1110中的集成存储器控制器单元1114以及专用逻辑1108。
80.根据一种实施方式,处理器1100可以实现为中央处理器(cpu),其中专用逻辑1108是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),且核1102a-n是一个或多个通用核(例如,通用有序核、通用无序核、这两者的组合)。根据另一种实施方式,处理器1100可以实现为协处理器,其中核1102a-n是用于图形和/或科学(吞吐量)的多个专用核。根据还有一种实施方式,处理器1100可以实现为协处理器,其中核1102a-n是多个通用有序核。因此,处理器1100可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理
器、压缩引擎、图形处理器、gpgpu(通用图形处理单元)、高吞吐量的集成众核(mic)协处理器(包括30个或更多核)、或嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器1100可以是一个或多个衬底的一部分,和/或可以使用诸如例如bicmos、cmos或nmos等的多个加工技术中的任何一个技术将其实现在一个或多个衬底上。
81.存储器层次结构包括在各核内的一个或多个级别的高速缓存、一个或多个共享高速缓存单元1106、以及耦接到集成存储器控制器单元1114的外部存储器(未示出)。该共享高速缓存单元1106可以包括一个或多个中间级高速缓存,诸如二级(l2)、三级(l3)、四级(l4)或其他级别的高速缓存、末级高速缓存(llc)、和/或其组合。尽管在一个实施例中,基于环的互连单元1112将集成图形逻辑1108、共享高速缓存单元1106以及系统代理单元1110/集成存储器控制器单元1114互连,本发明不受限于此,并且可使用任何数量的公知技术来将这些单元互连。
82.系统代理1110包括协调和操作核1102a-n的那些组件。系统代理单元1110可包括例如功率控制单元(pcu)和显示单元。pcu可以包括调整核1102a-n和集成图形逻辑1108的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
83.核1102a-n可以具有上面参考图1描述的核架构,并且在架构指令集方面可以是同构的或异构的。即,这些核1102a-n中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
84.图5示出了根据本发明一个实施例的计算机系统1200的示意图。图5所示的计算机系统1200可以应用于膝上型设备、台式机、手持pc、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(dsp)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备。本发明不受限于此,所有可以纳入本说明书中所公开的处理器和/或其它执行逻辑的系统都在本发明的保护范围之内。
85.如图5所示,系统1200可以包括一个或多个处理器1210、1215。这些处理器耦接到控制器中枢1220。在一个实施例中,控制器中枢1220包括图形存储器控制器中枢(gmch)1290和输入/输出中枢(ioh)1250(其可以在分开的芯片上)。gmch 1290包括与存储器1240和协处理器1245相耦接的存储器控制器和图形控制器。ioh 1250将输入/输出(i/o)设备1260耦接到gmch 1290。做为选择,存储器控制器和图形控制器集成在处理器中,这样存储器1240和协处理器1245就直接耦接到处理器1210,此时控制器中枢1220仅仅包括ioh 1250。
86.附加处理器1215的任选性质用虚线表示在图5中。每一处理器1210、1215可包括本文中描述的处理核中的一个或多个,并且可以是图4所示的处理器1100的某一版本。
87.存储器1240可以是例如动态随机访问存储器(dram)、相变存储器(pcm)或这两者的组合。对于至少一个实施例,控制器中枢1220经由诸如前侧总线(fsb)之类的多分支总线(multi-drop bus)、诸如快速通道互连(qpi)之类的点对点接口、或者类似的连接1295与处理器1210、1215进行通信。
88.在一个实施例中,协处理器1245是专用处理器,诸如例如高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、或嵌入式处理器等等。在一个实施例中,控制器中枢1220可以包括集成图形加速器。
89.在一个实施例中,处理器1210执行控制一般类型的数据处理操作的指令。嵌入在这些指令中的可以是协处理器指令。处理器1210识别如具有应当由附连的协处理器1245执行的类型的这些协处理器指令。因此,处理器1210在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1245。协处理器1245接受并执行所接收的协处理器指令。
90.图6示出了根据本发明的一个实施例的片上系统(soc)1500的示意图。图6所示的片上系统包含了图4所示的处理器1100,因此与图4中相似的部件具有同样的附图标记。如图6所示,互连单元1502耦接到应用处理器1510、系统代理单元1110、总线控制器单元1116、集成存储器控制器单元1114、一个或多个协处理器1520、静态随机存取存储器(sram)单元1530、直接存储器存取(dma)单元1532以及用于耦合至一个或多个外部显示器的显示单元1540。应用处理器1510包括一个或多个核1102a-n的集合以及共享高速缓存单元110。协处理器1520包括集成图形逻辑、图像处理器、音频处理器和视频处理器。在一个实施例中,协处理器1520包括专用处理器,诸如例如网络或通信处理器、压缩引擎、gpgpu、高吞吐量mic处理器、或嵌入式处理器等等。
91.另外,上面描述的片上系统可以包含在智能设备中,以便在智能设备中实现相应的功能,包括但不限于执行相关控制程序、进行数据分析、运算和处理、网络通信、控制智能设备中的外设等。
92.这样的智能设备包括专门的智能设备,如移动终端和个人数字终端等,这些设备中包括根据本发明的一个或者多个片上系统来进行数据处理,或者对设备中的外设进行控制。
93.这样的智能设备还包括为了实现特定功能而构造的专门设备,例如智能音箱、和智能显示设备等。这些设备中包括根据本发明的片上系统来对音箱和显示设备进行控制,从而赋予音箱和显示设备额外的通信、感知和数据处理等功能。
94.这样的智能设备还包括各种iot和aiot设备。这些设备中包括根据本发明的片上系统进行数据处理,例如进行ai运算、数据通信和传输等,从而实现了更加密集且更加智能的设备分布。
95.这样的智能设备还可以在车辆中使用,例如可以实现为车载设备、或者可以嵌入到车辆中,从而为车辆的智能驾驶提供数据处理能力。
96.这样的智能设备还可以用于家庭和娱乐领域,例如可以实现为智能音箱、智能空调、智能冰箱、智能显示设备等。这些设备包括根据本发明的片上系统来进行数据处理和外设控制,从而实现了家庭和娱乐设备的智能化。
97.另外,这样的智能设备还可以用于工业领域,例如可以实现为工控设备、感测设备、iot设备,aiot设备和制动设备等。这些设备中包括根据本发明的片上系统来进行数据处理和外设控制,从而实现了工业设备的智能化。
98.本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
99.应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对
本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
100.本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
101.本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
102.此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
103.此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
104.如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
105.尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1