CN101379468A - 数字数据处理方法和系统 - Google Patents
数字数据处理方法和系统 Download PDFInfo
- Publication number
- CN101379468A CN101379468A CNA2006800530321A CN200680053032A CN101379468A CN 101379468 A CN101379468 A CN 101379468A CN A2006800530321 A CNA2006800530321 A CN A2006800530321A CN 200680053032 A CN200680053032 A CN 200680053032A CN 101379468 A CN101379468 A CN 101379468A
- Authority
- CN
- China
- Prior art keywords
- concrete operations
- subobject
- concrete
- platform
- data
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/456—Parallelism detection
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4494—Execution paradigms, e.g. implementations of programming paradigms data driven
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Image Processing (AREA)
- Devices For Executing Special Programs (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
- Communication Control (AREA)
Abstract
本发明涉及一种方法和系统,用于处理包括描述无循环通用操作序列的第一数据(14)的通用格式化数据(12),以便为包括Q个处理器和至少一个存储器的预定平台(20)提供具体格式化数据(18),该平台用以直接地或间接地根据具体格式化数据(18)来处理包括同一类基本信息的对象(22),各基本信息由至少一个数值代表。
Description
技术领域
本发明涉及用于处理通用格式化数据以向处理平台提供具体格式化数据的方法和系统。可以使用编译器来直接或者间接地提供具体格式化数据,以从具体格式化数据生成与平台相适应的二进制代码。
背景技术
目前,对象处理算法一般用已知语言如C、汇编语言或者VHDL语言来编写,然后在由用以实现处理操作的平台使用之前编译或者翻译成二进制。
所用编译器是语言类型特有的编译器。
以作为最标准编译器之一的C编译器为例,翻译C代码以便能够被例如PC或者MAC型个人计算机所理解。这一编译依赖于为之编译算法的平台。假如两个平台的处理器具有相似特征,处理算法可以编写为与这两个平台均兼容。
另外,在C编码的算法中,程序员必须从一开始就限定依赖于平台的不同代码段比如对象到子对象的分解、循环、用于基本信息和子对象的处理顺序、数据在存储器中的组织以特别允许对不同位置的数据的访问和允许改变尺度、在存储器之间交换数据和管理边缘。
假如程序员根据平台和算法来先验确定依赖于平台的这些代码段,它们必须针对各算法和平台组合人工地加以优化。另外,由于它们被明示地限定并且与描述算法本身的代码混合,所以为了使依赖于平台的这些代码段适应于另一平台,编译器很难忽视这些代码段。
例如,在具有小型本地存储器的信号处理处理器情况下——其中不得不从主存储器复制数据到这一本地存储器和从该本地存储器复制数据到主存储器——这一复制必须人工地加以添加而极大地损害存储器中循环和数据的结构。又如向量信号处理器,特别是SIMD(单指令多数据)型向量信号处理器必须根据平台来处理分组成大小不同的向量的数据,而由于当使用比如C语言时无法以独立于平台的方式来表达向量,所以必须以依赖于平台的方式对汇编程序进行编码。
另外,当特别是在对不同位置的数据的访问方面修改算法时,这至少部分地有损于依赖于平台的不同代码部分。
因此很难优化代码的大小、存储器的大小和所需指令的数量而无需花费大量时间来优化各算法和平台组合。实际上,各平台在设备(例如处理器的数量和类型或者存储器的大小和类型)方面和在所用语言方面(用于标量处理器的C语言和用于向量信号处理器的汇编语言)均具有它自己的特征。
为了解决这一问题,已经知道使用能够对物理块实现各种处理操作如卷积、相乘或者甚至应用相关表的低级库。这仅允许针对各平台一次性优化这些库。然而这一方法有许多缺点:
-库的规模很大并且因此代码的规模也很大,
-对于给定的库调用时间,需要使用相对大规模的物理块,这造成存储器的大量使用,
-假如对基本信息的内部循环位于库内,就不能优化操作序列,这造成性能受限,
-物理块存储于存储器中,这造成存储器的密集使用以及在从存储器读取和写入中间数据上花费大量时间,以及
-这些库常常由处理器制造商仅针对数目有限的平台来加以优化,因此并不为所有平台类型所用。
本发明的主旨因此在于提出一种执行速度快、存储器使用少而代码量小的能针对数个平台进行自动优化的数据处理方法,所有对象处理算法由以适应于这一类算法的语言来编码的大量不同基本信息组成。本发明特别地允许通过为任何算法的各种平台自动地和快速地获得优化实施以及通过允许尽可能迟的算法修改,来加速用于处理数据特别是图像的设备和软件的市场化。例如在图像捕获设备的情况下,这一延迟的修改允许该图像捕获设备快速地适应于以下新型传感器:其特别是与噪声有关的特征随着小型化而快速演变。
本发明涉及一种用于处理通用格式化数据的方法,其中第一数据描述了无循环通用操作序列以便为包括Q个处理器和至少一个存储器的预定平台直接地或者间接地提供具体格式化数据,其中所述平台用以根据具体格式化数据来处理包括同一类基本信息的对象,各基本信息由至少一个数值代表。
该方法包括以下步骤:
-根据平台将通用操作序列转换成具体操作的步骤,
-根据对象的拓扑和以独立于第一数据的方式来确定处理所需循环集的步骤,
-计算具体格式化数据的步骤,所述具体格式化数据包括这样确定的具体操作序列和循环并允许根据通用格式化数据来直接地或者间接地处理对象,其中该序列在代码量和/或存储器大小和/或计算时间方面针对平台而加以优化。
具体格式化数据包括这样确定的具体操作序列。
已经知道使用编译器来转换包括循环和表的操作序列:
-其中该转换使用了以下图表:该图表描述了在同一个循环迭代内的操作之间和不同循环迭代的操作之间的联系,特别是与对表的单元之一的访问索引的相关性。
-该转换包括对预先存在的循环进行修改的优化。
-该转换包括修改表的组织和/或修改使用该表的操作以便适应于平台特征的步骤。
所用通用操作序列的特征(第一和第二数据的性质)允许:
-解除循环与操作和操作图表的相关性。
-所用通用操作序列既不运用表也不运用对表单元的访问索引,并且具体而言根据本发明的方法或者系统并不包括以下步骤:修改表的组织和/或修改使用该表的操作。
本发明因此允许直接生成100%使用Q个处理器的最优代码而无需具体优化各操作序列的循环也无需使用图表。这一特征特别地难以获得。本发明允许借助以下手段来达到100%。
-与第一数据相独立的循环组织,
-存储器中的数据的组织,其并非表的形式而是例如如下文所述的队列的形式,
-如下文所述使用包括计算单元和队列的链。
例如,美国纽约ACM Computing Survey 1994年12月第26卷第4期的“Compiler transformations for high performance computing”一文说明了按照公式U=F/ST给定的处理器利用率明显低于100%(第351页),100%的利用率被认为是理想的;根据本发明的方法和系统实现了对于用于处理包括同一类信息的对象的任一类算法都实现100%。
本发明也允许通过按照无论子对象的大小如何都同时处理一个子对象的数据的遍历模式来处理基本信息,由此减少存储器的使用,这避免了在图像情况下在开始对块的处理操作之前存储大量的行。
现在将描述将通用操作序列转换成具体操作序列的例子。在这一例子中:
-对象是单色二维(水平和竖直维度)图像,基本信息由单个数值代表,
-通用操作序列如下:
*应用3×1竖直F1过滤器、继而是1×3水平F2过滤器
-将具体操作序列转换成以下具体操作序列:
*在R1中存储从输入队列获得的子对象
*计算F1.C1×R1并在R2中存储结果
*执行UP(R1)并在R1中存储结果
*计算F1.C2×R1并在R2中存储结果
*执行UP(R1)并在R1中存储结果
*计算F1.C3×R1并在R2中存储结果
*计算F2.C1×R2并在R3中存储结果
*执行LEFT(R2)并在R2中存储结果
*计算F2.C2×R2并在R3中存储结果
*执行LEFT(R2)并在R2中存储结果
*计算F2.C3×R2并在R3中存储结果
-R1、R2和R3是各自用来存储子对象的N条基本信息或者存储在同一个子对象的处理过程中执行的同一个具体操作获得的N个结果的寄存器。
-其中F1.C1、F1.C2和F1.C3是与用于过滤器F1的因子对应的参数。
-其中F2.C1、F2.C2和F2.C3是与用于过滤器F2的因子对应的参数。
-可以通过使用根据水平维度的包括如下文所述的队列H的链来实施LEFT(R1);例如:
*如果子对象由水平设置的4个像素组成而寄存器从左到右包括4条数据R1.1、R1.2、R1.3和R1.4:LEFT(R1)意味着在队列H中写入R1.4、在R1.4中写入R1.3、在R1.3中写入R1.2、在R1.3中写入R1.1,对于行的第一子对象而言R1.1不变,否则R1.1接收在队列H中读取的数据。
-可以通过使用根据竖直维度的包括如下文所述的队列V的链来实施UP(R2)。
*如果子对象由水平设置的4个像素组成而寄存器从左到右包括4条数据R1.1、R1.2、R1.3和R1.4:UP(R1)意味着在队列V中写入R1.4、在R1.4中写入R1.3、在R1.3中写入R1.2、在R1.3中写入R1.1,对于图像的第一行的对象而言R1.1不变,否则R1.1接收在队列V中读取的数据。
在该例中,通用操作序列到具体操作序列的变换独立于如下文所述的遍历模式。然后可以根据这一平台(22)的架构和根据对象的拓扑,以独立于第一数据的方式为平台中的基本信息确定遍历模式(24),这一遍历模式的确定包括选择和/或计算:
-根据平台来确定的基本信息到子对象的分组,各分组包括数量为N的基本信息,在平台中的处理包括定期地起动包括向子对象之一施加具体操作序列的子处理操作,
-根据平台来确定的子对象的形式和重叠,
-根据平台来确定的子对象处理顺序。
优选地,确定循环集意味着确定每一个循环在何处具有循环集的嵌套,迭代数量根据对象来确定。例如,在具有两个(水平和竖直)维度的图像情况下、在Q=4的情况下和在4个处理器处理同一行的4个连续像素情况下,可以确定以下循环:
-对于每一行从上到下,
-对于每一组4个像素从左到右,
-通过在4个处理器上同时执行同一具体操作来对该组4个像素执行具体操作序列。
在这一例子中,迭代次数依赖于图像的大小。相反,过去是根据平台的架构和根据对象的拓扑,以独立于第一数据的方式来确定处理操作所需循环集。例如,循环可以用于以下通用操作序列中的任一个:
-应用3×1竖直F1过滤器,继而是1×3水平F2过滤器,
-将常数3与基本信息相加,
-或者任何其它通用操作序列。
根据本发明,循环尤其可以是(下面的列举不具限制性):执行一定次数的循环、如果条件被验证则执行的循环、在条件被验证之前执行的循环、一般说来与该循环的一个或者多个输出条件有联系的迭代执行。
现在将定义根据本发明的队列的概念。
队列用来发送和/或存储基本信息或者来自具体操作的结果。
队列可以包括或者使用存储器。
队列可以使用一个或者多个FIFO(先进先出)型处理器来实施。
队列包括至少一个输入和至少一个输出。
-队列可以经由任何装置可操作地连接到输入计算单元和输出计算单元。
-队列也可以经由任何装置可操作地连接到PR输入计算单元和PR输出计算单元,在这一情况下队列表现为如同各自将输入计算单元链接到输出计算单元的PR队列。
优选地,队列可以用来独立管理数个数据流,各数据流与确定的具体操作有关。
在一个实施例中,有可能在队列中同时读写。
优选地,队列使用至少一个存储器单元为各数据流存储相同数量NF的数据。
优选地,NF取决于子对象的相对位置和遍历模式,使得在处理产生数据的子对象与处理使用所述数据的子对象之间处理NF-1个子对象。
优选地,包括计算单元和队列的链包括一种实现对引导操作进行管理的机制:如果队列为水平链的一部分而对象为图像,则以规则方式初始化队列,例如在各行开始时初始化队列;假如队列不包括NF个数据,则在链中继队列之后的处理器以它在输出端发送的数据作为输入;接着,在链中继队列之后的处理器在输入端取得队列中的最旧数据并且将它从队列中去除。
优选地,队列实现以数据被输入队列时相同的顺序输出数据。
优选地,循环链是单向的。优选地,循环链使得在就每计算单元而言在输入端有单个链接和在输出端有单个链接。
使用至少一个队列因此实现了传输在至少一个其它子对象的计算中所需的来自具体操作的结果。
在本说明书中,通用格式化数据是用于与数据处理平台本身相独立地描述该平台将对对象执行的处理操作的数字数据。在本发明中,被处理的对象对应于同一类基本信息集;这些对象例如是图像、数字音频、视频或者甚至是仿真数据。
在一个实施例中,通用格式化数据包括第二数据,该第二数据涉及块和/或参数相对于彼此就对象的至少一个维度、特别是空间和/或时间而言的相对位置和/或涉及逻辑块和/或参数相对于彼此就对象的至少一个维度、特别是空间和/或时间而言的相对尺度。
在一个实施例中,对象和子对象以及逻辑块具有数个维度。
子对象和逻辑块的维度对应于对象的全部或者部分维度。维度可以是不同类型,特别是:
-空间的,例如网格中的距离、角度或者路线,
-时间的,
-频率的,例如颜色、频率、频带,
-相位,
-基于向量空间的分解,例如分解成小波或者分解成高字节和低字节,
-一般而言,任意拓扑的任何空间的维度。
以下非穷举列举提供了具有维度的对象的例子:
-具有2个维度的静止图像,各维度对应于特别是以像素为单位测量的距离,
-具有2个维度的未处理静止图像,各维度对应于距离,各像素具有颜色如红、绿或者蓝,
-具有2个维度的静止彩色图像,各维度对应于距离,而一个维度对应于代表色通道如红/绿/蓝的频率,
-具有3个维度的移动图像,其中2个维度对应于特别是以像素为单位测量的距离而其中另一个维度对应于时间,
-具有与距离对应的3个维度的立体图像,
-具有3个维度的立体图像,其中2个维度对应于距离而第三维度对应于视角,
-具有距离维度和可能具有通道维度的医学图像,
-具有视角维度的全息图,
-更一般而言,具有距离和/或角度和/或空间和/或频率维度的图像,
-具有与时间对应的维度的声音,
-具有与时间和通道对应的2个维度的声音,
-具有与时间和可能与频率和可能与空间位置或者角度对应的一个或者多个维度的调制信号,
-由按照一个或者多个维度设置的基本信息表示的信号调制和解调、测量、数据分析、数据库编索引或者搜索、计算机查看、图形处理、仿真,
-更一般而言,具有一个或者多个维度的对象。
在本发明中,对象的基本信息可以具有绝对位置和/或尺度,特别是空间和/或时间和/或频率绝对位置和/或尺度,但所述绝对位置和/或尺度同样根据对象的至少一个维度并且在任何其它空间、特别是由小波组成的空间中:
-用于“音频”对象的基本信息可以对应于强度;在这一情况下,基本信息具有与给定的时间瞬间对应,且在多声道声音的情况下与给定声道对应的绝对位置。
-用于“图像”对象的基本信息可以对应于像素;在这一情况下,基本信息具有与图像中的位置对应而在视频图像的情况下与给定的时间瞬间对应的绝对位置。
-用于“数据仿真”对象的基本信息可以对应于状态;在这一情况下,基本信息具有与网状节点和给定的时间瞬间对应的绝对位置。
-用于“调制信号”对象的基本信息可以对应于强度和/或相位;在这一情况下,基本信息具有与给定的时间点对应以及如果使用数个天线或者发送器则可能具有与给定的频率和/或给定的位置对应的绝对位置。
基本信息是由一个或者数个数值代表的待处理的信元。可以根据各类编码如8位编码、10位编码或者甚至16位有符号编码对此信息进行编码。例如在对象为图像的情况下,基本信息将是这一图像的像素。
对象可以是在去马赛克操作之前的(“原始”型)未处理图像,在该情况下:
-在一个替代方式中,基本信息是根据像素的绝对位置,由例如红、绿或者蓝对应的数值所代表的像素,
-在另一替代方式中,基本信息是每像素一个数值所代表的像素组(例如与“拜尔(Bayer)”对应的2×2绿、红和蓝像素组)。
对象也可以是可见图像,在该情况下基本信息是例如由三个数值代表的像素,各数值代表颜色如红、绿或者蓝。
对象也可以是图像序列,特别是未处理图像或者可见图像,在该情况下基本信息是来自图像序列的图像的像素。对象因此对应于例如视频。
在对象为图像的情况下,图像可以来自图像捕获设备和/或去往图像再现设备:
-图像捕获设备例如是一次性相机、数字相机、反射式相机(数字式或者非数字式)、扫描仪、传真机、内窥镜、摄影机、可携式摄像机、监视相机、玩具、集成或者链接到电话、个人助理或者计算机的摄影机或者相机、热感相机、超声机、MRI(磁共振)成像单元、X射线放射照相单元。
-图像再现设备例如是屏幕、投影仪、电视机、虚拟现实眼镜或者打印机。
-图像捕获和图像再现设备例如是扫描仪/传真机/打印机、微型照片打印实验室(mini lab d’impression photos)、视频会议设备。
处理平台可以根据应用而采用不同形式。例如,在对象为图像的情况下,尤其可以提到处理平台集成到以下设备之一中的情况:
-产生处理图像的图像捕获设备,例如集成了处理平台的数字相机。
-显示或者打印处理图像的图像再现设备,例如包括处理平台的视频投影仪或者打印机。
-矫正这些单元的缺陷的混合式设备,例如包括处理平台的扫描仪/打印机/传真机。
-产生处理图像的专业图像捕获设备,例如包括处理平台的内窥镜。
所述处理平台可以完全地或者部分地移至服务器上。
在平台中将向对象施加的处理对应于通过一个或者多个通用操作序列来描述的算法,该算法能够介入各种领域,例如图像处理、数据压缩和解压、音频处理、信号调制和解调、测量、数据分析、数据库编索引或者搜索、计算机查看、图形处理、仿真或者涉及到大量数据的任何领域。通用操作是被施加于逻辑块即抽象实体而不考虑大小、形式和时间的操作。
通用操作可以产生逻辑块。优选地,至少一个逻辑块对应于待处理的对象。
另外,在一个实施例中,该方法包括以下步骤:根据对象的拓扑,以独立于第一数据的方式来确定用于平台中的基本信息的遍历模式。这一遍历模式的确定包括选择和/或计算:
-根据平台来确定的将基本信息分为子对象的分组,各分组包括数量为N的基本信息,在平台中的处理包括定期地起动包括向子对象之一施加具体操作序列的子处理操作,
-根据平台来确定的子对象的形式和重叠,
-根据平台来确定的子对象处理顺序。
包括确定处理所需循环集和/或计算具体操作序列的上述步骤考虑这一遍历模式。
例如,在具有两个(水平和竖直)维度的图像情况下,在Q=4以及4个处理器可以处理同一行的4个连续像素的平台架构情况下,可以确定以下遍历模式:
-将基本信息分组成来自同一行的4个连续像素的子对象,其中子对象不重叠,
-以如下顺序处理子对象:从上到下逐行而在行内从左到右,
-确定对应循环:
*对于各行从上到下,
*对于各组4个像素从左到右,
*通过在4个处理器上同时执行同一具体操作来对该组4个像素执行具体操作序列。
在这一例子中,根据平台的架构和根据对象的拓扑,以独立于第一数据的方式来确定遍历模式。例如,遍历模式兼容于以下通用操作序列中的任一个:
-应用3×1竖直F1过滤器、继而是1×3水平F2过滤器,
-将常数3与基本信息相加,
-或者任何其它通用操作序列。
优选地,各子对象的处理分布于Q个处理器,各处理器执行来自具体操作序列的至少一个具体操作IS8。因此,所有处理器用于每一个子对象而同一个处理器用于所有子对象。因此无需将所述子对象向所述Q个处理器进行分配。
优选地,当具体操作由处理器执行以处理子对象时,同一具体操作也由同一处理器执行用于处理所有其它子对象。该处理因此是规则的:具体操作被分配给处理器,然后针对各子对象的子处理操作来定期地执行。
优选地,处理所必需的循环集依赖于对象的拓扑结构和平台但是独立于具体操作序列。
优选地,循环完整的具体操作序列外围相互嵌套。以这一方式,循环封装了整个具体操作序列而具体操作序列没有被划分成各自被循环所划出的子序列。以同一方式,可以通过同时处理子对象来处理对象而无需存储完整对象或者存储具体操作的所有结果而仅暂时存储另一子对象的处理所必需的结果。使得减少了存储器的使用。
优选地,子对象由邻接的基本信息组成。因此可以实施包括至少一个队列的处理器链。
在一个实施例中,为了处理N条基本信息的子对象,用于该序列的各具体操作合计进行N次而对于Q个处理器中的各处理器为N/Q次。在具体操作序列包括有条件连接的情况下,考虑到这些有条件连接,各处理器执行该序列的一部分。
在一个实施例中,子对象就至少一个维度而言没有重叠。使得在子对象的处理过程中产生的至少一个具体操作结果被用于另一子对象的处理过程中。
优选地,子对象就任何维度而言没有重叠。使得无需重复计算即可100%使用各处理器。
优选地,具体操作序列使得该序列的至少一个具体操作k在其应用N次的过程中有至少一次产生用于处理另一子对象的结果。
优选地,在就子对象的同一个维度而言有数个循环链的情况下(特别是当按照网格来设置处理器时),在根据同一维度的所有循环链之间共享队列。优选地,对于子对象的每一个维度严格地只有一个队列,而在根据同一维度的所有循环链之间共享各队列。使得在处理器之间的通信特别地简易。使得存储器的组织特别地简易。
根据本发明,定期起动子处理操作并不必然意味着严格规则的间隔,计算和存储器存取所需的数据同步可能改变周期。
在一个实施例中,N不是Q的倍数。在这一实施例的一个替代方式中,Q等于通过转换通用操作序列而获得的该序列的具体操作的数量。
在一个实施例中,N为Q的倍数。这使处理有规则。优选地,N=Q。这减少了用于存储临时结果所需存储器的数量。
在一些实施例中,Q=1而N=4。这允许针对数次施加同一具体操作来重用同一参数值。
在一个实施例中,Q>1而N=Q。这实现了100%使用向量信号处理器的Q个计算单元。
在一个实施例中,Q>1而N为Q的倍数。这实现了100%使用向量信号处理器的Q个计算单元,减少了来自在子对象的处理过程中执行的具体操作的并且用于处理另一子对象的结果的数量。
其中存储数据的存储器位置依赖于例如将重用此数据的时间。因此,数据可以存储于寄存器中、快速存取存储器中或者甚至慢速存储器中。
在一个实施例中,遍历模式的确定包括以下步骤:确定每一个处理器执行具体操作序列中的哪一个或者哪些具体操作,各操作向各子对象施加至少N次,各具体操作在它施加N次的过程中直接地和/或间接地应用子对象的各基本信息至少一次,产生恰好N个结果。另外,该方法包括以下步骤:向具体格式化数据添加这样确定的信息。
在一个实施例中,各处理器执行具体操作序列的所有操作。
定期起动子处理操作,由给定处理器执行的具体操作对于各时段而言是优选是相同的。
在一个实施例中,遍历模式的确定包括以下步骤:在时段的各相关时刻确定每一个处理器执行具体操作序列中的哪一个或者哪些具体操作,各操作向各子对象施加至少N次,各具体操作在它施加N次的过程中直接地和/或间接地应用子对象的各基本信息至少一次,产生恰好N个结果。另外,该方法包括以下步骤:向具体格式化数据添加这样确定的信息。在一个实施例中,所有处理器同时执行同一具体操作。在另一实施例中,所有处理器相继地执行同一操作,从而允许实现递归滤波器。
在又一实施例中,具体操作序列是这样的:该序列的至少两个不同的具体操作各自在它们的N次施加过程中产生用于处理另一子对象的结果至少一次。
该方法也包括以下步骤:根据具体操作和确定的遍历模式来计算具体格式化数据。
两个逻辑块的相对尺度和相对位置的概念尤其允许(以下列举不具限制性):
-组合数个逻辑块,和/或
-改变尺度,和/或
-创建近邻过滤器,和/或
-改变显示。
在本发明中,例如在对象为图像的情况下,逻辑块就通用操作而言为数个类型:
-至少一个逻辑块为“未处理”型,和/或
-至少一个逻辑块为红色型,和/或
-至少一个逻辑块为绿色型,和/或
-至少一个逻辑块为蓝色型,和/或
-至少一个逻辑块可以由8位数据代表,和/或
-至少一个逻辑块可以由16位数据代表。
-至少一个逻辑块可以由n位如10或者12位数据代表。
在一个实施例中,至少一个逻辑块包含多尺度数据,例如尺度为1、1/2、1/4和1/8的数据。这使得有可能在数个尺度进行通用操作并且随后组合结果。
在对象为图像的情况下,算法可以例如对应于(以下列举不具限制性):
-针对自动白平衡的特别是基于统计的计算,和/或
-针对自动曝光的特别是基于统计的计算,和/或
-针对自动聚焦的特别是基于统计的计算,和/或
-针对自动对比度提高的特别是基于统计的计算,和/或
-将未处理图像转换成可见图像(“图像流水线”或者“图像信号处理(ISP)”),和/或
-矫正光学缺陷,和/或
-提高景深,和/或
-如在专利申请PCT/FR2006/050022“Method for creating an imagecapturing and/or rendering device,and device obtained by this method(Procédé de realization d’un appareil de capture et/ou de restitution d’image,et appareil obtenu par ce Procédé)”中和在专利申请PCT/FR2006/050197“Method for commanding an action,notably amodification of sharpness,using a digital colour image(Procédé pourcommander une action,notamment une modification denetteté,à partir d’uneimage numérique en couleurs)”中描述的处理操作,和/或
-矫正传感器缺陷,和/或
-矫正成像器缺陷,和/或
-特别是提高清晰度的处理操作,和/或
-特别是提高色度还原的处理操作,和/或
-特别是提高对比度还原的处理操作,和/或
-特别是提高细节还原的处理操作,和/或
-降噪,和/或
-测量,和/或
-压缩,和/或
-解压,和/或
-插值或者放大(缩放),和/或
-扫描,和/或
-特效。
待处理的对象一般在处理过程中在空间上和在时间上或者在对象的其它维度上分解成子对象,即具有确定大小和形式的基本信息组。
子对象是具有以下形式和大小的基本信息集,该形式和大小视情况而定依赖于平台的特征,特别是在存储器的大小和类型方面而言的平台特征以及在向量信号处理器的情况下就向量的大小方面而言的平台特征,也依赖于待处理的对象的特征。
图1a至1d图示了无重叠地分解成可能的子对象的各种类型。在这些图中,示出了同一个图像可以划分成行(图1a中的行90、91、92和93)、列(图1b中的列94、95、96和97)、任何其它形式的子对象(图1c中的形式70、71、72和73)或者甚至为矩形(图1d中的形式60、61、62、63、64、65、66和67)。
在子对象没有重叠的情况下,为了处理子对象的基本信息而不会例如在过滤器的计算过程中丢失边缘,需要访问至少一个其他的子对象的基本信息。
分解成子对象也可以依赖于第二数据,特别是累积相对移位数据,以便例如确定根据一个维度所需的重叠。
另外,在一个替代方式中,当一些通用操作具有非零位移、使得在执行算法过程中不丢失基本信息时,图像根据至少一个维度分解成具有非零重叠的子对象。
在图1e和1f中图示了这一配置:图1e示出了在操作序列的各条边上丢失一个像素情况下包括6×6条基本信息的子对象,而图1f示出了包括100条基本信息的对象。
在该图中,示出了子对象为各包含36条基本信息的四个矩形80、82、83和84。矩形80由图像中位于左上方的36条基本信息组成,而矩形82由图像中位于最右上方的36条基本信息组成。因此,8条基本信息86为两个子对象80和82所共有。
另外,8条基本信息85为两个子对象80和83所共有;8条基本信息88为两个子对象82和84所共有,而8条基本信息89为两个子对象83和84所共有。最后,4条基本信息87为所有四个子对象80、82、83和84所共有。
在对象为图像的情况下,在一个实施例中,图像分解成并置矩形子对象,这些子对象用来被例如从左到右然后从上到下进行处理。
视平台而定,根据以下方式之一选择和存储子对象(以下列举不具限制性):
-在具有小型快速存取存储器和大型慢速存储器的信号处理处理器情况下,子对象的大小选择为无需存取慢速存储器就能处理子对象;例如可以采用与32×32个像素的方形对应的子对象,对前一子对象的计算结果在针对当前子对象的计算过程中转移到慢速存储器而在用于针对后继子对象的计算需要数据时从慢速存储器转移到快速存取存储器,
-在具有小型高速缓存存储器和大型慢速存储器的标量处理器情况下,子对象的大小选择为能够尽可能多地使用高速缓存存储器来进行对子对象的处理;例如,特别是在“原始”型未处理图像情况下,可以采用与32×32个像素的方形对应的子对象或者1个像素的子对象或者4个像素(2×2)或N1×2个像素的子对象,
-在向量处理器情况下,子对象的大小选择为等于平台能够处理和存储的向量的大小或者该大小的倍数,例如可以采用与64个水平像素对应的子对象。
在对象为不同于图像的类型的情况下,子对象分解可以类似方式来适应平台。
在比如C语言这样的语言中,这一到子对象的分解和对应循环的编码必须根据平台来明确表达并且针对各平台来人工执行。存在致力于从编码循环中明示地提取子对象的向量编译器,但是它们效率有限,因为它们不得不在自动地对算法概念进行编码之前提取它,这一点非常困难。本发明因此实现了针对任何平台进行适应的自动化和效率的提高。
下表概括了在本发明与已知语言之间的主要差异:
本发明 | 已知语言 | 以C语言为例 | |
操作序列 | 人工编码 | 人工编码 | 人工编码 |
相对移位和相对尺度 | 自动和优化的编码(循环、存储器存取) | 需要对循环和存储器存取的人工编码 | 需要对循环和存储器存取的人工编码 |
循环 | 根据平台的自动和优化编码,序列中无循环 | 人工编码,编译器可以在考虑到操作之间依赖性的情况下改变顺序 | 人工编码,编译器可以在考虑到操作之间依赖性的情况下改变顺序 |
数据在存储器中的组织 | 根据平台的自动和优化编码,序列中没有与数据在存储器中的组织有关的信息 | 在一些情况(Java)下自动而缓慢 | 人工编码,编译器可以在考虑到操作之间依赖性的情况下改变组织 |
边缘管理 | 自动和优化的编码 | 需要人工编码 | 需要人工编码 |
慢速存储器到快速存储器的交换 | 自动和优化的编码 | 需要优化或者人工编码 | 需要优化或者人工编码 |
寄存器分配 | 自动 | 自动 | 自动 |
指令调度 | 自动 | 自动 | 自动 |
一旦执行了到子对象的分解,在一个实施例中,可以给处理器分配具体操作。在每一时刻,具体操作可以由任何一个或者多个处理器执行。这一选择尤其依赖于平台的架构,即处理器的类型和不同处理器的布置。另外,数据的传送,即基本信息和/或具体操作的结果从一个处理器到另一处理器的传送也依赖于这一架构。在这一情况下,如果在两个子处理操作的两次相继的起动之间的时间称为T,则在时间点t+k×T(其中t为任何时间点而k为任何整数),平台对至少一个子对象j执行与对至少一个子对象i在时刻t执行的操作相同的操作,这些具体操作施加到在各自的子对象中具有相同相对位置的具体操作结果和/或基本信息。这一点意味着所有子处理操作是相同的,从而允许相对小规模的代码,因为明确地写一个子处理操作,将其施加数次就行了。T是在两个子处理操作的两个相继起动之间的时间段,但是这一值并不必然等于完全执行子处理操作所需的时间。实际上,子处理操作可以在前一子处理操作完成之前起动,而这可以例如节省时间。
图2图示了这种假定(cas de figure),其中可见子处理操作ST1在子处理操作ST2开始时尚未完成。另外,子处理操作ST2在子处理操作ST3起动时仍在执行。
在一个实施例中,具体操作向处理器的分配和/或对执行各具体操作的时间的选择由平台编译器根据具体格式化数据确定。
为了最大程度地优化算法,使处理操作尽可能规则地执行可以是有用的。为了做到这一点,在本发明实施例之一中,该方法包括以下步骤:在将要向各子对象施加的具体操作的数量不是处理器数量Q的倍数和/或待处理的对象的基本信息的数量不是N的倍数情况下添加无效果具体操作和/或无效基本信息,使得具体操作的数量为Q的倍数而基本信息的数量为N的倍数。
在本发明的意义上,无效基本信息可以指具有不使用的任何内容的基本信息和/或通过复制其它基本信息获得的基本信息和/或通过计算获得的基本信息。
在一个实施例中,通用操作序列应用到称为逻辑块的至少一个基本信息集,而通用格式化数据针对涉及到至少两个逻辑块的通用操作还包括第二数据,该第二数据涉及逻辑块相对于彼此的特别是空间或者时间上的相对位置和/或相对尺度,其中必须施加各具体操作的基本信息和/或具体操作结果依赖于第二数据,以及其中在逻辑块相对于彼此的至少一个相对位置不是零的情况下,至少一个具体操作直接地或者间接地涉及到另一子对象的至少一条基本信息。在这一情况下,可以使用第二数据来计算在任何两个逻辑块之间的位置和相对尺度。可以据此推断各对应物理块的大小及其尺度和物理块各单元的绝对位置。
在本发明的一个实施例中,通用操作包括由按照对象的维度的绝对位置组成的逻辑块的至少一个通用位置操作,以及根据第三个块或者参数通过移位和/或尺度变化从第一个块获得第二个块的通用间接性操作。
在另一实施例中,通用操作包括从以下操作中选择的至少一个基本通用操作:逻辑块和/或参数的相加;逻辑块和/或参数的相减;计算逻辑块之差的绝对值;逻辑块和/或参数的相乘;至少两个逻辑块和/或参数中的最大值;至少两个逻辑块和/或参数中的最小值;逻辑块的分组和分组解除;通过将与相关表对应的参数应用于逻辑块来计算逻辑块;从至少两个逻辑块和/或参数中有条件地选择逻辑块,这一选择以如下方式进行:如果a>b,则选择c,否则选择d,其中a、b、c和d是逻辑块和/或参数;逻辑块的柱形图;根据参数和/或逻辑块改变逻辑块的尺度;根据参数和/或逻辑块对逻辑块进行相对移位;以及产生包含至少一个坐标的块的操作。
涉及到逻辑块和参数的通用操作如相加可以被转换成平台中的处理,并且例如当通用操作为相加时对应于将与逻辑块对应的所处理的物理块的各单元或者基本信息和与待处理的单元或者基本信息的绝对位置对应的参数的值相加。
这些操作本身在图像处理中以及其它类型的对象的处理中是相对常见的操作。然而,当它们结合第二数据向逻辑块施加时,这些操作可以解决前面提出的问题。这些操作充当用于形成可以在数据处理算法中实施的所有操作的基础。
因此,在一个实施例中,通用操作包括与本身用作基本通用操作的基本通用操作组对应的复杂通用操作。这些组特别地包括:与由最小值和最大值的计算组成的通用操作组对应的至少三个逻辑块和/或参数的中值的计算;逻辑块和/或参数的相乘/累加;逻辑块与参数的卷积,该卷积对应于由关于数个相对位置进行的相乘和相加组成的通用操作组;与最大值和最小值相结合的相加;梯度的计算,该梯度对应于两个相对位置之差的绝对值;由向量和数个逻辑块组成的参数的标量乘积以产生逻辑块;利用插值的尺度变化的计算,该计算对应于由关于数个相对位置进行的尺度变化、相乘和相加组成的通用操作组;逻辑块的组合,对应于由关于数个相对位置进行的尺度变化组成的通用操作组。
一些操作涉及到数个逻辑块。已经表明在这一情况下提供与相互利用的逻辑块的位置有关的第二数据。
特别是空间和或时间上的相对位置和相对尺度可以根据对象类型而对应于不同的概念。它们应用于任何2个块之间,无论它们的类型如何(在如上所述的图像情况下,逻辑块尤其可以是未处理、红、绿、8位...)。
在对象是具有方形像素的静止图像情况下,在一个实施例中,绝对或者相对位置可以对应于2个值(竖直的和水平的),绝对或者相对尺度对应于2个值(竖直的和水平的);对象最上一行的像素可以具有(0;0)(0;1)(0;2)...作为绝对位置,而第n行的像素可以具有(n;0)(n;1)(n;2)作为绝对位置;在这一情况下,相对位置可以用以下方式来编码:(-1;0)表示在上方;(0;1)表示在右侧;(0;0)表示同一位置(相对位置为零);而(2;-2)表示下移2个像素和左移2个像素;相对尺度(0.5;0.5)于是对应于在各方向上的一半分辨率。
更一般而言,相对移位和相对尺度的组合可以用以下方式使用2个函数f和g来编码:对于绝对位置为x、y的各像素而言为(f(x;y);g(x;y))。应当注意,为了例如取得最近像素,舍入规则是必要的。因此:
-上方相对位置用f(x;y)=-1和g(x;y)=0来编码;
-相对尺度0.7用f(x;y)=0.7×(x-x0)和g(x;y)=0.7×(y-y0)来编码;x0和y0对应于不变的绝对位置;
-失真矫正用与失真域对应的f和g来编码;
-YUV4:2:2格式变化,即使用单独的Y、U和V色度和亮度信息的YYUV可以使用以下函数以从Y1 Y2 Y3 Y4...获得Y1 Y2xxxxY3 Y4 xx xx...:如果x为偶数则f(x;y)=(x-x0)×0.5,如果x-x0为奇数则f(x;y)=(x+1-x0)×0.5,以及f(y)=y-y0;x0和y0对应于与绝对位置有关的参数。
以下非穷举列举提供了具有各种不同类型的对象的实施方式的其它实施例:
-在对象为具有两个相继的行偏移半个像素的按行布置的六边形像素的静止图像的情况下,绝对或者相对位置和绝对或者相对尺度可以各对应于2个值(竖直的和水平的);对象最上一行的像素可以具有(0;0)(0;1)(0;2)...作为绝对位置,而第n行的像素可以具有(n;0.5)(n;1.5)(n;2.5)作为绝对位置(如果该行是奇数行),或者具有(n;0)(n;1)(n;2)作为绝对位置(如果该行是偶数行);相对位置可以对应于2个值(竖直的和水平的),例如(-0.5;0.5)表示在右上方,(0,1)表示在右侧而(-0.5;1.5)表示位于右上方像素右侧的像素;相对尺度(0.5;0.5)于是对应于在各方向上的一半分辨率。另外,相对移位和相对尺度的组合可以用以下方式使用2个函数f和g来编码:对于绝对位置为x、y的各像素而言为(f(x;y);g(x;y))。应当注意,为了例如获得最近像素,舍入规则是必要的。
-在对象是具有方形像素的运动图像情况下,绝对或者相对位置可以对应于3个值(竖直的、水平的和时间的),例如(-1;0;0)表示在同一图像中位于上方的像素,(0;0;-1)表示在前一图像中同一位置的像素,而(2;-2;-1)表示在前一图像中位置下移2个像素和左移2个像素的像素。另外,相对移位和相对尺度的组合可以用以下方式使用3个函数f、g和h来编码:对于在时间t、绝对位置为x、y的各像素而言为(f(x;y;t);g(x;y;t);h(x;y;t))。应当注意,为了例如获得最近像素,舍入规则是必要的。
-在对象为单声道声音的情况下,绝对或者相对位置可以对应于1个值(时间);例如(-1)表示前一时间而(2)表示在2个单位时间之后;函数f(t)于是允许对移位和相对尺度进行编码。使用舍入规则以获得最近时间。
-在对象为多声道声音的情况下,绝对或者相对位置可以对应于2个值(时间、声道);例如(-1,0)表示针对同一声道的前一时间,而(2,1)表示对于例如在空间上以循环方式组织的后继声道而言在2个单位时间之后。另外,相对移位和相对尺度的组合可以用以下方式使用2个函数f、g来编码:对于声道c、位于时间t的各音频采样而言为(f(t;c);g(t;c))。应当注意,为了例如获得最近时间和声道,舍入规则是必要的。
-在对象为仿真网格的情况下,绝对或者相对位置可以对应于n个值,各值对应于根据网格拓扑的空间或者时间维度。另外,相对移位和相对尺度的组合可以使用n个函数来编码。应当注意,为了例如获得最近节点和时间,舍入规则是必要的。
-在对象为调制信号的情况下,绝对或者相对位置可以对应于分别与时间对应的n个值,这种情况适用于频率信道(在数个频率进行发送或者接收)以及适用于空间维度(在空间上定位的数个发送器或者接收器)。另外,相对移位和相对尺度的组合可以使用n个函数来编码并且必须选择舍入规则。
-在对象为测量值集的情况下,绝对或者相对位置可以对应于n个值,各值对应于视情况而定可以是时间、空间、频率、相位或者其它类型的对象维度之一。另外,相对移位和相对尺度的组合可以使用n个函数来编码并且必须选择舍入规则。
-在对象为n维的一般情况下,绝对或者相对位置可以对应于n个值,各值对应于视情况而定可以是时间、空间、频率、相位或者其它类型的对象维度之一。另外,相对移位和相对尺度的组合可以使用n个函数来编码并且必须选择舍入规则。
某些具体操作产生有可能后续用于另一子处理操作的结果。因此确定这些结果并将它们集中起来发送它们是有用的。
因此,在一个实施例中,该方法包括以下步骤:根据第二数据来确定用于另一子处理操作的后续具体操作所需的部分具体操作结果。
在另一实施例中,该方法也包括以下步骤:根据第二数据和/或遍历模式将用于另一子处理操作的后续具体操作所需的具体操作结果集中到存储器中。
在又一实施例中,具体操作由按照至少一个循环链而链接起来的计算单元执行,而该方法也包括以下步骤:根据第二数据来确定对于每一个具体操作是否应当按照循环链来发送所述具体操作的结果。在必要的情况下,该方法还包括以下步骤:根据第二数据和遍历模式来确定使用哪个循环链来发送所述具体操作的结果。
可以相互独立地或者组合地应用这些不同实施例。
优选地,用于第二数据的相对移位和/或相对尺度信息被用来确定针对给定通用操作的移位和/或尺度变化所依据的一个或者多个维度。因此,可以确定针对由通用操作序列转换的具体操作序列的各具体操作所要应用的一个或者多个循环链。优选地,所述循环链还包括至少一个队列。
当多个操作施加零移位时,在存储器中登记来自各具体操作的结果并且为后继操作来重读它们是无用的,这些存储和重读操作会浪费时间而对于处理操作无任何具体的益处。因此,在一个实施例中,具体格式化数据包括与具体操作的分组有关的信息,该分组包括形成用来执行(而无需存储对于另一子处理操作无用的每一个具体操作的结果)的一个或者多个具体操作的包。
在一个实施例中,序列的所有具体操作都被分组。
在一个实施例中,具体格式化数据仅包括一个嵌入循环集。
另外,某些具体操作可以施加到预先在另一子处理操作中已经使用的操作结果。例如,当具体操作序列包含应用来自中间计算的三行的过滤器时,在分解成与行对应的子对象的图像情况下:向第一子对象即第一行施加的过滤器操作例如也使用该图像的第二行和第三行。当将向第二子对象以及甚至针对第三行向第三子对象施加过滤器操作时,这同一过滤器操作也将使用第二行和第三行。在这一情况下,在存储器中存储这多行像素以免后续不得不在计算方面高成本地重新计算它们可能是有益的。
在对不同数据使用数个过滤器的情况下,以相似方式在存储器中存储其它数据可能是有用的。
因此,在一个实施例中,具体格式化数据包括以下操作,这些操作使得能够在平台的存储器中存储用于另一子处理操作的后续具体操作所需的至少部分具体操作结果。
另外,在一个实施例中,该方法包括以下步骤:根据其它子对象相对于所述子对象的相对位置将在所述其它子对象的子处理操作过程中使用的来自具体操作的结果集中于存储器中。
现在将描述下文进一步所述应用具有队列的循环链的实施例例子。在这一例子中,遍历模式是这样的:N等于5,对象分解成10×5个子对象,逐个处理水平设置的10个子对象,然后处理位于下方的10个子对象,等等。按照水平维度来使用的队列包含来自前一迭代的数据,而竖直使用的队列包含来自10个先前迭代的数据。具体操作结果在存储器中的集中因此依赖于遍历模式。在另一子对象的子处理操作过程中使用的具体操作结果在存储器中的集中因此依赖于所述另一子对象相对于所述子对象的相对位置。
该方法在某些情况下也包括以下步骤:将在子对象的子处理过程中执行的具体操作的、在其它子对象的子处理过程中使用的结果集中在至少一个队列中。
在一个实施例中,其中根据至少一个循环链来链接计算单元,该链还包括至少一个队列。
在一些情况下,具体格式化数据包括:与存储器中的基本信息和/或具体操作结果从平台的一个存储器位置到另一存储器位置的传送有关的信息。下文进一步描述的转换的第五例子包含这样的传送。
在一个实施例中,至少一个具体操作本身可以使得其具有边缘效应,即丢失位于被施加这些操作的子对象的边缘的某些信息。为了避免这些边缘效应,图像被分解成具有重叠的子对象,即它们共有一些基本信息。因此,具体格式化数据包括使得在平台中多次计算具体操作结果的具体操作,使得特别是在子对象在至少一个维度上重叠的情况下,在执行具体操作时不丢失信息。下文进一步描述的转换的第五例子包含这样的重叠。
在一个实施例中,具体格式化数据包含用以使平台能够访问存储的基本信息和/或具体操作的至少部分结果的寻址信息,其中此寻址信息是“基地址+偏移量”或者“(基地址+偏移量)模(缓冲存储器的大小)”的形式,在各子处理操作之间,偏移量对于同一个具体操作的结果是恒定的。在一个实施例中,针对各子处理操作来修改基地址。
优选地,缓冲存储器集成到处理平台的存储器之一中。特别地,缓冲存储器可以是队列。
在一个实施例中,该方法包括以下步骤:根据具体操作的顺序来计算偏移量以便向平台提供空的存储器位置或者包含不再使用的具体操作结果或者基本信息的存储器位置的地址以便存储来自具体操作的结果。考虑到特别是具体操作的不同参数来执行这一计算以免从存储器中擦除如上文所述将在另一子处理操作中或者由另一具体操作后续使用的信息。因此,通过简易的地址计算和重用存储器来获得循环缓冲器,实现了存储后续计算所必需的中间数据。特别是在按行进行处理的图像情况下,保持了在竖直过滤器的输入端使用的行。
在一个实施例中,该方法也包括以下步骤:根据第一数据来确定所述偏移量,偏移量对于通过转换第一数据的通用操作序列来获得的具体操作序列的各具体操作而言是不同的。例如,利用形式为“基地址+偏移量”或者“(基地址+偏移量)模(位于平台中的缓冲存储器的大小)”的寻址信息来实施至少一个队列:第二数据用来确定待使用的队列。
为了向子对象施加具体操作,使用循环以便减少代码的量并且使它更均匀一般是有益的。因此,在一个实施例中,处理操作包括根据遍历模式来计算至少一个循环、一个或者多个循环的迭代次数以及当有数个循环时的循环嵌套。以下转换例子示出了可以根据平台来自动计算循环,这与根据平台来人工对循环进行编码的已知语言是不同的。
特别是在待处理的对象是被分解成矩形形式的子对象的图像并且选择水平地或者竖直地遍历子对象的情况下,这些循环可以例如用来遍历子对象。
同样地,具体格式化数据在一些情况下包括处理操作所必需的临时变量。
一些具体操作使用参数,而在这一情况下这些例如可以是相乘因子的参数的值也可以被处理。这些参数可以例如对应于(以下列举不具限制性):
-过滤器因子,和/或
-饱和度值,和/或
-偏移量值,和/或
-相关表。
在一个实施例中,具体操作所用参数的值依赖于子对象的绝对位置和/或在这些具体操作中直接地或者间接地应用的基本信息在子对象中的位置。例如,在待处理的对象为图像的情况下,可能由于用来拍摄的光学器件而在图像上出现缺陷。这些缺陷在整个图像中、特别是在边缘上一般是不均匀的。在这一情况下,为了补偿所述模糊,不会向图像的所有像素应用相同的补偿因子。
例如,将为所有基本信息所共用的参数用于过滤器实现了以均匀方式增加清晰度。
例如,将与基本信息在待处理的对象中的绝对位置有关的参数用于过滤器,允许在边缘处以更明显的方式增加清晰度以便补偿光学缺陷。
例如,使用与基本信息在待处理的对象中的绝对位置有关的参数来矫正渐晕,允许在边缘处生成更高的补偿以便补偿光学缺陷。
例如,使用与基本信息在待处理的对象中的绝对位置有关的参数来进行去马赛克操作,允许以不同的方式处理从传感器接收的未处理图像中的“红”像素、“绿”像素和“蓝”像素。
例如,使用与基本信息在待处理的对象中的绝对位置有关的第二数据、特别是移位来进行数字放大计算(“缩放”)或者失真矫正计算,能够获得计算各点插值所需的像素。
在一个实施例中,参数的值根据这一参数的类型而可以是:
-对于算法而言是恒定和固有的;在这一情况下参数的值特别地可以发送到处理装置或者平台,和/或
-依赖于对象的源头或者目的地:例如,在待处理的对象为来自配备有给定光学器件的设备的图像情况下,参数的值可以依赖于对图像中的模糊程度有影响的光学器件类型;在这一情况下,参数的值特别地可以发送到处理装置或者平台,和/或
-依赖于待处理的对象:例如,在待处理的对象为来自传感器的图像情况下,参数的值可以依赖于有效地用来捕获对图像中的噪声水平有影响的所述对象的传感器的增益;在这一情况下,参数的值特别地可以由平台发送、选择或者计算,和/或
-依赖于基本信息在对象中的绝对位置;在这一情况下,参数的值特别地可以由平台发送、选择或者计算,和/或
-不依赖于基本信息在对象中的绝对位置。
可以与算法的限定同时地或者在此之后确定参数值。
已经看到,某些参数的值可以因对象而不同、因子对象而互不相同或者因基本信息而不同。在这一情况下,在一个实施例中,在每次变化时计算参数的值。
在另一实施例中,预先计算参数的可能值,而在每次变化时确定索引或者地址以实现对例如表中的参数值的访问。在尤其适应于其值根据子对象的绝对位置而随子对象而变化并且值的数目有限的参数(例如对应于光学部件的模糊特征的参数)的又一实施例中,确定有限数目的参数值集,存储各参数值集,并且,对于各子对象,例如通过计算给定待使用的参数值集的地址的函数来选择待使用的参数值集。
如前所述,在施加某些具体操作的过程中使用参数。为了使这一点成为可能,在一个实施例中,具体格式化数据包括参数的一个或者多个值和/或用于参数的一个或者多个值的计算代码。
在另一实施例中,根据处理平台来选择一个或者多个参数的一个或者多个值,使得处理操作考虑到这一平台的特征。因此,相同算法可以供数个平台使用,而仅变化这些特征来使这一算法适应于各所需平台。
在另一实施例中,这些参数值依赖于待处理的对象。
在本发明实施例之一中,具体操作包括以下操作中的至少一个具体计算操作:相加、相减、相乘、应用相关表、最小值、最大值和选择。
在一个实施例中,至少一个具体计算操作也执行偏移和/或饱和和/或舍入。根据本发明,选择计算的具体操作允许根据第三数据项的值从至少两个数据项中选择数据。
在一个实施例中,通过使用相关表的输入和有限数目的因子进行计算来应用相关表。在一个实施例中,因子的有限数目固定为8。
在一个实施例中,具体操作由借助至少一个循环链CC1连接起来的计算单元执行;所述循环链CC1还包括至少一个队列;来自具体操作序列的至少一个具体操作IS4将在计算单元UC1上执行的具体操作IS5的结果发送到根据所述链在所述计算单元UC1之后的计算单元UC2或者队列。
在一个实施例中,IS4具体操作从队列向在队列之后的计算单元UC0发送在前一子处理操作过程中执行的具体操作IS5的结果。优选地,队列允许以与数据输入队列的顺序相同的顺序来输出数据。优选地,包括计算单元和队列的链包括一种允许对启动操作进行管理的机制:如果队列为水平链的一部分而对象为图像,则以规则方式初始化队列,例如在各行开始时初始化队列;在首次执行具体指令IS4时,没有数据从队列发送到UC0;接着,具体操作IS4从队列向在队列之后的计算单元UC0发送在前一子处理操作过程中执行的具体操作IS5的结果。在一个实施例中,子对象包括DSO个维度,具体操作由借助至少一个循环链CC1按照子对象的预定维度DD而链接起来的计算单元执行;所述循环链CC1还包括至少一个队列;该方法还包括以下步骤:对于至少一个具体操作,对于每次施加所述具体操作:
-将计算单元UC1上执行的具体操作的应用的结果发送到按照所述链在所述计算单元UC1之后的计算单元UC2或者队列,
-根据子对象在对象中的位置有条件地从队列向在队列之后的处理单元UC0发送在另一子对象的处理过程中向队列发送的具体操作的应用结果。
在另一实施例中,具体操作包括从换位、复制、二次采样中选择的至少一个几何具体操作。
具体几何操作尤其允许:
-数据排序,
-选择数据以便执行尺度变化、二次采样或者超级采样的计算,
-选择数据以便删除特别是在边缘上的无用数据。
在一个实施例中,具体操作由根据至少一个循环链而链接起来的计算单元执行;所述链还包括至少一个队列。
在另一实施例中,具体操作由根据至少一个循环链而链接起来的计算单元执行;所述链还包括至少一个队列,该队列有大小和/延时,该方法还包括以下步骤:根据通用操作序列和遍历模式来确定队列的大小和/或延时。
优选地,如上所述,队列包括数个数据流并且实现为各数据流存储相同数目NF的数据。NF取决于子对象的相对部署和遍历模式,使得在处理产生数据的子对象与处理使用所述数据的子对象之间处理NF-1个子对象。
优选地,待处理对象是图象并且基本信息是此图象的像素。
因此,在一个实施例中,处理平台是图象捕捉或者再现设备的一部分,并且参数的值与用于图象捕捉和/或还原设备的软件和/或光学器件和/或传感器和/或成像器和/或电子器件的特性相关。这些特性可以是例如对所有对象而言是固定的内在的特性,或者是随对象而变化的特性,比如根据传感器增益而改变的噪声特性。这些特性也可以对所有基本信息是相同的,或者随基本信息的绝对位置而变化,比如光学部件的模糊特性。
在另一实施例中,待处理对象是数字音频信号,在这种情况下,基本信息为对所述信号的音频采样。在这种情况下,在第二数据中体现的相对位置通常会是时间位置。不过,也有可能这些位置是空间的,特别是在待处理对象是在数个声道上呈现的声音的情况下。
在本专利的另一实施例中,特别是在数字仿真的情况下,待处理对象是数字网格且基本信息是表征每个网格点的空间和/或时间信息。
在此描述的具体格式化数据可以被直接提供给处理平台。但是它们也可以在一种公知的计算机语言比如C或VHDL语言中提供给用来为平台翻译该计算机语言的编译器。这允许例如使用配备有编译器的现有平台,而无需考虑寄存器的分配或者指令的时间调度。
本发明还涉及一种处理通用格式化数据的系统,所述通用格式化数据包括描述无循环通用操作序列的第一数据。该系统为包含Q个处理器和至少一个存储器的预定平台直接或间接地提供具体的格式化数据,该平台被用来根据具体格式化数据来处理由同一类型基本信息所组成的对象,各基本信息由至少一个数值来表示,
该系统包括:
-根据平台将通用操作序列转换成具体操作序列的装置,
-根据平台架构和对象拓扑,以独立于第一数据的方式确定处理操作所必须的循环集的装置,
-计算包含这样确定的循环和具体操作序列具体格式化数据的装置,所述具体格式化数据直接或者间接地允许在代码量和/或存储器大小和/或计算时间方面以针对平台优化的方式处理符合通用格式化数据的对象。
在一个实施例中,该系统包括:
-根据平台架构和对象拓扑,以独立于第一数据的方式确定平台中基本信息的遍历模式,所述确定遍历模式的装置包括用于选择和/或计算以下项目的装置:
-根据平台确定的基本信息到子对象的分组,每个子对象包括数量为Q的倍数的N个基本信息,平台中的所述处理在于定期发起子处理操作,所述子处理操作在于将具体操作序列应用到子对象之一,
-根据平台确定的子对象的形式和重叠,
-根据平台确定的对子对象的处理顺序,以及
-考虑遍历模式来计算具体操作序列和/或确定为处理操作所必须的循环集的装置。
在一个实施例中,该系统包括用于确定每个处理器执行具体操作序列中的哪一个或哪些具体操作的装置,每个具体操作在各子对象上被应用至少N次,各具体操作在它的N次应用中至少直接和/或间接地应用一次各个子对象的基本信息并且恰好生成N个结果;该方法还包括将如此确定的信息添加到具体格式化数据的步骤。
在一个实施例中,该系统包括用于在时段的各相关时刻点确定每个处理器执行具体操作序列中的哪一个或哪些具体操作的装置,每个具体操作在各子对象上被应用至少N次,各具体操作在它的N次应用中至少直接和/或间接地应用一次各个子对象的基本信息并且恰好生成N个结果;该方法还包括将如此确定的信息添加到具体格式化数据的步骤。
在一个实施例中,该系统包括用于在将向各子对象施加的具体操作的数量不是处理器数量Q的倍数和/或待处理的所述对象的基本信息的数量不是N的倍数情况下,添加无效果具体操作和/或无效基本信息,使得具体操作的数量为Q的倍数而基本信息的数量为N的倍数的装置。
在一个实施例中,该系统包括:
-使得所述通用操作序列施加到称为逻辑块的至少一个基本信息集的装置,
-用于接收包括第二数据的通用格式化数据的装置,所述第二数据用于涉及到至少两个逻辑块的通用操作,涉及逻辑块相对于彼此的特别是空间和/或时间上的相对位置和/或相对尺度,
-使得应被施加每一个具体操作的所述基本信息和/或具体操作结果依赖于第二数据的装置,以及
-使得在逻辑块相对于彼此的至少一个相对位置为非零的情况下至少一个具体操作直接地或者间接地涉及到另一子对象的至少一条基本信息的装置。
在一个实施例中,该系统包括用于根据第二数据来确定用于另一子处理操作的后续具体操作所需的部分所述具体操作结果的装置。
在一个实施例中,该系统包括存储器,根据第二数据和/或所述遍历模式,用于另一子处理操作的后续具体操作所需的所述具体操作结果集中于所述存储器中。
在一个实施例中,该系统包括:按照至少一个循环链而链接起来的计算单元和用于根据针对各具体操作的第二数据来确定是否应当按照循环链来发送所述具体操作的结果的装置。该系统还包括用于,在必要的情况下,根据第二数据和所述遍历模式来确定用来发送所述具体操作结果的循环链的装置。
在一个实施例中,该系统包括使得具体格式化数据包括与具体操作的分组有关的信息的装置,所述分组在于形成待执行的、无需保存用于另一子处理操作的各具体操作的结果的一个或者多个具体操作的包。
在一个实施例中,该系统包括使得具体格式化数据包括以下具体操作的装置,所述具体操作允许在所述平台的存储器中保存用于另一子处理操作的后续具体操作所需的至少部分所述具体操作结果。
在一个实施例中,该系统包括存储器,根据另一子对象相对于所述子对象的相对位置,在所述另一子对象的子处理操作过程中使用的具体操作结果被集中于所述存储器中。
在一个实施例中,该系统包括至少一个队列,在子对象的子处理操作过程执行的具体操作的、在另一子对象的子处理过程中使用的结果被集中于所述队列中。
在一个实施例中,该系统包括使得具体格式化数据包括以下具体操作的装置,所述具体操作使得在平台中多次计算具体操作结果,使得特别是子对象在对象的至少一个维度上重叠的情况下在执行具体操作时不丢失信息。
在一个实施例中,该系统包括使得具体格式化数据包含使平台能够访问存储器中的具体信息和/或至少部分具体操作结果的寻址数据的装置,其中寻址信息为“基地址+偏移量”或者“基地址+偏移量模(位于平台中的缓冲存储器的大小)”的形式,偏移量对于来自同一个具体操作的结果而言是恒定的。
在一个实施例中,该系统包括用于为各子处理操作而修改基地址的装置。
在一个实施例中,该系统包括用于根据具体操作的顺序来计算偏移量以便向平台提供空的存储器位置或者包含不再使用的具体操作结果或者基本信息的存储器位置的地址以便存储具体操作结果的装置。
在一个实施例中,该系统包括用于根据遍历模式来计算至少一个循环、一个或者多个循环的迭代次数以及当有数个循环时的循环嵌套的装置。
在一个实施例中,该系统包括用于处理至少一个参数的装置,使得具体操作所用一个或者多个参数的一个或者多个值依赖于在这些具体操作中直接地或者间接地应用的基本信息在子对象中的位置。
在一个实施例中,该系统包括用于处理至少一个参数的装置,使得具体格式化数据包括一个或者多个参数的一个或者多个值和/或用于一个或者多个参数的一个或者多个值的计算代码。
在一个实施例中,该系统包括用于处理至少一个参数的装置,并包括用于根据处理平台来选择一个或者多个参数的一个或者多个值,使得处理操作考虑到该平台的特征的装置。
在一个实施例中,该系统包括用于还处理至少一个参数的装置,使得一个或者多个参数的一个或者多个值依赖于待处理的对象。
在一个实施例中,该系统包括用于实现以下一组操作中的具体操作的装置:相加、相减、相乘、应用相关表、最小值、最大值和选择。
在一个实施例中,该系统包括借助至少一个循环链CC1而链接起来的计算单元,所述循环链CC1还包括至少一个队列;该系统包括用于将在计算单元UC1上执行的具体操作IS5的结果传送到按照所述链在所述计算单元UC1之后的计算单元UC2或者队列的装置。
在一个实施例中,该系统包括用于执行从换位、复制和二次采样中选择的至少一个几何具体操作的装置。
在一个实施例中,该系统包括借助至少一个循环链而链接起来的计算单元,该循环链包括至少一个队列。
在一个实施例中,该系统包括按照至少一个循环链而连接起来的计算单元,该循环链还包括至少一个队列,该系统包括用于根据通用操作序列和遍历模式来确定队列的大小和/或延时的装置。
在一个实施例中,该系统包括使得待处理的对象为图像以及使得基本信息为该图像的像素的装置。
在一个实施例中,该系统包括使得处理平台是图像捕获和/或再现设备的一部分以及使得一个参数或者多个参数的一个值或者多个值与用于图像捕获和/或表现设备的软件的和/或光学器件的和/或传感器的和/或成像器的和/或电子器件的特征有关。
在一个实施例中,该系统包括使得待处理的对象为数字音频信号以及使得基本信息为该信号的音频采样的装置。
在一个实施例中,该系统包括使得待处理的对象为数值网格以及使得基本信息为表征网格各点的空间和时间信息的装置。
附图说明
本发明的其它特征和优点将从受附图支持的对本发明一些实施例的非限制描述中变得清楚,在附图中:
-已经描述的图1a、1b、1c、1d、1e和1f示出了根据本发明将图像分解成子对象的例子,
-已经描述的图2示出了多个子处理操作的定序的例子,
-图3示出了使用根据本发明的方法的设备,
-图4示出了向多个逻辑块和一个参数施加的通用操作序列的例子,
-图5示出了根据本发明的方法所提供的具体格式化数据的结构,以及
-图6、图7和图8示出了可以接收根据本发明的方法所提供的具体格式化数据的平台的不同架构,
-图9a、9b和9c示出了在可以接收根据本发明的方法所提供的具体格式化数据的平台中处理器的链接的例子。
具体实施方式
图3中所示设备用来处理图像22,该图像是由至少一个数值代表的像素的集合。
在该设备中,数字数据处理装置10具有通用格式化数据12。该处理装置例如是编译器。
通过根据本发明的方法提供的通用格式化数据包括描述了通用操作的序列并且给出了这些通用操作中涉及到的逻辑块的相对位置的第一和第二数据14。将参照图4描述此第一和第二数据。
处理装置10也在输入端接收根据处理平台20如图像捕获或者再现设备的特征来选择或者计算的遍历模式24。
使用此通用格式化数据12和这些参数,处理装置10向处理平台20提供具体格式化数据18。
具体格式化数据包含不同类型的数据,比如与像素在平台的存储器中的组织、平台处理像素的顺序或者甚至平台所执行的具体操作的分组有关的数据。
平台20然后使用所述具体格式化数据18来处理它在输入端接收的图像22。
图3因此图示了本发明的数个优点。
-通用格式化数据12可以快速地被加以修改或者取代并且被转换成针对平台而优化的具体格式化数据18。这将减少平台的市场化所花费的时间。
-通用格式化数据12可以快速地被转换成针对数个平台而优化的具体格式化数据。这也将减少数个平台的市场化所花费的时间。
下表4和图4以向逻辑块B1施加的通用操作序列的形式示出了通用格式化数据的例子。这一序列包括三个通用操作。表中的列依次示出了:
-操作在序列中的次序,
-通用操作的名称,
-在其上写入通用操作结果的逻辑块(输出),即如果在各操作结束时重建对象,则所述结果所在的位置,
-通用操作的第一输入(输入1),这可以是逻辑块或者参数,
-要使用的逻辑块相对于在输入1处的逻辑块(如果有的话)的相对位置,
-通用操作的第二输入(输入2),这也可以是逻辑块或者参数,
-要使用的逻辑块相对于在输入2处的逻辑块(如果有的话)的相对位置。
位于“相对位置”列中的信息是存在于向使用根据本发明的方法的处理装置提供的第二数据中的信息。在该表中,出于简洁易懂考虑,所述信息为“左”和“右”的形式,然而实际上,在通用格式化数据中,其也可以如在上述实施例中所述通过数值如(0;1)和/或通过函数如f(x;y)来编码。
在一个实施例中,通用操作根据对象的维度之一来生成由绝对位置组成的逻辑块,另一所谓的间接(indirection)通用操作允许通过基于第三个块由第二个块指示的移位和/或尺度变化来获得块。然后可以借助于对所述块的通用操作来进行对给出相对位置和/或相对尺度例如0.5×(x-100)的函数的计算,然后使用间接通用操作来执行相应的相对尺度变化和/或相对移位。
表4仅为一个编码例子,可以用列表格式、也可以用符号格式、用图标格式或者任何其它格式以各种方式对第一数据和第二数据进行编码。另外,出于简化考虑在该例中没有示出与数据类型、偏移和饱和度有关的附加信息。
表IV
序列 | 操作 | 输出 | 输入1 | 相对位置输入1的块 | 输入2 | 相对位置输入2的块 |
1 | 相加 | B2 | B1 | 左 | B1 | 右 |
2 | 列表 | B3 | Param1 | B2 | ||
3 | 相乘 | B4 | B3 | B1 |
在这一操作序列中使用的第一逻辑块是逻辑块B1(51)。第一通用操作是逻辑块B1向左的偏移(51g)与逻辑块B1向右的偏移(51d)之间的相加。这一相加的结果记录于块B2(53)中:B2=B1左+B1右。
第二操作(54)是块B2(53)相对于表的变换。这一操作因此以块B2(53)还有代表了修改表的参数Param1(55)作为输入。这一操作的结果记录于块B3(56)中:B3=LUT(Param1,B2)。
在这一序列中的第三和最后操作(57)是逻辑块的相乘。这一操作以逻辑块B3(56)和逻辑块B1(51)作为输入:B4=B3×B1。
逻辑块B4(58)因此是在通用操作序列结束时获得的块。
在表1的例子中的通用格式化数据独立于平台、独立于对象到子对象的分解、独立于对象的基本信息的遍历模式、独立于在平台中处理基本信息的顺序以及独立于存储器中的组织。实际上,在列举不具限制性的情况下,具体可以根据以下转换用各种方式将表1中的通用格式化数据转换成例如具体格式化数据或者用于平台的代码。
第一转换例子虽然在存储器和计算时间方面并非最优,但是可以用来说明不涉及到子对象的分解的简易转换:
对于输入对象BP1(对应于逻辑块B1)的除左右两列之外的各像素,从左到右、然后从上到下遍历所述像素:
将当前像素左边的像素和右边的像素相加在一起、将结果存储于物理块BP2(对应于逻辑块B2)中。
对于从左到右、然后从上到下遍历的BP2的各像素:
将表应用于当前像素并且将结果存储于物理块BP3(对应于逻辑块B3)中。
对于从左到右、然后从上到下遍历的BP3的各像素:
将当前像素与BP1的对应像素相乘并且将结果存储于物理输出块BP4(对应于逻辑块B4)中。
第二转换例子表明不改变通用格式化数据即可减少所用存储器的大小。实际上,在第一例子中,使用图像的大小相近的4个物理块。通过将同一存储器用于BP2、BP3和BP4可以使用仅2个物理块。获得以下转换:
对于输入对象BP1(对应于逻辑块B1)除左右侧两列之外的各像素,从左到右、然后从上到下遍历所述像素:
将当前像素左边的像素和右边的像素相加在一起、将结果存储于物理块BP2(对应于逻辑块B2)中。
对于从左到右、然后从上到下遍历的BP2的各像素:
将表应用于当前像素并且将结果存储于物理块BP2(现在对应于逻辑块B3)中。
对于从左到右、然后从上到下遍历的BP2的各像素:
将当前像素与BP1的对应像素相乘并且将结果存储于物理输出块BP2(现在对应于逻辑块B4)中。
第三转换例子表明不改变通用格式化数据即可减少计算时间。实际上,在第二例子中,使用图像的大小相近的2个物理块,但是写入物理块BP2共计3次、读物理块BP1共计2次和读物理块BP2共计2次。这对于不同遍历模式和不同块,可以仅限于一次读和一次写。这减少了所需指令的数目而且也降低了存储器存取要求。获得以下转换:
对于输入对象BP1(对应于逻辑块B1)除左右两列之外的各像素,从左到右、然后从上到下遍历所述像素:
执行以下具体操作序列:将当前像素左边的像素和右边的像素相加在一起、将表应用于结果并且将表输出与当前像素相乘、将结果存储于当前物理输出块BP2(对应于逻辑块B4)中。
在尤其适合具有高速缓存的标量处理器的第四例子中,在与输入相同的存储器区中写入结果。这甚至进一步减少存储器大小并且使存储器存取成为局部的,这在高速缓存存储器或者页式存储器中非常有益。因此,获得以下转换:
对于输入对象BP1(对应于逻辑块B1)除左右两列之外的各像素,从左到右、然后从上到下遍历所述像素:
执行以下具体操作序列:将当前像素左边的像素和右边的像素相加在一起、将表应用于结果并且将表输出与当前像素相乘、取代当前像素左边的像素将结果存储于当前物理输出块BP1中(相对于当前像素不再使用左像素,该当前像素将成为用于下一迭代的左像素;BP1部分地对应于逻辑块B4而部分地对应于逻辑块B1)。
第五转换例子尤其适合具有小型快速存取存储器和大型慢速存储器的信号处理处理器,各子对象是使快速存取存储器的使用最大化的例如32×32或者任何其它值的矩形,这些矩形是邻接的。因此,获得以下转换:
对于各子对象,从左到右、然后从上到下遍历所述子对象:
起动经由DMA(“直接存储器存取”)机制进行的下一物理输入块从慢速存储器到快速存取存储器的转移,所述下一输入物理块与向左和向右扩展一个附加列即32×34的下一子对象对应。
起动经由DMA(“直接存储器存取”)机制进行的前一物理输出块从快速存取存储器到慢速存储器的转移。
采用在前一迭代的DMA结束时获得的向左和向右扩展一个附加列即32×34的当前子对象对应的物理块作为输入。
对于从左到右、然后从上到下遍历的物理输入块(对应于逻辑块B1)除左右两列之外的每一个像素:
执行以下具体操作序列:将当前像素左边的像素和右边的像素相加在一起、将表应用于结果并且将表输出与块的当前像素相乘、将结果存储于当前物理输出块(对应于逻辑块B4)中。
第六转换例子适合能够将同一个计算应用于向量的不同像素的向量信号处理器,各子对象是例如64个水平像素或者与平台能够处理和存储的向量的大小相等的任何其它值的矩形。这一转换并不需要存储器,因为一次一个地处理向量。因此获得以下转换:
对于输入对象BP1(对应于逻辑块B1)除左边两列之外的各子对象V1,从上到下、然后从左到右遍历所述子对象,执行以下具体操作序列:
在各行的开始处创建右边包含该行的2个左边像素的向量V0。
从V0和V1提取与V0的右边两个像素和除V0的右边2个像素之外的V1的两个左边像素对应的向量V2;
将V1和V2相加在一起获得V2、将表应用于V2的各像素以获得V2、从V0和V1提取与V0的右边像素和除V0的右边像素之外的V1的左边像素对应的向量V3;为后继迭代将V1复制到V0中;将V2与V3相乘获得V2、将结果V2存储于当前物理输出块中。
上述例子表明了可以使用相同的通用格式化数据针对适合不同平台的存储器结构、循环和并行程度以多种方式进行转换。具体为:
-通过仅使用单个循环来减少代码量,和/或
-减小存储器的大小、在例子中减小为0,但是在有竖直过滤器的更一般情况下,还是需要一些存储器行,以避免针对竖直过滤器的输入数据的重复计算,和/或
-特别是通过对循环进行分组,可以减少所需操作的数目,和/或
-适应任何大小的向量,和/或
-适应任何存储器架构。
第三、第四、第五和第六例子是将通用操作序列转换成具体操作序列的例子。
出于简化考虑,这些例子产生比输入图像更小的图像。如果必要,则可以通过在各行的开始和结束处添加代码以复制边缘像素来容易地获得大小与输入图像相同的输出图像。
图5示出了在使用根据本发明的方法的处理装置的输出端处具体格式化数据的结构。处理装置使用向处理装置提供的通用格式化数据32以及使用这一处理装置所确定的遍历模式34来计算具体格式化数据。通用格式化数据包括第一数据36,该第一数据包含描述处理装置将要执行的至少一个通用操作或者操作序列的数据38。通用格式化数据还包括第二数据40,该第二数据对于涉及至少两个逻辑块的通用操作而言涉及逻辑块相对于彼此的位置和相对尺度。使用此通用格式化数据和遍历模式34,处理装置提供与具体操作有关的数据42和与循环有关的数据44。此数据42和44是具体格式化数据30的一部分。
现在将描述通过根据本发明的方法可以确定的遍历模式的数个例子。这些遍历模式各自使用于在图6至图8之一中示出其架构的平台中。
在图6所示第一例子中,处理平台包括一维链接起来的五个处理器。这意味着从处理器ProcA输出的计算结果用作处理器ProcB的输入,等等。从ProcE处理器输出的基本信息用作处理器ProcA的输入。
每一个处理器配备有表示为MemA至MemE的有限容量的存储器。该存储器单元用于存储对处理器执行的具体操作有用的参数值,或者供处理器快速重用的基本信息或者操作结果。
在该第一例子中,处理操作包括将表示为OP1至OP8的八个操作的序列应用于组成对象的基本信息。
为了处理所述对象,对象应分解成各有N条基本信息的子对象。N应是Q(Q=5,计算单元的数量)的倍数,是在平台的上游特别是根据平台的存储器容量、由根据本发明的方法确定的。
另外,为了执行具体操作的规则定序,根据本发明的方法创建无效果的具体操作OP9和OP10,使得将要对各子对象执行的具体操作的数量为可用处理器数量的倍数。
根据具体操作类型,各操作被分配给处理器执行。这里:
-处理器A执行OP1和OP6
-处理器B执行OP2和OP7
-处理器C执行OP3和OP8
-处理器D执行OP4和OP9,以及
-处理器E执行OP5和OP10。
各处理器执行与已经分配给它的具体操作对应的指令集(InsA至InsE)。在有限容量的存储器中存储的参数也依赖于这一分配。例如,如果OP1是用2进行的乘法,则存储器MemA将包含数字2。
一旦实现这些分配,则根据下表I描述的定序来进行操作。
在该表中,T1、T2、......T13表示进程进展时间。
表I
每一个行代表10个具体操作OP1至OP10之一。每一列代表基本信息IE1至IE5之一,各基本信息组成待处理的子对象。这一记法IE1至IE5是形式上的;它并不必然对应于空间或者时间上的实情。实际上,某些具体操作生成基本信息的移位。因此,具体操作OP2所处理的信息IE1可以不是向信息IE1施加的具体操作OP1的结果,而是(例如,如果具体操作OP1包括朝左偏移的话)是向信息IE2施加的这一具体操作OP1的结果。
该表中的每一格包含执行具体操作的处理器的名称以及在处理操作过程中执行这一具体操作的时间。显然,此表仅代表处理操作的一部分。这里假设事先已经在处理操作中计算了所需具体操作的全部结果。
因此,示出了在时刻T1,ProcA处理器对子对象1的第一信息IE1执行操作OP1。在这一时间点,其它处理器在执行此表中未示出的其它操作。
在时刻T5示出了各处理器对子对象1的信息之一执行操作。
当一个处理器已经对子对象的所有基本信息执行了一个具体操作时,它转到分配给它的操作中的下一个操作。因此,ProcA处理器从T6起执行操作OP6。
一旦处理器已经执行所有分配给它的操作,就处理后继子对象。因此在平台中同时处理两个不同子对象(子对象1和子对象2)。
在该表中,清楚地示出了执行各具体操作N次(这里N=5)。
通过在处理器的维度之一上的循环链来获得这一定序。基本信息因此可以从一个计算单元传递到另一计算单元。例如,基本信息IE1经过所有处理器以“经历”具体操作OP1至OP5、然后返回到ProcA处理器以再次开始循环和“经历”操作OP6至OP7。(注意,如上所述,初始基本信息IE1并非必然在所有步骤中都是IE1信息)。因此可见本发明实现了生成适合脉动式(systolic)架构的具体格式化数据,该架构的优点尤其是本地存储参数值以及能够连接数据路径。可以注意能够至少部分地在平台上通过编译器来执行准确定序。在这一情况下,具体格式化数据不含时间上的绝对定序而是对定序的限制。
在图7所示第二例子中,平台包含链接到公共存储器的五个处理器。这样的结构是经典的:它对应于(“单指令多数据”或者SIMD型)向量信号处理器的结构。
在该例中,各处理器单独地链接到能够包含参数如相关表T的小型存储器。在这一结构中,各处理器执行所有具体操作。因此,所有处理器接收同一指令集INS。
在该第二例子中,考虑到操作之一包括使用表来修改一条或者多条基本信息的情况。如上所见,各处理器具有对它自己的表的访问权,所有表都是相同的。在一个替代方式中,各存储器为处理器组所共享。在一个替代方式中,所有处理器共享同一存储器而同时获得同一参数;在这一情况下,必须通过使用一个或者多个参数以例如计算多项式这样的计算来实现相关表的应用。
这涉及到并行操作:在各进程时间,所有处理器对不同基本信息执行同一操作。下表II说明了这一过程。
在该表中,T1、T2、......T10标识进程进展时间。
表II
IE1 | IE2 | IE3 | IE4 | IE5 | |
OP1 | T1-ProcA | T1-ProcB | T1-ProcC | T1-ProcD | T1-ProcE |
OP2 | T2-ProcA | T2-ProcB | T2-ProcC | T2-ProcD | T2-ProcE |
OP3 | T3-ProcA | T3-ProcB | T3-ProcC | T3-ProcD | T3-ProcE |
OP4 | T4-ProcA | T4-ProcB | T4-ProcC | T4-ProcD | T4-ProcE |
OP5 | T5-ProoA | T5-ProcB | T5-ProcC | T5-ProcD | T5-ProcE |
OP6 | T6-ProcA | T6-ProcB | T6-ProcC | T6-ProcD | T6-ProcE |
OP7 | T7-ProcA | T7-ProcB | T8-ProcC | T7-ProcD | T7-ProcE |
OP8 | T8-ProcA | T8-ProcB | T8-ProcC | T8-ProcD | T8-ProcE |
OP9 | T9-ProcA | T9-ProcB | T9-ProcC | T9-ProcD | T9-ProcE |
OP10 | T10-ProcA | T10-ProcB | T10-ProcC | T10-ProcD | T10-ProcE |
在该表中,可见在给定时刻Ti,各处理器ProcA至ProcE分别对基本信息IE1至IE5执行具体操作OPi。
在第10次增量之后,可以注意到已经对子对象的各基本信息执行了具体操作序列中的各具体操作。
在这一情况下,就无效果的操作而言显得没有必要完成具体操作序列,因为所有处理器并行执行具体操作。这样,一旦完成操作OP8,可以通过向构成后继子对象的基本信息施加操作OP1来重复该过程。
可以注意能够至少部分地在平台上通过编译器来执行准确定序。在这一情况下,具体格式化数据不含时间上的绝对定序而是对定序的限制。
在图8所示第三例子中,平台包括与特别是存在于PC型计算机中的向量信号处理器相似的由链接到公共存储器的五个处理器组成的向量信号处理器。它们也都链接到可以包含参数以及特别是相关表的小型存储器。在这一结构中,各处理器执行所有具体操作。因此,所有处理器接收包括描述了待执行的所有具体操作的数据的同一指令集。
在这一例子中,考虑到两个具体操作的序列包括使用表来修改一条或者多条基本信息的情况。这里,表仅存在于单个位置而处理器因此必须共享它们。
在过程开始时进行并行操作,因为所有处理器对子对象的不同基本信息同时执行同一个操作。下表III说明了这一过程。
在该表中,T1、T2、......T18标识进程进展时间。
表III
IE1 | IE2 | IE3 | IE4 | IE5 | |
OP1 | T1-ProcA | T1-ProcB | T1-ProcC | T1-ProcD | T1-ProcE |
OP2 | T2-ProcA | T2-ProcB | T2-ProoC | T2-ProcD | T2-ProcE |
OP3 | T3-ProcA | T3-ProcB | T3-ProcC | T3-ProcD | T3-ProcE |
OP4 | T4-ProcA | T5-ProcB | T6-ProcC | T7-ProcD | T8-ProcE |
OP5 | T9-ProcA | T10-ProcB | T11-ProcC | T12-ProcD | T13-ProcE |
OP6 | T10-ProcA | T11-ProcB | T12-ProcC | T13-ProcD | T14-ProcE |
OP7 | T11-ProcA | T12-ProcB | T13-ProcC | T14-ProcD | T15-ProcE |
OP8 | T12-ProcA | T13-ProcB | T14-ProcC | T15-ProcD | T16-ProcE |
OP9 | T13-ProcA | T14-ProcB | T15-ProcC | T16-ProcD | T17-ProcE |
OP10 | T14-ProcA | T15-ProcB | T16-ProcC | T17-ProcD | T18-ProcE |
在该表的前三行中,可见在给定时间Ti,各处理器ProcA至ProcE分别对基本信息IE1至IE5执行具体操作OPi。
当达到使用表的操作OP4时,遇到存取问题,因为并非所有处理器都能同时存取该表。因此迫使处理器“等待轮到它们”,即等待直至前一处理器已经完成使用该表以便它自己能够使用该表。因此,处理器ProcA至ProcE分别在时间T4至T8执行操作OP4。假设操作OP5也使用表,则会出现同样的情况:处理器ProcA至ProcE分别在时间T9至T13执行操作OP5。
一旦已经执行完这些操作,则进程可以恢复正常。
在这一设备中,所得结果在计算时间方面比在其它例子中效率低,因为在某些时间某些处理器不活动,但是降低了存储器的大小。
可以注意能够至少部分地在平台上通过编译器来执行准确定序。在这一情况下,具体格式化数据不含时间上的绝对定序而是对定序的限制。
图9a示出了包括多个按照子对象的维度之一的循环链的平台的实施例的例子。在该第一例子中,对象是二维图像,子对象包括4条基本信息,而平台包括根据与水平4个处理器和竖直1个处理器的矩形对应的4×1处理器网来设置的4个处理器。从左到右调用处理器:P1、P2、P3和P4。该方法还在这一例子中应用2个队列:
-水平队列FHa在输入端连接到P4的输出而在输出端连接到处理器P1的输入。P1的输出连接到P2的输入。P2的输出连接到P3的输入,而P3的输出连接到P4的输入。
-竖直队列FVa在输入端连接到P1、P2、P3和P4的输出而在输出端连接到处理器P1、P1、P3和P4的输入。
-具体操作序列可以在100%使用4个处理器之时应用任意数量的水平过滤器FH。例如,在具体操作OS2执行包括相加操作(在具体操作OS1的结果和左边同一具体操作OS1的结果之间的相加)的过滤器的计算的情况下:处理器P4的操作OS1的结果放置于队列FHa中,将在后续子对象的计算过程中由P1上的OS2使用;处理器P3的操作OS1的结果传送到处理器P4,以结合P4上OS1的结果由P4上的OS2使用;处理器P2的操作OS1的结果传送到处理器P3,以结合P3上OS1的结果由P3上的OS2使用;处理器P1的操作OS1的结果传送到处理器P2,以结合P2上OS1的结果由P2上的OS2使用;在前一子对象的计算过程中由P4执行的操作OS1的结果从队列FHa输出,并且被传送到处理器P1,以结合P1上OS1的结果由P1上的OS2使用;用于该序列的另一具体操作OS3可以应用另一水平过滤器,所述队列允许以正确顺序取回数据。
-经过必要的修正,具体操作序列可以在100%使用4个处理器之时应用任意数量的竖直过滤器FV。
-最后,具体操作序列可以在100%使用4个处理器之时应用按照水平和竖直维度FVH均不可分的任意数量的过滤器;例如,对具体操作OS4的4个结果应用的不可分的3×3过滤器可以提升FVa两倍而提升FHa六倍,用来获得先前计算的OS4的8组、每组4个结果,以与当前子对象的OS4的结果组相组合;例如,这些不可分过滤器可以与竖直和/或水平过滤器()结合使用,所述2个队列允许以正确顺序取回数据。
当应用2个过滤器时,具体操作序列因此使得与该序列不同的至少两个具体操作在N次施加它们的过程中各产生用于处理另一子对象的结果至少一次。用于处理另一子对象的结果经由所述一个或者多个队列传递。
以同一方式,图9b示出了第二例子,其中对象是二维图像,子对象包括4条基本信息,而平台包括与水平2个处理器和竖直2个处理器的矩形对应的2×2处理器网来设置的4个处理器。从左到右调用处理器:上一行的P4和P5以及下一行的P6和P7。该方法也使用2个队列,在这一例子中:
-水平队列FHb在输入端连接到P3和P6的输出而在输出端连接到P1和P4的输入。
-竖直队列FVb在输入端连接到P4和P5的输出而在输出端连接到处理器P6和P7的输入。
与在图9a中的例子相同,具体操作序列可以在100%使用所有4个处理器之时应用任意数量的竖直和/或水平和/或不可分的过滤器。
在图9c中所示第三例子中,平台包括连接到水平队列FHc和竖直队列FVc的单个处理器P8。这两个队列可以由处理器用来存储随后将要重用的具体操作结果。
与图9a中的例子相同,具体操作序列可以在100%使用处理器之时应用任意数量的竖直和/或水平和/或不可分的过滤器。
Claims (62)
1.一种处理包括描述无循环通用操作序列的第一数据(14)的通用格式化数据(12)的方法,以便为包括Q个处理器和至少一个存储器的预定平台(20)直接地或者间接地提供具体格式化数据(18),所述平台用以根据所述具体格式化数据(18)来处理包括同一类基本信息的对象(22),各基本信息由至少一个数值代表;所述方法包括以下步骤:
-根据所述平台将所述通用操作序列转换成具体操作序列的步骤,
-根据所述平台的架构和根据所述对象的拓扑,以独立于所述第一数据的方式来确定所述处理操作所必需的循环集的步骤,以及
-计算包括这样确定的所述循环和所述具体操作序列的具体格式化数据的步骤,所述具体格式化数据直接地或者间接地允许在代码大小和/或存储器大小和/或计算时间方面以针对所述平台优化的方式处理与通用格式化数据相符合的所述对象。
2.根据权利要求1所述的方法,所述方法还包括:
-根据所述平台(22)的架构和根据所述对象的拓扑,以独立于第一数据的方式来确定在所述平台中基本信息的遍历模式(24)的步骤,所述遍历模式的确定包括选择和/或计算:
-根据所述平台来确定的基本信息到子对象的分组,各分组分别包括数量为N的基本信息,在所述平台中的所述处理包括定期地起动包括向所述子对象之一施加所述具体操作序列的子处理操作,
-根据所述平台来确定的所述子对象的形式和重叠,
-根据所述平台来确定的子对象处理顺序,
确定所述处理操作所必需的循环集的步骤和/或计算所述具体操作序列的步骤考虑所述遍历模式。
3.根据权利要求2所述的方法,其中遍历模式的确定包括确定各处理器执行所述具体操作序列中的哪一个或者哪些具体操作的步骤,各具体操作向各子对象施加至少N次,各具体操作在它施加N次过程中直接地和/或间接地应用子对象的各基本信息至少一次并且产生恰好N个结果;所述方法还包括以下步骤:向所述具体格式化数据添加这样确定的信息。
4.根据权利要求2或者3所述的方法,其中遍历模式的确定包括确定在时段的各相对时间点,各处理器执行所述具体操作序列中的哪一个或者哪些操作的步骤,各具体操作向各子对象施加至少N次,各具体操作在它施加N次的过程中直接地和/或间接地应用子对象的各基本信息至少一次并且产生恰好N个结果;所述方法还包括以下步骤:向所述具体格式化数据添加这样确定的信息。
5.根据权利要求2至4之一所述的方法,包括以下步骤:在将向各子对象施加的具体操作的数量不是所述处理器数量Q的倍数和/或待处理的所述对象的基本信息的数量不是N的倍数情况下,添加无效果具体操作和/或无效基本信息,使得具体操作的数量为Q的倍数而基本信息的数量为N的倍数。
6.根据前述权利要求之一所述的方法,其中所述通用操作序列施加到称为逻辑块的至少一个基本信息集,而所述通用格式化数据还包括第二数据,所述第二数据用于涉及到至少两个逻辑块的通用操作,涉及所述逻辑块相对于彼此的特别是空间和/或时间上的相对位置和/或相对尺度,其中,将要被施加各具体操作的所述基本信息和/或具体操作结果依赖于第二数据,并且其中,在所述逻辑块相对于彼此的至少一个相对位置不为零的情况下,至少一个具体操作直接地或者间接地应用另一子对象的至少一条基本信息。
7.根据权利要求6所述的方法,包括以下步骤:根据所述第二数据来确定用于另一子处理操作的后续具体操作所需的部分所述具体操作结果。
8.根据权利要求2至5之一和根据权利要求6至7之一所述的方法,还包括以下步骤:根据所述第二数据和/或所述遍历模式将用于另一子处理操作的后续具体操作所需的所述具体操作结果集中在存储器中。
9.根据权利要求2至5之一和根据权利要求6至8之一所述的方法,其中所述具体操作由按照至少一个循环链而链接起来的计算单元执行,所述方法还包括以下步骤:根据每一个具体操作的第二数据来确定是否应当根据循环链来发送所述具体操作的结果;在必要的情况下,所述方法还包括以下步骤:根据所述第二数据和所述遍历模式来确定使用哪个循环链来发送所述具体操作的结果。
10.根据权利要求2至9之一所述的方法,其中所述具体格式化数据包括与将所述具体操作的分组有关的信息,所述分组包括形成待执行而无需存储其它子处理操作所不需要的各具体操作的结果的一个或者多个具体操作的包。
11.根据权利要求2至10之一所述的方法,其中具体格式化数据包括允许在所述平台的存储器中保存用于另一子处理操作的后续具体操作所需的部分具体操作结果的具体操作。
12.根据权利要求2至11之一所述的方法,还包括以下步骤:根据另一子对象相对于所述子对象的相对位置,将在所述另一子对象的子处理过程中使用的具体操作结果集中于存储器中。
13.根据权利要求2至12之一所述的方法,还包括以下步骤:将在子对象的子处理过程中执行的具体操作的、在另一子对象的子处理过程中使用的结果集中在至少一个队列中。
14.根据权利要求2至13之一所述的方法,其中具体格式化数据包括用于使得在所述平台中多次计算具体操作的结果的具体操作,使得特别是在所述子对象在所述对象的至少一个维度上重叠的情况下在执行具体操作时不丢失信息。
15.根据权利要求2至14之一所述的方法,其中具体格式化数据包括用于允许所述平台访问存储器中的基本信息和/或至少一部分具体操作结果的寻址信息,该寻址信息是“基地址+偏移量”或者“(基地址+偏移量)模(位于所述平台中的缓冲存储器的大小)”的形式,所述偏移量对于各子处理操作的同一个具体操作的结果而言是恒定的。
16.根据权利要求15所述的方法,其中对于各子处理操作修改所述基地址。
17.根据权利要求15或者16之一所述的方法,包括以下步骤:根据所述具体操作的顺序来计算所述偏移量,使得向所述平台提供空存储器位置或者包含不再使用的具体操作结果或者基本信息的存储器位置的地址以便存储具体操作结果。
18.根据权利要求2至17之一所述的方法,其中所述处理包括根据所述遍历模式来计算至少一个循环、所述一个或者多个循环的迭代次数以及当有多个循环时的循环嵌套。
19.根据权利要求2至18之一所述的方法,还处理至少一个参数,其中,所述具体操作所使用的所述一个或者多个参数的一个或者多个值依赖于子对象的绝对位置和/或在这些具体操作中直接地或者间接地应用的所述基本信息在子对象中的绝对位置。
20.根据前述权利要求之一所述的方法,还包括处理至少一个参数,其中,所述具体格式化数据包括所述一个或者多个参数的一个或者多个值和/或于所述一个或者多个参数的一个或者多个值的计算代码。
21.根据前述权利要求之一所述的方法,还处理至少一个参数,其中,根据所述处理平台来选择所述一个或者多个参数的一个或者多个值,使得所述处理考虑到所述平台的特征。
22.根据前述权利要求之一所述的方法,还处理至少一个参数,其中,所述一个或者多个参数的一个或者多个值依赖于待处理的所述对象。
23.根据前述权利要求之一所述的方法,其中所述具体操作包括从以下操作中选择的至少一个具体计算操作:相加、相减、相乘、应用相关表、最小值、最大值、选择。
24.根据前述权利要求之一所述的方法,其中所述具体操作由借助至少一个循环链CC1链接起来的计算单元执行;所述循环链CC1还包括至少一个队列;所述具体操作序列中的至少一个具体操作IS4将计算单元UC1上执行的具体操作IS5的结果发送到按照所述链在所述计算单元UC1之后的计算单元UC2或者队列。
25.根据前述权利要求之一所述的方法,其中所述具体操作包括从换位、复制、二次采样中选择的至少一个具体几何操作。
26.根据前述权利要求之一所述的方法,其中所述具体操作由按照至少一个循环链而链接起来的计算单元执行;所述循环链还包括至少一个队列。
27.根据权利要求2至26之一所述的方法,其中所述具体操作由按照至少一个循环链而链接起来的计算单元执行;所述循环链还包括至少一个队列;所述队列具有大小和/或延时;所述方法还包括以下步骤:根据所述通用操作序列和所述遍历模式来确定所述队列的大小和/或延时。
28.根据前述权利要求之一所述的方法,其中待处理的所述对象为图像而所述基本信息为该图像的像素。
29.根据前述权利要求之一所述的方法,其中所述处理平台是图像捕获和/或还原设备的一部分,其中,所述一个或者多个参数的一个或者多个值与用于所述图像捕获和/或还原设备的软件的和/或光学器件的和/或传感器的和/或成像器的和/或电子器件的特征有关。
30.根据权利要求1至27之一所述的方法,其中待处理的所述对象是数字音频信号而所述基本信息是该信号的音频采样。
31.根据权利要求1至27之一所述的方法,其中待处理的所述对象是数值网格而所述基本信息是表征所述网格的各点的空间和/或时间信息。
32.一种处理包括描述无循环通用操作序列的第一数据(14)的通用格式化数据(12)的系统,所述系统为包括Q个处理器和至少一个存储器的预定平台(20)直接地或者间接地提供具体格式化数据(18),所述平台用以根据所述具体格式化数据(18)来处理包括同一类基本信息的对象(22),各基本信息由至少一个数值代表;
所述系统包括:
-用于根据所述平台将所述通用操作序列转换成具体操作序列的装置,
-用于根据所述平台的架构并根据所述对象的拓扑,以独立于第一数据的方式来确定所述处理操作所必需的循环集的装置,以及
-用于计算包括这样确定的包含所述循环的所述具体操作序列的具体格式化数据的装置,所述具体格式化数据直接地或者间接地允许在代码大小和/或存储器大小和/或计算时间方面以针对所述平台优化的方式处理与通用格式化数据相符合的所述对象。
33.根据权利要求32所述的系统,包括:
-用于根据该平台的架构并根据所述对象的拓扑,以独立于所述第一数据的方式来确定所述平台中基本信息的遍历模式的装置,用以确定所述遍历模式的所述装置包括用于选择和/或计算以下各项的装置:
-根据所述平台来确定的基本信息到子对象的分组,各子对象分别包括数量为N,即Q的整数倍的基本信息,在所述平台中的所述处理包括定期地起动对所述子对象之一的子处理操作,
-根据所述平台来确定的子对象的形式和重叠,
-根据所述平台来确定的子对象处理顺序,以及
-用于考虑到所述遍历模式计算所述具体操作序列和/或确定所述处理操作所必需的循环集的装置。
34.根据权利要求33所述的系统,包括用于确定每一个处理器执行所述具体操作序列中的哪一个或者哪些具体操作的装置,各具体操作向各子对象施加至少N次,各具体操作在它施加N次的过程中直接地和/或间接地应用子对象的各基本信息至少一次并且产生恰好N个结果;所述方法还包括以下步骤:向所述具体格式化数据添加这样确定的信息。
35.根据权利要求33或者34所述的系统,包括用于在时段的各相对时间点确定每一个处理器执行所述具体操作序列中的哪一个或者哪些操作的装置,各具体操作向各子对象施加至少N次,各具体操作在它施加N次的过程中直接地和/或间接地应用子对象的各基本信息至少一次并且产生恰好N个结果;所述方法还包括以下步骤:向所述具体格式化数据添加这样确定的信息。
36.根据权利要求33至35之一所述的系统,包括用于在将向各子对象施加的具体操作的数量不是所述处理器数量Q的倍数和/或待处理的所述对象的基本信息的数量不是N的倍数情况下,添加无效果具体操作和/或无效基本信息,使得具体操作的数量为Q的倍数而基本信息的数量为N的倍数的装置。
37.根据权利要求32至36之一所述的系统,包括:
-使得所述通用操作序列施加到称为逻辑块的至少一个基本信息集的装置,
-用于接收包括第二数据的通用格式化数据的装置,所述第二数据用于涉及到至少两个逻辑块的通用操作,涉及逻辑块相对于彼此的特别是空间和/或时间上的相对位置和/或相对尺度,
-使得应施加各具体操作的所述基本信息和/或具体操作结果依赖于所述第二数据的装置,以及
-在逻辑块相对于彼此的至少一个相对位置不为零的情况下,使至少一个具体操作直接地或者间接地使用另一子对象的至少一条基本信息的装置。
38.根据权利要求37所述的系统,包括用于根据所述第二数据来确定用于另一子处理操作的后续具体操作所需的一部分所述具体操作结果的装置。
39.根据权利要求33至36之一和权利要求37和38之一所述的系统,包括存储器,根据所述第二数据和/或所述遍历模式用于另一子处理操作的后续具体操作所需的所述具体操作结果被集中于所述存储器中。
40.根据权利要求33至36之一和权利要求37至39之一所述的系统,包括:按照至少一个循环链而链接起来的计算单元;用于根据用于各具体操作的第二数据来确定是否应当按照循环链来发送所述具体操作结果的装置;以及用于在必要的情况下根据所述第二数据和所述遍历模式来确定用来发送所述具体操作结果的循环链的装置。
41.根据权利要求33至40之一所述的系统,包括使得所述具体格式化数据包括与具体操作的分组有关的信息的装置,该分组包括形成待执行而无需存储用于另一子处理操作的各具体操作的结果的一个或者多个具体操作的包。
42.根据权利要求33至41之一所述的系统,包括使得所述具体格式化数据包括以下具体操作的装置,所述具体操作允许在所述平台的存储器中保存用于另一子处理操作的后续具体操作所需的部分所述具体操作结果。
43.根据权利要求33至42之一所述的系统,包括存储器,根据另一子对象相对于所述子对象的相对位置,在所述另一子对象的子处理过程中使用的具体操作结果被集中于所述存储器中。
44.根据权利要求33至43之一所述的系统,包括至少一个队列:在子对象的子处理过程中执行的具体操作的、在另一子对象的子处理过程中使用的结果被集中于所述队列中。
45.根据权利要求33至44之一所述的系统,包括使得所述具体格式化数据包括以下具体操作的装置,所述具体操作使得在所述平台中多次计算所述具体操作结果,使得特别是在所述子对象在所述对象的至少一个维度上重叠的情况下在执行具体操作时不丢失信息。
46.根据权利要求33至45之一所述的系统,包括使得所述具体格式化数据包括寻址信息的装置,所述寻址信息使所述平台能够访问存储器中的基本信息和/或具体操作结果的至少一部分,所述寻址信息为“基地址+偏移量”或者“(基地址+偏移量)模(位于所述平台中的缓冲存储器的大小)”的形式,所述偏移量对于来自同一个具体操作的结果而言是恒定的。
47.根据权利要求46所述的系统,包括用于针对每一个子处理操作来修改所述基地址的装置。
48.根据权利要求46或者47之一所述的系统,包括用于根据所述具体操作的顺序来计算所述偏移量的装置,使得向所述平台提供空的存储器位置或者包含不再使用的具体操作结果或者基本信息的存储器位置的地址,以便存储具体操作结果。
49.根据权利要求33至48之一所述的系统,包括用于根据所述遍历模式来计算至少一个循环、所述一个或者多个循环的迭代次数以及当有多个循环时的循环嵌套的装置。
50.根据权利要求33至49之一所述的系统,包括用于还处理至少一个参数的装置,使得所述具体操作所使用的所述一个或者多个参数的一个或者多个值依赖于在所述具体操作中直接地或者间接地应用的所述基本信息在所述子对象中的位置。
51.根据权利要求32至50之一所述的系统,包括用于还处理至少一个参数的装置,使得所述具体格式化数据包括所述一个或者多个参数的一个或者多个值和/或用于所述一个或者多个参数的一个或者多个值的计算代码。
52.根据权利要求32至51之一所述的系统,包括用于还处理至少一个参数的装置,并包括用于根据所述处理平台来选择所述一个或者多个参数的一个或者多个值,使得所述处理考虑所述平台的特征的装置。
53.根据权利要求32至52之一所述的系统,包括用于还处理至少一个参数,使得所述一个或者多个参数的一个或者多个值依赖于待处理的所述对象的装置。
54.根据权利要求32至53之一所述的系统,包括用于执行从以下操作中选择的具体操作的装置:相加、相减、相乘、应用相关表、最小值、最大值、选择。
55.根据权利要求32至54之一所述的系统,包括借助至少一个循环链CC1而链接起来的计算单元;所述循环链CC1还包括至少一个队列;所述系统包括用于将计算单元UC1上执行的一个具体操作IS5的结果发送到按照所述链在所述计算单元UC1之后的计算单元UC2或者队列的装置。
56.根据权利要求32至55之一所述的系统,包括用于执行从换位、复制和二次采样中选择的至少一个具体几何操作的装置。
57.根据权利要求32至56之一所述的系统,包括根据至少一个循环链而链接起来的计算单元,所述循环链还包括至少一个队列。
58.根据权利要求33至55之一所述的系统,包括按照至少一个循环链而链接起来的计算单元,所述循环链还包括至少一个队列,所述系统包括用于根据所述通用操作序列和所述遍历模式来确定所述队列的大小和/或延时的装置。
59.根据权利要求32至58之一所述的系统,包括使得待处理的所述对象为图像以及使得所述基本信息为该图像的像素的装置。
60.根据权利要求32至59之一所述的系统,包括使得所述处理平台是图像捕获和/或还原设备的一部分,以及使得所述一个或者多个参数的一个或者多个值与用于所述图像捕获和/或还原设备的软件的和/或光学器件的和/或传感器的和/或成像器的和/或电子器件的特征有关的装置。
61.根据权利要求32至58之一所述的系统,包括使得待处理的所述对象是数字音频信号而所述基本信息是该信号的音频采样的装置。
62.根据权利要求32至58之一所述的系统,包括使得待处理的所述对象是数值网格以及使得所述基本信息是表征所述网格的各点的空间和时间信息的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0553946A FR2895103B1 (fr) | 2005-12-19 | 2005-12-19 | Procede et systeme de traitement de donnees numeriques |
FR0553946 | 2005-12-19 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101379468A true CN101379468A (zh) | 2009-03-04 |
Family
ID=37430519
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006800530321A Pending CN101379468A (zh) | 2005-12-19 | 2006-12-19 | 数字数据处理方法和系统 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8429625B2 (zh) |
EP (1) | EP1963971A2 (zh) |
JP (1) | JP6085405B2 (zh) |
KR (1) | KR101391465B1 (zh) |
CN (1) | CN101379468A (zh) |
FR (1) | FR2895103B1 (zh) |
WO (1) | WO2007071883A2 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102867002A (zh) * | 2011-07-05 | 2013-01-09 | 北大方正集团有限公司 | 电子文件的处理方法和装置 |
CN103785173A (zh) * | 2014-03-06 | 2014-05-14 | 苏州运智互动科技有限公司 | Android系统双体感外设数据区分获取方法 |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2002317219A1 (en) * | 2001-07-12 | 2003-01-29 | Do Labs | Method and system for modifying a digital image taking into account its noise |
US9037961B1 (en) * | 2006-09-18 | 2015-05-19 | Credit Suisse Securities (Usa) Llc | System and method for storing a series of calculations as a function for implementation in a spreadsheet application |
US8515052B2 (en) | 2007-12-17 | 2013-08-20 | Wai Wu | Parallel signal processing system and method |
US8755515B1 (en) | 2008-09-29 | 2014-06-17 | Wai Wu | Parallel signal processing system and method |
US20110289417A1 (en) * | 2010-05-21 | 2011-11-24 | Schaefer Diane E | User interface for configuring and managing the cluster |
US9134960B2 (en) * | 2010-10-29 | 2015-09-15 | International Business Machines Corporation | Numerical graphical flow diagram conversion and comparison |
US10255547B2 (en) * | 2014-12-04 | 2019-04-09 | Nvidia Corporation | Indirectly accessing sample data to perform multi-convolution operations in a parallel processing system |
US9749548B2 (en) | 2015-01-22 | 2017-08-29 | Google Inc. | Virtual linebuffers for image signal processors |
US9756268B2 (en) | 2015-04-23 | 2017-09-05 | Google Inc. | Line buffer unit for image processor |
US9769356B2 (en) | 2015-04-23 | 2017-09-19 | Google Inc. | Two dimensional shift array for image processor |
US9785423B2 (en) * | 2015-04-23 | 2017-10-10 | Google Inc. | Compiler for translating between a virtual image processor instruction set architecture (ISA) and target hardware having a two-dimensional shift array structure |
US9965824B2 (en) | 2015-04-23 | 2018-05-08 | Google Llc | Architecture for high performance, power efficient, programmable image processing |
US9772852B2 (en) | 2015-04-23 | 2017-09-26 | Google Inc. | Energy efficient processor core architecture for image processor |
US10291813B2 (en) | 2015-04-23 | 2019-05-14 | Google Llc | Sheet generator for image processor |
US10095479B2 (en) | 2015-04-23 | 2018-10-09 | Google Llc | Virtual image processor instruction set architecture (ISA) and memory model and exemplary target hardware having a two-dimensional shift array structure |
CN105516033A (zh) * | 2015-07-23 | 2016-04-20 | 中国电子科技集团公司第四十一研究所 | 一种基于频谱分析仪的模拟信号解调与分析方法 |
US10313641B2 (en) | 2015-12-04 | 2019-06-04 | Google Llc | Shift register with reduced wiring complexity |
US9830150B2 (en) | 2015-12-04 | 2017-11-28 | Google Llc | Multi-functional execution lane for image processor |
US10204396B2 (en) | 2016-02-26 | 2019-02-12 | Google Llc | Compiler managed memory for image processor |
US10387988B2 (en) | 2016-02-26 | 2019-08-20 | Google Llc | Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform |
US10380969B2 (en) | 2016-02-28 | 2019-08-13 | Google Llc | Macro I/O unit for image processor |
KR101763827B1 (ko) * | 2016-04-07 | 2017-08-02 | 주식회사 라이프시맨틱스 | 블록체인 기반 의료데이터전송시스템, 방법 및 프로그램 |
US20180005059A1 (en) | 2016-07-01 | 2018-01-04 | Google Inc. | Statistics Operations On Two Dimensional Image Processor |
US20180007302A1 (en) | 2016-07-01 | 2018-01-04 | Google Inc. | Block Operations For An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register |
US10546211B2 (en) | 2016-07-01 | 2020-01-28 | Google Llc | Convolutional neural network on programmable two dimensional image processor |
US20180005346A1 (en) | 2016-07-01 | 2018-01-04 | Google Inc. | Core Processes For Block Operations On An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register |
US10467142B1 (en) * | 2019-05-07 | 2019-11-05 | 12 Sigma Technologies | Enhancement of real-time response to request for detached data analytics |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2075048C (en) * | 1990-01-30 | 1999-08-17 | Gregory A. Pascucci | Networked facilities management system |
US5655130A (en) * | 1994-10-14 | 1997-08-05 | Unisys Corporation | Method and apparatus for document production using a common document database |
US5860072A (en) * | 1996-07-11 | 1999-01-12 | Tandem Computers Incorporated | Method and apparatus for transporting interface definition language-defined data structures between heterogeneous systems |
US5857100A (en) * | 1996-09-03 | 1999-01-05 | Insession Inc. | System, method and article of manufacture for extending externalization for universal transaction processing |
US6014702A (en) * | 1997-06-04 | 2000-01-11 | International Business Machines Corporation | Host information access via distributed programmed objects |
WO1999052040A1 (en) | 1998-04-08 | 1999-10-14 | Stellar Technologies, Ltd. | Architecture for graphics processing |
US7039919B1 (en) * | 1998-10-02 | 2006-05-02 | Microsoft Corporation | Tools and techniques for instrumenting interfaces of units of a software program |
US6988271B2 (en) * | 1998-10-02 | 2006-01-17 | Microsoft Corporation | Heavyweight and lightweight instrumentation |
US6463582B1 (en) * | 1998-10-21 | 2002-10-08 | Fujitsu Limited | Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method |
GB9825102D0 (en) * | 1998-11-16 | 1999-01-13 | Insignia Solutions Plc | Computer system |
GB0107882D0 (en) * | 2001-03-29 | 2001-05-23 | Ibm | Parsing messages with multiple data formats |
FR2827459B1 (fr) | 2001-07-12 | 2004-10-29 | Poseidon | Procede et systeme pour fournir a des logiciels de traitement d'image des informations formatees liees aux caracteristiques des appareils de capture d'image et/ou des moyens de restitution d'image |
AU2002317219A1 (en) | 2001-07-12 | 2003-01-29 | Do Labs | Method and system for modifying a digital image taking into account its noise |
US7532766B2 (en) | 2001-07-12 | 2009-05-12 | Do Labs | Method and system for producing formatted data related to geometric distortions |
US7191404B2 (en) * | 2002-01-14 | 2007-03-13 | International Business Machines Corporation | System and method for mapping management objects to console neutral user interface |
US7565660B2 (en) * | 2002-09-26 | 2009-07-21 | Siemens Energy & Automation, Inc. | System and method for universal extensibility that supports a plurality of programmable logic controllers |
JP4487479B2 (ja) * | 2002-11-12 | 2010-06-23 | 日本電気株式会社 | Simd命令シーケンス生成方法および装置ならびにsimd命令シーケンス生成用プログラム |
WO2004072796A2 (en) * | 2003-02-05 | 2004-08-26 | Arizona Board Of Regents | Reconfigurable processing |
US20040187090A1 (en) * | 2003-03-21 | 2004-09-23 | Meacham Randal P. | Method and system for creating interactive software |
US7987455B1 (en) * | 2003-07-23 | 2011-07-26 | International Business Machines Corporation | System and method of command processing |
US7647580B2 (en) * | 2004-09-07 | 2010-01-12 | Microsoft Corporation | General programming language support for nullable types |
US7694288B2 (en) * | 2005-10-24 | 2010-04-06 | Analog Devices, Inc. | Static single assignment form pattern matcher |
US8117587B1 (en) * | 2008-06-03 | 2012-02-14 | Richard Paul Testardi | Microcontroller-resident software development environment supporting application-level asynchronous event handling, interactive debugging and pin variables for embedded systems |
-
2005
- 2005-12-19 FR FR0553946A patent/FR2895103B1/fr not_active Expired - Fee Related
-
2006
- 2006-12-19 CN CNA2006800530321A patent/CN101379468A/zh active Pending
- 2006-12-19 US US12/097,893 patent/US8429625B2/en active Active
- 2006-12-19 KR KR1020087017730A patent/KR101391465B1/ko active IP Right Grant
- 2006-12-19 JP JP2008545067A patent/JP6085405B2/ja not_active Expired - Fee Related
- 2006-12-19 WO PCT/FR2006/051389 patent/WO2007071883A2/fr active Application Filing
- 2006-12-19 EP EP06847179A patent/EP1963971A2/fr not_active Ceased
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102867002A (zh) * | 2011-07-05 | 2013-01-09 | 北大方正集团有限公司 | 电子文件的处理方法和装置 |
CN103785173A (zh) * | 2014-03-06 | 2014-05-14 | 苏州运智互动科技有限公司 | Android系统双体感外设数据区分获取方法 |
Also Published As
Publication number | Publication date |
---|---|
FR2895103A1 (fr) | 2007-06-22 |
JP6085405B2 (ja) | 2017-02-22 |
EP1963971A2 (fr) | 2008-09-03 |
US8429625B2 (en) | 2013-04-23 |
JP2009524854A (ja) | 2009-07-02 |
US20090228677A1 (en) | 2009-09-10 |
KR101391465B1 (ko) | 2014-05-26 |
KR20080087840A (ko) | 2008-10-01 |
FR2895103B1 (fr) | 2008-02-22 |
WO2007071883A3 (fr) | 2007-08-16 |
WO2007071883A2 (fr) | 2007-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101379468A (zh) | 数字数据处理方法和系统 | |
CN101375311A (zh) | 用于在具有一个或者多个处理器和存储器的平台上处理对象的方法和使用该方法的平台 | |
US11816559B2 (en) | Dilated convolution using systolic array | |
US20230111538A1 (en) | Information processing device and information processing method | |
US10997496B2 (en) | Sparse convolutional neural network accelerator | |
GB2560208B (en) | Block operations for an image processor having a two-dimensional execution lane array and a two-dimensional shift register | |
US20190266217A1 (en) | Apparatus and method for matrix computation | |
CN107533750A (zh) | 虚拟图像处理器指令集架构(isa)和存储器模型与具有二维移位阵列结构的示例性目标硬件 | |
CN103460253B (zh) | 用于图形处理的像素值精简 | |
CN112395547A (zh) | 对张量进行图块遍历以进行卷积运算的方法和装置 | |
CN110149802A (zh) | 用于在虚拟图像处理器指令集架构(isa)与具有二维移位阵列结构的目标硬件之间进行转译的编译器 | |
US9978116B2 (en) | Core processes for block operations on an image processor having a two-dimensional execution lane array and a two-dimensional shift register | |
JPH11306380A (ja) | ボリュームレンダリングシステムおよびボリュームレンダリング方法 | |
CN107533751A (zh) | 用于图像处理器的线缓冲器单元 | |
CN109885407A (zh) | 数据处理方法和装置、电子设备、存储介质 | |
CN109445850A (zh) | 一种基于申威26010处理器的矩阵转置方法及系统 | |
CN110300944A (zh) | 具有可配置数目的活动核心和支持内部网络的图像处理器 | |
CN112463159A (zh) | 编译方法、装置、电子设备和存储介质 | |
US8473720B2 (en) | Method for providing data to a digital processing means | |
Uhl | Wavelet packet best basis selection on moderate parallel MIMD architectures | |
Rauber et al. | Message-Passing Programming | |
CN110038301A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
Uhl | Adapted wavelet analysis on moderate parallel distributed memory MIMD architectures | |
Chien et al. | Distributed quadtree processing | |
CN111966400B (zh) | 指令处理方法、装置及相关产品 |
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 |
Open date: 20090304 |