专利名称:可重配置电路、具备可重配置电路的处理装置的制作方法
技术领域:
本发明涉及集成电路技术,特别涉及具备可重配置电路的处理装置、可重配置电路中的逻辑电路的功能决定方法、电路生成方法及电路等。
背景技术:
近几年正在开展根据应用程序能变更硬件动作的可重配置处理器的开发。作为实现可重配置处理器的结构,存在利用DSP(Digital SignalProcessor数字信号处理器)或FPGA(Field Programmable Gate Array现场可编程门阵列)的方法。
FPGA(Field Programmable Gate Array现场可编程门阵列)是在LSI制造后写入电路数据,能比较自由地设计电路构成,利用于专用硬件的设计。FPGA包括由用来存储逻辑电路的真值表的查找表格(LUT)和输出用触发器所组成的基本单元;和连接其基本单元之间的可编程的配线资源。在FPGA中,通过写入存储于LUT的数据和配线数据,从而可以实现目的的逻辑运算。可是,在FPGA中设计了LUT的情况下,和利用ASIC(Application Specific IC专用集成电路)的设计相比,实际安装面积变得非常大,成本变高。因此,提出一种通过动态再构成FPGA,来谋求电路构成的再利用的方法(例如,参照专利文献1)。
专利文献1特开平10-256383号公报FPGA由于电路构成的设计自由度高,是通用的,另一方面,能进行所有基本单元间的连接,故有必要包含用来控制多个开关与开关之间的接通/断开的控制电路,控制电路的安装面积必然变大。另外,因为基本单元之间连接上采取复杂的配线图案,有配线变长的倾向,还因为在一根配线上连接多个开关的结构,延迟变大。因此,用FPGA的LSI多数停留在试制或实验的利用上,如果考虑安装效率、性能、成本等,在批量生产上是不合适的。并且,在FPGA中,由于有必要向多个LUT方式基本单元传送构成信息,所以在电路的配置(configuration)上花费相当长的时间。因此,FPGA在需要瞬时切换电路构成的用途上是不合适的。
为了解决这些问题,在近几年,正在研究叫做ALU(Arithmetic LogicUnit算术逻辑单元)的、多级排列了具有基本运算功能的多功能元件的ALU阵列。在ALU阵列中,因为处理是从上往下的一个方向的流程,不需要水平方向的配线。另外,如FPGA,从一个ALU可以连接所有的ALU,这种情况下,可以将数据转交给任意的ALU,但是,由于配线数和连接开关的数目庞大,故成为电路规模增大的原因。
发明内容
本发明是鉴于这些状况而进行的,其目的在于提供一种对电路规模的缩小化有贡献的可重配置电路及其外围技术。
为了解决上述问题,本发明的某种形态是提供一种可重配置电路,其中包括能进行功能变更的逻辑电路的多个集合体;和设在各集合体之间,能选择性地确立集合体间的逻辑电路的连接的至少一个连接部。在该可重配置电路中,连接部构成为一方集合体的逻辑电路只能与包含在其他集合体中的一部分逻辑电路相连接。这样,由于通过加以限制连接部的逻辑电路间的连接,从而可以减少硬件性的连接部的配线数,也可以减少开关等的构成,所以电路规模变小成为可能,可以谋求节省电力,同时在经济上也有利。
本发明的其他形态是提供一种处理装置,其中包括能进行功能变更的可重配置电路;向所述可重配置电路供给用来构成预期电路的构成信息的设定部;和以向所述可重配置电路同时供给能同时执行的多个电路构成信息的方式控制所述设定部的控制部。根据该处理装置,因为在可重配置电路上可以同时形成能并列处理的电路,故可以谋求处理时间的缩短化。
本发明的又一形态是提供一种处理装置,其中包括将逻辑电路功能作为节点来表现,生成将从输入数据到输出数据为止的数据流表现为节点连接的数据流曲线的DFG生成部;以所生成数据流曲线为基础,生成构成信息的构成信息生成部;能进行功能变更的可重配置电路;和向所述可重配置电路供给预期电路构成用的构成信息的设定部。在该处理装置中,所述DFG生成部可以是在某一个节点的输出数多于所对应的逻辑电路可以连接的逻辑电路数的情况下,在数据流曲线中复制输入相同的其他节点,以使节点输出分散。由此,在连接被限制的可重配置电路中,即使因为连接数多而无法直接映射节点的情况下,通过复制其节点并使节点输出分散,从而可以在可重配置电路上构成和预期的电路等价的电路。
本发明的又一形态是提供一种处理装置,其中包括将逻辑电路功能作为节点来表现,生成将从输入数据到输出数据为止的数据流表现为节点连接的数据流曲线的DFG生成部;以所生成的数据流曲线为基础,生成构成信息的构成信息生成部;能进行功能变更的可重配置电路;和向所述可重配置电路供给预期电路构成用的构成信息的设定部。在该处理装置中,所述DFG生成部可以是在某一个节点的输出数多于所对应的逻辑电路可以连接的逻辑电路数的情况下,在数据流曲线中,通过将不进行处理的直通节点与所述节点的输出节点的一部分一起追加为连接在所述节点的输出上,在直通节点后面配置剩余的输出节点,从而使节点输出分散。由此,在连接被限制的可重配置电路中,即使因为连接数多而无法直接映射节点的情况下,通过配置直通节点并使节点输出分散,从而可以在可重配置电路上构成和所希望的电路等价的电路。
本发明的又一形态是提供一种可重配置电路中的逻辑电路的功能决定方法,其中所述可重配置电路包括能进行功能变更的逻辑电路的多个集合体;和设在各集合体之间,在规定限制下能选择性地确立逻辑电路的连接的至少一个。该功能决定方法,可以包括将逻辑电路的功能作为节点来表现,生成将从输入数据到输出数据为止的数据流表现为节点连接的数据流曲线的DFG化处理步骤;和将数据流曲线的每一个节点与可重配置电路的逻辑电路加以对应的映射处理步骤。
本发明的其他形态是提供一种电路生成方法,其决定多个电路元件功能和配置,以生成预期的电路,其中包括将逻辑电路的功能作为节点来表现,生成将从输入数据到输出数据为止的数据流表现为节点连接的数据流曲线的DFG化处理步骤;和将数据流曲线的每一个节点与可重配置电路的逻辑电路加以对应的映射处理步骤。另外,本发明的又一形态是提供一种电路,其中通过将电路元件的功能作为节点来表现,生成将从输入数据到输出数据为止的数据流表现为节点的连接的数据流曲线,将数据流曲线的每一个节点与应生成电路的电路元件的配置位置加以对应,在其配置位置形成节点所示电路元件来生成。
另外,上述构成要素的任意组合、在方法、装置、系统、记录介质、计算机程序之间变换本发明的表现,作为本发明的形态也是有效的。
根据本发明,可以提供一种削减了电路规模的可重配置电路及其外围技术。
图1是利用了ALU阵列的可重配置处理器的构成图。
图2是表示C语言程序的一例的图。
图3是表示对应于图2所示的程序的DFG的图。
图4是从图3的DFG将构成信息分配给ALU阵列时的构成图。
图5是表示去掉跨越纵向级ALU间连接的连接方式的图。
图6是实施例2的处理装置的构成图。
图7是用来说明分割一个应生成的电路而可以制作多个电路的构成信息的图。
图8是利用实施例2的连接方式的可重配置电路12的构成图。
图9是表示将图2所示的C程序分配给图8所示的ALU阵列的结果的图。
图10是表示数据流曲线的例子的图。
图11是信号处理的流程图。
图12是表示将超过ALU阵列纵向尺寸的DFG映射为ALU阵列的假想状态的一例的图。
图13是将图12的DFG分割成两个子DFG映射为ALU阵列的状态的图。
图14是表示将在纵横两个方向超过ALU阵列尺寸的DFG映射为ALU阵列的假想状态的一例的图。
图15是将分割了图14DFG的每个子DFG映射为ALU阵列的状态的图。
图16是表示C程序的例子的图。
图17是表示图16所示的C程序的DFG的图。
图18是表示进行节点复制而将输出数限制为三个的DFG的图。
图19是表示分配了图18所示的DFG的ALU阵列的图。
图20是表示插入直通节点的DFG的图。
图21是表示分配了图20所示的DFG的ALU阵列的图。
图22是表示分割为两个的子DFG的图。
图23是表示分配了图22所示的DFG的ALU阵列的图。
图24是表示包含条件语句的C程序的一例的图。
图25是表示与图24的C程序对应的DFG的图。
图26是表示直接分配了图25所示的DFG的ALU阵列的图。
图27是表示分配了所生成的子DFG的ALU阵列的图。
图28是表示向图18所示的DFG的各节点分配了节点号码的状态的图。
图29是表示配置了节点1的状态的图。
图30是表示配置了多个节点的状态的图。
图31是将节点8配置在(0,3)的图。
图32是将节点8配置在(1,3)的图。
图33是将节点6配置在(1,2)的图。
图34是表示将节点1配置在(1,0),按照节点2、节点6、节点3的顺序分别决定配置的状态的图。
图35是表示相对节点6,决定节点8、节点7、节点4的配置的状态的图。
图36是将节点7配置在(2,2)的图。
图37是表示ALU阵列的所有节点配置已经决定的状态的图。
图38是节点配置的主流程图。
图39是输出节点配置模式的处理流程图。
图40是输入节点配置模式的处理流程图。
图41是节点配置检查模式的处理流程图。
图42是表示向图25的每一个节点分配节点号码的状态的图。
图43是表示分割而获得的DFG的例子的图。
图44是表示子DFG间的数据流的图。
图45是进行合成判定的流程图。
图46是输入DFG检查模式中的处理流程图。
图47是输出DFG检查模式中的处理流程图。
图中10—处理装置,12—可重配置电路,14—设定部,16—选择器,18—控制部,20—内部状态保持电路,22—输出电路,24—路径部,26—集成电路装置,30-DFG生成部,32—构成信息生成部,34—存储部,38—数据流曲线,40—构成信息,50—逻辑电路。
具体实施例方式
(实施例1)图1表示利用ALU阵列的可重配置处理器的构成图。如图1所示,在ALU阵列设定最初从存储构成信息的存储器控制ALU功能的命令集和控制ALU间连接目标的连接数据集(以下称「构成信息」)。ALU阵列由多段构成,在每一段上配置多个ALU。在ALU中预先安装多个运算电路,由命令集选择进行哪一运算。从上段到下段的ALU间的数据转交是通过在ALU间连接切换的连接开关上设定连接数据集,来决定转交给下段的哪一个ALU。在动作时,按照构成信息进行运算处理来输出结果。
构成信息一般是由以C语言等高级语言记述的程序来制作。C程序由变换工具被变换为叫做DFG(Data flow Graph数据流曲线)的数据流曲线。图2表示C语言程序的一例,图3表示对应于图2程序的DFG。在图3中,mul表示乘法运算,add表示加法运算。表示在程序中,将输入到变量a、b的值分别2倍、5倍之后,相加其乘法运算结果的功能。由于为了将这些进行DFG化,求x、y的两个式能并列处理,所以在第一段中进行这两个乘法运算,在第二段中,分别输入乘法运算结果而进行加法运算。变换工具是从该DFG决定ALU阵列上的每一个ALU命令和ALU间的连接,从这些信息变换为成为硬件输入的数据集的构成信息。图4表示从图3的DFG将构成信息分配给ALU阵列时的构成图。在此,mov表示直接通过向ALU的输入转交给下段的状态。
图5表示去掉跨越纵向段的ALU间连接的连接方式。根据图5所示的连接方式,因为不存在跨越段的连接,故可以削减电路规模。下面说明比图5所示的连接方式还减少配线数的ALU阵列的结构。
(实施例2)图6表示实施例2的处理装置10的构成图。处理装置10具备集成电路装置26。集成电路装置26具有能再构成电路构成的功能。集成电路装置26作为一个芯片而构成,具备可重配置电路12、设定部14、控制部18、内部状态保持电路20、输出电路22和路径部24。可重配置电路12通过变更设定,而能进行功能的变更。
设定部14具有第一设定部14a、第二设定部14b、第三设定部14c、第四设定部14d和选择器16,向可重配置电路12供给构成预期的电路用的构成信息40。路径部24起反馈总线的功能,将可重配置电路12的输出连接在可重配置电路12的输入上。内部状态保持电路20和输出电路22例如由数据触发器(D-FF)等顺序电路或存储器所构成,接收可重配置电路12的输出。内部状态保持电路20连接在路径部24上。可重配置电路12作为组合电路或如D-FF等包含状态保持的顺序电路而构成。
可重配置电路12具有具备了多个能进行功能变更的ALU等逻辑电路的集合体的结构,并且具有设在各集合体之间,能选择性确立集合体间的逻辑电路的连接的至少一个连接部。具体地,在可重配置电路12中,能选择性地执行运算功能的多个ALU排列为矩阵状,排列在各段的多个ALU构成集合体,前段集合体的处理结果,按照在连接部中选择性确立的连接转交给后段的集合体。在此,连接部构成为连接的一方集合体的逻辑电路只能连接在其他集合体所含的一部分逻辑电路上。由此,和图5所示的连接方式相比较,大幅度削减电路规模成为可能。每一个逻辑电路的功能和逻辑电路间的关系是根据设定部14所供给的构成信息40来设定的。构成信息40由如下程序所生成。
应由集成电路装置26实现的程序36保持在存储部34内。程序36是用C语言等高级语言记述信号处理电路或信号处理算法等。DFG生成部30执行DFG化处理,具体地,编译存储在存储部34内的程序36,变换为数据流曲线(DFG)38,存储在存储部34内。数据流曲线38是用曲线结构来表现从输入变量和常数等输入数据到输出数据为止的运算乃至数据流。在此,DFG生成部30根据可重配置电路12中的逻辑电路的集合体的连接限制,生成数据流曲线38。对于详细内容在后面叙述。
构成信息生成部32从数据流曲线38生成构成信息40。构成信息40是用来将数据流曲线38映射到可重配置电路12的数据,决定可重配置电路12中的逻辑电路的功能或逻辑电路间的连接关系。在本实施例中,DFG生成部30具有生成分割一个电路而成的多个电路的子DFG的功能。另外,该处理功能可以由构成信息生成部32来实现。这种情况下,构成信息生成部32分割DFG生成部30最初所生成的DFG,生成多个电路的构成信息。
图7是用来说明分割一个应生成的电路而成的多个电路的子DFG38的图。分割一个电路42而生成的电路叫做「分割电路」。在该例中,一个电路42分割为四个分割电路即分割电路A、分割电路B、分割电路C、分割电路D。电路42按照从程序36直接生成的数据流曲线38的运算流而被分割。在最初的数据流曲线38中,沿从上到下的方向表现运算流的情况下,从上开始以规定间隔切取其数据流曲线38,将其切下的部分作为子DFG来设定。按照流进行切取的间隔决定为可重配置电路12的逻辑电路段数以下。电路42也可以在数据流曲线38的横向分割。沿横向分割的宽度决定为可重配置电路12的每一段的逻辑电路的个数以下。
特别是在应生成电路比可重配置电路12还大的情况下,DFG生成部30最好分割电路42,以便可以映射到可重配置电路12。另外,该处理可以由构成信息生成部32以再生成构成信息的形式来进行。DFG生成部30由可重配置电路12的逻辑电路的排列结构和从程序36直接生成的数据流曲线38来决定电路42的分割方法。可重配置电路12的排列结构可以从控制部18传送到DFG生成部30,也可以预先记录在存储部34中。另外,也可以是控制部18向DFG生成部30指示电路42的分割方法。这样生成的子DFG由构成信息生成部32变换为构成信息。
通过执行上述程序,从而存储部34存储将重配置电路12构成为预期电路用的多个构成信息40。多个构成信息40是构成分割电路A用的构成信息40a、构成分割电路B用的构成信息40b、构成分割电路C用的构成信息40c和构成分割电路D用的构成信息40d。多个构成信息40是分别表现分割了一个电路42的多个分割电路。这样,通过根据可重配置电路12的电路规模,生成应该生成的电路42的子DFG乃至构成信息40,从而能实现通用性高的处理装置10。从其他观点来看,根据本实施例的处理装置10,利用电路规模小的可重配置电路12来再构成预期的电路成为可能。
图8是实施例2的连接方式的可重配置电路12的构成图。可重配置电路12是多个逻辑电路50跨越多段排列的电路,成为通过设在每一段的连接部52,前段的逻辑电路列的输出与后段的逻辑电路列的输入能根据设定而进行连接的结构。在这里,作为逻辑电路50的例子,表示ALU。每一个ALU可以通过设定而选择性地执行逻辑和、逻辑积、位移位等多种位运算。每一个ALU具有用来选择多个运算功能的选择器。
在图8所示的可重配置电路12中,ALU在横向配置六个、在纵向配置三个而构成为ALU阵列。在第一段的ALU00、ALU10、...、ALU50中,输入变量或常数被输入,进行所设定的规定运算。运算结果的输出根据设定在第一段的连接部52内的连接,输入到第二段的ALU01、ALU11、...、ALU51。在第一段的连接部52中,在第一段的ALU列的输出与第二段的ALU列的输入之间,以可以实现给予一定连接限制的连接关系的方式构成接线,通过设定,其范围内的预期的接线变得有效。另外,在第二段的连接部52中也同样。作为最终段的第三段的ALU列输出运算的最终结果。连接部52构成为在ALU段之间,能连接物理性靠近配置的逻辑电路彼此之间。由此,可以缩短配线长度,可以削减电路规模。其结果,低消耗电力化和处理高速化成为可能。
在图8所示的可重配置电路12中,存在3段×6列的ALU,来自上段的一个ALU的配线被限制为下段的三个ALU。如图所示,下段的一个ALU的输入被限制为上段的正上方的ALU和正上方ALU左右的ALU,并且,上段的一个ALU的输出被限制为上段的正下方的ALU和正下方ALU左右的ALU。例如,对于ALU21,其输入被限制为ALU10、ALU20、ALU30的三个方向,其输出被限制为ALU12、ALU22、ALU32的三个方向。另外,如果不存在对应左或右的ALU,则其输入和其输出分别被限制为两个方向。通过做成这样的配线,从而在以每段六个的ALU来构成三段的情况下,如果ALU间的配线数与图5所示的连接方式的配线数相比较,则(图5所示的ALU阵列的配线数)6×12=72(图8所示的ALU阵列的配线数)变为3×8+2×4=32,能够减少50%的配线数。
图9表示将图2所示的C程序分配(映射)到图8所示的ALU阵列的结果。在图9中,尽可能使用上方的ALU。参照图9,□表示ALU,另外,涂抹了□的■表示分配了命令(在本例中是mul、add)的ALU,用粗线表示的线表示ALU间的连接。下面,将这样分配有意义的命令的ALU作为节点来表现。而且,在本实施例和以后的实施例中,节点是在用来特定ALU功能的检索处理中,使用于运算的概念。同样,映射(处理)是不仅包括可重配置电路12上实际构成电路的处理,还包括运算上用来特定ALU功能的检索处理中的执行运算的处理。运算上的映射处理可以由控制部18来控制,也可以由DFG生成部30乃至构成信息生成部32来控制。
图10是表示数据流曲线38的例子的图。在数据流曲线38中,用阶段性的曲线结构来表现被输入的变量或常数的运算流程。图中,算子用圆圈来表示。构成信息生成部32生成用来将该数据流曲线38映射到可重配置电路12的构成信息40。在实施例中,特别在无法间数据流曲线38完全映射到可重配置电路12的情况下,将数据流曲线38分割为多个区域,生成分割电路的子DFG38乃至构成信息40。在可重配置电路12上应该实现数据流曲线38的运算流的构成信息40,特定分配运算功能的逻辑电路,并且,决定逻辑电路间的连接关系,进一步变为定义输入变量或输入常数等的数据。因此,构成信息40构成为包括向选择每一个逻辑电路50功能的选择器供给的选择信息、设定连接部52的接线的连接信息、必要的变量数据或常数数据。
返回图6,在构成电路时,控制部18选择构成一个电路用的构成信息40。在这里,假设控制部18选择构成图7所示的电路42用的构成信息40,即选择分割电路A的构成信息40a、分割电路B的构成信息40b、分割电路C的构成信息40c和分割电路D的构成信息40d。控制部18向设定部14供给所选择的构成信息40。设定部14具备高速缓冲存储器或其他种类的存储器,分别保持所供给的构成信息40。具体地,控制部18向第一设定部14a供给构成信息40a、向第二设定部14b供给构成信息40b、向第三设定部14c供给构成信息40c、向第四设定部14d供给构成信息40d。
设定部14在可重配置电路12中设定所选择的构成信息40,以再构成可重配置电路12的电路。由此,可重配置电路12可以执行预期的运算。可重配置电路12作为基本单元利用高性能运算能力的ALU,并且,通过在一个芯片上构成可重配置电路12和设定部14,从而可以高速地、例如以一个时钟实现配置。控制部18具有时钟功能,时钟信号被供给到内部状态保持电路20和输出电路22。另外,控制部18可以包含计数电路,向选择器16供给计数信号。这种情况下,计数电路是四进位制计数器。
图11表示实施例的信号处理流程图。控制部18控制设定部14,以便配合计数电路的计数信号,按顺序向可重配置电路12供给多个构成信息40,即构成信息40a、构成信息40b、构成信息40c和构成信息40d。设定部14通过向可重配置电路12供给多个构成信息40,从而变为作为整体构成一个电路。若由设定部14多次构成可重配置电路12,在这里是构成四次,则输出电路22输出可重配置电路12的输出。该次数相当于所使用的构成信息40的周期。下面,说明具体的顺序。
首先,控制部18控制选择器16来选择第一设定部14a。选择器16可以由计数器电路来控制。第一设定部14a向可重配置电路12供给分割电路A的构成信息40a,在可重配置电路12上构成分割电路A(S10)。如果构成分割电路A,则同时将输入数据供给到分割电路A。作为组合电路的分割电路A执行运算处理,到下一个时钟信号为止。
如果控制部18向内部状态保持电路20供给时钟信号,则内部状态保持电路20保持分割电路A的处理结果(S12)。将S10和S12的步骤叫做第一周期。同时,控制部18控制选择器16来选择第二设定部14b。第二设定部14b向可重配置电路12供给分割电路B的构成信息40b,在可重配置电路12上构成分割电路B。此时,保持在内部状态保持电路20内的分割电路A的处理结果通过路径部24供给到分割电路B的输入(S14)。分割电路B执行运算处理,到下一个时钟信号为止。
如果控制部18向内部状态保持电路20供给时钟信号,则内部状态保持电路20保持分割电路B的处理结果(S16)。将S14和S16的步骤叫做第二周期。同时,控制部18控制选择器16来选择第三设定部14c。第三设定部14c向可重配置电路12供给分割电路C的构成信息40c,在可重配置电路12上构成分割电路C。此时,保持在内部状态保持电路20内的分割电路B的处理结果通过路径部24供给到分割电路C的输入(S18)。分割电路C执行运算处理到下一个时钟信号为止。
如果控制部18向内部状态保持电路20供给时钟信号,则内部状态保持电路20保持分割电路C的处理结果(S20)。将S18和S20步骤叫做第三周期。同时,控制部18控制选择器16来选择第四设定部14d。第四设定部14d向可重配置电路12供给分割电路D的构成信息40d,在可重配置电路12上构成分割电路D。此时,保持在内部状态保持电路20内的分割电路C的处理结果通过路径部24供给到分割电路D的输入(S22)。分割电路D执行运算处理到下一个时钟信号为止。
如果控制部18向输出电路22供给时钟信号,则输出电路22输出分割电路D的处理结果(S24)。将S22和S24的步骤叫做第四周期。反复进行从第一周期到第四周期为止的处理的情况下,控制部18再度控制选择器16选择第一设定部14a,在可重配置电路12上构成分割电路A,供给输入数据。
如上所述,在可重配置电路12上按顺序构成分割一个电路42的分割电路A~D,将每一个分割电路的输出反馈到下一个分割电路的输入,执行每一个分割电路中的运算处理,从最后构成的分割电路D取出电路42的输出。从S10到S24为止所花费的时间为4个时钟,根据本实施例的处理装置10,在有限的可重配置电路12的电路规模中,可以有效的执行运算处理。另外,因为可重配置电路12的电路规模小,故也可以减少消费电力。
控制部18虽然可以是向内部状态保持电路20和输出电路22供给同一时钟信号,但是,可以将向输出电路22供给的时钟信号的周期可以设定为向内部状态保持电路20供给的时钟信号的周期的四倍。在向内部状态保持电路20和输出电路22供给同一时钟信号的情况下,使内部状态保持电路20具有输出电路22的功能,可以汇总为一个电路。这种情况下,有必要设置在输出目标电路以后的电路中取出必要信号用的电路。另外,在该例中虽然利用第一设定部14a~第四设定部14d的四个设定部,但是,本领域的普通技术人员可以理解该个数也可以根据电路42的分割数而变动。在下面的实施例中,基本上以与上述实施例2相关联而说明的处理装置10的结构为基础。
(实施例3)从图2的C语言程序制作的DFG收纳为可重配置电路12的ALU阵列的尺寸(这种情况下为横六个×纵三个)。在实施例3中叙述DFG超过该ALU阵列尺寸的情况下的处理。在DFG超过ALU阵列的纵向尺寸的情况下,沿ALU阵列的纵向分割DFG。
图12表示将超过ALU阵列的纵向尺寸的DFG映射到ALU阵列的假想状态的一例。因为该DFG的纵向尺寸为5,故DFG生成部30生成将该DFG分割为两个而形成的分割电路的子DFG。
图13表示将图12的DFG分割为两个的子DFG映射到ALU阵列的状态。图13(a)是图12所示的前半三段份的ALU阵列的映射状态,图13(b)是图12所示的后半二段份的ALU阵列的映射状态。在这里,将分割完的DFG叫做子DFG。在将子DFG分配给ALU阵列并使其动作的情况下,图13(a)的ALU阵列的第三段的输出暂时保持在内部状态保持电路20内(参照图6),通过路径部24的环路配线,作为图13(b)的ALU阵列的第一段输入而被转交。具体地,控制部18相对设定部14,在第一设定部14a中保持构成图13(a)所示的ALU阵列用的构成信息;且在第二设定部14b保持构成图13(b)所示的ALU阵列用的构成信息,介由选择器16,在可重配置电路12(ALU阵列)上通过利用构成信息来按顺序构成分割电路,从而可以实现图12所示的ALU阵列的处理。其结果,可以实现电路规模的小型化,低消费电力成为可能。另外,即使在处理超过可重配置电路12的ALU阵列尺寸的DFG的情况下,也没有必要重新设计ALU阵列,就可以提高电路的再利用性。
(实施例4)接着,在DFG超过ALU阵列的横向尺寸的情况下,沿横向分割DFG。该DFG的分割由DFG生成部30来进行。
图14表示将纵横两个方向超过ALU阵列尺寸的DFG映射到ALU阵列的假想状态的一例。该DFG以横8个×纵5个的尺寸来表现。因为ALU阵列的尺寸是横6个×纵3个的尺寸,将该DFG分割为三个子DFG。在图14中,以用虚线分割为三个的子DFGa、子DFGb和子DFGc来构成原来的DFG。
图15表示将分割了图14的DFG的每一个子DFG映射到ALU阵列的状态。图15(a)表示映射子DFGa的状态,图15(b)表示映射子DFGb的状态,图15(c)表示映射子DFGc的状态。在将子DFG分配给ALU阵列并使其动作的情况下,由于图15(c)的ALU阵列的处理将图15(a)和图15(b)所示的ALU阵列的输出作为输入,所以在设定部14中,将构成信息分配给ALU阵列的顺序需要以子DFGa构成信息、子DFGb构成信息、子DFGc构成信息的顺序来进行。另外,可以更换子DFGa构成信息与子DFGb构成信息的分配顺序。另外,用子DFGa和子DFGb来构成分割电路时的结果,存储在内部状态保持电路20内,在分配子DFGc时,作为输入数据来读取。这样,即使在处理纵横尺寸超过ALU阵列尺寸的DFG的情况下,也可以用小型的电路来实现,低消耗电力化成为可能。另外,即使在处理超过可重配置电路12的ALU阵列尺寸的DFG的情况下,也没有必要重新设计ALU阵列,就可以提高电路的再利用性。
(实施例5)在上述的实施例3和实施例4中,叙述了只直接分割DFG,作为子DFG分配给ALU阵列的情况。在实施例5中叙述DFG不符合ALU阵列的连接限制的情况下的处理方法。该处理由DFG生成部30来进行。另外,该处理也可以由控制部18来承担。
如图8相关联而说明的,在ALU阵列的连接限制为三个方向的情况下,如果节点具有四个以上的输入或输出,则不能将其节点直接分配给ALU阵列。针对输入,可以取得的命令的处理内容成为问题。表1表示命令集的例子。在这里,由于merge命令根据来自条件语句的输出(0或1),来进行两个数据中选择一个的处理,三个输入变为必要。由于如果是这里所示的命令,则所有都变为三个以下的输入,所以输入用的连接收纳在限制之内。
表1
对于输出,因为通过原来的C程序而变化,故在实施例的可重配置电路12中,有必要调整输出数,以使节点的输出数为3以下。
图16表示C程序的例子,图17表示图16所示的C程序的DFG。图17的neg节点的输出数为四个,所以,无法直接将DFG分配给ALU阵列。作为这种情况下的处理方法,有如下三种。
(i)复制节点第一种方法是复制不符合连接限制的节点,以使输出数分散的方法。在这里,在DFG中,复制输入相同的其他节点,执行分散节点输出的处理。在图16的例子中,通过将neg节点复制到相同的段,从而将每一个ALU的输出数限制为3和1。
图18表示进行节点复制而输出数被限制为三个的DFG。将第一段的neg节点复制成输出数变为三个和一个。由此,可以解决可重配置电路12的连接限制的问题。另外,和后面叙述的(ii)的直通节点的插入及(iii)的DFG分割方法相比,可以消除这些方法所必要的段数的增加,处理的高速化成为可能。
图19表示分配了图18所示的DFG的ALU阵列。在这里,为了方便说明,虽然表示为横8×纵5的ALU阵列,但如上所述,该ALU阵列被分割为横6×纵3的ALU阵列。
(ii)直通节点的插入第二种方法是通过在节点间插入直通节点,而变形为适应所邻接的ALU阵列间配线的DFG的方法。在这里,在DFG中,将直通节点和节点的输出节点的一部分一起,追加为和节点的输出连接,通过在直通节点的后面配置剩余的输出节点,从而执行使节点输出分散的处理。直通节点使用表1的mov命令,该节点不进行任何处理。
图20表示插入了mov节点的DFG。这是作为通过利用直通节点将一部分偏移到第三段,从而使图17的第二段的neg节点输出的处理的四个处理分为第二段和第三段来进行的DFG而构成的。由此,可以解决可重配置电路12的连接限制的问题。另外,和后面叙述的(iii)的DFG分割方法的情况相比,能够作为一个DFG来处理,处理的高速化成为可能。
图21表示分配了图20所示的DFG的ALU阵列。另外,在这里,为了便于说明,虽然表示为横8×纵5的ALU阵列,但如上所述,该ALU阵列被分割为横6×纵3的ALU阵列。
(iii)DFG的分割第三种方法是将连接在不符合连接限制的节点上的节点,只配置输出限制数,以作为子DFG来切出的方法。剩余的节点作为其他子DFG来制作。
在图17的例子中,作为相同的子DFG制作连接在neg节点上的两个add和一个sub。由于不能分配剩余的一个sub和其输出的add节点以后,所以作为其他子DFG来制作。
图22表示分割后的两个子DFG。图23表示分配了图22所示的子DFG的ALU阵列。对于DFG的分割,在后面详细叙述。
(实施例6)下面,叙述由于DFG的节点的连接形态,DFG不能分配给ALU阵列的情况下的处理方法。
图24表示包含条件语句的C程序的一例。图25表示对应于图24C的程序的DFG。在相对于条件语句的DFG中,对应于条件节点生成merge节点,按照条件节点的输出的真伪,选择merge节点的两个输入中的一个。因此,merge节点的输入数为三个。
图26表示将图25所示的DFG直接分配的ALU阵列。如图26所示,两个merge节点分别与ALU11和ALU41加以对应(参照图8),但是,在其下段,ALU11和ALU41的输出目标因为连接限制,而无法符合。因此,在图25的DFG中,不能将add节点与ALU阵列加以对应。这种情况下,利用上述的DFG分割方法。
将图25左侧的merge节点为止的区域、剩余的节点区域作为两个子DFG进行分割。图27表示分配了这样生成的子DFG的ALU阵列。这样,即使在DFG不符合ALU阵列的连接限制的情况下,通过分割DFG,也能进行利用限制连接的ALU阵列的处理。
(实施例7)
如上所述,为了将DFG分配给ALU阵列,必须考虑ALU阵列的尺寸或连接限制而进行分配。在实施例7中,对决定将DFG内的每一个节点分配给哪一个位置的ALU的方法,即被连接限制的可重配置电路12的逻辑电路的功能决定方法进行叙述。在这里,以每一个命令间的输入输出变量为基础,将节点间连接关系明确的DFG称为初始状态DFG。为了从该状态分配到ALU阵列,以如下程序来进行。
(1)决定节点位置的高度。
(2)消除飞越(fly pass)。
(3)具有四个以上输出数的节点的最佳化。
(4)决定节点的横向位置、分割DFG。
(5)子DFG的合成。
另外,将DFG的每一个节点与可重配置电路12的逻辑电路加以对应的映射处理,可以由控制部18来进行,也可以由DFG生成部30来进行。而且,该映射处理实际上不在可重配置电路12上构成电路,而是意味着为了取得构成电路用的最终子DFG或构成信息,在运算上执行的映射处理。
在(1)中,通过应用公知的算法,决定节点位置的高度。
在(2)中,在节点间的连接为横跨段的情况下,插入直通节点。
在(3)中,在节点的输出数为四个以上的情况下,复制节点,以削减为三个。
在(4)中,通过横向检索节点来决定节点的横向位置,对不能配置的DFG进行分割。将该分割后的DFG称为子DFG。
在(5)中,合成多个子DFG中、能并列动作且能综合配置为ALU阵列的子DFG。
在进行(4)的横向检索的情况下,如果对每一个段进行全检索,则需要很长的处理时间。例如,在每一段配置六个ALU的ALU阵列中,如果在每一段三个节点,进行三段DFG的每一个节点横向位置的检索,则有必要进行 的位置检索。另外,在该检索中,即使对所有图案进行检索,也不一定可以配置所有的节点,也有必要分割为子DFG。因此,有效的检索方法成为必要。
图28表示向图18所示的DFG的每一个节点分配节点号码的状态。节点号码的分配方法可以是任意的,但是,在此例中,以基本上从左到右增加号码的方式分配号码。首先,从最上段的节点选择一个,配置在ALU阵列内的左上。在有多个节点的情况下,选择哪一个都可以,在这里,示例选择节点号码小的情况(具体地选择节点1)。图29表示在左上配置节点1的状态。另外,为了说明的方便,以段数比图8所示的可重配置电路12的ALU阵列还多的ALU阵列为例,进行如下说明。如已经叙述的,在实际分配给图8的ALU阵列的情况下,有必要分割电路。
其次,从输入中具有配置过的节点的输出的节点中选择一个,只要能以配置过的节点的左下、正下、右下的顺序配置就进行配置。在这里,输入中具有节点1的输出的节点为节点2、节点3、节点4,但在这里也示例选择节点号码小的情况。以后,用(X,Y)来表示位置。因为节点1的位置为(0,0),故节点2检索以(-1,1)、(0,1)、(1,1)的顺序能进行配置的位置,但无法取负值,所以配置在(0,1)。接着,检查在节点2的输入中是否存在节点1以外的节点。如果存在,则配置输入节点。在这里,由于不存在节点1以外的节点,所以省略该步骤。接着,输入中具有节点2的输出的节点为节点6,所以同样配置在(0,2)。因为节点6在其输入中存在未配置的节点3,故接着进行该配置。按节点6的左上、正上、右上的顺序检索可以配置节点3的位置。在这里,由于正上的(0,1)上已经配置了节点2,所以节点3配置在(1,1)。进一步,节点3的输入中存在节点1。因为节点1变为节点3的左上,故能合并。图30中表示到此为止的配置状态。
同样,配置输入中具有节点6的输出的节点8。将节点8按照正下、右下的顺序移动,检索节点8能配置的所有位置。在图31中表示将节点8配置在(0,3)的图,在图32中表示将节点8配置在(1,3)的图。如图31和图32所示,无论将节点7配置在(1,2)或(2,2)的哪一个位置,其输入的节点4都变为配置在(2,1),不能和作为节点4的输入的节点1合并。因此,在该时刻判明节点8的配置为不适当,删除节点8、节点7和节点4的横向位置。
接着,如图33所示,将节点6变更为(1,2),进行节点8的配置检索。即使在这种情况下,如果反复进行上述的检索处理,则也因为节点4只配置在(2,1),而不能和作为节点4的输入的节点1合并。按顺序反复进行这样的检索处理。将节点2从(0,1)变更为(1,1),进行同样的检索,若所有配置变为不能,则返回到节点1的配置步骤,将节点1的位置从(0,0)变更为(1,0)、(2,0)、......(5,0)为止,来进行检索。在该例的情况下,其结果,如果节点1的位置移位到(1,0),则变为可以配置所有节点。如从该处理算法所知的,与对每一段进行全检索的情况相比,可以大幅度地减少检索数。
图34表示将节点1配置在(1,0),按照节点2、节点6、节点3的顺序决定各配置的状态。接着,如图35所示,对节点6决定节点8、节点7、节点4的配置。然而,在这种情况下,相对节点7不能配置节点5。因此,尝试将节点8的位置向右移位一个进行配置。如果这样的话,如图36所示,可以将节点7配置在(2,2)。因此,可以将节点5配置在(3,1),如图37所示,可以决定被连接限制的ALU阵列中的配置。下面,结合图38~图41,说明被连接限制的ALU阵列中的节点配置方法。节点是表现逻辑电路(ALU)的功能的概念,决定节点配置和决定ALU阵列的逻辑电路的功能等价。在下面以图28所示的DFG映射到ALU阵列的情况为例进行说明。
图38表示节点配置的主流程。在图38中,取出一个DFG的最上段的节点No(S10)。在这里,假设取出节点1。将X0和Y0的初始值分别设定为0(S12),将节点No配置在(0,0)(S14)。在图29中表示该状态。
接着,取出一个节点No的输出节点N1(S16)。但是,已有取出的节点的情况下,除外。如果参照图28,则作为节点1的输出节点,存在节点2、节点3、节点4,在这里,假设取出节点2。在存在输出节点N1的情况下(S18的否),处理进入输出节点配置模式(S20)。另外,(N1,X0,Y0)是作为自变量转交给输出节点配置模式的处理流程。
图39表示输出节点配置模式的处理流程。在输出节点配置模式中,首先,将段数降低一段(Y′←Y十1),将列向左只移位一个(X′←X-1)(S30)。其结果,坐标(0,0)变换为(-1,1)。将段数降低一段是因为输出节点存在于一段下面的缘故。将列向左移位一个是因为本实施例的ALU阵列将输出节点的存在方向限制在正下及其左右三个方向的缘故,首先检索是否可以在左下配置节点,接着,按顺序检索正下、右下配置节点的情况的缘故。在该状态下,进入输入节点配置模式(S32),另外,(N,X′,Y′)作为自变量被转交到输入节点配置模式的处理流程。
图40表示输入节点配置模式的处理流程。在输入节点配置模式中,在X<0或XMAX<X的情况下(S50的是),作为配置失败而结束输入节点配置模式,并向图39的S34转移。另外,XMAX是从ALU阵列一段的ALU的个数中减1的值,在图8的例子中,因为ALU的横向个数为6,故XMAX为5。另外,在为0≤X≤XMAX(S50的否)、且(X,Y)上已经配置有节点的情况下(S52的是),如果已经配置着的节点为自己本身(S54的是),则配置成功,如果不是自己本身(S54的否),则配置失败。如果结束S54的判定,则向图39的S34转移。在映射图28的DFG的具体例子中,首先,因为作为自变量转交(-1,1),故为了在S50中判定为X<0,作为配置失败,返回到图39的S34。
在图39的S34中,因为配置失败(S34的否),将X′增加1(S36)。该处理是将输出节点从左下按照正下、右下顺序检索的步骤,在该例中,接着进行验证将节点配置在正下时的妥当性。具体地,如果增加1,坐标(X′,Y′)变为(0,1)。只要X′不超过(X+1)(S38的否),就可以返回到输入节点配置模式(S32)。另外,所谓X′超过(X+1)的情况下(S38的是),相当于作为输出节点检索比右下还要位于右侧的输出节点的情况。在本实施例中,由于以对逻辑电路的连接给予限制为前提,所以不考虑从正下开始两个以上的右侧(乃至左侧)的配置。
在S32中,再度进入输入节点配置模式。此时,在S50中,X(=0)取0以上的值且小于XMAX(S50的否),还因为在(X,Y)、具体地在(0,1)没有配置完节点(S52的否),故将节点N(在这里为节点2)配置在(X,Y)(S56)。这样,变为在(0,0)上配置节点1;在(0,1)上配置节点2的状态。
接着,从DFG取出一个节点N的输入节点N′(S58)。另外,已经取出的输入节点除外。在这里,因为节点2的输入节点只有节点1(已经取出完)而不存在其他的输入节点,故成为无输入节点N′(S60的是),认为到此为止的配置成功,跳过输入节点配置模式而向图39的S34转移。在S34中,因为能够配置(S34的是),故向节点配置检查·配置状态保存模式(以下叫做「节点配置检查模式」)转移(S40)。
图41表示节点配置检查模式的处理流程。在该节点配置检查模式中,检查最多可以配置的节点数的状态,保存配置状态。不仅是可以配置全部节点的情况,即使在只能配置一部分的情况下,也保存其配置状态。这可以是具有例如多个子DFG的数据。由此,在以后构成ALU阵列的情况下,即使在用一个DFG不能制作应生成的电路的情况下,也能通过组合子DFG,来制作应生成的电路。
在节点配置检查模式中,首先计数目前配置着的节点数S(S80)。节点数S与SMAX进行比较。将SMAX的初始值置为0。在节点数S比SMAX还大的情况下(S82的是),保持此时的节点配置(S84),将SMAX设定为S。另外,在节点数S为SMAX以下的情况下(S82的否),结束节点配置检查模式,向图39的S42转移。
在S42中,从DFG取出一个节点N的输出节点N′。在具体例子中,假设取出节点2的输出节点6。在没有输出节点N′的情况下(S44的是),可以认为至今为止的配置成功。另一方面,在存在输出节点N′的情况下(S44的否),递归性调用输出节点配置模式(S46)。
在递归性调用的输出节点配置模式中,在S30中,在降低一段的段中检索节点6能配置的位置。在该输出节点配置模式中,以配置在(0,1)的节点2为基准来决定节点6的配置。下面,为了相对坐标(0,0)的节点1将节点2的坐标决定为(0,1),相对节点2,将节点6的坐标决定为(0,2)。该坐标的决定是在图40的S56中进行。
接着,在S58中,取出节点6的输入节点3。另外,作为节点6的输入节点也存在节点2,但因为是已经被取出的节点,在S58中,不重新取出。因为存在节点3(S60的否),故将应该检查该节点3配置的段数上升一段(Y′←Y-1),将列向左只移位一个(X′←X-1)(S62)。在这里,递归性地调用输入节点配置模式(S64),在(X-1,Y-1)中,具体地在(-1,1)中检查是否能配置节点3。另外,因为X<0(S50的是),故不能在该坐标(-1,1)配置节点3(S66的否),将X′增加1(S68),只要X′不超过(X+1)(S70的否),就检查相邻的坐标(0,1)能否配置节点3(S64)。因为在(0,1)上已经配置了有节点2(S52的是、S54的否),部不能配置节点3(S66的否),并且,将X′增加1(S68),检查节点3能否配置在(1,1)(S64)。因为0≤X≤XMAX(S50的否)、(1,1)为空的(S52的否),故将节点3配置在(1,1)(S56)。接着,因为节点3的输入节点只存在节点1(S60的是),认为至今为止的配置成功,跳过输入节点配置模式。图30中表示这个状态。而且,在S70中,在X′超过(X+1)的情况下(S70的是),追溯N和N的输入并删除(S72)。这种情况下,返回到图39的S34。
接着,在输入节点配置模式(S32)中,因为配置成功(S34的是),执行节点配置检查模式(S40),进一步执行S42~S46的步骤。由此,和到此为止同样,配置在输入中具有节点6的输出的节点8。在S56中,节点8可以配置在(0,3)乃至(0,1)。图31表示将节点8配置在(0,3)的状态,图32表示将节点8配置在(0,1)的状态。然后,在S58中,取出作为节点8的输入节点的节点7,将节点7配置在(1,2)或(2,2)(S64),并且,取出作为节点7的输入节点的节点4(S58),可以将节点4可以配置在(2,1),但是,配置在(2,1)的节点4因为连接限制关系,而无法与配置在(0,0)的节点1链接。因此,可以清楚该配置为失败。
返回图38的主流程,如上所述,从(0,0)开始检索节点1的最佳配置状态。将最上段的节点No的配置设定为(0,0)而进行检索处理,最终输出节点N1变为无为止(S18的是),如果结束检索处理,在S22中,将X0增加1后将节点1的坐标设定为(1,0),重新检索。另外,在将节点1配置在(0,0)时,可以配置全部节点的情况下,在此刻可以结束主流程。此外,在X0为XMAX以下之间反复进行检索(S24的是),如果X0大于XMAX(S24的否),则结束这个检索处理。这样,和对各段进行全检索相比,大幅度减少检索数成为可能。另外,由于可以分配成尽可能多的节点包含在一个子DFG内,所以有效处理成为可能。
(实施例8)在实施例8中,说明DFG的分割处理。
图42表示向图25的每一个节点分配节点号码的状态。首先,如图27(a)所示,将图42的左侧的节点1~4分配给ALU阵列,按照节点4的左下、正下、右下的顺序,对在输入中具有节点4的输出的节点9的横向位置进行检索。在各位置上,在节点9的上段配置节点8,检索作为其输入的节点5~7的配置。该检索处理如实施例7中所说明的。
在该例中,在配置节点9及其输入节点5~7时,不能配置节点5~7的全部。因此,在节点9的配置已经失败的时刻,在将节点9除外的状态下,暂时切出DFG,对剩余的DFG进行再度分配。图27(b)表示对剩余的DFG分配的ALU阵列。这样,分割DFG成为可能。分割的子DFG利用在实施例7中与图41关联说明的节点配置检查模式中被保存的节点。如已经叙述的,在S84中,因为保持可以配置的最大数的节点的配置状态,故以此为基础能形成子DFG(乃至其构成信息)。另外,该配置状态,在S84中存储于存储部34内(参照图6)。因为通过利用这样的分割方法,从而可以分割为尽可能多的节点包含在一个子DFG内,故有效处理成为可能。另外,利用后面叙述的子DFG的合成方法和组合,可以减少全体的子DFG数。
(实施例9)下面,按照例子说明子DFG的合成。图43表示分割而获得的子DFG的例子。另外,如图3或图10等中反复表示,实际的DFG表现表示节点与连接关系的处理流程,但是,在这里为了说明的方便,作为与映射到ALU阵列的状态等价来进行处理。在图43中,“dfgout x-x”表示子DFG的输出数据。例如,子DFG1的输出数据“dfgout 1-1”输入到子DFG2,子DFG2的输出dfgout 2-1、dfgout 2-2分别输入到子DFG3、子DFG5。在分割后的状态中,由于在ALU阵列的右侧没有分配节点的ALU多,所以若可以将多个子DFG合成为一个来进行处理,则可以提高所使用的ALU的并列度,可以高速化。但是,由于在子DFG之间存在数据的输入输出,故不能合成存在那种关系的子DFG,因此,首先,判定子DFG之间能否合成,如果可以合成,就进行实际的合成处理。子DFG之间能否合成的判定,首先将子DFG作为一个节点,将其输入输出数据的流作为数据流来制作DFG而进行,也是可以的。
返回到图6,DFG生成部30检索并合成对应于能同时执行的多个电路的子DFG,以生成新的DFG。能合成的子DFG在输入输出中互相独立成为条件。构成信息生成部32从合成后的DFG生成构成信息,存储在存储部34内。控制部18介由设定部14将该构成信息供给到可重配置电路12。由此,在可重配置电路12中同时形成能同时执行的多个电路。
图44表示子DFG之间的数据流。DFG生成部30以图44的数据流为基础,检索能合成的子DFG。直接或间接接收子DFG1的输出的子DFG2、子DFG3和子DFG5不能和子DFG1合成,但是子DFG1与子DFG4没有接收输入输出数据的关系,所以即使合成也没有问题。
图45表示进行合成判定的流程。首先,将i置为1(S100)。如果i为子DFG个数以下(S102的是),则取出第i个子DFGi(S104)。针对该子DFGi执行输入DFG检查模式(S106)的处理和输出DFG检查模式的处理(S108)。
图46表示输入DFG检查模式的处理的流程。首先,取出子DFGi的输入DFG(S120)。将取出的DFG在下面的流程中定义为DFGi。在不存在DFGi的情况下(S122的否),判定为不存在S104中取出的子DFGi的输入,结束输入DFG检查模式的处理。另一方面,在存在输入DFGi的情况下(S122的否),检查其DFGi(S124),再度递归性执行输入DFG模式的处理(S126)。该递归性处理是在输入DFGi变为不存在的时刻(S122的是)结束。
图47表示输出DFG检查模式处理的流程。首先,取出子DFGi的输出DFG(S130)。将取出的DFG在下面的流程中定义为DFGi。在不存在DFGi的情况下(S132的是),判定为不存在S104中取出的子DFGi的输出,结束输出DFG检查模式的处理。另一方面,在存在输出DFGi的情况下(S132的否),检查其DFGi(S134),再度递归性执行输出DFG模式的处理(S136)。该递归性处理在输出DFGi变为不存在的时刻(S132的是)结束。
返回到图45,判明DFGi与未检查的子DFG能进行合成(S110)。即,可以清楚在输入DFG检查模式和输出DFG检查模式中没有检查的子DFG在子DFGi之间对互相处理没有造成影响。即,子DFGi不向未检查的子DFG直接或间接供给输入数据,并且,不是直接或间接地需要来自未检查的子DFG的输出数据。能够合成的子DFG与子DFGi加以对应而被存储。接着,解除检查(S112),将i增加1(S114),再度执行合成判定处理。如果i超过子DFG的个数(S102的否),则结束该合成判定处理。
若利用以上的流程,则在图44的例子中,可知子DFG1和子DFG4的合成是可能的。并且,在图44的例子中,可知子DFG2和子DFG4的组合、子DFG3和子DFG4的组合、子DFG3和子DFG5的组合是可能的。这样,由于可以将多个子DFG合成为一个DFG,所以可以增加并列度,高速化成为可能。
以上,以多个实施例为基础说明了本发明。另外,本发明不限于该实施例,其每一种变形例作为本发明的实施方式也是有效的。特别,针对本发明列举了实施例1至实施例9,这些可以单独利用,种种组合也属于本发明的范围。例如,在上述的实施例中,说明了可重配置电路12的逻辑电路功能的决定方法,但是,该功能决定方法不限于可重配置电路,也可以利用于其他电路例如硬件的电路设计。在电路安装后的固定硬件中,不进行将DFG分割为多个后再生成电路等处理,通过在成为元件形成的前阶段的电路设计阶段利用本方法,从而可以有效地决定电路元件的功能和配置,通过在决定的位置上形成具有决定过的功能的电路元件,从而能够生成预期的电路。在决定可重配置电路12的电路功能的情况下,进行了将DFG的节点与多个ALU加以对应的处理,但是,在生成固定硬件的电路的情况下,因为不会存在ALU阵列,故变为决定基板上配置电路元件的位置、例如与其他电路元件之间的排列顺序。其他的处理和上述实施例相同。其结果,能简单地形成预期电路。
权利要求
1.一种可重配置电路,其中包括能进行功能变更的逻辑电路的多个集合体;和设在每一个集合体之间,且能选择性地确立集合体间的逻辑电路的连接的至少一个连接部,其特征在于,连接部构成为一方集合体的逻辑电路只能与包含在其他集合体中的一部分逻辑电路相连接。
2.根据权利要求1所述的可重配置电路,其特征在于,连接部构成为在集合体间能连接物理性地靠近配置的逻辑电路彼此之间。
3.根据权利要求1或2所述的可重配置电路,其特征在于,多个逻辑电路排列成矩阵状,排列在每一段的多个逻辑电路构成逻辑电路的集合体,前段的集合体的处理结果按照在连接部中选择性地确立的连接,转交给后段的集合体;能连接前段逻辑电路的输出的后段集合体逻辑电路被限制为配置于同列的逻辑电路及其左右配置的逻辑电路。
4.根据权利要求1~3中任一项所述的可重配置电路,其特征在于,该逻辑电路是ALU。
5.一种处理装置,其特征在于,包括能进行功能变更的可重配置电路;向所述可重配置电路供给预期电路构成用的构成信息的设定部;和以向所述可重配置电路同时供给能同时执行的多个电路的构成信息的方式控制所述设定部的控制部。
6.根据权利要求5所述的处理装置,其特征在于,还包括将所述可重配置电路的输出连接在所述可重配置电路的输入上的路径部,所述控制部控制所述设定部,以便在多个周期中向所述可重配置电路按顺序供给多个构成信息,将根据某一个构成信息而在所述可重配置电路上构成的电路的输出,通过所述路径部,供给到根据下一个构成信息而构成的电路的输入中。
7.根据权利要求5或6所述的处理装置,其特征在于,还包括按照可重配置电路的逻辑电路集合体间的连接限制,生成表现从输入数据到输出数据为止的数据流的数据流曲线的DFG生成部;和以所生成数据流曲线为基础,生成构成信息的构成信息生成部。
8.一种处理装置,其中包括将逻辑电路功能作为节点来表现,生成以节点连接来表现从输入数据到输出数据为止的数据流的数据流曲线的DFG生成部;以所生成的数据流曲线为基础,生成构成信息的构成信息生成部;能进行功能变更的可重配置电路;和向所述可重配置电路供给预期电路构成用的构成信息的设定部;其特征在于,所述DFG生成部在某个节点的输出数比所对应的逻辑电路可以连接的逻辑电路数还多的情况下,在数据流曲线中复制输入相同的其他节点,而使节点输出分散。
9.一种处理装置,其中包括将逻辑电路功能作为节点来表现,生成用节点连接来表现从输入数据到输出数据为止的数据流的数据流曲线的DFG生成部;以所生成的数据流曲线为基础,生成构成信息的构成信息生成部;能进行功能变更的可重配置电路;和向所述可重配置电路供给预期电路构成用的构成信息的设定部;其特征在于,所述DFG生成部在某个节点的输出数比所对应的逻辑电路可以连接的逻辑电路数还多的情况下,在数据流曲线中,将不进行处理的直通节点和所述节点的输出节点的一部分一起,追加为连接在所述节点上,通过在直通节点后面配置剩余的输出节点来使节点输出分散。
10.一种功能决定方法,其中决定可重配置电路中的逻辑电路的功能,所述可重配置电路具备能进行功能变更的逻辑电路的多个集合体;和分别设在集合体之间,在规定的限制下能选择性地确立逻辑电路的连接的至少一个连接部,其特征在于,包括将逻辑电路的功能作为节点来表现,生成以节点连接来表现从输入数据到输出数据为止的数据流的数据流曲线的DFG化处理步骤;和将数据流曲线的每一个节点与可重配置电路的逻辑电路加以对应的映射处理步骤。
11.根据权利要求10所述的功能决定方法,其特征在于,所述DFG化处理步骤包括合成能同时执行的多个子数据流曲线的步骤。
12.根据权利要求10所述的功能决定方法,其特征在于,所述合成步骤将第一子数据流曲线、和不直接或间接向第一子数据流曲线供给输入数据、且不直接或间接需要来自第一子数据流曲线的输出数据的第二子数据流曲线进行合成。
13.根据权利要求10~12中任一项所述的功能决定方法,其特征在于,所述映射处理步骤包括将靠近数据流曲线的输入端的第一节点与第一逻辑电路加以对应的步骤;和将在数据流曲线中连接在所述第一节点的输出的一个上的第二节点与在可重配置电路中能连接第一逻辑电路的第二逻辑电路加以对应的步骤。
14.根据权利要求13所述的功能决定方法,其特征在于,所述映射处理步骤还包括在数据流曲线中,能将所述第二节点输入中的不同于所述第一节点的第三节点连接在可重配置电路的第二逻辑电路的输入上,且与没有加以对应在第一逻辑电路上的第三逻辑电路加以对应的步骤。
15.根据权利要求13所述的功能决定方法,其特征在于,所述映射处理步骤还包括能将数据流曲线的所述第二节点输入中的不同于所述第一节点的第三节点连接在可重配置电路的第二逻辑电路的输入上,且在与第一逻辑电路没有加以对应的逻辑电路不存在的情况下,将所述第二节点与能连接在所述第一逻辑电路上且不同于所述第二逻辑电路的第四逻辑电路加以对应的步骤。
16.根据权利要求15所述的功能决定方法,其特征在于,所述映射处理步骤还包括能将第三节点连接在所述第四逻辑电路上,并且与尚没有加以对应的第五逻辑电路加以对应的步骤。
17.根据权利要求10~12中任一项所述的功能决定方法,其特征在于,所述DFG化处理步骤在数据流曲线的段数超过可重配置电路的集合体个数的情况下,将数据流曲线分割为段数少于集合体个数的多个子数据流曲线。
18.根据权利要求10~12中任一项所述的功能决定方法,其特征在于,所述DFG化处理步骤在数据流曲线的列数超过可重配置电路的集合体个数的情况下,将数据流曲线分割为列数少于集合体的逻辑电路个数的多个子数据流曲线。
19.根据权利要求10~12中任一项所述的功能决定方法,其特征在于,所述DFG化处理步骤,在数据流曲线中,在某个节点的输出数比所对应的逻辑电路可以连接的逻辑电路数还多的情况下,将其数据流曲线分割为将其节点输出中的第一输出作为输出而具有的第一子数据流曲线和具有连接在第一输出上的输入的第二子数据流曲线。
20.根据权利要求10~12中任一项所述的功能决定方法,其特征在于,所述映射处理步骤在数据流曲线的全部节点没有与可重配置电路的逻辑电路加以对应的情况下,对包含没有对应过的节点的数据流曲线再度进行映射处理。
21.一种电路生成方法,其中决定多个电路元件的功能和配置,以生成预期电路,其特征在于,包括将电路元件的功能作为节点来表现,生成以节点的连接来表现从输入数据到输出数据为止的数据流的数据流曲线的DFG化处理步骤;和将数据流曲线的每一个节点与应生成电路的电路元件的配置位置加以对应的映射处理步骤。
22.一种电路,其特征在于,通过将电路元件的功能作为节点来表现,生成以节点连接来表现从输入数据到输出数据为止的数据流的数据流曲线,将数据流曲线的每一个节点与应生成的电路的电路元件的配置位置加以对应,在其配置位置上形成节点所示电路元件来形成。
全文摘要
本发明提供一种削减了电路规模的可重配置电路。本发明的可重配置电路(12)具备能进行功能变更的多个ALU(50)。多个ALU(50)配置成矩阵状,在ALU的每一段之间设有能选择性地确立ALU的连接的至少一个连接部(52)。该连接部(52)不是能连接上下段的全部逻辑电路之间的连接部,而是构成为逻辑电路只能与属于其他段的一部分逻辑电路相连接。通过限制连接,从而可以削减电路规模。
文档编号H03K19/177GK1637748SQ20041009794
公开日2005年7月13日 申请日期2004年12月6日 优先权日2003年12月22日
发明者冈田诚, 平松达夫, 中岛洋, 小曾根真 申请人:三洋电机株式会社