CN106575219A - 针对用于处理运算的向量格式的指令和逻辑技术领域 - Google Patents

针对用于处理运算的向量格式的指令和逻辑技术领域 Download PDF

Info

Publication number
CN106575219A
CN106575219A CN201580045880.7A CN201580045880A CN106575219A CN 106575219 A CN106575219 A CN 106575219A CN 201580045880 A CN201580045880 A CN 201580045880A CN 106575219 A CN106575219 A CN 106575219A
Authority
CN
China
Prior art keywords
instruction
vector
processor
data
depositor
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.)
Granted
Application number
CN201580045880.7A
Other languages
English (en)
Other versions
CN106575219A8 (zh
CN106575219B (zh
Inventor
C.R.扬特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN106575219A publication Critical patent/CN106575219A/zh
Publication of CN106575219A8 publication Critical patent/CN106575219A8/zh
Application granted granted Critical
Publication of CN106575219B publication Critical patent/CN106575219B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • G06F30/23Design optimisation, verification or simulation using finite element methods [FEM] or finite difference methods [FDM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2115/00Details relating to the type of the circuit
    • G06F2115/10Processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)
  • Complex Calculations (AREA)

Abstract

一种处理器,包括用于获取指令的前端。所述指令要使用来自在多个维度中的多个相邻源数据的输入来计算数据点。处理器包括用于解码指令的解码器。处理器还包括核,所述核用于基于解码的指令执行多个表格向量读操作以读多个相邻源数据以及执行表格向量计算以执行指令。表格向量计算基于执行多个表格向量读操作的结果。所述核还要写入所述表格向量计算的结果。

Description

针对用于处理运算的向量格式的指令和逻辑技术领域
技术领域
本公开涉及处理逻辑、微处理器以及关联的指令集架构的领域,指令集架构当由处理器或其它处理逻辑执行时执行逻辑、数学或其它功能操作。
背景技术
微处理器系统正变得越来越普遍。多处理器系统的应用包含动态域分区,一直到桌面运算(computing)。为了利用多处理器系统,要执行的代码可被分成多个线程以便由各种处理实体执行。每个线程可彼此并行执行。更进一步,为了增大处理实体的效用,可采用无序执行。当使对此类指令的输入可用时,无序执行可执行指令。从而,在代码序列中后面出现的指令可在代码序列中较早出现的指令之前执行。
附图描述:
在附图的图中通过示例而非限制示出了实施例:
图1A是按照本公开的实施例用可包含执行指令的执行单元的处理器形成的示范计算机系统的框图;
图1B示出了按照本公开的实施例的数据处理系统;
图1C示出了用于执行文本字符串比较操作的数据处理系统的其它实施例;
图2是按照本公开的实施例可包含执行指令的逻辑电路的处理器的微架构的框图;
图3A示出了按照本公开的实施例的多媒体寄存器中的各种压缩(packed)数据类型表示;
图3B示出了按照本公开的实施例的可能寄存器中的数据存储格式;
图3C示出了按照本公开的实施例的多媒体寄存器中的各种有符号和无符号的压缩数据类型表示;
图3D示出了操作编码格式的实施例;
图3E示出了按照本公开的实施例的具有40位或更多位的另一可能操作编码格式;
图3F示出了按照本公开的实施例的又一可能操作编码格式;
图4A是示出按照本公开实施例的有序流水线和寄存器重命名阶段、无序发布/执行流水线的框图;
图4B是示出按照本公开实施例的要包含在处理器中的有序架构核以及寄存器重命名逻辑、无序发布/执行逻辑的框图;
图5A是按照本公开实施例的处理器的框图;
图5B是按照本公开实施例的核的示例实现的框图;
图6是按照本公开实施例的系统的框图;
图7是按照本公开实施例的第二系统的框图;
图8是按照本公开实施例的第三系统的框图;
图9是按照本公开实施例的片上系统的框图;
图10示出了按照本公开的实施例的可执行至少一个指令的含有中央处理单元和图形处理单元的处理器;
图11是示出按照本公开实施例的开发IP核的框图;
图12示出根据本公开的实施例的可如何由不同类型的处理器仿真第一类型的指令;
图13示出根据本公开的实施例的对比将源指令集中的二进制指令转换成目标指令集中二进制指令的软件指令转换器的使用的框图;
图14是根据本公开的实施例的处理器的指令集架构的框图;
图15是根据本公开的实施例的处理器的指令集架构的更详细框图;
图16是根据本公开的实施例的用于处理器的执行流水线的框图;
图17是根据本公开的实施例的用于利用处理器的电子装置的框图;
图18是根据本公开的实施例的针对用于处理运算的向量格式的系统1800的示例实施例的框图。
图19是根据本公开的实施例的示例有限差分函数的图示。
图20是根据本公开的实施例的有限差分函数的示例操作的图示。
图21是根据本公开的实施例的各向异性函数的示例操作的图示。
图22是根据本公开的实施例的基于表格(tabular)向量读进行计算的系统的示例操作的图示。
图23是根据本公开的实施例的用于应用用于处理运算的向量格式的方法的示例实施例的流程图。
具体实施方式
如下描述描述了针对用于处理运算的向量格式的指令和处理逻辑。在一个实施例中,此类格式可包括表格格式。在另一个实施例中,此类运算可包括有限差分运算。例如运算可包括微分方程计算或估计、多维各向同性函数或各向异性函数。然而,本领域技术人员将认识到,没有此类特定细节也可实施实施例。此外,一些众所周知的结构、电路等未详细示出,以避免不必要地使本公开的实施例模糊不清。
尽管如下实施例参考处理器进行描述,但其它实施例可应用于其它类型集成电路和逻辑器件。本公开实施例的类似技术和教导可应用于可受益于更高流水线吞吐量和改进性能的其它类型电路或半导体器件。本公开实施例的教导可应用于执行数据操纵的任何处理器或机器。然而,实施例不限于执行512位、256位、128位、64位、32位或16位数据操作的处理器或机器,并且可应用于可执行数据操纵或管理的任何处理器和机器。此外,如下描述提供了示例,并且附图为了示出目的示出了各种示例。然而,这些示例不应被视为限制意义,因为它们仅仅预期提供本公开实施例的示例,而不是提供本公开的实施例的所有可能实现的详尽列表。
尽管以下示例在执行单元和逻辑电路的上下文中描述了指令处置和分发(distribute),但本公开的其它实施例可通过存储在机器可读有形介质上的数据或指令实现,所述指令当由机器执行时使机器执行与本公开的至少一个实施例一致的功能。在一个实施例中,与本公开实施例关联的功能体现在机器可执行指令中。指令可用于使可用指令编程的通用或专用处理器执行本公开的步骤。本公开的实施例可提供为计算机程序产品或软件,该产品或软件可包括机器或计算机可读媒体,其上存储有可用于编程计算机(或其它电子装置)以执行根据本公开的实施例的一个或多个操作的指令。更进一步,本公开的实施例的步骤可能由包含用于执行所述步骤的固定功能逻辑的特定硬件组件执行,或者由编程的计算机组件和固定功能硬件组件的任何组合执行。
用于对逻辑编程以执行本公开的实施例的指令可被存储在系统中的存储器内,诸如DRAM、高速缓存、闪存或其它存储装置内。更进一步,指令可经由网络或通过其它计算机可读媒体分发。从而,机器可读介质可包含用于存储或传送由机器(例如计算机)可读形式的信息的任何机制,但不限于软盘、光盘、光盘只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存或在因特网上经由电、光、声或其它形式传播信号(例如载波、红外信号、数字信号等)传送信息中使用的有形机器可读存储装置。相应地,计算机可读介质可包含适合于存储或传送由机器(例如计算机)可读形式的电子指令或信息的任何类型有形机器可读介质。
设计从创建到模拟到制造可经过各种阶段。表示设计的数据可用多种方式表示该设计。首先,如在模拟中可能有用的,硬件可使用硬件描述语言或另一功能描述语言表示。此外,在设计过程的某些阶段,可产生具有逻辑和/或晶体管栅的电路级模型。更进一步,设计在某一阶段可达到用硬件模型表示各种装置的物理布置的数据级。在其中使用一些半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于产生集成电路的掩模(mask)的不同掩模层上存在或缺乏各种特征的数据。在设计的任何表示中,数据都可存储在任何形式的机器可读介质中。存储器或者磁或光存储装置(诸如盘)可以是机器可读介质,以存储经由调制或以其它方式生成以传送信息的光波或电波传送的此类信息。在传送指示或携带代码或设计的电载波时,就执行电信号的复制、缓冲或重新传送而言,可进行新的拷贝。从而,通信提供商或网络提供商可在有形机器可读介质上至少暂时存储体现本公开实施例的技术的物品,诸如编码到载波中的信息。
在现代处理器中,可使用若干不同执行单元来处理和执行各种代码和指令。一些指令可能更快地完成,而其它指令可能花了若干时钟周期完成。指令吞吐量越快,处理器的总体性能越好。从而,使许多指令尽可能快地执行会是有利的。然而,可存在具有更大复杂性并且在执行时间和处理器资源方面要求更大的某些指令,如浮点指令、加载/存储操作、数据移动等。
当在因特网、文本和多媒体应用中使用更多计算机系统时,已经随时间引入了附加处理器支持。在一个实施例中,指令集可与一个或多个计算机架构关联,包含数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处置以及外部输入和输出(I/O)。
在一个实施例中,指令集架构(ISA)可由一个或多个微架构实现,微架构可包含用于实现一个或多个指令集的处理器逻辑和电路。相应地,具有不同微架构的处理器至少可共享部分公共指令集。例如,Intel® Pentium 4处理器、Intel® Core™处理器以及来自加利福尼亚州,Sunnyvale 的Advanced Micro devices, Inc的处理器实现了几乎相同版本的x86指令集(具有已经用较新版本添加的一些扩展),但具有不同的内部设计。类似地,由其它处理器开发公司(诸如ARM Holding, Ltd、MIPS或他们的许可方或采纳方)设计的处理器至少可共享一部分公共指令集,但可包含不同处理器设计。例如,ISA的相同寄存器架构可使用新或公知的技术在不同微架构中以不同方式实现,包括专用物理寄存器、使用寄存器重命名机制(例如,使用寄存器别名表(RAT)、重新排序缓冲器(ROB)和引退寄存器文件)的一个或多个动态分配的物理寄存器。在一个实施例中,寄存器可包括一个或多个寄存器、寄存器架构、寄存器文件或可以或可以不由软件程序器寻址的其它寄存器集。
指令可包含一个或多个指令格式。在一个实施例中,除了其它东西外,指令格式还可指示要指定的各种字段(位数、位的位置等)、要执行的操作以及在其上将执行操作的操作数。在另外实施例中,一些指令格式可由指令样板(template)(或子格式)进一步定义。例如,给定指令格式的指令样板可被定义成具有指令格式字段的不同子集,和/或定义成具有不同解释的给定字段。在一个实施例中,指令可使用指令格式(并且如果定义了,则在那个指令格式的指令样板中的给定一个样板中)表述,并且指定或指示操作和操作数(将对所述操作数执行操作)。
科学、金融、自动向量化通用、RMS(识别、挖掘和合成)及视觉和多媒体应用(例如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频操纵)可要求对大量数据项执行相同操作。在一个实施例中,单指令多数据(SIMD)指使得处理器对多个数据元素执行操作的指令的类型。在逻辑上可将寄存器中的比特划分成多个固定大小或可变大小数据元素(每个元素表示单独的值)的SIMD技术可使用在处理器中。例如,在一个实施例中,可将64比特寄存器中的比特组织为包含4个单独16比特数据元素的源操作数,每个元素表示单独的16比特值。此类型的数据可称为“压缩(packed)”数据类型或“向量”数据类型,并且此数据类型的操作数可称为压缩数据操作数或向量操作数。在一个实施例中,压缩数据项或向量可以是在单个寄存器内存储的压缩数据元素的序列,并且压缩数据操作数或向量操作数可以是SIMD指令(或“压缩数据指令”或“向量指令”)的源或目的地操作数。在一个实施例中,SIMD指令指定要对两个源向量操作数执行的单向量操作,生成相同或不同大小的具有相同或不同数量的数据元素和以相同或不同的数据元素顺序的目的地向量操作数(也称为结果向量操作数)。
例如由具有包括x86、MMX™、流播SIMD扩展(SSE)、SSE2、SSE3、SSE4.1及SSE4.2指令的指令集的Intel® Core™处理器,诸如ARM Cortex®系列处理器的具有包括向量浮点(VFP)和/或NEON指令的指令集的ARM处理器和诸如由中国科学院的计算技术研究所(ICT)开发的龙芯系列处理器的MIPS处理器采用的SIMD技术已经在应用性能方面实现了相当大的改进(Core™和MMX™是加利福尼亚州Santa Clara的Intel Corporation的注册商标或商标)。
在一个实施例中,目的地和源寄存器/数据可以是表示对应数据或操作的源和目的地的常规术语。在一些实施例中,它们可通过具有与描绘的那些名称或功能不同的名称或功能的寄存器、存储器或其它存储区域来实现。例如,在一个实施例中,“DEST1”可以是临时存储寄存器或其它存储区域,而“SRC1”和“SRC2”可以是第一和第二源存储寄存器或其它存储区域并以此类推。在其它实施例中,两个或更多个SRC和DEST存储区域可对应于相同存储区域(例如,SIMD寄存器)内的不同数据存储元素。在一个实施例中,例如通过将对第一和第二源数据执行的操作的结果写回到用作目的地寄存器的两个源寄存器中的一个,源寄存器之一也可充当目的地寄存器。
图1A是根据本公开的实施例的用可包括执行单元以执行指令的处理器形成的示范计算机系统的框图。根据本公开(例如本文描述的实施例中的),系统100可包括诸如处理器102的组件,以采用包括执行用于处理数据的算法的逻辑的执行单元。系统100可表示基于根据加利福尼亚州Santa Clara的Intel Corporation可用的PENTIUM® III、PENTIUM®4、Xeon™、Itanium®、XScale™和/或StrongARM™微处理器的处理系统,尽管也可使用其它系统(包括具有其它微处理器的PC、工程工作站、机顶盒及诸等)。在一个实施例中,示例系统100可执行根据华盛顿Redmond的Microsoft Corporation可用的一版本的Windows™操作系统,尽管也可使用其它操作系统(例如,UNIX和Linux)、嵌入式软件和/或图形用户界面。因此,本公开的实施例不限于硬件电路和软件的任何特定组合。
实施例并不限于计算机系统。本公开的实施例可在诸如手持式装置和嵌入式应用的其它装置中使用。手持式装置的一些示例包括蜂窝电话、因特网协议装置、数码相机、个人数字助理(PDA)及手持式PC。嵌入式应用可包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、宽域网(WAN)交换机或可执行根据至少一个实施例的一个或多个指令的任何其它系统。
计算机系统100可包含处理器102,处理器102可包含一个或多个执行单元108以执行按照本公开一个实施例执行至少一个指令的算法。一个实施例可在单个处理器桌上型计算机或服务器系统的上下文中描述,而其它实施例可包含在多处理器系统中。系统100可以是“集线器”系统架构的示例。系统100可包含用于处理数据信号的处理器102。处理器102可包含复杂指令集计算机(CISC)微处理器、精简指令集运算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集组合的处理器或任何其它处理器装置,诸如例如数字信号处理器。在一个实施例中,处理器102可耦合到处理器总线110,其可在处理器102与系统100中的其它组件之间传送数据信号。系统100的元件可执行本领域技术人员众所周知的常规功能。
在一个实施例中,处理器102可包含一级(L1)内部高速缓冲存储器104。取决于架构,处理器102可具有单个内部高速缓存或多级内部高速缓存。在另一实施例中,高速缓冲存储器可驻留在处理器102外部。取决于具体实现和需要,其它实施例也可包含内部和外部高速缓存的组合。寄存器文件106可将不同类型的数据存储在各种寄存器中,包含整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器。
执行单元108(包含执行整数和浮点操作的逻辑)也驻留在处理器102中。处理器102也可包含存储某些宏指令的微代码的微代码(ucode)ROM。在一个实施例中,执行单元108可包含处置压缩指令集109的逻辑。通过在通用处理器102的指令集中包括压缩指令集109,连同执行指令的关联电路,可使用通用处理器102中的压缩数据执行由许多多媒体应用使用的操作。从而,通过使用处理器的数据总线的完全宽度来对压缩数据执行操作,可加速和更有效地执行许多多媒体应用。这可消除跨处理器的数据总线传输更小数据单元来一次一个数据元素执行一个或多个操作的需要。
执行单元108的实施例也可用在微控制器、嵌入式处理器、图形装置、DSP以及其它类型逻辑电路中。系统100可包含存储器120。存储器120可实现为动态随机存取存储器(DRAM)装置、静态随机存取存储器(SRAM)装置、闪存装置或其它存储器装置。存储器120可存储由数据信号表示的可由处理器102执行的指令和/或数据。
系统逻辑芯片116可耦合到处理器总线110和存储器120。系统逻辑芯片116可包含存储器控制器集线器(MCH)。处理器102可经由处理器总线110与MCH 116通信。MCH 116可提供到存储器120的高带宽存储器路径118,其用于指令和数据存储以及用于图形命令、数据和文本的存储。MCH 116可在处理器102、存储器120和系统100中的其它组件之间引导数据信号,并在处理器总线110、存储器120和系统I/O 122之间桥接数据信号。在一些实施例中,系统逻辑芯片116可提供用于耦合到图形控制器112的图形端口。MCH 116可通过存储器接口118耦合到存储器120。图形卡112可通过加速图形端口(AGP)互连114耦合到MCH 116。
系统100可使用专有集线器接口总线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以及备选总线主(master)接口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)以及它们的相应逆变换;压缩/解压技术,诸如色彩空间变换、视频编码运动估计或视频解码运动补偿;以及调制/解调(MODEM)功能,诸如脉冲译码调制(PCM)。
图1C示出了执行SIMD文本字符串比较操作的数据处理系统的其它实施例。在一个实施例中,数据处理系统160可包含主处理器166、SIMD协处理器161、高速缓冲存储器167和输入/输出系统168。输入/输出系统168可选地可耦合到无线接口169。SIMD协处理器161可执行包含按照一个实施例的指令的操作。在一个实施例中,处理核170可适合于以一个或多个工艺技术的制造,并且通过充分详细地在机器可读媒体上表示,可适合于促进制造所有或部分数据处理系统160(包含处理核170)。
在一个实施例中,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协处理器指令的控制信号)。从协处理器总线166,可由任何附连的SIMD协处理器接收这些指令。在此情况下,SIMD协处理器161可接受并执行预期用于它的任何接收到SIMD协处理器指令。
数据可经由无线接口169接收以便由SIMD协处理器指令处理。对于一个示例,语音通信可以以数字信号形式接收,其可由SIMD协处理器指令处理以重新生成代表语音通信的数字音频样本。对于另一个示例,压缩的音频和/或视频可以数字位流形式接收,其可由SIMD协处理器指令处理以重新生成数字音频样本和/或运动视频帧。在处理核170的一个实施例中,主处理器166和SIMD协处理器161可被集成到单个处理核170中,其包括执行单元162、寄存器文件集合164和识别指令集163中的指令(包含按照一个实施例的指令)的解码器165。
图2是按照本公开的实施例的可包含执行指令的逻辑电路的处理器200的微架构的框图。在一些实施例中,可实现按照一个实施例的指令,以对具有字节、字、双字、四字等大小以及诸如单和双精度整数和浮点数据类型的数据类型的数据元素进行操作。在一个实施例中,有序前端201可实现处理器200的一部分,该部分可获得要执行的指令,并且准备在处理器流水线中以后要使用的指令。前端201可包含几个单元。在一个实施例中,指令预获取器226从存储器中获取指令,并将指令馈送到指令解码器228,其又解码或解释这些指令。例如,在一个实施例中,解码器将接收的指令解码成机器可执行的称为“微指令”或“微操作”(也称为microop或uop)的一个或多个操作。在其它实施例中,解码器将指令解析成操作码和对应的数据以及控制字段,它们可由微架构使用以执行按照一个实施例的操作。在一个实施例中,追踪(trace)高速缓存230可将解码的uop汇编成uop队列234中的程序排序的序列或追踪以便执行。当追踪高速缓存230遇到复杂指令时,微代码ROM 232提供完成该操作所需的uop。
一些指令可被转换成单个微-op,而其它指令需要几个微-op来完成整个操作。在一个实施例中,如果需要多于四个微-op来完成指令,则解码器228可访问微代码ROM 232以执行指令。在一个实施例中,指令可被解码成小数量的微-op,以便在指令解码器228进行处理。在另一实施例中,指令可被存储在微代码ROM 232内,如果需要若干微-op来完成操作的话。追踪高速缓存230指的是入口点可编程逻辑阵列(PLA),以确定正确的微指令指针,以便读微代码序列,以完成来自微代码ROM 232的按照一个实施例的一个或多个指令。在微代码ROM 232完成指令的微-op排序后,机器的前端201可恢复从追踪高速缓存230获取微-op。
无序执行引擎203可准备指令以便执行。无序执行逻辑具有多个缓冲器,以在指令沿流水线向下并且被调度用于执行时,平滑处理和重新排序指令的流以优化性能。分配器逻辑分配每个uop需要以便执行的机器缓冲器和资源。寄存器重命名逻辑将逻辑寄存器重命名到寄存器文件中的条目上。在指令调度器(存储器调度器、快速调度器202、慢速/通用浮点调度器204和简单浮点调度器206)前面,分配器还为两个uop队列(一个用于存储器操作,并且一个用于非存储器操作)之一中的每个uop分配条目。Uop调度器202、204、206基于其相关性输入寄存器操作数源的准备度和uop完成其操作需要的执行资源的可用性,确定uop何时准备就绪执行。一个实施例的快速调度器202可在主时钟周期的每半个周期上进行调度,而其它调度器可每主处理器时钟周期仅调度一次。调度器对于分派端口进行裁决以调度uop以便执行。
寄存器文件208、210可布置在调度器202、204、206与执行块211中的执行单元212、214、216、218、220、222、224之间。寄存器文件208、210中的每个分别执行整数操作和浮点操作。每个寄存器文件208、210可包含旁路网络,其可向新的相关uop旁路或转发尚未写入寄存器文件中的刚刚完成的结果。整数寄存器文件208和浮点寄存器文件210可相互传递数据。在一个实施例中,整数寄存器文件208被分成两个单独的寄存器文件,一个寄存器文件用于数据的低位32位,而第二寄存器文件用于数据的高位32位。浮点寄存器文件210可包含128位宽条目,因为浮点指令通常具有从64位到128位宽的操作数。
执行块211可含有执行单元212、214、216、218、220、222、224。执行单元212、214、216、218、220、222、224可执行指令。执行块211可包含存储微指令需要执行的整数和浮点数据操作数值的寄存器文件208、210。在一个实施例中,处理器200可包括若干执行单元:地址生成单元(AGU) 212、AGU 214、快速ALU 216、快速ALU 218、慢速ALU 220、浮点ALU 222、浮点移动单元224。在另一实施例中,浮点执行块222、224可执行浮点、MMX、SIMD和SSE或其它操作。在又一个实施例中,浮点ALU 222可包含64位×64位浮点除法器以执行除法、平方根和余数微-op。在各种实施例中,涉及浮点值的指令可用浮点硬件处置。在一个实施例中,ALU操作可传到高速ALU执行单元216、218。高速ALU 216、218可以通过时钟周期一半的有效延时执行快速操作。在一个实施例中,最复杂的整数操作去到慢速ALU 220,因为慢速ALU220可包括用于长迟滞类型操作的整数执行硬件,如乘法器、位移、标记逻辑和分支处理。存储器加载/存储操作由AGU 212、214执行。在一个实施例中,整数ALU 216、218、220可对64位数据操作数执行整数操作。在其它实施例中,可实现ALU 216、218、220以支持各种数据位大小,包含16、32、128、256等。类似地,可实现浮点单元222、224以支持具有各种宽度位的一系列操作数。在一个实施例中,浮点单元222、224可结合SIMD和多媒体指令对128位宽压缩数据操作数进行操作。
在一个实施例中,在父加载(parent load)已经完成执行之前,uop调度器202、204、206分派相关操作。当在处理器200中推测性地调度和执行uop时,处理器200还可包含处置存储器丢失的逻辑。如果数据加载在数据高速缓存中丢失,则流水线中可存在执行中(in flight)相关操作,其为调度器留下了暂时不正确的数据。重放机制跟踪和重新执行使用不正确数据的指令。可能只需要重放相关操作,并且可允许完成独立操作。处理器的一个实施例的调度器和重放机制也可设计成捕捉用于文本字符串比较操作的指令序列。
术语“寄存器”可指代可用作识别操作数的部分指令的板载处理器存储位置。换而言之,寄存器可以是从处理器的外部可使用的那些寄存器(从程序器的角度而言)。然而,在一些实施例中,寄存器可能不限于具体类型的电路。相反,寄存器可存储数据,提供数据,并且执行本文中描述的功能。本文中描述的寄存器可由处理器内的电路使用任何数量的不同技术实现,如专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。在一个实施例中,整数寄存器存储32比特整数数据。一个实施例的寄存器文件也包含用于压缩数据的8个多媒体SIMD寄存器。对于下面的讨论,可将寄存器理解为设计成保持压缩数据的数据寄存器,如来自加利福尼亚州Santa Clara的IntelCorporation的以MMX技术实现的微处理器中的64比特宽MMX™寄存器(在一些实例下也称为“mm”寄存器)。在整数和浮点形式两者中可用的这些MMX寄存器可与伴随SIMD 和SSE指令的压缩数据元素一起操作。类似地,与SSE2、SSE3、SSE4或更高版本(一般称为“SSEx”)技术有关的128比特宽XMM寄存器可保持此类压缩数据操作数。在一个实施例中,在存储压缩数据和整数数据中,寄存器无需区分两种数据类型。在一个实施例中,整数和浮点可包含在相同寄存器文件或不同寄存器文件中。此外,在一个实施例中,浮点和整数数据可存储在不同寄存器或相同寄存器中。
在以下图形的示例中,可描述多个数据操作数。图3A示出根据本公开的实施例的在多媒体寄存器中的各种压缩数据类型表示。图3A示出用于128比特宽操作数的压缩字节310、压缩字320和压缩双字(dword) 330的数据类型。此示例的压缩字节格式310可以为128比特长,并且包含16个压缩字节数据元素。字节例如可定义为8比特的数据。用于每个字节数据元素的信息可存储在针对字节0的比特7到比特0、针对字节1的比特15到比特8、针对字节2的比特23到比特16及最后针对字节15的比特120到比特127。因此,在寄存器中可使用所有可用比特。此存储布置增大了处理器的存储效率。此外,利用访问的16个数据元素,现在可并行对16个数据元素执行一个操作。
通常,数据元素可包括与相同长度的其它数据元素一起存储在单个寄存器或存储器位置中的单独数据段。在与SSEx技术有关的压缩数据序列中,XMM寄存器中存储的数据元素的数量可以是128比特除以单独数据元素的以比特为单位的长度。类似地,在与MMX和SSE技术有关的压缩数据序列中,MMX寄存器中存储的数据元素的数量可以是64比特除以单独数据元素的以比特为单位的长度。虽然图3A中示出的数据类型可以为128比特长,但本公开的实施例也可利用64比特宽或其它大小的操作数操作。此示例的压缩字格式320可以为128比特长,并且包含8个压缩字数据元素。每个压缩字包含16比特的信息。图3A的压缩双字格式330可以为128比特长,并且包含4个压缩双字数据元素。每个压缩双字数据元素包含32比特的信息。压缩四字可以为128比特长,并且包含2个压缩四字数据元素。
图3B示出根据本公开的实施例的可能寄存器中的数据存储格式。每个压缩数据可包括多于一个独立数据元素。示出了三个压缩数据格式;压缩半(half)341、压缩单342和压缩双343。压缩半341、压缩单342和压缩双343的一个实施例包含固定点数据元素。对于另一实施例,压缩半341、压缩单342和压缩双343的一个或多个可包含浮点数据元素。压缩半341的一个实施例可以为128比特长,包含8个16比特数据元素。压缩单342的一个实施例可以为128比特长,并且包含4个32比特数据元素。压缩双343的一个实施例可以为128比特长,并且包含2个64比特数据元素。将领会的是,此类压缩数据格式可进一步扩展到其它寄存器长度,例如,96比特、160比特、192比特、224比特、256比特或更多。
图3C示出根据本公开的实施例的在多媒体寄存器中的各种有符号和无符号的压缩数据类型表示。无符号的压缩字节表示344示出在SIMD寄存器中的无符号的压缩字节的存储。每个字节数据元素的信息可存储在针对字节0的比特7到比特0、针对字节1的比特15到比特8、针对字节2的比特23到比特16及最后针对字节15的比特120到比特127。因此,在寄存器中可使用所有可用比特。此存储布置可增大处理器的存储效率。此外,利用访问的16个数据元素,现在可以并行方式对16个数据元素执行一个操作。有符号的压缩字节表示345示出有符号的压缩字节的存储。要注意的是,每个字节数据元素的第8比特可以是符号指示符。无符号的压缩字表示346示出在SIMD寄存器中可如何存储字7到字0。有符号的压缩字表示347可类似于无符号的压缩字寄存器中的表示346。要注意的是,每个字数据元素的第16比特可以是符号指示符。无符号的压缩双字表示348显示如何存储双字数据元素。有符号的压缩双字表示349可类似于无符号的压缩双字寄存器中的表示348。要注意的是,必需的符号比特可以是每个双字数据元素的第32比特。
图3D示出操作编码(操作码)的实施例。此外,格式360可包括寄存器/存储器操作数寻址模式,其与万维网(www) intel.com/design/litcentr上从加利福尼亚州圣克拉拉Intel Corporation可获得的“IA-32 Intel架构软件开发员手册第2卷:指令集参考”(IA-32 Intel Architecture Software Developer's Manual Volume 2: Instruction SetReference)中描述的操作码格式的类型相对应。在一个实施例中,指令可通过字段361和362中的一个或多个字段编码。可识别高达每指令两个操作数位置,包括高达两个源操作数标识符364和365。在一个实施例中,目的地操作数标识符366可与源操作数标识符364相同,而在其它实施例中,它们可不同。在另一实施例中,目的地操作数标识符366可与源操作数标识符365相同,而在其它实施例中,它们可不同。在一个实施例中,通过源操作数标识符364和365识别的源操作数之一可通过文本字符串比较操作的结果被改写,而在其它实施例中,标识符364对应于源寄存器元素,并且标识符365对应于目的地寄存器元素。在一个实施例中,操作数标识符364和365可识别32比特或64比特源和目的地操作数。
图3E示出根据本公开的实施例的具有40或更多个比特的另一可能操作编码(操作码)格式。操作码格式370与操作码格式360相对应,并且包括可选前缀字节378。根据一个实施例的指令可通过字段378、371和372的一个或多个字段编码。通过源操作数标识符374和375以及通过前缀字节378,可识别高达每指令两个操作数位置。在一个实施例中,前缀字节378可用于识别32比特或64比特源和目的地操作数。在一个实施例中,目的地操作数标识符376可与源操作数标识符374相同,而在其它实施例中,它们可不同。对于另一实施例,目的地操作数标识符376可与源操作数标识符375相同,而在其它实施例中,它们可不同。在一个实施例中,指令对通过操作数标识符374和375识别的一个或多个操作数进行操作,并且通过操作数标识符374和375识别的一个或多个操作数可通过指令的结果被改写,而在其它实施例中,通过标识符374和375识别的操作数可写入另一寄存器中的另一数据元素。操作码格式360和370允许由MOD字段363和373和由可选比例-索引-基础和位移字节部分指定的寄存器到寄存器、存储器到寄存器、寄存器接(by)存储器、寄存器接寄存器、寄存器接中间、寄存器到存储器寻址。
图3F示出根据本公开的实施例的又一可能操作编码(操作码)格式。64比特单指令多数据(SIMD)算术操作可通过协处理器数据处理(CDP)指令执行。操作编码(操作码)格式380描绘具有CDP操作码字段382和389的一个此类CDP指令。CDP指令的类型,对于另一实施例,操作可通过字段383、384、387和388的一个或多个字段编码。可识别高达每指令三个操作数位置,包括高达两个源操作数标识符385、390和一个目的地操作数标识符386。协处理器的一个实施例可对8、16、32和64比特值进行操作。在一个实施例中,可对整数数据元素执行指令。在一些实施例中,可使用条件字段381,有条件执行指令。对于一些实施例,源数据大小可由字段383编码。在一些实施例中,可对SIMD字段进行零(Z)、负(N)、进位(C)和溢出(V)检测。对于一些指令,饱和的类型可由字段384编码。
图4A是根据本公开的实施例的示出有序流水线和寄存器重命名阶段、无序发布/执行流水线的框图。图4B是根据本公开的实施例的示出有序架构核和要包括在处理器中的寄存器重命名逻辑、无序发布/执行流水线的框图。图4A中的实线框示出有序流水线,而虚线框示出寄存器重命名、无序发布/执行流水线。类似地,图4B中的实线框示出有序架构逻辑,而虚线框示出寄存器重命名和无序发布/执行逻辑。
在图4A中,处理器流水线400可包括获取阶段402、长度解码阶段404、解码阶段406、分配阶段408、重命名阶段410、调度(也称为分派或发布)阶段412、寄存器读/存储器读阶段414、执行阶段416、写回/存储器写入阶段418、异常处理阶段422及提交阶段424。
在图4B中,箭头表示在两个或更多个单元之间的耦合,并且箭头的方向指示在那些单元之间数据流的方向。图4B显示处理器核490,包括耦合到执行引擎单元450的前端单元430,并且两者均可耦合到存储器单元470。
核490可以是精简指令集运算(RISC)核、复杂指令集运算(CISC)核、超长指令字(VLIM)核或混合或备选核类型。在一个实施例中,核490可以是专用核,诸如,例如网络或通信核、压缩引擎、图形核或诸如此类。
前端单元430可包括耦合到指令高速缓存单元434的分支预测单元432。指令高速缓存单元434可耦合到指令转化(translation)后备缓冲器(TLB) 436。TLB 436可耦合到指令获取单元438,其耦合到解码单元440。解码单元440可将指令解码,并且生成作为输出的一个或多个微操作、微代码入口点、微指令、其它指令或其它控制信号,它们可从原始指令解码或者以其它方式反映原始指令或者可从原始指令得到。解码器可使用各种不同机制实现。适合机制的示例包括但不限于查表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,指令高速缓存单元434可还耦合到存储器单元470中的2级(L2)高速缓存单元476。解码单元440可耦合到执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450可包括耦合到引退单元454和一个或多个调度器单元456的集合的重命名/分配器单元452。调度器单元456表示任何数量的不同调度器,包括预留站、中央指令窗口等。调度器单元456可耦合到物理寄存器文件单元458。每个物理寄存器文件单元458表示一个或多个物理寄存器文件,这些文件的不同文件存储一个或多个不同数据类型,如标量整数、标量浮点、压缩整数、压缩浮点、向量整数、向量浮点、等,状态(例如,作为要执行的下一指令的地址的指令指针)等。物理寄存器文件单元458可由引退单元154重叠以示出其中可实现寄存器重命名和无序执行的各种方式(例如,使用一个或多个重新排序缓冲器和一个或多个引退寄存器文件;使用一个或多个将来文件、一个或多个历史缓冲器和一个或多个引退寄存器文件;使用寄存器映射和寄存器池等)。通常,架构寄存器可从处理器外部或者从程序员的角度而言是可见的。寄存器可能不限于任何已知具体类型的电路。各种不同类型的寄存器只要如本文中所述存储和提供数据,它们便是适合的。适合寄存器的示例包括但不限于专用物理寄存器、使用重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。引退单元454和物理寄存器文件单元458可耦合到执行集群460。执行集群460可包括一个或多个执行单元集合162和一个或多个存储器存取单元集合464。执行单元462可执行各种操作(例如,移位、加法、减法、乘法),并且对各种类型的数据执行(例如,标量浮点、压缩整数、压缩浮点、向量整数、向量浮点)。虽然一些实施例可包括专用于特定功能或功能的集合的多个执行单元,但其它实施例可只包括一个执行单元或全部执行所有功能的多个执行单元。调度器单元456、物理寄存器文件单元458和执行集群460示为可能是多个,这是因为某些实施例为某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/压缩整数/压缩浮点/向量整数/向量浮点流水线和/或存储器存取流水线,每个流水线具有其自己的调度器单元、物理寄存器文件单元和/或执行集群 - 并且在单独的存储器存取流水线的情况下,可实现其中仅此流水线的执行集群具有存储器存取单元464的某些实施例)。还应理解的是,在使用单独流水线的情况下,一个或多个这些流水线可以是无序发布/执行,并且其余的流水线是有序的。
存储器存取单元464的集合可耦合到存储器单元470,其可包括耦合到数据高速缓存单元474的数据TLB单元472,数据高速缓存单元474耦合到2级(L2)高速缓存单元476。在一个示范实施例中,存储器存取单元464可包括负载单元、存储地址单元和存储数据单元,它们中的每个可耦合到存储器单元470中的数据TLB单元472。L2高速缓存单元476可耦合到一个或多个其它级的高速缓存,并且最终耦合到主存储器。
通过示例,示范寄存器重命名、无序发布/执行核架构可如下实现流水线400:1)指令获取438可执行获取阶段402和长度解码阶段404;2)解码单元440可执行解码阶段406;3)重命名/分配器单元452可执行分配阶段408和重命名阶段410;4)调度器单元456可执行调度阶段412;5)物理寄存器文件单元458和存储器单元470可执行寄存器读/存储器读阶段414;执行集群460可执行执行阶段416;6)存储器单元470和物理寄存器文件单元458可执行写回/存储器写入阶段418;7)各种单元可涉及异常处理阶段422的执行;以及8)引退单元454和物理寄存器文件单元458可执行提交阶段424。
核490可支持一个或多个指令集[例如,x86指令集(其中更新版本已添加一些扩展)、加利福尼亚州Sunnyvale的MIPS Technologies, Inc.的MIPS指令集、加利福尼亚州Sunnyvale的ARM Holdings的ARM指令集(具有诸如NEON的可选附加扩展)。
应理解的是,核可以以多种方式支持多线程(执行两个或更多个并行的操作或线程的集合)。例如通过包括时间片多线程、同时多线程(其中,单个物理核提供用于物理核在同时进行多线程的每个线程的逻辑核)或其组合,可执行多线程支持。此类组合例如可包括时间片获取和解码及之后的同时多线程,如在Intel®超线程技术中一样。
虽然寄存器重命名可在无序执行的上下文中描述,但应理解的是,可在有序架构中使用寄存器重命名。虽然处理器的所示实施例也可包括单独的指令和数据高速缓存单元434/474及共享L2高速缓存单元476,但其它实施例可具有诸如例如1级(L1)内部高速缓存的用于指令和数据两者的单个内部高速缓存,或多个级的内部高速缓存。在一些实施例中,系统可包括内部高速缓存和可在核和/或处理器外的外部高速缓存的组合。在其它实施例中,所有高速缓存可在核和/或处理器的外部。
图5A是根据本公开的实施例的处理器500的框图。在一个实施例中,处理器500可包括多核处理器。处理器500可包括以通信方式耦合到一个或多个核502的系统代理510。此外,核502和系统代理510可以通信方式耦合到一个或多个高速缓存506。核502、系统代理510和高速缓存506可经一个或多个存储器控制单元552以通信方式耦合。此外,核502、系统代理510和高速缓存506可经存储器控制单元552以通信方式耦合到图形模块560。
处理器500可包括用于将核502、系统代理510和高速缓存506及图形模块560互连的任何适合机制。在一个实施例中,处理器500可包括基于环形的互连单元508以将核502、系统代理510和高速缓存506及图形模块560互连。在其它实施例中,处理器500可包括用于将此类单元互连的任何数量的公知技术。基于环形的互连单元508可利用存储器控制单元552以促进互连。
处理器500可包括存储器层级,该层级包括核内的一个或多个级的高速缓存、诸如高速缓存506的一个或多个共享高速缓存单元或耦合到集成存储器控制器单元552的集合的外部存储器(未示出)。高速缓存506可包括任何适合的高速缓存。在一个实施例中,高速缓存506可包括诸如2级(L2)、3级(L3)、4级(L4)或其它级的高速缓存的一个或多个中间级高速缓存、末级高速缓存(LLC)和/或其组合。
在各种实施例中,一个或多个核502可执行多线程。系统代理510可包括用于协调和操作核502的组件。系统代理510例如可包括功率控制单元(PCU)。PCU可以是或者包括用于调节核502的功率状态所需的逻辑和组件。系统代理510可包括用于驱动一个或多个外部连接的显示器或图形模块560的显示引擎512。系统代理510可包括用于针对图形的通信总线的接口1214。在一个实施例中,接口1214可通过PCI Express (PCIe)来实现。在其它的实施例中,接口1214可通过PCI Express图形(PEG)来实现。系统代理510可包括直接媒体接口(DMI) 516。DMI 516可在计算机系统的母板或其它部分上的不同桥之间提供链路。系统代理510可包括用于提供PCIe链路到运算系统的其它元素的PCIe桥1218。PCIe桥1218可使用存储器控制器1220和一致性逻辑1222实现。
核502可以以任何适合的方式实现。核502可在架构和/或指令集方面是同构或异构的。在一个实施例中,一些核502可以是有序的,而其它核可以是无序的。在另一实施例中,两个或更多个核502可执行相同指令集,而其它核可只执行该指令集的子集或不同指令集。
处理器500可包括诸如可从加利福尼亚州Santa Clara的Intel Corporation获得的Core™ i3、i5、i7、2 Duo和Quad、Xeon™、Itanium™、XScale™或StrongARM™处理器等通用处理器。处理器500可从诸如ARM Holdings, Ltd、MIPS的另一公司提供。处理器500可以是专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器或诸如此类。处理器500可在一个或多个芯片上实现。处理器500可以是使用诸如例如BiCMOS、COMS或NMOS的多个处理技术的任何技术的一个或多个衬底的一部分,和/或可在衬底上实现。
在一个实施例中,高速缓存506的一个给定高速缓存可由核502的多个核共享。在另一实施例中,高速缓存506的一个给定高速缓存可专用于核502之一。高速缓存506到核502的指派可由高速缓存控制器或其它适合机制处理。通过实现给定高速缓存506的时间片,可由两个或更多个核502共享高速缓存506的一个给定高速缓存。
图形模块560可实现集成图形处理子系统。在一个实施例中,图形模块560可包括图形处理器。此外,图形模块560可包括媒体引擎565。媒体引擎565可提供媒体编码和视频解码。
图5B是根据本公开的实施例的核502的示例实现的框图。核502可包括以通信方式耦合到无序引擎580的前端570。核502可通过高速缓存层级503,以通信方式耦合到处理器500的其它部分。
前端570可以以任何适合的方式实现,例如,如上所述部分或完全由前端201实现。在一个实施例中,前端570可通过高速缓存层级503与处理器500的其它部分进行通信。在又一实施例中,前端570可从处理器500的部分获取指令,并且在指令传递到无序执行引擎580时准备处理器流水线中以后要使用的指令。
无序执行引擎580可以以任何适合的方式实现,例如,如上所述部分或完全通过无序执行引擎203来实现。无序执行引擎580可准备从前端570接收到的指令以供执行。无序执行引擎580可包括分配模块1282。在一个实施例中,分配模块1282可分配处理器500的资源或诸如寄存器或缓冲器的其它资源以执行给定指令。分配模块1282可在调度器中进行分配,如存储器调度器、快速调度器或浮点调度器。此类调度器可在图5B中由资源调度器584表示。分配模块1282可完全或部分通过结合图2描述的分配逻辑来实现。资源调度器584可基于给定资源的源的准备度和执行指令需要的执行资源的可用性,确定指令何时准备就绪以执行。资源调度器584可例如通过如上所述的调度器202、204、206来实现。资源调度器584可对一个或多个资源调度指令的执行。在一个实施例中,此类资源可在核502的内部,并且例如可示出为资源586。在另一实施例中,此类资源可在核502的外部,并且例如可由高速缓存层级503访问。资源例如可包括存储器、高速缓存、寄存器文件或寄存器。核502内部的资源可由图5B中的资源586表示。在必需时,可例如通过高速缓存层级503,协调写入资源586或从中读的值和处理器500的其它部分。在指令是指派的资源时,可将它们置于重新排序缓冲器588中。重新排序缓冲器588可在指令执行时跟踪指令,并且可基于处理器500的任何适合准则,选择性地将其执行重新排序。在一个实施例中,重新排序缓冲器588可识别可独立执行的指令或一系列指令。此类指令或一系列指令可与其它此类指令并行执行。核502中的并行执行可通过任何适合数量的单独执行块或虚拟处理器执行。在一个实施例中,给定核502内的多个虚拟处理器可访问诸如存储器、寄存器和高速缓存的共享资源。在其它实施例中,处理器500内的多个处理实体可访问共享资源。
高速缓存层级503可以以任何适合的方式实现。例如,高速缓存层级503可包括诸如高速缓存572、574的一个或多个更低或中级高速缓存。在一个实施例中,高速缓存层级503可包括以通信方式耦合到高速缓存572、574的LLC 595。在另一实施例中,LLC 595可在处理器500的所有处理实体可访问的模块590中实现。在另外的实施例中,模块590可在来自Intel, Inc的处理器的非核心模块中实现。模块590可包括执行核502所必需,但可能不在核502内实现的处理器500的部分或子系统。除LLC 595外,模块590例如可包括硬件接口、存储器一致性协调器、处理器间互连、指令流水线或存储器控制器。通过模块590,并且更具体地说,通过LLC 595,可对可用于处理器500的RAM 599进行访问。此外,核502的其它实例可类似地访问模块590。可部分通过模块590,促进核502的实例的协调。
图6-8可示出适合于包含处理器500的示范系统,而图9可示出可包含一个或多个核502的示范片上系统(SoC)。在本领域已知的用于膝上型计算机、桌面型计算机、手持PC、个人数字助理、工程设计工作站、服务器、网络装置、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持装置和各种其它电子装置的其它系统设计和实现也是适合的。一般而言,结合处理器和/或本文所公开的其它执行逻辑的大量系统或电子装置通常可以是适合的。
图6示出了按照本公开实施例的系统600的框图。系统600可包含一个或多个处理器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可包含耦合到ICH650的分立图形装置,连同另一外围装置670。
在其它实施例中,在系统600中也可存在附加的或不同的处理器。例如,附加处理器610、615可包含可与处理器610相同的附加处理器、可与处理器610异质或不对称的附加处理器、加速器(诸如例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器。在品质度量谱(包含架构、微架构、热、功耗特性等)方面,在物理资源610、615之间可能存在各种差异。这些差异在处理器610、615之间可有效地将它们自己标明为不对称并且异质。对于至少一个实施例,各种处理器610、615可驻留在同一管芯封装中。
图7示出了按照本公开实施例的第二系统700的框图。如图7中所示,多处理器系统700可包含点对点互连系统,并且可包经由点对点互连750耦合的第一处理器770和第二处理器780。处理器770和780中的每个可以如一个或多个处理器610,615一样,是某一版本的处理器500。
虽然图7可示出两个处理器770、780,但要理解到,本公开的范围不限于此。在其它实施例中,在给定处理器中可存在一个或多个附加处理器。
分别示出处理器770和780包含集成存储器控制器单元772和782。处理器770还可包含点对点(P-P)接口776和778作为其总线控制器单元的一部分;类似地,第二处理器780可包含P-P接口786和788。处理器770、780可经由点对点(P-P)接口750使用P-P接口电路778、788交换信息。如图7中所示,IMC 772和782可将处理器耦合到相应存储器,即存储器732和存储器734,它们在一个实施例中可以是本地附连到相应处理器的主存储器的部分。
处理器770、780可各经由单独P-P接口752、754使用点对点接口电路776、794、786、798与芯片集790交换信息。在一个实施例中,芯片集790还可经由高性能图形接口739与高性能图形电路738交换信息。
共享高速缓存(未示出)可被包含在任一处理器中或两个处理器外,仍经由P-P互连与处理器连接,使得任一或两个处理器的本地高速缓存信息可被存储在共享高速缓存中,如果处理器被置于低功率模式的话。
芯片集790可经由接口796耦合到第一总线716。在一个实施例中,第一总线716可以是外围组件互连(PCI)总线,或诸如PCI Express总线的总线,或另一个第三代I/O互连总线,尽管本公开的范围不限于此。
如图7中所示,各种I/O装置714可耦合到第一总线716,连同将第一总线716耦合到第二总线720的总线桥718。在一个实施例中,第二总线720可以是低管脚计数(LPC)总线。在一个实施例中,各种装置可耦合到第二总线720,例如包含键盘和/或鼠标722、通信装置727和存储单元728,诸如盘驱动器或可包含指令/代码和数据730的其它大容量存储装置。进一步说,音频I/O 724可耦合到第二总线720。要指出,其它架构是可能的。例如,代替图7的点对点架构,系统可实现多点总线或其它此类架构。
图8示出了按照本公开实施例的第三系统800的框图。图7和图8中的相同的元件带有相同的附图标记,并且已经从图8中省略了图7的某些方面,以便避免使图9的其它方面模糊不清。
图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,其可包含一个或多个核902A-N的集合以及共享高速缓存单元906;系统代理单元910;总线控制器单元916;集成存储器控制器单元914;媒体处理器集合920或一个或多个媒体处理器920,其可包含集成图形逻辑908、用于提供静止和/或视频相机功能性的图像处理器924、用于提供硬件音频加速的音频处理器926以及用于提供视频编码/解码加速的视频处理器928;静态随机存取存储器(SRAM)单元930;直接存储器存取(DMA)单元932;以及用于耦合到一个或多个外部显示器的显示单元940。
图10示出了按照本公开的实施例的可执行至少一个指令的含有中央处理单元(CPU)和图形处理单元(GPU)的处理器。在一个实施例中,执行根据至少一个实施例的操作的指令可由CPU执行。在另一实施例中,指令可由GPU执行。在又一实施例中,指令可通过由GPU和CPU执行的操作组合执行。例如,在一个实施例中,按照一个实施例的指令可被接收和解码以便在CPU上执行。然而,解码指令内的一个或多个操作可由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核”的此类表示可存储在有形机器可读介质(“带”)上,并供应给各种消费者或制造设施,以加载到实际上制造逻辑或处理器的制造机器中。例如,诸如由ARM Holdings, Ltd开发的Cortex™族处理器和中国科学院计算技术研究所(ICT)开发的龙芯IP核的IP核可许可或销售到各种客户或被许可人,如Texas Instruments、Qualcomm、Apple或Samsung,并且在由这些客户或被许可人生产的处理器中实现。
图11示出了按照本公开实施例示出开发IP核的框图。存储装置1130可包含模拟软件1120和/或硬件或软件模型1110。在一个实施例中,表示IP核设计的数据可经由存储器1140(例如硬盘)、有线连接(例如因特网)1150或无线连接1160提供给存储装置1130。由模拟工具和模型生成的IP核信息然后可被传送到制造设施,在此它可由第三方制造以执行按照至少一个实施例的至少一个指令。
在一些实施例中,一个或多个指令可对应于第一类型或架构(例如x86),并且在不同类型或架构(例如ARM)的处理器上转化或仿真。根据一个实施例,指令因此可在任何处理器或处理器类型(包含ARM、x86、MIPS、GPU)或其它处理器类型或架构上执行。
图12示出了按照本公开实施例的由不同类型的处理器可如何仿真第一类型的指令。在图12中,程序1205含有可与根据一个实施例的指令执行相同或基本上相同功能的一些指令。然而,程序1205的指令可属于与处理器1215不同或不兼容的类型和/或格式,意味着,程序1205中的类型的指令可能不能够由处理器1215本机(natively)执行。然而,在仿真逻辑1210的帮助下,程序1205的指令可被转化成可由处理器1215本机执行的指令。在一个实施例中,仿真逻辑可体现在硬件中。在另一实施例中,仿真逻辑可体现在有形、机器可读介质中,其含有将程序1205中的类型的指令转化成由处理器1215本机可执行的类型。在其它实施例中,仿真逻辑可以是固定功能或可编程硬件以及存储在有形、机器可读介质上的程序的组合。在一个实施例中,处理器含有仿真逻辑,而在其它实施例中,仿真逻辑存在于处理器外部,并且可由第三方提供。在一个实施例中,处理器可通过执行在处理器中含有的或与处理器关联的微代码或固件来加载体现在含有软件的有形、机器可读介质中的仿真逻辑。
图13示出了按照本公开的实施例的对比使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示出的实施例中,指令转换器是软件指令转换器,尽管备选地,指令转换器可以用软件、固件、硬件或它们的各种组合实现。图13示出可使用x86编译器1304编译高级语言1302的程序以生成x86二进制代码1306,其可由具有至少一个x86指令集核的处理器1316本机执行。具有至少一个x86指令集核的处理器1316表示可通过兼容执行或以其它方式处理(1) Intel x86指令集核的指令集的实质部分或(2)定向为在具有至少一个x86指令集核的Intel处理器上运行的应用或其它软件的对象代码版本,与具有至少一个x86指令集核的Intel处理器执行基本上相同功能,以便与具有至少一个x86指令集核的Intel处理器实现基本上相同结果的任何处理器。x86编译器1304表示可操作以生成x86二进制代码1306(例如对象代码)的编译器,二进制代码1306可在具有或没有附加连锁处理的情况下在具有至少一个x86指令集核1316的处理器上执行。类似地,图13示出以高级语言1302的程序可使用备选指令集编译器1308编译以生成备选指令集二进制代码1310,其可由没有至少一个x86指令集核1314的处理器(例如,具有执行加利福尼亚州Sunnyvale的MIPS Technologies的MIPS指令集,和/或执行加利福尼亚州Sunnyvale的ARM Holdings的ARM指令集的核的处理器)本机执行。
指令转换器1312用于将x86二进制代码1306转换成可由没有x86指令集核1314的处理器本机执行的备选指令集二进制代码1311。这个转换的代码可以或可以不与备选指令集二进制代码1310(从备选指令集编译器1308产生的)相同;然而,转换的代码将完成相同的通用操作,并且由来自备选指令集的指令组成。从而,指令转换器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(其定义具体视频信号将被编码和解码以便输出的方式)。
指令集架构1400还可包含任何数量或种类的接口、控制器或用于与电子装置或系统的其它部分对接或通信的其它机制。此类机制例如可促进与外设、通信装置、其它处理器或存储器的交互。在图14的示例中,指令集架构1400可包含液晶显示器(LCD)视频接口1425、订户接口模块(SIM)接口1430、引导ROM接口1435、同步动态随机存取存储器(SDRAM)控制器1440、闪存控制器(flash controller)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可存储识别最后引退的指令的程序指令(program order)(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可实现为具有任何适合大小(诸如0、128k、256k、512k、1M或2M字节的存储器)的L2统一高速缓存。在另一另外的实施例中,高速缓存1525可实现在纠错代码存储器中。在另一实施例中,单元1510可执行到处理器或电子装置的其它部分的总线对接。在此类实施例中,单元1510从而可包含用于通过互连、处理器内总线、处理器间总线或其它通信总线、端口或线路通信的总线接口单元1520。总线接口单元1520可提供对接以便例如执行生成存储器和输入/输出地址,以便在执行实体1565与指令架构1500外部的系统部分之间传送数据。
为了进一步促进其功能,总线接口单元1520可包含用于生成中断和到处理器或电子装置的其它部分的其它通信的中断控制和分发单元1511。在一个实施例中,总线接口单元1520可包含处置多个处理核的高速缓存访问和一致性的探听控制单元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执行。浮点操作可需要执行多个时钟周期,诸如2个到10个周期。在1670,可执行乘法和除法操作。此类操作可在4个时钟周期中执行。在1675,可执行对寄存器或流水线1600其它部分的加载和存储操作。操作可包含加载和存储地址。此类操作可在4个时钟周期中执行。在1680,写回操作可根据需要由1655-1675的结果操作执行。
图17是根据本公开的实施例的用于利用处理器1710的电子装置1700的框图。电子装置1700例如可包括笔记本、超级本、计算机、塔式服务器、机架服务器、刀片服务器、膝上型计算机、桌上型计算机、平板、移动装置、电话、嵌入式计算机或任何其它适合的电子装置。
电子装置1700可包括以通信方式耦合到任何适合数量或种类的组件、外设、模块或装置的处理器1710。此类耦合可通过任何适合种类的总线或接口来实现,如I2C总线、系统管理总线(SMBus)、低引脚计数(LPC)总线、SPI、高清晰音频(HDA)总线、串行高级技术附件(SATA)总线、USB总线(版本1、2、3)或通用异步接收器/传送器(UART)总线。
此类组件例如可包括显示器1724、触摸屏1725、触摸板1730、近场通信(NFC)单元1745、传感器集线器1740、热传感器1746、express芯片集(EC) 1735、可信平台模块(TPM)1738、BlOS/固件/闪存存储器1722、数字信号处理器1760、诸如固态磁盘(SSD)或硬盘驱动器(HDD)的驱动器1720、无线局域网(WLAN)单元1750、蓝牙单元1752、无线广域网(WWAN)单元1756、全球定位系统(GPS)、诸如USB 3.0摄像头的摄像头1754、或例如以LPDDR3标准实现的低功率双倍数据率(LPDDR)存储器单元1715。这些组件每个可以以任何适合的方式实现。
此外,在各种实施例中,其它组件可通过上面讨论的组件以通信方式耦合到处理器1710。例如,加速计1741、环境光传感器(ALS) 1742、罗盘1743和陀螺仪1744可以以通信方式耦合到传感器集线器1740。热传感器1739、风扇1737、键盘1746和触摸板1730可以以通信方式耦合到EC 1735。扬声器1763、耳机1764和麦克风1765可以以通信方式耦合到音频单元1764,音频单元又可以通信方式耦合到DSP 1760。音频单元1764例如可包括音频编解码器和D类放大器。SIM卡1757可以以通信方式耦合到WWAN单元1756。诸如WLAN单元1750和蓝牙单元1752以及WWAN单元1756的组件可以以下一代规格(NGFF)实现。
本公开的实施例涉及针对用于处理运算的向量格式的指令和逻辑。在一个实施例中,此类运算可以包括有限差分运算。例如,此类运算可以包括多维微分方程计算或估计,各向同性运算或各向异性运算。在另一实施例中,此类向量格式可以包括表格向量格式。在又一个实施例中,运算可以包括要求来自在多个维度中彼此相邻的多个重叠数据点的输入的运算。图18是根据本公开的实施例的针对用于处理运算的向量格式的系统1800的示例实施例的框图。运算可以由例如处理器1804处理。系统1800可以包括任何合适数量和种类的元件以执行本文描述的功能性。此外,虽然系统1800的特定元件在本文中可被描述为执行特定功能,但系统1800的任何合适部分可执行本文所描述的功能性。
在一个实施例中,用于处理运算的向量格式可以应用于由处理器1804接收的指令。由处理器1804接收的指令可以包括指令流1802中的那些指令,其可以由编译器,转化器或其它合适的源来生成。指令流1804可包括用于有限差分(FD)运算或函数的命令,例如n维各向同性,各向异性或微分方程函数。指令流1804可以包括用于对于具体数据点要求来自多个数据点的输入的函数的命令,所述多个数据点线性地并且在多个维度上彼此相邻。在各种实施例中,“多个维度”可以表示由源数据表示的问题空间的物理现实或域。当在处理器1804内被操纵和处理时,可以根据需要将多个域变平(flatten)成实际数据结构,以便执行计算机操作。该命令可以被称为FD函数1803。在此类实施例中,处理器1804可以通过借助于添加向量格式化(formatting)操作来解码,解释或以其它方式执行FD函数1803以实现FD函数1803的执行。此类向量格式化操作可以由处理器1804的任何适当部分执行,诸如通过前端1806,解码器1808或动态二进制转化器1816或未示出的其它元件(诸如即时编译器或转化器,优化器或特殊协处理器或执行单元来执行。在另一实施例中,用于处理运算的向量格式可以在指令到达处理器1804之前应用于FD函数1803。向量格式化可以由编译器,转化器,优化器或其它合适的实体应用。
处理器1802可以执行FD函数1803,其向量格式化操作以及其它指令的处理。处理器1804可以部分地由任何处理器核、逻辑处理器、处理器或其它处理实体(诸如图1-17中所示出的那些)来实现。在各种实施例中,处理器1804可包括前端1806,前端1806包括用于从高速缓存、存储器或其它源提取指令的提取单元以及用于解码指令的解码器1808。处理器1804还可以包括用于确定指令到核1814或执行单元1820的指派、指令的定时和指令的顺序的调度器。处理器1804还可以包括用于执行指令的许多类型和种类的执行单元1820或核1814。此类执行单元可以包括例如分支执行单元、整数算术执行单元(例如,ALU)、浮点算术执行单元(例如FPU)和存储器存取执行单元。此外,处理器1804可以包括引退单元1816,以将成功执行的结果提交给例如寄存器、高速缓存或存储器1818。处理器1804可以包括未示出的任何其它合适的组件,诸如用于预留别名资源的分配单元。在各种实施例中,处理器1804可以利用微代码来利用存储在处理器1802的管芯内的非易失性机器可读介质(诸如只读存储器)上的微操作来执行,以使执行单元1820执行期望的指令的操作。
如上所论述的,FD函数1803可以包括向量格式化操作以在指令流1802中实现FD函数1803,或者作为在处理器1804中解释、解码或以其它方式评估FD函数1803的结果。任何合适的向量格式化操作,读或其它指令可被添加到指令流1802或被解码并添加到FD函数1803,因为其将在处理器1804中执行。可进行格式化操作、读或其它指令的具体选择和顺序以实现执​​行具体FD函数1803及其具体参数。在一个实施例中,此类格式化操作可以包括将数据读入表格向量的功能。在另一实施例中,此类格式化操作可以包括根据具体FD函数1803及其参数的需要来对齐(align)表格向量以便执行的函数。在又一个实施例中,此类格式化操作可以包括根据具体FD函数1803及其参数的需要来置换(permute)表格向量以便执行的函数。
当FD函数1803到达处理器1804时,在一个实施例中,它可能不包括此类格式化操作以特定地实现其执行。在另一个实施例中,FD函数1803可能已经被编译,并且此类格式化操作在被置于指令流1802中之前被添加到它。
如上所描述的,FD函数1803的函数可以包括例如n维FD、各向同性、各向异性或微分方程近似函数。 FD函数可以包括用于微分方程的解的数值方案。在另一个实施例中,可以使用对于单个计算点,要求来自在多个维度上彼此相邻的数据点的输入的函数。这些函数中的任何一个可以用于大型数据集的模拟。此类函数可以用于高性能运算中(例如用于模拟能量勘探中的地质建造或任何其它合适的应用)。实现这些函数可能要求极大量的浮点计算和高存储器带宽。 FD函数可能要求跨表示数据的大存储空间应用数值模板(stencil)。此类数据可以包括真实世界数据。因此,FD函数中的单个点的计算可能要求访问每个维度中的多个数据片段。对于FD函数1803的每个维度,FD函数可以包括在单个点处计算其结果所需的输入值的范围。此类范围可能不连续。例如,16阶二维模板可能要求三十三个输入值来计算单个时间步中的每个新值。整个基于FD的问题的解可能要求计算数十亿个点。处理器1804中的SIMD向量化可以允许并行运算多个点。然而,如下所示的,SIMD向量化不减少要求读的数据,并且单独地可能不会类似地影响必须进行以执行FD函数执行的读的量。在各种实施例中,应用于FD函数1803的向量格式化可以减少收集数据以供FD函数1803执行所需的读的数量。
图18示出示例三维源数据1822。此类数据1822可以驻留在任何合适的地方,包括在存储器中或处理器1804可访问的另一位置。数据1822可能太大而不能被完全读和存储在处理器1804的高速缓存内。FD函数1803可以处理数据1822以确定预期函数的结果。如上所论述的,在给定位置(x0,y0,z0)处的FD函数1803的计算可能要求来自源数据1822的范围(连续或另外的)的输入(所述源数据1822来自维度x,y和z中的每一个)。为了获得此类输入,在(A)必须读来自源数据1822的每个此类值。在(B),此类值可以用于计算FD函数1803的结果值。在一个实施例中,可以使用SIMD向量化操作并行地计算FD函数1803的多个值。
图19是根据本公开的实施例的示例FD函数的图示。模板1902是示例FD函数的表示,对于给定点1903,其要求确定x方向上的接下来四个和先前四个值、y方向上的接下来四个和先前四个值、以及在z方向上的接下来四个和先前四个值的值。计算FD函数的给定点1803所必需的值的映射(map)可以被称为掩模(mask)或模板。用于各向同性函数的示例公式1904也在图19中指定。
图20是根据本公开的实施例的FD函数的示例操作的图示。图表2002示出在(5,5)处的单个点(可以对其进行FD函数1803的执行)。单个点可以仅是数百万或更多点中的一个,对于该点,将要进行通过FD函数1803的计算。
图表2004示出模板2006,其示出为了计算二维8阶各向同性FD函数而必须读的值。较大的模板对于三维函数或对于较高阶(例如16阶)函数会是必需的。对于在图20中考虑的二维8阶各向同性FD函数,在源数据中给定点的给定点、上面的四个值、下面的四个值、右边的四个值以及左边的四个值可以被考虑来找到FD函数的结果。
为了读模板2006的这些值,在(A)可以进行单独数据点的读2003,要求总共十七次读来为FD函数对于确定计算(5,5)所必需的值。使用在(B)SIMD向量读2005,可以将多于一个值一次读入值的向量。此类SIMD向量可以根据处理器1804的架构和特征来定义。例如,长度为十六的SIMD向量读可能是可用的,每一个具有在x方向上的连续索引。读的值可以对应于指定的位置,以及在向量的方向上跟着它的十五个值。使用SIMD向量读2005,对应于模板2006的源数据中的值可能在十一个向量读中被读。如果示例FD函数是三维的,则会对从页(page)出来的值(在z方向上)以及进入页的另外四个读进行另外四次读。此外,可以通过这些读来收集更多的数据,使得可以促进并行地同时执行向量。前九个此类读在图表2006中示出,第十个读在图表2008中示出,并且第十一个读在图表2010中示出。对于16阶各向同性2-D FD函数,三十三个输入数据值可能是必需的。可以使用SIMD向量读2005的十九个不同的执行来输入此类数据。因为向量化在单个方向上进行,所以可以在向量化的方向上获得效率(在图表2006,2008,2010的示例中,x方向),但是必须在其它方向上进行多次读。
尽管SIMD向量读2005可以包括可能并行读十六个值,但SIMD向量读2005可能不能够一次在十六个值的任何可能的集合中读。 SIMD向量读2005可以能够并行读在单个高速缓存行内对齐的十六个元素。在图表2006的示例中,一个对齐可能在第五列,而下一个对齐可能在第二十一列。 SIMD向量读2005可以在一个数据块中读此类范围。因此,图表2006中左“臂”的读现在可以示出处理器实际采用的完全对齐。此类读实际上可以在第负十一列并且通过第四列。因此,十九个不同的读可能是必需的,以充分地覆盖模板。
在一个实施例中,向量格式化可以应用于读用于FD函数的执行的数据,使得数据在多于一个维度中(例如在二维或三维中)被向量化。此类格式化可以包括表格向量读2011格式(诸如在(C)所示的)。在另一实施例中,可以在多于一个维度中应用向量格式化,使得在多于一个维度中读数据.
表格向量读2011格式可以以任何合适的方式应用于源数据和模板2006。在一个实施例中,表格向量读2011可以应用于给定点,其中可以读在x方向上的接下来四个值和在y方向上的接下来四个值。表格向量读2011的大小可以与用于处理器1804的SIMD向量读2005的可用大小相关。例如,表格向量读2011可以是十六个值。如果支持64个值的向量读,则表格向量读2011可以包括8乘8的二维读。如果支持非完全平方的向量读(例如三十二个值),则可以通过例如八乘四二维读来实现表格向量读2011。可以使用表格向量读2011的任何合适的布局。例如,可以使用二乘八布局来代替图20中所示的四乘四布局。在另一示例中,十六元素SIMD可以用于表示在三维读中的四乘二乘二子空间。选择要应用于源数据的布局可以取决于执行FD函数所需的源数据的形状。
在另一实施例中,表格向量读2011可以应用于模板2006(或用于所述FD函数的任何其它模板)中的点,以便在完全读模板2006的所有值的同时最小化读的数量(给定表格向量读2011的维度)。如何应用向量读可以由例如处理器1804在解码和转化FD函数1803中确定,或者可以通过FD函数1803被包括。
例如,图表2012示出表示示例FD函数的表格向量读2011到模板2006的应用。用于FD函数的指令可以由处理器1804接收,并且处理器1804可以确定为了执行FD函数的计算,必须读模板2006的值。此外,处理器1804可以确定为了有效地读模板2006的值,可以进行表格向量读2011的五个实例。可以选择在五个实例中的表格向量读2011的参数,以便产生在图表2012中示出的读。例如,可以在源数据中的(5,2)、(1,6)、(5,6)、(5,10)和(9,6)中的每一个进行表格向量读2011以计算(5,6)的FD函数结果。向量读的特定数量可以取决于所选择的给定点、FD函数、FD函数的阶、FD函数的维数。可以存储可以执行此类读的位置与FD函数的这种变化之间的关系的映射,使得在给定具体FD函数的情况下,可以指定表格向量读2011的特定数量和位置,以便实现读具体FD函数。此外,此类映射可以指定表格向量读2011的各种可用布局。
因此,在图20的示例中,可能需要五次读来读8阶2D FD函数及其模板2006的所有值。对于三维函数,对于在页外出现的z方向上的值会需要附加的四次读以及对于进入页的z方向上的值也会需要附加的四次读。在16阶2D函数的情况下,表格向量读2011的数量可以是9。相应地,在各种实施例中,将向量读从线性向量格式化为表格向量可以减少计算FD函数1803所需的源数据的读的数量。
图21是根据本公开的实施例的各向异性函数2102的示例操作的图示。尽管在图22中使用各向异性函数2102作为示例,但是可以使用任何合适的各向异性函数。各向异性函数2102可以是二维各向异性函数。
图表2104示出在(5,5)的单个点,对其可进行各向异性函数2102的执行。单个点可以仅是数百万或更多点中的一个,对于该点,要进行通过各向异性函数2102的计算。图表2104示出模板2106,其示出必须读以便使用各向异性函数2102计算给定点的值的值。较大的模板对于三维函数或对于较高阶(例如16阶)函数会是必需的。对于图21中考虑的二维8阶各向同性函数,对于给定点,在源数据中给定点的上面的四个值、下面的四个值、右边的四个值以及左边的四个值可以被认为找到给定点的各向异性函数2102的结果。另外,可以考虑右上对角的四个值、左上对角的四个值、右下对角的四个值以及左下对角的四个值,以找到给定点的各向异性函数2102的结果。
为了读模板2106的这些值,如果使用线性SIMD向量读(例如来自图20的1x16 SIMD向量读2005)来读值以进行计算,则可能需要进行总共二十七次读。该总和可以包括与图20所示的相同的那些读,以及四个对角区域中的每个的四次读。
在一个实施例中,向量格式化可以应用于读用于执行各向异性函数2102的数据,使得数据在多于一个维度中(例如在二维或三维中)被向量化。此类格式化可以包括图20中所示的表格向量读2011格式。在另一个实施例中,向量格式化可以应用于多于一个维度,使得数据在多于一个维度中被读。
表格向量读2011格式可以以任何合适的方式应用于源数据和模板2106。表格向量读2011可以应用于模板2106中的点,以便在完全读模板2206的所有值时最小化读的数量。如何应用向量读可以由例如处理器1804在解码和转化各向异性函数2102中确定,或者可以通过各向异性函数2102被包括。
例如,图表2108示出将表格向量读2011应用于表示各向异性函数2102的模板2106。在一个实施例中,表格向量读2011可以应用于如图表2108中示出的点(1,2)、(5,2)、(9,2)、(1,6)、(5,6)、(9,10)、(1,10)、(5,10)和(9,10)。相应地,可进行9次读。对于三维函数,对于在页外出现的z方向上的值,会需要附加的四次读,以及对于进入页的z方向上的值也会需要附加的四次读。在16阶2D FD函数的情况下,表格向量读2011的数量可以是9。相应地,在各种实施例中,将向量读从线性向量格式化为表格向量可以减少计算FD函数1803所需的源数据的读的数量。
图22是根据本公开的实施例的基于表格向量读来进行计算的系统1800的示例操作的图示。执行FD函数1803的计算可以使用SIMD向量化并行执行。图22中的向量数据可以存储在例如向量寄存器中。计算的并行化可以通过使用用于在图20中示出的读的相同的表格向量布局执行计算来进行。因此,使用图22中的向量计算并行执行的计算的数量可以与图20中的表格向量读操作的大小相同。此外,使用向量计算并行执行的计算的数量可以与存储存储表格向量读操作的结果的表格向量的结果的寄存器的大小相同。
然而,使用用于读数据的表格向量布局来考虑给定点可能要求访问在两个不同的表格向量读期间检索的数据。如果向量计算是存储单个表格向量读的数据的寄存器的相同大小,则向量计算可能不能够读表格向量读两者的全部。在一些实施例中,可以应用格式化指令以从多个向量正确地收集信息,使得可以根据表格向量布局2206进行计算。布局2206可以对应于图20中所示的表格向量读的布局。
例如,图表2202可以示出从第一数据向量(向量1)和第二数据向量(向量2)接收的数据,所述第一数据向量和第二数据向量从表格向量读生成。在图表2204中,为了对例如位置(5,5)(其是从模板1006的中心点在y方向上移除的一个位置)执行向量宽计算,来自向量1和向量2两者的数据可能需要被访问。相应地,数据可能需要被格式化,使得可以对位置(5,5)执行向量宽计算。值得注意的是,可能要求附加的信息用于此类计算。
在一个实施例中,为了从多个表格向量访问信息,可以使用专用向量读函数。在图22的示例中,此类函数可以表示为VALIGN。在一个实施例中,VALIGN可以被实现为单个指令。VALIGN可以使用任何合适的参数来指定应当接合来自两个向量的两个部分。例如,VALIGN可以包括指定第一向量、应当采用来自第一向量的什么元素、第二向量以及应当采用来自第二向量的什么元素的参数。 VALIGN可以用其它合适的参数方案来实现。在图表2204的示例中,可以调用VALIGN以指定向量1的最后四个元素(由负4指定的)将被添加到向量2的前12个元素(由12指定的):VALIGN(向量1,-4 ,向量2,12)。在另一示例中,可以暗示负值。在另一个示例中,可以推断向量1和向量2之间的关系,并且仅通过指示要使用向量1的最后值中的多少个的单个数。剩余的值可以假定为来自向量2的第一部分。
在图表2204的示例中,为了完成被移位到在(5,3)(再上面的一个位置)的布局2206的附加计算,可以使用VALIGN(向量1,-8,向量2,8)调用VALIGN,使得向量1的最后八个值与向量2的前八个值组合。对于布置2206转而置于在(5,2)(上面的另一个位置)的布局2206的附加计算,可以使用VALIGN(向量1 , -12,向量2,4)调用VALIGN,使得向量1的最后十二个值与向量2的前四个值组合。然而,对于转而置于在(5,1)(上面的另一个位置)的布局2206的附加计算,布局2206可以针对向量1数据而完成。在这种情况下,可能不需要使用VALIGN,并且可以简单地使用向量1数据(当它被读时)。
在一个实施例中,对于在向量2下面的向量中的计算,可以使用VALIGN的不同参数来重复相同的步骤,以将此类向量的元素与向量2组合。总共六个VALIGN调用可以被用于执行如由布局2206在y方向上应用的表格向量数据的所有计算。六个VALIGN调用可以包括用于图表2202的“顶部”“臂”和中间向量的混合的三个,以及用于图表2202的“底部”臂和中间向量的混合的三个。访问向量1顶部的整个臂可能不要求VALIGN调用。访问整个中间向量2可能不要求VALIGN调用。访问对应于另一向量的整个“底”臂可能不要求VALIGN调用。在16阶模板中,两个附加的输入向量和六个VALIGN调用可能是必需的。
一旦读了给定布局,就可以使用以表格形式的SIMD向量计算来并行计算十六个结果。
图表2210示出“左”臂中向量3和向量2的数据的结果表格向量。为了在x方向上执行与上面在y方向上执行的那些计算类似的计算,布局2206可以从向量2在x方向向左移位,并且其中的分量被计算。为了访问来自向量3和向量2两者的数据,VALIGN可以以与上面描述的方式类似的方式使用。在一个实施例中,可以执行表格向量运算和VALIGN(假设布局2206呈现如在表格向量读2011格式中所示的值。在另一实施例中,可以通过首先置换或转置布局2206的内容来进行用于在x方向上移位布局2206的位置的计算,使得执行计算和VALIGN操作,就好像它们从y方向角度来完成。相应地,向量3和向量2可以被置换或转置。在另一实施例中,然后可以应用VALIGN操作来接合向量3和向量2的元素,可以对于其进行计算。最终结果可能需要在写入存储器之前进行转置。在操作2212中可以示出置换操作。
在置换向量3和向量2之后,可以进行VALIGN调用以将向量3的最后四个元素与向量2的前十二个元素接合; 将向量3的最后八个元素与向量2的前八个元素接合;以及将向量3的最后十二个元素与向量2的前四个元素接合。访问左臂可能不需要VALIGN。该过程可以用“右”臂重复,包括置换其中的表格向量。在组装每个布局中的数据时,可以执行SIMD表格向量计算。
在8阶模板中,可能需要三个置换操作(在x方向上的每个表格向量一个),以及总共六个VALIGN调用以覆盖臂和中心的混合。对于16阶模板,可能需​​要两个附加的输入向量,以及更多两个的置换和更多六个VALIGN调用。
图23是根据本公开的实施例的用于应用用于处理运算的向量格式的方法2300的示例实施例的流程图。方法2300可示出由例如处理器1804执行的操作。方法2300的一些部分可以通过例如由库、编译器或解释器创建指令流1802来执行。方法2300可以在任何合适的点开始,并且可以以任何合适的顺序执行。在一个实施例中,方法2300可以在2305开始。
在2305,可以提取指令以在处理器1804上执行。此类指令可以包括FD指令的形式。在2310,可以对指令进行解码。可以确定FD指令的具体类型及其参数。
在一个实施例中,在2315,可以确定表格向量格式以应用于FD指令。基于FD指令,其阶,其维度或其它识别方面,输入数据的具体形状可用于计算FD指令的给定数据点。基于输入数据的形状,可以选择支持指令和表格向量的形式。
在2320,在一个实施例中,可以确定反映FD指令的给定计算点的输入数据的形状的输入的模板。形状可以是二维或三维的。
在2325,可以将表格向量读指令插入到代码中以支持FD指令。在一个实施例中,表格向量读指令可以映射到输入的模板,使得模板被表格向量读指令的范围覆盖。在另一个实施例中,可以最小化表格向量读的数量。表格向量读的具体数量及其参数(反映通过模板的每个部分的相应覆盖)可以取决于模板和FD指令本身。
在2330,可以为结果表格向量的每个元素插入计算指令。此类计算指令可以是表格向量执行。在一个实施例中,在2335,可以根据需要插入用于支持给定向量计算的对齐和置换指令。使用来自单个寄存器或表格向量(从读指令的执行产生)的数据进行的向量计算可能不要求对齐。然而,使用来自多个此类寄存器或表格向量的数据进行的向量计算可能要求对齐以组合来自多个此类向量的元素。可以根据从读指令返回的数据的形状来进行对齐指令的特定使用。此外,可以插入置换指令以在附加方向(例如x方向或z方向)上执行向量计算。置换指令可以允许计算在这些方向上以在原始方向上执行计算的相同方式继续。可以根据从读指令返回的数据的形状来进行置换指令的特定使用。
在2340,在一个实施例中,可以分派和执行指令。在一个实施例中,可以如上所指定的那样执行表格向量读。在2345,可以根据需要进行对齐并执行向量计算。输出数据可以返回到存储器,高速缓存,寄存器或其它合适的位置。在2350,对于其它方向,可以根据需要执行置换和对齐。可以执行向量计算。可能会返回输出数据。 2350可以对于多个方向而执行。
在2355,可以确定是否在执行FD指令中计算附加数据点。如果是,则方法2300可以返回到2320。如果否,则方法2300可以继续到2360。
在2360,任何未提交或未写入的数据可以被发布到高速缓存、存储器、寄存器或其它位置。在2365,指令可以被引退。方法2300可以可选地根据需要重复或终止。
方法2300可以由任何合适的标准发起。此外,尽管方法2300描述了具体元件的操作,但是方法2300可以由任何合适的组合或元件类型执行。例如,方法2300可以由图1-22中所示的元件或可操作以实现方法2300的任何其它系统来实现。因此,方法2300的优选初始化点和包括方法2300的元件的顺序可以取决于选择的实现。在一些实施例中,一些元件可以被可选地省略,重新组织,重复或组合。
本文公开的机制的实施例可以在硬件、软件、固件或此类实现方法的组合中实现。本公开的实施例可以被实现为在包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置和至少一个输出装置的可编程系统上执行的计算机程序或程序代码。
程序代码可以应用于输入指令以执行本文所描述的功能并生成输出信息。可以以已知的方式将输出信息应用于一个或多个输出装置。为了本申请的目的,处理系统可以包括具有处理器(例如,诸如数字信号处理器(DSP),微控制器,专用集成电路(ASIC)或微处理器)的任何系统。
程序代码可以以高级过程或面向对象的编程语言来实现以与处理系统通信。如果期望,程序代码还可以用汇编或机器语言来实现。事实上,本文描述的机制的范围不限于任何具体的编程语言。在任何情况下,语言可以是编译或解释语言。
至少一个实施例的一个或多个方面可以通过存储在机器可读介质上的代表性指令来实现,所述代表性指令表示处理器内的各种逻辑,所述逻辑当由机器读时使得机器制造逻辑以执行本文所描述的技术。称为“IP核”的此类表示可以存储在有形的,机器可读介质上,并且供应给各种客户或制造设施以加载到实际制作逻辑或处理器的制造机器中。
此类机器可读存储媒体可以包括但不限于由机器或装置制造或形成的物品的非暂时性、有形布置,包括存储媒体(诸如硬盘、任何其它类型的盘(包括软盘、光盘、光盘只读存储器(CD-ROM)、可重写光盘(CD-RW)和磁光盘))、半导体器件(诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡)或任何其它类型的适合于存储电子指令的媒体。
相应地,本公开的实施例还可以包括包含指令或包含诸如硬件描述语言(HDL)的设计数据的非暂时性有形机器可读媒体,其定义结构、电路、设备、处理器和/或本文描述的系统特征。此类实施例也可以被称为程序产品。
在一些情况下,指令转换器可用于将指令从源指令集转换为目标指令集。例如,指令转换器可以转化(例如,使用静态二进制转化,包括动态编译的动态二进制转化)、变形、仿真或以其它方式将指令转换为要由核处理的一个或多个其它指令。指令转换器可以以软件、硬件、固件或其组合来实现。指令转换器可以在处理器上、处理器外或部分在处理器上且部分在处理器外。
因此,公开了用于根据至少一个实施例执行一个或多个指令的技术。虽然已经在附图中描述和示出了某些示例性实施例,但是要理解,此类实施例仅仅是对其它实施例的说明而不是限制,并且此类实施例不限于所示和所描述的特定构造和布置,因为本领域普通技术人员在研究本公开时可以想起各种其它修改。在诸如此类的技术领域中(其中成长快并且不容易预见进一步的进展),所公开的实施例可以在布置和细节上容易地可修改(如在不脱离本公开的原理或随附权利要求的范围的情况下通过实现技术进步所促进的)。

Claims (10)

1.一种处理器,包括:
前端,用于获取指令,所述指令使用来自在多个维度中的多个相邻源数据的输入来计算数据点;
解码器,用于解码所述指令;
核,用于基于所述解码的指令来执行以下操作:
执行多个表格向量读操作以读所述多个相邻源数据;
执行表格向量计算以执行所述指令,所述表格向量计算基于执行所述多个表格向量读操作的结果;以及
写入所述表格向量计算的结果。
2.如权利要求1所述的处理器,其中所述指令是有限差分函数。
3.如权利要求1所述的处理器,其中所述核还要执行以下操作:
将第一表格向量读操作的结果存储到第一向量寄存器中;
将第二表格向量读的结果存储到第二向量寄存器中,所述第二寄存器和所述第一寄存器具有相同大小;以及
基于所述第一向量寄存器中的结果并且基于所述第二向量寄存器中的结果来执行另一个表格向量计算;以及
其中:
所述表格向量计算包括并行进行多个计算;以及
计算的所述数量与所述第一寄存器和所述第二寄存器的所述大小相同。
4.如权利要求1所述的处理器,其中所述核还要执行以下操作:
将第一表格向量读操作的结果存储到第一向量寄存器中;
将第二表格向量读的结果存储到第二向量寄存器中;
将所述第一向量寄存器和所述第二向量寄存器的部分组合,所述组合的部分等于表格向量计算的大小;以及
基于所述第一向量寄存器和所述第二向量寄存器的所述组合的部分而执行另一个表格向量计算。
5.如权利要求1所述的处理器,其中所述核还要执行以下操作:
将第一表格向量读操作的结果转置到第一向量寄存器中;
将第二表格向量读的结果转置到第二向量寄存器中;以及
基于在另一个维度方向中的所述第一向量寄存器和所述第二向量寄存器执行另一个表格向量计算。
6.如权利要求1所述的处理器,其中为执行所述表格向量读操作,所述核还要映射充足数量的表格读操作以覆盖数据输入的模板,所述相邻源数据的多维形状的所述模板用于计算所述数据点。
7.如权利要求1所述的处理器,其中为执行所述表格向量读操作,所述核还要映射充足的最小数量的表格读操作以覆盖数据输入的模板,所述相邻源数据的多维形状的所述模板用于计算所述数据点。
8.一种用于向量计算的方法,所述方法包括通过权利要求1-7的所述处理器的任何一个处理器执行的步骤。
9.一种系统,包括通过权利要求1-7的所述处理器的任何一个处理器执行的处理器。
10.一种系统,包括用于实现权利要求1-7的所述处理器的任何一个处理器的部件。
CN201580045880.7A 2014-09-26 2015-08-19 针对用于处理运算的向量格式的指令和逻辑技术领域 Active CN106575219B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/498,064 US10061746B2 (en) 2014-09-26 2014-09-26 Instruction and logic for a vector format for processing computations
US14/498,064 2014-09-26
PCT/US2015/045899 WO2016048493A1 (en) 2014-09-26 2015-08-19 Instruction and logic for a vector format for processing computations

Publications (3)

Publication Number Publication Date
CN106575219A true CN106575219A (zh) 2017-04-19
CN106575219A8 CN106575219A8 (zh) 2017-07-11
CN106575219B CN106575219B (zh) 2020-06-09

Family

ID=55581737

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580045880.7A Active CN106575219B (zh) 2014-09-26 2015-08-19 针对用于处理运算的向量格式的指令和逻辑技术领域

Country Status (7)

Country Link
US (1) US10061746B2 (zh)
EP (1) EP3198401A4 (zh)
JP (1) JP6415698B2 (zh)
KR (1) KR102296619B1 (zh)
CN (1) CN106575219B (zh)
TW (2) TWI590079B (zh)
WO (1) WO2016048493A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109063830A (zh) * 2017-10-30 2018-12-21 上海寒武纪信息科技有限公司 机器学习处理器及使用处理器执行向量范数指令的方法
WO2022206969A1 (zh) * 2021-04-01 2022-10-06 北京希姆计算科技有限公司 向量指令的识别方法、装置、电子设备及计算机可读存储介质
US11990137B2 (en) 2018-09-13 2024-05-21 Shanghai Cambricon Information Technology Co., Ltd. Image retouching method and terminal device
US11996105B2 (en) 2020-12-11 2024-05-28 Shanghai Cambricon Information Technology Co., Ltd. Information processing method and terminal device

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107315715B (zh) * 2016-04-26 2020-11-03 中科寒武纪科技股份有限公司 一种用于执行矩阵加/减运算的装置和方法
US10332407B2 (en) * 2017-07-07 2019-06-25 Walmart Apollo, Llc Systems and methods for providing emergency alerts at emergency landing areas of unmanned aerial vehicles
US10896043B2 (en) * 2018-09-28 2021-01-19 Intel Corporation Systems for performing instructions for fast element unpacking into 2-dimensional registers
JP7115563B2 (ja) * 2018-12-07 2022-08-09 日本電気株式会社 コンパイル装置、コンパイル方法、及び制御プログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060111881A1 (en) * 2004-11-23 2006-05-25 Warren Jackson Specialized processor for solving optimization problems
CN102099834A (zh) * 2009-05-21 2011-06-15 松下电器产业株式会社 图形描绘装置、图形描绘方法、图形描绘程序、记录了图形描绘程序的记录介质、图形描绘用集成电路
US8423745B1 (en) * 2009-11-16 2013-04-16 Convey Computer Systems and methods for mapping a neighborhood of data to general registers of a processing element

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62120574A (ja) 1985-11-20 1987-06-01 Fujitsu Ltd ベクトル処理装置
GB2329043B (en) * 1997-09-05 2000-04-26 Geco As Method of determining the response caused by model alterations in seismic simulations
US6351802B1 (en) 1999-12-03 2002-02-26 Intel Corporation Method and apparatus for constructing a pre-scheduled instruction cache
US20130212353A1 (en) 2002-02-04 2013-08-15 Tibet MIMAR System for implementing vector look-up table operations in a SIMD processor
US7275148B2 (en) 2003-09-08 2007-09-25 Freescale Semiconductor, Inc. Data processing system using multiple addressing modes for SIMD operations and method thereof
JP5279016B2 (ja) * 2008-11-21 2013-09-04 国立大学法人 東京大学 地球内部を伝播する地震波についての数値解析に用いる演算子生成方法、及び演算子生成装置、並びに地球内部を伝播する地震波についての数値解析を行うシミュレーション装置
US8892412B2 (en) * 2009-03-11 2014-11-18 Exxonmobil Upstream Research Company Adjoint-based conditioning of process-based geologic models
US20110249744A1 (en) * 2010-04-12 2011-10-13 Neil Bailey Method and System for Video Processing Utilizing N Scalar Cores and a Single Vector Core
US8582909B2 (en) * 2011-05-23 2013-11-12 Intel Corporation Adaptive multi-grid contrast optical flow
DE112011105664T5 (de) * 2011-09-26 2014-08-21 Intel Corporation Instruktion und Logik zum Bereitstellen einer Vektorstreuungs-Op- und -Hol-Op-Funktionalität
US9454366B2 (en) * 2012-03-15 2016-09-27 International Business Machines Corporation Copying character data having a termination character from one memory location to another
US9361115B2 (en) * 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US9772854B2 (en) * 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US8924741B2 (en) 2012-12-29 2014-12-30 Intel Corporation Instruction and logic to provide SIMD secure hashing round slice functionality
US9477999B2 (en) * 2013-09-20 2016-10-25 The Board Of Trustees Of The Leland Stanford Junior University Low power programmable image processor
US10528345B2 (en) * 2015-03-27 2020-01-07 Intel Corporation Instructions and logic to provide atomic range modification operations
US9769356B2 (en) * 2015-04-23 2017-09-19 Google Inc. Two dimensional shift array for image processor

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060111881A1 (en) * 2004-11-23 2006-05-25 Warren Jackson Specialized processor for solving optimization problems
CN102099834A (zh) * 2009-05-21 2011-06-15 松下电器产业株式会社 图形描绘装置、图形描绘方法、图形描绘程序、记录了图形描绘程序的记录介质、图形描绘用集成电路
US8423745B1 (en) * 2009-11-16 2013-04-16 Convey Computer Systems and methods for mapping a neighborhood of data to general registers of a processing element

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109063830A (zh) * 2017-10-30 2018-12-21 上海寒武纪信息科技有限公司 机器学习处理器及使用处理器执行向量范数指令的方法
CN109062607A (zh) * 2017-10-30 2018-12-21 上海寒武纪信息科技有限公司 机器学习处理器及使用处理器执行向量最小值指令的方法
CN109062607B (zh) * 2017-10-30 2021-09-21 上海寒武纪信息科技有限公司 机器学习处理器及使用处理器执行向量最小值指令的方法
US11762631B2 (en) 2017-10-30 2023-09-19 Shanghai Cambricon Information Technology Co., Ltd. Information processing method and terminal device
US11922132B2 (en) 2017-10-30 2024-03-05 Shanghai Cambricon Information Technology Co., Ltd. Information processing method and terminal device
US11990137B2 (en) 2018-09-13 2024-05-21 Shanghai Cambricon Information Technology Co., Ltd. Image retouching method and terminal device
US11996105B2 (en) 2020-12-11 2024-05-28 Shanghai Cambricon Information Technology Co., Ltd. Information processing method and terminal device
WO2022206969A1 (zh) * 2021-04-01 2022-10-06 北京希姆计算科技有限公司 向量指令的识别方法、装置、电子设备及计算机可读存储介质

Also Published As

Publication number Publication date
JP2017532639A (ja) 2017-11-02
JP6415698B2 (ja) 2018-10-31
KR102296619B1 (ko) 2021-08-31
TW201717056A (zh) 2017-05-16
CN106575219A8 (zh) 2017-07-11
TWI590079B (zh) 2017-07-01
TWI556118B (zh) 2016-11-01
EP3198401A4 (en) 2018-05-23
US10061746B2 (en) 2018-08-28
WO2016048493A1 (en) 2016-03-31
US20160092400A1 (en) 2016-03-31
TW201633182A (zh) 2016-09-16
EP3198401A1 (en) 2017-08-02
KR20170036036A (ko) 2017-03-31
CN106575219B (zh) 2020-06-09

Similar Documents

Publication Publication Date Title
CN108369509B (zh) 用于基于通道的跨步分散操作的指令和逻辑
CN108292215B (zh) 用于加载-索引和预取-聚集操作的指令和逻辑
TWI731892B (zh) 用於以通道為基礎的跨步儲存操作之指令及邏輯
CN103793201B (zh) 提供向量压缩和旋转功能的指令和逻辑
CN108292229B (zh) 用于重新出现的相邻聚集的指令和逻辑
CN106030518B (zh) 用于整理和退出存储的处理器、方法、系统和装置
TWI743064B (zh) 用於取得多重向量元素操作之指令及邏輯
CN107003921A (zh) 具有有限状态机控制的可重配置测试访问端口
TWI720056B (zh) 用於設置多重向量元素操作之指令及邏輯
CN106575219A (zh) 针对用于处理运算的向量格式的指令和逻辑技术领域
CN108369513A (zh) 用于加载-索引-和-收集操作的指令和逻辑
CN107003839A (zh) 用于移位和乘法器的指令和逻辑
CN108369518A (zh) 用于位字段寻址和插入的指令和逻辑
TW201729076A (zh) 用於合成與排列操作序列之指令及邏輯
CN108351785A (zh) 用于部分减少操作的指令和逻辑
TW201723815A (zh) 用於偶數與奇數向量取得操作之指令及邏輯
CN107077421A (zh) 用于页表游走改变位的指令和逻辑
CN108369510A (zh) 用于以无序加载的置换的指令和逻辑
CN108292218A (zh) 用于向量位字段压缩和扩展的指令和逻辑
CN108351778A (zh) 用于检测浮点抵消效应的指令和逻辑
CN105723329B (zh) 用于识别多指令串无序处理器中引退的指令的方法和设备
CN108369512A (zh) 用于置换序列的指令和逻辑
CN106030520A (zh) 用于软件预获取指令的过滤的指令和逻辑
CN108292214A (zh) 用于获得数据列的指令和逻辑
TW201729081A (zh) 用於以向量為基礎的位元操控之指令及邏輯

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CI01 Publication of corrected invention patent application

Correction item: Priority

Correct: 14/498,064 2014.09.26 US

Number: 16

Volume: 33

CI01 Publication of corrected invention patent application
CI02 Correction of invention patent application

Correction item: Priority

Correct: 14/498,064 2014.09.26 US

Number: 16

Page: The title page

Volume: 33

CI02 Correction of invention patent application
GR01 Patent grant
GR01 Patent grant