执行机构间的切换控制的制作方法
【技术领域】
[0001]本发明涉及数据处理系统领域。更具体地,本发明涉及具有用于执行程序指令的多个执行机构的数据处理系统的领域,其中可以在这些执行机构中选择在给定时间执行程序指令流的有效执彳丁机构。
【背景技术】
[0002]已知提供了数据处理系统,比如利用英国剑桥的ARM有限公司设计的big.LITTLE处理器的技术的数据处理系统(big.LITTLE处理器具有多个执行机构,并且可以从这些执行机构中选择有效的执行机构)。这些处理器通常包括低性能且低功率的处理器内核、和高性能且高功率的处理器内核。当处理工作量不需要高性能时,处理被切换到由更节能的低功率处理器内核执行。相反,当处理工作量需要高性能时,工作量被切换到高性能处理器内核。在这类系统中执行切换的粒度很大,因为它会花费成千上万的处理周期来在小的低功率处理器内核和大的高性能处理器内核之间改变处理器状态。
[0003]尽管可以有利地使用上述系统,但是已经注意到在许多实际生活处理中加载了高功率对低功率的需求之间的变化,该变化出现在比以下系统中的处理更精细的粒度等级中,其中当该系统中的内核之一被关断时,整个处理器状态被转移到另一个处理器内核,然后另一个处理器内核启动。这就限制了可实现的优势。
【发明内容】
[0004]从一个方面看,本技术提供了一种用于数据处理的装置,包括:被配置为执行程序指令的第一执行电路;被配置为执行程序指令的第二执行电路;切换控制电路,被耦合到所述第一执行电路和所述第二执行电路,并且被配置为控制由所述第一执行电路执行程序指令的第一状态与由所述第二执行电路执行程序指令的第二状态之间的切换操作,所述切换操作包括从所述第一执行电路向所述第二执行电路转移至少一些架构状态数据,其中,所述切换控制电路被配置为:从所述第一执行电路接收取决于所述第一执行电路的当前状态的第一延迟指示信号;以及根据所述第一延迟指示信号控制从所述第一状态到所述第二状态的切换,所述第一延迟指示信号指示与从所述第一状态到所述第二状态的切换相关联的第一延迟。
[0005]本技术认识到,当在第一执行电路和第二执行电路之间执行切换以执行程序指令时,期望考虑执行机构之间的切换涉及的延迟。例如,如果涉及的延迟太长,则不期望发起执行机构之间的切换,因为等到切换达成时,处理需求很可能已经改变,因而进行切换的原因就不复存在了。
[0006]在一些实施例中,第一和第二执行电路的性能特性可以不同。
[0007]应该理解的是,不仅要考虑从第一执行电路向第二执行电路切换时的延迟,在一些实施例中还期望考虑反向切换时的延迟。此外,本技术不限于只采用两种形式的执行电路的实施例,并且在实践中可用于包括三种或更多种不同形式的执行电路的实施例。
[0008]不同形式的执行电路可以具有导致不同性能特性的异构微架构(heterogeneousmicroarchitecture),这些性能特性比如是某处理工作量的执行速度、能量消耗、泄露、热性能、或许多其它不同类型的性能特性。
[0009]应该理解的是,在切换时在第一执行电路和第二执行电路之间转移的架构状态数据可采用各种不同的形式。取决于特定的实施方式,不同的处理电路可自然地共享一些状态数据(比如,存储器管理单元数据、转译后备缓冲器数据、高速缓存存储器数据等)。然而,其它状态数据只能在处理电路的特定实例中被特殊保留并且需要转移(比如,寄存器文件电路的内容)。
[0010]寄存器文件电路包含存储在任意给定时间由执行电路的实例操控的数据值的寄存器,并且当处理操作从第一执行电路迀移至第二执行电路时,必须转移寄存器文件电路的当前内容,从而使得处理可以在新的有效处理电路中利用与以前有效的处理电路先前保存的相同的架构寄存器内容继续进行。
[0011 ] 在一些实施例中,第一延迟指示信号可以指示对第一寄存器文件电路内的各寄存器的未决写入操作。在这种设置中,切换操作可以被设置为在第一执行电路结束程序指令的执行之前,将来自第一寄存器文件电路中的没有未决写入操作的寄存器的寄存器状态数据转移至第二寄存器文件电路。因此,可以提前转移寄存器状态数据,从而使得其在先前有效的处理电路完全用尽之前在新的有效处理电路上可用。这种设置能够使新的有效处理电路更早地开始程序指令的执行,并且因此减少与切换操作相关联的延迟。
[0012]一些示例实施例可以用不同的方式来追踪这种未决写入操作(比如,使用来自寄存器分配表电路和/或执行电路内的重排序缓冲器电路或其它控制数据结构的数据)。
[0013]当在切换操作开始时最初处于未决状态的写入操作完成时,切换可以转移来自那些寄存器的寄存器状态(因为其现在可用)。
[0014]应该理解的是,在一些实施例中,第一执行电路可以包括存储寄存器分配数据的寄存器分配表电路,该寄存器分配数据指示寄存器文件电路中的哪个物理寄存器被映射至多个架构寄存器标识符中的哪个架构寄存器标识符。这种寄存器分配表通常被提供在乱序处理器中,在乱序处理器中存储数据值的物理寄存器和该数据值所属的架构寄存器标识符之间不存在固定映射。在具有寄存器分配表的这种实施例中,执行寄存器状态数据转移的硬件驱动操作可读取寄存器分配数据,并可利用这些数据确定哪些物理寄存器包含需要被转移且已经准备好被转移至新的处理电路的寄存器状态数据。在实践中,硬件驱动操作可很容易地实现对寄存器分配电路的使用,因为在切换操作之前新的程序指令被发送至第一执行电路,所以寄存器分配表电路将停止被访问,因此寄存器分配表电路的读取端口将可用于向从事寄存器数据转移的硬件驱动操作提供数据。
[0015]与切换操作相关联的延迟开销在一些实施例中可以被减少,在这些实施例中切换控制电路用于在第一执行电路结束执行程序指令之前,基于至少一些寄存器状态数据的部分转移而开始推测地执行程序指令。这种程序指令的推测执行可不包括程序指令的提交直到它们的前任指令被提交为止,但是它们的处理可以开始,因此它们的结果可以更早地得至IJ,从而使得与切换操作相关联的延迟被减小。
[0016]应该理解的是,取决于哪些架构数据已经准备好或者没有准备好被不同的执行机构所共享,为了开始推测执行所必需的至少一些架构状态数据可采用各种不同的形式。在一些实施例中,这种在推测执行可以开始之前需要被转移的至少一些架构状态数据可以包括来自没有未决写入操作的寄存器的状态数据,其中这些状态数据形成将被推测执行的程序指令的输入操作数。
[0017]在一些实施例中,切换控制电路可操作来识别程序指令序列内的潜在切换点,用于从第一执行电路有效的第一状态向第二执行电路有效的第二状态切换。
[0018]如果第一延迟指示信号指示超过阈值延迟的延迟,则为了执行切换,切换控制电路可从抑制第一状态向第二状态切换的意义来控制切换。
[0019]延迟指示信号可以用多种不同的方式指示延迟。延迟可直接或间接地被指示。在一些实施例中,延迟指示信号可以用第一执行电路中的重排序缓冲器电路的占用信号的形式指示延迟。这种重排序缓冲器电路用于存储未提交程序指令的数据,并且当进行切换时,这种未提交程序