CN101040268A - 宽带网络计算机体系结构中的外部数据接口 - Google Patents
宽带网络计算机体系结构中的外部数据接口 Download PDFInfo
- Publication number
- CN101040268A CN101040268A CNA2005800335606A CN200580033560A CN101040268A CN 101040268 A CN101040268 A CN 101040268A CN A2005800335606 A CNA2005800335606 A CN A2005800335606A CN 200580033560 A CN200580033560 A CN 200580033560A CN 101040268 A CN101040268 A CN 101040268A
- Authority
- CN
- China
- Prior art keywords
- data
- apu
- memory
- processor
- memory location
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1483—Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Multi Processors (AREA)
- Communication Control (AREA)
- Bus Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
系统配置包括处理元件(PE),输入/输出(I/O)接口设备和共享存储器。PE进一步包括至少一个处理单元(PU),以及一个或更多附连处理单元(APU)。APU中的至少一个通过从连接到I/O接口设备的外部设备读取数据、并且将数据写入其中来执行I/O功能。利用数据级同步机构、经由共享存储器,在APU和I/O接口设备之间交换数据。
Description
对相关专利申请的交叉引用
本申请是以下共同待审、共同受让的美国专利申请的部分延续:2001年3月22提交的、申请号码为09/816,004的“宽带网络的计算机体系结构和软件单元”;2001年3月22提交的、申请号码为09/815,554的“用于宽带网络计算机体系结构的数据同步的系统和方法”;2001年3月22提交的、申请号码为09/816,020的“用于宽带网络计算机体系结构的存储器保护系统和方法”;2001年3月22提交的、申请号码为09/815,558的“用于宽带网络计算机体系结构的资源专用系统和方法”;以及2001年3月22提交的、申请号码为09/816,752的“宽带网络计算机体系结构的处理模块”;所有这些在此被引用为参考。
技术领域
本发明涉及计算机处理器和计算机网络的体系结构,并且特别涉及宽带环境中计算机处理器和计算机网络的体系结构。
背景技术
对于当前计算机网络,例如办公室网络中所使用的局域网(LAN),以及诸如Internet的全球网络,其计算机和计算设备主要是为单机计算设计的。通过计算机网络共享数据和应用程序(“应用”)不是这些计算机和计算设备的主要设计目的。通常还使用各种类型的、由各不同生产商,例如摩托罗拉、Intel、德州仪器、索尼以及其它公司生产的处理器来设计这些计算机和计算设备。这些处理器中的每个都具有其独特的指令集和指令集体系结构(ISA),即,具有其独特的汇编语言指令集,和用于执行这些指令的基本计算单元和存储器单元的结构。因此,程序员需要理解每个处理器的指令集和ISA,以便写出针对这些处理器的应用程序。当前计算机网络上的计算机和计算设备的这种异构组合使得数据和应用程序的处理和共享复杂化。而且,经常需要同一应用程序的多个版本,以便适应这种异构环境。
连接到全球网络,尤其是连接到Internet的计算机和计算设备的种类是非常广泛的。除个人计算机(PC)和服务器之外,这些计算设备还包括蜂窝电话、移动计算机、个人数字助理(PDA)、机顶盒、数字电视和许多其它设备。在如此多样的计算机和计算设备之间共享数据和应用程序带来了相当大的问题。
为克服这些问题,已经使用了很多技术。尤其是,这些技术包括高级的接口和复杂的编程技术。这些解决方案的实现通常需要处理能力有相当大的增加。它们还经常导致在网络上处理应用程序和发送数据所需的时间大幅度增加。
通常,通过Internet从相应的应用程序分别发送数据。该方法避免了利用对应于应用程序的每组发送数据发送应用程序的必要性。虽然该解决方案将所需带宽最小化,但是它还是常常引起用户之间的干扰。在客户端计算机上可能得不到用于发送数据的正确应用程序或最新应用程序。该方案还需要针对网络上处理器所使用的不同ISA和指令集的多样性编写每个应用程序的多个版本。
Java模型试图解决这个问题。该模型使用服从严格安全协议的小应用程序(“applet”)。通过网络从服务器计算机发送Applet以便由客户端计算机(“client”)运行。为避免必须向使用不同ISA的客户端发送相同applet的不同版本,所有Java applets均在客户端的Java虚拟机上运行。Java虚拟机是模拟具有Java ISA和Java指令集的计算机的软件。然而,该软件在客户端的ISA和客户端的指令集上运行。Java虚拟机的版本被提供给客户端的每个不同ISA和指令集。因此,就不需要每个applet的多个不同版本。每个客户端仅下载针对其特定的ISA和指令集的正确Java虚拟机来运行所有Java applets。
虽然给必须针对每个不同ISA和指令集编写应用程序的不同版本的问题提供了解决方案,但是Java处理模型在客户端计算机上仍需要附加的软件层。该附加的软件层明显降低了处理器的处理速度。这种速度降低对于实时、多媒体应用来说尤其明显。下载的Java applet还可能包含病毒、处理故障等等。这些病毒和故障会破坏客户端的数据库,并且造成其它损坏。虽然Java模型中所采用的安全协议试图通过实现软件“沙箱”来解决这个问题(“沙箱”是客户端的存储器中的空间,超出该空间,Java applet不能写数据),但是该软件驱动的安全模型在其实现中常常是不安全的,并且需要更多的处理。
实时、多媒体、网络应用正变得越来越重要。这些网络应用需要极快的处理速度。将来,这种应用程序可能需要每秒若干千兆位的数据。目前的网络体系结构,尤其是Internet的体系结构,以及当前在例如Java模型里嵌入的编程模型使得达到这种处理速度极其困难。
因此,需要一种新的计算机体系结构、一种新的计算机网络体系结构和一种新的编程模型。该新的体系结构和编程模型应当在不产生增加计算负担的情况下解决各种网络成员之间共享数据和应用程序的问题。该新的计算机体系结构和编程模型还应当解决在网络成员之间共享应用程序和数据时所固有的安全问题。
发明内容
提供了一种用于通过宽带网络进行高速处理的计算机体系结构。具体地说,根据本发明,系统包括用于传送数据的接口设备和用于存储数据的存储器,其中存储器包括至少一个存储器位置以及与其相关的状态信息,其中状态信息包括第一字段和地址字段,并且其中当第一字段的值等于第一值,并且地址字段的值等于第二值时,数据到相关存储器位置的后续写入使得存储在其中的数据被写到由地址字段值表示的地址。
在本发明的一个实施例中,系统配置包括处理元件(PE),输入/输出(I/O)接口设备和共享存储器。PE进一步包括至少一个处理单元(PU),以及一个或多个附连处理单元(APU)。APU中的至少一个通过从连接到I/O接口设备的外部设备读取数据以及将数据写入此外部设备来执行I/O功能。利用数据级同步机构,在APU和I/O接口设备之间经由共享存储器交换数据。具体地说,共享存储器包括与至少一个用于存储数据的存储器位置相关的至少一个状态信息位置,其中状态信息位置包括第一字段和地址字段,其中当第一字段的值等于第一值,并且地址字段的值等于第二值时,数据到相关存储器位置的后续写入使得存储在其中的数据被写到由地址字段值表示的地址。
附图说明
图1说明了本发明的计算机网络的整体体系结构
图2说明了本发明的处理器单元(PE)的结构。
图3说明了本发明的宽带引擎(BE)的结构。
图4说明了本发明的附连处理单元(APU)的结构。
图5说明了本发明的处理器元件、观察器(VS,visualizer)和光学接口的结构。
图6说明了本发明的处理器元件的一种组合。
图7说明了本发明的处理器元件的另一种组合。
图8说明了本发明的处理器元件的另一种组合。
图9说明了本发明的处理器元件的另一种组合。
图10说明了本发明的处理器元件的另一种组合。
图11A说明了本发明的芯片封装内光学接口的集成。
图11B是使用图11A的光学接口的处理器的一种结构的图。
图11C是使用图11A的光学接口的处理器的另一种结构的图。
图12A说明了本发明的存储器系统的结构。
图12B根据本发明说明了从第一宽带引擎到第二宽带引擎的数据写入。
图13是本发明的处理器元件的共享存储器的结构图。
图14A说明了图13中所示的存储器的存储体的一种结构。
图14B说明了图13中所示的存储器的存储体的另一种结构。
图15说明了本发明的直接存储器存取控制器的结构。
图16说明了本发明的直接存储器存取控制器的可选结构。
图17A-17O说明了本发明的数据同步操作。
图18是根据本发明的数据同步模式说明存储器位置的不同状态的三状态存储器图。
图19说明了本发明的硬件沙箱的关键字控制表的结构。
图20说明了用于存储本发明的硬件沙箱的存储器存取关键字的方案。
图21说明了用于本发明的硬件沙箱的存储器存取控制表的结构。
图22是使用图19的关键字控制表和图21的存储器存取控制表访问存储器沙箱的步骤的流程图。
图23说明了本发明的软件单元的结构。
图24是根据本发明向APU发出远程过程调用的步骤的流程图。
图25说明了本发明用于处理流数据的专用流水线的结构。
图26A-26B是根据本发明由图25所示的专用流水线在处理流数据时执行的步骤的流程图。
图27说明了根据本发明用于处理流数据的专用流水线的可选结构。
图28说明了根据本发明用于协调由APU对应用程序和数据的并行处理的绝对定时器的方案。
图29-30示出了根据本发明的原理使用数据级同步的结构的图解实施例。
图31-32示出了根据本发明的原理用于执行数据级同步的示例性流程图。
图33-34说明了在APU和外部设备之间利用数据级同步。
图35示出了根据本发明的原理示例性数据级同步状态信息。
图36示出了根据本发明的原理使用数据级同步的结构的另一个图解实施例。
图37示出了示例性握手序列。
图38示出了根据本发明的原理使用数据级同步的结构的另一个图解实施例。
图39示出了根据本发明的原理使用数据级同步的结构的另一个图解实施例。
图40示出了根据本发明的原理用于执行数据级同步的示例性流程图。
图41提供了在APU和外部设备之间利用数据级同步的另一个说明。
图42示出了根据本发明的原理使用数据级同步的结构的另一个图解实施例。
具体实施方式
图1中示出了根据本发明的计算机系统101的整体体系结构。
如该图所示,系统101包括多个计算机和计算设备连接到的网络104。网络104可以是LAN、诸如Internet的全球网络或任何其他计算机网络。
连接到网络104的计算机和计算设备(网络的“成员”)包括例如客户端计算机106、服务器计算机108、个人数字助理(PDA)110、数字电视(DTV)112、以及其它有线或无线的计算机和计算设备。网络104的成员所采用的处理器由相同的公用计算模块构建。这些处理器最好还都具有相同的ISA,并且根据相同的指令集执行处理。任何一个特定处理器内包含的模块数量取决于该处理器所需的处理能力。
例如,由于系统101的服务器108比客户端106执行更多的数据处理和应用,所以服务器108比客户端106包含更多的计算模块。另一方面,PDA 110执行的处理量最少。因此,PDA 110包含的计算模块数量最少。DTV 112执行的处理量介于客户端106和服务器108的之间。因此,DTV 112包含的计算模块数量介于客户端106和服务器108的之间。如下面所讨论,每个计算模块包含一个处理控制器和多个相同处理单元,用于执行通过网络104传送的数据和应用程序的并行处理。
系统101的这种同构结构有利于提高适应性、处理速度和处理的效率。因为系统101的每个成员利用一个或多个(或某些部分)相同计算模块来执行处理,所以执行数据和应用程序的实际处理的特定计算机或计算设备是不重要的。而且,特定应用程序和数据的处理可在网络的成员间分享。通过在整个系统唯一标识含有由系统101处理的数据和应用程序的单元,则无论处理在哪里进行,都可以将该处理结果传送到请求处理的计算机或计算设备。因为执行该处理的模块具有公用结构并使用公用ISA,所以避免了为实现处理器之间的兼容性而附加的软件层的计算负担。该体系结构和编程模型有利于得到执行例如实时、多媒体应用程序所必需的处理速度。
为进一步利用由系统101带来的处理速度和效率,将由该系统处理的数据和应用程序封装到唯一标识的、统一格式化的软件单元102中。每个软件单元102包含或可以包含应用程序和数据。每个软件单元还包含在整个网络104和系统101中全局性地标识该单元的ID。软件单元结构的这种一致性以及软件单元在整个网络中的唯一标识,有利于在网络的任何一个计算机或计算设备上处理应用程序和数据。例如,客户端106可以形成软件单元102,但是因为客户端106的处理能力有限,可以将该软件单元发送到服务器108来处理。因此,软件单元可以在整个网络104中迁移,以便根据网络上的处理资源的可用性进行处理。
系统101的处理器和软件单元的同构结构还避免了现今的异构网络的许多问题。例如,设法允许在使用任何指令集的任何ISA,例如Java虚拟机这样的虚拟机上进行应用程序处理的低效编程模型得以避免。因此,系统101可实现远比现今网络能有效和高效的宽带处理。
用于网络104的所有成员的基本处理模块是处理器元件(PE)。图2说明了PE的结构。如图所示,PE 201包含处理单元(PU)203、直接存储器存取控制器(DMAC)205和多个附连处理单元(APU),即APU207、APU 209、APU 211、APU 213、APU 215、APU 217、APU 219和APU 221。局部PE总线223在APU、DMAC 205和PU 203间传输数据和应用程序。局部PE总线223可具有例如传统体系结构,或者可以被实现成分组交换网络。虽然需要更多的硬件,然而实现成分组交换网络可增加可用带宽。
可使用用于实现数字逻辑的各种方法来构建PE 201。然而,PE201最好被构造成使用硅衬底上的互补金属氧化物半导体(CMOS)的单个集成电路。可选的衬底材料包括砷化镓,镓铝砷化物,以及其它使用各种掺杂物的所谓III-B化合物。还可使用超导材料,例如快速单磁通量子(RSFQ)逻辑来实现PE 201。
PE 201通过高带宽存储器连接227与动态随机存取存储器(DRAM)225紧密相关。DRAM 225用作PE 201的主存储器。虽然DRAM 225最好是动态随机存取存储器,但也可使用其它装置将DRAM 225实现成例如静态随机存取存储器(SRAM)、磁性随机存取存储器(MRAM)、光存储器或全息存储器。DMAC 205利于在DRAM225与PE 201的APU和PU之间传输数据。如下面进一步讨论的,DMAC 205在DRAM 225中为每个APU指定一个独占区域,只有该APU可以往里写数据或从中读数据。这个独占区域被称为“沙箱”。
PE 203可以是例如能够独立处理数据和应用程序的标准处理器。在操作中,PU 203调度并编排APU对数据和应用程序的处理。APU最好是单指令多数据(SIMD)处理器。在PU 203的控制下,APU以并行和独立的方式执行这些数据和应用程序的处理。DMAC 205控制PU203和APU对存储在共享DRAM 225中的数据和应用程序的存取。虽然PE 201最好包括八个APU,但也可根据所需的处理能力在PE中使用更多或更少数目的APU。PU203和某些APU,或全部APU可以具有相同的硬件结构和/或功能。必要时,通过软件将个别处理器配置成控制或被控制处理器。例如,图3中,PE 201可包括9个具有相同体系结构的处理器。9个处理器中的一个可被指定为控制处理器(例如PU203),而剩余的处理器可被指定为被控制处理器(例如APU207、209、211、213、215、217、219和221)。并且,可将若干像PE 201这样的PE连接或封装在一起以提供增强的处理能力。
例如,如图3所示,可将四个PE一起封装或连接在例如一个或多个芯片封装内,以形成用于网络104的成员的单个处理器。这种结构被称为宽带引擎(BE)。如图3所示,BE 301包含四个PE,即PE 303、PE 305、PE 307和PE 309。通过BE总线311进行这些PE之间的通信。宽带宽存储器连接313提供共享DRAM 315与这些PE之间的通信。作为BE总线311的替代,可通过DRAM 315和这个存储器连接进行BE 301的PE之间的通信。
输入/输出(I/O)接口317和外部总线319提供宽带引擎301和网络104的其它成员之间的通信。与PE的APU执行的并行与独立的应用程序和数据处理相类似,BE 301的每个PE以并行和独立的方式执行数据和应用程序的处理。
图4说明了APU的结构。APU 402包括局部存储器406,寄存器410,四个浮点单元412和四个整数单元414。P15然而,根据所需要的处理能力,可以使用更多或更少数目的浮点单元412和整数单元414。在优选实施例中,局部存储器406包含128千字节的存储量,并且寄存器410的容量是128×128位。浮点单元412最好以320亿(32billion)次浮点运算每秒(32 GFLOPS)的速度工作,整数单元414最好以320亿次运算每秒(32 GOPS)的速度工作。
局部存储器402不是高速缓冲存储器。局部存储器402最好被构造成SRAM。对APU的高速缓存一致性支持是没有必要的。对于由PU启动的直接存储器存取,PU会需要高速缓存一致性支持。然而,对于由APU启动的直接存储器存取或针对外部设备的存取,则不需要高速缓存一致性支持。
APU 402还包含总线404,用于针对APU传送应用程序和数据。在优选实施例中,该总线的宽度是1024位。APU 402还包括内部总线408、420和418。在优选实施例中,总线408的宽度是256位,提供局部存储器406与寄存器410之间的通信。总线420和418分别提供寄存器410和浮点单元412之间,寄存器410和整数单元414之间的通信。在优选实施例中,从寄存器410到浮点单元或整数单元的总线418和420的宽度是384位,从浮点或整数单元到寄存器410的总线418和420的宽度是128位。这些总线中,从寄存器410到浮点或整数单元的宽度比从这些单元到寄存器410的宽度大,这样可适应处理期间来自寄存器410的较大数据流。每次计算最多需要三个字。然而,每次计算的结果通常只是一个字。
图5-10进一步说明了网络104的成员的处理器的模块化结构。例如,如图5所示,处理器可以包含单个PE 502。如上所述,该PE通常包含一个PU、一个DMAC和八个APU。每个APU包括局部存储器(LS)。另一方面,处理器可包含观察器(VS,visualizer)505的结构。如图5所示,VS 505包含PU 512、DMAC 514和四个APU,即APU 516、APU 518、APU 520和APU 522。在这种情况下,通常由PE的其它四个APU占有的芯片封装内空间则由像素引擎508,图象高速缓存510,以及阴极射线管控制器(CRTC)504占用。根据PE 502或VS 505所需要的通信速度,光学接口506也可被包括在芯片封装内。
使用这种标准模块化的结构,可以很容易和有效地构建处理器的许多其他变种。例如,图6所示的处理器包含两个芯片封装,即包含一个BE的芯片封装602和包含四个VS的芯片封装604。输入/输出(I/O)606提供芯片封装602的BE与网络104之间的接口。总线608提供芯片封装602与芯片封装604之间的通信。输入输出处理器(IOP)610控制数据流入和流出I/O 606。I/O 606可以制造成专用集成电路(ASIC)。从VS输出的是视频信号612。
图7说明了带有两个光学接口704和706的BE 702的芯片封装,所述光学接口用于提供与网络104的其它成员(或本地连接的其它芯片封装)的甚高速通信。BE 702可用作例如网络104上的服务器。
图8的芯片封装包含两个PE 802和804,以及两个VS 806和808。I/O 810提供芯片封装与网络104间的接口。从芯片封装输出的是视频信号。这种结构可用作例如图形工作站。
图9说明了另外一种结构。该结构包含图8中说明的结构的处理能力的一半。提供一个PE 902,而不是两个PE,并且提供一个VS 904,而不是两个VS。I/O 906的带宽是图8中说明的I/O带宽的一半。然而,这样的处理器也可用作图形工作站。
最后一种结构如图10所示。该处理器仅由一个单一的VS 1002和I/O 1004组成。这种结构可用作例如PDA。
图11A说明了光学接口在网络104的处理器的芯片封装中的集成。这些光学接口将光信号转换成电信号,并将电信号转换成光信号,它们可以用各种材料制成,包括例如砷化镓、镓铝砷化物、锗以及其它元素和化合物。如图中所示,光学接口1104和1106被做在BE 1102的芯片封装上。BE总线1108提供BE 1102的多个PE,即PE 1110、PE 1112、PE 1114、PE 1116与这些光学接口之间的通信。光学接口1104包括两个端口,即端口1118和端口1120,并且光学接口1106也包括两个端口,即端口1122和端口1124。端口1118、1120、1122和1124分别连接到光波导1126、1128、1130和1132。通过光学接口1104和1106的端口,经由这些光波导针对BE 1102传送光信号。
使用这种光波导和每个BE的四个光端口可将多个BE按各种结构连接在一起。例如,如图11B所示,通过这种光端口可将两个或多个BE,例如BE 1152、BE 1154和BE 1156串行连接在一起。在该例中,BE 1152的光学接口1166通过其光端口连接到BE 1154的光学接口1160的光端口。以类似的方式,BE 1154上光学接口1162的光端口连接到BE 1156上光学接口1164的光端口。
图11C说明了一种矩阵结构。在该结构中,每个BE的光学接口连接到两个其它的BE上。如图中所示,BE 1172的光学接口1188的一个光端口连接到BE 1176的光学接口1182的光端口。光学接口1188的另一个光端口连接到BE 1178的光学接口1184的光端口。以类似的方式,BE 1174的光学接口1190的一个光端口连接到BE 1178的光学接口1184的另一个光端口。光学接口1190的另一个光端口连接到BE 1180的光学接口1186的光端口。这种矩阵结构可按类似的方式延及其它BE。
通过使用串联结构或矩阵结构,可构建网络104的具有任何期望大小和能力的处理器。当然,可以向BE的光学接口,或其PE数目多于或少于BE的PE数目的处理器增加附加端口,以形成其它的结构。
图12A说明了用于BE的DRAM的控制系统和结构。类似的控制系统和结构被用于具有其它大小和包含或多或少的PE的处理器中。如图中所示,交叉开关将构成BE 1201的四个PE的各个DMAC 1210连接到八个存储体控制器1206。每个存储体控制器1206控制DRAM1204的八个存储体1208(图中只画出了四个)。因此,DRAM 1204总共包含64个存储体。在优选实施例中,DRAM 1204具有64兆字节的容量,并且每个存储体具有1兆字节的容量。在该优选实施例中,每个存储体中的最小可寻址单位是1024位块。
BE 1201还包括开关单元1212。开关单元1212能够使BE上的其它APU紧密耦合到BE 1201,以便访问DRAM 1204。因此,第二BE可以紧密耦合到第一BE,并且每个BE的每个APU可以寻址的存储器位置的数量是通常可由APU访问的存储器位置的数量的两倍。通过例如开关单元1212的开关单元,可以直接从第一BE的DRAM到第二BE的DRAM,或从第二BE的DRAM到第一BE的DRAM的读取或写入数据。
例如,如图12B所示,为完成这种写操作,第一BE的APU,例如,BE 1222的APU 1220向第二BE的DRAM,例如BE 1226的DRAM1228(而不是象通常的情况那样向BE 1222的DRAM 1224)的存储器位置发出写命令。BE 1222的DMAC 1230通过交叉开关1221向存储体控制器1234发送写命令,并且存储体控制器1234向连接到存储体控制器1234的外部端口1232发送该命令。BE 1226的DMAC 1238接收该写命令,并将该命令传送到BE 1226的开关单元1240。开关单元1240识别包含在写命令中的DRAM地址,并通过BE 1226的存储体控制器1242向DRAM 1228的存储体1244发送存储在该地址中的数据。因此,开关单元1240使DRAM 1224和DRAM 1228能够充当BE1222的APU的单独存储空间。
图13说明了DRAM的64存储体的结构。这些存储体排列成八行,即行1302、1304、1306、1308、1310、1312、1314和1316,和八列,即列1320、1322、1324、1326、1328、1330、1332和1334。每行由一个存储体控制器控制。因此,每个存储体控制器控制八兆字节的存储器。
图14A和14B说明了用于存储和访问DRAM的最小可寻址存储单位,例如1024位块的不同结构。在图14A中,DMAC 1402在单个存储体1404中存储八个1024位块1406。另一方面,在图14B中,当DMAC 1412读和写包含1024位的数据块时,这些块在两个存储体,即存储体1414和存储体1416之间交错。因此,这些存储体中的每一个包含16个数据块,并且每个数据块包含512位。这种交错可有利于更快速地访问DRAM,并且在某些应用程序的处理中是非常有用的。
图15说明了PE中的DMAC 1504的体系结构。如图中所示,构成DMAC 1506的结构硬件在整个PE中分布,使得每个APU 1502直接访问DMAC 1506的结构节点1504。每个节点执行适合于由该节点直接访问的APU进行存储器访问的逻辑。
图16示出了DMAC,即非分布式体系结构的一个可选实施例。在这种情况下,DMAC 1606的结构硬件是集中式的。APU 1602和PU1604通过局部PE总线1607与DMAC 1606通信。DMAC 1606通过交叉开关连接到总线1608。总线1608连接到DRAM 1610。
如上所述,PE的所有多个APU可独立访问共享DRAM中的数据。结果,在第二APU请求第一APU的局部存储器中的特定数据时,第一APU可能正对该数据进行操作。如果此时将数据从共享DRAM提供到第二APU,则数据可能是无效的,因为第一APU正在进行的处理可能改变数据的值。因此,如果此时第二处理器接收到了来自共享DRAM的数据,则第二处理器可能会产生错误的结果。例如,数据可能是全局变量的特定值。如果第一处理器在其处理过程中改变了该值,则第二处理器会接收到一个过期值。因此,必须有一种方案来同步APU对共享DRAM中的存储器位置进行的数据读出和写入。该方案必须防止从这样的存储器位置读取数据,其中另一APU当前正在其局部存储器中对该存储器位置进行操作,因此此时读取的数据不是最新的,并且防止向存储当前数据的存储器位置写数据。
为了解决这些问题,对于DRAM的每个可寻址存储器位置,在DRAM中分配一个附加存储段以存储有关该存储器位置中存储的数据的状态信息。这种状态信息包括满/空(F/E)位,向存储器位置请求数据的APU的标识(APU ID),以及从其读取所请求数据的APU局部存储器的地址(LS地址)。DRAM的可寻址存储器位置可以具有任意大小。在优选实施例中,该大小是1024位。
将F/E位设成1表示存储在相关存储器位置中的数据是最新的。相反,将F/E位设成0表示存储在相关存储器位置中的数据不是最新的。如果APU在该位被设成0时请求数据,则禁止APU立即读取数据。在这种情况下,标识请求数据的APU的APU ID,和LS地址被记入到附加存储段中,其中LS地址标识在数据变为最新数据时,数据将被读入的这个APU的局部存储器中的存储器位置。
对于APU的局部存储器中的每个存储器位置,也分配附加存储段。该附加存储段存储一个位,称为“忙位(busy bit)”。该忙位用于保留相关的LS存储器位置,用于存储从DRAM取回的特定数据。如果针对局部存储器中特定存储器位置的忙位被设成1,则APU只能将该存储器位置用于写入这些特定数据。反之,如果针对局部存储器中特定存储器位置的忙位被设成0,则APU可将该存储器位置用于写入任何数据。
图17A-17O说明了使用F/E位,APU ID,LS地址以及忙位来同步针对PE的共享DRAM的数据读写的方式的几个例子。
如图17A所示,一或多个例如PE 1720的PE与DRAM 1702交互。PE 1720包括APU 1722和APU 1740。APU 1722包括控制逻辑1724,而APU 1740包括控制逻辑1742。APU 1722还包括局部存储器1726。该局部存储器包括多个可寻址存储器位置1728。APU 1740包括局部存储器1744,该局部存储器还包括多个可寻址存储器位置1746。所有这些可寻址存储器位置的大小最好是1024位。
附加存储段与每个LS可寻址存储器位置相关。例如,存储段1729和1734分别与局部存储器位置1731和1732相关,并且,存储段1752与局部存储器位置1750相关。如上所述,“忙位”存储在这些附加存储段的每一个中。局部存储器位置1732如图所示具有几个X,表示该存储器位置包含数据。
DRAM 1702包含多个可寻址存储器位置1704,包括存储器位置1706和1708。这些存储器位置的大小最好也是1024位。附加存储段也与这些存储器位置中的每一个相关。例如,附加存储段1760与存储器位置1706相关,并且附加存储段1762与存储器位置1708相关。与存储在每个存储器位置的数据相关的状态信息被存储在与该存储器位置相关的存储段中。如上所述,该状态信息包括F/E位,APU ID和LS地址。例如,对于存储器位置1708,该状态信息包括F/E位1712,APU ID 1714和LS地址1716。
通过使用状态信息和忙位,能够实现在PE或一组PE的APU中间对共享DRAM的数据读写同步。
图17B说明了从APU 1722的LS存储器位置1732向DRAM 1702的存储器位置1708的数据同步写入的启动。APU 1722的控制器1724启动这些数据的同步写入。因为存储器位置1708是空的,所以F/E位1712设为0。结果,可以将LS存储器位置1732中的数据写入存储器位置1708中。另一方面,如果该位设为1以指示存储器位置1708是满的,并且包含的数据是最新和有效的,则控制器1722将收到错误消息,并且被禁止向该存储器位置写入数据。
图17C示出了成功地向存储器位置1708同步写入数据的结果。写入的数据被存储在存储器位置1708中,并将F/E位1712设成1。该设定指示存储器位置1708是满的,并且该存储器位置中的数据是最新和有效的。
图17D说明了从DRAM 1702的存储器位置1708同步读取数据到局部存储器1744的LS存储器位置1750的启动。为启动该读取操作,将LS存储器位置1750的存储段1752中的忙位设成1,以为这些数据保留该存储器位置。将该忙位设成1可禁止APU 1740在该存储器位置存储其它数据。
接着如图17E所示,控制逻辑1742针对DRAM 1702的存储器位置1708发出同步读命令。因为与该存储器位置相关的F/E位1712被设成1,所以存储在存储器位置1708中的数据被认为是最新和有效的。因此,将F/E位1712设成0,以准备将数据从存储器位置1708传送到LS存储器位置1750。该设定如图17F所示。将该位设成0表示:在读取这些数据之后,存储器位置1708中的数据无效。
接下来,如图17G所示,将存储器位置1708中的数据从存储器位置1708读到LS存储器位置1750中。图17H示出了最终的状态。将存储器位置1708中的数据的副本存储到LS存储器位置1750中。F/E位被设成0以指示存储器位置1708中的数据无效。这种无效是APU 1740对这些数据进行的修改的结果。存储段1752中的忙位也被设成0。该设定指示LS存储器位置1750现在可被APU 1740用于任何目的,即该LS存储器位置不再处于等待接收特定数据的保留状态。因此,APU 1740可对LS存储器位置1750进行任何目的的访问。
图17I-17O说明了当针对DRAM 1702的存储器位置的F/E位设成0以指示该存储器位置中的数据不是最新或有效时,从DRAM 1702的存储器位置(例如存储器位置1708)同步读数据到APU的局部存储器的LS存储器位置(例如局部存储器1744的LS存储器位置1752)的操作。如图171所示,为启动这种传送,将LS存储器位置1750的存储段1752中的忙位设成1,以保留该LS存储器位置用于该数据传输。接下来,如图17J所示,控制逻辑1742针对DRAM 1702的存储器位置1708发出同步读命令。由于与该存储器位置相关的F/E位,即F/E位1712被设成0,所以存储器位置1708中存储的数据是无效的。结果,向控制逻辑1742发送信号,以阻止从该存储器位置立即读取数据。
接着,如图17K所示,将用于该读命令的APU ID 1714和LS地址1716写入到存储段1762中。在这种情况下,将针对APU 1740的APU ID和针对LS存储器位置1750的LS存储器位置写入到存储段1762中。因此,当存储器位置1708中的数据变成最新时,使用该APUID和LS存储器位置来确定当前数据要发送到的位置。
当APU将数据写入该存储器位置时,存储器位置1708中的数据变为有效和最新的。图17L说明了从例如APU 1722的存储器位置1732到存储器位置1708的数据同步写操作。因为针对该存储器位置的F/E位被设为0,所以这些数据的这种同步写是许可的。
如图17M所示,在写操作之后,存储器位置1708中的数据变成最新和有效的。因此,立即从存储段1762读取来自存储段1762的APUID 1714和LS地址,然后将该信息从该存储段中删除。还将F/E位1712设成0,以期立即读取存储器位置1708中的数据。如图17N所示,当读取APU ID 1714和LS地址1716后,立即将该信息用于将存储器位置1708中的有效数据读到APU 1740的LS存储器位置1750中。最终状态示于图17O。该图示出从存储器位置1708复制到存储器位置1750的有效数据,存储段1752中的忙位设为0,并且存储段1762中的F/E位1712设为0。将此忙位设成0允许LS存储器位置1750现在可被APU 1740进行任何目的的访问。将F/E位设成0指示存储器位置1708中的数据不再是最新和有效的。
图18根据对应于存储器位置的存储段中存储的F/E位的状态,APU ID和LS地址,概括了上述操作和DRAM的存储器位置的各种状态。存储器位置可有三种状态。这三种状态是:空状态1880,其中F/E位设成0,并且不针对APU ID或LS地址提供信息;满状态1882,其中F/E位设成1,并且不针对APU ID或LS地址提供信息;阻塞状态1884,其中F/E位设成0,并且针对APU ID和LS地址提供信息。
如该图所示,在空状态1880中,允许同步写操作,并且导致切换到满状态1882。而同步读操作导致切换到阻塞状态1884,因为当存储器位置处于空状态时,存储器位置中的数据不是最新的。
在满状态1882中,允许同步读操作,并导致切换到空状态1880。另一方面,满状态1882下的同步写操作被禁止,以防止覆盖有效数据。如果在这种状态中试图进行这种写操作,则不发生状态改变,并且向APU的相应控制逻辑发送错误消息。
在阻塞状态1884中,允许对存储器位置进行同步数据写操作,并导致切换到空状态1880。另一方面,阻塞状态1884下的同步读操作被禁止,以防止与较早的、导致这种状态的同步读操作发生冲突。如果在阻塞状态1884下试图进行同步读操作,则不发生状态改变,并且向APU的对应控制逻辑发送错误消息。
上述用于针对共享DRAM的同步读和写数据操作的方案还可用于节省通常被处理器专用于针对外部设备读写数据的计算资源。该输入/输出(I/O)功能可由PU执行。然而,通过使用该同步方案的修改方案,运行适当程序的APU可执行该功能。例如,通过使用该方案,接收由外部设备发出的、用于从I/O接口传输数据的中断请求的PU可以委托该APU来处理这个请求。然后,APU向I/O接口发出同步写命令。该接口则通知外部设备:现在可以向DRAM写入数据。接下来,APU向DRAM发出同步读命令,以将DRAM的有关存储空间设成阻塞状态。APU还将APU局部存储器中接收数据所需的存储器位置的忙位设成1。在阻塞状态中,与DRAM的有关存储空间相关的附加存储段包含APU的ID和APU局部存储器的有关存储器位置的地址。接着,外部设备发出同步写命令,以直接向DRAM的有关存储空间写入数据。由于该存储空间处于阻塞状态,所以立即将数据从该空间读到附加存储段中所标识的APU局部存储器的存储器位置上。然后将针对这些存储器位置的忙位设成0。当外部设备完成数据的写操作时,APU向PU发出表明传输完成的信号。
因此,通过使用这个方案,可处理来自外部设备的数据传输,并使PU的计算负荷最小。然而,被委派此功能的APU应当能够向PU发出中断请求,并且外部设备应当直接访问DRAM。
每个PE的DRAM包括多个“沙箱”。沙箱定义了共享DRAM的一个区域,如果超出此区域,特定APU或特定一组APU不能读或写数据。这些沙箱提供了防止正被一个APU处理的数据遭到正被另一个APU处理的数据破坏的安全性。这些沙箱还允许从网络104向特定沙箱下载软件单元,而不存在软件单元破坏整个DRAM中的任何数据的可能性。在本发明中,用DRAM和DMAC的硬件来实现沙箱。通过用硬件而不是软件来实现沙箱,可获得速度和安全性方面的优势。
PE的PU控制分配给APU的沙箱。由于PU通常只操作受信的程序,例如操作系统,该方案不会危及安全性。根据该方案,PU建立并维护关键字控制表。图19示出了该关键字控制表。如该图所示,关键字控制表1902的每个条目包含针对APU的标识(ID)1904,针对该APU的APU关键字1906,和关键字掩码1908。该关键字掩码的使用将在后面进行说明。关键字控制表1902最好存储在相对较快的存储器中,例如静态随机存取存储器(SRAM),并且与DMAC相关。关键字控制表1902中的条目由PU控制。当APU请求针对DRAM的特定存储器位置读写数据时,DMAC对照与该存储器位置相关的存储器存取关键字,来评估关键字控制表1902中分配给该APU的APU关键字1906。
如图20所示,给DRAM 2002的每个可寻址存储器位置2006分配一个专用存储段2010。在该专用存储段中存储针对存储器位置的存储器存取关键字2012。如上所述,另一个附加专用存储段2008也与每个可寻址存储器位置2006相关,并且存储用于针对存储器位置读写数据的同步信息。
在操作中,APU向DMAC发出DMA命令。该命令包括DRAM2002的存储器位置2006的地址。在执行该命令之前,DMAC使用APU的ID 1904在关键字控制表1902中查找发出请求的APU的关键字1906。然后,DMAC将发出请求的APU的APU关键字1906与专用存储段2010中存储的、和APU试图访问的DRAM存储器位置相关的存储器存取关键字2012进行比较。如果这两个关键字不匹配,则不执行DMA命令。另一方面,如果这两关键字匹配,则DMA命令继续进行,并且执行所请求的存储器访问。
图21说明了另一可选实施例。在该实施例中,PU同样也维护存储器存取控制表2102。存储器存取控制表2102包含针对DRAM中每个沙箱的条目。在图21的特定例子中,DRAM包含64个沙箱。存储器存取控制表2102中的每个条目包含沙箱的标识(ID)2104,存储器基地址2106,沙箱大小2108,存储器存取关键字2110和存取关键字掩码2110。存储器基地址2106提供DRAM中的、开始特定存储器沙箱的地址。沙箱大小2108提供沙箱的大小,并且因此提供特定沙箱的终点。
图22是使用关键字控制表1902和存储器存取控制表2102执行DMA命令的步骤的流程图。在步骤2202中,APU向DMAC发出用于访问沙箱中的一个特定存储器位置或多个位置的DMA命令。该命令包括沙箱ID 2104,用于标识被请求访问的特定沙箱。在步骤2204中,DMAC使用APU的ID 1904在关键字控制表1902中查找发出请求的APU的关键字1906。在步骤2206中,DMAC使用命令中的沙箱ID 2104在存储器存取控制表2102中查找与该沙箱相关的存储器存取关键字2110。在步骤2208中,DMAC将分配给发出请求的APU的APU关键字1906与和沙箱相关的存取关键字2110进行比较。在步骤2210中,确定这两个关键字是否匹配。如果这两个关键字不匹配,则处理转到步骤2212,其中DMA命令不继续执行,并向发出请求的APU,PU或二者发送错误消息。另一方面,如果在步骤2210中发现两个关键字匹配,则处理进行到步骤2214,其中DMAC执行DMA命令。
针对APU关键字和存储器存取关键字的关键字掩码为该系统提供了更大的灵活性。针对关键字的关键字掩码将被屏蔽位转换成通配符。例如,如果与APU关键字1906相关的关键字掩码1908的最后两位被设成“掩码”(例如通过将关键字掩码1908中的这些位设为1来指定),那么APU关键字可以是1或0,并且仍然与存储器存取关键字匹配。例如,APU关键字可以是1010。该APU关键字通常只允许访问具有存取关键字1010的沙箱。然而,如果将用于该APU关键字的APU关键字掩码设成0001,则可使用该APU关键字来实现对存取关键字为1010或1011的沙箱的访问。类似地,掩码设为0001的存取关键字1010可被APU关键字为1010或1011的APU访问。因为可同时使用APU关键字掩码和存储器关键字掩码,所以可确定APU对沙箱的各种可访问性。
本发明还为系统101的处理器提供了新的编程模型。该编程模型使用软件单元102。可以将这些单元发送到网络104上的任何处理器来进行处理。这种新的编程模型还利用系统101的独特模块化体系结构和系统101的处理器。
APU直接从APU局部存储器处理软件单元。APU不直接对DRAM中的任何数据或程序进行操作。在APU处理这些数据和程序之前,将DRAM中的数据和程序读取到APU的局部存储器中。因此,APU的局部存储器包括程序计数器,堆栈,和用于执行这些程序的其它软件组件。PU通过向DMAC发出直接存储器存取(DMA)命令来控制APU。
图23示出了软件单元102的结构。如该图所示,软件单元(例如软件单元2302)包含路由信息部份2304和主体2306。路由信息部份2304中包含的信息取决于网络104的协议。路由信息部份2304包含标头(header)2308,目的ID 2310,源ID 2312和应答ID 2314。目的ID包括网络地址。例如,在TCP/IP协议下,网络地址是网际协议(IP)地址。目的ID 2310还包括PE和APU的身份信息,其中应当向该PE和APU发送单元以进行处理。源ID 2314包含网络地址,并标识发出单元的PE和APU,以便在必要时允许目的PE和APU得到关于单元的附加信息。应答ID 2314包含网络地址,并标识关于单元的查询,和单元处理的结果应当被送往的PE和APU。
单元主体2306包含与网络协议无关的信息。图23的分解部分示出了单元主体2306的详细情况。单元主体2306的标头2320标识单元主体的开始。单元接口2322包含使用单元所必需的信息。该信息包括全局唯一ID 2324,所需的APU 2326,沙箱大小2328,以及前一个单元ID 2330。
全局唯一ID 2324在整个网络104中唯一标识软件单元2302。根据源ID 2312,例如源ID 2312中的PE或APU的唯一标识,以及软件单元2302的产生或发送时间和日期产生全局唯一ID 2324。所需的APU 2326提供执行该单元所需的最小数量的APU。沙箱大小2328提供所需APU中为执行单元而需要的相关DRAM中的受保护存储器的数量。前一个单元ID 2330提供需要顺序执行(例如流数据)的一组单元中的前一个单元的身份信息。
实现部份2332包含单元的核心信息。该信息包括DMA命令表2334,程序2336,以及数据2338。程序2336包含要由APU运行的程序(称为“apulets”),例如APU程序2360和2362,而数据2338包含要通过这些程序处理的数据。DMA命令表2334包含开始程序所需要的一系列DMA命令。这些DMA命令包括DMA命令2340、2350、2355和2358。PU向DMAC发出这些DMA命令。
DMA命令2340包括VID 2342。VID 2342是APU的虚拟ID,它在DMA命令发出时被映射到物理ID。DMA命令2340还包括装入命令2344和地址2346。装入命令2344指示APU将特定信息从DRAM读取到局部存储器中。地址2346提供DRAM中包含该信息的虚拟地址。该信息可以是例如来自程序部份2336的程序,来自数据部份2338的数据,或者其它数据。最后,DMA命令2340包括局部存储器地址2348。该地址标识局部存储器中应当装入信息的地址。DMA命令2350包含类似的信息。也可能有其它的DMA命令。
DMA命令表2334还包括一系列的启动(kick)命令,例如启动命令2355和2358。启动命令是由PU向APU发出的、用来启动单元的处理的命令。DMA启动命令2355包括虚拟APU ID 2352,启动命令2354,以及程序计数器2356。虚拟APU ID 2352标识要被启动的APU,启动命令2354提供有关的启动命令,程序计数器2356提供针对用于执行程序的程序计数器的地址。DMA启动命令2358提供针对同一APU或另一APU的类似信息。
如前面提到的,PU把APU看作独立的处理器,而不是协处理器。因此,为了控制APU执行的处理,PU使用类似于远程过程调用的命令。这些命令被叫做“APU远程过程调用”(ARPC)。PU通过向DMAC发出一系列DMA命令来执行ARPC。DMAC将APU程序及其相关的栈帧装入到APU的局部存储器中。然后,PU向APU发出初始启动来执行APU程序。
图24说明了用于执行apulet的ARPC的步骤。图24的第一部分2402说明了在启动指定APU对apulet的处理时PU执行的步骤,并且图24的第二部分2404说明了指定APU在处理apulet时执行的步骤。
在步骤2410中,PU对apulet进行评估,并且然后指定用于处理apulet的APU。在步骤2412中,PU通过向DMAC发出设定用于所需的一或多个沙箱的存储器存取关键字的命令,在DRAM中分配用于执行apulet的空间。在步骤2414中,PU使能针对指定APU的中断请求,以通知apulet的完成。在步骤2418中,PU向DMAC发出将apulet从DRAM装入到APU的局部存储器中的DMA命令。在步骤2420中,执行该DMA命令,并且将apulet从DRAM读取到APU的局部存储器中。在步骤2422中,PU向DMAC发出将与apulet相关的栈帧从DRAM装入到APU的局部存储器中的DMA命令。在步骤2423中,执行该DMA命令,并且将栈帧从DRAM读取到APU的局部存储器中。在步骤2424中,PU发出使DMAC向APU分配关键字的DMA命令,以允许APU针对在步骤2412中指定的一或多个硬件沙箱读/写数据。在步骤2426中,DMAC用分配给APU的关键字更新关键字控制表(KTAB)。在步骤2428中,PU向APU发出启动程序处理的DMA命令“启动”。依据特定的apulet,PU在执行特定ARPC时可以发出其它DMA命令。
如上面所指出的,图24中的第二部分2404说明了APU在执行apulet时所执行的步骤。在步骤2430中,APU响应在步骤2428发出的启动命令而开始执行apulet。在步骤2432中,在apulet的指示下,APU评估apulet的相关栈帧。在步骤2434中,APU向DMAC发出多个DMA命令,以便将根据栈帧的需要而指定的数据从DRAM装入到APU的局部存储器中。在步骤2436中,执行这些DMA命令,并且将数据从DRAM读取到APU的局部存储器中。在步骤2438中,APU执行apulet并产生结果。在步骤2440中,APU向DMAC发出把结果存储在DRAM中的DMA命令。在步骤2442中,执行该DMA命令,并将apulet的结果从APU的局部存储器写到DRAM中。在步骤2444中,APU向PU发出中断请求,以通知ARPC已经完成。
APU在PU的指示下独立执行任务的能力允许PU将一组APU,以及与一组APU相关的存储器资源专用于执行长时间(extended)任务。例如,PU可以将一或多个APU,以及与这一或多个APU相关的一组存储器沙箱专用于接收在长时间段内通过网络104发送的数据,并且将该期间内接收到的数据指引到一或多个APU及其相关的存储器沙箱,以便进行进一步的处理。该能力尤其利于处理通过网络104传输的流数据,例如MPEG流或流式ATRAC音频或视频数据。PU可将一或多个APU及其相关的存储器沙箱专用于接收这些数据,并将一或多个其它APU及其相关的存储器沙箱专用于解压缩和进一步处理这些数据。换句话说,PU可在一组APU及其相关的存储器沙箱中间建立用于处理这些数据的专用流水线关系。
然而,为了有效地执行这种处理,在没有发生包含数据流的apulet处理时,流水线的专用APU和存储器沙箱应当保持为该流水线专用。换句话说,在此期间专用APU及其相关的沙箱应处于保留状态。在完成apulet处理时进行的APU及其相关一或多个存储器沙箱的保留被称为“常驻终止(resident termination)”。响应来自PU的指令发生常驻终止。
图25、图26A和图26B说明了包含用于处理流数据(例如MPEG流数据)的一组APU及其相关沙箱的专用流水线结构的建立。如图25所示,流水线结构的部件包括PE 2502和DRAM 2518。PE 2502包括PU 2504、DMAC 2506和多个APU,包括APU 2508、APU 2510和APU 2512。PU 2504、DMAC 2506和这些APU中间的通信通过PE总线2514进行。宽带总线2516将DMAC 2506连接到DRAM 2518。DRAM 2518包括多个沙箱,例如沙箱2520、沙箱2522、沙箱2524和沙箱2526。
图26A说明了建立专用流水线的步骤。在步骤2610中,PU 2504分配APU 2508以处理网络apulet。网络apulet包含用于处理网络104的网络协议的程序。在这种情况下,该协议是传输控制协议/网际协议(TCP/IP)。符合该协议的TCP/IP数据分组通过网络104进行传输。一旦接收到数据分组,APU 2508处理这些数据分组,并将分组中的数据装配到软件单元102中。在步骤2612中,在网络apulet的处理完成时,PU 2504便命令APU 2508执行常驻终止。在步骤2614中,PU2504指定PU 2510和2512来处理MPEG apulet。在步骤2615中,当MEPG apulet处理完成时,PU 2504也命令APU 2510和2512执行常驻终止。在步骤2616中,PU 2504指定沙箱2520作为由APU 2508和APU 2510访问的源沙箱。在步骤2618中,PU 2504指定沙箱2522作为由APU 2510访问的目的沙箱。在步骤2620中,PU 2504指定沙箱2524作为由APU 2508和APU 2512访问的源沙箱。在步骤2622中,PU 2504指定沙箱2526作为由APU 2512访问的目的沙箱。在步骤2624中,APU 2510和APU 2512分别向源沙箱2520和源沙箱2524中的存储器块发送同步读命令,以便将这些存储器块设成阻塞状态。最后,处理转到步骤2628,其中完成专用流水线的建立,并且保留专用于该流水线的资源。因此,APU 2508、2510、2512及其相关沙箱2520、2522和2524进入保留状态。
图26B说明了通过这个专用流水线处理MPEG流数据的步骤。在步骤2630中,处理网络apulet的APU 2508在其局部存储器中接收来自网络104的TCP/IP数据分组。在步骤2632中,APU 2508处理这些TCP/IP数据分组,并将这些分组中的数据装配到软件单元102中。在步骤2634中,APU 2508检查软件单元的标头2320(图23),以确定单元中是否包含MEPG数据。如果单元中不包含MPEG数据,则在步骤2636中,APU 2508将单元发送到DRAM 2518中指定的通用沙箱,以便由专用流水线中未包含的其它APU处理其它数据。APU2508还将此次发送通知给PU 2504。
另一方面,如果软件单元包含MPEG数据,则在步骤2638中,APU 2508检查单元的前一个单元ID 2330(图23),以识别单元所属的MPEG数据流。在步骤2640中,APU 2508选择专用流水线中用于处理该单元的APU。在这种情况下,APU 2508选择APU 2510来处理这些数据。该选择是根据前一个单元ID 2330和负荷平衡因素来进行的。例如,如果前一个单元ID 2330表明该软件单元所属的MPEG数据流的前一个软件单元被发送到APU 2510进行处理,则通常也会将当前软件单元发送到APU 2510进行处理。在步骤2642中,APU 2508发出将MPEG数据写到沙箱2520的同步写命令。由于该沙箱在之前被设成阻塞状态,所以在步骤2644中,自动将MPEG数据从沙箱2520读到APU 2510的局部存储器中。在步骤2646中,APU 2510在其局部存储器中处理MPEG数据以产生视频数据。在步骤2648中,APU2510将视频数据写到沙箱2522中。在步骤2650中,APU 2510向沙箱2520发出同步读取命令,以使该沙箱准备接收另外的MPEG数据。在步骤2652中,APU 2510处理常驻终止。这种处理使这个APU进入保留状态,在保留状态期间,该APU等待处理MPEG数据流中另外的MPEG数据。
在一组APU及其相关沙箱中间可建立用于处理其它类型据的其它专用结构。例如,如图27所示,可以建立专用APU组,例如APU2702、2708和2714,用于对三维对象执行几何变换以产生二维显示表。其它APU可进一步处理(呈现)这些二维显示表以产生像素数据。为执行这种处理,将沙箱专用于APU 2702、2708和2414,以存储三维对象,以及对这些物体进行处理而产生的显示表。例如,源沙箱2704、2710和2716专用于存储分别由APU 2702、APU 2708和APU 2714处理的三维对象。以类似的方式,目的沙箱2706、2712和2718专用于存储分别由APU 2702、APU 2708和APU 2714对这些三维对象进行处理而得到的显示表。
协调APU 2720专用于在其局部存储器中接收来自目的沙箱2706、2712和2718的显示表。APU 2720在这些显示表中进行仲裁,并把它们发送到用于呈现像素数据的其他APU。
系统101的处理器还使用绝对定时器。绝对定时器向APU及PE的其它单元提供时钟信号,该时钟信号独立于驱动这些单元的时钟信号,并比其更快。绝对定时器的使用示于图28。
如图所示,绝对定时器为APU执行任务确定时间预算。该时间预算提供完成这些任务的时间,该时间要比APU处理这些任务所需的时间要长。结果,对于每项任务,在时间预算内存在忙时间段和等待时间段。根据这个时间预算编写所有apulet以用于处理,而不管APU的实际处理时间和速度如何。例如,对于PE的特定APU,特定任务可在时间预算2804的忙时间段2802中被执行。由于忙时间段2802比时间预算2804短,所以在时间预算中出现等待时间段2806。在该等待时间段中,APU进入休眠模式,期间APU消耗的功率较小。
在时间预算2804期满之前,其它APU或PE的其它单元不期望得到任务处理的结果。因此,通过使用由绝对定时器确定的时间预算,不管APU的实际处理速度如何,APU的处理结果总是协调的。
将来,APU的处理速度会变得更快。然而,由绝对定时器确定的时间预算将保持相同。例如,如图28所示,将来的APU将在更短的时间内执行任务,因而将有更长的等待时间段。因此,忙时间段2808比忙时间段2802短,而等待时间段2810比等待时间段2806长。然而,由于根据由绝对定时器确定的相同时间预算编写程序以进行处理,因此,仍然保持APU间处理结果的协调。结果,较快的APU可以处理为较慢APU编写的处理程序,而不会在期待该处理结果时引起冲突。
作为对用于建立APU之间的协调的绝对定时器的代替,对于因增强的或不同的运算速度而产生的APU并行处理的协调问题,PU或一或多个指定APU可分析APU在处理apulet时执行的特定指令或微代码。可以在指令中插入“无操作”(“NOOP”)指令,并由某些APU来执行,以便保持APU的处理按apulet预期的正确顺序完成。通过在指令中插入这些NOOP,可以保持APU执行所有指令的正确定时。
如上所述,每个处理元件(PE)包括至少一个处理单元(PU)和一个或多个附连处理单元(APU),以便利用由PU协调和控制的APU执行依据一个或多个应用程序的数据的并行处理。本文中,暂时地回到图18,示出了用于在APU和共享存储器之间来回传递数据的示例性数据级同步(DLS)机制。然而,如前所述,该DLS机制还可以有利地用于处理到达和/或来自外部设备的数据。实际上,如从下面描述所看到的,将DLS用于I/O设备处理提供了其它重要好处。例如,现在存在隐藏设备实现细节的能力、处理多设备的灵活性、以及APU处理来自一个或多个外部源的流数据的能力。现在注意力应当被引到图29,该图示出了根据发明构思的示例性DLS体系结构。
图29中,结构2900包括PE 2990、DRAM(或共享存储器)2910、接口设备(接口)2915和外部设备2920。PE 2990代表一个或多个处理元件,并且进一步包括至少一个PU 2905,以及如APU 2901、2902和2903所代表的一个或多个APU。经由总线2906将PE 2990连接到共享存储器,并且PE 2990使用先前所描述的用于将数据写入DRAM 2910,以及从DRAM 2910读取数据的DLS和存储器保护机制。根据发明的构思,现在DLS机制被延伸用于外部设备。同样地,如从图29所看到的,经由总线2907将PE 2990连接到接口2915,而经由总线2908将DRAM2910连接到接口2915。后者经由路径2916提供了到由外部设备2920所代表的一个或多个外部设备的连接。外部设备2920可以是任意数目的设备之一,包括但不限于诸如硬盘或光盘的存储器,诸如I/O处理器或图形处理器的处理器,以及收发器(例如网络收发器)。路径2916代表用于将外部设备2920与接口2915连接的一个或多个通信路径,例如分组网络连接、交换网络连接、串行总线、并行总线等。如下所述,总线2908提供了由接口2915到DRAM 2910的直接访问。
现在参照图30,首先将在外部存储器3020作为外部设备的情况下说明本发明构思。具体地说,每个APU具有与其相关的一个或多个通道,所述通道用于将请求经由总线2907传送到接口2915和/或从接口2915接收应答。图30中用通道0(请求)(2930)和通道1(应答)(2935)针对APU 2901对此进行了说明。元件2930和2935两个都是示例性的一个或多个先进先出(FIFO)缓冲器。为简单起见,随后通过总线2907传送的其它APU的请求和应答通道由图30中虚线箭头表示。此时假定元件2930和2935中仅存储了命令和状态信息。请求和应答通道通过总线2907与传送控制器2945交换命令和状态信息。传送控制器2945是示例性的外部DMAC,其处理来自APU的请求。从图30中可以看到接口2915包括保护表2940。这是在PU 2905的内部DMAC(未示出)中对参考图19如上所述的关键字控制表1902的补充。通过利用外部保护表,例如保护表2940,有利于数据直接从外部存储器3020输送到DRAM2910中的一个或多个沙箱中。保护表2940的值由PU以类似于先前所述的方式示例性地分配。利用保护表2940,传送控制器2945控制沿DRAM2910中的沙箱和外部存储器3020之间任意方向的用于传送数据的传送路径2950。应当注意到,不需要外部保护表。然而,如果没有外部保护表,则最好从PU,例如从与PU相关的类似构造的请求/应答通道传递合适的许可。正如以上的讨论,PU执行“受托程序”,并且因而应当正分配相关的读/写许可。进一步地,保护表2940可被扩充到控制访问外部设备或其部分,如由外部存储器3020的特定存储器地址区域所表示的。
继续参考图30,并且特别参考图31和32,说明一种用于将数据从外部存储器3020传送到APU 2901的局部存储器(未示出)的示例性DLS方法。该方法是上面所描述的图24的一个变化,并且同样地,下面不重复或在图31中示出全部步骤。在该例子中,假定apulet(先前描述的一种软件)将由APU 2901执行,其需要对当前存储在外部存储器3020中的数据进行操作。首先参照图31的步骤3105,PU 2905为APU2901的使用分配DRAM 2910的存储器。此外,在步骤3110中,PU 2905经由总线2907将所分配存储器的适当关键字保护值提供给接口2915的传送控制器2945,以用在用于控制访问DRAM 2915的存储器的保护表2940中。除了更新其自身关键字控制表以控制APU 2901的访问之外,PU 2905以如上参考图19所述的方式实现此操作。在步骤3115中,PU2905启动APU 2901对apulet的执行,所述apulet需要访问当前存储在外部存储器3020中的数据。现在参照APU 2901,在步骤3130中,该APU经由通道0向接口2915提供请求,以从外部设备(例如外部存储器3020)向DRAM 2910传送数据。该请求用于针对DRAM 2910的同步写操作,并且方式类似于先前所描述的DMA命令。示例性地,该请求包括例如外部设备(此处为外部存储器3020)以及要使用的外部设备的部分(此处为外部存储器3020中的数据的位置)的标识、将被传送的量、DRAM2910中的相应地址,以及操作种类是读还是写操作(此处为对DRAM2910的同步写操作)。例如,在apulet相关的信息中,提供了外部设备信息,例如要使用的设备、设备的一部分以及大小信息。也应注意到,可以使用其它类型外部设备参数,包括但不限于设备和端口号、虚通道标识符等。
现在参照图32,并且继续参考图30,在步骤3205中,接口2915的传送控制器2945从APU 2901接收传送请求。在步骤中3210,传送控制器2945检查存储在保护表2940中的值,以确定DRAM 2910中的所请求的存储器范围是否有效。如果存储器范围是无效的,则在步骤3220中,传送控制器2945经由通道1拒绝传送。然而,如果存储器范围有效,则在步骤3225中,传送控制器开始传送,并且经由传送路径2950以DMA方式继续传送数据(步骤3230),直至结束。当传送完成时,在步骤3235中,传送控制器2945经由应答通道发送传送完成消息。应当注意,如果外部设备信息也被存储在保护表2940中,例如在步骤3210和3215中,在继续执行传送之前,传送控制器2945还将检查APU 2901是否具有使用该外部设备的许可。
根据本发明,利用如上参考图18中的状态图描述的DLS进行从外部存储器3020到APU 2901的数据传送。图33中说明了本文中DLS的使用,其示出了数据流(由虚线箭头所表示的)。由接口2915对DRAM2910执行同步写操作,而由APU 2901执行同步读操作,以便从DRAM2910读取数据来存储在局部存储器2981中。如上参考图17B到17D所述,由DRAM 2910执行的单独同步写操作和同步读操作的处理由共享存储器的空、阻塞和满状态(例如,用F/E位的值、APU ID和相关状态信息的LS地址字段表示)来控制。因此,可以以一种高效的,即低系统开销的方式从外部设备传送数据到APU的局部存储器,而不需要例如为了APU使用,由PU首先传送数据到DRAM。换言之,为了由APU执行,将可能已经由PU执行的I/O处理以一种安全和同步的方式向更下层推入到体系结构中。这使APU能够例如在多流应用中迅速从外部存储器的多缓冲区得到数据并且对数据进行操作。
应当注意,同步读操作,即从DRAM 2910到外部设备(例如外部存储器3020)的传送,也可以以类似于上面描述的方式进行。图34中继续参考图31和32的流程图说明了这种方式。例如,在步骤3115中,PU 2905启动APU 2901对apulet的执行,所述apulet需要传送数据以便在外部存储器3020中存储。同样地,APU 2901经由通道0给接口2915提供请求,以便进行同步读操作,即从DRAM 2910传送数据到外部设备,即外部存储器3020。该请求形式上类似于先前所描述的DMA命令。该请求包括例如外部设备(此处为外部存储器3020)、要使用的外部设备的一部分(此处为外部存储器3020中的数据的位置)的标识,将被传送的量,DRAM 2910中的相应地址,以及操作外部设备是读还是写操作(此处为从DRAM 2910的同步读操作)。
本文中DLS的使用允许接口2915以同步方式从DRAM 2910读取数据,同时APU 2901正执行对DRAM 2910的写操作。这在图34中加以说明,其中数据流为从APU 2901的局部存储器2981到外部设备,如虚线箭头表示。本文中,DLS的不同状态由F/E位的值以及接口2915是否已尝试读取数据来表示。同样地,以上所描述的DRAM 2915的相关存储器位置的状态信息如图35中所示被修改。状态信息包括如上所述的F/E位3501、设备ID 3502,以及数据应当被传送到的地址3503。设备ID 3502标识设备的类型,例如APU或诸如接口的另一种设备。本文中应当观察到,由于接口2915已经包含具有保护表的DMA类型控制器,所以可以不需要地址字段。即,当允许同步读操作时,DRAM 2910只需简单地给接口2915(如设备ID 3502所标识的)提供通知。
如上所述,由图30说明的结构仅仅是示例性的,并且可以以直接方式扩展成其它类型外部设备。例如,考虑图36。该图类似于图30。同样地,类似附图标记代表类似单元,这里不做进一步描述。图36中,外部设备由物理接收器(PHY)3620表示。后者从网络(未示出),例如以太网经由路径3621接收分组通信,并且执行接收比特流的解码以提供分组流。在该例子中,由APU 2901执行的apulet代表接收的分组流的链路层处理。即,APU 2901利用以上所描述的、用于处理来自PHY 3620的数据的DLS机制,执行协议堆栈(例如,诸如TCP/IP(传输控制协议/网际协议)的协议堆栈)的一部分的处理。
继续参考图36,并且尤其参考图37,其中示出了示例性的握手序列,以进一步说明与外部设备的数据级同步的使用。该图中,假定共享存储器(例如DRAM 2910)的相应部分始于空状态。最初,APU(例如APU 2901)经由请求通道向请求从外部设备到共享存储器的所标识部分的同步写操作的接口(例如接口2915)发送命令。假定保护表检查通过,则接口2915启动与外部设备的传送。同时,APU试图执行从共享存储器的这些部分的同步读操作。因为接口还没有写数据,所以共享存储器的相应部分进入阻塞状态。在这种状态下,如前所述,APU的局部存储器的地址被存储在共享存储器的这些部分的相关状态信息字段内。随后,在接口对共享存储器的所标识部分执行同步写操作之后,APU对由存储的地址值表示的地址执行同步读操作。因此,共享存储器的这些部分回到空状态。代表其它排列的状态变化(如图18所示)的类似握手序列是简单的,此处不做描述。
应当观察到,来自一个或多个APU的请求不必等待接口对每个请求的完成。例如,针对来自一个或多个外部设备的数据,APU可以发出多个请求给接口。DLS的使用保证了数据将被保持在共享存储器中,直到从APU或从外部设备(经由接口)进行同步读操作。同样地,DLS的使用使突发传送和流水线突发传送能在APU和一个或多个外部设备之间执行。
示例性地使用图36中所示的设备的本发明构思的另一种应用在图38中示出。APU 2901经由接口2915连接到若干外部设备。这些外部设备是:USB(通用串行总线)设备、IEEE 1394(通常被称作“火线”)设备、串行设备、硬盘、网络设备(例如网络收发器)以及光盘。其它外部设备(未示出)可包含诸如I/O处理器或图形处理器的处理器。APU 2901发送用于从一个或多个这些外部设备读取数据的请求4301。同样地,通过接口2915的控制,每个设备随后对其分配的DRAM 2910的存储器位置执行同步写操作,所述存储器位置由存储器位置4311、4312、4313、4314、4315和4316表示(其中的每个还说明了包含相关状态信息,其简单地由F/E位表示)。通过执行同步读操作,APU 2901经由总线2906从DRAM 2910得到数据。
现在注意力应当被引到图39,其说明了发明构思的另一个实施例。在图39中,示出了简化的流结构3700。结构3700包括PE 3790、DRAM(或共享存储器)3710、接口设备(接口)3715,以及由物理收发器(PHY)3720表示的外部设备。应注意到,外部设备3720也可以是接口3715的一部分,例如与其集成。PE 3790代表一个或多个处理元件,并且进一步包括至少一个PU 3705,以及由APU 3701、3702和3703所表示的一个或多个APU。经由总线3706将PE 3790连接到共享存储器,并且PE 3790使用先前所描述的用于将数据写入DRAM 3710,以及从DRAM 3710读取数据的DLS和存储器保护机制。根据发明构思,现在DLS机制被延伸用于外部设备。同样地,可以从图39看到,经由总线3707将APU连接到接口3715上。具体地说,每个APU具有与其相关的一个或多个通道,所述通道用于经由总线3707将请求传送到接口3715和/或从接口3715接收应答,和/或与接口3715交换数据。图39中通过通道0(输入)(3730)和通道1(输出)(3735)针对APU 3701对此加以说明。元件3730和3735两个都是示例性的一个或多个先进先出(FIFO)缓冲器。对于其它APU,其通过总线3707传送的输入输出通道由图39中虚线箭头表示。
接口3715包括通道接口元件3745和3750,其连接APU 3701和PHY 3720之间相应的输入和输出数据流。后一种元件是示例性的收发器,其用于(a)编码从APU 3701的输出通道经由路径3707和3716提供的数据,用于通过路径3721传送;以及(b)解码从路径3721接收的数据,以便经由路径3716和3707给APU 3701的输入通道提供解码数据。路径3721代表一个或多个通信路径,其用于将外部设备3720连接到例如分组网络连接、交换网络连接、串行总线、并行总线等。
如上所述,接口3715包含通道接口元件3745和3750。通道接口元件3745接收来自APU 3701的输出通道。根据本发明,输出通道本身包括控制通道和数据通道。控制通道传送以上所描述的请求和应答通道,而数据通道传送将被提供给外部设备的数据。在该例子中,请求通道传送命令信息,其包括例如外部设备标识(此处为PHY 3720),以及将被执行的操作(此处为写操作)。输出通道的数据通道部分代表将由PHY 3720编码以便经由路径3721发送的数据。类似地,将通道接口元件3745连接到APU 3701的输入通道。输入通道本身包括控制通道和数据通道。控制通道传送以上所描述的请求和应答通道,而数据通道传送将被提供给APU的数据。在该例子中,请求通道传送命令信息,其包括例如外部设备标识(此处为PHY 3720),以及将被执行的操作(此处为读操作)。输入通道的数据通道部分代表作为从路径3721接收的信号的接收结果而由PHY 3720解码的数据。
应观察到,在该图解实施例中,接口3715内不需要保护表。具体地说,并且如下所述,根据先前所描述的DLS和图18所示的存储器保护机制,每个APU针对DRAM 3710读写数据。
继续参考图39,图40中示出了用于从外部设备传送数据到APU2901的局部存储器(未示出)的示例性方法。该方法假定仍执行以上所描述的图24的流程图,即:由PU分配保护表值、将apulet分配给例如APU 3701等。在该例子中,由APU 3701执行的apulet代表了接收的分组流的链路层处理,并且用于传送的分组流。即,APU2901利用以上所描述的DLS机制执行协议堆栈(例如TCP/IP)的一部分的处理。
首先参照图40的步骤3830,APU 3701提供用于针对PHY 3720经由总线3707传送数据的请求给接口3715。在该例子中,该请求通过输入通道和输出通道二者的命令部分发生。然而,注意到,不需要使用输入通道和输出通道二者。该请求包括例如外部设备(例如为PHY3720)的标识,并且也可包括要使用的外部设备的部分(例如特定端口),以及外部设备操作的种类(此处为针对输入通道的外部设备读,以及针对输出通道的外部设备写)。假定例如在apulet相关信息中提供外部设备信息,例如设备、要使用的设备的部分等。也应注意到,可以使用其它类型的外部设备参数,包括但不限于设备和端口号、虚通道标识符等。
在步骤3805中,接口3715接收请求并建立到达和来自PHY 3720的传送。应注意到,就PHY 3720所需的特定握手而言,假定该握手由接口3715执行,并且对于APU 3701来说是透明的。在步骤3710中,接口3715开始传送,并且继续传送来自PHY 3720的数据,直至结束(步骤3815)。例如,这种数据传送可以一直继续,直到针对远端点的连接(未示出)被破坏。针对PHY 3720的数据传送的该部分可以根据外部设备的种类同步或异步进行。在输入通道的数据通道部分内传送数据例如到达元件3735的FIFO的一部分。当传送完成时,在步骤3820中,接口3715经由输入输出通道的命令部分的应答通道发送传送完成消息。
根据本发明,由APU 3701针对外部设备3720的数据传送使用DLS来进行,前面参考图18描述了DLS的状态图。图41中说明了本文中DLS的使用。APU和外部设备之间的数据流由虚线箭头表示。从图41可以看到,APU 3701经由总线3707所传送的输入通道将数据直接接收到如上所述的局部存储器中。类似地,APU 3701经由总线3707所传送的输出通道直接从局部存储器提供数据。这产生了快速、低系统开销的通信通道。例如,要经由PHY 3720传送的数据最初可被存储在DRAM3710中。APU 3701使用DLS、通过由图41中对应虚线箭头所示的同步读操作,从DRAM 3710提取该数据。然后APU 3701根据链路层apulet处理该数据,并提供处理的数据,例如已格式化的分组流给PHY 3720(经由接口3715),以便为发送而进行进一步的编码。通过类似的方式,由PHY 3720接收的数据被解码,并经由输入通道提供给APU3701,以便为APU 3701的处理而存储在局部存储器3781中。APU 3701根据链路层apulet处理数据,例如移除标头、错误检查,并且使用DLS、通过由图41中相应虚线箭头所描述的同步写操作,将处理的数据提供给DRAM 3710。
图42说明了上面参照图39示出并描述的简化流结构的一种变化。因为本实施例以类似于图39中示出的方式操作,所以此处不详细描述全部图。图42的结构4000包括PE 4090、DRAM(或共享存储器)4010、接口4015,以及由物理收发器(PHY)4020和物理收发器(PHY)4080代表的外部设备。如可以从图42中看到的,示例性地将接口4015与外部设备4020和4080集成。PE 4090代表一个或多个处理元件,并且进一步包括至少一个PU 4005,以及由APU 4001、4002和4003所代表的一个或多个APU。经由总线4006将PE 4090连接到共享存储器,并且PE4090使用先前所描述的用于将数据写入DRAM 4010,以及从DRAM4010读取数据的DLS和存储器保护机制。可以从图42看到,经由总线4007将APU连接到接口4015。具体地说,每个APU具有与其相关的一个或多个通道,所述通道用于经由总线4007将请求传送到接口4015,和/或从接口4015接收应答,和/或与接口4015传送数据。图42中通过输入/输出通道4050和输入/输出通道4055针对APU 4001对此加以说明。这两个元件都是示例性的一个或多个先进先出(FIFO)缓冲器。图42中由虚线箭头表示通过总线4007传送的用于其它APU的其它输入和输出通道。
接口4015包括元件4030和4035,其中的每个分别包括两个通道接口元件4031和4032,以及4036和4037。(这些是图39中所描述的类型)。这些元件将数据流连接到相应外部设备(此处为4020和4080)。外部设备是用于向和从相应路径4021和4081传送数据的示例性收发器。外部设备4020和/或4080也可包括诸如硬盘或光盘的存储器,诸如I/O处理器或图形处理器的处理器,以及收发器(例如网络收发器)。
如上所述,在该例子中,APU 4001访问两个输入/输出通道(4050和4055),每个通道进一步包括上述用于传送命令信息和数据的输入和输出通道。以类似于上面所描述的方式,APU 4001执行用于在外部设备(4020和4080)之间转换数据的apulet。因为APU 4001访问多个输入/输出通道,所以APU 4001不需要访问DRAM 4010。同样地,图42中所示的变化提供了用于外部设备之间转换数据的高效、高速结构。
上文仅仅说明了本发明的原理,因而应该理解,本领域技术人员会能够想到许多可选结构,虽然此处未明确描述这些结构,但是这些结构体现了本发明的原理并且在本发明的实质和范围之内。例如,虽然已经在执行数据级同步的输入/输出接口的情况下描述了本发明的构思,但是不要求接口对两种输入和输出都执行,或仅是每种类型中的一个,例如接口可以只是输入设备,或只是输出设备,或是公用输入/输出框架中所支持的输入设备和输出设备的任意组合。
(按照条约第19条的修改)
1.一种设备,包括:
接口设备,用于向和从外部设备传送数据;以及
存储器,具有多个存储器位置,每个存储器位置用于存储数据,
接口设备和存储器中的至少一个能够存储与存储器位置中相应的存储器位置相关的状态信息,该状态信息包括第一字段和地址字段,使得对于指定的存储器位置,当相关状态信息的第一字段的值等于第一状态值,而且相关状态信息的地址字段的值等于预定地址值时,对该存储器位置的写操作在结束时使新存储在其中的数据被写到由所述预定地址值表示的地址。
2.如权利要求1所述的设备,其中第一状态值表示相应存储器位置有效,而第二状态值表示相应存储器位置无效。
3.如权利要求2所述的设备,还包括:
与存储器连接以进行数据访问的处理器,
其中当处理器发出有关从指定存储器位置到另一存储器的读操作的请求并且相关状态信息的第一字段的值等于第二状态值时,与第一字段的值变成第一状态值相同步地,新存储在该存储器位置的数据被写到所述另一存储器中由所述预定地址值表示的地址。
4.如权利要求2所述的设备,其中当指定存储器位置中存储的数据被请求传送到外部设备并且相关状态信息的第一字段的值等于第二状态值时,与第一字段的值变成第一状态值相同步地,新存储在该存储器位置的数据被传送到外部设备中由所述预定地址值表示的地址。
5.如权利要求1、2、3或4所述的设备,其中所述接口设备利用直接存储器访问(DMA)在外部设备和存储器之间传送数据。
6.一种系统,包括:
接口设备,用于向和从外部设备传送数据;以及
存储器,具有多个存储器位置,每个存储器位置用于存储数据,
接口设备和存储器中的至少一个能够存储与存储器位置中相应的存储器位置相关的状态信息,该状态信息包括第一字段和地址字段,使得对于指定的存储器位置,当相关状态信息的第一字段的值等于第一状态值,而且相关状态信息的地址字段的值等于预定地址值时,对该存储器位置的写操作在结束时使新存储在其中的数据被写到由所述预定地址值表示的地址。
7.一种用于经由接口设备在具有均能够存储数据的多个存储器位置的存储器和外部设备之间传送数据的方法,接口设备和存储器中的至少一个能够存储与存储器位置中相应的存储器位置相关的状态信息,该状态信息包括第一字段和地址字段,该方法包括:
对存储器位置执行第一写操作;以及
当第一写操作使得相关状态信息的第一字段的值等于第一状态值,而且相关状态信息的地址字段的值等于预定地址值时,执行第二写操作,所述第二写操作用于在第一写操作结束时将新存储在该存储器位置的数据写到由所述预定地址值表示的地址。
Claims (27)
1.一种系统,包括:
接口设备,用于向和从外部设备传送数据;以及
存储器,具有多个存储器位置,每个存储器位置用于存储数据,
接口设备和存储器中的至少一个能够存储与存储器位置中相应的存储器位置相关的状态信息,该状态信息包括第一字段和地址字段,使得对于指定的存储器位置,当相关状态信息的第一字段的值等于第一值,而且相关状态信息的地址字段的值等于第二值时,对该存储器位置的写操作使当前存储在其中的数据被写到由第二值表示的地址。
2.如权利要求1所述的系统,其中所述地址与外部设备相关。
3.如权利要求1所述的系统,其中所述地址与存储器位置相关,所述存储器位置与和接口设备通信的处理器相关。
4.如权利要求1、2或3所述的系统,包括连接到存储器以进行数据访问,以及连接到接口设备的处理器,该处理器能够发出与外部设备相关的请求。
5.如权利要求4所述的系统,其中所述请求中的至少一个用于从外部设备读取数据。
6.如权利要求4所述的系统,其中所述请求中的至少一个用于向外部设备写入数据。
7.如权利要求4、5或6所述的系统,其中所述存储器能够在处理器和接口设备之间传递请求。
8.如权利要求1-7的任一个所述的系统,其中所述外部设备与接口设备集成在一起。
9.如权利要求1-8的任一个所述的系统,其中所述接口设备利用直接存储器访问(DMA)在外部设备和存储器之间传送数据。
10.一种系统,包括:
具有多个存储器位置的存储器;
连接到存储器的处理器,该处理器能够发出具有第一类型和第二类型中的至少一种的请求;以及
接口设备,其能够响应接收具有第一类型的请求,将数据从外部设备传送到存储器以存储在其中,以及响应接收具有第二类型的请求,将数据从存储器中的存储传送到外部设备,
其中存储器和接口设备中的至少一个的存储器位置支持包含阻塞状态的若干不同存储器状态,使得针对处于阻塞状态的指定存储器位置的写操作导致当前存储于其中的数据被写到与指定存储器位置相关的地址值。
11.如权利要求10所述的系统,其中所述地址值表示外部设备。
12.如权利要求10所述的系统,进一步包括与处理器相关的局部存储器,其中所述地址值表示局部存储器的存储器位置。
13.如权利要求10、11或12所述的系统,其中所述第一类型的请求用于从外部设备读取数据。
14.如权利要求10、11或12所述的系统,其中所述第一类型的请求用于向外部设备写入数据。
15.如权利要求10-14的任一个所述的系统,其中所述外部设备与接口设备集成在一起。
16.如权利要求10-15的任一个所述的系统,其中所述接口设备利用直接存储器访问(DMA)在外部设备和存储器之间传送数据。
17.如权利要求10-16的任一个所述的系统,其中所述处理器包括处理单元(PU)和至少一个附连处理单元(APU),其中附连处理单元能够发出所述请求。
18.如权利要求17所述的系统,其中所述接口设备包括用于控制对所述存储器位置中各存储器位置的访问的保护表。
19.如权利要求18所述的系统,其中由PU初始化保护表的值。
20.一种用于在外部设备和处理器之间提供接口的设备,该设备包括:
保护表,用于存储指示可由处理器访问的共享存储器的区域的信息;
传送控制器,其响应来自处理器的请求,控制在外部设备和共享存储器的可访问区域中的至少一个之间的数据传送;以及
传送路径,用于在传送控制器的控制下,在外部设备和共享存储器的至少一个可访问区域之间传送数据,
所述传送控制器能够根据存储器位置的当前存储器状态控制以同步方式在所述至少一个可访问区域的存储器位置与外部设备之间的数据传送,使得当当前存储器状态为阻塞状态时,针对存储器位置的写操作导致当前存储在存储器位置中的数据被写到与该存储器位置相关的地址。
21.一种用于经由接口设备在处理器和外部设备之间传送数据的方法,该方法包括:
通过具有多个存储器位置的共享存储器在外部设备与对处理器为局部的存储器之间传送数据,其中共享存储器支持包含阻塞状态的若干不同存储器状态,其中针对处于阻塞状态的指定存储器位置的写操作使当前存储于其中的数据被写到与所述指定存储器位置相关的地址值。
22.如权利要求21所述的方法,其中所述处理器为第一处理器,所述方法进一步包括从第二处理器向接口设备发送用于接口设备的保护表中的值,其中所述值控制对共享存储器的各部分的访问。
23.如权利要求21或22所述的方法,进一步包括:
在外部设备中,
通过外部设备接收命令,该命令请求传送数据;
检查保护表的值以确定与该命令相关的地址值是否有效;以及
如果地址值有效,则执行初始化步骤。
24.如权利要求21、22或23所述的方法,其中所述相关的地址值表示外部设备。
25.如权利要求21、22或23所述的方法,其中所述相关的地址值表示与处理器相关的局部存储器。
26.一种设备,包括:
第一总线,用于传送多个请求/应答通道,每个请求/应答通道与处理器相关,每个请求/应答通道传送有关在相关处理器和外部设备之间传送数据的请求;
与存储器进行数据通信的第二总线,用于利用数据级同步来传送数据,所述存储器包含多个存储器位置,每个存储器位置支持包括阻塞状态的若干不同存储器状态,其中针对处于阻塞状态的指定存储器位置的写操作使当前存储于其中的数据被写到与所述指定存储器位置相关的地址值。
27.如权利要求26所述的设备,其中第一总线传送用于保护表中的值,该值指示可由处理器访问的存储器的各部分。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/959,635 | 2004-10-05 | ||
US10/959,635 US7231500B2 (en) | 2001-03-22 | 2004-10-05 | External data interface in a computer architecture for broadband networks |
PCT/JP2005/018737 WO2006038717A2 (en) | 2004-10-05 | 2005-10-05 | External data interface in a computer architecture for broadband networks |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101040268A true CN101040268A (zh) | 2007-09-19 |
CN101040268B CN101040268B (zh) | 2010-10-06 |
Family
ID=35781458
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005800335606A Active CN101040268B (zh) | 2004-10-05 | 2005-10-05 | 宽带网络计算机体系结构中的外部数据接口 |
Country Status (9)
Country | Link |
---|---|
US (1) | US7231500B2 (zh) |
EP (1) | EP1805626B1 (zh) |
JP (1) | JP4768386B2 (zh) |
KR (1) | KR100939398B1 (zh) |
CN (1) | CN101040268B (zh) |
AT (1) | ATE437403T1 (zh) |
DE (1) | DE602005015607D1 (zh) |
TW (1) | TWI317886B (zh) |
WO (1) | WO2006038717A2 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109343986A (zh) * | 2018-08-17 | 2019-02-15 | 华为技术有限公司 | 处理内存故障的方法与计算机系统 |
CN112789604A (zh) * | 2018-09-28 | 2021-05-11 | 罗克韦尔柯林斯德国公司 | 具有多个处理器和多个接口的数据处理设备 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7225301B2 (en) * | 2002-11-22 | 2007-05-29 | Quicksilver Technologies | External memory controller node |
US20050086040A1 (en) * | 2003-10-02 | 2005-04-21 | Curtis Davis | System incorporating physics processing unit |
US7895411B2 (en) * | 2003-10-02 | 2011-02-22 | Nvidia Corporation | Physics processing unit |
US7739479B2 (en) * | 2003-10-02 | 2010-06-15 | Nvidia Corporation | Method for providing physics simulation data |
US20050251644A1 (en) * | 2004-05-06 | 2005-11-10 | Monier Maher | Physics processing unit instruction set architecture |
JPWO2006025255A1 (ja) * | 2004-08-30 | 2008-05-08 | 松下電器産業株式会社 | 多人数参加型アプリケーションを実行するクライアント端末装置、グループ形成方法及びグループ形成プログラム |
CN101010950A (zh) * | 2004-08-30 | 2007-08-01 | 松下电器产业株式会社 | 记录装置 |
JP2007334379A (ja) | 2004-10-05 | 2007-12-27 | Matsushita Electric Ind Co Ltd | 処理装置 |
US7650266B2 (en) * | 2005-05-09 | 2010-01-19 | Nvidia Corporation | Method of simulating deformable object using geometrically motivated model |
JP4536618B2 (ja) * | 2005-08-02 | 2010-09-01 | 富士通セミコンダクター株式会社 | リコンフィグ可能な集積回路装置 |
US7627744B2 (en) * | 2007-05-10 | 2009-12-01 | Nvidia Corporation | External memory accessing DMA request scheduling in IC of parallel processing engines according to completion notification queue occupancy level |
US8316441B2 (en) * | 2007-11-14 | 2012-11-20 | Lockheed Martin Corporation | System for protecting information |
KR101425621B1 (ko) * | 2008-01-15 | 2014-07-31 | 삼성전자주식회사 | 컨텐츠를 안전하게 공유하는 방법 및 시스템 |
KR101642833B1 (ko) * | 2010-02-05 | 2016-07-26 | 삼성전자주식회사 | 클럭 임베디드 인터페이스 방법, 그 방법을 이용하는 송수신기 및 디스플레이 장치 |
KR101984635B1 (ko) | 2012-07-19 | 2019-05-31 | 삼성전자주식회사 | 어플리케이션을 고속으로 처리하는 연산 처리 장치 및 방법 |
CN104380269B (zh) | 2012-10-22 | 2018-01-30 | 英特尔公司 | 高性能互连相干协议 |
CN103116566A (zh) * | 2013-01-17 | 2013-05-22 | 东南大学 | 一种利用邮件收发箱实现双核之间通信的装置 |
WO2022054283A1 (ja) * | 2020-09-14 | 2022-03-17 | 日本電信電話株式会社 | 情報処理システム、情報処理方法およびプログラム |
Family Cites Families (98)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3576544A (en) | 1968-10-18 | 1971-04-27 | Ibm | Storage protection system |
US4037214A (en) * | 1976-04-30 | 1977-07-19 | International Business Machines Corporation | Key register controlled accessing system |
JPS5412643A (en) | 1977-06-30 | 1979-01-30 | Hitachi Ltd | Main memory protective device |
JPS54146555A (en) | 1978-05-09 | 1979-11-15 | Nec Corp | Data transfer system between processors |
US4314349A (en) * | 1979-12-31 | 1982-02-02 | Goodyear Aerospace Corporation | Processing element for parallel array processors |
US4332009A (en) * | 1980-01-21 | 1982-05-25 | Mostek Corporation | Memory protection system |
JPS5812613B2 (ja) | 1980-02-08 | 1983-03-09 | 工業技術院長 | 並列デ−タ処理装置 |
JPS5835295B2 (ja) | 1980-03-03 | 1983-08-02 | オムロン株式会社 | マスタ・スレ−ブ・システムにおけるデ−タ転送方式 |
US4430705A (en) * | 1980-05-23 | 1984-02-07 | International Business Machines Corp. | Authorization mechanism for establishing addressability to information in another address space |
JPS576952A (en) | 1980-06-16 | 1982-01-13 | Nippon Telegr & Teleph Corp <Ntt> | Storage protecting system |
JPS57176456A (en) | 1981-04-22 | 1982-10-29 | Fanuc Ltd | Data processing system |
EP0063626B1 (en) * | 1981-04-28 | 1985-07-17 | International Business Machines Corporation | Bus arrangement for interconnectiong circuit chips |
AU542447B2 (en) * | 1982-02-27 | 1985-02-21 | Fujitsu Limited | System for controlling key storage unit |
JPS5958700A (ja) * | 1982-09-29 | 1984-04-04 | Fujitsu Ltd | 記憶保護判定方式 |
US4545016A (en) * | 1983-01-07 | 1985-10-01 | Tandy Corporation | Memory management system |
US4622631B1 (en) * | 1983-12-30 | 1996-04-09 | Recognition Int Inc | Data processing system having a data coherence solution |
US5159700A (en) | 1984-01-16 | 1992-10-27 | Texas Instruments Incorporated | Substrate with optical communication systems between chips mounted thereon and monolithic integration of optical I/O on silicon substrates |
JPS61180352A (ja) | 1984-12-30 | 1986-08-13 | Fujitsu Ltd | プログラムダウンロ−ド方式 |
US4732446A (en) * | 1985-10-02 | 1988-03-22 | Lamar Gipson | Electrical circuit and optical data buss |
AU571377B2 (en) * | 1985-11-13 | 1988-04-14 | Fujitsu Limited | Main storage access control system |
JPS6319058A (ja) | 1986-07-11 | 1988-01-26 | Fujitsu Ltd | メモリ装置 |
JP2960415B2 (ja) * | 1987-05-22 | 1999-10-06 | 株式会社日立製作所 | 記憶保護方法および装置 |
JPS6412364U (zh) | 1987-07-11 | 1989-01-23 | ||
JPH0719704Y2 (ja) | 1987-07-31 | 1995-05-10 | シャープ株式会社 | 生産ラインの生産管理装置 |
US5056000A (en) | 1988-06-21 | 1991-10-08 | International Parallel Machines, Inc. | Synchronized parallel processing with shared memory |
US4939682A (en) * | 1988-07-15 | 1990-07-03 | The Boeing Company | Integrated electro-optic arithmetic/logic unit and method for making the same |
FR2635599B1 (fr) * | 1988-08-17 | 1994-02-18 | Finger Ulrich | Systeme d'extension de memoire pour au moins un ensemble de traitement de donnees |
EP0369052A1 (en) | 1988-11-17 | 1990-05-23 | International Business Machines Corporation | Data base access system |
EP0424618A3 (en) | 1989-10-24 | 1992-11-19 | International Business Machines Corporation | Input/output system |
US5037173A (en) * | 1989-11-22 | 1991-08-06 | Texas Instruments Incorporated | Optical interconnection network |
EP0509055A4 (en) | 1990-01-05 | 1994-07-27 | Maspar Computer Corp | Parallel processor memory system |
EP0461926B1 (en) | 1990-06-15 | 1998-09-02 | Compaq Computer Corporation | Multilevel inclusion in multilevel cache hierarchies |
US5093879A (en) | 1990-06-22 | 1992-03-03 | International Business Machines Corporation | Electro-optical connectors |
US5144691A (en) | 1990-07-20 | 1992-09-01 | Cray Research, Inc. | Computer signal interconnect apparatus |
EP0481735A3 (en) | 1990-10-19 | 1993-01-13 | Array Technology Corporation | Address protection circuit |
US5630162A (en) | 1990-11-13 | 1997-05-13 | International Business Machines Corporation | Array processor dotted communication network based on H-DOTs |
KR940004404B1 (ko) | 1990-11-30 | 1994-05-25 | 삼성전자 주식회사 | 불휘발성 반도체 메모리장치 |
US5131054A (en) | 1991-01-09 | 1992-07-14 | Thinking Machines Corporation | Character recognition system using massively parallel computer that identifies a query character using degree of similarity with plurality of training characters of known identity |
JPH04284754A (ja) | 1991-03-14 | 1992-10-09 | Fujitsu Ltd | Atm交換装置 |
US5519875A (en) * | 1991-08-08 | 1996-05-21 | Hitachi, Ltd. | Distributed processing system for modules, each having modularized objects |
US5268973A (en) | 1992-01-21 | 1993-12-07 | The University Of Texas System | Wafer-scale optical bus |
JPH05324589A (ja) | 1992-03-25 | 1993-12-07 | Nippon Sheet Glass Co Ltd | 並列コンピュータ装置および光結合装置 |
EP0610583A1 (en) * | 1993-02-08 | 1994-08-17 | International Business Machines Corporation | Multizone relocation facility computer memory system |
US5619671A (en) | 1993-04-19 | 1997-04-08 | International Business Machines Corporation | Method and apparatus for providing token controlled access to protected pages of memory |
US5487146A (en) | 1994-03-08 | 1996-01-23 | Texas Instruments Incorporated | Plural memory access address generation employing guide table entries forming linked list |
US5513337A (en) | 1994-05-25 | 1996-04-30 | Intel Corporation | System for protecting unauthorized memory accesses by comparing base memory address with mask bits and having attribute bits for identifying access operational mode and type |
US5754436A (en) * | 1994-12-22 | 1998-05-19 | Texas Instruments Incorporated | Adaptive power management processes, circuits and systems |
EP0730237A1 (en) | 1995-02-28 | 1996-09-04 | Nec Corporation | Multi-processor system with virtually addressable communication registers and controlling method thereof |
DE19508723A1 (de) | 1995-03-10 | 1996-09-12 | Siemens Ag | Mehrbenutzerdatenverarbeitungsanlage mit Speicherschutz |
US5850534A (en) | 1995-06-05 | 1998-12-15 | Advanced Micro Devices, Inc. | Method and apparatus for reducing cache snooping overhead in a multilevel cache system |
JP3786993B2 (ja) | 1995-12-14 | 2006-06-21 | 株式会社日立製作所 | データ記憶ユニット及び該ユニットを用いたデータ記憶装置 |
US6886167B1 (en) * | 1995-12-27 | 2005-04-26 | International Business Machines Corporation | Method and system for migrating an object between a split status and a merged status |
US5729712A (en) | 1996-01-26 | 1998-03-17 | Unisys Corporation | Smart fill system for multiple cache network |
US5940870A (en) | 1996-05-21 | 1999-08-17 | Industrial Technology Research Institute | Address translation for shared-memory multiprocessor clustering |
US5900019A (en) | 1996-05-23 | 1999-05-04 | International Business Machines Corporation | Apparatus for protecting memory storage blocks from I/O accesses |
US5787309A (en) | 1996-05-23 | 1998-07-28 | International Business Machines Corporation | Apparatus for protecting storage blocks from being accessed by unwanted I/O programs using I/O program keys and I/O storage keys having M number of bits |
US5724551A (en) | 1996-05-23 | 1998-03-03 | International Business Machines Corporation | Method for managing I/O buffers in shared storage by structuring buffer table having entries include storage keys for controlling accesses to the buffers |
AT1751U1 (de) * | 1996-09-30 | 1997-10-27 | Kuehn Eva | Koordinations-system |
JP3421526B2 (ja) | 1997-02-14 | 2003-06-30 | モトローラ株式会社 | デ−タ処理装置 |
US6424988B2 (en) * | 1997-02-19 | 2002-07-23 | Unisys Corporation | Multicomputer system |
US6192514B1 (en) * | 1997-02-19 | 2001-02-20 | Unisys Corporation | Multicomputer system |
US6289434B1 (en) | 1997-02-28 | 2001-09-11 | Cognigine Corporation | Apparatus and method of implementing systems on silicon using dynamic-adaptive run-time reconfigurable circuits for processing multiple, independent data and control streams of varying rates |
JP3739888B2 (ja) | 1997-03-27 | 2006-01-25 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置および方法 |
US6212605B1 (en) | 1997-03-31 | 2001-04-03 | International Business Machines Corporation | Eviction override for larx-reserved addresses |
JP3490256B2 (ja) | 1997-06-12 | 2004-01-26 | 三菱電機株式会社 | エージェント方式 |
US5892966A (en) | 1997-06-27 | 1999-04-06 | Sun Microsystems, Inc. | Processor complex for executing multimedia functions |
US6360303B1 (en) * | 1997-09-30 | 2002-03-19 | Compaq Computer Corporation | Partitioning memory shared by multiple processors of a distributed processing system |
US6567839B1 (en) * | 1997-10-23 | 2003-05-20 | International Business Machines Corporation | Thread switch control in a multithreaded processor system |
US6209065B1 (en) | 1997-10-24 | 2001-03-27 | Compaq Computer Corporation | Mechanism for optimizing generation of commit-signals in a distributed shared-memory system |
US6542926B2 (en) * | 1998-06-10 | 2003-04-01 | Compaq Information Technologies Group, L.P. | Software partitioned multi-processor system with flexible resource sharing levels |
FR2770665B1 (fr) * | 1997-11-06 | 2002-12-20 | Alsthom Cge Alkatel | Dispositif d'echange entre unites de traitement d'informations a processeurs interconnectes par un bus commun |
US6965974B1 (en) * | 1997-11-14 | 2005-11-15 | Agere Systems Inc. | Dynamic partitioning of memory banks among multiple agents |
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 |
US6167430A (en) * | 1998-05-12 | 2000-12-26 | Unisys Corporation | Multicomputer with distributed directory and operating system |
US6336187B1 (en) | 1998-06-12 | 2002-01-01 | International Business Machines Corp. | Storage system with data-dependent security |
US6209066B1 (en) * | 1998-06-30 | 2001-03-27 | Sun Microsystems, Inc. | Method and apparatus for memory allocation in a multi-threaded virtual machine |
US6643708B1 (en) * | 1998-10-29 | 2003-11-04 | International Business Machines Corporation | Systems, methods and computer program products for chaining Java servlets across networks |
US6341338B1 (en) * | 1999-02-04 | 2002-01-22 | Sun Microsystems, Inc. | Protocol for coordinating the distribution of shared memory |
JP4123621B2 (ja) * | 1999-02-16 | 2008-07-23 | 株式会社日立製作所 | 主記憶共有型マルチプロセッサシステム及びその共有領域設定方法 |
US6480941B1 (en) * | 1999-02-23 | 2002-11-12 | International Business Machines Corporation | Secure partitioning of shared memory based multiprocessor system |
US6647208B1 (en) | 1999-03-18 | 2003-11-11 | Massachusetts Institute Of Technology | Hybrid electronic/optical switch system |
US6477170B1 (en) | 1999-05-21 | 2002-11-05 | Advanced Micro Devices, Inc. | Method and apparatus for interfacing between systems operating under different clock regimes with interlocking to prevent overwriting of data |
DE60039554D1 (de) * | 1999-06-25 | 2008-09-04 | Canon Res Ct France S A | Verteilte Verwaltung von Datenobjekten in einem Kommunikations-Netzwerk |
US6467012B1 (en) | 1999-07-08 | 2002-10-15 | International Business Machines Corporation | Method and apparatus using a distributed system structure to support bus-based cache-coherence protocols for symmetric multiprocessors |
US6668317B1 (en) * | 1999-08-31 | 2003-12-23 | Intel Corporation | Microengine for parallel processor architecture |
US6564328B1 (en) * | 1999-12-23 | 2003-05-13 | Intel Corporation | Microprocessor with digital power throttle |
US6694380B1 (en) * | 1999-12-27 | 2004-02-17 | Intel Corporation | Mapping requests from a processing unit that uses memory-mapped input-output space |
US6694336B1 (en) * | 2000-01-25 | 2004-02-17 | Fusionone, Inc. | Data transfer and synchronization system |
US6807620B1 (en) | 2000-02-11 | 2004-10-19 | Sony Computer Entertainment Inc. | Game system with graphics processor |
US6799207B1 (en) * | 2000-04-10 | 2004-09-28 | International Business Machines Corporation | Method and system for downloading software managed trees in a network processing system |
US7681018B2 (en) * | 2000-08-31 | 2010-03-16 | Intel Corporation | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set |
US6779049B2 (en) | 2000-12-14 | 2004-08-17 | International Business Machines Corporation | Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism |
US6865631B2 (en) | 2000-12-14 | 2005-03-08 | International Business Machines Corporation | Reduction of interrupts in remote procedure calls |
US7020871B2 (en) * | 2000-12-21 | 2006-03-28 | Intel Corporation | Breakpoint method for parallel hardware threads in multithreaded processor |
US6748501B2 (en) | 2000-12-30 | 2004-06-08 | International Business Machines Corporation | Microprocessor reservation mechanism for a hashed address system |
US6526491B2 (en) * | 2001-03-22 | 2003-02-25 | Sony Corporation Entertainment Inc. | Memory protection system and method for computer architecture for broadband networks |
JP3673245B2 (ja) * | 2002-06-28 | 2005-07-20 | 株式会社東芝 | 情報処理装置および同装置における電源制御方法 |
JP2004103347A (ja) * | 2002-09-09 | 2004-04-02 | Sumitomo Wiring Syst Ltd | コネクタ |
-
2004
- 2004-10-05 US US10/959,635 patent/US7231500B2/en not_active Expired - Lifetime
-
2005
- 2005-10-05 JP JP2005292708A patent/JP4768386B2/ja active Active
- 2005-10-05 WO PCT/JP2005/018737 patent/WO2006038717A2/en active Application Filing
- 2005-10-05 EP EP05793796A patent/EP1805626B1/en active Active
- 2005-10-05 AT AT05793796T patent/ATE437403T1/de not_active IP Right Cessation
- 2005-10-05 DE DE602005015607T patent/DE602005015607D1/de active Active
- 2005-10-05 KR KR1020077007209A patent/KR100939398B1/ko active IP Right Grant
- 2005-10-05 CN CN2005800335606A patent/CN101040268B/zh active Active
- 2005-10-05 TW TW094134822A patent/TWI317886B/zh active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109343986A (zh) * | 2018-08-17 | 2019-02-15 | 华为技术有限公司 | 处理内存故障的方法与计算机系统 |
CN109343986B (zh) * | 2018-08-17 | 2020-12-22 | 华为技术有限公司 | 处理内存故障的方法与计算机系统 |
CN112789604A (zh) * | 2018-09-28 | 2021-05-11 | 罗克韦尔柯林斯德国公司 | 具有多个处理器和多个接口的数据处理设备 |
CN112789604B (zh) * | 2018-09-28 | 2024-04-26 | 罗克韦尔柯林斯德国公司 | 具有多个处理器和多个接口的数据处理设备 |
Also Published As
Publication number | Publication date |
---|---|
JP4768386B2 (ja) | 2011-09-07 |
ATE437403T1 (de) | 2009-08-15 |
EP1805626B1 (en) | 2009-07-22 |
JP2006107514A (ja) | 2006-04-20 |
WO2006038717A2 (en) | 2006-04-13 |
EP1805626A2 (en) | 2007-07-11 |
KR100939398B1 (ko) | 2010-01-28 |
US7231500B2 (en) | 2007-06-12 |
WO2006038717A3 (en) | 2007-03-01 |
TW200634553A (en) | 2006-10-01 |
WO2006038717B1 (en) | 2007-04-19 |
KR20070064432A (ko) | 2007-06-20 |
DE602005015607D1 (de) | 2009-09-03 |
TWI317886B (en) | 2009-12-01 |
US20050120187A1 (en) | 2005-06-02 |
CN101040268B (zh) | 2010-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1291327C (zh) | 计算机处理系统和计算机处理方法 | |
CN101040268A (zh) | 宽带网络计算机体系结构中的外部数据接口 | |
CN1279470C (zh) | 宽带网络计算机体系结构的计算机处理器和处理设备 | |
CN1279469C (zh) | 一种处理器中处理数据的方法和处理数据的系统 | |
CN1496516A (zh) | 宽带网络计算机体系结构的资源专用系统和方法 | |
CN1494690A (zh) | 用于宽带网络的计算机体系结构和软件单元 | |
CN1815438A (zh) | 信息处理方法和系统 | |
CN1292366C (zh) | 用于使用多个处理器操纵数据的系统和方法 | |
CN1300723C (zh) | 将处理器用作虚拟设备的方法和信息处理系统 | |
CN1149806C (zh) | 高性能通信控制器 | |
CN103119912B (zh) | 多处理器计算平台中的处理器间通信技术 | |
JP6228459B2 (ja) | システムコール要求の通信の最適化 | |
US20100131955A1 (en) | Highly distributed parallel processing on multi-core device | |
CN1256681C (zh) | 从外围设备向主计算机系统传输中断的方法和装置 | |
US8321876B2 (en) | System and method of dynamically loading and executing module devices using inter-core-communication channel in multicore system environment | |
US20070074206A1 (en) | Operating cell processors over a network | |
CN1910571A (zh) | 单芯片协议转换器 | |
US20080046500A1 (en) | Process Management Apparatus, Computer Systems, Distributed Processing Method, and Computer Program | |
CN1906586A (zh) | 用于在多处理器系统中处置处理错误的方法和设备 | |
CN1910554A (zh) | 多处理器系统中处理器任务迁移的方法与装置 | |
US7366814B2 (en) | Heterogeneous multiprocessor system and OS configuration method thereof | |
CN101051301A (zh) | 用于操作计算机处理器阵列的方法和装置 | |
CN1834946A (zh) | I/o控制器、信号处理系统以及传输数据的方法 | |
US20120278814A1 (en) | Shared Drivers in Multi-Core Processor | |
CN1591339A (zh) | 提供共享Web模块的系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |