CN101443809A - 可编程数据处理电路 - Google Patents
可编程数据处理电路 Download PDFInfo
- Publication number
- CN101443809A CN101443809A CNA200780016908XA CN200780016908A CN101443809A CN 101443809 A CN101443809 A CN 101443809A CN A200780016908X A CNA200780016908X A CN A200780016908XA CN 200780016908 A CN200780016908 A CN 200780016908A CN 101443809 A CN101443809 A CN 101443809A
- Authority
- CN
- China
- Prior art keywords
- memory
- instruction
- parameter values
- value
- circuit
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
Abstract
一种可编程数据处理电路包括用于存储像素值,或更一般而言存储作为信号中位置的函数的数据值的存储器。该可编程数据处理电路支持包括所选择的参数值集合的指示的指令,该指示指示如何多个数据值必须被安排用于从存储器并行输出。指示不同参数值集合的指令能够被相互混合地执行。可编程数据处理电路通过从参数存储电路(246)检索选择的参数值集合,和至少部分地根据选择的参数值集合在存储器电路(20)的存储器端口(21)和数据端口(26)之间控制切换电路(22)从而响应于这种类型的指令。
Description
技术领域
本发明涉及具有存储位置相关数据值的存储器的可编程数据处理电路,所述数据值例如是二维图像中的像素值,该像素值是像素位置的函数。本发明还涉及处理位置相关数据值的方法以及处理位置相关数据值的计算机程序产品。
背景技术
图像处理通常涉及使用在存储器中存储的像素值。不同像素位置的像素值被存储在不同的存储器位置。能够使用像素位置到存储器位置的各种映射。这种映射对于图像处理具有相当多的影响。US2005/0083337描述了如何能够通过适当的映射提高存储器存取速度。WO2005/104027描述了当多个像素位置的像素值被并行使用作为图像处理操作的操作数时用于补偿映射的存储器存取电路。
US2005/0083337描述了提供在存储器中存储图像数据的替换方式的图像处理系统。不同的图像处理算法要求根据不同的像素位置的顺序存取像素值。因此例如图像的显示需要在逐行的基础上进行读取;图像解压缩典型需要基于块的读取。使用提供比在不同存储器部分上分布式存储的像素值更快速存取连续存储的像素值的存储器设备。结果,如果沿图像行的像素值被连续地存储,为了显示目的的存取能够最快速地被完成,但是如果沿块的连续行的像素值被连续地存储,基于块的存取能够被最快速地完成。
在许多应用中使用基于行存取的显示和使用基于块存取的解压缩将被使用。US2005/0083337通过存储以不同方式分组的像素值支持这种使用以便对于不同形式的存取能够实现最佳速度。所述分组取决于诸如块宽度和高度的参数,地址的概率分布和存储器设备的特性,诸如存储器总线的宽度和存储体(memory bank)的数量。当像素值被写入时,像素值的多个拷贝被写入,和根据将会读取像素值的方式以不同的方式被分组。
US2005/0083337提供从逻辑地址(例如像素坐标)到数据值将被写入其中的存储器中的物理地址的地址映射。需要不同的地址映射存储不同分组中的像素值。提供查询表存储器用于描述这些映射。地址发生器使用查询表根据逻辑地址产生物理地址。根据对于给定的节目将会导致最小成本(就存取速度而言)的映射的确定选择地址映射。US2005/0083337并不针对多个像素值的并行处理。
WO2005/104027描述了提供从工作存储器并行存取像素值的图像处理电路。该工作存储器存储像素位置区域的像素值。典型地所述区域是较大图像的一部分,为该图像像素值被存储在主存储器中。在本例中,工作存储器用作存储来自主存储器的部分像素值的拷贝的高速缓存器。
工作存储器包括能够并行地输出像素值的存储体。可选地在寄存器堆的寄存器中的中间并行存储之后,并行输出像素被提供给并行像素处理器(例如,SIMD(单指令多数据)电路)。当并行地提供像素值时在并行输出中的像素值的位置和相对应像素位置相对于被寻址图像部分(例如被寻址块)的相对位置之间必须存在预定的关系。
在WO2005/104027中,像素值被存储在工作存储器中以基于行-分段的方式被回绕,在图像中连续像素位置的像素值沿着水平行-分段被存储在连续的存储体中,从连续的最后存储体回绕到连续的第一存储体。在下一个水平行的分段中像素位置的像素值被类似地跟随前一行分段(可选地被对准到相同的存储体)的像素值进行存储。典型地,存储像素值的像素位置的区域沿着图像滑动。在本例中已经滑动移出该区域的像素位置的存储器位置能够被重新使用用于已经滑动到该区域中的像素位置。因此,将不存在存储所述区域中左上位置的像素值的预定存储体。
WO2005/104027允许并行输出在存储区域内像素位置的块的像素值。通过提供所述块在区域中的地址(例如,块的左上角的x-y坐标)控制所述并行输出。所述工作存储器通过在相对于块的地址由像素位置所定义的输出端输出来自所述块的像素值进行响应。因此,例如,在第一预定输出端输出块的左上角中位置的像素值等等。
值得注意的是这种类型的操作需要大量的参数来控制存储器存取。例如,在存储体和被寻址块中的位置之间不存在任何预定的关系。所以必须根据存储体控制存储体到输出端的耦合,在该存储体中存储在存储区域中的预定像素位置的像素值以及被寻址块的坐标。需要参数的其他实例包括能够改变每像素位置的数据量的情况。例如,在某些图像处理应用中,与存储的亮度相关值相比较,缩减的分辨率被使用于存储的色彩相关值。所以存储体和输出端之间的耦合对于色彩和亮度可以是不同的。如果不同的量化精度被使用于色彩和亮度,上述观点也是成立的。而且,可能想要在达到存储体的全部数量之前回绕某些图像的像素值的存储,以便使用剩余的存储体提供另一个图像的输出(或相同图像的另一个色彩分量等等)。这还有可能使得输出端和存储体之间的关系复杂化。
在WO2005/104027的数据处理电路中,在存储器存取电路中保持必须的参数。当存储器的块被存取时,存储器存取电路接收块的地址(例如它的坐标)和将该地址与参数合并以选择存储体和输出端之间必须的耦合。一次仅仅能够使用一个参数集。
发明内容
本发明的其中一个目的是使得能够并行处理取决于在信号中的位置的多个数据值,其中能够同时使用不同形式的信号中的位置到存储器位置的映射。
本发明的其中一个目的是提供使得能够以不同方式同时使用取决于信号中的位置的数据值进行并行处理的其他实施例。
本发明通过独立权利要求定义。从属权利要求定义有利的实施例。
提供根据权利要求1所述的可编程数据处理电路。该处理电路存储多个参数值集合。处理电路的某些指令包含这些集合的参考。响应于这些指令处理电路检索选择的参数值集合和控制存储器端口上的数据值位置到数据端口上的数据值位置的分配以用于并行输出诸如像素值的数据值。这使得有可能执行指令,该指令用于执行并行处理以相互不同的方式被存储在存储器电路中并且可以包含相互不同类型被相互混合数据的不同数据值集合上的数据值。如这里所使用,当多个指令在多个数据集合根据每个参数值集合始终被保持同时地存储在存储器中的时间间隔期间被执行时,具有参数值集合的相互不同指示的多个指令将被执行混合。
在一个实施例中,参数集合存储器是专用存储器,例如寄存器堆,该寄存器堆具有足够大小存储器位置(例如寄存器)来存储参数值的集合。在可替换的实施例中,如果寄存器堆中的寄存器具有足够的大小,可以使用还存储其他类型信息的寄存器堆。
在一个实施例中,所述指令具有指示信号中数据值的信号位置,诸如图像信号中的像素位置的位置操作数。在本实施例中,根据信号位置和选择的参数值集合计算基于指令的数据值位置在数据端口上的分配。还可以以这种方式计算被提供给存储器的地址。因此,指令能够使用用于以不同方式被存储的,或具有不同类型的信号位置相关数据值的类似操作数。
在一个实施例中,存储器电路包括多个至少部分可独立寻址的存储体。在本实施例中,所述存储体给不同的数据值位置提供数据值,使得能够使用不同数据值位置的不同地址。存储体的地址来自信号位置和选择的参数值集合。因此,指令能够使用以不同的方式在存储体上分布的信号位置相关数据值的类似位置操作数。
在各个实施例中,所述参数值可以表示例如在存储体中数据集合的存储开始的偏移值,子采样因子和/或被使用存储体的实际数量。
优选提供并行计算电路,它具有被耦合到数据端口的输入端和/或输出端。在数据端口和并行计算电路之间功能耦合的寄存器堆可以用于存储多数据值操作数和/或给数据端口或来自数据端口的结果。
这种数据处理电路的程序能够使用参考不同数据集合的指令,这些数据集合以不同的方式相互混合地被存储。数据集合可以具有多个存储体中的不同存储偏移,例如和/或使用不同的子采样因子,和/或使用不同数量的存储体。在一个实施例中使用这些不同数据集合的程序中的指令使用相同类型的位置操作数,与不同参数集合的参考进行组合,以寻址这些不同集合中的每个集合。这简化了程序和加速了程序的执行。
根据使用附图对示意性实施例的描述这些和其他目的和优点将会变得明显。
附图说明
图1显示了处理电路,
图2显示了存储器存取单元,
图3显示了算术功能元件,
图4显示了存储器存取控制电路的一部分,和
图5显示高速缓存配置。
具体实施方式
图1显示了处理电路,该电路包括多个功能单元10、12,指令发布电路14、和寄存器堆16,所述功能单元包括算术单元10和存储器存取单元12。指令发布电路14具有被耦合到功能单元10、12的输入端用于发布指令的输出端。功能单元10、12被耦合到寄存器堆16的读和写端口。仅仅通过实例的方式显示两个功能单元,但是应该明白可以使用更多的功能单元,包括除算术单元或存储器存取单元之外的功能单元。
图2显示了存储器存取单元,包括多个存储体20、切换电路22、和控制电路24。切换电路22被耦合在寄存器堆(未示出)的输入端和输出端26以及存储体20的存储器端口21之间。控制电路24具有被耦合到指令输入端28的指令输入端和控制输出端,指令输入端28耦合输出指令发布电路(未示出)。指令输入端28的部分被耦合到寄存器堆(未示出)的端口控制输入端。控制电路24具有被耦合到切换电路22和存储体20的控制输出端。
控制电路24包括参数集合控制电路240、地址发生电路242、切换控制发生电路244、和参数集合存储器246。参数集合控制电路240具有被耦合到指令输入端28和寄存器堆(未示出)的读端口的输入端,以及被耦合到地址发生电路242和切换控制发生电路244的输出端。参数集合选择控制电路240被耦合到用作参数集合存储器的参数集合存储器246。地址发生电路242、切换控制发生电路244具有被耦合到切换电路22和存储体20的输出端。
在操作中,指令发布单元14给功能单元10、12提供连续的指令。至少部分指令中的每个指令包含用于至少一个功能单元10、12的相应命令。至少部分命令规定寄存器堆16中的操作、操作数寄存器和结果寄存器。在命令执行期间,从规定的操作数寄存器提供操作数数据,功能单元10、12使用操作数数据执行规定的操作以及将结果数据提供给结果寄存器。在一个实施例中,每个指令并行地包含不同功能单元10、12的命令,但是可替换地,指令可以被每指令一个命令使用。而且可以以流水线的方式,例如通过连续地提供操作数寄存器地址、操作码和命令的结果寄存器地址发布命令。
图3显示了算术功能单元的实例。算术功能单元包括一对操作数输入端30a、30b、命令输入端32、多个算术电路34、和结果输出端36。操作数输入端30a、30b被耦合到寄存器堆(未示出)的相应读端口。典型地,每个操作数输入端包括提供操作数的相应比特的多个导体。在内部,算术功能单元将每个操作数输入划分到多个部分中(通过方框31a、31b符号指示的部分)。每个算术电路34从操作数输入端30a、30b的相应部分接收部分操作数。类似地,算术实际单元根据多个部分的组合(通过方框37符号指示的组合)内在地形成结果输出,每个算术电路34在相应的部分中提供部分结果。命令输入端32被耦合到算术电路34以控制算术电路34所执行操作的选择。
在操作实例中每个操作数包含通过相应的算术电路34处理的多个像素值,以及结果包含通过相应的算术电路34产生的多个像素值。
应该理解,该算术功能单元仅仅是可使用的功能单元的一个实例。在其他实例中,算术电路可以根据来自相同操作数的各部分的组合处理像素值和/或为各部分的组合产生结果。取代算术电路,或与算术电路组合,可以使用逻辑电路,但是为了方便在算术电路的术语下将包含所有类型的电路。
参考图1、2,存储器存取单元12执行在寄存器堆16中的寄存器和存储体20之间提供数据传送的命令。在进一步的实施例中存储体20用作后台存储器(未示出)的高速缓存器。在该进一步的实施例中存储器存取单元还执行高速缓存管理,包括当数据不位于存储体20中时从后台存储器提取数据和/或将数据从存储体20写入到后台存储器。
存储器存取单元12的命令包括从多个存储体20并行输出结果数据的命令,用于算术单元10在并行处理中使用。存储器存取单元12的命令的操作数典型用于指示数据值的地址。在读命令的情况下,所述结果包含从存储体20读取的数据值。在一个实施例中通过包含操作数值的寄存器堆16中的寄存器地址指示操作数,但是在替换的实施例中在操作数中可以在严格意义上包含一个或更多操作数值。
存储器存取单元12的命令包括具有指示参数集合的操作数的命令类型。为了简化目的,将描述其中在严格意义上经由指令输入端28指示参数集合的实施例,但是替换地参数集合的指示可以经由寄存器堆16的读端口来自寄存器。
参数集合操作数用于控制将如何从存储体20读取数据。该参数集合指示如何在存储体20中存储数据值,以及如何切换电路22必须将存储体耦合到输出端26。通过实例的方式,将描述在存储体20中存储像素值的大量方式。
在第一实例中,像素值作为像素位置的矩形区域中的位置的函数被存储。对于该区域中的每个y-坐标,该区域包含具有相应x-坐标的像素位置的行分段。沿行分段的像素位置的像素值被连续地存储在相应存储体中,当所有存储体已经被访问时回到第一存储体以及在前一行分段结束之后开始下一个y-坐标的行分段。因此,例如,第一存储体的第一和第二存储位置包含沿第一行分段的第一和第五像素位置的像素值,第二存储体的第一和第二存储位置包含沿第一行分段的第二和第六像素位置的像素值,并且依此类推到第四存储体。在第一存储体的第三和第四存储位置,存储沿第二行分段的第一和第五像素位置的像素值等等。
更一般而言,如果存在N个存储体,那么第i个存储体可以包含对于y的所有值,具有x-坐标i=x mod N的像素值。如果区域是M像素宽以及M不是N的倍数,可以从第一存储体开始或头接尾地存储不同行分段的像素值。在后者的情况下,如果像素位置的x和y坐标是x和y,第i存储体存储像素位置i=x+M*y mod N的像素值。
在另一个实例中,像素值可以被存储有偏移,这影响区域的初始像素值被存储的存储体。在本例中,如果像素位置的x和y坐标是x和y,那么第i存储体存储像素位置i=x0+x+M*(y+y0)mod N的像素值,其中x0和y0是x和y偏移值。在本实施例中具有相同x坐标的像素被存储在相同的存储体i=x0+x mod N中。
在其他实例中,每个存储器位置包含多个像素值。在实例中第一存储体的第一存储器位置包含沿第一行分段第一到第四像素位置的像素值;第二存储体的第一存储器位置包含沿第一行分段第五到第八像素位置的像素值等等。沿第一行分段的第十七到第二十像素位置的像素值被存储在第一存储体的第二存储器位置中。假设第一行分段包含三十二个像素位置,第一存储体的第三存储器位置包含沿第二行分段第一到第四像素位置的像素值等等。
更一般而言在上述其他实例中如果存在N个存储体那么第i存储体可以包含具有x坐标i=j+P*x mod N的像素值,其中对于y的所有值,j=0..P-1(P是存储器位置中的像素值数量)。如果区域是M像素宽以及M不是N的倍数,可以从第一存储体的开始或头接尾地存储不同行分段的像素值。在后者的情况下,如果像素位置的x和y坐标是x和y,第i存储体存储像素位置i=j+P*x+P*M*y mod N的像素值。在另一个实例中对于不同的数据每像素值的比特数量可以是不同的。例如8比特像素值可以用于亮度数据以及每像素4比特用于色彩值,以及更大数量的比特用于运动向量。这具有的效果是能够在相同的位置中存储更多的像素值,或者换言之对于不同类型的数据P是不同的。在本例中,也可以使用一个或更多偏移x0、y0。
在另一个实例中可以使用子采样像素值,这意味着仅仅为选择的像素位置存储数据值。能够通过坐标(x,y)=(x0+ix*Sx,y0+iy*Sy)描述这些像素位置。这里Sx、Sy是水平和垂直子采样因子(例如,Sx,Sy=1/2),以及ix和iy是整数。当优选使用子采样时,无存储器位置被保留用于未使用的位置。在本例中在确定存储器位置中ix和iy接管x和y坐标的角色。
在本例中到现在为止已经假设相同的初始存储体总是在存储区域中存储初始像素位置的像素值。更一般而言,任何存储体可以存储该像素值。在本例中具有编号(j+j1)mod N存储体(这里j和j1是整数)的存储体可以接管在之前第j个存储体中描述的角色。在本例中存在j1的存储体偏移。
在实例中到现在为止已经假设通过将所有存储体用于连续像素位置的第一部分在连续的存储体中存储连续像素位置的像素值,连续像素位置的下一部分的像素值是所有存储体等等。在另一个实施例中,只有部分存储体可以被用于选择的像素值集合。因此例如一组像素位置的第一色彩值(例如U值)可以存储在第一和第二存储体中,以及第二色彩值(例如V值)可以存储在第三和第四存储体中。更一般而言,这意味着可以取代用于所述被选择像素值集合的N,使用小于存储体总数N的存储体的实际数量N’。另外可以使用初始存储体数量B指示存储体上的哪个存储体被使用。
尽管已经给出了首先根据增加x-坐标然后根据增加y-坐标存储像素值的实例,但是将会明白,可替换地,能够首先根据y坐标或者根据增加或减小坐标值来存储像素值。参数可以用于指示哪种存储形式被用于像素值的集合。
尽管已经就像素值给出了实例,对于此由于已知图像处理算法的复杂度,使用不同形式的存储是特别有利的。但是,应该注意到这种形式的存储还能够被通常应用于至少二维的信号(不仅仅图像信号)或者甚至是一维信号(例如诸如音频信号的时间相关信号)。当使用较高维信号(例如图像作为像素坐标和时间的函数,或者作为像素坐标和标度的函数)时,将典型地使用更多的参数控制存储。
正如从以上实例将会意识到,各种参数影响存储位置。该参数可以包括在存储区域的行分段中像素位置的数量M,偏移x0、y0,子采样因子Sx、Sy,每存储器位置的像素值数量P,存储体偏移j1,存储体的实际数量N’,初始存储体B,主存储坐标的指示(例如如果x是主坐标则为真,以及如果y是主坐标则为假的布尔值)中的任何一个或其组合。替代地,或者另外地可以使用其他参数。
存储器存取单元12支持同时使用多个这种参数的值的集合,以描述数据值(例如像素值)的不同集合的存储。在参数集合存储器246中存储多个这些值的集合。存储器存取电路12支持包括选择所存储集合中的一个的指示的指令类型。在一个实施例中所述指示作为文字数据被包括在指令中,在另一个实施例中在来自寄存器堆16的操作数中提供所述指示。而且这种类型的指令具有包括像素位置指示(或更一般而言在信号中的位置)的位置操作数,例如根据相对于当前区域的坐标。
在接收这种类型的指令时,参数集合控制电路240从参数集合存储器246检索选择的参数集合(或至少其一部分)并且结合位置操作数使用选择的参数集合来控制地址发生电路242和切换控制发生电路244。地址发生电路242根据来自参数集合控制电路240的信号产生存储体20的地址。切换控制发生电路244根据来自参数集合控制电路240的信号产生切换电路22的切换控制信号。
这种类型的指令能够是读类型指令或写类型指令。在读类型指令的控制下,存储体20执行读操作。在读类型指令的情况下,存储体20并行输出多个数据值(例如像素值)以及切换电路22并行输出包括至少多个这些数据值的结果到寄存器堆16的写端口。如果必要,切换电路22重新安排输出数据值的存储体20和被输出到寄存器堆16的写端口的结果中的位置之间的关系。在一个实施例中保证结果中数据值的位置仅仅取决于相对于位置操作数所指示位置的信号位置(例如像素位置)。
在第i存储体20存储具有像素坐标x、y的像素位置的像素值的实例中,如果i=(x0+x+M*(y+y0))mod N,切换电路22将像素值从第j存储体提供给结果中的位置(j-i0)mod R,该结果被提供给寄存器堆16的写端口(这里R是结果中像素值的位置数量以及i0是存储指令的位置操作数所指示的位置的像素值的存储体的数量)。在本例中参数集合控制电路240使用x0、y0和M的参数值控制切换控制发生电路244。
类似地,参数集合控制电路240控制通过地址发生电路242选择不同存储体的地址。典型地,根据地址是否沿着已经被并行输出的一系列像素位置改变,两个不同的相邻地址将被使用,或者相同的地址将被用于每个存储体20。在前一实例中,第i存储体中的地址可以例如是(i-i0)/N,在本例中参数集合控制电路240和地址发生电路242提供相应的地址。
将会理解,根据被使用的参数和寻址存储体的方式,可以使用更复杂的计算来控制存储体的寻址和通过切换电路22的选择。在参数集合控制电路240、地址发生电路242和切换控制发生电路244中使用的具体电路取决于被支持参数的特性。
图4显示这些电路组合的典型实施例。仅显示计算部分:未显示用于在读和写等等之间进行选择的控制连接。在本实施例中所述组合包括具有耦合到加法器42的输出端的乘法器40(例如当可允许的窗大小、采样因子等等是2的幂时以桶移位电路的形式),该加法器被串行耦合于模电路43(还典型操作模2的幂),以及包括其他加法器44。其他加法器44具有耦合到转换电路46、48的输出端。
在本典型的实施例中,例如使用乘法器40以考虑区域宽度M(与从位置操作数推导的y-坐标相乘)和/或子采样因子。加法器42处理由于x和y坐标而作用的相加,偏移的相加。模电路43考虑选择的存储体的实际数量N’。其他加法器44相加存储体偏移。在本实施例中其他加法器44输出包含第一像素值的存储体的存储体数量,该第一像素值将被输出到结果中的第一位置。第一转换电路46将该像素值转换成切换电路(未示出)的控制信号。第二转换电路48使用初始存储体数量、有关像素值集合的地址偏移和计算的地址确定不同存储体的地址。各个单元响应于存储器存取单元的命令中的所选择参数值集合的指示接收从参数值存储器246获得的参数值。
应该强调,图4的电路仅仅是产生切换电路22的切换控制信号以及存储体20的地址的电路的一个简单实例。根据需要对于由存储器存取单元支持的参数的特定组合,存在用于执行类似操作或简化或更复杂操作的许多替换方案。
在写类型指令的情况下,数据被从寄存器堆16的读端口写入到存储体的存储器位置。在本例中切换电路22耦合读端口的相应部分到存储体20中相应的可控制存储体。在写类型命令的控制下,存储体20执行写操作。控制电路24产生切换控制信号和地址的操作类似于读类型指令的情形。
将会理解,所述的电路响应于读类型指令执行将来自存储体20的输出转换成具有多个数据值的结果的功能,和/或响应于读类型指令存储写类型指令的操作数的相应部分到存储体20中的功能。在每个情况中电路使用存储体和结果中的位置之间的可调节控制的关系。这种关系通过读或写类型指令中指示在控制电路24中在多个这些参数值集合中对参数值集合的选择的信息的方式进行控制。
在操作中电路执行指令的程序,该指令可以包含指示相互不同的参数值集合的读和/或写类型指令的混合。在一个实施例中,不同的参数值集合可以被存储,提供像素位置的第一区域的像素值和像素位置的第二区域的像素值,第一区域的像素值被从系列存储体中的一个偏移开始存储,第二区域的像素值被从系列存储体中的另一个偏移开始存储。因此存取这些不同的区域能够被同时地执行(即在相应相互混合的指令中)而不用加载和重新加载不同的区域。
在另一个实施例中,不同的参数值集合可以被存储,提供在存储体的不同部分中利用一个空间分辨率存储的第一像素值(例如亮度值Y)和以子采样的分辨率存储的第二像素值(U和/或V)。类似地这种类型的数据可以以甚至更低的分辨率与像素位置的运动向量数据进行混合。因此能够同时执行存取这些不同类型的数据而不加载和重新加载不同的数据。
在进一步实施例中不同的这种数据集合可以存储在存储体20的相互排斥子集中。在本实施例中存储器存取单元被安排用于接收相同指令中的参数集合的多个指示以及输入和/或输出根据多个指示的集合安排的数据值到寄存器堆16的写端口或从寄存器堆16的读端口。这能够例如通过复制处理单个指示的电路以及从复制电路的输出选择存储器地址以及切换控制信号的相应部分来实现。因此能够在相同的指令中执行存取数据集合的组合。
在一个实施例中,存储器存取单元被安排用于支持将参数值写入到参数值存储器中的选择位置的其他指令类型。在操作中,程序被执行,该程序包含在存储体20中读或写入数据值之前设置参数值的值的指令。
尽管已经仅仅显示了存储体20,但是应该明白这些存储体可能用作后台存储器的高速缓存。图5显示了高速缓存配置,其中高速缓存存储器50包含存储体20。存储器存取单元还包含高速缓存控制电路52和到后台存储器54的接口电路56。高速缓存控制本身是已知的。在一个实施例中,高速缓存控制电路52还能存取已存储的参数值,以便对于在后台存储器54中存储不同像素位置的数据值的方式,通过根据对应于高速缓存存储器一部分数据的参数集合和主存储器54中的相应地址适当地计算高速缓存器50中的地址,用于确定提取或存储后台存储器54中数据的后台存储器地址。
本发明的实施例能够概述如下。可编程数据处理电路具有用于存储像素值,或更一般地作为信号中位置函数的数据值的存储器。可编程数据处理电路支持包括选择参数值集合的指示的指令,所述指示指示如何多个数据值必须被安排用于从存储器并行输出。指示不同参数值集合的指令能够被相互混合执行。可编程数据处理电路通过从参数存储电路246检索选择的参数值集合,和至少部分地根据选择的参数值集合在存储器电路20的存储器端口21和数据端口26之间控制切换电路22从而响应于这种类型的指令。
尽管参数值存储器246已经被显示为参数存储电路的实例,但是应该理解可以使用任何形式的存储。在图示的实例中,响应于参数值集合的指示从参数值存储器提供所有的参数值。因此,参数值存储器用作具有参数集合的寄存器的专用寄存器堆。通过这种方式能够提供用于大的参数集合的特殊寄存器。但是,应该理解,在可替换的实施例中,如果寄存器堆16足够大以保持参数集合,参数值的一部分可以部分或全部地例如从寄存器堆16的寄存器被提供作为指令的操作数数据。在本例中参数值存储器246是寄存器堆的一部分。可以使用任何类型的参数存储电路。
尽管已经描述了操作数和结果(除参数值集合之外)被读和写入到单个寄存器堆的实施例,但是应该理解,实际上这种单个寄存器堆可以包括具有不同大小的寄存器的多个寄存器堆。因此例如具有位置操作数或参数集合选择的指示的寄存器可以小于包含多个数据值的寄存器。
而且,在另一个实施例中,操作数和结果可以被直接地提供给存储器存取单元或从存储器存取单元提供到算术电路,而不使用寄存器堆中的居间存储。
另外,尽管已经给出了控制如何在操作数/结果和存储体20之间重新安排数据的参数的具体实例,但是应该理解,能够使用其他参数和控制重新安排的其他方式。
尽管已经一起描述了用于指令的各个操作,诸如指令发布、寄存器读和写、指令执行、地址选择、切换选择,但是应该理解,可以以流水线的方式执行不同的操作。
而且,尽管已经显示了算术电路的实例,但是应该理解,能够结合其他类型的功能单元执行所描述的存储器存取形式,该功能单元处理操作数和/或产生包含多个数据值的结果。
因此应该注意到上述实施例图示而不是限制本发明,本领域的普通技术人员将会能够设计许多可替换的实施例而不背离所附权利要求书的范围。在权利要求中,放置括号之间的任何附图标记不应该被解释为限制权利要求。术语“包括”并不排除除权利要求中所列的单元或步骤之外其他单元或步骤的存在。在单元之前的术语“一”或“一个”并不排除多个这些单元的存在。本发明可以通过包括若干分离元件的硬件,和/或通过适当编程的处理器来实现。在列举若干装置的设备权利要求中,这些装置中的若干装置可以通过一个和相同的硬件项实施。仅仅某些措施在相互不同从属权利要求中阐述这个事实并不表明这些措施的组合不能够被有利地使用。
Claims (25)
1.一种可编程数据处理电路,包括:
具有存储器端口(21)的存储器电路(20);
数据端口(26);
在存储器端口(21)和数据端口(26)之间耦合的可控制切换电路(22),用于根据控制信号在数据端口(26)的相应数据值位置和存储器端口(21)的数据值位置之间提供可控制耦合;
用于存储多个参数值集合的参数存储电路(246),每个参数值集合包括至少一个参数值,每个参数值集合至少部分地确定分配数据端口(26)的数据值位置到存储器端口(21)的数据值位置;和
被耦合到切换电路(22)和参数存储电路(246)的指令执行控制电路(240、242),指令执行控制电路(240、242)的指令集合包括包含选择的参数值集合的指示的指令,指令执行控制电路(240、242)被配置用于通过从参数存储电路(246)检索选择的参数值集合来响应所述指令,以及根据使用所述选择的参数值集合确定的分配来控制切换电路(22)。
2.根据权利要求1所述的可编程数据处理电路,其中,所述指令还具有用于指示在信号中数据值的信号位置的位置操作数,指令执行控制电路(240、242)被配置用于计算从信号位置到选择的参数值集合的分配。
3.根据权利要求2所述的可编程数据处理电路,其中,指令执行控制电路(240、242)被配置用于提供地址到存储器电路(20),和根据信号位置和选择的参数值集合来计算地址。
4.根据权利要求2所述的可编程数据处理电路,其中,所述存储器电路包括多个至少部分可独立寻址的存储体(20),每个存储体被配置用于在存储器端口(21)上读或写相应一个数据值位置的至少一个数据值,指令执行控制电路(240、242)被配置用于提供地址到存储体(20),和根据所述信号位置和选择的参数值集合计算该地址。
5.根据权利要求4所述的可编程数据处理电路,其中,每个参数值集合定义至少一个偏移值,指令执行控制电路(240、242)被配置用于通过将该偏移值添加到从位置操作数推导的值并对存储体的实际数量求模来计算所述分配。
6.根据权利要求4所述的可编程数据处理电路,其中,每个参数值集合定义至少一个偏移值,指令执行控制电路(240、242)被配置用于根据偏移值和从位置操作数所推导的值的求和来计算存储体的地址。
7.根据权利要求4所述的可编程数据处理电路,其中,每个参数值集合至少定义子采样因子,指令执行控制电路(240、242)被配置用于从子采样因子和从位置操作数所推导值的乘积中计算分配和/或存储体的地址。
8.根据权利要求4所述的可编程数据处理电路,其中,每个参数值集合至少定义用于指令的使用存储体(20)的实际数量,指令执行控制电路被配置用于根据使用位置操作数对使用存储体(20)的实际数量求模所推导的值计算分配和/或存储体(20)的地址。
9.根据权利要求1所述的可编程数据处理电路,还包括并行计算电路(10),该并行计算电路具有被耦合于数据端口(26)的输入端和/或输出端。
10.根据权利要求9所述的可编程数据处理电路,还包括在数据端口(21)和并行计算电路(10)之间功能耦合的寄存器堆(16)。
11.根据权利要求1所述的可编程数据处理电路,其中,指令执行控制电路(240、242)被配置用于从指令操作数所寻址的寄存器接收参数值集合选择的指示。
12.根据权利要求1所述的可编程数据处理电路,其中,指令执行控制电路(240、242)被配置用于从指令中的文字数据接收参数值集合选择的指示。
13.根据权利要求1所述的可编程数据处理电路,被利用程序编程用于使用具有指示对相互不同参数值集合的选择的指示的指令,利用所述指令同时地寻址存储器电路(20)中的数据值。
14.根据权利要求1所述的可编程数据处理电路,其中,所述存储器电路包括高速缓存存储器(20)、后台存储器(54)和高速缓存控制电路(52),高速缓存存储器(20)被耦合到存储器端口(21),高速缓存控制电路(54)被配置用于使用参数值集合来选择高速缓存存储器(20)中的位置用于后台存储器(54)中的位置。
15.一种包括用于根据权利要求1所述的可编程数据处理电路的程序的计算机程序产品,该程序包括指令,每个指令包括所选择参数值集合的相应指示,至少部分指令选择相互混合的相互不同的参数值集合,在部分程序中在其执行期间通过所述部分指令的每个指令所寻址的数据值同时被存储在存储器电路(20)中,以至少部分根据选择的参数值集合控制在并行输出期间数据值到数据端口的并行部分的映射。
16.一种处理数据值的方法,该方法包括:
执行指令,每个指令包括所选择参数值集合的相应指示,至少部分指令选择相互混合的相互不同的参数值集合,
通过从参数存储电路(146)检索所选择的参数值集合来响应所述指令,和
至少部分地根据所选择的参数值集合,在存储器电路(20)的存储器端口(21)和数据端口(26)之间控制切换电路(22)以提供数据端口(26)的相应数据值位置和存储器端口(21)的数据值位置之间的可控制耦合。
17.根据权利要求16所述的方法,包括根据指令的信号位置操作数和所述选择的参数值集合的组合计算数据端口(26)的数据值位置到存储器端口(21)的数据值位置的分配。
18.根据权利要求17所述的方法,应用至少一个地址于存储器电路(20)和从信号位置和选择的参数值集合中计算用于存储器电路(20)的至少一个地址。
19.根据权利要求17所述的方法,其中,存储器电路(20)包括多个至少部分可独立寻址的存储体(20),每个存储体被配置用于在存储器端口(21)上读或写相应一个数据值位置的至少一个数据值,该方法包括提供地址到存储体(20),以及根据所述信号位置和选择的参数值集合计算该地址。
20.根据权利要求19所述的方法,其中,每个参数值集合定义至少一个偏移值,通过将该偏移值添加到从位置操作数推导的值并对存储体(20)的实际数量求模来计算所述分配。
21.根据权利要求19所述的方法,其中,每个参数值集合定义至少一个偏移值,该方法包括根据偏移值和从位置操作数所推导的值的求和中计算用于存储体(20)的地址。
22.根据权利要求19所述的方法,其中,每个参数值集合至少定义子采样因子,所述方法包括根据子采样因子和从位置操作数所推导的值的乘积计算所述分配和/或用于存储体的地址。
23.根据权利要求19所述的方法,其中,每个参数值集合至少定义用于指令的使用存储体(20)的实际数量,所述方法包括根据使用位置操作数对使用存储体(20)的实际数量求模所推导的值计算所述分配和/或用于存储体(20)的地址。
24.一种用于处理数据值的处理器,该处理器包括:
用于执行指令的装置,每个指令包括所选择参数值集合的相应指示,至少部分指令选择相互混合的相互不同的参数值集合,
用于通过从参数存储电路(146)检索选择的参数值集合来响应所述指令的装置,和
用于至少部分地根据选择的参数值集合,在存储器电路(20)的存储器端口(21)和数据端口(26)之间控制切换电路(22)以提供数据端口(26)的相应数据值位置和存储器端口(21)的数据值位置之间的可控制耦合的装置。
25.一种可编程数据处理电路,包括:
用于存储数据值作为信号中位置的函数的存储器,
用于支持包括所选择的参数值集合的指示的指令的装置,该指示指示如何多个数据值必须被安排用于从存储器并行输出,其中指示不同参数值集合的指令能够被相互混合地执行,和
用于通过从参数存储电路(246)检索选择的参数值集合,和至少部分地根据选择的参数值集合在存储器电路(20)的存储器端口(21)和数据端口(26)之间控制切换电路(22)从而响应指示不同参数值集合的所述指令的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP06113654.5 | 2006-05-09 | ||
EP06113654 | 2006-05-09 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101443809A true CN101443809A (zh) | 2009-05-27 |
Family
ID=38520618
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA200780016908XA Pending CN101443809A (zh) | 2006-05-09 | 2007-05-07 | 可编程数据处理电路 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8339405B2 (zh) |
EP (1) | EP2024928B1 (zh) |
JP (1) | JP5248482B2 (zh) |
KR (1) | KR101311311B1 (zh) |
CN (1) | CN101443809A (zh) |
WO (1) | WO2007132399A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105229696A (zh) * | 2013-04-15 | 2016-01-06 | 微软技术许可有限责任公司 | 用于多维数据存取的并行存储器 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9820210D0 (en) | 1998-09-16 | 1998-11-11 | Vg Elemental Limited | Means for removing unwanted ions from an ion transport system and mass spectrometer |
GB0210930D0 (en) | 2002-05-13 | 2002-06-19 | Thermo Electron Corp | Improved mass spectrometer and mass filters therefor |
JP2010086497A (ja) * | 2008-10-03 | 2010-04-15 | Renesas Technology Corp | 画像処理装置及びデータプロセッサ |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4819152A (en) * | 1985-04-05 | 1989-04-04 | Raytheon Company | Method and apparatus for addressing a memory by array transformations |
US5341486A (en) | 1988-10-27 | 1994-08-23 | Unisys Corporation | Automatically variable memory interleaving system |
US5341489A (en) | 1992-04-14 | 1994-08-23 | Eastman Kodak Company | Memory card with programmable interleaving |
EP0629952B1 (en) * | 1993-06-16 | 1999-09-01 | Bull HN Information Systems Italia S.p.A. | Variable interleaving level memory and related configuration unit |
US6657621B2 (en) * | 2001-05-01 | 2003-12-02 | Hewlett-Packard Development Company, L.P. | Device and method for scrolling stored images across a display |
JP2005518584A (ja) | 2002-02-21 | 2005-06-23 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | データ要素の格納方法 |
US7694078B2 (en) | 2004-04-22 | 2010-04-06 | Silicon Hive B.V. | Data processing apparatus that provides parallel access to multi-dimensional array of data values |
US7451282B2 (en) * | 2005-03-09 | 2008-11-11 | Dolphin Interconnect Solutions North America Inc. | System and method for storing a sequential data stream |
-
2007
- 2007-05-07 EP EP07735789.5A patent/EP2024928B1/en not_active Not-in-force
- 2007-05-07 CN CNA200780016908XA patent/CN101443809A/zh active Pending
- 2007-05-07 WO PCT/IB2007/051703 patent/WO2007132399A1/en active Application Filing
- 2007-05-07 US US12/299,671 patent/US8339405B2/en not_active Expired - Fee Related
- 2007-05-07 JP JP2009508631A patent/JP5248482B2/ja not_active Expired - Fee Related
- 2007-05-07 KR KR1020087027124A patent/KR101311311B1/ko active IP Right Grant
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105229696A (zh) * | 2013-04-15 | 2016-01-06 | 微软技术许可有限责任公司 | 用于多维数据存取的并行存储器 |
US10268885B2 (en) | 2013-04-15 | 2019-04-23 | Microsoft Technology Licensing, Llc | Extracting true color from a color and infrared sensor |
US10816331B2 (en) | 2013-04-15 | 2020-10-27 | Microsoft Technology Licensing, Llc | Super-resolving depth map by moving pattern projector |
US10928189B2 (en) | 2013-04-15 | 2021-02-23 | Microsoft Technology Licensing, Llc | Intensity-modulated light pattern for active stereo |
US10929658B2 (en) | 2013-04-15 | 2021-02-23 | Microsoft Technology Licensing, Llc | Active stereo with adaptive support weights from a separate image |
Also Published As
Publication number | Publication date |
---|---|
JP2009536392A (ja) | 2009-10-08 |
EP2024928A1 (en) | 2009-02-18 |
EP2024928B1 (en) | 2013-07-24 |
US20090135192A1 (en) | 2009-05-28 |
WO2007132399A1 (en) | 2007-11-22 |
JP5248482B2 (ja) | 2013-07-31 |
KR20090012320A (ko) | 2009-02-03 |
KR101311311B1 (ko) | 2013-09-25 |
US8339405B2 (en) | 2012-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11196953B2 (en) | Block operations for an image processor having a two-dimensional execution lane array and a two-dimensional shift register | |
US10216487B2 (en) | Virtual image processor instruction set architecture (ISA) and memory model and exemplary target hardware having a two-dimensional shift array structure | |
US6952214B2 (en) | Method for context switching a graphics accelerator comprising multiple rendering pipelines | |
KR100330604B1 (ko) | 메모리어레이를사용한병렬연산장치 | |
CN1664865B (zh) | 图像处理器 | |
US6985150B2 (en) | Accelerator control unit configured to manage multiple hardware contexts | |
US9978116B2 (en) | Core processes for block operations on an image processor having a two-dimensional execution lane array and a two-dimensional shift register | |
KR860002872A (ko) | 화상메모리 주변장치 | |
KR890013554A (ko) | 3차원 도형 처리장치 | |
CN101558649A (zh) | 具有多个存储体的数据处理 | |
CN101443809A (zh) | 可编程数据处理电路 | |
JP2020519979A (ja) | 設定可能な数のアクティブなコアを有する画像処理プロセッサおよびサポートする内部ネットワーク | |
US20030052886A1 (en) | Transferring a digital video stream through a series of hardware modules | |
CN115034950A (zh) | 线程构造方法及其装置 | |
JPH03138779A (ja) | テクスチャ・マッピング方法およびその装置 | |
JPH0435792B2 (zh) | ||
JP3671744B2 (ja) | 画像合成表示装置 | |
CN110009559A (zh) | 图像处理方法及装置 | |
JPH10111680A (ja) | データ順位決定装置 | |
JP2007122209A (ja) | 3次元グラフィックス描画装置、その方法及びプログラム | |
JPH0528771A (ja) | メモリ素子 | |
US20120200584A1 (en) | Edge Management Unit For 2-Dimension Vector Graphics, Graphic Processing Apparatus And Method Thereof | |
JPS63211075A (ja) | 画像処理システム | |
CN105740156A (zh) | 访问控制方法及装置、访问方法、存储方法及访问系统 | |
JPH01187679A (ja) | セクショニング装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |