一种处理器结构.pdf

上传人:e2 文档编号:1008127 上传时间:2018-03-25 格式:PDF 页数:21 大小:911.36KB
返回 下载 相关 举报
摘要
申请专利号:

CN00813119.8

申请日:

2000.07.14

公开号:

CN1375083A

公开日:

2002.10.16

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回|||实质审查的生效|||公开|||实质审查的生效

IPC分类号:

G06F9/44; G06F12/02

主分类号:

G06F9/44; G06F12/02

申请人:

艾利森电话股份有限公司;

发明人:

R·特亚恩斯特伦

地址:

瑞典斯德哥尔摩

优先权:

1999.07.21 SE 9902752-6

专利代理机构:

中国专利代理(香港)有限公司

代理人:

吴立明;李亚非

PDF下载: PDF下载
内容摘要

一种处理器结构适于以顺序指令流操作和通过使用表或元组或简单类型处理数据的程序语言。它包括一个程序保持设备(1),一个指令保持设备(2,3),一个用于存储数据对象的数据存储器(5),和执行设备(7)。提供设备(4,5,6)来处理对由捆绑引用的数据对象的引用,和包括设备(6)来根据来自指令保持设备(2,3)的一个实际指令增量对一个数据对象的引用计数和减量对一个数据对象的引用计数。

权利要求书

1: 一种处理器结构,它适于使用顺序指令流操作和通过使用表 或元组或简单类型处理数据的程序语言,包括一个指令保持设备(2, 3),一个存储数据对象的数据存储器设备(5),和执行设备(7), 其特征在于,设备(4,5,6)用于处理由捆绑引用的数据对象的 引用,和包括设备(6)来根据来自指令保持设备(2,3)中的一个实 际指令增量对一个数据对象的引用计数和减量对一个数据对象的引用 计数。
2: 根据权利要求1的处理器结构,其特征在于, 设备(4)用于在处理对数据对象的引用的设备(4,5,6)中处 理数据的临时存储; 设备(4)中的存储设备(13)用于处理数据的临时存储,和保持 对所述临时存储的捆绑的注意。
3: 根据权利要求2的处理器结构,其特征在于, 在所述设备(4,5,6)中的数据存储器处理器(handler)设备 (6)用于处理对数据对象的引用,它在检测到对一个对象的零引用产 生、意味着该对象不再需要时使为该对象的存储器槽可作为空闲存储 器槽使用。
4: 根据前述权利要求中任何一个权利要求的处理器结构,其特 征在于, 用于处理数据的临时存储的设备包括一个参数存储器设备(4), 它具有保持注意对存储的值的捆绑的设备(10,11,12),和具有为 存储所述数据值的存储设备(13)。
5: 根据权利要求4的处理器结构,其特征在于,设备(4)中为 处理数据的临时存储的所述设备(13)存储值和为供给参数存储器(4) 的值的类型信息,和该值作为数据对象的一部分具有对参数的捆绑, 和参数存储器(4)使用参数和使用为临时存储的参数在函数之间传送 值。
6: 根据权利要求4或5的处理器结构,其特征在于,参数存储 器(4)在计算前用存储的实际值代替从指令存储器设备(2)中取出 的指令中的参数引用。
7: 根据权利要求4到6中任何一个权利要求的处理器结构,其 特征在于,参数存储器(4)中的设备(11)用于存储和管理为参数的 环境信息,这里环境决定哪一些参数是当前有效的参数。
8: 根据权利要求4到7中任何一个权利要求的处理器结构,其 特征在于,参数存储器(4)中的设备(10-13)用于存储和管理为参 数和环境的信息,这里使用供给参数存储器的进程信息决定哪一些环 境和哪一些参数是当前有效的。
9: 根据权利要求4到8中任何一个权利要求的处理器结构,其 特征在于,一个进程标识寄存器用于标识当前执行的进程,和一个环 境标识寄存器(11)用于标识当前执行的环境。
10: 根据权利要求4到9中任何一个权利要求的处理器结构,其 特征在于,至少保持要被执行的进程的一个优先级队列中的至少顶部 可用于读,和至少下一要执行的进程的进程说明符的一部分在参数存 储器设备(4)中可用于读。
11: 根据权利要求10的处理器结构,其特征在于,为建立一个 进程开关: ●在参数存储器(4)中建立一个新环境,和在所述新环境中 至少存储程序计数器, ●在当前进程的进程说明符中存储所述新环境值,所述进程说 明符可以存储在数据存储器(5)中, ●恢复该新进程的环境值, ●设定该新进程为当前进程, ●至少恢复程序计数器。
12: 根据前述权利要求中任何一个权利要求的处理器结构,其特 征在于,指令只具有一种指令格式,这里每一指令包括不同数目的子 指令,每一子指令依次只具有同样的一种指令格式,包括一个第一部 分和一个第二部分,第一部分决定要采取的动作,第二部分提供在该 动作中要使用的值。
13: 根据前述权利要求中任何一个权利要求、适于执行功能语言的处 理器结构,其特征在于一个指令集,该指令集包括为函数调用、函数 返回、在函数之间传送参数的专用指令。
14: 根据权利要求13的处理器结构,其特征在于一个指令集, 该指令集包括为增量和减量存储器引用的专用指令。
15: 根据前述权利要求中任何一个权利要求的处理器结构,其特 征在于,它适于以功能语言写的计算机程序的进程部分。

说明书


一种处理器结构

    本发明涉及在权利要求1的前叙部分公开的一类处理器结构。特别说,本发明特别适于但不限于执行功能程序。

    程序开发费用很高。如果程序可以用功能语言制造的话,则这些费用有时可以减少,因为对一个用户来说很难使用以常规语言编程的机器-它需要许多知识-和因为其复杂性,程序员可能引入隐藏的错误。

    编程语言的发展

    第一个电子计算机的开发开始了适合于几种这类计算机的编程语言的开发,诸如FORTRAN,COBOL,Algol,BASIC,Pascal。这些语言被称为强制语言,下面也称为常规语言,主要因为一个事实,即它们通常给出一系列要由常规计算机顺序执行的命令或指令组成的程序,常规计算机亦即根据John von Neumann开发的原理设计的计算机。强制类程序变得日益复杂并常常包含许多错误,难读,难理解,和特别难修改。

    这些强制语言的日益增加的不适导致另一系列语言,称为功能语言的开发:LISP,ISWIM,Scheme(LISP的方言(dialect)),ML,Hope,SASL,等等。在这些语言开发后面的驱动力是概念的简单性;没有特别的机器影响的设计。功能编程语言有几种特性,它们消除了更为常规的编程语言的缺点。

    为了另外地信息和理解,我们引用教科书“使用标准ML的功能编程”,ke Wikstrm著,1987年由Prentice出版社出版。

    用功能语言写的程序可以被看作是对象特性的一组定义和计算规则。定义是说明部分,计算规则是在执行期间计算机使用的操作部分。功能语言提供对计算机的一个更高级接口,这使它可能为程序员从与计算机有关的细节中摘出。作为一个积极的效果,功能程序常常比常规强制程序更短和更容易理解。

    当今,功能语言作为在常规计算机上的虚拟机实现。这使用编译程序和解释程序实现。这意味着执行一个程序,它解释程序指令。每一程序指令导致执行一些机器指令。因此执行慢。

    显然,功能程序方法的一些好处由下述事实打了折扣,即实际上市场上没有有用的专门硬件用于以有效的方式存储和执行功能程序的处理。一些适于执行功能编程语言的处理器,即所谓的FFP机器,在1988年出版的教科书“高级语言计算机结构”(ISBN 0,88175-1342-2)中的第11和12章讨论,并已不时构建和制造。例如专用Lisp工作站在八十年代中期提供。Inmos有限责任公司生产的用于内置系统的处理器的晶片机在八十年代中期问世并仍在市场上。

    一种特别类型的功能语言是Erlang,它由申请人为实时应用开发。不管功能程序在von Neumann类型的计算机上执行慢的缺点,比强制语言慢得多,但是Erlang的使用日渐增加。然而,安装有Erlang的计算机的容量为某些应用不够。Erlang程序作为一些通信进程也称为进程而建立。在不同进程的执行之间常常有一个开关。这一开关是非生产性的,应该尽可能快。目前,它在所谓的“实时系统”中用软件制作。

    因为在常规计算机上提供的用功能语言诸如Erlang写的数据程序非常消耗功率,对许多应用太多,因此需要提供一个具有较低功耗的硬件。在大多数产品中低功耗是必需的。在将来对低功耗的要求会日益增加。高功耗阻碍了处理器速度的进一步改进。

    本发明的一个目的是提供一个微处理器,它适于执行以具有顺序指令流的语言例如Erlang写的程序或至少部分程序。

    本发明的另一个目的是提供一个在实时操作系统内执行功能语言的协处理器。一个或几个这一类型的协处理器应该能够处理要求大容量的进程。

    本发明的再一个目的是提供一个专用于Erlang的处理器。

    本发明的再一个目的是提供一个在无线便携设备中适于功能语言的处理器。给在无线便携设备中的处理器提供常常需要改变的软件(SW)内容。在这种场合,适于处理功能语言诸如Erlang的处理器应该给出很大优点。

    本发明还有一个目的是提供一个处理器,它适于功能语言,具有比当今普通的较少存储器访问。这意味着需要高指令密度。

    本发明的另一个目的是提供一种设备,它能够处理以软件实现的许多功能而具有低的或合理的功耗,因此提供大量功能对低的功耗。

    本发明的再一个目的是为无用信息的收集和在处理器中的进程切换提供一种专用硬件支持以便改善执行性能和降低功耗。这种机构通常在“实时系统”中以软件实现。

    本发明涉及一种处理器结构,它适于以顺序指令流操作和通过使用表或元组或简单类型处理数据的程序语言,包括一个指令保持设备,一个存储数据对象的数据存储器设备,和执行设备。上面提到的对象可以通过为处理对由捆绑引用的数据对象的引用提供设备而解决,和包括依赖从指令保持设备来的一个实际指令增量对数据对象的引用计数和减量对数据对象的引用计数的设备。

    可以在用于处理暂时存储数据的设备中提供存储设备和保持对所述暂时存储器的捆绑的注意(notice)。当注意保持设备检测到对一个对象的零引用产生时,意味着这一对象不再需要,它优选使为该对象的存储器槽作为一个空闲的存储器槽可用。处理暂时存储数据的设备优选包括参数存储器设备,它具有为保持对存储的值的捆绑的注意的设备,和具有为存储所述数据值的设备。

    值存储设备可以存储为供给到参数存储器的值的值和类型信息。这些值作为数据对象的一部分,于是具有对参数的捆绑。参数存储器然后使用参数和使用为暂时存储器的参数在函数之间传输值。参数存储器可以在计算前用存储的实际值置换从指令存储器设备中取的指令中的参数引用。可以在参数存储器中提供设备用于存储和管理为这些参数的环境信息,这里环境决定哪些参数是当前有效的参数。可以在参数存储器中为参数和环境提供用于存储和管理信息的设备,这里供给参数存储器的进程信息用于决定哪些环境和哪些参数是当前有效的。

    可以提供一个进程标识寄存器,用于标识当前执行的进程,和一个环境标识寄存器,用于标识当前执行的环境。优选保持至少一个要被执行的进程的优先级队列的至少顶部可读。至少下一要执行的进程的进程说明的一部分在参数存储器设备中保持可读。为建立一个进程开关:

    ●在参数存储器中建立一个新环境,至少程序计数器存储在所述新环境中,

    ●在当前进程的进程说明中存储所述新环境值,所述进程说明可以存储在数据存储器中,

    ●恢复新进程的环境值,

    ●设定该新进程为当前进程,

    ●至少恢复程序计数器。

    指令优选只以一种格式提供,这里每一指令由不同数目的子指令组成。每一子指令依次只具有一种同样的指令格式,包括一个第一部分和一个第二部分,第一部分决定要采取的动作和第二部分提供在动作中要使用的值。

    本发明可以适于执行功能语言。于是建立一个指令集,它包括为函数调用、函数返回、在函数之间传输参数的专用指令。于是还可以建立一个指令集,它包括为增量和减量存储器引用的专用指令。上面公开的处理器指令可以适于用一种功能语言写的计算机程序的进程部分。

    这样,本发明涉及这样一种处理器结构,它适于以顺序指令流操作和通过使用简单的值和表和动态分配的数组处理数据的程序语言,包括一个指令保持设备,一个用于存储数据对象的数据存储器,和执行设备。本发明的基本特征在于,依赖于指令保持设备中的一个实际指令处理简单值和引用数据对象,所述依赖称为捆绑。还有依赖于在指令设备中的一个实际指令和依赖于存储对所述数据对象的引用的存储设备增量对数据对象的引用计数和减量对数据对象的引用计数的设备。本发明可以包括为存储简单数据和对在设备中的数据对象的引用的设备,所述存储的数据和对数据对象的引用通过标识符由指令设备中的指令引用。可以提供存储设备,用于存储简单的数据和对数据对象的引用。存储值的设备可以包括参数存储器设备,它有保持注意对存储的值的捆绊的设备,和具有为存储所述数据值的存储设备。可以提供这一存储设备来处理值的暂时存储,这里存储的值至少包括类型信息和数字信息,类型信息表征数字信息。

    可以使用参数存储器依赖指令设备中的一个实际指令传输、存储函数参量诸如存储在参数存储器中的参量值,然后捆绑到在指令中的一定的标识符。可以依赖在一个实际指令中的所述标识符从参数存储器中读这些值。可以在参数存储器中提供用于存储和管理为存储的值的范围信息和指定的环境的设备,这里范围决定哪些值当前有效和合格从存储器中读出。可以在参数存储器中提供用于存储和管理为范围和值的信息的设备,这里使用该设备来存储和管理进程信息,进程信息决定哪些范围和值当前有效和合格从存储器中读出。可以提供进程标识符寄存器用于标识当前执行的进程。也可以提供范围标识符寄存器用于标识当前有效的范围。至少保持要被执行的进程的一个优先级队列的顶部可用于读,至少保持下一要执行的进程的部分进程说明可用于读。为建立一个进程开关,优选:

    ●建立一个新范围,和使用所述新范围在参数存储器中至少存储程序计数器;

    ●新范围值存储在当前进程的进程说明中,所述进程说明可以存储在数据存储器中;

    ●为切换到进程的范围值从所述进程的进程说明中恢复;

    ●切换到设定为当前进程的进程;

    ●至少从参数存储器中读程序计数器并恢复。

    本发明还涉及一种进程结构,其特征在于指令只有一种指令格式,这里,每一指令包括不同数目的子指令,每一子指令依次只具有同样的一种格式,包括第一和第二部分,第一部分决定要采取的动作,第二部分提供在该动作中使用的值。该进程结构优选适于执行使用功能和动态存储器分配的语言。指令集的特征包括:

    为建立函数调用和在同一指令中传输函数参量的专用指令;

    为建立从函数的返回和在同一指令内传输函数结果的专用指令。

    指令集可以包括为增量或减量对存储在数据存储器中的数据对象的引用号码的子指令,这里,所述子指令说明表示捆绑到参数存储器的标识符。参数存储器可以依次存储对由所述捆绑引用的实际数据对象的存储器引用。参数存储器存储使用的管理是一个自治的进程,它能从参数存储器读出值并将这些值存储到数据存储器中。然后可以释放参数存储器中的存储位置供使用,还可以从数据存储器读回这些值到参数存储器和为所述值恢复信息。当在参数存储器中的进程大于一个指定的极限值时可以把属于一个选择的进程的值移动到数据存储器。当在参数存储器中为一个进程的范围数目大于一个指定的极限时,属于一个选择的范围的值可以被移动到数据存储器。当下一要被执行的进程没有在参数存储器中的值但是具有移动到数据存储器的这种值时,至少一些这样的值可以从数据存储器恢复到参数存储器中。当在参数存储器中为当前进程的范围数目小于一个指定的极限时,为当前进程的值被移动到数据存储器,至少一些这样的值可以从数据存储器移动并恢复到参数存储器。

    设计这种处理器结构为下述场合执行得特别好:

        ●以功能语言组成控制结构的“功能应用”。

        ●进程开关,下面称为环境(context)开关(为进程的

    其它表述是任务或线程。在剩余的文字中使用表述进程,虽然

    应该理解,也可以使用任务或线程)。通常,远程通信应用使

    用大量进程实现。能够在这些进程之间快速切换,以便不损失

    性能是必需的。

        ●在进程之间的消息传送。

        ●存储器管理,包括无用信息的收集。

    功能语言把存储器管理留给运行时间系统。处理存储器占用处理器时间,通常被视为是一个问题。当使用例如用Erlang提供的本发明时,这在处理器中用专用单元实现,对有用的计算很少干扰。

    根据本发明的处理器以类RISC方式执行指令,亦即以顺序指令流方式,容易形成管线。这样,根据本发明的处理器不是一个精简机。它有一个简单的组合指令解码,有效执行函数调用,支持建立和操作表和元组,支持快速环境切换,和高代码密度。这使得功耗在低的和经济的水平,避免需要昂贵的冷却系统。

    为更完整地理解本发明及其另外的目的和优点,现在结合附图引用下面的说明,附图中:

    图1表示一个专用处理器结构的第一实施例,用于处理以顺序指令流工作的功能语言,例如Erlang。

    图2表示一个指令管线的一个优选实施例。

    图3表示在根据本发明的处理器中包含的参数存储器的内部结构的一个实施例。

    图4表示在参数存储器中存储的参数说明的层次结构。

    在根据本发明的处理器中的指令集结构(ISA)设计为紧凑而高效,用于执行功能语言特别是为Erlang。然而,本发明概念也适用于非功能性的其它类型的语言。为ISA的一些设计目的在下面说明:

        ●以类RISC方式执行,亦即顺序指令流,容易形成管

    线。

        ●简单的指令解码。

        ●高效执行函数调用。

        ●支持快速环境切换。

        ●高代码密度。

        ●支持为表和元组的无用信息收集。

    优选只有一种指令格式。每一指令优选由不同数目的子指令组成,例如3个,每一个子指令具有同样的格式。第一子指令格式包括一个第一部分,它决定要采取的动作,和一个第二部分,它提供在所采取动作中使用的值。第一子指令可以决定整个指令的解释,或可以允许其它子指令指示以非常长指令世界(VLIW)方式的并发独立的动作。

    现在引用图1,该图表示满足上述特征的根据本发明的处理器的主结构的一个实施例。为处理器的程序写入一个指令存储器2。程序由给指令存储器2提供地址的程序计数器1向前步进。

    如在图2中所示,在该实施例中的处理器结构基本上是一个4阶段管线,包括取指令阶段IF,指令解码ID,参数存储器访问PMA和执行EX,其在下面进一步说明。因为存储可以形成管线的第五存储阶段,因此也可以视为管线的一部分。

    回到图1,要取的指令由程序计数器1指出。它由指令取出机构IF从指令存储器2取出。因此,程序计数器连接到指令存储器2并把地址供给该存储器。然后存储器返回由该地址指向的指令。

    取回的指令以编码形式亦即以编译为处理器的机器码的形式存储在存储器2中,然后供给指令解码器3,后者进行指令解码ID。在解码阶段检测无条件分支。解码器3变换指令为一些用作控制字的控制信号。

    然后解码的指令被传输到参数存储器4阶段,用于参数存储器访问PMA。这一参数存储器4是为本发明提供的一种特殊类型的硬件设备。在这一阶段内,在解码的指令中的参数引用用它们存储在参数存储器4中的相应的实际值代替,其在下面相对于图3十分明显。

    这样,该处理器不用寄存器或堆栈工作。它代之以用参数操作。参数是对值的临时捆绑,这些值临时存储到处理器中的参数存储器4中。参数根据需要分配并在完成功能应用后或在遇见显式指令时释放。根据环境(context)访问参数。参数的最大数目不由该结构限制,但是依赖于专门的处理器实现。这对于处理功能参量和局部变量/捆绑给出良好和有效的支持。

    于是参数在根据本发明的处理器的指令集结构中占据中心部分,这在下面说明。为函数的参量和在函数体内进行的局部捆绑以及为在函数调用时参量的传输而使用参数。

    设计参数存储器4提供快速指令执行和存储当前捆绑,亦即函数参数和局部变量。这意味着参数传输,局部捆绑和函数结果不通过主数据存储器5而代之以通过快速参数存储器4。

    在这一参数存储器阶段之内,一定的解码的指令通过在参数存储器4中存储实际值将建立新的捆绑和对这些值建立参数捆绑。从解码的指令或从寄存器提供存储的值,或从数据存储器5取出。在每一时钟周期期间可以进行存储和代替其中之一的几个操作。

    在参数存储器访问阶段,在指令中的参数捆绑用实际值代替。参数存储器4可以优选支持每时钟周期至少两个这种置换。在参数存储器阶段后,一个指令中的参数捆绑用实际值代替,这里实际值从参数存储器取出。

    数据存储器处理器6保持数据存储器5中的地址的记录,因为在功能语言中,诸如Erlang,程序不像在强制语言中那样用地址和指针工作。这种特征隐藏在所谓的运行时间过程中,它意味着需要数据存储器处理器6来决定和保持为特别寄存器的地址的记录,这些寄存器包含为在数据存储器5中存储的进程的数据。为存储的数据的地址回送给执行单元7。

    参数存储器4给执行指令的执行单元7供应代替的指令数据和代码字。参数存储器4还包括其内至少存储有一个进程的当前标识符id的寄存器,其当说明图3时进一步讨论。

    参数存储器4事实上是在数据存储器5中读寄存器的单元,而连接到参数存储器4的执行单元7是写数据到寄存器的单元。连接数据存储器处理器6与参数存储器4和执行单元7两者协同操作。

    类似语言Erlang,处理器结构基于进程。参数存储器4中的第一专用寄存器保存当前进程id,cpr。第二专用寄存器保存当前环境标识,env。环境意味着一系列指令,其内一定的参数引用有效,例如值捆绑的范围。

    图3表示参数存储器4的优选的结构。它包括一个进程存储平面10,其内存储当前进程,process_info(进程信息),一个环境存储平面,其内存储为该进程的环境的信息,environment_info(环境信息)。

    虽然在指令集中不直接可见,但是使用进程保持跟踪在处理器上执行的高级语言中的进程(或任务或线程)。在一个Erlang进程和在处理器中的一个进程之间有一个对应。一个生产(spawn)指令建立一个新进程,启动它的环境和将其与它的进程描述符相关。另一个指令把一个进程推到进程队列上。另一个指令切断当前进程并接入进程队列中的第一进程以形成新的当前进程。

    在进程描述符中至少存储下面的信息:

        ●指向第一消息的指针。

        ●指向最后消息的指针。

        ●当前环境(当不执行时)。

        ●其它杂类信息,诸如一个表或连接的进程。

    另外,该结构基于环境的概念。环境(env)定义参数存储器4中的当前捆绑。使用环境来跟踪参数范围。在函数调用的开始建立一个新环境,env,并成为当前环境。在一个函数调用中的参数捆绑在新环境中被捆绑。在函数返回时,当前环境终止,而调用函数的环境恢复为当前环境,亦即用先前的环境置换当前环境。在被置换的环境中的所有参数捆绑在函数返回时被清除。

    如图4所示,一个参数仅在它的环境中有效。相似地,一个环境仅在它的进程内有效。

    这样,当提供一个进行函数调用的指令时,env向上步进1。当指示回跳的一个指令到来时,env向下步进1。

    参数存储器4还有一个存储器平面12,例如包括一个寄存器crp,为一个一定的参数值和在平面13中存储的类型保存进程标识。如图3所示,检索参数id、实际环境env,实际进程被传输到值存储器13。

    参数存储器4可以执行一些动作。这些动作的例子和它们相应的结果和需要的输入开列在下面。

    读:参数存储器4返回在值存储平面13中存储的指定的参数的类型和值。在参数存储器4中给存储平面10、11和12提供参数id、实际环境和实际进程的信息。

    弹出:参数存储器4返回指定的参数的值+类型(存储在存储平面13内)。另外,它从参数存储器4中去除参数及其值。在参数存储器4中给存储平面10、11和12提供参数id、实际环境和实际进程的信息。

    设定:参数存储器4存储一个具有指定id的新参数(在类型和值存储平面13内)。在参数存储器4中给平面12、11和10提供参数id、实际环境、实际进程和参数值的信息。

    清理(garb):参数存储器从在存储器中的平面10-13中去除参数及其值。给参数存储器4提供参数id、实际环境和实际进程的信息。

    清理env(garb env):参数存储器从平面10-13中去除为指定的环境值的所有参数及其值,给参数存储器4提供环境和实际进程的信息。

    读操作例如可以以下面的方式工作。图3中3个最左面的存储平面10、11、12执行一个相关的检索。在这3个存储平面内的线输出命中(line yielding hits)为该线选择在图3中最右边的存储平面13中存储的值+类型数据。

    该功能类似为存储的功能,除了值+类型数据不是被读而是被存储。清理和弹出操作丢弃寻址位置中的信息,使其释放供使用。

    这样,参数存储器4用于存储值和为这些值的类型信息。参数捆绑到值上,这里使用参数在函数之间传送值并用于临时存储。参数存储器4可以在计算前用存储的实际值置换在取出的指令中的参数引用。

    文件中的检索可以在某种关联进程中进行。然而,这种检索也可以以某些其它方式实现,例如由诸如进程和env使用已公开的(compromised)地址。还可以连接进程存储器到关联存储器和环境存储器11。然后把参数引用供给参数存储器进行检索。输出一个值。

    参数存储器4还可以管理为参数的环境信息,这里环境决定哪些是存储的参数,哪些是当前有效的参数。

    参数存储器4还可以管理为参数和环境的信息,这里进程信息决定哪些是存储的环境,哪些是当前有效的环境,哪些是存储的参数,哪些是当前有效的参数。

    这意味着使用参数代替寄存器或堆栈。这导致更有效地处理函数调用和局部捆绑。使用依赖环境(context)的机构寻址参数。这使得说明的指令集结构独立于在一个特别的处理器实现中的参数存储器的数量。

    处理器至少管理一个进程队列。可以例如为不同的优先级管理几个队列。

    因为参数存储器4具有有限数目的参数槽,因此它也许不足以为一个大程序同时保存所有参数。

    如果参数存储器4开始达到它的容量极限,则参数开始存储在数据存储器5中,这样供给参数存储器4中的槽。这一动作称为参数的换出。相反的动作称为参数的换入,是从数据存储器5读先前存储的参数,并用当前进程、环境和参数id值恢复到参数存储器4中。

    参数的换入和换出均由处理器自动进行,不干扰指令执行。

    观察进程队列的顶部。如果在那里发现一个进程(PF),它当前不在参数存储器4中,则在参数存储器4中为一个进程(它不是当前进程)的参数开始被换出,在发现的进程(PF)的最上面的环境中的参数被换入到参数存储器。

    一定的机构决定哪一个进程应该使其参数换出。例如,最近不使用(LRU)可以是用以决定哪一个进程被换出的策略。

    如果为当前进程在参数存储器中的环境的数目开始达到最大极限,则开始一个动作,把最低环境的参数换出到数据存储器。相似地,如果在参数存储器中的环境数目开始达到最低极限,则开始一个动作,把存储在数据存储器中的最高环境的参数(如果有的话)换入。

    参数换入和换出机构保证最可能被使用的参数存储在参数存储器4中。

    至于存储器管理,数据存储器中未用的存储器槽组织为一个可用存储器寄存器的表。数据存储器处理器6中一个确定的寄存器(空闲的)指向该表的第一元素。在请求存储一个元素时,该元素存储在由提到的专用寄存器(空闲的)指示的存储器槽中。然后更新寄存器(空闲的)使指向现在实际第一可用存储器位置,下面称为存储器槽,其先前是表中的第二个。在释放一个使用的存储器槽时该槽放在可用存储器槽的表的开始。

    如上所述,Erlang通过使用元组和表和简单类型处理数据。这些数据由捆绑引用。当一个数据对象不由一个捆绑引用时,则它不再需要,而可以丢弃。然后它的存储器槽可以为其它数据对象使用。这样,没有引用指向的存储器槽被认为可自由使用。这意味着自动的无用信息收集可视为正在进行。保持注意这样的存储器槽,它们在请求时释放。

    这样,存储器管理在这一结构中得到相当好的支持,并按照引用计数的原理执行。这意味着一些子指令为数据对象分别控制增量的引用和减量的引用。当执行这样的子指令时,一个数据对象的引用部分以为存储器管理的单位自动增加或减少。如果发生零引用并且被检测到,则它的存储器槽被释放而可作为由其它数据对象使用的空闲存储器槽使用。

    如上所述,参数存储器4的结构是根据进程的,常常需要从一个进程切换到另一个进程。于是需要进行下面的操作。

    对于一个环境开关,当前环境标识存储在一个由进程寄存器(cpr)指出的进程(或任务)描述符中。其他寄存器可以存储在参数存储器中,如果需要的话。当该进程被切换回来时,然后可以把寄存器值从参数存储器恢复。这样,为实现一个环境开关所需要的对数据存储器5的唯一访问是存储和恢复该环境。

    为制造一个开关:

        ●捆绑在当前工作集中的寄存器的数据值到参数并把它

    们存储到参数存储器4中。当前环境的值存储在当前进程的进

    程说明符中。然后env用作为指向参数存储器4中在恢复时读

    应该开始的地方的一个关键字。

        ●读env和把新进程的新“工作集”恢复到参数存储器

    4中,该新进程是从数据存储器5中包括为该新进程的环境的

    进程说明符要切换到的进程。

        ●在实际切换的进程被切换出去前恢复程序计数器1到

    下一值。

    按照这一方案,对主存储器5的耗费时间的存储器访问可以最少,实现了快速环境切换。

    该指令集结构可以例如用于执行功能语言,支持具有为下述功能的专用指令的语言:函数调用、函数返回、在函数之间传输参量、和进程管理。有为建立、读取、写和操作在Erlang中发生的数据对象亦即表和元组和简单类型的特别指令。

    指令格式的例子

    指令::=子指令,子指令,子指令

    子指令::=标记,值

    这里标记(tag)说明值应该如何解释。例如par,5意味着指定参数数目5。它表示该指令的逻辑组织。在一个实际的处理器实现中,所有标记可以例如分组在一起。在第一子指令中的标记通常说明整个指令应该如何解释。例如如果在第一子指令中的标记说明一个二进制算术运算,则另外两个子指令说明操作数,和第一子指令的值说明该算术运算的类型。

    可以有这一规则的例外。在第一存储器槽中的某些指令确实只使用头两个子指令,在这种场合,可以使用第三槽为一个单子指令,亦即可以有一组独立的子指令,它们只在一个指令的第三槽中操作。某些独立的子指令也可以放在第二槽中。

    标记/值组合的例子是:

    标记,值::=fun,fun_number  (调用函数fun_number)

                | par,par_number  (使用指定的参数)

    |pop,register_number(从当前函数返回,在指定寄存器中交付结果)

    |reg,register_number          (使用register_number中的值)

    |alu,alu_operation    (执行由alu_operation给出的运算)

    |gar,par_number       (释放由这一参数使用的空间)

    |等

    例子

    可以在处理器中使用下面的寄存器:

    acc:存储alu运算的结果,

    cpr:存储当前进程id,

    env:存储当前环境,

    id:存储最后存储的元素的存储器地址,

    res:当从一个函数返回时保存一个结果值,

           d0:保存一个数据元素。它的部分可以由d01,d02,d03,

        d04寻址,这里d01保存元素类型值,d02保存一个数字值,

        d03和d04保存包含值类型的指针/整数,

    free:存储第一空闲存储器槽。

    处理器可以使用下述不可寻址寄存器:

    env-old:存储先前的环境

    cnt:    存储最后分配的参数号码。

    如上所述,参数用于函数调用时的参量传递和用于局部捆绑。当执行一个函数调用时,参量列在调用函数的第二和第三子指令中。参量得到和它们出现一样的连续号码,从在一个新函数体中的第一子指令开始。

    局部捆绑通过下面提到的par或pad指令实现,例如

                (par:5,reg:acc,*.*)

    捆绑参数5到当前进程中的当前环境内的寄存器acc中的值。*表示任意元素。

    还有为操作对数据的引用的特别的指令,亦即用专用指令支持语言来增量或减量对数据对象的存储器引用的号码。

    对于ISA(指令集结构)的经验指出指令的相当精简以便实现一个特定的功能。这意味着相应较少数目的存储器访问。存储器访问要求很多功率。因此,它们的减少降低了系统的功耗。

    虽然相对示例实施例说明了本发明,但是应该理解,可以不离开本发明的范围进行修改。因此,本发明不应该认为限制在说明的实施例上,而仅由下面的权利要求定义,这些权利要求意在覆盖所述实施例所有的等价物。如上所述,参数存储器4基于处理器。因此,这一类型的设备甚至可以为使用进程(或任务或线程)处理其它类型语言而非功能语言例如C和C++的计算机提供。环境切换也例如为语言ADA提供,因此为环境切换说明的特征也可以对其它类型语言处理环境切换有效。上述类型的数据管理例如也用现代语言Java实现,因此对这种语言也可用。

一种处理器结构.pdf_第1页
第1页 / 共21页
一种处理器结构.pdf_第2页
第2页 / 共21页
一种处理器结构.pdf_第3页
第3页 / 共21页
点击查看更多>>
资源描述

《一种处理器结构.pdf》由会员分享,可在线阅读,更多相关《一种处理器结构.pdf(21页珍藏版)》请在专利查询网上搜索。

一种处理器结构适于以顺序指令流操作和通过使用表或元组或简单类型处理数据的程序语言。它包括一个程序保持设备(1),一个指令保持设备(2,3),一个用于存储数据对象的数据存储器(5),和执行设备(7)。提供设备(4,5,6)来处理对由捆绑引用的数据对象的引用,和包括设备(6)来根据来自指令保持设备(2,3)的一个实际指令增量对一个数据对象的引用计数和减量对一个数据对象的引用计数。 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1