具体实施方式
图1示出可重构装置的一个示例。该装置1是由本申请的申请人所开发的、被称为“DAPDNA”的半导体集成电路装置。该装置1包括被称为“DAP”的RISC核模块2和被称为“DNA”(Distributed Network Architecture,分布式网络体系结构)的动态可重构数据流加速器3。除DAP 2和DNA 3以外,装置1还包括用于向DNA 3直接输入和从DNA 3直接输出的接口4、PCI接口5、SDRAM接口6、DMA控制器7、另一总线接口8和用于连接这些组件的高速总线开关9。DAP 2包括调试接口2a、RISC核2b、指令高速缓存器2c和数据高速缓存器2d。装置(系统)1能够被设置为单一芯片(IC、LSI或ASIC),然而可选地,装置1可以被设置为包括多个芯片的芯片组。
DNA 3包括955个处理元件PE(在下文,还简称为“PE”)按二维方式配置的PE矩阵(或简称为“矩阵”)10、以及存储有用于通过改变PE矩阵10中包括的多个处理元件PE的功能和/或连接来重构PE矩阵10的配置数据的配置存储器系统11。配置存储器系统11包括各个PE的控制单元中包括的配置寄存器系统、和将配置数据传送至寄存器系统的传送系统。
图2示出PE矩阵10的放大布局。955个PE 17在水平方向和垂直方向上配置在PE矩阵10中,从而构造矩阵(二维阵列结构),并且形成并行处理处理器的核。在硬件方面,PE矩阵10由按二维阵列布局的PE 17和连接这些PE 17的总线(布线矩阵)构造成。各个PE 17仅配备有诸如运算单元和存储器等的基本功能,并且通过经由总线将PE 17连接到一起来实现复杂的功能。可以利用软件来改变各个PE 17的功能和总线的连接,其中,这种信息被称为“DNA配置”。为了在PE矩阵10上实现各种处理,生成并在PE矩阵10中设置(映射)与这种处理相对应的DNA配置。可以将多个DNA配置存储在PE矩阵10内部,并且可以动态地改变当前处理正在使用的DNA配置。后面更详细地说明这种DNA配置。
如图2所示,PE矩阵10中的处理的基本操作包括对已经从外部主存储器19等取入的数据进行处理、以及将这些数据再次发送回外部。可以经由SDRAM接口6等向外部主存储器9输入数据并从外部主存储器9等输出数据。PE矩阵10配置有用于从外部取入(输入)数据的两类端口。一类端口是被称为“LDB”的PE17,并且经由SDRAM接口6等从连接至装置1的主存储器19取入数据。另一类端口是经由直接I/O接口4从外部连接的其它装置18取入直接数据的、被称为“LDX”的PE 17。通过由PE矩阵10内部的多个PE 17构造成的数据流(数据路径)对从这些PE 17取入的数据进行处理,然后输出这些数据。还设置了用于将已经完成了处理的数据发送至外部的两类端口。一类端口是被称为“STB”的PE 17,并且将数据写入到外部存储器19中。另一类端口是被称为“STX”的PE 17,并且将直接数据发送至经由直接I/O接口4所连接的外部装置18。
图3~5更详细地示出PE矩阵10的配置。PE矩阵10中配置的多个PE 17包括主要对数据进行各种处理的PE(“ePE”)、和主要形成PE之间的连接的连接用PE(“DLV”和“DLH”)。如图3所示,将PE矩阵10中配置的多个PE 17分割成或划分成由4列和4行构成的16个段(在下文,使用“段S”来统称这些段,并且使用“段S0~S15”或段“a1~a4”、“b1~b4”、“c1~c4”和“d1~d4”来指定各个段)。各个段S包括由8列和8行构成的数据处理用PE(ePE)、以及沿着与其它段S的边界配置的DLV和DLH。通过能够在一个周期的延迟的范围内发送和接收数据的段内连接(段内部的连接、第一级路由矩阵)21来连接各个段S中包括的PE 17。此外,经由DLV和DLH,通过段间连接(段之间的连接、第二级路由矩阵)22来连接相邻的段S。注意,在以下说明中,当指定各类型的PE 17时,使用诸如“LDB”和“LDX”等的类型名称。
各个段具有PE的不同布局。例如,在段a1~d1中配置LDB或LDX,并且在段a4~d4中配置STB或STX。在PE矩阵10中构成的数据流(数据路径)中的信号的基本流为从段a1、b1、c1、d1到段a4、b4、c4、d4。
图4示出段a1~a4和b1~b4中的PE 17的布局的一个示例。图5示出段a1的放大布局。各个段内的数据处理用PE 17e的配置基本为8列和8行。也就是说,当将段的左上方的PE编号为列c0、行r0、并且将右下方的PE编号为列c9、行r9时,在列c1~c8和行r1~r8的范围内配置数据处理用PE 17e。当不考虑DLH和DLV时,离左上方最近的PE 17e配置在列c1、行r1处。然而,使用两列来布置诸如“MUL”、“SFT”或“RMC”等的具有两个数据输出的PE 17e以及“RAM”,也就是说,这种PE具有与2个最小的PE 17相等的区域。使用4列来布局“STB”和“LDB”,也就是说,这种PE具有与4个最小的PE 17相等的区域。
作为数据传送用PE 17c的DLV和DLH被布局到列c0和c9以及行r0和r9。注意,DLV和DLH并未布置在各段的四个角处。另外,如图4所示,在位于顶端、底端、左端和右端的段中,顶行或底行中不存在DLV,或者最左列或最右列中不存在DLH。也就是说,在位于四角处的段a1、a4、d1和d4中,顶行和底行其中之一(即,r0或r9)中不存在DLV,并且最左列和最右列其中之一(即,c0或c9)中不存在DLH。在段b1、c1中,顶行r0中不存在DLV。在段b4、c4中,底行r9中不存在DLV。在段a2、a3中,最左列c0中不存在DLH,并且在段d2、d3中,最右列c9中不存在DLH。
图6示出段内连接(第一级总线、第一级路由矩阵)21。第一级总线21包括连接段内部的PE的水平(即,宽度方向)总线21h和垂直(即,高度方向)总线21v、以及用于连接总线21h和21v的开关(“选择器”、“总线选择器”、“H到V选择器”)21s。
图6示出段内部的4列和2行、例如列c1~c4和行r1和r2的提取区域。水平总线21h是用于将同一行中配置的各个PE 17的输出与该段的位于左方和右方的DLH的输出相连接的总线。垂直总线21v是用于将同一列中配置的各个选择器21s的输出与该段的位于上方和下方的DLV的输出相连接的总线。选择器21s配置在垂直总线21v和水平总线21h的交点处,并且如图6所示,选择器21s被构造成同一列上的奇数行和偶数行(即,行2N-1和2N)形成对。角落处的选择器21s将来自各行(即,水平总线)21h的两个输出输出到垂直总线21v。第一级总线21还包括与各个PE17相对应、并将垂直总线21v连接至各个PE 17的选择器(“PE输入选择器”)21t。
在由包括总线21h和21v的第一级总线21可以连接的范围中,也就是说,在各段中的PE之间(即,在连接源PE的FF(触发器)或寄存器和连接目的地PE的FF或寄存器之间),可以在一个周期(一个时钟周期)内发送和接收数据。因此,在信号传播的定时(等待时间)方面,作为一个例子,段a1中包括的所有PE均是等同的。这意味着,在同一段内,当构成电路时,无论已经选择哪个PE且已指派了功能,都无需预先验证或研究定时。在定时方面,可以在给定段中的多个PE上自由地进行电路的配置和布线。
图7示出第二级路由矩阵22的结构。在图7中,通过第二级路由矩阵22连接相邻的段(图7中的段a1和b1)中分别包括的DLH(一类连接用PE 17c)。图7所示的各个DLH连接至段S1和S4内部的第一级路由矩阵(段内内部连线)21。因此,可以经由第二级路由矩阵(段间内部连线)22连接段S1中包括的PE 17和段S4中包括的PE 17。作为连接用延迟元件17c的DLH用作针对第一级路由矩阵21中包括的总线的接口。因此,可以在各段中独立地使用第一级路由矩阵21中包括的总线。另一方面,当需要在段之间输入和输出数据时,经由连接用DLH中包括的FF(触发器、寄存器)来输入和输出数据。这意味着,当经由第二级路由矩阵22在段之间传递信号时,新添加了与时钟同步的一个周期的延迟。经由也作为连接用PE 17c的DLV,以相同的方式执行配置在上方和下方的段S的连接。
当仅使用第一级路由矩阵21连接PE 17时,保证PE 17之间的延迟时间(延迟或等待时间)将在一个时钟周期的范围内(“第一延迟”)。因此,无需验证时序收敛(timing closure)。另一方面,当经由第二级路由矩阵22连接PE 17时,将添加至少一个时钟周期的额外延迟。经由第二级路由矩阵22连接时的延迟时间依赖于延迟元件DLH的设置,这使得可以控制延迟(延迟时间)。例如,通过控制DLH的延迟,可以使使用两次第二级路由矩阵22的信号和使用一次第二级路由矩阵22的信号同步。当经由其它的连接用延迟元件DLV连接相邻的段S时,这也适用。
图7所示的DLH具有将PE矩阵10的水平总线(H总线)21h上的信号传递至相邻的段的功能。各个DLH具有24个输入和8个输出。24个输入包括来自成对的奇数行和偶数行的PE 17的输出(每行8个输出的两倍,得出总共为16个)、以及同一段内位于相对侧的DLH的4个输出的两倍(得出总共为8个)。各个DLH选择24个输入中的8个输出,并将这8个输出经由第二级路由矩阵22输出至相邻的段的DLH。DLV的基本结构相同。
在图4和5所示的PE矩阵10中配置的PE 17中,表示为“ALU”、“ALC”、“ALS”、“MUL”、“BTC”、“RMC”和“SFT”的这些类型的PE 17具有20种算术运算、逻辑运算和针对两个输入的比较函数。数据输入/输出是16位数据,并且包括两个输入和一个输出。乘法器具有16位数据的输入和32位数据的输出。这些PE 17通常被称为“ALU元件”,并且各自包括特有的运算函数。例如,ALU和ALC包括相同的运算处理,但对于内部是否存储有固定值则是不同的。ALC存储1个16位的固定值,但ALU代替在内部存储固定值,使用相邻的ALC的固定值。ALS在内部存储1个16位的固定值,并且支持诸如FF1(Find the First 1,找到第一个1)、SN1(Sum of Number of 1,1的数量的和)、S2P(Serial To Parallel,串行到并行)和P2S(Parallel To Serial,并行到串行)等的特殊处理。MUL在内部包括乘法器。BTC以位为单位设置输出数据。为了产生16个输出位,可以从输入32位中选择任意的单个位作为单独的输出位。RMC是具有两个输入和两个输出的PE,并且执行位旋转、掩模处理和比较处理。RMC还供给16位的固定值。SFT执行32位的偏移处理。
表示为“DLE”的这类的PE 17是用于调整等待时间并在段之间转移数据的延迟元件。DLE的数据输入和输出包括一个输入和一个输出。表述“延迟元件”包括作为延迟调整用PE 17e的DLE、以及作为用于在段之间转移数据的专用PE 17c的DLH和DLV。
表示为“RAM”的这类PE 17是DNA矩阵10的内部存储器。各RAM包括54个8千字节的区域和1个16千字节的区域,总共得出448千字节的存储区域。该存储区域即使在切换DNA配置时,也存储值。RAM元件包括命名为“RAMS”、“RAMD”和“RAMV”的这三类。
表示为“C16L”、“C16S”、“C32L”、“C32S”、“C32E”和“C16E”的这些类型的PE 17是计数器元件,并且用作为针对DNA缓冲器的地址生成器、针对主存储器的地址生成器,并用作为通用计数器。C16L和C16S是针对DNA缓冲器的地址生成器,配备有计数器功能(2个16位计数器),并且能够利用ALU元件生成复杂的地址模式。C32L和C32S是针对主存储器的地址生成器,配备有计数器功能(2个32位计数器),并且能够利用ALU元件生成复杂的地址模式。C32E和C16E分别是32位和16位的通用计数器。
表示为“LDB”的这类PE 17是从主存储器19向PE矩阵10输入数据的DNA负载缓冲器,并且与输入接口元件相对应。各LDB具有四缓冲器结构,其中,一个存储体包括容量为8千字节的缓冲器。STB是从PE矩阵10向主存储器19输出数据的DNA存储缓冲器,并且与输出接口元件相对应。表示为“STB”的这类PE 17各自具有两缓冲器结构,其中,一个存储体包括容量为8千字节的缓冲器。LDX经由直接I/O从其它的DNA输入数据,并且经由直接I/O向其它的DNA输出数据。
图8是表示为“ALU”的这类PE 17(在下文,“ALU元件”)的框图。“dix”和“diy”是数据输入,并且指定由选择器21t从垂直总线21v选择的输入。“do”是数据输出,并且指定到水平总线21h的输出。这还适用于其它的元件。“dic”是ALU元件的输入接口,并且指定来自作为具有大致相同的功能的元件的ALC元件的寄存器中存储的固定值(或“立即值(immediate)”)的输入。ALC元件除具有能够存储固定值的寄存器101以外,具有与ALU元件的结构大致相同的结构。“doc”是ALU元件的输出接口。“cix”和“ciy”是进位输入,并且“co”是进位输出。PE矩阵10包括具有与图6和图7所示的数据总线的结构相同的结构的进位总线。在图8中,由双线围绕的矩形表示寄存器。这在以下所述的各个PE 17的框图中也是相同的。
选择器102选择数据dix和寄存器101中的常数其中之一作为ALU 113的输入X。选择器103设置ALU 113的输入Y的延迟。选择器104设置输入Y的进位的延迟。设置选择器105和106,以交换输入X和Y。选择器107设置输入X的反馈,并且选择交换后的输入X的令牌(token)或输入Y的进位。选择器108选择输入X,并且能够反馈ALU的输出。选择器109用于绕过ALU 113。选择器112选择PE 17的输出。选择器110选择ALU 113的输入侧上的进位,并且选择(包括延迟的)进位输入和(可能已经交换了的)输入X或输入Y的令牌其中之一。选择器111选择从PE 17输出的进位,并且选择ALU 113的输入进位、ALU 113的输出进位、ALU 113已经用作为比较器时的进位和输入Y的进位其中之一。
另外,图8所示的ALU元件包括用于控制该元件内部的处理内容(功能和连接)的控制单元15。控制单元15包括构造成配置存储器系统11的配置寄存器系统12、和命令解码系统55。控制单元15根据已经由传送系统13传送至ALU元件的配置寄存器系统12、并且已经变为有效的配置数据,切换并控制ALU元件的功能。例如,控制单元15基于该有效的配置数据设置ALU元件中包括的选择器,以切换诸如ALU 113等的运算逻辑元件的功能,并由此使ALU元件执行期望的数据处理。因此,可以根据寄存器系统12中已经变为有效的配置数据,在一个时钟周期内改变ALU元件的功能。这同样适用于其它的PE 17。
控制单元15的命令解码系统55对经由段内部的命令传递矩阵(第一级命令传递矩阵、命令传送矩阵)51传送来的命令进行解码。该命令与配置寄存器12中的有效的配置数据有关,并且如果该命令中包括的EID与作为用于识别数据流的信息的EID一致,则将基于该命令来控制ALU元件。作为一个例子,对于停止命令,ALU元件的时钟停止,并且所有的功能均停止。这同样适用于其它的PE 17。
图9是示出表示为“LDB”的这类PE 17(在下文,“LDB元件”)的框图。LDB元件是包括用于从主存储器19向PE矩阵(DNA矩阵)10传送的数据传送缓冲器的输入接口元件。LDB元件包括用于暂时存储到在PE矩阵10中已经重构了的数据流的输入数据的存储区域29a。存储区域29a各自包括8千字节的4个存储体29x。这四个存储体29x其中之一用作背景存储体(针对来自主存储器19的输入的输入存储体),并且另一个用作前景存储体(针对到PE矩阵10的输出的输出存储体)。
LDB元件包括存储体控制单元29b。存储体控制单元29b具有独立地工作的4个存储体29x,并且与数据的输入和/或输出的结束同步地生成存储体切换,以使得可以在各时钟周期内从PE矩阵10的PE 17或数据流存取存储区域29a。配备有存储体29x的存储区域29a向从LDB元件接收数据的数据流顺次提供数据。
此外,通过在C16L元件处生成地址,可以从DNA矩阵10向存储区域29a的存储体29x进行随机存取。还可以使用同一EID(数据流识别信息)在多个通道之间执行同步操作。除了用作为针对从主存储器19到DNA矩阵10的传送的传送缓冲器以外,可以使用LDB缓冲器作为使用回送功能(loop back function)来写入DNA矩阵10的内部数据的缓冲器。
LDB元件的存储体控制单元29b配备有作为命令生成单元的功能,并且包括生成和输出流停止信号的功能(功能单元)。当期望停止对从LDB元件输出(读取)的数据执行处理的数据流(数据路径)时,LDB元件的存储体控制单元29b生成并输出包括表示针对该处理在PE矩阵10中重构了的数据流的EID、和流停止信号的流停止命令(停止命令、流停止请求)Cs。这样,LDB元件能够停止经由输出控制单元122读出数据的期望的数据流。
当期望停止对从主存储器19输入(写入)至LDB元件中的数据执行处理的数据流(数据路径)时,LDB元件的存储体控制单元29b输出包括表示针对该处理已经在PE矩阵10中重构了的用于读取外部存储器19的数据流的EID、以及流停止信号的命令Cs。这样,LDB元件能够停止经由输入控制单元121输入数据的期望的数据流。LDB元件还配备有控制单元15,该控制单元15配置有与ALU元件中的功能相同的功能。
为了读取和写入存储区域29a、并切换存储体29x,各LDB元件包括写入计数器123、读取计数器126、用于存储阈值的输入计数寄存器124和输出计数寄存器125、以及用于存储存取数据单位的寄存器127。
图10是表示为“STB”的这类PE 17(在下文,“STB元件”)的框图。STB元件是包括用于从DNA矩阵10向主存储器19传送数据的数据传送缓冲器的输出接口元件。各STB元件包括用于暂时存储从数据流输出的数据的存储区域28a。存储区域28a包括大小分别为8千字节的两个存储体28x。这两个存储体28x其中之一用作背景存储体(用于向主存储器19输出的存储体),并且另一个用作前景存储体(用于从PE矩阵10输入的存储体)。
STB元件包括存储体控制单元28b。存储体控制单元28b具有独立操作的两个存储体28x,并且与数据的输入和/或输出的结束同步地生成存储体切换,以使得可以按每时钟周期从DNA矩阵10的PE 17或数据流存取存储区域28a。
STB元件的存储体控制单元28b还配备有作为命令生成单元的功能(功能单元),并且包括生成流停止信号的功能。当期望停止对从STB元件输出(读取)至主存储器19的数据执行处理的数据流(数据路径)时,存储体控制单元28b生成并输出包括表示针对该处理在PE矩阵10中重构了的数据流的EID的停止命令Cs。当连接输入控制单元131、并且期望停止执行向STB元件输入(写入)数据的处理的数据流(数据路径)时,存储体控制单元28b生成并输出包括表示针对该处理的数据流的EID的停止命令Cs。因此,按与LDB相同的方式,存储体控制器28b能够使用包括流停止信号和EID的停止命令Cs来停止期望的数据流。
各STB元件还包括控制单元15。STB元件的控制单元15包括配置寄存器系统12、命令解码系统55和命令输出单元(命令中继单元)59。命令中继单元59针对在STB元件内部生成的停止命令Cs和在LDB等内部生成的停止命令Cs计算逻辑或(OR),并将合成后的停止命令Cs输出至段外部的命令传送矩阵(第二级命令传递矩阵)52。
为了读取并写入存储区域28a并且切换存储体28x,STB元件还包括写入计数器133、读取计数器136、用于存储阈值的输入计数寄存器134和输出计数寄存器135、以及用于存储存取数据单位的寄存器137。
图11是示出表示为“RAM”的这类PE 17(在下文,“RAM元件”)的框图。图11所示的RAM元件是RAMD元件。RAMD元件是PE矩阵10在内部设置的双端口存储器。RAMD元件包括双端口RAM 27a、读取/写入控制器27b、和根据配置数据来控制RAMD元件的功能的控制单元15。
根据配置数据,RAMD元件能够用于地址解码模式、双端口16位模式、直方图模式、16位FIFO模式和延迟模式。这意味着,在数据流中,RAM可以用作诸如线缓冲器或FIFO等的暂时数据存储器,用作查找表,用于直方图处理等。另外,由于RAMD元件包含于RISC 2的存储空间中,因此RISC 2可以单独针对在PE矩阵10中构成的数据流,直接读取和写入RAM 27a。当同时发生通过数据流的存取和直接存取时,优先直接存取。
RAMD元件包括命令生成单元69。命令生成单元69输出包括从读取/写入控制器27b输出的停止信号、和控制单元15中的有效的配置数据所包括的EID的停止命令Cs。在FIFO模式等中,当上游的数据流的处理速度和下游的数据流的处理速度之间的速度差大时,RAMD元件的命令生成单元69输出包括上游的数据流的EID和下游的数据流的EID的流停止命令Cs。
图12是示出表示为“DLE”的这类PE 17(在下文,“DLE元件”)的框图。DLE元件调整在PE矩阵10中重构的数据流中的数据和进位的延迟值。各DLE元件包括延迟电路26a、用于控制延迟的模式控制单元26b和用于根据配置数据来控制模式的控制单元15。
各DLE元件能够调整1~8个时钟的范围内的数据的延迟,并且能够调整1~16个时钟的范围内的进位的延迟。另外,DLE元件配备有FIFO功能。因此,在PE矩阵10中,DLE元件能够用于调整数据和进位之间的定时,或用作为数据的缓冲器等。
DLE元件还包括命令生成单元69。命令生成单元69输出包括从模式控制单元26b输出的停止信号、和控制单元15中的有效的配置数据所包括的EID的停止命令Cs。在FIFO模式等中,当上游的数据流的处理速度和下游的数据流的处理速度之间的速度差大时,DLE元件的命令生成单元69输出包括上游的数据流的EID和下游的数据流的EID的流停止命令Cs。
装置1还包括用于向各PE 17传送命令的命令传递系统50、和用于收集由一部分PE 17生成的命令并将这些命令传递至命令传递系统50的命令收集系统60。图13示出命令传递系统50和命令收集系统60的概述。
为了容易理解,图13示出从PE矩阵10的16个段S中提取的段a1~a4,但其它段也是相同的。PE矩阵10中配置的PE 17和路由矩阵21和22构成由粗线示出的数据流(数据路径)70。在该示例数据流70中,经由段a1的LDB输入数据,并且经由段a4的STB输出数据。为了构成数据流70,通过段内连接21来连接段内部的诸如ALU等的PE 17,并且通过段间连接22经由DLV对来连接这些段。在PE矩阵10中重构的数据流70不限于此,并且所重构的数据流70的数量不限于1个,并且在许多情况下,将对多个数据流进行重构。LDB、STB、RAMD和DLE也是PE其中之一,但由于这些元件是用作流停止命令Cs的生成器(生成源)的PE17,因此已经在图13中单独示出这些元件。
命令传递系统50是用于将停止命令Cs和其它命令传递至PE矩阵10中包括的多个PE 17中的各个PE 17的系统。命令传递系统50包括段a1~a4中分别设置的传递命令寄存器(寄存器、触发器、FF)53、以及用于将段a1~a4中布局的多个PE和传递命令寄存器53相连接的第一级命令传递矩阵(命令传递连接、命令传递总线、命令传递布线)51。命令传递系统50还包括将各段中设置的多个传递命令寄存器53和命令中继单元(命令输出单元)59相连接的第二级命令传递矩阵52。
将命令寄存器(寄存器单元)53表示为“FF”,并且一般包括由多位触发器FF或锁存单元组成的寄存器,但还可以包括用于传送命令的其它逻辑门。命令寄存器53按时钟周期为单位输入和输出停止命令Cs以及其它命令,并且用于与时钟周期同步地传送这些命令。
在命令传递系统50中,STB的命令输出单元59的命令寄存器59f经由第二级命令传递矩阵52连接至段a1~a4的传递命令寄存器53。第二级命令传递矩阵52在一个时钟周期的范围内,从STB的命令输出单元59的命令寄存器59f向各个段a1~a4的传递命令寄存器53传递(传送)数据(命令)。
在各个段a1~a4中,在段中配置传递命令寄存器53,并且传递命令寄存器53经由第一级命令传递矩阵51连接至该段中的所有的PE。在各个段a1~a4中,在一个时钟的范围内,从段内的PE 17向同一段中配置的所有的PE 17传递(传送)数据。因此,通过使用第一级命令传递矩阵51,对于各段中的PE 17,在一个时钟周期的范围内,从同一段中设置的命令寄存器53传递(传送)数据(命令)。
也就是说,通过在各段的命令寄存器53中锁存的命令,在下一时钟周期内控制段a1~a4中配置的所有的PE。因此,根据命令传递系统50,在已经由STB的命令输出单元59的命令寄存器59f对命令锁存之后的第二时钟周期中,利用命令同步地控制PE矩阵10中配置的所有的PE。
按与如上所述相同的方式,命令传递系统50能够还将从RISC模块2等供给的其它命令同步地传递至PE矩阵10中的所有的PE。
命令收集系统60是用于从PE矩阵10中生成命令的PE 17收集停止命令Cs和其它命令的系统。命令收集系统60包括各个段a1~a4中设置的、用于收集命令的收集命令寄存器(寄存器、触发器、FF)、以及将各个段a1~a4内部配置的多个PE 17中生成命令的PE和用于收集命令的命令寄存器63相连接的第一级命令收集矩阵(命令收集连接、命令收集总线、命令收集布线)61。另外,命令收集系统60包括用于将用于收集命令的并且设置在各个段中的多个命令寄存器63、和命令中继单元(命令输出单元)59相连接的第二级命令收集矩阵62。
如同用于传递命令的命令寄存器52一样,用于收集命令的命令寄存器63一般可以包括由多位触发器FF或锁存单元组成的寄存器,但还可以包括用于传送命令的其它逻辑门。命令寄存器63按时钟周期为单位输入和输出停止命令Cs和其它命令,并且用于与时钟周期同步地传送命令。
在命令收集系统60中,在各段中配置用于收集命令的命令寄存器63,并且命令寄存器63经由第一级命令收集矩阵61连接至这些段内生成命令的所有PE。这意味着,在段a1~a4中,通过使用第一级命令收集矩阵61,可以在一个时钟周期的范围内将来自生成命令的所有PE的数据(或停止命令)收集到同一段中设置的命令寄存器63。
STB的命令输出单元59的命令寄存器59f和段a1~a4中用于收集命令的命令寄存器63经由第二级命令收集矩阵62相连接。第二级命令收集矩阵62在一个时钟周期的范围内,从段a1~a4中用于收集命令的命令寄存器63向STB的命令输出单元59的命令寄存器59f传递(传送)数据(命令)。因此,在两个时钟周期内,从生成命令并且配置在PE矩阵10中的所有PE 17向STB的命令输出单元59的命令寄存器59f传递(传送)命令。
在装置1中,经由命令收集系统60和命令传递系统50,还向位于生成命令的PE 17所属的段中的PE 17传递命令。另外,在生成命令的PE 17自身中,对于该PE 17中接收命令的控制单元15,经由命令收集系统60和命令传递系统50传递命令。因此,属于PE矩阵10的所有PE 17具有从由PE 17发出命令到由PE17接收到该命令的一致的等待时间。这意味着,可以在同步定时向属于横跨PE矩阵10中包括的多个段所重构的数据流的所有PE 17传递命令,并且可以防止数据流70的处理的不一致。
命令收集系统60的第一矩阵61和第二矩阵62包括生成针对命令的逻辑或的或门61r和62r。停止命令Cs是包括EID信息的16位信号(stop[15:0]),其中,位0表示“EID=0”。因此,通过输出针对停止命令Cs的逻辑或,可以在同一定时停止与多个EID相对应的多个数据流。由于该原因,即使当在PE矩阵10中构成正在执行不同的数据处理的多个数据流时,通过使用命令收集系统60和命令传递系统50,也可以精确地且灵活地分别控制多个数据流70。
图14是各PE 17中包括的控制单元15的框图。图14示出控制单元15中包括的配置寄存器系统12和命令解码系统55。配置寄存器系统(存储器系统)12包括由两个背景存储器12b(即,两个存储体)和一个前景存储器12a(一个存储体)组成的总共3个存储体的配置存储器。这三个存储体12a和12b各自能够存储一个DNA配置。寄存器系统12还包括将来自传送系统13的DNA配置分别存储在前景存储器12a和背景存储器12b中的电路12c、以及将背景存储器12b中存储的DNA配置传送至前景存储器12a的电路12d。
在控制单元15的寄存器系统12中,由存在于前景存储器12a中的并且实际上已经变为有效的DNA配置来控制各PE 17的功能(状态、数据路径)。可以通过重写前景存储器12a内的指令寄存器12i来切换有效的DNA配置。为了对指令寄存器12i进行写入,存在从背景存储器12b的存储体传送的方法(“动态配置”)、和从存储映射上的控制寄存器(DNACFGW)直接写入的方法。可以在一个时钟内进行从背景存储器12b向前景存储器12a传送,并且可以在一个时钟内切换PE 17的功能。
在背景存储器12b的两个存储体中,可以从主存储器向不再需要的存储体加载DNA配置。这意味着,DNA配置的数量实际上没有限制。切换前景存储器12a的DNA配置被称为“动态重构”,并且提供了两个方法。一个方法从正在执行的DNA配置对DAP(RISC单元)2发生中断,并且使用DAP的程序来切换存储体。另一个方法是自主地切换正在执行的DNA配置。该后一方法特别被称为“自主动态重构”。
DNA配置(配置数据)包括用于设置(切换、重构)各个PE 17的功能的电路信息、参数等。配置数据附加包括作为用于识别包括各个PE 17的数据流70的信息的EID(数据流识别信息)。由命令解码系统55参考正在执行的有效的DNA配置的EID 55e。命令解码系统55包括EID解码器55d和用于接通和断开PE的操作的时钟控制单元55s。如前面所述,停止命令Cs包括表示EID的16位信号。如果停止命令Cs中包括与当前有效的DNA配置的EID 55e一致的EID,则命令解码系统55停止时钟以停止PE 17的操作。例如,当EID 55e是“2”时,如果停止命令Cs的位2(即,数据的第二位)是“1”,则PE停止。如果停止命令Cs的位0和2是“1”,则可以停止EID 55e为“0”和“2”的PE的操作,并且同时控制多个数据流。
图15示出使用LDB(LDB元件)的存储区域29a中包括的4个存储体29x、如何从主存储器(DRAM)19向PE矩阵10输入数据。装置1的LDB包括具有四存储体结构的存储区域29a。通过使用该结构,可以隐藏DRAM 19的读取等待时间。在LDB中,向PE矩阵10(矩阵10的PE 17或数据流70)读出数据结束并且切换存储区域29a中的存储体,然后发出针对DRAM 19的读取请求。
近年来,DRAM 19的速度已经明显提高,但该速度提高的代价是存取等待时间的增加。也就是说,从输入读取命令到读取数据的时钟周期的数量增多。这意味着,如果使用两存储体结构、且缓冲器的深度不充足(即,当要读出的数据的量少时),存储体切换之后的读取请求将使得从读取侧存储体读取数据结束,这将停止到PE矩阵10中的输入,并且数据流70将以空闲结束。为了避免该情形,使装置1中的存储体的数量增加到4个存储体。通过增加存储体的数量,写入侧的存储体29x的数量变为多个(在该例子中,3个写入存储体)。这意味着,可以在无需等待读取存储体29x为空、并且无需等待从读取存储体到写入存储体的存储体切换的情况下,向DRAM 19输出读取请求。因此,可以隐藏对于DRAM 19的存取等待时间。
还存在由于对DRAM 19的冲突存取或其它原因、因此当LDB的读取侧存储体29x为空时未将标准量的数据加载至写入侧存储体29x中的情况。在这种时刻,执行存储体切换并不适当,并且期望停止从LDB读取数据、或者使在读取侧存储体29x已经为空之后读出的数据无效。在数据流型计算机中,已知一种向各数据附加用于表示该数据是有效还是无效的令牌的技术。由于可以通过连同数据一起传递令牌、使用令牌来控制数据流,因此硬件结构变得简单。该系统同样适用于装置1。然而,如果仅基于令牌执行控制,则有可能数据流执行错误的运算。
图16示出一个例子。在数据流执行以下给出的等式(1)中的运算的情况下,如果如图16所示、读取侧存储体29x在周期t(0)时为空,则第5个输入的数据将无效(被称为“泡”)。在这种情形下,如情况1所示,当基于数据Y(t)的令牌执行运算时,由这种无效数据产生的结果将被作为无效来处理。另一方面,如情况2所示,当基于Y(t-1)的令牌执行运算时,对于由有效数据已经产生的结果将发生错误。如果仅当Y(t)的令牌和Y(t-1)的令牌这两者均有效时、才将结果看作为有效,则有效运算结果将被作为无效结果来处理。因此,需要根据数据流中包括的运算来选择有效令牌的处理,并且在设计数据流时需要考虑到该处理。
Y(t)=Y(t)+Y(t-1) …(1)
图17示出装置1中读取侧存储体29x在周期t(0)时变为空的状态。在装置1中,根据命令收集系统60和命令传递系统50,将在PE 17中生成的流停止命令Cs锁存在寄存器53中,并且将该流停止命令Cs传递到所有的PE 17。然而,从流停止命令Cs的生成到到达需要3个时钟周期,在四个时钟周期之后所有的PE 17均参考(即,被传递了)命令Cs,并且利用该命令Cs来控制所有的PE 17。
因此,如图17所示,LDB在比读取侧存储体29x将为空的t(0)早4个周期的t(-4)时,输出命令Cs。使用停止命令Cs,可以停止数据流70和LDB。由于LDB在负载缓冲器29a中不存在数据时停止,因此将不输出不具有令牌的数据(即,“泡”)。另外,由于具有相应的EID的数据流也暂时停止,因此不会基于无效的数据来执行处理。因此,可以提供无泡环境,这意味着用户无需关注泡,并且可以在无需关注令牌的选择的情况下设计数据流并将该数据流映射到PE矩阵上。
另外,在装置1中,由于具有EID的PE的本地时钟由于流停止命令Cs将停止,因此还出现功耗下降。当仅基于令牌执行控制时,数据流将不停止,并且在许多情况下,还对无效的数据执行运算。这导致消耗了更多的电力,并且还有可能通过无效的运算而不必要地重写了存储器或寄存器。然而,在装置1中,由于可以使用从PE生成的流停止命令Cs使数据流停止,因此可以从开始就避免这种不期望的情形。
当预先确定数据的数量时,诸如LDB和RAM等的元件中作为生成流停止命令的单元的存储体控制单元29b和命令生成单元69可以进一步配备有消除或不生成流停止、从而输出最终数据的功能。这是因为,有可能由于用作FIFO的存储区域29a中的剩余数据量在已经接收到最终数据之后没有增加,因而数据流变成死锁。由于该原因,作为LDB的命令生成单元的存储体控制单元29b配备有在来自元件C32L的结束令牌已被锁存或这种地址的读取数据已经恢复之后、取消或消除(即,停止)输出流停止的功能29d(参见图9)。根据该功能29d,还将最终数据毫无问题地输出到在PE矩阵10中重构的数据流。作为消除流停止的不同的例子,C32L在发现结束令牌时生成中断的原因,DPA2设置特定寄存器以消除流停止。
图18示出LDB元件中用于生成并输出流停止数据的结构和定时。由于存储体切换,因此写入存储体29x变为读取存储体29x、并且读取存储器29x变为写入存储器29x。之后,从交换后的读取存储体29x向PE矩阵10传递数据。当数据传递期间从读取存储体29x可以读出的数据量降至寄存器125中存储的预定阈值29t以下时,作为命令生成单元的存储体控制器29b判断出几乎为空状态S Tae,并且存储体控制器29b的流停止请求功能29s输出用于执行流停止的流停止命令Cs。基于从由流停止请求功能29s输出命令Cs、直到该命令Cs返回至LDB和段为止的等待时间来确定阈值29t。
更具体地,在装置1中,各个PE 17参考或获得流停止命令Cs(即,命令Cs到达)需要3个时钟,并且从命令生成到数据流70停止需要4个时钟。因此,命令Cs的等待时间(延迟)是4个时钟周期,并且当存储区域29a的读取存储体29x中剩余的数据是4个时钟周期的数据时,也就是说,当已经输出数据d4时将判断为几乎为空状态STae时,可以输出流停止命令。
图19是直到输出流停止命令Cs并且数据流停止为止的时序图。如果存储体控制器29b在周期t(-4)时检测到数据d4,则存储体控制器29b判断出几乎为空状态STae。由于该LDB元件属于具有EID“2”的数据流70(即,正在向数据流提供数据),因此存储体控制器29b输出具有EID“2”的流停止命令Cs。
在周期t(-3)时,由命令收集系统60的各段的命令寄存器(FF)63经由第一级命令收集矩阵61锁存(获得)由存储体控制器29b输出的流停止命令Cs(流停止请求)。也就是说,由命令收集系统60的寄存器63来收集命令Cs。
在周期t(-2)时,由STB的命令输出单元59的输出寄存器(FF)59f经由第二级命令收集矩阵62获得命令收集系统60的寄存器63中所收集的命令Cs。也就是说,在寄存器59f中收集命令Cs。
在周期t(-1)时,由命令传递系统50的各段中的命令寄存器(FF)53经由第二级命令传递矩阵52获得寄存器59f中所收集的命令Cs。也就是说,流停止命令Cs到达寄存器53。该停止命令Cs表示下一时钟为无效。
在下一周期(0)时,具有EID 2的各个PE 17经由第一级命令传递矩阵51识别各段的命令寄存器53中的命令Cs,并且根据命令Cs而停止。因此,在周期t(0)时,具有EID 2的数据流70停止。
将流停止命令Cs保持在流停止命令Cs的源LDB元件的存储体控制器29b中,直到写入存储体29x已经达到满状态STf、存储体切换已经完成、并且读取存储体29x已被切换为止。在这种情况下,在周期t(4)时消除流停止命令Cs。
之后,按与以上所述的方式相同的方式,由PE 17经由命令收集系统60和命令传递系统50识别流停止命令C s的消除(取消无效)。因此,在周期t(7)时取消寄存器53中具有EID 2的流停止命令Cs。这意味着,属于具有EID 2的数据流的所有PE 17在下一周期t(8)时均不停止,并且处理从数据d0重新开始或恢复。
在周期t(8)时,存储体切换完成,并且在数据d0之后从LDB供给数据dn。这意味着,具有EID“2”的数据流70能够在无气泡进入该数据流的情况下,正确地继续处理。此外,由于在从周期t(0)到周期t(8)的时间段期间、针对属于具有EID 2的数据流的PE 17可以停止时钟,因此可以降低功耗。当正在执行属于其它EID并且与数据输入或输出等有关的处理时,RAM元件等在这时候将不完全停止,并且有可能消耗一些电力。
图20示出在不输出流停止命令Cs的情况下执行存储体切换的情况。在LDB元件中,即使当读取存储体29x的数据处于几乎为空状态STae时,如果写入存储体29x已经处于满状态(已写入状态)STf,则当读取存储体29x为空时将可以进行存储体切换。用作命令生成单元的存储体控制器29b配备有取消输出流停止的功能29d,并且取消功能29d起作用。取消功能29d响应于周期t(-4)时的几乎为空状态STae,判断为由于写入存储体29x为满(已写入)、因此无需进行流停止,并且取消几乎为空状态STae。这意味着,不输出流停止命令Cs。这样,可以防止不必要地停止数据流。
图21示出对于最终数据不输出流停止命令Cs的情况。即使当最终数据位于读取存储体29x中时,存储体控制器29b的取消功能29d也工作。因此,当最终数据位于读取存储体29x中时,不输出流停止命令Cs。如果最终数据位于读取存储体29x中,则将不从主存储器(DRAM)19读取最终数据之后的数据。因此,将不执行存储体切换。这意味着,如果数据流70停止,则将不读出最终数据。通过使用取消功能29d不输出流停止命令Cs,可以防止这种情形。
可以根据输出DRAM 19的读取地址的元件C32L的结束令牌的标志来判断最终数据是否位于读取存储体29x中。由于结束令牌标志为高(H),因此取消功能29d判断为对于周期t(-4)时的几乎为空状态STae,无需进行流停止,并取消几乎为空状态STae。由于该原因,不输出流停止命令Cs。这样,可以防止不必要地停止数据流。
尽管以上已经说明了由LDB输出流停止命令Cs的情况的例子,但数据流中包括作为FIFO的功能的DLE元件和RAM元件也可以按相同的方式控制上游的数据流和/或下游的数据流。例如,在被设置成用作针对上游的数据流的FIFO的DLE元件或RAM元件中,在看上去FIFO将由于上游数据流的写入而变满时,将输出与其自身的EID或上游数据流的EID相对应的编号的流停止请求。根据该操作,可以停止上游(写入侧)的数据流。这样,对于下游的数据流而言,可以在无需考虑上游的数据流的状态的情况下,在下游数据流方便的定时执行处理。
DLE元件或RAM元件根据FIFO中剩余的数据量,还将具有下游的数据流的EID的流停止请求(流停止命令)输出到下游的数据流。这使得可以从开始就防止向下游的数据流供给泡。此外,作为一个例子,可以使用PE 17的进位信号表示是否可以进行读取。如果进位为“1”,则这表示存在要读出到FIFO的数据。通过使用该下游的信号,可以在环境有利时执行读取。
通过使用该系统,可以从PE 17生成包括流停止的命令Cs,使用EID识别数据流,并从PE 17执行控制。发出诸如流停止等的命令的PE 17的类型不限于以上所述的例子。例如,当在PE矩阵中构成的数据流的处理中存在反馈处理时,出现期望在多次迭代、例如三次迭代中仅执行一次处理的情况。例如,当读取侧在三次中仅执行一次处理以处理反馈时,可以想到将读出相同的数据三次,并且看上去在这三次中仅执行了一次处理。然而,除前面所述的RAM和DLE以外,通过还从配备有数据输入和判断功能的诸如ALU等的类型的PE 17输出流停止命令,在期望在三次迭代中仅执行一次处理时,可以在两个周期内停止输入侧的数据流。通过执行这类控制,可以降低装置1中的功耗。
在装置1中,可以从PE 17输出流停止命令,并且无论段如何,都与该PE 17同步地控制所有的PE 17。因此,可以通过按识别信息(EID)为单位对数据流进行分割来执行控制。例如,在环境对读取侧有利时,读取侧数据流可以执行读取。
分段(segmentation)在设计并映射数据流时也是有效的。由于在段内保证了时序收敛,因此分段适合于提高段内的配置和布线的自由度。另外,通过执行分段,可以在各段中独立地使用用于发送和接收信号的总线(路由矩阵),由此实现提高布线的使用效率的额外的优点。还可以将多个PE分割配置成多个段的(分段式)系统或结构引入包括包含诸如ALU等的功能的、多个均一或近似均一的PE或逻辑块(LCB)的可重构装置中。
本发明所包括的路由矩阵不限于诸如电气配线等的、根据电气/电子方法传递信号的路由矩阵。本发明所包括的路由矩阵可以是使用诸如光学传递等的其它信息传递方法的路由矩阵。同样,本发明所包括的PE的布局和段的布局不限于按二维方式、即垂直和水平的规则配置。例如,还可以在3个方向或6个方向上规则地布局多个PE和段。另外,可以使用诸如堆叠成层等的方法按三维方式布局PE和段。