CN108196881B - 一种基于可配置技术的定点运算加速单元 - Google Patents
一种基于可配置技术的定点运算加速单元 Download PDFInfo
- Publication number
- CN108196881B CN108196881B CN201711252124.9A CN201711252124A CN108196881B CN 108196881 B CN108196881 B CN 108196881B CN 201711252124 A CN201711252124 A CN 201711252124A CN 108196881 B CN108196881 B CN 108196881B
- Authority
- CN
- China
- Prior art keywords
- data
- result
- selector
- control signal
- fixed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Logic Circuits (AREA)
Abstract
本发明公开了一种基于可配置技术的定点运算加速单元,包括:第一输入端口fifo1、第二输入端口fifo2、可配置寄存器组、控制运算逻辑模块、结果选择器和结果输出单元;可配置寄存器组中包括:配置寄存器和至少一个数据寄存器;控制运算逻辑模块包括:至少一个运算器和至少一个选择器;fifo1和fifo2分别用于接收外部输入数据;至少一个数据寄存器用于对数据进行存储;配置寄存器用于生成运算用的配置信息;控制运算逻辑模块用于根据配置信息控制执行相应的运算,得到运算结果;结果选择器用于选择对应的运算结果;结果输出单元用于将选择的运算结果输出。通过本发明在提高计算能效的同时保证了计算的灵活性。
Description
技术领域
本发明属于可配置计算技术领域,尤其涉及一种基于可配置技术的定点运算加速单元。
背景技术
目前,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,用于接收外部输入的第二数据;
可配置寄存器组,根据外部配置信号,接收外部输入的第三数据并进行存储,同时接收外部的配置信息并进行存储,32位的配置信息的第0位到第6位配置6种运算功能;第7位配置第二运算数据是来自第二输入端口fifo2还是内部数据寄存器;第8位到第15位配置选择32个数据寄存器中的其中一个;第16位到第31位保留。
控制运算逻辑模块,用于读取可配置寄存器组存储的配置信息,根据配置信息生成控制信号,控制信号控制运算逻辑实现配置的功能,并可以选择第二数据的来源;控制信号控制结果选择器选择对应的运算功能的运算结果;控制信号使能结果输出单元的输出;在控制信号控制下,对第一数据、第二数据和第三数据中的一个或两个数据进行运算,得到运算结果,送至结果选择器;
结果选择器,根据控制信号从控制运算逻辑模块的运算结果中选择需要输出的运算结果,通过结果输出单元将运算结果输出。
可配置寄存器组,包括:配置寄存器和至少一个数据寄存器;控制运算逻辑模块,包括:至少一个运算器和至少一个选择器;根据控制信号,控制所述至少一个运算器和至少一个选择器,对第一数据、和/或第二数据进行运算,得到运算结果,送至结果选择器;
结果选择器,根据控制信号从控制运算逻辑模块的运算结果中选择需要输出的运算结果,通过结果输出单元将运算结果输出;
控制运算逻辑模块包括:至少一个运算器和至少一个选择器,运算器,包括:定点加法器、定点乘法器、定点除法器、左移位逻辑运算器、右移位逻辑运算器、第一触发器;
所述至少一个选择器包括:二选一选择器,二选一选择器的输入为第二输入端口fifo2的输出和数据寄存器的输出;
所述控制信号包括:用于指示执行定点加法运算的第一子控制信号、用于指示执行定点乘法运算的第二子控制信号、用于指示执行定点乘累加运算的第三子控制信号、用于指示执行定点除法运算的第四子控制信号、用于指示执行定点左移位运算的第五子控制信号、用于指示执行定点右移位运算的第六子控制信号。
可配置寄存器组,包括:配置寄存器和至少一个数据寄存器;
二选一选择器,用于根据所述第一子控制信号,选择接收第二输入端口fifo2输入的第二数据,或者从数据寄存器中获取存储在数据寄存器中的第三数据;
所述定点加法器,用于根据第一子控制信号,分别接收所述第一输入端口fifo1输入的第一数据和二选一选择器输出的第二数据或第三数据,对第一数据和二选一选择器输出的数据作加法,得到第一运算结果;
结果选择器,用于根据第一子控制信号,选择接收定点加法器输出的第一运算结果,将所述第一运算结果输出至结果输出单元;
结果输出单元,在接收到所述结果选择器输出的第一运算结果后,将所述第一运算结果输出。
二选一选择器,用于根据所述第二子控制信号,选择接收所述第二输入端口fifo2输入的第二数据,或者从数据寄存器中获取存储在数据寄存器中的第三数据;
定点乘法器,根据第二子控制信号,分别接收所述第一输入端口fifo1输入的第一数据和二选一选择器输出的第二数据或第三数据,对第一数据和二选一选择器输出的数据作乘法,得到第二运算结果;
结果选择器,根据所述第二子控制信号,接收定点乘法器输出的第二运算结果,将第二运算结果输出至结果输出单元;
结果输出单元,用于将所述结果选择器输出的第二运算结果输出。
二选一选择器,根据第三子控制信号,选择接收第二输入端口fifo2输入的第二数据,或者从数据寄存器中获取存储在所述至少一个数据寄存器中的第三数据;
定点乘法器,用于根据第三子控制信号,接收所述第一输入端口fifo1输入的第一数据,以及二选一选择器输出的第二数据或第三数据,对第一数据和二选一选择器输出的数据作乘法,得到第三运算结果;
所述定点加法器,用于根据第三子控制信号,选择分别接收所述第一触发器输出的数据,以及定点乘法器输出的第三运算结果,将第一触发器输出的数据和第三运算结果作加法,得到第四运算结果;
所述第一触发器,用于根据第三子控制信号,选择接收定点加法器的第四运算结果,并将接收的运算结果输出;
结果选择器,用于根据所述第三子控制信号,选择接收所述第一触发器输出的第四运算结果,将所述第四运算结果输出至结果输出单元;
所述结果输出单元,用于将所述结果选择器的第四运算结果输出。
二选一选择器,用于根据第四子控制信号,接收第二输入端口fifo2输入的第二数据,或者从数据寄存器中获取存储在数据寄存器中的第三数据;
定点除法器,用于根据所述第四子控制信号,选择分别接收所述第一输入端口fifo1输入的第一数据,以及二选一选择器输出的第二数据或第三数据,作除法,得到第五运算结果;
结果选择器,用于根据第四子控制信号,选择接收所述定点除法器输出的第五运算结果,将第五运算结果输出至结果输出单元;
结果输出单元,用于将所述结果选择器得到的第五运算结果输出。
左移位逻辑运算器,用于根据第五子控制信号,接收第一输入端口fifo1输入的第一数据,对第一数据作左移位,得到第六运算结果;
结果选择器,用于根据所述第五子控制信号,选择接收所述左移位逻辑运算输出的第六运算结果,将所述第六运算结果输出至结果输出单元;
结果输出单元,用于将结果选择器输出的第六运算结果输出。
右移位逻辑运算器,用于根据所述第六子控制信号,接收第一输入端口fifo1输入的第一数据,作右移位,得到第七运算结果;
结果选择器,用于根据所述第六子控制信号,接收右移位逻辑运算输出的第七运算结果,将第七运算结果输出至结果输出单元;
结果输出单元,用于将所述结果选择器接收的第七运算结果输出。
一种存储介质,其特征在于,所述至少一个数据寄存器包括:1~32个数据寄存器;
所述控制运算逻辑模块,还用于根据控制信号,选择接收所述第一输入端口fifo1输入的第一数据、或接收所述第二输入端口fifo2输入的第二数据、或获取所述32个数据寄存器中的任意一个或多个数据寄存器中保存的第三数据。
本发明相对于现有技术具有以下有益效果:
(1)本发明所述的加速单元基于可配置技术提出,通过第一输入端口fifo1、第二输入端口fifo2、可配置寄存器组、控制运算逻辑模块、结果选择器和结果输出单元等实现对设备内部硬件的逻辑功能和连接配置的重构,将软件的灵活性与硬件的高效、低功耗相结合,利用硬件来实现软件算法,在提高计算能效的同时保证了计算的灵活性,能够适应不同的计算场景。
(2)本发明实现了定点加法运算、定点乘法运算、定点乘累加运算、定点除法运算、定点左移位运算和定点右移位运算六种运算,以流处理的方式加速大量数据的规则运算,根据不同的配置指令,执行不同的运算。有效的提高了复杂算法处理的能力,大幅度提高了系统芯片的性能。
(3)在实际应用中,可以根据需要配置其中一种运算功能运行,大大提高了处理复杂算法的灵活性,满足多种算法需要,具有较强的实用性。
(4)实现了单周期配置,可以快速的切换运算功能;并且实现了流水运算,可以单周期连续的输出运算结果。
(5)实现了模块化设计,并且功能配置寄存器的运算功能配置位预留了配置位,容易扩展运算功能。
附图说明
图1是本发明实施例中一种基于可配置技术的定点运算加速单元的结构框图;
图2是本发明实施例中一种基于可配置技术的定点运算加速单元在做定点加法运算时的逻辑连接结构示意图;
图3是本发明实施例中一种基于可配置技术的定点运算加速单元在做定点乘法运算时的逻辑连接结构示意图;
图4是本发明实施例中一种基于可配置技术的定点运算加速单元在做定点乘累加运算时的逻辑连接结构示意图;
图5是本发明实施例中一种基于可配置技术的定点运算加速单元在做定点除法运算时的逻辑连接结构示意图;
图6是本发明实施例中一种基于可配置技术的定点运算加速单元在做定点左移位运算时的逻辑连接结构示意图;
图7是本发明实施例中一种基于可配置技术的定点运算加速单元在做定点右移位运算时的逻辑连接结构示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
本发明公开了一种基于可配置技术的定点运算加速单元,包括:第一输入端口fifo1、第二输入端口fifo2、可配置寄存器组、控制运算逻辑模块、结果选择器和结果输出单元;可配置寄存器组中包括:配置寄存器和至少一个数据寄存器;控制运算逻辑模块包括:至少一个运算器和至少一个选择器;fifo1和fifo2分别用于接收外部输入数据;至少一个数据寄存器用于对数据进行存储;配置寄存器用于生成运算用的配置信息;控制运算逻辑模块用于根据配置信息控制执行相应的运算,得到运算结果;结果选择器用于选择对应的运算结果;结果输出单元用于将选择的运算结果输出。通过本发明在提高计算能效的同时保证了计算的灵活性。
本发明一种基于可配置技术的定点运算加速单元,其特征在于包括:第一输入端口fifo1、第二输入端口fifo2、可配置寄存器组、控制运算逻辑模块、结果选择器和结果输出单元;
第一输入端口fifo1,用于接收外部输入的第一数据,数据优选32位的定点数据;
第二输入端口fifo2,用于接收外部输入的第二数据,数据优选32位的定点数据;
可配置寄存器组包括:配置寄存器和至少一个数据寄存器;数据寄存器与配置寄存器都是32位。数据寄存器根据外部配置信号,接收外部输入的第三数据并进行存储;配置寄存器接收外部的配置信息并进行存储,32位的配置信息的第0位到第6位配置6种运算功能;第7位配置第二运算数据是来自第二输入端口fifo2还是内部数据寄存器;第8位到第15位配置选择32个数据寄存器中的其中一个;第16位到第31位保留。
控制运算逻辑模块包括:至少一个运算器和至少一个选择器,运算器,包括:定点加法器、定点乘法器、定点除法器、左移位逻辑运算器、右移位逻辑运算器、第一触发器;至少一个选择器包括:二选一选择器;控制运算逻辑模块用于读取可配置寄存器组存储的配置信息,根据配置信息生成控制信号,控制信号控制运算逻辑实现配置的功能,并可以选择第二数据的来源;控制信号控制结果选择器选择对应的运算功能的运算结果;控制信号使能结果输出单元的输出;在控制信号控制下,对第一数据、第二数据和第三数据中的一个或两个数据进行运算,得到运算结果,送至结果选择器;
控制运算逻辑模块主要是实现了六种运算功能:定点加法,定点乘法,定点乘累加,定点除法,定点左移位,定点右移位。
控制信号包括:用于指示执行定点加法运算的第一子控制信号、用于指示执行定点乘法运算的第二子控制信号、用于指示执行定点乘累加运算的第三子控制信号、用于指示执行定点除法运算的第四子控制信号、用于指示执行定点左移位运算的第五子控制信号、用于指示执行定点右移位运算的第六子控制信号。
结果选择器,根据控制信号从控制运算逻辑模块的运算结果中选择需要输出的运算结果,通过结果输出单元将运算结果输出。
定点加法:所述定点加法器,用于根据第一子控制信号,分别接收所述第一输入端口fifo1输入的第一数据和二选一选择器输出的第二数据或第三数据,对第一数据和二选一选择器输出的数据作加法,得到第一运算结果;
定点乘法:所述定点乘法器,根据第二子控制信号,分别接收所述第一输入端口fifo1输入的第一数据和二选一选择器输出的第二数据或第三数据,对第一数据和二选一选择器输出的数据作乘法,得到第二运算结果;
定点乘累加:所述定点乘法器,用于根据第三子控制信号,接收所述第一输入端口fifo1输入的第一数据,以及二选一选择器输出的第二数据或第三数据,对第一数据和二选一选择器输出的数据作乘法,得到第三运算结果;
所述定点加法器,用于根据第三子控制信号,选择分别接收所述第一触发器输出的数据,以及定点乘法器输出的第三运算结果,将第一触发器输出的数据和第三运算结果作加法,得到第四运算结果;
第一触发器,用于根据第三子控制信号,选择接收定点加法器的第四运算结果,并将接收的运算结果输出;
定点除法:定点除法器,用于根据所述第四子控制信号,选择分别接收所述第一输入端口fifo1输入的第一数据,以及二选一选择器输出的第二数据或第三数据,作除法,得到第五运算结果;
左移位逻辑运算:左移位逻辑运算器,用于根据第五子控制信号,接收第一输入端口fifo1输入的第一数据,对第一数据作左移位,得到第六运算结果;
右移位逻辑运算:右移位逻辑运算器,用于根据所述第六子控制信号,接收第一输入端口fifo1输入的第一数据,作右移位,得到第七运算结果;
结果选择器,用于根据所述六个子控制信号,接收相应的运算结果,将运算结果输出至结果输出单元;
结果输出单元,用于将所述结果选择器接收的运算结果输出。
基于可配置技术的定点运算加速单元的设计通过单周期的快速重新配置实现多种运算功能,且控制运算逻辑模块内部采用了复用设计,减少了电路面积,在提高计算能效的同时保证了计算的灵活性。
基于可配置技术的定点运算加速单元通过模块化的设计使电路功能易扩展,易调试;采用了复用设计,减少了电路面积;并且采用是流水运算的设计,提高了计算效率。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明公共的实施方式作进一步详细描述。
参照图1,示出了本发明实施例中一种基于可配置技术的定点运算加速单元的结构框图。在本实施例中,所述基于可配置技术的定点运算加速单元包括:第一输入端口fifo1、第二输入端口fifo2、可配置寄存器组、控制运算逻辑模块、结果选择器和结果输出单元。其中,所述可配置寄存器组中包括:配置寄存器和至少一个数据寄存器;所述控制运算逻辑模块包括:至少一个运算器和至少一个选择器。其中:
所述第一输入端口fifo1,用于接收外部输入的第一数据;所述第二输入端口fifo2,用于接收外部输入的第二数据。
在本实施例中,所述第一数据和所述第二数据必须是定点数据。
至少一个数据寄存器,用于对根据配置信号确定的至少一个第三数据进行存储。其中,配置信号可以用于对可配置寄存器组中的各个寄存器(包括:数据寄存器和配置寄存器)进行配置,所述配置信号包括但不仅限于:寄存器配置地址信号、寄存器配置数据信号、寄存器读使能信号和寄存器写使能信号。配置时根据寄存器配置地址信号、寄存器配置数据信号和寄存器写使能信号配置可配置寄存器组内部的配置缓存器;调试时根据寄存器配置地址信号、寄存器配置数据信号、寄存器读使能信号的值输出配置寄存器的值。
配置寄存器,用于根据待执行运算,生成配置信息。
在本实施例中,通过本实施例所述的加速单元可以执行的待执行运算包括但不仅限于:定点加法运算、定点乘法运算、定点乘累加运算、定点除法运算、定点左移位运算和定点右移位运算。优选的,当待执行运算不同时,生成的配置信息也不同。
所述控制运算逻辑模块,用于接收配置寄存器生成的配置信息,根据配置信息生成控制信号;根据所述控制信号控制所述至少一个运算器和至少一个选择器,对所述第一数据、和/或第二数据、和/或第三数据进行运算,得到所述待执行运算对应的运算结果。
在本实施例中,如前所述,当待执行运算不同时,配置寄存器生成的配置信息也不同,因此,所述控制运算逻辑模块根据配置信息生成的控制信号也不同。优选的,所述控制信号可以包括:用于指示执行定点加法运算的第一子控制信号、用于指示执行定点乘法运算的第二子控制信号、用于指示执行定点乘累加运算的第三子控制信号、用于指示执行定点除法运算的第四子控制信号、用于指示定点左移位运算的第五子控制信号、用于指示执行定点右移位运算的第六子控制信号。
结果选择器,用于从所述控制运算逻辑模块中选择所述待执行运算对应的运算结果。
在本实施例中,通过所述控制运算逻辑模块输出的运算结果可以是定点加法运算运算结果、定点乘法运算运算结果、定点乘累加运算运算结果、定点除法运算运算结果、定点左移位运算运算结果和定点右移位运算运算结果中的任意一种。优选的,所述结果选择器可以根据控制信号从所述控制运算逻辑模块中选择对应于所述待执行运算的运算结果。
结果输出单元,用于将结果选择器选择的运算结果输出。
其中,需要说明的是,在本实施例中,所述至少一个数据寄存器的数量可以最多是32个数据。
优选的,所述控制运算逻辑模块,还可以用于根据所述配置信息,选择接收第一输入端口fifo1输入的第一数据、或接收所述第二输入端口fifo2输入的第二数据、或获取所述32个数据寄存器中的任意一个或多个数据寄存器中保存的第三数据,第三数据为定点数据,优选为32位。
换而言之,在本实施例中,用于进行运算的数据可以是直接从输入端口(fifo1或fifo2)输入的数据,也可以是根据配置信号确定的已保存在数据寄存器中的数据。
在本实施例的一优选方案中,所述至少一个运算器可以包括:定点加法器、定点乘法器、定点除法器、左移位逻辑运算器、右移位逻辑运算器。所述至少一个选择器可以包括:二选一选择器。在实际运算过程中,所述控制运算逻辑模块可以根据控制信号控制所述至少一个运算器与所述至少一个选择器之间,以及,各个运算器之间和各个选择器之间的逻辑连接关系,实现对输入数据的运算,得到相应的运算结果。
下面分别对所述基于可配置技术的定点运算加速单元在处理不同的运算时,各模块单元之间的逻辑连接关系进行说明。
一、定点加法运算
参照图2,示出了本发明实施例中一种基于可配置技术的定点运算加速单元在做定点加法运算时的逻辑连接结构示意图。在上述实施例的基础上,如图2所示,
在本实施例中,所述基于可配置技术的定点运算加速单元在做定点加法运算时,可实现数据的流输入连续运算。具体的:
二选一选择器其中一个输入是第二输入端口fifo2的输出,另一个输入是可配置寄存器组中的数据寄存器,在做定点加法运算时,所述二选一选择器,具体用于根据所述第一子控制信号,选择接收所述第二输入端口fifo2输入的第二数据,或者,从所述至少一个数据寄存器中获取存储在所述至少一个数据寄存器中的第三数据。
定点加法器,用于根据所述第一子控制信号,分别接收所述第一输入端口fifo1输入的第一数据和所述二选一选择器输出的第二数据或第三数据,作加法,得到第一运算结果。
结果选择器,用于根据所述第一子控制信号,选择分别接收所述定点加法器输出的第一运算结果,将所述第一运算结果输出至结果输出单元。
结果输出单元,用于在接收到所述结果选择器输出的第一运算结果输出。
二、定点乘法运算
参照图3,示出了本发明实施例中一种基于可配置技术的定点运算加速单元在做定点乘法运算时的逻辑连接结构示意图。在上述实施例的基础上,如图3所示,
二选一选择器其中一个输入是第二输入端口fifo2的输出,另一个输入是可配置寄存器组中的数据寄存器,在做定点乘法运算时,所述二选一选择器,具体用于根据所述第二子控制信号,选择接收所述第二输入端口fifo2输入的第二数据,或者,从所述至少一个数据寄存器中获取存储在所述至少一个数据寄存器中的第三数据。
定点乘法器的两个输入分别是第一输入端口fifo1输入的第一数据和所述二选一选择器输出的第二数据或第三数据,作乘法,得到第二运算结果。
所述结果选择器,用于根据所述第二子控制信号,选择接收所述定点乘法器输出的第二运算结果,将所述第二运算结果输出至结果输出单元。
所述结果输出单元,用于将所述结果选择器得到的第二运算结果输出。
三、定点乘累加运算
参照图4,示出了本发明实施例中一种基于可配置技术的定点运算加速单元在做定点乘累加运算时的逻辑连接结构示意图。在上述实施例的基础上,如图4所示,
二选一选择器其中一个输入是第二输入端口fifo2的输出,另一个输入是可配置寄存器组中的数据寄存器,在做定点乘累加运算时,所述二选一选择器,具体用于根据所述第三子控制信号,选择接收所述第二输入端口fifo2输入的第二数据,或者,从所述至少一个数据寄存器中获取存储在所述至少一个数据寄存器中的第三数据。
定点乘法器,用于根据所述第三子控制信号,选择分别接收所述第一输入端口fifo1输入的第一数据,以及,所述二选一选择器输出的第二数据或第三数据,作乘法,得到第三运算结果。
定点加法器,用于根据所述第三子控制信号,选择分别接收所述第一触发器输入的第一数据,以及,所述定点乘法器输出的第三运算结果,作加法,得到第四运算结果。
第一触发器,用于根据所述第三子控制信号,选择接收所述定点加法器的第四运算结果。
结果选择器,用于根据所述第三子控制信号,选择接收所述第一触发器输出的第四运算结果,将所述第四运算结果输出至结果输出单元。
结果输出单元,用于将所述结果选择器的第四运算结果输出。
四、定点除法运算
参照图5,示出了本发明实施例中一种基于可配置技术的定点运算加速单元在做定点除法运算时的逻辑连接结构示意图。在上述实施例的基础上,如图5所示,
二选一选择器其中一个输入是第二输入端口fifo2的输出,另一个输入是可配置寄存器组中的数据寄存器,在做定点除法运算时,所述二选一选择器,具体用于根据所述第四子控制信号,选择接收所述第二输入端口fifo2输入的第二数据,或者,从所述至少一个数据寄存器中获取存储在所述至少一个数据寄存器中的第三数据。
定点除法器,用于根据所述第四子控制信号,选择分别接收所述第一输入端口fifo1输入的第一数据,以及,所述二选一选择器输出的第二数据或第三数据,作除法,得到第五运算结果。
结果选择器,用于根据所述第四子控制信号,选择接收所述定点除法器输出的第五运算结果,将所述第五运算结果输出至结果输出单元。
结果输出单元,用于将所述结果选择器得到的第五运算结果输出。
五、左移位逻辑运算
参照图6,示出了本发明实施例中一种基于可配置技术的定点运算加速单元在做左移位逻辑运算时的逻辑连接结构示意图。在上述实施例的基础上,如图6所示,
左移位逻辑运算器,用于根据所述第五子控制信号,选择接收所述第一输入端口fifo1输入的第一数据,作左移位,得到第六运算结果。
所述结果选择器,用于根据所述第五子控制信号,选择接收所述左移位逻辑运算输出的第六运算结果,将所述第六运算结果输出至结果输出单元。
结果输出单元,用于将所述结果选择器接收的第六运算结果输出。
六、右移位逻辑运算
参照图7,示出了本发明实施例中一种基于可配置技术的定点运算加速单元在做右移位逻辑运算时的逻辑连接结构示意图。在上述实施例的基础上,如图7所示,
右移位逻辑运算器,用于根据所述第六子控制信号,选择接收所述第一输入端口fifo1输入的第一数据,作右移位,得到第七运算结果。
结果选择器,用于根据所述第六子控制信号,选择接收所述右移位逻辑运算输出的第七运算结果,将所述第七运算结果输出至结果输出单元。
结果输出单元,用于将所述结果选择器接收的第七运算结果输出。
综上所述,本发明实施例所述的加速单元基于可配置技术提出,通过第一输入端口fifo1、第二输入端口fifo2、可配置寄存器组、控制运算逻辑模块、结果选择器和结果输出单元等实现对设备内部硬件的逻辑功能和连接配置的重构,将软件的灵活性与硬件的高效、低功耗相结合,利用硬件来实现软件算法,在提高计算能效的同时保证了计算的灵活性,能够适应不同的计算场景。
其次,通过本发明实施例实现了定点加法运算、定点乘法运算、定点乘累加运算、定点除法运算、左移位逻辑运算、右移位逻辑运算六种运算,以流处理的方式加速大量数据的规则运算,根据不同的配置指令,执行不同的运算。有效的提高了复杂算法处理的能力,大幅度提高了系统芯片的性能。
再次,实际应用中,本发明实施例所述的基于可配置技术的定点运算加速单元可以根据需要配置其中一种运算功能运行,大大提高了处理复杂算法的灵活性,满足多种算法需要,具有较强的实用性。
以上所述,仅为本发明最佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
本发明说明书中未作详细描述的内容属于本领域专业技术人员的公知技术。
Claims (9)
1.一种基于可配置技术的定点运算加速单元,其特征在于包括:第一输入端口fifo1、第二输入端口fifo2、可配置寄存器组、控制运算逻辑模块、结果选择器和结果输出单元;
第一输入端口fifo1,用于接收外部输入的第一数据;
第二输入端口fifo2,用于接收外部输入的第二数据;
可配置寄存器组,根据外部配置信号,接收外部输入的第三数据并进行存储,同时接收外部的配置信息并进行存储;
控制运算逻辑模块,用于读取可配置寄存器组存储的配置信息,根据配置信息生成控制信号;在控制信号控制下,对第一数据、第二数据和第三数据中的一个或两个数据进行运算,得到运算结果,送至结果选择器;
结果选择器,根据控制信号从控制运算逻辑模块的运算结果中选择需要输出的运算结果,通过结果输出单元将运算结果输出;
控制运算逻辑模块包括:至少一个运算器和至少一个选择器,运算器,包括:定点加法器、定点乘法器、定点除法器、左移位逻辑运算器、右移位逻辑运算器、第一触发器;
所述至少一个选择器包括:二选一选择器;
所述控制信号包括:用于指示执行定点加法运算的第一子控制信号、用于指示执行定点乘法运算的第二子控制信号、用于指示执行定点乘累加运算的第三子控制信号、用于指示执行定点除法运算的第四子控制信号、用于指示执行定点左移位运算的第五子控制信号、用于指示执行定点右移位运算的第六子控制信号。
2.根据权利要求1所述的一种基于可配置技术的定点运算加速单元,其特征在于:可配置寄存器组,包括:配置寄存器和至少一个数据寄存器;控制运算逻辑模块,包括:至少一个运算器和至少一个选择器;根据控制信号,控制所述至少一个运算器和至少一个选择器,对第一数据、和/或第二数据进行运算,得到运算结果,送至结果选择器;
结果选择器,根据控制信号从控制运算逻辑模块的运算结果中选择需要输出的运算结果,通过结果输出单元将运算结果输出;
3.根据权利要求1所述的一种基于可配置技术的定点运算加速单元,其特征在于,
可配置寄存器组,包括:配置寄存器和至少一个数据寄存器;
二选一选择器,用于根据所述第一子控制信号,选择接收第二输入端口fifo2输入的第二数据,或者从数据寄存器中获取存储在数据寄存器中的第三数据;
所述定点加法器,用于根据第一子控制信号,分别接收所述第一输入端口fifo1输入的第一数据和二选一选择器输出的第二数据或第三数据,对第一数据和二选一选择器输出的数据作加法,得到第一运算结果;
结果选择器,用于根据第一子控制信号,选择接收定点加法器输出的第一运算结果,将所述第一运算结果输出至结果输出单元;
结果输出单元,在接收到所述结果选择器输出的第一运算结果后,将所述第一运算结果输出。
4.根据权利要求1所述的一种基于可配置技术的定点运算加速单元,其特征在于:二选一选择器,用于根据所述第二子控制信号,选择接收所述第二输入端口fifo2输入的第二数据,或者从数据寄存器中获取存储在数据寄存器中的第三数据;
定点乘法器,根据第二子控制信号,分别接收所述第一输入端口fifo1输入的第一数据和二选一选择器输出的第二数据或第三数据,对第一数据和二选一选择器输出的数据作乘法,得到第二运算结果;
结果选择器,根据所述第二子控制信号,接收定点乘法器输出的第二运算结果,将第二运算结果输出至结果输出单元;
结果输出单元,用于将所述结果选择器输出的第二运算结果输出。
5.根据权利要求1所述的一种基于可配置技术的定点运算加速单元,其特征在于:二选一选择器,根据第三子控制信号,选择接收第二输入端口fifo2输入的第二数据,或者从数据寄存器中获取存储在所述至少一个数据寄存器中的第三数据;
定点乘法器,用于根据第三子控制信号,接收所述第一输入端口fifo1输入的第一数据,以及二选一选择器输出的第二数据或第三数据,对第一数据和二选一选择器输出的数据作乘法,得到第三运算结果;
所述定点加法器,用于根据第三子控制信号,选择分别接收所述第一触发器输出的数据,以及定点乘法器输出的第三运算结果,将第一触发器输出的数据和第三运算结果作加法,得到第四运算结果;
所述第一触发器,用于根据第三子控制信号,选择接收定点加法器的第四运算结果,并将接收的运算结果输出;
结果选择器,用于根据所述第三子控制信号,选择接收所述第一触发器输出的第四运算结果,将所述第四运算结果输出至结果输出单元;
所述结果输出单元,用于将所述结果选择器的第四运算结果输出。
6.根据权利要求1所述的一种基于可配置技术的定点运算加速单元,其特征在于:二选一选择器,用于根据第四子控制信号,接收第二输入端口fifo2输入的第二数据,或者从数据寄存器中获取存储在数据寄存器中的第三数据;
定点除法器,用于根据所述第四子控制信号,选择分别接收所述第一输入端口fifo1输入的第一数据,以及二选一选择器输出的第二数据或第三数据,作除法,得到第五运算结果;
结果选择器,用于根据第四子控制信号,选择接收所述定点除法器输出的第五运算结果,将第五运算结果输出至结果输出单元;
结果输出单元,用于将所述结果选择器得到的第五运算结果输出。
7.根据权利要求1所述的一种基于可配置技术的定点运算加速单元,其特征在于:左移位逻辑运算器,用于根据第五子控制信号,接收第一输入端口fifo1输入的第一数据,对第一数据作左移位,得到第六运算结果;
结果选择器,用于根据所述第五子控制信号,选择接收所述左移位逻辑运算输出的第六运算结果,将所述第六运算结果输出至结果输出单元;
结果输出单元,用于将结果选择器输出的第六运算结果输出。
8.根据权利要求1所述的一种基于可配置技术的定点运算加速单元,其特征在于:右移位逻辑运算器,用于根据所述第六子控制信号,接收第一输入端口fifo1输入的第一数据,作右移位,得到第七运算结果;
结果选择器,用于根据所述第六子控制信号,接收右移位逻辑运算输出的第七运算结果,将第七运算结果输出至结果输出单元;
结果输出单元,用于将所述结果选择器接收的第七运算结果输出。
9.根据权利要求2或3所述的一种基于可配置技术的定点运算加速单元,其特征在于,至少一个数据寄存器包括1~32个数据寄存器;控制运算逻辑模块,还用于根据控制信号,选择接收所述第一输入端口fifo1输入的第一数据、或接收所述第二输入端口fifo2输入的第二数据、或获取所述32个数据寄存器中的任意一个或多个数据寄存器中保存的第三数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711252124.9A CN108196881B (zh) | 2017-12-01 | 2017-12-01 | 一种基于可配置技术的定点运算加速单元 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711252124.9A CN108196881B (zh) | 2017-12-01 | 2017-12-01 | 一种基于可配置技术的定点运算加速单元 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108196881A CN108196881A (zh) | 2018-06-22 |
CN108196881B true CN108196881B (zh) | 2020-10-16 |
Family
ID=62573459
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711252124.9A Active CN108196881B (zh) | 2017-12-01 | 2017-12-01 | 一种基于可配置技术的定点运算加速单元 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108196881B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109190756B (zh) * | 2018-09-10 | 2022-02-18 | 中国科学院计算技术研究所 | 基于Winograd卷积的运算装置及包含该装置的神经网络处理器 |
CN114281184A (zh) * | 2020-09-28 | 2022-04-05 | 京东方科技集团股份有限公司 | 注视点计算装置及其驱动方法、电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1908578A (zh) * | 2006-08-25 | 2007-02-07 | 北京航空航天大学 | 光条图像特征高精度快速提取装置及方法 |
CN206162532U (zh) * | 2016-09-13 | 2017-05-10 | 广东电网有限责任公司电力科学研究院 | 一种并行运算器及并行运算系统 |
CN106775579A (zh) * | 2016-11-29 | 2017-05-31 | 北京时代民芯科技有限公司 | 基于可配置技术的浮点运算加速单元 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI537819B (zh) * | 2012-05-17 | 2016-06-11 | 國立交通大學 | 運算模組、裝置及系統 |
-
2017
- 2017-12-01 CN CN201711252124.9A patent/CN108196881B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1908578A (zh) * | 2006-08-25 | 2007-02-07 | 北京航空航天大学 | 光条图像特征高精度快速提取装置及方法 |
CN206162532U (zh) * | 2016-09-13 | 2017-05-10 | 广东电网有限责任公司电力科学研究院 | 一种并行运算器及并行运算系统 |
CN106775579A (zh) * | 2016-11-29 | 2017-05-31 | 北京时代民芯科技有限公司 | 基于可配置技术的浮点运算加速单元 |
Also Published As
Publication number | Publication date |
---|---|
CN108196881A (zh) | 2018-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7020673B2 (en) | Reconfigurable arithmetic device and arithmetic system including that arithmetic device and address generation device and interleave device applicable to arithmetic system | |
KR100948512B1 (ko) | 부동 소수점 연산을 지원하는 부동 소수점 유닛-프로세싱 요소(fpu-pe) 구조 및 그 fpu-pe 구조를 포함한 재구성 어레이 프로세서(rap) 및 그 rap를 포함한 멀티미디어 플랫폼 | |
US20030200237A1 (en) | Serial operation pipeline, arithmetic device, arithmetic-logic circuit and operation method using the serial operation pipeline | |
US20060112159A1 (en) | Processor | |
US20070083733A1 (en) | Reconfigurable circuit and control method therefor | |
JP2006252440A (ja) | 再構成可能演算処理装置 | |
US7734896B2 (en) | Enhanced processor element structure in a reconfigurable integrated circuit device | |
US11507531B2 (en) | Apparatus and method to switch configurable logic units | |
CN108196881B (zh) | 一种基于可配置技术的定点运算加速单元 | |
US20030005261A1 (en) | Method and apparatus for attaching accelerator hardware containing internal state to a processing core | |
CN116662255A (zh) | 结合超越函数硬件加速器的risc-v处理器实现方法及系统 | |
US20070198811A1 (en) | Data-driven information processor performing operations between data sets included in data packet | |
US7509479B2 (en) | Reconfigurable global cellular automaton with RAM blocks coupled to input and output feedback crossbar switches receiving clock counter value from sequence control unit | |
WO2019023910A1 (zh) | 数据处理方法和设备 | |
JP2006011825A (ja) | 再構成可能演算装置および半導体装置 | |
JP2002229970A (ja) | Simd積和演算方法、積和演算回路、および、半導体集積回路装置 | |
US7007059B1 (en) | Fast pipelined adder/subtractor using increment/decrement function with reduced register utilization | |
KR100821918B1 (ko) | 데이터 경로의 재구성이 가능한 디지털 신호 처리기 | |
US9606798B2 (en) | VLIW processor, instruction structure, and instruction execution method | |
US20160162290A1 (en) | Processor with Polymorphic Instruction Set Architecture | |
JP3144859B2 (ja) | 算術論理演算装置 | |
JPH05324694A (ja) | 再構成可能並列プロセッサ | |
RU2681365C1 (ru) | Вычислительный модуль для многостадийной многопоточной обработки цифровых данных и способ обработки с использованием данного модуля | |
KR100900790B1 (ko) | 재구성형 프로세서 연산 방법 및 장치 | |
JP3088956B2 (ja) | 演算装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |