数据处理系统的制作方法

文档序号:6433223阅读:172来源:国知局
专利名称:数据处理系统的制作方法
技术领域
本发明涉及具有多处理器的数据处理系统。
背景技术
用于高性能、依赖于数据的媒体处理例如用于高清晰度MPEG解码的异类多处理器结构是已知的。媒体处理应用可以指定为一组并行执行的任务,这些任务只通过单向数据流交换信息。G..Kahn已经在1974年引入这种应用的一种正式模型,“The Semantics of a SimpleLanguage for Parallel Programming”,(并行编程用的简单语言的语义学)IFIP第74次会议会议录,八月5-10日,斯德哥尔摩,瑞典,North-Holland publ.Co.1974,第471-475页,随后在1977年又由Kahn和MacQueen在下面的文章中进行可操作说明,“Co-routines and Networks of parallel Programming”(并行编程的协同例程和网络)Information Processing 77,BGilchhirst(ED.),North-Holland publ.Co.1974,第993-998页。这一正式模型现在一般称为Kahn处理网络。
公知一个应用是一组可并行执行的任务。信息只可以通过单向数据流在这些任务间交换。这些任务只应该通过关于预定数据流的读写过程确定性地进行通信。数据流在FIFO行为的基础上进行缓冲存储。由于这一缓冲存储,两个任务通过数据流的通信不必与单个的读写处理同步。
在流处理中,数据流的连续操作是在不同的处理器上实施的。例如,第一流可能包含图像的像素值,它们由第一处理器处理以产生8×8像素块的DCT(离散余弦变换)系数块的流。第二处理器可以处理该DCT系数块,以产生为每一DCT系数块的选定的和经压缩的系数块的流。
图1表示现有技术中公知的一个应用对处理器映射的示意图。为实现数据流处理,提供了一些处理器,每一处理器能够重复执行一种特定的操作,每次使用从数据对象流的下一数据对象来的数据,和/或产生这种流中的下一数据对象。所述流经由一个处理器传送到另一个,使得由第一处理器产生的流可以由第二处理器处理,如此等等。从第一处理器传送数据到第二处理器的机理是把由第一处理器产生的数据块写入存储器。
网络中的数据流被缓冲存储。每一缓冲器作为FIFO而实现,确切地说是一个写入者,一个或多个读取者。由于这一缓冲存储,写入者和读取者不需要在通道上对单个的读和写动作相互同步。从没有足够可用数据的通道的读出将引起读任务停止。协处理器可以是专用硬件功能单元,它只可以进行很有限的编程。所有协处理器并行运行,执行它们自己的控制线程。它们一起执行Kahn型的应用,其中每一任务被映射到一个单一的协处理器。这些协处理器允许多任务,亦即多个Kahn任务可以映射到单一处理器。给在这种系统中的处理器备有超高速缓冲存储器以减少在占用公共存储器的处理器之间的冲突。然而,必须维持该超高速缓冲存储器的内容与由处理器共享的存储器的内容的一致性。
用于维持超高速缓冲存储器一致性的已知方法是总线探听和超高速缓冲存储器通写(write through)。
根据第一方法,每一超高速缓冲存储器有一个控制器,它观察对存储器的工作状况,和相应更新它的状态。
根据超高速缓冲存储器通写方法,存储器内容的每一修改要被广播到每一超高速缓冲存储器。
这两种方法都需要大量的管理开销。

发明内容
因此,本发明的一个目的是改进Kahn型数据处理系统的操作。根据本发明的数据处理系统在权利要求1中要求权利。在根据本发明的数据处理系统中超高速缓冲存储器一致性由同步装置维持。为维持超高速缓冲存储器一致性,同步装置响应由处理器发布的同步命令执行超高速缓冲存储器操作。它的优点是超高速缓冲存储器一致性可以简单地作为同步机构的副作用而得到维持。
同步装置可以以不同方式实现。它们可以作为一个中央同步处理器实现,例如以其上运行程序的微处理器的形式,或者以专用硬件的形式来实现。另外,同步处理器可以作为一组同步单元实现,各同步单元被分配给每一处理器,且同步单元被安排成通过令牌环或总线彼此通信。
根据权利要求2的实施例,同步装置响应读处理器的查询而起动一个无效化操作。如果读处理器发布一个查询,亦即请求访问一部分存储器,在该部分存储器中它打算读由写处理器产生的新的数据对象,则有可能在超高速缓冲存储器中的相应部分尚未与存储器一致。使超高速缓冲存储器中的相应部分无效化是一种悲观的但是安全的操作。
根据权利要求3的实施例,同步装置响应写处理器的确认(commit)起动刷新操作。如果写处理器发布一个确认,则它释放一些数据对象,供读处理器进一步处理。通过在这一确认时执行刷新操作,同步装置实现了这一情况,当读处理器打算进一步处理数据对象时,存储器与写处理器的超高速缓冲存储器一致。
根据权利要求4的实施例,同步装置响应读处理器的一个查询而起动一个预取操作。读处理器的查询表明,它打算处理存储器中的数据对象。通过该预取操作,读处理器的超高速缓冲存储器在读处理器真正开始从其中读数据对象的时刻已经一致。
根据权利要求5的再一个另外的实施例,同步装置响应写处理器的确认起动读处理器的超高速缓冲存储器的一个预取操作。这一实施例具有这样的优点,即只要新数据对象变成可用时,则它立即提供该读处理器的超高速缓冲存储器的一致性。


参考附图详细说明本发明的这些和其它方面,附图中图1表示根据现有技术把应用映射到处理器的示意图;图2是基于处理系统的流结构的原理框图;图3是在图2的系统中的同步操作和I/O操作的示意图;图4是共享存储器的示意图;图5是使用图4的存储器更新根据图2的每一管理单元中的局部空间值的机理;图6是具有单一写入者和多个读取者的FIFO缓冲器的示意图;图7是用于一个三站流的有穷存储器缓冲器的实现;图8更详细地表示形成处理系统一部分的处理器;图9A-9C是读取和管理超高速缓冲存储器中的数据的有效性的示意图;图10是根据本发明的处理系统的第二实施例。
具体实施例方式
图2表示根据本发明的一个处理系统。该系统包括存储器10、若干处理器11a、11b、11c和一个仲裁器16。处理器11a-c的每一个包括计算单元12a、12b、12c和管理单元18a、18b、18c。处理器11a、11b、11c是作为举例方式表示的,在实际中,可以使用任何数目的处理器。处理器11a-c通过地址总线14和数据总线13连接到存储器10。处理器11a-c连接到仲裁器16,它们彼此通过同步通道连接,所述同步通道包括管理单元18a-c,后者通过通信网络19诸如令牌环彼此连接。
优选处理器11a-c是专用处理器;每一个专门用于高效执行一个有限范围的流处理任务。亦即安排每一处理器重复对通过数据总线13接收的连续数据对象施加同样的处理操作。处理器11a-c每一个可以执行一个不同的任务或功能,例如可变长度解码,运行长度解码,运动补偿,图像缩放或者执行DCT变换。另外,也可以包括可编程处理器,诸如TriMedia、或MIPS处理器。
在操作中,每一处理器11a-c对一个或者多个数据流执行操作。所述操作例如可以包括接收一个流和产生另一个流,或接收一个流而不产生新流,或产生一个流而不接收流,或修改一个接收的流。处理器11a-c能够处理由另外的一个处理器11a-c产生的数据流,或者甚至它们自身产生的流。一个流包括连续的数据对象,这些数据对象通过存储器10从或向处理器11a-c传输。
为读或写来自数据对象的数据,处理器11a-c访问存储器10中分配给该流的那部分。
图3表示读和写处理以及它们相关的同步操作的示意图。从协处理器的观点看,一个数据流像一个具有当前访问点的无穷的数据带。从协处理器(计算单元)发布的获取空间调用请求对由图3中的小箭头指示的当前访问点前面的一定的数据空间的访问许可。如果这一许可被授予,则该协处理器可以在所请求的空间亦即图3b的带框的窗口内使用由n_bytes参量指示的变长数据和由offset参量指示的随机访问位置执行读和写动作。
如果许可未被授予,则该调用返回“假”。在一个或者多个获取空间调用-和可选地几个读/写动作-后,协处理器可以决定该处理或该数据空间的某些部分已经结束,并发布一个释放空间调用。这一调用把访问点前移一定数目的字节,亦即图3d的n_bytes2,其中,其大小由先前授予的空间所限制。
图4表示存储器10的一个逻辑存储器空间20,它包含一系列具有逻辑连续地址的存储器位置。图5表示两个处理器11a和11b如何通过存储器10交换数据对象。存储器空间20包含分配给不同流的子空间21、22、23。作为一个例子,图4中详细表示出由下边界地址LB和上边界地址HB限定的子空间22。在该子空间22中,在地址A2和A1之间的存储器位置,也用段A2-A1指明,包含有效数据,可为读处理器11b所用。在地址A1和该子空间的高边界HB之间的存储器位置,以及在该子空间的低边界LB和地址A2之间的存储器位置,也用段A1-A2指明,可用于写处理器11a写新数据。作为一个例子,假定处理器11b访问在分配给由处理器11a产生的流的存储器位置中存储的数据对象。
在上述例子中,流的数据被写入存储器位置的一个循环序列中,每次从逻辑最低地址LB开始到达逻辑最高地址HB。这通过图5中的存储器子空间的循环表示来说明,其中下边界LB和上边界HB彼此相邻。
管理单元18b保证处理器11b在被处理的流的有效数据写入这些存储器位置之前不访问存储器位置22。相似地,这里使用管理单元18a来保证处理器11a不覆盖存储器10中的有用数据。在图2所示的实施例中,管理单元18a、b形成环18a、b、c的一部分,其中,同步信号从一个处理器11a-c传送给下一个,或当这些信号在任何后继的处理器11a-c不需要时封锁和覆盖它们。管理单元18a、18b、18c一起形成一个同步通道。管理单元18a维护用于从处理器11a向处理器11b传输数据对象流的存储器空间的信息。在所示实施例中,管理单元18a存储值A1,它是可用于由处理器11a写的段A1-A2的地址范围的开始点A1的代表。它还存储值S1,它是该段的大小的表示。然而,所述地址范围也可以用它们的边界或者用上边界A2和值S1指示。相似地,管理单元18b存储值A2,它是包含处理器11b的有效数据的段A2-A1的开始点A2的表示。它还存储值S2,它是该段的大小的表示。当处理器11a开始产生用于处理器11b的数据时,段A2-A1的大小S2应该初始化为零,因为还没有为后面的处理器11b可用的有效数据。在处理器11a开始向存储器子空间22写数据之前,它通过第一指令C1(getspace)请求该空间内的一段。这一指令的一个参数是它要求的大小n。如果有多个存储器子空间可用的话,则它还包括为识别该子空间的参数。子空间可以由识别通过该子空间传输的流而识别。只要要求的大小n小于或等于由管理单元18a为该段存储的大小S1,管理单元18a就授权这一请求。这时处理器11a可以用它所请求访问的存储器空间的段A1-A2的大小n向A1-A2’这部分写入数据对象。
如果所需要的数目n超过指示的数目S1,则产生处理器11a挂起所指示的流的处理。产生处理器11a然后可以进行为另一个它正在产生的流的处理,或者产生处理器11a可以完全暂停处理。如果所需要的数目超过指示的数目,则产生处理器11a将执行指令,该指令在晚些时间再次指示所需要的具有新数据的存储器位置的数目,直到产生处理器11a检测到下列事件,即所需要的数目没有超过由接收处理器11a指示的位置。在检测到这一事件后,产生处理器11a继续处理。
为了要同步,在存储器10中的数据流内容变为有效后,产生数据流的产生处理器11a-c发送其数据流内容变为有效的存储器10中的位置数目的指示。在本例中,如果处理器11a已经写了一些数据对象,占据了空间m,则它发送第二指令C2(putspace),指明所述数据对象可由第二处理器11b进一步处理所用。该指令的参数m表明在存储器子空间22内的要释放的该段的大小。可以包括另外一个参数来表明该存储器子空间。在接收到这一指令时,管理单元18a从可用大小S中减去m,同时增加地址A1A1=A1m,式中,是按模HB-LB求和。
管理单元18a另外给处理器11b的管理单元18b发送一个消息M。在接收到这一消息后,管理单元18b给A2-A1的大小S2增加m。当接收处理器,这里是11b,达到需要新数据的流来进行处理的阶段时,它发送一个指令C1(k),指示需要具有新数据的存储器位置数目k。在该指令后,如果来自管理单元18b的回答表明这一需要的数目没有超过由产生处理器11a所指示的位置的话,则接收处理器11b的计算单元12b继续处理。
如果所需要的数目k超过指示的数目S2,则接收处理器11b挂起所指示的流的处理。接收处理器11b然后可以进行为另一个它正在处理的流的处理,或者接收处理器可以完全暂停处理。如果所需要的数目k超过指示的数目S2,则接收处理器11b将执行指令,该指令在晚些时间再次指示所需要的具有新数据的存储器位置的数目,直到在接收处理器11b中记录到下列事件,即所需要的数目k没有超过由产生处理器11a指示的位置A1。在记录这一事件后,接收处理器11b恢复该流的处理。
在上述例子中,一个流的数据写入一个循环的存储器位置系列中,每次到达逻辑最高地址HB时就从逻辑最低地址LB开始。这会引起产生处理器11a赶上接收处理器而覆盖接收处理器仍然需要的那些数据的可能。当希望防止产生处理器11a-c覆盖这种数据时,每次在接收处理器11a-c停止处理来自存储器中的存储器位置的内容后,接收处理器11a-c就发送存储器中不再需要的存储器位置数目的指示。这可以借助由产生处理器11a使用的同一指令C2(putdata)实现。这一指令包括不再需要的存储器位置的数目m’。另外,它可以包括流或者存储器空间的标识,如果处理多于一个流的话。在接收到这一指令时,管理单元18b从大小S2中减去m’,并按存储器子空间的大小为模给地址A2增加m’。管理单元18b还给产生处理器11a的管理单元18a发送一个消息M’。在接收到这一消息时,产生处理器11a的管理单元18a增加大小S1。
这意味着,一个流中的数据可以被覆盖直到当前的起始位置24a-c,如在图4中对若干不同的流所示的那样。这一指示被记录在产生处理器11a-c中。当产生处理器11a-c达到它的这一处理阶段时,即它需要把来自产生的流中的数据写到存储器中的一些新位置时,该产生处理器11a-c执行一个指令,表明为新数据的需要而要求的存储器位置的数目。在该指令后,如果由产生处理器11a-c记录的指示表示这一需要的数目没有超过由接收处理器11a-c指示的位置的话,则产生处理器11a-c继续处理。
优选地,具有有效内容的位置数目和可以被覆盖的位置数目要按标准位置数目来表明,而不是按在该流中的数据对象的数目来表明。它的效果是,产生和接收数据流的处理器不必指明具有同样块大小的位置的有效性和可重用性。其优点是,可以设计每一个产生和接收处理器11a-c而无需知道其它处理器11a-c的块大小。以小的块大小工作的处理器11a-c不需要等待以大的块大小工作的处理器。
存储器位置的指示可以以几种方式进行。一种方式是指示有效的或者可以被覆盖的另外的存储器位置的数目。另一种解决方案是传输最后的有效或者可覆盖的位置的地址。
优选地至少一个处理器11a-c能够交替操作不同的流。对于每一接收到的流处理器11a-c局部地保持有关存储器位置的信息,一直到该位置数据是有效的,和对每一产生的流它保持有关在存储器中可以达到的能写入新数据的位置的信息。
管理单元18a、b、c的实现和操作不需在读和写端口之间加以区别,虽然特别的实例也许对这些有区别。由管理单元18a、b、c实现的操作有效地隐藏了实现的诸多方面,诸如FIFO缓冲器22的大小、它在存储器中的位置20,关于为关联存储器的循环FIFO的地址的任何折返(wrap-around)机理,超高速缓冲存储策略,超高速缓冲存储的一致性,全局I/O定位限制,数据总线宽度,存储器定位限制,通信网络结构和存储器组织。
优选地管理单元18a-c对未格式化的字节序列进行操作。在由写入者11a和读取者11b使用的通信数据流的同步包的大小之间不需要任何相关。数据内容的语义解释留给协处理器,亦即计算单元12a、12b。任务不知道应用图形关联结构(incidence structure),像它正与哪一些其它任务在通信,这些任务映射在哪些协处理器上,和哪一些其它的任务映射在同一个协处理器上。
在管理单元18a-c的高性能实现中,可以通过在管理单元18a-c包含的读/写单元和同步单元并行发布读调用、写调用、获取空间调用、释放空间调用。作用于管理单元18a-c的不同端口的调用没有互相的排序(ordering)的限制,而作用于管理单元18a-c的相同端口上的调用则必须根据调用程序任务或协处理器排序。对于这种情况,当前一调用返回时,协处理器可以发布下一调用,在软件实现中是通过功能调用的返回,而在硬件实现中是通过提供一个应答信号。
在读调用中的大小参量即n_bytes的零值可以保留以便为执行从存储器预取数据到由port_ID和offset参量指示的位置处的管理单元的超高速缓冲存储器。这种操作可以用于由管理单元执行的自动预取。相似地,可以预留写调用中的零值用于超高速缓冲存储器的刷新请求,虽然自动的超高速缓冲存储器刷新是管理单元的责任。
可选地,所有5种操作都接受另外一个最后的task_ID参量。这通常是一个从先前的获取任务(gettask)调用作为结果值得到的小的正数。使用获取任务调用,协处理器(计算单元)可以请求它的管理单元分配一个新的任务,例如,如果由于可用的数据对象不够计算单元不能进行当前任务。在出现这一获取任务调用时,管理单元返回新任务的标识。在操作读、写、释放空间和获取空间中这一参量的零值是为那些不是任务特定的但是与协处理器控制相关的调用预留的。
在优选实施例中,数据流的通信的设置(set-up)是连接到有穷大小的FIFO缓冲器上的一个写入者和一个读取者的流。这种流需要具有有穷和固定大小的FIFO缓冲器。它在存储器中预先分配,并且在其线性地址范围内应用一个循环寻址机理以得到适当的FIFO行为。
然而,在基于图2和图6的另外的实施例中,由一个任务产生的数据流要由具有不同输入端口的两个或者多个不同的消费者消费。这种情形可以用术语分叉(forking)来描述。然而,我们希望既为多任务硬件协处理器也为在CPU上运行的软件任务重新使用该任务实现。这是通过具有与它们的基本功能的固定数目的端口相对应的任务而实现的。由应用配置引发的任何分叉的需要都要由管理单元解决。
显然,通过只维持两个分开的正常的流缓冲器,通过双倍所有写和释放空间操作和通过对双倍的获取空间检查的结果值执行与操作流分叉可以由管理单元18a-c实现。优选地,不要这样来执行,因为其代价将包括双倍的写带宽和或许更多的缓冲器空间。相反,优选用两个或者更多读取者和一个写入者共享同一FIFO缓冲器来实现。
图6表示具有单一写入者和多个读取者的FIFO缓冲器的示意图。同步机构必须保证在A和C之间按配对方式的排序之后在A和B之间有正常的按配对方式的排序,而B和C没有相互的限制,例如假定它们是纯粹的读取者。这在与执行写操作的协处理器相关联的管理单元中是通过分别跟踪每一读取者(A到B和A到C)可用的空间而实现的。当写入者执行一个局部获取空间调用时,它的n_bytes参量与这些空间值的每一个相比较。这是通过使用在所述流表中分叉的额外行而实现的,它由一个额外的字段或列连接以指示改变到下一行。
这对于大多数不使用分叉的情况只提供很小的开销,而同时又不限定只有两路分叉。优选地分叉仅由写入者实现。读取者不需要知道这种情况。
在基于图2和图7的另外一个实施例中,数据流作为根据带模型的一个三站流实现。每一站对流过的数据流执行某些更新。三站流的应用的一个例子是一个写入者、一个中间的监督者和最后一个读取者。在这种例子中,第二任务优选地观察通过的数据,并且可能检查某些数据,而大多数情况是允许数据通过而不进行修改。较不经常的是它可以决定改变流中的少数项。这可以通过处理器在缓冲器中就地更新而有效实现,以避免把整个流内容从一个缓冲器复制到另一个。在实际中,这在下述情形下可以是有用的当硬件协处理器在通信,而主CPU11干预要修改该流以改正硬件缺陷,修改稍微不同的流格式,或者只是为了调试。这一配置可以由所有三个处理器实现它们共享存储器中的单一流缓冲器,以减少存储器流量和处理器工作负载。任务B不会实际去读或写整个数据流。
图7表示为一个三站流的有穷存储器缓冲器的实现。这一三路缓冲器的适当的语义包括维持A、B和C彼此之间一个严格的排序和保证窗口不重叠。以这种方式,该三路缓冲器是从图4的所示的两路缓冲器的扩展。这种多路循环FIFO由上述管理单元的操作和由在优选实施例中讨论的带释放空间消息的分布式实现方式直接支持。对在单一FIFO中的站不局限于3个。在一个站既消费又产生有用数据的就地处理中也可以只用两个站。在这种情况下两个任务都执行就地处理来彼此交换数据,在缓冲器中不留空的空间。
在基于图2的另外的实施例中说明了对缓冲器的单一访问。这种单一访问缓冲器只包括单一端口。在这一例子中在任务或者处理器之间不执行数据交换。代之为,它只是局部使用的所述管理单元的一个标准通信操作的应用程序。管理单元的建立包括标准缓冲器存储器,有一个与其连接的单一访问点。这时任务使用该缓冲器作为局部的中间结果暂存器或超高速缓冲存储器。从结构的观点看来,这能具有优点,诸如为几个目的和任务组合使用较大的存储器,和例如使用软件可配置的存储器大小。此外,作为中间结果暂存器存储器以节省这一建立的任务特定的算法使用,还可以很好地应用于在多任务协处理器中存储和检索任务状态。在这种情况下为状态交换执行读/写操作不是任务功能代码自身的一部分,而是处理器控制代码的一部分。由于缓冲器不用于与其它任务通信,因此通常不需要对该缓冲器执行释放空间和获取空间操作。
在基于图2和图8的另一个实施例中,根据优选实施例的管理单元18a-c另外包括一个数据超高速缓冲存储器,用于在协处理器12和存储器20之间的数据传输亦即读操作和写操作。在管理单元18a-c中的数据超高速缓冲存储器的实现提供了数据总线宽度的透明变换,对全局互联亦即数据总线13的定位限制的解决,和减少对全局互联的I/O操作的数目。
优选地管理单元18a-c包括单独的读写接口,每一个具有一个超高速缓冲存储器,然而这些超高速缓冲存储器从应用程序功能的观点是看不见的。这里,使用释放空间和获取空间操作机理用来明确地控制超高速缓冲存储器一致性。超高速缓冲存储器在将通信网络(数据总线)13的全局互联与协处理器读和写端口的解耦中起重要作用。这些超高速缓冲存储器对于有关速度、能力和区域的系统性能有主要的影响。
在授权一个任务端口去访问流数据的窗口被保证为私有的。其结果是在这一区域上的读和写操作是安全的,并且在第一侧不需要中间的处理器间通信。通过局部获取空间请求来从循环FIFO的一个前任获得新的存储器空间来扩展该访问窗口。如果超高速缓冲存储器某些部分被标记以对应这种扩展,而且任务有兴趣读取该扩展中的数据,则超高速缓冲存储器中这样的部分需要被无效化。然后对这一位置所发生的读操作会发生缓存失中,并且把新的有效数据加载到该超高速缓冲存储器。精心制作的管理单元的实现可以使用获取空间来发布预取请求以减少超高速缓冲存储器失中的代价。通过局部释放空间请求以便给循环FIFO的后继者留下新的存储器空间来收缩该访问窗口。如果这种收缩的某些部分在超高速缓冲存储器中发生,并且该部分已经被写,则超高速缓冲存储器的该部分需要被刷新,以使得局部数据可为其它处理器所使用。给其它协处理器发送释放空间消息必须推迟,直到超高速缓冲存储器的刷新完成和存储器操作的安全排序得到保证。
与同属超高速缓冲存储器一致性机构诸如总线探听(snooping)相比,为明确的超高速缓冲存储器一致性控制只使用局部获取空间和释放空间在大系统结构中相对容易实现。另外它不提供通信开销,例如像在超高速缓冲存储器通体写结构中那样。
获取空间和释放空间操作被定义为在字节粒度上操作。超高速缓冲存储器的主要责任是为协处理器隐藏全局互联数据传输的大小和数据传输定位的限制。优选地,数据传输大小在同前的定位上设定为16字节,但小到2字节的同步的数据量可以有效地使用。因此,同一存储器字或者传输单元可以同时在不同协处理器的超高速缓冲存储器中存储,而无效信息则是在每一超高速缓冲存储器中在字节的粒度上处理的。
图8表示处理器12和管理单元18的组合,用于图2所示的处理系统。更详细地示出的管理单元18包括控制器181、含有流信息的第一表(流表)182和含有任务信息的第二表(任务表)183。管理单元18还包括一个用于处理器12的超高速缓冲存储器184。在同步接口18中的超高速缓冲存储器184的存在允许简单地设计超高速缓冲存储器和简化超高速缓冲存储器控制。在一个或者多个超高速缓冲存储器之外,在处理器12中也可以存在诸如指令超高速缓冲存储器。
控制器181通过指令总线Iin连接到相应处理器,亦即12a,用于接收类型C1、C2的指令。反馈线FB用作给所述处理器反馈,例如对缓冲器空间请求的授权。控制器有一条消息输入线Min以接收来自环中一个前行的管理单元的消息。它还有一条消息输出线Mout以给后继的管理单元传送消息。管理单元可以给它的后继者传送的消息的一个例子是一部分缓冲器存储器被释放。控制器181具有地址总线STA和TTA,分别选择流表182和任务表183的地址。它另外还有数据总线STD和TTD,分别从这些表读/写数据。
管理单元18传输和从其它处理器(图3中未示出)接收同步信息和至少存储接收到的信息。管理单元18另外包括一个超高速缓冲存储器184,用于在处理器12局部存储来自数据流的数据的复本。超高速缓冲存储器184通过局部地址总线185和局部数据总线186连接到处理器12。原理上,处理器12可以用图1的处理系统的存储器10的位置地址去寻址超高速缓冲存储器184。如果超高速缓冲存储器184包含被寻址的数据的内容的一个有效复本,则处理器12访问包含该复本的超高速缓冲存储器184中的位置,而不访问存储器10(图1)。处理器12优选是设计非常有效地执行一类操作例如MPEG解码的专门处理器内核。在该系统中的不同处理器中的处理器内核可以具有不同的专门作用。同步接口18及其超高速缓冲存储器184对于所有不同的处理器可以是相同的,只有超高速缓冲存储器的大小可根据处理器12的不同需要而修改。
在根据本发明的数据处理系统中,同步装置响应同步命令而起动超高速缓冲存储器操作。以这种方式,可以使用最少数量的额外的超高速缓冲存储器控制措施来维持超高速缓冲存储器一致性。本发明有几种可能的实施例。
在第一实施例中,至少一个处理器是第二处理器(读处理器),它发布包括请求由第一处理器(写处理器)产生的数据对象的空间的同步命令(查询),超高速缓冲存储器操作是无效操作。
如图9原理所示,读处理器发布一个请求命令“GetSpace(获取空间)”。同步装置18,这里是形成处理器11一部分的管理单元18,现在返回一个反馈信号FB,表明所请求的空间是否在由写处理器确认的空间108之内。此外,在本实施例中,管理单元将使与所请求的空间重叠的超高速缓冲存储器184的存储器传输单元变为无效。其结果,控制器181将立即从存储器中预取有效数据,如果它试图从超高速缓冲存储器读数据并且检测到这一数据无效的话。
于是可以发生三种不同的情形,如图10所示。在该图中每一种情形都假定读请求发生在空的超高速缓冲存储器184中,导致超高速缓冲存储器失中。在该图的左半部分原理示出处理器11的计算单元12和超高速缓冲存储器184,右半部分原理示出当一个读请求R发生时超高速缓冲存储器184所涉及的部分。另外还示出为超高速缓冲存储器取数据的存储器10的部分。
图10a表示读请求R,它导致取出超高速缓冲存储器184中的存储器传输单元MTU,亦即一个字,它整个被包含在授权的窗口W内。显然,这整个字MTU在存储器中是有效的,而且它一旦被加载到超高速缓冲存储器中就可以被宣布为有效。
在图10b中读请求R有一个结果,即一个字MTU从存储器10被取到超高速缓冲存储器184中,所取的字部分延伸到处理器获得的空间W之外,不过仍留在管理单元18中作为可以利用而被局部管理的空间W2内。如果只使用获取空间参量的话,则该字MTU将部分被宣布为无效,而一旦获取空间窗口W被扩展则它将需要被重新读。然而,如果可用空间W2的实际值被检验过的话,则整个字可以标记为有效。
在图10c中读请求R具有这样的效果,使从存储器10中取到超高速缓冲存储器184中的字MTU部分延伸到不知道是要被保存的、并且仍有可能被某些其它处理器写的空间S内。现在当字MTU被加载到超高速缓冲存储器184中时,必须把字MTU中的相应区域S’标记为无效。如果后来该字的这一部分S’被访问,则需要重新读字MTU。
此外,一个单一读请求(参见图10C中的R’)可以覆盖多于一个存储器字,或者因为它横跨两个连续字的边界。如果处理器12的读接口比存储器字宽的话,这也可以发生。图10A-C表示比请求的缓冲器空间W相对较大的存储器字。在实际中,所请求的窗口W常常大很多,然而在极端的情况下,整个循环通信缓冲器也可以和单一存储器字一样小。
在前一实施例中,在读操作试图发生在超高速缓冲存储器184中的时刻,数据从存储器被取到超高速缓冲存储器,并且超高速缓冲存储器中的数据被发现是无效的。在第二实施例中,一旦读处理器发布一个请求空间的命令时,数据就立即被预取到读处理器的超高速缓冲存储器中。这样就不需要首先使超高速缓冲存储器中的数据变成无效。
在第三实施例中,一旦写处理器发布它释放它曾经在其中写过新数据对象的空间的命令,数据就被预取到读处理器的超高速缓冲存储器中。
本发明的第四实施例适合维持写处理器的超高速缓冲存储器中的超高速缓冲存储器一致性。这是通过在该处理器给出一个确认操作后执行所述超高速缓冲存储器的刷新操作而实现的。这在图11中表示。其中,存储器的一部分10A是已经由写处理器确认的空间。PutSpace(释放空间)命令表明,处理器12释放分配给它并且它在其中已经写过新数据对象的空间。这时通过刷新超高速缓冲存储器184的部分184A、184B来维持超高速缓冲存储器一致性,所述两部分与由PutSpace命令释放的空间重叠。在刷新操作完成以前,延迟向读处理器发布告知由PutSpace命令指示的空间已经被释放的消息。另外,协处理器以字节粒度写数据,而超高速缓冲存储器管理在该超高速缓冲存储器中的每字节的“脏”位。在释放空间请求时,超高速缓冲存储器从超高速缓冲存储器刷新这些字到与由这一请求指示的地址范围重叠的共享存储器。所述“脏”位要用于总线写请求中的写屏蔽,以保证该存储器决不写在访问窗口之外的字节位置上。
在一个“Kahn”型应用中,端口具有专用的方向,或输入或输出。优选使用分开的读和写超高速缓冲存储器,这将简化一些实现事项。因为对于多个流,协处理器将按线性处理整个循化地址空间,读超高速缓冲存储器可选地支持预取,写超高速缓冲存储器可选地支持预刷新,在两次读访问内移动到下一字,前一字的超高速缓冲存储器位置可以为预期的未来使用变为可以利用的。读和写数据路径的分开实现也更容易支持来自协处理器的并行发生的读和写请求,例如在流水线式的处理器中实现的那样。
这样,使用对存储器访问数据对象流的可预测性来改善超高速缓冲存储器管理。
在所示实施例中,在同步接口之间的同步消息网络是令牌环网络。这具有允许较少的连接数量的优点。此外,令牌环自身的结构是可缩放的,使得可以增加或者删除一个节点而对接口设计没有什么影响。然而,在其它实施例中,可以以不同方式来实现通信网络,例如,基于总线的网络,或者交换矩阵网络,以使同步延迟最小。
在一个实施例中,第一表182包含下列由处理器处理的多个流的信息-指向存储器10中数据应该被写或读的地址,-指示可用于缓冲存储正在通信的处理器之间数据流的存储器内的存储器段的大小的值,-指示可用于连接到与管理单元连接的处理器的处理器的那一段的该部分的大小的空间值,-识别流和正在读或者写该流的处理器的全局标识gsid。
在一个实施例中,第二表183包含下列关于被执行的任务的信息-为所述任务处理的一个或者多个流的标识,
-为每一任务可用的预算,-指示该任务被允许或被禁止的任务允许标志,-指示任务已经准备好还是未准备好运行的任务可运行标志。
优选地,表183为每一任务只包含为一个流的一个标识,例如该任务的第一流。优选地,该标识是对该流表的索引。这样,通过把所述索引和端口号码p相加,管理单元18就可以简单地计算其它流相应的id。端口号码可以作为由连接到管理单元的处理器给出的指令的参数传送。
图12表示另外可以选择的实施例。在该实施例中,处理器同步装置是一个中央单元,它处理由处理器12a、12b、12c发布的确认和查询命令。该处理器同步装置可以以专用硬件实现,但是也可以是一个编程的通用处理器。处理器12a-c发布它们的同步命令Ca、Cb、Cc给同步单元18并且获得反馈FBa、FBb、FBc。同步单元18还通过超高速缓冲存储器控制命令CCa、CCb、CCc分别控制超高速缓冲存储器184a、184b、184c。处理器12a、12b、12c通过它们的超高速缓冲存储器184a、184b、184c和通过数据总线13和地址总线14连接到共享存储器10。
作为一个例子假定,12a是写处理器,12c是读出由写处理器写的数据的处理器。然而,每一处理器可以动态调度其作用,取决于可用的任务。
在处理器12a是写处理器的例子中,同步单元在接收由写处理器12a发布的PutSpace命令后,通过给超高速缓冲存储器184a发布刷新命令来维持超高速缓冲存储器184a的一致性。在本发明的另一个实施例中,同步单元也可以给正在读取处理器12a的数据流的处理器12c的超高速缓冲存储器发布预取命令。该预取命令必须在对超高速缓冲存储器184a的刷新命令之后给出。
然而,在另一个实施例中,读处理器12c的超高速缓冲存储器184c的超高速缓冲存储器一致性可以独立于写处理器12a的活动而实现。这可以在同步单元18接收到来自读处理器12c的一个GetSpace命令时给处理器12c的超高速缓冲存储器184c发布一个无效命令时实现。作为这一命令的结果,所述超高速缓冲存储器184c与由GetSpace命令所要求的区域重叠的那部分被无效化。一旦由读处理器12c发生一个读尝试时,立即从存储器10取出所述部分。另外,同步单元18可以给读处理器12c的超高速缓冲存储器184c发布一个预取命令,使得如果读处理器12c实际开始读的话,该数据已经可用。
权利要求
1.数据处理系统,包括存储器;第一和第二处理器,这些处理器被连接到存储器,并且都被安排成对数据对象流执行处理,第一处理器被安排成传送来自该流的连续数据对象给第二处理器,这是通过在存储器中连续存储供第二处理器读取的数据对象而实现的,处理器同步装置,用于当传送数据对象流时使处理器同步,所述处理器能够给同步装置发布同步命令,其中至少一个处理器包括一个超高速缓冲存储器,和其中同步装置响应同步命令而起动超高速缓冲存储器操作。
2.根据权利要求1的数据处理系统,其特征在于,至少一个处理器是第二处理器,它发布一个同步命令(查询)以用于请求包括由第一处理器产生的数据对象的空间,所述超高速缓冲存储器操作是无效化操作。
3.根据权利要求1的数据处理系统,其特征在于,至少一个处理器是第一处理器,它发布一个用于释放空间的命令(确认),该空间是分配给它的并且在该命令中写有新的数据对象,且所述超高速缓冲存储器操作是刷新操作。
4.根据权利要求1的数据处理系统,其特征在于,至少一个处理器是第二处理器,它发布一个用于请求空间的命令(查询),该空间包括由第一处理器产生的数据对象,且所述超高速缓冲存储器操作是预取操作。
5.根据权利要求1的数据处理系统,其中,至少一个处理器是第一处理器,它发布一个用于释放空间的命令(确认),该空间是分配给它的并且在该命令中写有新数据对象,所述超高速缓冲存储器操作是该读处理器对超高速缓冲存储器的预取操作。
全文摘要
要求一种数据处理系统的权利,该系统包括多个处理器(12a,12b,12c),它们通过共享的存储器(10)彼此交换数据流。该数据处理系统包括处理器同步装置(18),用于当传送数据流时使处理器(12a-c)同步。为此目的,处理器能够给同步装置(18)发布同步命令(Ca-c)。至少一个处理器12a包括超高速缓冲存储器(184a),和同步单元(18)响应同步命令(Ca)而起动超高速缓冲存储器操作(Cca)。
文档编号G06T1/20GK1605065SQ02824932
公开日2005年4月6日 申请日期2002年12月5日 优先权日2001年12月14日
发明者J·T·J·范埃德霍文, E·J·波, M·J·鲁特坦, O·P·冈瓦 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1