管理位平面资源的方法和装置的制作方法

文档序号:6657070阅读:119来源:国知局
专利名称:管理位平面资源的方法和装置的制作方法
技术领域
本发明涉及SMID并行处理,尤其涉及位平面资源的分配。
背景技术
;
采用并行度最高的并行处理结构是遵循单指令多数据(SMID) 方法及使用最简单可行的处理元件(PE)结构 一个单比特运算处理 器。因为每个PE的处理输出能力很低,PE逻辑的筒单性支持用大量 的PE来构造处理器阵列。通过把这样大量的PE组合成SIMD处理 器阵列,能够获得非常高的处理输出。
位串行SIMD结构的一种变体是将PE连接成2维网格,每个PE 与阵列内其北面、南面、东面和西面的4个相邻PE形成联通。2维结 构适用于,但并不限于,处理具有2维结构的数据,例如图像像素数 据。

发明内容
本发明的一个方面提供了一种数字数据处理系统,其包括
* 一个处理元件阵列,其具有可寻址数据存储装置,适用于处 理位平面数据;
* 一个分配表,其包括用于存储物理地址的存储装置;
* 用于传送一个包含虛拟地址属性和尺寸属性的图像描述符的 装置,所述虛拟地址和尺寸规定了分配表位置的范围,其中存储了包 含一个图像的位平面的物理地址。
本发明的实施例的其他方面和优点的进一步细节将在后面结合 附图描述。


附图中
图l示出了一个示例性处理元件(PE)的示意图。图2是处理元件阵列的图示。
图3示出了构成处理元件组(PEG)的PE阵列的示意图。
图4是一个PEG的示意图。
图5是一个SIMD阵列处理器的示意图。
图6示出了分层次的阵列序列发生器的各级示意图。
图7示出了一个图像描述符的组成。
图8示出了一个位平面管理元件的图示。
图9示出了分配控制信号的表格。
图IO示出了分配表内的所分配的图像的图示。
图11示出了与分配相关的事件信号的表格。
图12示出了基本序列发生器产生的分配核查信号的表格。
具体实施例方式
本发明涉及数字数据的并行处理,尤其涉及数字图像像素数据。 尽管本文公开的实施例涉及了图像像素数据的特定情况,需要理解的
是可以用任意数字数据替换像素数据,并没有偏离本发明的范围和主
匕 曰。
本发明是并行处理器的一部分。该处理器包括一个处理元件 (PE)的阵列,序列控制逻辑,以及像素输入/输出逻辑。该结构是单 指令多数据(SIMD),其中单指令流控制所有PE的执行,并且所有 PE同时执行各个指令。PE阵列被称为SIMD阵列,整个并行处理器 被称为SIMD阵列处理器。
SIMD阵列是网格连接的处理元件阵列。每个处理元件(PE)包 含存储器、寄存器和处理1位数据的计算逻辑。在本发明的一个示例 性实施例中,阵列包括48行和64列PE。 SIMD阵列构成了 SIMD阵 列处理器逻辑的主要部分,并执行基本上所有的像素数据计算。
每个PE 100包括存储器、寄存器和处理1位数据的计算逻辑。 尤其参看图1,示例性的PE 100包含处理1位数据的PERAM 110, ALU 101,逻辑模块A 120, B 130以及寄存器C 140, D 150, NS 160, EW170, AL180, BL190和CM105。PE RAM 110对于每个PE是1个比特宽,存储由PE处理的像 素数据。多位像素值用RAM 110内存储的多个比特表示。通过依次 处理操作数像素的相应比特来执行多位操作数的运算。在这个示例性 实施例中,RAM110在每个周期中执行最多2次读取和1次写入。读 取和写入的组合是通过使用包括2组双端口 RAM (每组1个读取,1 个写入)的"分段"RAM来实现的。对于每个PE的全部256个比特, 这两组的深度分别是128位。只要源操作数是在相对的段中,分段 RAM方法允许每个周期中的2次读取和1次写入。另一个实施例中, 一个256位的3端口 RAM提供了相同的访问,而不用考虑源操作数 的设置。其他实施例也可以采用其他多重访问方法(例如,1次读取 和l次写入),或者在每个周期中提供单次读取或写入访问。
如图2所示,一个示例性的PE阵列1000包括48行和64列PE。 像素序号是从该阵列的西北角的0, 0到东南角的47, 63。
处理过程中,阵列的所有PE同时执行每个操作步骤。每次读取 或写入一个操作比特,在PE寄存器之间每移动一个比特,阵列的每 个PE同时执行每个ALU输出。在说明这种操作模式时,总体考虑相 应的图像比特是比较有利的。相应图像比特的阵列大小的集合被称为 一个"位平面"。根据(串行)指令流的观点,SIMD阵列操作被模块 化为位平面操作。
这个示例性实施例中的每个指令包含指引流程或处理位平面的 指令。单指令可包含多个指令字段,l个字段用于各个寄存器资源,1 个字段用于PE RAM写入端口 ,并且一个附加字段用于ALU 101的 控制处理。这种方法是阵列指令的常规微指令实现方式,为单个处理 周期提供了阵列控制。
示例性的PE阵列1000在实现中是分层次的,PE被分成PE组 (PEG )。每个PEG 200包含64个PE,表示一个8x8阵列区段。 因此48 x 64 PE阵列1000由6行PEG实现,每行有8个PEG。每个 PEG200被耦合到其相邻的PEG,使得在PEG边界处形成了 PE至 PE的联通。这种耦合是无缝的,因此对于位平面的操作,PEG分区是不可见的。需要注意的是这些阵列尺寸仅是示例性的,使用其他尺 寸的阵列也没有偏离本发明的范围。
示例性的PEG 200包括一个64位宽的多重访问PE RAM 210, PEG控制逻辑230,以及构成PE阵列202中的64个PE的寄存器和 计算逻辑。PERAM210的每个位片被耦合到64个PE中的一个上, 为每个PE提供一个有效1位宽的PE RAM 110。
每个示例性的PEG除了与北面、南面、东面和西面的相邻PEG 相联通外,其还包括一个8比特输入和输出路径,用于将像素数据移 入和移出PE阵列202。 CM寄存器平面在输入和输出过程中处理位平 面数据。数据被移入和移出位平面形式的PE阵列1000。
上述PE阵列提供了执行像素数据运算的计算逻辑。为了执行这 些操作,PE阵列需要一个指令源,支持像素数据移入和移出阵列。
图5示出了一个示例性的SIMD阵列处理器2000。 SIMD阵列处 理器2000包括阵列序列发生器300,用于向PE阵列1000提供指令流。 还提供了 一个像素I/O单元400,用于控制像素数据移入和移出PE阵 列1000。总的来说,这些单元包含一个SIMD阵列处理器2000。
SIMD阵列处理器2000可用于执行阵列大小的图像部分的算法。 此处理器可以在一个集成电路设备上实现,或者作为单个设备上的一 个较大系统的一部分。另一种实施方式中,SIMD阵列处理器2000是 系统控制处理器(本文中简称为CPU)的从属设备。SIMD阵列处理 器2000和CPU之间的接口通过CPU为示例性SIMD阵列处理器2000 提供初始化和控制。
像素I/O单元400通过称为"Img Bus,,的图像总线控制像素数据 在PE阵列1000和外部存储器之间的移动。像素数据的移动和PE阵 列计算同时进行,从而提供了更高的像素数据处理的吞吐量。像素I/O 单元400执行图像数据在像素格式和位平面格式之间的转换。Img Bus 数据是像素格式的,PE阵列数据是位平面格式的,这两种格式之间的 数据转换由像素I/O单元400执行,并作为I/O处理的一部分。
SIMD阵列处理器2000处理称作"子帧,,的阵列大小的部分中的图像数据。典型的情况下,待处理的图像帧比PE阵列1000的尺寸要 大得多。图像帧的处理是通过依次处理子帧图像部分来实现的,直到 图像帧被全部处理。
对PE阵列1000处理子帧的控制是通过分层次设置序列发生器 单元来提供的(图6)。这些单元包括程序序列发生器330,其对应用 程序排序,并向基本序列发生器发生340分配图像操作(也称为"基 元"),基本序列发生器340对每个基本操作进行排序,向覆盖(overlay) 单元350分配单个位操作,覆盖单元350把位操作微指令字段安排成 适当的管道级,从而解决了任何指令沖突。覆盖单元350的输出是微 指令流,其对于PE阵列提供时钟到时钟的控制,用于执行子帧操作。
程序序列发生器330实现了一个看起来很常规的机器语言指令 集,其提供SIMD内核的序列控制和各种支持操作,并向基本序列发 生器340分配"基本操作"形式的指令。基本操作是对于连续存储器地 址序列重复的特定微指令(或一个微指令和适当的派生物),即对于 各个操作数比特(平面)重复。基本阵列操作,例如一个图像ADD, 可以用单个基本操作来实现。
基本模型将一个图像操作数定义为位平面集合,它从起始地址开
始,在PERAM内从起始平面开始延伸一定数量的位平面。包含图像 的位平面数量被称为图像"尺寸"。每个图像还具有 一个"符号,,属性, 其表示各个像素值的位模式应被解释为有符号数据(符号=1)还是无 符号数据(符号=0)。这些属性总称为图7中的"图像描述符"。需要 注意的是这些实施例中给出的尺寸只是示例性的,可以采用任何不同 的尺寸来缩放,这并没有偏离本发明的范围。
图像描述符被存储(用于处理)在程序序列发生器330的寄存器 组内,并通过程序指令内的寄存器号进行索引。在执行图像操作数的 运算之前,可能需要向处理器寄存器加载操作数描述符。程序序列发 生器330通过提供3个图像操作数(2个源操作数,l个目标操作数) 的描述符信息以及PE阵列1000所使用的一个24位基本指令字向基 本序列发生器340分配基本操作。基本序列发生器340的基本操作序列用两个源操作数图像的相加 来表示,其结果被存储在一个目标操作数图像内。3个操作数中的每 个操作数用一个图像描述符表示。第一个位操作向每个源操作数添加 比特0,把结果存储在目标操作数的比特0内。从相应图像描述符的 基地址值导出每个图像操作数位平面的地址。基本序列发生器340向 覆盖单元350分配一个位操作,其包括3个操作数位平面地址和24 位基本指令字。当基本序列发生器340工作时,各个描述符的地址字 段被递增,依次表示下一位(比特1等)的操作数地址。当已经处理 了和目标尺寸相对应的位个数之后,结束运算序列。当目标尺寸超过 了源操作数的尺寸时,源描述符的符号属性被用于确定对于该源操作 数是符号扩展还是零填充。
覆盖单元350处理位操作,产生将要由阵列执行的PE微指令字。 位操作包括必须安排在适当的管道间隙内的微指令。覆盖单元350执 行已安排的任务,并且解决内部微指令沖突。PE微指令从覆盖单元 350被分配到PE阵列1000的PEG用于执行。
对于编程者来说,图像被模块化为PE RAM内的位平面连续序 列。图像描述符600提供一个基础地址和一个表示图像从基地址向上 延伸并占用了连续地址的尺寸属性。在示例性的实施例中,只给出了 部分图像。
图像在算法执行过程中不停来往,因此很难设置不采用无用集合 的最大PE RAM。编程者和软件工具编写者会遇到的困难是为了将分 散的位平面收集到可用的图像模块中,PERAM使用效率不高(由于 可用存储器的不可使用的小模块的增加),或者执行时间发生损失。 由于PERAM和执行时间都是SIMD芯片编程者的重点考虑方面,不 具有无用集合的支持最优PE RAM的装置被结合到本发明的SIMD芯 片中。
图像描述符600包括一个9位基地址元件来描述图像的基地址。 基地址值跨过512个位平面的空间,低256位是PERAM部分0,高 256位是部分1。这是一个虛拟空间,因为示例性实施例中的可用物理存储器对于各个部分是128个PERAM平面。在此虚拟空间内,图像 用连续的位平面模块表示。虚拟空间的各个部分在给定时间可以增加 到128个位置。
PERAM平面根据需求被分配到图像。在给定的时刻,图像应该 被分配到表示图像像素的数值范围所需的最小数量的位平面。操作目 标图像通常需要调整尺寸来容纳操作结果。这种调整是通过指定目标 操作数的尺寸控制值"Newsize (新尺寸)"来实现的。源图像操作数也 称为"Free,d",即整体重新分配。稍后本发明将详细分配和重新分配 控制。
虛拟空间通过查询表管理,即图8中的分配表700。在这个示例 性实施例中,分配表700是一个512深的多端口 RAM,其为每个9 比特图像描述符基地址值提供物理PE RAM地址的查询。位平面分配 到图像是通过从"比特池,,中读取物理地址,并将其写入一个分配表来 完成的。为了重新分配位平面,该地址从分配表700中读出,并被写 入比特池。
共有两个比特池730和740,每个区段一个。在这个特定实施例 中,每个比特池是一个128深的FIFO,其在任意给定时间包含所有 可以用于分配的PERAM地址。
如图8所示, 一个512位的记录板寄存器,划分成记录板750和 记录板760,用于表示哪个分配表位置在增长。记录板被基本序列发 生器340用来加强分配和重新分配的顺序相关性,以及检测分配误差 条件。与分配相关的误差被一个事件寄存器跟踪,向编程者提供一个 报告。
在执行应用程序之前,分配逻辑应该处在一个"清除,,状态。比特 池应该用256PE RAM地址来初始化,记录板应该全都是0。当这两 个条件都满足时,就存在了"清除"状态。
指定了 一个阵列操作的程序序列发生器指令确定了 2个源操作数 和l个目标操作数。源操作数可以是或者不是图像操作数,但阵列操 作的目标操作数必须是一个图像操作数。除了操作数,指令还规定了如图9所示的分配控制。
指令的分配控制字段允许编程者通过Newsize直接确定执行操作 所得到的目标操作数的尺寸。Newsize会使得目标操作数变大(递增 分配)、变小(递增重新分配)或者保持与当前目标操作数的相同尺 寸。
Freel和Free2控制允许编程者指定要重新分配的第一个源操作 数(Free 1有效)和/或要重新分配的第二个源操作数(Free 2有效)。 当Free控制被用于执行阵列操作之后,该控制会导致重新分配全部相 应的操作图像。
图像存储器的管理直接受编程者的控制。编程者确定用于管理一 个图像的分配表700内的地址跨度。编程者确定何时和如何增加虚拟 地址空间区域。编程者通过生成适当的图像描述符数值来表示图像, 并通过使用分配控制字段用于图像操作。
为了更好地理解本发明的其他细节,使用下列词汇表 Free 1和Free 2 -用于Srcl和Src2操作数的重新分配控制信号 Srcl和Src2-"源l"和"源2", 用于阵列操作的两个源操作数, 或输入
Dest-用于阵列操作的"目标"操作数,或输出
Zend -目标基地址+Newsize,在乘法序列过程中,确定何时停 止生成位操作和分配位平面
Alloc.oldsize一crt -递减计数器,在基本序列开始时加载初始 Dest操作数尺寸值
Dest一in -从程序序列发生器传到基本序列发生器的信号,其传 送Dest操作数图像描述符
Alloc—in -从程序序列发生器传到基本序列发生器的信号,其传 送Free 1 , Free 2和Newsize值
Alloc—en—reg-保持分配使能信号的寄存器
Wadr_out-从程序序列发生器传到覆盖单元的信号,其传送位平 面操作的写地址Wadr—sel -选择Wadr—out值的源的选择信号
Deall_en_reg-保存重新分配使能信号的寄存器
Alloc.deall_wrO或Alloc.deall_wrl -把位平面地址分别写入(推 入)比特池0和比特池1的写选通
Aadr - Bit—Op—Regl的PE RAM地址字段,在序列过程中依次 提供Srcl操作数虛拟地址
Badr - Bit—Op—Regl的PE RAM地址字段,在序列过程中依次 提供Src2操作数虛拟地址
Wadr - Bit—Op—Regl和Bit—Op—Reg2的PE RAM地址字段,在 序列过程中依次提供Dest操作数虚拟地址
Aadr一out -从基本序列发生器传到覆盖单元的信号,其提供位 操作输出的Srcl操作数物理地址分量给覆盖单元
Badr一out -从基本序列发生器传到覆盖单元的信号,其提供位 操作输出的Src2操作数物理地址分量给覆盖单元
Wadr—out-从基本序列发生器传到覆盖单元的信号,其提供位 操作输出的Dest操作数物理地址分量给覆盖单元
Free—1—reg - Srcl操作数的重新分配任务描述符;该名称的字段 被同时包括在基本寄存器和分配任务寄存器内
Free—2一reg - Src2操作数的重新分配任务描述符;该名称的字段 被同时包括在基本寄存器和分配任务寄存器内
Free_3—reg - Dest操作数的重新分配任务描述符;该名称的字段 被同时包括在基本寄存器和分配任务寄存器内
图10给出了图像存储器的一个实例。该实例中,图像A和B是 分别存储在字段0和字段1中的8比特图像。这两个图像都被完全增 加,如阴影表示。假设A是无符号,B有符号,该描述符应该是
A= ( 0《15 ) |(8《9)|0 = 0 x 1000
B= (1《15 ) |(8《9)|256 = 0 x 9100
现在,假设A和B被相加以生成图像C,必须为C选择某个位 置。必须有足够大的连续空间来容纳C的中间值,最好足够大以能够容纳其有效跨距内的所有数值c。所示实施例中,编程者选择一个未 使用的分配表位置模块给C使用,从地址10开始,并扩展要由c所 4吏用的IO个比特。
关于这一点,c是一个新图像,因此没有增加(即没有给c分配
位平面)。假设C是一个有符号的图像,C的描述符是 C- (1 15 ) |(0 9)1|0 = 0 x 800a
对于这个实例,上述描述符A、 B和C是在预备操作中置于寄存 器组331内的值。现在编程人员必须基于操作结果而决定C的尺寸。 在这个实例中,A和B有不同的信号属性,而尺寸都是8位。
假定,操作结果是10位,从而容纳像素A和B之间所有可能的 和。如果信号属性相同,则结果尺寸很可能是9位。然而,编程人员 基于他/她对操作结果的认识,可能选择8位结果,或者简单地保持结 果的最低8位。通过Newsize控制,程序人员能够规定C的结果尺寸。
假设要得到的是10位结果,并且A和B没有重新分配(释放), 这个操作的分配控制应该是
分配控制=(10<<2)(0 1)|0=(^28
这个操作的结果是C图像增加了 IO个位平面。程序人员通过把 该操作的Newsize设定为10来确定该结果。程序序列发生器330根据 新的尺寸属性来自动更新C的描述符作为阵列操作的结果,因此现在 C描述符的值为
C=(l 15)|(10 9)|10=0x940a
由此,编程人员为每个阵列操作调整目标操作数的尺寸,使得该 图像是存储操作结果的像素值所需要的最小尺寸。通过用Newsize来 更新目标操作数寄存器,编程人员不需要由于描述符的数值变化而重 新载入描述符。
在这个实例中,C的初始尺寸是0。在许多情况下, 一个目标操 作数将有一个非零尺寸,并且将根据阵列操作来调整尺寸。在所有情 况下,Newsize控制确定操作结果的尺寸,并且目标操作数的尺寸属 性(在寄存器组331中)被Newsize值所替代。如果Newsize大于目标值,则发生一个增加分配,其中分配位平面以增加图像的尺寸。如
果Newsize小于目标值,则发生一个递增重新分配,其中重新分配位 平面以减少图像的尺寸。
当不再需要一个图像时,它必须被重新分配。通常使用Freel或 Free2分配控制来完成重新分配。 一个释放控制被施加于访问图像的 最后操作。 一个释放控制只被施加于源操作数。这意味着图像的最后 访问被作为源操作数,否则将产生一个值(写入)并且不会被使用(读 取)。使用释放控制也可有助于确保在第一时机进行重新分配,从而 使得重新分配位平面尽快可用。
当应用 一个释放控制时,编程人员必须确保采用了 一个完整的描 述符。例如, 一个图像的最后访问可以是该图像的一部分而并非是整 个图像。如果释放控制被施加于一个图像部分,则部分图像会保持被 分配。 一种解决方案是将该释放控制延迟成一个分离控制,它对整个 图像进行释放控制。另 一种解决方案通过使用操作来释放图像部分, 然后产生一个表示其余位平面的描述符,并且对图像的该部分进行释 放操作。
有多种方法来破坏图像分配逻辑的状态。再来看图10中的实例, 可以看出图像C没有被增加,但是却使用了一个尺寸为IO位的无效 描述符。在这种情况下,Newsize和尺寸相匹配,因此没有出现分配 或重新分配。在这种情况下,在分配表700中将使用10到19位之间 的物理地址来执行操作。如果这些地址属于其它图像,该位平面数据 将被破坏。如果这些地址全部在一个比特池中,并且图像C从来没有 被重新分配,那么编程人员将会侥幸避免此失误。访问没有增加的分 配表地址将不会,皮SIMD内核所标记。
继续该实例,如果编程人员随后重新分配图像C,则会错误地发 送地址到比特池。这会使得在比特池中复制值,导致图像间串扰。这 也可能会导致比特池的溢出,因为有额外地址被写入。并且,未增加 分配表位置的重新分配会被检测到,并被标记为一个重新分配的冲突。
如果一个图像不止一次被释放,将产生一个重新分配冲突并且由于额外地址被写入比特池而导致最终比特池溢出。如果不能释放一个 图像,由于数位没有被替换而连续分配,将最终导致数据库下溢。如 果在没有图像重新分配的情况下再次使用该图像的分配表空间(也就 是新的位平面被分配到相同的空间),将产生一个分配沖突事件。
可以列举导致错误发生的其它情况。简而言之,编程人员必须确
保图像描述符不会与分配表700的实际状态相沖突。他/她必须确定分 配表入口的增加先于作为源操作数被使用,以及操作表入口在最终使 用后^f皮重新分配。
一个图像属于一个区段或另一个区段;在示例性实施例中图像没 有跨过区段的边界。图像描述符地址属性的高位(位8)表明图像相 对于分配表700和PERAM的区段。分配表区段被巻绕,使得超过区 段末端的一个图像块被巻绕回相同区段的开始位置处。
因为比特池的初始内容为编程人员所控制,SIMD内核可以具有 一定程度的容错量。尤其,如果一个单个PERAM平面发生错误,可 以通过从所有比特池中去掉相应的位平面地址来将其分离。这留给编 程人员更少的位平面,这可以通过在所涉及的应用程序或软件工具来 完成。
如果基本指令并未确定写入到PERAM,则不会执行递增分配和 重新分配。换句话说,如果目标操作数没有被写入,在示例性实施例 中将不会发生分配和重新分配。
在示例性实施例中,物理上存在256位平面的PE RAM用来存 储有效图像。这些256位平面被分成128位平面区段。每个区段的128 位平面由128个地址来表示。可用于分配的地址置驻留在FIFO比特 池中。有2个比特池,即比特池0 (730)和比特池1 (740),每个 PERAM区段使用一个比特池。位平面分配给图像包括从适当的比特 池中读取位平面。为了进行重新分配,位平面地址被写回到比特池中。
通过查询分配表700,将图像描述符位平面地址映射到物理PE RAM地址。分配表700是一个512位深、8位宽的5端口 RAM ( 4 个读取端口, l个写入端口)。图像描述符的基地址和尺寸属性描述了分配表700中的分配范围,该分配表包含图4象操作数的PERAM地 址。由于位平面被分配给一个图像,它们被写入到分配表700中的相 应位置。由于位平面被重新分配,它们被从分配表700中读出并写回 到适当的比特池中。因此,在位平面的分配和重新分配过程中,使用 分配表的读取端口和写入端口中之一。其它三个读取端口被用于在操 作过程中查询记录板750、记录板760和目标操作数的PE RAM地址。
在分配表700中,区段0 ( 710 )提供PE RAM区段0的地址映 射,而区段1 (720)提供PE RAM区段1的映射。图像不能跨越区 段;每个图像被完全存储在一个区段内。
分配表700所包含的位置数量是位平面数量的两倍。这使得分配 表位置中可以使用"孔洞",而不会浪费物理位平面地址。
应该指出,在执行过程中比特池中的位平面地址混杂会导致地址 序列内的大量混乱。因此,分配给一个图像的物理地址可以是PE RAM 中位平面的一个近似随机集合。这点不会产生影响,因为地址是从分 配表700中依次读取的(也就是"虛拟"地址序列)。
序列操作过程中,基本寄存器342的Srcl、 Src2和Dest操作数 地址字段被提供到Bit Opl寄存器343的Aadr、 Badr和Wadr字段。 Aadr、 Badr和Wadr字段提供在分配表700中3个操作数的查询地 址。从分配表700中读取的物理地址包括输出给覆盖单元500的 Aadr—out、Badr—out和Wadr—out。由于分配表700是一个同步RAM, 此读取提供了与其余位操作的地址数据同步的单个时钟延迟,该延迟 分段通过Bit Op2寄存器344。
启动时,比特池必须用物理位平面地址进行初始化。比特池0 730 必须加栽地址0 ...127,比特池1 740必须加栽地址128...255。
只有当图像是目标操作数时,才执行对图像的位平面分配。基本 序列发生器340接收一个目标操作数的当前尺寸(Destjn[14:9)和 一个新尺寸(Alloc—in[7:2,也就是Newsize)。如果Newsize的数值大 于当前尺寸,就为每个超过当前尺寸的位平面进行位平面分配,从而 将目标图像的尺寸调整为一个新的尺寸值。值被载入到基本寄存 器Dest一size字段以用于对基本序列进行排序。Dest一in尺寸值被载入 到Alloc.oldsize一cnt计数器。在对基本序列进行排序的过程中, Dest_size和Alloc.oldsize—cnt值被递减计数。 一旦Alloc.oldsizecnt 值达到0 ,便开始位平面分配。而Dest—size继续递减计数(并且 Alloc.oldsize_cnt是0 ),位平面被分配到目标操作数图像。
如果是一个乘法操作,由于操作是多通道的,分配将更加复杂。 基本寄存器342的Zend字段跟踪位平面的分配到乘法目标操作数。 每次当对目标操作数的写入超过Zend值时,就执行一次分配并且递 增Zend。
基本序列发生器340通过设定Alloc—en_reg来请求分配。寄存器 用Bit Opl寄存器343进行分段。响应有效的Alloc—en_reg,从适当 的比特池中读取一个位平面地址,并且将位平面地址写入到分配表 700内由Bit Opl寄存器343的Wadr字段给出的地址上。
如果位操作没有发生位平面分配,则从分配表700中读取 Wadr_out值。然而,如果出现分配,则从比特池中产生一个新的位 平面地址而不是分配表输出,并将其提供给Wadr_out。从比特池中 得到的新的位平面被载入到Bit—pool_wadr寄存器,使得与Bit Op2 寄存器命令同步提供。对应于Alloc—en_reg值来设定Bit Op2寄存器 344的一个字段Wadr_sel,从而在Bit—pool_wadr值和分配表值之间 进行适当选择,用来计算Wadr一out。
对一个操作的任何操作数都可以重新分配位平面。分配控制900 包括2个单个的位字段,其中的每个字段都指示源操作数的"释放,,或 重新分配。此外,如果Newsize值小于Dest_in尺寸值,则表示进行 递增重新分配。 一个源操作数的释放意味着由该源操作数描述符表示 的所有位平面的重新分配。然而,目标操作数位平面的递增重新分配 意味着位平面的重新分配超过了 Newsize值。
位平面的重新分配与基本操作同时进行,尽管与分配不同,重新 分配并没有作为基本操作的一部分。 一个分离的重新分配序列发生器为重新分配任务进行排序。重新分配任务被写入一个深度为8位的 FIFO,称为重新分配队列。当该重新分配序列发生器完成了一个重新 分配任务,便从该重新分配队列中读取出一个新的任务。
排列重新分配任务的过程从加栽基本寄存器(342)Free一l一reg、 Free_2—reg和Free—3—reg字段开始。将Srcl和Src2地址和尺寸字段 (低15位)加栽到Free_l_reg、 Free—2—reg寄存器。当相应的分配 控制输入字段(Freel, Free2)有效时,上述每个寄存器被设置为高 位。只有设定为高位时,每一个寄存器都标记为重新分配。Free_3—reg 被设定为代表执行递增重新分配的任务值。如果表示重新分配,则更 高位被设定,地址字段被i殳定为Dest—in地址值与Newsize值的和, 并且尺寸字段被设定为Dest—in地址值与Newsize值的差。
基本寄存器Free—1/2/3—reg字段被写入到一个分配任务寄存器的 相应Free_l/2/3—reg字段。这个载入是一同进行的,即所有3个寄存 器被同时加载。只有在当前Alloc Free—l/2/3_reg任务全部已经排队的 情况下,才允许把新任务从基本寄存器342载入到分配任务寄存器(分 配逻辑341)。并且,直到已经生成了基本操作的第一位操作时(防 止出现不依照顺序的重新分配),基本存储器Free_l/2/3—reg的任务 才可以被载入到分配任务存储器。
从Alloc Free寄存器将重新分配任务写入到重新分配队列。对于 每个具有有效的最高位(MSB )的空闲寄存器,向队列写入一个任务。 因为有3个空闲寄存器,这个过程要进行3个周期才能完成。当任务 被写入队列时,被读出任务的寄存器的MSB位被清除,以表示寄存 器内不再有一个有效的任务。
如果重新分配队列已满,则保持任务的顺序,直到队列不再排满 为止。如果需要,为了允许完成排序,将保持基本任务的排序,以使 得基本寄存器Free字段值可以被传输到Alloc Free寄存器。
重新分配任务用重新分配序列发生器进行排序。 一个重新分配任 务由基地址和尺寸来表示。基地址递加,同时尺寸递减。对于每次计 数,进行一次重新分配。通过设置Dell一en一reg 以及向Dell—addr_reg载入用于重新分配 的位平面地址,来请求一个位平面重新分配。 一旦(重新分配序列发 生器的)尺寸计数器达到1,便从一个可用的重新分配队列中读取出 一个新的重新分配任务。如果没有有效的重新分配任务,则不会发生 重新分配。
一个有效的Dell —en_reg使得读取Dell—addr一reg所提供的地址 处的分配表700。才艮据该区段,Alloc.deall—wrO或Alloc.deall—wrl被 设置为在下一周期内将分配表读取数据推入适当的FIFO (比特池0 (730 )或比特池1 (740))。
分配和重新分配过程的不同之处在于,分配任务作为操作的一部 分来执行,而重新分配任务被排序,从而具有独立序列。由于重新分 配任务的排序,可以在顺序之外执行分配任务。也就是说,位平面的 重新分配可以由一个操作进行排序,当下一次操作试图分配相同的位 平面时,其仍然保持在队列内。从编程人员的角度来说,位平面是可 用的,但在执行时它们有时会不能用。
对于编程人员或软件撰写者来说,进行分配和重新分配能力分析 以判断分配任务能何时发生会是一个困难并难以接受的负担。由于必 须知道程序内每个有效操作在程序之外的执行效果,独立程序内的码 序列封装几乎是不可行的。
强制执行分配和重新分配指令的装置被包含在基本定序器340 中。该指令执行装置是包含由512个寄存器组成的阵列的记录板,每 个寄存器对应一个分配表位置。当发生一个分配时,设置对应于分配 表地址的记录板寄存器。当发生重新分配时,记录板寄存器被清除。
如果为一个分配表地址请求一个分配,并设置了相应的记录板存 储器,如果有重新分配任务等待处理,就存在一个顺序之外的分配状 态。对应这个状态,保持基本定序器340,以允许执行该待处理的重 新分配任务,然后在进行分配操作时执行此重新分配任务。如果记录 板仍然表示顺序之外的分配没有待处理的重新分配任务,或者如果记 录板表示顺序之外的重新分配任务,则表示有一个分配错误。在这种情况下,判定事件信号并且执行操作。
基本序列发生器分配逻辑341不能防止上述类型的错误,但是至 少它们能够检测出来这些错误,并在事件寄存器中作为被记录的事件 进行传递。基本定序器340记录7个事件,只有一个事件和分配有关。 图ll对这些事件进行了描述。
除了上述提到的情况,会产生2个核查信号。每个核查信号适用 于一个区段,并且当相应的比特池已满并且相应的半个记录板被清除 (没有被分配的位)时,该核查信号有效。这些信号通过事件寄存器 传送到程序序列发生器300,此时它们是可用的。核查信号为编程人 员提供了完整性检查,他/她在应用程序中期望进行此检查的停顿点处 检查分配被"清除"。与其它事件信号不同,该核查信号在程序序列发 生器的事件寄存器中不是"停滞,,的,即它们被持续更新, 一旦设定后 不必保持判定结果。
权利要求
1、一种数字处理系统,包括a、一个处理元件阵列,具有可寻址数据存储装置,适于处理位平面数据;b、一个包含存储物理地址的存储装置的分配表;c、用于传递包含一个虚拟地址属性和一个尺寸属性的图像描述符的装置,所述虚拟地址和尺寸指定了分配表的位置范围,其中存储了包含一个图像的位平面的物理地址。
2、 如权利要求l所述的系统,其中分配表中的存储位置数量超 过包含有处理阵列的位平面数量。
3、 如权利要求l所述的系统,其中所述图像描述符还包括一个 符号属性,以表示该图像是否被作为有符号的数据被处理。
4、 如权利要求l所述的系统,还包括一个用于控制处理器阵列 内的位平面处理的序列发生器,所述序列发生器响应于至少一个图像 描述符产生至少一个微指令序列,所述微指令包含响应于分配表中存 储的物理地址而生成的至少一个位平面地址。
5、 如权利要求l所述的系统,其中分配表被配置为提供多重同 步访问。
6、 如权利要求1所述的系统,其中所述阵列被分割为多个区段, 每个区段包含多个位平面,并且其中分配表被分割为相应的区段,每 个分配表区段包括用于存储属于一个阵列区段的物理地址的存储装 置。
7、 如权利要求l所述的系统,还提供了用于向一个图像分配位 平面的第一分配装置,所述第一分配装置包括表示可用位平面的物理 地址库,其中所述分配包括从该库中读取物理地址以及将该物理地址 写入分配表。
8、 如权利要求7所述的系统,其中所述库是一个FIFO存储器。
9、 如权利要求7所述的系统,其中处理阵列被分割为多个区段,每个区段包含多个位平面,并且其中该库被分割为相应的区段,每个 库区段包括用于存储一个阵列区段的物理地址的存储装置。
10、 如权利要求7所述的系统,还包括用于向一个未增加的图 像分配位平面的第二分配装置,所述图像没有被分配位平面,并且所 述第二分配装置响应于尺寸属性为0的图像描述符并且进一步响应于 被称为"新尺寸"的尺寸控制信号进行分配,所述新尺寸决定了要分配 的位平面数量。
11、 如权利要求7所述的系统,还包括用于向一个部分增加的 图像分配位平面的第三分配装置,所述图像具有分配给它的多个位平 面,并且所述第三分配装置响应于一个图像描述符并且进一步响应于 被称为"新尺寸,,的尺寸控制信号来进行分配,以及分配额外数量的位 平面,使图像增加了新尺寸数量的位平面。
12、 如权利要求7所述的系统,还包括一个记录板,所述记录 板包含与分配表位置数量相等的存储器组成的阵列,其中每个存储器 适用于表示相应的分配表位置是否被增加了 。
13、 如权利要求12所述的系统,还包括检测装置,用于检测 试图对已增加的分配表位置进行分配时的条件,并产生一个表示所述 条件的信号,还进一步包括用于响应该信号来禁止分配、直到不再能 检测到所述条件为止的响应装置。
14、 如权利要求12所述的系统,还包括检测装置,用于检测 试图对已增加的分配表位置进行分配时的条件,并产生一个表示所述 条件的信号,还进一步包括用于响应该信号来设定事件存储器的装置。
15、 如权利要求12所述的系统,其中分配表被划分为多个区 段,每个区段包含多个存储位置,并且其中记录板被分割为相应的区 段,每个记录板区段包含一个由适用于表示分配表相应区段内的位置 分配状态的存储器组成的阵列。
16、 如权利要求1所述的系统,还提供了用于重新分配图像位 平面的第一重新分配装置,所述第一重新分配装置包含表示可用位平 面的一个物理地址库,并且其中所述重新分配包括从分配表中读取物理地址并将该物理地址写入该库中。
17、 如权利要求16所述的系统,其中所述库是一个FIFO存储器o
18、 如权利要求16所述的系统,其中处理阵列被划分为多个 区段,每个区段包含多个位平面,并且其中该库被划分为相应的区段, 每个库区段包含用于存储一个阵列区段的物理地址的存储装置。
19、 如权利要求16所述的系统,还包括用于向一个增加的图 像重新分配位平面的第二重新分配装置,所述第二重新分配装置响应 于一个图像描述符并进一步响应于一个释放控制信号执行重新分配, 所述释放控制信号表示该图像的所有位平面都将被重新分配。
20、 如权利要求16所述的系统,还包括用于向一个增加的图 像重新分配位平面的第三重新分配装置,所述第三重新分配装置响应 于一个图像描述符并进一步响应于被称为"新尺寸"的尺寸控制信号执 行重新分配,并且重新分配多个位平面,使得图像增加了新尺寸数量 的位平面。
21、 如权利要求16所述的系统,还包括一个记录板,所述记 录板包括与分配表位置数量相等的存储器组成的阵列,其中每个存储 器适用于表示相应的分配表位置是否被增加了 。
22、 如权利要求21的系统,还包括检测装置,用于检测试图 对未增加的分配表位置进行重新分配时的状态,并产生一个表示所述 状态的信号,还进一步包括用于响应该信号来禁止重新分配、直到不 再能检测到所述状态为止的响应装置。
23、 如权利要求21的系统,还包括检测装置,用于检测试图 对未增加的分配表位置进行重新分配时的状态,并产生一个表示所述 状态的信号,还进一步包括用于响应该信号来设定事件存储器的装置。
24、 如权利要求21的系统,其中分配表被划分为多个区段, 每个区段包含多个存储位置,并且其中该记录板被划分为相应的区段, 每个记录板区段包含一个由适用于表示分配表相应区段内的位置分配 状态的存储器组成的阵列。
25、 如权利要求1所述的系统,还包括用于处理指令的处理装 置,所述指令包括至少一个图像描述符,并且还包括一个被称为"新尺 寸,,的尺寸控制,以决定作为处理该指令的结果而使图像增加的位平面 的数量。
26、 如权利要求25所述的系统,还包括用于用图像描述符的 所存储的拷贝中的新尺寸值来替代尺寸属性的替代装置。
27、 如权利要求1所述的系统,还包括用于处理指令的处理装 置,所述指令包括至少一个图像描述符,并且还包括至少一个释放控 制,来决定作为处理该指令的结果而使图像增加的所有位平面都被重 新分配。
全文摘要
管理位平面资源的系统和方法。因为SIMD结构内的处理元件(PE)存储器的缺乏,确保其使用效率最优是非常重要的。本发明公开了一种实时管理PE存储器的方法,从而能够获得接近100%的使用效率。所作用的方法允许在单个位平面增量内分配和重新分配存储器。实时分配和重新分配连续发生,因此不能够保证PE存储器的邻接模块的可用性。本发明所采用的方法可以使用分散的位平面,而不必花费执行时间来执行“无用集合”。
文档编号G06K9/00GK101432760SQ200580034470
公开日2009年5月13日 申请日期2005年8月8日 优先权日2004年8月31日
发明者伍德罗·L·梅克 申请人:硅奥普迪思公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1