CN111752476A - 用于下转换以及交错多个浮点值的装置和方法 - Google Patents

用于下转换以及交错多个浮点值的装置和方法 Download PDF

Info

Publication number
CN111752476A
CN111752476A CN202010123544.2A CN202010123544A CN111752476A CN 111752476 A CN111752476 A CN 111752476A CN 202010123544 A CN202010123544 A CN 202010123544A CN 111752476 A CN111752476 A CN 111752476A
Authority
CN
China
Prior art keywords
data elements
packed data
instruction
bit
processor
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
Application number
CN202010123544.2A
Other languages
English (en)
Inventor
M.阿德尔曼
R.瓦伦丁
B.齐夫
A.格拉德斯坦
S.鲁巴诺维奇
A.海内克
E.乔加纳斯
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 CN111752476A publication Critical patent/CN111752476A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • 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/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/14Conversion to or from non-weighted codes
    • H03M7/24Conversion to or from floating-point codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Nonlinear Science (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Error Detection And Correction (AREA)

Abstract

用于下转换以及交错多个浮点值的装置和方法。一种下转换并且交错数据元素的装置和方法。处理器的一个实施例包括:解码器,其用于解码第一指令来生成经解码的指令;第一源寄存器,其用于存储第一多个紧缩数据元素;第二源寄存器,其用于存储第二多个紧缩数据元素;目的地寄存器,其用于存储第三多个和第四多个紧缩数据元素;执行电路,其用于执行经解码的指令,所述执行电路包括:下转换电路,其用于下转换所述第一(第二)多个紧缩数据元素中的每一个以生成所述第三(第四)多个紧缩数据元素之一;交错电路,其用于在目的地寄存器内交错所述第三多个紧缩数据元素与所述第四多个紧缩数据元素。

Description

用于下转换以及交错多个浮点值的装置和方法
背景技术
本发明的领域
本发明的实施例一般地涉及计算机处理器的领域。更具体地,实施例涉及用于下转换以及交错多个浮点值的装置和方法。
相关技术描述
指令集或指令集架构(ISA)是外部输入和输出(I/O)以及与编程有关的计算机架构的部分,包括原生数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处置。应当注意到,术语“指令”在本文中一般是指宏指令,即被提供给处理器以供执行的指令,其与微指令或微操作(micro-op)——即对宏指令进行解码的处理器解码器的结果——形成对照。微指令或微操作可以被配置成指示处理器上的执行单元执行操作来实现与宏指令相关联的逻辑。
ISA区别于微架构,所述微架构是用于实现指令集的处理器设计技术集。具有不同微架构的处理器可以共享公共的指令集。例如,Intel® Pentium 4处理器、Intel® Core™处理器以及来自加利福尼亚州森尼维耳(Sunnyvale CA)的Advanced Micro Devices(超微半导体)公司的处理器实现x86指令集的几近相同的版本(其中具有在较新版本的情况下已经添加的一些扩展),但是具有不同的内部设计。例如,ISA的相同寄存器架构可以使用公知的技术、以不同的方式被实现在不同的微架构中,包括专用物理寄存器、使用寄存器重命名机制(例如使用寄存器别名表(RAT)、重排序缓冲器(ROB)和引退寄存器文件)的一个或多个动态分配的物理寄存器。除非另行指定,否则短语寄存器架构、寄存器文件和寄存器在本文中被使用来指代对于软件/编程者可见的事物以及指令用来指定寄存器的方式。在需要区别的情况下,形容词“逻辑的”、“架构的”或“软件可见的”将用于指示寄存器架构中的寄存器/文件,而不同的形容词将用于指明给定微架构中的寄存器(例如物理寄存器、重排序缓冲器、引退寄存器、寄存器池)。
附图说明
可以从结合以下附图的以下详细描述中获得对本发明的更好的理解,在所述附图中:
图1A和1B是图示了根据本发明的实施例的通用向量友好的指令格式及其指令模板的框图;
图2A-C是图示了根据本发明的实施例的示例性VEX指令格式的框图;
图3是根据本发明的一个实施例的寄存器架构的框图;并且
图4A是一框图,其图示了根据本发明的实施例的示例性有序的取出、解码、引退流水线以及示例性寄存器重命名、无序的发布/执行流水线二者;
图4B是一框图,其图示了根据本发明的实施例的有序的取出、解码、引退核的示例性实施例,以及将被包括在处理器中的示例性的寄存器重命名、无序的发布/执行架构核二者;
图5A是单个处理器核、连同其与管芯上互连网络的连接的框图;
图5B图示了根据本发明的实施例的图5A中的处理器核的部分的展开视图;
图6是根据本发明的实施例的具有集成存储器控制器和图形的单核处理器以及多核处理器的框图;
图7图示了根据本发明的一个实施例的系统的框图;
图8图示了根据本发明的实施例的第二系统的框图;
图9图示了根据本发明的实施例的第三系统的框图;
图10图示了根据本发明的实施例的芯片上系统(SoC)的框图;
图11图示了一框图,其根据本发明的实施例而对比了使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令;
图12图示了在本发明的不同实施例中使用的不同数据格式;
图13图示了可以在其上实现本发明的实施例的处理器架构;
图14图示了在其中连结(concatenate)结果的现有下转换操作;
图15图示了在其中对经下转换的数据元素进行交错的下转换操作;
图16图示了上转换和解除交错操作的一个实施例;并且
图17图示了根据本发明的一个实施例的方法。
具体实施方式
在以下描述中,为了解释的目的,阐述了众多特定细节以便提供对以下所述的本发明的实施例的透彻理解。然而,将对本领域技术人员明显的是,可以在没有这些特定细节中的一些的情况下实践本发明的实施例。在其它实例中,公知的结构和设备以框图形式被示出,用于避免使本发明的实施例的底层原理模糊。
示例性的处理器架构、指令格式和数据类型
指令集包括一个或多个指令格式。给定的指令格式定义各种字段(位的数目、位的位置)来除了其它事物之外尤其指定将被执行的操作(操作码)以及将在其上执行该操作的(一个或多个)操作数。尽管有指令模板(或子格式)的定义,但是一些指令格式被进一步分解。例如,给定指令格式的指令模板可以被定义成具有指令格式的字段的不同子集(所包括的字段典型地以相同的次序,但是至少一些具有不同的位定位,因为有较少的字段被包括)和/或被定义成使给定的字段被不同地解释。因而,ISA的每个指令使用给定的指令格式(并且如果被定义的话则以该指令格式的指令模板中的给定一个模板)来被表述,并且包括用于指定操作和操作数的字段。例如,示例性的ADD(加法)指令具有特定的操作码和指令格式,所述指令格式包括用于指定该操作码的操作码字段以及用于选择操作数的操作数字段(源1/目的地和源2);以及该ADD(加法)指令在指令流中的出现将在操作数字段中具有特定的内容,其选择特定的操作数。
本文中所述的(一个或多个)指令的实施例可以用不同的格式被具体化。另外,在以下详述示例性的系统、架构和流水线。(一个或多个)指令的实施例可以在这样的系统、架构和流水线上被执行,但是不限于所详述的系统、架构和流水线。
通用向量友好指令格式
向量友好指令格式是适合用于向量指令的指令格式(例如存在特定于向量操作的某些字段)。虽然描述了其中通过向量友好指令格式来支持向量和标量操作二者的实施例,但是可替换的实施例仅仅使用向量友好指令格式的向量操作。
图1A-1B是图示了根据本发明的实施例的通用向量友好的指令格式及其指令模板的框图。图1A是图示了根据本发明的实施例的通用向量友好的指令格式及其A类指令模板的框图;而图1B是图示了根据本发明的实施例的通用向量友好的指令格式及其B类指令模板的框图。特别地,一通用向量友好指令格式100,为其定义了A类和B类指令模板,这二者包括非存储器访问105指令模板和存储器访问120指令模板。在向量友好指令格式的上下文中的术语“通用”是指:指令格式不被约束到任何特定的指令集。
虽然本发明的实施例将被描述,其中向量友好指令格式支持以下:64字节向量操作数长度(或大小)与32位(4字节)或64位(8字节)数据元素宽度(或大小)(并且因而,64字节向量由16个双字大小的元素或可替换地8个四字大小的元素组成);64字节向量操作数长度(或大小)与16位(2字节)或8位(1字节)数据元素宽度(或大小);32字节向量操作数长度(或大小)与32位(4字节)、64位(8字节)、16位(2字节)或8位(1字节)数据元素宽度(或大小);以及16字节向量操作数长度(或大小)与32位(4字节)、64位(8字节)、16位(2字节)或8位(1字节)数据元素宽度(或大小);但是可替换的实施例可以支持更多、更少和/或不同的向量操作数大小(例如256字节向量操作数)与更多、更少或不同的数据元素宽度(例如128位(16字节)数据元素宽度)。
图1A中的A类指令模板包括:1)在非存储器访问105指令模板内,示出有非存储器访问、全凑整(full round)控制类型操作110指令模板,以及非存储器访问、数据变换类型操作115指令模板;以及2)在存储器访问120指令模板内,示出有存储器访问、暂时性125指令模板,以及存储器访问、非暂时性130指令模板。图1B中的B类指令模板包括:1)在非存储器访问105指令模板内,示出有非存储器访问、写掩码控制、部分凑整(partial round)控制类型操作112指令模板,以及非存储器访问、写掩码控制、v大小(vsize)类型操作117指令模板;以及2)在存储器访问120指令模板内,示出有存储器访问、写掩码控制127指令模板。
通用向量友好指令格式100包括下文中按图1A-1B中所图示的次序列出的以下字段。
格式字段140——该字段中的特定值(指令格式标识符值)唯一地标识向量友好指令格式,并且因而标识以向量友好指令格式的指令在指令流中的出现。这样,在以下意义上该字段是可选的:它对于仅仅具有通用向量友好指令格式的指令集而言不被需要。
基本操作字段142——其内容区别不同的基本操作。
寄存器索引字段144——其内容直接地或通过地址生成而指定源和目的地操作数的位置,无论它们是在寄存器中还是在存储器中。这些包括足够数目的位来从PxQ(例如32x512、16x128、32x1024、64x1024)寄存器文件中选择N个寄存器。虽然在一个实施例中N可以多达三个源和一个目的地寄存器,但是可替换的实施例可以支持更多或更少的源和目的地寄存器(例如可以支持多达两个源,其中这些源中的一个还充当目的地;可以支持多达三个源,其中这些源中的一个还充当目的地;可以支持多达两个源和一个目的地)。
修饰符字段146——其内容区分以通用向量指令格式的、指定存储器访问的指令的出现与并非如此的那些;也就是说,在非存储器访问105指令模板与存储器访问120指令模板之间进行区分。存储器访问操作对存储器层次进行读取和/或写入(在一些情况中使用寄存器中的值来指定源和/或目的地地址),而非存储器访问操作不这样做(例如,源和目的地是寄存器)。虽然在一个实施例中该字段还在用于执行存储器地址计算的三个不同的方式之间进行选择,但是可替换的实施例可以支持用于执行存储器地址计算的更多、更少或不同的方式。
扩增操作字段150——其内容区分除了基本操作之外还将执行各种不同操作中的哪一个。该字段是内容特定的。在本发明的一个实施例中,该字段被划分成类字段168、阿尔法(alpha)字段152和贝塔(beta)字段154。扩增操作字段150允许在单指令、而不是2个、3个或4个指令中执行公共分组的操作。
缩放字段160——其内容允许缩放索引字段的内容以用于存储器地址生成(例如,用于使用“2缩放*索引+基础(2scale * index + base)”的地址生成)。
位移字段162A——其内容用作存储器地址生成的部分(例如,用于使用“2缩放*索引+ 基础 + 位移(2scale * index + base + displacement)”的地址生成)。
位移因子字段162B(注意到将位移字段162A直接在位移因子字段162B上的并置指示:一个或另一个被使用)——其内容用作地址生成的部分;它指定将通过存储器访问的大小(N)被缩放的位移因子——其中N是存储器访问中的字节的数目(例如,用于使用“2缩放*索引 + 基础 + 缩放的位移(2scale * index + base + scaled displacement)”的地址生成)。冗余低阶位被忽略并且因此,位移因子字段的内容乘以存储器操作数总大小(N)以便生成将在计算有效地址中被使用的最终位移。由处理器硬件在运行时基于全操作码字段174(在本文中稍后被描述)以及数据操纵字段154C来确定N的值。位移字段162A和位移因子字段162B在如下意义上是可选的:它们不用于非存储器访问105指令模板和/或不同的实施例可以实现两个中的仅一个或不可以实现两个中的任一个。
数据元素宽度字段164——其内容区分将使用多个数据元素宽度中的哪一个(在一些实施例中对于所有指令;在其它实施例中仅仅对于指令中的一些)。该字段在如下意义上是可选的:如果支持仅仅一个数据元素宽度和/或使用操作码的某个方面来支持数据元素宽度的话,则不需要该字段。
写掩码字段170——其内容在按数据元素定位的基础上控制目的地向量操作数中的该数据元素定位是否反映基本操作和扩增操作的结果。A类指令模板支持合并-写掩码化,而B类指令模板支持合并-和归零-写掩码化二者。当合并时,向量掩码允许在(由基本操作和扩增操作所指定的)任何操作的执行期间保护目的地中的任何元素集合免于更新;在另一个实施例中,保持其中对应的掩码位具有0的目的地的每个元素的旧值。对比之下,当归零时,向量掩码允许在(由基本操作和扩增操作所指定的)任何操作的执行期间使目的地中的任何元素集合归零;在一个实施例中,当对应的掩码位具有0值的时候,目的地的元素被设置成0。该功能性的子集是控制被执行的操作的向量长度(即,从第一个到最后一个被修改的元素的跨度)的能力;然而,没有必要使被修改的元素是相继的。因而,写掩码字段170允许部分向量操作,包括加载、存储、算术、逻辑等等。虽然描述了本发明的实施例,其中写掩码字段170的内容选择了在多个写掩码寄存器中包含将被使用的写掩码的一个写掩码寄存器(并且因而写掩码字段170的内容间接地标识将被执行的该掩码化),但是可替换的实施例代替地或附加地允许掩码写字段170的内容直接地指定将被执行的掩码化。
即时字段172——其内容允许即时的规范。该字段在如下意义上是可选的:它不存在于不支持即时的通用向量友好格式的实现方式中并且它不存在于不使用即时的指令中。
类字段168——其内容在不同类的指令之间进行区分。参考图1A-B,该字段的内容在A类和B类指令之间进行选择。在图1A-B中,经圆角化的方形用于指示在字段中存在特定值(例如分别在图1A-B中针对类字段168的A类168A和B类168B)。
A类指令模板
在A类非存储器访问105指令模板的情况中,阿尔法字段152被解释为RS字段152A,其内容区分将执行不同扩增操作类型中的哪一个(例如,针对非存储器访问、凑整类型操作110和非存储器访问、数据变换类型操作115指令模板分别指定凑整152A.1和数据变换152A.2),而贝塔字段154区分将执行所指定类型的操作中的哪一个。在非存储器访问105指令模板中,缩放字段160、位移字段162A和位移缩放字段162B不存在。
非存储器访问指令模板——全凑整控制类型操作
在非存储器访问全凑整控制类型操作110指令模板中,贝塔字段154被解释为凑整控制字段154A,其(一个或多个)内容提供静态凑整。虽然在本发明的所描述的实施例中,凑整控制字段154A包括抑制所有浮点异常(SAE)字段156和凑整操作控制字段158,但是可替换的实施例可以支持:可以将这两个概念编码到相同字段中或仅仅具有这些概念/字段中的一个或另一个(例如,可以仅具有凑整操作控制字段158)。
SAE字段156——其内容区分是否要禁用异常事件报告;当SAE字段156的内容指示了抑制被启用的时候,给定的指令不报告任何种类的浮点异常标志,并且不引发任何浮点异常处置机。
凑整操作控制字段158——其内容区分要执行凑整操作分组中的哪一个(例如,向上凑整、向下凑整、朝零凑整以及向最近凑整)。因而,凑整操作控制字段158允许在按指令的基础上改变凑整模式。在其中处理器包括用于指定凑整模式的控制寄存器的本发明的一个实施例中,凑整操作控制字段150的内容覆写该寄存器值。
非存储器访问指令模板——数据变换类型操作
在非存储器访问数据变换类型操作115指令模板中,贝塔字段154被解释为数据变换字段154B,其内容区分将执行多个数据变换中的哪一个(例如,无数据变换、调配(swizzle)、广播)。
在A类存储器访问120指令模板的情况中,阿尔法字段152被解释为逐出提示(eviction hint)字段152B,其内容区分将使用逐出提示中的哪一个(在图1A中,针对存储器访问、暂时性125指令模板和存储器访问、非暂时性130指令模板分别指定暂时性152B.1和非暂时性152B.2),而贝塔字段154被解释为数据操纵字段154C,其内容区分将执行多个数据操纵操作(也已知为基元)中的哪一个(例如,无操纵;广播;源的上转换;以及目的地的下转换)。存储器访问120指令模板包括缩放字段160,以及可选地位移字段162A或位移缩放字段162B。
向量存储器指令在具有转换支持的情况下执行从存储器的向量加载以及向存储器的向量存储。如同常规向量指令那样,向量存储器指令以按数据元素的方式从/向存储器传递数据,其中实际被传递的元素由被选择为写掩码的向量掩码的内容来指示。
存储器访问指令模板——暂时性
暂时性数据是很可能将足够快地被重复使用以受益于高速缓存的数据。然而,这是提示,并且不同的处理器可以用不同的方式来实现它,包括完全地忽略该提示。
存储器访问指令模板——非暂时性
非暂时性数据是不太可能足够快地被重复使用以受益于第一级高速缓存中的高速缓存的数据,并且应当被给予针对逐出的优先级。然而,这是提示,并且不同的处理器可以用不同的方式来实现它,包括完全地忽略该提示。
B类指令模板
在B类指令模板的情况中,阿尔法字段152被解释为写掩码控制(Z)字段152C,其内容区分受写掩码字段170控制的写掩码化应当是合并还是归零。
在B类非存储器访问105指令模板的情况中,贝塔字段154的部分被解释为RL字段157A,其内容区分将执行不同扩增操作类型中的哪一个(例如,针对非存储器访问、写掩码控制、部分凑整控制类型操作112指令模板和非存储器访问、写掩码控制、V大小类型操作117指令模板分别指定凑整157A.1和向量长度(V大小)157A.2),而贝塔字段154的其余部分区分将执行所指定类型的操作中的哪一个。在非存储器访问105指令模板中,缩放字段160、位移字段162A和位移缩放字段162B不存在。
在非存储器访问、写掩码控制、部分凑整控制类型操作110指令模板中,贝塔字段154的其余部分被解释为凑整操作字段159A并且异常事件报告被禁用(给定指令不报告任何种类的浮点异常标志并且不引发任何浮点异常处置机)。
凑整操作控制字段159A——正如同凑整操作控制字段158那样,其内容区分要执行凑整操作分组中的哪一个(例如,向上凑整、向下凑整、朝零凑整以及向最近凑整)。因而,凑整操作控制字段159A允许在按指令的基础上改变凑整模式。在其中处理器包括用于指定凑整模式的控制寄存器的本发明的一个实施例中,凑整操作控制字段150的内容覆写该寄存器值。
在非存储器访问、写掩码控制、V大小类型操作117指令模板中,贝塔字段154的其余部分被解释为向量长度字段159B,其内容区分将在多个数据向量长度中的哪一个(例如,128、256或512字节)上执行。
在B类存储器访问120指令模板的情况中,贝塔字段154的部分被解释为广播字段157B,其内容区分是否将执行广播类型的数据操纵操作,而贝塔字段154的其余部分被解释为向量长度字段159B。存储器访问120指令模板包括缩放字段160,以及可选地位移字段162A或位移缩放字段162B。
关于通用向量友好指令格式100,示出了全操作码字段174,其包括格式字段140、基本操作字段142和数据元素宽度字段164。虽然示出了一个实施例,其中全操作码字段174包括所有这些字段,但是在不支持它们中所有的实施例中,全操作码字段174包括的少于所有这些字段。全操作码字段174提供操作码(opcode(操作码))。
扩增操作字段150、数据元素宽度字段164以及写掩码字段170允许以通用向量友好指令格式在按指令的基础上指定这些特征。
写掩码字段和数据元素宽度字段的组合创建类型化指令,因为它们允许基于不同的数据元素宽度来应用掩码。
存在于A类和B类内的各种指令模板在不同情形中是有益的。在本发明的一些实施例中,不同的处理器或处理器内的不同核可以支持仅仅A类、仅仅B类或这两个类。例如,意图用于通用计算的高性能通用无序核可以仅仅支持B类,主要意图用于图形和/或科学(吞吐量)计算的核可以仅仅支持A类,并且意图用于这二者的核可以支持二者(当然,具有来自这两个类的模板和指令、但不是来自这两个类的所有模板和指令的某种混合的核在本发明的范围内)。而且,单个处理器可以包括多个核,其中的所有支持相同的类或者其中不同的核支持不同的类。例如,在具有分离的图形和通用核的处理器中,主要意图用于图形和/或科学计算的图形核中的一个可以仅仅支持A类,而通用核中的一个或多个可以是高性能通用核,其具有意图用于仅仅支持B类的通用计算的无序执行和寄存器重命名。没有分离的图形核的另一个处理器可以包括支持A类和B类二者的一个多个通用有序或无序核。当然,在本发明的不同实施例中,来自一个类的特征还可以被实现在另一个类中。以高级语言编写的程序将被置于(例如,准时制(just in time)编译或静态地被编译成)各种不同的可执行形式中,包括:1)一种形式,其仅仅具有受用于执行的目标处理器支持的(一个或多个)类的指令;或2)一种形式,其具有使用所有类的指令的不同组合所编写的可替换例程以及具有控制流代码,所述控制流代码基于受当前正在执行代码的处理器支持的指令来选择要执行的例程。
VEX指令格式
VEX编码允许指令具有多于两个操作数,并且允许SIMD向量寄存器长于28位。使用VEX前缀提供三操作数(或更多)语法。例如,先前的两操作数指令执行诸如A = A + B之类的操作,其覆写源操作数。使用VEX前缀使得操作数能够执行诸如A = B + C之类的非破坏性操作。
图2A图示了示例性的AVX指令格式,包括VEX前缀202、实操作码字段230、取模(Mod)R/M字节240、SIB字节250、位移字段262和IMM8 272。图2B图示了来自图2A的哪些字段构成全操作码字段274和基本操作字段241。图2C图示了来自图2A的哪些字段构成寄存器索引字段244。
VEX前缀(字节0-2)202以三字节形式被编码。第一字节是格式字段290(VEX字节0、位[7:0]),其包含显式C4字节值(用于区分C4指令格式的唯一值)。第二-第三字节(VEX字节1-2)包括提供特定能力的多个位字段。具体地,REX字段205(VEX字节1、位[7-5])包括VEX.R位字段(VEX字节1、位[7]-R),VEX.X位字段(VEX字节1、位[6]-X)和VEX.B位字段(VEX字节1、位[5]-B)。指令的其它字段对寄存器索引的较低三个位进行编码,如本领域中已知的那样(rrr、xxx和bbb),使得可以通过添加VEX.R、VEX.X和VEX.B来形成Rrrr、Xxxx和Bbbb。操作码映射字段215(VEX字节1、位[4:0]-mmmmm)包括用于对所暗指的前导操作码字节进行编码的内容。W字段264(VEX字节2、位[7]-W)由记号VEX.W来表示,并且取决于指令而提供不同的功能。VEX.vvvv220(VEX字节2、位[6:3]-vvvv)的作用可以包括以下:1)VEX.vvvv对用反转(多个1补码)形式所指定的第一源寄存器操作数进行编码,并且对于具有2个或更多个源操作数的指令是有效的;2)VEX.vvvv对目的地寄存器操作数进行编码,所述目的地寄存器操作数针对某些向量移位以多个1补码形式被指定;或3)VEX.vvvv不编码任何操作数,所述字段被预留并且应当包含1111b。如果VEX.L 268大小字段(VEX字节2、位[2]-L)=0,则它指示28位向量;如果VEX.L = 1,则它指示256位向量。前缀编码字段225(VEX字节2、位[1:0]-pp)为基本操作字段241提供附加的位。
实操作码字段230(字节3)也被已知为操作码字节。在该字段中指定操作码的部分。
MOD R/M字段240(字节4)包括MOD字段242(位[7-6])、Reg字段244(位[5-3])和R/M字段246(位[2-0])。Reg字段244的作用可以包括以下:对目的地寄存器操作数或源寄存器操作数(Rrrr的rrr)进行编码,或被看作操作码扩展并且不用于对任何指令操作数进行编码。R/M字段246的作用可以包括以下:对引用存储器地址的指令操作数进行编码,或对目的地寄存器操作数或源寄存器操作数进行编码。
缩放、索引、基础(SIB)——缩放字段250(字节5)的内容包括SS252(位[7-6]),其用于存储器地址生成。SIB.xxx 254(位[5-3])和SIB.bbb 256(位[2-0])的内容已经在先前关于寄存器索引Xxxx和Bbbb而被提及。
位移字段262和即时字段(IMM8)272包含数据。
示例性寄存器架构
图3是根据本发明的一个实施例的寄存器架构300的框图。在所图示的实施例中,存在为512位宽的32个向量寄存器310;这些寄存器被参考标记为zmm0直到zmm31。较低6个zmm寄存器的较低阶256位被叠覆在寄存器ymm0-15上。较低6个zmm寄存器的较低阶128位(ymm寄存器的较低阶128位)被叠覆在寄存器xmm0-15上。
所图示的实施例中的通用寄存器325存在十六个64位通用寄存器,其连同现有的x86寻址模式一起被使用以对存储器操作数进行寻址。这些寄存器通过名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8直到R15来被参考标记。
所图示的实施例中的标量浮点堆栈寄存器文件(x87堆栈)345,在其上混叠了MMX紧缩整数平坦寄存器文件350,x87堆栈是八元素堆栈,其用于使用x87指令集扩展来对32/64/80-位浮点数据执行标量浮点操作;而MMX寄存器用于对64位紧缩整数数据执行操作,以及为在MMX与XMM寄存器之间执行的一些操作持有操作数。
本发明的可替换实施例可以使用更宽或更窄的寄存器。另外,本发明的可替换实施例可以使用更多、更少或不同的寄存器文件和寄存器。
示例性核架构、处理器和计算机架构
处理器核可以用不同的方式、为了不同的目的、并且在不同的处理器中被实现。例如,这样的核的实现方式可以包括:1)意图用于通用计算的通用有序核;2)意图用于通用计算的高性能通用无序核;3)主要意图用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现方式可以包括:1)CPU,其包括意图用于通用计算的一个或多个通用有序核和/或意图用于通用计算的一个或多个通用无序核;以及2)协处理器,其包括主要意图用于图形和/或科学(吞吐量)的一个或多个专用核。这样的不同的处理器导致不同的计算机系统架构,其可以包括:1)来自CPU的分离芯片上的协处理器;2)在与CPU相同的封装中的分离管芯上的协处理器;3)在与CPU相同的管芯上的协处理器(在所述情况中,这样的协处理器有时被称为专用逻辑,诸如集成的图形和/或科学(吞吐量)逻辑,或被称为专用核);以及4)可以在相同管芯上包括所述CPU(有时被称为(一个或多个)应用核或(一个或多个)应用处理器)、上述协处理器和附加功能性的芯片上系统。接下来描述示例性的核架构,继之以对示例性处理器和计算机架构的描述。在本文中详述的是包括示例性的核、处理器等等的电路(单元)。
示例性核架构
图4A是一框图,其图示了根据本发明的实施例的示例性有序的流水线以及示例性的寄存器重命名、无序的发布/执行流水线二者。图4B是一框图,其图示了根据本发明的实施例的有序架构核的示例性实施例,以及将被包括在处理器中的示例性的寄存器重命名、无序的发布/执行架构核二者。图4A-B中的实线框图示了有序流水线和有序核,而可选添加的虚线框图示了寄存器重命名、无序发布/执行流水线与核。考虑到有序方面是无序方面的子集,将描述无序方面。
在图4A中,处理器流水线400包括取出级402、长度解码级404、解码级406、分配级408、重命名级410、调度(也已知为分派或发布)级412、寄存器读取/存储器读取级414、执行级416、写回/存储器写入级418、异常处置级422以及提交级424。
图4B示出了处理器核490,所述处理器核490包括前端单元430,所述前端单元430被耦合到执行引擎单元450,并且所述前端单元430和执行引擎单元450二者被耦合到存储器单元470。核490可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或者混合的或可替换的核类型。作为又一选项,核490可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等等。
前端单元430包括分支预测单元432,所述分支预测单元432被耦合到指令高速缓存单元434,所述指令高速缓存单元434被耦合到指令转化旁视缓冲器(TLB)436,所述指令转化旁视缓冲器(TLB)436被耦合到指令取出单元438,所述指令取出单元438被耦合到解码单元440。解码单元440(或解码器)可以解码指令,并且作为输出而生成一个或多个微操作、微代码入口点、微指令、其它指令或其它控制信号,所述一个或多个微操作、微代码入口点、微指令、其它指令或其它控制信号从原始指令解码,或者以其它方式反映原始指令,或者从原始指令导出。可以使用各种不同的机制来实现解码单元440。合适机制的示例包括但不限于查找表、硬件实现方式、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等等。在一个实施例中,核490包括微代码ROM或其它介质,所述微代码ROM或其它介质存储针对某些宏指令的微代码(例如在解码单元440中或以其它方式在前端单元430内)。解码单元440被耦合到执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450包括重命名/分配器单元452,所述重命名/分配器单元452被耦合到引退单元454和一组一个或多个调度器单元456。(一个或多个)调度器单元456表示任何数目的不同调度器,包括预留站、中央指令窗口等等。(一个或多个)调度器单元456被耦合到物理寄存器(一个或多个)文件(一个或多个)单元458。物理寄存器(一个或多个)文件单元458中的每一个表示一个或多个物理寄存器文件,其中不同的多个物理寄存器文件存储一个或多个不同的数据类型,诸如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为将被执行的下一个指令的地址的指令指针)等等。在一个实施例中,物理寄存器(一个或多个)文件单元458包括向量寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器和通用寄存器。物理寄存器(一个或多个)文件(一个或多个)单元458被引退单元454重叠,以图示可以用来实现寄存器重命名和无序执行的各种方式(例如,使用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器文件;使用(一个或多个)未来文件、(一个或多个)历史缓冲器以及(一个或多个)引退寄存器文件;使用寄存器映射和寄存器池;等等)。引退单元454和物理寄存器(一个或多个)文件(一个或多个)单元458被耦合到(一个或多个)执行集群460。(一个或多个)执行集群460包括一组一个或多个执行单元462以及一组一个或多个存储器访问单元464。执行单元462可以执行各种操作(例如移位、加法、减法、乘法),并且可以对各种类型的数据(例如标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。虽然一些实施例可以包括专用于特定功能或功能集的多个执行单元,但是其它实施例可以包括仅一个执行单元或全部执行所有功能的多个执行单元。(一个或多个)调度器单元456、物理寄存器(一个或多个)文件(一个或多个)单元458和(一个或多个)执行集群460被示出为可能是复数的,因为某些实施例为某些类型的数据/操作创建分离的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线和/或存储器访问流水线,所述流水线各自具有其自己的调度器单元、物理寄存器(一个或多个)文件单元和/或执行集群——并且在分离的存储器访问流水线的情况中,实现某些实施例,其中仅仅该流水线的执行集群具有(一个或多个)存储器访问单元464)。还应当理解的是,在其中使用分离的流水线的情况中,这些流水线中的一个或多个可以是无序发布/执行并且其余是有序的。
该组存储器访问单元464被耦合到存储器单元470,所述存储器单元470包括数据TLB单元472,所述数据TLB单元472被耦合到数据高速缓存单元474,所述数据高速缓存单元474被耦合到第2级(L2)高速缓存单元476。在一个示例性实施例中,存储器访问单元464可以包括加载单元、存储地址单元和存储数据单元,其中的每一个被耦合到存储器单元470中的数据TLB单元472。指令高速缓存单元434此外被耦合到存储器单元470中的第2级(L2)高速缓存单元476。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 Technologies的MIPS指令集;加利福尼亚州森尼维耳市的ARM Holdings的ARM指令集(其具有可选的附加扩展、诸如NEON)),包括本文中所述的(一个或多个)指令。在一个实施例中,核490包括用于支持紧缩数据指令集扩展(例如AVX1、AVX2)的逻辑,从而允许由许多多媒体应用所使用的操作将使用紧缩数据来被执行。
应当理解的是,核可以支持多线程化(执行操作或线程的两个或更多个并行集合),并且可以用各种方式来这样做,包括时间切片的多线程化、同时多线程化(其中单个物理核为该物理核正同时多线程化的线程中的每一个提供逻辑核),或其组合(例如,时间切片的取出和解码以及此后的同时多线程化,诸如在Intel®超线程化技术中那样)。
虽然在无序执行的上下文中描述了寄存器重命名,但是应当理解的是,寄存器重命名可以使用在有序架构中。虽然处理器的所图示的实施例还包括分离的指令和数据高速缓存单元434/474以及共享的L2高速缓存单元476,但是可替换的实施例可以具有用于指令和数据二者的单个内部高速缓存,诸如例如第1级(L1)内部高速缓存,或多级内部高速缓存。在一些实施例中,所述系统可以包括内部高速缓存以及在核和/或处理器外部的外部高速缓存的组合。可替换地,所有高速缓存可以在核和/或处理器的外部。
特定的示例性有序核架构
图5A-B图示了更特定的示例性有序核架构的框图,所述核将是芯片中若干逻辑块(包括相同类型和/或不同类型的其它核)中的一个。取决于应用,逻辑块通过高带宽互连网络(例如环状网络)与某个固定的功能逻辑、存储器I/O接口以及其它必要的I/O逻辑进行通信。
图5A是根据本发明的实施例的单个处理器核、连同其与管芯上互连网络502的连接以及连同其第2级(L2)高速缓存504的局部子集的框图。在一个实施例中,指令解码器500支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存506允许对高速缓存存储器的低等待时间访问进入到标量和向量单元中。虽然在一个实施例中(为了简化设计),标量单元508和向量单元510使用分离的寄存器集合(相应地,标量寄存器512和向量寄存器514),并且在它们之间传递的数据被写到存储器,并且然后从第1级(L1)高速缓存506中读回,但是本发明的可替换实施例可以使用不同的途径(例如使用单个寄存器集合或包括通信路径,所述通信路径允许数据在两个寄存器文件之间被传递而没有被写入和读回)。
L2高速缓存504的局部子集是全局L2高速缓存的部分,所述全局L2高速缓存被划分成分离的局部子集,每个处理器核一个局部子集。每个处理器核具有至其自己的L2高速缓存504局部子集的直接访问路径。由处理器核读取的数据被存储在其L2高速缓存子集504中,并且可以被快速地访问,这与其它处理器核访问其自己的局部L2高速缓存子集并行。由处理器核写入的数据被存储在其自己的L2高速缓存子集504中,并且如果必要的话被从其它子集清除。环状网络确保针对共享数据的一致性。环状网络是双向的,以允许代理、诸如处理器核、L2高速缓存和其它逻辑块在芯片内与彼此通信。在一些实施例中,每个环状数据路径是每个方向1024位宽的。
图5B是根据本发明的实施例的图5A中的处理器核的部分的展开视图。图5B包括L1高速缓存504的L1数据高速缓存506A部分,以及关于向量单元510和向量寄存器514的更多细节。特别地,向量单元510是6宽向量处理单元(VPU)(参见16宽ALU 528),其执行整数、单精度浮动以及双精度浮动指令中的一个或多个。VPU支持利用调配单元520来调配寄存器输入,利用数值转换单元522A-B来进行数值转换,以及利用复制单元524来在存储器输入上复制。
具有集成存储器控制器和图形的处理器
图6是根据本发明的实施例的处理器600的框图,所述处理器600可以具有多于一个核、可以具有集成的存储器控制器、并且可以具有集成的图形。图6中的实线框图示了处理器600,其具有单个核602A、系统代理610、一组一个或多个总线控制器单元616,而可选添加的虚线框图示了可替换的处理器600,其具有多个核602A-N、专用逻辑608以及在系统代理单元610中的一组一个或多个集成的存储器控制器单元614。
因而,处理器600的不同实现方式可以包括:1)CPU,其中专用逻辑608是集成的图形和/或科学(吞吐量)逻辑(其可以包括一个或多个核),并且核602A-N是一个或多个通用核(例如,通用有序核、通用无序核、二者的组合);2)协处理器,其中核602A-N是主要意图用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核602A-N是大量通用有序核。因而,处理器600可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量许多集成核(MIC)协处理器(包括30个或更多个核)、嵌入式处理器等等。处理器可以被实现在一个或多个芯片上。处理器600可以是一个或多个基板的一部分和/或可以被实现在一个或多个基板上,所述一个或多个基板使用多个过程技术、诸如例如BiCMOS、CMOS或NMOS中的任一个。
存储器层次包括一组或一个或多个共享高速缓存单元606、核604A-N内的一级或多级高速缓存以及外部存储器(未示出),所述外部存储器被耦合到该组集成存储器控制器单元614。该组共享高速缓存单元606可以包括一个或多个中级高速缓存,诸如第2级(L2)、第3级(L3)、第4级(L4)或其它级的高速缓存、最末级高速缓存(LLC)和/或其组合。虽然在一个实施例中,基于环的互连单元612将集成图形逻辑608、该组共享高速缓存单元606以及系统代理单元610/(一个或多个)集成存储器控制器单元614互连,但是可替换的实施例可以使用任何数目的公知技术用于互连这样的单元。在一个实施例中,在一个或多个高速缓存单元606与核602-A-N之间维持一致性。
在一些实施例中,核602A-N中的一个或多个能够多线程化。系统代理610包括协调和操作核602A-N的那些部件。系统代理单元610可以包括例如功率控制单元(PCU)和显示单元。PCU可以是或可以包括对于调节核602A-N以及集成图形逻辑608的功率状态所需要的逻辑和部件。显示单元用于驱动一个或多个外部连接的显示器。
核602A-N在架构指令集方面可以是同质或异质的;也就是说,核602A-N中的两个或更多个可以能够执行相同的指令集,而其它的可以能够仅仅执行该指令集的子集或不同的指令集。
示例性计算机架构
图7-10是示例性计算机架构的框图。本领域中已知用于膝上型电脑、台式电脑、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络中心、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、手机、便携式媒体播放器、手持式设备以及各种其它电子设备的其它系统设计和配置也是合适的。通常,能够并入如本文中所公开的处理器和/或其它执行逻辑的各种各样的系统或电子设备通常是合适的。
现在参考图7,示出的是根据本发明的一个实施例的系统700的框图。系统700可以包括一个或多个处理器710、715,其被耦合到控制器中心720。在一个实施例中,控制器中心720包括图形存储器控制器中心(GMCH)790以及输入/输出中心(IOH)750(其可以在分离的芯片上);GMCH 790包括存储器和图形控制器,向所述GMCH 790耦合存储器740和协处理器745;IOH 750将输入/输出(I/O)设备760耦合到GMCH 790。可替换地,存储器和图形控制器中的一个或二者被集成在处理器内(如本文中所述),存储器740和协处理器745直接耦合到处理器710,以及在具有IOH 750的单个芯片中的控制器中心720。
在图7中用断线来标示附加处理器715的可选性质。每个处理器710、715可以包括本文中所述的处理核中的一个或多个,并且可以是某个版本的处理器600。
存储器740可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或二者的组合。对于至少一个实施例,控制器中心720经由多点分支总线(multi-drop bus)与(一个或多个)处理器710、715通信,所述多点分支总线诸如前侧总线(FSB)、点对点接口或类似的连接795。
在一个实施例中,协处理器745是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等。在一个实施例中,控制器中心720可以包括集成图形加速器。
在物理资源710、715之间可以存在着在包括架构、微架构、热学、功率消耗特性等等的优值的度量的范围方面的各种差异。
在一个实施例中,处理器710执行指令,所述指令控制一般类型的数据处理操作。指令内嵌入的可以是协处理器指令。处理器710将这些协处理器指令识别为具有如下类型:所述类型应当由附连的协处理器745来执行。因此,处理器710在协处理器总线或其它互连上向协处理器745发布这些协处理器指令(或表示协处理器指令的控制信号)。(一个或多个)协处理器745接受并且执行所接收的协处理器指令。
现在参考图8,示出的是根据本发明的实施例的第一更特定的示例性系统800的框图。如图8中所示,多处理器系统800是点对点互连系统,并且包括经由点对点互连850耦合的第一处理器870和第二处理器880。处理器870和880中的每一个可以是某个版本的处理器600。在本发明的一个实施例中,处理器870和880分别是处理器710和715,而协处理器838是协处理器745。在另一个实施例中,处理器870和880分别是处理器710、协处理器745。
示出了处理器870和880,其分别包括集成存储器控制器(IMC)单元872和882。处理器870还包括作为其总线控制器单元的部分的点对点(P-P)接口876和878;类似地,第二处理器880包括P-P接口886和888。处理器870、888可以使用P-P接口电路878、888经由点对点(P-P)接口850来交换信息。如图8中所示,IMC 872和882将处理器耦合到相应的存储器,即存储器832和存储器834,其可以是被本地附连到相应处理器的主存储器的部分。
处理器870、880可以各自使用点对点接口电路876、894、886、898经由单独的P-P接口852、854来与芯片组890交换信息。芯片组890可以可选地经由高性能接口892来与协处理器838交换信息。在一个实施例中,协处理器838是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等。
共享的高速缓存(未示出)可以被包括在任一处理器中或在两个处理器的外部,还经由P-P互连而与处理器连接,使得如果处理器被置于低功率模式中,则任一或两个处理器的本地高速缓存信息可以被存储在共享的高速缓存中。
芯片组890可以经由接口896被耦合到第一总线816。在一个实施例中,第一总线816可以是外围部件互连(PCI)总线,或是诸如PCI快速总线或另一I/O互连总线之类的总线,尽管本发明的范围不被这样限制。
如图8中所示,各种I/O设备814可以连同总线桥818一起被耦合到第一总线816,所述总线桥818将第一总线816耦合到第二总线820。在一个实施例中,一个或多个附加的处理器815、诸如协处理器、高吞吐量MIC处理器、GPGPU的加速器(诸如例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器被耦合到第一总线816。在一个实施例中,第二总线820可以是低引脚计数(LPC)总线。在一个实施例中,各种设备可以被耦合到第二总线820,所述各种设备包括例如键盘和/或鼠标822、通信设备827和诸如盘驱动器或其它大容量存储设备之类的存储单元828,所述存储单元828可以包括指令/代码和数据830。此外,音频I/O 824可以被耦合到第二总线816。注意到,其它架构是可能的。例如,代替于图8的点对点架构,系统可以实现多点分支总线或其它这样的架构。
现在参考图9,示出的是根据本发明的实施例的第二更特定的示例性系统900的框图。图8和图9中同样的元素具有同样的参考标号,并且图8的某些方面已经从图9中省略以便避免使图9的其它方面模糊。
图9图示了处理器870、880可以分别包括集成存储器和I/O控制逻辑(“CL”)972和982。因而,CL 972、982包括集成存储器控制器单元并且包括I/O控制逻辑。图9图示了不仅是存储器832、834被耦合到CL 972、982,而且还有I/O设备914也耦合到控制逻辑972、982。遗留I/O设备915耦合到芯片组890。
现在参考图10,示出的是根据本发明的实施例的SoC 1000的框图。图6中的类似元素具有同样的参考标号。而且,虚线框是更高级SoC上的可选特征。在图10中,(一个或多个)互连单元1002耦合到:应用处理器1010,其包括一组一个或多个核102A-N、高速缓存单元604A-N以及(一个或多个)共享的高速缓存单元606;系统代理单元610;(一个或多个)总线控制器单元616;(一个或多个)集成存储器控制器单元614;一组或一个或多个协处理器1020,其可以包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1030;直接存储器存取(DMA)单元1032;以及显示单元1040,其用于耦合到一个或多个外部显示器。在一个实施例中,(一个或多个)协处理器1020包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等等。
本文中公开的机制的实施例可以用硬件、软件、固件或这样的实现途径的组合来实现。本发明的实施例可以被实现为在可编程系统上执行的计算机程序或程序代码,所述可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
程序代码、诸如图8中所图示的代码830可以被应用到输入指令以执行本文中所述的功能并且生成输出信息。输出信息可以用已知方式被应用到一个或多个输出设备。出于该应用的目的,一种处理系统包括具有处理器的任何系统,所述处理器诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以用高级过程性或面向对象的编程语言来被实现以与处理系统通信。如果期望,则程序代码还可以用汇编或机器语言来被实现。事实上,本文中所述的机制在范围上不被限制到任何特定的编程语言。在任何情况中,语言可以是经编译或解译的语言。
至少一个实施例的一个或多个方面可以由被存储在机器可读介质上的代表性指令来实现,所述代表性指令表示处理器内的各种逻辑,所述代表性指令当被机器读取的时候使得所述机器制造逻辑来执行本文中所述的技术。已知为“IP核”的这样的表示可以被存储在有形的机器可读介质上,并且被供应到各种消费者或制造设施以加载到制造机器中,所述制造机器实际制成逻辑或处理器。
这样的机器可读存储介质可以无限制地包括由机器或设备所制造或形成的物品的非暂时性、有形布置,其包括:存储介质,诸如硬盘、任何其它类型的盘(其包括软盘、光学盘、光盘只读存储器(CD-ROM)、光盘可重写(CD-RW)和磁光盘);半导体器件,诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)、磁性或光学卡或适合用于存储电子指令的任何其它类型的介质。
因此,本发明的实施例还包括非暂时性、有形的机器可读介质,所述机器可读介质包含指令或包含设计数据,诸如硬件描述语言(HDL),其限定本文中所述的结构、电路、装置、处理器和/或系统特征。这样的实施例还可以被称为程序产品。
仿真(包括二进制转化、代码变形等等)
在一些情况中,指令转换器可以用于将指令从源指令集转换到目标指令集。例如,指令转换器可以将指令转化(例如使用静态二进制转化、包括动态编译的动态二进制转化)、变形、仿真或以其它方式转换成一个或多个其它指令来由核处理。指令转换器可以用软件、硬件、固件或其组合来实现。指令转换器可以在处理器上、远离处理器或部分在处理器上并且部分远离处理器。
图11是一框图,其根据本发明的实施例而对比了使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令。在所图示的实施例中,指令转换器是软件指令转换器,尽管可替换地,指令转换器可以用软件、固件、硬件或其各种组合来实现。图11示出了以高级语言1102的程序可以使用第一编译器1104来被编译以生成第一二进制代码(例如x86)1106,所述第一二进制代码(例如x86)1106可以由具有至少一个第一指令集核1116的处理器来本机地执行。在一些实施例中,具有至少一个第一指令集核1116的处理器表示通过如下而可以执行与具有至少一个x86指令集核的英特尔处理器大体上相同的功能的任何处理器:兼容地执行或以其它方式处理(1)英特尔x86指令集核的指令集的实质部分,或(2)目标为在具有至少一个x86指令集核的英特尔处理器上运行的应用或其它软件的目标代码版本,以便实现与具有至少一个x86指令集核的英特尔处理器大体上相同的结果。第一编译器1104表示一种编译器,所述编译器可操作以生成第一指令集1106的二进制代码(例如目标代码),其可以在具有或没有附加链接处理的情况下在具有至少一个第一指令集核1116的处理器上被执行。类似地,图11示出了以高级语言1102的程序可以使用可替换的指令集编译器1108来被编译以生成可替换的指令集二进制代码1110,所述可替换的指令集二进制代码1110可以由没有至少一个第一指令集核1114的处理器(例如具有如下核的处理器:所述核执行加利福尼亚州森尼维耳市的MIPS Technologies的MIPS指令集和/或执行加利福尼亚州森尼维耳市的ARM Holdings的ARM指令集)本机地执行。指令转换器1112用于将第一二进制代码1106转换成可以由没有第一指令集核1114的处理器本机地执行的代码。该经转换的代码不大可能与可替换的指令集二进制代码1110相同,因为能够这样做的指令转换器难以制成;然而,经转换的代码将实现一般操作并且由来自可替换指令集的指令构成。因而,指令转换器1112表示软件、固件、硬件或由此的组合,其通过仿真、模拟或任何其它过程而允许没有第一指令集处理器或核的处理器或其它电子设备执行第一二进制代码1106。
用于下转换以及交错多个浮点值的装置和方法
bfloat16浮点格式(有时为“BF16”或“脑浮点(Brain Floating Point)”)是16位数值格式,其通过使用浮动小数点来表示宽动态范围的数值。BF16格式的一个实现方式在图12中被图示,连同单精度浮点格式(FP32)以及半精度浮点格式(FP16)。所图示的BF16格式包括7位尾数、8位指数和1位符号。单精度浮点值可以被转换成BF16,经常用于加速机器学习以及近传感器的计算操作。
BF16是人工智能工作负载中重要的新兴数据类型,其将与FP32并行地被使用。在bfloat16与FP32之间的更快速并且更功率高效的转换因此是有价值的。
存在针对2源FP32向BF16下转换的现有定义,所述2源FP32向BF16下转换将两个经下转换的源连结到一个目的地中。当BF16目的地将BF16计算作为“A矩阵”(矩阵乘法中的左手侧)来馈送的时候,该定义实现所期望的行为。然而,当用于在FP32计算之间的存储器占用缩减的时候或当预备“B矩阵”的时候,该连结需要不必要的跨通道混洗(cross-laneshuffle),这消耗处理资源。
本发明的一个实施例包括两源下转换和交错指令(下文中“转换-交错”)以及执行下转换并且交错经下转换的结果的相关联的电路。当BF16数据类型被用作在FP32计算之间的中间表示的时候,该定义提供更快速的下转换和上转换,以及针对BF16计算中的B矩阵的经交错的向量神经网络指令(VNNI)格式的更快速的下转换。当本文中所述的实施例聚焦在FP32到BF16转换上的时候,本发明的底层原理可以使用其它大到小的下转换指令来被实现。
图13图示了在其上可以实现本发明的实施例的示例性的处理器1355,其包括用于同时执行多个线程的多个核0-N。所图示的实施例包括在解码器1330内的转换-交错解码电路/逻辑1331,以及在执行单元1340内的转换-交错执行电路/逻辑1341。这些流水线部件相应地响应于转换-交错指令的解码和执行而施行本文中所述的操作。例如,在一个实现方式中,转换-解码电路1331包括用于将转换-交错指令解码成微操作或“uop(微操作)”的硬件逻辑,并且转换-交错执行电路1341包括用于执行微操作并且施行本文中所述的转换-交错操作的硬件逻辑。
虽然在图13中示出了仅仅单个核(核0)的细节,但是将理解到处理器1355的其它核中的每一个可以包括类似的部件。所述多个核0-N可以各自包括用于执行存储器操作(例如诸如加载/存储操作)的存储器管理单元1390、一组通用寄存器(GPR)1305、一组向量寄存器1306以及一组掩码寄存器1307。在一个实施例中,多个向量数据元素被封装到每个向量寄存器1306中,所述向量寄存器1306可以具有512位宽,以用于存储两个256位值、四个128位值、八个64位值、十六个32位值等等。然而,本发明的底层原理不限于任何特定大小/类型的向量数据。在一个实施例中,掩码寄存器1307包括八个64位操作数掩码寄存器,其用于对向量寄存器1306(其例如被实现为本文中所述的掩码寄存器k0-k7)中存储的值执行位掩码化操作。然而,本发明的底层原理不限于任何特定的掩码寄存器大小/类型。
每个核0-N可以包括专用的第一级(L1)高速缓存1312和第二级(L2)高速缓存1311,以用于根据所指定的高速缓存管理策略来对指令和数据进行高速缓存。L1高速缓存1312包括用于存储指令的分离的指令高速缓存1320以及用于存储数据的分离的数据高速缓存1321。以可以是固定大小(例如长度上的64、128、512字节)的高速缓存线的粒度来管理各种处理器高速缓存内所存储的指令和数据。该示例性实施例的每个核具有指令取出单元1310,其用于从主存储器1300和/或共享的第三级(L3)高速缓存1316取出指令。指令取出单元1310包括各种公知的部件,包括:下一指令指针1303,其用于存储将从存储器1300(或高速缓存中的一个)被取出的下一指令的地址;指令转化旁视缓冲器(ITLB)1304,其用于存储最近使用的虚拟到物理指令地址的映射来改进地址转化的速度;分支预测单元1302,其用于推测性地预测指令分支地址;以及分支目标缓冲器(BTB)1301,其用于存储分支地址和目标地址。写回/引退单元1350引退所执行的指令并且写回结果。
转换-交错指令的一个特定实施例对两个源SIMD寄存器中的float32(浮动32)元素进行下转换,并且在SIMD目的地寄存器中对它们进行交错。图14图示了一些当前处理器如何将float32下转换至bfloat16值,并且图15图示了在本发明的一个实施例中执行的下转换和交错操作。
首先转到图14,指令单元内的转换和连结电路1405对被存储在两个源寄存器SRC1401和SRC 1402中每一个中的四个紧缩FP32值进行转换,以生成八个对应的BF16值(bf16[0]-[7])。它将来自SRC 1402的四个经转换的值(bf16[0]-[3])存储在目的地寄存器1403的下半部中,并且将来自SRC 1401的经转换的值(bf16[4]-[7])存储在目的地寄存器1403的上半部中,从而连结BF16值的两个集合。如所提及的,需要跨通道的混洗来执行连结。
对比之下,图15图示了在本发明的一个实施例中执行的下转换和交错操作。具体地,下转换电路1504对被存储在两个源寄存器SRC 1501和SRC 1502中每一个中的四个紧缩float32值进行转换,以生成八个对应的bfloat16值(bf16[0]-[7])。交错电路1505然后在没有跨通道混洗或任何形式的跨通道操作的情况下组合经转换的bfloat16值的两个集合。例如,在该实施例中,交错电路1505将每个bf16[n]值存储在目的地寄存器1503中的紧缩数据元素位置中,其与源值处于相同的通道中。因而,例如,在下转换电路相应地将来自SRC1501的32位紧缩数据元素fp32[3]以及来自SRC 1502的32位紧缩数据元素fp32[3]转换成16位紧缩数据元素bf16[7]和bf16[6]之后,交错电路1505在与两个32位数据元素fp32[3]相同的通道内交错bf16[7]与bf16[6]数据元素。类似地,来自SRC 1501和SRC 1502的fp32[2]被下转换,并且结果得到的fp16[5]和fp16[4]相应地被存储在与fp32[2]相同的通道中。针对源数据元素fp32[1]和fp32[0]类似地执行下转换和交错操作。最终结果是:不需要任何高成本的跨通道操作来完成并行下转换操作。
以下的代码序列指定转换-交错指令的一个特定的实现方式:
//将甚至两个FP32源转换并且最近凑整成
//经交错的bfloat16格式
Figure 875347DEST_PATH_IMAGE001
自经交错的格式的上转换与以经连结的格式相比还更高效。图16图示了响应于上转换-解除交错指令的一个实施例执行的操作,在其中不需要任何跨通道的置换,如在先前的实现方式中那样。上转换电路1604将来自SRC 1603(其包含与DEST 1503相同的bf16布置)的每个bf16值转换成一个fp32值。解除交错电路1605将八个结果得到的fp32值分布在目的地寄存器1601-1602之间,如所示出的那样,使得每个fp32[n]数据元素被存储在与生成它所来自的对应的bf16p[n]数据元素相同的通道中。
在一个具体的实现方式中,解除交错电路1605为目的地1602中的数据元素执行按16位的向量左移位(例如使用VPSLLD指令),并且通过使每个32位元素中的较低16位归零(例如,利用向量为0xffff0000的逻辑“与”,或右移位继之以左移位)来存储fp32[n]数据元素。
在图17中图示根据本发明的一个实施例的方法。所述方法可以被实现在上述系统架构的上下文内,但是不限于任何特定的系统架构。
在1701处,取出指令,所述指令具有针对操作码的字段,第一源操作数标识第一紧缩数据寄存器,所述第一紧缩数据寄存器存储单精度浮点数据元素的第一集合,第二源操作数标识第二紧缩数据寄存器,所述第二紧缩数据寄存器存储单精度浮点数据元素的第二集合,并且目的地操作数用于标识目的地紧缩数据寄存器,所述目的地紧缩数据寄存器将存储多个紧缩bfloat16值。
在1702处,指令被解码成多个微操作。解码可以包括解译操作码来标识待执行的微操作的序列,以及解译第一和第二源操作数以及目的地操作数以标识与这些操作数相关联的物理紧缩数据寄存器。
在1703处,经解码的指令被执行以将单精度浮点数据元素的第一和第二集合中的每一个下转换成bfloat16值。在一个实施例中,从单精度浮点数据元素的第一集合所生成的bfloat16值与从单精度浮点数据元素的第二集合所生成的bfloat16值相交错。bfloat16值因而以该交错的格式被存储在目的地紧缩数据寄存器中,使得每个bfloat16数据元素处于与其对应的单精度浮点数据元素相同的通道中。
上述源和目的地寄存器可以存储任何数目的FP32或BF16值。例如,128位寄存器可以用于存储四个32位浮点数据元素(如在图15-16中所示)以及八个16位bfloat16数据元素。可替换地,256位寄存器或512位寄存器可以相应地存储八个或十六个32位浮点数据元素,以及相应地存储十六个或三十二个bfloat16数据元素。
本文中所述的下转换和交错操作可以用于任何两个数据格式,其中第一数据格式需要N位并且第二数据格式需要N/2位。此外,这些技术可以适用于整数值以及浮点值。
当在FP32计算序列之间使用bfloat16格式以减小存储器带宽的时候,上述交错格式是特别有用的。在该情况中,只要原始对应的fp32元素被正确地恢复,bfloat16元素的次序就不重要。另一用例是:其中交错格式可以是有用的情况是当对FP32元素进行下转换以用作BF16计算的右手侧的时候。BF16计算指令可以为点积假定“VNNI格式”,使得右手的大小在逻辑上由两个交错的行组成。
对于FP32至BF16转换密集的工作负载,上述实施例改进性能多达50%。对于其中字的跨通道混洗快速的微架构,通过对交错格式执行跨通道置换指令,所提出的交错格式的性能可以类似于现有的连结实现方式。
示例
以下是本发明的不同实施例的示例实现方式。
示例1。一种处理器,包括:解码器,其用于解码第一指令来生成经解码的指令;第一源寄存器,其用于存储第一多个紧缩数据元素;第二源寄存器,其用于存储第二多个紧缩数据元素;目的地寄存器,其用于存储第三多个和第四多个紧缩数据元素,所述第三和第四多个紧缩数据元素中的每一个将利用比所述第一和第二多个紧缩数据元素中每一个更少的位来被编码;执行电路,其用于执行经解码的指令,所述执行电路包括:下转换电路,其用于下转换所述第一多个紧缩数据元素中的每一个以生成所述第三多个紧缩数据元素之一,以及下转换所述第二多个紧缩数据元素中的每一个以生成所述第四多个紧缩数据元素之一;交错电路,其用于在目的地寄存器内交错所述第三多个紧缩数据元素与所述第四多个紧缩数据元素。
示例2。示例1的处理器,其中所述第一和第二多个紧缩数据元素中的每个数据元素包括N位,并且其中所述第三和第四多个紧缩数据元素中的每个数据元素包括N/2位。
示例3。示例2的处理器,其中所述第一和第二多个紧缩数据元素中的每个数据元素包括32位浮点值,并且其中所述第三和第四多个紧缩数据元素中的每个数据元素包括16位值。
示例4。示例3的处理器,其中所述16位值包括bfloat16值。
示例5。示例4的处理器,其中bfloat16值包括7位尾数值、8位指数值以及1位符号值。
示例6。示例1的处理器,其中所述执行电路包括:解除交错和上转换电路,其用于对所述第三和第四多个数据元素进行解除交错和上转换,以重现所述第一源寄存器中的第一多个紧缩数据元素,并且重现所述第二源寄存器中的第二多个紧缩数据元素。
示例7。示例5的处理器,其中所述第一和第二源寄存器以及目的地寄存器包括128位寄存器、256位寄存器或512位寄存器。
示例8。示例5的处理器,其中所述执行电路用于执行指令的序列,以使用所述第三和第四多个数据元素来执行机器学习操作。
示例9。一种方法,包括:对第一指令进行解码以生成经解码的指令;将第一多个紧缩数据元素存储在第一源寄存器中;将第二多个紧缩数据元素存储在第二源寄存器中;执行所述经解码的指令并且响应性地:下转换所述第一多个紧缩数据元素中的每一个以生成所述第三多个紧缩数据元素之一,下转换所述第二多个紧缩数据元素中的每一个以生成所述第四多个紧缩数据元素之一;在目的地寄存器内交错所述第三多个紧缩数据元素与所述第四多个紧缩数据元素。
示例10。示例9的方法,其中所述第一和第二多个紧缩数据元素中的每个数据元素包括N位,并且其中所述第三和第四多个紧缩数据元素中的每个数据元素包括N/2位。
示例11。示例10的方法,其中所述第一和第二多个紧缩数据元素中的每个数据元素包括32位浮点值,并且其中所述第三和第四多个紧缩数据元素中的每个数据元素包括16位值。
示例12。示例11的方法,其中所述16位值包括bfloat16值。
示例13。示例12的方法,其中bfloat16值包括7位尾数值、8位指数值以及1位符号值。
示例14。示例9的方法,此外包括:对所述第三和第四多个数据元素进行解除交错和上转换,以重现所述第一源寄存器中的第一多个紧缩数据元素,并且重现所述第二源寄存器中的第二多个紧缩数据元素。
示例15。示例13的方法,其中所述第一和第二源寄存器以及目的地寄存器包括128位寄存器、256位寄存器或512位寄存器。
示例16。示例13的方法,此外包括:使用所述第三和第四多个数据元素来执行机器学习操作。
示例17。一种具有被存储在其上的程序代码的机器可读介质,所述程序代码当被机器执行的时候使得所述机器执行如下操作:对第一指令进行解码以生成经解码的指令;将第一多个紧缩数据元素存储在第一源寄存器中;将第二多个紧缩数据元素存储在第二源寄存器中;执行所述经解码的指令并且响应性地:下转换所述第一多个紧缩数据元素中的每一个以生成所述第三多个紧缩数据元素之一,下转换所述第二多个紧缩数据元素中的每一个以生成所述第四多个紧缩数据元素之一;在目的地寄存器内交错所述第三多个紧缩数据元素与所述第四多个紧缩数据元素。
示例18。示例17的机器可读介质,其中所述第一和第二多个紧缩数据元素中的每个数据元素包括N位,并且其中所述第三和第四多个紧缩数据元素中的每个数据元素包括N/2位。
示例19。示例18的机器可读介质,其中所述第一和第二多个紧缩数据元素中的每个数据元素包括32位浮点值,并且其中所述第三和第四多个紧缩数据元素中的每个数据元素包括16位值。
示例20。示例19的机器可读介质,其中所述16位值包括bfloat16值。
示例21。示例20的机器可读介质,其中bfloat16值包括7位尾数值、8位指数值以及1位符号值。
示例22。示例17的机器可读介质,此外包括用于使得机器执行如下操作的程序代码:对所述第三和第四多个数据元素进行解除交错和上转换,以重现所述第一源寄存器中的第一多个紧缩数据元素,并且重现所述第二源寄存器中的第二多个紧缩数据元素。
示例23。示例21的机器可读介质,其中所述第一和第二源寄存器以及目的地寄存器包括128位寄存器、256位寄存器或512位寄存器。
示例24。示例21的机器可读介质,此外包括用于使得机器执行如下操作的程序代码:使用所述第三和第四多个数据元素来执行机器学习操作。
本发明的实施例可以包括上面已经描述的各种步骤。所述步骤可以被具体化在机器可执行指令中,所述机器可执行指令可以用于使得通用或专用处理器执行所述步骤。可替换地,这些步骤可以由包含用于执行所述步骤的硬连线的逻辑的特定硬件部件来执行,或由经编程的计算机部件和定制硬件部件的任何组合来执行。
在前述说明书中,已经参考本发明的特定示例性实施例而描述了本发明的实施例。然而,将明显的是:在不脱离如所附权利要求中阐述的本发明的更宽的精神和范围的情况下,可以对其进行各种修改和改变。说明书和附图因此要以说明性的而不是限制性的意义来被看待。
如本文中所述,指令可以是指被配置成执行某些操作或具有预定功能性的硬件(诸如专用集成电路(ASIC))的特定配置,或在被具体化在非暂时性计算机可读介质中的存储器中所存储的软件指令。因而,图中所示的技术可以使用在一个或多个电子设备(例如终端站、网络元件等等)上所存储和执行的代码和数据来被实现。这样的电子设备使用计算机机器可读介质来存储和传送(在内部和/或通过网络而与其它电子设备)代码和数据,所述计算机机器可读介质诸如非暂时性计算机机器可读存储介质(例如磁盘;光盘;随机存取存储器;只读存储器;闪速存储器设备;相变存储器)以及暂时性计算机机器可读通信介质(例如电学、光学、声学或其它形式的传播信号——诸如载波、红外信号、数字信号等等)。
另外,这样的电子设备典型地包括被耦合到一个或多个其它部件、诸如一个或多个存储设备(非暂时性机器可读存储介质)、用户输入/输出设备(例如键盘、触摸屏和/或显示器)以及网络连接的一个或多个处理器的集合。处理器集合和其它部件的耦合典型地通过一个或多个总线和桥(也被称为总线控制器)。承载网络业务的信号和存储设备分别表示一个或多个机器可读存储介质和机器可读通信介质。因而,给定电子设备的存储设备典型地存储用于在该电子设备的一个或多个处理器的集合上执行的代码和/或数据。当然,本发明的实施例的一个或多个部分可以使用软件、固件和/或硬件的不同组合而被实现。
贯穿本详细描述,出于解释的目的,阐述了众多特定细节以便提供对本发明的透彻理解。然而,将对本领域技术人员明显的是,可以在没有这些特定细节中的一些的情况下实践本发明。在某些情况中,没有以详尽的细节来描述公知的结构和功能以便避免使本发明的主题模糊。因此,应当据随后的权利要求书来判定本发明的精神和范围。

Claims (26)

1.一种处理器,包括:
解码器,其用于解码第一指令来生成经解码的指令;
第一源寄存器,其用于存储第一多个紧缩数据元素;
第二源寄存器,其用于存储第二多个紧缩数据元素;
目的地寄存器,其用于存储第三多个和第四多个紧缩数据元素,所述第三和第四多个紧缩数据元素中的每一个将利用比所述第一和第二多个紧缩数据元素中每一个更少的位来被编码;
执行电路,其用于执行经解码的指令,所述执行电路包括:
下转换电路,其用于下转换所述第一多个紧缩数据元素中的每一个以生成所述第三多个紧缩数据元素之一,以及下转换所述第二多个紧缩数据元素中的每一个以生成所述第四多个紧缩数据元素之一;
交错电路,其用于在目的地寄存器内交错所述第三多个紧缩数据元素与所述第四多个紧缩数据元素。
2.根据权利要求1所述的处理器,其中所述第一和第二多个紧缩数据元素中的每个数据元素包括N位,并且其中所述第三和第四多个紧缩数据元素中的每个数据元素包括N/2位。
3.根据权利要求2所述的处理器,其中所述第一和第二多个紧缩数据元素中的每个数据元素包括32位浮点值,并且其中所述第三和第四多个紧缩数据元素中的每个数据元素包括16位值。
4.根据权利要求3所述的处理器,其中所述16位值包括bfloat16值。
5.根据权利要求4所述的处理器,其中bfloat16值包括7位尾数值、8位指数值以及1位符号值。
6.根据权利要求1或5所述的处理器,其中所述执行电路包括:
解除交错和上转换电路,其用于对所述第三和第四多个数据元素进行解除交错和上转换,以重现所述第一源寄存器中的第一多个紧缩数据元素,并且重现所述第二源寄存器中的第二多个紧缩数据元素。
7.根据权利要求5所述的处理器,其中所述第一和第二源寄存器以及目的地寄存器包括128位寄存器、256位寄存器或512位寄存器。
8.根据权利要求5所述的处理器,其中所述执行电路用于执行指令的序列,以使用所述第三和第四多个数据元素来执行机器学习操作。
9.一种方法,包括:
对第一指令进行解码以生成经解码的指令;
将第一多个紧缩数据元素存储在第一源寄存器中;
将第二多个紧缩数据元素存储在第二源寄存器中;
执行所述经解码的指令并且响应性地:
下转换所述第一多个紧缩数据元素中的每一个以生成所述第三多个紧缩数据元素之一;
下转换所述第二多个紧缩数据元素中的每一个以生成所述第四多个紧缩数据元素之一;
在目的地寄存器内交错所述第三多个紧缩数据元素与所述第四多个紧缩数据元素。
10.根据权利要求9所述的方法,其中所述第一和第二多个紧缩数据元素中的每个数据元素包括N位,并且其中所述第三和第四多个紧缩数据元素中的每个数据元素包括N/2位。
11.根据权利要求10所述的方法,其中所述第一和第二多个紧缩数据元素中的每个数据元素包括32位浮点值,并且其中所述第三和第四多个紧缩数据元素中的每个数据元素包括16位值。
12.根据权利要求11所述的方法,其中所述16位值包括bfloat16值。
13.根据权利要求12所述的方法,其中bfloat16值包括7位尾数值、8位指数值以及1位符号值。
14.根据权利要求9或13所述的方法,此外包括:
对所述第三和第四多个数据元素进行解除交错和上转换,以重现所述第一源寄存器中的第一多个紧缩数据元素,并且重现所述第二源寄存器中的第二多个紧缩数据元素。
15.根据权利要求13所述的方法,其中所述第一和第二源寄存器以及目的地寄存器包括128位寄存器、256位寄存器或512位寄存器。
16.根据权利要求13所述的方法,此外包括:
使用所述第三和第四多个数据元素来执行机器学习操作。
17.一种具有被存储在其上的程序代码的机器可读介质,所述程序代码当被机器执行的时候使得所述机器执行如下操作:
对第一指令进行解码以生成经解码的指令;
将第一多个紧缩数据元素存储在第一源寄存器中;
将第二多个紧缩数据元素存储在第二源寄存器中;
执行所述经解码的指令并且响应性地:
下转换所述第一多个紧缩数据元素中的每一个以生成所述第三多个紧缩数据元素之一;
下转换所述第二多个紧缩数据元素中的每一个以生成所述第四多个紧缩数据元素之一;
在目的地寄存器内交错所述第三多个紧缩数据元素与所述第四多个紧缩数据元素。
18.根据权利要求17所述的机器可读介质,其中所述第一和第二多个紧缩数据元素中的每个数据元素包括N位,并且其中所述第三和第四多个紧缩数据元素中的每个数据元素包括N/2位。
19.根据权利要求18所述的机器可读介质,其中所述第一和第二多个紧缩数据元素中的每个数据元素包括32位浮点值,并且其中所述第三和第四多个紧缩数据元素中的每个数据元素包括16位值。
20.根据权利要求19所述的机器可读介质,其中所述16位值包括bfloat16值。
21.根据权利要求20所述的机器可读介质,其中bfloat16值包括7位尾数值、8位指数值以及1位符号值。
22.根据权利要求17或21所述的机器可读介质,此外包括用于使得机器执行如下操作的程序代码:
对所述第三和第四多个数据元素进行解除交错和上转换,以重现所述第一源寄存器中的第一多个紧缩数据元素,并且重现所述第二源寄存器中的第二多个紧缩数据元素。
23.根据权利要求21所述的机器可读介质,其中所述第一和第二源寄存器以及目的地寄存器包括128位寄存器、256位寄存器或512位寄存器。
24.根据权利要求21所述的机器可读介质,此外包括用于使得机器执行如下操作的程序代码:
使用所述第三和第四多个数据元素来执行机器学习操作。
25.一种装置,包括:
用于对第一指令进行解码以生成经解码的指令的装置;
用于将第一多个紧缩数据元素存储在第一源寄存器中以及将第二多个紧缩数据元素存储在第二源寄存器中的装置;
用于如下的装置:执行所述经解码的指令并且响应性地:
下转换所述第一多个紧缩数据元素中的每一个以生成所述第三多个紧缩数据元素之一;
下转换所述第二多个紧缩数据元素中的每一个以生成所述第四多个紧缩数据元素之一;
在目的地寄存器内交错所述第三多个紧缩数据元素与所述第四多个紧缩数据元素。
26.根据权利要求25所述的装置,其中所述第一和第二多个紧缩数据元素中的每个数据元素包括N位,并且其中所述第三和第四多个紧缩数据元素中的每个数据元素包括N/2位。
CN202010123544.2A 2019-03-27 2020-02-27 用于下转换以及交错多个浮点值的装置和方法 Pending CN111752476A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/367216 2019-03-27
US16/367,216 US20190220278A1 (en) 2019-03-27 2019-03-27 Apparatus and method for down-converting and interleaving multiple floating point values

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202410247930.0A Division CN118132146A (zh) 2019-03-27 2020-02-27 用于下转换以及交错多个浮点值的装置和方法

Publications (1)

Publication Number Publication Date
CN111752476A true CN111752476A (zh) 2020-10-09

Family

ID=67212900

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010123544.2A Pending CN111752476A (zh) 2019-03-27 2020-02-27 用于下转换以及交错多个浮点值的装置和方法

Country Status (3)

Country Link
US (1) US20190220278A1 (zh)
EP (2) EP4321992A3 (zh)
CN (1) CN111752476A (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210157636A (ko) * 2020-06-22 2021-12-29 삼성전자주식회사 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템
US11188329B1 (en) 2020-06-24 2021-11-30 Micron Technology, Inc. Dynamic precision bit string accumulation
US20220100507A1 (en) * 2020-09-26 2022-03-31 Intel Corporation Apparatuses, methods, and systems for instructions to convert 16-bit floating-point formats
US20220206743A1 (en) * 2020-12-26 2022-06-30 Intel Corporation Instructions to convert from fp16 to bf8
CN113867682B (zh) * 2021-12-06 2022-02-22 广东省新一代通信与网络创新研究院 一种用于实现浮点数乱序转换的协处理器
US20230205527A1 (en) * 2021-12-23 2023-06-29 Intel Corporation Conversion instructions
EP4318226A1 (en) * 2022-08-03 2024-02-07 Intel Corporation Instructions to convert from fp8

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US5933650A (en) * 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US9880845B2 (en) * 2013-11-15 2018-01-30 Qualcomm Incorporated Vector processing engines (VPEs) employing format conversion circuitry in data flow paths between vector data memory and execution units to provide in-flight format-converting of input vector data to execution units for vector processing operations, and related vector processor systems and methods
US10853067B2 (en) * 2018-09-27 2020-12-01 Intel Corporation Computer processor for higher precision computations using a mixed-precision decomposition of operations
US11372643B2 (en) * 2018-11-09 2022-06-28 Intel Corporation Systems and methods for performing instructions to convert to 16-bit floating-point format

Also Published As

Publication number Publication date
EP3716048A1 (en) 2020-09-30
EP3716048B1 (en) 2023-11-22
EP4321992A2 (en) 2024-02-14
US20190220278A1 (en) 2019-07-18
EP4321992A3 (en) 2024-05-01

Similar Documents

Publication Publication Date Title
US20200183688A1 (en) Packed data operation mask shift processors, methods, systems, and instructions
US20170300327A1 (en) Packed data operation mask concatenation processors, methods, systems, and instructions
EP3716048B1 (en) Apparatus and method for down-converting and interleaving multiple floating point values
US20220100509A1 (en) Apparatus and method for loop flattening and reduction in a single instruction multiple data (simd) pipeline
KR102463858B1 (ko) 벡터 인덱스 로드 및 저장을 위한 방법 및 장치
US20200097290A1 (en) Method and apparatus for performing a vector permute with an index and an immediate
KR102462174B1 (ko) 벡터 비트 셔플을 수행하기 위한 방법 및 장치
US20190205137A1 (en) Methods and apparatus for multi-load and multi-store vector instructions
JP6635438B2 (ja) ベクトルビット反転およびクロスを実行するための方法および装置
CN114791795A (zh) 用于复数乘法的装置和方法
JP6741006B2 (ja) マスクレジスタとベクトルレジスタとの間で可変に拡張するための方法および装置
US20190042262A1 (en) Method and apparatus for efficient matrix alignment in a systolic array
CN110659129A (zh) 用于数据表示之间的一致、加速的转换的装置和方法
US11409525B2 (en) Apparatus and method for vector multiply and accumulate of packed words
CN108292249B (zh) 用于预留比特的施行的设备和方法
KR102528073B1 (ko) 벡터 비트 수집을 수행하기 위한 방법 및 장치
US20200004535A1 (en) Accelerator apparatus and method for decoding and de-serializing bit-packed data
EP3798824A1 (en) Apparatus and method for store pairing with reduced hardware requirements
CN118132146A (zh) 用于下转换以及交错多个浮点值的装置和方法
EP3394733A1 (en) Apparatus and method for retrieving elements from a linked structure

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