CN1602469A - 用在多处理器数据处理系统中的数据处理方法和相应的数据处理系统 - Google Patents
用在多处理器数据处理系统中的数据处理方法和相应的数据处理系统 Download PDFInfo
- Publication number
- CN1602469A CN1602469A CN02824765.5A CN02824765A CN1602469A CN 1602469 A CN1602469 A CN 1602469A CN 02824765 A CN02824765 A CN 02824765A CN 1602469 A CN1602469 A CN 1602469A
- Authority
- CN
- China
- Prior art keywords
- processor
- data
- data object
- task
- group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 45
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000012546 transfer Methods 0.000 claims abstract description 8
- 230000008569 process Effects 0.000 claims description 21
- 230000001360 synchronised effect Effects 0.000 claims description 19
- 238000003860 storage Methods 0.000 claims description 16
- 230000006870 function Effects 0.000 claims description 9
- 230000006399 behavior Effects 0.000 claims description 5
- 238000002203 pretreatment Methods 0.000 claims description 3
- 230000001052 transient effect Effects 0.000 claims description 3
- 238000004891 communication Methods 0.000 description 17
- 239000010410 layer Substances 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000000926 separation method Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000011850 initial investigation Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000002346 layers by function Substances 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000009183 running Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明是基于从读和写操作中分离同步操作的思想。因此提供了一种在数据处理系统中处理数据的方法,其中所述数据处理系统包括用于处理数据对象流的一个第一和至少一个第二处理器,其中所述第一处理器将数据对象从数据对象流传递到第二处理器。所述数据处理系统还包括用于存储和检索数据对象的至少一个存储器,其中提供了所述第一和第二处理器的共享存取。处理器执行读操作和/或写操作以便和它的所述存储器交换数据对象。所述处理器还执行查询操作和/或提交操作以便同步由所述处理器执行的任务之间的数据对象转移。所述查询操作和所述提交操作独立于所述读操作和所述写操作由所述处理器执行。
Description
本发明涉及到用在多处理器数据处理系统中数据处理方法和相应的具有多个处理器的数据处理系统。
用于高性能、依赖数据的媒体处理,例如用于高清晰度MPEG解码的不同种类的多处理器结构是已知的。媒体处理应用可以被规定为一系列并行执行的任务,该任务只通过单向数据流来交换信息。G.Kahn在1974年就介绍了这种应用的形式模型,记录在North-Holland出版的74年8月5-10日瑞典斯德哥尔摩IFIP会议的会刊卷1974第471-475页上发表的“The Semantics of a SimpleLanguage for Parallel Programming”中,其后由Kahn和MacQueen在1977年在下述文章中对它进行了操作上描述:“Co-routines andNetworks of Parallel Programming”,信息处理77,B.Gilchhirst(编辑),North-Holland出版社,1977,pp993-998。这个形式模型现在通常称之为Kahn进程网络。
一个应用被认为是一系列并行执行的任务。信息仅仅可以通过单向数据流在任务间交换。任务应当通过对预定数据流的读和写动作来唯一确定地通信。数据流基于FIFO特性被缓冲。因为缓冲,所以通过一个流通信的两个任务不必在单独的读或者写动作上同步。
在流处理中,对数据流的连续操作由不同的处理器来执行。例如第一个流可能由图像的象素值组成,它被第一处理器处理从而产生8×8象素块的DCT(离散余弦变换)系数块的第二流。第二处理器可能处理DCT系数块以便为每一个DCT系数块产生选择和压缩的系数块的流。
图1示出了如现有技术已知的将应用映射到处理器的例图。为了实现数据流处理,提供多个处理器,每个处理器能够重复地执行特定操作,每次使用来自于数据对象流的下一个数据对象和/或产生在这种数据流中的下一个数据对象。流从一个处理器传递到另一个,所以由第一处理器产生的流可以被第二处理器处理,等等。从第一处理器传递数据到第二处理器的一个机制是通过将由第一处理器产生的数据块写入存储器中。
在网络中的数据流被缓冲。每个缓冲器被实现为正好具有一个写装置(writer)和一个或者多个读装置(reader)的FIFO。因为这种缓冲,所以写装置和读装置不需要在信道上互相同步单独的读和写动作。从没有足够可用数据的信道中读出会导致读任务停止。处理器可以是仅可微弱编程的专用硬件功能单元。所有的处理器并行运行并且执行它们自己的控制线程。它们一起执行Kahn类型的应用,其中每个任务被映射到单独一个处理器。该处理器允许多任务,也就是多个Kahn可以被映射到单独一个处理器。
本发明的一个目的是改进Kahn类型数据处理系统的操作。
这个目的通过根据权利要求1的在数据处理系统中处理数据的方法和根据权利要求11的相应数据处理系统来解决。
本发明是基于从读和写操作中分离同步操作的思想。因此提供了一种在数据处理系统中处理数据的方法,其中,所述数据处理系统包括用于处理数据对象流的一个第一和至少一个第二处理器,其中所述第一处理器将数据对象从数据对象流传递到第二处理器。所述数据处理系统还包括用于存储和检索数据对象的至少一个存储器,其中提供了所述第一和第二处理器的共享存取。处理器执行读操作和/或写操作以便和它的所述存储器交换数据对象。所述处理器还执行查询操作和/或提交(commit)操作以便同步由所述处理器执行的任务之间的数据对象转移。所述查询操作和所述提交操作独立于所述读操作和所述写操作由所述处理器执行。
这具有分离同步操作和读/或写操作导致更有效地实现并且通常提供它们的组合的优点。此外,单个同步操作可以一次覆盖一系列的读或者写操作,从而减少了同步操作的频率。,
在本发明的另一个方面,所述查询操作通过第二处理器中的一个执行,以便请求存取所述存储器中的一组数据对象的权利,其中所述数据对象组通过所述处理器的一系列读/写操作在所述存储器中产生或者消耗。而且,所述提交操作由所述第二处理器中的一个执行,以便将存取所述数据对象组的权利转移到另一个所述第二处理器。
在本发明的优选方面,所述读/写操作启动所述第二处理器从而随机存取在所述存储器中的所述数据元素组之一中的位置。在所述存储器中的一个数据对象组中提供随机存取产生几个有趣的可能,例如数据处理无序和/或通过读和写存储器读取暂时存储中间数据。
在本发明的另一个优选方面,在任务被中断之后,数据对象组的部分处理的实际任务状态被丢弃,并且阻止对部分数据对象组的提交操作。在避免保存任务实际状态的成本的同时,这允许中断任务。
在本发明再另一个优选方面,在恢复被中断的任务之后,处理器重新开始处理数据对象组,在此对所述数据对象组的先前处理结果被丢弃。在避免状态恢复的成本的同时,这允许重新开始处理被中断任务的完整的数据对象组。
在本发明的另一个方面,第三处理器从所述第一处理器接收存取数据对象组的权利。此后,它对所述数据对象组执行读和/写操作,并最终将存取权利转移到所述第二处理器,而不将所述数据对象组拷贝到共享存储器中的另一个位置。这允许纠正或者替换单个数据对象。
本发明也涉及到一种数据处理系统,该系统包括用于处理数据对象流的一个第一和至少一个第二处理器,所述第一处理器被安排用来将数据对象从数据对象流传递到第二处理器;和至少一个用于存储和检索数据对象的存储器,其中,为所述第一和所述第二处理器提供共享存取,采用所述处理器执行读操作和/或写操作以便和所述存储器交换数据对象,和采用所述处理器执行查询操作和/或提交操作以便同步由所述处理器执行的任务间的数据对象转移,其中采用所述处理器来独立于所述读操作和所述写操作执行所述查询操作和所述提交操作。
本发明的其它实施例在从属权利要求中描述。
本发明的这些和其它方面参考附图进行更详细的描述;这些图示出了:
图1是根据现有技术将应用映射到处理器的示意图;
图2a是处理器的主要处理流程图;
图3a是根据第二实施例的基于流的处理系统的结构示意方框图;
图4是图3系统中的同步操作和I/O操作的示意图;
图5是循环FIFO存储器示意图;
图6是根据图3在每个外壳中更新本地空间值的机制;
图7是具有单个写入装置和多个读装置的FIFO缓冲器的示意图;和
图8是用于三站流的有限存储缓冲器实现。
本发明的优选实施例涉及基于流的多处理器数据处理系统,优选地包括CPU和几个处理器或者协处理器。该CPU将数据对象从数据对象流传递到这些处理器中的一个。CPU和处理器经总线被耦合到至少一个存储器。CPU和处理器使用该存储器来存储和检索数据对象,其中CPU和处理器具有到存储器的共享存取。
为了和他的所述存储器交换数据对象,处理器执行读操作和/或写操作。所述处理器进一步执行查询操作和/或提交操作以便同步在由所述处理器执行的任务之间的所述对象的传送。所述的查询操作和所述提交操作由所述处理器独立于所述度操作和所述写操作执行。
如上所述的同步操作可以被分离成查询操作和提交操作。查询操作告知处理器用于后继读操作的数据对象的可用性或用于后继写操作的存储空间的可用性,也就是说,这也可以分别通过获取数据(get_data)操作和获取存储空间(get_room)操作来实现。在处理器被告知了可用窗口或者可用数据组之后,它可以以它所喜欢的任何一种方式来存取缓冲器中可用窗口或者数据对象组。一旦处理器对数据对象组或者至少对所述数据对象组中的部分所述数据对象或所述存取窗口已经执行了必要的处理,处理器就可以分别使用释放数据(put_data)或者释放存储空间(put_room)操作来发出提交信号到另一个处理器,用于指示在存储器中数据或者存储空间最近是可用的。
然而,在优选地实施例中,这四个同步操作并没有在数据和存储空间操作的处理之间强加任何不同。因此,将这些操作概括为单个空间操作并且仅仅留下用于同步的两个操作是有利的,这两个操作分别是用于查询和提交的获取空间(get_space)和释放空间(put_space)。
处理器明确地选定任务运行期间所述任务可以被中断的时刻。处理器持续到一个点,在该点没有或者仅仅有有限数量的例如足够的输入数据、缓冲存储器中足够的可用空间等等处理资源对处理器是可用的。这些点表示处理器发起任务切换的最好时机。任务切换的发起是由处理器通过发出对下一个将被处理的任务的调用来执行。处理器对下一个任务的这种调用之间的间隔可以被定义为处理步骤。处理步骤可以包括读出一个或者多个分组或者数据组,对获得的数据执行一些操作和写入一个或者多个分组或者数据组。
读出和写入数据组的分组的概念没有被整个系统结构定义或者强迫执行。数据组或者分组的概念在系统结构的一般基础结构的层次上是不可见的。数据传输操作(也就是从缓冲存储器中将数据读出或者将数据写入)和同步操作(也就是为了缓冲器管理目的的读装置和写装置之间的数据的实际消耗信令)被设计为在无格式字节流上操作。分组或者数据组的概念仅仅在系统结构中的下一个功能层中出现,也就是在实际执行媒体处理的处理器中。
在处理器上运行的每个任务可以作为处理步骤的副本被模拟,其中每个处理步骤试图处理分组或者数据组。在执行这种处理步骤之前,该任务和所述数据处理系统中的任务调度表交互以便确定处理器应该继续那个任务并提供明确的任务切换时刻。
在图2中示出了处理器的一般处理的流程图。在步骤S1,处理器执行对引导到任务调度表的下一个任务的调用,以便确定它应当继续哪个任务。在步骤S2,处理器从任务调度表中接收关于要被处理的下一个任务的相应信息。此后,在步骤S3,处理继续检测属于下一个要被处理的相关任务的输入流,以便确定是否有足够的数据或者其它处理资源视可用来执行所请求的处理。这个初始的调查研究可以包含试图读出一些部分输入和试图解码分组报头。如果在步骤S4确定因为所有需要的处理资源都具备而可以继续处理,那么流程跳到S5,并且相应的处理器继续处理当前任务。当处理器在步骤S6中已经完成这个处理之后,流程将跳到下一个处理步骤,并且上述步骤被重复。
然而,如果在步骤S4确定处理器不能继续当前任务的处理,也就是,因为例如在输入流的一个中缺少数据之类的不充足的处理资源,它不能完成当前处理步骤,流程将转到步骤S7,并且到此为止所做的部分处理的所有结果将不作任何状态保存地被丢弃,也就是不保存在这个处理步骤中到此为止处理的处理的任何部分处理结果。该部分处理可能包含一些同步调用、数据读操作或者对获得数据的一些处理。此后,在步骤S8,流程将引导重新开始并在后面的阶段中完全重作未完成的处理步骤。然而,只有在当前任务没有通过发送同步消息而提交它的任何流动作的时候,抛弃当前任务并丢弃部分处理结果才是可能的。
尤其是在特定功能的硬件处理器中,排除了用于支持中间状态存储和恢复它的必要性可以简化它们的设计并且降低它们所需的硅面积。
图3示出了用于根据本发明第二实施例处理数据对象流的处理系统。该系统可以被分为不同层,即计算层1,通信支持层2和通信网络层3。计算层1包括CPU 11和两个处理器12a、12b。这仅仅是示例,显然该系统可能包含更多的处理器。通信支持层2包括与CPU11相关的外壳21和分别与处理器12a、12b相关的外壳22a、22b。通信网络层3包括通信网络31和存储器32。
优选地,处理器12a、12b是专用处理器;每一个专门执行有限范围的流处理。每个处理器被设置为重复地将相同的处理操作应用到流中的连续数据对象。处理器12a、12b每个可以执行不同的任务或者功能,例如可变长度解码、游程解码、运动补偿、图像缩放或者执行DCT变换。在操作中,每个处理器12a、12b对一个或者多个数据流执行操作。这些操作可能包含例如接收流而产生另一个流,或者接收流而不产生新的流,或者产生流而不接收流,或者修改接收的流。处理器12a、12b能够处理由其它处理器12b、12a或者由CPU 11产生的流,甚至是它们自己产生的流。流包括一系列数据对象,该数据对象通过存储器32从/向处理器12a、12b转移。
外壳22a、22b包括面向作为通信层的通信网络层的第一接口。这个层对于所有的外壳是统一的或者普通的。此外,外壳22a、22b包括面向分别与外壳22a、22b相关的处理器12a、12b的第二接口。第二接口是任务级接口并且面向相关处理器12a、12b定制以便能够处理所述处理器12a、12b的特定需要。因此,外壳22a、22b具有作为第二接口的处理器特定接口,但是对于所有的处理器,外壳的整体结构是统一的或者普通的,以便在整体系统结构中,便于外壳的重新使用,同时还允许特定应用的参数确定或者采用。
外壳22a、22b包括用于数据传输的读/写单元、同步单元和任务切换单元。这三个单元基于主/从基础与相关的处理器进行通信,其中处理器作为主设备。因此,相应的三个单元通过来自处理器的请求被初始化。优选地,在处理器和三个单元之间的通信通过请求-确认握手机制来实现,以便移交变元(argument)值和等待被请求的值返回。因此,通信被阻塞,也就是各自的控制线等待它们的完成。
优选地,读/写单元实现两个不同的操作,即读操作使处理器12a、12b能够从存储器中读出数据对象,写操作使处理器12a、12b能够将数据对象写入存储器32。每个任务具有预定义的一系列对应于数据流附着点的端口。这些操作的变元是各自端口的ID“port_id”、、读/写发生的偏移“offset”、和数据对象的可变长度“n_bytes”。通过“port_id”变元来选择端口。
同步单元实现同步的两个操作以便在从空FIFO中读出或者向满FIFO写入时处理本地阻塞状态。第一操作(即,获取空间操作)是在实现为FIFO的存储器中请求空间的操作,第二操作(也就是释放空间操作)是在FIFO中请求释放空间。这些操作的变元是“port_id”和“n_bytes”可变长度。
获取空间操作和释放空间操作是基于同步的线性带或FIFO顺序来执行的,当在由所述操作获得的窗口之内时,支持随机访问读/写动作。
任务切换单元将处理器的任务切换实现为获取任务操作。这些操作的变元是“blocked”、“error”和“task_info“。
变元”blocked”是布尔值,如果因为对输入端口或者输出端口的获取空间调用已经返回错误,所以最后处理步骤没有被成功完成时,该布尔值被设定为真。因此,任务调度单元被迅速通知,除非对于阻塞的端口新的“space(空间)”消息到达,否则这个任务最好不要被重新调度。这个变元值被认为是仅仅通向改进的调度但永远不会影响到功能性的建议。变元“error”是布尔值,如果在最后处理步骤在协处理器内部发生致命的错误,那么该布尔值被设定为真。来自mpeg解码的例子是例如出现未知的可变长度代码或者无效的运动矢量。如果是这样,那么外壳清除任务表使能标志以便防止进一步的调度,并且中断被发送到主CPU以便修复系统状态。直到CPU通过软件交互,当前任务才被明确地调度。
上述操作被来自于处理器的读调用、写调用、获取空间调用、释放空间调用或者获取任务发起。
图4描述了处理器的读和写及其相关同步操作。从处理器的观点来看,数据流看起来像具有当前存取点的无限数据带。从处理器发出的获取空间调用要求允许存取在图4a中小箭头所示的当前存取点之前的特定数据空间。如果授予了权限,那么处理器可以在请求的空间中,也就是图4b中的外加框的窗口中,使用如由n_bytes变元指示的可变长度数据,在由offset变元指示的随机存取位置执行读和写动作。
如果没有授予权限,那么调用返回假。在一个或者多个获取空间调用(和任意几个读/写动作)之后,处理器可以决定是否完成处理或者数据空间的某些部分并发出释放空间调用。这个调用使存取点前进一定数目的字节,也就是在图4d中前面的n_bytes2,其中该空间大小被前面已授权的空间约束。
根据图2所示优选实施例的方法的普通处理步骤也可以基于根据图3的数据处理系统来执行。主要的不同在于,图3中各自处理器12的外壳接管处理器和存储器之间的通信。
因此,在图2中示出了处理器12a、12b的主要处理流程图。在步骤S1,处理器执行指向所述处理器12中的外壳22中的任务调度单元的获取任务调用,以便确定应该继续哪个任务。在步骤S2,处理器从它相关的外壳,或者更精确地讲,从所述外壳22的任务调度单元接收关于要被处理的下一个任务的相应信息。此后,在步骤S3,处理器继续检查属于下一个要被处理的相关任务的输入流,以便确定是否有足够的数据或者其它处理资源可用于执行请求的处理。初始调查可以包括试图读出某部分输入以及解码分组报头。如果在步骤S4中确定,因为具备所有需要的处理资源,所以处理可以继续,那么流程跳到步骤S5,并且相应的处理器12继续处理当前任务。在处理器12已经在步骤S6完成这个任务之后,流程将跳到下一个处理步骤,并且上述步骤将被重复。
然而,如果在步骤S4中确定,因为缺少足够的处理资源,如缺少在一个输入流中的数据,处理器12不能继续当前任务的处理,也就是它不能完成当前的处理步骤,那么流程前进到步骤S7,并且到此为止完成的部分处理的所有结果都在没有保存任何状态的情况下被丢弃,也就是,没有保存在这个处理步骤中到此为止处理的部分处理的结果。该部分处理可能包括某些获取空间调用、数据读操作或者对获得数据的某些处理。此后,在步骤S8,流程将引导重新开始并在后面的阶段完全重作未完成的处理步骤。然而,只有在当前任务没有通过发送同步消息而提交它的任何流动作时,抛弃当前任何并丢弃部分处理结果才是可能的。
图5描述了循环FIFO存储器的示意图。数据流的通信需要FIFO缓冲器,优选地,该缓冲器具有有限和固定的大小。优选地,它在存储器中是预分配的,并且在线性存储器地址范围中,循环寻址机制被应用于适当的FIFO行为。
图5中心的旋转箭头描述了来自处理器的获取空间调用确认用于读/写的授权窗口的方向,这是和先前释放空间调用向前移动存取点的方向是一样的。小箭头51、52指示任务A和B的当前存取点。在这个例子中,A是一个写装置,因此在后面留下适当的数据,而B是读装置,留下空白空间(或者无意义的垃圾)。在每个存取点之前的阴影区域(A1、B1)指示通过获取空间操作获得的存取窗口。
任务A和B可以以不同的速度进行,和/或者因为多任务,在某个时间段可以不被服务。外壳22a、22b向A和B在其上运行的处理器12a、12b提供信息以便确保A和B的存取点保持它们相应的顺序,或者更严格地,授权的存取窗口永远不重叠。处理器12a、12b的责任是使用由外壳22a、22b提供的信息以便实现所有功能的正确性。例如,外壳22a、22b有时可能以非来回答来自处理器的获取空间请求,例如因为在缓冲器中没有足够可用空间。然后,处理器应当根据存取的否认请求抑制对缓冲器的存取。
外壳22a、22b被这样分布,使得每个外壳可以靠近与之相关的处理器12a、12b来实现。每个外壳22a、22b本地包含用于流的配置数据,该流伴随着映射到它的处理器上的任务,并且每个外壳22a、22b本地实现了所有的控制逻辑以便适当地处理这个数据。因此,本地流表在外壳22a、22b中被实现,该外壳22a、22b对于每个流包含一行字段,换句话说,对于每个存取点包含一行字段。
为了处理图5的排列,任务A和B的处理器外壳的流表每个包含一个这种行,“space”字段,包含(可能是不利的)从它自己的存取点到这个缓冲器中的其它存取点之间的距离和指示具有在这个缓冲器中的其它存取点的任务和端口的远端外壳的ID。此外,所述的本地流表可能包含相应于当前存取点的存储器地址和缓冲器基地址的编码以及缓冲器大小以便支持引用地址的增加。
优选地,这些流表是映射到每个所述外壳22中的小存储器的存储器,例如寄存器堆。因此,获取空间调用可以通过将请求的大小和本地存储的可用空间相比较在本地被立即回答。在释放空间调用时,这个本地空间域被减少指示的数量并且释放空间消息被发送到保存先前存取点的另一个外壳以便增加它的空间值。相应地,一旦从远程源接收到这种释放消息,外壳22就增加本地域。因为在外壳之间的消息传送占用时间,因此,可能发生两个空间域不需要相加为整个缓冲器大小但是可能立即包含不利值的情况。然而,这并不违反同步安全。这甚至可以在多个消息同时都在通向目的地的路上并且它们次序混乱地被维护的异常情况下发生,但是即使在那种情况下,同步仍保持正确。
图6示出了在每个外壳中更新本地空间值并发送“释放空间”消息的机制。这这个方案中,来自处理器12a、12b的获取空间请求(也就是获取空间调用)可以通过将请求的大小和本地存储空间信息相比较而在相关的外壳22a、22b中在本地立即被回答。在释放空间调用时,本地外壳22a、22b减少它的空间域指示的数量并发送释放空间消息给远程外壳。该远程外壳(即,另一个处理器的外壳)保存其它的存取点并增加那里的空间值。相应地,本地外壳在从远程源中接收到这种释放空间消息时增加它的空间域。
属于存取点的空间域通过两个源被修改:在本地释放空间调用时被减小和在接收到释放空间消息时增加。这种增加或者减小不是作为原子操作来实现的,这将导致错误的结果。在这种情况下,分离的本地空间和远程空间域可能被使用,其中的每一个仅仅通过单个源来修改。在本地获取空间调用时,这些值被减小。外壳22总是控制它自己的本地表的更新并且以原子方式执行这些。非常清楚,这仅仅是外壳实现问题,这对于它外部的功能是不可见的。
如果获取空间调用返回假,那么处理器免于决定怎样反映。可能性是:a)处理器可以发出具有更小n_bytes变元的新的获取空间调用,b)处理器可能等待一会然后重试,或者c)处理器可能退出当前任务并允许在这个处理器上进行另一个任务。
这允许任务切换的决定取决于更多数据的期望达到时间和具有相关状态保存成本的内部累加状态的数量。对于不可编程的专用硬件处理器,这个决定是结构设计过程的一部分。
外壳22的实现和操作在读和写端口之间没有区别,尽管特定的示例可能造成这些不同。由外壳22实现的操作有效地隐藏了诸如FIFO缓冲器大小、它在存储器中的位置、任何关于存储器边界循环FIFO的地址的绕回机制、高速缓存策略、高速缓存一致性、全局I/O对准限制、数据总线宽度、存储器对准限制、通信网络结构和存储器组织之类的实现方面。
优选地,外壳22a、22b对无格式字节序列操作。不需要在传递数据流的写装置和度装置使用的同步分组大小之间的任何相关。数据内容的语义解释留给处理器。任务不知道应用图形关联结构,例如它正在传递其它哪些任务,这些任务映射到哪些处理器上,或者其它还有哪些任务被映射到相同的处理器上。
在外壳22的高性能实现中,读调用、写调用、获取空间调用、释放空间调用可以通过外壳22a、22b的读/写单元和同步单元被并行发出。对外壳22的不同端口起作用的调用没有相互排序限制,而对外壳22的相同端口起作用的调用必须根据调用者任务或者处理器来排序。对于这种情况,当先前的调用已经返回时,在软件实现中通过从函数调用中返回,在硬件实现中通过提供确认信号,可以使来自于处理器的下一个调用开始。
为了在由port-ID和offset变元指示的位置执行从存储器到外壳高速缓存的数据预取,在读调用中的大小变元(即n_bytes)的零值可以被保留。这种操作可以被用于由外壳执行的自动预取。同样,对于高速缓存刷新请求来说,写调用中的零值可以被保留,虽然自动高速缓存刷新是外壳的责任。
可选地,所有的五个操作接受附加的最后任务ID变元。这通常是作为结果值从更早获取任务调用中获得的小正数。这个变元的零值为非任务特定的但与处理器控制相关的调用保留。
在优选实施例中,建立通信数据流是一个具有连接到有限大小FIFO缓冲器的一个写装置和一个读装置的流。这种流需要具有有限和固定大小的FIFO缓冲器。它将在存储器中预先分配并且它的线性地址范围是循环的,寻址机制应用于适当的FIFO行为。
然而在基于图3和图7的另一个实施例中,由一个任务产生的数据流由具有不同输入端口的两个或者更多不同的消费者消费。这种情况可以通过术语分支(forking)来描述。然而,对于多任务硬件处理器和运行在CPU上的软件任务,我们想要重新使用任务实现。这是通过具有固定数目端口的任务来实现的,相应于它们的基本功能,并且由应用配置诱发的对分支的任何需求由外壳来解决。
很清楚,流分支可以由外壳22仅仅通过保持两个分离的正常流缓冲器、加倍所有的写和释放空间操作和对加倍的获取空间检测的结果值执行AND操作来实现。优选地,因为成本包含加倍的写带宽并可能包含更多的缓冲器空间,所以不实现这个。优选地,这个实现通过共享相同FIFO缓冲器的两个或者更多读装置和一个写装置来完成。
图7示出了具有单个写装置和多个读装置的FIFO缓冲器的图示。同步机制必须确保A和B之间的正常成对排序紧接着A和C之间的成对排序,而B和C没有相互制约,例如假设它们是单纯的读装置。这在与执行写操作的处理器相关的外壳中通过分别为每个读装置(A到B和A到C)跟踪可用的空间来完成。当写装置执行本地获取空间调用时,它的n_bytes变元与这些空间值中的每一个相比较。这是通过对于由一个额外的域或者列连接的分支在所述流表中使用额外行从而指示变化到下一行来实现的。
对于分支没有被使用并且同时没有限制分支为仅仅两路的多数情况下,这提供了非常少的开销。优选地,分支仅仅通过写装置来实现,而读装置并不知道这种情况。
在基于图3和图8的另一个实施例中,根据带模型,数据流被实现为三站流(three station stream)。每一个站执行通过数据流的一些更新。三站流应用的一个例子是一个写装置、中间监视器和最终的读装置。在第二任务的这种例子中,优选地监视通过的数据并可能检查一些,而多数允许数据通过而不作修改。相对不频繁地,它可能决定改变流中的几个项目或者数据对象。这可以通过处理器适当更新缓冲器从而避免全部流内容从一个缓冲器复制到另一个来有效地实现。实际上,当硬件处理器通信和主要CPU 11干涉从而修改流以便纠正硬件错误、适应稍微不同的流格式、或者仅仅用于调试原因时,这可能是有用的。这种建立可以通过所有三个共享存储器中单个流缓冲器的处理器来实现,从而减少存储器业务和处理器工作负荷。实际上,任务B并不读出或写入整个数据流。
图8描述了三站流的有限存储缓冲器的实现。这种三路缓冲器适当的语义包括使A、B和C相互之间保持严格的顺序并确保没有重叠的窗口。通过这种方式,三路缓冲器是图5所示两路缓冲器的扩展。这种多路循环FIFO由如上所述的外壳的操作以及如优选实施例中描述的带有释放消息的分布式实现类型来直接支持。在单个FIFO中并没有限制正好有三个站。一个站既消耗又产生有用数据的适当处理可以通过仅仅两个站来应用。在这种情况下,两个任务执行适当处理以便相互交换数据,并且在缓冲器中没有留下空白空间。
在基于图2的优选实施例的另一个实施例中,读/写操作和同步操作的逻辑分离思想被实现为数据传输的物理分离,也就是读和写操作以及同步的物理分离。优选地,允许传输(即,数据的读/写操作)的高带宽的宽总线被实现。一个独立的通信网被实现用于同步操作,因为,将相同的宽总线用于同步看起来不是优选的。这种安排具有这样的优点,两个网络均为各自的用途被优化。因此,数据传输网为存储器I/O(也就是读和写操作)被优化,同步网络为处理器间消息被优化。
优选地,同步网络被实现为消息传递环形网络,为了这个目的,它已经被特别调谐和优化。这种环形网络是小和可伸缩的,从而支持可伸缩结构的灵活性要求。因为同步延迟被数据流缓冲器和存储器吸收了,所以环形网络的更高延迟不会负面地影响网络性能。环形网络总的吞吐量是非常高的,并且环形网络中的每一条链路可以允许通过同步消息,从而允许同时出现和处理器一样多的消息。
在基于图3的另一个实施例中,数据传输和同步的物理分离思想被实现。在外壳22a中的同步单元连接到在另一个外壳22b中的其它同步单元。同步单元确保在被处理的流的有效数据已经被写入这些存储器位置中之前处理器不存取该存储器位置。相似地,同步接口被用于确保处理器12a不覆盖存储器32中的有用数据。同步单元通过同步消息网络通信。优选地,它们形成环形网络的一部分,其中,同步信号从一个处理器被传递到另一个处理器,或者当在任何随后处理器中不需要这些信号时,它们被阻塞和覆盖。同步单元一起形成同步信道。同步单元维持关于存储器空间的信息,该存储空间用于从处理器12a向处理器12b传送数据对象流。
Claims (20)
1、一种用于在数据处理系统中处理数据的方法,所述系统包括用于处理数据对象流的一个第一处理器和至少一个第二处理器,所述第一处理器被安排用来将数据对象从数据对象流传递到第二处理器,和至少一个用于存储和检索数据对象的存储器,其中提供了用于所述第一和所述第二处理器的共享存取,所述方法包括步骤:
-所述处理器执行读操作和/或写操作以便和所述存储器交换数据对象;和
-所述处理器执行查询操作和/或提交操作以便同步由所述处理器执行的任务之间的数据对象转移;
其中,所述查询操作和所述提交操作独立于所述读操作和所述写操作由所述处理器执行。
2、根据权利要求1的方法,其特征在于,
所述查询操作由所述第二处理器中的一个执行以便请求存取所述存储器中的一组数据对象的权利,其中所述数据对象组通过所述处理器的一系列读/写操作在所述存储器中产生或者消耗;和
所述提交操作由所述第二处理器中的一个执行,以便将存取所述数据对象组的权利转移到所述第二处理器中的另一个。
3、根据权利要求1或者2的方法,其特征在于,
所述存储器是FIFO缓冲器,和
使用所述查询和提交操作来控制所述存储缓冲器的FIFO行为以便通过所述共享存储缓冲器在所述第一和第二处理器间传输数据对象流。
4、根据权利要求1、2或者3的方法,其特征在于,
第三处理器从所述第一处理器接收存取数据对象组的权利,对所述数据对象组执行读和/或写操作,以及将存取权利转移到所述第二处理器,而不将所述数据对象组拷贝到所述共享存储器中的另一个位置。
5、根据权利要求1的方法,其特征在于,
所述第二处理器是多任务处理器,能够对至少第一和第二任务进行交织处理,其中所述的至少第一和第二任务处理数据对象流。
6、根据权利要求1或者5的方法,其特征在于,
所述第二处理器是用于执行一个范围的流处理任务的功能特定的专用处理器。
7、根据权利要求2的方法,其特征在于,
所述读/写操作使得所述第二处理器能够随机存取在所述存储器中的所述数据对象组之一中的位置。
8、根据权利要求1的方法,其特征在于,
当第一任务对数据对象组的处理被中断时,暂时阻止对所述数据对象组的进一步处理,
其中当所述第一任务对所述数据元素组的处理被中断时,执行第二任务对数据对象的处理。
9、根据权利要求8的方法,其特征在于,
在任务被中断之后,数据对象组的部分处理的实际任务状态被丢弃,并且阻止该部分数据对象组的提交操作。
10、根据权利要求7的方法,其特征在于,
在恢复了被中断的任务之后,处理器重新开始处理数据对象组,从而丢弃对所述组的先前处理。
11、一种数据处理系统,包括
-用于处理数据对象流的一个第一处理器和至少一个第二处理器,所述第一处理器被安排用来将数据对象从数据对象流传递到第二处理器,和
-至少一个用于存储和检索数据对象的存储器,其中提供了用于所述第一和所述第二处理器的共享存取,
-所述处理器被用来执行读操作和/或写操作以便和所述存储器交换数据对象;和
-所述处理器被用来执行查询操作和/或提交操作以便同步由所述处理器执行的任务之间的数据对象转移;
其中,所述处理器被用来独立于所述读操作和所述写操作执行所述查询操作和/或所述提交操作。
12、根据权利要求11的数据处理系统,其特征在于,
所述第二处理器被用来执行所述查询操作以便请求存取所述存储器中的一组数据对象的权利,其中所述数据对象组通过所述处理器的一系列读/写操作在所述存储器中产生或者消耗;和
所述第二处理器被用来执行所述提交操作,以便将存取所述数据对象组的权利转移到所述第二处理器中的另一个。
13、根据权利要求11或者12的数据处理系统,其特征在于,
所述存储器是FIFO缓冲器,和
所述处理器被用来执行所述查询和提交操作以便控制所述存储缓冲器的FIFO行为,从而通过所述共享存储缓冲器在所述第一和第二处理器之间传输数据对象流。
14、根据权利要求11、12或者13的数据处理系统,包括:
第三处理器,它被用来从所述第一处理器接收存取数据对象组的权利,对所述数据对象组执行读和/或写操作,以及将存取权利转移到所述第二处理器,而不将所述数据对象组拷贝到所述共享存储器中的另一个位置。
15、根据权利要求11的数据处理系统,其特征在于,
所述第二处理器是多任务处理器,能够对至少第一和第二任务进行交织处理,其中所述的至少第一和第二任务处理数据对象流。
16、根据权利要求11或者16的数据处理系统,其特征在于,
所述第二处理器是用于执行一个范围流处理任务的功能特定的专用处理器。
17、根据权利要求12的数据处理系统,其特征在于,
所述第二处理器被用来执行读和/或写操作,从而使得能够随机存取在所述存储器中的所述数据对象组之一中的位置。
18、根据权利要求11的数据处理系统,其特征在于,
当第一任务对数据对象组的处理被中断时,暂时阻止对所述数据对象组的进一步处理,
其中当所述第一任务对所述数据元素组的处理被中断时,执行第二任务对数据对象的处理。
19、根据权利要求18的数据处理系统,其特征在于,
在任务被中断之后,数据对象组的部分处理的实际任务状态被丢弃,并且阻止该部分数据对象组的提交操作。
20、根据权利要求19的数据处理系统,其特征在于,
在恢复了被中断的任务之后,处理器重新开始处理数据对象组,从而丢弃对所述组的先前处理。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP01204884 | 2001-12-14 | ||
EP01204884.9 | 2001-12-14 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1602469A true CN1602469A (zh) | 2005-03-30 |
Family
ID=8181431
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN02824765.5A Pending CN1602469A (zh) | 2001-12-14 | 2002-12-05 | 用在多处理器数据处理系统中的数据处理方法和相应的数据处理系统 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20050015372A1 (zh) |
EP (1) | EP1459181A2 (zh) |
JP (1) | JP2005528671A (zh) |
CN (1) | CN1602469A (zh) |
AU (1) | AU2002366408A1 (zh) |
WO (1) | WO2003052589A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110609822A (zh) * | 2018-06-15 | 2019-12-24 | 伊姆西Ip控股有限责任公司 | 数据流处理方法、设备和计算机程序产品 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060100845A1 (en) * | 2004-11-08 | 2006-05-11 | Mazzagatti Jane C | Multiple stream real time data simulation adapted for a KStore data structure |
JP4852906B2 (ja) * | 2005-06-24 | 2012-01-11 | 富士ゼロックス株式会社 | 連携処理システム及び装置 |
US8130841B2 (en) * | 2005-12-29 | 2012-03-06 | Harris Corporation | Method and apparatus for compression of a video signal |
JP5267166B2 (ja) * | 2009-01-30 | 2013-08-21 | ソニー株式会社 | インターフェース装置、演算処理装置、インターフェース生成装置、および回路生成装置 |
US9619157B2 (en) * | 2014-04-03 | 2017-04-11 | Analysis Solution Llc | High-speed data storage |
US9928117B2 (en) * | 2015-12-11 | 2018-03-27 | Vivante Corporation | Hardware access counters and event generation for coordinating multithreaded processing |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5175837A (en) * | 1989-02-03 | 1992-12-29 | Digital Equipment Corporation | Synchronizing and processing of memory access operations in multiprocessor systems using a directory of lock bits |
US5408629A (en) * | 1992-08-13 | 1995-04-18 | Unisys Corporation | Apparatus and method for controlling exclusive access to portions of addressable memory in a multiprocessor system |
US6289421B1 (en) * | 1999-05-21 | 2001-09-11 | Lucent Technologies, Inc. | Intelligent memory devices for transferring data between electronic devices |
-
2002
- 2002-12-05 US US10/498,448 patent/US20050015372A1/en not_active Abandoned
- 2002-12-05 JP JP2003553410A patent/JP2005528671A/ja not_active Abandoned
- 2002-12-05 EP EP02804986A patent/EP1459181A2/en not_active Ceased
- 2002-12-05 CN CN02824765.5A patent/CN1602469A/zh active Pending
- 2002-12-05 WO PCT/IB2002/005244 patent/WO2003052589A2/en not_active Application Discontinuation
- 2002-12-05 AU AU2002366408A patent/AU2002366408A1/en not_active Abandoned
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110609822A (zh) * | 2018-06-15 | 2019-12-24 | 伊姆西Ip控股有限责任公司 | 数据流处理方法、设备和计算机程序产品 |
CN110609822B (zh) * | 2018-06-15 | 2023-02-28 | 伊姆西Ip控股有限责任公司 | 数据流处理方法、设备和计算机程序产品 |
Also Published As
Publication number | Publication date |
---|---|
WO2003052589A2 (en) | 2003-06-26 |
AU2002366408A8 (en) | 2003-06-30 |
EP1459181A2 (en) | 2004-09-22 |
US20050015372A1 (en) | 2005-01-20 |
JP2005528671A (ja) | 2005-09-22 |
WO2003052589A3 (en) | 2004-03-25 |
AU2002366408A1 (en) | 2003-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9697262B2 (en) | Analytical data processing engine | |
US8209690B2 (en) | System and method for thread handling in multithreaded parallel computing of nested threads | |
CN1047677C (zh) | 多执行单元的指令相关调度技术 | |
CN1618061B (zh) | 功能性流水线 | |
CN100449478C (zh) | 用于实时多线程处理的方法和装置 | |
US6507903B1 (en) | High performance non-blocking parallel storage manager for parallel software executing on coordinates | |
CN1311348C (zh) | 数据处理系统 | |
JP2006515690A (ja) | 複数のプロセッサを有するデータ処理システムと、複数のプロセッサを有するデータ処理システムのためのタスクスケジューラと、タスクスケジューリングの対応する方法 | |
US20210042280A1 (en) | Hardware acceleration pipeline with filtering engine for column-oriented database management systems with arbitrary scheduling functionality | |
US20050015637A1 (en) | Data processing system | |
CN1295609C (zh) | 数据处理系统、通信装置和处理数据的方法 | |
CN1829200A (zh) | 用于在网络处理器中记帐的装置和方法 | |
US9798671B2 (en) | Method and system for efficient communication and command system for deferred operation | |
CN1602469A (zh) | 用在多处理器数据处理系统中的数据处理方法和相应的数据处理系统 | |
CN101539867B (zh) | 动态二进制翻译系统中可重定向的寄存器分配方法 | |
US20100008638A1 (en) | Independent parallel image processing without overhead | |
Watlington et al. | A system for parallel media processing | |
WO2012004990A1 (ja) | プロセッサ | |
CN103377034B (zh) | 指令预送方法及装置、指令管理系统、运算核心 | |
CN1042979C (zh) | 执行具有多个可调用过程的单线程计算机程序的方法 | |
CN113395302B (zh) | 异步数据分发器、相关装置和方法 | |
US11860785B2 (en) | Method and system for efficient communication and command system for deferred operation | |
JPH09288653A (ja) | Cpu間のリファレンスによるコンピュータシステムデータi/o | |
Ostheimer | Parallel Functional Computation on STAR: DUST— | |
JP4599438B2 (ja) | パイプライン処理装置、パイプライン処理方法及びパイプライン制御プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |