CN101339544A - 用于将数据和指令载入计算机的方法及装置 - Google Patents
用于将数据和指令载入计算机的方法及装置 Download PDFInfo
- Publication number
- CN101339544A CN101339544A CNA2008100969359A CN200810096935A CN101339544A CN 101339544 A CN101339544 A CN 101339544A CN A2008100969359 A CNA2008100969359 A CN A2008100969359A CN 200810096935 A CN200810096935 A CN 200810096935A CN 101339544 A CN101339544 A CN 101339544A
- Authority
- CN
- China
- Prior art keywords
- instruction
- computing machine
- processor
- port
- computer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 241000270322 Lepidosauria Species 0.000 claims description 47
- 230000005540 biological transmission Effects 0.000 claims description 8
- 238000003860 storage Methods 0.000 claims description 7
- 238000012546 transfer Methods 0.000 claims description 3
- 230000001052 transient effect Effects 0.000 claims description 3
- 238000004590 computer program Methods 0.000 claims 2
- 230000008676 import Effects 0.000 claims 1
- 238000009434 installation Methods 0.000 claims 1
- 230000032258 transport Effects 0.000 claims 1
- 238000012360 testing method Methods 0.000 abstract description 6
- 238000012545 processing Methods 0.000 abstract description 5
- 230000006854 communication Effects 0.000 description 32
- 238000004891 communication Methods 0.000 description 31
- 238000010586 diagram Methods 0.000 description 16
- 230000004089 microcirculation Effects 0.000 description 16
- 230000008901 benefit Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- 230000004087 circulation Effects 0.000 description 6
- 238000000605 extraction Methods 0.000 description 6
- 230000019771 cognition Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000000977 initiatory effect Effects 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000001149 cognitive effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 235000015170 shellfish Nutrition 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
- G06F9/4862—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
- G06F9/24—Loading of the microprogram
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
- G06F1/3228—Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Multi Processors (AREA)
- Power Sources (AREA)
Abstract
本发明涉及用于将数据和指令载入计算机的方法及装置。计算机阵列(10)具有多个计算机(12)。计算机(12)彼此异步通信且本身内部以异步模式运行。当一计算机(12)尝试与另一计算机通信时,它进入睡眠直到另一计算机(12)准备好完成事务处理,从而节省功率并减少热量产生。睡眠计算机(12)等待数据或指令(12)。如为指令,睡眠计算机(12)等待贮存指令或立即执行指令。如为后者,当接收到指令时将其置于指令寄存器(30a)并从指令寄存器(30a)执行,而不必首先将其首先置于存储器。指令包括能沿预定路径(202)穿过若干处理器并在预选计算机中进行一系列操作的爬虫(201)。在一应用中,爬虫(201)在选中计算机(12d)中进行压力测试。
Description
技术领域
本发明涉及计算机和计算机处理器领域。
背景技术
在计算领域,处理速度是非常期望的品质,并且对创造更快速的计算机和处理器的探索正在进行中。然而,行业中普遍认为,至少对于利用目前已知的技术来提高微处理器的速度而言,微处理器速度的极限正在迅速地被接近。因此,通过在处理器之间分担计算机任务来提高整体计算机速度的多处理器的使用,越来越受到关注。
多处理器的使用所关心的是创建在处理器之间进行通信的需要。实际上,在处理器之间可能有大量的通信,因而大量的时间花费在处理器之间的指令和数据传输上。在这种通信量相当大的情况下,为了完成该通信量而必须执行的每条额外指令都会在过程中放置一增量延迟,通过累加,过程中的延迟可能相当大。用于从一个计算机向另一个计算机传达指令或数据的传统方法包括首先将数据或指令存储在接收计算机中,然后对该数据或指令进行调用以执行(在为指令的情况下),或对其进行操作(在为数据的情况下)。
减少在计算机之间以数据或指令形式传送、接收和然后使用信息所需的步骤的数目,是有帮助的。然而,就本发明人所知,没有现有技术的系统以有效的方式来简化上述过程。
而且,在现有技术中所公知的是,需要时常“获得计算机的注意力”。也就是说,有时尽管计算机可能正在忙于一项任务,但是可能发生另一项时间敏感的任务,使该计算机必须暂时从第一项任务转向该任务。这样的例子包括但不限于使用用户输入装置来向计算机提供输入的情况。在这种情况下,计算机可能需要根据该输入暂时确认该输入和/或作出反应。然后,计算机基于该输入,要么继续该输入之前进行的工作,要么改变其工作。尽管在这里使用外部输入作为例子,但是当ALU的注意力在计算机的内部方面之间存在潜在的冲突时,同样的情况也会发生。
当从I/O端口接收数据,或改变I/O端口的状态时,现有技术中有两种方法。一种是“轮询”端口,该方法包括以固定间隔读取端口的状态,以判断是否接收到任何数据,或是否发生了状态变化。然而,轮询端口消耗相当多的时间和资源,这些时间和资源通常可以更好地用作其它事情。一种更好的替代方法通常是使用“中断”。当使用中断时,处理器可以着手进行分配给它的任务,然后当如接收到字节或状态变化的事实所指示的那样,I/O端口/装置需要注意时,I/O端口/装置向处理器发送中断请求(IRQ)。一旦处理器接收到中断请求,它就结束它的当前指令,将少许内容置入堆栈,并执行适当的中断服务例程(ISR),该中断服务例程可以将字节从端口上移走,并将该字节置入缓冲器。一旦ISR结束,处理器就返回它停止的地方。使用该方法,处理器不必要浪费时间来查看I/O装置是否需要被注意,该装置会仅在其需要被注意时才为中断提供服务。然而,由于存在与使用中断相关联的大量开销,所以在很多情况下,使用中断本身是远远谈不上被期望的。例如,每当发生中断时,计算机都不得不将与其先前尝试完成的任务相关的特定数据暂时贮存起来,然后载入关于中断的数据,而后一旦中断处理完毕,就要将在前的任务所需的数据重新载入。中断干扰了时间敏感的处理。从本质上来说,中断使时序不可预测。显然,期望的是减少或消除所有的这种时间和资料消耗开销。然而,现有技术中没有开发出缓和中断需要的方法。
传统的并行计算通常将若干计算机连接到串行通讯端口的数据路径或总线上。在这种布置中,各独立的计算机都被分配以地址。举例来说,在贝奥伍尔夫群集(beowolf cluster)中,独立的PC通过TCP/IP协议连接到以太网中,并被给定一地址或URL。当向一独立的计算机输送数据或指令时,这些数据或指令被放置在写有该计算机地址的包中。
有关的问题是在这种计算机中如何有效地向独立的计算机传输数据和指令。由于这种类型的计算机的架构不包括单独的可寻址计算机,所以这个问题更加困难。
发明内容
发明的一个方面提供一种计算机阵列,该计算机阵列中的各计算机通过计算机的数据总线链接端口链接到相邻的邻居,该阵列具有向目的地提供信息的工具,该目的地是该阵列中任意期望的一个计算机。该信息可以是数据和/或指令,所述指令例如由期望的一个计算机来实现的程序。在实施例中,向期望的一个计算机提供信息的工具是程序,在下文中称作爬虫,该爬虫携带信息,还预定义了从起点(即可能位于阵列边缘的预定计算机)穿过阵列到目的地的路线,该目的地是期望的一个计算机,并且沿着预定义的路线将自身从一个计算机复制到另一计算机。在期望的目的地计算机处,信息被提供给这个计算机。如果该信息是指令,则在这个计算机中实施该指令。
爬虫也可以定义从目的地计算机到另一计算机的路线,另一计算机例如是原来的起点或可以是不同的计算机。在一个实施例中,爬虫将指令的结果运送到所述另一计算机。
在一个实施例中,爬虫仅向计算机送递程序和/或数据,然后间断。
在实施例中,在爬虫程序的有效载荷中,路线被静态地定义,换句话说,有效载荷预定了路线(不像TCP/IP一样,路线是动态定义的)。
在实施例中,在爬虫沿路线行进期间,路线信息在存储器之间复制。如果爬虫中的数据/指令有效载荷包含关于其路线的信息,且该有效载荷并没有被沿路线的计算机消耗,那么目的地计算机可以接收关于所采取的路线及其原点的信息。
本发明的一个实施例包括具有自身的存储器的计算机,使得该计算机能够独立地执行计算功能。在发明的一个实施例中,多个计算机以阵列方式进行排列。为了协同地完成任务,这些计算机必须将数据和/或指令从一个计算机传递到另一个计算机。由于所有的计算机同时工作通常会提供比大多数任务所需要的计算功率更多的计算功率,并且由于无论使用哪种算法或方法来在几个计算机中分配任务都几乎必然会导致任务的不均匀分配,因此预计在任意给定的时间,至少一些计算机,而且可能很多计算机不会积极地参与到任务的完成中。所以,期望找到一种使未充分利用的计算机可用于通过“借出”计算资源或存储器或两者来援助它们较忙的邻居的方法。为了使这种关系有效且有用,还进一步期望邻居计算机之间的通信和交互尽可能地快速且有效。因此,本发明实施例提供一种由计算机执行从另一计算机直接提供的指令和/或对从另一计算机直接提供的数据进行运作,而不是在这种运作之前必须接收并贮存数据和/或指令的工具和方法。应该注意发明的该实施例对于充当媒介的指令来说也将有用,该媒介使计算机将指令或数据从一个其它计算机“传递到”另一个计算机。
在实施例中,为了防止不必要的功耗和不必要的热量的产生,当计算机尝试与一个以上邻居进行通信时,该计算机将处于基本不消耗功率的休眠模式,直到邻居或一个邻居为了完成通信而运作为止。然而,这不是本发明的必要方面。此外,为了完成期望的功率节省并减少热量的产生,期望在发起的计算机在等候通信完成的时候间断,或至少显著地减少自己的功耗。可以想象,这可以由多种手段中的任意一种手段来实现。例如,如果该计算机是由内部时钟或外部时钟定时的,则该时钟可以在该时间段期间被减慢或停止。
在此所描述的本发明一个实施例中,无论指令和数据的源是计算机的内部存储器,还是这类指令和数据是由诸如另一计算机、外部通信端口等的另一个源接收的,这类指令和数据都会得到基本相同的对待。这是非常有意义的,原因是诸如贮存数据或指令、之后从内部存储器中重新调用它们之类的“额外”操作是不必要的,因此减少了所需的指令数目,并提高了所涉及计算机的运行速度。
在实施例中,极小的指令组通常可以同时传达到另一个计算机,从而使需要重复迭代的相对简单的操作可以快速且容易地完成。这将极大地加速了计算机之间的通信过程。
在实施例中,由于存在可用于执行各种任务的多个计算机,且由于在等候输入时一个以上计算机可置于基本不使用功率的休眠状态,因此可以给这类计算机分配等候输入的任务,从而减少或消除了“中断”可能正在完成其它任务的计算机的需要。
在实施例中,数据和指令可以有效地载入独立的计算机并执行和/或在这类计算机之间传输。即使在各计算机仅直接连接到有限数目的邻居时,所述传输可以在无到达公共总线的资源的情况下完成。
本发明实施例提供一种允许计算机在从外部源接收指令时,并不首先贮存所述指令的情况下就执行所述指令的方法和工具,以及使用该方法和工具来促进计算机之间的通信并促进计算机使用另一计算机的可用资源的能力的相关方法。该实施例在位于单一微芯片上的多计算机组合中提供直接执行方法和装置,其中运行效率很重要,不仅是由于期望提高运行速度,还由于作为更高效率的重要方面的功率节省和热量减少。
鉴于这里描述的及在附图的若干图中所示出的对实施本发明的方式和本发明的工业实用性的描述,本发明实施例的这些及其它目的和优势将对本领域技术人员来说变得清楚。所列出的目的和优势并不是对本发明实施例所有可能优势的穷举。而且,即使在应用中可能不具备或不需要一个以上所计划的目的和/或优势的情况下,也可以实施该发明。
进一步,本领域技术人员将认识到本发明的各种实施例可以达到所描述的目的和/优势中的一个以上,但不必须是全部目的和/优势。相应地,这里所描述的目的和/或优势并不是本发明的必需元素,且不应该被解释为对本发明的限制。
附图说明
图1为根据本发明的计算机阵列的概略图;
图2为示出图1的计算机的子集的详细图及图1的互连数据总线的更详细视图;
图3为描绘图1和图2的计算机中一个计算机的一般布局的框图;
图4为根据本创造性申请的指令字的概略图;
图5为图3的时间片定序器42的示意图;
图6为描绘根据本发明的微循环的例子的流程图;
图7为根据本创造性申请的爬虫(crawler)指令的概略图;
图8为描绘图7创造性方法的例子的流程图。
具体实施方式
在以下的说明书参见附图描述本发明的实施例,在附图中相同的附图标记表示相同或相似的元件。虽然根据用于实现目的的模式对本发明的实施例进行了描述,但是本领域技术人员将认知到鉴于这些启示并未脱离本发明的精神或范围,因此可以实现变体。
这里所描述的和/或在附图中所示的本发明的实施例及其变体仅以示例方式给出,并不限定本发明的范围。除非以其它方式具体说明,本发明的独立方面和部件可以被省略或修改,或可以具有因此被替代的等价物,或可以具有还未知的替代品,例如可能在未来开发的,或例如可能在未来被发现是可接受的替代品的。由于潜在应用的范围很大,且由于本发明意在适应很多这样的变体,因此只要保持在所要求的发明的精神和范围之内,本发明还可以针对各种各样的应用而被修改。
图1中的概略图中描绘独立计算机的阵列,该计算机阵列在此由一般附图标记10来指代。计算机阵列10具有多个(在示出的例子中是24个)计算机12(在阵列的例子中有时也称作“核”或“节点”)。在示出的例子中,所有的计算机12都位于单个电路小片14上。根据本实施例,各计算机12通常是独立运行的计算机,如在下文更详细地讨论的。计算机12由多条(其数量将在下文更详细地讨论)互连数据总线16相互连接。在该例子中,数据总线16是双向异步高速并行数据总线,尽管出于该目的而采用其它的互连手段也在这里的发明范围之内。在阵列10的本实施例中,不仅计算机12之间的数据通信是异步的,而且独立的计算机12内部也以异步模式运行。发明人已经发现这种模式提供了重要的优势。例如,由于没有必要在整个计算机阵列10中分发时钟信号,因此可以节省大量的功率。此外,没有必要分发时钟信号还消除了可能限制阵列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的例子的阵列(图1)内部,那么至少出于以上所述的意图,一个以上通信端口38不会被那个特定计算机使用。然而,那些与电路小片14边缘邻接的通信端口38可以有额外的电路,该电路可设计在这类计算机12中,或设计在计算机12的外部但与计算机12相关联,以使这类通信端口38充当外部I/O端口39(图1)。这类外部I/O端口39的例子包括但不限于:USB(通用串行总线)端口、RS232串行总线端口、并行通信端口、模数和/或数模转换端口以及许多其它可能的变体。无论为此目的采用了何种类型的额外的或经修改的电路,根据本发明目前所描述的实施例,对“外部”I/O端口39关于处理从中接收的指令和/或数据的操作方法与在此涉及“内部”通信端口38的描述类似。在图1中,描绘了具有相关联的接口电路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每次从RAM 24、ROM 26或直接从一条数据总线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,该环形寄存器阵列具有八个额外的硬件寄存器(在图中没有具体示出),在该例子中这些硬件寄存器编号为R1至R11。
在本发明的该实施例中,没有对堆栈溢出或下溢状态的硬件检测。通常,现有技术的处理器使用堆栈指针及存储器管理等,从而在堆栈指针超出分配给该堆栈的存储器范围时,可以标记为错误状态。这是因为,假如堆栈位于存储器中,那么溢出或下溢会将盖写堆栈项,或将堆栈项用作某些并不意在作为堆栈一部分的内容。然而,由于本实施例在堆栈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的优点。仅作为一个例子,软件简单地假设堆栈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的位i466(图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的执行,则i4位66为“0”(低),并且因此第一或门输入端62也为低。本领域技术人员将认识到,在诸如计算机12的器件中,事件的时序通常很关键,而且无一例外。本领域技术人员将认识到,在检测时间片定序器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或ROM 26)、外部通信端口等)相对应的位的数据预载入所指代的寄存器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的操作码在位的位置i466处为‘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被解码为止,从而防止伪地址到达地址总线。
当正在被执行的指令52位于指令字48的时间片三位置时,无论如何,计算机12将提取下一个等待的十八位指令字48,当然除非位i466为‘0’,或者除非时间片三中的指令是“next(下一条)”指令,这将在下文更详细地讨论。
在实际应用中,本创造性机制包括用于“预提取”指令的方法和装置,使得可以在指令字48中所有指令52的执行结束之前开始该提取。然而对于目前所描述的实施例来说这也不是必要方面。
已经详细描述了计算机12e向计算机12c写的以上例子。如根据以上讨论可以认知的,无论计算机12e首先尝试向计算机12c写还是计算机12c首先尝试从计算机12e读取,其操作基本相同。操作在计算机12e和12c都就绪之后才会完成,而且无论计算机12e还是计算机12c首先就绪,该首先就绪的计算机简单地“进入睡眠”,直到另一个计算机12e或12c完成传输为止。实际上,考虑上述处理的另一种方式是,当写计算机12e和接收计算机12c分别执行写指令和读指令时,它们均进入睡眠,但是当读线18和写线20都为高时,最后进入事务处理的计算机几乎瞬时再度醒来,而发起事务处理的首个计算机12会几乎无限期地保持睡眠,直到第二计算机12做好完成处理的准备为止。
本发明人相信使能器件之间的有效异步通信的关键特征是某种确认信号或条件。在现有技术中,器件之间的大多数通信是时钟控制的,且发送器件没有得知接收器件已准确接收数据的直接方式。诸如校验和操作的方法可用来尝试保证数据的正确接收,但是发送器件没有已完成操作的直接指示。如这里所述的本创造性方法提供必要的确认条件,该条件允许器件之间的异步通信,或至少使器件之间的异步通信变得实用。此外,确认条件还可能使一个以上器件“进入睡眠”,直到确认条件发生才会醒来。当然,也可以通过在计算机12之间发送的单独信号(通过互连的数据总线16或通过单独的信号线)来在计算机12之间传达确认条件,而且这类确认条件会在本发明该方面的范围之内。然而,根据这里描述的本发明的实施例,可以认知到,因为用于确认的方法不需要在实际上影响通信的任何额外的信号、时钟周期、定时脉冲或除上述之外的任何这类资源,因此这里包括更多的经济节省。
由于在指令字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的RAM 24写的一组指令,从而使第二计算机12可以“借用”可用的RAM 24的容量。
FOR指令102将表示期望迭代次数的值压入返回堆栈28。也就是说,位于数据堆栈34顶部的T寄存器44中的值被压入返回堆栈28的R寄存器29。虽然FOR指令102经常位于指令字48的时间片三54d中,但事实上FOR指令102可以位于任意时间片54中。如果FOR指令102不位于时间片三54d,那么指令字48中的剩余指令52将在继续微循环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)时,则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可以从接收计算机12的通信端口38被直接执行,正如指令字48中所包含的任意其它指令集一样。尽管这类“微循环”100有很多用处,但典型的应用是当一个计算机12想将一些数据贮存到邻居计算机12的存储器中的情况。举例来说,该计算机12首先向那个邻居计算机发送指令,告知该邻居计算机将到来的数据字贮存到特定的存储器地址中,然后递增该地址,然后重复给定次数的迭代(待传送的数据字数目)。为了读回数据,第一计算机可以仅仅指令第二计算机(这里用于贮存的计算机)使用类似的微循环将所贮存的数据写回第一计算机。
通过使用与这里描述的直接执行方面相结合的微循环100结构,计算机12可以在数据贮存需要超过建立在各独立计算机12中的相对较小的容量时,使用否则正在休息的邻居计算机12来贮存超额的数据。尽管在数据贮存方面描述了该例子,但是相同的技术同样可用于允许计算机12使其邻居共享其计算资源-通过创建使其它计算机12进行某些操作、贮存结果并重复给定次数的微循环100。如可以认知到的,可以使用本创造性微循环100结构的方法的个数几乎是无限的。
如这里先前所提及的,在目前所描述的本发明实施例中,数据或指令都可以以这里所描述的方式来传达,所以指令可以实际上从数据总线16直接执行。也就是说,不需要将指令存储到RAM 24中然后在执行之前重新调用这些指令。相反,在该实施例中,在通信端口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 xora!。该动作会将目标节点中的寄存器清零。第五个字制作指令字的两份副本,并两次将其发送至邻居端口。第一次指令字唤醒邻居端口,并在邻居端口处于四端口读取模式时被丢弃,因此无法确定该字的原始内容。当第二次发送该字时,邻居端口能够确定原始内容,并跳转到该端口,以开始执行所发送的指令。该dup xor指令用0来替换堆栈的顶部项。注意爬虫被允许使用源节点和目的节点两者的所有资源,因此任何在前的堆栈内容并不重要。第六个字将@p+指令置入A寄存器。该@p+指令会堆叠接下来的两个字,以准备将这些字作为邻居节点控制的指令流的一部分而供给邻居。由于该指令由端口执行,该邻居能够修改RAM 24的所有内容。第一个@p+与!a+...一起从端口提取出直接量,将该直接量贮存在RAM 24中,推进RAM指针,且第二个push(压入)迫使邻居在该邻居接收的地址处开始执行。现在,begin/next(开始/下一条)指令将从第二个字中的指令63处循环64次。该循环将RAM24中的各项复制到邻居的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是否可以将$FFF加到$1,而没有进位误差。该结果被放置在计算机12d的堆栈34中。计算机12d直接将零贮存到存储器24的字十中。然后,爬虫通过向上到达计算机12e,再向上到达计算机12a,向左到达计算机12g,然后向下到达计算机12c,再向左到达计算机12b,然后再向上终止于计算机12f处,来反向穿过这些计算机。该特定的测试占用17个字,但该测试可以更长或更短,或可以履行任何期望的功能,包括载入数据、抽取和传送数据或执行指令。
图8是爬虫201的方法的流程图。爬虫201通过在期望的端口处被载入计算机12中的首个计算机的存储器而开始。如果存在待执行的指令,则该指令被执行。如果不存在待执行的指令,则判断是否存在移动爬虫的指令。如果存在这样的指令,则爬虫被载入编程到爬虫中的下一个节点。重复该过程,直到没有移动指令为止。如果不存在这样的指令,则爬虫结束。
在不改变本发明的值或范围的情况下,可以对本发明进行各种修改。例如,虽然这里使用特定计算机12的例子对该发明实施例进行了描述,但是很多或所有创造性方面可容易地适应其它计算机设计、其它类型的计算机阵列等。
类似地,尽管在这里已经关于单个电路小片14上的阵列10中的计算机12之间的通信主要描述了本发明的实施例,但相同的原理和方法可用于或被修改为用于完成其它器件间通信,例如计算机12与其专用存储器之间的通信,或阵列10中的计算机12与外部器件之间的通信。
尽管这里已讨论了创造性计算机阵列10、计算机12、爬虫201、路径202、相关联的装置以及图7和图8的爬虫方法的具体例子,但是,预期将存在很多现在还无法想象的应用。实际上,本发明的一个优势在于本创造性方法及装置可以适于大量使用。
上面的所有仅是本发明的可用实施例的一些例子。本领域技术人员将容易看出可以在不脱离本发明的精神或范围的情况下,进行大量其它的修改和变动。相应地,这里的公开内容目的不意在限定,且所附的权利要求被解释为包含本发明的全部范围。
工业实用性
该创造性计算机阵列10、计算机12、爬虫201和图8的爬虫方法意在广泛地使用在大量计算机应用中。预期在需要大量计算功率但功耗和热量产生作为重要考虑事项的情况下更有用。
如这里先前所讨论的,本发明的实用性使阵列中的计算机之间的信息和资源共享在速度和通用性方面得到很大程度的增强。而且,根据所描述的方法和手段,计算机阵列与其它器件之间的通信也得到增强。
由于本发明的计算机阵列10、计算机12、爬虫201、路径202和相关联的装置,以及图8所示的爬虫方法很容易制作,并容易与现有的任务、输入/输出器件等集成,且由于提供了这里描述的优势,预期它们在工业中会很容易被接受。因为这些及其它原因,预期本发明的用途及工业实用性的范围相当大,且持续时间会相当持久。
Claims (29)
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所述的用于计算的系统,其中所述有效载荷为指令,且所述另一个处理器以可操作的方式执行所述指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/800,714 US20080282062A1 (en) | 2007-05-07 | 2007-05-07 | Method and apparatus for loading data and instructions into a computer |
US11/800,714 | 2007-05-07 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101339544A true CN101339544A (zh) | 2009-01-07 |
Family
ID=39560054
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008100969359A Pending CN101339544A (zh) | 2007-05-07 | 2008-05-07 | 用于将数据和指令载入计算机的方法及装置 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20080282062A1 (zh) |
EP (1) | EP1990718A1 (zh) |
JP (1) | JP2009064411A (zh) |
KR (1) | KR20080099193A (zh) |
CN (1) | CN101339544A (zh) |
TW (1) | TW200907698A (zh) |
WO (1) | WO2008137142A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105074662A (zh) * | 2013-04-02 | 2015-11-18 | 苹果公司 | 用于系统适配的动态程序评估 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200817925A (en) * | 2006-03-31 | 2008-04-16 | Technology Properties Ltd | Method and apparatus for operating a computer processor array |
US8464143B2 (en) * | 2009-01-12 | 2013-06-11 | Board Of Regents Of The Nevada System Of Higher Education | Error detection method |
JP2010218891A (ja) | 2009-03-17 | 2010-09-30 | Fujifilm Corp | 分散型エレクトロルミネッセンス素子 |
JP5406287B2 (ja) * | 2009-05-25 | 2014-02-05 | パナソニック株式会社 | マルチプロセッサシステム、マルチプロセッサ制御方法、及びマルチプロセッサ集積回路 |
US9417687B2 (en) * | 2011-07-12 | 2016-08-16 | Rambus Inc. | Dynamically changing data access bandwidth by selectively enabling and disabling data links |
EP2952299A1 (en) | 2014-06-05 | 2015-12-09 | Aldebaran Robotics | Standby mode of a humanoid robot |
CN112395000B (zh) * | 2019-08-13 | 2023-05-26 | 杭州中天微系统有限公司 | 一种数据预加载方法和指令处理装置 |
US11960438B2 (en) | 2020-09-08 | 2024-04-16 | Rambus Inc. | Methods and circuits for streaming data to processing elements in stacked processor-plus-memory architecture |
CN112615759B (zh) * | 2020-12-17 | 2023-03-31 | 上海哔哩哔哩科技有限公司 | 全链路压测组件、全链路压测方法及装置 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4215401A (en) * | 1978-09-28 | 1980-07-29 | Environmental Research Institute Of Michigan | Cellular digital array processor |
US4739474A (en) * | 1983-03-10 | 1988-04-19 | Martin Marietta Corporation | Geometric-arithmetic parallel processor |
US5021947A (en) * | 1986-03-31 | 1991-06-04 | Hughes Aircraft Company | Data-flow multiprocessor architecture with three dimensional multistage interconnection network for efficient signal and data processing |
US5222237A (en) * | 1988-02-02 | 1993-06-22 | Thinking Machines Corporation | Apparatus for aligning the operation of a plurality of processors |
US5440749A (en) * | 1989-08-03 | 1995-08-08 | Nanotronics Corporation | High performance, low cost microprocessor architecture |
DE4019040A1 (de) * | 1990-06-14 | 1991-12-19 | Philips Patentverwaltung | Multirechnersystem |
US5765015A (en) * | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Slide network for an array processor |
JPH0713945A (ja) * | 1993-06-16 | 1995-01-17 | Nippon Sheet Glass Co Ltd | 演算処理部および制御・記憶部分離型マルチプロセッサ ・システムのバス構造 |
US5832291A (en) * | 1995-12-15 | 1998-11-03 | Raytheon Company | Data processor with dynamic and selectable interconnections between processor array, external memory and I/O ports |
US6966002B1 (en) * | 1999-04-30 | 2005-11-15 | Trymedia Systems, Inc. | Methods and apparatus for secure distribution of software |
US20060248360A1 (en) * | 2001-05-18 | 2006-11-02 | Fung Henry T | Multi-server and multi-CPU power management system and method |
US20030005168A1 (en) * | 2001-06-29 | 2003-01-02 | Leerssen Scott Alan | System and method for auditing system call events with system call wrappers |
US7249357B2 (en) * | 2001-08-20 | 2007-07-24 | Silicon Graphics, Inc. | Transparent distribution and execution of data in a multiprocessor environment |
US6959372B1 (en) * | 2002-02-19 | 2005-10-25 | Cogent Chipware Inc. | Processor cluster architecture and associated parallel processing methods |
US7415594B2 (en) * | 2002-06-26 | 2008-08-19 | Coherent Logix, Incorporated | Processing system with interspersed stall propagating processors and communication elements |
US7237045B2 (en) * | 2002-06-28 | 2007-06-26 | Brocade Communications Systems, Inc. | Apparatus and method for storage processing through scalable port processors |
US7657861B2 (en) * | 2002-08-07 | 2010-02-02 | Pact Xpp Technologies Ag | Method and device for processing data |
JP3987784B2 (ja) * | 2002-10-30 | 2007-10-10 | Necエレクトロニクス株式会社 | アレイ型プロセッサ |
US7353501B2 (en) * | 2002-11-18 | 2008-04-01 | Microsoft Corporation | Generic wrapper scheme |
US7673118B2 (en) * | 2003-02-12 | 2010-03-02 | Swarztrauber Paul N | System and method for vector-parallel multiprocessor communication |
US7712080B2 (en) * | 2003-05-21 | 2010-05-04 | The Regents Of The University Of California | Systems and methods for parallel distributed programming |
US7269805B1 (en) * | 2004-04-30 | 2007-09-11 | Xilinx, Inc. | Testing of an integrated circuit having an embedded processor |
US7484041B2 (en) * | 2005-04-04 | 2009-01-27 | Kabushiki Kaisha Toshiba | Systems and methods for loading data into the cache of one processor to improve performance of another processor in a multiprocessor system |
EP1821211A3 (en) * | 2006-02-16 | 2008-06-18 | Technology Properties Limited | Cooperative multitasking method in a multiprocessor system |
TW200817925A (en) * | 2006-03-31 | 2008-04-16 | Technology Properties Ltd | Method and apparatus for operating a computer processor array |
-
2007
- 2007-05-07 US US11/800,714 patent/US20080282062A1/en not_active Abandoned
-
2008
- 2008-04-29 EP EP08251560A patent/EP1990718A1/en not_active Withdrawn
- 2008-05-02 TW TW097116210A patent/TW200907698A/zh unknown
- 2008-05-06 WO PCT/US2008/005780 patent/WO2008137142A1/en active Application Filing
- 2008-05-07 CN CNA2008100969359A patent/CN101339544A/zh active Pending
- 2008-05-07 KR KR1020080042500A patent/KR20080099193A/ko not_active Application Discontinuation
- 2008-05-07 JP JP2008121123A patent/JP2009064411A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105074662A (zh) * | 2013-04-02 | 2015-11-18 | 苹果公司 | 用于系统适配的动态程序评估 |
Also Published As
Publication number | Publication date |
---|---|
EP1990718A1 (en) | 2008-11-12 |
WO2008137142A1 (en) | 2008-11-13 |
US20080282062A1 (en) | 2008-11-13 |
KR20080099193A (ko) | 2008-11-12 |
JP2009064411A (ja) | 2009-03-26 |
TW200907698A (en) | 2009-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101339544A (zh) | 用于将数据和指令载入计算机的方法及装置 | |
CN101479714A (zh) | 来自输入源的指令的直接执行 | |
CN101055644B (zh) | 绘图处理装置及其处理指令、数据和逻辑单元操作的方法 | |
CN101438260A (zh) | 计算机阵列中的资源分配 | |
CN101295242A (zh) | 用于在计算机组中处理数据的系统及方法 | |
US20070192570A1 (en) | Execution of instructions directly from input source | |
KR20090016644A (ko) | 동작 효율성을 증가시킨 컴퓨터 시스템 | |
US7840826B2 (en) | Method and apparatus for using port communications to switch processor modes | |
US20070192575A1 (en) | Microloop computer instructions | |
KR20090017390A (ko) | 마이크로 루프 컴퓨터 명령어 | |
US10592444B2 (en) | Reconfigurable interconnected programmable processors | |
US7107478B2 (en) | Data processing system having a Cartesian Controller | |
Xiao et al. | Low latency high throughout circular asynchronous FIFO | |
WO2009154692A2 (en) | Method and apparatus for loading data and instructions into a computer | |
EP1821217B1 (en) | Asynchronous computer communication | |
Irwin | Reconfigurable pipeline systems | |
Ingersoll et al. | Dataflow computation with intelligent memories emulated on field-programmable gate arrays (FPGAs) | |
Gropp | Lecture 25: Strategies for parallelism and halo exchange | |
WO2007098024A2 (en) | Allocation of resources among an array of computers | |
JP3693681B2 (ja) | 演算装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20090107 |