公开/公告号CN1500255A
专利类型发明专利
公开/公告日2004-05-26
原文格式PDF
申请/专利权人 马科尼英国知识产权有限公司;
申请/专利号CN02805930.1
发明设计人 P·N·马丁;
申请日2002-02-07
分类号G06N3/12;
代理机构72001 中国专利代理(香港)有限公司;
代理人王岳;王勇
地址 英国考文垂
入库时间 2023-12-17 15:18:03
法律状态公告日
法律状态信息
法律状态
2011-04-20
未缴年费专利权终止 IPC(主分类):G06N3/12 授权公告日:20061220 终止日期:20100207 申请日:20020207
专利权的终止
2007-03-07
专利申请权、专利权的转移专利权的转移 变更前: 变更后: 登记生效日:20070126 申请日:20020207
专利申请权、专利权的转移专利权的转移
2006-12-20
授权
授权
2004-08-04
实质审查的生效
实质审查的生效
2004-05-26
公开
公开
发明领域
遗传程序设计(GP)系统一般以在通用计算机上运行的程序实现。观察表明,随着问题变得更加棘手,传统计算机的性能得到了极大地增强,从而进一步刺激了这项工作的发展。尽管人们一直不断地提高现代的CPU的性能,但是仍然使用多个处理器以利用GP可以并行化的事实。通过在硬件中直接实施GP系统,目的是足够大地提高性能因素以使它能够处理更加棘手的问题。
本发明说明了如何使用硬件编译技术在硬件中实施GP系统。首先描述了硬件和硬件编译语言。接着一般性地描述了GP系统并讨论了为成功地将GP装配到场可编程的门阵列(FPGA)中必须进行的设计决策。这之后选择某些实例性问题以练习实施。接着给出运行该系统的结果和与常规的实施方式的比较。
下面简要一般性地概述FPGA。这之后描述硬件编译系统的高级语言。在此并不准备全面地描述该工具,而是仅描述最重要的特征,特别是哪些影响后面的设计决策的特征。
这些介绍希望使哪些很少或没有FPGA实践经验的人更容易地理解后面的某些讨论。更全面的数据文件可能位于各个制造商的站点上。
FPGA是一类可编程的硬件装置,包括可配置的逻辑块(CLB)的阵列和可配置的互连。FPGA的一般模型在附图1中示出。
每个CLB包括两个函数发生器(F&G)和两个触发器(FF)。内部输送和控制逻辑(H)连接函数发生器和触发器。CLB的一般模型在附图2中示出。
这些装置的结构通过装入配置位模式实现。在作为在此所使用的实例性装置的Xlinx XCV4000 FPGA中,可将位模式编程在芯片上的静态RAM中。在每次给芯片重新配置电源时都必须完成这些。使用对配置信息进行高级描述的软件工具产生配置位模式。
Handel-C是一种设计成将以类C语言写成的程序编译为同步硬件的硬件转换系统的高级语言。Handel-C的输出是可用于形成FPGA的配置数据的文件。Celoxica创作了Handel-C[www.Celoxica.com]。
Handel-C具有类似C的语法。这就使得该工具受到没有硬件经验的软件工程师欢迎,因为他们能够快速地将软件算法转换为硬件,而不必详细学习关于FPGA或VHDL。VHDL是标准硬件设计语言。它代表VHSIC硬件设计语言。VHSIC本身的意思是非常高速的集成电路(VeryHigh Speed Integrated Circuit)。
使用硬件的一个优点是能够直接利用并行性。这与在使用时间分片实现的单个的CPU计算机上可实施的仿真的软件并行性相反。Handel-C具有支持代码并行性的其它结构。
如下的块
par{
a=10;
b=20;
}
会产生在单个时钟周期中将值10赋值给a和将20赋值给b的硬件。通过使用功能阵列或者通过产生直接插入代码(inline code),可以产生并行执行的较大的功能性块。
使用如下的结构可以复制该硬件,这种结构会产生10个并行赋值操作。
par(i=0;i<10;i++){
a[i]=b[i];
}
为使充分利用该硬件,Handel-C要求程序员说明所有的数据的宽度例如是5位宽度的带符号的整数,因此能够表示在-15和+15之间的值,
int 5 count;
Handel-C支持单整数数据类型。
在硬件和外界之间的通信可以使用接口进行。这些接口指定为输入和输出,并指定从接口中写或读用一个时钟周期。这种语言允许设计者指向特定的硬件,分配输入和输出管脚、指定信号的时序和一般性地控制低电平硬件接口细节。宏可用于帮助指向特定的装置。
根据Handel-C文献资料,关于语句时限的简单的规则是“赋值需要1个时钟周期,其余自由”。这意味着使用组合逻辑构造表达,并且仅在执行赋值时对数据进行计时。例如,Handel-C可以产生用于在单个时钟周期中执行的如下的语句的硬件。
y=((x*x)+3*x);
这个特征使得容易根据时钟周期预测性能。但是,存在的损失是,表达式越复杂,要求实施该不等式的逻辑越深。反过来,因为与深度逻辑相关的传播延迟的缘故,这又限制了该设计能够运行的最大时钟速率。在实际中这意味着设计者需要相对时钟速率交换时钟周期,并且这通常是迭代过程。
因为Handel-C指向硬件,在与常规的ANSI-C编译器相比时存在某些编程限制。在设计通过Handel-C能够编译的代码时需要考虑这些。这些限制中的某些限制特别影响GP系统的构键。
首先,没有栈可用,因此该语言不能直接支持递归函数。这又意味着主要依赖于递归的标准GP不能未经修改地实施。其次,对在FPGA上使用标准逻辑单元能够实施的存储器的大小存在限制,因为以硅产业(slicon real estate)实施存储器比较昂贵。然而,某些FPGA具有Handel-C能够使用的内部RAM。例如,Xlinx Virtex和Spartan系列支持Handel-C允许用户说明为RAM或R0M的内部存储器。例如,如下的定义说明128个单元的RAM块,每个单元8个位的宽,它可作为正常的阵列存取,
ram int 8 mem[128];
使用RAM或ROM的限制在于除了每个时钟周期一次之外不能存取它,因此限制了存取它的代码的并行执行的潜力。
第三,不允许表达式具有附带的作用,因为这会破坏单周期赋值规则。因此不允许如下的代码,
a=++b;
需要将它重写为:
b=b+1;
a=b;
Handel-C支持两个目标。第一个目标是允许不需要使用任何硬件就可开发和测试代码的仿真器目标。这由调试程序和其它的工具支持。第二个目标是输入到安置和路由工具的网表的合成。网表是门和它们的连接的形式描述。安置和路由是将网表转换为硬件设计的过程。这允许将设计转换为特定的芯片的配置数据。在附图3中示出了该过程的概图。从该仿真器中中可进行循环计数分析,并通过Handel-C编译器产生门计数估计。为获得明确的时序信息和实际的硬件用途,需要调用安置和路由工具。
FPGA已经用于实施GP系统的一部分。在“Register-basedGenetic Programming on FPGA computing platforms”(M I Heywoodand A N Zincir-Heywood;Genetic Programming,Proceedings ofEuro GP 2000 Volume 1802 of LNCS,pages 44-59,Edinburgh 15-16April 2000;Springer-Verlag)中所描述的系统使用更传统的FPGA工具进行仿真。在他的文章中提出使用FPGA仅用于评估个体、交互执行情况和交叉情况。
Koza等人使用FPGA加快分类网络的适应性(fitness)的评估“Evolving sorting networks using genetic programming and therapidly configurable Xillinx 6216 field-programmable gatearray”(John R Koza et al;Proceedings of the 31st AsilomarConference on Signals,System and Computers;IEEE Press,1997)。在这篇文章中仅使用FPGA执行适应性评估。通过主机形成初始总体(population),然后将个体下载到FPGA,并指令FPGA评估个体的适应性。通过主机再次执行随后的选择和繁殖。
下面的段落描述在硬件中实施GP的一般性设计决策。
目的在于实现以硬件完成GP系统。这是初始对象总体产生、适应性评估、繁殖和最后结果的传送。这与使用采用遗传程序设计的FPGA的所有其它实例相反。这种高级目的指导如下的许多设计决策。
在使用Handel-C时缺乏内置栈使得应用递归函数困难。虽然有从算法中删除递归的十分公知的方法,但是仍然要求某些形式的栈存储中间结果。这种标准的树形表示的替换方案是线性GP系统。内部表示的细节取决于字的大小、函数数量和所使用的终端的数量,这些都取决于所处理的问题。对于当前的工作,为简单起见选择寄存器状机。在表1中给出了指令的一般设计。每个程序是指令与某些控制信息在一起的阵列。为简化控制程序,每个程序都是固定的大小,具有存储它的最大的有效长度。在表2中示出了程序的表示。
表1:指令的一般设计
表2:个体的一般设计
根据本发明,提供一种在硬件中实施完整的进化算法的在配置时不受约束的可配置的硬件逻辑装置,配置的硬件逻辑装置包括:
(a)具有输出并设置成在输出中产生个体的初始对象总体的对象总体产生装置;
(b)具有输入和第一和第二输出的适应性评估装置,该总体产生装置的输出连接到适应性评估装置的输入,并且该适应性评估装置设置成对个体的初始总体实施适应性测试并在适应性评估装置的第一输出中提供适应性测试结果和相应的个体;
(c)选择器装置,该选择器装置具有输入和输出,并被设置成基于从所述适应性评估装置的输出连接到该选择器装置的输入的相应的个体和适应性测试结果选择初始总体的一个或多个个体并在选择器装置的输出中提供所选择的一个或多个个体;
(d)繁殖装置,该繁殖装置具有连接到选择器装置的输入,并被设置成从所选择的一个或多个个体中繁殖个体的进一步总体,以及具有将个体的进一步的总体连接到适应性评估装置的输入中的输出;
该适应性评估装置可以进一步设置成在它的第二输出从个体的进一步的总体中提供单个的优选的个体。
进一步提供一种在硬件中实施完整的进化算法方法,包括构造不受约束的硬件逻辑装置以便实施如下的步骤:
(e)形成个体的初始总体;
(f)评估个体的初始总体的适应性;
(g)从它的初始总体中选择一个或多个个体;
(h)从所选择的一个或多个个体中繁殖个体的进一步总体;
(i)评估个体的进一步的总体的适应性;
(j)基于个体的进一步的总体的适应性从个体的进一步的总体中选择一个优选的个体。
现在通过举例参考附图描述本发明,在附图中:
附图1所示为FGPA的一般模型;
附图2所示为CLB的一般模型;
附图3所示为将代码转换为硬件的过程的概图;
附图4所示为线性反馈移位寄存器随机数发生器的附图;
附图5所示为用于实施总体的一次适应性函数评估的周期数;
附图6所示为问题的总的周期数;和
附图7所示为随着并行适应性评估数量的增加估计的NAND的门计数。
在当前的工作和其它的工作之间的关键不同在于它不局限于微处理器设计者所看到的实施的装配的函数集。这就是说可以将函数设计为比机器指令更高等级的抽象。以更高等级的抽象表示的函数集的问题的实例是函数和终端设定要求执行的几个步骤。如果使用RISC或CISC结构实施,则每个步骤将会要求执行几个RISC指令。通过Handel-C可以有效地且简洁地对这些函数进行编码。
硬件的一个关键优点在于能够设计真正并行的机器。为了最充分地利用可用的硅,选择那些并行需要某些维护的部件。GP的三个主要的阶段是初始总体形成、所有的个体的适应性评估和新代的繁殖。由于第一阶段仅执行一次,为加速这个阶段而消耗了过量的硅资源,因此几乎不存在优势。在处理资源方面适应性的评估通常采用被认为是最昂贵的,因此这是形成并行阶段的主要候选者。繁殖阶段通常认为明显如适应性评估重要,因此在关键部分中仅在形成这种并行性的过程中存在一定的优点。
在这个工作中使用的设计利用可能的所有的简单语句的并行执行。因为在执行两个并行赋值的过程中没有损失,因此不管GP的阶段如何都完成这些;无论如何为每次赋值形成硬件。在函数开始时在对变量初始化时这特别有用。
适应性评估阶段通过同时执行大量的评估来利用并行能力。如果问题具有总共P个总体大小,则对大小为S=P/n个个体的子总体进行并行评估。为使这尽可能地有效并最大限度地利用硬件,所有的参数设置都是2的幂。因此如果P=16和n=4则S=4。通过使用在Handel-C中直接插入关键词实施并行评估。这就使得按照要求产生多个硬件拷贝。
在GP中随机数发生器(RNG)用于主要的步骤中的两个步骤。首先,在初始总体形成过程中,其次,在繁殖阶段中。在使用Handel-C时,因为所产生的深度逻辑的缘故,使用根据硅的标准的乘和除指令无效。因为这个原因拒绝使用通常所看到的常规的线性同余发生器。而是使用线性反馈移位寄存器(LFSR)设计。选择64的字大小,因为它可以有效地实施在标准调制CPU上,因此LFSR可以容易地转向到ANSI-C中。重要的是选择好的多项式以确保RNG能够形成2n-1随机数的最大序列,同时将抽头数保持最少以便高效率。对于64位字,使用多项式x64+x4+x3+x2+x1+x0(附图4示出了多项式的4项;64位字的5项;x0总是1,因此忽略它)。在附图4中示出了LFSR的块图。
指定RNG以便在一个周期中产生随机数。然后从64位寄存器中读取所要求的位数,在第1位中开始给出随机数。例如,如果该系统具有8个指令,则需要3个位对指令进行编码。在初始程序形成过程中,指令的随机选择使用底部的3个位。Handel-C允许有效的位操作,选择3个位的代码是:
unsigned int 3 instruction;
instruction=randReg[2:0];
这里randReg是移位寄存器变量。
在初始化阶段中读取64位端口完成RNG的播种(seeding)。这允许RNG从外部源中播种,比如日钟的时间或其它的噪声源。它也可以允许预先设定RNG为产生特定的结果的公知的种子。
当前实施的发生器的局限在于不能允许并行执行块产生随机数,因为这违反Handel-C的条件,该条件为单个的函数不能从并行块中调用。这意味着初始程序程序和繁殖阶段不能并行。虽然这不能通过实施多个发生器克服,但是更重要的是将资源用于适应性评估阶段。
为保留存储器,使用稳态繁殖策略。对于大小为P的总体,每代随机地选择P个个体和施加给该个体的算符。如果算符是交叉或拷贝,则将它当作两个已经处理的个体。使用2的竞赛大小的竞赛法选择。更大的竞赛法选择对非常小的总体几乎没有意义。
使用下面的概率选择算符。变异(mutation)10%,交叉70%,拷贝20%。
变异算符通过在初始程序形成的过程中重新使用产生程序节点的功能工作。实现这些主要是节约硬件。结果在于变异可以改变0、1或更多的指令细节。
用于线性程序表示的交叉产生某些问题,其中它通常希望避免执行更大的块存储器移动。当前的工作维持固定的最大程序大小,拷贝从一个程序到另一个程序的程序段。通过利用硬件的并行特征,执行块存储器拷贝的影响可以减小到可接受的水平。
通过利用硬件的并行特征,长度为1的个体的拷贝要求1+k个时钟周期,这里k表示建立拷贝的较小的开销。
下面的段落描述了选择测试使用Handel-C的GP的实施和进行实验的环境的问题。
进行实验有四个目的。
l.确定有限的GP系统是否能够解决所选择的问题;
2.确定使用Handel-C是否能够实施该系统并校验该设计是否能够适合在FPGA上;
3.获得表示在常规的C实施和硬件实施之间的某些性能比较;
4.确定该设计是否可作为硬件实现并以硬件实施该设计。
两个问题说明了使用Handel-C在硬件中的GP的一般概念。所选择的两个问题是回归问题和布尔逻辑问题。所选择的问题是a=a+2b。布尔逻辑问题是2位XOR函数x=ab。
在两个问题中,对于100%正确的程序的原始适应性设置为零,因此减小了测试适应性所要求的逻辑量。
在这两个问题中,如果发现100%正确的程序或者如果评估到最大的代数则结束运行。
为满足上述的目的使用5个不同的环境运行该问题。第一,作为在Linux下运行的标准C应用程序。这将证明初始程序操作,并使用标准的GNU工具可调试该应用程序。使用gcc v2.95.2编译该程序并在运行Linux的200MHz AMD K6 PC上执行。
第二,使用Handel-C编译该程序,并对代码进行优化以减小逻辑深度,减小门计数并增加并行性。
第三,Handel-C实施可以使用Handel-C仿真器运行。这给出了需要执行该程序的时钟周期的数量。
第四,使用交叉编译器编译C代码并在Motorola Power-PC结构的指令仿真器中执行。执行这个以获得用于现代处理器所需的指令计数和存储器周期。选择PowerPC用于这种工作是基于用于PowerPC的易于购买的仿真器。通过使用gcc2.95.2执行Power-PC仿真,该gcc2.95.2使用“eabi”调用约定构造为Power-PC交叉编译器。优选这个版本的程序以使启动开销最小并且不使用任何I/O。因此,尽可能地接近FPGA程序,允许进行有意义的性能比较。仿真器本身是内置在GNU调试器(gdb)中的psim。Psim也能够作为独立的应用程序运行。
最后,Handel-C的输出用于产生给出设计可实行的最大时钟频率的安置和路由工具的硬件设计和所要求的FPGA资源的指示。
对于Handel-C仿真和硬件实施,使用最大程度优化的Handel-Cv3.0编译该代码。使用在Celoxica RC1000开发板上带的Xlinx VirtexXCV1000-6芯片的Xlinx Design Mangager 3.1i形成最后的FPGA结构数据。
FPGA设计将它的输出写到16位端口作为关键码序列、数据对。这种数据可读取并存储到磁盘文件中以用后面的分析。写入反汇编程序以对输出数据进行解码以便进行分析。
在测量Handel-C仿真和Power-PC仿真的时钟计数时,修改代码以运行到代的最大数。它们也可用于相同的随机数种子。完成这些以确保使用相同的条件进行比较。
选择8个指令以用于回归问题,它要求三个位。每个指令指定两个寄存器,有四个寄存器可用,每个寄存器要求2个位。因此,每个指令要求7个位的存储器。用于这个问题的指令如下:
·add(Rn,Rm)将Rm的内容加入到Rn的内容中并将结果放回Rn中。
·sub(Rn,Rm)将在Rn中的值减去在Rm中的值并将结果放回Rn中。
·shl(Rn)左移Rn的内容一位,将结果放在Rn中。
·shr表示以类似的方式移位,但是向右移一位。
·nop是非算符函数。包括这个以使指令数为2的幂次。
·halt使评估结束,返回在Rn中的值。
·ldim(Rn,Kn)将常数Kn替换到Rn中。
·jmpifz(Rn,Rm)测试在Rn中的值,如果该值为0,则跳到在Rm以程序大小为模的位置。
在下面的情况程序终止:
1.遇到halt指令;
2.执行在程序中的最后指令;
3.jmpifz指令引起了要形成的循环,并且已经执行了预定的循环数。
实施这些指令的机器能够每两个时钟周期执行一个指令,包括指令取数据、解码、操作数地址评估和操作数读/写。为进一步加速这个使得能够构造管道,将周期数减小到每指令一个。
每个个体有四个随机常数可用。在个体的构造的过程中形成这些常数一次。
在本说明书中的大部分回归实例包括乘和除函数。由于这两个函数使用缺省的Handel-C操作符产生了非常深的逻辑,以单个位左移和右移操作符替换这个操作符,产生浅得多由此更快的逻辑,并分别乘以2和除以2。
在附图3中给出了回归问题的完整的参数集。在适应性评估之前替换在寄存器R0和R1中的输入值a和b,如果在结尾终止该程序则读在寄存器R0中的值,或者如果通过Halt指令结束则读在寄存器Rn中的值。在程序开始时预先计算适应性数据一次,并可用于所有的适应性评估的拷贝中。
表3:回归问题的参数
XOR函数使用四个基本逻辑基元AND、OR、NOR和NAND。这些函数的每个函数使用两个寄存器Rn和Rm。结果放在Rn中。已经显示足够可以解决布尔XOR问题。在已经指令了在程序中的最后指令时终止执行。
在适应性评估之前两个输入a和b写到寄存器R0和R1中,在适应性评估之后从寄存器R0中读结果x。在表4中给出了全部的参数集。对于这个问题仅使用四个函数,每个指令要求6个位。
表4:XOR问题的参数
在表5中给出了回归问题的仿真器的结果。对于PowerPC该数字是从指令行直接运行psim的输出中得到的,并且指定-Iswitch获得cpu周期的总体。循环队列考虑管道延迟并预测分支程序的失败,但它并不能考虑任何存储器子系统的延迟。
表5:运行回归问题的结果
给出了两种情况下的加速系数,原始周期数和执行该程序实际花费的时间。第一个是根据原始时钟周期进行的比较。尽管它们在相同的时钟频率下运行,但仍然将这作为两个实施方式处理。第二个是使用PPC的典型的时钟速率和最快的频率进行的比较,根据安置和路由工具的报告对FPGA进行计时。加速系数Speedupcycles=Cyclesppc/Cyclesfpga和时间的加速系数Speeduptime=Speedupcycles*Freqppc/Freqfpga。
在一次运行的代16中存在的这个问题的(作了注释的)实例程序是:
shl(r1)//r1=b*2
add(r1,r2)//nop
add(r0,r1)//r0=a+(b*2)
halt(r0)//返回在r0中的结果
使用与回归问题的相同的环境执行XOR问题。在表6中给出了结果。
表6:运行XOR问题的结果
在一次运行的代86中存在的这个问题的(作了注释的)实例程序是:
or(r3,r1)//r3=b
or(r3,r0)//r3=a+b
or(r2,r1)//nop
nand(r0,r1)//r0=ab
and(r0,r3)//r0=(a+b)ab
通过用不同的子总体大小实施XOR问题并在Handel-C仿真器中运行该问题测量使用并行化的效果。连同每个个体的最大4个节点,选择总的总体大小为8。选择这些较小的数量以允许在合理的时间量中编译该程序。子总体的数目每次都修改,使用值1、2、4和8。对于执行初始总体生成的周期数、评估第一代的周期数和对第一代执行繁殖算符的周期数采集这些数据。在表7以表格的形式示出了这些。
表7:对于GP的不同的阶段和不同的子总体大小的循环计数和门估计。
附图5所示为通过不同的子总体大小对于一次适应性评估对周期数的影响。从这个曲线图中可以看出随着并行适应性评估数量的增加,益处减小。这是由于与设置适应性评估相关的开销恒定的缘故。如果总体大小更大则这个影响不如此明显。
在附图6中示出了这个问题的周期的总体。对于16个代该程序都运行。在此可以看到繁殖阶段的影响。从使并行适应性评估的数量从4繁殖到8所获得的好处仅是把所要求的周期减小了18%。在执行并行评估时初始总体的贡献为总的周期的大约7.5%。
最后,测量增加对所要求的硬件资源并行适应性评估的数量的效果。在附图7中示出了这个测量结果。它显示所需的硬件资源的大小线性增加。
在前文中讨论的XOR程序也可以使用PPC仿真器运行。Handel-C版本使用8的子总体大小。结果在表8中示出。FPGA的最大频率为67MHz。
表8:完全并行的Handel-C程序和PPC仿真器的比较
在此给出了这两个问题,虽然在与使用GP已经解决的许多问题相比比较并不十分重要,但是已经证明使用Handel-C的一般概念产生在FPGA上能够运行的GP系统。使用类C语言具有某些有价值的特性,最重要的是可以开发GP算法并使用常规的软件工具进行测试。对于软件工程师来说这是非常重要的,因为不需要精通硬件设计。
上文所示的结果清楚地显示:使用当前的实施方案,增加并行适应性评估的数量的好处下降到4之上。这是由于在与适应性评估相比较时繁殖阶段占用周期的主要部分。
关于GP,对于XOR问题速度增加(Speeduptime)19是对处理更棘手的GP问题的重要贡献。随着可使用更快的FPGA,可以更进一步利用这个因素。当前的Xilinx正推出它的具有450MHz的最大时钟速率的Virtex II系列。
虽然在时钟周期方面加速是值得的,但是必须记住这个工作对操作标量数据的实施的常规指令有影响。通过运行矢量数据例如图像使用FPGA可以获得更大的增益。使用数据矢量可以调整函数集以比在本说明书中描述的问题更大程度地利用硬件的并行性。
在考虑以布尔逻辑问题表示的问题时,已经显示子-机器-代码GP的技术能够在性能方面改善2个数量级。使用FPGA,可能的字大小仅受可用的CLB的限制,因此使用子-机器-代码GP和非常长的字可获得更大地增加性能的可能性。
通过嵌入GP系统和直接控制硬件同时评估程序的适应性,输入和输出可以直接编码在函数组中。这个方面的实例可以是机器人控制,机器人控制使用在FPGA上的某些I/O管脚直接读传感器输入并直接产生给机器人的控制信号。由于FPGA不需要许多支持电路,因此控制器可以直接嵌入在最小的机器人中。
至此所给出的两个实例性问题(回归问题和XOR问题)代表使用本系统可以解决的小问题。为解决更大的问题,需要增加一个或多个如下的参数:
1.在一次运行中的代数;
2.总体的大小;
3.在一个个体中的节点数。
至此所描述的系统可以适应代数的增加,而不作任何改变,但是增加在总体中的个体数和/或个体的大小,因此需要进行某些改变。
在FPGA系统中有三种方式实现随机存取存储器。首先,通过使用在每个CLB中提供的单个位的存储元件可以合成存储器。这就得到了通过并行硬件可以存取的高速存储器。其次,某些FPGA具有在芯片上的可用的RAM,它可由Handel-C程序使用。这就得到了高速存储器,但每个时钟每次仅能够存取一次,由此在存取在并行机器中的存储器时限制了它的有效性。最后,通过使用某些可用的输入/输出管脚可将在芯片之外的RAM连接到FPGA。这就能够存潜在的许多G字节的RAM,但损失了存取速度。
将该系统扩展到更大的总体大小和更大的个体要求将总体划分为在高速合成存储器中保存的激活子总体和在较慢的在芯片之上的RAM或在芯片之外的RAM中保存的非激活子总体。个体在较慢的非激活子总体和较快的激活子总体之间移动。通过设置与主要的评估和繁殖阶段并行地执行的个体的运动,可以使存取较慢的非激活子总体带来的延迟最小。
机译: 可重配置逻辑块,具有可重配置逻辑块的可编程逻辑电路装置以及用于配置可重配置逻辑块的方法
机译: 在第二个可编程逻辑控制装置上使用的第一个可编程逻辑控制装置上使用的可编程逻辑控制装置的硬件配置和相应的控制程序转换方法
机译: 可配置逻辑设备的进化编程