CN101295242A - 用于在计算机组中处理数据的系统及方法 - Google Patents

用于在计算机组中处理数据的系统及方法 Download PDF

Info

Publication number
CN101295242A
CN101295242A CNA2008100940859A CN200810094085A CN101295242A CN 101295242 A CN101295242 A CN 101295242A CN A2008100940859 A CNA2008100940859 A CN A2008100940859A CN 200810094085 A CN200810094085 A CN 200810094085A CN 101295242 A CN101295242 A CN 101295242A
Authority
CN
China
Prior art keywords
data
computing machine
computer
cpu
write
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
CNA2008100940859A
Other languages
English (en)
Inventor
约翰·W·瑞博
迈克尔·B·蒙特维利什斯凯
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 CN101295242A publication Critical patent/CN101295242A/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

一种计算机组包括首计算机和末计算机。除所述首计算机之外的所述各计算机前面放有在先计算机,除所述末计算机之外的所述各计算机后面放有后续计算机。一逻辑通过第一数据路径读取新数据,且一逻辑通过第二数据路径写旧数据。一逻辑处理所述新数据以生成所述旧数据,并且除所述末计算机之外,存贮元件存贮所述旧数据。所述写逻辑在所述读逻辑之后操作,且所述写逻辑在所述处理逻辑之前操作。

Description

用于在计算机组中处理数据的系统及方法
技术领域
本发明总的来说涉及具有处理架构并进行指令处理的电计算机和数字处理系统,更具体地说,涉及用于对特别支持或进行数字传输操作的指令数据进行处理的这类电计算机和数字处理系统。
背景技术
在计算领域,处理速度是非常期望的品质,并且对创造更快速的计算机和处理器的探索正在进行中。然而,行业中普遍认为,至少对于利用目前已知的技术来提高微处理器的速度而言,微处理器速度的极限正在迅速地被接近。因此,通过在处理器之间分担计算机任务来提高整体计算机速度的多处理器的使用,越来越受到关注。但是还通常认为,在工作量的分担中几乎不可避免地存在整体效率的一些下降。也就是说,所述多处理器的使用适用以下古老的谚语:仅仅由于一个人可以在60分钟内挖一个柱洞,并不必然得出60个人可以在1分钟内挖一个柱洞的结论。同样的道理几乎适用于任何任务的分工,处理器之间的任务分工也不例外。
当然,正在努力使计算机处理器之间的任务分担更加高效。正在研究和过程改进的正是如何分配任务的问题。本发明人在该领域的工作过程中观察到,在某些场合下,在多CPU环境中将数据从一个CPU传输到另一个CPU可能很麻烦。例如,如果必须将数据从一个CPU传输到另一个CPU,且目标CPU与源CPU之间被一个CPU隔开,则源CPU必须将该数据成一直线直接写入该CPU,然后,该CPU必须读取该数据,并将该数据写入目标CPU,然后目标CPU必须读取该数据。这种过程需要多次读操作和写操作,而且如果要传输大量的数据,则这么多的读命令和写命令可能会阻塞系统运行。
为了满足对允许同时在各种相异方向中-即在同一系统中任意的各个不同CPU之间-进行若干个读操作和写操作的需求,已经开发了用于多端口读和写操作的系统及方法。这些系统及方法处理了以上讨论中的大多数所关注的问题,但是如同任何卓越进步那样,这些系统及方法已经引起新的难题。例如,在CPU以流水线或多维阵列的方式排列的多CPU环境中,在CPU对在先CPU而不是后续CPU进行写的情况下,可能会发生反转。可以精心设计机制来防止反转的发生,但是这些机制的实现必需对硬件进行修改或进行大量编程及CPU间的通信。作为另一个例子,目前的很多应用需要实时处理或仅期望提高处理速度和效率。由此可见,对多端口读和写操作进行优化是有益的。类似的原理,既然多端口操作可用,使这些操作的建立和性能更加灵活也是有益的。
发明内容
相应地,本发明的目的在于提供在计算机流水线和阵列中处理数据的改进系统及方法。
简言之,本发明的一方面是由计算机组处理数据的方法。该计算机组包括首计算机和末计算机,并且其中除首计算机之外的各计算机前面均置有在先计算机,除末计算机之外的各计算机后面均置有后续计算机。可以将该过程视为各计算机被看作当前计算机。(a)利用当前计算机读取新数据。然后,(b)利用当前计算机写旧数据。然后,(c)在当前计算机中处理该新数据,以生成下一次的旧数据。此后,(d)如果当前计算机非末计算机,则将该旧数据保存在当前计算机中。该步骤(c)可以包括执行指令字中的若干条指令。该步骤(a)和(b)可以在单个指令字中执行。(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所示的多写方法如何具体地与在单指令字中包括若干条指令的能力相结合的示意性框图;
图10为保证在如上所述的多读/多写系统中传播不反转的处理规则表;
图11为描绘当数据通过相连的CPU组从左边顺序传输到右边时在一连串时间的优化流水线状态的框图;
图12a-b为在形式上示出图11流水线中的数据的初始流的示意图,其中图12a示出如果没有遵循规则3,则发生反转,图12b示出如果遵循规则3,则数据流通过流水线而不发生反转。
在附图中的各幅图中,相同的附图标记用于表示相同的或相似的元件或步骤。
具体实施方式
虽然根据用于实现目的的模式对本发明的实施例进行描述,但是本领域技术人员将认知到鉴于这些启示并未脱离本发明的精神或范围,因此可以实现变体。
这里所描述的和/或在附图中所示的本发明的实施例及其变体仅以示例方式给出,并不限定本发明的范围。除非以其它方式具体说明,本发明的独立方面和部件可以被省略或修改,或可以具有因此被替代的等价物,或可以具有还未知的替代品,例如可能在未来开发的,或例如可能在未来被发现是可接受的替代品的。由于潜在应用的范围很大,且由于本发明意在适应很多这样的变体,因此只要保持在所要求的发明的精神和范围之内,本发明还可以针对各种各样的应用而被修改。
本发明的优选实施例是在计算机流水线和阵列中处理数据的改进系统及方法。如这里的不同附图所示出的,尤其是在图12b的视图中,本发明的优选实施例由一般附图标记1000来描绘。
作为本发明的场景和基础,首先给出异步计算机通信的详细背景例子,然后进一步给出在这种异步计算机通信中多端口读操作和多端口写操作的详细背景例子。
对于第一背景例子,图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做好完成处理的准备为止。
相信使能器件之间有效的异步通信的关键特征是某种确认信号或条件。在现有技术中,器件之间的大多数通信是时钟控制的,且发送器件没有得知接收器件已准确接收数据的直接方式。诸如校验和操作的方法可用来尝试保证数据的正确接收,但是发送器件没有已完成操作的直接指示。如这里所述的本方法提供必要的确认条件,该条件允许器件之间的异步通信,或至少使器件之间的异步通信变得实用。此外,确认条件还可能使一个以上器件“进入睡眠”,直到确认条件发生才会醒来。当然,也可以通过在计算机12之间发送的分离信号(通过互连的数据总线16或通过分离的信号线)来在计算机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建立在第一背景例子的技术之上,计算机(节点、核等)现在仍然被称为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 12b的写。(如预示的,人们可以将图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读取(通过其端口38b)下一个数据字120,并将读取的数据字120压入数据堆栈34。不过,由于P寄存器40c中的地址是针对端口的,因此不会递增。这里指令124中的“.”nop仅仅是填充器,用来填满18位当前数据字120。接下来,由于P寄存器40c仍然包含101100000b,这里指令126中的“!p+”指令CPU 12e弹出数据栈34的顶部数据字120(即由指令122置入的数据字120),并将该数据字120(通过端口38a)写入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被装载以指定源和目的(端口38b和38a,以及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均空闲,可为本机使用。
当传播数据(实际数据或作为数据正在被传输的指令)时,还可以对CPU 12进行其它优化。图10-12示出一例子,并给出当前的发明。
图10为用于保证在如上所述的多读/多写系统中传播不反转的处理规则1000的表格。规则1是简单的——各CPU应当将在先CPU“看”作它的源。规则2和规则3有点深奥,但是通常可以通过将运送液体的流水线与CPU的流水线进行比较而被认知到。
规则2避免了CPU的流水线变为“瓶颈”。很明显,如果CPU的流水线无法跟上供应给它的数据,那么就不能实时地进行操作。由此可见,各CPU应当最好于在先CPU做好写准备之前或在先CPU做好写准备的那一刻就做好读取准备。当然,这不总是可能的(如图12a-b所示),但是在对CPU进行编程时,将其作为目标来谨记是有帮助的。图11为通过示出通过相连的CPU 1102、1104、1106和1108组从左到右顺序传输数据时在一连串时间处优化流水线1100的状态来描绘这一点的框图。在t时刻,CPU 1102向CPU 1104写(W),而CPU 1104、1106、1108都在读取(R)。在t+1时刻,此时CPU 1104有数据,并将该数据写入CPU 1106,而CPU 1106、1108在读取。在t+2时刻,此时CPU 1106有数据,并将该数据写入CPU 1108,而CPU 1108在读取。
规则3避免了CPU的流水线“减速”(这里与液体运送流水线进行类比变得有些勉强)。图12a-b是在形式上示出图11的流水线1100中的初始数据流的示意图,既有没有遵循规则3的情况,也有遵循规则3的情况(这里时间的前进方向是从左到右)。
图12a示出在采用传统的读(R)、处理(P)和写(W)的操作次序的情况下经过流水线1100的数据流。所有的操作具有最小执行时间(为了简单起见,这里所示出的相同),但是读(R)和写(W)操作在等待对应的写(W)或读(R)发生的时候,可能需要除最小时间之外的额外时间。特别是在异步CPU中,用于处理(P)操作的时间可能随手边的任务而具有相当可观的变化。因此,在实际应用中,处理(P)操作通常会比在此描绘的需要更长的时间,因此那些类似于图12a所示的问题很可能会变得更差。
在图12a中描绘出反转1112。当在这里开始写操作1114时,两个读操作1116和1118正在等待,CPU 1108向CPU 1106写。进一步,在流水线1100中,这会更差。例如,当CPU 1108开始写时,CPU 1110可能正忙于处理或写,然后只有CPU 1106可能在视图读取。反转1112几乎可以确定不是流水线1110的编程者所期望的或预期的,它很可能破坏运算精度,或使流水线1110正在进行的应用崩溃。
图12a还示出反转1112以何种方式显著增加CPU 1110读取(即等待)数据以开始工作所花费的时间。然而,就这一点而论,从其它方面来说经过图12a中流水线1110的时序可能也不是最理想的,如通过图12a和图12b的比较结果可以看出的。
图12b示出在采用读(R)、处理(P)和写(W)的操作次序的情况下通过流水线1100的数据流。如这里可以看出的,不存在反转,且CPU 1102、1104、1106、1108和1110都尽快接收数据以开始工作。
图12b中示出的结点图示出这里的流水线1100的有用的额外特征(这些应当与转移操作混淆)。在CPU中进行读(R)和写(R)操作之后,以CPU 1102为例,刚写入CPU 1104的数据不必然是从CPU 1102得到的。因此,对于一起工作的CPU 1102中随后的处理(P)操作,该数据是可获得的。这对于利用相同的值来初始化CPU(例如使存贮位置归零或设置计数器)是有用的。另外,一些种类的算法也可以受益于此。这些算法例如将单个数据采样给予若干个CPU,然后在各CPU中以不同的系数值来进行处理的算法。
可替换地,可通过使用初始读(R)、写(W)和单个nop指令作为处理(P)向CPU 1102、1104、1106、1108、1110中的各CPU提供不同的第一数据值,直到流水线中的所有CPU具有数据为止,然后这些CPU都使用这些数据来并行进行实际的处理。
可以在不改变本发明的实施例的值或范围的情况下,对其进行各种额外的修改。例如,虽然这里在读指令和写指令方面对该发明进行了描述,但是在实际应用中,可以存在至少两种读类型指令和/或至少两种写类型指令。仅作为一个例子,在计算机12的一个实施例中,存在使寄存器递增的写指令和不使寄存器递增的其它写指令。类似地,可以根据使用哪个寄存器40来选择通信端口38等而改变写指令,如这里先前所描述的。还可以存在若干不同的读指令,仅取决于计算机12的设计者认为哪种改变是作为替换的读行为的有用选项。
类似地,尽管在这里已经关于单个电路小片14上的阵列10中的计算机12之间的通信描述了本发明的实施例,但相同的原理和方法可用于或被修改为用于完成其它器件间通信,例如计算机12与其专用存储器之间的通信,或阵列10中的计算机12与外部器件之间的通信(通过输入/输出端口等)。实际上,预计到,一些应用可能需要阵列的阵列-利用当前描述的器件间通信方法潜在地适用于阵列的阵列中的通信。
尽管这里已讨论了计算机阵列10和计算机12的具体例子及其规则1000的具体例子,但是,预期将存在很多还无法想象的应用。实际上,本发明的一个优势在于本创造性方法及装置可以适于大量使用。
本发明还提供一种计算机程序,当该计算机程序在计算机组上运行时,使该计算机组实施在此之前所描述的创造性方法。该程序可以位于载体上。该载体可以是信号或存贮设备。该存贮设备可以是记录介质或在其它例子中的存储器设备。
上面的所有仅是本发明的可用实施例的一些例子。本领域技术人员将容易看出可以在不脱离本发明的精神或范围的情况下,进行大量其它的修改和变动。相应地,这里的公开内容目的不意在限定,且所附的权利要求被解释为包含本发明的全部范围。

Claims (15)

1、一种由计算机组处理数据的方法,其中该计算机组包括首计算机和末计算机,并且,其中除首计算机之外的各计算机前面均置有在先计算机,且除末计算机之外的各计算机后面均置有后续计算机,该处理包括:
在被视为当前计算机的各计算机中:
(a)利用当前计算机读取新数据;
(b)在所述(a)之后,利用当前计算机写旧数据;
(c)在所述(b)之后,处理当前计算机中的所述新数据,以生成所述旧数据;并且
(d)在所述(c)之后,如果当前计算机非末计算机,则将所述旧数据保存在当前计算机中。
2、根据权利要求1所述的方法,其中:
所述(a)包括:从在先计算机读取所述旧数据作为所述新数据,或者,
在为首计算机的情况下,从该计算机组的外部读取数据作为所述新数据。
3、根据权利要求1或2所述的方法,其中:
所述(b)包括:将所述旧数据写入后续计算机,或者,
在为末计算机的情况下,将所述旧数据写到该计算机组的外部。
4、根据权利要求1、2或3所述的方法,其中:
该计算机组为利用数据路径连接以互相通信的两维以上计算机阵列。
5、根据权利要求4所述的方法,进一步包括:
利用可编程设置的位来使所述数据路径寻址到至少在先计算机和后续计算机,使得所述当前计算机可以通过作为所述位并发设置的基础的所述数据路径进行通信。
6、根据权利要求5所述的方法,其中
所述(a)包括从由所述位并发指定的若干个计算机中的一个计算机读
7、根据权利要求5或6所述的方法,其中
所述(b)包括将所述旧数据写入由所述位并发指定的若干个计算机中的一个计算机。
8、根据前述权利要求中任一项所述的方法,其中
所述(a)包括将所述新数据压入堆栈;且
所述(b)包括将所述旧数据从堆栈中弹出。
9、一种处理数据的计算机组,其中该计算机组包括首计算机和末计算机,并且,其中除首计算机之外的各计算机前面均置有在先计算机,且除末计算机之外的各计算机后面均置有后续计算机,所述各计算机均包括:
通过第一数据路径读取新数据的读逻辑;
通过第二数据路径写旧数据的写逻辑;
处理所述新数据以生成所述旧数据的处理逻辑;并且
存贮所述旧数据的存贮元件,针对除末计算机之外的各计算机;
其中所述写逻辑在所述读逻辑之后操作,且所述写逻辑在所述处理逻辑之前操作。
10、根据权利要求9所述的计算机组,其中:
所述读逻辑从在先计算机读取所述旧数据作为所述新数据,或者,
在为首计算机的情况下,从该计算机组的外部读取数据作为所述新数据。
11、根据权利要求9或10所述的计算机组,其中:
所述写逻辑将所述旧数据写入后续计算机,或者,
在为末计算机的情况下,将所述旧数据写到该计算机组的外部。
12、根据权利要求9、10或11所述的计算机组,其中:
该计算机组为利用若干条第一数据路径和若干条第二数据路径连接的两维以上计算机阵列。
13、根据权利要求12所述的计算机组,进一步包括:
具有位的寄存器,所述位可编程设置为对所述各数据路径进行寻址,使
具有位的寄存器,所述位可编程设置为对所述各数据路径进行寻址,使得所述计算机可以通过所述数据路径中作为所述位并发设置的基础的若干条数据路径来进行通信,从而允许用所述寄存器中的单个地址兼表示数据的源和目的两者。
14、根据权利要求9至13中任一项所述的计算机组,其中:
所述读逻辑将所述新数据压入堆栈;且
所述写逻辑将所述旧数据从所述堆栈中弹出。
15、一种计算机程序,当该计算机程序在计算机组上运行时,使该计算机组实施根据权利要求1至8中任一项所述的方法。
CNA2008100940859A 2007-04-27 2008-04-25 用于在计算机组中处理数据的系统及方法 Pending CN101295242A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/741,659 2007-04-27
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
CN101295242A true CN101295242A (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 After (1)

Application Number Title Priority Date Filing Date
CNA2008100940844A Pending CN101295241A (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
CN101295241A (zh) 2008-10-29
TW200905556A (en) 2009-02-01
JP2009009550A (ja) 2009-01-15
US7555637B2 (en) 2009-06-30
WO2008133980A2 (en) 2008-11-06
KR20080096484A (ko) 2008-10-30
EP1986093A1 (en) 2008-10-29

Similar Documents

Publication Publication Date Title
US11182334B2 (en) Shared memory access for reconfigurable parallel processor using a plurality of memory ports each comprising an address calculation unit
CN101295242A (zh) 用于在计算机组中处理数据的系统及方法
US10949328B2 (en) Data flow graph computation using exceptions
CN101438260A (zh) 计算机阵列中的资源分配
JPS62208158A (ja) マルチプロセツサシステム
CN101339544A (zh) 用于将数据和指令载入计算机的方法及装置
US11803508B2 (en) Systems and methods for implementing a machine perception and dense algorithm integrated circuit and enabling a flowing propagation of data within the integrated circuit
JP2002509302A (ja) メモリサブシステムに複数のメモリアルゴリズムプロセッサを組込むマルチプロセッサコンピュータアーキテクチャ
CN102270189A (zh) 基于fpga多核系统的核间通信方法
JPH06509671A (ja) 並列構造を有するプロセッサボードのシステムアーキテクチャ
CN101097559A (zh) 一种实现主处理器与协处理器接口与互连的系统及方法
CN101563679A (zh) 用于监控计算机的输入的方法和装置
US20180324112A1 (en) Joining data within a reconfigurable fabric
EP3729254A2 (en) A programmable multiply-add array hardware
JPS60136870A (ja) ベクトル処理装置
CN113805940B (zh) 用于人工智能和机器学习的向量加速器
CN101258480A (zh) 具有分离串行模块的处理器阵列
JP2556083B2 (ja) 複合演算パイプライン回路
JP2009527814A (ja) コンピュータのアレイ間でのリソースの割り当て
JPS63204322A (ja) 情報処理装置
JPH0228765A (ja) 命令処理順序制御システム
CN102184089A (zh) 一种动态可重构处理器内数据流运转的方法
KR20090016642A (ko) 비동기적 컴퓨터 통신
JPS63208153A (ja) 階層構造プロセツサシステム
JPS62295163A (ja) 並列デ−タ処理装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20081029