运算系统及芯片的制作方法

文档序号:15635944发布日期:2018-10-12 21:28阅读:295来源:国知局
本发明涉及系统架构领域,尤其是涉及一种运算系统及芯片。
背景技术
:在硬件平台搭建的系统中,常常会分时用到不同的算法。针对这一问题,通常将所需算法做冗余处理,再分时调用。否则,只能实现一种算法的功能,没有适配性。然而,当需要用到大量算法时,上述处理方式会大量消耗系统资源,同时系统的功耗也非常大。技术实现要素:有鉴于此,本发明的目的在于提供一种运算系统及芯片,以提高运算系统的灵活性和资源复用率,以及系统的计算能力。第一方面,本发明实施例提供了一种运算系统,该系统包括读写控制模块、算式规则控制器、排序器、算式生成器和调度算粒模块:读写控制模块用于存储运算数据;算式规则控制器用于从预先加载的配置信息中获取运算数据的存储地址和运算符号;配置信息与运算数据对应;算式生成器用于根据存储地址,从读写控制模块中读取运算数据;调度算粒模块用于调取运算符号对应的运算器,对运算数据进行运算,得到运算结果,将运算结果保存至读写控制模块;排序器用于对运算结果的存储地址进行排序和计数,得到计数结果;算式规则控制器还用于根据计数结果确定下一个运算数据的存储地址。结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,上述运算系统还包括除法算粒模块;读写控制模块还用于根据运算符号,判断运算数据是否需要除法运算,如果是,启动除法算粒模块完成除法运算;除法算粒模块用于将除法运算对应的运算结果传输至算式生成器。结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,上述算式规则控制器还用于根据配置信息,按照下述公式的形式对运算数据进行重建:其中,a、b、c和d为运算数据对应的数值;k为累加运算的初始值;n为累加运算的总次数;将重建结果对应的参数发送至算式生成器。结合第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第三种可能的实施方式,其中,上述算式生成器还用于根据参数生成对应的算式组,将算式组的最小地址展开至最大地址,得到a、b、c和d的地址;根据a、b、c和d的地址从读写控制模块读取对应的运算数据。结合第一方面的第三种可能的实施方式,本发明实施例提供了第一方面的第四种可能的实施方式,其中,算式生成器还用于将读取到的运算数据保存在参数对应的地址中,将算式组输出至调度算粒模块。结合第一方面的第三种可能的实施方式,本发明实施例提供了第一方面的第五种可能的实施方式,其中,调度算粒模块还用于根据算式组中各算式的顺序、各算式的最后数据位、各算式对应的运算数据和运算符号,调度相应的运算器进行并行运算,得到运算结果,将运算结果保存至读写控制模块;运算器包括加法器、乘法器和累加器。结合第一方面的第五种可能的实施方式,本发明实施例提供了第一方面的第六种可能的实施方式,其中,排序器内设置有计数器组,计数器组包括行计数器组和列计数器组;排序器还用于对调度算粒模块输出的运算结果进行排序;把排序后的运算结果的地址传递给的计数器组,以使计数器组对运算结果的地址进行计数,得到计数结果,根据计数结果得到运算数据的运算程度的指示信号。结合第一方面的第六种可能的实施方式,本发明实施例提供了第一方面的第七种可能的实施方式,其中,读写控制模块还用于:接收运算结果及运算结果的地址;根据运算结果的地址,将运算结果存储至读写控制模块中。结合第一方面的第六种可能的实施方式,本发明实施例提供了第一方面的第七种可能的实施方式,其中,算式规则控制器还用于根据配置信息、排序器输出的计数结果得到下一个运算数据的存储地址。第二方面,本发明实施例提供了一种芯片,上述运算系统设置于该芯片中。本发明实施例带来了以下有益效果:本发明实施例提供了一种运算系统及芯片,读写控制模块存储运算数据;算式规则控制器从预先加载的配置信息中获取运算数据的存储地址和运算符号;算式生成器根据该存储地址,从读写控制模块中读取运算数据;调度算粒模块调取运算符号对应的运算器,对运算数据进行运算,从而得到运算结果,并将其保存至读写控制模块;排序器对该运算结果的存储地址进行排序和计数,从而得到计数结果;算式规则控制器根据该计数结果确定下一个运算数据的存储地址;该方式通过配置信息可以在系统架构不变的情况下实时重构算法功能,提高了运算系统的灵活性和资源复用率;通过算粒调度的方式实现运算指令的并行执行,提高了系统的计算能力。本发明的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本发明的上述技术即可得知。为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施方式,并配合所附附图,作详细说明如下。附图说明为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的一种运算系统的结构示意图;图2为本发明实施例提供的另一种运算系统的结构示意图;图3为本发明实施例提供的上述运算系统中的信号流向示意图;图4为本发明实施例提供的从算式生成器到调度算粒模块的接口信号时序图;图5为本发明实施例提供的从调度算粒模块输出的接口信号时序图;图6为本发明实施例提供的从算式规则控制器到算式生成器的接口信号时序图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。现有的硬件平台中,算法实现方式的资源利用率较低,且计算能力较差,基于此,本发明实施例提供的一种运算系统及芯片,可以应用于fpga或其他硬件平台上。为便于对本实施例进行理解,首先对本发明实施例所公开的一种运算系统进行详细介绍。参见图1所示的一种运算系统的结构示意图,该系统包括读写控制模块100、算式规则控制器101、排序器102、算式生成器103和调度算粒模块104。该读写控制模块100用于存储运算数据;具体地,初始运算数据由上位机发送至读写控制模块;在后续的运算过程中,读写控制模块接收由调度算粒模块传送的运算结果,并储存到相应地址。算式规则控制器101用于从预先加载的配置信息中获取运算数据的存储地址和运算符号;配置信息与运算数据对应;该配置信息一般由上位机发送,包含初始运算数据的存储地址、为待计算的运算数据分配的存储地址及相应算式的运算符号;其中,上述存储地址为读写控制模块中相应数据的地址。算式生成器103用于根据存储地址,从读写控制模块中读取运算数据;具体地,算式生成器接收算式规则控制器发送的运算数据的存储地址及运算符号后,向读写控制模块发送的运算数据的存储地址,接收读写控制模块返回的相应的运算数据。调度算粒模块104用于调取运算符号对应的运算器,对运算数据进行运算,得到运算结果,将运算结果保存至读写控制模块;具体地,调度算粒模块接收算式生成器发送的运算数据、运算符号及待计算的运算数据的存储地址,根据运算符号调取对应的运算器,完成运算;调度算粒模块一般包括加法器、乘法器及累加器;在运算过程中,一般需要进行多种运算,调度算粒模块可采用顺序计算的方式工作,也可以采用乱序并行的方式;与顺序计算比较,乱序并行的计算方式对资源利用更为充分,节省时间。排序器102用于对运算结果的存储地址进行排序和计数,得到计数结果;具体地,排序器首先接收配置信息中运算数据的存储地址;在后续运算过程中,接收调度算粒模块发送的运算结果的存储地址,对存储地址进行排序和计数,并将计数结果发送至算式规则控制器。上述算式规则控制器101还用于根据计数结果确定下一个运算数据的存储地址;具体地,算数规则控制器根据计数结果确定下一个待计算的运算数据的存储地址,并读取相应的运算数据及运算符号,将其传送至算式生成器,进行下一步运算。本发明实施例提供了一种运算系统;在该系统中,读写控制模块存储运算数据;算式规则控制器从预先加载的配置信息中获取运算数据的存储地址和运算符号;算式生成器根据该存储地址,从读写控制模块中读取运算数据;调度算粒模块调取运算符号对应的运算器,对运算数据进行运算,从而得到运算结果,并将其保存至读写控制模块;排序器对该运算结果的存储地址进行排序和计数,从而得到计数结果;算式规则控制器根据该计数结果确定下一个运算数据的存储地址;该系统通过配置信息可以在系统架构不变的情况下实时重构算法功能,提高了运算系统的灵活性和资源复用率;通过算粒调度的方式实现运算指令的并行执行,提高了系统的计算能力。参见图2所示的另一种运算系统的结构示意图,该运算系统在图1所示的运算系统的基础上实现。该运算系统包括读写控制模块200、算式规则控制器201、排序器202、算式生成器203、调度算粒模块204及除法算粒模块205。读写控制模块主要用于存储运算数据,包括初始运算数据及算法实现过程中的运算结果;此外,读写控制模块还用于根据运算符号,判断运算数据是否需要除法运算,如果是,启动除法算粒模块完成除法运算;具体地,读写控制模块接收算式生成器发送的运算符号,从而判断是否启动计算除法,若是,则从读写控制模块的ram(random-accessmemory随机存取存储器)中读取数据给除法算粒模块;除法算粒模块用于将除法运算对应的运算结果传输至算式生成器;此外,除法算粒模块在进行除法运算后,将除法指示发送至算式规则控制器。算式规则控制器用于根据配置信息,按照下述公式的形式对运算数据进行重建:其中,a、b、c和d为运算数据对应的数值;k为累加运算的初始值;n为累加运算的总次数;将重建结果对应的参数发送至算式生成器。通常情况下,所有算法都可拆分成如下底层公式的形式:其中,a、b、c、d可以为任意数,若公式中包含减法可取反之后当加法计算,除法可求完倒数再当乘法计算;由公式1可以推演出来如下公式:(1)y=c;(常数)(2)y=a+c;(加)(3)y=a+f;(f=-c)(减)(4)y=ak*bk(乘)(5)y=c/e;(e=1/d)(除)(6)(累加)(7)(累减j=-a)(8)(乘累加)(9)(乘累减i=-b)(10)(除累加/减h=1/b)(11)(乘累加/减加/减固定的数)(12)(除累加/减加/减固定的数h=1/b)(13)(乘累加/减加/减固定的数再乘/除固定的数)(14)(除累加/减加/减固定的数再乘/除固定的数h=1/b)算式规则控制器接收到配置信息并将其存储起来,根据待计算的运算数据(即y)的地址,按照的形式得到a、b、c和d的存储地址及运算符号,重建公式,并将该公式所需的运算数据发送至算式生成器。算式生成器用于根据参数生成对应的算式组,将算式组的最小地址展开至最大地址,得到a、b、c和d的地址;根据a、b、c和d的地址从读写控制模块读取对应的运算数据;具体地,算式生成器由算式规则控制器模块发送的参数来生成一组算式,把从这组算式的最小地址逐一展开到最大地址,将算式中乘数a的地址、乘数b的地址、加数c的地址、累加后乘数d的地址作为指示信号,发送至读写控制模块,从而读写控制模块对应地址的数据。进一步地,算式生成器还用于将读取到的运算数据保存在参数对应的地址中,将算式组输出至调度算粒模块;具体地,算式生成器将运算数据的地址替换成从读写控制模块的ram中读出的数据,然后把算式按照与调度模块间的接口输出给调度模块,以进行下一步处理。调度算粒模块用于根据算式组中各算式的顺序、各算式的最后数据位、各算式对应的运算数据和运算符号,调度相应的运算器进行并行运算,得到运算结果,将运算结果保存至读写控制模块;运算器包括加法器、乘法器和累加器;具体地,调度算粒模块根据算式生成器发送的多对数据及之间的运算类型来进行仲裁和调度基本的乘、加及累加算粒,使其并行乱序执行,完成多个算式的计算,并将计算结果返回值读写控制模块。乱序执行(out-of-orderexecution)是指将多条指令不按程序规定的顺序分开发送给各相应电路单元处理的技术。这样将根据各电路单元的状态和各指令能否提前执行的具体情况分析后,将能提前执行的指令立即发送给相应电路。上述调度算粒模块中可以包含多个加法器、乘法器或累加器,根据运算符号查询相应的运算器的状态,将运算数据传输至处于空闲状态或所需等待时间较少的相应的运算器,进行数据运算。排序器内设置有计数器组,计数器组包括行计数器组202a和列计数器组202b;排序器还用于对调度算粒模块输出的运算结果进行排序;把排序后的运算结果的地址传递给的计数器组,以使计数器组对运算结果的地址进行计数,得到计数结果,根据计数结果得到运算数据的运算程度的指示信号;由于调度算粒模块在进行并行乱序计算后,返回至排序器的计算结果的地址是乱序的,排序器的功能就是把乱序的地址按顺序排列,然后把排序后的地址传递给行列计数器组模块,按照行列计数给出行列顺序,得到计数结果。读写控制模块还用于接收运算结果及运算结果的地址;根据运算结果的地址,将运算结果存储至读写控制模块中;具体地,读写控制模块接收调度算粒模块发送的运算结果及运算结果的地址,通过地址映射将运算结果存到ram中的对应位置。算式规则控制器还用于根据配置信息、排序器输出的计数结果得到下一个运算数据的存储地址;具体地,算式规则控制器按照配置信息中的规则,通过除法指示、排序后的行列计数器组的判断,来指明运算数据矩阵中该启动计算哪个元素(即待计算的运算数据),获取计算该元素所需的参数(即已知的运算数据)的存储地址,将该地址传递给算式生成器。如图3所示为上述运算系统中的信号流向示意图;上述运算系统也可以称为一种实时可重构计算的指令级并行控制架构,该架构中包括算法控制分系统和调度算粒分系统;算法控制分系统可以通过配置信息的输入,在整个架构不变的情况下,进行实时的重构,实现任意可以分解成加减乘除等底层算粒的算法;当需要分时适配不同的算法时例如矩阵计算、fft(fastfouriertransformation快速傅氏变换)、滤波器等,只需要手动自由加载或全自动加载配置信息即可在不改变代码及硬件的基础上重构算法来实现不同的功能;调度算粒分系统可以将指令级并行执行,使顺序指令乱序执行,可以并行调度底层任意多个算粒进行并行计算,大大提高了其并行计算的能力;两个分系统可以进行多个叠加来实现任意复杂的算法;整个系统具有实时性,无需掉电可实时重构算法;可以全自动按序分时重构完成几种固定算法,无需人机交互。本发明实施例还提供了一种芯片,上述运算系统设置于该芯片中。本发明实施例提供的芯片,与上述实施例提供的运算系统具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。本发明实施例还提供了一种fpga芯片,图2所示运算系统设置于fpga中。各个模块由电路实现,不同的模块之间通过总线进行通信;排序器模块从配置信息模块中获取运算数据的存储地址,配置信息模块与排序器模块的各接口信号的含义如表1所示:表1信号名位宽含义row_start7行排序的首地址row_stop7行排序的终止地址col_start7列排序的首地址col_stop7列排序的终止地址valid1表示数据有效ready1总线空闲指示算式规则控制器从配置信息中获取运算数据的存储地址及运算符号。配置信息模块与算式规则控制器模块各接口信号的含义如表2所示:表2算式生成器将运算数据及运算符号发送至调度算粒模块,以计算y1=a1*b1+c1、y2=(a2*b2+c2*d2)*e2、y3=(a3*b3+c3)*d3这三个计算公式为例,参见图4所示的从算式生成器到调度算粒模块的接口信号时序图,算式生成器模块与调度算例模块间的接口信号中各部分含义如表3所示:表3调度算粒模块将运算结果及运算结果的存储地址通过总线发送至读写控制模块,将运算结果的存储地址发送至排序器,参见图5所示的从调度算粒模块输出的接口信号时序图,图5描述了y1、y2、y3的计算结果返回的时序。其中各信号的含义如表4所示,ready发送至算法生成器,表示调度算粒模块可以接收运算数据:表4信号名位宽含义ready1总线ready指示,与valid是一对握手信号valid1result的有效指示信号id3返回的计算结果属于哪个算法控制器seq_num14某一算法控制器中的运算序列号result128计算结果算式规则控制器向算式生成器发送算式所需的运算数据的存储地址及运算符号。假设所有的算式只能是如下三种形式的一种:y1=a1*b1+c1、y2=(a2*b2+c2*d2)*e2、y3=(a3*b3+c3)*d3其接口信号形式与axi(advancedextensibleinterface高级的可扩展接口)stream(流)接口类似,则从算式规则控制器到算式生成器的接口信号时序图如图6所示,其中各信号的含义如表5所示:表5算式生成器向读写控制模块发送的运算数据的存储地址,以读取相应地址的数据。由算式生成器模块到读写控制模块的各接口信号的含义如表6所示:表6读写控制模块向算式生成器返回相应的运算数据,接口信号的含义如表7所示:表7下面以矩阵lu分解、矩阵u求逆、矩阵l求逆、矩阵u逆与矩阵l逆相乘四种运算为例进一步描述上述运算系统的运算过程。lu分解的公式如下:u求逆的公式如下:l求逆的公式如下:u逆乘以l逆公式如下:从算法分析,上述分别对应由上述公式(1)推演出的公式(5)、(8)、(11)和(13);其实现过程是算法规则控制器根据配置信息的参数,重构lu分解的公式,如果配置信息满足lu分解运算条件,则启动相应的算式生成器,如先将第一个元素a11给到除法算粒,启动倒数运算,当倒数运算完成后,启动第一列元素的运算,监控a12的计算结果返回(通过行计数器组和列计数器组监控得知),启动第二行元素的计算,依次类推。某一元素aij是否能启动运算,需要满足三个条件:当i>j时,判断第i行的行计数器大于j-1,且第j列的列计数器大于j-1即可;当i<=j时,判断第i行的行计数器大于i-1,且第j列的列计数器大于i-1即可;在算式规则控制器内,l和u的运算分别执行,通过各行、列计数器组的判断结果返回计数器和未启动数计数器,决定哪些元素可以启动计算;根据配置信息模块的参数输入来动态的改变算式规则控制模块中的逻辑来实现其功能;如表8所示,根据上述规则,判断可进行第2行第2列的l运算。表8按照lu求逆运算公式,lu求逆可单独运行,互不干扰,以u求逆为例,如表9所示为u求逆的计算顺序,根据配置信息模块的参数输入来动态的改变算式规则控制模块中的逻辑来实现其功能。表9按照l逆u逆相乘运算公式,所有矩阵中元素的计算都可并行计算,互不干扰,根据配置信息模块的参数输入来动态的改变算式规则控制模块中的逻辑来实现其功能。本发明实施例提供了一种fpga芯片,可实现动态可重构无需掉电操作,并且还可以进行多条指令同时并行执行,具有高性能、高灵活性,资源复用率非常高;上述运算系统还可以应用到类脑计算方面,让硬件平台更智能化、通用化,可以像人脑一样随“芯”所欲的进行任意算法的计算。本发明实施例所提供的运算系统及芯片的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1