一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

可重新配置处理器电路架构的制作方法

2022-06-18 12:51:23 来源:中国专利 TAG:

可重新配置处理器电路架构
1.相关申请案交叉参考
2.此申请案是2019年9月10日提出申请的标题为“可重新配置算术引擎(reconfigurable arithmetic engine)”的美国临时专利申请案第62/898,452号的非临时申请且主张所述美国临时专利申请案的权益及优先权,是2019年9月11日提出申请的标题为“具有分形核心阵列的可重新配置处理器电路架构(reconfigurable processor circuit architecture with an array of fractal cores)”的美国临时专利申请案第62/899,025号的非临时申请且主张所述美国临时专利申请案的权益及优先权,并且进一步主张2020年9月9日提出申请的美国专利申请案第17/015,950号及2020年9月9日提出申请的美国专利申请案第17/015,973号的优先权,所述美国专利申请案是与此共同让与的,且所有所述美国专利申请案据此以其全文引用的方式以如同全部陈述于本文中一般的全部效力及效果并入本文中。
技术领域
3.本发明一般来说涉及可配置且可重新配置计算电路系统,并且更具体来说涉及具有用于算术及逻辑计算的电子电路系统的可配置且可重新配置算术引擎。


背景技术:

4.许多现有的计算系统在计算处理能力上已达到显著极限,例如对于数学密集型应用(例如涉及神经网络计算、数字货币、区块链等)的计算速度不够。另外,许多现有的计算系统具有超量能量(或功率)消耗,以及相关联热耗散。举例来说,随着对先进计算技术需求的增长(例如适应人工智能、神经网络、加密、解密及其它重要计算应用),现有的计算解决方案变得越来越不充分。
5.因此,持续需要一种能够针对数学密集型应用(举例来说且无限制地,例如涉及人工智能、神经网络计算、数字货币、区块链、加密、解密、快速傅里叶变换(fft)的计算及机器学习)提供高性能及能量高效的解决方案的计算架构。
6.另外,持续需要一种能够针对这些各种应用中的任一者而被配置的可配置且可重新配置计算架构。此可配置且可重新配置计算架构应可易于按比例调整(例如按比例调整到数百万或处理核心)、应具有低等待时间、应为计算及能量高效的、应能够实时地处理流式传输数据、应为可重新配置的以优化用于选定应用的计算硬件,并且应能够进行大规模并行处理。
7.依据对本发明及其实施例的以下详细说明、依据权利要求书并依据附图将容易明了本发明的众多其它优点及特征。


技术实现要素:

8.如下文更详细地论述,代表性设备、系统及方法提供一种能够针对数学密集型应用(举例来说且无限制地,例如涉及人工智能、神经网络计算、数字货币、加密、解密、区块
链、快速傅里叶变换(fft)的计算及机器学习)提供高性能及能量高效的解决方案的计算架构。
9.另外,在本文中作为设备及系统而揭示的可重新配置处理器能够针对这些各种应用中的任一者而被配置,下文更详细地图解说明及论述数个此类实例。此可重新配置处理器可易于按比例调整(例如按比例调整到数百万个计算核心)、具有低等待时间、为计算及能量高效的、能够实时地处理流式传输数据、为可重新配置的以优化用于选定应用的计算硬件,并且能够进行大规模并行处理。举例来说,在单个芯片上,多个可重新配置处理器还可使用互连网络进行排列及连接,以提供每芯片数百到数千个计算核心。多个此类芯片又可在电路板上进行排列及连接,从而产生每板数千到数百万个计算核心。任何选定数目个计算核心可在可重新配置处理器中实施,且任何数目个可重新配置处理器可在单个集成电路上实施,并且任何数目个此类集成电路可在电路板上实施。如此,可重新配置处理器具有可按比例调整到任何选定程度(然而,受其它约束,举例来说且无限制地,例如路由及热耗散)的计算核心的阵列。
10.在代表性实施例中,一种可重新配置算术电路包括:输入重新排序队列;乘法器移位器及组合器网络,其耦合到所述输入重新排序队列;累加器电路;及至少一个控制逻辑电路,其耦合到所述乘法器移位器及组合器网络且耦合到所述累加器电路。
11.在代表性实施例中,此可重新配置算术电路可进一步包括:可配置乘法器,其具有多种操作模式,所述可配置乘法器耦合到所述输入重新排序队列且耦合到所述乘法器移位器及组合器网络,所述多种操作模式包括固定点操作模式及浮点操作,其中所述可配置乘法器具有27x27无正负号乘法器的原生操作模式,所述27x27无正负号乘法器进一步可配置以处理带正负号输入。举例来说,所述可配置乘法器可进一步可配置以变为四个8x8乘法器、两个16x16单指令多数据(simd)乘法器、一个32x32乘法器及一个54x54乘法器。举例来说,所述可配置乘法器可进一步可配置以重新指派一或多个部分乘积来变为32x32乘法器。
12.在代表性实施例中,所述乘法器移位器及组合器网络可包括:移位器电路;及多个串联耦合的加法器电路,其耦合到所述移位器电路。在代表性实施例中,所述乘法器移位器及组合器网络可适于将乘法器乘积移位以将浮点乘积转换为具有基数-32指数的乘积。在代表性实施例中,所述乘法器移位器及组合器网络可适于对多个单指令多数据(simd)乘积进行求和以形成simd点乘积。
13.在代表性实施例中,此可重新配置算术电路可进一步包括:可配置互连网络,其选择性地将所述乘法器移位器及组合器网络耦合到一或多个邻近可重新配置算术电路以执行单循环32x32及54x54乘法、单精度24x24乘法以及单指令多数据(simd)点乘积。
14.在代表性实施例中,所述输入重新排序队列适于存储多个输入,且所述输入重新排序队列进一步包括:输入重新排序逻辑电路系统,其适于对所述多个输入的序列进行重新排序,且调整取反及绝对值函数的正负号位。在代表性实施例中,所述输入重新排序逻辑电路系统可进一步适于对i及q数据输入以及奇数及偶数数据输入进行去交错。
15.在代表性实施例中,此可重新配置算术电路可进一步包括输出重新排序队列,所述输出重新排序队列经耦合以对来自多个可重新配置算术电路的输出进行接收及重新排序。在代表性实施例中,所述累加器电路可为具有128位进位保留格式的单时钟循环固定点及浮点累加器。
16.在代表性实施例中,所述可重新配置算术电路具有多个输入,所述多个输入包括第一x输入、第二y输入及第三z输入,且其中所述至少一个控制逻辑电路包括选自由以下各项组成的群组的一或多个电路:比较电路;布尔逻辑电路;z输入移位器;指数逻辑电路;相加、饱和及舍入电路;以及其组合。
17.在代表性实施例中,所述z输入移位器可适于将浮点z输入值移位成基数-32指数值、移位32位的倍数以匹配乘法器总和输出的缩放,且具有多个整数模式,在所述多个整数模式中,所述z输入移位器用作具有64位、32位、2x16位及4x8位移位或旋转模式的移位器或旋转器。
18.在代表性实施例中,所述布尔逻辑电路可包括适于对32位整数输入执行and、nand、or、nor、xor、xnor及选择器操作的and-or-invert逻辑单元。
19.在代表性实施例中,所述比较电路可适于从输入数据流提取最小或最大数据值、从所述输入数据流提取索引,且进一步适于比较两个输入数据流。在代表性实施例中,所述比较电路可适于交换两个输入数据流并且将所述两个输入数据流的最小值置于第一输出上且将所述两个输入数据流的最大值置于第二输出上。在代表性实施例中,所述比较电路可适于执行数据导向、产生地址序列,以及产生针对等于、大于及小于的比较旗标。
20.还揭示布置成阵列的多个可重新配置算术电路,其中所述多个可重新配置算术电路中的每一可重新配置算术电路的代表性实施例包括:输入重新排序队列,其适于存储多个输入,所述输入重新排序队列进一步包括输入重新排序逻辑电路系统,所述输入重新排序逻辑电路系统适于对所述多个可重新配置算术电路中的可重新配置算术电路及邻近可重新配置算术电路的多个输入的序列进行重新排序;乘法器移位器及组合器网络,其耦合到所述输入重新排序队列;累加器电路;至少一个控制逻辑电路,其耦合到所述乘法器移位器及组合器网络且耦合到所述累加器电路;及输出重新排序队列,其经耦合以对来自所述多个可重新配置算术电路中的所述可重新配置算术电路及所述邻近可重新配置算术电路的输出进行接收及重新排序。
21.在代表性实施例中,可重新配置算术电路的此阵列可进一步包括可配置互连网络,所述可配置互连网络耦合到所述乘法器移位器及组合器网络以合并所述多个可重新配置算术电路来执行双精度相乘-相加、单精度单循环复数相乘、fft蝶形、指数解析、相乘-累加及逻辑操作。举例来说,所述可配置互连网络可包括多个直接连接,所述多个直接连接用以连结所述多个可重新配置算术电路中的邻近可重新配置算术电路作为可重新配置算术电路的成对配置并作为可重新配置算术电路的四元组配置。
22.在代表性实施例中,在可重新配置算术电路的此阵列中,单个可重新配置算术电路可适于执行选自由以下各项组成的群组的至少两个数学计算或函数:每循环一个ieee单精度或整数27x27相乘;每循环两个并行ieee半精度、16位脑浮点(“bfloat”)(bloat16),或用于带正负号及无正负号16位整数值的16位整数(int16)相乘;每循环四个并行ieee四分之一精度或用于带正负号及无正负号8位整数值的8位整数(int8)相乘;每循环对两个并行ieee半精度、bfloat16或int16相乘进行求和;每循环对四个并行ieee四分之一精度或用于带正负号及无正负号8位整数值的8位整数(int8)相乘进行求和;每循环一个四分之一精度或int8复数相乘;融合相加;累加;达任何位数的64位、32位、2x16位或4x8位移位;达任何位数的64位、32位、2x16位或4x8位旋转;32位按位布尔逻辑;比较数据流的最小值或最大值;
两个操作数排序;以及其组合。
23.在代表性实施例中,在可重新配置算术电路的此阵列中,具有成对配置的两个邻近经连结可重新配置算术电路可适于执行选自由以下各项组成的群组的至少两个数学计算或函数:每循环用于带正负号及无正负号32位整数值的一个32位整数(int32)相乘;在4循环序列中使用所述累加器电路进行用于带正负号及无正负号64位整数值的一个64位整数(int64)相乘以加上四个32x32部分乘积);每循环对两个ieee单精度或用于带正负号及无正负号24位整数值的两个24位整数(int24)相乘进行求和;每循环对四个并行ieee半精度、16位脑浮点(“bfloat”)(bloat16)或用于带正负号及无正负号16位整数值的16位整数(int16)相乘进行求和;每循环对八个并行ieee四分之一精度或用于带正负号及无正负号8位整数值的8位整数(int8)相乘进行求和;每循环一个半精度或int16复数相乘;四个相乘及两个相加;融合相加;累加;以及其组合。
24.在代表性实施例中,在可重新配置算术电路的此阵列中,具有四元组配置的四个经连结可重新配置算术电路可适于执行选自由以下各项组成的群组的至少两个数学计算或函数:在四个循环中的用于带正负号及无正负号64位整数值的两个64位整数(int64)相乘;每循环用于带正负号及无正负号32位整数值的两个32位整数(int32)相乘;每循环对两个int32相乘进行求和;每循环对四个ieee单精度或用于带正负号及无正负号24位整数值的24位整数(int24)进行求和;每循环对八个并行ieee半精度、16位脑浮点(“bfloat”)(bloat16)或用于带正负号及无正负号16位整数值的16位整数(int16)相乘进行求和;每循环对十六个并行ieee四分之一精度或用于带正负号及无正负号8位整数值的8位整数(int8)相乘进行求和;每循环一个单精度或用于带正负号及无正负号24位整数值的24位整数(int24)复数相乘;融合相加;累加;以及其组合。
25.在代表性实施例中,在可重新配置算术电路的此阵列中,所述多个可重新配置算术电路中的每一可重新配置算术电路可进一步包括:可配置乘法器,其具有多种操作模式,所述可配置乘法器耦合到所述输入重新排序队列且耦合到所述乘法器移位器及组合器网络;所述多种操作模式包括固定点操作模式及浮点操作,其中所述可配置乘法器具有27x27无正负号乘法器的原生操作模式,所述27x27无正负号乘法器进一步可配置以处理带正负号输入。举例来说,所述可配置乘法器可进一步可配置以变为四个8x8乘法器、两个16x16单指令多数据(simd)乘法器、一个32x32乘法器及一个54x54乘法器。举例来说,所述可配置乘法器可进一步可配置以重新指派一或多个部分乘积来变为32x32乘法器。
26.在代表性实施例中,在可重新配置算术电路的此阵列中,所述乘法器移位器及组合器网络可包括:移位器电路;及多个串联耦合的加法器电路,其耦合到所述移位器电路。举例来说,所述乘法器移位器及组合器网络可适于将乘法器乘积移位以将浮点乘积转换为具有基数-32指数的乘积;以及对多个单指令多数据(simd)乘积进行求和以形成simd点乘积。在代表性实施例中,在可重新配置算术电路的此阵列中,所述乘法器移位器及组合器网络可进一步包括:多个直接连接,其将所述乘法器移位器及组合器网络耦合到所述多个可重新配置算术电路中的邻近可重新配置算术电路的一或多个乘法器移位器及组合器网络以执行单循环32x32及54x54乘法、单精度24x24乘法以及单指令多数据(simd)点乘积。
27.在代表性实施例中,在可重新配置算术电路的此阵列中,所述乘法器移位器-组合器网络可适于将来自可重新配置算术电路的成对配置中的另一可重新配置算术电路的乘
积相加且产生来自可重新配置算术电路的可重新配置算术电路四元组(quad)配置的另一半的乘积的总和。举例来说,所述乘法器移位器-组合器网络适于另外移位32位的倍数以匹配z输入以及来自所述四元组配置中的其它可重新配置算术电路的输入的缩放,以便对所述乘积进行求和。
28.在代表性实施例中,可重新配置算术电路可包括:多个数据输入,所述多个数据输入包括第一x数据输入、第二y数据输入及第三z数据输入;多个数据输出;输出重新排序队列,其耦合到所述多个数据输出以对输出数据进行接收及重新排序;输入重新排序队列,其耦合到所述多个数据输入且适于存储输入数据,所述输入重新排序队列进一步包括输入重新排序逻辑电路系统,所述输入重新排序逻辑电路系统适于对所述输入数据的序列进行重新排序;可配置乘法器,其耦合到所述输入重新排序队列,所述可配置乘法器具有多种操作模式,所述多种操作模式包括固定点操作模式及浮点操作模式,其中所述可配置乘法器具有27x27无正负号乘法器的原生操作模式,所述27x27无正负号乘法器进一步可配置以处理带正负号输入,且进一步可配置以变为四个8x8乘法器、两个16x16单指令多数据(simd)乘法器、一个32x32乘法器及一个54x54乘法器;乘法器移位器及组合器网络,其耦合到所述可配置乘法器,所述乘法器移位器及组合器网络包括:移位器电路;多个串联耦合的加法器电路,其耦合到所述移位器电路;及多个直接连接,其将所述乘法器移位器及组合器网络耦合到一或多个邻近可重新配置算术电路以执行单循环32x32及54x54乘法、单精度/24x24乘法以及单指令多数据(simd)点乘积;单时钟循环固定点及浮点进位保留累加器电路;以及多个控制逻辑电路,其耦合到所述乘法器移位器及组合器网络且耦合到所述累加器电路,所述多个控制逻辑电路包括:比较电路,其适于从输入数据流提取最小或最大数据值、从所述输入数据流提取索引,且进一步适于比较两个输入数据流、交换两个输入数据流以将所述两个输入数据流的最小值置于第一输出上且将所述两个输入数据流的最大值置于第二输出上,以执行数据导向、产生地址序列,以及产生针对等于、大于及小于的比较旗标;布尔逻辑电路,其包括适于对32位整数输入执行and、nand、or、nor、xor、xnor及选择器操作的and-or-invert逻辑单元;z输入移位器,其适于将浮点z输入值移位成基数-32指数值、移位32位的倍数以匹配乘法器总和输出的缩放,且具有多个整数模式,在所述多个整数模式中,所述z输入移位器用作具有64位、32位、2x16位及4x8位移位或旋转模式的移位器或旋转器;指数逻辑电路;以及相加、饱和及舍入电路。
29.还揭示一种可重新配置处理器电路,其中代表性实施例包括:第一互连网络;处理器,其耦合到所述第一互连网络;及布置成阵列的多个计算核心,所述多个计算核心耦合到所述第一互连网络且耦合到第二互连网络,所述第二互连网络直接耦合所述多个计算核心中的邻近计算核心,每一计算核心包括:存储器电路;以及可重新配置算术电路,其包括:输入重新排序队列;乘法器移位器及组合器网络,其耦合到所述输入重新排序队列;累加器电路;及至少一个控制逻辑电路,其耦合到所述乘法器移位器及组合器网络且耦合到所述累加器电路。
30.在代表性实施例中,所述可重新配置算术电路可进一步包括:可配置乘法器,其具有多种操作模式,所述可配置乘法器耦合到所述输入重新排序队列且耦合到所述乘法器移位器及组合器网络,所述多种操作模式包括固定点操作模式及浮点操作,其中所述可配置乘法器具有27x27无正负号乘法器的原生操作模式,所述27x27无正负号乘法器进一步可配
置以处理带正负号输入。
31.在代表性实施例中,所述可重新配置处理器电路可进一步包括:第三互连网络,其选择性地将乘法器移位器及组合器网络耦合到一或多个邻近可重新配置算术电路以执行单循环32x32及54x54乘法、单精度24x24乘法以及单指令多数据(simd)点乘积。
32.在代表性实施例中,所述可配置乘法器进一步可配置以变为四个8x8乘法器、两个16x16单指令多数据(simd)乘法器、一个32x32乘法器及一个54x54乘法器。
33.在代表性实施例中,所述多个计算核心中的每一计算核心可进一步包括:多个输入多路复用器,其耦合到所述可重新配置算术电路、耦合到所述第一互连网络且耦合到所述第二互连网络;多个输入寄存器,每一输入寄存器耦合到所述多个输入多路复用器中的对应输入多路复用器;多个输出多路复用器,其耦合到所述可重新配置算术电路,每一输出多路复用器耦合到所述多个输入寄存器中的对应输入寄存器;及多个输出寄存器,每一输出寄存器耦合到所述多个输出多路复用器中的对应输出多路复用器、耦合到所述第一互连网络且耦合到所述第二互连网络。
34.在代表性实施例中,所述多个计算核心中的每一计算核心可进一步包括:多个零解压缩电路,每一零解压缩电路耦合到所述多个输入多路复用器中的对应输入多路复用器;及多个零压缩电路,每一零压缩电路耦合到所述多个输出多路复用器中的对应输出多路复用器。
35.在代表性实施例中,在日期有效负载中具有全零的若干个数据包被编码为在具有非零数据有效负载的下一数据包中的后缀。
36.在代表性实施例中,所述第一互连网络可为具有fat树配置的分层式网络且包括多个数据路由电路。
37.在代表性实施例中,所述可重新配置处理器电路适于使用所述处理器及所述多个计算核心来执行任何及所有risc-v处理器指令。
38.在另一代表性实施例中,一种可重新配置处理器电路可包括:第一互连网络;处理器,其耦合到所述第一互连网络;及布置成阵列的多个计算核心,所述多个计算核心耦合到所述第一互连网络且耦合到所述第二互连网络,所述第二互连网络直接耦合所述多个计算核心中的邻近计算核心,每一计算核心包括:存储器电路;以及可重新配置算术电路,其包括:输入重新排序队列,其适于存储多个输入,所述输入重新排序队列进一步包括输入重新排序逻辑电路系统,所述输入重新排序逻辑电路系统适于对所述多个计算核心的所述可重新配置算术电路及邻近可重新配置算术电路的所述多个输入的序列进行重新排序;可配置乘法器,其具有多种操作模式,所述可配置乘法器耦合到所述输入重新排序队列,所述多种操作模式包括固定点操作模式及浮点操作,其中所述可配置乘法器具有27x27无正负号乘法器的原生操作模式,所述27x27无正负号乘法器进一步可配置以处理带正负号输入,且其中所述可配置乘法器进一步可配置以变为四个8x8乘法器、两个16x16单指令多数据(simd)乘法器、一个32x32乘法器及一个54x54乘法器;乘法器移位器及组合器网络,其耦合到所述可配置乘法器,所述乘法器移位器及组合器网络包括:移位器电路;及多个串联耦合的加法器电路,其耦合到所述移位器电路;累加器电路;至少一个控制逻辑电路,其耦合到所述乘法器移位器及组合器网络且耦合到所述累加器电路;以及输出重新排序队列,其经耦合以对来自所述多个计算核心的所述可重新配置算术电路及所述邻近可重新配置算术电路的
输出进行接收及重新排序。
39.在另一代表性实施例中,一种可重新配置处理器电路可包括:第一互连网络;处理器,其耦合到所述第一互连网络;及布置成阵列的多个计算核心,所述多个计算核心耦合到所述第一互连网络且耦合到第二互连网络,所述第二互连网络直接耦合所述多个计算核心中的邻近计算核心,每一计算核心包括:多个输入多路复用器,其耦合到所述第一互连网络且耦合到所述第二互连网络;多个输入寄存器,每一输入寄存器耦合到所述多个输入多路复用器中的对应输入多路复用器;多个输出多路复用器,每一输出多路复用器耦合到所述多个输入寄存器中的对应输入寄存器;多个输出寄存器,每一输出寄存器耦合到所述多个输出多路复用器中的对应输出多路复用器、耦合到所述第一互连网络且耦合到所述第二互连网络;多个零解压缩电路,每一零解压缩电路耦合到所述多个输入多路复用器中的对应输入多路复用器;多个零压缩电路,每一零压缩电路耦合到所述多个输出多路复用器中的对应输出多路复用器;存储器电路;以及可重新配置算术电路,其耦合到所述存储器电路、耦合到所述多个输入寄存器且耦合到所述多个输出多路复用器,所述可重新配置算术电路包括:输入重新排序队列,其适于存储多个输入,所述输入重新排序队列进一步包括输入重新排序逻辑电路系统,所述输入重新排序逻辑电路系统适于对所述多个计算核心的所述可重新配置算术电路及邻近可重新配置算术电路的所述多个输入的序列进行重新排序;可配置乘法器,其具有多种操作模式,所述可配置乘法器耦合到所述输入重新排序队列,所述多种操作模式包括固定点操作模式及浮点操作,其中所述可配置乘法器具有27x27无正负号乘法器的原生操作模式,所述27x27无正负号乘法器进一步可配置以处理带正负号输入,且其中所述可配置乘法器进一步可配置以变为四个8x8乘法器、两个16x16单指令多数据(simd)乘法器、一个32x32乘法器及一个54x54乘法器;乘法器移位器及组合器网络,其耦合到所述可配置乘法器,所述乘法器移位器及组合器网络包括:移位器电路;及多个串联耦合的加法器电路,其耦合到所述移位器电路;累加器电路;至少一个控制逻辑电路,其耦合到所述乘法器移位器及组合器网络且耦合到所述累加器电路;输出重新排序队列,其经耦合以对来自所述多个计算核心的所述可重新配置算术电路及所述邻近可重新配置算术电路的输出进行接收及重新排序;以及第三互连网络,其选择性地将所述乘法器移位器及组合器网络耦合到一或多个邻近可重新配置算术电路以执行单循环32x32及54x54乘法、单精度24x24乘法以及单指令多数据(simd)点乘积。
40.依据本发明的以下详细说明及其实施例、依据权利要求书且依据附图将容易明了本发明的众多其它优点及特征。
附图说明
41.当结合附图进行考虑时,在参考以下揭示内容后将即刻容易明了本发明的目的、特征及优点,其中在各种视图中使用相似的参考编号来识别相同组件,且其中在各种视图中利用具有字母字符的参考编号来识别选定组件实施例的额外类型、例示或变体,其中:
42.图(figure或“fig.”)1是具有分形核心阵列的可重新配置处理器的框图。
43.图(figure或“fig.”)2是分形核心及rae电路的高级框图。
44.图(figure或“fig.”)3是分形核心阵列的框图,其展示邻近分形核心之间的多个直接连接。
45.图(figures或“figs.”)4、4a及4b(其中图4划分成图4a及4b,且图4、4a及4b共同称为图4)是分形核心的详细框图。
46.图(figure或“fig.”)5是图解说明可重新配置算术引擎(“rae”)电路的示范性或代表性第一实施例的框图。
47.图(figure或“fig.”)5a是图解说明rae电路的示范性或代表性第二实施例的高级框图。
48.图(figure或“fig.”)6是图解说明具有专用连接的多个示范性或代表性rae电路的高级框图。
49.图(figure或“fig.”)7图解说明连接为24x24的原生27x27配置中的rae乘法器。
50.图(figure或“fig.”)8图解说明使用32x32乘法器作为两个16x16 simd乘法器。
51.图(figure或“fig.”)9图解说明针对两个16x16 simd乘法器修改27x27乘法器。
52.图(figure或“fig.”)10图解说明具有可移动部分乘积的乘法器的结构。
53.图(figure或“fig.”)11图解说明使用经修剪32x32乘法器作为四个8x8 simd乘法器。
54.图(figure或“fig.”)12图解说明由两个rae乘法器的经移位总和形成的32x32相乘,所述两个rae乘法器中的一者已被修改。
55.图(figure或“fig.”)13图解说明由四个未经修改rae乘法器的经移位总和形成的54x54相乘。
56.图(figure或“fig.”)14图解说明用于使用无正负号乘法器的带正负号乘法的带正负号校正电路。
57.图(figure或“fig.”)15图解说明针对每一带正负号整数模式的输入、正负号校正与输出的对准。
58.图(figure或“fig.”)16图解说明还可执行选择性取反的带正负号校正电路。
59.图(figure或“fig.”)17是具有经修剪32位simd扩展的27x27乘法器的点图。
60.图(figure或“fig.”)18是具有第一层达达(dadda)加法器的经重新布置点图。
61.图(figure或“fig.”)19是用于灵活乘法器的第二层达达树的点图。
62.图(figure或“fig.”)20是用于灵活乘法器的第三层达达树的点图。
63.图(figure或“fig.”)21是用于灵活乘法器的达达树的其余层的点图。
64.图(figure或“fig.”)22图解说明4:2压缩器及层5分段的等效电路,其展示在一个阶段中使用4:2压缩器来执行层5及层6。
65.图(figure或“fig.”)23是后乘(post-multiply)乘法器移位器-组合器网络310的逻辑及框图。
66.图(figure或“fig.”)24图解说明按模式的乘法器乘积与累加器对准。
67.图(figure或“fig.”)25是图解说明按模式的后乘移位的图表。
68.图(figure或“fig.”)26是图解说明通道移位及第一压缩器电路细节的框图。
69.图(figure或“fig.”)27是图解说明为4:2压缩器添加的用于通道进位阻塞的逻辑的框图。
70.图(figure或“fig.”)28是图解说明乘法器移位-组合器网络的第一替代实施例的框图。
71.图(figure或“fig.”)29是图解说明乘法器移位-组合器网络的第二替代实施例的框图。
72.图(figure或“fig.”)30是图解说明z输入旋转/移位逻辑数据路径的框图。
73.图(figure或“fig.”)31是图解说明按模式的z输入移位器配置的图表。
74.图(figure或“fig.”)32是图解说明移位网络构造的框图。
75.图(figure或“fig.”)33图解说明针对z输入逻辑的按模式的位对准。
76.图(figure或“fig.”)34是图解说明从ieee单精度到基数32的浮点格式转换的框图。
77.图(figure或“fig.”)35是图解说明指数逻辑电路的框图。
78.图(figure或“fig.”)36是图解说明用于z移位器及乘法器移位器-组合器网络的超量移位逻辑的框图。
79.图(figure或“fig.”)37是图解说明具有2个输入x扇出-2(2x2)门的3位索引到8位条电路的框图。1是缓冲器。
80.图(figure或“fig.”)38是图解说明用于使用全加法器将条的xor差转换为索引的记数电路的框图。
81.图(figure或“fig.”)39是图解说明具有2个输入x扇出-2(2x2)门的8位条到3位索引电路的框图。
82.图(figure或“fig.”)40是图解说明乘法器及移位/组合器指数逻辑的框图。
83.图(figure或“fig.”)41是图解说明z输入指数逻辑的框图。
84.图(figure或“fig.”)42是图解说明累加器的框图。
85.图(figure或“fig.”)43是图解说明累加器的电路图。
86.图(figure或“fig.”)44是图解说明前导正负号及n*32移位电路的电路图。
87.图(figure或“fig.”)45是图解说明具有深度log2(n)的记数到条电路(tally to bar circuit)结构的电路图,其中针对simd拆分添加逻辑。
88.图(figure或“fig.”)46是图解说明布尔逻辑级的电路图。
89.图(figure或“fig.”)47是图解说明最小值/最大值排序及比较电路的高级电路图及框图。
90.图(figure或“fig.”)48是图解说明最小值/最大值排序及比较电路的比较器的详细电路图及框图。
91.图(figure或“fig.”)49是图解说明解码器电路的电路图。
92.图(figure或“fig.”)50是图解说明使用比较电路的具有索引应用的流式传输最小值/最大值的详细电路图及框图。
93.图(figure或“fig.”)51是图解说明使用比较电路的两输入排序应用的详细电路图及框图。
94.图(figure或“fig.”)52是图解说明使用比较电路的数据替代应用的详细电路图及框图。
95.图(figure或“fig.”)53是图解说明使用比较电路的具有滞后应用的阈值的详细电路图及框图。
96.图(figure或“fig.”)54是图解说明使用比较电路的旗标触发事件应用的详细电
路图及框图。
97.图(figure或“fig.”)55是图解说明使用比较电路的阈值触发事件应用的详细电路图及框图。
98.图(figure或“fig.”)56是图解说明使用比较电路的数据导向应用的详细电路图及框图。
99.图(figure或“fig.”)57是图解说明使用比较电路的模n计数应用的详细电路图及框图。
100.图(figure或“fig.”)58是图解说明转角地址的推导的框图。
101.图(figure或“fig.”)59是图解说明fft位反向转角地址的推导的框图。
102.图(figure或“fig.”)60是图解说明用于rae输入重新排序队列的逻辑电路结构的详细电路图及框图。
103.图(figure或“fig.”)61是图解说明用于输入及输出重新排序队列的定序器逻辑电路结构的详细电路图及框图。
104.图(figure或“fig.”)62图解说明使用混合基数算法的fft组合。
105.图(figure或“fig.”)63是图解说明用于执行基数2fft内核的rae对的详细电路图及框图。
106.图(figure或“fig.”)64是图解说明经配置以用于完整旋转器的rae 300对的详细电路图及框图。
107.图(figure或“fig.”)65是图解说明用于执行基数4fft(蝶形)内核的rae电路四元组的详细电路图及框图。
108.图(figure或“fig.”)66是图解说明用于执行fft内核的多个rae 300级联对的详细电路图及框图。
109.图(figure或“fig.”)67是图解说明字符串匹配使用情形的图式。
110.图(figure或“fig.”)68是与可重新配置处理器一起利用的代表性数据包的图式。
111.图(figure或“fig.”)69是用于数据包中的代表性数据有效负载类型的图式。
112.图(figure或“fig.”)70是路由控制器的框图及电路图。
113.图(figure或“fig.”)71是后缀控制电路的框图。
114.图(figure或“fig.”)72是零压缩电路的框图及电路图。
115.图(figure或“fig.”)73是代表性零压缩数据包序列的图式。
116.图(figure或“fig.”)74是零解压缩电路的框图及电路图。
具体实施方式
117.尽管本发明容许许多不同形式的实施例,但已在图式中展示并将在本文中详细地描述本发明的特定示范性实施例,应理解,本公开应视为本发明的原理的例示且并不打算将本发明限制于所图解说明的特定实施例。就此来说,在详细解释与本发明一致的至少一个实施例之前,应理解,本发明在其应用方面不限于在上文及下文中所陈述、在图式中所图解说明或如实例中所描述的构造细节及组件布置。与本发明一致的方法及设备能够用于其它实施例且能够以各种方式来实践及执行。而且,应理解,本文中所采用的词组及术语以及下文所包含的摘要是出于说明目的且不应视为限制性的。
118.1.可重新配置处理器100
119.图1是具有分形核心200的阵列的可重新配置处理器100的框图。图2是分形核心200及rae电路300的高级框图。图3是分形核心200的阵列的框图,其展示在邻近计算核心200之间形成多个直接连接的第二互连网络220。图4是分形核心200的详细框图。参考图1到4,可重新配置处理器100(例如集成电路或芯片)包括处理器电路130,及多个计算(或“分形”)核心200(即,计算核心电路系统,其可在图中缩写为“fc”且还在本文中称为“分形核心”200)。多个计算(分形)核心200通常布置成阵列且经由第一互连网络120耦合到处理器电路130,所述第一互连网络具有多个路由(交换)电路225及其它连接,通常为分层式的(例如实施为fat树(举例来说且无限制地),且所有此类互连网络被视为等效的并在本公开的范围内)。还图解说明第二互连网络220,其在邻近(例如,最近邻)计算核心200的输入及输出之间及当中提供多个直接、未路由或未交换的连接,所述连接图解说明为第二互连网络220的北(n)、南(s)、东(e)及西(w)连接。第一互连网络120具有用于在计算核心200的阵列当中进行数据包路由的多个层级,而第二互连网络220在各种计算核心200之间及当中提供多个直接连接,且在下文更详细地描述。下文参考图68及69图解说明及论述各种数据包(包含后缀的位的位置)的格式。
120.处理器电路130可被实施或体现为通用处理器(例如,risc-v处理器)或可受到更多限制且可包括控制逻辑电路系统,例如用于处理c代码的各种计算逻辑及状态机。举例来说,处理器电路130可被实施为计算逻辑及一或多个状态机(例如,高度“精简(stripped down)”的risc-v处理器,其中已省略或移除例如乘法器及/或除法器等组件)。处理器电路130通常包含程序计数器(“pc”)160、指令解码器165以及用于处理c代码的各种状态机及其它控制逻辑电路,所述c代码不被分形核心200处理(例如递归c代码)。计算核心200被称为“分形”核心,这是因为其为自相似的,且可重新配置处理器100已被“分解”成多个分形计算核心200,所述多个分形计算核心共同地不仅用作整体可重新配置处理器,而且还用作大规模并行可重新配置加速器集成电路。可重新配置处理器100还包含用于芯片外及其它网络通信的输入/输出接口140、任选算术逻辑单元(“alu”)135、任选存储器控制器170及任选存储器(及/或寄存器)155。任选存储器控制器170及/或任选存储器(及/或寄存器)155还可提供为存储器子系统175(图3中所图解说明)。举例来说,可重新配置处理器100不仅可完全替换risc-v处理器,还可提供大规模计算加速。
121.可重新配置处理器100针对数学密集型应用(举例来说且无限制地,例如涉及人工智能、神经网络计算、数字货币、加密、解密、区块链、快速傅里叶变换(fft)的计算及机器学习)提供高性能及能量高效的解决方案。
122.另外,可重新配置处理器100能够针对这些各种应用中的任一者而被配置,下文更详细地图解说明及论述数个此类实例。此可重新配置处理器100可易于按比例调整(例如按比例调整到数百万个计算核心200)、具有低等待时间、为计算及能量高效的、能够实时地处理流式传输数据、为可重新配置的以优化用于选定应用的计算硬件,并且能够进行大规模并行处理。举例来说,在单个芯片上,多个可重新配置处理器100还可使用互连网络120进行排列及连接,以提供每芯片数百到数千个计算核心200。多个此类芯片又可在电路板上进行排列及连接,从而产生每板数千到数百万个计算核心200。任何选定数目个计算核心200可在可重新配置处理器100中实施,且任何数目个可重新配置处理器100可在单个集成电路上
实施,并且任何数目个此类集成电路可在电路板上实施。如此,可重新配置处理器100具有可按比例调整到任何选定程度(然而,受其它约束,举例来说且无限制地,例如路由及热耗散)的计算核心200的阵列。在代表性实施例(例如图3中所图解说明)中,举例来说且无限制地,针对每一可重新配置处理器100,每处理器电路130实施十六个计算核心200,可重新配置处理器100又平铺在ic上。
123.2.计算核心200
124.参考图2,计算核心200包括被称为可重新配置算术引擎300或可重新配置算术引擎电路300(在本文中称为“rae”300或rae电路300)的可重新配置算术电路300。rae电路300耦合到第一多个输入多路复用器205(一般通过rae输入多路复用器105)且耦合到多个输出多路复用器110。第一多个输入多路复用器205及多个输出多路复用器110耦合到第一互连网络120且耦合到第二互连网络220。rae电路300还耦合到存储器150,且耦合到任选控制接口电路250。全部举例来说且无限制地,控制接口电路250作为选项可包含例如用于存储用于rae电路300的配置及/或指令的配置存储装置或存储器180,还可包含任选寄存器、任选程序计数器及任选指令解码器,且作为另一选项可包含用于处理c代码的各种状态机及其它控制逻辑电路。存储器150可存储操作数数据,且任选地还可存储供由rae电路300执行的用于计算核心200的配置或其它指令。替代地,供由rae 300执行的用于计算核心200的配置或其它指令可存储于寄存器(例如,配置存储装置或存储器180)中,所述寄存器可包含于控制接口电路250中。在代表性实施例中,作为选项,配置存储装置或存储器180分布在rae电路300内,如下文所论述。计算核心200还可包含参考图4所论述的其它组件。在代表性实施例中,举例来说且无限制地,存储器150使用sram来实施。下文参考图70图解说明及论述用于通过输入多路复用器205及输出多路复用器110而提供数据选择的路由控制器820的代表性实施例。
125.rae电路300是主要经设计以用于处理具有浮点或整数算术及布尔逻辑(包含多种整数及浮点模式,包含simd模式)的流式传输数据的数据流架构,并且将在接收到相关数据后即刻执行。所述rae电路扩增有可设定异常旗标的比较逻辑、用于对数据流进行门控,或基于比较结果而替代数据。另外,如下文更详细地论述,rae电路300可利用特殊专用可选择的有线连接(总线)360、445成对地、以四个为一群组(举例来说且无限制地,图6中所图解说明,2个行、2个列)及以多于四个rae电路300为一群组进行分组,所述特殊专用可选择的有线连接(总线)连接(乘法器移位器-组合器网络310的)乘法器加法器树以允许组合群组中的rae电路300来用于更大的加法器、复数相乘及一般乘积总和用途(举例来说且无限制地)。本文中所提及的所有各种总线可被视为是“n”位宽(用于传输数据包或控制字的对应可变位数),如对于特定总线或互连网络120、220、295可为必要或期望的。
126.在多个rae电路300之间及当中的这些专用可选择的有线连接(总线)360、445形成可配置第三互连网络295以将多个rae电路300合并到rae电路对400及rae电路四元组450中来执行双精度相乘-相加、相乘-累加及逻辑操作(例如使用四个连结的rae电路300作为单精度单循环复数相乘),或执行多个fft蝶形操作,或者用于指数解析(举例来说且无限制地),其中下文描述多个其它应用。下文参考图2、5及6更详细地论述rae电路300。
127.参考图4,计算核心200包括rae电路300(在图4中以简化形式图解说明)及存储器150,且一般还包括输入多路复用器205(及/或rae输入多路复用器105)、输出多路复用器
110及任选地控制接口250(其还可具有上文所提到的配置存储装置或存储器180及其它组件(例如指令解码器))。并未在图4中单独图解说明rae电路300的后缀(及/或条件旗标)输入380及后缀(及/或条件旗标)输出405(图5及5a中所图解说明)。在代表性实施例中,输入多路复用器205包括经耦合以从第一互连网络120及第二互连网络220接收输入的第一输入多路复用器205a、第二输入多路复用器205b及第三输入多路复用器205c。因此,每一计算核心200经耦合以从每一相邻的计算核心200(经由第二互连网络220的直接连接)且从不相邻的计算核心200、处理器电路130及其它组件(经由第一互连网络120)(其全部分别馈送到第一输入多路复用器205a、第二输入多路复用器205b及第三输入多路复用器205c中的每一者中)接收数据。可从配置及/或指令(例如可存储于配置存储装置或存储器180中的配置)提供对第一输入多路复用器205a、第二输入多路复用器205b及第三输入多路复用器205c中的每一者的动态选择控制(未单独图解说明)。来自第一输入多路复用器205a、第二输入多路复用器205b及第三输入多路复用器205c中的每一者的输出可在被提供到其它组件(例如存储器150、rae电路300的第二多个(rae)输入多路复用器105,或输出多路复用器110)之前(例如)分别使用对应输入寄存器230(图解说明为输入寄存器230a、230b、230c)来进行寄存器分级,如图4中所图解说明。在代表性实施例中,输入寄存器230通常是双缓冲的。
128.在代表性实施例中,计算核心200还包括经耦合以从rae电路300、存储器150以及第一输入多路复用器205a、第二输入多路复用器205b及第三输入多路复用器205c接收输入并且向第一互连网络120及第二互连网络220提供输出的第一输出多路复用器110a、第二输出多路复用器110b及第三输出多路复用器110a。因此,每一计算核心200经耦合以向每一相邻的计算核心200(经由第二互连网络220的直接连接)且向不相邻的计算核心200及处理器电路130(经由第一互连网络120)(其全部分别从第一输出多路复用器110a、第二输出多路复用器110b及第三输出多路复用器110c中的每一者接收输入)提供数据。可从配置及/或指令(例如可存储于配置存储装置或存储器180中的配置)提供对第一输出多路复用器110a、第二输出多路复用器110b及第三输出多路复用器110c中的每一者的动态选择控制(未单独图解说明)。分别来自第一输出多路复用器110a、第二输出多路复用器110b及第三输出多路复用器110c中的每一者的输出还可在被提供到这些其它组件之前(例如)分别使用对应输出寄存器242(图解说明为输出寄存器242a、242b、242c)来进行寄存器分级,如图4中所图解说明。在代表性实施例中,输出寄存器242通常是双缓冲的。
129.在代表性实施例中,如图4中所图解说明,在计算核心200中存在多个单独且独立的数据路径,图解说明为第一(“左分配器”)数据路径240(沿着总线241延伸)、第二(“右分配器”)数据路径245(沿着总线243延伸)及第三(“聚合器”)数据路径255(沿着总线247延伸),每一数据路径(例如)通过可存储于配置存储装置或存储器180中的配置或指令而具有彼此单独且独立的控制。还应注意,在每一计算核心200内,这些数据路径中的每一者包含一方面分别在第一输入多路复用器205a、第二输入多路复用器205b及第三输入多路复用器205c中的每一者之间且另一方面分别在第一输出多路复用器110a、第二输出多路复用器110b及第三输出多路复用器110c中的每一者之间的一或多个传递连接。举例来说,来自第一输入多路复用器205a的数据可直接传递到分别第一输出多路复用器110a、第二输出多路复用器110b及第三输出多路复用器110c中的任一者或全部;来自第二输入多路复用器205b的数据可直接传递到分别第一输出多路复用器110a、第二输出多路复用器110b及第三输出
多路复用器110c中的任一者或全部;且来自第三输入多路复用器205c的数据可直接传递到分别第一输出多路复用器110a、第二输出多路复用器110b及第三输出多路复用器110c中的任一者或全部等。还在rae电路300内存在数个独立数据路径且在存储器150内存在另一独立数据路径。可并行地利用所有这些各种数据路径以用于同时地且彼此单独并独立地执行不同计算。在代表性实施例中,第三(“聚合器”)数据路径255用于聚合来自多个源的数据,(例如)以产生输出数据包流或使来自多个源的数据交错(举例来说且无限制地)。另外,可将来自第一数据路径240、第二数据路径245及第三数据路径255中的每一者或所述每一者内的数据提供到rae电路300(经由rae输入多路复用器105a、105b及105c)及存储器150中的每一者,且可将来自rae电路300及存储器150中的每一者的数据提供到第一数据路径240、第二数据路径245及第三数据路径255中的每一者。
130.还可将配置及程序(例如,配置、指令及指令序列)在本地(且单独并独立地)提供于计算核心200内,包含提供于存储器150内(例如,sram程序262),而非利用更集中的程序或配置存储(例如配置存储装置或存储器180)。举例来说,将程序存储装置(或存储器)264及266提供于第一数据路径240及第二数据路径245(以及任选地第三数据路径255(未单独图解说明))中的每一者中,从而为rae电路300、存储器150提供两个单独程序,且提供rae输入多路复用器105的输入选择。还举例来说,将数个输出程序存储装置(或存储器)272、274及276分别提供到第一输出多路复用器110a、第二输出多路复用器110b及第三输出多路复用器110c中的每一者,作为分别用于第一数据路径240、第二数据路径245及第三数据路径255中的每一者的配置或指令的一部分。第一数据路径240、第二数据路径245及第三数据路径255还可实施“零压缩”,其中数据流中相对较长的零字符串被编码以进行传输(并借此被压缩),而非直接传输。
131.经由rae输入多路复用器105a、105b及105c将来自存储器150、第一数据路径240、第二数据路径245及第三数据路径255中的任一者的输入数据提供到rae电路300,且更具体来说,分别提供到rae电路300的第一(“x”)输入365、第二(“y”)输入370及第三(“z”)输入375。来自rae电路300的输出结果经由第一(“x”)输出420、第二(“y”)输出415、第三(“z”)输出410而被提供到存储器150(经由总线303)、第一数据路径240、第二数据路径245及第三数据路径255,被提供到输出多路复用器110(经由总线303)并且还经由总线303且经由rae输入多路复用器105a、105b及105c而被反馈到各种rae输入365、370、375中的任一者中。来自rae电路300、第一数据路径240、第二数据路径245及第三数据路径255中的任一者的输入数据经由(rae存储器系统152的)存储器写入(存储或输入)多路复用器268(图解说明为存储器输入多路复用器268a及268b)及ram写入接口290而提供以用于存储到存储器150,且将通过rae电路300、第一数据路径240、第二数据路径245及第三数据路径255中的任一者从存储器150读取的数据可使用存储器读取(或加载)多路复用器287来选择并使用(rae存储器系统152的)ram读取接口297来提供(在总线301上),如所图解说明。rae存储器系统152还可任选地包含跟踪计数器292、写入指针存储装置294及读取指针存储装置296。
132.3.rae电路300、rae电路对400及rae电路四元组450。
133.参考图2、5及6,rae电路300包括输入重新排序队列350、乘法器移位器-组合器网络310(还被称为乘法器移位器及组合器网络310或移位器-组合器网络310)、累加器315及一或多个控制逻辑电路275。输入重新排序队列350耦合到数据输入(第一(“x”)输入365、第
二(“y”)输入370、第三(“z”)输入375)(并耦合到rae电路对400的邻近rae电路300的数据输入),且输入重新排序队列350耦合到乘法器移位器-组合器网络310并耦合到一或多个控制逻辑电路275,所述一或多个控制逻辑电路又耦合到累加器315。乘法器移位器-组合器网络310包括移位器电路425以及包括多个串联耦合的加法器(以进位保留配置)430、435、440的加法器树,且如此除了移位及加法之外还能够执行多种乘法模式(并且还用于计算单指令多数据(“simd”)点乘积)。在图5中所图解说明的代表性实施例中,额外(可配置)乘法器305可以并且一般包含于rae电路300中,作为单独组件或作为乘法器移位器-组合器网络310的一部分。乘法器移位器-组合器网络310还通过第三互连网络295的专用通信线路360、445(例如,接线)而耦合到(rae电路对400及rae电路四元组450的)邻近rae电路300的乘法器移位器-组合器网络310。
134.多个单独且独立的数据路径280、281、282、283用于rae电路300内,其中:第一数据路径280来自输入重新排序队列350通过乘法器移位器-组合器网络310;第二数据路径281及第三数据路径282来自输入重新排序队列350通过控制逻辑电路275;第四数据路径283来自控制逻辑电路275通过乘法器移位器-组合器网络310及累加器315;第五双向数据路径284在rae电路四元组450的其(第一)rae电路对400的第一rae电路300、第二rae电路300以及rae电路四元组450的另一(第二)rae电路对400的第三rae电路300的乘法器移位器-组合器网络310之间及当中通过第三互连网络295(通信线路360、445);通过在rae电路对400的邻近rae电路300之间及/或从rae电路对400的邻近rae电路300接收的额外输入通信线路395(图5中所图解说明)之间共享输入重新排序队列350而形成任选第六数据路径285;并且(图6中所图解说明),通过在rae电路对400的邻近rae电路300之间共享输出重新排序队列355而形成第七数据路径286。使用此多个单独且独立的数据路径,rae电路300的各种组件可各自单独且独立地执行不同计算、位操纵、逻辑功能等,从而提供对rae电路300内的任何及所有资源的显著利用。还应注意,可将来自输入重新排序队列350的输出(582、584、586)中的任一者提供到rae电路300的各种组件(除了图5中所图解说明的组件或代替所述组件)中的任一者。
135.图5是图解说明rae电路300的示范性或代表性第一实施例的框图。图5a是图解说明rae电路300a的示范性或代表性第二实施例的软件编程视图的经简化高级框图,且其用于图解说明输入重新排序队列350及输出重新排序队列355的额外位置或电路结构,并且图解说明来自后缀(及/或条件旗标)输入380及/或后缀控制电路390的后缀信息的分布。虽然未在图5a中图解说明,但并未在rae电路300a中消除或移除rae电路300的任何组件。rae电路300a是rae电路300的变体且仅关于如上文所论述的输入重新排序队列350及输出重新排序队列355的布置(电路位置)而与rae电路300不同,并且在其它方面实施为与rae电路300完全相同,具有相同组件及相同功能性。因此,除非另外指定,否则对rae电路300的任何参考意指并包含rae电路300a,且在本文中不另外单独地陈述rae电路300a。
136.参考图5及5a,rae电路300包括:输入重新排序队列350;乘法器移位器-组合器网络310(其可包含乘法器305);可配置(或灵活)乘法器305(具有多种可配置操作模式)(当不包含为乘法器移位器-组合器网络310的一部分时);累加器315;任选地输出重新排序队列355;及控制逻辑电路275,所述控制逻辑电路包括以下各项中的一或多者:(1)最小值/最大值排序及比较电路320(更一般来说还被称为“比较电路”320)(其中“min”在本文中是指“最
小值”且“max”在本文中是指“最大值”);(2)布尔逻辑电路325;(3)z输入移位器电路330;(4)指数逻辑电路335;(5)后缀控制电路390(当任选地包含于rae电路300中时);(6)最终相加、饱和及舍入电路340;及(7)任选地,位反向电路345。作为选项,rae电路300可另外包括各种数据导向组件,例如第一数据选择(导向)多路复用器387、第二数据选择(导向)多路复用器392及第三数据选择(导向)多路复用器397。第一多路复用器387、第二多路复用器392及第三多路复用器397使用配置及/或指令来配置以用于rae电路300内的数据路由选择。还如图4中所展示,rae电路300一般包含第一(“x”)输入365、第二(“y”)输入370、第三(“z”)输入375、后缀(及/或条件旗标)输入380以及第一(“x”)输出420、第二(“y”)输出415、第三(“z”)输出410及后缀(及/或条件旗标)输出405。乘法器移位器-组合器网络310包括移位器电路425(其还可执行单指令多数据(“simd”)点乘积)以及经串联耦合以形成加法器“树”的多个加法器430、435及440。乘法器移位器-组合器网络310还包含专用通信线路360及445,其中通信线路360可选择性地耦合或连接到一对rae电路300内的另一邻近rae电路300,且通信线路445可选择性地耦合或连接到rae电路四元组450中的另一邻近rae电路300,下文参考图6来图解说明及论述。
137.还应注意,包括控制逻辑电路275的电路320、325、330、335、340及345中的一或多者可以不同方式来组合或实施,且并非所有均需要包含于控制逻辑电路275中。举例来说且无限制地,比较电路320的排序还可在输入重新排序队列350或布尔逻辑电路325内执行;且位反向电路345的位反向还可由比较电路320、布尔逻辑电路325或输入重新排序队列350执行。
138.作为代表性实施例中的选项,rae电路300还耦合到控制接口电路250或上文所论述的其它配置及/或指令存储装置,以使各种组件接收配置、指令及/或其它控制字或位,并且为了清晰起见,未在图5中单独图解说明那些单独连接,应理解,乘法器305、乘法器移位组合器网络310、累加器315、最小值/最大值排序及比较电路320、布尔逻辑电路325、z移位器电路330、指数逻辑电路335、后缀控制电路390以及最终相加、饱和及舍入电路340、输入重新排序队列350、输出重新排序队列355及任选地,位反向电路345、第一多路复用器387、第二多路复用器392、第三多路复用器397以及其它多路复用器及可配置组件全部耦合到控制接口电路250或其它配置及/或指令存储装置以接收此类配置、指令及/或其它控制,(例如)来选择各种操作模式并在rae电路300内及rae电路300当中对数据进行路由。
139.在代表性实施例中,乘法器305实施为进位保留加法器(例如,包括移位寄存器及加法器电路,未针对乘法器305进行单独图解说明,但将与乘法器移位器-组合器网络310的移位器425及加法器电路430、435、440类似地或相同地体现),但可配置以具有固定点模式及浮点模式两者。各种不同配置是通过各种部分乘积的移动/重新布置来实现及图解说明的,然后使用如此项技术中已知或变为已知的任何类型的进位保留加法器将所述各种部分乘积相加在一起,所述进位保留加法器中的任一者及全部被视为等效的并在本公开的范围内。乘法器305具有“原生模式”作为27x27无正负号乘法器,具有扩展(经添加电路系统)以处理带正负号输入。乘法器305可配置且可重新配置以变为四个8x8或两个16x16 simd乘法器。这通过以下操作而实现:重新指派部分乘积中的一些部分乘积以将乘法器布置为经修剪32x32乘法器,其中移除非对角线部分乘积。乘法器305的第三配置重新布置部分乘积,使得经重新配置乘法器305可与原生模式乘法器305配对以使用两个rae电路300形成32x32乘
法器。
140.乘法器305后续接着乘法器移位器-组合器网络310,所述乘法器移位器-组合器网络对乘积(从乘法器305输出)进行移位以将浮点乘积转换为具有基数-32指数的系统(使用移位器425)。乘法器移位器-组合器网络310还能够对simd乘积进行求和以形成点乘积。此乘法器移位器-组合器网络310还将经按比例调整第三(z)输入加到所述乘积且可使用加法器430、435及440将来自一对中的另一rae电路300的乘积相加并对来自一对或rae电路四元组450的另一半的邻近rae电路300的乘积进行求和。通过移位器425完成32位的倍数的额外移位以便将z输入的按比例调整与来自rae电路四元组450中的其它rae电路300的输入匹配,以便在需要时对乘积进行求和。作为求和网络(或“加法器树”)的多个加法器430、435及440允许邻近rae电路300加入以执行单循环32x32及54x54相乘以及多达4项(针对simd模式,8项或16项)的单精度24x24及simd点乘积。
141.z输入移位器330对浮点z输入值进行移位以转换为具有基数-32指数的系统,且还视需要移位32位的倍数以匹配(乘法器移位器-组合器网络310的)乘法器总和输出的按比例调整。针对整数模式,z输入移位器电路330用作具有64、32、2x16及4x8位移位/旋转模式的移位器或旋转器。
142.累加器315实施为单时钟循环浮点累加器。累加器315支持针对单通道及两个浮点以及1、2或4通道整数变元的固定点及浮点相乘-累加。累加器315硬件是以进位保留格式的128位加法器(且可被体现为已知的进位保留累加器),具有用于128位及64位分段的额外浮点指数控制(4通道simd浮点在累加器315中被视为整数)。
143.布尔逻辑电路325包含系结到z输入的浮点对准移位网络的and-or-invert逻辑单元,以在z输入的移位/旋转之后对32位int输入执行and、nand、or、nor、xor、xnor及选择器操作。
144.最小值/最大值排序及比较电路320经设计以从输入流提取最小值或最大值以及索引,或者比较两个输入流,交换所述流以始终将一对中的最小值放在一个输出上且将最大值放在另一输出上(两变元排序)。最小值/最大值排序及比较电路320还可产生针对等于、大于及小于的比较旗标。此最小值/最大值排序及比较电路320支持simd操作,使得多个通道可被独立排序或从流中提取最小值或最大值。
145.举例来说且无限制地,使用输入重新排序队列350的输入重新排序允许对多达4个输入的历史进行重新定序并在x输入(365)与z输入(375)之间交换,以便对i及q或奇数/偶数样本进行去交错。额外逻辑选择x、y及z输入(365、370、375)的数据源以及x、y及z输出(420、415、410)的数据槽(sink)。还在电路中的关键位置处添加逻辑以任选地调整取反及绝对值函数的正负号位,并在y输入的输入选择器中添加逻辑以支持基于x正负号的条件相乘。输入重新排序队列350可位于输入(365、370、375、380)与rae电路300的其它组件之间(如图5中所图解说明),或可位于输入多路复用器105与输入(365、370、375、380)之间(如图5a中所图解说明)。输出重新排序队列355与输入重新排序队列350类似地实施,如下文更详细地论述。输出重新排序队列355可位于输出多路复用器110与输出(405、410、415、420)之间(如图5中所图解说明),或可位于输出(405、410、415、420)与rae电路300的其它组件之间(如图5a中所图解说明)。输入重新排序队列350及输出重新排序队列355通常在rae电路对400的邻近rae电路300之间被共享。尽管将输出重新排序队列355图解说明为仅共享x输出
420,但在另一代表性实施例,所有x输出420、y输出415及z输出410还可使用输出重新排序队列355来进行共享。
146.后缀控制电路390用于:(1)应用中的编程及控制(例如条件、分支等);及(2)无损零压缩及解压缩。一些算法产生大量的零数据值。举例来说且无限制地,这些可来自神经网络中的relu操作或由于稀疏矩阵操作。将数字乘以零或将零加到累加值基本上是无用的操作。类似地,在计算核心200处理元件之间发送零值会浪费带宽及功率。作为选项,代表性实施例(计算核心200及/或rae电路300)可包含后缀控制电路390,除了一般利用后缀位来处置各种旗标(例如条件旗标)或其它条件之外,所述后缀控制电路还具有通过消除数据路径中的零而对数据传送进行压缩及解压缩的能力。在下文更详细地论述后缀控制电路390。
147.另外,如下文更详细地论述,后缀控制电路390还可在计算核心200中以分布式方式实施,例如包含零压缩(使用零压缩电路800)作为通过输出多路复用器110输出数据的一部分以及零解压缩(使用零解压缩电路805)作为通过输入多路复用器205输入数据的一部分(举例来说且无限制地)。
148.图6是图解说明多个示范性或代表性rae电路300的高级框图,所述多个示范性或代表性rae电路具有第三互连网络295的专用连接360、445,从而形成rae电路“四元组”450以及图解说明为第一rae电路对400a及第二rae电路对400b(其一起形成rae电路四元组450)的两个rae电路300对400。四个相邻的rae电路300(在2个行、2个列中)通过第三互连网络295的专用接线360、445而连结以允许所述四个相邻的rae电路合并为rae电路四元组450来执行双精度相乘-相加、相乘-累加及逻辑操作。所述合并还含有用以将四个经连结rae电路300用作单精度单循环复数相乘或fft蝶形的连接、用于指数解析以及用于基于相邻rae电路300的正负号的取反的导线。举例来说且无限制地,rae电路对400及rae电路四元组450配置通过以下操作而实现:(例如)通过使用具有选择(“sel”)信号381的一或多个多路复用器383及/或具有启用(“en”)信号389的所图解说明and门385而在第三互连网络295的专用接线360、445之间及当中进行选择。
149.在代表性实施例中,作为实例,rae电路300具有三个数据路径输入、三个数据路径输出及用于设定rae 300功能的控制接口250。在组成rae电路四元组450的四个rae电路300之间还存在专用辅助数据路径以及第三互连网络295的控制连接360、445。每一数据输入及输出包括32位数据字、单个位数据有效(axi-4流tvalid)及将用于标记集合的第一或最后样本(初始化累加器、完成集合的总和或最大值等)的单个位标记。作为选项,就绪信号可作为输入接口上的流控制而输出,并且是输出接口上的输入以停止操作。
150.在代表性实施例中,x输入(365)及z输入(375)各自具有4-深度重新排序队列,所述4-深度重新排序队列可被绕过、用于可通过多达4个32位常数值进行定序的一组常数寄存器,或被编程为重新定序输入数据。x及z输入重新排序队列350包含选择多路复用器,所述选择多路复用器还可选择相反输入(x及z各自在来自z的4个寄存器及来自x的4个寄存器或者旁路之间进行选择)。在代表性实施例中,输入重新排序队列350准许对多达4个样本进行iq交错/去交错、fft及复数相乘重新排序。在代表性实施例中,作为选项,y输入370不具有去往另一输入的交叉连接。在使用之前经由输入370而加载常数。y输入旁路选择可通过x输入的正负号来控制以使条件被乘数在y输入与常数值(或多达4个经定序常数值)之间进行选择。每一rae电路300处的输出还具有4深度输出重新排序队列355,所述4深度输出重新
排序队列可对来自一对中的两个rae电路300中的任一者的z输出的4个延迟抽头中的任一者进行选择及定序。此重新排序队列与每一rae电路300的输入处的重新排序队列类似地实施,如下文更详细地论述。
151.举例来说且无限制地,rae电路300以数种模式进行操作,例如操作为alu及许多额外功能。这些包含若干个浮点及整数算术模式、逻辑操纵模式(布尔逻辑及移位/旋转)、条件操作以及格式转换。每一rae电路四元组450然后有效地含有可被独立使用或可使用专用资源连结在一起的4个alu。单个alu具有管线式融合相乘-累加。基本乘法器是27x27乘法器。部分乘积中的一些部分乘积具有经门控输入及/或经求和输出,所述经门控输入及/或经求和输出被路由到归约树中的两个权重以将乘法器305重新配置为:(1)24x24相乘,通过将每一输入的3个最高有效位归零;(2)l形部分乘积,以在配对(加到)作为24x24乘法器的第二乘法器集时,完成32x32乘法器,且对两个乘法器305的输出进行求和以实现由两个乘法器构建的复合32x32乘法器;及(3)“经修剪32x32”,其中仅存在在对角线上形成两个16x16乘法器的部分,以用于进行simd乘法。
152.单个rae电路300可进行以下操作:
153.1.一个ieee单精度或整数,每循环多达27x27相乘(管线式);
154.2.每循环两个并行ieee半精度、bfloat16或int16整数相乘(管线式);
155.3.每循环四个并行ieee四分之一精度或int8(管线式);
156.4.每循环对两个并行ieee半精度、bfloat16或int16相乘的求和(管线式);
157.5.每循环对四个并行ieee四分之一精度或int8相乘的求和(管线式);
158.6.每循环一个四分之一精度或int8复数相乘(管线式)-两个复数输入一个复数输出;
159.7.与以上功能中的任何者的融合相加;
160.8. 4个循环内一个ieee双精度相乘;
161.9.以上各项中的任何者的累加;
162.10.任何位数的64、32、2x16或4x8位移位;
163.11.任何位数的64、32、2x16或4x8位旋转;
164.12. 32位逐位布尔逻辑;及
165.13.比较流中的最小值或最大值,2操作数排序。
166.两个邻近经连结rae电路300可一起另外执行:
167.1.每循环一个int32相乘;
168.2.在4循环序列中的一个int64相乘(使用累加器来添加4个32x32部分);
169.3.每循环对两个ieee单精度或两个int24相乘的求和;
170.4.每循环对四个并行ieee半精度、bfloat16或int16相乘的求和(管线式);
171.5.每循环对八个并行ieee四分之一精度或int8相乘的求和(管线式);
172.6.每循环一个半精度或int16复数相乘(管线式)-两个复数输入一个复数输出、4个相乘及两个相加;
173.7.与以上功能中的任何者的融合相加;及
174.8.以上各项中的任何者的累加。
175.rae电路300算术在内部以乘法器输出宽度的精度工作或更好地针对所有模式工
作,以实现“融合相乘-相加”或“融合相乘-累加”功能。舍入发生在累加器/加法器最后阶段且应根据ieee-754(2008)“舍入到最接近的偶数”舍入模式。rae电路300既不产生也不处理浮点异常。比较逻辑可用于检测及标记传入数据中的浮点异常(无穷大及nan),且当这些条件很重要时,所述旗标可用于以额外rae电路300为代价来处置异常。在rae电路300中不存在用于处置异常的专用逻辑。非正规数被视为零:当在输入上存在零指数时,所述输入被解释为零,而不管尾数的值如何。
176.最终相加、饱和及舍入电路340检测整数溢出且用具有与在无溢出的情况下输出相同的正负号的最大值来替换输出。溢出检测需要内部数据路径足够宽以无错误地容纳溢出,且然后在输出级中感测溢出来以饱和值替换输出。
177.后缀(及/或条件旗标)输出405利用来自由配置设定的内部源的选择器来提供。举例来说,条件源可包含整数溢出、指数溢出、非零指数下溢、比较块旗标、乘法器乘积正负号、z移位器输出正负号及累加器正负号。选定条件旗标具有适当的管线延迟寄存器以匹配相关联输出的管线延迟。条件旗标输出接线到同一四元组中的其它rae,并接线到同一四元组中的fc定序器以及相邻四元组中的定序器。除了数据输入之外,还可提供可来自另一rae电路300或另一系统组件的后缀(及/或条件旗标)输入380。后缀(及/或条件旗标)输入380可控制以下各项中的任一者:举例来说,乘法器输出的取反或归零、z输入移位逻辑输出的取反或归零、比较计数器重新加载/复位,及累加器初始化。
178.再次参考图6,rae电路300可被分组成rae电路对400,所述rae电路对进一步被分组成成对的对,称为rae电路四元组450。一对rae电路300经设计以用作32x32相乘或单循环乘积总和(还用于半复数乘法器)。rae电路四元组450经设计以将四个27x27乘法器组合成54x54单循环相乘以支持双精度浮点。紧密耦合包含专用接线360、445,以在四个rae电路300当中共享乘积的预累加器总和及指数信息。所述紧密耦合还包含额外专用输入接线(未单独图解说明),以在四个rae电路300当中共享输入,且用于共享条件旗标以支持例如cordic及牛顿-拉夫森(newton-rhapson)等条件算法。另外,在代表性实施例中,rae电路对400的邻近rae电路300还可共享输入重新排序队列350及输出重新排序队列355,从而允许分别对输入及输出进行共享、交换及替代,此全部由可选择配置控制。
179.4.乘法器305
180.乘法器305具体地经制定以支持针对带正负号及无正负号固定点以及以双ieee精度、单ieee精度、半ieee精度及四分之一ieee精度以及bfloat格式的浮点的1、2及4通道simd操作。这些格式需要变化大小的乘法器,及分解乘法器305以支持simd模式以及将所述乘法器组合以用于更高阶模式的能力。在表1中概述所述模式及相关联乘法器大小。另外,乘法器305允许在乘法器树内执行对rae电路四元组450内的乘法器的乘积的求和,且允许将同一rae电路四元组450的乘法器305组合以创建不太常用的双精度及int 32乘法器,以便使最常用的单精度使用情形的alu大小最小化。
181.表1:乘法器模式
[0182][0183][0184]
乘法器305数据输入经由输入重新排序队列350而来自rae电路300的x输入365及y输入370。所述输入重新排序队列350包含具有以下能力的逻辑:断言常数、多达4个常数的序列,或将多达4个样本重新排序到乘法器块的x输入的输入数据。y输入正负号位(位31)可控制x输入,以基于y正负号的值而选择性地用常数替换x输入。x输入及y输入是取决于模式而以多种格式进行解释的32位信号。针对浮点格式,正负号位始终是每一simd通道中的最左侧位,其中指数位于下一最高有效位中。隐藏位是与指数的最低有效位相同的位,并且在浮点格式的乘法器阵列输入处始终被强制为
‘1’
,这是因为非正规数被解释为零。其余的指数位及正负号在每一浮点模式的乘法器阵列输入处被掩蔽并强制为
‘0’
。无正负号整数(uint)模式将所有位传递到乘法器阵列,只有int 24位模式除外,所述int 24位模式掩蔽输入的最高有效字节并将
‘0’
强制到乘法器阵列的3个最高有效位中。
[0185]
带正负号整数掩蔽正负号位,从而将这些位强制为
‘0’
到乘法器阵列中,且输入正负号位值被传递到乘法器输出逻辑以应用正负号校正。在表2中概述所述格式。来自每一输入的不超过27个位连接到27x27乘法器阵列。双精度、int32及int64模式是使用多于一个乘法器的特殊情形。针对这些情形,应将输入传播到所涉及rae。针对这些特殊情形中的带正负号整数模式,为了得到正确的结果,将最高有效输入分段视为带正负号的且将其他视为无正负号的。针对64位带正负号整数,乘法是四个32位乘法的序列。在此情形中,输入的加正负号应被定序,使得仅每一输入的最高有效一半是带正负号的。两个输入的指数及正负号位还连接到指数逻辑,所述指数逻辑又控制取反。
[0186]
表2:按模式的乘法器输入格式
[0187][0188][0189]
每一乘法器(x及y)输入具有将输入个别地指定为带正负号或无正负号的带正负
号控制件。针对浮点模式,带正负号输入应为
‘0’
以将其指定为无正负号的。此输入应能够被定序以支持带正负号int64模式。带正负号控制件同样适用于所有simd通道。乘法器还具有在断言时对乘法器输出进行取反的取反输入。此控制件应能够被定序。
[0190]
配置输入设定乘法器simd模式(其设定适当的进位块位,且设置正负号校正及取反加数的格式),选择输入掩码。配置还可含有上文所描述的带正负号或无正负号、取反、绝对值及零的设置(这些可在配置中的其它地方设定)。
[0191]
乘法器乘积是64位2补数乘积,其表达为以进位保留形式的一对64位向量。所述两个向量的总和是乘积的2补数值。取决于模式,乘积被分成四个16位通道、两个32位通道或单个64位通道。带正负号simd模式针对每一通道单独地应用正负号校正且具有进位阻塞器以防止溢出到邻近通道中。两个乘法器输入中的每一者通过数据_有效_输入位而实现。那些位被and操作在一起并延迟以匹配乘法器的管线延迟,从而成为来自乘法器的数据_有效_输出。
[0192]
乘法器设计是27x27无正负号乘法器,所述27x27无正负号乘法器经修改以重新布置乘积项以便实现27x27乘法、在对角线上仅具有两个16x16部分乘积以供simd使用的经修剪32x32乘法器,以及

l’形扩展以允许两个乘法器相加在一起来执行32x32相乘。另外,无正负号乘法器使校正添加到输出,以支持与有正负号二补数输入一起使用。输出校正逻辑还将正负号-量值乘积转换为二补数且提供控制以对乘法器输出进行取反。
[0193]
a.处于其原生27x27模式中的rae乘法器305
[0194]
图7展示处于其原生27x27模式中的乘法器305。块402表示虚拟8x8部分乘积,其中块402中的数字404表示当对部分乘积求和时应用于所述部分乘积的8位左移位的数目。针对24位模式,图7的顶部及右侧上的阴影块被强制为零。沿着底部的x输入广播到列中的所有单元格,且沿着左侧的y输入广播到行中的所有单元格。应注意,此表示仅用于解释。24位模式用于单精度浮点且用于24位整数模式。24位模式使用27位乘法器,其中每一输入的3个最高有效位被强制为零。替代地,与归零的输入位相对应的个别位乘积可被强制为零。浮点格式包含位31中的正负号位,及位22:0中的尾数位。还存在隐藏位,除非指数全部为零(在此情形中,所述隐藏位是
‘0’
),否则所述隐藏位是
‘1’
。乘法器的输入门控将x输入及y输入上的输入位42:0指派给乘法器阵列的位32:0,且如果浮点将每一输入的位23强制为
‘1’
,那么在27x27乘法器的每一输入上用零填充上部3个位。
[0195]
b.处于simd模式中的rae乘法器305
[0196]
图8图解说明使用32x32乘法器作为两个16x16 simd乘法器。部分乘积阵列中不在对角线上的部分乘积被清零,使得剩余的非归零部分乘积全部使用输入的独立子集,且原生阵列中的单元格的权重确保乘积不在阵列的输出中重叠。因此,通过将部分乘积403从对角线清零(如图8中所展示),可将另外未经修改无正负号乘法器用作一组任意大小的较小独立乘法器。在所图解说明情形中,32x32无正负号乘法器用于执行两个16x16相乘。只要相乘是无正负号的,16位输入及32位乘积便不会重叠。使用类似的策略来利用32x32无正负号乘法器执行四个8x8无正负号相乘。应注意,对于simd操作,用于经清零部分乘积的硬件不需要存在。如果所述硬件存在,那么将所述硬件停用以防止所得部分乘积与期望的部分乘积组合。
[0197]
图9图解说明针对两个16x16 simd乘法器修改27x27乘法器。乘法器305仅为27x27
个位,因此使用未经修改27x27乘法器将图8中所展示的右上部分乘积截断为11x11而非16x16(虚线展示27x27乘法器大小)。代替向乘法器添加扩展以扩增上部simd乘积,可重新指派现有的经停用部分乘积以便实现适合于simd模式的经修剪32x32乘法器。如果部分乘积被明智地选择,那么其在扩展中相对于彼此的权重与其在原始乘法器中的权重相同。这准许移动部分乘积及在经移植部分乘积下的进位保留树作为被添加到主乘法器树的完整的进位保留树而在输出上方移动进位保留加法器的一个层级。移动部分乘积的选择在图9中通过阴影块展示(块406用于27x27中的位置,块408用于simd位置)。对于simd模式,虚线内部的27x27乘法器的无阴影部分被停用。如所图解说明,将乘法器划分成8x8分段仅用于图解说明,其中实际乘法器具有相对于其原始位置以24位左移位被重新指派的5x16位及11x5位的部分乘积总和。这些部分乘积的输入还可需要选择器来重新指派输入位。
[0198]
替代地,27x27乘法器可在simd扩展始终就位的情况下构建,且仅针对27x27使用而停用。这将消除进位保留树中的切换并减少位乘积输入处的选择以稍微降低传播延迟,但增加门计数以计及所添加位部分及在其之下的进位保留树。乘法器305设计的另一选项是使用24x24乘法器作为基础来切换8x8块。这会移动更多1位乘积,但进位保留树中增加的开销可由于两个输入上的非零位27:24而被更大的切换复杂性所抵消。
[0199]
图10图解说明具有可移动部分乘积的乘法器305的结构。如图10中所图解说明,其中带有数字的块402表示由来自每一输入的一个位的逻辑and产生的一位部分乘积的阵列。那些一位乘积被添加到加法器树306中,具有与输入的位位置的总和对应的二的幂权重。27x27乘法器305经修剪以移除与移动部分对应的一位部分乘积,如图解说明的左侧412上所展示。经移除部分乘积在右侧414上被单独地求和,且在进位保留树的最后一层处被添加到经修剪27x27乘法器进位保留输出。针对27x27使用,所添加树306保持其原始权重。
[0200]
对于simd经修剪32x32使用,经分割树输出在原始位置的左侧添加了有线移位24位。取决于是27x27模式还是经修剪32x32模式,在两个可能的位之间选择经分割树的输入。图10中所展示的加法器的输出是一对向量,所述对向量的总和是乘积(进位保留格式)。使用进位保留格式将昂贵的进位传播推迟直到来自alu的输出。图10展示用于移动部分乘积的概念。为清晰起见,图10展示一位部分乘积的8x8块。实际设计具有部分乘积的27x27阵列,其中5x16及11x5区域被移除并被单独地求和。处于simd模式中的乘法器仅为无正负号的。当选择带正负号操作时,在每一simd通道的乘法器305输出处添加校正,如下文所描述。
[0201]
图11图解说明使用经修剪32x32乘法器作为四个8x8 simd乘法器。8x8 simd模式的四个通道是两通道16x16经修剪32x32乘法器305的子集。上文所描述的所述乘法器模式具有额外控制以停用8x8位部分乘积308的四个块,以便到达布置于经修剪32x32的对角线上的四个8x8乘法器307,如图11中所展示。与16位simd一样,需要对一位部分乘积进行门控以停用所述一位部分乘积,使得所述一位部分乘积不添加到乘积。处于simd模式中的乘法器305仅为无正负号的。当选择带正负号操作时,在每一simd通道的乘法器305输出处添加正负号校正。
[0202]
c.处于32x32模式中的rae乘法器305
[0203]
图12图解说明由两个rae乘法器305的经移位总和形成的32x32相乘,所述两个rae乘法器中的一者已被修改。两个邻近乘法器305经耦合以构建单循环管线式32x32乘法器以供用于int32及int64模式中。所得32x32乘法器305为带正负号模式及无正负号模式两者工
作,且用于整数操作。乘法器305是使用经配置以用于24x24的rae电路对400的两个乘法器305构建的(两者上的上部3个位被强制为零或部分乘积被停用)。低阶乘法器是原生24x24并接受x输入365及y输入370中的每一者的低24位。第二乘法器305经修改以形成

l’形部分乘积,以在顶部及右侧416处将乘法器阵列扩展8个位,如图12中所展示。
[0204]
l腿的末端取自中间行第一左列及底部行中心8x8块。这些均相对于上部的其余部分具有与在其被重新定位时的权重相同的相对权重28,因此不需要对加法器树进行修改来改变所述两个8x8部分乘积块的相对权重。所述两个8x8部分乘积乘法器块的输入不再与物理列及行的输入匹配,因此应切换那些输入以连接正确的输入来实现虚拟形状。剩余的两个部分乘积未被使用,并因此通过将每一位部分乘积的输入中的至少一者归零或通过以其他方式停用那些部分乘积而被停用,以防止不想要的加数添加到乘积求和中。上部

l’形部分乘积相对于下部乘法器的乘积左移位16个位。此移位是通过后乘移位/组合器逻辑中的下部乘积的右移位来完成的,在所述后乘移位/组合器逻辑中对来自两个rae的乘积进行求和。下部乘积的z输入375被恰当地对准以对z输入375与32x32乘积进行求和。应注意,两个32位输入均被分配到所述对中的两个rae乘法器305。rae电路四元组450中的专用接线将负责提供导线以将两个rae输入互连并对输出进行求和。通过使用第一27x27作为24x24(将每一输入的上部3个位清零)且然后将第二24x24的8x8部分移位以形成32x32位l而更高效地再现32x32。这使用与通道部分之间的非零相同的部分子集,并在扩展上使用16位移位以添加到下部24x24。然后可在现有的模式移位中完成16位移位,从而消除了16对移位输入的移位。
[0205]
d.处于54x54模式中的rae乘法器305
[0206]
图13图解说明由四个未经修改rae乘法器305的经移位总和形成的54x54相乘。ieee双精度模式需要53x53位无正负号乘法器305。在此情形中,rae电路四元组450中的四个27x27乘法器305简单地相加在一起,并对总和进行适当的移位,且重新指派输入。求和将具有3x9=27位左移位的右乘法器加到左乘法器,然后将被移位另外27个位的所述顶部总和加到底部总和以得到54x54乘积,如图13中所展示。应注意,左乘法器的相同y输入位也应分配到右乘法器,且应用于乘法器的底部行的相同x输入也应应用于顶部行。rae电路四元组450内的接线包含使这成为可能的专用路由。
[0207]
e.64位顺序相乘及正负号校正
[0208]
与128位累加器耦合在一起的移位-组合器设计准许使用两个rae电路300作为32位相乘-累加而对64位相乘进行4循环顺序计算。输入及移位组合器的第二层经定序以计算四个32x32部分乘积且将所述四个32x32部分乘积移位适当的量来对其进行求和以获得128位结果。下部*下部部分乘积不被移位,上部*上部及下部*上部部分被左移位32个位,且上部*上部部分乘积在加到累加总和之前被左移位64个位。
[0209]
在下文所描述的后乘移位器-组合器网络310中实现移位。输出需要选择器及/或移位寄存器来捕获、选择及输出128位乘积的32位或64位分段。针对带正负号操作,仅每一64位输入的上半部分是带正负号的,因此乘法器的每一输入必须按上半部分带正负号及下半部分无正负号来定序。部分乘积序列以每一输入的下半部分的乘积开始,并以每一输入的上半部分的乘积结束。带正负号控制件以序列来定序以仅将每一输入的上半部分视为带正负号的。
[0210]
额外考虑是需要处置针对所有整数模式的带正负号乘法及无正负号乘法两者。其为控制逻辑的简单扩展,从而还支持正负号-量值整数表示。浮点模式全部使用无正负号乘法器,这是因为数据以正负号-量值格式来表示。针对浮点使用情形,正负号仅被“异或”操作并在乘法器周围被传递,且乘法器本身是无正负号的。针对整数模式中的每一者,整数格式支持带正负号整数输入及无正负号整数输入两者。
[0211]
无正负号乘法器无法正确处置负2补数被乘数,这是因为所述无正负号乘法器并未考虑每一被乘数的最高有效位的权重,所述权重针对无正负号数据为2n-1而针对带正负号操作为-2n-1。当对部分乘积进行求和时,负的部分乘积需要被正负号扩展到乘积的宽度并被视为负的以便获得正确答案。存在乘法器优化(例如布斯(booth)及鲍-伍利(baugh-wooley)),其涉及一些编码技巧以避免针对经扩展正负号产生部分乘积项,以便实现带正负号乘法器。
[0212]
在代表性实施例中,支持simd操作的要求以及将乘法器分离成部分乘积以用于减少硬件以支持所有模式的目的的设计选择显著地复杂化或完全破坏这些带正负号乘法器方案。一种方法是执行保持正负号的每一输入的二补数绝对值,以将二补数有正负号输入转换为正负号-量值形式并将其馈送到乘法器305而无需进一步操纵,这是因为此将准许使用无正负号乘法。二补数转换是通过将输入(1补数)的所有位反转且然后将其加1以产生二补数来完成的。即使对于快速进位方案,由于加1所致的进位传播也会增加显著的门延迟,并且对于快速方案还会招致大面积的偿罚。
[0213]
代表性实施例使用另一方法,其涉及了解当使用无正负号乘法器305与带正负号值相乘时发生的错误,且然后对所述错误应用校正。发生的错误分析如下。考虑其中被乘数a是负的且b不是负的乘法:
[0214]a×sb=-((-a)
×ub)
[0215]
=2
2n-((-a)
×ub)
[0216]
=2
2n-((2
n-a)
×ub)
[0217]
=2
2n-2n×
b a
×
ub[0218]
2n及22n项分别是n位及1n位字的向2补数表示法的转换,且所述项在所述位数的模范围之外,但对于获得2补数的正确位表示是必要的。分析的最后一行中的22n项被忽略,这是因为其在mod 22n结果之外。
[0219]
乘积2n
·
b是无正负号乘积中的错误项,需要减去所述错误项以便得到正确的带正负号乘积,此为简单地将b移位到乘积的上半部分中。类似地,如果b为负的,那么乘积中缺少-2n
·
a项。类似的分析表明,两个负的输入最终得到校正,所述校正是这些相同的a及b校正的总和(其也由乘法及分配属性的线性所产生)。
[0220]
通过添加校正的二补数而执行减法。由于校正是加法的且乘法器输出是加法器树,因此可在乘法器的加法器树中的任何点处而非输出处应用校正。校正逻辑仅取决于乘法器模式及乘法器的输入,因此可在与无正负号乘法器部分乘积平行的路径中计算校正值,且可在任何方便时在加法器树中添加以进位保留格式的完成校正。
[0221]
图14图解说明用于使用无正负号乘法器305的带正负号乘法的带正负号校正电路428且展示用以执行如所论述的正负号校正的逻辑。通过将所有输入位反转并加1而针对每一输入计算二补数(418)。二补数各自由相反输入的正负号位进行门控(422),且对经门控
校正进行求和(424),并经由有线移位而将其加到上半乘积(426)。图式中的二补数值的门控包括带正负号整数控制件,所述带正负号整数控制件在断言为高时停用校正的产生(强制为零),使得可在带正负号与无正负号之间切换模式。在实践中,校正计算加法器作为优化树一起移动,且门控连同校正逻辑的输入处的反转一起应用。
[0222]
针对simd操作,每一通道具有其自身的正负号校正电路,所述正负号校正电路仅使用所述通道的输入字段及正负号,且不应允许校正将进位传播到下一通道中。这意味着在每一simd通道之间需要至少一个缓冲位或进位阻塞逻辑。针对此设计,我们选择维持具有8个位的倍数的通道,因此在通道边界处使用进位阻塞门控,以便避免对每一通道上的保护位将需要的输入的额外切换。在不具有保护位的情况下,在应用校正的阶段及每个后续阶段应用进位阻塞。出于此原因,此设计将校正推迟直到乘法器的进位保留树的输出。
[0223]
图15图解说明针对每一带正负号整数模式的输入、正负号校正与输出的对准,即,针对带正负号整数模式中的每一者的输入及正负号校正相对于输出的对准。每一通道的校正是独立于其它通道计算的。针对32位带正负号乘法器,仅将校正应用于乘法器中的一者(所展示的对准是用于被应用于低阶乘法器的校正),否则,将在两个不同对准处将校正应用两次。
[0224]
图16图解说明还可执行选择性取反的带正负号校正电路432。当与浮点相乘-相加一起工作时,数字格式一般必须转换为二补数形式以便执行加法。替代在乘法器与加法器之间添加单独的二补数级,我们可通过在乘法器的输出之前对乘积执行二补数而依据浮点正负号及取反控制来选择性地对乘积进行取反。二补数是通过将乘积的所有位反转且然后加1(418)或通过从乘积中减去1且然后将所有位反转而完成的。后者建议我们可扩增上文所论述的正负号校正逻辑,以选择性地将负1加到乘法器树中的乘积且然后将完成乘积反转以实现取反,而不影响所述树中的传播或门计数。然而,在此情形中,乘法器具有进位保留输出,使得两个输出向量的总和是乘积。
[0225]
为对乘积进行取反,对总和及进位输出两者均进行取反:-(c s)=-c

s=~(c-1) ~(s-1)。因此,在输出反转之前,经修改乘积是c s-2,因此如果我们将要在输出处反转两个向量,那么需要将-2加到所述树。图16展示对正负号校正逻辑进行修改以包含对乘积的选择性取反。针对浮点或正负号-量值,应将正负号位连同取反控制一起评估以确定乘法器输出是否被取反。在此情形中,乘法器的输出始终为二补数进位保留向量。乘积的上半部分得到添加到其的正负号校正,且下半部分校正为零。在具有取反的情况下,底半部分为-2,且顶半部分为正负号扩展加上正负号校正(如果2补数带正负号乘法器),因此是所有
‘1’
位添加到乘法器正负号校正。取反控制扩展为包含对乘积的绝对值控制。当选择绝对值时,这仅是将取反控制强制为输入的正负号的“异或”。
[0226]
当针对36x36或54x54模式对乘法器305进行组合时,对每一rae电路300的部分乘积执行二补数,因此除了确保取反控制针对所有所涉及的乘法器相同之外,无需调整即可将rae乘积加在一起。
[0227]
当选择浮点操作时,指数是32位输入的一部分。针对浮点模式,将乘法器305阵列的与指数对应的输入掩蔽为
‘0’
,只有指数的最低有效位除外,所述最低有效位被强制为
‘1’
作为隐藏位。非正规输入被解释为零,且当检测到时,在乘法器之后将数据路径强制为零。乘法器指数处理(零检测、求和及对准移位)发生于指数逻辑335中。在下文论述移位-组
合器指数逻辑335的细节。指数位的未经掩蔽值被传递到乘法器-移位-组合器的指数逻辑335不改变。
[0228]
乘法器输入需要一些切换以停用一些部分乘积,并针对32位扩展及simd扩展模式重新指派输入,且可在输入重新排序队列350或其它切换电路中执行。输入逻辑还在浮点模式中断言隐藏位。
[0229]
f.乘法器305模式
[0230]
存在三种基本的乘法器配置:27x27相乘、用于simd的经修剪32x32,及32位扩展。另外,存在若干子集:24x24是27x27的子集,其中每一输入的3个msb被强制为零;4通道simd是2通道simd的子集,其中四个8x8位部分乘积块被停用且被强制为零。浮点模式将掩码应用于输入以将与正负号及指数相关联的位归零。simd配置需要改变一些部分乘积的权重,这通过移动加法器树的一部分而完成,如上文所论述。通过将输入切换到部分乘积的群组而严格处置所有其它配置。
[0231]
27x27乘法器305是乘法器305阵列的原生模式。针对此模式,乘法器的每一27位输入取自x输入及y输入的27个最低有效位或在双精度相乘的情形中,输入是来自下部乘积的27个最低有效输入,以及上部乘积的位53:27。位53被强制为0,位52被强制为
‘1’
以用于隐藏位。针对双精度的切换发生在乘法器305之前。
[0232]
24x24模式输入与27x27模式输入相同,只是x输入及y输入的三个最高有效位均被强制为零,从而使有效乘法器成为无正负号24x24乘法器。表3展示对乘法器的每一8x8子集的输入指派。每一块表示下部24个位的8x8部分乘积的输入。在此模式中,到每一27位乘法器输入的最高有效3个输入位被强制为零。
[0233]
表3:24x24乘法器输入
[0234][0235]
当将两个乘法器组合以实现32x32相乘时,32位扩展是上部乘法器。将下部乘法器设定为上文所描述的24x24模式。上部乘法器使虚拟8x8部分乘积中的两者的输入切换,且另外两个被归零以将乘法器变成与32x32乘法器的八个最高有效行及列对应的l形部分乘积。扩展使用x输入及y输入的最高有效24个位作为到上文所论述的24x24阵列的输入,但然后替换两个输入上的下部16个位的部分输入以强制下部对角线为零且其它两个乘积为最高有效行乘以最低有效8个位,并且反之亦然。表4展示针对组成24x24阵列的每一虚拟8x8部分乘积的输入。27x27乘法器的每一输入的3个最高有效位被强制为0。表4中的粗体图例表示与针对此模式的正规24x24不同的输入。
[0236]
表4:32x32乘法器扩展
[0237][0238]
simd模式将8x8部分乘积块中的3个8x8部分乘积块的权重改变24个位的共同偏移。对应于两个输入的16个最低有效位的虚拟部分乘积的输入与24x24乘法器305的输入相同,对应于两个输入的8个最高有效位的8x8部分乘积也是如此。三个移动部分乘积需要重新指派输入;以红色图例展示的输入与用于32x32扩展模式的输入相同。粗体的图例指示simd模式特有的输入指派。
[0239]
针对4x8x8 simd模式,灰色阴影单元格需要被强制为零。可仅针对这些部分乘积将x输入及y输入中的任一者强制为零,以便将这些虚拟部分乘积清零以用于8位simd。
[0240]
表5:乘法器simd模式输入
[0241][0242]
以上模式针对每一乘法器输入位需要至多3输入多路复用器。将针对每一模式的图表组合成表6及7中的汇总图表。表6中的每一块表示24x24乘法器305的虚拟8x8部分乘积。到乘法器输入中的每一者中的最高有效3个位被强制为
‘0’
以有效地关闭部分乘积的最高有效行及列,只有27位整数及双精度浮点模式除外。每一部分乘积单元格中的顶部行对应于24x24模式的x输入及y输入,中间行对应于32位扩展模式,且每一单元格的底部行对应于simd模式的输入。对于8位simd,粗体单元格被强制为零。/0指示对于simd 8模式哪些输入被强制为零。

&0’指示右边零填充且

0&’指示左边零填充。
[0243]
表6:乘法器输入汇总
[0244][0245][0246]
表7:仅具有8x8单元格的乘法器输入汇总
[0247][0248]
浮点输入取消隐藏ieee隐藏位。由于非正规数被alu解释为零,因此当选择对应浮点模式时,可始终断言隐藏位。当遇到任一输入上的零指数时,在下游将数据强制为零。适用于浮点的隐藏位应在对应模式被选择时在乘法器的x输入及y输入两者上被断言为
‘1’
。否则,输入是根据上文所指示的乘法器配置。隐藏位在表8中列出。当选择所指示模式时,隐藏位被强制为1,否则输入跟踪以上输入汇总中列出的输入。
[0249]
表8:按模式的浮点隐藏位位置
[0250][0251][0252]
在输入重新排序队列350的输入重新排序逻辑中处置条件被乘数操作,所述输入重新排序逻辑依据y输入正负号用常数来替换x输入。条件被乘数不支持simd操作。
[0253]
g.乘法器305进位保留加法器树
[0254]
图17是具有经修剪32位simd扩展的27x27乘法器的点图。乘法是以与在小学中教授的普通书写(long-hand)乘法类似的方式来完成,只是所述乘法是使用二进制基数而非十进制基数完成的。普通书写乘法实际上是两个不同的操作:部分乘积的产生及那些部分乘积的累加。针对被乘数及乘数的个别数字的每一配对产生部分乘积。所得部分乘积由用于所述部分乘积的数字的权重的总和加权。由于被乘数中的数字的权重是数制基数的幂,因此加权是通过位置移位而实现的。这些移位是通过在部分乘积的右侧插入适当数量的零来表示。每一部分乘积的移位p等于被乘数及乘数的位置移位m与n的总和。在二进制乘法器中,1位部分乘积与逻辑and相同(仅1*1组合不是乘以零)。针对n位乘n位乘法器,存在n2个一位部分乘积,每个一位部分乘积是来自被乘数及乘数的唯一位配对的结果。图17描绘经扩增以适应上文所论述的一对16x16 simd乘法器的27x27乘法器。此图式中的每一点表示一个1x1部分乘积。点经布置使得具有相同乘积权重的点在列中垂直对准。此布局使人联想起普通书写乘法中的部分乘积,其中每一行是乘数的一个数字依次乘以被乘数的每一数字(在此情形中,没有进位到下一数字,这是因为每一乘积仅为0或1)。
[0255]
整数加法的一个性质是可以任何方便的次序进行相加。简单乘法器构造可仅添加具有所图解说明移位的行并得出正确答案。然而,所述方法对于速度或面积来说并非最优的,这是因为其涉及跨越每一行的进位传播(由于前面的总和被相加)。替代地,我们对列进行求和,将行进位推迟直到最终相加。使用全加法器及半加法器将具有相同权重的位群组相加在一起(且在大多数库中,存在通常被称作压缩器的技术相依的高阶记数加法器,其可提高性能并减少面积)。
[0256]
全加法器将具有相同权重的3个输入位简化为总和及进位输出。进位输出具有比总和输出大1的权重。列相加的优点是进位朝向输出传播而非跨越行传播,然而,乘积仅可被简化为一对向量(一个向量与总和有关、一个向量与进位有关,因此称为进位保留)。那些向量的总和是乘法器乘积。在此设计中,乘积保持呈进位保留形式直到在累加器之后,以便维持性能并使面积最小化。
[0257]
存在用于产生最优树的若干算法。以最小传播延迟及门计数著称的树之一是达达树。传统上,达达树仅由全加法器及半加法器组成,然而,如果技术库含有与使用离散全加法器及半加法器相比减少面积及/或改进传播延迟的高阶压缩器,那么可对所述达达树进
行修改以使用此类压缩器。在大多数情形中,使用高阶压缩器存在优势。为了论述及图解说明起见,本说明书使用传统的达达树构造。电路设计者自由地使用高阶压缩器并更改树结构,以便减少灵活乘法器的占用面积。
[0258]
图17的点图经稍微增强以图解说明在27x27模式与simd模式之间的部分乘积权重移位的设计。右边的较大菱形436是27x27相乘。在左边及底部(最高有效位)上进行了扩展以适应先前所论述的经修剪32x32 simd乘法。所述扩展438指示那些部分是从其它地方借用的。借用的点434是用于simd。这些占用两个区,一个区是5行高,靠近图解说明的底部中心,其中每行16个位,另一区是11行,靠近阵列的左上角,其中每行5个位。这两个区垂直地移动在一起产生与扩展点438相同的形状。黑色填充点表示simd模式与27x27模式共有的部分乘积,且未填充点是对于simd模式被停用(被强制为零)的部分乘积。
[0259]
图18是具有第一层达达加法器的经重新布置点图。在图18中,通过将27x27乘法器的列顶部对齐而重新布置图17的点图。表示借用的部分乘积(442)的点被移动到对应列的底部,且对应于simd扩展的点(以蓝色填充展示)与阵列的其余部分垂直分离,但仍位于正确的列中以用于加权。扩展的布局此处保持以与部分乘积(442)所借用区相同的布局,以强调所借用区与经扩展区的相似性。针对达达树减少,将部分乘积(442)点视为不存在,使得将移动部分乘积组合于单独的树中。达达算法通过试图将行数减少到每迭代或每层的特定行数而使层最小化。3:2加法器的行目标序列为19、13、9、6、4、3、2。在每一迭代处,将全加法器及半加法器放置在列中以减少列中的条目数。每一加法器具有位于加法器所在的列中的一个输出,以及转到下一层级中在其左边的列的一个输出。当对行数进行计数时,存在针对前一列中的每一加法器的行、针对当前列中的每一加法器的行及针对当前列中的每一未覆盖点的行。图18中的点表示达达层的输入,其中覆盖3个点的方框437是全加法器,且覆盖2个点的那些方框439是半加法器。加法器表示位于此层中的加法器。未覆盖的点刚刚落入下一层。应注意,扩展树已经每列不超过10个点,因此此第一迭代简单地通过整个扩展而不改变(即,扩展在后面的层上开始)。
[0260]
图19是用于灵活乘法器305的第二层达达树的点图。下一层在每一列中具有针对前一层中的每一未覆盖点的点、针对来自右侧的列的每一进位输入(每一加法器的在前一层的右侧的列中的进位输入)的点,及针对每一加法器的在前一层的所述列中的总和输出的点。图19展示行由第一层减少为每列具有最多13个点。扩展阵列与前一层相同,只是为了在减少过程中清晰起见,已对列进行顶部对齐。此迭代将输出减少到9个行。
[0261]
图20是用于灵活乘法器的第三层达达树的点图。所述树的下一层展示行减少到9个行,且此层的目标是6个行。在图20中展示此第三层。
[0262]
图21是用于灵活乘法器305的达达树的其余层的点图。图21展示其余层以在每一输出处达到两个行。两个行447是不具有移动部分乘积的来自27x27乘法器305的输出,点444是移动乘积的树的输出(在simd扩展的对准中所展示),且点446指示27x27乘法的移动乘积的对准。使用4:2压缩器的一个额外层来将静止树与移动树组合。移动树经由门控而接线到两个位置以选择进行哪一连接。用于移动乘积的加法器仅需要在由扩展树的两个图像占用的列中的4:2压缩器,加上在紧靠每一群组4:2压缩器的最左侧列的左侧的列中的全加法器以及在那些左侧的列中的半加法器(由输出上的灰色阴影区域展示)。左侧的全加法器的原因是4:2压缩器具有额外进位输出及进位输入。添加的绿点是用于来自4:2压缩器链的
进位输出。加法器树不展示加法器(4:2加法器)的额外层以及用于可选择反转以添加经组合正负号校正及取反向量的xor。rae电路300在实际设计中自由地用另一树结构算法替代且使用更高阶压缩器。传统的达达树产生7层树,包含用以组合移动树部分与静止树部分的加法器。移动树仅为6层深(包含输出加法器),因此对移动部分乘积(其位于移动树的路径中)进行移动所需的输入选择及输出导向门不会对穿过7层静止树的最长传播路径做出贡献。
[0263]
使用传统达达的普通27x27乘法器也是7层,因此针对移动树不存在性能偿罚。取决于供应商库,可通过使用更高阶的压缩器而改进达达树。举例来说,图21中的树的第五层及第六层可容易地用使用4:2压缩器的一个层来替换。所述4:2压缩器具有5个输入、4个相等加权的输入、来自同一层级上的另一压缩器的进位输入、去往同一层级上的另一压缩器的进位输出以及去往下一层级的总和及进位输出。
[0264]
图22图解说明4:2压缩器及层5分段的等效电路448,其展示在一个阶段中使用4:2压缩器来执行层5及层6(447)。进位输出与进位的组合是到下一列的逐渐进展(jog),然后以与其它输入类似的延迟传播到下一层。图22展示使用全加法器448(在各个图中缩写为“fa”)的4:2压缩器的等效电路。虽然这与两层的全加法器相比似乎不具有任何优势,但在大多数库中,4:2压缩器的电路层级实施方案比级联全加法器更快且更小。
[0265]
乘法器305还可由经修剪32x32构建,所述经修剪32x32包括以作为固定而非可移动扩展的16x16 simd扩展来进行扩展的27x27乘法器。移动扩展构成大约14%的进位保留加法器阵列,因此似乎是更可取的实施方案。然而,在考虑所涉及的经添加输入及树切换之后,布局问题可使固定经修剪32x32占据更少的硅面积,即使门计数较高。允许电路设计者在选择乘法器构造以实现最小面积时有余地。另外,本说明书中未考虑乘积项优化(例如布斯编码),然而,只要维持整体功能并且优化产生更小的物理占用面积,便可允许进行此类优化。
[0266]
5.乘法器移位器-组合器网络310
[0267]
图23是后乘乘法器移位器-组合器网络310(贯穿始终的进位保留格式)的逻辑及框图。乘法器305后续接着乘法器移位器-组合器网络310,所述乘法器移位器-组合器网络主要经设计以将尾数左移位多达32个位以便转换为具有基数32指数的系统。使用基数32指数简化了关键累加器环路内部的动态对准移位。当处于simd模式中的一者时,此乘法器移位器-组合器网络310还用于展开simd通道309(图解说明为四个simd通道309a、309b、309c、309d)以允许用于累加及对准移位的空间。乘法器移位器-组合器网络310还包含以下能力:单独地对准simd通道并对其进行求和以获得rae电路300内的simd乘积的单个时钟总和,且还对来自rae电路四元组450中的四个rae 300的乘积的总和进行求和。
[0268]
乘法器移位器-组合器网络310还提供将32位经对准乘积右移位32位的倍数以促进与加法z输入的求和以用于融合相乘-相加以及将乘积与来自同一rae电路四元组450中的其它rae 300的乘积总和对准以获得更大的乘积总和。在图23中描绘后乘树的结构。如所图解说明,乘法器移位器-组合器网络310包括多个多路复用器、移位器及压缩器(下文连同额外乘法器移位器-组合器网络310实施例310a、310b一起更详细地图解说明及论述)。
[0269]
总之,乘法器移位器-组合器网络310执行以下功能:
[0270]
1.将浮点乘积转换为基数-32指数(左移位达指数的5个lsb的值);
[0271]
2.当任一被乘数为非正规或超量右移位时,强制乘法器乘积为零;
[0272]
3.额外右移位0、32、64或96个位以完成浮点与其它加数的对准;
[0273]
4.simd通道扩展到128个位(4个32位通道、2个64位或1个128位)通道309以匹配累加器315;
[0274]
5.正负号将2补数乘积扩展到通道宽度;
[0275]
6.针对simd点乘积模式对simd通道进行求和;
[0276]
7.针对点乘积模式将来自其它rae的乘积的总和相加;
[0277]
8.针对单循环32x32及双精度相乘而组合rae电路300部分乘积;及
[0278]
9.将64位乘积放置于128位的上部、中间或下部位置中以支持int64相乘的能力。
[0279]
针对浮点乘积,乘法器移位器-组合器网络310通过将尾数左移位等于指数的五个最低有效位的位数而将数据转换为基数-32指数格式。一旦完成所述操作,便可摒弃五个最低有效指数位且仅在下游使用剩余的指数位。
[0280]
乘法器移位器-组合器网络310负责在累加器之前对乘积及z输入加数进行求和。当以点乘积模式进行操作时,来自所有simd通道的乘积以及来自同一rae电路四元组450中的其它rae 300的若干总和也被加到总和。针对浮点操作,求和要求所有加数具有相同的对准,这意味着所有加数均应具有相同指数。指数逻辑335确定所有加数中的最大基数-32指数且然后将每一加数右移位32位的倍数(其由所述指数与最大指数之间的差指示)。指数逻辑335还负责确定将乘积与z输入彼此对准以及与来自邻接rae单元的乘积(当其对乘积的总和有贡献时)对准所需的超量右移位。
[0281]
四分之一精度及半精度指数分别为4位及5位,因此针对那些情形,基数-32指数预移位完全对准尾数;在累加器315之前不需要进一步的对准移位来对乘积进行求和。在这些情形中,累加器315的尾数被视为整数且累加器以整数模式进行操作。最终加法器/舍入/饱和逻辑可将其保持为整数或转换回到浮点格式。
[0282]
z输入375最后与乘积总和相组合,以便支持需要对共同乘积总和与独立z输入同时求和或差的功能。fft蝶形是此的实例,使用z
±
(a*cos b*sin)。在乘积总和与z输入加法器之间添加取反及零控制件以准许进行此操作并且当乘积用于在邻近rae 300中馈送乘积总和时,还允许将z输入375与累加器315一起使用。具有超过5个指数位的模式(双精度及单精度ieee以及bfloat16)需要额外移位来均衡指数。当需要额外移位时,具有较小指数的加数中的每一者被右移位(且根据ieee标准被舍入到最接近偶数)。右移位距离是使用超量指数(在转换为基数32指数之后剩余的指数)作为32位右移位数来计算的。如果右移位数大于3,那么将加数归零。另外,将输出基数点对准到输出格式的正确位置需要模式相依的固定偏置。对这三个移位量(转换左移位、对准右移位及偏置移位)进行求和以确定每一加数的净移位,并且所述净移位被重新编码到移位器控制。计算每一加数的净移位确定并将其转换为指数逻辑块335中的移位控制。针对单精度存在多达8个加数(4个rae,各自具有z输入及乘积),或针对bfloat16存在12个加数(其中每rae 300存在两个乘积及一个整数加数)。
[0283]
图24展示针对每一模式的乘法器乘积与累加器315的128个位的对准。乘法器乘积宽度由阴影单元格指示,其中单元格451对应于乘法器输入宽度。单元格441指示未融合累加器中的粘滞位的位置。针对此设计,累加器及加法器具有低于128位宽度的粘滞位。单元格之间的线453指示当与32位界限对准时浮点的基数点的位置。标记为“x”的单元格指示浮
点的正负号。整数区段中标记为“y”的单元格指示进位阻塞器的位置。
[0284]
作为alu的rae电路300内的点乘积总和累加到较大simd通道,且通过移位网络而与32位界限对准。针对半精度浮点及四分之一精度浮点,存在至多5位指数,因此到32位界限的移位表示完整的可表示范围,因此针对那些模式不需要指数的进一步移位或处理。bfloat16具有8位指数,且因此在点乘积模式中需要额外移位来对准乘积以获得乘积总和。指数逻辑基于所述通道的上部3个指数位与rae电路300、rae电路对400或rae电路四元组450(取决于模式)中的最大指数上部3个位之间的差而选择bfloat16点乘积模式中的一者(名称中的数字对分别指示上部通道及下部通道的额外右移位)。
[0285]
这些额外bfloat16模式将一个或两个通道向右移位0个位或32个位,或者如果更大的差分,那么将通道归零。每一rae电路300中的最大指数(3个msb)应与rae电路四元组450中的其它rae 300共享以便解析移位。解析与相乘并行发生,以便及时将乘积移位。单精度点乘积需要类似的rae 300间指数处理以确定在求和之前是否需要32位移位来进行对准。出于此原因,已向组合器/移位器网络的功能表中添加了对单精度》》32、单精度》》64及单精度》》96的规定。与bfloat点乘积一样,单精度点乘积还需要解析rae alu之间的上部指数位以便预先确定额外移位。
[0286]
为了匹配ieee标准舍入,除了128累加器位宽度之外,移位-组合器还将需要针对单精度及bfloat点模式并入舍入、保护及粘滞位(这些也被传递到累加器的舍入位中)。其它点模式将完全扩展的浮点视为整数,因此不会存在从加法器树的右侧移位出的任何位,只有在双精度、单精度及bfloat点模式中除外。
[0287]
在累加器中保留浮点的浮点模式(双精度、单精度及bfloat)需要在每一通道中向下移位3个位或4个位,以允许预累加的增长。相应地调整累加器315以维持恰当的3位对准。而且,当移位将任何
‘1’
位推离右端时,预相加在通道中被设定为lsb,作为浮点数的粘滞位。
[0288]
表9描述灵活乘法器305输出配置,以及乘法器移位器-组合器网络310。乘法器移位器-组合器网络310逻辑从经修剪32位/27位灵活乘法器305接收其主要输入数据。输入是以进位保留格式的64个位(两个64位向量,其总和是乘法器乘积)。数据被分成四个16位通道309,视需要将所述四个16位通道组合以创建两个32位通道或一个64位通道。使用被乘数正负号及取反控制针对负乘积对每一经组合通道进行取反或正负号扩展以确定输出正负号。乘法器输出的内容取决于表9中列出的乘法器模式。
[0289]
表9:灵活乘法器输出配置
[0290][0291]
配置含有simd控制,所述simd控制又视情况针对每一通道设定进位阻塞。针对来自其它rae的输入的静态移位/零控制也含在控制输入内。包含或解码以下静态配置控制:(a)1位正负号扩展控制,针对4个通道中的每一者各一个;(b)用于第一层4:2压缩器的2位乘法器simd大小选择控制;(c)用于压缩器的其余层的2位累加器simd大小选择控制;(d)用于其它rae 300成对输入的2位移位/零选择;(e)用于来自四元组的另一半的输入的2位移位/零选择;及(f)用于z输入加法器的输入处的乘积总和的2位取反/零控制。使用后缀(及/或条件旗标)输入380逻辑可动态地控制取反及零控制。
[0292]
每一移位选择器的移位控制由指数逻辑335块设定,所述指数逻辑335块使用指数值及配置来计算图23中的框图中所展示的每一移位选择器选择的适当移位设置。针对每一通道的归零化控制也来自指数逻辑335,所述指数逻辑使用指数值及配置来确定通道是否以及何时归零(归零用于非正规数或零被乘数或者超过128位累加器的右移位)。此处包含
以下移位控制:
[0293]
1. 5位0:31位左移位控制,针对4个通道309中的每一者各一组。通道左移位达5位无正负号二进制控制中指定的位数
[0294]
2. 1位0/32位右移位控制,针对4个通道中的每一者各一个。
‘1’
导致移位,
‘0’
传递未修改的数据。
[0295]
3. 1位归零化控制,针对4个通道中的每一者各一个。
‘1’
强制通道为零,
‘0’
传递未修改的数据。
[0296]
4. 1位0/32位右移位控制,针对2个双通道中的每一者各一个。
‘1’
导致移位,
‘0’
传递未修改的数据。
[0297]
5.针对最高有效32位通道的1位0/64右移位控制。
‘1’
导致移位,
‘0’
传递未修改的数据。
[0298]
6.针对最低有效32位通道的1位0/64左移位控制。
‘1’
导致移位,
‘0’
传递未修改的数据。
[0299]
来自z输入移位器330块的算术输出的z轴加数是由z输入的四个32位通道中的每一者的2补数增量组成的128位总和向量及4位进位向量。进位向量位替换到每一有效通道的lsb的进位输入,所述进位输入被来自在添加z输入的3:2压缩器456前面的乘积数据路径上的4:2压缩器级454的先前位位置阻塞。当通道接合时,所述进位向量lsb来自下一下部通道的进位输出。通过关断z输入移位器330块中的算术输出而停用z输入375,这会强制输出为零。
[0300]
来自经连结rae 300对中的另一rae 300的输入以及去往所述同一rae 300的输出均为以进位保留格式(两个128位向量)的128位宽信号。输入具有选择器,所述选择器在未移位与右移位27位数据之间进行选择。当不期望来自另一rae 300的连结时,所述选择器还具有将输入归零的选择。输入移位多路复用器由经解码配置字控制。来自z输入加法器的总和是去往所述对中的另一rae的输出。来自z输入加法器的所述信号还与来自另一rae 300的输入相加。这些连接始终是单通道,这是因为点乘积模式在输出去往其它rae 300之前将simd通道预先组合成一个值。
[0301]
来自rae电路四元组450的另一半的输入以及去往所述另一半的输出也是以进位保留格式(两个128位向量)的128位宽信号。输入具有移位多路复用器,所述移位多路复用器在未移位与右移位27位数据之间进行选择。当不期望来自四元组的另一半的连结时,所述多路复用器还具有将输入归零的选择。输入移位多路复用器由经解码配置字控制。来自rae电路300对加法器的总和是去往所述对中的另一rae 300的输出。来自rae对加法器的所述信号还与来自四元组的另一半的输入相加以形成累加器输出。这些连接始终是单通道,这是因为点乘积模式在输出去往其它rae 300之前将simd通道预先组合成一个值。
[0302]
去往累加器315的输出也是以进位保留形式(两个128位向量)的128位输出。输出被分成两个64位通道或四个32位通道以用于simd操作。一个或两个通道累加器输出可为浮点值,因此存在来自指数逻辑335的针对两个通道的伴随累加器指数输出。上部通道指数还用作包含双精度的单通道的指数,因此所述上部通道指数是6位基数32指数。仅用于bfloat16 simd模式的下部通道具有3位基数32指数。累加器315输出还具有去往累加器的数据有效输出,所述数据有效输出是被乘数数据有效及z输入加数数据有效的and的经延迟
副本。除非无输入是有效的,否则将忽略经停用输入的数据有效。
[0303]
后乘移位-组合器电路操作及动态控制输入由配置字控制,所述配置字部分地源自指数逻辑块335。所述配置针对来自其它rae 300的输入设置了通道进位阻塞器及静态移位/零选择。动态控制针对每一通道且针对通道组合及对准过程中的移位器设定移位距离。将来自乘法器的64位输入扩展为128个位,且针对浮点模式,还引入移位偏移以恰当地对准128位字中的浮点值并且指数移位将尾数左移位以进一步转换为基数32指数。
[0304]
针对simd模式,每一通道的宽度从乘法器输出加倍。每一输入通道的移位取决于模式而变化,且所述移位距离是添加指数基数移位的基础。在表10中图解说明用以获得恰当通道及指数=零对准的通道扩展。
[0305]
来自乘法器的输出在进入移位器的每一16位通道之间16位间距。当组合通道以获得更宽的通道时,将通道移位以缩小间隙。在simd点乘积的情形中,所有通道被移位到输出的最低有效通道的位置并被求和。针对点4,每一通道在求和之前被正负号扩展。针对点2,每一输入通道也在求和之前被正负号扩展到32个位。
[0306]
表10:按模式的移位-组合器输入与输出对准
[0307][0308][0309]
通过将通道指数4或5个lsb与模式相依的移位偏置相加而计算通道移位。所述总和的低五个位直接控制初始0:31移位。偏置指数的上部位被添加到来自通道1及3的超量移位逻辑的超量移位距离,且然后将所述总和重新编码到用于组合器级中的多路复用器的移位控制。图25按模式列出每一通道及每一第二层级移位器的移位距离。图25中的模式中的一些模式具有对模式的额外改进。浮点点4总和可被映射到针对所述大小的最左侧输出通道中的四分之一精度或半精度对准,这需要不同的移位偏置。bfloat点模式考虑了均衡基数-32指数所需的超量对准移位。两个数字指示如由指数逻辑确定的上部通道与下部通道的相对右移位。
[0310]
取决于指数,移位量在每一32位通道上变化。类似地,单精度及双精度对于四个可能的32位移位距离具有不同的移位设置,这会在添加到z输入或其它rae时产生非零经右移位数据。那些也需要对由与最大指数的指数差控制的移位设置进行调制,且因此在表中具有单独的行条目。int64具有三个移位设置以支持四循环的部分乘积的移位-相加累加。
64x64相乘定序器应通过与乘法器定序一致的移位设置进行定序。
[0311]
图23中的框图展示乘法器移位器-组合器网络310的架构。电路具有单独控制的移位器以使每一通道309进行在移位器中所指示的通道移位。通道0(309a)及2(309c)具有到64位总线中的-16位到47位的左移位范围。通道1(309c)及3(309d)具有-32位到31位左移位范围。每一通道移位器包括一系列六个2:1多路复用器(图26中的316),所述六个2:1多路复用器经布置使得每一2:1多路复用器传递未移位的数据或向左移位2的幂,比前一级大1。最后级具有内置偏置,使得偶数通道最后级向右或向左移位16个位,且奇数通道最后级向右移位32个位或不移位。当零控制被断言时,最后级的输出经门控以强制通道输出为零。第一级为16位宽,其为来自乘法器通道的十六个位加上最高有效位且针对无正负号而关闭并复制两次。
[0312]
后续级因位移位量而变宽,其中输入最高有效位复制以填充输出宽度(所述输入位是来自输入的经门控扩展正负号)。所述级的宽度分别为18个位、20个位、24个位、32个位、48个位及64个位。那些通道移位网络的输出馈送到一对64位2:1压缩器(多路复用器311)中,一个64位2:1压缩器用于两个低阶通道且另一64位2:1压缩器用于两个高阶通道。当用于simd点模式时,两个通道的移位距离经设定使得通道重叠且在4:2压缩器313中被求和(数据遍及移位-组合器而全部呈进位保留形式)。在此情形中,正负号被扩展到64位宽度。针对其它模式,包含适当正负号扩展的经移位数据不重叠,因此总和与使用or门组合两个通道时相同。第一压缩器级不需要位来处置溢出,这是因为总线宽度扩展到针对点模式的最大总和的两倍。
[0313]
图26是图解说明通道移位及第一压缩器电路细节的框图。图27是图解说明为4:2压缩器添加的用于通道进位阻塞的逻辑的框图。也由指数逻辑控制的移位器452的第二层将两个经组合通道单独移位32位的倍数。低阶通道的移位范围是-32位到64位左移位。高阶通道的移位范围是-96位到0位左移位。使用如图24中所展示的两个级联2:1多路复用器449来完成那些移位。数据路径宽度被正负号扩展到96个位,在第一移位器的输入处具有用于上部通道及下部通道两者的正负号位的经门控副本,所述第一移位器传递未改变的数据或在两个通道上将所述数据左移位32个位。独立地控制通道。输入在第二层级移位器的输入处扩展到128个位;下部通道被正负号扩展到128个位,上部通道在右边被零扩展到128个位。此压缩器也不需要溢出位,这是因为点组合使通道宽度加倍。使用128位4:2压缩器461对经移位通道的输出进行求和。所述压缩器461输出然后具有经移位z=输入,然后是来自rae电路对400中的其它rae 300的总和,然后是又通过一系列4:2压缩器454而添加到其的rae电路四元组450的另一半的总和。z输入使用3:2压缩器456,这是因为其进位向量仅为四个通道进位位。移位-组合器中的每一压缩器具有门控以阻塞在simd通道生效时被激活的跨越通道边界的进位。当simd阻塞内部进位时,第二层级压缩器上的进位门控连接到来自z输入的进位输入。图27展示用于通道进位阻塞的所添加逻辑。用于组合加数的压缩器在最低有效端上需要3个额外位来实施保护位、舍入位及粘滞位以符合针对融合算术的ieee舍入。
[0314]
图28是图解说明乘法器移位-组合器网络310a的替代实施例的框图。可能的替代构造在乘法器305输出处添加进位-传播加法器702(每一通道具有进位阻塞门控),以将乘法器树的进位保留格式解析为非冗余2补数(单个64位向量)表示。这消除了进位保留输出
所必需的第一层中的经复制移位树,从而节省许多2:1多路复用器实例。还消除了用于对通道对进行求和的第一级4:2压缩器,这是因为两个单向量经移位通道一起表示进位保留对。这消除了许多4:2压缩器实例。只要所添加进位-传播加法器架构占用较少逻辑且仍满足时序,这应会节省显著量的硅面积。在第一层级之后的逻辑保持相同。而且,通道归零可被推回到数据路径较窄的乘法器输出。图29是图解说明乘法器移位-组合器网络310b的另一替代实施例的框图。
[0315]
6.z输入移位器330
[0316]
图30是图解说明z输入旋转/移位逻辑330数据路径的框图。rae 300包含用作累加器/加法器的加法输入以及布尔逻辑电路325及比较电路320的输入的第三32位z输入375。此z输入可通过将邻近rae 300(一对中的另一rae 300)z输入375或此rae 300的y输入370串接到z输入375而扩展到64个位。由rae 300模式配置控制对扩展源的选择。z输入375由移位网络进行调节,所述移位网络经设计以执行对准移位来匹配乘法器乘积对准。所述移位网络还被所需的布尔移位/旋转函数用于8位、16位、32位或64位的字大小。布尔逻辑电路325输入还连接到比较块输入中的一者以用于最小值-最大值比较及排序。z输入375及z输入旋转/移位逻辑330支持算术及逻辑操作的1、2及4通道simd操作。与z输入375相关联的z输入旋转/移位逻辑330实现以下功能:
[0317]
1.恢复每一simd通道的浮点输入的隐藏位;
[0318]
2.当针对浮点模式呈现非正规(指数=0)输入时,将输出数据归零;
[0319]
3.simd通道扩展到128位(4个32位通道、2个64位或1个128位)通道以匹配加法器;
[0320]
4.将浮点正负号-量值转换为2补数尾数;
[0321]
5.正负号将2补数输出扩展到通道宽度;
[0322]
6. 8位、16位、32位及64位通道上的整数逻辑移位及旋转操作;
[0323]
7.将64位输入放置于128位的32位界限上的上部、中间或下部位置中的能力;
[0324]
8.按通道选择性地将算术输出归零、反转或取反;
[0325]
9.按通道选择性地将逻辑输出归零或反转;
[0326]
10.绝对值;
[0327]
11.将浮点转换为基数-32指数(左移位达指数的5个lsb的值);
[0328]
12.额外右移位达0个位、32个位、64个位或96个位以完成与乘法器的浮点对准;及
[0329]
13.通道重新排序(8位通道)。
[0330]
典型z输入375是呈以下格式中的一者的32个位:单精度浮点、simd-2半精度浮点、simd-4四分之一精度浮点、simd-2bfloat-16、32位整数、simd-2 16位整数或simd-48位整数。整数可为带正负号或无正负号的。对布尔逻辑电路325及比较320块的逻辑移位/旋转操作及输入仅针对无正负号整数有效。其它格式可通过,但对于逻辑模式应在此块中被视为无正负号整数。
[0331]
可通过以下操作而将z输入375扩展到64个位:将此rae的y输入370或rae对中的另一rae 300的z输入375串接到此输入的左边,使得扩展变为64位输入的最高有效32个位。所述64输入可为带正负号或无正负号整数或者ieee双精度浮点。当用作64位时,扩展的最高有效12个位是双精度浮点正负号及指数。扩展被视为逻辑操作及输出的整数。扩展输入还可经串接,使得所述扩展通过将64的偏移添加到4个主要通道的移位偏置且将-64的偏移添
加到通道4的移位偏置而变为最低有效32个位。隐藏位及指数掩码位也需要被交换高及低。由于双指数逻辑驻存于高x*高y rae中,因此需要此扩展交换以使z输入拆分匹配x或y输入拆分。
[0332]
配置输入设定针对每一通道的移位或移位偏置、选择掩码、设定操作模式、选择逻辑输出的逻辑移位、旋转或归零及反转、设定算术输出的带正负号或无正负号、取反、绝对值及归零。取反及归零还可由内部条件旗标或z正负号控制。配置输入设定针对每一通道的移位或移位偏置、选择掩码、设定操作模式、选择逻辑输出的逻辑移位、旋转或归零及反转、设定算术输出的带正负号或无正负号、取反及归零。
[0333]
针对整数格式的移位距离由配置中的位或由通过rae的x输入365而应用的外部移位控制件来控制。当选择x输入时,32位x值被分成与每一8位输入通道对应的四个八位移位控制件。每一控制通道中的最低有效7个位对应于移位距离且第8位是停用的通道。当将simd模式设定为4时,x控制件中的四个通道与z输入的四个通道1:1对应。当将simd模式设定为2或1时,使用与simd通道的最高有效字节相关联的控制通道来启用移位共享(控制位15:8控制下部16位通道、位31:24控制上部16位通道,且位31:24控制单通道simd的所有通道)。类似地,控制字固定移位设置也是以相同方式进行分割的32位字。针对浮点操作,x移位添加到浮点指数,从而允许用以递增或递减指数的方法。零的移位值(其为通道的移位控制与移位偏置的总和)导致伴随通道中的数据以其最低有效位放置在128位内部字的位0中。非零移位值将数据左移位,使得输入的lsb在128位内部字的等于移位控制与移位偏置的总和的位中结束。动态控制由指数逻辑335及配置产生。
[0334]
算术输出是到后乘移位-组合器310逻辑的z输入。此输出是呈进位保留形式(两个128位向量)的128位宽2补数。输出经格式化以匹配累加器输入(注意,这与在处于点乘积模式及复数乘积模式中时的乘法器simd模式不同)。输出可为单个128位通道、两个64位通道或四个32位通道。四通道输出是严格带正负号或无正负号整数(四分之一精度及半精度ieee浮点数被完全扩展为整数,其中左移位达指数的5个lsb)。两通道simd是bfloat16simd相乘-相加-累加的两个独立bfloat16,或者以其它方式为带正负号整数。bfloat16输出在累加器处左移位以将指数的5个最低有效位归零。单个128位通道是被左移位到基数32指数且然后根据需要被右移位32位的倍数以与其它加数对准的单精度或双精度浮点数,或者是128位带正负号整数。算术输出128位总和向量是经移位、经掩蔽且经传递、经反转或经归零z输入。进位向量输出仅含有每一通道的最低有效位位置处的 1二补数增量。其它位被隐含为零,因此进位向量仅具有四个非零位。进位向量位替换从移位-组合器网络中的在z输入加法器前面的乘法器移位器级输出的始终为零的最低有效位。
[0335]
z输入旋转/移位逻辑330的逻辑输出是连接到布尔逻辑电路325且连接到比较逻辑320的32(在被扩展时,64位)逻辑移位输出。这是经移位且经掩蔽z输入,其中经移位输入的第二图像被移位达通道宽度并任选地与z输入经移位数据进行or操作以便实现旋转。此输出可被反转(仅用于移位,而不用于旋转)或被归零。在逻辑输出上不存在2补数增量,以便避免针对增量的昂贵进位-传播加法器。逻辑输出仅打算用于带正负号或无正负号整数输入。带正负号整数输入不应用于旋转或通道重新指派操作,这是因为正负号扩展会干扰这些功能的正确操作。用于移位的带正负号输入产生正负号扩展的经移位数据。无正负号输入不会扩展用于移位的正负号。未经移位的数据将不改变地从输入传递到逻辑输出(移
位距离因输入通道的宽度而有所偏差,因此零移位输入会导致按通道宽度的右移位,从而产生零或经扩展正负号)。x、y及z输入数据-有效旗标不在内部由z输入逻辑使用。
[0336]
z输入操作及动态输入源由配置字控制,所述配置字部分地源自指数逻辑335块。配置选择浮点的输入掩码、正负号扩展、移位距离或移位距离源、通道掩码、反转/取反控制或其源、旋转/移位功能选择、通道停用、算术及逻辑输出启用(经停用输出被强制为0)、逻辑窗口选择、每一通道的指数源选择、指数输入掩码以及移位偏置。图31展示按模式的z输入375配置。
[0337]
还可在rae电路300中提供数据路径控制,例如:
[0338]
1.输入掩码

输入掩码将经掩蔽位归零以从浮点模式的移位数据中滤除指数及正负号位。其还可用作用以将通道归零以实现零指数或停用的通道的方法(在数据路径中存在可将通道归零的数个点,入口点由设计者自行决定)。输入掩码由simd模式及输入格式设定。
[0339]
2.隐藏位-当选择浮点格式时,隐藏位在浮点隐藏位的位置中强制为
‘1’
位。隐藏位通过通道归零而被越权控制。隐藏位取决于simd模式及输入格式。
[0340]
3.正负号扩展-针对每一8位输入通道存在正负号扩展控制件。当被设定时,所述正负号扩展控制件致使移位器网络在所述通道中正负号扩展到128位移位器的宽度。当通道经组合以成为16位、32位或64位输入通道时,仅最高有效通道应具有正负号扩展设定。正负号扩展应仅用于带正负号整数模式,且应连同适合于simd模式的通道掩码一起使用以在通道中容纳正负号扩展。正负号扩展控制件由simd模式及输入格式=带正负号设定。
[0341]
4.移位距离源

移位距离源控制件选择移位距离是源自配置位还是rae x输入。
[0342]
5.配置移位距离

当移位距离源设定为配置时,针对每一通道设定固定移位距离。将移位距离加到每一通道的移位偏置及指数移位以得出通道的移位距离。当移位距离源设定为x输入时,忽略配置移位距离。
[0343]
6.移位偏置

将每一通道的7位移位偏置的值加到移位距离及指数移位以得出每一8位通道的总移位设置。
[0344]
7.浮点对准-浮点对准指示用于双精度、单精度及bfloat模式的对准的额外32位右移位倍数的源。这是由浮点格式设定的。
[0345]
8.移位共享

移位共享选择哪一通道控制每一8位通道的移位。这允许由多个8位通道共享移位控制,使得不必在每一通道中复制移位设置。
[0346]
9.通道掩码选择-通道掩码在每一通道的移位器的输出处应用的固定32位通道掩码之间进行选择。选择关闭,2通道或4通道。这由simd模式设定且针对通道重新指派功能而被越权控制。
[0347]
10.取反/反转-源选择选择用于取反/反转的源,且每一通道的位控制32位输出通道。源是所有通道共用的,包含针对x中的通道的配置字、取反旗标及msb的设置。当通道源为
‘1’
时,将通道反转且如果启用算术输出,那么在算术输出上断言通道进位的位。通道反转控制跟随针对源通道的移位共享选择。当每simd模式组合多个通道时,仅针对最低有效通道断言进位输出。
[0348]
11.旋转/移位模式

单个配置位设定旋转图像是否与逻辑输出的移位图像组合。
‘1’
指示旋转模式。如果停用逻辑输出,那么旋转设置无关紧要。
[0349]
12.旋转宽度-将旋转通道宽度设定为由simd及64位扩展选择的通道宽度。
[0350]
13.算术及逻辑启用

两个位个别地启用算术及逻辑输出。
‘1’
值启用输出。输出被强制为零且如果停用输出,那么对应数据有效输出保持为零。
[0351]
14.逻辑窗口-逻辑窗口设置选择四个窗口中的一者,所述四个窗口选择在逻辑移位/旋转输出上输出哪些位。所述设由逻辑输出simd确定。
[0352]
15.指数掩码-指数掩码针对其中多于一个指数宽度适用的每一通道而选择从z或y输入传递到指数逻辑的位数。
[0353]
掩码由浮点格式选择。存在囊封所述格式、simd及功能加上在最小控制输入中的旋转选择、输出启用及移位距离的14种模式。双精度模式应在rae中具有指数逻辑,所述指数逻辑处置上部*上部部分乘积以便可以存取来自每一被乘数的指数位。这需要将64位扩展附加于64个位的低半部分以及64位z输入的高半部分中的4个本地通道上。这还将指数掩码置于适当的位置中。移位距离经修改以实现此。双精度hl反向模式反映了此。
[0354]
参考图30,z输入旋转/移位逻辑330针对5个输入通道中的每一者包括可变0到127位左移位器458。所述通道中的四个通道具有与4通道simd对应的8位输入。对于2通道及单通道操作,将通道组合。第5通道是连接到扩展输入以用于64位操作的32位宽通道。移位器的前面是掩码462,所述掩码取决于模式而改变,打算用于掩蔽输入处的浮点的指数及正负号位。经移位数据通道与逻辑or门464组合,且被反转以用于取反或将正负号量值转换为负的二补数输出。每32位算术输出通道进行反转。32位算术通道映射到8位通道中以用于逻辑输出。
[0355]
选择性反转的输出形成到算术的进位保留格式化输出的总和部分。所述输出的进位向量视需要含有针对每一通道的2补数完成的增量。进位及保留输出的总和是每一通道中的经移位z输入的2补数表示,如果设定取反控制,那么对所述总和进行取反。如果设定零控制,那么输出被强制为零。针对其中指数等于零的浮点输入或响应于每一通道的归零化配置控制,零被断言。z输入逻辑管线等待时间与从输入到z输入到移位/组合器的乘法器及后乘移位/组合器网络等待时间匹配。z移位器基于零,使得当移位为0时,通道输入的lsb映射到所有通道的128位输出的位0。使输入基于零准许我们通过在移位器与or组合器之间添加另一掩码来右移位通道,且还允许任意重新排序并组合通道(例如,两个四分之一精度及一个半精度通道),或对尾数及指数进行拆分处理。
[0356]
每一通道具有掩码462,所述掩码用零替换浮点正负号及指数位并在移位器的输入处断言隐藏位。在表11中详述按通道及按模式的这些掩码值,其
‘1’
位对应于被强制为零的输入位。为了在所实施设计中方便起见,可反转掩码位的含义。在所述表中还未展示归零化控制,所述归零化控制将掩码强制为全部
‘1’
,这又将通道数据强制为零。如果取消选择通道,并且还当适合于模式及通道的浮点指数为零时,归零化被断言。掩码产生是z输入指数及控制逻辑的一部分。
[0357]
z输入simd模式未必与乘法器simd模式相同。针对simd点乘积及复数相乘模式,乘法器组合器减少通道数目且在z输入及累加器处产生与乘法器的模式不同的模式。浮点模式需要断言是ieee及bfloat格式的一部分的隐藏位。当选择浮点模式时,在相关通道中断言隐藏位。隐藏位始终为
‘1’
,只有当通过零指数被强制为零或强制通道为零配置控制时除外。在表12中按模式列出隐藏位向量。输入掩码逻辑被掩蔽《=(隐藏or(z输入and not掩
码))并且不归零化。
[0358]
表11:按模式的z输入移位逻辑输入掩码
[0359][0360]
表12:按模式的z输入移位逻辑输入隐藏位
[0361][0362]
图32是图解说明移位网络458构造的框图。每一通道上的移位网络将通道扩展到128个位,且基于源自z输入指数逻辑的每一通道的7位控制而将通道数据左移位0位到127位位置。当位向左移位时,零位在右边移入以填充。每一通道的移位器是7层的2:1多路复用器,每一层移位达2的幂,比前一移位器大1。首先进行最小移位以使移位网络的宽度最小化。
[0363]
在图32中图解说明移位网络458的构造。第一级的宽度为输入宽度加1,第二级的
宽度为输入宽度 1 2,第三级的宽度为输入宽度 1 2 4,以此类推。任一级的宽度被限制在128位,因此移位超过128位的位会丢失。通道0到3的输入为各自9位(8位加上正负号扩展的扩展),通道4具有32位加上正负号扩展输入(仅用于64位)。移位控制随模式、针对浮点模式及针对z轴移位控制的每一通道上的指数而变。移位控制来自z输入指数逻辑。针对带正负号整数模式,移位网络458还应将输入正负号扩展到通道的宽度。为了进行此,将移位器的每一级的宽度增加一个位,且在未经移位输入上的2k最高有效位中将所述扩展位复制到下一多路复用器。第一层多路复用器将所述额外位设定为复制带正负号整数模式的最高有效位,否则将所述额外位设定为
‘0’
。针对2通道及1通道带正负号整数,仅组合通道中的最高有效通道以使较宽通道得以正负号扩展;较低阶8位子通道使其经扩展输入位设定为
‘0’

[0364]
每一移位网络458通道的输出需要通道掩码以将输出保持在通道内,否则正负号扩展将传播到下一最高有效通道,且用于浮点对准的右移位将下溢到下部通道中。下文在表13中列出针对simd模式的每一通道传递数据的位范围。当启用掩码时,在所展示位范围之外的范围被强制为零。对于算术模式需要通道掩蔽。可针对逻辑模式停用所述通道掩蔽以允许通道重新排序。如果带正负号整数用于算术移位,那么需要针对逻辑模式应用所述通道掩蔽。通道重新排序仅对于无正负号输入是合法的,这是因为正负号扩展需要通道掩码来约束正负号扩展,但通道重新排序会将通道数据移动到通道掩码之外。
[0365]
表13:用于算术通道阻塞的通道掩码
[0366]
模式通道0通道1通道2通道3通道4simd 263:063:0127:64127:64无simd 431:063:3295:64127:96无所有其它127:0127:0127:0127:0127:0
[0367]
输入通道中的最左边位被解释为用于浮点及带正负号整数的正负号位,且被解释为用于整数的数据位(此位被掩蔽到针对浮点格式的移位器,但由指数逻辑块使用以控制取反及二补数转换)。
[0368]
来自每一通道的移位网络的128位输出与所有其它通道移位器的128位输出进行逻辑or操作以形成单个128位复合输出(从464)。针对所有通道的移位器设置为零将每一通道的数据以最低有效位放置在输出的位0处。每一通道上的移位值在指数逻辑块中经偏置以向每一通道赋予不同的移位并防止算术操作的通道重叠。or逻辑还包含用于输出的每一32位通道的可选择反转,所述可选择反转将相关联输出通道的所有位反转(即,对通道数据执行1补数)。还依据模式及正负号位从指数块内控制所述反转。对于算术使用,所述反转形成2补数操作的一部分,所述2补数操作通过正负号扩展并在算术输出处加1来完成。通道组合及反转逻辑的输出进入算术输出并进入旋转图像逻辑以用于逻辑输出。对于算术输出不允许进行通道重新排序,这是因为每一通道的反转及2补数逻辑由输入的相同通道控制。图33图解说明按模式的位对准。
[0369]
z输入旋转/移位逻辑330的算术输出连接到后乘移位/组合器网络310,在所述后乘移位/组合器网络处对所述算术输出与在同一rae 300中所计算的乘积或乘积总和进行求和。算术输出是每一通道中以进位保留格式表示的2补数带正负号数据,所述进位保留格式是作为一对128位向量,其在每一通道中的总和是将被加到来自乘法器的乘积总和的2补数值。通道数目取决于累加器simd模式,所述累加器simd模式可或可不与乘法器simd模式
相同。通道针对simd-4为32位、针对simd-2为64位或针对单个操作为128位。总和向量是每一通道的具有反转的经移位z输入(如果选择反转)。进位向量包括 1以完成每一通道中的2补数。进位向量的所有其它位始终为零,因此那些位未被物理实施,从而允许与后乘移位/组合器网络的连接是单端的,每一通道加上1位增量。增量是利用进位向量完成的,以避免必须在z输入逻辑的算术输出处传播进位。
[0370]
旋转图像466or是经移位数据的副本,向经移位数据左移位达输入simd通道宽度,使得数据是两个经串接副本。逻辑输出是窗口化的(468),使得当经串接数据穿过窗口移位时,窗口中的数据显现为旋转的。针对零移位而展示图33中的位位置。移位将通道输入向上移动移位的位数,使得当添加左移位时,被移位出窗口的顶部的位似乎在窗口的底部处重新进入。当选择移位而非旋转时,将红色图例数据设定为零而非偏移移位的图像,因此零移位导致窗口中无数据,且随着移位距离增加,上部位展示在窗口的低端中并且对于最大移位,仅lsb保持在窗口的顶部处。旋转模式需要无正负号输入,这是因为经旋转图像在与正负号扩展进行or操作时通过正负号扩展而被掩蔽。
[0371]
逻辑输出通过取决于模式仅选择出通道窗口内的位而将simd通道重新合并到原始大小的通道。所述选择是经由4:1多路复用器进行,所述4:1多路复用器针对4x8 simd、2x16 simd、32位或64位输出选择窗口。当不在64位模式中时,上部32个位被停用为零。
[0372]
图34是图解说明从ieee单精度到基数32的浮点格式转换的框图。浮点模式需要处置浮点指数,以及根据指数值操纵尾数数据路径。两个浮点值的乘积的指数是被乘数的指数的总和。对于浮点加法,每一加数应具有相同的指数以便被求和。当加数指数不相等时,将具有较小指数的加数右移位达由指数的差表示的位数。在右移位之后,两个加数共享较大的指数并可被求和。当存在多于两个加数来进行求和时,应确定加数当中的最大指数且然后需要将具有较小指数的所有加数右移位达等于指数的差的位数。
[0373]
为了使累加器315环路内部的移位量最小化,rae 300使用非常规的内部格式,其中浮点数向左预移位多达31个位,转换为基数-32指数。对指数的调整以抵消左移位会将指数的5个最低有效位清零,然后将所述5个最低有效位摒弃且所有下游对准移位均是以32位的倍数。此修改显著降低了关键累加器环路内部的指数比较及移位逻辑的复杂性,但以更宽的累加器为代价。另外,在累加器315之前进行求和需要在累加器315前面的额外移位逻辑,且由于存在多于两个加数,因此每一路径均需要其自身的移位器。在图34中图解说明并由指数逻辑电路335执行向基数-32指数的转换。
[0374]
7.指数逻辑电路335
[0375]
图35是图解说明指数逻辑电路335的框图,所述指数逻辑电路包括z输入指数逻辑465、超量移位逻辑470及乘法器指数逻辑475,下文更详细地描述其中的每一者。在代表性实施例中,累加器315包含其自身的指数逻辑。
[0376]
此rae电路300还支持点乘积模式,所述点乘积模式对来自多达四个rae 300的多个乘积以及相关联加法输入进行求和。对那些乘积的求和需要从所有加数中找到最大指数并计算每一指数与所述最大值之间的差,以确定每一加数的尾数的右移位距离。ieee半精度值及四分之一精度值通过基数-32指数转换而被转换为整数,因此除了转换移位及移位偏置以恰当对准每一通道中的结果之外,不需要进行指数处理。累加器315估计冗余正负号位并在可能的情况下左移位32位的倍数而不溢出,并且累加器的指数相应地递减(累加器
指数是在精简去5个lsb之后的最左边位)。后累加器最终加法器、舍入及正规化级(340)重新正规化经累加总和并将正规化移位距离附加到累加器的指数值以重构ieee或bfloat全指数作为正规化的一部分。
[0377]
指数逻辑电路335是在累加器315前面的指数处理。指数逻辑电路335的功能可概述为:对乘法器指数进行求和、补偿指数偏置;通过左移位将所有浮点输入转换为基数-32指数;在所有加数当中找到最大超量指数(超量是基数-32指数),包含来自rae电路四元组450中的其它rae 300的指数;计算每一加数的移位距离,作为与最大值之差的32倍;针对正确的输出对准添加模式相依的移位偏置;针对z输入移位器330及乘法器移位-组合器网络310移位器产生移位器设置;以及检测零指数、强制尾数及指数为零(将非正规数转换为零)。
[0378]
超量移位逻辑470是找到最大指数的逻辑,包含到rae电路四元组450中的其它rae300的连结。乘法器指数逻辑475包含被乘数指数的求和以及移位-组合器的移位器的移位网络控制的推导。z输入指数逻辑465计算用于z输入移位器330的移位控制。
[0379]
非正规化输入被零替换(零指数强制数据路径为零)。在极少数情形中,需要非正规化数字,rae 300中的比较块320及其它逻辑可用于检测非正规数且使用整数相乘及相加来引导替代处理路径以根据ieee标准处理非正规数。
[0380]
将32位x输入365、y输入370及z输入375输入到指数逻辑电路335以便可以存取浮点指数及正负号。这些包含针对simd模式的多组指数。
[0381]
每一rae 300输出其本地最大3位基数-32指数作为7导线条形码信号。3位指数经转换以接通由3位代码指示的所述数目个连续导线。这7个导线连接到rae电路四元组450中的其它三个rae 300中的每一者(未单独图解说明)。这些共享每一rae 300的最大指数,或者对于双精度模式将经解析超量移位传输到rae电路四元组450中的所有rae300。
[0382]
用于乘法器移位器-组合器网络310的每一通道的6层移位器及零门的移位控制由指数逻辑电路335产生。用于第二层级乘法器移位器的四个移位控制也由指数逻辑电路335产生。用于z输入移位器330的每一通道的7层移位器及零门的移位控制由指数逻辑电路335产生。用于第二层级乘法器移位器的四个移位控制也由指数逻辑电路335产生。
[0383]
指数逻辑电路335的配置一般包含以下控制:z整数移位/旋转距离;z移位源控制(x输入、配置、指数);数字模式(simd通道、浮动格式);指数掩码(由数字模式及simd设定);以及针对通道及相邻rae 300输入的启用控制。
[0384]
超量移位逻辑470确定每一加数所需的32位右移位数。对于融合相乘相加操作的一般情形,对z输入与乘积进行求和。此求和在累加器315之前且在相邻rae 300乘积树的输出被组合之前发生。为清晰起见,针对z输入指数逻辑465及乘积加数论述超量逻辑。
[0385]
超量移位是指对准加数以完成求和所需的右32位移位。具有超过5位指数的模式需要超量移位逻辑来确定每一加数需要右移位多少。超量移位逻辑470应首先确定所有加数中的最大指数。然后对于每一加数,从最大值减去其指数以确定应该应用于所述加数的右移位量。
[0386]
存在多达8个加数,其具有需要被组合的8位指数(四个融合相乘-相加的单精度点乘积,每一融合相乘-相加具有浮点z加数)。尽管z输入在邻近rae 300乘积之后被添加到总和,但被求和的所有乘积应被移位到相同的权重且每一乘积的z输入需要被类似地加权。因
此,即使邻近rae z输入并未对本地总和做出贡献,指数逻辑电路335也查看所有有效z输入。这需要rae电路四元组450中的4个rae 300之间的通信来确定最大指数。
[0387]
bfloat16模式具有两个浮点值,所述两个浮点值各自每fpmac具有独立8位指数。针对bfloat点乘积,对来自每一fpmac的两个乘积及一个z输入加数进行求和,从而需要具有指数的多达12个加数。不具有点乘积的bfloat不允许相邻rae的融合求和,这是因为rae间的指数连接不支持两个指数。最后,双精度浮点准许使用接合在一起的四个rae核心进行单个融合相乘-相加。下文在表14中概述使用超量指数移位的模式。
[0388]
表14:
[0389][0390]
图36是图解说明用于z移位器330及乘法器移位器-组合器网络310的超量移位逻辑470的框图。图37是图解说明具有2个输入x扇出-2(2x2)门的3位索引到8位条电路480的框图,且所图解说明“1”是缓冲器。图38是图解说明用于使用全加法器将条的xor差转换为索引的记数电路485的框图。图39是图解说明具有2个输入x扇出-2(2x2)门的8位条到3位索引电路490的框图。
[0391]
超量移位逻辑470含有作为其中心件的12加数过程,且针对双精度的较宽广指数及独特分配要求所需的特殊处理添加逻辑。大的加数过程的额外精简副本用于simd模式的第二bfloat16通道。超量移位逻辑470通过将每一3位指数转换成8位条表示(条表示类似于独热(one-hot)解码,只是除了独热位之外,低于经解码位的所有位也被接通)而简化比较
多达12个3位超量指数的任务。这是与独热相比较不复杂的解码且针对此设计具有优点。为了找到最大指数,每一条的顶部7个位进行按位or操作(条的最低有效位始终为
‘1’
,因此其被摒弃)。最高的条优于较短的条且对应于最大指数。or树通过8位or而被分解成本地3输入以预先组合来自rae 300内的一个或两个乘积指数及z输入指数。所述or由and-or-invert门471构建,使得去往or的每一输入具有用于关闭任何选定输入的门。7线本地最大值经由rae 300之间的专用7位连接而传输到rae电路四元组450中的3个其它rae中的每一者。
[0392]
每一rae的接收器具有来自其它rae 300的三个7位输入加上来自其自身的内部7位输入。这些输入在每一rae 300中一起被进行or操作,使得每一输入保持最大条的副本。rae组合结构也是and-or-invert门,使得来自其它rae的输入可在此rae的输入处被阻塞(这允许rae与独立总和一起使用或与独立总和成对地使用)。然后,最大指数条单独地与本地条源中的每一者按位进行异或操作。异或输出仅在与最大值不同的条位上具有
‘1’
位。
‘1’
位的计数指示所述加数的指数之间的差。所述差使用7位记数-相加被恢复为二进制索引,以使用记数电路485对1位(其为连续的,但可在7位字段中的任何地方)进行递增计数。
[0393]
最大实际移位为3个32位移位或96位。除此之外,加数仅被归零,这是因为移位是128位或更多。记数加法器的两个最低有效位的值对应于0、1、2或3个32位移位的移位。剩余的记数加法器位,如果是
‘1’
,那么将加数归零。由于差是最大值减去本地指数,因此所述差始终是非负移位。
[0394]
差最大值-z是z输入的超量偏移,且类似地,差最大值-乘积是乘积的超量移位。这些超量移位经由编码块而应用于相关移位器网络以控制所添加的右移位。最大条也被解码成表示最大指数的索引,所述索引由累加器用作累加器输入的指数。尽管记数-加法器485也可用于解码累加器指数,但输出始终是条,因此解码是简单的且无需记数-相加的全加法器。第二bfloat通道具有相同超量逻辑的精简仅本地版本,以找到通道1z输入及乘积的最大值。对于此第二最大值,不存在在rae之外的任何连结,因此其仅为这两个加数超量指数的本地or。将最大值转换为累加器的二进制指数,且与针对初级相同地计算超量移位距离。
[0395]
针对双精度的逻辑是不同的,这是因为所述逻辑具有6位而非3位超量指数,其仅具有两个加数(z输入及乘积;对于双精度不存在点模式)。所述双精度是唯一的,这是因为乘法器分布在4个rae上且因此其需要将乘积超量移位分配到rae电路四元组450中的其它rae 300。双精度超量逻辑驻存于含有最高有效x位及y位的乘积的同一rae 300中,这是因为所述rae是找到两者的指数的地方。另外,z输入逻辑使用输入扩展,但所述输入扩展必须是最低有效的一半,以便使z输入逻辑与高阶输入驻存于同一rae中。x输入及y输入两者均由被乘数占用,因此z扩展输入取自相邻rae的z输入。对于此特殊情形(双反向hl),在z输入中修改了扩展在z移位器的最低有效位上的偏置。
[0396]
双精度超量逻辑使用进位保留加法器,所述进位保留加法器馈送12位最终相加以执行x y-z来找到乘积与加数指数之间的差。这是在单独的加法器中完成的,而非具有两层前瞻加法器的延迟及经添加区域来获得快速(x y)

z。12位差包含经添加正负号位来辨别哪个更大。12位总和被馈送到解码器中,所述解码器直接将12位二进制重新编码为一对饱和的5位条值以用于超量乘积移位及超量z输入移位。在表15中列出解码器的真值表。每一条值在左边以
‘0’
填充到8位条且不计算最低有效位以达到7位条,这类似于用于初级超量电路中的最大值的那些。乘积条接线到本地and-or-invert最大值,使得所述乘积条具有到
其它rae 300的分配的路径。
[0397]
针对双精度模式,将去往and-or-invert的其它输入停用,使得乘积超量移位不改变地输出。在每一rae中的接收端上,仅启用来自计算双精度超量的rae的输入。双精度模式关断去往通道3超量移位逻辑的其它输入,使得乘积超量移位被解码为正确移位。在含有操作双精度超量差逻辑的rae中,z超量条经由多路复用器在同一rae内直接接线到z超量移位记数加法器,以允许其也直接转化为z移位距离。
[0398]
差加法器输出的msb用于选择被乘数指数的总和x_plus_y或z指数六个最高有效位来用作累加器指数。由双精度模式控制的多路复用器在最大双精度指数与来自上文所论述的初级超量逻辑的经解码最大指数(所述指数在左边零扩展3个位以在针对双精度及单精度的累加器中使用相同指数逻辑)之间进行选择。
[0399]
表15:超量移位双精度移位解码器真值表
[0400][0401][0402]
图40是图解说明乘法器(及移位/组合器)指数逻辑475的框图。应针对每一simd通道维持单独的乘积指数。乘积指数是所述通道的被乘数指数的总和。另外,应检查每一被乘数指数以查看其是否等于零,且如果通道中的任一个被乘数指数为零,那么将所述通道的乘积清零,这是因为非正规数被视为零。每一通道的指数加法器476还可扩展一个位以便检
测指数溢出。如果被实施,那么指数溢出可被引导出rae的后缀(及/或条件旗标)输出405以供用于使用额外资源产生无穷数。
[0403]
每一通道的最低有效乘积指数位被添加到模式特定的偏置中、被精简并被提供到移位-组合器逻辑以控制指数预移位。针对其中对多个乘积及/或z输入加数进行求和的模式(点及复数相乘),应选择最大乘积指数,且然后应将每一乘积右移位达所述乘积的指数与最大指数之间的差以对准尾数。
[0404]
在前一章节中关于超量移位计算而论述最大指数的计算。用以对准尾数的移位是右移位32位的倍数。128位或更多的移位使加法器宽度下溢,因此当超量移位超过3*32位时,加数或乘积被零替换。最大基数32指数被传递到累加器上作为乘积与加数的总和的指数。图40展示乘法器指数逻辑475,下文对其进行进一步详细地描述。
[0405]
存在针对每一rae 300而维持的四个单独指数,以便适应所有simd模式。四个通道模式使用所有四个指数,两个通道模式使用这些指数中的两个指数(通道1及3),且其余模式仅使用所述指数中的一个指数(通道3)。双精度浮点格式具有11位指数且仅使用通道3指数逻辑。单精度浮点具有8位指数且也仅使用通道3指数逻辑,其中通过掩蔽为0而停用3个lsb,从而使8个位有效。bfloat16是利用8位指数的2通道simd。其使用通道3,所述通道3具有被掩蔽用于上部通道的3个lsb及用于下部通道的8位通道1指数。
[0406]
半精度也是2个simd通道且使用通道3及通道1,然而,半精度指数是5位,因此除了这些通道指数的最高有效5个位之外,掩蔽所有位以获得半精度,并且不存在可能的超量移位。四分之一精度是利用四位指数的四通道simd。对于四分之一精度仅使用通道0及通道2指数,因此那些通道的指数逻辑被固定于4位。通道1及通道3指数经掩蔽以仅使用那些通道中的每一者中的4个msb以获得四分之一精度。与半精度ieee格式一样,不存在可能的超量移位,这是因为指数小于6位。
[0407]
还针对每一被乘数指数存在零检测逻辑,所述零检测逻辑经掩蔽以匹配当前模式指数宽度。如果通道的被乘数指数中的任一者为零或超量移位大于3*32,那么产生强制通道零信号。一组多路复用器选择适当的强制零信号以通过simd模式应用于每一通道。
[0408]
第二组多路复用器从适当的乘积指数中选择出适当的5个lsb以控制每一通道中的基数32移位。乘法器乘积在累加器之前未被重新正规化,因此也不需要调整乘积指数。尾数数据路径宽度计及基数点左边的额外位,以及在对乘积进行求和时的增长。
[0409]
通过对通道指数5个lsb与模式相依的移位偏置进行求和而计算通道移位。所述总和的低四个位直接控制初始0:15移位。将经偏置指数的上部位添加到来自针对通道1及3的超量移位逻辑的超量移位距离且然后将所述总和重新编码到组合器级中的多路复用器的移位控制。
[0410]
在图25中列出后乘移位-组合器的移位距离(其中e4、e5分别是指乘积指数的4个lsb及5个lsb;负移位是右移位,正移位是左移位;“零”指示通道被强制为全部为
‘0’
;且“0”指示零移位)。应注意,移位距离受模式、指数lsb影响且在一些模式中受与移位器相关联的指数与经求和值的最大指数之间的差影响。后乘移位-组合器的移位距离
[0411]
图41是图解说明z输入指数逻辑465的框图。z移位器330应将z输入与每一通道中的经移位乘法器乘积总和对准,以便对乘积与z分量进行求和。将乘法器305乘积预移位到为32的倍数的指数,以便消除最低有效5个指数位。类似地,z输入指数逻辑465将z输入数据
预移位以使用5个指数lsb来消除5个最低有效指数位以实现移位。将模式相依的移位偏置添加到每一通道中的移位以实现正确的移位来将尾数恰当地放置在通道中。指数逻辑还具有从配置或x输入指定的整数移位的输入。
[0412]
具有多于5个指数位的模式(双精度及单精度ieee以及bfloat16)需要在预移位之外进行额外移位,以将z输入与乘法器对准。额外移位由先前在指数超量移位章节中所论述的超量移位逻辑确定。将超量移位乘以-32添加到经偏置移位,以达到每一通道的0:127位移位距离。在图29a中详述按模式列出的按通道的移位偏置。移位总和为8位,其中额外msb用于检测超出0:127位移位范围的移位。所述移位溢出用于在通道移位超过127位时强制所述通道为零。
[0413]
指数逻辑还具有用于每一输入通道的指数的与零比较电路以检测零指数。对于通道1及3,取决于模式而将指数lsb掩蔽以选择11位、8位、5位或5位指数。通道0及2为无指数或仅4位指数。针对每一通道的指数等于零检测由模式选择器选择以产生零通道逻辑,所述零通道逻辑的输出与通道(未展示)的移位溢出组合以针对每一通道产生强制通道零信号。
[0414]
8.累加器315
[0415]
图42是图解说明累加器315的框图。累加器315是经设计以累加由乘法器-移位器-组合器网络310呈现的乘积总和的融合128位累加器。累加器315是多模式的,从而提供各种浮点及固定点格式,且支持一通道、两通道及四通道simd操作。
[0416]
累加器是经登记加法器,其中一个输入由其先前输出提供且另一输入由经布置以对连续输入进行求和的乘法器移位-组合器网络310逻辑提供(所述另一输入是z输入与来自此rae 300乘法器305的乘积以及附加rae 300乘法器乘积的总和)。累加器315输入、输出及内部数据路径是以进位保留格式。累加器315支持一个128位、两个64位或四个32位整数算术通道,或者一个128位(ieee双精度或单精度)或两个64位(bfloat16)浮点通道。累加器315包含累加器指数算术513及移位器511以支持基数-32指数(移位32位的倍数)。移位器511负责重新正规化32位左移位以及在乘法器输入(z输入)或累加器反馈中的较小者上右移位32位的倍数,以便对准基数点以进行加法。
[0417]
总之,累加器315进行操作以:
[0418]
1.以所选择格式对连续输入进行求和;
[0419]
2.支持一个128位、两个64位及四个32位通道中的整数累加;
[0420]
3.支持ieee双精度及单精度浮点累加(一个通道);
[0421]
4.支持两个通道bfloat16浮点累加;
[0422]
5.将浮点先前经累加总和或z输入右移位32位的倍数(移位具有较小指数的一者)以对准基数点来准备进行加法;
[0423]
6.在以2或4通道模式进行操作时,视情况利用进位阻塞器及移位阻塞器来分隔通道;
[0424]
7.计算并维持每一浮点通道的累加器指数。指数是基数32指数,其为3个位,只有当其为6个位时的双精度除外;
[0425]
8.将累加器输出左移位32位的倍数以重新正规化基数32值(并相应地调整累加器指数);
[0426]
9.具有1ghz时序的累加器环路周围的单个寄存器延迟;
[0427]
10.浮点右移位应在每一通道中设定辅助舍入位以支持舍入到偶数;
[0428]
11.左边的额外位应保持加法器溢出并被感测以影响右移位及指数增量以校正浮点的溢出;
[0429]
12.整数溢出应被检测并用正负号锁存且传递到最终加法器逻辑以实现整数饱和逻辑;
[0430]
13.当右移位超过通道宽度时,将z输入或累加器反馈归零化;
[0431]
14.通过与z输入上的第一有效输入同时将反馈输入强制为零而初始化累加器;
[0432]
15.通过保持所有输入的初始化条件而允许融合相乘-相加(无累加器);
[0433]
16.向最终加法器提供前导正负号预测器输出。前导正负号预测器指示n或n-1个重复的正负号位(用于控制32位的倍数的内部移位并控制最终加法器中的更精细移位);
[0434]
17.登记累加器z输入及输出;及
[0435]
18.将整数转换为浮动、1、2或4通道(当附加到最终相加逻辑时)
[0436]
参考图42,对于固定点操作,将累加器移位全部强制为零移位且忽略或不使用指数寄存器。当初始化旗标为
‘1’
时,累加器反馈的右移位逻辑将反馈累加器值强制为
‘0’
,从而允许累加器以2补数进位保留形式复制呈现于zin输入处的值。当初始化为
‘0’
时,累加器输出寄存器的当前值被馈送到4:2压缩器509的右输入、在其被加到(以进位保留形式)未经移位zin输入数据处未被移位,且进位保留总和返回到累加器寄存器。如果相加导致溢出到额外msb中,那么设定违规通道的溢出旗标并保持直到再次初始化累加器。除了默认128位单通道模式之外,固定点操作还准许2(各自64位)及4(各自32位)通道simd模式。对于多个通道,4:2压缩器509在每一通道与附加到每一通道的辅助msb之间具有进位阻塞门以检测溢出。输入移位器511a始终设定为零移位以用于固定点累加。如果可满足时序及功能要求,那么可由设计者自行决定使用输出移位器511b来选择四个32位字段中的一者以用于输出,以减少逻辑门计数。
[0437]
累加器使用基数-32指数来简化关键累加器环路内的移位逻辑。将传入数据向左预移位多达31位,使得低阶五个指数位变为零。那些归零指数位被丢弃,从而仅留下左边的指数位,累加器内的所有对准及正规化移位以32位的倍数完成。此实施方案减少了累加器内的移位器层且还大大减少了累加器的指数逻辑,从而有助于关闭时序。通过在移位-组合器及z移位逻辑中发生的基数-32指数转化而将ieee半精度及四分之一精度格式(其分别具有五个指数位及四个指数位)有效地转换为整数。对于这两种格式,累加器以适当的整数模式来进行操作。累加器设计省略simd bfloat,这是因为所述模式是需要大量额外硬件的特殊情形。累加器浮点模式始终为单通道、双精度,当选择单精度时,所述双精度在最终加法器处向下舍入为单精度。针对整数模式,累加器可操作为单个128位通道、两个simd 64位通道,或四个simd 32位通道。浮点加法要求两个加数的基数点相同。这暗示加数中的一者应相对于另一者移位直到两者的指数匹配为止。设计选择具有较小指数的加法器(图式上的4:2压缩器)输入以进行达对准所需的32位移位数的右移位。每一32位右移位对应于向与所述输入相关联的指数加1。指数逻辑计算所需移位的方向及距离,并致使移位逻辑将较小输入右移位32位的正确倍数。对于128位或更多的移位,较小输入从加法器的128位宽度移位开,因此较大移位将输入归零而非对其进行移位。移位还在128位累加器的lsb端设定添加的ieee舍入位、保护位及粘滞位以支持ieee舍入到最接近偶数模式。针对浮点2通道simd
(仅用于bfloat16),用于舍入的3个位附加到两个通道的lsb上。当两个加数的正负号彼此相反时,使累加器结果具有比输入中的任一者更多的前导正负号位是可能的。如果前导正负号位数足够大以允许左移位而不会丢失正负号,那么输出移位器将数据左移位32位的倍数以消除超量前导正负号位,借此在基数-32指数系统中重新正规化。累加器指数递减32位移位数以调整左移位的指数。指数逻辑为8位宽;6个位(11位到5位)用以容纳ieee双精度指数,且额外两个位用以检测指数溢出及下溢。
[0438]
累加器315在左边具有足以吸收溢出的3个额外位(额外位还存在于相乘移位-组合器逻辑链的后面级)。如果发生到那些位中的溢出,那么累加器输出移位执行32位的右移位并伴随累加器指数递增以修复溢出。累加器315不支持simd浮点,这是因为半精度及四分之一精度ieee通过基数-32指数转换而被转换为整数。我们选择不通过累加器支持bfloat16 simd,以便大体上降低累加器复杂性。针对浮点simd-2(仅bfloat16),额外msb附加到两个通道。针对浮点simd-2模式,4:2压缩器中的位64处的通道阻塞器经激活以防止通道0影响通道1中的总和,且移位器全部需要额外门控来用0替换从低通道移位到高通道的数据并用经扩展正负号替换从高通道到低通道的数据。
[0439]
累加器315具有带正负号尾数以及初级及次级指数(以支持simd-2)连同来自乘法器-移位-组合器网络310的数据有效。所述累加器还具有全部为所有simd通道共有的配置、初始化累加器旗标、复位及时钟输入。块输出包含经累加数据、初级及次级指数、经估计前导正负号位计数,以及累加器数据有效旗标。
[0440]
zin带正负号尾数输入502部分以进位保留形式呈现(两个128位向量(实际上在每一simd-2通道的lsb处扩展3位,且在每一simd2通道的msb处扩展tbd位并在每一simd4通道的msb处扩展tbd位))。输入在累加器逻辑的入口处被登记,且所述寄存器通过数据有效输入信号而被时钟启用。zin尾数可为一个128位通道、两个64位通道或4个32位通道,在lsb处具有用于ieee舍入的辅助扩展且在每一通道的msb处具有用于溢出检测/校正的扩展正负号。数据是以进位保留形式表达的带正负号2补数。
[0441]
6位zin初级指数输入504是对应于11位ieee双精度指数的基数32指数。其还用作ieee单精度的3位基数-32指数及simd-2bfloat16的上部通道(通道1)。指数针对bfloat及ieee单精度是被转换为基数32的超量-127且针对ieee双精度是也被转换为基数-32的超量-1023。指数可扩展一个位以帮助检测及处理指数下溢及溢出。
[0442]
当选择浮点simd-2模式时,3位zin次级指数输入506是对应于8位bfloat指数的基数32指数,所述8位bfloat指数对应于通道0。对于所有其它模式,次级指数输入被忽略,然而,设计者可要求在其它模式的次级输入上复制初级指数以便简化累加器关键时序环路内部的逻辑。指数可扩展一个位以帮助检测及处理指数下溢及溢出。
[0443]
累加器逻辑保持其当前状态,只有当zin数据有效508被断言为
‘1’
时除外。
‘1’
条件指示zin尾数上的输入数据,且指数对于选定模式是有效的。如果在zin数据有效的同时初始化旗标为
‘1’
,那么将zin的值复制到累加器寄存器而不添加任何内容(如果其具有溢出(右移位)或由移位-组合器中的减法所产生的足够前导正负号位以允许正规化移位,那么其可得到-32位、0位、32位、64位或96位的正规化左移位。当在zin数据有效=
’1’
的同时初始化旗标为
‘0’
时,将zin输入上的数据添加(以适当的对准移位)到累加器输出的当前值。
[0444]
在代表性实施例中,tlast旗标510用于致使经累加总和输出且利用下一有效输入来重新初始化累加器。对于累加的一系列样本中的最后有效样本,将tlast设定为
‘1’
。累加器在输出最后输入样本所加到的总和时断言其输出数据有效,且然后利用下一有效数据输入来重新初始化(重新初始化意味着其加载zin数据而不向其添加任何内容)。如果在数据有效并非也为
‘1’
的情况下将tlast置为
‘1’
,那么累加器在下一数据有效时重新初始化而不输出数据有效。
[0445]
在替代实施例中,初始化旗标510致使到加法器中的累加器反馈被强制为零,从而将zin上的值复制到累加器。如果在输入处的数据中存在溢出或多于31个前导零且模式为浮点,那么经复制值将被重新正规化。初始化旗标还门控累加器数据有效,因此仅在累加器被写入有新初始数据的同一时钟上断言所述累加器数据有效。所述门控由累计和(cumsum)配置位越权控制,使得针对每个有效输入存在累加器数据有效。
[0446]
输出的128位尾数部分512以进位保留形式(两个128位向量)呈现。输出可为一个128位通道、两个64位通道或四个32位通道。数据是以进位保留形式表达的带正负号2补数。数据仅在附带累加器数据有效旗标时有效。数据输出在数据有效输入一个时钟之后被断言,且数据输出是在用去往累加器寄存器中的新初始数据替换经累加总和之前的经累加值。
[0447]
所估计前导正负号位输出514指示在内部32位及64位重新正规化左移位或32位溢出校正右移位之前的累加器处的前导正负号位数。此为经编码输出,所述经编码输出指示累加器输出处的重复正负号位数。估计可具有一个位的误差,从而指示n个或n-1个重复正负号位,这取决于进位向量与保留向量之间的位分布。经编码前导正负号位由最终加法器逻辑使用以将数据及指数重新正规化为ieee格式。最终加法器逻辑(340)对数据进行解码以确定是否需要额外移位来完成重新正规化。
[0448]
初级累加器指数输出516针对ieee单精度及bfloat标称地为8位超量127或针对ieee双精度标称地为11位超量1023。这些被改变为所有浮点数的12位超量2047代码以允许更容易地检测浮点溢出及下溢来创建异常旗标。由移位组合器及z输入移位电路通过将尾数左移位以将指数的5个lsb清零并丢弃那些经归零位而将12位指数转换为7位基数-32指数。当累加器配置并非是浮点模式中的一者时,未定义累加器指数输出。
[0449]
次级累加器输出518是仅用于浮点simd-2(仅bfloat16)模式的8位超量-127指数的最高有效3个位。此输出在其它模式中未被定义,然而,如果初级指数输出简化累加器或最终加法器中的逻辑,那么设计者可要求这些复制初级指数输出的lsb。指数可扩展一个位以帮助检测及处理指数下溢及溢出。当累加器以固定点模式中的一者进行操作时,指数输出也未被定义。
[0450]
作为选项,累加器数据有效输出在其为
‘1’
时指示累加器输出上的有效数据,包含前导正负号、尾数及指数(针对一些模式,这些字段中的一些字段未被定义)。否则数据被视为无效。取决于配置,在数据有效之后1个或2个时钟,累加器数据有效为
‘1’
,并由初始化旗标及累计和配置来门控。
[0451]
配置可包含以下控制,举例来说:
[0452]
1.simd设置将固定点操作的通道数设定为00=1通道、10=2通道、11=4通道;
[0453]
2.浮动选择固定点或浮点。当浮点时,simd在内部被强制为“00”;
[0454]
3.无累加位等效于保持init=1(每个循环将输入传递到输出);
[0455]
4.用于累积总和的累计和位,其在每当输入被添加到总和时输出数据有效;
[0456]
5.累计和控制位;
[0457]
6.格式位(3)设定数字格式、固定/浮动、数字通道;
[0458]
7.无累加位(此可在累加器之外被处理),等效于保持init=1;以及
[0459]
8.数据有效延迟位

可与累计和组合。
[0460]
累计和配置位在被设定时致使累加器315数据有效输出为对应于zin数据有效的
‘1’
。这准许产生累积总和,例如可用于计数器及积分。如果累计和=
‘0’
,那么数据有效仅在累加器寄存器利用与初始化旗标=
’1’
同时到达的新有效数据进行更新之前的时钟循环上有效。累计和还需要将数据有效输出延迟一个时钟,使得在添加最新输入之后,输出是经累加总和。在表16中提供实例性格式配置设置浮点及固定点格式以及通道数。
[0461]
表16:
[0462]
代码固定通道格式00001ieee单精度001022x bfloat1601001ieee双精度01104非法10011int 128101122x int6411011非法111144x int32
[0463]
非累加配置位在被设定为
‘1’
时强制累加器315反馈始终为零。这实际上使累加器成为浮点的正规化传递,以及固定点的简单传递。在内部,这等效于强制初始化旗标始终为
‘1’
。如果存在外部方法以将初始化旗标强制为
‘1’
(在条件旗标逻辑中),那么可消除此配置位。
[0464]
图43是图解说明累加器315的电路图,其中第二通道(仅bfloat)的指数变灰,并突出显示关键路径。rae累加器315使用基数32移位以便使从累加器输出寄存器穿过累加器返回到寄存器的关键反馈路径内部的逻辑电平最小化。
[0465]
图44是图解说明用于累加器315中的前导正负号及n*32移位电路517的电路图。图45是图解说明也用于累加器315中的具有深度log2(n)的记数到条电路519结构的电路图,其中针对simd拆分添加逻辑。
[0466]
9.布尔逻辑电路325
[0467]
图46是图解说明布尔逻辑电路325的布尔逻辑级520的电路图,且可具有独立配置的32个位,针对输入到布尔逻辑电路325的每一位使用布尔逻辑级520。布尔逻辑电路325提供用于以全组的2输入布尔函数来补充rae 300alu函数的可配置按位布尔逻辑电路325。32位数据路径上的每一位具有能够对同一位位置中的输入位进行任何2输入布尔函数的独立编程的布尔逻辑级520。布尔逻辑电路325还提供一种提供由x输入365控制的按位2:1选择的方法。32位输出由32位输出的32输入nand 522补充,并被发送到条件旗标输出逻辑。
[0468]
z输入具有来自比较块320中的索引计数器的经由z旋转器的连接,以准许所述计
数器用作地址产生器。所述路径在z输入移位器之前还具有可选择有线位反向以供与由混合基数算法建立的fft一起使用。
[0469]
除一般用途之外,布尔逻辑电路325具体经设计以准许进行计数排列以产生复杂地址序列,包含输入计数的经位反向、经掩蔽及经旋转(结合z移位逻辑)排列,还可通过比较块320内部的索引计数器在rae 300中产生所述复杂地址序列。布尔逻辑还经设计以准许进行简单字段合并,包括一个源的旋转以及在经旋转源与第二固定源之间的按位选择。
[0470]
z输入是去往布尔逻辑电路325的初级32位输入中的一者。其通过选择器397(图解说明为第三数据选择(导向)多路复用器397)连接到z输入移位器330输出或连接到比较块320z输出(其兼作计数输出)。由于此布尔逻辑电路325包含输入选择器,因此在布尔逻辑电路325上存在单独的z移位及z比较输入。z输入的位用作逻辑模式中的每一位处的两个布尔变量中的一者,或用作选择模式的选择变量。当z为
‘0’
时,输出是两个低阶寄存器位中的一者,如由y输入370所选择。当z为
‘1’
时,输出是两个高阶寄存器位中的一者,如由逻辑模式中的y输入或选择模式中的x输入365所选择。
[0471]
y输入370是去往布尔逻辑电路325的初级32位输入中的一者。其连接到比较块320(其可使y输入通过)的y输出。当
‘0’
时,y输入370选择偶数寄存器位或当
‘1’
时,所述y输入选择奇数寄存器位。上部两个位(在z=
’1’
时被选择)当处于逻辑模式中时由y寻址或当处于选择模式中时由x寻址。比较块320可经编程以将y或z rae输入连接到y输出,因此提供用以对z及经移位z进行按位操作的方式。
[0472]
去往布尔逻辑电路325的x输入是仅在设定选择模式时使用的辅助输入。当z为
‘1’
并设定选择模式时,选择由上部两个寄存器位定义的x的一位函数。否则,忽略x输入。
[0473]
配置接口524用于存取配置寄存器526位。针对布尔逻辑电路325的32个位中的每一者存在4个配置位,所述4个配置位针对每一位位置独立地设定布尔函数。存在两个额外配置位(534)以将模式全局设定为正常或选择模式,并设定从z移位或z的比较器输入的输入选择。
[0474]
布尔逻辑电路325具有32位q输出528。每一输出位是被编程到配置寄存器中的所述位的布尔逻辑函数的结果。当处于选择模式中时,修改逻辑函数以针对选择逻辑输入的一部分用x来替换y。旗标输出532提供用以创建一位输出的方法,所述一位输出是x、y及z输入位中的任何者或全部的函数。旗标输出是32位q输出的32位nand函数。
[0475]
布尔逻辑电路325的配置包括:针对每一位片保持4位逻辑配置的4x32寄存器文件526,以及2位全局寄存器534,其中一个位针对整个块选择逻辑(0)或选择模式(1),且一个位用以选择z输入的源(0=比较逻辑,1=z移位器)。当处于逻辑模式中时,每一位片的4位配置针对所述位片的y及z位输入的四个可能组合设定输出值。针对选择模式,在选择要输出的寄存器内容时,当z输入为
‘1’
时,x输入的值替代y输入的值。下文在表17中列出按寄存器代码及模式的位函数。
[0476]
针对逻辑模式,每一位片的逻辑是由去往所述片的z及y位输入寻址的4输入选择器。对于2输入逻辑函数,存在4种可能的输入组合。z输入具有2的权重且y输入具有1的权重以用于选择寄存器位。通过适当地设定四个配置寄存器位,当模式被设定为逻辑模式时,可对2个输入的任何布尔函数进行编程。在选择模式中,z在x及y的1位逻辑函数之间进行选择。针对选择模式,第一层高阶选择器的选择输入从y输入被改变为x输入,使得当z=
’0’
时,z输入选择由寄存器0及1设定的y(0、~y、y或1)的一个输入函数,或当z=
’1’
时,z输入选择由寄存器2及3设定的x的一个输入函数。
[0477]
表17:
[0478][0479][0480]
z输入在z移位之后采用,可选择输入rae z输入或比较逻辑的z输出(其可连接到比较逻辑的索引计数逻辑)。移位器的输入侧上的z连接还具有用于32位输入的有线位反向的连接。此布置提供了可在32位范围内的任何地方移位或旋转地址字段、可选择性地用0或1来掩蔽位或者将计数位反转的非常灵活的地址产生能力。在z移位之前的有线位反向还允许产生混合基数构建的快速傅里叶变换所需的经旋转位反向序列。布尔逻辑电路325的输出还具有32输入nand门522,所述32输入nand门用于聚合位以提供单个位输出532以用于例如解码或数据相依的条件旗标等用途。举例来说且无限制地,这可被扩展为提供各自与每一simd通道中的8个位有关的四位输出旗标以及组合网络以每通道提供一个位,而不管simd大小如何。
[0481]
10.比较电路320
[0482]
图47是图解说明最小值/最大值排序及比较电路320(还更一般地称为比较电路
320)的高级电路图及框图。图48是图解说明比较器556最小值/最大值排序及比较电路320的详细电路图及框图。比较电路320增加了使rae电路300基于输入、内部索引计数及内部常数的比较结果而变更数据流及定序的能力。比较电路320可分离以支持2个或4个simd通道,针对每一通道使用单独的比较结果。
[0483]
此比较电路320执行以下功能:
[0484]
1.以第一次出现最小值的索引在流中累加最小值;
[0485]
2.以第一次出现最大值的索引在流中累加最大值;
[0486]
3.两个输入排序(其中simd用于1、2、4通道),如果更大,那么进行交换;
[0487]
4.样本计数,其可与累加器315同时运行且同时复位;
[0488]
5.将所有样本归零,只有在当前索引计数与索引输入匹配时除外,然后其输出其它输入;
[0489]
6.大于阈值的阈值正样本通过,小于阈值的那些被常数替换,并对高于阈值的样本进行计数;
[0490]
7.阈值负:小于阈值的样本通过,较大的那些被常数替换,并对低于阈值的样本进行计数;
[0491]
8.不改变地传递输入(流动穿过以输入到布尔逻辑电路325);
[0492]
9.仅传递满足比较条件的输入(经门控数据有效);
[0493]
10.仅在触发条件之前或触发条件之后传递输入;
[0494]
11.等于及小于旗标输出(simd用于1、2、4通道);以及
[0495]
12.产生地址计数(具有使用旋转器及布尔进行位反向、旋转及掩蔽的能力)。
[0496]
举例来说且无限制地,以上所有模式适用于所有支持的浮点,以及带正负号及无正负号整数,且适用于32位数据中的1个、2个或4个simd通道。针对simd模式,每一通道在此块中被独立地处理,尽管所有通道应共享相同的配置及解码器映射。当选择simd模式时,32位索引计数也被分割成相似数目的simd通道。
[0497]
y输入542伴随着y_有效(546)。如果任一有效为
‘0’
,那么不处理比较,除非绕过(一般来说当选择常数或反馈作为输入时)。32位z输入544源自z移位器逻辑输出,以便能够将移位器用于通道交换以及移位或旋转作为融合比较操作的一部分。当选择带正负号输入时,将输入的最高有效位反转,以便适当地将无正负号比较器用于带正负号输入。旗标输入(546)是比较结果的额外验证,其可用于终止流式传输最小值或最大值、标记样本(通过)、复位计数器或触发事件及其它控制事件。旗标输入可源自fc 200序列计数器或源自邻近rae 300的旗标输出。复位输入(546)复位计数器及数据输出寄存器,而不管在断言为
‘1’
时y及z有效如何。
[0498]
y输出548是初级数据输出。其为从y或z输入或者y或z常数寄存器选择的数据。对y或z源的选择取决于比较结果以及结果解码的编程。通过配置设置而针对y及z独立地设定实时数据或常数的选择。y输出有效(552)指示y输出对下游块有效。y输出有效信号是比较条件、输入旗标以及y及z数据输入有效信号的可编程函数。可编程解码还控制y输出寄存器的时钟启用及复位,从而允许输出在比较条件下捕获并保持数据或计数。
[0499]
z输出554还具有z输出有效(552)。z输出是次级数据输出,取决于配置设置,所述次级数据输出的输出是与y输出选择相反(当y输出是zin时为y输入,且反之亦然),或是索
引计数。z输出有效信号是比较条件、输入旗标以及y及z数据输入有效信号的可编程函数。可编程解码还控制z输出寄存器的时钟启用及复位,从而允许输出在比较条件下捕获并保持数据或计数。条件旗标输出(552)是辅助控制信号,所述辅助控制信号是比较结果、旗标输入、y及z数据有效输入以及复位的可编程逻辑函数。所述条件旗标输出可由下游rae 300用作条件旗标控制,且由分形核心200定序器使用以影响定序。当使用旗标来控制fc 200定序器时,应注意包含管线延迟。
[0500]
比较电路320具有由选择连接的一组配置位定义的许多操作模式。配置还包含三个常数寄存器的设置。配置包括七个数据路径选择器的设置、simd模式的选择(2个位)、输入正负号类型(2个位)、比较解码到控制映射的定义(49个位)以及三个32位常数寄存器的设置。配置被划分成配置及常数。配置包含7个数据路径选择位,及两个simd模式选择位。
[0501]
此比较电路320包括simd量值比较器556、数据导向选择器564及寄存器、加法器/计数器562(具有计数器572),以及可编程解码器558以控制数据及计数器路径以及寄存器。32位比较器556具有用于一个32位通道、两个16位通道或四个8位通道的模式。所述32位比较器针对每一通道产生

等于’及

小于’输出。解码器558对每一通道的比较条件进行解码且利用有效及旗标输入对所述比较条件进行门控以产生针对每一通道及计数器572的数据导向控制、针对数据输出寄存器及计数器寄存器中的每一者的每一通道的寄存器触发器时钟启用及复位。比较器556的输入可来自块的y及z输入、y及z常数寄存器,或者针对z输入的y输出寄存器或针对y输入的计数器寄存器。这为基于比较条件、累加最小值或最大值的能力、计数发生率及其它使用而产生计数提供了灵活性。
[0502]
参考图48,量值比较器556确定其两个输入的相对量值且使用结果信号(等于及小于)来控制块的其余部分中的数据导向。量值比较器556以其基本形式比较两个32位字并从比较器568产生两个输出:a等于b及a小于b。比较器556包含分割门以允许所述比较器作为与32位字内的1个、2个或4个simd通道对应的一个32位、两个16位或四个8位算术比较器工作。一组八个3:1多路复用器566取决于simd模式而选择适合于每一通道的比较树输出。当少于4个simd通道时,信号输出被复制并针对simd通道内的每一8位片被单独输出。在比较器及计数器572逻辑之外,块的其余部分将所有数据视为4个独立的8位通道。可通过用树结构的向下到输入处的1位比较的延续来替换8位比较而获得额外的优化。输入层是半加法器,其中一个输入被反转。如此做会将树的深度减少一个门层,且需要针对simd4模式添加类似于针对simd2的阻塞门。优化的树具有258个2输入门,不计数缓冲器及12个门的门延迟,不包括正负号校正及simd输出选择。最优二进制比较的延迟及资源(2输入门)度量分别是t(n)=2(log(n) 1)及c(n)=nlog(n) 3n-1。
[0503]
比较器556还具有针对带正负号二补数及正负号-量值输入的校正。比较器556假定两个输入具有相同的数字系统。对于二补数,比较错误地将负值比较为大于正值。只要数字系统是二补数(无论正负号如何),便可通过将正负号位反转而解决此。对于正负号-量值,将正负号反转会使负数正确地测试为小于正数,但两个负输入将给出与预期比较结果相反的结果,这是因为增加量值会使负数成为更大的负数。此通过始终将正负号位反转并且当且仅当正负号为负时还将剩余位反转而校正以提供正负号-量值的正确比较结果。这执行负数的1补数,其将-0映射到-1、将-1映射到-2,以此类推。尽管数字表示改变,但所述变化仍会产生正确的比较结果;负数递减1以为唯一的-0留出空间。在表18中依据带正负号
模式针对每一simd模式列出每一位的正负号校正。当使用以上校正将正规化浮点值解释为正负号-量值整数时,所述正规化浮点值将产生正确的比较结果。非正规及无穷大浮点值也将使用正负号-量值校正来正确地比较。
[0504]
表18:按模式的比较器输入正负号校正
[0505][0506]
在比较器选择四个8位比较结果对、两个16位结果的两个副本(每一8位通道一个结果,两个上部通道具有相同的控制,两个下部通道也如此)或单个32位比较信号对的四个副本之后,simd进行选择。这被实施为针对每一8位通道的一对3:1多路复用器566,使用经编码simd设置作为选择。在比较及计数器572之外,所有数据均被视为4通道simd,其中当小于simd-4时,通道得到重复控制。
[0507]
图49是图解说明解码器电路558(27个控制、49个配置位)的电路图。比较电路320的灵活性取决于产生控制信号的解码器558的可编程性。去往解码器558的输入是每一8位通道的2位比较结果,以及来自块输入的单个位复位、旗标、y及z数据有效信号。所产生的控制包含按通道的数据导向多路复用器、按通道的计数_旁路多路复用器、按通道的y、z及计数寄存器时钟启用、按通道的计数寄存器复位(当z多路复用器选择计数器572时,z寄存器使用计数寄存器复位,且y及z数据输出不使用复位),及旗标以及y及z数据有效输出。每一控制输出的配置位适用于所有通道,但针对每一通道存在单独的门控,使得每一通道中的比较结果可单独地影响每一通道输出。存在在内部产生的init信号,当断言复位输入时,设
定所述init信号而不管数据有效如何,且当旗标输入为零时,清除所述init信号并任选地由输入数据有效验证所述init信号。当断言旗标时,还任选地再次设定init,使得其可在下一有效样本上用作在新数据块的开始处的寄存器初始化。对于大多数带旗标操作,旗标被断言以标记数据块的结束,借此将索引计数器572复位及/或重新启动经累加最小值/最大值(举例来说)。比较器针对每一通道产生

小于’及

等于’输出。当组合通道时,复合通道的输出针对每一8位通道输出而被复制。解码器558具有全局比较选择电路,所述全局比较选择电路产生额外

大于’信号且然后选择将3个比较结果中的哪一者转送到解码器的其余部分。每一控制解码器可选择选定比较结果或其反转或者
‘1’

‘0’
来单独地门控每一控制。所述init及旗标输入具有启用控制,从而允许那些信号与完全解码的本地比较信号进行逻辑or操作且然后与可为y或z或(y与z)或者
‘1’
的复合数据有效进行and操作以创建每一本地控制。跨越所有4个通道而共享每一本地控制的配置,但使用所述通道的比较输入。控制功能中的一些控制功能不使用所有输入信号,因此将那些未使用的输入附于常数,所述常数导致所述未使用的输入在设计之外被优化。
[0508]
表19概述针对每一控制的配置输入。存在与解码器558相关联的49个配置位以产生27个控制(其中的一些控制具有针对4个通道的4个副本)。存在额外配置位以设定输入正负号模式,及simd模式。
[0509]
表19:通过解码器控制的配置位
[0510][0511][0512]
比较电路320包含打算用于产生索引计数以用于内部及外部使用的32位加法器/
计数器562。所述比较电路还可被设定为打算用以调制阈值以便在阈值操作中引入滞后的加法器。计数器的加法器的输出被路由到具有单独时钟启用的两个相同寄存器。那些寄存器中的一者是计数寄存器,所述计数寄存器的输出反馈到计数器加法器中以及反馈到比较器逻辑块的一个输入以供内部使用。第二寄存器(z输出寄存器)被单独地时钟启用且打算有条件地捕获计数以保留流式传输数据中的最小值或最大值的索引。加法器562的一个输入选自y输入或kz常数或者计数器572反馈,另一输入是来自块配置的增量常数。当通过关断适用于simd模式的通道之间的进位而选择simd操作时,将索引计数器的加法器分割到simd通道中。需要调整增量常数以含有2及4通道simd模式的每一通道中的增量。对于索引计数,计数器572通常递增1且计数寄存器针对有效样本而被时钟启用。计数器572由导向逻辑复位,所述导向逻辑将反馈多路复用器设定为yin及计数旁路多路复用器以在时钟启用设定的情况下绕过加法器。这会加载具有yin的值的计数器寄存器(可等效地使用额外常数寄存器及多路复用器而非取决于yin处的正确复位值)。计数器572增量可被改变为除1以外的值,以支持从lsb向上移位的计数器以及负计数。对于具有滞后的阈值化,将计数器572反馈设定为选择yin,且将减少一半滞后死区宽度的阈值输入到y并将死区宽度加载到增量值常数中。将计数器572的输出馈送到比较器块的一个输入,使得将所述输出与zin端口上的索引进行比较。计数器寄存器多路复用器基于先前比较的结果而针对经修改阈值选择yin或yin 增量。可使用由配置设定的计数器kmux用常数kz来替换计数器572的yin。计数器572输出是经由z输出,所述z输出经由可选择有线位反向及比较旁路而连接到z输入移位器以准许通过经由旋转、位反向及布尔逻辑而排列计数来进行相当复杂的地址产生。
[0513]
导向逻辑包含用于比较器输入的选择器(多路复用器)564、数据路径中的交换/替代多路复用器、具有时钟启用的输出寄存器,以及用以在计数器572输出或第二数据路径输出之间进行切换的输出选择。所述导向逻辑还含有函数及比较结果解码器以针对导向及计数器572逻辑产生导向控制。数据路径交换/替代多路复用器用于在排序使用情形中交换z通道与y通道,或在流式传输使用情形中用常数替代数据以进行逆池化及阈值化操作。在流式传输最小值/最大值使用情形中,左侧寄存器上的时钟启用用于在新的最大值或最小值(取决于使用)时更新寄存器,且所述时钟启用的副本使得capt寄存器能够捕获当前索引计数。输出数据有效应由流式传输模式中的最后样本旗标(axis-4tlast或等效物)限定。针对时钟反馈及寄存器输入、左及右选择多路复用器(并非常数多路复用器)以及寄存器时钟启用的多路复用器控制部分地由比较结果控制。其余多路复用器控制仅受块配置影响。针对比较器及计数器572simd控制存在单独的配置控制以允许在不需要索引的情况下使用独立于比较及导向的计数器572。可存在未被展示的其它可能的使用情形。左侧数据路径的多路复用器包含对来自常数寄存器kx及ky的输入的选择。这用于基于配置模式及比较结果而有条件地用常数值(kx、ky默认为0)来替换数据。类似地,索引计数逻辑处的增量值d也来自常数寄存器,所述增量值默认为值1。常数经由任何数目种机制(举例来说且无限制地,例如作为配置字的一部分、经由某种串行常数加载接口,或通过经由x、y、z输入的时钟启用)而加载。
[0514]
各种使用情形包含:具有索引的流式传输最小值或最大值;两个输入排序(两个输入的同时最小值最大值);逆最大池化(流式传输数据被零替换,只有当内部产生的索引计数与流式传输索引匹配时除外,在此情形中,流式传输数据被推送);样本计数索引产生;数
据导向;数据替代;地址产生,比较旗标输出;以及利用计数阈值样本或滞后进行阈值化。
[0515]
图50是图解说明使用比较电路320的具有索引应用的流式传输最小值/最大值的详细电路图及框图。比较电路320还执行流式传输最小值或最大值,从而将当前y输入与保存在y输出寄存器中的先前最小值或最大值进行比较。将y寄存器反馈到比较器z输入,且将y输入上的新的数据输入反馈到比较器y输入,使得将新的输入与y寄存器中的先前极值进行比较。针对每一有效y输入(y_有效_输入=
’1’
)而启用计数寄存器,使得计数是自复位后的有效样本数目(加上初始值)。针对此应用(除了针对初始化之外),导向及计数旁路多路复用器是静态的,因此y数据及下一计数始终分别呈现于y及z寄存器输入处。当新的值超过当前寄存器值时,接通去往y及z输出寄存器的时钟启用以用新的极值及对应索引计数来更新那些寄存器。最后样本应伴随着旗标输入=
’1’
以指示输入集的结束。与yin_有效一致的旗标致使yout_有效转到
‘1’
以验证经累加最大值或最小值以及所述样本在输出处的索引。表20概述针对流式传输最小值及流式传输最大值使用情形的设置。
[0516]
对最小值或最大值的检测需要将数据传输到集合的第一样本上的数据寄存器而不管比较结果如何,且将计数器572(如果使用)设定为初始索引值(通常为0,但也可被偏移)。数据寄存器的初始值是使用解码器输出的init信号被强制设置,所述信号是利用复位输入或在经验证旗标输入之后设定的。这致使第一y值被接受为初始极值,而不管比较结果如何。可以两种方式中的一者来初始化计数值。如果初始化为零,那么init信号简单地将z及计数寄存器复位为零。如果非零,那么替代方法包括当init被断言被使用时断言计数旁路以向计数器572加载kz。针对非零初始索引的替代设置显示于表22中的右列中,用于与初始索引=0情形不同的设置。图50中的kz之后的路由展示计数器572从常数初始化。通道复位替代地用于通过将计数寄存器复位而初始化为零。流式传输最小值/最大值应用还适用于simd数据,其中每一通道维持其自身的极值及索引。由于数据有效适用于所有simd通道,因此simd处理应使所有通道同时有效,且跨越通道的数据集针对所有通道全部在相同样本上开始及结束。
[0517]
表20:针对流式传输最小值及流式传输最大值的比较电路320设置
[0518]
[0519][0520]
图51是图解说明使用比较电路的两输入排序应用的详细电路图及框图。两输入排序将y输入上的值与z输入上的值进行比较。如果z》y,那么其将z置于z输出上且将y置于y输出上。否则,其将数据交换到相反的输出。结果是所述对中的最小值在y上且最大值在z上。当simd每一通道在z上呈现所述通道中的最大值且在y上呈现最小值时,此应用支持simd操作。对于simd,所有通道应一起呈现及产生数据。计数器572是不可用的,这是因为其输出在此模式中不可见。表21展示针对两输入排序的设置。
[0521]
表21:针对两输入排序的比较电路320设置
[0522]
[0523][0524]
解码逻辑可经设定以简单地将y及z数据传递到y及z输出(或将其交换)作为两输入排序的特殊情形。这仅需要将多路复用器设定为固定值并将数据有效复制到相应的输出。在一些情形中,此模式对于将y及或z数据连接到布尔逻辑块是必需的。如果将z寄存器多路复用器设定为计数器,那么针对y输出的数据通过保持不变且z输出源自计数器572逻辑。比较逻辑不用于传递,因此在此模式中仍可用于与到旗标的输出进行比较,或者当导向多路复用器被设定为用于传递时供与索引计数器572一起使用。
[0525]
图52是图解说明使用比较电路320的数据替代应用的详细电路图及框图。比较电路320具有数据替代能力,其使用输入流与常数、第二输入或索引计数的比较来控制常数或第二输入对初级输入的替代。比较结果可用常数或来自其它流的输入来替换数据。索引计
数也可用作输出。比较电路320设置选项为:
[0526]
情形1a:将zin与索引进行比较以将yin或ky代入z流中;
[0527]
情形1b:将zin与索引进行比较以将zin或kz代入y流中;
[0528]
情形2a:将zin与常数(ky)进行比较以将yin或相同的常数(ky)代入z流中;
[0529]
情形2b:将zin与常数(ky)进行比较以将zin或常数(kz)代入y流中;
[0530]
情形3a:将zin与yin进行比较以将yin或ky代入z流中;
[0531]
情形3b:将zin与yin进行比较以将zin或kz代入y流中;
[0532]
情形4a:将yin与常数(kz)进行比较以将yin或ky代入z流中;
[0533]
情形4b:将yin与常数(kz)进行比较以将zin或kz代入y流中。
[0534]
所述情形中的每一者是输入多路复用器以及导向控制的极性的不同排列。每一情形的子情形均具有相同设置,只有导向多路复用器的解释除外。计数器572可利用寄存器复位或通过使用计数旁路多路复用器及kz(或yin)来初始化以初始化为非零,如上文所论述。在图52中,比较yin及比较zin多路复用器以及导向常数多路复用器在不具有经配置连接的情况下展示以计及不同模式。在表22中列出针对上文所列示的4个情形中的每一者的设置。
[0535]
逆池化接受同步的索引及数据流,同时维持本地索引计数。当索引流等于索引计数时,传递数据值,否则输出数据为零。此功能通过数据替代来实现,情形1利用设定为0的kz常数、z上的索引输入及y上的数据输入。设置包含在表22的倒数第二列中。逆池化还可通过固定导向多路复用器以在y输出上输出y并在zin不等于索引计数器时使用比较结果来断言y寄存器复位而实现。针对最大池化的此替代配置可略微降低功率消耗,同时数据替代方法允许将不相等数据设定为非零。替代设置包含于表22的最后列中。
[0536]
表22:针对数据替代及逆池化的比较电路320设置
[0537]
[0538]
[0539][0540]
数据替代还可用于阈值化数据,使得低于阈值的数据用常数(通常为阈值或零)来替换且高于阈值的数据通过。替代地,低于阈值的数据可通过且高于阈值的数据可用常数(例如用饱和)来替换。情形2及4在表22中,其中比较的一个输入来自y或z输入且另一输入被设定为阈值常数。在导向多路复用器逻辑中设定阈值常数将提供表23中所列示的不同风格的阈值化。阈值还可经由不用于数据的输入来提供。索引计数器572可用于对高于或低于阈值的样本进行计数、对有效样本进行计数,或者用作使用旗标输入或未经使用数据输入上的数据有效(当阈值来自常数寄存器时)的独立事件计数器572。
[0541]
表23:按阈值模式的比较电路320配置设置
[0542]
输入zzyy替代低于高于低于高于情形2244zin多路复用器zinzinkzkzyin多路复用器kykyyinyin导向zzinzinkzkz导向ykykyyinyin比较z》yz《yz《yz》y
[0543]
图53是图解说明使用比较电路320的具有滞后应用的阈值的详细电路图及框图。具有滞后的阈值将阈值在远离当前数据值的方向上远离标称阈值移位固定距离。目的是减少信号噪声导致阈值交叉的机会。这通过使用计数器的加法器及旁路多路复用器来取决于比较结果向阈值添加或不添加偏移而实现。计数器572输出被馈送到比较器y输入且数据经由z输入进入。比较结果选择导向多路复用器以及计数旁路多路复用器。编程的值是阈值及
差量,所述差量是上阈值与下阈值之间的距离。所述差量可为正的或负的,使得阈值可为上阈值或下阈值。
[0544]
表24:针对具有滞后的阈值的比较电路320设置
[0545]
控制 功能滞后阈值配置 simd任何比较zin多路复用器zin比较yin多路复用器计数数据导向kz多路复用器zin数据导向ky多路复用器ky计数器k多路复用器kz计数器反馈多路复用器k-多路复用器z输出多路复用器随意ky常数输出值kzlo阈值kincδ阈值解码器 数据导向控制cmpr计数旁路控制cmpry寄存器复位始终
‘0’
y寄存器cezvldz寄存器复位始终
‘1’
z寄存器ce始终
‘0’
计数复位
‘0’
计数cezvldy有效zvldz有效zvld旗标
‘0’
[0546]
图54是图解说明使用比较电路320的旗标触发事件应用的详细电路图及框图。比较电路320可被设置为在一个状态中等待触发事件,然后切换状态并保持在第二状态中直到复位输入为止。一般情形在旗标输入上触发,并通过复位输入而复位到初始状态。由于这依赖于旗标及复位,因此其仅在所有通道在同一触发器上触发及复位时有效。初始状态是cnt寄存器复位为零,这是在复位输入被断言时强制进行的。将计数增量常数设定为零且kmux连接到kz,使得计数寄存器的输入始终为kz。kz可为任何非零常数。计数寄存器的时钟启用通过解码器而连接到旗标输入,使得在旗标被断言时,寄存器加载kz。以此方式,计数为零直到触发事件,此时所述计数变为kz。所述计数保持在kz直到复位被断言,从而将计数寄存器复位为零。比较器将计数值与kz进行比较且将比较输出解码以控制导向多路复用器,及/或门控y及z数据有效或旗标输出。以此方式,所述比较器可在触发事件后即刻启动、
停止、替代、交换或重新引导数据。z输出可连接到计数寄存器以提供与状态(0或kz)的直接连接,或与用于数据导向及交换应用的数据多路复用器的直接连接。数据导向可使用常数,只要kz(如果使用)不为零即可。
[0547]
图55是图解说明使用比较电路的阈值触发事件应用的详细电路图及框图。一般情形需要在比较块之外产生旗标,这在基于比较的触发的情形中需要第二rae 300来提供旗标。可在单个rae 300比较电路320中实施其中阈值交叉将触发事件的特殊情形。用于此的锁存逻辑利用类似于“具有滞后的阈值”使用情形设置的计数器572,只是阈值被设定为触发事件致使阈值移动到最小或最大可表示值,并且比较函数分别被设定为小于阈值或大于阈值,使得一旦满足比较条件(突破阈值),便不可能一直不满足所述比较条件。通过使用旗标或复位输入强制计数旁路控制绕过而将比较电路320复位到原始状态。比较条件可用于用常数替代数据(注意,kz是不可用的,这是因为其用于阈值,除非阈值是经由yin外部提供的)、交换数据输出,或利用数据有效来导向数据。数据多路复用器还可保持静止,且使用针对z及y流的数据有效来暂停或启动数据流。针对触发事件的设置类似于具有滞后的阈值,只是kinc值具体被设定为最小可表示值—阈值,使得总和是最小可表示值。如果触发是响应于超过阈值的信号而发生的,那么kinc与用kz设定的阈值的总和应为以数字模式(带正负号、无正负号或正负号-量值/浮点)的最小可表示值,且比较应为z》=cnt,使得信号可永不会小于经移位阈值。如果触发是在信号低于阈值时发生,那么kinc与阈值的总和应为最大可表示值且比较条件应替代地为z=《cnt,使得阈值一旦被移位便可永不会被超过。阈值触发也适用于simd模式,需要注意的是所有通道一起被复位。
[0548]
表25:针对触发事件的比较电路320设置
[0549][0550]
图56是图解说明使用比较电路的数据导向应用的详细电路图及框图。控制解码允许由比较结果个别地控制针对yout及zout的数据有效。通过设定数据有效以使得一个数据在比较为真时有效且另一数据在比较为假时有效,数据的传播仅从一个输出被引导到不同的连接。存在数种方式来设置配置以设定各种比较选项:
[0551]
情形1:将zin与索引计数进行比较以将y导向到yout或zout;
[0552]
情形2:将zin与常数进行比较以将y导向到yout或zout;
[0553]
情形3:将zin与yin进行比较以将y导向到yout或zout;
[0554]
情形4:将yin与常数进行比较以将y导向到yout或zout;
[0555]
情形5:将索引计数与常数进行比较以将y导向到yout或zout;
[0556]
情形6:使用旗标输入来将y导向到yout或zout。
[0557]
在表26中列出针对这些情形中的每一者的设置。通过数据导向而成的z路径是随意的,这是因为z连接到的输出是无效的。出于功率考虑,可将z输入连接到kz且可将寄存器时钟启用连接到y有效(有效在表中缩写为yv及zv),使得无效输出在被取消选择时不会传播。可使用复位输入将计数复位,如果需要,那么可利用数据有效输入对此进行验证。如果在比较逻辑中未使用ky,那么ky可用于初始化计数器572,如参考流式传输最小值/最大值所论述。由于数据导向使用数据有效信号来引导数据,因此所述数据导向仅可用于非simd(一个32位通道)操作。
[0558]
表26:针对数据导向的比较电路320设置
[0559]
[0560][0561][0562]
图57是图图解说明使用比较电路320的模n计数应用的详细电路图及框图。比较块的索引计数器572经设计以对样本索引的样本进行计数。所述索引计数器还可用于地址计数。计数器增量由增量常数设定,所述增量常数可被设定为任何32位值。寄存器输入是来自
选择器,所述选择器选择计数加法器或输入旁路,从而提供用以将计数初始化为非零值的方法。计数器寄存器及进位被分段成8位分段以处置2个及4个simd通道。比较电路320定位于旋转器及布尔逻辑之前,以允许那些块针对更复杂的序列(包含转角及fft位反向以及转角寻址)操纵地址计数。在表27中列出针对计数逻辑的各种使用情形的设置。
[0563]
基本用途是简单计数器(线性计数),其中增量值由kinc常数寄存器设定。对于简单计数,将kinc寄存器设定为1。这也可被设定为任何32位值以改变增量。当满足计数ce的解码器条件时,计数器的时钟启用递增计数。ce可用于在数据有效、比较条件或旗标输入或者其组合上递增。简单用途使用寄存器复位将计数器清零。寄存器复位是有效、旗标及复位输入以及可编程的比较结果的逻辑功能。
[0564]
如果计数器应被初始化为另一值,那么复位条件经解码以切换计数器旁路多路复用器,以在计数器ce被断言时向计数器寄存器加载由计数器的k多路复用器(kz或y输入)选择的值。应注意,使用旁路多路复用器及kz进行的复位可干扰比较器或导向多路复用器对kz的使用,在此情形中,常数可替代地由yin供应。比较及数据导向不用于线性计数。比较块的那些部分可用于不干扰所使用的计数逻辑的比较应用。
[0565]
比较电路320可用于限制计数,从而一旦达到限制便冻结计数。为限制计数,将比较设定为计数限制且比较结果对时钟启用进行门控,使得一旦计数达到其终端计数,便将进一步递增计数停用直到其被复位为止。限制计数器连接是相同的,只是计数器ce被门控用于限制计数而非复位,如同模计数的情形。旗标输出可由比较结果驱动以提供限制计数的外部指示。比较结果还可用于从未使用的输入及常数(kz用于限制值)选择或门控数据流。如果计数限制在z输入上而非经由kz常数呈现,那么所述计数限制也可为变量。
[0566]
比较电路320还可用于在达到终端计数时同步复位下一时钟启用的时钟上的计数,从而在终端计数被设定为n-1且复位是使用计数器的寄存器复位通过比较结果而完成的情况下产生模n计数。图57图解说明模n计数器的连接。如果n-1经由z输入而非通过kz常数应用,那么所述模可为变量。
[0567]
表27:比较电路320计数器设置
[0568][0569][0570]
图58是图解说明转角地址的推导的框图。转角寻址对存储在存储器中的矩阵的地址主要以行进行重新排序以用于主要以列次序进行存取,或反之亦然。对于具有二的幂尺
寸的阵列,转角寻址可通过以下操作而产生:将地址位向左旋转log2短轴尺寸(如果旋转字段与地址大小相同),这等效于将对应于行的位字段的位置与对应于列的位字段的位置交换。对于8位及16位情形,z输入移位旋转可直接用于获得经旋转地址。然而,对于一般情形,内置旋转是不充分的,这是因为用以创建旋转的移位距离固定为8位、16位、32位或64位。为进行旋转,地址计数的副本需要紧邻近实际计数放置。倘若不允许计数溢出地址宽度,那么可修改地址计数以在邻近位字段中产生两个相同的计数。模计数或限制计数设置可用于保证溢出不会发生。可通过将增量改变为在每一字段的lsb中具有
‘1’
而产生两个邻近计数,因此对于9=位地址计数,计数增量将为0x0201,在图58的顶部中所展示。这产生两个邻近计数,一个计数的lsb在位0处且msb在位8处,并且一个计数的lsb在位9处(在图58中展示为

输入到z移位的索引计数’)。不应允许计数超过所有
‘1’
,以防止下部计数器溢出到上部计数器的lsb中。使用模计数设置并将限制设定为等于各自保持最大计数的两个计数字段将产生适当的模计数。这对经接合计数器然后由z移位逻辑移位以将正确的位旋转置入移位窗口的最低有效位中(具有32位输入的移位窗口是位63:32),且然后用布尔逻辑掩蔽所述结果以摒弃移位窗口之外的位。布尔掩码可用于设定上部位以选择存储器中的页。
[0571]
图59是图解说明fft位反向转角地址的推导的框图。设计包含位于比较块与z移位逻辑之间的可选择有线32位位反向,所述可选择有线32位位反向用于将位反向寻址的位次序反向以支持快速傅里叶变换。快速傅里叶变换由使用混合基数算法来组合的基数2及基数4级构成。在每一级之间存在转角地址,且级输入及输出是位反向寻址(lsb变为msb,且反之亦然)。如果数据以自然次序存储于存储器中,那么读取及写入寻址是每一级处的位反向地址的单个转角(但针对每一级大小不同)。寻址是对以上转角寻址的修改,以计及在位反向时的位的重新定位。计数逻辑的设置与转角设置相同,然而,32位计数输出在z移位器之前首先被位反向,这将相关的位置于字的最高有效端上。移位距离经调整以计及此,且然后其余步骤与转角情形中的步骤相同。图59展示针对推导的位对准。
[0572]
11.输入重新排序队列350及输出重新排序队列355
[0573]
图60是图解说明rae输入重新排序队列350及rae输出重新排序队列355的逻辑电路结构的详细电路图及框图。这些rae输入重新排序队列350用于三个主要目的:(1)其使得能够在x输入及z输入上及时将数据重新排序以及在x输入与z输入之间重新分配数据;(2)其提供可调整延迟来帮助实现管线等待时间平衡,及(3)其使得能够存储将应用于rae输入365、370、375的若干个常数以及将所述常数定序。重新排序能力大大简化具有复数数据的某些算法的数据处置,所述复数数据需要作为i/q对呈现但为了处理效率应作为i与q交错的两个样本来一次处理。此类算法的实例是快速傅里叶变换(fft)基本操作,称为蝶形操作。蝶形操作的两个样本遵循几乎相同的处理(仅正负号改变不同),因此为了效率起见,两个样本的i分量是与两个样本的q分量交错地处理。其它复数算术算法也受益于使i分量与q分量交错以及一次处理两个样本。具有4个样本的深度的重新排序队列用于此应用。
[0574]
可由同一rae电路四元组450的两个rae电路300共享的rae输出重新排序队列355具有与rae输入重新排序队列350相同的结构,除了其不具有y数据路径(如图60中所图解说明)且也可不需要条件被乘数逻辑。向rae输出重新排序队列355的输入来自rae电路四元组450的同一半中的两个rae 300的rae 300x输出420(例如,累加器315输出)。输出重新排序队列355允许在两个rae 300之间进行交换以针对fft及半复数相乘以及多达最新的四个样
本的样本序列的短距离重新排序而使i与q重新交错。在rae 300中包含这些rae输出重新排序队列355电路会简化需要iq或偶数-奇数交错及类似操作(例如,快速傅里叶变换)的算法的算法设计及布局。在代表性实施例中,每对rae 300存在一组rae输出重新排序队列355。
[0575]
可调整管线延迟函数是由重新排序队列提供的函数的子集。存在需要向乘法器的一或多个常数输入的应用。重新排序队列寄存器580能够再利用来保持可使用重新排序队列定序器定序的常数值。常数加载机制将重新排序队列中的32位寄存器链接到菊花链(未单独图解说明)中,使得常数按32位/时钟被输入且沿着所述链传播,使得在12个时钟结束时,重新排序队列被填充12个常数值。只要数据有效被门控断开,所述值便在操作期间保留在寄存器中。所述链中最后一个寄存器的输出链接在rae 300中的其它常数寄存器(包含比较块及布尔逻辑电路325中的布尔函数表中的那些)的链中,以允许常数寄存器的整个链的顺序加载。图60中为了清晰未图解说明常数加载链及写入逻辑。加载数据经由y输入而进入。最后一个y寄存器经由多路复用器585在xin处连接到x链,且x链的输出经由另一32位多路复用器590连接到z链。
[0576]
重新排序队列具有对应于rae 300输入365、370、375的三个32位x、y及z数据输入。x输入365、y输入370及z输入375中的每一者分别与数据有效595、596、597相关联。数据仅在同一(对应)输入的数据有效是
‘1’
时被认为有效。在对应数据有效是
‘1’
时,在时钟的每一上升沿将数据移位到rae输入重新排序队列350中。当数据有效是
‘0’
时,对应输入上的数据不被传送到重新排序队列寄存器580中。数据有效595、596、597使得能够将数据移位到rae输入重新排序队列350中。
[0577]
rae输入重新排序队列350具有分别地三个32位x数据输出582、y数据输出584及z数据输出586。取决于当前寻址的定序器存储器的状态,所述输出处的数据选自延迟队列寄存器或对应输入中的一者。数据输出伴随着用以指示数据的有效性的数据有效输出旗标。数据有效输出是数据有效输入的经延迟版本,具有通过重新排序对应于既定经重新排序数据延迟的多达4个时钟的可编程延迟。这可需要收集特定数目个样本且然后利用状态机在群组中输出。输出数据有效及序列计数器应与输入样本同步。即使队列保持常数,数据有效输出仍存在,但可以配置位关闭。复位旗标使序列计数器575复位到00状态。在输出接口处提供序列计数以供可能在定序指令中使用或用于条件旗标逻辑(未单独图解说明)。
[0578]
来自rae输入重新排序队列350的数据输出选择由通过序列计数器575寻址的四个寄存器602的内容确定。那些寄存器602中的每一者含有用于x及z输出的3位多路复用器604、608选择,用于y输出的2位多路复用器606选择,各自用于x、y及z旁路选择器的一个位,及用于定序器的2位下一状态。可存在被指派的额外位。用于定序器寄存器的编程源可作为常数加载机制的部分来加载,在此情形中,其将构成两个32位字,每一字含有用于两个定序器状态的13个位。为了保持42位顺序加载链,每一工作中的6个未使用的位也具有寄存器,可经由定序器的输出选择器将备用位带到块引脚以在rae 300中的其它处用作定序器输出。额外配置包含条件被乘数选择,及可能地每一数据输出的输出数据有效启用,以及用于数据有效及旗标再产生的控制。
[0579]
rae x、y及z输入包含小的4个样本重新排序队列610(使用寄存器580图解说明),其经设计以准许所有三个输入上的独立短距离数据重新排序及x输入与z输入之间的定序交换以支持傅里叶变换的序列修改、复数相乘、i/q交错及去交错,及类似操作。重新排序队
列610中的寄存器580还可加载以常数且然后被保持以准许多达四个输入常数循环到x rae输入365、y rae输入370及z rae输入375中的每一者,这对于利用常数的点乘积(在滤波器、相关器等中使用)是有用的。输入重新排序逻辑包含用于按y的正负号选择或绕过常数寄存器以促成条件被乘数操作的路径,其中x输入在y是非负时是xin,且如果y是负的,则x输入是存储于常数寄存器中的一者的常数。用于x输出及z输出的输出选择器分别是8:1选择器605、590,后续接着2:1旁路选择(分别地,多路复用器604、608)。每一8:1选择器从相同输入上的4个经延迟样本或相反输入上的4个经延迟样本中进行选择。x选择及y选择由来自通过序列计数器575选择的4个配置寄存器中的一者的两个4位值控制。y输入具有类似4深度移位寄存器队列,其中4:1多路复用器607选择哪一队列抽头是定向到每一定序器状态的输出。这还后续接着由序列计数器575控制的2:1队列旁路多路复用器606。
[0580]
图61是图解说明输入重新排序队列350及输出重新排序队列355的定序器575逻辑电路结构的详细电路图及框图。序列计数器575是非分支状态机,其下一状态由配置状态寄存器中的两个位确定。每一配置寄存器是16位,其中每32位配置字写入进行写入2个位。配置位中的两者是寄存器的下一状态。选定配置位中的十一个位驱动如图60中所图解说明的数据路径中的数据选择多路复用器。其余3个位当前未使用,但寄存器保留所述位以便允许配置数据沿着链依序传播。
[0581]
12.数据包及路由控制
[0582]
图68是与可重新配置处理器一起利用的代表性数据包850的图式。在代表性实施例中,数据包850是包括计算核心200 36位有效负载852及控制位853的37个位。有效负载852又包括数据有效负载854的32个位及作为4位后缀856的后缀位。32位数据854支持图69中所图解说明的多种潜在数据格式,包含整数、浮点及simd表示。如上文所提及,后缀856主要用于阵列的零压缩,但也可支持其它函数,例如各种旗标、条件操作、操作索引进位等。控制(数据类型)位853仅由互连120使用且不在计算核心200内进位。
[0583]
图69是在数据包850中利用的代表性数据有效负载854类型的图式且包含,举例来说且无限制地,ieee 754双精度浮点的64位浮点(fp 64)(在两个包858中);ieee 754单精度浮点的32位浮点(fp 32)(862);ieee 754半精度浮点的16位浮点(fp 16)(864);bfloat16的16位脑浮点(bf 16)(866);ieee 754四分之一精度浮点的8位浮点(fp 8)(868),带正负号及无正负号32位整数值的32位整数(int32)(872),带正负号及无正负号16位整数值的16位整数(int16)(874),以及带正负号及无正负号8位整数值的8位整数(int8)(876)。
[0584]
图70是连同分别用于传入计算核心200及从所述计算核心传出的数据的输入多路复用器205及输出多路复用器110一起利用且作为选项还可包含程序定序器825的路由控制器820的框图及电路图。路由控制器820包括由动态输出选择控制的输出选择多路复用器830,所述动态输出选择从动态输出选择832或静态或经编程输出选择834的输出选择多路复用器830选择控制输出836。控制输出836然后又用于从可用于对应输入多路复用器205或输出多路复用器110的输入(从互连网络120、220)选择对应输入多路复用器205或输出多路复用器110的输出。
[0585]
如上文所提及,可配置处理器100利用数据流。作为此的部分,数据生产者断言指示其具有待发送的数据的数据传输请求信号(“req”)(842),且数据消费者断言指示其有空
间来接受数据的数据传输授权信号(“gnt”)(844)。数据传送协调器电路840用于传输此数据传输授权信号(gnt),包括第一数据传送多路复用器846,其接收数据传输请求信号(req)且由动态输出选择852控制来将数据传输请求信号(req)分别传递到对应输入寄存器230或输出寄存器242;及第二数据传送多路复用器848,其接收数据传输授权信号(gnt)且由动态输出选择852控制来将数据传输授权信号(gnt)分别从对应输入寄存器230或输出寄存器242传递回到请求的数据传输器。可包含任选程序定序器825,其还在可存取共享程序存储器856的程序854(例如输出程序272、274、276)的控制下将输入提供到分别地第一数据传送多路复用器846及第二数据传送多路复用器848。
[0586]
此请求与授权机制还用于在各种各样的情况下控制数据流,例如在数据包正去往多于一个目的地时维持数据次序。举例来说,当数据将分叉到多个位置时,数据传输器应在传输数据之前从每一数据接收器接收数据传输授权信号(gnt)。还举例来说,当数据将从多个源合并到单个目的地时,数据接收器应接收多个数据传输请求信号(req)且发布去往每一数据传输器的经组合数据传输授权信号(gnt),且每一数据接收器应在传输数据之前接收数据传输授权信号(gnt)。还举例来说,当数据将从多个源切换到单个目的地时,数据接收器应接收多个数据传输请求信号(req)且发布去往每一单独数据传输器的单独数据传输授权信号(gnt),且每一数据接收器应在传输数据之前接收对应数据传输授权信号(gnt)。还举例来说,当数据将导向到可选择位置时,数据传输器应在传输数据之前从选定数据接收器接收数据传输授权信号(gnt)。
[0587]
13.后缀控制电路及零压缩/解压缩
[0588]
图71是后缀控制电路390的代表性实施例的框图。图72是零压缩电路800的框图及电路图。图73是代表性零压缩数据包序列的图式。图74是零解压缩电路805的框图及电路图。
[0589]
参考图71到74,在代表性实施例中,后缀控制电路390包括用以执行零压缩的零压缩电路800、用以执行零解压缩的零解压缩电路805,及任选地用以相对于后缀856执行可由用户确定的其它活动(例如条件逻辑、分支、条件旗标处理及产生等)的控制逻辑与状态机电路810。在另一代表性实施例中,例如当在计算核心200(例如图4中所图解说明)的其它部分中实施零压缩电路800及零解压缩电路805时,后缀控制电路390通常包括控制逻辑与状态机电路810。零压缩电路800包括零计数器802及包产生器804。当启用零压缩时,零压缩防止有效零值进行传播。替代地,在零计数中使用零计数器802跟踪每一有效零值。在零值流期间,零计数递增直到其达到其最大值15。在此情形中,下一有效数据传送无论值如何均在data_out上作为数据包从包产生器804传播(即,传播原始数据包但以零计数替换其后缀位),其中零计数包含于后缀856中,且零计数器翻滚或复位到0。在非零传送字符串中,数据与0的后缀856一起正规地传播,从而指示不存在先前零值。
[0590]
图73展示在启用零压缩的情况下的实例数据序列。前两个传送806正规地传播。值91及92作为数据包(814)在data_out上发送且后缀856的位设定为0,从而指示存在零个先前零。输入交易3到5(808)不传播,但零计数针对有效输入交易中的每一者递增。在输入交易6(812)上,非零值93到达,其然后在data_out(816)上经由后缀856传播,累加零计数为3。换句话说,在值93之前存在三个零值。零计数还在任何非零值上复位。在所图解说明的实例中,优点是24个输入传送进入零压缩电路且在不丢失信息的情况下仅产生五个输出传送。
[0591]
参考图74,零解压缩电路805包括后缀计数器818及包产生器804。当具有数据有效负载854及后缀856中的非零计数的数据包到达时,后缀计数器818确定后缀856的零计数,且发信号通知包产生器804在发送到达包的实际数据有效负载(其后缀856中具有非零值)之前发布具有零的有效负载854的数据包的所述数目(在data_out 819上)。
[0592]
如上文所提及,替代位于后缀控制电路390内,零压缩电路800及零解压缩电路805可遍及计算核心200分布,例如包含用以从输入多路复用器205接收数据且将任何零压缩解压缩的零解压缩电路805,及例如包含在输出多路复用器110前面用以在选择输出数据包并于各种互连网络120、220上传输输出数据包之前执行零压缩的零压缩电路800。
[0593]
14.代表性应用
[0594]
举例来说,rae电路300可用于使用两个乘法器305(用于乘法)及两个乘法器移位-组合器网络310(用于加法)且使用存储器150产生内插lut(查找表)。直接从存储器获得系数的蛮力法将就存储器利用来说是禁止的。幸运的是,表示所述系列系数的函数是平滑函数(近似sinc函数),这使实时压缩及产生所述系数就资源利用来说是有吸引力的。系数集近似是以间隔1/(p*f)取样的sinc函数,其中p*f是滤波器的长度,p是多相分支长度,且f是fft大小。所述系数跨越多相分支分布,使得在一个分支上,连续抽头与c(k)、c(k f)、c(k 2f)、

相关联。呈现到特定乘法器305的系数是连续系数,使得在乘法器m处,系数是c(t*f=m),其中t是抽头数且f是fft长度。这意味着任一乘法器305处的系数是sinc函数的连续分段。这准许使用内插方案来减少用于存储系数的存储器需要。
[0595]
在设计中使用的内插方案是从存储于每系数产生器以单个块ram实施的小存储器(512x72)中的二次系数产生的二次样条。不存储系数,而是存储拟合到由系数索引的最高有效位表示的邻域的曲线的二次系数。然后将索引的最低有效位作为由最高有效索引位指示的系数位置的偏移应用于二次系数。上部9个位寻址含有曲线的3个二次系数的512x 72位存储器,且下部6个位(针对32768个点)用于计算内插值y=ax2 bx c。举例来说且无限制地,存储器内容是经按比例调整a系数、b系数及c系数,其可使用mathlab polyfit函数找出以将二次系数拟合到滤波器的脉冲响应的分段。
[0596]
图62图解说明使用混合基数算法的fft的组合。图63是图解说明用于执行基数2fft内核的rae 300对的详细电路图及框图。图64是图解说明经配置用于完整旋转器的rae300对的详细电路图及框图。图65是图解说明用于执行基数4fft(蝶形操作)内核的rae电路四元组450的详细电路图及框图。图66是图解说明用于执行fft内核及其它应用的多个rae 300级联对的详细电路图及框图。参考图62,行数目等于第一变换的大小,列数目是第二变换的大小,且行乘列是复合变换的大小。四点(基数-4)复数fft内核加旋动旋转器的一半可以图63、64及65中所图解说明的单个rae电路四元组450构造。rae电路四元组450每时钟处理一个fft点(例如,4点变换在4个时钟中完成且每时钟接受并输出一个样本)。实施方案包含在级联fft内核以构建较大fft时用作相位旋转器的输入上的复数相乘。级联策略遵循用于组合较小fft以实现较长变换长度的混合基数算法。每一对rae 300使用专用对路由来在一个时钟中同时执行偶数点及奇数点两者的实数部分,其与同时执行偶数点及奇数点两者的虚数部分交错:i=ie /-。基数4变换是构建块且可进一步级联,举例来说,如图66中所图解说明。
[0597]
相关联存储器可用于存储两页iq数据达最多256点变换长度及内核输入上的旋转
器的余弦及正弦旋动达最多512点变换长度。基数4内核是用于较大变换长度的构建块。较大傅里叶变换可使用“混合基数”算法由任意大小的小变换“内核”构造。所述算法基本上将数据输入到k x n矩阵中,其中k及n是kn点变换的组成变换的大小。首先沿着行输入数据,然后沿着列应用第一变换。根据中间结果元素在矩阵中的索引对其进行相位旋转,然后对矩阵的每一行应用第二组变换,且最后在逐列读取数据时将输出自然地排序。此序列展示于图62中。
[0598]
可重复地应用混合基数算法来构建逐渐变大的变换,例如图65中图解说明。举例来说,通过以下步骤构造1k点变换:做出各自使用混合基数算法出自4点内核的两个16点变换,然后组合一个16点与其余4点以做出64点变换,然后组合所述64点与其余16点以产生1024点变换。类似地,实施方案可使用混合基数算法由8点变换及16点变换构造,以首先创建128点变换,然后进行算法之另一应用以从128点及16点创建2k变换。8点变换及16点变换还可使用混合基数算法由2点及4点变换创建。输入与输出可呈位反向次序。
[0599]
图67是图解说明还可使用举例来说且无限制地包含一或多个rae电路四元组450的一或多个rae电路300的比较器320及布尔逻辑电路325实施的字符串匹配使用情形的图式。每字符串使用1个simd4通道,每simd通道一个输入。可在四个通道中复制输入流以同时搜索四个不同字符串。输入延迟队列可用于使通过and的延迟比通过比较的延迟短一个时钟。
[0600]
15.总结
[0601]
可重新配置处理器100针对数学密集型应用(举例来说且无限制地,例如涉及人工智能、神经网络计算、数字货币、加密、解密、区块链、快速傅里叶变换(fft)的计算及机器学习)提供高性能及能量高效的解决方案。
[0602]
另外,可重新配置处理器100能够针对这些各种应用中的任一者而被配置,其中下文更详细地图解说明及论述数个此类实例。此可重新配置处理器100可易于按比例调整(例如按比例调整到数百万个计算核心200)、具有低等待时间、为计算及能量高效的、能够实时地处理流式传输数据、为可重新配置的以优化用于选定应用的计算硬件,并且能够进行大规模并行处理。举例来说,在单个芯片上,多个可重新配置处理器100还可使用互连网络120进行排列及连接,以提供每芯片数百到数千个计算核心200。多个此类芯片又可在电路板上进行排列及连接,从而产生每板数千到数百万个计算核心200。任何选定数目个计算核心200可在可重新配置处理器100中实施,且任何数目个可重新配置处理器100可在单个集成电路上实施,并且任何数目个此类集成电路可在电路板上实施。如此,可重新配置处理器100具有可按比例调整到任何选定程度(然而,受其它约束,举例来说且无限制地,例如路由及热耗散)的计算核心200的阵列。
[0603]
16.一般事项
[0604]
处理器电路130可为任何类型的处理器,且可体现为一或多个risc-v或其它处理器、经配置、经设计、经编程或以其它方式适于执行本文中所论述的功能性。当在本文中使用术语处理器电路130时,处理器电路130可包含使用单个集成电路(“ic”),或者可包含使用多个集成电路或被连接、布置或分组在一起的其它组件,例如控制器、微处理器、数字信号处理器(“dsp”)、并行处理器、多核心处理器、定制ic、专用集成电路(“asic”)、现场可编程门阵列(“fpga”)、自适应计算ic、相关联存储器(例如ram、dram及rom),以及模拟或数字
的其它ic及组件。因此,如本文中所使用,术语处理器电路130应被理解为等效地意指并包含单个ic,或定制ic、asic、处理器、微处理器、控制器、fpga、自适应计算ic的布置,或者与相关联存储器(例如微处理器存储器或额外ram、dram、sdram、sram、mram、rom、flash、eprom或e2prom)一起执行下文所论述的功能的集成电路的一些其它分组。处理器电路130与其相关联存储器一起可适于或经配置(经由编程、fpga互连或硬接线)以执行本发明的方法,如上文所论述。举例来说,方法可作为一组程序指令或其它代码(或者等效配置或其它程序)被编程及存储于处理器电路130与其相关联存储器(及/或存储器)及其它等效组件中,以用于在处理器电路130操作(即,通电并运行)时进行后续执行。等效地,当处理器电路130可全部或部分地实施为fpga、定制ic及/或asic时,所述fpga、定制ic或asic还可经设计、经配置及/或经硬接线以实施本发明的方法。举例来说,处理器电路130可被实施为共同地称为“控制器”的模拟及/或数字电路、控制器、微处理器、dsp及/或asic的布置,其分别经硬接线、经编程、经设计、适于或经配置以实施本发明的方法(包含可能连同存储器一起)。
[0605]
可包含数据存储库(或数据库)的存储器150、155可以任何数目个形式来体现,包含任何计算机或其它机器可读数据存储媒体、存储器装置或者当前已知或在未来变得可用的用于信息的存储或通信的其它存储或通信装置内,包含但不限于存储器集成电路(“ic”),或集成电路的存储器部分(例如处理器内的驻留存储器),所述存储器部分为易失性或非易失性、可装卸式或不可装卸式的,包含但不限于ram、flash、dram、sdram、sram、mram、feram、rom、eprom或e2prom,或者任何其它形式的存储器装置,例如磁性硬盘驱动器、光盘驱动器、磁盘或磁带驱动器、硬盘驱动器,其它机器可读存储装置或存储器媒体,例如软盘、cdrom、cd-rw、数字多功能磁盘(dvd)或其它光学存储器,或者任何其它类型的存储器、存储媒体,或者取决于选定实施例而为已知的或变得已知的数据存储设备或电路。存储器150、155可适于存储各种查找表、参数、系数、其它信息及数据、(本发明的软件的)程序或指令,以及其它类型的表,例如数据库表。
[0606]
如上文所指示,使用本发明的软件及数据结构将处理器电路130硬接线或编程,(举例来说)以执行本发明的方法。因此,本发明的系统及方法可体现为软件,所述软件提供此类编程或其它指令,例如上文所论述的体现于非暂时性计算机可读媒体内的一组指令及/或元数据。另外,元数据还可用于定义查找表或数据库的各种数据结构。以实例方式且无限制地,此软件可呈源代码或目标代码的形式。源代码进一步可被编译成某种形式的指令或目标代码(包含汇编语言指令或配置信息)。本发明的软件、源代码或元数据可体现为任何类型的代码,例如c、c 、systemc、lisa、xml、java、brew、sql及其变化形式(例如,sql 99或sql的专有版本)、db2、oracle,或者执行本文中所论述的功能性的任何其它类型的程序设计语言,包含各种硬件定义或硬件建模语言(例如,verilog、vhdl、rtl)及所得数据库文件(例如,gdsii)。因此,如在本文中等效地使用的“构建”、“程序构建”、“软件构建”或“软件”意指并是指任何种类、具有任何语法或签名的任何程序设计语言,其提供或可被解释为提供指定的相关联功能性或方法(举例来说,当被实例化或加载到处理器电路130或计算机中并被执行时,包含处理器电路130)。
[0607]
本发明的软件、元数据或其它源代码以及任何所得位文件(目标代码、数据库或查找表)可体现于任何有形非暂时性存储媒体(例如计算机或其它机器可读数据存储媒体中的任一者)内作为计算机可读指令、数据结构、程序模块或其它数据,例如上文关于存储器
140(例如,软盘、cdrom、cd-rw、dvd、磁性硬盘驱动器、光盘驱动器或者任何其它类型的数据存储设备或媒体,如上所述)所论述。
[0608]
本公开将被视为本发明的原理的示例并且不打算将本发明限制于所图解说明的特定实施例。就此来说,将理解,本发明的应用不限于上文及下文所陈述、图式中所图解说明或如在实例中所描述的构造细节及组件布置。与本发明一致的系统、方法及设备能够具有其它实施例且能够以各种方式实践及执行,所有这些均被视为等效的并且在本公开的范围内。
[0609]
虽然已关于本发明的特定实施例来描述本发明,但这些实施例仅为说明性的,而非限制本发明。在本文中的说明中,提供众多特定细节(例如电子组件、电子及结构连接、材料及结构变化形式的实例),以提供对本发明的实施例的透彻理解。然而,所属领域的技术人员将认识到,可在不具有特定细节中的一或多者的情况下或利用其它设备、系统、组合件、组件、材料、部分等实践本发明的实施例。在其它实例中,未具体展示或详细描述众所周知的结构、材料或操作以避免使本发明的实施例的方面模糊。另外,各种图未按比例进行绘制且不应被视为限制性的。
[0610]
贯穿本说明书对“一个实施例”、“一实施例”或特定“实施例”的提及意指结合实施例所描述的特定特征、结构或特性包含于本发明的至少一个实施例中且未必包含于所有实施例中,并且进一步未必是指同一实施例。此外,本发明的任何特定实施例的特定特征、结构或特性可以任何适合方式且以任何组合与一或多个其它实施例进行组合,包含使用选定特征而不相应地使用其它特征。另外,可做出许多修改以使特定应用、情形或材料适于本发明的基本范围及精神。将理解,本文中所描述及所图解说明的本发明的实施例的其它变化及修改鉴于本文中的教示是可能的且将被视为本发明的精神及范围的一部分。
[0611]
对于本文中数值范围的陈述,明确预期其间具有相同精确度的每一中间数值。举例来说,对于范围6到9,除6及9以外还预期数值7及8,且对于范围6.0到7.0,明确预期数值6.0、6.1、6.2、6.3、6.4、6.5、6.6、6.7、6.8、6.9及7.0。另外,范围内的每个中间子范围以任何组合被预期,且在本公开的范围内。举例来说,对于范围5到10,子范围5到6、5到7、5到8、5到9、6到7、6到8、6到9、6到10、7到8、7到9、7到10、8到9、8到10及9到10被预期且在所揭示范围的范围内。
[0612]
还将了解,各图中所描绘的元件中的一或多者还可以较单独或集成方式实施,或者甚至在特定情形中被移除或使成为不可操作的,如根据特定应用可适用。整体形成的组件组合也在本发明的范围内,尤其是对于其中离散组件的分离或组合不清楚或难以辨认的实施例。另外,在本文中术语“耦合(coupled)”(包含以其各种形成,例如“耦合(coupling)”或“可耦合(couplable)”)的使用意指且包含任何直接或间接电、结构或磁性耦合、连接或附接,或者对此直接或间接电、结构或磁性耦合、连接或附接的适应或能力,包含整体形成的组件及经由或通过另一组件耦合的组件。
[0613]
此外,除非另有明确注解,否则图式/图中的任何信号箭头应被视为仅为示范性而非限制性的。步骤的组成部分的组合也将被视为在本发明的范围内,尤其是在分离或组合的能力不清楚或可预见的情况下。除非另有指示,否则在本文中及贯穿所附权利要求所使用的分离性术语“或”通常打算意指“及/或”,具有连接性及分离性意义两者(且不局限于“排他性或”含义)。除非上下文另外明确指出,否则如在本文中的说明中及贯穿所附权利要
求书所使用,“一(a、an)”及“所述(the)”包含复数参考。而且,除非上下文另外明确指出,否则如在本文中的说明中及贯穿所附权利要求书所使用,“在
……
中”的意义包含“在
……
中”及“在
……
上”。
[0614]
包含发明内容或摘要中所描述内容的本发明的所图解说明实施例的前述说明并非打算为穷尽性的或将本发明限制于本文中所揭示的精确形式。依据前述内容,将观察到在不背离本发明的新颖概念的精神及范围的情况下,打算并可实现众多变化、修改及替代。将理解,不打算或不应推断关于本文中所图解说明的特定方法及设备的限制。当然,打算通过所附权利要求书涵盖落入权利要求书的范围内的所有此类修改。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献