首页> 中国专利> 用于具有有限资源的微处理器的进程语言

用于具有有限资源的微处理器的进程语言

摘要

称作为ρ-计算的反射进程算法便于在反射进程算法级别的进程串行化。由于其反射属性而得名的反射进程算法可用于具有有限资源的计算系统上。可使得反射进程计算对诸如存储器和带宽的资源是敏感的,由此便于其用作机器级别的程序设计语言。反射进程计算使计算实体显示出双重特性。可使名称变为进程,而使进程变为名称。

著录项

  • 公开/公告号CN1661552A

    专利类型发明专利

  • 公开/公告日2005-08-31

    原文格式PDF

  • 申请/专利权人 微软公司;

    申请/专利号CN200510051927.9

  • 发明设计人 L·G·米瑞蒂斯;

    申请日2005-02-16

  • 分类号G06F9/44;

  • 代理机构31100 上海专利商标事务所有限公司;

  • 代理人沈昭坤

  • 地址 美国华盛顿州

  • 入库时间 2023-12-17 16:29:32

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-03-29

    未缴年费专利权终止 IPC(主分类):G06F9/44 授权公告日:20110223 终止日期:20160216 申请日:20050216

    专利权的终止

  • 2015-05-27

    专利权的转移 IPC(主分类):G06F9/44 变更前: 变更后: 登记生效日:20150508 申请日:20050216

    专利申请权、专利权的转移

  • 2011-02-23

    授权

    授权

  • 2007-03-14

    实质审查的生效

    实质审查的生效

  • 2005-08-31

    公开

    公开

说明书

相关申请的交叉引用

本申请要求2004年2月12日提交的美国临时申请No.60/544,114的权利,该申请通过引用结合于此。

技术领域

本发明一般涉及程序设计语言,并尤其涉及用于表示可由具有有限资源的微处理器最终执行的进程及其交互的人工语言。

背景技术

见图1,诸如基于CISC的微处理器102的微处理器处于所有个人计算机的核心。当将电源104和存储器106加到基于CISC微处理器102时,就呈现了形成计算机所需的所有部分。基于CISC的微处理器102通过遵循给予其的指令来完成任务。指令就是以人工语言编写的一种表示,如程序设计语言。较早的微处理器仅使用简单指令,因为能够执行复杂指令的微电子硬件的成本非常高。由于这些成本随着时代发展而减少,更复杂的指令变成可能。复杂指令(指定多个微处理器操作的多条单一指令)可以节约时间,因为它们使得计算机不需要检索附加指令。例如,如果将七个操作组合到一条指令中,那么就消除了六个取指令步骤,而微处理器就花费更少的时间来处理操作。将若干指令结合到单一操作中的微处理器称为复杂指令集计算机(CISC)。

基于CISC的微处理器102使用寄存器存储所执行指令的结果。每一寄存器是在用于保存专用数据的基于CISC的微处理器102内的高速存储器的比特组。在汇编语言程序中,通过诸如AX(在Inter80×86处理器中包含算术操作结果的寄存器)或SP(包含各种基于CISC的微处理器中的堆栈顶部的存储器地址的寄存器)的名字命名每一寄存器。事实上每一寄存器就是基于CISC的微处理器102各部分之间的共享存储器。当将寄存器用作共享存储器时,一个部件进行指定操作并将指定操作结果存储于寄存器中。以顺序方式,另一部件随后可在进行其它操作时访问同一寄存器以获取该结果。

这样的顺序执行操作使得基于CISC的微处理器102的各部件在其通信时好像是同步的。诸如在基于CISC的中间设备中,将程序中几乎所有指令都设计为顺序执行。可用于基于CISC的微处理器102的硬件中断可用作增加异步性并由此使操作同时执行的一种方法。硬件中断是对于基于CISC的微处理器102的服务的请求,它由诸如盘驱动器或输入/输出端口的硬件设备外部产生,或由基于CISC的微处理器本身内部产生。外部硬件中断用于诸如从端口接收字符并需要对其处理、准备传输数据块以进行盘写入或系统定时器的嘀嗒声等情况。内部硬件中断发生在程序尝试不可能的操作时,如访问不可用的地址或除以零。由于离散结构(微处理器各部件的同步特性以及硬件中断的异步特性),中断处理器中仅仅一个程序设计错误就可以使得基于CISC的微处理器102死锁或者永久地(pathologic)、几乎不可再现地损坏数据。

π-计算程序(π-calculus program)110可为基于CISC的中间设备108和基于CISC的微处理器102的同步性和顺序执行设计带来期望的异步性和并行性。π-计算是用于描述交互、同步系统中的进程的数学语言。π-计算的核心包括通过链接通信的独立、并行进程的系统。一进程与其它进程进行通信的可能性依赖于其对于各种不同链接的信息。可限制链接,使得仅有某些进程在其上进行通信。

虽然π-计算可为计算带来亟需异步性和并行性,但仍有重大的缺陷。π-计算重点在于纯名称,它们中的每一个仅限定为比特模式而不是结构信息。π-计算及其变量缺少对结构数据在指定的链接上传递的容许量。为了创建新的名称,如名称X,v算子就用于π-计算中。例如,数项(vX)P表示创建名称X,并将其范围限制于进程P。进程P的各部件可使用X互相进行交互,但不与其它进程进行交互操作。考虑算术结构全等(congruence)律(vX)(vX)P≡(vX)P。项(vX)定义为需要使用诸如malloc()的函数进行存储器分配的操作。假设计算系统中仅剩余满足一个项(vX)的调用的存储器。如果是这样的情况,结构全等律右手边的项(vX)就可以无误地操作。而对于结构全等律左手边的项(vX)(vX)P则不是这样,因为(vX)的第二次调用会引发存储器错误。

π-计算的另一问题就是复制!P的数学概念。π-计算提供复制!P作为语言基元(primitive)。项!P可解释为与另一进程并行运行的进程P的无限组合。虽然!P理论上是抽象的,但它却引出具体实现中的问题。微处理器是由有限资源创建的,如存储器和带宽。虽然π-计算程序确实增加了期望的异步性,但它们没有意识到这些π-计算执行的微处理器是有资源限制的。

总之,基于CISC的微处理器无法有效工作于需要并发和并行计算的异步系统中,即分散的大规模计算机系统,如因特网。传统的顺序执行结构不适用于操作同时执行的需要。虽然π-计算在异步性和并行性方面提供了一些修正,但是其一些数学基元并不与具有有限资源的计算设备兼容。不解决上述问题,用户就会渐渐不再相信计算系统提供期望的计算体验并且市场上对于计算机系统的需求就会逐渐减少。因此,需要更好的集成电路和程序设计语言,便于更好的异步性、并发性和并行性,而避免或减少与现有基于CISC的微处理器以及π-计算相关的以上和其他问题。

技术内容

根据本发明,提供用于处理以反射进程算法(reflective process algebra)编写的处理服务的系统、方法和计算机可读介质。本发明的系统形式包括用于处理信息以产生期望结果的计算机。该计算机包括用于存储服务的计算机可读介质。这些服务包括通过解释进程来表示名称以及通过逆解释(deliteralize)名称来表示进程的表示。该计算还包括用于执行服务作为进程的微处理器。这些进程通过名称进行交互并通过实现操作或者引发其他进程演化来进行演化。

根据本发明的另一方面,本发明的另一系统形式包括用于执行指令的微处理器。该微处理器包括定时和控制单元,用于从存储器检索指令、对该指令进行解码、获取与该指令相连接的数据并保存结果。该数据包括通过以反射进程算法解释进程来获得的名称。该微处理器进一步包括用于进行由该指令指定的操作的算术和逻辑单元。以反射进程算法表示该指令。反射进程算法能够将名称表示为进程的解释并将进程表示为名称的逆解释。

根据本发明的另一方面,本发明的计算机可读介质形式包括具有在其上存储的计算机可执行指令的计算机可读介质,该指令用于实现允许进程通过共享名称进行操作或交互,以便演化或引发其他进程的演化。该计算机可读介质包括以反射进程算法表示的计算机可执行指令。该计算可执行指令包括表示进程的进程语法单元。进程语法单元可从以下述组中选择,该组包括:非活动进程0、输出进程X[Y]、输入进程X(Z).P、翻转(lifting)进程LIFT X.P、进程组合P|P和名称逆解释>X<。

根据本发明的另一方面,本发明的的方法形式包括用于处理服务的计算机可执行方法。该计算机可执行方法包括以反射进程算法将服务表示为进程的操作。反射进程算法能够将进程表示为名称的逆解释以及将名称表示为进程的解释。计算机可执行方法的其它操作包括在进程间共享名称时使进程进行操作或通信,以便于进程的演化。

根据本发明的另一方面,本发明的系统形式包括用于执行指令的微处理器阵列,该微处理器阵列包括至少一个包括定时和控制单元的微处理器,定时和控制单元用于从存储器检索指令、对该指令进行解码、获取与该指令相连接的数据并保存结果。该数据包括通过以反射进程算法解释进程来获得的名称。该微处理器进一步包括用于进行由该指令指定的操作的算术和逻辑单元。以反射进程算法表示该指令。反射进程算法能够将名称表示为进程的解释并将进程表示为名称的逆解释。

附图说明

当通过参考以下详细描述并结合附图对本发明的以上方面以及许多其他优点更好地理解时它们会变得更加明显,其中:

图1是示出计算系统的框图,其中π-计算程序与基于CISC的中间设备对接以在基于CISC的微处理器上执行;

图2A是根据本发明的一个实施例示出与基于ρ的中间设备对接的服务,以在基于ρ的微处理器上执行的框图;

图2B是根据本发明的一个实施例示出基于ρ的微处理器的内部结构框图;

图3A是示出根据本发明一个实施例形成的一部分ρ-计算(它是进程程序设计语言)的文字图;

图3B是根据本发明一个实施例示出ρ-计算反射属性的图示图;

图4A是根据本发明一个实施例示出一部分ρ-计算(它是进程程序设计语言,其中进程是分类的)的文字图;

图4B是根据本发明一个实施例示出对于使用类型的ρ-计算反射属性的约束的图示图。

图5A是根据本发明一个实施例示出基于ρ-计算的一部分机器计算的文字图;

图5B是根据本发明一个实施例示出对于使用语法树的ρ-计算反射属性的约束的图示图;

图6A是根据本发明一个实施例示出用于实现复制服务的ρ-计算程序的文字图;

图6B是根据本发明一个实施例动态示出在图6A静态示出的复制服务的图示图;

图7A是根据本发明一个实施例示出用于实现创建新名称的ρ-计算服务的文字图;

图7B是根据本发明一个实施例动态示出在图7A静态示出的名称服务的图示图;

图8A-8R是示出根据用于编译ρ-计算服务或执行ρ-计算服务的本发明形成的示例方法的流程图。

具体实施方式

本发明的各实施例提供称作为ρ-计算的反射进程算法,便于在反射进程算法级别的进程串行化。由于其反射属性而得名的反射进程算法可用于具有有限资源的计算系统上。诸如π计算的先前的进程计算缺少表达能力来管理会引起系统失败的进程无限制组合及名称创建。可使得反射进程计算对诸如存储器和带宽的资源是敏感的,由此便于其用作机器级别的程序设计语言。反射进程计算使计算实体显示出双重特性。可使名称变为进程,而使进程变为名称。这样,反射进程计算表示了计算实体动态特性和静态特性的对应关系。当计算实体是静态时(如通过编译或串行化),其程序可由其他程序修改或进行存储,而当它再变为动态时,它通过演化或引发其他进程的演化来参与与其他进程的交互。

图2A示出根据基于ρ的微处理器200的计算设备。术语“微处理器”意为包括中央处理单元、数字信号处理器、场可编程门阵列或任何可编程为实现算术、逻辑和判决处理的集成电路。基于ρ的微处理器200是可命令实现各种函数(诸如数据传输、算术、逻辑和判决做出)的设备。基于ρ的微处理器200可看作为单一集成电路上的中央处理单元(CPU)。基于ρ的微处理器200可具有数百万个或更多的晶体管并处于诸如个人计算机的计算设备的核心。当电源应用于基于ρ的微处理器200并将存储器件加于基于ρ的微处理器200,就呈现了计算机所需的所有部件(不包括输入/输出设备202)。一个或多个基于ρ的微处理器200可形成基于ρ的微处理器阵列。在一个实施例中,基于ρ的微处理器阵列在单一集成电路上。在另一实施例中,基于ρ的微处理器阵列在多个集成电路上;所述多个集成电路安装于单块板上。在再一实施例中,基于ρ的微处理器阵列在多个集成电路上;所述多个集成电路安装于多块板上;多块板置于单个计算机架上。在又一实施例中,基于ρ的微处理器阵列在多个集成电路上;所述多个集成电路安装于多块板上;多块板置于多台计算机的多个架上。在附加实施例中,基于ρ的微处理器阵列包括耦合一个或多个微处理器的网络。该网络选自包括永久连接和暂时连接的组中。

输入/输出设备202是硬件部件,它可用于向基于ρ的微处理器200提供数据、用于从其中接收数据或两者兼而有之。个人数字助理是输入/输出设备的一个例子。诸如键盘或鼠标的一些设备可仅用于输入。诸如打印机的其他设备可仅用于输出。从基于ρ的微处理器200形成的大多数设备不需要称作为设备驱动器(使得可进行数据的发送和接收)的软件例程的安装。存储器部件204是存储和检索信息的设备。较佳地,存储器部件204指的是计算设备的主存储器,直接耦合于基于ρ的微处理器200的快速半导体存储器(RAM)。

基于ρ的中间设备206是置于两类或多类软件之间的软件,并在它们之间转换信息。基于ρ的中间设备可覆盖大范围的软件并且一般位于服务208和分散操作系统之间。基于ρ的中间设备206包括服务,如名称服务,它将如下进一步详细描述来产生新名称。另一可看作为基于ρ的中间设备206的软件部件就是复制服务。基于ρ的中间设备206允许使用π-计算语言的变量表示的服务208以更好地在基于ρ的微处理器200上执行。

服务208是根据由每一服务定义的协议交换消息的自主计算实体。服务可处于计算系统的本地,也可位于远端计算设备处。服务可通过单一信托域访问,也可通过具有其自身安全策略的另一信托域访问。服务208可通过目录服务获取,也可由不是目录服务的服务获取。服务208具有统一资源指示符(它组成服务的唯一指示)可标识的端口。对服务的端口赋予行为类型,它由单方契约指定。服务208的较佳通信机制是通过可编程的有线端口。如果(服务的)一个端口的行为类型与(另一服务的)另一端口关的行为类型兼容,则有线端口是可能的。当端口是互相编程连线的,服务208通过互相发送消息进行通信。简而言之,单方契约是以语言来表示的,如π-计算的变量,指定流进或流出服务208的消息顺序。例如,文件可以是服务。只读文件单方契约可包括以下行为表示:REC F(read.F+drop).0,而读写文件的单方契约可具有以下行为表示:REC F(read.F+write.F+drop).0。在对行为表示进行语法分析中,项REC F指示行为阶段F上的递归:行为阶段F指示括号对中的行为表示;动词“read”指示读操作;句号“.”指一种顺序,其中在句号之前的行为阶段正发生,而在句号之后的行为阶段将随后发生;加号“+”指示一个或多个行为阶段之间的选择;动词“write”指示写操作;动词“drop”指示两个服务之间通信的终止;而零符号(“0”)指行为表示的终止。

图2B更详细地示出包括基于ρ的微处理器200内部结构的一部分部件。每个部件较佳地表示为通过端口通信的ρ进程(每一端口实际由一个方块表示)。基于ρ的微处理器200有五个主要部件:寄存器阵列204、208、210;定时和控制单元214;算术和逻辑单元206;指令寄存器和解码器212;以及到外部世界216、218的总线连接。当基于ρ的微处理器200执行ρ指令时,它经过五个一般步骤。首先,定时和控制单元214从存储器检索ρ指令,例如组成并行运行的两个进程的ρ指令。第二,定时和控制单元214将ρ指令解码为控制基于ρ的微处理器200的电信号。第三,定时和控制单元214获取数据(两个名称:两个进程的解释)。第四,算术和逻辑单元206进行指定操作(通过两个名称的逆解释组成两个进程)。第五,定时和控制单元214将结果(通过解释所述组成的两个进程的组成)保存在寄存器阵列204、208、210中的寄存器中。

基于ρ的微处理器200包括各种用于保存暂时数据、存储器地址、指令和有关基于ρ的微处理器200状态的信息的内部寄存器。例如,指令寄存器212用于保存基于ρ的微处理器200当前执行的指令。来自指令寄存器212的解码指令控制通过定时和控制单元214和到外部世界的管脚控制基于ρ的微处理器200的剩余部分、存储器和I/O。指令寄存器212是具有与定时和控制单元214(它是具有其自身端口的另一进程)进行通信的一个或多个端口的进程。指令寄存器212较佳地与内部数据总线202(它也可表示为具有其自身端口的进程)进行通信。内部数据总线202用于将信息传入I/O中的存储器或从其传出信息。较佳地,内部数据总线202的总线是能够双向传送信息的双向线。状态寄存器208(它也通过端口进行通信)包括暂态寄存器,用于保存来自算术逻辑单元206(它也通过端口进行通信)的存储器的信息。到算术逻辑单元206的其他输入来自累加器204(使用端口进行通信)。状态寄存器208包括标志寄存器,用于指示算术逻辑单元206的操作。状态寄存器208还包括用于存储信息的通用寄存器。累加器204用于在几乎由算术逻辑单元206实现的每次算术和逻辑操作之后累加应答。人们可认为累加器204是应答寄存器,因为通常在这里发现应答。累加器204和状态寄存器208耦合于内部数据总线202用于发送和接收信息。程序计数器210(其通信通过端口发生)也耦合于内部数据总线202,程序计数器210的目的是为了由基于ρ的微处理器200用于定位待执行的下一指令。程序计数器210允许基于ρ的微处理器200执行来自存储器的下一指令。基于ρ的微处理器200包括地址缓冲器218和数据缓冲器216,用于将信息缓冲入或出地址总线(未示出)和数据总线(未示出)。

根据本发明各实施例使用的术语“进程”意为具有通过进行操作来进行演化或允许其他进程演化的能力的一个或多个计算实体的动态表示。换言之,术语“进程”表示计算实体的双重特性中的一个。当计算实体是静态的时,可对其进行检查,如通过观看程序。当计算实体是移动的时(作为进程),它是不可见的,但其行为可由根据本发明各实施例形成的ρ-计算语言300表示和验证。见图3A。基于ρ的计算语言300包括语法、结构全等的规则和操作语义的规则。语言300的语法是定义方法的规则的系统,其中进程和名称的语法单元放在一起以形成可允许的程序设计声明(statement)。换言之,除非用语言300的语法正确表示,否则就不能在其他事件之间传送概念,如解释进程以获取名称。一旦正确形成表示,语义的规则就和具有含义的表示相联系。由于进程是动态的,因此语言300使用操作语义来将含义耦合于进程。换言之,通过操作和与其它进程交互,进程进行演化。对语言300的表示含义的理解直接与理解其操作相关。结构全等的规则允许语言300的操作语义进行简化,其中可把一种表示看作为另一表示。这样,可将操作语义规则的数量保持较少量,由于这些规则可应用于ρ-计算语言300的表示的排列。ρ-计算语言300的语法单元302-314的每一个可单独使用或进行排列组合以表示进程中计算的细微差别。ρ-计算语言300的语法规则参考图3A进行描述;结构全等规则参考图8F-8H进行描述;而操作语义规则参考图8J-8R进行描述。

使用ρ-计算语言300表示进程和名称(较佳地,在这之后将它们置于ρ-服务中)。行302描述了进程“P∷=0”的一个定义,其中符号P指进程;符号“∷=”指在其左手边的项定义将要开始;而语义单元“0”指进程是非活动的或者是终止的。行304定义了进程的另一语义单元,由符号P“X[X]”表示;在行214描述了符号X,它指出在ρ-计算语言300中的名称;符号X[X]指诸如由符号X表示的名称的计算实体可通过由符号X表示的名称发送。行306提供进程P的另一定义。行306的语义单元描述了输入操作“X(x).P”,其中符号X指在行314描述的名称;符号“X(X)”指一操作,它可通过由X表示的名称接收任何名称,并且作为由P表示的另一进程继续,而将所接收的名称替换括号(X)中的名称。在行308将由P表示的进程的另一语义单元表示为“LIFT X.P”,其中符号X指如行314所述的名字,而符号P指由语义单元302-312定义的进程;而语义单元“LIFT X.P”指发送由符号P表示的进程的解释或将其用于由符号X表示的名称。LIFT操作符在将进程具体化为名称用于通信之前,允许进程的动态组合。行310为由符号P“P|P”表示的进程提供另一语义单元,其中符号P表示由语义单元302-312定义的进程;而竖线“|”指两个进程的组合,而每个进程独立进行并通过共享名称交互(换言之,两个进程并行运行或互相并发运行)。行312示出的语义单元“>X<”指由符号X表示的名称的逆解释。行312示出由P表示的进程双重特性的一个特性,它是由符号X表示的名称的逆解释。在行314描述了另一特性,其中将由符号X表示的名称定义为由符号P表示的进程<P>的解释。在ρ-计算语言300中进程和名称的反射特性展现了计算实体的双重性,它可以既是进程又是名称。

图3B图示示出了计算实体316的双重特性。计算实体316是进程316A,它使用ρ-计算语言300的语义单元302-312表示。如前所述,进程316A表示计算实体316的动态特性。计算实体316的静态特性是名称316B,它使用ρ-计算语言300行314所示的语义单元表示。一旦进程316A解释或变换为名称316B,这样的名称就在两个进程的通信会话中通过端口322发送。见在行304表示的语义单元X[X]。一旦在端口322的另一端接收名称316B(为了区分传送后的名称316B,用了新的标号318A),可对名称318A进行数学逆解释以获取进程318B,它等同于进程316A。总的来说,计算实体318既是名称318A又是进程318B。

基于ρ-计算语言300的变体ρ-计算语言400允许对使用分类进程的名称产生的控制。见图4A。变体ρ-计算语言400包括类似于结合ρ-计算语言300所描述的语义单元的许多语义单元。例如,由符号P表示的进程包括由语义单元“0.”表示的非活动进程或终止的进程。见行402。行404描述了由语义单元“X[Y]”表示的输出进程;其中在行414定义符号X;在行416定义符号Y;而语义单元“X[Y]”指通过由符号X表示的名称发送由符号Y表示的名称。行406描述了语义单元“X(Z).P”;其中符号X表示名称,如行414所定义的;符号Z表示在行418描述的另一名称;符号P表示一进程,在行402-412描述其定义;而语义单元“X(Z).P”指由符号X表示的名称可接收任何其他名称,在这之后,将执行由符号P表示的进程,而将所接收的名称替换由符号Z表示的名称。在行408描述的语义单元“LIFTX.P”提供对由符号P表示的进程的另一定义。事实上,行408描述了由P表示的进程可被翻转或将其用于由符号X表示的名称。在行410将进程的并发执行或两个并行运行的进程的组合描述为“P|P”,其中在竖线“|”任一边的符号P表示并行运行的两个进程。行412描述了语义单元>X<,它对由符号X表示的名称进行逆解释以获取由符号P表示的进程。语义单元“<P>”描述了由符号P表示的进程的解释,在这之后,获取由符号X表示的名称。见行414。行416的语义单元<P>,P:T描述了由符号Y表示的名称的产生类似于行414。然而,约束由符号Y表示的名称的产生,使得由符号P表示的进程必须是由符号T表示的特定类型的单元。一种合适的类型T包括选择模式识别器进程的类型,但也可使用其它合适类型。符号冒号“:”指由符号P表示的进程属于由符号T表示的特定类型,如果不是这样由符号P表示的进程的解释<P>是不可能的。类似地,在行418用语义单元<P>,P:U约束由符号Z表示的名称。通过对由符号P表示的进程<P>进行解释产生由符号Z表示的名称,但这样的进程P必须是由符号U表示的类型的单元。一种合适的类型U包括选择表示值的进程的类型,但类型U并不限于这样的进程,也可使用其它合适的类型。由符号T、U表示的类型允许对演化为名称(在基于进程的环境中它们是通信的基元)的进程进行精密的控制。

图4B时除了两个计算实体420、422。计算实体422包括进程422A,但是如果进程422A是适用于解释的类型,则可将其解释以变换为名称422B。名称422B可通过端口424发送。(为了简化描述,当在端口424一端接收名称422B,则由新的标号428B指代名称422B。)。当接收名称428B时,将名称428B逆解释以获取进程428B,它等同于原始进程422A。计算实体420包括进程420A,但不可构造相应的名称,因为进程420A不是可演化为名称的进程类型的单元。这样,禁止进程420A的解释,因为根据变体ρ-计算语言400,不允许进程420A所属的类型构造名称。

图5A示出了基于ρ-计算语言300、400的另一变体ρ-计算语言500的一部分。变体ρ-计算语言500的许多语义单元类似于ρ-计算语言300、400。例如,行502定义了非活动或停止的进程,其类似于行302、402所定义的。行504定义输出进程。其类似于行304、404所定义的。行506定义了后跟进程P的输入进程,其类似于行306、406所定义的。行508定义了翻转操作,其类似于行308、408所定义的。行510定义相互并行运行的进程的组合,其类似于行310、410所定义的。行512定义了对名称进行逆解释以获取由P表示的进程,其类似于行312、412所定义的。行514将由X表示的名称定义为“<P>,#(P)≤K”;其中符号P表示由语义单元502-512定义的进程;符号“<P>”指由符号P表示的进程的解释;符号“,”指对于由符号P表示的进程的解释的约束就要开始;符号“#”指将进程作为变元(argument)并产生进程语义树尺寸的函数;符号“#(P)”指执行由符号P表示的进程的语义树尺寸;符号“≤”指由符号P表示的进程的语义树尺寸必须小于或等于特定常数;而符号K表示一常数,它是允许进行解释的由符号P表示的进程的语义树最大尺寸。行514允许变体ρ-计算语言500约束、限定或限制可进行解释以产生名称的进程尺寸,从而参与操作或与其他进程的交互。

图5B实质示出变体ρ-计算语言500用于限制名称产生的约束。图5B示出了两个计算实体520、522及其对应语义树520C、522C。计算实体520具有进程520A,但其被禁止构造相应的名称520B。计算实体522包括处理522A,但其具有构造相应名称522B的自由。每个语义树520C、522C是分级结构,其中节点表示操作,而节点的孩子表示操作的变元。例如,语义树520C的节点520E存储分配符“=”。节点520E的孩子包括变量ACCELERATION 520D和除符号“/”520H,除符号“/”520H形成另一节点520H,它有两个孩子。MILES 520F是节点520H的一个孩子,另一个孩子是HOUR 520G。HOUR 520G耦合于另一节点520I,它存储除操作“/”。节点520I还有另一个孩子HOUR 520J。

对于语义树522C,节点522E存储分配符“=”。节点522E的孩子包括变量VELOCITY 522D。节点522H是节点522E的孩子并存储除操作“/”。节点522H有两个孩子,变量MILES 522F和变量HOUR 522G。语义树522C的尺寸小于语义树520C的尺寸。根据行514定义的约束,计算实体522解释进程522A以构造名称522B,因为语义树522C在特定阈值以下。这不像计算实体520,其进程520A具有尺寸超过阈值的语义树。

图6A示出了使用变体ρ-计算语言300-500其中一个形成复制服务600。在传统的π-计算算法中,符号“!P”指相互并行运行的进程的无限组合。对于诸如微处理器的具有限资源集成电路来说,在其上执行这样的无限计算实体理论上是不可行的。本发明的各实施例从ρ-计算语言300-500中去除了这样的基元。通过将服务写入ρ-计算语言300-500对无限组合的构思进行仿真。复制服务600就是一个例子。行602描述了将无限组合“!P”算术定义为“LIFTX.(X(Y).(>Y<|X[Y])|P)|X(Z).(>Z<|X[Z])”。算术项LIFT X.(X(Y).(>Y<|X[Y])|P)是与由算术项X(Z).(>Z<|X[Z])表示的另一进程并行运行的进程。

图6B动态示出了何时实行复制服务600。进程P1 606指算术项(X(Y).(>Y<|X[Y])|P),其中项X(Y)指可在信道X接收名称,在这之后将该名称替换名称Y;在进程X(Y)已操作后,进程>Y<将与进程X[Y]并行运行;项>Y<指将名称Y逆解释以获取与进程X[Y]并行运行的进程;项X[Y]指名称Y可沿着由名称X表示的信道发送;而进程组合(X(Y).>Y<|X[Y])与另一进程P并行运行。

进程604 LIFTX.(X(Y).(>Y<|X[Y])|P)可数学地简略为X[<P1>],其中项P1是进程组合(X(Y).(>Y<|X[Y])|P)。算术项X[<P1>]意为对进程P1进行解释并将其用于由名称X表示的端口。当解释进程P1并将其用于名称X时,进程X(Z)接收项<P1>并将其替换名称Z。进程X(Z)的分解包括项<(X(Y).(>Y<|X[Y])|P)>。当进程X(Z)608已操作时,进程>Z<610变成活动的。进程>Z<610指将名称Z逆解释以重新组成进程P1 606,它可数学描述为(X(Y).(>Y<|X[Y])|P)。现在进程(X(Y).(>Y<|X[Y])|P)将与另一进程X(Z)612并行运行。进程X(Z)612类似于进程LIFT X.(X(Y).(>Y<|X[Y])|P)604的简略,其中名称Z是对进程P1 606的解释的替换并将名称Z在称为X的端口发送。当进程>Z<610的项X(Y)获取由名称X输出的名称Z时,就可实现进程的复制或无限组合。进程(X(Y).(>Y<|X[Y])|P)的组合中一系列操作和交互再发生一次,就可模拟π-计算的复制基元。

图7A是说明名称服务700。将名称服务700写入ρ-计算语言300-500的其中一个。名称服务700示出了以下便利,即可将创建新名称置于服务中,而不是语言的基元中,从而避免或减少π-计算中实现新名称的问题。项N(I,X,F,R)指名称服务700的标记702。为标记702提供四个名称I,X,F和R。第一名称在端口I发送;其余名称在端口X上发送;而端口F用于接收区别于提供给名称服务700的所有名称的新名称。

行704定义了被加数I(Y).(LIFT R.(Y[<0>])|N(I,X,F,R)),它描述了名称服务的一个性能。行704表示对名称服务700初始化性能的操作和交互。行706是另一被加数X(Y).R(S).(LIFT R.(Y[<0>]|>S<)|N(I,X,F,R)),它表示名称服务700的主要性能。行708定义了又一被加数F(B).R(S).LIFTB.(<0>[<0>]|>S<),它表示用于将不同于提供给名称服务700的其他名称的名称产生结束的操作和交互的进程。

图7B实质示出了名称服务700被加数各部分的操作和交互。名称服务700总的由进程P1 710表示。进程I(Y)712变为活动以通过名称I接收任何名称并因此将所接收的名称替换名称Y。接着,进程的组合(LIFTR.Y[<0>]P1)714变为活动的。进程组合714简略为进程组合R[<Y[<0>]>]|P1,其中项<0>指非活动进程0的解释;项Y[<0>]指将进程0的解释用于名称Y;项R[<Y[<0>]>]指进程Y[<0>]的解释,并且将这样的解释用于名称R(它表示存储累加信息的寄存器);而项|P1指进程P1 710正与进程R[<Y[<0>]>]并行运行。进程712、714表述了行704描述的被加数处的名称服务700的性能。

进程X(Y)716表示行706示出的被加数中的第一操作,并指出名称服务700的另一性能。项X(Y)指通过端口X接收任何名称,在这之后将这样接收的名称替换名称Y。在进程X(Y)716操作后,激活另一进程R(S)718。项R(S)指由名称R接收任何名称,在这之后将这样接收的名称替换另一名称S。在进程R(S)718操作后,进程的另一组合(LIFT R.(Y[<0>]|>S<)|N(I,X,F,R))720变为活动的。进程组合720可数学地简略为另一进程组合R[<(Y[<0>]|>S<)>]|P1,其中项<0>指非活动进程0的解释;项Y[<0>]指在端口Y发送项<0>;项|指与另一进程并行执行进程Y[<0>];项>S<指名称S正被逆解释;项<(Y[<0>]|>S<)>指进程组合(Y[<0>]|>S<)的解释;项R[<(Y[<0>]|>S<)>]|P1指将进程组合(Y[<0>]|>S<)的解释用于名称R;而项|P1指名称服务700正与进程R[<(Y[<0>]|>S<)>]|P1并行运行。进程716、718和720是行706的被加数的部分项,该被加数描述了名称服务700的主要性能。

进程F(B)722允许通过端口F接收任何名称,在这之后将所接收的名称替换名称B。名称B表示回叫端口,从该端口可获取与名称服务700存在的其他名称不同的名称。在进程F(B)722已操作后,另一进程R(S)724变为活动的。进程R(S)724通过名称R接收任何名称,在这之后将所接收的名称替换名称S。进程R(S)724指的是存储与关于新名称的累加信息相关的擦除信息的寄存器。在进程R(S)724已操作后,另一进程LIFT B.(<0>[<0>]|>S<)726变为活动的。进程LIFTB.(<0>[<0>]|>S<)726可缩略为进程B[<(<0>[<0>]|>S<)>],其中项0指非活动进程或进程的终止;项<0>指非活动进程0的解释;项<0>[<0>]指从非活动进程0的解释中获取的名称用作端口以输出非活动进程0的解释。项(<0>[<0>]|>S<)指进程<0>[<0>]正与另一进程>S<并行运行;项>S<指正对名称S进行逆解释;而项B[<(<0>[<0>]|>S<)>]指将进程组合(<0>[<0>]|>S<)的解释用于端口B。

图8A-8R示出了编译或执行ρ-计算程序的方法800,如复制服务600或名称服务700。在ρ-计算程序的分析中,方法800执行管理ρ表示的结构和内容的语义规则集。还由方法800执行管理ρ表示的结构全等的相等规律集。诸如语言300-500的ρ-计算语言还包括管理ρ表示含义的操作语义规则集,根据ρ-计算语言300-500的语法规则集正确地形成ρ表示的含义。为了清楚起见,方法800的以下描述引用图3A-5A中示出ρ-计算语言300-500相关的各单元。

离开本主题,方法800形成编译器的一部分,该编译器较佳地用于同步基于ρ的微处理器200或基于ρ的微处理器阵列的部件。该同步显性地由编译器控制,而不是依赖于由微处理器提供的隐性控制。当代的基于CISC的微处理器依赖于电路,该电路提供关于接着可能执行的指令的猜测以加速程序的执行。例如,用于一些基于CISC的微处理器的技术,称作为预取的指令猜测是否在程序中进行分支,并从合适位置取得可执行代码。当执行分支指令,该指令和下一执行的指令存储于缓冲器中。该信息用于预测指令下一执行时间所分支的路径。如果预测是正确的,就会出色完成该操作。当预测是不正确的时候,执行分支会引起未得到高速缓冲的干扰或流水线中断,从而系统会由于需要检索下一指令而彻底变慢。当执行程序不是顺序的而是异步的并需要并发性时,该问题更严重了。

本发明各实施例的编译器减少了基于CISC的微处理器的预测的需要。本发明各实施例的编译器允许在单个集成电路或多个集成电路上的一个或多个微处理器上显性同步模型的创建。本发明各实施例的编译器编译以数学语言编写的程序,如ρ-计算语言300-500,它区别于汇编语言。汇编语言使用缩写和助记代码,其中每一声明对应单条机器指令。ρ-计算语言300-500提供从汇编语言演化的基本机器语言之上的抽象级别。ρ-计算语言300-500的声明定义了限定语言结构的语法和语义规则集。可使用ρ-计算语言300-500表示进程和名称的协作的排列差别以及进程的演化。这些表示的差别可由ρ-计算语言300-500的算法合适地保存,使得逐渐执行程序员的意图,而不在对诸如汇编语言或机器语言的低级语言的编译过程中变弱。在传统的程序设计语言中,由于将程序从高级语言编译为低级语言,程序员意图的复原会变得淡化。高级语言通常比低级语言更有表现力,因为高级语言包含更多的信息,它在程序编译或链接过程中会被不希望地去除。

转到图8A,从开始框,方法800进行在接续端(“端点A”)和出口端(“端点B”)之间定义的一组方法步骤802。方法步骤组802对管理ρ声明的结构和内容的语法规则运行ρ-计算程序。从端点A(图8B),方法800进到框808,其中方法800从ρ-计算程序或服务中提取ρ表示(∏)。接着,在判决框810,进行测试以确定ρ表示是否是“0”的形式。如果在判决框测试的结果为是,则方法进到框812,其中ρ表示为表示非活动或停止操作的ρ进程。随后方法继续到另一接续端(“端点A4”)。如果在判决框810测试的结果为否,则方法800进到另一判决框814,其中进行另一测试以确定ρ表示是否是X[Y]的形式。如果在判决框814测试的结果为是,则ρ表示为表示输出操作的ρ进程,其中将名称Y用于名称X。随后方法800进到端点A4。如果在判决框814测试的结果为否,则方法800继续到另一接续端(“端点A1”)。

从端点A1(图8C),方法进到判决框818,其中进行测试以确定ρ表示是否是X(Z).P的形式。如果在判决框818测试的结果为是,则ρ表示为表示后跟进程P的输入操作的ρ进程。换言之,可由名称X接收任何名称,在这之后将所接收的名称替换名称Z,并且该过程继续进程P。方法800进到端点A4。如果在判决框818测试的结果为否,则方法800进入判决框822,其中进行另一测试以确定ρ表示是否为LIFT X.P的形式。如果在判决框822测试的结果为是,则ρ表示为表示翻转操作的ρ进程。见框824。方法800随后继续到端点A4。如果在判决框822测试的结果为否,则方法800进到另一接续端(“端点A2”)。

从端点A2(图8D),方法800进到判决框826,其中进行测试以确定ρ表示是否是P|P的形式。如果在判决框826测试的结果为是,则ρ表示为表示与另一进程并行运行作为组合的进程的ρ进程。见框828。方法800随后进到端点A4。如果在判决框826测试的结果为否,则方法800进到另一判决框830,其中进行测试以确定ρ表示是否为>X<的形式。如果在判决框830测试的结果为是,则ρ表示为表示名称X的逆解释的ρ进程。方法800随后进到端点A4。如果在判决框830测试的结果为否,则方法继续到另一接续端(“端点A3”)。

从端点A3(图8E),方法800进到判决框834,其中进行测试以确定ρ表示是否是<P>,#(P)≤K的形式。如果在判决框834测试的结果为是,则ρ表示为表示诸如名称X的名称的ρ进程P的解释。语法短语“#(P)≤K”指置于名称产生中ρ进程解释上的约束。一个合适的约束包括对特定阈值检查ρ进程P的语义树尺寸,超过该阈值就可能不能从进程P的解释中产生名称。其他约束也是可能的,只要约束对耦合于执行ρ进程的微处理器的至少一部分有限资源模型化。方法800随后继续到端点A4。如果在判决框834测试的结果为否,则方法800继续到另一判决框838,其中进行测试以确定ρ表示是否是<P>,P:T的形式。如果在判决框838测试的结果为是,则ρ表示为由类型T约束的ρ进程P的解释。见框840。使ρ进程成为特定类型的成员便于对可解释形成名称的进程类型进行控制,并因此控制进程的通信性能。方法800随后继续到端点A4。如果在判决框838测试的结果为否,则方法800也进到A4(图8E)。在判决框842进行测试以确定是否有更多待估计的ρ表示。如果结果为否,则方法800继续到出口端B。否则,在判决框842进行测试为是,则方法800进到另一接续端(“端点A5”)。从端点A5(图8B),方法800跳回到框808,其中重复如上所讨论的处理步骤。

从出口端B,方法800继续到在接续端(“端点C”)和出口端(“端点D”)之间定义的一组方法步骤804。方法步骤组804使用一组相等规律来检查ρ表示的结构全等。从端点C(图8F),方法800进到框844,其中方法800提取ρ表示。在判决框846进行测试以确定ρ表示是否是<>X<>的形式。如果在判决框846测试的结果为是,则方法800推断ρ表示结构上全等于名称X。见框848。方法800随后继续到另一接续端(“端点C3”)。否则,在判决框846进行测试为否,则方法800进到判决框850,其中进行另一测试以确定ρ表示是否是P|0的形式。如果在判决框850测试的结果为是,则方法800推断ρ表示结构上全等于进程P。方法800随后进入端点C3。否则,在判决框850进行测试为否,则方法进到另一接续端(“端点C1”)。

从端点C1(图8G),方法800进到判决框854,其中进行测试以确定ρ表示是否是0|P的形式。如果在判决框854测试的结果为是,则方法800推断ρ表示结构上全等于进程P。见框856。方法800进入端点C3。如果在判决框854测试的结果为否,则方法800继续以在判决框858执行另一测试,确定ρ表示是否是P0| P1的形式。如果在判决框858测试的结果为是,则方法800推断ρ表示结构上全等于进程组合P1|P0。见框860。方法800继续到端点C3。如果在判决框858测试的结果为否,则方法800继续到另一接续端(“端点C2”)。

从端点C2(图8H),方法800继续到判决框862,其中进行测试以确定ρ表示是否是(P0|P1)|P2的形式。如果在判决框862测试的结果为是,则ρ表示结构上全等于进程组合P0|(P1|P2)。方法800继续到端点C3。如果在判决框862测试的结果为否,则方法800也继续到端点C3。从端点C3(图8I),方法800在判决框866进行测试以确定是否有更多待估计的ρ表示。如果结果为否,则方法800继续到出口端D。否则,在判决框866测试的结果为是,则方法继续到另一接续端(“端点C4”)。从端点C4(图8F),方法800循环回到框844,其中重复以上讨论的处理步骤。

从出口端点D(图8A),方法800进到在接续端(“端点E”)和出口端(“端点F”)之间定义的一组方法步骤806。方法步骤组806对操作语义规则运行ρ计算程序以检查ρ进程表示的含义。从端点E(图8J),方法800进到框868,其中方法800提取用于估计的ρ表示。方法800进到判决框870,其中进行测试以确定ρ表示是否是LIFT X.P的形式。如果在判决框870测试的结果为是,则将ρ表示缩略为X[<P>]。随后方法继续到另一接续端(“端点E11”)。如果在判决框870测试的结果为否,则方法800在判决框874进行另一测试,其中确定ρ表示是否是P0|P2的形式。如果在判决框874测试的结果为是,则方法继续到另一接续端(“端点E1”)。否则,在判决框874测试的结果为否,则方法800进入另一接续端(“端点E2”)。

从端点E1(图8K),方法800进到判决框876,其中进行测试以确定项P0是否可缩略为项P1。如果结果为是,则将ρ表示缩略为P1|P2。方法800随后继续到端点E11。否则,在判决框876测试的结果为否,则方法800继续到端点E2。从端点E2(图8K),进行测试以确定ρ表示是否是P2的形式。见判决框880。如果在判决框880测试的结果为是,则进行另一测试以确定项P2是否结构全等于项P0。见判决框882。如果在判决框882测试的结果为是,则方法800进到另一接续端(“端点E3”)。如果在判决框880或判决框882测试的结果为否,则方法800进入另一接续端(“端点E4”)。

从端点E3(图8L),方法800进到判决框884,其中进行测试以确定项P0是否可缩略为项P1。如果在判决框884测试的结果为是,则在判决框886进行另一测试以确定项P1是否结构全等于项P3。如果在判决框886测试的结果为是,则方法800将项P2缩略为项P3。见框888。方法800进到端点E11。如果在判决框884或判决框886测试的结果为否,则方法800进入端点E4。

从端点E4(图8L),方法800进行测试以确定ρ表示是否是X0[X2]X0(X1).P0的形式。见判决框890。如果在判决框890测试的结果为是,则方法800进到另一接续端(“端点E5”)。否则,在判决框890测试的结果为否,则方法进到另一接续端(“端点E9”)。

从端点E5(图8M),将ρ表示缩略为第二ρ表示(∏1),它是P0{X2/X1}。见框892。在判决框894进行测试以确定第二ρ表示是否是(0)>{<Q>/<P>}<的形式。如果在判决框894测试的结果为是,则使第二ρ表示等于进程0。见框896。方法800随后进到端点E11。否则,在判决框894测试的结果为否,则方法800进到另一判决框898,其中进行另一测试以确定第二ρ表示是否是(R|S)>{<Q>/<P>}<的形式。如果在判决框898测试的结果为是,则使第二ρ表示等于(R)>{<Q>/<P>}<|(S)>{<Q>/<P>}<。见框899。方法800继续到端点E11。如果在判决框898测试的结果为是,则方法800继续到另一接续端(“端点E6”)。

从端点E6(图8N),方法800在判决框897进行测试以确定第二ρ表示是否是(X(Y).R)>{<Q>/<P>}<的形式。如果在判决框897测试的结果为是,则使第二ρ表示等于(X){<Q>/<P>}(Y).((R)>{<Q>/<P>}<)。见框895。方法800进到端点E11。如果在判决框897测试的结果为否,则方法800进入判决框893,其中进行另一测试以确定第二ρ表示是否是(X[Y])>{<Q>/<P>}<的形式。如果在判决框893测试的结果为是,则使第二ρ表示等于(X){<Q>/<P>}[(Y){<Q>/<P>}]。见框891。方法800进入端点E11。如果在判决框893的结果为否,则方法800进到另一接续端(“端点E7”)。

从端点E7(图8O),方法继续到判决框889,其中进行测试以确定第二ρ表示是否是(LIFTX.R)>{<Q>/<P>}<的形式。如果在判决框889测试的结果为是,则使第二ρ表示等于LIFT(X){<Q>/<P>}.(R)>{<Q>/<P>}<。见框887。方法800进入端点E11。如果在判决框889测试的结果为否,则方法800在判决框885进行另一测试以确定第二ρ表示是否是(<X>)>{<Q>/<P>}<的形式。如果在判决框885测试的结果为是,则方法800进入另一接续端(“端点E8”)。否则,在判决框885测试的结果为否,则方法800进到端点E9。

从端点E8(图8P),方法800进到判决框883,其中进行测试以确定名称X是否结构全等于<P>,它表示进程P的解释。如果结果为是,则使第二ρ表示等于进程Q。见框881。方法800进入端点E11。如果在判决框883测试的结果为否,则方法800进到框879,其中使第二ρ表示等于>X<,它表示名称X的逆解释。过程继续到端点E11。

从端点E9(图8Q),方法800进到判决框877,其中进行测试以确定第二ρ表示是否是(X){<Q>/<P>}的形式。如果结果为是,则方法800进到另一接续端(“端点E10”)。否则在判决框877测试的结果为否,则方法进到端点E11。

从端点E10(图8R),方法800进到判决框875,其中进行测试以确定名称X是否结构全等于<P>,它指进程P的解释。如果在判决框875测试的结果为是,则使第二ρ表示等于<Q>,它表示进程Q的解释。见框873。方法800继续到端点E11。如果在判决框875结果为否,则方法800使第二ρ表示等于名称X。见框871。从框871,方法800继续到端点E11并在判决框869进行测试以确定是否有更多待估计的ρ表示。如果结果为否,则方法800继续到出口端F,其中方法800结束并终止执行。否则,在判决框869测试的结果为是,则方法800进到另一接续端(“端点E12”)。从端点E12,方法800循环回到框868,其中重复以上所述的处理步骤。

虽然示出和描述了本发明的较佳实施例,但是可以意识到其中可以进行各种改变,而不离开本发明的主旨和范围。

要求保护独占权的本发明实施例由权利要求书限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号