CN109614076A - 浮点到定点转换 - Google Patents
浮点到定点转换 Download PDFInfo
- Publication number
- CN109614076A CN109614076A CN201811131818.1A CN201811131818A CN109614076A CN 109614076 A CN109614076 A CN 109614076A CN 201811131818 A CN201811131818 A CN 201811131818A CN 109614076 A CN109614076 A CN 109614076A
- Authority
- CN
- China
- Prior art keywords
- component
- integer
- symbol
- exponential
- exponential component
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/14—Conversion to or from non-weighted codes
- H03M7/24—Conversion to or from floating-point codes
-
- 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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
- G06F7/575—Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
Abstract
描述了指令、其操作、和对指令的执行支持的实施例。在一些实施例中,处理器包括解码电路,其用于解码具有用于操作码的字段、打包数据源操作数标识符、和打包数据目的地操作数标识符的指令;以及执行电路,其用于执行经解码指令以将所标识的打包数据源操作数的最低有效打包数据元素位置的单精度浮点数据元素转换为定点表示、在所标识的打包数据目的地操作数的两个最低有效打包数据元素位置中将定点表示存储为32位整数和32位整数指数、以及将所标识的打包数据目的地操作数的所有剩余打包数据元素归零。
Description
背景技术
在计算机处理器中存在用于表达数的许多不同方式。例如,整数可被表示为整数值。小数和其它非整数值可被表示为定点数,其中多个位用于整数分量并且多个位用于小数部分(例如,INTEGER.FRACTION)。用于表示小数的另一方式是使用浮点数,其包括用于符号、数字串(尾数、小数、或有效数)的位—其长度确定数的精度,以及指示小数点位置(decimal place)的位置的指数。
附图说明
本发明通过示例而非限制的方式在附图的图中被示出,其中相似的附图标记指示类似的元件,并且在附图中:
图1示出了具有源操作数(寄存器或存储器)和目的地操作数的定点到浮点转换指令的执行的所选部分的实施例;
图2示出了由处理器执行以处理浮点到定点转换指令的方法的实施例;
图3(A)-(B)示出了执行将无符号字从定点转换为浮点指令的方法的更详细描述;
图4示出了用于处理诸如本文详述的指令的指令的硬件的实施例;
图5A示出了示范性指令格式;
图5B示出了来自图5A的哪些字段构成完整操作码字段和基础操作字段;
图5C示出了来自图5A的哪些字段构成寄存器索引字段;
图6是根据本发明的一个实施例的寄存器架构的框图;
图7A是示出根据本发明的实施例的示范性有序流水线和示范性寄存器重命名、乱序发布/执行流水线两者的框图;
图7B是示出根据本发明的实施例的要被包括在处理器中的有序架构核的示范性实施例和示范性寄存器重命名、乱序发布/执行架构核的框图;
图8A-B示出了更具体的示范性有序核架构的框图,该核将是芯片中的若干逻辑块(包括相同类型和/或不同类型的其它核)之一;图9是根据本发明的实施例的处理器的框图,该处理器可具有多于一个核、可具有集成存储器控制器、并且可具有集成图形;
图10-13是示范性计算机架构的框图;
图14是框图,其对照根据本发明的实施例的使用软件指令转换器以将源指令集中的二进制指令转换成目标指令集中的二进制指令;以及
图15是表示所描述的指令的操作的伪代码的实施例。
具体实施方式
在以下描述中,阐明了许多特定的细节。然而要理解,可在没有这些特定细节的情况下实践本发明。在其它实例中,众所周知的电路、结构和技术未被详细示出以免混淆对此描述的理解。
说明书中对“一个实施例”、“一实施例”、“示例实施例”等的引用指示所描述的实施例可包括特定特征、结构或特性,但每个实施例可不一定包括此具体特征、结构或特性。另外,此类词语不一定指同一实施例。此外,在结合一实施例描述具体特征、结构或特性时,认为结合其它实施例影响此类特征、结构或特性是在本领域技术人员的知识之内,无论是否明确描述。
有时,从一种数据类型(例如,定点)移动到另一种数据类型(例如,浮点)是有益的。本文详述的是用于将单精度浮点值从打包数据操作数(例如,单指令多数据(SIMD)或向量寄存器)转换为定点值并将该值存储在打包数据操作数中的指令。取决于实现,本文详述的指令可以使用不同大小的打包数据寄存器操作数(例如,128位、256位、512位寄存器等)和/或至少将存储器位置用于指令的源。该指令是对计算机其本身的改进,因为它为先前尚未执行的特定数据元素的转换提供支持。具体地,浮点到定点转换指令的执行引起:将所标识的打包数据源操作数的最低有效打包数据元素位置的单精度浮点数据元素转换为定点表示、在所标识的打包数据目的地操作数的两个最低有效打包数据元素位置中将定点表示存储为32位整数和32位整数指数、并且对所标识的打包数据目的地操作数的所有剩余打包数据元素进行归零。
图1示出了具有源操作数(寄存器或存储器)和目的地操作数的定点到浮点转换指令的执行的所选部分的实施例。该指令的格式包括用于操作码(“VCTFSS2D”是本图示中的操作码助记符)、打包数据源操作数标识符(显示为“SOURCE/MEM”)和打包数据目的地操作数标识符(显示为“目的地”)的字段。
打包数据源操作数字段表示打包数据的寄存器位置或打包数据的存储器位置,其中该打包数据的一个单精度浮点值将从浮点转换为定点值(两个32位值)。
打包数据目的地操作数字段表示打包数据的寄存器位置,其中将存储转换的结果(定点值)。
在所示示例中,所标识的源操作数101具有多个单精度浮点元素。最低有效位置中的单精度浮点元素是单精度浮点元素0,并且最高有效位置中的单精度浮点元素是单精度浮点元素N。单精度浮点元素的数量取决于所标识的源操作数101的大小(例如,128位、256位、512位等)。
执行电路111从所标识的源操作数101的最低有效打包数据元素位置得到单精度浮点值,并将该值转换为定点值。所述定点值包括32位整数分量和32位指数分量。稍后将详述更详细的执行流程。
然后,在所标识的目的地操作数121中将定点值存储在连续的最低有效数据元素位置中,并且将所有其它数据元素位置设置为0。尽管整数分量被示为被存储在最低有效位置中,但在一些实施例中,在指数被存储在最低有效位置的情况下,顺序被反转。
图2示出了由处理器执行以处理浮点到定点转换指令的方法的实施例。
在201处,获取指令。例如,获取浮点到定点转换指令。浮点到定点转换指令包括用于操作码、打包数据源操作数标识符、和打包数据目的地操作数标识符的字段。在一些实施例中,从指令高速缓存中获取所述指令。
在203处对所获取的指令进行解码。例如,所获取的浮点到定点转换指令由诸如本文详述的解码电路来解码。
在205处检索与经解码指令的所标识源操作数相关联的数据值,并调度经解码指令(根据需要)。例如,当标识的源操作数是存储器操作数时,检索来自所指示的存储器位置的数据。
在207处,经解码指令由诸如本文详述的执行电路(硬件)所执行。对于浮点到定点转换指令,执行将使执行电路将标识的打包数据源操作数的最低有效打包数据元素位置的单精度浮点数据元素转换为定点表示、在标识的打包数据目的地操作数的两个最低有效打包数据元素位置中将定点表示存储为32位整数和32位整数指数、并对所标识的打包数据目的地操作数的所有剩余打包数据元素进行归零。
在一些实施例中,在209处提交或引退指令。
图3(A)-(B)示出了执行将无符号字从定点转换为浮点指令的方法的更详细描述。通常,这由诸如上面详述的执行电路所执行。在一些实施例中,电路将该方法执行为状态机。
在301处,将浮点值解构成符号、指数和小数分量。例如,sign←SRC1[31],exponent[7:0]←SRC1[30:23],fractional[22:0]←SRC1[22:0]。
在303处,进行指数分量是否为0的确定。例如,exponent[7:0]==8’b00000000
当指数分量为0时,在305处将定点整数和指数分量设置为零。例如,integer32Val[31:0]←32’h00000000和intExponent[31:0]←32’h00000000。
当指数分量不为0时,在307处进行指数分量是否全是一的确定。
当指数分量全是一时,在309处进行小数分量的最高有效位是否为0的确定。
当小数分量的最高有效位为0时,在311处进行符号是否为0的确定。当符号为0时,在313处将定点整数分量设置为对应于十六进制7fffffff的值,并将指数分量设置为对应于十六进制7fffffff的值。例如,integer32Val[31:0]←32’h7fff_ffff和intExponent[31:0]←32’h7fff_ffff。
当符号不为0时,在315处将定点整数分量设置为对应于十六进制8000000的值,并且将指数分量设置为对应于十六进制7fffffff的值。例如,integer32Val[31:0]←32’h800_0000和intExponent[31:0]←32’h7fff_ffff。
当小数分量的最高有效位不为0时,在317处将定点整数分量设置为对应于h0000000的值,并将指数分量设置为对应于h7fffffff的值。例如,integer32Val[31:0]←32’h000_0000和intExponent[31:0]←32’h7fff_ffff。
当指数分量不全是一或零时,在319处将b000000001与小数分量并置连接以生成整数的绝对值。例如,absInteger32Val[31:0]←{8’b0,1’b1,fractional[22:0]}。这保留了24位精度。
在321处,进行符号是否为0的确定。换句话说,符号被应用。
当符号为0时,在323处将整数分量设置为整数的绝对值。例如,integer32Val[31:0]←absInteger32Val[31:0];
当符号不为0时,在325处将整数分量设置为整数的绝对值加1的补数。例如,integer32Val[31:0]←~absInteger32Val[31:0]+1’b1。在一些实施例中,允许用户决定精度损失。
在327处,通过将b0与添加到b101101010的指数并置连接来生成临时值(例如,temp[8:0]={1’b0,exponent[7:0]}+9’b1_0110_1010)。
在329处,通过将临时值的最高有效位的23个副本与临时值并置连接来生成指数分量(例如,intExponent[31:0]←{23{temp[8]},temp[8:0]})。
在331处,存储所生成的整数和指数分量(并且将剩余数据元素设置为零)。
图4示出了用于处理诸如本文详述的指令的指令的硬件的实施例。如图所示,存储装置403存储要被执行的VCVTFSS2D指令401。
指令401由解码电路405所接收。例如,解码电路405从获取逻辑/电路接收该指令。该指令包括用于操作码、源标识符、和目的地标识符的字段。在一些实施例中,源和目的地是寄存器,并且在其它实施例中,一者或两者是存储器位置。
稍后将详述至少一种指令格式的更详细实施例。解码电路405将指令解码成一个或多个操作。在一些实施例中,该解码包括生成要由执行电路(诸如执行电路409)所执行的多个微操作。解码电路405还解码指令前缀。
在一些实施例中,寄存器重命名、寄存器分配、和/或调度电路407提供对于以下项中的一项或多项的功能性:1)将逻辑操作数值重命名为物理操作数值(例如,在一些实施例中是寄存器别名表),2)将状态位和标记分配给经解码指令,以及3)从指令池中调度经解码指令以用于在执行电路上执行(例如,在一些实施例中使用保留站)。
寄存器(寄存器堆)和/或存储器408将数据存储为要由执行电路409操作的指令的操作数。示范性寄存器类型包括打包数据寄存器、通用寄存器、和浮点寄存器。
执行电路409执行经解码指令。经解码指令的执行使执行电路将所标识的打包数据源操作数的最低有效打包数据元素位置的数据元素从浮点表示转换为定点表示、将定点表示存储到所标识的打包数据目的地操作数的连续最低有效打包数据元素位置、以及对所标识的打包数据目的地操作数的所有剩余打包数据元素进行归零。
在一些实施例中,引退/写回电路411在架构上将目的地寄存器提交到寄存器或存储器408中并且引退指令。
图15是表示所描述的指令的操作的伪代码的实施例。
用于浮点到定点转换指令的格式的实施例是VCVTFSS2D DST,SRC/MEM。VCVTFSS2D是指令的操作码。上面已经详述了示范性操作码助记符。DST是标识目的地操作数的字段。SRC1是用于源操作数标识符的字段,诸如寄存器和/或存储器位置。在一些实施例中,使用VVVV字段520、MOD R/M 540和/或SIB 550对操作数字段进行编码。
在实施例中,指令的编码包括间接标识存储器中的多个被索引的目的地位置(例如,字段550)的比例-索引-基址(SIB)类型存储器寻址操作数。在一个实施例中,SIB类型存储器操作数可包括标识基址寄存器的编码。基址寄存器的内容可表示存储器中的基址,存储器中的具体目的地位置的地址从其被计算。例如,基址可以是用于扩展矢量指令的潜在目的地位置的块中第一位置的地址。在一个实施例中,SIB类型存储器操作数可包括标识索引寄存器的编码。索引寄存器的每个元素可指定索引或偏移值,其可用于从基址计算在潜在目的地位置的块内相应目的地位置的地址。在一个实施例中,SIB类型存储器操作数可包括指定在计算相应目的地地址时要应用到每个索引值的比例因子的编码。例如,如果在SIB类型存储器操作数中编码比例因子值四,则从索引寄存器的元素获取的每个索引值可被乘以四,并且随后加上基址以计算目的地地址。
在一个实施例中,vm32{x,y,z}形式的SIB类型存储器操作数可标识使用SIB类型存储器寻址指定的存储器操作数的矢量阵列。在此示例中,使用公用基址寄存器、恒定比例因子和包含单独元素(其每个是32比特索引值)的矢量索引寄存器来指定存储器地址的阵列。矢量索引寄存器可以是128比特(例如,XMM)寄存器(vm32x)、256比特(例如,YMM)寄存器(vm32y)或512比特(例如,ZMM)寄存器(vm32z)。在另一实施例中,vm64{x,y,z}形式的SIB类型存储器操作数可标识使用SIB类型存储器寻址指定的存储器操作数的矢量阵列。在此示例中,使用公用基址寄存器、恒定比例因子和包含单独元素(其每个是64比特索引值)的矢量索引寄存器来指定存储器地址的阵列。矢量索引寄存器可以是128比特(例如,XMM)寄存器(vm64x)、256比特(例如,YMM)寄存器(vm64y)或512比特(例如,ZMM)寄存器(vm64z)。
以下详述的是可被用于以上详述指令的示范性指令格式、架构和系统。例如,详述了支持指令的示范性流水线,其包括用于执行本文详述的方法的电路。
指令集包括一个或多个指令格式。给定的指令格式定义各种字段(比特数量、比特位置)以在其它事物中指定要被执行的操作(操作码)和操作数(在其上要执行操作)。一些指令格式通过指令模板(或子格式)的定义被进一步分解。例如,给定的指令格式的指令模板可被定义以具有指令格式的字段的不同子集(包括的字段典型地采用相同顺序,但至少一些具有不同比特位置,因为包括有较少字段)和/或被定义以具有不同地解译的给定字段。因此,ISA的每个指令使用给定的指令格式来表示(并且如果被定义,则采用该指令格式的指令模板中的给定一个)并且包括用于指定操作和操作数的字段。例如,示范性ADD指令具有特定操作码和指令格式,其包括用于指定那个操作码的操作码字段和用于选择操作数的操作数字段(源1/目的地和源2));以及指令流中的该ADD指令的出现将具有选择特定操作数的操作数字段中的特定内容。
示范性指令格式
本文描述的指令的实施例可以采用不同格式实施。此外,示范性系统、架构和流水线在下文被详述。指令的实施例可在这样的系统、架构和流水线上执行,但不限于详述的那些。
指令格式
VEX编码允许指令具有多于两个操作数,并且允许SIMD矢量寄存器长于58比特。VEX前缀的使用提供了三操作数(或更多操作数)句法。例如,之前两操作数指令执行诸如A=A+B的操作,这盖写源操作数。VEX前缀的使用使得操作数能够执行诸如A=B+C的非破坏性操作。
图5A示出示范性AVX指令格式,其包括VEX前缀502、真操作码字段530、Mod R/M字节540、SIB字节550、位移字段562、和IMM8 572。图5B示出来自图5A的哪些字段组成了完全操作码字段574和基础操作字段541。图5C示出来自图5A的哪些字段组成了寄存器索引字段544。
VEX前缀(字节0-2)502-以三字节形式来编码。第一字节是格式字段590(VEX字节0,比特[7:0]),其含有显式C4字节值(被用于分辨C4指令格式的唯一值)。第二-第三字节(VEX字节1-2)包括提供特定能力的多个比特字段。特定地,REX字段505(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),使得Rrrr、Xxxx、和Bbbb可通过添加VEX.R、VEX.X、和VEX.B来形成。操作码映射字段515(VEX字节1,比特[4:0]—mmmmm)包括用于编码所暗示的前导操作码字节的内容。W字段564(VEX字节2,比特[7]—W)-由符号VEX.W来表示,并取决于指令而提供不同功能。VEX.vvvv 520(VEX字节2,比特[6:3]-vvvv)的角色可包括以下项:1)VEX.vvvv编码以倒置(1s补码)的形式所指定的第一源寄存器操作数,并对于带有2个或更多源操作数的指令有效;2)VEX.vvvv编码对于某些矢量移位以1s补码形式所指定的目的地寄存器操作数;或者3)VEX.vvvv不编码任何操作数,字段被保留并应含有1111b。如果VEX.L 568大小字段(VEX字节2,比特[2]-L)=0,则其指示58字节矢量;如果VEX.L=1,则其指示256字节矢量。前缀编码字段525(VEX字节2,比特[1:0]-pp)为基础操作字段541提供附加比特。
真操作码字段530(字节3)还已知为操作码字节。操作码的部分在此字段中被指定。
MOD R/M字段540(字节4)包括MOD字段542(比特[7-6])、Reg字段544(比特[5-3])、和R/M字段546(比特[2-0])。Reg字段544的角色可包括以下项:编码目的地寄存器操作数或源寄存器操作数(Rrrr的rrr),或作为操作码扩展被对待并不被用于编码任何指令操作数。R/M字段546的角色可包括以下项:编码引用存储器地址的指令操作数,或者编码目的地寄存器操作数或源寄存器操作数。
缩放、索引、基址(SIB)—缩放字段550(字节5)的内容包括SS552(比特[7-6]),其被用于存储器地址生成。SIB.xxx 554(比特[5-3])和SIB.bbb 556(比特[2-0])的内容之前已关于寄存器索引Xxxx和Bbbb被提到。
位移字段562和立即数字段(IMM8)572含有数据。
示范性寄存器架构
图6是根据本发明的一个实施例的寄存器架构600的框图。在所示出的实施例中,存在512比特宽的32个矢量寄存器610;这些寄存器被引用为zmm0直到zmm31。下部9个zmm寄存器的下部顺序256比特被覆载在寄存器ymm0-15上。下部9个zmm寄存器的下部顺序128比特(ymm寄存器的下部顺序128比特)被覆载在寄存器xmm0-15上。
通用寄存器625-在所示出的实施例中,存在连同现存x86寻址模式被用于寻址存储器操作数的十六个64-比特通用寄存器。这些寄存器通过名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、和R8直到R15来引用。
标量浮点栈寄存器堆(x87栈)645,在其上MMX打包整数平寄存器堆650被别名化-在所示出的实施例中,x87栈是用于使用x87指令集扩展在32/64/80比特浮点数据上执行标量浮点操作的八元素栈;而MMX寄存器被用于在64-比特打包整数数据上执行操作,还被用于为在MMX和XMM寄存器之间所执行的一些操作来保存操作数。
本发明的备选实施例可使用更宽或更窄的寄存器。另外,本发明的备选实施例可使用更多、更少、或不同寄存器堆和寄存器。
示范性核架构、处理器、和计算机架构
处理器核可以不同方式、为了不同目的、以及在不同处理器中被实现。例如,此类核的实现可包括:1)打算用于通用计算的通用有序核;2)打算用于通用计算的高性能通用乱序核;3)打算主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)包括打算用于通用计算的一个或多个通用有序核和/或打算用于通用计算的一个或多个通用乱序核的CPU;以及2)包括打算主要用于图形和/或科学(吞吐量)的一个或多个专用核的协同处理器。此类不同处理器导致不同计算机系统架构,其可包括:1)在与所述CPU单独的芯片上的协同处理器; 2)在与CPU相同的封装中单独管芯上的协同处理器;3)在与CPU相同的管芯上的协同处理器(在该情况中,此类协同处理器有时被称为专用逻辑,诸如集成的图形和/或科学(吞吐量)逻辑,或被称为专用核);以及4)在可在相同管芯上包括所描述的CPU(有时被称为应用核或应用处理器)、以上所描述的协同处理器、和附加功能性的芯片上系统。示范性核架构接下来被描述,继之以示范性处理器和计算机架构的描述。本文中的细节是包括示范性核、处理器等的电路(单元)。
示范性核架构
有序和乱序核框图
图7A是框图,其示出根据本发明的实施例的示范性有序流水线和示范性寄存器重命名、乱序发布/运行流水线两者。图7B是框图,其示出根据本发明的实施例的要被包括在处理器中的有序架构核的示范性实施例和示范性寄存器重命名、乱序发布/运行架构核两者。图7A-B中的实线框示出有序流水线和有序核,而虚线框的可选附加示出寄存器重命名、乱序发布/运行流水线和核。给定有序方面是乱序方面的子集,乱序方面将被描述。
在图7A中,处理器流水线700包括取阶段702、长度解码阶段704、解码阶段706、分配阶段708、重命名阶段710、调度(还已知为分派或发布)阶段712、寄存器读/存储器读阶段714、运行阶段716、写回/存储器写阶段718、异常处置阶段722、和提交阶段724。
图7B示出处理器核790,其包括耦合到运行引擎单元750的前端单元730,并且两者被耦合到存储器单元770。核790可以是简化指令集计算(RISC)核、复杂指令集计算(CISC)核、非常长指令字(VLIW)核、或混合或备选核类型。如仍有的另一个选项,核790可以是专用核,诸如例如网络或通信核、压缩引擎、协同处理器核、通用计算图形处理单元(GPGPU)核、图形核等等。
前端单元730包括耦合到指令高速缓存单元734的分支预测单元732,所述指令高速缓存单元734被耦合到指令转化旁视(lookaside)缓冲器(TLB)736,其被耦合到指令取单元738,指令取单元738被耦合到解码单元740。解码单元740(或解码器)可解码指令,并生成为输出一个或多个微操作、微代码条目点、微指令、其它指令、或其它控制信号,其被解码自、或其以其它方式反映、或被推导自原始指令。使用各种不同机制,解码单元740可被实现。适合的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)、等等。在一个实施例中,核790包括存储用于某些宏指令的微代码的微代码ROM或另一介质(例如,在解码单元740中或以别的方式在前端单元730内)。解码单元740被耦合到运行引擎单元750中的重命名/分配器单元752。
运行引擎单元750包括耦合到引退单元754和一个或多个调度器单元756的集合的重命名/分配器单元752。调度器单元756代表任何数量的不同调度器,包括保留站、中央指令窗口、等等。调度器单元756被耦合到物理寄存器堆单元758。物理寄存器堆单元758中的每个代表一个或多个物理寄存器堆,其不同物理寄存器堆存储一个或多个不同数据类型,诸如标量整数、标量浮点、打包的整数、打包的浮点、矢量整数、矢量浮点、状态(例如,是要被运行的下一个指令的地址的指令指针)、等等。在一个实施例中,物理寄存器堆单元758包括矢量寄存器单元、和标量寄存器单元。这些寄存器单元可提供架构上的矢量寄存器、矢量掩码寄存器、和通用寄存器。物理寄存器堆单元758通过引退单元754来重叠以示出其中寄存器重命名和乱序运行可被实现的各种方式(例如,使用重排序缓冲器和引退寄存器堆;使用未来堆、历史缓冲器、和引退寄存器堆;使用寄存器映射和寄存器的池;等等)。引退单元754和物理寄存器堆单元758被耦合到运行集群760。运行集群760包括一个或多个运行单元762的集合和一个或多个存储器访问单元764的集合。运行单元762可执行各种操作(例如,移位、加法、减法、乘法)以及在各种类型的数据(例如,标量浮点、打包的整数、打包的浮点、矢量整数、矢量浮点)上执行。虽然一些实施例可包括专用于特定功能或功能的集合的多个运行单元,其它实施例可包括都执行所有功能的多个运行单元或仅一个运行单元。调度器单元756、物理寄存器堆单元758、和运行集群760被示出为可能是复数的,因为某些实施例对于某些类型的数据/操作来创建单独流水线(例如,标量整数流水线、标量浮点/打包的整数/打包的浮点/矢量整数/矢量浮点流水线、和/或存储器访问流水线,其各自具有它们自己的调度器单元、物理寄存器堆单元、和/或运行集群—并且在单独的存储器访问流水线的情况中,其中此流水线的仅运行集群具有存储器访问单元764的某些实施例被实现)。还应被理解的是,在单独流水线被使用之处,这些流水线的一个或多个流水线可以是乱序发布/运行,并且剩余的是有序。
存储器访问单元764的集合被耦合到存储器单元770,存储器单元770包括耦合到数据高速缓存单元774的数据TLB单元772,数据高速缓存单元774耦合到2级(L2)高速缓存单元776。在一个示范性实施例中,存储器访问单元764可包括加载单元、存储地址单元、和存储数据单元,其的每个被耦合到存储器单元770中的数据TLB单元772。指令高速缓存单元734被进一步耦合到存储器单元770中的2级(L2)高速缓存单元776。L2高速缓存单元776被耦合到一个或多个其它级别的高速缓存并最终到主存储器。
通过示例的方式,示范性寄存器重命名、乱序发布/运行核架构可实现如下流水线700:1)指令取738执行取及长度解码阶段702和704;2)解码单元740执行解码阶段706;3)重命名/分配器单元752执行分配阶段708和重命名阶段710;4)调度器单元756执行调度阶段712;5)物理寄存器堆单元758和存储器单元770执行寄存器读/存储器读阶段714;运行集群760执行运行阶段716;6)存储器单元770和物理寄存器堆单元758执行写回/存储器写阶段718;7)各种单元可在异常处置阶段722中被涉及;以及8)引退单元754和物理寄存器堆单元758执行提交阶段724。
核790可支持一个或多个指令集(例如,x86指令集(带有已随较新版本被添加的一些扩展);MIPS Technologies of Sunnyvale,CA的MIPS指令集;ARM Holdings ofSunnyvale,CA的ARM指令集(带有诸如NEON的可选附加扩展)),包括本文中所描述的指令。在一个实施例中,核790包括用于支持打包数据指令集扩展(例如,AVX1、AVX2)的逻辑,因此允许由许多多媒体应用来使用的操作使用打包的数据来执行。
应被理解的是,核可支持多线程(运行操作或线程的两个或更多并行集合),并可以多种方式来如此做,所述多种方式包括时间分段的多线程、同时多线程(在单个物理核为线程的每个提供逻辑核的情况中,那个物理核正进行同时多线程),或其组合(例如,诸如在Intel®超线程技术中的时间分段的取和解码以及其后的同时多线程)。
虽然寄存器重命名在乱序运行的上下文中被描述,但应理解的是,寄存器重命名可被用在有序架构中。虽然处理器的所示出实施例还包括单独的指令和数据高速缓存单元734/774以及共享的L2高速缓存单元776,但备选实施例可具有用于指令和数据两者的单个内部高速缓存,诸如例如,1级(L1)内部高速缓存、或多个级别的内部高速缓存。在一些实施例中,系统可包括内部高速缓存及外部于核和/或处理器的外部高速缓存的组合。备选地,所有高速缓存可外部于核和/或处理器。
特定示范性有序核架构
图8A-B示出核将是芯片中若干逻辑块之一(包括相同类型和/或不同类型的其它核)的更特定示范性有序核架构的框图。逻辑块通过高带宽互连网络(例如,环网络)取决于应用而通信于一些固定的功能逻辑、存储器I/O接口、和另一必要I/O逻辑。
图8A是根据本发明的实施例的单个处理器核连同到管芯上互连网络802的它的连接并连同2级(L2)高速缓存804的它的本地子集的框图。在一个实施例中,指令解码器800支持带有打包的数据指令集扩展的x86指令集。L1高速缓存806允许低等待时间访问以将存储器高速缓存到标量和矢量单元中。虽然在一个实施例中(为简化设计),标量单元808和矢量单元810使用单独的寄存器集合(相应地,是标量寄存器812和矢量寄存器814),并且在它们之间所转移的数据被写到存储器并然后从1级(L1)高速缓存806读回,但本发明的备选实施例可使用不同手段(例如,使用单个寄存器集合或包括允许数据在所述两个寄存器堆之间被转移而不被写和读回的通信路径)。
L2高速缓存804的本地子集是全局L2高速缓存的部分,所述全局L2高速缓存被划分成单独的本地子集,每处理器核一个。每个处理器核具有到L2高速缓存804的它自己的本地子集的直接访问路径。由处理器核所读的数据被存储在其L2高速缓存子集804中并能被快速地访问,并行于其它处理器核访问它们自己的本地L2高速缓存子集。由处理器核所写的数据被存储在其自己的L2高速缓存子集804中并且如果必要则从其它子集中转储清除。环网络确保共享的数据的一致性。环网络是双向的以允许诸如处理器核、L2高速缓存、和其它逻辑块的代理在芯片内互相通信。在一些实施例中,每个环数据-路径每方向是1024-比特宽。
图8B是根据本发明的实施例的图8A中的处理器核的部分的扩展的视图。图8B包括L1高速缓存804的L1数据高速缓存806A部分,以及关于矢量单元810和矢量寄存器814的更多细节。具体地,矢量单元810是9宽矢量处理单元(VPU)(见16宽ALU 828),其运行整数、单精度浮动、和双精度浮动指令的一个或多个。VPU支持在存储器输入上通过打乱单元820来打乱寄存器输入、通过数值转换单元822A-B来进行数值转换、以及通过复制单元824来进行复制。
带有集成存储器控制器和图形的处理器
图9是根据本发明的实施例的可具有多于一个核、可具有集成存储器控制器、并可具有集成图形的处理器900的框图。图9中的实线框示出带有单个核902A、系统代理910、一个或多个总线控制器单元916的集合的处理器900,而虚线框的可选附加示出带有多个核902A-N、系统代理单元910中的一个或多个集成存储器控制器单元914的集合、和专用逻辑908的备选处理器900。
因此,处理器900的不同实现可包括:1)CPU,带有是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核)的专用逻辑908、以及是一个或多个通用核(例如,通用有序核、通用乱序核、所述两个核的组合)的核902A-N;2)带有是打算主要用于图形和/或科学(吞吐量)的大量的专用核的核902A-N的协同处理器;以及3)带有是大量的通用有序核的核902A-N的协同处理器。因此,处理器900可以是通用处理器、协同处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量许多集成核(MIC)协同处理器(包括30或更多核)、嵌入式处理器等等。处理器可被实现在一个或多个芯片上。使用多个处理技术的任何个(诸如例如,BiCMOS、CMOS、或NMOS),处理器900可被实现在一个或多个衬底上和/或是其部分。
存储器层级包括核904A-N内高速缓存的一个或多个级别、共享的高速缓存单元906的集合或一个或多个、和耦合到集成存储器控制器单元914的集合的外部存储器(未示出)。共享的高速缓存单元906的集合可包括一个或多个中级别高速缓存,诸如2级(L2)、3级(L3)、4级(L4)、或其它级别的高速缓存、最后级别高速缓存(LLC)、和/或其组合。虽然在一个实施例中,基于环的互连单元912将集成图形逻辑908、共享的高速缓存单元906的集合、以及系统代理单元910/集成存储器控制器单元914互连,但备选实施例可使用用于互连此类单元的任何数量的公知技术。在一个实施例中,一个或多个高速缓存单元906和核902A-N之间的一致性被维持。
在一些实施例中,核902A-N的一个或多个核有多线程的能力。系统代理910包括协调和操作核902A-N的那些组件。系统代理单元910可包括例如功率控制单元(PCU)和显示器单元。PCU可以是或包括为调节集成图形逻辑908和核902A-N的功率状态所需要的逻辑和组件。显示器单元用于驱动一个或多个外部连接的显示器。
核902A-N可关于架构指令集是同质或异质的;那就是说,核902A-N的两个或更多核可有运行相同指令集的能力,而其它的核可有运行不同指令集或那个指令集的仅子集的能力。
示范性计算机架构
图10-13是示范性计算机架构的框图。在对于膝上型计算机、桌上型计算机、手持型PC、个人数字助理、工程工作站、服务器、网络装置、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持装置、以及各种其它电子装置的领域中已知的其它系统设计和配置也是适合的。一般来说,能够合并如本文中所公开的处理器和/或其它运行逻辑的极多种的系统或电子装置一般是适合的。
现在参考图10,所示出的是根据本发明的一个实施例的系统1000的框图。系统1000可包括被耦合到控制器集线器1020的一个或多个处理器1010、1015。在一个实施例中,控制器集线器1020包括图形存储器控制器集线器(GMCH)1090和输入/输出集线器(IOH)1050(其可在单独的芯片上);GMCH 1090包括存储器1040和协同处理器1045被耦合到的存储器和图形控制器;IOH 1050将输入/输出(I/O)装置1060耦合到GMCH 1090。备选地,存储器和图形控制器之一或两者被集成在处理器(如本文中所描述的)内,存储器1040和协同处理器1045被直接耦合到处理器1010、和带有IOH 1050的单个芯片中的控制器集线器1020。
附加处理器1015的可选性质在图10中用断线来指代。每个处理器1010、1015可包括本文中所描述的处理核中的一个或多个,并可以是处理器900的某版本。
存储器1040可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)、或所述两个存储器的组合。对于至少一个实施例,控制器集线器1020经由诸如前侧总线(FSB)的多点总线、点对点接口、或类似连接1095来与处理器1010、1015通信。
在一个实施例中,协同处理器1045是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等。在一个实施例中,控制器集线器1020可包括集成图形加速器。
物理资源1010、10155之间关于包括架构上、微架构上、热、功率耗用特性、和诸如此类的指标的规格的谱能存在多种不同。
在一个实施例中,处理器1010运行控制一般类型的数据处理操作的指令。指令内所嵌入的可以是协同处理器指令。处理器1010将这些协同处理器指令识别为是应由附连的协同处理器1045来运行的类型。因此,处理器1010在协同处理器总线或其它互连上将这些协同处理器指令(或代表协同处理器指令的控制信号)发布到协同处理器1045。协同处理器1045接受并运行所接收的协同处理器指令。
现在参考图11,所示出的是根据本发明的实施例的第一更特定示范性系统1100的框图。如图11中所示出的,多处理器系统1100是点对点互连系统,并包括经由点对点互连1150所耦合的第一处理器1170和第二处理器1180。处理器1170和1180中的每个可以是处理器900的某版本。在本发明的一个实施例中,处理器1170和1180相应是处理器1010和1015,而协同处理器1138是协同处理器1045。在另一个实施例中,处理器1170和1180相应是处理器1010、协同处理器1045。
处理器1170和1180被示出相应包括集成存储器控制器(IMC)单元1172和1182。处理器1170还包括作为它的总线控制器单元的部分的点对点(P-P)接口1176和1178;类似地,第二处理器1180包括P-P接口1186和1188。使用P-P接口电路1178、1188,处理器1170、1180可经由点对点(P-P)接口1150来互换信息。如图11中所示出的,IMC 1172和1182将处理器耦合到相应存储器(就是存储器1132和存储器1134),其可以是本地附连到相应处理器的主存储器的部分。
使用点对点接口电路1176、1194、1186、1198,处理器1170、1180可各自经由各个P-P接口1152、1154与芯片集1190互换信息。芯片集1190可以可选地经由高性能接口1192与协同处理器1138互换信息。在一个实施例中,协同处理器1138是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等
共享的高速缓存(未示出)可被包括在任一处理器中或在两个处理器之外,又经由P-P互连与处理器连接,使得如果处理器被置于低功率模式中,则任一或两个处理器的本地高速缓存信息可被存储在共享的高速缓存中。
芯片集1190可经由接口1196来耦合到第一总线1116。在一个实施例中,第一总线1116可以是外围组件互连(PCI)总线、或诸如PCI高速总线或另一个I/O互连总线的总线,尽管本发明的范畴未被如此限制。
如图11中所示出的,各种I/O装置1114可连同总线桥818被耦合到第一总线1116,总线桥1118将第一总线1116耦合到第二总线1120。在一个实施例中,诸如协同处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列、或任何其它处理器的一个或多个附加处理器1115被耦合到第一总线1116。在一个实施例中,第二总线1120可以是低管脚计数(LPC)总线。各种装置可被耦合到第二总线1120,包括例如键盘和/或鼠标1122、通信装置1127和诸如硬盘驱动器或其它大容量存储装置的存储单元1128,其可包括指令/代码和数据1130(在一个实施例中)。进一步地,音频I/O1124可被耦合到第二总线1116。注意,其它架构是可能的。例如,替代图11的点对点架构,系统可实现多点总线或另一此类架构。
现在参考图12,所示出的是根据本发明的实施例的第二更特定示范性系统1200的框图。图11和12中的相似元件标有相似附图标记,并且图11的某些方面已从图12中被省略以便避免使图12的其它方面难以理解。
图12示出了处理器1170、1180可相应包括集成存储器以及I/O控制逻辑(“CL”)1272和1282。因此,CL 1272、1282包括集成存储器控制器单元并包括I/O控制逻辑。图12示出了不仅存储器1132、1134被耦合到CL 1272、1282,而且I/O装置1214也被耦合到控制逻辑1172、1182。遗留I/O装置1215被耦合到芯片集1190。
现在参考图13,所示出的是根据本发明的实施例的SoC 1300的框图。图9中的类似元件标有相似附图标记。同样,虚线框在更高级的SoC上是可选特征。在图13中,互连单元1302被耦合到:应用处理器1310,其包括一个或多个核132A-N的集合、高速缓存单元904A-N、和共享的高速缓存单元906;系统代理单元910;总线控制器单元916;集成存储器控制器单元914;协同处理器1320的集合或一个或多个,其可包括集成图形逻辑、图像处理器、音频处理器、以及视频处理器;静态随机存取存储器(SRAM)单元1330;直接存储器访问(DMA)单元1332;以及用于耦合到一个或多个外部显示器的显示器单元1340。在一个实施例中,协同处理器1320包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等等。
本文中所公开的机制的实施例可被实现在硬件、软件、固件、或此类实现手段的组合中。本发明的实施例可被实现为在可编程系统上运行的程序代码或计算机程序,所述可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置、和至少一个输出装置。
诸如图11中所示出的代码1130的程序代码可被应用于输入指令以执行本文中所描述的功能并生成输出信息。输出信息可以已知方式被应用于一个或多个输出装置。为了此应用的目的,处理系统包括具有处理器(诸如例如:数字信号处理器(DSP)、微控制器、应用特定集成电路(ASIC)、或微处理器)的任何系统。
程序代码可被实现在高等级规程上(procedural)或面向对象的编程语言中以与处理系统通信。如果期望的话,则程序代码可还被实现在汇编或机器语言中。事实上,本文中所描述的机制不限于对任何具体编程语言的范畴中。在任何情况中,语言可以是编译或解译的语言。
至少一个实施例的一个或多个方面可由存储在机器可读介质上的代表性指令来实现,所述代表性指令表示处理器内的各种逻辑,其当由机器来读时促使该机器制作用于执行本文中所描述的技术的逻辑。此类表示(已知为“IP核”)可被存储在有形的、机器可读介质上并被供应给各种客户或制造设施以加载到实际做出逻辑或处理器的制作机器。
此类机器可读存储介质可包括由机器或装置所制造或形成的物品(article)的非暂态、有形的布置而没有限制,包括存储介质(诸如硬盘、包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)、和磁光盘的任何其它类型的盘)、半导体装置(诸如只读存储器(ROM),诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)的随机存取存储器(RAM),可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)、磁或光卡、或适合于存储电子指令的任何其它类型的介质)。
因此,本发明的实施例还包括非暂态、有形的机器可读介质,所述介质含有指令或含有设计数据,诸如硬件描述语言(HDL),其定义本文中所描述的结构、电路、设备、处理器和/或系统特征。此类实施例可还被称为程序产品。
仿真(包括二进制转化、代码变形等)
在一些情况中,指令转换器可被用于将指令从源指令集转换成目标指令集。例如,指令转换器可转化(例如,使用静态二进制转化、包括动态编译的动态二进制转化)、变形、仿真、或以其它方式将指令转换成要由核来处理的一个或多个其它指令。指令转换器被实现在软件、硬件、固件、或其组合中。指令转换器可在处理器上、离开处理器、或部分在处理器上而部单独开处理器。
图14是框图,其对照根据本发明的实施例的使用软件指令转换器以将源指令集中的二进制指令转换成目标指令集中的二进制指令。在所示出的实施例中,指令转换器是软件指令转换器,尽管备选地指令转换器可被实现在软件、固件、硬件、或其各种组合中。图14示出使用第一编译器1404,用高等级语言1402的程序可被编译以生成第一二进制代码(例如x86)1406,其可由带有至少一个第一指令集核的处理器1416来原生运行。在一些实施例中,带有至少一个第一指令集核的处理器1416表示能如带有至少一个x86指令集核的Intel处理器一样大体上执行相同功能的任何处理器,这通过兼容地运行或以其它方式处理(1)Intel x86指令集核的指令集的实质部分,或(2)针对于在带有至少一个x86指令集核的Intel处理器上运行的应用或另一软件的对象(object)代码版本,以便取得大体上与带有至少一个x86指令集核的Intel处理器相同的结果。第一编译器1404表示可操作以生成第一指令集的二进制代码1406(例如,对象代码)的编译器,第一指令集的二进制代码1406能通过或不通过附加联接处理而在带有至少一个第一指令集核的处理器1416上被运行。类似地,图14示出了使用备选指令集编译器1408,用高等级语言1402的程序可被编译以生成备选指令集二进制代码1410,其可由不带有至少一个第一指令集核的处理器1414(例如,带有运行MIPS Technologies of Sunnyvale,CA的MIPS指令集和/或运行ARM Holdings ofSunnyvale,CA的ARM指令集的核的处理器)来原生运行。指令转换器1412被用于将第一二进制代码1406转换成可由不带有第一指令集核的处理器1414来原生运行的代码。此被转换的代码不可能与备选指令集二进制代码1410相同,因为能够这样做的指令转换器难以做出;然而,被转换的代码将完成一般操作并由来自备选指令集的指令构成。因此,指令转换器1412表示软件、固件、硬件、或其组合,其通过仿真、模拟或任何其它过程而允许不具有第一指令集处理器或核的处理器或另一电子装置运行第一二进制代码1406。
以下详述了各种实施例的示例。
示例1.一种处理器,包括:解码电路,所述解码电路用于解码具有用于操作码、打包数据源操作数标识符和打包数据目的地操作数标识符的字段的指令;以及执行电路,所述执行电路用于执行所解码的指令以将所标识的打包数据源操作数的最低有效打包数据元素位置的单精度浮点数据元素转换为定点表示、在所标识的打包数据目的地操作数的两个最低有效打包数据元素位置中将所述定点表示存储为32位整数在32位整数指数、以及对所标识的打包数据目的地操作数的所有剩余打包数据元素进行归零。
示例2.如示例1所述的处理器,其中所述整数分量被存储在所标识的打包数据目的地操作数的最低有效打包数据元素位置中。
示例3.如示例2所述的处理器,其中所述执行电路用于:将浮点值解构成符号、指数和小数分量;确定所述指数分量是否为0;当所述指数分量为0时,将所述定点整数和指数分量设置为零;当所述指数分量不为0时,确定所述指数分量是否全为一;当所述指数分量全为一时,确定所述小数分量的所述最高有效位是否为0;当所述小数分量的所述最高有效位为0时,确定所述符号是否为0;当所述符号为0时,将所述定点整数分量设置为对应于十六进制7fffffff的值,并将所述指数分量设置为对应于十六进制7fffffff的值;并且当所述符号不为0时,将所述定点整数分量设置为对应于十六进制8000000的值,并将所述指数分量设置为对应于十六进制7fffffff的值;当所述小数分量的所述最高有效位不为0时,将所述定点整数分量设置为h8000000,并将所述指数分量设置为h7fffffff;并且当所述指数分量不全为一或零时,将b000000001与所述小数并置连接以生成所述整数的绝对值;确定所述符号是否为0;并且当所述符号为0时,将所述整数分量设置为所述整数的所述绝对值;并且当所述符号不为0时,将所述整数分量设置为所述整数的所述绝对值加1的补码;并且通过将b0与添加到b101101010的所述指数并置连接来生成临时值,通过将所述临时值的所述最高有效位的23个副本与所述临时值并置连接来生成所述指数分量;以及存储所述整数和指数分量。
示例4.如示例1所述的处理器,其中所述指数分量被存储在所标识的打包数据目的地操作数的最低有效打包数据元素位置中。
示例5.如示例4所述的处理器,其中所述执行电路用于:将浮点值解构成符号、指数和小数分量;确定所述指数分量是否为0;当所述指数分量为0时,将所述定点整数和指数分量设置为零;当所述指数分量不为0时,确定所述指数分量是否全为一;当所述指数分量全为一时,确定所述小数分量的所述最高有效位是否为0;当所述小数分量的所述最高有效位为0时,确定所述符号是否为0;当所述符号为0时,将所述定点整数分量设置为对应于十六进制7fffffff的值,并将所述指数分量设置为对应于十六进制7fffffff的值;并且当所述符号不为0时,将所述定点整数分量设置为对应于十六进制8000000的值,并将所述指数分量设置为对应于十六进制7fffffff的值;当所述小数分量的所述最高有效位不为0时,将所述定点整数分量设置为h8000000,并将所述指数分量设置为h7fffffff;并且当所述指数分量不全为一或零时,将b000000001与所述小数并置连接以生成所述整数的绝对值;确定所述符号是否为0;并且当所述符号为0时,将所述整数分量设置为所述整数的所述绝对值;并且当所述符号不为0时,将所述整数分量设置为所述整数的所述绝对值加1的补码;并且通过将b0与添加到b101101010的所述指数并置连接来生成临时值,通过将所述临时值的所述最高有效位的23个副本与所述临时值并置连接来生成所述指数分量;以及存储所述整数和指数分量。
示例6.一种方法,包括:解码具有用于操作码、打包数据源操作数标识符和打包数据目的地操作数标识符的字段的指令;以及执行所解码的指令以将所标识的打包数据源操作数的最低有效打包数据元素位置的单精度浮点数据元素转换为定点表示、在所标识的打包数据目的地操作数的两个最低有效打包数据元素位置中将所述定点表示存储为32位整数在32位整数指数、以及对所标识的打包数据目的地操作数的所有剩余打包数据元素进行归零。
示例7. 如示例6所述的方法,其中所述整数分量被存储在所标识的打包数据目的地操作数的最低有效打包数据元素位置中。
示例8.如示例7所述的方法,其中所述执行进一步包括:将浮点值解构成符号、指数和小数分量;确定所述指数分量是否为0;当所述指数分量为0时,将所述定点整数和指数分量设置为零;当所述指数分量不为0时,确定所述指数分量是否全为一;当所述指数分量全为一时,确定所述小数分量的所述最高有效位是否为0;当所述小数分量的所述最高有效位为0时,确定所述符号是否为0;当所述符号为0时,将所述定点整数分量设置为对应于十六进制7fffffff的值,并将所述指数分量设置为对应于十六进制7fffffff的值;以及当所述符号不为0时,将所述定点整数分量设置为对应于十六进制8000000的值,并将所述指数分量设置为对应于十六进制7fffffff的值;当所述小数分量的所述最高有效位不为0时,将所述定点整数分量设置为h8000000,并将所述指数分量设置为h7fffffff;以及当所述指数分量不全为一或零时,将b000000001与所述小数并置连接以生成所述整数的绝对值;确定所述符号是否为0并且当所述符号为0时,将所述整数分量设置为所述整数的所述绝对值;以及当所述符号不为0时,将所述整数分量设置为所述整数的所述绝对值加1的补码;以及通过将b0与添加到b101101010的所述指数并置连接来生成临时值,通过将所述临时值的所述最高有效位的23个副本与所述临时值并置连接来生成所述指数分量;以及存储所述整数和指数分量。
示例9.如示例6所述的方法,其中所述指数分量被存储在所标识的打包数据目的地操作数的最低有效打包数据元素位置中。
示例10.如示例9所述的方法,其中所述执行进一步包括:将浮点值解构成符号、指数和小数分量;确定所述指数分量是否为0;当所述指数分量为0时,将所述定点整数和指数分量设置为零;当所述指数分量不为0时,确定所述指数分量是否全为一;当所述指数分量全为一时,确定所述小数分量的所述最高有效位是否为0;当所述小数分量的所述最高有效位为0时,确定所述符号是否为0;当所述符号为0时,将所述定点整数分量设置为对应于十六进制7fffffff的值,并将所述指数分量设置为对应于十六进制7fffffff的值;以及当所述符号不为0时,将所述定点整数分量设置为对应于十六进制8000000的值,并将所述指数分量设置为对应于十六进制7fffffff的值;当所述小数分量的所述最高有效位不为0时,将所述定点整数分量设置为h8000000,并将所述指数分量设置为h7fffffff;以及当所述指数分量不全为一或零时,将b000000001与所述小数并置连接以生成所述整数的绝对值;确定所述符号是否为0并且当所述符号为0时,将所述整数分量设置为所述整数的所述绝对值;以及当所述符号不为0时,将所述整数分量设置为所述整数的所述绝对值加1的补码;以及通过将b0与添加到b101101010的所述指数并置连接来生成临时值,通过将所述临时值的所述最高有效位的23个副本与所述临时值并置连接来生成所述指数分量;以及存储所述整数和指数分量。
示例11.一种非暂态机器可读介质,所述非暂态机器可读介质存储指令,其中响应于所述指令,所述处理器用于执行方法,所述方法包括:解码具有用于操作码、打包数据源操作数标识符和打包数据目的地操作数标识符的字段的指令;以及执行所解码的指令以将所标识的打包数据源操作数的最低有效打包数据元素位置的单精度浮点数据元素转换为定点表示、在所标识的打包数据目的地操作数的两个最低有效打包数据元素位置中将所述定点表示存储为32位整数在32位整数指数、以及对所标识的打包数据目的地操作数的所有剩余打包数据元素进行归零。
示例12.如示例11所述的非暂态机器可读介质,其中所述整数分量被存储在所标识的打包数据目的地操作数的最低有效打包数据元素位置中。
示例13.如示例12所述的非暂态机器可读介质,其中所述执行进一步包括:将浮点值解构成符号、指数和小数分量;确定所述指数分量是否为0;当所述指数分量为0时,将所述定点整数和指数分量设置为零;当所述指数分量不为0时,确定所述指数分量是否全为一;当所述指数分量全为一时,确定所述小数分量的所述最高有效位是否为0;当所述小数分量的所述最高有效位为0时,确定所述符号是否为0;当所述符号为0时,将所述定点整数分量设置为对应于十六进制7fffffff的值,并将所述指数分量设置为对应于十六进制7fffffff的值;以及当所述符号不为0时,将所述定点整数分量设置为对应于十六进制8000000的值,并将所述指数分量设置为对应于十六进制7fffffff的值;当所述小数分量的所述最高有效位不为0时,将所述定点整数分量设置为h8000000,并将所述指数分量设置为h7fffffff;以及当所述指数分量不全为一或零时,将b000000001与所述小数并置连接以生成所述整数的绝对值;确定所述符号是否为0并且当所述符号为0时,将所述整数分量设置为所述整数的所述绝对值;以及当所述符号不为0时,将所述整数分量设置为所述整数的所述绝对值加1的补码;以及通过将b0与添加到b101101010的所述指数并置连接来生成临时值,通过将所述临时值的所述最高有效位的23个副本与所述临时值并置连接来生成所述指数分量;以及存储所述整数和指数分量。
示例16.一种处理器,包括:解码部件,所述解码部件用于解码具有用于操作码、打包数据源操作数标识符和打包数据目的地操作数标识符的字段的指令;以及执行部件,所述执行部件用于执行所解码的指令以将所标识的打包数据源操作数的最低有效打包数据元素位置的单精度浮点数据元素转换为定点表示、在所标识的打包数据目的地操作数的两个最低有效打包数据元素位置中将所述定点表示存储为32位整数在32位整数指数、以及对所标识的打包数据目的地操作数的所有剩余打包数据元素进行归零。
示例17.如示例16所述的设备,其中所述整数分量被存储在所标识的打包数据目的地操作数的最低有效打包数据元素位置中。
示例18.如示例17所述的设备,其中所述执行部件用于:将浮点值解构成符号、指数和小数分量;确定所述指数分量是否为0;当所述指数分量为0时,将所述定点整数和指数分量设置为零;当所述指数分量不为0时,确定所述指数分量是否全为一;当所述指数分量全为一时,确定所述小数分量的所述最高有效位是否为0;当所述小数分量的所述最高有效位为0时,确定所述符号是否为0;当所述符号为0时,将所述定点整数分量设置为对应于十六进制7fffffff的值,并将所述指数分量设置为对应于十六进制7fffffff的值;以及当所述符号不为0时,将所述定点整数分量设置为对应于十六进制8000000的值,并将所述指数分量设置为对应于十六进制7fffffff的值;当所述小数分量的所述最高有效位不为0时,将所述定点整数分量设置为h8000000,并将所述指数分量设置为h7fffffff;以及当所述指数分量不全为一或零时,将b000000001与所述小数并置连接以生成所述整数的绝对值;确定所述符号是否为0并且当所述符号为0时,将所述整数分量设置为所述整数的所述绝对值;以及当所述符号不为0时,将所述整数分量设置为所述整数的所述绝对值加1的补码;以及通过将b0与添加到b101101010的所述指数并置连接来生成临时值,通过将所述临时值的所述最高有效位的23个副本与所述临时值并置连接来生成所述指数分量;以及存储所述整数和指数分量。
示例19.如示例16所述的设备,其中所述指数分量被存储在所标识的打包数据目的地操作数的最低有效打包数据元素位置中。
示例20.如示例19所述的设备,其中所述执行部件用于:将浮点值解构成符号、指数和小数分量;确定所述指数分量是否为0;当所述指数分量为0时,将所述定点整数和指数分量设置为零;当所述指数分量不为0时,确定所述指数分量是否全为一;当所述指数分量全为一时,确定所述小数分量的所述最高有效位是否为0;当所述小数分量的所述最高有效位为0时,确定所述符号是否为0;当所述符号为0时,将所述定点整数分量设置为对应于十六进制7fffffff的值,并将所述指数分量设置为对应于十六进制7fffffff的值;以及当所述符号不为0时,将所述定点整数分量设置为对应于十六进制8000000的值,并将所述指数分量设置为对应于十六进制7fffffff的值;当所述小数分量的所述最高有效位不为0时,将所述定点整数分量设置为h8000000,并将所述指数分量设置为h7fffffff;以及当所述指数分量不全为一或零时,将b000000001与所述小数并置连接以生成所述整数的绝对值;确定所述符号是否为0并且当所述符号为0时,将所述整数分量设置为所述整数的所述绝对值;以及当所述符号不为0时,将所述整数分量设置为所述整数的所述绝对值加1的补码;以及通过将b0与添加到b101101010的所述指数并置连接来生成临时值,通过将所述临时值的所述最高有效位的23个副本与所述临时值并置连接来生成所述指数分量;以及存储所述整数和指数分量。
Claims (20)
1. 一种处理器,包括:
解码电路,所述解码电路用于解码具有用于操作码、打包数据源操作数标识符和打包数据目的地操作数标识符的字段的指令;以及
用于执行所解码的指令的执行电路,所述执行电路用于执行所解码的指令以将所标识的打包数据源操作数的最低有效打包数据元素位置的单精度浮点数据元素转换为定点表示、在所标识的打包数据目的地操作数的两个最低有效打包数据元素位置中将所述定点表示存储为32位整数在32位整数指数、以及对所标识的打包数据目的地操作数的所有剩余打包数据元素进行归零。
2.如权利要求1所述的处理器,其中所述整数分量被存储在所标识的打包数据目的地操作数的最低有效打包数据元素位置中。
3.如权利要求2所述的处理器,其中所述执行电路用于:
将浮点值解构成符号、指数和小数分量;
确定所述指数分量是否为0;
当所述指数分量为0时,将所述定点整数和指数分量设置为零;
当所述指数分量不为0时,确定所述指数分量是否全为一;
当所述指数分量全为一时,
确定所述小数分量的所述最高有效位是否为0;
当所述小数分量的所述最高有效位为0时,确定所述符号是否为0;
当所述符号为0时,将所述定点整数分量设置为对应于十六进制7fffffff的值,并将所述指数分量设置为对应于十六进制7fffffff的值;以及
当所述符号不为0时,将所述定点整数分量设置为对应于十六进制8000000的值,并将所述指数分量设置为对应于十六进制7fffffff的值;
当所述小数分量的所述最高有效位不为0时,将所述定点整数分量设置为h8000000,并将所述指数分量设置为h7fffffff;以及
当所述指数分量不全为一或零时,
将b000000001与所述小数并置连接以生成所述整数的绝对值;
确定所述符号是否为0;
并且当所述符号为0时,将所述整数分量设置为所述整数的所述绝对值;以及
当所述符号不为0时,将所述整数分量设置为所述整数的所述绝对值加1的补码;以及
通过将b0与添加到b101101010的所述指数并置连接来生成临时值,通过将所述临时值的所述最高有效位的23个副本与所述临时值并置连接来生成所述指数分量;以及
存储所述整数和指数分量。
4.如权利要求1所述的处理器,其中所述指数分量被存储在所标识的打包数据目的地操作数的最低有效打包数据元素位置中。
5.如权利要求4所述的处理器,其中所述执行电路用于:
将浮点值解构成符号、指数和小数分量;
确定所述指数分量是否为0;
当所述指数分量为0时,将所述定点整数和指数分量设置为零;
当所述指数分量不为0时,确定所述指数分量是否全为一;
当所述指数分量全为一时,
确定所述小数分量的所述最高有效位是否为0;
当所述小数分量的所述最高有效位为0时,确定所述符号是否为0;
当所述符号为0时,将所述定点整数分量设置为对应于十六进制7fffffff的值,并将所述指数分量设置为对应于十六进制7fffffff的值;以及
当所述符号不为0时,将所述定点整数分量设置为对应于十六进制8000000的值,并将所述指数分量设置为对应于十六进制7fffffff的值;
当所述小数分量的所述最高有效位不为0时,将所述定点整数分量设置为h8000000,并将所述指数分量设置为h7fffffff;以及
当所述指数分量不全为一或零时,
将b000000001与所述小数并置连接以生成所述整数的绝对值;
确定所述符号是否为0;
并且当所述符号为0时,将所述整数分量设置为所述整数的所述绝对值;以及
当所述符号不为0时,将所述整数分量设置为所述整数的所述绝对值加1的补码;以及
通过将b0与添加到b101101010的所述指数并置连接来生成临时值,通过将所述临时值的所述最高有效位的23个副本与所述临时值并置连接来生成所述指数分量;以及
存储所述整数和指数分量。
6. 一种方法,包括:
解码具有用于操作码、打包数据源操作数标识符和打包数据目的地操作数标识符的字段的指令;以及
执行所解码的指令以执行所解码的指令将所标识的打包数据源操作数的最低有效打包数据元素位置的单精度浮点数据元素转换为定点表示、在所标识的打包数据目的地操作数的两个最低有效打包数据元素位置中将所述定点表示存储为32位整数在32位整数指数、以及对所标识的打包数据目的地操作数的所有剩余打包数据元素进行归零。
7.如权利要求6所述的方法,其中所述整数分量被存储在所标识的打包数据目的地操作数的最低有效打包数据元素位置中。
8.如权利要求7所述的方法,其中所述执行进一步包括:
将浮点值解构成符号、指数和小数分量;
确定所述指数分量是否为0;
当所述指数分量为0时,将所述定点整数和指数分量设置为零;
当所述指数分量不为0时,确定所述指数分量是否全为一;
当所述指数分量全为一时,
确定所述小数分量的所述最高有效位是否为0;
当所述小数分量的所述最高有效位为0时,确定所述符号是否为0;
当所述符号为0时,将所述定点整数分量设置为对应于十六进制7fffffff的值,并将所述指数分量设置为对应于十六进制7fffffff的值;以及
当所述符号不为0时,将所述定点整数分量设置为对应于十六进制8000000的值,并将所述指数分量设置为对应于十六进制7fffffff的值;
当所述小数分量的所述最高有效位不为0时,将所述定点整数分量设置为h8000000,并将所述指数分量设置为h7fffffff;以及
当所述指数分量不全为一或零时,
将b000000001与所述小数并置连接以生成所述整数的绝对值;
确定所述符号是否为0;
并且当所述符号为0时,将所述整数分量设置为所述整数的所述绝对值;以及
当所述符号不为0时,将所述整数分量设置为所述整数的所述绝对值加1的补码;以及
通过将b0与添加到b101101010的所述指数并置连接来生成临时值,通过将所述临时值的所述最高有效位的23个副本与所述临时值并置连接来生成所述指数分量;以及
存储所述整数和指数分量。
9.如权利要求6所述的方法,其中所述指数分量被存储在所标识的打包数据目的地操作数的最低有效打包数据元素位置中。
10.如权利要求9所述的方法,其中所述执行进一步包括:
将浮点值解构成符号、指数和小数分量;
确定所述指数分量是否为0;
当所述指数分量为0时,将所述定点整数和指数分量设置为零;
当所述指数分量不为0时,确定所述指数分量是否全为一;
当所述指数分量全为一时,
确定所述小数分量的所述最高有效位是否为0;
当所述小数分量的所述最高有效位为0时,确定所述符号是否为0;
当所述符号为0时,将所述定点整数分量设置为对应于十六进制7fffffff的值,并将所述指数分量设置为对应于十六进制7fffffff的值;以及
当所述符号不为0时,将所述定点整数分量设置为对应于十六进制8000000的值,并将所述指数分量设置为对应于十六进制7fffffff的值;
当所述小数分量的所述最高有效位不为0时,将所述定点整数分量设置为h8000000,并将所述指数分量设置为h7fffffff;以及
当所述指数分量不全为一或零时,
将b000000001与所述小数并置连接以生成所述整数的绝对值;
确定所述符号是否为0;
并且当所述符号为0时,将所述整数分量设置为所述整数的所述绝对值;以及
当所述符号不为0时,将所述整数分量设置为所述整数的所述绝对值加1的补码;以及
通过将b0与添加到b101101010的所述指数并置连接来生成临时值,通过将所述临时值的所述最高有效位的23个副本与所述临时值并置连接来生成所述指数分量;以及
存储所述整数和指数分量。
11. 一种非暂态机器可读介质,所述非暂态机器可读介质存储指令,其中响应于所述指令,所述处理器用于执行方法,所述方法包括:
解码具有用于操作码、打包数据源操作数标识符和打包数据目的地操作数标识符的字段的指令;以及
执行所解码的指令以执行所解码的指令将所标识的打包数据源操作数的最低有效打包数据元素位置的单精度浮点数据元素转换为定点表示、在所标识的打包数据目的地操作数的两个最低有效打包数据元素位置中将所述定点表示存储为32位整数在32位整数指数、以及对所标识的打包数据目的地操作数的所有剩余打包数据元素进行归零。
12.如权利要求11所述的非暂态机器可读介质,其中所述整数分量被存储在所标识的打包数据目的地操作数的最低有效打包数据元素位置中。
13.如权利要求12所述的非暂态机器可读介质,其中所述执行进一步包括:
将浮点值解构成符号、指数和小数分量;
确定所述指数分量是否为0;
当所述指数分量为0时,将所述定点整数和指数分量设置为零;
当所述指数分量不为0时,确定所述指数分量是否全为一;
当所述指数分量全为一时,
确定所述小数分量的所述最高有效位是否为0;
当所述小数分量的所述最高有效位为0时,确定所述符号是否为0;
当所述符号为0时,将所述定点整数分量设置为对应于十六进制7fffffff的值,并将所述指数分量设置为对应于十六进制7fffffff的值;以及
当所述符号不为0时,将所述定点整数分量设置为对应于十六进制8000000的值,并将所述指数分量设置为对应于十六进制7fffffff的值;
当所述小数分量的所述最高有效位不为0时,将所述定点整数分量设置为h8000000,并将所述指数分量设置为h7fffffff;以及
当所述指数分量不全为一或零时,
将b000000001与所述小数并置连接以生成所述整数的绝对值;
确定所述符号是否为0;
并且当所述符号为0时,将所述整数分量设置为所述整数的所述绝对值;以及
当所述符号不为0时,将所述整数分量设置为所述整数的所述绝对值加1的补码;以及
通过将b0与添加到b101101010的所述指数并置连接来生成临时值,通过将所述临时值的所述最高有效位的23个副本与所述临时值并置连接来生成所述指数分量;以及
存储所述整数和指数分量。
14.如权利要求11所述的非暂态机器可读介质,其中所述指数分量被存储在所标识的打包数据目的地操作数的最低有效打包数据元素位置中。
15.如权利要求14所述的非暂态机器可读介质,其中所述执行进一步包括:
将浮点值解构成符号、指数和小数分量;
确定所述指数分量是否为0;
当所述指数分量为0时,将所述定点整数和指数分量设置为零;
当所述指数分量不为0时,确定所述指数分量是否全为一;
当所述指数分量全为一时,
确定所述小数分量的所述最高有效位是否为0;
当所述小数分量的所述最高有效位为0时,确定所述符号是否为0;
当所述符号为0时,将所述定点整数分量设置为对应于十六进制7fffffff的值,并将所述指数分量设置为对应于十六进制7fffffff的值;以及
当所述符号不为0时,将所述定点整数分量设置为对应于十六进制8000000的值,并将所述指数分量设置为对应于十六进制7fffffff的值;
当所述小数分量的所述最高有效位不为0时,将所述定点整数分量设置为h8000000,并将所述指数分量设置为h7fffffff;以及
当所述指数分量不全为一或零时,
将b000000001与所述小数并置连接以生成所述整数的绝对值;
确定所述符号是否为0;
并且当所述符号为0时,将所述整数分量设置为所述整数的所述绝对值;以及
当所述符号不为0时,将所述整数分量设置为所述整数的所述绝对值加1的补码;以及
通过将b0与添加到b101101010的所述指数并置连接来生成临时值,通过将所述临时值的所述最高有效位的23个副本与所述临时值并置连接来生成所述指数分量;以及
存储所述整数和指数分量。
16. 一种处理器,包括:
解码部件,所述解码部件用于解码具有用于操作码、打包数据源操作数标识符和打包数据目的地操作数标识符的字段的指令;以及
用于执行所解码的指令的执行部件,所述执行部件用于执行所解码的指令以将所标识的打包数据源操作数的最低有效打包数据元素位置的单精度浮点数据元素转换为定点表示、在所标识的打包数据目的地操作数的两个最低有效打包数据元素位置中将所述定点表示存储为32位整数在32位整数指数、以及对所标识的打包数据目的地操作数的所有剩余打包数据元素进行归零。
17.如权利要求16所述的设备,其中所述整数分量被存储在所标识的打包数据目的地操作数的最低有效打包数据元素位置中。
18.如权利要求17所述的设备,其中所述执行部件用于:
将浮点值解构成符号、指数和小数分量;
确定所述指数分量是否为0;
当所述指数分量为0时,将所述定点整数和指数分量设置为零;
当所述指数分量不为0时,确定所述指数分量是否全为一;
当所述指数分量全为一时,
确定所述小数分量的所述最高有效位是否为0;
当所述小数分量的所述最高有效位为0时,确定所述符号是否为0;
当所述符号为0时,将所述定点整数分量设置为对应于十六进制7fffffff的值,并将所述指数分量设置为对应于十六进制7fffffff的值;以及
当所述符号不为0时,将所述定点整数分量设置为对应于十六进制8000000的值,并将所述指数分量设置为对应于十六进制7fffffff的值;
当所述小数分量的所述最高有效位不为0时,将所述定点整数分量设置为h8000000,并将所述指数分量设置为h7fffffff;以及
当所述指数分量不全为一或零时,
将b000000001与所述小数并置连接以生成所述整数的绝对值;
确定所述符号是否为0;
并且当所述符号为0时,将所述整数分量设置为所述整数的所述绝对值;以及
当所述符号不为0时,将所述整数分量设置为所述整数的所述绝对值加1的补码;以及
通过将b0与添加到b101101010的所述指数并置连接来生成临时值,通过将所述临时值的所述最高有效位的23个副本与所述临时值并置连接来生成所述指数分量;以及
存储所述整数和指数分量。
19.如权利要求16所述的设备,其中所述指数分量被存储在所标识的打包数据目的地操作数的最低有效打包数据元素位置中。
20.如权利要求19所述的设备,其中所述执行部件用于:
将浮点值解构成符号、指数和小数分量;
确定所述指数分量是否为0;
当所述指数分量为0时,将所述定点整数和指数分量设置为零;
当所述指数分量不为0时,确定所述指数分量是否全为一;
当所述指数分量全为一时,
确定所述小数分量的所述最高有效位是否为0;
当所述小数分量的所述最高有效位为0时,确定所述符号是否为0;
当所述符号为0时,将所述定点整数分量设置为对应于十六进制7fffffff的值,并将所述指数分量设置为对应于十六进制7fffffff的值;以及
当所述符号不为0时,将所述定点整数分量设置为对应于十六进制8000000的值,并将所述指数分量设置为对应于十六进制7fffffff的值;
当所述小数分量的所述最高有效位不为0时,将所述定点整数分量设置为h8000000,并将所述指数分量设置为h7fffffff;以及
当所述指数分量不全为一或零时,
将b000000001与所述小数并置连接以生成所述整数的绝对值;
确定所述符号是否为0;
并且当所述符号为0时,将所述整数分量设置为所述整数的所述绝对值;以及
当所述符号不为0时,将所述整数分量设置为所述整数的所述绝对值加1的补码;以及
通过将b0与添加到b101101010的所述指数并置连接来生成临时值,通过将所述临时值的所述最高有效位的23个副本与所述临时值并置连接来生成所述指数分量;以及
存储所述整数和指数分量。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/721,573 US10224954B1 (en) | 2017-09-29 | 2017-09-29 | Floating point to fixed point conversion |
US15/721573 | 2017-09-29 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109614076A true CN109614076A (zh) | 2019-04-12 |
Family
ID=65495978
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811131818.1A Pending CN109614076A (zh) | 2017-09-29 | 2018-09-27 | 浮点到定点转换 |
Country Status (3)
Country | Link |
---|---|
US (2) | US10224954B1 (zh) |
CN (1) | CN109614076A (zh) |
DE (1) | DE102018005977A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI792928B (zh) * | 2021-02-26 | 2023-02-11 | 美商萬國商業機器公司 | 用於十進位制縮放及轉換並拆分為十六進位制浮點指令之電腦程式產品、電腦系統及方法 |
US11663004B2 (en) | 2021-02-26 | 2023-05-30 | International Business Machines Corporation | Vector convert hexadecimal floating point to scaled decimal instruction |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11437032B2 (en) | 2017-09-29 | 2022-09-06 | Shanghai Cambricon Information Technology Co., Ltd | Image processing apparatus and method |
US10224954B1 (en) * | 2017-09-29 | 2019-03-05 | Intel Corporation | Floating point to fixed point conversion |
US10223114B1 (en) * | 2017-09-29 | 2019-03-05 | Intel Corporation | Fixed point to floating point conversion |
US11630666B2 (en) | 2018-02-13 | 2023-04-18 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
EP3651078B1 (en) | 2018-02-13 | 2021-10-27 | Shanghai Cambricon Information Technology Co., Ltd | Computation device and method |
US11397579B2 (en) | 2018-02-13 | 2022-07-26 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
CN116991225A (zh) | 2018-02-14 | 2023-11-03 | 上海寒武纪信息科技有限公司 | 处理器的控制装置、方法及设备 |
EP3624020A4 (en) | 2018-05-18 | 2021-05-05 | Shanghai Cambricon Information Technology Co., Ltd | CALCULATION PROCEDURES AND RELATED PRODUCTS |
KR102470893B1 (ko) | 2018-06-27 | 2022-11-25 | 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 | 온 칩 코드의 브레이크 포인트에 의한 디버그 방법, 온 칩 프로세서 및 브레이크 포인트에 의한 칩 디버그 시스템 |
KR102519467B1 (ko) | 2018-08-28 | 2023-04-06 | 캠브리콘 테크놀로지스 코퍼레이션 리미티드 | 데이터 전처리 방법, 장치, 컴퓨터 설비 및 저장 매체 |
WO2020062392A1 (zh) | 2018-09-28 | 2020-04-02 | 上海寒武纪信息科技有限公司 | 信号处理装置、信号处理方法及相关产品 |
CN111383637A (zh) | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 信号处理装置、信号处理方法及相关产品 |
US11847554B2 (en) | 2019-04-18 | 2023-12-19 | Cambricon Technologies Corporation Limited | Data processing method and related products |
CN111832737B (zh) | 2019-04-18 | 2024-01-09 | 中科寒武纪科技股份有限公司 | 一种数据处理方法及相关产品 |
CN112085185B (zh) | 2019-06-12 | 2024-04-02 | 上海寒武纪信息科技有限公司 | 量化参数调整方法、装置及相关产品 |
US11676028B2 (en) | 2019-06-12 | 2023-06-13 | Shanghai Cambricon Information Technology Co., Ltd | Neural network quantization parameter determination method and related products |
CN112395004A (zh) * | 2019-08-14 | 2021-02-23 | 上海寒武纪信息科技有限公司 | 运算方法、系统及相关产品 |
US11294672B2 (en) | 2019-08-22 | 2022-04-05 | Apple Inc. | Routing circuitry for permutation of single-instruction multiple-data operands |
US11256518B2 (en) | 2019-10-09 | 2022-02-22 | Apple Inc. | Datapath circuitry for math operations using SIMD pipelines |
US11126439B2 (en) * | 2019-11-15 | 2021-09-21 | Apple Inc. | SIMD operand permutation with selection from among multiple registers |
CN111008230B (zh) * | 2019-11-22 | 2023-08-04 | 远景智能国际私人投资有限公司 | 数据存储方法、装置、计算机设备及存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4805128A (en) * | 1985-11-22 | 1989-02-14 | Geophysical Service Inc. | Format conversion system |
US5561615A (en) * | 1994-12-02 | 1996-10-01 | Hewlett-Packard Company | Method and apparatus for floating point to fixed point conversion with compensation for lost precision |
US6282554B1 (en) * | 1998-04-30 | 2001-08-28 | Intel Corporation | Method and apparatus for floating point operations and format conversion operations |
US7236995B2 (en) * | 2002-12-27 | 2007-06-26 | Arm Limited | Data processing apparatus and method for converting a number between fixed-point and floating-point representations |
US9104399B2 (en) * | 2009-12-23 | 2015-08-11 | International Business Machines Corporation | Dual issuing of complex instruction set instructions |
US9264066B2 (en) * | 2013-07-30 | 2016-02-16 | Apple Inc. | Type conversion using floating-point unit |
US10019231B2 (en) * | 2016-08-22 | 2018-07-10 | Arm Limited | Apparatus and method for fixed point to floating point conversion and negative power of two detector |
US10216479B2 (en) * | 2016-12-06 | 2019-02-26 | Arm Limited | Apparatus and method for performing arithmetic operations to accumulate floating-point numbers |
US10224954B1 (en) * | 2017-09-29 | 2019-03-05 | Intel Corporation | Floating point to fixed point conversion |
US10223114B1 (en) * | 2017-09-29 | 2019-03-05 | Intel Corporation | Fixed point to floating point conversion |
-
2017
- 2017-09-29 US US15/721,573 patent/US10224954B1/en not_active Expired - Fee Related
-
2018
- 2018-07-27 DE DE102018005977.5A patent/DE102018005977A1/de active Pending
- 2018-09-27 CN CN201811131818.1A patent/CN109614076A/zh active Pending
-
2019
- 2019-03-04 US US16/291,231 patent/US10763891B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI792928B (zh) * | 2021-02-26 | 2023-02-11 | 美商萬國商業機器公司 | 用於十進位制縮放及轉換並拆分為十六進位制浮點指令之電腦程式產品、電腦系統及方法 |
US11663004B2 (en) | 2021-02-26 | 2023-05-30 | International Business Machines Corporation | Vector convert hexadecimal floating point to scaled decimal instruction |
Also Published As
Publication number | Publication date |
---|---|
US10224954B1 (en) | 2019-03-05 |
US10763891B2 (en) | 2020-09-01 |
DE102018005977A1 (de) | 2019-04-04 |
US20190199370A1 (en) | 2019-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109614076A (zh) | 浮点到定点转换 | |
US10656942B2 (en) | Fixed point to floating point conversion | |
CN104813277B (zh) | 用于处理器的功率效率的向量掩码驱动时钟门控 | |
CN103562854B (zh) | 用于对齐寄存器的系统、装置和方法 | |
CN104011647B (zh) | 浮点舍入处理器、方法、系统和指令 | |
CN104049954B (zh) | 多数据元素与多数据元素比较处理器、方法、系统和指令 | |
CN104011663B (zh) | 掩码寄存器上的广播操作 | |
CN104011650B (zh) | 使用输入写掩码和立即数从源写掩码寄存器在目的地写掩码寄存器中设置输出掩码的系统、装置和方法 | |
CN104011665B (zh) | 超级乘加(超级madd)指令 | |
CN109313549A (zh) | 用于向量的元素排序的装置、方法和系统 | |
CN108292224A (zh) | 用于聚合收集和跨步的系统、设备和方法 | |
CN107092465A (zh) | 用于提供向量混合和置换功能的指令和逻辑 | |
CN110457067A (zh) | 利用弹性浮点数的系统、方法和设备 | |
CN107003846A (zh) | 用于向量索引加载和存储的方法和装置 | |
TWI486872B (zh) | 向量緊縮壓縮及重複之實施系統、設備和方法 | |
CN109582283A (zh) | 位矩阵乘法 | |
CN108196823A (zh) | 用于执行双块绝对差求和的系统、装置和方法 | |
CN109196467A (zh) | 将源封包数据划分为通路的处理器、方法、系统和指令 | |
CN109313553A (zh) | 用于跨步加载的系统、装置和方法 | |
CN108701028A (zh) | 用于执行用于置换掩码的指令的系统和方法 | |
CN108268244A (zh) | 用于算术递归的系统、装置和方法 | |
CN108780394A (zh) | 用于转换编码格式的硬件装置和方法 | |
CN110321165A (zh) | 复数向量融合乘加和复数向量乘法的高效实现 | |
CN109582282A (zh) | 用于向量紧缩有符号值的乘法和累加的系统、装置和方法 | |
CN107003847A (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 |