基于可配置技术的浮点运算加速单元的制作方法

文档序号:12462845阅读:285来源:国知局
基于可配置技术的浮点运算加速单元的制作方法与工艺

本发明属于可配置计算技术领域,尤其涉及一种基于可配置技术的浮点运算加速单元。



背景技术:

目前,ASIC(Application Specific Integrated Circuit,集成电路)、GPU(Graphics Processing Unit,图形处理器)、DSP(digital signal processor,数字信号处理器)和CPU(Central Processing Unit,中央处理器)等在微电子技术领域被广泛应用,完成各种计算相关的任务。

然而,现有技术存在诸多问题,以ASIC为例:ASIC一般都是专用的,通过牺牲编程能力换取更高的计算性能和能量效率,研发周期长、投入高、功能单一、无法复用;随着微电子技术的发展,系统应用规模和复杂度急剧增加,多种标准和算法并存,专用ASIC难以满足不同应用场景的需求。又例如,GPU虽然具有很高的可编程性、灵活性高,但是却存在能效低的问题。

如何在提高计算能效的同时保证计算的灵活性是本领域技术人员亟需解决的问题之一。



技术实现要素:

本发明的技术解决问题:克服现有技术的不足,提供一种基于可配置技术的浮点运算加速单元,旨在提高计算能效的同时保证计算的灵活性。

为了解决上述技术问题,本发明公开了一种基于可配置技术的浮点运算加速单元,包括:第一输入端口fifo1、第二输入端口fifo2,可配置寄存器组、控制运算逻辑模块、结果选择器和结果输出单元;其中,所述可配置寄存器组中包括:配置寄存器和至少一个数据寄存器;所述控制运算逻辑模块包括:至少一个运算器和至少一个选择器;

所述第一输入端口fifo1,用于接收外部输入的第一数据;

所述第二输入端口fifo2,用于接收外部输入的第二数据;

所述至少一个数据寄存器,用于对根据配置信号确定的至少一个第三数据进行存储;

所述配置寄存器,用于根据待执行运算,生成配置信息;

所述控制运算逻辑模块,用于接收配置寄存器生成的配置信息,根据配置信息生成控制信号;根据所述控制信号控制所述至少一个运算器和至少一个选择器,对所述第一数据、和/或第二数据、和/或第三数据进行运算,得到所述待执行运算对应的运算结果;

所述结果选择器,用于从所述控制运算逻辑模块中选择所述待执行运算对应的运算结果;

所述结果输出单元,用于将结果选择器选择的运算结果输出。

在上述基于可配置技术的浮点运算加速单元中,所述至少一个运算器,包括:第一浮点加法器、第二浮点加法器、第三浮点加法器、第一浮点减法器、第二浮点减法器、第三浮点减法器、第一浮点乘法器、第二浮点乘法器、第三浮点乘法器、第四浮点乘法器和浮点除法器;

所述至少一个选择器包括:第一二选一选择器、第二二选一选择器、第三二选一选择器、第四二选一选择器和第五二选一选择器;

所述控制信号包括:用于指示执行蝶形运算的第一子控制信号、用于指示执行复数乘法运算的第二子控制信号、用于指示执行复数加法运算的第三子控制信号、用于指示执行复数减法运算的第四子控制信号、用于指示执行单精度浮点乘运算的第五子控制信号、用于指示执行单精度浮点除法运算的第六子控制信号。

在上述基于可配置技术的浮点运算加速单元中,所述加速单元还包括:第三输入端口fifo3和缓存端口fifo4;其中,所述第三输入端口fifo3,用于接收蝶形运算对应的旋转因子数据;

所述第一浮点加法器,用于根据所述第一子控制信号,分别接收所述第一输入端口fifo1输入的第一数据的高32位和所述第二输入端口fifo2输入的第二数据的高32位,作加法,得到第一运算结果;

所述第二浮点加法器,用于根据所述第一子控制信号,分别接收所述第一输入端口fifo1输入的第一数据的低32位和所述第二输入端口fifo2输入的第二数据的低32位,作加法,得到第二运算结果;

所述缓存端口fifo4,用于根据所述第一子控制信号,接收所述第一运算结果和第二运算结果,合并第一运算结果和第二运算结果,得到第三运算结果,并缓存所述第三运算结果;

所述第一浮点减法器,用于根据所述第一子控制信号,分别接收所述第一输入端口fifo1输入的第一数据的高32位和所述第二输入端口fifo2输入的第二数据的高32位,作减法,得到第四运算结果;

所述第二浮点减法器,用于根据所述第一子控制信号,分别接收所述第一输入端口fifo1输入的第一数据的低32位和所述第二输入端口fifo2输入的第二数据的低32位,作减法,得到第五运算结果;

所述第二二选一选择器,用于根据所述第一子控制信号,选择接收所述第一浮点减法器输出的第四运算结果;

所述第三二选一选择器,用于根据所述第一子控制信号,选择接收所述第二浮点减法器输出的第五运算结果;

所述第四二选一选择器,用于根据所述第一子控制信号,选择接收所述第三输入端口fifo3输入的旋转因子数据的高32位;

所述第五二选一选择器,用于根据所述第一子控制信号,选择接收所述第三输入端口fifo3输入的旋转因子数据的低32位;

所述第一浮点乘法器,用于根据所述第一子控制信号,选择分别接收所述第二二选一选择器输出的第四运算结果所述第四二选一选择器输出的旋转因子数据的高32位,作乘法,得到第六运算结果;

所述第二浮点乘法器,用于根据所述第一子控制信号,选择分别接收所述第三二选一选择器输出的第五运算结果和所述第五二选一选择器输出的旋转因子数据的低32位,作乘法,得到第七运算结果;

所述第三浮点乘法器,用于根据所述第一子控制信号,选择分别接收所述第二二选一选择器输出的第四运算结果和所述第五二选一选择器输出的旋转因子数据的低32位,作乘法,得到第八运算结果;

所述第四浮点乘法器,用于根据所述第一子控制信号,选择分别接收所述第三二选一选择器输出的第五运算结果和所述第四二选一选择器输出的旋转因子数据的高32位,作乘法,得到第九运算结果;

所述第三浮点减法器,用于根据所述第一子控制信号,选择分别接收所述第一浮点乘法器输出的第六运算结果和所述第二浮点乘法器输出的第七运算结果,作减法,得到第十运算结果;

所述第三浮点加法器,用于根据所述第一子控制信号,选择分别接收所述第三浮点乘法器输出的第八运算结果和所述第四浮点乘法器输出的第九运算结果,作加法,得到第十一运算结果;

所述结果选择器,用于根据所述第一子控制信号,选择分别接收所述第三浮点减法器输出的第十运算结果和所述第三浮点加法器输出的第十一运算结果,合并所述第十运算结果和第十一运算结果,得到第十二运算结果,将所述第十二运算结果输出至结果输出单元;

所述结果输出单元,用于在接收到所述结果选择器输出的第十二运算结果时,从所述缓存端口fifo4中获取缓存的第三运算结果;将所述第十二运算结果和所述第三运算结果同时输出。

在上述基于可配置技术的浮点运算加速单元中,所述第一二选一选择器,用于根据所述第二子控制信号,选择接收所述第二输入端口fifo2输入的第二数据,或者,从所述至少一个数据寄存器中获取存储在所述至少一个数据寄存器中的第三数据;

所述第二二选一选择器,用于根据所述第二子控制信号,选择接收所述第一输入端口fifo1输入的第一数据的高32位;

所述第三二选一选择器,用于根据所述第二子控制信号,选择接收所述第一输入端口fifo1输入的第一数据的低32位;

所述第四二选一选择器,用于根据所述第二子控制信号,选择接收所述第一二选一选择器输出的第二数据或第三数据的高32位;

所述第五二选一选择器,用于根据所述第二子控制信号,选择接收所述第一二选一选择器输出的第二数据或第三数据的低32位;

所述第一浮点乘法器,用于根据所述第二子控制信号,选择分别接收所述第二二选一选择器输出的第一数据的高32位,以及,所述第四二选一选择器输出的第二数据或第三数据的高32位,作乘法,得到第十三运算结果;

所述第二浮点乘法器,用于根据所述第二子控制信号,选择分别接收所述第三二选一选择器输出的第一数据的低32位,以及,所述第五二选一选择器输出的第二数据或第三数据的低32位,作乘法,得到第十四运算结果;

所述第三浮点乘法器,用于根据所述第二子控制信号,选择分别接收所述第二二选一选择器输出的第一数据的高32位,以及,所述第五二选一选择器输出的第二数据或第三数据的低32位,作乘法,得到第十五运算结果;

所述第四浮点乘法器,用于根据所述第二子控制信号,选择分别接收所述第三二选一选择器输出的第一数据的低32,以及,所述第四二选一选择器输出的第二数据或第三数据的高32位,作乘法,得到第十六运算结果;

所述第三浮点减法器,用于根据所述第二子控制信号,选择分别接收所述第一浮点乘法器输出的第十三运算结果和所述第二浮点乘法器输出的第十四运算结果,作减法,得到第十七运算结果;

所述第三浮点加法器,用于根据所述第二子控制信号,选择分别接收所述第三浮点乘法器输出的第十五运算结果和所述第四浮点乘法器输出的第十六运算结果,作加法,得到第十八运算结果;

所述结果选择器,用于根据所述第二子控制信号,选择分别接收所述第三浮点减法器输出的第十七运算结果和所述第三浮点加法器输出的第十八运算结果,合并所述第十七运算结果和第十八运算结果,得到第十九运算结果,将所述第十九运算结果输出至结果输出单元;

所述结果输出单元,用于将所述结果选择器合并得到第十九运算结果输出。

在上述基于可配置技术的浮点运算加速单元中,所述第一二选一选择器,用于根据所述第三子控制信号,选择接收所述第二输入端口fifo2输入的第二数据,或者,从所述至少一个数据寄存器中获取存储在所述至少一个数据寄存器中的第三数据;

所述第一浮点加法器,用于根据所述第三子控制信号,选择分别接收所述第一输入端口fifo1输入的第一数据的高32,以及,所述第一二选一选择器输出的第二数据或第三数据的高32位,作加法,得到第二十运算结果;

所述第二浮点加法器,用于根据所述第三子控制信号,选择分别接收所述第一输入端口fifo1输入的第一数据的低32位,以及,所述第一二选一选择器输出的第二数据或第三数据的低32位,作加法,得到第二十一运算结果;

所述结果选择器,用于根据所述第三子控制信号,选择分别接收所述第一浮点加法器输出的第二十运算结果和所述第二浮点加法器输出的第二十一运算结果,合并所述第二十运算结果和第二十一运算结果,得到第二十二运算结果,将所述第二十二运算结果输出至结果输出单元;

所述结果输出单元,用于将所述结果选择器合并得到第二十二运算结果输出。

在上述基于可配置技术的浮点运算加速单元中,所述第一二选一选择器,用于根据所述第四子控制信号,选择接收所述第二输入端口fifo2输入的第二数据,或者,从所述至少一个数据寄存器中获取存储在所述至少一个数据寄存器中的第三数据;

所述第一浮点减法器,用于根据所述第四子控制信号,选择分别接收所述第一输入端口fifo1输入的第一数据的高32,以及,所述第一二选一选择器输出的第二数据或第三数据的高32位,作减法,得到第二十三运算结果;

所述第二浮点减法器,用于根据所述第四子控制信号,选择分别接收所述第一输入端口fifo1输入的第一数据的低32位,以及,所述第一二选一选择器输出的第二数据或第三数据的低32位,作减法,得到第二十四运算结果;

所述结果选择器,用于根据所述第四子控制信号,选择分别接收所述第一浮点减法器输出的第二十三运算结果和所述第二浮点减法器输出的第二十四运算结果,合并所述第二十三运算结果和第二十四运算结果,得到第二十五运算结果,将所述第二十五运算结果输出至结果输出单元;

所述结果输出单元,用于将所述结果选择器合并得到第二十五运算结果输出。

在上述基于可配置技术的浮点运算加速单元中,所述第一二选一选择器,用于根据所述第五子控制信号,选择接收所述第二输入端口fifo2输入的第二数据,或者,从所述至少一个数据寄存器中获取存储在所述至少一个数据寄存器中的第三数据;

所述第二二选一选择器,用于根据所述第五子控制信号,选择接收所述第一输入端口fifo1输入的第一数据;

所述第四二选一选择器,用于根据所述第五子控制信号,选择接收所述第一二选一选择器输出的第二数据或第三数据;

所述第一浮点乘法器,用于根据所述第五子控制信号,选择分别接收所述第二二选一选择器输出的第一数据,以及,所述第四二选一选择器输出的第二数据或第三数据,作乘法,得到第二十六运算结果;

所述结果选择器,用于根据所述第五子控制信号,选择接收所述第一浮点乘法器输出的第二十六运算结果,将所述第二十六运算结果输出至结果输出单元;

所述结果输出单元,用于将所述结果选择器接收的第二十六运算结果输出。

在上述基于可配置技术的浮点运算加速单元中,所述第一二选一选择器,用于根据所述第六子控制信号,选择接收所述第二输入端口fifo2输入的第二数据,或者,从所述至少一个数据寄存器中获取存储在所述至少一个数据寄存器中的第三数据;

所述浮点除法器,用于根据所述第六子控制信号,选择分别接收所述第一二选一选择器输出的第二数据,以及,所述第一输入端口fifo1输入的第一数据,得到第二十七运算结果;

所述结果选择器,用于根据所述第六子控制信号,选择接收所述浮点除法器输出的第二十七运算结果,将所述第二十七运算结果输出至结果输出单元;

所述结果输出单元,用于将所述结果选择器接收的第二十七运算结果输出。

在上述基于可配置技术的浮点运算加速单元中,所述至少一个数据寄存器包括:32个数据寄存器;

所述控制运算逻辑模块,还用于根据所述配置信息,选择接收所述第一输入端口fifo1输入的第一数据、或接收所述第二输入端口fifo2输入的第二数据、或获取所述32个数据寄存器中的任意一个或多个数据寄存器中保存的第一数据、或获取所述32个数据寄存器中的任意一个或多个数据寄存器中保存的第三数据。

本发明具有以下优点:

(1)本发明所述的加速单元基于可配置计术提出,通过第一输入端口fifo1、第二输入端口fifo2,可配置寄存器组、控制运算逻辑模块、结果选择器和结果输出单元等实现对设备内部硬件的逻辑功能和连接配置的重构,将软件的灵活性与硬件的高效、低功耗相结合,利用硬件来实现软件算法,在提高计算能效的同时保证了计算的灵活性,能够适应不同的计算场景。

(2)本发明实现了蝶形运算、复数乘运算、复数加法运算、复数减法运算、单精度浮点乘运算和单精度浮点除法运算六种运算,以流处理的方式加速大量数据的规则运算,根据不同的配置指令,执行不同的运算。有效的提高了复杂算法处理的能力,大幅度提高了系统芯片的性能。

(3)在实际应用中,可以根据需要配置其中一种运算功能运行,大大提高了处理复杂算法的灵活性,满足多种算法需要,具有较强的实用性。

附图说明

图1是本发明实施例中一种基于可配置技术的浮点运算加速单元的结构框图;

图2是本发明实施例中一种基于可配置技术的浮点运算加速单元在做蝶形运算时的逻辑连接结构示意图;

图3是本发明实施例中一种基于可配置技术的浮点运算加速单元在做复数乘法运算时的逻辑连接结构示意图;

图4是本发明实施例中一种基于可配置技术的浮点运算加速单元在做复数加法运算时的逻辑连接结构示意图;

图5是本发明实施例中一种基于可配置技术的浮点运算加速单元在做复数减法运算时的逻辑连接结构示意图;

图6是本发明实施例中一种基于可配置技术的浮点运算加速单元在做单精度浮点乘运算时的逻辑连接结构示意图;

图7是本发明实施例中一种基于可配置技术的浮点运算加速单元在做单精度浮点除法运算时的逻辑连接结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明公共的实施方式作进一步详细描述。

参照图1,示出了本发明实施例中一种基于可配置技术的浮点运算加速单元的结构框图。在本实施例中,所述基于可配置技术的浮点运算加速单元包括:第一输入端口fifo1、第二输入端口fifo2,可配置寄存器组、控制运算逻辑模块、结果选择器和结果输出单元。其中,所述可配置寄存器组中包括:配置寄存器和至少一个数据寄存器;所述控制运算逻辑模块包括:至少一个运算器和至少一个选择器。其中:

所述第一输入端口fifo1,用于接收外部输入的第一数据;所述第二输入端口fifo2,用于接收外部输入的第二数据。

在本实施例中,所述第一数据和所述第二数据可以是复数数据也可以是实数数据,本实施例对此不作限制。

所述至少一个数据寄存器,用于对根据配置信号确定的至少一个第三数据进行存储。其中,配置信号可以用于对可配置寄存器组中的各个寄存器(包括:数据寄存器和配置寄存器)进行配置,所述配置信号包括但不仅限于:寄存器配置地址信号、寄存器配置数据信号、寄存器读使能信号和寄存器写使能信号。配置时根据寄存器配置地址信号、寄存器配置数据信号和寄存器写使能信号配置可配置寄存器组内部的配置缓存器;调试时根据寄存器配置地址信号、寄存器配置数据信号、寄存器读使能信号的值输出配置寄存器的值。

所述配置寄存器,用于根据待执行运算,生成配置信息。

在本实施例中,通过本实施例所述的加速单元可以执行的待执行运算包括但不仅限于:蝶形运算、复数乘运算、复数加法运算、复数减法运算、单精度浮点乘运算和单精度浮点除法运算。优选的,当待执行运算不同时,生成的配置信息也不同。

所述控制运算逻辑模块,用于接收配置寄存器生成的配置信息,根据配置信息生成控制信号;根据所述控制信号控制所述至少一个运算器和至少一个选择器,对所述第一数据、和/或第二数据、和/或第三数据进行运算,得到所述待执行运算对应的运算结果。

在本实施例中,如前所述,当待执行运算不同时,配置寄存器生成的配置信息也不同,因此,所述控制运算逻辑模块根据配置信息生成的控制信号也不同。优选的,所述控制信号可以包括:用于指示执行蝶形运算的第一子控制信号、用于指示执行复数乘法运算的第二子控制信号、用于指示执行复数加法运算的第三子控制信号、用于指示执行复数减法运算的第四子控制信号、用于指示执行单精度浮点乘运算的第五子控制信号、用于指示执行单精度浮点除法运算的第六子控制信号。

所述结果选择器,用于从所述控制运算逻辑模块中选择所述待执行运算对应的运算结果。

在本实施例中,通过所述控制运算逻辑模块输出的运算结果可以是蝶形运算运算结果、复数乘运算运算结果、复数加法运算运算结果、复数减法运算运算结果、单精度浮点乘运算运算结果和单精度浮点除法运算运算结果中的任意一种。优选的,所述结果选择器可以根据控制信号从所述控制运算逻辑模块中选择对应于所述待执行运算的运算结果。

所述结果输出单元,用于将结果选择器选择的运算结果输出。

其中,需要说明的是,在本实施例中,所述至少一个数据寄存器的数量可以是32个数据,最多支持16个64位复数数据。

优选的,所述控制运算逻辑模块,还可以用于根据所述配置信息,选择接收所述第一输入端口fifo1输入的第一数据、或接收所述第二输入端口fifo2输入的第二数据、或获取所述32个数据寄存器中的任意一个或多个数据寄存器中保存的第三数据。

换而言之,在本实施例中,用于进行运输的数据可以是直接从输入端口(fifo1或fifo2)输入的数据,也可以是根据配置信号确定的已保存在数据寄存器中的数据。其中,在从数据寄存器中获取数据时,若待获取的数据是复数数据,则一次读取两个连续的寄存器中的数据,即64位数据;若待获取的数据是实数数据,则只取一个寄存器中的数据。

在本实施例的一优选方案中,所述至少一个运算器可以包括:第一浮点加法器、第二浮点加法器、第三浮点加法器、第一浮点减法器、第二浮点减法器、第三浮点减法器、第一浮点乘法器、第二浮点乘法器、第三浮点乘法器、第四浮点乘法器和浮点除法器。所述至少一个选择器可以包括:第一二选一选择器、第二二选一选择器、第三二选一选择器、第四二选一选择器和第五二选一选择器。在实际运算过程中,所述控制运算逻辑模块可以根据控制信号控制所述至少一个运算器与所述至少一个选择器之间,以及,各个运算器之间和各个选择器之间的逻辑连接关系,实现对输入数据的运算,得到相应的运算结果。

下面分别对所述基于可配置技术的浮点运算加速单元在处理不同的运算时,各模块单元之间的逻辑连接关系进行说明。

一、蝶形运算

参照图2,示出了本发明实施例中一种基于可配置技术的浮点运算加速单元在做蝶形运算时的逻辑连接结构示意图。在上述实施例的基础上,如图2所示,所述加速单元还包括:第三输入端口fifo3和缓存端口fifo4。

在本实施例中,所述基于可配置技术的浮点运算加速单元在做蝶形运算时,适合输入自然顺序,输出乱序且满足码位倒置规则的fft运算。具体的:

第一输入端口fifo1和第二输入端口fifo2分别用于接收蝶形运算的二个数据;第三输入端口fifo3用于接收蝶形运算对应的旋转因子数据。在本实施例中,第三输入端口fifo3和缓存端口fifo4只提供给蝶形运算使用。

所述第一浮点加法器,用于根据所述第一子控制信号,分别接收所述第一输入端口fifo1输入的第一数据的高32位和所述第二输入端口fifo2输入的第二数据的高32位,作加法(也即,将复数的实部相加),得到第一运算结果。

所述第二浮点加法器,用于根据所述第一子控制信号,分别接收所述第一输入端口fifo1输入的第一数据的低32位和所述第二输入端口fifo2输入的第二数据的低32位,作加法(也即,将复数的虚部相加),得到第二运算结果。

所述缓存端口fifo4,用于根据所述第一子控制信号,接收所述第一运算结果和第二运算结果,合并第一运算结果和第二运算结果,得到第三运算结果(合并后得到的一个64位的复数),并缓存所述第三运算结果。

所述第一浮点减法器,用于根据所述第一子控制信号,分别接收所述第一输入端口fifo1输入的第一数据的高32位和所述第二输入端口fifo2输入的第二数据的高32位,作减法(也即,将复数的实部相减),得到第四运算结果。

所述第二浮点减法器,用于根据所述第一子控制信号,分别接收所述第一输入端口fifo1输入的第一数据的低32位和所述第二输入端口fifo2输入的第二数据的低32位,作减法(也即,将复数的虚部相减),得到第五运算结果。

所述第二二选一选择器其中一个输入是第一浮点减法器的输出,在做蝶形运算时,所述第二二选一选择器,具体用于根据所述第一子控制信号,选择接收所述第一浮点减法器输出的第四运算结果。

所述第三二选一选择器其中一个输入是第二浮点减法器的输出,在做蝶形运算时,所述第三二选一选择器,具体用于根据所述第一子控制信号,选择接收所述第二浮点减法器输出的第五运算结果。

所述第四二选一选择器其中一个输入是第三输入端口fifo3的输出,在做蝶形运算时,所述第四二选一选择器,具体用于根据所述第一子控制信号,选择接收所述第三输入端口fifo3输入的旋转因子数据的高32位。

所述第五二选一选择器其中一个输入是第三输入端口fifo3的输出,在做蝶形运算时,所述第五二选一选择器,具体用于根据所述第一子控制信号,选择接收所述第三输入端口fifo3输入的旋转因子数据的低32位。

所述第一浮点乘法器的两个输入分别是第二二选一选择器和第四二选一选择器的输出,在做蝶形运算时,所述第一浮点乘法器,具体用于根据所述第一子控制信号,选择分别接收所述第二二选一选择器输出的第四运算结果所述第四二选一选择器输出的旋转因子数据的高32位,作乘法,得到第六运算结果。

所述第二浮点乘法器的两个输入分别是第三二选一选择器和第五二选一选择器的输出,在做蝶形运算时,所述第二浮点乘法器,具体用于根据所述第一子控制信号,选择分别接收所述第三二选一选择器输出的第五运算结果和所述第五二选一选择器输出的旋转因子数据的低32位,作乘法,得到第七运算结果。

所述第三浮点乘法器的两个输入分别是第二二选一选择器与第五二选一选择器的输出,在做蝶形运算时,所述第三浮点乘法器,具体用于根据所述第一子控制信号,选择分别接收所述第二二选一选择器输出的第四运算结果和所述第五二选一选择器输出的旋转因子数据的低32位,作乘法,得到第八运算结果。

所述第四浮点乘法器的两个输入分别是第三二选一选择器与第四二选一选择器的输出,在做蝶形运算时,所述第四浮点乘法器,具体用于根据所述第一子控制信号,选择分别接收所述第三二选一选择器输出的第五运算结果和所述第四二选一选择器输出的旋转因子数据的高32位,作乘法,得到第九运算结果。

所述第三浮点减法器的两个输入分别是第一浮点乘法器与第二浮点乘法器的输出,在做蝶形运算时,所述第三浮点减法器,具体用于根据所述第一子控制信号,选择分别接收所述第一浮点乘法器输出的第六运算结果和所述第二浮点乘法器输出的第七运算结果,作减法,得到第十运算结果。

所述第三浮点加法器的两个输入分别是第三浮点乘法器与第四浮点乘法器的输出,在做蝶形运算时,所述第三浮点加法器,具体用于根据所述第一子控制信号,选择分别接收所述第三浮点乘法器输出的第八运算结果和所述第四浮点乘法器输出的第九运算结果,作加法,得到第十一运算结果。

所述结果选择器,用于根据所述第一子控制信号,选择分别接收所述第三浮点减法器输出的第十运算结果和所述第三浮点加法器输出的第十一运算结果,合并所述第十运算结果和第十一运算结果,得到第十二运算结果,将所述第十二运算结果输出至结果输出单元。

所述结果输出单元,用于在接收到所述结果选择器输出的第十二运算结果时,从所述缓存端口fifo4中获取缓存的第三运算结果;将所述第十二运算结果和所述第三运算结果同时输出。

二、复数乘法运算

参照图3,示出了本发明实施例中一种基于可配置技术的浮点运算加速单元在做复数乘法运算时的逻辑连接结构示意图。在上述实施例的基础上,如图3所示,

第一二选一选择器其中一个输入是第二输入端口fifo2的输出,另一个输入是可配置寄存器组中的数据寄存器,在做复数乘法运算时,所述第一二选一选择器,具体用于根据所述第二子控制信号,选择接收所述第二输入端口fifo2输入的第二数据,或者,从所述至少一个数据寄存器中获取存储在所述至少一个数据寄存器中的第三数据。

第二二选一选择器其中一个输入是第一输入端口fifo1的输出,在做复数乘法运算时,所述第二二选一选择器,具体用于根据所述第二子控制信号,选择接收所述第一输入端口fifo1输入的第一数据的高32位。

第三二选一选择器其中一个输入是第一输入端口fifo1的输出,在做复数乘法运算时,所述第三二选一选择器,具体用于根据所述第二子控制信号,选择接收所述第一输入端口fifo1输入的第一数据的低32位。

第四二选一选择器其中一个输入是第一二选一选择器的输出,在做复数乘法运算时,所述第四二选一选择器,具体用于根据所述第二子控制信号,选择接收所述第一二选一选择器输出的第二数据或第三数据的高32位。

第五二选一选择器其中一个输入是第一二选一选择器的输出,在做复数乘法运算时,所述第五二选一选择器,具体用于根据所述第二子控制信号,选择接收所述第一二选一选择器输出的第二数据或第三数据的低32位。

第一浮点乘法器的两个输入分别是第二二选一选择器和第四二选一选择器的输出,在做复数乘法运算时,所述第一浮点乘法器,具体用于根据所述第二子控制信号,选择分别接收所述第二二选一选择器输出的第一数据的高32位,以及,所述第四二选一选择器输出的第二数据或第三数据的高32位,作乘法,得到第十三运算结果。

第二浮点乘法器的两个输入分别是第三二选一选择器和第五二选一选择器的输出,在做复数乘法运算时,所述第二浮点乘法器,具体用于根据所述第二子控制信号,选择分别接收所述第三二选一选择器输出的第一数据的低32位,以及,所述第五二选一选择器输出的第二数据或第三数据的低32位,作乘法,得到第十四运算结果。

第三浮点乘法器的两个输入分别是第二二选一选择器和第五二选一选择器的输出,在做复数乘法运算时,所述第三浮点乘法器,具体用于根据所述第二子控制信号,选择分别接收所述第二二选一选择器输出的第一数据的高32位,以及,所述第五二选一选择器输出的第二数据或第三数据的低32位,作乘法,得到第十五运算结果。

第四浮点乘法器的两个输入分别是第三二选一选择器和第四二选一选择器的输出,在做复数乘法运算时,所述第四浮点乘法器,具体用于根据所述第二子控制信号,选择分别接收所述第三二选一选择器输出的第一数据的低32位,以及,所述第四二选一选择器输出的第二数据或第三数据的高32位,作乘法,得到第十六运算结果。

第三浮点减法器的两个输入分别是第一浮点乘法器和第二浮点乘法器的输出,在做复数乘法运算时,所述第三浮点减法器,具体用于根据所述第二子控制信号,选择分别接收所述第一浮点乘法器输出的第十三运算结果和所述第二浮点乘法器输出的第十四运算结果,作减法,得到第十七运算结果。

第三浮点加法器的两个输入分别是第三浮点乘法器和第四浮点乘法器的输出,在做复数乘法运算时,所述第三浮点加法器,具体用于根据所述第二子控制信号,选择分别接收所述第三浮点乘法器输出的第十五运算结果和所述第四浮点乘法器输出的第十六运算结果,作加法,得到第十八运算结果。

所述结果选择器,用于根据所述第二子控制信号,选择分别接收所述第三浮点减法器输出的第十七运算结果和所述第三浮点加法器输出的第十八运算结果,合并所述第十七运算结果和第十八运算结果,得到第十九运算结果,将所述第十九运算结果输出至结果输出单元。

所述结果输出单元,用于将所述结果选择器合并得到第十九运算结果输出。

三、复数加法运算

参照图4,示出了本发明实施例中一种基于可配置技术的浮点运算加速单元在做复数加法运算时的逻辑连接结构示意图。在上述实施例的基础上,如图4所示,

第一二选一选择器其中一个输入是第二输入端口fifo2的输出,另一个输入是可配置寄存器组中的数据寄存器,在做复数加法运算时,所述第一二选一选择器,具体用于根据所述第三子控制信号,选择接收所述第二输入端口fifo2输入的第二数据,或者,从所述至少一个数据寄存器中获取存储在所述至少一个数据寄存器中的第三数据。

所述第一浮点加法器,用于根据所述第三子控制信号,选择分别接收所述第一输入端口fifo1输入的第一数据的高32,以及,所述第一二选一选择器输出的第二数据或第三数据的高32位,作加法,得到第二十运算结果。

所述第二浮点加法器,用于根据所述第三子控制信号,选择分别接收所述第一输入端口fifo1输入的第一数据的低32位,以及,所述第一二选一选择器输出的第二数据或第三数据的低32位,作加法,得到第二十一运算结果。

所述结果选择器,用于根据所述第三子控制信号,选择分别接收所述第一浮点加法器输出的第二十运算结果和所述第二浮点加法器输出的第二十一运算结果,合并所述第二十运算结果和第二十一运算结果,得到第二十二运算结果,将所述第二十二运算结果输出至结果输出单元。

所述结果输出单元,用于将所述结果选择器合并得到第二十二运算结果输出。

四、复数减法运算

参照图5,示出了本发明实施例中一种基于可配置技术的浮点运算加速单元在做复数减法运算时的逻辑连接结构示意图。在上述实施例的基础上,如图5所示,

第一二选一选择器其中一个输入是第二输入端口fifo2的输出,另一个输入是可配置寄存器组中的数据寄存器,在做复数减法运算时,所述第一二选一选择器,具体用于根据所述第四子控制信号,选择接收所述第二输入端口fifo2输入的第二数据,或者,从所述至少一个数据寄存器中获取存储在所述至少一个数据寄存器中的第三数据。

所述第一浮点减法器,用于根据所述第四子控制信号,选择分别接收所述第一输入端口fifo1输入的第一数据的高32,以及,所述第一二选一选择器输出的第二数据或第三数据的高32位,作减法,得到第二十三运算结果。

所述第二浮点减法器,用于根据所述第四子控制信号,选择分别接收所述第一输入端口fifo1输入的第一数据的低32位,以及,所述第一二选一选择器输出的第二数据或第三数据的低32位,作减法,得到第二十四运算结果。

所述结果选择器,用于根据所述第四子控制信号,选择分别接收所述第一浮点减法器输出的第二十三运算结果和所述第二浮点减法器输出的第二十四运算结果,合并所述第二十三运算结果和第二十四运算结果,得到第二十五运算结果,将所述第二十五运算结果输出至结果输出单元。

所述结果输出单元,用于将所述结果选择器合并得到第二十五运算结果输出。

五、单精度浮点乘运算

参照图6,示出了本发明实施例中一种基于可配置技术的浮点运算加速单元在做单精度浮点乘运算时的逻辑连接结构示意图。在上述实施例的基础上,如图6所示,

第一二选一选择器其中一个输入是第二输入端口fifo2的输出,另一个输入是可配置寄存器组中的数据寄存器,在做单精度浮点乘运算时,所述第一二选一选择器,具体用于根据所述第五子控制信号,选择接收所述第二输入端口fifo2输入的第二数据,或者,从所述至少一个数据寄存器中获取存储在所述至少一个数据寄存器中的第三数据。

第二二选一选择器其中一个输入是第一输入端口fifo1的输出,在做单精度浮点乘运算时,所述第二二选一选择器,具体用于根据所述第五子控制信号,选择接收所述第一输入端口fifo1输入的第一数据。

第四二选一选择器其中一个输入是第一二选一选择器的输出,在做单精度浮点乘运算时,所述第四二选一选择器,具体用于根据所述第五子控制信号,选择接收所述第一二选一选择器输出的第二数据或第三数据。

第一浮点乘法器的两个输入分别是第二二选一选择器和第四二选一选择器的输出,在做单精度浮点乘运算时,所述第一浮点乘法器,具体用于根据所述第五子控制信号,选择分别接收所述第二二选一选择器输出的第一数据,以及,所述第四二选一选择器输出的第二数据或第三数据,作乘法,得到第二十六运算结果。

所述结果选择器,用于根据所述第五子控制信号,选择接收所述第一浮点乘法器输出的第二十六运算结果,将所述第二十六运算结果输出至结果输出单元。

所述结果输出单元,用于将所述结果选择器接收的第二十六运算结果输出。

六、单精度浮点除法运算

参照图7,示出了本发明实施例中一种基于可配置技术的浮点运算加速单元在做单精度浮点除法运算时的逻辑连接结构示意图。在上述实施例的基础上,如图7所示,

第一二选一选择器其中一个输入是第二输入端口fifo2的输出,另一个输入是可配置寄存器组中的数据寄存器,在做单精度浮点除法运算时。所述第一二选一选择器,具体用于根据所述第六子控制信号,选择接收所述第二输入端口fifo2输入的第二数据,或者,从所述至少一个数据寄存器中获取存储在所述至少一个数据寄存器中的第三数据。

所述浮点除法器,用于根据所述第六子控制信号,选择分别接收所述第一二选一选择器输出的第二数据或第三数据,以及,所述第一输入端口fifo1输入的第一数据,作除法,得到第二十七运算结果。

所述结果选择器,用于根据所述第六子控制信号,选择接收所述浮点除法器输出的第二十七运算结果,将所述第二十七运算结果输出至结果输出单元;

所述结果输出单元,用于将所述结果选择器接收的第二十七运算结果输出。

综上所述,本发明实施例所述的加速单元基于可配置计术提出,通过第一输入端口fifo1、第二输入端口fifo2,可配置寄存器组、控制运算逻辑模块、结果选择器和结果输出单元等实现对设备内部硬件的逻辑功能和连接配置的重构,将软件的灵活性与硬件的高效、低功耗相结合,利用硬件来实现软件算法,在提高计算能效的同时保证了计算的灵活性,能够适应不同的计算场景。

其次,通过本发明实施例实现了蝶形运算、复数乘运算、复数加法运算、复数减法运算、单精度浮点乘运算和单精度浮点除法运算六种运算,以流处理的方式加速大量数据的规则运算,根据不同的配置指令,执行不同的运算。有效的提高了复杂算法处理的能力,大幅度提高了系统芯片的性能。

再次,实际应用中,本发明实施例所述的基于可配置技术的浮点运算加速单元可以根据需要配置其中一种运算功能运行,大大提高了处理复杂算法的灵活性,满足多种算法需要,具有较强的实用性。

以上所述,仅为本发明最佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。

本发明说明书中未作详细描述的内容属于本领域专业技术人员的公知技术。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1