计算装置的制作方法

文档序号:6742579阅读:228来源:国知局
专利名称:计算装置的制作方法
技术领域
本发明涉及一个计算装置。
计算机是二十世纪四十年代发明的。此后即以革命化的速度得到了发展,但尽管如此,现今的计算机与最先的计算机几乎具有相同的结构。
大部分改进是对硬件作出的,VLSI的引进以及对平板印刷术的加强已使得有可能制造单片计算机,这种计算机仅仅在五年前被称之为超级计算机,行宽按指数规律得到了缩小,现在已小于1微米,时钟频率以及有源晶体管的数目增加了好几个数量级,物理限制很可能将行宽限制在0.2微米。
同时,在使用硅方面计算机的结构没有作出改进,相反,大部分计算机为了获得更快的速度,在硅量的使用上已超过了最佳的用量。
这两方面事实在下一个五年中将阻止单处理机速度的发展。并行处理机的引进,由于其复杂程度增大导致了硬件费用的增长,而且对大部分型式的程序而言编程费用的过高增加。
两者相互联系起来看,新系统的硬件费用得以缩小,但其编程费用将大大提高并将很快达到无法容忍的程度。
一台计算机是由硬件和软件构成的许多不同单元的复杂组装体,在其发展过程中的许多范例和阶段产生了许多标准(特设的和建立的),这些标准散布于系统中,由于这一非一致性,导致系统中存在大量接口。
所有这些具有不同质量和型式的接口和范例使得一个用户或一个编程员在使用机器上产生了困难,因为这要求大量的知识,而且由于其复杂性,一个编程员会引入一些不易发现的错误。
然而,最近发展了所谓的归约处理器,一台归约处理器执行具有某种包含算术表达式的结构的程序,这种结构按若干归约步骤进行归约,因此,此程序不是像在其它形式的计算机中那样按给定次序来执行的。
要将归约处理器发展到超过一有限的尺寸还存在着一些困难。
第一台电子计算机的发展开始了适用于这种形式的计算机的多种编程语言的发展,例如FORTRAN、COBOL、ALGOL、BASIC、PASCAL,这些语言被称之为命令语言,下面也将其称之为传统语言,其主要原因是因为它们通常给出包含一系列命令或指令的程序由一传统计算机(即根据John Von Neumann提出的原理而设计的计算机)顺序执行,这些程序所出现的越来越多的不足导致了另一系列语言的发展LISP、ISWIM、SCheme(LISP的一种语言)、ML、Hope、SASL等等。这些语言发展的动力是为了概念上的简单化,没有特定的机器影响其设计。函数式语言过了许久才开始得到重视,原因之一是函数式语言执行较慢,随后的发展表明其执行速度在某些情况下可能接近或相同于传统(命令)语言由传统计算机执行的速度,即使这些函数式程序的目的并非在于由这种形式的计算机来执行。
使得人们开始大量努力发展函数式语言的原因是对命令形语言日益增长的不满,大约从1970年开始人们谈起了有关软件危机的问题,程序变得越来越复杂,通常包含许多错误,难读,难懂,而且特别难于修改,原因之一是人们对高级的命令语言将简化编程的期望值太高,而实际上这些高级的命令语言并没有达到它们期望达到的水平高度。命令语言仍然适用于早期的计算机概念,即冯·诺依曼计算机,而且编程水平还是很接近于机器水平。函数式编程语言具有一些特性能缓解传统编程语言的一些缺点。
为了获得额外的信息及进一步的理解,我们可以参考教科书“采用ML标准的函数式编程(Functional Programming Using Standard ML),Ake Widstrom,Prentice Hall 1987)。
为了完整地理解本发明的目的和优点,很有必要先了解什么构成了计算机中的函数式方法,特别要与最普遍采用的命令式方法进行比较。
“函数式方法”是指程序是用一种函数式语言写出的并且存储于并被执行于一台包含特别适用这一语言的硬件的计算机上,同样,“命令式方法”是指程序用一种命令语言写出并且存储于和被执行于一台包含适用命令语言的硬件的计算机上。
然而由一函数式语言所写出的程序也可以存储于并被执行于一台传统计算机上,反之亦然,用一种命令语言所写出的程序能在适用于执行用函数式语言所写出的程序的计算机上执行。
用一种函数式语言所写的程序看起来像是目标特性的一系列定义以及象是计算规则,所述定义是说明部分而计算规则(或归约或再写规则)是计算机在操作过程中所用的操作部分,函数式语言给计算机提供一较高级的接口使得编程员可以不必考虑计算机与硬件相关的细节问题,函数式程序有一实际的付效应,即该程序通常比传统的命令程序要简短、易懂。函数式语言的一个主要缺点是当函数式程序要在传统的计算机上执行时必须翻译成一种传统语言,这可通过编译程序或翻译程序来实现。很明显,函数式方法的一些好处被下述事实所限制,即没有专用的硬件以一有效的方式来存储及执行函数式程序。
下表列出了该说明书中所用到的一些词句以及其专门的意义单元 某些具有较大数据结构的部分表 元素的有序序列,每个元素按序是一个表插入表 表的一部分,它足够小因而能将其整体存储于一个闭包中,使它可以表示任意长的表闭包 定义一个过程的分极构造实体,所用闭包都有一个唯一对其作出定义的根。归约机器中的归约工作是在闭包中实现的,机器的整体状态通过归约进行变换。
目标存储器 包含存储目标的存储单元的存储器,例如一个关联存储器存储单元 目标存储器中的一个单元,它存储一个单元闭包,该单元闭包可能与存储在其它存储单元中的其它单元闭包有关单元闭包 一个存储单元中的内容存储单元字段 在一存储单元中的字段闭包单元 存储在一个存储单元字段中的数据元闭包标记符 唯一指定一个闭包的一个闭包单元元素规范闭包 不能被进一步归约的一个闭包,即不包含任何指派某些其它单元闭包的闭包标志符,该其它单元闭包能按这样的一种方式归约,即该单元闭包能进一步归约目标 闭包将被执行,即被归约父 在一数值/符号字段具有至少一个闭包标志符的一个闭包子 通过一个闭包标志符(指示一个子)联接到另一闭包的一个闭包一个子也可以是一个父,一个父也可以是一个子,一个子可能具有多于一个父,一个父可以具有多于一个子。
闭包位置 确定封闭是一个根或一个节点根 在一根封闭树中最上面的闭包单元节点 在一封闭树中不是根的一个闭包单元地点 包含一个闭包位置的一个存储单元字段类型 在一单元闭中的类型码,即代表目标的一个特性的一种位格式,例如一个指令码懒惰 在一单元闭包中的一个元素,它指示是可执行的(lazy) 或是延期求值或是不动的标识符 一种特殊的闭包元,用于指示存储在一存储单元中的一个目标环境 通过给它们相同的环境目标可以组成组数值/指示 一个闭包元素,或者是存储一简单的数值,即一个直接表达式,或是什么也没有,或者一个对另一闭包的指示,即一个非直接表达式核心单元 根据本发明的结构运算单元,核心单元可以执行包含有归约闭包的结构运算
(ALU)数字运算器 数字运算部件能进行基本的数值和逻辑操作,核心单元采用数字运算器进行数字操作全寄存器 扩展到遍及所有核心单元中的平面寄存器核心字 在核心单元中全寄存器中的内容有限寄存器 在一核心单元中的寄存器,通过有限的平面量扩展以包含一个数值/标志型的闭包单元元素元素字 一个有限寄存器或与有限寄存器具有相同扩展范围的一部分全寄存器中的内容数字字 元素字的一部分,代表一个数值或一个符号特征字 一个元素字的某一部分,具有指示数字字中的表示特性的特征归约 根据所用的特殊编程语言的规则重写/重新构造一个闭包特性状态 一时间结构,例如在一端上统一的一个系列或系列的替换。类似于数学术语集合理论中的空集,它也可简化应用,例如一个“1”在原理上可以是一个特性状态本发明的一个目的是提供一个具有一种陈述性编程语言的计算设备。
本发明的另一目的是提供一个如归约处理器一样工作的计算设备。
本发明的更进一步的目的是提供一个具有一个编程语言的计算设备,该编程语言简单、并使编程员不必考虑所有与硬件相关的细节,并且用该语言写程序花费时间少,而且出错少。
本发明的另一目的是提供一计算设备,它具有作为编程语言的一种语言、操作系统和通讯协议。
更进一步的目的是提供一计算设备能够执行一种函数式语言,该语言具有作为其约束方法的单一化。
上述目的实质上可通过构造一个计算设备而得以达到,该计算设备包括a)一快速存储装置,包含许多存储单元,每一单元中具有能实现一操作的信息,b)至少一个端口装置,连接到所述存储装置,c)至少一个环境装置,连接到所述至少一个端口装置。
最好是包括用于将一端口装置所提供的信号序列与存储在至少一个存储单元中的序列进行比较的装置,在快速存储装置中所存储的序列具有可能没定义的序列元素,以及包括将比较次序重写为零的装置,即表示某事不一致,如果比较给出一个明显的差别。或将所述比较次序重写为一特定次序。
比较装置可以进行成组比较,组中可包含一予定数目的表单元中的至少两个单元。
信号序列最好是一随时间变化具有单一取样周期的一个取样信号,信号序列是元素组表,每一组包括一持续时间和至少一个在该时间内的信号量,每一组中的予定数目的表元素适合于两个组成一对,每一对包括时间和信号量的组合。
可提供用于将所述端口装置的一个与所述端口装置的至少另一个同步来在每一持续时间内对所述接口的信号量作出并行指示的装置,这样在不同端口的信号量可能在同时导出并可以相互比较。
存储单元装置在快速存储器中最好具有某种结构能适用于以一种明确的或隐含的抽象语法编码来存储一计算机程序,所述语法通过表达式来描述一些不同的抽象目标,每一存储单元装置每次可以以适用的数据和/或语法结构形式来存储至少一个所述语法表达式的一部分。
每一种表达式还可以具有一相应的表达式,指示它是一程序形式,所有程序形式都是适用于归约它们本身从而保持有效的表达式,这使得可以为任意形式的其它语言写入编译器和解释器。
重写装置与包含语法表达式的所述存储单元结合根据予定的重规则重写语法表达式。
根据本发明的计算设备最好是具有由硬件构成的说明性编程语言的一台计算机,此时编程语言也是一种机器语言,然而,如同现今的许多电子设备一样,根据本发明的计算设备的连线可以用一个具有解释器或编释器的常用型计算机来模拟,该机器的例子是基于M68000处理机的机器,例如Sun3。然而,根据本发明该机器有一端口可提供一致性。
要执行的一个程序可由闭包方向图来代表,其中程序的每一部分都用一个闭包表示在执行过程中,这闭包方向图根据所用语言的归约规则逐步归约,当不剩下任何可执行的闭包时,程序的执行就结束了。一个闭包方向图可以看作是树结构,树中的每个节点是一个闭包,而最上面的节点称为根。通过归约来执行程序通常就是由下而上归约树结构,最先归约树中离根最远的部分,逐渐接近于根。这种形式的执行方式通常称之为需求驱动执行(demand driven execution)方式,即搁置依赖于其它部分执行结果的程序部分的执行直止得到所需结果出来为止。
为了完整地了解本发明以及进一步明确其目的和优点,可参考下面结合附图所作的说明,其中

图1是根据本发明的计算设备的原理图;
图2是在一端上的一个信号序列的图;
图3示出根据本发明的一个计算设备的一个实施例的原理方框图;
图4大致示出在图3的实施例中的一个目标存储器中的存储单元的不同字段的使用;
图5示出一个函数如何能被存储在目标存储器的一个存储单元中的例子;
图6示出了对外界的一个端口的实施例;
图7示出了一个所谓H端口的实施例;
图8A、8B、8C示出了图3的计算设备实施例中的结构运算单元中的不同类型的寄存器;
图8D示出了一个结构运算单元的实施例;
图9A至9F示出在一结构运算单元中的不同数据存储器格式;
图10A至10H、11A至11G、12A至12H示出了根据本发明的计算设备操作的例子。
图1示意表示根据本发明的计算装置,其中包括一个快速存储器U1,以下称之为快速目标有储器,说它是快速的是因为它包含的每个存储单元都具有能导致计算操作的机会。最好是每个目标存储单元被分为几个存储字段,对目标存储器的相关搜索可以对存储字段的内容进行,一个存储单元可以存储一个单元闭包,一个单元闭包能存储对其它单元闭包的指示作为闭包元,一个函数可作为包括多个相互标识单元闭包的一棵闭包树,对这些特性将在下面作进一步描述。
目标存储器为本发明的计算装置提供一个内部状态,在目标存储器中相应于各个端口的多个内部状态PR1、PR2、……PRn被存储在不同的地方,即不同的存储单元中,若干端口U2至U5连到快速目标存储器U1,端口U2至U5的输入信号RWu2至RWu5可由传感器提供或者是由计算装置以外即真实世界环境中的信息所提供。
一个状态是指基本单元能随时间而变化的一种结构,因此,状态是一个时间结构但并不表示为什么一个结构会变化,时间结构可认为是一个复合过程的状态。本发明的计算装置特别适应于一种说明性的编程语言,以下称之为H,它和命令语言不同,对状态和转换没有明确的说明,相反,所有的状态都用表达式来表述,状态一词指的就是随时间变化的一种结构、一个序列或多个序列中引起改变的一个序列,与数学中集合理论的空集应用相比较,对于所有可能的值,它也使用一种简化的形式。
端口将输入信号转换为适用于快速目标存储器的形式,例如数字形式,并为其提供可与快速目标存储器中的信息相比较的信号形式,这个对于上述端口是内部的信息包括一个或多个可替换的状态PR1、PR2、……PRn。
一个端口Ui(i为2至5间的一个数)可看作为作为一个状态提供的实地环境的一部分,所述状态由一无穷的时间序列值组成,该序列可以树结构存储在计算设备内,下面将作进一步描述。图2表示这种序列的一个例子,取样信号的序列可随时间而变化,即取样周期可以是各别的。由图2可清楚地看出,既可由计算机程序选择也可由外界给出,信号序列在这里可以提供为一列元素对,每一对包括一个持续时间和在此时间内的信号量值,在每一时间周期内,也可能有多于一个的信号量,例如,这种情况可能出现于一个端口,它在每个持续时间内具有一个以上的信号量值或者出现于并行端口,每个端口可能在每个持续时间内处理一个信号量值,端口之间彼此是同步的。
根据本发明,经由端口到其周围设备的输入和输出由在其每一边所提供的联合处理所构成,即联合计算设备中的内部状态以及其周围环境的外部状态。用函数式语言H所写的程序提供到快速目标存储器产生本地状态,实地状态实时地描述一个规程,因此计算装置朝向周围的端口记录计算装置所看见的真实状态,它与计算机中讨论的规程相统一。在本发明的计算装置中这些究竟是如何实现的将在后面作进一步描述。计算装置的内部状态和外部状态都以相同的方式设计,该方式提供一个很精确的操作方式使得计算装置很适合于作实时操作。
因此,计算装置包括至少一个比较的可能性,用于将在一端口提供给周围的一个信号序列与存储在快速目标存储器的至少一个存储单元(在多数情况下是多个存储单元)中的一个序列进行比较,在联合操作过程中,所有那些与实地环境中的状态不相符合的可替换的内在状态都被舍弃,一个正确的程序应该仅有一个可替换状态在统一操作后保留下来,而这一状态必须与正在讨论中端口的状态一致。如果在讨论中的端口上没有一个可替代的内部状态相应于实地环境,那么统一操作后的结果就是“无”,这被认为是一个编程错误。
以上对输入输出端口的描述可扩展到能处理除当前结构之外的其它数据结构的输入和输出,在此情况下,就不是通过统一持续时间和信号量值来将内部响应与外部响应统一,而是对位格式作统一化。输入信号可以是数字化的。进一步而言,输入信号可代表数据结构或程序结构。例如H语言程序。例如,在一端口的一个存储单元中的一个存储单元字段可在端口的输入端与位格式统一。
例子一个施加的内部结构(S1 S2)可同在输入端上的位格式统一,从而最后被统一的内部结构读作施加(+表(12)),这是在图11A和11B中所示出的结构,这里S1和S2代表“任意的位格式”,S1被与代表“+”的指令码的位格式统一,而S2与代表“表(12)”的位格式统一。
经由接受H语言指令的H端口,一个程序可被装入到目标寄存器,H端口也可用于多个处理器之间,使这些处理器能传送程序或数据或两者同时传送,所传送的程序码最初可标记为数据以防止程序码被立即执行。H端口也能用作本发明的计算装置的和另一种计算装置间的接口,该另一计算装置可能先前公知的也就是传统的那种。
在图3所示的计算装置的实施例中,一个目标存储器1包括一定数量的存储单元2,每个存储单元被分为多个存储字段,对此下面会作进一步描述,因为目标存储器的精确结构不是实际发明的一部分,因此不作详细的描述。
一个可以作为目标存储器1的目标存储器将在我们的未决申请NO……中作出描述。
在目标存储器中的每个存储单元可以存储包括若干闭包元的一个单元闭包,目标存储器1通过存储器总线结构BUS1至BUSn连接到一个结构运算单元3,所述总线足够宽因而能将一个存储单元的每一位单元连到单元3,每一存储单元的每一位通过总线结构连到所有其它存储单元的相应位。结构运算单元3可以是目标寄存器1的一个特定部分,在归约过程中,要被转换的闭包被暂时移入其中。然而,也可以具有一个单元3的特殊结构(后面要作介绍),使其可能提供快而直接的归约操作。因为单元3的结构本身不是本发明的一部分,因而不作详细描述。一个可以作为单元3的单元将在我们未决的(Copending)申请NO……中作出描述。
图3所示的计算装置围绕存储总线结构BUS1至BUS11而组装的,使得实际上所有的数据操作设备可对其直接存取,这样,单元3和接口可认为属于快速目标存储器,即作为它的特殊单元。
一个中央控制单元CU控制目标存储器和单元3,也由控制单元CU控制的多个端口4,5,6,11被连接到单元3,两个端口4和5示出是与周围连接的统一端口。一个外设7和8,例如一个传感器或一受控于和/或控制计算装置的设备被分别连接到每个接口,端口6是一个H端口,连接到另一计算装置9,该另一计算装置将程序装入计算装置。端口11是连接到例如同类型的另一计算装置12的一个H端口,该另一计算装置用计算装置1至6,10,11,CU分担传输。若干如图3所示那样的计算装置可直接相互连接起来在它们的存储器总线结构和暂态存储器闭包(没有示出)之间进行传输,在每一个装置中提供一多并行计算装置,这样就能实现全方位的搜索。然而,在一些应用中很方便将两个或三个计算装置或多并行计算装置由一H接口11连接起来使每个计算装置作为一个单独的计算装置而工作,而这些装置彼此传送程序和/或数据以便单独处理,H端口11也可用作与另一种类型处理器的接口,当H端口传送一个程序时,其传输方式与数据的传输方式相同,而且计算装置以相同的方式进行处理。
一个用作特别操作的额外装置10也可联接到单元3,这种设备的一个例子是一数字运算单元,以下称之为数字ALU。然而,该额外装置也可用于比较等等,数字ALU几乎可以是工艺技术相同的任何一种ALU,但一种特别适合本发明的计算装置的数字ALU将在我们未决的某一申请NO……中进行描述。
包含单元3的快速存储器具有至少一种比较可能性,用于将一个端口(如端口4)的一个信号序列与在至少另一端口(如端口6)的至少一个信号序列进行比较,这一比较可能性可通过提供具有数值(例如区间对,每一区间具有一持续时间和一具有信号量值形式的值)的闭包在存储器或在端口直接获得。然而,也可在额外装置10中进行比较。当两个外部状态被比较时,如果比较是不同的,即端口与周围物体的持续时间或信号量值不同时,比较序列重写为“无”,反之,比较序列重写为1和同样的指定序列。
因此,快速目标存储器1,3具有一种结构,能够以一种明确的或隐含的抽象语法编码来存储和执行一个计算机程序,该语法通过表达式来描述一些不同的抽象目标,每一存储单元当时可以以合适的数据和/或程序结构来存储至少一个所述语法表达式的一部分,该语法将在后面作详细的描述。
一个目标存储器1具有比普通的RAM存储器要多得多的智能,它是相关的,且与普通RAM存储器所能提供的“读出”和“写入”功能相比,它能提供更多的服务。
如上所述,目标存储器被分为存储单元2,每个存储单元包括多个存储字段,所提供的服务具有高水平,例如,它能发现一个特殊数据元的存在,不受该数据元是在单个存储单元内的何处,并能采用仅仅一个存储器指令全元内的何处,即在整个目标存储器内,将所找到的特殊数据元重写为一个新的值。由于该目标存储器是相关的,这一重写操作可在两个物理存储周期内进行而不必考虑相应的存储单元的数目。
一个存储单元2的实施例示意于图4。它能存储两种类型元素并包括特别适用于要被存储的元素的存储字段,这些字段在图4中被赋于与其中所存储的元素相同的名字。
每个存储单元可存储下面所列举的特性中的至少某些特性;
指明在所述单元中的表达式是否要被归约的标记;
指明该表达式是否为一棵树中的一部分的标记,以及表达式的特性;
指明表达式是如何产生的标记;
指明该表达式是否组成一些重复状态的标记;
指明该表达式是否仅仅是一个表的一部分,该表具有存储在另一存储单元中的其他表的结构要素。
第一种元素,以下称之为属性元素,描述存储单元的不同状态,一种这种形式的元素是LAZY,它指示该单元或者是空闲的,在空闲时,单元的基它内容被认为是被动信息,确切地说就是处于可被执行的状态,或者是等待,即指对单元估算被延后,并且在其能被执行之前必须等待一个结果。另一个属性元是TYPE,它包含一个类型码(Par,Seq,apply,list,Unify等等)。
第二种元素,以下称为目标元素,描述符号、环境或数值,它们有IDENTIFIER、ENVIRON-MENT、VALUE/DES。这些目标元素适合于存储于在平面HEAD和NUM(见图7B、7C)中所提供的核心寄存器部分中,每一这种元素包括一个元素字,该元素字又按序被分为一个数字字和一个标记字。
第二种元素的闭包元具有一个标记字,指示数字字的特性,该标记有两种,间接标记即用于符号和环境的标记,和直接标记,即用于单纯数值之类的标记。
间接标记的例子有cls、canon和open,如果标记字是cls,表示数字字代表一个可以被归约的闭包,如果标记字是Canon,表示数字字代表一个不能进一步归约的闭包,如果标记字为open,则表示数字字代表的一个闭包是一个被插入的表。
直接标记的例子有discr、cont、Unused和nothing,如果标记字为discr,表示数字字是整数,如果标记字为Cont,表示数字字是一个浮点数,如果标记字为Unused,表示数字字无意义,如果标记字为nothing,表示数字字代表“无”,即对一包含标记为“无”的字段闭包的统一化处理将总是“无”。
如果在一个存储单元中的一个符号字段包括一个符号元素、在该存储单元中的处理状态可以传送到结构运算单元3,以下称为核心单元。每个存储单元字段VALUE/DES可能包含一个符号指示另一单元的闭包,从而提供与该另一单元闭包的连接。环境字段可能包含一个符号指示提供闭包环境的闭包的网络部分即树中的根闭包。然而,环境字段也有其它用途,环境字段可用于通过存储在所产生的所有单元闭包的环境中的生成者的符号来跟踪一个结构的生成者,例如,在一个子树中的所用闭包单元可按具有相同的环境而组成组,在所述子树中,具有相同名子的符号代表相同的物体。这样,仅仅在一次操作中,通过根,整个结构可由树中的一个闭包访问。
标志函数可看作是从一个父到一个子的直接连接,即一个闭包元唯一识别一个单元闭包。具有相关形式的一个目标寄存器的一台机器的特性可表示为闭包的一个方向图。
因此,如果给定一个闭包的环境,在该环境内的根闭包可以找到,一个环境的根闭包在其存储单元的字段WHERE中具有一个特定记号(例如“1”),一个环境的节点闭包具有字段WHERE中的另一记号(例如“0”)。
存储表达式id1=list(par(1 2 3)Par(4 5 6)的一个存储单元的例子示于图5,该表达式是两个并行值组合的表。第一并行组合par(1 2 3)具有全同符号id2,而第二个并行组合par(4 5 6)具有全同符号id3,包括有在树中具有全同符号id1的单元闭包的根存储单元被标记为cls,在LAZY字段具有记号exec,在WHERE字段具有一个“1”置位。在TYPE字段具有记号list,在前两个Value/des,字段中具有id2和id3,这些字段的标记被记为Canon,因为这些字段的内容是间接的并连接到规范闭包单元。包括具有全同符号id2的单元闭包的节点存储单元。在WHERE字段具有一个“0”置位,在TYPE字段具有标志Par,并且具有离散值1,2和3存储在前三个Value/des字段,因此这三个字段的标记记为discr。包括有具有全同符号id3的单元闭包的节点存储单元在WHERE字段具有一个“0”置位,在TYRE字段具有标记Par,并且具有离散值4,5和6存储在前3个Value/des。字段,这些字段的标记因而也记为discr。
如上所述,根据本发明的处理装置具有一个或多个端口用于向装置输入数据或从装置输出数据。每一个端口是向处理装置的外部周围提供通信的单元。该端口最好连接到目标存储器1(见图3)中的一个变换接口(未示),该端口可以看作是目标寄存器的延伸(Prolongation),因为它包含最好是四个具有相似功能的存储单元并与目标存储器单元2(见图4)兼容,该端口通过联合进行输入/输出操作。
目标存储器提供处理器一个内部状态,对每一端口提供一个状态,一个状态是一时间结构的语义上的意义,它可由一闭包结构所代表,时间结构可以认为是由值的一个无穷时间序列所组成的一个处理过程的状态。
对端口的输入信号可以由传感器或处理器之外的设备(即实地环境)所提供,端口将输入信号转换为适应目标存储器格式的数字形式,即转换为一个闭包表示,这一闭包表示是一能与处理器中的内部状态相比较的时间结构,即一个状态,因此,从处理器的角度来看,这一时间结构可看作是一个外部状态。
通过端口的输入和输出由在其每一边所提供的处理过程(即在处理器中的内部状态和在周围设备中的外部状态)的联合所完成,内部状态和外部状态两者都以相同的方式进行修正,该方式提供一个很精确的操作方式使得计算装置很适合于作实时操作。
外部状态一即一个时间序列一的例子示于图2,取样信号的序列能随时间而变化,即取样周期可能是不同的,这由图2可清楚地看出,这里所提供的信号序列可以是一列元素对,每对中包括一个持续时间和在此时间内的信号量值,信号量值标为qi,时间宽度记为ti,这里i是1到6的一个数字。
与外界相联的端口,例如图3中的端口4,可以联到一个传感器7,一般来看,端口的接口能处理各种形式的信号,然而这种接口很复杂并且经常在系统中引入干扰,因此,一个好的接口将具有下述特性1、一个信号在某些时间被测量,在作下一次测量前该被测量的信号被看作是恒定的。
2、时间可以给定为或者是由端口所确定的一个固定周期,或者是由程序或由外部时钟信号所确定的某些时间间隔。
3、被测量的信号以数字形式提供给机器。
4、被数字化的信号或者是布尔形式或者被编码为能指示一个整数或一个浮点值的数字形式。
因此,根据本发明的计算装置并不象通用的处理器那样插入或输出数值,在本发明的处理器中,端口被看作是处理器中的一个程序与处理器外界之间的接口,计算装置适应于函数化程序语言H,该接口是这样的所提供的一系列事件在其一边可看作为一个信号而在另一边看作为处理器程序中的一个H结构。外界设置它的物理图象部分,以及处理器部分,这是由端口边或接口边同时进行的,从而这两者将是同一物体的图象,这使得计算装置的实时图象可能是一接近真正实时的一个实时图象。
程序被存储在快速目标存储器中并产生内部状态,程序的执行是基于在计算装置中的程序和外界两者都在接口中经历事件的同样的实时过程。
程序将接口描述为一个数值对和持续时间的无穷长系列,即每一个信号值在持续时间期间延续,因此,在每一时间间隔内(包括一对信号值和一个持续时间)接口描述持续时间长度和值。所有同样的信号和持续时间对按次序提供,端口将一实时状态转换为相同形式的表格。
计算装置的输入和输出是由统一得到的,这意味着在每一时间间隔内的持续时间和值在端口的两边以相同方式形成。
程序可以确定一个特定的信号量值,或者它可通过采用一个特殊的信号舍弃不确定的信号量值,例如S指示所有可能的值。
一个正确的程序在联合操作之后应该仅有一个替代状态存在,并且这一状态必须与正在讨论的端口的状态一致,如果没有替代的内部状态与正在讨论的端口的实际环境相应,那么联合操作将给出nothing作为其结果,这被认为是一编程错误,因为nothing代表矛盾。如果在联合操作后有一个以上的替代状态存在,也被认为是一编程错误。
当内部状态给定一特定信号值,也称为信号量值时,这一特定信号是对外界的输出,如果内部状态舍弃不确定的信号值,那么一个特定信号是从外界输入。
当内部状态给定一时间间隔内的一特定持续时间时,那么外界容许一任意的持续时间长度,如果内部状态没有确定持续时间长度,那么外界就确定该持续时间。
因此装置是对称的1、具有表达式during的一个时间间隔包括一持续时间和一信号量值。
2、时间间隔在一程序中由during 持续时间 信号量值形式来描述。
3、外界可能以不同的方式来描述这一时间间隔,如上所述。
4、端口在其两边定义信号量值,这意味着一个信号量值必须是确定的,计算装置中的程序设置指向计算装置这边端口的一个持续时间或一个信号量值,在一确定的持续时间内形成一输出并且/或者一个信号量值馈入到指向外界一侧的端口的导体。
一个用于输入和/或输出时间间隔的端口的实施例示于图6,端口被连到结构运算单元3或直接通过总线结构DU连到目标存储器1,在总线结构DU中的每一总线代表具有例如38根导线的一根总线,端口由中央单元CU控制,端口包含一符号寄存器PID,存储在寄存器PID中的符号能用作为目标存储器1的一个符号,即能用于将端口连接到目标寄存器中的单元闭包。这一符号仅在处理器内部使用。端口还包含一个符号寄存器CEID,它与寄存器PID的使用方式相同。端口还包含一些存储单元CEDU、CELAST、CENEXT、CEID,每一个基本上是思维的产物并如目标存储器1中的存储单元一样起作用。
每个存储单元存储具有用于存储三个闭包元素的至少三个存储字段的一个闭包。例如during,持续时间和信号量值。
至少两个后提及的闭包元素能存储在数值/指示类型的存储字段中。表式式during可在一个TYPE字段中提供。由于端口总是提供一during操作。该TYPE字段可以略去。
然而,在图6所示的实施例中,during在一(类型)字段中以type′apply(′
)(位置)形式和一预定的函数名(during码)在一起,函数名存储在端口存储单元的第一个数值/指示字段,如同对属类型′APPly的所有函数名(例如+ - ↓ /)那样。during码可以是指示存储在目标存储器中的一函数定义的一个符号。
一个标识符id也可存储在数值/指示字段,该标识符将端口结构与目标存储器中的一个during结构连接起来。
如果不需要包含一个标识符的一个字段,那么在图6所示的实施例中实际仅仅需要三个数值/指示字段。然而,可提供一个标记为unused的第四个数值/指示字段以便使端口寄存器与计算装置中的其它存储单元一致。然而这时也可能将一个用于数值进/出的额外设备连接到这第四个数值/指示寄存器,这将使该端口成为用于一组数值的端口,即用于持续时间和两种信号量值的一个端口。
因此,端口中的每一存储单元还可能有属性字段,至少最后所提及的存储单元可以连接到总线WO1,WI1,WT1,WE1,WT2,WV2,WE2每一总线具有例如38根导线,并以一位一根导线方式连到每一寄存器的位单元。下标I表示可连到寄存器的during码字段一根总线,下标T可连接到寄存器的持续时间数值/指示字段的一条总线,下标V表示可连接到寄存器的信号量值数值/指示字段的一条总线,下标E表示可连到寄存器的额外数值/指示字段的一条总线,下标2代表与外界相连的总线,下标1代表通过一传送器(没有示出)连到快速目标存储器1,3的一条总线。
注意到,包括′
的类型字段和包括during码的第一个数值/指示字段实际上可以略去,因为它们之中的信息总是相同的,因而可包含在中央控制单元CU中。因此,可以有一个端口,它具有仅包含两个数值/指示字段的存储单元,一个字段用于持续时间,另一个用于信号量值(没有示出)。
在所示出的端口的实施例的四个存储单元中存储紧接先前的闭包,当前的闭包,下一闭包以及对未来闭包的标识符,存储单元可能有指定的位置从而其中的全部内容可在它们之间传送,寄存器中每一个位单元的一个合适结构与结构运算单元3中的位单元具有同一结构,并示于我们未决的申请NO……中。
然而,也可以将三个最先提及的存储单元作这样的安置,它们可以通过变化其命名来变化彼此的位置,命名是由中央控制单元CU的控制来完成的。
端口可以具有不同数量的存储单元,例如,一个存储单元。
端口包括一个时间计数器TCOUNT,它由来自中央控制单元CU的时钟信号CLOCKp控制并测量时间,它可由外部复位信号或来自控制单元CU的复位信号复位,时间计数器TCOUNT连接到一个第一选择器SEL1,该选择器由中央控制单元CU控制将时间计数器TCOUNT的输出或者直接连到可与存储单元中的时间存储器字段相连的总线WT2或者连到一个时间比较器Tcomp的一个第一输入。时间比较器Tcomp的第二输入被连到总线WT2,时间比较器的输出是一个外部时间输出,该输出还传送到控制单元CU。
端口还包含一个外部数值和输出端口引线VALUE IN/OUT,它被连到一个用于输出信号的转换器CONVOUT,例如一个数/模转换器,它也连到一个用于输入信号的转换器CONVIN,例如一个模/数转换器形成对输入信号采样,取样时间可由时间比较器Tcomp的输出确定或由到时间计数器TCOUNT(没示出)的复位信号确定。一个选择器SEL2连到总线WT2,该总线可控地连到存储器单元CEDU、CELAST、CENEXT的信号量值寄存器,该选择器通过中央控制单元CU的控制选择一个信号量值是馈出或馈入端口,控制单元CU读出包含有连到外界的寄存器的存储器单元中寄存器的内容看其中是否包含一个特殊信号$,该信号表示寄存器中的值量任意的,并且可变化为任意可能的值,因此,控制单元CU据此来控制耦合到寄存器的端口选择器。
也可以制造一个更复杂的端口,例如,VALUE IN/OUT的信号量值可由存储在用于输入值的转换电路CONVIN和用于输出值的转换电路CONVOUT中的一个公式来转换,转换函数可以是一些积分,每个积分用于种类不同的信号值之类。
在每一持续时间内也可以取两个值,例如一个在持续时间的起点另一在其末点,并将其中之一直接存到数值/指示字段,并在一斜率计算装置(没示出)中馈入两个测量值和持续时间,该斜率计算装置的输出例如可被存储在额外的数值/指示字段(没示出),即是用于VALUE IN/OUT的额外选择装置。
馈出的信息由存储器单元CEDU提供,因此该单元具有信息during 持续时间 信号量在该寄存器中的信号是已知的,因此应当馈出,信号量从存储器单元中的信号量值寄存器中取出并通过起驱动级作用的选择器SEL2和转换器CONVOUT馈出。
在存储器单元CEDU中的信息是during 持续时间在这一寄存器中的信号量值是未知的,并且寄存器准备接受一信号量值,信号量值从端口信号量值输入/输出中取出,在A/D转换器CONVIN中数字化,然后输入到存储单元CEDU的信号量值寄存器中。
在存储器单元CEDU中的信息是during 持续时间 信号量值持续时间是已知的,在持续时间的开始时间计数器TcounT被中央控制单元CU复位,在计数器TcounT中连续升高的时间通过时间比较器Tcomp与存储器单元CEDU中时间寄存器中的时间进行比较,当两者相同时,持续时间结束。
在这一持续时间内,存储器单元CELAST被空出而存储器单元CENEXT被填充,在转换到下一周期时存储器单元CEDU中的内容被移到存储器单元CELAST,在存储器单元CENEXT中的信号量值被移到存储器单元CEDU。
在存储器单元CEDU的信息为during $ 信号量值因此,持续时间是未知的,外界将确定该持续时间,时间计数器TCOUNT在持续时间的开始由外部控制复位,在TCOUNT中连续升高的时间被馈入存储器单元CEDU的时间寄存器,当外界给出下一次外部复位时,该持续时间结束。因此,外部复位信号或直接或通过时间计数器中的一个零信号来控制选择器断开与时间计数器连接。
在这一持续时间内,存储器单元CELAST,被空出而存储器单元CENEXT被填充,在跃迁到下一周期时,存储器单元CEDU的内容被移入到存储器单元CELAS,而存储器单元CENEXT中的内容被移到存储器单元CEDU。
为了说明端口的操作,下面给出一个小例子假设我们想检测两个不同的序列之一,第一个序列的所有第2个信号量值都是确定的,即值为17,并且所有持续时间确定,即为1秒,第二个序列的所有信号量值都确定,即1,2,3,4等等。但持续时间未知,要使用的端口称为Port1,闭包表示为unify(Port1"内部状态")这里“内部状态”是alt操作,它指示所有可替代序列,即一个具有下列形式的大数据结构。
alt(seq(during(1S 17)during(1S $)during(1S 17)……)seq(during($,1)during($,2)duirng($,3)……))现在,如果输入信号序列可通过上述结构统一,那么该输入被接受并采取适当的操作。被接受的序列的一个例子是((1S 17)(1S 0)(1S 17)(1S 99)(1S 17)这是一个与上面给出的内部状态的第一序列一致为一个序列。可被接受的另一序列是((2S 1)(4S 2)(1S 3)),该序列将与内部状态的第二序列一致。一个不被接受的序列例子是((1S 2)…),因为信号量值即2不能与给出的内部状态的两个序列的信号量值一致起来。
示于图7中的一个H端口的实施例试图将本发明的两个分离的计算装置彼此连接起来,属于第一计算装置的H端口的那一半包括一个类型字段TYPE11,四个数值/指示字段V/D11,V/D12,V/D13,V/D14,以及一个标识符寄存器IDF11。属于第二计算装置的H端口的那一半包括一个类型字段TYPE21,四个数值/指示字段V/D21,V/D22,V/D23,V/D24,以及一个标识符寄存器IDF21,在图7所示的实施例中端口两边的类型字段和数值/指示字段各用一根总线连接,传输通过串联总线进行。
因为具有尽可能少的物理连接优点较多,因此最好的操作模式是通过一个串行总线在对分端口传送数据。然而,与对每一存储字段采用一条传送总线相比,这种传送方式将使中央控制单元CU中的内部控制线路更复杂。将并行数据转换为串行数据的接口或者反过来将串行数据转换为并行数据的接口未在图7中示出,因而也未描述,因为对本领域的技术人员而言这是很熟悉的。
H端口的每一半被分别连到控制单元CU1和CU2,CU1和CU2分别控制它们所属的计算装置,控制单元的CU1提供一个与另一控制单元CU2同步的同步信号SYNC,当进行一次传输时,H端口的一半在除标识寄存器之外的所有寄存器中包括特别符号$,这种情况由控制单元指示,然后接收另一半的相应寄存器中的内容。
当一个程序的大数据包通过一个H端口从一个计算装置转换到另一计算装置中时,标识符必须在适应标识符号数内部分配的接收计算装置中进行改变,以便避免同一号码的重复使用。因此当将变换闭包中的每一标识符变为新的标识符并将其存储在目标存储器中时,一根树或者从其根部转移到叶(这是可取的)或从叶转移到根。
新编语言H采用具有三种情况的一种状态其形式为p t a其中p.t和a是三个不同的修正变量,p.t和a参数分别模拟并行(Parallelism)、序列时间和替代作用。它们可以分别作为标记不同并行作用,不同事件和替代作用的下标。这三种情况在实施由特定结构用命令语言所描述的若干种状态时是很有用的。它们是共同的中心思想,即是H语言特征的核心。根据本发明的计算装置的结构因而适应于具有这三方面情况的处理状态。值得注意的是,在某些应用中,模拟变量可能是一个以上的值,即在同一时间可能发生多个替代事件。
如上所述,归约操作最好在一特定的结构运算单元3中进行,当归约进行时,单元闭包的有限的树被传送到该单元3中。
现在将给出结构运算单元3(核心单元)的一个实施例并作一简要说明,说明存储在目标存储器中的表达式和数值将在核心单元3中的寄存器中如何具有它们的对应物以及在目标存储器1和核心单元之间如何配合。
可作为核心单元实施例中的寄存器示于图8A至8C,可以用于核心单元实施例中的寄存器的结构示于图8D。
在图8A中示出了一个寄存器,图中表示寄存器由寄存器单元组成,每个单元能存储一个信息位,寄存器画出的方式是要示出一个寄存器通过在核心单元中的不同平面延伸,每一寄存器单元位于一个平面。
图8B示出了一个寄存器,它延伸到核心单元中的所有平面,即是一个全寄存器,这种寄存器在其位于核心单元中NUM和HEAD平面的寄存器单元中将有一标识符或一个数值。如上所述,它在位于核心单元中TYPE、WHERE。LAZY以及clos/SMPLE平面的寄存器单元中还持有一状态。
图8C示出了一个寄存器,它仅仅延伸到核心单元的NUM和HEAD平面,是一个有限寄存器。
图8D示出了核心单元实施例中寄存器的一个可能构造,核心单元最好具有按正方形安置的基本寄存器,称为基本寄存器矩阵。基本寄存器在其各边有一主行,称之为主寄存器。基本寄存器的列在其底部各有一个主寄存器,该列称为辅助寄存器。核心单元还可以具有一个标识符寄存器和一环境寄存器,一行从属寄存器位于基本寄存器矩阵的边上。
在核心单元的一个实施例中,辅助寄存器可以是图8C中所示的那种寄存器,即有限寄存器,而图8D中的其他寄存器可以是示于图8B中的那寄存器,即全寄存器。
对核心单元硬件结构更详细的描述参见我们的未决申请NO……,不同的数据存储形式的简要说明将参照图8A至8F,它的一些操作实例将参照图10A至10H,11A至11G,12A至12G给出。
如图9A所示,作为一个归约结果的一个简单值25出现在主寄存器的一个特别寄存器中,这个结果可能是一个单元闭包的一部分。
一个目标是装入核心单元的以便进行归约的事件。如图9B所示,一个包括仅仅一级的目标(最典型的是不参考其他单元闭包的一个闭包)存储在主寄存器中,例子中示出了一个简单的数字操作,即数值1,2和3相加。数字指令(+)存储在每一个主寄存器中,而欲处理的元素存储在其它主寄存器中。
如图9C所示,包括一个二级结构的一根树具有其根表,它是父,水平地存储在主寄存器中,而将作为子的表,垂直地存储在基本寄存器中。在这一例子中,具有表示表((12)(34))的结构存储在基本寄存器矩阵中,作为子表中最先元素的根表,即1和3被存储在主存储器中,而子表,即(1 2)和(3 4)被垂直地存储于辅助寄存器中。使用这种寄存器的例子在下面给出,参见图9A至9H。
如图9E所示,包括一个三级结构的目标树具有存储于一个辅助寄存之中的根,将其单一的子存储在主寄存器中,在图9D中,目标树的根(是指令转移)存储在一个辅助寄存器中,而其子(即表(id1id2 id3))存储在主寄存器中,在这表中的每个元素按顺序是具有子的一个父。在图9E中,这些子被垂直地装入基本寄存器,在那里id1被调换成它所指示的表,即(1 2 3),id2被调换成(11 12 13),id7被调换为(21 22 23)。
如图9E所示,以流水线模式存储的一棵树将目标表装入到主寄存器,将目标的父存储在辅助寄存器中,并且它具有存储在这两种寄存器中的将要被处理的元素和指令,当归约数字表达式时,最好采用流水操作模式,一个优点是瞬态结果可以马上存储在核心单元而不是目标寄存器。
因此,依赖于树结构的级别和所要进行的操作,目标树的根表最好存储在核心单元中寄存器的不同位置。
特别适用本发明的计算装置的语言称为H语言。解决复杂性问题的传统手段是通过将所有复杂东西隐藏起来而将简单东西放在表面,从而更增加了复杂性,根据本发明的计算装置采用相反方法,所有不必要的软件级别都移走。H语言在机器中作各种用途作为机器语言,编程语言,操作系统和通讯协议。然而,如同现有的所有电子设备一样,本发明的计算设备的线路可以在一个具有解释或编译程序的计算机中模拟,这种机器的一个例子是Sun3,然而,该机器必须有一个可以提供一致性的端口。
传统的逻辑编程语言将分辨率和一致性作为主要的语义特性,备有H语言的本发明的计算装置对分辨率和自由变量采用模式匹配,并且在归约语言中对一致性采用模式匹配。存储在存储器单元字段中的H语言中的目标具有并行存在,次序存在和交替存在的特性。
目标树的根是可归约形式的一个闭包,例如Unify,alt,apply,在某种意义上也是par和Seq,因为它们有时能被归约为“无”。在函数应用apply(也称为
)中第一个元素是一个指令(+ - */during),该指令直接由硬件解释,或一标识符间接指示一个用作函数定义的闭包结构,其余的元素是指令/函数定义的自变量。如上所述,本发明的计算装置适应于处理特殊的称为H的解释性语言。该语言一抽象句法和语义来定义。
句法通过表示式来描述一些不同的抽象目标,可使用下面的基本表达式port,nothing,alt(list),par(list),seq(list),
unify(list),during(list),Cont(v),period(v)。
其中(list)在包括在表达式的目标存储单元(S)中指定为数据元素形式(e1,……en),V是一个实数。
因为在本发明的布线应用中每一存储单元都有一个有限数量的数值/指示字段,一个表可被存储在一些存储单元中,要注意到,如果用通用形式的计算机来模拟目标存储器结构,那么可模拟的存储单元可能具有可变数量的存储字段。
Port 表示一个物理端口的表达式,即一序列的during,它是一个特殊形式的间接元素。
nothing 表示矛盾的一种特殊数值。
Alt 指示包含有这一表达式的该存储器单元中含有认为是可替代元素的表列元素。
par 指示包含这一表达式的存储器单元中包含认为是并行元素的表列元素。
Seq 指示包含这一表达式的存储器单元中包含认为是顺序元素的表列元素。
Unify 指示包含这一表达式的存储器单元中包含认为要被一致化处理的元素的表列元素。
During 指示包含这一表达式的存储器单元中包含表列元素,该表or 列元素给出持续时间,在该持续时间内将发生某事。
(··)Cont 指示一个空间量,该空间量沿具有长度V的一个距离具有极小量的状态。
period 指示一个时间宽度,该时间宽度在宽度为V的时间内具有若干极短的状态。
位于表列中的元素以数值存储在数值/指示字段。
为与存储单元配合的中央控制装置CU建立了重写功能,因而控制装置中包含重写规则,它根据予定的重写规则来重写所述句法表达式。
中央控制装置最好是一布尔门阵列,它们连接起来以读出存储的表达式,并根据所建立的规则来提供重写操作。当时只有一根树的一部分需要读出。具有根据所建立的协议在组成的输入端起作用的提供组成的输出功能的布尔门阵列的指令在出版物“Introduction to VLSI Systems”中作了描述,该出版物作者Carver Mead和Lynn Conway,Addison Wesley出版公司1980年出版。
重写规则如下altalt() →nothingalt(e) →ealt(e1…nothing…en) →alt(e1…en)即值nothing被略去了alt(e1…alt(c1…ck)…en) →alt(e1…c1…ck…en)parpar(e1…nothing…en) →nothing如果e1至en中任意一值为nothingpar(e1…alt(c1…ck)…en) →alt(par(e1…c1…en)par(e1…ck…en))
par(e1…en) →par(e1…en)在相反情况下SeqSeq(e1…nothing…en) →nothing如果e1至en的任意一值为nothingSeq(e1…alt(c1…ck)…en) →alt(Seq(e1…c1…en)Seq(e1…ck…en))Seq(e1…en) →Seq(e1…en)在相反情况下UnifyUnify() →nothingunify(e) →eunify(e1…en) →e1如果所有e1至en都是相同的unify(e1…en) →nothing如果e1至en中有任意一个与其他的不相同unify(e1e2e3…en) →Unify(unify(e1e2)e3…en)unify(e1…en) →nothing如果e1至en的任意一值为nothingunify(e1…alt(c1…ck)…en) →alt(unify(e1…c1…en)unify(e1…ck…en))当存储在目标存储器中的一种树结构要被归约时,树结构的至少一部分要传送到单元3,在单元3中处理一种树结构的不同的可能性的进一步描述将在下面给出,作为图3结构的一个特殊实施例。
控制单元cu读出现在存储在单元3中的单元闭包的TYPE字段,并根据上面提到的重写规则重新安排单元3中单元闭包中的内容,并将重写的结果送回存储在目标存储器1中。如果重写结果归约为一个值或nothing。控制单元通过目标存储器作全面搜索,将指定为归约结构的父的存储字段中的内容改变为归约所产生的值。
采用这些句法规则的操作方式将举例说明,在下面例中没有说明的句法规则与说明的那些例子很相似,当结合下面的例子考虑时,对本领域的技术人员而言很容易理解。
例1图10A至10H中所示出的第一个例子是以可归约闭包给出的并行值的一致化。
Unify(par(1 par(1)3)par(1 par(1)2))这是一个可归约闭包,其中将进行一些并行统一化处理,这一可归约闭包将重写为统一化的一个并行结构。
图10A表示最初的可归约闭包,图10B表示这可归约闭包是如何存储在目标存储器中的,存储可归约闭包的不同部分的存储的单元在10A中标出。元素闭包和单元闭包之间的联线在图10B中标出。具有标识符id1的单元闭包记为CLS,并在类型字段具有类型码unify,而具有标识符id2,id3和id4的单元闭包在其类型字段具有类型码par。具有标识符id1的单元闭包包括作为其最初两个数值/指示的的指示具有标识符id2和id4的单元闭包的闭包元素,这些单元闭包标记为Canon。具有标识符id2的单元闭包具有它的第一和第三个数值/指示闭包元素,该闭包元素具有标记为discr的离散值,并具有它的第二个数值/指示闭包元素,该闭包元素指示具有标识符id3的单元闭包并标记为Canon。具有标识符id3的单元闭包具有它的第一个数值/指示闭包元素,该闭包元素具有一个整数并标记为discr;具有标识符id4的单元闭包包括作为它的第一和第三个数值/指示的闭包元素,该闭包元素具有标记为discr的离散值,并包括它的第二个数值/指示闭包元素,该闭包元素指示具有标识符id3的单元闭包,因而标记为Canon。
如图10C所示,具有标识符id1的单元闭包的存储器单元中的内容首先被装入核心单元,当在id1在包括闭包的类型码unify的情况下,该核心单元将其标识符id1放在该标识符存储器中,并在第一操作步骤中将作为目标的数值/指示元素放在主存储器中。
如图10D所示,具有标识符id2和id4的子被纵向地装入到基本寄存器中,这样在其第一数值/指示元素中的内容被放入标有它的标识符的主寄存器中,而在寄存器中的它的其余的数值/标识符元素放在其上的纵列寄存器中。每个这些子的类型码par也装入到主寄存器,类型码装入到位于TYPE平面的寄存器单元中。
如图10E所示,基本寄存器中的内容被转置90°,这样在基本寄存器的第一个纵列中的内容被放在主寄存器中,而第二纵列放在平行于主寄存器的基本寄存器的一行中,在标识符寄存器和主寄存器中提供的类型码par和unify可进行交换,这是由控制单元自动完成的。现在基本寄存器包括具有位于纵列中的三个子的一个父。
每个子现在采用指令make装回到目标存储器,作为来自目标存储器的回答,所存储的子的标识符被提供并存储在主寄存器中,可以看到,根据其中所发现的信息,控制单元CU(是一种门阵列)检测特别位于平面CLOS/SIMPLE到平面TYPE的寄存器中的内容并提供指令,即控制这个门和这个开关。子在id1之后按序命名,已经占据的名字就不再使用。然而,命字次序无关紧要,因此可以是任意的。
如图10F所示,第一个子取得标识符id2,包含有占据标识符id3的元素闭包的第二个子取得标识符id4,而第三个子取得标识符id5。具有连接到具有标识符id2,id4,id5的单元闭包的父保持其标识符id1,然后存储在目标寄存器中。
图10G表示存储可归约闭包Par(Unify(1 1)Unify(par(1)par(1))Unify(2 3))的存储器单元,可归约闭包本身示于图10H,图10G和10H按如图10A和10B的相同方式示出,因此可以自己解释。
在图10G中也表示具有类型码unify的单元闭包在LAZY字段中给定标记为exec,而具有标识符id1的单元闭包给定标记为wait,这表示标记为exec的单元闭包应该在由标识符id1所指示的单元闭包之前执行以便将其内容归约为值。
在图10H中的闭包在随后的某一时间可被装回到核心单元以便进一步处理,例如,具有标识符id2的单元闭包具有值1,因为其数值/指示元素中的值1和1是相同的,而具有标识符id5的单元闭包导致结果为nothing,因为其数值/指示元素中的值2和3不相同。
在最佳实施例中每一次统一化都可在数字ALU中进行,该装置在比较器中对值进行比较,并将结果提供给控制单元CU,然后,控制单元设置其布尔门阵列相应地在核心单元的第一个主寄存器中提供信息。当归约结果为规范符号或简单值或nothing时,该结果分布在目标存储器的所有存储字段,所述目标存储器可被操纵去存储第二种类型的元素闭包,这样每一个对归约的闭包的间接指示被变化为数值的直接指示。
例2
这个例子是一个硬件指令list expansion。意指单元闭包包括一个插入的表,这种类型的指令是其它归约中的一个辅助步骤。
机器产生一个示范化指令的归约,称为ex.type,ex.type可包含下列形式ex.type(1 list(2 3 list(4 5 6))7)的值和表的任意一种指令,该形式示于图11A,其单元闭包示于图11B。图11A和11B的标记方式与图10A和10B相同,因此可以自己解释。
如图11C所示,具有标识符id1的单元闭包装到具有其标识符的核心单元的主寄存器中,而类型码装到标识符寄存器中,由于在第二个主寄存器中的内容用一间接元素open标记,它所连接到的单元闭包id2被纵向地装入到基本寄存器中作为一个子,而这由图11D可清楚地看出。
然后,硬件指令list expand将在第三个主寄存器中的离散值7移到第三个基本列中除id4以外的位置,并将第二个主寄存器之上的第二列中的表的部分移到第三列,该第三列将其最低元素(值3)放在第三个主寄存器中并给予其类型码list(见图11E)。由于在第二个主寄存器中的内容是一个离散值,因而它具有标记discr。
然后产生了一个新表展开式,只要将主寄存器之上的第三列中的内容放在归类为List的第四列。在第三主寄存器中是一离散值的内容被标记为discr,如图11F中可明显看出。
随后,在第四列中的表采用硬件指令make存储在目标存储器中,它被存储在具有标识符id2的存储器单元中,因为该存储器单元是空闲的,而标识符id2的部分被送回到核心单元被存储在第四个主寄存器中,如图11G所示那样。
随后进一步进行ex.type归约,当出现一个规范结果时,归约的结果被装回到目标存储器中。
回到图3,根据本发明在一端口操作的基本思想是将外界7,8和快速目标存储器1,3的双重状态看成是一致的,即导致在每一持续时间内信号量值仅得到一个通用的确定的值。
为了了解操作方式,给出下面的例子具有一个输入端口和一个输出端口的一台机器是要在输出端提供符合一致的输入信号量值,存储在机器中的程序因而是Unify(par(portinportout)“机器状态”)这里“机器状态”是一个alt操作,它指示所有可想到的输入和输出的序列对,即具有以下形式的一个大数据结构。
alt(seq(par(during(1s 1)during(1s 1))(par(during(1s 2)during(1s 4))(par(during(1s 3)during(1s 9))…)(seq(par(during(1s 1)during(1s 1))(par(during(1s 3)during(1s 9))(par(during(1s 2)during(1s 4))…)(seq(par(during(1s 2)during(1s 4))(par(during(1s 1)during(1s 1))(par(during(1s 3)during(1s 9))…)
(seq(par(during(1s 2)during(1s 4))(par(during(1s 3)during(1s 9))(par(during(1s 1)during(1s 1))…)(seq(par(during(1s 3)during(1s 9))(par(during(1s 1)during(1s 1))(par(during(1s 2)during(1s 4))…)当输入端口开始输出其值时,在核心单元中进行的归约操作将连续地消去在变为nothing的替代操作alt中的所有分支,即所有不适合的分支。
在核心单元执行下面的归约规则格式表达式Unify(par(port1…portn)seq(par(during(q11t1)…during(qlnt1))…)(par(during(qk1tk)…during(qkntk)…)被重写为nothing或重写为表达式
Seq(par(during(q11t1)…during(qlnt1))…(par(during(qk1tk)…during(qkntk)…)这有赖于来自环境的信号与表达式作比较。在Seq中每个操作par的所有during需要相同的时间。为了使所有during操作同时开始和结束,需要进行同步。
重写上述表达式的一种替代方式是将其重写成nothing或重写成表达式Seq(during(par(q11…qln)t1)…(during(par(qk1…qkn)tk)…)这有赖于环境的信号与表达式的比较。
在所给的例子中采用第一重写规则时,隐含了下面的归约规则Unify(par(e1…en)par(h1…hn))→→par(unifye1h1)…unifyenhn)对Seq也是同样。一旦输入值与机器中的相应值不一致,即不一样,那么结果就是nothing。这将一直波及到alt操作,从而整个分支从alt表达式中消除。
构造一种数值能送进机器中并能从机器中传出来但赖于外部信号是否确定。赖于机器值是否确定(具有值$)的端口的独创性在于机器并不限于上面所描述的简单的输入端口和输出端口系统,因此,可以写一个程序,其中端口交替地写入机器或从机器读出,与此相关的例子是下面的程序Unify(port“机器状态”)该程序具有机器状态alt(Seq(during1s 1)(during 1s 1)(during1s 2)(during1s 4)(Seq(during1s 1)(during1s 1)(during1s 3)(during1s 9)(Seq(during1s 2)(during1s 4)(during1s 1)(during1s 1)(Seq(during1s 3)(during1s 9)(during1s 2)(during1s 4)等等。
即(Seq(during输入)(during输出)(during输入)(during输出))在该机器状态中,外界提供一个数值,机器通过在下一时间间隔内馈出与其一致的值作出回答,该方法对数据如何以简单方式流动作全面的控制。
单元3与端口联系并适应于将端口的输入以序列形式存储在目标存储器中,它是以下述格式的表达式提供的Unify(端口seq(duringt1q1)…seq(during tk qk)…)当这一表达式被归约时,依赖于从外界而来的信号与表达式的比较,中央控制单元CU中的协议将这一表达式重写成nothing或重写成表达式Seq(during newt1newq1)…Seq(during newtknewqk)…在该表达式中newti是数值对序列中第i个时间间隔的一个新的持续时间,而neqi是一新的信号量值(见图2)。
如果端口的信号具有图2的形式,如果信号中的值qi与Unify表达式中给出的相应值qi不同,或者如果信号中的值ti与在Unify表达式中给出的相应ti不同,那么上述Unify表达式在单元3中将重写为nothing。反之,Unify表达式被重写为Sep表达式。如上所述,在Unify表达式中可提供一特殊符号$,表示该值可以是任意的。
如果表达式中的数值ti或pi(i为任意整数)是$,那么随着被测量的值ti或qi的插入,将重写相应的newti或newqi。
相应地,当Unify表达式中的取值ti和qi为特定值时,如果来自外界的信号是不确定的,那么在时间ti内信号强度由端口(见图6)的数/模转换器CoNVout提供为qi,而Seq表达式中的newti和newqi与Unify表达式中的值ti和qi一样。
根据上面所描述的系统,可能存在的所有状态都可以作番描述,不幸的是程序可以极大。为了处理这种情况可插入另外的程序结构,其中最重要的是Symb,Lambda和apply。
用于H语言的有用的一个完整的句法可能包括下面的句法表达式cont(v),delta,period(v)deltat,par(list)seq(list),′alt(list),′con(list),′pri(list),′Lambda(list),
′hide(list),′symb(list),′unify(list),′set(list),′apply(list),alt(list),nothing,con(list),pri(list),unify(list),lambda(list),hide(list),Set(list),apply(list),Symb(list),discr(n)pulses(n),其中句法表达式在存储器单元的类型字段以编译形式被提供为操作符。
因此,每一表达式都是一个以一表达式形式存储在一个目标存储器单元的操作符,在(list)中的每一个元素是指示一个状态的表元素,n是一整数,V是一个实数。每一元素都可被存储在包含该表所属的所说表达式的存储器单元中的存储器字段。
表达式cont(v)(其中V是一个实数)表示沿具有长度V的一个距离具有无限个极小状态的一个空间量。period(v)(其中V是一个实数)表示在具有时宽V的周期内具有无限个极短状态的时间宽度。
表达式delta表示在空间具有极小扩展并且有不确定时间宽度的一个状态。表达式deltat代表在时间上具有极小扩展,在空间上具有不确定扩展的一个状态。
在空间的一个整数扩展可按以下方式编码为delta的一个par0=par( )1=par(delta)2=par(delta delta)…5=par(delta delta delta delta delta)等等在时间上的一个整数扩展可按同样方式编码为deltat的一个par。
因此一个整数(discr(n))可表达为一种极微单元delta的一个平滑组合。
量的非常重要的应用是在一个during操作中作为一个元素,在这一操作中,量可用来指示时间和空间,因此采用相应于称为deltat的delta的时间。
delta在空间极小,而在时间上无限deltat在空间上无限而在时间上极小上面的表达式以和句法表达式相同的方式存储在目标存储器中。
机器几乎瞬时将插入的所有表达式归约为它的值,例如表达式apply(+ par(2 4))被直接归约为值6,这使得当程序设置后不能访问该程序,不可能将程序分为许多部分而对各部分进行运算。
为了对付上述问题,引入一个并行于基本语言的被动的格式,它们被称为程序格式,它们对它自身进行归约(它们是规范的),因而保持不变。它们可以被划分为几块。
一个函数plusrevary可按下面的方式定义Unify(Symb(Plusrevary)Lambda(par(Y X)′apply(+par(X Y)))它根据上面的程序给出程序格式′apply(+par(2 4))以相反的次序给出正量设置的自变量,par(42)。
为了将一个存储的程序格式转换为相应的程序,采用了一个标准函数eval。因此程序被复制,“blips”被消除,程序自然被进一步归约到它的值。
apply(Symb(eval)′apply(+par(2 4)))
=apply(+par(2 4)))=6分解程序格式的可能性使“reason over”程序简单化,这使得采用具有H语言作为其基本语言的机器为任意一种其它语言写解释和编译程序变得简单化。
总之,所有的结构(例如delta,par)都有前面贯以′作为词法单元的第二种格式(例如′delta,′par),该词法单元指定该格式为程序格式。值得注意的是,在一程序格式中只有实际的结构而不是整根树。为了将整根树指定为程序形式,所有的结构都必须标上′。
如果程序格式(具有′的)中的表包括nothing,那么表达式将被转换为nothing。
需要用作定义,例如定义Sqr的机理在上面作了描述,然而还需要以小定义的组合形成一程序的最佳机理。我们需要建立一个看作为具有一些辅助定义的一个主表达式的程序,这可借助于Con(list)来实现。
ConCon结构包括一个显露值V和多个不显露值ei,i是1到n之间的一个整数。
Con(v e1e2e3…en)这种结构具有等于第一元素V的值。然而如果表是空的或该表中的任一元素为nothing,那么Con结构具有值nothing,表中的所有元素处于相同范围,因此,不显露元素可用作限制,或者将限制为自由变量或者将其统一为nothing。
Con的重写规则是Con( ) →nothing
Con(e1…nothing…en) →nothingCon(e1…en) →e1如同所有其它规则一样,该规则是作为快速存储器1,3和中央控制单元CU之间的协作关系而建立的。
Pri上面所描述的结构中没有一个能用于指示某事在另外某事无效(是nothing)的情况下是有效的。由于表达式的一种“负”方式有时比表达式的“正”方式更为紧凑,因此对于表达式的“负”方式附加结构Pri。
Pri的归约规则是这样的pri的值是不同于nothing的第一个元素,如果没有这样一个元素,那么pri就是nothing,因此Pri(nothing nothing 9 nothing 7 8)=9结构pri(e1e2)以按如下方式解释如果e1无效,则采用e2。该pri结构类似alt结构,它是一组状态,但在pri中,状态是有序集合,第一个状态是表中的第一个,第二个状态是表中的第二个,等等。
很值得注意的是,pri结构与在传统语言和用于处理编排的机器中原来所采用的概念无任何共同之处,相反,它用于借助失效来实施非操作。
Pri的重写规则为pri( ) →nothingpri(nothing1…nothing2) →nothingpri(nothing1…nothingk-1ek…en) →ek如同所有其它规则一样,该规则是作为快速存储器1,3和中央控制单元CU之间的协作关系而建立的。
作用域是指原文环境,其中所出现的相同符号代表相同的语法实体。一个作用域规则指示某一结构是否以及为何引起一个新的作用域,H语言具有下面的作用域规则1、结构par、seq、alt、
和unify不引起新的作用域,这表示表达式中所出现的同样符号代表相同的实体。
2、结构Lambda(替换模式)引起一个新的从属作用域,所有在规则中出现的而在以上场所中所没有提及的符号属于一个新的作用域。
3、结构hide(表达式)引起一个完全新的作用域。在一规则结构hide中无符号出现系指相同的实体,如果在该规则结构中的相同的符号环绕该hide结构。
当编制扩展程序时,需要在不同的意义下使用相同符号,这可通过引入隔离作用域的结构(hide)来实现。
hiding的每一个重要概念主要用于隔离使用一个目标以及该特定目标的定义,按本发明的计算装置的用户会在程序包,程序库和实施概念中发现这点。
H语言定义hide结构hide(e),它定义一个状态。用在结构内外的自由变量被分开,即它们彼此之间是不可见的。H语言的这一特性与其他类型的语言不同,后者通常输出一数据形式和几个符号名称,这些名称不能用在程序包内部,这意味着在全集合或在一有限集合中,全符号域对所有程序包都确实是完整的,而且在它们内部是可见的。
一个典型的程序包按以下方式确定
lambda(a-pkg$$)·hide(…局部实施…);
它定义了一个具有从a-pkg开始的一种格式的规则,而其余部分没有定义。这只是对一个规则的定义,在那里,对规则替换本身的符号是未知的。
一个程序库是指在采用一个参数选择一个或几个规则的H语言概念中的程序包,它可实施为hide(alt(lambda“规则a”.a-specLambda“规则b”.b-spec…Lambda“规则n”.n-spec))程序库是包含规则的一个替代物,格式“规则a”用于选择一程序aspec。它可定义为一任意结构,它通常它是一个提要或一个规则。
如上所述,H语言具有精巧的方法指定需要的软件工程概念,为此目的,语言不需引入新的语言结构。
可以看出,hide只影响作用域的处理。
lambda表达式Lambda(esepl…epn)是一种规则,表示元素es取代epl…epn),这里用
表规则Lambda(esepl…epn)。而所述表达式apply(erearg1…earg2)是一个应用,如果每一epi由相应的eargi统一化,则该应用在归约操作中由es取代,反之,该应用由nothing取代。
apply现在将给出规则apply如何实施的例子。
例3
在这里执行一数字指令。一数字指令可以是+,-,*,/,during,等等。在指令之外紧跟着自变量。在该例中,执行表中数字间相加操作,机器执行具有下面形式的一个apply(应用)的归约apply(+ list(1 2))该应用示于图12A,其单元闭包示于图12B,图12A和12B的标记方式与图10A和10B的相同,因而可以自我解释。
如图12C所示,具有标识符id1的单元闭包被装入到在标识符寄存器中具有其标识符和类型码的核心单元的主寄存器中。数字指令(+)标记为一个指令。如图12D所示,由于第二个主寄存器中的内容被标记为一个间接元素open,它所连接的单元闭包以子的形式纵向地装入基本寄存器中。
随后进行表的扩展,将第二个主寄存器中的离散值标记为discr,并在类型码字段中标记扩展值为2的表为List。由于不管具有标识符id2的表具有二个,三个或四个元素机器都作相同操作,故上述处理过程可以完成。由于在一新的表中仅有一个元素,如图12F所示,机器将用主寄存器包含一个是discr的值的指示来替代标记list。
因而,如图12G所示,主寄存器包含一个指令标记(+)和两个离散值,这使得存储指令的控制单元控制数字ALU执行指令(相加)并将数字操作结果作为一个规范值输出到第一个主寄存器。注意到在类型码字段中的标号apply是表示要进行一函数应用的标记。结果值,在该例中是一简单值3被分布到各处,以便将每一个出现标记id1的地方都换成该值。
重写规则确定相等的表达式。重写方向与这些规则相联系。当跟随该重写方向时,可获得一较简单的表达式。当表达式不能被重写为一个较简单的表达式时,该表达式是规范的。因此,本发明的计算装置采用重写规则将表达式重写为更规范的形式。
除上面所给出的重写规则之外,中央控制单元CU还包含下列重写规则type(e1…nothing…en)→nothing,这里type系指上述表上从par(list)一直到unify(list)的一个表达式,e1…en是表元素。
type(e1…alt(c1…ck)…en)→alt(type(e1…c1…en)…type(e1…ck…en))这里type更指上述表上从par(list)一直到unify(list)(除alt(list)之外)的一个表达式,e1,en,c1,ck为表元素。
set(a) →nothingset( ) →′alt(a),如果a是在上面表示式表中从par(list)至′apply(list)的一个表达式。
set(alt(e1…en)) →′alt(ea…en),这里e1…en是没有按特定次序提供的元素,ea…en为按某种次序提供的元素。
set(e1…en) →set(con(e1…en))Lambda(alt(e1…en) →set(alt(e1…en))Lambda(e1…en) →par(e1…en)hide(alt(e1…en) →set(alt(e1…en)hide(e1…en) →par(e1…en)apply( ) →nothing
apply(e) →evalmeta(e)apply(′alt(b1…bn)a2…am)→apply/ evalmeta′alt(b1…bn)a2…am)apply(par(b1…bn)a2…am) →nothing,如果所有bi和ai是上面表示式中从par(list)到′apply(list)的表达式,而且n#m或对于i>1,ai#bi.
apply(par(b1…bn)a2…am) →b1,如果所有bi和ai是上面表达式表中从par(list)到′apply(list)的表达式,而且m=n,并且对于i>1所有ai=bi。
apply(seq(b1…bn)a2…am) →nothing,如果所有bi和ai是上面表达式表中从par(list)到′apply(list)的表达式,n#m或对i>1任一ai#bi。
apply(seq(b1…bn)a2…am) →bi,如果所有bi和ai是上面表达式表中从par(list)到′apply(list)的表达式,n=m,并且对i>1,所有ai=bi。
函数evalmeta将以程序形式表示的表达式(即贯以′的)转换为值的形式(即无′的),只有最高级结构中可以省去′。
evalmeta′type(a) →type(a),这里type代表上面表上的从par(list)到unify(list)的一个表达式(除alt(list)之外)。
Symb包括一个元素S的表达式symb(s),当归约为一个规范表达式时该元素S是一个标识符,所述元素S可以被存储在属于目标存储器中不同存储单元的存储字段,所述存储单元被定义为按作用域方式布置,在每一作用域中的所有标识符S表示相同的状态。
Discr,pulses表达式dircr(n)(其中n是一个整数)表示具有n个微状态的一并行状态,表达式pulses(n)(n是一个整数)表示n个微状态的一个时间链。
下面的重写规则是予定的par(delta1…deltan)→discr(n)Seq(deltat1…deltatn)→pulses(n)为了说明如何应用扩展句法,用于在同一端口交替读出和写入的程序可以更紧凑的方式提供。首先对超过离散值1,2和3的抽象平方(sqr)由下面的短程序定义Unify(symb(sqr)alt(Lambda(1 1)Lambda(4 2)Lambda(9 3))存储在目标存储器1的闭包树中。从而“机器状态”可仅写成一个Seq操作Seq(during(1s x)during(1s apply(symb(sqr) x)
(during(1s x)during(1s apply(symb(sqr) x)…)这一Seq操作在执行时将被改写为上面指出的alt操作。即使这一程序还是和输入数据一样长,处理这一问题的精巧方式是在硬件中提供一些函数和标准替代物,或作为软件与插入程序装在一起。
例子之一是乘法(X),借助于标准操作,数值a的乘方可以简单程序写出Unify(symb(sqr)Lambda(symb(a) apply(x par(symb(a) symb(a)))))这一程序试图将由硬件所定义的所有数进行乘方处理。
这些规则可用于写小循环程序,该程序在根据归约规则进行重写时并不呈现上面所提及的大alt结构。硬件使不必要的说明都被略去。这可通过采用我们的未决申请NO…中所描述的核心单元形式来得到最佳地实施。
可以执行所描述的重写规则,通过采用状态的统一(化)而隐含一种说明方式的计算装置的状态由明确规定的所经过的时间次序加以确定。这种时间上的描述看起来象是一种符号语言。
抽象句法很简单,不幸的是这使它不特别易读,为了使程序更易读引入一个更复杂的句法,因为人们不希望那种过份低浅的复杂性。
这种变换可以许多不同方式完成,然而最自然的是具有句文(具有正文)的和图象的形式。当硬件检测一个值不正确时,例如通过检查计算值的奇偶校验位时,提供一错误指示,这时采用back up表达式。
backup的归约规则是这样的一个backup的值是不同于fault的第一个元素,如果不存在这样一个元素,backup就是nothing。
backup的重写规则为backup( ) →faultbackup(fault1…faultn) →faultbackup(fault1…faultk-1ek…en)→ek如同所有其他规则一样,该规则是以快速存储器1,3和中央控制单元CU之间的协作形式建立的。
根据上面的描述可以清楚语言H有几种表示,该语言具有一个核心Habs,这是一种抽象语言,关于这种语言采用了一套表示法,主要的语言表示法为Habs 这种语言表示的是正式定义之外现有的最基本的一种,它是完全说明性的,但没有用户易读的句法。
Hfault 这种语言表示法是由在计算装置中用于修正硬件错误的结构所扩展了的Habs,这种语言表示不是说明性的,相反其结果是一个随机值,这种表示法是一种根语言表示法,所有其他语言表示法都基于该表示法,它没有用户易读的句法。
Huser 这种语言表示法是用对整数和实数运算设置集合,以及用对数字和结构运算的算符加强的Hfault,其中还包括无限替换。语言表示法Huser没有用户易读的句法。这种表示法是一种对用户可见的抽象语言。
Hascii 这种语言表示法对除采用插入句法的最通用表示之外的所有句法采用规定的ascii字符和前缀。
本发明是参照最佳实施例描述的,对本领域的普通技术人员而言在不脱离本发明正确精神和范围的前提下可作各种变化,并可对元素作等效替换,此外,在不脱离本发明基本教导的前提下可作各种修正。
权利要求
1.一种计算装置,其特征在于a)一快速存储装置(CU,1),该装置包括许多存储单元装置(2),每个单元具有能够启动执行一次操作的信息;b)至少一个端口装置(4,5,6),该装置被连接到所述快速存储装置;c)至少一个环境装置(7,8,9),该装置被连接到所述至少一个端口装置。
2.如权利要求1所述的一台计算装置,其特征在于具有用于在所述快速存储装置中将在一个端口装置上提供的一信号序列(图2)与存储在至少一个存储单元中的一个序列进行比较的装置,所述被存储的序列具有可能未被定义的序列元素($),在所说快速存储装置中,以及重写所述比较序列为nothing的装置(cu,3),如果比较给出明显的差异,那么将比较序列重写为nothing,(即nothing代表矛盾),反之将所述比较序列重写为一个指定的序列。
3.如权利要求2所述的一台计算装置,其特征在于所述比较装置进行成组比较,各组包括表元素中予定数目的至少两个元素。
4.如权利要求2所述的一台计算装置,其特征在于具有装置(3,during,7,8,9),用于提供所说信号序列作为一个随时间变化的具有单一采样周期的被采样的信号(图2),所述信号序列是一元素组表,每一组包括一持续时间和在该时间内的至少一个信号量。
5.如权利要求4所述的一台计算装置,其特征在于在每一组中的所述予定数目的表元素每两个组成一对,每对包括时间和信号量的组合。
6.如权利要求1至5中任一权利要求所述的一个计算装置,其特征在于具有用于将所述端口装置与至少另一所述端口装置同步,并在每一持续时间内对从所述端口输出的信号量值进行并行指示的装置。
7.如权利要求1至6中任一权利要求所述的一台计算装置,其特征在于所述存储单元装置在所述快速存储器中具有一种结构,适应于以一种明确的或隐含的抽象句法编码方式存储一计算机程序,该句法通过表达式描述一些不同的抽象目标,每一存储单元装置每次能以一种适当的数据和/或程序结构形式存储所述句法表达式的至少一部分。
8.如权利要求7所述的一台计算装置,其特征在于每种表达式还有一种相应的表达式,指示它是一程序形式,所有程序形式适合被归约为它们本身,因而保持不变的表达式。
9.如权利要求9所述的计算装置,其特征在于包括重写装置(CU),该装置配合所述包含句法表达式的存储单元根据予定的重写规则重写所述句法表达式。
10.如权利要求9所述的一台计算装置,其特征在于所述句法包括至少下面的一些基本句法表达式port,nothing,alt(list),par(list),Seq(list),Unify(list),during(list),Cont(v),period(v),这里(list)是数据元素表(e1…en),每个表存储在包含该表所属的表达式的一个所述存储单元的一个存储字段中,如果该所述存储单元有空闲处存储该表的话,或至少存储在与包含所述表达式的所述存储单元相联的一个所述存储单元中,这里V是一个实数;在during(list)中的表可能具有下面的元素Cont(v),period(v)和一任意值($);这里表达式port代表所述物理端口之一个端口,而且是一种特别类型的间接元素,nothing是一特殊类型值,代表矛盾,包含alt表达式的存储单元中包含一表的认为是替代元素的离散元素;包含par表达式的存储单元中包含一表的认为是并行元素的离散元素;包含Seq表达式的存储单元中包含一表的认为是序列元素的离散元素,包含unify表达式的存储单元中包含一表的认为是统一化元素的离散元素包含during表达式的存储单元中包含一持续时间和一信号量值对,Cont(v)表示沿具有长度V的一段距离具有无限个极小状态的一个空间量。而period(v)表示在具有宽度V的一个周期内具有无限个极短状态的一个时间长度。
11.如权利要求9和10的组合所述的一个计算装置,其特征在于所述重写规则至少某些规则由下面选出nothing →nothingalt(e) →ealt(e1…nothing…en) →alt(e1…en)(即值nothing被略去)alt(e1…alt(c1…ck)…en) →alt(e1…c1…ck…en)par(e1…en) →nothing(如果e1至en的任意一值为nothing)par(e1…alt(c1…ck)…en) →alt(par(e1…c1…en)…par(e1…ck…en))par(e1…en) →par(e1…en)在相反情况下seq(e1…en) →nothing(如果e1至en的任意一值为nothing)seq(e1…alt(c1…ck)…en) →alt(seq(e1…c1…en)…seq(e1…ck…en))……seq(e1…en) →seq(e1…en)在相反情况下Unify( ) →nothingUnify(e) →eUnify(e1e2) →e2(如果e1=e2)Unify(e1e2) →nothing(如果e1不同于e2)Unify(e1e2e3…en) →Unify(unify(e1e2)e3…en)Unify(e1…en) →nothing(如果e1至en任意一值为nothing)Unify(e1…alt(c1…ck)…en) →alt(unify(e1…c1…en)…Unfiy(e1…ck…en))
12.如权利要求8所述的计算装置,其特征在于所述句法至少包括在下列表达式中选择的一个句法表达式Cont(v),period(v),deltat,par(list),seq(list),′alt(list),′con(list),′pri(list),′Lambda(list),′hide(list),′Symb(list),′unify(list),′Set(list),′apply(list)alt(list),nothing,con(list),pri(list),Unify(list),Lambda(list),hide(list),set(list),apply(list),Symb(list),discr(n),pulses(n),其中每一句法表达式是在所述目标存储单元中的作为表达式存储的一个算符,在(list)中的每一个元素是指示一个状态的元素;n是一个整数,V是一个实数;每个所述元素都可被存储在包含该表所属的所述表达式的存储单元中的一个存储字段中;表达式cont(v)表示沿具有长度V的一段距离具有无限极小状态的一个空间量;表达式period(v)表示在具有宽度V的时间周期内具有无限个极短状态的一个时间间隔;所述表达式delta表示在空间具有极微扩展和具有无限时间扩展的一个状态;表达式deltat表示在时间上具有极微扩展而在空间具有无限扩展的一个状态;表达式par(list)代表包含该表达式的存储单元包含一表列的认为是并行元素的离散元素;表达式seq(list)代表包含该表达式的存储单元包含一表列的认为是序列元素的离散元素;所有具有一词法元素的表达式指示其形式为一程序形式;表达式alt(list)表示包含该表达式的存储单元包含一表列的认为是替代元素的离散元素;nothing是表示矛盾值的一特殊单元;表达式con(list)包含至少具有零但也可以是几个状态元素的表,并且和其表中第一元素是相同的,如果在该表中的所有元素是规范的并且不同于nothing;表达式pri(list)包含至少具有零但也可以是几个状态的表,并且和其表中不是nothing的第一个规范元素是相同的;表达式Unify(list)表示包含该表达式的存储单元包含一列表的认为是统一化的元素的离散元素;表达式Lambda(e3ep1…epn)是一规则,表示元素e3被ep1…epn置换;表达式apply(list)用于具有作为其第一元素的函数指令(+-*/等)的算术运算,其余的元素是自变量;如果er是一规则Lambda(esep1…epn),所述表达式apply(evearg1…eargn)是一应用,在一归约操作中,如果epi与相应的eargi一致,则该应用由es替代,反之,该应用为nothing;表达式hide(list)表示一状态,在那里用于结构内和结构外的全变量是分离的,即彼此是不可见的;表达式set(list)表示在表(list)中的内容将被转换为程序形式;表达式Symb(s)包括一个元素S,在表达式被归约为一规范表达式时,该元素是一标识符,所述元素S可以被存储在属于所述目标存储器中不同存储单元的存储字段,所述存储单元被定义为安置在作用域内,在该作用域内的所有标识符S代表相同的状态;表达式discr(n)(其中n为一整数)代表具有n个微小状态的空间量;表达式pulses(n)(其中n为整数)代表n个微小状态的时间间隔。
13.如权利要求12和13的计算装置,其特征在于所述重写规则由下述规则扩展type(e1…nothing…en) →nothing,其中type代表上面表上的从par(list)到′apply(list)的一个表达式,e1,en是表元素。type(e1…alt(c1…ck)…en)→alt(type(e1…c1…en)…type(e1…ck…en))其中type代表上面表中从par(list)至Unify(list)(除alt(list)之外)的一个表达式,e1,en,c1,ck是表元素。Set( ) →nothingset(a) →′alt(a),如果a是上面表示式表中从par(list)到′apply(list)的一个表达式Set(alt(e1…en)) →′alt(e0…en)其中e1…en是不提供任何特别次序的元素,而e0…en提供某种次序。set(e1…en) →set(con(e1…en))Lambda(alt(e1…en)) →Set(alt(e1…en))Lambda(e1…en) →par(e1…en)hide(alt(e1…en)) →set(alt(e1…en))hide(e1…en) →par(e1…en)apply( ) →nothingapply(e) →evalmeto(e)apply(′alt(b1…bn)a2…am) →apply(evalmeto′alt(b1…bn)a2…am)apply(par(b1…bn)a2…am) →nothing(如果所有bi和ai是上面表达式中从par(list)至apply(list)的表达式,并且n#m,以及对i>1任何ai#biapply(par(b1…bn)a2…am) →b1,如果所有bi和ai是上面表达式表中从par(list)到′apply(list)的表达式,并且n=m,对i>1所有ai=biapply(seq(b1…bn)a2…am) →nothing,如果所有bi和ai是上面表达式表中从par(list)到′apply(list)的表达式,并且n#m或对i>1任何ai#biapply(seq(b1…bn)a2…am) →b1,如果所有bi和ai是上面表达式表中从par(list)到′apply(list)的表达式,并且n=m,以及对i>1所有ai=bi函数evalmeto将程序形式的表达式(前面贯以′)转换为数值形式(即没有′),只有最高一级结构可省去′。evalmeto′type(a) →type(a),其中type代表上面表中从par(list)到Unify(list)(除alt(list之外)的表达式con( ) →nothingcon(e1…nothing…en) →nothingcon(e1…en) →e1pri( ) →nothingpri(nothing1…nothingn) →nothingpri(nothing1…nothingk-1ek…en) →ekpar(delta1…deltan) →discr(n)seq(delta1…deltatn) →pulses(n)
14.如权利要求1至13中任一权利要求所述的计算装置,其特征在于每个存储单元适应于至少存储下面所列举的一部分特性指示在所述存储单元中的表达式是否要被归约的标记;指示表达式是否为一根树的组成部分以及表达式特性的标记;指示表达式是如何产生的标记;指示表达式是否由一些重复状态组成的标记;指示表达式是否仅仅为一个表的一部分的标记,该表具有存储在另外存储单元的另外的表的组成部分。
15.如权利要求1至14中的任一权利要求所述的计算装置,其特征在于在所述目标存储器的存储单元装置中包含有可能以明确的或隐含的抽象句法编码形式存储一计算机程序的装置,并在该句法上确定归约规则的语义。
16.如权利要求15所述的计算装置,其特征在于所述语义包括若干重写规则,每一该规则包括一个表达式和一组数值,这意味着在所述组中的每一值与该组中的另一值是等效的,可以用它进行交换。
17.如权利要求1至16中的任一权利要求所述的计算装置,其特征在于有一区域,包含存储单元,该存储单元与所述快速存储器中的所述存储单元具有相似的功能结构,但是是一个只读形式的,并且具有予定功能和标准的选择元。
18.如权利要求1至17中任一所述的计算装置,其特征在于包括用于连续查错的装置,并且有按照下述规则的backup性能backup( ) →faultbackup(fault1…faultn) →faultbackup(fault1…faultk-1ek…en) →ek
全文摘要
本发明是关于一种计算装置,该计算装置包括a)一快速存储装置(Cu,1),该装置包括许多存储单元装置(2),每一个具有能够启动执行一种操作的信息;b)至少一个端口装置(4,5,6),该装置被连到所述快速存储装置;c)至少一个环境装置(7,8,9),该装置被连接到所述至少一个端口装置。
文档编号G11C11/417GK1059799SQ9110865
公开日1992年3月25日 申请日期1991年8月2日 优先权日1990年8月2日
发明者卡尔斯特·拉斯·冈纳 申请人:卡尔斯特电子公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1