面向逻辑和函数的协处理器的制作方法

文档序号:6407363阅读:219来源:国知局
专利名称:面向逻辑和函数的协处理器的制作方法
技术领域
本发明属于计算机领域。
在目前社会,特别是教学、医学、法律、管理和商业等行业,对知识的搜集、管理、分析与服务的需求十分迫切。由于对知识的加工与对科学计算的数据加工不同,从功能上,它更多地表现为检索、比较、推理和更新而不是四则运算;从加工方法上,它更多地需要对表和栈的处理。因此以科学计算为主要服务对象的主流计算机并不完全符合对知识的处理的要求。
由于我国的计算机用户与发达国家相比水平较低,因此他们对计算机进行知识处理能力的要求就更高,这是我国在计算机发展和研究方面不同于发达国家的特色。因此,研制更适于知识处理的计算机是我国计算机高技术研究的当务之急。
自七十年代末以来,国际计算机界对面向知识处理的计算机系统进行了大量的研究。其突出代表是日本的第五代计算机和美国TI公司的Explorer及Symbolics公司的Lisp机等。它们的共同特点是研制专门用于执行Prolog或Lisp的体系结构,并在此基础上开发知识信息加工环境。这种作法与主流机型相比的确提高了这两种语言的执行效率。但是,专用结构又使得科学计算效率不高,特别是由于在结构上与主流机差别太大,用于主流机上的为用户所熟悉的大量软件均不能在专用机上使用,而这些公司自己的相应软件又不能在短期内生产出来,造成软件环境馈乏,不为用户喜爱,以至难以打开市场,不为社会所接受。
本发明的目的是提供一种既能满足社会对知识处理的需求,又能克服上述专用知识处理机缺点的协处理器。我们选择了目前技术上比较成熟的人工智能语言Prolog和Lisp作为知识处理的基本语言,研制了能够支持Prolog和Lisp语言(面向逻辑和函数)的与工作站兼容的智能协处理器(以下简称PLC)。
PLC协处理器系统包括硬件和软件两部分,硬件是基于VME总线结构的9U插件板,可以插在SUN3,SUN4,SUN690MP以及EST4260等工作站和服务器的VME插槽上;软件是基于Sun View窗口系统的交互式多窗口用户环境,运行于宿主机上,为用户提供与硬件的各种接口和控制。此外,软件部分还包括Prolog语言及Lisp语言的编译程序和调试程序。其整个结构见

图1。
PLC板的硬件系统采用基于AM29300系列位片机及专用栈控制器的体系结构。整个硬件部分分为指令存储区(code)、数据存储堆(heap)、指令预取部件(IPU)、指令执行部件(IEU)、三个专用栈(C-Stack,E-Stack,Tr-Stack),一个参数区(A-array)、VME总线接口(Interface),以及一些辅助部件,如各种译码器和判断电路等。
由于Prolog和Lisp在执行过程中对存储器的访问频率和所占用的空间远远高于常规语言,因此存储器的吞吐率是影响PLC板系统性能的一个重要因素,为此在PLC板上设计了多个各种类型的存储区。为了充分利用多个存储区所提供的数据带宽,在控制运算部件中没有采用现有的Risc CPU芯片,而是采用了AM29300系列的32位片机和微程序控制器,以便灵活地配置数据通路和对这些数据通路以及各个数据存储区提供尽可能高的并行操作。为了进一步提高系统性能,在指令控制部件前增加了指令预取部件,使得指令的执行与后续指令的读取可以重叠进行。
由于协处理器必须处于宿主机操作系统的管理之下,为此,我们设计了协处理机硬件和软件接口。协处理器在硬件上做为VME总线上的从设备,通过VME总线与宿主机通信。在软件上与宿主机的界面分为运行于协处理器上的通信服务程序和运行于宿主机UNIX操作系统核心的PLC设备驱动程序。
PLC的软件系统包括与UNIX系统的界面、Prolog和Lisp编译程序以及用户环境窗口系统。
Prolog和Lisp编译程序是根据Prolog模型和Lisp模型以及相应的指令系统设计的,内容包括将Prolog程序编译到协处理器指令的编译程序;将Lisp程序编译到协处理器指令的编译程序。
用户环境窗口系统是一个综合性的管理系统,它为用户提供了对协处理器的各种访问和控制功能,集成了Prolog和Lisp语言的编译、解释和调试等各种功能,并具有良好的人机交互界面。
以下是PLC与一些专用知识处理机对一些典型问题执行效率的比较
从中可以看出,与国内外类似系统相比,PLC在运行速度上有明显的优势。
使用PLC协处理器的好处是1.在进行科学计算和构造用户界面时,工作站使用宿主机,可以充分发挥Sun工作站的优势、充分使用Sun丰富的软件环境;
2.在进行知识处理时,在协处理器上执行Prolog及Lisp语言,充分使用适合于表和栈处理的专用结构,大大提高了知识处理效率,其峰值推理速度已达到800K LIPS;
3.协处理器适用范围大,小型协处理器可以安装在笔记本式计算机上,大型的可以为高并行计算机服务。
兹举一实施例并配合附图详细说明如下PLC板硬件系统包括以下几个方面体系结构PLC板的硬件系统采用基于AM29300系列位片机及专用栈控制器的体系结构。整个硬件部分分为指令存储区(code)、数据存储堆(heap)、指令预取部件(IPU)、指令执行部件(IEU)、三个专用栈(C-Stack,E-Stack,Tr-Stack)、一个参数区(A-array)、VME总线接口(Interface),以及一些辅助部件,如各种译码器和判断电路等。整个协处理器的结构框图见图2。
在控制运算部件中采用AM29300系列的32位片机和微程序控制器,以便灵活地配置数据通路和对这些数据通路以及各个数据存储区提供尽可能高的并行操作。为进一步提高系统性能,在指令控制部件前增加指令预取部件,使得指令的执行与后续指令的读取可以重叠进行。
指令系统和数据由于Prolog与Lisp的执行机制不同,因此在PLC板上设置了两套指令系统,一套用于Prolog程序,另一套用于运行Lisp。
Prolog指令系统。Prolog指令系统是在WAM指令集的基础上加以扩充和改进而成的。其改进和扩充部分可以分为(1).为适应PLC板上的指令预取和执行机制所做的扩充和修改。这部分主要有指令流执行序列控制指令。(2).Prolog执行机制的改进。这部分的指令主要涉及Prolog在执行Unify时的各种操作。为了提高执行效率,有些WAM指令被分解成适应不同状态执行条件的多条指令,而执行条件在程序编译时即可确定,以避免运行时对条件的判断和等待。(3).对WAM算术运算功能的扩充。为此增加了算术逻辑运算指令。
Lisp指令系统。支持Lisp运行的指令可以分为(1).表处理类指令。表处理是Lisp中一种最重要的基本操作,其执行效率对整个系统的效率影响极大,因此这些指令中针对不同类型的表操作,提供了十条指令,以保证在各种条件下都可以提供效率较高的表操作。(2).函数调用类指令;(3).参数处理类指令;(4).运算类指令;(5).各种条件转移和无条件转移类指令;(6).数据传递类指令;(7).运行环境管理指令;(8).I/O类指令。
为有效地支持Lisp的动态数据类型,PLC板采用了带标记的数据表示形式。
PLC板支持的数据字段字为32位,其中前8位(1字节)为Tag(标记)字段,后24位(3字节)为数据字段。
在Tag字段中,8位分为3个子区(1)GC位(1 bit),废料收集(GC)时使用;
(2)CC段(2 bits),cdring-code字段,支持表数据和其它结构数据的压缩存贮;
(3)Type段(5 bits),数据类型编码字段。
指令预取部件(IPU)指令预取部件是连接指令存储区Code和指令执行部件的缓冲机构,它由预取队列和控制逻辑构成,结构见图3。
预取队列的长度为10,其数据宽度为52bit,包括32bit的指令流和20bit的地址流。在控制逻辑的控制下,它从code区中读取指令,并送入队列中,直至队列放满为止。指令执行部件从队列中取指令的过程与指令入队的操作是完全异步的。
控制逻辑的作用有三一是控制对Code区的访问,当预取队列不满时,控制逻辑发出对Code的访问命令,按照程序指针的当前值读取后续指令,对于普通指令,则按顺序送入预取队列,同时修改程序指针。二是根据从Code区读取指令的地址,决定Code区的工作状态。为了提高性能价格比,Code区的存储器件选用了1MB的DRAM器件,其访问速度为70ns。正常读写周期为130ns,页面访问周期为70ns。为保证对Code区的访问速度,指令预取部件在每次访问Code时都比较当前的访问地址与上一次的访问地址。若访问地址处在同一页面中,则按页面访问方式进行,否则才按正常方式进行。第三是分析和处理有关指令流控制的指令,如Prolog中的Switch-on-term,wait,Lisp中的Call,if-t,jmp等,这些指令由指令预取部件直接处理,并根据指令的要求改变后续指令的流向,同时指令本身不进入指令队列。
指令执行部件指令执行部件包括指令控制部件和运算部件(ALU),这部分的主要器件是AM29C300系列芯片,包括微程序控制器AM29C331,运算器AM29C332和两片寄存器堆AM29C334。此外,还有参数存储区A_array,微程序ROM,微程序RAM,以及支持Prolog和Lisp的专用辅助逻辑。
PLC板的指令系统存储在微程序ROM中,为满足运行速度的要求,在系统启动时微程序从ROM中加载到微程序RAM中。AM29C331控制对微程序RAM的访问,并发出相应的控制信号控制运算器AM29C332和其它运算部件及数据区的操作。
为了保证指令执行的速度,微程序控制字采用水平编码。整个微程序指令字共占126位,分为33个字段,其中包括微程序执行序列控制字段,ALU控制字段,各栈控制字段,Heap控制字段,总线传输控制字段,寄存器控制字段,延迟周期控制字段,I/O控制字段,以及辅助部件控制字段等。
对Prolog的支持。PLC板上硬件对Prolog的支持在指令执行部件中主要有对合一过程(Unify)的支持和对选择点建立的支持。
合一操作是Prolog执行过程中一项最基本也是最重要的操作,它以函数的形式存在于Warren指令集中的Get类和Unify类指令之中。各种类型的项的合一操作过程是以微子程序的形式存在于指令ROM的不同地址,在合一的执行过程中,微程序经常在这些微子程序间进行转移,为了提高转移速度,PLC板使用了地址映射机构,它是由1块EPROM作主体,加上一些外围逻辑组成。利用这个机构可在一个微周期内完成入口地址的多路转移。
为了加速建立选择点的指令的执行,在PLC板上使用了自行设计的专用芯片,使该条指令执行的时间大大缩短。
对Lisp的支持。主要包括对动态类型的检查、比较条件码的生成和表操作的加速。
在PLC运行时,在数据参与ALU运算和存贮区访问的同时,标记译码器抽取总线上数据的类型字段,然后将该字段和微程序给出的类型字段(操作要求的数据类型)进行匹配操作,如果匹配失败,说明总线上数据的类型有错误,该电路向PLC报告数据类型错误信息。由于类型判断和数据操作是并行进行的,故能明显提高PLC板的运行效率。
Common Lisp语言丰富的控制结构使得程序指令代码中出现了大量的条件转移指令,这些条件转移指令常常导致指令预取队列的断流。为了支持相等比较(eq)、空表比较(nil)、类型比较(type)等条件转移指令,在PLC板上设置了专门的24位快速相等比较器,以加速条件码的生成,避免ALU相对较慢的比较操作,这样可以明显减少IPU因条件转移而导致的断流时间。
Common Lisp语言提供了大量的表处理和基于表处理的操作,为此,在指令执行部件中针对表的表示和处理设置了专用硬件,使得表的类型判断能和对表单元的访问同时进行。在无间接指针项的情况下,能在一个执行周期内完成Lisp中的Car操作。
数据堆(Heap)及其控制器Heap区作为PLC板的大容量随机存贮区,其存取速度直接影响PLC的运行效率,特别是表处理效率。因此,在HC的设计实现中,首先要保证Heap区的存取操作有较高的处理速度。另外,HC还要完成对Heap区指针及有关寄存器的管理操作、Heap区的边界检测操作等。在PLC板的总体设计中,要求HC以异步操作方式工作。
HC在其内部结构中应提供如下功能模块·H指针Heap区的顶部指针,它指向Heap区空区的第一个可用单元;
·S指针Heap区的辅助指针,用于完成Heap区中结构数据的连续读写操作;
·PDL指针在Prolog运行方式下,PDL作为PDL表(存在Heap中)的表首指针,支持Prolog指令的合一(Unify)操作。在Lisp运行方式下,PDL作为符号表的表首指针,在建立新的符号结构时使用;
·HB寄存器在Lisp运行方式下,HB保存Heap区的可用空间的边界,当Heap区的H指针到达该边界时,HC发出GC中断请求。在Prolog运行方式下,HB保存H指针的备份值;
·边界检测电路。
PLC栈缓冲机制栈缓冲控制器除了提供按严格的后进先出型压栈弹栈操作外,还提供以下几种功能(1)读栈指针备份内容;(2)写栈指针备份;(3)读基址指针备份;(4)写基址指针备份;(5)栈指针内容送栈指针备份,同时基址指针内容送基址指针备份;(6)栈指针备份内容送栈指针,同时基址指针备份内容送基址指针;(7)读栈指针;(8)直接访问读栈缓冲单元;(9)直接访问写栈缓冲单元;(10)弹出栈顶一块内容(修改栈顶指针);(11)基址指针加偏移量随机读栈缓冲单元;(12)基址指针加偏移量随机写栈缓冲单元;(13)写基址指针;(14)栈指针内容送基址指针;(15)Prolog指令allocate的硬化,即同时执行下面三个操作①栈顶指针内容送基址指针;②栈顶寄存器内容压入栈缓冲区;③栈指针加上偏移量(8位)送栈指针。(16)Prolog指令dealloc的硬化,即同时执行下面三个操作①以基址指针为地址读出栈缓冲单元内容送至总线;②基址指针减去偏移量送基址指针;③判断基址指针和指针备份的内容大小,如果基址指针内容大于栈指针备份的内容,则将基址指针的内容送到栈指针中去。(17)基址指针内容压入栈顶。
栈控制器的结构。栈控制器由下述几个部份组成
(1).指针单元2个。每一个指针单元都包括一个指针寄存器,一个加1减1器,和一个3选1的多路器,它是E栈控制器的核心单元,具有赋值,加1和减1的功能。
(2).地址寄存器单元,它由一个3选1多路器和一个地址寄存器组成。设置它的目的是为了使指针单元的加1减1操作与栈缓冲存储器的读写同时进行,以保证E栈能够具有连续Push和连续Pop的功能。
(3).指针备份单元2个,每一个与一个指针单元相对应。每一个指针备份单元由一个2选1多路器和一个寄存器组成,以完成Prolog中选点的建立和Lisp中的环境指令。
(4).比较器单元它是专门为PLC板执行Prolog操作而设计的。它比较指针单元与指针备份单元中的内容,并将比较结果提供给相应的电路。
(5).栈顶寄存器单元栈顶寄存器单元由一对方向相反的寄存器组成。设置栈顶寄存器,使得指令执行部件可以以寄存器的速度对E栈进行Push和Pop操作。
(6).操作控制单元操作控制单元完成对操作码的译码并控制上述各单元的操作。
(7).栈缓冲传输控制单元它的结构比较复杂,包括三组标志寄存器,待交换块指针以及一些条件判断电路。它的主要功能是监视栈的涨落情况,在必要的时候向宿主机发出栈缓冲区数据传输请求。
备份缓冲芯片。备份缓冲芯片是为PLC板高效支持Prolog/Lisp指令集中的一些复杂指令如try_me_else、retry_me_else、trust_me_else_fail等而设计的专用芯片,其目的是充分开发PLC板的并行性,提高PLC板对Prolog/Lisp指令集的执行效率。备份缓冲芯片主要由三部分构成(1).两组16*16 bit的位位相连的双口寄存器组A_array和A′_array。(2).一个加法器,完成当前栈顶指针值+参数个数+需保存的各个指针值的个数=>寄存器的操作。(3).总控制部分或称指令解释器,它接收到指令后,将产生一个控制信号序列,控制芯片内各个部分协调动作,从而完成该指令的执行。
PLC板接口包括如下几方面
PLC板接口电路。
I/O通道。PLC板上有三个寄存器,五块存储区可以通过总线直接访问,其结构见图4。
接口部件的结构。接口部件包括下列各部分1.译码电路2.寄存器portport寄存器实际上是两组32位的触发器,一组是从主机到PLC板内部,一组反之,构成一个全双工的通讯接口。
3.状态寄存器status中断系统。PLC板上还有中断请求和响应机制,以使PLC能够主动和SUN/4主机通讯。中断请求的中断源由三个栈控制器发出,或是由板上的控制器给出。中断响应由板上的中断响应状态机给出。
接口电路实现。整个接口的硬件由一块XILINX的X3090 FPGA和相应的总线驱动IC组成。FPGA中集中了port,status,vec三个寄存器,以及地址译码,中断的产生和响应等所有PLC板上与总线相关的逻辑。
PLC板的设备驱动程序。由于PLC板有中断,因此必须采用设备驱动程序,为了用户的方便及灵活性,同时采用了地址映射的方式使用户可直接访问PLC板。
设备驱动程序由PLCprobe(),PLCintr(),PLCattach(),PLCopen,PLCclose,PLCioctl()这样几个函数组成。PLCprobe()和PLCattach()在系统初始时,由autoconfig调用,而PLCopen是在用户对/dev/PLC0使用open系统调用时才被调用。PLCclose和PLCioctl是在用户调close或ioctl时被调用。
由于PLC板上存储区非常大(8~9M字节),若在设备驱动程序中用PLCmmap()来做地址映射,占用大量MMU资源,考虑到系统有/dev/vme32d32可以在用户态调用系统调用mmap达到同样效果,决定采用后者,精简设备驱动程序。
采用地址映射的方法,将PLC板上的存储空间映射到一块虚拟存储空间中,采用结构plc_map来描述。
struct plc_map{int code[MEG1]; /*1M字的code区*/
int heap[MEG1]; /*1M字的heap区*/int dual_e[KILE8]; /*8K字的E栈*/int dual_c[KILE8]; /*8K字的C栈*/int dual_tr[KILE8]; /*8K字的TR栈*/int port; /*port寄存器*/int padl; /*地址填充*/int status; /*port寄存器*/int pad2; /*地址填充*/int vec; /*port寄存器*/}用地址映射方式,处于用户状态的进程可以访问PLC板上的所有VME总线地址。
PLC接口系统与主机用户的界面。对主机上的最终用户,有两种方式访问PLC板硬件。首先,通过SUN OS的地址映射,结构plc_map对应于PLC板上的存储区结构,对plc_map的单元的访问使用到PLC板上相应的存储区。这样,用户可以象普通的内存区域一样在程序中访问PLC上的存储区。
还可以通过特殊文件/dev/PLC0,利用设备驱动程序,用文件的系统调用来访问PLC板硬件。这种方法主要用来截获PLC板中断。与前述方式配合使用,可以实现主机与PLC板的交互通讯,以及PLC的虚拟栈的管理等。
本发明附图如下图1 PLC系统组成图2 PLC系统结构框3 指令预取部件及其在系统中的位置图4 I/O通道(总线及寄存器)结构图
权利要求
1.智能协处理器(PLC)包括硬件和软件两部分,其特征为硬件是基于宿主机总线结构的插件板,可以插在各种工作站、服务器以及微机的系统总线插槽上;软件是基于窗口系统的交互式多窗口用户环境,运行于宿主机上,为用户提供与硬件的各种接口和控制;此外,软件部分还包括Prolog语言及Lisp语言的编译程序和调试程序。
2.根据权利要求1所述的智能协处理器,其特征在于PLC板的硬件部分采用专用栈控制器的体系结构;整个硬件部分分为指令存储区(code)、数据存储堆(heap)、指令预取部件(IPU)、指令执行部件(IEU)、三个专用栈(C-Stack,E-Stack,Tr-Stack),一个参数区(A-array)、VME总线接口(Interface),以及一些辅助部件,如各种译码器和判断电路。
3.根据权利要求1、2所述的智能协处理器,其特征为在PLC板上设计了多个各种类型的存储区;为了充分利用多个存储区所提供的数据带宽,在控制运算部件中灵活地配置数据通路和对这些数据通路以及各个数据存储区提供尽可能高的并行操作。
4.根据权利要求1所述的智能协处理器,其特征为特别设计了协处理机硬件和软件接口,为了便于宿主机操作系统的管理,协处理器在硬件上做为宿主机总线上的从设备,通过宿主机总线与宿主机通信;在软件上与宿主机的界面分为运行于协处理器上的通信服务程序和运行于宿主机UNIX操作系统核心的PLC设备驱动程序。
5.根据权利要求1所述的智能协处理器,其特征为PLC的软件系统包括与UNIX系统的界面、Prolog和Lisp编译程序以及用户环境窗口系统。
6.根据权利要求5所述的智能协处理器,其特征为Prolog和Lisp编译程序是根据Prolog模型和Lisp模型以及相应的指令系统设计的,内容包括将Prolog程序编译到协处理器指令的编译程序;将Lisp程序编译到协处理器指令的编译程序。
7.根据权利要求5所述的智能协处理器,其特征为用户环境窗口系统是一个综合性的管理系统,它为用户提供了对协处理器的各种访问和控制功能,集成了Prolog和Lisp语言的编译、解释和调试等各种功能,并具有良好的人机交互界面。
全文摘要
本发明的目的是提供一种既能满足社会对知识处理的需求,又能克服上述专用知识处理机缺点的协处理器,选择了目前技术上比较成熟的人工智能语言Prolog和Lisp作为知识处理的基本语言,研制了能够支持Prolog和Lisp语言(面向逻辑和函数)的与工作站兼容的智能协处理器;PLC协处理器系统包括硬件和软件两部分,与国内外类似系统相比,PLC在运行速度上有明显的优势。
文档编号G06F15/00GK1102263SQ93118750
公开日1995年5月3日 申请日期1993年10月27日 优先权日1993年10月27日
发明者李未, 尹宝林 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1