CN108874457B - 用于代码区的连续自动调整的方法、装置、系统 - Google Patents

用于代码区的连续自动调整的方法、装置、系统 Download PDF

Info

Publication number
CN108874457B
CN108874457B CN201810763317.9A CN201810763317A CN108874457B CN 108874457 B CN108874457 B CN 108874457B CN 201810763317 A CN201810763317 A CN 201810763317A CN 108874457 B CN108874457 B CN 108874457B
Authority
CN
China
Prior art keywords
processor
instructions
instruction
configuration
code region
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201810763317.9A
Other languages
English (en)
Other versions
CN108874457A (zh
Inventor
R·萨桑卡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN108874457A publication Critical patent/CN108874457A/zh
Application granted granted Critical
Publication of CN108874457B publication Critical patent/CN108874457B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3442Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for planning or managing the needed capacity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3452Performance evaluation by statistical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/781On-chip cache; Off-chip memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Biology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

本文描述的是用于代码区的最佳硬件配置的代码区的连续自动调整的机制。一种机制通过在使用可调整参数的不同集合来执行代码区的同时运算度量并基于所运算的度量来选择不同集合中的一个来自动调整用于被定界的代码区的可调整参数。

Description

用于代码区的连续自动调整的方法、装置、系统
本申请是申请日为2013年6月19日、申请号为201380060585.X的同名专利申请的分案申请。
技术领域
本公开涉及处理逻辑、微处理器和相关联的指令集体系结构的领域,相关联的指令集体系结构当由处理器或其它处理逻辑执行时,实施逻辑、数学、或其它功能操作。
背景技术
处理器具有在制造时、在系统引导时间时例如通过基本输入输出系统(BIOS)或在运行时例如通过操作系统(OS)可以被设置的很多可调整参数。这些可调整参数中的一些包括:(1)硬件(HW)预取器设置,包括开启或关闭一些HW预取器;(2)软件(SW)预取指令设置,包括忽略或服从SW预取指令;(3)高速缓存逐出/更换暗示,包括忽略或服从高速缓存逐出/更换暗示;(4)高速缓存尺寸,包括动态地配置高速缓存尺寸;(5)动态随机存取存储器(DRAM)通道,包括配置DRAM页面打开策略和缓冲器尺寸;以及(6)HW缓冲器尺寸,包括配置各种HW缓冲器尺寸或HW结构尺寸。
这样的参数通常被永久地设置(例如,在BIOS中)为与各种各样的应用兼容。因此,这些设置对于给定应用可能不是最佳的。例如,给定的预取器设置可能对应用A是有益的,而相同的配置可能降低应用B的性能。此外,因为预取器设置对于各种各样的应用是固定的,所以这个设置不被调整用于优化应用B的执行。
可调整的参数甚至可以是更粗的粒度——例如,在异构核心处理器中,具有不同容量的核心存在(例如,Atom和Xeon核心)。在这里,不是挑选预取器设置,而是整个核心被挑选以运行一条代码。Atom核心对于运行一条代码可能是足够的,而另一条代码可能真正受益于Xeon核心。
附图说明
图1A是根据一个实施例的系统的框图。
图1B是根据一个实施例的系统的框图。
图1C是根据一个实施例的系统的框图。
图2是根据一个实施例的处理器的框图。
图3A示出了根据一个实施例的封装的数据类型。
图3B示出了根据一个实施例的封装的数据类型。
图3C示出了根据一个实施例的封装的数据类型。
图3D示出了根据一个实施例的指令编码。
图3E示出了根据一个实施例的指令编码。
图3F示出了根据一个实施例的指令编码。
图4A示出了根据一个实施例的处理器微体系结构的元件。
图4B示出了根据一个实施例的处理器微体系结构的元件。
图5是根据一个实施例的处理器的框图。
图6是根据一个实施例的计算机系统的框图。
图7是根据一个实施例的计算机系统的框图。
图8是根据一个实施例的计算机系统的框图。
图9是根据一个实施例的芯片上系统的框图。
图10是根据一个实施例的处理器的框图。
图11是根据一个实施例的IP核心开发系统的框图。
图12示出了根据一个实施例的体系结构仿真系统的框图。
图13示出了根据一个实施例的用于变换指令的系统。
图14示出了包括多核处理器的计算系统的框图的另一实施例。
图15示出了处理器的框图的实施例。
图16示出了计算系统的框图的另一实施例。
图17示出了计算系统的框图的另一实施例。
图18是根据一个实施例的用于代码区的连续自动调整的处理器的框图。
图19是根据一个实施例的用于代码区的连续自动调整的方法的流程图。
图20是根据一个实施例的用于图19的代码区的连续自动调整的方法的流程图。
具体实施方式
在下面的描述中,阐述了很多特定的细节,例如,特定类型的处理器和系统配置、特定的硬件结构、特定的体系结构和微体系结构细节、特定的寄存器配置、特定的指令类型、特定的系统部件、特定的测量/高度、特定的处理器流水线阶段和操作等的示例,以便提供对本发明的彻底理解。然而对本领域中的技术人员显而易见的是,这些特定的细节不需要被应用于实施本发明。在其它实例中,公知的部件或方法(例如,特定的和可选的处理器体系结构、特定的逻辑电路/所述算法的代码、特定的固件代码、特定的互连操作、特定的逻辑配置、特定的制造技术和材料、特定的编译器实现、以代码形式的算法的特定表达、特定的断电和选通技术/逻辑和计算机系统的其它特定的操作细节)没有被详细描述,以便避免不必要地使本发明难以理解。
虽然关于能量节约和能量效率在特定的集成电路中(例如,在计算平台或微处理器中)描述了下面的实施例,但是其它实施例可应用于其它类型的集成电路和逻辑设备。本文描述的实施例的类似技术和教导可以应用于同样可以受益于更好的能量效率和能量节约的其它类型的电路或半导体器件。例如,所公开的实施例不限于桌上型计算机系统或便携式计算机,例如,
Figure GDA0002996214020000031
UltrabooksTM计算机。此外也可以在其它设备(例如,手持设备、平板计算机、其它薄型笔记本计算机、芯片上系统(SOC)设备和嵌入式应用)中使用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数字摄像机、个人数字助理(PDA)和手持PC。嵌入式应用一般包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、或能够执行下面教导的功能和操作的任何其它系统。而且,本文描述的装置、方法和系统不限于物理计算设备,但还可以与能量节约和效率的软件优化有关。如在下面的描述中变得容易显而易见的,本文描述的方法、装置和系统的实施例(不管是否关于硬件、固件、软件或其组合)对于与性能考虑因素平衡的“绿色技术”未来是极为重要的。
虽然关于处理器描述了下面的实施例,但是其它实施例可应用于其它类型的集成电路和逻辑设备。本发明的实施例的类似技术和教导能够应用于能够从较高流水线吞吐量和提高的性能收益的其它类型的电路或半导体设备。本发明的实施例的教导可应用于执行数据操纵的任何处理器或机器。然而,本发明不限于执行512位、256位、128位、64位、32位或16位数据操作的处理器或机器,并且能够应用于执行数据的操纵或管理的任何处理器和机器。此外,下面的描述提供示例,并且附图出于说明的目的示出了各种示例。然而,这些示例不应以限制的意义被解释,因为它们仅仅是要提供本发明的实施例的示例而不是提供本发明的实施例的所有可能实现的详尽的列表。
虽然下面的示例在执行单元和逻辑电路的上下文中描述了指令处理和分布,但是本发明的其它实施例可以通过存储在机器可读、有形介质上的数据或指令的方式来完成,所述数据或指令当由机器执行时使机器执行与本发明的至少一个实施例一致的功能。在一个实施例中,与本发明的实施例相关联的功能体现在机器可执行指令中。所述指令能够用于使利用指令编程的通用或专用处理器执行本发明的步骤。本发明的实施例可以被提供为可以包括机器或计算机可读介质的计算机程序产品或软件,所述机器或计算机可读介质具有在其上存储的指令,所述指令可以用于对计算机(或其它电子设备)进行编程以根据本发明的实施例执行一个或多个操作。可选地,本发明的实施例的操作可以由包含用于执行操作的固定功能逻辑的特定的硬件部件、或由编程计算机部件和固定功能硬件部件的任何组合执行。
用于对逻辑进行编程以执行本发明的实施例的指令可以存储在系统中的存储器(例如,DRAM、高速缓存、闪速存储器或其它存储装置)内。此外,指令可以经由网络或通过其它计算机可读介质来分布。因此,机器可读介质可以包括用于存储或发送以机器(例如,计算机)可读的形式的信息的任何机构,但不限于软盘、光学盘、光盘只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器或在经由电、光、声或其它形式的传播信号(例如,载波、红外信号、数字信号等)通过互联网传输信息中使用的有形、机器可读存储装置。因此,计算机可读介质包括适合于存储或发送以机器(例如,计算机)可读的形式的电子指令或信息的任何类型的有形机器可读介质。
设计也可以经历各种阶段,从创建到仿真到制造。表示设计的数据可以用多种方式来表示设计。首先,如在仿真中有用的,可以使用硬件描述语言或另一功能描述语言来表示硬件。此外,可以在设计过程的一些阶段生成具有逻辑和/或晶体管栅极的电路级模型。此外,在一些阶段,大部分设计达到表示在硬件模型中的各种设备的物理放置的数据的水平。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于生成集成电路的掩模的不同掩模层上各种特征的存在或不存在的数据。在设计的任何表示中,所述数据可以存储在任何形式的机器可读介质中。存储器或磁性或光学存储装置(例如,磁盘)可以是机器可读介质,其用于存储经由光波或电波传输的信息,所述光波或电波被调制或否则生成以传输这样的信息。当指示或携带代码或设计的电载波被发送时,在电信号的复制、缓冲或重传被执行的程度上,制造新拷贝。因此,通信提供者或网络提供者可以在有形、机器可读介质上至少暂时性存储制品,例如,被编码到载波中的信息,所述信息体现了本发明的实施例的技术。
在现代处理器中,多个不同的执行单元用于处理并且执行各种代码和指令。不是所有指令都同等地被创建,一些更快完成,而另一些可能花费多个时钟周期来完成。指令的吞吐量越快,处理器的整体性能就越好。因此,尽可能快地执行很多指令将是有利的。然而,存在具有较大的复杂性并且从执行时间和处理器资源方面来说需要更多的某些指令。例如,存在浮点指令、加载/存储操作、数据移动等。
由于在互联网、文本和多媒体应用中使用更多的计算机系统,所以随着时间的过去引入了额外的处理器支持。在一个实施例中,指令集可以与一个或多个计算机体系结构相关联,所述计算机体系结构包括数据类型、指令、寄存器体系结构、寻址模式、存储器体系结构、中断和异常处理、和外部输入和输出(I/O)。
在一个实施例中,指令集体系结构(ISA)可以由一个或多个微体系结构实现,所述微体系结构包括用于实现一个或多个指令集的处理器逻辑和电路。相应地,具有不同的微体系结构的处理器可以共享公共指令集的至少一部分。例如,
Figure GDA0002996214020000061
Pentium 4处理器、
Figure GDA0002996214020000062
CoreTM处理器和来自Sunnyvale CA的Advanced Micro Devices,Inc的处理器实现x86指令集的几乎相同的版本(具有添加有较新版本的一些扩展),但具有不同的内部设计。类似地,由其它处理器开发公司(例如,ARM Holdings,Ltd、MIPS或其许可证接受方或采用方)设计的处理器可以共享公共指令集的至少一部分,但可以包括不同的处理器设计。例如,可以使用新的或公知的技术在不同的微体系结构中以不同的方式实现ISA的相同的寄存器体系结构,所述寄存器体系结构包括专用物理寄存器、使用寄存器重命名机制(例如,寄存器别名表(RAT)、记录器缓冲器(ROB)和引退寄存器文件的使用)的一个或多个动态分配的物理寄存器。在一个实施例中,寄存器可以包括一个或多个寄存器、寄存器体系结构、寄存器文件或可以或可以不由软件编程者可寻址的其它寄存器集。
在一个实施例中,指令可以包括一个或多个指令格式。在一个实施例中,指令格式可以指示各种字段(位的数量、位的位置等)来指定待执行的操作和操作数,其中该操作将在该操作数上被执行,连同其它事物。一些指令格式可以进一步由指令模板(或子格式)中断地定义。例如,给定指令格式的指令模板可以被定义为具有指令格式的字段的不同子集和/或被定义为具有被不同地解释的给定字段。在一个实施例中,指令使用指令格式来进行表示(并且,如果被定义,则在该指令格式的指令模板的给定模板中)并且指定或指示操作和操作数,其中该操作将在该操作数上操作。
科学、金融、自动矢量化通用、RMS(识别、挖掘和合成)、以及视觉和多媒体应用(例如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频操纵)可能需要要在大量数据项上执行的相同的操作。在一个实施例中,单指令多数据(SIMD)指使处理器在多个数据元素上执行操作的指令的类型。可以在处理器中使用SIMD技术,所述SIMD技术可以将寄存器中的位逻辑地划分为多个固定尺寸或可变尺寸的数据元素,每一个数据元素表示单独的值。例如,在一个实施例中,在64位寄存器中的位可以被组织为包含四个单独的16位数据元素的源操作数,每一个数据元素表示单独的16位值。这类数据可以被称为“封装的”数据类型或“矢量”数据类型,并且所述数据类型的操作数被称为封装的数据操作数或矢量操作数。在一个实施例中,封装的数据项或矢量可以是存储在单个寄存器中的封装的数据元素的序列,并且封装的数据操作数或矢量操作数可以是SIMD指令(或“封装的数据指令”或“矢量指令”)的源或目的操作数。在一个实施例中,SIMD指令指定要在两个源矢量操作数上被执行的单个矢量操作以生成具有相同或不同尺寸、具有相同或不同数量的数据元素和以相同或不同的数据元素顺序的目的矢量操作数(也被称为结果矢量操作数)。
例如由具有包括x86的指令集、MMXTM指令集、流式SIMD扩展(SSE)、SSE2、SSE3、SSE4.1和SSE4.2指令的
Figure GDA0002996214020000071
CoreTM处理器、ARM处理器(例如,具有包括矢量浮点(VFP)和/或NEON指令的指令集的ARM
Figure GDA0002996214020000072
系列的处理器)、以及MIPS处理器(例如,由中国科学院的计算技术研究所(ICT)开发的Loongson系列的处理器)使用的SIMD技术使在应用性能中的显而易见的提高变得可能(CoreTM和MMXTM是Santa Clara,Calif的Intel公司的注册商标或商标)。
在一个实施例中,目的和源寄存器/数据是表示相对应的数据或操作的源和目的地的一般术语。在一些实施例中,它们可以由寄存器、存储器或具有除了所描述的那些名称或功能以外的其它名称或功能的其它存储区域实现。例如,在一个实施例中,“DEST1”可以是暂时性存储寄存器或其它存储区域,而“SRC1”和“SRC2”可以是第一和第二源存储寄存器或其它存储区域,等等。在其它实施例中,SRC和DEST存储区域中的两个或更多个可以与在同一存储区域(例如,SIMD寄存器)内的不同数据存储元件相对应。在一个实施例中,源寄存器中的一个也可以通过例如将在第一和第二源数据上执行的操作的结果写回到用作目的寄存器的两个源寄存器中的一个来充当目的寄存器。
转到图1A,示出了由包括用于执行指令的执行单元在内的处理器形成的示例性计算机系统的框图,其中互连中的一个或多个根据本发明的一个实施例实现了一个或多个特征。根据本文所述的实施例,系统100包括部件(例如,处理器102),用于使用包括逻辑的执行单元来执行用于处理数据的算法。系统100代表基于从Santa Clara,California的Intel公司可得到的PENTIUM IIITM、PENTIUM 4TM、XeonTM、Itanium、XScaleTM和/或StrongARMTM微处理器的处理系统,但是也可以使用其它系统(包括具有其它微处理器、工程工作站、机顶盒等的PC)。在一个实施例中,范例系统100执行从Redmond,Washington的Microsoft公司可得到的WINDOWSTM操作系统的版本,但是也可以使用其它操作系统(例如,UNIX和Linux)、嵌入式软件、和/或图形用户接口。因此,本发明的实施例不限于硬件电路和软件的任何特定的组合。
实施例不限于计算机系统。可以在其它设备(例如,手持设备和嵌入式应用)中使用本发明的可选实施例。手持设备的一些示例包括蜂窝电话、互联网协议设备、数字摄像机、个人数字助理(PDA)和手持PC。嵌入式应用可以包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、或可以根据至少一个实施例执行一个或多个指令的任何其它系统。
在这个所示出的实施例中,处理器102包括一个或多个执行单元108以实现执行至少一个指令的算法。可以在单处理器桌面型或服务器系统的上下文中描述一个实施例,但可选的实施例可以包括在多处理器系统中。系统100是“集线器”系统体系结构的示例。计算机系统100包括用于处理数据信号的处理器102。作为一个例证性示例,处理器102包括例如复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集的组合的处理器、或任何其它处理器设备,例如,数字信号处理器。处理器102耦合到处理器总线110,处理器总线110在系统100中的处理器102和其它部件之间传输数据信号。系统100的元件(例如,图形加速器112、存储器控制器集线器116、存储器120、I/O控制器集线器124、无线收发机126、闪速存储器BIOS 128、网络控制器134、音频控制器136、串行扩展端口138、I/O控制器140等)执行熟悉本领域的人员所公知的常规功能。
在一个实施例中,处理器102包括一级(L1)内部高速缓冲存储器104。取决于体系结构,处理器102可以具有单个内部高速缓存或多级内部高速缓存。取决于特定的实现和需要,其它实施例包括内部和外部高速缓存二者的组合。寄存器文件106将不同类型的数据存储在各种寄存器中,所述各种寄存器包括整数寄存器、浮点寄存器、矢量寄存器、分组寄存器、影子寄存器、检查点寄存器、状态寄存器、和指令指针寄存器。
执行单元108包括执行整数和浮点操作的逻辑,执行单元108也存在于处理器102中。在一个实施例中,处理器102包括微代码(ucode)ROM以存储微代码,所述微代码当被执行时用于实施某些宏指令的算法或处理复杂的情景。在这里,微代码可能是可更新的用于处理处理器102的逻辑故障/修理。对于一个实施例,执行单元108包括用于处理封装的指令集109的逻辑。通过将封装的指令集109包括在通用处理器102的指令集中,连同用于执行指令的相关联的电路,可以在通用处理器102中使用封装的数据来执行由很多多媒体应用使用的操作。因此,很多多媒体应用通过使用处理器的数据总线的全宽以用于在封装的数据上执行操作来更有效地被加速和执行。这潜在地消除了如下需要,在处理器的数据总线当中传送较小的数据单元,以执行一个或多个操作,一次一个数据元素。
也可以在微控制器、嵌入式处理器、图形设备、DSP和其它类型的逻辑电路中使用执行单元108的可选实施例。系统100包括存储器120。存储器120包括动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪速存储器设备或其它存储器设备。存储器120存储由数据信号表示的指令和/或数据,所述数据信号将由处理器102执行。
系统逻辑芯片116耦合到处理器总线110和存储器120。系统逻辑芯片116在所示的实施例中是存储器控制器集线器(MCH)。处理器102可以经由处理器总线110与MCH 116通信。MCH 116向存储器120提供高带宽存储器路径118,以用于指令和数据存储以及用于图形命令、数据和结构的存储。MCH 116在系统100中的处理器102、存储器120和其它部件之间引导数据信号,并在处理器总线110、存储器120和系统I/O 122之间桥接数据信号。在一些实施例中,系统逻辑芯片116可以提供图形端口以用于耦合到图形控制器112。MCH 116通过存储器接口118耦合到存储器120。图形卡112通过加速图形端口(AGP)互连114耦合到MCH116。
系统100使用专用集线器接口总线122来将MCH 116耦合到I/O控制器集线器(ICH)130。ICH 130提供经由局部I/O总线到一些I/O设备的直接连接。局部I/O总线是用于将外围设备连接到存储器120、芯片组和处理器102的高速I/O总线。一些示例是音频控制器、固件集线器(闪速存储器BIOS)128、无线收发机126、数据存储装置124、包含用户输入和键盘接口的旧版I/O控制器、串行扩展端口,例如通用串行总线(USB)和网络控制器134。数据存储设备124可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪速存储器设备、或其它大容量存储设备。
对于系统的另一实施例,根据一个实施例的指令可以与芯片上系统一起使用。芯片上系统的一个实施例由处理器和存储器组成。一个这样的系统的存储器是闪速存储器。闪速存储器可以位于与处理器和其它系统部件相同的管芯上。此外,其它逻辑块(例如,存储器控制器或图形控制器)也可以位于芯片上的系统上。
图1B示出了实现本发明的一个实施例的原理的数据处理系统139。本领域中的技术人员将容易认识到,本文描述的实施例可以与可选的处理系统一起使用,而不偏离本发明的实施例的范围。
数据处理系统139包括根据一个实施例的能够执行至少一个指令的处理核心159。对于一个实施例,处理核心159代表任何类型的体系结构的处理单元,包括但不限于CISC、RISC或VLIW型体系结构。处理核心159也可以适合于用一种或多种处理技术来制造,并且通过足够详细地呈现在机器可读介质上,可以适合有助于所述制造。
处理核心159包括执行单元142、一组寄存器文件145和解码器144。处理核心159还包括对本发明的实施例的理解不是必需的额外的电路(未示出)。执行单元142用于执行由处理核心159接收的指令。除了执行一般的处理器指令以外,执行单元142可以执行在封装的指令集143中的指令以用于在封装的数据格式上执行操作。封装的指令集143包括用于执行本发明的实施例的指令和其它封装的指令的指令。执行单元142通过内部总线耦合到寄存器文件145。寄存器文件145代表用于存储包括数据的信息的在处理核心159上的存储区域。如前面提到的,应理解,用于存储封装的数据的存储区域不是重要的。执行单元142耦合到解码器144。解码器144用于将由处理核心159所接收的指令解码为控制信号和/或微代码入口点。响应于这些控制信号和/或微代码入口点,执行单元142执行适当的操作。在一个实施例中,解码器用于解释指令的操作码,其将指示什么操作应在指令内指示的相对应的数据上执行。
处理核心159与总线141耦合,以用于与各种其它系统设备通信,所述各种其它系统设备可以包括但不限于例如,同步动态随机存取存储器(SDRAM)控件146、静态随机存取存储器(SRAM)控件147、突发式闪速存储器接口148、个人计算机存储卡国际协会(PCMCIA)/紧凑式闪速存储器(CF)卡控件149、液晶显示器(LCD)控件150、直接存储器存取(DMA)控制器151和可选的总线主接口152。在一个实施例中,数据处理系统139还可以包括用于经由I/O总线153与各种I/O设备通信的I/O桥154。这样的I/O设备可以包括但不限于例如通用异步接收机/发射机(UART)155、通用串行总线(USB)156、蓝牙无线UART 157和I/O扩展接口158。
数据处理系统139的一个实施例提供了移动、网络、和/或无线通信和能够执行包括文本串比较操作的SIMD操作的处理核心159。可以使用各种音频、视频、成像和通信算法——包括离散变换,例如,Walsh-Hadamard变换、快速傅立叶变换(FFT)、离散余弦变换(DCT)以及其相应的逆变换;压缩/解压缩技术,例如,颜色空间变换、视频编码运动估计或视频解码运动补偿;以及调制/解调(MODEM)函数,例如,脉冲编码调制(PCM)——来对处理核心159进行编程。
图1C示出了能够执行SIMD文本串比较操作的数据处理系统的又一可选的实施例。根据一个可选的实施例,数据处理系统160可以包括主处理器166、SIMD协处理器161、高速缓冲存储器167和输入/输出系统168。输入/输出系统168可以耦合到无线接口169。SIMD协处理器161能够根据一个实施例来执行包括指令的操作。处理核心170可以适合于用一种或多种处理技术来制造,并且通过足够详细地呈现在机器可读介质上,可以适合有助于包括处理核心170的数据处理系统160的全部或部分的制造。
对于一个实施例,SIMD协处理器161包括执行单元162和一组寄存器文件164。主处理器166的一个实施例包括解码器165,以用于根据一个实施例来识别包括指令的指令集163的指令以由执行单元162执行。对于可选的实施例,SIMD协处理器161还包括解码器165B的至少部分,以用于对指令集163的指令进行解码。处理核心170还包括对本发明的实施例的理解不是必需的额外的电路(未示出)。
在操作中,主处理器166执行控制通用类型的数据处理操作的数据处理指令的流,通用类型的数据处理操作包括与高速缓冲存储器167和输入/输出系统168的交互。嵌入在数据处理指令的流中的是SIMD协处理器指令。主处理器166的解码器165将这些SIMD协处理器指令识别为应由附加的SIMD协处理器161执行的类型。相应地,主处理器166在协处理器总线166上发出这些SIMD协处理器指令(或表示SIMD协处理器指令的控制信号),其中它们从协处理器总线166由任何附加的SIMD协处理器接收。在这种情况下,SIMD协处理器161将接受并执行打算用于它的任何所接收的SIMD协处理器指令。
可以经由无线接口169来接收数据,以用于由SIMD协处理器指令处理。对于一个示例,可以以数字信号的形式接收语音通信,所述数字信号可以由SIMD协处理器指令处理以重新生成表示语音通信的数字音频样本。对于另一示例,可以以数字位流的形式接收压缩的音频和/或视频,所述数字位流可以由SIMD协处理器指令处理以重新生成数字音频样本和/或运动视频帧。对于处理核心170的一个实施例,主处理器166和SIMD协处理器161集成到包括执行单元162、一组寄存器文件164和解码器165的单个处理核心170中,以识别包括根据一个实施例的指令的指令集163的指令。
图2是包括用于执行根据本发明的一个实施例的指令的逻辑电路在内的处理器200的微体系结构的框图。在一些实施例中,根据一个实施例的指令可以被实现为在具有字节、字、双字、四字等的尺寸以及数据类型(例如,单和双精度整数和浮点数据类型)的数据元素上操作。在一个实施例中,有序前端201是取出待执行的指令并使它们准备好稍后在处理器流水线中使用的处理器200的部分。前端201可以包括几个单元。在一个实施例中,指令预取器226从存储器取出指令并将它们馈送到指令解码器228,解码器228继而对它们进行解码或解释它们。例如,在一个实施例中,解码器将所接收的指令解码为机器可以执行的被称为“微指令”或“微操作”(也被称为微op或uops)的一个或多个操作。在其它实施例中,解码器将指令解析为操作码和由微体系结构使用的相对应的数据和控制字段以根据一个实施例执行操作。在一个实施例中,追踪高速缓存230采用解码的uops,并将它们组合为在uop队列234中的程序有序序列或轨迹以用于执行。当追踪高速缓存230遇到复杂指令时,微代码ROM 232提供完成操作所需的uops。
一些指令被转换为单个微操作,而其它指令需要几个微操作来完成完整的操作。在一个实施例中,如果需要多于四个微操作来完成指令,则解码器228访问微代码ROM 232以进行指令。对于一个实施例,指令可以被解码为用于在指令解码器228处处理的少量微操作。在另一实施例中,指令可以存储在微代码ROM 232内,假定需要多个微操作来完成操作。追踪高速缓存230指入口点可编程逻辑阵列(PLA),以确定正确的微指令指针,以用于读取微代码序列从而根据一个实施例完成来自微代码ROM 232的一个或多个指令。在微代码ROM232完成指令的微操作排序之后,机器的前端201重新开始从追踪高速缓存230取出微操作。
乱序执行引擎203是指令准备用于执行的位置。乱序执行逻辑具有多个缓冲器以使指令流趋于平滑并重新排序以优化性能,因为它们沿着流水线行进并被调度用于执行。分配器逻辑分配每一个uop需要的机器缓冲器和资源以便执行。寄存器重命名逻辑将逻辑寄存器重命名到寄存器文件中的条目上。分配器还为两个uop队列中的一个uop队列的每一个uop分配条目,一个用于存储器操作以及一个用于非存储器操作,在指令调度器的前面:存储器调度器、快速调度器202、慢速/通用浮点调度器204和简单浮点调度器206。uop调度器202、204、206基于其相关的输入寄存器操作数源的准备状态和uop需要来完成其操作的执行资源的可用性来确定uop何时准备执行。一个实施例的快速调度器202可以在主时钟周期的每一半上进行调度,而其它调度器可以每主处理器时钟周期调度一次。调度器仲裁分派端口以调度uop用于执行。
寄存器文件208、210位于调度器202、204、206和执行块211中的执行单元212、214、216、218、220、222、224之间。存在分别用于整数和浮点操作的单独的寄存器文件208、210。一个实施例的每一个寄存器文件208、210还包括旁路网络,所述旁路网络可以将还没有被写到寄存器文件中的刚刚完成的结果绕过或转发到新的相关的uop。整数寄存器文件208和浮点寄存器文件210也能够与其它传递数据。对于一个实施例,整数寄存器文件208分为两个单独的寄存器文件,一个寄存器文件用于数据的低位32位,以及第二寄存器文件用于数据的高位32位。一个实施例的浮点寄存器文件210具有128位宽条目,这是因为浮点指令一般具有在宽度上从64到128位的操作数。
执行块211包含执行单元212、214、216、218、220、222、224,在其中指令实际上被执行。所述部分包括存储微指令需要执行的整数和浮点数据操作值的寄存器文件208、210。一个实施例的处理器200由多个执行单元组成:地址生成单元(AGU)212、AGU 214、快ALU 216、快ALU 218、慢ALU 220、浮点ALU 222、浮点移动单元224。对于一个实施例,浮点执行块222、224执行浮点、MMX、SIMD、和SSE、或其它操作。一个实施例的浮点ALU 222包括64位乘64位浮点除法器,以执行除法、平方根和余数微操作。对于本发明的实施例,可以使用浮点硬件来处理涉及浮点值的指令。在一个实施例中,ALU操作转到高速ALU执行单元216、218。一个实施例的快ALU 216、218可以以时钟周期一半的有效延迟来执行快操作。对于一个实施例,大部分复杂整数操作转到慢ALU 220,因为慢ALU 220包括用于长延迟类型的操作(例如,乘法、移位、标志逻辑和分支处理)的整数执行硬件。存储器加载/存储操作由AGU 212、214执行。对于一个实施例,在对64位数据操作数执行整数操作的上下文中描述了整数ALU 216、218、220。在可选的实施例中,ALU 216、218、220可以被实现为支持包括16、32、128、256等的各种数据位。类似地,浮点单元222、224可以被实现为支持具有各种宽度的位的一定范围的操作数。对于一个实施例,浮点单元222、224可以结合SIMD和多媒体指令在128位宽封装的数据操作数上操作。
在一个实施例中,uops调度器202、204、206在父加载完成执行之前分派相关的操作。因为uops在处理器200中被推测地调度和执行,处理器200还包括用于处理存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则可能在流水线的飞行中存在相关的操作,其给调度器留下暂时不正确的数据。重放机制跟踪并重新执行使用不正确的数据的指令。相关的操作应被重放,并且不相关的操作被允许完成。处理器的一个实施例的调度器和重放机制也被设计为捕获文本串比较操作的指令序列。
术语“寄存器”可以指用作指令的部分以识别操作数的机载处理器存储位置。换句话说,寄存器可以是从处理器的外部可用(从编程者的观点看)的那些寄存器。然而,寄存器的实施例不应在特定类型电路的意义上被限制。更确切地,实施例的寄存器能够存储并提供数据,并执行本文描述的功能。本文描述的寄存器可以使用任何数量的不同技术由处理器内的电路实现,例如,专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。在一个实施例中,整数寄存器存储三十二位整数数据。一个实施例的寄存器文件还包含用于封装的数据的八个多媒体SIMD寄存器。对于下面的讨论,寄存器被理解为被设计用于保存封装的数据的数据寄存器,例如,在使用来自Santa Clara,Californiad的Intel公司的MMXTM技术实现的微处理器中的64位宽MMX寄存器(在一些实例中也被称为“mm”寄存器)。以整数和浮点二者形式可用的这些MMX寄存器可以使用伴随SIMD和SSE指令的封装的数据元素来操作。类似地,与SSE2、SSE3、SSE4或以上(一般被称为“SSEx”)技术相关的128位宽XMM寄存器也可以用于保存这样的封装的数据操作数。在一个实施例中,在存储封装的数据和整数数据时,寄存器不需要区分这两个数据类型。在一个实施例中,整数和浮点包含在同一寄存器文件或包含在不同的寄存器文件中。此外,在一个实施例中,浮点和整数数据可以存储在不同的寄存器或相同的寄存器中。
在下面的图的示例中,描述了多个数据操作数。图3A示出了根据本发明的一个实施例的在多媒体寄存器中的各种封装的数据类型表示。图3A示出了128位宽操作数的封装的字节310、封装的字320和封装的双字(dword)330的数据类型。这个示例的封装的字节格式310是128位长,并包含十六个封装的字节数据元素。字节在这里被定义为8位数据。每一个字节数据元素的信息存储在字节0的位7到位0、字节1的位15到位8、字节2的位23到位16,以及最终字节15的位120到位127中。因此,在寄存器中使用了所有可用的位。这个存储布置增加了处理器的存储效率。同样,使用所访问的16个数据元素,一个操作现在也可以在16个数据元素上并行地执行。
通常,数据元素是存储在单个寄存器或具有相同长度的其它数据元素的存储器位置上的单独的一条数据。在与SSEx技术有关的封装的数据序列中,存储在XMM寄存器中的数据元素的数量是128位除以单独数据元素的位的长度。类似地,在与MMX和SSE技术有关的封装的数据序列中,存储在MMX寄存器中的数据元素的数量是64位除以单独数据元素的位的长度。虽然图3A所示的数据类型是128位长,但是本发明的实施例也可以使用64位宽或其它尺寸的操作数来操作。这个示例的封装的字格式320是128位长并包含八个封装的字数据元素。每一个封装的字包含16位的信息。图3A的封装的双字格式330是128位长并包含四个封装的双字数据元素。每一个封装的双字数据元素包含32位的信息。封装的四字是128位长并包含两个封装的四字数据元素。
图3B示出了可选的寄存器中数据存储格式。每一个封装的数据可以包括多于一个的不相关的数据元素。示出了三个封装的数据格式:封装的半341、封装的单342和封装的双343。封装的半341、封装的单342和封装的双343的一个实施例包含定点数据元素。对于可选的实施例,封装的半341、封装的单342和封装的双343中的一个或多个可以包含浮点数据元素。封装的半341的一个可选实施例是128位长,包含八个16位数据元素。封装的单342的一个实施例是128位长并包含四个32位数据元素。封装的双343的一个实施例是128位长并包含两个64位数据元素。将认识到,这样的封装的数据格式可以进一步扩展到其它寄存器长度,例如,扩展到96位、160位、192位、224位、256位或更多。
图3C示出了根据本发明的一个实施例的在多媒体寄存器中的各种带符号和不带符号的封装的数据类型表示。不带符号的封装的字节表示344示出了在SIMD寄存器中的不带符号的封装的字节的存储。每一个字节数据元素的信息存储在字节零的位7到位0、字节一的位15到位8、字节二的位23到位16、和最后字节15的位120到位127中。因此,在寄存器中使用了所有可用的位。这个存储布置可以增加处理器的存储效率。同样,使用所访问的16个数据元素,一个操作现在也可以以并行的方式在16个数据元素上被执行。带符号的封装的字节表示345示出了带符号的封装的字节的存储。注意,每个字节数据元素的第8位是符号指示符。不带符号的封装的字表示346示出了字7到字0如何存储在SIMD寄存器中。带符号的封装的字表示347与不带符号的封装的字寄存器中表示346类似。注意,每一个字数据元素的第16位是符号指示符。不带符号的封装的双字表示348示出了双字数据元素如何被存储。带符号的封装的双字表示349与不带符号的封装的双字寄存器中表示348类似。注意,必要的符号位是每一个双字数据元素的第32位。
图3D是具有32或更多位的操作编码(操作码)格式360的一个实施例的描绘,并且寄存器/存储器操作数寻址模式与在intel.com/design/litcentr的万维网(www)上的从Santa Clara,CA的Intel公司可得到的“IA-32 Intel Architecture SoftwareDeveloper’s Manual Volume 2:Instruction Set Reference”中描述的一种类型的操作码格式相对应。在一个实施例中,以及指令可以由一个或多个字段361和362进行编码。每指令可以识别多达两个操作数位置,包括多达两个源操作数标识符364和365。对于一个实施例,目的操作数标识符366与源操作数标识符364相同,而在其它实施例中,它们是不同的。对于可选的实施例,目的操作数标识符366与源操作数标识符365相同,而在其它实施例中,它们是不同的。在一个实施例中,由源操作数标识符364和365识别的源操作数中的一个由文本串比较操作的结果覆写,而在其它实施例中,标识符364与源寄存器元素相对应,并且标识符365与目的寄存器元素相对应。对于一个实施例,操作数标识符364和365可以用于识别32位或64位源和目的操作数。
图3E是具有40或更多位的另一可选的操作编码(操作码)格式370的描绘。操作码格式370与操作码格式360相对应,并且包括前缀字节378。根据一个实施例的指令可以由一个或多个字段378、371和372进行编码。每指令多达两个操作数位置可以由源操作数标识符374和375并且由前缀字节378识别。对于一个实施例,前缀字节378可以用于识别32位或64位源和目的操作数。对于一个实施例,目的操作数标识符376与源操作数标识符374相同,而在其它实施例中,它们是不同的。对于可选的实施例,目的操作数标识符376与源操作数标识符375相同,而在其它实施例中,它们是不同的。在一个实施例中,指令在由操作数标识符374和375识别的操作数中的一个或多个上操作,并且由操作数标识符374和375识别的一个或多个操作数由指令的结果覆写,而在其它实施例中,由标识符374和375识别的操作数被写到另一寄存器中的另一数据元素。操作码格式360和370允许部分地由MOD字段363和373并由缩放索引基础(scale-index-base)和移位字节指定的寄存器到寄存器、存储器到寄存器、寄存器乘存储器、寄存器乘寄存器、寄存器乘中间、寄存器到存储器寻址。
接着转到图3F,在一些可选的实施例中,可以通过协处理器数据处理(CDP)指令来执行64位单指令多数据(SIMD)算术操作。操作编码(操作码)格式380描绘具有CDP操作码字段382和389的一个这样的CDP指令。CDP指令的类型,对于可选的实施例,操作可以由字段383、384、387和388中的一个或多个进行编码。可以识别每指令多达三个操作数位置,包括多达两个源操作数标识符385和390以及一个目的操作数标识符386。协处理器的一个实施例可以在8、16、32和64位值上操作。对于一个实施例,在整数数据元素上执行指令。在一些实施例中,可以使用条件字段381有条件地执行指令。对于一些实施例,源数据尺寸可以由字段383编码。在一些实施例中,零(Z)、负(N)、进位(C)和溢出(V)检测可以在SIMD字段上完成。对于一些指令,饱和的类型可以由字段384编码。
图4A是示出了根据本发明的至少一个实施例的有序流水线和寄存器重命名阶段、乱序发出/执行流水线的框图。图4B是示出了根据本发明的至少一个实施例的包括在处理器中的有序体系结构核心和寄存器重命名逻辑、乱序发出/执行逻辑的框图。图4A中的实线框示出了有序流水线,而虚线框示出了寄存器重命名、乱序发出/执行流水线。类似地,图4B中的实线框示出了有序体系结构逻辑,而虚线框示出了寄存器重命名逻辑和乱序发出/执行逻辑。
在图4A中,处理器流水线400包括取出阶段402、长度解码阶段404、解码阶段406、分配阶段408、重命名阶段410、调度(也被称为分派或发出)阶段412、寄存器读取/存储器读取阶段414、执行阶段416、写回/存储器写阶段418、异常处理阶段422和提交阶段424。
在图4B中,箭头表示在两个或更多个单元之间的耦合,并且箭头的方向指示在那些单元之间的数据流的方向。图4B示出了包括耦合到执行引擎单元450的前端单元430的处理器核心490,并且这两个单元都耦合到存储器单元470。
核心490可以是精简指令集计算(RISC)核心、复杂指令集计算(CISC)核心、超长指令字(VLIW)核心或混合或可选的核心类型。作为又一选择,核心490可以是专用核心,例如,网络或通信核心、压缩引擎、图形核心等。
前端单元430包括耦合到指令高速缓存单元434的分支预测单元432,指令高速缓存单元434耦合到指令转换后备缓冲器(TLB)436,指令转换后备缓冲器(TLB)436耦合到指令取出单元438,指令取出单元438耦合到解码单元440。解码单元或解码器可以对指令解码,并作为输出生成一个或多个微操作、微代码入口点、微指令、其它指令、或从原始指令解码或否则反映原始指令或从原始指令得到的其它控制信号。可以使用各种不同的机制来实现解码器。适当的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元434进一步耦合到存储器单元470中的二级(L2)高速缓存单元476。解码单元440耦合到执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450包括耦合到引退单元454和一个或多个调度器单元456的集合的重命名/分配器单元452。调度器单元456表示任何数量的不同的调度器,包括预留站、中央指令窗口等。调度器单元456耦合到物理寄存器文件单元458。物理寄存器文件单元458的每一个代表一个或多个物理寄存器文件、不同的物理寄存器文件存储一个或多个不同的数据类型,例如,标量整数、标量浮点、封装的整数、封装的浮点、矢量整数、矢量浮点等、状态(例如,作为待执行的下一指令的地址的指令指针)等。物理寄存器文件单元458由引退单元154重叠以示出寄存器重命名和乱序执行可以被实现的各种方式(例如,使用记录器缓冲器和引退寄存器文件,使用未来文件、历史缓冲器和引退寄存器文件;使用寄存器映射和寄存器池;等等)。通常,体系结构寄存器从处理器的外部或从编程者的观点是可见的。寄存器不限于任何已知的特定类型的电路。各种不同类型的寄存器是适当的,只要它们能够存储并提供如本文描述的数据。适当的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。引退单元454和物理寄存器文件单元458耦合到执行群集460。执行群集460包括一个或多个执行单元162的集合和一个或多个存储器存取单元464的集合。执行单元462可以执行各种操作(例如,移位、加法、减法、乘法)并且针对各种类型的数据(例如,标量浮点、封装的整数、封装的浮点、矢量整数、矢量浮点)。虽然一些实施例可以包括专用于特定的功能或功能集合的多个执行单元,但是其它实施例可以包括一个执行单元或全部执行所有功能的多个执行单元。调度器单元456、物理寄存器文件单元458和执行群集460被示为可能是多个,这是因为某些实施例针对某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/封装的整数/封装的浮点/矢量整数/矢量浮点流水线、和/或存储器存取流水线,每一个流水线具有其自己的调度器单元、物理寄存器文件单元和/或执行群集,——并且在单独的存储器存取流水线的情况下,某些实施例被实现,其中这个流水线的执行群集具有存储器存取单元464)。也应理解,在单独的流水线被使用的场合,这些流水线中的一个或多个可以是乱序发出/执行,并且其余流水线是有序的。
所述存储器存取单元464的集合耦合到存储器单元470,存储器单元470包括耦合到数据高速缓存单元474的数据TLB单元472,数据高速缓存单元474耦合到二级(L2)高速缓存单元476。在一个示例性实施例中,存储器存取单元464可以包括加载单元、存储地址单元和存储数据单元,其中的每一个单元都耦合到存储器单元470中的数据TLB单元472。L2高速缓存单元476耦合到高速缓存的一个或多个其它级并最终耦合到主存储器。
作为示例,示例性寄存器重命名、乱序发出/执行核心体系结构可以如下实现流水线400:1)指令取出438实施取出和长度解码阶段402和404;
2)解码单元440实施解码阶段406;3)重命名/分配器单元452实施分配阶段408和重命名阶段410;4)调度器单元456实施阶段412;5)物理寄存器文件单元458和存储器单元470实施寄存器读取/存储器读取阶段414;执行群集460实施执行阶段416;6)存储器单元470和物理寄存器文件单元458实施写回/存储器写入阶段418;7)可以在异常处理阶段422中涉及各种单元;以及8)引退单元454和物理寄存器文件单元458实施提交阶段424。
核心490可以支持一个或多个指令集(例如,x86指令集(具有添加有较新版本的一些扩展);Sunnyvale,CA的MIPS Technologies的MIPS指令集;Sunnyvale,CA的ARMHoldings的ARM指令集(具有额外的扩展例如,NEON))。
应理解,核心可以支持多线程(执行两组或更多组并行的操作或线程),并可以用各种方式这么做,包括时间分片多线程、同时多线程(其中单个物理核心为每一个线程提供逻辑核心,物理核心是同时多线程的)或其组合(例如,时间分片取出和解码和在下文例如在
Figure GDA0002996214020000211
Hyperthreading技术中的同时多线程)。
虽然在乱序执行的上下文中描述了寄存器重命名,但是应理解,可以在顺序体系结构中使用寄存器重命名。虽然处理器的所示实施例还包括单独的指令和数据高速缓存单元434/474以及共享L2高速缓存单元476,但是可选的实施例可以具有用于指令和数据二者的单个内部高速缓存,例如一级(L1)内部高速缓存或内部高速缓存的多个级别。在一些实施例中,系统可以包括内部高速缓存和在核心和/或处理器外部的外部高速缓存的组合。可选地,所有高速缓存都可以在核心和/或处理器外部。
图5是根据本发明的实施例的单核处理器和具有集成存储器控制器和图形的多核处理器500的框图。图5中的实线框示出了具有单个核心502A、系统代理510、一个或多个总线控制器单元516的集合的处理器500,而虚线框的添加示出了具有多个核心502A-N、在系统代理单元510中的一个或多个集成存储器控制器单元514的集合、和集成图形逻辑508的可选的处理器500。
存储器层次结构包括在核心内的一个或多个级别的高速缓存、一个或多个共享高速缓存单元506或共享高速缓存单元506的集合,和耦合到集成存储器控制器单元514的集合的外部存储器(未示出)。所述共享高速缓存单元506的集合可以包括一个或多个中级高速缓存,例如,二级(L2)、三级(L3)、四级(L4)或其它级高速缓存、最后一级高速缓存(LLC)、和/或其组合。虽然在一个实施例中基于环的互连单元512使集成图形逻辑508、共享高速缓存单元506的集合和系统代理单元510互连,但是可选的实施例可以使用任何数量的公知技术以用于使这样的单元互连。
在一些实施例中,核心502A-N中的一个或多个能够进行多线程。
系统代理510包括协调并操作核心502A-N的那些部件。系统代理单元510可以包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括调节核心502A-N和集成图形逻辑508的功率状态所需的逻辑和部件。显示单元用于驱动一个或多个外部连接的显示器。
核心502A-N从体系结构和/或指令集的方面来说可以是同构的或异构的。例如,核心502A-N中的一些可以是有序的,而其它核心是乱序的。作为另一示例,核心502A-N中的两个或更多个可能能够执行相同的指令集,而其它核心可能能够执行该指令集的子集或不同的指令集。
处理器可以是通用处理器,例如,从Santa Clara,Calif的Intel公司可得到的CoreTM i3、i5、i7、2Duo和Quad、XeonTM、ItaniumTM、XScaleTM或StrongARMTM处理器。可选地,处理器可以来自另一公司,例如,ARM Holdings,Ltd、MIPS等。处理器可以是专用处理器,例如,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等。处理器可以在一个或多个芯片上实现。处理器500可以是一个或多个衬底的一部分和/或可以使用多种处理技术(例如,BiCMOS、CMOS或NMOS)中的任何在一个或多个衬底上实现。
图6-图8是适合于包括处理器500的示例性系统,而图9是可以包括核心502中的一个或多个的示例性芯片上系统(SoC)。对膝上型计算机、桌上型计算机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备和各种其它电子设备的领域公知的其它系统设计和配置也是适当的。通常,能够合并处理器和/或如本文公开的其它执行逻辑的种类繁多的系统或电子设备通常是适当的。
现在参考图6,示出了根据本发明的一个实施例的系统600的框图。系统600可以包括耦合到图形存储器控制器集线器(GMCH)620的一个或多个处理器610、615。在图6中用虚线表示额外的处理器615的性质。
每一个处理器610、615可以是处理器500的某个版本。然而,应注意,集成图形逻辑和集成存储器控制器单元不可能存在于处理器610、615中。图6示出了GMCH 620可以耦合到存储器640,存储器640可以是例如动态随机存取存储器(DRAM)。对于至少一个实施例,DRAM可以与非易失性高速缓存相关联。
GMCH 620可以是芯片组或芯片组的一部分。GMCH 620可以与处理器610、615通信,并控制在处理器610、615和存储器640之间的交互。GMCH 620也可以充当在处理器610、615和系统600的其它元件之间的加速总线接口。对于至少一个实施例,GMCH 620经由多分支总线(例如,前端总线(FSB)695)与处理器610、615通信。
此外,GMCH 620耦合到显示器645(例如,平板显示器)。GMCH 620可以包括集成图形加速器。GMCH 620进一步耦合到输入/输出(I/O)控制器集线器(ICH)650,其可以用于将各种外围设备耦合到系统600。例如在图6的实施例中示出的是外部图形设备660,其可以是耦合到ICH 650连同另一外围设备670的分立的图形设备。
可选地,额外或不同的处理器也可以存在于系统600中。例如,额外的处理器615可以包括与处理器610相同的额外的处理器、与处理器610异构或非对称的额外的处理器、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器。从有价值的度量——包括体系结构、微体系结构、热、功率消耗特征等——的范围方面,在物理资源610、615之间可能存在各种差异。这些差异可以有效地表明其自身作为处理器610、615当中的非对称性和异构性。对于至少一个实施例,各种处理器610、615可以存在于同一管芯封装中。
现在参考图7,示出了根据本发明的实施例的第二系统700的框图。如图7所示,多处理器系统700是点对点互连系统,并包括经由点对点互连750耦合的第一处理器770和第二处理器780。处理器770和780中的每一个可以是一些版本的处理器500作为处理器610、615中的一个或多个。
虽然示出了两个处理器770、780,但是应理解,本公开的范围并不被这样限制。在其它实施例中,一个或多个额外的处理器可以存在于给定的处理器中。
处理器770和780被示为分别包括集成存储器控制器单元772和782。处理器770还包括点对点(P-P)接口776和778作为其总线控制器单元的部分;类似地,第二处理器780包括P-P接口786和788。处理器770、780可以使用P-P接口电路778、788经由点对点(P-P)接口750交换信息。如图7所示,IMC 772和782将处理器耦合到可以是在本地附接到相应的处理器的主存储器的部分的相应的存储器,即存储器732和存储器734。
处理器770、780每一个可以经由单独的P-P接口752、754使用点对点接口电路776、794、786、798与芯片组790交换信息。芯片组790也可以经由高性能图形接口739与高性能图形电路738交换信息。
共享高速缓存(未示出)可以包括在处理器中或在两个处理器的外部,然而经由P-P连接与处理器连接,使得如果处理器被置为低功率模式中,任一个或两个处理器的本地高速缓存信息可以存储在共享高速缓存中。
芯片组790可以经由接口796耦合到第一总线716。在一个实施例中,第一总线716可以是外围部件互连(PIC)总线或诸如快速PCI总线或另一第三代I/O互连总线的总线,但是本公开的范围并不被如此限制。
如图7所示,各种I/O设备714可以耦合到第一总线716,连同将第一总线716耦合到第二总线720的总线桥718。在一个实施例中,第二总线720可以是低引脚计数(LPC)总线。各种设备可以耦合到第二总线720,所述各种设备包括例如键盘和/或鼠标722、通信设备727和存储单元728例如磁盘驱动器或可以包括指令/代码和数据730的其它大容量存储设备。此外,音频I/O 724可以耦合到第二总线720。注意,其它体系结构是可能的。例如,不是图7的点对点体系结构,系统可以实现多分支总线或其它这样的体系结构。
现在参考图8,示出了根据本发明的实施例的第三系统800的框图。在图7和8中的相似元件承载相似的附图标记,并且图7的某些方面从图8省略,以便避免使图8的其它方面难理解。
图8示出了处理器770、780可以分别包括集成存储器和I/O控制逻辑(“CL”)772和782。对于至少一个实施例,CL 772、782可以包括集成存储器控制器单元,例如,上面关于图5和图7描述的集成存储器控制器单元。此外,CL 772、782还可以包括I/O控制逻辑。图8示出了存储器732、734耦合到CL 772、782,以及I/O设备814也耦合到控制逻辑772、782。旧版I/O设备815耦合到芯片组790。
现在参考图9,示出了根据本发明的实施例的SoC 900的框图。图5中的相似元件承载相似的附图标记。此外,虚线框是在更高级的SoC上的特征。在图9中,互连单元902耦合到:包括一个或多个核心502A-N的集合和共享高速缓存单元506的应用处理器910;系统代理单元510;总线控制器单元516;集成存储器控制器单元514;一个或多个媒体处理器920或媒体处理器920的集合,媒体处理器920可以包括集成图形逻辑508、用于提供静止和/或视频摄像机功能的图像处理器924、用于提供硬件音频加速的音频处理器926、以及用于提供视频编码/解码加速的视频处理器928;静态随机存取存储器(SRAM)单元930;直接存储器存取(DMA)单元932;以及用于耦合到一个或多个外部显示器的显示单元940。
图10示出了包含可以根据一个实施例执行至少一个指令的中央处理单元(CPU)和图形处理单元(GPU)的处理器。在一个实施例中,用于根据至少一个实施例执行操作的指令可以由CPU执行。在另一实施例中,指令可以由GPU执行。在又一实施例中,可以通过由GPU和CPU执行的操作的组合来执行指令。例如,在一个实施例中,根据一个实施例的指令可以被接收和解码用于在GPU上执行。然而,在解码的指令内的一个或多个操作可以由CPU执行,并且结果返回到GPU以用于指令的最后引退。相反,在一些实施例中,CPU可以充当主处理器,而GPU充当协处理器。
在一些实施例中,受益于高度并行、吞吐量处理器的指令可以由GPU执行,而受益于处理器的性能的指令可以由CPU执行,其中所述处理器的性能受益于深流水线型体系结构。例如,图形、科学应用、财务应用和其它并行工作负载可以受益于GPU的性能并被相应地执行,而更连续的应用(例如,操作系统内核或应用代码)可以更好地适合于CPU。
在图10中,处理器1000包括CPU 1005、GPU 1010、图像处理器1015、视频处理器1020、USB控制器1025、UART控制器1030、SPI/SDIO控制器1035、显示设备1040、存储器接口控制器1045、MIPI控制器1050、闪速存储器控制器1055、双数据率(DDR)控制器1060、安全引擎1065和I2S/I2C控制器1070。其它逻辑和电路可以包括在图10的处理器中,所述其它逻辑和电路包括更多的CPU或GPU和其它外围接口控制器。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性数据实现,所述代表性数据表示处理器内的各种逻辑,所述代表性数据当由机器读取时,使所述机器制造逻辑以执行本文描述的技术。被称为“IP核心”的这样的表示可以存储在有形、机器可读介质(“带子”)上,并被应用到各种消费者或制造设施,以加载到实际制造逻辑或处理器的制造机器中。例如,IP核心(例如,由ARM Holdings,Ltd开发的CortexTM系列处理器和中国科学院的计算技术研究所(ICT)开发的Loongson IP核心)可以被许可或出售给各种消费者或许可证接受方(例如,Texas Instument、Qualcomm、Apple、或Samsung),并在由这些消费者或许可证接受方生成的处理器中实现。
图11示出了根据一个实施例的IP核心的发展的框图。存储装置1130包括仿真软件1120和/或硬件或软件模型1110。在一个实施例中,表示IP核心设计的数据可以经由存储器1140(例如,硬盘)、有线连接(例如,互联网)1150或无线连接1160被提供到存储装置1130。由仿真工具和模型生成的IP核心信息可以接着被发送到制造设施,其中它可以由第三方制造以根据至少一个实施例执行至少一个指令。
在一些实施例中,一个或多个指令可以与第一类型或体系结构(例如,x86)相对应并在不同类型或体系结构(例如,ARM)的处理器上被变换或仿真。根据一个实施例,指令可以因此在任何处理器或处理器类型上被执行,所述任何处理器或处理器类型包括ARM、x86、MIPS、GPU、或其它处理器类型或体系结构。
图12示出了根据一个实施例的第一类型的指令如何由不同类型的处理器进行仿真。在图12中,程序1205包含可以执行与根据一个实施例的指令相同或实质上相同的功能的一些指令。然而,程序1205的指令可以具有与处理器1215不同或不兼容的类型和/或格式,意味着程序1205中的类型的指令可能不能够自然地由处理器1215执行。然而,借助于仿真逻辑1210,程序1205的指令被转换为自然能够由处理器1215执行的指令。在一个实施例中,仿真逻辑体现在硬件中。在另一实施例中,仿真逻辑体现在包含软件的有形、机器可读介质中,以将程序1205中的指令的类型转换为由处理器1215自然可执行的类型。在其它实施例中,仿真逻辑是固定功能或可编程硬件和存储在有形、机器可读介质上的程序的组合。在一个实施例中,处理器包含仿真逻辑,而在其它实施例中,仿真逻辑存在于处理器外部并由第三方提供。在一个实施例中,处理器能够通过执行包含在处理器中或与处理器相关联的微代码或固件来加载体现在包含软件的有形、机器可读介质中的仿真逻辑。
图13是根据本发明的实施例的对照将源指令集中的二进制指令转换为目标指令集中的二进制指令的软件指令转换器的使用的框图。在所示实施例中,指令转换器是软件指令转换器,但是可选地,指令转换器可以在软件、固件、硬件或其各种组合中实现。图13示出了以高级语言1302的形式的程序可以使用x86编译器1304进行编译以生成可以由具有至少一个x86指令集核心1316的处理器自然地执行的x86二进制代码1306。具有至少一个x86指令集核心1316的处理器代表能够执行与具有至少一个x86指令集核心的Intel处理器实质上相同的功能的任何处理器,执行与具有至少一个x86指令集核心的Intel处理器实质上相同的功能可以通过兼容地执行或否则处理(1)Intel x86指令集核心的指令集的相当大的部分或(2)应用的对象代码版本或目标为在具有至少一个x86指令集核心的Intel处理器上运行的其它软件,以便实现与具有至少一个x86指令集核心的Intel处理器实质上相同的结果。x86编译器1304代表可操作用于生成x86二进制代码1306(例如,对象代码)的编译器,x86二进制代码1306可以在有或没有额外的链接处理的情况下在具有至少一个x86指令集核心1316的处理器上执行。类似地,图13示出了以高级语言1302的形式的程序可以使用可选的指令集编译器1308进行编译,以生成可以由不具有至少一个x86指令集核心1314的处理器(例如,具有执行Sunnyvale,CA的MIPS Technologies的MIPS指令集和/或执行Sunnyvale,CA的ARM Holdings的ARM指令集的核心的处理器)自然地执行的可选的指令集二进制代码1310。指令转换器1312用于将x86二进制代码1306转换为可以自然地由不具有x86指令集核心1314的处理器执行的代码。这个转换的代码不可能与可选的指令集二进制代码1310相同,因为能够完成此的指令转换器难以制造;然而,所转换的代码将完成一般操作并由来自可选的指令集的指令构成。因此,指令转换器1312代表软件、固件、硬件或其组合,其通过模拟、仿真或任何其它过程允许不具有x86指令集核心处理器或核心的处理器或其它电子设备执行x86二进制代码1306。
现在参考图14,示出了多核处理器的实施例的框图。如在图14的实施例中所示的,处理器1400包括多个域。具体地,核心域1430包括多个核心1430A-1430N,图形域1460包括具有媒体引擎1465的一个或多个图形引擎,以及系统代理域1410。
在各种实施例中,系统代理域1410处理功率控制事件和功率管理,使得域1430和1460的单独单元(例如,核心和/或图形引擎)是独立可控制的,以按照出现在给定单元中的活动(或不活动)动态地在适当的功率模式/水平(例如,活动、涡轮、睡眠、休眠、深睡眠或其它高级配置功率接口型状态)下操作。域1430和1460中的每一个可以在不同的电压和/或功率下操作,并且此外在域内的单独单元的每一个可能在独立的频率和电压下操作。注意,虽然示出了三个域,但是本公开的范围并不被限制在这个方面中,并且在其它实施例中可以存在额外的域。
如所示,每一个核心1430除了各种执行单元和额外的处理元件以外还包括低级高速缓存。在这里,各种核心彼此耦合并耦合到由最后一级高速缓存(LLC)1440A-1440N的多个单元或分片形成的共享高速缓冲存储器;这些LLC常常包括存储和高速缓存控制器功能,并在核心当中以及也可能地在图形引擎当中被共享。
如看到的,环形互连1450将核心耦合在一起,并提供经由多个环站(ring stop)1452A-1452N在核心域1430、图形域1460和系统代理电路1410之间的互连,每一个环站在核心和LLC分片之间耦合。如在图14中看到的,互连1450用于传送各种信息,包括地址信息、数据信息、确认信息和窥探/无效信息。虽然示出了环形互连,但是可以利用任何已知的管芯上互连或结构。作为可选的示例,可以用类似的方式利用上面讨论的一些结构(例如,另一管芯上互连、Intel芯片上系统结构(IOSF)、高级微控制器总线体系结构(AMBA)互连、多维网状结构、或其它公知的互连体系结构)。
如进一步描绘的,系统代理域1410包括显示引擎1412,显示引擎1412用于对提供相关联的显示器的控制和到提供相关联的显示器的接口。系统代理域1410可以包括其它单元,例如:提供到系统存储器(例如,使用多个DIMM实现的DRAM)的接口的集成存储器控制器1420;执行存储器一致性操作的一致性逻辑1422。多个接口可以存在,以使在处理器和其它电路之间的互连变得可能。例如,在一个实施例中,提供至少一个直接媒体接口(DMI)1416接口以及一个或多个PCIeTM接口1414。显示引擎和这些接口一般经由PCIeTM桥1418耦合到存储器。仍然进一步地,为了提供在其它代理(例如,额外的处理器或其它电路)之间的通信,可以提供一个或多个其它接口(例如,
Figure GDA0002996214020000291
快速路径互连(QPI)结构)。
现在参考图15,示出了代表性核心的框图;具体地,核心(例如,来自图14的核心1430)的后端的逻辑块。通常,图15所示的结构包括具有前端单元1570的乱序处理器,前端单元1570用于取出进入的指令、执行各种处理(例如,缓存、解码、分支预测等)和将指令/操作一起传递到乱序(OOO)引擎1580。OOO引擎1580对解码的指令执行进一步的处理。
具体地在图15的实施例中,乱序引擎1580包括分配单元1582,用于从前端单元1570接收可以以一个或多个微指令或uop的形式的解码的指令,并将它们分配到适当的资源,例如,寄存器等。接着,指令被提供到预留站1584,其预留资源并调度它们以用于在多个执行单元1586A-1586N中的一个上执行。各种类型的执行单元可以存在,包括例如算术逻辑单元(ALU)、加载和存储单元、矢量处理单元(VPU)、浮点执行单元等。来自这些不同的操作单元的结果被提供到记录器缓冲器(ROB)1588,其获取乱序的结果并以正确的程序顺序返回它们。
仍然参考图15,注意,前端单元1570和乱序引擎1580二者都耦合到不同级别的存储器层次结构。具体示出了指令级高速缓存1572,指令级高速缓存1572继而耦合到中级高速缓存1576,中级高速缓存1576继而耦合到最后一级高速缓存1595。在一个实施例中,最后一级高速缓存1595在芯片上(有时被称为uncore)单元1590中实现。作为示例,单元1590与图14的系统代理1410类似。如上面讨论的,UnCore 1590与系统存储器1599通信,系统存储器1599在所示的实施例中经由ED RAM实现。也注意,在乱序引擎1580内的各种执行单元1586与第一级高速缓存1574通信,第一级高速缓存1574也与中级高速缓存1576通信。也注意,额外的核心1530N-2-1530N可以耦合到LLC 1595。虽然在图15的实施例中以所述高级别示出,但是应理解,各种变更和额外的部件可以存在。
现在参考图16,示出了根据本发明的实施例的在计算机系统中存在的部件的框图。如图16所示,系统1600包括部件的任何组合。这些部件可以被实现为在计算机系统中适合的IC、其部分、分立的电子设备、或其它模块、逻辑、硬件、软件、固件或其组合,或被实现为否则集成在计算机系统的底盘内的部件。也注意,图16的框图是要示出计算机系统的很多部件的高级视图。然而应理解,在其它实现中,所示的部件中的一些可以被省略,额外的部件可以存在,以及所示部件的不同布置可以出现。作为结果,上面描述的本发明的实施例可以在下面示出或描述的互连的一个或多个中的任何部分中实现。
如在图16中看到的,在一个实施例中,处理器1610包括微处理器、多核处理器、多线程处理器、超低电压处理器、嵌入式处理器、或其它已知的处理元件。在所示实现中,处理器1610充当主处理单元和用于与系统1600的各种部件中的很多通信的中央集线器。作为一个示例,处理器1610被实现为芯片上系统(SoC)。作为特定的例证性示例,处理器1610包括具有
Figure GDA0002996214020000301
Architecture CoreTM(例如,从Santa Clara,CA的Intel公司可得到的i3、i5、i7或另一这样的处理器)的处理器。然而应理解,其它低功率处理器(例如,从Sunnyvale,CA的Advanced Micro Devices,Inc.(AMD)可得到的、来自Sunnyvale,CA的MIPSTechnologies的基于MIPS的设计、从ARM Holdings,Ltd得到许可的基于ARM的设计、或其消费者、或它们的许可证接受方或采用方)可替代地存在于其它实施例(例如,Apple A5/A6处理器、Qualcomm Snapdragon处理器、或TI OMAP处理器)中。注意,这样的处理器的很多消费者版本被修改和改变;然而它们可以支持或识别执行如处理器许可方阐述的指定算法的特定的指令集。在这里,微体系结构实现可以改变,但处理器的体系结构功能通常是一致的。下面在一个实现中进一步讨论关于处理器1610的体系结构和操作的某些细节以提供例证性示例。
在一个实施例中,处理器1610与系统存储器1615通信。作为例证性示例,其在实施例中可以经由多个存储器设备来实现以提供给定数量的系统存储器。作为示例,存储器可以根据基于联合电子设备工程理事会(JEDEC)低功率双数据率(LPDDR)的设计,例如,根据JEDEC JESD 209-2E(2009年4月公布)的当前LPDDR2标准、或将提供对LPDDR2的扩展以增加带宽的被称为LPDDR3或LPDDR4的下一代LPDDR标准。在各种实现中,单独的存储器设备可以具有不同的封装类型,例如,单管芯封装(SDP)、双管芯封装(DDP)或四管芯封装(IP)。在一些实施例中,这些设备被直接焊接到母板上以提供低损耗解决方案,而在其它实施例中设备被配置为一个或多个存储器模块,所述存储器模块继而由给定的连接器耦合到母板。而且当然,其它存储器实现是可能的,例如,其它类型的存储器模块,例如,不同种类的双列直插式存储器模块(DIMM),包括但不限于microDIMM、MiniDIMM。在特定的例证性实施例中,存储器尺寸在2GB和16GB之间,并且可以被配置为经由球栅阵列(BGA)焊接到母板上的DDR3LM封装或LPDDR2或LPDDR3存储器。
为了提供信息(例如,数据、应用、一个或多个操作系统等)的永久存储,大容量存储装置1620也可以耦合到处理器1610。在各种实施例中,为了使更薄和更轻的系统设计变得可能以及提供系统响应性,所述大容量存储装置可以经由SSD来实现。然而在其它实施例中,大容量存储器可以主要使用具有较小量的SSD存储装置的硬盘驱动器(HDD)来实现以充当SSD高速缓存,以使在断电事件期间上下文状态和其它这样的信息的非易失性存储变得可能,使得快速上电能够出现在系统活动的重新开始时。同样在图16中示出的,闪速存储器设备1622可以例如经由串行外围接口(SPI)耦合到处理器1610。这个闪速存储器设备可以提供系统软件的非易失性存储装置,所述系统软件包括基本输入/输出软件(BIOS)以及系统的其它固件。
在各种实施例中,系统的大容量存储装置由SSD单独实现或被实现作为磁盘、光学或具有SSD高速缓存的其它驱动器。在一些实施例中,大容量存储装置被实现为SSD或HDD连同恢复(RST)高速缓存模块。在各种实现中,HDD提供在320GB-4百万兆字节(TB)和以上之间的存储,而RST高速缓存使用具有24GB-256GB的容量的SSD来实现。注意,这样的SSD高速缓存可以被配置为单级高速缓存(SLC)或多级高速缓存(MLC)选项以提供适当水平的响应性。在仅SSD选项中,模块可以被容纳在各种位置中,例如,在mSATA或NGFF狭槽中。作为示例,SSD具有范围从120GB-1TB的容量。
各种输入/输出(IO)设备可以存在于系统1600内。在图16的实施例中具体示出了显示器1624,其可以是在底盘的盖部分内配置的高清LCD或LED面板。这个显示面板也可以提供例如在显示面板上在外部适应的触摸屏1625,使得经由用户与这个触摸屏的交互,用户输入可以被提供到系统以使期望的操作(例如,关于信息的显示、信息的访问等)变得可能。在一个实施例中,显示器1624可以经由可以被实现为高性能图形互连的显示互连耦合到处理器1610。触摸屏1625可以经由另一互连耦合到处理器1610,所述另一互连在实施例中可以是I2C互连。如在图16中进一步示出的,除了触摸屏1625以外,用户输入通过触摸的方式也可以经由触控板1630出现,触控板1630可以被配置在底盘内并且也可以耦合到与触摸屏1625相同的I2C互连。
显示面板可以在多种模式中操作。在第一模式中,显示面板可以被布置在透明状态中,其中显示面板对可见光是透明的。在各种实施例中,显示面板的大部分可以是显示器,除了在外围设备周围的框以外。当系统在笔记本模式中操作并且显示面板在透明状态中操作时,用户可以观看呈现在显示器面板上的信息同时也能够观看在显示器后面的物体。此外,显示在显示面板上的信息可以由位于显示器后面的用户观看。或者显示面板的操作状态可以是不透明状态,其中可见光不通过显示面板传输。
在平板模式中,当基础面板的底表面放置在表面上或由用户托住时,系统被折叠关闭,使得显示面板的后显示表面在一个位置上达到静止,使得它向外面向用户。在平板模式操作中,后显示表面执行显示器和用户界面的角色,因为这个表面可以具有触摸屏功能并且可以执行常规触摸屏设备(例如,平板设备)的其它已知的功能。为此目的,显示面板可以包括设置在触摸屏层和前显示表面之间的透明度调节层。在一些实施例中,透明度调节层可以是电致变色层(EC)、LCD层、或EC和LCD层的组合。
在各种实施例中,显示器可以具有不同的尺寸,例如11.6”或13.3”屏幕,并且可以具有16:9高宽比和至少300尼特亮度。显示器也可以具有全高清(HD)分辨率(至少1920x1080p),与嵌入式显示端口(eDP)兼容,并且是具有面板自刷新的低功率平面板。
关于触摸屏能力,系统可以提供显示多触摸面板,其为多触摸电容并且有至少5点式触摸能力。而且在一些实施例中,显示器可以有10点式触摸能力。在一个实施例中,触摸屏被容纳在低摩擦的防损坏和刮擦玻璃和涂层(例如,Gorilla GlassTM玻璃和涂层或Gorilla Glass 2TM玻璃和涂层)内,以减少“手指灼伤”并避免“手指跳过”。为了提供增强的触摸体验和响应性,在一些实现中,触摸面板具有多触摸功能,例如,在缩小期间每静态视图少于2帧(30Hz)和具有200ms的每帧(30Hz)小于1cm的单触摸功能(手指到指针的滞后)。在一些实现中,显示器支持具有也与面板表面齐平和当使用多触摸时的有限IO干扰的最小屏幕框的边缘到边缘玻璃。
出于感知计算和其它目的,各种传感器可以存在于系统内,并且可以用不同的方式耦合到处理器1610。某些惯性和环境传感器可以通过传感器集线器1640例如经由I2C互连耦合到处理器1610。在图16所示的实施例中,这些传感器可以包括加速度计1641、环境光传感器(ALS)1642、罗盘1643和陀螺仪1644。其它环境传感器可以包括一个或多个热传感器1646,在一些实施例中,所述热传感器经由系统管理总线(SMBus)总线耦合到处理器1610。
使用存在于平台中的各种惯性和环境传感器,可以实现很多不同的使用情况。这些使用情况使包括感知计算的高级计算操作变得可能,并且也允许关于功率管理/电池寿命、安全和系统响应性的增强。
例如关于功率管理/电池寿命问题,至少部分地基于来自环境光传感器的信息,在平台的位置上的环境光条件被确定并且显示器的强度相应地被控制。因此,在操作显示器时消耗的功率在某些光条件中被减小。
关于安全操作,基于从传感器得到的上下文信息(例如,位置信息),可以确定用户是否被允许访问某些安全文档。例如,用户可以被允许在工作地点或家位置处访问这样的文档。然而,当平台存在于公共地点时,用户被防止访问这样的文档。在一个实施例中,所述确定基于例如经由GPS传感器或路标的摄像机识别所确定的位置信息。其它安全操作可以包括提供在彼此的接近范围内的设备的配对,例如,如本文所述的便携式平台和用户的桌上型计算机、移动电话等。在一些实现中,当这些设备这样配对时,经由近场通信实现某些共享。然而,当设备超过某个范围时,这样的共享可以被禁用。此外,当使如本文所述的平台和智能电话配对时,警报可以被配置为当设备在公共地点中时从彼此移动大于预定距离时被触发。相反,当这些配对的设备在安全位置(例如,工作地点或家位置)上时,设备可以超过这个预定的限制而不触发这样的警报。
可以使用传感器信息来增强响应性。例如,甚至当平台在低功率状态中时,传感器也可以仍被启动以在相对低的频率下运行。相应地,例如由惯性传感器、GPS传感器等确定的平台的位置中的任何变化被确定。如果没有这样的变化被记录,则到之前的无线集线器(例如,Wi-FiTM接入点或类似的无线启动器)的较快连接出现,因为在这种情况下对于可用的无线网络资源不需要扫描。因此,实现当从低功率状态唤醒时较高水平的响应性。
应理解,可以使用经由在如本文所述的平台内的集成传感器得到的传感器信息来实现很多其它使用情况,并且上面的示例仅为了说明的目的。使用如本文所述的系统,感知计算系统可以允许包括手势识别的可选的输入形式的添加,并且使系统能够感测用户操作和意图。
在一些实施例中,一个或多个红外或其它热感测元件、或用于感测用户的存在或移动的任何其它元件可以存在。这样的感测元件可以包括在一起工作、按序工作或这两者的多个不同的元件。例如,感测元件包括提供初始感测(例如,光或声投影)的元件,后面是通过例如由超声飞行时间摄像机或图案化的光摄像机针对手势检测的感测。
同样在一些实施例中,系统包括光发生器,以产生照明线。在一些实施例中,这条线提供关于虚拟边界的视觉提示,即在空间中的假想或虚拟位置,其中用户穿过或冲破虚拟边界或平面的行动被解释为参与计算系统的意图。在一些实施例中,当计算系统转变为关于用户的不同状态时,照明线可以改变颜色。照明线可以用于为空间中的虚拟边界的用户提供视觉提示,并且可以由系统使用来确定在关于用户的计算机的状态中的转变,包括确定用户何时希望参与计算机。
在一些实施例中,计算机感测用户位置并且操作来将用户的手穿过虚拟边界的运动解释为指示用户参与计算机的意图的手势。在一些实施例中,当用户穿过虚拟线或平面时,由光发生器生成的光可改变,从而向用户提供用户已进入用于提供手势以向计算机提供输入的区域的视觉反馈。
显示屏可以提供关于用户的计算系统的状态的转变的视觉指示。在一些实施例中,在第一状态中提供第一屏幕,其中用户的存在由系统感测,例如通过一个或多个感测元件的使用。
在一些实现中,系统起作用来例如通过面部识别来感测用户身份。在这里,到第二屏幕的转变可以在第二状态中被提供,其中计算系统识别出用户身份,其中所述第二屏幕向用户提供用户已经转变到新状态的视觉反馈。到第三屏幕的转变可以出现在第三状态中,其中用户确认对用户的识别。
在一些实施例中,计算系统可以使用转变机制来确定用户的虚拟边界的位置,其中虚拟边界的位置可以随着用户和上下文而改变。计算系统可以生成光,例如,照明线,以指示参与系统的虚拟边界。在一些实施例中,计算系统可以在等待状态中,并且光可以在第一颜色中产生。计算系统可以例如通过使用感测元件感测用户的存在和移动来检测用户是否超过虚拟边界。
在一些实施例中,如果用户被检测为横穿虚拟边界(例如,用户的手比虚拟边界线更接近计算设备),则计算系统可以转变为用于从用户接收手势输入的状态,其中用于指示转变的机制可以包括光指示虚拟边界改变到第二颜色。
在一些实施例中,计算系统可以接着确定手势运动是否被检测到。如果手势运动被检测到,则计算系统可以继续进行手势识别过程,其可以包括来自手势数据库的数据的使用,手势数据库可以存在于计算设备中的存储器中或否则可以由计算设备访问。
如果用户的手势被识别出,则计算系统可以响应于输入而执行功能,并且返回以接收额外的手势,如果用户在虚拟边界内。在一些实施例中,如果手势未被识别出,则计算设备可以转变为错误状态,其中用于指示错误状态的机制可以包括光指示虚拟边界改变到第三颜色,系统返回以接收额外的手势,如果用户在参与计算系统的虚拟边界内。
如上面提到的,在其它实施例中,系统可以被配置为可以在至少两个不同的模式——平板模式和笔记本模式——中使用的可转变的平板系统。可转变的系统可以具有两个面板,即显示面板和基本面板,使得在平板模式中,这两个面板被设置在彼此的顶部上的叠层中。在平板模式中,显示面板向外并且可以提供如在常规平板计算机中找到的触摸屏功能。在笔记本模式中,这两个面板可以被布置在打开的蛤壳配置中。
在各种实施例中,加速度计可以是具有至少50Hz的数据率的3轴加速度计。也可以包括陀螺仪,其可以是3轴陀螺仪。此外,电子罗盘/磁力计可以存在。同样,可以提供一个或多个接近度传感器(例如,用于使盖打开以感测人何时(或不)接近系统并且调节功率/性能以延长电池寿命)。对于一些OS的传感器融合能力,包括加速度计、陀螺仪和罗盘,可以提供增强的特征。此外,经由具有实时时钟(RTC)的传感器集线器,从传感器机制唤醒可以被实现以当系统的其余部分在低功率状态中时接收传感器输入。
在一些实施例中,内部盖/显示器打开开关或传感器,以指示盖何时关闭/打开,并且可以用于将系统置于连接待机或从连接待机状态自动醒来。其它系统传感器可以包括内部处理器、存储器、和皮肤温度监测的ACPI传感器,以基于所感测的参数使对处理器和系统操作状态的变化变得可能。
在实施例中,OS可以是实现连接待机的
Figure GDA0002996214020000361
8 OS(在本文也被称为Win8 CS)。Windows 8连接待机或具有类似的状态的另一OS可以经由如本文所述的平台来提供非常低的超空闲功率,以使应用能够以非常低的功率消耗来保持连接到例如基于云的位置。平台可以支持3个功率状态,即屏幕接通(正常);连接待机(作为默认“断开”状态);以及关机(功率消耗零瓦)。因此在连接待机状态中,平台在逻辑上是接通的(在最小功率电平下),即使屏幕断开。在这样的平台中,可以使功率管理变得对于应用是透明的并且维持不变的连接,这部分地由于卸载技术以使最低供电的部件能够执行操作。
如在图16中看到的,各种外围设备可以经由低引脚计数(LPC)互连耦合到处理器1610。在所示实施例中,可以通过嵌入式控制器1635来耦合各种部件。这样的部件可以包括键盘1636(例如,经由PS2接口来耦合)、风扇1637和热传感器1639。在一些实施例中,触控板1630也可以经由PS2接口耦合到EC 1635。此外,安全处理器(例如,根据日期为2003年10月2日的可信计算组(TCG)TPM规范版本1.2的可信平台模块(TPM)1638)也可以经由所述LPC互连耦合到处理器1610。然而,应理解,本公开的范围并不被限制在这个方面中,并且安全信息的安全处理和存储可以在另一被保护位置(例如,安全协处理器中的静态随机存取存储器(SRAM))中,或作为当由安全模块(CE)处理器模式保护时被解密的加密数据块。
在特定的实现中,外围端口可以包括高清媒体接口(HDMI)连接器(其可以具有不同的形状因子,例如,全尺寸、微型或微);一个或多个USB端口,例如,根据通用串行总线修订版3.0规范(2008年11月)的全尺寸外部端口,具有当系统在连接待机状态中时用于USB设备(例如,智能电话)的充电并且被插入在AC墙壁电源中的至少一个电源。此外,可以提供一个或多个ThunderboltTM端口。其它端口可以包括外部可访问的读卡器,例如,全尺寸SD-XC读卡器和/或WWAN的SIM读卡器(例如,8引脚读卡器)。对于音频,具有立体声和麦克风能力(例如,组合功能)的3.5mm插座可以存在,具有对插座检测的支持(例如,只支持在盖中使用麦克风的耳机或具有有线麦克风的耳机)。在一些实施例中,这个插座可以在立体声耳机和立体声麦克风输入之间重新分配任务。此外,电源插座可以被提供用于耦合到AC模块(ACbrick)。
系统1600可以用包括无线的各种方式与外部设备通信。在图16所示的实施例中,各种无线模块存在,其中的每一个可以与被配置用于特定的无线通信协议的无线装置相对应。用于在短距离(例如,近场)中的无线通信的一种方式可以经由近场通信(NFC)单元1645,在一个实施例中,近场通信单元1645可以经由SMBus与处理器1610通信。注意,经由这个NFC单元1645,极接近彼此的设备可以进行通信。例如,用户可以使系统1600能够与另一(例如)便携式设备(例如,用户的智能电话)通信,通过使这两个设备在一起适应于非常接近并且使信息(例如,识别信息、支付信息、诸如图像数据的数据等)的传送变得可能。也可以使用NFC系统来执行无线功率传送。
使用本文描述的NFC单元,用户可以通过以杠杆作用影响这样的设备中的一个或多个的线圈之间的耦合来并排移动设备和并排放置设备以用于近场耦合功能(例如,近场通信和无线功率传送(WPT))。更具体地,实施例为设备提供策略地成形和放置的铁氧体材料,以提供对线圈的更好耦合。每一个线圈具有与其相关联的电感,其可以结合电阻、电容和系统的其它特征来被选择,以使系统的公共谐振频率变得可能。
如在图16中进一步看到的,额外的无线单元可以包括其它短距离无线引擎,其包括WLAN单元1650和蓝牙单元1652。使用WLAN单元1650,可以实现根据给定的电气与电子工程师协会(IEEE)802.11标准的Wi-FiTM通信,而经由蓝牙单元1652,短距离通信经由蓝牙协议能够出现。这些单元可以经由例如USB链路或通用异步接收机发射机(UART)链路与处理器1610进行通信。或者这些单元可以经由根据外围部件快速互连TM(PCIeTM)协议(例如,根据快速PCITM规范基本规范版本3.0(2007年1月7日公布))或另一这样的协议(例如,串行数据输入/输出(SDIO)标准)的互连而耦合到处理器1610。当然,可以在一个或多个内插卡上配置的在这些外围设备之间的实际物理连接可以是作为适合于母板的NGFF连接器。
此外,例如根据蜂窝或其它无线广域协议的无线广域通信可以经由WWAN单元1656而出现,WWAN单元1656继而可以耦合到用户识别模块(SIM)1657。此外,为了使位置信息的接收和使用变得可能,GPS模块1655也可以存在。注意,在图16所示的实施例中,WWAN单元1656和集成捕获设备(例如,摄像机模块1654)可以经由给定的USB协议(例如,USB 2.0或3.0链路、或UART或I2C协议)进行通信。再次,所述单元的实际物理连接可以是经由NGFF内插卡对在母板上配置的NGFF连接器的适应。
在特定的实施例中,可以使用例如支持
Figure GDA0002996214020000381
8 CS的WiFiTM 802.11ac解决方案(例如,与IEEE 802.11abgn向后兼容的内插卡)来模块化地提供无线功能。所述卡可以被配置在内部狭槽中(例如,经由NGFF适配器)。额外的模块可以提供蓝牙能力(例如,具有向后兼容性的蓝牙4.0)以及
Figure GDA0002996214020000382
无线显示功能。此外,NFC支持可以经由单独的设备或多功能设备而被提供,并且可以作为示例被定位在底盘的前右部分中,以容易访问。又一额外的模块可以是可以提供对3G/4G/LTE和GPS的支持的WWAN设备。所述模块可以在内部(例如,NGFF)狭槽中实现。可以针对根据802.11x标准的Wi-FiTM技术、
Figure GDA0002996214020000391
技术、WWAN、NFC和GPS提供集成的天线支持,使从Wi-FiTM网络无线到根据无线千兆比特规范(2010年7月)的WWAN无线装置、无线千兆比特(WiGigTM)的无缝变换变得可能,反之亦然。
如上所述,集成摄像机可以合并在盖中。作为一个示例,所述摄像机可以是高分辨率摄像机,例如,具有至少2.0百万像素(MP)并扩展到6.0MP和以上的分辨率。
为了提供音频输入和输出,可以经由数字信号处理器(SDP)1660来实现音频处理器,数字信号处理器(SDP)1660可以经由高清音频(HDA)链路耦合到处理器1610。类似地,DSP 1660可以与集成的编码器/解码器(CODEC)和放大器1662通信,放大器1662继而可以耦合到可以在底盘内实现的输出扬声器1663。类似地,放大器和CODEC 1662可以被耦合来从麦克风1665接收音频输入,麦克风1665在实施例中可以经由双阵列麦克风(例如,数字麦克风阵列)来实现以提供高质量音频输入,来使系统内的各种操作的语音激活的控制变得可能。也注意,可以提供从放大器/CODEC 1662到耳机插座1664的音频输出。虽然在图16的实施例中示出了这些特定的部件,但是应理解,本公开的范围并不被限制在这个方面中。
在特定的实施例中,数字音频编码译码器和放大器能够驱动立体声耳机插座、立体声麦克风插座、内部麦克风阵列和立体声扬声器。在不同的实现中,编码译码器可以集成到音频DSP中或经由HD音频路径耦合到外围控制器集线器(PCH)。在一些实现中,除了集成立体声扬声器以外,可以提供一个或多个低音扬声器,并且扬声器解决方案可以支持DTS音频。
在一些实施例中,处理器1610可以由外部电压调节器(VR)和多个内部电压调节器供电,所述多个内部电压调节器被集成在处理器管芯内部,被称为完全集成的电压调节器(FIVR)。在处理器中使用多个FIVR使部件分组到单独的功率平面内变得可能,使得由FIVR调节功率并将所述功率供应到组中的那些部件。在功率管理期间,当处理器被置于某个低功率状态中时,可以将一个FIVR的给定功率平面下电或断电,而另一FIVR的另一功率平面保持活动或完全供电。
在一个实施例中,可以在一些深睡眠状态期间使用维持功率平面以在几个I/O信号的I/O引脚(例如,在处理器和PCH之间的接口、与外部VR的接口和与EC 1635的接口)上供电。这个维持功率平面也给支持机载SRAM或其它高速缓冲存储器的管芯上电压调节器供电,在其它高速缓冲存储器中处理器上下文在睡眠状态期间被存储。维持功率平面也用于对监控并且处理各种唤醒源信号的处理器的唤醒逻辑供电。
在功率管理期间,当其它功率平面在处理器进入某些深睡眠状态中时被下电或断电时,维持功率平面保持通电以支持上面提到的部件。然而,这在那些部件是不被需要时,可能导致不必要的功率消耗或耗散。为此目的,实施例可以提供连接待机睡眠状态以使用专用功率平面来维护处理器上下文。在一个实施例中,连接待机睡眠状态使用PCH的资源而有助于处理器唤醒,PCH本身可以存在于具有处理器的封装中。在一个实施例中,连接待机睡眠状态有助于维持在PCH中的处理器体系结构功能直到处理器唤醒为止,这使关闭之前在深睡眠状态期间保持通电的所有不必要的处理器部件——包括关闭所有时钟——变得可能。在一个实施例中,PCH包含时间戳计数器(TSC)和用于在连接待机状态期间控制系统的连接待机逻辑。维持功率平面的集成电压调节器也可以存在于PCH上。
在实施例中,在连接待机状态期间,集成电压调节器可以起专用功率平面的作用,专用功率平面保持通电以支持专用高速缓冲存储器,其中当处理器进入深睡眠状态和连接待机状态中时处理器上下文(例如,临界状态变量)被存储。所述临界状态可以包括与体系结构、微体系结构、调试状态有关的状态变量,和/或与处理器相关联的类似的状态变量。
来自EC 1635的唤醒源信号可以在连接待机状态期间被发送到PCH而不是处理器,使得PCH可以管理唤醒处理而不是处理器。此外,TSC被维持在PCH中,以便于维持处理器体系结构功能。虽然在图16的实施例中示出了这些特定的部件,但是应理解,本公开的范围并不被限制在这个方面中。
在处理器中的功率控制可以引起增强的功率节省。例如,功率可以在核心之间动态地分配,单独的核心可以改变频率/电压,并且多个深低功率状态可以被提供以使非常低的功率消耗变得可能。此外,对核心或不相关的核心部分的动态控制可以通过当部件不被使用时使部件断电来提供减小的功率消耗。
一些实现可以提供特定的功率管理IC(PMIC)以控制平台功率。使用这个解决方案,系统可以看到当在给定待机状态(例如,当在Win8连接待机状态)中时在延长的持续时间(例如,16小时)中的非常低(例如,小于5%)的电池降级。在Win8空闲状态中,可以实现超过例如9小时的电池寿命(例如,在150尼特下)。关于视频重放,可以实现长的电池寿命,例如,全HD视频重放可以出现最少6个小时。平台在一个实现中可以具有如下能量容量,例如对于使用SSD的Win8 CS,具有35瓦小时(Whr)的能量容量以及(例如)对于使用具有RST高速缓存配置的HDD的Win8CS具有40-44Whr的能量容量。
特定的实现可以提供对15W标称CPU热设计功率(TDP)的支持,具有高达大约25WTDP设计点的可配置CPU TDP。平台可以包括归因于上面描述的热特性的最小通风孔。此外,平台是枕座友好的(因为没有热空气在用户处吹)。可以根据底盘材料来实现不同的最大温度点。在塑料底盘(至少具有塑料的盖或基础部分)的一个实现中,最大操作温度可以是52摄氏度(C)。而且对于金属底盘的实现,最大操作温度可以是46℃。
在不同的实现中,安全模块(例如,TPM)可以集成到处理器中并且可以是分立的设备,例如,TPM 2.0设备。使用也被称为平台信任技术(PTT)的集成安全模块,可以使BIOS/固件能够暴露某些安全特征的某些硬件特征,包括安全指令、安全引导、
Figure GDA0002996214020000411
防盗技术、
Figure GDA0002996214020000412
身份保护技术、
Figure GDA0002996214020000413
可信执行技术(TXT)、和
Figure GDA0002996214020000414
可管理引擎技术连同安全用户接口,例如,安全键盘和显示器。
接着转到图17,描绘了根据本发明的实施例的芯片上系统(SOC)设计的实施例。作为例证性示例,SOC 1700包括在用户设备(UE)中。在一个实施例中,UE指由最终用户使用来进行通信的任何设备,例如,手持设备、智能电话、平板计算机、超薄笔记本计算机、具有宽带适配器的笔记本计算机、或任何其它类似的通信设备。UE可以连接到基站或节点,所述基站或节点可以在性质上与在GSM网络中的移动站(MS)相对应。
在这里,SOC 1700包括2个核心——1706和1707。类似于上面的讨论,核心1706和1707可以符合指令集体系结构,例如,具有
Figure GDA0002996214020000415
Architecture CoreTM的处理器、Advanced Micro Devices,Inc.(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计、或其消费者以及它们的许可证接受方或采用方。核心1706和1707耦合到与总线接口单元1709和L2高速缓存1710相关联的高速缓存控件1708,以与系统1700的其它部分通信。互连1711包括芯片上互连,例如,IOSF、AMBA或上面讨论的其它互连,其可以实现所述公开的一个或多个方面。
互连1711向其它部件提供通信通道,例如,与SIM卡连接的用户识别模块(SIM)1730、保持引导代码以用于由核心1706和1707执行以初始化并引导SOC 1700的引导rom1735、用于与外部存储器(例如,DRAM 1760)连接的SDRAM控制器1740、用于与非易失性存储器(例如,闪速存储器1765)连接的闪速控制器1745、与外围部件连接的外围控件1750(例如,串行外围接口)、显示并接收输入(例如,启用触摸的输入)的视频编码译码器1720和视频接口1725、执行图形相关的计算的GPU 1715等。这些接口中的任一个可以并入本文描述的实施例的方面。
此外,系统示出了用于通信的外围设备,例如,蓝牙模块1770、3G调制解调器1775、GPS 1780和WiFi 785。注意,如上面提到的,UE包括用于通信的无线装置。作为结果,这些外围通信模块可以不都被包括。然而在UE中,用于外部通信的某种形式的无线装置应被包括。
下面描述的实施例目的在于用于代码区的连续自动调整的机制。该机制可以用于代码区以识别并使用代码区的最佳硬件(HW)配置。如上面描述的,处理器参数可以在制造时、在系统引导时间时或在运行时被设置,并可以永久地被设置为与各种应用兼容。
下面描述的实施例实现两个新指令,其可以用于:1)对代码区进行定界以用于测量(例如,每周期指令(IPC)运算、功率消耗度量等);和/或2)通过对可调整参数的不同集合的代码区的测量(例如,IPC)进行运算并选择具有最高测量(例如,最高IPC)或在一些情况下最低测量(例如,最低能量消耗或最低功率消耗)的可调整参数的集合来自动调节被定界的区域的可调整参数。如本文使用的,自动调节和自动调整指示所定界的区的可调整参数可以在没有用户干预做出这些调节的情况下被调节。
图18是根据一个实施例的用于代码区的连续自动调整的处理器1800的框图。处理器1800包括微代码1802、处理器核心1806和程序存储器1804。微代码1802可以存储在如本文所述的微代码ROM中,并可以包括执行自动基于硬件的调整算法1814的处理逻辑和存储可调整的处理器参数1816的内部硬件表1818。程序存储器1804存储指令1808,指令1808包括所定界的代码区1810和调整数据结构1812。处理器核心1806被配置为执行如下面更详细描述的微代码1802和指令1808。所定界的代码区1810可以是任何尺寸的一条代码。所定界的代码区1810可以是主程序的部分或可以被设置在循环外部或代码中的其它位置。
在操作期间,处理器核心1806执行指令1808并识别如下面更详细描述的所定界的代码区1810。代码区1810可以由对代码区1810的开始进行定界的第一指令和对代码区1810的结束进行定界的第二指令进行定界。处理器核心1806还执行微代码1802以运算与用于可调整的处理器参数1816的自动调整的所定界的代码区1810的执行相关联的度量,如下面更详细描述的。微代码1802的自动基于硬件的调整算法1814可以使用调整数据结构1812来自动调整所定界的代码区1810的可调整处理器参数1816。自动基于硬件的调整算法1814在应用运行时执行自动基于硬件的调整。在一个实施例中,可调整处理器参数1816存储在内部硬件表1818中。内部硬件表1818可以存储配置位模式,配置位模式的每一个位启用或禁用可配置特征中的一个,像L1 IP预取特征。可选地,可以在其它位置上或使用除了内部硬件表1818以外的其它技术来存储可调整处理器参数1816。在一个实施例中,第一指令和第二指令可以由编程者使用来对在待调整的指令1808内(例如,在程序文件内)的代码区(例如,所定界的代码区1810)进行定界。例如,下文是所定界的代码区1810的示例:
TUNABLE REGION BEGIN address_of(tune_data_structure)
//
//待调整的代码
//
TUNABLE REGION END address of(tune_data_structure)
所定界的代码区1810的第一指令和第二指令调用调整数据结构1812(tune_data_structure)。调整数据结构1812是在程序存储器1804中组织的数据结构(例如,文件)。下文是调整数据结构1812的示例。
Figure GDA0002996214020000441
内部硬件表1818可以包含有限数量的配置位模式,例如,4-8。配置位模式可以被加载到配置位字段(例如,configuration_bits)中,并且配置位字段中的位指示给定的可调整参数被启用或禁用。如上面描述的,一些处理器参数可以包括:(1)硬件(HW)预取器设置,包括开启或关闭一些HW预取器;(2)软件(SW)预取指令设置,包括忽略或服从SW预取指令;(3)高速缓存逐出/更换暗示,包括忽略或服从高速缓存逐出/更换暗示;(4)高速缓存尺寸,包括动态地配置高速缓存尺寸;(5)动态随机存取存储器(DRAM)通道,包括配置DRAM页面打开策略和缓冲器尺寸;以及(6)HW缓冲器尺寸,包括配置各种HW缓冲器尺寸或HW结构尺寸。配置位模式可以用于启用或禁用处理器的可调整参数的不同组合。例如,配置位模式可以指示特征(例如,L1 IP预取)被启用或禁用。应注意,上面的调整数据结构1812的字段可以被初始化为零。
在一个实施例中,两个指令——TUNABLE_REGION_BEGIN和TUNABLE_REGION_END被实现为可以访问存储器多于一次的微代码流。在一个实施例中,TUNABLE_REGION_BEGIN指令使用操作数1(其指向tune_data_structure)来加载“configuration_bits”字段。处理器的这个微代码使用这些位来配置处理器参数(例如,用于启用/禁用L1预取器)。这个指令也可以使处理器1800将INSTR_RETIRED性能计数器的当前值存储到“start_icount”字段并且将CORE_CYCLES性能计数器存储到“tune_data_structure”的“start_cycle_count”字段。在另一实施例中,TUNABLE_REGION_END指令使用下面的公式运算在TUNABLE_REGION_BEGIN和TUNABLE_REGION_END之间定界的区的IPC值:
IPC=(INSTR_RETIRED-start_icount)/(CORE_CYCLES-start_cycle_count)
如果所运算的IPC大于“best_configuration_lPC”,则所运算的IPC可以被写到“best_configuration_IPC”字段中,并且“configuration_bits”可以被复制到“best_configuration_bits”字段。应注意,如在各种字段的命名中使用的“best”可以用于表示最高度量,例如,最高IPC或其它性能度量,但也可以用于存储最低度量(例如,最低能量消耗度量或最低功率消耗度量)的值。可选地,其它计数器值可以用于追踪其它类型的度量运算的其它测量。
在另一实施例中,如果“done_training”位为假,则这个指令选择下一配置位模式(从内部HW表1818),并且将所述模式写到“configuration_bits”字段。如果没有下一配置位模式(它已经探究所有配置位模式),则done_training字段被设置(写入1),并且“best_configuration_bits”字段被复制到可以由下一TUNABLE_REGION_BEGIN指令读取的“configuration_bits”字段。这结束了找到最佳配置的训练过程。如在本文描述的,对例如由“best configuration-bits”字段表示的最佳配置的提及可以是例如在当前示例中描述的导致最高度量(例如,IPC)的配置参数的集合,但也可以是导致最低度量(例如,最低功率消耗度量)的配置。
在另一实施例中,如果“done_training”位已经被设置,则这个指令比较当前IPC值与已经在训练过程中找到的“best_configuration_lPC”。如果当前IPC值比“best_configuration_lPC”大指定量(例如,1.10倍于best_configuration_lPC),则训练过程通过使“done_training”位变为假并将第一配置位模式(从内部HW表1818读取)写到“configuration_bits”字段来重新开始。用于重新开始训练过程的指定量可以由编程者、由用户、由制造商、或由类似人员设置。指定量可以是重新训练阈值。例如,当在当前IPC值和最高IPC值之间的差大于重新训练阈值时,重新训练可以出现。例如,如果在操作环境中的变化导致不同的最佳配置,则重新训练可能是有用的。
如在本文描述的,当前方法是使处理器的开发者在制造时间挑选处理器的一个硬件配置以在大量应用中使用。对于一些当前解决方案,消费者可以设置默认硬件配置。例如,高性能计算(HPC)消费者常常禁用在BIOS中的所有HW预取器,即使一些应用可以受益于它们。本文描述的实施例允许多个硬件配置在运行时针对每一个应用进行测试。例如,不是HPC消费者禁用在BIOS中的所有预取器,这个机制可以用于针对每一个应用动态地挑选可应用的预取器设置。虽然当前硬件可以被配置为测量IPC,但是这些硬件实现并不与应用的指令进行交互,使硬件很难针对相同的代码区执行几个IPC测量。这是因为硬件知道同一代码区的开始和结束点很难。因此,与硬件实现相比,这些实施例允许IPC的更精确测量以用于调整指定的代码区。
在另一实施例中,每一个应用被允许具有特别适合于该应用的裁剪的它自己的HW配置(例如,预取器设置),例如,用于优化性能或优化能量或功率消耗。在一些实施例中,当代码区1810是线程式代码时,调整数据结构1812(例如,“tune_data_structure”)对于线程是私有的(或应由一个线程访问)。在其它实施例中,所定界的代码区被嵌套,并且每一个可调整代码区具有它自己的调整数据结构1812。在其它实施例中,每当存在中断或异常时,处理器1800可以在中断或异常时将CORE_CYCLES性能计数器的值复制到特殊硬件寄存器。如果这个寄存器值大于给定的可调整区的“start_cycle_count”字段,则TUNABLE_REGION_END指令可以不运算那个区的IPC,这是因为由于中断或异常,指令计数和循环计数可以不是精确的。在其它实施例中,处理器1800可以在它进入可调整区时设置单个有效位(在内部状态寄存器中),并且每当存在中断或异常时,处理器1800可以清除该有效位。如果这个有效位在可调整区结束时清除,则TUNABLE_REGION_END指令可以不运算该区的IPC,这是因为由于中断或异常,指令计数和循环计数可能不是精确的。
在另一实施例中,如果确定所定界的代码区是不稳定的,因为它需要持续的调整,则代码区的自动调整可以被禁用。在这个实施例中,调整数据结构1812包括额外的“disabled”字段。在另一实施例中,当代码区对于待进行的测量足够大时,可以执行自动调整。例如,如果区太小(例如,小于100,000个指令),则代码区可以被忽略。在另一实施例中,自动调整可能对过程状态中的变化是敏感的。例如,自动调整算法可以跟踪处理器的频率的变化或处理器状态(P状态)中的变化,并且可以在频率变化或P状态改变时重新开始测量,因为这些变化可能影响测量。应注意,新指令可以被转换为不支持这些指令的体系结构中的no-ops,以便避免这些指令在未来变为旧版负担。
在另一实施例中,处理器1800包括用于存储指令的集合和微代码1802的存储器,以及耦合到存储器的处理器核心1806,其用于执行所述指令的集合和微代码1802,并用于执行处理器的处理器参数的自动调整。处理器1800被配置为识别针对处理器1800的可调整参数的自动调整进行定界的指令的集合的代码区。处理器1800使用可调整参数的第一集合来执行代码区,并通过微代码1802运算使用第一集合的代码区的第一度量。处理器1800使用可调整参数的第二集合来执行代码区,并使用微代码1802运算使用第二集合的代码区的第二度量。处理器1800使用微代码1802基于第一度量和第二度量来从第一集合和第二集合选择代码区的可调整参数的第三集合。在一个实施例中,处理器1800选择第一集合和第二集合中的一个。所选择的第三集合可以代表最佳配置,例如,导致代码区的最高性能的配置参数的集合或导致代码区的最低度量(例如,功率或能量度量)的配置参数的集合。在另一实施例中,处理器1800选择第一集合和第二集合的部分。响应于该选择,处理器1800应用可调整参数的第三集合以改变处理器1800的系统配置以用于代码区的随后执行。
在一些实施例中,第一度量、第二度量和随后的度量是代表处理器1800的性能的性能度量。在一个实施例中,性能度量是IPC运算。在另一实施例中,性能度量是代码区的循环的数量。例如,在另一实施例中,处理器1800被配置为执行微代码1802以识别对代码区的开始进行定界的第一指令,并且在代码区被执行时跟踪循环计数和指令计数的计数器值。微代码1802识别对代码区的结束进行定界的随后的指令。微代码1802在识别出随后的指令之后根据计数器值来运算性能度量。微代码1802确定性能度量是否超过被存储用于当前测试的代码区的最高性能度量(在识别出随后的指令之后),并在性能度量超过最高性能度量时指定性能度量作为最高性能度量。应注意,最高性能度量最初可以被初始化为零。此外,最高性能度量可以是来自到目前为止针对代码区测试的配置参数的集合(例如,配置位模式)的最高性能度量。在其它实施例中,度量是代表处理器1800的功率效率的功率度量,例如,功率消耗度量。在其它实施例中,度量是代表处理器1800的能量效率的能量度量,例如,能量消耗度量。
应注意,这些实施例也可以应用于功率效率的自动调整。可以应用相同的技术;然而,不是测量性能度量,例如,IPC,自动基于硬件的调整算法可以测量功率消耗并且使用所测量的功率消耗来挑选代码区的最低功率配置。
图19和图20是根据一个实施例的用于代码区的连续自动调整的方法1900的流程图。方法1900可以由处理器逻辑执行,所述处理逻辑可以包括硬件(电路、专用逻辑等)、软件(例如,在通用计算系统或专用机器上运行的)、固件(嵌入式软件)、或其任何组合。在一个实施例中,图18的处理器1800执行方法1900。在另一实施例中,自动基于硬件的调整算法1814执行方法1900。可选地,本文描述的处理器的其它部件执行方法1900的一些或所有操作。
参考图19,方法1900以处理逻辑执行下一指令(块1902)(例如,程序的任意指令被执行)开始。处理逻辑确定下一指令是否是TUNABLE_REGION_BEGIN指令(块1904)。如果是,则处理逻辑记录度量运算(例如,循环计数、指令计数、累积能量)的开始计数器值(块1906),并继续进行到块1908。如果在块1904的确定是否定的,则处理逻辑继续进行到下面描述的块1912。在块1908,处理逻辑确定是否仍然在训练阶段中(训练字段被设置为假)。如果是,则处理逻辑使用“配置位模式”来改变系统配置(或处理器配置),例如,禁用预取器(块1910),并返回到块1902用于下一指令。如果在块1908的确定是否定的,则处理逻辑返回到块1902并且不执行块1910。
在块1912,处理逻辑确定指令是否是TUNABLE_REGION_END指令。如果不是,则处理逻辑返回到块1902;否则,处理逻辑记录结束计数器值(例如,循环计数、指令计数、累积能量),并运算度量值(V)(例如,IPC、功率消耗速率等)(块1914)。在块1916,处理逻辑确定是否仍然在训练阶段中(所有训练模式没有都被完成)。如果是,则处理逻辑确定存储在内部硬件表中的所有训练模式(也被称为“配置位模式”)是否都被测试(块1928)。如果是,则处理逻辑退出训练阶段(块1920)并返回到块1902到下一指令。如果在块1918所有训练模式没有都被完成,则处理逻辑将下一训练模式写到“configuration_bit”字段(图20的块2026),并返回到块1902(图19)。如果在块1916,处理逻辑确定训练被完成,则处理逻辑确定度量值(V)是否超过最佳配置的当前值(例如,具有代码区的最高IPC的参数的集合)指定值(例如,大于X%),所述指定值在训练阶段中被记录(图20的块2024)。如果是,则处理逻辑例如通过将位设置为启用训练来重新进入训练阶段(图20的块2026),则在块2022(图20)将下一配置位模式写到“configuration_bits”字段,并返回到块1902(图19)。如果在块2024确定是否定的,则处理逻辑返回到块1902,跳过块2026和2022。当不再有指令时,方法1900结束。
在该方法的另一实施例中,处理逻辑通过在处理器上执行微代码来识别针对处理器参数的自动调整进行定界的代码区。微代码自动调整代码区的处理器参数,如下所述。微代码自动调整处理器参数而没有用户干预,并可以在应用的运行时自动地调整处理器参数。类似地,微代码可以针对不同的应用自动调整不同的处理器参数。在一个实施例中,微代码通过使用处理器参数的不同组合执行代码区来自动调整处理器参数,并针对处理器参数的不同的组合中的每一个来运算执行代码区的度量。微代码基于所述度量来选择处理器参数的集合。
在另一实施例中,在训练阶段期间,处理逻辑识别对代码区的开始进行定界的第一指令,并在代码区被执行时跟踪循环计数和指令计数的计数器值。处理逻辑识别对代码区的结束进行定界的随后的指令。响应于所述随后的指令,处理逻辑根据度量的计数器值运算性能度量,确定性能度量是否好于最高性能度量(例如,所测试的代码区的最高IPC),并在性能度量超过最高性能度量时指定性能度量作为最高性能度量。在一个实施例中,度量是性能度量,例如,IPC、指令计数等。当使用IPC时,处理逻辑运算所执行的代码区的指令的数量,运算所执行的代码区的循环的数量,并将指令的数量除以循环的数量。在另一实施例中,在训练阶段之后,处理逻辑确定性能度量是否比最高性能度量的当前值大指定量。当性能度量比最高性能度量的当前值大指定量时,处理逻辑重新进入训练阶段。
在另一实施例中,可调整参数以微代码形式被存储为内部硬件表中的配置位模式,其中配置位模式的配置位的每一个指示给定的可调整参数是否被启用或禁用。在这个实施例中,处理逻辑使用指向数据结构的第一操作数从内部硬件表加载配置位模式,将引退的指令性能计数器的当前值存储到数据结构的开始计数字段,并将核心循环性能计数器的当前值存储到数据结构的开始循环计数字段。在一个实施例中,处理逻辑识别随后的指令,计算在第一指令和随后的指令之间的代码区的IPC运算。当IPC运算大于“best_IPC”字段的当前值时,处理逻辑将IPC运算写到数据结构的“best_IPC”字段(例如,最高IPC),并当IPC运算大于“best_IPC”字段的当前值(例如,最高IPC值)时,将配置位字段的配置位复制到数据结构的“best configuration-bits”字段(例如,引起最高IPC值的配置位模式的配置位)。最佳IPC字段代表针对代码区测量的最高IPC值,并且最佳配置位字段代表引起在这个示例中测量的最高IPC值的配置位。在另一实施例中,处理逻辑确定训练阶段针对存储在内部硬件表中的配置位模式是否是完成的,并且在训练阶段未完成时从内部硬件表选择下一配置位模式,将下一配置位模式写到配置位字段中。在另一实施例中,处理逻辑确定当训练阶段完成时IPC运算是否比“best_IPC”字段的当前值大指定量,并且在IPC运算比“best_IPC”字段的当前值大指定量时重新进入训练阶段。
度量可以是其它度量,例如,功率度量或能量度量。例如,处理逻辑可以测量代码区的最大功率消耗或代码区的累积能量消耗。功率是瞬时量,而能量是累积功率消耗,例如,能量可以是随着时间的过去而增加的功率消耗。例如,在一个实施例中,度量是功率(或能量)度量,例如,功率(能量)消耗等。例如,处理逻辑在训练阶段期间识别像上面一样的第一指令和随后的指令二者,但跟踪执行代码区的功率(能量)测量。响应于随后的指令,处理逻辑基于所跟踪的功率测量来运算被执行的代码区的功率消耗(能量消耗)度量。处理逻辑确定功率消耗(或能量消耗)度量是否超过最低功率消耗(或能量消耗)度量,并在功率消耗(能量消耗)度量超过最低功率消耗度量时指定功率消耗度量作为最低功率消耗(或能量消耗)度量。
本文描述的实施例通过在没有用户干预的情况下允许处理器选择导致最高性能的HW配置以运行给定代码区(例如,一条代码)来允许处理器提供更高的性能。例如,软件预取指令对程序有益时的情况难以确定,这是因为软件预取指令可以与高速缓存、存储器子系统和硬件预取肯定或否定地进行交互。这些实施例当在给定系统中是实际有益的时可以用于使SW预取指令能够进行预取。同样适用于在很多集成核心(MIC)体系结构中找到的逐出指令。此外,这些实施例可以允许处理器默认地以较小的结构尺寸被运送(由于能量效率原因),但当程序可以真正受益于较大结构时给予程序请求较大结构尺寸的机会。特别是,这些实施例可以允许程序请求在异构环境中的较高性能处理器上运行。例如,在存在大核心和Atom核心的系统中,如果所定界的代码段受益于在大核心上运行,这个机制可以用于将该代码段从Atom核心移动到大核心。此外,这些实施例可以提供准时生产(JIT)编译器和运行时,以产生可以由硬件自动调整的可调整代码。
虽然关于有限数量的实施例描述了本发明,但是本领域中的技术人员将意识到根据其的很多修改和变型。意图是所附权利要求涵盖如落在本发明的真正精神和范围内的所有这样的修改和变型。
设计可以经历从创建到仿真到制造的各种阶段。表示设计的数据可以用多种方式表示设计。首先,如在仿真中有用的,硬件可以使用硬件描述语言或另一功能描述语言来表示。此外,可以在设计过程的一些阶段生成具有逻辑和/或晶体管栅极的电路级模型。此外,大部分设计在一些阶段达到在硬件模型中表示各种设备的物理放置的数据的水平。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于生成集成电路的掩模的不同掩模层上各种特征存在或不存在的数据。在设计的任何表示中,数据可以存储在任何形式的机器可读介质中。存储器或磁性或光学存储装置(例如,磁盘)可以是机器可读介质,以存储经由光波或电波传输的信息,所述光波或电波被调制或否则生成以传输这样的信息。当指示或携带代码或设计的电载波被传输时,在电信号的复制、缓冲或重传被执行的程度上,新拷贝被制造。因此,通信提供者或网络提供者可以在有形、机器可读介质上至少暂时地存储制品,例如,被编码成载波的信息,所述信息体现了本发明的实施例的技术。
如在本文使用的,模块指硬件、软件和/或固件的任何组合。作为示例,模块包括与非暂时性介质相关联的用于存储适合于由微控制器执行的代码的硬件,例如,微控制器。因此,在一个实施例中,对模块的提及指硬件,其特别被配置为识别和/或执行保存在非暂时性介质上的代码。此外,在另一实施例中,模块的使用指包括代码的非暂时性介质,所述代码特别适合于由微控制器执行以实施预定操作。而且如可推断出的,在又一实施例中,术语“模块”(在这个示例中)可以指微控制器和非暂时性介质的组合。通常被示为单独的模块边界常常改变并且可能重叠。例如,第一和第二模块可以共享硬件、软件、固件或其组合,同时可能保持一些不相关的硬件、软件、或固件。在一个实施例中,术语“逻辑”的使用包括硬件,例如,晶体管、寄存器、或其它硬件,例如,可编程逻辑设备。
在一个实施例中,短语“被配置为”的使用指布置、放置在一起、制造、提供用于出售、引入和/或设计装置、硬件、逻辑或元件,以执行指定或确定的任务。在这个示例中,没有正在操作的装置或其元件仍然“被配置为”执行指定的任务,如果它被设计、耦合和/或互连以执行所述指定的任务。作为纯粹例证性的示例,逻辑门可以在操作期间提供0或1。但“被配置为”向时钟提供使能信号的逻辑门不包括可以提供1或0的每个可能的逻辑门。替代地,逻辑门是以某种方式耦合的一个逻辑门,其在操作期间,1或0输出用于启用时钟。再一次注意,术语“被配置为”的使用并不需要操作,但替代地聚焦于装置、硬件、和/或元件的潜在状态,其中在所述潜在状态中,所述装置、硬件和/或元件被设计为当所述装置、硬件、和/或元件操作时执行特定的任务。
此外,在一个实施例中,短语“用于”、“能够/能够用于”和/或“可操作用于”的使用指某个装置、逻辑、硬件和/或元件以如下方式设计,用于以特定的方式使得使用该装置、逻辑、硬件和/或元件变得可能。如上注意,在一个实施例中,“用于”、“能够”或“可操作用于”的使用指装置、逻辑、硬件、和/或元件的潜在状态,其中该装置、逻辑、硬件、和/或元件不操作,但被设计为如下方式,使得以特定方式使用装置变得可能。
如在本文使用的,值包括数字、状态、逻辑状态、或二进制逻辑状态的任何已知的表示。通常,逻辑电平、逻辑值或有逻辑的值的使用也被称为1和0,其简单地表示二进制逻辑状态。例如,1指高逻辑电平,而0指低逻辑电平。在一个实施例中,存储单元(例如,晶体管或闪速存储器单元)可能能够保持单个逻辑值或多个逻辑值。然而,在计算机系统中的值的其它表示可以被使用。例如,十进制数字也可以被表示为二进制值1010和十六进制字母A。因此,值包括能够保存在计算机系统中的信息的任何表示。
而且,状态可以由值或值的部分表示。作为示例,第一值(例如,逻辑一)可以代表默认或初始状态,而第二值(例如,逻辑零)可以代表非默认状态。此外,在一个实施例中,术语“复位”和“置位”分别指默认和更新值或状态。例如,默认值可能包括高逻辑值,即复位,而更新值可能包括低逻辑值,即置位。注意,值的任何组合可以用于表示任何数量的状态。
可以经由存储在机器可存取、机器可读、计算机可存取或计算机可读介质上存储的由处理元件可执行的指令或代码来实现上面阐述的方法、硬件、软件、固件或代码的实施例。非暂时性机器可存取/可读介质包括提供(即存储和/或传输)以机器(例如,计算机或电子系统)可读的形式的信息的任何机制。例如,非暂时性机器可存取介质包括随机存取存储器(RAM)例如,静态RAM(SRAM)或动态RAM(DRAM);ROM;磁性或光学存储介质;闪速存储器设备;电存储设备;光学存储设备;声存储设备;用于保存从暂时性(传播)信号(例如,载波、红外信号、数字信号)接收的信息的其它形式的存储设备;等等,其与可以从其中接收信息的非暂时性介质区分开。
用于对逻辑进行编程以执行本发明的实施例的指令可以存储在系统中的存储器(例如,DRAM、高速缓存、闪速存储器或其它存储装置)内。此外,指令可以经由网络或通过其它计算机可读介质来分布。因此,机器可读介质可以包括用于存储或传输以机器(例如,计算机)可读的形式的信息的任何机构,但不限于软盘、光学盘、光盘只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器或在经由电、光、声或其它形式的传播信号(例如,载波、红外信号、数字信号等)通过互联网的信息传输中使用的有形、机器可读存储装置。因此,计算机可读介质包括适合于存储或传输以机器(例如,计算机)可读的形式的电子指令或信息的任何类型的有形机器可读介质。
在整个这个说明书中对“一个实施例”或“实施例”的提及意指关于实施例描述的特定的特征、结构或特性包括在本发明的至少一个实施例中。因此,短语“在一个实施例中”或“在实施例中”在整个这个说明书中的不同地方的出现并不一定都指同一实施例。此外,特定的特征、结构或特性在一个或多个实施例中可以以任何适当的方式组合。
在前述说明书中,关于特定的示例性实施例给出了详细描述。然而将显而易见,可以对其做出各种修改和改变而不偏离如在所附权利要求中阐述的本发明的更宽的精神和范围。说明书和附图因此在例证性意义而不是限制性意义上被进行考虑。此外,实施例和其它示例性语言的前述使用并不一定指同一实施例或同一示例,但可以指不同和独特的实施例以及可能是同一实施例。

Claims (19)

1.一种片上系统SoC,包括:
寄存器文件,其包括用于存储配置位的配置位寄存器;
程序存储器,其用于存储指令集合;以及
处理器,其耦合到所述寄存器文件和所述程序存储器,其中,所述处理器用于:
识别所述指令集合中的代码区,所述代码区是由所述指令集合中的第一指令定界的;
确定利用具有第一值的所述配置位来执行所述代码区而获得的第一度量低于利用具有第二值的所述配置位来执行所述代码区而获得的第二度量;以及
将所述配置位设置为所述第一值,其中,针对所述指令集合,具有所述第一值的所述配置位增加了所述处理器的性能、降低了所述处理器的功耗、或者实现这二者。
2.如权利要求1所述的SoC,其中,所述处理器用于针对一应用,将所述配置位设置为所述第一值,以改变所述处理器的系统配置用于所述代码区的随后执行。
3.如权利要求1所述的SoC,其中,所述配置位用于针对不同的应用对所述处理器的系统配置进行设置。
4.如权利要求1所述的SoC,其中,所述配置位用于针对相同的应用对所述处理器的系统配置进行设置。
5.如权利要求1所述的SoC,其中,所述处理器还用于:
当利用具有所述第一值的所述配置位来执行所述代码区时,跟踪计数器值;
识别对所述代码区的结束进行定界的第二指令;以及
当所述第二指令已被执行时,根据所述计数器值来计算所述第一度量。
6.如权利要求1所述的SoC,其中,所述第一度量和所述第二度量是表示所述处理器的性能的性能度量。
7.如权利要求1所述的SoC,其中,所述第一度量和所述第二度量是每循环指令IPC计算。
8.如权利要求1所述的SoC,其中,每个配置位指示所述处理器的系统配置的一可调整参数是被启用还是被禁用。
9.如权利要求1所述的SoC,其中,所述第一指令是用于以下的指令:
从内部硬件表加载具有所述第一值的所述配置位;
将引退的指令性能计数器的当前值存储到数据结构的开始计数字段;以及
将核心循环性能计数器的当前值存储到所述数据结构的开始循环计数字段。
10.一种处理器,包括:
存储器,其用于存储指令集合;以及
处理器核心,其耦合到所述存储器以执行所述指令集合,其中,所述处理器核心用于:
识别所述指令集合中的代码区,所述代码区是由调整数据结构定界的,所述调整数据结构包括具有第一值的配置位;
确定利用具有所述第一值的所述配置位来执行所述代码区而获得的第一度量高于利用具有第二值的所述配置位来执行所述代码区而获得的第二度量;以及
将所述配置位设置为所述第二值,其中,针对所述指令集合,所述第二值增加了所述处理器的性能、降低了所述处理器的功耗、或者实现这二者。
11.如权利要求10所述的处理器,其中,所述指令集合是针对所述处理器的可调整参数的自动调整而被定界的。
12.如权利要求10所述的处理器,其中,所述指令集合被实现为微代码流。
13.如权利要求10所述的处理器,其中,所述指令集合是主应用的部分、或者是在所述主应用的代码中的循环外部的指令集合。
14.如权利要求10所述的处理器,其中,所述配置位至少针对以下进行设置:硬件预取器设置、软件预取指令设置、高速缓存逐出暗示、高速缓存更换暗示、高速缓存尺寸、动态随机存取存储器(DRAM)通道、或硬件缓冲器尺寸。
15.一种用于代码区的连续自动调整的方法,包括:
针对第一应用,识别第一指令集合中的第一代码区,所述第一代码区是由所述第一指令集合中的第一指令定界的;
确定利用具有第一配置的配置位来执行所述第一代码区而获得的第一度量低于利用具有第二配置的所述配置位来执行所述第一代码区而获得的第二度量;以及
针对所述第一应用,将所述配置位设置为所述第一配置,以用于所述第一代码区的随后执行,其中,针对所述第一指令集合,所述第一配置增加了处理器的性能、降低了所述处理器的功耗、或者实现这二者。
16.如权利要求15所述的方法,还包括:
针对第二应用,识别第二指令集合中的第二代码区,所述第二代码区是由所述第二指令集合中的第二指令定界的;
确定利用具有所述第一配置的所述配置位来执行所述第二代码区而获得的第一度量高于利用具有所述第二配置的所述配置位来执行所述第二代码区而获得的第二度量;以及
将所述配置位设置为所述第二配置。
17.如权利要求15所述的方法,其中,所述指令集合被实现为存储在微代码只读存储器(ROM)中的微代码流。
18.如权利要求15所述的方法,其中,所述配置位被存储在内部硬件表中,所述配置位的每一位启用或禁用所述处理器的一可配置特征。
19.如权利要求15所述的方法,其中,所述配置位至少针对以下进行设置:硬件预取器设置、软件预取指令设置、高速缓存逐出暗示、高速缓存更换暗示、高速缓存尺寸、动态随机存取存储器(DRAM)通道、或硬件缓冲器尺寸。
CN201810763317.9A 2012-12-20 2013-06-19 用于代码区的连续自动调整的方法、装置、系统 Expired - Fee Related CN108874457B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/722,243 US9558006B2 (en) 2012-12-20 2012-12-20 Continuous automatic tuning of code regions
US13/722,243 2012-12-20
CN201380060585.XA CN104813286B (zh) 2012-12-20 2013-06-19 用于代码区的连续自动调整的方法、装置、系统

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201380060585.XA Division CN104813286B (zh) 2012-12-20 2013-06-19 用于代码区的连续自动调整的方法、装置、系统

Publications (2)

Publication Number Publication Date
CN108874457A CN108874457A (zh) 2018-11-23
CN108874457B true CN108874457B (zh) 2021-08-17

Family

ID=50976109

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201380060585.XA Expired - Fee Related CN104813286B (zh) 2012-12-20 2013-06-19 用于代码区的连续自动调整的方法、装置、系统
CN201810763317.9A Expired - Fee Related CN108874457B (zh) 2012-12-20 2013-06-19 用于代码区的连续自动调整的方法、装置、系统

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201380060585.XA Expired - Fee Related CN104813286B (zh) 2012-12-20 2013-06-19 用于代码区的连续自动调整的方法、装置、系统

Country Status (5)

Country Link
US (2) US9558006B2 (zh)
KR (2) KR101683014B1 (zh)
CN (2) CN104813286B (zh)
DE (1) DE112013005131T5 (zh)
WO (1) WO2014098983A1 (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9092214B2 (en) * 2012-03-29 2015-07-28 Intel Corporation SIMD processor with programmable counters externally configured to count executed instructions having operands of particular register size and element size combination
US9690354B1 (en) 2013-05-06 2017-06-27 AGGIOS, Inc. Automatic energy design and management system for assessing system components' energy consumption, compiling energy management control and optimizing energy usage
US9652233B2 (en) * 2013-08-20 2017-05-16 Apple Inc. Hint values for use with an operand cache
US20150355927A1 (en) * 2014-06-04 2015-12-10 Yahoo! Inc. Automatic virtual machine resizing to optimize resource availability
US11403099B2 (en) 2015-07-27 2022-08-02 Sony Interactive Entertainment LLC Backward compatibility by restriction of hardware resources
US10635446B2 (en) * 2015-09-24 2020-04-28 Qualcomm Incorporated Reconfiguring execution pipelines of out-of-order (OOO) computer processors based on phase training and prediction
WO2017147131A1 (en) 2016-02-22 2017-08-31 The Joan and Irwin Jacobs Technion-Cornell Institute Techniques for self-tuning of computing systems
US10303488B2 (en) * 2016-03-30 2019-05-28 Sony Interactive Entertainment Inc. Real-time adjustment of application-specific operating parameters for backwards compatibility
US10915333B2 (en) 2016-03-30 2021-02-09 Sony Interactive Entertainment Inc. Deriving application-specific operating parameters for backwards compatiblity
CN107070606B (zh) * 2016-12-30 2020-11-17 江苏银丰信息技术有限公司 基于锯齿解码的高吞吐量重传方法
CN107193487B (zh) * 2017-04-26 2019-11-12 华中科技大学 一种随机访问识别方法及系统
CN111066264B (zh) * 2017-08-24 2022-01-25 谷歌有限责任公司 用于音频数据传送的动态校准
WO2019108011A1 (ko) 2017-11-30 2019-06-06 삼성전자 주식회사 운영 체제 설정 방법 및 그 장치
GB2569109B (en) * 2017-11-30 2021-03-31 Samsung Electronics Co Ltd Setting operating system parameters based on workload types
CN108632249B (zh) * 2018-03-26 2020-12-08 厦门亿联网络技术股份有限公司 一种用于VoIP开发调试的codec解包实现方法及装置
US10649688B1 (en) * 2018-11-01 2020-05-12 Intel Corporation Precise longitudinal monitoring of memory operations
EP4024223A1 (en) * 2019-03-15 2022-07-06 Intel Corporation Systems and methods for cache optimization
US10915421B1 (en) 2019-09-19 2021-02-09 Intel Corporation Technology for dynamically tuning processor features
CN113918081B (zh) * 2020-07-08 2024-03-26 慧荣科技股份有限公司 计算机可读取存储介质、配置可靠命令的方法及装置
CN113590206A (zh) * 2021-07-23 2021-11-02 深圳品网科技有限公司 一种兼容多种ddr型号和容量的软件实现方法
TWI804163B (zh) * 2022-01-18 2023-06-01 新唐科技股份有限公司 麥克風陣列
US11861010B2 (en) * 2022-02-14 2024-01-02 Xilinx, Inc. Extensible device hosted root of trust architecture for integrated circuits
US20230333861A1 (en) * 2022-04-15 2023-10-19 SiFive, Inc. Configuring a component of a processor core based on an attribute of an operating system process

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5845310A (en) * 1993-12-15 1998-12-01 Hewlett-Packard Co. System and methods for performing cache latency diagnostics in scalable parallel processing architectures including calculating CPU idle time and counting number of cache misses
CN102073596A (zh) * 2011-01-14 2011-05-25 东南大学 针对指令的可重构片上统一存储器管理方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6643609B2 (en) * 2001-05-16 2003-11-04 Sharewave, Inc Performance measurement for embedded systems
WO2003090052A2 (en) * 2002-04-18 2003-10-30 Advanced Micro Devices Inc. A computer system including a secure execution mode - capable cpu and a security services processor connected via a secure communication path
US8484643B2 (en) * 2003-03-31 2013-07-09 Fujitsu Limited CPU usage time counting method and job control system using this CPU usage time
US7281145B2 (en) * 2004-06-24 2007-10-09 International Business Machiness Corporation Method for managing resources in a CPU by allocating a specified percentage of CPU resources to high priority applications
US7376849B2 (en) 2004-06-30 2008-05-20 Intel Corporation Method, apparatus and system of adjusting one or more performance-related parameters of a processor
US7370189B2 (en) 2004-09-30 2008-05-06 Intel Corporation Method and apparatus for establishing safe processor operating points in connection with a secure boot
US8966223B2 (en) * 2005-05-05 2015-02-24 Icera, Inc. Apparatus and method for configurable processing
US7493516B2 (en) 2005-08-29 2009-02-17 Searete Llc Hardware-error tolerant computing
US8266605B2 (en) * 2006-02-22 2012-09-11 Wind River Systems, Inc. Method and system for optimizing performance based on cache analysis
US7802252B2 (en) * 2007-01-09 2010-09-21 International Business Machines Corporation Method and apparatus for selecting the architecture level to which a processor appears to conform
US7660933B2 (en) * 2007-10-11 2010-02-09 Broadcom Corporation Memory and I/O bridge
US8276015B2 (en) * 2009-02-23 2012-09-25 International Business Machines Corporation Managing the power-performance range of an application
US8819653B2 (en) * 2012-01-30 2014-08-26 Cisco Technology, Inc. Automated improvement of executable applications based on evaluating independent execution heuristics

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5845310A (en) * 1993-12-15 1998-12-01 Hewlett-Packard Co. System and methods for performing cache latency diagnostics in scalable parallel processing architectures including calculating CPU idle time and counting number of cache misses
CN102073596A (zh) * 2011-01-14 2011-05-25 东南大学 针对指令的可重构片上统一存储器管理方法

Also Published As

Publication number Publication date
WO2014098983A1 (en) 2014-06-26
CN104813286A (zh) 2015-07-29
KR20160140993A (ko) 2016-12-07
CN108874457A (zh) 2018-11-23
CN104813286B (zh) 2018-08-10
KR101717410B1 (ko) 2017-03-16
KR101683014B1 (ko) 2016-12-06
US9558006B2 (en) 2017-01-31
DE112013005131T5 (de) 2015-07-16
US20140181487A1 (en) 2014-06-26
US9904555B2 (en) 2018-02-27
KR20150060902A (ko) 2015-06-03
US20170123817A1 (en) 2017-05-04

Similar Documents

Publication Publication Date Title
CN108874457B (zh) 用于代码区的连续自动调整的方法、装置、系统
US10656697B2 (en) Processor core power event tracing
US10152599B2 (en) Security mechanisms for extreme deep sleep state
US9292076B2 (en) Fast recalibration circuitry for input/output (IO) compensation finite state machine power-down-exit
US9323528B2 (en) Method, apparatus, system creating, executing and terminating mini-threads
CN108885483B (zh) 确定多管芯处理器中的热余量
US20200125396A1 (en) Modifying procressor frequency based on interrupt rate
US11481013B2 (en) Multi-level loops for computer processor control
KR20210134322A (ko) 프로세서의 전력 라이센스 제어를 위한 시스템, 장치 및 방법
US20150067259A1 (en) Managing shared cache by multi-core processor
JP2022532838A (ja) プロセッサの処理回路の電流消費を動的に制御するためのシステム、装置及び方法
EP3340039A1 (en) Processor prefetch throttling based on short streams
US20210200293A1 (en) System, Apparatus And Method For Responsive Autonomous Hardware Performance State Control Of A Processor
CN109478086B (zh) 至少部分地基于平台电容来控制处理器的电流消耗
US11016916B2 (en) Generation of processor interrupts using averaged data
CN110998487A (zh) 现场可编程门阵列(fpga)中的自适应操作电压的系统、装置和方法
CN108228484B (zh) 针对处理器中的高速缓存利用的无效读取
JP7455856B2 (ja) プロセッサにおけるスロットリング閾値の調整
CN114661349A (zh) 用于代码预取的指令和逻辑

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20210817

CF01 Termination of patent right due to non-payment of annual fee