CN101295241A - 传送数据 - Google Patents

传送数据 Download PDF

Info

Publication number
CN101295241A
CN101295241A CNA2008100940844A CN200810094084A CN101295241A CN 101295241 A CN101295241 A CN 101295241A CN A2008100940844 A CNA2008100940844 A CN A2008100940844A CN 200810094084 A CN200810094084 A CN 200810094084A CN 101295241 A CN101295241 A CN 101295241A
Authority
CN
China
Prior art keywords
computing machine
data
register
write
instruction
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
Application number
CNA2008100940844A
Other languages
English (en)
Inventor
约翰·W·瑞博
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
VNS Portfolio LLC
Technology Properties Ltd
Original Assignee
Technology Properties Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Technology Properties Ltd filed Critical Technology Properties Ltd
Publication of CN101295241A publication Critical patent/CN101295241A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/35Indirect addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17337Direct connection machines, e.g. completely connected computers, point to point communication networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Multi Processors (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

计算机(12)具有连接到其它器件的多条数据路径(38a-d),所述其它器件可以是类似的计算机。提供具有位(110)的寄存器(40d),所述位可编程设置为对各条数据路径进行寻址,从而使该计算机可以通过所述数据路径中作为所述位并发设置的基础的若干条数据路径来进行通信。可选择地,该计算机中的若干个计算机可以串联连接(称为流水线)或以形成阵列(10)的方式连接。

Description

传送数据
技术领域
本发明总的来说涉及具有处理架构并进行指令处理的电计算机和数字处理系统,更具体地说,涉及用于对特别支持或进行数字传输操作的指令数据进行处理器的这类电计算机和数字处理系统。
背景技术
在计算领域,处理速度是非常期望的品质,并且对创造更快速的计算机和处理器的探索正在进行中。然而,行业中普遍认为,至少对于利用目前已知的技术来提高微处理器的速度而言,微处理器速度的极限正在迅速地被接近。因此,通过在处理器之间分担计算机任务来提高整体计算机速度的多处理器的使用,越来越受到关注。但是还通常认为,在工作量的分担中几乎不可避免地存在整体效率的一些下降。也就是说,所述多处理器的使用适用以下古老的谚语:仅仅由于一个人可以在60分钟内挖一个柱洞,并不必然得出60个人可以在1分钟内挖一个柱洞的结论。同样的道理几乎适用于任何任务的分工,处理器之间的任务分工也不例外。
当然,正在努力使计算机处理器之间的任务分担更加高效。正在研究和过程改进的正是如何分配任务的问题。本发明人在该领域的工作过程中观察到,在某些场合下,在多CPU环境中将数据从一个CPU传输到另一个CPU可能很麻烦。例如,如果必须将数据从一个CPU传输到另一个CPU,且目标CPU与源CPU之间被一个CPU隔开,则源CPU必须将该数据成一直线直接写入该CPU,然后,该CPU必须读取该数据,并将该数据写入目标CPU,然后目标CPU必须读取该数据。这种过程需要多次读操作和写操作,而且如果要传输大量的数据,则这么多的读命令和写命令可能会阻塞系统运行。
发明内容
相应地,本发明的目的是提供用于多端口读和写操作的系统及方法。
本发明的一方面提供一种计算机,该计算机包括:将该计算机连接到其它器件的多条数据路径;和具有位的寄存器,所述位可编程设置为对所述多条数据路径中的各条数据路径进行寻址,使得该计算机可以通过多条数据路径中作为所述位并发设置的基础的若干条数据路径来进行通信。该计算机可以是计算机阵列的一部分,并且所述其它器件中的至少一个也为该计算机阵列中的计算机。该计算机可以异步通信。
本发明的另一方面提供一种针对计算机传送数据的方法,该方法包括:(a)针对该计算机连接到其它器件的多条数据路径来对所述其它器件设法将所述数据写入该计算机的信号加以监视;(b)从所述其它器件中的首个器件读取所述数据;并且(c)基于具有可编程设置为对所述多条数据路径进行寻址的位的寄存器,将所述数据写入所述其它器件中的一个器件。该计算机可以是计算机阵列的一部分,并且所述其它器件中的至少一个器件也为该计算机阵列中的计算机。该计算机可以异步通信。
简言之,本发明的一个优选实施例是一计算机,该计算机具有将该计算机连接到其它器件的多条数据路径,所述其它器件通常但不一定是其它计算机。该计算机中的寄存器具有位,所述位可编程为对所述数据路径中的各条数据路径进行寻址,从而使该计算机可以通过所述数据路径中作为所述位并发设置的基础的若干条数据路径来进行通信。
简言之,本发明的另一优选实施例是一种针对计算机传送数据的方法。针对该计算机连接到其它器件的多条数据路径来对所述其它器件设法将数据写入该计算机的信号加以监视。然后,从所述其它器件中的首个器件读取数据。并且,基于具有可编程为对多条数据路径进行寻址的位的寄存器,将该数据写入另一器件。
本发明实施例的优势在于它提高了在多处理器之间的数据传输的速度,特别是当处理器被排列为多维阵列,且各处理器具有至少三条路径可以读或写数据。
本发明实施例的另一优势在于它通过在处理器之间分担任务,使多处理器的使用更为容易,从而提高了整体计算速度。
本发明实施例的又一优势在于它特别适合于被异步通信的处理器使用。
本发明实施例的再一优势在于是它在多处理器之间分担任务时减少了开销。
本发明还提供了一种计算机程序,当该计算机程序在合适的计算机上运行时,使该计算机实施根据所述本发明的另一方面的方法。该程序可以是位于载体上,所述载体可以是存贮介质或信号。该存贮介质可以是记录介质或其它例子中的存储设备。
鉴于实施本发明如这里所述的和在附图的图中所示的目前已知是实施本发明的最佳模式以及优选实施例的工业实用性的描述,本发明实施例的这些及其它目的和优势将对本领域技术人员来说将变得明显。
附图说明
本发明实施例的意图和优势将从以下结合附图的详细描述中变得明显,在附图中:
图1为根据本发明的计算机阵列的概略图;
图2为示出图1的计算机的子集的详细图及图1的互连数据总线的更详细视图;
图3为描绘图1和图2的计算机中一个计算机的一般布局的框图;
图4为可在图1和图2的计算机中使用的指令字的概略图;
图5为图3的时间片定序器的示意图;
图6为描绘根据本发明的一种方法的例子的流程图;
图7为示出用于讨论根据本发明示例性实施例的图1和图2中计算机阵列一部分的详细图;
图8a-f为示出可在图7的部分中的计算机中使用的端口地址解码的概观的表格;
图9为描绘图7和图8d-f所示的多写方法如何具体地与在单指令字中包括多条指令的能力相结合的示意性框图;
在附图中的各幅图中,相同的附图标记用于表示相同的或相似的元件或步骤。
具体实施方式
虽然根据用于实现目的的模式对本发明的实施例进行描述,但是本领域技术人员将认知到鉴于这些启示并未脱离本发明的精神或范围,因此可以实现变体。
这里所描述的和/或在附图中所示的本发明的实施例及其变体仅以示例方式给出,并不限定本发明的范围。除非以其它方式具体说明,本发明的独立方面和部件可以被省略或修改,或可以具有因此被替代的等价物,或可以具有还未知的替代品,例如可能在未来开发的,或例如可能在未来被发现是可接受的替代品的。由于潜在应用的范围很大,且由于本发明意在适应很多这样的变体,因此只要保持在所要求的发明的精神和范围之内,本发明还可以针对各种各样的应用而被修改。
本发明的优选实施例是用于多端口读和写操作的系统及方法。如这里的多个附图所示出的,尤其是在图7的视图中所示出的,由一般附图标记100来表示本发明的优选实施例。
作为本发明的场景和基础,首先给出异步计算机通信的详细例子。为此,图1中的概略图中描绘一计算机阵列,该计算机阵列在此由一般附图标记10来指代。计算机阵列10具有多个(在示出的例子中是24个)计算机12(在阵列的例子中有时也称作“核”或“节点”)。在示出的例子中,所有的计算机12都位于单个电路小片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这样的内部计算机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、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均设置为高或同时将它们的两条写线20均设置为高。然而,目前预计到,将存在以下时机:期望将读线18的不同组合设置为高,从而使一个计算机12可以处于等待来自选中计算机12中的首个计算机的数据来将该首个计算机的对应写线20设置为高的等待状态。
在以上讨论的例子中,计算机12e被描述为在相邻的计算机(选自计算机12a、12b、12c或12d中的一个以上计算机)将该相邻计算机的写线20设置为高之前,计算机12e将该计算机12e的读线18中的一条以上读线设置为高。然而,该过程当然也可以以相反的次序发生。例如,如果计算机12e正尝试向计算机12a写,那么计算机12e会将计算机12e和计算机12a之间的写线20设置为高。如果计算机12e和计算机12a之间的读线18还没有被计算机12a设置为高,则计算机12e会简单地等待,直到计算机12a将该读线18设置为高为止。然后,如上所讨论的,当读线18与写线20的对应对均为高时,等待在数据线22上进行传输的数据被传输。之后,发送计算机12e一释放写线20,接收计算机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、指令区域30、算术逻辑单元(ALU 32)、数据堆栈34和用于对指令进行解码的解码逻辑段36。本领域技术人员通常应该很熟悉基于诸如本例子中的计算机12的堆栈计算机的操作。计算机12为具有数据堆栈34和分离的返回堆栈28的双堆栈计算机。
在本发明的这个实施例中,计算机12具有与相邻计算机12进行通信的四个通信端口38。通信端口38为三态驱动器,具有关闭状态、接收状态(用于驱动信号使其进入计算机12)和发送状态(驱动信号使其离开计算机12)。当然,如果特定计算机12不在诸如计算机12e的例子的阵列(图1)内部,那么至少出于这里所述的意图,一个以上通信端口38不会被那个特定计算机使用。指令区域30包括若干寄存器40,在本例子中,寄存器40包括A寄存器40a、B寄存器40b、P寄存器40c以及I/O控制和状态寄存器(IOCS寄存器40d)。在本例子中,A寄存器40a和IOCS寄存器40d为全18位寄存器,而B寄存器40b和P寄存器40c为9位寄存器。
尽管本发明并不限于该例子,但是本计算机12被实施为执行本机Forth语言指令。如熟悉Forth计算机语言的人将认知的,复杂Forth指令,即通常所说的Forth“字”是根据设计在计算机中的本机处理器指令所构建的。在其它语言中,这可能为通常所说的“库”。如下文将更详细描述的,计算机12在一个时段从RAM 24、ROM 26或直接从一条数据总线16(图2)读取十八位。然而,由于Forth中的大多数指令(即通常所说的无操作数指令)直接从堆栈28和34中得到它们的操作数,因此它们的长度通常仅为5位,使得在单个十八位指令字中可以包含多达四条指令,条件是该组指令的最后一条指令选自仅需三位的指令的有界集。在该实施例中,数据堆栈34顶部的两个寄存器是T寄存器44和S寄存器46。在图3的视图中以框图的形式描绘的还有时间片定序器42(稍后详细讨论)。
图4为指令字48的概略图。(应该注意指令字48实际上可以包含指令、数据,或包含指令和数据的一些组合。)指令字48由十八位50组成。作为二进制计算机,各位50将为“1”或“0”。如这里先前所讨论的,十八位宽的指令字48可以包含位于四个时间片54中的多达四条指令52,该四个时间片54被称为时间片零54a、时间片一54b、时间片二54c和时间片三54d。在本实施例中,十八位指令字48总是作为整体被读取。因此,由于指令字48中总是存在具有多达四条指令的潜能,因此在计算机12的指令集中包括no-op(无操作)指令以提供用于当没有必要或甚至是不期望使用所有可用的时间片54的情况。应该注意,根据一个特定实施例,在间隔的时间片(具体来说,时间片一54b和时间片三54c)中位50的极性(与有效低相比较是有效高)是相反的。然而,这不是必需的,因此,为了更好地解释这项发明,在下面的讨论中也避免这种潜在的复杂情况。
图5为图3的时间片定序器42的示意图。从图5的视图中可以看出,时间片定序器42具有排列成环形的多个(在该例子中是十四个)反相器56和一个与非门58,使得信号在经过该十四个反相器56和与非门58时被反相奇数次。当或门60的两个输入中的任一个变为高时,在时间片定序器42中发起一信号。第一或门输入端62得自正在被执行的指令52的i4位66。如果i4位66为高,则该特定指令52是ALU指令,且i4位66为“1”。当i4位66为“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的输出会变低,以便阻止电路的多余继续振荡。
根据以上讨论可以认知到,假设下文会讨论的第二或门输入端64不为高,则当i4位66为“0”时,时间片定序器42不会被触发。
如上所述,根据各指令52是否为读类型指令或写类型指令来设置各指令52的i4位66。指令52的剩余位50为该指令提供了特定操作码的剩余部分。在读类型指令或写类型指令的情况下,一个以上位可用于指示从该特定计算机12读取数据的地址或将数据写入该特定计算机12的地址。在本例子中,待写入的数据总是来自于T寄存器44(数据堆栈34的顶部),然而数据可以被选择性地读入T寄存器44或可以执行该数据的指令区域30。也就是说,在该特定实施例中,由于可以以在此所述的方式来传送数据或指令,因此尽管不是必需的,也可以从数据总线16直接执行指令。此外,一个以上位50将用来指示哪个端口38,如果存在的话,将被设置为读或写。当前的操作可以通过利用一个以上位指代诸如A寄存器40a、B寄存器40b等的寄存器40来可选地完成。在这种例子中,将具有与各端口38(以及计算机12可尝试与之通信的任何其它潜在实体,例如存储器、外部通信端口等)相对应的位的数据预载入所指代的寄存器40。例如,在特定寄存器40中,四位中的各位可以对应于上端口38a、右端口38b、左端口38c或下端口38d中的各端口。在这些位的位置中的任意位置存在“1”的情况下,通过对应的端口38将通信设置为继续进行。
紧接着的例子采用计算机12e尝试向计算机12c写的通信,尽管该例子适用于在任意相邻计算机12之间的通信。当在写计算机12e中执行写指令时,选中的写线20被设置为高(在该例子中,是计算机12e与12c之间的写线20)。如果对应的读线18已经为高,则通过所选中的通信端口38马上将数据从选中的位置发送出去。作为替换地,如果对应的读线18还不为高时,则计算机12e简单地停止操作,直到对应的读线确实变高为止。这里先前已经讨论过当存在读类型指令或写类型指令时停止计算机12a(或更准确地说是禁止计算机12a的进一步操作)的机制。简言之,指令52的操作码在i4位66的位置处为‘0’,因此或门60的第一或门输入端62为低,并且时间片定序器42不会被触发而生成使能脉冲。
关于如何在读类型指令或写类型指令完成时恢复计算机12e的操作,机制如下:当计算机12e和12c之间的读线18和对应写线20均为高时,则两条线18和20分别被将相应线保持为高的相应计算机12中的各计算机12释放。(在该例子中,发送计算机12e将写线20保持为高,而接收计算机12c会将读线18保持为高)。然后,接收计算机12c将两条线18和20拉低。在实际应用中,接收计算机12c可以在发送计算机12e释放写线20之前尝试将线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,当然除非i4位66为‘0’。在实际应用中,可以包括用于“预提取”指令的方法和装置,使得可以在指令字48中所有指令52的执行结束之前开始该提取。然而对于异步数据通信来说这也不是必需的。
已经详细描述了计算机12e向计算机12c写的以上例子。如根据以上讨论可以认知的,无论计算机12e首先尝试向计算机12c写还是计算机12c首先尝试从计算机12e读取,其操作基本相同。操作在计算机12e和12c都就绪之后才会完成,而且无论计算机12e还是计算机12c首先就绪,该首先就绪的第一计算机12简单地“进入睡眠”,直到另一个计算机12e或12c完成传输为止。实际上,考虑上述处理的另一种方式是,当写计算机12e和接收计算机12c分别执行写指令和读指令时,它们均进入睡眠,但是当读线18和写线20都为高时,最后进入事务处理的计算机几乎瞬时再度醒来,而发起事务处理的第一计算机12会几乎无限期地保持睡眠,直到第二计算机12做好完成处理的准备为止。
当正在被执行的指令52位于指令字48的时间片三的位置时,无论如何,计算机12将提取下一个等待的十八位指令字48,当然除非i4位66为‘0’。在实际应用中,可以包括用于“预提取”指令的方法和装置,使得可以在指令字48中所有指令52的执行结束之前开始该提取。然而对于异步数据通信来说这也不是必需的。
已经详细描述了计算机12e向计算机12c写的以上例子。如根据以上讨论可以认知的,无论计算机12e首先尝试向计算机12c写还是计算机12c首先尝试从计算机12e读取,其操作基本相同。操作在计算机12e和12c都就绪之后才会完成,而且无论计算机12e还是计算机12c首先就绪,该首先就绪的首个计算机12简单地“进入睡眠”,直到另一个计算机12e或12c完成传输为止。实际上,考虑上述处理的另一种方式是,当写计算机12e和接收计算机12c分别执行写指令和读指令时,它们均进入睡眠,但是当读线18和写线20都为高时,最后进入事务处理的计算机几乎瞬时再度醒来,而发起事务处理的首个计算机12会几乎无限期地保持睡眠,直到第二计算机12做好完成处理的准备为止。
根据对程序和用于完成该程序的手段的以上讨论,现在可以理解对背景方法的例子的以下简单描述。图6为描绘该方法例子的流程图74。在‘发起通信’操作76中,一个计算机12执行使其尝试与另一计算机12通信的指令52。该指令可以是对写的尝试或对读的尝试。在通常与‘发起通信’的操作76同时发生的‘将第一线设置为高’操作78中,将读线18或写线20设置为高(取决于首个计算机12是尝试读还是尝试写)。作为“将第一线设为高”操作78的一部分,如此操作的计算机12将如这里先前所详细描述的。在‘将第二线设置为高’操作80中,第二线(写线20或读线18)被第二计算机12设置为高。在‘传送数据操作’82中,在数据线22上发送并接收数据(或指令等)。在‘拉低线’操作84中,释放读线18和写线20,然后将该读线18和写线20拉低。在‘继续’操作86中,确认条件使计算机12恢复它们的操作。在本例子的情况下,确认条件产生确认信号88(图5),在这种情况下该确认信号88仅仅是确认线72的“高”条件。
图7为示出图1和图2中计算机12的计算机阵列10的一部分100的详细视图,因为该部分100属于根据本发明的示例性实施例。为了强调该部分100采用了本发明的实施例,计算机(节点、核等)现在仍然被称作CPU 12。
如图7所示,中心CPU 12通过相应的数据总线16连接到邻居CPU 12a、12b、12c和12d,每条数据总线16都包括读线18、写线20和十八条数据线22。然而,在CPU 12中,总线16内部连接,如果同时有至少两个端口38待读取,则CPU 12会创建未定义的硬件状态。在软件设计中应当考虑这种情形,以允许从这些状态中复原。
CPU 12e具有其自身的存储器102(例如图3所示的RAM 24和ROM26),该存储器102可以包含其自身的软件104。CPU 12e还具有一套寄存器40,以包含用于操作的操纵指针。这些寄存器包括用于数据操作的A寄存器40a和B寄存器40b、用于保持程序指针的P寄存器40c,以及I/O控制和状态寄存器(IOCS寄存器40d)(也见图3)。
图8a-f为示出可在图7中部分100的CPU 12中使用的端口地址解码的总体的表格图。图8a示出当寄存器40中的地址位108被设置为“1”时,寄存器40通常对一个以上端口38进行寻址。相反地,未示出,当地址位108为“0”时,寄存器40对存储器102中的位置进行寻址。当地址位108被设置为高时,接下来的八位充当选择位110,选择位110指出哪个或哪些特定的端口38被选中,且它们是待被读还是待被写。因此,对于CPU 12e中的寄存器40,“右”指示右侧或东侧邻居CPU 12a,“下”指示下侧或南侧邻居CPU 12b,“左”指代左侧或西侧邻居CPU 12c,且“上”指代上侧或北侧邻居CPU 12d。针对“RR”动作而设置的选择位110指示即将到来的读请求,而针对“WR”动作而设置的选择位110指示即将到来的写请求。
注意,为了一致且最小化混淆,我们在此坚持一般的惯例:高值或“1”表示真条件,低值或“0”表示假条件。然而,这并不是必要条件,并且可以使用替代的惯例。例如,CPU 12的某些当前优选实施例在RR位的位置使用“0”来表示真,在WR位的位置使用“1”表示真。
顺便应该注意到,该端口地址解码方法还允许将地址位108设置为“1”,并且不设置选择位110。这可以有利地用来对CPU 12中的其它元件进行寻址。例如,可以以这种方式对IOCS寄存器40d进行寻址。
在CPU 12的本实施例中,IOCS寄存器40d使用相同的端口地址排列来报告端口38的读线18和写线20的当前状态。这使得IOCS寄存器40d中的这些相应位有助于允许对I/O操作状态的编程测试。例如,与其CPU 12e从CPU 12b中异步读取,其中如果CPU 12b尚未将共用的写线20设置为高,则CPU 12e会进入睡眠,倒不如CPU 12e测试IOCS寄存器40d中位13(下/WR)的状态(反映将CPU 12b连接到CPU 12e的写线20的状态),并转移到来自CPU 12b的就绪数据且立即读取或转移到另一条指令且立即执行。
图8b示出简单的第一例子。这里设置针对右/RR的选择位110,指示待从端口38b读取数据。图8c示出简单的第二例子。这里设置针对右/WR的选择位110,现在指示待写入端口38b。
习惯上在任何给定的时段,只可以使能一个选择位110来指定单个端口38和单个动作(读或写)。然后若干个高位被解码为错误条件。然而,在此公开的新颖方法并不遵从该习惯,而是可以同时有利地使能针对端口38的一个以上选择位110,从而请求若干个读和/或写操作。在这种情况下,所有相应端口38上会给出数据,包括给出新数据的信号。
图8d-f示出若干个读和/或写操作的一些例子。图8d示出CPU 12e中的寄存器40可以以何种方式并发指定从CPU 12b的读取和对CPU 12a的写。图8e示出可以以何种方式并发指定从CPU 12b的读取和对CPU 12c的写。图8f示出指定从CPU 12b的读取和对CPU 12a或CPU 12c的写。(如预示的,人们可以将图8d-f与图9进行比较,在图9中数据传输路径由箭头132和134来代表。)
在多写期间的实践中,CPU 12e将在与一个以上目标CPU 12a、12b、12c或12d共用的总线16上给出数据并将写线20设置为高。然后,源CPU12e会等待,直到接收到数据已经被读取的指示为止。在某些最终意义上来说,可假定地,一个以上目标CPU 12a、12b、12c或12d在与CPU 12e共用的总线16上将相应的读线18设置为高。然后,目标CPU 12正式读取数据,并在与CPU 12e共用的总线16上将相应读线18和写线20拉低,从而确认来自CPU 12e的数据的接收。
图9为描绘图7和图8d-f所示的多写方法可以以何种方式具体与一个数据字120中包括多达四条指令的能力相结合的示意性框图。各指令通常是五位,所以18位宽的数据字120容纳大约四条指令。于是最后一条指令可以只有三位,但这对于许多指令已足够。该方法的一个值得注意的有利方面是它允许使用非常高效的数据传输机制。
在下文中,@=提取,!=存储,且p是指“程序计数器”或P寄存器40c。在@p+和!p+中的“+”是指在执行之后寄存器中的存储器地址递增,除非如果寄存器内容指向另一寄存器或端口,该寄存器内容不被递增。这样,在后者这些情况下的“+”将这些指令区分为“专用的”,而不是通常的@p和!p指令。
图9给出单个指令序列程序如何将数据从一个CPU 12传输到另一CPU12的例子,该程序可以包括在仅利用用来读和写数据的P寄存器40c的单个18位的数据字120中。这里“@p+”是时间片零54a中装载的指令122。这是从P寄存器40c中指定的当前地址中提取下一个18位数据字120的直接量操作,将该数据字120压入数据栈34。[而且,通过将P寄存器40c中的地址递增,除非当地址是针对寄存器或端口时才不递增,这里P寄存器40c中地址位108会指示正在指定端口。]接下来,“.”是时间片一54b中装载的指令124。这是不执行任何操作的简单的nop操作(无操作)。而且接下来,“!p+”是时间片二54c中装载的指令126。这是将顶部的数据字120从数据堆栈34中弹出、并将该数据字120写入P寄存器40c中所指定的当前地址的存贮操作。注意,P寄存器40c中所指定的地址没有改变,其仅是在功能上使不同的邻居CPU 12被访问而已。最后“unext”是时间片三54d中装载的指令128。这是根据返回堆栈28的顶部是否为零来执行不同的操作的微下一步(micro-next)操作。当返回堆栈28不为零时,微下一步使返回堆栈28递减,使在当前所高速缓存的数据字120的时间片零54a中的指令处(即在这里的例子中,再次在指令122处)继续执行。尤其应该注意,这里使用微下一步不需要提取新的数据字120。相反,当返回堆栈28为零时,微下一步从P寄存器40c中所指定的当前地址中提取下一个数据字120,并使执行在该新的数据字120的时间片零54a中的指令处开始。
针对该特定的例子,P寄存器40c可以被装载以101100000b,且返回堆栈28的顶部可以包含101b(十进制的5)。由于P寄存器40c包含101100000b(见例如图8a和图8d),因此这里指令122中的“@p+”指令CPU 12e从CPU 12b读取(通过其端口38d)下一个数据字120,并将读取的数据字120压入数据堆栈34。不过,由于P寄存器40c中的地址是针对端口的,因此不会递增。这里指令124中的“.”nop仅仅是填充器,用来填满18位当前数据字120。接下来,由于P寄存器40c仍然包含101100000b,这里指令126中的“!p+”指令CPU 12e弹出数据栈34的顶部数据字120(即由指令122置入的数据字120),并将该数据字120(通过端口38b)写入CPU 12a。再次,由于P寄存器40c中的地址是针对端口的,因此该地址不会递增。然后,指令128中的“unext”使返回堆栈28缩减到100b(十进制的4),并在指令122处继续执行。并且,指令122、124、126和128中的单个字程序以这种方式继续,将返回堆栈28缩减到011b、010b、001b,最终缩减到000b(十进制的0),从CPU 12b提取下一数据字120,并执行这个新数据字120的时间片零54a中的指令。
总之,在这里的例子中的P寄存器40c被装载以指定源和目的(端口38d和38b,以及CPU 12b和12a)的一个地址值,返回堆栈28被装载以迭代计数(5)。然后,通过CPU 12e有效地传输(“流水线地”)五个数据字120,然后CPU 12e在也由CPU 12b提供的第六数据字120的时间片零54a中的指令处继续执行。
各种其它优势是使用该简单但一流的方法的结果。例如,不需要使用A寄存器40a和B寄存器40b,从而使得A寄存器40a和B寄存器40b可由CPU 12e针对其它的数据目的而使用。从此得出,当进行数据传输时,可以消除指针交换(除杂)。
例如,针对数据流水线技术的传统软件例程会在某个点从输入端口读取数据,并在另一个点将数据写入输出端口。为此,除了正在使用的相应输入端口和输出端口的指针外,还需要指向存储器的至少一个指针。由于端口可能有不同的地址,因此这里继续进行的最直接方式会是使用直接量指令将输入端口地址载入堆栈,将该地址置入寻址寄存器,从输入端口进行读取,然后使用直接量指令将输出端口的地址载入堆栈,将该地址置入寻址寄存器,并对输出端口进行写。
该方法中两次直接量载入各需要4个周期,两个寄存器设置指令各需要1个周期。即在环路内部设置输入和输出指针总共花费10个周期。此外,当需要这种指针交换时会有额外损失,因为在环路内部需要三个字的存储空间,从而不允许使用包含在单个18位字中的环路。相应地,该例子中的指令环路将需要具有存储器访问的分支,这增加了4个周期的进一步开销,且使总的指针交换和环路开销至少为14个周期。
然而,相反,由于可以在CPU 12中进行多端口寻址,用于选择输入端口38和输出端口38两者的地址可以被装载到I/O环路的外部,且可用于输入和输出两者。由于在多端口读取期间仅来自一个邻居的数据被读取,且多端口写期间仅一个邻居在读取,因此该方法可以运行。这样,就不需要传统中设置输入和输出指针所花费的环路内部的14个周期的开销。该环路仍然具有读指令和写指令,但是现在这些指令都可以使用同一指针,所以指针不需要改变。
这意味着使用多端口写技术可以将某些类型的I/O环路的开销减少14个周期(或更多)。发明人已经观察到,在最好情况下,该技术允许在CPU12的处理环路中从23个周期减少到6个周期。在一个周期需要大约一纳秒的情况下,这表示有效处理器速度从43MHz提高到167MHz,这表示相当可观的改进。
现在简要地继续图8f,并重新继续图9,图8f和图9示出可以以何种方式进行多写,甚至是使用单字程序来进行多写。这里CPU 12e从CPU 12b读取,并写入CPU 12a或CPU 12c。在效果上,这里的流水线技术为CPU 12a或CPU 12c首先可用。该流水线技术图示出在CPU 12中可能增加的灵活性,且仅仅是以何种迄今认为过于困难或不切实际的方式来使用根据本发明的CPU 12的一个可能的例子。
总之,CPU 12必须处理对端口38的读取和到端口38的跳转。在从多端口地址读取或向跳转到多端口地址时,如果没有正在执行的显式代码用来发现,则无法得知数据或指令是从哪个端口38获得的。(最快的方式依赖于对两个CPU 12都相同的端口38。)传统上,由于不同的数据或代码可能来自不同的端口,因此这个问题被看作是要避免的问题。然而,在假定的协同环境下,发明人已经找出如何将一切变为利益。并且本发明就是这种情况。
如果CPU 12从多端口地址中执行,且所有寻址邻居CPU 12协同地(即同步地)写,一个邻居CPU 12可以供应指令流,而不同的CPU 12提供直接量数据。直接量提取操作码(@p+)产生可以选择性地(并不同所有的直接量都需要这样做)满足不同邻居CPU 12的从P寄存器40c中多端口地址的读取。这仅仅需要邻居CPU 12之间的广泛“协同”。
然而,在流水线的多端口使用时,在一个邻居CPU 12正在读取,而一个CPU 12正在写的情况下,对同一多端口地址的读取和写不会产生问题。跳转到这种多端口地址并执行直接量存贮操作码(!p+)的思想允许P寄存器40c在完全安全的情况下对两个端口38进行寻址。这使A寄存器40a和B寄存器40b均空闲,可为本机使用。
可以在不改变本发明的实施例的值或范围的情况下,对其进行各种额外的修改。例如,虽然这里在读指令和写指令方面对该发明进行了描述,但是在实际应用中,可以存在至少两种读类型指令和/或至少两种写类型指令。仅作为一个例子,在本发明的一个实施例中,存在使寄存器递增的写指令和不使寄存器递增的其它写指令。类似地,可以根据使用哪个寄存器40来选择通信端口38等而改变写指令,如这里先前所描述的。还可以存在若干不同的读指令,仅取决于计算机12的设计者认为哪种改变是作为替换的读行为的有用选项。
类似地,尽管在这里已经关于单个电路小片14上的阵列10中的计算机12之间的通信描述了本发明的实施例,但相同的原理和方法可用于或被修改为用于完成其它器件间通信,例如计算机12与其专用存储器之间的通信,或阵列10中的计算机12与外部器件之间的通信(通过输入/输出端口等)。实际上,预计到,一些应用可能需要阵列的阵列-利用当前描述的器件间通信方法潜在地适用于阵列的阵列中的通信。
尽管这里已讨论了创造性计算机阵列10和计算机12的具体例子,但是,预期将存在很多还无法想象的应用。实际上,本发明的一个优势在于本创造性方法及装置可以适于大量使用。
本发明还提供一种计算机程序,当该计算机程序在合适的计算机上运行时,使该计算机实施在此之前所描述的创造性方法。该程序可以位于载体上。该载体可以是存贮介质或信号。该存贮介质可以是记录介质或在其它例子中的存储设备。
上面的所有仅是本发明的可用实施例的一些例子。本领域技术人员将容易看出可以在不脱离本发明的精神或范围的情况下,进行大量其它的修改和变动。相应地,这里的公开内容目的不意在限定,且所附的权利要求被解释为包含本发明的全部范围。

Claims (16)

1、一种计算机,包括:
将该计算机连接到其它器件的多条数据路径;以及
具有位的寄存器,所述位可编程设置为对所述多条数据路径中的各条数据路径进行寻址,使得该计算机可以通过所述多条数据路径中作为所述位并发设置的基础的若干条数据路径来进行通信。
2、根据权利要求1所述的计算机,其中:所述寄存器具有分别将所述其它器件表示为该计算机可以从中读取数据的源器件的情况和将所述其它器件表示为该计算机可以将数据写入的目的器件的情况的位,从而允许用所述寄存器中的单一地址来兼表示由该计算机传送的数据的源器件和目的器件双方。
3、根据权利要求1或2所述的计算机,其中:
该计算机包括堆栈存贮元件;并且
该计算机仅采用所述寄存器和所述堆栈存贮元件来从所述其它器件中的第一其它器件读取数据并将所述数据写入所述其它器件中的第二其它器件。
4、根据权利要求1、2或3所述的计算机,其中:
该计算机采用长度足以包括若干条指令的指令字,并可以实现所述指令字中给出的所述指令的情况,所述指令字在所述数据路径上给出;
该计算机仅采用单个所述指令字中的程序、所述寄存器和堆栈存贮元件来从所述其它器件中的第一器件读取数据并将所述数据写入所述其它器件中的第二器件。
5、根据权利要求1、2、3或4所述的计算机,其中:
该计算机通过所述数据路径中由所述寄存器指定的第一数据路径来从所述其它器件中的一个器件读取数据;并且
该计算机通过所述数据路径中由所述寄存器并发指定的第二数据路径来将数据写入所述其它器件中的另一个不同的器件。
6、根据权利要求5所述的计算机,其中:
该计算机可以从若干个所述其它器件中由所述寄存器并发指定的一个其它器件读取数据;或
该计算机可以将数据写入由所述寄存器并发指定的若干个所述其它器件;并且
该计算机从所述其它器件中提供所述数据的第一其它器件读取,并写入所述其它器件中接受所述数据的第二其它器件。
7、根据前述权利要求中任一项所述的计算机,其中:
所述寄存器中定义该计算机可以从中读取的所述其它器件的所述位是读位;
所述寄存器定义该计算机可以写入的所述其它器件的所述位是写位;
当所述读位被置位时,该计算机尝试从所述其它器件中对应的所有第二其它器件读取;并且
当所述写位被置位时,该计算机尝试写入所述其它器件中对应的所有第二其它器件。
8、一种针对计算机传送数据的方法,包括:
(a)针对该计算机连接到其它器件的多条数据路径来对所述其它器件设法将该数据写入该计算机的信号加以监视;
(b)从所述其它器件中的首个器件读取所述数据;并且
(c)基于具有可编程设置为对所述多条数据路径进行寻址的位的寄存器,将所述数据写入所述其它器件中的一个器件。
9、根据权利要求8所述的方法,其中:
所述(a)包括仅监视在所述寄存器中设有相应位的所述数据路径,从而允许用所述寄存器中的单一地址来兼表示正在被传送的数据的源器件和目的器件双方。
10、根据权利要求8或9所述的方法,其中:
所述(b)包括尝试从在所述寄存器中设有相应位的所有所述其它器件读取。
11、根据权利要求8、9或10所述的方法,其中:
所述(c)包括尝试对所述寄存器中设有相应位的所有所述其它器件进行写。
12、根据权利要求8、9、10或11所述的方法,其中:
所述(a)包括响应于接收到首个所述信号,停止所述监视,从而保证所述读取来自所述其它器件中与所述首个所述信号相关联的那个器件。
13、根据权利要求8、9、10、11或12所述的方法,其中所述数据包括一连串数据字,并且进一步,其中:
所述(b)包括将各所述数据字直接从所述数据路径中的一条数据路径读入该计算机中的堆栈存贮元件;并且
所述(c)包括将各所述数据字直接从所述堆栈存贮元件写入所述数据路径中的一条数据路径。
14、根据权利要求8至13中任一项所述的方法,其中该计算机采用长度足以包括若干条指令的指令字,并且进一步,其中:
所述(b)和所述(c)包括仅采用单个所述指令字中的程序、所述寄存器和堆栈存贮元件。
15、根据权利要求14所述的方法,进一步包括:
接收所述数据路径中的一条数据路径上的所述单个所述指令字。
16、一种计算机程序,该计算机程序在合适的计算机上运行,使该计算机实施根据权利要求8至15中任一项所述的方法。
CNA2008100940844A 2007-04-27 2008-04-25 传送数据 Pending CN101295241A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/741,649 2007-04-27
US11/741,649 US7555637B2 (en) 2007-04-27 2007-04-27 Multi-port read/write operations based on register bits set for indicating select ports and transfer directions

Publications (1)

Publication Number Publication Date
CN101295241A true CN101295241A (zh) 2008-10-29

Family

ID=39591084

Family Applications (2)

Application Number Title Priority Date Filing Date
CNA2008100940859A Pending CN101295242A (zh) 2007-04-27 2008-04-25 用于在计算机组中处理数据的系统及方法
CNA2008100940844A Pending CN101295241A (zh) 2007-04-27 2008-04-25 传送数据

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CNA2008100940859A Pending CN101295242A (zh) 2007-04-27 2008-04-25 用于在计算机组中处理数据的系统及方法

Country Status (7)

Country Link
US (1) US7555637B2 (zh)
EP (1) EP1986093A1 (zh)
JP (1) JP2009009550A (zh)
KR (1) KR20080096484A (zh)
CN (2) CN101295242A (zh)
TW (1) TW200905556A (zh)
WO (1) WO2008133980A2 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2398446B (en) * 2003-02-12 2006-06-07 Snell & Wilcox Ltd Image processing
US7937557B2 (en) * 2004-03-16 2011-05-03 Vns Portfolio Llc System and method for intercommunication between computers in an array
US7904695B2 (en) 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous power saving computer
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
US11397814B2 (en) * 2019-03-25 2022-07-26 Micron Technology, Inc. Local ledger block chain for secure electronic control unit updates
US11349636B2 (en) 2019-03-25 2022-05-31 Micron Technology, Inc. Local ledger block chain for secure updates

Family Cites Families (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3757306A (en) * 1971-08-31 1973-09-04 Texas Instruments Inc Computing systems cpu
US4107773A (en) * 1974-05-13 1978-08-15 Texas Instruments Incorporated Advanced array transform processor with fixed/floating point formats
US4215422A (en) * 1978-05-22 1980-07-29 International Business Machines Corporation Selectively modifiable phrase storage for a typewriter
US4298932A (en) * 1979-06-11 1981-11-03 International Business Machines Corporation Serial storage subsystem for a data processor
US4462074A (en) * 1981-11-19 1984-07-24 Codex Corporation Do loop circuit
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
JPS60204149A (ja) 1984-03-29 1985-10-15 Mitsubishi Electric Corp デ−タ伝送装置
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
EP0227319A3 (en) 1985-12-26 1989-11-02 Analog Devices, Inc. Instruction cache memory
US5053952A (en) * 1987-06-05 1991-10-01 Wisc Technologies, Inc. Stack-memory-based writable instruction set computer having a single data bus
US5029124A (en) * 1988-05-17 1991-07-02 Digital Equipment Corporation Method and apparatus for providing high speed parallel transfer of bursts of data
DE3937807C2 (de) 1988-11-19 1995-04-06 Vaillant Joh Gmbh & Co Verfahren zum Übertragen von Daten zwischen zwei sendenden und empfangenden Stationen
JPH0769791B2 (ja) * 1988-12-21 1995-07-31 三菱電機株式会社 マイクロプロセッサ
DE3901457A1 (de) * 1989-01-19 1990-08-02 Strahlen Umweltforsch Gmbh Verfahren zur adressbereichsueberwachung bei datenverarbeitungsgeraeten in echtzeit
CA2019299C (en) 1989-06-22 2002-01-15 Steven Frank Multiprocessor system with multiple instruction sources
US5440749A (en) * 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
EP0428770B1 (de) * 1989-11-21 1995-02-01 Deutsche ITT Industries GmbH Datengesteuerter Arrayprozessor
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
US5826101A (en) * 1990-09-28 1998-10-20 Texas Instruments Incorporated Data processing device having split-mode DMA channel
US5590345A (en) * 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
JP3102027B2 (ja) * 1990-11-20 2000-10-23 日本電気株式会社 ループ制御のネスティング管理機構
US5218682A (en) * 1991-05-10 1993-06-08 Chrysler Corporation Two-way handshake circuit and method for communication between processors
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
KR100299691B1 (ko) * 1991-07-08 2001-11-22 구사마 사부로 확장가능알아이에스씨마이크로프로세서구조
JPH0581216A (ja) * 1991-09-20 1993-04-02 Hitachi Ltd 並列プロセツサ
CA2078315A1 (en) * 1991-09-20 1993-03-21 Christopher L. Reeve Parallel processing apparatus and method for utilizing tiling
GB2267588B (en) * 1992-06-06 1996-03-20 Motorola Inc FIFO memory system
EP0583089B1 (en) * 1992-08-12 2000-01-26 Advanced Micro Devices, Inc. Instruction decoder
US5473271A (en) * 1993-02-09 1995-12-05 Dallas Semiconductor Corporation Microprocessor output driver
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
US5893148A (en) * 1994-03-03 1999-04-06 International Business Machines Corporation System and method for allocating cache memory storage space
US6173387B1 (en) * 1994-05-11 2001-01-09 Intel Corporation Interleaved exchange in a network mesh
JPH0863355A (ja) * 1994-08-18 1996-03-08 Mitsubishi Electric Corp プログラム制御装置及びプログラム制御方法
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
US5692197A (en) * 1995-03-31 1997-11-25 Sun Microsystems, Inc. Method and apparatus for reducing power consumption in a computer network without sacrificing performance
US5727194A (en) * 1995-06-07 1998-03-10 Hitachi America, Ltd. Repeat-bit based, compact system and method for implementing zero-overhead loops
JP3739797B2 (ja) 1995-10-06 2006-01-25 パトリオット サイエンティフィック コーポレイション 縮小命令セット・コンピューター・マイクロプロセッサーの構造
US5854760A (en) * 1995-11-10 1998-12-29 Nippon Telegraph And Telephone Corporation Two-dimensional PE array, content addressable memory, data transfer method and mathematical morphology processing method
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
US5784602A (en) * 1996-10-08 1998-07-21 Advanced Risc Machines Limited Method and apparatus for digital signal processing for integrated circuit architecture
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
US6003128A (en) * 1997-05-01 1999-12-14 Advanced Micro Devices, Inc. Number of pipeline stages and loop length related counter differential based end-loop prediction
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
US6101598A (en) * 1997-11-14 2000-08-08 Cirrus Logic, Inc. Methods for debugging a multiprocessor system
US6085304A (en) * 1997-11-28 2000-07-04 Teranex, Inc. Interface for processing element array
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
US6112296A (en) * 1997-12-18 2000-08-29 Advanced Micro Devices, Inc. Floating point stack manipulation using a register map and speculative top of stack values
KR100252136B1 (ko) * 1997-12-29 2000-04-15 윤종용 디지털 신호 처리 칩에서의 반복 구문 실행 제어회로
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
US6449709B1 (en) * 1998-06-02 2002-09-10 Adaptec, Inc. Fast stack save and restore system and method
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
US6353880B1 (en) * 1998-07-22 2002-03-05 Scenix Semiconductor, Inc. Four stage pipeline processing for a microcontroller
US6219685B1 (en) * 1998-09-04 2001-04-17 Intel Corporation Method to detect IEEE overflow and underflow conditions
US6148392A (en) * 1998-09-08 2000-11-14 Hyundai Electronics Industries Co., Ltd. Low power implementation of an asynchronous stock having a constant response time
EP0992896A1 (en) 1998-10-06 2000-04-12 Texas Instruments Inc. Pipeline protection
US6507649B1 (en) * 1998-12-18 2003-01-14 Ericsson Inc. Mechanism and method for distributing ISUP stacks over multiple loosely coupled processors
SE514785C2 (sv) 1999-01-18 2001-04-23 Axis Ab Processor och metod för att exekvera instruktioner från flera instruktionskällor
FR2789501B1 (fr) * 1999-02-09 2001-04-13 St Microelectronics Sa Procede et dispositif de reduction de la consommation d'un microcontroleur
US6427204B1 (en) * 1999-06-25 2002-07-30 International Business Machines Corporation Method for just in-time delivery of instructions in a data processing system
DE60044300D1 (de) * 1999-08-30 2010-06-10 Ip Flex Inc Daten-prozessor
US6665793B1 (en) * 1999-12-28 2003-12-16 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for managing access to out-of-frame Registers
WO2001063434A1 (en) * 2000-02-24 2001-08-30 Bops, Incorporated Methods and apparatus for dual-use coprocessing/debug interface
US6725361B1 (en) * 2000-06-16 2004-04-20 Transmeta Corporation Method and apparatus for emulating a floating point stack in a translation process
GB2370381B (en) 2000-12-19 2003-12-24 Picochip Designs Ltd Processor architecture
DE10102202A1 (de) * 2001-01-18 2002-08-08 Infineon Technologies Ag Mikroprozessorschaltung für tragbare Datenträger
US7155602B2 (en) * 2001-04-30 2006-12-26 Src Computers, Inc. Interface for integrating reconfigurable processors into a general purpose computing system
US6938253B2 (en) 2001-05-02 2005-08-30 Portalplayer, Inc. Multiprocessor communication system and method
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
WO2003019356A1 (en) 2001-08-22 2003-03-06 Adelante Technologies B.V. Pipelined processor and instruction loop execution method
JP3656587B2 (ja) * 2001-10-01 2005-06-08 日本電気株式会社 並列演算プロセッサ、その演算制御方法及びプログラム
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
US6959372B1 (en) * 2002-02-19 2005-10-25 Cogent Chipware Inc. Processor cluster architecture and associated parallel processing methods
US6948040B2 (en) * 2002-05-17 2005-09-20 Samsung Electronics Co., Ltd. System and method for synchronizing a plurality of processors in a processor array
JP3509023B2 (ja) * 2002-06-26 2004-03-22 沖電気工業株式会社 ループ制御回路及びループ制御方法
US7237045B2 (en) * 2002-06-28 2007-06-26 Brocade Communications Systems, Inc. Apparatus and method for storage processing through scalable port processors
US6825843B2 (en) * 2002-07-18 2004-11-30 Nvidia Corporation Method and apparatus for loop and branch instructions in a programmable graphics pipeline
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エレクトロニクス株式会社 アレイ型プロセッサ
US7079046B2 (en) * 2003-03-28 2006-07-18 Yokogawa Electric Corporation Multi-point data acquisition apparatus
US7613900B2 (en) * 2003-03-31 2009-11-03 Stretch, Inc. Systems and methods for selecting input/output configuration in an integrated circuit
US7937557B2 (en) 2004-03-16 2011-05-03 Vns Portfolio Llc System and method for intercommunication between computers in an array
JP4610218B2 (ja) * 2004-03-30 2011-01-12 ルネサスエレクトロニクス株式会社 情報処理装置
US7269805B1 (en) * 2004-04-30 2007-09-11 Xilinx, Inc. Testing of an integrated circuit having an embedded processor
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
US7330964B2 (en) * 2005-11-14 2008-02-12 Texas Instruments Incorporated Microprocessor with independent SIMD loop buffer
EP1821211A3 (en) 2006-02-16 2008-06-18 Technology Properties Limited Cooperative multitasking method in a multiprocessor system

Also Published As

Publication number Publication date
US20080270648A1 (en) 2008-10-30
WO2008133980A3 (en) 2008-12-24
TW200905556A (en) 2009-02-01
JP2009009550A (ja) 2009-01-15
US7555637B2 (en) 2009-06-30
CN101295242A (zh) 2008-10-29
WO2008133980A2 (en) 2008-11-06
KR20080096484A (ko) 2008-10-30
EP1986093A1 (en) 2008-10-29

Similar Documents

Publication Publication Date Title
US11182335B2 (en) Circular reconfiguration for reconfigurable parallel processor using a plurality of memory ports coupled to a commonly accessible memory unit
CN101295241A (zh) 传送数据
US10949328B2 (en) Data flow graph computation using exceptions
CN101438260A (zh) 计算机阵列中的资源分配
CN102270189B (zh) 基于fpga多核系统的核间通信方法
JPS62208158A (ja) マルチプロセツサシステム
CN101013415A (zh) 用于多处理器阵列的线程感知分布式软件系统
KR100538727B1 (ko) 멀티 프로세서 시스템
US8990451B2 (en) Controller for direct access to a memory for the direct transfer of data between memories of several peripheral devices, method and computer program enabling the implementation of such a controller
US20190122415A1 (en) Graph based heterogeneous parallel processing system
CN101097559A (zh) 一种实现主处理器与协处理器接口与互连的系统及方法
CN102073543A (zh) 通用处理器与图形处理器融合系统及其融合方法
CN101563679A (zh) 用于监控计算机的输入的方法和装置
US20180212894A1 (en) Fork transfer of data between multiple agents within a reconfigurable fabric
US10659396B2 (en) Joining data within a reconfigurable fabric
CN103793208B (zh) 矢量dsp处理器和协处理器协同运作的数据处理系统
CN108874730A (zh) 一种数据处理器及数据处理方法
CN112306946A (zh) 用于处理器核心的网络的覆盖层
KR20230034386A (ko) 레지스터 데이터 소거
US20240054081A1 (en) Controlling access to a memory shared by a cluster of multiple processing elements
CN101258480A (zh) 具有分离串行模块的处理器阵列
JP2009527814A (ja) コンピュータのアレイ間でのリソースの割り当て
KR20090016642A (ko) 비동기적 컴퓨터 통신
CN102184089B (zh) 一种动态可重构处理器内数据流运转的方法
WO2019169238A1 (en) Dynamic reconfiguration using data transfer control

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: 20081029