首页> 中国专利> 用于混合DMA队列和DMA表的方法和装置

用于混合DMA队列和DMA表的方法和装置

摘要

本发明所披露的方法和装置,用于对DMA命令分配标识符,该标识符用于与有关包含DMA命令的状态信息的DMA表的条目的关联;接收关于完成由DMA命令定义的DMA数据传送的表示;以及将与DMA数据传送相关的DMA表条目的状态信息更新成表示已完成DMA数据传送。

著录项

  • 公开/公告号CN101099140A

    专利类型发明专利

  • 公开/公告日2008-01-02

    原文格式PDF

  • 申请/专利权人 索尼计算机娱乐公司;

    申请/专利号CN200680001740.0

  • 发明设计人 铃置雅一;

    申请日2006-02-07

  • 分类号G06F13/28(20060101);

  • 代理机构中国国际贸易促进委员会专利商标事务所;

  • 代理人李德山

  • 地址 日本东京

  • 入库时间 2023-12-17 19:32:51

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2010-06-16

    授权

    授权

  • 2008-02-27

    实质审查的生效

    实质审查的生效

  • 2008-01-02

    公开

    公开

说明书

技术领域

本发明涉及用于在多处理系统内传送数据的方法和装置。

背景技术

近年来,由于刀片(cutting-edge)计算机应用涉及实时、多媒体功能,因此,对更快速计算机处理数据吞吐量的需求越来越高。在这些应用中,图形应用对处理系统要求最高,这是由于它们需要在相当短的时期内完成如此大量的数据访问、数据计算和数据操作,以实现预期视觉效果。这些应用需要极其快速的处理速度,例如,每秒数千兆位的数据。尽管某些处理系统采用单个处理器实现快速处理速度,其他则使用多处理器体系结构实现。在多处理器系统中,多个子处理器可并行(或至少同时)操作,以实现所需处理效果。

传统处理系统可采用直接存储器访问(DMA)技术将数据从一个存储器传送到另一设备,该设备可为另一存储器。可使用DMA命令队列存储未决DMA命令,这是由于要完成DMA传送可能要花费很长的时间。遗憾的是,发送DMA命令以了解DMA传送状态的应用程序如果性能不佳,则导致效率较低的处理吞吐。

发明内容

本发明的一个或多个方面可使应用程序注意到具体DMA命令的状态。例如,该应用程序在等待完成DMA传送期间可执行其他任务。本发明提供了使应用程序获得关于任何具体DMA命令的状态信息的机制。

本发明的一个或多个实施例可包括硬件DMA命令队列、软件DMA状态表和软件窥探控制器。硬件DMA命令队列包含DMA命令和针对每个命令的标记标识符。软件DMA状态表优选地处在处理系统的局部存储器中,并在DMA队列中对于每个DMA命令包含:相应标签、起始地址、结束地址、入站/出站表示、和状态。

当处理器调用DMA命令时,软件窥探控制器通过分配标签并在软件DMA状态表中添加条目来注册命令。当调用DMA处理程序(DMA handler)时,软件窥探控制器对软件DMA状态表中条目的状态进行更新(同步)。运行在处理器上的应用程序可通过向软件窥探控制器发出请求来“窥视(peek)”局部存储器中的地址。软件窥探控制器通过将该地址与DMA状态表中的起始/结束地址进行比较,确定哪个DMA命令与该地址相关联。然后,DMA状态表将状态(忙/完成)返回到应用程序。这为应用程序提供了关于它是否可使用该地址处的数据,它是否应等待,或者它是否应执行其他任务的信息。使DMA传送的固有延迟有益地得到隐藏。

根据本发明的一个或多个其他实施例,方法和装置可用于:从处理系统的处理器接收针对存储在处理系统的存储器内的数据的第一DMA命令,对第一DMA命令分配标识符,该标识符用于与包含有关第一DMA命令的状态信息的DMA表的条目的关联。

DMA表可包括以下至少之一:标识符;存储器的存储数据的起始地址;存储器的存储数据的结束地址;进、出存储器的数据传送方向;以及状态信息。

根据本发明的一个或多个其他实施例,方法和装置可用于:在处理系统的处理器中执行包括多个程序任务的软件程序;发出用于实现从处理系统的第一存储器向第二存储器的数据传送的第一DMA命令;向处理系统的窥探控制器发出关于第一DMA命令的一个或多个状态请求;以及将一个或多个处理任务延迟,直至对至少一个所述状态请求的响应表明已完成从第一存储器到第二存储器的数据传送。

根据本发明的一个或多个其他实施例,方法和装置可用于:接收关于完成从处理器的第一存储器到第二存储器的DMA数据传送的指示;以及将与DMA数据传送相关的DMA表的条目的状态信息更新成表示已完成DMA数据传送。

根据本发明的一个或多个其他实施例,装置可包括:能够与主存储器进行通信的至少一个处理器;与至少一个处理器相连的局部存储器;用于存储由至少一个处理器发出的一个或多个DMA命令的DMA命令队列;以及包含与DMA命令队列中存储的每个DMA命令相关联的至少一个条目的DMA表,一个或多个所述条目包含有关于是否已完成相关DMA命令的DMA数据传送的状态信息。

装置还可包括窥探控制器,用于接收关于是否已完成DMA命令的DMA数据传送的指示。窥探控制器还可用于根据是否完成相关DMA数据传送来更新DMA表的条目的状态信息。窥探控制器还可用于对DMA命令分配标识符,标识符将DMA命令与DMA表的各个条目相关联。窥探控制器还可用于监视DMA命令队列,以确定是否完成DMA数据传送。窥探控制器还可用于将DMA命令队列与DMA表同步,以更新其条目的状态信息。

优选的是,实现以下至少之一:DMA命令队列为硬件实现的队列;以及DMA表为软件实现的表。

窥探控制器还优选地用于实现以下至少之一:从处理器接收关于DMA命令的一个或多个状态请求;检查与DMA命令相关联的DMA表的条目,以获得其状态信息;以及基于状态信息将关于是否已完成DMA命令的数据传送的指示返回到处理器。

下面,结合附图,通过此处关于本发明的描述,本领域技术人员将易于理解其他方面、特征、优点等。

附图说明

出于描述本发明的各个方面的目的,以附图形式显示出优选实施方式,然而,应该理解,本发明并不限于所示出的具体设置和方式。

图1表示根据本发明的一个或多个方面可采用的处理系统结构的框图;

图2表示图1所示处理系统和/或此处的其他实施例可采用的DMA窥探控制器、DMA命令队列,和DMA状态表的框图;

图3表示,根据本发明的一个或多个方面,图1所示处理系统和/或此处的其他实施例可实现的处理步骤的流程图;

图4表示如何采用DMA窥探控制器、DMA命令队列和DMA状态表来隐藏采用双缓冲器将两个数据流合并成一个数据流的处理的时延的示例性框图;

图5表示如何采用DMA窥探控制器、DMA命令队列和DMA状态表来隐藏采用双缓冲器将一个数据流解交织成两个数据流的处理的时延的示例性框图;

图6表示根据本发明的一个或多个方面可采用的、具有两个或多个子处理器的多处理系统的结构视图;

图7表示可用于实现本发明的一个或多个其他方面的优选处理器元件(PE)的视图;

图8表示根据本发明的一个或多个其他方面可采用的、图7所示系统的示例性子处理单元(SPU)的结构视图;以及

图9表示根据本发明的一个或多个其他方面可采用的、图7所示系统的示例性处理单元(PU)的结构视图。

具体实施方式

参照附图,其中,相同的附图标记表示同样的元件,在图1中示出可适于实现本发明的一个或多个特征的处理系统100。出于说明简洁和清楚的目的,此处将图1所示框图表述和描述为表示装置100,然而,应该理解,该描述可易于应用到等效方法的各个方面。

装置100优选地包括处理器102、局部存储器104、主存储器106(例如,DRAM)和总线108。可使用能够从系统存储器106请求数据以及对数据进行操作以实现预期效果的任何已知技术,来实现处理器102。例如,可使用能够执行软件和/或固件的任何已知微处理器(包括标准微处理器、分布式微处理器等)实现处理器102。例如,处理器102可为能够请求和操作数据的图形处理器,所述数据例如为像素数据,包括灰度级信息、彩色信息、纹理数据、多边形信息、视频帧信息等。

局部存储器104的位置接近处理器102,使得处理器可执行程序代码,或者操作与系统存储器106相对的局部存储器104内的数据。局部存储器104优选地不是传统硬件高速缓存,即优选地不具有片上或片外硬件高速缓存电路、高速缓存寄存器、高速缓存控制器等来实现硬件高速缓存功能。由于片上空间可能受到限制,局部存储器104的尺寸可能要比系统存储器106要小得多。处理器102优选地提供用于通过总线108从系统存储器106向局部存储器104中拷贝数据的数据访问请求,以便于程序执行和数据操作。用于实现数据访问的机制优选地通过使用在存储器接口110内的直接存储器访问控制器DMAC实现。

另外,参照图2,系统100可包括DMA窥探控制器200、DMA命令队列202和DMA表204。DMA命令队列202实际与DMA窥探控制器200例如通过路径206相连,而DMA表204实际通过路径208与DMA窥探控制器200相连。

DMA命令队列202优选地用于存储由处理器102发出的一个或多个DMA命令212。DMA命令212可包括要传送的数据的起始地址,要传送的数据的结束地址和指示传送应在何处进行的方向表示(源到目的地)中的一个或多个。DMA命令队列202优选地也包括与每个DMA命令212相关的标签210(或标识符)。标签210优选地将各个DMA命令212与DMA表204的一个或多个条目相关联。

DMA表204优选地包括多个条目,每个条目包括标签214、要传送的数据的起始地址216、要传送的数据的结束地址218、方向220(要传送数据的源和目的地的其他标记)和状态信息222中的一个或多个。每个条目的标签214优选地与DMA命令队列202内的相应标签210相关联。从而,可将一个或多个DMA命令212与DMA表204的一个或多个相应条目相关联。状态信息222优选地表示是否已完成相应DMA命令212的数据传送。

优选地是,以硬件形式实现DMA命令队列,例如,通过一个或多个硬件寄存器以及相关逻辑电路。DMA表204优选地通过软件实现,例如,可存储在系统100的局部存储器104内。

结合图3所示流程图,可更好地理解系统100的上述特征,图3示出本发明的一个或多个实施例可实现的一个或多个处理步骤。在步骤300,例如,可通过处理器102调用DMA命令212。MIF 110的DMAC处理程序优选地通过采用众所周知的直接存储器访问技术为DMA命令212提供服务。此外,DMA命令212优选地由DMA窥探控制器200接收,使得可对它们进行注册(步骤302)。注册可包括对DMA命令212分配标签210,使得可将标签210与DMA命令队列202内的DMA命令212相关联。注册还可需要对DMA状态表204添加条目,其中,条目包括相应标签214和至少状态信息222。最初,状态信息222将表示未完成与DMA命令212相关的数据传送。在步骤304,DMAC可将DMA命令212和标签210添加到DMA命令队列202。此时,可就状态信息222将DMA命令212与DMA表204的相关条目(或多个条目)相同步(步骤306)。

然后,处理流程可进行到节点A,从该节点可采取至少三条路径。在步骤308,可进行关于是否调用另一DMA命令212的确定。如果确定结果是肯定的,则处理流程优选地返回到步骤300,并再次执行步骤300-306。如果在步骤308处的确定结果为否,则处理流程优选地循环回节点A。

在步骤310,优选地进行关于是否已发生对DMA处理程序的调用的确定。这可为DMAC完成与具体DMA命令212相关联的数据传送的情形。如果在步骤310的确定结果是肯定的,则处理流程优选地返回到步骤306。在步骤306,DMA窥探控制器200优选地促使实现DMA命令队列202和与该命令212相关联的DMA表204的一个或多个条目之间的同步。同步优选地将给定条目的状态信息222改变成表示已完成与DMA命令212相关的数据传送。同步的具体细节还可包括找出DMA表204的一个或多个合适条目。这可通过识别出与DMA命令队列202内DMA命令212相关联的标签210,并确定DMA表204的相应标签(或多个标签)214来实现。另一方面,如果在步骤310的确定结果为否,则处理流程优选地流回到节点A。

在步骤312,优选地进行关于DMA窥探请求是否已由DMA窥探控制器200接收的确定。例如,处理器102可向DMA窥探控制器200发出窥探请求,以发现是否已经通过例如完成相关联的数据传送为一个或多个DMA命令212提供了服务。窥探请求可指定数据被传送自或传送到的地址。如果在步骤312处的确定结果为否,则处理流程优选地流回到节点A。如果在步骤312处的确定结果为是,则DMA窥探控制器200优选地从DMA表204获得状态信息222,以确定是否完成与给定DMA命令212相关联的数据传送。这可需要通过检查DMA命令队列202来确定与给定DMA命令212相关联的标签210。例如,窥探请求可包括要传送的数据的起始地址和结束地址中的至少之一。DMA窥探控制器200可利用一个或多个这样的地址发现在DMA命令队列202内的相应DMA命令212,从而获得相关联的标签210。一旦DMA窥探控制器200具有标签210,它可使用这样的标签找出在DMA表204内的相关标签214。在步骤316,DMA窥探控制器200优选地从与标签214相关联的条目检索状态信息222,并将关于是否完成数据传送的指示返回到处理器102。

有益的是,处理器102可执行包括若干程序任务的一个或多个软件程序。作为执行该软件程序的结果,处理器102可发出一个或多个DMA命令212,使得可将数据从主存储器106传送到局部存储器104,或反之亦然。处理器102通过向DMA窥探控制器200发送窥探请求并从其接收状态更新,可获得关于一个或多个DMA命令的状态指示。处理器102可利用该信息在执行软件程序期间采取合适步骤,以提高处理效率,例如隐藏与传送的DMA数据有关的时延。例如,处理器102可将一个或多个处理任务延迟,直至对一个或多个状态请求的响应表示已完成与特定DMA命令相关联的数据传送。在该延迟期间,处理器102可执行其他处理任务和/或可进入休眠模式以便降低功率消耗。

参照图4,示出了如何能够使用DMA窥探控制器200、DMA命令队列202和DMA状态表204来隐藏DMA数据传送时延的另一示例。具体而言,图4表示可采用图1所示处理系统100实现的数据流合并处理的框图。具体而言,可使用处理器102和局部存储器104实现多个双缓冲器400,402和404以及合并处理406。(在可选实施例中,可使用多于一个的处理器,正如后面将要讨论的)。应该理解,如图4所示元件使用硬件/软件组合实现。每个双缓冲器,例如双缓冲器400,包括第一缓冲器A(开始于地址400A)和第二缓冲器B(开始于地址400B)。

第一双缓冲器400接收第一数据流,第二双缓冲器402接收第二数据流。通过合并处理406将数据流合并,并传递到第三双缓冲器404,由此生成输出数据流。这样的合并处理可用于在图形处理中将图像数据的各个帧组合。出于描述的目的,假设通过DMA数据传送从主存储器106或从某些外部源(未示出)接收第一数据流和第二数据流。此外,假设通过DMA传送将输出数据流存储在主存储器106或存储器空间的某些其他部分中。

最初,第一和第二双缓冲器400,402均寻求通过由处理器102向DMAC发出的各自DMA命令212从第一和第二数据流接收各自的数据块。出于说明的目的,假设DMA传送的各个目的地是第一双缓冲器400的缓冲器A的起始地址400A和第二双缓冲器402的缓冲器A的起始地址402A。然后,处理器102可时常在检查DMA传送的状态的同时执行其他任务,如以上所述。

当关于DMA传送之一,例如到第一双缓冲器400的缓冲器A的起始地址400A的数据传送的状态信息222表示完成数据传送时,处理器102可对状态信息222作出反应。例如,处理器102可交换缓冲器A,B的角色,发出用于请求将另一数据块传送到缓冲器B的起始地址400B的另一DMA命令,并开始处理存储在缓冲器A中的数据(例如,执行解压缩处理)。在等待将DMA数据传送到缓冲器B的同时,处理器102可向DMA窥探控制器200发出一个或多个窥探请求,以获得其状态。

与此同时,处理器102可能正在执行类似的窥探请求、缓冲器交换、其他DMA传送请求和关于由第二双缓冲器402接收的第二数据流的数据的数据处理。由于各个数据流的内容是不同的,DMA传送时延并不固定,在双缓冲器400和402内缓冲器交换频率可发生变化。然而,值得注意的是,DMA窥探控制器200、DMA命令队列202和DMA表204的使用允许处理器102执行多个任务,以便隐藏与传送各个第一和第二数据流的块相关的DMA传送时延。

当对第一双缓冲器400的缓冲器A中的数据进行了处理,且对第二双缓冲器402的缓冲器A内的数据进行了处理时,合并处理406将这样的数据合并,并在第三双缓冲器404的缓冲器A的起始地址404A处开始对所述数据进行存储。当这样的合并数据在缓冲器A中稳定时,处理器102可例如向主存储器106发出这样数据的DMA数据传送。处理器102时常可向DMA窥探控制器200发送一个或多个窥探请求,以确定这样的DMA命令的状态。当状态信息222表明已完成DMA数据传送时,处理器102可实现第三双缓冲器404的缓冲器A和缓冲器B的交换,使得可并行实现其他数据处理(例如,数据压缩)和DMA数据传送。该处理优选地进行重复,直到合并和存储了所有数据。

参照图5,示出可如何使用DMA窥探控制器200、DMA命令队列202和DMA状态表204来隐藏DMA数据传送处延的另一示例。图5表示可利用如图1所示处理系统100实现的数据流解交织处理的框图。具体而言,可利用处理器102和局部存储器104实现多个双缓冲器408,410和412,以及解交织处理414。(在可选实施例中,可采用多于一个的处理器,正如以下将要描述的。)

第一双缓冲器408接收输入数据流,并将其中的数据传递到解交织处理414。解交织处理可将以前合并或交织的数据块(例如,图像数据的帧)分离,以便生成第一和第二输出数据流。出于描述的目的,假设通过DMA数据传送从主存储器106或从某些外部源(未示出)接收输入数据流。此外,假设通过DMA数据传送将第一和第二输出数据流传送到主存储器106或某些外部源(未示出)。

出于说明的目的,假设表示输入数据流的DMA传送的目的地可选地为第一双缓冲器408的缓冲器A的起始地址408A以及缓冲器B的地址408B。当关于其中一个DMA传送,例如,去往第一双缓冲器408的缓冲器A的起始地址408A的数据传送的状态信息表明完成数据传送时,处理器102可对状态信息222作出反应。例如,处理器102可交换缓冲器A,B的角色,发出请求将另一数据块传送到缓冲器B的起始地址408B的另一DMA命令,并开始对存储在缓冲器A中的数据进行处理(例如,执行解压缩处理)。当等待到缓冲器B的DMA数据传送时,处理器102可向DMA窥探控制器200发送一个或多个窥探请求,以获得其状态。

将解交织处理414产生的解交织数据流输入到第二和第三双缓冲器410,412中。假设解交织处理生成图像数据的各个帧,可将这样的帧写入到第二和第三双缓冲器410,412的缓冲器A和缓冲器B中。当数据出现在例如第二双缓冲器410的缓冲器A中时,处理器102可执行压缩或某些其他数据操作。在此期间,通过处理器102发出的DMA命令212,可将缓冲器B中的数据(假设已将其压缩等)传送到主存储器106。当关于自缓冲器B的DMA传送的状态信息222表明完成了数据传送时,处理器102可将缓冲器A,B的角色交换,发出用于请求从缓冲器A向主存储器106进行数据传送的另一DMA命令。同样,当等待自缓冲器A的DMA数据传送时,处理器102可向DMA窥探控制器200发送一个或多个窥探请求,以获得其状态信息。

与此同时,处理器可能正在执行类似的窥探请求、缓冲器交换、其他DMA传送请求和关于由第三双缓冲器412接收的第二数据流的数据的数据处理。由于各个数据流的内容不同,DMA传送时迟不固定,在双缓冲器408,410和412内缓冲器交换的频率可发生变化。然而,应注意的是,DMA窥探控制器200、DMA命令队列202和DMA表204的使用允许处理器102执行多个任务,以便隐藏与传送数据流数据相关的DMA传送时延。该处理优选地进行重复,直到合并和存储了所有数据。

图6表示可适用于实现上述一个或多个特征以及本发明的一个或多个其他实施例的多处理系统100A。系统100A包括通过总线108互连的多个处理器102A-D、相关局部存储器104A-D、和共享存储器106。此处,还可将共享存储器106称为主存储器或系统存储器。尽管示例性示出有四个处理器102,然而在不偏离本发明精神和范围的条件下可使用任意数量的处理器。每个处理器102可具有相似的结构或不同的结构。

局部存储器104优选地同它们各自的处理器102处在同一芯片(公共半导体衬底)上;不过,局部存储器104优选地不是传统硬件高速缓存,即不具有片上或片外硬件高速缓存电路、高速缓存寄存器、高速缓存控制器等来实现硬件高速缓存功能。

处理器102优选地提供数据访问请求,以便通过总线108将数据(其可包括程序数据)从系统存储器106拷贝到其各自局部存储器中,以进行程序执行和数据操作。优选地是利用直接存储器访问控制器(DMAC)(未示出)来利于数据访问的机制。每个处理器的DMAC优选地与以上参照本发明其他特征所描述的DMAC具有基本相同的功能。

系统存储器106优选地是通过高带宽存储器连接(未示出)与处理器102相连的动态随机访问存储器(DRAM)。尽管系统存储器106优选地是DRAM,但存储器106也可使用其他装置实现,例如,使用静态随机访问存储器(SRAM)、磁随机访问存储器(MRAM)、光存储器、全息存储器等。

每个处理器102优选地使用处理流水线实现,其中,以流水线方式对逻辑指令进行处理。尽管可将流水线划分成对指令进行处理的任意数量的级,但流水线通常包括获取一个或多个指令,将指令解码,检查指令之间的依赖性,发出指令,和执行指令。就此而言,处理器102可包括指令缓冲器、指令解码电路、依赖性检查电路、指令发出电路和执行级。

在一个或多个实施例中,处理器102和局部存储器104可设置在公共半导体衬底上。在一个或多个其他实施例中,还可将共享存储器设置在公共半导体衬底上,或可将其独立设置。

在一个或多个可选实施例中,一个或多个处理器102可作为与其他处理器102实际相连并能够通过总线108与共享存储器106相连的主处理器。主存储器可对其他处理器102的数据处理进行调度和协调。然而,主存储器与其他处理器102不同,它可与硬件高速缓存相连,高速缓存可用于对从共享存储器106和处理器102的一个或多个局部存储器104中的至少一个获得的数据进行高速缓存。主存储器可提供数据访问请求,用于将数据(其可包括程序数据)从系统存储器106通过总线108拷贝到高速缓存中,以便通过利用任何已知技术(例如,DMA技术)实现程序执行和数据操作。

下面,将描述适于实现此处所述一个或多个特征的多处理器系统的优选计算机体系结构。根据一个或多个实施例,可将多处理器系统实现为用于富媒体应用(例如,游戏系统、家用终端、PC系统、服务器系统和工作站)的独立式和/或分布式处理的单片解决方案。在某些应用,例如游戏系统和家用终端中,可能需要进行实时计算。例如,在实时、分布式游戏应用中,联网图像压缩、3D计算机图像、音频生成、网络通信、物理模拟和人工智能处理的其中一个或多个需要执行得足够快,以便为用户提供实时视觉体验。从而,在多处理器系统中的每个处理器必须在很短且预定的时间内完成任务。

为此,根据该计算机体系结构,多处理计算机系统的所有处理器都由公共计算模块(或单元)构造而成。该公共计算模块具有一致的结构,优选地是采用同一指令集体系结构。多处理计算机系统可由一个或多个客户机、服务器、PC、便携式计算机、游戏机、PDA、机顶盒、电器、数字电视和使用计算机处理器的其他设备组成。

若需要的话,多个计算机系统还可以是网络的成员。一致性模块化结构使得多处理计算机系统能够对应用和数据进行有效、高速的处理,而且如果采用网络,能够在网络上实现应用程序和数据的快速传送。该结构还简化了各种规模的网络的成员的构建,优选地提高这些成员的处理能力,优选地利于为这些成员的处理准备应用程序。

参照图7,基本处理模块是处理器元件(PE)500。PE 500包括I/O接口502、处理单元(PU)504和多个子处理单元508,即,子处理单元508A,子处理单元508B,子处理单元508C和子处理单元508D。局部(或内部)PE总线512在PU 504、子处理单元508和存储器接口511之间传送数据和应用程序。局部PE总线512可具有例如传统体系结构,或者可实现为包交换网络。如果实现为包交换网络的话,尽管需要更多硬件,但增大了有效带宽。

PE 500可使用用于实现数字逻辑的各种方法构建。然而,优选地是将PE 500构建为采用硅衬底上互补金属氧化物半导体(CMOS)的单个集成电路。用于衬底的可选材料包括砷化镓、砷化镓铝以及采用多种掺杂的其他所谓的III-B化合物。PE 500还可使用超导材料(例如,快单磁量子(RSFQ)逻辑)实现。

PE 500与共享(主)存储器514通过高带宽存储器连接516密切相关。尽管存储器514优选地是动态随机访问存储器(DRAM),但存储器514也可使用其他装置实现,例如,利用静态随机访问存储器(SRAM)、磁随机访问存储器(MRAM)、光存储器、全息存储器等。

PU 504和子处理单元508优选地均与包括直接存储器访问DMA功能的存储器流控制器(MFC)相连,该功能与存储器接口511结合使用,便于实现DRAM 514与PE 500的子处理单元508和PU504之间的数据传送。应该注意,可将DMAC和/或存储器接口511相对于子处理单元508和PU 504集成或独立设置。的确,可将DMAC功能和/或存储器接口511功能与一个或多个(优选地是多个)子处理单元508和PU 504集成在一起。还应注意,可将DRAM514相对于PE 500集成或独立设置。例如,可将DRAM 514设置在片外,如视图所示,或者,可将DRAM 514以集成方式设置在片上。

PU 504可以是,例如,能够对数据和应用程序进行独立处理的标准处理器。在操作上,PU 504优选地对子处理单元对数据和应用程序的处理进行调度和协调。子处理单元优选地为单指令、多数据(SIMD)处理器。在PU 504的控制下,子处理单元以并行和独立方式对这些数据和应用程序执行处理。PU 504优选地使用PowerPC核心实现,PowerPC核心是采用精简指令集计算(RISC)技术的微处理器体系结构。RISC使用简单指令的组合执行更复杂的指令。从而,处理器的定时可基于更简单和更快速的操作,使得微处理器对于给定时钟速度执行更多指令。

应该注意,由其中一个子处理单元508担当起调度和协调由子处理单元508对数据和应用程序进行处理的主处理单元的角色。此外,在处理器元件500内可实现多于一个PU。

根据该模块化结构,具体计算机系统所采用的PE 500的数量是基于该系统所需的处理能力。例如,服务器可采用四个PE 500,工作站可采用两个PE 500,PDA可采用一个PE 500。分配用于处理具体软件单元的PE 500子处理单元的数量是基于单元内程序和数据的复杂性和数量。

图8表示子处理单元(SPU)508的优选结构和功能。SPU 508体系结构优选地填补了通用处理器(其设计用于在众多应用程序上实现较高平均性能)与专用处理器(其设计用于在单个应用上实现较高性能)之间的空缺。SPU 508被设计成用于在游戏应用、媒体应用、宽带系统等上实现高性能,以及向实时应用的编程人员提供高度控制。SPU 508的某些功能包括图形几何流水线、表面细分、快速傅里叶变换、图像处理关键字、流处理、MPEG编码/解码、加密、解密、设备驱动器扩展、建模、游戏物理学、内容创建和音频合成与处理。

子处理单元508包括两个基本功能单元,即,SPU核心510A和存储器流控制器(MFC)510B。SPU核心510A实现程序执行、数据操作等,而MFC 510B实现与系统的SPU核心510A与DRAM514之间的数据传送有关功能。

SPU核心510A包括局部存储器550、指令单元(IU)552、寄存器554、一个或多个浮点执行级556,以及一个或多个定点执行级558。局部存储器550优选地使用单端口随机访问存储器(例如,SRAM)实现。大多数处理器通过采用高速缓存缩减了到存储器的时延,而SPU核心510A实现了相对较小的局部存储器550而不是高速缓存。的确,为了为实时应用(以及此处所述的其他应用)的编程人员提供一致且可预知的存储器访问时延,在SPU 508A内的高速缓存体系结构并不是优选的。高速缓存的高速缓存命中/命中失误特性导致出现易失性存储器访问时间从数周期到数百周期变化。这样的易失性削弱了例如在实时应用编程中想要的访问定时可预测性。在局部存储器SRAM 550中,通过将DMA传送与数据计算重叠,可实现时延隐藏。这为实时应用编程提供了高度控制。由于与DMA传送相关的时延和指令开销超过了为缓存命失误提供服务的时延开销,SRAM局部存储器方法在DMA传送尺寸充分大且足以预测时表现出优点(例如,在需要数据之前可发出DMA命令)。

运行在子处理单元508中的指定子处理单元上的程序使用局部地址访问有关局部存储器550,然而,在整个系统存储器映射内,还对局部存储器550的每个位置分配实地址(RA)。这允许特权软件将局部存储器550映射到进程的有效地址(EA),以便实现一个局部存储器550与另一局部存储器550之间的DMA传送。PU 504还可使用有效地址直接访问局部存储器550。在优选实施例中,局部存储器550包括556千字节的存储容量,寄存器552的容量为128×128位。

SPU核心504A优选地使用处理流水线实现,其中,以流水线方式处理逻辑指令。尽管可将流水线分成对指令进行处理的任意数量的级,但流水线通常包括获取一个或多个指令,将指令解码,检查指令之间的依赖性,发出指令,和执行指令。就此而言,IU 552包括指令缓冲器、指令解码电路、依赖性检查电路和指令发出电路。

指令缓冲器优选地包括与局部存储器550相连的多个寄存器,并用于临时存储它们获取的指令。指令缓冲器优选地以这样方式操作:所有指令成组,即基本同时地离开寄存器。尽管指令缓冲器可以为任意尺寸,但优选地还是不大于约2或3个寄存器的尺寸。

一般而言,解码电路将指令分解,并生成执行相应指令的功能的逻辑微操作。例如,逻辑微操作可指定运算和逻辑操作、对局部存储器550的加载和存储操作、寄存器源操作数和/或直接数据操作数。解码电路也可指示出指令使用哪些资源,例如目标寄存器地址、结构资源、功能单元和/或总线。解码电路还可提供指示需要资源的指令流水线级的信息。指令解码电路优选地能够基本同时将数量等于指令缓冲器的寄存器数量的指令解码。

依赖性检查电路包括执行测试以确定给定指令的操作数是否取决于流水线中其他指令的操作数的数字逻辑。若如此,则应直到将这样的其他操作数进行更新(例如,通过允许其他指令完成执行)才执行给定指令。优选地是,依赖性检查电路确定从解码器电路112同时分配的多个指令的依赖性。

指令发出电路可向浮点执行级556和/或定点执行级558发出指令。

优选地将寄存器554实现为相对较大的统一寄存器堆,例如,128条目寄存器堆。这允许在无需寄存器重命名以避免寄存器饿死(starvation)的情况下实现深流水线化高频实现。硬件重命名通常消耗处理系统中较大部分的区域和功率。从而,当通过软件循环展开(unrolling)或其他交织技术覆盖时延时,可实现有益的操作。

优选地是,SPU核心510A属于超标量体系结构,以便每个时钟周期可发送多于一个的指令。SPU核心510A优选地以对应于自指令缓冲器的同时指令分配的数量,例如在2和3之间(表示每个时钟周期发出2或3个指令)的程度的超标量进行操作。根据所需处理能力,可采用更多或更少的浮点执行级556和定点执行级558。在优选实施例中,浮点执行级556以每秒320亿浮点操作的速度(32GFLOPS)运作,定点执行级558以每秒320亿浮点操作的速度(32GOPS)运作。

MFC 510B优选地包括总线接口单元(BIU)564、存储器管理单元(MMU)562和直接存储器访问控制器(DMAC)560。除DMAC 560外,MFC 510B优选地与SPU核心510A和总线512相比以一半频率(半速)运行,以符合低功耗设计目标。MFC 510B可用于对从总线512进  SPU 508的数据和指令进行处理,为DMAC提供地址转换,和数据一致性的窥探操作。BIU 564提供总线512与MMU 562和DMAC 560之间的接口。从而,SPU 508(包括SPU核心510A和MFC 510B)和DMAC 560在物理上和/或逻辑上与总线512连接。

MMU 562优选地可用于将有效地址(从DMA命令获得)转换成用于存储器访问的实地址。例如,MMU 562可将有效地址的高位转换成实地址位。不过,低地址优选地是不可转换的,并在逻辑和物理上视为用于形成实地址以及用于请求对存储器进行访问。在一个或多个实施例中,MMU 562可基于64位存储器管理模型实现,并可提供具有4K-,64K-,1M-和16M-字节页尺寸和256MB段尺寸的264字节有效地址空间。优选地是,MMU 562可用于支持多达265字节虚拟存储器,和用于DMA命令的242字节(4千吉字节)物理存储器。MMU 562的硬件可包括8条目全关联SLB、256条目4路组关联TLB和用于TLB的4×4替换管理表(RMT)-用于硬件TLB命中失误处理。

DMAC 560优选地可用于对来自SPU核心510A以及诸如PU504和/或其他SPU之类的一个或多个其他设备的DMA命令进行管理。可存在三种类型的DMA命令:Put命令,用于将数据从局部存储器550移到共享存储器514;Get命令,用于将数据从共享存储器514移动到局部存储器550;以及存储控制命令,包括SLI命令和同步命令。同步命令可包括原子命令、发送信号命令和专用阻挡命令。根据DMA命令,MMU 562将有效地址转换成实地址,并将实地址转发到BIU 564。

SPU核心510A优选地使用通道接口和数据接口与DMAC 560内的接口通信(发送DMA命令、状态等)。SPU核心510通过通道接口将DMA命令分配到DMAC 560中的DMA队列。一DMA命令处在DMA队列中,它就通过DMAC 560内的发出和完成逻辑进行处理。当完成对于DMA命令的所有总线事务时,通过通道接口将完成信号发送回SPU核心510A。

图9表示PU 504的优选结构和功能。PU 504包括两个基本功能单元,PU核心504A和存储器流控制器(MFC)504B。PU核心504A实现程序执行、数据操作、多处理器管理功能等,而MFC504B执行关于系统100的PU核心504A与存储器空间之间数据传送的功能。

PU核心504A可包括一级高速缓存570、指令单元572、寄存器574、一个或多个浮点执行级576和一个或多个定点执行级578。一级高速缓存为从共享存储器106、处理器102或存储器空间的其他部分通过MFC 504B接收的数据提供数据缓存功能。由于优选地将PU核心504A实现为超级流水线,优选地将指令单元572实现为具有多个级(包括获取、解码、依赖性检查、发出等)的指令流水线。PU核心504A优选地也属于超标量配置,从而,每个时钟周期从指令单元572发出多于一个的指令。为实现高处理能力,浮点执行级576和定点执行级578在流水线配置中包括多个级。根据所需处理能力,可采用数量更多或更少的浮点执行级576和定点执行级578。

MFC 504B包括总线接口(BIU)580、二级高速缓存、非高速缓存单元(NCU)584、核心接口单元(CIU)586和存储器管理单元(MMU)588。多数MFC 504B与PU核心504A和总线108相比以半频(半速)运行,以符合低功耗设计目标。

BIU 580设置有在总线108与二级高速缓存582和NCU 584逻辑块之间的接口。为此,BIU 580可起到在总线上的主和从设备的作用,以实现完全一致的存储器操作。作为主设备,它可将载入/存储请求发送到总线108,以便为二级高速缓存582和NCU 584提供服务。BIU 580还可实现对于命令的流控机制,以限制可向总线108发送的命令总数。可将总线108上的数据操作设计成采用八拍(beat),因此,优选地将BIU 580设计成约128字节高速缓存线,一致性和同步粒度为128KB。

优选地将二级高速缓存582(支持硬件逻辑)设计成用于缓存512KB数据。例如,二级高速缓存582可处理高速缓存载入/存储、数据预取、指令获取、指令预取、高速缓存操作和阻挡操作。二级高速缓存582优选地是8路组关联系统。二级高速缓存582可包括与六个(6)逐出队列(castout queue)(例如,六个RC机)相匹配的六个重载入队列,和八个(64字节宽)存储队列。二级高速缓存582可用于提供在一级高速缓存570中某些或所有数据的备份拷贝。有益的是,当将处理节点进行热交换时,这在恢复状态中是有用的。该配置还允许一级高速缓存570以更少的端口更快速地进行操作,并允许更快速的高速缓存到高速缓存传送(由于请求可在二级高速缓存582处停止)。该配置还提供了用于将高速缓存一致性管理传递到二级高速缓存582的机制。

NCU 584与CIU 586、二级高速缓存582和BIU 580相接口,且通常充当用于PU核心504A与存储器系统之间非高速缓存操作的排队/缓冲电路。NCU 584优选地处理二级高速缓存582未进行处理的与PU核心504A的所有通信,例如,高速缓存固有的载入/存储、阻挡操作、和高速缓存一致性操作。NCU 584优选地以半速运行,以符合上述功耗目标。

将CIU 586设置在MFC 504B和PU核心504A的边界上,为来自执行级576,578、指令单元572和MMU单元588以及去往二级高速缓存582和NCU 584的请求起到路由、仲裁和流控点的作用。PU核心504A和MMU 588优选地以全速运行,而二级高速缓存582和NCU 584以2∶1速度比运行。从而,在CIU 586中出现频率边界,且其中一项功能是当它转发请求和在两个频域之间重载入数据时正确地对频率交叉进行处理。

CIU 586包括三个功能块:载入单元、存储单元和重载入单元。此外,数据预取功能通过CIU 586执行,且优选地作为载入单元的功能部分。CIU 586优选地用于:(i)从PU核心504A和MMU 588接收载入和存储请求;(ii)将请求从全速时钟频率转换成半速(2∶1时钟频率转换);(iii)将高速缓存请求路由到二级高速缓存582,并将非高速缓存请求路由到NCU 584;(iv)在到二级高速缓存582和NCU 584的请求之间进行合理仲裁;(v)对二级高速缓存582和NCU 584的调度提供流量控制,以便在目标窗口中接收请求,并避免溢出;(vi)接收载入返回数据,并将其路由到执行级576,578、指令单元572,或MMU 588;(vii)将窥探请求传递到执行级576,578、指令单元572,或MMU 588;以及(viii)将载入返回数据和窥探流量从半速转换到全速。

MMU 588优选地为PU核心540A提供地址转换,例如,通过二级地址转换设备实现。优选地在PU核心504A中通过独立的指令和数据ERAT(有效到实地址转换)阵列提供一级转换,所述阵列可比MMU 588小很多且更快。

在优选实施例中,PU 504运作在4-6GHz,10F04,且具有64位实现方式。寄存器优选地为64位长(但一个或多个专用寄存器也可更小),有效地址为64位长。指令单元570、寄存器572以及执行级574和576优选地使用PowerPC技术实现,以实现(RISC)计算技术。

有关该计算机系统模块化结构的其他细节可参看美国专利No.6,526,491,从而,该文献全部披露内容在此引作参考。

根据本发明的至少一个进一步的方面,上述方法和装置可使用合适的硬件(如参照附图所示)实现。这样的硬件可使用任何已知的技术实现,例如,标准数字电路,可用于执行软件和/或固件程序的任何已知处理器,一个或多个可编程数字设备或系统,例如,可编程只读存储器(PRoM)、可编程阵列逻辑设备(PAL)等。此外,尽管将附图中所示装置示为划分成某些功能块,然而这样的块可通过独立电路实现,和/或将其组合到一个或多个功能单元实现。此外,通过可存储在合适存储介质或媒体(如,软磁盘、存储器芯片等)上以便进行传送和/或发布的软件和/或固件程序,可实现本发明的各个方面。

尽管参照具体实施例描述了此处的本发明,然而应该理解,这些实施例仅仅是出于说明本发明原理和应用的目的。因此,应该理解,在不偏离由所附权利要求所定义的本发明精神和范围的条件下,可对所示实施例进行多种修改,并可设计出其他方案。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号