CN104137058A - 用于十进制浮点数据逻辑提取的方法和装置 - Google Patents
用于十进制浮点数据逻辑提取的方法和装置 Download PDFInfo
- Publication number
- CN104137058A CN104137058A CN201180076413.2A CN201180076413A CN104137058A CN 104137058 A CN104137058 A CN 104137058A CN 201180076413 A CN201180076413 A CN 201180076413A CN 104137058 A CN104137058 A CN 104137058A
- Authority
- CN
- China
- Prior art keywords
- decimal system
- encoded
- type
- system floating
- codings
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/491—Computations with decimal numbers radix 12 or 20.
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2205/00—Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F2205/003—Reformatting, i.e. changing the format of data representation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/491—Indexing scheme relating to groups G06F7/491 - G06F7/4917
- G06F2207/4911—Decimal floating-point representation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Nonlinear Science (AREA)
- Executing Machine-Instructions (AREA)
Abstract
描述了在计算机处理器中执行BIDSplit指令的系统、设备和方法的实施例。在一些实施例中,BIDSplit指令的执行测试二进制整数十进制源值的编码并将符号、指数和/或有效数提取到目的地。
Description
技术领域
本发明的领域一般涉及计算机处理器架构,更具体地涉及在执行时导致特定结果的指令。
背景技术
十进制浮点算术在需要精确表示十进制分数的计算机应用中尤其重要。因为传统的二进制浮点算术不提供最优的十进制舍入设施且不能精确地表示很多分数,所以在用于对十进制舍入误差敏感的应用时它施加额外的负担。例如,利用这些数字表示的银行、保险和其它金融应用将采用附件软件模块以改正舍入误差,否则它们将遭受舍入误差传播。十进制浮点编码避免这些缺点,因为它可精确表示十进制分数,并提供与传统笔-纸计算相等的算术结果。
在IEEE-754-2008中介绍利用十进制浮点对值进行编码的两个标准。已知这些标准之一是二进制整数十进制,其中利用有效数字、指数和符号对数进行编码。典型地,需要利用二进制整数十进制编码的计算的应用使用软件库,该软件库使用标量指令集和连续相关的算法来标识和解码这些值。
指令集,或指令集架构(ISA)是涉及编程的计算机架构的一部分,并可以包括原生数据类型、指令、寄存器架构、寻址模式、存储器架构,中断和异常处理、以及外部输入和输出(I/O)。在本文中术语指令一般指宏指令——即被提供给处理器(或指令转换器,该指令转换器(例如使用静态二进制翻译、包括动态编译的动态二进制翻译)翻译、变形、仿真,或以其他方式将指令转换成要由处理器处理的一个或多个指令)的指令)以用于执行的指令——而不是微指令或微操作(micro-op)——它们是处理器的解码器解码宏指令的结果。
ISA与微架构不同,微架构是实现指令集的处理器的内部设计。带有不同的微架构的处理器可以共享共同的指令集。例如,ISA的相同寄存器架构在不同的微架构中可使用已知的技术以不同方法来实现,包括专用物理寄存器、使用寄存器重命名机制(诸如,使用寄存器别名表RAT、重排序缓冲器ROB、以及引退寄存器组;使用多映射和寄存器池)的一个或多个动态分配物理寄存器等。除非另作说明,短语寄存器架构、寄存器组,以及寄存器在本文中被用来指代对软件/编程器以及指令指定寄存器的方式可见。在需要特殊性的情况下,形容词逻辑、架构,或软件可见的将用于表示寄存器架构中的寄存器/组,而不同的形容词将用于指定给定微型架构中的寄存器(例如,物理寄存器、重新排序缓冲器、引退寄存器、寄存器池)。
指令集包括一个或多个指令格式。给定指令格式定义各个字段(位的数量、位的位置)以指定要执行的操作(操作码)以及要对其执行该操作的操作码等。通过指令模板(或子格式)的定义来进一步分解一些指令格式。例如,给定指令格式的指令模板可被定义为具有指令格式的字段(所包括的字段通常按照相同顺序,但是至少一些字段具有不同的位位置,因为包括更少的字段)的不同子集,和/或被定义为具有不同解释的给定字段。由此,ISA的每一指令使用给定指令格式(并且如果定义,则在该指令格式的指令模板的给定一个中)来表达,并且包括用于指定操作和操作数的字段。例如,示例性ADD指令具有专用操作码以及包括用于指定该操作码的操作码字段和用于选择操作数的操作数字段(源1/目的地以及源2)的指令格式,并且该ADD指令在指令流中的出现将具有选择专用操作数的操作数字段中的专用内容。
科学、金融、自动向量化的通用,RMS(识别、挖掘以及合成),以及可视和多媒体应用程序(例如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频操纵)常常需要对大量的数据项执行相同操作(被称为“数据并行性”)。单指令多数据(SIMD)是指使处理器对多个数据项执行操作的一种指令。SIMD技术特别适于能够在逻辑上将寄存器中的位分为若干个固定尺寸的数据元素的处理器,每一个元素都表示单独的值。例如,256位寄存器中的位可以被指定为四个单独的64位打包数据元素(四字(Q)尺寸的数据元素),八个单独的32位打包数据元素(双字(D)尺寸的数据元素),十六单独16位打包的数据元素(字(W)尺寸的数据元素),或三十二个单独的8位数据元素(字节(B)尺寸的数据元素)来被操作的源操作数。这种类型的数据被称为打包数据类型或向量数据类型,这种数据类型的操作数被称为打包数据操作数或向量操作数。换句话说,打包数据项或向量指的是打包数据元素的序列,并且打包数据操作数或向量操作数是SIMD指令(也称为打包数据指令或向量指令)的源操作数或目的地操作数。
作为示例,一种类型的SIMD指令指定要以垂直方式对两个源向量操作数执行的单个向量操作,以利用相同数量的数据元素,以相同数据元素顺序,生成相同尺寸的目的地向量操作数(也称为结果向量操作数)。源向量操作数中的数据元素被称为源数据元素,而目的地向量操作数中的数据元素被称为目的地或结果数据元素。这些源向量操作数是相同尺寸的,并包含相同宽度的数据元素,如此,它们包含相同数量的数据元素。两个源向量操作数中的相同位位置中的源数据元素形成数据元素对(也称为相对应的数据元素;即,每个源操作数的数据元素位置0中的数据元素相对应,每个源操作数的数据元素位置1中的数据元素相对应,等等)。由该SIMD指令所指定的操作分别对这些源数据元素对中的每一对执行,以生成匹配数量的结果数据元素,如此,每一对源数据元素都具有对应的结果数据元素。由于操作是垂直的并且由于结果向量操作数尺寸相同,具有相同数量的数据元素,并且结果数据元素与源向量操作数以相同数据元素顺序来存储,因此,结果数据元素与源向量操作数中它们的对应源数据元素对处于结果向量操作数的相同位位置。除此示例性类型的SIMD指令之外,还有各种其他类型的SIMD指令(例如,只有一个或具有两个以上的源向量操作数的;以水平方式操作的;生成不同尺寸的结果向量操作数的,具有不同尺寸的数据元素的,和/或具有不同的数据元素顺序的)。应该理解,术语目的地向量操作数(或目的地操作数)被定义为执行由指令所指定的操作的直接结果,包括将该目的地操作数存储在某一位置(寄存器或在由该指令所指定的存储器地址),以便它可以作为源操作数由另一指令访问(由另一指令指定该同一个位置)。
附图说明
本发明是通过示例说明的,而不仅局限于各个附图的图示,在附图中,类似的参考标号表示类似的元件,其中:
图1示出用于在处理器中执行用于53位提取的BID64Split指令的本发明的实施例。
图2示出用于在处理器中执行用于51位提取的BID64Split指令的本发明的实施例。
图3示出用于在处理器中执行用于53位提取的具有64位源和目的地寄存器操作数的BID64Split指令的本发明的实施例。
图4示出用于在处理器中执行具有64位寄存器操作数的BID64SplitQ指令的本发明的实施例。
图5示出用于在处理器中执行用于提供32位数据寄存器的ISA的BID32SplitD指令的本发明的实施例。
图6示出用于在处理器中执行具有128位源和目的地寄存器操作数的BID128SplitDQ指令的本发明的实施例。
图7示出用于在处理器中执行具有256位源和目的地寄存器操作数的用于公共控制双提取的VTBID128Split指令的本发明的实施例。
图8示出通过利用处理器执行BIDSplit指令测试和提取BID值的方法的实施例。
图9是根据本发明的一个实施例的寄存器架构的框图。
图10A是示出根据本发明的实施例的示例性有序流水线以及示例性寄存器重命名的无序发布/执行流水线的框图。
图10B是示出根据本发明的实施例的有序架构核的示例性实施例以及包括在处理器中的示例性寄存器重命名的无序发布/执行架构核两者的框图。
图11A是根据本发明的各实施例的单个处理器核以及它与管芯上互连网络的连接及其二级(L2)高速缓存的本地子集的框图。
图11B是根据本发明的各实施例的图11A中的处理器核的一部分的展开图。
图12是根据本发明实施例可具有一个以上的核、可具有集成存储器控制器以及可具有集成图形器件的处理器的框图。
图13是根据本发明的实施例的系统的框图。
图14是根据本发明的实施例的第一更具体的示例性系统的框图。
图15是根据本发明的实施例的第二更具体的示例性系统的框图。
图16是根据本发明的实施例的片上系统(SoC)的框图。
图17是根据本发明的实施例的对比使用软件指令变换器将源指令集中的二进制指令变换成目标指令集中的二进制指令的框图。
具体实施方式
在以下描述中,陈述了多个具体细节。然而,应当理解的是,可不通过这些具体细节来实施本发明的实施例。在其它实例中,未详细示出公知的电路、结构以及技术,以免模糊对本描述的理解。
说明书中对“一个实施例”、“实施例”、“示例实施例”等等的引用表明所描述的实施例可以包括特定的特征、结构或特性,但是每个实施例不一定都包括该特定的特征、结构或特性。此外,这些短语不一定表示同一实施例。此外,当联系实施例描述特定的特征、结构或特性时,认为本领域普通技术人员能够知晓结合其它实施例来实现这种特征、结构或特性,无论是否明确描述。
如先前详细描述的,二进制整数十进制(BID)是IEEE-754-2008所描述的用于表示十进制浮点(DFP)的两个主要的编码标准中的一个。该标准详细描述不同精度的浮点数的编码,诸如利用32位的单精度(十进制32)、利用64位的双精度(十进制64)和利用128位的四精度(十进制128)。BID编码的DFP数通常包含三个重要的组分——符号、指数和有效数。在BID编码的数中,这些组分的布局包含具有可变位长度和/或不连续位置的三个逻辑字段。当提取位字段时,结果组分可用于重构原始DFP值。在十进制64中,例如,可利用以下的表达式重构原始DFP值:(-1)符号*10指数-398*有效数。类似地,在十进制128中,可根据以下的表达式重构原始DFP值:(-1)符号*10指数-6176*有效数。注意在每个表达式中,可通过减去常数来调整指数。该调整是必要的,因为指数存储在BID编码中作为经偏置的指数,表示存储在经编码的数中的值从实际值偏移了指数偏差。
除了编码有效的数的范围外,格式还允许无限(INF)值以及静默和信令非数(Not a Number:NaN)值的编码。此外,还可基于值的有效数和指数所需的位数以不同方式编码可表示数的范围。例如,十进制64类型的64位DFP数具有16十进制数字的精度。为了提供该精度,利用53位有效数编码具有少于16个十进制数字的某些DFP值,且仅利用51位有效数编码具有16个十进制数字的某些DFP值。在前面的情况中,53个明确的有效数位存储在系数字段中且与一个隐含的‘0’位耦合以形成54位有效数。在后面的情况中,51个明确的位存储在系数字段中且与3个在前的隐含位耦合以形成54位有效数。因为对于每种类型的BID格式化的数存在很多编码,所以大多数BID计算严重依赖于使用软件库,该软件库使用标量指令集和连续相关的算法来确定哪种编码用于数,然后提取其三个重要字段——符号、指数和有效数。该抽象过程免除了编程器部分的很多努力,但因为检测特殊情况值(例如,INF、NaN)所需的大量步骤和将值从非连续位字段变换成54位有效数和经偏移的指数的计算组分所需的大量重构努力,所以由标量序列构造的库例程不是最优的。
本发明的实施例的一个方面给出一种指令,该指令在由计算设备中的处理器执行时加速BID编码的位字段至允许二进制整数计算的三个逻辑组分的转换,并且还提供用于区分BID正常值、特殊值和非数字编码的高效方式。因此,例如,BID编码值的列表可被修改以去除NaN和无限值,同时还将剩余的值转换成适于高效算术计算的编码或转换成人类可读的表示。
BIDSplit
以下结合可用于执行这些指令的系统、架构、指令格式等的实施例详细描述BIDSplit指令的实施例。BIDSplit指令包含目的地操作数、源操作数和控制操作数。目的地操作数是寄存器,源操作数可以是寄存器或存储器位置,且控制操作数可以是寄存器或立即值。然而,其它已知的配置同样良好,诸如目的地操作数是存储器位置。所描述的BIDSplit指令可利用这些组合中的任一个实现,且还能够在大端(big endian)和小端(little endian)方案或系统中实现。
在执行时,BIDSplit指令导致处理器检查源操作数内的一个或多个BID编码的十进制浮点数,并且确定经编码的数的一个或多个位是否匹配表示控制操作数中指定的编码类型的位模式。每个位模式或编码类型表示特定BID编码方案的测试,诸如53位有效数方案、51位有效数方案、无限值和NaN。如果处理器确定在控制操作数中指定的编码类型位模式匹配源操作数中的BID编码数之一的子字段,则根据TRUE(1)(真(1))或FALSE(0)(假(0))的匹配状态,处理器将结果写入目的地寄存器。可按各种方式返回该匹配状态,诸如在标记寄存器中的位中或作为目的地寄存器中的位。例如,当控制操作数包括编码类型位模式(表示对于BID64Split,指定“除53位有效数编码类型外匹配所有BID编码类型”)时,匹配状态TRUE指示不利用53位有效数编码类型来编码经编码的值。结果,处理器将更新标志寄存器或目的地中的位。或者,如果该位模式相反将生成匹配状态FALSE,其指示所测试的BID编码数利用53位有效数编码类型编码,则处理器将把53位有效数和/或其它组分提取到由目的地操作数指定的位置。类似地,还将匹配状态作为标志寄存器中的“状态”位或作为目的地中的位返回。
BIDSplit-style指令的示例性格式是“BID64Split 8m1,reg2/mem64,imm8”,其中BID64Split是用于分割BID decimal64的指令,8m1是用作指令输出的目的地的128位向量寄存器,且reg2/mem64是用作包含BID编码数的源的64位寄存器或存储器位置。在本发明的实施例中,这些寄存器和存储器位置可以是不同尺寸,诸如32位、128位等在其它实施例中,8m1可以是存储器地址。最后,“imm8”是提供控制数据的8位立即数,该控制数据用于检查源操作数中经编码的值,但在本发明的实施例中,该自变量可替代地是可变尺寸或存储器地址的寄存器。在其它实施例中,立即值是诸如16位的不同尺寸。
BID decimal64编码
所公开的发明的实施例用于与任何尺寸的BID编码一起工作。然而,为了帮助理解本发明,给出关于BID的decimal64编码的细节。可通过检查“组合”字段中前导符号位之后的若干位来确定这些数的编码。例如,如果‘00’、‘01’或‘10’位模式跟随符号位,则指数字段由跟随符号位的10位组成,且有效数是64中的剩余53位。在这种情况下,有效数的53位然后与隐含的开始位‘0’结合,形成总共54位有效数。
或者,如果‘11’模式跟随符号位,则经编码的数不是“53位”编码,且需要进一步检查后续位。例如,如果在符号位之后数具有‘1100’模式,则10位指数字段在符号位和跟随的‘11’位之后开始。这留下51位用于有效数,它们与隐含的在前3位序列‘100’组合以形成54位有效数。
此外,如果‘1101’或‘1110’模式跟随符号位,则该数是非规范编码。IEEE-754-2008规范将这些数处理为零值,且本发明的实施例进行相同动作或不同地处理这些编码。另外,如果‘11110’位模式跟随符号位,则经编码的数是无穷大。如果‘111110’模式跟随符号位,则经编码的值是“静默NaN”,且‘111111’模式指示“信令NaN”。
对于decimal64的51位和53位编码,指数是经偏置的值。通过从经偏置的指数减去偏差(398)来确定真指数。对于其它DFP编码存在类似的方案,诸如decimal32(其中偏置是101)和decimal128(其中偏置是6176),但是尽管每个的实现细节略微改变,但测试和解码的一般过程保持相同。
BID64Split
图1示出用于在处理器中执行用于53位提取的BID64Split指令的本发明的实施例。在图1中,给出在小端系统中用于执行具有格式“BID64Split 8m1,reg2/mem64,imm8”的指令的过程100。第一操作数,即向量寄存器8ml是目的地操作数,且第二操作数,即64位寄存器或存储器位置是源操作数。在该实施例中,第三操作数的格式imm8包含两个逻辑字段102。首先,位0-4表示指数偏移,它由“Exp_Offset”来指示。在实施例中,Exp_Offset字段是无符号的5位值,用以指定指数相对于原始值的位置,在该情况下,原始值是符号位(位63)。在所提供的imm8示例104中,Exp_Offset包含值“1”,其指示对于单个有效编码类型源的可提取数据部分具有离开符号位一位开始的指数,未决的模式匹配结果指示输入编码具有有效可提取有效数。Imm8格式108的剩余三位5-7被指定为“NZ Len”,其代表非零长度。这三位指定无符号的“2加编码”数,表示,在该字段中编码的整数值将与整数2相加。结果数将指示掩码中的连续非零位的长度,掩码将用于与源操作数指示的原始BID编码数据相比较。在所描述的示例104中,位5-7包含值0。利用“2加编码”,数“2”与“0”相加得到“2”。因此,由于控制操作数,所形成的掩码将包含两个连续非零位106,它们紧接第一符号位之后开始。
在可支持大端数据和小端数据的实施例中,控制操作数格式102还将包括表示“NZ Offset”(非零偏移)的位,其指示在掩码中连续非零位应相对于符号位在哪里开始。在具有这一NZ偏移值的实施例中,有符号的2位值(表示在“-2”至“1”之间的值)指定在掩码的Qword边界内根据位的数量非零位模式的位置,其中负偏移指示非零位模式将以递减次序从最高有效位开始,并且将被解释为负值模64。
在实施例中,所形成的掩码108包含64位0和2位1,且两个非零位刚好在符号位之后开始。掩码108将被应用到源操作数110,在该图示中,源操作数110是64位,但在不同的实施例中尺寸可改变。源操作数110的物理布局包括五个不同的字段。首先,位0-49被标记为“C-Coeff”且包含在所提取的有效数中使用的位。类似地,位53-60被标记为“C-exp”且包含用作所提取的经偏移指数的一部分的位。位63包含符号位,其中“1”指示经编码的数是负,且“0”指示该数是正。标记为Cmbl(“combo低”)位50-52和标记为Cmbh(“combo高”)的位61-62是可取决于编码变型而最终用作所提取的有效数、指数或并非两者的一部分。
因为“NZ Len”0导致具有两个连续非零位的掩码,所以掩码将用于检测符号位之后的最前面的两位是否均为‘1’。这种配置用于测试“53位”编码,其中在符号位之后的最前面的两位不全是“1”位,如上所述。
然后通过执行AND操作将掩码108应用到源操作数110以形成掩码结果。掩码结果和掩码本身之间的比较的指示表示为匹配状态“状况(Status)”112:如果掩码结果和掩码相同,则状况被设置为‘1’;如果掩码结果和掩码不同,则状况被设置为‘0’。标志位被更新成该状况113的值,且将被写入目的地向量寄存器8m1的数据取决于该状况值114
当状况被设置为‘1’时,且因此源的在符号位之后的最开始的两位均是‘1’,源中经编码的值不使用“53位编码”变型。在该实施例中,处理器将把全0写入目的地向量寄存器8ml 115。在其它实施例中,处理器可更新目的地寄存器或存储器中的特地为或位的集合,更新另一个寄存器中的标志(例如,溢出位、断言位、一般误差位等)或执行类似的操作。
另一方面,如果状况被设置为‘0’,则利用“53位”模式来编码源操作数内的BID编码数,且执行“53位提取”以生成8ml中的有效输出116。因此,来自C-Coeff字段120A的位0-49和来自Cmbl字段120B的位50-52被提取并被置于目的地操作数8ml 116的位0-52中。类似地,源120E的位63的符号位被提取并置于目的地向量寄存器8ml 116的位127中。同样,因为控制操作数的Exp_Offset字段包含值“1”,所以将在离开符号位一位开始从源操作数提取指数,所以C-exp字段120B的位53-60和Cmbh 120D的位61-62被提取并置于8m1116的位64-74中。
以下在表1中使用汇编类型代码给出根据本发明的一个实施例详细描述使用这种BID64Split指令来确定和提取BID编码值的一种方式的有用示例。该示例假设:如果控制操作数中的编码类型匹配源数的实际编码类型,则将设置溢出标志位。该代码首先使用具有BID编码decimal64数作为源操作数的BID64Split指令,测试以查看它是否是“53位”编码数。如果它是“53位”编码数,且因此设置溢出位,则代码跳至“L_GotNormal53”标签以进一步处理在8ml中存在的所提取的符号、有效数和指数;否则代码测试“51位”数。类似地,如果数不是根据“51位”编码变型进行编码的,则代码继续测试经编码的无限数然后测试静默和信令NaN编码,在确定编码后跳至定制处理器代码部分。
表1
在以下的表2中给出描述BID64Split指令的逻辑工作的伪代码。该代码表示“BID64Split 8m1,reg64/mem64,imm8”或类似的“BID64Split 8m1,8m2/mem64,imm8”指令的工作,这些指令利用imm8作为控制将数据从向量寄存器8m2(小端)的低64位提取到向量寄存器8m1,并在标志位中返回状态指示符。该代码首先从NZLen字段形成位模式“掩码(Mask)”。“Exp_Offs”值确定从哪里提取10位经偏置的指数,以及将多少位提取到有效数组分。MaskLen或掩码的长度被确定为2加NZLen的值,其例示“2加”编码。然后将结束位置或MaskEnd设置为“62”。接下来,利用Exp_Offs值计算ExpbiaEnd或“经偏置的指数结束位置”。在本发明的实施例中,清除目的地寄存器,并且形成掩码。然后,将掩码与源中的输入BID编码数进行逻辑与,并且中间结果与掩码本身比较:如果它们相等,状况值被设置为“1”,表示没有从源提取有效的有效数值的条件(即,源操作数的组合字段中的编码类型可以是NaN、INF、非规范编码或大于53位的有效数范围中的很多情况之一);否则状态值被设置为“0”(即,可从组合字段的系数和3个最低有效位提取有效的有效数)。接下来,提取有效数和经偏移的指数组分,并更新状态标志位(OF)以揭示位模式与掩码匹配的结果。
表2
图2示出用于在处理器中执行用于“51位”提取的BID64Split指令的本发明的实施例。正如图1,该图描绘“BID64Split 8m1,reg64/mem64,imm8”或“BID64Split 8m1,reg2/mem64,imm8”指令200;然而,该图示出源操作数中的“51位”值的测试。
此外,imm8控制操作数格式202包含Exp_Offset字段和NZ Len字段。然而,样本数据包括包含值“3”的Exp_Offset字段,且NZ Len字段包含值“1”。使用“加2”编码,在符号位之后开始形成3位连续的非零掩码208。将掩码与源操作数210进行与操作的结果同原始掩码212进行比较并作为状况112而存储。该值还被存储为标志113。如果状况是“1”114,则处理器将全0写入目的地向量寄存器8ml 215。如果掩码结果不等于掩码214,则有效数、经偏移的指数和符号将被输出在目的地寄存器8ml 216中。
以略微不同于图1的“53位”提取的方式进行“51位”提取。尽管在所提取的有效数220A中使用整个“C-Coeff”字段,然而仅使用来自Cmbl的最低有效位220C。可通过处理器对隐含的前导‘100’位进行“或”操作或来扩展这些51位220G。
另外,因为控制操作数Exp_Offset包含值三,要提取的指数位于离开符号位三位的位置220E。因此,整个Cmbh字段被忽略,且Cmbl 220D的位51-52与C-exp 220B的位53-60结合以形成经偏移的指数。
图23示出用于在处理器中执行用于“53位”提取的具有64位源和目的地寄存器操作数的BID64Split指令的本发明的实施例。“BID64Split R1,R2,imm8”指令2300利用64位目的地操作数、64位源操作数和8位立即控制操作数。此外,该实施例将另一个字段与控制操作数“Extr_sel”相加,这允许调用者指定是否将有效数或经偏移的指数提取到目的地寄存器中。在没有“Extr_sel”字段的另一个实施例中,输出可被提取到源和目的地寄存器;例如,有效数可被提取到目的地寄存器中,且经偏置的指数被提取到源寄存器中,覆写源输入值。另外,该实施例在编码类型失配(或位模式匹配)后以不同方式执行信令。取代以全0简单填充目的地寄存器,该实施例将状况位写入目的地寄存器内的位置以指示是否提取有效的有效数。
控制操作数2302包含三个逻辑字段:4位“Exp_Offset”、1位“Extr_sel”和3位“NZ Len”。在该提供的示例2304中,Exp_Offset字段包含值1,且NZ Len包含值0,其进行“加2”编码2306以形成具有2位非零连续位模式的掩码6K08。通过对两个值进行与操作,将掩码2308应用于源操作数R22310。如果该操作的结果等于原始掩码2308,则匹配状态“状况”值被设置为1;否则该状况值被设置为02312。
当状况值是一2313A时,以移位62次的位填充目的地操作数R1,以导致‘1’位被置于确定的‘状况’位位置2314,并且指令完成执行。这表示在源操作数R22310中的BID编码值不是利用“53位”编码来编码。当状况值是零时,利用“53位”编码来对源操作数R22310进行编码,且根据控制操作数2304内的Extr_sel字段的值将一个或多个组分将提取到目的地操作数R1。当Extr_sel值是零2313B时,将有效数从C-Ceoff 2320A和Cmbl 2320C字段提取到目的地寄存器R12330A的最开始的53位。当Extr_sel值是一2313C时,将经偏移的指数从C-exp 2320B和Cmbh 2320D字段提取到目的地寄存器R12330B的最开始的10位。
BID64SplitQ
图4示出用于在处理器中执行具有64位寄存器操作数的BID64SplitQ指令的本发明的实施例。与具有128位目的地操作数的图1和2不同,图4的所述指令——“BID64SplitQ R1,R2,R3”400”——利用三个64位寄存器作为操作数。
控制操作数的格式包含Extr_sel字段以及Exp_Offset和NZ Len字段402。如在示例控制操作数404所给出的,Exp_Offset字段包含值“1”且NZ Len字段包含值“0”,其指示测试将启用“53位”提取。在该实施例中,Extr_sel字段为一位长度,因此可能包含值“0”或“1”。值“0”指示应提取有效数,从而使得位模式匹配的结果未决,且值“1”指示应提取经偏置的指数。
给定示例源操作数404,“加2”编码的406非零掩码长度导致形成具有刚好在符号位之后开始的两个“1”位的掩码408。该掩码然后与源操作数进行与操作,并且结果与源掩码进行比较并且被指示为匹配状态状况412。如果值相同,匹配状态状况是“1”,且处理器通过将‘1’位写入将被置于目的地寄存器414的位数62中的状态位来发信号;否则,匹配状态状况是“0”,且因此状态位62为‘0’。提取继续R1416中的有效输出。当来自控制操作数的Extr_sel被设置为‘00’430A时,利用C-Coeff位420A和来自Cmbl字段420C的三位提取有效数430A。R1的位53至62被设置为0。在本发明的该实施例和其它实施例中,如果符号位未被提取,则该位位置被设置为“0”。
另一方面,如果Extr_sel包含至“1”,则将利用C-exp字段420B和来自Cmbh字段420D的两位来提取经偏移的指数430B。在实施例中,仅在Extr_sel等于“0”时设置状况位,所以调用者必须通过首先利用该选项尝试成功提取有效数结果来利用BID64SplitQ。
以下的表3中给出根据本发明的实施例的BID64SplitQ指令的工作的伪代码。该代码表示“BID64SplitQ R1,R2,R3”指令的工作,该指令利用R3作为分割和掩码控制来将数据从R2(小端)提取到R1,并且返回状态指示符作为目的地寄存器R1中的位。所有的操作数寄存器是64位。代码首先形成并填充NZLen变量、Exp_Offs变量和Extr_Sel变量。然后将MaskLen或掩码的长度确定为二加上NZLen值,并且结束位置或MaskEnd被设置为“62”。接下来,利用Exp_Offs值计算ExpbiaEnd或“经偏置的指数结束位置”。现在,清除目的地寄存器,并且清除掩码。然后将掩码应用到源操作数,并且将结果与掩码本身比较:如果它们相等,则匹配状态“状况”值被设置为“1”,表示未能从源提取有效的有效数值的情况(即,控制操作数编码类型与源操作数的编码类型不同);否则状况被设置为“0”。在此点,如果因为编码类型匹配而发生提取(如由状况值所确定的),则要提取的组件取决于来自控制操作数的Extr_Sel字段的值。如果Extr_Sel包含值“1”,则提取经偏置的指数;如果Extr_Sel包含值“0”,则提取有效数。最后,根据状况变量的内容更新目的地寄存器中的状况位。
表3
BID32SplitD
图5示出用于在处理器中执行用于提供32位数据寄存器的ISA的BID32SplitD指令的本发明的实施例。该图表示“BID32SplitD R1,R2,imm8”指令500的工作,该指令利用两个32位寄存器作为源和目的地操作数,连同立即控制值。因此,利用decimal32而非decimal64来编码源操作数中的值。控制值502的格式与最后示例相同,具有Exp_Offset、Extr_sel和NQ Len。该示例控制值504示出提取测试针对“23位”编码类型,且隐含的“0”用于24位有效数(按Exp_Offset字段中的值“1”和NZ Len字段中的值“0”)。同样,示例Extr_sel值“0”指示仅提取有效数。
利用用于掩码508的非零部分506的两个位,将掩码与同R2进行了“与”操作之后的掩码进行比较,且将结果存储在匹配状态“状况”值S 512中。目的地寄存器516中的物理输出的图示包含包括有效数的无效和有效输出可能性。如果S是FALSE(即,等于0)530A,可提取有效的有效数,且提取C-Coeff位0-19520A连同Cmbl字段的三位520C以形成有效数,且位30将被设置为“0”以表示S变量的值。
或者,如果S变量是TRUE(即,等于1)530B,其指示R2中经编码的值不是“23位”编码类型,则位30将被设置为‘1’。在本发明的实施例中,所有的其它位0-29和31被设置为0。在本发明的其它实施例中,将提取来自C-Coeff 522A和Cmbl 522C的值,即使它们没有意义。
BID128SplitDQ
图6示出用于在处理器中执行具有128位源和目的地寄存器操作数的BID128SplitDQ指令的本发明的实施例。该实施例的细节与图5的细节非常相似,但寄存器尺寸目前为128位宽,且利用decimal128编码源操作数值。用于“BID128SplitDQ R1,R2,imm8”600的指令包含与图5相同的控制操作数格式602以及相同的示例数据604。“加二”编码的606 NZ Len将用于形成掩码608,该掩码与源寄存器610进行“与”操作。该操作的结果与原始掩码608比较,且将等价或非等价的表示存储在匹配状态状况变量612中。当在目的地寄存器R1616中构造输出时,有效630A和无效630B的输出格式相同。对于允许提取有效的有效数的有效提取630A,C-Coeff字段620A和Cmbl字段620C的三位被提取到X1作为有效数,且状况位126被设置为0。类似地,对于不能提取有效的有效数的无效提取630B,状况位126被设置为1。在本发明的实施例中,X1中的所有的其它位被设置为0。在本发明的另一个实施例中,可从C-Coeff字段622A和Cmbl字段622C填充有效数字段,即使有效数是无效的。
VTBID128Split
图7示出用于在处理器中执行具有256位源和目的地寄存器操作数的用于公共控制双提取的VTBID128Split指令的本发明的实施例。该指令“VTBID128Split ymm1,ymm2,imm8”700利用256位向量寄存器作为源和目的地操作数,连同8个立即位来执行双提取,其中两个单独的BID编码decimal128值位于一个256位寄存器中。该指令尤其有益于执行需要两个自变量的数学操作,诸如加法、减法、乘法、触发等,因为可并行提取两个自变量。在该实施例中,立即控制操作数提供“公共控制”,其中可由调用者指定一个编码类型,且经编码的BID值中的每一个可与该类型进行比较。在另一个实施例中,控制操作数较大(或不同地配置)以便允许“双控制”,表示调用者将可能指定使用总共两种编码类型——每个编码的BID值一种。
此处,控制操作数格式702包含Exp_Offset字段、Extr_sel字段和NZ Len字段。该示例控制操作数704分别提供值“1”和“0”用于Exp_Offset和NZ Len字段,所以测试用于对应的“113位”编码/提取。此外,因为Extr_sel字段指定值“0”,如果利用“113位”形式编码来对经编码的值进行编码,则将提取有效数。(在提取有效的113位有效数之后,可对经提取的113位值进行非规范检查以确保值真正正确。)利用这些值706,由于由来自NZ Len字段的值“0”指定的“加二”编码,形成包含两个“1”位的一个掩码708。该一个掩码708与源操作数ymm2710比较两次,以形成两个匹配状态状况值——一次用于第一位0-127并被保存为S3712A,一次用于在位128-255中第二经编码的数并被保存为S4712B。
在执行掩码比较之后,将所提取的有效输出置于向量寄存器ymm1716中:来自C-Coeff字段720A的ymm2位0-109和来自Cmbl 720C的位110-112的第一有效数被提取到ymm1730A的位0-112。该数S3的所计算的状况位712A被写入位126。对于在ymm2中的第二编码数(存在于位128-255中)发生相同的过程。将来自C-Coeff 720D和Cmbl 720F字段的有效数填充到位128-240,且根据712B的掩码比较在位254中更新状况位S4712B。
除通过不同的控制操作数配置实现该双提取的双控制之外,实施例还可利用不同精度的二进制整数十进制值来执行这种双提取。例如,VTBID64Split指令可利用128位(或更大)的源操作数,其包含要提取的两个单独的BID编码decimal64值。类似地,VTBID32Split指令的实施例将利用至少64位的源操作数,该源操作数包含两个要提取的单独BID编码decimal32值。此外,在所有给出的示例中,来自这些提取的输出将被容易地保存在不同尺寸的寄存器或存储位置中。
图8示出通过利用处理器执行BIDSplit指令测试和提取BID值的方法的实施例。在810,获取十进制浮点分割指令。该指令包含源操作数、目的地操作数和控制操作数。源操作数可包括一个或多个BID编码十进制浮点数,每个具有符号、指数和有效数。该控制操作数包括一个或多个编码类型。这些编码类型由一个或多个子字段构成,且通常包括“NZ Len”字段,该字段指定掩码中用于确定值的BID编码变量的非零位的长度。
在812,解码所获取的十进制浮点分割指令,且对于源操作数中包括的每个经编码的十进制浮点数,执行经解码的十进制浮点分割指令以执行以下步骤。在820,方法确定是否根据控制操作数中包括的一个或多个编码类型之一来编码经编码的十进制浮点数。这通过将所形成的掩码和掩码与经编码的十进制浮点数进行“与”操作的结果相比较并确定它们是否相等来进行。当根据一个或多个编码类型之一对经编码的十进制浮点数进行编码时,该方法将来自经编码的十进制浮点数的符号、有效数和指数中的一个或多个提取到目的地操作数指定的位置(822)。任选地,在本发明的实施例中,当不根据一个或多个编码类型之一对经编码的十进制浮点数进行编码时,更新位(824)。
示例性指令格式
本文中所描述的指令的实施例可以不同的格式体现。另外,在下文中详述示例性系统、架构、以及流水线。指令的实施例可在这些系统、架构、以及流水线上执行,但是不限于详述的系统、架构、以及流水线。
示例性寄存器架构
图9是根据本发明的一个实施例的寄存器架构900的框图。在所示出的实施例中,有32个512位宽的向量寄存器910;这些寄存器被引用为zmm0到zmm31。较低的16zmm寄存器的较低阶256个位覆盖在寄存器ymm0-16上。较低的16zmm寄存器的较低阶128个位(ymm寄存器的较低阶128个位)覆盖在寄存器8m0-15上。
写掩码寄存器915-在所示的实施例中,存在8个写掩码寄存器(k0至k7),每一写掩码寄存器的尺寸是64位。在替代实施例中,写掩码寄存器915的尺寸是16位。如先前所述的,在本发明的一个实施例中,向量掩码寄存器k0无法用作写掩码;当正常可指示k0的编码用作写掩码时,它选择硬连线的写掩码04FFF,从而有效地停用该指令的写掩码。
通用寄存器925——在所示出的实施例中,有十六个64位通用寄存器,这些寄存器与现有的x86寻址模式一起使用来寻址存储器操作数。这些寄存器通过名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8到R15来引用。
标量浮点堆栈寄存器组(x87堆栈)945,在其上面重叠了MMX打包整数平坦寄存器组950——在所示出的实施例中,x87堆栈是用于使用x87指令集扩展来对32/64/80位浮点数据执行标量浮点运算的八元素堆栈;而使用MMX寄存器来对64位打包整数数据执行操作,以及为在MMX和8M寄存器之间执行的一些操作保存操作数。
本发明的替代实施例可以使用较宽的或较窄的寄存器。另外,本发明的替代实施例可以使用更多、更少或不同的寄存器组和寄存器。
示例性核架构、处理器和计算机架构
处理器核可以用出于不同目的的不同方式在不同的处理器中实现。例如,这样的核的实现可以包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能通用无序核;3)主要旨在用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:包括预期用于通用计算的一个或多个通用有序核和/或预期用于通用计算的一个或多个通用无序核的CPU;以及2)包括主要预期用于图形和/或科学(吞吐量)的一个或多个专用核的协处理器。这样的不同处理器导致不同的计算机系统架构,其可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,这样的协处理器有时被称为诸如集成图形和/或科学(吞吐量)逻辑等的专用逻辑,或被称为专用核);以及4)可以将所描述的CPU(有时被称为应用核或应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上的片上系统。接着描述示例性核架构,随后描述示例性处理器和计算机架构。
示例性核架构
有序和无序核框图
图10A是示出根据本发明的实施例的示例性有序流水线和示例性寄存器重命名、无序发布/执行流水线的框图。图10B是示出根据本发明的实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名、无序发布/执行架构核的框图。图10A-B中的实线框示出了有序流水线和有序核,而虚线框中的可选附加项示出了寄存器重命名的、无序发布/执行流水线和核。考虑到有序方面是无序方面的子集,将描述无序方面。
在图10A中,处理器流水线1000包括获取(fetch)级1002、长度解码级1004、解码级1006、分配级1008、重命名级1010、调度(也称为分派或发布)级1012、寄存器读取/存储器读取级1014、执行级1016、写回/存储器写入级1018、异常处理级1022和提交级1024。
图10B示出了包括耦合到执行引擎单元1050的前端单元1030的处理器核1090,且执行引擎单元和前端单元两者都耦合到存储器单元1070。核1090可以是精简指令集合计算(RISC)核、复杂指令集合计算(CISC)核、超长指令字(VLIW)核、或混合或替代核类型。作为又一选项,核1090可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理器单元(GPGPU)核、图形核等等。
前端单元1030包括耦合到指令高速缓存单元1034的分支预测单元1032,该指令高速缓存单元1034被耦合到指令转换后备缓冲器(TLB)1036,该指令转换后备缓冲器1036被耦合到指令获取单元1038,指令获取单元1038被耦合到解码单元1040。解码单元1040(或解码器)可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元1040可使用各种不同的机制来实现。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核1090包括存储(例如,在解码单元1040中或否则在前端单元1030内的)特定宏指令的微代码的微代码ROM或其他介质。解码单元1040耦合至执行引擎单元1050中的重命名/分配器单元1052。
执行引擎单元1050包括重命名/分配器单元1052,该重命名/分配器单元1052耦合至引退单元1054和一个或多个调度器单元(多个)1056的集合。调度器单元(多个)1056表示任何数目的不同调度器,包括预留站(reservationsstations)、中央指令窗等。调度器单元(多个)1056被耦合到物理寄存器组(多个)单元(多个)1058。每个物理寄存器组(多个)单元(多个)1058表示一个或多个物理寄存器组,其中不同的物理寄存器组存储一种或多种不同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器组(多个)单元1058包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器、和通用寄存器。物理寄存器组(多个)单元(多个)1058与引退单元1054重叠以示出可以用来实现寄存器重命名和无序执行的各种方式(例如,使用记录器缓冲器(多个)和引退寄存器组(多个);使用将来的文件(多个)、历史缓冲器(多个)和引退寄存器组(多个);使用寄存器映射和寄存器池等等)。引退单元1054和物理寄存器组(多个)单元(多个)1058被耦合到执行群集(多个)1060。执行群集(多个)1060包括一个或多个执行单元1062的集合和一个或多个存储器访问单元1064的集合。执行单元1062可以执行各种操作(例如,移位、加法、减法、乘法等),以及对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)执行。尽管某些实施例可以包括专用于特定功能或功能集合的多个执行单元,但其他实施例可包括全部执行所有函数的仅一个执行单元或多个执行单元。调度器单元(多个)1056、物理寄存器组(多个)单元(多个)1058和执行群集(多个)1060被示为可能有多个,因为某些实施例为某些类型的数据/操作(例如,标量整型流水线、标量浮点/打包整型/打包浮点/向量整型/向量浮点流水线,和/或各自具有其自己的调度器单元、物理寄存器组(多个)单元和/或执行群集的存储器访问流水线——以及在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行群集具有存储器访问单元(多个)1064的某些实施例)创建分开的流水线。还应当理解,在分开的流水线被使用的情况下,这些流水线中的一个或多个可以为无序发布/执行,并且其余流水线可以为有序发布/执行。
存储器访问单元1064的集合被耦合到存储器单元1070,该存储器单元1072包括耦合到数据高速缓存单元1074的数据TLB单元1072,其中该数据高速缓存单元1074耦合到二级(L2)高速缓存单元1076。在一个示例性实施例中,存储器访问单元1064可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元1070中的数据TLB单元1072。指令高速缓存单元1034还耦合到存储器单元1070中的二级(L2)高速缓存单元1076。L2高速缓存单元1076被耦合到一个或多个其他级的高速缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名的、无序发布/执行核架构可以如下实现流水线1000:1)指令获取1038执行取指和长度解码级1002和1004;2)解码单元1040执行解码级1006;3)重命名/分配器单元1052执行分配级1008和重命名级1010;4)调度器单元(多个)1056执行调度级1012;5)物理寄存器组(多个)单元(多个)1058和存储器单元1070执行寄存器读取/存储器读取级1014;执行群集1060执行执行级1016;6)存储器单元1070和物理寄存器组(多个)单元(多个)1058执行写回/存储器写入级1018;7)各单元可牵涉到异常处理级1022;以及8)引退单元1054和物理寄存器组(多个)单元(多个)1058执行提交级1024。
核1090可支持一个或多个指令集合(例如,x86指令集合(具有与较新版本一起添加的某些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集合;加利福尼州桑尼维尔市的ARM控股的ARM指令集合(具有诸如NEON等可选附加扩展)),其中包括本文中描述的各指令。在一个实施例中,核1090包括支持打包数据指令集扩展(例如,AVX1、AVX2)的逻辑,从而允许很多多媒体应用使用的操作能够使用打包数据来执行。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、同步多线程化(其中单个物理核为物理核正同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分取指和解码以及此后诸如用超线程化技术来同步多线程化)。
尽管在无序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所例示的处理器的实施例还包括分开的指令和数据高速缓存单元1034/1074以及共享L2高速缓存单元1076,但替换实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如一级(L1)内部高速缓存或多个级别的内部缓存。在某些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
具体的示例性有序核架构
图11A-B示出了更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其他核)。这些逻辑块通过高带宽的互连网络(例如,环形网络)与某些固定的功能逻辑、存储器I/O接口和其它必要的I/O逻辑通信,这依赖于应用。
图11A是根据本发明的各实施例的单个处理器核连同它与管芯上互连网络1102的连接以及其二级(L2)高速缓存1104的本地子集的框图。在一个实施例中,指令解码器1100支持具有打包数据指令集合扩展的x86指令集。L1高速缓存1106允许对高速缓存存储器的低等待时间访问进入标量和向量单元。尽管在一个实施例中(为了简化设计),标量单元1108和向量单元1110使用分开的寄存器集合(分别为标量寄存器1112和向量寄存器1114),并且在这些寄存器之间转移的数据被写入到存储器并随后从一级(L1)高速缓存1106读回,但是本发明的替换实施例可以使用不同的方法(例如使用单个寄存器集合,或包括允许数据在这两个寄存器组之间传输而无需被写入和读回的通信路径)。
L2高速缓存的本地子集1104是全局L2高速缓存的一部分,该全局L2高速缓存被划分成多个分开的本地子集,即每个处理器核一个本地子集。每个处理器核具有到其自己的L2高速缓存1104的本地子集的直接访问路径。被处理器核读出的数据被存储在其L2高速缓存子集1104中,并且可以被快速访问,该访问与其他处理器核访问它们自己的本地L2高速缓存子集并行。被处理器核写入的数据被存储在其自己的L2高速缓存子集1104中,并在必要的情况下从其它子集清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其它逻辑块之类的代理在芯片内彼此通信。每个环形数据路径为每个方向1012位宽。
图11B是根据本发明的各实施例的图11A中的处理器核的一部分的展开图。图11B包括L1高速缓存1104的L1数据高速缓存1106A部分,以及关于向量单元1110和向量寄存器1114的更多细节。具体地说,向量单元1110是16宽向量处理单元(VPU)(见16宽ALU 1128),该单元执行整数、单精度浮点以及双精度浮点指令中的一个或多个。该VPU支持通过拌和单元1120混合寄存器输入、通过数值转换单元1122A-B进行数值转换,以及通过复制单元1124进行对存储器输入的复制。写掩码寄存器1126允许断言(predicating)所得的向量写入。
具有集成存储器控制器和图形器件的处理器
图12是根据本发明的各实施例可能具有一个以上核、可能具有集成存储器控制器、以及可能具有集成图形的处理器1200的框图。图12的实线框示出了处理器1200,处理器1210具有单个核心1202A、系统代理1216、一组一个或多个总线控制器单元1210,而可选附加的虚线框示出了替代的处理器1200,具有多个核心1202A-N、系统代理单元1210中的一组一个或多个集成存储器控制器单元1214以及专用逻辑1208。
因此,处理器1200的不同实现可包括:1)CPU,其中专用逻辑1208是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1202A-N是一个或多个通用核(例如,通用的有序核、通用的无序核、这两者的组合);2)协处理器,其中核1202A-N是主要旨在用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核1202A-N是大量通用有序核。因此,处理器1200可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、或嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器1200可以是一个或多个衬底的一部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS等的多个加工技术中的任何一个技术将其实现在一个或多个衬底上。
存储器层次结构包括在各核内的一个或多个级别的高速缓存、一组或一个或多个共享高速缓存单元1206、以及耦合至集成存储器控制器单元1214的集合的外部存储器(未示出)。该共享高速缓存单元1206的集合可以包括一个或多个中间级高速缓存,诸如二级(L2)、三级(L3)、四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)、和/或其组合。尽管在一个实施例中,基于环的互连单元1212将集成图形逻辑1208、共享高速缓存单元1206的集合以及系统代理单元1210/集成存储器控制器单元(多个)1214互连,但替代实施例可使用任何数量的公知技术来将这些单元互连。在一个实施例中,在一个或多个高速缓存单元1206与核1202-A-N之间维持相干性。
在某些实施例中,核1202A-N中的一个或多个核能够多线程化。系统代理1210包括协调和操作核1202A-N的那些组件。系统代理单元1210可包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括调整核1202A-N和集成图形逻辑1208的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1202A-N在架构指令集合方面可以是同构的或异构的;即,这些核1202A-N中的两个或更多个核可以能够执行相同的指令集合,而其他核可以能够执行该指令集合的仅仅子集或不同的指令集合。
示例性计算机架构
图13-16是示例性计算机架构的框图。本领域已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般来说,能够含有本文中所公开的处理器和/或其它执行逻辑的大量系统和电子设备一般都是合适的。
现在参考图13,所示出的是根据本发明实施例的系统1300的框图。系统1300可以包括一个或多个处理器1310、1315,这些处理器耦合到控制器中枢1320。在一个实施例中,控制器中枢1320包括图形存储器控制器中枢(GMCH)1390和输入/输出中枢(IOH)1350(其可以在分开的芯片上);GMCH 1390包括存储器和图形控制器,存储器1340和协处理器1345耦合到该图形控制器;IOH 1350将输入/输出(I/O)设备1360耦合到GMCH 1390。或者,存储器和图形控制器中的一个或两者可以被集成在处理器中(如本文中所描述的),存储器1340和协处理器1345被直接耦合到处理器1310以及在具有IOH 1350的单个芯片中的控制器中枢1320。
附加处理器1315的可选性质用虚线表示在图13中。每一处理器1310、1315可包括本文中描述的处理核中的一个或多个,并且可以是处理器1200的某一版本。
存储器1340可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢1320经由诸如前端总线(FSB)之类的多点总线(multi-drop bus)、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接1395与处理器1310、1315进行通信。
在一个实施例中,协处理器1345是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。在一个实施例中,控制器中枢1320可以包括集成图形加速器。
在物理资源1310、1315之间可以存在包括架构、微架构、热、和功率消耗特征等的一连串品质度量方面的各种差异。
在一个实施例中,处理器1310执行控制一般类型的数据处理操作的指令。嵌入在这些指令中的可以是协处理器指令。处理器1310将这些协处理器指令识别为应当由附连的协处理器1345执行的类型。因此,处理器1310在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1345。协处理器(多个)1345接受并执行所接收的协处理器指令。
现在参照图14,所示出的是根据本发明实施例的第一更具体示例性系统1400的框图。如图14所示,多处理器系统1400是点对点互连系统,并包括经由点对点互连1450耦合的第一处理器1470和第二处理器1480。处理器1470和1480中的每一个都可以是处理器1200的某一版本。在本发明的一个实施例中,处理器1470和1480分别是处理器1310和1315,而协处理器1438是协处理器1345。在另一实施例中,处理器1470和1480分别是处理器1310和协处理器1345。
处理器1470和1480被示为分别包括集成存储器控制器(IMC)单元1472和1482。处理器1470还包括作为其总线控制器单元的一部分的点对点(P-P)接口1476和1478;类似地,第二处理器1480包括点对点接口1486和1488。处理器1470、1480可以使用点对点(P-P)电路1478、1488经由P-P接口1450来交换信息。如图14所示,IMC 1472和1482将诸处理器耦合至相应的存储器,即存储器1432和存储器1434,这些存储器可以是本地附连至相应的处理器的主存储器的一部分。
处理器1470、1480可各自经由使用点对点接口电路1476、1494、1486、1498的各个P-P接口1452、1454与芯片组1490交换信息。芯片组1490可以可选地经由高性能接口1439与协处理器1438交换信息。在一个实施例中,协处理器1438是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。
共享高速缓存(未示出)可以被包括在两个处理的任一个之内或被包括两个处理器外部但仍经由P-P互连与这些处理器连接,从而如果将某处理器置于低功率模式时,可将任一处理器或两个处理器的本地高速缓存信息存储在该共享高速缓存中。
芯片组1490可经由接口1496耦合至第一总线1416。在一个实施例中,第一总线1416可以是外围部件互连(PCI)总线,或诸如PCI Express总线或其它第三代I/O互连总线之类的总线,但本发明的范围并不受此限制。
如图14所示,各种I/O设备1414可以连同总线桥1418耦合到第一总线1416,总线桥1418将第一总线1416耦合至第二总线1420。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的处理器、加速器(诸如例如图形加速器或数字信号处理器(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器1415被耦合到第一总线1416。在一个实施例中,第二总线1420可以是低引脚计数(LPC)总线。各种设备可以被耦合至第二总线1420,在一个实施例中这些设备包括例如键盘/鼠标1422、通信设备1427以及诸如可包括指令/代码和数据1430的盘驱动器或其它海量存储设备的存储单元1428。此外,音频I/O 1424可以被耦合至第二总线1420。注意,其它架构是可能的。例如,取代图14的点对点架构,系统可以实现多分支总线或其它这类架构。
现在参考图15,示出了根据本发明的实施例的第二更具体示例性系统1500的方框图。图14和图15中的相同部件用相同附图标记表示,并从图15中省去了图14中的某些方面,以避免使图15的其它方面变得难以理解。
图15例示了处理器1470、1480可分别包括集成存储器和I/O控制逻辑(CL)1472和1482。因此,CL 1472、1482包括集成存储器控制器单元并包括I/O控制逻辑。图15例示出,不仅存储器1432和1434耦合至CL 1472、1482,而且I/O设备1514也耦合至控制逻辑1472、1482。传统I/O设备1515被耦合至芯片组1490。
现在参照图16,所示出的是根据本发明一个实施例的片上系统(SoC)1600的框图。在图12中,相似的部件具有同样的附图标记。另外,虚线框是更先进的SoC的可选特征。在图16中,互连单元(多个)1602被耦合至:应用处理器1610,该应用处理器包括一个或多个核202A-N的集合以及共享高速缓存单元(多个)1206;系统代理单元1210;总线控制器单元(多个)1216;集成存储器控制器单元(多个)1214;一组或一个或多个协处理器1620,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1630;直接存储器存取(DMA)单元1632;以及用于耦合至一个或多个外部显示器的显示单元1640。在一个实施例中,协处理器(多个)1620包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如图14中示出的代码1430)应用于输入指令,以执行本文描述的各功能并生成输出信息。输出信息可以按已知方式被应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。程序代码也可以在需要的情况下用汇编语言或机器语言来实现。事实上,本文中描述的机制不仅限于任何特定编程语言的范围。在任一情形下,语言可以是编译语言或解译语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。被称为“IP核”的这些表示可以被存储在有形的机器可读介质上,并被提供给各种客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
这样的机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非瞬态、有形配置,其包括存储介质,诸如硬盘;任何其它类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)的以及磁光盘;半导体器件,例如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。
因此,本发明的各实施例还包括非瞬态、有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特性。这些实施例也被称为程序产品。
仿真(包括二进制变换、代码变形等)
在某些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形(morph)、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上部分在处理器外。
图17是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代该指令转换器可以用软件、固件、硬件或其各种组合来实现。图17示出了用高级语言1702的程序可以使用x86编译器1704来编译,以生成可以由具有至少一个x86指令集核的处理器1716原生执行的x86二进制代码1706。具有至少一个x86指令集核的处理器1716表示任何处理器,这些处理器能通过兼容地执行或以其他方式处理以下内容来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能:1)英特尔x86指令集核的指令集的本质部分(substantial portion),或2)目标旨在在具有至少一个x86指令集核的英特尔处理器上运行的应用或其它程序的对象代码版本,以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果。x86编译器1704表示用于生成x86二进制代码1706(例如,对象代码)的编译器,该二进制代码1706可通过或不通过附加的可链接处理在具有至少一个x86指令集核的处理器1716上执行。类似地,图17示出用高级语言1702的程序可以使用替代的指令集编译器1708来编译,以生成可以由不具有至少一个x86指令集核的处理器1710(例如具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集,和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)来原生执行的替代指令集二进制代码1714。指令转换器1712被用来将x86二进制代码1706转换成可以由不具有x86指令集核的处理器1714原生执行的代码。该经转换的代码不大可能与替换性指令集二进制代码1710相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作并由来自替换性指令集的指令构成。因此,指令转换器1712表示:通过仿真、模拟或任何其它过程来允许不具有x86指令集处理器或核的处理器或其它电子设备得以执行x86二进制代码1706的软件、固件、硬件或其组合。
尽管附图中的流程图示出本发明的某些实施例的特定操作顺序,应该理解该顺序是示例性的(例如,可选实施例可按不同顺序执行操作、组合某些操作、使某些操作重叠等)。
在以上描述中,为解释起见,阐明了众多具体细节以提供对本发明的实施例的透彻理解。然而,将对本领域技术人员明显的是,没有这些具体细节中的一些也可实践一个或多个其他实施例。提供所描述的具体实施例不是为了限制本发明而是为了说明本发明的实施例。本发明的范围不是由所提供的具体示例确定,而是仅由所附权利要求确定。
Claims (20)
1.一种在计算机处理器中执行十进制浮点分割指令的方法,包括:
获取十进制浮点分割指令,其中该指令包含源操作数、目的地操作数和控制操作数,其中源操作数包括一个或多个经编码的十进制浮点数,每个包括的经编码的十进制浮点数具有符号、有效数和指数,并且其中所述控制操作数包括一个或多个编码类型,每种编码类型指示经编码的十进制浮点数的可能的编码格式;
解码所获取的十进制浮点分割指令;以及
对于所述源操作数中包括的每个经编码的十进制浮点数,执行经解码的十进制浮点分割指令以:
确定是否根据所述控制操作数中包括的一个或多个编码类型之一来编码经编码的十进制浮点数,以及
当根据一个或多个编码类型之一对经编码的十进制浮点数进行编码时,将来自经编码的十进制浮点数的符号、有效数和指数中的一个或多个提取到目的地操作数。
2.如权利要求1所述的方法,其特征在于:
所述控制操作数还包括提取选择,所述提取选择指示符号、有效数和指数中的哪些应从经编码的十进制浮点数提取到目的地操作数;以及
根据所述控制操作数中包括的提取选择进行提取符号、有效数和指数中的一个或多个的步骤。
3.如权利要求1所述的方法,其特征在于:
所述源操作数包括两个或更多个经编码的十进制浮点数;以及
所述控制操作数包括一个编码类型。
4.如权利要求1所述的方法,其特征在于:
所述源操作数包括第一经编码的十进制浮点数和第二经编码的十进制浮点数;
所述控制操作数包括第一编码类型和第二编码类型;
当确定是否根据所述控制操作数中包括的一个或多个编码类型之一编码第一经编码的十进制浮点数时,一个或多个编码类型之一是第一编码类型;以及
当确定是否根据所述控制操作数中包括的一个或多个编码类型之一编码第二经编码的十进制浮点数时,一个或多个编码类型之一是第二编码类型。
5.如权利要求1所述的方法,其特征在于,执行十进制浮点分割指令的步骤还包括当不根据所述一个或多个编码类型之一对经编码的十进制浮点数进行编码时,更新位。
6.如权利要求5所述的方法,其特征在于,更新位的步骤包括更新标志状况寄存器中的位。
7.如权利要求5所述的方法,其特征在于,更新位的步骤包括更新目的地操作数中的状况位。
8.一种装置,包括:
硬件解码器,用于解码十进制浮点分割指令,其中所述十进制浮点分割指令包含源操作数、目的地操作数和控制操作数,其中所述源操作数包括一个或多个经编码的十进制浮点数,每个包括的经编码的十进制浮点数具有符号、有效数和指数,并且其中控制操作数包括一个或多个编码类型,每种编码类型指示经编码的十进制浮点数的可能的编码格式;以及
执行逻辑,用于执行经解码的十进制浮点分割指令,其中经解码的十进制浮点分割指令的执行导致对于所述源操作数中包括的每个经编码的十进制浮点数:
确定是否根据所述控制操作数中包括的一个或多个编码类型之一来编码经编码的十进制浮点数,以及
当根据一个或多个编码类型之一对经编码的十进制浮点数进行编码时,将来自经编码的十进制浮点数的符号、有效数和指数中的一个或多个提取到目的地操作数。
9.如权利要求8所述的装置,其特征在于:
所述控制操作数还包括提取选择,所述提取选择指示符号、有效数和指数中的哪些应从经编码的十进制浮点数提取到目的地操作数;以及
根据所述控制操作数中包括的提取选择进行符号、有效数和指数中的一个或多个的提取。
10.如权利要求8所述的装置,其特征在于:
源操作数包括两个或更多个经编码的十进制浮点数;以及
所述控制操作数包括一个编码类型。
11.如权利要求8所述的装置,其特征在于:
所述源操作数包括第一经编码的十进制浮点数和第二经编码的十进制浮点数;
所述控制操作数包括第一编码类型和第二编码类型;
当确定是否根据所述控制操作数中包括的一个或多个编码类型之一编码第一经编码的十进制浮点数时,一个或多个编码类型之一是第一编码类型;以及
当确定是否根据所述控制操作数中包括的一个或多个编码类型之一编码第二经编码的十进制浮点数时,一个或多个编码类型之一是第二编码类型。
12.如权利要求8所述的装置,其特征在于,执行经解码的十进制浮点分割指令还导致当不根据所述一个或多个编码类型之一对经编码的十进制浮点数进行编码时,对于源操作数中包括的每个经编码的十进制浮点数,设置位。
13.如权利要求12所述的装置,其特征在于,要更新的位包括标志状况寄存器内的位。
14.如权利要求12所述的装置,其特征在于,要更新的位包括目的地操作数内的状况位。
15.一种包括计算机程序的有形非瞬态机器可读存储介质,所述计算机程序用于转换非原生程序指令以形成可由用于处理数据的装置解码的原生程序指令,所述装置具有处理逻辑,所述处理逻辑用于:
执行数据处理操作,且指令解码器能操作用于解码十进制浮点分割指令,以执行由原生程序指令指定的数据处理操作,其中所述十进制浮点分割指令包含源操作数、目的地操作数和控制操作数,其中源操作数包括一个或多个经编码的十进制浮点数,每个包括的经编码的十进制浮点数具有符号、有效数和指数,并且其中控制操作数包括一个或多个编码类型,每个编码类型指示经编码的十进制浮点数的可能的编码格式,并且其中原生程序指令包括:
确定是否根据控制操作数中包括的一个或多个编码类型之一来编码经编码的十进制浮点数;以及
当根据一个或多个编码类型之一对经编码的十进制浮点数进行编码时,将来自经编码的十进制浮点数的符号、有效数和指数中的一个或多个提取到目的地操作数。
16.如权利要求15所述的有形非瞬态机器可读存储介质,其特征在于:
所述控制操作数还包括提取选择,所述提取选择指示符号、有效数和指数中的哪些应从经编码的十进制浮点数提取到目的地操作数;以及
根据所述控制操作数中包括的提取选择进行提取符号、有效数和指数中的一个或多个。
17.如权利要求15所述的有形非瞬态机器可读存储介质,其特征在于:
源操作数包括两个或更多个经编码的十进制浮点数;以及
所述控制操作数包括一个编码类型。
18.如权利要求15所述的有形非瞬态机器可读存储介质,其特征在于:
所述源操作数包括第一经编码的十进制浮点数和第二经编码的十进制浮点数;
所述控制操作数包括第一编码类型和第二编码类型;
当确定是否根据所述控制操作数中包括的一个或多个编码类型之一编码第一经编码的十进制浮点数时,一个或多个编码类型之一是第一编码类型;以及
当确定是否根据所述控制操作数中包括的一个或多个编码类型之一编码第二经编码的十进制浮点数时,一个或多个编码类型之一是第二编码类型。
19.如权利要求15所述的有形非瞬态机器可读存储介质,其特征在于,所述原生程序指令还包括当不根据一个或多个编码类型之一对经解码的十进制浮点数进行编码时,更新位。
20.如权利要求19所述的有形非瞬态机器可读存储介质,其特征在于,更新位包括更新标志状况寄存器中的位。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/067072 WO2013095600A1 (en) | 2011-12-23 | 2011-12-23 | Method and apparatus for decimal floating-point data logical extraction |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104137058A true CN104137058A (zh) | 2014-11-05 |
CN104137058B CN104137058B (zh) | 2017-03-22 |
Family
ID=48669241
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180076413.2A Active CN104137058B (zh) | 2011-12-23 | 2011-12-23 | 用于十进制浮点数据逻辑提取的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9170772B2 (zh) |
CN (1) | CN104137058B (zh) |
TW (1) | TWI506539B (zh) |
WO (1) | WO2013095600A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109791491A (zh) * | 2016-09-30 | 2019-05-21 | 国际商业机器公司 | 十进制加载立即指令 |
WO2023180914A1 (en) * | 2022-03-25 | 2023-09-28 | International Business Machines Corporation | Reduced logic conversion of binary integers to binary coded decimals |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9804839B2 (en) | 2012-12-28 | 2017-10-31 | Intel Corporation | Instruction for determining histograms |
US10671387B2 (en) | 2014-06-10 | 2020-06-02 | International Business Machines Corporation | Vector memory access instructions for big-endian element ordered and little-endian element ordered computer code and data |
WO2016018386A1 (en) | 2014-07-31 | 2016-02-04 | Hewlett-Packard Development Company, L.P. | Encoding data within a crossbar memory array |
US9619214B2 (en) | 2014-08-13 | 2017-04-11 | International Business Machines Corporation | Compiler optimizations for vector instructions |
GB2530990A (en) | 2014-10-06 | 2016-04-13 | Ibm | Decimal and binary floating point arithmetic calculations |
GB2530989B (en) | 2014-10-06 | 2016-08-17 | Ibm | Decimal and binary floating point rounding |
US10169014B2 (en) | 2014-12-19 | 2019-01-01 | International Business Machines Corporation | Compiler method for generating instructions for vector operations in a multi-endian instruction set |
US9588746B2 (en) | 2014-12-19 | 2017-03-07 | International Business Machines Corporation | Compiler method for generating instructions for vector operations on a multi-endian processor |
US9880821B2 (en) | 2015-08-17 | 2018-01-30 | International Business Machines Corporation | Compiler optimizations for vector operations that are reformatting-resistant |
US9594668B1 (en) | 2015-09-04 | 2017-03-14 | International Business Machines Corporation | Debugger display of vector register contents after compiler optimizations for vector instructions |
US10101997B2 (en) | 2016-03-14 | 2018-10-16 | International Business Machines Corporation | Independent vector element order and memory byte order controls |
US10459700B2 (en) | 2016-03-14 | 2019-10-29 | International Business Machines Corporation | Independent vector element order and memory byte order controls |
US20180095760A1 (en) * | 2016-09-30 | 2018-04-05 | James D. Guilford | Instruction set for variable length integer coding |
TWI785546B (zh) | 2021-03-23 | 2022-12-01 | 創鑫智慧股份有限公司 | 浮點數的編碼與解碼的方法與裝置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7016928B2 (en) * | 2001-05-25 | 2006-03-21 | Sun Microsystems, Inc. | Floating point status information testing circuit |
US7529912B2 (en) * | 2002-02-12 | 2009-05-05 | Via Technologies, Inc. | Apparatus and method for instruction-level specification of floating point format |
CA2544656C (en) * | 2004-09-07 | 2016-03-22 | Research In Motion Limited | Floating point encoding systems and methods |
US7685214B2 (en) * | 2005-08-26 | 2010-03-23 | International Business Machines Corporation | Order-preserving encoding formats of floating-point decimal numbers for efficient value comparison |
US7565513B2 (en) * | 2007-02-28 | 2009-07-21 | Advanced Micro Devices, Inc. | Processor with power saving reconfigurable floating point unit decoding an instruction to single full bit operation or multiple reduced bit operations |
US20080270495A1 (en) | 2007-04-26 | 2008-10-30 | International Business Machines Corporation | Insert/extract biased exponent of decimal floating point data |
US8103858B2 (en) * | 2008-06-30 | 2012-01-24 | Intel Corporation | Efficient parallel floating point exception handling in a processor |
US8719322B2 (en) * | 2011-04-06 | 2014-05-06 | Kodak Alaris Inc. | Floating point format converter |
-
2011
- 2011-12-23 CN CN201180076413.2A patent/CN104137058B/zh active Active
- 2011-12-23 US US13/991,885 patent/US9170772B2/en active Active
- 2011-12-23 WO PCT/US2011/067072 patent/WO2013095600A1/en active Application Filing
-
2012
- 2012-12-13 TW TW101147185A patent/TWI506539B/zh not_active IP Right Cessation
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109791491A (zh) * | 2016-09-30 | 2019-05-21 | 国际商业机器公司 | 十进制加载立即指令 |
CN109791491B (zh) * | 2016-09-30 | 2023-08-11 | 国际商业机器公司 | 用于促进计算环境内的处理的方法和计算机系统 |
WO2023180914A1 (en) * | 2022-03-25 | 2023-09-28 | International Business Machines Corporation | Reduced logic conversion of binary integers to binary coded decimals |
Also Published As
Publication number | Publication date |
---|---|
US9170772B2 (en) | 2015-10-27 |
TW201346715A (zh) | 2013-11-16 |
TWI506539B (zh) | 2015-11-01 |
WO2013095600A1 (en) | 2013-06-27 |
US20140019506A1 (en) | 2014-01-16 |
CN104137058B (zh) | 2017-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104137058A (zh) | 用于十进制浮点数据逻辑提取的方法和装置 | |
CN104040484B (zh) | 浮点缩放处理器、方法、系统和指令 | |
CN104145245B (zh) | 浮点舍入量确定处理器、方法、系统和指令 | |
CN104011670A (zh) | 用于基于向量写掩码的内容而在通用寄存器中存储两个标量常数之一的指令 | |
CN104094218A (zh) | 用于执行写掩码寄存器到向量寄存器中的一系列索引值的转换的系统、装置和方法 | |
CN104126166A (zh) | 用于执行使用掩码的向量打包一元编码的系统、装置和方法 | |
CN104011657A (zh) | 用于向量计算和累计的装置和方法 | |
CN103999037A (zh) | 用于响应于单个指令来执行横向相加或相减的系统、装置和方法 | |
CN104040482A (zh) | 用于在打包数据元素上执行增量解码的系统、装置和方法 | |
CN104011649A (zh) | 用于在simd/向量执行中传播有条件估算值的装置和方法 | |
CN104081336A (zh) | 用于检测向量寄存器内的相同元素的装置和方法 | |
CN104137054A (zh) | 用于执行从索引值列表向掩码值的转换的系统、装置和方法 | |
CN104011652A (zh) | 打包选择处理器、方法、系统和指令 | |
CN104025020A (zh) | 用于执行掩码位压缩的系统、装置以及方法 | |
CN104025040A (zh) | 用于混洗浮点或整数值的装置和方法 | |
CN104011653A (zh) | 打包数据操作掩码比较处理器、方法、系统及指令 | |
CN104025022A (zh) | 用于具有推测支持的向量化的装置和方法 | |
CN104335166A (zh) | 用于执行混洗和操作(混洗-操作)的系统、装置和方法 | |
CN104011647A (zh) | 浮点舍入处理器、方法、系统和指令 | |
CN104011673A (zh) | 向量频率压缩指令 | |
CN104169867A (zh) | 用于执行掩码寄存器至向量寄存器的转换的系统、装置和方法 | |
CN104137059A (zh) | 多寄存器分散指令 | |
CN104081337A (zh) | 用于响应于单个指令来执行横向部分求和的系统、装置和方法 | |
CN104115114A (zh) | 经改进的提取指令的装置和方法 | |
CN104011650A (zh) | 使用输入写掩码和立即数从源写掩码寄存器在目的地写掩码寄存器中设置输出掩码的系统、装置和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |