用于基于指令类型调整最大时钟频率的处理器、方法和系统与流程

文档序号:15575220发布日期:2018-09-29 05:22阅读:331来源:国知局

本文中所描述的实施例总体上涉及处理器。具体而言,本文中所描述的实施例总体上涉及调整此类处理器中的时钟频率。



背景技术:

处理器和其他集成电路通常由时钟信号驱动。时钟信号由频率来表征。时钟信号的频率可随时间变化。例如,可在需要更好的性能时提高频率,或者可降低频率以节省功率。

附图说明

通过参考以下描述以及用于说明多个实施例的附图可最佳地理解本发明。在附图中:

图1是可在其中实现本发明的实施例的计算机系统的实施例的框图。

图2是图示出不同类型的指令可具有不同的故障点时钟频率并且对照用于针对此类指令控制最大时钟频率的两种不同的可能方法的图。

图3是包括核以及与该核耦合的功率控制单元的装置的实施例的框图。

图4是功率控制单元和具有各种时钟频率控制的示例实施例的一个或多个控制寄存器的示例实施例的框图。

图5是控制处理器中的最大时钟频率的方法的第一实施例的流程框图。

图6是控制处理器中的最大时钟频率的方法的第二实施例的流程框图。

图7是图示出工作负荷的时间片的一个特定示例的图,该图示出最大时钟频率可如何随时间改变。

图8是可操作以允许软件访问一个或多个控制寄存器中的依赖于指令类型的最大时钟频率控制的处理器的实施例的框图。

图9a是图示出有序流水线的实施例以及寄存器重命名的乱序发布/执行流水线的实施例的框图。

图9b是处理器核的实施例的框图,该处理器核包括耦合到执行引擎单元的前端单元,并且前端单元和执行引擎单元两者都耦合到存储器单元。

图10a是单个处理器核以及它与管芯上互连网络的连接及其第二级(l2)高速缓存的本地子集的实施例的框图。

图10b是图10a的处理器核的部分的展开图的实施例的框图。

图11是可具有多于一个的核、可具有集成存储器控制器并且可具有集成图形器件的处理器的实施例的框图。

图12是计算机架构的第一实施例的框图。

图13是计算机架构的第二实施例的框图。

图14是计算机架构的第三实施例的框图。

图15是计算机架构的第四实施例的框图。

图16是根据本发明的实施例的使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。

具体实施方式

本文中部分地公开了用于基于指令类型调整最大时钟频率的集成电路、基于指令类型调整最大时钟频率的方法、以及包含用于基于指令类型调整最大时钟频率的一个或多个集成电路的系统。本文中还部分地公开了用于允许基于指令类型的最大时钟频率的软件配置的集成电路、基于指令类型的最大时钟频率的软件配置的方法、以及包含用于允许基于指令类型的最大时钟频率的软件配置的一个或多个集成电路的系统。在以下描述中,阐述多个特定细节(例如,特定的处理器配置、微架构细节、操作序列等)。然而,可在没有这些特定细节的情况下实施实施例。在其他实例中,未详细示出公知的电路、结构和技术,以避免使对本说明书的理解模糊。

图1是可以在其中实现本发明的各实施例的计算机系统100的实施例的框图。在各实施例中,计算机系统可表示台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络设备(例如,路由器、交换机等)、媒体播放器、智能电视机、上网机、机顶盒、视频游戏控制器或其他类型的电子设备。

计算机系统包括处理器101和存储器102。存储器可包括一个或多个不同的存储器设备和/或一个或多个不同类型的存储器设备(例如,动态随机存取存储器(dram)、闪存、只读存储器(rom)、持久存储器等等或者其各种组合)。处理器与存储器通过常规的耦合机制103(例如,通过一个或多个总线、中枢、存储器控制器、芯片组组件等等)彼此耦合,或以其他方式彼此通信。

软件104可存储在存储器102中。该软件可包括例如,基本输入/输出系统(bios)105、一个或多个操作系统(os)106以及一个或多个用户级应用107。在操作期间,可将软件的部分(例如,指令序列)加载到处理器中,并且可由处理器执行。软件的指令可包括处理器的指令集中的指令。该指令集中的指令可表示宏指令、机器语言指令、机器代码指令、汇编语言指令或处理器原生地能够执行的其他相对低级指令,而不是更高级语言指令。

再次参考图1,可将指令集中的指令110取出、加载或以其他方式接收到处理器中。该指令集可包括各种不同类型的指令(例如,用于执行各种不同类型的操作)。如所示,例如,这些指令可包括各种不同类型的通用算数和/或逻辑指令111(例如,加法、乘法、乘加、移位、逻辑与、异或等)。这些指令还可包括各种不同类型的紧缩数据算术和/或逻辑指令112、113(例如,紧缩数据加法、紧缩数据乘法、紧缩数据乘加、紧缩数据移位、紧缩数据逻辑与、紧缩数据异或、紧缩数据重布置等)。本领域中有时也将此类紧缩数据指令称为向量指令和/或单指令多数据(simd)指令。紧缩数据指令、向量指令或simd指令可同时或并行地对多个数据元素或对多对数据元素进行操作。处理器可具有并行执行硬件,其响应于紧缩数据指令以同时或并行地执行多个操作。可在一个寄存器或存储器位置内将多个数据元素紧缩为紧缩数据或向量数据。在紧缩数据中,可在逻辑上将寄存器或其他存储位置的多个位划分为数据元素的序列。例如,128位宽的紧缩数据寄存器可具有四个32位数据元素、512位宽的紧缩数据寄存器可具有十六个32位数据元素等。

如所示,通常可存在具有不同宽度的紧缩数据指令,例如,相对较窄的紧缩数据指令112(例如,其可对具有给定位宽的操作数进行操作)以及相对较宽的紧缩数据指令113(例如,其可对具有大于给定位宽的宽度的操作数进行操作)。如本文中所使用,术语“较窄”和“较宽”是相对术语(不是绝对术语)并且是彼此相对的(即,较窄的宽度比较宽的宽度更窄)。作为示例,某些64和ia-32架构兼容的处理器具有mmxtm指令、流simd扩展(sse)指令以及高级向量扩展(avx)指令。传统mmxtm指令被设计成用于对64位紧缩数据操作数或寄存器进行操作。sse指令包括原始sse指令以及随时间发布的进一步的扩展,这些扩展被称为sse2、sse3、sse4、sse4.1和sse4.2指令。原始sse指令和某些其他较旧的sse指令主要设计成用于对128位紧缩数据操作数或寄存器进行操作,而某些较新的sse指令设计成用于对256位紧缩数据操作数或寄存器进行操作。avx指令包括avx指令、avx2指令以及avx-512指令。有时,将avx-512指令称为avx-512指令。avx和avx2指令能够对256位紧缩数据操作数或寄存器进行操作。avx-512指令能够对512位紧缩数据操作数或寄存器进行操作。各种其他指令集架构类似地具有较窄的紧缩数据指令和较宽的紧缩数据指令。

再次参考图1,指令110还可包括一个或多个不同类型的密码指令114。例如,可存在用于加速加密算法的一个或多个指令(例如,一个或多个高级加密标准(aes)加速指令)。作为另一示例,可存在用于加速散列算法的一个或多个指令(例如,一个或多个sha-1(安全散列算法1)加速指令和/或一个或多个sha-2(安全散列算法2)加速指令)。还可存在用于加速其他已知密码算法的其他密码指令。如进一步所示,还可存在各种其他不同类型的指令115,诸如例如,用于支持事务性存储器、虚拟化、安全飞地等的指令。通常,指令集具有从数十种到数百种不同类型的指令。这些不同类型的指令可具有各种不同类型的操作,这些操作具有不同的复杂度等级、完成时间、实现逻辑的数量以及引发的功耗。

处理器101可接收指令集中的这些指令110,并且可操作以执行这些指令。在一些实施例中,该处理器可以是通用处理器(例如,台式计算机、膝上型计算机或其他计算机中所使用类型的通用微处理器或中央处理单元(cpu))。替代地,该处理器可以是专用处理器。合适的专用处理器的示例包括但不限于,网络处理器、通信处理器、密码处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(dsp)以及控制器(例如,微控制器)。处理器可具有各种复杂指令集计算(cisc)架构、精简指令集计算(risc)架构、超长指令字(vliw)架构、混合架构、其他类型的架构中的任一种,或者具有不同架构的组合(例如,不同的核可具有不同的架构)。

处理器至少具有第一核120-1,并且可任选地具有零个或更多个附加核直至任选的第n核120-n,其中核的数量可表示特定实现方式所期望的任何数量(例如,1个、2个、4个、7个、24个、30个、多于30个等)。第一核120-1包括流水线前端121。流水线前端可包括取决于特定的处理器设计的前端单元或组件的各种不同组合和布置。在所图示的示例实施例中,流水线前端包括指令取出单元122、与指令取出单元耦合的指令高速缓存123、与指令高速缓存耦合的任选的预解码单元124、与预解码单元耦合的任选的指令队列125、以及与指令队列耦合的解码单元126。取出单元可将指令从存储器取出到可高速缓存该指令的指令高速缓存中。预解码单元可检查指令的至少一部分以及对这些指令进行预解码(例如,检查前缀或其他指令信息,并估计指令长度)。指令队列可在指令被递送到解码单元之前将这些指令排队或存储这些指令。解码单元可接收并解码指令(例如,通过检查指令的操作码和/或潜在的其他字段)。解码单元可输出一个或多个相对较低级的指令或控制信号(例如,一个或多个微指令、微操作、微代码进入点、经解码的指令或控制信号等),其反映、表示所接收的相对较高级的指令和/或从所接收的相对较高级的指令导出。可使用各种不同的机制来实现解码单元,各种不同的机制包括但不限于,微代码只读存储器(rom)、查找表、硬件实现、可编程逻辑阵列(pla)和适用于实现解码单元的其他机制。尽管示出了单个解码单元,但可任选地包括多个解码单元。流水线前端的其他实施例可包括更少的或更多的组件。

再次参考图1,执行引擎单元128与解码单元126的输出和/或流水线前端耦合。执行引擎单元可包括一个或多个执行单元129。如在所图示的示例实施例中示出,执行引擎单元和/或处理器可包括一个或多个整数执行单元130(例如,用于实行或执行通用指令111)、一个或多个较窄的紧缩数据执行单元131(例如,用于实行或执行较窄的紧缩数据指令112)、一个或多个较宽的紧缩数据执行单元132(例如,用于实行或执行较宽的紧缩数据指令113)、任选地包括一个或多个密码执行单元133(例如,用于实行或执行密码指令114)并且任选地包括一个或多个其他执行单元134(例如,地址转换单元、加载和/或存储单元等)。替代地,处理器可包括更少的、更多的和/或不同类型的执行单元。(多个)执行单元可接收经解码的或者以其他方式经转换的指令或控制信号,该指令或控制信号表示指令集中的指令和/或从指令集中的指令导出。(多个)执行单元可操作以响应于指令集中的指令和/或作为指令集中的指令的结果(例如,响应于经解码的指令或控制信号)来实行、执行或实现由该指令集中的指令所规定的操作。

再次参考图1,(多个)执行单元129可以与寄存器堆136耦合。寄存器堆可包括各种不同类型的寄存器。寄存器中的每一个可表示可操作以存储数据的管芯上存储位置。寄存器可表示对软件和/或编程者可见的架构上可见或架构寄存器,并且/或者是由处理器的指令集中的指令指示用于标识操作数的寄存器。可在不同的微架构中以不同方式实现这些寄存器,并且它们不限于任何特定类型的设计。合适类型的寄存器的示例包括但不限于,专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器以及它们的组合。指令110中的大多数可指定或以其他方式指示寄存器堆中的(多个)寄存器,并且如由指令所规定,(多个)执行单元当执行那些指令时可从寄存器堆接收数据和/或将数据存储到寄存器堆。如所图示的示例实施例中所示,寄存器堆可包括一组通用寄存器137(例如,其可在执行通用指令111时使用)、一组较窄的紧缩数据寄存器138(例如,其可在执行较窄的紧缩数据指令112时使用)、一组较宽的紧缩数据寄存器139(例如,其可在执行较宽的紧缩数据指令113时使用)、并且任选地包括其他寄存器(例如,状态寄存器、(多个)存储器寻址寄存器等)。如先前所提到,较宽的紧缩数据寄存器可以是比较窄的紧缩数据寄存器相对更宽的。例如,256位或512位寄存器可宽于128位寄存器。

再次参考图1,功率控制单元142与第一核120-1以及包括第n核120-n的其他任选核中的每一个核耦合。在一些实施例中,可将功率控制单元与(多个)核包括在同一管芯或芯片上(例如,可将两者包括在同一处理器中和/或同一芯片上系统(soc)上)。在其他实施例中,可将功率控制单元包括在与具有(多个)核的管芯或芯片分开的管芯或芯片上(例如,可将核包括在处理器上,而可将功率控制单元包括在分开的芯片组组件上)。功率控制单元可包括用于控制和/或管理处理器和/或计算机系统的(多个)核以及其他组件的功率的功率控制和/或管理逻辑。在一些实施例中,功率控制单元可控制或至少辅助控制提供给(多个)核的时钟信号143的频率。在一些实施例中,功率控制单元可操作以实现时钟频率改变算法,诸如例如,高级配置和电源接口(advancedconfigurationandpowerinterface)(acpi)状态、动态超频(例如,睿频加速技术(turboboosttechnology))等等。所图示的功率控制单元142包括指令类型知晓的最大时钟频率控制逻辑144的实施例。该指令类型知晓的时钟频率控制逻辑的进一步的任选细节将在下文进一步讨论。

图2是图示出不同类型的指令可具有不同的故障点时钟频率并且对照用于针对此类指令来控制最大时钟频率的两种不同的可能方法的图。将时钟频率245绘制在具有从底部到顶部增加的量值的垂直轴上。

第一较低故障点时钟频率(f1)表示大约是和高于该频率则第一类型指令会倾向于失效的频率。类似地,第二较高故障点时钟频率(f2)表示大约是和高于该频率则第二不同类型指令会倾向于失效的频率。如本文中所使用,术语较低和较高用作相对术语(即,相对于彼此)而不是绝对术语。一般地,可能在低于和最高大约f2的频率执行第二类型指令而没有不可接受的故障率和/或故障等级,但是如果在高于f2以及尤其是显著高于f2的频率执行第二类型指令,则故障率和/或故障等级对于至少一些实现方式而言会倾向于是不可接受地高。类似地,可能在低于和最高大约f1的频率执行第一类型指令而没有不可接受的故障率和/或故障等级,但是如果在高于f1以及尤其是显著高于f2的频率执行第一类型指令,则故障率和/或故障等级对于至少一些实现方式而言会倾向于是不可接受地高。

在此上下文中,“故障”是用于表示在该频率处可靠操作是不可能的频率的通用术语。当为了更高的性能而调谐时,通常找到失效点并随后使频率下退直到达到稳定点。故障可表示导致系统崩溃(例如,蓝屏事件)、系统不稳定性或故障、具有错误行为和/或导致错误结果的指令、潜在无记载数据损坏等的可能性的各种不同类型的事件或情况中的任何一个。典型地,故障是可以通过重启来恢复的那些故障,而不是永久的硬件故障。不希望被理论所束缚,部分地由于与在此类高频率下的操作电路的物理限制、在此类高频率下的传播信号、在此类高频率下的速度路径限制、热限制、功率递送限制、时钟分布限制等等或者其各种组合相关联的各种事件或情况,此类故障可能潜在地发生。无论如何,不考虑特定的原因,可以观察和/或检测到(例如,通过压力测试、严苛测试(torturetest)、调谐等),随着频率的增加,可检测到故障率增加和/或变得显著的区别点或特征点或频率范围。可能不一定存在高于其则给定类型的指令失效并且低于其则给定类型的指令不失效的精确的或离散的频率。相反,这些故障点时钟频率可表示在这些点或接近这些点开始检测到故障、在这些点故障率满足特定实现方式所期望的阈值水平、在这些点故障率开始显著加速的点等等。

不同类型的指令的不同的故障点时钟频率和/或不同的稳定最大操作时钟频率可根据经验和/或通过常规测试容易地确定。例如,可使用压力测试、严苛测试、其他测试、验证研究、调谐研究、功能正确性研究、模拟、收集历史数据等等。通常,测试可涉及在包含可疑故障点时钟频率的一系列不同频率上以给定的工作负荷运行处理器一时间段(例如,从若干小时到许多小时)、检测故障及其时间、以及分析结果,以估计故障点时钟频率和/或不同的稳定最大操作时钟频率。

为了进一步说明,作为一个特定的非限制性示例,已观察到sse指令倾向于具有平均比avx1和avx2指令更高的稳定最大时钟频率。同样地,avx1和avx2指令倾向于具有平均比avx-512指令更高的稳定最大时钟频率。相应地,如果在适合于sse的较高稳定最大时钟频率处执行avx1和/或avx2指令,则这会倾向于导致比如果在这些频率处执行sse指令更高的故障率/等级。类似地,如果在适合于avx1和/或avx2的较高稳定最大操作时钟频率处执行avx-512指令,则这会倾向于导致比如果在这些频率处执行avx1和/或avx2指令更高的故障率/等级。作为示例,针对某些处理器,sse指令可具有比avx1/avx2指令高约100-200mhz的最大稳定操作时钟频率,并且avx1/avx2指令可具有比avx-512指令高约100-200mhz的最大稳定操作时钟频率。精确的值可取决于特定的处理器世代和其他因素。

将会理解,尽管通常在本公开中使用sse和avx指令来说明某些概念,但本发明的范围不限于此。各种其他不同类型的指令可类似地在更大或更小的程度上具有不同的最大稳定操作时钟频率。例如,构想这可以是用于以下指令的情况:(1)具有不同simd宽度的指令(例如,较窄simd指令和较宽simd指令);(2)具有不同复杂度等级(例如,所执行操作的数量、用于完成的时间等)的指令,诸如密码指令和非密码指令;(3)在其实现中使用不同数量的逻辑(例如,不同数量的晶体管)的指令;以及(4)在其实现中消耗不同数量的功率的指令。相应地,在这些示例中,可将sse、avx1/avx2和avx-512指令宽泛地视为一个或多个第一类型指令的集合、一个或多个第二不同类型指令的集合以及一个或多个第三进一步不同类型指令的集合。

再次参考图2,示出了用于针对具有不同故障点时钟频率的不同类型的指令来控制最大时钟频率的两种不同的可能方法。根据一般地在第一云246处示出的第一方法,可在同一单个最大时钟频率(f12,最大)之内、受制于同一单个最大时钟频率(f12,最大)、不高于同一单个最大时钟频率(f12,最大)、或者以其他方式最高在但基本上不超过同一单个最大时钟频率(f12,最大)执行第一和第二类型指令两者。利用该第一方法的一个可能的缺点是通常该单个最大时钟频率(f12,最大)需要由对应于第一类型指令的较低故障点时钟频率(f1)限制,并且接近于或者至少不远远高于对应于第一类型指令的较低故障点时钟频率(f1)。可以成功使用的频率一般会在一定程度上由意指具有较低故障点时钟频率的(多个)指令的“最弱链路”限制。如果这未被完成,则会倾向于发生更多故障(例如,更频繁的系统崩溃、差劣的用户体验、可能的数据损坏等)。利用该第一方法的另一可能的缺点是当执行第二类型指令由相对较低的单一最大时钟频率(f12,最大)所限制而不是允许最高在较高的故障点时钟频率(f2)执行它们时可能牺牲一些性能。

再次参考图2,根据一些实施例,第二不同的方法一般地在第二云247处示出。在一些实施例中,利用该第二方法,至少在第一类型指令未被正在执行(或者可能可接受地少量的此类第一类型指令正在被执行)时,可最高在较高最大时钟频率(f2,最大)执行第二类型指令。此外,利用该第二方法,可最高在较低最大时钟频率(f1,最大)执行第一类型指令(以及潜在地第二类型指令,如果正在被同时执行)。利用该第二方法,在第一类型指令未被正在执行时,可能不需要基于对应于第一类型指令的较低故障点时钟频率(f1)来限制执行第二类型指令的最大时钟频率。相反,可最高在较高最大时钟频率(f2,最大)执行第二类型指令,较高最大时钟频率(f2,最大)从对应于第一类型指令的较低故障点时钟频率(f1)解耦和/或独立于对应于第一类型指令的较低故障点时钟频率(f1)。用于具有较高故障点的指令类型的最大时钟频率不需要由其他指令类型的(多个)较低故障点限制。换言之,(f2,最大)可以显著高于(f1,最大)和/或(f12,最大)。如所示,(f2,最大)可任选地更接近较高的故障点时钟频率(f2),而不是如在以上所描述的第一方法中的(f12,最大)的情况的更接近较低的故障点时钟频率(f1)。有利地,这可有助于改善在正在执行第二类型指令而未正在执行第一类型指令(或者可能正在执行可接受地少量的第一类型指令)时的性能。

另外,在一些实施例中,如由箭头248一般地所示,利用第二方法247,当检测到第一类型指令和/或将要执行第一类型指令时,最大时钟频率可从(f2,最大)降低到(f1,最大)。这可在运行时期间实时地执行,同时处理器处理指令,并且不需要重启。如所示,一方面(f1,最大)可任选地接近对应于第一类型指令的较低故障点时钟频率(f1)。有利地,这可有助于在将要执行第一类型指令时提供较低的故障率/等级,这可有助于减少系统崩溃、提高用户体验等等。另外,可仅在需要时(例如,仅在将要执行第一类型指令时)选择性地降低时钟频率,并且否则可保持较高的时钟频率以实现更好的性能。第二方法的另一可能优势是,当执行非第一类型指令时(例如,当不运行具有较低的故障点频率的指令时),可任选地为处理器选择较高的保证或额定频率,并且当将要执行第一类型指令(例如,具有较低的故障点频率)时,可降低最大频率以降低故障率。

图3是包括核320以及与该核耦合的功率控制单元342的装置350的实施例的框图。在一些实施例中,装置350可被包括在图1的计算机系统100和/或处理器101中。替代地,装置350可被包括在相似的或不同的计算机系统和/或处理器中。此外,图1的计算机系统100和/或处理器101可具有与如图3中所示出的相同的、相似的或不同的类型的核和功率控制单元。

在一些实施例中,可将功率控制单元与(多个)核包括在同一管芯或芯片上,例如,可将两者包括在同一处理器中和/或同一芯片上系统(soc)上。在其他实施例中,可将功率控制单元包括在与具有(多个)核的管芯或芯片不同的管芯或芯片上,例如,可将核包括在处理器上并且可将功率控制单元包括在分开的芯片组组件上。在图示中,核以虚线示出,以指示它可以与功率控制单元在同一管芯、芯片或其他集成电路上,或者它可以与功率控制单元不在同一管芯、芯片或其他集成电路上。

核320可操作以接收和处理指令集中的各种不同类型的指令。任何先前所描述类型的指令或完全不同的指令是合适的。核包括流水线前端321。该流水线前端可以与先前所描述的流水线前端121相同、相似,或者不同于先前所描述的流水线前端121。本领域已知的各种各样的不同类型的流水线前端设计和配置是合适的。流水线前端可接收指令。如所示,在某些时间,流水线前端可接收非第一类型指令351,而在其他时间,该流水线前端可接收第一类型指令352。

流水线前端可操作以在已经检测到第一类型指令和/或将要由核执行第一类型指令时向功率控制单元342提供将要执行第一类型指令的信号、通信或其他指示354。流水线前端的诸如例如解码单元、预解码单元、特殊专用单元或逻辑等之类的各种不同组件可提供该指示。另外,该指示的不同实施例是可能的。作为一个特定示例,解码单元响应于解码第一类型指令(例如,基于其操作码)可向功率控制单元发送已解码第一类型指令并且将要执行该第一类型指令的信号。作为另一特定示例,在avx指令的情况下,核可以向功率控制单元发送请求来询问是否允许其执行avx指令,该功率控制单元可分析可用功率和/或热预算并且决定是否允许核执行avx指令并向该核发送授权或者拒绝信号。此类请求和授权可表示合适的形式的此类指示。在另外的其他实施例中,代替流水线前端提供该指示,可将其替代地潜在地提供为来自指令仿真器、变换器、变形器、解释器或其他指令转换模块的通信。

功率控制单元342可控制或至少辅助控制提供给核320的时钟信号的频率。如所示,功率控制单元可包括用于至少部分地基于已检测到和/或将由核执行的至少一个指令的类型来控制(例如,改变)允许该核操作的最大时钟频率的逻辑357的实施例。在一些实施例中,逻辑357也可表示适合于图1的逻辑144的指令类型知晓的最大时钟频率控制逻辑的实施例。在一些实施例中,逻辑357可使用依赖于指令类型的最大时钟频率控制(例如,图4的控制464)。在一些实施例中,逻辑357可使用可由软件配置和重新配置的依赖于指令类型的最大时钟频率控制(例如,任选地使用针对图4和/或图8所示出和描述的配置方面中的任何一者)。逻辑357可以以硬件(例如,集成电路、晶体管或其他电路元件等)、固件(例如,存储器(非易失性和/或易失性)和存储在其中的微代码、微指令或其他较低级指令)、软件(例如,存储在存储器中的较高级指令)或其组合(例如,潜在地/任选地与较少数量的软件组合的硬件和/或固件)来实现。

在一些实施例中,逻辑357可操作以在已经检测到和/或将要执行一个或多个至少一个类型的指令时控制用于核的最大时钟频率到较低的最大时钟频率的降低。如本文中所使用,表述“将要执行”不限于由执行单元执行的指令,而是还涵盖在各种流水线级中的任何一者处处理的指令,并且涵盖至少以下指令中的任何一者:被取出的指令和/或被解码的指令和/或存储在指令高速缓存中的指令和/或存储在指令队列中的指令和/或存储在调度器队列中的指令和/或被提交的指令。在一些实施例中,可在大约解码指令的时间的某个点处并且在实际执行该指令之前任选地改变最大时钟频率,但这不是必须的。

如所示,在一些实施例中,逻辑357可任选地包括用于在尚未检测到和/或将不执行第一类型指令时控制用于核的较高最大时钟频率并且在已经检测到和/或将要执行第一类型指令时控制用于核的较低最大时钟频率的逻辑344。如所示,在将要执行非第一类型指令351时,功率控制单元可向核提供较高最大时钟频率353。替代地,当已经检测到和/或将要执行第一类型指令352时(例如,当核传送指示354时),功率控制单元可向核提供较低最大时钟频率356。不作为限制,当改变最大时钟频率时,功率控制单元可任选地对应地改变(例如,降低)电压。可通过较低的电压和较低的温度(例如,其可源自降低最大频率和/或电压)来部分地实现显著的稳定性改进。

为了简化图示,仅示出第一类型指令352和非第一类型指令351。然而,在其他实施例中,可将相同的概念扩展到一个或多个指令的附加集合,其中每个集合具有不同的类型。例如,两种、三种、四种或更多种不同类型的指令可各自产生类似于指示354的指示以及不同的对应的最大时钟频率的降低。作为另一示例,两个、三个、四个或更多个不同的指令的组(例如,avx1、avx2、avx-512)可各自具有不同的对应的最大时钟频率降低,并且任何组中的任何指令可产生类似于指示354的指示、不同的对应的频率降低。单个指令和组的组合也是可能的。

现在,最大时钟频率可能不一定是在操作期间的任何给定时间处的实际操作频率。相反,最大时钟频率可表示基于当前将要执行的指令的类型的允许核操作的最大可能或可用时钟频率。有时可将实际操作频率提高到最大时钟频率,而在其他时间,实际操作频率可以比最大时钟频率更低。实际操作频率可以由其他算法和/或逻辑来管理或调节,诸如例如,基于高级配置和电源接口(acpi)、任选地睿频加速技术或其他形式的动态超频等。

图4是功率控制单元442和具有各种时钟频率控制462、463、464的示例实施例的一个或多个控制寄存器461的示例实施例的框图。功率控制单元包括时钟频率控制逻辑458。时钟频率控制逻辑包括动态超频逻辑460和用于基于至少一个指令的类型来控制核的最大时钟频率的逻辑457。逻辑457可以以硬件、固件、软件或其组合来实现。控制寄存器存储一个或多个保证(例如,非超频的)最大时钟频率控制462、一个或多个超频的最大时钟频率控制463以及依赖于指令类型的最大时钟频率控制464。

保证最大时钟频率控制462可对应于根据制造商的经认证的、额定的或者以其他方式保证的操作时钟速率或频率。在实际操作中,处理器通常可以以高于或低于此类保证时钟速率的时钟频率运行。以低于保证时钟速率的时钟频率运行处理器通常称作“降频(underclocking)”,并且可用于帮助节省功率。相反,以高于保证时钟速率的时钟频率运行处理器通常称作“超频(overclocking)”,并且可用于帮助提高计算速度和性能。

时钟频率控制逻辑458可基于acpi规范来控制时钟频率。acpi提供用于允许操作系统使得处理器以各种性能状态或水平操作的机制。例如,可存在水平p0到pn。p1性能状态可对应于保证时钟速率之内可以由操作系统请求的最高性能状态。除了该p1性能状态之外,一些类型的处理器可以允许操作系统请求被称为p0性能状态的更高的性能状态。该p0性能状态可表示在满足某些功率、热或其他此类条件时可用的投机性能状态,其中处理器的至少一部分可被配置成以比该处理器的保证时钟频率更高的时钟频率来操作。对于某些处理器,p0性能状态有时被称为睿频(turbo)状态、睿频模式或动态超频模式。(多个)控制寄存器可包括将在此类超频的频率范围期间使用的一个或多个超频的最大时钟频率控制463。

在一些实施例中,时钟频率控制逻辑458和/或功率控制单元可任选地包括动态超频逻辑460,以在p0性能状态下时(例如,使用超频的时钟频率控制463)控制时钟频率。作为一个示例,诸如可从加利福尼亚州圣克拉拉市的英特尔公司获得的酷睿tm(coretm)i5和酷睿tmi7处理器之类的某些处理器具有睿频加速技术。睿频加速技术或其他动态超频方法可允许在满足某些热和电气条件时将时钟频率动态地提高或超频为高于保证时钟频率。当操作系统请求处理器的最高性能状态时,可激活睿频加速技术。提高的时钟速率可由处理器的功率、电流和热限制以及当前在使用中的核的数量和活动核的最大频率来限制。当达到电气或热限制中的任何一者时,操作频率可自动降低直到处理器再次在其设计限制之内操作。其他动态超频方法可具有相同的或相似的特征。

基本时钟频率可被表达为基本时钟速率(例如,bclk)与时钟倍频(multiplier)的乘积。例如,利用基本时钟速率133mhz和时钟倍频10,处理器可以以1.33ghz的时钟频率操作。然而,当处理器在睿频加速状态或动态超频状态下时,处理器可高于保证时钟频率操作,例如以基本时钟速率(例如,133mhz)的倍数。相应地,当处理器在睿频加速状态或另一超频状态下时,可通过指示高于基本时钟频率的整数倍(例如,区段上升(binupside))来描述实际内部核时钟频率。“区段+1”的区段上升可指示处理器以高于基本时钟频率一个基本时钟速率的频率(例如,1.33ghz+1*133mhz=1.463ghz)操作,“区段+2”的区段上升可指示处理器以高于基本时钟频率两个基本时钟速率的频率(例如,1.33ghz+2*133mhz=1.596ghz)操作,以此类推。在使用睿频加速技术以及潜在地使用其他动态超频方法的多核处理器中,在任何给定时刻的活动核的数量也可限制最大超频时钟频率。例如,在给定时刻仅具有一个活动核的四核处理器可能能够以比当所有的四个核都活动(例如,不在c6或c7acpi功耗状态下)时更高的睿频模式操作。活动核可汲取功率并影响其他核。作为超频最大时钟频率控制463的一个特定说明性示例,四核处理器可具有1/1/6/9的比率或倍频,其中用于所有的四个核都活动的上级睿频模式为“区段+1”,用于仅有三个核活动的上级睿频模式也是“区段+1”,用于仅有两个核活动的上级睿频模式为“区段+6”,并且用于仅有一个核活动的上级睿频模式为“区段+9”。在具有睿频加速技术的处理器中,表示合适的超频最大时钟频率控制463的一个示例的这些比率或倍频被称为用于指示睿频模式中所允许的最大比率和/或最大时钟频率的睿频比率限制。其他超频方法可类似地使用比率或倍频作为时钟频率控制或限制。

在一些实施例中,逻辑457可使用依赖于指令类型的最大时钟频率控制464基于至少一个指令的类型来控制核的最大时钟频率。如所示,在一些实施例中,可任选地存在多个此类控制,例如,针对(多个)第一类型指令的第一依赖于指令类型的最大时钟频率控制456-1任选地到针对(多个)第n类型指令的第n依赖于指令类型的最大时钟频率控制456-n。在各实施例中,可存在一个、两个、三个、四个、五个、多于五个或多于十个不同的依赖于指令类型的最大时钟频率控制。在一些实施例中,依赖于指令类型的最大时钟频率控制464或它们中的至少一些可以是可由软件配置的。例如,在一些实施例中,在运行时期间并且不需要系统重启,可允许软件配置或重新配置该控制。有利地,利用软件配置或重新配置这些控制的能力可有助于允许将这些控制灵活地配置为适用于特定实现方式和折衷(例如,故障风险相对于性能的折衷)的不同值。此外,在运行时期间并且不需要系统重启而配置或重新配置这些控制的能力可有助于允许对值的改进调谐或优化和/或有助于允许针对运行中的代码的可能有理由使用不同控制(例如,不同热负载等)的不同部分来改变值。

在一些实施例中,可在超频期间采用这些依赖于指令类型的最大时钟频率控制464,并且这些依赖于指令类型的最大时钟频率控制464可用于修改或进一步限制超频的最大时钟频率控制463,但本发明的范围不限于此。通常,使用本文中所描述的实施例,故障点时钟频率和/或故意降低最大时钟频率的区域将位于超频的频率区域,但本发明的范围不限于此。通常是这种情况,因为通常将保证时钟速率建立为低于故障点时钟频率。然而,本发明的实施例也适合于部分在超频的频率范围中并且部分在非超频的频率范围中、以及全部在降频的频率范围内使用,取决于至少一个给定类型的指令经历故障的频率,可使用本文中所公开的方法通过对最大时钟频率施加限制来减少故障。

为了进一步说明,在睿频加速技术或在其中使用比率或倍频的其他方法的情况下,在一些实施例中,这些依赖于指令类型的最大时钟频率控制可被表达为可从最大超频比率或倍频减去或扣除(例如,如由逻辑457控制)的比率偏移或倍频偏移。作为一个特定说明性示例,第一比率偏移或降低可用于avx1/avx2,以指示相比于非avx(例如,sse)指令允许时钟频率降低多少来执行avx1/avx2指令。任选地,第二比率偏移或降低可用于avx-512,以指示相比于非avx-512(例如,sse)指令允许时钟频率降低多少来执行avx-512指令。为了计算的简化,假设100mhz基本时钟,如果sse睿频比率限制为50,则可最高在最大睿频时钟频率5.0ghz(=50*100mhz)来执行sse指令。此外,如果将avx1/avx2负偏移或比率降低3应用于avx1/avx2,则当系统遇到avx1和/或avx2指令时,最大时钟频率(在此情况下为最大睿频时钟频率)可被降低到4.7ghz(=(50-3)*100mhz),并且可最高在这个降低的最大时钟频率来执行avx1/avx2指令。换言之,avx1/avx2负偏移或比率降低3将导致至多低于sse的最大睿频时钟频率3*bclk或300mhz(=3*100mhz)来运行avx1和/或avx2指令。

在一些实施例中,超频的最大时钟频率控制463可任选地包括可用于多个不同核的核不可知的比率或倍频(例如,睿频比率限制)的单个集合。例如,一些核可能比其他核更慢,并且可由(多个)较慢的核确定核不可知的比率或倍频的单个集合。在此类情况下,在一些实施例中,依赖于指令类型的最大时钟频率控制464可类似地包括核不可知的依赖于指令的最大时钟频率控制(例如,比率偏移)的单个集合。在其他实施例中,超频的最大时钟频率控制463可任选地包括可用于不同核的依赖于核的比率或倍频(例如,睿频比率限制)的不同集合。例如,可潜在地存在用于不同核中的每一个的每核比率或倍频(例如,睿频比率限制)的不同集合。作为示例,一些核可能比其他核更快,并且可根据各个核的能力来定制或定做此类每核比率或倍频。在此类情况下,在一些实施例中,依赖于指令类型的最大时钟频率控制464可类似地包括依赖于核的依赖于指令的最大时钟频率控制(例如,比率偏移)的不同的每核集合。例如,第一核可具有睿频比率限制的第一集合以及对应的avx1/avx2睿频比率限制偏移和avx-512睿频比率限制偏移的第一集合,第二核可具有睿频比率限制的不同的第二集合以及对应的avx1/avx2睿频比率限制偏移和avx-512睿频比率限制偏移的不同的第二集合,以此类推。

在一些实施例中,可任选地使用相同的比率或倍频偏移,而不管从其扣除或减去该比率或倍频偏移的起始比率或倍频的量值。例如,这可提供更简单的实现方式。在其他实施例中,如果需要,比率或倍频偏移可任选地具有取决于从其扣除或减去该比率或倍频偏移的起始比率或倍频的值(例如,起始值较大时的较大的偏移到起始值较小时的较小的偏移)。例如,偏移可以是起始比率的固定百分比或分数(例如,如果起始比率是10并且分数为0.1,则偏移可以是1,而如果起始比率是5并且分数为0.1,则偏移可以是0.5)。在另外的其他实施例中,如果需要,可任选地使用相同的比率或倍频偏移,但是仅在从其扣除或减去该比率或倍频偏移的起始比率或倍频的量值足够大以保证该比率或倍频偏移(例如,满足阈值量值)时可使用。此外,在其他实施例中,如果需要,代替使用需要减去的比率或倍频偏移,依赖于指令类型的最大时钟频率控制464可以替代地包括可直接应用而不需要减去的绝对依赖于指令类型的比率或倍频。在一些实施例中,这些绝对比率或倍频可以任选地是可配置的(例如,存储在控制寄存器中并且对软件而言是可访问的)。在其他实施例中,这些可以任选地是融合的或者以其他方式固定的和非可配置的值(例如,由处理器或系统制造商固定),例如类似于保证比率。另外,如先前所提到,其他实施例不限于仅对超频的频率范围应用此类依赖于指令类型的最大时钟频率控制。例如,如果特定实现方式需要,则此类控制可在降频的范围或者部分超频且部分降频的范围中使用(例如,可将偏移应用到保证最大时钟频率控制462)。

图5是控制处理器中的最大时钟频率的方法568的第一实施例的流程框图。在框569处,方法包括受制于和/或不高于和/或以其他方式最高在但不超过相对较高最大时钟频率来执行非第一类型指令。在一个特定示例实施例中,第一类型指令可以是avx指令(例如,avxl、和/或avx2、和/或avx-512指令),并且执行非第一类型指令可包括执行各种mmx、sse、通用的和其他类型的指令,但不是avx类型的指令,但本发明的范围不限于此。

在框570处,可作出是否已经检测到和/或将要执行一个或多个第一类型指令的判定。在一个特定示例实施例中,这可包括判定是否已经检测到和/或将要执行一个或多个avx类型指令,但本发明的范围不限于此。如果尚未检测到和/或将不执行一个或多个第一类型指令(即,框570处的判定为“否”),则方法可重新访问在其中可最高在相对较高的最大时钟频率执行非第一类型的附加指令的框。

替代地,如果已经检测到和/或将要执行一个或多个第一类型指令(即,框570处的判定为“是”),则方法可行进至框571。在一个特定的示例实施例中,这可包括解码或以其他方式检测将要执行的avx类型的指令。在框571处,最大时钟频率可以从对应于非第一类型指令的相对较高的最大时钟频率降低到对应于(多个)第一类型指令的相对较低的最大时钟频率。不作为限制,可任选地对应地减少(例如,降低)电压。可通过较低的电压和较低的温度(例如,其可源自降低最大频率和/或电压)来部分地实现显著的稳定性改进。

在框572处,可最高在相对较低最大时钟频率执行(多个)第一类型指令。在一个特定示例实施例中,可最高在相对较低最大时钟频率执行一个或多个avx指令、或例程或者avx代码的其他部分(包括其他指令,如果同时执行),但本发明的范围不限于此。

在框573处,可作出是否已经检测到和/或将要执行更多个第一类型指令的判定。如果已经检测到和/或将要执行更多个第一类型指令(即,框573处的判定为“是”),则方法可重新访问在其中还可最高在相对较低的最大时钟频率执行第一类型的附加指令的框572。

替代地,如果尚未检测到第一类型的(多个)附加指令和/或将不执行第一类型的附加指令(即,框573处的判定为“否”),则方法可行进至框574。在框574处,最大时钟频率可以从对应于(多个)第一类型指令的相对较低的最大时钟频率提高回到对应于非第一类型指令的相对较高的最大时钟频率。不作为限制,可任选地对应地提高电压。然后,方法可重新访问框569。

图6是控制处理器中的最大时钟频率的方法675的第二实施例的流程框图。图6的方法类似于图5的方法,除了其涉及第一和第二类型指令以及对应的两个不同的降低的最大时钟频率。

在框676处,方法包括受制于和/或不高于和/或以其他方式最高在但不超过相对较高最大时钟频率执行既非第一类型也非第二类型的指令。在一个特定示例实施例中,第一类型指令可以是avx1和/或avx2指令,第二类型指令可以是avx-512指令,并且执行既非第一类型也非第二类型的指令可包括执行各种mmx、sse、通用的和其他类型的指令但不是avx类型指令,但本发明的范围不限于此。

在框677处,可作出是否已经检测到和/或将要执行一个或多个第一类型和/或第二类型指令的判定。在一个特定示例实施例中,这可包括判定是否已经检测到和/或将要执行一个或多个avx类型指令,但本发明的范围不限于此。如果尚未检测到和/或将不执行第一类型或第二类型指令(即,框677处的判定为“否”),则方法可重新访问在其中可最高在相对较高最大时钟频率执行既非第一类型也非第二类型的附加指令的框676。

替代地,如果已经检测到和/或将要执行一个或多个第一类型和/或第二类型指令(即,框677处的判定为“是”),则方法可行进至框678。在一个特定示例实施例中,这可涉及解码或者以其他方式检测avx1类型指令、avx2类型指令、avx-512类型指令或其组合,但本发明的范围不限于此。

在框678处,可作出是否已经检测到和/或将要执行一个或多个第二类型指令的另一判定。在一个特定示例实施例中,这可包括判定是否已经检测到和/或将要执行一个或多个avx-512指令,但本发明的范围不限于此。

如果尚未检测到和/或将不执行第二类型指令(即,框678处的判定为“否”),则方法可行进至框679。在框679处,最大时钟频率可以从相对较高的最大时钟频率降低到对应于(多个)第一类型指令的第一相对较低的最大时钟频率。

替代地,如果已经检测到和/或将要执行一个或多个第二类型指令(即,框678处的判定为“是”),则方法可行进至框680。在框680处,最大时钟频率可以从相对较高的最大时钟频率降低到对应于(多个)第二类型指令的第二相对甚至更低的最大时钟频率。在一些实施例中,对应于第二类型指令的第二甚至更低的最大时钟频率可以比对应于第一类型指令的第一较低最大时钟频率甚至更低。不作为限制,可基于框679或680的最大时钟频率降低来任选地对应改变(例如,降低)电压。可通过较低的电压和较低的温度(例如,其可源自降低最大频率和/或电压)来部分地实现显著的稳定性改进。

方法可从框679或框680行进至框681。在框681处,可最高在如由框679或680所降低的降低的最大时钟频率执行第一和/或第二类型的(多个)指令(和潜在地其他指令,如果同时和/或在同一时间帧之内执行)。该实施例说明了其中不同类型的指令(例如,avx1/avx2相对于avx-512)可具有不同的最大频率降低的方法。相比之下,利用图5中所示出的方法,单个最大频率降低被用于多个不同类型的指令(例如,avx1、avx2和avx-512)。

在框682处,可作出是否已经检测到和/或将要执行更多个第一类型和/或第二类型指令的判定。如果已经检测到和/或将要执行更多个第一类型和/或第二类型指令(即,框682处的判定为“是”),则方法可重新访问框678。

替代地,如果尚未检测到第一类型和/或第二类型的(多个)附加指令和/或将不执行第一类型和/或第二类型的附加指令(即,框682处的判定为“否”),则方法可行进至框683。在框683处,最大时钟频率可以从当前降低的最大时钟频率提高回到对应于既非第一类型也非第二类型的指令的相对较高的最大时钟频率(例如,先前在框676处使用的频率)。然后,方法可重新访问框676。

在将图6的方法应用到sse、avx1/avx2和avx-512指令的一个特定示例实施例中,可以执行sse指令(以及潜在地其他非avx类型指令)的较高最大时钟频率可以是大约5000mhz或更高。然后,当将要执行avx1和/或avx2指令时,可将最大时钟频率降低约100mhz。当将要执行avx-512指令时,最大时钟频率可降低多于针对avx1/avx2的约100-200mhz。

已经以相对基本的形式示出和描述了图5-6的方法,但可任选地向这些方法添加操作和/或从这些方法移除操作。例如,其他实施例可涉及所图示操作的新颖的子集。另外,尽管流程图示出根据实施例的操作的特定顺序,但该顺序是示例性的。替代实施例可按不同的顺序执行这些操作、组合某些操作、重叠某些操作,等等。

在一些实施例中,图5和/或图6的方法可由图1的处理器和/或图3的装置执行,和/或在图1的处理器和/或图3的装置内执行。在本文中针对图1和/或图3所描述的组件、特征和特定的任选细节也任选地应用到图5和/或图6。替代地,可由类似的或不同的处理器或装置执行图5和/或图6的方法和/或可在类似的或不同的处理器或装置内执行图5和/或图6的方法。此外,图1的处理器和/或图3的装置可执行与图5和/或图6的方法相同、相似或不同的方法。

图7是图示出工作负荷的时间片的一个特定示例的图,该图示出最大时钟频率可如何随时间改变。时间绘制在从左到右增加的水平轴上。最大时钟频率绘制在从底部到顶部增加的垂直轴上。在该示例中,示出了两个不同等级的最大时钟频率降低,但可任选地使用更少或更多的等级,并且每个等级由不同类型的指令触发。

在时刻t1,可最高在相对较高最大时钟频率(f3)执行既非第一类型也非第二类型的指令。在时刻t2,检测到和/或将要执行至少一个第一类型指令。在时刻t2,最大时钟频率从f3降低到第一相对较低的最大时钟频率(f2)。然后,可最高在频率f2执行(多个)第一类型指令以及如果同时执行则潜在地既非第一类型也非第二类型的其他指令。在时刻t3,检测到和/或将要执行至少一个第二类型指令。在时刻t3,最大时钟频率从f2降低到第二更低最大时钟频率(f1)。然后,可最高在频率f1执行(多个)第二类型指令以及如果同时执行则潜在地其他指令。在时刻t4,判定尚未检测到和/或将不执行第一类型或第二类型指令。在时刻t4,最大时钟频率从f1增加回到f3。然后,非第一或第二类型的指令可以在最高到f3的频率执行。在时刻t5,检测到和/或将要执行至少一个第二类型指令。在时刻t5,最大时钟频率从f3降低到f1。然后,可最高在频率f1执行(多个)第二类型指令以及如果同时执行则潜在地其他指令。在各实施例中,频率可在超频的区域、降频的区域中或跨越两者的组合。将会理解,这只是当检测到和/或执行不同类型的指令时可如何在运行时期间随时间动态改变最大时钟频率的一个说明性示例。

按照惯例,软件无法控制可以执行给定类型的指令的最大时钟频率。在一些实施例中,处理器或其他集成电路可操作以允许基于指令类型的对最大时钟频率的软件配置(例如,处理器的初始制造之后和/或其在系统中的部署之后的配置)。例如,处理器或其他集成电路可允许对依赖于指令类型的最大时钟频率控制的软件配置和/或重新配置。例如,这些控制可向软件暴露和/或可由软件访问。例如,指令集中的指令可能能够访问(例如,读取和/或写入)这些控制。在一些实施例中,可在运行时期间任选地配置和/或重新配置这些控制,而不需要执行系统重启。在一些实施例中,能够访问这些控制的软件可以是bios、超频软件、调谐软件、操作系统、其他有特权的软件等等或者此类不同类型的软件的组合。有利地,利用软件配置或重新配置此类控制的能力可有助于允许软件将控制灵活地配置为不同的值。例如,软件可基于不同类型的工作负荷(例如,关键为不失效相对于可以失效)、不同数量的工作负荷、不同的功率或热负载等等来在运行时期间在不同的时刻配置这些值。一般地,允许这些控制对软件可见以及可由软件配置可允许软件根据其不同的需要和需求来改变这些控制。另外,允许对这些控制的配置和重新配置可有助于允许调谐、性能改善优化等等。一方面,计算机系统的设计者可作出关于此类可配置性或控制是否将为计算机系统设计者(例如,在制造时固定)、bios供应商(例如,可由bios配置)或终端用户(例如,在运行时期间的操作系统和/或调谐应用)保留的决策。

图8是可操作以允许软件访问(例如,读取和/或写入)一个或多个控制寄存器861中依赖于指令类型的最大时钟频率控制864的处理器801的实施例的框图。在所图示的实施例中,通过读取控制寄存器指令890读取访问是可用的,并且通过写入控制寄存器指令891写入访问是可用的,读取控制寄存器指令890和写入控制寄存器指令891两者可以是处理器的可由软件(例如,一般是有特权等级的软件)利用的指令集中的指令。

处理器包括解码单元826。解码单元可接收并解码读取控制寄存器指令890和/或写入控制寄存器指令891。在一些实施例中,这些指令可显式地指定(例如,通过一个或多个字段或一组位)或以其他方式指示(例如,隐式地指示)依赖于指令类型的最大时钟频率控制。例如,字段可指定具有感兴趣的一个或多个依赖于指令类型的最大时钟频率控制的特定的控制寄存器或其部分。解码单元可输出反映、表示相对较高级的指令和/或从相对较高级的指令导出的一个或多个相对较低级的指令或控制信号(例如,一个或多个微指令、微操作、微代码进入点、经解码的指令或控制信号等)。可使用各种不同的机制来实现解码单元,各种不同的机制包括但不限于,微代码只读存储器(rom)、查找表、硬件实现、可编程逻辑阵列(pla)和适用于实现解码单元的其他机制。

执行单元828与解码单元826耦合。执行单元可接收表示指令和/或从指令导出的一个或多个经解码或以其他方式转换的指令或控制信号。执行单元可操作以响应于指令和/或作为指令的结果(例如,响应于一个或多个指令或从指令解码的控制信号)而访问一个或多个控制寄存器861中的依赖于指令类型的最大时钟频率控制中的一个或多个。具体而言,执行单元可执行读取控制寄存器指令,以从(多个)控制寄存器读取一个或多个依赖于指令类型的最大时钟频率控制并且将它们存储到目的地位置(例如,架构通用寄存器),将它们提供给功率控制单元等。执行单元可执行写入控制寄存器指令,以将由指令所指示的一个或多个依赖于指令类型的最大时钟频率控制写入到(多个)控制寄存器。写入这些指令指定或指示的值可表示依赖于指令类型的最大时钟频率控制的软件配置。

(多个)控制寄存器可表示对软件和/或编程者可见的架构上可见寄存器,和/或是由处理器的指令集中的指令指示的用于标识操作数的寄存器。在一些实施例中,(多个)控制寄存器可表示一个或多个模型专用寄存器(msr)。在其他实施例中,(多个)控制寄存器可表示虚拟寄存器。例如,在一些实施例中,(多个)控制寄存器可表示所谓的邮箱。在其他实施例中,可任选地将(多个)参数存储在存储器映射输入/输出(mmio)区域中。

示例性核架构、处理器和计算机架构

处理器核能以不同方式、出于不同的目的、在不同的处理器中实现。例如,此类核的实现可以包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能通用乱序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)cpu,其包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用乱序核;以及2)协处理器,其包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核。此类不同的处理器导致不同的计算机系统架构,这些计算机系统架构可包括:1)在与cpu分开的芯片上的协处理器;2)在与cpu相同的封装中但在分开的管芯上的协处理器;3)与cpu在相同管芯上的协处理器(在该情况下,此类协处理器有时被称为专用逻辑或被称为专用核,该专用逻辑诸如,集成图形和/或科学(吞吐量)逻辑);以及4)芯片上系统,其可以将所描述的cpu(有时被称为(多个)应用核或(多个)应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上。接着描述示例性核架构,随后描述示例性处理器和计算机架构。

示例性核架构

有序和乱序核框图

图9a是图示根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线的框图。图9b是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核的框图。图9a-图9b中的实线框图示有序流水线和有序核,而虚线框的任选增加图示寄存器重命名的、乱序发布/执行流水线和核。考虑到有序方面是乱序方面的子集,将描述乱序方面。

在图9a中,处理器流水线900包括取出级902、长度解码级904、解码级906、分配级908、重命名级910、调度(也被称为分派或发布)级912、寄存器读取/存储器读取级914、执行级916、写回/存储器写入级918、异常处置级922和提交级924。

图9b示出处理器核990,该处理器核990包括前端单元930,该前端单元930耦合到执行引擎单元950,并且前端单元930和执行引擎单元950两者都耦合到存储器单元970。核990可以是精简指令集计算(risc)核、复杂指令集计算(cisc)核、超长指令字(vliw)核、或混合或替代的核类型。作为又一选项,核990可以是专用核,诸如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(gpgpu)核、图形核,等等。

前端单元930包括分支预测单元932,该分支预测单元932耦合到指令高速缓存单元934,该指令高速缓存单元934耦合到指令转换后备缓冲器(tlb)936,该指令转换后备缓冲器936耦合到指令取出单元938,该指令取出单元938耦合到解码单元940。解码单元940(或解码器)可对指令解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元940可使用各种不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(pla)、微代码只读存储器(rom)等。在一个实施例中,核990包括存储用于某些宏指令的微代码的微代码rom或其他介质(例如,在解码单元940中,或以其他方式在前端单元930内)。解码单元940耦合到执行引擎单元950中的重命名/分配器单元952。

执行引擎单元950包括重命名/分配器单元952,该重命名/分配器单元952耦合到引退单元954和一个或多个调度器单元的集合956。(多个)调度器单元956表示任何数量的不同调度器,包括预留站、中央指令窗等。(多个)调度器单元956耦合到(多个)物理寄存器堆单元958。(多个)物理寄存器堆单元958中的每一个物理寄存器堆单元表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,状态(例如,作为要执行的下一条指令的地址的指令指针)等等。在一个实施例中,(多个)物理寄存器堆单元958包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器和通用寄存器。(多个)物理寄存器堆单元958由引退单元954重叠,以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器、(多个)引退寄存器堆;使用寄存器映射和寄存器池,等等)。引退单元954和(多个)物理寄存器堆单元958耦合到(多个)执行集群960。(多个)执行集群960包括一个或多个执行单元的集合962以及一个或多个存储器访问单元的集合964。执行单元962可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可包括仅一个执行单元或全都执行所有功能的多个执行单元。(多个)调度器单元956、(多个)物理寄存器堆单元958和(多个)执行集群960示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线,和/或各自具有其自身的调度器单元、(多个)物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有(多个)存储器访问单元964的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序的。

存储器访问单元的集合964耦合到存储器单元970,该存储器单元970包括数据tlb单元972,该数据tlb单元972耦合到数据高速缓存单元974,该数据高速缓存单元974耦合到第二级(l2)高速缓存单元976。在一个示例性实施例中,存储器访问单元964可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合到存储器单元970中的数据tlb单元972。指令高速缓存单元934还耦合到存储器单元970中的第二级(l2)高速缓存单元976。l2高速缓存单元976耦合到一个或多个其他级别的高速缓存,并最终耦合到主存储器。

作为示例,示例性寄存器重命名的乱序发布/执行核架构可如下所述地实现流水线900:1)指令取出938执行取出级902和长度解码级904;2)解码单元940执行解码级906;3)重命名/分配器单元952执行分配级908和重命名级910;4)(多个)调度器单元956执行调度级912;5)(多个)物理寄存器堆单元958和存储器单元970执行寄存器读取/存储器读取级914;执行集群960执行执行级916;6)存储器单元970和(多个)物理寄存器堆单元958执行写回/存储器写入级918;7)各单元可牵涉到异常处置级922;以及8)引退单元954和(多个)物理寄存器堆单元958执行提交级924。

核990可支持一个或多个指令集(例如,x86指令集(具有已与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的mips技术公司的mips指令集;加利福尼亚州桑尼维尔市的arm控股公司的arm指令集(具有诸如neon的任选的附加扩展)),其中包括本文中描述的(多条)指令。在一个实施例中,核990包括用于支持紧缩数据指令集扩展(例如,avx1、avx2)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。

应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如超线程化技术中的同时多线程化)。

尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所图示的处理器的实施例还包括分开的指令和数据高速缓存单元934/974以及共享的l2高速缓存单元976,但是替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如,第一级(l1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。

具体的示例性有序核架构

图10a-图10b图示更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块(包括相同类型和/或不同类型的其他核)中的一个逻辑块。取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定的功能逻辑、存储器i/o接口和其他必要的i/o逻辑进行通信。

图10a是根据本发明的实施例的单个处理器核以及它至管芯上互连网络1002的连接及其第二级(l2)高速缓存的本地子集1004的框图。在一个实施例中,指令解码器1000支持具有紧缩数据指令集扩展的x86指令集。l1高速缓存1006允许对进入标量和向量单元中的、对高速缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元1008和向量单元1010使用分开的寄存器集合(分别为标量寄存器1012和向量寄存器1014),并且在这些寄存器之间传输的数据被写入到存储器,并随后从第一级(l1)高速缓存1006读回,但是本发明的替代实施例可以使用不同的方法(例如,使用单个寄存器集合或包括允许数据在这两个寄存器堆之间传输而无需被写入和读回的通信路径)。

l2高速缓存的本地子集1004是全局l2高速缓存的一部分,该全局l2高速缓存被划分成多个分开的本地子集,每个处理器核一个本地子集。每个处理器核具有到其自身的l2高速缓存的本地子集1004的直接访问路径。由处理器核读取的数据被存储在其l2高速缓存子集1004中,并且可以与其他处理器核访问其自身的本地l2高速缓存子集并行地被快速访问。由处理器核写入的数据被存储在其自身的l2高速缓存子集1004中,并在必要的情况下从其他子集转储清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、l2高速缓存和其他逻辑块之类的代理在芯片内彼此通信。每个环形数据路径为每个方向1012位宽。

图10b是根据本发明的实施例的图10a中的处理器核的一部分的展开图。图10b包括l1高速缓存1004的l1数据高速缓存1006a部分,以及关于向量单元1010和向量寄存器1014的更多细节。具体地,向量单元1010是16宽向量处理单元(vpu)(见16宽alu1028),该单元执行整数、单精度浮点以及双精度浮点指令中的一个或多个。该vpu通过混合单元1020支持对寄存器输入的混合,通过数值转换单元1022a-b支持数值转换,并且通过复制单元1024支持对存储器输入的复制。写掩码寄存器1026允许预测所得的向量写入。

具有集成存储器控制器和图形器件的处理器

图11是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器1100的框图。图11中的实线框图示具有单个核1102a、系统代理1110、一个或多个总线控制器单元的集合1116的处理器1100,而虚线框的任选增加图示具有多个核1102a-n、系统代理单元1110中的一个或多个集成存储器控制器单元的集合1114以及专用逻辑1108的替代处理器1100。

因此,处理器1100的不同实现可包括:1)cpu,其中专用逻辑1108是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1102a-n是一个或多个通用核(例如,通用有序核、通用乱序核、这两者的组合);2)协处理器,其中核1102a-n是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核1102a-n是大量通用有序核。因此,处理器1100可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、gpgpu(通用图形处理单元)、高吞吐量的集成众核(mic)协处理器(包括30个或更多核)、嵌入式处理器,等等。该处理器可以被实现在一个或多个芯片上。处理器1100可以是一个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,bicmos、cmos、或nmos)中的任何技术被实现在一个或多个基板上。

存储器层次结构包括核内的一个或多个高速缓存级别、一个或多个共享高速缓存单元的集合1106、以及耦合到集成存储器控制器单元的集合1114的外部存储器(未示出)。共享高速缓存单元的集合1106可包括一个或多个中间级别的高速缓存,诸如,第二级(l2)、第三级(l3)、第四级(l4)或其他级别的高速缓存、末级高速缓存(llc)和/或以上各项的组合。虽然在一个实施例中,基于环的互连单元1112将集成图形逻辑1108、共享高速缓存单元的集合1106以及系统代理单元1110/(多个)集成存储器控制器单元1114互连,但是替代实施例可使用任何数量的公知技术来互连此类单元。在一个实施例中,在一个或多个高速缓存单元1106与核1102a-n之间维持一致性。

在一些实施例中,一个或多个核1102a-n能够实现多线程化。系统代理1110包括协调和操作核1102a-n的那些部件。系统代理单元1110可包括例如功率控制单元(pcu)和显示单元。pcu可以是对核1102a-n以及集成图形逻辑1108的功率状态进行调节所需的逻辑和部件,或可包括这些逻辑和部件。显示单元用于驱动一个或多个外部连接的显示器。

核1102a-n在架构指令集方面可以是同构的或异构的;即,核1102a-n中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。

示例性计算机架构

图12-21是示例性计算机架构的框图。本领域中已知的对膝上型设备、台式机、手持pc、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(dsp)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。

现在参考图12,所示出的是根据本发明一个实施例的系统1200的框图。系统1200可以包括一个或多个处理器1210、1215,这些处理器耦合到控制器中枢1220。在一个实施例中,控制器中枢1220包括图形存储器控制器中枢(gmch)1290和输入/输出中枢(ioh)1250(其可以在分开的芯片上);gmch1290包括存储器和图形控制器,存储器1240和协处理器1245耦合到该存储器和图形控制器;ioh1250将输入/输出(i/o)设备1260耦合到gmch1290。或者,存储器和图形控制器中的一个或这两者被集成在(如本文中所描述的)处理器内,存储器1240和协处理器1245直接耦合到处理器1210,并且控制器中枢1220与ioh1250处于单个芯片中。

附加的处理器1215的任选性在图12中通过虚线来表示。每一处理器1210、1215可包括本文中描述的处理核中的一个或多个,并且可以是处理器1100的某一版本。

存储器1240可以是例如动态随机存取存储器(dram)、相变存储器(pcm)或这两者的组合。对于至少一个实施例,控制器中枢1220经由诸如前端总线(fsb)之类的多分支总线、诸如快速路径互连(qpi)之类的点对点接口、或者类似的连接1295来与(多个)处理器1210、1215进行通信。

在一个实施例中,协处理器1245是专用处理器,诸如例如,高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、嵌入式处理器,等等。在一个实施例中,控制器中枢1220可以包括集成图形加速器。

在物理资源1210、1215之间可以存在包括架构、微架构、热、功耗特性等一系列品质度量方面的各种差异。

在一个实施例中,处理器1210执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器1210将这些协处理器指令识别为具有应当由附连的协处理器1245执行的类型。因此,处理器1210在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1245。(多个)协处理器1245接受并执行所接收的协处理器指令。

现在参见图13,所示出的是根据本发明的实施例的第一更具体的示例性系统1300的框图。如图13中所示,多处理器系统1300是点对点互连系统,并且包括经由点对点互连1350耦合的第一处理器1370和第二处理器1380。处理器1370和1380中的每一个都可以是处理器1100的某一版本。在本发明的一个实施例中,处理器1370和1380分别是处理器1210和1215,而协处理器1338是协处理器1245。在另一实施例中,处理器1370和1380分别是处理器1210和协处理器1245。

处理器1370和1380示出为分别包括集成存储器控制器(imc)单元1372和1382。处理器1370还包括作为其总线控制器单元的一部分的点对点(p-p)接口1376和1378;类似地,第二处理器1380包括p-p接口1386和1388。处理器1370、1380可以经由使用点对点(p-p)接口电路1378、1388的p-p接口1350来交换信息。如图13中所示,imc1372和1382将处理器耦合到相应的存储器,即存储器1332和存储器1334,这些存储器可以是本地附连到相应处理器的主存储器的部分。

处理器1370、1380可各自经由使用点对点接口电路1376、1394、1386、1398的各个p-p接口1352、1354来与芯片组1390交换信息。芯片组1390可以任选地经由高性能接口1339来与协处理器1338交换信息。在一个实施例中,协处理器1338是专用处理器,诸如例如,高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、嵌入式处理器,等等。

共享高速缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由p-p互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓存中。

芯片组1390可以经由接口1396耦合到第一总线1316。在一个实施例中,第一总线1316可以是外围部件互连(pci)总线或诸如pci快速总线或另一第三代i/o互连总线之类的总线,但是本发明的范围不限于此。

如图13中所示,各种i/o设备1314可连同总线桥1318一起耦合到第一总线1316,该总线桥1318将第一总线1316耦合到第二总线1320。在一个实施例中,诸如协处理器、高吞吐量mic处理器、gpgpu、加速器(诸如例如,图形加速器或数字信号处理(dsp)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器1315耦合到第一总线1316。在一个实施例中,第二总线1320可以是低引脚数(lpc)总线。在一个实施例中,各种设备可耦合到第二总线1320,这些设备包括例如键盘和/或鼠标1322、通信设备1327以及存储单元1328,该存储单元1328诸如可包括指令/代码和数据1330的盘驱动器或者其他大容量存储设备。此外,音频i/o1324可以被耦合到第二总线1320。注意,其他架构是可能的。例如,代替图13的点对点架构,系统可以实现多分支总线或其他此类架构。

现在参考图14,示出的是根据本发明的实施例的第二更具体的示例性系统1400的框图。图13和14中的类似元件使用类似的附图标记,并且从图14中省略了图13的某些方面以避免混淆图14的其他方面。

图14图示处理器1370、1380可分别包括集成存储器和i/o控制逻辑(“cl”)1372和1382。因此,cl1372、1382包括集成存储器控制器单元,并包括i/o控制逻辑。图14图示不仅存储器1332、1334耦合到cl1372、1382,而且i/o设备1414也耦合到控制逻辑1372、1382。传统i/o设备1415被耦合到芯片组1390。

现在参考图15,示出的是根据本发明的实施例的soc1500的框图。图11中的类似要素使用类似的附图标记。另外,虚线框是更先进的soc上的任选的特征。在图15中,(多个)互连单元1502被耦合到:应用处理器1510,其包括一个或多个核的集合142a-n的集合以及(多个)共享高速缓存单元1106;系统代理单元1110;(多个)总线控制器单元1116;(多个)集成存储器控制器单元1114;一个或多个协处理器的集合1520,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(sram)单元1530;直接存储器访问(dma)单元1532;以及用于耦合到一个或多个外部显示器的显示单元1540。在一个实施例中,(多个)协处理器1520包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、gpgpu、高吞吐量mic处理器、或嵌入式处理器,等等。

本文公开的机制的各实施例可以被实现在硬件、软件、固件或此类实现方式的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。

可将程序代码(诸如,图13中图示的代码1330)应用于输入指令,以执行本文中描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如,数字信号处理器(dsp)、微控制器、专用集成电路(asic)或微处理器。

程序代码可以用高级的面向过程的编程语言或面向对象的编程语言来实现,以便与处理系统通信。如果需要,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定的编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。

至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制造用于执行本文中所述的技术的逻辑。被称为“ip核”的此类表示可以被存储在有形的机器可读介质上,并可被供应给各个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。

此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非暂态、有形布置,其包括存储介质,诸如硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(cd-rom)、可重写紧致盘(cd-rw)以及磁光盘;半导体器件,诸如,只读存储器(rom)、诸如动态随机存取存储器(dram)和静态随机存取存储器(sram)的随机存取存储器(ram)、可擦除可编程只读存储器(eprom)、闪存、电可擦除可编程只读存储器(eeprom);相变存储器(pcm);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。

因此,本发明的实施例还包括非暂态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(hdl),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。

仿真(包括二进制变换、代码变形等)

在一些情况下,指令转换器可用于将指令从源指令集转换至目标指令集。例如,指令转换器可以将指令变换(例如,使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式转换成要由核处理的一条或多条其他指令。指令转换器可以用软件、硬件、固件、或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。

图16是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所图示的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图16示出可使用x86编译器1604来编译高级语言1602形式的程序,以生成可由具有至少一个x86指令集核的处理器1616原生执行的x86二进制代码1606。具有至少一个x86指令集核的处理器1616表示通过兼容地执行或以其他方式执行以下各项来执行与具有至少一个x86指令集核英特尔处理器基本相同的功能的任何处理器:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器1604表示可操作用于生成x86二进制代码1606(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器1616上执行。类似地,图16示出可以使用替代的指令集编译器1608来编译高级语言1602形式的程序,以生成可以由不具有至少一个x86指令集核的处理器1614(例如,具有执行加利福尼亚州桑尼维尔市的mips技术公司的mips指令集、和/或执行加利福尼亚州桑尼维尔市的arm控股公司的arm指令集的核的处理器)原生执行的替代的指令集二进制代码1610。指令转换器1612用于将x86二进制代码1606转换成可以由不具有x86指令集核的处理器1614原生执行的代码。该转换后的代码不大可能与替代的指令集二进制代码1610相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来自替代指令集的指令构成。因此,指令转换器1612通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1606的软件、固件、硬件或其组合。

也可以任选地将针对图2、4和8中任意一个所描述的组件、特征和细节应用于图3。针对本文中所公开的装置(例如,图1、3和4)中的任何一者所描述的组件、特征和细节可任选地应用于本文中所公开的方法(例如,图5和6)中的任何一者,该方法在实施例中可任选地由和/或利用此类处理器执行。本文中在实施例中所描述的装置(例如,350、442、461、801)中的任何一者可任选地包括在本文中所公开的系统(例如,图12-14的系统中的任何一者)中的任何一者中。

在说明书和权利要求书中,可能已经使用了术语“耦合的”和/或“连接的”及其衍生词。这些术语不旨在互为同义词。相反,在多个实施例中,“连接的”可用于指示两个或更多元件彼此直接物理和/或电接触。“耦合的”可意指两个或更多个元件彼此直接物理和/或电接触。然而,“耦合的”也可意指两个或更多个元件彼此并不直接接触,但是仍然彼此协作或相互作用。例如,功率控制单元可通过一个或多个中间组件与寄存器和/或流水线前端耦合。在附图中,箭头用于示出连接和耦合。

本文中所公开的组件和前述附图中所描绘的方法可以利用逻辑、模块或单元来实现,这些逻辑、模块或单元包括硬件(例如,晶体管、门电路、电路等)、固件(例如,存储微代码或控制信号的非易失性存储器)、软件(例如,存储在非暂态计算机可读存储介质上)或其组合。在一些实施例中,这些逻辑、模块或单元可包括至少一些或主要是潜在地与一些任选软件组合的硬件和/或固件的混合。

可能已经使用了术语“和/或”。如本文中所使用的,术语“和/或”意思是一个或另一个或两者(例如,a和/或b意思是:a或b,或者a和b两者)。

在以上描述中,为了提供对实施例的透彻理解,已阐述了特定的细节。然而,可以在没有这些特定细节中的一些的情况下来实践其他实施例。本发明的范围不是由以上所提供的具体示例来确定的,而仅由所附权利要求确定。在其他实例中,已经以框图形式和/或没有细节的形式示出了公知的电路、结构、设备和操作,以避免使对说明书的理解变得模糊。在认为合适的地方,已在附图之间重复了附图标记或附图标记的结尾部分以指示可能任选地具有类似或相同特性的对应或类似的元件,除非另外指定或是显而易见的。

某些操作可由硬件组件执行,或者能以机器可执行或电路可执行指令来具体化,这些机器可执行指令或电路可执行指令可用于使得和/或者导致机器、电路、或硬件组件(例如,处理器、处理器的部分、电路等)利用执行这些操作的指令来编程。这些操作还可任选地由硬件和软件的组合执行。处理器、机器、电路或硬件可包括专用或特定电路或其他逻辑(例如,可能与固件和/或软件组合的硬件),该专用或特定电路或其他逻辑用于执行和/或处理指令,并且响应于该指令而存储结果。

一些实施例包括制品(例如,计算机程序产品),该制品包括机器可读介质。该介质可包括以机器可读形式提供(例如,存储)信息的机制。机器可读介质可提供或在其上存储有指令或指令序列,如果和/或当由机器执行所述指令或指令序列时,该指令或指令序列可用于使该机器执行和/或导致所述机器执行本文中所公开的一种或多种操作、方法或技术。

在一些实施例中,机器可读介质可包括有形的和/或非暂态的机器可读存储介质。例如,非暂态机器可读存储介质可包括,软盘、光存储介质、光盘、光学数据存储设备、cd-rom、磁盘、磁光盘、只读存储器(rom)、可编程rom(prom)、可擦除可编程rom(eprom)、电可擦除可编程rom(eeprom)、随机存取存储器(ram)、静态ram(sram)、动态ram(dram)、闪存、相变存储器、相变数据存储材料、非易失性存储器、非易失性数据存储设备、非暂态存储器、或非暂态数据存储设备等。非暂态机器可读存储介质不由暂态传播的信号组成。在一些实施例中,存储介质可包括有形介质,该有形介质包括诸如例如半导体材料、相变材料、磁性固体材料、固体数据存储材料等之类的固态物质或材料。替代地,可任选地使用非有形暂态计算机可读传输介质诸如例如,电、光、声或其他形式的传播信号——诸如载波,红外信号和数字信号。

合适机器的示例包括但不限于,通用处理器、专用处理器、数字逻辑电路、集成电路等。合适的机器的另一些示例包括,包含处理器、数字逻辑电路或集成电路的计算机系统或其他电子设备。此类计算机系统或电子设备的示例包括但不限于,台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络设备(例如,路由器和交换机)、移动互联网设备(mid)、媒体播放器、智能电视、上网机、机顶盒和视频游戏控制器。

贯穿本说明书对例如“一个实施例”、“实施例”、“一个或多个实施例”、“一些实施例”的引用例如指示可将特定的特征包括在本发明的实施中,但是不一定要求这么做。类似地,在该描述中,为了使本公开流畅并辅助对各创造性方面的理解,有时将各种特征一起归组在单个实施例、附图或对它们的描述中。然而,不应当将公开的该方法解释为反映本发明需要比每项权利要求中所明确记载的更多特征的意图。相反,如所附权利要求所反映,创造性方面在于少于单个的公开实施例的所有特征。因此,将遵循具体实施方式的权利要求明确地结合到该具体实施方式中,并且每一项权利要求独立地作为本发明的单独的实施例而存在。

示例实施例

下列示例涉及进一步的实施例。可在一个或多个实施例中的任何地方使用示例中的细节。

示例1是一种集成电路,包括功率控制单元,该功率控制单元具有接口,该接口用于接收将由核执行一个或多个第一类型指令的指示。该功率控制单元还具有用于基于将由核执行第一类型指令的指示来控制核的最大时钟频率的逻辑。

示例2包括如示例1所述的集成电路,进一步包括一个或多个架构上可见的控制寄存器,该一个或多个架构上可见的控制寄存器能用来由指令集中的至少一个指令写入。(多个)控制寄存器用来存储至少一个依赖于指令类型的最大时钟频率控制。逻辑用来使用该至少一个依赖于指令类型的最大时钟频率控制以针对第一类型指令来控制核的最大时钟频率。

示例3包括如示例1至2中任一项所述的集成电路,进一步包括:用于对写入指令进行解码的解码单元,以及与该解码单元耦合的执行单元,该执行单元用于响应于写入指令正在被解码来存储至少一个依赖于指令类型的最大时钟频率控制。逻辑用来使用该至少一个依赖于指令类型的最大时钟频率控制来针对第一类型指令控制核的最大时钟频率。

示例4包括如示例1至3中任一项所述的集成电路,其中,逻辑用来在将由核执行非第一类型的其他指令时控制该核的较高最大时钟频率。该逻辑还用来响应于接收指示将该核控制为从较高最大时钟频率降低到较低最大时钟频率。

示例5包括如示例4所述的集成电路,其中,非第一类型的其他指令具有比第一类型指令的较低故障点时钟频率更高的故障点时钟频率。

示例6包括如示例5所述的集成电路,其中,较高最大时钟频率高于第一类型指令的较低故障点时钟频率。另外,较低最大时钟频率低于第一类型指令的较低故障点时钟频率。

示例7包括如示例4至6中任一项所述的集成电路,其中,非第一类型的其他指令在执行时将平均消耗少于第一类型指令在执行时所平均消耗的功率量的功率。

示例8包括如示例1至7中任一项所述的集成电路,其中,逻辑用来在将由核执行非第一类型的其他指令时控制该核的较高最大时钟频率。该逻辑还用来响应于接收指示来控制该核的从较高最大时钟频率到第一较低最大时钟频率的降低。该逻辑还用来响应于通过接口接收将由核执行一个或多个第二不同类型指令的第二指示将该核控制为从第一较低最大时钟频率进一步降低到第二更低最大时钟频率。

示例9包括如示例8所述的集成电路,其中,非第一类型的其他指令具有比第一类型指令的第一较低故障点时钟频率更高的故障点时钟频率。另外,第一类型指令任选地具有比第二不同类型指令的第二更低故障点时钟频率更高的故障点时钟频率。

示例10包括如示例8至9中任一项所述的集成电路,其中,非第一类型的其他指令在执行时将平均消耗少于第一类型指令在执行时所平均消耗的功率量的功率。另外,第一类型指令任选地在执行时将平均消耗少于第二不同类型指令在执行时所平均消耗的功率量的功率。

示例11包括如示例1至10中任一项所述的集成电路,其中,逻辑用来基于超频最大时钟频率比率将核控制为较高最大时钟频率。该逻辑还用来响应于接收指示通过从超频最大时钟频率比率减去对应于第一类型指令的比率偏移将核控制为从较高最大时钟频率降低到较低最大时钟频率。

示例12包括如示例1至11中任一项所述的集成电路,进一步包括核,其中,该核与接口耦合以向该接口提供指示。

示例13是一种集成电路中的方法,包括接收将由核执行一个或多个第一类型指令的指示。该方法还包括基于将由核执行第一类型指令的指示来控制该核的最大时钟频率。

示例14包括如示例13所述的方法,进一步包括利用软件来配置至少一个依赖于指令类型的最大时钟频率控制,该至少一个依赖于指令类型的最大时钟频率控制部分地在控制期间用于确定最大时钟频率。

示例15包括如示例13至14中任一项所述的方法,其中,配置的步骤包括利用频率调谐软件、操作系统和嵌入式控制器中的一者来配置至少一个依赖于指令类型的最大时钟频率控制。任选地,该至少一个依赖于指令类型的最大时钟频率控制在运行时期间被配置并且不需要系统重启。

示例16包括如示例13至15中任一项所述的方法,其中,配置的步骤包括利用基本输入/输出系统(bios)来配置至少一个依赖于指令类型的最大时钟频率控制。

示例17包括如示例13至16中任一项所述的方法,其中,控制的步骤包括响应于接收指示来控制从核的较高最大时钟频率降低到核的较低最大时钟频率。

示例18包括如示例17所述的方法,其中,该较低最大时钟频率将低于第一类型指令的故障点时钟频率。

示例19是一种用于处理指令的系统,该系统包括互连、与该互连耦合的至少一个集成电路、以及与该互连耦合的动态随机存取存储器(dram)。该至少一个集成电路具有核以及功率控制单元。该功率控制单元具有用于接收将由核执行一个或多个第一类型指令的指示的接口。该功率控制单元还具有用于基于将由核执行第一类型指令的指示来控制核的最大时钟频率的逻辑。dram用来存储一组指令,该组指令如果由系统执行则用来使得该系统执行操作,该操作包括配置部分地由逻辑使用以控制核的最大时钟频率的至少一个依赖于指令类型的最大时钟频率控制。

示例20包括如示例19所述的系统,其中,逻辑用来控制从最大时钟频率降低到较低最大时钟频率,该最大时钟频率将高于第一类型指令的故障点时钟频率,该较低最大时钟频率将低于第一类型指令的故障点时钟频率。

示例21包括如示例19至20中任一项所述的系统,其中,该组指令如果由系统执行则用来使得系统在运行时期间配置至少一个依赖于指令类型的最大时钟频率控制,并且不需要该系统的重启。

示例22是一种制品,其包括非暂态机器可读存储介质。该非暂态机器可读存储介质存储一组指令。该组指令如果由机器执行则使得该机器执行包括将对应于一个或多个第一类型指令的至少一个依赖于指令类型的最大时钟频率控制存储到集成电路的架构上可见的控制寄存器的操作。集成电路用来使用至少一个依赖于指令类型的最大时钟频率控制以在第一类型指令的执行期间控制核的最大时钟频率。

示例23包括如示例22所述的制品,其中该组指令如果由机器执行则使得该机器执行包括在运行时期间将至少一个依赖于指令类型的最大时钟频率控制存储到架构上可见的控制寄存器的操作。

示例24包括如示例22至23中任一项所述的制品,其中,该组指令包括基本输入/输出系统(bios)、操作系统和频率调谐软件中的一者的指令。

示例25是处理器或其他装置,可操作以执行如示例13至18中任一项所述的方法。

示例26是处理器或其他设备,其包括用于执行如示例13至18中任一项所述的方法的装置。

示例27是处理器或其他设备,其包括可操作以执行如示例13至18中任一项所述的方法的模块和/或单元和/或逻辑和/或电路和/或装置的任何组合。

示例28是一种任选地非暂态和/或有形机器可读介质,其任选地存储或以其他方式提供指令,如果和/或当由处理器、计算机系统、电子设备或其他机器执行该指令时,该指令可操作以使得该机器执行如示例13至18中任一项所述的方法。

示例29是基本上如本文中所描述的处理器或其他装置。

示例30是可操作以执行基本上如本文中所描述的任何方法的处理器或其他装置。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1