CN101539852A - 处理器和信息处理设备 - Google Patents

处理器和信息处理设备 Download PDF

Info

Publication number
CN101539852A
CN101539852A CN200810179087A CN200810179087A CN101539852A CN 101539852 A CN101539852 A CN 101539852A CN 200810179087 A CN200810179087 A CN 200810179087A CN 200810179087 A CN200810179087 A CN 200810179087A CN 101539852 A CN101539852 A CN 101539852A
Authority
CN
China
Prior art keywords
data
condition
storage
instruction
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN200810179087A
Other languages
English (en)
Other versions
CN101539852B (zh
Inventor
吉田利雄
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of CN101539852A publication Critical patent/CN101539852A/zh
Application granted granted Critical
Publication of CN101539852B publication Critical patent/CN101539852B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

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

Abstract

提供了能够执行条件存储指令而不被条件码的数量限制的处理器、用于在处理器中执行条件存储指令的方法、以及具有处理器的信息处理设备。在根据本发明的处理器中,条件数据存储在浮点寄存器中,操作单元执行确定是否将存储数据存储高速缓存中的条件浮点存储指令。

Description

处理器和信息处理设备
技术领域
本发明的一个方面涉及处理器和信息处理设备。
背景技术
有时使用叫做软件流水线的方法,以便编译器可以改善处理器中处理程序的性能。图1显示了软件流水线的概念。例如,当描述程序源中的具有依赖关系的进程A并且硬件执行正如程序所描述的进程时,进程A按顺序执行,这可能会降低性能。在此情况下,在汇编程序源时编译器优化指令行的顺序,以便与进程A没有依赖关系并且要在进程A之后执行的进程B被插入在进程A的指令行之间。从而,硬件可以并行地执行进程A和B。此最优化叫做“软件流水线”。
根据当程序包括诸如“if”语句之类的条件语句的情况下的条件,是否执行指令大致有两种方式。一种是基于条件是真还是假的条件转移指令,它是根据是否要执行指令行如图2所示的那样切换的。然而,如图2所示,为其确定是否根据条件执行它的指令行不能是软件流水线的目标。
根据条件执行指令的另一种方式是根据条件是真还是假在寄存器之间移动数据的条件寄存器移动指令,或使用条件存储指令的技术,通过该技术,信息从寄存器中被读取,并向存储器中写入。这些可以是软件流水线的工具。这些指令确定是否要根据条件是真还是假来更新结果。换句话说,不管条件如何,指令行不会变化,相应地,这些指令使得甚至在包括条件语句的部分使用软件流水线也成为可能(图3和4)。
某些指令集只包括条件寄存器移动指令的定义,而不包括条件存储指令。当使用这类指令集在处理器中的单一核或单一线程中执行单一程序时,按如下方式而不是使用条件存储指令来执行处理。首先,将存储器数据加载到寄存器中。此后,通过使用条件寄存器移动指令,确定是否要更新存储器,并且通过使用存储指令将该寄存器中的信息存储在存储器中。如果确定不应该更新程序中的存储器,则再次向存储器中写入已经加载到寄存器的数据。图5显示了使用条件移动指令代替条件存储指令的流程图。
有一种通过在一个程序中使用多个核(线程并行性)来提高并行处理的速度的方法。当执行此方法时,有时共享存储器中的数据。当多个核用于线程并行性时,条件存储指令不能替换为条件寄存器移动指令。
下面将参考图6说明其理由。
在图6中假设,核0执行条件是假的情况,核1执行条件是真的情况,而其中一个核更新存储器。如果相应的核将数据从寄存器中加载到存储器中,核1首先将新的数据存储在存储器中,此后,核0再次将相同的数据存储在存储器中,然后,数据在存储器中变为旧的数据。这会导致在处理时出错。
导致了图6所示的问题,因为一旦核将数据加载到寄存器中,该数据不能被另一个核共享。换句话说,不能执行既能提高速度又能共享存储器数据的线程并行性。此问题可以通过使用条件存储指令来加以解决。
如果使用条件存储指令,则数据不加载到寄存器上,而当条件是真时,核1根据条件存储指令存储新的数据,而当条件是假时,核0不存储数据,相应地,新的数据可以反映在存储器中。
甚至在定义了对应于条件存储指令的指令的情况下,除浮点寄存器之外,还有一个具有专用于屏蔽(mask)的寄存器的指令集。在此情况下,可以通过使用屏蔽的存储,执行上面的线程并行性。然而,必须检测屏蔽寄存器的依赖关系,这会增大硬件大小。并非所有的程序都需要屏蔽,因此,硬件大小的增大会降低成本效率。
在诸如SPARC-V9(SPARC是注册商标)的条件指令中,ICC或XCC被用作整数的条件码,而fcc0、fcc1、fcc2以及fcc3被用作浮点的条件码。当,例如在浮点的条件下执行条件指令时,只有四个独立条件(即,fcc0,fcc1,fcc2,以及fcc3),相应地,不能执行具有五个或更多个条件的条件进程。这种对可以被保持的条件的数量的限制还使得通过编译器不可能实现并行性。图8显示了当条件码的最大数量是2时的示例。
近年来,一直使用SIMD(单指令多数据)扩展处理,其中多个寄存器的数据是作为单一指令的输入数据的向量元素并行地处理的;采用了SIMD以改善标量处理器的性能。当定义了条件指令的SIMD处理时,必须根据某一条件执行条件SIMD指令。从而,必须使条件代码或屏蔽寄存器以这样的方式展开,以使得它们新对应于每一个元素的SIMD。
如上文所描述的,在处理器的常规条件指令中,条件进程的数量是受条件码的数量限制的,这是有问题的。
发明内容
本发明的一个方面的目的是提供执行存储指令而不受条件指令中的条件码的数量限制的处理器。
此外,为了响应作为本发明的一个方面的目的的处理器,要求定义用于改善标量处理器的性能的SIMD指令的条件指令的SIMD进程。
根据本发明的一个方面,处理器在浮点寄存器中存储条件数据,操作单元执行条件浮点存储指令,根据条件数据确定是否将存储数据存储在存储器中。如果浮点寄存器采用SIMD配置,则处理器可以将条件数据存储在SIMD的每一个元素的浮点寄存器中,而操作单元执行条件浮点存储指令,根据条件数据确定是否存储SIMD存储指令的每一个元素的数据。
这里将公开的处理器能够执行条件进程而不受条件码的数量的限制。此外,处理器还能够通过用于普通浮点运算的读取端口读取条件数据,还能够使用浮点寄存器的依赖关系检测电路来检测依赖关系。从而,可以实现成本降低的条件浮点存储指令。
附图说明
图1显示了软件流水线;
图2显示了当存在条件转移指令时的软件流水线;
图3显示了条件转移指令和条件指令;
图4显示了当存在条件指令时的软件流水线;
图5是显示了当使用条件移动指令代替条件存储指令时的操作的流程图;
图6显示了当使用条件移动指令代替条件存储指令用于以多核配置执行并行处理时发生的问题;
图7显示了条件存储指令;
图8显示了当至多有两段条件数据时根据条件指令的软件流水线;
图9显示了包括浮点寄存器和运算符的配置;
图10显示了SIMD浮点寄存器和运算符的配置;
图11显示了根据本发明的实施例的处理器的操作;
图12显示了响应于SIMD条件浮点存储指令的处理器的操作;
图13显示了根据本发明的实施例的处理器的配置;
图14显示了条件浮点存储指令的格式;
图15显示了浮点比较运算指令和浮点比特逻辑运算指令的格式;
图16显示了浮点比较运算指令的处理;
图17显示了浮点比特逻辑运算指令的处理;
图18显示了非条件浮点存储指令的格式;
图19显示了存储进程;
图20显示了条件浮点存储指令的即时字段的进程;
图21显示了用于生成存储使能信号的电路;
图22显示了SIMD存储进程;
图23显示了浮点数据的格式;以及
图24是显示了存储数据的旁路(bypass)进程的流程图。
具体实施方式
下面将参考附图说明本发明的实施例。本发明的范围不仅限于下面给出的示例,在不偏离本发明的精神的情况下可以进行各种更改。
首先,说明本发明的一个示例的概述。
在诸如服务器等等之类的信息处理设备中提供了本示例的处理器。在信息处理设备中,各种输入/输出设备、存储器、磁盘设备等等通过总线连接到处理器。
本示例中的处理器存储用于执行浮点寄存器中的条件存储指令的条件数据。处理器定义用于生成条件数据的浮点比较运算指令,并将浮点比较运算指令的结果(真或假)存储在浮点寄存器中。此外,处理器定义存储条件数据的浮点寄存器之间进行的诸如AND,OR,XOR以及NOT的比特逻辑运算指令。
本示例中的处理器根据显示了作为存储在浮点寄存器中的浮点比较运算指令或逻辑运算指令的结果的真或假的值,执行条件存储进程。要求条件存储指令的条件数据存储在浮点寄存器中,并且要求根据如上文所描述的浮点寄存器中存储的条件数据的值(真或假)来处理浮点存储的指令,在这里简称为条件浮点存储指令。
使用诸如屏蔽寄存器的专用寄存器来存储条件数据的指令体系结构,除浮点寄存器之外,还需要屏蔽寄存器的寄存器文件,并且还需要专用于屏蔽寄存器的用来检测依赖关系的电路。然而,在本实施例中,作为浮点比较运算指令和浮点逻辑运算指令的结果的值(真/假)存储在浮点寄存器中,从而,可以如此使用浮点寄存器,使得可以使用检测浮点数据的依赖关系的检测电路。从而,可以不必新提供任何其他硬件。
图11显示了当发出条件浮点存储指令时本示例中的处理器的操作的概述。
从浮点寄存器11的第一操作数(对应于图11中的操作数0)读取存储数据,并将其存储在存储数据寄存器14中。从浮点寄存器11的第二操作数(对应于图11中的操作数1)读取条件数据。操作单元13引用从指令控制单元12传输的操作码,如果操作码表示条件存储指令,则操作单元根据条件数据生成存储使能信号。生成的存储使能信号存储在存储使能寄存器15中。高速缓存单元16根据存储使能寄存器15的值来存储已经存储在存储数据寄存器14中的数据。
响应于存储指令,存储器地址和存储数据被转送到高速缓冲存储器。从浮点寄存器11读取存储数据需要一个读取端口。作为科学计算执行的浮点SOP(乘积之和)运算使用三段寄存器数据作为源,相应地,寄存器文件可以使用用于一个操作管道(operation pipe)的三个读取端口(参见图9中的浮点寄存器和操作单元的配置)。相应地,在示例中的条件浮点存储指令中,使用此操作管道的两个读取端口,以便与存储数据同时读取条件数据。如上文所描述的,可以使用浮点寄存器11的三个现有的读取端口,而无需新的硬件。
图12显示了当需要对浮点寄存器11执行SIMD展开时用于处理条件浮点存储指令的处理器的操作。
也是在此情况下,同时对用于存储条件的寄存器,即浮点寄存器11进行SIMD展开。图12显示了这样的情况:有SIMD的两个元素,每一个元素的配置与图11中所显示的相同。然而,在SIMD条件存储指令的情况下,从指令控制单元12传输的操作码被输入到相应的元素的操作单元13-0,13-1,......13-N。
SIMD的每一个元素都具有操作管道,每一个操作管道都具有用于寄存器文件的三个读取端口(参见图10中的浮点寄存器和操作单元的配置)。每一个操作管道的两个读取管道用于与存储数据同时地读取条件数据,与图11所示的情况相似。
如图11和12所示,根据存储在本示例中的浮点寄存器的条件数据来执行存储进程。通过将条件数据存储在浮点寄存器中,使得可执行条件存储指令,而不受条件码的数量的限制。具体来说,在具有扩展的浮点寄存器区域和许多浮点寄存器的处理器中,可以利用较大数量的条件来执行条件指令。
接下来,将通过参考图13比较详细地描述本示例。
图13中的处理器具有初级指令高速缓存33、次级高速缓存/存储器单元34、初级数据(primary data)高速缓存32、指令解码单元35、操作处理单元36、地址生成单元37、提交控制单元38、负载处理单元39、存储处理单元40、定点寄存器31,以及浮点寄存器30。
指令解码单元35对从初级指令高速缓存33中读取的指令进行解码。操作处理单元36包括用于执行运算的运算符等等。地址生成单元37生成要用于从经过解码的指令进行访问的地址。负载处理单元39处理负载指令。存储处理单元40处理存储指令。提交控制单元38控制寄存器和存储器的更新。
在本示例中,当条件为真时存储数据的“真-条件浮点存储指令”以及当条件被假时存储数据的“假-条件浮点存储指令”被定义为条件浮点存储指令。
图14显示了条件浮点存储指令的指令格式。在图14所示的示例中,条件浮点存储指令包括用于指定指令类型的操作码部分(OPCODE[7:0])、用于指定用来生成存储器地址的定点寄存器地址的RS1(RS1[4:0])、即时指定比特(I[0])、带符号的扩展即时字段(SIGNED-IMMOP[7:0])、用于指定对存储数据进行存储的浮点寄存器的RD字段(RD[4:0]),以及用于指定用来存储条件数据的浮点寄存器的RS2字段([4:0])。
当即时指定比特(I[0])是“1”时,可以通过下列等式获得存储器地址。
存储器地址=RS1数据+带符号的扩展IMM(即时8比特<<2)
浮点存储数据是由RD代表的浮点寄存器的值。
条件数据是由RS2代表的浮点寄存器的最高有效位,即,符号位。
如上文所描述的,根据条件浮点存储指令,操作数2(RS2)的寄存器被分配到条件寄存器。相应地,指定用于存储数据的存储器地址的方法是基于操作数1和即时字段之和。条件浮点存储指令可以将存储数据限制到四字节的单精度浮点长度和八字节的双精度浮点长度。相应地,指令操作数的即时字段和两个比特的移位一起使用。从而,可以根据基本地址RS寄存器的位移和即时字段相加,在宽范围内指定存储器地址。
接下来,参考图15到17,说明本示例中的用于生成条件数据的浮点比较运算指令和浮点比特逻辑运算指令。
首先,fcompgt指令、fcompge指令、fcomplt指令、fcomple指令、fcompeq指令和fcompne指令被定义为浮点比较运算指令。响应于这些浮点运算指令,将两个浮点寄存器值彼此进行比较,并将比较的结果(真或假)返回到浮点寄存器。
当RS1>RS2时,fcompgt指令向RD的最高有效位返回“1”
当RS1≥RS2时,fcompge指令向RD的最高有效位返回“1”
当RS1<RS2时,fcomplt指令向RD的最高有效位返回“1”
当RS1≤RS2时,fcomple指令向RD的最高有效位返回“1”
当RS1=RS2时,fcompeq指令向RD的最高有效位返回“1”
当RS1≠RS2时,fcompne指令向RD的最高有效位返回“1”
图15显示了浮点比较运算指令的格式。图15所示的浮点比较运算指令包括操作码部分(OPCODE[7:0])、RS1字段(RS1[4:0])、带符号的扩展即时字段(SIGNED-IMMOP[8:0])、RD字段(RD[4:0]),以及RS2字段([4:0]),根据操作码(OPCODE字段和SUB-OPECODE字段)识别诸如fcompgt指令和fcompge指令的指令类型。图16是显示了浮点比较运算进程的图形。浮点比较运算符63比较来自浮点寄存器61的操作数0(RS1)和操作数1(RS2),并将结果存储在寄存器64中,还向RD写入结果。在本示例中,当操作数的比较结果是真时,向包括RD的最高有效位的所有比特写入“1”,而当结果是假时,向包括RD的最高有效位的所有比特写入“0”。
当“if”语句包括诸如多个比较的多个条件时,必须执行上面获得的条件数据的比特的AND、OR、NOT,以及XOR的运算。相应地,执行RS1和RS2的数据的比特的逻辑运算,定义了浮点比特逻辑运算指令fand指令、for指令,fnot指令,以及fxor指令,用于向RD写入结果。浮点比特逻辑运算指令的格式与图15所示的格式相似。图17显示了浮点比特逻辑运算指令进程。浮点比特逻辑运算符73比较操作数0(RS1)和操作数1(RS2),并将比较的结果存储在运算结果寄存器74中,还向RD写入结果。类似于浮点比较运算指令,当操作数的比较结果是真,向包括RD的最高有效位的所有比特写入“1”,而当结果是假时,向包括RD的最高有效位的所有比特写入“0”。
浮点运算比较指令和浮点比特逻辑运算指令分别定义了双精度浮点(八字节)和单精度浮点(四字节)。操作码用于区别双精度浮点和单精度浮点。
在上文中,已说明了本示例中的指令格式、浮点比较运算指令、以及浮点逻辑运算指令的定义。接下来,将说明存储进程。
首先,将说明非条件的浮点存储指令。非条件的浮点存储指令这里简称为“非条件浮点存储指令”。图18显示了非条件浮点存储指令的格式。
指令格式包括操作码部分(OPCEOE[7:0])。此外,指令格式还包括用于指定是否使用即时操作数的即时指定比特(I[0])。当I[0]=0时(图18(a)),RS1和RS2之和被用作用于指定定点寄存器地址的存储器地址。在此情况下,存储指令具有八比特的未占用字段。当I[0]=1时(图18(b)),RS1和带符号的扩展即时字段(SIGNED-IMMOP)的13比特之和被用作存储器地址。此外,指令格式包括用于指定浮点寄存器的RD字段。
更具体而言,当即时指定比特(I[0])为0时:
存储器地址=RS1数据+RS2数据
存储数据(浮点)=RD数据
当即时指定比特(I[0])为1时:
存储器地址=RS1数据+带符号的扩展(即时13比特)
存储数据(浮点)=RD数据
图19显示了存储指令的处理。
首先,由指令解码单元93对指令进行解码,解码结果通过存储器地址生成管道(generation pipeline)94存储在初级数据高速缓存98中的存储缓冲区95内的操作字段中。
响应于非条件浮点存储指令,待存储的存储器地址被传输到控制存储指令的高速缓存单元98,传输是通过用于生成RS1和RS2之和或RS1和带符号的扩展即时字段的十三个比特之和的地址生成管道94来执行的。存储器地址存储在初级数据高速缓存98中的存储缓冲区95内的存储器地址字段中。浮点寄存器91中的条件数据通过浮点运算符管道(operatorpipeline)92存储在初级数据高速缓存98中的存储缓冲区95内的存储使能字段中。待存储的浮点数据通过浮点运算符管道92传输到高速缓存单元98。
响应于条件浮点存储指令,待存储的存储器地址被传输到用于控制存储指令的初级数据高速缓存98,传输是通过用于生成RS1和带符号的扩展即时字段的八个比特之和的存储器地址生成流水线94来执行的。响应于条件浮点存储指令,数据长度可以限于四字节的单精度浮点数据或八字节的双精度浮点数据的数据,因为存储数据是浮点数据。如图20所示,当作为指令解码的结果而指令被确定为浮点存储指令时,指令操作码的带符号的扩展即时字段向左移两个比特(图20中的′SSSS′IMMOP[6:0]′00′)。从而,可以指定较高的存储器地址。两比特移位的方式是“SIGNED-IMMOP[7:0]”→“′S′IMMOP[6:0]”→“′SSSS′IMMOP[6:0]′00′”。带符号的扩展即时字段的最高有效位“S”当其被加到RS1作为符号位时,历经带符号扩展(signed expansion)。
待存储的浮点数据和浮点寄存器中的条件数据按下列方式被传输到初级数据高速缓存98。浮点运算符具有用于三个源操作数的读取端口(参见图9)。响应于非条件浮点存储指令,如此使用第一操作数的读取端口,以使得存储数据从浮点寄存器91中读取,并通过运算符(浮点运算符管道92)传输到初级数据高速缓存98。响应于条件浮点存储指令,从第二操作数中读取用于存储条件的浮点寄存器。浮点运算符管道92引用从指令解码单元93接收到的指令的操作码。如果操作码指定真-条件浮点存储指令,并且如果第二操作数的最高有效位是“1”,则浮点运算符管道92使用数据存储的相同的周期向初级数据高速缓存98传输被设置为“1”的存储使能信号。如果操作码指定假-条件浮点存储指令,并且如果第二操作数的最高有效位是“0”,则浮点运算符管道92使用数据存储的相同的周期向初级数据高速缓存98传输被设置为“1”的存储使能信号。图21显示了生成用于真-条件浮点存储指令或假-条件浮点存储指令的存储使能信号的电路。图21中的电路包括在图19所示的浮点运算符管道92中。
在图21中,输出由操作码解码电路110解码的操作码。
真-条件存储指令被输出到AND电路111,而假-条件存储指令被输出到另一个AND电路112。条件数据(第二操作数的最高有效位)被照原样输入到AND电路111,并且在反向之后被输入到AND电路112。AND电路111或AND电路112的输出被输入到OR电路113,以便生成存储使能信号。如此,根据操作码和第二操作数的最高有效位生成存储使能信号。
图22显示了SIMD条件浮点存储指令的进程。在SIMD条件浮点存储指令的情况下,对应于相应的元素的操作管道同时将存储数据和存储使能信号传输到初级数据高速缓存98。
图23显示了浮点数据的格式。在单精度浮点数据的格式中,[31]表示符号,[30:23]表示指数,而[22:0]表示尾数。在双精度浮点数据的格式中,[63]表示符号,[62:52]表示指数,而[51:0]表示尾数。通过使用条件数据的寄存器的最高有效位,即,通过使用图23中的符号位,当浮点数据的符号(即,正的或负的)是唯一条件时,存储了数据的寄存器被用作条件数据,并可以执行条件浮点存储指令。
图19中的初级数据高速缓存98的存储缓冲区95从地址管道接收诸如地址或操作码的必需的信息,还从存储数据的管道接收存储数据和存储使能信号。如图22所示,在SIMD条件浮点存储指令的情况下,初级数据高速缓存98的存储缓冲区95′接收存储数据和存储使能信号。
在图19和22中,提交控制单元96从初级数据高速缓存98接收“进程完成报告”,指明对于存储器地址没有陷阱(trap),还接收一个报告,该报告指明存储数据被从浮点运算符管道92传输到初级数据高速缓存98,提交控制单元根据程序顺序提交指令。当提交指令时,提交控制单元96将一个需要向高速缓存写入名称为“存储提交”的存储数据的信号传输到存储缓冲区95。提交控制单元96不区别非条件存储指令和SIMD。
当图19中的存储缓冲区95接收存储提交时,并且当对应于提交的请求是条件存储指令时,存储缓冲区95引用存储使能信号,并且当存储使能信号是“1”时,将存储数据存储在高速缓存中。在非条件存储指令的情况下,存储数据被存储在高速缓存中,而不管存储使能信号如何。
当已经接收了存储提交的端口的请求是SIMD时,图22中的存储缓冲区95′引用相应的元素的存储使能信号,并存储其存储使能信号是“1”的元素的存储数据。在非条件存储指令的情况下,存储缓冲区95将存储数据存储在高速缓存中,而不管存储使能信号如何。
接下来,将说明存储指令进程中的存储数据的旁路进程。
响应于非条件存储指令,当与存储指令的地址相同的地址之后的加载请求被作出时,在存储缓冲区中比较地址。当这些地址彼此不相同时,数据从主高速缓存中被读取,并被提供给寄存器单元。当这些地址相同时,在数据被写入到高速缓存单元之前,从保留了存储数据的存储数据缓冲区旁路存储数据,加载的数据被返回到寄存器单元中。
然而,是否要将条件存储的数据写入到高速缓存中是基于存储使能比特来确定的。当加载地址与条件存储指令中使用的地址相同时,在存储数据缓冲区中设置存储数据和存储使能信号,此后,当存储使能信号是“1”时,存储数据被旁路。另一方面,当存储使能信号是“0”时,存储数据不被旁路,数据从高速缓存单元中被读取,并被返回到寄存器单元。
图24是存储数据的旁路(bypass)进程的流程图。
首先,在S1中,将存储缓冲区的存储器地址与后续的加载请求地址进行比较。当它们彼此相同时,进程进入S2。当存储器地址和后续的加载请求地址不相同时,进程进入S5,作为加载的数据,返回初级数据高速缓存的数据。
在S2中,确定存储缓冲区的操作码是否为条件存储指令。当操作码是条件存储指令时(是),进程进入S3。当操作码是非条件存储指令时(否),进程进入S4,作为加载的数据,存储缓冲区的数据被旁路。当进程从S2进入S3时,确定缓冲区的存储使能信号是否是“1”,当存储使能信号是“1”(是)时,进程进入S4,其中存储缓冲区的数据作为加载的数据被旁路。当存储使能信号不是“1”(否)时,进程进入S5,其中初级数据高速缓存的数据作为加载数据被返回,而无需旁路存储缓冲区。
基于存储使能信号,确定是否要将每一个SIMD元素的数据写入到高速缓存中。相应地,当在SIMD条件存储指令中使用的后续的加载请求和地址彼此相同时,在存储数据缓冲区中设置存储数据和存储使能信号,此后,当存储使能信号是“1”时,存储数据被旁路。当存储使能信号是“0”时,存储数据不被旁路。此后,数据从高速缓存单元中被读取,并被返回到寄存器单元中。SIMD条件存储指令的处理流程与图24中的处理流程相同,因此省略了其说明。
在上面的对本发明的示例的说明中,对于上文所描述的条件浮点存储指令、浮点比较运算指令、浮点逻辑运算指令,以及相应的SIMD指令的双精度浮点和单精度浮点执行了定义和处理。
上文所描述的处理器具有这样的特征:其中,条件数据存储在浮点寄存器本身中,操作单元执行条件浮点存储指令,根据条件数据确定是否对存储数据进行存储。换句话说,不提供专用于存储条件浮点存储指令的条件数据的屏蔽寄存器,并且如此定义指令,使得条件数据存储在浮点寄存器中。从而,可以通过用于普通浮点运算的读取端口读取条件数据,并可以检测依赖关系而无需使用依赖关系检测电路,从而,可在硬件方面以较低的成本实现条件浮动存储指令。此外,条件数据存储在浮点寄存器中,相应地,编译器可以被进一步优化,条件数据片的数量不受条件码的数量的限制。此外,执行浮点寄存器的SIMD展开,以便条件浮点存储指令可以变成SIMD格式。
在某些程序中,通过定点数据的条件确定是存储定点数据还是存储浮点数据,而在其他程序中,通过浮点数据的条件确定是否存储定点数据。然而,在科学计算领域使用的许多超级计算机处理浮点数据,因而本发明在考虑到硬件的电路量和编译器的最优化的情况下取得巨大的效果。

Claims (9)

1.一种处理器,包括:
用于存储条件数据的浮点寄存器;以及
用于执行根据浮点寄存器中存储的条件数据来确定是否将存储数据存储在存储器中的条件浮点存储指令的操作单元。
2.根据权利要求1所述的处理器,其中:
所述条件数据存储在浮点寄存器的最高有效位中。
3.根据权利要求2所述的处理器,其中:
所述操作单元通过比较两个浮点寄存器的值并将比较的结果作为条件数据存储在浮点寄存器的最高有效位中,来进一步执行浮点比较运算指令。
4.根据权利要求2所述的处理器,其中:
所述操作单元进一步在多个条件数据片之间执行比特逻辑运算指令。
5.根据权利要求1所述的处理器,其中:
所述条件浮点存储指令是当条件数据为“真”时向存储器中写数据的真-条件浮点存储指令,或当条件数据为“假”时向存储器写数据的假-条件浮点存储指令。
6.根据权利要求1所述的处理器,进一步包括:
地址生成单元,用于通过将浮点寄存器的即时字段移动几个比特来生成即时数据,以便通过使用所述即时数据生成地址。
7.根据权利要求1所述的处理器,进一步包括:
提交控制单元,用于提交指令,其中:
当在由所述提交控制单元提交条件浮点存储指令之前向相同存储器地址发出在程序中后续的加载指令时:
当满足存储条件时,存储数据作为加载的数据被返回到寄存器单元;以及
当不满足存储条件时,加载的数据从高速缓存单元被返回到寄存器。
8.一种用于在处理器中执行条件存储指令的方法,包括:
将条件数据存储在浮点寄存器中;以及
根据浮点寄存器中存储的条件数据,确定是否将存储数据存储在存储器中。
9.一种具有处理器的信息处理设备,所述处理器包括:
用于存储条件数据的浮点寄存器;
用于执行根据浮点寄存器中存储的条件数据来确定是否将存储数据存储在存储器中的条件浮点存储指令的操作单元。
CN2008101790878A 2008-03-21 2008-11-27 用于执行条件存储指令的方法、处理器和信息处理设备 Expired - Fee Related CN101539852B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2008073433A JP5326314B2 (ja) 2008-03-21 2008-03-21 プロセサおよび情報処理装置
JP2008073433 2008-03-21
JP2008-073433 2008-03-21

Publications (2)

Publication Number Publication Date
CN101539852A true CN101539852A (zh) 2009-09-23
CN101539852B CN101539852B (zh) 2013-01-23

Family

ID=40193707

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101790878A Expired - Fee Related CN101539852B (zh) 2008-03-21 2008-11-27 用于执行条件存储指令的方法、处理器和信息处理设备

Country Status (5)

Country Link
US (1) US7945766B2 (zh)
EP (1) EP2104032B1 (zh)
JP (1) JP5326314B2 (zh)
KR (1) KR101016257B1 (zh)
CN (1) CN101539852B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107301031A (zh) * 2017-06-15 2017-10-27 西安微电子技术研究所 一种规格化浮点数据筛选电路

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8418154B2 (en) * 2009-02-10 2013-04-09 International Business Machines Corporation Fast vector masking algorithm for conditional data selection in SIMD architectures
KR101949417B1 (ko) 2011-12-02 2019-02-20 삼성전자주식회사 프로세서, 명령어 생성 장치 및 방법
US9459864B2 (en) * 2012-03-15 2016-10-04 International Business Machines Corporation Vector string range compare
US9195466B2 (en) * 2012-05-16 2015-11-24 Qualcomm Incorporated Fusing conditional write instructions having opposite conditions in instruction processing circuits, and related processor systems, methods, and computer-readable media
US9038042B2 (en) * 2012-06-29 2015-05-19 Analog Devices, Inc. Staged loop instructions
JP6435980B2 (ja) * 2015-04-27 2018-12-12 富士通株式会社 並列計算機、スレッド再割当判定方法及びスレッド再割当判定プログラム

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0185215B1 (en) * 1984-11-21 1993-09-22 Harris Corporation Forth-like language microprocessor
JPH01106174A (ja) * 1987-10-20 1989-04-24 Fujitsu Ltd 演算パイプライン制御方式
US5442289A (en) 1989-07-31 1995-08-15 Biomagnetic Technologies, Inc. Biomagnetometer having flexible sensor
EP0503514B1 (en) 1991-03-11 1998-11-18 Silicon Graphics, Inc. Backward-compatible computer architecture with extended word size and address space
JP3670290B2 (ja) 1995-02-14 2005-07-13 富士通株式会社 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法
US6112019A (en) * 1995-06-12 2000-08-29 Georgia Tech Research Corp. Distributed instruction queue
US5889984A (en) * 1996-08-19 1999-03-30 Intel Corporation Floating point and integer condition compatibility for conditional branches and conditional moves
JP3547585B2 (ja) * 1997-05-14 2004-07-28 三菱電機株式会社 条件実行命令を有するマイクロプロセッサ
JPH1173314A (ja) 1997-06-20 1999-03-16 Sony Corp マイクロプロセッサ
JP3570188B2 (ja) 1997-12-25 2004-09-29 富士通株式会社 可変長符号処理機構を有するデータ処理装置
US6671762B1 (en) 1997-12-29 2003-12-30 Stmicroelectronics, Inc. System and method of saving and restoring registers in a data processing system
US6049860A (en) * 1998-02-19 2000-04-11 International Business Machines Corporation Pipelined floating point stores
US6353883B1 (en) * 1998-08-04 2002-03-05 Intel Corporation Method and apparatus for performing predicate prediction
US6742111B2 (en) 1998-08-31 2004-05-25 Stmicroelectronics, Inc. Reservation stations to increase instruction level parallelism
US6714197B1 (en) * 1999-07-30 2004-03-30 Mips Technologies, Inc. Processor having an arithmetic extension of an instruction set architecture
US6393555B1 (en) * 1999-08-05 2002-05-21 Advanced Micro Devices, Inc. Rapid execution of FCMOV following FCOMI by storing comparison result in temporary register in floating point unit
US6513109B1 (en) * 1999-08-31 2003-01-28 International Business Machines Corporation Method and apparatus for implementing execution predicates in a computer processing system
US6425074B1 (en) * 1999-09-10 2002-07-23 Advanced Micro Devices, Inc. Method and apparatus for rapid execution of FCOM and FSTSW
US6687789B1 (en) 2000-01-03 2004-02-03 Advanced Micro Devices, Inc. Cache which provides partial tags from non-predicted ways to direct search if way prediction misses
WO2001067273A2 (en) * 2000-03-08 2001-09-13 Sun Microsystems, Inc. Vliw computer processing architecture with on-chip dynamic ram
JP2002082800A (ja) * 2000-09-06 2002-03-22 Sanyo Electric Co Ltd プログラム実行装置及び方法
US20030200343A1 (en) 2001-07-02 2003-10-23 Globespan Virata Incorporated Communications system using rings architecture
US7143126B2 (en) * 2003-06-26 2006-11-28 International Business Machines Corporation Method and apparatus for implementing power of two floating point estimation
JP3705367B2 (ja) * 2004-05-24 2005-10-12 株式会社日立製作所 命令処理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107301031A (zh) * 2017-06-15 2017-10-27 西安微电子技术研究所 一种规格化浮点数据筛选电路
CN107301031B (zh) * 2017-06-15 2020-08-04 西安微电子技术研究所 一种规格化浮点数据筛选电路

Also Published As

Publication number Publication date
CN101539852B (zh) 2013-01-23
EP2104032A1 (en) 2009-09-23
US20090240927A1 (en) 2009-09-24
JP5326314B2 (ja) 2013-10-30
KR101016257B1 (ko) 2011-02-25
EP2104032B1 (en) 2012-01-11
US7945766B2 (en) 2011-05-17
KR20090101061A (ko) 2009-09-24
JP2009230338A (ja) 2009-10-08

Similar Documents

Publication Publication Date Title
US20060190700A1 (en) Handling permanent and transient errors using a SIMD unit
CN101539852B (zh) 用于执行条件存储指令的方法、处理器和信息处理设备
CN101488084B (zh) 用于执行屏蔽加载和存储操作的设备、方法和系统
US5561808A (en) Asymmetric vector multiprocessor composed of a vector unit and a plurality of scalar units each having a different architecture
KR101655713B1 (ko) 이동 제거 연산들에서의 플래그 트래킹을 위한 시스템들 및 방법들
CN104049941A (zh) 跟踪指令的控制流程
US10248488B2 (en) Fault tolerance and detection by replication of input data and evaluating a packed data execution result
CN104995599A (zh) 使用硬件与软件组合的路径概况分析
US20120284488A1 (en) Methods and Apparatus for Constant Extension in a Processor
US20110302394A1 (en) System and method for processing regular expressions using simd and parallel streams
KR101624786B1 (ko) 기입마스크 레지스터의 트레일링 최하위 마스킹 비트를 결정하는 시스템, 장치, 및 방법
US5053986A (en) Circuit for preservation of sign information in operations for comparison of the absolute value of operands
US5119324A (en) Apparatus and method for performing arithmetic functions in a computer system
US6862676B1 (en) Superscalar processor having content addressable memory structures for determining dependencies
US7523152B2 (en) Methods for supporting extended precision integer divide macroinstructions in a processor
CN104216681A (zh) 一种cpu指令处理方法和处理器
EP1220091B1 (en) Circuit and method for instruction compression and dispersal in VLIW processors
US6442676B1 (en) Processor with different width functional units ignoring extra bits of bus wider than instruction width
US5752271A (en) Method and apparatus for using double precision addressable registers for single precision data
CN101216755A (zh) Risc处理器及其浮点寄存器的非对齐访存方法
US20040128475A1 (en) Widely accessible processor register file and method for use
US20240095113A1 (en) Processor and method of detecting soft error from processor
US11550584B1 (en) Implementing specialized instructions for accelerating Smith-Waterman sequence alignments
CN116737241B (zh) 一种指令融合方法、处理器核、处理器和计算机系统
US11822541B2 (en) Techniques for storing sub-alignment data when accelerating Smith-Waterman sequence alignments

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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130123

Termination date: 20201127