首页 / 专利库 / 专利权 / 第I章 / 国际申请 / 修改 / 基于中断率来修改处理器频率

基于中断率来修改处理器频率

阅读:777发布:2020-05-29

专利汇可以提供基于中断率来修改处理器频率专利检索,专利查询,专利分析的服务。并且一种处理器包括处理引擎、至少一个性能计数器、以及功率控制 电路 。该至少一个性能计数器用于确定第一处理引擎的至少一个中断率度量。功率控制电路用于:使用至少一个性能计数器来判定在第一处理引擎正在第一 频率 水 平下进行操作时至少一个中断率度量是否已达到第一 阈值 ;以及响应于在第一处理引擎正在第一频率水平下进行操作时该至少一个中断率度量已达到第一阈值的判定,将第一处理引擎的操作频率从第一频率水平提高到第二频率水平。,下面是基于中断率来修改处理器频率专利的具体信息内容。

1.一种处理器,包括:
多个处理引擎;
至少一个性能计数器,用于确定第一处理引擎的至少一个中断率度量;以及功率控制电路,所述功率控制电路用于:
使用所述至少一个性能计数器来判定在所述第一处理引擎正在第一频率平下进行操作时所述至少一个中断率度量是否已达到第一阈值;以及
响应于在所述第一处理引擎正在所述第一频率水平下进行操作时所述至少一个中断率度量已达到所述第一阈值的判定,将所述第一处理引擎的操作频率从所述第一频率水平提高到第二频率水平。
2.如权利要求1所述的处理器,所述功率控制电路用于:
检测对所述第一处理引擎的所述操作频率的降低的指示;
使用所述至少一个性能计数器来判定在所述第一处理引擎正在所述第一处理引擎的最大频率水平下进行操作时所述至少一个中断率度量是否已达到所述第一阈值;以及响应于在所述第一处理引擎正在所述最大频率水平下进行操作时所述至少一个中断率度量已达到所述第一阈值的判定,防止所述第一处理引擎的所述操作频率从所述最大频率水平的降低。
3.如权利要求1所述的处理器,所述功率控制电路用于:
响应于在所述第一处理引擎正在所述第一频率水平下进行操作时所述至少一个中断率度量尚未达到所述第一阈值的判定,使所述第一处理引擎继续处于所述第一频率水平。
4.如权利要求1所述的处理器,其中,所述至少一个性能计数器包括所述处理器的至少一个硬件计数器。
5.如权利要求1所述的处理器,其中,所述至少一个中断率度量包括基于用于处置经掩码的中断的处理负载的比例的第一中断度量,其中,所述第一中断度量与所述第一阈值相关联。
6.如权利要求5所述的处理器,其中,所述至少一个中断率度量进一步包括基于用于处置经掩码的中断和未经掩码的中断的处理负载的比例的第二中断度量,其中,所述第二中断度量与第二阈值相关联。
7.如权利要求6所述的处理器,进一步包括至少一个寄存器,用于存储所述第一阈值和所述第二阈值的值。
8.如权利要求1所述的处理器,其中,所述功率控制电路是所述处理器的功率控制单元,其中,所述功率控制单元和所述第一处理引擎是所述处理器的单独的组件。
9.一种方法,包括:
调整硬件计数器以确定处理器的中断率度量,其中,所述中断率度量是从用于处置经掩码的中断的处理周期的比例与用于处置经掩码的中断和未经掩码的中断两者的处理周期的比例中选择的至少一者;
基于所述硬件计数器来判定在所述处理器正在第一频率水平下进行操作时所述中断率度量是否已达到阈值;以及
响应于在所述处理引擎正在所述第一频率水平下进行操作时所述中断率度量已达到所述阈值的判定,将所述处理器的操作频率从所述第一频率水平提高到第二频率水平。
10.如权利要求9所述的方法,进一步包括:
检测对所述处理器的所述操作频率的降低的指示;
基于所述硬件计数器来判定在所述处理器正在所述处理器的最大频率水平下进行操作时所述中断率度量是否已达到所述阈值;以及
响应于当所述处理器正在所述最大频率水平下进行操作时所述至少一个中断率度量已达到所述阈值的判定,防止所述处理器的所述操作频率从所述最大频率水平的降低。
11.如权利要求9所述的方法,进一步包括:
响应于当所述处理器正在所述第一频率水平下进行操作时所述中断率度量尚未达到所述阈值的判定,将所述处理器维持处于所述第一频率水平。
12.如权利要求9所述的方法,其中,所述硬件计数器用于对在滑动时间窗口期间发生的经掩码的中断进行计数,并且其中,所述中断率度量基于用于处置经掩码的中断的处理负载的比例。
13.如权利要求9所述的方法,其中,所述硬件计数器用于对在滑动时间窗口期间发生的经掩码的中断和未经掩码的中断进行计数,并且其中,所述中断率度量基于用于处置经掩码的中断和未经掩码的中断的处理负载的比例。
14.如权利要求9所述的方法,其中,所述硬件计数器是从所述处理器的总中断计数器与经掩码的中断计数器中选择的至少一者。
15.一种系统,包括:
处理器,包括多个处理引擎、至少一个性能计数器、以及功率控制单元,所述功率控制单元用于:
使用所述至少一个性能计数器来判定在第一处理引擎正在第一频率水平下进行操作时至少一个中断率度量是否已经达到第一阈值;
判定所述第一频率水平是否为所述第一处理引擎的最大频率水平;以及响应于在所述第一处理引擎不是正在所述最大频率水平下进行操作时所述至少一个中断率度量已达到所述第一阈值的判定,将所述第一处理引擎的操作频率提高到第二频率水平;以及
耦合至所述处理器的外部存储器
16.如权利要求15所述的系统,所述功率控制单元用于:
响应于在所述第一处理引擎正在所述最大频率水平下进行操作时所述至少一个中断率度量已达到所述第一阈值的判定,将所述处理器维持处于所述最大频率水平。
17.如权利要求15所述的系统,所述功率控制单元用于:
检测对所述第一处理引擎的所述操作频率从所述最大频率水平的降低的指示;以及当所述至少一个中断率度量等于或大于所述第一阈值时,防止所述第一处理引擎的所述操作频率从所述最大频率水平的降低。
18.如权利要求15所述的系统,其中,所述至少一个性能计数器包括硬件计数器,用于仅对由所述第一处理引擎处置的经掩码的中断进行计数。
19.如权利要求15所述的系统,其中,所述至少一个性能计数器包括硬件计数器,用于对由所述第一处理引擎处置的经掩码的中断和未经掩码的中断两者进行计数。
20.如权利要求15所述的系统,其中,所述至少一个性能计数器包括:
第一硬件计数器,用于基于用于仅处置经掩码的中断的处理负载的比例来确定第一中断度量,其中,所述第一中断度量与所述第一阈值相关联;以及
第二硬件计数器,用于基于用于处置经掩码的中断和未经掩码的中断两者的处理负载的比例来确定第二中断度量,其中,所述第二中断度量与第二阈值相关联。

说明书全文

基于中断率来修改处理器频率

技术领域

[0001] 实施例涉及计算机处理器,并且更具体地,涉及修改计算机处理器中的操作频率。

背景技术

[0002] 半导体处理和逻辑设计的进步已允许可在集成电路设备上存在的逻辑数量的增长。作为结果,计算机系统配置已从系统中的单个或多个集成电路演进到各个集成电路上的多个硬件线程、多个核、多个器件和/或完整系统。进一步地,随着集成电路的密度增长,对计算系统的功率要求也已提高。结果是,存在对与集成电路相关联的能效和节能的迫切需求。附图说明
[0003] 图1是根据本发明的实施例的系统的部分的框图
[0004] 图2是根据本发明的实施例的处理器的框图。
[0005] 图3是根据本发明的另一实施例的多域处理器的框图。
[0006] 图4是包括多个核的处理器的实施例。
[0007] 图5是根据本发明的一个实施例的处理器核的微架构的框图。
[0008] 图6是根据另一实施例的处理器核的微架构的框图。
[0009] 图7是根据又一实施例的处理器核的微架构的框图。
[0010] 图8是根据更进一步的实施例的处理器核的微架构的框图。
[0011] 图9是根据本发明的另一实施例的处理器的框图。
[0012] 图10是根据本发明的实施例的代表性SoC的框图。
[0013] 图11是根据本发明的实施例的另一示例SoC的框图。
[0014] 图12是可以与实施例一起使用的示例系统的框图。
[0015] 图13是可与实施例一起使用的另一示例系统的框图。
[0016] 图14是代表性计算机系统的框图。
[0017] 图15是根据本发明的实施例的系统的框图。
[0018] 图16是图示出根据实施例的用于制造集成电路以执行操作的IP核开发系统的框图。
[0019] 图17是根据一个或多个实施例的示例系统的示图。
[0020] 图18是根据一个或多个实施例的示例控制逻辑的示图。
[0021] 图19是根据一个或多个实施例的示例方法的流程图
[0022] 图20是根据一个或多个实施例的示例方法的流程图。
[0023] 图21A-图21B是图示根据本发明的实施例的通用向量友好指令格式及其指令模板的框图;
[0024] 图22A-图22D是图示根据本发明的实施例的示例性专用向量友好指令格式的框图;
[0025] 图23是根据本发明的一个实施例的寄存器架构的框图;
[0026] 图24A是示出图示本发明的实施例的示例性有序流线和示例性的寄存器重命名的乱序发布/执行流水线的框图。
[0027] 图24B是图示根据本发明的实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核的框图;
[0028] 图25A-图25B图示更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑(包括相同类型和/或不同类型的其他核)中的一个逻辑块;
[0029] 图26是根据本发明的实施例可具有多于一个核、可具有集成存储器控制器、以及可具有集成图形器件的处理器的框图;
[0030] 图27-图28是示例性计算机架构的框图;以及
[0031] 图29是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。

具体实施方式

[0032] 在计算机技术中,中断是被发送给处理器(例如,中央处理单元)的、指示要求由该处理器处置的事件的信号。例如,输入设备(例如,键盘)可发送中断以指示处理器应当读取由用户按压的键。在另一示例中,设备驱动器可发送中断以指示处理器应当读取缓冲器中所存储的数据。在又一示例中,软件线程可使用处理器间中断(IPI)来与另一软件线程进行同步。中断在本文中可被称为经掩码的或未经掩码的。如本文中所使用,“未经掩码的”是指可以被处理器暂时忽略的中断,而“经掩码的”是指不可被处理器忽略的中断。
[0033] 在一些处理器中,可动态地调整处理器的操作参数以降低功率使用。例如,当程序指令的处理器利用相对低时可降低操作频率,由此改善功率效率。然而,当处置中断时,处理器可能看起来具有相对低的利用,并且可因此引起处理器频率的降低。由此,处置中断的性能可能降低。
[0034] 根据一个或多个实施例,性能计数器可被调整,以确定处理引擎的中断率度量(例如,由处理引擎用来处置经掩码的中断的周期的数量或比例、由处理引擎用来处置经掩码的和未经掩码的中断的周期的数量或比例等等)。处理器的功率控制电路可使用性能计数器来判定中断率度量是否已达到对应的阈值。如果是,则功率控制电路可提高处理引擎的操作频率。进一步地,如果处理引擎已经处于最大频率,则功率控制电路可维持该最大频率并且可防止降低到与其他参数相关联的较低的频率(例如,由于低处理器利用的频率降低)。相应地,一个或多个实施例可改善处理引擎的中断性能。下文参考图17-图20进一步描述一些实施例的各种细节。
[0035] 现在参考图1,所示的是根据本发明的实施例的系统的部分的框图。如图1中所示,系统100可以包括各种组件,其包括所示为多核处理器的处理器110。处理器110可经由外部电压调节器160耦合至电源150,该外部电压调节器160可执行第一电压转换以将经调节的主电压Vreg提供给处理器110。
[0036] 可以看出,处理器110可以是包括多个核120a-120n的单管芯处理器。另外,每一个核可以与集成的电压调节器(IVR)125a-125n相关联,这些集成的电压调节器接收经调节的主电压,并生成操作电压,操作电压被提供到与IVR相关联的处理器的一个或多个代理。相应地,可提供IVR实现方式以允许对每一个单个核的电压进而对功率和性能进行细粒度的控制。由此,每一个核都可在独立的电压和频率下操作,从而允许极大的灵活性,并提供平衡功耗与性能的广泛机会。在一些实施例中,对多个IVR的使用允许将组件分组到不同的功率层中,使得功率被IVR调节并且仅被提供给组中的那些组件。在功率管理期间,当处理器被置于某个低功率状态时,一个IVR的给定的功率层可以被掉电或断电,而另一IVR的另一功率层保持为活动的或完全供电的。类似地,核120可包括诸如一个或多个相环(PLL)的独立的时钟发生电路或与其相关联以独立地控制每个核120的操作频率。
[0037] 仍参考图1,附加的组件可存在于处理器内,包括输入/输出接口(IF)132、另一接口134以及集成存储器控制器(IMC)136。可以看出,这些组件中的每一个都可以由另一集成的电压调节器125X来供电。在一个实施例中,接口132可以为 快速路径互连(QPI)互连使能操作,该互连在包括多个层的高速缓存一致性协议中提供点对点(PtP)链路,多个层包括物理层、链路层和协议层。进而,接口134可以经由外围组件互连快速(PCIeTM)协议来通信。
[0038] 还示出了功率控制单元(PCU)138,其可包括包含用于针对处理器110执行功率管理操作的硬件、软件和/或固件的电路。可以看出,PCU 138经由数字接口162将控制信息提供给外部电压调节器160以使该电压调节器生成合适的经调节的电压。PCU 138也经由另一数字接口163将控制信息提供给多个IVR 125以控制所生成的操作电压(或使对应的IVR在低功率模式下被禁用)。在各实施例中,PCU 138可以包括用于执行基于硬件的功率管理的各种功率管理逻辑单元。此类功率管理可以是完全被处理器控制的(例如,通过各种处理器硬件,并且其可以是被工作负荷和/或功率、热或其他处理器约束触发的),并且/或者功率管理可以响应于外部源(诸如平台或管理功率源或系统软件)而被执行。
[0039] 在图1中,PCU 138被图示为作为处理器的分开的逻辑来呈现。在其他情况下,PCU 138可在核120中给定的一个或多个核上执行。在一些情况下,可将PCU 138实现为被配置成用于执行其自身的专用功率管理代码(有时被称作P代码)的微控制器(专用的或通用的)或其他控制逻辑。在另外的其他实施例中,将由PCU 138执行的功率管理操作可对于处理器外部地实现,诸如通过分开的功率管理集成电路(PMIC)或处理器外部的另一组件的方式。在另外的其他实施例中,将由PCU 138执行的功率管理操作可在BIOS或其他系统软件内实现。
[0040] 虽然未在图1中示出,但在一些实施例中,处理器110和/或核120可包括下文参考图17-图20所描述的组件和/或过程的全部或部分。
[0041] 实施例可尤其适合于多核处理器,其中,多个核中的每一个可以以独立的电压和频率点进行操作。如本文中所使用的术语“域”用于意指以同一电压和频率点进行操作的硬件和/或逻辑的集合。另外,多核处理器可以进一步包括其他非核处理引擎,诸如固定功能单元、图形引擎等等。此类处理器可包括除核以外的独立的域,诸如与图形引擎相关联的一个或多个域(本文中被称作图形域)以及与非核电路相关联的一个或多个域(本文中被称作系统代理)。虽然多域处理器的许多实现方式可以在单个半导体管芯上形成,但其他实现方式可以由多芯片封装来实现,其中,不同的域可以呈现在单个封装的不同半导体管芯上。
[0042] 尽管为了易于说明没有示出,但应理解诸如非核逻辑和其他组件(诸如,内部存储器(例如,一个或多个层级的高速缓存存储器层次结构等))之类的附加组件可存在于处理器110内。此外,尽管在图1的实现中示出为具有集成的电压调节器,但是,多个实施例不限于此。例如,可以将其他经调节的电压从外部电压调节器160或经调节的电压的一个或多个附加的外部源提供给芯片上资源。
[0043] 注意,本文中所描述的功率管理技术可以独立于基于操作系统(OS)的功率管理(OSPM)机制,并与其互补。根据一个示例OSPM技术,处理器可在各种性能状态或等级(所谓的P状态,即从P0到PN)上操作。一般而言,P1性能状态可对应于可由OS请求的最高保证的性能状态。除此P1状态之外,OS可进一步请求更高的性能状态,即,P0状态。该P0状态因此可以是机会型状态、超频或睿频(turbo)模式状态,在该状态中,当功率和/或热预算是可用的时,处理器硬件可配置处理器或其至少多个部分,以便以高于保证频率的频率进行操作。在许多实现中,处理器可包括在制造期间融合或以其他方式写入到处理器中的、高于P1保证的最大频率的多个所谓的元(bin)频率,该频率超出特定处理器的最大峰值频率。此外,根据一个OSPM机制,处理器可以在各种功率状态或等级上进行操作。对于功率状态,OSPM机制可以指定不同的功耗状态,一般将其称为C状态(C0、C1到Cn状态)。当核是活动的时,它以C0状态运行,而当该核是空闲的时,可将其置于核低功率状态,也将其称为核非零C状态(例如,C1-C6状态),每一个C状态都处于更低的功耗等级(使得C6是比C1更深的低功率状态,等等)。
[0044] 应理解许多不同类型的功率管理技术可以在不同实施例中单独使用或组合使用。作为代表性示例,功率控制器可以控制处理器由一些形式的动态电压频率缩放(DVFS)来管理功率,在DVFS中一个或多个核或其他处理器逻辑的操作电压和/或操作频率可以被动态地控制以在某些情形下减少功耗。在示例中,可以使用加利福尼亚州圣克拉拉市的英特尔公司提供的增强型Intel SpeedStepTM技术来执行DVFS,以在最低功耗水平提供最优性能。
在另一示例中,可以使用Intel TurboBoostTM技术来执行DVFS以使得一个或多个核或其他计算引擎能基于条件(例如,工作负荷和可用性)以高于保证操作频率的频率进行操作。
[0045] 可以在某些示例中使用的另一功率管理技术是在不同计算引擎之间动态交换工作负荷。例如,处理器可以包括在不同功耗水平操作的非对称核或其他处理引擎,从而在功率约束的情形下,一个或多个工作负荷可以被动态地切换以在较低功率核或其他计算引擎上执行。另一示例性功率管理技术是硬件轮停(HDC),其可以使得核和/或其他计算引擎根据工作周期被周期性地启用和禁用,使得一个或多个核在工作周期的不活动时段变为不活动的,而在工作周期的活动时段变为活动的。
[0046] 当操作环境中存在约束时也可以使用功率管理技术。例如,当遭遇功率和/或热约束时,可以通过降低操作频率和/或电压来减少功率。其他功率管理技术包括扼制指令执行速率或限制对指令的调度。此外,使给定的指令集架构的指令包括关于功率管理操作的显式的或隐式的方向是可能的。虽然以这些特定示例描述,但应理解许多其他功率管理技术可以在特定实施例中使用。
[0047] 可在用于各种市场的处理器(包括服务器处理器、台式机处理器、移动处理器等)中实现多个实施例。现在参考图2,所示为根据本发明的实施例的处理器的框图。如图2中所示,处理器200可以是包括多个核210a–210n的多核处理器。在一个实施例中,每一个此类核可以是独立的功率域,并且可配置成基于工作负荷进入和退出活动状态和/或最大性能状态。一个或多个核210相对于其他核可以是异构的,例如,具有不同的微架构、指令集架构、流水线深度、功率和性能能。可经由互连215将各种核耦合至包括各种组件的系统代理220。可以看出,系统代理220可包括共享高速缓存230,共享高速缓存230可以是末级高速缓存。此外,系统代理可包括集成存储器控制器240,用于例如经由存储器总线与系统存储器(图2中未示出)通信。系统代理220还包括各种接口250和功率控制单元255,功率控制单元
255可包括用于执行本文中所描述的功率管理技术的逻辑。
[0048] 此外,通过接口250a-250n,可完成向诸如外围设备大容量存储设备等的各种芯片外组件的连接。尽管在图2的实施例中以此特定实现方式示出,但是本发明的范围不限于该方面。
[0049] 虽然未在图2中示出,但在一些实施例中,处理器200可包括下文参考图17-图20所描述的组件和/或过程的全部或部分。
[0050] 现在参考图3,所示出的是根据本发明的另一实施例的多域处理器的框图。如图3的实施例中所示,处理器300包括多个域。具体而言,核域310可以包括多个核310a–310n,图形域320可以包括一个或多个图形引擎,并且还可以存在系统代理域350。在一些实施例中,系统代理域350能以独立于核域的独立频率执行,并且可在全部的时刻保持被供电以处理功率控制事件和功率管理,使得可以控制域310和320动态地进入和退出高功率状态和低功率状态。域310和320中的每一个能以不同的电压和/或功率操作。注意,虽然仅以三个域示出,但是应理解,本发明的范围不限于此方面,并且附加的域可存在于其他实施例中。例如,多个核域可存在,每一个核域包括至少一个核。
[0051] 一般而言,除各种执行单元和附加的处理元件之外,每个核310a-310n还可进一步包括多个低层级高速缓存。进而,各种核可彼此耦合,并且耦合至共享高速缓存存储器,该共享高速缓存存储器由末级高速缓存(LLC)340a–340n的多个单元形成。在各实施例中,可在多个核与图形引擎以及各种媒体处理电路之间共享LLC 340。如所示,环形互连330由此将多个核耦合至一起,并且在多个核、图形域320和系统代理域350之间提供互连。在一个实施例中,互连330可以是核域的部分。然而,在其他实施例中,该环形互连可以是其自身域中的。
[0052] 如进一步所示,系统代理域350可包括显示控制器352,该显示控制器352可提供对相关联的显示器的控制以及到它的接口。如进一步所示,系统代理域350可包括功率控制单元355,该功率控制单元355可包括用于执行本文中所描述的功率管理技术的逻辑。
[0053] 如图3中进一步所示,处理器300还可包括集成存储器控制器(IMC)370,其可提供到诸如动态随机存取存储器(DRAM)之类的系统存储器的接口。可以存在多个接口380a–380n以实现处理器与其他电路之间的互连。例如,在一个实施例中,可提供至少一个直接媒体接口(DMI)接口以及一个或多个PCIeTM接口。此外,为了提供诸如附加处理器或其他电路的其他代理之间的通信,还可以提供一个或多个QPI接口。尽管在图3的实施例中在该高层级示出,但是会理解,本发明的范围不限于该方面。
[0054] 虽然未在图3中示出,但在一些实施例中,处理器300可包括下文参考图17-图20所描述的组件和/或过程的全部或部分。
[0055] 参考图4,图示出包括多个核的处理器的实施例。处理器400包括任何处理器或处理器件,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持式处理器、应用处理器、协同处理器、片上系统(SoC)、或用于执行代码的其它器件。在一个实施例中,处理器400包括至少两个核——核401和402,它们可包括非对称核或对称核(所图示的实施例)。然而,处理器400可包括可以是对称的或非对称的任何数量的处理元件。
[0056] 在一个实施例中,处理元件指的是用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、进程单元、上下文、上下文单元、逻辑处理器、硬件线程、核和/或能够保持处理器的诸如执行状态或架构状态之类的状态的任何其他元件。换言之,在一个实施例中,处理元件指的是能够与诸如软件线程、操作系统、应用、或其他代码之类的代码独立地相关联的任何硬件。物理处理器通常指的是集成电路,其潜在地包括诸如核或硬件线程之类的任意数量的其他处理元件。
[0057] 核通常指的是位于集成电路上的能够维持独立架构状态的逻辑,其中每个独立维持的架构状态与至少一些专用执行资源相关联。与核相反,硬件线程通常指的是位于集成电路上的能够维持独立架构状态的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。如可见,当某些资源是共享的而其他资源是专用于架构状态的时候,硬件线程与核的术语之间的界线交叠。但核和硬件线程常常被操作系统视为单个的逻辑处理器,其中,操作系统能够分别在每一个逻辑处理器上调度操作。
[0058] 如图4中所图示,物理处理器400包括两个核——核401和402。在此,核401和402被认为是对称核,即,这些核具有相同的配置、功能单元和/或逻辑。在另一实施例中,核401包括乱序处理器核,而核402包括有序处理器核。然而,核401和402可以是从任何类型的核中单独地选出的,诸如原生核、受软件管理的核、适于执行原生指令集架构(ISA)的核、适于执行经转换ISA的核、协同设计的核或其他已知核。不过,为进一步讨论,以下将更详细地描述在核401中所图示的多个功能单元,因为核402中的多个单元以类似方式操作。
[0059] 如所描绘,核401包括两个硬件线程401a和401b,它们还可被称为硬件线程槽401a和401b。因此,在一个实施例中,诸如操作系统之类的软件实体潜在地将处理器400视为四个单独的处理器,即能够并发地执行四个软件线程的四个逻辑处理器或处理元件。如上所述,第一线程与架构状态寄存器401a相关联,第二线程与架构状态寄存器401b相关联,第三线程可与架构状态寄存器402a相关联,并且第四线程可与架构状态寄存器402b相关联。在此,架构状态寄存器(401a、401b、402a和402b)中的每一个可被称为处理元件、线程槽或线程单元,如上所述。如所图示,架构状态寄存器401a被复制在架构状态寄存器401b中,因此能够为逻辑处理器401a和逻辑处理器401b存储各个架构状态/上下文。在核401中,也可复制用于线程401a和401b的其他较小资源,诸如,指令指针以及分配器和重命名器块430中的重命名逻辑。可通过分区来共享诸如重排序/引退单元435中的重排序缓冲器、分支目标缓冲器和指令转换后备缓冲器(BTB和I-TLB)420、加载/存储缓冲器和队列之类的一些资源。可潜在地完全共享诸如通用内部寄存器、(多个)页表基寄存器、低层级数据高速缓存和数据TLB 450、(多个)执行单元440和重排序/引退单元435的多个部分之类的其他资源。
[0060] 处理器400通常包括其他资源,它们可被完全共享,可通过分区被共享,或可由处理元件专用/专用于处理元件。在图4中,图示出具有处理器的说明性逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可包括或省略这些功能单元中的任何单元,并包括未描绘出的任何其他已知的功能单元、逻辑或固件。如所图示,核401包括简化的、代表性的乱序(OOO)处理器核。但是,在不同实施例中,可利用有序处理器。
[0061] 核401还包括耦合至取出单元以用于解码所取出的元素的解码模块425。在一个实施例中,取出逻辑包括分别与线程槽401a、401b相关联的各个序列发生器。通常,核401与第一ISA相关联,该第一ISA定义/指定在处理器400上可执行的指令。作为第一ISA的部分的机器代码指令常包括引用/指定要被执行的指令或操作的指令的部分(被称为操作码)。解码模块425包括从这些指令的操作码识别出这些指令并在流水线上传递经解码的指令以进行第一ISA所定义的处理的电路。例如,在一个实施例中,解码器模块425包括被设计成用于或适于识别诸如事务性指令之类的特定指令的逻辑。作为由解码器模块425识别的结果,架构或核401采取特定的、预定义的动作以执行与适当指令相关联的任务。重要的是应注意,本文中所描述的任务、块、操作和方法中的任何一个可响应于单条或多条指令来执行;它们中的一些可以是新指令或旧指令。
[0062] 在一个示例中,分配器和重命名器块430包括用于保留资源的分配器,诸如,用于存储指令处理结果的寄存器堆。然而,线程401a和401b潜在地能够进行乱序执行,其中,分配器和重命名器块430还保留其他资源(诸如,用于跟踪指令结果的重排序缓冲器)。重命名器块430还可包括寄存器重命名器,其用于将程序/指令引用寄存器重命名为处理器400内部的其他寄存器。重排序/引退单元435包括用于支持被乱序执行的指令的乱序执行和稍后的有序引退的、诸如上述的重排序缓冲器、加载缓冲器和存储缓冲器之类的组件。
[0063] 在一个实施例中,调度器和(多个)执行单元块440包括调度器单元,其用于在多个执行单元上调度指令/操作。例如,在具有可用的浮点执行单元的执行单元的端口上调度浮点指令。还包括与执行单元相关联的寄存器堆,其用于存储信息指令处理结果。示例性的执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元以及其他已知的执行单元。
[0064] 较低层级的数据高速缓存和数据转换后备缓冲器(D-TLB)450耦合至(多个)执行单元440。数据高速缓存用于存储最近使用/操作的元素(诸如,数据操作数),潜在地在存储器一致性状态下保持这些元素。D-TLB用于存储最近的虚拟/线性至物理地址转换。作为特定示例,处理器可包括页表结构,用于将物理存储器分解成多个虚拟页。
[0065] 在此,核401和402共享对用于对最近被取出元素进行高速缓存的、较高层级或进一步远离的高速缓存410的访问。注意,较高层级或进一步远离指的是高速缓存层级增加或进一步远离(多个)执行单元。在一个实施例中,较高层级高速缓存410是末级数据高速缓存(处理器400上的存储器层次结构中的末级高速缓存),诸如,第二或第三级数据高速缓存。然而,较高层级高速缓存410不限于此,因为它可与指令高速缓存相关联或包括指令高速缓存。替代地,跟踪高速缓存(指令高速缓存的类型)可耦合在解码器模块425之后,用于存储最近经解码的跟踪。
[0066] 在所描绘的配置中,处理器400还包括总线接口405和可执行根据本发明的实施例的功率管理的功率控制单元460。在该情形下,总线接口405用于与在处理器400外部的设备(诸如系统存储器和其他组件)通信。
[0067] 存储器控制器470可以与诸如一个或多个存储器的其他设备对接。在示例中,总线接口405包括环形互连,其与用于对接存储器的存储器控制器和用于对接图形处理器的图形控制器互连。在SoC环境中,诸如网络接口、协同处理器、存储器、图形处理器以及任何其它已知计算机器件/接口之类的甚至更多的器件可被集成到单个管芯或集成电路上,以提供具有高功能性和低功耗的小形状因数。
[0068] 虽然未在图4中示出,但在一些实施例中,处理器400可包括下文参考图17-图20所描述的组件和/或过程的全部或部分。
[0069] 现在参考图5,所示为根据本发明的一个实施例的处理器核的微架构的框图。如图5所示,处理器核500可以是多级流水线类型的乱序处理器。核500可以基于所接收的操作电压在各种电压下操作,所接收的操作电压可以接收自集成电压调节器或外部电压调节器。
[0070] 如图5所示,核500包括前端单元510,前端单元510可用于取出会被执行的指令并将这些指令准备好以供稍后在处理器流水线中使用。例如,前端单元510可包括取出单元501、指令高速缓存503和指令解码器505。在某些实现中,前端单元510可进一步包括跟踪高速缓存、微代码存储以及微操作存储。取出单元501可(例如,从存储器或指令高速缓存503)取出宏指令并将它们馈送至指令解码器505以将它们解码为原语,即用于通过处理器执行的微操作。
[0071] 乱序(OOO)引擎515耦合在前端单元510与执行单元520之间,乱序引擎515可用于接收微指令并将它们准备好以供执行。更具体地,OOO引擎515可包括多个缓冲器,多个缓冲器用于重排序微指令流并分配执行所需的多个资源,以及提供对多个寄存器堆(例如,寄存器堆530和扩展寄存器堆535)中的存储位置上的逻辑寄存器的重命名。寄存器堆530可包括用于整数和浮点操作的单独的寄存器堆。为了配置、控制和附加操作,还可以存在一组机器专用寄存器(MSR)538并且可由核500内(以及核外部)的各种逻辑来访问。
[0072] 在执行单元520中可存在多种资源,包括例如多种整数、浮点和单指令多数据(SIMD)逻辑单元等其它专硬件。例如,除了这些执行单元以外,此类执行单元可包括一个或多个算术逻辑单元(ALU)522和一个或多个向量执行单元524。
[0073] 来自执行单元的结果可被提供至引退逻辑,即重排序缓冲器(ROB)540。更具体地,ROB 540可包括多种阵列和逻辑以接收与被执行的指令相关联的信息。然后,通过ROB 540检查该信息以确定指令是否可以有效引退并且结果数据是否被提交至处理器的架构状态,或阻止指令的正常引退的一个或多个异常是否发生。当然,ROB 540可处理与引退相关联的其他操作。
[0074] 如图5所示,ROB 540耦合至高速缓存550,在一个实施例中,高速缓存550可以是低层级高速缓存(例如,L1高速缓存),尽管本发明的范围不限于此。而且,执行单元520可直接耦合至高速缓存550。从高速缓存550,可发生与更高层级高速缓存、系统存储器等等的数据通信。虽然在图5的实施例中以此高级别示出,但应理解本发明的范围不限于此方面。例如,虽然图5的实现方式涉及了诸如具有 x86指令集架构(ISA)的乱序机器,但本发明的范围在此方面不受限制。即,其他实施例可在以下处理器中实现:有序处理器;诸如基于ARM的处理器的精简指令集计算(RISC)处理器;或具有另一类型ISA的处理器,该另一类型的ISA可经由仿真引擎和相关联的逻辑电路来仿真不同ISA的指令和操作。
[0075] 虽然未在图5中示出,但在一些实施例中,核500可包括下文参考图17-图20所描述的组件和/或过程的全部或部分。
[0076] 现在参考图6,所示为根据另一实施例的处理器核的微架构的框图。在图6的实施例中,核600可以是具有不同的微架构的低功率核,诸如设计为降低功耗的具有相对受限制的流水线深度的 基于凌动TM(AtomTM)的处理器如所示,核600包括耦合以将指令提供到指令解码器615的指令高速缓存610。分支预测器605可以耦合至指令高速缓存610。注意,指令高速缓存610可以进一步耦合至高速缓存存储器的另一层级,诸如L2高速缓存(为了易于说明,图6中未示出)。进而,指令解码器615将经解码的指令提供到发出队列(IQ)620以供存储和传递到给定的执行流水线。微代码ROM 618耦合至指令解码器615。
[0077] 浮点流水线630包括浮点(FP)寄存器堆632,其可包括具有给定位宽(诸如128、256或512位)的多个架构寄存器。流水线630包括浮点调度器634,用于调度指令以在流水线的多个执行单元之一上执行。在所示的实施例中,此类执行单元包括ALU 635、混洗单元636和浮点加法器638。进而,在这些执行单元中生成的结果可以被往回提供到缓冲器和/或寄存器堆632的寄存器。当然,应理解虽然以这几个示例执行单元示出,但是在另一实施例中可以存在附加的或不同的浮点执行单元。
[0078] 还可以提供整数流水线640。在所示的实施例中,流水线640包括整数(INT)寄存器堆642,其可包括具有给定位宽(诸如128或256位)的多个架构寄存器。流水线640包括整数执行(IE)调度器644,用于调度指令以在流水线的多个执行单元之一上执行。在所示的实施例中,此类执行单元包括ALU 645、移位器单元646和跳转执行单元(JEU)648。进而,在这些执行单元中生成的结果可以被往回提供到缓冲器和/或寄存器堆642的寄存器。当然,应理解虽然以这几个示例执行单元示出,但是在另一实施例中可以存在附加的或不同的整数执行单元。
[0079] 存储器执行(ME)调度器650可以调度存储器操作以在地址生成单元(AGU)652中执行,地址生成单元652还耦合至TLB 654。如所示,这些结构可以耦合至数据高速缓存660,数据高速缓存660可以是L0和/或L1数据高速缓存,其进而耦合至高速缓存存储器层次结构的附加层级,包括L2高速缓存存储器。
[0080] 为了提供对乱序执行的支持,可以提供分配器/重命名器670以作为重排序缓冲器680的附加,重排序缓冲器680配置为对被乱序地执行的指令进行重排序以供有序引退。虽然以图6的图示中的该特定流水线架构示出,但是应理解许多变型和替代是可能的。
[0081] 虽然未在图6中示出,但在一些实施例中,核600可包括下文参考图17-图20所描述的组件和/或过程的全部或部分。
[0082] 注意,在具有非对称核的处理器中,诸如根据图5和6的微架构,由于功率管理的原因,可以在核之间动态地交换工作负荷,因为这些核虽然具有不同的流水线设计和深度,但是可以具有相同或相关的ISA。可以按照对用户应用(并且也可能对内核)透明的方式来执行此类动态核交换。
[0083] 参考图7,所示为根据又一实施例的处理器核的微架构的框图。如图7所图示,核700可以包括多级有序流水线以在非常低的功耗水平处执行。作为一个此类示例,核700可以具有根据可从加利福尼亚州桑尼威尔市的ARM控股有限公司得到的ARM Cortex A53设计的微架构。在实现中,可以提供配置为执行32位和64位代码的8级流水线。核700包括取出单元710,取出单元710配置为取出指令并将这些指令提供到解码单元715,解码单元715可以解码指令,例如具有给定ISA(诸如ARMv8 ISA)的宏指令。此外,注意队列730可以耦合至解码单元715以存储经解码的指令。经解码的指令被提供到发出逻辑725,其中可以将经解码的指令发出到多个执行单元中的给定的一个。
[0084] 进一步参考图7,发出逻辑725可以将指令发出到多个执行单元中的一个。在所示的实施例中,这些执行单元包括整数单元735、乘法单元740、浮点/向量单元750、双发出单元760和加载/存储单元770。可以将这些不同的执行单元的结果提供到写回(WB)单元780。应理解,虽然为了便于说明示出单个写回单元,但是在一些实现中,分开的多个写回单元可以与执行单元中的每一个相关联。此外,应理解,虽然图7中示出的单元中的每一个和逻辑被表示为在高层级,但是特定实现可以包括多个或不同的结构。可以在许多不同的最终产品(从移动设备扩展到服务器系统)中实现使用一个或多个具有如图7中的流水线的核来设计的处理器。
[0085] 虽然未在图7中示出,但在一些实施例中,核700可包括下文参考图17-图20所描述的组件和/或过程的全部或部分。
[0086] 参考图8,所示为根据更进一步的实施例的处理器核的微架构的框图。如图8所图示,核800可以包括多级多发出乱序流水线以在非常高性能水平处执行(其可在高于图7的核700的功耗水平处发生)。作为一个此类示例,处理器800可以具有根据ARM Cortex A57设计的微架构。在实现中,可以提供配置为执行32位和64位代码的15(或更大)级流水线。此外,流水线可以提供3路(或更大)宽度和3路(或更大)发出操作。核800包括取出单元810,取出单元810配置为取出指令并将指令提供给耦合至高速缓存820的解码器/重命名器/分派器单元815。单元815可解码指令,指令例如具有ARMv8指令集架构的宏指令,重命名指令内的寄存器引用,并将指令(最终)分派到所选择的执行单元。经解码的指令可以存储在队列825中。注意,虽然为了便于说明在图8中示出单个队列结构,但是应理解分开的多个队列可以被提供给多个不同类型的执行单元中的每一个。
[0087] 在图8中还示出发出逻辑830,存储在队列825中的经解码的指令可以被从发出逻辑830发出到所选择的执行单元。在特定实施例中,发出逻辑830还可以实现为与发出逻辑830耦合的多个不同类型的执行单元中的每一个具有单独的发出逻辑。
[0088] 可以将经解码的指令发出到多个执行单元中的给定的一个。在所示的实施例中,这些执行单元包括一个或多个整数单元835、乘法单元840、浮点/向量单元850、分支单元860和加载/存储单元870。在实施例中,浮点/向量单元850可以配置为处理128或256位的SIMD或向量数据。此外,浮点/向量执行单元850可以执行IEEE-754双精度浮点操作。可以将这些不同的执行单元的结果提供到写回单元880。注意,在一些实现中,分开的写回单元可以与执行单元中的一个相关联。此外,应理解,虽然图8中示出的单元中的每一个和逻辑被表示为在高层级,但是特定实现可以包括多个或不同的结构。
[0089] 虽然未在图8中示出,但在一些实施例中,核800可包括下文参考图17-图20所描述的组件和/或过程的全部或部分。
[0090] 注意,在具有非对称核的处理器中,诸如根据图7和8的微架构,由于功率管理的原因,可以动态地交换工作负荷,因为这些核虽然具有不同的流水线设计和深度,但是可以具有相同或相关的ISA。可以按照对用户应用(并且也可能对内核)透明的方式来执行此类动态核交换。
[0091] 可以在许多不同的最终产品(从移动设备扩展到服务器系统)中实现设计为使用一个或多个具有图5-8中的任意一个或多个中的流水线的核的处理器。现在参考图9,所示是根据本发明的另一实施例的处理器的框图。在图9的实施例中,处理器900可以是包括多个域的SoC,可控制其中的每一个域在独立的操作电压和操作频率下进行操作。作为特定的说明性示例,处理器900可以是基于 架构核TM的处理器(诸如,i3、i5、i7)或可从英特尔公司得到的另一个此类处理器。然而,诸如可从加利福尼亚州桑尼威尔的超微半导体有限公司(AMD)得到的、来自ARM控股有限公司或其被许可方的基于ARM的设计的、或来自加利福尼亚州桑尼威尔的MIPS技术公司或它们的被许可方或采用者的基于MIPS的设计之类的其他低功率处理器可替代地存在于诸如苹果A7处理器、高通骁龙处理器或德州仪器OMAP处理器之类的其他实施例中。此类SoC可用于诸如智能电话、平板计算机、平板手机计算机、超极本TM计算机或其他便携式计算设备之类的低功率系统中,其可包含具有基于异构系统架构的处理器设计的异构系统架构。
[0092] 在图9所示的高层级视图中,处理器900包括多个核单元910a-910n。每一个核单元都可包括一个或多个处理器核、一个或多个高速缓存存储器和其他电路。每一个核单元910都可支持一个或多个指令集(例如,x86指令集(具有与较新版本一起添加的一些扩展);MIPS指令集;ARM指令集(具有诸如NEON的可选附加扩展))或其他指令集或其组合。注意,核单元中的一些可以是异构资源(例如,具有不同设计)。此外,每一个此类核可耦合至高速缓存存储器(未示出),在实施例中,该高速缓存存储器可以是共享层级2(L2)高速缓存存储器。可使用非易失性存储器930来存储各种程序和其他数据。例如,可以使用该存储设备来存储微代码的至少多个部分、诸如BIOS之类的引导信息、其他系统软件等。
[0093] 每一个核单元910还可包括诸如总线接口单元之类的接口,其用于实现向处理器的附加电路的互连。在实施例中,每一个核单元910都耦合至一致性结构,该一致性结构可充当进而耦合至存储器控制器935的主高速缓存一致性管芯上互连。存储器控制器935转而控制与诸如DRAM之类的存储器(为了易于说明,在图9中未示出)的通信。
[0094] 除这些核单元之外,附加的处理引擎也存在于该处理器内,包括至少一个图形单元920,该图形单元920可包括用于执行图形处理以及可能在图形处理器上执行通用操作(所谓的GPGPU操作)的一个或多个图形处理单元(GPU)。此外,可以存在至少一个图像信号处理器925。信号处理器925可配置成用于处理从一个或多个捕捉设备(无论是SoC内部的还是芯片外的)接收到的传入的图像数据。
[0095] 也可以存在其他加速器。在图9的图示中,视频译码器950可执行译码操作,包括对于视频信息的编码和解码,例如,提供对高清晰度视频内容的硬件加速支持。可进一步提供显示控制器955以加速显示操作,包括提供对系统的内部和外部显示器的支持。此外,可以存在安全处理器945,其用于执行诸如安全引导操作、各种加密操作等的安全操作。
[0096] 多个单元中的每一个可以经由功率管理器940控制其功耗,功率管理器940可以包括用于执行本文中所描述的各种功率管理技术的控制逻辑。
[0097] 在一些实施例中,处理器900可进一步包括耦合至一致性结构(各种外围设备可耦合至该一致性结构)的非一致性结构。一个或多个接口960a-960d实现与一个或多个芯片外设备的通信。此类通信可以经由各种通信协议,诸如,PCIeTM、GPIO、USB、I2C、UART、MIPI、SDIO、DDR、SPI、HDMI以及其他类型的通信协议。尽管在图9的实施例中在该高层级示出,但是会理解,本发明的范围不限于该方面。
[0098] 虽然未在图9中示出,但在一些实施例中,处理器900可包括下文参考图17-图20所描述的组件和/或过程的全部或部分。
[0099] 现在参考图10,所示为代表性SoC的框图。在所示实施例中,SoC1000可以是针对低功率操作所配置的多核SoC,该多核SoC待优化以便结合进智能电话或诸如平板计算机或其他便携式计算设备之类的其他低功率设备中。作为示例,可使用诸如较高功率核和/或低功率核(例如,乱序核和有序核)的组合之类的非对称核或不同类型核来实现SoC 1000。在不同的实施例中,这些核可以基于 架构TM核设计或ARM架构设计。在另一些实施例中,可在给定的SoC中实现英特尔核和ARM核的混合。
[0100] 如图10中所示,SoC 1000包括具有多个第一核1012a–1012d的第一核域1010。在示例中,这些核可以是诸如有序核之类的低功率核。在一个实施例中,可将这些第一核实现为ARM Cortex A53核。这些核转而耦合至核域1010的高速缓存存储器1015。此外,SoC 1000包括第二核域1020。在图10的图示中,第二核域1020具有多个第二核1022a–1022d。在示例中,这些核可以是比第一核1012消耗更高功耗的核。在实施例中,这些第二核可以是可实现为ARM Cortex A57核的乱序核。这些核转而耦合至核域1020的高速缓存存储器1025。注意,虽然图10中所示的示例在每个域中包括4个核,但是会理解,在其他示例中,更多或更少的核可存在于给定的域中。
[0101] 进一步参考图10,也提供图形域1030,其可包括一个或多个图形处理单元(GPU),这些图形处理单元配置成用于独立地执行例如由核域1010和1020中的一个或多个核所提供的图形工作负荷。作为示例,除了提供图形和显示渲染操作之外,GPU域1030可以用于提供对各种屏幕尺寸的显示支持。
[0102] 如所示,各种域耦合至一致性互连1040,在实施例中,该一致性互连可以是进而耦合至集成存储器控制器1050的高速缓存一致性互连结构。在一些示例中,一致性互连1040可包括共享高速缓存存储器,诸如,L3高速缓存。在实施例中,存储器控制器1050可以是用于提供与芯片外存储器进行的通信的多个通道(诸如,DRAM的多个通道(在图10中为了易于说明,没有示出))的直接存储器控制器。
[0103] 在不同的示例中,核域的数量可以变化。例如,对于适于结合进移动计算设备的低功率SoC,可以存在诸如图10中所示的有限数量的核域。更进一步地,在此类低功率SoC中,包括较高功率核的核域1020可具有较少数量的此类核。例如,在一个实现中,可提供两个核1022以允许以降低的功耗等级进行的操作。此外,也可将不同的核域耦合至中断控制器以启用在不同域之间的工作负荷的动态交换。
[0104] 在另一些实施例中,可以存在更大量的核域以及附加可选的IP逻辑,如此,可按比例将SoC放大到更高的性能(和功率)等级,以便结合进诸如台式机、服务器、高性能计算系统、基站等的其他计算设备中。作为一个此类示例,可提供各自具有给定数量的乱序核的4个核域。更进一步地,除了可选的GPU支持(作为示例,其可采取GPGPU的形式)之外,还可提供用于提供对特定功能(例如,web服务、网络处理、交换等)的优化的硬件支持的一个或多个加速器。此外,可以存在用于将此类加速器耦合至多个芯片外组件的输入/输出接口。
[0105] 虽然未在图10中示出,但在一些实施例中,SoC 1000可包括下文参考图17-图20所描述的组件和/或过程的全部或部分。
[0106] 现在参考图11,所示为另一示例SoC的框图。在图11的实施例中,SoC 1100可包括用于允许多媒体应用、通信和其他功能的高性能的各种电路。由此,SoC 1100适于结合进多种便携式和其他设备,诸如,智能电话、平板计算机、智能电视等。在所示示例中,SoC 1100包括中央处理器单元(CPU)域1110。在实施例中,多个单独的处理器核可存在于CPU域1110中。作为一个示例,CPU域1110可以是具有4个多线程核的四核处理器。此类处理器可以是同构或异构处理器,例如,低功率和高功率处理器核的混合。
[0107] 进而,提供GPU域1120以在一个或多个GPU中执行高级图形处理,从而处理图形并计算API。DSP单元1130可提供一个或多个低功率DSP,这些低功率DSP除了处理可在多媒体指令的执行期间发生的高级计算之外,还处理诸如音乐回放、音频/视频等的低功率多媒体应用。进而,通信单元1140可包括用于经由各种无线协议提供连接性的各种组件,各种无线协议诸如蜂窝通信(包括3G/4G LTE)、诸如蓝牙TM和IEEE 802.11之类的无线局域协议等。
[0108] 更进一步地,可使用多媒体处理器1150来执行对高清晰度视频和音频内容的捕捉和回放,包括对用户姿势的处理。传感器单元1160可包括多个传感器和/或用于对接到存在于给定平台中的各种芯片外传感器的传感器控制器。可向图像信号处理器1170提供一个或多个分开的ISP,其用于参照从平台的一个或多个相机(包括静止相机和视频相机)捕捉到的内容来执行图像处理
[0109] 显示处理器1180可提供对向给定像素密度的高清晰度显示器的连接的支持,包括无线地传递内容以在此类显示器上回放的能力。更进一步地,位置单元1190可包括具有对多个GPS星座图的支持的GPS接收机,以便向应用提供使用此类GPS接收机所获取的高精度定位信息。会理解,虽然在图11的示例中以该特定的一组组件示出,但是许多变型和替代是可能的。
[0110] 虽然未在图11中示出,但在一些实施例中,SoC 1100可包括下文参考图17-图20所描述的组件和/或过程的全部或部分。
[0111] 现在参考图12,所示为可与多个实施例一起使用的示例系统的框图。如所见,系统1200可以是智能电话或其他无线通信器。基带处理器1205被配置成执行关于会从该系统传输或由该系统接收的通信信号的各种信号处理。进而,基带处理器1205被耦合至应用处理器1210,该应用处理器1210可以是系统的主CPU,以执行除了诸如许多公知的社交媒体与多媒体应用的用户应用之外的OS以及其他系统软件。应用处理器1210可以进一步被配置成为该设备执行各种其他计算操作。
[0112] 进而,应用处理器1210可以耦合至用户接口/显示器1220,例如,触摸屏显示器。此外,应用处理器1210可耦合至包括非易失性存储器(即,闪存1230)和系统存储器(即,动态随机存取存储器(DRAM)1235)的存储器系统。如进一步所示,应用处理器1210进一步耦合至诸如可记录视频和/或静止图像的一个或多个图像捕捉设备之类的捕捉设备1240。
[0113] 仍然参考图12,包括订户身份模块和可能的安全存储设备和加密处理器的通用集成电路卡(UICC)1246也耦合至应用处理器1210。系统1200可以进一步包括可以耦合至应用处理器1210的安全处理器1250。多个传感器1225可以耦合至应用处理器1210以实现各种感测到的信息的输入,诸如加速度计与其他环境信息。音频输出设备1295可提供接口,以便例如以语音通信、播放的或流音频数据等的形式输出声音。
[0114] 如进一步所图示,提供近场通信(NFC)非接触式接口1260,其经由NFC天线1265在NFC近场中通信。尽管图12中示出分离的天线,请理解在一些实现中,可以提供一根天线或不同组的天线以实现各种无线功能。
[0115] 功率管理集成电路(PMIC)1215耦合至应用处理器1210以执行平台级别功率管理。为此,PMIC 1215可以根据需要发出功率管理请求至应用处理器1210以进入某些低功率状态。此外,基于平台约束,PMIC 1215也可以控制系统1200的其他组件的功率级别。
[0116] 为了实现传送与接收通信,可以在基带处理器1205与天线1290之间耦合各种电路。具体而言,可以存在射频(RF)收发机1270与无线局域网(WLAN)收发机1275。一般而言,可以根据诸如3G或4G无线通信协议(诸如根据码分多址(CDMA)、全球移动通信系统(GSM)、长期演进(LTE)或其他协议)的给定的无线通信协议,使用RF收发机1270接收并传送无线数据和呼叫。此外,可以存在GPS传感器1280。也可以提供诸如无线电信号(例如,AM/FM与其他信号)的接收与传送的其他无线通信。此外,也可以经由WLAN收发机1275实现本地无线通信。
[0117] 虽然未在图12中示出,但在一些实施例中,系统1200可包括下文参考图17-图20所描述的组件和/或过程的全部或部分。
[0118] 现在参考图13,所示为可与多个实施例一起使用的另一示例系统的框图。在图13的图示中,系统1300可以是诸如平板计算机、2:1平板、平板手机或其他转换式或独立式平板系统之类的移动低功率系统。如所图示,存在SoC 1310,并且SoC 1310可配置成作为设备的应用处理器进行操作。
[0119] 各种设备可耦合至SoC 1310。在所示图示中,存储器子系统包括耦合至SoC 1310的闪存1340和DRAM 1345。此外,触摸面板1320耦合至SoC1310以提供显示能力和经由触摸的用户输入,包括在触摸面板1320的显示器上提供虚拟键盘。为了提供有线网络连接性,SoC 1310耦合至以太网接口1330。外围中枢1325耦合至SoC 1310以启用与各种外围设备的对接,诸如,可通过各种端口或其他连接器中的任何一个而被耦合至系统1300。
[0120] 除了SoC 1310中的内部功率管理电路和功能之外,PMIC 1380也耦合至SoC 1310以提供基于平台的功率管理,例如,基于该系统是由电池1390供电还是经由交流适配器1395由交流电供电。除了该基于功率源的功率管理之外,PMIC 1380还可执行基于环境和使用条件的平台功率管理活动。更进一步地,PMIC 1380可将控制和状态信息传递给SoC 1310以引起SoC 1310中的各种功率管理动作。
[0121] 仍然参考图13,为了提供无线能力,将WLAN单元1350耦合至SoC 1310,并转而耦合至天线1355。在各种实现中,WLAN单元1350可以根据一个或多个无线协议提供通信。
[0122] 如进一步所图示,多个传感器1360可耦合至SoC 1310。这些传感器可包括各种加速度计、环境和其他传感器,包括用户姿势传感器。最后,将音频编解码器1365耦合至SoC 1310以向音频输出设备1370提供接口。当然会理解,虽然以图13中的该特定实现示出,但是许多变型和替代是可能的。
[0123] 虽然未在图13中示出,但在一些实施例中,系统1300可包括下文参考图17-图20所描述的组件和/或过程的全部或部分。
[0124] 现在参考图14,所示为诸如笔记本、超极本TM或其他小形状因数系统的代表性计算机系统1400的框图。在一个实施例中,处理器1410包括微处理器、多核处理器、多线程处理器、超低电压处理器、嵌入式处理器,或其他已知处理元件。在所图示出的实现方式中,处理器1410充当主处理单元以及用于与系统1400的各种组件中的许多组件进行通信的中央枢纽,并且可包括如本文中所描述的功率管理电路。作为一个示例,处理器1410被实现为SoC。
[0125] 在一个实施例中,处理器1410与系统存储器1415通信。作为示例性示例,系统存储器1415被实现为经由多个存储器设备或模块来提供给定量的系统存储器。
[0126] 为提供对诸如数据、应用、一个或多个操作系统等的信息的持续的存储,大容量存储设备1420也可耦合至处理器1410。在各种实施例中,为了实现更薄和更轻的系统设计以及为了改善系统响应,该大容量存储设备可以经由SSD被实现,或者该大容量存储设备可以主要使用具有较小量的SSD存储设备的硬盘驱动器(HDD)来实现,SSD存储设备充当SSD高速缓存,以在掉电事件期间实现对上下文状态和其他此类信息的非易失性存储,从而在系统活动重新启动时,快速上电可以发生。图14还示出,闪存设备1422可以例如经由串行外围接口(SPI)耦合至处理器1410。该闪存设备可以提供对系统软件(包括基本输入/输出软件(BIOS)以及系统的其他固件)的非易失性存储。
[0127] 系统1400内可以存在各种输入/输出(I/O)设备。图14的实施例中具体示出显示器1424,显示器1424可以是进一步提供触摸屏1425的高清晰度LCD或LED面板。在一个实施例中,显示器1424可以经由显示互连耦合至处理器1410,该显示互连可实现为高性能图形互连。触摸屏1425可以经由另一互连(在实施例中,可以是I2C互连)耦合至处理器1410。如图
14中进一步所示,除触摸屏1425之外,经由触摸的用户输入也可以经由触板1430进行,触板
1430可以配置在机架内,并且还可以耦合至与触摸屏1425相同的I2C互连。
[0128] 出于感知计算和其他目的,各种传感器可以存在于系统内,并且能以不同的方式耦合至处理器1410。某些惯性传感器和环境传感器可以通过传感器中枢1440(例如,经由I2C互连)耦合至处理器1410。在图14示出的实施例中,这些传感器可以包括加速度计1441、环境光传感器(ALS)1442、罗盘1443以及陀螺仪1444。其他环境传感器可以包括一个或多个热传感器1446,在一些实施例中,这些热传感器1446经由系统管理总线(SMBus)总线耦合至处理器1410。
[0129] 如图14中还可见,各种外围设备可以经由低引脚计数(LPC)互连耦合至处理器1410。在所示的实施例中,各种组件可以通过嵌入式控制器1435耦合。此类组件可包括键盘
1436(例如,经由PS2接口耦合)、扇1437以及热传感器1439。在一些实施例中,触板1430还可以经由PS2接口耦合至EC1435。此外,诸如可信任平台模块(TPM)1438的安全处理器也可经由该LPC互连耦合至处理器1410。
[0130] 系统1400能以各种方式(包括以无线方式)与外部设备通信。在图14所示出的实施例中,存在各种无线模块,其中的每一个无线模块都可以对应于针对特定的无线通信协议而配置的无线电装置。用于在短距离(诸如,近场)内进行无线通信的一种方式可以经由NFC单元1445,在一个实施例中,该NFC单元1445可以经由SMBus与处理器1410进行通信。注意,经由该NFC单元1445,彼此紧邻的设备可以进行通信。
[0131] 如图14中进一步所示,附加的无线单元可包括其他短距离无线引擎,包括WLAN单元1450和蓝牙TM单元1452。通过使用WLAN单元1450,可以实现Wi-FiTM通信,而通过蓝牙TM单元1452,可以发生短距离蓝牙TM通信。这些单元可以经由给定的链路与处理器1410通信。
[0132] 另外,无线广域通信(例如,根据蜂窝式或其他无线广域协议)可以经由WWAN单元1456进行,该WWAN单元1456进而可以耦合至订户身份模块(SIM)1457。另外,为了允许接收并使用位置信息,还可以存在GPS模块1455。注意,在图14中示出的实施例中,WWAN单元1456和诸如相机模块1454的集成捕捉设备可以经由给定的链路进行通信。
[0133] 为了提供音频输入和输出,可以经由数字信号处理器(DSP)1460来实现音频处理器,DSP 1460可以经由高清晰度音频(HDA)链路来耦合至处理器1410。类似地,DSP 1460可以与集成的编码器/解码器(编解码器)和放大器1462进行通信,集成的编解码器和放大器1462进而可以耦合至可以在机架内实现的输出扬声器1463。类似地,放大器和编解码器
1462可以耦合至话筒1465以从话筒1465接收音频输入,在实施例中,话筒1465可以经由双阵列话筒(诸如数字话筒阵列)被实现,以提供高质量音频输入来实现对系统内的各种操作的语音激活的控制。另外注意,可以将音频输出从放大器/编解码器1462提供到头戴式机插孔1464。虽然在图14的实施例中利用这些特定组件示出,但应理解本发明的范围不限于此方面。
[0134] 虽然未在图14中示出,但在一些实施例中,系统1400可包括下文参考图17-图20所描述的组件和/或过程的全部或部分。
[0135] 可在许多不同的系统类型中实现实施例。现在参考图15,所示为根据本发明的实施例的系统的框图。如图15所示,多处理器系统1500是点对点互连系统,且包括经由点对点互连1550耦合的第一处理器1570和第二处理器1580。如图15所示,处理器1570和1580中的每一个可以是包括第一和第二处理器核(即处理器核1574a和1574b以及处理器核1584a和1584b)的多核处理器,尽管这些处理器中可能存在更多核。处理器中的每一个可包括PCU或其他功率管理逻辑以执行如本文中所描述的基于处理器的功率管理。
[0136] 仍参考图15,第一处理器1570还包括存储器控制器中枢(MCH)1572和点对点(P-P)接口1576和1578。类似地,第二处理器1580包括MCH1582和P-P接口1586与1588。如图15所示,MCH 1572和1582将多个处理器耦合至相应的存储器(即,存储器1532和存储器1534),这些存储器可以是本地附连到相应处理器的系统存储器(例如,DRAM)的多个部分。第一处理器1570与第二处理器1580可以分别经由P-P互连1562与1564耦合至芯片组1590。如图15中所示,芯片组1590包括P-P接口1594和1598。
[0137] 此外,芯片组1590包括通过P-P互连1539将芯片组1590与高性能图形引擎1538耦合的接口1592。进而,芯片组1590可以经由接口1596被耦合至第一总线1516。如图15所示,各种输入/输出(I/O)设备1514以及总线桥接器1518可耦合至第一总线1516,总线桥接器1518将第一总线1516耦合至第二总线1520。在一个实施例中,各种设备可耦合至第二总线
1520,包括例如,键盘/鼠标1522、通信设备1526以及诸如可包括代码1530的盘驱动器或者其他大容量存储设备之类的数据存储单元1528。此外,音频I/O 1524可以被耦合至第二总线1520。可将多个实施例合并到其他类型的系统中,包括诸如智能蜂窝电话、平板计算机、上网本、超极本TM等之类的移动设备。
[0138] 虽然未在图15中示出,但在一些实施例中,系统1500可包括下文参考图17-图20所描述的组件和/或过程的全部或部分。
[0139] 至少一个实施例的一个或多个方面可由存储在机器可读介质上的代表性代码实现,代表性代码表示和/或定义诸如处理器的集成电路内的逻辑。例如,机器可读介质可包括表示处理器内的各种逻辑的指令。当被机器读取时,指令可使机器制造逻辑以执行本文所述的技术。被称为“IP核”的这些表示是集成电路的逻辑的可重用单元,这些可重用单元可存储在有形的机器可读介质上作为描述集成电路的结构的硬件模型。可将硬件模型提供给多个客户或制造设施,客户或制造设施将硬件模型加载到制造集成电路的制造机器上。集成电路可以被制造使得该电路执行与本文所述的实施例中的任一个相关联地描述的操作。
[0140] 图16是图示出根据实施例的可用于制造集成电路以执行操作的IP核开发系统1600的框图。IP核开发系统1600可用于生成可被包含在较大的设计中或用于构建整个集成电路(例如,SoC集成电路)的模块化的、可重复使用的设计。设计设施1630可以高级编程语言(例如,C/C++)生成IP核设计的软件模拟1610。软件模拟1610可用于设计、测试或验证IP核的行为。然后可以从模拟模型创建或合成寄存器传送级(RTL)设计。RTL设计1615是对硬件寄存器之间的数字信号的流动建模的集成电路的行为的抽象,包括使用被建模的数字信号执行相关联的逻辑。除了RTL设计1615之外,还可创建、设计或合成在逻辑级或晶体管级的较低级设计。因此,初始设计和模拟的特定细节可以变化。
[0141] 可通过设计设施进一步将RTL设计1615或等价物合成到硬件模型1620中,硬件模型1620可以是以硬件描述语言(HDL)或物理设计数据的一些其他表示。可进一步模拟或测试HDL以验证IP核设计。可使用非易失性存储器1640(例如,硬盘、闪存、或任何非易失性存储介质)存储IP核设计以传递到第三方制造设施1665。替代地,可以在有线连接1650或无线连接1660上传送(例如,经由互联网)IP核设计。制造设施1665然后可以制造至少部分地基于IP核设计的集成电路。所制造的集成电路可配置为执行根据下文参考图17-图20所描述的组件和/或过程的操作。
[0142] 现在参考图17,所示出的是根据一个或多个实施例的系统1700的框图。在一些实施例中,系统1700可以是电子设备或组件的全部或部分。例如,系统1700可以是蜂窝电话、计算机、服务器、网络设备、芯片上系统(SoC)、控制器、无线收发机、电源单元等。此外,在一些实施例中,系统1700可以是诸如数据中心、计算集群等之类的相关或互连设备的群组的部分。
[0143] 如图17中所示,系统1700可包括操作地耦合至系统存储器1705的处理器1710。进一步地,虽然未在图17中示出,但系统1700可包括其他组件。在一个或多个实施例中,系统存储器1705可以利用任何(多种)类型的计算机存储器(例如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、非易失性存储器(NVM)、DRAM和NVM的组合等)来实现。
[0144] 处理器1710可以是通用硬件处理设备(例如,中央处理单元(CPU)、芯片上系统(SoC)等等)。如所示,处理器1710可以包括任何数量的处理引擎1715A-1715N(在总体上也被称为处理引擎1715)、功率控制电路1720、以及一个或多个性能计数器1730。例如,每个处理引擎1715可以是通用处理核。
[0145] 在一个或多个实施例中,功率控制电路1720和/或(多个)性能计数器1730可在硬件组件中实现。功率控制电路1720可控制处理引擎1715的与功率有关的参数。例如,功率控制电路1720可以是用于控制处理引擎1715的操作频率(也被称为时钟频率)的功率控制单元(PCU)。在一些示例中,功率控制电路1720和/或(多个)性能计数器1730可在处理器1710和/或处理引擎1715的微架构中实现。在一些实施例中,(多个)性能计数器1730可在软件中实现。
[0146] 在一个或多个实施例中,(多个)性能计数器1730可被调整,以确定处理引擎1715的一个或多个中断率度量。例如,性能计数器1730可对处理引擎1715在给定的时间段或给定数量的时钟周期期间处置经掩码的中断的时钟周期的数量进行计数,并且可因此确定与处置经掩码的中断相关联的处理负载的比例。在另一示例中,性能计数器1730可对处理引擎1715在给定的时间段或给定数量的时钟周期期间处置所有中断(包括经掩码的中断和未经掩码的中断)的时钟周期的数量进行计数,并且可确定与处置所有中断相关联的处理负载的比例。在再一示例中,性能计数器1730可指示处理引擎1715处置经掩码的和/或未经掩码的中断消耗的平均时间量。在又一示例中,性能计数器1730可指示处理引擎1715在给定的时间段或给定数量的时钟周期期间处置的经掩码的和/或未经掩码的中断的平均数量。在一些实施例中,性能计数器1730可反映与固定的时间段或固定数量的时钟周期对应的滑动窗口。注意,这些示例不是限制性的,并且构想了可使用(多个)性能计数器1730来对其他中断率度量进行计数或确定其他中断率度量。
[0147] 在一个或多个实施例中,功率控制电路1720可读取性能计数器1730或与性能计数器1730进行交互,以确定处理引擎1715的中断率度量,并且可将该中断率度量与所定义的阈值进行比较。如果确定中断率度量已经达到阈值(例如,等于或已经超过阈值),则功率控制电路1720可提高或维持处理引擎1715的操作频率。
[0148] 例如,如果处理引擎1715尚未达到最大操作频率(例如,处理引擎1715允许或指定的最高操作频率),则功率控制电路1720可将操作频率提高至较高的频率水平。以此种方式,功率控制电路1720可改善由处理引擎1715处置中断的性能。
[0149] 在另一示例中,如果处理引擎1715已经处于最大操作频率,则功率控制电路1720可维持最大操作频率。进一步地,功率控制电路1720可防止操作频率在中断率度量满足阈值时由于(多个)其他参数而被降低。例如,在低处理器利用的时间段期间,操作系统(OS)可向功率控制电路1720发送提示信号,以指示该功率控制电路1720应当降低操作频率。在该示例中,当中断率度量满足阈值时,功率控制电路1720可忽略OS提示。由此,功率控制电路1720可通过维持操作频率来改善中断处置性能。
[0150] 在一个或多个实施例中,功率控制电路1720可基于中断率度量满足阈值的判定来修改或影响处理器1710和/或处理引擎1715的其他操作参数。例如,功率控制电路1720可引起对电压水平、电流水平、热设置或参数(例如,风扇速度、冷却液流)、功率状态等等的调整。
[0151] 现在参考图18,所示出的是根据一个或多个实施例的示例控制逻辑1800。控制逻辑1800可在总体上对应于图17中示出的处理器1710中的一些或全部的示例实施例。如图18中所示,控制逻辑1800可包括总中断计数器1810、经掩码的中断计数器1815、以及功率控制单元1850。在一个或多个实施例中,功率控制单元1850可包括总中断阈值1820、经掩码的中断阈值1825、第一比较逻辑1830、第二比较逻辑1835以及频率控制器1840。
[0152] 在一些示例中,功率控制单元1850可与图17中示出的功率控制电路1720中的一些或全部对应。进一步地,总中断计数器1810和经掩码的中断计数器1815可包括在图17中示出的(多个)性能计数器1730中。在一个或多个示例中,可使用硬件组件来实现功率控制单元1850、总中断计数器1810、以及经掩码的中断计数器1815。在其他示例中,总中断计数器1810和/或经掩码的中断计数器1815可在软件中实现。
[0153] 在一些实施例中,总中断阈值1820和/或经掩码的中断阈值1825可以是用户可配置的和/或可被存储在功率控制单元1850的存储或寄存器中(例如,非易失性存储器中)。进一步地,在一些实施例中,可基于来自操作系统的提示信号来设置或调整总中断阈值1820和/或经掩码的中断阈值1825。
[0154] 在一些实施例中,经掩码的中断计数器1815可基于与处置经掩码的中断相关联的处理负载的比例来提供或指示中断度量。例如,经掩码的中断计数器1815可被调整,以对相关联的处理引擎在给定的时间段或给定数量的时钟周期期间仅处置经掩码的中断的时钟周期的数量进行计数。在另一示例中,经掩码的中断计数器1815可被调整,以反映由相关联的处理引擎用来处置经掩码的中断的平均时间量。在又一示例中,经掩码的中断计数器1815可被调整,以反映相关联的处理引擎在给定的时间段或给定数量的时钟周期期间处置经掩码的中断的经掩码的中断的平均数量。
[0155] 在一些实施例中,总中断计数器1810可基于与处置所有类型的中断相关联的处理负载的比例来提供或指示中断度量。例如,总中断计数器1810可被调整,以对相关联的处理引擎在给定的时间段或给定数量的时钟周期期间处置所有类型的中断(包括经掩码的和未经掩码的中断)的时钟周期的数量进行计数。在另一示例中,总中断计数器1810可被调整,以反映由相关联的处理引擎用来处置经掩码的中断和未经掩码的中断两者的平均时间量。在又一示例中,总中断计数器1810可被调整,以反映相关联的处理引擎在给定的时间段或给定数量的时钟周期期间处置经掩码的和未经掩码的中断的经掩码的中断的平均数量。
[0156] 在一个或多个实施例中,第一比较逻辑1830可将总中断计数器1810的计数值与总中断阈值1820进行比较。进一步地,当总中断计数器1810已经达到总中断阈值1820时,第一比较逻辑1830可通知(例如,经由信号、通知标志或寄存器等)频率控制器1840。响应于该通知,频率控制器1840可升高相关联的处理引擎的操作频率,或者可将相关联的处理引擎维持处于最大操作频率。
[0157] 在一个或多个实施例中,第二比较逻辑1835可将经掩码的中断计数器1815的计数值与经掩码的中断阈值1825进行比较。进一步地,当经掩码的中断计数器1815已经达到经掩码的中断阈值1825时,第二比较逻辑1835可通知频率控制器1840。响应于该通知,频率控制器1840可升高相关联的处理引擎的操作频率,或者可将相关联的处理引擎维持处于最大操作频率。
[0158] 在一些实施例中,频率控制器1840可响应于来自第一比较逻辑1830或第二比较逻辑1835的信号而升高或维持操作频率。在其他实施例中,频率控制器1840可仅在来自第一比较逻辑1830和第二比较逻辑1835两者的信号在给定时间段内被接收时升高或维持操作频率。
[0159] 在一个或多个实施例中,功率控制单元1850可基于来自第一比较逻辑1830和/或第二比较逻辑1835的(多个)信号来修改或影响其他操作参数。例如,功率控制单元1850可引起对电压水平、电流水平、热设置、功率状态等等的调整。
[0160] 现在参考图19,所示出的是根据一个或多个实施例的用于频率控制的方法1900的流程图。在各实施例中,方法1900可由可包括硬件(例如,处理设备、电路、专用逻辑、可编程逻辑、微代码等)、软件(例如,在处理设备上运行的指令)或其组合的处理逻辑来执行。在一些实现方式中,可使用图17-图18中示出的一个或多个组件(例如,功率控制电路1720和/或(多个)性能计数器1730)来执行方法1900。在固件或软件实施例中,方法1900可通过计算机执行的指令来实现,这些计算机执行的指令被存储在诸如光学、半导体或磁存储设备之类的非瞬态机器可读介质中。机器可读介质可存储数据,该数据如果被至少一个机器使用则使得该至少一个机器制造至少一个集成电路以执行方法。为了说明起见,方法1900中所涉及的动作可在下文参考图17-图18来描述,图17-图18示出了根据一个或多个实施例的示例。然而,本文所讨论的各实施例的范围不限于此方面。
[0161] 框1910可包括调整一个或多个性能计数器来确定第一处理引擎的至少一个中断率度量。例如,参考图17-图18,可递增总中断计数器1810以对由处理引擎1715A在给定时间段或给定数量的时钟周期期间处置的经掩码的和未经掩码的中断的数量进行计数。在一些实施例中,总中断计数器1810的计数可指示处理引擎1715A用来处置经掩码的和未经掩码的中断的时钟周期的比例。
[0162] 框1920可包括使用一个或多个性能计数器来判定当第一处理引擎在第一频率水平下操作时至少一个中断率度量是否已达到第一阈值。例如,参考图17-图18,第一比较逻辑1830可判定总中断计数器1810的计数值已达到总中断阈值1820。
[0163] 框1930可包括:响应于当第一处理引擎在第一频率水平下进行操作时至少一个中断率度量已达到第一阈值的判定,将第一处理引擎的操作频率从第一频率水平提高到第二频率水平。例如,参考图17-图18,响应于总中断计数器1810已达到总中断阈值1820的判定,第一比较逻辑1830可使得频率控制器1840提高处理引擎1715A的操作频率。在一些实施例中,如果处理引擎1715A尚未使用最大操作频率,则频率控制器1840可提高操作频率。在框1930之后,方法1900完成。
[0164] 现在参考图20,所示出的是根据一个或多个实施例的用于频率控制的方法2000的流程图。在各实施例中,方法2000可由可包括硬件(例如,处理设备、电路、专用逻辑、可编程逻辑、微代码等)、软件(例如,在处理设备上运行的指令)或其组合的处理逻辑来执行。在一些实现方式中,可使用图17-图18中示出的一个或多个组件(例如,功率控制电路1720和/或(多个)性能计数器1730)来执行方法2000。在固件或软件实施例中,方法2000可通过计算机执行的指令来实现,这些计算机执行的指令被存储在诸如光学、半导体或磁存储设备之类的非瞬态机器可读介质中。机器可读介质可存储数据,该数据如果被至少一个机器使用则使得该至少一个机器制造至少一个集成电路以执行方法。为了说明起见,方法2000中所涉及的动作可在下文参考图17-图18来描述,图17-图18示出了根据一个或多个实施例的示例。然而,本文所讨论的各实施例的范围不限于此方面。
[0165] 框2010可包括检测处理引擎中的中断。框2020可包括递增计数器以对处理引擎处置中断的周期进行计数。例如,参考图17-图18,经掩码的中断计数器1815可基于对由处理引擎1715A处置的经掩码的中断的检测而被递增。在一些实施例中,经掩码的中断计数器1815可对给定时间段或给定数量的时钟周期期间的经掩码的中断进行计数。因此,在一些实施例中,经掩码的中断计数器1815的计数可指示处理引擎1715A用来处置经掩码的中断的时钟周期的比例。
[0166] 菱形框2030可包括判定计数器是否已达到相关联的阈值。例如,参考图17-图18,第二比较逻辑1835可判定经掩码的中断计数器1815的计数等于还是大于经掩码的中断阈值1825。
[0167] 如果在菱形框2030处判定计数器尚未达到相关联的阈值,则方法2000不包括提高操作频率,而是替代地返回至框2010,以继续检测处理引擎中的中断。然而,如果在菱形框2030处判定计数器已经达到相关联的阈值,则方法2000在菱形框2040处继续。
[0168] 菱形框2040包括判定处理引擎是否已处于最大操作频率。如果在菱形框2040处判定处理引擎尚未处于最大操作频率,则在框2050处,可提高操作频率。例如,参考图17,功率控制电路1720可判定处理引擎1720A当前不在最高允许频率水平下进行操作,并且作为响应可将操作频率提高到下一个所定义的水平。在框2050之后,方法2000返回至框2010,以继续检测处理引擎中的中断。
[0169] 然而,如果在菱形框2040处判定处理引擎已经处于最大操作频率,则在框2060处,可阻止操作频率的降低。例如,参考图17,功率控制电路1720可判定处理引擎1720A当前正在最高允许频率水平下进行操作。假定功率控制电路1720接收到操作频率的降低的命令或指示(例如,来自操作系统、驱动器、主功率控制器等)。替代地,功率控制电路1720可包括指示操作频率的降低(例如,由于低处理器利用)的要求的内部逻辑。在此类情形下,功率控制电路1720可防止操作频率响应于经掩码的中断计数器1815等于或大于经掩码的中断阈值1825的判定而被降低。在一些示例中,功率控制电路1720可在给定的时间段内继续防止此类频率降低,和/或同时经掩码的中断计数器1815继续满足经掩码的中断阈值1825。在框
2060之后,方法2000返回至框2010,以继续检测处理引擎中的中断。
[0170] 在一些实施例中,可使用多个阈值水平和操作频率的多个提高来执行方法2000。例如,假定框2050在计数器达到第一阈值水平(在菱形框2030处)之后将操作频率降低至第一频率水平。进一步地,如以上所描述,框2050的输出可循环回到框2010,以继续检测中断。
进一步假定,在框2020处,计数器可继续对周期进行计数直到达到高于第一阈值水平的第二阈值水平。响应于在菱形框2030处判定已经达到第二阈值水平,可在框2050处将操作频率进一步提高到高于第一频率水平的第二频率水平。以此种方式,可按要求使用多个阈值水平来重复方法2000。
[0171] 注意,尽管图17-图20图示出各示例实现方式,但是其他变型是可能的。例如,构想可在参考图1-16所描述的示例设备和系统中实现一个或多个实施例。
[0172] 注意,为了说明起见而提供图1-图20中示出的示例,并且图1-图20中示出的示例不旨在限制任何实施例。具体而言,尽管为了清楚起见能以简化形式示出实施例,但是实施例可包括任何数量和/或布置的处理器、核、和/或附加组件(例如,总线、存储介质、连接器、功率组件、缓冲器、接口等)。例如,构想一些实施例除了所示的那些组件之外还可包括任何数量的组件,并且所示组件的不同布置可在某些实现方式中出现。此外,构想图1-图20所示示例中的细节可在一个或多个实施例中的任何地方使用。
[0173] 下文所描述的图21-图31详细描述用于实现上文的实施例的示例性架构和系统。在一些实施例中,上文所描述的一个或多个硬件组件和/或指令如下文所详述地被仿真,或被实现为软件模块
[0174] 上文详细描述的(多条)指令的实施例可按“通用向量友好指令格式”来实现,其在下文详细描述。在其他实施例中,不利用此类格式,并且使用另一指令格式,然而,下文对于写掩码寄存器、各种数据变换(混合、广播等)、寻址等的描述一般适用于上文对(多条)指令的实施例的描述。另外,在下文中详细描述示例性系统、架构和流水线。上文中(多条)指令的实施例可在此类系统、架构和流水线上执行,但是不限于详细描述的那些系统、架构和流水线。
[0175] 指令集可包括一种或多种指令格式。给定的指令格式可定义各种字段(例如,位的数量、位的位置)以指定将要执行的操作(例如,操作码)以及将对其执行该操作的(多个)操作数和/或(多个)其他数据字段(例如,掩码),等等。通过指令模板(或子格式)的定义来进一步分解一些指令格式。例如,可将给定指令格式的指令模板定义为具有该指令格式的字段(所包括的字段通常按照相同顺序,但是至少一些字段具有不同的位的位置,因为较少的字段被包括)的不同子集,和/或定义为具有以不同方式进行解释的给定字段。由此,ISA的每一条指令使用给定的指令格式(并且如果经定义,则按照该指令格式的指令模板中的给定的一个指令模板)来表达,并包括用于指定操作和操作数的字段。例如,示例性ADD(加法)指令具有特定的操作码和指令格式,该特定的指令格式包括用于指定该操作码的操作码字段和用于选择操作数(源1/目的地以及源2)的操作数字段;并且该ADD指令在指令流中出现将使得在操作数字段中具有选择特定操作数的特定的内容。已经推出和/或发布了被称为高级向量扩展(AVX)(AVX1和AVX2)和利用向量扩展(VEX)编码方案的SIMD扩展集(参见例如2014年9月的 64和IA-32架构软件开发者手册;并且参见2014年10月的 高
级向量扩展编程参考)。
示例性指令格式
[0176] 本文中所描述的(多条)指令的实施例能以不同的格式体现。另外,在下文中详述示例性系统、架构和流水线。(多条)指令的实施例可在此类系统、架构和流水线上执行,但是不限于详述的那些系统、架构和流水线。通用向量友好指令格式
[0177] 向量友好指令格式是适于向量指令(例如,存在专用于向量操作的特定字段)的指令格式。尽管描述了其中通过向量友好指令格式支持向量和标量操作两者的实施例,但是替代实施例仅使用通过向量友好指令格式的向量操作。
[0178] 图21A-图21B是图示根据本发明的实施例的通用向量友好指令格式及其指令模板的框图。图21A是图示根据本发明的实施例的通用向量友好指令格式及其A类指令模板的框图;而图21B是图示根据本发明的实施例的通用向量友好指令格式及其B类指令模板的框图。具体地,针对通用向量友好指令格式2100定义A类和B类指令模板,这两者都包括无存储器访问2105的指令模板和存储器访问2120的指令模板。在向量友好指令格式的上下文中的术语“通用”是指不束缚于任何特定指令集的指令格式。
[0179] 尽管将描述其中向量友好指令格式支持以下情况的本发明的实施例:64字节向量操作数长度(或尺寸)与32位(4字节)或64位(8字节)数据元素宽度(或尺寸)(并且由此,64字节向量由16个双字尺寸的元素组成,或者替代地由8个四字尺寸的元素组成);64字节向量操作数长度(或尺寸)与16位(2字节)或8位(1字节)数据元素宽度(或尺寸);32字节向量操作数长度(或尺寸)与32位(4字节)、64位(8字节)、16位(2字节)或8位(1字节)数据元素宽度(或尺寸);以及16字节向量操作数长度(或尺寸)与32位(4字节)、64位(8字节)、16位(2字节)、或8位(1字节)数据元素宽度(或尺寸);但是替代实施例可支持更大、更小和/或不同的向量操作数尺寸(例如,256字节向量操作数)与更大、更小或不同的数据元素宽度(例如,128位(16字节)数据元素宽度)。
[0180] 图21A中的A类指令模板包括:1)在无存储器访问2105的指令模板内,示出无存储器访问的完全舍入控制型操作2110的指令模板、以及无存储器访问的数据变换型操作2115的指令模板;以及2)在存储器访问2120的指令模板内,示出存储器访问的时效性2125的指令模板和存储器访问的非时效性2130的指令模板。图21B中的B类指令模板包括:1)在无存储器访问2105的指令模板内,示出无存储器访问的写掩码控制的部分舍入控制型操作2112的指令模板以及无存储器访问的写掩码控制的vsize型操作2117的指令模板;以及2)在存储器访问2120的指令模板内,示出存储器访问的写掩码控制2127的指令模板。
[0181] 通用向量友好指令格式2100包括以下列出的按照在图21A-21B中图示的顺序的如下字段。
[0182] 格式字段2140——该字段中的特定值(指令格式标识符值)唯一地标识向量友好指令格式,并且由此标识指令在指令流中以向量友好指令格式出现。由此,该字段对于仅具有通用向量友好指令格式的指令集是不需要的,在这个意义上该字段是任选的。
[0183] 基础操作字段2142——其内容区分不同的基础操作。
[0184] 寄存器索引字段2144——其内容直接或者通过地址生成来指定源或目的地操作数在寄存器中或者在存储器中的位置。这些字段包括足够数量的位以从PxQ(例如,32x512、16x128、32x1024、64x1024)寄存器堆中选择N个寄存器。尽管在一个实施例中N可多达三个源寄存器和一个目的地寄存器,但是替代实施例可支持更多或更少的源和目的地寄存器(例如,可支持多达两个源,其中这些源中的一个源还用作目的地;可支持多达三个源,其中这些源中的一个源还用作目的地;可支持多达两个源和一个目的地)。
[0185] 修饰符(modifier)字段2146——其内容将指定存储器访问的以通用向量指令格式出现的指令与不指定存储器访问的以通用向量指令格式出现的指令区分开;即在无存储器访问2105的指令模板与存储器访问2120的指令模板之间进行区分。存储器访问操作读取和/或写入到存储器层次(在一些情况下,使用寄存器中的值来指定源和/或目的地地址),而非存储器访问操作不这样(例如,源和/或目的地是寄存器)。尽管在一个实施例中,该字段还在三种不同的方式之间选择以执行存储器地址计算,但是替代实施例可支持更多、更少或不同的方式来执行存储器地址计算。
[0186] 扩充操作字段2150——其内容区分除基础操作以外还要执行各种不同操作中的哪一个操作。该字段是针对上下文的。在本发明的一个实施例中,该字段被分成类字段2168、α字段2152和β字段2154。扩充操作字段2150允许在单条指令而非2条、3条或4条指令中执行多组共同的操作。
[0187] 比例字段2160——其内容允许用于存储器地址生成(例如,用于使用(2比例*索引+基址)的地址生成)的索引字段的内容的按比例缩放。
[0188] 位移字段2162A——其内容用作存储器地址生成的一部分(例如,用于使用(2比例*索引+基址+位移)的地址生成)。
[0189] 位移因数字段2162B(注意,位移字段2162A直接在位移因数字段2162B上的并置指示使用一个或另一个)——其内容用作地址生成的一部分;它指定将按比例缩放存储器访问的尺寸(N)的位移因数——其中N是存储器访问中的字节数量(例如,用于使用(2比例*索引+基址+按比例缩放的位移)的地址生成)。忽略冗余的低阶位,并且因此将位移因数字段的内容乘以存储器操作数总尺寸(N)以生成将在计算有效地址中使用的最终位移。N的值由处理器硬件在运行时基于完整操作码字段2174(稍后在本文中描述)和数据操纵字段2154C确定。位移字段2162A和位移因数字段2162B不用于无存储器访问2105的指令模板和/或不同的实施例可实现这两者中的仅一个或不实现这两者中的任一个,在这个意义上,位移字段2162A和位移因数字段2162B是任选的。
[0190] 数据元素宽度字段2164——其内容区分将使用多个数据元素宽度中的哪一个(在一些实施例中用于所有指令;在其他实施例中只用于指令中的一些指令)。如果支持仅一个数据元素宽度和/或使用操作码的某一方面来支持数据元素宽度,则该字段是不需要的,在这个意义上,该字段是任选的。
[0191] 写掩码字段2170——其内容逐数据元素位置地控制目的地向量操作数中的数据元素位置是否反映基础操作和扩充操作的结果。A类指令模板支持合并-写掩码,而B类指令模板支持合并-写掩码和归零-写掩码两者。当合并时,向量掩码允许在执行(由基础操作和扩充操作指定的)任何操作期间保护目的地中的任何元素集免于更新;在另一实施例中,保持其中对应掩码位具有0的目的地的每一元素的旧值。相反,当归零时,向量掩码允许在执行(由基础操作和扩充操作指定的)任何操作期间使目的地中的任何元素集归零;在一个实施例中,目的地的元素在对应掩码位具有0值时被设为0。该功能的子集是控制正被执行的操作的向量长度的能力(即,从第一个到最后一个正被修改的元素的跨度),然而,被修改的元素不一定要是连续的。由此,写掩码字段2170允许部分向量操作,这包括加载、存储、算术、逻辑等。尽管描述了其中写掩码字段2170的内容选择了多个写掩码寄存器中的包含要使用的写掩码的一个写掩码寄存器(并且由此,写掩码字段2170的内容间接地标识要执行的掩码)的本发明的实施例,但是替代实施例替代地或附加地允许掩码写字段2170的内容直接指定要执行的掩码。
[0192] 立即数字段2172——其内容允许对立即数的指定。该字段在实现不支持立即数的通用向量友好格式中不存在且在不使用立即数的指令中不存在,在这个意义上,该字段是任选的。
[0193] 类字段2168——其内容在不同类的指令之间进行区分。参考图21A-图21B,该字段的内容在A类和B类指令之间进行选择。在图21A-图21B中,圆方形用于指示特定的值存在于字段中(例如,在图21A-图21B中分别用于类字段2168的A类2168A和B类2168B)。A类指令模板
[0194] 在A类非存储器访问2105的指令模板的情况下,α字段2152被解释为其内容区分要执行不同扩充操作类型中的哪一种(例如,针对无存储器访问的舍入型操作2110和无存储器访问的数据变换型操作2115的指令模板分别指定舍入2152A.1和数据变换2152A.2)的RS字段2152A,而β字段2154区分要执行所指定类型的操作中的哪一种。在无存储器访问2105的指令模板中,比例字段2160、位移字段2162A和位移比例字段2162B不存在。无存储器访问的指令模板——完全舍入控制型操作
[0195] 在无存储器访问的完全舍入控制型操作2110的指令模板中,β字段2154被解释为其(多个)内容提供静态舍入的舍入控制字段2154A。尽管在本发明的所述实施例中舍入控制字段2154A包括抑制所有浮点异常(SAE)字段2156和舍入操作控制字段2158,但是替代实施例可支持这两个概念,可将这两个概念编码为同一字段,或仅具有这些概念/字段中的一个或另一个(例如,可仅具有舍入操作控制字段2158)。
[0196] SAE字段2156——其内容区分是否禁用异常事件报告;当SAE字段2156的内容指示启用抑制时,给定的指令不报告任何种类的浮点异常标志,并且不唤起任何浮点异常处置程序。
[0197] 舍入操作控制字段2158——其内容区分要执行一组舍入操作中的哪一个(例如,向上舍入、向下舍入、向零舍入以及就近舍入)。由此,舍入操作控制字段2158允许逐指令地改变舍入模式。在其中处理器包括用于指定舍入模式的控制寄存器的本发明的一个实施例中,舍入操作控制字段2150的内容覆盖(override)该寄存器值。无存储器访问的指令模板-数据变换型操作
[0198] 在无存储器访问的数据变换型操作2115的指令模板中,β字段2154被解释为数据变换字段2154B,其内容区分要执行多个数据变换中的哪一个(例如,无数据变换、混合、广播)。
[0199] 在A类存储器访问2120的指令模板的情况下,α字段2152被解释为驱逐提示字段2152B,其内容区分要使用驱逐提示中的哪一个(在图21A中,对于存储器访问时效性2125的指令模板和存储器访问非时效性2130的指令模板分别指定时效性的2152B.1和非时效性的
2152B.2),而β字段2154被解释为数据操纵字段2154C,其内容区分要执行多个数据操纵操作(也称为基元(primitive))中的哪一个(例如,无操纵、广播、源的向上转换以及目的地的向下转换)。存储器访问2120的指令模板包括比例字段2160,并任选地包括位移字段2162A或位移比例字段2162B。
[0200] 向量存储器指令使用转换支持来执行来自存储器的向量加载以及向存储器的向量存储。如同寻常的向量指令,向量存储器指令以数据元素式的方式从/向存储器传输数据,其中实际被传输的元素由被选为写掩码的向量掩码的内容规定。存储器访问的指令模板——时效性的
[0201] 时效性的数据是可能足够快地被重新使用以从高速缓存操作受益的数据。然而,这是提示,并且不同的处理器能以不同的方式实现它,包括完全忽略该提示。存储器访问的指令模板——非时效性的
[0202] 非时效性的数据是不太可能足够快地被重新使用以从第一级高速缓存中的高速缓存操作受益且应当被给予驱逐优先级的数据。然而,这是提示,并且不同的处理器能以不同的方式实现它,包括完全忽略该提示。B类指令模板
[0203] 在B类指令模板的情况下,α字段2152被解释为写掩码控制(Z)字段2152C,其内容区分由写掩码字段2170控制的写掩码应当是合并还是归零。
[0204] 在B类非存储器访问2105的指令模板的情况下,β字段2154的一部分被解释为RL字段2157A,其内容区分要执行不同扩充操作类型中的哪一种(例如,针对无存储器访问的写掩码控制部分舍入控制类型操作2112的指令模板和无存储器访问的写掩码控制VSIZE型操作2117的指令模板分别指定舍入2157A.1和向量长度(VSIZE)2157A.2),而β字段2154的其余部分区分要执行所指定类型的操作中的哪一种。在无存储器访问2105的指令模板中,比例字段2160、位移字段2162A和位移比例字段2162B不存在。
[0205] 在无存储器访问的写掩码控制部分舍入控制型操作2110的指令模板中,β字段2154的其余部分被解释为舍入操作字段2159A,并且禁用异常事件报告(给定的指令不报告任何种类的浮点异常标志,并且不唤起任何浮点异常处置程序)。
[0206] 舍入操作控制字段2159A——正如舍入操作控制字段2158,其内容区分要执行一组舍入操作中的哪一个(例如,向上舍入、向下舍入、向零舍入以及就近舍入)。由此,舍入操作控制字段2159A允许逐指令地改变舍入模式。在其中处理器包括用于指定舍入模式的控制寄存器的本发明的一个实施例中,舍入操作控制字段2150的内容覆盖该寄存器值。
[0207] 在无存储器访问的写掩码控制VSIZE型操作2117的指令模板中,β字段2154的其余部分被解释为向量长度字段2159B,其内容区分要执行多个数据向量长度中的哪一个(例如,128字节、256字节或512字节)。
[0208] 在B类存储器访问2120的指令模板的情况下,β字段2154的一部分被解释为广播字段2157B,其内容区分是否要执行广播型数据操纵操作,而β字段2154的其余部分被解释为向量长度字段2159B。存储器访问2120的指令模板包括比例字段2160,并任选地包括位移字段2162A或位移比例字段2162B。
[0209] 针对通用向量友好指令格式2100,示出完整操作码字段2174包括格式字段2140、基础操作字段2142和数据元素宽度字段2164。尽管示出了其中完整操作码字段2174包括所有这些字段的一个实施例,但是在不支持所有这些字段的实施例中,完整操作码字段2174包括少于所有的这些字段。完整操作码字段2174提供操作代码(操作码)。
[0210] 扩充操作字段2150、数据元素宽度字段2164和写掩码字段2170允许逐指令地以通用向量友好指令格式指定这些特征。
[0211] 写掩码字段和数据元素宽度字段的组合创建各种类型的指令,因为这些指令允许基于不同的数据元素宽度应用该掩码。
[0212] 在A类和B类内出现的各种指令模板在不同的情形下是有益的。在本发明的一些实施例中,不同处理器或处理器内的不同核可支持仅A类、仅B类、或者可支持这两类。举例而言,旨在用于通用计算的高性能通用乱序核可仅支持B类,旨在主要用于图形和/或科学(吞吐量)计算的核可仅支持A类,并且旨在用于通用计算和图形和/或科学(吞吐量)计算两者的核可支持A类和B类两者(当然,具有来自这两类的模板和指令的一些混合、但是并非来自这两类的所有模板和指令的核在本发明的范围内)。同样,单个处理器可包括多个核,这多个核全部都支持相同的类,或者其中不同的核支持不同的类。举例而言,在具有单独的图形核和通用核的处理器中,图形核中的旨在主要用于图形和/或科学计算的一个核可仅支持A类,而通用核中的一个或多个可以是具有旨在用于通用计算的仅支持B类的乱序执行和寄存器重命名的高性能通用核。不具有单独的图形核的另一处理器可包括既支持A类又支持B类的一个或多个通用有序或乱序核。当然,在本发明的不同实施例中,来自一类的特征也可在其他类中实现。将使以高级语言编写的程序成为(例如,及时编译或静态编译)各种不同的可执行形式,这些可执行形式包括:1)仅具有由用于执行的目标处理器支持的(多个)类的指令的形式;或者2)具有替代例程并具有控制流代码的形式,该替代例程使用所有类的指令的不同组合来编写,该控制流代码选择这些例程以基于由当前正在执行代码的处理器支持的指令来执行。示例性专用向量友好指令格式
[0213] 图22是图示根据本发明的实施例的示例性专用向量友好指令格式的框图。图22示出专用向量友好指令格式2200,其指定各字段的位置、尺寸、解释和次序、以及那些字段中的一些字段的值,在这个意义上,该专用向量友好指令格式2200是专用的。专用向量友好指令格式2200可用于扩展x86指令集,并且由此字段中的一些字段与如在现有的x86指令集及其扩展(例如,AVX)中所使用的那些字段类似或相同。该格式保持与具有扩展的现有x86指令集的前缀编码字段、实操作码字节字段、MOD R/M字段、SIB字段、位移字段和立即数字段一致。图示来自图21的字段,来自图22的字段映射到来自图21的字段。
[0214] 应当理解,虽然出于说明的目的在通用向量友好指令格式2100的上下文中参考专用向量友好指令格式2200描述了本发明的实施例,但是本发明不限于专用向量友好指令格式2200,除非另有声明。例如,通用向量友好指令格式2100构想了各种字段的各种可能的尺寸,而专用向量友好指令格式2200示出为具有特定尺寸的字段。作为具体示例,尽管在专用向量友好指令格式2200中数据元素宽度字段2164被图示为一位字段,但是本发明不限于此(即,通用向量友好指令格式2100构想数据元素宽度字段2164的其他尺寸)。
[0215] 通用向量友好指令格式2100包括以下列出的按照图22A中图示的顺序的如下字段。
[0216] EVEX前缀(字节0-3)2202——以四字节形式进行编码。
[0217] 格式字段2140(EVEX字节0,位[7:0])——第一字节(EVEX字节0)是格式字段2140,并且它包含0x62(在本发明的一个实施例中,为用于区分向量友好指令格式的唯一值)。
[0218] 第二-第四字节(EVEX字节1-3)包括提供专用能力的多个位字段。
[0219] REX字段2205(EVEX字节1,位[7-5])——由EVEX.R位字段(EVEX字节1,位[7]–R)、EVEX.X位字段(EVEX字节1,位[6]–X)以及(2157BEX字节1,位[5]–B)组成。EVEX.R、EVEX.X和EVEX.B位字段提供与对应的VEX位字段相同的功能,并且使用1补码的形式进行编码,即ZMM0被编码为1111B,ZMM15被编码为0000B。这些指令的其他字段对如在本领域中已知的寄存器索引的较低三个位(rrr、xxx和bbb)进行编码,由此可通过对EVEX.R、EVEX.X和EVEX.B相加来形成Rrrr、Xxxx和Bbbb。
[0220] REX’字段2110——这是REX’字段2110的第一部分,并且是用于对扩展的32个寄存器集合的较高16个或较低16个寄存器进行编码的EVEX.R’位字段(EVEX字节1,位[4]–R’)。在本发明的一个实施例中,该位与以下指示的其他位一起以位反转的格式存储以(在公知x86的32位模式下)与BOUND指令进行区分,该BOUND指令的实操作码字节是62,但是在MOD R/M字段(在下文中描述)中不接受MOD字段中的值11;本发明的替代实施例不以反转的格式存储该指示的位以及以下其他指示的位。值1用于对较低16个寄存器进行编码。换句话说,通过组合EVEX.R’、EVEX.R以及来自其他字段的其他RRR来形成R’Rrrr。
[0221] 操作码映射字段2215(EVEX字节1,位[3:0]–mmmm)——其内容对隐含的前导操作码字节(0F、0F 38或0F 3)进行编码。
[0222] 数据元素宽度字段2164(EVEX字节2,位[7]–W)——由记号EVEX.W表示。EVEX.W用于定义数据类型(32位数据元素或64位数据元素)的粒度(尺寸)。
[0223] EVEX.vvvv 2220(EVEX字节2,位[6:3]-vvvv)——EVEX.vvvv的作用可包括如下:1)EVEX.vvvv对以反转(1补码)形式指定的第一源寄存器操作数进行编码,并且对具有两个或更多个源操作数的指令有效;2)EVEX.vvvv对针对特定向量位移以1补码的形式指定的目的地寄存器操作数进行编码;或者3)EVEX.vvvv不对任何操作数进行编码,该字段被预留,并且应当包含1111b。由此,EVEX.vvvv字段2220对以反转(1补码)的形式存储的第一源寄存器指定符的4个低阶位进行编码。取决于该指令,额外不同的EVEX位字段用于将指定符尺寸扩展到32个寄存器。
[0224] EVEX.U 2168类字段(EVEX字节2,位[2]-U)——如果EVEX.U=0,则它指示A类或EVEX.U0;如果EVEX.U=1,则它指示B类或EVEX.U1。
[0225] 前缀编码字段2225(EVEX字节2,位[1:0]-pp)——提供了用于基础操作字段的附加位。除了对以EVEX前缀格式的传统SSE指令提供支持以外,这也具有压缩SIMD前缀的益处(EVEX前缀仅需要2位,而不是需要字节来表达SIMD前缀)。在一个实施例中,为了支持使用以传统格式和以EVEX前缀格式两者的SIMD前缀(66H、F2H、F3H)的传统SSE指令,将这些传统SIMD前缀编码成SIMD前缀编码字段;并且在运行时在被提供给解码器的PLA之前被扩展成传统SIMD前缀(因此,在无需修改的情况下,PLA既可执行传统格式的这些传统指令又可执行EVEX格式的这些传统指令)。虽然较新的指令可将EVEX前缀编码字段的内容直接用作操作码扩展,但是为了一致性,特定实施例以类似的方式扩展,但允许由这些传统SIMD前缀指定的不同含义。替代实施例可重新设计PLA以支持2位SIMD前缀编码,并且由此不需要扩展。
[0226] α字段2152(EVEX字节3,位[7]–EH,也称为EVEX.EH、EVEX.rs、EVEX.RL、EVEX.写掩码控制、以及EVEX.N;也以α图示)——如先前所述,该字段是针对上下文的。
[0227] β字段2154(EVEX字节3,位[6:4]-SSS,也称为EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB,还以βββ图示)——如前所述,此字段是针对上下文的。
[0228] REX’字段2110——这是REX’字段的其余部分,并且是可用于对扩展的32个寄存器集合的较高16个或较低16个寄存器进行编码的EVEX.V’位字段(EVEX字节3,位[3]–V’)。该位以位反转的格式存储。值1用于对较低16个寄存器进行编码。换句话说,通过组合EVEX.V’、EVEX.vvvv来形成V’VVVV。
[0229] 写掩码字段2170(EVEX字节3,位[2:0]-kkk)——其内容指定写掩码寄存器中的寄存器的索引,如先前所述。在本发明的一个实施例中,特定值EVEX.kkk=000具有暗示没有写掩码用于特定指令的特殊行为(这能以各种方式实现,包括使用硬连线到所有对象的写掩码或绕过掩码硬件的硬件来实现)。
[0230] 实操作码字段2230(字节4)还被称为操作码字节。操作码的一部分在该字段中被指定。
[0231] MOD R/M字段2240(字节5)包括MOD字段2242、Reg字段2244和R/M字段2246。如先前所述的,MOD字段2242的内容将存储器访问操作和非存储器访问操作区分开。Reg字段2244的作用可被归结为两种情形:对目的地寄存器操作数或源寄存器操作数进行编码;或者被视为操作码扩展,并且不用于对任何指令操作数进行编码。R/M字段2246的作用可包括如下:对引用存储器地址的指令操作数进行编码;或者对目的地寄存器操作数或源寄存器操作数进行编码。
[0232] 比例、索引、基址(SIB)字节(字节6)——如先前所述的,比例字段2150的内容用于存储器地址生成。SIB.xxx 2254和SIB.bbb 2256——先前已经针对寄存器索引Xxxx和Bbbb提及了这些字段的内容。
[0233] 位移字段2162A(字节7-10)——当MOD字段2242包含10时,字节7-10是位移字段2162A,并且它与传统32位位移(disp32)一样地工作,并且以字节粒度工作。
[0234] 位移因数字段2162B(字节7)——当MOD字段2242包含01时,字节7是位移因数字段2162B。该字段的位置与以字节粒度工作的传统x86指令集8位位移(disp8)的位置相同。由于disp8是符号扩展的,因此它仅能在-128和127字节偏移之间寻址;在64字节高速缓存行的方面,disp8使用可被设为仅四个真正有用的值-128、-64、0和64的8位;由于常常需要更大的范围,所以使用disp32;然而,disp32需要4个字节。与disp8和disp32对比,位移因数字段2162B是disp8的重新解释;当使用位移因数字段2162B时,通过将位移因数字段的内容乘以存储器操作数访问的尺寸(N)来确定实际位移。该类型的位移被称为disp8*N。这减小了平均指令长度(单个字节用于位移,但具有大得多的范围)。此类经压缩的位移基于有效位移是存储器访问的粒度的倍数的假设,并且由此地址偏移的冗余低阶位不需要被编码。换句话说,位移因数字段2162B替代传统x86指令集8位位移。由此,位移因数字段2162B以与x86指令集8位位移相同的方式被编码(因此,在ModRM/SIB编码规则中没有变化),唯一的不同在于,将disp8超载至disp8*N。换句话说,在编码规则或编码长度方面没有变化,而仅在有硬件对位移值的解释方面有变化(这需要将位移按比例缩放存储器操作数的尺寸以获得字节式地址偏移)。立即数字段2172如先前所述地操作。
完整操作码字段
[0235] 图22B是图示根据本发明的一个实施例的构成完整操作码字段2174的具有专用向量友好指令格式2200的字段的框图。具体地,完整操作码字段2174包括格式字段2140、基础操作字段2142和数据元素宽度(W)字段2164。基础操作字段2142包括前缀编码字段2225、操作码映射字段2215和实操作码字段2230。寄存器索引字段
[0236] 图22C是图示根据本发明的一个实施例的构成寄存器索引字段2144的具有专用向量友好指令格式2200的字段的框图。具体地,寄存器索引字段2144包括REX字段2205、REX’字段2210、MODR/M.reg字段2244、MODR/M.r/m字段2246、VVVV字段2220、xxx字段2254和bbb字段2256。扩充操作字段
[0237] 图22D是图示根据本发明的一个实施例的构成扩充操作字段2150的具有专用向量友好指令格式2200的字段的框图。当类(U)字段2168包含0时,它表明EVEX.U0(A类2168A);当它包含1时,它表明EVEX.U1(B类2168B)。当U=0且MOD字段2242包含11(表明无存储器访问操作)时,α字段2152(EVEX字节3,位[7]–EH)被解释为rs字段2152A。当rs字段2152A包含1(舍入2152A.1)时,β字段2154(EVEX字节3,位[6:4]–SSS)被解释为舍入控制字段2154A。舍入控制字段2154A包括一位SAE字段2156和两位舍入操作字段2158。当rs字段2152A包含0(数据变换2152A.2)时,β字段2154(EVEX字节3,位[6:4]–SSS)被解释为三位数据变换字段
2154B。当U=0且MOD字段2242包含00、01或10(表明存储器访问操作)时,α字段2152(EVEX字节3,位[7]–EH)被解释为驱逐提示(EH)字段2152B,并且β字段2154(EVEX字节3,位[6:4]–SSS)被解释为三位数据操纵字段2154C。
[0238] 当U=1时,α字段2152(EVEX字节3,位[7]–EH)被解释为写掩码控制(Z)字段2152C。当U=1且MOD字段2242包含11(表明无存储器访问操作)时,β字段2154的一部分(EVEX字节
3,位[4]–S0)被解释为RL字段2157A;当它包含1(舍入2157A.1)时,β字段2154的其余部分(EVEX字节3,位[6-5]–S2-1)被解释为舍入操作字段2159A,而当RL字段2157A包含0(VSIZE 
2157.A2)时,β字段2154的其余部分(EVEX字节3,位[6-5]-S2-1)被解释为向量长度字段
2159B(EVEX字节3,位[6-5]–L1-0)。当U=1且MOD字段2242包含00、01或10(表明存储器访问操作)时,β字段2154(EVEX字节3,位[6:4]–SSS)被解释为向量长度字段2159B(EVEX字节3,位[6-5]–L1-0)和广播字段2157B(EVEX字节3,位[4]–B)。
示例性寄存器架构
[0239] 图23是根据本发明的一个实施例的寄存器架构2300的框图。在所图示的实施例中,有32个512位宽的向量寄存器2310;这些寄存器被引用为zmm0到zmm31。较低的16个zmm寄存器的较低阶256个位覆盖(overlay)在寄存器ymm0-16上。较低的16个zmm寄存器的较低阶128个位(ymm寄存器的较低阶128个位)覆盖在寄存器xmm0-15上。专用向量友好指令格式2200对这些被覆盖的寄存器堆操作,如在以下表格中所图示。
[0240] 换句话说,向量长度字段2159B在最大长度与一个或多个其他较短长度之间进行选择,其中每一个此类较短长度是前一长度的一半,并且不具有向量长度字段2159B的指令模板在最大向量长度上操作。此外,在一个实施例中,专用向量友好指令格式2200的B类指令模板对紧缩或标量单/双精度浮点数据以及紧缩或标量整数数据操作。标量操作是对zmm/ymm/xmm寄存器中的最低阶数据元素位置执行的操作;取决于实施例,较高阶数据元素位置要么保持与在指令之前相同,要么归零。
[0241] 写掩码寄存器2315——在所图示的实施例中,存在8个写掩码寄存器(k0至k7),每一写掩码寄存器的尺寸是64位。在替代实施例中,写掩码寄存器2315的尺寸是16位。如先前所述,在本发明的一个实施例中,向量掩码寄存器k0无法用作写掩码;当将正常指示k0的编码用作写掩码时,它选择硬连线的写掩码0xFFFF,从而有效地禁止写掩码用于那条指令。
[0242] 通用寄存器2325——在所示出的实施例中,有十六个64位通用寄存器,这些寄存器与现有的x86寻址模式一起使用以对存储器操作数寻址。这些寄存器通过名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8到R15来引用。
[0243] 标量浮点栈寄存器堆(x87栈)2345,在其上面重叠了MMX紧缩整数平坦寄存器堆2350——在所图示的实施例中,x87栈是用于使用x87指令集扩展来对32/64/80位浮点数据执行标量浮点操作的八元素栈;而使用MMX寄存器来对64位紧缩整数数据执行操作,以及为在MMX与XMM寄存器之间执行的一些操作保存操作数。
[0244] 本发明的替代实施例可以使用更宽的或更窄的寄存器。另外,本发明的替代实施例可以使用更多、更少或不同的寄存器堆和寄存器。示例性核架构、处理器和计算机架构
[0245] 处理器核能以不同方式、出于不同的目的、在不同的处理器中实现。例如,此类核的实现可以包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能通用乱序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)CPU,其包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用乱序核;以及2)协处理器,其包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核。此类不同的处理器导致不同的计算机系统架构,这些计算机系统架构可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但在分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,此类协处理器有时被称为专用逻辑或被称为专用核,该专用逻辑诸如,集成图形和/或科学(吞吐量)逻辑);以及4)芯片上系统,其可以将所描述的CPU(有时被称为(多个)应用核或(多个)应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上。接着描述示例性核架构,随后描述示例性处理器和计算机架构。示例性核架构
有序和乱序核框图
[0246] 图24A是图示根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线的框图。图24B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核的框图。图24A-图24B中的实线框图示有序流水线和有序核,而虚线框的任选增加图示寄存器重命名的、乱序发布/执行流水线和核。考虑到有序方面是乱序方面的子集,将描述乱序方面。
[0247] 在图24A中,处理器流水线2400包括取出级2402、长度解码级2404、解码级2406、分配级2408、重命名级2410、调度(也被称为分派或发布)级2412、寄存器读取/存储器读取级2414、执行级2416、写回/存储器写入级2418、异常处置级2422和提交级2424。
[0248] 图24B示出处理器核2490,该处理器核2490包括前端单元2430,该前端单元2430耦合至执行引擎单元2450,并且前端单元2430和执行引擎单元2450两者都耦合至存储器单元2470。核2490可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代的核类型。作为又一选项,核2490可以是专用核,诸如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核,等等。
[0249] 前端单元2430包括分支预测单元2432,该分支预测单元2432耦合至指令高速缓存单元2434,该指令高速缓存单元2434耦合至指令转换后备缓冲器(TLB)2436,该指令转换后备缓冲器2436耦合至指令取出单元2438,该指令取出单元2438耦合至解码单元2440。解码单元2440(或解码器)可对指令解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元2440可使用各种不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核2490包括存储用于某些宏指令的微代码的微代码ROM或其他介质(例如,在解码单元2440中,或以其他方式在前端单元2430内)。解码单元2440耦合至执行引擎单元2450中的重命名/分配器单元2452。
[0250] 执行引擎单元2450包括重命名/分配器单元2452,该重命名/分配器单元2452耦合至引退单元2454和一个或多个调度器单元的集合2456。(多个)调度器单元2456表示任何数量的不同调度器,包括预留站、中央指令窗等。(多个)调度器单元2456耦合至(多个)物理寄存器堆单元2458。(多个)物理寄存器堆单元2458中的每一个物理寄存器堆单元表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,状态(例如,作为要执行的下一条指令的地址的指令指针)等等。在一个实施例中,(多个)物理寄存器堆单元2458包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器和通用寄存器。(多个)物理寄存器堆单元2458由引退单元2454重叠,以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器、(多个)引退寄存器堆;使用寄存器映射和寄存器池,等等)。引退单元2454和(多个)物理寄存器堆单元2458耦合至(多个)执行集群2460。(多个)执行集群2460包括一个或多个执行单元的集合2462以及一个或多个存储器访问单元的集合2464。执行单元2462可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可包括仅一个执行单元或全都执行所有功能的多个执行单元。(多个)调度器单元2456、(多个)物理寄存器堆单元2458和(多个)执行集群2460示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线,和/或各自具有其自身的调度器单元、(多个)物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有(多个)存储器访问单元2464的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序的。
[0251] 存储器访问单元的集合2464耦合至存储器单元2470,该存储器单元2470包括数据TLB单元2472,该数据TLB单元2472耦合至数据高速缓存单元2474,该数据高速缓存单元2474耦合至第二级(L2)高速缓存单元2476。在一个示例性实施例中,存储器访问单元2464可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元2470中的数据TLB单元2472。指令高速缓存单元2434还耦合至存储器单元2470中的第二级(L2)高速缓存单元2476。L2高速缓存单元2476耦合至一个或多个其他级别的高速缓存,并最终耦合至主存储器。
[0252] 作为示例,示例性寄存器重命名的乱序发布/执行核架构可如下所述地实现流水线2400:1)指令取出2438执行取出级2402和长度解码级2404;2)解码单元2440执行解码级2406;3)重命名/分配器单元2452执行分配级2408和重命名级2410;4)(多个)调度器单元
2456执行调度级2412;5)(多个)物理寄存器堆单元2458和存储器单元2470执行寄存器读取/存储器读取级2414;执行集群2460执行执行级2416;6)存储器单元2470和(多个)物理寄存器堆单元2458执行写回/存储器写入级2418;7)各单元可牵涉到异常处置级2422;以及8)引退单元2454和(多个)物理寄存器堆单元2458执行提交级2424。
[0253] 核2490可支持一个或多个指令集(例如,x86指令集(具有已与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON的任选的附加扩展)),其中包括本文中描述的(多条)指令。在一个实施例中,核2490包括用于支持紧缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。
[0254] 应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如 超线程化技术中的同时多线程化)。
[0255] 尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所图示的处理器的实施例还包括分开的指令和数据高速缓存单元2434/2474以及共享的L2高速缓存单元2476,但是替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如,第一级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。具体的示例性有序核架构
[0256] 图25A-图25B图示更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块(包括相同类型和/或不同类型的其他核)中的一个逻辑块。取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定的功能逻辑、存储器I/O接口和其他必要的I/O逻辑进行通信。
[0257] 图25A是根据本发明的实施例的单个处理器核以及它至管芯上互连网络2502的连接及其第二级(L2)高速缓存的本地子集2504的框图。在一个实施例中,指令解码器2500支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存2506允许对进入标量和向量单元中的、对高速缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元2508和向量单元2510使用分开的寄存器集合(分别为标量寄存器2512和向量寄存器2514),并且在这些寄存器之间传输的数据被写入到存储器,并随后从第一级(L1)高速缓存2506读回,但是本发明的替代实施例可以使用不同的方法(例如,使用单个寄存器集合或包括允许数据在这两个寄存器堆之间传输而无需被写入和读回的通信路径)。
[0258] L2高速缓存的本地子集2504是全局L2高速缓存的一部分,该全局L2高速缓存被划分成多个分开的本地子集,每个处理器核一个本地子集。每个处理器核具有到其自身的L2高速缓存的本地子集2504的直接访问路径。由处理器核读取的数据被存储在其L2高速缓存子集2504中,并且可以与其他处理器核访问其自身的本地L2高速缓存子集并行地被快速访问。由处理器核写入的数据被存储在其自身的L2高速缓存子集2504中,并在必要的情况下从其他子集转储清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其他逻辑块之类的代理在芯片内彼此通信。每个环形数据路径为每个方向1012位宽。图25B是根据本发明的实施例的图25A中的处理器核的一部分的展开图。图25B包括L1高速缓存2504的L1数据高速缓存2506A部分,以及关于向量单元2510和向量寄存器2514的更多细节。具体地,向量单元2510是16宽向量处理单元(VPU)(见16宽ALU 2528),该单元执行整数、单精度浮点以及双精度浮点指令中的一个或多个。该VPU通过混合单元2520支持对寄存器输入的混合,通过数值转换单元2522A-B支持数值转换,并且通过复制单元2524支持对存储器输入的复制。写掩码寄存器2526允许掩蔽所得的向量写入。
[0259] 图26是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器2600的框图。图26中的实线框图示具有单个核2602A、系统代理2610、一个或多个总线控制器单元的集合2616的处理器2600,而虚线框的任选增加图示具有多个核2602A-N、系统代理单元2610中的一个或多个集成存储器控制器单元的集合2614以及专用逻辑2608的替代处理器2600。
[0260] 因此,处理器2600的不同实现可包括:1)CPU,其中专用逻辑2608是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核2602A-N是一个或多个通用核(例如,通用有序核、通用乱序核、这两者的组合);2)协处理器,其中核2602A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核2602A-N是大量通用有序核。因此,处理器2600可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、嵌入式处理器,等等。该处理器可以被实现在一个或多个芯片上。
处理器2600可以是一个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,BiCMOS、CMOS、或NMOS)中的任何技术被实现在一个或多个基板上。
[0261] 存储器层次结构包括核内的一个或多个级别的高速缓存、一个或多个共享高速缓存单元的集合2606、以及耦合至集成存储器控制器单元的集合2614的外部存储器(未示出)。共享高速缓存单元的集合2606可包括一个或多个中间级别的高速缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合。虽然在一个实施例中,基于环的互连单元2612将集成图形逻辑2608、共享高速缓存单元的集合2606以及系统代理单元2610/(多个)集成存储器控制器单元2614互连,但是替代实施例可使用任何数量的公知技术来互连此类单元。在一个实施例中,在一个或多个高速缓存单元2606与核2602A-N之间维持一致性。
[0262] 在一些实施例中,一个或多个核2602A-N能够实现多线程化。系统代理2610包括协调和操作核2602A-N的那些部件。系统代理单元2610可包括例如功率控制单元(PCU)和显示单元。PCU可以是对核2602A-N以及集成图形逻辑2608的功率状态进行调节所需的逻辑和部件,或可包括这些逻辑和部件。显示单元用于驱动一个或多个外部连接的显示器。
[0263] 核2602A-N在架构指令集方面可以是同构的或异构的;即,核2602A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。示例性计算机架构
[0264] 图27-图28是示例性计算机架构的框图。本领域中已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
[0265] 现在参考图27,所示出的是根据本发明一个实施例的系统2700的框图。系统2700可以包括一个或多个处理器2710、2715,这些处理器耦合至控制器中枢2720。在一个实施例中,控制器中枢2720包括图形存储器控制器中枢(GMCH)2790和输入/输出中枢(IOH)2750(其可以在分开的芯片上);GMCH 2790包括存储器和图形控制器,存储器2740和协处理器2745耦合至该存储器和图形控制器;IOH  2750将输入/输出(I/O)设备2760耦合至GMCH2790。或者,存储器和图形控制器中的一个或这两者被集成在(如本文中所描述的)处理器内,存储器2740和协处理器2745直接耦合至处理器2710,并且控制器中枢2720与IOH 
2750处于单个芯片中。
[0266] 附加的处理器2715的任选性在图27中通过虚线来表示。每一处理器2710、2715可包括本文中描述的处理核中的一个或多个,并且可以是处理器2600的某一版本。
[0267] 存储器2740可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢2720经由诸如前端总线(FSB)之类的多分支总线、诸如快速路径互连(QPI)之类的点对点接口、或者类似的连接2795来与(多个)处理器2710、2715进行通信。
[0268] 在一个实施例中,协处理器2745是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。在一个实施例中,控制器中枢2720可以包括集成图形加速器
[0269] 在物理资源2710、2715之间可以存在包括架构、微架构、热、功耗特性等一系列品质度量方面的各种差异。
[0270] 在一个实施例中,处理器2710执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器2710将这些协处理器指令识别为具有应当由附连的协处理器2745执行的类型。因此,处理器2710在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器2745。(多个)协处理器2745接受并执行所接收的协处理器指令。
[0271] 现在参见图28,所示出的是根据本发明的实施例的SoC 2800的框图。图26中类似的元件使用类似的附图标记。另外,虚线框是更先进的SoC上的任选的特征。在图28中,(多个)互连单元2802被耦合至:应用处理器2810,其包括一个或多个核的集合202A-N的集合以及(多个)共享高速缓存单元2606;系统代理单元2610;(多个)总线控制器单元2616;(多个)集成存储器控制器单元2614;一个或多个协处理器的集合2820,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元2830;直接存储器访问(DMA)单元2832;以及用于耦合至一个或多个外部显示器的显示单元2840。在一个实施例中,(多个)协处理器2820包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器,等等。
[0272] 本文公开的机制的各实施例可以被实现在硬件、软件、固件或此类实现方式的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
[0273] 可将程序代码应用于输入指令,以执行本文中描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
[0274] 程序代码可以用高级的面向过程的编程语言或面向对象的编程语言来实现,以便与处理系统通信。如果需要,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定的编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。
[0275] 至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制造用于执行本文中所述的技术的逻辑。被称为“IP核”的此类表示可以被存储在有形的机器可读介质上,并可被供应给各个客户或制造设施以加载到实际制造该逻辑或处理器的制造机器中。
[0276] 此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非暂态、有形布置,其包括存储介质,诸如硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
[0277] 因此,本发明的实施例还包括非暂态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。仿真(包括二进制变换、代码变形等)
[0278] 在一些情况下,指令转换器可用于将指令从源指令集转换至目标指令集。例如,指令转换器可以将指令变换(例如,使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式转换成要由核处理的一条或多条其他指令。指令转换器可以用软件、硬件、固件、或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
[0279] 图29是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所图示的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图29示出可使用x86编译器2904来编译高级语言2902形式的程序,以生成可由具有至少一个x86指令集核的处理器2916原生执行的x86二进制代码2906。具有至少一个x86指令集核的处理器2916表示通过兼容地执行或以其他方式处理以下各项来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能的任何处理器:1)英特尔x86指令集核的指令集的实质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器2904表示可操作用于生成x86二进制代码2906(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器2916上执行。
类似地,图29示出可以使用替代的指令集编译器2908来编译高级语言2902形式的程序,以生成可以由不具有至少一个x86指令集核的处理器2914(例如,具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代的指令集二进制代码2910。指令转换器2912用于将x86二进制代码2906转换成可以由不具有x86指令集核的处理器2914原生执行的代码。
该转换后的代码不大可能与替代的指令集二进制代码2910相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来自替代指令集的指令构成。
因此,指令转换器2912通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码2906的软件、固件、硬件或其组合。
[0280] 以下句子和/或示例涉及进一步的实施例。
[0281] 在示例1中,一种用于修改操作频率的处理器,该处理器包括:多个处理引擎;至少一个性能计数器,用于确定第一处理引擎的至少一个中断率度量;以及功率控制电路。该功率控制电路用于:使用至少一个性能计数器来判定在第一处理引擎正在第一频率水平下进行操作时至少一个中断率度量是否已达到第一阈值;以及响应于在第一处理引擎正在第一频率水平下进行操作时该至少一个中断率度量已达到第一阈值的判定,将第一处理引擎的操作频率从第一频率水平提高到第二频率水平。
[0282] 在示例2中,如示例1所述的主题可任选地包括:功率控制电路用于:检测对第一处理引擎的操作频率的降低的指示;使用至少一个性能计数器来判定在第一处理引擎正在该第一处理引擎的最大频率水平下进行操作时至少一个中断率度量是否已达到第一阈值;以及响应于在第一处理引擎正在最大频率水平下进行操作时该至少一个中断率度量已达到第一阈值的判定,防止第一处理引擎的操作频率从最大频率水平的降低。
[0283] 在示例3中,如示例1-2所述的主题可任选地包括:功率控制电路用于:响应于在第一处理引擎正在第一频率水平下进行操作时至少一个中断率度量尚未达到第一阈值的判定,使第一处理引擎继续处于第一频率水平。
[0284] 在示例4中,如示例1-3所述的主题可任选地包括:至少一个性能计数器包括处理器的至少一个硬件计数器。
[0285] 在示例5中,如示例1-4所述的主题可任选地包括:至少一个中断率度量包括基于用于处置经掩码的中断的处理负载的比例的第一中断度量,其中,该第一中断度量与第一阈值相关联。
[0286] 在示例6中,如示例1-5所述的主题可任选地包括:至少一个中断率度量进一步包括基于用于处置经掩码的中断和未经掩码的中断的处理负载的比例的第二中断度量,其中,该第二中断度量与第二阈值相关联。
[0287] 在示例7中,如示例1-6所述的主题可任选地包括至少一个寄存器,用于存储第一阈值和第二阈值的值。
[0288] 在示例8中,如示例1-7所述的主题可任选地包括:功率控制电路是处理器的功率控制单元,其中,该功率控制单元和第一处理引擎是处理器的单独的组件。
[0289] 在示例9中,一种用于修改操作频率的方法包括:调整硬件计数器以确定处理器的中断率度量,其中,该中断率度量是从用于处置经掩码的中断的处理周期的比例与用于处置经掩码的中断和未经掩码的中断两者的处理周期的比例中选择的至少一者;基于硬件计数器来判定在处理器正在第一频率水平下进行操作时中断率度量是否已达到阈值;以及响应于在处理引擎正在第一频率水平下进行操作时该中断率度量已达到阈值的判定,将处理器的操作频率从第一频率水平提高到第二频率水平。
[0290] 在示例10中,如示例9所述的主题可任选地包括:检测对处理器的操作频率的降低的指示;基于硬件计数器来判定在处理器正在该处理器的最大频率水平下进行操作时中断率度量是否已达到阈值;以及响应于在处理器正在最大频率水平下进行操作时至少一个中断率度量已达到阈值的判定,防止处理器的操作频率从该最大频率水平的降低。
[0291] 在示例11中,如示例9-10所述的主题可任选地包括:响应于在处理器正在第一频率水平下进行操作时中断率度量尚未达到阈值的判定,将该处理器维持处于第一频率水平。
[0292] 在示例12中,如示例9-11所述的主题可任选地包括:硬件计数器用于对在滑动时间窗口期间发生的经掩码的中断进行计数,并且中断率度量基于用于处置经掩码的中断的处理负载的比例。
[0293] 在示例13中,如示例9-12所述的主题可任选地包括:硬件计数器用于对在滑动时间窗口期间发生的经掩码的中断和未经掩码的中断进行计数,并且中断率度量基于用于处置经掩码的中断和未经掩码的中断的处理负载的比例。
[0294] 在示例14中,如示例9-13所述的主题可任选地包括:硬件计数器是从处理器的总中断计数器和经掩码的中断计数器中选择的至少一者。
[0295] 在示例15中,一种用于修改操作频率的计算设备包括:一个或多个处理器;以及存储器,具有存储于其中的多条指令,这些指令在由该一个或多个处理器执行时使得该计算设备执行如权利要求9至14中任一项所述的方法。
[0296] 在示例16中,至少一种机器可读介质,具有存储于其上的数据,该数据如果由至少一个机器使用则使得该至少一个机器执行如权利要求9至14中任一项所述的方法。
[0297] 在示例17中,一种用于修改操作频率的电子设备包括用于执行如权利要求9至14中任一项所述的方法的装置。
[0298] 在示例18中,一种用于修改操作频率的系统包括耦合至处理器的外部存储器。该处理器包括多个处理引擎、至少一个性能计数器、以及功率控制单元。该功率控制单元用于:使用至少一个性能计数器来判定在第一处理引擎正在第一频率水平下进行操作时至少一个中断率度量是否已达到第一阈值;判定第一频率水平是否为第一处理引擎的最大频率水平;以及响应于在第一处理引擎不是正在最大频率水平下进行操作时该至少一个中断率度量已达到第一阈值的判定,将第一处理引擎的操作频率提高到第二频率水平。
[0299] 在示例19中,如示例18所述的主题可任选地包括:功率控制单元用于:响应于在第一处理引擎正在最大频率水平下进行操作时至少一个中断率度量已达到第一阈值的判定,将处理器维持处于最大频率水平。
[0300] 在示例20中,如示例18-19所述的主题可任选地包括:功率控制单元用于:检测对第一处理引擎的操作频率从最大频率水平的降低的指示;以及当至少一个中断率度量等于或大于第一阈值时,防止第一处理引擎的操作频率从该最大频率水平的降低。
[0301] 在示例21中,如示例18-20所述的主题可任选地包括:至少一个性能计数器包括硬件计数器,用于仅对由第一处理引擎处置的经掩码的中断进行计数。
[0302] 在示例22中,如示例18-21所述的主题可任选地包括:至少一个性能计数器包括硬件计数器,用于对由第一处理引擎处置的经掩码的中断和未经掩码的中断两者进行计数。
[0303] 在示例23中,如示例18-22所述的主题可任选地包括:至少一个性能计数器包括:第一硬件计数器,用于基于用于仅处置经掩码的中断的处理负载的比例来确定第一中断度量,其中,该第一中断度量与第一阈值相关联;以及第二硬件计数器,用于基于用于处置经掩码的中断和未经掩码的中断两者的处理负载的比例来确定第二中断度量,其中,该第二中断度量与第二阈值相关联。
[0304] 在示例24中,一种用于修改操作频率的设备包括:用于调整硬件计数器以确定处理器的中断率度量的装置,其中,该中断率度量是从用于处置经掩码的中断的处理周期的比例与用于处置经掩码的中断和未经掩码的中断两者的处理周期的比例中选择的至少一者;用于基于硬件计数器来判定在处理器正在第一频率水平下进行操作时中断率度量是否已达到阈值的装置;以及用于响应于在处理引擎正在第一频率水平下进行操作时该中断率度量已达到阈值的判定而将处理器的操作频率从第一频率水平提高到第二频率水平的装置。
[0305] 在示例25中,如示例24所述的主题可任选地包括:用于检测对处理器的操作频率的降低的指示的装置;用于基于硬件计数器来判定在处理器正在该处理器的最大频率水平下进行操作时中断率度量是否已达到阈值的装置;以及用于响应于在处理器正在最大频率水平下进行操作时至少一个中断率度量已达到阈值的判定而防止处理器的操作频率从该最大频率水平的降低的装置。
[0306] 在示例26中,如示例24-25所述的主题可任选地包括:用于响应于在处理器正在第一频率水平下进行操作时中断率度量尚未达到阈值的判定而将该处理器维持处于第一频率水平的装置。
[0307] 在示例27中,如示例24-26所述的主题可任选地包括:硬件计数器用于对在滑动时间窗口期间发生的经掩码的中断进行计数,并且中断率度量基于用于处置经掩码的中断的处理负载的比例。
[0308] 在示例28中,如示例24-27所述的主题可任选地包括:硬件计数器用于对在滑动时间窗口期间发生的经掩码的中断和未经掩码的中断进行计数,并且中断率度量基于用于处置经掩码的中断和未经掩码的中断的处理负载的比例。
[0309] 在示例29中,如示例24-28所述的主题可任选地包括:硬件计数器是从处理器的总中断计数器和经掩码的中断计数器中选择的至少一者。
[0310] 虽然参考特定集成电路(诸如,计算平台或处理器中的集成电路)描述了一些实施例,但是其他实施例适用于其他类型的集成电路和逻辑器件。本文中所描述实施例的类似技术和教导可应用于其他类型的电路或半导体器件。例如,所公开的实施例不限于任何特定类型的计算机系统。也就是说,所公开的实施例可以在许多不同的系统类型中使用,这些系统类型范围包括服务器计算机(例如,塔式、机架式、刀片式、微服务器等等)、通信系统、存储系统、任何配置的台式计算机、膝上型计算机、笔记本和平板计算机(包括2:1平板、平板电话等等),并且所公开的实施例还可以在其他设备中使用,这些设备诸如手持式设备、芯片上系统(SoC)和嵌入式应用。手持式设备的一些示例包括:诸如智能电话之类的蜂窝电话、网际协议设备、数码相机、个人数字助理(PDA)和手持式PC。嵌入式应用典型地可包括:微控制器、数字信号处理器(DSP)、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、可穿戴设备、或能够执行下文所教导的功能和操作的任何其他系统。此外,实施例可在具有标准语音功能的移动终端(诸如,移动电话、智能电话和平板电话)中实现,和/或在不具有标准无线语音功能通信能力的非移动终端(诸如,许多可穿戴设备、平板、笔记本、台式机、微服务器、服务器等等)中实现。另外,本文中所描述的装置、方法和系统不限于物理计算设备,而是还可涉及软件实现方式。
[0311] 实施例可被实现在代码中,并且可被存储在非瞬态存储介质上,该非瞬态存储介质具有存储于其上的指令,这些指令可以被用于将系统编程为用于执行这些指令。实施例还可被实现在数据中,并且可被存储在非瞬态存储介质上,该非瞬态存储介质如果被至少一个机器使用则使得该至少一个机器制造至少一个集成电路以执行一个或多个操作。该存储介质可包括但不限于:任何类型的盘,包括软盘、光盘、固态驱动器(SSD)、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)与静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);磁卡或光卡;或适用于存储电子指令的任何其他类型的介质。
[0312] 构想了以上示例的各种组合是可能的。实施例可在许多不同类型的系统中使用。例如,在一个实施例中,可以将通信设备布置为用于执行本文中所描述的各种方法和技术。
当然,本发明的范围不限于通信设备,并且相反,其他实施例可以涉及用于处理指令的其他类型的装置、或者一种或多种机器可读介质,该机器可读介质包括指令,响应于在计算设备上执行这些指令,这些指令使设备实行本文中所描述的方法和技术中的一者或多者。
[0313] 说明书中对“一个实施例”、“实施例”的引用意指结合该实施例所描述的特定特征、结构或特性被包括在本发明内涵盖的至少一个实现方式中。因此,短语“一个实施例”或“在实施例中”的出现不一定是指同一个实施例。此外,特定的特征、结构或特性可按照与所图示特定实施例不同的其他合适的形式来创立,并且所有此类形式可被涵盖在本申请的权利要求内。如本文中所使用,“响应于”是指直接的因果关系。
[0314] 尽管已参照有限数量的实施例描述了本发明,但是本领域技术人员将从其中领会众多修改和变型。所附权利要求旨在涵盖落入本发明的真实精神与范围的所有此类修改与变型。
相关专利内容
标题 发布/更新时间 阅读量
定向声音修改 2020-05-13 713
修改对话窗口 2020-05-13 593
一种环保修改液 2020-05-12 539
一种修改纸 2020-05-11 922
声学信号修改 2020-05-12 965
修改对象的基层 2020-05-12 643
OCT图像修改 2020-05-12 308
修改液笔 2020-05-11 350
修改对象的基层 2020-05-13 91
引导过程修改 2020-05-13 886
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈