CN101427264A - 用于位平面数据的高密度存储和处理的方法和装置 - Google Patents

用于位平面数据的高密度存储和处理的方法和装置 Download PDF

Info

Publication number
CN101427264A
CN101427264A CNA2005800164640A CN200580016464A CN101427264A CN 101427264 A CN101427264 A CN 101427264A CN A2005800164640 A CNA2005800164640 A CN A2005800164640A CN 200580016464 A CN200580016464 A CN 200580016464A CN 101427264 A CN101427264 A CN 101427264A
Authority
CN
China
Prior art keywords
data
pixel
bit
array
row
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
Application number
CNA2005800164640A
Other languages
English (en)
Inventor
伍德罗·L.·米克尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Silicon Optix Inc USA
Original Assignee
Silicon Optix Inc USA
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Silicon Optix Inc USA filed Critical Silicon Optix Inc USA
Publication of CN101427264A publication Critical patent/CN101427264A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/246Analysis of motion using feature-based methods, e.g. the tracking of corners or segments

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Processing (AREA)
  • Image Input (AREA)
  • Storing Facsimile Image Data (AREA)

Abstract

在图像处理系统中,在辅助或页存储器中提供了位平面数据的高密度存储以及图像处理器对数据的高带宽访问。该页存储器提供了当前未被处理的数据的存储。该页存储器也可以是系统的一部分,提供到和来自图像处理器的图像数据的输入和输出。该图像数据可以在图像处理器外以打包的像素形式被处理,并且在输入和输出期间在该形式和页存储器存储的位行形式之间转换。该位行数据可以聚集为位平面,以在数据从页存储器到处理逻辑移动期间被图像处理器使用。

Description

用于位平面数据的高密度存储和处理的方法和装置
技术领域
本发明涉及位平面数据在图像处理系统中,特别地,在SIMD阵列体系结构中的存储。
背景技术
使用了最高并行度的并行处理体系结构遵循单指令多数据(SIMD)方法并使用最简单可行的处理单元(PE,processing element)结构:1位运算处理器。虽然各PE具有很低的处理吞吐量,但PE逻辑的简单性支持用非常大数目的PE来构建处理器阵列。通过将这样大数目的PE结合到SIMD处理器阵列中来实现很高的处理吞吐量。
位串行SIMD体系结构的一种变体是连接各PE作为二维(2-d)网,各PE与其在阵列中北、南、东和西紧邻的4个相邻单元进行通信。该二维结构非常适于但不限于处理诸如图像像素数据的具有二维结构的数据。
发明内容
本发明一方面提供了一种数字数据处理系统,包括:
处理单元阵列,具有第一数据存储部件,适合于处理位平面数据;
第二数据存储部件,耦合到第一数据存储部件,适合于存储不需要立即处理的位平面数据;
主数据存储部件和辅助数据存储部件之间的数据路径,所述数据路径宽于一个位行并窄于一个位平面。
另一方面,本发明提供了一种数字数据处理系统,包括:
处理单元阵列,具有第一存储部件,适合于处理位平面数据;
打包矩阵,耦合到处理单元阵列,所述打包矩阵包括寄存器阵列,适合于接收和存储包含单个周期中的多个像素的数据字,并按光栅顺序单独存储来自数据字的像素。
再一个方面,本发明提供了一种数字数据处理系统,包括:
处理单元阵列,具有第一数据存储部件,适合于处理位平面形式的数据;
打包矩阵,耦合到所述处理单元阵列,包括寄存器阵列,并适合于按光栅顺序单独存储像素数据,并生成每个包含与多个像素有关的数据的数据字,并以每个数据字单个时钟周期来传递所述数据字。
本发明实施例更详细的不同方面和优点将在以下说明中与附图一起被公开。
附图说明
在附图中:
图1为说明根据本发明的图像处理系统的组件和数据路径的示意图。
图2为说明典型处理单元体系结构的示意图。
图3为PE阵列的图解表示。
图4为包含PE组阵列的PE阵列的图解表示。
图5为说明PE组的组件和数据路径的示意图。
图6为示出主要组件和数据路径的图像处理系统的图解表示。
图7为包含打包的像素值的示例数据字的数据格式的图解表示。
图8为子帧输入/输出(i/o)和分页处理的图解表示。
图9为列出页存储器实现的性能标准的图解表示。
图10为通过位行访问使用分页的典型图像处理系统的图解表示。
图11为通过位行访问使用分页的典型图像处理系统的图解表示。
图12为关于PEG阵列的页单元的状况的图解表示。
图13为示出存储器组件和数据路径的页单元的图示说明。
图14为列出页存储器标准并提供示例方法的性能评定的图示说明。
图15为示出页单元的主要组件和数据路径的示意图。
图16为页存储器内位行数据的分布的图解表示。
图17为说明打包和旋转矩阵以及穿过它们的数据流。
图18为说明穿过打包矩阵的数据流的图解表示。
图19为说明在子帧输入和子帧输出期间打包矩阵中的数据存储的图解表示。
图20为说明在子帧输入期间数据流出旋转矩阵的图解表示。
图21为说明在子帧输出期间数据流入旋转矩阵的图解表示。
图22为列出IO数据总线信号的图解表示。
图23为示出主要组件、数据路径和分布网络延迟的simd阵列处理器的图解表示。
图24为列出要求页出2位(面)图像的命令序列的图解表示。
图25为列出要求页入2位(面)图像的命令序列的图解表示。
具体实施方式
首先参照图1来说明根据本发明的示例图像处理系统100。在本发明的该示例中,图像处理系统100包括处理单元(PE)阵列20、多个页单元40、程序序列发生器30、I/O控制器56、I/O任务队列58、打包矩阵52和旋转矩阵54。
用于这种典型SIMD阵列的各处理单元(PE)如图2中所示,包括PE存储器11、运算和逻辑单元(ALU)12以及寄存器NS 14、EW 15和C16用于处理1位数据。ALU 12可以与全加法电路一样简单,或者,在更详细示例中,可以包括更高级的运算能力。一组寄存器从PE存储器11装载像素数据以由ALU 12处理。在该示例中,CM17是提供像素数据输入和输出的寄存器。
PE存储器11对于每个PE实际上为1位宽,并且存储像素数据以由PE处理。多位像素值由存储在PE存储器11中的多个位来表示。通过依次处理操作数像素的相应位来执行对多位操作数的操作。在SIMD阵列的某些示例中,PE存储器11为3端口,每周期执行2次读和1次写。其它示例包括那些使用了其它多路访问方法和那些提供了每周期单次读或写访问的示例。在3端口示例中,1位操作步骤的处理可以在单个周期中执行,然而对其它方法,可能需要额外的周期供PE存储器访问。
如图3所示,阵列20包括若干M行和若干N列PE。像素号从阵列西北角的0,0至东南角的M-1,N-1。SIMD阵列的PE以栅格图案连接,每个PE 10只与其最近的4个相邻单元通信。PE至PE通信路径为1位宽和双向。
在处理期间,阵列100的所有PE同时执行每个操作步骤。阵列的每个PE同时执行操作数位的每次读或写、在PE寄存器之间位的每次移动、每个ALU输出。描述该操作模式时,共同地考虑相应图像位是有用的。相应图像位的阵列尺寸的集合被称为“位平面”。从(串行)指令流的角度来看,SIMD阵列操作被建模为位平面操作。
阵列20中的每个指令包含指导流程或位平面处理的命令。单个指令包含多个命令字段,包括一个用于每个寄存器源、一个用于PE存储器11写端口、以及一个附加字段控制ALU 12的处理。该方法为阵列指令的传统微指令实现,提供用于单处理周期的阵列控制。
本发明一般来说涉及数据处理系统。贯穿本公开所给出的说明示例涉及图像像素数据。应该注意到,本发明的范围并不限于像素数据和图像处理,并且它适用于其它使用SIMD体系结构的数字数据处理系统。
虽然对阵列数据的操作实际上是对像素数据的操作,该数据被物理存储并关于位平面被处理。以像素形式提供给图像处理系统100的数据必须被转换为位平面形式以便处理。
阵列20以被称为“子帧”的阵列尺寸的段来处理图像数据。在典型情况下,待处理的图像帧比阵列20的尺寸大得多。通过依次处理子帧图像段直到该图像帧被完全处理,来实现图像帧的处理。
也许关于SIMD阵列的最基础的设计决策为PE存储器的深度和结构。由于PE存储器11包含图像处理系统100逻辑的50-70%,PE存储器11的深度在很大程度上决定了SIMD阵列对于给定芯片空间的可行尺寸。在图像处理系统100的设计中,PE存储器11的深度被做得尽可能小,同时支持对预期应用集的存储器需求。
对最佳处理吞吐量,PE存储器11被配置用于完全位平面访问。对于给定读或写访问,每个PE发送或接收单个位,使得整个带宽为完全位平面。在图3的示例阵列中,这意味着M×N位(通常为几千或几万位)用于每个存储器访问。此外,PE存储器11典型地为多路访问用于更大吞吐量。在以上3端口的示例中,可以在任何时钟周期内进行2次读和1次写。对该示例整个存储器带宽因此为3个位平面。
由于PE存储器11典型地为多路访问、非常宽、但为最小深度,有可能它将为很低的密度。由于此,遵循了对SIMD阵列存储器的两层方法。除PE存储器11外,被称为页存储器的第二存储器提供了子帧数据的存储。该页存储器40为单端口,并可以与PE存储器11不同地分区,提供密度高得多的数据存储。
该页存储器40为当前未被处理的子帧数据提供存储。当需要处理数据时,数据被从页存储器40移至PE存储器110。当数据不需要立即被处理时,数据被从PE存储器110移至页存储器40。
页存储器40的第二用途是提供当前正在PE阵列20和外部图像帧之间移动的数据的存储。既然页存储器40不用于处理,它可以用于子帧输入和输出而不中断处理。如图8所示,从图像帧中选择子帧并移动到页存储器40中。子帧被从页存储器40移动至PE存储器110用于处理。
使用页存储器40来提供与SIMD阵列处理并发的子帧输入/输出对图像处理系统100是非常有利的。子帧输入/输出时间线可以与处理时间线的持续时间相似。如果未提供子帧输入/输出和处理的并发性,则图像处理系统100的性能在某些情况下几乎被减少一半。
PE阵列20和页存储器40之间的数据的分页在某些方面与子帧输入/输出相似。根据页存储器40的结构以及它与PE阵列20耦合的方式,分页可以是前台SIMD阵列任务,或者与SIMD阵列处理并发。分页的并发性是一种性能优势,虽然其重要性小于子帧输入/输出的并发性。
图像处理系统100的页存储器40和子帧输入/输出支持逻辑的性能可以通过几个测量值来特征化,如图9中所列举的。
页存储器40的密度取决于所使用的存储器的结构及其关于PE阵列20的分布。为了提供最大的存储量同时使用最小的芯片空间,高密度是很重要的。页存储器40的结构和分布也将决定分页的带宽。高分页带宽允许分页以低等待时间进行而获得分页数据。当达到并发分页的程度时,其在前台处理上的成本被最小化。
子帧输入/输出带宽在很大程度上取决于输入/输出支持逻辑的吞吐量。更高的子帧输入/输出带宽将支持更大的吞吐量以减少整个输入/输出时间线。更高的子帧输入/输出带宽也意味着获得子帧的更低等待时间。偶尔,前台处理任务必须不可避免地等待子帧输入/输出,并且这使得子帧输入/输出在这些情况下成为直接前台成本。较不重要的是并发子帧输入/输出在前台任务上的成本以及分页和子帧输入/输出在彼此上的任何交叉成本。
将关于现有技术中的图像处理系统所使用的两种方法并且关于示例实施例来讨论以上性能测量。
对于某些早期的SIMD阵列处理器,没有片上页存储器。这种存储器的一个示例由图8说明。像素数据被接收并在存储于缓冲存储器中之前被转换为位平面形式。子帧数据以位平面形式提供给PE阵列。PE阵列处理数据并将结果发送给缓冲存储器。处理结果被转换为像素形式以便输出。
在子帧输入期间,每个位平面经由南阵列边界移动到PE阵列20中。位平面以每周期一个位行的速率(即,1个位平面行)移动至阵列的CM寄存器平面中。一旦整个位平面被接收,CM平面在单个周期中被存储到PE存储器110。子帧输出为逆过程。位平面从PE存储器110加载至CM平面,然后经由北边界移出阵列并存储在缓冲存储器中。
因为缓冲存储器在该方法中是芯片外的,其深度基于系统需要是可配置的。然而,分页带宽低至每周期1位行。在该系统中分页需要每位平面M个时钟。分页的前台成本低至每平面1个时钟(用于加载或存储CM平面)。根据缓冲存储器的宽度,该系统的子帧输入/输出带宽与分页带宽相同。然而,除非缓冲存储器为多路访问,分页和子帧输入/输出彼此不能并发,当它们在时间行中冲突时,在分页和子帧输入/输出之间产生交叉成本。
第二种方法提供了与PE阵列20同在芯片上的页存储器40。在该方法中,页存储器40为与PE阵列20紧密集成的单端口存储器。PE阵列20对页存储器40的访问为位平面宽度,这意味着,整个位平面可以在单个周期内在页存储器40和PE阵列20中的寄存器平面之间加载或存储。
像素转换逻辑也被包含在芯片上,允许与外部图像帧的子帧输入/输出为像素形式。在像素形式和位行形式之间转换的任务由像素转换逻辑执行。通过由像素转换逻辑提供对页存储器40的位行访问,来实现从位行形成位平面。
该第二种方法具有高的分页带宽,即每周期1个位平面。分页的前台成本也低至每位平面1个时钟。然而,在该方法中,页存储器40的密度较低是因为极限宽度(M*N位),以及因为页存储器40被构建成提供位行访问,从而要求用于PE阵列20的每个位行的单独读/写控制。
用于每个芯片的子帧输入/输出带宽相当低,受到32位像素宽度的限制。(这可以通过在多芯片系统中提供对每个芯片的单独输入/输出路径来减轻。)由于子帧输入/输出逻辑对页存储器40的访问与PE阵列20无关,子帧输入/输出没有前台成本。因为对于子帧的每个位行都要求子帧输入/输出逻辑的单次访问,子帧输入/输出和分页之间的交叉成本很高。这可以通过分页的高带宽以及通过调度分页和输入/输出操作使它们不冲突来减轻。
图6显示了一个示例图像处理系统100。该图像处理系统100包含程序序列发生器30单元,以向PE阵列20提供指令流。像素输入/输出单元50也被提供用于控制像素数据移出和移入PE阵列20。共同地,这些单元构成图像处理系统100。
该图像处理系统100可以被用来在阵列尺寸的图像段上执行算法。该处理器可以在集成电路器件上实现,或者作为单个器件上的更大系统的一部分。在每种实现中,该图像处理系统100隶属于这里被称为“Cpu”的系统控制处理器。图像处理系统100和该Cpu之间的接口提供用于由Cpu初始化和控制该示例图像处理系统100。
像素输入/输出单元50提供控制用于经由Img总线在PE阵列20和外部存储之间移动像素数据。与PE阵列20的计算并发地执行像素数据的移动,从而提供了更大吞吐量用于处理像素数据。像素输入/输出单元50执行图像数据在像素形式和位平面形式之间的转换。Img总线数据为像素形式,并且PE阵列20数据为位平面形式,这些形式之间的数据转换作为输入/输出处理的一部分由像素输入/输出单元50执行。
示例PE阵列为分级实现的,PE被划分为PE组(PEG)。每个PEG包括64个PE,表示8×8阵列段。48×64PE阵列20因而由6行PEG实现,每行具有8个PEG。每个PEG与其相邻的PEG耦合,使得跨过PEG边界来提供PE到PE的通信。该耦合是无缝的,使得从位平面操作的观点来看,PEG划分不明显。
示例PEG单元包括64位宽的多路访问PE存储器110。PEG级指令处理逻辑以及寄存器和计算逻辑组成了64个PE。PE存储器110的每个位片(bitslice)与64个PE中的一个耦合,对每个PE提供了有效的1位宽PE存储器110。
除了与北、南、东和西相邻单元通信,每个示例PEG包含8位的输入和输出路径,用于移动像素数据出入PE阵列20。CM寄存器平面提供了输入和输出期间的位平面数据的处理。数据以位平面的形式被移动出入PE阵列20。
在使用该图像处理系统100的示例系统中,帧缓冲器600为图像处理系统100外部的图像数据提供存储。帧缓冲器600经由Img总线接口与图像处理系统100通信。为满足带宽要求,Img总线接口的宽度为64位。
以64位多像素字来存储像素数据,如图7中所示。支持三种打包格式:每个字2个像素(30或32位像素数据),每个字3个像素(20位),以及每个字4个像素(16位)。以连续水平扫描顺序打包像素。在数据字内,更早的像素位于朝向该字的最高有效位端。像素通过该字中的最低有效位端-位0定位,因而任何未使用的位在最高有效位端。
在子帧数据输入和输出期间,数据字以水平扫描顺序移动。因此,位于数据字最低有效位端的像素跟随有图像帧中的下一个像素,它朝向序列中下一个数据字的最高有效位端被存储。
每个子帧行的第一数据字排列使得该子帧行的第一像素为数据字的第一像素。换句话说,子帧行不会在数据字的中间开始。这种排列可以通过限制子帧边界的间隔尺寸为2、3或4个像素的倍数(取决于像素打包)来实现。或者,帧缓冲器接口逻辑可以执行像素重打包功能以保证每个子帧行的排列。
这里描述的像素打包方法是示例系统所遵循的方法。其它的像素顺序和存储限制可以在所说明的整个数据处理方案的范围内被预期。
以前的页存储器方法存在一些缺点。以上说明的第一种方法(位行分页)提供了很高的数据存储密度,但是很低的分页带宽,导致最少利用页存储器用于临时图像数据存储。第二种方法(位平面分页)提供了很高的分页带宽,导致为了临时图像数据存储的异常功用。然而,该方法具有低密度的缺点,意味着必须牺牲PE密度到一定程度以适应页存储器。更少的PE意味着对给定芯片空间更低的性能。
本发明的实施例实现了页存储器40,它展现了可接受的高的分页带宽,同时保持了数据存储的高密度。在带宽和密度的典型折衷中使用了居中的方法,其中页存储器40的宽度实际上为1/8位平面。这是位行方法的宽度的6倍,并且是位平面方法的宽度的1/8。在结果尺度,单端口存储器单元的密度足够高,使得从更窄数据宽度方法几乎得不到什么。
本发明的页存储器40在页单元之间分布并被其支持,每个页单元200包含单个页存储器40。页单元这样分布使得PEG的每行由页单元200支持(见图12)。每个页存储器40的宽度为1位行(64位),并且以位行形式存储和通信数据。
示例实施例的每个页存储器40为1024×64的单端口存储器,容纳1024/8=128个位平面。位行数据这样分布使得每个PEG包含(位行)的8位片,对应于阵列中的PEG的位置。在PEG和页单元之间移动位平面需要对每个页单元200(以及PEG行)移动8个位行。
通过在每个PEG行及其页单元200之间移动包含PEG行位平面段的8个位行,来执行位平面的分页。每个PEG使用CM平面,CM平面移动位平面数据出入PEG而不影响前台计算。只有加载或存储CM需要从前台PE阵列20任务偷取一个周期。因此在该实施例中,图像的分页仅需要每个位平面来自前台任务的1个时钟。然而等待时间为每个位平面8个时钟。
像素输入/输出单元50经由公共的64位总线与6个页单元进行通信。像素输入/输出单元50具有每时钟1位行的吞吐量,并且在给定周期内,仅从单个页单元200移动数据或移动数据到单个页单元200。由于像素输入/输出单元50以子帧行为单位处理像素数据,数据移动的模式是从对应于一子帧行位置的页单元200移出或向其移入该子帧行的所有位行,然后继续移动至下一个子帧行。
当位行数据在页单元200和像素输入/输出单元50之间移动时,各页单元200使用行缓冲器602来保存位行数据。像素输入/输出单元50的数据移动模式是到/从页单元移动一子帧行,然后到/从下一个页单元移动一子帧行等等。这样,页单元行缓冲器在深度上只需要为1个子帧行。这也允许数据在页单元行缓冲器中被分级,使得所有页单元同时在其行缓冲器和页存储器40之间转移数据。这保证了页存储器40仅在可能的最高带宽(即1/8平面)被访问。
由于像素输入/输出单元50依次寻址页单元,子帧行移动的模式是在图像的像素行之间以8为间隔跳过。这样,例如,像素行0到第一页单元的移动将跟随有像素行8到第二页单元的移动,等等。这种数据移动的模式是必需的,以便限制行缓冲器的深度为单个子帧行,并且在行缓冲器和页存储器40之间对所有页单元提供同时的数据转移。
行缓冲器的使用也允许页存储器40可以在未发生任何行缓冲器和页存储器40之间的转移的任何时候,分页数据进入/出自PE阵列20。不论像素尺寸是多少(16、20或32位),与像素输入/输出单元50移动单个子帧行所需的时间同时执行1/8子帧图像的转移(即每PEG行1个子帧行)。因此可以看出,在示例实施例中,活动子帧输入/输出任务只要求全部时间的1/6来访问页存储器40。
总之,这里通过本发明实施例的示例给出的页存储器的实现允许页存储器40具有虽然不是最高但较高的密度。分页带宽为可接受的高,提供了相当低的等待时间的分页。当达到并发分页可行的程度时,分页的前台成本很低。并且,通过使用行缓冲器,分页和子帧输入/输出之间的交叉成本保持较低。
页存储器方法的比较显示出,本发明的实施例提供了高的页存储器密度。虽然不如所说明的第一个方法(位行方法)的高,它比所说明的第二个方法(位平面方法)的高得多。子帧输入/输出带宽和前台成本对3个方法而言相似。本发明的分页带宽比位行方法的更好,但是不如位平面方法。这可以通过分页的并发使得当使用并发时分页的前台成本与位平面方法的一样来减轻。(这在表中显示了从“很低”到“低”的降级,由于并发并不总是可行的。)最后,由于行缓冲器,分页和子帧输入/输出之间的交叉成本对本发明比其它两种方法的任一种更低。
包含PE阵列20的PEG的每行由页单元200来支持。页单元200包含页存储器400、输入FIFO 43、输出FIFO 42(以上被称为“行缓冲器”)以及控制器41。示例页单元200内的所有数据路径宽度为64位,与PE阵列20的宽度匹配。页单元200的结构图示于图15中。
由页单元200处理的所有数据为位行形式。即,每个64位字表示包含图像子帧内的像素行的64个像素的每一个的相应位。(例如,像素行的所有位0共同形成位行。)数据以位行形式存储在页存储器400中。页单元200和PE阵列20之间的CM数据流是位行形式,并且页单元200和像素输入/输出单元50之间的IO数据流是位行形式。
示例页存储器400为图像数据的128个位平面提供存储。由于PEG单元为8×8的,每个PEG行的8个位行构成一个位平面。因此示例页存储器400为1k×64。
位平面数据的存储示于图16中。每个位平面的8个位行以行顺序被连续存储(从北至南编号)。以8位行的块存储每个示例页存储器位平面0至127,从位平面数目的8倍的页存储器400地址开始。
页存储器子帧图像包含一些存储在页存储器40中的位平面。在该示例实现中,包含图像的位平面被强制形成邻近的位平面块。通过该实现,子帧图像可以由地址属性和尺寸属性来表示。地址属性指出以位平面为单位的子帧图像的起始地址。尺寸属性指出包含图像的位平面的数目。另外,非邻近的实现可以被预期用来存储页存储器图像。
示例PE阵列20使用已知为CM 17的寄存器平面。来自PE阵列20的输入数据的数据路径因此被标记为Cm_data_in,如图15中所示。相似地,到PE阵列20的输出数据的数据路径被标记为Cm_data_out。在示例PE阵列20中,这些数据路径与分布网络(PipeOdat等)耦合,允许数据分阶段分布到阵列和来自阵列。
示例PE阵列20在输入期间以南至北的方向并且在输出期间以北至南的方向执行CM移动。因此,页入需要按位行顺序将每个位平面移动到PE阵列20中,对每个位行页存储器地址加1。这种排序导致编号更低的位行朝向北PEG边界。页出需要以相反行顺序从PE阵列20移出每个位平面。该相反排序由页单元200内的控制块的地址生成来适应,使得位行以合适的顺序存储在页存储器400中。
像素输入/输出单元50提供了在页存储器40和外部帧缓冲器600之间子帧数据的输入和输出。在打包的像素形式和位行形式之间的数据转换由像素输入/输出单元50在子帧输入/输出期间执行。像素输入/输出单元50以64像素子帧行为单位移动和转换数据。
每个示例页单元200提供输入FIFO 43和输出FIFO 42来发送和接收数据到和来自像素输入/输出单元50。该实施例仅是示例。其它方法可能通过合适的控制逻辑,包括使用单个双向FIFO(双FIFO)或者单个双端口存储器。输入和输出FIFO每个都能够存储单个子帧像素行。数据可以经由64位的IO_data_in和IO_data_out信号路径,如图15中所示在像素输入/输出单元50和页单元200之间移动。
像素行包含共同地表征像素子帧行数据的位行。例如如果像素为20位,则像素行由20个位行表征。示例实施例支持16、20和32位像素数据的输入和输出。输入和输出FIFO因此深32宽64,以容纳最大像素尺寸(32位)。像素行按位顺序从最低有效位行(0)移动至最高有效位行(尺寸1)。输入和输出任务都遵循该位行移动的顺序。
在子帧输入/输出期间,页存储器400访问的顺序为像素行内的连续位行。给定像素行将为相应PEG行表征0至7行中的一个。给定行内的连续位行如图15中所示,相互偏移8个页存储器地址存储。用于访问像素行的页存储器地址模式因此从起始地址加上8,由地址*8+行给出(其中,地址为用于子帧图像的页存储器地址属性,并且行为表征PEG行内的像素行位置的行0至7)。
示例图像处理系统100包含带有6个相应页单元的6个PEG行。在子帧输入期间,像素行经由像素输入/输出单元50被依次移动至页单元,直到每个页单元200已接收到像素行。数据移动的模式是将像素行的所有位行移动至页单元,然后依次开始用于下一个页单元的数据移动。以每时钟1位行的速度移动数据。
一旦所有页单元已接收了位行,用于每个页单元200的输入FIFO43包含数据的子帧行,并且开始从输入FIFO 43到页存储器400的数据转移。该转移由所有页单元同时执行并每位行需要1个时钟。因为所有单元同时执行移动,转移花费填充所有6个页单元输入FIFO所需时间的1/6。在转移期间,子帧输入继续,填充第一页单元200的输入FIFO 43,同时该转移处理清空它。
在示例实施例中,确定转移何时开始的机制包含在每个页单元200中。所有页单元追踪像素行输入的过程,并且当每6个像素行输入完成时,所有页单元开始转移。其它实施例可以提供外部控制以触发所有页单元的转移。
在从输入FIFO 43到页存储器400的转移期间,禁止分页任务访问页存储器400。当没有转移发生的任何时候,允许分页任务访问页存储器400。可以看出在示例实施例中,分页任务可以在子帧输入期间以大约全速的5/6运行。
对子帧输出执行相似的数据移动模式。对于输出,首先开始从页存储器400到输出FIFO 42的转移,然后执行从每个页单元200依次移动像素行至像素输入/输出单元50。在页存储器400到输出FIFO 42的转移期间再次禁止分页任务。可以在没有转移发生的任何时候进行分页任务,使得分页任务在子帧输出期间以大约全速的5/6运行。在第一次转移之后,接下来的转移可以在子帧输出期间对第6页单元200执行。
页单元200内的子帧输入/输出和分页任务的控制由页单元控制器210来提供。控制逻辑包括状态逻辑以表征正在进行的子帧输入/输出和分页任务。子帧输入/输出和分页任务可以同时进行,虽然它们访问页存储器400可能不一致。
子帧输入/输出任务由从像素输入/输出单元50接收到io_cmd字来初始化。页单元200状态逻辑追踪子帧输入/输出任务的状态,并提供对页存储器400的地址生成。数据移动的时钟到时钟控制由像素输入/输出单元50给出的IO_rd_en和IO_wr_en读和写控制来提供。
分页任务由从程序序列发生器30接收到Inst_in和Wadr_in来初始化。页单元200状态逻辑追踪分页输入/输出任务的状态,并为页存储器400提供地址生成。数据移动的时钟到时钟控制由控制离散(discrete)经由Pipe Inst分布网络来提供。
虽然分页和子帧输入/输出任务可以同时进行,页存储器400可以在给定时钟周期期间只由一个任务访问。保证页存储器访问不冲突的机制在示例实施例中已在页单元200的外部实现。该外部机制为在本说明书其它位置讨论的Pg_Inh(页禁止)控制离散。特别地,在页单元200在页存储器400和输入或输出FIFO之间转移数据期间,正在进行的分页任务对页存储器400的访问被暂停。通过禁止来自PipeInst分布网络的时钟到时钟分页控制离散,来实现该分页任务的暂停。
像素输入/输出单元50提供了子帧数据在Simd Core和帧缓冲器600之间的输入和输出。像素输入/输出单元50响应由程序序列发生器30启动的输入/输出任务,并控制在Img总线和页单元之间的数据移动。Img总线上的子帧数据为打包的像素形式,但在PE阵列接口,数据为位行形式。子帧数据在这两种格式之间的转换为像素输入/输出单元50的主要功能。子帧输入/输出独立于阵列操作并因此可以并发地执行。
在图像处理系统100的示例中,子帧输入和输出任务由程序序列发生器30分派给像素输入/输出单元50中深度为8的输入/输出任务队列58,如图1中所示。像素输入/输出单元50从输入/输出任务队列58中移除输入和/或输出任务并依次处理每一个。
子帧数据在打包的像素形式和位行形式之间分两步转换。第一步是在打包矩阵52中执行的打包和拆包。第二步是在旋转矩阵54中执行的拐角旋转。
像素输入/输出单元50处理以子帧行为单位的数据。当打包矩阵52填充子帧行时,旋转矩阵54被清空(反之亦然)。当两个矩阵都准备好时,发生子帧行从一个到另一个的移交。由于该转换的流水线特性,在像素输入/输出单元50中有1个子帧行的等待时间。(对具有同样入/出方向的连续输入/输出任务,该流水线在从一个任务到下一个的转换期间保持满,以避免对填充该管道的惩罚)。
数据在像素输入/输出单元50和PE阵列20之间经由IO_data_in和IO_data_out信号路径以位行形式移动。(子帧数据同样以位行形式被页入和页出页存储器40。子帧数据只在PE阵列中按照整个位平面被存储和操作。)
页单元具有发送和接收位行数据的FIFO。周期地在这些FIFO和页存储器400自身之间转移位行数据。在这些转移期间,任何分页操作被禁止是必需的。像素输入/输出单元50计算合适的间隔,并产生Pg_Inh信号以禁止程序序列发生器30在该间隔期间产生分页指令。
在页单元和外部帧缓冲器600之间经由Img总线的输入和输出的数据流由图17说明。
打包矩阵52提供了64位帧缓冲器字(打包的像素)和像素形式之间的数据打包和拆包。在子帧输入期间数据从Img总线流入打包矩阵52,并在子帧输出期间流出打包矩阵52至Img总线。
旋转矩阵54提供数据在像素形式和位行形式之间的拐角旋转。在子帧输出期间数据经由IO_Data_in流入旋转矩阵54,并在子帧输入期间流出旋转矩阵54到IO_Data_out。
数据在打包矩阵52和旋转矩阵54之间一起被转移。对于子帧输入,2048个打包矩阵52位在单个周期内被转移至旋转矩阵54。对于子帧输出,2048个旋转矩阵54位在单个周期内被转移至打包矩阵52。
帧缓冲器字数据的打包和拆包由打包矩阵52执行。打包矩阵52为如图18中所示的64×32的寄存器阵列。打包矩阵52的64列每个包含一个像素,根据像素尺寸(即打包)使用16、20或全部的32位。像素数据与每列的底部(lsb边)对准用于子帧输入,但与各列的顶部(msb边)对准用于子帧输出(见图19)。(该差别的原因将连同旋转矩阵操作被解释。)
像素数据以一次一个帧缓冲器字被移动到打包矩阵52和从打包矩阵52移出。根据打包,一次2、3或4个像素被移进或移出矩阵。矩阵因此对每个输入或输出周期以2、3或4移动其所有数据。
对子帧输入,由于从Img总线读出每个帧缓冲器字,像素取自帧缓冲器字并被写入到相应的矩阵列。帧缓冲器字中的最低像素被写入列0,下一个更高的像素被写入列1,等等。这使帧缓冲器字中的像素顺序(msb至lsb的顺序)与矩阵中的顺序(高列至低列)匹配。
对子帧输出,像素从矩阵被读出并被用来形成帧缓冲器字以写到Img总线。再次,最高列(63)提供帧缓冲器字中的最高放置像素,下一列提供了下一个像素等等。
像素数据的每个子帧行被对准,使得该行的第一个字被完全占满并包含该行的头2、3或4个像素。对16和32位的像素,所有字将被完全占满并对准。对20位的像素,像素行的第22个(最后的)字只包含单个20位数据的有效像素,位于位[59:40]。对子帧输入,需要改变该最后字的打包矩阵52的控制,以使得它被移动1而不是3,并且在[59:40]的数据被写入矩阵的列0。对子帧输出,不需要特别的处理;由于第22次读取的额外2个像素被忽略。
旋转矩阵54在像素形式和位行形式之间转换子帧行。位行数据经由IO_Data_in和IO_Data_out信号路径被移动到PE阵列20和从PE阵列20移出。
对子帧输入,像素数据的子帧行当它已被打包矩阵52接收到后从打包矩阵52转移到旋转矩阵54。像素数据与每列的lsb行对准。转移后,旋转矩阵54的行0包含该子帧行的第一位行。通过将旋转矩阵54的行0写入IO_Data_out并向下移动矩阵一行来执行位行输出。该移动将所有像素的位1置于下一个位行输出的行0中。该过程被重复直到16、20或32个位行被转移。
对子帧输出,子帧行的第一位行(位行0)经由IO_Data_in被接收并且被写入旋转矩阵54的行31。下一个接收到的位行(位行1)被写入行31并且所有的行被向下移动1。该过程被重复直到子帧行所有的16、20或32个位行被接收到。然后,开始发生子帧行到打包矩阵52的转移。由于最后接收的位行(msb)在旋转矩阵54的行31中,被转移的数据将如前所述与打包矩阵52的msb边对准。
虽然示例实施例中只有3个打包尺寸(16、20、32),当页存储器40图像小于打包尺寸时,可以执行子帧输入/输出。例如,10位图像可以使用16位的包被输入或输出。在输入期间,这可以通过只将头10个位行写入IO_Data_out并放弃旋转矩阵54中剩下的位行来实现。为了通过16位打包来输出10位数据,经由IO_Data_in从页存储器40接收10位行,之后,(基于打包尺寸)注入0值位行以填充剩下的位行。
只能用于子帧输入的位偏移(bos)特征允许跳过每个像素中的最低有效部分中的一些位。实际上,除了位0外的位被选为每个像素的lsb。通过连同图像尺寸值(Img_size)一起使用位偏移,可以选择输入像素数据的任何邻近片。在旋转矩阵位行移动每个子帧行的头位偏移数,到IO_Data_out的位行输出被禁止。存储在页存储器40中的位平面的数目为Img_Size-Bit_Offset。图像分片没有提供输入/输出带宽的优势,但确实提供了管理页存储器40的好的控制度。
子帧数据经由IO_Data总线在像素输入/输出单元50和PE阵列20的页单元之间被移动。该总线提供用于经由IO_Data_in和IO_Data_out信号路径,移动64位的位行(见图22)。对位行输入和输出的控制由IO_rd_en_out和IO_wr_en_out信号来提供。
在每个子帧输入/输出任务的开始,像素输入/输出单元50发送信息到页单元以提供任务的排序。IO_cmd_out信号被断言为IO_cmd_out字包含任务信息的信号。在该命令字中包含的信息包含页存储器40基址、位平面中的图像尺寸以及任务的输入/输出方向。
子帧输入/输出和分页任务可以并发执行。在输入/输出FIFO和页存储器400之间的转移期间,子帧输入/输出任务需要周期性访问页单元中的页存储器400。子帧输入/输出任务在转移期间对页存储器400访问比分页任务具有更高优先级。在转移期间,分页任务被禁止以防止争用页存储器400。禁止分页任务的机制为被称为Pg_Inh(页禁止)的离散,该Pg_Inh由像素输入/输出单元50生成并提供给程序序列发生器30。
在位行开始移动到第6页单元200/从第6页单元200移出时立即开始转移。因此需要由一些时钟来预计转移的开始,以使得分页指令流中的窗口在正确的时间到达页单元。这是由于指令经过执行管道(在程序序列发生器30内)传播的等待时间,以及PE阵列20中的分布网络的延迟。
像素输入/输出单元50解决了产生Pg_Inh信号时程序序列发生器30的等待时间。输入/输出方向(进/出)也被考虑。Pg_Inh信号有效的间隔为转移过程提供了窗口。该窗口必须具有持续时间和位置(时间上的),在并发输入/输出和分页期间适应所有条件。
如这里通过示例所给出的,分页操作在PE存储器110和页存储器40之间移动子帧数据。分页可以与前台操作在PE阵列内并发地执行,虽然该页操作抢先偷取临时指令周期以执行CM平面的加载和存储。(类似地,尽管输入/输出操作临时抢先页操作一段时间以执行转移,子帧输入/输出操作可以与分页操作并发执行。)
页操作排序的控制由程序序列发生器30来提供。除了前台指令流,序列发生器产生CM移动指令序列,与PE阵列20中的前台计算指令并发执行。CM移动指令也被提供给页单元200,以被用作页存储器400读/写控制。
CM移动指令和页存储器400读/写控制必须被同步,以保证PE阵列20数据的正确移动。在示例实施例中,该同步任务通过使用分布网络来分配PE指令和CM数据到和从PE阵列20而变复杂了。这些网络的位置和延迟示于图23中。
在示例实施例中,每个分布网络的延迟为3个时钟。可以看到,分配到PE阵列20和页单元的CM移动指令同时到达。然而,由于CM数据分布网络,页单元200读和写控制将需要相对于PE阵列20所执行的CM移动命令被偏移3个时钟。在页入任务的情况下,读控制将需要在PE阵列20中领先CM移动3个时钟。这通过在PE阵列20中将CM移动延迟3个时钟来解决。对于页出,PE阵列20中的CM移动将需要领先写控制3个时钟。这通过在页单元中延迟写控制3个时钟来解决。
为了开始分页任务,程序序列发生器30用页存储器起始地址来初始化页单元200。页单元200响应被编码以指示页地址加载的PE指令来执行初始化。该起始地址经由Wadr_in输入来提供(图15)。从这一点来看,页单元200响应CM移动命令来执行分页任务。
页出任务的CM移动命令序列示于图15中。该序列以2位尺寸页出图像。每个位平面输出以从PE存储器11加载CM平面开始(CM=Aram(0),等)。(该指令被插入指令流中,从前台任务偷取一个周期。)该加载之后接着是CM平面的7次移动,经由分布网络提供所有8个位行(每PEG)给页单元200。(移动指令为并发的并且不抢先前台指令。)将CM数据写入页存储器40在各位行被提供给分布网络之后3个时钟发生。
页入任务的CM移动命令序列示于图24中。该序列以2位尺寸页入图像。在开始读取页存储器40之后4个时钟开始将数据移入阵列。这允许有1个时钟来读取同步页存储器40,接着是用于分布网络的3个时钟。跟随该延迟,对每个位平面执行8个CM移动的序列。在阵列内,第8个CM移动之后紧接着将CM平面写入PE存储器110。CM移动序列不会被写入PE存储器110所打断。
关于由PE阵列20的执行Wram cmd序列被示于图24中。如前所述,CM移入命令(CM=北移)被PE阵列20延迟,以使它们与页存储器40读取同步。由于Wram命令不被相似地延迟,由程序序列发生器30生成的Wram和CM命令的实际序列不同于显示在表中的在于,Wram命令被延迟3个时钟,以匹配由PE阵列20执行的CM命令延迟。这是该示例实施例的实现细节。
如前所述,分页任务可以与子帧输入/输出任务并发。当这种并发发生时,输入/输出任务将周期地抢先分页任务,以便在页存储器400和输入FIFO 43和输出FIFO 42之间执行转移。保持分页任务执行的机制是由像素输入/输出单元50产生的Pg_Inh(页禁止)离散,并被提供给程序序列发生器30单元。
当序列发生器接收到活动的Pg_Inh,所有分页命令的生成停止。Pg_Inh被保持活动以提供由转移过程进行页存储器40访问的时间窗。像素输入/输出单元50确定该窗口的间隔并相应地生成Pg_Inh。
虽然活动的Pg_Inh禁止生成分页指令,那些已经生成的指令将继续穿过执行管道和分布网络以被PE阵列20和页单元执行。像素输入/输出单元50在生成Pg_Inh离散过程中考虑该等待时间。该等待时间部分地取决于分页任务是页入还是页出。由于像素输入/输出单元50没有该信息,它建立了足够大的窗口以容纳各分页任务。
对于页入任务,应用Pg_Inh引起了复杂化。由于由序列发生器生成的Wram存储命令相对于CM移动命令偏移,存在Pg_Inh CM移动被异常执行的可能。如果Pg_Inh阻止了生成Wram存储命令,但允许与该存储相关联的一些CM移动,则这可能会发生。由于此原因,当页入任务被Pg_Inh保持时,3个最新的移动命令被保持在执行管道中,以阻止异常执行。

Claims (37)

1.一种数字数据处理系统,包括:
处理单元阵列,具有第一数据存储部件,适合于处理位平面数据;
第二数据存储部件,耦合至所述第一数据存储部件,适合于存储不需要立即处理的位平面数据;以及
所述第一数据存储部件和所述第二数据存储部件之间的数据路径,所述数据路径比一个位行宽并且比一个位平面窄。
2.权利要求1所述的系统,进一步包括第三数据存储部件,耦合至所述第二存储部件,并具有比所述第一存储部件和所述第二数据存储部件更高的密度。
3.权利要求2所述的系统,其中,所述第三数据存储部件适合于存储图像像素数据和打包的图像像素数据之一。
4.权利要求1所述的系统,其中,所述处理单元阵列包括M行和N列处理单元,所述第二数据存储部件分布在m个单元之中,每个单元为M/m行阵列段提供位平面数据存储,并且其中,每个单元以N位宽位行,将位平面数据输入到所述阵列和从所述阵列输出位平面数据。
5.权利要求4所述的系统,其中,所述m个单元的每一个进一步包括行缓冲器,它被配置成以位行形式存储数据的单个光栅顺序像素组,所述光栅顺序像素组代表包括N个像素的像素行。
6.权利要求5所述的系统,其中,所述行缓冲器包括输入位行数据的第一FIFO存储器和输出位行数据的第二FIFO存储器。
7.权利要求5所述的系统,其中,所述行缓冲器包括被配置用来输入和输出位行数据的双向FIFO存储器。
8.权利要求5所述的系统,其中,所述行缓冲器包括被配置用来输入和输出位行数据的双端口存储器件。
9.权利要求5所述的系统,适合于使像素数据输入遵循一种模式,由此所述m个单元的行缓冲器的每一个被依次写入,直到每个单元的行缓冲器包含一像素行,并且同时将像素行从所述行缓冲器转移到每个单元内的所述第二存储部件,其中,所述转移被定时以允许像素数据不间断地输入到所述单元,并由此所述像素数据输入模式暗示以m个像素行的步骤选择像素。
10.权利要求5所述的系统,适合于使像素数据输出遵循一种模式,由此像素行从每个单元内的所述第二存储部件同时转移到所述行缓冲器,以及其中,所述m个单元的行缓冲器的每一个被依次读取,直到所有单元行缓冲器为空,并且其中,所述转移被定时,以允许像素数据不间断地从所述单元输出,由此以m个像素行的步骤将像素写到所述输出帧。
11.权利要求4所述的系统,其中,所述处理单元阵列包括寄存器平面,该寄存器平面适合于在所述处理器阵列和所述单元之间移动位平面数据,所述寄存器平面以M/m-行间隔被分区,使得每个M/m-行的阵列段提供独立访问点,用于经由所述寄存器平面输入和输出位平面数据,所述访问点提供用于在所述M/m-行的阵列段和相应单元之间转移位行数据。
12.权利要求11所述的系统,其中,所述位平面数据的输入和输出作为后台任务来进行,而不干扰所述处理单元阵列的计算处理。
13.权利要求11所述的系统,进一步包括单个程序序列发生器,适合于控制所述处理单元阵列,以及与位平面输入和输出的控制同时提供计算处理的控制。
14.权利要求13所述的系统,其中,所述程序序列发生器进一步适合于发送命令到所述单元,以对所述第二数据存储部件提供读和写控制,以便控制位平面输入和输出。
15.权利要求13所述的系统,其中,所述程序序列发生器适合于接收页禁止逻辑离散,并响应活动的页禁止离散而禁止生成位平面输入和输出命令。
16.一种数字数据处理系统,包括:
处理单元阵列,具有第一数据存储部件,适合于处理位平面数据;以及
打包矩阵,耦合至所述处理单元阵列,所述打包矩阵包括寄存器阵列,适合于接收和存储包含单个周期中的多个像素的数据字,并且按光栅顺序单独存储来自所述数据字的像素。
17.权利要求16所述的系统,其中,所述打包矩阵适合于在单个周期内接收光栅顺序像素组。
18.权利要求16所述的系统,进一步包括旋转矩阵,耦合至所述打包矩阵,所述旋转矩阵包括寄存器阵列,适合于在单个时钟周期内接收包含光栅顺序像素组的数据,以及将每个像素存储在列中并传送位行数据。
19.权利要求18所述的系统,其中,所述旋转矩阵适合于同时移动列,使得所述位行从单个行被依次传送。
20.权利要求18所述的系统,其中,经由尺寸配置参数来选择小于数据字内的打包像素尺寸的像素尺寸,并且其中,所述旋转矩阵适合于通过为每个光栅顺序像素组传送等于选择的像素尺寸的若干位行来改变所述像素尺寸。
21.权利要求20所述的系统,其中,所述旋转矩阵适合于为光栅顺序像素组传送邻近的位行组,并且其中,通过位偏移参数和另一个尺寸参数来选择所述位行,以有效地为所述光栅顺序像素组内的每个像素提供选择的位范围。
22.权利要求16所述的系统,进一步包括第二数据存储部件,耦合至所述第一数据存储部件,适合于以位行形式存储数据并且以位平面组传送数据。
23.权利要求22所述的系统,其中,所述第二数据存储部件适合于以光栅顺序像素组接收数据,并且传送位平面数据至所述第一数据存储部件。
24.权利要求16所述的系统,适合于在第二数据存储部件访问之前的精确数目周期,生成逻辑离散禁止信号,以向其它单元指示对第二数据存储部件的访问将被禁止。
25.权利要求16所述的系统,其中,经由打包配置参数来选择打包在数据字内的可选数目的像素。
26.权利要求16所述的系统,进一步包括方向参数,其中所述系统基于方向参数的值,执行像素数据到位平面数据的转换,并执行位平面数据到像素数据的转换,这样提供任一方向上的数据转换。
27.权利要求26所述的系统,其中,经由打包配置参数来选择打包在数据字内的可选数目的像素。
28.一种数字数据处理系统,包括:
处理单元阵列,具有第一数据存储部件,适合于处理位平面形式的数据;以及
打包矩阵,耦合至所述处理单元阵列,包括寄存器阵列并适合于以光栅顺序单独存储像素数据,以及生成每个包含与多个像素相关的数据的数据字,并以每数据字单个时钟周期来传送所述数据字。
29.权利要求28所述的系统,其中,所述打包矩阵适合于在单个周期内接收光栅顺序像素组。
30.权利要求28所述的系统,适合于在第二数据存储部件访问之前的精确数目周期,生成逻辑离散禁止信号,以向其它单元指示对第二数据存储部件的访问将被禁止。
31.权利要求28所述的系统,进一步包括旋转矩阵,耦合至所述打包矩阵,包括寄存器阵列,适合于接收位行数据,并在单个周期内传送光栅顺序组的若干像素,所述像素存储在所述旋转矩阵的列内。
32.权利要求31所述的系统,其中,所述旋转矩阵适合于同时移动所有列,使得在所述矩阵的单个行内依次接收位行。
33.权利要求31所述的系统,其中,通过尺寸配置参数来选择小于将要打包在所述数据字中的像素尺寸的另一个像素尺寸,所述另一个像素尺寸代表将为光栅顺序像素组被旋转矩阵接收的位行的数目,并且其中,所述旋转矩阵通过填充0值的位行,将所述另一个尺寸的像素转换为所述打包的像素尺寸的像素。
34.权利要求28所述的系统,进一步包括第二数据存储部件,耦合至所述第一数据存储部件,适合于存储位行形式的数据并且传送光栅顺序的数据。
35.权利要求34所述的系统,其中,所述第二数据存储部件适合于从第一数据存储部件接收位平面数据组,并且以光栅顺序像素组传送数据。
36.权利要求28所述的系统,进一步包括方向参数,其中所述系统基于方向参数的值,执行像素数据到位平面数据的转换,并执行位平面数据到像素数据的转换,这样提供任一方向上的数据转换。
37.权利要求28所述的系统,其中,通过打包配置参数来选择打包在数据字内的可选数目的像素。
CNA2005800164640A 2004-04-08 2005-04-08 用于位平面数据的高密度存储和处理的方法和装置 Pending CN101427264A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US56047304P 2004-04-08 2004-04-08
US60/560,473 2004-04-08

Publications (1)

Publication Number Publication Date
CN101427264A true CN101427264A (zh) 2009-05-06

Family

ID=35150623

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2005800164640A Pending CN101427264A (zh) 2004-04-08 2005-04-08 用于位平面数据的高密度存储和处理的方法和装置

Country Status (4)

Country Link
US (1) US7593016B2 (zh)
EP (1) EP1756751A2 (zh)
CN (1) CN101427264A (zh)
WO (1) WO2005101297A2 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103034618A (zh) * 2012-03-22 2013-04-10 富士施乐株式会社 图像处理设备
CN107918533A (zh) * 2016-10-10 2018-04-17 青岛海信电器股份有限公司 一种打包模块和打包方法
CN110554852A (zh) * 2018-05-31 2019-12-10 赛灵思公司 数据拼接结构、方法及其片上实现
CN110704019A (zh) * 2019-08-26 2020-01-17 深圳芯英科技有限公司 数据缓存器及数据读取方法

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8031208B2 (en) * 2005-12-26 2011-10-04 Kabushiki Kaisha Toshiba Drawing apparatus and method for processing plural pixels in parallel
JP4528843B2 (ja) * 2008-03-28 2010-08-25 シャープ株式会社 ラインバッファ回路、画像処理装置、および画像形成装置
JP4543109B2 (ja) * 2008-03-28 2010-09-15 シャープ株式会社 画像処理装置および画像形成装置
US8898432B2 (en) 2011-10-25 2014-11-25 Geo Semiconductor, Inc. Folded SIMD array organized in groups (PEGs) of respective array segments, control signal distribution logic, and local memory
US9965824B2 (en) * 2015-04-23 2018-05-08 Google Llc Architecture for high performance, power efficient, programmable image processing
JP6548078B2 (ja) * 2015-09-11 2019-07-24 富士ゼロックス株式会社 画像処理装置および画像形成装置
US11360930B2 (en) 2017-12-19 2022-06-14 Samsung Electronics Co., Ltd. Neural processing accelerator

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5519829A (en) * 1990-08-03 1996-05-21 3Dlabs Ltd. Data-array processing and memory systems
US5808690A (en) * 1996-01-02 1998-09-15 Integrated Device Technology, Inc. Image generation system, methods and computer program products using distributed processing
US6173388B1 (en) * 1998-04-09 2001-01-09 Teranex Inc. Directly accessing local memories of array processors for improved real-time corner turning processing
US6067609A (en) * 1998-04-09 2000-05-23 Teranex, Inc. Pattern generation and shift plane operations for a mesh connected computer
US6185667B1 (en) * 1998-04-09 2001-02-06 Teranex, Inc. Input/output support for processing in a mesh connected computer
US6728863B1 (en) * 1999-10-26 2004-04-27 Assabet Ventures Wide connections for transferring data between PE's of an N-dimensional mesh-connected SIMD array while transferring operands from memory
US6728862B1 (en) * 2000-05-22 2004-04-27 Gazelle Technology Corporation Processor array and parallel data processing methods

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103034618A (zh) * 2012-03-22 2013-04-10 富士施乐株式会社 图像处理设备
CN103034618B (zh) * 2012-03-22 2014-03-26 富士施乐株式会社 图像处理设备
US8760721B2 (en) 2012-03-22 2014-06-24 Fuji Xerox Co., Ltd. Image processing apparatus and non-transitory computer readable medium
CN107918533A (zh) * 2016-10-10 2018-04-17 青岛海信电器股份有限公司 一种打包模块和打包方法
CN107918533B (zh) * 2016-10-10 2021-03-05 海信视像科技股份有限公司 一种打包模块和打包方法
CN110554852A (zh) * 2018-05-31 2019-12-10 赛灵思公司 数据拼接结构、方法及其片上实现
CN110704019A (zh) * 2019-08-26 2020-01-17 深圳芯英科技有限公司 数据缓存器及数据读取方法
CN110704019B (zh) * 2019-08-26 2020-12-22 深圳芯英科技有限公司 数据缓存器及数据读取方法

Also Published As

Publication number Publication date
US7593016B2 (en) 2009-09-22
EP1756751A2 (en) 2007-02-28
WO2005101297A2 (en) 2005-10-27
US20050248578A1 (en) 2005-11-10
WO2005101297A3 (en) 2009-05-14

Similar Documents

Publication Publication Date Title
CN101427264A (zh) 用于位平面数据的高密度存储和处理的方法和装置
US11475101B2 (en) Convolution engine for neural networks
EP0186150B1 (en) Parallel processing computer
CN107657581A (zh) 一种卷积神经网络cnn硬件加速器及加速方法
EP1927949A1 (en) Array of processing elements with local registers
EP3605544B1 (en) Image processor comprising a shift register with reduced wiring complexity
CN101482811B (zh) 用于增强的计算能力的处理器体系结构
WO1990004235A1 (en) Parallel data processor
CN110807170B (zh) 多样本多通道卷积神经网络Same卷积向量化实现方法
CN106846255B (zh) 图像旋转实现方法及装置
CN101084493A (zh) 在帧缓冲器内读取和写入像素分配子帧的方法和装置
JPH0642237B2 (ja) 並列処理装置
EP1792258B1 (en) Interconnections in simd processor architectures
JP2015529363A5 (zh)
US20020083266A1 (en) Image data organization into pixel tile memory matrix
CN115803811A (zh) 用于存储器处理单元架构的层间通信技术
EP0342022B1 (en) Image data read out sytem in a digital image processing system
JPS63201851A (ja) バッファ記憶アクセス方法
CN116050492A (zh) 一种扩展单元
JPH04295953A (ja) 要素プロセッサの2次元アレイを内蔵する並列データ処理装置および要素プロセッサのサブアレイユニット
US11853235B2 (en) Communicating between data processing engines using shared memory
Struharik et al. Stick buffer cache v2: Improved input feature map cache for reducing off-chip memory traffic in CNN accelerators
EP1927950A1 (en) Array of processing elements with local registers
KR102680573B1 (ko) 텐서 데이터를 위한 메모리 어레인지먼트
CN115796236A (zh) 一种基于存内cnn中间缓存调度的存储器

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: 20090506