CN105242963B - 执行机构间的切换控制 - Google Patents
执行机构间的切换控制 Download PDFInfo
- Publication number
- CN105242963B CN105242963B CN201510357874.7A CN201510357874A CN105242963B CN 105242963 B CN105242963 B CN 105242963B CN 201510357874 A CN201510357874 A CN 201510357874A CN 105242963 B CN105242963 B CN 105242963B
- Authority
- CN
- China
- Prior art keywords
- execution
- circuitry
- state
- switching
- circuit
- 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.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 claims abstract description 42
- 238000012546 transfer Methods 0.000 claims abstract description 23
- 238000000034 method Methods 0.000 claims description 15
- 230000001419 dependent effect Effects 0.000 claims description 7
- 238000013519 translation Methods 0.000 claims description 5
- 230000008859 change Effects 0.000 claims description 4
- 230000007246 mechanism Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 5
- 230000001934 delay Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000717 retained effect 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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3293—Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
- G06F1/3228—Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/329—Power saving characterised by the action undertaken by task scheduling
-
- 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
-
- 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/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
-
- 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)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本公开涉及执行机构间的切换控制。一种数据处理装置2包括诸如乱序处理电路的第一执行机构4和诸如有序处理电路的第二执行机构6。切换控制电路24控制第一执行电路4和第二执行电路6之间的哪个在给定时间有效的切换。指示与将被执行的候选切换操作相关联的延迟的延迟指示信号被提供至切换控制电路24并且被用于控制切换操作。切换操作的控制可加速切换操作、阻止切换操作、提前执行架构状态数据转移、或其它可能性。
Description
技术领域
本发明涉及数据处理系统领域。更具体地,本发明涉及具有用于执行程序指令的多个执行机构的数据处理系统的领域,其中可以在这些执行机构中选择在给定时间执行程序指令流的有效执行机构。
背景技术
已知提供了数据处理系统,比如利用英国剑桥的ARM有限公司设计的big.LITTLE处理器的技术的数据处理系统(big.LITTLE处理器具有多个执行机构,并且可以从这些执行机构中选择有效的执行机构)。这些处理器通常包括低性能且低功率的处理器内核、和高性能且高功率的处理器内核。当处理工作量不需要高性能时,处理被切换到由更节能的低功率处理器内核执行。相反,当处理工作量需要高性能时,工作量被切换到高性能处理器内核。在这类系统中执行切换的粒度很大,因为它会花费成千上万的处理周期来在小的低功率处理器内核和大的高性能处理器内核之间改变处理器状态。
尽管可以有利地使用上述系统,但是已经注意到在许多实际生活处理中加载了高功率对低功率的需求之间的变化,该变化出现在比以下系统中的处理更精细的粒度等级中,其中当该系统中的内核之一被关断时,整个处理器状态被转移到另一个处理器内核,然后另一个处理器内核启动。这就限制了可实现的优势。
发明内容
从一个方面看,本技术提供了一种用于数据处理的装置,包括:被配置为执行程序指令的第一执行电路;被配置为执行程序指令的第二执行电路;切换控制电路,被耦合到所述第一执行电路和所述第二执行电路,并且被配置为控制由所述第一执行电路执行程序指令的第一状态与由所述第二执行电路执行程序指令的第二状态之间的切换操作,所述切换操作包括从所述第一执行电路向所述第二执行电路转移至少一些架构状态数据,其中,所述切换控制电路被配置为:从所述第一执行电路接收取决于所述第一执行电路的当前状态的第一延迟指示信号;以及根据所述第一延迟指示信号控制从所述第一状态到所述第二状态的切换,所述第一延迟指示信号指示与从所述第一状态到所述第二状态的切换相关联的第一延迟。
本技术认识到,当在第一执行电路和第二执行电路之间执行切换以执行程序指令时,期望考虑执行机构之间的切换涉及的延迟。例如,如果涉及的延迟太长,则不期望发起执行机构之间的切换,因为等到切换达成时,处理需求很可能已经改变,因而进行切换的原因就不复存在了。
在一些实施例中,第一和第二执行电路的性能特性可以不同。
应该理解的是,不仅要考虑从第一执行电路向第二执行电路切换时的延迟,在一些实施例中还期望考虑反向切换时的延迟。此外,本技术不限于只采用两种形式的执行电路的实施例,并且在实践中可用于包括三种或更多种不同形式的执行电路的实施例。
不同形式的执行电路可以具有导致不同性能特性的异构微架构(heterogeneousmicroarchitecture),这些性能特性比如是某处理工作量的执行速度、能量消耗、泄露、热性能、或许多其它不同类型的性能特性。
应该理解的是,在切换时在第一执行电路和第二执行电路之间转移的架构状态数据可采用各种不同的形式。取决于特定的实施方式,不同的处理电路可自然地共享一些状态数据(比如,存储器管理单元数据、转译后备缓冲器数据、高速缓存存储器数据等)。然而,其它状态数据只能在处理电路的特定实例中被特殊保留并且需要转移(比如,寄存器文件电路的内容)。
寄存器文件电路包含存储在任意给定时间由执行电路的实例操控的数据值的寄存器,并且当处理操作从第一执行电路迁移至第二执行电路时,必须转移寄存器文件电路的当前内容,从而使得处理可以在新的有效处理电路中利用与以前有效的处理电路先前保存的相同的架构寄存器内容继续进行。
在一些实施例中,第一延迟指示信号可以指示对第一寄存器文件电路内的各寄存器的未决写入操作。在这种设置中,切换操作可以被设置为在第一执行电路结束程序指令的执行之前,将来自第一寄存器文件电路中的没有未决写入操作的寄存器的寄存器状态数据转移至第二寄存器文件电路。因此,可以提前转移寄存器状态数据,从而使得其在先前有效的处理电路完全用尽之前在新的有效处理电路上可用。这种设置能够使新的有效处理电路更早地开始程序指令的执行,并且因此减少与切换操作相关联的延迟。
一些示例实施例可以用不同的方式来追踪这种未决写入操作(比如,使用来自寄存器分配表电路和/或执行电路内的重排序缓冲器电路或其它控制数据结构的数据)。
当在切换操作开始时最初处于未决状态的写入操作完成时,切换可以转移来自那些寄存器的寄存器状态(因为其现在可用)。
应该理解的是,在一些实施例中,第一执行电路可以包括存储寄存器分配数据的寄存器分配表电路,该寄存器分配数据指示寄存器文件电路中的哪个物理寄存器被映射至多个架构寄存器标识符中的哪个架构寄存器标识符。这种寄存器分配表通常被提供在乱序处理器中,在乱序处理器中存储数据值的物理寄存器和该数据值所属的架构寄存器标识符之间不存在固定映射。在具有寄存器分配表的这种实施例中,执行寄存器状态数据转移的硬件驱动操作可读取寄存器分配数据,并可利用这些数据确定哪些物理寄存器包含需要被转移且已经准备好被转移至新的处理电路的寄存器状态数据。在实践中,硬件驱动操作可很容易地实现对寄存器分配电路的使用,因为在切换操作之前新的程序指令被发送至第一执行电路,所以寄存器分配表电路将停止被访问,因此寄存器分配表电路的读取端口将可用于向从事寄存器数据转移的硬件驱动操作提供数据。
与切换操作相关联的延迟开销在一些实施例中可以被减少,在这些实施例中切换控制电路用于在第一执行电路结束执行程序指令之前,基于至少一些寄存器状态数据的部分转移而开始推测地执行程序指令。这种程序指令的推测执行可不包括程序指令的提交直到它们的前任指令被提交为止,但是它们的处理可以开始,因此它们的结果可以更早地得到,从而使得与切换操作相关联的延迟被减小。
应该理解的是,取决于哪些架构数据已经准备好或者没有准备好被不同的执行机构所共享,为了开始推测执行所必需的至少一些架构状态数据可采用各种不同的形式。在一些实施例中,这种在推测执行可以开始之前需要被转移的至少一些架构状态数据可以包括来自没有未决写入操作的寄存器的状态数据,其中这些状态数据形成将被推测执行的程序指令的输入操作数。
在一些实施例中,切换控制电路可操作来识别程序指令序列内的潜在切换点,用于从第一执行电路有效的第一状态向第二执行电路有效的第二状态切换。
如果第一延迟指示信号指示超过阈值延迟的延迟,则为了执行切换,切换控制电路可从抑制第一状态向第二状态切换的意义来控制切换。
延迟指示信号可以用多种不同的方式指示延迟。延迟可直接或间接地被指示。在一些实施例中,延迟指示信号可以用第一执行电路中的重排序缓冲器电路的占用信号的形式指示延迟。这种重排序缓冲器电路用于存储未提交程序指令的数据,并且当进行切换时,这种未提交程序指令的状态数据可能需要在切换可被安全进行之前被用尽并且被应用。因此,如果重排序缓冲器电路的占用过高,则指示与切换相关联的延迟也过高,因此不期望进行切换。
当切换在切换点处被执行时,在一些实施例中并且在一些情况下,可以通过用尽第一执行电路内的在切换点之前发送的任意指令的执行流水线并且停止发送切换点之后的指令来实现切换,其中切换点之后的指令被发送给代替的第二执行电路。执行流水线用尽所用的时间是影响与切换相关联的延迟的因素。
在一些其它实施例中,与上述实施例结合或是作为上述实施例的替代,第一延迟指示信号可包括完成时间信号,该完成时间信号指示切换点之前的尚未执行的任何指令是否是具有超过阈值量的完成时间的长延迟指令。如果存在这种长延迟指令,则可能期望通过以下处理在切换点前执行切换操作:取消在第一执行电路中已经发送的长延迟指令和任何后续指令的执行,然后开始由第二执行电路执行始于并包括长延迟指令的程序指令。这种技术认识到,提前切换比等待长延迟指令完成更加有利。
应该理解的是,长延迟指令可以采用各种不同的形式,然而,在一些实施例中,长延迟指令可以是导致第一执行电路使用的高速缓存存储器的至少最低级内的高速缓存缺失的加载指令。高速缓存缺失通常涉及长延迟存储器存取,并且在实践中,第二执行电路可以替代第一执行电路等待这个数据。此外,到第二执行电路执行切换时,对应于高速缓存缺失的数据很可能已经被返回,因此第二执行电路的等待时间会减少。
在一些实施例中,第一延迟指示信号可包括分支误预测信号,该分支误预测信号指示第一执行电路内的执行流水线清除(execution pipeline flush)之前的分支指令误预测。这种分支指令误预测是切换操作的良好候选,因为执行流水线内的后续程序指令将被清除,因此在切换可被执行前不需要等待它们被完成。
应该理解,第一执行电路和第二执行电路可根据特定的实施方式共享微架构的不同部分。在一些实施例中,第一执行电路和第二执行电路可共享如下各项中的一项或多项:指令获取电路、指令译码电路、高速缓存存储器电路、分支预测器电路、存储器管理电路、和/或转译后备缓冲器电路。上述电路的子集或上述所有电路可根据特定的实施方式被共享。
应该理解的是,如先前所讨论的,第二执行电路和第一执行电路具有不同的性能特性。性能变化的方式可以不同,例如,一个实例的执行电路可具有更好的浮点性能,而另一个可具有更好的整数性能。使用本技术的一个候选是,第二执行电路相比第一执行电路具有更低的功耗和更低的程序指令执行速率的情况。从高性能且更复杂的执行机构到低性能且不太复杂的执行机构的切换常常会涉及明显的延迟,因此在控制是否执行切换操作时考虑到这种延迟的本技术是有用的。
从另一个方面来看,本技术提供了一种用于数据处理的装置,包括:
用于执行程序指令的第一执行装置;用于执行程序指令的第二执行装置;切换控制装置,被耦合至所述第一执行装置和所述第二执行装置,用于控制由所述第一执行装置执行程序指令的第一状态与由所述第二执行装置执行程序指令的第二状态之间的切换操作,所述切换操作包括将至少一些架构状态数据从所述第一执行装置转移到所述第二执行装置,其中,所述切换控制装置进行操作以:从所述第一执行装置接收取决于所述第一执行装置的当前状态的第一延迟指示信号;以及根据所述第一延迟指示信号控制从所述第一状态到所述第二状态的切换,所述第一延迟指示信号指示与从所述第一状态到所述第二状态的切换相关联的第一延迟。
从另一个方面看,本技术提供了一种用于数据处理的方法,包括如下步骤:利用第一执行电路执行程序指令;利用第二执行电路执行程序指令;控制由所述第一执行电路执行程序指令的第一状态与由所述第二执行电路执行程序指令的第二状态之间的切换操作,所述切换操作包括将至少一些架构状态数据从所述第一执行电路转移到所述第二执行电路,其中,
所述控制包括:从所述第一执行电路接收取决于所述第一执行电路的当前状态的第一延迟指示信号;以及根据所述第一延迟指示信号控制从所述第一状态到所述第二状态的切换,所述第一延迟指示信号指示与所述第一状态到所述第二状态的切换相关联的第一延迟。
通过结合附图阅读对示例实施例的以下详细说明,本发明的以上及其它对象、特征、和优点将更加显而易见。
附图说明
图1示意性地示出了包括第一执行电路和第二执行电路的用于数据处理的装置;
图2是示意性地示出寄存器转移控制的流程图;
图3是示意性地示出推测指令执行的流程图;以及
图4是示意性地示出基于延迟的切换控制的流程图。
具体实施方式
图1示意性地示出了可形成在集成电路上的用于数据处理的装置2(例如,作为系统芯片集成电路的部分)。装置2包括第一执行电路4和第二执行电路6。第一执行电路包括多个执行流水线(比如,算法流水线、加载/存储流水线、SIMD流水线、浮点流水线等),这些执行流水线被配置为支持乱序程序执行。为了支持这种乱序程序执行,第一执行电路包括存储与尚未提交的程序指令相关联的状态数据的重排序缓冲器电路5。第一执行电路4还包括存储寄存器分配数据的寄存器分配表电路7,该寄存器分配数据表示物理寄存器和架构寄存器之间的映射,如乱序处理器的处理器设计领域的人员所熟知的。
将明白的是,第一执行电路4通常在将被执行的每个周期的指令数目方面产生高性能,但通常具有消耗更高功率等级的缺点。
第二执行电路6包括能够支持有序执行的诸如,算法流水线、加载/存储流水线、SIMD流水线、矢量流水线、浮点流水线之类的流水线。该第二执行电路6将在每个周期执行的指令数目方面给出较低性能,但在执行给定指令序列时通常会比第一执行电路4消耗更少的能量。因此,第二执行电路6在执行程序指令序列时具有比第一执行电路4更低的能耗,但第二执行电路6将比第一执行电路4花费更多时间去执行该程序指令序列。因此,第一执行电路4提供了较高性能和较高功率的执行机构,而第二执行电路6代表较低性能和较低功率的执行机构。
应该理解,第一执行电路4和第二执行电路6的微架构不同并且是异构的。第一执行电路4和第二执行电路6之间的不同不仅限于与指令执行速率和消耗的功率等级相关联的不同。在本技术的一些示例实施例中,第一执行机构可很好地适用于执行特定类型的程序指令代码(例如,包含许多浮点程序指令的程序指令代码),而第二执行电路可较好地适用于执行包含许多SIMD程序指令的程序指令。执行机构的其它特殊作用/重点也是可能的。
将看到,图1的装置还包括指令高速缓存8、指令获取电路10、指令译码电路12的两个实例、指令发送电路14的两个实例、数据高速缓存16、分支预测器电路18、转译后备缓冲器电路20、和存储器管理单元电路22。指令高速缓存8、获取电路10、数据高速缓存16、分支预测器电路18、转译后备缓冲器电路20、和存储器管理单元电路22由第一执行电路4和第二执行电路6共享。通过指令获取电路10从指令高速缓存存储器6获取的程序指令被指令译码器12中的当前有效的一个指令译码器译码,然后被置于指令发送电路14中的当前有效的一个指令发送电路中的发送队列内。有效的指令发送电路14将这些指令发送至第一执行电路4或第二执行电路6中的相关联的一个有效的执行电路。当第一执行电路4有效时,是装置2的第一状态。当第二执行电路6有效时,是装置2的第二状态。被耦合至指令发送电路14的两个实例和指令译码电路12的两个实例的切换控制电路24控制它们的有效性的选择,从而使得第一执行电路4或第二执行电路6有效。在实践中,无效的执行电路可以被用时钟进行门控(clock gated)。当对第一执行电路4或第二执行电路6中的哪一个有效做出改变时,用于在不同的执行电路实例之间转移至少一些架构状态数据的切换操作被执行。在所示出的示例中,第一执行电路4包括第一寄存器文件电路26,第二执行电路6包括第二寄存器文件电路28。第一寄存器文件电路26和第二寄存器文件电路28中的寄存器用于存储寄存器值,这些寄存器值是系统在任意给定时间的部分架构状态。因此,当执行切换操作时,寄存器数据需要被从最初有效的执行机构转移至最新有效的执行机构。寄存器转移硬件30负责执行作为硬件驱动操作(不需要软件介入)的寄存器数据的转移。当有效的执行电路发生改变时,保持在数据处理装置的所有共享元件内的架构状态数据不需要被移动/切换,并且保持在寄存器文件电路26、28中的相对少量的状态数据可以被利用寄存器转移硬件电路30以相对较短的时间或相对较少的能量损耗(与big.LITTLE型系统相比)转移。然而,存在与转移相关联的有限延迟,并且考虑这个延迟的测量是有益的。
图2是示意性地示出可由寄存器转移硬件电路30执行的寄存器转移控制的流程图。在步骤40,处理等待,直到执行电路需要切换为止。然后,步骤42确定寄存器文件中的将要进行迁移的寄存器是不存在未决写入操作的寄存器。该确定可以(例如)通过读取脏位进行,该脏位可以在将被写入寄存器的指令被发送时被设置,并且在执行写入时被清理。替代地,可以利用寄存器分配表数据和来自重排序缓冲器的数据来跟踪寄存器是否等待写入的状态。
在步骤44,执行来自那些不等待写入的寄存器的寄存器状态数据的转移。然后,步骤46确定是否有更多数据尚未被转移的寄存器。如果有更多这种寄存器,则处理返回到步骤42,否则寄存器转移完成。
从图2可以明显看出,寄存器转移硬件电路30可操作以在从其迁移的执行电路的处理继续进行的同时转移寄存器状态数据。这使得寄存器状态数据在目标执行电路内更早可用,因此为目标执行电路更早地开始处理提供了可能。有关哪个寄存器可以被更早地转移的信息构成了延迟指示信息,该延迟指示信息可被用于控制操作切换,从而使得与切换操作相关联的整体延迟被减少。
图3是示意性地示出可以在切换操作被全部完成之前在目标执行机构内开启的推测指令执行的流程图。在步骤48,做出关于是否有指令准备好被发送至目标执行电路的判定。然后,步骤50判定该指令的输入操作数是否可用。如果输入操作数是已经准备好被转移的寄存器状态数据,那么它们可用,因而步骤52可以向目标执行机构发送该指令。然后,步骤54执行被发送的指令,处理随后在步骤56处等待直到可以清楚/安全地提交指令执行的结果为止。提交执行结果的能力取决于(例如)所有被正确完成的处理指令(例如,没有出现异常)。
图4示意性地示出了表示基于当前延迟的切换控制的流程图,其中该当前延迟将由从第一执行机构到第二执行机构的切换引起。应该理解的是,可以提供类似的控制用于反方向的切换,或者用于在提供三种或更多种执行机构的系统中的更多不同的执行机构之间的切换。通常来讲,相比从具有较低微架构复杂性的执行机构中切换出来,从具有较高微架构复杂性的执行机构中切换出来将带来更大的延迟。
在步骤60,处理等待直到切换控制电路24内的预测电路32指示从第一执行机构4到第二执行机构6的切换操作应该在程序流中的切换点处被执行为止。当识别出这样的切换点时,处理进行到步骤62,步骤62确定第一执行电路4中是否有任何当前未决(例如,部分完成)的长延迟指令。如果有这种未决的长延迟指令(例如,会在高速缓存层级内的至少最低级导致高速缓存缺失、因此在提交阶段等待数据被返回的加载指令),则处理进行至步骤64。未决的长延迟指令的其他示例(例如,会触发异常的不支持的向量指令)也是可能的。
在步骤64,第一执行电路4中的长延迟指令、以及任何后续的未决指令被取消。在步骤66,长延迟指令、以及在步骤64中被取消的后续指令被发送至第二执行电路6。然后,处理进行至步骤68,步骤68继续由第二执行电路6执行程序指令流。
如果在步骤62判定没有识别出长延迟指令,则处理进行至步骤70,步骤70确定识别出的切换点是否是对应于分支误预测的切换点。分支误预测点具有以下优势:误预测的分支后的程序指令必定会被从第一执行电路清除且不需要利用相关延迟被用尽。因此,如果切换点不对应于分支误预测,则处理进行至步骤72,在步骤72中停止向第一执行电路发送切换点后的指令。然后,步骤74由第一执行电路完成切换点之前的任意未决指令的执行。如果切换点是步骤70识别出的分支误预测,则在前的指令很可能已经被完成,因此在切换点前没有需要被清除的未决指令。然后处理进行至步骤68,通过向第二执行电路6发送指令继续执行程序指令流。
如果步骤70确定切换点不是分支误预测,则处理进行至步骤72,步骤72对重排序缓冲器电路5的占用等级进行判定。如果这个占用等级大于阈值量,则处理进行至步骤78,步骤78忽略切换并将切换已经被忽略的消息返回至切换控制电路24。这向切换控制电路24通知,系统继续利用第一执行电路4进行操作且不需要执行包括架构状态数据的转移在内的切换操作。如果在步骤76判定重排序缓冲器的内容小于阈值量,则与切换相关联的延迟是可接受的,处理进行至步骤72。
从上述内容将明显看出,延迟指示信号可以采用各种不同形式。切换控制电路24对这些延迟指示信号进行响应,以通过这些延迟指示信号所指示的方式来变更切换操作。该变更可以采取以下形式:阻止切换操作被执行、加速切换操作、启动预测处理或提早寄存器转移、以及其他可能。
尽管本发明的示范性实施例在本文中已经参考附图进行了详细描述,但应该理解的是,本发明不限于这些确切的实施例,在不超出附加权利要求书中确定的本发明的范围和精神的条件下,本领域普通技术人员可在其中实现多种变化以及调整。
Claims (21)
1.一种用于数据处理的装置,包括:
被配置为执行程序指令的第一执行电路;
被配置为执行程序指令的第二执行电路;
切换控制电路,被耦合到所述第一执行电路和所述第二执行电路,并且被配置为控制第一状态与第二状态之间的切换操作,在所述第一状态中程序指令是由所述第一执行电路执行的,并且在所述第二状态中程序指令是由所述第二执行电路执行的,所述切换操作包括从所述第一执行电路向所述第二执行电路转移至少一些架构状态数据,其中
所述切换控制电路被配置为:
从所述第一执行电路接收取决于所述第一执行电路的当前状态的第一延迟指示信号;以及
根据所述第一延迟指示信号控制从所述第一状态到所述第二状态的切换,所述第一延迟指示信号指示与从所述第一状态到所述第二状态的切换相关联的第一延迟。
2.根据权利要求1所述的装置,其中,所述第二执行电路具有不同于所述第一执行电路的性能特性。
3.根据权利要求1所述的装置,其中,所述切换控制电路被配置为:
从所述第二执行电路接收取决于所述第二执行电路的当前状态的第二延迟指示信号;以及
根据所述第二延迟指示信号控制从所述第二状态到所述第一状态的切换,所述第二延迟指示信号指示与从所述第二状态到所述第一状态的切换相关联的第二延迟。
4.根据权利要求1所述的装置,其中,所述第一执行电路包括第一寄存器文件电路,所述第二执行电路包括第二寄存器文件电路,并且其中,所述切换控制电路被配置为当存在所述第一状态和所述第二状态之间的改变时,作为硬件驱动操作在所述第一寄存器文件电路和所述第二寄存器文件电路之间转移寄存器状态数据。
5.根据权利要求4所述的装置,其中,所述第一延迟指示信号指示对所述第一寄存器文件电路内的各寄存器的未决写入操作,并且其中,在所述第一执行电路结束程序指令的执行之前,所述切换操作将来自所述第一寄存器文件电路中的没有未决写入操作的寄存器的寄存器状态数据转移至所述第二寄存器文件电路。
6.根据权利要求5所述的装置,其中,所述第一寄存器文件电路被配置为追踪所述第一寄存器文件电路中的以下寄存器:所述第一执行电路对该寄存器执行的写入操作处于未决状态。
7.根据权利要求6所述的装置,其中,所述第一寄存器文件电路中的脏位用于追踪以下寄存器:所述第一执行电路对该寄存器执行的写入操作处于未决状态。
8.根据权利要求5所述的装置,其中,在所述写入操作被执行后,所述切换操作转移来自写入操作最初处于未决状态的寄存器的寄存器状态。
9.根据权利要求4所述的装置,其中,所述第一执行电路包括寄存器分配表电路,所述寄存器分配表电路被配置为存储寄存器分配数据,所述寄存器分配数据指示所述第一寄存器文件电路中的多个物理寄存器中的哪个物理寄存器被映射至多个架构寄存器标识符中的哪个架构寄存器标识符,所述硬件驱动操作从所述寄存器分配表电路读取所述寄存器分配数据,并且在所述切换操作期间由于没有新的程序指令被调度至所述第一执行电路,所述寄存器分配表电路停止被访问。
10.根据权利要求1所述的装置,其中,所述切换控制电路被配置为控制所述第二执行电路在所述第一执行电路结束执行程序指令之前,基于所述至少一些架构状态数据的部分转移而开始推测地执行程序指令。
11.根据权利要求10所述的装置,其中,所述至少一些架构状态数据包括来自其中没有未决写入操作的寄存器的状态数据。
12.根据权利要求1所述的装置,其中,所述切换控制电路被配置为识别程序指令序列中的潜在切换点,用于从所述第一状态向所述第二状态切换。
13.根据权利要求11所述的装置,其中,所述切换控制电路被配置为在所述第一延迟指示信号指示大于阈值延迟的延迟的情况下,抑制从所述第一状态到所述第二状态的所述切换。
14.根据权利要求13所述的装置,其中,所述第一执行电路包括重排序缓冲器电路,所述重排序缓冲器电路被配置为存储未提交程序指令的状态数据,所述第一延迟指示信号包括指示所述重排序缓冲器电路的占用的信号,并且当所述重排序缓冲器的占用大于阈值量时,出现延迟大于所述阈值延迟的指示。
15.根据权利要求12所述的装置,其中,所述第一执行电路包括第一执行流水线电路,所述第一执行流水线电路被配置为执行多个程序指令的流水线式的执行,并且所述切换操作通常通过停止向所述第一执行流水线电路发送所述切换点之后的指令并且在所述第一执行流水线电路内完成所述切换点之前的程序指令的执行来用尽所述第一执行流水线电路。
16.根据权利要求15所述的装置,其中,所述第一延迟指示信号包括完成时间信号,所述完成时间信号指示所述切换点之前的尚未由所述第一执行流水线电路完成执行的至少一个程序指令是否是具有超出阈值量的完成时间的长延迟指令,并且如果所述长延迟指令尚未完成执行,则所述切换操作取消所述长延迟指令和后续的未决指令在所述第一执行流水线电路中的执行,并且开始由所述第二执行电路执行始于并包括所述长延迟指令的程序指令。
17.根据权利要求16所述的装置,包括:由所述第一执行电路和所述第二执行电路共享的高速缓存存储器和主存储器,并且所述长延迟指令是导致所述高速缓存存储器的至少最低级内的高速缓存缺失的加载指令。
18.根据权利要求1所述的装置,其中,所述第一延迟指示信号包括分支误预测信号,所述分支误预测信号指示由所述第一执行电路执行的执行流水线清除之前的分支指令误预测,并且所述切换操作在对应于所述分支指令误预测的程序指令执行内的切换点处被执行。
19.根据权利要求1所述的装置,其中,所述第一执行电路和所述第二执行电路共享如下各项中的一项或多项:指令获取电路、高速缓存存储器电路、分支预测器电路、存储器管理电路、和转译后备缓冲器电路。
20.一种用于数据处理的装置,包括:
用于执行程序指令的第一执行装置;
用于执行程序指令的第二执行装置;
切换控制装置,被耦合至所述第一执行装置和所述第二执行装置,用于控制第一状态与第二状态之间的切换操作,在所述第一状态中程序指令是由所述第一执行装置执行的,并且在所述第二状态中程序指令是由所述第二执行装置执行的,所述切换操作包括从所述第一执行装置向所述第二执行装置转移至少一些架构状态数据,其中
所述切换控制装置进行操作以:
从所述第一执行装置接收取决于所述第一执行装置的当前状态的第一延迟指示信号;以及
根据所述第一延迟指示信号控制从所述第一状态到所述第二状态的切换,所述第一延迟指示信号指示与从所述第一状态到所述第二状态的切换相关联的第一延迟。
21.一种用于数据处理的方法,包括如下步骤:
利用第一执行电路执行程序指令;
利用第二执行电路执行程序指令;
控制第一状态与第二状态之间的切换操作,在所述第一状态中程序指令是由所述第一执行电路执行的,并且在所述第二状态中程序指令是由所述第二执行电路执行的,所述切换操作包括从所述第一执行电路向所述第二执行电路转移至少一些架构状态数据,其中
所述控制包括:
从所述第一执行电路接收取决于所述第一执行电路的当前状态的第一延迟指示信号;以及
根据所述第一延迟指示信号控制从所述第一状态到所述第二状态的切换,所述第一延迟指示信号指示与从所述第一状态到所述第二状态的切换相关联的第一延迟。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/323,040 | 2014-07-03 | ||
US14/323,040 US9870226B2 (en) | 2014-07-03 | 2014-07-03 | Control of switching between executed mechanisms |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105242963A CN105242963A (zh) | 2016-01-13 |
CN105242963B true CN105242963B (zh) | 2020-12-01 |
Family
ID=53506166
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510357874.7A Expired - Fee Related CN105242963B (zh) | 2014-07-03 | 2015-06-25 | 执行机构间的切换控制 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9870226B2 (zh) |
KR (1) | KR102329371B1 (zh) |
CN (1) | CN105242963B (zh) |
GB (1) | GB2527927B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2539040B (en) * | 2015-06-05 | 2021-08-25 | Advanced Risc Mach Ltd | Issue policy control |
GB2539038B (en) * | 2015-06-05 | 2020-12-23 | Advanced Risc Mach Ltd | Processing pipeline with first and second processing modes having different performance or energy consumption characteristics |
US9952871B2 (en) * | 2015-06-05 | 2018-04-24 | Arm Limited | Controlling execution of instructions for a processing pipeline having first out-of order execution circuitry and second execution circuitry |
US10628320B2 (en) | 2016-06-03 | 2020-04-21 | Synopsys, Inc. | Modulization of cache structure utilizing independent tag array and data array in microprocessor |
US10558463B2 (en) | 2016-06-03 | 2020-02-11 | Synopsys, Inc. | Communication between threads of multi-thread processor |
US10552158B2 (en) | 2016-08-18 | 2020-02-04 | Synopsys, Inc. | Reorder buffer scoreboard having multiple valid bits to indicate a location of data |
US10613859B2 (en) * | 2016-08-18 | 2020-04-07 | Synopsys, Inc. | Triple-pass execution using a retire queue having a functional unit to independently execute long latency instructions and dependent instructions |
US10558460B2 (en) * | 2016-12-14 | 2020-02-11 | Qualcomm Incorporated | General purpose register allocation in streaming processor |
CN107404568B (zh) * | 2017-06-07 | 2020-01-21 | 山东恒明信息科技有限公司 | 一种控制开关管理方法及移动终端 |
US20230342157A1 (en) * | 2021-01-11 | 2023-10-26 | Next Silicon Ltd | Optimizing reconfigurable hardware using data sampling |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101002169A (zh) * | 2004-05-19 | 2007-07-18 | Arc国际(英国)公司 | 微处理器架构 |
WO2009076324A2 (en) * | 2007-12-10 | 2009-06-18 | Strandera Corporation | Strand-based computing hardware and dynamically optimizing strandware for a high performance microprocessor system |
CN101763251A (zh) * | 2010-01-05 | 2010-06-30 | 浙江大学 | 多线程微处理器的指令译码缓冲装置 |
CN102782671A (zh) * | 2010-03-01 | 2012-11-14 | Arm有限公司 | 用于在第一和第二处理电路间切换工作量的数据处理装置和方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6317840B1 (en) | 1999-03-24 | 2001-11-13 | International Business Machines Corporation | Control of multiple equivalent functional units for power reduction |
US8645954B2 (en) | 2001-12-13 | 2014-02-04 | Intel Corporation | Computing system capable of reducing power consumption by distributing execution of instruction across multiple processors and method therefore |
US20040003215A1 (en) | 2002-06-28 | 2004-01-01 | Evgeni Krimer | Method and apparatus for executing low power validations for high confidence speculations |
US9063785B2 (en) | 2004-11-03 | 2015-06-23 | Intel Corporation | Temperature-based thread scheduling |
US20090150890A1 (en) * | 2007-12-10 | 2009-06-11 | Yourst Matt T | Strand-based computing hardware and dynamically optimizing strandware for a high performance microprocessor system |
US20080263324A1 (en) | 2006-08-10 | 2008-10-23 | Sehat Sutardja | Dynamic core switching |
US7962770B2 (en) | 2007-12-19 | 2011-06-14 | International Business Machines Corporation | Dynamic processor reconfiguration for low power without reducing performance based on workload execution characteristics |
US7841436B2 (en) * | 2008-01-21 | 2010-11-30 | Amigo Mobility International | Personal mobility vehicle |
US8140830B2 (en) | 2008-05-22 | 2012-03-20 | International Business Machines Corporation | Structural power reduction in multithreaded processor |
US7987075B2 (en) | 2008-06-30 | 2011-07-26 | Hitachi, Ltd | Apparatus and method to develop multi-core microcomputer-based systems |
US8533505B2 (en) | 2010-03-01 | 2013-09-10 | Arm Limited | Data processing apparatus and method for transferring workload between source and destination processing circuitry |
US8751833B2 (en) | 2010-04-30 | 2014-06-10 | Arm Limited | Data processing system |
US8683243B2 (en) | 2011-03-11 | 2014-03-25 | Intel Corporation | Dynamic core selection for heterogeneous multi-core systems |
US9098309B2 (en) | 2011-09-23 | 2015-08-04 | Qualcomm Incorporated | Power consumption optimized translation of object code partitioned for hardware component based on identified operations |
WO2013162589A1 (en) * | 2012-04-27 | 2013-10-31 | Intel Corporation | Migrating tasks between asymmetric computing elements of a multi-core processor |
US9619284B2 (en) | 2012-10-04 | 2017-04-11 | Intel Corporation | Dynamically switching a workload between heterogeneous cores of a processor |
US9354884B2 (en) | 2013-03-13 | 2016-05-31 | International Business Machines Corporation | Processor with hybrid pipeline capable of operating in out-of-order and in-order modes |
-
2014
- 2014-07-03 US US14/323,040 patent/US9870226B2/en active Active
-
2015
- 2015-05-22 GB GB1508774.5A patent/GB2527927B/en active Active
- 2015-06-25 KR KR1020150090216A patent/KR102329371B1/ko active IP Right Grant
- 2015-06-25 CN CN201510357874.7A patent/CN105242963B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101002169A (zh) * | 2004-05-19 | 2007-07-18 | Arc国际(英国)公司 | 微处理器架构 |
WO2009076324A2 (en) * | 2007-12-10 | 2009-06-18 | Strandera Corporation | Strand-based computing hardware and dynamically optimizing strandware for a high performance microprocessor system |
CN101763251A (zh) * | 2010-01-05 | 2010-06-30 | 浙江大学 | 多线程微处理器的指令译码缓冲装置 |
CN102782671A (zh) * | 2010-03-01 | 2012-11-14 | Arm有限公司 | 用于在第一和第二处理电路间切换工作量的数据处理装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105242963A (zh) | 2016-01-13 |
GB2527927B (en) | 2017-12-20 |
US20160004534A1 (en) | 2016-01-07 |
GB201508774D0 (en) | 2015-07-01 |
GB2527927A (en) | 2016-01-06 |
KR20160004920A (ko) | 2016-01-13 |
KR102329371B1 (ko) | 2021-11-22 |
US9870226B2 (en) | 2018-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105242963B (zh) | 执行机构间的切换控制 | |
JP4856100B2 (ja) | 非アラインドメモリアクセス予測 | |
US7809933B2 (en) | System and method for optimizing branch logic for handling hard to predict indirect branches | |
TWI552070B (zh) | 於確認時執行狀態更新指令、裝置、方法與系統 | |
JP4642305B2 (ja) | マルチスレッド・プロセッサ内の複数のスレッドに入り、出る方法と装置 | |
US5706491A (en) | Branch processing unit with a return stack including repair using pointers from different pipe stages | |
JP2008530714A5 (zh) | ||
JP3716414B2 (ja) | 同時マルチスレッド化プロセッサ | |
CN107992331B (zh) | 处理器及操作处理器的方法 | |
CN107710152B (zh) | 具有不同的性能或能量消耗特征的第一处理模式和第二处理模式的处理流水线 | |
JP2004326748A (ja) | 例外条件を解消するために同時マルチスレッド・プロセッサでディスパッチ・フラッシュを使用する方法 | |
CN110402434B (zh) | 缓存未命中线程平衡 | |
KR20000005685A (ko) | 분산인스트럭션완료로직 | |
US20230401066A1 (en) | Dynamically foldable and unfoldable instruction fetch pipeline | |
US20050138333A1 (en) | Thread switching mechanism | |
US5913050A (en) | Method and apparatus for providing address-size backward compatibility in a processor using segmented memory | |
US12008375B2 (en) | Branch target buffer that stores predicted set index and predicted way number of instruction cache | |
US20230195456A1 (en) | System, apparatus and method for throttling fusion of micro-operations in a processor | |
US20230401065A1 (en) | Branch target buffer that stores predicted set index and predicted way number of instruction cache | |
US20230401063A1 (en) | Folded instruction fetch pipeline | |
CN116324715A (zh) | 用于分支预测重定向的备用路径 | |
JP2006024231A (ja) | 分岐履歴情報の書き込み制御装置及びその方法 | |
WO2013101194A1 (en) | Selective control for commit lines for shadowing data in storage elements |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20201201 |
|
CF01 | Termination of patent right due to non-payment of annual fee |