设计辅助方法、设计辅助程序、设计辅助装置、以及记录介质

申请号 CN201480076895.5 申请日 2014-03-11 公开(公告)号 CN106063134A 公开(公告)日 2016-10-26
申请人 富士通株式会社; 发明人 富田宪范;
摘要 设计辅助装置(100)获取编码矩阵(ma1)和表示开始定时的信息。设计辅助装置(100)对于与编码矩阵的列矢量对应的各定时中的获取到的信息所示的开始定时以后的各个定时,确定存储于BRAM的第一部分数据中的、在定时中被第二部分数据 覆盖 的第一部分数据。设计辅助装置(100)对于开始定时以后的各个定时,确定多个XOR运算中的基于确定出的第一部分数据的XOR运算。设计辅助装置(100)对于开始定时以后的各个定时,确定比各定时中的开始定时靠前的各定时中的、确定出的XOR运算的运算结果和基于与定时对应的矢量确定出的XOR运算的运算结果相同的定时。
权利要求

1.一种设计辅助方法,对编码电路的设计进行辅助,该编码电路通过对于具有比作为规定数量的第一数量多的第二数量的、具有上述第一数量的分量的矢量的编码矩阵的各个上述矢量,进行包括基于上述第一数量的被存储于存储区域的多个部分数据和上述矢量的各分量的多个逻辑运算的编码处理,来得到上述第二数量的编码数据,上述多个部分数据是将编码的对象数据分割为上述第一数量而得到的多个部分数据,上述设计辅助方法的特征在于,
计算机执行下述处理:
获取上述编码矩阵;
获取表示基于将编码的第一对象数据分割而得到且被储存于上述存储区域的多个第一部分数据和获取到的上述编码矩阵的上述矢量的各分量的上述编码处理中的与上述矢量对应的各定时中的、开始将编码的第二对象数据分割而得到的多个第二部分数据向上述存储区域储存的开始定时的信息;
对于上述各定时中的获取到的上述信息所示的上述开始定时以后的各个定时,确定被存储于上述存储区域的上述多个第一部分数据中的、在上述定时中被上述第二部分数据覆盖的第一部分数据;
对于上述开始定时以后的各个定时,在与上述定时对应的上述矢量的各分量中的、与确定出的上述第一部分数据对应的分量是规定值的情况下,确定上述多个逻辑运算中的、基于确定出的上述第一部分数据的逻辑运算;
对于上述开始定时以后的各个定时,确定上述各定时中的比上述开始定时靠前的各定时中的、确定出的上述逻辑运算的运算结果和基于与上述定时对应的上述矢量确定出的上述逻辑运算的运算结果相同的定时。
2.根据权利要求1所述的设计辅助方法,其特征在于,
上述计算机执行下述处理:
在上述开始定时以后的定时中的不同的2个定时彼此中,当确定出的上述逻辑运算相同并且确定出的上述逻辑运算的运算结果不同的情况下,在上述不同的2个定时彼此中,以进行确定的上述逻辑运算不重叠的方式进行确定上述逻辑运算的处理和确定上述定时的处理。
3.根据权利要求1或者2所述的设计辅助方法,其特征在于,
上述计算机执行下述处理:
生成表示第二编码电路和控制电路的电路信息,
上述第二编码电路在上述编码电路设置了储存对于上述开始定时以后的各个定时确定出的上述逻辑运算的运算结果的存储区域,上述控制电路使在对于上述开始定时以后的各个定时确定出的上述定时中确定出的上述逻辑运算的运算结果储存于上述存储区域。
4.根据权利要求1~3中任一项所述的设计辅助方法,其特征在于,
上述计算机执行下述处理:
对于获取到的上述编码矩阵的矢量中的、上述第一数量之后的各个矢量,对从开头的分量起依次连续的与上述规定值不同的值的数量进行计数;
基于上述编码矩阵,生成按照计数出的与上述规定值不同的值的数量从少到多的顺序重新排列上述第一数量之后的矢量的编码矩阵,
在确定上述逻辑运算的处理中,对于上述开始定时以后的各个定时,在与上述定时对应的生成了的上述编码矩阵的上述矢量的各分量中的、与确定出的上述第一部分数据对应的分量是上述规定值的情况下,确定上述多个逻辑运算中的、基于确定出的上述第一部分数据的逻辑运算。
5.一种设计辅助程序,对编码电路的设计进行辅助,该编码电路通过对于具有比作为规定数量的第一数量多的第二数量的、具有上述第一数量的分量的矢量的编码矩阵的各个上述矢量,进行包括基于上述第一数量的被存储于存储区域的多个部分数据和上述矢量的各分量的多个逻辑运算的编码处理,来得到上述第二数量的编码数据,上述多个部分数据是将编码的对象数据分割为上述第一数量而得到的多个部分数据,上述设计辅助程序的特征在于,
计算机执行如下的处理:
获取上述编码矩阵;
获取表示基于将编码的第一对象数据分割而得到且被储存于上述存储区域的多个第一部分数据和获取到的上述编码矩阵的上述矢量的各分量的上述编码处理中的与上述矢量对应的各定时中的、开始将编码的第二对象数据分割而得到的多个第二部分数据向上述存储区域储存的开始定时的信息;
对于上述各定时中的获取到的上述信息所示的上述开始定时以后的各个定时,确定被存储于上述存储区域的上述多个第一部分数据中的、在上述定时中被上述第二部分数据覆盖的第一部分数据;
对于上述开始定时以后的各个定时,在与上述定时对应的上述矢量的各分量中的、与确定出的上述第一部分数据对应的分量是规定值的情况下,确定上述多个逻辑运算中的、基于确定出的上述第一部分数据的逻辑运算;
对于上述开始定时以后的各个定时,确定上述各定时中的比上述开始定时靠前的各定时中的、确定出的上述逻辑运算的运算结果和基于与上述定时对应的上述矢量确定出的上述逻辑运算的运算结果相同的定时。
6.一种设计辅助装置,对编码电路的设计进行辅助,该编码电路通过对于具有比作为规定数量的第一数量多的第二数量的、具有上述第一数量的分量的矢量的编码矩阵的各个上述矢量,进行包括基于上述第一数量的被存储于存储区域的多个部分数据和上述矢量的各分量的多个逻辑运算的编码处理,来得到上述第二数量的编码数据,上述多个部分数据是将编码的对象数据分割为上述第一数量而得到的多个部分数据,上述设计辅助装置的特征在于,
具有控制部,该控制部获取上述编码矩阵;获取表示基于将编码的第一对象数据分割而得到且被储存于上述存储区域的多个第一部分数据和获取到的上述编码矩阵的上述矢量的各分量的上述编码处理中的与上述矢量对应的各定时中的、开始将编码的第二对象数据分割而得到的多个第二部分数据向上述存储区域储存的开始定时的信息;对于上述各定时中的获取到的上述信息所示的上述开始定时以后的各个定时,确定被存储于上述存储区域的上述多个第一部分数据中的、在上述定时中被上述第二部分数据覆盖的第一部分数据;对于上述开始定时以后的各个定时,在与上述定时对应的上述矢量的各分量中的、与确定出的上述第一部分数据对应的分量是规定值的情况下,确定上述多个逻辑运算中的、基于确定出的上述第一部分数据的逻辑运算;对于上述开始定时以后的各个定时,确定上述各定时中的比上述开始定时靠前的各定时中的、确定出的上述逻辑运算的运算结果和基于与上述定时对应的上述矢量确定出的上述逻辑运算的运算结果相同的定时。
7.一种记录介质,记录有对编码电路的设计进行辅助的设计辅助程序,对编码电路的设计进行辅助,该编码电路通过对于具有比作为规定数量的第一数量多的第二数量的、具有上述第一数量的分量的矢量的编码矩阵的各个上述矢量,进行包括基于上述第一数量的被存储于存储区域的多个部分数据和上述矢量的各分量的多个逻辑运算的编码处理,来得到上述第二数量的编码数据,上述多个部分数据是将编码的对象数据分割为上述第一数量而得到的多个部分数据,上述记录介质的特征在于,
记录有使计算机执行下述处理的设计辅助程序:
获取上述编码矩阵;
获取表示基于将编码的第一对象数据分割而得到且被储存于上述存储区域的多个第一部分数据和获取到的上述编码矩阵的上述矢量的各分量的上述编码处理中的与上述矢量对应的各定时中的、开始将编码的第二对象数据分割而得到的多个第二部分数据向上述存储区域储存的开始定时的信息;
对于上述各定时中的获取到的上述信息所示的上述开始定时以后的各个定时,确定被存储于上述存储区域的上述多个第一部分数据中的、在上述定时中被上述第二部分数据覆盖的第一部分数据;
对于上述开始定时以后的各个定时,在与上述定时对应的上述矢量的各分量中的、与确定出的上述第一部分数据对应的分量是规定值的情况下,确定上述多个逻辑运算中的、基于确定出的上述第一部分数据的逻辑运算;
对于上述开始定时以后的各个定时,确定上述各定时中的比上述开始定时靠前的各定时中的、确定出的上述逻辑运算的运算结果和基于与上述定时对应的上述矢量确定出的上述逻辑运算的运算结果相同的定时。

说明书全文

设计辅助方法、设计辅助程序、设计辅助装置、以及记录介质

技术领域

[0001] 本发明涉及设计辅助方法、设计辅助程序、设计辅助装置、以及记录介质。

背景技术

[0002] 以往,在互联网中有时由于通信中途存在的路由器的缓冲区内存溢出等而丢失数据包。例如,在作为一般的通信协议的TCP/IP(Transmission Control Protocol/Internet Protocol:传输控制协议/互联网协议)中,存在由于产生数据包的丢失而一下子将通信速度降低的情况。因此,在产生数据包的丢失的通信环境中,存在通信速度显著变慢的情况。
[0003] 作为克服TCP/IP的缺点的方法,公知有RPS(Random Parity Stream:随机校验流)编码处理(例如,参照下述非专利文献1、专利文献1等。)。在RPS编码处理中,在数据发送侧送出冗余数据,在接收侧,当有丢失的数据包的情况下使用冗余数据来再现丢失的数据包。另外,以往例如通过软件来进行RPS编码处理。
[0004] 另外,公知有一种在数据包的发送中利用奇偶计算来检测数据包的错误的技术(例如,参照下述专利文献2、3。)。
[0005] 专利文献1:日本特开2007-258796号公报
[0006] 专利文献2:日本特开平10-190481号公报
[0007] 专利文献3:日本特开2005-102037号公报
[0008] 非专利文献1:亀山裕亮、佐藤裕一、“大規模データを扱うエンジニアリングアプリケーション向けの高速なASPシステムの構築”、[online]、マルチメディア,分散,協調とモバイル(DICOMO2008)シンポジウム、[平成25年12月6日検索]、インターネット<http://www.dicomo.org/2008/program/3H_abst.html>
[0009] 然而,以往若通过软件来实现编码处理,则存在编码处理花费时间这一情况。另外,若将编码处理硬件化,则即使编码处理能够高速化,也存在若存储器少则用于编码处理的数据传输花费等待时间这一情况。因此,存在无法高效地进行编码处理这一问题点。

发明内容

[0010] 在一个方面中,本发明的目的在于,提供能够实现编码处理的效率化的设计辅助方法、设计辅助程序、设计辅助装置、以及记录介质。
[0011] 根据本发明的一个方面,提出了下述的设计辅助方法、设计辅助程序、设计辅助装置、以及记录介质,所述设计辅助方法对编码电路的设计进行辅助,该编码电路通过对于具有比规定数量(以下,称为“第一数量”)多的第二数量的、具有上述第一数量的分量的矢量的编码矩阵的各个上述矢量,进行包括基于上述第一数量的被存储于存储区域的多个部分数据和上述矢量的各分量的多个逻辑运算的编码处理,来得到上述第二数量的编码数据,上述多个部分数据是将编码的对象数据分割为上述第一数量而得到的多个部分数据,上述设计辅助方法获取上述编码矩阵;获取表示基于将编码的第一对象数据分割而得到且储存于上述存储区域的多个第一部分数据和获取到的上述编码矩阵的上述矢量的各分量的上述编码处理中的与上述矢量对应的各定时中、开始将编码的第二对象数据分割而得到的多个第二部分数据向上述存储区域储存的开始定时的信息;对于上述各定时中的获取到的上述信息所示的上述开始定时以后的各个定时,确定存储于上述存储区域的上述多个第一部分数据中的、在上述定时被上述第二部分数据覆盖的第一部分数据;对于上述开始定时以后的各个定时,在与上述定时对应的上述矢量的各分量中的、与确定出的上述第一部分数据对应的分量是规定值的情况下,确定上述多个逻辑运算中的、基于确定出的上述第一部分数据的逻辑运算;对于上述开始定时以后的各个定时,确定比上述各定时中的上述开始定时靠前的各定时中的、确定出的上述逻辑运算的运算结果和基于与上述定时对应的上述矢量确定出的上述逻辑运算的运算结果相同的定时。
[0012] 根据本发明的一个方式,能够实现编码处理的效率化。附图说明
[0013] 图1是表示本发明所涉及的设计辅助装置所进行的一个动作例的说明图。
[0014] 图2是表示数据发送时的RPS编码处理例的说明图。
[0015] 图3是表示数据接收时的RPS解码处理例的说明图。
[0016] 图4是表示用于发送数据的系统构成例的说明图。
[0017] 图5是表示FPGA内的例的说明图。
[0018] 图6是表示编码电路例的说明图。
[0019] 图7是表示编码电路的部分例的说明图。
[0020] 图8是表示各部分电路的变更例的说明图。
[0021] 图9是表示编码电路例2的说明图。
[0022] 图10是表示实施方式所涉及的设计辅助装置的硬件构成例的框图
[0023] 图11是表示设计辅助装置的功能性构成例的框图。
[0024] 图12是表示编码矩阵例的说明图。
[0025] 图13是表示提前数为0的情况下的访问定时例的说明图(其1)。
[0026] 图14是表示提前数为0的情况下的访问定时例的说明图(其2)。
[0027] 图15是表示在提前了输入块供给的情况下数据被覆盖的BRAM的分布例的说明图。
[0028] 图16是表示提前数为1的情况下的访问定时例的说明图。
[0029] 图17是表示提前数为2的情况下的访问定时例的说明图。
[0030] 图18是表示提前数为3的情况下的访问定时例的说明图。
[0031] 图19是表示提前数为4的情况下的访问定时例的说明图。
[0032] 图20是表示提前数为5的情况下的访问定时例的说明图。
[0033] 图21是表示提前数为6的情况下的访问定时例的说明图。
[0034] 图22是表示提前数为7的情况下的访问定时例的说明图。
[0035] 图23是表示提前数为2或者3的情况下的编码电路101例的说明图。
[0036] 图24是表示提前数为4的情况下的编码电路101例的说明图。
[0037] 图25是表示BRAM的位置例的说明图。
[0038] 图26是表示模板逻辑式例子的说明图。
[0039] 图27是表示变量与BRAM的位置的对应关系的说明图。
[0040] 图28是表示求解BRAM的分配问题的程序例子的说明图。
[0041] 图29是表示所生成的电路描述例的说明图。
[0042] 图30是表示编码电路101和控制编码电路101的控制电路的说明图。
[0043] 图31是表示图30所示的电路的动作例的说明图。
[0044] 图32是表示提前执行处理例的说明图。
[0045] 图33是表示用于进行提前执行处理的电路构成例的说明图。
[0046] 图34是表示编码矩阵的列矢量替换例的说明图。
[0047] 图35是表示因列矢量替换引起的BRAM的使用数的变化例的说明图。
[0048] 图36是表示设计辅助装置所进行的设计辅助处理顺序例的流程图(其1)。
[0049] 图37是表示设计辅助装置所进行的设计辅助处理顺序例的流程图(其2)。

具体实施方式

[0050] 以下,参照附图详细地对本发明所涉及的设计辅助方法、设计辅助程序、设计辅助装置、以及记录介质的实施方式进行说明。
[0051] 图1是表示本发明所涉及的设计辅助装置的一个动作例的说明图。设计辅助装置100是对编码电路101的设计进行辅助的计算机。编码电路101通过利用编码矩阵ma1和多个部分数据进行编码处理来得到编码数据。这里,编码数据称为编码块。编码矩阵ma1具有第二数量的、具有将编码的对象数据分割而得到的多个部分数据的规定数量(以下称为“第一数量”。)的值的矢量,其中,第二数量比第一数量多。这里的编码处理例如是RPS的编码处理。另外,这里将部分数据称为块。在图1的例子中,对象数据被分割成16块。图1的编码矩阵ma1具有30个具有作为第一数量的16个值的列矢量。列矢量的各分量因列矢量而不同。在本实施方式中,还在多个存储区域分别预先保存成为编码电路101的编码处理的对象的多个块。这里的存储区域称为BRAM(Block Random Access Memory:块随机存取存储器)。BRAM例如是能够在FPGA(Field Programmable Gate Array:现场可编程阵列)内利用的RAM的一种。
[0052] 以往,例如若进行RPS的编码处理的软件以0.5[Gbps]输出编码数据,则即使是1[Gbps]的通信频带,也以0.5[Gbps]发送编码数据。另外,近年来的国际通信线路的通信频带主流是100[Mbps]左右,但在将来成为10[Gbps]的情况下,在基于软件的处理中无法高效地利用通信频带。对于RPS的编码处理以及解码处理被利用的状况,假定跨国家与国家的程度的网络规模。鉴于此,在本实施方式中,通过将RPS的编码处理硬件化,来实现编码处理的高速化。然而,在利用FPGA等将RPS的编码处理硬件化的情况下,必须在BRAM等保存编码的对象数据,但若BRAM的容量少,则用于将对象数据储存到BRAM等的数据传输等待时间变长。因此,无法高效地利用通信频带。
[0053] 鉴于此,在本实施方式中,设计辅助装置100对于提前执行中的各定时,通过编码矩阵ma1来确定基于在提前执行中被覆盖的数据的运算、和该运算的结果与该定时相同的其他定时。由此,能够省内存量地设计可提前执行的编码电路101。因此,能够高效地进行编码处理。高效地进行编码处理是指即使省内存也能高吞吐量地进行。
[0054] 这里,在编码电路101中,当生成一个编码块时,一个列矢量被输入至编码电路101所包含的AND电路的一方。由此,决定哪个块被输入至XOR电路所进行的XOR运算。另外,在本实施方式中,因为输出数据量增加冗余数据的量,所以作为前提条件,“(数据输入速率)<(数据输出速率)”。
[0055] 首先,设计辅助装置100获取编码矩阵ma1。接着,设计辅助装置100获取编码处理中的与编码矩阵ma1所具有的列矢量对应的多个定时中的、表示多个BRAM开始向将编码的第二对象数据d2分割而得到的多个第二部分数据储存的定时的信息。这里的编码处理是基于将编码的第一对象数据d1分割而得到且被储存于BRAM的多个第一部分数据和获取到的编码矩阵ma1的矢量的各分量的编码处理。作为表示定时的信息,既可以是与定时对应的列矢量的编号,也可以是后述的提前数。例如,在图1的例子中,开始定时是与列矢量0到列矢量29中的列矢量27对应的定时。
[0056] 接着,设计辅助装置100对于各定时中的获取到的信息所示的开始定时以后的各个定时,确定存储于BRAM的多个第一块中的、在定时中被第二块覆盖的第一部分数据。在图1的例子中,对于列矢量27而言,被储存于BRAM0的第一块覆盖。对于列矢量28而言,被储存于BRAM0以及BRAM1的第一块覆盖。对于列矢量29而言,被储存于BRAM0到BRAM2的第一块覆盖。
[0057] 接着,设计辅助装置100对于开始定时以后的各个定时,在与定时对应的列矢量的各分量中的、与确定出的第一块对应的分量是规定值的情况下,对基于确定出的第一块的逻辑运算进行确定。这里,在图1的例子中,规定值是1。这里的逻辑运算是指XOR运算。在图1的例子中,列矢量28的各分量中的、与储存于BRAM0的第一块对应的分量是1。另外,列矢量27以及列矢量29的各分量中的、与确定出的第一块对应的分量是0。这里,设计辅助装置100例如确定编码电路101的XOR电路中的、BRAM0的数据通过的XOR电路所进行的XOR运算。
[0058] 而且,设计辅助装置100对于开始定时以后的各个定时,确定各定时中的比开始定时靠前的各定时中的、与确定出的XOR运算的运算结果相同的定时。确定出的XOR运算的运算结果是基于确定出的XOR运算的运算结果与定时对应的矢量的运算结果。例如,由于基于列矢量0的确定出的逻辑运算的运算结果与基于列矢量28的确定出的逻辑运算的运算结果相同(换言之,列矢量0和列矢量28因由第0~1因素构成的部分列矢量均是[1 0]而相等,所以XOR运算结果也相同),所以设计辅助装置100确定与列矢量0对应的定时。
[0059] 另外,虽然图1中未示出,但设计辅助装置100在开始定时以后的定时中的不同的2个定时彼此中,判断是否确定出的逻辑运算相同并且确定出的逻辑运算的运算结果不同。设计辅助装置100在逻辑运算相同且确定出的逻辑运算的运算结果不同的情况下,在不同的2个定时彼此中,以确定的逻辑运算不重叠的方式进行确定逻辑运算的处理和确定定时的处理。
[0060] 由此,能够省内存量地设计可提前执行的编码电路101。因此,能够高效地进行编码处理。
[0061] 另外,虽然图1中未示出,但设计辅助装置100基于确定出的逻辑运算和确定出的定时,生成表示编码电路101和控制电路的电路信息。这里,所生成的编码电路101是在编码电路101设置了储存对于开始定时以后的各个定时确定出的逻辑运算的运算结果的BRAM的电路。另外,控制电路是进行使在对于开始定时以后的各个定时确定出的定时中确定出的逻辑运算的运算结果储存到BRAM的控制的电路。由此,能够自动地得到表示编码电路101的电路信息,所以能够节省设计者的工夫。
[0062] 另外,虽然图1中未示出,但设计辅助装置100对于获取到的编码矩阵ma1的列矢量中的、第一数量之后的各个矢量,对从开头行起依次连续的与规定值不同的值的数量进行计数。如上所述,规定值是1,与规定值不同的值是0。然后,设计辅助装置100基于编码矩阵ma1来生成按照计数出的与规定值不同的值的数量从多到少的顺序重新排列第一数量之后的矢量而得到的编码矩阵。在后述的图34中示出重新排列后的编码矩阵的例子。而且,设计辅助装置100使用生成的编码矩阵ma1来进行上述的确定逻辑运算的处理、和确定定时的处理。由此,能够以较少的内存容量进行更多的提前执行。
[0063] (RPS编码/解码)
[0064] 图2是表示数据发送时的RPS编码处理例的说明图。这里,简单地对本实施方式中利用的RPS编码进行说明。在互联网中,存在由于通信中途存在的路由器的缓冲区内存溢出等而数据包丢失的情况。例如,在作为一般的通信协议的TCP/IP中,存在由于产生数据包的丢失而一下子将通信速度降低的情况。因此,在屡次产生数据包丢失的通信环境中,存在通信速度显著变慢的情况。
[0065] 作为克服TCP/IP的缺点的方法,公知有RPS编码处理。在RPS编码处理中的数据发送侧送出冗余数据,在RPS编码处理中的接收侧,在存在丢失的数据包的情况下使用冗余数据来再现丢失的数据包。由此,实现数据包丢失时的数据的重新发送次数的减少。
[0066] 如图2所示,在RPS编码处理中,例如每1[KB]地将16[KB]的数据剪切为块。这里,16[KB]的数据被剪切为块[0]~块[15]。接着,在RPS编码处理中,将块[0]~块[15]按原样发送。而且,在RPS编码处理中,发送按块[0]~块[15]中的能采取的每个组合进行XOR运算而生成的多个冗余块。
[0067] 图3是表示数据接收时的RPS解码处理例的说明图。在RPS解码处理中,对于经由互联网而接收到的数据,有检查数据是否正常的处理、检查是否有丢失的数据包的处理、除去数据包报头来取出RPS的块的处理等。在图3的例子中,设块[2]数据包丢失而无法接收。鉴于此,在RPS解码处理中,利用块[0][1][3]~[15]和冗余块[0]来再现块[2]。这样,在RPS解码处理中,利用接收到的16个以上块(包括冗余块)来生成原来的16[KB]的数据。
[0068] 另外,在图2以及图3的例子中,示出了16[KB]的数据被分割成各1[KB]的例子,但原来的数据的尺寸、数据的分割方法、冗余块的计算方法并不特别限定。
[0069] 图4是表示用于发送数据的系统构成例的说明图。系统400具有CPU401、主存储装置402、以及扩展板404。CPU401和扩展板404经由PCI EXPRESS总线403连接。具体而言,例如扩展板404连接于在作为设计辅助装置100的服务器设置的扩展插槽。
[0070] 扩展板404具有RAM411、FPGA412、以及LAN连接器413。另外,FPGA412经由开关、路由器与数据接收主机430等其他的服务器等连接,LAN连接器经由LAN、WAN等网络NET与数据接收主机430等其他的服务器等连接。
[0071] 图5是表示FPGA内的块例的说明图。图5所示的FPGA412内的块是表示编码电路101被编程后的内部构成的块例。FPGA412具有PCI EXPRESS端点(end point)501、存储器控制器502、多个BRAM、编码电路101、数据发送缓冲区503、数据包报头追加部504、MAC层部505、以及物理层部506。另外,FPGA412还具有控制各部的电路。
[0072] 存储器控制器502和多个BRAM经由总线连接。存储器控制器502具有控制图4所示的RAM411和多个BRAM的功能,经由PCI EXPRESS端点501受理来自图4所示的CPU401的指示。例如,存储器控制器502将来自RAM411的数据储存到BRAM。PCI EXPRESS端点501与图4所示的PCI EXPRESS总线403和存储器控制器502连接。
[0073] 编码电路101对来自BRAM的数据进行RPS编码。另外,数据发送缓冲区503暂时地储存编码电路101的编码数据。数据包报头追加部504例如将基于UDP(User Datagram Protocol:用户数据报协议)/IP协议的数据包的报头追加到编码数据。MAC层部505例如进行UDP/IP协议之后的处理、与MAC层的协议对应的处理。物理层部506例如对于来自MAC层部505的数字数据进行用于向使用了电、光等的模拟信号介质送出信号的处理。物理层部506与LAN连接器413连接。
[0074] 图6是表示编码电路例的说明图。图7是表示编码电路的部分例的说明图。在图6的例子中,举出对成为对编码电路101-1的输入的数据进行存储的BRAM是16个的情况为例。图6所示的编码电路101-1是与编码处理对应的电路。编码电路101-1具有部分电路601-
1~601-8和部分电路602-1~602-7。
[0075] 如图7所示,部分电路601具有寄存器701、702、AND电路703、704、XOR电路705、以及寄存器706。寄存器701、702暂时地储存来自BRAM的数据。如图7所示,根据某个构成例,BRAM是36[KBit]的RAM,被利用为1个字为72比特且字数为512,能够保持四个1[KB(Byte)]的输入块。另外,AND电路703、704将来自寄存器的信号和0或者1的信号作为输入,向XOR电路输出逻辑积运算结果。作为0或者1的信号,例如被输入编码矩阵内对应的值。XOR电路705将来自2个AND电路703、704的输出信号作为输入,向寄存器706输出运算结果。
[0076] 另外,如图7所示,部分电路602具有XOR电路710和寄存器711。XOR电路710将来自各寄存器706的输出信号作为输入,向寄存器711输出XOR运算的运算结果。寄存器711暂时地储存XOR电路的输出信号。如图6所示,在编码电路101设置有(BRAM的数量/2)个部分电路601,部分电路602设置有直至输出信号为一个的数量。
[0077] 这里,简单地对图4所示的RPS软件部421和图4所示的RPS硬件部422各自的处理进行说明。例如,CPU401所执行的RPS软件部421将想发送的对象数据储存在主存储装置402的传输缓冲区区域。而且,RPS软件部421对RPS硬件部422指示执行。RPS硬件部422包括编码电路101和控制编码电路101的控制电路。
[0078] (1)RPS硬件部422使FPGA412内的DMA电路将传输缓冲区的数据向RAM411传输。(2)RPS硬件部422从RAM411将合计16[KB]的数据各1[KB]地依次写入BRAM0~BRAM15。(3)RPS硬件部422设j=0。然后,(4)RPS硬件部422将后述的编码矩阵的第j列的值输入至编码电路101的AND电路。接着,(5)RPS硬件部422读出BRAM0~15的地址0~1023,并且将被输出的XOR运算后的1[KB]的编码数据传递给数据发送缓冲区503、数据包报头追加部504等后续的处理。然后,(6)RPS硬件部422设j=j+1,反复进行(4)~(6)直至j变得比编码矩阵的列数多为止,如果j比编码矩阵的列数多则返回到(2)。其中,在j达到编码矩阵的列数以前从数据接收主机430收到数据接收完成通知的情况下,由于不需要送出更多的冗余块,所以返回到(2)。虽然在图4中省略,但用于接受数据接收完成通知的电路包含于RPS硬件部422。这样,能够硬件和软件协作来对对象数据进行编码并发送。
[0079] 图8是表示各部分电路的变更例的说明图。部分电路801是设置了对部分电路601所包含的XOR电路所进行的XOR运算的运算结果进行储存的BRAM的例子。在部分电路801中设置有对于部分电路601储存来自XOR电路的输出信号的BRAM,并设置有选择来自寄存器的输出信号和来自BRAM的输出信号并输出的选择电路811。另外,在部分电路801中设置有对是否输出来自选择电路811的信号进行控制的AND电路812。
[0080] 部分电路802是设置了对部分电路602所包含的XOR电路所进行的XOR运算的运算结果进行储存的BRAM的例子。在部分电路802设置有对于部分电路602储存来自XOR电路的输出信号的BRAM,并设置有选择来自寄存器的输出信号和来自BRAM的输出信号并输出的选择电路821。
[0081] 图9是表示编码电路例2的说明图。编码电路101-2是编码电路101-1所包含的各部分电路601被置换成部分电路801的电路。另外,编码电路101-2是编码电路101-1所包含的部分电路602-1~602-6分别被置换成部分电路802-1~802-6的电路。通过这样将XOR电路所进行的XOR运算的中间结果储存到BRAM,来实现吞吐量的提高。
[0082] 另外,这里简单地对解码处理进行说明。解码处理中的、根据接收到的编码块重新构成丢失的块的处理能够利用与编码电路相同的电路。其中,在解码电路的输入部配置的BRAM的数最大,为编码矩阵的列矢量数。另外,输入至解码电路中的AND电路的数据不是编码矩阵的列矢量,而是用于解码的矢量。解码电路在丢失的块数为1~2左右等较少时预先计算解码矢量并储存到存储部。由此,由于解码电路能够如查表那样从存储部获取解码矢量,所以变为高速。解码电路在丢失的块数较多时按照高斯消元等算法动态地计算而求出。由于动态地进行计算,所以花费时间。
[0083] 基于上述内容,对设计辅助装置100所进行的表示编码电路101的电路信息的生成处理详细地进行说明。这里,设计辅助装置100例如为利用者终端装置,但也可以是上述的系统400。
[0084] (设计辅助装置100的硬件构成例)
[0085] 图10是表示实施方式所涉及的设计辅助装置的硬件构成例的框图。在图10中,设计辅助装置100具有CPU(Central Processing Unit:中央处理器)1001、ROM(Read Only Memory:只读存储器)1002、RAM1003、盘驱动器1004、以及盘1005。设计辅助装置100具有I/F(Interface:接口)1006、输入装置1007、以及输出装置1008。另外,各部由总线1000分别连接。
[0086] 这里,CPU1001掌控设计辅助装置100整体的控制。ROM1002存储有引导程序等程序。RAM1003作为CPU1001的工作区域被使用。盘驱动器1004根据CPU1001的控制来控制针对盘1005的数据的读/写。盘1005存储在盘驱动器1004的控制下写入的数据。作为盘1005,可列举出磁盘、光盘等。
[0087] I/F1006通过通信线路与LAN(Local Area Network:局域网)、WAN(Wide Area Network:广域网)、互联网等网络NET连接,并经由该网络NET与其他的装置连接。而且,I/F1006掌控网络NET与内部的接口,控制来自外部装置的数据的输入输出。I/F1006例如能够采用调制解调器、LAN适配器等。
[0088] 输入装置1007是键盘鼠标、触摸面板等通过利用者的操作进行各种数据的输入的接口。另外,输入装置1007也能够从照相机获取图像、动画。另外,输入装置1007也能够从话筒获取声音。输出装置1008是通过CPU1001的指示输出数据的接口。输出装置1008可举出显示器、打印机
[0089] (设计辅助装置100的功能性构成例)
[0090] 图11是表示设计辅助装置的功能性构成例的框图。设计辅助装置100具有控制部1101和存储部1102。存储部1102例如由RAM1003、盘1005等实现。控制部1101的处理例如被编码为存储于CPU1001能够访问的存储装置的设计辅助程序。然后,通过CPU1001从存储装置读出设计辅助程序,并执行被编码为设计辅助程序的处理,来实现控制部1101的处理。另外,控制部1101的处理结果例如被存储于存储部1102。
[0091] 存储部1102中例如存储有表示上述的部分电路601-1~601-8的各个的电路信息作为模板电路信息。另外,存储部1102中储存有后述的模板表达式。
[0092] 首先,控制部1101获取编码矩阵和提前数。作为获取形式,例如既可以通过读出在RAM1003或盘1005等存储装置存储的编码矩阵和提前数来获取,也可以经由输入装置1007等从利用者获取。提前执行是指使第二次的处理与第一次的处理重合。增加重合的量相当于缩短执行开始间隔。提前数表示重合的量。
[0093] 图12是表示编码矩阵例的说明图。编码矩阵ma1的各行与被分割出的各块对应。编码矩阵ma1的各列与进行发送的编码块的顺序对应。列矢量表示对哪个块进行XOR运算。具体而言,由于在RPS编码处理中,首先将各块按原样输出,所以编码矩阵ma1中的从第0到第15列,各行的值依次为1。由此,从第0个到第15个,16[KB]的数据被分割了的块[0]~块[15]被依次发送。
[0094] 接着,对于编码矩阵ma1中第16列以后设定了能够创建冗余数据的信息。例如,由于对图12所示的第16列而言,各分量全部为1,所以第16个被发送的块成为对于从BRAM0到BRAM15的数据按每个字进行了XOR运算的数据。被第17个发送的块例如成为对于BRAM0、2、4、6、8、10、12、14的数据按每个字进行了XOR运算的数据。在图12的例子中,为了简化说明,将编码矩阵ma1的尺寸设为16行30列,但并不特别限定。
[0095] 图13是表示提前数为0的情况下的访问定时例的说明图(其1)。以后的访问定时图用“#”表示被多个XOR电路参照的块与储存被输入的块的BRAM0~15的对应关系。在提前数为0的情况下,上述的编码电路101被直接利用。
[0096] 图14是表示提前数为0的情况下的访问定时例的说明图(其2)。在被输出了块29之后,新的16[KB]的数据被写入BRAM0~15。编码电路101在计算关于冗余数据的块的过程中,无法进行输入块对BRAM0~15的供给。因此,若提前数是0则吞吐量降低,但通过增多提前数,吞吐量会提高。
[0097] 图15是表示在提前了输入块供给的情况下被覆盖数据的BRAM的分布例的说明图。在图15的例子中,由于在提早1个周期~16个周期的情况下都同样地利用在各块的创建中设置有“#”的BRAM的数据,所以存在关于各块的创建的编码处理不被正常进行的情况。
[0098] 鉴于此,控制部1101生成表示如上述的部分电路801、部分电路802那样设置了BRAM的编码电路101的电路信息,以便即使进行提前,编码处理也被正常地进行。
[0099] 具体而言,控制部1101基于提前数来确定由于提前而被消除的数据和被消除的定时的组合。该组合能够由第i行j列表示。例如,控制部1101也可以通过基于提前数对于访问定时图的各数据的位置中的由于提前而被消除的数据的位置进行上色,来确定组合。然后,控制部1101对于确定出的各个组合,判断编码矩阵ma1中的、与确定出的组合对应的分量是否是1。
[0100] 在确定出的组合中没有与组合对应的分量是1的组合的情况下,控制部1101判断为能够由编码电路101-1进行编码处理。另一方面,在确定出的组合中没有与组合对应的分量是1的组合的情况下,控制部1101判断为无法由编码电路101-1进行编码处理。
[0101] 图16是表示提前数为1的情况下的访问定时例的说明图。在提前数是1的情况下,使输入块对BRAM0~15的供给提早1个周期。该情况下,在与列矢量29对应的定时,BRAM0的数据由于覆盖而被消除。在图16的例子中,由于在编码块29的创建中不对于BRAM0的数据进行XOR运算,所以编码处理被编码电路101-1正常地进行。控制部1101在提前数为1的情况下判定为能够不变更编码电路101-1地进行提前。
[0102] 图17是表示提前数为2的情况下的访问定时例的说明图。在提前数为2的情况下,使输入块对BRAM0~15的供给提早2个周期。在提前数为2的情况下,在与列矢量28对应的定时,BRAM0的数据由于覆盖而被消除,由于利用了BRAM0的数据,所以编码处理不被编码电路101-1正常地进行。另外,在提前数为2的情况下,在与列矢量29对应的定时,BRAM0以及BRAM1的各数据由于覆盖而被消除,但因为BRAM0以及BRAM1的各数据不被利用,所以编码处理被编码电路101-1正常地进行。因此,控制部1101在提前数为2的情况下判定为无法不变更编码电路101-1地进行提前。
[0103] 其中,在图17的例子中,与编码块28的创建时同样地在编码块0的创建时进行利用了BRAM0的数据的XOR运算。因此,通过利用了BRAM0的数据的XOR运算的运算结果被储存,能够在编码块28的创建时沿用该运算结果。
[0104] 图18是表示提前数为3的情况下的访问定时例的说明图。在提前数为3的情况下,使输入块对BRAM0~15的供给提早3个周期。在提前数为3的情况下,在与列矢量27对应的定时,BRAM0的数据由于覆盖而被消除,但因为不利用BRAM0的数据,所以编码处理被编码电路101-1正常地进行。另外,在提前数为3的情况下,在与列矢量28对应的定时,BRAM0以及BRAM1的各数据由于覆盖而被消除,因为利用BRAM0的数据,所以编码处理不被编码电路
101-1正常地进行。另外,在提前数为3的情况下,在与列矢量29对应的定时,BRAM0到BRAM2的各数据由于覆盖而被消除。因为不利用BRAM0到BRAM2的各数据,所以编码处理被编码电路101-1正常地进行。因此,控制部1101在提前数为2的情况下判定为无法不变更编码电路
101-1地进行提前。
[0105] 其中,在图18的例子中,和与列矢量28对应的定时同样地在与列矢量0对应的定时进行利用了BRAM0的数据的XOR运算。因此,由于在与列矢量0对应的定时利用了BRAM0的数据的XOR运算的运算结果被储存,所以能够在与列矢量28对应的定时沿用该运算结果。
[0106] 图19是表示提前数为4的情况下的访问定时例的说明图。在提前数为4的情况下,使输入块对BRAM0~15的供给提早4个周期。在提前数为4的情况下,在与列矢量26对应的定时,BRAM0的数据由于覆盖而被消除,因为利用BRAM0的数据,所以编码处理不被编码电路101-1正常地进行。另外,在提前数为4的情况下,在与列矢量27对应的定时,BRAM0以及BRAM1的各数据由于覆盖而被消除,但因为不利用BRAM0的数据,所以编码处理被编码电路
101-1正常地进行。另外,在提前数为4的情况下,在与列矢量28对应的定时,BRAM0到BRAM2的各数据被覆盖而消除,因为利用BRAM1的数据,所以编码处理不被编码电路101-1正常地进行。另外,在提前数为4的情况下,在与列矢量29对应的定时,BRAM0到BRAM3的各数据由于覆盖而被消除,因为利用BRAM3的数据,所以编码处理不被编码电路101-1正常地进行。因此,控制部1101在提前数为4的情况下判定为无法不变更编码电路101-1地进行提前。
[0107] 其中,在图19的例子中,和与列矢量26对应的定时同样地在与列矢量16对应的定时进行利用了BRAM0到BRAM3的各数据的XOR运算。由于在与列矢量16对应的定时利用了BRAM0到BRAM3的各数据的XOR运算的运算结果被储存,所以能够在与列矢量26对应的定时沿用该运算结果。另外,在图19的例子中,和与列矢量28对应的定时同样地在与列矢量0对应的定时进行利用了BRAM0的数据的XOR运算。因此,由于利用了BRAM0的数据的XOR运算的运算结果被储存,所以能够在与列矢量28对应的定时沿用该运算结果。另外,在图19的例子中,和与列矢量29对应的定时同样地在与列矢量3对应的定时进行利用了BRAM3的数据的XOR运算。由于在与列矢量3对应的定时利用了BRAM3的数据的XOR运算的运算结果被储存,所以能够在与列矢量29对应的定时沿用该运算结果。
[0108] 图20是表示提前数为5的情况下的访问定时例的说明图。在提前数为5的情况下,使输入块对BRAM0~15的供给提早5个周期。在提前数为5的情况下,在与列矢量25对应的定时,BRAM0的数据由于覆盖而被消除,但因为不利用BRAM0的数据,所以编码处理被编码电路101-1正常地进行。另外,在提前数为5的情况下,在与列矢量26对应的定时,BRAM0的数据以及BRAM1的各数据由于覆盖而被消除,因为利用BRAM0以及BRAM1的数据,所以编码处理不被编码电路101-1正常地进行。
[0109] 另外,在提前数为5的情况下,在与列矢量27对应的定时,BRAM0到BRAM2的各数据由于覆盖而被消除,但因为不利用BRAM0到BRAM2的数据,所以编码处理不被编码电路101-1正常地进行。另外,在提前数为5的情况下,在与列矢量28对应的定时,BRAM0到BRAM3的各数据由于覆盖而被消除,因为利用BRAM0的数据,所以编码处理不被编码电路101-1正常地进行。
[0110] 另外,在提前数为5的情况下,在与列矢量29对应的定时,BRAM0到BRAM4的各数据由于覆盖而被消除。而且,因为利用BRAM3以及BRAM4的数据,所以编码处理不被编码电路101-1正常地进行。因此,控制部1101在提前数为5的情况下判定为无法不变更编码电路
101-1地进行提前。
[0111] 其中,在图20的例子中,和与列矢量26对应的定时同样地在与列矢量16对应的定时进行利用了BRAM0到BRAM3的各数据的XOR运算。由于在与列矢量16对应的定时利用了BRAM0到BRAM3的各数据的XOR运算的运算结果被储存,所以能够在与列矢量26对应的定时沿用该运算结果。
[0112] 另外,在图20的例子中,和与列矢量28对应的定时同样地在与列矢量0对应的定时进行利用了BRAM0的数据的XOR运算。因此,由于利用了BRAM0的数据的XOR运算的运算结果被储存,所以能够在与列矢量28对应的定时沿用该运算结果。另外,在图20的例子中,和与列矢量29对应的定时同样地在与列矢量3对应的定时进行利用了BRAM3的数据的XOR运算。另外,和与列矢量29对应的定时同样地在与列矢量4对应的定时进行利用了BRAM4的数据的XOR运算。
[0113] 鉴于此,在与列矢量3对应的定时利用了BRAM3的数据的XOR运算的运算结果被储存。另外,在与列矢量4对应的定时利用了BRAM4的数据的XOR运算的运算结果被储存。由此,能够在与列矢量29对应的定时沿用各运算结果。
[0114] 图21是表示提前数为6的情况下的访问定时例的说明图。在提前数为6的情况下,使输入块对BRAM0~15的供给提早6个周期。在提前数为6的情况下,在与列矢量24对应的定时,BRAM0的数据由于覆盖而被消除,因为参照BRAM0的数据,所以编码处理不被编码电路101-1正常地进行。另外,在提前数为6的情况下,在与列矢量25对应的定时,BRAM0以及BRAM1的各数据由于覆盖而被消除。但是,因为不利用BRAM0以及BRAM1的各数据,所以编码处理被编码电路101-1正常地进行。另外,在提前数为6的情况下,在与列矢量26对应的定时,BRAM0到BRAM2的各数据由于覆盖而被消除,因为利用BRAM0到BRAM2的各数据,所以编码处理不被编码电路101-1正常地进行。
[0115] 另外,在提前数为6的情况下,在与列矢量27对应的定时,BRAM0到BRAM3的各数据由于覆盖而被消除,因为利用BRAM3的数据,所以编码处理不被编码电路101-1正常地进行。另外,在提前数为6的情况下,在与列矢量28对应的定时,BRAM0到BRAM4的各数据由于覆盖而被消除,因为利用BRAM0的数据,所以编码处理不被编码电路101-1正常地进行。另外,在提前数为6的情况下,在与列矢量29对应的定时,BRAM0到BRAM5的各数据由于覆盖而被消除。而且,因为利用BRAM3以及BRAM4的各数据,所以编码处理不被编码电路101-1正常地进行。因此,控制部1101判定为在提前数为6的情况下无法不变更编码电路101-1地进行提前。
[0116] 但是,在图21的例子中,和与列矢量24对应的定时同样地在与列矢量0对应的定时进行利用了BRAM0的数据的XOR运算。由于在与列矢量0对应的定时利用了BRAM0的数据的XOR运算的运算结果被储存,所以能够在与列矢量24对应的定时沿用该运算结果。
[0117] 另外,在图21的例子中,和与列矢量26对应的定时同样地在与列矢量16对应的定时进行利用了BRAM0到BRAM3的各数据的XOR运算。由于在与列矢量16对应的定时利用了BRAM0到BRAM3的各数据的XOR运算的运算结果被储存,所以能够在与列矢量26对应的定时沿用该运算结果。
[0118] 另外,在图21的例子中,和与列矢量28对应的定时同样地在与列矢量0对应的定时进行利用了BRAM0的数据的XOR运算。因此,由于利用了BRAM0的数据的XOR运算的运算结果被储存,所以能够在与列矢量28对应的定时沿用该运算结果。另外,在图21的例子中,和与列矢量29对应的定时同样地在与列矢量3对应的定时进行利用了BRAM3的数据的XOR运算。另外,和与列矢量29对应的定时同样地在与列矢量4对应的定时进行利用了BRAM4的数据的XOR运算。
[0119] 鉴于此,预先储存在与列矢量3对应的定时利用了BRAM3的数据的XOR运算的运算结果。而且,预先储存在与列矢量4对应的定时利用了BRAM4的数据的XOR运算的运算结果。由此,能够在与列矢量29对应的定时沿用各运算结果。
[0120] 图22是表示提前数为7的情况下的访问定时例的说明图。在提前数为7的情况下,使输入块对BRAM0~15的供给提早7个周期。在提前数为7的情况下,在与列矢量23对应的定时,BRAM0的数据由于覆盖而被消除,但因为不利用BRAM0的数据,所以编码处理被编码电路101-1正常地进行。另外,在提前数为7的情况下,在与列矢量24对应的定时,BRAM0以及BRAM1的各数据由于覆盖而被消除,因为利用BRAM0的数据,所以编码处理不被编码电路
101-1正常地进行。另外,在提前数为7的情况下,在与列矢量25对应的定时,BRAM0到BRAM2的各数据由于覆盖而被消除。而且,因为利用BRAM2以及BRAM3的各数据,所以编码处理不被编码电路101-1正常地进行。另外,在提前数为7的情况下,在与列矢量26对应的定时,BRAM0到BRAM3的各数据由于覆盖而被消除,因为利用BRAM0到BRAM3的各数据,所以编码处理不被编码电路101-1正常地进行。
[0121] 另外,在提前数为7的情况下,在与列矢量27对应的定时,BRAM0到BRAM4的各数据由于覆盖而被消除,因为利用BRAM3的数据,所以编码处理不被编码电路101-1正常地进行。另外,在提前数为7的情况下,在与列矢量28对应的定时,BRAM0到BRAM5的各数据由于覆盖而被消除,因为利用BRAM0的数据,所以编码处理不被编码电路101-1正常地进行。另外,在提前数为7的情况下,在与列矢量29对应的定时,BRAM0到BRAM6的各数据由于覆盖而被消除。而且,因为利用BRAM3、BRAM4以及BRAM6的各数据,所以编码处理不被编码电路101-1正常地进行。因此,控制部1101判定为在提前数为7的情况下无法不变更编码电路101-1地进行提前。
[0122] 其中,在图22的例子中,和与列矢量24对应的定时同样地在与列矢量0对应的定时进行利用了BRAM0的数据的XOR运算。由于在与列矢量0对应的定时,利用了BRAM0的数据的XOR运算的运算结果被储存,所以能够在与列矢量24对应的定时沿用该运算结果。
[0123] 另外,在图22的例子中,和与列矢量25对应的定时同样地在与列矢量16对应的定时进行利用了BRAM2以及BRAM3的各数据的XOR运算。在与列矢量16对应的定时,利用了BRAM2以及BRAM3的各数据的XOR运算的运算结果被储存。由此,能够在与列矢量25对应的定时沿用该运算结果。然而,虽然理由将在后面描述,但在由图9的电路中所配置的BRAM决定的性质上,不一定能够沿用。
[0124] 另外,在图22的例子中,和与列矢量26对应的定时同样地在与列矢量16对应的定时进行利用了BRAM0到BRAM3的各数据的XOR运算。由于在与列矢量16对应的定时利用了BRAM0到BRAM3的各数据的XOR运算的运算结果被储存,所以能够在与列矢量26对应的定时沿用该运算结果。
[0125] 另外,在图22的例子中,和与列矢量27对应的定时同样地在与列矢量3对应的定时进行利用了BRAM3的数据的XOR运算。由于在与列矢量3对应的定时利用了BRAM3的数据的XOR运算的运算结果被储存,所以能够在与列矢量27对应的定时沿用该运算结果。
[0126] 另外,在图22的例子中,和与列矢量28对应的定时同样地在与列矢量0对应的定时进行利用了BRAM0的数据的XOR运算。因此,由于利用了BRAM0的数据的XOR运算的运算结果被储存,所以能够在与列矢量28对应的定时沿用该运算结果。
[0127] 另外,在图22的例子中,和与列矢量29对应的定时同样地在与列矢量3对应的定时进行利用了BRAM3的数据的XOR运算。并且,和与列矢量29对应的定时同样地在与列矢量4对应的定时进行利用了BRAM4的数据的XOR运算。另外,和与列矢量29对应的定时同样地在与列矢量6对应的定时进行仅BRAM6的数据的XOR运算。在与列矢量3对应的定时利用了BRAM3的数据的XOR运算的运算结果、以及在与列矢量4对应的定时利用了BRAM4的数据的XOR运算的运算结果被储存。由此,能够在与列矢量29对应的定时沿用该运算结果。
[0128] 其中,在与列矢量3对应的定时使“(BRAM2的数据&列矢量[2])XOR(BRAM3的数据&列矢量[3])”的运算结果储存到BRAM。之后,若在与列矢量16对应的定时使该运算结果储存,则导致与列矢量3对应的定时中的运算结果被覆盖。因此,控制部1101判定为在图22的提前数为7的情况下无法提前执行。
[0129] 如使用图16~图22所说明那样,即使是无法原样沿用编码电路101-1的情况,也存在将某一个XOR运算的运算结果预先储存于BRAM,由此能够提前执行的情况。例如,图23示出提前数为2或者3的情况下的编码电路101例子,图24示出提前数为4的情况下的编码电路101例子。
[0130] 图23是表示提前数为2或者3的情况下的编码电路101例子的说明图。编码电路101-3是编码电路101-1中的部分电路601-1被置换成部分电路801-1的电路。在提前数为2或者3的情况下,在编码电路101-3中,在与列矢量0对应的定时,“(BRAM0的数据&列矢量0)XOR(BRAM1的数据&列矢量1)”的运算结果被储存于BRAM。另外,在编码电路101-3中,在与列矢量28对应的定时,储存于BRAM的运算结果被选择电路选择而输出到后段。
[0131] 图24是表示提前数为4的情况下的编码电路101例子的说明图。编码电路101-4是编码电路101-1中的部分电路601-1被置换成部分电路801-1、部分电路601-2被置换成部分电路801-2、部分电路602-1被置换成部分电路802-1的电路。
[0132] 在提前数为4的情况下,在编码电路101-4中,在与列矢量0对应的定时,“(BRAM0的数据&列矢量[0])XOR(BRAM1的数据&列矢量[1])”的运算结果被储存于BRAM。另外,在编码电路101-4中,在与列矢量3对应的定时,“(BRAM2的数据&列矢量[2])XOR(BRAM3的数据&列矢量[3])”的运算结果被储存于BRAM。另外,在编码电路101-4中,在与列矢量16对应的定时,“{(BRAM0的数据&列矢量[0])XOR(BRAM1的数据&列矢量[1])}XOR{(BRAM2的数据&列矢量[2])XOR(BRAM3的数据&列矢量[3])}的运算结果被储存于BRAM。
[0133] 接着,详细地对追加的BRAM的位置的决定方法进行说明。具体而言,控制部1101决定将编码电路101-1所包含的部分电路601和部分电路602中的哪一个置换成部分电路801或者部分电路802。
[0134] 图25是表示BRAM的位置例的说明图。根据编码电路101-2,由于利用BRAM保持XOR运算的运算结果,所以能够将图25所示那样的位置的运算结果保存到BRAM。
[0135] 如图25的<可保存/不能保存的例子>所示,举出在(BRAM0的数据)XOR(BRAM1的数据)的输出位置设置的BRAM为例。例如,在决定为使该BRAM储存(BRAM0的数据)XOR(BRAM1的数据)的运算结果的情况下,无法储存BRAM0的数据或者BRAM1的各数据。但是,如果利用在{(BRAM0的数据)XOR(BRAM1的数据)}XOR{(BRAM2的数据)XOR(BRAM3的数据)}的输出位置设置的BRAM,则能够储存BRAM0的数据。另外,因为能够使用所储存的数据进行XOR运算,所以实际能够保存的数据的组合有多个。
[0136] 图26是表示模板逻辑式例子的说明图。首先,控制部1101获取模板逻辑式2600。在图26所示的模板逻辑式2600中,举出输入块是16块的情况为例。换言之,举出编码矩阵ma1是16行的情况为例。
[0137] 图27是表示变量与BRAM的位置的对应关系的说明图。例如,模板逻辑式2600所包含的变量a0~a7分别表示能够储存从储存输入块的BRAM起最前段的XOR电路的输出结果的BRAM储存哪个数据。例如,变量a0表示保持BRAM0的数据与BRAM1的数据的XOR运算的运算结果的BRAM储存哪个数据。例如,模板逻辑式2600所包含的变量b0~b3分别表示能够储存从储存输入块的BRAM起第二段的XOR电路的输出结果的BRAM储存哪个数据。例如,变量b0表示保持BRAM0的数据与BRAM1的数据的XOR运算的运算结果、和BRAM2的数据与BRAM3的数据的XOR运算的运算结果、的XOR运算的运算结果的BRAM储存哪个数据。例如,模板逻辑式2600所包含的变量c0~c1分别表示能够储存从储存输入块的BRAM起第3段的XOR电路的输出结果的BRAM储存哪个数据。例如,变量c0表示保持BRAM0的数据到BRAM3的数据的XOR运算的运算结果、与BRAM4的数据到BRAM7的数据的XOR运算的运算结果、的XOR运算的运算结果的BRAM储存哪个数据。将变量a、变量b、以及变量c能够取的值的范围表示如下。
[0138] 0≤an(n=0~7)≤(2^2)-1=3
[0139] 0≤bm(m=0~3)≤(2^4)-1=15
[0140] 0≤cl(l=0~1)≤(2^8)-1=255
[0141] ^表示幂乘运算符。其中,若举出b0为例,则对于b0=7或b0=9等值而言,因为实际上在编码电路101-1中不计算,所以无法取得。另外,例如a0=3表示(BRAM0的数据)XOR(BRAM1的数据)的运算结果被储存于BRAM。例如,a0=2表示(BRAM0的数据&0)XOR(BRAM1的数据&1)的运算结果被储存于BRAM。例如,a0=1表示(BRAM0的数据&1)XOR(BRAM1的数据&0)的运算结果被储存于BRAM。
[0142] 控制部1101基于获取到的模板逻辑式2600对于编码矩阵ma1中的被输入的块数以后的各个列求出逻辑式。这里,控制部1101对于列16~列29的各个求出逻辑式。具体而言,控制部1101对于变量所对应的行、BRAMx~BRAMy,在上述的各访问定时图中,将标注有“#”的位置作为1来进行二进制编码。二进制编码后的数值是其变量能够取的值的集合的要素。若举出变量b0为例,则控制部1101对于变量b0所对应的行、BRAM0~BRAM3,将标注有“#”的位置作为1来进行二进制编码。BRAM0是最下位比特,BRAM3与最高位比特对应。例如,第0列是0001,第一列是0010,第二列是0100,第3列是1000,第4列到第15列是0000,第16、19、20、
26列是1111,第17列是0101,第18列是0011。变量b0能够取的值是{0001,0010,0100,1000,
0000,1111,0101,0011,…}。若用10进制数记载,则{1,2,4,8,0,15,5,3,…}是变量b0能取的值的集合。
[0143] 这里,例如,控制部1101对第29列求出逻辑式。
[0144] ·对于c0而言,01011000(2进制数)=88(10进制数)。
[0145] ·对于b0而言,1000(2进制数)=8(10进制数)。
[0146] ·对于b1而言,0101(2进制数)=5(10进制数)。
[0147] ·对于a0而言,00(2进制数)=0(10进制数)。
[0148] ·对于a1而言,10(2进制数)=2(10进制数)。
[0149] ·对于a2而言,01(2进制数)=1(10进制数)。
[0150] ·对于a3~a7而言,是0。
[0151] 若控制部1101将上述代入模板逻辑式2600,则如以下那样。
[0152] ((c0=88)|(((b0=8)|(a0=0)&(a1=2))&((b1=5)|(a2=1)&(a3=0))))&((c1=0)|(((b2=0)|(a4=0)&(a5=0))&((b3=0)|(a6=0)&(a7=0))))
[0153] 将变量=0这一程式的项始终作为是“TRUE(真)”,能够简化逻辑式。若简化逻辑式则如以下那样。
[0154] ((c0=88)|(((b0=8)|TRUE&(a1=2))&((b1=5)|(a2=1)&TRUE)))&(TRUE|((TRUE|TRUE&TRUE)&(TRUE|TRUE&TRUE)))
[0155] 若进一步简化公式,则如以下那样。
[0156] ((c0=88)|(((b0=8)|(a1=2))&((b1=5)|(a2=1)&TRUE)))&(TRUE|((TRUE|TRUE&TRUE)))
[0157] 若进一步简化公式,则如以下那样。
[0158] (c0=88)|(((b0=8)|(a1=2))&((b1=5)|(a2=1)))···逻辑式29
[0159] 这样,控制部1101对列29求出逻辑式29。
[0160] 该逻辑式29示出在生成编码块29时,为了补偿由于覆盖而输入块被消除的BRAM3和BRAM4的数据而能够利用哪个BRAM。
[0161] 逻辑式29为TRUE例如是c0=88时,若利用2进制法记载88则为01011000,是指只要借助以2进制法记载c0时成为1的位置来保存(BRAM6的数据)XOR(BRAM4的数据)XOR(BRAM3的数据)的值即可。
[0162] 例如,控制部1101对于第28列如以下那样得到逻辑式28。
[0163] (c0=129)|(((b0=1)|(a0=1)&(a1=0))&((b1=8)|(a2=0)&(a3=0)))
[0164] 通过简化而成为以下。
[0165] (c0=129)|(((b0=1)|(a0=1)&(a1=0))&((b1=8)|TRUE))
[0166] 进一步简化而得到以下逻辑式28。
[0167] (c0=129)|(b0=1)|(a0=1)···逻辑式28
[0168] 例如,控制部1101对于第27列如以下那样得到逻辑式27。
[0169] (c0=232)|(((b0=8)|(a0=0)&(a1=2))&((b1=0)|(a2=0)&(a3=0)))
[0170] 通过简化而成为以下。
[0171] (c0=232)|(((b0=8)|TRUE&(a1=2))&(TRUE|TRUE))
[0172] 进一步简化而得到以下逻辑式27。
[0173] (c0=232)|(b0=8)|(a1=2)···逻辑式27
[0174] 例如,控制部1101对于第26列如以下那样得到逻辑式26。
[0175] (c0=223)|(((b0=15)|(a0=3)&(a1=3))&((b1=0)|(a2=0)&(a3=0)))[0176] 进一步简化而得到以下逻辑式26。
[0177] (c0=223)|(b0=15)|(a0=3)&(a1=3)···逻辑式26
[0178] 例如,控制部1101对于第25列如以下那样得到逻辑式25。
[0179] ((c0=0)|(((b0=12)|(a0=0)&(a1=0))&((b1=0)|(a2=0)&(a3=0))))···逻辑式25
[0180] 例如,控制部1101对于第24列如以下那样得到逻辑式24。
[0181] ((c0=181)|(((b0=5)|(a0=1)&(a1=0))&((b1=0)|(a2=0)&(a3=0))))[0182] 进一步简化而得到以下逻辑式24。
[0183] (c0=181)|(b0=5)|(a0=1)···逻辑式24
[0184] 例如,针对第23列变得如以下那样。
[0185] TRUE···逻辑式23
[0186] 接着,控制部1101创建取了关于各列的全部逻辑式的AND而得到的逻辑式X。
[0187] X=(逻辑式29)AND(逻辑式28)AND(逻辑式27)AND…
[0188] X=((c0=88)|(((b0=8)|(a1=2))&((b1=5)|(a2=1))))&
[0189] ((c0=129)|(b0=1)|(a0=1))&
[0190] ((c0=232)|(b0=8)|(a1=2))&
[0191] ((c0=223)|(b0=15)|(a0=3)&(a1=3))&
[0192] ((c0=181)|(b0=5)|(a0=1))
[0193] 控制部1101以使创建成的逻辑式X为TRUE的方式求出对a0、…、a7、b0、…b4、c0、c1的整数值的分配。求出的解成为BRAM的分配问题的解。值为零的分配越多则能够使被追加的BRAM的数量越降低。BRAM的分配问题例如即使使用被称为SAT求解器的软件也能够高效地解出(例如,“The MiniSat Page,[online],[平成25年12月6日检索],互联网<http://minisat.se/>”)。另外,例如也可以如以下图28所示那样,控制部1101循环地进行计算。
[0194] 图28是表示求解BRAM的分配问题的程序例的说明图。例如,若CPU1001执行图28所示的程序2800,则得到以下那样的结果。程序2800是设计辅助程序的一部分。
[0195]
[0196] 例如,如果控制部1101利用“a0=1a1=2a2=1b0=15”这一解,则生成对进行以下的动作的编码电路101进行表示的电路信息。
[0197] ·在编码电路101中,在变量a0所示的位置的BRAM储存BRAM0的数据(=(BRAM0的数据&1)XOR(BRAM1的数据&0))。
[0198] ·在编码电路101中,在变量a1所示的位置的BRAM储存BRAM3的数据。
[0199] ·在编码电路101中,在变量a2所示的位置的BRAM储存BRAM4的数据。
[0200] ·在编码电路101中,在变量b0所示的位置的BRAM储存(BRAM0的数据)XOR(BRAM1的数据)XOR(BRAM2的数据)XOR(BRAM3的数据)。
[0201] 接着,控制部1101对于得到的解,分别确定变量所示的位置的BRAM储存数据的定时。控制部1101决定与因提前执行而块被覆盖以前的列矢量0~23对应的定时中的、保存数据的定时。
[0202] 例如,在提前数为4的情况下,a0=1是与列矢量0和列矢量17的各个对应的定时。换言之,表示在与列矢量0和列矢量17的各个对应的定时,储存(BRAM0的数据)XOR(BRAM1的数据)的运算结果。在有多个定时的情况下,控制部1101也可以选择任意一个。
[0203] 另外,读出各变量所示的位置的BRAM的数据的定时是输入块被覆盖的期间内。例如,读出a0=1的定时表示在与列矢量24对应的定时、和与列矢量28对应的定时中读出。另外,例如读出a1=2的定时表示在与列矢量27对应的定时和与列矢量29对应的定时中读出。
[0204] 另外,例如读出a2=1的定时表示在与列矢量29对应的定时中读出。另外,例如读出b0=15的定时表示在与列矢量26对应的定时中读出。
[0205] 这里,对于提前数为4的情况,将变量、储存定时、以及读出定时的定时决定结果表示如下。
[0206]
[0207] 控制部1101基于上述所得的变量所示的位置的BRAM、储存于BRAM的数据、以及各定时,生成表示编码电路101的电路信息。具体而言,控制部1101生成对在变量设定有值的情况下,设置了部分电路801或者部分电路802,在变量未设定有值的情况下,在变量所示的位置设置了部分电路601或者部分电路602的编码电路101进行表示的电路信息。
[0208] 接着,控制部1101生成对生成控制信号的控制电路进行表示的电路信息。控制电路在储存定时时使写入使能信号有效,向BRAM写入数据。另外,控制电路在储存定时以外的定时,使写入使能信号无效,不进行对BRAM的写入。
[0209] 另外,控制电路在读出定时之际,使读出选择信号有效,从BRAM读出数据。另外,控制电路在读出定时以外的定时,使读出选择信号无效,输出来自XOR电路的值。
[0210] 控制部1101能够基于上述的定时决定结果来自动生成由Verilog-HDL等硬件描述语言描述的电路描述。另外,控制部1101通过将所得到的电路描述赋予给逻辑合成工具,来得到表示控制电路的电路信息。
[0211] 图29是表示所生成的电路描述例的说明图。电路描述2900中详细地描述了从控制电路输出的写入使能信号和读出选择信号的值的决定方法、以及块编号计数器的动作。
[0212] 图30是表示编码电路101和控制编码电路101的控制电路的说明图。这里,简单地对从控制电路3000向编码电路101-4输入的各信号和控制电路3000所包含的块进行说明。地址1供给对储存被输入的块的BRAM写入新的块,或者从该BRAM读出数据时的地址值。块编号计数器是若1个块量的编码处理结束则将块编号自加1的计数器,与列矢量的编号对应。
[0213] 地址2供给对储存XOR运算的运算结果的BRAM写入数据、或者读出时的地址值。地址2的值与地址1的计数器同步地变化。值延迟编码电路101-4内的寄存器的级数地不断变化。
[0214] 写入使能2是值与块编号计数器同步地变化,且仅在对储存XOR运算的运算结果的BRAM储存块时有效的控制信号。读出选择是选择电路的控制信号,是仅在对储存XOR运算的运算结果的BRAM储存块的储存定时时有效的控制信号。读出选择的值与块编号计数器同步地变化。
[0215] 另外,读出选择是被输入至AND电路的一个输入端的控制信号,且是用于强制地使输出为0的信号。另外,读出选择在BRAM0的数据和BRAM1的数据的任意一方或两方的值因覆盖而失去时,当想将BRAM0的数据和BRAM1的数据作为0进行XOR运算时被利用,在上述例子中不使用。
[0216] 图31是表示图30所示的电路的动作例的说明图。如图31所示,在块编号计数器的值为0的情况下,写入使能2_a0为1。另外,在块编号计数器的值为3的情况下,写入使能2_a1为1。另外,在块编号计数器的值为24的情况下,读出选择_a0为1。
[0217] 图32是表示提前执行处理例的说明图。在提前执行处理的执行期间中,被输出的编码数据为2倍。对于定时T1,在第一次的处理中,输出与列矢量24对应的定时中的XOR运算的运算结果,在第二次的处理中,输出与列矢量0对应的定时中的XOR运算的运算结果。另外,对于定时T2,在第一次的处理中,输出与列矢量29对应的定时中的XOR运算的运算结果,在第二次的处理中,输出与列矢量5对应的定时中的XOR运算的运算结果。
[0218] 图33是表示用于进行提前执行处理的电路构成例的说明图。在图33中,举出提前数为4的情况为例。RPS硬件部422具有电路3201和编码电路101-4、以及电路3202。电路3201在提前执行期间中,将从开头数N块量的输入块直接作为输出数据流出。电路3202接受两个系统的编码块,按顺序流至下一阶段的处理。
[0219] 控制部1101在获取了编码矩阵ma1之后,能够通过更换列矢量,来使BRAM的数减少。此外,即使更换编码矩阵ma1的列矢量,RPS编码处理的修正能也相同。更换列矢量与更换数据包的发送顺序相等。在接收数据包的受诊侧中,因为最终接受的数据包相同,所以修正能力也相同。但是,存在到能够校正为止的时间不同的情况。例如,在原来的编码矩阵中接收到第17个编码数据时能够校正的情况下,在列矢量17移动至列矢量29之后的编码矩阵中,当接收了第29个时进行校正。
[0220] 图34是表示编码矩阵的列矢量更换例的说明图。例如,控制部1101对于编码矩阵ma1中的第(输入块数)列以后的各个列矢量,对从开头行起0依次连续排列的数量进行计数。然后,控制部1101基于编码矩阵ma1,生成按计数结果的升序排序了的编码矩阵ma2。在图34的例子中,列矢量21以后顺序被变更。
[0221] 图35是表示因列矢量更换引起的BRAM的使用数量的变化例的说明图。例如,在更换前的编码矩阵ma1中,在提前数为3的情况下,被追加的BRAM是一个,在提前数为5的情况下,被追加的BRAM是四个。与此相对,在更换后的编码矩阵ma2中,在提前数为3的情况下,没有被追加的BRAM,在提前数为5的情况下,被追加的BRAM是三个。这样,通过更换列矢量,能够实现被追加的BRAM的数量的减少。
[0222] (设计辅助装置100所进行的设计辅助处理顺序例)
[0223] 图36以及图37是表示设计辅助装置所进行的设计辅助处理顺序例的流程图。首先,设计辅助装置100获取编码矩阵和提前数(步骤S3601)。设计辅助装置100按编码矩阵中的第(输入块数)列以后的每个列矢量对从开头分量起0依次连续排列的数量进行计数(步骤S3602)。设计辅助装置100按计数结果的升序来排序编码矩阵中的第(输入块数)列以后的列矢量(步骤S3603)。
[0224] 接着,设计辅助装置100对于基于提前数进行消除的各个定时,确定被消除的块(步骤S3604)。然后,设计辅助装置100判定对于进行消除的定时确定出的被消除的块中是否有与进行消除的定时和被消除的块对应的列矢量的分量是1的块(步骤S3605)。在判断为没有分量是1的块的情况下(步骤S3605:否),设计辅助装置100输出能够不变更编码电路地进行利用的主旨(步骤S3606),结束一系列的处理。
[0225] 另一方面,在判断为有分量是1的块的情况下(步骤S3605:是),设计辅助装置100获取模板逻辑式(步骤S3701)。设计辅助装置100按每个列矢量生成逻辑式(步骤S3702)。设计辅助装置100生成进行所生成的各逻辑式的逻辑积运算的逻辑式X(步骤S3703)。然后,设计辅助装置100求出逻辑式X的各变量的值(步骤S3704)。接着,设计辅助装置100确定使逻辑式X为TRUE的变量的值的组合(步骤S3705)。
[0226] 设计辅助装置100确定与基于确定出的组合的列矢量对应的定时(步骤S3706)。设计辅助装置100基于确定出的组合和确定出的定时生成表示编码电路和控制电路的电路信息(步骤S3707),结束一系列的处理。
[0227] 另外,通过利用FPGA的特征,能够不追加硬件资源地提高编码处理的处理速度。被埋入FPGA内的BRAM限定了能够配置的模式。例如,在XILINX公司的7系列FPGA的情况下,36[KBit]BRAM是最小构成单位。若以72Bit宽度*512WORD配置,则在编码硬件中,成为以64Bit*512WORD利用,能够保存四个1[KB]块。8Byte*128=1024Byte,4[KB]=4096Byte=
32768Bit。通过编码硬件的输入部利用该BRAM,能够不追加BRAM地连续输入4组量的数据(=16KB*4次),能够使吞吐量提高。
[0228] 如以上说明那样,设计辅助装置100对于提前执行中的各定时,通过编码矩阵来确定基于提前执行中被覆盖的数据的运算、和该运算的结果与该定时相同的其他定时。由此,能够设计可省内存量地提前执行的编码电路。由此,能够设计可省内存地提前执行的编码电路。因此,即使省内存,也能够使编码处理的吞吐量提高。
[0229] 另外,设计辅助装置100基于确定出的逻辑运算和确定出的定时生成表示编码电路和控制电路的电路信息。由此,能够自动地设计编码电路,可节省设计者的工夫。
[0230] 另外,设计辅助装置100按从开头分量起依次连续的0的数量从少到多的顺序重新排列编码矩阵的列矢量中的、生成冗余块的列矢量。由此,能够以更少的内存进行更多的提前执行。
[0231] 此外,本实施方式中说明的设计辅助方法能够通过由个人计算机、工作站等计算机执行预先准备的设计辅助程序来实现。本设计辅助程序被记录于磁盘、光盘、USB(Universal Serial Bus:通用串行总线)闪存等计算机可读取的记录介质,通过由计算机从记录介质读出来执行。另外,设计辅助程序也可以经由互联网等网络发布。
[0232] 附图标记说明
[0233] 100...设计辅助装置;101...编码电路;601、602、801、802...部分电路;ma1、ma2...编码矩阵;d1...第一对象数据;d2...第二对象数据。
QQ群二维码
意见反馈