CN111971649A - 运算装置和运算系统 - Google Patents
运算装置和运算系统 Download PDFInfo
- Publication number
- CN111971649A CN111971649A CN201980024094.7A CN201980024094A CN111971649A CN 111971649 A CN111971649 A CN 111971649A CN 201980024094 A CN201980024094 A CN 201980024094A CN 111971649 A CN111971649 A CN 111971649A
- Authority
- CN
- China
- Prior art keywords
- adder
- bits
- multiplier
- multipliers
- adders
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 239000000047 product Substances 0.000 description 116
- 230000004048 modification Effects 0.000 description 78
- 238000012986 modification Methods 0.000 description 78
- 238000004364 calculation method Methods 0.000 description 24
- 238000000034 method Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 4
- 239000012467 final product Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- 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/544—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 for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/53—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
- G06F7/5324—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3812—Devices capable of handling different types of numbers
- G06F2207/3816—Accepting numbers of variable word length
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
提供一种运算装置,具备:乘法部,其根据运算精度模式将多个乘法器按每一个或两个以上的乘法器进行分割并分配给一个或多个组中的各个组,在各组中,各乘法器根据运算精度模式对个别乘数及个别被乘数进行乘法运算,该个别乘数为与该组对应的乘数的至少一部分的数位范围,该个别被乘数为与该组对应的被乘数的至少一部分的数位范围;以及加法部,其根据运算精度模式将多个加法器按每一个或两个以上的加法器进行分割并分配给一个或多个组中的各个组,分配给各组的一个或两个以上的加法器对由分配给该组的各乘法器得到的各乘法运算结果进行加法运算,并输出乘数与被乘数之积。
Description
技术领域
本发明涉及一种运算装置和运算系统,特别是涉及一种以可变精度执行乘法运算的运算装置和运算系统。
背景技术
一直以来,已知一种执行双精度的乘法运算的装置。例如,专利文献1所记载的运算装置具备两个乘法器12、13、ALU 37以及累加器(accumulator)24、25。对ALU 37的输入部提供乘法器12、13的乘法运算结果和累加器24、25的输出。
现有技术文献
专利文献
专利文献1:日本特开平11-259273号公报
发明内容
发明要解决的问题
然而,专利文献1所记载的装置存在如下的问题:为了使两个乘法器12、13求解到最终的乘法运算结果,而使电路规模大,其结果为电力效率差。
并且,近年来,期望一种运算装置,能够以小的电路规模执行可变精度的乘法运算,而不只是执行一个精度的乘法运算。
一般地,单精度的乘法运算所需要的晶体管的数量为双精度的乘法运算所需要的晶体管的数量的1/4以下,半精度的乘法运算所需要的晶体管的数量为双精度的乘法运算所需要的晶体管的数量的1/16以下。因而,例如,切换地执行单精度和双精度那样的一般的运算装置就电路规模而言具有能够执行一个双精度运算、或四个单精度运算那样的晶体管数。在这种一般的运算装置中,在单精度运算时使用的晶体管为双精度运算中使用的晶体管的1/4以下。另外,还考虑能够对一个双精度运算或两个单精度运算进行切换,在该情况下也为,在单精度运算时使用的晶体管为双精度运算所使用的晶体管的1/2以下。也就是说,这种运算装置尽管为了双精度运算而具有大的电路规模,但在执行单精度运算时,运算装置内的晶体管的3/4或1/2以上不被使用而变成浪费。
因此,本发明的目的在于提供一种能够以小的电路规模高效地分别执行多个精度的乘法运算的运算装置和运算系统。
用于解决问题的方案
在本发明的第一方式中,提供一种以可变精度执行乘法运算的运算装置。可以为,运算装置具备乘法部,该乘法部具有多个乘法器,多个乘法器是根据运算精度模式按每一个或两个以上的乘法器进行分割并分配给一个或多个组中的各个组,在各组中,各乘法器根据运算精度模式对个别乘数及个别被乘数进行乘法运算,该个别乘数为与该组对应的乘数的至少一部分的数位范围,该个别被乘数为与该组对应的被乘数的至少一部分的数位范围。可以为,运算装置具备加法部,该加法部具有多个加法器,多个加法器是根据运算精度模式按每一个或两个以上的加法器进行分割并分配给一个或多个组中的各个组,分配给各组的一个或两个以上的加法器对由分配给该组的各乘法器得到的各乘法运算结果进行加法运算,并输出乘数与被乘数之积。可以为,运算装置具备第一连接切换器,该第一连接切换器根据运算精度模式,针对一个或多个组中的各个组,将由各乘法器得到的各乘法运算结果输入到一个或两个以上的加法器中的要加上该乘法运算结果的数位位置。
可以为,多个乘法器中的各个乘法器对个别乘数及个别被乘数进行乘法运算,输出包含各数位的和数据及从各数位的进位数据的乘法运算结果。
可以为,多个乘法器中的各个乘法器对1个单位比特长度的个别乘数及个别被乘数进行乘法运算,输出2个单位比特长度的乘法运算结果。可以为,多个加法器中的各个加法器对2个单位比特长度的多个输入数据进行加法运算,输出2个单位比特长度的和以及与运算精度模式相应地向高数位的进位。
可以为,在对2个单位比特长度以上的乘数及被乘数进行乘法运算的至少一个运算精度模式中,关于一个或多个组中的各个组,一个或两个以上的乘法器在每个循环中被输入乘数中的由各乘法器负责的数位范围的个别乘数以及被乘数中的在每个循环中从高数位起按顺序选择1个单位比特长度的个别被乘数,在每个循环中输出各个个别乘数及个别被乘数的部分积来作为乘法运算结果。可以为,第一连接切换器在每个循环中,以使乘数中的最低位侧的数位范围的个别乘数及个别被乘数的部分积与一个或两个以上的加法器中的最低位的数位范围对应的方式使一个或两个以上的乘法器输出的各个部分积移位后,输入到一个或两个以上的加法器,并与中间结果进行加法运算。可以为,运算装置还具备第二连接切换器,该第二连接切换器针对一个或多个组中的各个组,在每个循环中使中间结果向高位侧移位1个单位比特长度后输入到一个或两个以上的加法器。
可以为,在2个单位比特长度以上的至少一个运算精度模式中,多个乘法器及多个加法器被分配给两个以上的组。可以为,运算装置针对两个以上的组中的各个组,利用多个循环来运算乘数与被乘数之积。
可以为,在对1个单位比特长度的乘数及被乘数进行乘法运算的运算精度模式中,多个乘法器被分配给各自包括一个乘法器的多个组,分配给各组的乘法器对分配给该组的1个单位比特长度的乘数及被乘数进行乘法运算。
可以为,加法部具有多个中间寄存器,所述多个中间寄存器分别与多个加法器中的各个加法器对应地设置,各自保持中间结果中的与各加法器对应的数位范围。
可以为,多个加法器中的各个加法器包括第一加法元件,该第一加法元件输出包含各数位的和数据及从各数位的进位数据的加法运算结果。可以为,多个中间寄存器各自保持中间结果中的由对应的第一加法元件输出的数位范围的和数据及进位数据。可以为,加法部还具有多个第二加法元件,所述多个第二加法元件分别与多个加法器中的各个加法器对应地设置,多个第二加法元件是根据运算精度模式按每一个或每两个以上的第二加法元件进行分割并分配给一个或多个组中的各个组,所述多个第二加法元件在各组中对一个或两个以上的第一加法元件输出的和数据及进位数据进行加法运算并作为乘数与被乘数之积进行输出。
在本发明的第二方式中,提供一种以可变精度执行乘法运算的运算装置。可以为,运算装置具备乘法部,该乘法部具有多个乘法器,所述多个乘法器各自对1个单位比特长度的两个数进行乘法运算,并输出包含各数位的和数据及从各数位的进位数据的乘法运算结果。可以为,运算装置具备加法部,该加法部具有多个加法器,所述多个加法器各自对包含由多个乘法器中的至少一个乘法器得到的乘法运算结果的至少两个输入数据进行加法运算。可以为,运算装置具备模式选择部,该模式选择部根据运算精度模式选择分割数和循环数,该分割数是将多个乘法器及多个加法器按组进行分割的分割数,所述组包括一个以上的乘法器及一个以上的加法器,且对互不相同的乘数及被乘数进行乘法运算,该循环数是在组中使用一个以上的乘法器及一个以上的加法器对乘数及被乘数进行乘法运算时使用的。
可以为,模式选择部在对n个单位比特长度(n为自然数)的乘数及被乘数进行乘法运算的运算精度模式中,将多个乘法器及多个加法器分割为各自包括n个乘法器及n个加法器的至少一个组。可以为,至少一个组中的各个组内的n个乘法器在n个循环的期间内,以在一个循环内进行n组的乘法运算的方式进行每个组的n个个别乘数中的各个个别乘数与n个个别被乘数中的各个个别被乘数的乘法运算,所述n个个别乘数各自为乘数中包含的1个单位比特长度的数位范围,所述n个个别被乘数各自为被乘数中包含的1个单位比特长度的数位范围。可以为,至少一个组中的各个组内的n个加法器被组合在一起,在n个循环的期间内,将每个循环内来自相同组的n个乘法器的各乘法运算结果加到乘数与被乘数之积的中间结果中的与各乘法运算结果相应的数位位置。
在本发明的第三方式中,提供一种运算装置,以可变精度执行乘法运算,所述运算装置具备:多个乘法器,所述多个乘法器构成为各自输出两个输入数据的乘法运算结果的前一级的和信号及进位信号;多个加法器;多个寄存器,所述多个寄存器构成为各自保持对应的加法器的加法运算结果;多个输出端子;第一切换器,其构成为根据运算精度模式,将构成从所述多个乘法器输出的多个和信号及多个进位信号的1个单位比特长度的多个数据的输出目的地切换为所述多个加法器的多个输入的多个比特位置中的某一个;以及第二切换器,其构成为根据所述运算精度模式,将构成所述多个寄存器所保持的多个加法运算结果的1个单位比特长度的多个数据的输出目的地切换为所述多个加法器的多个输入的多个比特位置中的某一个,或者将所述寄存器所保持的多个加法运算结果的输出目的地切换为所述多个输出端子中的某一个。
在本发明的第四方式中,提供一种运算装置,以可变精度执行乘法运算,所述运算装置具备:第一乘法器,其构成为输出1个单位比特长度的两个数据的乘法运算结果的前一级的2个单位比特长度的第一和信号及第一进位信号;第二乘法器,其构成为输出1个单位比特长度的两个数据的乘法运算结果的前一级的2个单位比特长度的第二和信号及第二进位信号;第一加法器及第二加法器,该第一加法器及第二加法器分别构成为执行2个单位比特长度的多个数据的加法运算;第一寄存器及第二寄存器,该第一寄存器及第二寄存器构成为各自保持所述第一加法器的第一加法运算结果及所述第二加法器的第二加法运算结果;第一输出端子及第二输出端子;第一连接切换器,其构成为根据运算精度模式,将分别构成从所述第一乘法器输出的所述第一和信号及所述第一进位信号以及从所述第二乘法器输出的所述第二和信号及所述第二进位信号的、1个单位比特长度的多个数据的输出目的地切换为所述第一加法器及所述第二加法器的多个输入的多个比特位置中的某一个;以及第二连接切换器,其构成为根据所述运算精度模式,将分别构成所述第一寄存器内的所述第一加法运算结果及所述第二寄存器内的所述第二加法运算结果的1个单位比特长度的多个数据的输出目的地切换为所述第一加法器及所述第二加法器的多个输入的多个比特位置中的某一个,或者将所述第一寄存器内的所述第一加法运算结果的输出目的地切换为所述第一输出端子并且将所述第二寄存器内的所述第二加法运算结果的输出目的地切换为所述第二输出端子。
在本发明的第五方式中,提供一种运算装置,以可变精度执行乘法运算,所述运算装置具备:多个乘法器,所述多个乘法器各自输出两个输入数据的乘法运算结果的前一级的和信号及进位信号;多个第一级加法器,所述多个第一级加法器构成为各自输出加法运算结果的前一级的和信号及进位信号;多个和信号保持寄存器,所述多个和信号保持寄存器构成为各自保持从对应的所述第一级加法器输出的所述和信号;多个进位信号保持寄存器,所述多个进位信号保持寄存器构成为各自保持从对应的所述第一级加法器输出的所述进位信号;多个第二级加法器,所述多个第二级加法器构成为各自将被输入的和信号与进位信号进行加法运算;第一连接切换器,其构成为根据运算精度模式,将构成从所述多个乘法器输出的多个和信号及进位信号的1个单位比特长度的多个数据的输出目的地切换为所述多个第一级加法器的多个输入的多个比特位置中的某一个,或者将从所述多个乘法器输出的多个和信号及进位信号的输出目的地切换为所述多个第二级加法器的多个输入中的某一个;以及第二连接切换器,其构成为根据所述运算精度模式,将构成所述多个和信号保持寄存器所保持的多个和信号的1个单位比特长度的多个数据、及构成所述多个进位信号保持寄存器所保持的多个进位信号的1个单位比特长度的多个数据的输出目的地切换为所述多个第一级加法器的多个输入的多个比特位置中的某一个,或者将所述多个和信号保持寄存器所保持的多个和信号及所述多个进位信号保持寄存器所保持的多个进位信号切换为所述多个第二级加法器的多个输入中的某一个。
在本发明的第六方式中,提供一种运算装置,以可变精度执行乘法运算,所述运算装置具备:第一乘法器,其构成为输出1个单位比特长度的两个数据的乘法运算结果的前一级的2个单位比特长度的第一和信号及第一进位信号;第二乘法器,其构成为输出1个单位比特长度的两个数据的乘法运算结果的前一级的2个单位比特长度的第二和信号及第二进位信号;第一加法器,其构成为输出2个单位比特长度的多个数据的加法运算结果的前一级的第三和信号及第三进位信号;第二加法器,其构成为输出2个单位比特长度的多个数据的加法运算结果的前一级的第四和信号及第四进位信号;第一寄存器~第四寄存器,其构成为各自保持所述第三和信号、所述第三进位信号、所述第四和信号及所述第四进位信号;第三加法器及第四加法器,所述第三加法器及第四加法器构成为各自对被输入的和信号及进位信号进行加法运算;第一输出端子及第二输出端子,所述第一输出端子及第二输出端子各自输出所述第三加法器的加法运算结果及所述第四加法器的加法运算结果;第一连接切换器,其构成为根据运算精度模式,将分别构成从所述第一乘法器输出的所述第一和信号及所述第一进位信号以及从所述第二乘法器输出的所述第二和信号及所述第二进位信号的、1个单位比特长度的多个数据的输出目的地切换为所述第一加法器及所述第二加法器的多个输入的多个比特位置中的某一个,或者将所述第一和信号及所述第一进位信号向所述第三加法器输出并且将所述第二和信号及所述第二进位信号向所述第四加法器输出;以及第二连接切换器,其构成为根据所述运算精度模式,将分别构成所述第一寄存器内的所述第三和信号、所述第二寄存器内的所述第三进位信号、所述第三寄存器内的所述第四和信号及所述第四寄存器内的所述第四进位信号的1个单位比特长度的多个数据的输出目的地切换为所述第一加法器及所述第二加法器的多个输入的多个比特位置中的某一个,或者将所述第一寄存器内的所述第三和信号及所述第二寄存器内的所述第三进位信号向所述第三加法器输出、并且将所述第三寄存器内的所述第四和信号及所述第四寄存器内的所述第四进位信号向所述第四加法器输出。
在本发明的第七方式中,提供一种运算装置,以可变精度执行乘法运算,所述运算装置具备:第一乘法器,其构成为输出1个单位比特长度的两个数据的乘法运算结果的前一级的2个单位比特长度的第一和信号及第一进位信号;第二乘法器,其构成为输出1个单位比特长度的两个数据的乘法运算结果的前一级的2个单位比特长度的第二和信号及第二进位信号;第三乘法器,其构成为输出1个单位比特长度的两个数据的乘法运算结果的前一级的2个单位比特长度的第三和信号及第三进位信号;第四乘法器,其构成为输出1个单位比特长度的两个数据的乘法运算结果的前一级的2个单位比特长度的第四和信号及第四进位信号;第一加法器~第四加法器,所述第一加法器~第四加法器各自构成为执行2个单位比特长度的多个数据的加法运算;第一寄存器~第四寄存器,所述第一寄存器~第四寄存器构成为各自保持所述第一加法器的第一加法运算结果、所述第二加法器的第二加法运算结果、所述第三加法器的第三加法运算结果及所述第四加法器的第四加法运算结果;第一输出端子~第四输出端子;第一连接切换器,其构成为根据运算精度模式,将分别构成从所述第一乘法器输出的所述第一和信号及所述第一进位信号、从所述第二乘法器输出的所述第二和信号及所述第二进位信号、从所述第三乘法器输出的所述第三和信号及所述第三进位信号以及从所述第四乘法器输出的所述第四和信号及所述第四进位信号的1个单位比特长度的多个数据的输出目的地切换为所述第一加法器、所述第二加法器、所述第三加法器及所述第四加法器的多个输入的多个比特位置中的某一个;以及第二连接切换器,其构成为根据所述运算精度模式,将分别构成所述第一寄存器内的所述第一加法运算结果、所述第二寄存器内的所述第二加法运算结果、所述第三寄存器内的所述第三加法运算结果及所述第四寄存器内的所述第四加法运算结果的1个单位比特长度的多个数据的输出目的地切换为所述第一加法器、所述第二加法器、所述第三加法器及所述第四加法器的多个输入的多个比特位置中的某一个,或者将所述第一寄存器内的所述第一加法运算结果的输出目的地切换为所述第一输出端子、且将所述第二寄存器内的所述第二加法运算结果的输出目的地切换为所述第二输出端子、且将所述第三寄存器内的所述第三加法运算结果的输出目的地切换为所述第三输出端子、且将所述第四寄存器内的所述第四加法运算结果的输出目的地切换为所述第四输出端子。
在本发明的第八方式中,提供一种运算装置,以可变精度执行乘法运算,所述运算装置具备:第一乘法器,其构成为输出1个单位比特长度的两个数据的乘法运算结果的前一级的两个单位比特长度的第一和信号及第一进位信号;第二乘法器,其构成为输出1个单位比特长度的两个数据的乘法运算结果的前一级的2个单位比特长度的第二和信号及第二进位信号;第三乘法器,其构成为输出1个单位比特长度的两个数据的乘法运算结果的前一级的2个单位比特长度的第三和信号及第三进位信号;第四乘法器,其构成为输出1个单位比特长度的两个数据的乘法运算结果的前一级的2个单位比特长度的第四和信号及第四进位信号;第一加法器,其构成为输出2个单位比特长度的多个数据的加法运算结果的前一级的第五和信号及第五进位信号;第二加法器,其构成为输出2个单位比特长度的多个数据的加法运算结果的前一级的第六和信号及第六进位信号;第三加法器,其构成为输出2个单位比特长度的多个数据的加法运算结果的前一级的第七和信号及第七进位信号;第四加法器,其构成为输出2个单位比特长度的多个数据的加法运算结果的前一级的第八和信号及第八进位信号;第一寄存器~第八寄存器,所述第一寄存器~第八寄存器构成为各自保持所述第五和信号、所述第五进位信号、所述第六和信号、所述第六进位信号、所述第七和信号、所述第七进位信号、所述第八和信号及所述第八进位信号;第五加法器~第八加法器,所述第五加法器~第八加法器各自构成为对被输入的和信号及进位信号进行加法运算;第一输出端子~第四输出端子,所述第一输出端子~第四输出端子分别输出所述第五加法器的加法运算结果、所述第六加法器的加法运算结果、所述第七加法器的加法运算结果及所述第八加法器的加法运算结果;第一连接切换器,其构成为根据运算精度模式,将分别构成从所述第一乘法器输出的所述第一和信号及所述第一进位信号、从所述第二乘法器输出的所述第二和信号及所述第二进位信号、从所述第三乘法器输出的所述第三和信号及所述第三进位信号以及从所述第四乘法器输出的所述第四和信号及所述第四进位信号的1个单位比特长度的多个数据的输出目的地切换为所述第一加法器、所述第二加法器、所述第三加法器及所述第四加法器的多个输入的多个比特位置中的某一个,或者将所述第一和信号及所述第一进位信号向所述第五加法器输出、且将所述第二和信号及所述第二进位信号向所述第六加法器输出、且将所述第三和信号及所述第三进位信号向所述第七加法器输出、且将所述第四和信号及所述第四进位信号向所述第八加法器输出;以及第二连接切换器,其构成为根据所述运算精度模式,将分别构成所述第一寄存器内的所述第五和信号、所述第二寄存器内的所述第五进位信号、所述第三寄存器内的所述第六和信号、所述第四寄存器内的所述第六进位信号、所述第五寄存器内的所述第七和信号、所述第六寄存器内的所述第七进位信号、所述第七寄存器内的所述第八和信号及所述第八寄存器内的所述第八进位信号的1个单位比特长度的多个数据的输出目的地切换为所述第一加法器、所述第二加法器、所述第三加法器及所述第四加法器的多个输入的多个比特位置中的某一个,或者将所述第一寄存器内的所述第五和信号及所述第二寄存器内的所述第五进位信号向所述第五加法器输出、且将所述第三寄存器内的所述第六和信号及所述第四寄存器内的所述第六进位信号向所述第六加法器输出、且将所述第五寄存器内的所述第七和信号及所述第六寄存器内的所述第七进位信号向所述第七加法器输出、且将所述第七寄存器内的所述第八和信号及所述第八寄存器内的所述第八进位信号向所述第八加法器输出。
在本发明的第九方式中,提供一种运算系统,该运算系统具备:运算单元,其具备多个上述的运算装置;以及多个处理器,多个处理器共享运算单元。
附图说明
图1示出本实施方式所涉及的运算装置405的结构。
图2示出本实施方式所涉及的运算装置405的半精度运算模式下的运算。
图3示出单精度的乘数A1及被乘数B1的乘法运算。
图4示出本实施方式所涉及的运算装置405的单精度运算模式下的运算。
图5示出双精度的乘数A1及被乘数B1的乘法运算。
图6示出本实施方式的第一变形例所涉及的加法器540及中间寄存器550的结构。
图7示出本实施方式的第二变形例所涉及的运算装置1的结构。
图8示出半精度运算模式下的乘数Ai、被乘数Bi及它们的积Ci(i=1~4)。
图9示出第二变形例所涉及的运算装置1的半精度运算模式下的动作。
图10示出第二变形例的半精度运算模式下的加法器4a的输入输出。
图11示出单精度运算模式下的乘数Ai、被乘数Bi及它们的积Ci(i=1~2)。
图12示出第二变形例所涉及的运算装置1的单精度运算模式下的动作。
图13示出第二变形例的单精度运算模式下的第一循环的加法器4a~4b的输入输出。
图14示出第二变形例的单精度运算模式下的第二循环的加法器4a~4b的输入输出。
图15示出双精度运算模式下的乘数A1、被乘数B1及它们的积C1。
图16示出第二变形例所涉及的运算装置1的单精度运算模式下的动作。
图17示出第二变形例的双精度运算模式下的第一循环的加法器4a~4d的输入输出。
图18示出第二变形例的双精度运算模式下的第二循环的加法器4a~4d的输入输出。
图19示出Wallace树乘法器2a的结构。
图20示出由Wallace树乘法器2a生成的数据。
图21示出本实施方式的第三变形例所涉及的运算装置101的结构。
图22示出第三变形例所涉及的运算装置101的半精度运算模式下的动作。
图23示出第三变形例的半精度运算模式下的加法器4a的输入输出。
图24示出第三变形例所涉及的运算装置101的单精度运算模式下的动作。
图25示出第三变形例的单精度运算模式下的第一循环的加法器14a~14b的输入输出。
图26示出第三变形例的单精度运算模式下的第二循环的加法器14a~14b的输入输出。
图27示出第三变形例所涉及的运算装置101的双精度运算模式下的动作。
图28A示出第三变形例的双精度运算模式下的第一循环的加法器14a~14b的输入输出。
图28B示出第三变形例的双精度运算模式下的第一循环的加法器14c~14d的输入输出。
图29A示出第三变形例的双精度运算模式下的第二循环的加法器14a~14b的输入输出。
图29B示出第三变形例的双精度运算模式下的第二循环的加法器14c~14d的输入输出。
图30示出使用2个CSA执行进位信号保留加法运算的加法器200的结构。
图31示出加法器200的输入数据、中途数据、输出数据。
图32示出使用4个CSA执行进位信号保留加法运算的加法器300的结构。
图33是表示加法器300的输入数据、中途数据、输出数据的图。
图34示出使用8个CSA执行进位信号保留加法运算的加法器400的结构。
图35示出本实施方式的第四变形例所涉及的运算系统1000的结构。
具体实施方式
下面,通过发明的实施方式来对本发明进行说明,但是下面的实施方式并非对权利要求书所涉及的发明进行限定。另外,实施方式中说明的特征的组合未必全部是发明的解决方案所必须的。
图1示出本实施方式所涉及的运算装置405的结构。运算装置405以可变精度执行乘法运算。在本实施方式中,作为一例,运算装置405具有对例如13比特的半精度的乘数及被乘数进行乘法运算的半精度运算模式、对例如26比特的单精度的乘数及被乘数进行乘法运算的单精度运算模式、以及对例如52比特的双精度的乘数及被乘数进行乘法运算的双精度运算模式这三个运算精度模式。此外,为了便于说明,将进行乘法运算的两个数表示为“乘数”及“被乘数”,但是这些数之间没有实质上的差异。因而,将权利要求书及说明书等所记载的“乘数”及“被乘数”改换后的结构也属于权利要求书所涉及的发明的保护范围,是在本说明书等中公开的结构。
在此,当设为将用于表示半精度的数的比特长度(例如13比特)表示为“1个单位比特长度”时,单精度的数为2个单位比特长度,双精度的数为4个单位比特长度。关于乘数和被乘数的乘法运算,鉴于是通过将针对乘数的各数位及被乘数的各数位的所有组合进行数位彼此的乘法运算所得到的各乘法运算结果加到适当的数位位置来得到最终的积的计算,半精度的数彼此的乘法运算为进行1次的1个单位比特长度的数彼此的乘法运算,单精度的数彼此的乘法运算为进行4(2×2)次的1个单位比特长度的数彼此的乘法运算,双精度的数彼此的乘法运算为进行16(4×4)次的1个单位比特长度的数彼此的乘法运算。而且,n个单位比特长度的数彼此的乘法运算为进行n×n次的1个单位比特长度的数彼此的乘法运算。此外,根据运算装置405的设计,1个单位比特长度可以为任意的长度。
本实施方式所涉及的运算装置405在半精度运算模式、单精度运算模式以及双精度运算模式中的各运算精度模式中,有效利用运算装置405所具有的多个乘法器。
运算装置405具备乘法部410、加法部430、模式选择部460、第一连接切换器470以及第二连接切换器480。乘法部410具有多个乘法器420、即例如在本实施方式中为四个乘法器420-1~420-4。多个乘法器420各自被输入1个单位比特长度的两个数,对这两个数进行乘法运算并输出乘法运算结果。各乘法器420-i(k=1、2、3、4)被输入1个单位比特长度的输入数据INik0及INi1,输出2个单位比特长度的乘法运算结果。
加法部430具有多个加法器440以及多个中间寄存器450。在本实施方式中,作为一例,加法部430具有四个加法器440-1~440-4以及四个中间寄存器450-1~450-4。
多个加法器440各自对包含由多个乘法器420-1~420-4中的至少一个乘法器420得到的乘法运算结果的至少两个输入数据进行加法运算。各加法器440-i(i=1、2、3、4)对2个单位比特长度的多个输入数据进行加法运算,输出2个单位比特长度的和以及与运算精度模式相应地向高数位的进位。在此,加法器440可以与乘法器420相同数量地设置,可以为能够被输入与乘法器420的输出数据相同的比特长度(例如2个单位比特长度)的输入数据。
多个中间寄存器450-i(i=1、2、3、4)与多个加法器440-1~440-4中的各个加法器分别对应地设置。各中间寄存器450保持对应的加法器440输出的加法运算结果。
模式选择部460被输入运算装置405要进行动作的运算精度模式,根据运算精度模式对运算装置405的各部进行控制。在此,模式选择部460也可以从与运算装置405连接的处理器等接受运算精度模式的指定,来动态地控制运算装置405的各部使其按所指定的运算精度模式进行动作,还可以接收由设定寄存器等设定的运算精度模式,来控制运算装置405的各部使其按该运算精度模式固定地进行动作。
模式选择部460根据运算精度模式,来选择将多个乘法器420及多个加法器440按包括一个以上的乘法器420及一个以上的加法器440的组进行分割的分割数。这些一个或多个组被用于对互不相同的乘数及被乘数进行乘法运算。通过像这样的组分割,多个乘法器420是根据运算精度模式按每一个或每两个以上的乘法器420进行分割并分配给一个或多个组中的各个组。而且,在各组中,各乘法器420根据运算精度模式,对与该组对应的乘数的至少一部分的数位范围(例如1个单位比特长度的数位范围)的个别乘数及与该组对应的被乘数的至少一部分的数位范围(例如1个单位比特长度的数位范围)的个别被乘数进行乘法运算。
另外,模式选择部460根据运算精度模式,来选择在组中使用一个以上的乘法器420及一个以上的加法器440对乘数及被乘数进行乘法运算时使用的循环数。在此,通过上述的组分割,多个加法器440是根据运算精度模式按每一个或每两个以上的加法器440分割并分配给一个或多个组中的各个组。而且,分配给各组的一个或两个以上的加法器440对由分配给该组的各乘法器420得到的各乘法运算结果进行加法运算。分配给各组的一个或两个以上的加法器440在根据运算精度模式选择的循环数的期间内对各乘法运算结果进行加法运算。各组的一个或两个以上的加法器440所对应的一个或两个以上的中间寄存器450各自保持每个循环的加法运算结果即中间结果中的与各加法器440对应的数位范围。由此,分配给各组的一个或两个以上的加法器440最终得到乘数与被乘数之积,并输出该积。
在半精度运算模式中,本实施方式所涉及的模式选择部460将四个乘法器420及四个加法器440分割为包括一个乘法器420及一个加法器440的四个组,在四个组中并行地进行可能互不相同的四组的乘数及被乘数的乘法运算。
另外,在单精度运算模式中,模式选择部460将四个乘法器420及加法器440分割为包括两个乘法器420及两个加法器440的两个组,在两个组中并行地进行可能互不相同的两组的乘数及被乘数的乘法运算。在该情况下,各组通过在一个循环内执行两个的1个单位比特长度的乘法运算,由此能够执行利用两个循环进行四次的1个单位比特长度的乘法运算的单精度的乘法运算。
另外,在双精度运算模式中,模式选择部460将四个乘法器420及加法器440设为一个组,在一个组中进行一组的乘数及被乘数的乘法运算。在该情况下,组通过在一个循环内执行四个的1个单位比特长度的乘法运算,由此能够执行利用四个循环进行16次的1个单位比特长度的乘法运算的双精度的乘法运算。
第一连接切换器470接受模式选择部460的控制,根据运算精度模式来切换将各乘法器420输出的各乘法运算结果向各加法器440的各输入数据中的哪个数位位置传输。第一连接切换器470根据运算精度模式,针对一个或多个组中的各个组,将由各乘法器420得到的各乘法运算结果输入到组内的一个或两个以上的加法器440中的要加上该乘法运算结果的数位位置。
第二连接切换器480接受模式选择部460的控制,根据运算精度模式,针对一个或多个组中的各个组,在每个循环中,将组内的两个以上的中间寄存器450所保持的中间结果移位并向组内的两个以上的加法器440输入。由此,运算装置405针对各组,在每个循环中,从高位侧(或低位侧)向低位侧(或高位侧)地计算每个乘法器420的乘法运算结果,通过在各循环中将各乘法器420的乘法运算结果加到组的中间结果的低位侧(或高位侧),并在下一个循环中将中间结果向高位侧(或低位侧)移位,由此能够在乘数与被乘数之积中的适当的位置加上各乘法运算结果。
图2示出本实施方式所涉及的运算装置405的半精度运算模式下的运算。在半精度运算模式中,运算装置405对半精度、即1个单位比特长度的四组的乘数Ai及被乘数Bi(i=1、2、3、4)分别进行乘法运算,从而在一个循环内输出四组的积Ci。
在半精度运算模式中,多个乘法器420被分配给各自包括一个乘法器420的多个组。在本实施例中,乘法器420-i(i=1、2、3、4)是对四个组各分配一个乘法器。各乘法器420-i将分配给该组的1个单位比特长度的乘数Ai及被乘数Bi作为输入数据INi0及INi1进行输入,对它们进行乘法运算并输出2个单位比特长度的积Ci。
在半精度运算模式中,第一连接切换器470将作为各乘法器420-i的乘法运算结果的积Ci输入到与各乘法器420-i对应的加法器440-i。各加法器440-i例如通过被输入值0作为其它的输入数据并与积Ci进行加法运算等,来将积Ci无变更地保存到各中间寄存器450-i。第二连接切换器480将各中间寄存器450-i所保存的积Ci作为最终的乘法运算结果OUTi进行输出。
图3示出单精度、即2个单位比特长度的乘数A1及被乘数B1的乘法运算。乘数A1能够分为各自为1个单位比特长度的数位范围的高位侧的个别乘数A10及低位侧的个别乘数A11。另外,被乘数B1同样能够分为高位侧的个别乘数B10及低位侧的个别乘数B11。在此,个别乘数及个别被乘数是将乘数及被乘数按能够对各乘法器420输入的比特长度的数位范围分割出的数。
能够将A10及B10的乘法运算、A11及B10的乘法运算、A10及B11的乘法运算以及A11及B11的乘法运算的四个乘法运算结果如图示那样分别加到适当的数位位置来计算乘数A1及被乘数B1的乘法运算结果。
图4示出本实施方式所涉及的运算装置405的单精度运算模式下的运算。在单精度运算模式中,运算装置405对单精度、即2个单位比特长度的两组的乘数Ai及被乘数Bi(i=1、2)分别并行地进行乘法运算,从而通过两个循环输出两组积Ci。
在单精度运算模式中,多个乘法器420及加法器440被分配给各自包括两个乘法器420及两个加法器440的多个组。在本实施例中,乘法器420-1~420-2及加法器440-1~440-2被分配给第1组,乘法器420-3~420-4及加法器440-3~440-4被分配给第2组。运算装置405被输入与第i组对应的2个单位比特长度的乘数Ai及被乘数Bi,对它们进行乘法运算并输出与第i组对应的4个单位比特长度的积Ci。第1组及第2组的动作除了被分配的乘法器420、加法器440及中间寄存器450不同以外,其它是相同的,因此下面以第1组的动作为中心进行说明。
在单精度运算模式中,运算装置405在各组中通过两个循环来实现图3所示的乘法运算方法。在第一循环中,运算装置405进行个别乘数A10及A11分别与个别被乘数B10的乘法运算以及与之相伴的加法运算。
在第一循环中,乘法器420-1被输入A10作为输入IN10,被输入B10作为输入IN11,并输出它们的积即部分积A10×B10。乘法器420-2被输入A11作为输入IN20,被输入B10作为输入IN21,并输出它们的积即部分积A11×B10。
加法器440-1及加法器440-2被组合在一起来作为4个单位比特长度的加法器(表示为“加法器Q”。)发挥功能。4个单位比特长度的加法运算时的从加法器440-2向加法器440-1的进位例如可以通过进位预见电路等来生成并提供给加法器440-1。第一连接切换器470以使部分积A10×B10及部分积A11×B10中的最低位侧的部分积A11×B10与加法器Q的最低位侧的数位范围对应的方式将部分积A10×B10及部分积A11×B10移位后,输入到加法器Q。即,第一连接切换器470将部分积A11×B10向图中的表示为2及3的数位范围移位后输入到加法器Q。部分积A10×B10位于比部分积A11×B10高1个单位比特长度的高位侧,因此第一连接切换器470将部分积A10×B10向图中的表示为1及2的数位范围移位后输入到加法器Q。其结果为,加法器Q分别在最低位的1个单位比特长度的数位范围3被输入部分积A11×B10的低位1个单位比特长度的数位范围,在从最低位起高1个单位比特长度的高位侧的数位范围2被输入部分积A10×B10的低位1个单位比特长度的数位范围及部分积A11×B10的高位1个单位比特长度的数位范围,在从最低位起高2个单位比特长度的高位侧的数位范围1被输入部分积A10×B10的高位1个单位比特长度的数位范围,对它们进行加法运算,输出数位范围1~3为乘数A1与个别被乘数B10之积即部分积A1×B10的中间结果。加法器Q将该部分积A1×B10保存到中间寄存器450-1~450-2。
在第二循环中,第二连接切换器480将中间寄存器450-1~450-2所保存的中间结果即部分积A1×B10向高1个单位比特长度的高位侧移位后提供给加法器Q。乘法器420-1~420-2及第一连接切换器470与第一循环同样地计算部分积A10×B11及部分积A11×B11,将这些部分积以使最低位侧的部分积A11×B11与加法器Q的最低位侧的数位范围对应的方式输入到加法器Q。加法器Q被以数位范围被正确对应起来的状态输入由第二连接切换器480移位后的部分积A1×B10以及在第二循环中计算出的部分积A10×B11及A11×B11并进行加法运算,从而输出积A1×B1=C1。中间寄存器450-1~450-2保持积C1,第二连接切换器480将中间寄存器450-1~450-2所保持的积C1在第三循环以后的循环中作为OUT1~OUT2进行输出。
图5示出双精度、即4个单位比特长度的乘数A1及被乘数B1的乘法。乘数A1从高位侧起按顺序被分为各自为1个单位比特长度的个别乘数A10~A13。被乘数B1从高位侧起按顺序被分为各自为1个单位比特长度的个别被乘数B10~B13。
能够通过将个别乘数A10~A13与个别被乘数B10~B13的所有组合(16组)之间的乘法运算结果分别加到适当的数位位置来计算乘数A1及被乘数B1的乘法运算结果。在此,处于从最低位侧起高m个单位比特长度的高位侧的个别乘数与处于从最低位侧起高n个单位比特长度的高位侧的个别被乘数的乘法运算结果在从最低位侧起高m+n个单位比特长度的高位侧的数位位置处,与中间结果进行加法运算。
在双精度运算模式中,运算装置405通过四个循环来将双精度、即4个单位比特长度的乘数A1及B1进行乘法运算,从而输出积C1。在双精度模式中,多个乘法器420及加法器440被分配给一个组。
在第一循环中,乘法器420-1~420-4被输入A10~A13作为IN10~IN40,被输入B10作为IN11~IN41,输出A10~A13中的每一个与B10之积即部分积A10×B10、A11×B10、A12×B10及A13×B10。
加法器440-1~440-4被组合在一起来作为8个单位比特长度的加法器(表示为“加法器O”。)发挥功能。2个单位比特长度的加法运算中的从加法器440-i向加法器440-(i-1)的进位例如可以通过进位预见电路等生成并提供给加法器440-(i-1)。与单精度运算模式同样地,第一连接切换器470将部分积A10×B10~A13×B10以使部分积A10×B10~A13×B10中的最低位侧的部分积A13×B10与加法器O的最低位侧的数位范围对应的方式移位后输入到加法器O。其结果为,加法器O在最低位侧的数位范围6~7被输入部分积A13×B10,在从最低位起高1个单位比特长度的高位侧的数位范围5~6被输入部分积A12×B10,在从最低位起高2个单位比特长度的高位侧的数位范围4~5被输入部分积A11×B10,在从最低位起高1个单位比特长度的高位侧的数位范围3~4被输入部分积A10×B10,并对它们进行加法运算,输出数位范围3~7为乘数A1与个别被乘数B10之积即部分积A1×B10的中间结果。加法器O将该部分积A1×B10保存到中间寄存器450-1~450-4。
在第二循环中,第二连接切换器480将中间寄存器450-1~450-4所保存的中间结果向高1个单位比特长度的高位侧移位后提供给加法器O。乘法器420-1~420-4及第一连接切换器470与第一循环同样地计算部分积A10×B11~A13×B11,将这些部分积以使最低位侧的部分积A13×B11与加法器O的最低位侧的数位范围对应的方式输入到加法器O。加法器O被以数位范围被正确对应起来的状态输入由第二连接切换器480移位后的部分积A1×B10以及在第二循环中计算出的部分积A10×B11~A13×B11并进行加法运算,输出中间结果。加法器O将该中间结果保存到中间寄存器450-1~450-4。
在第三循环~第四循环中,运算装置405也与第二循环同样地,将使中间寄存器450-1~450-4所保存的中间结果向高1个单位比特长度的高位侧移位所得到的值与部分积A10×B12~A13×B12(第三循环的情况)或部分积A10×B13~A13×B13(第四循环的情况)进行加法运算并保存到中间寄存器450-1~450-4。由此,在第四循环中,中间寄存器450-1~450-4保存积C1。第二连接切换器480将中间寄存器450-1~450-4所保持的积C1在第五循环以后的循环中作为OUT1~OUT4进行输出。
如以上所示的那样,运算装置405在上述的单精度运算模式及双精度运算模式那样的对2个单位比特长度以上的乘数及被乘数进行乘法运算的至少一个运算精度模式中,将多个乘法器420、多个加法器440及多个中间寄存器450分割为一个或多个组,各组并行地利用多个循环来计算每组的乘数与被乘数之积。在各组中,,被输入乘数中的由各乘法器420负责的数位范围的个别乘数以及被乘数中的在每个循环内从高数位起按顺序选择1个单位比特长度的个别被乘数,在每个循环中将各个个别乘数及个别被乘数的部分积作为乘法运算结果进行输出。第一连接切换器470在每个循环中,以使乘数中的最低位侧的数位范围的个别乘数及个别被乘数的部分积与一个或两个以上的加法器440中的最低位的数位范围对应的方式使一个或两个以上的乘法器420输出的各个部分积移位后,输入到一个或两个以上的加法器440,并与中间结果进行加法运算。第二连接切换器480在每个循环中,将中间结果向高位侧移位1个单位比特长度后输入到一个或两个以上的加法器440-1~440-4。
在如上述的半精度运算模式那样的1个单位比特长度的运算精度模式中,多个乘法器420被分配给各自包括一个乘法器420的多个组。而且,运算装置405针对多个组中的各个组,利用一个循环来运算乘数与被乘数之积。由此,运算装置405通过由多个乘法器420分别进行各个乘法运算,由此能够有效利用多个乘法器420。
在上述的单精度运算模式那样的2个单位比特长度以上的至少一个运算精度模式中,多个乘法器420及多个加法器440被分配给两个以上的组。而且,运算装置405针对两个以上的组中的各个组,利用多个循环来运算乘数与被乘数之积。由此,运算装置405将多个乘法器420分割为多个组,使循环数增加来获得需要数量的个别乘数及个别被乘数的乘法运算结果,由此在更高精度的运算精度模式中也能够有效利用多个乘法器420。
在上述的双精度运算模式那样的2个单位比特长度以上的至少一个运算精度模式中,多个乘法器420及多个加法器440被分配给一个组。而且,运算装置405在一个组中利用多个循环来运算乘数与被乘数之积。由此,运算装置405将多个乘法器420汇总到一个组,使循环数增加来获得需要数量的个别乘数及个别被乘数的乘法运算结果,由此在更高精度的运算精度模式中也能够有效利用多个乘法器420。
在本实施方式中,模式选择部460在对n个单位比特长度(n为自然数)的乘数及被乘数进行乘法运算的运算精度模式中,将多个乘法器420和多个加法器440分割为各自包括n个乘法器420和n个加法器440的至少一个组。例如,在半精度运算模式(n=1)中,模式选择部460整体上将四个乘法器420(及四个加法器440)分割为各自包括一个乘法器420(及一个加法器440)的四个组。在单精度运算模式(n=2)中,模式选择部460整体上将四个乘法器420及四个加法器440分割为各自包括两个乘法器420及两个加法器440的两个组。在双精度运算模式(n=4)中,模式选择部460整体上将四个乘法器420及四个加法器440分割为(分配给)包括四个乘法器420及四个加法器440的一个组。
而且,各组中的n个乘法器420在n个循环的期间内,以在一个循环内进行n组的乘法运算的方式进行每个组的n个个别乘数中的各个个别乘数与n个个别被乘数中的各个个别被乘数的乘法运算,所述n个个别乘数各自为乘数中包含的1个单位比特长度的数位范围,所述n个个别被乘数各自为被乘数中包含的1个单位比特长度的数位范围。各组中的n个加法器440被组合在一起,在n个循环的期间内,将每个循环内来自相同组的n个乘法器420的各乘法运算结果加到乘数与被乘数之积的中间结果中的与各乘法运算结果相应的数位位置。
在此,在对n个单位比特长度的乘数及被乘数进行乘法运算的运算精度模式中,即使在组中分配了小于n的乘法器420,组内的加法器440也需要通过组合来进行2n个单位比特长度的加法运算,因此为了通过一个循环进行加法运算,而需要在组中设置n个加法器440。相反地,在对n个单位比特长度的乘数及被乘数进行乘法运算的运算模式中,在组中分配了超过n的乘法器420的情况下,为了通过一个循环进行加法运算而只要在组中设置n个加法器440即可,但是由于需要对更多的乘法运算结果进行加法运算,因此需要对加法器440设置更多的输入。与此相对,根据本实施方式的结构,除了能够有效利用多个乘法器420以外,还能够有效利用加法器440。此外,在不重视加法器440的有效利用的情况下,模式选择部460也可以进行其它的组分割及利用不同循环数的运算。
另外,在本实施方式中,构成为:第一连接切换器470将来自各乘法器420的乘法运算结果输入到一个或两个以上的加法器440的低位侧的数位范围,第二连接切换器480将中间结果向高位侧移位。取而代之地,也可以采用如下的结构:第一连接切换器470将来自各乘法器420的乘法运算结果输入到一个或两个以上的加法器440的高位侧的数位范围,第二连接切换器480将中间结果向低位侧移位。另外,运算装置405也可以采用不具备第二连接切换器480的结构,在该情况下,可以设为,第一连接切换器470按每个循环切换连接,使得能够将各乘法运算结果加到最终的积中的对应的数位范围。
此外,本实施方式所涉及的运算装置405具备半精度运算模式、单精度运算模式以及双精度运算模式这三个运算精度模式。取而代之地,运算装置405也可以具备任意的运算精度模式。另外,运算装置405具备与具有1个单位比特长度的2次幂倍的比特长度的数相应的各运算模式。运算装置405也可以具备与具有1个单位比特长度的2次幂倍以外的比特长度的数(例如3个单位比特长度等)相应的一个或多个运算模式。在像这样的运算模式中,运算装置405可以将一部分乘法器420及加法器440设为空闲状态。另外,运算装置405也可以采用具有不为2次幂倍的个数(例如6个)的乘法器420、加法器440以及中间寄存器450的结构,来取代具有2次幂倍的个数的乘法器420、加法器440以及中间寄存器450。
图6示出本实施方式的第一变形例所涉及的加法器540及中间寄存器550的结构。第一变形例主要是将图1至图5所示的运算装置405中的各加法器440变更为加法器540、将各中间寄存器450变更为中间寄存器550的例子,因此下面省略除了与运算装置405的不同点以外的说明。
在第一变形例中,通过包括进位保存加法器(CSA:Carry Save Adder、也表示为“进位保留加法器”。)的加法器540来进行图1的各加法器440的加法运算。加法器540包括第一加法元件542和第二加法元件544。
第一加法元件542是如下的CSA:对经由第一连接切换器470输入的来自一个或多个乘法器420的一个或多个乘法运算结果、以及经由第二连接切换器480输入的中间结果中的与该加法器540对应的数位范围等的各输入数据进行加法运算,输出包含各数位的和数据及从各数位的进位数据的加法运算结果。
第二加法元件544与各加法器540对应地设置。根据运算精度模式将多个加法器540按每一个或每两个以上的加法器540进行分割,与之相伴地,多个第二加法元件544按每一个或每两个以上的第二加法元件544进行分割并被分配给一个或多个组中的各个组。第二加法元件544在各组中对一个或两个以上的第一加法元件542输出的和数据及进位数据进行加法运算,并作为乘数与被乘数之积进行输出。
更具体地说,第二加法元件544对中间寄存器550所保持的和数据及进位数据进行加法运算并作为OUTx(x=1、2、3、4)进行输出。第二加法元件544是将从各数位的进位加到高数位并输出反映了进位的和的进位预见加法器及进位传播加法器等加法器。第二加法元件544与由模式选择部460进行的组分割相应地,根据需要接收来自组内的低位侧的第二加法元件544的进位并进行加法运算,以及根据需要向组内的高位侧的第二加法元件544传播加法运算结果的进位。
中间寄存器550保持对应的第一加法元件542输出的数位范围的和数据及进位数据。中间寄存器550将所保持的和数据及进位数据输出到第二加法元件544。在本变形例中,中间寄存器550将所保持的和数据及进位数据不经由第二加法元件544而经由第二连接切换器480提供给一个或两个以上的第一加法元件542。由此,本变形例所涉及的运算装置405在到最终计算出乘数与被乘数之积为止的各循环中,不需要计算反映了进位的和,因此能够降低计算中间结果的电路的电路延迟。
另外,运算装置405也可以使用对个别乘数及个别被乘数进行乘法运算并输出包含各数位的和数据及从各数位的进位数据的乘法运算结果的、利用了华莱士树(Wallecetree)的乘法器,来作为多个乘法器420中的各个乘法器。通过使用CSA及华莱士树乘法器来作为各乘法器420及各加法器540,由此运算装置405能够降低电路延迟,缩短一个循环所需要的处理时间。
下面,参照附图来说明其它的变形例。此外,下面所示的变形例具有与图1~图6所示的实施方式或其第一变形例相同或类似的结构及功能,因此有时省略除了不同点以外的说明。
[第二变形例]
图7表示第二变形例的运算装置1的结构。
该运算装置1以可变精度执行乘法运算。运算装置1具备Wallace树乘法器2a~2d(与乘法器420-1~420-4对应)、第一连接切换器20(与第一连接切换器470对应)、加法器4a~4d(与加法器440-1~440-4对应)、寄存器5a~5d(与中间寄存器450-1~450-4对应)、第二连接切换器30(与第二连接切换器480对应)、输出端子OP1~OP4以及开关9b、9c、9d。
运算装置1接受8个输入(IN1~IN8),输出4个输出(OUT1~OUT4)。输入IN1~IN8为1个单位比特长度(13比特)的数据,输出OUT1~OUT4为2个单位比特长度(26比特)。
Wallace树乘法器2a通过接受输入数据IN1及输入数据IN2,基于Wallace树来多次执行进位保留加法运算,由此输出输入数据IN1与输入数据IN2的乘法运算结果的前一级的26比特的和信号D及进位信号E。Wallace树乘法器2b~2d除了输入数据及输出的信号如本图那样与Wallace树乘法器2a不同以外,其它与Wallace树乘法器2a是同样的。
加法器4a~4d各自执行26比特长度的多个数据的加法运算。
寄存器5a~5d各自保持对应的加法器4a~4d的加法运算结果。
第一连接切换器20根据运算精度模式,将分别构成从Wallace树乘法器2a~2d输出的和信号D、F、H、J以及进位信号E、G、I、K的高位13比特的数据、低位13比特的数据的输出目的地切换为加法器4a~4d的多个输入的多个比特位置(低位一半的比特位置或高位一半的比特位置)中的某一个比特位置。第一连接切换器20具有开关和移位器,通过对它们进行控制来执行上述的切换。
第二连接切换器30根据运算精度模式,将分别构成寄存器5a~5d内的多个加法运算结果的高位13比特的数据、低位13比特的数据的输出目的地切换为加法器4a~4d的多个输入的多个比特位置(低位一半的比特位置或高位一半的比特位置)中的某一个比特位置,或者将寄存器5a~5d内的加法器4a~4d的加法运算结果的输出目的地切换为输出端子OP1~OP4。第二连接切换器30具有开关和移位器,通过对它们进行控制来执行上述的切换。
开关9b对是否从加法器4b向加法器4a发送进位比特进行切换。开关9c对是否从加法器4c向加法器4b发送进位比特进行切换。开关9d对是否从加法器4d向加法器4c发送进位比特进行切换。
运算装置1以半精度运算模式、单精度运算模式以及双精度运算模式的多个运算精度模式进行动作。下面,说明各运算模式下的动作。
(半精度运算模式)
在半精度运算模式中,乘数及被乘数为13比特,积为26比特。在半精度运算模式中,通过一个循环执行乘法运算。在半精度运算模式中,开关9b~9d为断开。
图8表示半精度运算模式时的第i乘数Ai、第i被乘数Bi、第i积Ci(i=1、2、3、4)。图9对第二变形例的运算装置1的半精度运算模式的动作进行说明。
运算装置1将第i乘数Ai与第i被乘数Bi进行乘法运算,输出第i积Ci。Wallace树乘法器2a在接收到第1乘数A1的全部13比特和第1被乘数B1的全部13比特时,输出和信号D及进位信号E。Wallace树乘法器2b~2d除了输入及输出如本图那样与Wallace树乘法器2a不同以外,其它与Wallace树乘法器2a同样地进行动作。
通过第一连接切换器20将Wallace树乘法器2a~2d各自的输出(26比特的和信号及26比特的进位信号)发送到加法器4a~4d中的对应的加法器。
图10表示第二变形例的半精度运算模式下的加法器4a的输入及输出。加法器4a分别接收和信号D的全部26比特{d25-d0}作为第1输入的全部26比特,接收进位信号E的全部26比特{e25-e0}作为第2输入的全部26比特。加法器4a的加法运算结果L中的低位26比特{l25-l0}被发送到寄存器5a。加法器4b~4d除了输入及输出如本图那样与加法器4a不同以外,其它与加法器4a同样地进行动作。
第二连接切换器30将寄存器5a~5d内的数据的输出目的地切换为输出端子OP1~OP4。由此,从输出端子OP1~OP4输出第1积C1~第4积C4。
(单精度运算模式)
在单精度运算模式中,乘数及被乘数为26比特,积为52比特。在单精度运算模式中,通过两个循环执行乘法运算。在单精度运算模式中,开关9b、9d为接通,开关9c为断开。
图11表示单精度运算模式时的第i乘数Ai、第i被乘数Bi以及第i积Ci(i=1、2)。图12主要关于i=1说明第二变形例的运算装置1的单精度运算模式的动作。此外,关于i=2的动作除了输入及输出不同以外,其余与关于i=1的动作相同,因此省略说明。
运算装置1将第i乘数Ai与第i被乘数Bi进行乘法运算,输出第i积Ci(=1、2)。第i乘数Ai的高位13比特为Ai0,低位13比特为Ai1。第i被乘数Bi的高位13比特为Bi0,低位13比特为Bi1。第i积Ci的高位26比特为Ci0,低位26比特为Ci1。
首先,主要关于i=1说明单精度运算模式下的第一循环的计算过程。
Wallace树乘法器2a在接收到第1乘数A1的高位13比特A10及第1被乘数B1的高位13比特B10时,输出和信号D(0)及进位信号E(0)。Wallace树乘法器2b在接收到第1乘数A1的低位13比特A11及第1被乘数B1的高位13比特B10时,输出和信号F(0)及进位信号G(0)。
通过第一连接切换器20将Wallace树乘法器2a~2d的输出发送到加法器4a~4d。通过第二连接切换器30将寄存器5a~5d内的数据发送到加法器4a~4d。
即,和信号D(0)的高位13比特被发送到移位器6a。移位器6a使和信号D(0)的高位13比特向低位移位13比特后提供给加法器4a的第1输入的低位13比特位置。和信号D(0)的低位13比特被发送到加法器4b的第3输入的高位13比特位置。进位信号E(0)的高位13比特被发送到移位器6b。移位器6b使进位信号E(0)的高位13比特向低位移位13比特后提供给加法器4a的第2输入的低位13比特位置。进位信号E(0)的低位13比特被发送到加法器4b的第2输入的高位13比特位置。和信号F(0)的全部26比特被提供给加法器4b的第3输入的全部26比特位置。进位信号G(0)的全部26比特被提供给加法器4b的第4输入的全部26比特位置。
图13是表示第二变形例的单精度运算模式下的第一循环的加法器4a~4b的输入及输出的图。
加法器4a在第1输入的低位13比特位置接收和信号D(0)的高位13比特{d25(0)-d13(0)}。加法器4a在第2输入的低位13比特位置接收进位信号E(0)的高位13比特{e25(0)-e13(0)}。加法器4a在第3输入的全部26比特位置从移位器7a接收26比特(全部比特都为0)。加法器4a在第4输入的低位2比特位置接收加法器4b的加法运算结果(28比特)中的高位2比特。
加法器4a的加法运算结果L(0)中的低位26比特{l25(0)-l0(0)}被发送到寄存器5a。
加法器4b在第1输入的高位13比特位置接收和信号D(0)的低位13比特{d12(0)-d0(0)}。加法器4b在第2输入的高位13比特位置接收进位信号E(0)的低位13比特{e12(0)-e0(0)}。
加法器4b在第3输入的全部26比特位置接收和信号F(0)的全部26比特{f25(0)-f0(0)}。加法器4b在第4输入的全部26比特位置接收进位信号G(0)的全部26比特{g25(0)-g0(0)}。加法器4b在第5输入的全部26比特位置从移位器7b接收26比特(全部比特都为0)。
加法器4b的加法运算结果M(0)中的低位26比特{m25(0)-m0(0)}作为第1输出被发送到寄存器5b。加法器4b的加法运算结果M(0)中的高位2比特作为第2输出被发送到加法器4a的第4输入的低位2比特位置。
接着,说明单精度运算模式下的第二循环的计算过程。
Wallace树乘法器2a在接收到第1乘数A1的高位13比特A10及第1被乘数B1的低位13比特B11时,输出和信号D(1)及进位信号E(1)。Wallace树乘法器2b在接收到第1乘数A1的低位13比特A11及第1被乘数B1的低位13比特B11时,输出和信号F(1)及进位信号G(1)。
通过第一连接切换器20将Wallace树乘法器2a~2d的输出发送到加法器4a~4d。通过第二连接切换器30将寄存器5a~5d内的数据发送到加法器4a~4d。第一连接切换器20将信号D(1)~G(1)与第一循环的信号D(0)~G(0)同样地发送到加法器4a~4b。
图14表示第二变形例的单精度运算模式下的第二循环的加法器4a~4b的输入及输出。加法器4a的第1输入~第2输入、第4输入及输出以及加法器4b的第1输入~第4输入及输出是如本图所示那样与在第一循环中对各输入提供的信号及所输出的信号对应的第二循环的信号,因此省略除了不同点以外的说明。
移位器7a将寄存器5a所保持的26比特{l25(0)-l0(0)}向高位移位13比特。移位器7b将寄存器5b所保持的26比特{m25(0)-m0(0)}向高位移位13比特,将从移位器7b溢出的13比特{m25(0)-m13(0)}发送到移位器7a的低位13比特位置。加法器4a在第3输入的全部26比特位置从移位器7a接收26比特{高位13比特:l12(0)-l0(0)、低位13比特:m25(0)-m13(0)}。
加法器4b在第5输入的全部26比特位置从移位器7b接收26比特{高位13比特:m12(0)-m0(0)、低位13比特:全部比特都为0}。
第二连接切换器30在第二循环结束后,将寄存器5a~5d内的数据的输出目的地切换到输出端子OP1~OP4。由此,从输出端子OP1~OP4输出第1积的高位26比特C10、第1积的低位26比特C11、第2积的高位26比特C20、第2积的低位26比特C21。
(双精度运算模式)
在双精度运算模式中,乘数及被乘数为52比特,积为104比特。在双精度运算模式中,通过四个循环执行乘法运算。在双精度运算模式中,开关9b、9c、9d为接通。
图15表示双精度运算模式时的乘数A1、被乘数B1以及积C1。图16说明第二变形例的运算装置1的双精度运算模式的动作。
如图15和图16所示,运算装置1将乘数A1与被乘数B1进行乘法运算并输出积C1。乘数A1从比特位置为高位起依次被分割为第1比特组(第1数位范围)A10~第4比特组(第4数位范围)A13。被乘数B1从比特位置为高位起依次被分割为第1比特组(第1数位范围)B10~第4比特组(第4数位范围)B13。积C1从比特位置为高位起依次被分割为第1比特组C10~第4比特组C13。
首先,对双精度运算模式下的第一循环的计算过程进行说明。
Wallace树乘法器2a接收乘数A1的第1比特组A10及被乘数B1的第1比特组B10,输出和信号D(0)及进位信号E(0)。Wallace树乘法器2b接收乘数A1的第2比特组A11及被乘数B1的第1比特组B10,输出和信号F(0)及进位信号G(0)。Wallace树乘法器2c接收乘数A1的第3比特组A12及被乘数B1的第1比特组B10,输出和信号H(0)及进位信号I(0)。Wallace树乘法器2d接收乘数A1的第4比特组A13及被乘数B1的第1比特组B10,输出和信号J(0)及进位信号K(0)。
通过第一连接切换器20将Wallace树乘法器2a~2d的输出发送到加法器4a~4d。通过第二连接切换器30将寄存器5a~5d内的数据发送到加法器4a~4d。
即,和信号D(0)的高位13比特被发送到加法器4b的第1输入的低位13比特位置。和信号D(0)的低位13比特被发送到加法器4c的第1输入的高位13比特位置。进位信号E(0)的高位13比特被发送到加法器4b的第2输入的低位13比特位置。进位信号E(0)的低位13比特被发送到加法器4c的第2输入的高位13比特位置。和信号F(0)的全部26比特被提供给加法器4c的第3输入的全部26比特位置。进位信号G(0)的全部26比特被提供给加法器4c的第4输入的全部26比特位置。和信号H(0)的高位13比特被发送到加法器4c的第5输入的低位13比特位置。和信号H(0)的低位13比特被发送到加法器4d的第1输入的高位13比特位置。进位信号I(0)的高位13比特被发送到加法器4c的第6输入的低位13比特位置。进位信号I(0)的低位13比特被发送到加法器4d的第2输入的高位13比特位置。和信号J(0)的全部26比特被提供给加法器4d的第3输入的全部26比特位置。进位信号K(0)的全部26比特被提供给加法器4d的第4输入的全部26比特位置。
图17是表示第二变形例的双精度运算模式下的第一循环的加法器4a~4d的输入及输出的图。加法器4a在第1输入的全部26比特位置从移位器7a接收26比特(全部比特都为0)。加法器4a在第2输入的低位2比特位置接收加法器4b的加法运算结果M(0)(28比特)中的高位2比特。
加法器4a的加法运算结果L(0)中的低位26比特{l25(0)-l0(0)}被发送到寄存器5a。
加法器4b在第1输入的低位13比特位置接收和信号D(0)的高位13比特{d25(0)-d13(0)}。加法器4b在第2输入的低位13比特位置接收进位信号E(0)的高位13比特{e25(0)-e13(0)}。加法器4b在第3输入的全部26比特位置从移位器7b接收26比特(全部比特都为0)。加法器4b在第4输入的低位2比特位置接收加法器4c的加法运算结果N(0)(28比特)中的高位2比特。
加法器4b的加法运算结果M(0)中的低位26比特{m25(0)-m0(0)}作为第1输出被发送到寄存器5b。加法器2b的加法运算结果M(0)中的高位2比特作为第2输出被发送到加法器4a的第2输入的低位2比特位置。
加法器4c在第1输入的高位13比特位置接收和信号D(0)的低位13比特{d12(0)-d0(0)}。加法器4c在第2输入的高位13比特位置接收进位信号E(0)的低位13比特{e12(0)-e0(0)}。加法器4c在第3输入的全部26比特位置接收和信号F(0)的全部26比特{f25(0)-f0(0)}。加法器4c在第4输入的全部26比特位置接收进位信号G(0)的全部26比特{g25(0)-g0(0)}。加法器4c在第5输入的低位13比特位置接收和信号H(0)的高位13比特{h25(0)-h13(0)}。加法器4c在第6输入的低位13比特位置接收进位信号I(0)的高位13比特{i25(0)-i13(0)}。加法器4c在第7输入的全部26比特位置从移位器7c接收26比特(全部比特都为0)。加法器4c在第8输入的低位2比特位置接收加法器4d的加法运算结果O(0)(28比特)中的高位2比特。
加法器4c的加法运算结果N(0)中的低位26比特{n25(0)-n0(0)}作为第1输出被发送到寄存器5c。加法器4c的加法运算结果N(0)中的高位2比特作为第2输出被发送到加法器4b的第4输入的低位2比特位置。
加法器4d在第1输入的高位13比特位置接收和信号H(0)的低位13比特{h12(0)-h0(0)}。加法器4d在第2输入的高位13比特位置接收进位信号I(0)的低位13比特{i12(0)-i0(0)}。加法器4d在第3输入的全部26比特位置接收和信号J(0)的全部26比特{j25(0)-j0(0)}。加法器4d在第4输入的全部26比特位置接收进位信号K(0)的全部26比特{k25(0)-k0(0)}。加法器4d在第5输入的全部26比特位置从移位器7d接收26比特(全部比特都为0)。
加法器4d的加法运算结果O(0)中的低位26比特{o25(0)-o0(0)}作为第1输出被发送到寄存器5d。加法器4d的加法运算结果O(0)中的高位2比特作为第2输出被发送到加法器4c的第8输入的低位2比特位置。
接着,说明双精度运算模式下的第二循环的计算过程。
Wallace树乘法器2a接收乘数A1的第1比特组A10及被乘数B1的第2比特组B11,输出和信号D(1)及进位信号E(1)。Wallace树乘法器2b接收乘数A1的第2比特组A11及被乘数B1的第2比特组B11,输出和信号F(1)及进位信号G(1)。Wallace树乘法器2c接收乘数A1的第3比特组A12及被乘数B1的第2比特组B11,输出和信号H(1)及进位信号I(1)。Wallace树乘法器2d接收乘数A1的第4比特组A13及被乘数B1的第2比特组B11,输出和信号J(1)及进位信号K(1)。
通过第一连接切换器20将Wallace树乘法器2a~2d的输出发送到加法器4a~4d。通过第二连接切换器30将寄存器5a~5d内的数据发送到加法器4a~4d。第一连接切换器20将信号D(1)~K(1)与第一循环的信号D(0)~K(0)同样地发送到加法器4a~4d。
图18表示第二变形例的双精度运算模式下的第二循环的加法器4a~4d的输入及输出。加法器4a的输出、加法器4b的第1输入~第2输入、第4输入及输出、加法器4c的第1输入~第6输入、第8输入及输出以及加法器4d的第1输入~第4输入及输出是如本图所示那样与在第二循环中对各输入提供的信号及所输出的信号对应的第二循环的信号,因此省略除了不同点以外的说明。
移位器7a将寄存器5a所保持的26比特{l25(0)-l0(0)}向高位移位13比特。移位器7b将寄存器5b所保持的26比特{m25(0)-m0(0)}向高位移位13比特,将从移位器7b溢出的13比特{m25(0)-m13(0)}发送到移位器7a的低位13比特位置。
加法器4a在第1输入的全部26比特位置从移位器7a接收26比特{高位13比特:l12(0)-l0(0)、低位13比特:m25(0)-m13(0)}。
移位器7c将寄存器5c所保持的26比特{n25(0)-n0(0)}向高位移位13比特,将从移位器7c溢出的13比特{n25(0)-n13(0)}发送到移位器7b的低位13比特位置。
加法器4b在第3输入的全部26比特位置从移位器7b接收26比特{高位13比特:m12(0)-m0(0)、低位13比特:n25(0)-n13(0)}。加法器4b在第4输入的低位2比特位置接收加法器4c的加法运算结果N(1)(28比特)中的高位2比特。
移位器7d将寄存器5d所保持的26比特{o25(0)-o0(0)}向高位移位13比特,将从移位器7d溢出的13比特{o25(0)-o13(0)}发送到移位器7c的低位13比特位置。
加法器4c在第7输入的全部26比特位置从移位器7c接收26比特{高位13比特:n12(0)-n0(0)、低位13比特:o25(0)-o13(0)}。
加法器4d在第5输入的全部26比特位置从移位器7d接收26比特{高位13比特:o12(0)-o0(0)、低位13比特:全部比特都为0}。
加法器4d的加法运算结果O(1)中的低位26比特{o25(1)-o0(1)}作为第1输出被发送到寄存器5D。加法器4d的加法运算结果O(1)中的高位2比特作为第2输出被发送到加法器4c的第8输入的低位2比特位置。
双精度运算模式下的第三循环中的Wallace树乘法器2a~2d的输入如下面那样进行动作。
Wallace树乘法器2a接收乘数A1的第1比特组A10及被乘数B1的第3比特组B12,输出和信号D(2)及进位信号E(2)。Wallace树乘法器2b接收乘数A1的第2比特组A11及被乘数B1的第3比特组B12,输出和信号F(2)及进位信号G(2)。Wallace树乘法器2c接收乘数A1的第3比特组A12及被乘数B1的第3比特组B12,输出和信号H(2)及进位信号I(2)。Wallace树乘法器2d接收乘数A1的第4比特组A13及被乘数B1的第3比特组B12,输出和信号J(2)及进位信号K(2)。
第三循环以后的计算过程与第二循环的计算过程相同,因此不重复说明。
双精度运算模式下的第四循环中的Wallace树乘法器2a~2d的输入如下面那样进行动作。
Wallace树乘法器2a接收乘数A1的第1比特组A10及被乘数B1的第4比特组B13,输出和信号D(3)及进位信号E(3)。Wallace树乘法器2b接收乘数A1的第2比特组A11及被乘数B1的第4比特组B13,输出和信号F(3)及进位信号G(3)。Wallace树乘法器2c接收乘数A1的第3比特组A12及被乘数B1的第4比特组B13,输出和信号H(3)及进位信号I(3)。Wallace树乘法器2d接收乘数A1的第4比特组A13及被乘数B1的第4比特组B13,输出和信号J(3)及进位信号K(3)。
第四循环以后的计算过程与第二循环的计算过程相同,因此不重复说明。
第二连接切换器30在第四循环结束后,将寄存器5a~5d内的数据的输出目的地切换为输出端子OP1~OP4。由此,从输出端子OP1~OP4输出积C1的第1比特组C10~第4比特组C13。
图19表示Wallace树乘法器2a的结构。图20表示由Wallace树乘法器2a生成的数据。
Wallace树乘法器2a具备输入生成器79以及CSA(Carry Save Adder:进位保存加法器)51~CSA 61。输入生成器79根据13比特的输入IN1及13比特的输入IN2生成各自为13比特的X0~X12。
X0为IN1与IN2的第0比特(LSB)之积。在IN2的第0比特为0的情况下,X0的全部比特都为0。在IN2的第0比特为1的情况下,X0的全部比特与IN1的全部比特相同。同样地,Xi(i=1~13)为IN1与IN2的第i比特之积。
CSA 51将X1、X2以及X3进行进位信号保留加法运算,输出和信号1S及进位信号1R。CSA 52将X3、X4以及X5进行进位信号保留加法运算,输出和信号2S及进位信号2R。CSA 53将X6、X7以及X8进行进位信号保留加法运算,输出和信号3S及进位信号3R。CSA 54将X9、X10以及X11进行进位信号保留加法运算,输出和信号4S及进位信号4R。CSA 55将和信号1S、进位信号1R以及和信号2S进行进位信号保留加法运算,输出和信号5S及进位信号5R。CSA 56将进位信号2R、和信号3S以及进位信号3R进行进位信号保留加法运算,输出和信号6S及进位信号6R。CSA 57将和信号4S、进位信号4R及X12进行进位信号保留加法运算,输出和信号7S及进位信号7R。CSA 58将和信号5S、进位信号5R以及和信号6S进行进位信号保留加法运算,输出和信号8S及进位信号8R。CSA 59将进位信号6R、和信号7S以及进位信号7R进行进位信号保留加法运算,输出和信号9S及进位信号9R。CSA 60将和信号8S、进位信号8R以及和信号9S进行进位信号保留加法运算,输出和信号10S及进位信号10R。CSA 61将和信号10S、进位信号10R以及进位信号9R进行进位信号保留加法运算,输出和信号11S及进位信号11R。和信号11S为从Wallace树乘法器2a输出的和信号D,进位信号11R为从Wallace树乘法器2a输出的进位信号E。
加法器4a~4d也可以具备多个CSA,基于Wallace树执行加法运算。
如以上那样,根据本变形例,能够以小的电路规模执行半精度运算、单精度运算、或双精度运算。
[第三变形例]
图21表示第三变形例的运算装置101的结构。
该运算装置101具备Wallace树乘法器2a~2d、第一连接切换器120、加法器14a~14d、寄存器15a~15d、寄存器25a~25d、第二连接切换器130、加法器16a~16d、输出端子OP1~OP4以及开关161b~161d、151b~151d。运算装置1与第二变形例同样地接受8个输入(IN1~IN8),输出4个运算结果(OUT1~OUT4)。
第三变形例的运算装置101将第二变形例的运算装置1中的加法器4a~4d设为进位保存加法器(CSA),是针对第二变形例的运算装置1施加与从图1的实施方式向图6的第一变形例的变更同样的变更而得到的。即,运算装置1中的寄存器5a~5d以能够各自保持和信号及进位信号的方式被分为寄存器15a~15d及寄存器25a~25d。另外,为了对寄存器15a~15d及寄存器25a~25d所保持的和信号及进位信号进行加法运算来计算最终的积,而设置与第一变形例的第二加法元件544对应的加法器16a~16d。另外,与将加法器4a~4d设为CSA相伴地,对是否将来自加法器4b~4d的进位比特向高位侧发送进行切换的开关9b~9d被分为和信号用的开关161b~161d及进位信号用的开关151b~151d。下面,以相对于第二变形例的运算装置1的变更点为中心说明运算装置101的结构及动作。
Wallace树乘法器2a~2d与第二变形例相同。
加法器14a~14d基于Wallace树,输出2个单位比特长度的多个数据的加法运算结果的前一级的和信号及进位信号。
寄存器15a~15d各自保持从对应的加法器14a~14d输出的和信号。
寄存器25a~25d各自保持从对应的加法器14a~14d输出的进位信号。
加法器16a~16d各自对被输入的和信号及进位信号进行加法运算。
输出端子OP1~OP4各自输出加法器16a~16d的加法运算结果。
第一连接切换器120与第二变形例是同样的。
第二连接切换器130与第二变形例同样地,代替切换寄存器5a~5d的各加法运算结果的输出目的地,而切换寄存器15a及寄存器25a的和信号及进位信号的组、寄存器15b及寄存器25b的和信号及进位信号的组、寄存器15c及寄存器25c的和信号及进位信号的组、寄存器15d及寄存器25d的和信号及进位信号的组的输出目的地。
开关161b对是否从加法器14b向加法器14a发送和信号的进位比特进行切换。开关161c对是否从加法器14c向加法器14b发送和信号的进位比特进行切换。开关161d对是否从加法器14d向加法器14c发送和信号的进位比特进行切换。开关151b对是否从加法器14b向加法器14a发送进位信号的进位比特进行切换。开关151c对是否从加法器14c向加法器14b发送进位信号的进位比特进行切换。开关151d对是否从加法器14d向加法器14c发送进位信号的进位比特进行切换。
运算装置101与第二变形例同样地以半精度运算模式、单精度运算模式以及双精度运算模式进行动作。下面,关于各运算模式,以与第二变形例的运算装置1的动作的不同点为中心对动作进行说明。
(半精度运算模式)
图22对第三变形例的运算装置101的半精度运算模式的动作进行说明。在半精度运算模式中,通过第一连接切换器120将Wallace树乘法器2a~2d的输出发送到加法器16a~16d。
即,例如,和信号D的全部26比特被提供给加法器16a的第1输入的全部26比特位置,进位信号E的全部26比特被提供给加法器16a的第2输入的全部26比特位置。
图23表示第三变形例的半精度运算模式下的加法器16a的输入。
加法器16a在第1输入的全部26比特位置接收和信号D的全部26比特{d25-d0}。加法器16a在第2输入的全部26比特位置接收进位信号E的全部26比特{e25-e0}。加法器16a将和信号D的全部26比特与进位信号E的全部26比特进行加法运算,输出低位26比特作为第1积C1。加法器16b~16d除了输入及输出如图22那样与加法器16a不同以外,其余与加法器16a同样地进行动作。
(单精度运算模式)
图24主要以计算乘数A1及被乘数B1的积C1的动作中的与第二变形例的不同点为中心来说明第三变形例的运算装置101的单精度运算模式的动作。图16的移位器7a~7d为了使和信号及进位信号移位而被分为移位器17a~17d及移位器27a~27d。
图25表示第三变形例的单精度运算模式下的第一循环的加法器14a~14b的输入及输出。
加法器14a的输入及输出相对于第二变形例中的加法器4a的输入及输出,将第3输入分为和信号的第3输入及进位信号的第4输入,将第4输入分为和信号的第5输入及进位信号的第6输入,将输出分为和信号的第1输出及进位信号的第2输出。加法器14a在第3输入的全部26比特位置从移位器17a接收26比特(全部比特都为0)。加法器14a在第4输入的全部26比特位置从移位器27a接收26比特(全部比特都为0)。加法器14a在第5输入的低位2比特位置接收作为加法器14b的加法运算结果的和信号SM(28比特)的高位2比特。加法器14a在第6输入的低位2比特位置接收作为加法器14b的加法运算结果的进位信号RM(29比特)的高位3比特。
作为加法器14a的加法运算结果的和信号SL(0)中的低位26比特{Sl25(0)-Sl0(0)}作为第1输出被发送到寄存器15a。作为加法器14a的加法运算结果的进位信号RL(0)中的低位26比特{Rl25(0)-Rl0(0)}作为第2输出被发送到寄存器25a。
加法器14b的输入及输出相对于第二变形例中的加法器4b的输入及输出,将第5输入分为和信号的第5输入及进位信号的第6输入,将第1输出分为和信号的第1输出及进位信号的第2输出,将第2输出分为和信号的第3输出及进位信号的第4输出。加法器14b在第5输入的全部26比特位置从移位器17b接收26比特(全部比特都为0)。加法器14b在第6输入的全部26比特位置从移位器27b接收26比特(全部比特都为0)。
作为加法器14b的加法运算结果的和信号SM(0)中的低位26比特{Sm25(0)-Sm0(0)}作为第1输出被发送到寄存器15b。作为加法器14b的加法运算结果的和信号SM(0)中的高位2比特作为第3输出被发送到加法器14a的第5输入的低位2比特位置。作为加法器14b的加法运算结果的进位信号RM(0)中的低位26比特{Rm25(0)-Rm0(0)}作为第2输出被发送到寄存器25b。作为加法器14b的加法运算结果的进位信号RM(0)中的高位3比特作为第4输出被发送到加法器14a的第6输入的低位3比特位置。
图26表示第三变形例的单精度运算模式下的第二循环的加法器14a~14b的输入及输出。针对加法器14a~14b的信号的输入源与第一循环是同样的。
移位器17a将寄存器15a所保持的26比特{Sl25(0)-Sl0(0)}向高位移位13比特。移位器17b将寄存器15b所保持的26比特{Sm25(0)-Sm0(0)}向高位移位13比特,将从移位器17b溢出的13比特{Sm25(0)-Sm13(0)}发送到移位器17a的低位13比特位置。移位器27a将寄存器25a所保持的26比特{Rl25(0)-Rl0(0)}向高位移位13比特。移位器27b将寄存器25b所保持的26比特{Rm25(0)-Rm0(0)}向高位移位13比特,将从移位器27b溢出的13比特{Rm25(0)-Rm13(0)}发送到移位器27a的低位13比特位置。
加法器14a在第3输入的全部26比特位置从移位器17a接收26比特{高位13比特:Sl12(0)-Sl0(0)、低位13比特:Sm25(0)-Sm13(0)}。加法器14a在第4输入的全部26比特位置从移位器27a接收26比特{高位13比特:Rl12(0)-Rl0(0)、低位13比特:Rm25(0)-Rm13(0)}。
加法器14a在第5输入的低位2比特位置接收作为加法器14b的加法运算结果的和信号SM(1)(28比特)中的高位2比特。加法器14a在第6输入的低位2比特位置接收作为加法器14b的加法运算结果的进位信号RM(1)(29比特)中的高位3比特。
作为加法器14a的加法运算结果的和信号SL(1)中的低位26比特{Sl25(1)-Sl0(1)}被发送到寄存器15a。作为加法器14a的加法运算结果的进位信号RL(1)中的低位26比特{Rl25(1)-Rl0(1)}被发送到寄存器25a。
加法器14b在第5输入的全部26比特位置从移位器17b接收26比特{高位13比特:Sm12(0)-Sm0(0)、低位13比特:全部比特都为0}。加法器14b在第6输入的全部26比特位置从移位器27b接收26比特{高位13比特:Rm12(0)-Rm0(0)、低位13比特:全部比特都为0}。
作为加法器14b的加法运算结果的和信号SM(1)中的低位26比特{Sm25(1)-Sm0(1)}作为第1输出被发送到寄存器15b。作为加法器14b的加法运算结果的和信号SM(1)中的高位2比特作为第3输出被发送到加法器14a的第5输入的低位2比特位置。作为加法器14b的加法运算结果的进位信号RM(1)中的低位26比特{Rm25(1)-Rm0(1)}作为第2输出被发送到寄存器25b。作为加法器14b的加法运算结果的进位信号RM(1)中的高位3比特作为第4输出被发送到加法器14a的第6输入的低位3比特位置。
第二连接切换器130在第二循环结束后,将寄存器15a~15d、25a~25d内的数据输出到加法器16a~16d中的任一个。
寄存器15a所保持的和信号{Sl25(1)-Sl0(1)}及寄存器25a所保持的进位信号{Rl25(1)-Rl0(1)}被发送到加法器16a。加法器16a执行加法运算后将第1积C1的高位26比特C10输出到输出端子OP1。加法器16b也同样地将第1积C1的低位26比特C11输出到输出端子OP2。在此,可以为,加法器16b将伴随该加法运算的进位提供给加法器16a,加法器16a将该进位包含在内地进行上述的加法运算。
(双精度运算模式)
图27以与第二变形例的不同点为中心来说明第三变形例的运算装置101的双精度运算模式的动作。
图28A及图28B表示第三变形例的双精度运算模式下的第一循环的加法器14a~14d的输入及输出。
与将第二变形例的寄存器5a~5d分为和信号用的寄存器15a~15d及进位信号用的寄存器25a~25d相伴地,第二变形例中的从移位器7a~7d向加法器4a~4d的输入被分为从移位器17a~17d向加法器14a~14d的和信号的输入及从移位器27a~27d向加法器14a~14d的进位信号的输入。另外,与将加法器14a~14d设为CSA相伴地,从低数位的进位被分为来自和信号的进位及来自进位信号的进位。另外,加法器4a~4d的输出被分为和信号及进位信号。除了这些不同以外,图28A~图28B所示的加法器14a~14d的输入输出与图17所示的加法器4a~4d的输入输出是同样的。
加法器14a在第1输入的全部26比特位置从移位器17a接收26比特(全部比特都为0)。加法器14a在第2输入的全部26比特位置从移位器27a接收26比特(全部比特都为0)。加法器14a在第3输入的低位2比特位置接收作为加法器14b的加法运算结果的和信号SM(0)(28比特)中的高位2比特。加法器14a在第4输入的低位3比特位置接收作为加法器14b的加法运算结果的进位信号RM(0)(29比特)中的高位3比特。
作为加法器14a的加法运算结果的和信号SL(0)中的低位26比特{Sl25(0)-Sl0(0)}被发送到寄存器15a。加法器14a的加法运算结果即进位信号RL(0)中的低位26比特{Rl25(0)-Rl0(0)}被发送到寄存器25a。
加法器14b在第3输入的全部26比特位置从移位器17b接收26比特(全部比特都为0)。加法器14b在第4输入的全部26比特位置从移位器27b接收26比特(全部比特都为0)。加法器14b在第5输入的低位3比特位置接收作为加法器14c的加法运算结果的和信号SN(0)(29比特)中的高位3比特。加法器14b在第6输入的低位4比特位置接收作为加法器14c的加法运算结果的进位信号RN(0)(30比特)中的高位4比特。
作为加法器14b的加法运算结果的和信号SM(0)中的低位26比特{Sm25(0)-Sm0(0)}作为第1输出被发送到寄存器15b。作为加法器14b的加法运算结果的和信号SM(0)中的高位2比特作为第3输出被发送到加法器14a的第3输入的低位2比特位置。作为加法器14b的加法运算结果的进位信号RM(0)中的低位26比特{Rm25(0)-Rm0(0)}作为第2输出被发送到寄存器15b。作为加法器14b的加法运算结果的进位信号RM(0)中的高位3比特作为第4输出被发送到加法器14a的第4输入的低位3比特位置。
加法器14c在第7输入的全部26比特位置从移位器17c接收26比特(全部比特都为0)。加法器14c在第8输入的全部26比特位置从移位器27c接收26比特(全部比特都为0)。加法器14c在第9输入的低位2比特位置接收作为加法器14d的加法运算结果的和信号SO(0)(28比特)中的高位2比特。加法器14c在第10输入的低位3比特位置接收作为加法器14d的加法运算结果的进位信号RO(0)(29比特)中的高位3比特。
作为加法器14c的加法运算结果的和信号SN(0)中的低位26比特{Sn25(0)-Sn0(0)}作为第1输出被发送到寄存器15c。作为加法器14c的加法运算结果的和信号SN(0)中的高位3比特作为第3输出被发送到加法器14b的第5输入的低位3比特位置。作为加法器14c的加法运算结果的进位信号RN(0)中的低位26比特{Rn25(0)-Rn0(0)}作为第2输出被发送到寄存器25c。作为加法器14c的加法运算结果的进位信号RN(0)中的高位4比特作为第4输出被发送到加法器14b的第6输入的低位4比特位置。
加法器14d在第5输入的全部26比特位置从移位器17d接收26比特(全部比特都为0)。加法器14d在第5输入的全部26比特位置从移位器27d接收26比特(全部比特都为0)。
加法器14d的加法运算结果O(0)中的低位26比特{o25(0)-o0(0)}作为第1输出被发送到寄存器15d。加法器14d的加法运算结果O(0)中的高位2比特作为第2输出被发送到加法器14c的第8输入的低位2比特位置。
图29A~图29B是表示第三变形例的双精度运算模式下的第二循环的加法器14a~14d的输入输出的图。针对加法器14a~14d的信号的输入源与第二循环是同样的。
移位器17a将寄存器15a所保持的26比特{Sl25(0)-Sl0(0)}向高位移位13比特。移位器17b将寄存器15b所保持的26比特{Sm25(0)-Sm0(0)}向高位移位13比特,将从移位器17b溢出的13比特{Sm25(0)-Sm13(0)}发送到移位器17a的低位13比特位置。移位器27a将寄存器25a所保持的26比特{Rl25(0)-Rl0(0)}向高位移位13比特。移位器27b将寄存器25b所保持的26比特{Rm25(0)-Rm0(0)}向高位移位13比特,将从移位器27b溢出的13比特{Rm25(0)-Rm13(0)}发送到移位器27a的低位13比特位置。
加法器14a在第1输入的全部26比特位置从移位器17a接收26比特{高位13比特:Sl12(0)-Sl0(0)、低位13比特:Sm25(0)-Sm13(0)}。加法器14a在第2输入的全部26比特位置从移位器27a接收26比特{高位13比特:Rl12(0)-Rl0(0)、低位13比特:Rm25(0)-Rm13(0)}。加法器14a在第3输入的低位2比特位置接收作为加法器14b的加法运算结果的和信号SM(1)(28比特)中的高位2比特。加法器14a在第4输入的低位3比特位置接收作为加法器14b的加法运算结果的进位信号RM(1)(29比特)中的高位3比特。
作为加法器14a的加法运算结果的和信号SL(1)中的低位26比特{Sl25(1)-Sl0(1)}被发送到寄存器15a。作为加法器14a的加法运算结果的进位信号RL(1)中的低位26比特{Rl25(1)-Rl0(1)}被发送到寄存器25a。
移位器17c将寄存器15c所保持的26比特{Sn25(0)-Sn0(0)}向高位移位13比特,将从移位器17c溢出的13比特{Sn25(0)-Sn13(0)}发送到移位器17b的低位13比特位置。移位器27c将寄存器25c所保持的26比特{Rn25(0)-Rn0(0)}向高位移位13比特,将从移位器27c溢出的13比特{Rn25(0)-Rn13(0)}发送到移位器27b的低位13比特位置。
加法器14b在第3输入的全部26比特位置从移位器17b接收26比特{高位13比特:Sm12(0)-Sm0(0)、低位13比特:Sn25(0)-Sn13(0)}。加法器14b在第4输入的全部26比特位置从移位器27b接收26比特{高位13比特:Rm12(0)-Rm0(0)、低位13比特:Rn25(0)-Rn13(0)}。加法器14b在第5输入的低位3比特位置接收作为加法器14c的加法运算结果的和信号SN(1)(29比特)中的高位3比特。加法器14b在第6输入的低位4比特位置接收作为加法器14c的加法运算结果的进位信号RN(1)(30比特)中的高位4比特。
作为加法器14b的加法运算结果的和信号SM(1)中的低位26比特{Sm25(1)-Sm0(1)}作为第1输出被发送到寄存器15b。作为加法器14b的加法运算结果的和信号SM(1)中的高位2比特作为第3输出被发送到加法器14a的第3输入的低位2比特位置。作为加法器14b的加法运算结果的进位信号RM(1)中的低位26比特{Rm25(1)-Rm0(1)}作为第2输出被发送到寄存器25b。作为加法器14b的加法运算结果的进位信号RM(1)中的高位3比特作为第4输出被发送到加法器14a的第4输入的低位3比特位置。
移位器17d将寄存器15d所保持的26比特{So25(0)-So0(0)}向高位移位13比特,将从移位器17d溢出的13比特{So25(0)-So13(0)}发送到移位器17c的低位13比特位置。移位器27d将寄存器25d所保持的26比特{Ro25(0)-Ro0(0)}向高位移位13比特,将从移位器27d溢出的13比特{Ro25(0)-Ro13(0)}发送到移位器27c的低位13比特位置。
加法器14c在第7输入的全部26比特位置从移位器17c接收26比特{高位13比特:Sn12(0)-Sn0(0)、低位13比特:So25(0)-So13(0)}。加法器14c在第8输入的全部26比特位置从移位器27c接收26比特{高位13比特:Rn12(0)-Rn0(0)、低位13比特:Ro25(0)-Ro13(0)}。加法器14c在第9输入的低位2比特位置接收作为加法器14d的加法运算结果的和信号SO(1)(28比特)中的高位2比特。加法器14c在第10输入的低位3比特位置接收作为加法器14d的加法运算结果的进位信号RO(1)(29比特)中的高位3比特。
作为加法器14c的加法运算结果的和信号SN(1)中的低位26比特{Sn25(1)-Sn0(1)}作为第1输出被发送到寄存器15c。作为加法器14c的加法运算结果的和信号SN(1)中的高位3比特作为第3输出被发送到加法器14b的第5输入的低位3比特位置。作为加法器14c的加法运算结果的进位信号RN(1)中的低位26比特{Rn25(1)-Rn0(1)}作为第2输出被发送到寄存器25c。作为加法器14c的加法运算结果的进位信号RN(1)中的高位4比特作为第4输出被发送到加法器14b的第6输入的低位4比特位置。
加法器14d在第5输入的全部26比特位置从移位器17d接收26比特{高位13比特:So12(0)-So0(0)、低位13比特:全部比特都为0}。加法器14d在第6输入的全部26比特位置从移位器27d接收26比特{高位13比特:Ro12(0)-Ro0(0)、低位13比特:全部比特都为0}。
作为加法器14d的加法运算结果的和信号SO(1)中的低位26比特{So25(1)-So0(1)}作为第1输出被发送到寄存器15d。作为加法器14d的加法运算结果的和信号SO(1)中的高位2比特作为第3输出被发送到加法器14c的第9输入的低位2比特位置。作为加法器14d的加法运算结果的进位信号RO(1)中的低位26比特{Ro25(1)-Ro0(1)}作为第2输出被发送到寄存器25d。作为加法器14d的加法运算结果的进位信号RO(1)中的高位3比特作为第4输出被发送到加法器14c的第10输入的低位3比特位置。
双精度运算模式下的第三循环~第四循环中的Wallace树乘法器2a~2d的输入与第二变形例是同样的。第三循环~第四循环以后的计算过程与第二循环的计算过程相同,因此不重复说明。
第二连接切换器130在第四循环结束后,将寄存器15a~15d、25a~25d内的数据输出到加法器16a~16d中的任一个。
寄存器15a所保持的和信号{Sl25(3)-Sl0(3)}及寄存器25a所保持的进位信号{Rl25(3)-Rl0(3)}被发送到加法器16a。加法器16a执行加法运算后将积C1的第1比特组C10输出到输出端子OP1。加法器16b~16d也同样地将积C1的第2比特组C11~第4比特组C13输出到输出端子OP2~OP4。在此,可以为,加法器16b~16d将伴随该加法运算的进位提供给高位侧的加法器16a~16c,高位侧的加法器16a~16c将该进位包含在内地进行上述的加法运算。
接着,对加法器14a~14d的具体结构例进行说明。
在半精度运算模式中,不向加法器14a~14d输入数据。即,从Wallace树乘法器2a~2d输出的和信号D、F、H及J以及进位信号E、G、I及K绕过加法器14a~14d而被发送到加法器16a~16d。在单精度运算模式中,加法器14a~14d按顺序执行6输入2输出、6输入2输出+2进位信号输出、6输入2输出、6输入2输出+2进位信号输出的进位信号保留加法运算。在双精度运算模式中,加法器14a~14d按顺序执行4输入2输出、6输入2输出+2进位信号输出、10输入2输出+2进位信号输出、6输入2输出+2进位信号输出的进位信号保留加法运算。
加法器14a具备4个CSA。加法器14a在单精度运算模式中使用4个CSA执行进位信号保留加法运算,在双精度运算模式中使用2个CSA执行进位信号保留加法运算。
加法器14b具备4个CSA。加法器14b在单精度运算模式及双精度运算模式中使用4个CSA执行进位信号保留加法运算。
加法器14c具备8个CSA。加法器14c在单精度运算模式中使用4个CSA执行进位信号保留加法运算,在双精度运算模式中使用8个CSA执行进位信号保留加法运算。
加法器14d具备4个CSA。加法器14d在单精度运算模式及双精度运算模式中使用4个CSA执行进位信号保留加法运算。
图30表示使用2个CSA执行进位信号保留加法运算的加法器200的结构。该加法器200的结构为加法器14a的双精度运算模式时的结构。图31表示加法器200的输入数据、中途数据、输出数据。
对该加法器200输入四个数据Y0、Y1、Y2、Y3。
CSA 111将Y0、Y1以及Y2进行进位信号保留加法运算,输出和信号1S及进位信号1R。CSA 112将Y3、和信号1S以及进位信号1R进行进位信号保留加法运算,输出和信号2S及进位信号2R。
和信号2S的低位26比特被输出到一个寄存器,进位信号2R的低位26比特被输出到另一个寄存器。
图32是表示使用4个CSA执行进位信号保留加法运算的加法器300的结构的图。该加法器300的结构是加法器14a~14d的单精度运算模式时的结构以及加法器14b、14d的双精度运算模式时的结构。图33是表示加法器300的输入数据、中途数据、输出数据的图。
对该加法器300输入六个数据Y0、Y1、Y2、Y3、Y4、Y5。
CSA 121将Y0、Y1以及Y2进行进位信号保留加法运算,输出和信号1S及进位信号1R。CSA 122将Y3、Y4以及Y5进行进位信号保留加法运算,输出和信号2S及进位信号2R。CSA123将和信号1S、进位信号1R以及和信号2S进行进位信号保留加法运算,输出和信号3S及进位信号3R。CSA 124将和信号3S、进位信号3R以及进位信号2R进行进位信号保留加法运算,输出和信号4S及进位信号4R。
和信号4S的低位26比特被输出到一个寄存器,进位信号4R的低位26比特被输出到另一个寄存器。在进行进位信号输出的情况下,将和信号4S的高位2比特向其它的加法器进行进位信号输出,将进位信号4R的高位3比特向其它的加法器进行进位信号输出。
此外,也可以设为,在生成了和信号1S、2S、进位信号1R、2R的时间点,按照它们的图案,生成2比特或3比特的进位比特,并从加法器300输出到其它的加法器。
图34是表示使用8个CSA执行进位信号保留加法运算的加法器400的结构的图。该加法器400的结构为加法器14c的双精度运算模式时的结构。对该加法器400输入10个数据Y0~Y9。
CSA 131将Y0、Y1以及Y2进行进位信号保留加法运算,输出和信号1S及进位信号1R。CSA 132将Y3、Y4以及Y5进行进位信号保留加法运算,输出和信号2S及进位信号2R。CSA133将Y6、Y7以及Y8进行进位信号保留加法运算,输出和信号3S及进位信号3R。
CSA 134将和信号1S、进位信号1R以及和信号2S进行进位信号保留加法运算,输出和信号4S及进位信号4R。CSA 135将Y9、进位信号2R以及和信号3S进行进位信号保留加法运算,输出和信号5S及进位信号5R。CSA 136将和信号4S、进位信号4R以及和信号5S进行进位信号保留加法运算,输出和信号6S及进位信号6R。CSA 137将和信号6S、进位信号3R以及进位信号5R进行进位信号保留加法运算,输出和信号7S及进位信号7R。CSA 138将进位信号6R、和信号7S以及进位信号7R进行进位信号保留加法运算,输出和信号8S及进位信号8R。
和信号8S的低位26比特被输出到一个寄存器,进位信号8R的低位26比特被输出到另一个寄存器。另外,将和信号8S的高位3比特向其它的加法器进行进位信号输出,将进位信号8R的高位4比特向其它的加法器进行进位信号输出。
根据本实施方式的运算装置,加法器14a~14d输出加法运算结果的前一级的和信号及进位信号,加法器16a~16d在单精度运算中在两个循环中仅执行一次加法运算、在双精度运算中在四个循环中仅执行一次加法运算即可。因而,在本实施方式中,能够与第二变形例相比使运算装置整体的动作速度及电力效率增加。
[第四变形例]
图35表示第四变形例的运算系统1000的结构。该运算系统100具备运算单元900以及多个元件处理器PE1~PE4。
多个元件处理器PE1~PE4共享地使用运算单元900。在运算系统1000执行矩阵运算时,元件处理器PE1~PE4协同地作为一个处理器进行动作,在执行矩阵运算以外的运算时,元件处理器PE1~PE4作为独立的处理器进行动作。在运算系统1000执行矩阵运算以外的运算时,也可以设为元件处理器PE1~PE4作为一个处理器进行动作。在元件处理器PE1~PE4作为一个处理器进行动作的情况下,元件处理器PE1~PE4通过一个指令来进行动作,因此元件处理器PE1~PE4能够视为进行SIMD动作。
元件处理器PE1~PE4被进行链结合。具体地说,元件处理器PE1与元件处理器PE2通过数据总线进行连接,元件处理器PE2与元件处理器PE3通过数据总线进行连接,元件处理器PE3与元件处理器PE4通过数据总线进行连接,元件处理器PE4与元件处理器PE1通过数据总线进行连接。对元件处理器PE1~PE4设定了能够唯一地识别元件处理器的处理器ID(00、01、10、11)。
在运算系统1000中设定了存储空间。存储空间的存储地址包含处理器ID。例如,也可以设为存储地址的低位2比特与处理器ID对应。对元件处理器PE1~PE4分别分配了例如与10比特的地址对应的存储空间。因而,运算系统1000的存储空间被扩大为12比特。也就是说,运算系统1000的存储空间被进行四等分,由以各存储地址中包含的处理器ID表示的元件处理器访问以该存储地址表示的存储区域。
元件处理器PE1~PE4中的各个元件处理器能够访问以包含该元件处理器的处理器ID的存储地址表示的存储区域(负责区域),但是无法访问以包含与该元件处理器的处理器ID不同的处理器ID的存储地址表示的存储区域(非负责区域)。元件处理器PE1~PE4中的各个元件处理器经由链结合而向其它的元件处理器依次进行数据传输(循环移位)。由此,元件处理器PE1~PE4中的各个元件处理器能够读出非负责区域的数据,或者能够向非负责区域写入数据。元件处理器PE1~PE4中的各个元件处理器在以存储地址表示的区域保持运算单元900的运算对象即输入数据以及运算单元900的运算结果即输出数据。
运算单元900例如能够并行地执行多个浮点运算。运算单元900例如能够执行用于深度神经网络(DNN:Deep Neural Network)及卷积神经网络(CNN:ConvolutionalNetwork)的运算。
运算单元900具备多个运算装置1A~1D。运算装置1A~1D分别是实施方式中所说明的运算装置405、第一变形例中所说明的运算装置405、第二变形例中所说明的运算装置1、或第三变形例中所说明的运算装置101。
运算装置1A~1D分别是执行运算单元900的一部分运算的装置。元件处理器PE1能够访问运算装置1A的寄存器。元件处理器PE2能够访问运算装置1B的寄存器。元件处理器PE3能够访问运算装置1C的寄存器。元件处理器PE4能够访问运算装置1D的寄存器。
(其它的变形例)
本发明不限定于上述的实施方式,还包含例如下面那样的变形例。
(1)在上述的实施方式中,运算装置执行了乘法运算(A*B),但是还能够执行A*B+C。为此,在单精度运算的情况下,只要将加法器4a、4c、14a、14c的第3输入的初始值从0变为C即可,在双精度运算的情况下,只要将加法器4a、14a的第1输入的初始值从0变为C即可。在半精度的情况下,也是只要向加法器4a~4d、14a~14d的未被使用的输入端口提供C即可。
(2)在上述的实施方式中,示出浮点形式的数据的有效数字部分的运算电路,但是也能够应用为定点形式及块浮点形式的数据的运算电路。另外,也能够应用为这些运算数据(浮点形式、定点形式以及块浮点形式)混合存在的数据的运算电路。
应认为本次公开的实施方式的所有点是例示性的而非限制性的。本发明的范围通过权利要求书来表示,而不是通过上述的说明来表示,意图包括与权利要求书均等的意义和范围内的所有变更。
附图标记说明
1、1A~1D、101:运算装置;2a~2d;Wallace树乘法器;4a~4d、14a~14d、16a~16d、200、300、400:加法器;5a~5d、15a~15d、25a~25d:寄存器;6a~6d、7a~7d、17a~17d、27a~27d:移位器;9b~9d、151b~151d、161b~161d:开关;20、120:第一连接切换器;30、130:第二连接切换器;51~61、111、112、121~124、131~138:CSA;79:输入生成器;900:运算单元;1000:运算系统;PE1~PE4:元件处理器;OP1~OP4:输出端子;405:运算装置;410:乘法部;420-1~420-4:乘法器;430:加法部;440-1~440-4:加法器;450-1~450-4:中间寄存器;460:模式选择部;470:第一连接切换器;480:第二连接切换器;540:加法器;542:第一加法元件;544:第二加法元件;550:中间寄存器。
Claims (11)
1.一种运算装置,以可变精度执行乘法运算,所述运算装置具备:
乘法部,其具有多个乘法器,所述多个乘法器是根据运算精度模式按每一个或两个以上的乘法器进行分割并分配给一个或多个组中的各个组,在各组中,各乘法器根据运算精度模式对个别乘数及个别被乘数进行乘法运算,该个别乘数为与该组对应的乘数的至少一部分的数位范围,该个别被乘数为与该组对应的被乘数的至少一部分的数位范围;
加法部,其具有多个加法器,所述多个加法器是根据运算精度模式按每一个或两个以上的加法器进行分割并分配给所述一个或多个组中的各个组,分配给各组的所述一个或两个以上的加法器对由分配给该组的各乘法器得到的各乘法运算结果进行加法运算,并输出所述乘数与所述被乘数之积;以及
第一连接切换器,其根据运算精度模式,针对所述一个或多个组中的各个组,将由各乘法器得到的各乘法运算结果输入到所述一个或两个以上的加法器中的要加上该乘法运算结果的数位位置。
2.根据权利要求1所述的运算装置,其中,
所述多个乘法器中的各个乘法器对所述个别乘数及所述个别被乘数进行乘法运算,输出包含各数位的和数据及从各数位的进位数据的所述乘法运算结果。
3.根据权利要求1或2所述的运算装置,其中,
所述多个乘法器中的各个乘法器对1个单位比特长度的所述个别乘数及所述个别被乘数进行乘法运算,输出2个单位比特长度的所述乘法运算结果,
所述多个加法器中的各个加法器对2个单位比特长度的多个输入数据进行加法运算,输出2个单位比特长度的和以及与所述运算精度模式相应地向高数位的进位。
4.根据权利要求1至3中的任一项所述的运算装置,其中,
在对2个单位比特长度以上的所述乘数及所述被乘数进行乘法运算的至少一个运算精度模式中,
关于所述一个或多个组中的各个组,
所述一个或两个以上的乘法器在每个循环中被输入所述乘数中的由各乘法器负责的数位范围的所述个别乘数以及所述被乘数中的在每个循环中从高数位起按顺序选择1个单位比特长度的所述个别被乘数,在每个循环中输出各个所述个别乘数及所述个别被乘数的部分积来作为所述乘法运算结果,
所述第一连接切换器在每个循环中,以使所述乘数中的最低位侧的数位范围的所述个别乘数及所述个别被乘数的所述部分积与所述一个或两个以上的加法器中的最低位的数位范围对应的方式将所述一个或两个以上的乘法器输出的各个所述部分积移位后,输入到所述一个或两个以上的加法器,并与中间结果进行加法运算,
所述运算装置还具备第二连接切换器,所述第二连接切换器针对所述一个或多个组中的各个组,在每个循环中使所述中间结果向高位侧移位1个单位比特长度后输入到所述一个或两个以上的加法器。
5.根据权利要求4所述的运算装置,其中,
在2个单位比特长度以上的至少一个运算精度模式中,所述多个乘法器及所述多个加法器被分配给两个以上的组,
所述运算装置针对所述两个以上的组中的各个组,利用多个循环来运算所述乘数与所述被乘数之积。
6.根据权利要求4或5所述的运算装置,其中,
在对1个单位比特长度的所述乘数及所述被乘数进行乘法运算的运算精度模式中,
所述多个乘法器被分配给各自包括一个乘法器的所述多个组,
分配给各组的乘法器对分配给该组的1个单位比特长度的所述乘数及所述被乘数进行乘法运算。
7.根据权利要求4至6中的任一项所述的运算装置,其中,
所述加法部具有多个中间寄存器,所述多个中间寄存器分别与所述多个加法器中的各个加法器对应地设置,各自保持所述中间结果中的与各加法器对应的数位范围。
8.根据权利要求7所述的运算装置,其中,
所述多个加法器中的各个加法器包括第一加法元件,所述第一加法元件输出包含各数位的和数据及从各数位的进位数据的加法运算结果,
所述多个中间寄存器各自保持所述中间结果中的由对应的第一加法元件输出的数位范围的和数据及进位数据,
所述加法部还具有多个第二加法元件,所述多个第二加法元件分别与所述多个加法器中的各个加法器对应地设置,所述多个第二加法元件是根据运算精度模式按每一个或每两个以上的第二加法元件进行分割并分配给所述一个或多个组中的各个组,所述多个第二加法元件在各组中对一个或两个以上的所述第一加法元件输出的和数据及进位数据进行加法运算并作为所述乘数与所述被乘数之积进行输出。
9.一种运算装置,以可变精度执行乘法运算,所述运算装置具备:
乘法部,其具有多个乘法器,所述多个乘法器各自对1个单位比特长度的两个数进行乘法运算,并输出包含各数位的和数据及从各数位的进位数据的乘法运算结果;
加法部,其具有多个加法器,所述多个加法器各自对包含由所述多个乘法器中的至少一个乘法器得到的所述乘法运算结果的至少两个输入数据进行加法运算;以及
模式选择部,其根据运算精度模式选择分割数和循环数,所述分割数是将所述多个乘法器及所述多个加法器按组进行分割的分割数,所述组包括一个以上的乘法器及一个以上的加法器,且对互不相同的乘数及被乘数进行乘法运算,所述循环数是在所述组中使用所述一个以上的乘法器及所述一个以上的加法器对所述乘数及所述被乘数进行乘法运算时使用的。
10.根据权利要求9所述的运算装置,其中,
所述模式选择部在对n个单位比特长度的所述乘数及所述被乘数进行乘法运算的运算精度模式中,将所述多个乘法器及所述多个加法器分割为各自包括n个乘法器及n个加法器的至少一个所述组,其中,n为自然数,
至少一个所述组中的各个组内的所述n个乘法器在n个循环的期间内,以在一个循环内进行n组的乘法运算的方式进行每个所述组的n个个别乘数中的各个个别乘数与n个个别被乘数中的各个个别被乘数的乘法运算,所述n个个别乘数各自为所述乘数中包含的1个单位比特长度的数位范围,所述n个个别被乘数各自为所述被乘数中包含的1个单位比特长度的数位范围,
至少一个所述组中的各个组内的所述n个加法器被组合在一起,在n个循环的期间内,将每个循环内来自相同组的所述n个乘法器的各乘法运算结果加到所述乘数与所述被乘数之积的中间结果中的与各乘法运算结果相应的数位位置。
11.一种运算系统,具备:
运算单元,其具备多个根据权利要求1至10中的任一项所述的运算装置;以及
多个处理器,所述多个处理器共享所述运算单元。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018069568 | 2018-03-30 | ||
JP2018-069568 | 2018-03-30 | ||
PCT/JP2019/014330 WO2019189878A1 (ja) | 2018-03-30 | 2019-03-29 | 演算装置および演算システム |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111971649A true CN111971649A (zh) | 2020-11-20 |
Family
ID=68060301
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980024094.7A Pending CN111971649A (zh) | 2018-03-30 | 2019-03-29 | 运算装置和运算系统 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20210011686A1 (zh) |
EP (1) | EP3779670A4 (zh) |
JP (1) | JP7394462B2 (zh) |
CN (1) | CN111971649A (zh) |
WO (1) | WO2019189878A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988111A (zh) * | 2021-03-05 | 2021-06-18 | 唐山恒鼎科技有限公司 | 一种单比特乘法器 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112558918B (zh) * | 2020-12-11 | 2022-05-27 | 北京百度网讯科技有限公司 | 用于神经网络的乘加运算方法和装置 |
WO2023248309A1 (ja) * | 2022-06-20 | 2023-12-28 | 日本電信電話株式会社 | データ処理装置、データ処理プログラム、及びデータ処理方法 |
US20240111525A1 (en) * | 2022-09-29 | 2024-04-04 | Tenstorrent Inc. | Multiplication hardware block with adaptive fidelity control system |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1195981A (ja) * | 1997-09-18 | 1999-04-09 | Toshiba Corp | 乗算回路 |
US8307023B1 (en) * | 2008-10-10 | 2012-11-06 | Altera Corporation | DSP block for implementing large multiplier on a programmable integrated circuit device |
JP2016045685A (ja) * | 2014-08-22 | 2016-04-04 | 富士通株式会社 | 乗算回路及びその乗算方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4754421A (en) * | 1985-09-06 | 1988-06-28 | Texas Instruments Incorporated | Multiple precision multiplication device |
JPH01259273A (ja) | 1988-04-08 | 1989-10-16 | Tohoku Electric Power Co Inc | 高圧系統への直流電圧印加装置 |
US5200912A (en) * | 1991-11-19 | 1993-04-06 | Advanced Micro Devices, Inc. | Apparatus for providing power to selected portions of a multiplying device |
JPH0784762A (ja) * | 1993-09-17 | 1995-03-31 | Nippon Steel Corp | 乗算回路 |
US5764558A (en) * | 1995-08-25 | 1998-06-09 | International Business Machines Corporation | Method and system for efficiently multiplying signed and unsigned variable width operands |
JP2000081966A (ja) | 1998-07-09 | 2000-03-21 | Matsushita Electric Ind Co Ltd | 演算装置 |
JP2003223316A (ja) | 2002-01-31 | 2003-08-08 | Matsushita Electric Ind Co Ltd | 演算処理装置 |
US8549055B2 (en) * | 2009-03-03 | 2013-10-01 | Altera Corporation | Modular digital signal processing circuitry with optionally usable, dedicated connections between modules of the circuitry |
US20120215825A1 (en) * | 2011-02-22 | 2012-08-23 | Mavalankar Abhay M | Efficient multiplication techniques |
US10037192B2 (en) * | 2015-10-21 | 2018-07-31 | Altera Corporation | Methods and apparatus for performing product series operations in multiplier accumulator blocks |
US10755169B2 (en) * | 2017-10-17 | 2020-08-25 | Mediatek Inc. | Hybrid non-uniform convolution transform engine for deep learning applications |
-
2019
- 2019-03-29 EP EP19776398.0A patent/EP3779670A4/en active Pending
- 2019-03-29 JP JP2020509352A patent/JP7394462B2/ja active Active
- 2019-03-29 CN CN201980024094.7A patent/CN111971649A/zh active Pending
- 2019-03-29 WO PCT/JP2019/014330 patent/WO2019189878A1/ja unknown
-
2020
- 2020-09-30 US US17/037,767 patent/US20210011686A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1195981A (ja) * | 1997-09-18 | 1999-04-09 | Toshiba Corp | 乗算回路 |
US8307023B1 (en) * | 2008-10-10 | 2012-11-06 | Altera Corporation | DSP block for implementing large multiplier on a programmable integrated circuit device |
JP2016045685A (ja) * | 2014-08-22 | 2016-04-04 | 富士通株式会社 | 乗算回路及びその乗算方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988111A (zh) * | 2021-03-05 | 2021-06-18 | 唐山恒鼎科技有限公司 | 一种单比特乘法器 |
CN112988111B (zh) * | 2021-03-05 | 2022-02-11 | 唐山恒鼎科技有限公司 | 一种单比特乘法器 |
Also Published As
Publication number | Publication date |
---|---|
JPWO2019189878A1 (ja) | 2021-04-08 |
WO2019189878A1 (ja) | 2019-10-03 |
EP3779670A4 (en) | 2022-01-05 |
EP3779670A1 (en) | 2021-02-17 |
US20210011686A1 (en) | 2021-01-14 |
JP7394462B2 (ja) | 2023-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111971649A (zh) | 运算装置和运算系统 | |
CN110383237B (zh) | 可重新配置的矩阵乘法器系统和方法 | |
KR100291383B1 (ko) | 디지털신호처리를위한명령을지원하는모듈계산장치및방법 | |
US8078833B2 (en) | Microprocessor with highly configurable pipeline and executional unit internal hierarchal structures, optimizable for different types of computational functions | |
US20180341461A1 (en) | Methods and apparatus for performing product series operations in multiplier accumulator blocks | |
EP1351134A2 (en) | Superpipelined arithmetic-logic unit with feedback | |
JP3667635B2 (ja) | 演算装置 | |
JPS6347874A (ja) | 算術演算装置 | |
US9372665B2 (en) | Method and apparatus for multiplying binary operands | |
US20190303103A1 (en) | Common factor mass multiplication circuitry | |
JP2015056124A (ja) | 行列演算装置 | |
CN110716708A (zh) | 用于非常大整数的加法器电路 | |
JP2016076165A (ja) | 演算回路及び演算回路の制御方法 | |
JP6829838B2 (ja) | 演算装置及び演算システム | |
CN111126588A (zh) | 集成电路芯片装置及相关产品 | |
EP0239634A1 (en) | Multizone processor | |
JP2019219753A (ja) | 半導体装置及びその制御方法 | |
CN111160543A (zh) | 集成电路芯片装置及相关产品 | |
US9164728B1 (en) | Ternary DSP block | |
WO2022150058A1 (en) | Numerical precision in digital multiplier circuitry | |
JPH05173761A (ja) | 2進整数乗算器 | |
JPS6373472A (ja) | 積和演算方法 | |
KR100900790B1 (ko) | 재구성형 프로세서 연산 방법 및 장치 | |
WO2008077803A1 (en) | Simd processor with reduction unit | |
US20220075598A1 (en) | Systems and Methods for Numerical Precision in Digital Multiplier Circuitry |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |