一种用以建构人工智能计算机的平行硬件搜索系统的制作方法

文档序号:6530164阅读:146来源:国知局
一种用以建构人工智能计算机的平行硬件搜索系统的制作方法
【专利摘要】本实用新型将现有计算机搭配一种平行硬件搜索系统,用以建构大众负担得起的人工智能计算机。这样的计算机可被视为一种图灵机,使用执行人工智能的逻辑推理方式来取代传统计算机依序处理程序指令的方式。本实用新型提供的平行硬件搜索系统采用平行化及硬件化的虚拟B树搜索、阶层分页与哈希等技术来处理大量数据。此系统已被成功地建立在一张PCIE适配卡上,主要包含:一颗Xilinx的Kintex7FPGA芯片及两个DDR3内存模块。FPGA芯片中包含:32个32位处理器单元、一个PCIE控制器、一个搜索/删除/插入控制器、两个DRAM控制器。
【专利说明】一种用以建构人工智能计算机的平行硬件搜索系统

【技术领域】
[0001]本实用新型涉及一种平行硬件搜索系统,特别涉及一种用以建构人工智能计算机的平行硬件搜索系统。

【背景技术】
[0002]在乔姆斯基阶层(Chomsky hierarchy)的定义中,目前使用于计算器的语言文法被定义为无关上下文(context-free),而图灵机(Turing Machine)则被定义为最高阶的文法。不同于现今计算器依序处理程序指令的方式,PROLOG语言每一步骤都需要搜索和处理horn clause (rule或fact),以用于执行人工智能的逻辑推理,因此,搜索成为这种语言最大的瓶颈。
[0003]20世纪80年代,日本政府提出第五代计算机研究计划,PROLOG被用作这个计划的主要语言。在2011年,IBM的超级计算器“WATSON”已经被证明比人类更聪明。云端计算技术被用来解决PROLOG的搜索问题。WATSON在网络上包含了将近3000台服务器,苹果计算机公司的Siri则将此技术进一步应用于日常生活,唯有跨国大企业才有能力拥有如此庞大又昂贵的计算器系统。机器人技术近年来有很好的进展。然而,设计一个大众负担得起的人工智能计算机系统,以促进机器人产业仍然是一个具有挑战性的任务。
实用新型内容
[0004]本实用新型提供了一种用以建构人工智能计算机的平行硬件搜索系统,用于解决PROLOG的搜索问题。
[0005]本实用新型提供的用以建构人工智能计算机的平行硬件搜索系统,包括:
[0006]若干个处理器单元(PU),每一个处理器单元一次可以处理多个数据位,假设处理器单元的个数为m,连接m个BRAM单元及一跨处理器单元逻辑电路(Inter ProcessingUnit Logic),处理器单元用于处理与其有连接关系的BRAM单元的数据,跨处理器单元逻辑电路用于实现处理器单元之间的逻辑连接功能,其中,当m = 32时,32个处理器单元中的其中一个处理器单元必须进入休息状态,本实用新型中的每一页的最大记录数为961 (=31*31),因此,搜索一页不会超过两个比较数,每笔记录包含一个搜索值的区段和对象指针(object pointer)区段,搜索值的大小可以达到一百多bytes ;
[0007]—个PCIE接口控制器,用以连接用以建构人工智能计算机的平行硬件搜索系统及一外部计算机,并接收外部计算机发出的指令;
[0008]一个搜索/删除/插入控制器,用以连接处理器单元及BRAM单元,接收外部计算机的指令进行搜索/删除/插入运算;其中,m个BRAM单元连接外部的若干个DRAM控制器,并接收来自若干个DRAM控制器的数据。
[0009]另外,当上述结构的用以建构人工智能计算机的平行硬件搜索系统与外部计算机和外部的DRAM单元连接时,每一页的数据通过DRAM控制器被存储在外部的DRAM单元中,页的记录可以存储在外部的DRAM单元中,也可以从DRAM单元中取出页中的记录并分发到32个BRAM单元以进行搜寻、删除、插入运算,且增加DRAM单元数可加快页的传输时间。
[0010]其中,通过PCIE接口控制器,外部计算机可从硬盘将一页数据传送到BRAM单元,也可收集或修改在BRAM单元的该页数据,外部计算机可以经由PCIE接口控制器下指令给搜索/删除/插入控制器及DRAM控制单元,依指令执行5种不同的运算:搜索、删除、插入、传输数据,从BRAM到DRAM、或由DRAM到BRAM。
[0011]于本实用新型中,假设某页有N笔记录,处理删除时,先用搜索找到删除记录的位置LOCAT1N = N,然后记录从1+1到N左移一次。如果一笔新记录要插入此位置,需要确定此记录有不同的搜索值,然后所有记录从N到I右移一次。最后计算机将这个记录送到位置I,这两种运算可以使用32个处理器单元来平行处理。于本实用新型中,每一笔在该页的记录需具有不同于其他记录的搜索值。在某些情况下,多个对象可能有相同的检索值,这时,本实用新型中的对象指针指向的对象为一个包含几个指针的数组,然后,这些对象可以通过数组——被取出来。
[0012]进一步的,本实用新型提供的用以建构人工智能计算机的平行硬件搜索系统用于建构人工智能计算机。
[0013]进一步的,本实用新型提供的用以建构人工智能计算机的平行硬件搜索系统通过一界面与一计算机连接,用以建构人工智能计算机的平行硬件搜索系统运作时,使计算机语言文法从无关上下文(Context Free)层次提升至图灵机(Turing Machine)层次。
[0014]本实用新型解决了 PROLOG语言长期存在的搜索问题。由于PROLOG语言具备了图灵机完整的特性,因此插入本实用新型的平行硬件搜索系统适配卡的计算机具备人工智能功能,可被视为一种图灵机。数学上可证明,对任何处理器单元总数量,本实用新型的方法全部可以真正地平行处理。

【专利附图】

【附图说明】
[0015]为了详细地了解本实用新型上述的参考特性,可参考实施例来获得,其某些实施例绘示在附加图中。然而,需要注意的是,附加图仅绘示本实用新型典型的实施例,且因此其并不会限制其范围,本实用新型可容许其他等效的实施例。
[0016]图1为本实用新型一实施例中使用阶层分页结构来处理大量数据的示意图;
[0017]图2为本实用新型一实施例中包含平行硬件搜索系统的计算机架构的示意图;
[0018]图3为本实用新型一实施例中平行硬件搜索系统分配961笔记录给32个处理器单元的示意图;
[0019]图4为用数学公式在图4的数据进行搜索时所推演出的虚拟B树的示意图;
[0020]图5为本实用新型一实施例中平行硬件搜索系统使用32个处理器单元进行搜索的时序不意图。
[0021]附图标记说明:02_平行硬件搜索系统;021_处理器单元(PU) ;022_跨处理器单元逻辑电路;023-DRAM 单元;024-BRAM 单元((FPGA 中的 DUAL PORT RAM)单元);025_PCIE控制单元;026-个人计算机(PC) ;027-搜索/删除/插入控制器;028-DRAM控制单元。

【具体实施方式】
[0022]于一实施例中,本实用新型的搜索系统使用阶层分页结构以有效地实现大容量数据的搜索。本实用新型中,可完全使用纯硬件来实现搜索操作,四种数学公式被用来仿真虚拟的B-树结构,而每一个公式都可在一个时钟周期内执行完成。
[0023]本实用新型的搜索硬件模块,成功地建立在Xilinx的Kintex7芯片中,硬件模块包含32个处理器单元(PU)、一个PCIE控制器、一个搜索/删除/插入控制器、两个DRAM控制器,而每一个处理器单元一次可以处理32个数据位,这种架构可有效的解决PROLOG的搜索问题,因此,目前计算器的主要语言文法可从无关上下文的层次提升到图灵机的层次。
[0024]首先参考图1,图1为本实用新型的实施例中使用阶层分页结构来处理大量数据的示意图。由图1可知,处理器单元总数为m = 32,且一个处理器单元必须进入休息状态,本实用新型的方法中的每一页的最大记录数为961 ( = 31*31)。因此,搜索一页不会超过两个比较数。每笔记录包含一个搜索值的区段和对象指针(object pointer)区段。搜索值的大小可以达到一百多bytes。
[0025]图2为本实用新型的实施例中包含平行硬件搜索系统的计算机架构示意图。此实施例中包含平行硬件搜索系统02,其中,各个处理器单元021通过跨处理器单元逻辑电路022相互连接沟通,每一页的数据通过本实用新型平行硬件搜索系统02的DRAM控制单元028被储存在图2中的DRAM单元023。在图2中,BRAM为FPGA芯片中提供的DUAL PORT
RAM内存可存取32个数据位,于各个BRAM单元024 (BraMpBraM2......BRAM32)中,页的记录可以被储存在DRAM,或从DRAM取出页中的记录,然后分发到32个BRAM单元024以进行搜寻、删除、插入运算,而且增加DRAM单元数可加快页的传输时间。
[0026]通过PCIE (可用USB或SATA)控制单元025,个人计算机(PC) 026可从硬盘将一页数据传送到BRAM单元024,也可收集或修改在BRAM单位的该页数据。个人计算机026可以经由PCIE控制单元025下指令给搜索/删除/插入控制器027及DRAM控制单元028,依指令执行5种不同的运算:搜索、删除、插入、传输数据,从BRAM到DRAM、或由DRAM到BRAM。
[0027]图3为本实用新型的一实施例中平行硬件搜索系统依排序大小的顺序分配961笔记录给32个处理器单元的示意图。记录的位置(locat1n)被用来代表每一笔记录,这个位置是根据记录的搜索值在页中排序后产生的名次。在每列中的记录被储存在与每一个处理器单元有连接关系的BRAM单元。图4为用四个无符号数的公式在图3的数据结构进行搜索时所推演出来的虚拟B树的示意图。如果处理器单元数为2k,其中k是整数,因此除法可以使用左移位来实现,每一个公式可以因此在一个时钟周期之内处理完成。
[0028]处理器单元的指针用Pindex来表示,32个处理器单元的Pindex值为从I到32,并且Puci被视为ro32。于本实用新型中,用已知位置即可算出负责此笔记录的处理器单元的Pindex值,其公式为:Pindex = mod (LOCAT1N, m)。最初的搜索范围是从位置I到位置961,因此下界中的位置被定义为LowerBound = I,并且上界的位置被定义为UpperBound =961,DLB被定义为LowerBound-1且处理此笔记录的处理器单元将进入休息状态,休息状态的处理器单元其指数被定义为RPindex = mod(DLB, m)。在树结构的每一个层(LEVEL)中,搜索范围被划分成m-Ι个数据区块(Block),数据区块的大小定义为BlockSize =BlockSize=(m-1)leveh,其中 LEVEL 为树结构的层别。当 LEVEL = 2 时,BlockSize 为 31。当 LEVEL=I时,BlockSize为I。所有BlockSize的值已被预先储存在系统中。
[0029]如图4所示,搜索开始时最上层为LEVEL = 2,所以BlockSize为31,而DLB的初始值被指定为0,由此可知PU32进入休息状态,PU31-PU1的PATH值分别为1-31,其LOCAT1N值分别为31,62,…,961。搜索值与标准值(criteria)相比后,跨处理器单元逻辑电路可得知标准值是介于I3U26的LOCAT1N = 186和PU25的LOCAT1N = 217之间,因此,下次循环的DLB值为较小的LOCAT1N值,所以DLB = 186且PU26将进入休息状态。接着,进行搜索B树的最底层(LEVEL = I)且BlockSize为I,搜索范围缩减成原来范围的1/31,即范围为L0CAT10N187-217,PU26以外的31个处理器单元再搜索一次就可得知结果,并将其对象指针储存于缓存器D04。
[0030]图5为本实用新型一实施例中平行硬件搜索系统使用32个处理器单元进行搜索页中961笔记录的时序示意图。于本实施例中,处理器单元需要做两次比较,而且记录长度(Record Size)为四个32位,其中搜索值长度为三个32位,对象指针长度为一个32位。当start = ’I’时搜索开始,并在start = ’O’时完成,共需要两个循环。这个时序图是用Xilinx的软件ISEDesign Suite仿真硬件描述语言得到的结果,虚拟树的第二层的搜索步骤详细描述如下:
[0031]步骤一:在state = SO, LEVEL = 2, BlockSize = 31, DLB = 0,由 RPindex =mod (DLB, m)找到进入休息状态处理器单元的索引值RPindex = O ;
[0032]步骤二:在state = SI,每一个处理器单元代表的路径的计算公式为:
[0033]PATH = RPindex - Pindex (如果 LEVEL 为奇数);
[0034]PATH = Pindex - Ppindex (如果 LEVEL 为偶数);
[0035]休息状态处理器单元的路径值=O。其余m-Ι个工作状态处理器单元其代表路径值分别为I至m-1;
[0036]步骤三:在state = S2,虚拟B树中此层的搜索范围被m_l个工作状态处理器单元切割成m-Ι个数据区块,每一个处理器单元计算其代表的区块中的最大位置值,计算公式为:LOCAT1N = DLB+PATH*BlockSize ;
[0037]步骤四:在state = S3,将上步骤的位置值转换成搜索值在内存的物理地址(PAddress):PAddress = L0CAT10N*RecordSize/m ;
[0038]步骤五:在state = S4, PAddress的值送到BRAM地址缓存器;
[0039]步骤六:在state = S5,BRAM读取数据需要一个时钟延迟;
[0040]步骤七:在state = S6,每一处理器单元将3个32位搜索值与标准值(criteria)相比;
[0041]步骤八:在state = S7,如果有一个处理器单元发现其搜索值与标准值相同,其32位的对象指针,将被存放到缓存器D04且结束搜索运算,否则,储存O (null)表示未发现指标;
[0042]步骤九:在state = S8,跨处理器单兀逻辑电路(Inter Processing Unit Logic)得知搜索值介于其中两个工作处理器单元之间,且搜索值较小的处理器单元的位置设定为下循环的DLB值;
[0043]步骤十:在state = S9,DLB被广播到所有的处理器单元,然后返回下个循环;
[0044]执行下一层相似的十个步骤,搜索就可完成并将其对象指针:“63636969”储存于缓存器D04。
[0045]于本实用新型中,假设某页有N笔记录,处理删除时,先用搜索找到删除记录的位置LOCAT1N = N,然后记录从1+1到N左移一次。如果一笔新记录要插入此位置,需要确定此记录有不同的搜索值,然后所有记录从N到I右移一次。最后计算机将这个记录送到位置I,这两种运算可以使用32个处理器单元来平行处理。于本实用新型中,每一笔在该页的记录需具有不同于其他记录的搜索值。在某些情况下,多个对象可能有相同的检索值,这时,本实用新型中的对象指针指向的对象为一个包含几个指针的数组,然后,这些对象可以通过数组——被取出来。
[0046]请参考图1,于图1的数据中,使用本实用新型的方法搜索0.8875X 109( = 316)笔记录需要6个比较数。目前的计算器使用二进制搜索法(binary search),6个比较数只能搜索63( = 26-1)笔记录。本实用新型的方法结合哈希技术,此哈希共有314个桶(buckets),在最好的情况下,需I个比较数来搜索0.8875 X 19笔记录。在最坏的情况下需要6个比较数。平均比较数是2。本实用新型的方法用纯硬件搜索,因此处理每一个比较都比现在的计算器更快且更可靠。
[0047]在图3中处理器单元数目为32,此页的窗体被用来建构图4中具有两层的虚拟B-树第一层的节点。很明显地可看出,每一个处理器单元处理的记录都存在于它自己的BRAM单元。第一层的31个节点的边缘记录则被用来建构第二层的节点。很明显所有B-树结构的节点中,每一个处理器单元都处理它自己的BRAM单元的记录。如果处理器单元总数是任何值,近似图3中的窗体可建构形成近似图4的虚拟B-树结构且具有多层,在第一层的节点,此层中的每一个处理器单元处理的记录皆存在于其自己的BRAM单元。假设在第i层每一个处理器单元处理的记录在其自己的BRAM单元是正确的,可以很容易地证明,在第i+Ι层中,每一个处理器单元处理的记录皆在其自己的BRAM单元之中,因为所有的第i+Ι层节点,全部由第i层节点的边缘记录形成,因此,在数学上可证明,对任何处理器单元总数量,本实用新型的方法全部可以真正地进行平行处理。
[0048]本实用新型解决了 PROLOG语言长期存在的搜索问题。由于PROLOG语言具备了图灵机完整的特性,因此插入本实用新型的平行硬件搜索系统适配卡的计算机具备人工智能功能,可被视为一种图灵机。
[0049]虽然前文系针对本实用新型的实施例,但在不偏离本实用新型的基本范围下可设计出其它及另外的实施例,本实用新型的范围由权利要求限定的范围所界定。
【权利要求】
1.一种用以建构人工智能计算机的平行硬件搜索系统,其特征在于,包括: 若干个处理器单元,假设处理器单元的个数为m,连接m个BRAM单元及一跨处理器单元逻辑电路,处理器单元用于处理与其有连接关系的BRAM单元的数据,跨处理器单元逻辑电路用于实现处理器单元之间的逻辑连接功能; 一个PCIE接口控制器,用以连接所述用以建构人工智能计算机的平行硬件搜索系统及一外部计算机,并接收所述外部计算机发出的指令; 一个搜索/删除/插入控制器,用以连接所述处理器单元及所述BRAM单元,接收所述外部计算机的指令进行搜索/删除/插入运算;其中,所述m个BRAM单元连接外部的若干个DRAM控制器,并接收来自所述若干个DRAM控制器的数据。
2.根据权利要求1所述的用以建构人工智能计算机的平行硬件搜索系统,其特征在于,所述用以建构人工智能计算机的平行硬件搜索系统用于建构人工智能计算机。
3.根据权利要求1所述的用以建构人工智能计算机的平行硬件搜索系统,其特征在于,所述用以建构人工智能计算机的平行硬件搜索系统通过一界面与一计算机连接,用以建构人工智能计算机的平行硬件搜索系统运作时,使计算机语言文法从无关上下文层次提升至图灵机层次。
【文档编号】G06F17/30GK203941525SQ201320658123
【公开日】2014年11月12日 申请日期:2013年10月23日 优先权日:2013年10月4日
【发明者】许文龙 申请人:高霆科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1