CN106030519A - 用于从多个股分派指令的处理器逻辑和方法 - Google Patents
用于从多个股分派指令的处理器逻辑和方法 Download PDFInfo
- Publication number
- CN106030519A CN106030519A CN201480076465.3A CN201480076465A CN106030519A CN 106030519 A CN106030519 A CN 106030519A CN 201480076465 A CN201480076465 A CN 201480076465A CN 106030519 A CN106030519 A CN 106030519A
- Authority
- CN
- China
- Prior art keywords
- instruction
- logic
- pending instruction
- processor
- port
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 69
- 239000011159 matrix material Substances 0.000 claims description 116
- 238000003860 storage Methods 0.000 claims description 51
- 230000013011 mating Effects 0.000 claims description 3
- 238000012545 processing Methods 0.000 description 72
- 238000010586 diagram Methods 0.000 description 63
- 230000006835 compression Effects 0.000 description 57
- 238000007906 compression Methods 0.000 description 57
- 101000700835 Homo sapiens Suppressor of SWI4 1 homolog Proteins 0.000 description 45
- 102100029338 Suppressor of SWI4 1 homolog Human genes 0.000 description 45
- 230000008569 process Effects 0.000 description 39
- 238000005516 engineering process Methods 0.000 description 29
- 230000006870 function Effects 0.000 description 23
- 230000007246 mechanism Effects 0.000 description 20
- 238000004891 communication Methods 0.000 description 19
- 239000000872 buffer Substances 0.000 description 17
- 230000000875 corresponding effect Effects 0.000 description 15
- 239000003795 chemical substances by application Substances 0.000 description 13
- 230000008901 benefit Effects 0.000 description 12
- 238000013461 design Methods 0.000 description 12
- 238000007667 floating Methods 0.000 description 12
- 238000009434 installation Methods 0.000 description 12
- 238000004458 analytical method Methods 0.000 description 11
- 238000004519 manufacturing process Methods 0.000 description 11
- 238000009826 distribution Methods 0.000 description 9
- 238000013519 translation Methods 0.000 description 7
- 230000002093 peripheral effect Effects 0.000 description 6
- 230000008707 rearrangement Effects 0.000 description 6
- 238000004088 simulation Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 241001269238 Data Species 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000005538 encapsulation Methods 0.000 description 3
- 238000012913 prioritisation Methods 0.000 description 3
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000003032 molecular docking Methods 0.000 description 2
- 229910052754 neon Inorganic materials 0.000 description 2
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001737 promoting effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 239000010752 BS 2869 Class D Substances 0.000 description 1
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 1
- 102000001332 SRC Human genes 0.000 description 1
- 108060006706 SRC Proteins 0.000 description 1
- 102100026150 Tyrosine-protein kinase Fgr Human genes 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 241000894007 species Species 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
Abstract
一种处理器包括用于执行下述操作的逻辑:获取指令流,所述指令流被划分为用于在一个或多个执行端口上加载的多个股;识别多个未决指令;确定哪些股有效;确定每个未决指令的程序次序;以及基于每个未决指令的程序次序以及每个股是否有效将未决指令与执行端口进行匹配。每个未决指令位于一个股的各自的头。
Description
技术领域
本公开涉及处理逻辑、微处理器和关联的指令集架构的领域,当由处理器或其它处理逻辑执行所述关联的指令集架构时,所述关联的指令集架构执行逻辑、数学或其它功能操作。
背景技术
多处理器系统正在变得越来越普遍。多处理器系统的应用包括动态域分割直至桌上型计算。为了利用多处理器系统,待执行的代码可被分成用于由各种处理实体执行的多个线程。每个线程可被彼此并行地执行。另外,为了增加处理实体的效用,可采用无序执行。当使这种指令的需要输入可用时,无序执行可执行指令。因此,可在较早出现在代码序列中的指令之前执行较晚出现在代码序列中的指令。
附图说明
在附图的图中作为例子而非限制示出实施例:
图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图示根据本公开的实施例的用于分派指令的示例性系统;
图19是根据本公开的实施例的指令调度单元的示例性实施例的图示;
图20是根据本公开的实施例的指令调度单元的另一图示;
图21是根据本公开的实施例的逻辑矩阵的示例性实施例和逻辑矩阵模块的示例性操作的图示;
图22图示根据本公开的实施例的修改的逻辑矩阵和矩阵操纵器的示例性操作;
图23图示根据本公开的实施例的另一修改的逻辑矩阵和另一矩阵操纵器的示例性操作;
图24图示根据本公开的实施例的又一矩阵操纵器的示例性操作;和
图25图示根据本公开的实施例的用于分派指令的方法的示例性实施例。
具体实施方式
下面的描述描述用于在处理器、虚拟处理器、封装、计算机系统或其它处理设备内或者结合处理器、虚拟处理器、封装、计算机系统或其它处理设备分派指令的指令和处理逻辑。这种处理设备可包括无序处理器。另外,这种处理设备可包括多股无序处理器。在下面的描述中,阐述许多特定细节(诸如,处理逻辑、处理器类型、微架构条件、事件、使能机构等)以便提供对本公开的实施例的更彻底的理解。然而,本领域技术人员将会领会,可在没有这种特定细节的情况下实践实施例。另外,一些公知结构、电路等未被详细地示出以避免不必要地使本公开的实施例模糊。
虽然参照处理器描述下面的实施例,但其它实施例适用于其它类型的集成电路和逻辑装置。本公开的实施例的类似技术和教导可被应用于可受益于更高的流水线吞吐量和提高的性能的其它类型的电路或半导体装置。本公开的实施例的教导适用于执行数据操纵的任何处理器或机器。然而,实施例不限于执行512位、256位、128位、64位、32位或16位数据运算的处理器或机器,并且可被应用于可执行数据的操纵或管理的任何处理器和机器。另外,下面的描述提供例子,并且附图为了说明的目的而示出各种例子。然而,这些例子不应该在限制性意义上被解释,因为它们仅意图提供本公开的实施例的例子,而非提供本公开的实施例的所有可能的实现方式的穷举列表。
虽然以下的例子描述在执行单元和逻辑电路的上下文中的指令处理和分发,但可通过存储在机器可读、有形介质上的数据或指令来完成本公开的其它实施例,当由机器执行所述数据或指令时,所述数据或指令使机器执行与本公开的至少一个实施例一致的功能。在一个实施例中,与本公开的实施例关联的功能被体现于机器可执行指令。所述指令可被用于使可被利用所述指令编程的通用或专用处理器执行本公开的步骤。本公开的实施例可被提供作为计算机程序产品或软件,所述计算机程序产品或软件可包括已存储有指令的机器或计算机可读介质,所述指令可被用于对计算机(或其它电子装置)进行编程以执行根据本公开的实施例的一个或多个操作。另外,本公开的实施例的步骤可由包含用于执行所述步骤的固定功能逻辑的特定硬件部件或由已编程计算机部件和固定功能硬件部件的任何组合执行。
用于对逻辑进行编程以执行本公开的实施例的指令可被存储在系统中的存储器(诸如,DRAM、高速缓存、闪存或其它存储器)内。另外,可经网络或通过其它计算机可读介质分发指令。因此,机器可读介质可包括用于存储或传送具有可由机器(例如,计算机)读取的形式的信息的任何机构,但不限于软盘、光盘、压缩盘、只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光学卡、闪存或者在经电、光学、听觉或其它形式的传播信号(例如,载波、红外信号、数字信号等)通过互联网的信息的传输中使用的有形、机器可读存储器。因此,计算机可读介质可包括适合存储或传送具有可由机器(例如,计算机)读取的形式的电子指令或信息的任何类型的有形机器可读介质。
设计可经过从创建到仿真到加工的各种阶段。代表设计的数据可按照许多方式代表设计。首先,可使用硬件描述语言或另一功能描述语言表示硬件,这可在模拟中有用。另外,可在设计过程的一些阶段生产具有逻辑和/或晶体管门的电路级模型。另外,在某个阶段,设计可达到代表硬件模型中的各种装置的物理放置的数据的水平。在其中使用一些半导体加工技术的情况下,代表硬件模型的数据可以是指定用于生产集成电路的掩模的不同掩模层上的各种特征的存在或不存在的数据。在设计的任何表示中,数据可被存储在任何形式的机器可读介质中。存储器或者磁存储器或光学存储器(诸如,盘)可以是用于存储经为了传送这种信息而调制或以其它方式生成的光波或电波传送的信息的机器可读介质。当传送指示或携带代码或设计的电载波时,就执行电信号的复制、缓冲或重新传送而言,可做出新的拷贝。因此,通信提供商或网络提供商可在有形、机器可读介质上至少暂时地存储体现本公开的实施例的技术的物品,诸如编码到载波中的信息。
在现代处理器中,许多不同执行单元可被用于处理和执行各种代码和指令。一些指令可较快地完成,而其它指令可花费许多时钟周期来完成。指令的吞吐量越快,处理器的总体性能越好。因此,使许多指令尽可能快地执行将会是有益的。然而,可存在具有较大复杂性并且在执行时间和处理器资源方面需要较多执行时间和处理器资源的某些指令,诸如浮点指令、加载/存储操作、数据移动等。
因为在互联网、文本和多媒体应用中使用更多的计算机系统,所以随着时间过去已引入附加的处理器支持。在一个实施例中,指令集可与一个或多个计算机架构(包括数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理以及外部输入和输出(I/O))关联。
在一个实施例中,指令集架构(ISA)可由一个或多个微架构实现,所述微架构可包括用于实现一个或多个指令集的处理器逻辑和电路。因此,具有不同微架构的处理器可共享共同指令集的至少一部分。例如,Intel® Pentium 4处理器、Intel® Core™处理器和来自Sunnyvale CA的Advanced
Micro Devices, Inc的处理器实现x86指令集的几乎相同的版本(具有已利用较新版本增加的一些扩展),但具有不同的内部设计。类似地,由其它处理器开发公司(诸如,ARM Holdings, Ltd.、MIPS或它们的执照持有者或采用者)设计的处理器可共享共同指令集的至少一部分,但可包括不同的处理器设计。例如,可使用新的或公知的技术在不同微架构中以不同方式实现ISA的相同的寄存器架构,包括专用物理寄存器、使用寄存器重新命名机构(例如,使用寄存器别名表(RAT)、重新排序缓冲器(ROB)和退出寄存器文件)的一个或多个动态地分配的物理寄存器。在一个实施例中,寄存器可包括一个或多个寄存器、寄存器架构、寄存器文件或可由软件程序员寻址或者不可由软件程序员寻址的其它寄存器集合。
指令可包括一种或多种指令格式。在一个实施例中,指令格式可指示各种字段(位的数量、位的位置等)以尤其指定将要执行的操作和将要对其执行该操作的操作数。在另一实施例中,一些指令格式可由指令模板(或子格式)进一步定义。例如,给定指令格式的指令模板可被定义为具有指令格式的字段的不同子集和/或被定义为具有以不同方式解释的给定字段。在一个实施例中,可使用指令格式(并且如果定义,则在该指令格式的一个指令模板中)表示指令,并且指定或指示操作和将要对其执行该操作的操作数。
科学应用、金融应用、自动向量化通用应用、RMS(识别、挖掘和合成)应用以及视觉和多媒体应用(例如,2D/3D图形、图像处理、视频压缩/解压、语音识别算法和音频操纵)可能需要对大量数据项执行相同的操作。在一个实施例中,单指令多数据(SIMD)指代使处理器对多个数据元素执行操作的一种类型的指令。SIMD技术可被用在处理器中,所述SIMD技术可在逻辑上将寄存器中的位划分成许多固定大小或可变大小数据元素,每个数据元素代表分离的值。例如,在一个实施例中,64位寄存器中的位可以被组织为包含四个分离的16位数据元素的源操作数,每个数据元素代表分离的16位值。这种类型的数据可被称为“压缩”数据类型或“向量”数据类型,并且这个数据类型的操作数可被称为压缩数据操作数或向量操作数。在一个实施例中,压缩数据项或向量可以是单个寄存器内存储的压缩数据元素的序列,并且压缩数据操作数或向量操作数可以是SIMD指令(或“压缩数据指令”或“向量指令”)的源操作数或目的操作数。在一个实施例中,SIMD指令指定对两个源向量操作数执行单个向量操作以生成相同或不同大小、具有相同或不同数量的数据元素以及具有相同或不同数据元素次序的目的向量操作数(也被称为结果向量操作数)。
SIMD技术(诸如由下面的处理器采用的SIMD技术:Intel® Core™处理器,具有包括x86、MMX™、流SIMD扩展(SSE)、SSE2、SSE3、SSE4.1和SSE4.2指令的指令集;ARM处理器,诸如具有包括向量浮点(VFP)和/或NEON指令的指令集的处理器的ARM Cortex®系列;和MIPS处理器,诸如由Chinese Academy of Sciences的Institute of Computing
Technology (ICT)开发的处理器的Loongson系列)已能够实现应用性能的显著提高(Core™和MMX™是Santa Clara, Calif.的Intel Corporation的注册商标或商标)。
在一个实施例中,目的和源寄存器/数据可以是用于代表对应数据或操作的源和目的的通用术语。在一些实施例中,它们可由寄存器、存储器或具有与描述的那些名称或功能不同的名称或功能的其它存储区域实现。例如,在一个实施例中,“DEST1”可以是临时存储寄存器或其它存储区域,而“SRC1”和“SRC2”可以是第一和第二源存储寄存器或其它存储区域等。在其它实施例中,SRC和DEST存储区域中的两个或更多个存储区域可对应于同一存储区域(例如,SIMD寄存器)内的不同数据存储元件。在一个实施例中,通过例如将对第一和第二源数据执行的操作的结果写回到用作目的寄存器的两个源寄存器之一,源寄存器之一也可用作目的寄存器。
图1A是根据本公开的实施例的用处理器形成的示例性计算机系统的方框图,所述处理器可包括用于执行指令的执行单元。根据本公开(诸如,在本文中描述的实施例中),系统100可包括诸如处理器102部件,处理器102采用执行单元,所述执行单元包括用于执行用于处理数据的算法的逻辑。系统100可代表基于可从Santa
Clara, California的Intel
Corporation商购获得的PENTIUM®
III、PENTIUM® 4、Xeon™、Itanium®、XScale™和/或StrongARM™微处理器的处理系统,但也可使用其它系统(包括具有其它微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,示例性系统100可执行可从Redmond, Washington的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可包括级1(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可使用专有集线器接口总线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,处理核159可适合于促进所述制造。
处理核159包括执行单元142、一组寄存器文件145和解码器144。处理核159还可包括对于理解本公开的实施例而言可能不必要的附加的电路(未示出)。执行单元142可执行由处理核159接收的指令。除了执行典型处理器指令之外,执行单元142还可执行用于对压缩数据格式执行操作的压缩指令集143中的指令。压缩指令集143可包括用于执行本公开的实施例的指令和其它压缩指令。执行单元142可通过内部总线而被耦合到寄存器文件145。寄存器文件145可代表用于存储信息(包括数据)的处理核159上的存储区域。如前所述,应该理解,该存储区域可存储可能不重要的压缩数据。执行单元142可被耦合到解码器144。解码器144可将由处理核159接收的指令解码成控制信号和/或微码入口点。响应于这些控制信号和/或微码入口点,执行单元142执行适当的操作。在一个实施例中,解码器可解释指令的操作码,所述操作码将会指示应该对在指令内指示的对应数据执行什么操作。
处理核159可与总线141耦合以与各种其它系统装置通信,所述各种其它系统装置可包括但不限于例如同步动态随机存取存储器(SDRAM)控制器146、静态随机存取存储器(SRAM)控制器147、突发闪存接口148、个人计算机存储卡国际协会(PCMCIA)/压缩闪存(CF)卡控制器149、液晶显示器(LCD)控制器150、直接存储器存取(DMA)控制器151和替代总线主控器接口152。在一个实施例中,数据处理系统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)及其各自的逆变换;压缩/解压技术,诸如颜色空间变换、视频编码运动估计或视频解码运动补偿;和调制/解调(MODEM)功能,诸如脉冲编码调制(PCM)。
图1C图示执行SIMD文本串比较操作的数据处理系统的其它实施例。在一个实施例中,数据处理系统160可包括主处理器166、SIMD协处理器161、高速缓存167和输入/输出系统168。输入/输出系统168可以可选地被耦合到无线接口169。SIMD协处理器161可执行包括根据一个实施例的指令的操作。在一个实施例中,处理核170可适合于一种或多种加工技术中的制造,并且通过在机器可读介质上足够详细地表示处理核170,处理核170可适合于促进包括处理核170的数据处理系统160的全部或一部分的制造。
在一个实施例中,SIMD协处理器161包括执行单元162和一组寄存器文件164。主处理器165的一个实施例包括解码器165以识别用于由执行单元162执行的指令集163的指令(包括根据一个实施例的指令)。在其它实施例中,SIMD协处理器161还包括用于对指令集163的指令进行解码的解码器165的至少一部分。处理核170还可包括对于理解本公开的实施例而言可能不必要的附加的电路(未示出)。
在操作中,主处理器166执行控制通常类型的数据处理操作(包括与高速缓存167和输入/输出系统168的交互)的数据处理指令的流。嵌入在数据处理指令的流内的可以是SIMD协处理器指令。主处理器166的解码器165将这些SIMD协处理器指令识别为具有应该由连接的SIMD协处理器161执行的类型。因此,主处理器166在协处理器总线166上发出这些SIMD协处理器指令(或代表SIMD协处理器指令的控制信号)。从协处理器总线166,这些指令可由任何连接的SIMD协处理器接收。在这种情况下,SIMD协处理器161可接受并且执行以它为目的的任何接收的SIMD协处理器指令。
可经无线接口169接收数据以便由SIMD协处理器指令处理。对于一个例子,可按照数字信号的形式接收语音通信,所述数字信号可由SIMD协处理器指令处理以重新生成代表语音通信的数字音频采样。对于另一例子,可按照数字比特流的形式接收压缩音频和/或视频,所述数字比特流可由SIMD协处理器指令处理以重新生成数字音频采样和/或运动视频帧。在处理核170的一个实施例中,主处理器166和SIMD协处理器161可被集成到单个处理核170中,所述单个处理核170包括执行单元162、一组寄存器文件164和用于识别指令集163的指令(包括根据一个实施例的指令)的解码器165。
图2是根据本公开的实施例的针对处理器200的微架构的方框图,所述处理器200可包括用于执行指令的逻辑电路。在一些实施例中,可实现根据一个实施例的指令以操作具有字节、字、双字、四倍字等的大小以及诸如单精度和双精度整数和浮点数据类型的数据类型的数据元素。在一个实施例中,按顺序前端201可实现处理器200的一部分,其可获取待执行指令并且准备所述指令以便稍后在处理器流水线中使用。前端201可包括几个单元。在一个实施例中,指令预取器226从存储器获取指令并且将指令馈送给指令解码器228,指令解码器228进而对指令进行解码或解释。例如,在一个实施例中,解码器将接收的指令解码成机器可执行的称为“微指令”或“微操作”(也被称为micro
op或uop)的一个或多个操作。在其它实施例中,解码器将指令解析成操作码和对应数据,并且控制可由微架构使用的字段以执行根据一个实施例的操作。在一个实施例中,踪迹高速缓存230可将解码的uop汇编成uop队列234中的程序有序序列或踪迹以用于执行。当踪迹高速缓存230遇到复杂指令时,微码ROM 232提供完成操作所需的uop。
一些指令可被转换成单个微操作,而其它指令需要几个微操作以完成全部操作。在一个实施例中,如果需要超过四个微操作来完成指令,则解码器228可访问微码ROM
232以执行该指令。在一个实施例中,指令可在指令解码器228被解码成用于处理的少量的micro
op。在另一实施例中,如果需要许多微操作来完成操作,则指令可被存储在微码ROM 232内。踪迹高速缓存230指代用于确定正确的微指令指针的入口点可编程逻辑阵列(PLA),所述微指令指针用于从微码ROM 232读取用于完成根据一个实施例的一个或多个指令的微码序列。在微码ROM
232结束对用于指令的微操作排序之后,机器的前端201可再继续从踪迹高速缓存230获取微操作。
无序执行引擎203可准备用于执行的指令。无序执行逻辑具有许多缓冲器以在指令沿着流水线前进并且被安排好执行时对指令流进行平滑和重新排序从而优化性能。分配器逻辑分配每个uop为了执行而需要的机器缓冲器和资源。寄存器重新命名逻辑将逻辑寄存器重新命名为寄存器文件中的条目。分配器还在指令调度器(存储器调度器、快速调度器202、慢速/一般浮点调度器204和简单浮点调度器206)前面为两个uop队列(用于存储操作的一个uop队列并且用于非存储操作的一个uop队列)中的一个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可被划分成两个不同的寄存器文件:用于数据的低阶三十二位的一个寄存器文件并且用于数据的高阶三十二位的第二寄存器文件。浮点寄存器文件210可包括128位宽条目,因为浮点指令通常具有从64位到128位宽度的操作数。
执行块211可包含执行单元212、214、216、218、220、222、224。执行单元212、214、216、218、220、222、224可执行指令。执行块211可包括寄存器文件208、210,寄存器文件208、210存储微指令需要执行的整数和浮点数据操作数值。在一个实施例中,处理器200可包括许多执行单元:地址生成单元(AGU) 212、AGU 214、快速ALU 216、快速ALU 218、慢速ALU 220、浮点ALU 222、浮点移动单元224。在另一实施例中,浮点执行块222、224可执行浮点、MMX、SIMD和SSE或其它操作。在又一实施例中,浮点ALU 222可包括用于执行除法、平方根和余数微操作的64位乘64位浮点除法器。在各种实施例中,可利用浮点硬件处理涉及浮点值的指令。在一个实施例中,ALU操作可被传送给高速ALU执行单元216、218。高速ALU 216、218可利用半时钟周期的有效延时执行快速操作。在一个实施例中,最复杂的整数操作前往慢速ALU 220,因为慢速ALU
220可包括用于长延时类型的操作的整数执行硬件,诸如乘法器、移位器、标记逻辑和分支处理。存储器加载/存储操作可由AGU
212、214执行。在一个实施例中,整数ALU 216、218、220可对64位数据操作数执行整数操作。在其它实施例中,可实现ALU
216、218、220以支持各种数据位大小(包括十六位、三十二位、128位、256位等)。类似地,可实现浮点单元222、224以支持具有各种宽度的位的一定范围的操作数。在一个实施例中,浮点单元222、224可结合SIMD和多媒体指令对128位宽压缩数据操作数进行操作。
在一个实施例中,uop调度器202、204、206在父加载已完成执行之前分派相关操作。因为可在处理器200中以推测方式安排和执行uop,所以处理器200还可包括用于处理存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则可在流水线中存在为调度器留下暂时错误数据的执行中的相关操作。重放机构跟踪并且重新执行使用错误数据的指令。仅相关操作可能需要被重放,并且独立操作可被允许完成。处理器的一个实施例的调度器和重放机构也可被设计为捕捉用于文本串比较操作的指令序列。
术语“寄存器”可指代可被用作用于识别操作数的指令的一部分的板上的处理器存储位置。换句话说,寄存器可以是可从处理器的外部(从程序员的角度)可用的那些寄存器。然而,在一些实施例中,寄存器可不局限于特定类型的电路。相反地,寄存器可存储数据,提
供数据,并且执行本文中描述的功能。本文中描述的寄存器可由处理器内的电路使用任何数量的不同技术(诸如,专用物理寄存器、使用寄存器重新命名的动态地分配的物理寄存器、专用物理寄存器和动态地分配的物理寄存器的组合等)实现。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器文件还包含用于压缩数据的八个多媒体SIMD寄存器。对于以下的讨论,寄存器可被理解为被设计为保存压缩数据的数据寄存器,诸如能够利用来自Santa Clara, California的Intel
Corporation的MMX技术实现的微处理器中的64位宽MMX™寄存器(在一些实例中,也被称为“mm”寄存器)。以整数和浮点二者形式可用的这些MMX寄存器可利用伴随SIMD和SSE指令的压缩数据元素而操作。类似地,与SSE2、SSE3、SSE4或以后(通常称为“SSEx”)的技术相关的128位宽XMM寄存器可保存这种压缩数据操作数。在一个实施例中,在存储压缩数据和整数数据时,寄存器不需要区分这两种数据类型。在一个实施例中,整数和浮点可被包含在相同寄存器文件或不同寄存器文件中。另外,在一个实施例中,浮点和整数数据可被存储在不同寄存器或相同寄存器中。
在下面的附图的例子中,可描述数据操作数的数量。图3A图示根据本公开的实施例的多媒体寄存器中的各种压缩数据类型表示。图3A图示针对128位宽操作数的压缩字节310、压缩字320和压缩双字(dword) 330的数据类型。这个例子的压缩字节格式310可以是128位长的,并且包含十六个压缩字节数据元素。字节可被例如定义为八位的数据。针对每个字节数据元素的信息可被存储在针对字节0的位7至位0、针对字节1的位15至位8、针对字节2的位23至位16中,并且最后被存储在针对字节15的位120至位127中。因此,可在寄存器中使用所有可用位。这种存储布置增加处理器的存储效率。同样,在访问十六个数据元素的情况下,现在可并行地对十六个数据元素执行一个操作。
通常,数据元素可包括与相同长度的其它数据元素一起存储在单个寄存器或存储位置的各条数据。在与SSEx技术相关的压缩数据序列中,存储在XMM寄存器中的数据元素的数量可以是128位除以个体数据元素的以位为单位的长度。类似地,在与MMX和SSE技术相关的压缩数据序列中,存储在MMX寄存器中的数据元素的数量可以是64位除以个体数据元素的以位为单位的长度。虽然图3A中图示的数据类型可以是128位长的,但本公开的实施例还可利用64位宽或其它大小的操作数操作。这个例子的压缩字格式320可以是128位长的,并且包含八个压缩字数据元素。每个压缩字包含十六位的信息。图3A的压缩双字格式330可以是128位长的,并且包含四个压缩双字数据元素。每个压缩双字数据元素包含三十二位的信息。压缩四倍字可以是128位长的,并且包含两个压缩四倍字数据元素。
图3B图示根据本公开的实施例的可能的寄存器内数据存储格式。每个压缩数据可包括超过一个独立数据元素。图示了三种压缩数据格式:压缩半341、压缩单342和压缩双343。压缩半341、压缩单342和压缩双343的一个实施例包含定点数据元素。对于另一实施例,压缩半341、压缩单342和压缩双343中的一个或多个可包含浮点数据元素。压缩半341的一个实施例可以是128位长的,包含八个16位数据元素。压缩单342的一个实施例可以是128位长的,并且包含四个32位数据元素。压缩双 343的一个实施例可以是128位长的,并且包含两个64位数据元素。将领会的是,这种压缩数据格式可进一步扩展至其它寄存器长度,例如,扩展至96位、160位、192位、224位、256位或更多位。
图3C图示根据本公开的实施例的多媒体寄存器中的各种有符号和无符号压缩数据类型表示。无符号压缩字节表示344图示SIMD寄存器中的无符号压缩字节的存储。针对每个字节数据元素的信息可被存储在针对字节0的位7至位0、针对字节1的位15至位8、针对字节2的位23至位16中,并且最后被存储在针对字节15的位120至位127中。因此,可在寄存器中使用所有可用位。这种存储布置可增加处理器的存储效率。同样,在访问十六个数据元素的情况下,现在可按照并行方式对十六个数据元素执行一个操作。有符号压缩字节表示345图示有符号压缩字节的存储。需要注意的是,每个字节数据元素的第八位可以是符号指示器。无符号压缩字表示346图示字七至字零可如何被存储在SIMD寄存器中。有符号压缩字表示347可类似于无符号压缩字寄存器内表示346。需要注意的是,每个字数据元素的第十六位可以是符号指示器。无符号压缩双字表示348示出双字数据元素被如何存储。有符号压缩双字表示349可类似于无符号压缩双字寄存器内表示348。需要注意的是,必要的符号位可以是每个双字数据元素的第三十二位。
图3D图示操作编码(操作码)的实施例。另外,格式360可包括与在可在万维网(www)上在intel.com/design/litcentr从Intel Corporation, Santa
Clara, CA获得的“IA-32
Intel Architecture Software Developer's Manual Volume 2: Instruction Set
Reference,”中描述的操作码格式的类型对应的寄存器/存储器操作数寻址模式。在一个实施例中,和指令可由字段361和362中的一个或多个编码。可识别每个指令的多达两个操作数位置,包括多达两个源操作数标识符364和365。在一个实施例中,目的操作数标识符366可与源操作数标识符364相同,而在其它实施例中,它们可以不同。在另一实施例中,目的操作数标识符366可与源操作数标识符365相同,而在其它实施例中,它们可以不同。在一个实施例中,由源操作数标识符364和365识别的源操作数之一可被文本串比较操作的结果重写,而在其它实施例中,标识符364对应于源寄存器元件并且标识符365对应于目的寄存器元件。在一个实施例中,操作数标识符364和365可识别32位或64位源操作数和目的操作数。
图3E图示根据本公开的实施例的具有四十或更多位的另一可能的操作编码(操作码)格式370。操作码格式370对应于操作码格式360,并且包括可选的前缀字节378。根据一个实施例的指令可由字段378、371和372中的一个或多个字段编码。每个指令的多达两个操作数位置可由源操作数标识符374和375以及由前缀字节378识别。在一个实施例中,前缀字节378可被用于识别32位或64位源操作数和目的操作数。在一个实施例中,目的操作数标识符376可与源操作数标识符374相同,而在其它实施例中,它们可以不同。对于另一实施例,目的操作数标识符376可与源操作数标识符375相同,而在其它实施例中,它们可以不同。在一个实施例中,指令对由操作数标识符374和375识别的一个或多个操作数进行操作,并且由操作数标识符374和375识别的一个或多个操作数可被该指令的结果重写,而在其它实施例中,由标识符374和375识别的操作数可被写到另一寄存器中的另一数据元素。操作码格式360和370允许由MOD字段363和373以及由可选的scale-index-base和位移字节部分地指定的寄存器到寄存器寻址、存储器到寄存器寻址、寄存器乘存储器寻址、寄存器乘寄存器寻址、寄存器乘立即寻址、寄存器到存储器寻址。
图3F图示根据本公开的实施例的又一可能的操作编码(操作码)格式。可通过协处理器数据处理(CDP)指令执行64位单指令多数据(SIMD)算术运算。操作编码(操作码)格式380描述具有CDP操作码字段382 an0064 389的一个这种CDP指令。对于另一实施例,CDP指令操作的类型可由字段383、384、387和388中的一个或多个字段编码。可识别每个指令的多达三个操作数位置,包括多达两个源操作数标识符385和390以及一个目的操作数标识符386。协处理器的一个实施例可操作八位、十六位、三十二位和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,处理器核490包括耦合到执行引擎单元450的前端单元430,并且前端单元430和执行引擎单元450都可被耦合到存储单元470。
核490可以是精减指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或者混合或替代核类型。在一个实施例中,核490可以是专用核,诸如例如网络或通信核、压缩引擎、图形核等。
前端单元430可包括分支预测单元432,分支预测单元432耦合到指令高速缓存单元434。指令高速缓存单元434可被耦合到指令快速重编址缓冲器(TLB) 436。TLB 436可被耦合到指令获取单元438,指令获取单元438被耦合到解码单元440。解码单元440可对指令进行解码,并且生成可从原始指令解码、可按照其它方式反映原始指令或可从原始指令获得的一个或多个微操作、微码入口点、微指令、其它指令或其它控制信号作为输出。可使用各种不同机构实现解码器。合适的机构的例子包括但不限于查找表、硬件实现方式、可编程逻辑阵列(PLA)、微码只读存储器(ROM)等。在一个实施例中,指令高速缓存单元434还可被耦合到存储单元470中的级2(L2)高速缓存单元476。解码单元440可被耦合到执行引擎单元450中的重新命名/分配器单元452。
执行引擎单元450可包括重新命名/分配器单元452,重新命名/分配器单元452耦合到退出单元454和一组的一个或多个调度器单元456。调度器单元456代表任何数量的不同调度器,包括预约站、中央指令窗口等。调度器单元456可被耦合到物理寄存器文件单元458。每个物理寄存器文件单元458代表一个或多个物理寄存器文件,不同的物理寄存器文件存储一个或多个不同数据类型,诸如标量整数、标量浮点、压缩整数、压缩浮点、向量整数、向量浮点等、状态(例如,作为将要被执行的下一个指令的地址的指令指针)等。物理寄存器文件单元458可与退出单元154交叠以图示其中可实现寄存器重新命名和无序执行的各种方式(例如,使用一个或多个重新排序缓冲器和一个或多个退出寄存器文件、使用一个或多个未来文件、一个或多个历史缓冲器和一个或多个退出寄存器文件;使用寄存器图和一批寄存器等)。通常,从处理器的外部或从程序员的角度,架构寄存器是可见的。寄存器可不局限于任何已知的特定类型的电路。各种不同类型的寄存器可以是合适的,只要它们如本文中所述地存储数据并且提供数据即可。合适的寄存器的例子包括但可能不局限于专用物理寄存器、使用寄存器重新命名的动态地分配的物理寄存器、专用物理寄存器和动态地分配的物理寄存器的组合等。退出单元454和物理寄存器文件单元458可被耦合到执行群集460。执行群集460可包括一组的一个或多个执行单元162和一组的一个或多个存储器访问单元464。执行单元462可对各种类型的数据(例如,标量浮点、压缩整数、压缩浮点、向量整数、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可包括专用于特定功能或功能集合的许多执行单元,但其它实施例可包括全都执行所有功能的仅一个执行单元或多个执行单元。调度器单元456、物理寄存器文件单元458和执行群集460被示出为可能是复数的,因为某些实施例创建用于某些类型的数据/操作的不同流水线(例如,标量整数流水线、标量浮点/压缩整数/压缩浮点/向量整数/向量浮点流水线和/或存储器访问流水线,每种流水线具有它们自己的调度器单元、物理寄存器文件单元和/或执行群集——并且在分离的存储器访问流水线的情况下,可实现其中仅这个流水线的执行群集具有存储器访问单元464的某些实施例)。还应该理解,在使用分离的流水线的情况下,这些流水线中的一个或多个流水线可以是无序发出/执行,并且其余流水线按顺序发出/执行。
该组存储器访问单元464可被耦合到存储单元470,存储单元470可包括数据TLB单元472,数据TLB单元472耦合到数据高速缓存单元474,数据高速缓存单元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, CA的MIPS Technologies的MIPS指令集;Sunnyvale, CA的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可包括用于将核502、系统代理510和高速缓存506和图形模块560互连的基于环的互连单元508。在其它实施例中,处理器500可包括用于将这种单元互连的任何数量的公知技术。基于环的互连单元508可利用存储器控制单元552以促进互连。
处理器500可包括存储器分级体系,所述存储器分级体系包括核内的一个或多个级的高速缓存、一个或多个共享高速缓存单元(诸如,高速缓存506)或耦合到该组集成存储控制器单元552的外部存储器(未示出)。高速缓存506可包括任何合适的高速缓存。在一个实施例中,高速缓存506可包括一个或多个中级高速缓存(诸如,级2(L2)、级3(L3)、级4(L4)或其它级的高速缓存)、末级高速缓存(LLC)和/或其组合。
在各种实施例中,一个或多个核502可执行多线程。系统代理510可包括用于协调和操作核502的部件。系统代理单元510可包括例如功率控制单元(PCU)。PCU可以是调节核502的功率状态所需的逻辑和部件或者包括调节核502的功率状态所需的逻辑和部件。系统代理510可包括用于驱动一个或多个外部连接的显示器或图形模块560的显示引擎512。系统代理510可包括针对用于图形的通信总线的接口1214。在一个实施例中,可由PCI Express (PCIe)实现接口1214。在另一实施例中,可由PCI Express Graphics (PEG)实现接口1214。系统代理510可包括直接媒体接口(DMI) 516。DMI 516可提供母板或计算机系统的其它部分上的不同桥之间的链路。系统代理510可包括用于向计算系统的其它元件提供PCIe链路的PCIe桥1218。可使用存储控制器1220和相干逻辑1222实现PCIe桥1218。
核502可被以任何合适的方式实现。在架构和/或指令集方面,核502可以同构或异构。在一个实施例中,一些核502可以是按顺序的,而其它核502可以是无序的。在另一实施例中,两个或更多个核502可执行相同的指令集,而其它核502可仅执行该指令集的子集或不同的指令集。
处理器500可包括通用处理器,诸如可从Santa Clara, Calif的Intel Corporation获得的Core™ i3、i5、i7、2 双核和四核、Xeon™、Itanium™、XScale™或StrongARM™处理器。可从另一公司(诸如,ARM Holdings, Ltd、MIPS等)提供处理器500。处理器500可以是专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等。处理器500可被实现在一个或多个芯片上。处理器500可以是一个或多个基底的一部分,和/或可使用许多加工技术(诸如,例如BiCMOS、CMOS或NMOS)中的任何加工技术而被实现在一个或多个基底上。
在一个实施例中,高速缓存506中的给定一个可由核502中的多个核共享。在另一实施例中,高速缓存506中的给定一个可专用于核502中的一个。可由高速缓存控制器或其它合适的机构处理将高速缓存506分派给核502。通过实现给定高速缓存506的时间分片,高速缓存506中的给定一个可由两个或更多个核502共享。
图形模块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可包括分配模块1282。在一个实施例中,分配模块1282可分配处理器500的资源或其它资源(诸如,寄存器或缓冲器)以执行给定指令。分配模块1282可在调度器(诸如,存储器调度器、快速调度器或浮点调度器)中执行分配。这种调度器可在图5B中由资源调度器584表示。分配模块12182可完全地或部分地由结合图2描述的分配逻辑实现。资源调度器584可基于给定资源的源的准备状态和执行指令所需的执行资源的可用性确定指令何时准备好执行。如以上所讨论,资源调度器584可由例如调度器202、204、206实现。资源调度器584可安排根据一个或多个资源执行指令。在一个实施例中,这种资源可位于核502内部,并且可例如被图示为资源586。在另一实施例中,这种资源可位于核502外部,并且可通过例如高速缓存分级体系503来访问这种资源。资源可包括例如存储器、高速缓存、寄存器文件或寄存器。位于核502内部的资源可由图5B中的资源586表示。根据需要,可通过例如高速缓存分级体系503与处理器500的其它部分协调写到资源586或从资源586读取的值。当指令被分派资源时,它们可被放置在重新排序缓冲器588中。重新排序缓冲器588可在指令被执行时跟踪指令,并且可基于处理器500的任何合适的准则选择性地对它们的执行进行重新排序。在一个实施例中,重新排序缓冲器588可识别可被独立地执行的指令或一系列指令。可与其它这种指令并行地执行这种指令或一系列指令。核502中的并行执行可由任何合适的数量的分离的执行块或虚拟处理器执行。在一个实施例中,给定核502内的多个虚拟处理器可访问共享资源——诸如存储器、寄存器和高速缓存。在其它实施例中,处理器500内的多个处理实体可访问共享资源。
高速缓存分级体系503可被以任何合适的方式实现。例如,高速缓存分级体系503可包括一个或多个低级或中级高速缓存,诸如高速缓存572、574。在一个实施例中,高速缓存分级体系503可包括通信地耦合到高速缓存572、574的LLC 595。在另一实施例中,可在处理器500的所有处理实体可访问的模块590中实现LLC 595。在另一实施例中,可在来自Intel公司的处理器的无核模块中实现模块590。模块590可包括核502的执行所需的处理器500的一部分或子系统,但可不被实现在核502内。除了LLC 595之外,模块590可包括例如硬件接口、存储器相干协调器、处理器间互连件、指令流水线或存储控制器。可通过模块590(并且更具体地讲,LLC
595)做出对处理器500可用的RAM 599的访问。另外,核502的其它实例可类似地访问模块590。可部分地通过模块590促进核502的实例的协调。
图6-8可图示适合于包括处理器500的示例性系统,而图9可图示可包括一个或多个核502的示例性片上系统(SoC)。针对膝上型计算机、桌上型计算机、手持式PC、个人数字助手、工程工作站、服务器、网络装置、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式装置和各种其它电子装置的领域中已知的其它系统设计和实现方式也可以是合适的。通常,合并如本文中所公开的处理器和/或其它执行逻辑的多种系统或电子装置可通常是合适的。
图6图示根据本公开的实施例的系统600的方框图。系统600可包括一个或多个处理器610、615,所述一个或多个处理器610、615可被耦合到图形存储控制器集线器(GMCH) 620。在图6中利用虚线表示附加的处理器615的可选的性质。
每个处理器610、615可以是处理器500的某个版本。然而,应该注意的是,集成图形逻辑和集成存储器控制单元可不存在于处理器610、615中。图6图示:GMCH 620可被耦合到存储器640,存储器640可以是例如动态随机存取存储器(DRAM)。对于至少一个实施例,DRAM可与非易失性高速缓存关联。
GMCH 620可以是芯片组或芯片组的一部分。GMCH 620可与处理器610、615通信,并且控制处理器610、615和存储器640之间的交互。GMCH 620还可用作处理器610、615和系统600的其它元件之间的加速总线接口。在一个实施例中,GMCH
620经多点总线(诸如,前端总线(FSB) 695)与处理器610、615通信。
另外,GMCH 620可被耦合到显示器645(诸如,平板显示器)。在一个实施例中,GMCH 620可包括集成图形加速器。GMCH 620还可被耦合到输入/输出(I/O)控制器集线器(ICH) 650,其可被用于将各种外围装置耦合到系统600。外部图形装置660可包括是连同另一外围装置670耦合到ICH 650的分立图形装置。
在其它实施例中,附加的或不同的处理器也可存在于系统600中。例如,附加的处理器610、615可包括可与处理器610相同的附加的处理器、可与处理器610异构或不对称的附加的处理器、加速器(诸如,例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器。在包括架构、微架构、热、功耗特性等的优点的度量的范围方面,在物理资源610、615之间可存在各种差异。这些差异可有效地将它们自己表明为处理器610、615之间的不对称性和异质性。对于至少一个实施例,各种处理器610、615可驻留在同一管芯封装中。
图7图示根据本公开的实施例的第二系统700的方框图。如图7中所示,多处理器系统700可包括点对点互连系统,并且可包括经点对点互连750耦合的第一处理器770和第二处理器780。像处理器610、615中的一个或多个处理器一样,处理器770和780中的每个处理器可以是处理器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,在一个实施例中,存储器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连同总线桥718可被耦合到第一总线716,总线桥718将第一总线716耦合到第二总线720。在一个实施例中,第二总线720可以是低脚数(LPC)总线。各种装置可被耦合到第二总线720,所述各种装置包括例如键盘和/或鼠标722、通信装置727和储存器单元728(诸如,盘驱动器或其它大容量存储装置),在一个实施例中,储存器单元728可包括指令/代码和数据730。另外,音频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核”的这种表示可被存储在有形、机器可读介质(“磁带”)中并且被提供给各种顾客或制造设施以加载到实际制作所述逻辑或处理器的加工机器中。例如,IP核(诸如,由ARM Holdings, Ltd.开发的处理器的Cortex™系列和由Chinese Academy of Sciences的Institute of Computing
Technology (ICT)开发的Loongson IP核)可被许可或销售给各种顾客或执照持有者(诸如,Texas Instruments、Qualcomm、Apple或Samsung)并且被实现在由这些顾客或执照持有者生产的处理器中。
图11图示图示了根据本公开的实施例的IP核的开发的方框图。存储器1130可包括模拟软件1120和/或硬件或软件模型1110。在一个实施例中,代表IP核设计的数据可经存储器1140(例如,硬盘)、有线连接(例如,互联网) 1150或无线连接1160被提供给存储器1130。由模拟工具和模型生成的IP核信息可随后被传送给加工设施,其中,IP核信息可由第三方加工以执行根据至少一个实施例的至少一个指令。
在一些实施例中,一个或多个指令可对应于第一类型或架构(例如,x86),并且在不同类型或架构(例如,ARM)的处理器上被翻译或仿真。根据一个实施例,可因此在任何处理器或处理器类型(包括ARM、x86、MIPS、GPU或其它处理器类型或架构)上执行指令。
图12图示根据本公开的实施例的第一类型的指令可如何由不同类型的处理器仿真。在图12中,程序1205包含可执行与根据一个实施例的指令相同或基本上相同的功能的一些指令。然而,程序1205的指令可具有与处理器1215不同或与处理器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上执行x86二进制码1306。类似地,图13示出可使用替代指令集编译器1308编译根据高级语言1302的程序以生成可由没有至少一个x86指令集核的处理器1314(例如,具有执行Sunnyvale, CA的MIPS技术的MIPS指令集和/或执行Sunnyvale, CA的ARM Holdings的ARM指令集的核的处理器)自然地执行的替代指令集二进制码1310。指令转换器1312可被用于将x86二进制码1306转换成可由没有x86指令集核的处理器1314自然地执行的代码。这种转换的代码可能不与替代指令集二进制码1310相同;然而,转换的代码将会完成一般操作并且由来自替代指令集的指令构成。因此,指令转换器1312代表通过仿真、模拟或任何其它过程而允许不具有x86指令集处理器或核的处理器或其它电子装置执行x86二进制码1306的软件、固件、硬件或者其组合。
图14是根据本公开的实施例的处理器的指令集架构1400的方框图。指令集架构1400可包括任何合适的数量或种类的部件。
例如,指令集架构1400可包括处理实体,诸如一个或多个核1406、1407和图形处理单元1415。核1406、1407可通过任何合适的机构(诸如,通过总线或高速缓存)通信地耦合到指令集架构1400的其余部分。在一个实施例中,核1406、1407可通过L2高速缓存控制器1408通信地耦合,L2高速缓存控制器1408可包括总线接口单元1409和L2高速缓存1410。核1406、1407和图形处理单元1415可通过互连件1410通信地彼此耦合并且耦合到指令集架构1400的其余部分。在一个实施例中,图形处理单元1415可使用视频编码1420,视频编码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卡或装置的访问或来自SIM卡或装置的访问。SDRAM控制器1440可提供对存储器(诸如,SDRAM芯片或模块)的访问或来自存储器(诸如,SDRAM芯片或模块)的访问。闪存控制器1445可提供对存储器(诸如,闪存或RAM的其它实例)的访问或来自存储器(诸如,闪存或RAM的其它实例)的访问。SPI主单元1450可提供对通信模块(诸如,蓝牙模块1470、高速3G调制解调器1475、全球定位系统模块1480或实现诸如802.11的通信标准的无线模块1485)的访问或来自通信模块(诸如,蓝牙模块1470、高速3G调制解调器1475、全球定位系统模块1480或实现诸如802.11的通信标准的无线模块1485)的访问。
图15是根据本公开的实施例的实现指令集架构的处理器的指令架构1500的更详细的方框图。指令架构1500可以是微架构。指令架构1500可实现指令集架构1400的一个或多个方面。另外,指令架构1500可图示用于处理器内的指令的执行的模块和机构。
指令架构1500可包括通信地耦合到一个或多个执行实体1565的存储系统1540。另外,指令架构1500可包括高速缓存和总线接口单元(诸如,单元1510),其通信地耦合到执行实体1565和存储系统1540。在一个实施例中,可由执行的一个或多个级执行将指令加载到执行实体1565中。这种级可包括例如指令预取级1530、双指令解码级1550、寄存器重新命名级1555、发出级1560和写回级1570。
在一个实施例中,存储系统1540可包括已执行指令指针1580。已执行指令指针1580可存储这样的值:该值识别由多个股表示的线程内的无序发出级1560中的一批指令内的最早的未分派的指令。可在发出级1560中计算已执行指令指针1580并且已执行指令指针1580被传播给加载单元。指令可被存储在一批指令内。所述一批指令可位于由多个股表示的线程内。最早的指令可对应于最低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内所包含的信息。执行实体1565结合级1530、1550、1555、1560、1570可共同形成执行单元。
单元1510可被以任何合适的方式实现。在一个实施例中,单元1510可执行高速缓存控制。在这种实施例中,单元1510可因此包括高速缓存1525。在另一实施例中,高速缓存1525可被实现为具有任何合适的大小的L2统一高速缓存,诸如零、128k、256k、512k、1M或2M字节的存储器。在另一进一步实施例中,高速缓存1525可被实现在纠错码存储器中。在另一实施例中,单元1510可与处理器或电子装置的其它部分执行总线对接。在这种实施例中,单元1510可因此包括用于经过互连件、处理器内总线、处理器间总线或其它通信总线、端口或线通信的总线接口单元1520。总线接口单元1520可提供对接以便执行例如存储器和输入/输出地址的生成从而用于执行实体1565和位于指令架构1500外部的系统的一部分之间的数据的传送。
为了进一步促进其功能,总线接口单元1520可包括用于生成中断和与处理器或电子装置的其它部分的其它通信的中断控制和分配单元1511。在一个实施例中,总线接口单元1520可包括探查控制单元1512,探查控制单元1512处理用于多个处理核的高速缓存访问和相干性。在另一实施例中,为了提供这种功能,探查控制单元1512可包括高速缓存至高速缓存传送单元,高速缓存至高速缓存传送单元处理不同高速缓存之间的信息交换。在另一进一步实施例中,探查控制单元1512可包括一个或多个探查滤波器1514,所述一个或多个探查滤波器1514监测其它高速缓存(未示出)的相干性,以使得高速缓存控制器(诸如,单元1510)不必直接执行这种监测。单元1510可包括用于同步指令架构1500的动作的任何合适的数量的定时器1515。此外,单元1510可包括AC端口1516。
存储系统1540可包括用于存储用于指令架构1500的处理需要的信息的任何合适的数量和种类的机构。在一个实施例中,存储系统1540可包括用于存储与写到存储器或寄存器或者从存储器或寄存器读回的指令相关的信息的加载存储单元1530。在另一实施例中,存储系统1540可包括快速重编址缓冲器(TLB) 1545,其提供物理和虚拟地址之间的地址值的查找。在又一实施例中,总线接口单元1520可包括用于方便对虚拟存储器的访问的存储管理单元(MMU) 1544。在仍又一实施例中,存储系统1540可包括用于在实际需要执行指令之前从存储器请求这种指令的预取器1543,以便减少延时。
可通过不同级执行用于执行指令的指令架构1500的操作。例如,使用单元1510,指令预取级1530可通过预取器1543访问指令。检索到的指令可被存储在指令高速缓存1532中。预取级1530可以能够实现用于快速循环模式的选项1531,其中执行形成足够小以安装在给定高速缓存内的循环的一系列指令。在一个实施例中,可执行这种执行,而不需要从例如指令高速缓存1532访问附加的指令。可由例如分支预测单元1535确定预取什么指令,分支预测单元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的操作可以使得能够执行附加的指令。可由追踪单元1575监测或调试指令架构1500的执行。
图16是根据本公开的实施例的针对处理器的执行流水线1600的方框图。执行流水线1600可图示例如图15的指令架构1500的操作。
执行流水线1600可包括步骤或操作的任何合适的组合。在1605中,可做出接下来将要被执行的分支的预测。在一个实施例中,这种预测可基于指令的以前的执行及其结果。在1610中,与预测的执行的分支对应的指令可被加载到指令高速缓存中。在1615中,指令高速缓存中的一个或多个这种指令可被获取以用于执行。在1620中,已被获取的指令可被解码成微码或更具体的机器语言。在一个实施例中,多个指令可被同时解码。在1625中,对解码的指令内的寄存器或其它资源的参考可被重新分派。例如,对虚拟寄存器的参考可由对对应物理寄存器的参考替换。在1630中,指令可被分派给队列以用于执行。在1640中,指令可被执行。这种执行可被以任何合适的方式执行。在1650中,指令可被发出给合适的执行实体。执行指令的方式可取决于执行指令的特定实体。例如,在1655处,ALU可执行算术功能。ALU可利用用于它的操作的单个时钟周期以及两个移位器。在一个实施例中,可采用两个ALU,并且因此,可在1655处执行两个指令。在1660处,可确定所获得的分支。程序计数器可被用于指定分支将会前往的目的。可在单个时钟周期内执行1660。在1665处,浮点算术可由一个或多个FPU执行。浮点操作可能需要执行多个时钟周期,诸如两个周期至十个周期。在1670处,可执行乘法和除法操作。可在多个时钟周期(诸如,四个时钟周期)中执行这种操作。在1675处,可执行针对寄存器或流水线1600的其它部分的加载和存储操作。操作可包括加载和存储地址。可在四个时钟周期中执行这种操作。在1680处,可根据1655-1675的所获得的操作的需要执行写回操作。
图17是根据本公开的实施例的用于利用处理器1710的电子装置1700的方框图。电子装置1700可包括例如笔记本、超级本、计算机、塔式服务器、机架服务器、刀片服务器、膝上型计算机、桌上型计算机、平板计算机、移动装置、电话、嵌入式计算机或任何其它合适的电子装置。
电子装置1700可包括处理器1710,处理器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、驱动器1720(诸如,固态盘(SSD)或硬盘驱动器(HDD))、无线局域网(WLAN)单元1750、蓝牙单元1752、无线广域网(WWAN)单元1756、全球定位系统(GPS)、照相机1754(诸如,USB 3.0照相机)或按照例如LPDDR3标准实现的低功率双倍数据速率(LPDDR)存储单元1715。这些部件可各自被以任何合适的方式实现。
另外,在各种实施例中,其它部件可通过以上讨论的部件通信地耦合到处理器1710。例如,加速度计1741、环境光传感器(ALS) 1742、罗盘1743和陀螺仪1744可通信地耦合到传感器集线器1740。热传感器1739、风扇1737、键盘1746和触摸垫1730可通信地耦合到EC 1735。扬声器1763、头戴式耳机1764和麦克风1765可通信地耦合到音频单元1764,音频单元1764进而可通信地耦合到DSP 1760。音频单元1764可包括例如音频编码解码器和D类放大器。SIM卡1757可通信地耦合到WWAN单元1756。诸如WLAN单元1750和蓝牙单元1752以及WWAN单元1756的部件可被按照下一代形状因数(NGFF)实现。
本公开的实施例涉及用于分派指令的指令和逻辑。可结合处理器、虚拟处理器、封装、计算机系统或其它处理设备执行指令和逻辑。在一个实施例中,这种处理设备可包括无序处理器。在另一实施例中,这种处理设备可包括多股无序处理器。图18图示根据本公开的实施例的用于分派指令的示例性系统1800。虽然某些元件可在图18中被示出为执行描述的动作,但系统1800的任何合适的部分可执行本文中描述的功能或动作。
系统1800可将等待执行的指令分派给一个或多个执行单元。在一个实施例中,系统1800可通过评估执行单元端口的可能的使用来分派指令。在另一实施例中,在给定在数量上超过执行单元端口的可用数量的未决指令的情况下,系统1800可通过将执行单元端口的利用最大化或优化来分派指令。系统1800可因此尝试通过增加每个周期执行的指令的数量来增加并行性。如果存在等待使用同一执行端口的多个指令,则应该相对于其它指令选择一些指令。在一个实施例中,系统1800可包括检查用于按优先次序排列原本可能在同一执行端口上等待的多个指令的方案。在各种实施例中,系统1800可在单个时钟周期内执行这种选择,因为在选择用于分派的指令时的延迟可在执行流水线中引起空段。
系统1800可包括多股无序处理器1808,多股无序处理器1808具有用于并行地执行多个股以及确定从ISU
1802向执行单元1812分派什么指令1806的任何合适的实体。指令1806可被按照股1824分组。处理器1808可相对于其它股1824的指令执行每个股1824的指令,从而指令被不按程序次序获取、发出和执行。如上所述,指令1806可包括指示程序次序的PO或RPO值。按顺序执行可包括根据顺序PO值的执行。无序执行可包括不必遵循顺序PO值的执行。股1824内的未决指令未被相对于其它股1824的指令排序。因此,处理器1808可能不知道股1824内的所有指令在执行期间相对于彼此的次序。系统1800可图示处理器1808的一些元件,所述处理器1808的一些元件可包括任何处理器核、逻辑处理器、处理器或者其它处理实体或元件(诸如,图1-17中图示的那些处理实体或元件)。在一个实施例中,处理器1808可包括用于分派指令并且确定其次序的指令调度单元(ISU)
1802。
处理器1804可包括通信地耦合到ISU 1802的前端单元1808和执行单元1812。前端单元1808可包括将获取的指令1806划分成股1824的指令缓冲器。可使用队列(例如,FIFO队列)或任何其它容器类型数据结构实现指令缓冲器。前端单元可将指令1806布置到股1824中,从而给定股在自身内是数据相关的并且被根据PO或RPO排序。执行给定股1824的第一指令的结果可被引导至股1824的下一个指令的评估。在图18的例子中,可存在X个股1824。
前端单元1808可被以任何合适的方式实现。例如,前端单元1808可包括获取单元1816、指令高速缓存1818和指令解码器1820。获取单元1808可从指令高速缓存1818、存储器或其中存储指令1806的其它位置获取指令。获取单元1808可将指令传送给指令解码器1820,指令解码器1820可将指令分解成用于执行的基元。
ISU 1802可被实现在处理器1802的任何合适的部分中。在一个实施例中,ISU
1802可被实现在无序引擎1810中。前端单元1808可通信地耦合到无序引擎1810以传送解码的指令。无序引擎1810可包括用于以无序方式对指令进行重新排序以及分配用于执行的资源的任何合适的其它部件。无序引擎1810可对逻辑资源进行重新命名并且将它们映射到物理资源。这种数据可被存储在寄存器文件1826中。ISU 1802可从股1824向各种执行单元1812发出指令。
执行单元1812可执行从ISU 1802接收的指令,并且可根据存储在重新排序缓冲器1828中的元件和逻辑退出所述指令。这种退出可遵守规则以确保防止由于无序执行而导致的数据相关性错误。当指令已执行并且能够被退出或提交时,结果可被写到高速缓存1830、系统1800的存储器或任何其它合适的位置。
ISU 1802可从各个股1824的每一端接收指令。这种指令可因此是未决指令1834。可存在X个不同股1824或指令的其它缓冲器,并且因此,可存在X个不同未决指令1834。ISU 1802可向Y个不同执行端口1832之一发出指令。执行端口1832可来自处理器1804的一个或多个执行单元1812的任何合适的组合。在一个实施例中,X可大于Y,并且照此,ISU 1802可确定哪些未决指令1834将会被路由至执行端口1832。
在一个实施例中,ISU
1802可选择哪些未决指令1834具有最低PO或RPO并且因此是最早指令。在各种实施例中,诸如通过使用延迟的RPO值,可从原始程序次序值调整PO或RPO。例如,以前被忽略执行的指令可使其RPO值被调整以给予它更高的优先级。在另一例子中,被选择执行的指令可使同一股内的其它指令使其RPO值被调整以给予它们更低的优先级。相对于较新的指令,ISU 1802可优先考虑执行这种最早指令。然而,这种选择可能无法负责未准备好执行的各种指令。例如,当源数据未准备好指令执行、目的不可用或具有冲突、股已被取消或股已被删除时,可出现这种情况。在这种实例中,具有较低RPO的未决指令可占据用于执行端口的空间,但可能无法被执行,从而导致具有较高RPO的另一未决指令失去机会。执行端口1832可因此未被充分使用,并且ISU 1802的吞吐量减小。
在一个实施例中,ISU
1802可在决定如何按优先次序排列用于分派给执行端口1832的未决指令1834时考虑给定未决指令1834或关联的股1824的有效性信息。ISU 1802可识别给定指令是否有效并且准备好分派给执行端口1832。另外,有效性信息可被用于基于优先级信息解决冲突。
在另一实施例中,ISU
1802可生成将要在这种优先化内使用的有效性信息。ISU 1802可在以下描述的第二级分析引擎内使用有效性信息处理指令的分派。有效性信息可被用于满足背靠背相关指令唤醒和使用以及在当前周期内分派指令的定时要求。
在又一实施例中,ISU
1802可生成用于具体地识别哪个未决指令1834将会被分派给给定执行端口1832的端口特定“独热”分派向量。该分派向量或所获得的指令可与其它分派向量或所获得的指令提供给其它执行端口1832并行地被提供给每个执行端口1832。当存在比可用执行端口1832多的未决指令1834时,单个、最好候选的未决指令1834可因此被传送给给定执行端口1832。
在各种实施例中,ISU
1802可在单个时钟周期内执行这些操作。
图19是根据本公开的实施例的ISU 1802的示例性实施例的图示。ISU 1802被以任何合适的方式实现以执行在本公开中描述的功能。在一个实施例中,ISU
1802可包括分析引擎的多个状态。这种引擎可包括例如股调度触发器(SSF)。SSF可包括用于在由ISU分配和处理未决指令(诸如,包括未决指令1834的股1824的头)时保存未决指令的硬件结构。SSF可完全地或部分地由等待缓冲器或预约站实现。SSF还可对这种指令执行特定操作或分析。
在图19的例子中,ISU 1802可包括第一SSF (SSF1 1904)和第二SSF (SSF2 1906)。SSF的两个级可使未决指令连续地堆叠在SSF1 1904、SSF2 1906中。每个SSF 1904、1906可如下所述执行分析。另外,ISU 1802可包括通信地耦合在SSF1 1904和SSF2 1906之间的检查模块1908。对于在股1824的头的每个X未决指令1834,可存在SSF1 1904、SSF2 1906和检查模块1908中的每一个的实例。将要被考虑的每个这种指令的逻辑位置可被称为“道路”,因为通过ISU 1802的操作操纵所述逻辑位置。在一个实施例中,SSF2
1906可代表ISU 1802执行优先化分析。
SSF1 1904可为给定指令确定操作数准备状态。SSF1可执行任何合适的分析,诸如唤醒逻辑。另外,SSF1可解决任何数据相关性问题,因此能够实现无序地执行来自不同股的指令。
在一个实施例中,检查模块1908可执行合适的分析以确定指令是否准备好被写到SSF2
1906或者准备好被SSF2
1906优先考虑。检查模块1908的一些部分可替代地由SSF1 1904执行。检查模块1908可包括用于确定用于给定指令的所有操作数是否准备好的逻辑1910。例如,检查模块1908可确定目的是否准备好,用于指令的第一数据源是否准备好,以及用于指令的第二数据源(如果必要的话)是否准备好。如果所有这种部件准备好,则逻辑1910可产生真值。
在一个实施例中,检查模块1908可包括用于相对于指令的股1824有效确定指令是否有效的逻辑1912。例如,逻辑1912可确定指令的各自股1824是否已被删除或取消。这种事件可以是不运转的错误预测或推测的结果,其中可重新运行所述执行。如果所述股仍然有效,则逻辑1912可产生真值。
在另一实施例中,检查模块1908可组合逻辑1912和1910的结果以确定本指令的有效性位1918。如果指令都已被成功地唤醒,则有效性位1918可因此被设置,其中所有操作数参数准备好并且它的股仍然有效。有效性位1918可被输出到各SSF2 1906。即使指令准备好,指令也可被ISU 1802忽略执行。因此,在另一实施例中,有效性位1918可由复用器1916保存,直至前一指令的分派成功。在这种时间之前,复用器1916可继续输出前一有效性位1922。如果指令以前未准备好但稍后变为准备好,则有效性位1922可被更新。
每个SSF2 1906可处理其各自的指令以相对于其它未决指令促进优先化。SSF2
1906可基于接收的有效性位1922将任何合适的信息输出给其它部件以选择指令。图20是根据本公开的实施例的ISU 1802的另一图示,所述ISU 1802包括SSF2 1906和附加的部件以按优先次序排列用于执行的指令并且选择用于执行的指令。图20的操作可图示可在单个时钟周期内执行的选择逻辑。
在一个实施例中,在第一时钟周期上从SSF1
1904和检查模块1908接收指令和关联的有效性位1920之后,在下一个、单个时钟周期期间,SSF2
1906可将信息路由至一个或多个处理矩阵以选择将要被提供给执行端口1832的一组指令。ISU
1802可包括用于每个执行端口1832的处理矩阵2002。在图20的例子中,ISU 1802可包括Y个不同处理矩阵2002。X个不同SSF2 1906模块中的每个可被路由至Y个不同处理矩阵2002中的每个。Y个不同处理矩阵2002的输出可被路由至Y个不同执行端口1832中的相应一个。
任何合适的信息可被从X个不同SSF2 1906模块路由至Y个不同处理矩阵2002中的每个。在一个实施例中,X个不同SSF2 1906模块中的每个的有效性位1920可被路由至Y个不同处理矩阵2002中的每个。在另一实施例中,来自X个不同SSF2 1906模块中的每个的端口绑定(PB)信息可被路由至Y个不同处理矩阵2002中的每个。在另一实施例中,仅用于关联的端口的PB信息可被从给定SSF2 1906模块路由至给定处理矩阵2002。
PB信息可例如被用于指定将要在特定执行端口1832上执行的特定道路或股1824的重要指令。利用PB,当指令被分配到ISU 1802中时,它被绑定到Y个不同执行端口1832之一。因此,如果已做出这种绑定,则SSF2
1906可转发关于指令被绑定到的哪个端口1832的信息。SSF2 1906可包括用于指定PB方案的任何合适的信息。在一个实施例中,SSF2
1906可包括用于每个未决指令的PB向量2006。PB向量2006可包括具有与每个可能的执行端口1832对应的位的信息的“独热”向量。因此,PB向量2006可包括Y个位。“独热”向量可仅包括单个“1”值,并且其余位可以是零,其指示Y个执行端口1832中的单个执行端口。指示的端口可识别指令被绑定到Y个执行端口1832中的哪个执行端口(如果存在任何执行端口的话)。SSF2 1906可将PB向量2006的给定端口的位输出给关联的处理矩阵2002。
在一个实施例中,SSF2
1906可包括指令的PO或RPO 2008值,并且将其路由至Y个不同处理矩阵2002中的每个。在另一实施例中,Y个不同处理矩阵2002中的每个可能已经具有存储在RPO 2008中的值。在又一实施例中,Y个不同处理矩阵2002中的每个可能已经具有在多个SSF2 1906模块上分析RPO 2008的结果。在这种实施例中,可能已经在前一时钟周期中执行分析。
用于Y个执行端口中的关联的执行端口1832N的给定处理矩阵2002N可因此具有来自关于每个这种模块的未决指令的X个不同SSF2 1906模块中的每个的输入。在一个实施例中,信息可包括X个不同指令中的每个指令的有效性1920。在另一实施例中,信息可包括X个不同指令中的每个指令的PB向量2006的关联的端口N信息。在又一实施例中,信息可包括X个不同指令中的每个指令的RPO 2008值。
在一个实施例中,每个这种处理矩阵2002可使用任何这种信息确定X个不同SSF2 1906模块的哪个指令将会被路由至Y个执行端口中的关联的执行端口1832N以用于执行。
图20还图示给定处理矩阵2002的示例性实施例。示出的处理矩阵可被实现用于任何处理矩阵2002,并且可被称为用于端口N的处理矩阵。如上所述,处理矩阵2002可从X个不同SSF2 1906模块中的每个SSF2 1906模块接收RPO 2008、有效性位1920和PB[端口N] 2006。另外,处理矩阵2002可访问未决指令1834。在一个实施例中,处理矩阵2002可输出从未决指令1834选择的将会在关联的执行端口1832上执行的指令。在另一实施例中,处理矩阵2002可输出将会被用于选择应用于关联的执行端口1832的指令的未决指令1834的索引。
处理矩阵2002可包括用于执行描述的操作的任何合适的数量或种类的元件。在一个实施例中,可在单个时钟周期内执行操作。虽然描述了某些级和模块,但各种部件的功能可根据需要与其它部件的功能组合。
在一个实施例中,处理矩阵2002可包括用于基于RPO或PO值执行X个不同指令的优先化的逻辑矩阵模块2010。在另一实施例中,可能已经执行基于RPO或PO值的X个不同指令的优先化。可由任何合适的机构在前一时钟周期做出这种优先化。例如,可在与SSF1 1904的操作对应的时钟周期执行归属于逻辑矩阵模块2010的这种优先化。逻辑矩阵模块2010可执行未决指令的所有RPO值的矩阵比较以确定哪些指令具有最早或最低的这种值。逻辑矩阵模块2010的输出可包括大小X乘X的矩阵并且可被称为矩阵L。考虑到RPO确定,针对矩阵元素(i,j)的“1”值可指示instructioni将要被给予大于instructionj的优先级。以下结合图21做出逻辑矩阵模块2010的操作的附加的描述。
在各种实施例中,处理矩阵2002可包括一系列矩阵操纵器MM1 2012、MM2 2014和MM3 2016。代表存储在各道路中的X个不同未决指令的按优先次序排列的RPO值的矩阵L可被输入到称为MM1 2012的第一矩阵操纵器。在一个实施例中,MM1
2012还可采用来自PB向量2006的有效性位1920和端口绑定信息作为输入。在另一实施例中,MM1
2012可为矩阵L的每个元素确定两个值。第一个这种值可以是逻辑矩阵L的优先级值与有效性位1920的准备状态信息以及与PB向量2006的端口绑定信息的逻辑组合。因此,可考虑有效性和PB以及RPO优先化。在原始RPO确定中考虑到有效性和端口绑定,针对位置(i,
j)的第一位的“1”值可指示instructioni将要被给予大于instructionj的优先级。第二个这种值可以是有效性和端口绑定信息的逻辑组合的倒数。这可导致仅掩蔽(利用“0”)假定被端口绑定到给定执行端口的那些有效指令。这可针对给定执行端口相对于其它指令为指令提供优先化信息。这两个值可稍后被组合以生成“独热”向量从而识别哪个执行端口将要被用于给定未决指令(如果存在任何执行端口的话)。MM1 2012的输出可被称为L'。L'的大小可以是X乘X,其中每个元素包括两位(被称为“A”和“B”)。
MM2 2014可接受L'作为它的输入。在一个实施例中,MM2
2014可组合由MM1
2012执行的分析。对于L的给定优先化元素,MM2 2012可能已通过需要有效性、PB绑定和L的元素的正优先化值来修改优先化,并且将结果存储为位A。另外,对于L的给定优先化元素,MM2 2012可能已通过需要有效性和PB绑定(独立于L的元素的正优先化值)来修改优先化,并且将结果存储为B。MM2 2014可确定优先化是否存在于位A或位B下,并且因此,将逻辑OR操作应用于组合。MM2 2014可将它的结果输出为包括一位元素的L",L"可具有大小X乘X。
在一个实施例中,MM2的操作2014可导致——代表X个未决指令中的关联的未决指令——的L"的给定行具有全部“1”或不具有“1”。在另一实施例中,L"的具有全部“1”的行意味着:与该行关联的未决指令将会被用于与处理矩阵2002关联的执行端口1832。在又一实施例中,L"的具有全部“0”的行意味着:与该行关联的未决指令将不会被用于与处理矩阵2002关联的执行端口1832。在仍又一实施例中,L"的唯一行可具有全部“1”,因为仅单个未决指令可被路由至给定执行端口1832。
MM3 2016可接受L"作为它的输入。在一个实施例中,对于表示为L"中的行的给定道路或未决指令,MM2 2016可确定这种道路或未决指令是否是针对Y个执行端口中的任何执行端口的最好的匹配。由逻辑矩阵模块2010在给定行中为优先级设置并且随后由MM1 2012和MM2 2014修改以解释有效性和PB的位可识别正确的未决指令的索引以分配给给定执行端口N。MM3 2016的输出可以是被实现为“独热”向量的分派向量D。分派向量中的唯一的“1”可对应于将要被路由至给定执行端口N的指令的索引。在一个实施例中,分派向量D可被输出到指令选择器2018,指令选择器2018可将该索引与未决指令1824进行匹配并且将选择的指令输出给执行端口1832。在另一实施例中,分派向量D可被输出给处理器1804的另一部分,其可合适地将指令路由至执行端口1832。
图21是根据本公开的实施例的逻辑矩阵2100的示例性实施例和逻辑矩阵模块2010的示例性操作的图示。逻辑矩阵2100可包括从逻辑矩阵模块2010输出的矩阵L。在一个实施例中,与处理矩阵2002的其它操作相比,可在前一时钟周期内生成逻辑矩阵2100。在另一实施例中,可在与处理矩阵2002的其它操作相同的时钟周期内生成逻辑矩阵2100。在各种实施例中,可在单个时钟周期内执行图21内图示的操作。
在给定每个未决指令1834的PO或RPO 1906值的阵列的情况下,逻辑矩阵模块2010可执行分析以确定哪个未决指令1834具有最低PO或RPO值。另外,逻辑矩阵模块2010可利用指示器填充逻辑矩阵2100以快速地显示哪个未决指令1834已被确定为具有最低PO或RPO值。逻辑矩阵2100的每个行可指代对应未决指令1834,并且可被称为在处理期间的“道路”。在一个实施例中,逻辑矩阵模块2010可利用“1”和“0”填充所获得的逻辑矩阵2100的每个行,“1”指示道路的增加的较高优先级,并且“0”指示道路的增加的较低优先级。因此,与所有其它道路相比,具有全部“1”的逻辑矩阵2100的道路可具有最高优先级。具有全部“0”的逻辑矩阵2100的道路可具有最低优先级。每个道路可具有由它的行内的“1”的数量定义的相对优先级。
另外,在逻辑矩阵2100中的任何给定位置(i, j)的“1”可指示道路i将会被给予大于道路j的优先级。在一个实施例中,这种关联可被用于结合图23更详细地讨论的束缚打破。
逻辑矩阵模块2010可执行任何合适的操作以实现这种结果。在一个实施例中,逻辑矩阵模块2010可将每个关联的道路的RPO值路由至各个行和列,从而导致X乘X矩阵。可因此针对所有其它道路做出每个道路的矩阵比较。具体地讲,可将每个道路的RPO与每个其它道路的RPO进行比较。如果行的RPO具有小于或等于列的RPO的RPO,则关联的元素被设置为“1”。否则,元素可被设置为“0”。
在图21的例子中,道路0可包括二十的RPO,道路1可包括十五的RPO,道路2可包括二的RPO,道路3可包括三十的RPO,其它值可能未被示出,并且道路X可包括四的RPO。矩阵比较可导致道路2具有全部“1”,因为它包括最低RPO。基于各个行中的“1”的数量,道路的优先级可以是道路2、道路X、道路1、道路0和道路3。逻辑矩阵2100可被输出为L。单个逻辑矩阵2100可被输出给每个处理模块2002。
然而,如上所述,这些按优先次序排列的值可能不足以考虑有效性或端口绑定。如果执行端口1832的数量是二并且ISU
1802仅选择这些道路中的前两个道路,则道路2和道路X将会被选择以分派给执行端口1832。然而,如果道路2因为它的股已被取消而不能执行,则ISU 1802将会具有减少的吞吐量,因为ISU 1802原本可替代于道路2而安排道路1。另外,道路0可代表绑定到列举为port0的执行端口1832上的执行的重要功能。在没有优先化分析的情况下,替代于道路X,道路2可被分派以在这种端口上执行。因此,ISU
1802包括附加的分析。
图22图示根据本公开的实施例的修改的逻辑矩阵L'
2200和MM1 2012的示例性操作。可针对Y个执行端口1832中的每个执行图22的操作。图22图示针对给定执行端口N的这些操作。
作为它的输入,MM1
2012可接受逻辑矩阵L
2100以及与X个未决指令1834中的每个未决指令关联的道路,其中每个道路可包括用于各未决指令的PB向量2006和有效性位1920信息。MM1 2012可使用矩阵分析确定来自逻辑矩阵L 2100的每个元素的信息的两个位。称为“A”和“B”的两个位可被作为一对存储在所获得的修改的逻辑矩阵L"
2200的每个元素中。
对于输出的第一个位“A”,MM1 2012可根据有效性位1920确定关联的道路或未决执行是否有效以及关联的道路是否将要参与由MM1
2012表示的端口N。如果是这样的话,则对于位“A”,行的所有元素将会复制逻辑矩阵L 2100的对应值,无论这种值是“1”还是“0”。这可指示:关联的指令将会参与由执行端口N进行的选择,并且可在这种选择中考虑在逻辑矩阵L
2100中确定的指令的优先级。如果关联的道路或未决执行无效,或者如果它将会参与除端口N之外的另一端口,则对于位“A”,行的所有元素将会是“0”。这可指示:关联的指令将不会参与由执行端口N进行的选择。
在一个实施例中,通过将逻辑与(AND)操作应用于逻辑矩阵2100的关联的元素(Li, j)、道路的PB向量2006信息的端口N值(道路iPB[N])和关联的道路的有效性位1920(道路iV),可确定修改的矩阵L'
2200的每个元素的位“A”。
在各种实施例中,可在图22的操作的周期的前一周期创建逻辑矩阵L
2100。因此,其中代表RPO比较的位值可在没有可见性的情况下被布置在目前周期内可用的数据中。另外,在未考虑有效性或端口参与的情况下做出如图21中所示的位值。
对于输出的第二个位“B”,在一个实施例中,MM1 2012可确定用于相对于另一指令优先考虑一个指令的信息。在另一实施例中,这种优先化信息可被用于指令之间的束缚打破。这种束缚可源于对在“A”中表示的位的修改。在另一实施例中,MM1
2012可确定指代每个列的单个值,其中每个列与X个未决执行1834的各个道路或未决执行关联。因此,道路0创建针对所有行的“B”的column0的值,道路1创建针对所有行的“B”的column1的值,等等。修改的逻辑矩阵L' 2200的每个位“B”可指示指令是否将会参与分派逻辑。
另外,在一个实施例中,每个位“B”可被用于解决优先级冲突。这种优先级冲突可源自利用位“A”做出的值的修改。位“A”的修改可导致逻辑矩阵L 2100的一些“1”值被重置为“0”。与逻辑矩阵L 2100的前一对应行相比,修改的逻辑矩阵L' 2200中的给定行的值可根据“A”位而具有更少的“1”。另外,修改的逻辑矩阵L' 2200中的给定行的值可现在具有与用于同一执行端口1832的修改的逻辑矩阵L' 2200内的另一行相同的数量的“1”。为了解决这些束缚,如结合图23所述,“B”可在逻辑或(OR)操作中与“A”组合。
在一个实施例中,通过对道路的PB向量2006信息的端口N值(道路jPB[N])和关联的道路的有效性位1920
(道路jV)执行逻辑与操作,可做出每个位“B”。结果可被求反并且存储为位“B”。如果关联的道路内的指令有效并且被绑定到MM2
2014的执行端口N,则关联的列内的每个位“B”将会被设置为“0”。因此,位“B”中的“0”可指示:关联的道路正在参与针对端口N的指令选择。否则,位“B”可被设置为“1”并且指示将不会存在参与。
图23图示根据本公开的实施例的另一修改的逻辑矩阵L"
2300和MM2 2014的示例性操作。可针对Y个执行端口1832中的每个执行图23的操作。图23图示针对给定执行端口N的这些操作。MM2 2014可执行束缚打破和由MM2 2012编译的数据的其它解释。
作为它的输入,MM2
2014可接受修改的逻辑矩阵L'
2200。MM2 2014可使用矩阵分析从来自修改的逻辑矩阵L'
2200的每个元素的信息的两个位确定信息的单个位。修改的逻辑矩阵L" 2300中的所获得的信息的位可指示与用于应用于给定执行端口N的矩阵中的给定行关联的指令的优先级。在一个实施例中,逻辑矩阵L" 2300的包括全部“1”的行(如果存在任何这样的行的话)可对应于未决指令1834的将要被路由至执行端口N 1834的指令。
如上所述,在位于修改的逻辑矩阵L'
2200的位置(i, j)的每个元素,位“A”将会图示在考虑到RPO、有效性和端口绑定的情况下的针对执行端口N的instructioni相对于instructionj的优先级。例如,针对在位置(i, j)的给定位“A”的“1”值可指示道路i将会被给予大于道路j的优先级。“0”值意味着:两个道路将会被给予相同的优先级。另外,如上所述,在位于修改的逻辑矩阵L' 2200的位置(i, j)的每个元素,位“B”将会图示(利用“0”)指令或道路正在参与用于执行端口N的指令选择。另外,位“B”可帮助决定原本针对其各自的行内的“1”的数量受到束缚的两个指令之间的优先级。
在一个实施例中,MM2
2014可将逻辑或操作应用于修改的矩阵L'
2200的每个元素。结果可包括大小X乘X的修改的逻辑矩阵L" 2300,其中修改的逻辑矩阵L" 2300的每个元素(i, j)等于L'i,j或 L'j。
由MM2 2014执行的优先级分析可被图示在真值表2302中。修改的逻辑矩阵L' 2100的给定值、某些结果被图示。例如,在2304和2308,如果Aij是零或一并且Bj是零,则Bj是零的事实说明道路j将要参与用于执行端口的指令选择。在Aij内无论什么值应该被传播以用于最后考虑。因此,在一个实施例中,如果给定未决指令1834被绑定到执行端口1832并且未决指令1834来自有效的股1824,则将会考虑指令相对于其它指令的优先级。
在另一例子中,在2306和2310处,如果Aij是零或一并且Bj是一,则Bj是一的事实说明道路j将不会参与用于执行端口的指令选择。不管Aij的值如何,道路j应该被给予小于道路i的优先级。因此,应该利用“1”传播道路i。针对道路i的行内的“1”值将会增加它的优先级。因此,在一个实施例中,如果给定未决指令1834未被绑定到执行端口1832,或者如果给定未决指令1834来自有效的股1824,则应该减小指令相对于其它指令的优先级。
所获得的修改的矩阵L"
2300可包括具有全部“1”的单个行,其中所有其它行都是“0”。这可因此识别与将会被路由至执行端口N
1832的未决指令1834中的单个未决指令对应的行。
图24图示根据本公开的实施例的MM3 2016的示例性操作。在一个实施例中,图24还可图示指令选择器2018将指定指令输出给执行端口1832的示例性操作。可针对Y个执行端口1832中的每个执行端口执行图24的操作。图24图示针对给定执行端口N的这些操作。MM3 2016和指令选择器2018可从未决指令1834选择最合适的指令并且将最合适的指令输出给执行端口1832。
MM3 2016可接受修改的逻辑矩阵L" 2300作为它的输入。修改的逻辑矩阵L" 2300的每个行可被评估以确定哪个行包括全部“1”。在一个实施例中,可通过将逻辑与操作应用于每个行的所有元素来执行这种评估。结果可包括向量或1乘Y矩阵。在另一实施例中,结果可包括在与将要被选择并且路由至执行端口1832的未决指令1834的索引对应的位置的单个“1”。这种位置可被称为M。分派向量可被指定为D并且可包括“独热”值,因为它包括单个“1”,其中其余元素是“0”。
MM3 2016可将分派向量D传送给处理器1804的任何合适的元件以选择指定指令并且将其路由至执行端口1832。在一个实施例中,MM3 2016可将分派向量D传送给指令选择器2018。指令选择器2018可利用任何合适的机构(诸如,复用器或其它瞬时操作)解析分派向量D以识别位置M,并且随后从未决指令1834选择元素M。所获得的指令可被路由至指定执行端口1832。
处理矩阵2002的执行可被并行地并且在单个执行周期内执行,从而每个周期在每个执行端口1832中加载单个指令。
图25图示根据本公开的实施例的用于分派指令的方法2500的示例性实施例。在一个实施例中,可在多股无序处理器上执行方法2500。方法2500可在任何合适的点开始,并且可按照任何合适的次序执行。在一个实施例中,方法2500可在2505开始。
在2505处,可由例如前端获取将要在处理器上执行的指令。指令可包括将要由处理器的各种执行单元的Y个不同执行端口执行的X个不同股中的指令。在2510处,位于每个股的头的指令可被识别。因此,可存在将要在Y个不同执行端口上执行的X个不同未决指令。未决指令可被存储在第一组硬件结构(诸如,触发器)中。2510和随后的步骤可由ISU执行。
在一个实施例中,在2515处,可针对每个指令确定指令是否包括准备好的操作数。例如,可通过确定针对指令的目的和所有数据源是否可用来做出这种确定。在另一实施例中,可确定指令源自于其的股是否有效。例如,可通过确定线程是否被取消或删除来做出这种确定。如果操作数准备好并且股有效,则方法2500可前进至2520。如果操作数未准备好,或者如果股无效,则方法2500可前进至2525。
在2520处,可确定指令有效。在一个实施例中,关于这种有效性的信息可被与指令一起存储。这种信息可被例如存储,但存储为有效性位。方法2500可前进至2530。
在2525处,可确定指令无效。在一个实施例中,关于这种无效的信息可被与指令一起存储。这种信息可被例如存储,但存储为有效性位。方法2500可前进至2530。
在2530处,在一个实施例中,RPO优先级矩阵L可被确定。可通过执行每个指令与另一指令的矩阵比较来创建矩阵。例如,在矩阵中的每个位置(i, j),如果instructioni的RPO小于或等于instructionj的RPO(指示较高优先级),则在(i, j)的矩阵被设置为“1”。
可针对每个执行端口N执行下面的元件2540至2565。另外,每个端口的执行可以是并行的。另外,这些可全部在单个时钟周期内执行。下面讨论应用于给定执行端口N。另外,指令可被转发给第二组硬件结构(诸如,触发器)。
在2540处,来自每个指令的用于执行端口N的端口绑定信息以及每个指令的有效性可被确定。这种信息可被接收作为输入。
在2545处,在一个实施例中,优先级矩阵L内的元素的RPO优先级可基于绑定信息和有效性而被降低。例如,如果指令在它在矩阵L中的元素中被从RPO给予优先级,但指令来自被删除的股,指令未准备好,或者指令未被绑定到目前考虑的执行端口N,则以前建立的优先级可被去除或降低。如果指令来自有效的股,指令准备好,以及指令被绑定到目前考虑的执行端口N,则可保持以前的RPO优先级。通过对因素应用逻辑与并且将结果在修改的逻辑矩阵L'中存储为第一个位,可执行这些操作。
在2550处,可确定其它指令相对于每个指令的相对优先级。可使用绑定信息和有效性信息做出这种确定。因为绑定信息可特定于目前执行端口N,所以相对于未绑定到目前执行端口N的另一执行,绑定到执行端口N的指令可接收优先化信息。另外,相对于无效指令,可优先考虑有效指令。
在2555处,使用应用于2545的调整的RPO优先级的2550的相对优先级可解决指令之间的束缚或模糊。无效或未绑定到正在讨论的端口的指令可被掩蔽,从而它们包括全部“0”。另外,修改的逻辑矩阵内的每个行可包括全部“0”或全部“1”。
在2560处,可通过将逻辑与应用于修改的逻辑矩阵中的每个行(与指令对应的每个行)的所有元素来确定“独热”向量。向量可包括位于将要被输出到给定执行端口N的指令的索引处的“1”。在2565处,指令可被加载。
在2570处,指令可被执行。在2575处,可确定是否重复。如果重复,则方法2500可前进至2505。如果不重复,则方法2500可结束。
可通过任何合适的准则来开始方法2500。另外,虽然方法2500描述特定元件的操作,但方法2500可由任何合适的组合或类型的元件执行。例如,方法2500可由图1-24中图示的元件或可操作于实现方法2500的任何其它系统实现。如此,用于方法2500的优选初始化点和包括方法2500的元件的次序可取决于选择的实现方式。在一些实施例中,一些元件可被可选地省略、重新组织、重复或组合。例如,可针对处理器的每个执行端口并行地执行元件2540-2565的多个分支。在另一例子中,可针对每个未决指令并行地执行元件2515-2525。
本文中公开的机构的实施例可被实现于硬件、软件、固件或这种实现方案的组合。本公开的实施例可被实现为在可编程系统上执行的计算机程序或程序代码,所述可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置和至少一个输出装置。
程序代码可被应用于输入指令以执行本文中描述的功能并且生成输出信息。以已知方式,所述输出信息可被应用于一个或多个输出装置。为了本申请的目的,处理系统可包括具有处理器(诸如例如:数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器)的任何系统。
可按照高级程序编程语言或面向对象的编程语言实现程序代码以与处理系统通信。根据需要,也可按照汇编或机器语言实现程序代码。事实上,本文中描述的机构不在范围上局限于任何特定编程语言。在任何情况下,所述语言可以是编译或解释语言。
至少一个实施例的一个或多个方面可由存储在机器可读介质上的代表性指令实现,所述机器可读介质代表处理器内的各种逻辑,当由机器读取所述代表性指令时,所述代表性指令使所述机器制造用于执行本文中描述的技术的逻辑。称为“IP核”的这种表示可被存储在有形、机器可读介质中并且被提供给各种顾客或制造设施以加载到实际制作所述逻辑或处理器的加工机器中。这种机器可读存储介质可包括如以上所讨论的那些机器可读存储介质。
因此,本公开的实施例还可包括非暂态有形机器可读介质,所述非暂态有形机器可读介质包含指令或包含设计数据(诸如,硬件描述语言(HDL)),其定义本文中描述的结构、电路、设备、处理器和/或系统特征。这种实施例也可被称为程序产品。
在一些情况下,指令转换器可被用于将指令从源指令集转换成目标指令集。例如,指令转换器可将指令翻译(例如,使用静态二进制翻译、包括动态编译的动态二进制翻译)、变换、仿真或以其它方式转换成将要由核处理的一个或多个其它指令。指令转换器可被实现于软件、硬件、固件或者其组合。指令转换器可位于处理器上、不位于处理器上或者部分位于处理器上并且部分不位于处理器上。
因此,公开了用于执行根据至少一个实施例的一个或多个指令的技术。尽管已在附图中描述和示出某些示例性实施例,但应该理解,这种实施例仅说明而非限制其它实施例,并且这种实施例不限于示出和描述的特定构造和布置,因为在研究本公开时,对于本领域普通技术人员而言,可想到各种其它变型。在诸如增长快速并且不容易预见进一步的进步的这种技术的技术的领域中,在不脱离本公开的原理或所附权利要求的范围的情况下,通过能够实现技术进步,可促进在布置和细节方面容易地修改公开的实施例。
Claims (20)
1. 一种处理器,包括:
第一逻辑,用于获取指令流,所述指令流被划分为将要在一个或多个执行端口上加载的多个股;
第二逻辑,用于识别多个未决指令,每个未决指令位于一个股的各自的头;
第三逻辑,用于确定哪些股有效;
第四逻辑,用于确定每个未决指令的程序次序;和
第五逻辑,用于基于每个未决指令的程序次序以及每个股是否有效将未决指令与执行端口进行匹配。
2. 如权利要求1所述的处理器,还包括:
第六逻辑,用于确定一个未决指令与一个执行端口的端口绑定;和
第七逻辑,用于基于每个未决指令的程序次序、每个股是否有效以及端口绑定将未决指令与执行端口进行匹配。
3. 如权利要求1所述的处理器,其中用于将未决指令与执行端口进行匹配的第五逻辑还要在单个处理器时钟周期内执行。
4. 如权利要求1所述的处理器,还包括:第六逻辑,用于针对执行端口中的给定一个生成独热向量,所述向量包括位于将要被分派给给定执行端口的一个未决指令的索引的单个正位。
5. 如权利要求1所述的处理器,还包括:
第六逻辑,用于将未决指令存储在第一级中;
第七逻辑,用于评估必要的数据是否可用于执行未决指令;
第八逻辑,用于基于必要的数据可用于执行未决指令的评估使未决指令前进至第二级;和
第九逻辑,用于将针对每个未决指令的有效性位存储在第二级中,有效性位指示各个股是否有效以及必要的数据是否可用于执行各未决指令。
6. 如权利要求1所述的处理器,还包括:
第六逻辑,用于执行每个未决指令的程序次序与其它未决指令的程序次序的矩阵比较并且将结果存储在逻辑矩阵中,每个未决指令由逻辑矩阵中的各个行表示,每个未决指令的优先级由各个行中的正位的量表示;和
第七逻辑,用于调整逻辑矩阵中针对各未决指令中的每个未决指令的正位以产生与一个执行端口关联的修改的逻辑矩阵,调整基于各个股是否有效。
7. 如权利要求6所述的处理器,还包括:第八逻辑,用于基于修改的逻辑矩阵和端口绑定信息产生独热分派向量,所述向量包括位于将要被分派给与修改的逻辑矩阵关联的一个执行端口的一个未决指令的索引的单个正位。
8. 一种方法,所述方法包括在处理器内:
获取指令流,所述指令流被划分为用于在一个或多个执行端口上加载的多个股;
识别多个未决指令,每个未决指令位于一个股的各自的头;
确定哪些股有效;
确定每个未决指令的程序次序;以及
基于每个未决指令的程序次序以及每个股是否有效将未决指令与执行端口进行匹配。
9. 如权利要求8所述的方法,还包括:
确定一个未决指令与一个执行端口的端口绑定;以及
基于每个未决指令的程序次序、每个股是否有效以及端口绑定将未决指令与执行端口进行匹配。
10. 如权利要求8所述的方法,其中在单个处理器时钟周期内执行将未决指令与执行端口进行匹配。
11. 如权利要求8所述的方法,还包括:针对执行端口中的给定一个生成独热向量,所述向量包括位于将要被分派给给定执行端口的一个未决指令的索引的单个正位。
12. 如权利要求8所述的方法,还包括:
将未决指令存储在第一级中;
评估必要的数据是否可用于执行未决指令;
基于必要的数据可用于执行未决指令的评估使未决指令前进至第二级;以及
将针对每个未决指令的有效性位存储在第二级中,有效性位指示各个股是否有效以及必要的数据是否可用于执行各未决指令。
13. 如权利要求8所述的方法,还包括:
执行每个未决指令的程序次序与其它未决指令的程序次序的矩阵比较并且将结果存储在逻辑矩阵中,每个未决指令由逻辑矩阵中的各个行表示,每个未决指令的优先级由各个行中的正位的量表示;以及
调整逻辑矩阵中针对各未决指令中的每个未决指令的正位以产生与一个执行端口关联的修改的逻辑矩阵,调整基于各个股是否有效。
14. 一种系统,包括:
第一逻辑,用于获取指令流,所述指令流被划分为用于在一个或多个执行端口上加载的多个股;
第二逻辑,用于识别多个未决指令,每个未决指令位于一个股的各自的头;
第三逻辑,用于确定哪些股有效;
第四逻辑,用于确定每个未决指令的程序次序;和
第五逻辑,用于基于每个未决指令的程序次序以及每个股是否有效将未决指令与执行端口进行匹配。
15. 如权利要求14所述的系统,还包括:
第六逻辑,用于确定一个未决指令与一个执行端口的端口绑定;和
第七逻辑,用于基于每个未决指令的程序次序、每个股是否有效以及端口绑定将未决指令与执行端口进行匹配。
16. 如权利要求14所述的系统,其中用于将未决指令与执行端口进行匹配的第五逻辑还要在单个处理器时钟周期内执行。
17. 如权利要求14所述的系统,还包括:第六逻辑,用于针对执行端口中的给定一个生成独热向量,所述向量包括位于将要被分派给给定执行端口的一个未决指令的索引的单个正位。
18. 如权利要求14所述的系统,还包括:
第六逻辑,用于将未决指令存储在第一级中;
第七逻辑,用于评估必要的数据是否可用于执行未决指令;
第八逻辑,用于基于必要的数据可用于执行未决指令的评估使未决指令前进至第二级;和
第九逻辑,用于将针对每个未决指令的有效性位存储在第二级中,有效性位指示各个股是否有效以及必要的数据是否可用于执行各未决指令。
19. 如权利要求14所述的系统,还包括:
第六逻辑,用于执行每个未决指令的程序次序与其它未决指令的程序次序的矩阵比较并且将结果存储在逻辑矩阵中,每个未决指令由逻辑矩阵中的各个行表示,每个未决指令的优先级由各个行中的正位的量表示;和
第七逻辑,用于调整逻辑矩阵中针对各未决指令中的每个未决指令的正位以产生与一个执行端口关联的修改的逻辑矩阵,调整基于各个股是否有效。
20. 如权利要求14所述的系统,还包括:第八逻辑,用于基于修改的逻辑矩阵和端口绑定信息产生独热分派向量,所述向量包括位于将要被分派给与修改的逻辑矩阵关联的一个执行端口的一个未决指令的索引的单个正位。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/IB2014/000622 WO2015145192A1 (en) | 2014-03-27 | 2014-03-27 | Processor logic and method for dispatching instructions from multiple strands |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106030519A true CN106030519A (zh) | 2016-10-12 |
Family
ID=50933446
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480076465.3A Pending CN106030519A (zh) | 2014-03-27 | 2014-03-27 | 用于从多个股分派指令的处理器逻辑和方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20160364237A1 (zh) |
EP (1) | EP3123303A1 (zh) |
JP (1) | JP2017513094A (zh) |
KR (1) | KR20160113677A (zh) |
CN (1) | CN106030519A (zh) |
RU (1) | RU2016134918A (zh) |
WO (1) | WO2015145192A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI659360B (zh) * | 2017-01-23 | 2019-05-11 | 美商萬國商業機器公司 | 用於組合數個執行單元以運算單一寬純量結果之電路、系統和方法 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10838883B2 (en) * | 2015-08-31 | 2020-11-17 | Via Alliance Semiconductor Co., Ltd. | System and method of accelerating arbitration by approximating relative ages |
US20170177542A1 (en) * | 2015-12-16 | 2017-06-22 | Cognitive Systems Corp. | Operating a VLIW Processor in a Wireless Sensor Device |
US11036514B1 (en) | 2016-08-23 | 2021-06-15 | Apple Inc. | Scheduler entries storing dependency index(es) for index-based wakeup |
US20190087184A1 (en) * | 2017-09-15 | 2019-03-21 | Qualcomm Incorporated | Select in-order instruction pick using an out of order instruction picker |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7310722B2 (en) * | 2003-12-18 | 2007-12-18 | Nvidia Corporation | Across-thread out of order instruction dispatch in a multithreaded graphics processor |
US20080133889A1 (en) * | 2005-08-29 | 2008-06-05 | Centaurus Data Llc | Hierarchical instruction scheduler |
CN102171650A (zh) * | 2008-11-24 | 2011-08-31 | 英特尔公司 | 用于将顺序程序分解为多个线程、执行所述线程和重构该顺序执行的系统、方法和装置 |
WO2013147852A1 (en) * | 2012-03-30 | 2013-10-03 | Intel Corporation | Instruction scheduling for a multi-strand out-of-order processor |
US20130339679A1 (en) * | 2012-06-15 | 2013-12-19 | Intel Corporation | Method and apparatus for reducing area and complexity of instruction wakeup logic in a multi-strand out-of-order processor |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6682176B2 (en) * | 1997-07-15 | 2004-01-27 | Silverbrook Research Pty Ltd | Ink jet printhead chip with nozzle arrangements incorporating spaced actuating arms |
US5961636A (en) * | 1997-09-22 | 1999-10-05 | International Business Machines Corporation | Checkpoint table for selective instruction flushing in a speculative execution unit |
US7007153B1 (en) * | 2000-03-30 | 2006-02-28 | Agere Systems Inc. | Method and apparatus for allocating functional units in a multithreaded VLIW processor |
US7363467B2 (en) * | 2002-01-03 | 2008-04-22 | Intel Corporation | Dependence-chain processing using trace descriptors having dependency descriptors |
US20070083736A1 (en) * | 2005-10-06 | 2007-04-12 | Aravindh Baktha | Instruction packer for digital signal processor |
US20100274972A1 (en) * | 2008-11-24 | 2010-10-28 | Boris Babayan | Systems, methods, and apparatuses for parallel computing |
JP5894496B2 (ja) * | 2012-05-01 | 2016-03-30 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
US9858077B2 (en) * | 2012-06-05 | 2018-01-02 | Qualcomm Incorporated | Issuing instructions to execution pipelines based on register-associated preferences, and related instruction processing circuits, processor systems, methods, and computer-readable media |
-
2014
- 2014-03-27 KR KR1020167023348A patent/KR20160113677A/ko not_active Application Discontinuation
- 2014-03-27 RU RU2016134918A patent/RU2016134918A/ru unknown
- 2014-03-27 EP EP14729718.8A patent/EP3123303A1/en not_active Withdrawn
- 2014-03-27 US US15/121,636 patent/US20160364237A1/en not_active Abandoned
- 2014-03-27 JP JP2016552638A patent/JP2017513094A/ja not_active Ceased
- 2014-03-27 CN CN201480076465.3A patent/CN106030519A/zh active Pending
- 2014-03-27 WO PCT/IB2014/000622 patent/WO2015145192A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7310722B2 (en) * | 2003-12-18 | 2007-12-18 | Nvidia Corporation | Across-thread out of order instruction dispatch in a multithreaded graphics processor |
US20080133889A1 (en) * | 2005-08-29 | 2008-06-05 | Centaurus Data Llc | Hierarchical instruction scheduler |
CN102171650A (zh) * | 2008-11-24 | 2011-08-31 | 英特尔公司 | 用于将顺序程序分解为多个线程、执行所述线程和重构该顺序执行的系统、方法和装置 |
WO2013147852A1 (en) * | 2012-03-30 | 2013-10-03 | Intel Corporation | Instruction scheduling for a multi-strand out-of-order processor |
US20130339679A1 (en) * | 2012-06-15 | 2013-12-19 | Intel Corporation | Method and apparatus for reducing area and complexity of instruction wakeup logic in a multi-strand out-of-order processor |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI659360B (zh) * | 2017-01-23 | 2019-05-11 | 美商萬國商業機器公司 | 用於組合數個執行單元以運算單一寬純量結果之電路、系統和方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2015145192A1 (en) | 2015-10-01 |
RU2016134918A (ru) | 2018-03-01 |
US20160364237A1 (en) | 2016-12-15 |
EP3123303A1 (en) | 2017-02-01 |
JP2017513094A (ja) | 2017-05-25 |
KR20160113677A (ko) | 2016-09-30 |
RU2016134918A3 (zh) | 2018-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108292215B (zh) | 用于加载-索引和预取-聚集操作的指令和逻辑 | |
TWI733710B (zh) | 用於重複發生相鄰聚集的處理器、方法和單元 | |
TWI731892B (zh) | 用於以通道為基礎的跨步儲存操作之指令及邏輯 | |
TWI725073B (zh) | 用於載入索引及預取散佈運算的邏輯和指令 | |
TWI738674B (zh) | 與快取控制操作有關的處理器、系統及非暫時性機器可讀媒體 | |
CN106030518B (zh) | 用于整理和退出存储的处理器、方法、系统和装置 | |
TWI738682B (zh) | 用於載入索引和散佈元件的處理器、方法及系統 | |
TWI743064B (zh) | 用於取得多重向量元素操作之指令及邏輯 | |
CN108351779A (zh) | 用于安全指令执行流水线的指令和逻辑 | |
CN108369509A (zh) | 用于基于通道的跨步分散操作的指令和逻辑 | |
TWI720056B (zh) | 用於設置多重向量元素操作之指令及邏輯 | |
CN107003839B (zh) | 用于移位和乘法器的指令执行方法、处理器和系统 | |
CN109791493B (zh) | 用于乱序集群化解码中的负载平衡的系统和方法 | |
CN105745630A (zh) | 用于在集群宽执行机器中的存储器访问的指令和逻辑 | |
TWI723075B (zh) | 用於向量置換的方法和處理器以及向量置換單元 | |
TW201723815A (zh) | 用於偶數與奇數向量取得操作之指令及邏輯 | |
CN108351785A (zh) | 用于部分减少操作的指令和逻辑 | |
CN106030519A (zh) | 用于从多个股分派指令的处理器逻辑和方法 | |
TWI738681B (zh) | 處理器、用於檢測消抵效應之方法及消抵效應檢測單元 | |
US9851976B2 (en) | Instruction and logic for a matrix scheduler | |
TWI731890B (zh) | 壓縮資料解碼器 | |
CN105723329A (zh) | 用于识别多指令串无序处理器中的引退的指令的指令和逻辑 | |
US20160378481A1 (en) | Instruction and logic for encoded word instruction compression | |
CN108292216A (zh) | 用于压缩和循环的指令和逻辑 | |
CN108292214A (zh) | 用于获得数据列的指令和逻辑 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20191115 |
|
AD01 | Patent right deemed abandoned |