CN108351785A - 用于部分减少操作的指令和逻辑 - Google Patents
用于部分减少操作的指令和逻辑 Download PDFInfo
- Publication number
- CN108351785A CN108351785A CN201680066728.1A CN201680066728A CN108351785A CN 108351785 A CN108351785 A CN 108351785A CN 201680066728 A CN201680066728 A CN 201680066728A CN 108351785 A CN108351785 A CN 108351785A
- Authority
- CN
- China
- Prior art keywords
- instruction
- processor
- register
- data
- channel
- 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
- 230000009467 reduction Effects 0.000 claims abstract description 16
- 238000003860 storage Methods 0.000 claims description 53
- 238000000034 method Methods 0.000 claims description 52
- 230000008569 process Effects 0.000 claims description 25
- 238000007667 floating Methods 0.000 claims description 21
- 230000006399 behavior Effects 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 5
- 238000012545 processing Methods 0.000 description 40
- 238000010586 diagram Methods 0.000 description 35
- 238000012856 packing Methods 0.000 description 24
- 238000004891 communication Methods 0.000 description 20
- 238000005516 engineering process Methods 0.000 description 18
- 239000013598 vector Substances 0.000 description 17
- 230000006870 function Effects 0.000 description 16
- 230000007246 mechanism Effects 0.000 description 15
- 239000000872 buffer Substances 0.000 description 14
- 238000013461 design Methods 0.000 description 13
- 238000004519 manufacturing process Methods 0.000 description 13
- 239000003795 chemical substances by application Substances 0.000 description 12
- 230000000875 corresponding effect Effects 0.000 description 12
- 230000005540 biological transmission Effects 0.000 description 9
- 230000002093 peripheral effect Effects 0.000 description 8
- 238000007906 compression Methods 0.000 description 7
- 238000009826 distribution Methods 0.000 description 7
- 230000006835 compression Effects 0.000 description 6
- 230000008878 coupling Effects 0.000 description 5
- 238000010168 coupling process Methods 0.000 description 5
- 238000005859 coupling reaction Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000000151 deposition Methods 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 239000007787 solid Substances 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000005856 abnormality Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000033001 locomotion Effects 0.000 description 3
- 230000000873 masking effect Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification 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
- 238000002360 preparation method Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 206010049207 Adactyly Diseases 0.000 description 1
- 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
- 238000004364 calculation method Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000006837 decompression 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
- 238000005538 encapsulation Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012900 molecular simulation Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000008929 regeneration Effects 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 241000894007 species Species 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
- 230000003245 working effect Effects 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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 or 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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 or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
在一个实施例中,处理器包括:用来获取指令的获取逻辑,该指令包括部分减少指令;用来对部分减少指令进行解码并向一个或多个执行单元提供解码的部分减少指令的解码逻辑;并且所述一个或多个执行单元将响应于解码的部分减少指令而执行多个N个部分减少操作以生成包括N个输出数据元素的结果阵列,其中输入阵列包括N个通道,并且其中N个部分减少操作中的每个将使N个通道的对应通道中包括的输入数据元素的集合减小。描述并要求保护其它实施例。
Description
技术领域
本公开关于处理逻辑、微处理器和关联指令集架构的领域,该关联指令集架构在由处理器或其它处理逻辑执行时实行逻辑运算、数学运算或其它功能的操作。
背景技术
指令集或指令集架构(ISA)是与编程有关的计算机架构的部分,并且可包括本机数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理、以及外部输入和输出(I/O)。ISA与微架构不同,该微架构是实现指令集的处理器的内部设计。具有不同微架构的处理器可以共享公用指令集。在一些示例中,ISA可包括用于存储器操作、算术运算、逻辑运算、控制操作等的指令。
附图说明
图1A是根据一个或多个实施例的由可包括用来执行指令的执行单元的处理器形成的示例性计算机系统的框图。
图1B图示了根据一个或多个实施例的数据处理系统。
图1C图示了根据一个或多个实施例的用来执行操作的数据处理系统的另一个实施例。
图2是根据一个或多个实施例的用于可包括用来执行指令的逻辑电路的处理器的微架构的框图。
图3A图示了根据一个或多个实施例的多媒体寄存器中的各种打包(packed)数据类型表示。
图3B图示了根据一个或多个实施例的可能的寄存器中数据存储格式。
图3C图示了根据一个或多个实施例公开的多媒体寄存器中的各种有符号和无符号的打包数据类型表示。
图3D图示了根据一个或多个实施例的操作编码格式的实施例。
图3E图示了根据一个或多个实施例的具有四十或更多位的另一个可能的操作编码格式。
图3F图示了根据一个或多个实施例的又一个可能的操作编码格式。
图4A是图示了根据一个或多个实施例的有序流水线和寄存器重命名阶段(stage)、无序发布/执行流水线的框图。
图4B是图示了根据一个或多个实施例的将包括在处理器中的有序架构核和寄存器重命名逻辑、无序发布/执行逻辑的框图。
图5A是根据一个或多个实施例的处理器的框图。
图5B是根据一个或多个实施例的核的示例实现的框图。
图6是根据一个或多个实施例的系统的框图。
图7是根据一个或多个实施例的第二系统的框图。
图8是根据一个或多个实施例的第三系统的框图。
图9是根据一个或多个实施例的片上系统的框图。
图10图示了根据一个或多个实施例的包含可以执行至少一个指令的中央处理单元和图形处理单元的处理器。
图11是图示了根据一个或多个实施例的IP核的开发的框图。
图12图示了根据一个或多个实施例的不同类型的处理器可如何仿真第一类型的指令。
图13图示了根据一个或多个实施例的对比将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器的使用的框图。
图14是根据一个或多个实施例的处理器的指令集架构的框图。
图15是根据一个或多个实施例的处理器的指令集架构的更详细的框图。
图16是根据一个或多个实施例的用于处理器的指令集架构的执行流水线的框图。
图17是根据一个或多个实施例的用于利用处理器的电子设备的框图。
图18是根据一个或多个实施例的示例的图。
图19是根据一个或多个实施例的方法的流程图。
图20是根据一个或多个实施例的示例操作的框图。
具体实施方式
下面的描述对用于将由处理器、虚拟处理器、封装、计算机系统或其它处理装置所执行的部分减少(reduction)操作的指令和处理逻辑进行描述。在下面的描述中,阐述了诸如处理逻辑、处理器类型、微架构条件、事件、使能机制等之类的许多具体细节,以便提供对本公开的实施例的更彻底的理解。然而,本领域技术人员将领会到,可以在没有这样的具体细节的情况下实践实施例。另外,一些公知的结构、电路等未被详细示出,以避免不必要地模糊本公开的实施例。
如本文中所使用的,术语“减少操作”是指减少用来生成单个输出值的多个数据元素的输入阵列的操作。例如,基于添加的减少操作可将输入阵列中的所有数据元素加起来以产生单个总和值。然而,在一些场景中,跨整个输入阵列执行减少操作可能导致低效率和/或性能。例如,用来执行线性代数或分子模拟的程序可能涉及具有小行程计数的嵌套循环。
在各种实施例中,可提供指令集架构(ISA)的指令以执行部分减少操作。可在输入阵列中包括的数据元素的子集中执行部分减少操作。输入阵列的这样的子集在本文中可被称为“通道(lane)”。每个通道可包括相等数量的数据元素。
如本文中所使用的,术语“部分减少操作”是指减少用来生成单个输出值的单个通道中包括的数据元素。例如,对于包括N个通道的输入阵列,可在每个通道中执行单独的部分减少操作。相应地,在该示例中,N个部分减少操作的集合(即,每通道一个部分减少操作)将生成N个输出值。如本文中所使用的,术语“部分减少指令”是指在输入阵列中包括的多个通道中的每个通道中执行单独的部分减少操作的单个指令。在一些场景中,部分减少指令可用于并行执行多个计算。相应地,在一些实施例中,部分减少指令可减少完成总体计算所需的时间。下面参照图18-20、根据一个或多个实施例来描述部分减少指令的各种方面。
虽然参照处理器来描述下面的实施例,但是其它实施例适用于其它类型的集成电路和逻辑器件。本公开的实施例的类似技术和教导可应用于其它类型的电路或半导体设备,该电路或半导体设备可受益于较高的流水线吞吐量和改善的性能。本公开的实施例的教导适用于执行数据操纵的任何处理器或机器。然而,实施例不限于执行512位、256位、128位、64位、32位或16位数据操作的处理器或机器,并且可应用于其中可执行数据的操纵或管理的任何处理器和机器。另外,下面的描述提供示例,并且附图出于说明的目的而示出各种示例。然而,这些示例不应当被在限制性的意义上解释,因为其仅意图提供本公开的实施例的示例,而不是提供本公开的实施例的所有可能实现的详尽列表。
虽然以下示例在执行单元和逻辑电路的上下文中描述指令处理和分发,但是本公开的其它实施例可经由存储在机器可读有形介质上的数据或指令来实现,该数据或指令在由机器执行时使机器执行与本公开的至少一个实施例一致的功能。在一个实施例中,与本公开的实施例相关联的功能体现在机器可执行指令中。指令可用于使可利用该指令编程的通用或专用处理器执行本公开的步骤。本公开的实施例可被提供为计算机程序产品或软件,该计算机程序产品或软件可包括其上存储有指令的机器或计算机可读介质,所述指令可用于对计算机(或其它电子设备)进行编程以执行根据本公开的实施例的一个或多个操作。此外,本公开的实施例的步骤可能由包含用于执行步骤的固定功能逻辑的特定硬件组件或者由经编程的计算机组件和固定功能硬件组件的任何组合来执行。
用于对逻辑进行编程以执行本公开的实施例的指令可被存储在系统中的存储器内,诸如DRAM、高速缓存、闪速存储器或其它储存器。此外,指令可经由网络或通过其它计算机可读介质来分发。因此,机器可读介质可包括用于存储或传输以机器(例如,计算机)可读的形式的信息的任何机构,但是不限于在经由电、光、声或其它形式的传播信号(例如,载波、红外信号、数字信号等)通过因特网的信息的传输中使用的软盘、光盘、压缩盘、只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器、或者有形的机器可读储存器。相应地,计算机可读介质可包括适于存储或传输以机器(例如,计算机)可读的形式的电子指令或信息的任何类型的有形的机器可读介质。
设计可能经受各种阶段,从创建到模拟到制造。表示设计的数据可以以许多方式来表示设计。首先,如在模拟中可能有用的,硬件可使用硬件描述语言或另一个功能描述语言来表示。另外,可在设计过程的一些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,设计在某个阶段可达到数据表示硬件模型中的各种设备的物理布置的水平。在其中使用一些半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于产生集成电路的掩模的不同掩模层上存在或不存在各种特征的数据。在设计的任何表示中,数据可被存储在任何形式的机器可读介质中。存储器或者诸如盘之类的磁或光储存器可以是用来存储经由光或电波传输的信息的机器可读介质,该光或电波被调制或以其它方式生成以传输这样的信息。当传输指示或承载代码或设计的电载波时,就执行电信号的复制、缓冲或重传来说,可制作新副本。因此,通信提供商或网络提供商可在有形的机器可读介质上至少临时地存储体现本公开的实施例的技术的物品,诸如编码到载波中的信息。
在现代处理器中,许多不同的执行单元可用于处理和执行多种代码和指令。一些指令可被较快完成,而其它指令可花费许多时钟周期来完成。指令的吞吐量越快,处理器的总体性能就越好。因此,使尽可能多的指令尽可能快地执行将是有利的。然而,可能存在具有较大复杂度并且在执行时间和处理器资源方面要求更多的一些指令,诸如浮点指令、加载/存储操作、数据移动等。
随着更多计算机系统用在互联网、文本和多媒体应用中,已经随时间的过去引入了附加处理器支持。在一个实施例中,指令集可与一个或多个计算机架构相关联,所述一个或多个计算机架构包括数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理以及外部输入和输出(I/O)。
在一个实施例中,指令集架构(ISA)可由一个或多个微架构实现,所述一个或多个微架构可包括用于实现一个或多个指令集的处理器逻辑和电路。相应地,具有不同微架构的处理器可共享公用指令集的至少一部分。例如,Intel® Pentium 4处理器、Intel®Core™处理器以及来自加利福尼亚州森尼韦尔的Advanced Micro Device公司的处理器实现x86指令集的几乎相同的版本(具有已经被添加较新版本的一些扩展),但是具有不同的内部设计。类似地,由其它处理器开发公司(诸如ARM控股有限公司、MIPS或其被许可人或采用者)设计的处理器可共享公用指令集的至少一部分,但是可包括不同的处理器设计。例如,ISA的相同寄存器架构可以使用新的或公知的技术在不同的微架构中以不同的方式来实现,包括专用物理寄存器、使用寄存器器重命名机制的一个或多个动态分配的物理寄存器(例如,使用寄存器别名表(RAT)、重排序缓冲器(ROB)和引退寄存器堆。在一个实施例中,寄存器可包括可能由或可能不由软件编程器可寻址的一个或多个寄存器、寄存器架构、寄存器堆或者其它寄存器集。
指令可包括一个或多个指令格式。在一个实施例中,指令格式可指示各种字段(位的数量、位的位置等),以除其它外还指定要执行的操作和将对其执行操作的操作数。在进一步的实施例中,一些指令格式可进一步由指令模板(或子格式)定义。例如,给定的指令格式的指令模板可被定义成具有指令格式的字段的不同子集和/或被定义成具有被不同地解释的给定字段。在一个实施例中,指令可使用指令格式来表达(并且,如果被定义,则以该指令格式的指令模板中的给定一个来表达),并且指定或指示操作和操作将在其上操作的操作数。
科学的、金融的、自动矢量化的一般目的、RMS(识别、挖掘和合成)以及视觉和多媒体应用(例如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频操纵)可能要求在大量数据项上执行相同操作。在一个实施例中,单指令多数据(SIMD)是指使处理器在多个数据元素上执行操作的指令的类型。SIMD技术可用在可逻辑上将寄存器中的位划分成许多固定大小或可变大小的数据元素的处理器中,该数据元素中的每个表示单独的值。例如,在一个实施例中,在64位寄存器中的位可被组织为包含四个单独的16位数据元素的源操作数,该16位数据元素中的每个表示单独的16位值。该类型的数据可被称为“打包”数据类型或“矢量”数据类型,并且该数据类型的操作数可被称为打包数据操作数或矢量操作数。在一个实施例中,打包数据项或矢量可以是存储在单个寄存器内的打包数据元素的序列,并且打包数据操作数或矢量操作数可以是SIMD指令(或者“打包数据指令”或“矢量指令”)的源或目的操作数。在一个实施例中,SIMD指令指定单个矢量操作,其将在两个源矢量操作数上执行以生成相同或不同大小的、具有相同或不同数量的数据元素的并且以相同或不同的数据元素次序的目的矢量操作数(也被称为结果矢量操作数)。
SIMD技术,诸如由具有包括x86、MMX™、流式SIMD扩展(SSE)、SSE2、SSE3、SSE4.1以及SSE4.2指令的指令集的Intel® Core™处理器,诸如具有包括矢量浮点(VFP)和/或NEON指令的指令集的ARM Cortex®族的处理器之类的ARM处理器,以及诸如由中国科学院的计算技术研究所(ICT)开发的龙芯(Loongson)族的处理器之类的MIPS处理器所采用的SIMD技术,已经使得能实现应用性能方面的显著改进(Core™和MMX™是加利福尼亚州圣克拉拉的英特尔公司的注册商标或商标)。
在一个实施例中,目的和源寄存器/数据可以是表示对应数据或操作的源和目的的通用术语。在一些实施例中,它们可由具有与所描绘的那些不同的名称或功能的寄存器、存储器或其它存储区域来实现。例如,在一个实施例中,“DEST1”可以是临时存储寄存器或其它存储区域,而“SRC1”和“SRC2”可以是第一和第二源存储寄存器或其它存储区域,等等。在其它实施例中,SRC和DEST存储区域中的两个或更多个可对应于同一存储区域内的不同数据存储元件(例如,SIMD寄存器)。在一个实施例中,源寄存器中的一个还可通过例如将在第一和第二源数据上执行的操作的结果回写到用作目的寄存器的两个源寄存器中的一个来充当目的寄存器。
图1A是根据本公开的实施例的由可包括用来执行指令的执行单元的处理器形成的示例性计算机系统的框图。根据本公开,诸如在本文中所描述的实施例中,系统100可包括组件,诸如采用包括用来执行用于过程数据的算法的逻辑的执行单元的处理器102。系统100可代表基于从加利福尼亚州圣克拉拉的英特尔公司可得到的PENTIUM™III、PENTIUM™4、Xeon™、Itanium™、XScale™和/或StrongARM™微处理器的处理系统,但是还可使用其它系统(包括具有其它微处理器、工程工作站、机顶盒等的PC)。在一个实施例中,样本系统100可执行可从华盛顿州的雷德蒙德的微软公司可得到的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的逻辑。通过将打包指令集109包括在通用处理器102的指令集中,连同用来执行该指令的关联电路,可使用通用处理器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包括执行单元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桥154,用于经由I/O总线153与各种I/O设备通信。这样的I/O设备例如可包括但不限于通用异步接收机/发射机(UART)155、通用串行总线(USB)156、蓝牙无线UART 157和I/O扩展接口158。
数据处理系统140的一个实施例提供移动、网络和/或无线通信以及可执行包括文本串比较操作的SIMD操作的处理核159。处理核159可被编程有各种音频、视频、成像和通信算法,包括离散变换,诸如Walsh-Hadamard变换、快速傅立叶变换(FFT)、离散余弦变换(DCT)及其相应逆变换;压缩/解压缩技术,诸如颜色空间变换、视频编码运动估计或视频解码运动补偿;以及调制/解调(调制解调器)功能,诸如脉冲编码调制(PCM)。
图1C图示了根据本公开的实施例的用来执行操作的数据处理系统的另一个实施例。在一个实施例中,数据处理系统160可包括主处理器166、SIMD协处理器161、高速缓冲存储器167和输入/输出系统168。输入/输出系统168可以可选地耦合到无线接口169。SIMD协处理器161可执行包括根据一个实施例的指令的操作。在一个实施例中,处理核170可适于用一个或多个工艺技术的制造,并且通过被足够详细地表示在机器可读介质上,可适于促进包括处理核170的数据处理系统160的全部或部分的制造。
在一个实施例中,SIMD协处理器161包括执行单元162和一组寄存器堆164。主处理器165的一个实施例包括解码器165,用来识别包括根据一个实施例的指令的指令集163的指令以用于由执行单元162执行。在其它实施例中,SIMD协处理器161还包括解码器165的至少部分以解码指令集163的指令。处理器核170还可包括对本公开的实施例的理解可能不必要的附加电路(未示出)。
在操作中,主处理器166执行包括与高速缓冲存储器167和输入/输出系统168的交互的一般类型的数据处理操作的数据处理指令的流。SIMD协处理器指令可以被嵌入在数据处理指令的流内。主处理器166的解码器165将这些SIMD协处理器指令识别为是应当由附连的SIMD协处理器161执行的类型。相应地,主处理器166在协处理器总线166上发布这些SIMD协处理器指令(或者表示SIMD协处理器指令的控制信号)。这些指令可由任何附连的SIMD协处理器从协处理器总线166接收。在此情况下,SIMD协处理器161可接受并执行意图用于其的任何接收的SIMD协处理器指令。
数据可经由无线接口169而被接收以用于通过SIMD协处理器指令来处理。对于一个示例,语音通信可以以数字信号的形式被接收,该数字信号可由SIMD协处理器指令处理以再生代表语音通信的数字音频样本。对于另一个示例,压缩的音频和/或视频可以以数字位流的形式被接收,数字位流可由SIMD协处理器指令处理以再生数字音频样本和/或运动视频帧。在处理核170的一个实施例中,主处理器166和SIMD协处理器161可被集成到单个处理核170中,单个处理核170包括执行单元162、一组寄存器堆164以及用来识别包括根据一个实施例的指令的指令集163的指令的解码器165。
图2是根据本公开的实施例的用于可包括用来执行指令的逻辑电路的处理器200的微架构的框图。在一些实施例中,根据一个实施例的指令可被实现成在具有字节、字、双字、四字等的大小以及诸如单和双精度整数和浮点数据类型之类的数据类型的数据元素上操作。在一个实施例中,有序前端201可实现处理器200的一部分,其可获取将执行的指令并且准备稍后将在处理器流水线中使用的指令。前端201可包括若干单元。在一个实施例中,指令预取器226从存储器获取指令,并且将指令馈送到指令解码器228,指令解码器228进而解码或解译指令。例如,在一个实施例中,解码器将接收的指令解码成机器可执行的被称为“微指令”或“微操作”(也称为微op或uop)的一个或多个操作。在其它实施例中,解码器将指令解析成可由微架构使用以执行根据一个实施例的操作的操作码以及对应的数据和控制字段。在一个实施例中,跟踪(trace)高速缓存230可将解码的uop组装到uop队列234中的程序排序的序列或跟踪中以用于执行。当跟踪高速缓存230遇到复杂指令时,微代码ROM 232提供完成操作所需要的uop。
一些指令可被转换成单个微op,而其它需要若干微op来完成全操作。在一个实施例中,如果需要多于四个微op来完成指令,解码器228可访问微代码ROM 232以执行指令。在一个实施例中,指令可被解码成小数量的微op以用于在指令解码器228处处理。在另一个实施例中,如果需要许多微op来完成操作,可将指令存储在微代码ROM 232内。跟踪高速缓存230是指用来确定正确的微指令指针以用于从微代码ROM 232读取微代码序列来完成根据一个实施例的一个或多个指令的入口点可编程逻辑阵列(PLA)。在微代码ROM 232完成用于指令的定序微op之后,机器的前端201可重新开始从跟踪高速缓存230获取微op。
无序执行引擎203可准备指令以用于执行。无序执行逻辑具有许多缓冲器以在指令沿流水线向下并且被调度以用于执行时使指令的流平滑并且重排序以优化性能。分配器逻辑分配每个uop为了执行所需要的机器缓冲器和资源。寄存器重命名逻辑将逻辑寄存器重命名到寄存器堆中的条目上。分配器还在指令调度器:存储器调度器、快速调度器202、慢速/一般浮点调度器204和简单浮点调度器206前面为两个uop队列(一个用于存储器操作,并且一个用于非存储器操作)中的一个中的每个uop分配条目。uop调度器202、204、206基于其相关输入寄存器操作数源的准备度(readiness)以及uop完成其操作所需要的执行资源的可用性来确定uop何时准备好执行。一个实施例的快速调度器202可在每半个主时钟周期上进行调度,而其它调度器仅可每主处理器时钟周期调度一次。调度器对分派端口进行仲裁以调度用于执行的uop。
寄存器堆208、210可被布置在调度器202、204、206与执行块211中的执行单元212、214、216、218、220、222、224之间。寄存器堆208、210中的每个分别执行整数和浮点运算。每个寄存器堆208、210可包括可将还没有写入到寄存器堆中的刚刚完成的结果旁路或转发到新的相关uop的旁路网络。整数寄存器堆208和浮点寄存器堆210可与另一个传送数据。在一个实施例中,整数寄存器堆208可被分成两个单独的寄存器堆,一个寄存器堆用于数据的低阶32位,而第二寄存器堆用于数据的高阶32位。浮点寄存器堆210可包括128位宽条目,因为浮点指令通常具有在宽度上从64到128位的操作数。
执行块211可包含执行单元212、214、216、218、220、222、224。执行单元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可可以在半个时钟周期的有效等待时间的情况下执行快速操作。在一个实施例中,最复杂的整数操作转到慢速ALU220,因为慢速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在父加载已经完成执行之前分派相关操作。因为uop可在处理器200中被推测地调度和执行,所以处理器200还可包括用来处理存储器未命中(miss)的逻辑。如果数据加载在数据高速缓存中未命中,在流水线中的执行中(inflight)可能存在相关操作,其给调度器留下临时不正确的数据。回放机构跟踪并且重新执行使用不正确的数据的指令。仅相关操作可能需要被回放,并且相关操作可被允许完成。处理器的一个实施例的调度器和回放机构还可被设计成捕捉用于文本串比较操作的指令序列。
术语“寄存器”可以是指可用作用来识别操作数的指令的部分的板上处理器存储位置。换言之,寄存器可以是(从程序员的角度)可从处理器的外部可使用的那些寄存器。然而,在一些实施例中,寄存器可能不限于特定类型的电路。相反,寄存器可存储数据,提供数据,并且执行本文中所描述的功能。本文中所描述的寄存器可由处理器内的电路使用任何数量的不同技术来实现,诸如专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器堆还包含用于打包数据的八个多媒体SIMD寄存器。对于下面的讨论,寄存器可被理解成是被设计成保持打包数据的数据寄存器,诸如在用来自加利福尼亚州的圣克拉拉的英特尔公司的MMX技术使能的微处理器中的64位宽的MMXtm寄存器(在一些实例中也被称为“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位长,并且包含八个打包字数据元素。每个打包字包含十六位的信息。图3A的打包双字格式330可以是128位长,并且包含四个打包双字数据元素。每个打包双字数据元素包含三十二位的信息。打包四字可以是128位长,并且包含两个打包四字数据元素。
图3B图示了根据本公开的实施例的可能的寄存器中数据存储格式。每个打包数据可包括多于一个独立数据元素。图示了三个打包数据格式;打包一半341、打包单个342以及打包双343。打包一半341、打包单个342以及打包双343的一个实施例包含固定点数据元素。对于另一个实施例,打包一半341、打包单个342以及打包双343中的一个或多个可包含浮点数据元素。打包一半341的一个实施例可以是包含八个16位数据元素的128位长。打包单个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中。因此,所有可用位可用在寄存器中。该存储布置可提高处理器的存储效率。同样地,在16个数据元素被访问的情况下,现在可在十六个数据元素上以并行方式执行一个操作。有符号的打包字节表示345图示了有符号的打包字节的存储。注意:每个字节数据元素的第八位可以是符号指示符。无符号的打包字表示346图示了字7至字0可被如何存储在SIMD寄存器中。有符号的打包字表示347可类似于无符号的打包字寄存器中表示346。注意:每个字数据元素的第十六位可以是符号指示符。无符号的打包双字表示348示出双字数据元素如何被存储。有符号的打包双字表示349可类似于无符号的打包双字寄存器中表示348。注意:必要的符号位可以是每个双字数据元素的第三十二位。
图3D图示了操作编码(操作码)的实施例。此外,格式360可包括与在“IA-32英特尔架构软件开发者手册第2卷:指令集参考(IA-32 Intel Architecture SoftwareDeveloper's Manual Volume 2: Instruction Set Reference)”中所描述的操作码格式的类型对应的寄存器/存储器操作数寻址模式,其在万维网(www)上在intel.com/design/litcentr从加利福尼亚州的圣克拉拉的英特尔公司可得到。在一个实施例中,与(and)指令可由字段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)和位移字节部分地指定的寄存器到寄存器、存储器到寄存器、寄存器接(by)存储器、寄存器接寄存器、寄存器接立即数、寄存器到存储器寻址。
图3F图示了根据本公开的实施例的又一个可能的操作编码(操作码)格式。64位单指令多数据(SIMD)算术运算可通过协处理器数据处理(CDP)指令来执行。操作编码(操作码)格式380描绘具有CDP操作码字段382 an0064 389的一个这样的CDP指令。CDP指令的类型对于另一个实施例来说,操作可由字段383、384、387和388中的一个或多个编码。每指令可标识多达3个操作数位置,包括多达两个源操作数标识符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,其包括耦合到执行引擎单元450的前端单元430,并且二者都可耦合到存储器单元470。
核490可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或者混合或替代核类型。在一个实施例中,核490可以是专用核,诸如例如网络或通信核、压缩引擎、图形核等。
前端单元430可包括耦合到指令高速缓存单元434的分支预测单元432。指令高速缓存单元434可耦合到指令转换后备缓冲器(TLB)436。TLB 436可耦合到指令获取单元438,指令获取单元438耦合到解码单元440。解码单元440可解码指令,并且生成作为输出的一个或多个微操作、微代码入口点、微指令、其它指令或其它控制信号,其可解码自原始指令或者以其它方式反映原始指令或可从原始指令导出。解码器可使用各种不同的机构来实现。合适的机构的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,指令高速缓存单元434可进一步耦合到存储器单元470中的2级(L2)高速缓存单元476。解码单元440可耦合到执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450可包括耦合到引退单元454和一个或多个调度器单元456的集合的重命名/分配器单元452。调度器单元456表示任何数量的不同调度器,包括保留站、中央指令窗口等。调度器单元456可耦合到物理寄存器堆单元458。物理寄存器堆单元458中的每个表示一个或多个物理寄存器堆,其中的不同的物理寄存器堆存储一个或多个不同的数据类型(诸如标量整数、标量浮点、打包整数、打包浮点、矢量整数、矢量浮点等)、状态(例如,指令指针,其是要执行的下一个指令的地址)等。物理寄存器堆单元458可被引退单元154重叠,以图示可实现寄存器重命名和无序执行的各种方式(例如,使用一个或多个重排序缓冲器以及一个或多个引退寄存器堆,使用一个或多个将来的文件、一个或多个历史缓冲器以及一个或多个引退寄存器堆;使用寄存器映射和寄存器池;等)。一般地,架构寄存器可从处理器的外部或者从程序员的角度可见。寄存器可能不限于任何已知的特定类型的电路。各种不同类型的寄存器可以是合适的,只要它们存储和提供如本文中所描述的数据。合适的寄存器的示例包括但可能不限于专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。引退单元454和物理寄存器堆单元458可耦合到执行集群460。执行集群460可包括一个或多个执行单元162的集合以及一个或多个存储器访问单元464的集合。执行单元462可执行各种操作(例如,移位、加法、减法、乘法),并且在各种类型的数据(例如,标量浮点、打包整数、打包浮点、矢量整数、矢量浮点)上执行。虽然一些实施例可包括专用于具体功能或功能集合的许多执行单元,但是其它实施例可仅包括一个执行单元或者全部执行所有功能的多个执行单元。调度器单元456、物理寄存器堆单元458和执行集群460被示为可能是复数个,因为一些实施例创建用于一些类型的数据/操作的单独流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/矢量整数/矢量浮点流水线,和/或存储器访问流水线,每个都具有其自己的调度器单元、物理寄存器堆单元和/或执行集群——并且在单独的存储器访问流水线的情况下,可实现其中仅该流水线的执行集群具有存储器访问单元464的一些实施例)。还应当理解:在使用单独流水线的情况下,这些流水线中的一个或多个可以是无序发布/执行的并且其余是有序的。
存储器访问单元464的集合可耦合到存储器单元470,存储器单元470可包括耦合到数据高速缓存单元474的数据TLB单元472,数据高速缓存单元474耦合到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指令集(具有已经被添加较新版本的一些扩展);加利福尼亚州的森尼维尔的MIPS科技的MIPS指令集;加利福尼亚州的森尼维尔的ARM控股的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可包括用于针对图形的通信总线的接口1214。在一个实施例中,接口1214可由PCI Express (PCIe)实现。在进一步的实施例中,接口1214可由PCI Express 图形(PEG)实现。系统代理510可包括直接媒体接口(DMI)516。DMI 516可提供在计算机系统的主板或其它部分上的不同桥之间的链接。系统代理510可包括PCIe桥1218,用于提供到计算系统的其它元件的PCIe链接。PCIe桥1218可使用存储器控制器1220和一致性逻辑1222来实现。
核502可以以任何合适的方式来实现。核502可在架构和/或指令集方面是同构或异构的。在一个实施例中,核502中的一些可以是有序的,而其它可以是无序的。在另一个实施例中,核502中的两个或更多个可执行相同的指令集,而其它可仅执行该指令集的子集或不同的指令集。
处理器500可包括通用处理器,诸如Core™ i3、i5、i7、2 Duo和Quad、Xeon™、Itanium™、XScale™或StrongARM™处理器,其可从加利福尼亚州的圣克拉拉的英特尔公司可得到。可从诸如ARM控股有限公司、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可包括分配模块582。在一个实施例中,分配模块582可分配处理器500的资源或诸如寄存器或缓冲器之类的其它资源以执行给定指令。分配模块582可在诸如存储器调度器、快速调度器或浮点调度器之类的调度器中做出分配。这样的调度器可在图5B中由资源调度器584表示。分配模块582可完全或部分地通过结合图2所描述的分配逻辑来实现。资源调度器584可基于给定资源的源的准备度和执行指令所需要的执行资源的可用性来确定何时准备好执行指令。资源调度器584可通过例如如上面所描述的调度器202、204、206来实现。资源调度器584可调度在一个或多个资源上的指令的执行。在一个实施例中,这样的资源可在核502内部,并且例如可被图示为资源586。在另一个实施例中,这样的资源可在核502外部,并且可通过例如高速缓存层级503可访问。资源可包括例如存储器、高速缓存、寄存器堆或寄存器。在核502内部的资源可由图5B中的资源586表示。在必要时,写入到资源586或从资源586读取的值可通过例如高速缓存层级503、利用处理器500的其它部分来协调。当指令被指派资源时,其可被置于重排序缓冲器588中。重排序缓冲器588可在指令被执行时跟踪指令,并且可基于处理器500的任何合适的准则来选择性地对其执行进行重排序。在一个实施例中,重排序缓冲器588可标识可被独立执行的指令或一系列指令。这样的指令或一系列指令可与其它这样的指令并行地执行。核502中的并行执行可由任何合适数量的单独的执行块或虚拟处理器执行。在一个实施例中,共享的资源——诸如存储器、寄存器和高速缓存——可以是对给定核502内的多个虚拟处理器可访问的。在其它实施例中,共享的资源可以是对处理器500内的多个处理实体可访问的。
高速缓存层级503可以以任何合适的方式来实现。例如,高速缓存层级503可包括一个或多个较低级或中间级高速缓存,诸如高速缓存572、574。在一个实施例中,高速缓存层级503可包括通信地耦合到高速缓存572、574的LLC 595。在另一个实施例中,可在对处理器500的所有处理实体可访问的模块590中实现LLC 595。在进一步的实施例中,可在来自英特尔公司的处理器的非核模块中实现模块590。模块590可包括对于核502的执行而言必要、但是可能不在核502内实现的处理器500的部分或子系统。除了LLC 595之外,模块590还可包括例如硬件接口、存储器一致性协调器、处理器间互连、指令流水线或存储器控制器。对可用于处理器500的RAM 599的访问可通过模块590并且更具体地通过LLC 595来做出。此外,核502的其它实例可类似地访问模块590。可通过模块590来部分地促进核502的实例的协调。
图6-8可图示了适于包括处理器500的示例性系统,而图9可图示了可包括核502中的一个或多个的示例性片上系统(SoC)。本领域中已知的用于膝上型计算机、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备和各种其它电子设备的其它系统设计和实现也可以是合适的。一般地,结合如本文中所公开的处理器和/或其它执行逻辑的种类繁多的系统或电子设备一般可能是合适的。
图6图示了根据本公开的实施例的系统600的框图。系统600可包括一个或多个处理器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(诸如平板显示器)。在一个实施例中,GMCH620可包括集成图形加速器。GMCH 620可进一步耦合到输入/输出(I/O)控制器中枢(ICH)650,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。处理器770和780中的每个可以是处理器500的某个版本,作为处理器610、615中的一个或多个。
虽然图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可连同总线桥718耦合到第一总线716,总线桥718将第一总线716耦合到第二总线720。在一个实施例中,第二总线720可以是低引脚计数(LPC)总线。在一个实施例中,各种设备可耦合到第二总线720,包括例如键盘和/或鼠标722、通信设备727以及可包括指令/代码和数据730的存储单元728,诸如盘驱动器或其它大容量存储设备。进一步地,音频I/O 724可耦合到第二总线720。注意:其它架构可以是可能的。例如,代替图7的点对点架构,系统可实现多点总线或其它这样的架构。
图8图示了根据本公开的实施例的第三系统700的框图。图7和图8中的相同元件带有相同的参考数字,并且已经从图8省略了图7的某些方面,以便避免模糊图8的其它方面。
图8图示了处理器770、780可分别包括集成存储器和I/O控制逻辑(“CL”)772和782。对于至少一个实施例,CL 772、782可包括集成存储器控制器单元,诸如上面结合图5和7所描述的集成存储器控制器单元。另外,CL 772、782还可包括I/O控制逻辑。图8图示了不仅存储器732、734可耦合到CL 872、882,而且I/O设备814也可耦合到控制逻辑772、782。传统I/O设备815可耦合到芯片组790。
图9图示了根据本公开的实施例的SoC 900的框图。图5中的类似元件带有类似的参考数字。而且,虚线框可表示更高级的SoC上的可选特征。互连单元902可耦合到:应用处理器910,其可包括一个或多个核502A-N的集合以及共享高速缓存单元906;系统代理单元912;总线控制器单元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控股有限公司开发的Cortex™族的处理器以及中国科学院的计算技术研究所(ICT)开发的龙芯IP核,可被许可或者出售给诸如德州仪器、高通、苹果或三星之类的各种客户或被许可人,并且在由这些客户或被许可人生产的处理器中实现。
图11图示了根据本公开的实施例的图示IP核的开发的框图。储存器1130可包括模拟软件1120和/或硬件或软件模型1110。在一个实施例中,表示IP核设计的数据可经由存储器1140(例如,硬盘)、有线连接(例如,互联网)1150或无线连接1160而被提供给储存器1130。由模拟工具和模型生成的IP核信息然后可被传输到制造设施,其中IP核信息可由第三方制造以执行根据至少一个实施例的至少一个指令。
在一些实施例中,一个或多个指令可对应于第一类型或架构(例如,x86),并且在不同类型或架构(例如,ARM)的处理器上被转化或仿真。根据一个实施例,因此可在任何处理器或处理器类型(包括ARM、x86、MIPS、GPU)或其它处理器类型或架构上执行指令。
图12图示了根据本公开的实施例的不同类型的处理器可如何仿真第一类型的指令。在图12中,程序1205包含可执行与根据一个实施例的指令相同或基本上相同的功能的一些指令。然而,程序1205的指令可具有不同于或不与处理器1215兼容的类型和/或格式,意味着程序1205中的该类型的指令可能不能由处理器1215本机地执行。然而,在仿真逻辑1210的帮助下,程序1205的指令可被转化成可由处理器1215本机地执行的指令。在一个实施例中,仿真逻辑可以以硬件来体现。在另一个实施例中,仿真逻辑可以体现在有形的机器可读介质中,有形的机器可读介质包含将程序1205中的该类型的指令转化成由可处理器1215本机地执行的类型的软件。在其它实施例中,仿真逻辑可以是固定功能或可编程硬件以及存储在有形的机器可读介质上的程序的组合。在一个实施例中,处理器包含仿真逻辑,而在其它实施例中,仿真逻辑存在于处理器外部并且可由第三方提供。在一个实施例中,处理器可通过执行包含在处理器中或者与处理器相关联的微代码或固件来加载体现在包含软件的有形的机器可读介质中的仿真逻辑。
图13是根据本发明的实施例的对比将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器的使用的框图。在图示的实施例中,指令转换器是软件指令转换器,但是替代地,指令转换器可以以软件、固件、硬件或其各种组合来实现。图13示出用高级语言1302的程序,其可使用x86编译器1304来编译以生成可由具有至少一个x86指令集核的处理器1316本机地执行的x86二进制代码1306。具有至少一个x86指令集核的处理器1316表示可以通过兼容地执行或以其它方式处理以下以便实现与具有至少一个x86指令集核的英特尔处理器基本上相同的结果来执行与具有至少一个x86指令集核的英特尔处理器基本上相同的功能的任何处理器:(1)英特尔x86指令集核的指令集的相当大的部分,或者(2)目标在于在具有至少一个x86指令集核的英特尔处理器上运行的应用或其它软件的目标代码版本。x86编译器1304表示可操作以生成x86二进制代码1306(例如,目标代码)的编译器,x86二进制代码1306可以在有或没有附加链接处理的情况下在具有至少一个x86指令集核的处理器1316上被执行。类似地,图13示出用高级语言1302的程序,其可使用替代指令集编译器1308编译以生成可由不具有至少一个x86指令集核的处理器1314(例如,具有执行加利福尼亚州的森尼维尔的MIPS科技的MIPS指令集和/或执行加利福尼亚州的森尼维尔的ARM控股的ARM指令集的核的处理器)本机地执行的替代指令集二进制代码1310。
指令转换器1312用于将x86二进制代码1306转换成可由不具有x86指令集核的处理器1314本机地执行的替代指令集二进制代码1311。该转换的代码可能不与由替代指令集编译器1308所产生替代指令集二进制代码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卡或设备的访问。SDRAM控制器1440可提供对或来自诸如SDRAM芯片或模块之类的存储器的访问。闪存控制器1445可提供对或来自诸如闪速存储器或RAM的其它实例之类的存储器的访问。SPI主单元1450可提供对或来自通信模块的访问,所述通信模块诸如蓝牙模块1470、高速3G调制解调器1475、全球定位系统模块1480或实现诸如802.11之类的通信标准的无线模块1485。
图15是根据本公开的实施例的处理器的指令集架构1500的更详细的框图。指令架构1500可实现指令集架构1400的一个或多个方面。此外,指令集架构1500可图示用于执行处理器内的指令的模块和机构。
指令架构1500可包括通信地耦合到一个或多个执行实体1565的存储器系统1540。此外,指令架构1500可包括高速缓存和总线接口单元,诸如通信地耦合到执行实体1565和存储器系统1540的单元1510。在一个实施例中,指令到执行实体1564中的加载可由一个或多个执行级执行。这样的级可包括例如指令预取级1530、双指令解码级1550、寄存器重命名级155、发布级1560和回写级1570。
在另一个实施例中,存储器系统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统一高速缓存,诸如0、128k、256k、512k、1M或2M字节的存储器。在另一个进一步的实施例中,可在纠错码存储器中实现高速缓存1525。在另一个实施例中,单元1510可执行到处理器或电子设备的其它部分的总线对接。在这样的实施例中,单元1510因此可包括总线接口单元1520,用于通过互连、处理器内总线、处理器间总线或其它通信总线、端口或线路进行通信。总线接口单元1520可提供对接,以便执行例如存储器和输入/输出地址的生成,以用于在执行实体1565与指令架构1500外部的系统的部分之间的数据的传送。
为了进一步促进其功能,总线接口单元1520可包括中断控制和分发单元1511,用于生成中断和到处理器或电子设备的其它部分的其它通信。在一个实施例中,总线接口单元1520可包括处理针对多个处理核的高速缓存访问和一致性的探听(snoop)控制单元1512。在进一步的实施例中,为了提供这样的功能性,探听控制单元1512可包括处理不同高速缓存之间的信息交换的高速缓存到高速缓存传送单元。在另一个进一步的实施例中,探听控制单元1512可包括一个或多个探听过滤器1514,其监视其它高速缓存(未示出)的一致性,使得诸如单元1510之类的高速缓存控制器不必直接执行这样的监视。单元1510可包括用于使指令架构1500的动作同步的任何合适数量的定时器1515。而且,单元1510可包括AC端口1516。
存储器系统1540可包括用于存储用于指令架构1500的处理需要的信息的任何合适数量和种类的机构。在一个实施例中,存储器系统1504可包括用于存储信息的加载存储单元1530,诸如写入到存储器或寄存器或者从存储器或寄存器读回的缓冲器。在另一个实施例中,存储器系统1504可包括转换后备缓冲器(TLB)1545,其提供物理地址与虚拟地址之间的地址值的查找。在又一个实施例中,总线接口单元1520可包括用于促进对虚拟存储器的访问的存储器管理单元(MMU)1544。在再一个实施例中,存储器系统1504可包括用于在这样的指令实际上需要被执行之前向存储器请求指令以便减少等待时间的预取器1543。
用来执行指令的指令架构1500的操作可通过不同的级来执行。例如,使用单元1510指令预取级1530可通过预取器1543访问指令。取回的指令可被存储在指令高速缓存1532中。预取级1530可使能用于快速循环模式的选项1531,其中执行形成小得足以适配在给定高速缓存内的循环的一系列指令。在一个实施例中,可执行这样的执行而无需访问来自例如指令高速缓存1532的附加指令。预取什么指令的确定可由例如分支预测单元1535做出,分支预测单元1535可访问全局历史1536中的执行的指示、目标地址1537的指示或者用来确定接下来将执行代码的分支1557中的哪些的返回栈1538的内容。这样的分支也许可能作为结果被预取。可通过如下面所描述的其它操作级来产生分支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执行。浮点运算可要求多个时钟周期来执行,诸如两个至十个周期。在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、快速芯片组(EC)1735、受信平台模块(TPM)1738、BIOS/固件/闪速存储器1722、数字信号处理器1760、诸如固态盘(SSD)或硬盘驱动器(HDD)之类的驱动器1720、无线局域网(WLAN)单元1750、蓝牙单元1752、无线广域网(WWAN)单元1756、全球定位系统(GPS)、诸如USB 3.0相机之类的相机1754、或者以例如LPDDR3标准实现的低功率双数据速率(LPDDR)存储器单元1715。这些组件可各自以任何合适的方式来实现。
此外,在各种实施例中,其它组件可通过上面讨论的组件而通信地耦合到处理器1710。例如,加速计1741、环境光传感器(ALS)1742、罗盘1743和陀螺仪1744可通信地耦合到传感器中枢1740。热传感器1739、风扇1737、键盘1746和触摸板1730可通信地耦合到EC1735。扬声器1763、耳机1764和麦克风1765可通信地耦合到音频单元1764,其进而可通信地耦合到DSP 1760。音频单元1764可包括例如音频编解码器和D类放大器。SIM卡1757可通信地耦合到WWAN单元1756。诸如WLAN单元1750和蓝牙单元1752以及WWAN单元1756之类的组件可以以下一代形状因子(NGFF)来实现。
在一些情况下,使用根据实施例的指令的软件实用程序可以具有与位掩码(mask)不同的应用编程接口(API)。例如,实用程序可以仅接受百分比,并且使用正确的位掩码作为该指令的参数。
现在参考图18,示出根据一个或多个实施例的示例的图1800。如图18中所示,源寄存器1810包括十六个数据元素A1-A16,并且目的寄存器1820包括四个数据元素B1-B4。假定使用源寄存器1810的元素作为输入阵列并且向目的寄存器1820提供输出阵列来执行部分减少指令。进一步假定部分减少指令要执行每个数据元素的四比一减少。相应地,源寄存器1810可以被分成四个相等的通道。在一个或多个实施例中,执行部分减少指令使得在每个通道中执行部分减少操作。进一步地,在每个通道中执行的部分减少操作减少通道中包括的多个数据元素,并且导致目的寄存器1820的单个数据元素。例如,在通道1中,数据元素A1-A4的部分减少操作可产生输出元素B1。类似地,部分减少操作可分别在通道2、通道3和通道4中单独地执行,并且可分别生成输出元素B2、B3和B4。在一些场景中,部分减少操作1800可使得能够并行执行四个计算。相应地,在一些实施例中,可减少完成总体计算所需的时间。
在一个或多个实施例中,指令集架构(ISA)可包括部分减少指令的多个变体。例如,ISA可包括对应于不同类型的减少操作的部分减少指令的变体,所述不同类型的减少操作诸如加法、减法、乘法、最大值、最小值等。进一步地,ISA可包括对应于不同数据类型和/或长度的部分减少指令的变体,所述不同数据类型和/或长度诸如字节整数、字整数、双字整数、四字整数、单精度浮点、双精度浮点等。此外,部分减少指令的变体可基于任何其它特性。
在一个或多个实施例中,ISA可包括对应于特性的不同组合的部分减少指令的变体。例如,ISA可包括对应于加法运算和双字整数数据类型的部分减少指令的变体。在另一个示例中,ISA可包括对应于乘法运算和单精度浮点数据类型的部分减少指令的变体。设想其它变化或组合。
在一个或多个实施例中,部分减少指令可使用任何数量为N的通道。例如,通道的数量N可以是二的任何倍数(例如,2、4、6、8等)。
在一个或多个实施例中,可根据任何数量的操作数来执行每个部分减少指令。例如,部分减少指令可使用输入操作数来指定输入阵列的位置。输入操作数可包括源寄存器。进一步地,部分减少指令可使用输出操作数来指定存储输出阵列的位置。输出操作数可包括目的寄存器。
在一个或多个实施例中,编译器可标识可使用部分减少指令的程序结构和/或位置。例如,编译器可确定程序包括用于具有低于定义的阈值(例如,四个或更少)的行程计数的减少操作的嵌套循环。响应于该确定,编译器可使用部分减少指令。进一步地,在一些实施例中,程序员可在编写程序时指定使用部分减少指令。
在一些实施例中,部分减少指令可与输入掩蔽和/或输出掩蔽一起使用。例如,部分减少指令可基于输入掩码中指示的元素位置而使用输入阵列的数据元素。进一步地,部分减少指令可基于输出掩码中指示的元素位置而生成输出阵列的数据元素。在一些实施例中,可在掩码寄存器(未示出)中提供这样的掩码。
现在参考图19,示出了根据一个或多个实施例的方法1900的流程图。方法1900可由处理器中包括的逻辑执行。在一些实施例中,这样的逻辑可被实现为硬件电路、软件和/或固件的组合。除了各种表和其它控制逻辑之外,这样的逻辑还可包括控制寄存器、诸如一个或多个算术逻辑单元之类的计算逻辑、通信电路和存储器访问电路。为了说明起见,下面可以参照图20描述方法1900中涉及的各种块,图20示出根据一个或多个实施例的示例操作的框图2000。然而,本文中所讨论的各种实施例的范围在这点上不受限制。
如图19中所示,在块1910处,可接收部分减少指令。例如,参考图20,获取逻辑2010获取在指令流中包括的部分减少指令。
在块1920处,可解码部分减少指令以获得解码的指令。例如,参考图20,解码逻辑2020解码部分减少指令,从而提供解码的部分减少指令。
在块1930处,可将解码的指令分配给一个或多个执行单元。例如,参考图20,调度器/分配器逻辑2030将解码的部分减少指令分配给一个或多个执行单元2040。在一些实施例中,执行单元2040可被包括在各种处理器核中。
在块1940处,可响应于解码的指令而执行多个N个部分减少操作,其中在输入阵列中包括的N个通道中的一个中执行每个部分减少操作。进一步地,每个部分减少操作可生成输出元素。例如,参考图20,执行单元2040可从源寄存器2050接收输入阵列,并且可在输入阵列的N个通道中的每个中执行单独的部分减少操作。执行单元2040可生成N个输出元素(例如,图18中所示的元素B1-B4),作为N个部分减少操作的结果。
在块1950处,可将N个输出元素存储在目的寄存器中。例如,参考图20,可将N个输出元素存储在目的寄存器2060中。在块1950之后,方法1900完成。
注意:图18-20中所示的示例为了说明起见而被提供,并且不意图限制任何实施例。特别地,设想图18-20中所示的示例中的细节可用在一个或多个实施例中的任何地方。其它变化被设想且可用在各种实施例中。
根据本文中所描述的实施例,部分减少指令可在输入阵列中包括的多个通道中执行单独的部分减少操作。在一个或多个实施例中,可并行执行部分减少操作。照此,在一些场景中,部分减少指令可减少完成总体计算所需的时间。例如,使用部分减少指令可导致改善包括具有小行程计数的嵌套循环的程序的性能。
下面的示例关于进一步的实施例。
在一个示例中,处理器包括:用来获取指令的获取逻辑,该指令包括部分减少指令;用来对部分减少指令进行解码并向一个或多个执行单元提供解码的部分减少指令的解码逻辑;并且所述一个或多个执行单元将响应于解码的部分减少指令而执行多个N个部分减少操作以生成包括N个输出数据元素的结果阵列,其中输入阵列包括N个通道,其中N个部分减少操作中的每个将使N个通道的对应通道中包括的输入数据元素的集合减小。
在示例中,输入阵列的N个通道中的每个包括相同数量的输入数据元素。
在示例中,处理器进一步包括多个核,其中每个核包括所述一个或多个执行单元中的一个。
在示例中,输入数据元素中的每个是从字节整数、字整数、双字整数、四字整数、单精度浮点数和双精度浮点数中选择的一个。
在示例中,处理器进一步包括多个寄存器。在示例中,所述多个寄存器包括用来存储输入阵列的源寄存器。在示例中,所述多个寄存器包括用来存储结果阵列的目的寄存器。
在示例中,每个部分减少操作是使用从加法、减法、乘法、最小值和最大值中选择的操作来使输入数据元素的集合减小。
在一个示例中,一种方法包括:由处理器接收部分减少指令和源操作数,源操作数指定包括多个通道的输入阵列;以及对于所述多个通道中的每个通道,执行在通道中包括的多个输入数据元素的部分减少操作以生成输出数据元素。
在示例中,该方法进一步包括在目的寄存器中存储生成的输出数据元素。在示例中,在目的操作数中指定目的寄存器。
在示例中,输入数据元素中的每个是从字节整数、字整数、双字整数、四字整数、单精度浮点数和双精度浮点数中选择的一个。
在示例中,部分减少操作是从加法、减法和乘法中选择的一个。
在示例中,所述多个通道包括数量为N的通道,其中通道的数量N是二的倍数。
在示例中,执行部分减少指令导致包括N个输出数据元素的输出阵列。
在一个示例中,一种机器可读介质在其上存储有数据,该数据如果由至少一个机器使用则使所述至少一个机器制造至少一个集成电路以执行根据以上示例中的任何一个的方法。
在一个示例中,一种用于处理指令的装置被配置成执行以上示例中的任何一个的方法。
在示例中,一种系统包括耦合到平台存储器的处理器。处理器包括用来存储包括N个通道的输入阵列的源寄存器。处理器进一步包括执行逻辑,所述执行逻辑将响应于部分减少指令的接收而:在每个通道中,执行在通道中包括的输入数据元素的集合的部分减少操作,并且生成包括N个输出数据元素的结果阵列。
在示例中,该系统进一步包括用来接收结果阵列的目的寄存器。
在示例中,执行逻辑包括多个执行单元,并且其中所述多个执行单元并行执行N个部分减少操作。
在示例中,该系统进一步包括用来对部分减少指令进行解码的解码器。
在示例中,部分减少指令是多个部分减少指令中的一个,其中所述多个部分减少指令中的每个与减少操作的类型和数据类型的独特组合相关联。
在示例中,部分减少操作是从加法、减法和乘法中选择的一个。
在示例中,数量N是二的倍数。
在一个示例中,一种机器可读介质在其上存储有数据,该数据如果由至少一个机器使用则使所述至少一个机器制造至少一个集成电路以执行方法,该方法包括:由处理器接收部分减少指令和源操作数,该源操作数指定包括多个通道的输入阵列;并且对于所述多个通道中的每个通道,执行在通道中包括的多个输入数据元素的部分减少操作以生成输出数据元素。
在示例中,由所述至少一个集成电路执行的方法进一步包括在目的寄存器中存储生成的输出数据元素。
在示例中,在目的操作数中指定目的寄存器。
在示例中,输入数据元素中的每个是从字节整数、字整数、双字整数、四字整数、单精度浮点数和双精度浮点数中选择的一个。
在示例中,部分减少操作是从加法、减法和乘法中选择的一个。
在示例中,所述多个通道包括数量为N的通道,其中通道的数量N是二的倍数。
在示例中,执行部分减少指令导致包括N个输出数据元素的输出阵列。
理解以上示例的各种组合是可能的。
实施例可用在许多不同类型的系统中。例如,在一个实施例中,通信设备可以被布置成执行本文中所描述的各种方法和技术。当然,本发明的范围不限于通信设备,并且相反,其它实施例可以针对用于处理指令的其它类型的装置或者包括指令的一个或多个机器可读介质,该指令响应于被在计算设备执行而使该设备执行本文中所描述的方法和技术中的一个或多个。
实施例可用代码来实现,并且可被存储在其上存储有指令的非暂时性存储介质上,该指令可以用于对系统进行编程以执行指令。实施例还可以用数据来实现,并且可被存储在非暂时性存储介质上,如果所述数据由至少一个机器使用则使所述至少一个机器制造至少一个集成电路以执行一个或多个操作。更进一步的实施例可以用包括信息的计算机可读存储介质来实现,其在被制造到SoC或其它处理器中时将会将SoC或其它处理器配置成执行一个或多个操作。存储介质可以包括但不限于包括软盘、光盘、固态驱动器(SSD)、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)和磁光盘的任何类型的盘,诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡之类的半导体器件,或者适于存储电子指令的任何其它类型的介质。
虽然已经关于有限数量的实施例描述了本发明,但是本领域技术人员将领会到从其的许多修改和变化。意图所附权利要求书覆盖如落入本发明的真实精神和范围内的所有这样的修改和变化。
Claims (24)
1.一种处理器,包括:
用来获取指令的获取逻辑,所述指令包括部分减少指令;
用来对部分减少指令进行解码并向一个或多个执行单元提供解码的部分减少指令的解码逻辑;并且
所述一个或多个执行单元将响应于解码的部分减少指令而执行多个N个部分减少操作以生成包括N个输出数据元素的结果阵列,其中输入阵列包括N个通道,其中N个部分减少操作中的每个将使在N个通道的对应通道中包括的输入数据元素的集合减小。
2.根据权利要求1所述的处理器,其中输入阵列的N个通道中的每个包括相同数量的输入数据元素。
3.根据权利要求1所述的处理器,进一步包括多个核,其中每个核包括所述一个或多个执行单元中的一个。
4.根据权利要求1所述的处理器,其中输入数据元素中的每个是从字节整数、字整数、双字整数、四字整数、单精度浮点数和双精度浮点数中选择的一个。
5.根据权利要求1所述的处理器,进一步包括多个寄存器。
6.根据权利要求5所述的处理器,其中所述多个寄存器包括用来存储输入阵列的源寄存器。
7.根据权利要求5所述的处理器,其中所述多个寄存器包括用来存储结果阵列的目的寄存器。
8.根据权利要求1所述的处理器,其中每个部分减少操作是使用从加法、减法、乘法、最小值和最大值中选择的操作来使输入数据元素的集合减小。
9.一种方法,包括:
由处理器接收部分减少指令和源操作数,源操作数指定包括多个通道的输入阵列;以及
对于所述多个通道中的每个通道,执行在通道中包括的多个输入数据元素的部分减少操作以生成输出数据元素。
10.根据权利要求9所述的方法,进一步包括:
在目的寄存器中存储生成的输出数据元素。
11.根据权利要求10所述的方法,其中在目的操作数中指定目的寄存器。
12.根据权利要求9所述的方法,其中输入数据元素中的每个是从字节整数、字整数、双字整数、四字整数、单精度浮点数和双精度浮点数中选择的一个。
13.根据权利要求9所述的方法,其中部分减少操作是从加法、减法和乘法中选择的一个。
14.根据权利要求9所述的方法,其中所述多个通道包括数量为N的通道,其中通道的数量N是二的倍数。
15.根据权利要求14所述的方法,其中执行部分减少指令导致包括N个输出数据元素的输出阵列。
16.一种其上存储有数据的机器可读介质,所述数据如果由至少一个机器使用则使所述至少一个机器制造至少一个集成电路以执行根据权利要求9至15中任一项所述的方法。
17.一种用于处理指令的装置,被配置成执行根据权利要求9至15中任一项所述的方法。
18.一种系统,包括:
处理器,其包括:
源寄存器,用来存储包括N个通道的输入阵列;
执行逻辑,用来响应于部分减少指令的接收而:
在每个通道中,执行在通道中包括的输入数据元素的集合的部分减少操作,以及
生成包括N个输出数据元素的结果阵列;以及
平台存储器,其耦合到处理器。
19.根据权利要求18所述的系统,进一步包括用来接收结果阵列的目的寄存器。
20.根据权利要求18所述的系统,其中执行逻辑包括多个执行单元,并且其中所述多个执行单元并行执行N个部分减少操作。
21.根据权利要求18所述的系统,进一步包括用来对部分减少指令进行解码的解码器。
22.根据权利要求18所述的系统,其中部分减少指令是多个部分减少指令中的一个,其中所述多个部分减少指令中的每个与减少操作的类型和数据类型的独特组合相关联。
23.根据权利要求18所述的系统,其中部分减少操作是从加法、减法和乘法中选择的一个。
24.根据权利要求18所述的系统,其中N是二的倍数。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/968990 | 2015-12-15 | ||
US14/968,990 US20170168819A1 (en) | 2015-12-15 | 2015-12-15 | Instruction and logic for partial reduction operations |
PCT/US2016/060951 WO2017105670A1 (en) | 2015-12-15 | 2016-11-08 | Instruction and logic for partial reduction operations |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108351785A true CN108351785A (zh) | 2018-07-31 |
Family
ID=59020031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680066728.1A Pending CN108351785A (zh) | 2015-12-15 | 2016-11-08 | 用于部分减少操作的指令和逻辑 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20170168819A1 (zh) |
EP (1) | EP3391201A4 (zh) |
CN (1) | CN108351785A (zh) |
TW (1) | TW201723810A (zh) |
WO (1) | WO2017105670A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11579883B2 (en) * | 2018-09-14 | 2023-02-14 | Intel Corporation | Systems and methods for performing horizontal tile operations |
US10896043B2 (en) * | 2018-09-28 | 2021-01-19 | Intel Corporation | Systems for performing instructions for fast element unpacking into 2-dimensional registers |
US11294670B2 (en) * | 2019-03-27 | 2022-04-05 | Intel Corporation | Method and apparatus for performing reduction operations on a plurality of associated data element values |
WO2020220935A1 (zh) * | 2019-04-27 | 2020-11-05 | 中科寒武纪科技股份有限公司 | 运算装置 |
US11841822B2 (en) | 2019-04-27 | 2023-12-12 | Cambricon Technologies Corporation Limited | Fractal calculating device and method, integrated circuit and board card |
US20240004647A1 (en) * | 2022-07-01 | 2024-01-04 | Andes Technology Corporation | Vector processor with vector and element reduction method |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030208518A1 (en) * | 2002-05-01 | 2003-11-06 | Sun Microsystems, Inc. | Generic implementations of ellipitic curve cryptography using partial reduction |
WO2013095658A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing a horizontal add or subtract in response to a single instruction |
US20140095842A1 (en) * | 2012-09-28 | 2014-04-03 | Paul Caprioli | Accelerated interlane vector reduction instructions |
CN103827813A (zh) * | 2011-09-26 | 2014-05-28 | 英特尔公司 | 用于提供向量分散操作和聚集操作功能的指令和逻辑 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8356185B2 (en) * | 2009-10-08 | 2013-01-15 | Oracle America, Inc. | Apparatus and method for local operand bypassing for cryptographic instructions |
EP2798467A4 (en) * | 2011-12-30 | 2016-04-27 | Intel Corp | CONFIGURABLE CORE WITH RESTRICTED COMMAND SET |
CN104204989B (zh) * | 2012-03-30 | 2017-10-13 | 英特尔公司 | 用于选择向量计算的元素的装置和方法 |
US9348558B2 (en) * | 2013-08-23 | 2016-05-24 | Texas Instruments Deutschland Gmbh | Processor with efficient arithmetic units |
-
2015
- 2015-12-15 US US14/968,990 patent/US20170168819A1/en not_active Abandoned
-
2016
- 2016-10-27 TW TW105134777A patent/TW201723810A/zh unknown
- 2016-11-08 WO PCT/US2016/060951 patent/WO2017105670A1/en unknown
- 2016-11-08 EP EP16876259.9A patent/EP3391201A4/en active Pending
- 2016-11-08 CN CN201680066728.1A patent/CN108351785A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030208518A1 (en) * | 2002-05-01 | 2003-11-06 | Sun Microsystems, Inc. | Generic implementations of ellipitic curve cryptography using partial reduction |
CN103827813A (zh) * | 2011-09-26 | 2014-05-28 | 英特尔公司 | 用于提供向量分散操作和聚集操作功能的指令和逻辑 |
WO2013095658A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing a horizontal add or subtract in response to a single instruction |
US20140095842A1 (en) * | 2012-09-28 | 2014-04-03 | Paul Caprioli | Accelerated interlane vector reduction instructions |
Also Published As
Publication number | Publication date |
---|---|
EP3391201A4 (en) | 2019-11-13 |
TW201723810A (zh) | 2017-07-01 |
US20170168819A1 (en) | 2017-06-15 |
EP3391201A1 (en) | 2018-10-24 |
WO2017105670A1 (en) | 2017-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108292215B (zh) | 用于加载-索引和预取-聚集操作的指令和逻辑 | |
CN108369509B (zh) | 用于基于通道的跨步分散操作的指令和逻辑 | |
CN103793201B (zh) | 提供向量压缩和旋转功能的指令和逻辑 | |
CN108369516B (zh) | 用于加载-索引和预取-分散操作的指令和逻辑 | |
CN108292229B (zh) | 用于重新出现的相邻聚集的指令和逻辑 | |
CN108475193A (zh) | 字节排序指令和四位组排序指令 | |
CN106030518B (zh) | 用于整理和退出存储的处理器、方法、系统和装置 | |
CN108351779A (zh) | 用于安全指令执行流水线的指令和逻辑 | |
CN105745630B (zh) | 用于在集群宽执行机器中的存储器访问的指令和逻辑 | |
CN108351784B (zh) | 用于在乱序处理器中进行有序处理的指令和逻辑 | |
CN108351863A (zh) | 用于可编程结构层级结构和高速缓存的指令和逻辑 | |
CN108369511A (zh) | 用于基于通道的跨步存储操作的指令和逻辑 | |
CN108139905A (zh) | 用于从持久存储器预取信息的指令和逻辑 | |
CN108369513A (zh) | 用于加载-索引-和-收集操作的指令和逻辑 | |
CN108351835A (zh) | 用于高速缓存控制操作的指令和逻辑 | |
CN108351785A (zh) | 用于部分减少操作的指令和逻辑 | |
CN108292232A (zh) | 用于加载索引和分散操作的指令和逻辑 | |
TW201723817A (zh) | 用於取得多重向量元素操作之指令及邏輯 | |
CN108369518A (zh) | 用于位字段寻址和插入的指令和逻辑 | |
CN108369573A (zh) | 用于设置多个向量元素的操作的指令和逻辑 | |
CN107003839A (zh) | 用于移位和乘法器的指令和逻辑 | |
CN106575219A (zh) | 针对用于处理运算的向量格式的指令和逻辑技术领域 | |
CN108701101A (zh) | 处理器系统管理中断事件的基于仲裁器的串行化 | |
CN108292271B (zh) | 用于向量置换的指令和逻辑 | |
CN108369571A (zh) | 用于偶数和奇数向量get操作的指令和逻辑 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180731 |