CN105723329B - 用于识别多指令串无序处理器中引退的指令的方法和设备 - Google Patents

用于识别多指令串无序处理器中引退的指令的方法和设备 Download PDF

Info

Publication number
CN105723329B
CN105723329B CN201380081132.5A CN201380081132A CN105723329B CN 105723329 B CN105723329 B CN 105723329B CN 201380081132 A CN201380081132 A CN 201380081132A CN 105723329 B CN105723329 B CN 105723329B
Authority
CN
China
Prior art keywords
instruction
processor
value
instructions
oldest
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
CN201380081132.5A
Other languages
English (en)
Other versions
CN105723329A (zh
Inventor
N.科萨雷夫
S.Y.施什洛夫
J.艾尔
A.布图佐夫
B.A.巴巴延
A.克卢奇尼科夫
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 CN105723329A publication Critical patent/CN105723329A/zh
Application granted granted Critical
Publication of CN105723329B publication Critical patent/CN105723329B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

处理器包括无序执行指令流的第一逻辑,指令流被划分成多个指令串,指令流和每个指令串通过程序顺序(PO)排序。处理器也包括确定指令流中最老的未分派指令,并且将该最老的未分派指令的关联PO值存储为已执行指令指针的第二逻辑。指令流包括已分派和未分派指令。处理器也包括确定指令流中最近引退的指令并且将最近引退指令的关联PO值存储为引退指针的第三逻辑、在引退指针与已执行指令指针之间选择指令的范围的第四逻辑和将指令的范围识别为适宜于引退的第五逻辑。

Description

用于识别多指令串无序处理器中引退的指令的方法和设备
技术领域
本公开内容涉及在由处理器或其它处理逻辑执行时执行逻辑、数学或其它函数运算的处理逻辑、微处理器和关联指令集体系结构的领域。
背景技术
多处理器系统正变得越来越普通。多处理器系统的应用包括动态域分区一直到桌上型计算机计算。为利用多处理器系统,可将要执行的代码分隔成多个线程以便由各种处理实体执行。每个线程可相互并行执行。此外,为增大处理实体的效用,可采用无序执行。无序执行可在到此类指令的所需输入变得可用时执行指令。因此,在代码序列中后面出现的指令可在代码序列中更早出现的指令前执行。
发明内容
本公开提供一种处理器,包括电路以:乱序执行指令流,所述指令流被划分成多个指令串,所述指令流和每个指令串通过程序顺序PO值排序;确定所述指令流中最老的未分派指令,并且将所述最老的未分派指令的关联PO值存储为已执行指令指针,其中所述指令流包括已分派和未分派指令;确定所述指令流中最近引退的指令并且将所述最近引退的指令的关联PO值存储为引退指针;在所述引退指针与所述已执行指令指针之间选择指令的范围;以及将所述范围中的指令识别为适宜于引退。
本公开还提供一种方法,包括在处理器内执行以下操作:乱序执行指令流,所述指令流被划分成多个指令串,所述指令流和每个指令串通过程序顺序PO值排序;确定所述指令流中最老的未分派指令,并且将所述最老的未分派指令的关联PO值存储为已执行指令指针,其中所述指令流包括已分派和未分派指令;确定所述指令流中的最近引退的指令并且将所述最近引退的指令的关联PO值存储为引退指针;在所述引退指针与所述已执行指令指针之间选择指令的范围;以及将所述范围中的指令识别为适宜于引退。
本公开还提供一种系统,包括:被划分成多个指令串的指令流,所述指令流和每个指令串通过程序顺序PO值排序;接收并且乱序执行所述指令流的处理器,包括电路以:确定所述指令流中的最老的未分派指令,并且将所述最老的未分派指令的关联PO值存储为已执行指令指针,其中所述指令流包括已分派和未分派指令;确定所述指令流中的最近引退的指令并且将所述最近引退的指令的关联PO值存储为引退指针;在所述引退指针与所述已执行指令指针之间选择指令的范围;以及将所述范围中的指令识别为适宜于引退。
本公开还提供一种机器可读介质,其上已存储指令,所述指令在被执行时使得处理器执行上述方法。
本公开还提供一种装置,包括:用于在处理器内乱序执行指令流的部件,所述指令流被划分成多个指令串,所述指令流和每个指令串通过程序顺序PO值排序;用于在处理器内确定所述指令流中最老的未分派指令,并且将所述最老的未分派指令的关联PO值存储为已执行指令指针的部件,其中所述指令流包括已分派和未分派指令;用于在处理器内确定所述指令流中的最近引退的指令并且将所述最近引退的指令的关联PO值存储为引退指针的部件;用于在处理器内在所述引退指针与所述已执行指令指针之间选择指令的范围的部件;以及用于在处理器内将所述范围中的指令识别为适宜于引退的部件。
附图说明
实施例在附图的图形中通过示例而不是限制来示出:
图1A是根据本公开内容的实施例的利用可包括执行单元以执行指令的处理器形成的示范计算机系统的框图;
图1B示出根据本公开内容的实施例的数据处理系统;
图1C示出用于执行文本字符串比较运算的数据处理系统的其它实施例;
图2是根据本公开内容的实施例的可包括逻辑电路以执行指令的处理器的微体系结构的框图;
图3A示出根据本公开内容的实施例的在多媒体寄存器中的各种压缩数据类型表示;
图3B示出根据本公开内容的实施例的可能寄存器中数据存储格式;
图3C示出根据本公开内容的实施例的在多媒体寄存器中的各种带符号和无符号的压缩数据类型表示;
图3D示出运算编码格式的实施例;
图3E示出根据本公开内容的实施例的具有四十或更多个比特的另一可能运算编码格式;
图3F示出根据本公开内容的实施例的又另一可能运算编码格式;
图4A是根据本公开内容的实施例的示出有序流水线和寄存器重命名阶段、无序发布/执行流水线的框图;
图4B是根据本公开内容的实施例的示出有序体系结构核和要包括在处理器中的寄存器重命名逻辑、无序发布/执行逻辑的框图;
图5A是根据本公开内容的实施例的处理器的框图;
图5B是根据本公开内容的实施例的核的示例实现的框图;
图6是根据本公开内容的实施例的系统的框图;
图7是根据本公开内容的实施例的第二系统的框图;
图8是根据本公开内容的实施例的第三系统的框图;
图9是根据本公开内容的实施例的片上系统的框图;
图10示出根据本公开内容的实施例的包含可执行至少一个指令的中央处理单元和图形处理单元的处理器;
图11是根据本公开内容的实施例的示出IP核的开发的框图;
图12示出根据本公开内容的实施例的可如何由不同类型的处理器仿真第一类型的指令;
图13示出根据本公开内容的实施例的对比将源指令集中的二进制指令转换成目标指令集中二进制指令的软件指令转换器的使用的框图;
图14是根据本公开内容的实施例的处理器的指令集体系结构的框图;
图15是根据本公开内容的实施例的处理器的指令集体系结构的更详细框图;
图16是根据本公开内容的实施例的用于处理器的执行流水线的框图;
图17是根据本公开内容的实施例的用于利用处理器的电子装置的框图;
图18示出根据本公开内容的实施例的用于实现指令和逻辑以便识别适宜于引退的指令的示例系统;
图19A-19E示出根据本公开内容的实施例,用于实现指令和逻辑以用于识别适宜于引退的指令的系统的更详细视图;
图20示出根据本公开内容的实施例的用于在多个指令串(strand)中确定最小程序顺序值的硬件逻辑的示例;以及
图21是根据本公开内容的实施例的用于识别适宜于引退的指令的示例方法的图示。
具体实施方式
下面的描述描述了指令和处理逻辑,指令和处理逻辑用于识别适宜于在处理器、虚拟处理器、封装、计算机系统或其它处理设备内或与其关联的引退的指令。此类处理设备可包括无序处理器。此外,此类处理设备可包括多指令串无序处理器。在下面的描述中,为提供本公开内容的实施例的更透彻理解而陈述了许多特定的细节,如处理逻辑、处理器类型、微体系结构条件、事件、使能机制及诸如此类。然而,将由本领域的技术人员领会到,可无需此类特定细节来实施实施例。另外,一些公知的结构、电路及诸如此类未详细示出以避免不必要地混淆本公开内容的实施例。
虽然下面的实施例参照处理器描述,但其它实施例可适用于其它类型的集成电路和逻辑装置。本公开内容的实施例的类似技术和教导可应用到可从更高流水线吞吐量和改进性能中受益的其它类型的电路或半导体装置。本公开内容的实施例的教导适用于执行数据操纵的任何处理器或机器。然而,实施例不限于执行512比特、256比特、128比特、64比特、32比特或16比特数据运算的处理器或机器,并且可应用到其中可执行数据的操纵或管理的任何处理器和机器。另外,下面的描述提供示例,并且附图显示各种示例以便于说明。然而,这些示例不应以限制的意义解释,因为它们只是为了提供本公开内容的实施例的示例,而无意于提供本公开内容的实施例的所有可能实现的详尽列表。
虽然下面的示例描述在执行单元和逻辑电路的上下文中的指令处理和分发,但本公开内容的其它实施例可通过在机器可读有形媒体上存储的数据或指令来实现,其在由机器执行时,使得机器执行与本公开内容的至少一个实施例一致的功能。在一个实施例中,与本公开内容的实施例关联的功能体现在机器可执行指令中。指令可用于使得可编程具有指令的通用或专用处理器执行本公开内容的步骤。本公开内容的实施例可提供为计算机程序产品或软件,该产品或软件可包括机器或计算机可读媒体,其上存储有可用于编程计算机(或其它电子装置)以执行根据本公开内容的实施例的一个或更多个操作的指令。此外,本公开内容的实施例的步骤可能由包含用于执行所述步骤的固定功能逻辑的特定硬件组件执行,或者由编程的计算机组件和固定功能硬件组件的任何组合执行。
用于编程逻辑以执行本公开内容的实施例的指令可存储在系统中的存储器内,如DRAM、高速缓存、闪存存储器或其它存储装置。此外,指令可经网络或借助于其它计算机可读媒体分发。因此,机器可读介质可包括用于以由机器(例如,计算机)可读形式存储或传送信息的任何机制,但不限于软盘、光盘、压缩光盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除编程只读存储器(EPROM)、电擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存存储器或经电气、光、声或其它传播信号形式(例如,载波、红外信号、数字信号等),在信息通过因特网的传送中使用的有形机器可读存储装置。相应地,计算机可读媒体可包括适合用于存储或传送以由机器(例如计算机)可读形式的电子指令或信息的任何类型的有形机器可读媒体。
设计可经历从创建到模拟再到制造的各种阶段。表示设计的数据可以以多种方式表示设计。首先,由于在模拟中可能有用,可使用硬件描述语言或另一功能描述语言表示硬件。另外,可在设计过程的某些阶段产生具有逻辑和/或晶体管栅的电路级模型。此外,在某一阶段,设计可达到表示在硬件模型中的各种装置的物理布局的数据级。在其中使用一些半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于产生集成电路的掩膜的不同掩膜层上存在或不存在各种特征的数据。在设计的任何表示中,数据可存储在任何形式的机器可读媒体中。存储器或磁性存储装置或光学存储装置(诸如光盘)可以是机器可读媒体,存储经调制或以其它方式生成以传送信息的光波或电波传送的此类信息。在传送指示或携带代码或设计的电载波时,就执行电信号的复制、缓冲或重新传送而言,可制作新副本。因此,通信提供商或网络提供商可在有形机器可读媒体上至少暂时存储诸如编码到载波中的信息的物品,体现了本公开内容的实施例的技术。
在现代处理器中,多个不同执行单元可用于处理和执行多种代码和指令。一些指令可更快完成,而其它指令可占用多个时钟周期才完成。指令的吞吐量越快,处理器的总体性能就越佳。因此,使许多指令尽可能快地执行会是有利的。然而,可存在具有更大复杂性并且在执行时间和处理器资源方面要求更大的某些指令,如浮点指令、加载/存储操作、数据移动等。
因为在因特网、文本和多媒体应用中使用更多的计算机系统,所以随着时间的过去已引入了另外的处理器支持。在一个实施例中,指令集可与一个或更多个计算机体系结构关联,包括数据类型、指令、寄存器体系结构、寻址模式、存储器体系结构、中断和异常处理及外部输入和输出(I/O)。
在一个实施例中,指令集体系结构(ISA)可通过一个或更多个微体系结构来实现,其可包括用于实现一个或更多个指令集的处理器逻辑和电路。相应地,具有不同微体系结构的处理器可共享公共指令集的至少一部分。例如,Intel® Pentium 4处理器、Intel®Core™处理器和来自加利福尼亚州Sunnyvale的Advanced Micro Devices, Inc.的处理器实现几乎相同版本的x86指令集(其中更新版本已添加一些扩展),但具有不同内部设计。类似地,由其它处理器开发公司(诸如ARM Holdings, Ltd., MIPS或其被许可人或采用者)设计的处理器可共享公共指令集的至少一部分,但可包括不同处理器设计。例如,ISA的相同寄存器体系结构可使用新或公知的技术在不同微体系结构中以不同方式实现,包括专用物理寄存器、使用寄存器重命名机制(例如,使用寄存器别名表(RAT)、重新排序缓冲器(ROB)和引退寄存器文件)的一个或更多个动态分配的物理寄存器。在一个实施例中,寄存器可包括一个或更多个寄存器、寄存器体系结构、寄存器文件或可以或可以不由软件程序员寻址的其它寄存器集。
指令可包括一个或更多个指令格式。在一个实施例中,指令格式可指示各种字段(比特的数量、比特的位置等)以除其它之外,指定要执行的操作和操作数(将对所述操作数执行操作)。在又一实施例中,一些指令格式可还通过指令模板(或子格式)定义。例如,给定指令格式的指令模板可定义成具有指令格式的字段的不同子集,和/或定义成具有以不同方式解释的给定字段。在一个实施例中,指令可使用指令格式(并且,如果已定义,则在该指令格式的指令模板之一中)表述,并且指定或指示操作和操作数(将对所述操作数执行操作)。
科学、金融、自动向量化通用、RMS(识别、挖掘和合成)及视觉和多媒体应用(例如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频操纵)可要求对大量数据项执行相同操作。在一个实施例中,单指令多数据(SIMD)指使得处理器对多个数据元素执行操作的指令的类型。在逻辑上可将寄存器中的比特划分成多个固定大小或可变大小数据元素(每个元素表示单独的值)的SIMD技术可使用在处理器中。例如,在一个实施例中,可将64比特寄存器中的比特组织为包含4个单独16比特数据元素的源操作数,每个元素表示单独的16比特值。此类型的数据可称为“压缩”(packed)数据类型或“向量”数据类型,并且此数据类型的操作数可称为压缩数据操作数或向量操作数。在一个实施例中,压缩数据项或向量可以是在单个寄存器内存储的压缩数据元素的序列,并且压缩数据操作数或向量操作数可以是SIMD指令(或“压缩数据指令”或“向量指令”)的源或目的地操作数。在一个实施例中,SIMD指令指定要对两个源向量操作数执行的单向量操作,生成相同或不同大小的具有相同或不同数量的数据元素和以相同或不同的数据元素顺序的目的地向量操作数(也称为结果向量操作数)
例如由具有包括x86、MMX™、流播SIMD扩展(SSE)、SSE2、SSE3、SSE4.1及SSE4.2指令的指令集的Intel® Core™处理器,诸如ARM Cortex®系列处理器的具有包括向量浮点(VFP)和/或NEON指令的指令集的ARM处理器和诸如由中国科学院的计算技术研究所(ICT)开发的龙芯系列处理器的MIPS处理器采用的SIMD技术已经在应用性能方面实现了相当大的改进(Core™和MMX™是加利福尼亚州Santa Clara的Intel Corporation的注册商标或商标)。
在一个实施例中,目的地和源寄存器/数据可以是表示对应数据或操作的源和目的地的常规术语。在一些实施例中,它们可通过具有与描绘的那些名称或功能不同的名称或功能的寄存器、存储器或其它存储区域来实现。例如,在一个实施例中,“DEST1”可以是临时存储寄存器或其它存储区域,而“SRC1”和“SRC2”可以是第一和第二源存储寄存器或其它存储区域并以此类推。在其它实施例中,两个或更多个SRC和DEST存储区域可对应于相同存储区域(例如,SIMD寄存器)内的不同数据存储元素。在一个实施例中,例如通过将对第一和第二源数据执行的操作的结果回写到用作目的地寄存器的两个源寄存器中的一个,源寄存器之一也可充当目的地寄存器。
图1A是根据本公开内容的实施例的用可包括执行单元以执行指令的处理器形成的示范计算机系统的框图。根据本公开内容(例如本文描述的实施例中的),系统100可包括诸如处理器102的组件,以采用包括执行用于处理数据的算法的逻辑的执行单元。系统100可表示基于根据加利福尼亚州Santa Clara的Intel Corporation可用的PENTIUM® III、PENTIUM® 4、Xeon™、Itanium®、XScale™和/或StrongARM™微处理器的处理系统,尽管也可使用其它系统(包括具有其它微处理器的PC、工程工作站、置顶盒及诸如此类)。在一个实施例中,示例系统100可执行根据华盛顿Redmond的Microsoft Corporation可用的一版本的Windows™操作系统,尽管也可使用其它操作系统(例如,UNIX和Linux)、嵌入式软件和/或图形用户界面。因此,本公开内容的实施例不限于硬件电路和软件的任何特定组合。
实施例并不限于计算机系统。本公开内容的实施例可在诸如手持式装置和嵌入式应用的其它装置中使用。手持式装置的一些示例包括蜂窝电话、因特网协议装置、数码相机、个人数字助理(PDA)及手持式PC。嵌入式应用可包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、置顶盒、网络集线器、宽域网(WAN)交换机或可执行根据至少一个实施例的一个或更多个指令的任何其它系统。
根据本公开内容的一个实施例,计算机系统100可包括处理器102,处理器102可包括一个或更多个执行单元108以执行算法,来执行至少一个指令。一个实施例可在单处理器台式或服务器系统的上下文中描述,但其它实施例可包括在多处理器系统中。系统100可以是“集线器”系统体系结构的示例。系统100可包括用于处理数据信号的处理器102。处理器102可包括复杂指令集计算机(CISC)微处理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集的组合的处理器或例如诸如数字信号处理器的任何其它处理器装置。在一个实施例中,处理器102可耦合到处理器总线110,处理器总线110可在处理器102与系统100中的其它组件之间传送数据信号。系统100的元素可执行本领域技术人员公知的常规功能。
在一个实施例中,处理器102可包括一级(L1)内部高速缓冲存储器104。取决于体系结构,处理器102可具有单个内部高速缓存或多级内部高速缓存。在另一实施例中,高速缓冲存储器可驻留在处理器102的外部。取决于特定实现和需要,其它实施例也可包括内部和外部高速缓存两者的组合。寄存器文件106可在各种寄存器中存储不同类型的数据,包括整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器。
包括执行整数和浮点运算的逻辑的执行单元108也驻留在处理器102中。处理器102也可包括存储用于某些微指令的微代码的微代码(ucode) ROM。在一个实施例中,执行单元108可包括处理压缩指令集109的逻辑。通过在通用处理器102的指令集中包括压缩指令集109,连同执行指令的关联电路,可使用通用处理器102中的压缩数据,执行由许多多媒体应用使用的操作。因此,通过使用处理器的数据总线的完全宽度来对压缩数据执行操作,可加速和更有效地执行许多多媒体应用。这可消除跨处理器的数据总线传输更小数据单元来一次一个数据元素执行一个或更多个操作的需要。
执行单元108的实施例也可在微控制器、嵌入式处理器、图形装置、DSP和其它类型的逻辑电路中使用。系统100可包括存储器120。存储器120可实现为动态随机存取存储器(DRAM)装置、静态随机存取存储器(SRAM)装置、闪存存储器装置或其它存储器装置。存储器120可存储由处理器102可执行的数据信号表示的指令和/或数据。
系统逻辑芯片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。
系统100可使用系统I/O 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示出实现本公开内容的实施例的原理的数据处理系统140。本领域技术人员将容易领会,可利用备选处理系统操作本文中描述的实施例,而不会不脱离本公开内容的实施例的范围。
计算机系统140包括根据一个实施例的用于执行至少一个指令的处理核159。在一个实施例中,处理核159表示任何类型的体系结构的处理单元,包括但不限于CISC、RISC或VLIW类型体系结构。处理核159也可适合用于按一个或更多个加工技术的制造,并且通过在机器可读媒体上以充分的细节表示,可适合促进所述制造。
处理核159包括执行单元142、寄存器文件的集合145和解码器144。处理核159也可包括可能对理解本公开内容的实施例不是必需的另外电路(未示出)。执行单元142可执行由处理核159接收到的指令。除执行典型的处理器指令外,执行单元142可执行压缩指令集142中的指令以便对压缩数据格式执行操作。压缩指令集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。在一个实施例中,数据处理系统140也可包括用于经I/O总线153与各种I/O装置进行通信的I/O桥154。此类I/O装置可包括但不限于例如通用异步接收器/传送器(UART) 155、通用串行总线(USB) 156、蓝牙无线UART 157和I/O扩展接口158。
数据处理系统140的一个实施例提供可执行SIMD操作(包括文本字符串比较运算)的处理核159和移动、网络和/或无线通信。处理核159可编程具有各种音频、视频、成像和通信算法,包括诸如Walsh-Hadamard变换、快速傅立叶变换(FFT)、离散余弦变换(DCT)及其相应逆变换的离散变换、诸如颜色空间变换、视频编码运动估计或视频解码运动补偿的压缩/解压缩技术及诸如脉冲编码调制(PCM)的调制/解调(MODEM)功能。
图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也包括解码器165的至少部分以将指令集163的指令解码。处理核170也可包括可能对理解本公开内容的实施例不是必需的另外电路(未示出)。
在操作中,主处理器166执行数据处理指令的流,其控制一般类型的数据处理操作,包括与高速缓冲存储器167和输入/输出系统168的交互。嵌入在数据处理指令的流内的可以是SIMD协处理器指令。主处理器166的解码器165将这些SIMD指令辨别为应当由附连的SIMD协处理器161执行的类型。相应地,主处理器166在协处理器总线171上发布这些SIMD协处理器指令(或表示SIMD协处理器指令的控制信号)。从协处理器总线171,这些指令可由任何附连的SIMD协处理器接收。在此情况下,SIMD协处理器161可接受并执行预期用于它的任何接收到SIMD协处理器指令。
数据可经无线接口169接收以便通过SIMD协处理器指令处理。对于一个示例,语音通信可以以数字信号的形式接收,它可通过SIMD协处理器指令处理以再生成表示语音通信的数字音频样本。对于另一示例,压缩的音频和/或视频可以以数字比特流的形式接收,它可通过SIMD协处理器指令处理以再生成数字音频样本和/或运动视频帧。在处理核170的一个实施例中,主处理器166和SIMD协处理器161可集成到单个处理核170中,该处理核170包括执行单元162、寄存器文件的集合164和辨别包括根据一个实施例的指令的指令集163的指令的解码器165。
图2是根据本公开内容的实施例的用于可包括逻辑电路以执行指令的处理器200的微体系结构的框图。在一些实施例中,可实现根据一个实施例的指令以对具有大小为字节、字、双字、四字等及数据类型(诸如单和双精度整数和浮点数据类型)的数据元素进行操作。在一个实施例中,有序前端201可实现处理器200的一部分,该部分可获得要执行的指令,并且准备在处理器流水线中以后要使用的指令。前端201可包括几个单元。在一个实施例中,指令预获取器226从存储器获取指令,并且将指令馈送到指令解码器228,该解码器又解码或解释指令。例如,在一个实施例中,解码器将接收到的指令解码成机器可执行的称为“微指令”或“微操作”(也称为微op或uop)的一个或更多个操作。在其它实施例中,解码器将指令解析成可由微体系结构使用来执行根据一个实施例的操作的操作码和对应数据和控制字段。在一个实施例中,追踪高速缓存230可将解码的uop组装成uop队列234中的程序排序序列或踪迹(trace)以供执行。追踪高速缓存230遇到复杂指令时,微代码ROM 232提供完成操作所需的uop。
一些指令可转换成单个微-op,而其它指令需要几个微-op来完成全部操作。在一个实施例中,如果需要超过4个微-op来完成指令,则解码器228可访问微代码ROM 232以执行指令。在一个实施例中,可将指令解码成少量的微op以便在指令解码器228处理。在另一实施例中,如果需要多个微操作来完成操作,则可在微代码ROM 232内存储指令。追踪高速缓存230指代入口点可编程逻辑阵列(PLA)以确定正确的微指令指针,以便从微代码ROM232读取微代码序列以完成根据一个实施例的一个或更多个指令。在微代码ROM 232完成指令的微-op排序后,机器的前端201可恢复从追踪高速缓存230获取微-op。
无序执行引擎203可准备指令以供执行。无序执行逻辑具有多个缓冲器,以在指令沿流水线向下并且被调度用于执行时,平滑处理和重新排序指令的流以优化性能。分配器逻辑分配每个uop执行所需的机器缓冲器和资源。寄存器重命名逻辑将逻辑寄存器重命名到寄存器文件中的条目上。在指令调度器(存储器调度器、快速调度器202、慢速/普通浮点调度器204和简单浮点调度器206)前,分配器也为两个uop队列之一中的每个uop分配条目(一个用于存储器操作,一个用于非存储器操作)。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比特宽入口(entry),这是因为浮点指令一般具有宽度从64到128的操作数。
执行块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比特乘64比特浮点除法器以执行除法、平方根和余数微-op。在各种实施例中,可通过浮点硬件处理涉及浮点值的指令。在一个实施例中,可将ALU操作传递到高速ALU执行单元216、218。高速ALU 216、218可通过半个时钟周期的有效迟滞,执行快速操作。在一个实施例中,最复杂的整数操作去到慢速ALU 220,因为慢速ALU 220可包括用于长迟滞类型操作的整数执行硬件,如乘法器、位移、标记逻辑和分支处理。存储器加载/存储操作可由AGU 212、214执行。在一个实施例中,整数ALU 216、218、220可对64比特数据操作数执行整数操作。在其它实施例中,可实现ALU 216、218、220以支持包括16、32、128、256等多个数据比特大小。类似地,可实现浮点单元222、224以支持具有各种宽度的比特的操作数范围。在一个实施例中,浮点单元222、224可结合SIMD和多媒体指令,对128比特宽压缩数据操作数进行操作。
在一个实施例中,在父加载已经完成执行前,uop调度器202、204、206分派相关操作。由于在处理器200中可猜测性地调度和执行uop,因此,处理器200也可包括处理存储器丢失(miss)的逻辑。如果数据加载在数据高速缓存中丢失,则流水线中可存在执行中(inflight)相关操作,其为调度器留下了暂时不正确的数据。重放机制跟踪和重新执行使用不正确数据的指令。可能只需要重放相关操作,并且可允许完成独立操作。处理器的一个实施例的调度器和重放机制也可设计成捕捉用于文本字符串比较运算的指令序列。
术语“寄存器”可指代可用作识别操作数的部分指令的板载处理器存储位置。换而言之,寄存器可以是从处理器的外部可使用的那些寄存器(从程序员的角度而言)。然而,在一些实施例中,寄存器可能不限于特定类型的电路。相反,寄存器可存储数据,提供数据,并且执行本文中描述的功能。本文中描述的寄存器可由处理器内的电路使用任何数量的不同技术实现,如专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。在一个实施例中,整数寄存器存储32比特整数数据。一个实施例的寄存器文件也包含用于压缩数据的8个多媒体SIMD寄存器。对于下面的讨论,可将寄存器理解为设计成保持压缩数据的数据寄存器,如来自加利福尼亚州Santa Clara的IntelCorporation的以MMX技术实现的微处理器中的64比特宽MMX™寄存器(在一些实例下也称为“mm”寄存器)。在整数和浮点形式两者中可用的这些MMX寄存器可与伴随SIMD 和SSE指令的压缩数据元素一起操作。类似地,与SSE2、SSE3、SSE4或更高版本(一般称为“SSEx”)技术有关的128比特宽XMM寄存器可保持此类压缩数据操作数。在一个实施例中,在存储压缩数据和整数数据中,寄存器无需区分两种数据类型。在一个实施例中,整数和浮点可包含在相同寄存器文件或不同寄存器文件中。此外,在一个实施例中,浮点和整数数据可存储在不同寄存器或相同寄存器中。
在以下图形的示例中,可描述多个数据操作数。图3A示出根据本公开内容的实施例的在多媒体寄存器中的各种压缩数据类型表示。图3A示出用于128比特宽操作数的压缩字节310、压缩字320和压缩双字(dword) 330的数据类型。此示例的压缩字节格式310可以为128比特长,并且包含16个压缩字节数据元素。字节例如可定义为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比特长,并且包含8个压缩字数据元素。每个压缩字包含16比特的信息。图3A的压缩双字格式330可以为128比特长,并且包含4个压缩双字数据元素。每个压缩双字数据元素包含32比特的信息。压缩四字可以为128比特长,并且包含2个压缩四字数据元素。
图3B示出根据本公开内容的实施例的可能寄存器中的数据存储格式。每个压缩数据可包括多于一个独立数据元素。示出了三个压缩数据格式;压缩半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比特或更多。
图3C示出根据本公开内容的实施例的在多媒体寄存器中的各种带符号和无符号的压缩数据类型表示。无符号的压缩字节表示344示出在SIMD寄存器中的无符号的压缩字节的存储。每个字节数据元素的信息可存储在针对字节0的比特7到比特0、针对字节1的比特15到比特8、针对字节2的比特23到比特16及最后针对字节15的比特120到比特127。因此,在寄存器中可使用所有可用比特。此存储布置可增大处理器的存储效率。此外,利用访问的16个数据元素,现在可以并行方式对16个数据元素执行一个操作。带符号的压缩字节表示345示出带符号的压缩字节的存储。要注意的是,每个字节数据元素的第8比特可以是符号指示符。无符号的压缩字表示346示出在SIMD寄存器中可如何存储字7到字0。带符号的压缩字表示347可类似于无符号的压缩字寄存器中的表示346。要注意的是,每个字数据元素的第16比特可以是符号指示符。无符号的压缩双字表示348显示如何存储双字数据元素。带符号的压缩双字表示349可类似于无符号的压缩双字寄存器中的表示348。要注意的是,必需的符号比特可以是每个双字数据元素的第32比特。
图3D示出运算编码(操作码)的实施例。此外,格式360可包括寄存器/存储器操作数寻址模式,其与万维网(www)intel.com/design/litcentr上从加利福尼亚州圣克拉拉Intel Corporation可获得的“IA-32 Intel体系结构软件开发员手册第2卷:指令集参考”(IA-32 Intel Architecture Software Developer's Manual Volume 2: InstructionSet Reference)中描述的操作码格式的类型相对应。在一个实施例中,指令可通过字段361和362中的一个或更多个字段编码。可识别直到每指令两个操作数位置,包括直到两个源操作数标识符364和365。在一个实施例中,目的地操作数标识符366可与源操作数标识符364相同,而在其它实施例中,它们可不同。在另一实施例中,目的地操作数标识符366可与源操作数标识符365相同,而在其它实施例中,它们可不同。在一个实施例中,通过源操作数标识符364和365识别的源操作数之一可通过文本字符串比较运算的结果被改写,而在其它实施例中,标识符364对应于源寄存器元素,并且标识符365对应于目的地寄存器元素。在一个实施例中,操作数标识符364和365可识别32比特或64比特源和目的地操作数。
图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)存储器、寄存器接寄存器、寄存器接中间、寄存器到存储器寻址。
图3F示出根据本公开内容的实施例的又一可能运算编码(操作码)格式。64比特单指令多数据(SIMD)算术运算可通过协处理器数据处理(CDP)指令执行。运算编码(操作码)格式380描绘具有CDP操作码字段382和389的一个此类CDP指令。CDP指令的类型,对于另一实施例,运算可通过字段383、384、387和388的一个或更多个字段编码。可识别直到每指令三个操作数位置,包括直到两个源操作数标识符385、390和一个目的地操作数标识符386。协处理器的一个实施例可对8、16、32和64比特值进行操作。在一个实施例中,可对整数数据元素执行指令。在一些实施例中,可使用条件字段381,有条件执行指令。对于一些实施例,源数据大小可由字段383编码。在一些实施例中,可对SIMD字段进行零(Z)、负(N)、进位(C)和溢出(V)检测。对于一些指令,饱和的类型可由字段384编码。
图4A是根据本公开内容的实施例的示出有序流水线和寄存器重命名阶段、无序发布/执行流水线的框图。图4B是根据本公开内容的实施例的示出有序体系结构核和要包括在处理器中的寄存器重命名逻辑、无序发布/执行流水线的框图。图4A中的实线框示出有序流水线,而虚线框示出寄存器重命名、无序发布/执行流水线。类似地,图4B中的实线框示出有序体系结构逻辑,而虚线框示出寄存器重命名和无序发布/执行逻辑。
在图4A中,处理器流水线400可包括获取阶段402、长度解码阶段404、解码阶段406、分配阶段408、重命名阶段410、调度(也称为分派或发布)阶段412、寄存器读取/存储器读取阶段414、执行阶段416、回写/存储器写入阶段418、异常处理阶段422及提交阶段424。
在图4B中,箭头表示在两个或更多个单元之间的耦合,并且箭头的方向指示在那些单元之间数据流的方向。图4B显示处理器核490,包括耦合到执行引擎单元450的前端单元430,并且两者均可耦合到存储器单元470。
核490可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIM)核或混合或备选核类型。在一个实施例中,核490可以是专用核,诸如,例如网络或通信核、压缩引擎、图形核或诸如此类。
前端单元430可包括耦合到指令高速缓存单元434的分支预测单元432。指令高速缓存单元434可耦合到指令翻译后援缓冲器(TLB) 436。TLB 436可耦合到指令获取单元438,其耦合到解码单元440。解码单元440可将指令解码,并且生成作为输出的一个或更多个微操作、微代码入口点、微指令、其它指令或其它控制信号,它们可从原始指令解码或者以其它方式反映原始指令或者可从原始指令得到。解码器可使用各种不同机制实现。适合机制的示例包括但不限于查表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,指令高速缓存单元434可还耦合到存储器单元470中的2级(L2)高速缓存单元476。解码单元440可耦合到执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450可包括耦合到引退单元454和一个或更多个调度器单元456的集和的重命名/分配器单元452。调度器单元456表示任何数量的不同调度器,包括预留站、中央指令窗口等。调度器单元456可耦合到物理寄存器文件单元458。每个物理寄存器文件单元458表示一个或更多个物理寄存器文件,这些文件的不同文件存储一个或更多个不同数据类型,如标量整数、标量浮点、压缩整数、压缩浮点、向量整数、向量浮点、等,状态(例如,作为要执行的下一指令的地址的指令指针)等。物理寄存器文件单元458可由引退单元454重叠以示出其中可实现寄存器重命名和无序执行的各种方式(例如,使用一个或更多个重排序缓冲器和一个或更多个引退寄存器文件;使用一个或更多个将来文件、一个或更多个历史缓冲器和一个或更多个引退寄存器文件;使用寄存器映射和寄存器池等)。通常,体系结构寄存器可从处理器外部或者从程序员的角度而言是可见的。寄存器可能不限于任何已知特定类型的电路。各种不同类型的寄存器只要如本文中所述存储和提供数据,它们便是适合的。适合寄存器的示例包括但不限于专用物理寄存器、使用重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。引退单元454和物理寄存器文件单元458可耦合到执行集群460。执行集群460可包括一个或更多个执行 单元462的集合和一个或更多个存储器存取单元464的集合。执行单元462可执行各种操作(例如,移位、加法、减法、乘法),并且对各种类型的数据执行(例如,标量浮点、压缩整数、压缩浮点、向量整数、向量浮点)。虽然一些实施例可包括专用于特定功能或功能的集合的多个执行单元,但其它实施例可只包括一个执行单元或全部执行所有功能的多个执行单元。调度器单元456、物理寄存器文件单元458和执行集群460示为可能是多个,这是因为某些实施例为某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/压缩整数/压缩浮点/向量整数/向量浮点流水线和/或存储器存取流水线,每个流水线具有其自己的调度器单元、物理寄存器文件单元和/或执行集群 - 并且在单独的存储器存取流水线的情况下,可实现其中仅此流水线的执行集群具有存储器存取单元464的某些实施例)。还应理解的是,在使用单独流水线的情况下,一个或更多个这些流水线可以是无序发布/执行,并且其余的流水线是有序的。
存储器存取单元464的集合可耦合到存储器单元470,其可包括耦合到数据高速缓存单元474的数据TLB单元472,数据高速缓存单元474耦合到2级(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的MIPS Technologies, Inc.的MIPS指令集、加利福尼亚州Sunnyvale的ARM Holdings的ARM指令集(具有诸如NEON的可选另外扩展)。
应理解的是,核可以以多种方式支持多线程(执行两个或更多个并行的操作或线程的集合)。例如通过包括时间片多线程、同时多线程(其中,单个物理核提供用于物理核在同时进行多线程的每个线程的逻辑核)或其组合,可执行多线程支持。此类组合例如可包括时间片获取和解码及之后的同时多线程,如在Intel®超线程技术中一样。
虽然寄存器重命名可在无序执行的上下文中描述,但应理解的是,可在有序体系结构中使用寄存器重命名。虽然处理器的所示实施例也可包括单独的指令和数据高速缓存单元434/474及共享L2高速缓存单元476,但其它实施例可具有诸如例如1级(L1)内部高速缓存的用于指令和数据两者的单个内部高速缓存,或多个级的内部高速缓存。在一些实施例中,系统可包括内部高速缓存和可在核和/或处理器外的外部高速缓存的组合。在其它实施例中,所有高速缓存可在核和/或处理器的外部。
图5A是根据本公开内容的实施例的处理器500的框图。在一个实施例中,处理器500可包括多核处理器。处理器500可包括以通信方式耦合到一个或更多个核502的系统代理510。此外,核502和系统代理510可以通信方式耦合到一个或更多个高速缓存506。核502、系统代理510和高速缓存506可经一个或更多个存储器控制单元552以通信方式耦合。此外,核502、系统代理510和高速缓存506可经存储器控制单元552以通信方式耦合到图形模块560。
处理器500可包括用于将核502、系统代理510和高速缓存506及图形模块560互连的任何适合机制。在一个实施例中,处理器500可包括基于环形的互连单元508以将核502、系统代理510和高速缓存506及图形模块560互连。在其它实施例中,处理器500可包括用于将此类单元互连的任何数量的公知技术。基于环形的互连单元508可利用存储器控制单元552以促进互连。
处理器500可包括存储器层次结构,该层次结构包括核内的一个或更多个级的高速缓存、诸如高速缓存506的一个或更多个共享高速缓存单元或耦合到集成存储器控制器单元552的集合的外部存储器(未示出)。高速缓存506可包括任何适合的高速缓存。在一个实施例中,高速缓存506可包括诸如2级(L2)、3级(L3)、4级(L4)或其它级的高速缓存的一个或更多个中间级高速缓存、末级高速缓存(LLC)和/或其组合。
在各种实施例中,一个或更多个核502可执行多线程。系统代理510可包括用于协调和操作核502的组件。系统代理510例如可包括功率控制单元(PCU)。PCU可以是或者包括用于调节核502的功率状态所需的逻辑和组件。系统代理510可包括用于驱动一个或更多个外部连接的显示器或图形模块560的显示引擎512。系统代理510可包括用于针对图形的通信总线的接口514。在一个实施例中,接口514可通过PCI Express (PCIe)来实现。在其它的实施例中,接口514可通过PCI Express图形(PEG)来实现。系统代理510可包括直接媒体接口(DMI) 516。DMI 516可在计算机系统的母板或其它部分上的不同桥之间提供链路。系统代理510可包括用于提供PCIe链路到计算系统的其它元素的PCIe桥518。PCIe桥518可使用存储器控制器520和相干性逻辑522实现。
核502可以以任何适合的方式实现。核502可在体系结构和/或指令集方面是同构或异构的。在一个实施例中,一些核502可以是有序的,而其它核可以是无序的。在另一实施例中,两个或更多个核502可执行相同指令集,而其它核可只执行该指令集的子集或不同指令集。
处理器500可包括诸如可从加利福尼亚州Santa Clara的Intel Corporation获得的Core™ i3、i5、i7、2 Duo和Quad、Xeon™、Itanium™、XScale™或StrongARM™处理器等通用处理器。处理器500可从诸如ARM Holdings, Ltd、MIPS的另一公司提供。处理器500可以是专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器或诸如此类。处理器500可在一个或更多个芯片上实现。处理器500可以是使用诸如例如BiCMOS、COMS或NMOS的多个处理技术的任何技术的一个或更多个衬底的一部分,和/或可在衬底上实现。
在一个实施例中,高速缓存506的一个给定高速缓存可由核502的多个核共享。在另一实施例中,高速缓存506的一个给定高速缓存可专用于核502之一。高速缓存506到核502的指派可由高速缓存控制器或其它适合机制处理。通过实现给定高速缓存506的时间片,可由两个或更多个核502共享高速缓存506的一个给定高速缓存。
图形模块560可实现集成图形处理子系统。在一个实施例中,图形模块560可包括图形处理器。此外,图形模块560可包括媒体引擎565。媒体引擎565可提供媒体编码和视频解码。
图5B是根据本公开内容的实施例的核502的示例实现的框图。核502可包括以通信方式耦合到无序引擎580的前端570。核502可通过高速缓存层次结构503,以通信方式耦合到处理器500的其它部分。
前端570可以以任何适合的方式实现,例如,如上所述部分或完全由前端201实现。在一个实施例中,前端570可通过高速缓存层次结构503与处理器500的其它部分进行通信。在又一实施例中,前端570可从处理器500的部分获取指令,并且在指令传递到无序执行引擎580时准备处理器流水线中以后要使用的指令。
无序执行引擎580可以以任何适合的方式实现,例如,如上所述部分或完全通过无序执行引擎203来实现。无序执行引擎580可准备从前端570接收到的指令以供执行。无序执行引擎580可包括分配模块582。在一个实施例中,分配模块582可分配处理器500的资源或诸如寄存器或缓冲器的其它资源以执行给定指令。分配模块582可在调度器中进行分配,如存储器调度器、快速调度器或浮点调度器。此类调度器可在图5B中由资源调度器584表示。分配模块582可完全或部分通过结合图2描述的分配逻辑来实现。资源调度器584可基于给定资源的源的准备度和执行指令需要的执行资源的可用性,确定指令何时准备就绪以执行。资源调度器584可例如通过如上所述的调度器202、204、206来实现。资源调度器584可对一个或更多个资源调度指令的执行。在一个实施例中,此类资源可在核502的内部,并且例如可示出为资源586。在另一实施例中,此类资源可在核502的外部,并且例如可由高速缓存层次结构503访问。资源例如可包括存储器、高速缓存、寄存器文件或寄存器。核502内部的资源可由图5B中的资源586表示。在必需时,可例如通过高速缓存层次结构503,协调写入资源586或从中读取的值和处理器500的其它部分。在指令是指派的资源时,可将它们置于重新排序缓冲器588中。重新排序缓冲器588可在指令执行时跟踪指令,并且可基于处理器500的任何适合准则,选择性地将其执行重新排序。在一个实施例中,重新排序缓冲器588可识别可独立执行的指令或一系列指令。此类指令或一系列指令可与其它此类指令并行执行。核502中的并行执行可通过任何适合数量的单独执行块或虚拟处理器执行。在一个实施例中,给定核502内的多个虚拟处理器可访问诸如存储器、寄存器和高速缓存的共享资源。在其它实施例中,处理器500内的多个处理实体可访问共享资源。
高速缓存层次结构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的实例的协调。
图6-8可示出适合用于包括处理器500的示范系统,而图9可示出可包括一个或更多个核502的示范片上系统(SoC)。本领域中熟知的用于膝上型计算机、桌上型计算机、手持式PC、个人数字助理、工程工作站、服务器、网络装置、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、置顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式装置及各种其它电子装置的其它系统设计和实现也可以是适合的。通常,结合如本文中公开的处理器和/或其它执行逻辑的大量系统或电子装置一般可以是适合的。
图6示出根据本公开内容的实施例的系统600的框图。系统600可包括可耦合到图形存储器控制器集线器(GMCH) 620的一个或多个处理器610、615。另外的处理器615的可选性质在图6中通过虚线表示。
每个处理器610、615可以某一版本的处理器500。然而,应注意的是,集成图形逻辑和集成存储器控制单元可能在处理器610、615中不存在。图6示出GMCH 620可耦合到例如可以是动态随机存取存储器(DRAM)的存储器640。对于至少一个实施例,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。外部图形装置660可以包括是与另一外设装置670一起耦合到ICH 650的离散图形装置。
在其它实施例中,系统600中也可存在另外或不同的处理器。例如,另外的处理器610、615可包括可与处理器610相同的另外处理器、可与处理器610异构或不对称的另外处理器、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器。在包括体系结构特性、微体系结构特性、热消耗特性、功率消耗特性及诸如此类的品质指标谱(spectrum of metrics of merit)方面,在物理资源610、615之间可存在多种差别。这些差别可使它们有效地显现为在处理器610、615之间的不对称性和异构性。对于至少一个实施例,各种处理器610、615可驻留在相同管芯封装中。
图7示出根据本公开内容的实施例的第二系统700的框图。如图7中所示,多处理器系统700可包括点对点互连系统,并且可包括经点对点互连750耦合的第一处理器770和第二处理器780。处理器770和780的每个可以如一个或更多个处理器610,615一样,是某一版本的处理器500。
虽然图7可示出两个处理器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可各自经使用点对点接口电路776、794、786、798的单独P-P接口752、754与芯片集790交换信息。在一个实施例中,芯片集790也可经高性能图形接口739与高性能图形电路738交换信息。
共享高速缓存(未示出)可或包括在处理器中或两个处理器外,但仍经P-P互连与处理器连接,使得如果处理器被置于低功率模式中,则任一或两个处理器的本地高速缓存信息可存储在共享高速缓存中。
芯片集790可经接口796耦合到第一总线716。在一个实施例中,第一总线716可以是外设组件互连(PCI)总线,或诸如PCI Express总线或另一第三代I/O互连总线的总线,尽管本公开内容的范围并不受此限制。
如图7中所示,各种I/O装置714可连同将第一总线716耦合到第二总线720的总线桥718,耦合到第一总线716。在一个实施例中,第二总线720可以为低引脚数(LPC)总线。在一个实施例中,各种装置可耦合到第二总线720,例如包括键盘和/或鼠标722、通信装置727和诸如可包括指令/代码和数据730的磁盘驱动器或其它海量存储装置的存储单元728。此外,音频I/O 724可耦合到第二总线720。要注意的是,其它体系结构可以是可能的。例如,系统可实现多分支总线或其它此类体系结构,而不是图7的点对点体系结构。
图8示出根据本公开内容的实施例的第三系统800的框图。图7和8中的相同的元素使用相同的附图标记,并且已经从图8中省略了图7的某些方面以避免混淆图8的其它方面。
图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。
图9示出根据本公开内容的实施例的SoC 900的框图。图5中的类似元素使用相同的附图标记。此外,虚线框可表示有关更先进的SoC的可选特征。互连单元902可耦合到:应用处理器910,它可包括有一个或更多个核902 A-N的集合和共享高速缓存单元906;系统代理单元910;总线控制器单元916;集成存储器控制器单元914;一个或更多个媒体处理器920的集合,其可包括集成图形逻辑908、用于提供静态和/或视频摄像头功能性的图像处理器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核”的此类表示可存储在有形的机器可读介质(“磁带”)上,并且提供到各种客户或生产设施以加载到实际形成逻辑或处理器的制造机器中。例如,诸如由ARMHoldings, Ltd开发的Cortex™族处理器和中国科学院计算技术研究所(ICT)开发的龙芯IP核的IP核可许可或销售到各种客户或被许可人,如Texas Instruments、Qualcomm、Apple或Samsung,并且在由这些客户或被许可人生产的处理器中实现。
图11示出框图,其示出根据本公开内容的实施例的IP核的开发。存储装置1100可包括模拟软件1120和/或硬件或软件模型1110。在一个实施例中,表示IP核设计的数据可经存储器1140(例如,硬盘)、有线连接(例如,因特网)1150或无线连接1160提供到存储装置1100。由模拟工具和模型生成的IP核信息然后可传送到制造设施1165,在其中它可由第三方制造以执行根据至少一个实施例的至少一个指令。
在一些实施例中,一个或更多个指令可对应于第一类型或体系结构(例如,x86),并且在不同类型或体系结构(例如,ARM)的处理器上翻译或仿真。根据一个实施例,指令可因此在任何处理器或处理器类型上执行,包括ARM、x86、MIPS、GPU或其它处理器类型或体系结构。
图12示出根据本公开内容的实施例的可如何由不同类型的处理器仿真第一类型的指令。在图12中,程序1205包含可与根据一个实施例的指令执行相同或实质上相同功能的一些指令。然而,程序1205的指令可以是与处理器1215不同或不兼容的类型和/或格式,意味着程序1205中该类型的指令可能不能由处理器1215在本机执行。然而,在仿真逻辑1210的帮助下,可将程序1205的指令翻译成可由处理器1215在本机执行的指令。在一个实施例中,仿真逻辑可在硬件中体现。在另一实施例中,仿真逻辑可体现在有形机器可读介质中,其包含软件以将程序1205中该类型的指令翻译成由处理器1215在本机可执行的类型。在其它实施例中,仿真逻辑可以是固定功能或可编程硬件与在有形机器可读介质上存储的程序的组合。在一个实施例中,处理器包含仿真逻辑,而在其它实施例中,仿真逻辑存在于处理器的外部,并且可由第三方提供。在一个实施例中,处理器可通过执行在处理器中或与其关联的微代码或固件,加载在包含软件的体现在有形机器可读媒体中的仿真逻辑。
图13示出根据本公开内容的实施例的对比将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器的使用的框图。在所示实施例中,指令转换器可以是软件指令转换器,尽管指令转换器可在软件、固件、硬件或其各种组合中实现。图13示出可使用x86编译器1304对高级语言1302中的程序进行编译,以生成可由具有至少一个x86指令集核的处理器1316在本机执行的x86二进制代码1306。具有至少一个x86指令集核的处理器1316表示可通过兼容执行或以其它方式处理(1) Intel x86指令集核的指令集的实质部分或(2)定向为在具有至少一个x86指令集核的Intel处理器上运行的应用或其它软件的对象代码版本,与具有至少一个x86指令集核的Intel处理器执行实质上相同功能,以便与具有至少一个x86指令集核的Intel处理器实现实质上相同结果的任何处理器。x86编译器1304表示可操作来生成x86二进制代码1306(例如,对象代码)的编译器,其可通过或不通过另外的链路处理,在具有至少一个x86指令集核的处理器1316上执行。类似地,图13示出可使用备选指令集编译器1308对高级语言1302程序进行编译,以生成备选指令集二进制代码1310,其可由不具有至少一个x86指令集核的处理器1314(例如,具有执行加利福尼亚州Sunnyvale的MIPS Technologies的MIPS指令集,和/或执行加利福尼亚州Sunnyvale的ARM Holdings的ARM指令集的核的处理器)在本机执行。指令转换器1312可用于将x86二进制代码1306转换成可由不具有x86指令集核1314的处理器在本机执行的代码。此转换的代码可能与备选指令集二进制代码1310不同;然而,转换的代码将实现一般操作,并且由来自备选指令集的指令组成。因此,指令转换器1312表示通过仿真、模拟或任何其它过程,允许不具有x86指令集处理器或核的处理器或其它电子装置执行x86二进制代码1306的软件、固件、硬件或其组合。
图14是根据本公开内容的实施例的处理器的指令集体系结构1400的框图。指令集体系结构1400可包括任何适合数量或种类的组件。
例如,指令集体系结构1400可包括诸如一个或更多个核1406、1407和图形处理单元1415的处理实体。核1406、1407可通过任何适合的机制,如通过总线或高速缓存,以通信方式耦合到指令集体系结构1400的其余部分。在一个实施例中,核1406、1407可通过L2高速缓存控制1408以通信方式耦合,其可包括总线接口单元1409和L2高速缓存1410。核1406、1407和图形处理单元1415可以以通信方式相互耦合,并且通过互连1411耦合到指令集体系结构1400的剩余部分。在一个实施例中,图形处理单元1415可使用视频代码1420,视频代码定义其中将对特定视频信号进行编码和解码以便输出的方式。
指令集体系结构1400也可包括用于与电子装置或系统的其它部分对接或进行通信的任何数量或种类的接口、控制器或其它机制。此类机制可促进例如与外设、通信装置、其它处理器或存储器的交互。在图14的示例中,指令集体系结构1400可包括液晶显示器(LCD)视频接口1425、订户接口模块(SIM)接口1430、引导ROM接口1435、同步动态随机存取存储器(SDRAM)控制器1440、闪存控制器1445及串行外设接口(SPI)主控单元1450。LCD视频接口1425可提供例如来自GPU 1415的视频信号的输出,并且例如通过移动行业处理器接口(MIPI)1490或高清晰多媒体接口(HDMI) 1495提供到显示器。此类显示器例如可包括LCD。SIM接口1430可提供对或从SIM卡或装置的访问。SDRAM控制器1440可提供对或从诸如SDRAM芯片或模块的存储器的访问。闪存控制器1445可提供对或从诸如闪存存储器或RAM的其它实例的存储器的访问。SPI主控单元1450可提供对或从诸如蓝牙模块1470、高速3G调制解调器1475、全球定位系统模块1480或实现诸如802.11的通信标准的无线模块1485的通信模块的访问。
图15是根据本公开内容的实施例的实现指令集体系结构的处理器的指令体系结构1500的更详细的框图。指令体系结构1500可以是微体系结构。指令体系结构1500可实现指令集体系结构1400的一个或更多个方面。此外,指令体系结构1500可示出用于处理器内的指令的执行的模块和机制。
指令体系结构1500可包括以通信方式耦合到一个或更多个执行实体1565的存储器系统1540。此外,指令体系结构1500可可包括诸如以通信方式耦合到执行实体1565和存储器系统1540的单元1510的缓存和总线接口单元。在一个实施例中,指令到执行实体1565中的加载可通过执行的一个或更多个阶段来执行。此类阶段例如可包括指令预获取阶段1530、双指令解码阶段1550、寄存器重命名阶段1555、发布阶段1560及回写阶段1570。
在一个实施例中,存储器系统1540可包括已执行指令指针1580。已执行指令指针1580可存储值,该值识别在由多个指令串表示的线程内的无序发布阶段1560中的一批指令内的最老的未分派指令。已执行指令指针1580可在发布阶段1560中计算并且传播到加载单元。指令可存储在一批指令内。该批指令可在由多个指令串表示的线程内。最老的指令可对应于最小PO(程序顺序)值。PO可包括指令的唯一编号。PO可在将指令排序中用于确保代码的正确执行语义。PO可通过诸如评估指令中编码的PO的增量而不是绝对值的机制来重构。此类重构的PO可称为RPO。虽然本文中可引用PO,但此类PO可与RPO交换使用。指令串可包括相互依赖的数据的指令的序列。指令串可在编译时由二进制翻译器布置。执行指令串的硬件可根据各种指令的PO,按顺序执行给定指令串的指令。线程可包括多个指令串,使得不同指令串的指令可相互依赖。给定指令串的PO可以是指令串中尚未从发布阶段分派执行的最老的指令的PO。相应地,假定有多个指令串的线程,每个指令串包括通过PO排序的指令,已执行指令指针1580可存储在无序发布阶段1560中的线程的指令串之间的由最小号码示出的最老的PO。
在另一实施例中,存储器系统1540可包括引退指针1582。引退指针1582可存储值,该值识别最后引退指令的PO。引退指针1582例如可由引退单元454设置。如果没有指令已经引退,则引退指针1582可包括空值。
执行实体1565可包括任何适合数量和种类的机制,处理器可通过这些机制执行指令。在图15的示例中,执行实体1565可包括ALU/乘法单元(MUL) 1566、ALU 1567及浮点单元(FPU) 1568。在一个实施例中,此类实体可利用给定地址1569内包含的信息。与阶段1530、1550、1555、1560、1570组合的执行实体1565可共同形成执行单元。
单元1510可以以任何适合的方式实现。在一个实施例中,单元1510可执行高速缓存控制。在此类实施例中,单元1510可因此包括高速缓存1525。高速缓存1525可在另外的实施例中实现为具有任何适合大小的L2统一高速缓存,如0、128k、256k、512k、1M或2M字节的存储器。在另外的另一实施例中,高速缓存1525可在纠错码存储器中实现。在另一实施例中,单元1510可执行到处理器或电子装置的其它部分的总线对接。在此类实施例中,单元1510可因此包括用于通过互连、处理器内总线、处理器间总线或其它通信总线、端口或线路进行通信的总线接口单元1520。总线接口单元1520可提供对接以便例如执行用于为在执行实体1565与指令体系结构1500外部的系统的部分之间的数据的传送的存储器和输入/输出地址的生成。
为进一步促进其功能,总线接口单元1520可包括用于生成到处理器或电子装置的其它部分的中断和其它通信的中断控制和分发单元1511。在一个实施例中,总线接口单元1520可包括为多个处理核处理高速缓存接入和相干性的探听控制单元1512。在另外的实施例中,为提供此类功能性,探听控制单元1512可包括处理在不同高速缓存之间的信息交换的高速缓存到高速缓存传送单元。在另外的另一实施例中,探听控制单元1512可包括监视其它高速缓存(未示出)的相干性的一个或更多个探听过滤器1514,以便诸如单元1510的高速缓存控制器不必直接执行此类监视。单元1510可包括用于同步指令体系结构1500的动作的任何适合数量的计时器1515。此外,单元1510可包括AC端口1516。
存储器系统1540可包括用于针对指令体系结构1500的处理需要存储信息的任何适合数量和种类的机制。在一个实施例中,存储器系统1540可包括用于存储与写入存储器或寄存器或从中读回的指令有关的信息的加载存储单元1539。在另一实施例中,存储器系统1540可包括提供在物理与虚拟地址之间的地址值的查找的翻译后援缓冲器(TLB) 1545。在又另一实施例中,总线接口单元1520可包括用于促进对虚拟存储器的访问的存储器管理单元(MMU) 1544。在仍还有的又一实施例中,存储器系统1540可包括在实际需要执行指令前用于从存储器请求指令以便降低迟滞的预获取器1543。
执行指令的指令体系结构1500的操作可通过不同阶段来执行。例如,使用单元1510,指令预获取阶段1530可通过预获取器1543访问指令。检索的指令可存储在指令高速缓存1532中。预获取阶段1530可启用用于快速环路模式的选项1531,其中执行形成环路的一系列指令,环路是足够小的以在给定高速缓存内拟合。在一个实施例中,此类执行可无需从例如指令高速缓存1532访问另外的指令而执行。预获取哪些指令的确定例如可通过分支预测单元1535而做出,该单元可访问全局历史1536中执行的指示、目标地址1537的指示或返回栈1538的内容,以确定接下来将执行代码的哪个分支1557。因此,可能可预获取此类分支。如下所述,可通过操作的其它阶段产生分支1557。指令预获取阶段1530可提供指令及有关将来指令的任何预测到双指令解码阶段。
双指令解码阶段1550可将接收到的指令转翻译成基于微代码的可执行的指令。双指令解码阶段1550可每时钟周期同时将两个指令解码。此外,双指令解码阶段1550可将其结果传递到寄存器重命名阶段1555。另外,双指令解码阶段1550可从其解码和微代码的最终执行中确定任何结果分支。此类结果可输入到分支1557中。
寄存器重命名阶段1555可将对虚拟寄存器或其它资源的引用翻译成对物理寄存器或资源的引用。寄存器重命名阶段1555可在寄存器池1556中包括此类映射的指示。寄存器重命名阶段1555可改变接收到的指令,并且将结果发送到发布阶段1560。
发布阶段1560可发布或分派指令到执行实体1565。此类发布可以无序方式执行。在一个实施例中,多个指令可在被执行前在发布阶段1560保持。发布阶段1560可包括用于保持此类多个命令的指令队列1561。指令可由发布阶段1560基于任何可接受的准则(如用于给定指令的执行的资源的可用性或适合性)发布到特定处理实体1565。在一个实施例中,发布阶段1560可将指令队列1561内的指令重新排序,使得接收到的第一指令可能不是执行的第一指令。基于指令队列1561的排序,可提供另外的分支信息到分支1557。发布阶段1560可将指令传递到执行实体1565以供执行。
在执行时,回写阶段1570可将数据写入寄存器、队列或指令体系结构1500的其它结构中以便传递给定命令的完成。取决于发布阶段1560中布置的指令的顺序,回写阶段1570的操作可允许执行另外的指令。指令体系结构1500的执行可由跟踪单元1575监视或调试。
图16是根据本公开内容的实施例的用于处理器的执行流水线1600的框图。执行流水线1600可说明例如图15的指令体系结构1500的操作。
执行流水线1600可包括步骤或操作的任何适合的组合。在1605,可对接下来要执行的分支做出预测。在一个实施例中,此类预测可基于指令的以前执行及其结果。在1610,可将对应于执行的预测的分支的指令加载到指令高速缓存中。在1615,可获取指令高速缓存中的一个或更多个此类指令以供执行。在1620,可将已获取的指令解码成微代码或更特定的机器语言。在一个实施例中,可同时将多个指令解码。在1625,可重新指派对解码的指令内的寄存器或其它资源的引用。例如,可将对虚拟寄存器的引用替换为对对应的物理寄存器的引用。在1630,可将指令分派到队列以供执行。在1640,可执行指令。此类执行可以任何适合的方式执行。在1650,可将指令发布到适合的执行实体。其中执行指令的方式可取决于执行指令的特定实体。例如,在1655,ALU可执行算术函数。ALU可利用单个时钟周期用于其运算,以及两个移位器。在一个实施例中,可采用两个ALU,并且因此在1655可执行两个指令。在1660,可做出结果分支的确定。程序计数器可用于指定目的地,分支将达到所述目的地。可在单个时钟周期内执行1660。在1665,浮点算术可通过一个或更多个FPU执行。浮点运算可要求多个时钟周期执行,如2到10个周期。在1670,可执行乘法和除法运算。此类运算可在多个时钟周期中执行,如4个时钟周期。在1675,可执行到流水线1600的寄存器或其它部分的加载和存储操作。操作可包括加载和存储地址。此类操作可在4个时钟周期中执行。在1680,可通过1655-1675的结果操作的要求,执行回写操作。
图17是根据本公开内容的实施例的用于利用处理器1710的电子装置1700的框图。电子装置1700例如可包括笔记本、超级本、计算机、塔式服务器、机架服务器、刀片服务器、膝上型计算机、桌上型计算机、平板、移动装置、电话、嵌入式计算机或任何其它适合的电子装置。
电子装置1700可包括以通信方式耦合到任何适合数量或种类的组件、外设、模块或装置的处理器1710。此类耦合可通过任何适合种类的总线或接口来实现,如I2C总线、系统管理总线(SMBus)、低引脚计数(LPC)总线、SPI、高清晰音频(HDA)总线、串行高级技术附件(SATA)总线、USB总线(版本1、2、3)或通用异步接收器/传送器(UART)总线。
此类组件例如可包括显示器1724、触摸屏1725、触摸板1730、近场通信(NFC)单元1745、传感器集线器1740、热传感器1746、express芯片集(EC) 1735、可信平台模块(TPM)1738、BlOS/固件/闪存存储器1722、数字信号处理器1760、诸如固态磁盘(SSD)或硬盘驱动器(HDD)的驱动器1720、无线局域网(WLAN)单元1750、蓝牙单元1752、无线广域网(WWAN)单元1756、全球定位系统(GPS) 1755、诸如USB 3.0摄像头的摄像头1754、或例如以LPDDR3标准实现的低功率双倍数据率(LPDDR)存储器单元1715。这些组件每个可以以任何适合的方式实现。
此外,在各种实施例中,其它组件可通过上面讨论的组件以通信方式耦合到处理器1710。例如,加速计1741、环境光传感器(ALS) 1742、罗盘1743和陀螺仪1744可以以通信方式耦合到传感器集线器1740。热传感器1739、风扇1737、键盘1736和触摸板1730可以以通信方式耦合到EC 1735。扬声器1763、耳机1764和麦克风1765可以以通信方式耦合到音频单元1762,音频单元又可以通信方式耦合到DSP 1760。音频单元1762例如可包括音频编解码器和D类放大器。SIM卡1757可以以通信方式耦合到WWAN单元1756。诸如WLAN单元1750和蓝牙单元1752以及WWAN单元1756的组件可以以下一代规格(NGFF)实现。
本公开内容的实施例涉及用于识别适宜于引退的指令的指令和逻辑。图18示出根据本公开内容的实施例的用于实现指令和逻辑以用于识别适宜于引退的指令的示例系统1800。在一个实施例中,此类指令可适宜于无序处理器或处理实体内的引退。在另一实施例中,此类指令可适宜于多指令串无序处理器或处理实体内的引退。多指令串无序处理器可包括并行执行多个指令串的处理实体。此外,多指令串无序处理器可包括多个指令指针。线程的指令可按指令串编组。在一个实施例中,多指令串无序处理器可相对于其它指令串的指令,执行每个指令串的指令,以便获取,发布和脱离程序顺序执行指令。系统1800可示出此类处理器的元素,其可包括任何处理器核、逻辑处理器、处理器或其它处理实体,如在图1-17中示出的那些元素。
系统1800可包括处理指令流1802的发布阶段1560。指令流1802可包括任何适合数量或种类的指令串1804。每个指令串1804可包括数据相互依赖,通过PO排序的一系列指令。此外,每个指令串1804可通过例如循环或分叉操作与其它指令串相关。如上所述,PO可包括用于将指令排序的指令的唯一编号,以确保代码的正确执行语义。此外,系统1800可包括回写阶段1570。
在一个实施例中,系统1800可包括已执行指令指针1580。如上所述,已执行指令指针1580可存储识别指令流1802的最老的程序顺序PO的值。在另外的实施例中,已执行指令指针1580可存储在指令串1804中具有最老的PO的单独指令串1804的PO。
在另一实施例中,系统1800可包括引退指针1582。如上所述,引退指针1582可存储识别指令流1802的最后引退指令的PO的值。引退指针1582可在给定指令处理后的引退时设置。甚至在给定指令执行后,可延迟其引退,直至已解析与给定指令相关的所有数据相关性、分支、分叉或循环。此类条件可要求例如指令的再执行。
系统1800可以以任何适合方式识别适宜于引退的指令。在一个实施例中,系统1800可生成引退窗口1808以识别适宜于引退的指令。引退窗口1808可包括被识别为适宜于引退的指令的列表。引退窗口1808可通过任何适合机制生成,如通过回写阶段1570。在另外的实施例中,可通过对已执行指令1580的引用,生成引退窗口1808。在另外的另一实施例中,可通过对引退指令1582的引用,生成引退窗口1808。在各种实施例中,引退窗口1808可包括具有PO位于通过引退指针1582识别的指令的PO与通过已执行指令指针1580识别的指令的PO之间的指令。在没有指令已经引退的情况下,引退指针1582可包括空值。在此类情况下,引退窗口1808可包括前N个指令,其中,已执行指令指针1580指示指令流1802中的第N个指令(不必须是PO #N)。
如结合图19A-19E以更多细节讨论的一样,在指令流1802的PO排序中可存在间隙。在一个实施例中,引退窗口1808可包括不连续的PO值的范围。在另一实施例中,引退窗口可忽略在以后可要求分配、再执行、无序获取或其它使用的任何指令。相应地,引退窗口1808可包括可安全引退的已排序、非连续编号的指令。
已执行指令指针1580可以以任何适合的方式生成。在一个实施例中,系统1800可包括已执行指令指针生成模块1806以生成已执行指令指针1580。已执行指令生成模块1806可以以任何适合方式实现,以确定指令流1802中哪个指令是最老的未分派指令。例如,已执行指令指针生成模块1806可通过逻辑、硬件、代码或指令来实现。在一个实施例中,已执行指令指针生成模块1806可评估给定指令串1804的PO以确定已执行指令指针1580。给定指令串1804的PO可包括最老的未分派指令的PO。因此,每个指令串1804可存储或识别其PO值。
已执行指令指针1580可在任何适合的时间生成。在一个实施例中,已执行指令指针1580可在系统1800的每个执行周期生成。假定执行周期可导致另外的指令的分派,已执行指令指针生成模块1806可对每个执行周期生成已执行指令指针1580。对每个执行周期生成的已执行指令指针1580的刷新值的需要可通过已执行指令指针生成模块1806的硬件实现来实现,如图20中所示出的那个。
在操作中,系统1800可每执行周期生成已执行指令指针1580。因此,已执行指令指针1580可使指令串1804中的代码之间的最老的PO可用。此外,在引退指针时,最近引退指令的PO可存储在引退指针1582中。系统1800例如可利用回写阶段1570以识别具有在已执行指令指针1580与引退指针1582的PO之间的PO的指令。已识别的指令可包括在引退窗口1808中。然后,例如通过回写阶段1570的操作,由系统1800引退在引退窗口1808中的此类指令。
图19A-19E示出根据本公开内容的实施例的用于实现用于识别适宜引退的指令的的指令和逻辑系统1800的更详细视图。
在图19A中,示出了通过PO排序的一系列指令。每个指令被表示具有其相应的PO。此类一系列指令可包括指令流1802的那些指令。如图19A中所示出的,指令流1802的指令在PO方面可不是连续的。在PO编号中可存在间隙,因为各种编号可由编译器静态指派。假定指令可指定任何数量或种类的动态分支,如条件环路,编译器将不知道在执行指令时将肯定采用的控制路径。代码中未采用的分支可不执行。类似地,指令可利用静态未知次数的迭代指定环路。由于编译器事先不知道环路何时将终止,因此,编译器可分配用于环路的某个PO窗口。如果环路结束地早,则一些指令可不执行并且间隔可出现。
在有序处理的上下文中,可按从最低到最高PO的顺序线性执行指令流1802。然而,在系统1800的上下文内,可获取,发布和无序执行指令流1802。
在图19B中,指令流1802可示出为在适合数量的指令串1804A、1804B、1804C之间划分。在给定指令串1804内,可根据PO线性执行指令。
指令串1804A、1804B、1804C可包括相互依赖的数据。一旦用于给定指令串1804的数据相关性已实现,则给定指令串1804的执行可开始。例如,在指令串1804A中的指令#0执行后,指令串1804B可作为从指令串1804A的分叉开始执行。指令串1804A中指令#0的执行可实现指令串1804B的数据要求。在另一示例中,在指令串1804B中的指令#2执行后,指令串1804C可作为从指令串1804B的分叉开始执行。指令串1804B中指令#0的执行可实现指令串1804C的数据要求。
数据要求例如可包括寄存器中的名称相关性。名称相关性例如可包括阻止写入寄存器直到已经执行寄存器的所有更老的(更低PO)读取为止。此外,数据要求可包括寄存器中的数据和名称相关性。这些相关性例如可包括阻止存储器位置的加载和存储,直至对存储器位置已执行预测读取和写入。另外,数据要求可包括处理非精确异常或中断。此类处理例如可包括等待在更老的指令尚未更新寄存器或存储器状态时,或者在异常生成指令随后的指令已经更新寄存器或存储器状态时,造成异常的指令。此外,数据要求可包括控制相关性。这些相关性例如可包括在尚未解析指令的更老的分支条件时,保持更新寄存器或存储器的指令的执行。另外,数据要求可包括存储器一致性模型要求。这些要求例如可包括向其它处理实体显露的存储器操作。
在图19C中,示出了在执行的快照期间的指令串1804A、1804B、1804C。三个指令串1804A、1804B、1804可并行执行。在图19C中所示的特定时刻,系统1800当前可正评估来自每个1804A、1804B、1804的指令用于分派以用于执行。这些指令可包括来自指令串1804A的指令#10、来自指令串1804B的指令#9和来自指令串1804C的指令#6。指令#10、#9和#6可尚未分派。此外,每个指令串1804中比这些指令更新的指令也可尚未分派。这些未分派指令可包括来自指令串1804A的指令#13、来自指令串1804B的指令#14和来自指令串1804C的指令#12。其它指令可已经被分派。指令串1804A的指令#0可已经被分派、执行和引退。由于这是当前示例中唯一已引退的指令,因此,指令#0可通过引退指针1582识别。指令串1804A的指令#5、指令串1804B的指令#2、指令串1804B的指令#8和指令串1804C的指令#3可已经被分派但尚未引退。
在一个实施例中,系统1800可确定哪些已分派但尚未引退的指令(如果有)要引退。要引退的此类指令可称为引退的候选。在另外的实施例中,可通过生成的引退窗口1808执行确定哪些已分派但未引退的指令要引退。在当前示例中,引退窗口1808的生成可导致识别指令串1804A的指令#5、指令串1804B的指令#2和指令串1804C的指令#3要引退。在图19中示出的快照中,引退窗口1808可能未包括指令串1804B的指令#8,并且因此可能尚未识别用于引退的此指令。如上讨论的一样,引退窗口1808可包括在已执行指令指针1580与引退指针1582之间指令流1802的PO。
在图19D中,可示出已执行指令指针1580与引退指针1582的生成。生成的值可用于确定上面示出的结果。
已执行指令指针生成模块1806可设置已执行指令指针1580的值。在一个实施例中,已执行指令指针生成模块1806可评估每个指令串1804A、1804B、1804C的PO以确定最低PO。最低的此类PO可以是在指令流1802的所有未分派指令之间的最低PO。每个此类指令串的PO可包括指令串内的未分派指令的最低PO。每个指令串1804A、1804B、1804C可在例如寄存器或触发器中存储其PO。已执行指令指针生成模块1806可确定指令串1804A的指令#10、指令串1804B的指令#9或指令串1804C的指令#6中的哪个最低。由于最低的此类PO可能是指令串1804C的指令#6,因此,已执行指令指针生成模块1806可在已执行指令指针1580中存储值“6”。已执行指令指针生成模块1806可在紧接着之前图19C中所示快照的执行周期期间已执行此存储。
系统1800的任何适合部分可设置引退指针1582的值。在一个实施例中,回写阶段1570可已设置引退指针1582。引退指针1582可在最近的指令引退时已经设置。因此,回写阶段1570可在之前指令串1804A的指令#0引退时已向引退指针1582发布“0”。
在图19E中,考虑到已执行的指令指针1580和引退指针1582的值,回写阶段1570可生成引退窗口1808。为生成引退窗口1808,可评估指令流1802。引退指针1582可将指令#0识别为最近引退的指令。此外,已执行指令指针1580可将指令#6识别尚未被分派最老的指令。在一个实施例中,在指令#0与指令#6之间的指令的范围可因此被识别为适宜于引退。这些指令可包括指令#2、#3和#5。返回参照图19C,这三个指令示出为适宜于引退。
此外,指令串1804B的指令#8已被分派,但落到图19E中的引退窗口1808的范围外。因此,在图19C中,指令#8未示出为适宜于引退。
图20示出根据本公开内容的实施例的用于在多个指令串中确定最小PO值的硬件逻辑2000的示例。在一个实施例中,硬件逻辑2000可完全或部分实现已执行指令指针生成模块1806。硬件逻辑2000可通过任何适合数量、种类或类型的组件来实现。
在一个实施例中,硬件逻辑2000可通过节点2004的级联布置来实现。每个节点2004可输出两个输入的更小输入。节点2004的级联布置可接受来自任何适合机制的输入。在另一实施例中,节点2004的级联布置可接受来自存储机制的对应于要评估的每个指令串的输入。此类指令串例如可包括图18的指令串1804。可接受任何适合数量的指令串,并且因此可接受任何适合数量的输入。在又一实施例中,用于每个指令串的存储机制可包括触发器2002。每个指令串可在其触发器2002中存储其PO。
每个节点2004可以以任何适合的方式实现以输出两个输入的更小输入。在一个实施例中,节点2004可接受两个输入线ij。在另外的实施例中,节点2004可包括减法器2006以确定是i还是j更小。在另外又一实施例中,节点2004可包括复用器2008以选择i和j的更小者。节点2004可将i和j路由到减法器2006和复用器2008。减法器2006可在硬件中实现,并且可从j中减去i。此外,减法器2006可输出符号比特2010,其指示从j中减去i的结果是正数还是负数,由此指示i是小于还是大于j。节点2004可将符号比特2010路由到复用器2008的选择器。复用器2008可在硬件中实现,并且使用符号比特2010选择性地将ij的更小者路由到输出2012。输出2012可因此是ij的更小者的值。
可将输出2012传播到节点2004的另外的实例,直至已比较所有输入2002,从而已确定输入2002的最低输入为止。随后,可在已执行指令指针1580中存储输入2002的最低输入。
例如,输入2002可包括[2, 5, 6, 10, 25, 26, 47, 12, 90...9]的PO值。其它值也可包括但未示出。任何适合数量的输入2002均可包括在内。另外的输入2002可要求足以比较所有输入2002的另外等级的节点2004。
在级联节点的第一级,节点2004A可确定输入2002A(具有PO #2)小于输入2002B(具有PO #5),并且将结果#2路由到节点2004F。节点2004B可确定输入2002C(具有PO #6)小于输入2002D(具有PO #10),并且将结果#6路由到节点2004F。节点2004C可确定输入2002E(具有PO #25)小于输入2002F(具有PO #26),并且将结果#25路由到节点2004G。节点2004D可确定输入2002G(具有PO #47)大于输入2002H(具有PO #12),并且将结果#12路由到节点2004G。节点2004E可确定输入2002I(具有PO #90)大于输入2002J(具有PO #9),并且将结果#9路由到节点2004H。
在级联节点的第二级,节点2004F可确定来自节点2004A(具有PO #2)的输入小于来自节点2004B(具有PO #6)的输入,并且将结果#2路由到节点2004I。节点2004G可确定来自节点2004C(具有PO #25)的输入大于来自节点2004D(具有PO #12)的输入,并且将结果#12路由到节点2004I。节点2004H可确定来自未看见节点(具有PO #7)的输入小于来自节点2004E(具有PO #9)的输入,并且将结果#7路由到节点2004J。
在级联节点的第三级,节点2004I可确定来自节点2004F(具有PO #2)的输入小于来自节点2004G(具有PO #12)的输入,并且将结果#2路由到节点2004K。节点2004J可确定来自未看见节点(具有PO #11)的输入大于来自节点2004H(具有PO #7)的输入,并且将结果#7路由到节点2004K。
在级联节点的第四级,节点2004K可确定来自节点2004I(具有PO #2)的输入小于来自节点2004J(具有PO #7)的输入。结果可以是输入2002的最低PO,并且可在已执行指令指针1580中存储。
图21是根据本公开内容的实施例的用于识别适宜于引退的指令的示例方法2100的图示。在一个实施例中,可在多指令串无序处理器上识别用于引退的此类指令。
方法2100可在任何适合点开始,并且可以以任何适合的顺序执行。在一个实施例中,方法2100可在2105开始。在各种实施例中,可在多指令串无序处理器的执行期间执行方法2100。
在2105,可将要执行的排序的指令流划分成多个指令串。指令串可相互并行执行。指令串可相互具有相互依赖的数据,但可相对于彼此无序执行。此外,在每个指令串内,可有序执行指令。指令可包括用于排序目的的PO指示。
在2107,可执行处理步骤。此类步骤例如可包括处理器中获取、发布、分派或执行指令。可执行执行周期。可前移已执行指令指针。
在2110,可存储来自每个指令串的未分派指令的PO。在2115,可从所有指令串确定未分派指令的最低PO。未分派指令的最低PO可对应于指令串中最老的未分派指令。每个此类指令串可在例如触发器中存储未分派指令的对应最低PO。在一个实施例中,例如,通过读取作为到硬件逻辑中的输入的指令串的每个触发器,可确定最低PO。硬件逻辑可比较每个输入和其它输入,直至确定对应于未分派指令的最低PO的最小输入。
在2120,可在可访问设施或位置中存储未分派指令的最低PO。在一个实施例中,此值可存储在已执行指令指针中。
在2125,可存储最近引退指令的标识。此类标识可包括PO。在其引退时,可识别最近引退指令。在一个实施例中,PO可存储在引退指针中。如果没有指令已经引退,则可将引退指针设为空。
在2130,可确定引退窗口。在一个实施例中,引退窗口可定义为指令的范围,其在排序的指令流内,在通过引退指针中存储的PO识别的指令与在已执行指令指针中存储的PO之间。如果引退指针为空,指示没有指令已经引退,则引退窗口可包括指令流的第一元素或前面的元素(如果有),直至通过已执行指令指针中存储的PO识别的指令。在2135,可识别如应用到排序的指令流的引退窗口内的指令。在2140,可选择用于引退的这些已识别的指令,并且在一个实施例中,在2415,可执行用于这些已识别的指令的引退。
在2150,可更新引退窗口。最近引退指令的PO可存储在引退指针中。
在2165,可确定程序是否已完成操作。如果是,则在2170,方法2100可终止。否则,方法2100可重复方法2100的一个或更多个元素,如通过返回到2107。
方法2100可根据任何适合的准则启动。此外,虽然方法2100描述特定元素的操作,但方法2100可通过任何适合组合或类型的元素来执行。例如,方法2100可通过图1-20中示出的元素或用于实现方法2100的任何其它系统来实现。因此,用于方法2100的优选初始化点和包括方法2100的元素的顺序可取决于选择的实现。在一些实施例中,可选地忽略,重新组织,重复或组合一些元素。
本文中公开的机制的实施例可在硬件、软件、固件中实现,或者在此类实现方案的组合中实现。本公开内容的实施例可实施为在可编程系统上执行的计算机程序或程序代码,可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元素)、至少一个输入装置和至少一个输出装置。
程序代码可应用到输入指令以执行本文中描述的功能,并且生成输出信息。输出信息可以以熟知的方式应用到一个或多个输出装置。用于本申请的目的,处理系统可包括具有处理器的任何系统,诸如,例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以用面向过程或对象的高级编程语言来实现,以便与处理系统进行通信。程序代码也可以如果需要,用汇编或机器语言来实现。实际上,本文中描述的机制在范围上不限于任何特定编程语言。在任何情况下,语言均可以是编译或解释语言。
至少一个实施例的一个或更多个方面可由在表示处理器内各种逻辑的机器可读媒体上存储的代表性指令实现,指令在由机器读取时,使得机器制造逻辑以执行本文中描述技术。称为“IP核”的此类表示可存储在有形的机器可读媒体上,并且提供到各种客户或生产设施以加载到实际形成逻辑或处理器的制造机中。
此类机器可读存储媒体可包括但不限于通过机器或设备制造或形成的物品的非暂时性、有形布置,包括:存储媒体,如硬盘、包括软盘、光盘、光盘只读存储器(CD-ROM)、可重写光盘(CD-RW)和磁光盘的任何其它类型的盘;半导体装置,如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、可擦写可编程只读存储器(EPROM)、闪存存储器、电可擦写可编程只读存储器(EEEPROM)的随机存取存储器(RAM);磁卡或光卡;或适于存储电子指令的任何其它类型的媒体。
相应地,本公开内容的实施例也可包括非暂时性、有形机器可读媒体,其包含指令或者包含设计数据,如硬件描述语言(HDL),它定义本文中描述的结构、电路、设备、处理器和/或系统特征。此类实施例也可称为程序产品。
在一些情况下,指令转换器可用于将指令从源指令集转换到目标指令集。例如,指令转换器可将指令翻译(例如,使用静态二进制翻译、包括动态编译的动态二进制翻译)、变形、仿真或以其它方式转换成要由核处理的一个或更多个其它指令。指令转换器可在硬件、固件、软件或其组合中实现。指令转换器可在处理器上,在处理器外或者部分在处理器上,部分在处理器外。
因此,公开了根据至少一个实施例的用于执行一个或更多个指令的技术。虽然某些示范实施例已描述并在附图中示出,但要理解,此类实施例只是为了说明并且对其它实施例无限制,并且由于本领域的技术人员在研究此公开内容后可想起各种其它修改,因此,此类实施例并不限于所示出和所述的特定构造和布置。在诸如此技术领域的快速增长且进一步发展不易预测的技术领域中,本公开实施例可通过实现技术前进带来的便利而在布置和细节方面轻松做出改进,而不会脱离所述公开内容原理或随附权利要求书范围。

Claims (27)

1.一种处理器,包括电路以:
乱序执行指令流,所述指令流被划分成多个指令串,所述指令流和每个指令串通过程序顺序PO值排序;
确定所述指令流中最老的未分派指令,并且将所述最老的未分派指令的关联PO值存储为已执行指令指针,其中所述指令流包括已分派和未分派指令;
确定所述指令流中最近引退的指令并且将所述最近引退的指令的关联PO值存储为引退指针;
在所述引退指针与所述已执行指令指针之间选择指令的范围;以及
将所述范围中的指令识别为适宜于引退。
2.如权利要求1所述的处理器,其中确定所述指令流中的所述最老的未分派指令的所述电路包括电路以:
确定未分派指令的集合,所述集合的每个元素对应于来自每个指令串的最老的未分派指令;以及
从所述集合中确定最老的未分派指令。
3.如权利要求1所述的处理器,其中确定所述指令流中的所述最老的未分派指令的所述电路包括:
多个数据存储单元,每个数据存储单元保持来自每个指令串的最老的未分派指令的PO值;以及
以级联布置组织的多个判定节点,包括:
将来自所述多个数据存储单元的信息接受为初始输入的所述判定节点的第一级;以及
输出在所述指令流中最老的已分派指令的PO值的所述判定节点的末级;
其中每个判定节点将比较所述判定节点的输入值,并且输出所述输入值的最小值。
4.如权利要求3所述的处理器,其中每个判定节点包括:
减法器,输出从第二输入值减去第一输入值的符号比特;以及
复用器,以通信方式耦合到所述减法器并且基于所述符号比特,选择性地输出所述第一输入值或所述第二输入值。
5.如权利要求1所述的处理器,其中适宜于引退的指令的所述范围包括已经分派和执行的指令。
6.如权利要求1所述的处理器,其中所述指令流包括在指令的所述范围外的指令,其中所述范围外的所述指令未引退,已经分派并且已经执行。
7.如权利要求1所述的处理器,还包括电路以:
引退在指令的所述范围中的每个指令;以及
将在指令的所述范围中引退的最新指令的PO值存储为所述引退指针。
8.一种方法,包括在处理器内执行以下操作:
乱序执行指令流,所述指令流被划分成多个指令串,所述指令流和每个指令串通过程序顺序PO值排序;
确定所述指令流中最老的未分派指令,并且将所述最老的未分派指令的关联PO值存储为已执行指令指针,其中所述指令流包括已分派和未分派指令;
确定所述指令流中的最近引退的指令并且将所述最近引退的指令的关联PO值存储为引退指针;
在所述引退指针与所述已执行指令指针之间选择指令的范围;以及
将所述范围中的指令识别为适宜于引退。
9.如权利要求8所述的方法,其中确定所述指令流中的所述最老的未分派指令包括:
确定未分派指令的集合,所述集合的每个元素对应于来自每个指令串的最老的未分派指令;以及
从所述集合中确定最老的未分派指令。
10.如权利要求8所述的方法,其中确定所述指令流中的所述最老的未分派指令包括:
从数据存储位置将来自每个指令串的最老的未分派指令的PO值确定为到以级联布置组织的判定节点的第一级的输入;
在每个判定节点,比较所述判定节点的输入值,并且输出所述输入值的最小值;
在所述判定节点的末级,输出所述指令流中最老的已分派指令的PO值。
11.如权利要求10所述的方法,其中在每个判定节点比较所述判定节点的输入值并且输出所述输入值的最小值包括:
从第二输入值减去第一输入值以确定符号比特;以及
基于所述符号比特,选择性地输出所述第一输入值或所述第二输入值。
12.如权利要求8所述的方法,其中适宜于引退的指令的所述范围包括已经分派并且执行的指令。
13.如权利要求8所述的方法,其中所述指令流包括在指令的所述范围外的指令,其中所述范围外的所述指令未引退,已经分派并且已经执行。
14.一种系统,包括:
被划分成多个指令串的指令流,所述指令流和每个指令串通过程序顺序PO值排序;
接收并且乱序执行所述指令流的处理器,包括电路以:
确定所述指令流中的最老的未分派指令,并且将所述最老的未分派指令的关联PO值存储为已执行指令指针,其中所述指令流包括已分派和未分派指令;
确定所述指令流中的最近引退的指令并且将所述最近引退的指令的关联PO值存储为引退指针;
在所述引退指针与所述已执行指令指针之间选择指令的范围;以及
将所述范围中的指令识别为适宜于引退。
15.如权利要求14所述的系统,其中确定所述指令流中的所述最老的未分派指令的所述电路包括电路以:
确定未分派指令的集合,所述集合的每个元素对应于来自每个指令串的最老的未分派指令;以及
从所述集合中确定最老的未分派指令。
16.如权利要求14所述的系统,其中确定所述指令流中的所述最老的未分派指令的所述电路包括:
多个数据存储单元,每个数据存储单元保持来自每个指令串的最老的未分派指令的PO值;以及
以级联方式布置的多个判定节点,包括:
将来自所述多个数据存储单元的信息接受为初始输入的所述判定节点的第一级;以及
输出在所述指令流中最老的已分派指令的PO值的所述判定节点的末级;
其中每个判定节点将比较所述判定节点的输入值,并且输出来自所述输入值的最小值。
17.如权利要求16所述的系统,其中每个判定节点包括:
减法器,输出从第二输入值减去第一输入值的符号比特;以及
复用器,以通信方式耦合到所述减法器并且基于所述符号比特,选择性地输出所述第一输入值或所述第二输入值。
18.如权利要求14所述的系统,其中适宜于引退的指令的所述范围包括已经分派并且执行的指令。
19.如权利要求14所述的系统,其中所述指令流包括在指令的所述范围外的指令,其中所述范围外的所述指令未引退,已经分派并且已经执行。
20.如权利要求14所述的系统,其中所述处理器还包括电路以:
引退在指令的所述范围中的每个指令;以及
将在指令的所述范围中引退的最新指令的PO值存储为所述引退指针。
21.一种机器可读介质,其上已存储指令,所述指令在被执行时使得处理器执行根据权利要求8-13的任一项所述的方法。
22.一种装置,包括:
用于在处理器内乱序执行指令流的部件,所述指令流被划分成多个指令串,所述指令流和每个指令串通过程序顺序PO值排序;
用于在处理器内确定所述指令流中最老的未分派指令,并且将所述最老的未分派指令的关联PO值存储为已执行指令指针的部件,其中所述指令流包括已分派和未分派指令;
用于在处理器内确定所述指令流中的最近引退的指令并且将所述最近引退的指令的关联PO值存储为引退指针的部件;
用于在处理器内在所述引退指针与所述已执行指令指针之间选择指令的范围的部件;以及
用于在处理器内将所述范围中的指令识别为适宜于引退的部件。
23.如权利要求22所述的装置,其中确定所述指令流中的所述最老的未分派指令包括:
确定未分派指令的集合,所述集合的每个元素对应于来自每个指令串的最老的未分派指令;以及
从所述集合中确定最老的未分派指令。
24.如权利要求22所述的装置,其中确定所述指令流中的所述最老的未分派指令包括:
从数据存储位置将来自每个指令串的最老的未分派指令的PO值确定为到以级联布置组织的判定节点的第一级的输入;
在每个判定节点,比较所述判定节点的输入值,并且输出所述输入值的最小值;
在所述判定节点的末级,输出所述指令流中最老的已分派指令的PO值。
25.如权利要求24所述的装置,其中在每个判定节点比较所述判定节点的输入值并且输出所述输入值的最小值包括:
从第二输入值减去第一输入值以确定符号比特;以及
基于所述符号比特,选择性地输出所述第一输入值或所述第二输入值。
26.如权利要求22所述的装置,其中适宜于引退的指令的所述范围包括已经分派并且执行的指令。
27.如权利要求22所述的装置,其中所述指令流包括在指令的所述范围外的指令,其中所述范围外的所述指令未引退,已经分派并且已经执行。
CN201380081132.5A 2013-12-23 2013-12-23 用于识别多指令串无序处理器中引退的指令的方法和设备 Expired - Fee Related CN105723329B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IB2013/003083 WO2015097494A1 (en) 2013-12-23 2013-12-23 Instruction and logic for identifying instructions for retirement in a multi-strand out-of-order processor

Publications (2)

Publication Number Publication Date
CN105723329A CN105723329A (zh) 2016-06-29
CN105723329B true CN105723329B (zh) 2019-09-06

Family

ID=50389464

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380081132.5A Expired - Fee Related CN105723329B (zh) 2013-12-23 2013-12-23 用于识别多指令串无序处理器中引退的指令的方法和设备

Country Status (7)

Country Link
US (1) US10133582B2 (zh)
EP (1) EP3087473A1 (zh)
KR (1) KR101898791B1 (zh)
CN (1) CN105723329B (zh)
DE (1) DE112013007703T5 (zh)
RU (1) RU2644528C2 (zh)
WO (1) WO2015097494A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10241801B2 (en) 2016-12-23 2019-03-26 Intel Corporation Method and apparatus to create register windows for parallel iterations to achieve high performance in HW-SW codesigned loop accelerator
US10235171B2 (en) 2016-12-27 2019-03-19 Intel Corporation Method and apparatus to efficiently handle allocation of memory ordering buffers in a multi-strand out-of-order loop processor
US10241789B2 (en) 2016-12-27 2019-03-26 Intel Corporation Method to do control speculation on loads in a high performance strand-based loop accelerator
CN115629807B (zh) * 2022-10-31 2023-04-14 海光信息技术股份有限公司 多线程处理器的译码方法、处理器、芯片及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7685607B2 (en) * 2003-05-30 2010-03-23 Steven Frank General purpose embedded processor
CN102064836A (zh) * 2010-11-26 2011-05-18 哈尔滨工业大学深圳研究生院 一种数据比较单元及ldpc码校验节点运算电路

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5740393A (en) 1993-10-15 1998-04-14 Intel Corporation Instruction pointer limits in processor that performs speculative out-of-order instruction execution
US5903740A (en) 1996-07-24 1999-05-11 Advanced Micro Devices, Inc. Apparatus and method for retiring instructions in excess of the number of accessible write ports
US6721874B1 (en) * 2000-10-12 2004-04-13 International Business Machines Corporation Method and system for dynamically shared completion table supporting multiple threads in a processing system
US20020152259A1 (en) * 2001-04-14 2002-10-17 International Business Machines Corporation Pre-committing instruction sequences
JP4042364B2 (ja) * 2001-07-27 2008-02-06 日本電気株式会社 アドレス生成回路、選択判断回路
US20040054877A1 (en) * 2001-10-29 2004-03-18 Macy William W. Method and apparatus for shuffling data
US8307194B1 (en) * 2003-08-18 2012-11-06 Cray Inc. Relaxed memory consistency model
US7500087B2 (en) * 2004-03-09 2009-03-03 Intel Corporation Synchronization of parallel processes using speculative execution of synchronization instructions
US7278011B2 (en) * 2004-04-08 2007-10-02 International Business Machines Corporation Completion table configured to track a larger number of outstanding instructions without increasing the size of the completion table
US8694697B1 (en) * 2006-04-27 2014-04-08 Nvidia Corporation Rescindable instruction dispatcher
US8789060B1 (en) * 2007-12-27 2014-07-22 Cadence Design Systems, Inc. Deterministic, parallel execution with overlapping regions
US20100274972A1 (en) * 2008-11-24 2010-10-28 Boris Babayan Systems, methods, and apparatuses for parallel computing
US8909902B2 (en) 2008-11-24 2014-12-09 Intel Corporation Systems, methods, and apparatuses to decompose a sequential program into multiple threads, execute said threads, and reconstruct the sequential execution
US8074060B2 (en) * 2008-11-25 2011-12-06 Via Technologies, Inc. Out-of-order execution microprocessor that selectively initiates instruction retirement early
US9052890B2 (en) 2010-09-25 2015-06-09 Intel Corporation Execute at commit state update instructions, apparatus, methods, and systems
US9268575B2 (en) 2011-06-30 2016-02-23 Advanced Micro Devices, Inc. Flush operations in a processor
US9280352B2 (en) * 2011-11-30 2016-03-08 Apple Inc. Lookahead scanning and cracking of microcode instructions in a dispatch queue
CN102520903B (zh) * 2011-12-13 2014-07-23 中国科学院自动化研究所 支持定浮点可重构的长度可配置的向量最大/最小值网络
US9811340B2 (en) 2012-06-18 2017-11-07 Intel Corporation Method and apparatus for reconstructing real program order of instructions in multi-strand out-of-order processor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7685607B2 (en) * 2003-05-30 2010-03-23 Steven Frank General purpose embedded processor
CN102064836A (zh) * 2010-11-26 2011-05-18 哈尔滨工业大学深圳研究生院 一种数据比较单元及ldpc码校验节点运算电路

Also Published As

Publication number Publication date
KR20160073417A (ko) 2016-06-24
US10133582B2 (en) 2018-11-20
WO2015097494A1 (en) 2015-07-02
CN105723329A (zh) 2016-06-29
RU2644528C2 (ru) 2018-02-12
US20160314000A1 (en) 2016-10-27
EP3087473A1 (en) 2016-11-02
DE112013007703T5 (de) 2016-09-29
RU2016119815A (ru) 2017-11-28
KR101898791B1 (ko) 2018-09-13

Similar Documents

Publication Publication Date Title
CN108292215B (zh) 用于加载-索引和预取-聚集操作的指令和逻辑
CN108369511B (zh) 用于基于通道的跨步存储操作的指令和逻辑
CN108369516B (zh) 用于加载-索引和预取-分散操作的指令和逻辑
US10055256B2 (en) Instruction and logic for scheduling instructions
KR101923289B1 (ko) 스토어들을 소팅 및 리타이어링하기 위한 명령어와 로직
CN108351863A (zh) 用于可编程结构层级结构和高速缓存的指令和逻辑
CN105745630B (zh) 用于在集群宽执行机器中的存储器访问的指令和逻辑
CN108369513A (zh) 用于加载-索引-和-收集操作的指令和逻辑
CN108292229A (zh) 用于重新出现的相邻聚集的指令和逻辑
CN108351835A (zh) 用于高速缓存控制操作的指令和逻辑
TW201723817A (zh) 用於取得多重向量元素操作之指令及邏輯
CN108351784A (zh) 用于在乱序处理器中进行有序处理的指令和逻辑
CN107003839A (zh) 用于移位和乘法器的指令和逻辑
CN108369573A (zh) 用于设置多个向量元素的操作的指令和逻辑
CN108369518A (zh) 用于位字段寻址和插入的指令和逻辑
CN108292271B (zh) 用于向量置换的指令和逻辑
CN108351785A (zh) 用于部分减少操作的指令和逻辑
CN106575219A (zh) 针对用于处理运算的向量格式的指令和逻辑技术领域
CN108701101A (zh) 处理器系统管理中断事件的基于仲裁器的串行化
TW201732556A (zh) 用於集合運算之加速的硬體內容關聯之資料結構
CN107077421A (zh) 用于页表游走改变位的指令和逻辑
CN108369510A (zh) 用于以无序加载的置换的指令和逻辑
CN105723329B (zh) 用于识别多指令串无序处理器中引退的指令的方法和设备
CN108292218A (zh) 用于向量位字段压缩和扩展的指令和逻辑
KR20160113677A (ko) 다수의 스트랜드들로부터 명령어들을 디스패칭하기 위한 프로세서 로직 및 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into 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: 20190906

Termination date: 20191223

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