用于将数据和指令载入计算机的方法及装置的制作方法

文档序号:6462594阅读:195来源:国知局
专利名称:用于将数据和指令载入计算机的方法及装置的制作方法
技术领域
本发明涉及计算机和计算机处理器领域。
背景技术
在计算领域,处理速度是非常期望的品质,并且对创造更快速的计算机 和处理器的探索正在进行中。然而,行业中普遍认为,至少对于利用目前已 知的技术来提高微处理器的速度而言,微处理器速度的极限正在迅速地被接 近。因此,通过在处理器之间分担计算机任务来提高整体计算机速度的多处 理器的使用,越来越受到关注。
多处理器的使用所关心的是创建在处理器之间进行通信的需要。实际 上,在处理器之间可能有大量的通信,因而大量的时间花费在处理器之间的 指令和数据传输上。在这种通信量相当大的情况下,为了完成该通信量而必
须执行的每条额外指令都会在过程中放置一增量延迟,通过累加,过程中的 延迟可能相当大。用于从一个计算机向另 一个计算机传达指令或数据的传统 方法包括首先将数据或指令存储在接收计算机中,然后对该数据或指令进行 调用以执行(在为指令的情况下),或对其进行操作(在为数据的情况下)。
减少在计算机之间以数据或指令形式传送、接收和然后使用信息所需的 步骤的数目,是有帮助的。然而,就本发明人所知,没有现有技术的系统以 有效的方式来简化上述过程。
而且,在现有技术中所公知的是,需要时常"获得计算机的注意力"。 也就是说,有时尽管计算机可能正在忙于一项任务,但是可能发生另一项时 间敏感的任务,使该计算机必须暂时从第一项任务转向该任务。这样的例子 包括但不限于使用用户输入装置来向计算机提供输入的情况。在这种情况
下,计算机可能需要根据该输入暂时确认该输入和/或作出反应。然后,计
算机基于该输入,要么继续该输入之前进行的工作,要么改变其工作。尽管
在这里使用外部输入作为例子,但是当ALU的注意力在计算机的内部方面
之间存在潜在的冲突时,同样的情况也会发生。
当从I/0端口接收数据,或改变1/0端口的状态时,现有技术中有两种 方法。 一种是"轮询"端口,该方法包括以固定间隔读耳又端口的状态,以判 断是否接收到任何数据,或是否发生了状态变化。然而,轮询端口消耗相当 多的时间和资源,这些时间和资源通常可以更好地用作其它事情。 一种更好 的替代方法通常是使用"中断"。当使用中断时,处理器可以着手进行分配 给它的任务,然后当如接收到字节或状态变化的事实所指示的那样,1/0端 口/装置需要注意时,1/0端口/装置向处理器发送中断请求(IRQ)。 一旦处 理器接收到中断请求,它就结束它的当前指令,将少许内容置入堆栈,并执 行适当的中断服务例程(ISR),该中断服务例程可以将字节从端口上移走, 并将该字节置入緩沖器。 一旦ISR结束,处理器就返回它停止的地方。使用 该方法,处理器不必要浪费时间来查看1/0装置是否需要被注意,该装置会 仅在其需要被注意时才为中断提供服务。然而,由于存在与使用中断相关联 的大量开销,所以在很多情况下,使用中断本身是远远谈不上被期望的。例 如,每当发生中断时,计算机都不得不将与其先前尝试完成的任务相关的特 定数据暂时贮存起来,然后载入关于中断的数据,而后一旦中断处理完毕, 就要将在前的任务所需的数据重新载入。中断干扰了时间敏感的处理。从本 质上来说,中断使时序不可预测。显然,期望的是减少或消除所有的这种时 间和资料消耗开销。然而,现有技术中没有开发出緩和中断需要的方法。
传统的并行计算通常将若干计算机连接到串行通讯端口的数据路径或 总线上。在这种布置中,各独立的计算机都被分配以地址。举例来说,在贝 奥伍尔夫群集(beowolf cluster)中,独立的PC通过TCP/IP协议连"t妄到以 太网中,并被给定一地址或URL。当向一独立的计算机输送数据或指令时, 这些数据或指令被放置在写有该计算机地址的包中。有关的问题是在这种计算机中如何有效地向独立的计算机传输数据和 指令。由于这种类型的计算机的架构不包括单独的可寻址计算机,所以这个 问题更加困难。

发明内容
发明的一个方面提供一种计算机阵列,该计算机阵列中的各计算机通过 计算机的数据总线链接端口链接到相邻的邻居,该阵列具有向目的地提供信 息的工具,该目的地是该阵列中任意期望的一个计算机。该信息可以是数据 和/或指令,所述指令例如由期望的一个计算机来实现的程序。在实施例中, 向期望的一个计算机提供信息的工具是程序,在下文中称作爬虫,该爬虫携 带信息,还预定义了从起点(即可能位于阵列边缘的预定计算机)穿过阵列 到目的地的路线,该目的地是期望的一个计算机,并且沿着预定义的路线将 自身从一个计算机复制到另一计算机。在期望的目的地计算机处,信息被提 供给这个计算机。如果该信息是指令,则在这个计算机中实施该指令。
爬虫也可以定义从目的地计算机到另一计算机的路线,另一计算机例如 是原来的起点或可以是不同的计算机。在一个实施例中,爬虫将指令的结果 运送到所述另一计算机。
在一个实施例中,爬虫仅向计算机送递程序和/或数据,然后间断。
在实施例中,在爬虫程序的有效载荷中,路线被静态地定义,换句话说, 有效载荷预定了路线(不像TCP/IP—样,路线是动态定义的)。
在实施例中,在爬虫沿路线行进期间,路线信息在存储器之间复制。如 果爬虫中的数据/指令有效载荷包含关于其路线的信息,且该有效载荷并没 有被沿路线的计算机消耗,那么目的地计算机可以接收关于所采取的路线及 其原点的信息。
本发明的一个实施例包括具有自身的存储器的计算机,使得该计算机能
够独立地执行计算功能。在发明的一个实施例中,多个计算机以阵列方式进
行排列。为了协同地完成任务,这些计算机必须将数据和/或指令从一个计
算机传递到另一个计算机。由于所有的计算机同时工作通常会提供比大多数 任务所需要的计算功率更多的计算功率,并且由于无论使用哪种算法或方法
在任意给定的时间,至少一些计算机,而且可能很多计算机不会积极地参与 到任务的完成中。所以,期望找到一种使未充分利用的计算机可用于通过"借 出"计算资源或存储器或两者来援助它们较忙的邻居的方法。为了使这种关 系有效且有用,还进一步期望邻居计算机之间的通信和交互尽可能地快速且
有效。因此,本发明实施例提供一种由计算机执行从另一计算机直接提供的 指令和/或对从另一计算机直接提供的数据进行运作,而不是在这种运作之
前必须接收并贮存数据和/或指令的工具和方法。应该注意发明的该实施例 对于充当媒介的指令来说也将有用,该媒介使计算机将指令或数据从一个其 它计算机"传递到"另一个计算机。
在实施例中,为了防止不必要的功耗和不必要的热量的产生,当计算机 尝试与一个以上邻居进行通信时,该计算机将处于基本不消耗功率的休眠模 式,直到邻居或一个邻居为了完成通信而运作为止。然而,这不是本发明的 必要方面。此外,为了完成期望的功率节省并减少热量的产生,期望在发起 的计算机在等候通信完成的时候间断,或至少显著地减少自己的功耗。可以 想象,这可以由多种手段中的任意一种手段来实现。例如,如果该计算机是 由内部时钟或外部时钟定时的,则该时钟可以在该时间|更期间-故减'艮或停 止。
在此所描述的本发明 一 个实施例中,无论指令和数据的源是计算机的内 部存储器,还是这类指令和数据是由诸如另一计算机、外部通信端口等的另 一个源接收的,这类指令和数据都会得到基本相同的对待。这是非常有意义 的,原因是诸如贮存数据或指令、之后从内部存储器中重新调用它们之类的 "额外"操作是不必要的,因此减少了所需的指令数目,并提高了所涉及计 算机的运行速度。
在实施例中,极小的指令组通常可以同时传达到另一个计算机,从而使需要重复迭代的相对简单的操作可以快速且容易地完成。这将极大地加速了 计算机之间的通信过程。
在实施例中,由于存在可用于执行各种任务的多个计算机,且由于在等 候输入时 一个以上计算机可置于基本不使用功率的休眠状态,因此可以给这 类计算机分配等候输入的任务,从而减少或消除了 "中断"可能正在完成其 它任务的计算机的需要。
在实施例中,数据和指令可以有效地载入独立的计算机并执行和/或在 这类计算机之间传输。即使在各计算机仅直接连接到有限数目的邻居时,所 述传输可以在无到达公共总线的资源的情况下完成。
本发明实施例提供一种允许计算机在从外部源接收指令时,并不首先贮 存所述指令的情况下就执行所述指令的方法和工具,以及使用该方法和工具 来促进计算机之间的通信并促进计算机使用另 一 计算机的可用资源的能力 的相关方法。该实施例在位于单 一微芯片上的多计算机组合中提供直接执行 方法和装置,其中运行效率很重要,不仅是由于期望提高运行速度,还由于 作为更高效率的重要方面的功率节省和热量减少。
鉴于这里描述的及在附图的若干图中所示出的对实施本发明的方式和 本发明的工业实用性的描述,本发明实施例的这些及其它目的和优势将对本 领域技术人员来说变得清楚。所列出的目的和优势并不是对本发明实施例所 有可能优势的穷举。而且,即使在应用中可能不具备或不需要一个以上所计 划的目的和/或优势的情况下,也可以实施该发明。
进一 步,本领域技术人员将认识到本发明的各种实施例可以达到所描述 的目的和/优势中的一个以上,但不必须是全部目的和/优势。相应地,这里 所描述的目的和/或优势并不是本发明的必需元素,且不应该被解释为对本 发明的限制。


图1为根据本发明的计算机阵列的概略图2为示出图1的计算机的子集的详细图及图1的互连数据总线的更详
细牙见图3为描绘图l和图2的计算机中一个计算机的一般布局的框图4为根据本创造性申请的指令字的概略图5为图3的时间片定序器42的示意图6为描绘根据本发明的微循环的例子的流程图7为根据本创造性申请的爬虫(crawler)指令的概略图8为描绘图7创造性方法的例子的流程图。
具体实34方式
在以下的说明书参见附图描述本发明的实施例,在附图中相同的附图标 记表示相同或相似的元件。虽然根据用于实现目的的模式对本发明的实施例 进行了描述,但是本领域技术人员将认知到鉴于这些启示并未脱离本发明的 精神或范围,因此可以实现变体。
这里所描述的和/或在附图中所示的本发明的实施例及其变体4叉以示例 方式给出,并不限定本发明的范围。除非以其它方式具体说明,本发明的独 立方面和部件可以被省略或修改,或可以具有因此被替代的等价物,或可以 具有还未知的替代品,例如可能在未来开发的,或例如可能在未来被发现是 可接受的替代品的。由于潜在应用的范围很大,且由于本发明意在适应很多 这样的变体,因此只要保持在所要求的发明的精神和范围之内,本发明还可 以针对各种各样的应用而#皮修改。
图1中的概略图中描绘独立计算机的阵列,该计算机阵列在此由一般附
图标记IO来指代。计算机阵列IO具有多个(在示出的例子中是24个)计
算机12 (在阵列的例子中有时也称作"核"或"节点")。在示出的例子
中,所有的计算机12都位于单个电路小片14上。根据本实施例,各计算机
12通常是独立运行的计算机,如在下文更详细地讨论的。计算机12由多条
(其数量将在下文更详细地讨论)互连数据总线16相互连接。在该例子中,
数据总线16是双向异步高速并行数据总线,尽管出于该目的而采用其它的 互连手段也在这里的发明范围之内。在阵列IO的本实施例中,不仅计算机
12之间的数据通信是异步的,而且独立的计算机12内部也以异步模式运行。 发明人已经发现这种模式提供了重要的优势。例如,由于没有必要在整个计 算机阵列IO中分发时钟信号,因此可以节省大量的功率。此外,没有必要 分发时钟信号还消除了可能限制阵列10的大小或产生其它困难的很多时序 问题。而且,由于各计算机中没有时钟在运行,因此各计算机在不执行指令 时基本不使用功率,所以各独立计算机异步运行的事实是节省了大量的功 率。
本领域技术人员将认识到,电路小片14上还存在附加的部件,为了清 楚起见,图1的视图中省略了这些部件。这些附加的部件包括微处理器芯片 的电源总线、外部连接焊盘及其它这些普通方面。
计算机12e为不处于阵列10边界的一个计算机12的例子。也就是说, 计算机12e具有四个互相垂直的相邻计算机12a, 12x, 12c和12d。在下 文中将通过举例的方式,使用计算机12a-12e的这个分组,来更详细讨论阵 列10的计算机12间的通信。如图1的视图所见,诸如计算机12e的内部计 算机12具有可以通过总线16与其通信的四个其他计算机12。在以下讨论 中,所讨论的原理将应用于所有计算机12,除了只能够与三个其他计算机 12直接通信的位于阵列10边界的计算机12以及只能够与两个其他计算机 12直接通信的拐角计算机12之外。
图2为图1中的一部分的更详细视图,只示出一些计算机12,具体来 说是包括计算机12a-12e。图2的视图还揭示每条数据总线16都具有读线 18、写线20和多条(在本例子中为18)数据线22。数据线22能够并行同 时传输一个18位指令字的所有位。应当注意到,在本发明的一个实施例中, 一些计算机12是相邻计算机的镜像。然而,计算机12是全部具有同一方向, 还是作为相邻计算机的镜像在此并不是目前所描述的实施例的方面。因此, 为了更好地描述该实施例,在此将不再进一步讨论该潜在的复杂情况。
根据本发明实施例,诸如计算机12e的计算机12可以将其一条、两条、 三条或全部四条读线18设置为高,从而准备从相应的一个、两个、三个或 全部四个相邻计算机12中接收数据。相似地,计算机12也可以将其一条、 两条、三条或全部四条写线设置为高。
当一个相邻计算机12a、 12x、 12c或12d将其自身与计算机12e之间的 写线20设置为高时,如果计算机12e已经将对应读线18设置为高,那么字 在相关联的数据线22上从那个计算机12a、 12x、 12c或12d传输至计算机 12e。然后,发送计算机12将释放写线20,并且接收计算机(在该例子中为 12e)将写线20和读线18拉低。后一个动作是向发送计算机12确认已经接 收到数据。注意,上述说明并不必然地意在按次序指示事件的顺序。在实际 应用中,接收计算机可以在发送计算机12释放(停止拉高)写线20之前, 试着将写线20设置得略低。在这种情况下,发送计算机12—释放写线20, 写线20就会被接收计算机12e拉低。
在本例子中,只有编程错误才会使位于一条总线16的对立端的两个计 算机12试着将它们之间的读线18设置为高。这对于待读的两个计算机并不 都是错误的。实际上这是默认条件。最终, 一个计算机将退出读取,而写。 类似地,如以上所讨论的,当前并没有预计到期望有单个计算机12将其四 条写线20中的一条以上写线设置为高。然而,目前预计到,将存在以下时 机期望将读线18的不同组合设置为高,从而使一个计算机12可以处于等 待来自选中计算机12中的首个计算机的数据来将该首个计算机的对应写线 20设置为高的等待状态。
在以上讨论的例子中,计算机12e被描述为在相邻的计算机(从计算机 12a、 12x、 12c或12d中的一个以上计算机所选择的)将该相邻计算机的写 线20设置为高之前,计算机12e将该计算机12e的读线18中的一条以上读 线设置为高。然而,该过程当然也可以以相反的次序发生。例如,如果计算 机12e正尝试向计算机12a写,那么计算机12e会将计算机12e和计算机12a 之间的写线20设置为高。如果计算机12e和计算机12a之间的读线18还没有被计算机12a设置为高,则计算机12e会简单地等待,直到计算机12a将 该读线20设置为高为止。然后,如上所讨论的,当写线18与读线20的对 应对均为高时,等待在数据线22上进行传输的数据被传输。之后,发送计 算机12e—释放写线18,接收计算机12(在该例子中是计算机12a)就会将 两个计算机(在该例子中是12e与12a)之间的读线18和写线20都设置为 低。
每当诸如计算机12e的计算机12预计要写,将其一条写线20设置为高 时,该计算机将简单等待,基本不消耗功率,直到如上所述有适当的相邻计 算机12 "请求"该数据为止,除非作为待发送数据的目的地的计算机12已 经将它的读线18设置为高,在这种情况下数据被立即传送。类似地,每当 计算机12预计要读取,将其一条以上读线18设置为高时,它将简单等待, 基本不消耗功率,直到连接到所选择的计算机12的写线20变高以在两个计 算机12之间传输指令字为止。
如以上所讨论的,可能存在几种潜在的手段和/或方法来使计算机12如 所述地工作。但是,在本例子中,计算机12之所以运转得这样简单是因为 它们通常都是内部异步运行(除了以所述异步方式相互之间传输数据)。也 就是说,通常是按顺序完成指令。当发生写指令或读指令时,直到该指令完 成(或者,也许作为替代地,直到该指令因为"复位"或其他原因被异常中 断时)才会有进一步的动作。现有技术中,没有规则的时钟脉冲。更具体地 说,只有当正在被执行的指令既不是读类型指令也不是写类型指令时(假如 读或写类型指令经常需要另一个实体完成)或当该读或写类型操作事实上已 经完成时,才生成脉沖以完成下一个指令。
图3为描绘图1和图2的一个计算机12例子的总体布局的框图。如图 3的视图所见,各计算机12为具有其自己的RAM 24和ROM 26的通用整 装计算机。如先前提到的,计算机12有时也称为独立的"节点"。在本例 子中,假如计算机12被组合在单芯片上。
计算机12的其他基本部件为返回堆栈28(包括下文所讨论的R寄存器
29)、指令区域30、算术逻辑单元("ALU"或"处理器")32、数据堆 栈34和用于对指令进行解码的解码逻辑段36。本领域技术人员通常应该很 熟悉对诸如本例子中的计算机12的基于堆栈的计算机的操作。计算机12为 具有数据堆栈34和分离的返回堆栈28的双堆栈计算机。
在本发明的这个实施例中,计算机12具有与相邻计算机12进行通信的 四个通信端口 38。通信端口 38为三态驱动器,具有关闭状态、接收状态(用 于驱动信号使其进入计算机12)和发送状态(用于驱动信号使其离开计算 机12)。当然,如果特定计算机12不在诸如计算机12e的例子的阵列(图 l)内部,那么至少出于以上所述的意图, 一个以上通信端口 38不会被那个 特定计算机使用。然而,那些与电路小片14边缘邻接的通信端口 38可以有 额外的电路,该电路可设计在这类计算机12中,或设计在计算机12的外部 但与计算机12相关联,以使这类通信端口 38充当外部1/0端口 39(图1 )。 这类外部I/O端口 39的例子包括但不限于USB (通用串行总线)端口、 RS232串行总线端口、并行通信端口、模数和/或数模转换端口以及许多其 它可能的变体。无论为此目的采用了何种类型的额外的或经修改的电路,根 据本发明目前所描述的实施例,对"外部"1/0端口 39关于处理从中接收的 指令和/或数据的操作方法与在此涉及"内部"通信端口 38的描述类似。在 图l中,描绘了具有相关联的接口电路80 (以框图的形式示出)的"边缘" 计算机12f,该相关联的接口电路80用于通过外部I/O端口 39与外部装置 82通信。
在目前所描述的实施例中,指令区域30包括若干寄存器40,在本例子 中,寄存器40包括A寄存器40a、 B寄存器40b和P寄存器40c。在本例子 中,A寄存器40a为全18位寄存器,而B寄存器40b和P寄存器40c为9
位寄存器。
尽管该发明并不限于该例子,但是本计算机12被实施为执行本机Forth 语言指令。如熟悉Forth计算机语言的人将认知的,复杂Forth指令,即通 常所说的Forth "字"是根据设计在计算机中的本机处理器指令所构建的。
在其它语言中,这可能为通常所说的"库"。如下文将更详细描述的,计算
机12每次从RAM24、 ROM26或直接从一条数据总线16 (图2 )读取十八 位。然而,由于Forth中的大多数指令(即通常所说的无操作数指令)直接 从堆栈28和34中得到它们的操作数,因此它们的长度通常仅为5位,使得 在单个十八位指令字中可以包含多达四条指令,条件是该组指令的最后一条 指令选自仅需三位的指令的有界集。(在所描述的实施例中,假设最末位置 中的指令的两个最低有效位为"00"。)在图3的视图中以框图的形式描绘 的还有时间片定序器42。
在本发明的该实施例中,数字堆栈34是针对由ALU 32操控的参数的 后进先出型堆栈,返回堆栈28是针对由CALL和RETURN指令使用的嵌套 返回地址的后进先出型堆栈。如此后更详细描述的,返回堆栈28还可以由 PUSH (压入)、POP (弹出)和NEXT (下一条)指令使用。像多数现有 技术的计算机一样,数据堆栈34和返回堆栈28并不是堆栈指针可访问的存 储器中的阵列。更确切地说,堆栈34和28是寄存器阵列。数据堆栈34中 顶部的两个寄存器是T寄存器44和S寄存器46。数据堆栈34的剩余部分 具有环形寄存器阵列34a,该环形寄存器阵列具有八个额外的硬件寄存器, 在该例子中这些硬件寄存器编号为S2至S9。在任意时刻,环形寄存器阵列 34a中八个寄存器中的一个寄存器被选择为位于S寄存器46下面的寄存器。 移位寄存器用于选择堆栈寄存器作为S下面的寄存器,移位寄存器中的值不 能通过软件来读或写。类似地,返回堆栈28的顶部位置为专用R寄存器29, 而返回堆栈28的剩余部分具有环形寄存器阵列28a,该环形寄存器阵列具有 八个额外的硬件寄存器(在图中没有具体示出),在该例子中这些硬件寄存 器编号为R,至Rn。
在本发明的该实施例中,没有对堆栈溢出或下溢状态的硬件检测。通常, 现有技术的处理器使用堆栈指针及存储器管理等,从而在堆栈指针超出分配 给该堆栈的存储器范围时,可以标记为错误状态。这是因为,假如堆栈位于 存储器中,那么溢出或下溢会将盖写堆栈项,或将堆栈项用作某些并不意在
作为堆栈一部分的内容。然而,由于本实施例在堆栈28和34的底部有环形 阵列28a和34a,因此堆栈28和34不会从堆栈区域中溢出或下溢。相反, 环形阵列28a和34a只环绕寄存器的环形阵列。因为堆栈28和34具有有限 的深度,因此将任意内容压入堆栈28或34的顶部意味着底部的一些内容被 盖写。向数据堆栈34压入多于十项或向返回堆栈28压入多于十三项必须在 知道这样做会导致堆栈28或34底部的项被盖写的情况下才能进行。软件的 责任在于留意堆栈28和34中项的数目,并且不要试着将比相应堆栈28和 34所能容纳的项更多的项放入堆栈28和34。硬件不会一全测堆栈底部的项的 盖写,也不会将堆栈底部的项的盖写标记为错误。然而,应该注意软件可以 以几种方式来利用堆栈28和34底部的环形阵列28a和34a的优点。^U乍为 一个例子,软件简单地假设堆栈28或34在任意时刻为"空"。并不需要从 堆栈中清除旧的项,因为旧的项会被压向底部,在底部,当堆栈满时,这些 旧的项会丟失。所以,对于假设堆栈为空的程序,不存在需要初始化的内容。
除这里先前所讨论的寄存器外,指令区域30还具有用于贮存目前正在 使用的指令字48的18位指令寄存器30,以及针对在目前正在执行的特定 指令中的指令的额外5位操作码总线30b。
图4为指令字48的概略图。(应该注意指令字48实际上可以包含指令、 数据,或包含指令和数据的一些组合。)指令字48由十八位50组成。作为 二进制计算机,各位50将为"1"或"0"。如这里先前所讨论的,十八位 宽的指令字48可以包含位于四个时间片54中的多达四条指令52,该四个 时间片54被称为时间片零54a、时间片一 54b 、时间片二 54c和时间片三54d。 在该发明的本实施例中,十八位指令字48总是作为整体被读取。因此,由 于指令字48中总是存在具有多达四条指令的潜能,因此在计算机12的指令 集中包括no-op (无操作)指令以提供给没有必要或甚至是不期望使用所有 可用的时间片54的情况。应该注意,根据该发明的一个特定实施例,在间 隔的时间片(具体来说,时间片一54b和时间片三54c)中位50的极性(与 有效低相比较是有效高)是相反的。然而,这不是目前所描述的实施例的必
要方面,因此,为了更好地解释该实施例,在下面的讨论中也避免这种潜在 的复杂情况。
图5为图3的时间片定序器42的示意图。从图5的视图中可以看出, 时间片定序器42具有排列成环的多个(在该例子中是十四个)反相器56和 一个与非门58,使得信号在经过该十四个反相器56和与非门58时^皮反相 奇数次。当或门60的两个输入中的任一个输入变为高时,在时间片定序器 42中发起一信号。第一或门输入端62得自正在被执行的指令52的位i4 66 (图4)。如果i4位为高,则该特定指令52是ALU指令,且i4位66为"1"。 当i4位为"1"时,则第一或门输入端62为高,则时间片定序器42被触发, 以发起使下一条指令52被执行的脉沖。
当第一或门输入端62变高或第二或门输入端64变高(如将在下文中讨 论的)而触发时间片定序器42时,信号绕时间片定序器42移动两圈,每次 在时间片定序器输出端68产生输出。该信号第一次通过时间片定序器输出 端68时,时间片定序器输出端68的输出为低,而第二次时为高。来自时间 片定序器输出端68的相对宽的输出被提供给脉冲发生器70 (以框图的形式 示出),该脉冲发生器70产生窄时序脉冲作为输出。本领域技术人员应该 认识到窄时序脉冲是为准确发起计算机12的操作所期望的。
当正在被执行的特定指令52为读指令或写指令或任何其它指令时,其 中所述任何其它指令不期望正在被执行的指令52顺序地触发下一条指令52 的执行,贝'Ji4位66为"0"(低),并且因此第一或门输入端62也为低。 本领域技术人员将认识到,在诸如计算机12的器件中,事件的时序通常很 关^t,而且无一例外。本领域技术人员将认识到,在^r测时间片定序器42 后,来自或门60的输出必须保持为高,直到该信号循环通过与非门58以便 发起环的第二 "圈"之后为止。之后,在第二 "圈"期间,来自或门60的 输出会变低,以便阻止电路的多余继续振荡。
才艮据以上讨论可以认知到,假设下文会讨论的第二或门输入端66不为 高,则当i4位66为"0"时,时间片定序器42不会被触发。
如以上所讨论的,各指令52的i4位66是根据各指令52是否为读类型 指令或写类型指令来设置的,这与不需要输入或输出的指令相反。指令52 的剩余位50为该指令提供特定操作码的剩余部分。在为读类型指令或写类 型指令的情况下, 一个以上位可用于指示读取数据的该特定计算机12的地 址或将数据写入的该特定计算机12的地址。在该发明的本例子中,待写入 的数据总是来自T寄存器44 (数据堆栈34的顶部),然而数据可以被选择 性地读入T寄存器44或可以执行该数据的指令区域30。也就是说,在该发 明的该特定实施例中,由于可以以在此所述的方式来传达数据或指令,因此 尽管不是必需的,也可以从数据总线16直接执行指令。
一个以上位50将用来指示哪个端口 38,如果存在的话,将被设置为读 或写。当前的操作可以通过利用一个以上位指代诸如A寄存器40a、 B寄存 器40b等的寄存器40来可选地完成。在这种例子中,将具有与各端口 38(以 及计算机12可尝试与其通信的任何其它潜在实体,例如存储器(RAM 24 或ROM26)、外部通信端口等)相对应的位的数据预载入所指代的寄存器 40。例如,在特定寄存器40中,四位中的各位可以对应于上端口 38a、右端 口 38b、左端口 38c或下端口 38d中的各端口。在这些位的位置中的任意位 置存在"1"的情况下,通过对应的端口 38将通信设置为继续进行。如这里 先前所讨论的,在该发明的本实施例中,预计到读操作码可能在单一指令中 设置多于一个端口 38用于通信,尽管写操作码在单一指令中设置多于一个 端口 38用于通信也是可能的,但并没有被预计到。
紧接着的例子采用计算机12e尝试向计算机12c写的通信,尽管该例子 适用于在任意相邻计算机12之间的通信。当在写计算机12e中执行写指令 时,选中的写线20 (在该例子中,是计算机12e与12c之间的写线20)被 设置为高。如果对应的读线18已经为高,则通过所选中的通信端口 38马上 将数据从选中的位置发送出去。作为替换地,如果对应的读线18还不为高 时,则计算机12e简单地停止操作,直到对应的读线确实变高为止。这里先 前已经讨论过当存在读类型指令或写类型指令时停止计算机12a (或更准确
地说是禁止计算机12a的进一步操作)的机制。简言之,指令52的操作码 在位的位置i4 66处为'0,,因此或门60的第一或门输入端62为低,并且 时间片定序器42不会被触发而生成使能脉冲。
关于如何在读类型指令或写类型指令完成时恢复计算机12e的操作,机 制如下当计算机12e和12c之间的读线18和对应写线20均为高时,则两 条线18和20分别被将相应线保持为高的相应计算机12中的各计算机12释 放。(在该例子中,发送计算机12e将写线18保持为高,而接收计算机12c 会将读线20保持为高)。然后,接收计算机12c将两条线18和20拉低。 在实际应用中,接收计算机12c可以在发送计算机12e释放写线18之前尝 试将线18和20拉低。然而,由于线18和20被拉高,且只能微弱地保持(锁 存)为低,因此将线18或20拉低的任何尝试实际上都不会成功,直到线 18或20被将其保持为高的计算机12释放为止。
当数据总线16中的两条线18和20均被拉低时,则这是"确认"条件。 计算机12e和12c中的各计算机在接收该确认条件之后,将其自身的确认线 72设置为高。如从图5的视图中可以看出的,确认线72提供给第二或门输 入端64。由于到任意或门60输入端62或64的输入都会使或门60的输出 变高,所以这将以这里先前所述的方式来发起时间片定序器42的操作,使 得将执行指令字48的下一个时间片54中的指令52。确认线72保持为高, 直到下一条指令52^l解码为止,从而防止伪地址到达地址总线。
当正在被执行的指令52位于指令字48的时间片三位置时,无论如何, 计算机12将提取下一个等待的十八位指令字48,当然除非位i4 66为'0,, 或者除非时间片三中的指令是"next(下一条)"指令,这将在下文更详细 地讨论。
在实际应用中,本创造性机制包括用于"预提取"指令的方法和装置, 使得可以在指令字48中所有指令52的执行结束之前开始该提取。然而对于 目前所描述的实施例来说这也不是必要方面。
已经详细描述了计算机12e向计算机12c写的以上例子。如根据以上讨
论可以认知的,无论计算机12e首先尝试向计算才几12c写还是计算才几12c首 先尝试从计算机12e读取,其操作基本相同。操作在计算机12e和12c都就 绪之后才会完成,而且无论计算机12e还是计算机12c首先就绪,该首先就 绪的计算机简单地"进入睡眠",直到另一个计算机12e或12c完成传输为 止。实际上,考虑上述处理的另一种方式是,当写计算机12e和接收计算机 12c分别执行写指令和读指令时,它们均进入睡眠,但是当读线18和写线 20都为高时,最后进入事务处理的计算机几乎瞬时再度醒来,而发起事务 处理的首个计算机12会几乎无限期地保持睡眠,直到第二计算机i2做好完 成处理的准备为止。
本发明人相信使能器件之间的有效异步通信的关键特征是某种确认信 号或条件。在现有技术中,器件之间的大多数通信是时钟控制的,且发送器 件没有得知接收器件已准确接收数据的直接方式。诸如校验和操作的方法可 用来尝试保证数据的正确接收,但是发送器件没有已完成操作的直接指示。 如这里所述的本创造性方法提供必要的确认条件,该条件允许器件之间的异 步通信,或至少使器件之间的异步通信变得实用。此外,确认条件还可能使 一个以上器件"进入睡眠,,,直到确认条件发生才会醒来。当然,也可以通 过在计算机12之间发送的单独信号(通过互连的数据总线16或通过单独的 信号线)来在计算机12之间传达确认条件,而且这类确认条件会在本发明 该方面的范围之内。然而,根据这里描述的本发明的实施例,可以i^知到, 因为用于确认的方法不需要在实际上影响通信的任何额外的信号、时钟周 期、定时脉冲或除上述之外的任何这类资源,因此这里包括更多的经济节省。
由于在指令字48中可以包括四条指令52,且由于根据本实施例,整个 指令字48可以在计算机12之间一次传达,所以这给出在一次操作中传送极 小程序的理想机会。例如,多数小的"For/Next (由于/下一条)"循环可以 在单一指令字48中执行。图6为微循环100的概略图。微循环100不像其 它现有技术的循环,微循环100具有FOR指令102和NEXT指令104。由 于指令字48 (图4 )包含多达四条指令52,指令字48可以在单一指令字48中包括三条操作指令106。操作指令106实际上可以是程序员可能想包括在 微循环100中的任意可用指令。可以从一个计算机12传送到另一计算机12 的微循环100的典型例子可以是用于从第二计算机12的RAM 24读取或向 第二计算机12的RAM24写的一组指令,从而使第二计算机12可以"借用" 可用的RAM 24的容量。
FOR指令102将表示期望迭代次数的值压入返回堆栈28。也就是说, 位于数据堆栈34顶部的T寄存器44中的值被压入返回堆栈28的R寄存器 29。虽然FOR指令102经常位于指令字48的时间片三54d中,但事实上 FOR指令102可以位于任意时间片54中。如果FOR指令102不位于时间片 三54d,那么指令字48中的剩余指令52将在继续农t循环100之前^皮执行, 微循环100 —般是下一个被载入的指令字48。
根据目前所描述的本发明实施例,在图6的视图中所描绘的NEXT指令 104是特定类型的NEXT指令104。这是因为NEXT指令104位于时间片三 54d中(图4)。根据本发明实施例,假设紧接着"普通"NEXT指令(未 示出)的特定指令字40中的所有数据是地址(for/next (由于/下一条)循环 开始的地址)。无论NEXT指令104位于四个时间片54中的哪个时间片(明 显例外的情况是如果位于时间片三54d,则采用头两个数字,而不是被明 确地写出,如这里先前所讨论的),其操作码是一样的。然而,由于当NEXT 指令104位于时间片三54d时,可以没有地址数据紧接着NEXT指令104, 因此也可以假设时间片三54d中的NEXT指令104是MICRO-NEXT (微下 一条)指令104a。 UNEXT操作码不同于NEXT操作码。UNEXT操作码可 以位于任意时间片中。MICRO-NEXT指令104a将其所处的同一指令字48 的时间片零54a中的首条指令52的地址用作MICRO-NEXT指令104a的返 回地址。MICRO-NEXT指令104a还从R寄存器29中获得该值(该值最初 由FOR指令102压入R寄存器29),使该值递增1后,再返回R寄存器 29中。当R寄存器29中的该值达到预定值(例如0 )时,贝'J MICRO-NEXT 指令将载入下一个指令字48,并如这里先前所讨论的那样继续下去。然而,当MICRO-NEXT指令104a从R寄存器29中读取大于预定值的值时, MICRO-NEXT指令104a将在其自身指令字48的时间片零54a处重新开始 操作,并执行位于同一指令字48所包含的时间片零到时间片三的三条指令 52。也就是说,在本发明的该实施例中,MICRO-NEXT指令104a总是会执 行三条操作指令106。因为在某些情况下,可能并不期望使用所有三条潜在 的可用指令52,所以在需要的时候"no-op"指令可用来填充时间片54的一 个或两个时间片。
应该注意可以在单一计算机12中完整地使用微循环100。实际上,整 个可用机器语言指令集都可用作操作指令106,且微循环的应用和使用仅受 限于程序员的想象。然而,当执行单一指令字48中的整个微循环100的能 力与允许计算机12实际上直接从数据总线16向邻居计算机12发送指令字 48以在邻居计算机12中执行指令52的能力相结合时,这就为允许计算机 12使用其邻居的资源提供了强有力的工具。
如这里所描述的,包含在单一指令字48中的所有小微循环100可以在 计算机12之间进行传达,如这里所描述的,且该;微循环100可以/人4妻收计 算机12的通信端口 38被直接执行,正如指令字48中所包含的任意其它指 令集一样。尽管这类"微循环"100有很多用处,但典型的应用是当一个计 算机12想将一些数据贮存到邻居计算机12的存储器中的情况。举例来说, 该计算机12首先向那个邻居计算机发送指令,告知该邻居计算机将到来的 数据字贮存到特定的存储器地址中,然后递增该地址,然后重复给定次数的 迭代(待传送的数据字数目)。为了读回数据,第一计算机可以仅仅指令第 二计算机(这里用于贮存的计算机)使用类似的微循环将所贮存的数据写回 第一计算机。
通过使用与这里描述的直接执行方面相结合的微循环100结构,计算机 12可以在数据贮存需要超过建立在各独立计算机12中的相对较小的容量 时,使用否则正在休息的邻居计算机12来贮存超额的数据。尽管在数据贮 存方面描述了该例子,但是相同的技术同样可用于允许计算机12使其邻居
共享其计算资源一通过创建使其它计算机12进行某些操作、贮存结果并重 复给定次数的微循环100。如可以认知到的,可以使用本创造性微循环100 结构的方法的个数几乎是无限的。
如这里先前所提及的,在目前所描述的本发明实施例中,数据或指令都
可以以这里所描述的方式来传达,所以指令可以实际上从数据总线16直接 执行。也就是说,不需要将指令存储到RAM24中然后在执行之前重新调用 这些指令。相反,在该实施例中,在通信端口 38上接收的指令字48不会以 本质上不同于指令字48从RAM 24或ROM 26中被重新调用的情况被对待。 尽管在这里关于计算机12的所描述操作的在前讨论中揭示了没有不同,但 是对如何提取及使用指令字48的以下更具体的讨论会对理解实施例有所帮 助。
一种可用的机器语言指令是FETCH (提取)指令。FETCH指令使用A 寄存器40a中的地址来确定从哪里提取18位字。当然,程序必须已经在A 寄存器40a中提供放置了正确的地址。正如这里先前所讨论的,A寄存器40a 是18位寄存器,从而有足够范围的可用地址,使可以发生提取的任意潜在 源都可以被区分。也就是说,有分配给ROM的地址范围,有分配给RAM 的不同的地址范围,还有针对各端口 38和外部I/O端口 39的具体地址。 FETCH指令总是将其提取的18位放置在T寄存器44中。
相反,如这里先前所讨论的,可执行指令(与数据相反)暂时存储在指 令寄存器30a中。不存在将18位指令字48 "提取"到指令寄存器30a中的 具体命令。相反,当指令寄存器30a中没有更多可执行指令时,则计算机会 自动提取"下一条,,指令字48。"下一条"指令字所位于的地址由"程序 计数器"(P寄存器40c)来确定。如在从RAM 24或ROM 26提取一指令 字48序列的情况下的,P寄存器40c经常自动递增。然而,对该一般规则 有一些例外。举例来说,JUMP或CALL指令会使P寄存器40在JUMP或 CLAA指令之后,被载入以由目前所载入的指令字48的剩余部分中的数据 指代的地址,而不是被递增。然后,当P寄存器40c被载入以与一个以上端
口 38相对应的地址时,下一个指令字48将从端口 38被载入指令寄存器30a。 当刚从端口 38将指令字48取回至指令寄存器30a时,P寄存器40c也不会 递增。更确切地说,P寄存器40c会继续保持相同的端口地址,直到执行具 体的JUMP或CALL指令来改变P寄存器40c为止。也就是说, 一旦计算机 12被告知从端口 38查找其下一条指令,则计算机12将继续从相同的端口 38 (多个端口 38)查找指令,直到该计算机12被告知查找其它位置为止, 例如回到存储器(RAM 24或ROM 26 )来查找该计算机12的下一个指令字 48。跳转不会载入P寄存器。跳转将它们的地址放置在地址总线上,在指令 完成时该地址会被递增并被贮存到P中。
如以上所述提到的,当目前的指令字48中没有可执行指令时,计算机 12知道所提取的接下来十八位将被放置在指令寄存器30a中。默认地,在 JUMP或CALL指令之后(或也在某些在此不再具体讨论的其它指令之后) 目前的指令字48中没有可执行指令,因为通过定义,紧接着JUMP或CALL 指令的18位指令字的剩余部分专用于JUMP或CALL指令所指的地址。声 明上迷定义的很多方式中,另一种方式是声明上述过程是唯一的,所述很多 方式包括但不限于JUMP或CALL指令可以可选地到达端口 38,而不仅是 到达存储器地址等的事实。
应该记住,如这里先前所讨论的,计算机12可以从一个端口 38或从一 组端口 38中的任一个端口查找该计算机12的下一条指令。所以,提供了与 端口 38的各种组合相对应的地址。例如,当计算机被告知/人一组端口 38提 取指令时,则该计算机会从选中端口 38中的任意一个端口接受首个可用的 指令字48。如果尚没有邻居计算机12尝试向这些端口 38中的任意端口写, 那么正在被讨论的计算机12会"进入睡眠",如以上详细描述的,直到邻 居的确向选中的端口 38写为止。
在这类计算机中,期望将数据载入芯片10上的独立计算机12。通过将 数据寻址到独立的计算机不容易做到,因为在这样的阵列中不需要独立的地 址。类似地,期望将指令载入独立的计算机12,并执行所述指令。为实现
这些目的所设计的一种方法将在此称为爬虫。对该方法的审查会将本领域的 普通技术人员带领到 一些相似的方法上。示出的爬虫仅仅是如何实现该方法 的例子,而并不意在表示本发明局限于所述爬虫的具体特性。例如,在机器
Forth对象代码的上下文中描述了这些具体特征,但并不限于使用Forth语 言。在说明书中使用机器Forth,不仅仅是因为发明人已开发这种实现方式, 还因为机器Forth比标准对象代码清晰很多,并能清楚地启示其操作。该发 明可以以传统对象代码来操作。另外该例子被示为在特定计算机上执行指 令,必须理解的是该方法可以用于将任意数据或指令载入包括若干个计算机 的任意计算机。
图7以机器Forth描述用于在这种情况下将数据或指令载入期望计算机 12的方法。该方法被称为爬虫。爬虫201在节点(计算机12)之间移动。 在各节点中爬虫201被载入存储器,并且在其穿过计算机12时不会变小。 一种作为替换的爬虫可以直接穿过计算机12,而不需载入,并且长度可变。 创建爬虫的程序员可以通过指定方向来选择执行的计算机,或选择载入的计 算机。爬虫201在计算机12d上执行压力测试。
在如图7所示的爬虫201中,第一个字使数被解释为十进制的,并在地 址45处开始。第二个字将操作的名称声明为爬行,并指定数据堆栈34(t) 为方向,返回堆栈(r) 28为下一路线。第三个字b!指向由爬虫进入的地 址63指代的端口 39 (图1 ) , 63被置入RAM 24 (图3 ),且⑥p+被置入 该时间片以提取63作为直接量。PUSH指令将小于RAM 24的大小的存储 空间压为随后的NEXT指令的上下文。第四个字复制数据堆栈34中程序计 数器所指向的字。在这种情况下,程序计数器指向被视为直接量的dup xor a!。该动作会将目标节点中的寄存器清零。第五个字制作指令字的两份副本, 并两次将其发送至邻居端口。第一次指令字唤醒邻居端口,并在邻居端口处 于四端口读取模式时被丢弃,因此无法确定该字的原始内容。当第二次发送
该字时,邻居端口能够确定原始内容,并跳转到该端口,以开始执行所发送 的指令。该dupxor指令用0来替换堆栈的顶部项。注意爬虫被允许使用源
节点和目的节点两者的所有资源,因此任何在前的堆栈内容并不重要。第六 个字将@ +指令置入A寄存器。该②p+指令会堆叠接下来的两个字,以准备 将这些字作为邻居节点控制的指令流的一部分而供给邻居。由于该指令由端
口执行,该邻居能够修改RAM 24的所有内容。第一个⑨p+与!a+…一起从 端口提取出直接量,将该直接量贮存在RAM24中,推进RAM指针,且第 二个push(压入)迫使邻居在该邻居接收的地址处开始执行。现在,begin/next (开始/下一条)指令将从第二个字中的指令63处循环64次。该循环将RAM 24中的各项复制到邻居的RAM 24中的对应位置。循环之后,第一个指令 命令邻居节点将下一个输入用作直接量,且节点返回的地址被发送到邻居,
并置入邻居的返回堆栈28。在这一点上,两个节点均包含相同的RAM 24 内容。当邻居从返回堆栈28中的地址继续时,该邻居将从原始节点停止的 点处重新开始。Cold指令使该节点返回四端口读取状态,且-;指令将调用转 为跳转,结果是程序计数器不会留在返回堆栈中,且不会占据时间片。示出 的程序将R、 L、 U、 D指令定义为右、左、上和下作为替换的方法可以, 例如使用北、南、东和西。可替换地,该系统可以利用绝对地址而不是相对 地址来对特定节点进行寻址。所示的爬虫201占据了 RAM 24中的最末19个字。
返回图1,可以看出爬虫201的路径202。爬虫201开始于计算机12f, 向下穿过计算机12b,然后向右到达计算机12c,向上到达计算机12g,向右 到达计算机12a,向下到达计算机12e,然后向下到达计算机12d,在这里实 施压力测试。这将会测试计算机12d是否可以将SFFF加到$1,而没有进位 误差。该结果被放置在计算机12d的堆栈34中。计算机12d直接将零贮存 到存储器24的字十中。然后,爬虫通过向上到达计算机12e,再向上到达计 算机12a,向左到达计算机12g,然后向下到达计算机12c,再向左到达计算 机12b,然后再向上终止于计算机12f处,来反向穿过这些计算机。该特定 的测试占用17个字,但该测试可以更长或更短,或可以履行任何期望的功 能,包括载入数据、抽取和传送数据或执行指令。
图8是爬虫201的方法的流程图。爬虫201通过在期望的端口处一皮载入 计算机12中的首个计算机的存储器而开始。如果存在待执行的指令,则该 指令被执行。如果不存在待执行的指令,则判断是否存在移动爬虫的指令。 如果存在这样的指令,则爬虫被载入编程到爬虫中的下一个节点。重复该过 程,直到没有移动指令为止。如果不存在这样的指令,则爬虫结束。
在不改变本发明的值或范围的情况下,可以对本发明进行各种修改。例
如,虽然这里使用特定计算机12的例子对该发明实施例进行了描述,但是
很多或所有创造性方面可容易地适应其它计算机设计、其它类型的计算机阵列等。
类似地,尽管在这里已经关于单个电路小片14上的阵列IO中的计算机 12之间的通信主要描述了本发明的实施例,但相同的原理和方法可用于或 被修改为用于完成其它器件间通信,例如计算机12与其专用存储器之间的 通信,或阵列10中的计算机12与外部器件之间的通信。
尽管这里已讨论了创造性计算机阵列10、计算机12、爬虫201、路径 202、相关联的装置以及图7和图8的爬虫方法的具体例子,但是,预期将 存在很多现在还无法想象的应用。实际上,本发明的一个优势在于本创造性 方法及装置可以适于大量使用。
上面的所有仅是本发明的可用实施例的 一些例子。本领域技术人员将容 易看出可以在不脱离本发明的精神或范围的情况下,进行大量其它的修改和 变动。相应地,这里的公开内容目的不意在限定,且所附的权利要求被解释
为包含本发明的全部范围。 工业实用性
该创造性计算机阵列10、计算机12、爬虫201和图8的爬虫方法意在 广泛地使用在大量计算机应用中。预期在需要大量计算功率但功耗和热量产 生作为重要考虑事项的情况下更有用。
如这里先前所讨论的,本发明的实用性使阵列中的计算机之间的信息和 资源共享在速度和通用性方面得到很大程度的增强。而且,根据所描述的方
法和手段,计算机阵列与其它器件之间的通信也得到增强。
由于本发明的计算机阵列10、计算机12、爬虫201、路径202和相关 联的装置,以及图8所示的爬虫方法很容易制作,并容易与现有的任务、输 入/输出器件等集成,且由于提供了这里描述的优势,预期它们在工业中会 很容易被接受。因为这些及其它原因,预期本发明的用途及工业实用性的范 围相当大,且持续时间会相当持久。
权利要求
1、一种计算机系统,包括具有端口的计算机处理器组,和爬虫,用于通过一端口将从数据、位置和指令的组中选择的信息传送到第一处理器;其中所述第一处理器被编程为录入计划供给所述第一处理器的信息,并将所述爬虫运送到第二处理器。
2、 根据权利要求1所述的系统,其中所述第二处理器被编程为录入计划供给该第二处理器的信息,并运送所 述爬虫工具到第三处理器。
3、 根据权利要求1所述的系统,其中所述第二处理器被编程为在没有与所述第一处理器交互的情况下执行 来自输入端口的指令。
4、 根据权利要求2所述的系统,其中所述爬虫纳入从上、下、左和右的组中选择的位置,以将所述运送工具 运送到所述第二处理器。
5、 根据权利要求2所述的系统,其中所述信息是从所述端口到所述第二处理器的传输指令。
6、 根据权利要求2所述的系统,其中所述信息是从所述端口到所述第二处理器的传输数据。
7、 根据权利要求2所述的系统,其中所述信息以数据和/或指令的形式,从所述端口发送到所述第二处理器。
8、 根据权利要求1所述的系统,其中 所述输入端口是用于与外部器件进行通信的外部端口 。
9、 根据权利要求1所述的系统,其中所述处理器中的至少一个处理器包括: 指令寄存器,用于暂时贮存待执行的指令组;和程序计数器,用于贮存地址,指令组被从所述地址取回至所述指令寄存 器;且其中所述程序计数器中的地址可以是存储器地址,也可以是寄存器的地址。
10、 根据权利要求9所述的系统,其中 所述指令组通常被同时取回至所述指令寄存器;并且 所述多条指令被重复由堆栈中的数字指示的迭代次数。
11、 根据权利要求1所述的系统,其中所述处理器中的至少一个处理器 包括通常被同时读取的多条指令;并且其中所述多条指令被重复由堆栈中的数字指示的迭代次数。
12、 一种向位于具有输入端口的多计算机阵列中的计算机传送数据的方 法,所述多计算机阵列中有至少一个计算机不直接连接到所述输入端口,所 述方法包括(a) 将输入引入所述端口,使连接到所述输入端口的第一计算机向没 有连接到所述输入端口的第二计算机传送至少 一部分所述输入;(b) 使第二计算机录入所述一部分所述输入的至少部分。
13、 根据权利要求12所述的方法,其中所述第二计算机通过执行任务来对来自所述第 一计算机的所述输入的 所述部分作出反应。
14、 根据权利要求12所述的方法,其中响应于来自所述端口的输入,所述第二计算才几运行例程。
15、 根据权利要求14所述的方法,其中 所述例程包括与第三计算机相互作用。
16、 根据权利要求15所述的方法,其中 所述例程包括向所述第三计算机写。
17、 根据权利要求15所述的方法,其中 所述例程包括向所述第三计算机发送数据。
18、 根据权利要求15所述的方法,其中 所述例程包括向所述第三计算机发送指令。
19、 根据权利要求18所述的方法,其中 所述指令由所述第三计算机以所述指令被接收的顺序来执行。
20、 一种计算机程序,当该计算机程序在计算机阵列上运行时,使所述 阵列履行根据权利要求12至19中任一项所述的方法。
21、 一种收录代码的计算机可读介质,所述代码用于使电子装置履行根 据权利要求12、 13、 14、 15、 16、 17、 18或19所述的步骤。
22、 一种携带根据权利要求20所述的程序的载体。
23、 一种用于计算的系统,包括处理器组,包括与所述处理器中的一个处理器相连的至少一个输入端 口 ; 和爬虫工具,用于将从数据、指令和位置的組中选择的信息从所述一个输 入端口传送到所述处理器中的一个处理器和所述处理器中的另一个处理器,其中所述爬虫工具进一步包括由方向指令确定的路径和用于指令所述 另一个处理器载入有效载荷的工具。
24、 根据权利要求23所述的用于计算的系统,其中所述爬虫工具指示 所述一个处理器相对于所述输入端口的位置。
25、 根据权利要求24所述的用于计算的系统,其中所述爬虫工具通过 纳入从由上、下、右和左构成的组中选择的方向来指示所述一个处理器相对 于所述输入端口的位置。
26、 根据权利要求24所述的用于计算的系统,其中所述爬虫工具通过 包括从由北、南、东和西构成的组中选择的方向来指示所述一个处理器相对 于所述输入端口的位置。
27、 根据权利要求23所述的用于计算的系统,其中所述爬虫工具通过包括所述一个处理器的地址来绝对地指示所述一个处理器的位置。
28、 根据权利要求23所述的用于计算的系统,其中所述有效载荷为数据。
29、 根据权利要求23所述的用于计算的系统,其中所述有效载荷为指 令,且所述另一个处理器以可操作的方式执行所述指令。
全文摘要
本发明涉及用于将数据和指令载入计算机的方法及装置。计算机阵列(10)具有多个计算机(12)。计算机(12)彼此异步通信且本身内部以异步模式运行。当一计算机(12)尝试与另一计算机通信时,它进入睡眠直到另一计算机(12)准备好完成事务处理,从而节省功率并减少热量产生。睡眠计算机(12)等待数据或指令(12)。如为指令,睡眠计算机(12)等待贮存指令或立即执行指令。如为后者,当接收到指令时将其置于指令寄存器(30a)并从指令寄存器(30a)执行,而不必首先将其首先置于存储器。指令包括能沿预定路径(202)穿过若干处理器并在预选计算机中进行一系列操作的爬虫(201)。在一应用中,爬虫(201)在选中计算机(12d)中进行压力测试。
文档编号G06F15/163GK101339544SQ20081009693
公开日2009年1月7日 申请日期2008年5月7日 优先权日2007年5月7日
发明者杰佛瑞·亚瑟·福克斯, 查理斯·H·莫尔, 迈克尔·B·蒙特维利什斯凯 申请人:Vns组合有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1