CN111538535B - 一种cpu指令处理方法、控制器和中央处理单元 - Google Patents
一种cpu指令处理方法、控制器和中央处理单元 Download PDFInfo
- Publication number
- CN111538535B CN111538535B CN202010349676.7A CN202010349676A CN111538535B CN 111538535 B CN111538535 B CN 111538535B CN 202010349676 A CN202010349676 A CN 202010349676A CN 111538535 B CN111538535 B CN 111538535B
- Authority
- CN
- China
- Prior art keywords
- instruction
- execution
- cpu
- target
- jump
- 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 22
- 238000003672 processing method Methods 0.000 title abstract description 9
- 238000000034 method Methods 0.000 claims abstract description 43
- 238000013468 resource allocation Methods 0.000 claims description 5
- 238000002360 preparation method Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 18
- 230000006870 function Effects 0.000 description 12
- 238000003860 storage Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 230000006872 improvement Effects 0.000 description 10
- 238000004590 computer program Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000000750 progressive effect Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 229920001296 polysiloxane Polymers 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 239000002699 waste material 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
- G06F9/3842—Speculative 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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
本申请公开了一种CPU指令处理方法、控制器和中央处理单元,所述方法包括:提取指令形成指令块,以送入CPU执行单元;其中,所述指令块包括单条跳转指令以及通过CPU指令预测得到的分支指令;使CPU执行单元执行所述跳转指令之前的指令和所述跳转指令,以及在确定出所述跳转指令的跳转目标指令之前,拒绝所述分支指令进入执行阶段。本方案提供在充分利用指令预测的准确率(98%)的基础上,避免安全问题的同时,减少预测失败带来的性能和功耗问题,提升CPU的效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种CPU指令处理方法、控制器和中央处理单元CPU。
背景技术
在当前的大数据云环境下,需要对海量数据进行存储和处理,对数据的计算速度提出了更高的要求。众所周知,计算速度的决定性因素为中央处理单元CPU的性能。为了实现更高速度的运算,CPU在各个方面,从物理工艺到逻辑控制,都在不断进行改进。
例如,为了提升并行处理能力,提出CPU超线程技术,即利用特殊字符的硬件指令,把两个逻辑内核模拟成物理芯片,让单个处理器能使用线程级并行计算,从而兼容多线程并行计算。也就是说,超线程CPU可以在一个物理核的基础上,并行运行2个或更多个线程,从而得到更多可并行指令,提升总体运行性能。另一方面,为了更有效地利用CPU的时钟周期,避免流水线停顿或等待,采用指令预测的方案,进行指令预取和指令预执行。
这些方案都在一定程度上提升了CPU的执行效率。然而,指令预测并不总是准确(准确率98%),CPU虽然通过使用指令预测提升数据和指令并行度,但是2%的预测失败带来25%的性能伤害,同时带来安全隐患(熔断,幽灵)。
发明内容
有鉴于此,本说明书实施例提供了一种CPU指令处理方法、控制器和中央处理单元CPU,在充分利用指令预测的准确率(98%)的基础上,避免安全问题的同时,减少预测失败带来的性能和功耗问题,提升CPU的效率。
本说明书实施例采用下述技术方案:
本说明书实施例提供了一种CPU指令处理方法,所述方法包括:
提取指令形成指令块,以送入CPU执行单元;其中,所述指令块包括单条跳转指令以及通过CPU指令预测得到的分支指令;
使CPU执行单元执行所述跳转指令之前的指令和所述跳转指令,以及在确定出所述跳转指令的跳转目标指令之前,拒绝所述分支指令进入执行阶段。
本说明书实施例还提供了一种CPU控制器,包括:
指令提取单元,用于提取指令形成指令块,以送入CPU执行单元;其中,所述指令块包括单条跳转指令以及通过CPU指令预测得到的分支指令;
执行操作单元,用于使CPU执行单元执行所述跳转指令之前的指令和所述跳转指令,以及在确定出所述跳转指令的跳转目标指令之前,拒绝所述分支指令进入执行阶段。
本说明书实施例还提供了一种中央处理单元,包括上述的控制器。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:本说明书的方案充分利用现有CPU的指令预测功能,将预测的指令经过取指、解码、重命名和分配执行资源阶段,进入准备执行,并且在确定出跳转指令的跳转目标指令之前,拒绝分支指令(即预测的指令)进入执行阶段,也即仅将确定的指令(如确定出的跳转目标指令)进入执行阶段进行执行,在避免安全问题的同时,减少预测失败带来性能和功耗问题,减少CPU内部超线程之间的运行冲突,整体提升CPU在大数据场景下的整体吞吐性能。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图:
图1为本说明书实施例提供的一种CPU执行过程;
图2为本说明书实施例提供的一种CPU指令处理方法的流程图;
图3为本说明书实施例提供的CPU控制器的功能框图。
具体实施方式
如背景技术提到的熔断和幽灵的安全隐患,为了解决熔断和幽灵,现在通过软件解决,但是性能会受到影响,本说明书的方案在保证安全的情况下,大幅度降低跳转预测失败带来的性能伤害,提升CPU整体的吞吐量。
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本说明书实施例涉及到的术语:CPU超线程:在一个物理核的基础上,并行运行2个或者多个线程,从而得到更多可并行指令,提升总体性能。CPU指令预测:通过指令的历史执行过程,预测跳转指令的目的地址。CPU指令预执行阶段:在跳转指令获得有效目的地址之前,CPU通过指令预测获得可执行代码,我们认为这些预测获得的代码的执行为指令预执行阶段。
图1为本说明书实施例提供的一种CPU执行过程。如图1所示,整个执行过程分为多个阶段。首先是取指令阶段。当前的主流CPU每个指令周期可以取16字节,大约每次为4条指令。接着进行指令预解码。预解码阶段的主要工作是辨别指令长度,同时标注跳转指令。通常来说,主流CPU在该阶段有5指令/周期的吞吐量。
预解码之后即进入解码阶段。解码阶段主要将复杂指令转变为精简指令(固定长度),同时指定操作类型。通常该阶段也有5指令/周期的吞吐量。解码后的指令会放入到已解码缓存。
已解码缓存作为一个指令缓存池,其中可以存储多条已解码的指令,供下一阶段读取。已解码缓存到下一阶段的吞吐量可以达到每个周期6条指令。
如前所述,对于超线程CPU,可以存在多个线程并行执行。在执行过程中,每个线程都会读取接下来待执行的指令,形成自己的线程缓存队列。在已解码缓存中存在上述待执行指令的情况下,就使用已解码缓存中存储的指令,否则,从前端(内存)得到相应指令添加到队列中。在图1中示例性示出了线程A和线程B各自的线程缓存队列,但是可以理解,超线程CPU还可以支持更多线程的并行执行。
接着,从形成线程缓存队列进入下一阶段:重命名和分配可执行资源。该阶段通常可以包括重命名1、重命名2、分配执行资源。从线程缓存队列到该阶段的吞吐量可以达到每个周期5条指令。而在重命名和分配可执行资源阶段,主要工作是解决寄存器读写依赖关系,去除不必要的依赖关系,力求得到指令更多并行执行能力,同时分配执行时所需要的各种资源。
在分配好执行所需资源之后,指令才会被送入到CPU的执行单元进行执行。目前CPU拥有多个执行单元,当前最普遍的CPU具有8条可以并行执行的流水线,也就是每个周期可以执行8个微操作,虽然可以乱序执行,但是最后指令提交的顺序与程序的顺序相同。
如前所述,为了避免指令缺失带来的流水线停顿或等待,目前几乎所有CPU都会采用指令预测,又称为分支预测(Branch Prediction)方案进行指令的预测和预取。在每个周期结束之后,预测单元根据其包含的历史执行状态表预测将要预取的指令。如果指令没有跳转,在前述取指令阶段,就取当前取指地址加16字节的指令块。如果指令存在跳转,则根据指令预测结果,获取预测分支的指令。
经过不断改进,当前的指令预测方案的预测准确度已经可以超过90%,有些方案的预测准确度甚至可达98%。但是,仍然存在预测错误的可能,此时很有可能将错误的指令块输入到可执行单元中。
例如,假定存在指令L1,L2,L3,L4,L5,其中L2是跳转指令,该指令规定,在某判断条件满足时,跳转至指令L5,否则顺序执行指令L3和L4。如果在指令预测时,预测该跳转指令L2的目标分支是L3,那么在取指令阶段就会读取L3和后续指令,并且在后续执行阶段,有可能将L1,L2,L3,L4送入CPU执行单元进行执行。如果实际上L2的执行结果指示,应该跳转到L5,那么L3和L4就被错误地执行。在这样的情况下,CPU不得不重新刷新整条流水线,回滚到之前的分支,然后重新热启动,选择另一条分支执行。尽管指令预测错误的概率并不高,但是一旦出现,就需要进行上述操作,这样的操作非常耗时,致使CPU效率最大只能在75%左右。
为此,现有的一种方案是:仍然按照原有方式执行图1中的取指令阶段、预解码阶段、解码阶段,并将解码的指令放入已解码缓存中,各个线程可以从已解码缓存中读取指令,形成线程缓存队列。但是在跳转指令获取到有效的跳转目标地址,也就是确定出跳转目标指令之前,不再执行代码块的重命名和分配可执行资源阶段,以保证后续执行操作都是正确完成,没有预测失败而导致的效率下降。举例而言,在前述例子中,指令L1,L2,L3,L4,L5中L2是跳转指令,即使跳转指令L2的目标分支被错误地预测为L3,该现有方案只会将L1和L2作为一个指令块,送入CPU执行单元进行执行,而不会同时将L1,L2,L3,L4一起执行。也即在确定出跳转指令L2的目标地址(即确定出跳转目标指令)后,才会将跳转目标指令放入到执行单元,经过重命名和分配执行资源阶段,然后进入执行阶段。
如上所述,现有的这种方案需要在跳转指令被解决之后,才会将确定出的跳转目标指令放入到执行单元开始执行。但是,在跳转目的地址确认后,到跳转目标指令被执行之前,跳转目标指令至少需要经过重命名和分配执行资源阶段,如重命名1、重命名2、分配执行资源三个阶段,这样就导致3个周期以上的浪费。为此,本说明书的实施例在此基础上进行进一步改进,尽可能保留和利用高准确率的指令预测所带来的优势,同时利用超线程的高并行度的特点,在避免安全问题的同时,减少预测失败带来性能和功耗问题,减少CPU内部超线程之间的运行冲突,整体提升CPU在大数据场景下的整体吞吐性能。
根据本说明书一个或多个实施例,仍然使用指令跳转预测,预测的指令块经过取指令,解码,重命名1,重命名2和分配执行资源,但是每次仅仅执行包括跳转指令之前的代码。下面描述上述构思的实现方式。
图2为本说明书实施例提供的一种CPU指令处理方法的流程图。如图2所示,本说明书提供的CPU指令处理方法包括:
S110:提取指令形成指令块,以送入CPU执行单元;其中,所述指令块包括单条跳转指令以及通过CPU指令预测得到的分支指令。
S120:使CPU执行单元执行所述跳转指令之前的指令和所述跳转指令,以及在确定出所述跳转指令的跳转目标指令之前,拒绝所述分支指令进入执行阶段。
具体而言,在步骤S110中,按照原有的方式,从当前线程缓存队列提取指令,形成与硬件最大处理能力对应的最大长度的指令块。通常,CPU硬件的最大处理能力取决于包含的执行单元的数目,可以根据执行单元的数目确定一预定阈值,作为指令块的最大长度。例如,当前最普遍的CPU具有8条可以并行执行的流水线,那么可以将该预定阈值设为8,相应地,指令块的最大长度为8。
上述现有方案中,送入CPU执行单元的指令块不包含通过CPU指令预测得到的分支指令。与上述现有方案不同的是,本方案中送入CPU执行单元的指令块包括单条跳转指令以及通过CPU指令预测得到的分支指令。
在步骤S110形成的指令块被送入CPU执行单元后,CPU按照现有的方式将指令都经过重命名和分配执行资源阶段,之后进入执行阶段,即包括跳转指令之前的指令和通过CPU指令预测得到的分支指令都经过重命名和分配执行资源阶段,进入准备执行。与现有方式不同的是,本方案仅执行包括跳转指令之前的指令(即执行跳转指令之前的指令和跳转指令),在确定出所述跳转指令的跳转目标指令之前,拒绝通过CPU指令预测得到的分支指令进入执行阶段。也就是说,包括跳转指令之前的指令和通过CPU指令预测得到的分支指令都经过重命名和分配执行资源阶段,进入准备执行,之后,在确定出所述跳转指令的跳转目标指令之前,仅将包括跳转指令之前的指令进入执行阶段,而拒绝通过CPU指令预测得到的分支指令进入执行阶段。
也即,本说明书的方案将预测到的指令块放入CPU执行单元,经过重命名和分配执行资源阶段,进入准备执行,但是不需要执行,一直到跳转指令得到确认(即确定出跳转目标指令)再进行执行,因此永远不会产生回滚,同时利用超线程指令和数据的并行性最终提升CPU总体吞吐量。
下面结合一个具体例子描述以上过程。假定存在以下一段指令(其中/*…*/中间的内容是对指令的解释):
1.mov(r1),r2/*将寄存器r1所指向的地址内容,拷贝到寄存器r2*/
2.mov 0x08(r1),r3/*将寄存器r1+8所指向的地址内容,拷贝到寄存器r3*/
3.add r3,r2/*将寄存器r3内容加上寄存器r2的内容,存储到r2*/
4.mov r2,(r4)/*将r2的内容,存储到基础器r4指向的内存地址*/
5.cmp r2,r5
6.ja L_Jmp
7.div r4,r5/*将寄存器r4的内容与r5相除,然后存入寄存器r5*/
...
L_Jmp:
n.mul r6,r7/*将寄存器r6的内容与r7相乘,然后存入寄存器r7*/
n+1....
在这一段指令中,指令6为跳转指令,CPU按照现有的方式将指令(1-6)都经过如下阶段:取指令,解码,重命名1,重命名2和分配执行资源,之后准备运行,如果跳转预测判断需要跳转(目的地址是指令n),则指令n和指令n之后的指令也会根据跳转预测器的判断经过上述过程(取指令,解码,重命名1,重命名2和分配执行资源)进入准备执行。即指令(1-6)、指令n和指令n之后的指令都被送入CPU执行单元,但是与现有方式不同的是,本说明书实施例仅仅执行指令1-6(即将指令1-6进入执行阶段进行执行),而在确定出所述跳转指令的目标指令之前,指令n和指令n之后的指令拒绝进入执行阶段。
直到根据CPU执行单元执行的执行结果,确定出跳转指令的目标指令之后,判断所述目标指令与所述分支指令是否一致。如果所述目标指令与所述分支指令一致,预测的分支指令为指令n,确定出的跳转指令的目标指令也为指令n(98%的预测准确率),此时,由于指令n已经准备执行(即指令n已经经过重命名1,重命名2和分配执行资源阶段),因此可以使指令n进入执行阶段,快速运行。如果所述目标指令与所述分支不指令一致,例如预测到的分支指令为指令n,确定出的跳转指令的目标指令为指令7,则清除指令n,此时由于指令n为准备执行阶段,即指令n并没有执行,没有产生不需要的上下文,所以不需要复杂的恢复方法,无需等待可以迅速取真正的目的地址指令7和之后的指令,送入CPU执行单元进行执行。
在一个实施例中,获取目标指令可以包括:首先判断已解码缓存中是否包含正确的目标指令;在包含的情况下,从已解码缓存获取该目标指令。可以理解,基于指令预测方案的指令预取会不断地预取到许多条指令,解码后放入已解码缓存。因此,在绝大多数的情况下,都可以从已解码缓存中获取到正确的目标指令。另一方面,在极其罕见的情况下,已解码缓存中不包含目标指令。这时,可以从内存请求获取该目标指令。
按照上述实施例,在确定出跳转指令的目标指令之前,使CPU执行单元执行分支指令的重命名和分配执行资源阶段,以使所述分支指令进入准备执行阶段,并拒绝分支指令进入执行阶段。只有在目标指令与所述分支指令一致的情况下,使分支指令进入执行阶段以执行所述分支指令;否则,清除所述分支指令,并获取所述目标指令,并将所述目标指令送入CPU执行单元进行执行。可以看到CPU永远都会执行正确的指令,因此有效避免熔断和幽灵引入的安全问题,同时在引入超线程之后,不会因为某一个线程占用太多资源而伤害在同一个执行单元运行的其他线程,线程之间具有非常好的自适应调度能力,最终在保证安全的前提下,减少功耗提升性能。
在大数据场景的条件下,需要通过超线程提升整体的吞吐量,经过验证发现,多线程的场景对于指令预测成功率要求较低,但是产生指令回滚的次数更多,产生大量不必要的性能开销,和熔断/幽灵等安全问题。在本说明书的方案中,由于预测的指令不会执行,当预测失败的时候,又可以有效减少预测带来的延迟,同时考虑到了大数据场景下的多线程执行,使多线程之间有着很强的自适应调度。另外,随着单核CPU超线程数目的增加,共享的执行资源变得更加稀缺,在本说明书的方案中只执行确定的任务,避免由于过多乱序导致回滚和资源滥用的问题,最终在避免安全问题的同时提升CPU吞吐量。
如上所述,本说明书的方案充分利用现有CPU的指令预测功能,将预测的指令经过取指、解码、重命名和分配执行资源阶段,进入准备执行,并且在确定出跳转指令的目标指令之前,拒绝分支指令(即预测的指令)进入执行阶段,也即仅将确定的指令(如确定出的目标指令)进入执行阶段进行执行,在避免安全问题的同时,减少预测失败带来性能和功耗问题,减少CPU内部超线程之间的运行冲突,整体提升CPU在大数据场景下的整体吞吐性能。
如本领域技术人员所知,CPU中指令的执行过程通过控制器来控制。控制器是整个CPU的指挥控制中心,用于协调各个部件之间的操作。控制器一般包括指令控制逻辑、时序控制逻辑、总线控制逻辑、中断控制逻辑等几个部分。指令控制逻辑要完成取指令、分析指令和执行指令的操作。
根据以上描述的实施例的方案,对原有的指令控制过程进行了优化和调整,因此相应地,可以在硬件层面上修改控制器电路,特别是其中的指令控制逻辑,使其完成以上实施例描述的控制过程。
图3为本说明书实施例提供的CPU控制器的功能框图。如图3所示,CPU控制器包括:
指令提取单元301,用于提取指令形成指令块,以送入CPU执行单元;其中,所述指令块包括单条跳转指令以及通过CPU指令预测得到的分支指令;
执行操作单元305,用于使CPU执行单元执行包括所述跳转指令之前的指令,以及在确定出所述跳转指令的目标指令之前,拒绝所述分支指令进入执行阶段。以及,执行操作单元302还用于在确定出所述跳转指令的目标指令之前,使CPU执行单元执行所述分支指令的重命名和分配执行资源阶段,以使所述分支指令进入准备执行阶段。
在一种具体的实施例中,如图3所示,CPU控制器还可以包括:
目标指令确定单元302,用于根据CPU执行单元的执行结果,确定所述跳转指令的目标指令;
判断单元303,用于判断所述目标指令与所述分支指令是否一致;
目标指令获取单元304,用于判断已解码缓存中是否包含所述目标指令,其中已解码缓存中存储有预取并解码的多条指令;以及,在包含的情况下,从所述已解码缓存获取所述目标指令;在不包含的情况下,从内存获取所述目标指令。
执行操作单元305还用于在所述目标指令与所述分支指令一致的情况下,使所述分支指令进入执行阶段以执行所述分支指令。
执行操作单元305还用于在所述目标指令与所述分支指令不一致的情况下,清除所述分支指令,并将目标指令获取单元304获取到的目标指令送入CPU执行单元进行执行。
以上各个单元可以根据需要采用各种电路元件实现,例如采用若干比较器来实现判断单元303等。
通过以上的控制器,可以实现如图2所示的控制过程,从而在利用指令预测和预取的优势的基础上,在避免安全问题的同时,减少预测失败带来性能和功耗问题,减少CPU内部超线程之间的运行冲突,整体提升CPU在大数据场景下的整体吞吐性能。
本说明书实施例还提供了一种中央处理单元,包含上述的控制器。
上述对本说明书特定实施例进行了描述,其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,附图中描绘的过程不一定必须按照示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、非易失性计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书实施例提供的装置、设备、非易失性计算机可读存储介质与方法是对应的,因此,装置、设备、非易失性计算机存储介质也具有与对应方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述对应装置、设备、非易失性计算机存储介质的有益技术效果。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware DescrIP地址tion Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescrIP地址tion Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware DescrIP地址tion Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware DescrIP地址tion Language)等,目前最普遍使用的是VHDL(Very-High-Speed Integrated Circuit Hardware DescrIP地址tion Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、MicrochIP地址PIC18F26K20以及Silicone LabsC8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书实施例可提供为方法、系统、或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带式磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (9)
1.一种CPU指令处理方法,所述方法包括:
提取指令形成指令块,以送入CPU执行单元;其中,所述指令块包括单条跳转指令以及通过CPU指令预测得到的分支指令;
使CPU执行单元执行所述跳转指令之前的指令和所述跳转指令,以及在确定出所述跳转指令的目标指令之前,拒绝所述分支指令进入执行阶段;
根据CPU执行单元执行的执行结果,确定所述跳转指令的目标指令;
判断所述目标指令与所述分支指令是否一致;
如果所述目标指令与所述分支指令一致,则使所述分支指令进入执行阶段以执行所述分支指令。
2.根据权利要求1所述的方法,在拒绝所述分支指令进入执行阶段之前,所述方法还包括:
使CPU执行单元执行所述分支指令的重命名和分配执行资源阶段,以使所述分支指令进入准备执行阶段。
3.根据权利要求1所述的方法,所述方法还包括:
如果所述目标指令与所述分支指令不 一致,则清除所述分支指令,并获取所述目标指令,并将所述目标指令送入CPU执行单元进行执行。
4.根据权利要求3所述的方法,获取所述目标指令包括:
判断已解码缓存中是否包含所述目标指令,其中已解码缓存中存储有预取并解码的多条指令;
在包含的情况下,从所述已解码缓存获取所述目标指令;
在不包含的情况下,从内存获取所述目标指令。
5.一种CPU控制器,包括:
指令提取单元,用于提取指令形成指令块,以送入CPU执行单元;其中,所述指令块包括单条跳转指令以及通过CPU指令预测得到的分支指令;
执行操作单元,用于使CPU执行单元执行所述跳转指令之前的指令和跳转指令,以及在确定出所述跳转指令的目标指令之前,拒绝所述分支指令进入执行阶段;
目标指令确定单元,用于根据CPU执行单元的执行结果,确定所述跳转指令的目标指令;
判断单元,用于判断所述目标指令与所述分支指令是否一致;
所述执行操作单元还用于在所述目标指令与所述分支指令一致的情况下,使所述分支指令进入执行阶段以执行所述分支指令。
6.根据权利要求5所述的CPU控制器,
所述执行操作单元还用于在确定出所述跳转指令的目标指令之前,使CPU执行单元执行所述分支指令的重命名和分配执行资源阶段,以使所述分支指令进入准备执行阶段。
7.根据权利要求5所述的控制器,所述执行操作单元还用于在所述目标指令与所述分支指令不一致的情况下,清除所述分支指令,并将所述目标指令送入CPU执行单元进行执行。
8.根据权利要求7所述的控制器,还包括:
目标指令获取单元,用于判断已解码缓存中是否包含所述目标指令,其中已解码缓存中存储有预取并解码的多条指令;以及,
在包含的情况下,从所述已解码缓存获取所述目标指令;
在不包含的情况下,从内存获取所述目标指令。
9.一种中央处理单元,包括权利要求5至8中任一项所述的控制器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010349676.7A CN111538535B (zh) | 2020-04-28 | 2020-04-28 | 一种cpu指令处理方法、控制器和中央处理单元 |
PCT/CN2021/087176 WO2021218633A1 (zh) | 2020-04-28 | 2021-04-14 | Cpu指令处理方法、控制器和中央处理单元 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010349676.7A CN111538535B (zh) | 2020-04-28 | 2020-04-28 | 一种cpu指令处理方法、控制器和中央处理单元 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111538535A CN111538535A (zh) | 2020-08-14 |
CN111538535B true CN111538535B (zh) | 2021-09-21 |
Family
ID=71977272
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010349676.7A Active CN111538535B (zh) | 2020-04-28 | 2020-04-28 | 一种cpu指令处理方法、控制器和中央处理单元 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111538535B (zh) |
WO (1) | WO2021218633A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111538535B (zh) * | 2020-04-28 | 2021-09-21 | 支付宝(杭州)信息技术有限公司 | 一种cpu指令处理方法、控制器和中央处理单元 |
CN113868899B (zh) * | 2021-12-03 | 2022-03-04 | 苏州浪潮智能科技有限公司 | 一种分支指令处理方法、系统、设备及计算机存储介质 |
CN117055961A (zh) * | 2023-08-15 | 2023-11-14 | 海光信息技术股份有限公司 | 用于多线程的调度方法及调度装置、处理器 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102360282A (zh) * | 2011-09-26 | 2012-02-22 | 杭州中天微系统有限公司 | 快速处置分支指令预测错误的流水线处理器装置 |
CN103984523A (zh) * | 2013-02-08 | 2014-08-13 | 上海芯豪微电子有限公司 | 多发射指令处理系统及方法 |
CN103984525A (zh) * | 2013-02-08 | 2014-08-13 | 上海芯豪微电子有限公司 | 指令处理系统及方法 |
CN104423929A (zh) * | 2013-08-21 | 2015-03-18 | 华为技术有限公司 | 一种分支预测方法及相关装置 |
CN104793921A (zh) * | 2015-04-29 | 2015-07-22 | 深圳芯邦科技股份有限公司 | 一种指令分支预测方法与系统 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5471593A (en) * | 1989-12-11 | 1995-11-28 | Branigin; Michael H. | Computer processor with an efficient means of executing many instructions simultaneously |
JP2004192021A (ja) * | 2002-12-06 | 2004-07-08 | Renesas Technology Corp | マイクロプロセッサ |
US7281120B2 (en) * | 2004-03-26 | 2007-10-09 | International Business Machines Corporation | Apparatus and method for decreasing the latency between an instruction cache and a pipeline processor |
US8245017B2 (en) * | 2009-02-12 | 2012-08-14 | Via Technologies, Inc. | Pipelined microprocessor with normal and fast conditional branch instructions |
CN102855121B (zh) * | 2011-06-29 | 2017-04-19 | 上海芯豪微电子有限公司 | 分支处理方法与系统 |
US9268569B2 (en) * | 2012-02-24 | 2016-02-23 | Apple Inc. | Branch misprediction behavior suppression on zero predicate branch mispredict |
CN103838550B (zh) * | 2012-11-26 | 2018-01-02 | 上海芯豪微电子有限公司 | 一种分支处理系统和方法 |
GB2514956B (en) * | 2013-01-21 | 2015-04-01 | Imagination Tech Ltd | Allocating resources to threads based on speculation metric |
CN107783785A (zh) * | 2016-08-24 | 2018-03-09 | 上海芯豪微电子有限公司 | 一种没有分支预测损失的分支处理方法与系统 |
US10691461B2 (en) * | 2017-12-22 | 2020-06-23 | Arm Limited | Data processing |
CN109101276B (zh) * | 2018-08-14 | 2020-05-05 | 阿里巴巴集团控股有限公司 | 在cpu中执行指令的方法 |
US20200065112A1 (en) * | 2018-08-22 | 2020-02-27 | Qualcomm Incorporated | Asymmetric speculative/nonspeculative conditional branching |
CN109634666B (zh) * | 2018-12-11 | 2022-11-15 | 华夏芯(北京)通用处理器技术有限公司 | 一种预取机制下融合btb的方法 |
CN111538535B (zh) * | 2020-04-28 | 2021-09-21 | 支付宝(杭州)信息技术有限公司 | 一种cpu指令处理方法、控制器和中央处理单元 |
-
2020
- 2020-04-28 CN CN202010349676.7A patent/CN111538535B/zh active Active
-
2021
- 2021-04-14 WO PCT/CN2021/087176 patent/WO2021218633A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102360282A (zh) * | 2011-09-26 | 2012-02-22 | 杭州中天微系统有限公司 | 快速处置分支指令预测错误的流水线处理器装置 |
CN103984523A (zh) * | 2013-02-08 | 2014-08-13 | 上海芯豪微电子有限公司 | 多发射指令处理系统及方法 |
CN103984525A (zh) * | 2013-02-08 | 2014-08-13 | 上海芯豪微电子有限公司 | 指令处理系统及方法 |
CN104423929A (zh) * | 2013-08-21 | 2015-03-18 | 华为技术有限公司 | 一种分支预测方法及相关装置 |
CN104793921A (zh) * | 2015-04-29 | 2015-07-22 | 深圳芯邦科技股份有限公司 | 一种指令分支预测方法与系统 |
Non-Patent Citations (1)
Title |
---|
Power issues related to branch prediction;D. Parikh .etc;《Proceedings Eighth International Symposium on High Performance Computer Architecture》;20020831;第1-12页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111538535A (zh) | 2020-08-14 |
WO2021218633A1 (zh) | 2021-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111538535B (zh) | 一种cpu指令处理方法、控制器和中央处理单元 | |
US9524164B2 (en) | Specialized memory disambiguation mechanisms for different memory read access types | |
EP0747816B1 (en) | Method and system for high performance multithread operation in a data processing system | |
US6260138B1 (en) | Method and apparatus for branch instruction processing in a processor | |
KR101594090B1 (ko) | 공유 메모리에 대한 액세스들의 동기화를 완화하기 위한 프로세서들, 방법들 및 시스템들 | |
JP5218998B2 (ja) | バッファを用いて高効率でロード処理を実行する方法およびプログラム | |
CN109101276B (zh) | 在cpu中执行指令的方法 | |
CN104731560B (zh) | 支持多线程处理的功能单元、处理器及其操作方法 | |
US8560813B2 (en) | Multithreaded processor with fast and slow paths pipeline issuing instructions of differing complexity of different instruction set and avoiding collision | |
CN114201219B (zh) | 指令调度方法、指令调度装置、处理器及存储介质 | |
EP2782004B1 (en) | Opportunistic multi-thread method and processor | |
US8707016B2 (en) | Thread partitioning in a multi-core environment | |
US10732976B2 (en) | Integrated circuit processor and method of operating the integrated circuit processor in different modes of differing thread counts | |
JP2008522277A (ja) | 優先度の付けられたタスク間の効率的な切り換え | |
CN114168202B (zh) | 指令调度方法、指令调度装置、处理器及存储介质 | |
US10884754B2 (en) | Infinite processor thread balancing | |
US11216278B2 (en) | Multi-thread processing | |
US8490098B2 (en) | Concomitance scheduling commensal threads in a multi-threading computer system | |
CN108027736B (zh) | 使用通过对物理寄存器预分配的乱序重命名的运行时代码并行化 | |
US7430737B2 (en) | Processor and method for supporting compiler directed multithreading management | |
KR20210025677A (ko) | 초기 리턴 예측을 갖는 분기 타겟 버퍼 | |
US20220075624A1 (en) | Alternate path for branch prediction redirect | |
Kodaka et al. | Design and implementation of scalable, transparent threads for multi-core media processor | |
US10275250B2 (en) | Defer buffer | |
JP2009505267A (ja) | 補助メモリを用いてメモリにアクセスする方法及びシステム |
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 |