CN103399727A - 硬件整数饱和侦测器、侦测饱和的方法及其硬件装置 - Google Patents
硬件整数饱和侦测器、侦测饱和的方法及其硬件装置 Download PDFInfo
- Publication number
- CN103399727A CN103399727A CN201310219483XA CN201310219483A CN103399727A CN 103399727 A CN103399727 A CN 103399727A CN 201310219483X A CN201310219483X A CN 201310219483XA CN 201310219483 A CN201310219483 A CN 201310219483A CN 103399727 A CN103399727 A CN 103399727A
- Authority
- CN
- China
- Prior art keywords
- signal
- saturated
- integer
- valued
- round values
- 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 47
- 229920006395 saturated elastomer Polymers 0.000 claims description 187
- 230000006835 compression Effects 0.000 claims description 64
- 238000007906 compression Methods 0.000 claims description 64
- 238000005056 compaction Methods 0.000 claims description 45
- 238000012856 packing Methods 0.000 abstract 4
- 238000003860 storage Methods 0.000 description 30
- 230000008569 process Effects 0.000 description 22
- 238000007667 floating Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000014759 maintenance of location Effects 0.000 description 6
- 230000008054 signal transmission Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006116 polymerization reaction Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012360 testing method 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一种硬件整数饱和侦测器、侦测饱和的方法及其硬件装置,该硬件整数饱和侦测器用以侦测压缩32位整数值的压缩运算是否导致饱和,以及侦测压缩第一16位整数值与第二16位整数值的压缩运算是否导致饱和,其中该第一16位整数值为该32位整数值的较高位16个位整数值,该第二16位整数值为该32位整数值的较低位16个位整数值,该整数饱和侦测器包括信号逻辑单元,该信号逻辑单元可产生四个带有与整数值有关信息的信号。该整数饱和侦测器还包括饱和逻辑单元,用以对该四个信号执行逻辑运算,并产生饱和信号。该饱和信号的每一个位分别反映压缩该32位整数值或压缩该第一16位整数值与该第二16位整数值中的一个时导致饱和的状态。
Description
技术领域
本发明有关于一种微处理器,尤指一种可侦测压缩整数(packed integers)的饱和的微处理器。
背景技术
近代的微处理器可将整数以一个压缩格式来储存,使得一个处理器的暂存器保存有许多个压缩整数。于是处理器的暂存器中对每一个压缩整数执行压缩整数运算。许多计算机架构包括针对压缩整数以及处理压缩整数值的特别指令,例如x86MMX、SSE、以及AVX指令等,还包括其他指令。压缩整数经常被截断以作为整数值的表示。例如,压缩方式通常包含使用16个位来储存32位的整数值,或是使用8个位来储存16位整数值。
举例来说,x86PACKSSWB指令将16位字有号(带正负号)整数值(signedinteger value)压缩为8位有号整数值。x86PACKSSDW指令将32位双字有号整数值压缩为16位有号整数值。上述两种指令皆被定义用来侦测符号饱和(signed saturation),以及用来通过安排一个特定的值于一压缩整数结果中来反映符号饱和。
当一整数太大或太小以致于在被压缩为一个数字较小的位时无法被表示时,饱和情况发生。举例来说,一些有号32位数字太大或太小以致于无法使用16个位来储存。同样地,一些不带正负号的32位数字太大以致于无法使用16个位来储存。当压缩整数时,饱和可能导致错误的运算,因此,侦测以及指出已经发生的饱和是有必要的。
典型地,相同的处理器的暂存器被用来运算32位以及16位压缩运算。举例来说,x86XMM暂存器可保存许多32位值,或是2倍的16位值。由于微处理器设计者致力于使处理器的每一个功能能有效地使用逻辑门(gate)来减少面积以及功率消耗以及符合时序限制(timing constraints),因此,使用一个具有有效组态的单一模组的处理器逻辑单元,来侦测多种宽度压缩整数的饱和状态的解决方法是有必要的。
发明内容
本发明提供一种硬件整数饱和侦测器,用以侦测压缩一32位整数值的压缩运算是否发生饱和,以及侦测压缩一第一16位整数值与一第二16位整数值的压缩运算是否发生饱和,其中该第一16位整数值为该32位整数值的较高位16个位整数值,该第二16位整数值为该32位整数值的较低位16个位整数值,该硬件整数饱和侦测器包括一硬件信号逻辑单元,用以产生一第一3位信号A、一第二3位信号B、一第三3位信号C以及一第四3位信号D。第一3位信号A反映该32位整数值、该第一16位整数值、以及该第二16位整数值的一最高有效位为0或是1;第二3位信号B反映该32位整数值的一最低有效字的一最高有效位、以及该第一16位整数值与该第二16位整数值中的每一个的一最低有效字节的一最高有效位为0或是1;第三3位信号C反映该32位整数值的一最高有效位字是否等于0xFFFF、以及该第一16位整数值与该第二16位整数值中的每一个的一最高有效字节是否等于0xFF。第四3位信号D反映该32位整数值的一最高有效字是否等于0x0000、以及该第一16位整数值与该第二16位整数值中的每一个的一最高有效字节是否等于0x00。该硬件整数饱和侦测器包括一饱和逻辑单元用以执行多个逻辑运算,该些逻辑运算包括:以该第三3位信号C的位对该第二3位信号B的位执行与非运算,以形成一第五信号E;以该第二3位信号B的反向位对该第四3位信号D的位执行与非运算,以形成一第六信号F;通过该第一3位信号A作为控制信号,以该第一3位信号A的位对该第五信号E与该第六信号F执行多工运算,以形成一第七信号J;以及以一信号作为一控制信号来对该第七信号J与该第四3位信号D的反向信号执行多工运算,以形成一3位饱和信号,其中该控制信号反映该压缩运算是有号还是无号。
本发明亦提供一种侦测饱和的方法,侦测由压缩一32位整数值、以及包含于该32位整数值的一第一16位整数值与一第二16位整数值的一压缩整数运算导致的饱和,该侦测饱和的方法包括:以一第三信号C的位对一第二信号B的位执行与非运算,以形成一第五信号E,其中该第二信号B为一3位信号,该3位信号反映该32位整数值的一最低有效字的一最高有效位、以及该第一16位整数值与该第二16位整数值的每一个的一最低有效字节的一最高有效位为0或1,其中该第三信号C为一3位信号,该3位信号反映该32位整数值的一最高有效字是否等于0xFFFF、以及该第一16位整数值与该第二16位整数值的每一个的一最高有效字节是否等于0xFF;以一第二信号B的反向信号对一第四信号D的位执行与非运算,以形成一第六信号F,其中该第四信号D为一3位信号,该3位信号反映该32位整数值的一最高有效字是否等于0x0000、以及该第一16位整数值与该第二16位整数值的每一个的一最高有效字节是否等于0x00;通过一第一信号A作为控制信号,以该第一信号A的位对该五信号E以及该第六信号F的位执行多工运算,以形成一第七信号J,其中该第一信号A为一3位信号,该3位信号反映该32位整数值、以及该第一16位整数值与该第二16位整数值的每一个的一最高有效位为0或是1;以及以一控制信号对该第七信号J与该第四信号D的反向信号执行多工运算,以形成一3位饱和信号,其中该控制信号反映该压缩运算为有号饱和还是无号饱和。
本发明还提供一种侦测饱和的硬件装置,侦测由压缩一32位整数值、一第一16位整数值与一第二16位整数值的压缩运算导致的饱和,其中该32位整数值包括该第一16位整数值以及该第二16位整数值,该侦测饱和的硬件装置包括一逻辑单元,用以接收多个信号,该些信号包括:一第一3位信号A、一第二3位信号B、一第三3位信号C以及一第四3位信号D。第一3位信号A反映该32位整数值、该第一16位整数值、以及该第二16位整数值的一最高有效位为0或是1;第二3位信号B反映该32位整数值的一最低有效字的一最高有效位、以及该第一16位整数值与该第二16位整数值中的每一个的一最低有效字节的一最高有效位为0或是1;第三3位信号C反映该32位整数值的一最高有效位字是否等于0xFFFF、以及该第一16位整数值与该第二16位整数值中的每一个的一最高有效字节是否等于0xFF;第四3位信号D反映该32位整数值的一最高有效字是否等于0x0000、以及该第一16位整数值与该第二16位整数值中的每一个的一最高有效字节是否等于0x00。其中该逻辑单元还根据该第一3位信号A、该第二3位信号B、该第三3位信号C以及该第四3位信号D产生多个信号,该些信号包括:一第六信号F、一第五信号E、一第七信号J以及一饱和信号。该第六信号F是根据等式:F[2:0]=~(~B[2:0]&D[2:0])所得到,其中F[2:0]表示该第六信号F,~B[2:0]表示该第二3位信号B的反向信号,D[2:0]表示该第四3位信号D,&表示与运算;该第五信号E是根据等式:E[2:0]=~(B[2:0]&C[2:0])所得到,其中E[2:0]表示该第五信号E,B[2:0]表示该第二3位信号B,C[2:0]表示该第三3位信号C;该第七信号J是根据等式:J[2:0]=(A[2:0]&E[2:0])|(~A[2:0]&F[2:0])所得到,其中J[2:0]表示该第七信号J,A[2:0]表示该第一3位信号S,|表示或运算;以及该饱和信号是根据等式SAT[2:0]=SIGNED?J[2:0]:~D[2:0],其中SAT[2:0]表示该饱和信号,SIGNED表示一信号,该SIGNED信号反映该压缩运算产生有号或是无号整数值。
本发明另提供一种侦测由压缩一32位整数值、一第一16位整数值与一第二16位整数值的压缩运算导致的饱和的方法,其中该32位整数值包括该第一16位整数值以及该第二16位整数值,该侦测饱和的方法包括:接收一第一3位信号A,该第一信号A反映该32位整数值、该第一16位整数值、以及该第二16位整数值的一最高有效位为0或是1;接收一第二3位信号B,该第二信号B反映该32位整数值的一最低有效字的一最高有效位、以及该第一16位整数值与该第二16位整数值中的每一个的一最低有效字节的一最高有效位为0或是1;接收一第三3位信号C,该第三信号C反映该32位整数值的一最高有效位字是否等于0xFFFF、以及该第一16位整数值与该第二16位整数值中的每一个的一最高有效字节是否等于0xFF;接收一第四3位信号D,该第四信号D反映该32位整数值的一最高有效字是否等于0x0000、以及该第一16位整数值与该第二16位整数值中的每一个的一最高有效字节是否等于0x00;产生一第六信号F,该第六信号F是根据等式:F[2:0]=~(~B[2:0]&D[2:0])所得到,其中F[2:0]表示该第六信号F,~B[2:0]表示该第二3位信号B的反向信号,D[2:0]表示该第四3位信号D,&表示与运算;产生一第五信号E,该第五信号E是根据等式:E[2:0]=~(B[2:0]&C[2:0])所得到,其中E[2:0]表示该第五信号E,B[2:0]表示该第二3位信号B,C[2:0]表示该第三3位信号C;产生一第七信号J,其中该第七信号J是根据等式:J[2:0]=(A[2:0]&E[2:0])|(~A[2:0]&F[2:0])所得到,其中J[2:0]表示该第七信号J,A[2:0]表示该第一3位信号A,|表示或运算;以及产生一饱和信号,该饱和信号是根据等式SAT[2:0]=SIGNED?J[2:0]:~D[2:0],其中SAT[2:0]表示该饱和信号,SIGNED表示一信号,该SIGNED信号反映该压缩运算产生有号或是无号整数值。
本发明可以使用单一处理器模组以及较少个数的处理器逻辑单元来侦测多重宽度的整数压缩运算中的饱和状态。
附图说明
图1显示本发明微处理器的一实施例方块图。
图2A至2B显示整数压缩指令运算的实施例方块图。
图3显示本发明信号逻辑单元的一实施例方块图。
图4显示本发明整数饱和侦测器的一实施例方块图。
图5显示本发明结果逻辑单元的一实施例方块图。
图6显示本发明信号聚合的一实施例方块图。
图7显示本发明针对两个64位运算元的整数饱和侦测器的一实施例方块图。
图8显示本发明侦测压缩整数饱和方法的一实施例流程图。
图9显示本发明侦测压缩整数饱和方法的另一实施例流程图。
附图中的符号简单说明如下:
100:微处理器
102:指令快取存储器
104:指令译码器
112:暂存器别名表
114:多个保留站
116:多个执行单元
118:引退单元
136:浮点单元
134:硬件整数饱和侦测器
138:多个其他执行单元
202、208:64位来源暂存器
204、210:64位目的暂存器
300:信号逻辑单元
302:32位双字
304、308:16位按位零侦测器
306:16位反向器
310、314、316、320:8位按位零侦测器
312、318:8位反向器
402、404、702、704:与非门
406、408、706、708:多工器
412、414、712、714:反向器
416、716:SIGNED信号
502:结果逻辑单元
504:运算宽度信号
506:压缩值
610:信号WB1_MSB[11:0]
620:信号WB1_MSB[11:0]
630:信号EQF[11:0]
640:信号EQ0[11:0]
S805~S825:侦测压缩整数饱和方法步骤
S910~S930:侦测压缩整数饱和方法步骤
WB1_MSB[2:0]、WB1_MSB[2]、WB1_MSB[1]、WB1_MSB[0]、WB0_MSB[2:0]、WB0_MSB[2]、WB0_MSB[1]、WB0_MSB[0]、EQF[2:0]、EQF[2]、EQF[1]、EQF[0]、EQ0[2:0]、EQ0[2]、EQ0[1]、EQ0[0]、
~WB0_MSB[2:0]、~WB0_MSB[11:0]、~EQ0[2:0]、~EQ0[11:0]、SGNMSBSET[2:0]、SGNMSBSET[11:0]、SGNMSBCLR[2:0]、SGNMSBCLR[11:0]、SGN_SAT[2:0]、SGN_SAT[11:0]、SAT[2:0]、SAT[11:0]、SAT[2]、SAT[1]、SAT[0]、SAT_DIR[2:0]、SAT_DIR[2]、SAT_DIR[1]、SAT_DIR[0]:信号。
具体实施方式
词汇表
“压缩”一整数值的意思是使用一数量较少的位表示整数值。举例来说,使用仅有16个位来表示32位整数值,或使用仅有8个位来表示16位整数值。
“压缩的整数”代表一个已根据上述压缩的定义被压缩的整数。
“双字(double-word)”指的是32个位,一个“字”指的是16个位,以及一个“字节(byte)”指的是8个位。
实施例的说明
为进一步说明各实施例,本发明提供有图式。此些图式是为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域技术人员应能理解其他可能的实施方式以及本发明的优点。因此,本发明不限于以下显示及描述的实施例,然应授予符合下述操作原理及新颖特征的最广范围。
本发明的实施例使用一单一处理器模组以及一较少个数的处理器逻辑单元来侦测多重宽度的整数压缩运算中的饱和状态。
请参考图1,其显示依据本发明微处理器100的一实施例的方块图。微处理器100包括一指令快取存储器102、一指令译码器104、一暂存器别名表(register alias table,RAT)112、多个保留站(reservation stations)114、多个执行单元116、一引退单元(retire unit)118、一数据快取存储器122、以及一暂存器组124。指令快取存储器102储存来自一***存储器(图未示)的多个指令。指令译码器104耦接于指令快取存储器102,其可接收来自指令快取存储器102的多个指令,例如多个x86指令集架构压缩整数指令,并将多个指令转译为多个微指令。暂存器别名表112耦接于指令译码器104,其可接收来自指令译码器104的多个微指令,并针对多个微指令产生相依信息。多个保留站114耦接于暂存器别名表112,多个保留站114可接收来自暂存器别名表112的多个微指令以及相依信息。多个执行单元116耦接于多个保留站114、数据快取存储器122、以及一暂存器组124,多个执行单元116可接收来自多个保留站114的多个微指令,并可接收来自数据快取存储器122、以及一暂存器组124的对应多个微指令的多个指令运算元。引退单元118耦接于多个执行单元116,其可接收来自多个执行单元116的多个指令结果,并将多个指令结果引退至微处理器100的架构状态。多个执行单元116可包括一浮点单元136以及多个其他执行单元138。浮点单元136包括一硬件整数饱和侦测器134。硬件整数饱和侦测器134为一个单一处理器模组,用以决定多个多重宽度的压缩整数的饱和。在本实施例中,硬件整数饱和侦测器134如图所示是设置在浮点单元136中,主要是因为多个x86压缩整数指令通常是使用浮点单元136中的MMX或是XMM暂存器来保存。在其他实施例中,硬件整数饱和侦测器134可设置在微处理器100中的别处,例如设置在执行压缩整数运算的单元中或与其连接。
图2A至2B分别显示依据本发明压缩整数的x86指令的两个实施例的方块图。图2A的PACKSSDW指令将四个32位双字有号整数值(例如图2A中的A、B、C、以及D)压缩成四个16位有号整数值(例如A'、B'、C'、以及D')并侦测有号饱和(signed saturation)。当饱和发生时,PACKSSDW指令被定义用来恢复特定预定义的值。举例来说,32位整数0x000001234(16进位的)被压缩为未饱和的16个如0x0123位。但是,当0x000F1234的一个具有正值的32位整数被压缩至16位时,其将饱和至0x7FFF。0x7FFF为使用16位所能储存的最大值,且被使用在x86指令架构中以反映正方向中的有号饱和。类似地,当0xFFFF1234的一个具有负值的32位整数被压缩至16位时,其将饱和至0x8000。0x8000为使用16位所能储存的最小值,且被使用在x86指令架构中以反映负方向中的有号饱和。在一些实施例中,微处理器100执行x86指令集架构,硬件整数饱和侦测器134会侦测到例如PACKSSDW等指令的有号饱和,且微处理器100会根据被侦测的饱和来提供正确的压缩结果。
图2A显示两个64位运算元,包括64位来源暂存器202以及64位目的暂存器204。在此实施例中,64位目的暂存器204可同时为一个来源以及目的暂存器204。然而,多个整数压缩指令可经常地提供不同的运算元宽度。举例来说,针对PACKSSDW运算元的来源以及目的暂存器可为128位或以256个位来取代64位。较大的运算元并不会改变运算元中对于整数值的压缩运算,但是会较图2A中的4个32位值多压缩32位值。
PACKUSDW指令类似于PACKSSDW指令,但是会压缩32位有号整数为16位无号整数。正号饱和(32位数字大于0xFFFF)反映使用数值0xFFFF,以及负号饱和(数字小于0)反映使用数值0x0000。
参考图2B,PACKSSWB指令将16位字有号整数值(例如图2B中的A至H)压缩为8位有号整数值(例如图2B中的A'至H')。当饱和情况发生时,8位压缩整数结果被设置为0x7F以及0x80,以分别表示正号饱和以及负号饱和。
PACKUSWB指令类似于PACKSSWB指令,但会压缩16位有号整数为8位无号整数。当饱和的情况发生时,8位压缩整数结果被设置为0xFF以及0x00,以分别表示正号饱和以及负号饱和。
图2B显示2个64位运算元,分别为64位来源暂存器208以及64位目的暂存器210。如同前所述,其他运算元宽度可能与这些指令或是其他指令被使用。
一般来说,暂存器可保存即将被压缩的N个32位双字整数,亦可保存即将被压缩的2N个16位字整数,且相同的暂存器可被使用来保存针对两种型态的压缩运算(双字与单字)的运算元。除了整数压缩指令外,其他型态指令亦可导致整数饱和,且硬件整数饱和侦测器134亦可侦测因为其他型态指令导致的饱和。图2A以及图2B所显示的指令为具有特定x86饱和值的x86压缩整数指令。在此实施例中,微处理器100可执行各种的其他指令集架构的指令,包括但不限于ARM、MIPS、SPARC、或PowerPC,硬件整数饱和侦测器134可侦测其他压缩整数指令的饱和。
参考图3,图3显示依据本发明信号逻辑单元300的一实施例的方块图。信号逻辑单元300是针对硬件整数饱和侦测器134产生信号。信号逻辑单元300可被设置在硬件整数饱和侦测器134中或是其他微处理器单元或模组。信号逻辑单元300是针对一个32位双字产生信号,因此图2A及图2B中的运算元需要四个信号逻辑单元300,以针对即将被压缩的四个32位或是八个16位整数产生信号。此外,信号逻辑单元300还包括16位按位零侦测器(16-bit bitwisezero detector)304与308、16位反向器306、8位按位零侦测器310、314、316与320、8位反向器312与318。
信号逻辑单元300可产生一信号WB1_MSB[2]以及一信号WB0_MSB[2],信号WB1_MSB[2]以及信号WB0_MSB[2]分别表示32位双字302中的较高位以及较低位字的最高有效位。类似地,信号逻辑单元300产生信号WB1_MSB[1]、WB0_MSB[1]、WB1_MSB[0]以及WB0_MSB[0],此些信号分别对应32位双字302的四个字节中的最高有效位。
信号逻辑单元300亦产生可表示32位双字的特定字以及字节是否全为0或全为1的信号。16位按位(bitwise)零侦测器304与308可分别判断32位双字302的位[31:16]是否等于0x0000与xFFFF,且可分别反映信号EQ0[2]与信号EQF[2]中的结果。
8位按位零侦测器310与314可分别判断32位双字302的位[31:24]是否等于0x00与0xFF,且可分别反映信号EQ0[1]与信号EQF[1]的结果。8位按位零侦测器316与320可分别判断32位双字302的位[15:8]是否等于0x00与0xFF,且可分别反映信号EQ0[0]与信号EQF[0]的结果。
在其他实施例中,可使用其他单元来产生图3中的元件具有相同意义的信号。举例来说,16位按位1侦测器可取代16位反向器306以及16位按位零侦测器308。
概括来说,信号逻辑单元300输出四个信号,包括信号EQ0[2:0]、EQF[2:0]、WB1_MSB[2:0]、以及WB0_MSB[2:0]。每一个信号中的位的指标(index)对应到不同的信息,包括针对全部的32位双字302(位于指标2的位)、较高位的16位字(位于指标1的位)、或是较低位的16位字(位于指标0的位)的信号。对图2A以及图2B的运算来说,需要4个信号逻辑单元300。对其他压缩整数运算而言,需要N个信号逻辑单元300,其中N为参与运算的32位暂存器部分的个数。值得注意的是,2N个16位暂存器部分参与32位暂存器部分的运算。信号逻辑单元300可产生针对压缩32位整数时的侦测饱和与针对压缩16位整数的侦测饱和的信号。
参考图4,图4显示本发明整数饱和侦测器134的一实施例的方块图。整数饱和侦测器134包括两个与非门(NAND gate)402与404、两个多工器(MUX)406与408、以及两个反向器412与414。信号WB1_MSB[2:0]、WB0_MSB[2:0]、EQF[2:0]、以及EQ0[2:0]皆由图3中的信号逻辑单元300提供。一个SIGNED信号416反映一给定的压缩运算产生有号或是无号的运算结果。浮点单元136可产生SIGNED信号416,而一些其他单元可提供SIGNED信号416。反向器412对信号WB0_MSB[2:0]执行反向运算,并产生信号~WB0_MSB[2:0]。反向器414对信号EQ0[2:0]执行反向运算,并产生信号~EQ0[2:0]。
与非门402以信号EQF[2:0]对信号WB0_MSB[2:0]执行与非运算,并产生一信号SGNMSBSET[2:0]。与非门404以信号EQ0[2:0]对信号WB0_MSB[2:0]的多个反相位执行与非运算,并产生一信号SGNMSBCLR[2:0]。信号WB1_MSB[2:0]的三个位被用来作为多工器406的控制信号,用以控制多工器406在SGNMSBSET[2:0]以及信号SGNMSBCLR[2:0]中选择信号,并产生信号SGN_SAT[2:0]。如信号WB1_MSB[2:0]的一个位是1,则多工器406传递信号SGNMSBSET[2:0]中具有相同指标的位,反之,如果信号WB1_MSB[2:0]的一个位是0,则多工器406传递信号SGNMSBCLR[2:0]中具有相同指标的位。信号SGN_SAT[2:0]中的一个位设置为1,用来反映对应到位的值(取决于该位而可以是32位值、较高位的16位值、或较低位的16位值)发生有号饱和。
为了能够处理除掉带号整数压缩(无号压缩)所产生结果时的饱和,信号SIGNED被用来作为多工器408的控制信号,用以控制多工器408选择信号SGN_SAT[2:0]以及信号~EQ0[2:0]中的一个,并由多工器408产生信号SAT[2:0]。如果压缩运算产生无号压缩结果,则信号SIGNED=0,且多工器408选择信号~EQ0[2:0]。如果压缩运产生有号结果,则SIGNED=1,且多工器408选择信号SGN_SAT[2:0]。信号SAT[2:0]的每一个位反映基于32位值或16位值在给定的有号或无号压缩运算是否导致饱和。
值得注意的是,在图4的实施例中,任一个信号所通过的最长路径是通过反向器412、与非门404或两个多工器406、408。若包括图3中的信号逻辑单元300来看,任一个信号所通过的最长路径是通过反向器312、零侦测器314、与非门402以及两个多工器406、408。
在一些架构中,例如x86指令架构,不同的饱和结果是取决于饱和方向(及正向或负向)。信号WB1_MSB[2:0]反映被压缩的整数值是正值或是负值,其表示饱和发生时的饱和方向,于是信号SAT_DIR[2:0]被传递。
图5显示依据本发明结果逻辑单元502的一实施例的方块图。为了给予一个运算正确的压缩整数结果,结果逻辑单元502接收来自整数饱和侦测器134的信号SAT_DIR[2:0]以及信号SAT[2:0]。结果逻辑单元502还接收一运算宽度信号504,运算宽度信号504作为结果逻辑单元502的输入信号,其反映给定的压缩运算是压缩32位整数值或是压缩16位整数值。结果逻辑单元502亦接收图4中的SIGNED信号416,SIGNED信号416作为结果逻辑单元502的输入信号。结果逻辑单元502亦接收图3中的32位双字302的较低位24个位,以及八个预先定义的饱和值,即0x7FFF、0x8000、0x7F、0x80、0xFFFF、0x0000、0xFF、以及0x00,以作为结果逻辑单元502的输入信号。
微处理器100的其他实施例可不同地实现结果逻辑单元502。结果逻辑单元502运算的例子可根据压缩整数运算的不同型态、以及来自硬件整数饱和侦测器134的不同结果分别描述如下。
第一个例子为:运算宽度信号504反映32位压缩运算,且SIGNED信号416反映一有号结果。如果信号SAT[2]为0,其反映没有饱和,则32位双字302的较低位16个位被传送并作为压缩值[15:0]506。但是,如果信号SAT[2]为1,其反映有饱和,则信号SAT_DIR[2]控制结果逻辑单元502传送0x7FFF或是0x8000,以作为压缩值[15:0]506,分别反映正号饱和或是负号饱和。
第二个例子为:运算宽度信号504反映32位压缩运算,且SIGNED信号416反映一无号结果。如果信号SAT[2]为0,其反映无饱和,则32位双字302的较低位16个位被传送并作为压缩值[15:0]506。但是,如果信号SAT[2]为1,其表示有饱和,则信号SAT_DIR[2]控制结果逻辑单元502传送0xFFFF或是0x0000,以作为压缩值[15:0]506,分别反映正号饱和或负号饱和。
第三个例子为:运算宽度信号504反映16位压缩运算,且SIGNED信号416反映一有号结果。如果信号SAT[1]为0,其反映无饱和,则32位双字302的16位字的较低位8个位被传送并作为压缩值[7:0]506。类似地,如果信号SAT[0]为0,其反映无饱和,则32位双字302的16位字的较低位8个位被传送并作为压缩值[7:0]506。但是,如果信号SAT[1]为1,其表示有饱和,则信号SAT_DIR[1]控制结果逻辑单元502传送0x7F或是0x80,以作为压缩值[15:0]506的较高位半部(位[15:8]),分别反映正号饱和或是负号饱和。类似地,如果信号SAT[0]为1,其反映饱和,则信号SAT_DIR[0]控制结果逻辑单元502传送0x7F或是0x80,以作为压缩值[15:0]506的较低位半部(位[7:0]),分别反映正号饱和或是负号饱和。
第四个例子为:运算宽度信号504反映16位压缩运算,且SIGNED信号416反映一无号结果。如果信号SAT[1]为0,其反映无饱和,则32位双字302的16位字的较低位8个位被传送并作为压缩值[15:8]506。类似地,如果信号SAT[0]为0,则32位双字302的16位字的较低位8个位被传送并作为压缩值[7:0]506。但是,如果信号SAT[1]为1,其表示有饱和,则信号SAT_DIR[1]控制结果逻辑单元502传送0xFF或是0x00,以作为压缩值[15:0]506的较高位半部(位[15:8]),分别反映正号饱和或是负号饱和。类似地,如果信号SAT[0]为1,其反映饱和,则信号SAT_DIR[0]控制结果逻辑单元502传送0xFF或是0x00,以作为压缩值[15:0]506的较低位半部(位[7:0]),分别反映正号饱和或是负号饱和。
上述图5中的例子显示结果逻辑单元502如何使用整数饱和侦测器134的输出信号来产生一正确压缩整数结果以作为压缩值[15:0]506。所述的值与微处理器100的x86指令有关。然而,图5中的有号以及无号饱和值在其他实施例中亦可不同。
参考图6,图6显示本发明的一实施例方块图。四个图3中的信号逻辑单元300的例子以区块P、Q、R以及S表示,每一个信号逻辑单元300针对整数压缩运算使用两个64位运算元产生信号610-640。之前所述的信号逻辑单元300产生四个3个位信号,分别为信号WB1_MSB[2:0]、信号WB1_MSB[2:0]、信号EQF[2:0]、以及信号EQ0[2:0]。图6的实施例中,四个12位信号通过结合四个信号逻辑单元300产生的信号来产生,即信号WB1_MSB[11:0]610、信号WB0_MSB[11:0]620、信号EQF[11:0]630以及信号EQ0[11:0]640。举例来说,如图6所示,来自区块S的3位信号WB1_MSB[2:0]被拆开且重新组合,将信号WB1_MSB[2]分配给信号WB1_MSB[11],将信号WB1_MSB[1]分配给信号WB1_MSB[7],且将信号WB1_MSB[0]分配给信号WB1_MSB[6]。来自区块R的3位信号WB1_MSB[2:0]被拆开且重新组合,将信号WB1_MSB[2]分配给信号WB1_MSB[10],将信号WB1_MSB[1]分配给信号WB1_MSB[5],且将信号WB1_MSB[0]分配给信号WB1_MSB[4]。来自区块Q的3位信号WB1_MSB[2:0]被拆开且重新组合,将信号WB1_MSB[2]分配给信号WB1_MSB[9],将信号WB1_MSB[1]分配给信号WB1_MSB[3],且将信号WB1_MSB[0]分配给信号WB1_MSB[2]。来自区块P的3位信号WB1_MSB[2:0]被拆开且重新组合,将信号WB1_MSB[2]分配给信号WB1_MSB[8],将信号WB1_MSB[1]分配给信号WB1_MSB[1],且将信号WB1_MSB[0]分配给信号WB1_MSB[0]。关于信号WB0_MSB[11:0]620、信号EQF[11:0]630以及信号EQ0[11:0]640亦具有类似的分配。图6显示针对整个压缩整数运算的安排信号的一实施例。然而,根据其他实施例,为了将来自每一个信号逻辑单元300的四个3位信号结合为针对整个压缩整数运算的四个12位信号,不同位安排亦可被使用。在其他实施例中,不同的运算元大小亦可被使用,而一较大或较小个数的信号逻辑单元300亦可被使用来产生信号。四个所产生信号(信号WB1_MSB、信号WB0_MSB、信号EQF以及信号EQ0)的每一者皆包括3N个位,其中N表示信号逻辑单元300的个数。信号610-640是用来表示一个信号中的位指标。信号610-640可被储存于一个暂存器、可在处理器线上取得或是被提供至整数饱和侦测器134。
参考图7,图7显示本发明针对两个64位运算元的整数饱和侦测器134的一实施例方块图。为了侦测使用两个64位运算元的整数压缩运算中的饱和,整数饱和侦测器134使用了类似于图4的逻辑单元,但是图7中显示的信号610-640包括由四个图3的信号逻辑单元所产生的信号。
图7的整数饱和侦测器134包括两个与非门702以及704、两个多工器706以及708、以及两个反向器712以及714。信号WB1_MSB[11:0]610、信号WB0_MSB[11:0]620、信号EQF[11:0]630、以及信号EQ0[11:0]640由信号逻辑单元300提供。SIGNED信号716反映压缩运算将具有一有号或是无号结果。浮点单元136可产生有号信号716,或是一些其他处理器单元可提供有号信号716。反向器712对信号WB0_MSB[11:0]执行反向运算,并由反向器712产生信号~WB0_MSB[11:0]。反向器712对信号EQ0[11:0]执行反向运算,并由反向器712产生信号~EQ0[11:0]。
与非门702以信号EQF[11:0]对信号WB0_MSB[11:0]执行与非运算,并产生信号SGNMSBSET[11:0]。与非门704以信号EQ0[11:0]对信号WB0_MSB[11:0]的多个反向位执行与非运算,并产生信号SGNMSBCLR[11:0]。信号WB1_MSB[11:0]的12个位用来作为多工器706的控制信号,用以控制多工器706选择信号SGNMSBSET[11:0]以及信号SGNMSBCLR[11:0]中的一个的位,并由多工器706产生信号SGN_SAT[11:0]。如果信号WB1_MSB[11:0]的一个位是1,则多工器706传递信号SGNMSBSET[11:0]中具有相同指标的位。反之,如果信号WB1_MSB[11:0]的一个位是0,则多工器706传递信号SGNMSBCLR[11:0]中具有相同指标的位。信号SGN_SAT[11:0]中的一位被设置为1,用来反映对应到位的值发生有号饱和(取决于位的32位值、较高位的16位值、或较低位的16位值)。
为了还能够处理无号的整数压缩(无号压缩)的结果时的饱和,信号SIGNED被用来作为多工器708的控制信号,用以控制多工器708选择信号SGN_SAT[11:0]以及信号~EQ0[11:0]中的一个的位,并由多工器708产生信号SAT[11:0]。如果压缩运算产生无号压缩结果,则信号SIGNED=0,且多工器708选择信号~EQ0[11:0]。如果压缩运产生有号结果,则SIGNED=1,且多工器708选择信号SGN_SAT[11:0]。信号SAT[11:0]的每一个位反映给定的有号或是无号压缩运算,在压缩对应的32位值或16位值时是否导致饱和。
在一些架构中,例如x86指令架构,不同的饱和结果是取决于饱和方向(及正向或负向)。信号WB1_MSB[11:0]反映被压缩的整数值是正值或是负值,其表示饱和发生时的饱和方向,于是信号SAT_DIR[11:0]被传递。
以下表1显示实现图7中的逻辑单元的一个Verilog模组例子。表1的第1行宣称单模组sat_detect,其可侦测四个32位整数值、以及包含在四个32位整数值中的八个16位整数值的压缩整数运算中的饱和。第2行定义12位输出信号SAT。第3行定义SIGN输入信号,其如同图7所述的方式被使用。第4至7行中的WB1_MSB、WB0_MSB、EQF、以及EQ0输入信号对应图7中类似名称的信号。第8行表示以图7中的多工器708来实现。第9行表示以图7中的与非门702来实现。第10行表示以图7中的与非门704来实现。第11行表示以图7中的多工器708来实现。应注意Verilog模组为一种硬件描述语言,且第8至11行的顺序不必对应到硬件单元实施的运算顺序。在其他实施例中,其他单元亦可被使用来执行由表1的编码所定义的功能。
请参考图8,图8显示依据本发明侦测压缩整数饱和方法的一实施例流程图。本实施例特别是指侦测32位整数值以及包含在四个32位整数值的两个16位整数值的压缩整数运算中的饱和。可配合图3至图4的元件标号,流程从步骤S805开始。
在步骤S805中,信号逻辑单元300产生四个信号。在其他实施例中,其他单元亦可产生类似的信号。第一信号为一个3位信号A,其反映32位整数值、以及第一与第二16位整数值中的每一个的一最高有效位为0或是1。第一信号A对应到图4中的WB1_MSB信号。第二信号为一个3位信号B,其反映32位整数值的一最低有效字的一最高有效位、以及第一与第二16位整数值中的每一个的一最低有效字节的一最高有效位为0或是1。第二信号B对应到图4中的WB0_MSB信号。第三信号为一个3位信号C,其反映32位值的一最高有效字是否等于0xFFFF、以及第一与第二16位整数值中的每一个的一最高有效字节是否等于0xFF。第三信号C对应到图4中的EQF信号。第四信号为一3位信号D,其反映32位值的一最高有效字是否等于0x0000、以及第一与第二16位整数值中的每一个的一最高有效字节是否等于0x00。第四信号D对应到图4中的EQ0信号。流程继续同时进行到步骤S810以及步骤S815。
在步骤S810中,整数饱和侦测器134以第三信号C的位对第二信号B的位执行与非运算,并形成第五信号E。第五信号E对应到图4中的SGNMSBSET信号。流程继续往步骤S820进行。
在步骤S815中,整数饱和侦测器134以第四信号D的位对第二信号B的反相信号执行与非运算,并形成第六信号F。第六信号对应到图4中的SGNMSBCLR信号。流程继续往步骤S820进行。
在步骤S820中,整数饱和侦测器134以第一信号A作为控制信号,对第五信号E以及第六信号F执行多工运算,并形成第七信号J。第七信号J对应到图4中的SGN_SAT信号。由于第一信号A为一个3位信号,第一信号A的每一个位可用来控制一个1位,特别是用于双输入多工器的控制信号。位A[2]可作为对位E[2]以及位F[2]执行多工运算的控制位。位A[1]可作为对位E[1]以及位F[1]执行多工运算的控制位。位A[0]可作为对位E[0]以及位F[0]执行多工运算的控制位。流程继续往步骤S825进行。
在步骤S825中,整数饱和侦测器134以一个反映压缩运算为有号还是无号运算的信号作为控制信号,对第七信号J以及第四信号D的反向信号执行多工运算,并产生一第八信号K。此控制信号对应图4中的SIGNED信号。第八信号K对应到图4中的信号SAT。
当针对有号整数值的压缩运算产生一无号结果时,在两种情况下会发生饱和:(1)当整数值太大以致于无法以压缩形式表示,以及(2)当整数值为负值。如果整数值中的较高位的位中有任何一个为1,则以上两种情况中的至少一种情况会发生。由于第四信号D的反向信号~D中的一组字反映整数值中的较高位的位中的至少一个不为0,因此当第四信号D中的一位被设置时,反映整数值的无号饱和。
当执行于有号整数值的压缩运算具有一有号结果时,第七信号J反映饱和情况已经发生。如果一个双字或一个单字的一最高有效位为1,则第七信号J将反映较高字或字是否为1、以及较低字或字的最高有效位是否为1(若两者皆为真,则无饱和发生)。如果双字或单字的一最高有效位为0,第七信号J将反映一个字的所有较高位是否皆为0、以及一个字的较低位中的最高有效位是否为0(若两者皆为真,则无饱和发生)。因此,第七信号J的每一个位反映对应到位的压缩字或字节的有号饱和是否已经发生。流程结束于步骤S825。
接着参考图9,图9显示本发明侦测压缩整数饱和方法的另一实施例流程图。本实施例特别是指侦测32位整数值以及包含在一个32位整数值的两个16位整数值的压缩整数运算中的饱和。可配合图3至图4的元件标号,流程从步骤S910开始。
在步骤S910中,信号逻辑单元300产生四个信号。在其他实施例中,其他单元亦可产生类似的信号。第一信号为一个3位信号A,其反映32位整数值、以及第一与第二16位整数值中的每一个的一最高有效位为0或是1。第一信号A对应到图4中的WB1_MSB信号。第二信号为一个3位信号B,其反映32位整数值的一最低有效字的一最高有效位、以及第一与第二16位整数值中的每一个的一最低有效字节的一最高有效位为0或是1。第二信号B对应到图4中的WB0_MSB信号。第三信号为一个3位信号C,其反映32位值的一最高有效字是否等于0xFFFF、以及第一与第二16位整数值中的每一个的一最高有效字节是否等于0xFF。第三信号C对应到图4中的EQF信号。第四信号为一3位信号D,其反映32位值的一最高有效字是否等于0x0000、以及第一与第二16位整数值中的每一个的一最高有效字节是否等于0x00。第四信号D对应到图4中的EQ0信号。流程继续同时进行到步骤S915以及步骤S920。
在步骤S915中,整数饱和侦测器134根据等式:F[2:0]=~(~B[2:0]&D[2:0])产生一第五信号F,其中“~”表示按位反向,“&”表示按位与运算(AND)。执行此等式的逻辑单元实施例在第四图中为与非门402,但是在其他实施例中,整数饱和侦测器134亦可包括其他逻辑单元来达成相同的功能。流程继续进行至步骤S925。
在步骤S920中,整数饱和侦测器134根据等式:E[2:0]=~(B[2:0]&C[2:0])产生一第六信号E,其中“~”表示按位反向,“&”表示按位与运算(AND)。执行此等式的逻辑单元实施例在第四图中为与非门404,但是在其他实施例中,整数饱和侦测器134亦可包括其他逻辑单元来达成相同的功能。流程继续进行至步骤S925。
在步骤S925中,整数饱和侦测器134根据等式:J[2:0]=(A[2:0]&E[2:0])|(~A[2:0]&F[2:0])来产生第七信号J,其中“~”表示按位反向,“&”表示按位与运算(AND),“|”表示按位或运算(OR)。执行此等式的逻辑单元实施例在第四图中为多工器406,但是在其他实施例中,整数饱和侦测器134亦可包括其他逻辑单元来达成相同的功能。流程继续进行至步骤S930。
在步骤S930中,整数饱和侦测器134产生一饱和信号SAT[2:0]。信号SAT的位对应于压缩32位整数值以及包含在32位整数值的两个16位整数值的结果是否导致饱和。在一实施例中,位SAT[2]对应到32位整数值,位SAT[1]对应到较高位的16位整数值,位SAT[0]对应到较低位的16位整数值。整数饱和侦测器134根据等式:SAT[2:0]=SIGNED?J[2:0]:~D[2:0]产生饱和信号SAT。这个等式表示如果信号SIGNED等于1,则信号SAT[2:0]=J[2:0],反之,如信号SIGNED等于0,则信号SAT[2:0]=~D[2:0]。执行此等式的逻辑单元实施例在第四图中为多工器408,但是在其他实施例中,整数饱和侦测器134亦可包括其他逻辑单元来达成相同的功能。流程结束于步骤S930。
为了较宽的压缩运算,显示于图8以及图9中的方法可延伸包括比32位值更多的位值,例如图2A与图2B所示。多个信号以及多个逻辑单元可延伸包括如图6以及图7的四个32位整数值,但亦可延伸具有128位或256位运算元中的八个或十六个32位整数值。
以上描述了32位以及16位的压缩运算的饱和侦测的不同实施例。在其他实施例中,可使用其他整数宽度。举例来说,如果处理器架构支持64位整数值的压缩,则整数饱和侦测器134可被修饰用来侦测64位整数压缩运算的饱和。在一实施例中,整数饱和侦测器134为单一模组可同时侦测64位整数值、64位整数值所包含的两个32位整数值、以及64位整数值所包含的4个16位整数值的饱和状态。一个饱和信号包括对应于64位整数值的位、对应于64位整数值所包含的两个32位整数值的位、以及对应于64位整数值所包含的4个16位整数值的位。这些对应于整数值的位反映出执行于该些整数值的压缩运算是否将导致饱和。更进一步,在其他实施例中,运算元的宽度可大于或小于以上所述。
本发明的不同实施例已于本说明书描述,然而可理解的是,上述仅是为了举例说明而已,并非用以限制本发明的范围。显然地,熟悉计算机相关技术的技术人员可通过变化形式,而不悖于本发明的精神与范围。举例来说,亦可利用软件来达成本文所述的功能、制造、建立模型、模拟、描述且/或测试仪器和方法。若为软件,可通过常见程序语言(例如C、C++)、硬件描述语言(HDL),包括Verilog HDL、VHDL及其他类似者、或是其他可取得的程序。这些软件可设置在任何已知的计算机可用的储存介质,例如磁带、半导体、磁盘或是光盘(例如CD-ROM、DVD-ROM等)、网络、线路、无线网络或其他通讯媒介。上述的装置与方法的实施例可包含于半导体知识产权的核心,例如一处理器核心(如在HDL中具体表现或指定),并转换为集成电路的产品中的硬件。此外,上述的装置与方法亦可利用硬件与软件的结合来实现。因此,本发明不应被任何上述实施例所限制,但应可根据申请专利范围以及其相等范围来定义。明确地说,本发明可在一个一般用途的计算机中的一微处理装置中实施。最后,本领域技术人员可理解的是,其可利用揭露的观念以及特定实施例作为基础,来设计或修饰出其他与本发明具有相同用途的架构,而不悖于由本发明申请专利范围所定义的发明的观念。
Claims (20)
1.一种硬件整数饱和侦测器,其特征在于,用以侦测压缩一32位整数值的压缩运算是否导致饱和,以及侦测压缩一第一16位整数值与一第二16位整数值的压缩运算是否导致饱和,其中该第一16位整数值为该32位整数值的较高位16个位整数值,该第二16位整数值为该32位整数值的较低位16个位整数值,该硬件整数饱和侦测器包括:
一信号逻辑单元,用以产生多个信号,该些信号包括:
一第一3位信号A,反映该32位整数值、该第一16位整数值、以及该第二16位整数值的一最高有效位为0或是1;
一第二3位信号B,反映该32位整数值的一最低有效字的一最高有效位、以及该第一16位整数值与该第二16位整数值中的每一个的一最低有效字节的一最高有效位为0或是1;
一第三3位信号C,反映该32位整数值的一最高有效位字是否等于0xFFFF、以及该第一16位整数值与该第二16位整数值中的每一个的一最高有效字节是否等于0xFF;
一第四3位信号D,反映该32位整数值的一最高有效字是否等于0x0000、以及该第一16位整数值与该第二16位整数值中的每一个的一最高有效字节是否等于0x00;以及一饱和逻辑单元,用以执行多个逻辑运算,该些逻辑运算包括:
以该第三3位信号C的位对该第二3位信号B的位执行与非运算,以形成一第五信号E;
以该第二3位信号B的反向位对该第四3位信号D的位执行与非运算,以形成一第六信号F;
通过该第一3位信号A的位作为控制信号,以对该第五信号E与该第六信号F执行多工运算,以形成一第七信号J;以及
以一信号作为一控制信号来对该第七信号J与该第四3位信号D的反向信号执行多工运算,以形成一3位饱和信号,其中该控制信号反映该压缩运算是有号还是无号。
2.根据权利要求1的硬件整数饱和侦测器,其特征在于,该饱和信号的每一个位分别反映压缩该32位整数值、压缩该第一16位整数值、与该第二16位整数值是否导致饱和。
3.根据权利要求1的硬件整数饱和侦测器,其特征在于,该第一3位信号的每一个位分别反映该32位整数值或该第一16位整数值与该第二16位整数值中的一个的饱和方向。
4.根据权利要求3的硬件整数饱和侦测器,其特征在于,还包括一饱和值逻辑单元,用以产生一16位结果,该结果对应该32位整数值的压缩值、或该第一16位整数值与该第二16位整数值的压缩值,其中当该硬件整数饱和侦测器侦测到饱和时,该结果反映饱和与该饱和方向。
5.根据权利要求4的硬件整数饱和侦测器,其特征在于,该16位结果是有号或无号,且该16位结果为有号还是无号是分别用以反映该饱和属于正号或负号饱和。
6.根据权利要求1的硬件整数饱和侦测器,其特征在于,该第三3位信号C是利用一反向器以及一个零侦测器所产生,且该第四3位信号D是利用一零侦测器所产生。
7.一种侦测饱和的方法,侦测由压缩一32位整数值、以及包含于该32位整数值的一第一16位整数值与一第二16位整数值的一压缩整数运算导致的饱和,其特征在于,该侦测饱和的方法包括:
以一第三信号C的位对一第二信号B的位执行与非运算,以形成一第五信号E,其中该第二信号B为一3位信号,该3位信号反映该32位整数值的一最低有效字的一最高有效位、以及该第一16位整数值与该第二16位整数值的每一个的一最低有效字节的一最高有效位为0或1,其中该第三信号C为一3位信号,该3位信号反映该32位整数值的一最高有效字是否等于0xFFFF、以及该第一16位整数值与该第二16位整数值的每一个的一最高有效字节是否等于0xFF;
以一第二信号B的反向信号对一第四信号D的位执行与非运算,以形成一第六信号F,其中该第四信号D为一3位信号,该3位信号反映该32位整数值的一最高有效字是否等于0x0000、以及该第一16位整数值与该第二16位整数值的每一个的一最高有效字节是否等于0x00;
通过一第一信号A的位作为控制信号,以该五信号E以及该第六信号F的位执行多工运算,以形成一第七信号J,其中该第一信号A为一3位信号,该3位信号反映该32位整数值、以及该第一16位整数值与该第二16位整数值的每一个的一最高有效位为0或是1;以及
以一控制信号对该第七信号J与该第四信号D的反向信号执行多工运算,以形成一3位饱和信号,其中该控制信号反映该压缩运算为有号饱和还是无号饱和。
8.根据权利要求7的侦测饱和的方法,其特征在于,该饱和信号的位分别反映压缩该32位整数值、以及压缩该第一16位整数值与该第二16位整数值是否导致饱和。
9.根据权利要求7的侦测饱和的方法,其特征在于,还包括:
利用一个或多个反向器以及一个或多个零侦测器产生该第三信号C;以及
利用一个或多个零侦测器产生该第四信号D。
10.根据权利要求7的侦测饱和的方法,其特征在于,该第一信号A的每一个位分别反映该32位整数值的饱和方向、或该第一16位整数值与该第二16位整数值中的一个的一饱和方向。
11.根据权利要求10的侦测饱和的方法,其特征在于,还包括:
产生一16位结果,对应于该32位整数值的压缩值、或压缩该第一16位整数值与该第二16位整数值的压缩值;
当侦测到饱和时,该16位结果反映饱和与该饱和方向。
12.根据权利要求11的侦测饱和的方法,其特征在于,该16位结果是有号或无号,且该16位结果为有号还是无号是分别反映该饱和属于正号或负号饱和。
13.一种侦测饱和的硬件装置,侦测由压缩一32位整数值、一第一16位整数值与一第二16位整数值的压缩运算导致的饱和,其中该32位整数值包括该第一16位整数值以及该第二16位整数值,其特征在于,该侦测饱和的硬件装置包括:
一逻辑单元,用以接收多个信号,该些信号包括:
一第一3位信号A,反映该32位整数值、该第一16位整数值、以及该第二16位整数值的一最高有效位为0或是1;
一第二3位信号B,反映该32位整数值的一最低有效字的一最高有效位、以及该第一16位整数值与该第二16位整数值中的每一个的一最低有效字节的一最高有效位为0或是1;
一第三3位信号C,反映该32位整数值的一最高有效位字是否等于0xFFFF、以及该第一16位整数值与该第二16位整数值中的每一个的一最高有效字节是否等于0xFF;
一第四3位信号D,反映该32位整数值的一最高有效字是否等于0x0000、以及该第一16位整数值与该第二16位整数值中的每一个的一最高有效字节是否等于0x00;
其中该逻辑单元还根据该第一3位信号、该第二3位信号、该第三3位信号以及该第四3位信号产生多个信号,该些信号包括:
一第六信号F,该第六信号F是根据等式:F[2:0]=~(~B[2:0]&D[2:0])所得到,其中F[2:0]表示该第六信号F,~B[2:0]表示该第二3位信号B的反向信号,D[2:0]表示该第四3位信号D,&表示与运算;
一第五信号E,该第五信号E是根据等式:E[2:0]=~(B[2:0]&C[2:0])所得到,其中E[2:0]表示该第五信号E,B[2:0]表示该第二3位信号B,C[2:0]表示该第三3位信号C;
一第七信号J,其中该第七信号J是根据等式:J[2:0]=(A[2:0]&E[2:0])|(~A[2:0]&F[2:0])所得到,其中J[2:0]表示该第七信号J,A[2:0]表示该第一3位信号S,|表示或运算;以及
一饱和信号,该饱和信号是根据等式:,SAT[2:0]=SIGNED?J[2:0]:~D[2:0]所得到,其中SAT[2:0]表示该饱和信号,SIGNED表示一信号,该SIGNED信号反映该压缩运算产生有号或是无号整数值。
14.根据权利要求13的侦测饱和的硬件装置,其特征在于,该饱和信号SAT[2:0]的每一个位反映压缩该32位整数值的压缩运算是否导致饱和、或是反映压缩该第一16位整数值与一第二16位整数值的压缩运算是否导致饱和。
15.根据权利要求13的侦测饱和的硬件装置,其特征在于,该逻辑单元还根据该第一3位信号A、该第二3位信号B、该第三3位信号C以及该第四3位信号D产生一16位结果信号,该16位结果信号对应该32位整数值的压缩值或是该第一16位整数值与一第二16位整数值的压缩值,当该侦测饱和的硬件装置侦测到饱和时,该结果信号反映饱和与该饱和方向。
16.根据权利要求13的侦测饱和的硬件装置,其特征在于,该逻辑单元包括:
一第一与非门,产生该第六信号F;
一第二与非门,产生该第五信号E;
一第一多工器,产生该第七信号J;以及
一第二多工器,产生该饱和信号SAT[2:0]。
17.一种侦测饱和的方法,侦测由压缩一32位整数值、一第一16位整数值与一第二16位整数值的压缩运算导致的饱和,其中该32位整数值包括该第一16位整数值以及该第二16位整数值,其特征在于,该侦测饱和的方法包括:
接收一第一3位信号A,该第一3位信号A反映该32位整数值、该第一16位整数值、以及该第二16位整数值的一最高有效位为0或是1;
接收一第二3位信号B,该第二3位信号B反映该32位整数值的一最低有效字的一最高有效位、以及该第一16位整数值与该第二16位整数值中的每一个的一最低有效字节的一最高有效位为0或是1;
接收一第三3位信号C,该第三3位信号C反映该32位整数值的一最高有效位字是否等于0xFFFF、以及该第一16位整数值与该第二16位整数值中的每一个的一最高有效字节是否等于0xFF;
接收一第四3位信号D,该第四3位信号D反映该32位整数值的一最高有效字是否等于0x0000、以及该第一16位整数值与该第二16位整数值中的每一个的一最高有效字节是否等于0x00;
产生一第六信号F,该第六信号F是根据等式:F[2:0]=~(~B[2:0]&D[2:0])所得到,其中F[2:0]表示该第六信号F,~B[2:0]表示该第二3位信号B的反向信号,D[2:0]表示该第四3位信号D,&表示与运算;
产生一第五信号E,该第五信号E是根据等式:E[2:0]=~(B[2:0]&C[2:0])所得到,其中E[2:0]表示该第五信号E,B[2:0]表示该第二3位信号B,C[2:0]表示该第三3位信号C;
产生一第七信号J,其中该第七信号J是根据等式:J[2:0]=(A[2:0]&E[2:0])|(~A[2:0]&F[2:0])所得到,其中J[2:0]表示该第七信号J,A[2:0]表示该第一3位信号A,|表示或运算;以及
产生一饱和信号,该饱和信号是根据等式:SAT[2:0]=SIGNED?J[2:0]:~D[2:0]所得到,其中SAT[2:0]表示该饱和信号,SIGNED表示一信号,该SIGNED信号反映该压缩运算产生有号或是无号整数值。
18.根据权利要求17的侦测饱和的方法,其特征在于,该饱和信号SAT[2:0]反映压缩该32位整数值的压缩运算是否导致饱和,或是反映压缩该第一16位整数值与一第二16位整数值的压缩运算是否导致饱和。
19.根据权利要求17的侦测饱和的方法,其特征在于,还包括产生一16位结果信号,该16位结果信号对应该32位整数值的压缩值或是该第一16位整数值与一第二16位整数值的压缩值,当侦测到饱和时,该结果信号反映饱和与该饱和方向。
20.根据权利要求17的侦测饱和的方法,其特征在于,该第六信号F是由一第一与非门产生,该第五信号E是由一第二与非门产生,该第七信号J是由一第一多工器产生,该饱和信号SAT[2:0]是由一第二多工器产生。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/491,260 | 2012-06-07 | ||
US13/491,260 US8849885B2 (en) | 2012-06-07 | 2012-06-07 | Saturation detector |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103399727A true CN103399727A (zh) | 2013-11-20 |
CN103399727B CN103399727B (zh) | 2016-08-10 |
Family
ID=49563362
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310219483.XA Active CN103399727B (zh) | 2012-06-07 | 2013-06-04 | 硬件整数饱和侦测器、侦测饱和的方法及其硬件装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8849885B2 (zh) |
CN (1) | CN103399727B (zh) |
TW (1) | TWI520053B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112181354A (zh) * | 2020-10-12 | 2021-01-05 | 上海芯旺微电子技术有限公司 | 一种移位饱和同步处理的方法及其应用 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8849885B2 (en) * | 2012-06-07 | 2014-09-30 | Via Technologies, Inc. | Saturation detector |
US10007519B2 (en) * | 2015-12-22 | 2018-06-26 | Intel IP Corporation | Instructions and logic for vector bit field compression and expansion |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1156279A (zh) * | 1995-12-29 | 1997-08-06 | 汤姆森消费电子有限公司 | 对称地减少m位数字信号的n个最低有效位的装置 |
US6092094A (en) * | 1996-04-17 | 2000-07-18 | Advanced Micro Devices, Inc. | Execute unit configured to selectably interpret an operand as multiple operands or as a single operand |
US8190867B2 (en) * | 1994-12-02 | 2012-05-29 | Intel Corporation | Packing two packed signed data in registers with saturation |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5493581A (en) * | 1992-08-14 | 1996-02-20 | Harris Corporation | Digital down converter and method |
US5717947A (en) * | 1993-03-31 | 1998-02-10 | Motorola, Inc. | Data processing system and method thereof |
US7467178B2 (en) * | 2001-06-01 | 2008-12-16 | Microchip Technology Incorporated | Dual mode arithmetic saturation processing |
US20040073773A1 (en) * | 2002-02-06 | 2004-04-15 | Victor Demjanenko | Vector processor architecture and methods performed therein |
US20060277277A1 (en) * | 2005-06-02 | 2006-12-07 | Agere Systems Inc. | Method of automatically caching WAP web pages and a mobile communications device for the same |
US8849885B2 (en) * | 2012-06-07 | 2014-09-30 | Via Technologies, Inc. | Saturation detector |
-
2012
- 2012-06-07 US US13/491,260 patent/US8849885B2/en active Active
-
2013
- 2013-05-15 TW TW102117257A patent/TWI520053B/zh active
- 2013-06-04 CN CN201310219483.XA patent/CN103399727B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8190867B2 (en) * | 1994-12-02 | 2012-05-29 | Intel Corporation | Packing two packed signed data in registers with saturation |
CN1156279A (zh) * | 1995-12-29 | 1997-08-06 | 汤姆森消费电子有限公司 | 对称地减少m位数字信号的n个最低有效位的装置 |
US6092094A (en) * | 1996-04-17 | 2000-07-18 | Advanced Micro Devices, Inc. | Execute unit configured to selectably interpret an operand as multiple operands or as a single operand |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112181354A (zh) * | 2020-10-12 | 2021-01-05 | 上海芯旺微电子技术有限公司 | 一种移位饱和同步处理的方法及其应用 |
CN112181354B (zh) * | 2020-10-12 | 2021-08-10 | 上海芯旺微电子技术有限公司 | 一种移位饱和同步处理的方法及其应用 |
Also Published As
Publication number | Publication date |
---|---|
TW201351271A (zh) | 2013-12-16 |
TWI520053B (zh) | 2016-02-01 |
US8849885B2 (en) | 2014-09-30 |
CN103399727B (zh) | 2016-08-10 |
US20130332496A1 (en) | 2013-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2656730C2 (ru) | Процессоры, способы, системы и команды для сложения трех операндов-источников с плавающей запятой | |
US11847185B2 (en) | Systems and methods of instructions to accelerate multiplication of sparse matrices using bitmasks that identify non-zero elements | |
US20190042237A1 (en) | Matrix multiplication acceleration of sparse matrices using column folding and squeezing | |
US9191027B2 (en) | Data compression devices, operating methods thereof, and data processing apparatuses including the same | |
RU2263947C2 (ru) | Целочисленное умножение высокого порядка с округлением и сдвигом в архитектуре с одним потоком команд и множеством потоков данных | |
WO2022037257A1 (zh) | 卷积计算引擎、人工智能芯片以及数据处理方法 | |
JP3974063B2 (ja) | プロセッサおよびコンパイラ | |
CN110879724A (zh) | 用于深度学习和其它算法的fp16-s7e8混合精度 | |
CN101399553B (zh) | 一种可在线编程的准循环ldpc码编码器装置 | |
CN1402843A (zh) | 在一个周期内处理乘累加运算 | |
CN110515589B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
TW200411542A (en) | Processor executin SIMD instructions | |
JPH08234962A (ja) | 24ビットおよび16ビット算術演算の双方を実行するための装置および方法 | |
WO2017048406A1 (en) | Error-checking compressed streams in hetergeneous compression accelerators | |
CN103399727A (zh) | 硬件整数饱和侦测器、侦测饱和的方法及其硬件装置 | |
US6442729B1 (en) | Convolution code generator and digital signal processor which includes the same | |
US20130262787A1 (en) | Scalable memory architecture for turbo encoding | |
US20060179098A1 (en) | System and method for reduction of leading zero detect for decimal floating point numbers | |
JP2000322235A (ja) | 情報処理装置 | |
CN111752745A (zh) | 对码字中相邻两位错误的检测 | |
CN103840835A (zh) | 一种数据解压缩方法及装置 | |
US6766440B1 (en) | Microprocessor with conditional cross path stall to minimize CPU cycle time length | |
CN101930354A (zh) | 微处理器及其执行指令的方法 | |
CN209895329U (zh) | 乘法器 | |
US20220197653A1 (en) | Processors, methods, systems, and instructions to select and store data elements from strided data element positions in a first dimension from three source two-dimensional arrays in a result two-dimensional array |
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 |