用于软件预获取指令的过滤的指令和逻辑的制作方法

文档序号:10663549阅读:303来源:国知局
用于软件预获取指令的过滤的指令和逻辑的制作方法
【专利摘要】一种处理器,包含执行单元和过滤器模块。过滤器模块包含用于执行如下操作的逻辑:接收指令;确定先前是否执行了从高速缓存预获取信息的指令;以及基于先前执行了从高速缓存预获取信息的指令的确定而丢弃指令。
【专利说明】
用于软件预获取指令的过滤的指令和逻辑
技术领域
[0001]本公开涉及处理逻辑、微处理器以及关联的指令集架构的领域,指令集架构当由处理器或其它处理逻辑执行时执行逻辑、数学或其它功能操作。
【背景技术】
[0002]微处理器系统正变得越来越普遍。多处理器系统的应用包含动态域分区,一直到桌面计算。为了利用多处理器系统,要执行的代码可被分成多个线程以便由各种处理实体执行。每个线程可彼此并行执行。更进一步,为了增大处理实体的效用,可采用无序执行。当使对此类指令的输入可用时,无序执行可执行指令。从而,在代码序列中后面出现的指令可在代码序列中较早出现的指令之前执行。
【附图说明】
[0003]
在附图的图中作为示例而非限制示出了实施例:
图1A是按照本公开的实施例用可包含执行指令的执行单元的处理器形成的示范计算机系统的框图;
图1B示出了按照本公开的实施例的数据处理系统;
图1C示出了用于执行文本字符串比较操作的数据处理系统的其它实施例;
图2是按照本公开的实施例可包含执行指令的逻辑电路的处理器的微架构的框图;
图3A示出了按照本公开的实施例的多媒体寄存器中的各种压缩(packed)数据类型表示;
图3B示出了按照本公开的实施例的可能寄存器中的数据存储格式;
图3C示出了按照本公开的实施例的多媒体寄存器中的各种有符号和无符号的压缩数据类型表示;
图3D示出了操作编码格式的实施例;
图3E示出了按照本公开的实施例的具有40位或更多位的另一可能操作编码格式;
图3F示出了按照本公开的实施例的又一可能操作编码格式;
图4A是示出按照本公开实施例的有序流水线和寄存器重命名阶段、无序发布/执行流水线的框图;
图4B是示出按照本公开实施例的要包含在处理器中的有序架构核以及寄存器重命名逻辑、无序发布/执行逻辑的框图;
图5A是按照本公开实施例的处理器的框图;
图5B是按照本公开实施例的核的示例实现的框图;
图6是按照本公开实施例的系统的框图;
图7是按照本公开实施例的第二系统的框图;
图8是按照本公开实施例的第三系统的框图; 图9是按照本公开实施例的片上系统的框图;
图10示出了按照本公开的实施例的可执行至少一个指令的含有中央处理单元和图形处理单元的处理器;
图11是示出按照本公开实施例的开发IP核的框图;
图12示出根据本公开内容的实施例的可如何由不同类型的处理器仿真第一类型的指令;
图13示出根据本公开内容的实施例的对比将源指令集中的二进制指令转换成目标指令集中二进制指令的软件指令转换器的使用的框图;
图14是根据本公开内容的实施例的处理器的指令集架构的框图;
图15是根据本公开内容的实施例的处理器的指令集架构的更详细框图;
图16是根据本公开内容的实施例的用于处理器的执行流水线的框图;
图17是根据本公开内容的实施例的用于利用处理器的电子装置的框图;
图18是按照本公开实施例的用于实现用于过滤软件预获取的指令和逻辑的系统的框图;
图19A、19B、19C、19D、19E和19F示出了按照本公开实施例的软件预获取过滤器(filter)的示例操作;以及
图20是按照本公开实施例的用于过滤软件获取指令的方法的示例实施例的流程图。
【具体实施方式】
[0004]如下描述描述了用于软件预获取指令的过滤的指令和处理逻辑。此类处理设备可包含无序处理器。过滤可以是自适应的。软件预获取指令可基于指令已经在处理器的高速缓存中的似然而被过滤。在如下描述中,阐述了众多特定细节,诸如处理逻辑、处理器类型、微架构条件、事件、使能机制等,以便提供本公开实施例的更透彻理解。然而,本领域技术人员将认识到,没有此类特定细节也可实施实施例。此外,一些众所周知的结构、电路等未详细示出,以避免不必要地使本公开的实施例模糊不清。
[0005]尽管如下实施例参考处理器进行描述,但其它实施例可应用于其它类型集成电路和逻辑器件。本公开实施例的类似技术和教导可应用于可受益于更高流水线吞吐量和改进性能的其它类型电路或半导体器件。本公开实施例的教导可应用于执行数据操纵的任何处理器或机器。然而,实施例不限于执行512位、256位、128位、64位、32位或16位数据操作的处理器或机器,并且可应用于可执行数据操纵或管理的任何处理器和机器。此外,如下描述提供了示例,并且附图为了示出目的示出了各种示例。然而,这些示例不应被视为限制意义,因为它们仅仅意图提供本公开实施例的示例,而不是提供本公开的实施例的所有可能实现的详尽列表。
[0006]尽管以下示例在执行单元和逻辑电路的上下文中描述了指令处置和分布,但本公开的其它实施例可通过存储在机器可读有形介质上的数据或指令实现,所述指令当由机器执行时使机器执行与本公开的至少一个实施例一致的功能。在一个实施例中,与本公开实施例关联的功能体现在机器可执行指令中。指令可用于使可用指令编程的通用或专用处理器执行本公开的步骤。本公开内容的实施例可提供为计算机程序产品或软件,该产品或软件可包括机器或计算机可读媒体,其上存储有可用于编程计算机(或其它电子装置)以执行根据本公开内容的实施例的一个或更多个操作的指令。更进一步,本公开内容的实施例的步骤可能由包含用于执行所述步骤的固定功能逻辑的特定硬件组件执行,或者由编程的计算机组件和固定功能硬件组件的任何组合执行。
[0007]用于对逻辑编程以执行本公开的实施例的指令可被存储在系统中的存储器内,诸如DRAM、高速缓存、闪存或其它存储装置内。更进一步,指令可经由网络或通过其它计算机可读媒体分布。从而,机器可读介质可包含用于存储或传送由机器(例如计算机)可读形式的信息的任何机制,但不限于软盘、光盘、光盘只读存储器(CD-ROM)和磁光盘、只读存储器(R0M)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存或在因特网上经由电、光、声或其它形式传播信号(例如载波、红外信号、数字信号等)传送信息中使用的有形机器可读存储装置。相应地,计算机可读介质可包含适合于存储或传送由机器(例如计算机)可读形式的电子指令或信息的任何类型有形机器可读介质。
[0008]设计从创建到模拟到制造可经过各种阶段。表示设计的数据可用多种方式表示该设计。首先,如在模拟中可能有用的,硬件可使用硬件描述语言或另一功能描述语言表示。附加地,在设计过程的某些阶段,可产生具有逻辑和/或晶体管栅的电路级模型。更进一步,设计在某一阶段可达到用硬件模型表示各种装置的物理布局的数据级。在其中使用一些半导体制造技术的情况下,表示硬件模型的数据可以是规定在用于产生集成电路的掩膜的不同掩膜层上存在或缺乏各种特征的数据。在设计的任何表示中,数据都可存储在任何形式的机器可读介质中。存储器或者磁或光存储装置(诸如盘)可以是机器可读介质,以存储经由调制或以其它方式生成以传送信息的光波或电波传送的此类信息。在传送指示或携带代码或设计的电载波时,就执行电信号的复制、缓冲或重新传送而言,可进行新的拷贝。从而,通信提供商或网络提供商可在有形机器可读介质上至少暂时存储体现本公开实施例的技术的物品,诸如编码到载波中的信息。
[0009]在现代处理器中,可使用若干不同执行单元来处理和执行各种代码和指令。一些指令可能更快地完成,而其它指令可能花了若干时钟周期完成。指令吞吐量越快,处理器的总体性能越好。从而,使许多指令尽可能快地执行会是有利的。然而,可存在具有更大复杂性并且在执行时间和处理器资源方面要求更大的某些指令,如浮点指令、加载/存储操作、数据移动等。
[0010]当在因特网、文本和多媒体应用中使用更多计算机系统时,已经随时间引入了附加处理器支持。在一个实施例中,指令集可与一个或多个计算机架构关联,包含数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处置以及外部输入和输出(I/o)。
[0011]在一个实施例中,指令集架构(ISA)可由一个或多个微架构实现,微架构可包含用于实现一个或多个指令集的处理器逻辑和电路。相应地,具有不同微架构的处理器至少可共享部分公共指令集。例如,Intel ? Pentium 4处理器、Intel? Core TM处理器以及来自加利福尼亚州,Sunnyvale的Advanced Micro devices , Inc的处理器实现了几乎相同版本的x86指令集(具有已经用较新版本添加的一些扩展),但具有不同的内部设计。类似地,由其它处理器开发公司(诸如ARM Holding, LtcUMIPS或他们的许可方或采纳方)设计的处理器至少可共享一部分公共指令集,但可包含不同处理器设计。例如,ISA的相同寄存器架构可使用新或公知的技术在不同微架构中以不同方式实现,包括专用物理寄存器、使用寄存器重命名机制(例如,使用寄存器别名表(RAT)、重新排序缓冲器(ROB)和引退寄存器文件)的一个或更多个动态分配的物理寄存器。在一个实施例中,寄存器可包括一个或更多个寄存器、寄存器架构、寄存器文件或可以或可以不由软件程序器寻址的其它寄存器集。
[0012]指令可包含一个或多个指令格式。在一个实施例中,除了其它东西外,指令格式还可指示要规定的各种字段(位数、位的位置等)、要执行的操作以及在其上将执行操作的操作数。在另外实施例中,一些指令格式可由指令模板(或子格式)进一步定义。例如,给定指令格式的指令模板可被定义成具有指令格式字段的不同子集,和/或定义成具有不同解释的给定字段。在一个实施例中,指令可使用指令格式(并且如果定义了,则在那个指令格式的指令模板中的给定一个模板中)表述,并且规定或指示操作和操作数(将对所述操作数执行操作)。
[0013]科学、金融、自动向量化通用、RMS(识别、挖掘和合成)及视觉和多媒体应用(例如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频操纵)可要求对大量数据项执行相同操作。在一个实施例中,单指令多数据(SMD)指使得处理器对多个数据元素执行操作的指令的类型。在逻辑上可将寄存器中的比特划分成多个固定大小或可变大小数据元素(每个元素表示单独的值)的Snro技术可使用在处理器中。例如,在一个实施例中,可将64比特寄存器中的比特组织为包含4个单独16比特数据元素的源操作数,每个元素表示单独的16比特值。此类型的数据可称为“压缩”(packed)数据类型或“向量”数据类型,并且此数据类型的操作数可称为压缩数据操作数或向量操作数。在一个实施例中,压缩数据项或向量可以是在单个寄存器内存储的压缩数据元素的序列,并且压缩数据操作数或向量操作数可以是SIMD指令(或“压缩数据指令”或“向量指令”)的源或目的地操作数。在一个实施例中,SIMD指令指定要对两个源向量操作数执行的单向量操作,生成相同或不同大小的具有相同或不同数量的数据元素和以相同或不同的数据元素顺序的目的地向量操作数(也称为结果向量操作数)。
[0014]例如由具有包括χ86、MMX?、流播SMD扩展(SSE)、SSE2、SSE3、SSE4.1及SSE4.2指令的指令集的Intel? Core?处理器,诸如ARM Cortex?系列处理器的具有包括向量浮点(VFP)和/或NEON指令的指令集的ARM处理器和诸如由中国科学院的计算技术研究所(ICT)开发的龙芯系列处理器的mips处理器采用的snrn技术已经在应用性能方面实现了相当大的改进(Core ?和MMX ?是加利福尼亚州Santa Clara的Intel Corporat1n的注册商标或商标)。
[0015]在一个实施例中,目的地和源寄存器/数据可以是表示对应数据或操作的源和目的地的常规术语。在一些实施例中,它们可通过具有与描绘的那些名称或功能不同的名称或功能的寄存器、存储器或其它存储区域来实现。例如,在一个实施例中,“DEST1”可以是临时存储寄存器或其它存储区域,而“SRC1”和“SRC2”可以是第一和第二源存储寄存器或其它存储区域并以此类推。在其它实施例中,两个或更多个SRC和DEST存储区域可对应于相同存储区域(例如,SMD寄存器)内的不同数据存储元素。在一个实施例中,例如通过将对第一和第二源数据执行的操作的结果写回到用作目的地寄存器的两个源寄存器中的一个,源寄存器之一也可充当目的地寄存器。
[0016]图1A是根据本公开内容的实施例的用可包括执行单元以执行指令的处理器形成的示范计算机系统的框图。根据本公开内容(例如本文描述的实施例中的),系统100可包括诸如处理器102的组件,以采用包括执行用于处理数据的算法的逻辑的执行单元。系统100可表示基于根据加利福尼亚州Santa Clara的Intel Corporat1n可用的PENTIUM? II1、PENTIUM? 4、Xeon ?、Itanium?、XScale ? 和/或StrongARM ? 微处理器的处理系统,尽管也可使用其它系统(包括具有其它微处理器的PC、工程工作站、机顶盒及诸等)。在一个实施例中,示例系统100可执行根据华盛顿Redmond的Microsoft Corporat1n可用的一版本的Windows ?操作系统,尽管也可使用其它操作系统(例如,UNIX和Linux)、嵌入式软件和/或图形用户界面。因此,本公开内容的实施例不限于硬件电路和软件的任何特定组合。
[0017]实施例并不限于计算机系统。本公开内容的实施例可在诸如手持式装置和嵌入式应用的其它装置中使用。手持式装置的一些示例包括蜂窝电话、因特网协议装置、数码相机、个人数字助理(PDA)及手持式PC。嵌入式应用可包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、宽域网(WAN)交换机或可执行根据至少一个实施例的一个或更多个指令的任何其它系统。
[0018]计算机系统100可包含处理器102,处理器102可包含一个或多个执行单元108以执行按照本公开一个实施例执行至少一个指令的算法。一个实施例可在单个处理器桌上型计算机或服务器系统的上下文中描述,而其它实施例可包含在多处理器系统中。系统100可以是“集线器”系统架构的示例。系统100可包含用于处理数据信号的处理器102。处理器102可包含复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集组合的处理器或任何其它处理器件,诸如例如数字信号处理器。在一个实施例中,处理器102可耦合到处理器总线110,其可在处理器102与系统100中的其它组件之间传送数据信号。系统100的元件可执行本领域技术人员众所周知的常规功能。
[0019]在一个实施例中,处理器102可包含一级(LI)内部高速缓冲存储器104。取决于架构,处理器102可具有单个内部高速缓存或多级内部高速缓存。在另一实施例中,高速缓冲存储器可驻留在处理器102外部。取决于具体实现和需要,其它实施例也可包含内部和外部高速缓存的组合。寄存器文件106可将不同类型的数据存储在各种寄存器中,包含整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器。
[0020]执行单元108(包含执行整数和浮点运算的逻辑)也驻留在处理器102中。处理器102也可包含存储某些宏指令的微代码的微代码(UCOde)R0M。在一个实施例中,执行单元108可包含处置压缩指令集109的逻辑。通过在通用处理器102的指令集中包括压缩指令集109,连同执行指令的关联电路,可使用通用处理器102中的压缩数据执行由许多多媒体应用使用的操作。从而,通过使用处理器的数据总线的完全宽度来对压缩数据执行操作,可加速和更有效地执行许多多媒体应用。这可消除跨处理器的数据总线传输更小数据单元来一次一个数据元素执行一个或更多个操作的需要。
[0021]执行单元108的实施例也可用在微控制器、嵌入式处理器、图形装置、DSP以及其它类型逻辑电路中。系统100可包含存储器120。存储器120可实现为动态随机存取存储器(DRAM)器件、静态随机存取存储器(SRAM)器件、闪存装置或其它存储器装置。存储器120可存储由数据信号表示的可由处理器102执行的指令和/或数据。
[0022]系统逻辑芯片116可耦合到处理器总线110和存储器120。系统逻辑芯片116可包含存储器控制器集线器(MCH)。处理器102可经由处理器总线110与MCH 116通信。MCH 116可提供到存储器120的高带宽存储器路径118,其用于指令和数据存储以及用于图形命令、数据和文本的存储。MCH 116可在处理器102、存储器120和系统100中的其它组件之间引导数据信号,并在处理器总线110、存储器120和系统I/O 122之间桥接数据信号。在一些实施例中,系统逻辑芯片116可提供用于耦合到图形控制器112的图形端口。MCH 116可通过存储器接口 118耦合到存储器120。图形卡112可通过加速图形端口(AGP)互连114耦合到MCH 116。
[0023]系统100可使用专有集线器接口总线122将MCH116耦合到I/O控制器集线器(ICH)130。在一个实施例中,ICH 130可经由本地I/O总线提供到一些I/O装置的直接连接。本地I/O总线可包含用于将外设连接到存储器120、芯片集和处理器102的高速I/O总线。示例可包含音频控制器、固件集线器(闪速B10SH28、无线收发器126、数据存储装置124、含有用户输入和键盘接口的传统I/O控制器、串行扩展端口(诸如通用串行总线(USB))和网络控制器134。数据存储装置124可包括硬盘驱动器、软盘驱动器、CD-ROM装置、闪存装置或其它大容量存储装置。
[0024]对于系统的另一实施例,按照一个实施例的指令可与片上系统一起使用。片上系统的一个实施例包括处理器和存储器。一个此类系统的存储器可包含闪存。闪存可位于与处理器和其它系统组件相同的管芯上。此外,诸如存储器控制器或图形控制器的其它逻辑块也可位于片上系统上。
[0025]图1B示出了实现本公开的实施例的原理的数据处理系统140。本领域技术人员将容易认识到,本文描述的实施例可通过备选处理系统操作,而不脱离本公开实施例的范围。
[0026]按照一个实施例,计算机系统140包括用于执行至少一个指令的处理核159。在一个实施例中,处理核159表示任何类型架构的处理单元,包含但不限于CISC、RISC或VLIW型架构。处理核159还可适合于以一个或多个工艺技术的制造,并且通过充分详细地表示在机器可读媒体上,可适合于促进所述制造。
[0027]处理核159包括执行单元142、一组寄存器文件145和解码器144。处理核159还可包含对理解本公开实施例不必要的附加电路(未示出)。执行单元142可执行由处理核159接收的指令。除了执行典型处理器指令,执行单元142可执行压缩指令集143中的指令,以便执行对压缩数据格式的操作。压缩指令集143可包含用于执行本公开实施例的指令以及其它压缩指令。执行单元142可通过内部总线耦合到寄存器文件145。寄存器文件145可表示处理核159上的用于存储信息(包含数据)的存储区域。如先前所提到的,要理解到,存储区域可存储可能不关键的压缩数据。执行单元142可耦合到解码器144。解码器144可将由处理核159接收的指令解码成控制信号和/或微代码入口点。响应于这些控制信号和/或微代码入口点,执行单元142执行适当操作。在一个实施例中,解码器可解释指令的操作码,其将指示应该对在指令内指示的对应数据执行什么操作。
[0028]处理核159可与总线141耦合,以便与各种其它系统装置通信,其例如可包含但不限于:同步动态随机存取存储器(SDRAM)控制146、静态随机存取存储器(SRAM)控制147、突发存储器接口 148、个人计算机存储卡国际协会(PCMCIA)/紧凑型闪存(CF)卡控制149、液晶显示器(IXD)控制150、直接存储器存取(DMA)控制器151以及备选总线主接口 152。在一个实施例中,数据处理系统140还可包括I/O桥154以便经由I/O总线153与各种I/O装置通信。此类I/O装置例如可包含但不限于通用异步接收器/传送器(UART) 155、通用串行总线(USB)156、蓝牙无线UART 157和I/O扩展接口 158。
[0029]数据处理系统140的一个实施例提供移动、网络和/或无线通信以及可执行包含文本字符串比较操作的SMD操作的处理核159。处理核159可被编程具有各种音频、视频、成像和通信算法编程,包含:离散变换,诸如Wa I sh-Hadamard变换,快速傅里叶变换(FFT)、离散余弦变换(DCT)以及它们的相应逆变换;压缩/解压技术,诸如色彩空间变换、视频编码运动估计或视频解码运动补偿;以及调φ?」/解调(MODEM)功能,诸如脉冲译码调制(PCM)。
[0030]图1C示出了执行SMD文本字符串比较操作的数据处理系统的其它实施例。在一个实施例中,数据处理系统160可包含主处理器I66、snro协处理器161、高速缓冲存储器167和输入/输出系统168。输入/输出系统168可选地可耦合到无线接口 169。3頂0协处理器161可执行包含按照一个实施例的指令的操作。在一个实施例中,处理核170可适合于以一个或多个工艺技术的制造,并且通过充分详细地在机器可读媒体上表示,可适合于促进制造所有或部分数据处理系统160(包含处理核170)。
[0031]在一个实施例中,Snro协处理器161包括执行单元162和一组寄存器文件164。主处理器165的一个实施例包括解码器165以识别指令集163中的指令(包含按照一个实施例的指令)用于由执行单元162执行。在其它实施例中,SIMD处理器161还包括至少部分解码器165以解码指令集163中的指令。处理核170还可包含对理解本公开实施例不必要的附加电路(未示出)。
[0032]在操作中,主处理器166执行数据处理指令流,其控制通用类型的数据处理操作(包含与高速缓冲存储器167和输入/输出系统168的交互)。嵌入在数据处理指令流内的可以是SMD协处理器指令。主处理器166的解码器165将这些S頂D协处理器指令识别为应该由附连的SHffi协处理器161执行的类型。相应地,主处理器166在协处理器总线166上发布这些snro协处理器指令(或表示Sn?协处理器指令的控制信号)。从协处理器总线166,可由任何附连的snro协处理器接收这些指令。在此情况下,SMD协处理器161可接受并执行预期用于它的任何接收到S頂D协处理器指令。
[0033]数据可经由无线接口 169接收以便由snro协处理器指令处理。对于一个示例,语音通信可以以数字信号形式接收,其可由snro协处理器指令处理以重新生成代表语音通信的数字音频样本。对于另一个示例,压缩的音频和/或视频可以数字位流形式接收,其可由snro协处理器指令处理以重新生成数字音频样本和/或运动视频帧。在处理核170的一个实施例中,主处理器166和SMD协处理器161可被集成到单个处理核170中,其包括执行单元162、一组寄存器文件164和识别指令集163中的指令(包含按照一个实施例的指令)的解码器 165。
[0034]图2是按照本公开的实施例的可包含执行指令的逻辑电路的处理器200的微架构的框图。在一些实施例中,可实现按照一个实施例的指令,以对具有字节、字、双字、四字等大小以及诸如单和双精度整数和浮点数据类型的数据类型的数据元素进行操作。在一个实施例中,有序前端201可实现处理器200的一部分,该部分可获得要执行的指令,并且准备在处理器流水线中以后要使用的指令。前端201可包含几个单元。在一个实施例中,指令预获取器226从存储器中获取指令,并将指令馈送到指令解码器228,其又解码或解释这些指令。例如,在一个实施例中,解码器将接收的指令解码成机器可执行的称为“微指令”或“微操作”(也称为microop或uop)的一个或多个操作。在其它实施例中,解码器将指令解析成操作码和对应的数据以及控制字段,它们可由微架构使用以执行按照一个实施例的操作。在一个实施例中,追踪(trace)高速缓存230可将解码的uop汇编成uop队列234中的程序排序的序列或追踪以便执彳丁。当追踪尚速缓存230遇到复杂指令时,微代码ROM 232提供完成该操作所需的uop ο
[0035]—些指令可被转换成单个微-op,而其它指令需要几个微-op来完成整个操作。在一个实施例中,如果需要多于四个微-op来完成指令,则解码器228可访问微代码ROM 232以执行指令。在一个实施例中,指令可被解码成小数量的微-op,以便在指令解码器228进行处理。在另一实施例中,指令可被存储在微代码ROM 232内,如果需要若干微-op来完成操作的话。追踪高速缓存230指的是入口点可编程逻辑阵列(PLA),以确定正确的微指令指针,以便读取微代码序列,以完成来自微代码ROM 232的按照一个实施例的一个或多个指令。在微代码ROM 232完成指令的微-op排序后,机器的前端201可恢复从追踪高速缓存230获取微-op。
[0036]无序执行引擎203可准备指令以便执行。无序执行逻辑具有多个缓冲器,以在指令沿流水线向下并且被调度用于执行时,平滑处理和重新排序指令的流以优化性能。分配器逻辑分配每个uop需要以便执行的机器缓冲器和资源。寄存器重命名逻辑将逻辑寄存器重命名到寄存器文件中的条目上。在指令调度器(存储器调度器、快速调度器202、慢速/通用浮点调度器204和简单浮点调度器206)前面,分配器还为两个uop队列(一个用于存储器操作,并且一个用于非存储器操作)之一中的每个uop分配条目。Uop调度器202、204、206基于其相关性输入寄存器操作数源的准备度和uop完成其操作需要的执行资源的可用性,确定uop何时准备就绪执行。一个实施例的快速调度器202可在主时钟周期的每半个周期上进行调度,而其它调度器可每主处理器时钟周期仅调度一次。调度器对于分派端口进行裁决以调度uop以便执行。
[0037]寄存器文件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位宽的操作数。
[0038]执行块211可含有执行单元212、214、216、218、220、222、224。执行单元212、214、216、218、220、222、224可执行指令。执行块211可包含存储微指令需要执行的整数和浮点数据操作数值的寄存器文件208、210。在一个实施例中,处理器200可包括若干执行单元:地址生成单元(AGU) 212、AGU 214、快速ALU 216、快速ALU 218、慢速ALU 220、浮点ALU 222、浮点移动单元224。在另一实施例中,浮点执行块222、224可执行浮点、MMX、SIMD和SSE或其它运算。在又一个实施例中,浮点ALU 222可包含64位X64位浮点除法器以执行除法、平方根和余数微-op。在各种实施例中,涉及浮点值的指令可用浮点硬件处置。在一个实施例中,ALU运算可传到高速ALU执行单元216、218。高速ALU 216、218可以通过时钟周期一半的有效延时执行快速运算。在一个实施例中,最复杂的整数操作去到慢速ALU 220,因为慢速ALU220可包括用于长迟滞类型操作的整数执行硬件,如乘法器、位移、标记逻辑和分支处理。存储器加载/存储操作由AGU 212、214执行。在一个实施例中,整数ALU 216、218、220可对64位数据操作数执行整数运算。在其它实施例中,可实现ALU 216、218、220以支持各种数据位大小,包含16、32、128、256等。类似地,可实现浮点单元222、224以支持具有各种宽度位的一系列操作数。在一个实施例中,浮点单元222、224可结合SIMD和多媒体指令对128位宽压缩数据操作数进行运算。
[0039]在一个实施例中,在父载荷已经完成执行之前,uop调度器202、204、206分派相关操作。当在处理器200中推测性地调度和执行uop时,处理器200还可包含处置存储器丢失的逻辑。如果数据加载在数据高速缓存中丢失,则流水线中可存在执行中(in flight)相关操作,其为调度器留下了暂时不正确的数据。重放机制跟踪和重新执行使用不正确数据的指令。可能只需要重放相关操作,并且可允许完成独立操作。处理器的一个实施例的调度器和重放机制也可设计成捕捉用于文本字符串比较运算的指令序列。
[0040]术语“寄存器”可指代可用作识别操作数的部分指令的板载处理器存储位置。换而言之,寄存器可以是从处理器的外部可使用的那些寄存器(从程序器的角度而言)。然而,在一些实施例中,寄存器可能不限于特定类型的电路。相反,寄存器可存储数据,提供数据,并且执行本文中描述的功能。本文中描述的寄存器可由处理器内的电路使用任何数量的不同技术实现,如专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。在一个实施例中,整数寄存器存储32比特整数数据。一个实施例的寄存器文件也包含用于压缩数据的8个多媒体SHffi寄存器。对于下面的讨论,可将寄存器理解为设计成保持压缩数据的数据寄存器,如来自加利福尼亚州Santa Clara的IntelCorporat1n的以MMX技术实现的微处理器中的64比特宽MMX ?寄存器(在一些实例下也称为“mm”寄存器)。在整数和浮点形式两者中可用的这些MMX寄存器可与伴随S頂D和SSE指令的压缩数据元素一起操作。类似地,与SSE2、SSE3、SSE4或更高版本(一般称为“SSEx”)技术有关的128比特宽XMM寄存器可保持此类压缩数据操作数。在一个实施例中,在存储压缩数据和整数数据中,寄存器无需区分两种数据类型。在一个实施例中,整数和浮点可包含在相同寄存器文件或不同寄存器文件中。此外,在一个实施例中,浮点和整数数据可存储在不同寄存器或相同寄存器中。
[0041]在以下图形的示例中,可描述多个数据操作数。图3A示出根据本公开内容的实施例的在多媒体寄存器中的各种压缩数据类型表示。图3A示出用于128比特宽操作数的压缩字节310、压缩字320和压缩双字(dword) 330的数据类型。此示例的压缩字节格式310可以为128比特长,并且包含16个压缩字节数据元素。字节例如可定义为8比特的数据。用于每个字节数据元素的信息可存储在针对字节O的比特7到比特0、针对字节I的比特15到比特8、针对字节2的比特23到比特16及最后针对字节15的比特120到比特127。因此,在寄存器中可使用所有可用比特。此存储布置增大了处理器的存储效率。此外,利用访问的16个数据元素,现在可并行对16个数据元素执行一个操作。
[0042]通常,数据元素可包括与相同长度的其它数据元素一起存储在单个寄存器或存储器位置中的单独数据段。在与SSEx技术有关的压缩数据序列中,XMM寄存器中存储的数据元素的数量可以是128比特除以单独数据元素的以比特为单位的长度。类似地,在与MMX和SSE技术有关的压缩数据序列中,MMX寄存器中存储的数据元素的数量可以是64比特除以单独数据元素的以比特为单位的长度。虽然图3A中示出的数据类型可以为128比特长,但本公开内容的实施例也可利用64比特宽或其它大小的操作数操作。此示例的压缩字格式320可以为128比特长,并且包含8个压缩字数据元素。每个压缩字包含16比特的信息。图3A的压缩双字格式330可以为128比特长,并且包含4个压缩双字数据元素。每个压缩双字数据元素包含32比特的信息。压缩四字可以为128比特长,并且包含2个压缩四字数据元素。
[0043]图3B示出根据本公开内容的实施例的可能寄存器中的数据存储格式。每个压缩数据可包括多于一个独立数据元素。示出了三个压缩数据格式;压缩半(half)341、压缩单342和压缩双343。压缩半341、压缩单342和压缩双343的一个实施例包含固定点数据元素。对于另一实施例,压缩半341、压缩单342和压缩双343的一个或更多个可包含浮点数据元素。压缩半341的一个实施例可以为128比特长,包含8个16比特数据元素。压缩单342的一个实施例可以为128比特长,并且包含4个32比特数据元素。压缩双343的一个实施例可以为128比特长,并且包含2个64比特数据元素。将领会的是,此类压缩数据格式可进一步扩展到其它寄存器长度,例如,96比特、160比特、192比特、224比特、256比特或更多。
[0044]图3C示出根据本公开内容的实施例的在多媒体寄存器中的各种有符号和无符号的压缩数据类型表示。无符号的压缩字节表示344示出在SMD寄存器中的无符号的压缩字节的存储。每个字节数据元素的信息可存储在针对字节O的比特7到比特0、针对字节I的比特15到比特8、针对字节2的比特23到比特16及最后针对字节15的比特120到比特127。因此,在寄存器中可使用所有可用比特。此存储布置可增大处理器的存储效率。此外,利用访问的16个数据元素,现在可以并行方式对16个数据元素执行一个操作。有符号的压缩字节表示345示出有符号的压缩字节的存储。要注意的是,每个字节数据元素的第8比特可以是符号指示符。无符号的压缩字表示346示出在SIMD寄存器中可如何存储字7到字O。有符号的压缩字表示347可类似于无符号的压缩字寄存器中的表示346。要注意的是,每个字数据元素的第16比特可以是符号指示符。无符号的压缩双字表示348显示如何存储双字数据元素。有符号的压缩双字表示349可类似于无符号的压缩双字寄存器中的表示348。要注意的是,必需的符号比特可以是每个双字数据元素的第32比特。
[0045]图3D示出运算编码(操作码)的实施例。此外,格式360可包括寄存器/存储器操作数寻址模式,其与万维网(WWW) intel.com/design/litcentr上从加利福尼亚州圣克拉拉Intel Corporat1n可获得的“IA-32 Intel架构软件开发员手册第2卷:指令集参考”(IA-32 Intel Architecture Software Developer’s Manual Volume 2:1nstruct1n SetReference)中描述的操作码格式的类型相对应。在一个实施例中,指令可通过字段361和362中的一个或更多个字段编码。可识别直到每指令两个操作数位置,包括直到两个源操作数标识符364和365。在一个实施例中,目的地操作数标识符366可与源操作数标识符364相同,而在其它实施例中,它们可不同。在另一实施例中,目的地操作数标识符366可与源操作数标识符365相同,而在其它实施例中,它们可不同。在一个实施例中,通过源操作数标识符364和365识别的源操作数之一可通过文本字符串比较运算的结果被改写,而在其它实施例中,标识符364对应于源寄存器元素,并且标识符365对应于目的地寄存器元素。在一个实施例中,操作数标识符364和365可识别32比特或64比特源和目的地操作数。
[0046]图3E示出根据本公开内容的实施例的具有40或更多个比特的另一可能运算编码(操作码)格式。操作码格式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和由可选比例-索引-基础和位移字节部分指定的寄存器到寄存器、存储器到寄存器、寄存器接(by)存储器、寄存器接寄存器、寄存器接中间、寄存器到存储器寻址。
[0047]图3F示出根据本公开内容的实施例的又一可能运算编码(操作码)格式。64比特单指令多数据(snro)算术运算可通过协处理器数据处理(CDP)指令执行。运算编码(操作码)格式380描绘具有⑶P操作码字段382和389的一个此类⑶P指令。CDP指令的类型,对于另一实施例,运算可通过字段383、384、387和388的一个或更多个字段编码。可识别直到每指令三个操作数位置,包括直到两个源操作数标识符385、390和一个目的地操作数标识符386。协处理器的一个实施例可对8、16、32和64比特值进行操作。在一个实施例中,可对整数数据元素执行指令。在一些实施例中,可使用条件字段381,有条件执行指令。对于一些实施例,源数据大小可由字段383编码。在一些实施例中,可对SMD字段进行零(Z)、负(N)、进位(C)和溢出(V)检测。对于一些指令,饱和的类型可由字段384编码。
[0048]图4A是根据本公开内容的实施例的示出有序流水线和寄存器重命名阶段、无序发布/执行流水线的框图。图4B是根据本公开内容的实施例的示出有序架构核和要包括在处理器中的寄存器重命名逻辑、无序发布/执行流水线的框图。图4A中的实线框示出有序流水线,而虚线框示出寄存器重命名、无序发布/执行流水线。类似地,图4B中的实线框示出有序架构逻辑,而虚线框示出寄存器重命名和无序发布/执行逻辑。
[0049]在图4A中,处理器流水线400可包括获取阶段402、长度解码阶段404、解码阶段406、分配阶段408、重命名阶段410、调度(也称为分派或发布)阶段412、寄存器读取/存储器读取阶段414、执行阶段416、写回/存储器写入阶段418、异常处理阶段422及提交阶段424。
[0050]在图4B中,箭头表示在两个或更多个单元之间的耦合,并且箭头的方向指示在那些单元之间数据流的方向。图4B显示处理器核490,包括耦合到执行引擎单元450的前端单元430,并且两者均可耦合到存储器单元470。
[0051 ]核490可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIM)核或混合或备选核类型。在一个实施例中,核490可以是专用核,诸如,例如网络或通信核、压缩引擎、图形核或诸如此类。
[0052]前端单元430可包括耦合到指令高速缓存单元434的分支预测单元432。指令高速缓存单元434可耦合到指令翻译后备缓冲器(TLB) 436oTLB 436可耦合到指令获取单元438,其耦合到解码单元440。解码单元440可将指令解码,并且生成作为输出的一个或更多个微操作、微代码入口点、微指令、其它指令或其它控制信号,它们可从原始指令解码或者以其它方式反映原始指令或者可从原始指令得到。解码器可使用各种不同机制实现。适合机制的示例包括但不限于查表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,指令高速缓存单元434可还耦合到存储器单元470中的2级(L2)高速缓存单元476。解码单元440可耦合到执行引擎单元450中的重命名/分配器单元452。
[0053]执行引擎单元450可包括耦合到引退单元454和一个或更多个调度器单元456的集和的重命名/分配器单元452。调度器单元456表示任何数量的不同调度器,包括预留站、中央指令窗口等。调度器单元456可耦合到物理寄存器文件单元458 ο每个物理寄存器文件单元458表示一个或更多个物理寄存器文件,这些文件的不同文件存储一个或更多个不同数据类型,如标量整数、标量浮点、压缩整数、压缩浮点、向量整数、向量浮点、等,状态(例如,作为要执行的下一指令的地址的指令指针)等。物理寄存器文件单元458可由引退单元154重叠以示出其中可实现寄存器重命名和无序执行的各种方式(例如,使用一个或更多个重排序缓冲器和一个或更多个引退寄存器文件;使用一个或更多个将来文件、一个或更多个历史缓冲器和一个或更多个引退寄存器文件;使用寄存器映射和寄存器池等)。通常,架构寄存器可从处理器外部或者从程序员的角度而言是可见的。寄存器可能不限于任何已知特定类型的电路。各种不同类型的寄存器只要如本文中所述存储和提供数据,它们便是适合的。适合寄存器的示例包括但不限于专用物理寄存器、使用重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。引退单元454和物理寄存器文件单元458可耦合到执行集群460。执行集群460可包括一个或更多个执行单元162的集合和一个或更多个存储器存取单元464的集合。执行单元462可执行各种操作(例如,移位、加法、减法、乘法),并且对各种类型的数据执行(例如,标量浮点、压缩整数、压缩浮点、向量整数、向量浮点)。虽然一些实施例可包括专用于特定功能或功能的集合的多个执行单元,但其它实施例可只包括一个执行单元或全部执行所有功能的多个执行单元。调度器单元456、物理寄存器文件单元458和执行集群460示为可能是多个,这是因为某些实施例为某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/压缩整数/压缩浮点/向量整数/向量浮点流水线和/或存储器存取流水线,每个流水线具有其自己的调度器单元、物理寄存器文件单元和/或执行集群-并且在单独的存储器存取流水线的情况下,可实现其中仅此流水线的执行集群具有存储器存取单元464的某些实施例)。还应理解的是,在使用单独流水线的情况下,一个或更多个这些流水线可以是无序发布/执行,并且其余的流水线是有序的。
[0054]存储器存取单元464的集合可耦合到存储器单元470,其可包括耦合到数据高速缓存单元474的数据TLB单元472,数据高速缓存单元474耦合到2级(L2)高速缓存单元476。在一个示范实施例中,存储器存取单元464可包括负载单元、存储地址单元和存储数据单元,它们中的每个可耦合到存储器单元470中的数据TLB单元472儿2高速缓存单元476可耦合到一个或更多个其它级的高速缓存,并且最终耦合到主存储器。
[0055]通过示例,示范寄存器重命名、无序发布/执行核架构可如下实现流水线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。
[0056]核490可支持一个或更多个指令集[例如,x86指令集(其中更新版本已添加一些扩展)、加利福尼亚州Sunnyvale的MIPS Technologies , Inc.的MIPS指令集、加利福尼亚州Sunnyvale的ARM Ho I d i ng s的ARM指令集(具有诸如NEON的可选另外扩展)。
[0057]应理解的是,核可以以多种方式支持多线程(执行两个或更多个并行的操作或线程的集合)。例如通过包括时间片多线程、同时多线程(其中,单个物理核提供用于物理核在同时进行多线程的每个线程的逻辑核)或其组合,可执行多线程支持。此类组合例如可包括时间片获取和解码及之后的同时多线程,如在Intel?超线程技术中一样。
[0058]虽然寄存器重命名可在无序执行的上下文中描述,但应理解的是,可在有序架构中使用寄存器重命名。虽然处理器的所示实施例也可包括单独的指令和数据高速缓存单元434/474及共享L2高速缓存单元476,但其它实施例可具有诸如例如I级(LI)内部高速缓存的用于指令和数据两者的单个内部高速缓存,或多个级的内部高速缓存。在一些实施例中,系统可包括内部高速缓存和可在核和/或处理器外的外部高速缓存的组合。在其它实施例中,所有高速缓存可在核和/或处理器的外部。
[0059]图5A是根据本公开内容的实施例的处理器500的框图。在一个实施例中,处理器500可包括多核处理器。处理器500可包括以通信方式耦合到一个或更多个核502的系统代理510。此外,核502和系统代理510可以通信方式耦合到一个或更多个高速缓存506。核502、系统代理510和高速缓存506可经一个或更多个存储器控制单元552以通信方式耦合。此外,核502、系统代理510和高速缓存506可经存储器控制单元552以通信方式耦合到图形模块560。
[0060]处理器500可包括用于将核502、系统代理510和高速缓存506及图形模块560互连的任何适合机制。在一个实施例中,处理器500可包括基于环形的互连单元508以将核502、系统代理510和高速缓存506及图形模块560互连。在其它实施例中,处理器500可包括用于将此类单元互连的任何数量的公知技术。基于环形的互连单元508可利用存储器控制单元552以促进互连。
[0061]处理器500可包括存储器层级,该层级包括核内的一个或更多个级的高速缓存、诸如高速缓存506的一个或更多个共享高速缓存单元或耦合到集成存储器控制器单元552的集合的外部存储器(未示出)ο高速缓存506可包括任何适合的高速缓存。在一个实施例中,高速缓存506可包括诸如2级(L2)、3级(L3)、4级(L4)或其它级的高速缓存的一个或更多个中间级高速缓存、末级高速缓存(LLC)和/或其组合。
[0062]在各种实施例中,一个或更多个核502可执行多线程。系统代理510可包括用于协调和操作核502的组件。系统代理510例如可包括功率控制单元(PCU) JCU可以是或者包括用于调节核502的功率状态所需的逻辑和组件。系统代理510可包括用于驱动一个或更多个外部连接的显示器或图形模块560的显示引擎512。系统代理510可包括用于针对图形的通信总线的接口 1214。在一个实施例中,接口 1214可通过PCI Express (PCIe)来实现。在其它的实施例中,接口 1214可通过PCI Express图形(PEG)来实现。系统代理510可包括直接媒体接口(DMI) 516oDMI 516可在计算机系统的母板或其它部分上的不同桥之间提供链路。系统代理510可包括用于提供PCIe链路到计算系统的其它元素的PCIe桥WlS13PCIe桥1218可使用存储器控制器1220和相干性逻辑1222实现。
[0063]核502可以以任何适合的方式实现。核502可在架构和/或指令集方面是同构或异构的。在一个实施例中,一些核502可以是有序的,而其它核可以是无序的。在另一实施例中,两个或更多个核502可执行相同指令集,而其它核可只执行该指令集的子集或不同指令集。
[0064]处理器500可包括诸如可从加利福尼亚州Santa Clara的Intel Corporat1n获得的Core ? i3、i5、i7、2 Duo和QuacUXeon ? n Itanium ?、XScale ? 或StrongARM ? 处理器等通用处理器。处理器500可从诸如ARM Holdings, LtcUMIPS的另一公司提供。处理器500可以是专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器或诸如此类。处理器500可在一个或更多个芯片上实现。处理器500可以是使用诸如例如BiCM0S、C0MS或NMOS的多个处理技术的任何技术的一个或更多个衬底的一部分,和/或可在衬底上实现。
[0065]在一个实施例中,高速缓存506的一个给定高速缓存可由核502的多个核共享。在另一实施例中,高速缓存506的一个给定高速缓存可专用于核502之一。高速缓存506到核502的指派可由高速缓存控制器或其它适合机制处理。通过实现给定高速缓存506的时间片,可由两个或更多个核502共享高速缓存506的一个给定高速缓存。
[0066]图形模块560可实现集成图形处理子系统。在一个实施例中,图形模块560可包括图形处理器。此外,图形模块560可包括媒体引擎565。媒体引擎565可提供媒体编码和视频解码。
[0067]图5B是根据本公开内容的实施例的核502的示例实现的框图。核502可包括以通信方式耦合到无序引擎580的前端570。核502可通过高速缓存层级503,以通信方式耦合到处理器500的其它部分。
[0068]前端570可以以任何适合的方式实现,例如,如上所述部分或完全由前端201实现。在一个实施例中,前端570可通过高速缓存层级503与处理器500的其它部分进行通信。在又一实施例中,前端570可从处理器500的部分获取指令,并且在指令传递到无序执行引擎580时准备处理器流水线中以后要使用的指令。
[0069]无序执行引擎580可以以任何适合的方式实现,例如,如上所述部分或完全通过无序执行引擎203来实现。无序执行引擎580可准备从前端570接收到的指令以供执行。无序执行引擎580可包括分配模块1282。在一个实施例中,分配模块1282可分配处理器500的资源或诸如寄存器或缓冲器的其它资源以执行给定指令。分配模块1282可在调度器中进行分配,如存储器调度器、快速调度器或浮点调度器。此类调度器可在图5B中由资源调度器584表示。分配模块1282可完全或部分通过结合图2描述的分配逻辑来实现。资源调度器584可基于给定资源的源的准备度和执行指令需要的执行资源的可用性,确定指令何时准备就绪以执行。资源调度器584可例如通过如上所述的调度器202、204、206来实现。资源调度器584可对一个或更多个资源调度指令的执行。在一个实施例中,此类资源可在核502的内部,并且例如可示出为资源586。在另一实施例中,此类资源可在核502的外部,并且例如可由高速缓存层级503访问。资源例如可包括存储器、高速缓存、寄存器文件或寄存器。核502内部的资源可由图5B中的资源586表示。在必需时,可例如通过高速缓存层级503,协调写入资源586或从中读取的值和处理器500的其它部分。在指令是指派的资源时,可将它们置于重新排序缓冲器588中。重新排序缓冲器588可在指令执行时跟踪指令,并且可基于处理器500的任何适合准则,选择性地将其执行重新排序。在一个实施例中,重新排序缓冲器588可识别可独立执行的指令或一系列指令。此类指令或一系列指令可与其它此类指令并行执行。核502中的并行执行可通过任何适合数量的单独执行块或虚拟处理器执行。在一个实施例中,给定核502内的多个虚拟处理器可访问诸如存储器、寄存器和高速缓存的共享资源。在其它实施例中,处理器500内的多个处理实体可访问共享资源。
[0070]高速缓存层级503可以以任何适合的方式实现。例如,高速缓存层级503可包括诸如高速缓存572、574的一个或更多个更低或中级高速缓存。在一个实施例中,高速缓存层级503可包括以通信方式耦合到高速缓存572、574的LLC 595。在另一实施例中,LLC 595可在处理器500的所有处理实体可访问的模块590中实现。在另外的实施例中,模块590可在来自Intel, Inc的处理器的非核心模块中实现。模块590可包括执行核502所必需,但可能不在核502内实现的处理器500的部分或子系统。除LLC 595外,模块590例如可包括硬件接口、存储器相干性协调器、处理器间互连、指令流水线或存储器控制器。通过模块590,并且更具体地说,通过LLC 595,可对可用于处理器500的RAM 599进行访问。此外,核502的其它实例可类似地访问模块590 ο可部分通过模块590,促进核502的实例的协调。
[0071]图6-8可示出适合于包含处理器500的示范系统,而图9可示出可包含一个或多个核502的示范片上系统(SoC)。在本领域已知的用于膝上型计算机、桌面型计算机、手持PC、个人数字助理、工程设计工作站、服务器、网络装置、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持装置和各种其它电子装置的其它系统设计和实现也是适合的。一般而言,结合处理器和/或本文所公开的其它执行逻辑的大量系统或电子装置一般可以是适合的。
[0072]图6示出了按照本公开实施例的系统600的框图。系统600可包含一个或多个处理器610、615,它们可耦合到图形存储器控制器集线器(GMCH) 620。在图6中用虚线指代附加处理器615的可选性质。
[0073]每个处理器610、615可以是某版本的处理器500。然而,应该指出,在处理器610、615中可能不存在集成图形逻辑和集成存储器控制单元。图6示出了GMCH 620可耦合到存储器640,存储器640例如可以是动态随机存取存储器(DRAM)。对于至少一个实施例,DRAM可与非易失性尚速缓存关联。
[0074]GMCH 620可以是芯片集,或者芯片集的一部分。GMCH 620可与处理器610、615通信,并控制处理器610、615与存储器640之间的交互。GMCH 620也可充当处理器610、615与系统600其它元件之间的加速总线接口。在一个实施例中,GMCH 620经由多点总线(诸如前侧总线(FSB) 695)与处理器610、615通信。
[0075]更进一步,GMCH 620可耦合到显示器645(诸如平板显示器)。在一个实施例中,GMCH 620可包含集成图形加速器。GMCH 620可进一步耦合到输入/输出(I/O)控制器集线器(ICH) 650,其可用于将各种外围装置耦合到系统600。外部图形装置660可包含耦合到ICH650的分立图形装置,连同另一外围装置670。
[0076]在其它实施例中,在系统600中也可存在附加的或不同的处理器。例如,附加处理器610、615可包含可与处理器610相同的附加处理器、可与处理器610异质或不对称的附加处理器、加速器(诸如例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器。在品质度量谱(包含架构、微架构、热、功耗特性等)方面,在物理资源610、615之间可能存在各种差异。这些差异在处理器610、615之间可有效地将它们自己标明为不对称并且异质。对于至少一个实施例,各种处理器610、615可驻留在同一管芯封装中。
[0077]图7示出了按照本公开实施例的第二系统700的框图。如图7中所示,多处理器系统700可包含点对点互连系统,并且可包经由点对点互连750耦合的第一处理器770和第二处理器780。处理器770和780中的每个可以如一个或更多个处理器610,615—样,是某一版本的处理器500。
[0078]虽然图7可示出两个处理器770、780,但要理解到,本公开的范围不限于此。在其它实施例中,在给定处理器中可存在一个或多个附加处理器。
[0079]分别示出处理器770和780包含集成存储器控制器单元772和782。处理器770还可包含点对点(P-P)接口 776和778作为其总线控制器单元的一部分;类似地,第二处理器780可包含P-P接口 786和788。处理器770、780可经由点对点(P-P)接口 750使用P-P接口电路778、788交换信息。如图7中所示JMC 772和782可将处理器耦合到相应存储器,即存储器732和存储器734,它们在一个实施例中可以是本地附连到相应处理器的主存储器的部分。
[0080]处理器770、780可各经由单独P-P接口 752、754使用点对点接口电路776、794、786、798与芯片集790交换信息。在一个实施例中,芯片集790还可经由高性能图形接口 739与高性能图形电路738交换信息。
[0081 ] 共享高速缓存(未示出)可被包含在任一处理器中或两个处理器外,仍经由P-P互连与处理器连接,使得任一或两个处理器的本地高速缓存信息可被存储在共享高速缓存中,如果处理器被置于低功率模式的话。
[0082]芯片集790可经由接口796耦合到第一总线716。在一个实施例中,第一总线716可以是外围组件互连(PCI)总线,或诸如PCI Express总线的总线,或另一个第三代I/O互连总线,尽管本公开的范围不限于此。
[0083]如图7中所示,各种I/O装置714可耦合到第一总线716,连同将第一总线716耦合到第二总线720的总线桥718。在一个实施例中,第二总线720可以是低管脚计数(LPC)总线。在一个实施例中,各种装置可耦合到第二总线720,例如包含键盘和/或鼠标722、通信装置727和存储单元728,诸如盘驱动器或可包含指令/代码和数据730的其它大容量存储装置。进一步说,音频I/O 724可耦合到第二总线720。要指出,其它架构是可能的。例如,代替图7的点对点架构,系统可实现多点总线或其它此类架构。
[0084]图8示出了按照本公开实施例的第三系统800的框图。图7和图8中的相同的元件带有相同的附图标记,并且已经从图8中省略了图7的某些方面,以便避免使图9的其它方面模糊不清。
[0085]图8示出处理器870、880可分别包含集成存储器和I/O控制逻辑(“CL” ) 872和882。对于至少一个实施例,CL 872、882可包含集成存储器控制器单元,诸如上面结合图5和图7所描述的。此外,CL 872、882也可包含I/O控制逻辑。图8不仅示出了存储器832、834可耦合到CL 872、882,而且I/O装置814也可耦合到控制逻辑872、882。传统I/O装置815可耦合到芯片集890。
[0086]图9示出了按照本公开实施例的SoC900的框图。图5中的相同元件带有相同附图标记。还有,虚线框可表示更高级SoC上的可选特征。互连单元902可耦合到:应用处理器910,其可包含一个或多个核902A-N的集合以及共享高速缓存单元906;系统代理单元910;总线控制器单元916;集成存储器控制器单元914; 一组或一个或多个媒体处理器920,其可包含集成图形逻辑908、用于提供静止和/或视频相机功能性的图像处理器924、用于提供硬件音频加速的音频处理器926以及用于提供视频编码/解码加速的视频处理器928;静态随机存取存储器(SRAM)单元930;直接存储器存取(DMA)单元932;以及用于耦合到一个或多个外部显示器的显示单元940。
[0087]图10示出了按照本公开的实施例的可执行至少一个指令的含有中央处理单元(CPU)和图形处理单元(GPU)的处理器。在一个实施例中,执行根据至少一个实施例的操作的指令可由CPU执行。在另一实施例中,指令可由GPU执行。在又一实施例中,指令可通过由GPU和CPU执行的操作组合执行。例如,在一个实施例中,按照一个实施例的指令可被接收和解码以便在CHJ上执行。然而,解码指令内的一个或多个操作可由CPU执行,并且结果返回到GPU用于指令的最后引退。相反,在一些实施例中,CPU可充当主处理器,并且GPU充当协处理器。
[0088]在一些实施例中,受益于高度并行吞吐量处理器的指令可由GPU执行,而受益于处理器(其受益于深流水线架构)执行的指令可由CPU执行。例如,图形、科学应用、金融应用和其它并行工作负荷可受益于GPU的执行,并相应地执行,而更多顺序应用(诸如操作系统内核或应用代码)可更适合于CPU。
[0089]在图10中,处理器1000包含CPU 1005XPU 1010、图像处理器1015、视频处理器1020、USB控制器1025、UART控制器1030、SPI/SD10控制器1035、显示装置1040、存储器接口控制器1045、MIPI控制器1050、闪存控制器1055、双数据速率(DDR)控制器1060、安全性引擎1065和I2S/I2C控制器1070。其它逻辑和电路可包含在图10的处理器中,包含更多CPU和GPU以及其它外围接口控制器。
[0090]至少一个实施例的一个或多个方面可由存储在表示处理器内的各种逻辑的机器可读介质上的代表性数据实现,其当由机器读取时使机器制造执行本文描述的技术的逻辑。称为“IP核”的此类表示可存储在有形机器可读介质(“带”)上,并供应给各种消费者或制造设施,以加载到实际上制造逻辑或处理器的制造机器中。例如,诸如由ARM Holdings,Ltd开发的Cortex?族处理器和中国科学院计算技术研究所(ICT)开发的龙芯IP核的IP核可许可或销售到各种客户或被许可人,如Texas Instruments、Qualcomm、AppIe或Samsung,并且在由这些客户或被许可人生产的处理器中实现。
[0091]图11示出了按照本公开实施例示出开发IP核的框图。存储装置1130可包含模拟软件1120和/或硬件或软件模型1110。在一个实施例中,表示IP核设计的数据可经由存储器1140(例如硬盘)、有线连接(例如因特网)1150或无线连接1160提供给存储装置1130。由模拟工具和模型生成的IP核信息然后可被传送到制造设施,在此它可由第三方制造以执行按照至少一个实施例的至少一个指令。
[0092]在一些实施例中,一个或多个指令可对应于第一类型或架构(例如x86),并且在不同类型或架构(例如ARM)的处理器上翻译或仿真。根据一个实施例,指令因此可在任何处理器或处理器类型(包含ARM、x86、MIPS、GPU)或其它处理器类型或架构上执行。
[0093]图12示出了按照本公开实施例的由不同类型的处理器可如何仿真第一类型的指令。在图12中,程序1205含有可与根据一个实施例的指令执行相同或基本上相同功能的一些指令。然而,程序1205的指令可属于与处理器1215不同或不兼容的类型和/或格式,意味着,程序1205中的类型的指令可能不能够由处理器1215本地执行。然而,在仿真逻辑1210的帮助下,程序1205的指令可被翻译成可由处理器1215本地执行的指令。在一个实施例中,仿真逻辑可体现在硬件中。在另一实施例中,仿真逻辑可体现在有形、机器可读介质中,其含有将程序1205中的类型的指令翻译成由处理器1215本地可执行的类型。在其它实施例中,仿真逻辑可以是固定功能或可编程硬件以及存储在有形、机器可读介质上的程序的组合。在一个实施例中,处理器含有仿真逻辑,而在其它实施例中,仿真逻辑存在于处理器外部,并且可由第三方提供。在一个实施例中,处理器可通过执行在处理器中含有的或与处理器关联的微代码或固件来加载体现在含有软件的有形、机器可读介质中的模拟逻辑。
[0094]图13示出了按照本公开的实施例的对比使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示出的实施例中,指令转换器可以是软件指令转换器,尽管指令转换器可以用软件、固件、硬件或它们的各种组合实现。图13示出可使用x86编译器1304编译高级语言1302的程序以生成x86 二进制代码1306,其可由具有至少一个x86指令集核1316的处理器本地执行。具有至少一个x86指令集核的处理器1316表示可通过兼容执行或以其它方式处理(I) Intel x86指令集核的指令集的实质部分或(2)定向为在具有至少一个x86指令集核的Intel处理器上运行的应用或其它软件的对象代码版本,与具有至少一个x86指令集核的Intel处理器执行基本上相同功能,以便与具有至少一个x86指令集核的Intel处理器实现基本上相同结果的任何处理器。x86编译器1304表示可操作以生成x86 二进制代码1306(例如对象代码)的编译器,二进制代码1306可在具有或没有附加连锁处理的情况下在具有至少一个x86指令集核1316的处理器上执行。类似地,图13示出以高级语言1302的程序可使用备选指令集编译器1308编译以生成备选指令集二进制代码1310,其可由没有至少一个x86指令集核1314的处理器(例如,具有执行加利福尼亚州Sunnyvale的MIPS Technologies的MIPS指令集,和/或执行加利福尼亚州Sunnyvale的ARM Holdings的ARM指令集的核的处理器)本地执行。指令转换器1312可用于将x86二进制代码1306转换成可由没有x86指令集核1314的处理器本地执行的代码。这个转换的代码可能不与备选指令集二进制代码1310相同;然而,转换的代码将完成一般操作,并且由来自备选指令集的指令组成。从而,指令转换器1312表示通过仿真、模拟或任何其它过程,允许不具有x86指令集处理器或核的处理器或其它电子装置执行x86 二进制代码1306的软件、固件、硬件或其组合。
[0095]图14是按照本公开实施例的处理器的指令集架构1400的框图。指令集架构1400可包含任何适合数量或种类的组件。
[0096]例如,指令集架构1400可包含处理实体,诸如一个或多个核1406、1407和图形处理单元1415。核1406、1407可通过任何适合的机制(诸如通过总线或高速缓存)以通信方式耦合到其余指令集架构1400。在一个实施例中,核1406、1407可通过L2高速缓存控制1408以通信方式耦合,L2高速缓存控制1408可包含总线接口单元1409和L2高速缓存1410。核1406、1407和图形处理单元1415可通过互连1410以通信方式彼此耦合,并耦合到指令集架构1400的剩余部分。在一个实施例中,图形处理单元1415可使用视频代码1420(其定义具体视频信号将被编码和解码以便输出的方式)。
[0097]指令集架构1400还可包含任何数量或种类的接口、控制器或用于与电子装置或系统的其它部分对接或通信的其它机制。此类机制例如可促进与外设、通信装置、其它处理器或存储器的交互。在图14的示例中,指令集架构1400可包含液晶显示器(LCD)视频接口1425、订户接口模块(SIM)接口 1430、引导ROM接口 1435、同步动态随机存取存储器(SDRAM)控制器1440、闪存控制器1445和串行外设接口(SPI)主单元1450儿0)视频接口 1425例如可从GPU 1415并且例如通过移动工业处理器接口(MIPIH490或高清多媒体接口(HDMIH495向显示器提供视频信号的输出。此类显示器例如可包含LCD。SM接口 1430可提供对或从SM卡或装置的访问。SDRAM控制器1440可提供对或从诸如SDRAM芯片或模块的存储器的访问。闪存控制器1445可提供对或从诸如闪存存储器或RAM的其它实例的存储器的访问。SPI主单元1450可提供对或从诸如蓝牙模块1470、高速3G调制解调器1475、全球定位系统模块1480或实现诸如802.11的通信标准的无线模块1485的通信模块的访问。
[0098]图15是按照本公开实施例的处理器的指令集架构1500的更详细框图。指令架构1500可实现指令集架构1400的一个或多个方面。更进一步,指令集架构1500可示出用于执行处理器内指令的模块和机制。
[0099]指令架构1500可包含以通信方式耦合到一个或多个执行实体1565的存储器系统1540。更进一步,指令架构1500可包含以通信方式耦合到执行实体1565和存储器系统1540的高速缓存和总线接口单元(诸如单元1510)。在一个实施例中,将指令加载到执行实体1564可由一个或多个执行阶段执行。此类阶段例如可包含指令预获取阶段1530、双指令解码阶段1550、寄存器重命名阶段155、发布阶段1560和写回阶段1570。
[0100]在一个实施例中,存储器系统1540可包含执行的指令指针1580。执行的指令指针1580可存储标识一批指令内最老的未指派的指令的值。最老的指令可对应于最低程序指令(PO)值。PO可包含唯一数量的指令。此类指令可以是由多个指令串(strand)表示的线程内的单个指令。PO可在排序指令中用于确保代码的正确执行语义。PO可通过诸如评估指令中编码的PO的增量而不是绝对值的机制来重构。此类重构的PO可被称为“RP0”。尽管本文可提至IJP0,但此类PO可与RPO互换使用。指令串可包含是取决于彼此的数据的指令序列。在编译时间,指令串可由二进制翻译器布置。执行指令串的硬件可按根据各种指令的PO的次序执行给定指令串的指令。线程可包含多个指令串,使得不同指令串的指令可取决于彼此。给定指令串的PO可以是指令串中尚未从发布阶段分派执行的最老的指令的PO。相应地,给定多个指令串的线程,每个指令串包含按PO排序的指令,执行的指令指针1580可存储线程中最老的由最低号码不出的 PO。
[0101]在另一个实施例中,存储器系统1540可包含引退指针1582。引退指针1582可存储标识最后引退的指令的PO的值。引退指针1582例如可由引退单元454设置。如果尚没有指令引退,则引退指针1582可包含空值。
[0102]执行实体1565可包含通过其处理器可执行指令的任何适合数量和种类的机制。在图15的示例中,执行实体1565可包含ALU/乘法单元(MUL)1566、ALU 1567和浮点单元(FPU)1568。在一个实施例中,此类实体可利用在给定地址1569内含有的信息。执行实体1565与阶段1530、1550、1555、1560、1570组合可共同形成执行单元。
[0103]单元1510可用任何适合的方式实现。在一个实施例中,单元1510可执行高速缓存控制。在此类实施例中,单元1510从而可包含高速缓存1525。在另外实施例中,高速缓存1525可实现为具有任何适合大小(诸如0、1281^、2561^、5121^、謹或21字节的存储器)的1^统一高速缓存。在另一另外的实施例中,高速缓存1525可实现在纠错代码存储器中。在另一实施例中,单元1510可执行到处理器或电子装置的其它部分的总线对接。在此类实施例中,单元1510从而可包含用于通过互连、处理器内总线、处理器间总线或其它通信总线、端口或线路通信的总线接口单元1520。总线接口单元1520可提供对接以便例如执行生成存储器和输入/输出地址,以便在执行实体1565与指令架构1500外部的系统部分之间传送数据。
[0104]为了进一步促进其功能,总线接口单元1520可包含用于生成中断和到处理器或电子装置的其它部分的其它通信的中断控制和分布单元1511。在一个实施例中,总线接口单元1520可包含处置多个处理核的高速缓存访问和相干性的探听控制单元1512。在另外的实施例中,为了提供此类功能性,探听控制单元1512可包含处置不同高速缓存之间信息交换的高速缓存到高速缓存传送单元。在另一另外实施例中,探听控制单元1512可包含一个或多个探听过滤器1514,其监视其它高速缓存(未示出)的相干性,使得高速缓存控制器(诸如单元1510)不用必须直接执行此类监视。单元1510可包含用于同步指令架构1500的动作的任何适合数量的定时器1515。还有,单元1510可包含AC端口 1516。
[0105]存储器系统1540可包含用于存储指令架构1500的处理需要的信息的任何适合的数量和种类的机制。在一个实施例中,存储器系统1504可包含用于存储信息(诸如写入到存储器或寄存器或从存储器或寄存器读回的缓冲器)的载荷存储单元1530。在另一实施例中,存储器系统1504可包含翻译后备缓冲器(TLB)1545,其提供了物理地址与虚拟地址之间的地址值的查找。在又一实施例中,总线接口单元1520可包含用于促进访问虚拟存储器的存储器管理单元(MMU) 1544。在又一实施例中,存储器系统1504可包含预获取器1543,用于在指令实际需要被执行之前从存储器请求此类指令以便减少延时。
[0106]执行指令的指令架构1500的操作可通过不同阶段执行。例如,使用单元1510指令预获取阶段1530可通过预获取器1543访问指令。检索的指令可被存储在指令高速缓存1532中。预获取阶段1530可实现用于快速环路模式的选项1531,其中执行形成环路的一系列指令,环路是足够小的以在给定高速缓存内拟合。在一个实施例中,执行此类执行例如可无需从指令高速缓存1532访问附加指令。预获取什么指令的确定例如可由分支预测单元1535做出,单元1535可访问全局历史1536中的执行指示、目标地址1537的指示或确定接下来将执行代码的那个分支1557的返回栈1538的内容。此类分支有可能作为结果预获取。分支1557可通过如下面所描述的其它操作阶段产生。指令预获取阶段1530可提供指令及有关将来指令的任何预测到双指令解码阶段。
[0107]双指令解码阶段1550可将接收的指令翻译成可执行的基于微代码的指令。双指令解码阶段1550每时钟周期可同时解码两个指令。更进一步,双指令解码阶段1550可将其结果传到寄存器重命名阶段1555。此外,双指令解码阶段1550可从其解码和微代码的最终执行中确定任何结果分支。此类结果可输入到分支1557中。
[0108]寄存器重命名阶段1555可将对虚拟寄存器或其它资源的参考翻译成对物理寄存器或资源的参考。寄存器重命名阶段1555可包含寄存器池1556中此类映射的指示。寄存器重命名阶段1555可更改所接收的指令,并将结果发送到发布阶段1560。
[0109]发布阶段1560可向执行实体1565发布或分派命令。此类发布可按无序方式执行。在一个实施例中,多个指令可在执行之前保持在发布阶段1560。发布阶段1560可包含用于保持此类多个命令的指令队列1561。可基于任何可接受的判据,诸如用于执行给定指令的资源的可用性或适用性,由发布阶段1560向具体处理实体1565发布指令。在一个实施例中,发布阶段1560可重新排序指令队列1561内的指令,使得所接收的第一指令可能不是所执行的第一指令。基于指令队列1561的排序,附加分支信息可被提供给分支1557。发布阶段1560可将指令传到执行实体1565进行执行。
[0110]在执行时,写回阶段1570可将数据写入到寄存器、队列或指令集架构1500的其它结构中,以传递给定命令的完成。取决于在发布阶段1560中布置的指令次序,写回阶段1570的操作可实现要被执行的附加指令。指令集架构1500的执行可由追踪单元1575监视或调试。
[0111]图16是按照本公开实施例的处理器的指令集架构的执行流水线1600的框图。执行流水线1600例如可示出图15的指令架构1500的操作。
[0112]执行流水线1600可包含步骤或操作的任何适合的组合。在1605,可进行接下来要执行的分支的预测。在一个实施例中,此类预测可基于先前指令的执行及其结果。在1610,对应于预测的执行分支的指令可被加载到指令高速缓存中。在1615,可获取指令高速缓存中的一个或多个此类指令以便执行。在1620,已经获取的指令可被解码成微代码或更特定的机器语言。在一个实施例中,可同时解码多个指令。在1625,可重新指配解码指令内对寄存器或其它资源的参考。例如,可参考对应物理寄存器替换对虚拟寄存器的参考。在1630,指令可被分派给队列以便执行。在1640,可执行指令。可按任何适合的方式执行此类执行。在1650,可向适合的执行实体发布指令。执行指令的方式可取决于执行指令的特定实体。例如,在1655,ALU可执行算术函数。ALU可对于其操作利用单个时钟周期以及两个移位器。在一个实施例中,可采用两个ALU,并且从而在1655可执行两个指令。在1660,可进行结果分支的确定。程序计数器可用于指定分支将被做到的目的地。1660可在单个时钟周期内执行。在1665,浮点算术可由一个或多个FPU执行。浮点操作可需要执行多个时钟周期,诸如2个到1个周期。在1670,可执行乘法和除法运算。此类运算可在4个时钟周期中执行。在1675,可执行对寄存器或流水线1600其它部分的加载和存储操作。操作可包含加载和存储地址。此类运算可在4个时钟周期中执行。在1680,写回操作可根据需要由1655-1675的结果操作执行。
[0113]图17是根据本公开内容的实施例的用于利用处理器1710的电子装置1700的框图。电子装置1700例如可包括笔记本、超级本、计算机、塔式服务器、机架服务器、刀片服务器、膝上型计算机、桌上型计算机、平板、移动装置、电话、嵌入式计算机或任何其它适合的电子
目.ο
[0114]电子装置1700可包括以通信方式耦合到任何适合数量或种类的组件、外设、模块或装置的处理器1710。此类耦合可通过任何适合种类的总线或接口来实现,如I2C总线、系统管理总线(SMBus)、低引脚计数(LPC)总线、SP1、高清晰音频(HDA)总线、串行高级技术附件(SATA)总线、USB总线(版本1、2、3)或通用异步接收器/传送器(UART)总线。[00145]此类组件例如可包括显示器1724、触摸屏1725、触摸板1730、近场通信(NFC)单元1745、传感器集线器1740、热传感器1746、express芯片集(EC) 1735、可信平台模块(TPM) 1738、B10S/固件/闪存存储器1722、数字信号处理器1760、诸如固态磁盘(SSD)或硬盘驱动器(HDD)的驱动器1720、无线局域网(WLAN)单元1750、蓝牙单元1752、无线广域网(WWAN)单元1756、全球定位系统(GPS)、诸如USB 3.0摄像头的摄像头1754、或例如以LPDDR3标准实现的低功率双倍数据率(LPDDR)存储器单元1715。这些组件每个可以以任何适合的方式实现。
[0115]此外,在各种实施例中,其它组件可通过上面讨论的组件以通信方式耦合到处理器1710。例如,加速计1741、环境光传感器(ALS) 1742、罗盘1743和陀螺仪1744可以以通信方式耦合到传感器集线器1740。热传感器1739、风扇1737、键盘1746和触摸板1730可以以通信方式耦合到EC 1735。扬声器1763、耳机1764和麦克风1765可以以通信方式耦合到音频单元1764,音频单元又可以通信方式耦合到DSP 1760。音频单元1764例如可包括音频编解码器和D类放大器。SIM卡1757可以以通信方式耦合到WWAN单元1756。诸如WLAN单元1750和蓝牙单元1752以及WffAN单元1756的组件可以以下一代规格(NGFF)实现。
[0116]本公开的实施例涉及用于过滤软件预获取的指令和逻辑。过滤可以是自适应的。图18是按照本公开实施例的用于实现用于过滤软件预获取的指令和逻辑的系统1800的框图。
[0117]系统1800可包含执行本文描述的操作的任何适合数量和种类的元件。更进一步,尽管系统1800的特定元件在本文可描述为执行特定功能,但系统1800的任何适合部分都可执行本文描述的功能性。系统1800可以无序地获取、分派、执行和引退指令。此类指令可包含要由处理器1802执行的指令流。指令流可由应用、对象代码、编译器、解释器或另一处理器或处理器1802的一部分提供。
[0118]处理器1802可访问作为高速缓存层级1824的一部分的高速缓存,诸如高速缓存单元1810,以加速对指令或数据的访问。如果处理器1802尝试访问来自高速缓存单元1810的信息,并且如果此类信息不在高速缓存单元1810内,则可生成未中(miss)。未中可通过高速缓存单元1810访问来自高速缓存层级1824的其它级的此类信息进行处置。更进一步,如果信息从高速缓存层级1824的连续级不可用,则可对于此类级生成未中,直到从高速缓存级或原始源(诸如存储器或寄存器)成功检索到信息为止。处置未中可引起延时或延迟,并且可放慢系统1800的操作。系统1800可花费相当大量的时间等待相对于高速缓存已经经历未中的处理器1802中的操作(诸如存储器加载和存储器存储)。
[0119]系统1800可通过改进诸如处理器1802的处理器中的指令级并行化来减少由未中引起的延时效应。指令级并行化可描述指令流中的指令可由多个处理器、核或系统1800中的其它执行单元并行执行的程度。更进一步,可对于指令执行预获取以重叠期望的存储器延时。在期待减少由未中引起的流水线停顿时,可用当前计算周期执行预获取。此类预获取可用硬件或软件执行。硬件预获取可通过调度匹配数据例程的预获取操作来执行。软件预获取可由插入到指令流中的一组非阻塞预获取指令来执行。在一个实施例中,预获取指令可预先将规定的信息带入高速缓存单元1810中。软件预获取可比硬件预获取更灵活,因为可以获取由硬件以其它方式无法预测的不规则数据地址。
[0120]软件预获取指令例如可由指令或软件模块的程序器插入。此类软件模块可在电子装置上执行,并且又可包含由处理器可执行的指令,这些指令当由处理器加载和执行时,执行指令流的转换,或将指令插入到指令流中以便预获取。软件模块可位于处理器1802内,或者可以通信方式耦合到处理器1802。可使用任何适合的软件模块,诸如二进制翻译器、解释器、只在时间上的优化器或者编译器(诸如编译器1804)。编译器1804可产生包含预获取指令的指令流。
[0121]软件预获取指令当发布和执行时可使信息从其它源(诸如高速缓存层级1824)或信息的原始源(诸如寄存器或存储器地址)被加载到高速缓存,诸如高速缓存单元1810。在一个实施例中,软件预获取指令可有效地并行化执行未中的加载指令所必需的工作。消除由于未中而引起的随后停顿或延时的好处可超过执行软件预获取的开销,假定实际上发生了未中。然而,在另一实施例中,如果必要信息已经在高速缓存单元1810内,则由软件预获取执行的工作可能浪费了。
[0122]在一个实施例中,系统1800可使用过滤消除一个或多个预获取指令来执行软件预获取指令。在另一实施例中,自适应过滤可用于消除预获取指令。在又一实施例中,系统1800可滤出被预测请求加载在诸如高速缓存单元1810的高速缓存中已经可用的信息的预获取指令。在又一实施例中,系统1800可基于先前预获取指令的操作,自适应地滤出预获取指令。
[0123]当预获取指令例如可由程序器或编译器1804选择和使用时,系统1800可能不知道是否用要预获取的信息是否已经在高速缓存单元1810内的任何知识进行此类选择。在一个实施例中,系统1800可跟踪预获取指令的使用以及此类使用的结果以确定新遇到的预获取指令是否有可能由已经在高速缓存单元1810内的信息组成。从而,系统1800可关于是否允许或抑制预获取指令而做出动态判定。在另一实施例中,系统1800可以确定在第一时刻以及在随后时刻的信息读取,假定相同信息在高速缓存内仍可用,并且不对该信息发布预获取指令。
[0124]可使用任何适合的技术来抑制、不允许、不顾或以其它方式滤出软件预获取指令。在一个实施例中,要滤出的软件预获取指令可实际上通过将它们转换成NOP指令来消除。此类转换例如可通过人工写入对处理器1802的其它部分没有影响的模型特定寄存器来执行。在另一示例中,此类转换可通过丢弃指令使得它不被分派给执行资源来进行。
[0125]系统1800可包含执行软件预获取指令的自适应过滤的任何适合数量和种类的机制。在一个实施例中,系统1800可包含执行软件预获取指令的自适应过滤的软件预获取过滤器1816。软件预获取过滤器1816可位于系统1800的任何适合部分,诸如在处理器1802内或进一步在前端1816中。在另一实施例中,系统1800可包含跟踪有关预获取指令的信息的表1820。表1820可用任何适合的方式实现,诸如是存储器,但可示出为驻留在软件预获取过滤器1816内。而且,表1820可被称为软件预获取指令表。
[0126]处理器1802可部分由任何处理器核、逻辑处理器、处理器或其它处理实体(诸如在图1-17中所示出的那些)实现。处理器1802可包含前端1806以获取要执行的指令,并且准备此类指令以由处理器1802的其它元件使用。所获取的指令可以是具有例如从编译器1804所接收的软件预获取指令的那些。更进一步,前端1806可包含分配单元1818以重命名或分配由指令要使用的资源。分配单元1818例如可确定逻辑寄存器的并行使用,并且向不同物理寄存器指配每个并行使用。重新指配可促进包含使用的不同代码段的并行执行。更进一步,分配单元1818可分派指令以便由一个或多个执行单元1808执行。前端1806还可包含预获取器1822以执行已经被软件预获取过滤器1816允许的预获取请求。预获取请求可由高速缓存单元1810造成。尽管未示出,但预获取请求可首先被路由到执行单元1808以被执行,以执行高速缓存单元1810上的预获取。
[0127]处理器1808还可包含提交和引退单元1812,以确定何时所执行的指令可安全引退,并且它们的结果被写入到高速缓存单元1810或系统1800的其它部分。更进一步,提交和引退单元1812可执行当指令被提交时由指令所使用的资源的重新回收。
[0128]软件预获取过滤器1816和表1820可包含任何适合数量或种类的元件以执行预获取指令的跟踪。表1820可包含预获取指令的指定数量的条目。在一个实施例中,表1820可包含每个条目的字段以标识预获取指令或其关联的数据。例如,表1820可包含预获取指令的执行指令指针(EIP) AIP值可包含由处理器1802要执行的下一指令的地址。在另外实施例中,要被预获取到高速缓存单元1810的信息的给定集合可由要用于获得它的预获取指令唯一标识。在另一实施例中,表1820可包含每个条目的字段以标识已经丢弃预获取指令多少次的计数。在另外实施例中,软件预获取1816可限制在允许预获取重新执行以将信息重新加载到高速缓存单元1810中之前由相同EIP值标识的预获取指令要被丢弃的次数。在又一实施例中,表1820可包含每个条目的字段以标识由预获取指令寻求的信息先前是否被加载到高速缓存单元1810中。例如在先前指令访问高速缓存单元1810中的信息之后,或者如果先前分派了信息的预获取指令,可设置此类字段。在一个实施例中,如果表1820是一个条目的大小,则条目可用于过滤所有指令。
[0129]在操作中,可从任何适合源(诸如编译器1804)向处理器1802发布指令流。指令流可包含软件预获取指令。前端1806可接收指令流并解析它。解码器1814可将指令解码成机器特定指令以便进一步处理。在一个实施例中,软件预获取过滤器1816可确定指令流内的软件预获取指令是否有可能请求预获取已经在高速缓存单元1810内的信息。在另一实施例中,软件预获取过滤器1816可访问表以做出此类确定。在移除、消除、取消或以其它方式丢弃有可能请求已经在高速缓存单元1810内的信息的软件预获取指令之后,软件预获取过滤器1816可将剩余指令传到分配单元1818。允许的预获取指令可被传到预获取器1822,其可请求对要加载到高速缓存单元1810的所标识信息的预获取。此类信息可从高速缓存层级1824或其它适合的源加载。指令的资源可由分配单元1818重命名、分配和指配。指令然后可由执行单元1808执行,并且随后由提交和引退单元1812引退。当指令执行时,它们可访问高速缓存单元1810。如果数据存在于高速缓存单元1810中,则当它执行时,命中(hit)可产生,并且数据返回给指令。如果数据不存在,则命中可产生,并且数据可以从高速缓存层级1824或另一适合源中获取。有关所执行指令的信息可被存储或者更新在表1820中以便将来使用。
[0130]图19A、19B、19C、19D、19E和19F示出了按照本公开实施例的软件预获取过滤器1816的示例操作。
[0131]在图19A中,表1820可包含具有EIP值“456”、“789”和“987”的软件预获取指令的条目。可接收具有EIP值“123”的新软件预获取指令。软件预获取过滤器1816可在表1820中查找具有EIP值“123”的软件预获取指令。在图19A的示例中,在表1820中未发现“123”的条目。这可表明,软件预获取过滤器1816没有由新指令寻求的信息是否在高速缓存单元1810内的信息。在一个实施例中,软件预获取过滤器1816从而可允许执行指令并记录信息以便将来评估相同指令。相应地,当在表1820内未发现“123”的条目时,软件预获取过滤器1816可用EIP值“123”的条目填充表1820。如果表1820是满的,则可移除表1820中的最老条目。例如,可移除“456”的条目,并且具有EIP值“123”的指令可被存储在它的地方。在另一实施例中,软件预获取过滤器1816可允许执行预获取指令。条目的“丢弃计数器”值可被设置成0,并且条目的“高速缓存中的命中”值可被设置成“N/A”或O。
[0132]在图19B中,可完成指令的执行。此类指令可由EIP值“123”指定。在一个实施例中,软件预获取过滤器1816或处理器1802的另一部分可确定所执行的指令是否是软件预获取指令。此类确定例如可通过检查表1820的EIP值“123”的条目来做出。如果所执行的指令是软件预获取指令,则在另一实施例中,它的成功完成可指示,高速缓存单元1810包含由软件预获取指令获取的信息。相应地,在又一实施例中,软件预获取指令可被标记成在随后使用中指示软件预获取指令可被丢弃。否则,如果所执行的指令不是软件预获取指令,则表1820可保持在其当前状态。在图19B的示例中,软件预获取过滤器1816可检查表1820的EIP值“123”的条目,确定它存在,并且更新“高速缓冲中命中”字段以指示高速缓存1810中的命中有可能由随后访问信息产生。
[0133]在另一实施例中,可在软件预获取过滤器1816分派或允许软件预获取指令时,更新“高速缓存中命中”字段。然而,通过在指令已经成功执行之前标记它,可存在指令未成功完成的风险,并且从而,高速缓存单元1810可能不包含预获取的信息。
[0134]在图19C中,可接收软件预获取指令,其在表1820内,但可能不用于高速缓存单元1810内的数据。在一个实施例中,此类情形可在指令先前被遇到但高速缓存1810的内容尚未被逐出时出现。表1820可被更新,如下所述,以按条目的年龄或指令已经被丢弃的次数预测此类逐出。在另外实施例中,可执行预获取指令,而不是丢弃。
[0135]例如,具有EIP值“789”的指令可由软件预获取过滤器1816接收。“789”的条目可存在于表1820中,但“高速缓存中命中”的字段可能不可用,或者被设置成O。随后,软件预获取过滤器1816可分派软件预获取指令以便执行。更进一步,可发生类似于在图19B内描述的操作的软件预获取过滤器1816的随后操作,使得“高速缓存中命中”将随后设置用于“789”(如果它成功完成的话)。
[0136]在图19D中,可接收在表1820内的软件预获取指令,其将预获取可能在高速缓存单元1810内的数据。在一个实施例中,此类软件预获取指令有可能是不必要的,并且从而软件预获取过滤器1816可丢弃它。在另一实施例中,软件预获取过滤器1816可首先确定指令的相对年龄。相应地,软件预获取过滤器1816可递增条目的丢弃计数器。
[0137]例如,可接收具有EIP值“789”的指令。软件预获取过滤器1816可以确定,在表1820内存在“789”的条目,并且条目的“高速缓存中的命中”被设置成I。软件预获取过滤器1816可将条目的“丢弃计数器”字段从8递增到9。然后在实际丢弃指令之前可执行“丢弃计数器”的随后检查。此类检查例如可在图19E中示出。
[0138]在图19E中,可接收在表1820内的软件预获取指令,其将预获取可能在高速缓存单元1810内但可能已经被丢弃了阈值次数的数据。在一个实施例中,表1820中的此类软件预获取指令的信息可能是陈旧的、过时的或以其它方式受损的(compromised)。在另外实施例中,软件预获取过滤器1816可执行此类指令,而不是丢弃它。在另一另外实施例中,软件预获取过滤器1816可重新设置表1820中指令的“丢弃计数器”。
[0139]任何适合的阈值都可使用,并存储在表1820或软件预获取过滤器1816中。阈值可以是变量,并且可根据高速缓存单元1810的大小被按比例设置,或者根据高速缓存单元1810的大小以其它方式设置。更进一步,阈值可凭经验确定。阈值可根据一组指令是否被重复预获取进行调整。
[0140]例如,可接收具有EIP值“789”的软件预获取指令。软件预获取过滤器1816可以确定,在表1820中存在“789”的条目,并且其“高速缓存中命中”字段被设置成I。软件预获取过滤器1816可将条目的“丢弃计数器”字段从值8递增到值9ο丢弃计数器的阈值可包含值9。所以,软件预获取过滤器1816可以确定“丢弃计数器”字段的值不小于阈值。在一个实施例中,软件预获取过滤器1816可将“789”的“丢弃计数器”字段重新设置成O。在另一实施例中,软件预获取过滤器1816可分派软件预获取指令以便执行。
[0141]在图19F中,可接收在表1820内的软件预获取指令,其将预获取可能在高速缓存单元1810内且进一步可能未已经被丢弃了阈值次数的数据。在一个实施例中,此类软件预获取指令可能是不必要的。在另外实施例中,软件预获取过滤器1816可丢弃此类指令。软件预获取指令例如可通过写入到对处理器1802没有其它影响的模型特定寄存器或者通过不向执行流水线分派指令来丢弃。
[0142]例如,可接收具有EIP值“789”的软件预获取指令。软件预获取过滤器1816可以确定,在表1820内存在“789”的条目,以及其“高速缓存中命中”字段被设置成I。软件预获取过滤器1816可将条目的“丢弃计数器”字段从值8递增到值9 ο丢弃计数器的阈值可包含值10。所以,软件预获取过滤器1816可以确定“丢弃计数器”字段的值小于阈值。在一个实施例中,软件预获取过滤器1816可丢弃软件预获取指令。
[0143]图20是按照本公开实施例的用于过滤软件获取指令的方法2000的示例实施例的流程图。方法2000可示出例如由软件预获取过滤器1816、前端1806或处理器1802执行的操作。方法2000可开始于任何适合的点,并且可按任何适合的次序执行。在一个实施例中,方法2000可开始于2005。
[0144]在2000,可接收并解码指令。在2010,可确定指令是否是预获取指令。如果是,则方法2000可继续到2015,以确定是否过滤预获取指令。如果否,则方法2000可继续到2055并且照常执行指令。
[0145]在2015,可以确定,在记录当前遇到的预获取指令的软件预获取指令表内是否发现指令的EIP值。EIP值的存在可指示,由预获取指令寻求的信息已经在高速缓存内。如果发现EIP值,则方法2000可继续到2025,以继续评估是否过滤软件预获取指令。如果未发现EIP值,则方法2000可继续到2020以最终执行指令。
[0146]在2020,可在表中分配指令的条目。条目可由指令的EIP值索引。指令的“丢弃计数器”字段可被设置成O,因为指令尚未被丢弃。在一个实施例中,“高速缓存命中”字段对于指令可被设置成“N/A”或0,因为不知道指令是否将使信息加载到高速缓存中。在另一实施例中,“高速缓存命中”字段可被设置成“I”,假定信息将被加载到高速缓存中。方法2000可继续到2050以执行指令。
[0147]在2025,可以确定指令的表中的条目是否包含被设置成I的“高速缓存命中”字段值。此类值可指示,由预获取指令寻求的信息可能已经在高速缓存内。如果设置了“高速缓存命中”字段,则方法2000可继续到2030 ο如果未设置“高速缓存命中”字段,则方法2000可继续到2050以执行预获取指令。
[0148]在2030,可递增表中条目的丢弃计数器。在2035,可以确定指令是否已经被丢弃了如由丢弃计数器所指示的阈值次数。如果丢弃计数器达到规定阈值,则表的信息可能已经过时。如果阈值已经达到,则方法2000可继续到2040,在此丢弃计数器被重新设置。方法2000然后可继续到2050以执行预获取指令。如果阈值尚未达到,则由预获取指令寻求的信息有可能在高速缓存内,并且方法2000可继续到2045。
[0149]在2045,可以任何适合的方式丢弃软件预获取指令。在一个实施例中,方法2000可继续到2055。在另一个实施例中,方法2000可继续到2065。
[0150]在2050,可发布预获取指令以便执行。
[0151]在2055,可重新命名和分配用于执行指令的资源。在2060,指令可由处理器的执行单元执行。在2065,可以确定是否对于预获取指令成功执行指令。如果是,则预获取指令的结果在高速缓存内,并且有可能会可用于将来访问,而无需使用相同预获取指令。相应地,如果指令是用于预获取指令,则方法2000可继续到2070。否则,方法2000可继续到2075。
[0152]在2070,可更新表中预获取指令的“高速缓存命中”字段。
[0153]在2075,可提交指令。在2080,可以确定是否重复该方法。如果是,则方法2000可返回2005 ο否则,方法2000可终止。
[0154]方法2000可由任何适合的判据发起。更进一步,尽管方法2000描述了具体元件的操作,但方法2000可由任何适合的组合或类型的元件执行。例如,方法2000可由在图1-19中示出的元件实现,或由可操作以实现方法2000的任何其它系统实现。这样,方法2000的优选初始化点以及包括方法2000的元素的次序可取决于选取的实现。在一些实施例中,一些元素可选地可省略、重新组织、重复或组合。更进一步,方法2000的各种部分彼此并行部分执行或可完全执行。
[0155]本文公开的机制的实施例可以用硬件、软件、固件或此类实现方法的组合来实现。本公开的实施例可实现为在包括至少一个处理器、存储系统(包含易失性和非易失性存储器和/或存储元件)、至少一个输入装置和至少一个输出装置的可编程系统上执行的计算机程序或程序代码。
[0156]程序代码可应用于输入指令以执行本文描述的功能并生成输出信息。输出信息可以以已知方式应用于一个或多个输出装置。为了此申请的目的,处理系统可包含具有处理器的任何系统,处理器诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
[0157]程序代码可用高级面向过程或面向对象的编程语言实现,以与处理系统通信。程序代码也可用汇编语言或机器语言实现,如果期望的话。实际上,本文描述的机制在范围上不限于任何具体编程语言。在任何情况下,语言都可以是编译语言或解释语言。
[0158]至少一个实施例的一个或多个方面可由存储在表示处理器内各种逻辑的机器可读介质上的代表性指令实现,这些指令当由机器读取时使机器制造执行本文描述的技术的逻辑。称为“IP核”的此类表示可存储在有形机器可读介质上,并供应给各种消费者或制造设施,以加载到实际上制造逻辑或处理器的制造机器中。
[0159]此类机器可读存储介质可包含但不限于由机器或装置制造或形成的物品的非易失性有形布置,包含存储媒体,诸如硬盘、任何其它类型盘,包含软盘、光盘、光盘只读存储器(CD-ROM)、压缩盘可重写(⑶-RW)以及磁光盘、半导体器件,诸如只读存储器(R0M)、随机存取存储器(RAM)(诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPR0M)、磁卡或光卡或适合于存储电子指令的任何其它类型媒体。
[0160]相应地,本公开的实施例还可包含含有指令或含有设计数据(诸如硬件描述语言(HDL),所述数据定义本文描述的结构、电路、设备、处理器和/或系统特征)的非易失性有形机器可读媒体。此类实施例也可称为程序产品。
[0161 ]在一些情况下,指令转换器可用于将指令从源指令集转换到目标指令集。例如,指令转换器可翻译(例如使用静态二进制翻译、动态二进制翻译,包含动态编译)、变形、仿真或以其它的方式将指令转换成要由核处理的一个或多个其它指令。指令转换器可用软件、硬件、固件或它们的组合实现。指令转换器可以在处理器上、在处理器外或者部分在处理器上且部分在处理器外。
[0162]从而,公开了用于执行根据至少一个实施例的一个或多个指令的技术。虽然已经在附图中描述和示出了某些示范实施例,但要理解到,此类实施例仅仅是说明性的并且不对其它实施例进行约束,并且此类实施例不限于所示出和描述的特定构造和布置,因为本领域技术人员在学习此公开时可想到各种其它修改。在诸如增长快速并且进一步进步不容易预见的此类的技术领域中,所公开的实施例在布置和细节上可容易地修改(如通过实现技术进步所促进的)而并不脱离本公开的原理或所附权利要求书的范围。
【主权项】
1.一种处理器,包括: 执行单元; 前端; 过滤器模块,包含: 第一逻辑,用于通过所述前端接收第一指令; 第二逻辑,用于确定先前是否执行了从高速缓存预获取第一信息的第一指令;以及第三逻辑,用于基于先前执行了从所述高速缓存预获取所述第一信息的所述第一指令的确定而丢弃所述第一指令。2.如权利要求1所述的处理器,其中所述过滤器模块进一步包含: 第四逻辑,用于接收预获取第二信息的第二指令; 第五逻辑,用于确定所述第二信息是否可能不在所述高速缓存中;以及第六逻辑,用于将所述第二指令路由到所述执行单元以便基于所述第二信息可能不在所述高速缓存中的确定而执行。3.如权利要求1所述的处理器,其中所述过滤器模块进一步包含: 第四逻辑,用于确定先前是否执行了从所述高速缓存预获取所述第一信息的所述第一指令,所述确定通过访问所述第一指令的高速缓存命中指示符来做出; 第五逻辑,用于基于所述第一指令的成功执行设置所述高速缓存命中指示符。4.如权利要求1所述的处理器,其中所述过滤器模块进一步包含: 第四逻辑,用于确定先前是否执行了从所述高速缓存预获取所述第一信息的所述第一指令,所述确定通过访问所述第一指令的高速缓存命中指示符来做出; 第五逻辑,用于基于所述第一指令的成功执行来设置所述高速缓存命中指示符;以及第六逻辑,用于进一步基于先前执行了从所述高速缓存预获取所述第一信息的所述第一指令的确定而丢弃所述第一指令。5.如权利要求1所述的处理器,其中所述过滤器模块进一步包含: 第四逻辑,用于接收预获取第二信息的第二指令; 第五逻辑,用于确定先前是否丢弃了阈值次数第二指令;以及 第六逻辑,用于将所述第二指令路由到所述执行单元以便基于先前丢弃了阈值次数所述第二指令的确定而执行。6.如权利要求5所述的处理器,其中所述过滤器模块进一步包含用于重新设置已经丢弃多少次所述第二指令的计数的第七逻辑。7.如权利要求1所述的处理器,其中所述过滤器模块进一步包含: 第四逻辑,用于接收预获取第二信息的第二指令; 第五逻辑,用于确定第二指令是否在被执行的预获取指令的表内; 第六逻辑,用于基于所述第二指令不在被执行的预获取指令的所述表内的确定而用所述第二指令填充所述表;以及 第七指令,用于将所述第二指令路由到所述执行单元以便基于所述第二指令不在被执行的预获取指令的所述表内的确定而执行。8.一种方法,包括:在处理器内: 接收第一指令; 确定先前是否执行了从高速缓存预获取第一信息的所述第一指令;以及基于先前执行了从所述高速缓存预获取所述第一信息的所述第一指令的确定而丢弃所述第一指令。9.如权利要求8所述的方法,进一步包括: 接收预获取第二信息的第二指令; 确定所述第二信息是否可能不在所述高速缓存中;以及 用于将所述第二指令路由到执行单元以便基于所述第二信息可能不在所述高速缓存中的确定而执行。10.如权利要求8所述的方法,进一步包括: 确定先前是否执行了从所述高速缓存预获取所述第一信息的所述第一指令,所述确定通过访问所述第一指令的高速缓存命中指示符来做出; 基于所述第一指令的成功执行设置所述高速缓存命中指示符。11.如权利要求8所述的方法,进一步包括: 确定先前是否执行了从所述高速缓存预获取所述第一信息的所述第一指令,所述确定通过访问所述第一指令的高速缓存命中指示符来做出; 基于所述第一指令的成功执行设置所述高速缓存命中指示符;以及进一步基于先前执行了从所述高速缓存预获取所述第一信息的所述第一指令的确定而丢弃所述第一指令。12.如权利要求8所述的方法,进一步包括: 接收预获取第二信息的第二指令; 确定先前是否丢弃了阈值次数第二指令;以及 将所述第二指令路由到执行单元以便基于先前丢弃了阈值次数所述第二指令的确定而执行。13.如权利要求8所述的方法,进一步包括: 接收预获取第二信息的第二指令; 确定第二指令是否在被执行的预获取指令的表内; 基于所述第二指令不在被执行的预获取指令的所述表内的确定而用所述第二指令填充所述表;以及 将所述第二指令路由到执行单元以便基于所述第二指令不在被执行的预获取指令的所述表内的确定而执行。14.一种系统,包括: 执行单元; 前端;以及 过滤器模块,包含: 第一逻辑,用于通过所述前端接收第一指令; 第二逻辑,用于确定先前是否执行了从高速缓存预获取第一信息的所述第一指令;以及 第三逻辑,用于基于先前执行了从所述高速缓存预获取所述第一信息的所述第一指令的确定而丢弃所述第一指令。15.如权利要求14所述的系统,其中所述过滤器模块进一步包含: 第四逻辑,用于接收预获取第二信息的第二指令; 第五逻辑,用于确定所述第二信息是否可能不在所述高速缓存中;以及第六逻辑,用于将所述第二指令路由到所述执行单元以便基于所述第二信息可能不在所述高速缓存中的确定而执行。16.如权利要求14所述的系统,其中所述过滤器模块进一步包含: 第四逻辑,用于确定先前是否执行了从所述高速缓存预获取所述第一信息的所述第一指令,所述确定通过访问所述第一指令的高速缓存命中指示符来做出; 第五逻辑,用于基于所述第一指令的成功执行设置所述高速缓存命中指示符。17.如权利要求14所述的系统,其中所述过滤器模块进一步包含: 第四逻辑,用于确定先前是否执行了从所述高速缓存预获取所述第一信息的所述第一指令,所述确定通过访问所述第一指令的高速缓存命中指示符来做出; 第五逻辑,用于基于所述第一指令的成功执行设置所述高速缓存命中指示符;以及第六逻辑,用于进一步基于先前执行了从所述高速缓存预获取所述第一信息的所述第一指令的确定而丢弃所述第一指令。18.如权利要求14所述的系统,其中所述过滤器模块进一步包含: 第四逻辑,用于接收预获取第二信息的第二指令; 第五逻辑,用于确定先前是否丢弃了阈值次数第二指令;以及 第六逻辑,用于将所述第二指令路由到所述执行单元以便基于先前丢弃了阈值次数所述第二指令的确定而执行。19.如权利要求18所述的系统,其中所述过滤器模块进一步包含用于重新设置已经丢弃多少次所述第二指令的计数的第七逻辑。20.如权利要求14所述的系统,其中所述过滤器模块进一步包含: 第四逻辑,用于接收预获取第二信息的第二指令; 第五逻辑,用于确定第二指令是否在被执行的预获取指令的表内; 第六逻辑,用于基于所述第二指令不在被执行的预获取指令的所述表内的确定而用所述第二指令填充所述表;以及 第七指令,用于将所述第二指令路由到所述执行单元以便基于所述第二指令不在被执行的预获取指令的所述表内的确定而执行。
【文档编号】G06F9/38GK106030520SQ201480076487
【公开日】2016年10月12日
【申请日】2014年3月27日
【发明人】L.马, Z.卞, Z.王, K.王
【申请人】英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1