具有分离串行模块的处理器阵列的制作方法

文档序号:6568794阅读:142来源:国知局
专利名称:具有分离串行模块的处理器阵列的制作方法
具有分离串行模块的处理器阵列 本发明涉及处理器阵列,尤其但不排他地涉及具有分离串行模块的单指令多数据(SIMD)数据处理器阵列,尤其但不排他地涉及查询 表(LUT)模块,还涉及处理器阵列的操作方法和用于操作该处理器阵 列的计算机程序。在SIMD处理阵列中,多个处理元件(PE )的每一个都接收来自共 同指令流的相同指令,并基于对该处理元件唯一的数据来执行该指令, 其中该数据可以净皮称为本地数据(local data)。这种处理阵列适用 于高度重复性的任务,即同时在多个数据项上实施同样的操作,这例 如会发生在图像处理领域。

图1示出了经典的SIMD阵列,其具有多个处理元件2和一个由各 元件共享的存储器4。指令输入6并行地为所有处理元件提供指令,也 就是说所有元件执行同样的指令。然而这些元件确实是并行地存取存 储器4中的不同数据。然而,当处理操作依赖于数据,例如当执行查询表操作时,SIMD 处理阵列并不是特别高效。在这种情况下,如果查询表被存储在存储 器4中,那么每个处理器需要同时存取该存储器的不同部分,这样由 于试图顺序存取而降低了性能。因此,在某些体系结构中,特别是在 SIMD体系结构中,查询表操作在功能上计算,其可能需要非常大量的 指令。解决这一问题的一种方法在US6, 665, 768 ( Redford )中有所描述。 在该方法中, 一个内存条(memory bank)由多个处理器进行存取。然 而,这样做的缺点是查询表的多个副本被存储在多个内存条中。这多 个内存条可以由处理元件并行地存取。每个处理元件具有能够选择其 中一个内存条的识别值,因此提高了速度。WO2005/017765 (Philips)中描述了 一种改进的处理查询表的处 理阵列。这种处理阵列的简化版以简化的形式示于图2。每个处理元件 2都具有算术逻辑单元IO和多个专用于该处理元件2的存储元件12。 处理元件具有系数输入14和共同的指令输入6,以及内部累加器16。每个处理元件还包括各种多路复用器和算术逻辑单元,为了简洁起见从图2中将其省略。可以通过在指令输入上提供适当的指令以及在系数输入上提供索 引以便将累加器中的数据存储在由系数输入14索引的存储元件中,从 而将数据项存储在处理元件2的其中一个存储元件12上。相反地,能 够将数据从由系数输入索引的存储元件载入到累加器中。来自由系数 输入14索引的存储元件12的数据还能够与累加器16中数据相乘。WO2005/017765中描述了将正确数据载入用于查询表操作的存储 元件中的多种可替换方式。在数据被载入之后,累加器16中的数据可 被用作索引,以便选择其中一个存储元件并将存储在相应存储元件中 的数据直接输出或者输出到内部寄存器。因此,WO2005/017765中的处理阵列能够以三种方式运行。第一, 就普通的阵列器件而言,每个处理元件都能够基于广播指令,在本地 数据上执行同样的指令。第二,每个处理元件都能够在本地数据上执 行同样的指令,但是在系数输入上提供不同的系数。第三,每个处理 元件都能够执行查询表中确定的功能。W02005/017765中的处理阵列因 此能够提供如下优点,SIMD处理在依赖于数据的处理操作中性能得到 改善。然而,按照图2所示的配置为每个处理元件提供本地存储器与按 照图1所示配置的跨越更多处理器的普通宽存储器相比,需要多得多 的硅面积(silicon area)。并且,这样增加的复杂度需要在每个处 理元件中有更多的开销(overhead),诸如地址解码器。这种复杂度意味着利用间接寻址的SIMD器件可能会相当昂贵。并且,在并行查询表操作的特定情况下,需要将查询表存储在每 个处理元件的存储器中。实际上,不可能为了能够存储大的查询表而 为每个处理元件提供足够的存储位置。对于添加到并行处理阵列上的其它类型的附加处理也可能发生同 样的问题。因此,仍然需要改进的用于提供附加功能的并行处理阵列。可由多个处理器元件并行存取的存储器;具有串行输入和输出的串行模块,用于对在串行输入上输入 的数据行实施处理操作以便修改数据行,并且在串行输出上输出 结果作为修改的数据行;和用于从处理器元件和存储器向串行模块串行输入串行地提供 数据行,以及在处理操作之后将修改的数据行从串行输出返回到 处理器元件和存储器的装置。 该串行模块可以是查询表模块。在实施例中,用于提供数据行的装置是连接到串行输入和串行输 出的直接存储器存取控制器,用于直接存取存储器中的数据行并将处 理操作的结杲直接存储在存储器中,使得模块能够执行处理操作,同 时该处理继续在处理元件中进行。在可替换实施例中,用于提供数据行的装置包括至少包括一个移 位寄存器的移位寄存器单元,该移位寄存器单元具有串行输出和串行 输入,串行输入连接到串行模块的串行输出,串行输出连接到串行模 块的串行输入,其中存储器能够并行地存取移位寄存器中的数据。处理器阵列特别地可以是单指令集多数据(SIMD)处理器阵列。可替换地,本发明可应用到其它多处理器配置中,包括例如多指 令集多数据(MIMD)处理器阵列,或者运行在锁步(lockstep)模式 下的超长指令字(VLIW)处理器。另一方面,本发明涉及具有多个处理器元件、可由多个处理器元件并行存取的存储器和串行模块的处理器阵列的操作方法,该方法包 括'.利用多个处理器元件处理数据行;当在处理器元件中处理数据行期间,从处理元件和存储器向 串行模块串行地发送下 一数据行;对串行模块中的下一数据行执行处理操作,生成修改的下一 数据行;将修改的下一数据行从串行模块返回到处理元件和存储器;并且重复所述步骤,利用处理器元件依次处理每个数据行,同时 在串行模块中对下 一数据行执行处理操作。这样实现了流水线操作。另一方面,本发明还涉及配置为使得处理器阵列执行如上所述方 法的计算机程序代码,其中所述处理器阵列具有多个处理器元件、可 由多个处理器元件并行存取的存储器和附加的串行模块。为了更好地理解本发明,各实施例将完全通过例子,参照附图来进行描述,其中图1示出现有技术的SIMD阵列;图2示出另一个现有技术的SIMD阵列;图3示出根据本发明第一实施例的处理器阵列;图4示出利用图3的处理器阵列的方法流程图;图5示出可替换实施例;和图6示出另一种可替换实施例。参照图3,根据本发明的处理器阵列包括多个处理器元件2、能够 由每个处理器元件并行存取的存储器4和共同的指令输入6。这些特征 与图1所示现有技术配置中的特征相似。在下面将处理器元件的数目 称为N个,其中N是大于1的正整数。提供中央控制器8,用于控制该处理器阵列。提供查询表模块30形式的串行模块,通过直接存储器存取(DMA) 控制器39直接存取存储器4,所述直接存储器存取(DMA)控制器39 与存储器4以及查询表模块30的串行数据输入34和串行数据输出36 相连接。提供控制输入32。提供查询表模块30中的查询表存储器38, 用于存储一个或更多查询表。查询表模块30在控制输入32上被进行控制,接收串行数据输入 34上的数据,并在输出36上输出处理后的数据。中央处理器8向处理 器和查询表模块提供指令。中央控制器能够指示在查询表存储器38中 存储新的查询表。查询表模块30被配置为在串行数椐输入34上串行地接收数据行, 以便执行查询表操作,作为结果产生修改后的数据行,并在输出36上 串行地输出该修改后的数据行。在实施例中,直接从存储器4通过直 接存储器存取获得数据行,即独立于处理器。通常,数据行应包括N条数据,每个处理器元件一条数据。将会 理解,查询表模块对数据串行操作,而处理器元件并行操作。因此, 通常假设查询表模块能够在一个时钟周期内对一条串行输入的数据执 行查询操作,则查询表模块将需要N个时钟周期来在N条形成行的数 据上执行查询表操作。首先可以想到,这样的延迟将会非常大,特别是在并行处理器的 数量很大并由此造成数据行中的数据项数量也很大的情况下。然而,利用适当的技术,查询表操作的处理对于程序员可以被看 作单个指令,现在将进行解释。图4示出了一种操作处理器阵列的方法,用于多个表示为数据向 量a、 b、 f(c)的数据行。循环依次为每个数据行执行处理,其中k表 示循环索引。除了查询表操作之外的所有操作都由处理元件2并行执行。对循环中的每一轮迭代,每个处理器元件都并行获取一条数据a (步骤40)。每个处理器将会获取不同的数据项,生成具有N个数据 元素的高效数据行,每个处理器元件2—个数据元素。下一个步骤(步骤42 )是对第k个数据行执行查询表操作。这将 被编程为对数据行执行简单的查询表操作,如图所示。这个步骤使得 查询表模块开始利用对不包括处理器元件的存储器进行直接、串行数 据存取来处理数据行。不为该串行查询表操作等待N个时钟周期而继续进行,下一步骤 (步骤44 )执行进一步处理以处理对前一数据行(k-1)的查询表操作的 结果。虽然只示出了一个计算步骤,实际上需要对查询表操作的结果 执行多个计算步骤。然后使索引k增加(步骤46),循环继续进行,直到所有数据行 都已经被处理(步骤48)。注意到,处理器阵列和查询表的时钟可以完全不同,进一步有助 于降低延迟。因此,图4所示的方法使串行查询表操作的巨大延迟变得不可见, 该查询表操作对程序员来说将会好像只花费了单个时钟周期。本领域技术人员将会理解,为了简洁起见图4已经省略了某些细 节。例如,对第一轮循环来说,由于没有前一数据行,将不执行步骤44,而对最后一轮循环来说不需要步骤40。因此,图3的处理器阵列和图4的方法特别适用于图像处理,图 像处理通常需要顺序地处理多个数据行,对每个数据行依次执行同样 的操作,将查询表操作用作其中一个处理步骤。与存储器与每个处理器元件相关联以用于执行查询表操作的配置 不同,只需要在存储器38中有一个查询表的副本,并且它不需要费劲 地被载入到每个处理器元件2的存储器中。因此,存储器并因而查询 表可以需要多大就有多大,而不会将不必要的开销包含到只需要小查 询表的配置中。通过提供分离的元件来串行执行查询表操作,只需要单个查询表。 在US6,665,768的现有方法中,每个处理器存取不同的内存条,对于 一个以上的存储器来说,不可能一次存取整个查询表,因此需要多个 副本。并且,US6, 665, 768为查询表操作使用个别的处理器元件,这样 就可能要用多个时钟周期来存取大的外部存储器,延迟了处理。并且,通过提供分离的查询表模块,对查询表操作来说可以达到 最优化,而不必与处理器元件通常的、相当不同的操作进行妥协。在本实施例的变形中,元件30不执行查询表操作,而是被配置为 执行 一 些可替换处理形式的串行模块。元件30本身可包括处理器,其可以以任何适当的时钟速度来运行, 鉴于串行输入和输出该时钟速度不一定与处理器元件2的时钟速度相 同。模块30可例如执行霍夫曼(Huffman)、算术或游程编码。模块 30还可例如是条件存取模块。参照图5解释另一个实施例。在这个配置中,DMA器件不被用作存取存储器4。而是将一对移位 寄存器用作移位寄存器单元51。移位寄存器单元51包括具有并行输出 和串行输入的第一移位寄存器50,和具有并行输入和串行输出的第二 移位寄存器52。第一移位寄存器50的串行输入54连接到查询表模块 30的输出36,第二移位寄存器的串行输出56连接到查询表模块30的 输入34。在本实施例中,每个移位寄存器50、 52都具有N个位置,其 中N是处理器2的数目。并行端口 58在存储器4的地址空间中寻址,并因此对程序员来说, 看起来就像普通的线路存储器。图6示出了利用单个移位寄存器60的相似配置。移位寄存器60 具有串行输入54和串行输出56,串行输出56连接到查询表模块的输 入34,串行输入54连接到查询表模块的输出36。移位寄存器60的内 容能够由存储器4并行寻址。将会理解,图5和6的实施例还可以与可替换串行模块而不是查 询表模块一起使用。这些实施例允许进行很多不同种类的串行处理,包括查询表操作。 例如,查询表操作可以是计算某些函数的高效方法,诸如sin()、 arctan()和sqrt(),因此该实施例允许有准备地将这些函数包括到并 行处理中使用的通常简单的处理器中。还可将该实施例用于实时的视 频处理。本领域技术人员将会意识到,这里所描述的实施例的很多变形都 是可以的。例如,本领域技术人员将会意识到,除了直接存储器存取 之外,还可以使用存取数据行的其它方法。处理单元的数目可以调整,且处理器元件的数目不必与移位寄存 器位置的数目相同。
权利要求
1、一种处理器阵列,包括多个处理器元件(2),用于并行处理数据行;可由多个处理器元件(2)并行存取的存储器(4);具有串行输入和输出(34,36)的串行模块(30),用于对在串行输入(34)输入的数据行实施处理操作以便修改该数据行,并且在串行输出(36)上输出结果作为修改的数据行。用于从处理器元件(2)和存储器(4)向串行输入(34)串行地提供数据行,以及在处理操作之后将修改的数据行从串行输出(36)返回到处理器元件(2)和存储器(4)的装置(39,51)。
2、 根据权利要求1所述的处理器阵列,其中串行模块(30)是查 询表模块,查询表操作、霍夫曼、算术或游程编码模块,或者允许有 条件地存取数据的条件存取模块。
3、 根据权利要求2所述的处理器阵列,其中串行模块(30)是查 询表模块(30),所述查询表模块(30)被配置为执行查询表操作作 为处理操作。
4、 根据前面任意一项权利要求所述的处理器阵列,其中该处理器 阵列被配置为并行地使用多个处理器元件(2),依次处理每个数据行; 当在处理器元件(2)中处理数据行期间,在串行模块(30)中对下一数据行执行处理操作,使得修改的数据行在处理器元件(2)需要该》务改的数据行之前返回。
5、 根据前面任意一项权利要求所述的处理器阵列,其中该处理器 阵列^L配置为通过下列方式处理多个数据行确定(40)用于查询表操作的第k个数据行; 指示(42)对所确定的第k个数据行进行处理操作; 处理对前面第(k-l)个数据行执行的处理操作的结杲(");以及 重复确定、指示和处理步骤(46, 48),直到所有数据行都已经被 处理。
6、 根据前面任意一项权利要求所述的处理器阵列,其中用于提供 数据行的装置(39)是直接存储器存取控制器(39),用于直接存取 存储器(4)中的数据行,并将处理操作的结果直接存储到存储器(4)中,其中直接存储器存取控制器(39)被连接到串行模块(30)的串 行输入(34),还被连接到串行模块(30)的串行输出(36),使得 串行模块(30)能够对串行输入的数据行执行处理操作,同时继续在 处理元件(2)中进行处理。
7、 根据前面任意一项权利要求所述的处理器阵列,其中用于提供 数据行的装置(39)包括至少包括一个移位寄存器(50,52,60 )的移 位寄存器单元(51),该移位寄存器单元(51)具有串行输出(56) 和串行输入(54),该串行输入(54)连接到处理表模块(30)的串 行输出(36),而该串行输出06)连接到串行模块(30)的串行输 入(34),其中存储器(4)能够并行地存取移位寄存器(51)中的数 据。
8、 根据前面任意一项权利要求所述的处理器阵列,其中该处理器 阵列是单指令集多数据处理器阵列。
9、 一种处理器阵列的操作方法,该处理器阵列具有多个处理器元 件(2)、能够由多个处理器元件(2)并行存取的存储器(4)和串行 模块(30),该方法包括利用多个处理器元件(2)处理数据行;当在处理器元件(2)中处理数据行期间,从处理元件(2)和存 储器(4)向串行模块串行地发送下一数据行;在串行模块(30)中对下一数据行执行处理操作,生成修改的下 一数据行;将修改的下一数据行从串行模块返回到处理元件(2)和存储器 (4 );并且重复所述步骤,利用处理器元件(2)依次处理每个数据行,同时 在串行模块中对下一数据行执行处理操作。
10、 根据权利要求9所述的方法,其中处理采取以下步骤 依次对每第k个数据行,确定(40)用于串行处理的第k个数据行;指示(42)对所确定的第k个数据行进行串行处理操作;处理对前面第(k-l)个数据行执行的串行处理操作的结果(");以及重复确定、指示和处理步骤(46,48 ),直到所有数据行都已经被处理。
11、 根据权利要求9或IO所述的方法,其中处理操作是查询表操 作,霍夫曼、算术或游程编码操作,或者允许有条件地存取数据的条 件存取操作。
12、 根据权利要求11所述的方法,其中处理操作是查询表操作。
13、 一种包括计算机程序代码装置的计算机程序产品,其中计算 机程序代码装置被配置为使得具有多个处理器元件(2)、能够由多个 处理器元件(2 )并行存取的存储器(4 )和查询表模块(30 )的处理 器阵列执行根据权利要求9-12中任意一项所述方法。
14、 根据权利要求13所述的计算机程序产品,其被记录在数据载 体上。
全文摘要
处理器阵列具有处理器元件(2)和连接到处理器元件(2)可由处理器元件(2)并行存取的存储器(4)。分离的串行模块(30)提供例如查询表模块(30)形式的附加功能。串行模块(3)处理串行输入到模块(30)的数据行。利用适当的编程步骤能够并行地在处理器元件(2)中继续进行处理。
文档编号G06F15/80GK101258480SQ200680032447
公开日2008年9月3日 申请日期2006年9月4日 优先权日2005年9月5日
发明者A·A·阿博, R·P·克莱霍斯特, V·乔德哈里 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1