宽带网络计算机体系结构的存储器保护系统和方法

文档序号:7725917阅读:314来源:国知局
专利名称:宽带网络计算机体系结构的存储器保护系统和方法
技术领域
本发明涉及计算机处理器和计算机网络的体系结构,特别涉及宽带环境中计算机处理器和计算机网络的体系结构。本发明还涉及这种体系结构的编程模型。
背景技术
对于当前计算机网络,例如办公室网络中使用的局域网(LAN),以及象Internet等这样的全球网络,其计算机和计算设备主要是为单机计算设计的。通过计算机网络共享数据和应用程序不是这些计算机和计算设备的主要设计目的。通常还使用各种类型的、由不同生产商生产的处理器来设计这些计算机和计算设备,这些生产商例如是摩托罗拉、英特尔、德州仪器,索尼以及其它一些公司。这些处理器中的每一个都具有其独特的指令集和指令集体系结构(ISA),即,具有其独特的汇编语言指令集,和用于执行这些指令的基本计算单元和存储单元的结构。因此,程序员需要理解每个处理器的指令集和ISA,以便写出针对这些处理器的应用程序。当前计算机网络上计算机和计算设备的这种异构组合使得数据及应用程序的处理和共享复杂化。而且,经常需要同一应用程序的多个版本,以适应这种异构环境。
连接到全球网络,尤其是连接到Internet的计算机和计算设备的种类是非常广泛的。除个人计算机(PC)和服务器外,这些计算设备还包括蜂窝电话、移动计算机、个人数字助理(PDA)、机顶盒、数字电视以及许多其它设备。在如此多样的计算机和计算设备之间共享数据和应用程序带来了相当大的问题。
为克服这些问题,已使用了很多技术。尤其是,这些技术包括高级的接口和复杂的编程技术。这些解决方案的实现通常需要处理能力有相当大的增加。它们还经常大大增加在网络上处理应用程序和传输数据所需的时间。
通常,通过Internet从相应应用程序分别发送数据。这个解决方案不必发送应用程序和与该应用程序对应的每组发送数据。虽然该方案使得带宽需求达到最小,但它还是经常引起用户间的干扰(frustration)。可能在客户端计算机上得不到用于所发送数据的正确应用程序或者最新应用程序。该方案还需要针对网络上处理器的不同ISA和指令集的多样性编写每个应用程序的多个版本。
Java模型试图解决这个问题。该模型使用服从严格安全协议的小应用程序(“applet”)。applet由服务器通过网络发送,以便在客户端计算机(“client”)上运行。为避免必须向使用不同ISA的客户端发送相同applet的不同版本,所有applet均在客户端的Java虚拟机上运行。Java虚拟机是模拟具有Java ISA和Java指令集的计算机的软件。然而,该软件运行在客户端的ISA和客户端的指令集上。为客户端的每个不同ISA和指令集提供一个版本的Java虚拟机。这样,就不需要每个applet的不同版本的多样性。每个客户端仅下载针对其特定ISA和指令集的正确Java虚拟机,以运行所有Java applet。
虽然对必须为每个不同ISA和指令集编写应用程序的不同版本的问题提供了解决方案,然而Java处理模型在客户端计算机上仍需要一个附加软件层。这个附加软件层极大地降低了处理器的处理速度。这种速度降低对于实时、多媒体应用尤其明显。下载的Javaapplet还可能含有病毒、处理故障等。这些病毒和故障会破坏客户端的数据库,并造成其它损坏。虽然Java模型中使用的安全协议试图通过实现软件“沙箱(sandbox)”来解决这个问题(“沙箱”是客户端存储器中的一个空间,如果超出此空间,则Java applet不能写数据),但是这个软件驱动的安全模型在其执行过程中经常是不安全的,并且需要更多的处理。
实时、多媒体、网络应用变得越来越重要。这些网络应用需要极快的处理速度。将来,这类应用每秒钟可能需要若干千兆位的数据。目前的网络体系结构,特别是Internet的体系结构,以及当前在例如Java模型中实现的编程模型要达到这样的处理速度是极其困难的。
因此,需要一种新的计算机体系结构、一种新的计算机网络体系结构和一种新的编程模型。这种新的体系结构和编程模型应当解决在各种网络成员中间共享数据和应用程序的问题,而无须增加额外的计算负担。这种新的计算机体系结构和编程模型还应当解决在网络成员中间共享应用程序和数据所固有的安全问题。

发明内容
一方面,本发明提供一种用于计算机、计算设备和计算机网络的新型体系结构。另一方面,本发明提供一种用于这些计算机、计算设备和计算机网络的新型编程模型。
根据本发明,计算机网络的所有成员,即网络中所有计算机和计算设备,都用公用计算模块构建。这种公用计算模块具有一致的结构,并且最好使用相同的ISA。网络的成员可以是例如客户机、服务器、PC、移动计算机、游戏机、PDA、机顶盒、电器、数字电视、以及其它使用计算机处理器的设备。一致的模块化结构允许网络成员有效、高速地处理应用程序和数据,并允许在网络上快速传输应用程序和数据。这种结构还简化了具有各种规模和处理能力的网络成员的构建,以及这些成员处理的应用程序的准备。另外,根据本发明的一个实施例,提供了一个计算机网络,该计算机网络包含连接到所述网络的多个处理器,每个所述处理器包含具有相同指令集体系结构的多个第一处理单元,以及用于控制所述第一处理单元的第二处理单元,所述第一处理单元可处理通过所述网络传输的软件单元,每个所述软件单元包含与所述指令集体系结构兼容的程序,与所述程序相关的数据,以及在通过所述网络传输的全部所述软件单元中唯一标识所述软件单元的标识符。标识符最好是在通过所述网络传输的全部所述软件单元中唯一标识所述软件单元的标识号。
另一方面,本发明提供了一种用于通过网络传输数据和应用程序,以及用于在网络成员中间处理数据和应用程序的新型编程模型。该编程模型使用通过网络传输的、可由任何网络成员处理的软件单元。每个软件单元均具有相同的结构,并可包含应用程序和数据。由于模块化计算机体系结构提供的高速处理和传输速度,这些单元可以被快速处理。应用程序代码最好基于相同的公用指令集和ISA。每个软件单元最好包含全局标识(global ID),和说明该单元的处理所需计算资源数量的信息。由于所有计算资源具有相同的基本结构,并使用相同的ISA,所以执行这个处理的特定资源可以位于网络上的任何地方,并且可以动态分配。
基本的处理模块是处理器元件(PE)。PE最好包括处理单元(PU),直接存储器存取控制器(DMAC),以及多个附连处理单元(APU)。在优选实施例中,PE包含八个APU。PU和APU与最好具有交叉(cross-bar)体系结构的动态随机存取存储器(DRAM)交互。PU计划和编排APU对数据和应用程序的处理。APU以并行和独立的方式执行这种处理。DMAC控制PU和APU对共享DRAM中存储的数据和应用程序的存取。
根据这种模块化的结构,网络成员使用的PE的数目取决于该成员所需要的处理能力。例如,服务器可能使用四个PE,工作站可能使用两个PE,PDA可能使用一个PE。PE中被分配用来处理特定软件单元的APU的数目取决于单元中的程序和数据的复杂度和量级。
在优选实施例中,多个PE与共享DRAM相关。最好将DRAM分隔成多个区(section),并将这些区中的每一个分隔成多个存储体(memory bank)。在一个特别的优选实施例中,DRAM包含64个存储体,并且每个存储体具有一兆字节的存储容量。DRAM的每个区最好由存储体控制器控制,并且PE的每个DMAC最好访问每个存储体控制器。因此,该实施例中每个PE的DMAC可访问共享DRAM的任何部分。
另一方面,本发明提供使APU从共享DRAM读取数据,以及向其写入数据的同步系统和方法。该系统避免了共享DRAM的多个APU和多个PE中间的冲突。根据该系统和方法,将DRAM的一个区域指定为用于存储多个全空位。这些全空位中的每一个对应于DRAM的一个指定区域。将同步系统集成到DRAM的硬件中,因此避免了用软件实现的数据同步模式的计算开销。
本发明还在DRAM中实现沙箱以提供安全性,从而防止一个APU处理的程序的数据被另一个APU处理的程序的数据破坏。每个沙箱定义了共享DRAM中的一个区域,如果超出此区域,特定APU或APU组不能读数据或写数据。
另一方面,本发明提供用于PU向APU发出命令以启动APU对应用程序和数据的处理的系统和方法。这些命令被称为APU远程过程调用(ARPC),使PU能够编排和协调APU对应用程序和数据的并行处理,而无须APU充当协处理器的角色。
在另一方面,本发明提供用于建立专用流水线结构以处理流数据的系统和方法。根据该系统和方法,PU建立协同的APU组,以及与这些APU相关的协同存储器沙箱组,以用于这些数据的处理。在不处理数据的时候,流水线的专用APU和存储器沙箱仍保留为流水线专用。换句话说,在这些期间中,将专用APU及其相关沙箱置于保留状态。
在另一方面,本发明提供用于处理任务的绝对定时器。该绝对定时器独立于处理应用程序和数据的APU所使用的时钟频率。根据绝对定时器定义的任务时间周期来写应用程序。如果因APU的增强(例如)而使APU使用的时钟频率提高,由绝对定时器定义的给定任务的时间周期保持不变。该方案允许以更新版本的APU实现增强的处理时间,而无须禁止这些新APU处理针对较早APU的较慢处理时间而编写的较早应用程序。
本发明还提供使具有更快处理速度的更新APU能够处理针对较早APU的较慢处理速度而编写的较早应用程序的一种可选方案。在这个可选方案中,针对因速度增强而在协调APU的并行处理方面所产生的问题,在处理期间对APU在处理这些较早应用程序时所使用的特定指令或微代码进行分析。在由这些APU中的某一些执行的指令中插入“无操作”(“NOOP”)指令,以使APU的处理按程序预期的顺序完成。通过在这些指令中插入这些NOOP,保持了APU执行所有指令的正确定时。
在另一方面,本发明提供包含集成了光波导的集成电路的芯片封装(chip package)。


图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对应用程序和数据的并行处理的绝对定时器的方案。
具体实施例方式
图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之间,因此,它包含的计算模块的数目介于客户端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),即APU 207、APU 209、APU 211、APU 213、APU 215、APU 217、APU 219和APU 221。局部PE总线223在APU、DMAC 205和PU203间传输数据和应用程序。局部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利于在DRAM 225与PE 201的APU和PU之间传输数据。如下面进一步讨论的,DMAC 205在DRAM 225中为每个APU指定一个独占区域,只有该APU可以往里写数据或从中读数据。这个独占区域被称为“沙箱”。
PE 203可以是例如能够独立处理数据和应用程序的标准处理器。在操作中,PU 203调度并编排APU对数据和应用程序的处理。APU最好是单指令多数据(SIMD)处理器。在PU 203的控制下,APU以并行和独立的方式执行这些数据和应用程序的处理。DMAC 205控制PU 203和APU对存储在共享DRAM 225中的数据和应用程序的存取。虽然PE 201最好包括八个APU,但也可根据所需的处理能力在PE中使用更多或更少数目的APU。并且,可将许多的像PE 201这样的PE连接或封装在一起以提供增强的处理能力。
例如,如图3所示,可将四个PE一起封装或连接在例如一个或多个芯片封装内,以形成用于网络104的成员的单个处理器。这种结构被称为宽带引擎(BE)。如图3所示,BE 301包含四个PE,即PE303、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。然而,根据所需要的处理能力,可以使用更多或更少数目的浮点单元412和整数单元414。在优选实施例中,局部存储器406包含128千字节的存储量,并且寄存器410的容量是128×128位。浮点单元412最好以320亿(32 billion)次浮点运算每秒(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占用。根据PE502或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,即PE1110、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上光接口的光端口。
图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的各个DMAC1210连接到八个存储体控制器1206。每个存储体控制器1206控制DRAM 1204的八个存储体1208(图中只画出了四个)。因此,DRAM1204总共包含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的DRAM 1228(而不是象通常的情况那样向BE 1222的DRAM 1224)的存储器位置发出写命令。BE 1222的DMAC 1230通过交叉开关1221向存储体控制器1234发送写命令,并且存储体控制器1234向连接到存储体控制器1234的外部端口1232发送该命令。BE 1226的DMAC1238接收该写命令,并将该命令传送到BE 1226的开关单元1240。开关单元1240识别包含在写命令中的DRAM地址,并通过BE 1226的存储体控制器1242向DRAM 1228的存储体1244发送存储在该地址中的数据。因此,开关单元1240使DRAM 1224和DRAM 1228能够充当BE 1222的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和PU 1604通过局部PE总线1607与DMAC 1606通信。DMAC1606通过交叉开关连接到总线1608。总线1608连接到DRAM1610。
如上所述,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位,APUID和LS地址。例如,对于存储器位置1708,该状态信息包括F/E位1712,APU ID 1714和LS地址1716。
通过使用状态信息和忙位,能够实现在PE或一组PE的APU中间对共享DRAM的数据读写同步。
图17B说明了从APU 1722的LS存储器位置1732向DRAM1702的存储器位置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以指示该存储器位置中的数据不是最新或有效时,从DRAM1702的存储器位置(例如存储器位置1708)同步读数据到APU的局部存储器的LS存储器位置(例如局部存储器1744的LS存储器位置1752)的操作。如图17I所示,为启动这种传送,将LS存储器位置1750的存储段1752中的忙位设成1,以保留该LS存储器位置用于该数据传输。接下来,如图17J所示,控制逻辑1742针对DRAM1702的存储器位置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中的数据变成最新时,使用该APU ID和LS存储器位置来确定当前数据要发送到的位置。
当APU将数据写入该存储器位置时,存储器位置1708中的数据变为有效和最新的。图17L说明了从例 APU 1722的存储器位置1732到存储器位置1708的数据同步写操作。因为针对该存储器位置的F/E位被设为0,所以这些数据的这种同步写是许可的。
如图17M所示,在写操作之后,存储器位置1708中的数据变成最新和有效的。因此,立即从存储段1762读取来自存储段1762的APU ID 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命令。该命令包括DRAM 2002的存储器位置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。PE2502包括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中,PU2504分配APU 2508以处理网络apulet。网络apulet包含用于处理网络104的网络协议的程序。在这种情况下,该协议是传输控制协议/网际协议(TCP/IP)。符合该协议的TCP/IP数据包通过网络104进行传输。一旦接收到数据包,APU 2508处理这些数据包,并将包中的数据装配到软件单元102中。在步骤2612中,在网络apulet的处理完成时,PU 2504便命令APU 2508执行常驻终止。在步骤2614中,PU 2504指定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中,PU2504指定沙箱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中,APU 2510将视频数据写到沙箱2522中。在步骤2650中,APU 2510向沙箱2520发出同步读取命令,以使该沙箱准备接收另外的MPEG数据。在步骤2652中,APU 2510处理常驻终止。这种处理使这个APU进入保留状态,在保留状态期间,该APU等待处理MPEG数据流中另外的MPEG数据。
在一组APU及其相关沙箱中间可建立用于处理其它类型据的其它专用结构。例如,如图27所示,可以建立专用APU组,例如APU 2702、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执行所有指令的正确定时。
虽然这里参照特定实施例对本发明进行了说明,但是我们应该理解,这些实施例只是为了示例性地说明本发明的原理和应用。因此,我们应该理解,在不脱离由所附权利要求限定的本发明的精神和范围的条件下,可以对示例性的实施例进行许多种修改,并且可以设计出其它的方案。
权利要求
1.一种计算机处理系统,所述处理系统包括第一存储器,用于存储程序和与所述程序相关的数据;多个第一处理单元,用于处理所述程序和所述相关数据;存储器控制器,用于控制所述第一处理单元对所述第一存储器的访问;第二存储器,用于存储存取表和关键字表,所述存取表包括多个存取条目,每个所述存取条目包含存取关键字,和所述第一存储器内与所述存取关键字相关的存储器空间的标识,所述关键字表包括多个关键字条目,每个所述关键字条目包含所述第一处理单元中的一个的标识,和与所述第一处理单元相关的请求关键字;第二处理单元,用于控制所述第一处理单元对所述程序和所述相关数据的所述处理,所述第二处理单元可以构造和维护所述存取表和所述关键字表,所述第二处理单元还可以指示所述第一处理单元中的任何一个处理所述程序中的一个,所述一个第一处理单元在处理所述一个程序时可以向所述存储器控制器发出请求以便访问所述第一存储器内的存储位置,所述存储器控制器可以响应所述请求将所述关键字表中与所述一个处理单元相关的请求关键字与所述存取表中的存取关键字相比较,并且如果所述存取关键字中的一个对应于所述关键字表中与所述一个第一处理单元相关的请求关键字,而所述存储位置对应于和所述存取表中标识的所述一个存取关键字相关的存储器空间,则执行所述请求。
2.如权利要求1所述的计算机处理系统,还包括多个局部存储器,每个所述局部存储器与所述第一处理单元中的一个相关,其中通过指示所述存储器控制器从所述第一存储器向与所述一个第一处理单元相关的局部存储器传送所述一个程序,所述第二处理单元可以指示所述一个第一处理单元处理所述一个程序,所述一个第一处理单元此后处理来自所述局部存储器的所述一个程序。
3.如权利要求1所述的计算机处理系统,其中所述一个存取关键字包括多个第一位,并且与所述一个第一处理单元相关的所述请求关键字包括多个第二位,所述存储器控制器可以仅在所有所述多个第一位与所有所述多个第二位匹配时执行所述请求。
4.如权利要求1所述的计算机处理系统,其中所述一个存取关键字包括多个第一位,和关键字掩码,并且与所述一个第一处理单元相关的所述请求关键字包括多个第二位,所述存储器控制器可以仅在所有所述多个第一位与所述多个第二位匹配,或者所述多个第一位中不与所述多个第二位匹配的所有位被所述关键字掩码屏蔽时,执行所述请求。
5.如权利要求1所述的计算机处理系统,其中所述一个存取关键字包括多个第一位,并且与所述一个第一处理单元相关的所述请求关键字包括多个第二位,和关键字掩码,所述存储器控制器可以仅在所有所述多个第二位与所述多个第一位匹配,或者所述多个第二位中不与所述多个第一位匹配的所有位被所述关键字掩码屏蔽时,执行所述请求。
6.如权利要求1所述的计算机处理系统,其中每个所述关键字条目还包含关键字掩码。
7.如权利要求1所述的计算机处理系统,其中每个所述存取条目还包含关键字掩码。
8.如权利要求1所述的计算机处理系统,其中每个所述关键字条目还包含关键字掩码,而每个所述存取条目还包含关键字掩码。
9.如权利要求1所述的计算机处理系统,其中每个所述存取条目还包含基位置条目和尺寸条目,所述基位置条目提供所述存储器空间中与所述存取条目相关的所述第一存储器内的起始地址,而所述尺寸条目提供所述存储器空间中与所述存取条目相关的所述第一存储器内的尺寸。
10.如权利要求1所述的计算机处理系统,其中所述第一存储器是动态随机存取存储器,并且是所述计算机处理系统的主存储器。
11.一种计算机处理方法,所述方法包括在第一存储器中存储程序和与所述程序相关的数据;通过多个第一处理单元处理所述程序和所述相关数据;通过存储器控制器控制所述第一处理单元对所述第一存储器的访问;通过第二处理单元在第二存储器中构造存取表和关键字表,所述存取表包括多个存取条目,每个所述存取条目包含存取关键字,和所述第一存储器内与所述存取关键字相关的存储器空间的标识,所述关键字表包括多个关键字条目,每个所述关键字条目包含所述第一处理单元中的一个的标识,和与所述第一处理单元相关的请求关键字;通过所述第二处理单元控制所述第一处理单元对所述程序和所述相关数据的所述处理;通过所述第二处理单元指示所述第一处理单元中的任何一个处理所述程序中的一个;在处理所述一个程序时从所述一个第一处理单元发出请求到所述存储器控制器,以便访问所述第一存储器内的存储位置;响应所述请求,将所述关键字表中与所述一个第一处理单元相关的请求关键字与所述存取表中的存取关键字相比较;如果所述存取关键字中的一个对应于所述关键字表中与所述一个处理单元相关的请求关键字,并且所述存储位置对应于和所述存取表中标识的所述一个存取关键字相关的存储器空间,则执行所述请求。
12.如权利要求11所述的计算机处理方法,还包括通过从所述第二处理单元向所述存储器控制器发出命令以便从所述第一存储器向与所述一个第一处理单元相关的局部存储器传送所述一个程序,通过所述第二处理单元指示所述一个第一处理单元处理所述一个程序,并且此后通过所述一个第一处理单元处理来自所述局部存储器的所述一个程序。
13.如权利要求11所述的计算机处理方法,其中所述一个存取关键字包括多个第一位,并且与所述一个第一处理单元相关的所述请求关键字包括多个第二位,还包括通过所述存储器控制器仅在所有所述多个第一位与所有所述多个第二位匹配时执行所述请求。
14.如权利要求11所述的计算机处理方法,其中所述一个存取关键字包括多个第一位,和关键字掩码,并且与所述一个第一处理单元相关的所述请求关键字包括多个第二位,还包括通过所述存储器控制器仅在所有所述多个第一位与所述多个第二位匹配,或者所述多个第一位中不与所述多个第二位匹配的所有位被所述关键字掩码屏蔽时,执行所述请求。
15.如权利要求11所述的计算机处理方法,其中所述一个存取关键字包括多个第一位,并且与所述一个第一处理单元相关的所述请求关键字包括多个第二位,和关键字掩码,还包括通过所述存储器控制器仅在所有所述多个第二位与所述多个第一位匹配,或者所述多个第二位中不与所述多个第一位匹配的所有位被所述关键字掩码屏蔽时,执行所述请求。
16.如权利要求11所述的计算机处理方法,其中每个所述关键字条目还包含关键字掩码。
17.如权利要求11所述的计算机处理方法,其中每个所述存取条目还包含关键字掩码。
18.如权利要求11所述的计算机处理方法,其中每个所述关键字条目还包含关键字掩码,而每个所述存取条目还包含关键字掩码。
19.如权利要求11所述的计算机处理方法,其中每个所述存取条目还包含基位置条目和尺寸条目,所述基位置条目提供所述存储器空间中与所述存取条目相关的所述第一存储器内的起始地址,而所述尺寸条目提供所述存储器空间中与所述存取条目相关的所述第一存储器内的尺寸。
20.如权利要求11所述的计算机处理方法,其中所述第一存储器是动态随机存取存储器,并且是所述计算机处理系统的主存储器。
21.一种计算机处理系统,所述处理系统包括第一存储器,用于存储程序和与所述程序相关的数据,所述第一存储器包括多个可寻址存储位置,每个所述可寻址存储位置包括与所述可寻址存储位置相关的附加存储段,并且包含针对所述可寻址存储位置的存取关键字;多个第一处理单元,用于处理所述程序和所述相关数据;存储器控制器,用于控制所述第一处理单元对所述第一存储器的访问;第二存储器,用于存储包括多个关键字条目的关键字表,每个所述关键字条目包含所述第一处理单元中的一个的标识,和与所述第一处理单元相关的请求关键字;第二处理单元,用于控制所述第一处理单元对所述程序和所述相关数据的所述处理,所述第二处理单元可以分配和维护所述存取关键字,并且构造和维护所述关键字表,所述第二处理单元还可以指示所述第一处理单元中的任何一个处理所述程序中的一个,所述一个第一处理单元在处理所述一个程序时可以向所述存储器控制器发出请求以便访问所述可寻址存储位置中的一个,所述存储器控制器可以响应所述请求将所述关键字表中与所述一个处理单元相关的请求关键字,与附加存储段中包含的、和所述一个可寻址存储位置相关的存取关键字相比较,并且如果所述关键字表中与所述一个处理单元相关的请求关键字对应于所述附加存储段中包含的、与所述一个可寻址存储位置相关的请求关键字,则执行所述请求。
22.如权利要求21所述的计算机处理系统,还包括多个局部存储器,每个所述局部存储器与所述第一处理单元中的一个相关,其中通过指示所述存储器控制器从所述第一存储器向与所述一个第一处理单元相关的局部存储器传送所述一个程序,所述第二处理单元可以指示所述一个第一处理单元处理所述一个程序,所述一个第一处理单元此后处理来自所述局部存储器的所述一个程序。
23.如权利要求21所述的计算机处理系统,其中所述存储段中包含的、与所述一个可寻址存储位置相关的所述存取关键字包括多个第一位,并且与所述一个第一处理单元相关的所述请求关键字包括多个第二位,所述存储器控制器可以仅在所有所述多个第一位与所有所述多个第二位匹配时执行所述请求。
24.如权利要求21所述的计算机处理系统,其中所述存储段中包含的、与所述一个可寻址存储位置相关的所述存取关键字包括多个第一位,和关键字掩码,并且与所述一个第一处理单元相关的所述请求关键字包括多个第二位,所述存储器控制器可以仅在所有所述多个第一位与所述多个第二位匹配,或者所述多个第一位中不与所述多个第二位匹配的所有位被所述关键字掩码屏蔽时,执行所述请求。
25.如权利要求21所述的计算机处理系统,其中所述存储段中包含的、与所述一个可寻址存储位置相关的所述存取关键字包括多个第一位,并且与所述一个第一处理单元相关的所述请求关键字包括多个第二位,和关键字掩码,所述存储器控制器可以仅在所有所述多个第二位与所述多个第一位匹配,或者所述多个第二位中不与所述多个第一位匹配的所有位被所述关键字掩码屏蔽时,执行所述请求。
26.如权利要求21所述的计算机处理系统,其中每个所述关键字条目还包含关键字掩码。
27.如权利要求21所述的计算机处理系统,其中每个所述附加存储段还包含关键字掩码。
28.如权利要求21所述的计算机处理系统,其中每个所述关键字条目还包含关键字掩码,而每个所述附加存储段还包含关键字掩码。
29.如权利要求21所述的计算机处理系统,其中每个所述附加存储段还包含状态信息,所述状态信息有关与所述附加存储段相关的可寻址存储位置中存储的数据的状态。
30.如权利要求21所述的计算机处理系统,其中所述第一存储器是动态随机存取存储器,并且是所述计算机处理系统的主存储器。
31.一种计算机处理方法,所述方法包括在第一存储器中存储程序和与所述程序相关的数据,所述第一存储器包含多个可寻址存储位置,每个所述可寻址存储位置包含与所述可寻址存储位置相关的附加存储段;在每个所述可寻址存储位置的每个所述附加存储段中存储针对所述可寻址存储位置的存取关键字;通过多个第一处理单元处理所述程序和所述相关数据;通过存储器控制器控制所述第一处理单元对所述第一存储器的访问;在第二存储器中存储包括多个关键字条目的关键字表,每个所述关键字条目包含所述第一处理单元中的一个的标识,和与所述第一处理单元相关的请求关键字;通过所述第二处理单元控制所述第一处理单元对所述程序和所述相关数据的所述处理;通过所述第二处理单元分配每个所述存取关键字;通过所述第二处理单元构造所述关键字表;通过所述第二处理单元指示所述第一处理单元中的任何一个处理所述程序中的一个;在处理所述一个程序时从所述一个第一处理单元发出请求到所述存储器控制器,以便访问所述可寻址存储位置中的一个;响应所述请求,将所述关键字表中与所述一个处理单元相关的请求关键字,与附加存储段中包含的、与所述一个可寻址存储位置相关的存取关键字相比较;如果所述关键字表中与所述一个处理单元相关的请求关键字对应于所述附加存储段中包含的、与所述一个可寻址存储位置相关的所述存取关键字,执行所述请求。
32.如权利要求31所述的计算机处理方法,还包括通过指示所述存储器控制器从所述第一存储器向与所述一个第一处理单元相关的局部存储器传送所述一个程序,通过所述第二处理单元指示所述一个第一处理单元处理所述一个程序,并且此后通过所述一个第一处理单元处理来自所述局部存储器的所述一个程序。
33.如权利要求31所述的计算机处理方法,其中所述附加存储段中包含的、与所述一个可寻址存储位置相关的所述存取关键字包括多个第一位,并且与所述一个第一处理单元相关的所述请求关键字包括多个第二位,还包括通过所述存储器控制器仅在所有所述多个第一位与所有所述多个第二位匹配时执行所述请求。
34.如权利要求31所述的计算机处理方法,其中所述附加存储段中包含的、与所述一个可寻址存储位置相关的所述存取关键字包括多个第一位,和关键字掩码,并且与所述一个第一处理单元相关的所述请求关键字包括多个第二位,还包括通过所述存储器控制器仅在所有所述多个第一位与所述多个第二位匹配,或者所述多个第一位中不与所述多个第二位匹配的所有位被所述关键字掩码屏蔽时,执行所述请求。
35.如权利要求31所述的计算机处理方法,其中所述附加存储段中包含的、与所述一个可寻址存储位置相关的所述存取关键字包括多个第一位,并且与所述一个第一处理单元相关的所述请求关键字包括多个第二位,和关键字掩码,还包括通过所述存储器控制器仅在所有所述多个第二位与所述多个第一位匹配,或者所述多个第二位中不与所述多个第一位匹配的所有位被所述关键字掩码屏蔽时,执行所述请求。
36.如权利要求31所述的计算机处理方法,其中每个所述关键字条目还包含关键字掩码。
37.如权利要求31所述的计算机处理方法,其中每个所述附加存储段还包含关键字掩码。
38.如权利要求31所述的计算机处理方法,其中每个所述关键字条目还包含关键字掩码,而每个所述附加存储段还包含关键字掩码。
39.如权利要求31所述的计算机处理方法,其中每个所述附加存储段还包含状态信息,所述状态信息有关与所述附加存储段相关的可寻址存储位置中存储的数据的状态。
40.如权利要求31所述的计算机处理方法,其中所述第一存储器是动态随机存取存储器,并且是所述计算机处理系统的主存储器。
全文摘要
提供一种用于宽带网络上的高速处理的计算机体系结构和编程模型。该体系结构使用一致的模块化结构,公用计算模块和统一的软件单元。公用计算模块包括控制处理器,多个处理单元,由处理单元处理其程序的多个局部存储器,直接存储器存取控制器和共享主存储器。还提供了一种用于协调处理单元从共享主存储器读数据和向其写数据的同步系统和方法。提供了硬件沙箱结构,用于确保处理单元正在处理的程序中间的数据不会被破坏。
文档编号H04L29/06GK1496511SQ02806348
公开日2004年5月12日 申请日期2002年3月19日 优先权日2001年3月22日
发明者铃置雅一, 山崎刚 申请人:索尼计算机娱乐公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1