CN1165838C - 用于在寄存器文件中存储分组操作数的方法和处理器 - Google Patents

用于在寄存器文件中存储分组操作数的方法和处理器 Download PDF

Info

Publication number
CN1165838C
CN1165838C CNB998163120A CN99816312A CN1165838C CN 1165838 C CN1165838 C CN 1165838C CN B998163120 A CNB998163120 A CN B998163120A CN 99816312 A CN99816312 A CN 99816312A CN 1165838 C CN1165838 C CN 1165838C
Authority
CN
China
Prior art keywords
operand
component
operation number
component level
register file
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.)
Expired - Fee Related
Application number
CNB998163120A
Other languages
English (en)
Other versions
CN1335957A (zh
Inventor
S・马金尼
S·马金尼
范�
S·基姆恩
多施
G·B·多施
戈利维
R·A·戈利维
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 CN1335957A publication Critical patent/CN1335957A/zh
Application granted granted Critical
Publication of CN1165838C publication Critical patent/CN1165838C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing

Abstract

这一部分提供了把浮点操作数加载到拥有一个或者是一个以上的寄存器文件入口的方法。分组浮点操作数包括多个分量操作数。每一个分量操作数的有效位和幂位被拷贝到寄存器入口的相应字段中,幂位被检验以确定分量操作数是否被格式化。当分量操作数被格式化,分量操作数相应的隐含位就会被设置。

Description

用于在寄存器文件中存储分组操作数的方法和处理器
相关专利申请
本申请与美国专利申请09/169.865“执行SIMD的标量硬件”,它于1998年10月12日提交,并转让给相同的受让人。
发明背景
技术领域 本发明涉及处理数据的系统,尤其是通过单指令多数据(SIMD)操作来处理数据的系统。
背景技术 处理器设计人员一直致力于研究可以增强多处理器运行性能的办法。并行处理多个操作数可以从当前高度优化的处理器中获取额外的运行性能。在某些常见的数学运算和图形运算中,相同的运算在每一个操作数上被重复执行。举例来说,在矩阵乘法中,第一矩阵的行元素与在第二矩阵上相应的列元素相乘,乘积被相加(乘-累加)。通过提供正确的时序排列和执行资源,乘-累加运算可能在多组行-列操作数上同时实现。这种方式叫做向量处理或者是单指令,多数据流处理,以便把它与标量或者是单指令,单数据流(SISD)处理区分开来。
为了有效实现单指令多数据流的运算,在通常情况之下,数据被提供到在“分组”数据格式中的执行资源中。举例来说,64位处理器可能在分组数据块上运行,该数据块包括两个32位的操作数。在该示例中,向量乘-累加指令,V-FWA(f1,f2,f3)将存储在寄存器f1中的两个32位操作数与存储在寄存器f2中相应的32位操作数相乘,并把乘积添加到存储在寄存器f3中的两个运行乘积和中。换而言之,数据以分组格式存储在寄存器f1,f2,f3中,该数据提供两个来自于每一个寄存器入口的操作数。如果处理器拥有足够的资源,它可能会同时处理两个或者是两个以上的分组数据块,例如四个或者是四个以上的32位操作数。32位操作数被发送到并行处理并随后被分组的不同执行单元中。
甚至是在图形密集化和科学化的编程中,也并非所有的运算都是SIMD运算。大部分由通用处理器执行的软件包括执行标量运算的指令。也就是说,每一个由指令指定的源寄存器存储一个操作数,每一个由指令指定的目标寄存器会接收一个操作数。在上述示例中,标量浮点乘-累加指令,S-FWA(f1,f2,f3)可能把存储在寄存器f1中的单个64位操作数与存储在寄存器f2中相应的64位操作数相乘,并把乘积添加到存储在寄存器f3中的运行乘积和中。由S-FWA指令处理的每一个操作数都以未被分组的格式提供到FWAC部件中。
寄存器文件把源操作数提供到执行单元中,并接收来自于执行单元的结果,会消耗大量的处理器晶圆(die)。可以取用的晶圆是大多数处理器芯片上非常宝贵的稀有资源。正是基于这个原因,在通常情况之下,处理器包括每一个主要数据类型的寄存器文件。举例来说,一般而言,处理器拥有一个存储分组和未分组浮点操作数的浮点寄存器。因此,虽然分组操作数包括两个或者是两个以上的分量操作数,还是设计了分组和未分组操作数,以适应相同大小的寄存器入口。
为分组和未分组操作数提供执行资源,就出现了对运行性能和费用的挑战。提供高性能的标量和向量处理的方式包括单个标量和向量执行单元这种方式的优势在于每一个标量和向量执行单元都可以以诸如分组和未分组的相应方式优化处理数据,而该方式的问题在于,额外的执行单元会消耗硅晶圆,而硅晶圆是相对而言比较宝贵的资源。
除了可以提供正确的执行资源,高性能处理器还必须包括有效传输分组和未分组操作数数据的结构。这种结构既包括那些把操作数数据传输到诸如高速缓冲存储器之类的处理器存储器层中的寄存器文件的结构,也包括把来自于寄存器文件中的操作数数据传输到执行资源中的结构。
本发明描述了当前可取用的单指令多数据流系统相关的各方面内容。
发明概述
本发明提供这样的一种系统,它通过为“活跃”操作数(operand″on-the-fly″)(也就是操作数被加载到寄存器文件入口中)设置隐含位以支持浮点操作数的有效处理。
根据本发明,浮点操作数被检索加载进入寄存器文件入口中。浮点操作数的选定位被检验,并且,当选定位处于第一种状态中,寄存器文件中的隐含位被设置。
在本发明的一种实施方案中,浮点操作数是包括两个或多个分量操作数的分组操作数,寄存器文件则包括每一个分量操作数的隐含位。当选定位显示出分量操作数被标准化的时候,分量操作数的隐含位就会被设置。
因此,当操作数被加载进入寄存器文件并通过相应寄存器文件入口中的隐含位被追踪的时候,本发明允许确定操作数的标准/非标准状态。这样就不再需要使用操作数传输模块中的状态确定逻辑部件,其中操作数传输模块把操作数从寄存器文件中传输到执行单元中。由于操作数传输模块位于执行单元的关键(旁路)通路上,处理器的运行性能就可以大大提高。
附图概述
以下视图可以作为更好地了解本发明地辅助参考,在这些视图中,相同的部件由相同的标号标识。这些视图用于说明本发明的选定实施方案,并不限制发明的范围。
图1表示根据本发明的浮点执行系统的方框图。
图2A和2B分别表示图1的寄存器文件中入口里的未分组和分组的操作数。
图3表示在分组操作数上的操作数传输模块的运算的方框图。
图4表示图1中操作数传输系统的一个实施方案的电路方框图。
图5表示图1中输出转换模块的一个实施方案的电路方框图。
发明详述
接下来的内容将详细介绍本发明的各方面细节,以便让读者对本发明有全面透彻的了解。但是,那些受益于公开内容的本领域的技术人员可以理解,本发明即使不依赖于这些特定细节也一样可以执行。此外,为了着重介绍本发明的特性,这里并没有对一些非常有名的方法,程序,部件和线路进行的详细介绍。
在通常情况之下,处理器结构指定在芯片上资源中存储数据的格式,诸如寄存器文件格式。选择这种寄存器文件格式以便适应处理器执行资源处理的各种不同数据类型,以及任何用于处理数据的补充信息。可适应的数据类型可以是,例如,IEEE 754-1985指定的二进制浮点算法IEEE标准。寄存器文件格式支持这样一种有效处理,通过以随时准备被执行资源访问和处理的格式,来存储操作数数据。
对于标量处理来说,每一个操作数都是以寄存器文件格式作为未分组操作数存储的。在这里,“未分组”指的是允许寄存器文件入口中的数据表示不超过一个操作数这种数据格式。例如,处理器可能容纳一个单精度型未分组操作数,一个双精度型未分组操作数,或者是处理器寄存器文件格式的每一个寄存器文件入口一个双精度扩展型未分组操作数。对于向量处理来说,有多个分量操作数被提供到适应单个寄存器文件入口的分组操作数中。适应在一种尺寸大小的寄存器入口中的分组和未分组操作数意味着操作数被映射到不同的寄存器入口中。不同的映射拷贝会反映到从高速缓冲存储器传输到寄存器文件中的资源上,以及那些把操作数从寄存器文件传输到执行资源的结构中。
关于标量和向量运算的不同操作数格式还可能反映在它们自身的执行资源中。举例来说,一个有两个32位分量操作数的分组操作数可能适应两个32位执行单元来处理。而在相同系统中的未分组操作数可能由一个64位执行单元作为单个64位操作数来处理。在该示例中,每一个执行管道可以使用三个不同的执行单元,两个32位标量执行单元和一个64位标量执行单元,但是执行管道只能并行处理两个操作数。额外的执行单元会消耗大量宝贵的晶圆和资源。
提供两个标量执行单元的另一种方法就是修改标量部件,让它既可以处理标量操作数,也可以适应向量操作数。这种方式不需要使用向量执行单元。然而,以该种方式修改标量部件会降低它在未分组操作数上的运行性能。
本发明提供了这样一种系统,它可以有效处理分组和未分组格式的数据,而无需增加处理器的硅晶圆,或者是降低处理器在未分组操作数上的运行性能。加载转换模块确定活跃的分组操作数分量操作数的隐含位,就像把分组操作数加载进入在诸如高速缓冲存储器之类的存储器位置中的寄存器文件入口一样。隐含位与寄存器文件入口有关,它们表示相应的分量操作数是标准,非标准,或者是0(标准化状态)。还可以确定未分组操作数的隐含位,尽管它们并不应用于这些操作数的随后处理中。
当指令指向寄存器文件入口的时候,操作数传输结构把分量操作数从分组操作数转换为适合标量执行单元处理的格式。操作数传输系统可能通过位处理来实现操作数转换,以避免用额外额外的逻辑门加载系统。这会大大降低操作数转换对系统运行性能的影响,同时还能够保持标量执行单元在未分组数据上的运行性能。
在本发明的一个实施方案中,标量执行单元与向量执行单元结合在一起运行来处理分组操作数。转换过的操作数和未经转换的分量操作数分别被应用于标量和向量执行单元进行处理。在发明的实施方案中,操作数传输结构包括位处理踪迹,以及无需加载额外的执行资源就可以把分量操作数转换为标量格式的反向器。反过来,它可以保持处理器在标量运算上的运行性能。
标量执行单元可能是用于优化处理寄存器文件格式(RFF)中未分组操作数的浮点乘-累加模块(FMAC)。标量执行单元可能是优化用于处理由分组数据格式(PDF)的分组操作数的分量操作数的浮点乘-累加模块。操作数传输模块可能包括拥有额外引线的MUX,该引线可以用于把位重新处理踪迹传输到标量执行单元中,把分量操作数的选定位作为未分组操作数来修改的反向器。
图1是适合实现本发明的浮点系统100的方框图。系统100包括浮点寄存器文件110,操作数传输模块120,主浮点乘-累加模块130,从浮点乘-累加模块140,一个输出转换模块150和一个加载转换模块160。该视图中还有通过加载转换模块160把操作数数据提供导寄存器文件110中的高速缓冲存储器170。高速缓冲存储器170表示存储由浮点系统100和其他处理器资源(未被显示出)来处理的数据的分级存储器系统中的结构。在通常情况之下,数据以上述IEEE浮点标准指定的数据格式存储在存储器系统中。
在系统100的公布实施方案中,主FMAC130处理寄存器文件(“未分组”)格式的未分组操作数。从FMAC140处理分组操作数的分量操作数。操作数传输模块120把寄存器110中的数据以合适格式连接至FMAC130和FMAC140上。
在系统100的公开实施方案中,寄存器文件110包括多个寄存器入口112。在一个实施方案中,每一个入口112都有一个相关隐含位114,该隐含位被设置位表示存储在相关隐含位114中的数据是否被标准化。举例来说,在IEEE标准754中,隐含位被定义。隐含位可以与分组操作数中的分量操作数结合起来表示有待处理的操作数。举例来说,隐含位可以被设置为表示数据是标准格式。
在标量运算中,操作数传输模块120从寄存器文件110提供未分组浮点操作数至主FMAC130。未分组操作数以寄存器文件格式被存储于寄存器文件110中。在向量运算中,操作数传输模块120检索来自于寄存器文件110的分组操作数,把分量操作数转变为未分组操作数,并把它提供到主FMAC130。第二分量操作数被提供到第二FMAC140上。这样,主FMAC130就在标量运算和向量运算之间被共享,而第二FMAC140则为标量运算提供额外的执行资源。
由FMAC130和140生成的结果被连接到输出转换模块150上,以便再一次结合成分组数据格式。在本发明的一个实施方案中,旁路160将来自于主FMAC130的输出数据在重分组以前连接至操作数传输模块120上。被旁路数据可能会由主FMAC130进行额外处理,而无需由转换模块150对其进行重新分组,以及随后由操作数传输模块120对其进行解分组。旁路循环避免了来自于旁路通路的输入转换(分组到未分组数据中)。
视图中的系统100拥有一个浮点管道,但是本发明并没有仅仅只局限于单个管道。它可能被复制到一个或者是一个以上的管道中以提供超标量浮点单指令多数据运算。换而言之,两个或者是两个以上的向量指令可能会被并行处理。广而言之,本领域的技术人员可以理解本发明可以在不同于系统100的配置的浮点系统上实现。
图2A显示了可供本发明使用的,寄存器文件格式的(RFF操作数)未分组操作数200的实施方案。RFF操作数200包括一个有效字段210,幂字段220,和符号字段230。在本发明的实施方案中,有效字段210是64位,幂字段220是17位,符号字段230是1位。
图2B显示了可供本发明使用的,分组文件格式的(PDF操作数)分组操作数250的实施方案。PDF操作数250的公布实施方案分别包括第一和第二分量操作数260(a)和260(b)。在接下来的讨论中,除非需要索引来区别特殊分量操作数260,否则它将会被删除。在PDF操作数250中还显示了不使用的位270。不使用位270被添加到分量操作数260中以填满寄存器文件入口。每一个分量操作数260包括尾数字段262,幂字段264和符号字段266。在一个实施方案中,尾数字段262是23位宽,幂字段264是8位宽,符号字段266是1位宽。在公布的实施方案中,每一个分量操作数都以诸如IEEE标准754-1985所指定的单精度浮点格式出现。
图2A和图2B中还显示了(一个或者多个)隐含位114,与每一个寄存器文件入口112(图1)相关。隐含位114可以应用于表示分量操作数是0还是非标准。在FP寄存器文件110的一个实施方案中,隐含位可以被确定为写入寄存器文件110中的寄存器入口112中的数据,也就是活跃的。这样就不再需要使用在操作数传输模块120中的额外逻辑部件以确定操作数的标准/非标准状态了,因为这只会减缓向量操作数的处理。举例来说,衡量将要传输到FMAC140的分量操作数的标准/非标准状态需要使用在操作数传输系统120的关键通路上的OR门。
对于分别存储在图2A和图2B中的未分组和分组操作数的寄存器文件入口112来说,隐含位114,例如当数据被写入寄存器文件110,位82和位83就会被设置为以下形式:
IF(DATA[62:55]=’0::8),THEN da ta[83]=’0,ELSE’1
IF(DATA[30:23]=’0::8),THEN da ta[82]=’0,ELSE’1
这里,′1和′0分别表示二进制1和二进制0。
在系统100(图1)的一个实施方案中,加载转换模块160可能使用两个8输入OR门来实现上述运算。举例来说,加载转换模块160的一个实施方案包括传输阶位,有效位和符号位从高速缓冲存储器170传输到它们在寄存器文件的目标入口112中相应的位字段的踪迹。每一个OR门的输入数据都被连接到分量操作数的一个阶位踪迹上,而每一个OR门的输出数据则被连接到与分量操作数相关的隐含中。在这个实施方案中,如果分量操作数的阶位是非0的话,隐含4位将会被设置为1。
隐含位可以由操作数传输模块120使用以提供以适合处理的格式的分量操作数260。举例来说,分量操作数260的尾数字段262容纳23位。24位的有效字段就可能通过把相关的隐含位附加到23位尾数,作为最有效字段。在公布的实施方案中,这种转换并不需要RFF数据200。但是,逻辑部件通过确定每一个被写入寄存器文件110的操作数,并在RFF数据200被访问的时候忽略它们得以简单化。
在本发明的一个实施方案中,一个分量操作数260被转换为RFF操作数,由主FMAC130处理,而另一个分量操作数被提供到第二FMAC140中而处理。
图3是由操作数传输模块120实现的运算示意图,以便把正确的格式化数据提供到FMAC130和FMAC140的框架。在公布的实施方案中,隐含位114与分量操作数260(a)中的数据结合在一起,该分量操作数被转换为RFF操作数以备主FMAC处理。本发明的一个特性在于这个转换处理可以无需加载主FMAC130而实现,这样,就不会降低它在标量运算上的运行性能。分量操作数260(b)被提供到第二FMAC而处理,第二FMAC可以优化而处理分量格式的操作数。FMAC130并不需要显示分组操作数的上层分量操作数(260(a))。广而言之,分组操作数的任何分量操作数都可能会被选择发送到FMAC130中。
在本发明的一个实施方案中,操作数传输模块120通过把把分组操作数位处理成未分组操作数200来实现数据转换。举例来说,来自于尾数字段262(a)和隐含位114(I1)的数据可能被转换到RFF有效数据(有效字段210)。同样的,来自于幂字段264的数据可能被转换到RFF幂数据(幂字段220)。符号字段266中的数据可能被映射到RFF符号位(符号字段240)。在接下来的内容中,将使用在图2A和图2B中的示例数据来详细介绍各种不同的转换步骤。
有效转换 分量操作数260(a)的示例实施方案包括23位尾数字段262(a)。在本发明的一个实施方案中,来自于尾数字段的数据通过:(1)预先把相关隐含位114挂起到来自于部件尾数字段262的23位尾数;以及(2)把二进制零附加到尾数的最不有效位上以便形成64位的RFF有效字段这两种方式转换为RFF有效字段。表1概括了尾数的位处理,它表示出到寄存器入口112中主要(1)FMAC130的位(一个或者是多个)输入数据,位的特性,标量指令的源位,以及向量指令的源位。
表1
第一FMAC输入处的位 位功能 标量指令的源位 向量指令的源位
[63] 隐含位 [63] [83]
[62:40] 上有效位 [62:40] [54:32]
[39:0] 下有效位 [39:0] 0::40
[81] 符号位 [81] [63]
正如我们上面所介绍的那样,当这些操作数共享寄存器文件110中同样的印记(footprint),也就是寄存器入口112,它们的操作数就会被映射到寄存器入口112的不同位上。
在RFF操作数200和PDF操作数250的公布实施方案中,隐含位分别由位63和位83指定。为了适应这两种数据格式,操作数模块110会使用一个2∶1的复用器(MUX),选择输入FMAC130的正确源位。把额外的2∶1MUX介绍到在寄存器文件110和FMAC130之间的逻辑链,加载操作数传输模块120,会减缓到FMAC130的数据传输速度。加载过程会削减标量和向量运算的运行性能。在本发明的实施方案中,是通过向操作数传输模块110中的现存的3∶1MUX(图4)提供旁路数据(旁路4∶1MUX)的额外通路实现位处理的。这样就不再需要把额外的MUX添加到在寄存器文件110和FMAC130之间的数据通路了。
幂转换  在公布的实施方案中,RFF和PDF幂根据不同的偏差来表示。在把PDF幂(字段264)转换为RFF幂(字段220)的时候,就需要考虑偏差之间的区别了。在一种实施方案中,RFF偏差值是FFFFh,PDF偏差值是7Fh,也就是IEEE标准中单精度实数的幂偏差。这些值之间的区别是FF80h。
进行幂转换的一种方式就是把FF80h添加到PDF幂字段264中的8位的幂值,以获取RFF幂。问题在于它使用的是在寄存器文件110和主FMAC130之间数据通路上的加法器。操作数传输模块120上的额外的选通延迟会降低系统100的标量和向量运算性能。而使用另一种去调整幂偏差的方式就可以不必使用加法器。
表2概括了当偏差区别是FF80h,把PDF幂转换为RFF幂的时候,所执行的调整处理。在这里,通过E7的E0是PDF幂字段264(a)上的8位,并且如果是以二进制方法表示的话,01111111110000000是FF80h。正如在表2中所表示的那样,幂转换可以通过反转PDF幂字段264(a)上的第8阶位(E7->E7),在RFF幂(字段220)的下一个9位对它进行复制,并把未反转的第8位(E7)拷贝到RFF幂中最高位位置上。这些操作可以通过一个反向器和适当的路由踪迹来完成。这里并不需要加法器,并且在操作数传送模块120和主FMAC130上的反向器的性能影响并不重要。
表2
位位置 16  15  14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
SIMD幂  E7  E6  E5  E4  E3  E2  E1  E0
常数 0  1  1 1 1 1 1  1  1  1  0  0  0  0  0  0  0
结果 E7 --E7 --E7 --E7 --E7 --E7 --E7 --E7 --E7 --E7  E6  E5  E4  E3  E2  E1  E0
在表2中总结的方法并不用于单精度非标准化数字的操作。非标准数值可以由关联的隐含位114的值定义,而转换过程可以使用一个软件处理程序来实现。表3概括了上面所讨论的阶位处理。
表3
第一FMAC输入处的位 位功能 标量指令的源位 向量指令的源位
[6:0] 下阶位 [70:64] [61:55]
[15:7] 中阶位 [79:71] [62#::9]
[16] 上阶位 [80] [62]
在这里,“#”指的是该位是被反转了。主FMAC 130的阶位是从幂字段的第一位开始计算的。
图4表现了操作数传送模块120的一个实施方案,它适合于在分别拥有第一和第二浮点管道,pipe0和pipe1,的处理器中使用。本发明并不仅限于在处理器中采用的管道的特殊的号码。操作数传送模块120的公布的实施方案包括一个4∶1的先旁路MUX(EBPM)410,一个6∶1的中旁路MUX(MBPM)420,以及一个4∶1的后旁路MUX(LBPM)430。对于上面所描述的实例数据格式,操作数传送模块120将了一个32位的分量操作数260(a)从分组的或者PDF操作数250转换为82位复原的或者RFF操作数200。
EBPM 410在输入端A和B处接收所存储的pipe0和pipe1的数据。从pipe0和pipe1的后端写回数据可以通过输入端C和D连接至操作数传送模块120。EBPM 410的一个控制输入端从输入端A,B,C或D中选择提供给MBPM 420的数据。MBPM 420在输入端E处接收来自EBPM410的数据。来自pipe0和pipe1的一个级的数据被分别从输入端F和G处接收。来自于pipe0和pipe1的加载转换器的数据分别从输入端H和I处被接收。来自寄存器文件110的数据在输入端J处被接收。MBPM 420的一个控制输入端从输入端E,F,G,H,I和J之一选择提供给LBPM 430的数据。
LBPM 430从输入端M和N处分别接收来自于pipe0和pipe1的另一个级的旁路数据。LBPM 430的输入端K通过位处理块440接收来自MBPM 420的数据,该位处理块可以为矢量操作实现上面所描述的转换。在上面的例子中,为处理块440包括一个反向器和位处理踪迹来将数据从上级的分量操作数269(a)重新标准化为RFF数据。举例来说,位处理块包括一个逻辑部件和踪迹将23位PDF尾数位转换为一个64位PFF有效位,并将8位PDF阶位转换为一个17位带有经过再调整偏差的RFF阶位。对于标量运算来说,LBPM 430的输入端L可以无需介入位处理或者反向而接收来自于MBPM 420的数据。来自于输入端K或者L之一的数据依据正在处理的分别是分组数据还是写回数据被提供给主FMAC 130。
在图4的实施方案中,转换(位处理)数据和未转换数据通过分别选择适当的输入端K或者L被提供给主FMAC 130。这允许来自寄存器文件110的数据或者与先旁路级(early bypass stage)相关的数据在LBPM 430处被转换。在公布的实施方案中,在输入端M和N处的末级旁路数据可以通过使用相应的位处理块440复制每个输入端来进行转换。然而,如果位于输入端M和N处的旁路数据并不优先于后旁路(late bypass)被分组的话,就不需要对它进行分组了。这样就可以避免在LBPM 430上使用额外的支路和位处理块440。
对于操作数传送模块120的一个实施方案来说,后旁路数据可以通过旁路160(图1)提供给LBPM 430。在被重分组为例如PDF的格式250之前,旁路160分别捕获主和从FMAC 130和140的输出。在这个实施方案中,对于旁路数据来说并不需要LBPM 430或者它的输出端的扩展。
图5显示了一个输出转换模块150的实施方案。公布的输出转换模块实施方案包括一个主输出MUX 510和位处理块520。主输出MUX 510包括用来接收来自主FMAC 130的结果的输入端和不同的资源(FMISC)154,以及一些特殊的结果编码。对于实例的数据格式,FMAC 130为标量和矢量运算提供结果以作为未分组(RFF)操作数200(82位)。在后面的情况下,位处理块520将来自于主FMAC 130的未分组操作数与来自于次级FMAC 140的分量操作数结合在一起并形成一个分组操作数。
提供给主输出MUX 510的特殊编码显示着寄存器文件格式中的特殊结果,诸如0、无穷大、或者最大实数(最大可描述的浮点值)。对于公布的实施方案来说,这些编码可以使用上面所描述位处理运算在必要时转换为矢量运算。如果需要对0、无穷大、和最大实数结果进行更精确的转换,它们可以在操作数传送模块120的初级阶段中实现,因为这里的必要信息在浮点执行管道中能够相对较早地被利用。在关键通路中没有引入附加的延迟。
对于矢量运算来说,主FMAC 130和次级FMAC 140的结果被重分组以提供结果作为PDF操作数。在公布的实施方案中,82位入口的低32位接收来自次级FMAC 140分量操作数结果。接下来最高的32位由来自FMAC 130的未分组操作数通过位处理提供。高18位接收由执行情况决定的内容,在公布的实施方案中,这些是‘1 & 1003Eh。
由主FMAC 130提供的分组(RFF)指数有一个相对于分组操作数250中的分量操作数采用的IEEE单精度格式的FF80h的超额偏差。当转换为分组的分量操作数结果的时候,超额偏差转换就会从未分组操作数结果中被减去。在实例实施方案中,这可以通过下面的方法来实现:将2的补码与17位RFF指数相加,使用结果的低8位作为分量操作数的阶位。如以前一样,完成这些为加载浮点管道加载附加的加法器,使用位处理运算就可以了。具体如表4所示。
表4
位位置 16  15  14  13  12  11  10  9  8  7  6  5  4  3  2  1  0
RFF幂 E16  E7  E6  E5  E4  E3  E2  E1  E0
常数 0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0
结果  --  --  --  --  --  --  --  --  --E7  E6  E5  E4  E3  E2  E1  E0
如在表4中所显示的那样,分量操作数的阶位可以通过由主FMAC130提供的未分组操作数获得。在上面的实例中,它们是由未分组操作数结果的低8位阶位提供的,其中8位是被反向了的。在转换运算中忽略的高8位在表2中并没有显示。
表5概括了将来自于主FMAC 130的未分组操作数结果与来自于次级FMAC 140的分量操作数结果分组为矢量运算提供分组操作数结果的位处理运算。
表5
分组操作数位 PO位功能 来自第一FMAC的结果位 来自第二FMAC的结果位
[83] 第一CO的隐含位 [63] -
[82] 第二CO的隐含位 - [23]
[81] 未使用常数(RFF中的符号位) - -
[80:64] 未使用常数(RFF中的阶位) - -
[63] 第一CO的符号位 [81] -
[62] 第一CO幂的MSB --[71] -
[61:55] 第一CO的剩余阶位 [70:64] -
[54:32] 第一CO的尾数 [62:4 0] -
[31] 第二CO的符号位 - [32]
[30:23] 第二CO的阶位 - [31:24]
[22:0] 第二CO的尾数 - [22:0]
在这里,“CO”指的是分量操作数,“来自于第一FMAC的结果位”指的是由主FMAC 130产生的分组操作数结果,“来自于第二FMAC的结果位”指的是由次级FMAC 130产生的分量操作数结果。
对于这样的由FMAC执行的指令来说,附加的控制信号被提供给FMAC来更改单元的运算。举例来说,FMAC可以被用来把浮点操作数转换为整型操作数。转换预算可以对矢量和标量操作数同时适用。矢量和标量所要求的移位操作是不同的,因此一个分开的控制信号被提供来调整FMAC运算。前面讨论过的多重累加运算,它包括矩阵乘法和协同转换,它可以无需这样的FMAC单元内部的更改而进行处理。
提供给系统进行处理SIMD或者矢量运算的就是使用标量和矢量执行单元的结合。必须减少必须添加到系统中的附加执行硬件总数,而标量执行硬件的性能必须被保持。该系统采用一个寄存器文件,该文件有每个分组操作数的分量操作数的隐含位。一个加载转换单元包括一个逻辑部件,它可以在加载运算期间测试每个分量操作数为非标准化的还是0,它还可以根据这个来设置相关的隐含位。为每个系统中的管道提供了一个标量和一个矢量执行单元。一个操作数传送模块将来自于寄存器文件的数据提供给标量和矢量执行单元。对于SIMD运算来说,操作数传送单元从寄存器文件中检索分组操作数,通过位处理将分量操作数转换为未分组操作数,将该未分组操作数提供给标量执行单元以备处理,另一个分量操作数被提供给矢量执行单元。位处理逻辑部件包括轨迹路由选择和反向器,它为标量和矢量运算而对系统性能造成的影响是最小的。

Claims (11)

1.一种方法,包括:
为寄存器文件入口检索分组浮点操作数;
将有效、阶和符号位从分组操作数的每个操作数写入到寄存器文件入口;
测试每个浮点操作数的阶位;和
对于每个操作数,设置寄存器文件入口相关的一位对应于操作数的阶位的一个状态。
2.权利要求1的方法,其中,测试每个浮点操作数的阶位包括从阶位中确定该浮点操作数为非标准或者0。
3.权利要求2的方法,其中,测试浮点操作数的阶位包括:
确定每个阶位是否为0。
4.权利要求1的方法,其中,寄存器入口是一个82位的寄存器入口,它容纳两个32位的浮点操作数并且如果阶位表示相关操作数为非标准,则每个位被设置成第一状态。
5.一种将分组的操作数加载到浮点寄存器文件入口中的方法,该方法包括:
将分组操作数的每个分量操作数的有效位和阶位复制到寄存器文件入口中的相应字段中;
确定每个分量操作数是否为标准化的;和
将与每个标准化的分量操作数相关的位设置为第一逻辑状态。
6.权利要求5的方法,其中,确定每一个分量操作数是否为标准化包括测试分量操作数的阶位。
7.权利要求6的方法,其中,测试阶位包括:
确定任何阶位是否是非0;和
当包括至少一个非0的阶位的时候,确认该分量操作数为标准化的。
8.权利要求7的方法,进一步包括将与每个非标准化的分量指数相关的位设置为第二逻辑状态。
9.一种处理器,包括:
一个数据高速缓冲存储器;
一个包括多个入口的浮点寄存器文件,其中每个入口有一个或多个相关联的位,表示入口的操作数是否为标准化的;和
一个加载转换器,它将分组浮点操作数中多个操作数中的每一个操作数的有效位和阶位从数据高速缓存器复制至寄存器文件入口之一,该加载转换器包括一个OR门以测试分组浮点操作数中的每一个操作数的阶位和以根据测试结果将相应的位设置为第一或者第二逻辑状态的逻辑。
10.权利要求9的处理器,其中,加载转换器包括一个OR门,它拥有数目等于阶位数的输入端以测试每个操作数的阶位。
11.权利要求9的处理器,其中,加载转换器包括每个分量操作数的测试逻辑。
CNB998163120A 1998-12-30 1999-12-08 用于在寄存器文件中存储分组操作数的方法和处理器 Expired - Fee Related CN1165838C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/223,457 1998-12-30
US09/223,457 US6321327B1 (en) 1998-12-30 1998-12-30 Method for setting a bit associated with each component of packed floating-pint operand that is normalized in SIMD operations
US09/223457 1998-12-30

Publications (2)

Publication Number Publication Date
CN1335957A CN1335957A (zh) 2002-02-13
CN1165838C true CN1165838C (zh) 2004-09-08

Family

ID=22836580

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB998163120A Expired - Fee Related CN1165838C (zh) 1998-12-30 1999-12-08 用于在寄存器文件中存储分组操作数的方法和处理器

Country Status (6)

Country Link
US (1) US6321327B1 (zh)
CN (1) CN1165838C (zh)
AU (1) AU4521200A (zh)
DE (1) DE19983870B4 (zh)
GB (1) GB2360110B (zh)
WO (1) WO2000041069A1 (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7107302B1 (en) 1999-05-12 2006-09-12 Analog Devices, Inc. Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units
US7111155B1 (en) 1999-05-12 2006-09-19 Analog Devices, Inc. Digital signal processor computation core with input operand selection from operand bus for dual operations
US6859872B1 (en) 1999-05-12 2005-02-22 Analog Devices, Inc. Digital signal processor computation core with pipeline having memory access stages and multiply accumulate stages positioned for efficient operation
US6820189B1 (en) 1999-05-12 2004-11-16 Analog Devices, Inc. Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation
US6820190B1 (en) * 2000-02-02 2004-11-16 Hewlett-Packard Development Company, L.P. Method and computer system for decomposing macroinstructions into microinstructions and forcing the parallel issue of at least two microinstructions
JP3940542B2 (ja) * 2000-03-13 2007-07-04 株式会社ルネサステクノロジ データプロセッサ及びデータ処理システム
US6788303B2 (en) * 2001-02-27 2004-09-07 3Dlabs Inc., Ltd Vector instruction set
US7430656B2 (en) * 2002-12-31 2008-09-30 Intel Corporation System and method of converting data formats and communicating between execution units
US8327120B2 (en) 2007-12-29 2012-12-04 Intel Corporation Instructions with floating point control override
US7849294B2 (en) * 2008-01-31 2010-12-07 International Business Machines Corporation Sharing data in internal and memory representations with dynamic data-driven conversion
US7877582B2 (en) * 2008-01-31 2011-01-25 International Business Machines Corporation Multi-addressable register file
US8103858B2 (en) * 2008-06-30 2012-01-24 Intel Corporation Efficient parallel floating point exception handling in a processor
US9092213B2 (en) 2010-09-24 2015-07-28 Intel Corporation Functional unit for vector leading zeroes, vector trailing zeroes, vector operand 1s count and vector parity calculation
US8667042B2 (en) 2010-09-24 2014-03-04 Intel Corporation Functional unit for vector integer multiply add instruction
US9411585B2 (en) 2011-09-16 2016-08-09 International Business Machines Corporation Multi-addressable register files and format conversions associated therewith
US9727336B2 (en) 2011-09-16 2017-08-08 International Business Machines Corporation Fine-grained instruction enablement at sub-function granularity based on an indicated subrange of registers
US9128531B2 (en) * 2012-02-22 2015-09-08 Arm Limited Operand special case handling for multi-lane processing
US10365892B2 (en) 2017-01-16 2019-07-30 International Business Machines Corporation Decimal floating point instructions to perform directly on compressed decimal floating point data
US11250867B1 (en) * 2019-10-08 2022-02-15 Rockwell Collins, Inc. Incorporating data into a voice signal with zero overhead

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4595911A (en) 1983-07-14 1986-06-17 Sperry Corporation Programmable data reformat system
US5063497A (en) 1987-07-01 1991-11-05 Digital Equipment Corporation Apparatus and method for recovering from missing page faults in vector data processing operations
WO1991011765A1 (en) * 1990-01-29 1991-08-08 Teraplex, Inc. Architecture for minimal instruction set computing system
DE69132495T2 (de) 1990-03-16 2001-06-13 Texas Instruments Inc Verteilter Verarbeitungsspeicher
US5278945A (en) 1992-01-10 1994-01-11 American Neuralogical, Inc. Neural processor apparatus
US5450607A (en) 1993-05-17 1995-09-12 Mips Technologies Inc. Unified floating point and integer datapath for a RISC processor
US5487022A (en) * 1994-03-08 1996-01-23 Texas Instruments Incorporated Normalization method for floating point numbers
US5805475A (en) * 1995-02-10 1998-09-08 International Business Machines Corporation Load-store unit and method of loading and storing single-precision floating-point registers in a double-precision architecture
US5668984A (en) 1995-02-27 1997-09-16 International Business Machines Corporation Variable stage load path and method of operation
US5761103A (en) 1995-03-08 1998-06-02 Texas Instruments Incorporated Left and right justification of single precision mantissa in a double precision rounding unit
US5825678A (en) * 1995-03-31 1998-10-20 International Business Machines Corporation Method and apparatus for determining floating point data class
US5768169A (en) * 1995-10-02 1998-06-16 Intel Corporation Method and apparatus for improved processing of numeric applications in the presence of subnormal numbers in a computer system
US5835748A (en) 1995-12-19 1998-11-10 Intel Corporation Method for executing different sets of instructions that cause a processor to perform different data type operations on different physical registers files that logically appear to software as a single aliased register file
US5701508A (en) * 1995-12-19 1997-12-23 Intel Corporation Executing different instructions that cause different data type operations to be performed on single logical register file
US5852726A (en) * 1995-12-19 1998-12-22 Intel Corporation Method and apparatus for executing two types of instructions that specify registers of a shared logical register file in a stack and a non-stack referenced manner
US6009511A (en) * 1997-06-11 1999-12-28 Advanced Micro Devices, Inc. Apparatus and method for tagging floating point operands and results for rapid detection of special floating point numbers
US6131104A (en) 1998-03-27 2000-10-10 Advanced Micro Devices, Inc. Floating point addition pipeline configured to perform floating point-to-integer and integer-to-floating point conversion operations
US5995122A (en) * 1998-04-30 1999-11-30 Intel Corporation Method and apparatus for parallel conversion of color values from a single precision floating point format to an integer format

Also Published As

Publication number Publication date
AU4521200A (en) 2000-07-24
GB2360110A (en) 2001-09-12
WO2000041069A1 (en) 2000-07-13
DE19983870B4 (de) 2005-05-19
US6321327B1 (en) 2001-11-20
DE19983870T1 (de) 2002-04-11
GB2360110B (en) 2003-05-21
GB0114436D0 (en) 2001-08-08
CN1335957A (zh) 2002-02-13

Similar Documents

Publication Publication Date Title
CN1165838C (zh) 用于在寄存器文件中存储分组操作数的方法和处理器
CN107844830B (zh) 具有数据大小和权重大小混合计算能力的神经网络单元
CN106598545B (zh) 沟通共享资源的处理器与方法及非瞬时计算机可使用媒体
CN106484362B (zh) 利用使用者指定二维定点算术运算的装置
US10565494B2 (en) Neural network unit with segmentable array width rotator
US6732134B1 (en) Handler for floating-point denormalized numbers
US7685408B2 (en) Methods and apparatus for extracting bits of a source register based on a mask and right justifying the bits into a target register
US5631859A (en) Floating point arithmetic unit having logic for quad precision arithmetic
US6292886B1 (en) Scalar hardware for performing SIMD operations
CN101359284B (zh) 处理数个不同数据格式的乘法累加单元及其方法
EP3343463A1 (en) Neural network unit with re-shapeable memory
US6405306B2 (en) Instruction set for bi-directional conversion and transfer of integer and floating point data
US20220100471A1 (en) Float Division by Constant Integer
CN1918542A (zh) 使用单指令多数据(simd)运算来计算超越函数
CN102200905A (zh) 具有紧凑指令集架构的微处理器
US20020143841A1 (en) Multiplexer based parallel n-bit adder circuit for high speed processing
US6715066B1 (en) System and method for arranging bits of a data word in accordance with a mask
CN1270230C (zh) 扩展精度的整数除的方法和设备
Boersma et al. The POWER7 binary floating-point unit
CN1690951A (zh) 优化的处理器和指令对准
Ide et al. A 320 MFLOPS CMOS floating-point processing unit for superscalar processors
US6598064B1 (en) Split multiplier array and method of operation
Moon et al. An area-efficient standard-cell floating-point unit design for a processing-in-memory system
US11954456B2 (en) Float division by constant integer
US20230259581A1 (en) Method and apparatus for floating-point data type matrix multiplication based on outer product

Legal Events

Date Code Title Description
C06 Publication
C10 Entry into substantive examination
PB01 Publication
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20040908

Termination date: 20121208