CN101539850A - 单精度浮点数据存储方法和处理器 - Google Patents
单精度浮点数据存储方法和处理器 Download PDFInfo
- Publication number
- CN101539850A CN101539850A CN200810178904A CN200810178904A CN101539850A CN 101539850 A CN101539850 A CN 101539850A CN 200810178904 A CN200810178904 A CN 200810178904A CN 200810178904 A CN200810178904 A CN 200810178904A CN 101539850 A CN101539850 A CN 101539850A
- Authority
- CN
- China
- Prior art keywords
- register
- precision floating
- data
- point data
- point
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 26
- 238000012545 processing Methods 0.000 claims description 90
- 238000003860 storage Methods 0.000 claims description 55
- 230000001052 transient effect Effects 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 20
- 230000015654 memory Effects 0.000 description 15
- 238000012360 testing method Methods 0.000 description 11
- 241001269238 Data Species 0.000 description 7
- 230000001419 dependent effect Effects 0.000 description 5
- 238000007726 management method Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000033228 biological regulation Effects 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
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)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Nonlinear Science (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
一种在包括寄存器的处理器中使用的单精度浮点数据存储方法,所述寄存器具有可以存储双精度浮点数据的尺寸,用于存储双精度浮点数据和单精度浮点数据,所述方法包括:如果指定单精度浮点数据处理,则对所述寄存器的高位半部分写入输入的单精度浮点数据,并对所述寄存器的低位半部分全部写入零。
Description
技术领域
本发明涉及处理器以及在处理器中使用的单精度浮点数据存储方法。
背景技术
为了改善处理器的性能,具有一种旁路功能,其中当通过获得算术操作的输入数据进行算术操作时在前一个指令的结果从算术单元输出并被写入浮点寄存器之前,使用来自算术单元的输出数据作为后续的输入数据。执行这种旁路功能需要用于检测对前一个指令的依赖性的电路。
与此同时,例如在SPARC-V9(SPARC:注册商标)体系结构中,浮点寄存器的寄存器地址是5比特的。因此,可以有32个指令。图1表示在SPARC-V9体系结构中浮点寄存器的配置。32个单精度浮点寄存器(4字节)被表示为%f0,%f1,%f2,…,%f30,%f31,32个双精度浮点寄存器(8字节)被表示为%d0,%d2,%d4,…,%d62。对于双精度浮点寄存器,其地址可以只用偶数来规定。双精度浮点寄存器%d(n)(0≤n≤30)(8字节)的赋植对应于2个单精度浮点寄存器%f(n)(4字节)和%f(n+1)(4字节)的合并。
假定一个单精度浮点寄存器被用作4字节寄存器,一个双精度浮点寄存器被用作8字节寄存器,其中合并2个单精度浮点寄存器,如SPARC-V9体系结构中那样。例如,如果进行对寄存器%d0输入双精度浮点数据(8字节)的算术操作,则必须检测寄存器%f0(4字节)和%f1(4字节)的两个输出定时,以执行上述的旁路功能。结果,和只检测8字节寄存器当中的依赖性相比,用于双精度浮点寄存器%d0到%d30的依赖性检测电路需要更大量的电路。
如果处理器中的电路量增加,则不仅其成本性能而且其操作频率降低。这导致处理器性能的劣化。因而,需要尽可能地减少处理器中的电路的量。
发明内容
因此,本发明的目的在于,通过提出一种用于在处理单精度浮点数据和双精度浮点数据的处理器中所使用的新的单精度浮点数据存储方法,尽可能减少用于配置执行旁路功能的依赖性检测电路的硬件的量。
一种在包括寄存器的处理器中使用的单精度浮点数据存储方法,所述寄存器具有可以存储双精度浮点数据的尺寸,用于存储双精度浮点数据和单精度浮点数据,所述方法包括:如果指定单精度浮点数据处理,则对所述寄存器的高位半部分写入输入的单精度浮点数据,并对所述寄存器的低位半部分全部写入零。
利用上述的单精度浮点数据存储方法,即使当处理单精度浮点数据处理时,也能由双精度浮点寄存器处理单精度浮点数据。因此,用于双精度浮点寄存器的依赖性检测电路可以不加改变地用作这些寄存器的依赖性检测电路。此外,单精度浮点数据被作为替换的单精度浮点数据处理,从而可大大减少用于算术单元的输入寄存器的数据选择电路的量。因而,可以减少处理器内硬件的量。结果,可以防止处理器变得复杂,从而改善操作频率。
附图说明
图1是表示SPARC-V9体系结构的浮点寄存器的配置的示意图;
图2是表示在本发明的实施例中使用的浮点寄存器的扩展的体系结构的示意图;
图3是表示替换的单精度浮点数据的格式的示意图;
图4是表示常规的单精度浮点数据的格式的示意图;
图5是表示扩展的算数寄存器(XAR)的配置的示意图;
图6是表示一种处理的流程图,该处理用于确定数据是作为常规单精度浮点数据还是作为替换的单精度浮点数据被处理;
图7是表示处理器的配置的方框图;
图8是一个示意图,用于说明替换的单精度浮点指令和常规的单精度浮点指令之间的区别;
图9是表示用于处理单精度浮点算术指令的算术处理单元的数据流的示意图;
图10是表示用于处理单精度浮点加载指令的加载处理单元的数据流的示意图;
图11是用于说明在常规的单精度浮点数据处理中在提交时用于更新浮点寄存器的处理的示意图;
图12是用于说明在替换的单精度浮点数据处理中在提交时用于更新浮点寄存器的处理的示意图;
图13是表示用于处理单精度浮点存储指令的存储处理单元的数据流的示意图;
图14是用于说明在SPARC-V9体系结构中寄存器地址的产生的示意图;
图15是用于说明当处理替换的单精度浮点数据时寄存器地址的产生的示意图;
图16是用于表示寄存器重命名表的配置的示意图;
图17是用于表示当在4字节的单元中管理数据时用于旁路数据到算术单元的电路的示意图;以及
图18是用于表示当在8字节的单元中管理数据时用于旁路数据到算术单元的电路的示意图。
具体实施方式
下面参照附图说明按照本发明的实施例。
首先说明按照本发明的实施例的处理器。
上面说明了在SPARC-V9中浮点寄存器的配置。下面针对按照本发明的实施例的处理器详细说明浮点寄存器。
如图2所示,被称为扩展算术寄存器(XAR)的寄存器借助于使用扩展前缀指令被更新,在这种处理器中,由浮点寄存器地址指示的一个区域被扩展。即,通过修改指令以便利用扩展的前缀指令访问浮点寄存器来扩展浮点寄存器的该区域。例如,通过增加扩展的算术寄存器(XAR)的3比特作为浮点寄存器地址,使双精度浮点寄存器(8字节)的数量增加到256,细节将在后面说明。
如果在具有图2所示的浮点寄存器结构的处理器中在4字节的单元中,可以使达到256个双精度浮点寄存器%d0到%d510(只用偶数编号指定)成为可指定的,并使256个单精度浮点寄存器%f0到%f255成为可指定的,则用于检测扩展寄存器的的依赖性的硬件电路变得非常大。
下面说明在具有图2所示的扩展浮点寄存器的处理器中使用的单精度浮点数据存储方法。这种方法是作为本发明的实施例进行说明的。不过,本发明不限于下面所述的实施例,自然,在不脱离本发明的构思的范围内,可以用多种方式应用本发明。即,可以在具有任何结构的处理器中实施按照本发明的单精度浮点数据存储方法,而不受实施例中所述的处理器结构的限制。
在本实施例中,当利用扩展的算术寄存器(XAR)扩展单精度浮点指令时,规定数据以下述方式写入目的寄存器:在作为双精度浮点数据长度的8字节长的寄存器的高位4字节存储单精度浮点数据,并在低位4字节全部存储零。下面把用这种格式存储的单精度浮点数据称为“替换的单精度浮点数据”。替换的单精度浮点数据的格式如图3所示。
与此相对,单精度浮点数据,其4个字节通常被存储在浮点寄存器中,下面称为常规单精度浮点数据。常规单精度浮点数据的格式如图4所示。
如上所述,单精度浮点数据被配置使得可以作为替换的单精度浮点数据,即在本实施例中为8字节数据,被存储。结果,可以利用在SPARC-V9中通常规定的寄存器%d32到%d62以及被规定要通过扩展的算术寄存器(XAR)扩展的寄存器%d64到%d510,进行单精度浮点算术操作。
此外,当利用扩展的算术寄存器(XAR)修改单精度浮点指令时,也用类似方式配置其地址小于%d32的寄存器,使得可以作为8字节的替换的单精度浮点数据寄存器被利用。即,在寄存器%d0到%d30(8字节长,仅偶数编号是可指定的)的高位4字节中存储单精度数据,在其低位4字节中全部存储零。
按照下述方式确定是通过使用4字节32个寄存器%f0到%f31作为常规单精度浮点数据还是作为替换的单精度浮点数据来存储数据。
首先,在一个指令集中定义用于更新扩展的算术寄存器(XAR)的名称为SXAR(集XAR)的指令。
扩展的算术寄存器(XAR)具有图5所示的配置。图5所示的VAL(有效比特)具有1比特宽的值,并且如果VAL被设置为“1”(VAL=1),则表示该扩展的算术寄存器是有效的。RD是存储用于指定扩展指令的目的寄存器的地址的扩展的3比特的字段。此外,RS1-RS3分别是地址扩展字段,存储用于指定源寄存器的地址的扩展的3比特。这3比特用作现有指令中不足的高位3比特,以便使浮点寄存器的数量增加到256。即,如果扩展的算术寄存器(XAR)的VAL(有效比特)被设为“1”,则通过使用扩展地址和浮点指令的操作数寄存器地址的5比特,可以指定多达256个8字节(双精度)寄存器。
在这种XAR配置中,如果扩展的算术寄存器(XAR)的VAL(有效比特)通过上述的SXAR指令被设为“1”,则可以确定单精度浮点处理指令被修改(扩展),或者,如果有效比特未被设置为“1”,则可以确定单精度浮点处理指令未被修改。
图6是一个流程图,表示用于确定是作为常规的单精度浮点数据还是作为替换的单精度浮点数据存储数据的处理。首先,在步骤S51,单精度浮点指令被译码。在步骤S52,确定扩展的算术寄存器(XAR)的VAL(有效比特)是否被设为“1”。如果在步骤S52确定VAL被设为“1”(“是”),则通过识别浮点寄存器被扩展而作为替换的单精度浮点数据来处理数据(步骤S53)。或者,如果在步骤S52确定VAL被设为“0”(“否”),则作为常规单精度浮点数据来处理数据(步骤S54)。
对于通过扩展的算术寄存器(XAR)成为可指定的扩展寄存器,即使进行单精度浮点数据处理时也能如上所述使用用于检测8字节数据单位的寄存器当中的依赖性的电路。即,可以使用用于双精度浮点数据的常规的寄存器依赖性检测电路,从而不需要4字节数据单位的寄存器依赖性检测电路。
此外,指令译码单元确定是要执行常规单精度浮点数据处理还是替换的单精度浮点数据处理,例如,是要以4字节为单位还是要以8字节为单位进行寄存器地址的产生或者寄存器更新。因此,算术处理单元、加载处理单元和存储处理单元不需要确定数据是常规的单精度浮点数据还是替换的单精度浮点数据。在算术处理单元、加载处理单元和存储处理单元中,可以分别利用公共的电路进行处理。因而,不需要为这种确定而增加硬件。
下面参照附图详细说明在本实施例的处理器中执行的单精度浮点寄存器算术处理、加载指令处理和存储指令处理。
首先,图7示出了处理器的配置。
处理器60包括初级指令高速缓存61,次级高速缓存/存储单元62,指令译码单元63,寄存器重命名表64,算术处理单元65,地址产生单元66,重命名处理器67,加载处理单元68,存储处理单元69,定点寄存器70,浮点寄存器71,初级数据高速缓存72,提交控制单元73,以及扩展的算术寄存器XAR 74。
初级指令高速缓存61和初级数据高速缓存72是高速缓冲存储器,而次级高速缓存/存储单元62是常规存储器或次级高速缓冲存储器。定点寄存器70具有常规的配置。浮点寄存器71由扩展的算术寄存器XAR 74扩展,并具有图2所示的配置。
指令译码单元63对指令译码。寄存器重命名表64是配置有锁存器的电路,并用于检测寄存器当中的依赖性。算术处理单元65配置有算术单元,用于执行算术处理。地址产生单元66根据译码指令产生要被访问的地址。重命名寄存器67是用于暂时保持由算术处理单元65执行的处理的结果的寄存器。加载处理单元68和存储处理单元69是用于分别处理加载指令和存储指令的电路。提交控制单元73控制寄存器更新和存储器更新。此外,如果由扩展的算术寄存器XAR 74执行单精度浮点指令,则作为替换的单精度浮点数据处理8字节长的单精度浮点数据。注意,在更新时在替换的单精度浮点数据的低位4字节都存储零。
图8说明通过替换的单精度浮点指令把数据写入浮点寄存器%d0的情况以及通过常规单精度浮点指令把数据写入浮点寄存器%f0的情况。假定在浮点寄存器%d0(%f0和%f1)中分别预存储%f0=X,%f1=Y的状态下,写入单精度浮点数据Z。在这种情况下,如果数据通过替换的单精度浮点指令写入,则%f0=Z,%f1=“都为零”,或者如果数据通过常规单精度浮点指令写入,则寄存器%f0被更新为%f0=Z,寄存器%f1不被更新而保持为Y。
下面首先说明常规单精度浮点算术操作和加载指令以及替换的单精度浮点算术操作和加载指令,其旨在把单精度浮点数据写入浮点寄存器中。
图9表示用于处理单精度浮点算术指令的算术处理单元的数据流。如图所示,在浮点算术处理单元65中,从用于控制指令的指令译码单元63接收指令操作码,并对该指令操作码进行操作码译码84。如果作为译码结果命令执行单精度浮点算术操作,则浮点算术单元81只使用由输入寄存器82输入的数据的高位4字节来执行算术操作,而忽略低位4字节。然后,浮点算术单元81作为高位4字节输出算术操作的结果,并且还输出零作为低位4字节。这8个字节暂时(once)被存储在算术输出寄存器83中,并在下一个周期被写入重命名寄存器67。
图10示出了用于处理单精度浮点加载指令的加载处理单元的数据流。如果从用于控制指令的指令译码单元63收到以4字节为单位加载数据的指令,则从存储器加载数据的初级数据高速缓存72在加载输出寄存器91的高位4字节暂时存储高速缓冲存储器的数据,并且如图10所示还在低位4字节存储全部零。在下一个周期,根据地址产生单元66指定的地址,总共8个字节的数据从加载输出寄存器91被写入重命名寄存器67。
指令译码单元63对单精度浮点指令是否通过扩展的算术寄存器XAR74来修改进行译码。指令译码单元63产生并向图9所示的算术处理单元65和图10所示的加载处理单元68传送常规单精度浮点指令和替换的单精度浮点指令的相同的操作码。这些处理单元分别接收这个操作码并执行其单精度浮点处理。至于处理单元分别执行图9和图10所示的单精度浮点算术处理和加载处理,它们不需要通过在常规单精度浮点处理和替换的单精度浮点处理之间进行确定来执行它们的处理。
由指令译码单元63进行关于是执行常规单精度浮点处理还是替换的单精度浮点处理的控制。
写入常规单精度浮点数据即4字节数据的情况和写入替换的单精度浮点数据即8字节数据的情况分别示于图11和图12,下面参照这些图进行说明。
在常规单精度浮点算术指令或常规单精度浮点加载指令的情况下,指令译码单元63命令提交控制单元73,其发出一个4字节的寄存器更新指令,将4字节写入浮点寄存器71中,这更新浮点寄存器。与此相对,在替换的浮点算术指令或替换的浮点加载指令(或者双精度浮点算术指令或双精度浮点加载指令)的情况下,指令译码单元63命令提交控制单元73对浮点寄存器71写入8字节。在提交控制单元和寄存器文件单元中,8字节写入指令与用于写双精度浮点数据的常规处理的8字节写入指令相同。
提交控制单元73具有1比特用于记录这些指令,即,要对浮点寄存器进行4字节写入还是进行8字节写入(图11和图12所示的8字节长度比特)。当提交指令时,根据这1比特的信息,从存储算术操作结果或加载结果的重命名寄存器67的高位字节向浮点寄存器写入指定长度的数据。
在图11的提交控制单元73的各组元被放大的部分中,浮点写比特=“1”,8字节长度比特=“0”。如果要被写的浮点寄存器的地址是偶数编号,则重命名寄存器67的高位4字节的数据被写入8字节浮点寄存器的高位4字节。可替选地,如果要被写的浮点寄存器的地址是奇数编号,则向8字节浮点寄存器的低位4字节写入重命名寄存器67的高位4字节的数据。
此外,在提交控制单元73的各组元被放大的图12的部分中,浮点写比特=“1”,8字节长度比特=“1”。重命名寄存器67的高位4字节的数据被写入要被写的8字节浮点寄存器的高位4字节,重命名寄存器67的低位4字节的数据被写入8字节浮点寄存器的低位4字节。
下面说明常规单精度浮点存储指令和替换的单精度浮点存储指令,它们对高速缓冲存储器写入单精度浮点数据。
用于处理单精度浮点存储指令的存储处理单元69的数据流如图13所示。在存储处理单元69中,也执行通常的处理,而不管存储指令是常规单精度浮点存储指令还是替换的单精度浮点存储指令。即,响应于单精度浮点存储指令,存储处理单元69从浮点寄存器71读出存储的数据,并使要被存储的4字节数据对准并写入存储缓冲器121的高位4字节,存储缓冲器121是对于每个存储指令指定的,并且存在于存储处理单元69中。存储的数据的低位4字节可以是任何数据,因为当被写入高速缓冲存储器时,这些字节被忽略。
存储器地址产生单元75产生存储器地址,并把产生的地址传送到存储处理单元69。
指令译码单元63译码常规单精度浮点存储指令和替换的单精度浮点存储指令,通过把写入高速缓冲存储器的长度设置为4字节,这些指令把单精度浮点数据写入高速缓冲存储器。用于存储数据的地址被传送给存储缓冲器121,与此同时,传送存储长度信息(4字节)。当提交存储指令时,从提交控制单元73把存储提交指令信号传送到存储处理单元69,该信号对于常规单精度浮点存储指令和替换的单精度浮点存储指令是共同的。按照这个指令,存储处理单元69执行对高速缓冲存储器(初级数据高速缓冲存储器72)写入存储的数据的高位4字节的处理。当处理单精度浮点存储指令时,执行和上述相同的操作,而不在存储处理单元69和提交控制单元73中在常规单精度浮点存储指令和替换的单精度浮点存储指令之间进行确定。指令是常规单精度浮点存储指令还是替换的单精度浮点存储指令,取决于产生要读取的寄存器地址的方式。
下面说明由指令译码单元63进行的寄存器地址的产生。对于通过扩展的算术寄存器(XAR)修改的所有单精度浮点指令(算术指令、加载指令和存储指令),寄存器地址的产生是共同的。附带说明,指令译码单元63不仅对通过扩展的算术寄存器XAR 74修改的单精度浮点指令产生寄存器地址,而且对常规单精度浮点指令产生寄存器地址。
图14是用于说明在SPARC-V9的体系结构中寄存器地址的产生的示意图。该图表示在操作码的寄存器地址字段和寄存器地址编号之间的对应关系。根据这些对应关系产生寄存器地址。对于SPARC-V9体系结构,在由单精度浮点寄存器中的指令操作码的5位寄存器地址字段所表示的寄存器地址的位分配(bit assignment)与双精度浮点寄存器中的存在差别。如果使用常规单精度浮点寄存器,则指令操作码的寄存器地址字段与被命令的寄存器编号匹配,所述寄存器编号指示从0到31。对于使用双精度浮点寄存器的指令,寄存器地址字段的比特[0]被移动到寄存器地址比特[5],并且寄存器地址比特[0]总被设置为“0”。即,可以只以偶数编号指令双精度浮点寄存器地址,其范围从0到62。
图15是用于说明当处理替换的单精度浮点数据时寄存器地址的产生的示意图。根据扩展的算术寄存器XAR 74的有效比特是否被设置为1,如图6所示,确定是否处理替换的单精度浮点数据。如果处理8字节的替换的单精度浮点数据,其在被更新时所有的零被存储在低位4字节,则如上所述在算术处理单元65、加载处理单元68和存储处理单元69中作为单精度浮点数据处理输入和输出的数据。不过,如果进行从指令操作码的寄存器地址字段到物理寄存器地址的转换,则按照双精度浮点寄存器的转换方法进行这种转换。即,对于替换的单精度浮点,只指令偶数编号的寄存器地址。在图2所示的处理器中,寄存器被扩展到256个,可以规定寄存器地址为0到510(仅偶数编号)。
如上所述,当处理常规单精度浮点数据时,指令译码单元63产生寄存器地址,当处理替换的单精度浮点数据时,其也产生寄存器地址。
已经说明了本实施例中的处理器的操作,这些操作是按照单精度浮点算术指令、单精度浮点加载指令和单精度浮点存储指令进行的。
下面说明用于检测指令之间的数据依赖性的机制。
寄存器重命名表的配置示于图16。
在执行无顺序处理的处理器中,进行用于检测寄存器当中的依赖性的寄存器重命名。对于更新浮点寄存器的常规单精度算术指令,必须以4字节为单位进行寄存器重命名,或者对于替换的浮点算术指令,必须以8字节为单位进行寄存器重命名。为了进行寄存器重命名,需要用于表示每个寄存器是否处于写未决状态的1比特,以及用于保持被重命名的重命名寄存器的最新地址的表。一般地说,该表在处理器中必须以高的速度被参考和更新。因此,该表在接近指令译码电路的位置配置有锁存电路。与配置有锁存电路的该表的参考和更新有关的电路规模的减小能够大大改善处理器的操作频率。在SPARC-V9体系结构中,寄存器%f0到%f31,即%d0到%d30必需被分配4字节长寄存器的重命名寄存器编号,并需要用于保持%d0到%d30的32个寄存器的重命名寄存器编号的表。与此同时,寄存器%d32到%d510被分配给8字节长寄存器的重命名寄存器编号。因此,需要用于保持240个寄存器的重命名寄存器编号的表。这是因为寄存器%d32到%d510通过把单精度浮点数据看成是替换的单精度浮点数据以8字节为单位被管理。如果规定通过使用4字节长的常规单精度浮点数据和范围从%f0到%f255的单精度浮点寄存器管理寄存器,则只需要用于保持寄存器%f32到%f255的224个重命名寄存器编号。
即,如果单精度浮点数据作为替换的单精度浮点数据被处理,则单精度浮点数据可被存储在扩展的寄存器部分,与此同时,对于寄存器重命名表,可以使用用于双精度浮点寄存器的依赖性检测电路。因而,不需要增加硬件。
附带说明,如果单精度浮点数据被作为替换的单精度浮点数据处理,也可以减少用于对算术单元输入数据的选择电路。普通处理器进行数据旁路控制,不仅从寄存器而且从算术单元的输出结果(在被写到寄存器之前)获得算术操作的输入数据,以便快速开始执行算术处理。
当数据以4字节为单位被管理时用于算术单元的数据旁路电路以及当数据以8字节为单位被管理时用于算术单元的数据旁路电路分别示于图17和图18。这些图分别表示以下配置:算术单元的三个输入寄存器之一被放大和显示,并且输入数据从浮点寄存器、重命名寄存器、算术单元的输出结果以及加载的结果数据当中的任何一个选择。
当执行8字节双精度浮点算术指令时,必需使用8字节数据作为输入数据。根据程序,双精度浮点算术操作和单精度浮点算术操作有时被混和。
假定单精度浮点数据以4字节为单位被管理,程序必须被设计使得更新单精度浮点寄存器%f0和%f1,并在更新之后立即使双精度浮点寄存器%d0成为可读的。即,必须以4字节为单位选择输入数据,以便即使高位4字节和低位4字节的数据被从不同的源输出时(例如高位4字节从算术单元的输出结果获得,低位4字节从浮点寄存器获得),也能正确地由硬件进行数据旁路控制。因此,对于高位和低位4字节,分别需要这个电路。图17表示这种配置。
与此同时,当以8字节为单位管理单精度浮点数据时,不单独处理高位4字节的数据和低位4字节的数据。因此,可以执行用于合并的8字节的数据旁路处理(图18)。
通过用这种方式作为替换的单精度浮点数据处理单精度浮点数据,可以大大减少用于算术单元的输入寄存器的数据选择电路的量。
如上所述,利用按照本实施例的单精度浮点寄存器数据存储方法,即使当进行单精度浮点数据处理时,也能由双精度浮点寄存器处理单精度浮点数据。结果,可以使用用于双精度浮点寄存器的依赖性检测电路作为用于检测寄存器当中的依赖性的电路。这可以使得不需要增加硬件电路。
附带说明,指令译码单元确定是要执行常规的单精度浮点数据处理还是执行替换的单精度浮点数据处理,例如,是要以4字节为单位(单精度浮点数据长度)还是以8字节为单位(替换的单精度浮点数据长度)进行寄存器地址产生或者进行寄存器更新。此外,在算术处理单元、加载处理单元以及存储处理单元中,完全共同的电路可以处理两种类型的指令,例如常规单精度浮点指令和替换的单精度浮点指令,而不在常规单精度浮点数据和替换的单精度浮点数据之间进行确定。
此外,通过作为替换的单精度浮点数据处理单精度浮点数据,可以大大减少用于算术单元的输入寄存器的数据选择电路的量。
如上所述,利用按照本实施例的单精度浮点数据存储方法,可以减少处理器的硬件量。因为硬件电路不变得复杂,便可以改善处理器的操作频率,这使得能够改善处理器的性能。
附带说明,在浮点加载和存储处理中,在存储器中以4字节为单位保持单精度浮点数据,而不管指令是常规单精度浮点指令还是替换的单精度浮点指令。也可以处理程序的输入和输出数据,这些数据是现有的单精度浮点数据。
至此已经详细说明了按照本发明的实施例,不过,本发明不限于上述的实施例。已经说明了对其中浮点寄存器区域被扩展的处理器应用按照本实施例的单精度浮点数据存储方法。不过,这种方法可用于具有任何配置的处理器,而不限于其中浮点寄存器区域被扩展的处理器。
如上所述,利用按照本发明的单精度浮点数据存储方法,即使在处理单精度浮点数据时,也能利用8字节双精度浮点寄存器处理单精度浮点数据。因此,可以使用用于双精度浮点寄存器的依赖性检测电路,而不改变为用于这些寄存器的寄存器依赖性检测电路。这使得不需要增加作为依赖性检测电路的硬件。
Claims (13)
1.一种在包括寄存器的处理器中使用的单精度浮点数据存储方法,所述寄存器具有可以存储双精度浮点数据的尺寸,用于存储双精度浮点数据和单精度浮点数据,所述方法包括:
如果指定单精度浮点数据处理,则对所述寄存器的高位半部分写入输入的单精度浮点数据,并且对所述寄存器的低位半部分全部写入零。
2.一种在包括寄存器的处理器中使用的单精度浮点数据存储方法,所述寄存器具有可以存储双精度浮点数据的尺寸,用于存储双精度浮点数据和单精度浮点数据,所述方法包括:
如果指定单精度浮点数据处理并指定第一处理,则对所述寄存器的高位半部分写入输入的单精度浮点数据,并对所述寄存器的低位半部分全部写入零;以及
如果指定单精度浮点数据处理并指定第二处理,则对所述寄存器的高位半部分写入输入的单精度浮点数据,并对所述寄存器的低位半部分不写入数据。
3.如权利要求2所述的单精度浮点数据存储方法,还包括:
对指令进行译码,并根据该指令的译码结果执行对寄存器的写处理。
4.如权利要求3所述的单精度浮点数据存储方法,还包括:
在数据被写入寄存器之前,暂时在重命名寄存器中存储对应于所述第一处理和/或所述第二处理的数据;
如果指定第一处理,则写入重命名寄存器的数据;以及
如果指定第二处理,若包括在译码结果中的寄存器的写目的地址是偶数,则把重命名寄存器的高位半部分的数据写到寄存器的高位半部分,若寄存器的写目的地址是奇数,则把重命名寄存器的高位半部分的数据写到寄存器的低位半部分。
5.一种处理器,包括:
用于存储双精度浮点数据和单精度浮点数据的寄存器;以及
控制单元,用于如果指定单精度浮点数据处理,则写输入的单精度浮点数据到寄存器的高位半部分,并对寄存器的低位半部分全部写入零。
6.一种处理器,包括:
寄存器,其具有可以存储双精度浮点数据的尺寸,用于存储双精度浮点数据和单精度浮点数据;以及
控制单元,用于如果指定单精度浮点数据处理并指定第一处理,则写输入的单精度浮点数据到寄存器的高位半部分,并对寄存器的低位半部分全部写入零,或者用于如果指定单精度浮点数据处理并指定第二处理,则写输入的单精度浮点数据到寄存器的高位半部分,并且不写数据到寄存器的低位半部分。
7.如权利要求6所述的处理器,还包括:
用于对指令译码的译码器,其中
控制单元根据译码器对指令的译码结果来执行对寄存器的写处理。
8.如权利要求6所述的处理器,还包括:
重命名寄存器,用于在数据被写入寄存器之前暂时存储对应于第一处理或第二处理的数据;以及
提交控制单元,用于设置由译码器译码的指令的控制信号和寄存器的写目的地址,并用于提交数据在寄存器中的存储,该数据被存储在重命名寄存器中,其中
如果指定第一处理,则不变地写重命名寄存器的数据,以及
如果指定第二处理,若由提交控制单元设置的寄存器的写目的地址是偶数,则写重命名寄存器的高位半部分的数据到寄存器的高位半部分,若寄存器的写目的地址是奇数,则写重命名寄存器的高位半部分的数据到寄存器的低位半部分。
9.如权利要求6所述的指定第一处理或第二处理的处理器,还包括用于保持指定信息的第二寄存器。
10.如权利要求9所述的处理器,其中
第二寄存器是扩展的算术寄存器,并且根据该扩展的算术寄存器是否有效来确定处理是第一处理还是第二处理。
11.如权利要求9所述的处理器,还包括:
译码器,用于对指令进行译码,其中
当译码器译码用于命令进行单精度浮点算术处理或者单精度浮点加载/存储处理的指令时,根据第二寄存器的指定,以单精度浮点数据的单位或者以双精度浮点数据的单位命令读/写寄存器地址。
12.如权利要求9所述的处理器,还包括:
用于对指令译码的译码器;
用于执行算术处理的算术处理单元;以及
用于执行加载处理的加载处理单元,其中
当译码用于命令进行单精度浮点算术处理或单精度浮点加载处理的指令时,译码器对应于第一处理和第二处理向算术处理单元和加载处理单元传送共同的操作码,以及
算术处理单元和加载处理单元向寄存器的高位半部分输出结果,并向低位半部分全部输出零。
13.如权利要求9所述的处理器,还包括:
用于对指令译码的译码器;
用于执行算术处理的算术处理单元;以及
用于执行存储处理的存储处理单元,其中
当译码用于命令进行单精度浮点算术处理或单精度浮点存储处理的指令时,译码器对应于第一处理和第二处理向算术处理单元和存储处理单元传送共同的操作码,以及
通过只使用寄存器的高位半部分的长度的数据作为输入,算术处理单元和存储处理单元分别执行算术处理和存储处理。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008-073434 | 2008-03-21 | ||
JP2008073434 | 2008-03-21 | ||
JP2008073434A JP5309636B2 (ja) | 2008-03-21 | 2008-03-21 | 演算処理装置及び演算処理装置の制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101539850A true CN101539850A (zh) | 2009-09-23 |
CN101539850B CN101539850B (zh) | 2015-04-01 |
Family
ID=40122469
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810178904.8A Expired - Fee Related CN101539850B (zh) | 2008-03-21 | 2008-11-27 | 单精度浮点数据存储方法和处理器 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8412761B2 (zh) |
EP (1) | EP2104033B1 (zh) |
JP (1) | JP5309636B2 (zh) |
KR (1) | KR101026821B1 (zh) |
CN (1) | CN101539850B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101930355A (zh) * | 2010-08-24 | 2010-12-29 | 中国航天科技集团公司第九研究院第七七一研究所 | 实现寄存器文件分组编址、读写控制方法的寄存器电路 |
CN101930356A (zh) * | 2010-08-24 | 2010-12-29 | 中国航天科技集团公司第九研究院第七七一研究所 | 用于浮点协处理器的寄存器文件分组编址、读写控制方法 |
CN103984524A (zh) * | 2014-05-15 | 2014-08-13 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种面向risc处理器的三端口浮点寄存器文件 |
CN108304217A (zh) * | 2018-03-09 | 2018-07-20 | 中国科学院计算技术研究所 | 将长位宽操作数指令转换为短位宽操作数指令的方法 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5309636B2 (ja) * | 2008-03-21 | 2013-10-09 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US20170322808A1 (en) * | 2016-05-05 | 2017-11-09 | Cirrus Logic International Semiconductor Ltd. | Low-power processor with support for multiple precision modes |
US10481908B2 (en) | 2017-06-23 | 2019-11-19 | International Business Machines Corporation | Predicted null updated |
US10310814B2 (en) | 2017-06-23 | 2019-06-04 | International Business Machines Corporation | Read and set floating point control register instruction |
US10725739B2 (en) | 2017-06-23 | 2020-07-28 | International Business Machines Corporation | Compiler controls for program language constructs |
US10379851B2 (en) | 2017-06-23 | 2019-08-13 | International Business Machines Corporation | Fine-grained management of exception enablement of floating point controls |
US10514913B2 (en) | 2017-06-23 | 2019-12-24 | International Business Machines Corporation | Compiler controls for program regions |
US10684852B2 (en) | 2017-06-23 | 2020-06-16 | International Business Machines Corporation | Employing prefixes to control floating point operations |
US10740067B2 (en) | 2017-06-23 | 2020-08-11 | International Business Machines Corporation | Selective updating of floating point controls |
US10671497B2 (en) | 2018-01-19 | 2020-06-02 | International Business Machines Corporation | Efficient and selective sparing of bits in memory systems |
JP6604393B2 (ja) | 2018-03-08 | 2019-11-13 | 日本電気株式会社 | ベクトルプロセッサ、演算実行方法、プログラム |
US11372643B2 (en) * | 2018-11-09 | 2022-06-28 | Intel Corporation | Systems and methods for performing instructions to convert to 16-bit floating-point format |
US11093246B2 (en) | 2019-09-06 | 2021-08-17 | International Business Machines Corporation | Banked slice-target register file for wide dataflow execution in a microprocessor |
US11119774B2 (en) | 2019-09-06 | 2021-09-14 | International Business Machines Corporation | Slice-target register file for microprocessor |
US11157276B2 (en) * | 2019-09-06 | 2021-10-26 | International Business Machines Corporation | Thread-based organization of slice target register file entry in a microprocessor to permit writing scalar or vector data to portions of a single register file entry |
US20240004664A1 (en) * | 2022-06-30 | 2024-01-04 | Advanced Micro Devices, Inc. | Split register list for renaming |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61138333A (ja) | 1984-12-10 | 1986-06-25 | Nec Corp | 演算モジユ−ル |
US5740093A (en) * | 1995-12-20 | 1998-04-14 | Intel Corporation | 128-bit register file and 128-bit floating point load and store for quadruple precision compatibility |
US5778247A (en) * | 1996-03-06 | 1998-07-07 | Sun Microsystems, Inc. | Multi-pipeline microprocessor with data precision mode indicator |
US5784588A (en) * | 1997-06-20 | 1998-07-21 | Sun Microsystems, Inc. | Dependency checking apparatus employing a scoreboard for a pair of register sets having different precisions |
US5884070A (en) * | 1997-06-25 | 1999-03-16 | Sun Microsystems, Inc. | Method for processing single precision arithmetic operations in system where two single precision registers are aliased to one double precision register |
JP3526269B2 (ja) | 2000-12-11 | 2004-05-10 | 株式会社東芝 | ネットワーク間中継装置及び該中継装置における転送スケジューリング方法 |
JP4443100B2 (ja) | 2002-07-31 | 2010-03-31 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラム変換方法、これを用いたデータ処理装置及びプログラム |
US7191316B2 (en) | 2003-01-29 | 2007-03-13 | Sun Microsystems, Inc. | Method and a system for using same set of registers to handle both single and double precision floating point instructions in an instruction stream |
US7418606B2 (en) | 2003-09-18 | 2008-08-26 | Nvidia Corporation | High quality and high performance three-dimensional graphics architecture for portable handheld devices |
US20070011222A1 (en) | 2005-07-07 | 2007-01-11 | Dance Sherman M | Floating-point processor for processing single-precision numbers |
JP5309636B2 (ja) * | 2008-03-21 | 2013-10-09 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
-
2008
- 2008-03-21 JP JP2008073434A patent/JP5309636B2/ja not_active Expired - Fee Related
- 2008-11-10 EP EP08168705A patent/EP2104033B1/en not_active Expired - Fee Related
- 2008-11-24 US US12/276,788 patent/US8412761B2/en not_active Expired - Fee Related
- 2008-11-27 CN CN200810178904.8A patent/CN101539850B/zh not_active Expired - Fee Related
- 2008-11-28 KR KR1020080120003A patent/KR101026821B1/ko active IP Right Grant
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101930355A (zh) * | 2010-08-24 | 2010-12-29 | 中国航天科技集团公司第九研究院第七七一研究所 | 实现寄存器文件分组编址、读写控制方法的寄存器电路 |
CN101930356A (zh) * | 2010-08-24 | 2010-12-29 | 中国航天科技集团公司第九研究院第七七一研究所 | 用于浮点协处理器的寄存器文件分组编址、读写控制方法 |
CN101930356B (zh) * | 2010-08-24 | 2013-03-20 | 中国航天科技集团公司第九研究院第七七一研究所 | 用于浮点协处理器的寄存器文件分组编址、读写控制方法 |
CN101930355B (zh) * | 2010-08-24 | 2013-07-24 | 中国航天科技集团公司第九研究院第七七一研究所 | 实现寄存器文件分组编址、读写控制方法的寄存器电路 |
CN103984524A (zh) * | 2014-05-15 | 2014-08-13 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种面向risc处理器的三端口浮点寄存器文件 |
CN103984524B (zh) * | 2014-05-15 | 2016-07-06 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种面向risc处理器的三端口浮点寄存器文件 |
CN108304217A (zh) * | 2018-03-09 | 2018-07-20 | 中国科学院计算技术研究所 | 将长位宽操作数指令转换为短位宽操作数指令的方法 |
CN108304217B (zh) * | 2018-03-09 | 2020-11-03 | 中国科学院计算技术研究所 | 将长位宽操作数指令转换为短位宽操作数指令的方法 |
Also Published As
Publication number | Publication date |
---|---|
KR101026821B1 (ko) | 2011-04-04 |
JP5309636B2 (ja) | 2013-10-09 |
CN101539850B (zh) | 2015-04-01 |
KR20090101064A (ko) | 2009-09-24 |
JP2009230339A (ja) | 2009-10-08 |
EP2104033B1 (en) | 2011-07-06 |
US20090240757A1 (en) | 2009-09-24 |
EP2104033A1 (en) | 2009-09-23 |
US8412761B2 (en) | 2013-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101539850A (zh) | 单精度浮点数据存储方法和处理器 | |
CN102792265B (zh) | 基于机器状态的指令破解 | |
JP6849274B2 (ja) | 融合された単一のサイクルのインクリメント−比較−ジャンプを実施するための命令及びロジック | |
CN100468323C (zh) | 产生早期指令结果的管线式微处理器、装置以及方法 | |
CN114625423A (zh) | 用于执行将矩阵变换为行交错格式的指令的系统和方法 | |
CN105164650A (zh) | 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置 | |
US20070113060A1 (en) | Floating point status/control register encodings for speculative register field | |
CN103999037A (zh) | 用于响应于单个指令来执行横向相加或相减的系统、装置和方法 | |
TW201403472A (zh) | 最佳化暫存器初始化操作 | |
CN115686633A (zh) | 用于实现链式区块操作的系统和方法 | |
CN111767516A (zh) | 用于利用所选择的舍入来执行浮点加法的系统和方法 | |
CN104115114A (zh) | 经改进的提取指令的装置和方法 | |
CN104335166A (zh) | 用于执行混洗和操作(混洗-操作)的系统、装置和方法 | |
TW202307669A (zh) | 用於在異質處理資源上調適性地排程工作的設備及方法 | |
CN101470599B (zh) | 处理单元 | |
CN104025022A (zh) | 用于具有推测支持的向量化的装置和方法 | |
CN104246745A (zh) | 用于控制mxcsr的方法及装置 | |
CN113885942A (zh) | 用于将片寄存器对归零的系统和方法 | |
KR101016257B1 (ko) | 프로세서 및 정보 처리 장치 | |
CN116860334A (zh) | 用于计算两个区块操作数中的半字节的数量积的系统和方法 | |
CN104081342A (zh) | 经改进的插入指令的装置和方法 | |
JP2001005675A (ja) | プログラム変換装置及びプロセッサ | |
CN114691217A (zh) | 用于8位浮点矩阵点积指令的装置、方法和系统 | |
CN104025025A (zh) | 用于对打包数据元素执行增量编码的系统、装置和方法 | |
CN104137052A (zh) | 用于选择向量计算的元素的装置和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
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: 20150401 Termination date: 20201127 |