CN101366003A - 微循环计算机指令 - Google Patents
微循环计算机指令 Download PDFInfo
- Publication number
- CN101366003A CN101366003A CNA2007800000156A CN200780000015A CN101366003A CN 101366003 A CN101366003 A CN 101366003A CN A2007800000156 A CNA2007800000156 A CN A2007800000156A CN 200780000015 A CN200780000015 A CN 200780000015A CN 101366003 A CN101366003 A CN 101366003A
- Authority
- CN
- China
- Prior art keywords
- instruction
- computing machine
- register
- computer
- storehouse
- 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
Images
Classifications
-
- 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/3243—Power saving in microcontroller unit
-
- 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/3209—Monitoring remote activity, e.g. over telephone lines or network connections
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Power Sources (AREA)
Abstract
计算机阵列(10)具有多台计算机(12)。计算机(12)彼此异步通信,并且计算机(12)本身在内部通常以异步方式运行。当一台计算机(12)试图与另一台计算机通信时,它将进入休眠,直到其它计算机(12)即将完成处理,从而省电并减少放热。休眠的计算机(12)可以正等待数据或指令(12)。在指令的情况下,休眠的计算机(12)可以正等待存储指令或立即执行指令。在后者情况下,当接收指令时,指令被置于指令寄存器(30a)中,并从此处被执行,而不需要首先将指令置于存储器中。指令可以包括能重复执行一系列操作的微循环(100)。在一种应用中,休眠的计算机(12)由输入唤醒,以便开始一动作,该动作在另外的方式下可能需要其它活跃的计算机中断。
Description
相关申请
本申请是由至少一个共同发明人于2006年2月16日提交的美国申请序列号为11/355,513的部分继续申请,并且要求由至少一个共同发明人于2006年3月31日提交的美国临时申请序列号为60/788,265和由至少一个共同发明人于2006年5月3日提交的美国申请序列号为60/797,345的权益,所有这些申请的全部内容通过参考被合并于此。
技术领域
本发明涉及计算机和计算机处理器领域,更具体地说,涉及一种允许计算机执行从外部源接收到的指令而不需要先存储所述指令的方法和装置,以及一种利用该方法和装置来促进计算机之间的通信和计算机使用另一计算机的可用资源的能力的相关方法。本创造性直接执行方法和装置的当前主要应用是,在单个微芯片上与多台计算机相结合,其中操作效率很重要,这不仅是因为提高操作速度的需要,而且还因为更高效率所导致的省电和降低热量的缘故。
背景技术
在计算领域,处理速度是一种非常期望的品质,因此对创建更快计算机和处理器的探索一直在进行。不过,在业界,通常公认的是,提高微处理器速度的极限正被迅速逼近,至少对于利用目前已知的技术而言。因此,利用多处理器通过分享处理器中的计算任务来提高整体计算速度越来越引起大家的兴趣。
多处理器的使用趋于需要处理器之间的通信。实际上,在处理器之间可能存在足够大量的通信,以致相当大的一部分时间花费在在处理器之间传输指令和数据。在这种通信量相当大的情况下,每条为了实现通信所必须被执行的附加指令,在处理过程中设置了一种递增的延迟,其累积起来可能是相当大的。将指令或数据从一台计算机传送到另一台计算机的常规方法包括:首先将数据或指令存储在接收计算机中,随后调用数据或指令以用于在所述计算机上执行(在为指令的情况下)或者操作(在为数据的情况下)。
减少在计算机之间传送、接收、然后使用数据或指令格式的信息所需的步骤数,将是很有用的。不过,据发明人所知,没有任何现有技术系统以有效的方式来简化上述处理过程。
而且,在现有技术中,已知的是,有时必需“引起计算机的注意”。也就是说,有时候即使计算机可能忙于一个任务,但仍可能需要另一对时间敏感的任务,即可能必需使计算机暂时从第一任务移开。这种示例包括但不限于,用户输入设备用于将输入提供给计算机的情况。在这些情况下,计算机可能需要暂时对输入进行确认和/或根据输入进行响应。然后,计算机继续在输入之前正在进行的工作,或者基于该输入改变正在进行的工作。尽管在此处使用外部输入作为示例,不过当在计算机内部各方面之间存在用于引起ALU注意的潜在冲突时,也发生相同的状况。
当从I/O端口接收数据或状态改变时,在现有技术中已存在两种可用的方法。一种是“轮询”该端口,这包括以固定的间隔读取端口的状态,以确定是否已接收到任何数据或者状态是否改变。不过,轮询端口耗费相当多的时间和资源,而这些时间和资源用做其它事情通常可能更好。通常,较佳的可选方案是使用“中断”。当使用中断时,处理器可以着手执行被分配给它的任务,并且当I/O端口/设备需要由已接收到字节或状态已经改变这样的事实所指示的注意时,I/O端口/设备将中断请求(IRQ)发送到处理器。一旦处理器接收到中断请求,就结束其当前指令,将少数事情放在堆栈中,并执行适当的可以从端口移动字节并将其放置在缓冲器中的中断服务例程(ISR)。一旦ISR结束,处理器就返回至它离开的位置。利用这种方法,处理器不必要浪费时间来查看I/O设备是否需要注意,而是仅在设备需要注意时提供中断服务。不过,在许多情况下,使用中断本身远达不到期望,这是由于可能存在大量的与使用中断有关的开销。例如,每次当中断发生时,计算机可能不得不暂时存储一定的与它之前试图实现的任务有关的数据,然后载入有关中断的数据,再然后一旦处理完中断,就再载入先前任务所需的数据。很明显,希望减少或消除所有这种时间和资源的消耗开销。不过,还没有开发出任何可缓解这种中断需要的现有技术方法。
发明内容
因此,本发明的一目的在于,提供一种在两台或更多计算机之间传送数据和/或指令的情况下用于提高操作速度的装置和方法。
本发明的另一目的在于,提供一种用于廉价地提供相当大计算能力的装置和方法。
本发明的再一目的在于,提供一种用于在最小量的时间内实现计算量密集任务的装置和方法。
本发明的又一目的在于,提供一种产生大量处理能力的计算机装置。
本发明的另一目的在于,提高计算机与计算机可控设备之间的通信效率。
本发明的再一目的在于,提高计算机之间的通信效率。
本发明的又一目的在于,提高计算机彼此之间以及与诸如用户输入设备之类的其它设备之间的通信方式的效率。
简要地说,本发明的已知实施例是本身具有存储器以便能独立发挥计算功能的计算机。在本发明的一个实施例中,多台计算机被排列成阵列。为了协作实现任务,计算机必须能彼此之间传递数据和/或指令。由于所有同时工作的计算机通常将提供较之大多任务所需的计算能力大得多的计算能力,并且由于任何用于在数个计算机之间分配任务的算法或方法将几乎肯定导致分配不平均,因此可以预期的是,至少一些而且可能是大多数的计算机不可能在给定的时间活跃地参与任务的实现。因此,希望找到一种方法,对于可用的但还未使用的计算机而言,通过“借出”计算资源、存储器或者将二者都“借出”来用于帮助它们更忙碌的邻居。为了使这种关系有效且有用,将进一步希望相邻计算机之间的通信和交互应该尽可能的快速和有效。因此,本发明提供一种这样的装置和方法,即计算机执行直接从另一台计算机提供的指令和/或作用于数据,而不是在这样的动作之前不得不接收然后存储数据和/或指令。需要注意的是,该发明对于这样的指令也是有效的,即用作媒介以促使一计算机将指令或数据从另一计算机“传递”到又一计算机的指令。
在所描述的实施例中,为了防止不必要的功耗和不必要的放热,当计算机试图与它的一个或多个邻居通信时,将处于一种基本上不消耗任何功率的休眠模式,直到该邻居或多个邻居中的一个运行起来完成通信。不过,这不是本发明的必要方案。此外,为了实现所期望的省电和降低放热,所需要的是,启动的计算机在等待通信完成的同时,停止或者至少明显降低其功耗。可以想象的是,这可以通过许多手段中的任一种手段来实现。例如,如果计算机由内部或者外部时钟来定时,那么在那段时间可以调慢或停止时钟。实际上,所预期的是,尽管目前所描述的实施例现在是发明人已知的最佳且最有效的实施例,但是由于某种原因而处于本发明的范围之外的实施例也可能被执行。
此处所描述的本发明的一个方案是,指令和数据得到基本相同的处理,而不论它们的来源是计算机的内部存储器还是这样的指令和数据正被接收自诸如另一计算机、外部通信端口之类的另一来源。这是显而易见的,因为诸如存储数据或指令、然后从内部存储器再调用它们之类的“附加”操作是不必要的,从而减少了所需要的指令数,并提高了涉及到的计算机的操作速度。
所描述实施例的另一方案在于,非常小的指令组通常可以同时被传送到另一计算机,以致需要重复迭代的相对简单的操作可以被快速且容易地实现。这将大大加快计算机之间的通信过程。
所描述实施例的又一方案在于,由于存在一些可用于执行各种任务的计算机,并且由于一台或多台计算机可以被设置成处于等待输入的同时基本上不使用任何功率的休眠状态,因此这样的计算机可以被分配以等待输入的任务,从而减少或消除使可能正实现其它任务的其它计算机“中断”的需要。
如同此处所描述的和在附图的几幅图中所图示的一样,考虑到对执行本发明的模式和其工业实用性的说明,对于本领域的技术人员来说,本发明的这些和其它目的和优点将变得清楚。所列出的目的和优点不是本发明所有可能优点的穷尽列举。而且,即使在一个或多个预计目的和/或优点在实际应用中可能缺少或者不需要的情况下,也将可能实现本发明。
进一步地,本领域的技术人员应该认识到本发明的各种实施例可以实现所描述的目的和/或优点中的一个或更多,但没有必要是全部。因此,这里所描述的目的和/或优点不是本发明的必要元素,也不应该作为限制来解释。
附图说明
图1是根据本发明的计算机阵列的简图;
图2是示出图1计算机的子集和图1中互连数据总线的更多详情的详细视图;
图3是描述图1和图2中的一台计算机的通用布局的框图;
图4是根据本创造性申请的指令字的图示;
图5是图3中的时段定序器(slot sequencer)42的示图;
图6是描述根据本发明的微循环示例的流程图;
图7是描述用于执行来自端口的指令的创造性方法的示例的流程图;
图8是描述用于提醒(alert)计算机的创造性改进方法的示例的流程图;和
图9是图示用于唤醒非活跃的处理器并将输入数据从已唤醒的处理器发送到可操作地处理输入数据的执行处理器的方法的流程图。
具体实施方式
在以下描述中,将参照附图对本发明进行说明,在附图中相同的标记表示相同或相似的元件。虽然按照用于实现本发明目的的方式对本发明进行描述,但是本领域的技术人员应该理解的是,可以根据这些所教授的东西在不脱离本发明的精神或范围的情况下做出各种修改。
此处所描述和/或在附图中所示的本发明的实施例和变形,仅通过示例的方式被呈现出来,并不用于限制本发明的范围。除非以另外的方式具体指出,否则本发明的各个方案和部件都可以被省略或修改,或者因此可以替代已知的等价物,或者作为还未知的替换物,例如将来开发出来的或者在将来发现的可接受的替换物。本发明还可以在处于所要求发明的精神和范围之内的同时,针对多种实际应用进行修改,因为潜在应用的范围很广阔,还因为本发明本就旨在适于多种这类变形。
已知的用于实现本发明的模式是各个计算机的阵列。该阵列在图1的简图中被描述,并且在此处总地用附图标记10表示。计算机阵列10具有多个(在所示示例中,为24个)计算机12(在阵列示例中,有时也称作“核”或“节点”)。在所示的示例中,所有计算机12都位于单个芯片(die)14上。根据本发明,每个计算机12通常都是独立运行的计算机,这在下文中将更详细地论述。计算机12通过多条(该数量将在下文中更详细地论述)互连数据总线16互连。在该示例中,数据总线16是双向、异步、高速、并行的数据总线,尽管针对此目的采用其它互连方式也落入本发明的范围中。在本实施例的阵列10中,不仅计算机12之间的数据通信是异步的,而且各个计算机12内部也以异步模式运行。这些已经由本发明人发现,从而提供重要的优势。例如,由于时钟信号不必要被分布在整个计算机阵列10上,因此就很省电。此外,不必发布时钟信号消除了许多定时问题,这些定时问题可能限制阵列10的尺寸或可能导致其它公知的麻烦。而且,各个计算机异步运行的事实,节省了大量的功率,这是由于每台计算机不执行指令时,将基本上不使用任何功率,原因在于其中不运行任何时钟。
本领域的技术人员应该认识到,出于清晰的考虑,芯片14上的额外部分在图1的视图中被省略了。这些额外部分包括电力总线、外部连接键盘和微处理器芯片的其它这类公共方面。
计算机12e是一台不位于阵列10的周界上的计算机12的示例。也就是说,计算机12e具有四个垂直相邻的计算机12a、12b、12c和12d。作为示例,对计算机12a-12e进行的这种分组将在下文中用于对阵列10的计算机12之间的通信进行更为详细的讨论。在图1的示图中可以看到的是,例如计算机12e的内部计算机将具有经由总线16与其直接通信的其它四台计算机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将其写入线20中的一条、两条、三条或四条都设定为高电平。虽然发明人认为在同一时刻将计算机12的不止一条写入线20设置为高电平目前还不现实,但是如此做法并未超出本发明的范围,因为可以想象,这种操作的使用在将来可能发生。
当相邻计算机12a、12b、12c或12d中的一台将它本身与计算机12e之间的写入线20设定为高电平时,如果计算机12e已经将对应的读取线18设定为高电平,那么在相关数据线22上,字将从那台计算机12a、12b、12c或12d传输到计算机12e。然后,发送计算机12将释放写入线20,而接收计算机(在该示例中,为12e)将写入线20和读取线18都拉低。后一动作将向发送计算机12确认已经接收到数据。需要注意的是,上述描述意不在于必需按次序表示事件的顺序。在实际实践中,接收计算机可以在发送计算机12释放(停止拉高)其写入线20之前不久,就试图将写入线20设定为低电平。在这样的例子中,发送计算机12一旦释放其写入线20,写入线20就由接收计算机12e拉低。
在本示例中,仅有编程错误才会引起一条总线16相反两端的两台计算机12都试图将其间的读取线18设定为高电平。而且,对于一条总线16相反两端上的两台计算机12来说,试图将其间的写入线18同时设定为高电平也将是一种错误。类似地,如上所述,目前可预见的是,不希望使单个计算机12将其四条写入线20中的不止一条设定为高电平。不过,目前可预见的是,将存在这样的机会,其中希望将读取线18的不同组合设定为高电平,以便一台计算机12可以处于等待来自第一台被选中计算机12的数据的等待状态,以将其相应的写入线20设定为高电平。
在以上论述的示例中,计算机12e被描述成在相邻计算机(选自一台或多台计算机12a、12b、12c或12d)将其写入线20设定为高电平之前就将其一条或多条读取线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都设定为低电平。
除非数据将要发送到的计算机12已经将其读取线18设置为高,在这种情况下,数据会被立即发送,否则,只要诸如计算机12e的计算机12已经将其写入线20中的一条设置为高以期望写入,它都将仅仅等待而几乎不耗电,直到数据如上文所述那样由合适的邻近计算机12“请求”。类似地,只要计算机12在期望读取过程中将其一或多条读取线18设定为高电平,它就只是等待而几乎不耗电,直到连接至所选择计算机12的写入线20成为高电平,以在这两个计算机12之间传输指令字。
如上所述,可能存在几种潜在的装置和/或方法,以使得计算机12如所描述的一样运行。不过,在本示例中,计算机12之所以这样运转,仅仅是因为它们在内部通常也异步运行(除了以所描述的异步方式在它们之间传输数据之外)。也就是说,指令通常被顺序地完成。当写入或读取指令出现时,可以不采取任何进一步的动作,直到指令被完成(或者,或许可选地,直到其被“重置”等中止)。在现有技术的意义中,并不存在规则的时钟脉冲。更确切地说,只有当正被执行的指令不是读取型或写入型指令(假定读取或写入型指令通常需要由另一实体完成)时,或者当读取型或写入型的操作实际上已经完成时,脉冲才产生以实现下一指令。
图3是描述图1和图2中一台计算机12示例的通用布局的框图。从图3的示图中可以看出,每台计算机12一般均为自身具有RAM 24和ROM 26的计算机。如之前所提到的,计算机12有时还称为单独的“节点”,在该示例中假定它们被组合在单个芯片上。
计算机12的其它基础部件是返回堆栈28(包括下文中将论述的R寄存器29)、指令区域30、算术逻辑单元(“ALU”或“处理器”)32、数据堆栈34和用于解码指令的解码逻辑部分36。本领域的技术人员通常会熟悉基于堆栈的计算机的操作,例如本示例的计算机12。计算机12是具有数据堆栈34和分立的返回堆栈28的双堆栈计算机。
在本发明的该实施例中,计算机12具有四个通信端口38,用于与相邻计算机12通信。通信端口38是三态驱动器,具有截止状态、接收状态(用于将信号驱动进入计算机12中)和发送状态(用于将信号驱动出计算机12)。当然,如果特定计算机12不像计算机12e的示例那样位于阵列(图1)内部,那么至少为了以上所描述的目的,在所述特定的计算机中将不会使用一个或多个通信端口38。不过,那些确实邻接芯片14边缘的通信端口38可以具有被设计在这种计算机12中或者被设计在计算机12的外部但与之相连的附加电路,从而使得这种通信端口38用作外部I/O端口39(图1)。这样的外部I/O端口39的示例包括但不限于USB(通用串行总线)端口、RS232串行总线端口、并行通信端口、模拟-数字和/或数字-模拟转换端口,和其它许多可能的变形。无论是什么类型的附加或修改电路应用于这个目的,根据本发明当前所描述的实施例,“外部”I/O端口39的对于从其接收到的指令和/或数据的处理的操作方法,将与此处关于“内部”通信端口38所描述的相似。在图1中,“边缘”计算机12f被描述为与相关接口电路80(示为块图形式)一起通过外部I/O端口39与外部设备82通信。
在当前所描述的实施例中,指令区域30包括许多寄存器40,在该示例中,包括有A寄存器40a、B寄存器40b,和P寄存器40c。在该示例中,A寄存器40a是满18位的寄存器,而B寄存器40b和P寄存器40c是9位的寄存器。
尽管本发明不受该示例的限制,但是目前计算机12执行自然的Forth语言指令。熟悉Forth计算机语言的人员应该理解,被认为是Forth“字”的复杂Forth指令,由为计算机设计的自然处理器指令构成。Forth字的集合被认为是“字典(dictionary)”。在其它语言中,这可能被称为是“库(1ibrary)”。如下文中将更详细描述的,计算机12每次从RAM 24、ROM 26或直接从一条数据总线16(图2)读取18比特。不过,由于在Forth中,大多数指令(被认为是无操作数指令)直接从堆栈28和34获得它们的操作数,所以它们通常在长度上只有五比特,以便在组中的最后指令选自只需要3比特的有限指令集合的状况下,有多达四条指令都可以被包括在单个18比特的指令字中。(在所描述实施例中,最后位置中指令的两个最低有效位被假定为“01”)。在图3的示图中,还以块图形式描述了时段定序器(slot sequencer)42。
在本发明的该实施例中,数据堆栈是ALU 32所控制的参数的后进先出的堆栈,而返回堆栈28是CALL和NEXT指令所使用的嵌套返回地址的后进先出的堆栈。如下文中将更详细论述的,返回堆栈28还由PUSH、POP和NEXT指令使用。数据堆栈34和返回堆栈28不是与许多现有技术计算机中一样的由堆栈指针访问的存储器中的阵列。相反,堆栈34和28是寄存器阵列。数据堆栈34中的顶部两个寄存器是T寄存器44和S寄存器46。数据堆栈34的剩余部分具有循环寄存器阵列34a,其中具有被编号的8个附加硬件寄存器,在该示例中为S2到S9。循环寄存器阵列34a中的8个寄存器之一在任何时刻都将被选作S寄存器46下方的寄存器。用于选择位于S下方的堆栈寄存器的移位寄存器中的值不能由软件读取或写入。类似地,返回堆栈28中的顶部位置是专用的R寄存器29,而返回堆栈28的剩余部分具有循环寄存器阵列28a,其中具有被编号的12个附加硬件寄存器(在图中没有具体示出),在该示例中为R1到R11。
在本发明的该示例中,不存在对堆栈上溢或下溢条件的硬件检测。通常,现有技术的处理器使用堆栈指针和存储器管理等,以便当堆栈指针超出了为该堆栈分配的存储器的范围时,就标记出错误条件。这是因为如果堆栈位于存储器中,则上溢或下溢将重写或用作将不是堆栈部分的堆栈项(stackitem)。不过,由于本发明在堆栈28和34的底部具有循环阵列28a和34a,所以堆栈28和34不会上溢或下溢出堆栈区域。相反,循环阵列28a和34a将只是回绕寄存器的循环阵列。由于堆栈28和34具有有限的深度,所以将任何东西压入堆栈28或34的顶部意味着底部上的某些东西正被重写。将10项以上压入数据堆栈34或者将13项以上压入返回堆栈28,将导致位于堆栈28和34底部的所述项被重写。软件的作用在于保持对堆栈28和34上的项数目的跟踪,并不试图在此处放置超出相应堆栈28和34能容纳的项。硬件不会检测出堆栈底部处的项的重写或者将它标记为错误。不过,应该注意到的是,软件可以以若干方式利用堆栈28和34底部处的循环阵列28a和34a。仅作为一个示例,软件可以简单地假定堆栈28或34在任何时刻均为“空”。由于陈旧项将朝底部被向下压,在底部处当堆栈填满时陈旧项将丢失,所以不需要从堆栈清除陈旧项。因此,对于程序来说不存在任何初始化来假定堆栈为空。
除了在此之前所论述的寄存器之外,指令区域30还具有用于存储当前正被使用的指令字48的18比特的指令寄存器30a,和在当前被执行的特定指令中针对指令的附加5比特的操作码寄存器30b。
图4是指令字的图示。(应该注意的是,指令字48实际可以包含指令、数据,或它们的某种组合)。指令字48由18比特50组成。由于是二进制计算机,所以每个比特50都将为“1”或“0”。如在此之前所论述的,18比特宽的指令字48可以在称为时段零54a、时段一54b、时段二54c和时段三54d的四个时段54中包括多达四条指令52。在该发明的本实施例中,18比特的指令字48一直作为整体被读取。因此,由于在指令字48中一直存在具有多达四条指令的可能性,所以no-op(非操作)指令被包括在计算机12的指令集合中,以规定当使用所有可用时段54可能不必要或者甚至不需要时的情况。应该注意的是,根据本发明的一个具体实施例,在间隔的时段(具体地说,为时段一54b和时段三54c)中,比特50的极性(高有效对比于低有效)被反向。不过,这不是当前所描述发明的必要方案,因此,为了更好地阐述本发明,该潜在含义避免出现在下面论述中。
图5是图3中时段定序器42的图示。从图5的示图中可以看出,时段定序器42具有排列成环形的多个(在该示例中,为14个)反相器56和一个NAND门58,以便当信号穿过14个反相器56和NAND门58时被反相奇数次。当到OR门60的两个输入中的任一个变成高电平时,在时段定序器42中产生信号。第一OR门输入62来源于被执行的指令52的比特i4 66(图4)。如果比特i4为高电平,那么该特定指令52是ALU指令,而i4比特66为“1”。当i4比特为“1”时,那么第一OR门输入62为高电平,而且时段定序器42被触发,以产生将要导致下一指令52执行的脉冲。
当时段定序器42通过第一OR门输入62变为高电平或者通过第二OR门输入64变为高电平(如下文中将论述的)而被触发时,那么信号将围绕时段定序器42行进两次,每次都在时段定序器输出68处生成一输出。第一次该信号经过时段定序器输出68时,其将为低电平,而第二次时段定序器输出68处的输出将为高电平。来自时段定序器输出68的相对宽的输出被提供给脉冲生成器70(示为块图的形式),脉冲生成器70生成窄的定时脉冲作为输出。本领域的技术人员将认识到,需要窄定时脉冲来精确地启动计算机12的操作。
当被执行的特定指令52是读取或写入指令或者其它任何指令时,其中不希望被执行的指令52立即触发执行顺次的下一指令52,那么i4比特66为“0”(低电平),因此第一OR门输入62也为低电平。本领域的技术人员将认识到,例如计算机12的装置中的事件的定时通常相当严格,而不能有例外。在对时段定序器42进行考察之后,本领域的技术人员将认识到,来自OR门60的输出必须保持高电平,直到信号已经循环通过NAND门58,从而开始循环的第二“圈(1ap)”之后。此后,在第二“圈”期间来自OR门60的输出将变成低电平,从而防止电路的有害持续振荡。
根据以上论述可以理解的是,当i4比特66是‘0’时,时段定序器42将不被触发-假定将在下文中论述的第二OR门输入66不是高电平。
如前面所述,每条指令52的i4比特66根据该指令是读取还是写入型指令而被设置,相对于该指令是不需要任何输入还是不需要输出的一条指令。指令52中的其余比特50为该指令提供了特定操作码的剩余部分。在读取或写入型指令的情况下,在该特定计算机12中,一个或更多的比特可以用于指示数据将从何处读取或者写入何处。在本发明的该示例中,将被写入的数据一直来自于T寄存器44(数据堆栈34的顶部),但是数据可以有选择地被读入T寄存器44或者指令区域30,从此处可以执行数据。这是由于在本发明的该具体实施例中,数据或者指令可以以此处所描述的方式被传送,并且指令因此可以直接从数据总线16执行。
一个或者更多的比特50将被用于指示端口38的哪一个将被设置成读取或写入,如果有这样端口的话。可选地,后一操作通过利用一个或更多的比特来指定寄存器40,例如A寄存器40a、B寄存器40b等而被完成。在这样的示例中,所指定的寄存器40将被预载入数据,数据具有对应于每个端口38(并且还有计算机12可能试图与其通信的其它任何潜在实体,例如存储器(RAM 24或ROM 26)、外部通信端口39,等等)的比特。例如,特定寄存器40中的四个比特中的每个可以分别对应于上端口38a、右端口38b、左端口38c或下端口38d中的每个。在这种情况下,在那些比特的位置的任一处存在‘1’的地方,通信将被设定成通过相应端口38进行。如同在此之前所论述的,在本发明的该实施例中,所期望的是,读取操作码可能在单个指令中设置一个以上的用于通信的端口38,而尽管可能,但不期望写入操作码在单个指令中设置一个以上的用于通信的端口38。
紧接下来的例子将假定计算机12e试图写入计算机12c的通信,尽管该示例适用于任何相邻计算机12之间的通信。当写入指令在写入计算机12e中被执行时,所选择的写入线20(在该示例中是计算机12e与12c之间的写入线20)被设定为高电平,如果相应的读取线18已经是高电平,那么数据从所选择的位置通过所选择的通信端口38被立即发送。或者,如果相应的读取线18还不是高电平,那么计算机12e将仅停止操作,直到相应的读取线18确实变成高电平。当存在读取和写入型指令时,用于停止计算机12a(或者,更确切地说,使其不能进行进一步的操作)的机制,先前已被论述。简而言之,指令52的操作码将在比特位置i466处具有‘0’,因此OR门60的第一OR门输入62是低电平,因此时段定序器42没有被触发以生成使能脉冲。
至于当读取或写入型指令被完成时计算机12e的操作如何重新开始,这种机制是这样的:当计算机12e与12c之间的读取线18和相应的写入线20都为高电平时,那么线18和20都将由保持其为高电平的每个相应计算机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提供了第二OR门的输入64。由于到OR门60的输入62或64的输入将引起OR门60的输出变成高电平,因此这将以在此之前所述的方式启动时段定序器42的操作,以便执行在指令字48的下一个时段54中的指令52。为了防止伪地址到达地址总线,确认线72保持高电平,直到下一个指令52被解码。
在任何情况下,当指令52在指令字48的时段三位置中被执行时,计算机12将取出下一个等待的18比特的指令字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之间传送,并且这样的确认信号将落入本发明的该方案的范围之内。然而,根据此处所描述的本发明的实施例,可以理解的是,这里存在甚至更多的经济利益,原因在于,用于确认的方法不需要任何额外的信号、时钟周期、定时脉冲,或除了上述之外的任何这类资源,来实际上影响通信。
由于四条指令52可以被包括在指令字48中,并且由于根据本发明,整个指令字48可以在计算机12之间被一次传送,这展示了用于在一个操作中传送非常小的程序的理想机会。例如,多数小的“For/Next”循环可以在单个指令字48中被实现。图6是微循环100的图示。不同于其它现有技术的循环,微循环100具有FOR指令102和NEXT指令104。由于指令字48(图4)包含四条指令52,因此指令字48可以在单个指令字48中包括三个操作指令106。操作指令106本质上可以是程序员可能想要将其包括在微循环100中的任何可用的指令。可以从一个计算机12传送到另一个的微循环100典型示例可以是,用于读取或者写入第二个计算机12的RAM 24的一组指令,以便第一计算机12可以“借出”可用的RAM 24容量。
FOR指令102将表示所需迭代数的值压入返回堆栈28上。也就是说,数据堆栈34顶部的T寄存器44中的值被压入(PUSH)到返回堆栈28的R寄存器29中。虽然经常位于指令字48的时段三54d中,不过FOR指令102实际上可以被设置在任意时段54中。当FOR指令102没有在时段三54d中时,该指令字48中的剩余指令52将在进行微循环100之前被执行,这通常将是下一次被载入的指令字48。
根据本发明当前所描述的实施例,在图6的示图中所描述的NEXT指令104是特定类型的NEXT指令104。这是因为它位于时段三54d(图4)中。根据本发明的该实施例,假定特定指令字40中所有遵照“普通”NEXT指令(未示出)的数据是地址(for/next循环开始的地址)。无论用于NEXT指令104的操作码位于四个时段54中的哪一个(除了很明显的例外,即如前面所论述的,如果其位于时段三54d,则前两位数被假定,而不是详细写出)中,它都是相同的。但是,由于当处于时段三54d中时没有任何遵照NEXT指令104的地址数据,因此也可以假定时段三54d中的NEXT指令104是MICRO-NEXT指令104a。MICRO-NEXT指令104a使用第一指令52的地址,其位于所在的同一指令字48的时段零54a中,作为其返回地址。MICRO-NEXT指令104a也可以取R寄存器29中的值(它最初由FOR指令压到这里),对它减1,然后将它返回到R寄存器29。当R寄存器29中的值达到预定值(例如0)时,那么MICRO-NEXT指令将载入下一个指令字48,并在此如上所述继续进行。但是,当MICRO-NEXT指令104a从R寄存器29中读取的值大于预定值时,将在自身指令字48的时段零54a处重新开始操作,并执行其中包含的位于时段零到时段三中的三条指令52。也就是说,在本发明的该实施例中,MICRO-NEXT指令104a将一直执行三条操作指令106。在某些情况下,由于可能不需要使用所有三条潜在可用的指令52,因此按照需要,“no-op”指令可用于填充一个或两个时段54。
应该注意的是,微循环100可以整个用于单个计算机12中。实际上,整组可用的机器语言指令都可以作为操作指令106使用,并且对微循环的应用和使用仅受限于程序员的构想。但是,当在单个指令字48中执行整个微循环100的能力,与允许计算机12将指令字48发送到相邻计算机12以在其中执行本质上直接来自数据总线16的指令52的能力相结合时,这提供了用于允许计算机12利用其相邻计算机的资源的有力工具。
如在此所述,全部包含在单个数据字48中的小微循环100可以在计算机12之间传送,并且其可以直接从接收计算机12的通信端口38被执行,如同此处所述的指令字48中所包含的其它任何指令组。这类“微循环”100虽然存在很多用途,但典型的用途在于一个计算机12想要将一些数据存储在相邻计算机12的存储器中。例如,它可以首先将指令发送到相邻计算机,告诉相邻计算机将输入数据字存储在特定存储器地址中,然后递增该地址,再然后重复给定的迭代数(数据字将被传送的次数)。为了读回数据,第一计算机将仅指令第二计算机(这里指用于存储的计算机)使用类似的微循环将已存储数据写回到第一计算机。
通过结合此处所述的直接执行方案来使用微循环100结构,计算机12可以使用另一休眠的相邻计算机12,用于当数据存储需要超过内置于单个计算机12中的相对较小容量时,存储超出数据。虽然该示例按照数据存储进行了描述,不过相同的技术可以等同地用于允许计算机12使其邻居共享其计算资源-通过创建微循环100来使其它计算机12执行一些操作,存储结果,并且重复给定次数。可以理解的是,本创造性的微循环100结构可以被使用的方式的数量几乎是无限的。
如在此之前所提到的,在本发明当前所描述的实施例中,数据或指令都可以通过此处所描述的方式进行通信,因此指令实质上可以直接从数据总线16被执行。也就是说,不需要在执行之前将指令存储到RAM24中,然后再调用它们。相反,根据本发明的这个方案,在通信端口38接收到的指令字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寄存器40c被载入地址,该地址由JUMP或CALL指令后的当前载入指令字48的剩余部分中的数据所指定,而不是被递增。然后,当P寄存器40c被载入对应于一或更多端口38的地址时,下一指令字48将从端口38被载入指令寄存器30a。当指令字48刚从端口38被取回到指令寄存器30a时,P寄存器40c也不递增。相反,它将继续保持相同端口地址,直到执行专用JUMP或CALL指令,以改变P寄存器40c。也就是说,一旦告诉计算机12从端口38寻找它的下一条指令,那么它就将从该同一端口38(或多个端口38)继续寻找指令,直到其被告知寻找其它地方,例如返回到存储器(RAM 24或ROM 26)以寻找它的下一指令字48。
如以上所应该注意的,在当前指令字48中未留下任何更多的可执行指令时,计算机12知道已取出的下一个18比特将被放置在指令寄存器30a中。在默认情况下,在JUMP或CALL指令(或者也在此处将不被具体论述的其它一些指令)之后,在当前指令字48中未留下任何更多的可执行指令,这是因为根据定义遵照JUMP或CALL指令的18比特的指令字的剩余部分被专用于由JUMP或CALL指令所引用的地址。另一种陈述方式是,前述过程在许多方式下是独一无二的,包括但不限于这种事实,即JUMP或CALL指令可选地到端口38而不是只到存储器地址等。
应该记住的是,如在此之前所论述的,计算机12可以从一个端口38或从端口组38的任何一个寻找其下一条指令。因此,提供对应于端口38的各种组合的地址。例如,当计算机被告知从端口组38中取出指令时,它将从所选择的端口38的任一个接受第一个可用指令字48。如果没有相邻计算机12试图向这些端口38中的任一个写入,如前面所详细描述的,所被考虑的计算机12将“进入休眠”,直到邻居确实向所选择的端口38写入为止。
图7是描述以上所述的直接执行方法120的示例的流程图。如在此之前所论述的,当指令寄存器30a中不再留下可执行指令时,操作的“正常(normal)”流程将开始。这时,如由“取出字”操作122所指示的,计算机12将“取出”另一指令字(注意这里所使用术语“取出”是普通含义上的,因为实际的FETCH指令并没有被使用)。该操作将按照P寄存器40c中的地址(由图7流程图中的“地址”判断操作124所指示)被完成。如果P寄存器40c中的地址是RAM 24或ROM 26地址,那么下一指令字48将在“从存储器中取出”的操作126中从指定的存储器位置被取回。另一方面,如果P寄存器40c中的地址是端口38或多个端口38的地址(不是存储器地址),那么下一指令字48将在“从端口取出”的操作128中从指定的端口位置被取回。在任一情况下,被取回的指令字48在“取回指令字”的操作130中被放置在指令寄存器30c中。如在此之前所描述的,在“执行指令字”的操作132中,指令字48的时段54中的指令依次被完成。
在“跳转”判断的操作134中,确定指令字48中的操作之一是JUMP指令,还是如在此之前所述的,其它的将操作从连续“正常”进程转移的指令。如果是,那么如图7的示图所示,在“载入P寄存器”的操作136中,在JUMP(或其它这种)指令之后,指令字48中所提供的地址被提供给P寄存器40c,并且在“取出字”的操作122中,序列再次开始。如果否,那么下一个动作取决于最后指令的取出是来自端口38还是来自存储器地址,如“端口地址”判断操作138中所示。如果最后指令的取出是来自端口38,那么不对P寄存器30a作任何修改,并且序列从“取出字”的操作122开始重复。另一方面,如果最后指令的取出是来自存储器地址(RAM 24或ROM26),那么在“取出字”的操作122完成之前,P寄存器30a中的地址被递增,如图7中的“递增P寄存器”操作140所示。
以上描述并不是用来表示实际的操作步骤。相反,它是由此产生的根据本发明所述实施例被执行的各种判断和操作的图示。实际上,该流程图不应该被理解成意味着每个所描述和所显示的步骤都需要分开的明显的顺序步骤。实际上,图7的流程图中的许多所述操作在实践中通常同时完成。
图8是描述用于提醒计算机的本创造性改进方法的示例的流程图。如在此之前所论述的,所述实施例中的计算机12在等待输入的同时将“进入休眠”。这样的输入可以来自关于图1到图5所述实施例中的相邻计算机12。可选择地,也如同在此之前所论述的,具有邻接芯片14边缘的通信端口38的计算机12可以具有附加电路,所述附加电路设计在这种计算机12中或者设计在计算机12与之相连的外部,以使这种通信端口38担当外部I/O端口39。在任一情况下,本创造性的组合可以提供附加优点,即“休眠”计算机12可以保持状态,并预备好在接收到输入时唤醒并跳转到一些规定的动作中。因此,本发明也提供了对使用中断处理输入的可选方案,而无论这些输入来自于外部输入设备,还是来自阵列10中的另一计算机12。
如前面所述,不用使计算机12为了处理中断不得不停止(或暂停)其正在进行的工作,此处所描述的创造性组合将允许计算机12处于“休眠但警醒”的状态。因此,可以分配一台或多台计算机12以接收并作用于一定的输入。虽然有很多可以使用这种特征的方式,在图8的示图中仅示出一种示例用于图示这样的“计算机提醒方法”,并且在此处用附图标记150列出。从图8的示图中可以看出,在“进入提醒状态”的操作152中,计算机12被促使“进入休眠”,以便它正在等待来自相邻计算机12或者一台以上(可为所有的四台)相邻计算机的输入,或者在“边缘”计算机12的情况下,等待外部输入,或者等待外部输入和/或来自相邻计算机12的输入的某种组合。如同在此之前所述的,计算机12可以在等待读取或写入操作的完成时“进入休眠”。如同该示例中所描述的,当计算机12正被用于等待一些可能的“输入”时,那么自然会假定,等待计算机在等待来自邻居或外部源的“写入”时已将它的读取线18设定为高电平。实际上,目前所预期的是,这将是通常的状况。然而,等待计算机12将它的写入线20设定为高电平并因此在邻居或外部源从其“读取”时被唤醒,都在本发明的范围之内。
在“唤醒”的操作154中,休眠的计算机12被促使重新开始操作,这是因为相邻计算机12或外部设备39已完成了正被等待的处理。如果正被等待的处理是接收将被执行的指令字48,那么计算机12将继续执行其中的指令。如果正被等待的处理是接收数据,那么计算机将继续执行队列中的下一条指令,其将是目前指令字48的下一时段54中的指令,或者下一指令字48将被载入,并且下一指令将位于下一指令字48的时段零中。在任何情况下,既然以所描述的方式被使用,那么下一条指令将开始一条或多条指令的序列(sequence),用于处理刚接收到的输入。用于处理这种输入的选项可以包括,对执行某种内部预定功能的反应,与阵列10中的一台或多台其它计算机12通信,甚或是忽略输入(正如同常规现有技术一样,中断可以在规定的条件下被忽略)。选项在图8的示图中被描述为“作用于输入”的操作156。应该注意的是,在一些例子中,输入的内容可能不重要。例如,在一些情况下,外部设备试图进行感兴趣的通信可能才是事实。
在图8所示的方式下,如果计算机12被分配担任“提醒”计算机的任务,那么它通常返回到“休眠但警醒”的状态,如图8所示。但是,选项一直打开,以给计算机12分配一些其它的任务,例如当不再需要监视特定的在被监控的输入时,或当更便于将该任务传输到队列中的其它一些计算机12时。
本领域的技术人员人将认识到,前述操作模式将用作比使用常规中断更有效的替代方案。当计算机12已将其一条或多条读取线18(或写入线20)设定为高电平时,可以说是处于“警醒”状态。在警醒状态中,计算机12预备好立即执行在对应于被设定为高电平的一条或多条读取线18的数据总线16上被发送至此的任何指令,或者可选择地,作用于在数据总线16上被传输的数据。当有计算机12的阵列可用时,在任何给定时刻,一台或多台计算机将处于前述警醒状态,以便所规定的输入组中的任一个将触发它进行动作。优选地,使用常规中断技术来“引起计算机的注意”,这是因为中断将导致计算机必须响应于中断需求来存储一定数据,载入一定数据,等等。按照本发明,计算机可以被设置在警醒状态并专用于等待感兴趣的输入,以便在由这些输入触发的指令开始执行时,不会浪费一个指令周期。此外,注意到的是,在目前所述的实施例中,警醒状态中的计算机实际上将是“休眠但警醒”,这意味着它们在基本上不使用任何功率方面是“休眠”的,但在它们会由输入立即触发进入动作方面,又是“警醒”的。不过,即使不处于“休眠”状态,“警醒”状态仍可以体现在计算机中,这些都在本发明该方案的范围之内。所描述的警醒状态基本上可以用于任何状况下,其中常规现有技术的中断(或者是硬件中断或者是软件中断)可能以其它方式被使用。
图9是计算机提醒方法150a的另一示例。这只是一个示例,其中监控计算机12f(图1)与另一个被分配以其它某种任务的计算机12g(图1)之间的交互可能是需要的或必要的。从图9的示图可见,有两个通常独立的流程图,分别对应计算机12f和12g。这指示出本发明的合作共同处理器方式的自然特性,其中每个计算机12自身通常独立执行地分配,除了此处描述的完成交互的情况之外。
对于计算机12f来说,“进入警醒状态”的操作152,“唤醒”操作154和“作用于输入”操作中的每个,都如在此之前关于计算机提醒方法150的第一示例所描述的一样被实现。但是,由于该示例预期可能需要计算机12f与12g之间的交互,所以接着“作用于输入”的操作156的是,计算机12f进入“发送信息?”的判断操作158,其中其按照自己的程序,确定刚接收到的输入是否需要引起其它计算机12g的注意。如果否,那么计算机12f返回到警醒状态,或者如此前所论述的其它一些可选项。如果是,那么在“发送到其它”的操作160中,如此前详细描述的,计算机12f开始与计算机12g通信。应该注意的是,按照程序员的选择,计算机12f可以发送指令,例如可以发送响应于来自外部设备82的输入而在内部产生的指令,或者发送例如从外部设备82接收到的指令。可选择地,计算机12f可以将数据传递到计算机12g,并且这些数据可以在计算机12f内部产生,或者从外部设备82“经过”。另一可选方案还可以是,在一些状况下,计算机12f可能在其接收来自外部设备82的输入时试图从计算机12g读取。所有这些可能程序员都可以使用。
同时,如在“执行主要功能”操作162中所示的,计算机12g通常执行代码以完成分配给它的主要任务,无论是什么任务。然而,如果程序员确定需要计算机12f和12g之间的偶然交互处理,那么程序员将提供出,计算机12g偶然暂停以查看其一台或多台相邻计算机是否试图通信,如“寻找输入”的操作166所示。如“输入?”的判断操作158所示,是否存在等待的通信(例如,计算机12f是否已开始向计算机12g写入)。如果存在已开始的通信(是),那么如此前详细描述的,在“从其它接收”的操作170中,计算机12g将完成通信。如果否,那么计算机12g将返回执行其主要功能162,如图9所示。在“从其它接收”操作170之后,计算机12g将作用于在“作用于输入”的操作172中接收到的输入。如前面提到的,程序员可能已经提供了计算机12g所期待输入中的指令,在这种情况下,如同此前所描述的,计算机12g将执行指令。可选择地,计算机12g可以被编程以等待所作用的数据。
在图9的示例中,示出了在“作用于输入”的操作172之后,计算机12g返回完成它的主要功能(也就是说,其返回到“执行主要功能”的操作162)。然而,一定存在甚至更复杂示例的可能性。例如,编程可以是这样的,即从计算机12f接收到的某种输入将导致计算机12g中断之前被分配的主要功能,并开始一个新功能,或者它可以简单地暂时停止并等待进一步的输入。本领域的技术人员将认识到,此处动作的各种可能性仅受限于程序员的构思。
应该注意的是,按照此处所描述的本发明的实施例,给定的计算机12当正执行任务时不需要被中断,这是因为另一计算机12被分配了监控和处理可能另外需要中断的输入的任务。但是,有趣的是,还注意到,忙于处理其它任务的计算机12也不能被打扰,除非并且直到它的程序提供了它查看其端口38以寻找输入。因此,有时将需要使计算机12暂停寻找其它输入。重要的是要认识到,此处正描述的是可被描述为“合作多任务”的计算范例的示例,其中以前可通过单个处理器被完成的任务,以新的有趣方式在多个处理器中被划分。
在不改变本发明的值或范围的情况下,可以对本发明做各种修改。例如,虽然此处使用特定计算机12的示例描述了本发明,但是很多或所有创造性的方案将容易适于其它计算机设计、其它类型的计算机阵列,等等。
类似地,虽然此处主要针对在单个芯片14上的阵列10中的计算机12之间的通信描述了本发明,不过,相同的原理和方法可以被使用或修改,以用于完成其它设备间通信,例如计算机12与其专用存储器或阵列10的计算机12与外部设备之间的通信。
虽然此处论述了本创造性的计算机阵列10、计算机12、微循环100、直接执行方法120和相关装置以及计算机提醒方法150的具体示例,不过所期望的是,对于未被构想的那些将有大量的应用。实际上,本发明的一个优点在于本创造性的方法和装置可以适于多种应用。
以上所有的这些只是本发明可用实施例的一些示例。本领域的技术人员将容易观察到,在不脱离本发明的精神和范围的情况下,可以进行其它许多修改和替换。因此,此处的公开并不意图限定,而所附的权利要求书将被解释为包括本发明的整个范围。
工业实用性
本创造性的计算机阵列10、计算机12、微循环100、直接执行方法120和相关装置以及计算机提醒方法150意在广泛地用于多种计算机应用场合。所期望的是,它们在需要相当大计算能力并且功耗和放热还是重点考虑因素的应用场合将特别有用。
如此前论述,本发明的应用性是这样的:阵列中的计算机之间的信息和资源的共享得到大大增强,无论在速度和通用性方面。另外,根据所描述的方法和装置,计算机阵列与其它设备之间的通信得到增强。
由于本发明的计算机阵列10、计算机12、微循环100、直接执行方法120和相关装置以及计算机提醒方法150可以容易产生并与现有任务、输入/输出设备等等一起集成,并且由于此处所描述的优点被提供,因此可预见的是,它们将易于在业界被接受。由于这些或其它原因,可预见的是,本发明的实用性和工业应用在范围和长期持续方面都将是明显的。
注意:该对照表仅作为信息目的提供。它并不是官方专利申请文件的一
部分。
对照表
10 计算机阵列
12 计算机
14 芯片
16 数据总线
18 读取线
20 写入线
22 数据线
24 RAM
26 ROM
28 返回堆栈
28a 循环寄存器阵列
29R 寄存器
30 指令区域
30a 指令寄存器
30b 操作码寄存器
32 ALU
34 数据堆栈
34a 循环寄存器阵列
36 解码部分
38 内部通信端口
38a 上端口
38b 右端口
38c 左端口
38d 下端口
39 外部I/O端口
40 寄存器
40a A寄存器
40b B寄存器
40c P寄存器
42 时段定序器
44 T寄存器
46 S寄存器
48 指令字
50 比特
52 指令
54 时段
54a 时段0
54b 时段1
54c 时段2
54d 时段3
56 反相器
58 NAND门
60 OR门
62 第一OR门输入
64 第二OR门输入
66 i4比特
68 时段定序器输出
70 脉冲生成器
72 确认线
80 接口电路
82 外部设备
100 微循环
102 FOR指令
104 NEXT指令
106 操作指令
108 MICRO-NEXT指令
120 直接执行方法
122 “取出字”操作
124 “地址?”判断操作
126 “从存储器取出”操作
128 “从端口取出”操作
130 “取回指令字”操作
132 “执行指令字”操作
134 “跳转?”判断操作
136 “载入P寄存器”操作
138 “端口地址?”判断操作
140 “递增P寄存器”操作
150 计算机提醒方法
150a 计算机提醒方法
152 “进入警醒状态”操作
154 “唤醒”操作
156 “作用于输入”操作
158 “发送信息?”判断操作
160 “发送至其它”操作
162 “执行主要功能”操作
166 “寻找输入”操作
168 “输入”判断操作
170 “从其它接收”操作
172 “作用于输入”操作
Claims (24)
1、在计算机中,一种改进包括:
多条指令,其通常被同时读取;其中
所述多条指令被重复一定的迭代数,该迭代数由堆栈上的数值所指示。
2、如权利要求1所述的计算机,其中:
所述堆栈上的数值在每次迭代之后递减。
3、如权利要求1所述的计算机,其中:
所述多条指令中的最后指令是NEXT指令。
4、如权利要求3所述的计算机,其中:
所述NEXT指令使所述堆栈上的数值改变,并进一步使所述计算机的操作在所述多条指令中的第一条指令处继续,直到所述堆栈上的数值达到预定值。
5、如权利要求1所述的计算机,其中:
当NEXT指令是所述多条指令中的最后指令时,所述计算机将在所述多条指令中的第一条指令处继续操作,直到所述堆栈上的数值达到预定值。
6、如权利要求5所述的计算机,其中:
所述预定值是零。
7、如权利要求1所述的计算机,进一步包括:
所述多条指令之前的FOR指令。
8、如权利要求7所述的计算机,其中:
所述FOR指令使所述数值置于所述堆栈上。
9、如权利要求7所述的计算机,其中:
所述FOR指令位于恰在所述多条指令之前的一指令组中。
10、一种使计算机执行循环的方法,包括:
(a)配置所述计算机,以便当NEXT指令作为一指令组中的最后指令出现时,所述计算机将所述NEXT指令之后依次执行所述整个指令组若干次,该次数由计数器指示;
(b)将所述NEXT指令设置在所述指令组中的最后位置中;以及
(c)将FOR指令设置在所述指令组之前,其中所述FOR指令设定所述计数器;其中
所述指令组作为单个单元一般由所述计算机同时读取。
11、如权利要求10所述的方法,其中:
所述指令组包括四条指令。
12、如权利要求10所述的方法,其中:
所述指令组中的至少一条所述指令是NO-OP指令,其中所述NO-OP指令是所述计算机将跳过而不执行的位置标志符。
13、如权利要求10所述的方法,其中:
所述计数器是堆栈顶部上的值。
14、如权利要求10所述的方法,其中:
所述NEXT指令使所述计数器改变。
15、如权利要求10所述的方法,其中:
所述NEXT指令使所述计数器递减。
16、一种计算机可读介质,其中具有用于使电子设备执行权利要求10中的所述步骤的代码。
17、一种用于执行计算机中的指令的方法,包括:
(a)在寄存器中设置一数值;
(b)取出一指令组;
(c)依次执行所述指令组中的所述指令;
(d)使所述寄存器中的数值改变;以及
(e)重复所述步骤(c)和(d),直到所述寄存器中的数值达到预定值。
18、如权利要求17所述的方法,进一步包括:
取出另一指令组;以及
继续所述另一指令组中的第一条指令。
19、如权利要求17所述的方法,其中:
在所述步骤(b)中,所述指令组被取出到指令寄存器之中;以及
在所述步骤(c)中,所述指令从所述指令寄存器执行。
20、如权利要求17所述的方法,其中:
在所述步骤(b)中,所述指令组中的所述指令通常被同时取出。
21、如权利要求17所述的方法,其中:
所述寄存器是堆栈中的顶部元件。
22、如权利要求17所述的方法,其中:
在所述步骤(c)中,所述数值递减。
23、一种计算机可读介质,其中具有用于使电子设备执行权利要求17中的所述步骤的代码。
24、一种计算机,包括:
通常用于同时读取多条指令的装置,和
用于重复所述多条指令一定迭代数的装置。
Applications Claiming Priority (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/441,784 | 2005-05-26 | ||
US11/355,513 US7904695B2 (en) | 2006-02-16 | 2006-02-16 | Asynchronous power saving computer |
US11/355,495 | 2006-02-16 | ||
US11/355,513 | 2006-02-16 | ||
US60/788,265 | 2006-03-31 | ||
US60/797,345 | 2006-05-03 | ||
US11/441,812 | 2006-05-26 | ||
US11/441,818 | 2006-05-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101366003A true CN101366003A (zh) | 2009-02-11 |
Family
ID=38370171
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007800000160A Pending CN101563679A (zh) | 2006-02-16 | 2007-02-16 | 用于监控计算机的输入的方法和装置 |
CNA2007800000137A Pending CN101479714A (zh) | 2006-02-16 | 2007-02-16 | 来自输入源的指令的直接执行 |
CNA200780000018XA Pending CN101454755A (zh) | 2005-05-26 | 2007-02-16 | 具有提高的操作效率的计算机系统 |
CNA2007800000156A Pending CN101366003A (zh) | 2006-02-16 | 2007-02-16 | 微循环计算机指令 |
Family Applications Before (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007800000160A Pending CN101563679A (zh) | 2006-02-16 | 2007-02-16 | 用于监控计算机的输入的方法和装置 |
CNA2007800000137A Pending CN101479714A (zh) | 2006-02-16 | 2007-02-16 | 来自输入源的指令的直接执行 |
CNA200780000018XA Pending CN101454755A (zh) | 2005-05-26 | 2007-02-16 | 具有提高的操作效率的计算机系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7904695B2 (zh) |
CN (4) | CN101563679A (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7937557B2 (en) * | 2004-03-16 | 2011-05-03 | Vns Portfolio Llc | System and method for intercommunication between computers in an array |
US7966481B2 (en) | 2006-02-16 | 2011-06-21 | Vns Portfolio Llc | Computer system and method for executing port communications without interrupting the receiving computer |
US7904615B2 (en) | 2006-02-16 | 2011-03-08 | Vns Portfolio Llc | Asynchronous computer communication |
JP2010114483A (ja) * | 2008-11-04 | 2010-05-20 | Renesas Technology Corp | 通信装置及び通信システム |
KR101738641B1 (ko) | 2010-12-17 | 2017-05-23 | 삼성전자주식회사 | 멀티 코어 시스템의 프로그램 컴파일 장치 및 방법 |
CN102650981A (zh) * | 2011-02-25 | 2012-08-29 | 西安邮电学院 | 可编程操作级并行单元之间的同步结构 |
US10216253B2 (en) | 2013-03-28 | 2019-02-26 | Via Technologies, Inc. | Universal serial bus hub and control method thereof |
TWI613546B (zh) * | 2013-03-28 | 2018-02-01 | 威盛電子股份有限公司 | 通用序列匯流排集線器及其控制方法 |
CN109388606A (zh) * | 2018-09-27 | 2019-02-26 | 浙江大学 | 一种芯片内可重构的串行总线控制器 |
CN110457072A (zh) * | 2019-06-25 | 2019-11-15 | 珠海格力电器股份有限公司 | 防止系统挂死的方法、装置、设备及计算机可读介质 |
CN111353752B (zh) * | 2019-11-05 | 2024-04-19 | 泰康保险集团股份有限公司 | 流程处理方法及装置、电子设备、存储介质 |
Family Cites Families (162)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3868677A (en) * | 1972-06-21 | 1975-02-25 | Gen Electric | Phase-locked voltage-to-digital converter |
US4215422A (en) * | 1978-05-22 | 1980-07-29 | International Business Machines Corporation | Selectively modifiable phrase storage for a typewriter |
US4215401A (en) * | 1978-09-28 | 1980-07-29 | Environmental Research Institute Of Michigan | Cellular digital array processor |
US4593351A (en) * | 1981-06-12 | 1986-06-03 | International Business Machines Corporation | High speed machine for the physical design of very large scale integrated circuits |
US4462074A (en) * | 1981-11-19 | 1984-07-24 | Codex Corporation | Do loop circuit |
EP0113275B1 (en) * | 1982-12-17 | 1989-03-01 | Victor Company Of Japan, Limited | Spectrum display device for audio signals |
US4739474A (en) | 1983-03-10 | 1988-04-19 | Martin Marietta Corporation | Geometric-arithmetic parallel processor |
US4821231A (en) * | 1983-04-18 | 1989-04-11 | Motorola, Inc. | Method and apparatus for selectively evaluating an effective address for a coprocessor |
US4589067A (en) * | 1983-05-27 | 1986-05-13 | Analogic Corporation | Full floating point vector processor with dynamically configurable multifunction pipelined ALU |
US4672331A (en) * | 1983-06-21 | 1987-06-09 | Cushing Vincent J | Signal conditioner for electromagnetic flowmeter |
US4591980A (en) | 1984-02-16 | 1986-05-27 | Xerox Corporation | Adaptive self-repairing processor array |
JPH0731603B2 (ja) * | 1984-11-21 | 1995-04-10 | ノビツクス | Forth特定言語マイクロプロセサ |
US4984151A (en) * | 1985-03-01 | 1991-01-08 | Advanced Micro Devices, Inc. | Flexible, next-address generation microprogram sequencer |
US4742511A (en) * | 1985-06-13 | 1988-05-03 | Texas Instruments Incorporated | Method and apparatus for routing packets in a multinode computer interconnect network |
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 |
US4789927A (en) | 1986-04-07 | 1988-12-06 | Silicon Graphics, Inc. | Interleaved pipeline parallel processing architecture |
US4868745A (en) | 1986-05-30 | 1989-09-19 | Hewlett-Packard Company | Data processing system and method for the direct and indirect execution of uniformly structured object types |
US4943909A (en) | 1987-07-08 | 1990-07-24 | At&T Bell Laboratories | Computational origami |
US5222237A (en) | 1988-02-02 | 1993-06-22 | Thinking Machines Corporation | Apparatus for aligning the operation of a plurality of processors |
US5029124A (en) * | 1988-05-17 | 1991-07-02 | Digital Equipment Corporation | Method and apparatus for providing high speed parallel transfer of bursts of data |
US4961167A (en) * | 1988-08-26 | 1990-10-02 | Mitsubishi Denki Kabushiki Kaisha | Substrate bias generator in a dynamic random access memory with auto/self refresh functions and a method of generating a substrate bias therein |
DE3901457A1 (de) * | 1989-01-19 | 1990-08-02 | Strahlen Umweltforsch Gmbh | Verfahren zur adressbereichsueberwachung bei datenverarbeitungsgeraeten in echtzeit |
EP0428770B1 (de) * | 1989-11-21 | 1995-02-01 | Deutsche ITT Industries GmbH | Datengesteuerter Arrayprozessor |
US5396635A (en) * | 1990-06-01 | 1995-03-07 | Vadem Corporation | Power conservation apparatus having multiple power reduction levels dependent upon the activity of the computer system |
JP2543306Y2 (ja) | 1990-06-12 | 1997-08-06 | 市光工業株式会社 | 車両用前照灯の直射型光学系 |
DE4019040A1 (de) * | 1990-06-14 | 1991-12-19 | Philips Patentverwaltung | Multirechnersystem |
US5390304A (en) * | 1990-09-28 | 1995-02-14 | Texas Instruments, Incorporated | Method and apparatus for processing block instructions in a data processor |
US5590345A (en) * | 1990-11-13 | 1996-12-31 | International Business Machines Corporation | Advanced parallel array processor(APAP) |
US5765015A (en) * | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Slide network for an array processor |
JP3190080B2 (ja) | 1990-11-30 | 2001-07-16 | 株式会社東芝 | サンプリング周波数変換装置 |
US5434989A (en) * | 1991-02-19 | 1995-07-18 | Matsushita Electric Industrial Co., Ltd. | Cache memory for efficient access with address selectors |
US5218682A (en) * | 1991-05-10 | 1993-06-08 | Chrysler Corporation | Two-way handshake circuit and method for communication between processors |
JPH04367936A (ja) * | 1991-06-17 | 1992-12-21 | Mitsubishi Electric Corp | スーパースカラープロセッサ |
EP0519348B1 (en) * | 1991-06-19 | 1999-07-28 | Hewlett-Packard Company | Co-processor supporting architecture adapted to a processor which does not natively support co-processing |
CA2078315A1 (en) * | 1991-09-20 | 1993-03-21 | Christopher L. Reeve | Parallel processing apparatus and method for utilizing tiling |
CA2073516A1 (en) | 1991-11-27 | 1993-05-28 | Peter Michael Kogge | Dynamic multi-mode parallel processor array architecture computer system |
US5386585A (en) * | 1993-02-03 | 1995-01-31 | Intel Corporation | Self-timed data pipeline apparatus using asynchronous stages having toggle flip-flops |
US5473271A (en) * | 1993-02-09 | 1995-12-05 | Dallas Semiconductor Corporation | Microprocessor output driver |
US5937202A (en) | 1993-02-11 | 1999-08-10 | 3-D Computing, Inc. | High-speed, parallel, processor architecture for front-end electronics, based on a single type of ASIC, and method use thereof |
JPH0713945A (ja) | 1993-06-16 | 1995-01-17 | Nippon Sheet Glass Co Ltd | 演算処理部および制御・記憶部分離型マルチプロセッサ ・システムのバス構造 |
CA2129882A1 (en) * | 1993-08-12 | 1995-02-13 | Soheil Shams | Dynamically reconfigurable interprocessor communication network for simd multiprocessors and apparatus implementing same |
US5535417A (en) * | 1993-09-27 | 1996-07-09 | Hitachi America, Inc. | On-chip DMA controller with host computer interface employing boot sequencing and address generation schemes |
US5583990A (en) * | 1993-12-10 | 1996-12-10 | Cray Research, Inc. | System for allocating messages between virtual channels to avoid deadlock and to optimize the amount of message traffic on each type of virtual channel |
US5893148A (en) * | 1994-03-03 | 1999-04-06 | International Business Machines Corporation | System and method for allocating cache memory storage space |
JP3212213B2 (ja) | 1994-03-16 | 2001-09-25 | 株式会社日立製作所 | データ処理装置 |
JP3308770B2 (ja) * | 1994-07-22 | 2002-07-29 | 三菱電機株式会社 | 情報処理装置および情報処理装置における計算方法 |
US5630154A (en) * | 1994-10-11 | 1997-05-13 | Hughes Aircraft Company | Programmable systolic array system arranged in a found arrangement for passing data through programmable number of cells in a time interleaved manner |
US5706491A (en) * | 1994-10-18 | 1998-01-06 | Cyrix Corporation | Branch processing unit with a return stack including repair using pointers from different pipe stages |
JP3647069B2 (ja) * | 1994-11-11 | 2005-05-11 | キヤノン株式会社 | デジタル信号再生装置 |
US5680597A (en) | 1995-01-26 | 1997-10-21 | International Business Machines Corporation | System with flexible local control for modifying same instruction partially in different processor of a SIMD computer system to execute dissimilar sequences of instructions |
GB2299422B (en) | 1995-03-30 | 2000-01-12 | Sony Uk Ltd | Object code allocation in multiple processor systems |
US5727194A (en) * | 1995-06-07 | 1998-03-10 | Hitachi America, Ltd. | Repeat-bit based, compact system and method for implementing zero-overhead loops |
US5870591A (en) | 1995-08-11 | 1999-02-09 | Fujitsu Limited | A/D with digital PLL |
US5550489A (en) * | 1995-09-29 | 1996-08-27 | Quantum Corporation | Secondary clock source for low power, fast response clocking |
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 |
US5752259A (en) * | 1996-03-26 | 1998-05-12 | Advanced Micro Devices, Inc. | Instruction cache configured to provide instructions to a microprocessor having a clock cycle time less than a cache access time of said instruction cache |
US6567564B1 (en) * | 1996-04-17 | 2003-05-20 | Sarnoff Corporation | Pipelined pyramid processor for image processing systems |
US6130602A (en) * | 1996-05-13 | 2000-10-10 | Micron Technology, Inc. | Radio frequency data communications device |
US6192388B1 (en) * | 1996-06-20 | 2001-02-20 | Avid Technology, Inc. | Detecting available computers to participate in computationally complex distributed processing problem |
US5818289A (en) * | 1996-07-18 | 1998-10-06 | Micron Technology, Inc. | Clocking scheme and charge transfer switch for increasing the efficiency of a charge pump or other circuit |
US5911082A (en) * | 1997-02-25 | 1999-06-08 | Audio Digitalimaging Inc. | Parallel processing building block chip |
GB9704068D0 (en) * | 1997-02-27 | 1997-04-16 | Sgs Thomson Microelectronics | Trigger sequencing controller |
US6023753A (en) * | 1997-06-30 | 2000-02-08 | Billion Of Operations Per Second, Inc. | Manifold array processor |
US6381682B2 (en) * | 1998-06-10 | 2002-04-30 | Compaq Information Technologies Group, L.P. | Method and apparatus for dynamically sharing memory in a multiprocessor system |
US6173389B1 (en) * | 1997-12-04 | 2001-01-09 | Billions Of Operations Per Second, Inc. | Methods and apparatus for dynamic very long instruction word sub-instruction selection for execution time parallelism in an indirect very long instruction word processor |
KR100252136B1 (ko) * | 1997-12-29 | 2000-04-15 | 윤종용 | 디지털 신호 처리 칩에서의 반복 구문 실행 제어회로 |
US6057791A (en) * | 1998-02-18 | 2000-05-02 | Oasis Design, Inc. | Apparatus and method for clocking digital and analog circuits on a common substrate to enhance digital operation and reduce analog sampling error |
US6236645B1 (en) * | 1998-03-09 | 2001-05-22 | Broadcom Corporation | Apparatus for, and method of, reducing noise in a communications system |
US7072330B2 (en) * | 1998-04-03 | 2006-07-04 | Consolidated Ip Holdings, Inc. | Systems for voice and data communications having TDM and packet buses and telephony station cards including voltage generators |
US6404274B1 (en) * | 1998-04-09 | 2002-06-11 | Kabushiki Kaisha Toshiba | Internal voltage generating circuit capable of generating variable multi-level voltages |
US6219783B1 (en) * | 1998-04-21 | 2001-04-17 | Idea Corporation | Method and apparatus for executing a flush RS instruction to synchronize a register stack with instructions executed by a processor |
US7028163B2 (en) * | 1998-06-22 | 2006-04-11 | Samsung Electronics, Co., Ltd. | Apparatus for controlling multi-word stack operations using a multi-bank stack in digital data processors |
US6081215A (en) * | 1998-07-06 | 2000-06-27 | Motorola, Inc. | High speed interlaced analog interface |
US6353880B1 (en) * | 1998-07-22 | 2002-03-05 | Scenix Semiconductor, Inc. | Four stage pipeline processing for a microcontroller |
US6128678A (en) * | 1998-08-28 | 2000-10-03 | Theseus Logic, Inc. | FIFO using asynchronous logic to interface between clocked logic circuits |
US20020152060A1 (en) * | 1998-08-31 | 2002-10-17 | Tseng Ping-Sheng | Inter-chip communication system |
US6219685B1 (en) * | 1998-09-04 | 2001-04-17 | Intel Corporation | Method to detect IEEE overflow and underflow conditions |
JP3344345B2 (ja) | 1998-12-15 | 2002-11-11 | 日本電気株式会社 | 共有メモリ型ベクトル処理システムとその制御方法及びベクトル処理の制御プログラムを格納する記憶媒体 |
US6507649B1 (en) * | 1998-12-18 | 2003-01-14 | Ericsson Inc. | Mechanism and method for distributing ISUP stacks over multiple loosely coupled processors |
US6857013B2 (en) * | 1999-01-29 | 2005-02-15 | Intermec Ip.Corp. | Remote anomaly diagnosis and reconfiguration of an automatic data collection device platform over a telecommunications network |
FR2789501B1 (fr) * | 1999-02-09 | 2001-04-13 | St Microelectronics Sa | Procede et dispositif de reduction de la consommation d'un microcontroleur |
US6232905B1 (en) * | 1999-03-08 | 2001-05-15 | Agere Systems Guardian Corp. | Clocking technique for reducing sampling noise in an analog-to-digital converter |
US6966002B1 (en) | 1999-04-30 | 2005-11-15 | Trymedia Systems, Inc. | Methods and apparatus for secure distribution of software |
US6094030A (en) | 1999-05-13 | 2000-07-25 | Deltatee Enterprises Ltd. | Resistance and charging monitor within a standby battery bank |
JP2000357391A (ja) * | 1999-06-14 | 2000-12-26 | Fujitsu Ltd | 半導体集積回路 |
US6507947B1 (en) * | 1999-08-20 | 2003-01-14 | Hewlett-Packard Company | Programmatic synthesis of processor element arrays |
US6560716B1 (en) * | 1999-11-10 | 2003-05-06 | Lsi Logic Corporation | System for measuring delay of digital signal using clock generator and delay unit wherein a set of digital elements of clock generator identical to a set of digital elements of delay unit |
US6647027B1 (en) * | 1999-11-10 | 2003-11-11 | Lsi Logic Corporation | Method and apparatus for multi-channel data delay equalization |
US6778966B2 (en) * | 1999-11-29 | 2004-08-17 | Syfx | Segmented mapping converter system and method |
US6502141B1 (en) | 1999-12-14 | 2002-12-31 | International Business Machines Corporation | Method and system for approximate, monotonic time synchronization for a multiple node NUMA system |
US6937538B2 (en) * | 2000-02-02 | 2005-08-30 | Broadcom Corporation | Asynchronously resettable decoder for a semiconductor memory |
US6965991B1 (en) | 2000-05-12 | 2005-11-15 | Pts Corporation | Methods and apparatus for power control in a scalable array of processor elements |
US6725361B1 (en) * | 2000-06-16 | 2004-04-20 | Transmeta Corporation | Method and apparatus for emulating a floating point stack in a translation process |
JP2002049605A (ja) * | 2000-08-02 | 2002-02-15 | Fujitsu Ltd | タイマ調整システム |
US6912626B1 (en) * | 2000-08-31 | 2005-06-28 | Micron Technology, Inc. | Method and apparatus for connecting a massively parallel processor array to a memory array in a bit serial manner |
US6388600B1 (en) * | 2000-11-13 | 2002-05-14 | Trw Inc. | Asynchronous superconductor serial multiply-accumulator |
US6732253B1 (en) * | 2000-11-13 | 2004-05-04 | Chipwrights Design, Inc. | Loop handling for single instruction multiple datapath processor architectures |
JP4560205B2 (ja) * | 2000-12-18 | 2010-10-13 | キヤノン株式会社 | A/d変換器及びそれを用いた固体撮像装置 |
DE10102202A1 (de) * | 2001-01-18 | 2002-08-08 | Infineon Technologies Ag | Mikroprozessorschaltung für tragbare Datenträger |
US6993669B2 (en) * | 2001-04-18 | 2006-01-31 | Gallitzin Allegheny Llc | Low power clocking systems and methods |
WO2002091582A1 (en) | 2001-05-03 | 2002-11-14 | Coreoptics, Inc. | Amplitude detection for controlling the decision instant for sampling as a data flow |
US20060248360A1 (en) | 2001-05-18 | 2006-11-02 | Fung Henry T | Multi-server and multi-CPU power management system and method |
US6898721B2 (en) * | 2001-06-22 | 2005-05-24 | Gallitzin Allegheny Llc | Clock generation systems and methods |
JP2003016051A (ja) * | 2001-06-29 | 2003-01-17 | Nec Corp | 複素ベクトル演算プロセッサ |
US20030005168A1 (en) * | 2001-06-29 | 2003-01-02 | Leerssen Scott Alan | System and method for auditing system call events with system call wrappers |
US6874079B2 (en) * | 2001-07-25 | 2005-03-29 | Quicksilver Technology | Adaptive computing engine with dataflow graph based sequencing in reconfigurable mini-matrices of composite functional blocks |
US7249357B2 (en) | 2001-08-20 | 2007-07-24 | Silicon Graphics, Inc. | Transparent distribution and execution of data in a multiprocessor environment |
CN100397331C (zh) * | 2001-09-07 | 2008-06-25 | Ip菲力股份有限公司 | 数据处理系统以及控制方法 |
US6411152B1 (en) * | 2001-09-24 | 2002-06-25 | Broadcom Corporation | Conditional clock buffer circuit |
US6970895B2 (en) | 2001-10-01 | 2005-11-29 | Koninklijke Philips Electronics N.V. | Programmable delay indexed data path register file for array processing |
JP3656587B2 (ja) * | 2001-10-01 | 2005-06-08 | 日本電気株式会社 | 並列演算プロセッサ、その演算制御方法及びプログラム |
US6636122B2 (en) | 2001-10-09 | 2003-10-21 | Zilog, Inc. | Analog frequency locked loop with digital oversampling feedback control and filter |
US6522282B1 (en) * | 2001-11-07 | 2003-02-18 | Telefonaktiebolaget Lm Ericsson (Publ) | Estimation of timing offsets in parallel A/D converters |
US6845412B1 (en) * | 2001-11-07 | 2005-01-18 | Lsi Logic Corporation | Method and system for a host processor to broadcast data to instruction or data memories of several processors in a multi-processor integrated circuit |
US6920545B2 (en) | 2002-01-17 | 2005-07-19 | Raytheon Company | Reconfigurable processor with alternately interconnected arithmetic and memory nodes of crossbar switched cluster |
US7158141B2 (en) * | 2002-01-17 | 2007-01-02 | University Of Washington | Programmable 3D graphics pipeline for multimedia applications |
US20030179123A1 (en) | 2002-03-22 | 2003-09-25 | Devilbiss Alan D. | Analog-to-digital conversion using a counter |
US7254520B2 (en) | 2002-05-14 | 2007-08-07 | Analysis And Measurement Services Corporation | Testing of wire systems and end devices installed in industrial processes |
US7089438B2 (en) | 2002-06-25 | 2006-08-08 | Micron Technology, Inc. | Circuit, system and method for selectively turning off internal clock drivers |
JP3509023B2 (ja) * | 2002-06-26 | 2004-03-22 | 沖電気工業株式会社 | ループ制御回路及びループ制御方法 |
US7415594B2 (en) * | 2002-06-26 | 2008-08-19 | Coherent Logix, Incorporated | Processing system with interspersed stall propagating processors and communication elements |
US7471643B2 (en) | 2002-07-01 | 2008-12-30 | Panasonic Corporation | Loosely-biased heterogeneous reconfigurable arrays |
JP3987784B2 (ja) * | 2002-10-30 | 2007-10-10 | Necエレクトロニクス株式会社 | アレイ型プロセッサ |
US6891355B2 (en) | 2002-11-14 | 2005-05-10 | Fyre Storm, Inc. | Method for computing an amount of energy taken from a battery |
US7365661B2 (en) * | 2002-11-14 | 2008-04-29 | Fyre Storm, Inc. | Power converter circuitry and method |
US7353501B2 (en) * | 2002-11-18 | 2008-04-01 | Microsoft Corporation | Generic wrapper scheme |
US7131113B2 (en) | 2002-12-12 | 2006-10-31 | International Business Machines Corporation | System and method on generating multi-dimensional trace files and visualizing them using multiple Gantt charts |
SE525470C2 (sv) | 2003-01-15 | 2005-03-01 | Infineon Technologies Ag | Metod och anordning för att uppskatta tidsfel i ett system med tidssammanflätade A/D omvandlare |
US7673118B2 (en) | 2003-02-12 | 2010-03-02 | Swarztrauber Paul N | System and method for vector-parallel multiprocessor communication |
US7613900B2 (en) * | 2003-03-31 | 2009-11-03 | Stretch, Inc. | Systems and methods for selecting input/output configuration in an integrated circuit |
US7581081B2 (en) | 2003-03-31 | 2009-08-25 | Stretch, Inc. | Systems and methods for software extensible multi-processing |
GB2400198B (en) | 2003-04-04 | 2006-04-05 | Advanced Risc Mach Ltd | Controlling execution of a block of program instructions within a computer processing system |
US7574581B2 (en) | 2003-04-28 | 2009-08-11 | International Business Machines Corporation | Cross-chip communication mechanism in distributed node topology to access free-running scan registers in clock-controlled components |
US7162573B2 (en) * | 2003-06-25 | 2007-01-09 | Intel Corporation | Communication registers for processing elements |
JP4423953B2 (ja) * | 2003-07-09 | 2010-03-03 | 株式会社日立製作所 | 半導体集積回路 |
US7170315B2 (en) | 2003-07-31 | 2007-01-30 | Actel Corporation | Programmable system on a chip |
US7257560B2 (en) * | 2003-07-31 | 2007-08-14 | Cisco Technology, Inc. | Cost minimization of services provided by multiple service providers |
US7157934B2 (en) * | 2003-08-19 | 2007-01-02 | Cornell Research Foundation, Inc. | Programmable asynchronous pipeline arrays |
JP2005217837A (ja) * | 2004-01-30 | 2005-08-11 | Sony Corp | サンプリングレート変換装置およびその方法、並びに、オーディオ装置 |
US7418144B2 (en) | 2004-03-03 | 2008-08-26 | Her Majesty The Queen In Right Of Canada, As Represented By The Minister Of Industry, Through The Communications Research Centre Canada | Curved wavelet transform for image and video compression |
US7937557B2 (en) | 2004-03-16 | 2011-05-03 | Vns Portfolio Llc | System and method for intercommunication between computers in an array |
US20050206648A1 (en) | 2004-03-16 | 2005-09-22 | Perry Ronald N | Pipeline and cache for processing data progressively |
US7255476B2 (en) * | 2004-04-14 | 2007-08-14 | International Business Machines Corporation | On chip temperature measuring and monitoring circuit and method |
US20050262278A1 (en) | 2004-05-20 | 2005-11-24 | Schmidt Dominik J | Integrated circuit with a plurality of host processor family types |
US7502240B2 (en) | 2004-07-27 | 2009-03-10 | Silicon Laboratories Inc. | Distributed power supply system with separate SYNC control for controlling remote digital DC/DC converters |
US7392366B2 (en) * | 2004-09-17 | 2008-06-24 | International Business Machines Corp. | Adaptive fetch gating in multithreaded processors, fetch control and method of controlling fetches |
DE102004049161B4 (de) * | 2004-10-08 | 2009-10-29 | Infineon Technologies Ag | Zeitversetzt arbeitender Analog-Digital-Wandler |
US7265640B1 (en) * | 2004-12-23 | 2007-09-04 | Xilinx, Inc. | Circuit approach for common mode control in high-frequency clocks |
US7774784B2 (en) | 2005-03-17 | 2010-08-10 | Microsoft Corporation | Determining an actual amount of time a processor consumes in executing a portion of code |
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 |
US7409570B2 (en) * | 2005-05-10 | 2008-08-05 | Sony Computer Entertainment Inc. | Multiprocessor system for decrypting and resuming execution of an executing program after transferring the program code between two processors via a shared main memory upon occurrence of predetermined condition |
US7299342B2 (en) | 2005-05-24 | 2007-11-20 | Coresonic Ab | Complex vector executing clustered SIMD micro-architecture DSP with accelerator coupled complex ALU paths each further including short multiplier/accumulator using two's complement |
US7292170B2 (en) | 2005-06-13 | 2007-11-06 | Texas Instruments Incorporated | System and method for improved time-interleaved analog-to-digital converter arrays |
US20070035611A1 (en) * | 2005-07-27 | 2007-02-15 | Chao-Hung Wu | Mobile audio/video data transmission system and method for the same |
US7403055B2 (en) * | 2005-08-31 | 2008-07-22 | Infineon Technologies Ag | Duty cycle detector with first and second oscillating signals |
US7330964B2 (en) * | 2005-11-14 | 2008-02-12 | Texas Instruments Incorporated | Microprocessor with independent SIMD loop buffer |
US7319355B2 (en) * | 2006-01-03 | 2008-01-15 | Taiwan Semiconductor Manufacturing Co., Ltd. | Pulse generator |
DE102006009644A1 (de) | 2006-01-04 | 2007-07-05 | Biotronik Crm Patent Ag | Phasenregelkreis |
US7904615B2 (en) | 2006-02-16 | 2011-03-08 | Vns Portfolio Llc | Asynchronous computer communication |
US7966481B2 (en) | 2006-02-16 | 2011-06-21 | Vns Portfolio Llc | Computer system and method for executing port communications without interrupting the receiving computer |
US7528756B2 (en) * | 2007-03-22 | 2009-05-05 | Vns Portfolio Llc | Analog-to-digital converter system with increased sampling frequency |
US7555637B2 (en) | 2007-04-27 | 2009-06-30 | Vns Portfolio Llc | Multi-port read/write operations based on register bits set for indicating select ports and transfer directions |
-
2006
- 2006-02-16 US US11/355,513 patent/US7904695B2/en not_active Expired - Fee Related
-
2007
- 2007-02-16 CN CNA2007800000160A patent/CN101563679A/zh active Pending
- 2007-02-16 CN CNA2007800000137A patent/CN101479714A/zh active Pending
- 2007-02-16 CN CNA200780000018XA patent/CN101454755A/zh active Pending
- 2007-02-16 CN CNA2007800000156A patent/CN101366003A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN101479714A (zh) | 2009-07-08 |
US20070192646A1 (en) | 2007-08-16 |
US7904695B2 (en) | 2011-03-08 |
CN101563679A (zh) | 2009-10-21 |
CN101454755A (zh) | 2009-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101366003A (zh) | 微循环计算机指令 | |
US10949328B2 (en) | Data flow graph computation using exceptions | |
US10719470B2 (en) | Reconfigurable fabric direct memory access with multiple read or write elements | |
RU2427895C2 (ru) | Оптимизированная для потоков многопроцессорная архитектура | |
CN101410823A (zh) | 异步计算机通信 | |
JPH08241291A (ja) | プロセッサ | |
US20180181503A1 (en) | Data flow computation using fifos | |
CN102279818A (zh) | 支持有限共享的向量数据访存控制方法及向量存储器 | |
US20190130291A1 (en) | Dynamic reconfiguration with partially resident agents | |
RU2644535C2 (ru) | Архитектура параллельной вычислительной системы | |
CN101313290B (zh) | 对仅m×n位外围设备执行n位写入访问的系统和方法 | |
KR20090016644A (ko) | 동작 효율성을 증가시킨 컴퓨터 시스템 | |
KR100863080B1 (ko) | 저전력형 컨피규레이션 캐시와 이를 포함하는 재구성형프로세싱 시스템 | |
KR20090017390A (ko) | 마이크로 루프 컴퓨터 명령어 | |
JPH11307725A (ja) | 半導体集積回路 | |
US20240054081A1 (en) | Controlling access to a memory shared by a cluster of multiple processing elements | |
US6708259B1 (en) | Programmable wake up of memory transfer controllers in a memory transfer engine | |
JP2006515446A (ja) | 関連アプリケーションを相互参照するカルテシアンコントローラを有するデータ処理システム | |
Ingersoll et al. | Dataflow computation with intelligent memories emulated on field-programmable gate arrays (FPGAs) | |
KR20090016643A (ko) | 비동기적 절전형 컴퓨터 | |
WO2019006119A1 (en) | COMBINING DATA IN A RECONFIGURABLE MATRIX | |
JPS58159169A (ja) | 並列処理方式 | |
Tian et al. | DDGIPS: a general image processing system in robot vision | |
JPH06274338A (ja) | 演算装置 | |
JPH01142961A (ja) | Dma制御回路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20090211 |