CN112967169B - 用于图像生成器的数据片生成器 - Google Patents

用于图像生成器的数据片生成器 Download PDF

Info

Publication number
CN112967169B
CN112967169B CN202110171547.8A CN202110171547A CN112967169B CN 112967169 B CN112967169 B CN 112967169B CN 202110171547 A CN202110171547 A CN 202110171547A CN 112967169 B CN112967169 B CN 112967169B
Authority
CN
China
Prior art keywords
data
slice
image data
input
shift register
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.)
Active
Application number
CN202110171547.8A
Other languages
English (en)
Other versions
CN112967169A (zh
Inventor
阿尔伯特·迈克斯纳
杰森·鲁珀特·莱德格雷夫
奥弗尔·莎查姆
朱秋玲
丹尼尔·弗雷德里克·芬舍尔施泰因
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of CN112967169A publication Critical patent/CN112967169A/zh
Application granted granted Critical
Publication of CN112967169B publication Critical patent/CN112967169B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
    • H04N1/32101Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • 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
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B41PRINTING; LINING MACHINES; TYPEWRITERS; STAMPS
    • B41FPRINTING MACHINES OR PRESSES
    • B41F15/00Screen printers
    • B41F15/08Machines
    • B41F15/0804Machines for printing sheets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Mechanical Engineering (AREA)
  • Image Processing (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

公开了用于图像生成器的数据片生成器。本文描述了一种数据片生成器电路。所述数据片生成器包括电子电路以从图像数据帧接收包括多行数据的图像数据的线组。所述多行在数量上足以包含多个相邻的重叠模版。所述电子电路将所述线组解析成较小尺寸的数据片。所述电子电路将所述数据片加载到具有被耦合至处理器阵列的二维移位阵列结构的数据计算单元中。

Description

用于图像生成器的数据片生成器
本申请是分案申请,原案的申请号是201680019786.9,申请日是2016年4月4日,发明名称是“用于图像生成器的数据片生成器”。
技术领域
本发明的领域一般涉及图像处理,特别涉及用于图像生成器的数据片生成器。
背景技术
图像处理通常涉及对组织成阵列的像素值的处理。在此,经空间组织的二维阵列捕捉图像的二维性质(另外的维度可以包括时间(例如,二维图像的序列)和数据类型(例如,色彩)。在典型情景下,排列的像素值由已经生成静态图像或者帧序列的相机提供,以捕捉运动的图像。传统的图像处理器通常会落入两种极端之一。
第一种极端作为在通用处理器或者通用类处理器(例如,具有向量指令增强的通用处理器)上执行的软件程序执行图像处理任务。尽管第一种极端通常提供高度通用的应用软件开发平台,但其结合相关开销(例如,指令提取和解码、处理片上和片外数据、推测执行)使用更细粒度的数据结构会最终导致在执行程序代码期间每单位数据消耗的能量较多。
第二种相反的极端将固定功能的硬布线电路应用于大得多的数据块。使用更大的(相对于更细粒度的)数据块直接应用于定制设计的电路,大大降低每单位数据的功耗。然而,使用定制设计的固定功能电路通常会导致处理器只能执行一组有限的任务。这样,在第二种极端中缺乏广泛通用的编程环境(其与第一极端相关联)。
提供高度通用的应用软件开发机会结合改进的每单位数据的功率效率的技术平台仍是理想但缺失的解决方案。
发明内容
描述一种数据片生成器电路。数据片生成器包括电子电路用于从图像数据帧接收包括多行数据的图像数据的线组。所述多行在数量上足以包含多个相邻的重叠模版。电子电路将线组解析为较小尺寸的数据片。电子电路把数据片加载到具有被耦合至处理器阵列的二维移位阵列结构的数据计算单元中。
描述一种设备,该设备具有用于从图像数据的帧接收包括多行数据的图像数据的线组的装置。所述多行在数量上足以包含多个相邻的重叠模版。所述设备还包含用于把线组解析成较小尺寸的数据片的装置。该设备还包括用于把数据片加载到被耦合到处理器的阵列的二维移位阵列结构的装置。该设备还包括用于在处理器的阵列上执行程序代码以在所述数据片上处理多个邻近的重叠模版的装置。
附图说明
以下描述和附图用于说明本发明的实施例。在图中:
图1示出图像处理器硬件架构的实施例;
图2a、图2b、图2c、图2d和图2e描绘出通过重叠模版将图像数据解析成线组、将线组解析成数据片以及对数据片执行操作;
图3a示出模版处理器的实施例;
图3b示出模版处理器的指令字的实施例;
图4示出模版处理器内的数据计算单元的实施例;
图5a、图5b、图5c、图5d、图5e、图5f、图5g、图5h、图5i、图5j和图5k描绘出通过重叠模版使用二维移位阵列和执行道阵列来确定一对相邻输出像素值的示例;
图6示出用于集成的执行道阵列和二维移位阵列的单位胞元的实施例;
图7涉及由数据片生成器执行的第一操作;
图8涉及由数据片生成器执行的第二操作;
图9涉及由数据片生成器执行的第三操作;
图10涉及由数据片生成器执行的第四操作;
图11涉及由数据片生成器执行的第五操作;
图12涉及由数据片生成器执行的第六操作;
图13示出数据片生成器的实施例;
图14示出计算系统的实施例。
具体实施方式
a.图像处理器硬件架构和操作
图1示出用于以硬件实现的图像处理器的架构100的实施例。图像处理器可以例如作为编译器的目标,该编译器将为模拟环境内的虚拟处理器编写的程序代码转换成由硬件处理器实际执行的程序代码。如图1所示,架构100包括多个线缓存器单元101_1至101_M,线缓存器单元101_1至101_M通过网络104(例如,片上网络(NOC),包括片上交换网络、片上环形网络或者其他类型的网络)互连到多个模版处理器单元102_1至102_N和对应的数据片生成器单元103_1至103_N。在一个实施例中,任何线缓存器单元都可以通过网络104连接到任何数据片生成器和对应的模版处理器。
在一个实施例中,程序代码被编译并加载到对应的模版处理器102上以执行由软件开发者早先定义的图像处理操作(程序代码也可以被加载到模版处理器的相关数据片生成器103上,例如,这取决于设计和实现)。在至少一些实例中,图像处理流水线可以通过将用于第一流水线级的第一内核程序加载到第一模版处理器102_1中、将用于第二流水线级的第二内核程序加载到第二模版处理器102_2中等来实现,其中第一内核执行流水线的第一级的功能,第二内核执行流水线的第二级的功能等,并且安装附加的控制流方法,以将输出图像数据从流水线的一级转换到流水线的下一级。
在其他配置中,图像处理器可以被实现为具有操作相同内核程序代码的两个或两个以上模版处理器102_1、102_2的并行机。例如,图像数据的高密度和高数据速率流可以通过跨其中每个均执行相同功能的多个模版处理器扩展帧来处理。
在又一些其他配置中,基本上内核的任何DAG都可以被加载到硬件处理器上,这是通过在DAG设计中,配置具有其各自的相应程序代码内核的相应模版处理器,以及将适当的控制流钩子配置到硬件中以将输出图像从一个内核引导到下一个内核的输入。
作为一般流程,图像数据的帧由宏I/O单元105接收并且逐帧传送到线缓存器单元101中的一个或多个。特定的线缓存器单元将其图像数据的帧解析成图像数据的更小区域,称作“线组(line group)”,然后通过网络104将线组传送到特定的数据片生成器。完整或“完全”的单线组可以例如由一帧的多个连续完整的行或列的数据组成(简明起见,本说明书主要是指连续的行)。数据片生成器进一步将图像数据的线组解析成图像数据的更小区域,称作“数据片(sheet)”,并且将数据片提供给其对应的模版处理器。
在具有单个输入的图像处理流水线或者DAG流的情况下,通常,输入帧被引导至相同的线缓存器单元101_1,该线缓存器单元将图像数据解析成线组并且将线组引导到数据片生成器103_1,其对应的模版处理器102_1正执行流水线/DAG中的第一内核的代码。在模版处理器102_1对其处理的线组完成操作后,数据片生成器103_1将输出线组发送到“下游”的线缓存器单元101_2(在某些用例中,输出线组可以被发回到早先已发送输入线组的相同线缓存器单元101_1)。
然后,一个或多个“消费者”内核从下游的线缓存器单元101_2接收由第一模版处理器102_1生成的图像数据,“消费者”表示在各自其他数据片生成器和模版处理器(例如,数据片生成器103_2和模版处理器102_2)上执行的流水线/DAG中的下一级/操作。通过这种方式,在第一模版处理器上运行的“生产者”内核将其输出数据转发到在第二模版处理器上运行的“消费者”内核,其中消费者内核在生产者内核之后执行下一组任务,这与总体流水线或DAG的设计相符。
模版处理器102被设计成同时对图像数据的多个重叠模版(stencil)进行操作。模版处理器的多个重叠模版和内部硬件处理能力有效地确定数据片的尺寸。在此,在模版处理器102内,执行道的阵列操作一致使得同时处理被多个重叠模版覆盖的图像数据表面区域。
如下详述,在各种实施例中,图像数据的数据片被加载到模版处理器102内的二维寄存器阵列结构中。使用数据片和二维寄存器阵列结构被认为有效地提供功耗改善,这是通过将大量数据移入大量寄存器空间,例如,作为单个加载操作,紧随其后,由执行道阵列直接对数据执行处理任务。此外,使用执行道阵列和对应的寄存器阵列提供可易于编程/配置的不同模版大小。
图2a至图2e图示出线缓存器单元101的解析活动、数据片生成器单元103的更细粒度的解析活动以及耦合至数据片生成器单元103的模版处理器102的模版处理活动的高级实施例。
图2a描绘出图像数据201的输入帧的实施例。图2a还描绘出模版处理器被设计用来操作的三个重叠模版202(每个具有3像素×3像素的尺寸)的概略图。每个模版分别为其生成输出图像数据的输出像素以实心黑色来突出显示。简明起见,三个重叠模版202被描绘为仅在垂直方向上重叠。有必要认识到,实际上,模版处理器可以设计成在垂直方向和水平方向上都具有重叠模版。
由于模版处理器内的垂直重叠模版202,如图2a所示,在单个模版处理器能够操作的帧内存在宽范围的图像数据。如下详述,在一个实施例中,模版处理器跨图像数据以从左到右的方式在其重叠模版内处理数据(然后以从上到下的顺序对下一组线进行重复)。因此,随着模版处理器持续进行其操作,实心黑色输出像素块的数目会在水平方向上向右增加。如上所论,线缓存器单元101负责解析来自输入帧的输入图像数据的线组,其足以使模版处理器在更多个即将到来的周期中进行操作。线组的示例性描绘被图示为阴影区域203。在一个实施例中,如下进一步描述,线缓存器单元101能够具有用于向/从数据片生成器发送/接收线组的不同动态性。例如,根据一种称作“全组”的模式,在线缓存器单元与数据片生成器之间传送图像数据的完整全宽线。根据称作“实高”的第二模式,最初用全宽行的子集来传送线组。然后,依序以更小的片段(小于全宽)传送剩余的行。
随着输入图像数据的线组203已由线缓存器单元定义并且传送到数据片生成器单元,数据片生成器单元进一步将线组解析成更精细的数据片,其更准确适配于模版处理器的硬件限制。更具体地,如下详述,在一个实施例中,每个模版处理器由二维移位寄存器阵列组成。二维移位寄存器阵列基本上将图像数据移位到执行道的阵列“下方”,在此移位的模式使得每个执行道对其各自模版内的数据进行操作(也就是说,每个执行道对其自己的信息模版进行处理以生成用于该模版的输出)。在一个实施例中,数据片是“填充”或以其他方式加载到二维移位寄存器阵列中的输入图像数据的表面区域。
如将在下面更详细地描述的,在各种实施例中,实际上存在在任何周期上移位的二维寄存器数据的多层。为了方便起见,本说明书的大部分将简单地使用术语“二维移位寄存器”等以指代具有能够移位的二维寄存器数据的一个或多个这样的层的结构。
因此,如图2b所示,数据片生成器解析来自线组203的初始数据片204并且将其提供给模版处理器(在此,数据的数据片对应于通常由附图标记204标示的阴影区域)。如图2c和图2d所示,模版处理器通过在数据片上以从左到右的方式有效地移动重叠模版202而对输入图像数据的数据片进行操作。如图2d所示,从数据片内的数据能够算出的输出值的像素数被穷尽(没有其他像素位置会具有从数据片内的信息所确定的输出值)。简明起见,已忽略图像的边界区域。
如图2e所示,数据片生成器再为模版处理器提供下一个数据片205来继续操作。注意,模版开始对下一个数据片进行操作时的初始位置是从第一个数据片上的穷尽点向右的下一进度(如前在图2d中所示)。关于新的数据片205,随着模版处理器以与对第一个数据片的处理相同的方式对新的数据片进行操作,模版将简单地继续向右移动。
注意,由于围绕输出像素位置的模版的边界区域,在第一数据片204的数据与第二数据片205的数据之间存在一些重叠。重叠能够简单地通过数据片生成器重新发送重叠的数据两次来处理。在替选的实施方式中,为将下一个数据片馈送到模版处理器,数据片生成器可以仅继续将新的数据发送到模版处理器,并且模版处理器重新使用来自前一数据片的重叠数据。
b.模版处理器的设计和操作
图3a示出模版处理器架构300的实施例。如图3a所示,模版处理器包括数据计算单元301、标量处理器302以及相关联的存储器303和I/O单元304。数据计算单元301包括执行道阵列305、二维移位阵列结构306以及与阵列的特定行或列相关联的单独随机存取存储器307。
I/O单元304负责将从数据片生成器接收到的“输入”数据数据片加载到数据计算单元301中并且将来自模版处理器的“输出”数据数据片存储到数据片生成器中。在一个实施例中,将数据片数据加载到数据计算单元301中需要将接收到的数据片解析成图像数据的行/列并且将图像数据的行/列加载到执行道阵列的行/列的二维移位寄存器结构306或者相应的随机存取存储器307中(下面将更详细地描述)。如果数据片最初被加载到存储器307中,则执行道阵列305内的各个执行道可以在适当时将数据片数据从随机存取存储器307加载到二维移位寄存器结构306中(例如,作为对数据片数据进行操作之前的加载指令)。在完成将数据数据片加载到寄存器结构306(无论是直接从数据片生成器还是从存储器307)后,执行道阵列305的执行道对数据进行操作,并且最终将完成的数据作为数据片直接“写回”到数据片生成器或者到随机存取存储器307中。如果稍后I/O单元304从随机存取存储器307中取出数据来形成输出数据片,则将其转发到数据片生成器。
标量处理器302包括程序控制器309,其从标量存储器303读取模版处理器的程序代码的指令并且将这些指令发送到执行道阵列305中的执行道。在一个实施例中,单个相同的指令被广播到阵列305内的所有执行道以从数据计算单元301中实现SIMD类行为。在一个实施例中,从标量存储器303读取并且发送到执行道阵列305的执行道的指令的指令格式包括一个超长指令字(VLIW)型格式,其包括每指令不只一个的操作码。在另一个实施例中,VLIW格式包括指示由每个执行道的ALU执行的数学函数的ALU操作码(如下所述,其在一个实施例中可以指定一个以上的传统ALU操作)以及存储器操作码(其指示用于特定执行道或者一组执行道的存储器操作)。
用语“执行道(execution lane)”是指能够执行指令的一个或多个执行单元组成的集合(例如,能够执行指令的逻辑电路)。然而,在各种实施例中,执行道能够包括除执行单元之外的更多处理器类功能。例如,除一个或多个执行单元外,执行道还可以包括对接收到的指令进行解码的逻辑电路,或者在更多的MIMD类设计的情况下,包括取得和解码指令的逻辑电路。关于MIMD类方法,尽管在本文中大量描述到集中式程序控制方法,但在各种替选的实施例中可以实现更分布式的方法(例如,包括阵列305的每个执行道内的程序代码和程序控制器)。
执行道阵列305、程序控制器309和二维移位寄存器结构306的组合为大范围的可编程功能提供可广泛适用/配置的硬件平台。例如,鉴于各个执行道能够执行各种各样的功能并且能够易于访问邻近任何输出阵列位置的输入图像数据,应用软件开发者能够编程具有广泛不同功能能力的内核以及尺寸(例如,模版大小)。
除充当用于由执行道阵列305操作的图像数据的数据存储区之外,随机存取存储器307还可以保存一个或多个查找表。在各种实施例中,也可以在标量存储器303内实例化一个或多个标量查找表。
标量查找涉及将来自相同查找表的相同数据值从同一索引传送到执行道阵列305内的执行道中的每个。在各种实施例中,上述VLIW指令格式被扩展成还包括标量操作码,其将由标量处理器执行的查找操作引导至标量查找表中。指定与操作码同用的索引可以是立即操作数或者从其他一些数据存储位置提取。无论如何,在一个实施例中,从标量存储器内的标量查找表中进行查找基本上涉及在相同的时钟周期期间将相同的数据值广播到执行道阵列305内的全部执行道。下面进一步提供关于查找表的使用和操作的其他细节。
图3b概括上文所讨论的VLIW指令字的实施例。如图3b所示,VLIW指令字格式包括用于三个单独指令的字段:1)由标量处理器执行的标量指令351;2)由执行道阵列内的各个ALU以SIMD方式广播和执行的ALU指令352;以及3)以部分SIMD方式广播和执行的存储器指令353(例如,如果执行道阵列中沿同一行的执行道共享同一随机存取存储器,则来自不同行中的每行的一个执行道实际执行指令(存储器指令353的格式可以包括识别来自每行的哪一执行道执行指令的操作数))。
还包括用于一个或多个立即操作数的字段354。在指令格式中可以识别指令351、352、353中的哪一个使用哪个立即操作数信息。指令351、352、353中的每个还包括其各自相应的输入操作数和结果信息(例如,用于ALU操作的本地寄存器以及用于存储器访问指令的本地寄存器和存储器地址)。在一个实施例中,在执行道阵列内的执行道执行指令其他352、353中的任何一个之前,由标量处理器执行标量指令351。也就是说,执行VLIW字包括第一周期,在此期间执行标量指令351,随后是第二周期,在此期间可以执行其他指令352、353(注意,在各种实施例中,指令352和353可以被并行执行)。
在一个实施例中,由标量处理器执行的标量指令包括发送到数据片生成器以从/向数据计算单元的存储器或者2D移位寄存器加载/存储数据片的命令。在此,数据片发生器的操作能够取决于线缓存器单元的操作或者其他变量,这些变量防止周期数包含预运行,而这会使数据片生成器完成由标量处理器发出的任何命令。这样,在一个实施例中,标量指令351对应于或以其他方式导致向数据片发生器发出命令的任何VLIW字还包括另外两个指令字段352、353中的无操作(NOOP)指令。然后,程序代码输入指令字段352、353的NOOP指令循环,直到数据片发生器完成其向/从数据计算单元的加载/存储。在此,在向数据片生成器发出命令后,标量处理器可以设置数据片生成器在完成命令后重置的互锁寄存器的位。在NOOP循环期间,标量处理器监视互锁位的位。当标量处理器检测到数据片发生器已经完成其命令时,正常执行重新开始。
图4示出数据计算组件1001的实施例。如图4所示,数据计算组件401包括逻辑上定位于二维移位寄存器阵列结构406“上方”的执行道阵列405。如上所述,在各种实施例中,由数据片发生器提供的图像数据的数据片被加载到二维移位寄存器406中。然后,执行道对来自寄存器结构406的数据片数据进行操作。
执行道阵列405和移位寄存器结构406在位置上彼此相对固定。然而,移位寄存器阵列406内的数据以策略和协调方式移位,以使执行道阵列中的每个执行道处理数据内的不同模版。这样,每个执行道确定正生成的输出数据片中的不同像素的输出图像值。从图4的架构来看,应当清楚,重叠模版不仅被垂直布置,而且被水平布置,因为执行道阵列405包括垂直相邻的执行道以及水平相邻的执行道。
数据计算单元401的一些显著架构特征包括具有比执行道阵列405更宽尺寸的移位寄存器结构406。即在执行道阵列405之外存在寄存器的“晕圈”409。虽然晕圈409被表示成存在于执行道阵列的两侧,但根据实施方式,晕圈可以存在于执行道阵列405的更少侧(一侧)或更多侧(三侧或四侧)上。晕圈409用于当数据在执行道405“下方”移位时,为溢出执行道阵列405的边界之外的数据提供“溢出”空间。在简单的情况下,当处理模版最左边的像素时,居于执行道阵列405的右边缘中心的5×5模版需要再向右的四个晕圈寄存器位置。为便于绘图,图4示出,在标准实施例中,在晕圈右侧的寄存器仅具有水平移位连接,而晕圈底侧的寄存器仅具有垂直移位连接,而任何一侧(右侧、底侧)上的寄存器具有水平连接和垂直连接。
额外的溢出空间由随机存取存储器407提供,该随机访问存储器被耦合至阵列中的每一行和/或每一列或其部分(例如,随机存取存储器可以被分配给执行道阵列的“区域”,该区域跨4个执行道行和2个执行道列。简明起见,本申请的其余内容主要涉及基于行和/或列的分配方案)。在此,如果执行道的内核操作要求其处理二维移位寄存器阵列406之外的像素值(某些图像处理例程可能有所需要),则图像数据的平面能够进一步溢出,例如,从晕圈区域409溢到随机存取存储器407中。例如,考虑6×6模版,其中硬件包括在执行道阵列右边缘上的执行道右侧的仅四个存储元素的晕圈区域。在此情形下,数据需要被进一步移位到晕圈409的右边缘的右侧,以完整地处理模版。移位到晕圈区域409之外的数据则会溢出到随机存取存储器407。下面进一步提供随机存取存储器407和图3A的模版处理器的其他应用。
图5a至图5k示出如上所述的图像数据在二维移位寄存器阵列内移位到执行道阵列“下方”的方式的工作示例。如图5a所示,在第一阵列507中描绘出二维移位阵列的数据内容,并且由帧505描绘出执行道阵列。此外,简单地描绘出执行道阵列内的两个相邻的执行道510。在这种简单的描绘510中,每个执行道包括寄存器R1,其能够接受来自移位寄存器的数据,接受来自ALU输出的数据(例如,在周期之间表现为累加器),或者将输出数据写入输出目的地。
在本地寄存器R2中,每个执行道还可应用在二维移位阵列中位于其“下方”的内容。因此,R1是执行道的物理寄存器,而R2是二维移位寄存器阵列的物理寄存器。执行道包括能够对由R1和/或R2提供的操作数进行操作的ALU。如下详述,在一个实施例中,移位寄存器实际上用每个阵列位置的多个存储/寄存器元素(的“深度”)来实现,但移位活动被限制于一个存储元素平面(例如,每个周期仅能移位一个存储元素平面)。图5a至图5k描绘出这些较深寄存器位置中的一个,用于存储来自相应执行道的结果X。为便于图示,较深的结果寄存器被绘制在其配对寄存器R2的旁边而非其下方。
图5a至图5k集中于两个模版的计算,这两个模版的中心位置与执行道阵列内绘出的一对执行道位置511对齐。为便于图示,这对执行道510被绘制成水平邻居,而根据以下示例,它们实际上垂直邻居。
如最初在图5a中所示,执行道以其中心的模版位置为中心。图5b示出由两个执行道执行的目标代码。如图5b所示,两个执行道的程序代码使得移位寄存器阵列内的数据向下移位一个位置并且向右移位一个位置。这就使两个执行道对准其各自模版的左上角。然后,程序代码使得(在R2中)位于它们相应位置的数据加载到R1中。
如图5c所示,接下来,程序代码使得这对执行道将移位寄存器阵列内的数据向左移位一个单位,这就使得每个执行道的相应位置右侧的值移到每个执行道的位置。然后,将R1中的值(前一个值)添加已移位到执行道的位置的新值(在R2中)。将结果写入R1。如图5d所示,重复与上文参照图5c所述相同的处理,这就使得所得的R1目前包括上执行道中的值A+B+C以及下行执行道中的F+G+H。在这一点上,两个执行道都已经处理它们各自模版的上行。注意,如果在执行道阵列的左侧不存在晕圈区域,则会溢出到执行道阵列左侧的晕圈区域(如果左侧存在一个晕圈区域)或者随机存取存储器中。
如图5e所示,接下来,程序代码使得移位寄存器阵列内的数据向上移位一个单位,这就使得两个执行道都与它们各自模版的中间行的右边缘对准。两个执行道的寄存器R1当前包括模版的顶行和中间行的最右值之和。图5f和图5g示出跨两条执行道的模版的中间行向左移动的连续进展。继续累加,这样在图5g的处理结束时,两个执行道包括它们各自模版的顶行和中间行的值之和。
图5h示出将每个执行道与其对应的模版的最下行对准的另一移位。图5i和图5j示出在两个执行道的模版的进程中继续移位以完成处理。图5k示出附加移位,以使每个执行道与其在数据阵列中的正确位置对准并且将结果写入其中。
在图5a至图5k的示例中,注意,用于移位操作的目标代码可以包括识别以(X,Y)坐标表达的移位的方向和量级的指令格式。例如,用于向上移位一个位置的目标代码可以在目标代码中表达为SHIFT0,+1。作为另一示例,向右移位一个位置可以在目标代码中表达为SHIFT+1,0。在各种实施例中,较大量级的移位也可以在目标代码中指定(例如,SHIFT 0,+2)。在此,如果2D移位寄存器硬件仅支持每周期移位一个位置,则指令可以被机器解释成需要多个周期执行,或者2D移位寄存器硬件可以被设计成支持每周期移位一个以上位置。下面将进一步详细描述后一情况的实施例。
图6示出阵列执行道和移位寄存器结构的单位胞元(cell)的另一个更详细的描述(晕圈区域中的寄存器不包括对应的执行道)。在一个实施例中,通过在执行道阵列的每个节点处实例化图12中所示的电路,实现与执行道阵列中的每个位置相关联的执行道和寄存器空间。如图6所示,单位胞元包括执行道601,其被耦合至由四个寄存器R2至R5组成的寄存器堆602。在任一周期期间,执行道601可以从寄存器R1至R5中的任何一个读取或者向其写入。对于需要两个输入操作数的指令,执行道可以从R1至R5中的任何一个获得两个操作数。
在一个实施例中,实现二维移位寄存器结构是通过在单个周期期间允许寄存器R2至R4中的任何(仅)一个的内容通过输出复用器603“移出”到其邻居的寄存器堆中的一个,并且将寄存器R2至R4中的任何(仅)一个的内容替换成如果其邻居通过输入复用器604从对应的一个“移入”的内容,使得邻居之间的移位处于相同的方向(例如,全部执行道向左移位,全部执行道向右移位等)。虽然通常相同寄存器可能会将其内容移出并且替换成在相同周期中移入的内容,但复用器装置603、604允许同一周期期间同一寄存器堆内的不同移位源寄存器和移位目标寄存器。
如图6所示,注意,在移位序列期间,执行道将内容从其寄存器堆602移位到其左邻、右邻、上邻和下邻中的每个。结合相同的移位序列,执行道还将内容从其左邻、右邻、上邻和下邻中的特定一个移位到其寄存器堆中。另外,对于全部执行道,移出目标和移入源应当符合同一移位方向(例如,如果移出是向右方的邻居,则移入应当是从左方的邻居)。
虽然在一个实施例中,每个周期每个执行道允许移位唯一寄存器的内容,但其他实施例可以允许移入/移出多个寄存器的内容。例如,如果将图6中所示的复用器电路603、604的第二个实例并入图6的设计中,则在同一周期期间可以移出/移入两个寄存器的内容。当然,在每个周期允许移位唯一寄存器的内容的实施例中,通过消耗更多的时钟周期用于数学运算之间的移位,可以在数学运算之间进行从多个寄存器移位(例如,通过在数学运算之间消耗两个移位操作,可以在数学运算之间移位两个寄存器的内容)。
如果在移位序列期间移出的内容少于执行道的寄存器堆的全部内容,则注意,每个执行道的未移出的寄存器的内容保持在位(不移位)。这样,任何未替换成移入内容的未移位内容在整个移位周期内仍在本地存留于执行道。在每个执行道中观察到的存储器单元(“M”)被用于从/向与执行道阵列内的执行道的行和/或列相关联的随机存取存储器空间加载/存储数据。在此,M单元充当标准的M单元,因为其经常被使用于加载/存储无法从/向执行道本身的寄存器空间加载/存储的数据。在各种实施例中,M单元的主要操作是将数据从本地寄存器写入存储器以及从存储器读取数据并且将其写入本地寄存器。
关于由硬件执行道601的ALU单元支持的ISA操作码,在各种实施例中,由硬件ALU支持的数学操作码与由虚拟执行道支持的数学操作码(例如,ADD、SUB、MOV、MUL、MAD、ABS、DIV、SHL、SHR、MIN/MAX、SEL、AND、OR、XOR、NOT)整体上相同(例如,大体上相同)。如上所述,存储器访问指令能够由执行道601执行以从/向其相关联的随机存取存储器提取/存储数据。此外,硬件执行道601支持移位操作指令(右、左、上、下)以移位二维移位寄存器结构内的数据。如上所述,程序控制指令主要由模版处理器的标量处理器执行。
c.数据片生成器的操作和设计
图7至图12涉及数据片发生器的特殊考虑和/或操作。如上所述,数据片发生器负责生成信息的数据片,用于对应的模版处理器来处理。为在整个处理器的设计中实施广泛的多功能性/可编程性,数据片生成器在某些情况下可能需要在准备输入数据片时执行附加操作,而不仅仅从接收到的线组中解析适当的部分。
例如,在一些情况下,程序代码将要求同时处理同一图像的多个通道。例如,许多视频图像具有红色(R)通道、蓝色(B)通道和绿色(G)通道。在一个实施例中,数据片发生器利用具有相关联的存储器以及在存储器外执行的程序代码的处理器来实现。
如图7所示,响应于从应用软件检测到内核将同时处理来自不同通道的数据的需求(其可能已经从编译器得到提示),由数据片生成器执行的程序代码将继续沿不同的“平面”形成单独的数据片(即,根据每个通道形成不同的数据片),并且将它们一起加载到数据计算单元中。也就是说,数据片发生器将为阵列的相同部分生成R数据片、B数据片和G数据片,并且将全部三个数据片加载到计算单元中。然后,执行道阵列内的执行道视需要对R、G和B数据片进行自由操作(例如,通过将R数据片存储在寄存器堆的一层中,将G数据片存储在寄存器堆的另一层中并且将B数据片存储在寄存器堆的又一层中)。
图8涉及用于多维输入图像的数据片生成。在此,虽然许多输入图像是简单阵列的形式,但在一些情况下,阵列中的每个位置会对应于多维数据结构。作为说明性示例,图8描绘出每个阵列位置包含对应于3×3×3立方体的不同区段的27个不同值的图像。在此,每个阵列位置均具有多维数据结构,数据片生成器将“展开”输入阵列,使得为每个数据结构维度形成单独的数据片。因此,如图8所示,数据片生成器将生成27个数据片(每个立方体区段一个),其中全部数据片中的每个数据片的每个阵列位置包含标量值(一个立方体区段)。然后,将27个数据片加载到模版处理器中。然后,由执行道阵列内的执行道执行的程序代码在知悉已经展开多维输入阵列的方式的情况下对27个数据片进行操作。
图9涉及用于允许执行道阵列内的执行道处理不同数据位宽的技术。在此,如在本领域中所理解,通过增加数据值的位宽来达成更大的动态范围(16位值能够表达比8位值具有更大动态范围的值)。在一个实施例中,预期模版处理器对具有诸如8、16或32位像素值的不同位宽的图像进行操作。这样,根据一种方法,执行道本身是32位机器,从某种意义上,执行道内部能够处理32位操作数。
然而,为了降低二维移位寄存器的规模和复杂度,每个执行道的寄存器堆内的寄存器的各个存储元素被限制成8位。这在8位图像数据的情况下没有问题,因为整个数据数据片能够适配于寄存器堆中的一个寄存器。反之,在16位或32位操作数的情况下,数据片生成器生成多个数据片来适当地表达输入操作数的数据集。
例如,如图9所示,在16位输入操作数的情况下,数据片发生器将生成HI半数据片和LO半数据片。HI半数据片包含正确阵列位置处的每个数据项的高8位。LO半数据片包含正确阵列位置处的每个数据项的低8位。然后,执行16位操作是通过将两个数据片加载到模版处理器中以及通知执行道硬件(例如,经由程序代码中的立即值)进行16位操作。在此,作为只是一种可行的操作模式,HI数据片和LO数据片都被加载到每个执行道寄存器堆的两个不同寄存器中。
执行道单元能够通过首先从寄存器堆位置之一读取数据并且在其中对该数据附加从寄存器堆位置中另一个读取的数据,在内部构造正确的操作数。类似地,在写入方向上,执行道单元要执行两次写入。具体地,第一次将低8位写入包含LO数据片的寄存器堆的第一寄存器,然后第二次将高8位写入包含HI数据片的寄存器堆的第二寄存器。
回顾图12的讨论,在各种实施例中,每个周期仅允许移位一个寄存器的内容。这样,为在二维移位寄存器结构周围移动16位数据值,在8位数据值的情况下,每个移位序列(在数学运算之间)消耗两个周期,而非消耗一个周期。也就是说,在8位数据值的标定情况下,在单个周期中,可以在位置之间移位全部数据。反之,在16位数据值的情况下,每个移位寄存器的移位操作(HI半数据片和LO半数据片)则须移位两个8位值。在一个实施例中,在32位的情况下,除了创建四个数据片而非两个数据片来表示整个图像数据之外,应用相同的原理。同样,每个移位序列可能需要消耗多达四个周期。
图10涉及图像处理器从低密度分辨率到高密度分辨率“上采样”输入图像数据的情况。在此,较之输入图像包含的,模版处理器负责生成对每图像单位面积的更多输出值。数据片发生器通过在数据片上重复相同的数据值来处理上采样问题,使得数据片数据值密度对应于上采样(高密度)的输出图像。也就是说,例如,如图10所示,鉴于输出图像的密度,在输出执行道阵列密度对应于4:1上采样(每个输入像素对应四个输出像素)的情况下,数据片发生器为每个输入值制作具有四个相同值的数据片。
图11涉及“下采样”的相反情况。在下采样的情况下,较之对低密度输入图像,数据片发生器将生成更多的数据片。具体地,如果输入图像在一个(例如,X)方向上具有S高分辨率的因子,而在另一个(例如,Y)方向上具有T高分辨率的因子,则数据片发生器将从初始密度较大的初始数据片生成S*T数据片。这有效地将更多的输入像素分配给任何特定的输出像素。
图12涉及由执行道阵列内的执行道执行的数学运算需要大于二维移位寄存器结构的大小的图像数据表面积的情况。如图12所示,要加载到用于处理的二维移位寄存器结构中的数据片对应于输入帧的阴影区域1201。然而,将计算阴影区域内的阵列位置的输出值的数学运算需要在图12中所示的由虚线边框1202界定的帧内的值。因此,在二维移位寄存器结构的表面区域之外存在大的“支持区域”,其将被包含在操作中。
在这些条件下,数据片发生器不仅会将对应于阴影区域1201的数据片加载到模版处理器中,而且还将三个(非阴影的)相邻数据片加载到数据计算单元中。由执行道执行的程序代码将视需要向/从随机存取存储器调用和移出数据片,并且/或者将数据片中的一些或全部存储在二维移位寄存器阵列的较深寄存器中。
图13提供用于数据片发生器的硬件设计1300的实施例。如图13所示,在一个实施例中,数据片发生器被实现为具有处理器/控制器1301的计算系统,所述处理器/控制器执行存储在存储器1302中的程序代码,以执行数据片生成器任务,诸如上文参照图7至图12所述的任务中的任何一个。数据片发生器还包括用于从/向网络接收/发送线组以及从/向数据片发生器的相关联的模版处理器接收/发送数据片的I/O单元1303。
数据片发生器的相关特征是其配置空间1304,该配置空间可以被实现成数据片发生器内(如图13所示)、处理器/控制器1301内和/或存储器1302内的单独寄存器空间。配置空间1304有助于整体平台的广泛适应性和可编程性。在此,在配置空间1304中作出的设置可以例如包括相关的图像特征和尺寸,诸如帧大小、线组大小、数据片大小、输入图像的像素分辨率、输出图像的像素分辨率等。然后,存储器1302内的程序代码使用配置空间内的信息作为输入变量对有正确大小的数据片等实现正确的操作。
替选地或以某种组合方式,整体平台的广泛适应性和可编程性可以通过将定制的程序代码加载到存储器1302用于特定的应用和/或图像尺寸来实现。在此,例如,编译器能够容易地参考位置相对寻址方案的X、Y坐标和/或帧大小和线组大小中的任何一个,以便于确定数据片大小、数据片边界等,并且将通用将程序代码模版定制到专用于手头图像处理任务的软件程序。同样地,任何这样的转译和实际使用相对定位或其他图像尺寸可以被输入到配置空间1304中,其中数据片生成器上存在的程序代码对数据片边界、数据片大小等进行确定。
d.实施方式的实施例
有必要指出,上述各种图像处理器架构特征不一定限于传统意义上的图像处理并由此可以应用于可能(或可能不)促使图像处理器被重新表征的其他应用。例如,如果上述各种图像处理器架构特征中的任何一个要被使用于创建和/或生成和/或呈现动画,而非处理实际的相机图像,则图像处理器可以被表征为图形处理单元。此外,上述图像处理器架构特征可以被应用于其他技术应用,诸如视频处理、视觉处理、图像识别和/或机器学习。通过这种方式应用,图像处理器可以(如作为协处理器)与更通用的处理器(例如,作为计算系统的CPU或其一部分)集成,或者可以是计算系统内的独立处理器。
上文所讨论的硬件设计实施例可以在半导体芯片内和/或作为用于最终靶向半导体制造工艺的电路设计的描述来实现。在后一情况下,这样的电路描述可以采取高级/行为级电路说明(例如,VHDL描述)或者低级电路描述(例如,寄存器传送级(RTL)描述、晶体管级描述或掩模描述)或者其各种组合。电路描述通常被体现于计算机可读存储介质(诸如CD-ROM或其他类型的存储技术)上。
从前述部分而言,有必要认识到,如上所述的图像处理器可以被体现于计算机系统上的硬件中(例如,作为处理来自手持设备的相机的数据的手持设备的片上系统(SOC)的一部分)。在图像处理器被实现为硬件电路的情况下,注意,由图像处理器处理的图像数据可以直接从相机接收。在此,图像处理器可以是分立相机的一部分,或者是具有集成相机的计算系统的一部分。在后一情况下,图像数据可以直接从相机或者从计算系统的系统存储器接收(例如,相机将其图像数据发送到系统存储器而非图像处理器)。还应注意,前述部分中所述的许多特征可以适用于图形处理器单元(其呈现动画)。
图14提供计算系统的示例性绘图。下述计算系统的许多组件可应用于具有集成相机和相关联的图像处理器的计算系统(例如,手持设备,诸如智能电话或平板型计算机)。本领域普通技术人员能够容易理解两者之间的关系。
如图14所示,基本计算系统可以包括中央处理单元1401(其可以例如包括多个通用处理核1415_1至1415_N以及布置在多核处理器上的主存储器控制器1417或者应用处理器)、系统存储器1402、显示器1403(例如,触摸屏、平板)、本地有线点对点链路(例如,USB)接口1404、各种网络I/O功能1405(诸如以太网接口和/或蜂窝调制解调器子系统)、无线局域网(例如,WiFi)接口1406、无线点对点链路(例如,蓝牙)接口1407和全球定位系统接口1408、各种传感器1409_1至1409_N、一个或多个相机1410、电池1411、功率管理控制单元1414、扬声器和麦克风1413以及音频编码器/解码器1414。
应用处理器或多核处理器1450可以包括其CPU 1401内的一个或多个通用处理核1415、一个或多个图形处理单元1416、存储器管理功能1417(例如,存储器控制器)、I/O控制功能1418以及图像处理单元1419。通用处理核1415通常执行计算系统的操作系统和应用软件。图形处理单元1416通常执行图形敏感功能,例如,用以生成在显示器1403上呈现的图形信息。存储器控制功能1417与系统存储器1402接口,以向/从系统存储器1402写入/读取数据。功率管理控制单元1414通常控制系统1400的功耗。
图像处理单元1419可以根据前述部分中的详细描述的图像处理单元实施例中的任何一个来实现。替选地或组合地,IPU 1419可以被耦合至GPU 1416和CPU 1401中的一个或两者,作为其协同处理器。此外,在各种实施例中,GPU 1416可以通过上文详细描述的图像处理器特征中的任何一个来实现。
触摸屏显示器1403、通信接口1404至1407、GPS接口1408、传感器1409、相机1410和扬声器/麦克风编解码器1413、1414中的每个能够被视为各种形式的I/O(输入和/或输出),这是相对于整个计算系统而言,在适当情况下,其还包括集成的外围设备(例如,一个或多个照相机1410)。根据实施方式,这些I/O组件中的各个都可以被集成在应用处理器/多核处理器1450上,或者可以位于处理器/多核处理器1450的管芯之外或者其封装之外。
在一个实施例中,一个或多个相机1410包括能够在相机与其视野内的物体之间测量深度的深度相机。在应用处理器或其他处理器的通用CPU核(或具有用于执行程序代码的指令执行流水线的其他功能块)上执行的应用软件、操作系统软件、设备驱动器软件和/或固件可以执行上述功能中的任何一个。
本发明的实施例可以包括如上所述的各种过程。这些过程可以被体现于机器可执行指令中。这些指令能够被使用于促使通用或专用处理器执行某些过程。替选地,这些过程可以通过包含用于执行过程的硬连线逻辑的专用硬件组件或者通过编程的计算机组件和定制的硬件组件的任何组合来执行。
本发明的元素还可以作为用于存储机器可执行指令的机器可读介质来提供。机器可读介质可以包括但不限于软盘、光盘、CD-ROM和磁光盘、闪速存储器、ROM、RAM、EPROM、EEPROM、磁卡或光卡、传播介质或其他类型的适用于存储电子指令的介质/机器可读介质。例如,本发明可以作为计算机程序来下载,该计算机程序可以经由通信链路(例如,调制解调器或网络连接)通过体现于载波或其他传播介质中的数据信号而从远程计算机(例如,服务器)传送到请求计算机(例如,客户端)。
在前文的说明书中,本发明已经参照其具体示例性实施例来予以描述。然而,显然可以对其作出修改和更改,而不背离如所附权利要求所述的本发明的更宽精神和范围。因此,说明书和附图被认为说明性而非限制性意义。

Claims (19)

1.一种图像处理方法,包括:
由数据片生成器从线缓存器接收包括来自图像数据帧的多行的图像数据的线组,所述多行在数量上足以包含多个相邻的重叠模版;
由所述数据片生成器将输入数据片加载到被耦合至执行道阵列的二维移位寄存器阵列中,所述输入数据片包括来自所述线组的数据的子集,其中所述输入数据片小于从所述线缓存器接收的所述线组,并且其中所述输入数据片具有与所述二维移位寄存器阵列的大小相对应的大小;
由所述执行道阵列中的每个执行道执行程序代码,以处理加载到所述二维移位寄存器阵列中的所述输入数据片上的所述多个相邻的重叠模版,其中,执行所述程序代码使得每个执行道从所述输入数据片的图像数据中生成被存储在所述二维移位寄存器阵列中的图像数据的输出数据片的相应输出值;和
将由所述执行道阵列计算的所述图像数据的输出数据片提供返回到所述数据片生成器。
2.根据权利要求1所述的方法,还包括:由所述数据片生成器向下游线缓存器提供包括所述图像数据的输出数据片的输出线组。
3.根据权利要求1所述的方法,其中,所述二维移位寄存器阵列包括多个层,并且其中,所述图像数据包括每个位置的图像数据的多个部分,
其中,将所述输入数据片加载到所述二维移位寄存器阵列中包括:将具有第一数据的第一数据片从所述多个部分中的第一部分加载到所述多个层中的第一层中,并且还包括:
将具有第二数据的第二数据片从所述多个部分中的第二部分加载到所述多个层的第二层中。
4.根据权利要求3所述的方法,其中,所述图像数据的多个部分包括所述图像数据中的每个位置处的多维数据结构的组件。
5.根据权利要求3所述的方法,其中,所述二维移位寄存器阵列包括具有比所述图像数据小的位宽的寄存器,并且其中所述图像数据的多个部分包括所述图像数据的高位和低位。
6.根据权利要求3所述的方法,其中,所述图像数据的多个部分包括所述图像数据中的每个位置处的图像数据的多个通道。
7.根据权利要求1所述的方法,其中,加载所述输入数据片包括:
通过复制所述图像数据中每个数据值的多个实例,生成具有上采样图像数据的上采样输入数据片。
8.根据权利要求1所述的方法,其中,加载所述输入数据片包括:
通过将每个输入数据值的多个实例组合到下采样输入数据片中的单个值中,来生成具有下采样图像数据的所述下采样输入数据片。
9.根据权利要求1所述的方法,其中执行所述程序代码使得所述二维移位寄存器阵列将所述输入数据片移位,从而每个执行道遍历二维的相应模板,其中,生成相应的输出值包括:当所述输入数据片被所述二维移位寄存器阵列移位时,由每个执行道根据由所述执行道所遇到的图像数据来生成所述相应的输出值。
10.一种图像处理设备,包括:
数据片生成器,所述数据片生成器配置为:
从线缓存器接收包括来自图像数据帧的多行的图像数据的线组,所述多行在数量上足以包含多个相邻的重叠模版;以及
将输入数据片加载到被耦合至执行道阵列的二维移位寄存器阵列中,所述输入数据片包括来自所述线组的数据的子集,其中所述输入数据片小于从所述线缓存器接收的所述线组,并且其中所述输入数据片具有与所述二维移位寄存器阵列的大小相对应的大小,
其中,所述执行道阵列中的每个执行道被配置成:执行程序代码以处理加载到所述二维移位寄存器阵列中的所述输入数据片上的所述多个相邻的重叠模版,其中,执行所述程序代码使得每个执行道从所述输入数据片的所述图像数据中生成被存储在所述二维移位寄存器阵列中的图像数据的输出数据片的相应输出值;以及,将由所述执行道阵列计算的所述图像数据的输出数据片提供返回到所述数据片生成器。
11.根据权利要求10所述的设备,其中,所述数据片生成器还被配置成:向下游线缓存器提供所述线组。
12.根据权利要求10所述的设备,其中,所述二维移位寄存器阵列包括多个层,并且其中,所述图像数据包括每个位置的图像数据的多个部分,
其中,将所述输入数据片加载到所述二维移位寄存器阵列中包括:将具有第一数据的第一数据片从所述多个部分中的第一部分加载到所述多个层中的第一层中,并且所述数据片生成器还被配置成:将具有第二数据的第二数据片从所述多个部分中的第二部分加载到所述多个层的第二层中。
13.根据权利要求12所述的设备,其中,所述图像数据的多个部分包括所述图像数据中的每个位置处的多维数据结构的组件。
14.根据权利要求12所述的设备,其中,所述二维移位寄存器阵列包括具有比所述图像数据小的位宽的寄存器,并且其中所述图像数据的多个部分包括所述图像数据的高位和低位。
15.根据权利要求12所述的设备,其中,所述图像数据的多个部分包括所述图像数据中的每个位置处的图像数据的多个通道。
16.根据权利要求10所述的设备,其中,加载所述输入数据片包括:
通过复制所述图像数据中每个数据值的多个实例,生成具有上采样图像数据的上采样输入数据片。
17.根据权利要求10所述的设备,其中,加载所述输入数据片包括:
通过将每个输入数据值的多个实例组合到下采样输入数据片中的单个值中,来生成具有下采样图像数据的所述下采样输入数据片。
18.根据权利要求10所述的设备,其中执行所述程序代码使得所述二维移位寄存器阵列将所述输入数据片移位,从而每个执行道遍历二维的相应模板,其中,生成相应的输出值包括:当所述输入数据片被所述二维移位寄存器阵列移位时,由每个执行道根据由所述执行道所遇到的图像数据来生成所述相应的输出值。
19.一种编码有计算机程序指令的非暂时性计算机存储介质,所述计算机程序指令当由图像处理器执行时使所述图像处理器执行操作,所述操作包括:
由数据片生成器从线缓存器接收包括来自图像数据帧的多行的图像数据的线组,所述多行在数量上足以包含多个相邻的重叠模版;
由所述数据片生成器将输入数据片加载到被耦合至所述图像处理器的执行道阵列的二维移位寄存器阵列中,所述输入数据片包括来自所述线组的数据的子集,其中所述输入数据片小于从所述线缓存器接收的所述线组,并且其中所述输入数据片具有与所述二维移位寄存器阵列的大小相对应的大小;
由所述执行道阵列中的每个执行道执行程序代码,以处理加载到所述二维移位寄存器阵列中的所述输入数据片上的所述多个相邻的重叠模版,其中,执行所述程序代码使得每个执行道从所述输入数据片的所述图像数据中生成被存储在所述二维移位寄存器阵列中的图像数据的输出数据片的相应输出值;和
将由所述执行道阵列计算的所述图像数据的输出数据片提供返回到所述数据片生成器。
CN202110171547.8A 2015-04-23 2016-04-04 用于图像生成器的数据片生成器 Active CN112967169B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US14/694,806 2015-04-23
US14/694,806 US10291813B2 (en) 2015-04-23 2015-04-23 Sheet generator for image processor
CN201680019786.9A CN107438861B (zh) 2015-04-23 2016-04-04 用于图像生成器的数据片生成器
PCT/US2016/025895 WO2016171882A1 (en) 2015-04-23 2016-04-04 Sheet generator for image processor

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201680019786.9A Division CN107438861B (zh) 2015-04-23 2016-04-04 用于图像生成器的数据片生成器

Publications (2)

Publication Number Publication Date
CN112967169A CN112967169A (zh) 2021-06-15
CN112967169B true CN112967169B (zh) 2022-06-03

Family

ID=55858888

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202110171547.8A Active CN112967169B (zh) 2015-04-23 2016-04-04 用于图像生成器的数据片生成器
CN201680019786.9A Active CN107438861B (zh) 2015-04-23 2016-04-04 用于图像生成器的数据片生成器

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201680019786.9A Active CN107438861B (zh) 2015-04-23 2016-04-04 用于图像生成器的数据片生成器

Country Status (7)

Country Link
US (4) US10291813B2 (zh)
EP (1) EP3286725B1 (zh)
JP (2) JP6563512B2 (zh)
KR (2) KR102146515B1 (zh)
CN (2) CN112967169B (zh)
DE (1) DE112016001835T5 (zh)
WO (1) WO2016171882A1 (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10291813B2 (en) * 2015-04-23 2019-05-14 Google Llc Sheet generator for image processor
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
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
US10204396B2 (en) 2016-02-26 2019-02-12 Google Llc Compiler managed memory for image processor
US10380969B2 (en) 2016-02-28 2019-08-13 Google Llc Macro I/O unit for image processor
US20180005059A1 (en) * 2016-07-01 2018-01-04 Google Inc. Statistics Operations On 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
US10546211B2 (en) 2016-07-01 2020-01-28 Google Llc Convolutional neural network on programmable 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
KR20180012439A (ko) * 2016-07-27 2018-02-06 삼성전자주식회사 회선 신경망에서 가속기 및 이의 동작 방법
US10489199B2 (en) * 2017-05-12 2019-11-26 Google Llc Program code transformations to improve image processor runtime efficiency
US10789202B2 (en) * 2017-05-12 2020-09-29 Google Llc Image processor with configurable number of active cores and supporting internal network
US10489878B2 (en) * 2017-05-15 2019-11-26 Google Llc Configurable and programmable image processor unit
US10552939B1 (en) 2019-02-12 2020-02-04 Google Llc Image processor complex transfer functions

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101202914A (zh) * 2006-12-01 2008-06-18 汤姆森许可贸易公司 具有本地寄存器的处理元件阵列
CN103019656A (zh) * 2012-12-04 2013-04-03 中国科学院半导体研究所 可动态重构的多级并行单指令多数据阵列处理系统
CN103201764A (zh) * 2010-11-12 2013-07-10 高通股份有限公司 使用多个处理器的并行图像处理

Family Cites Families (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4445177A (en) 1981-05-22 1984-04-24 Data General Corporation Digital data processing system utilizing a unique arithmetic logic unit for handling uniquely identifiable addresses for operands and instructions
US4835712A (en) 1986-04-14 1989-05-30 Pixar Methods and apparatus for imaging volume data with shading
JP2554255B2 (ja) 1987-03-23 1996-11-13 旭光学工業株式会社 フイルタリング装置
EP0293701B1 (en) 1987-06-01 1994-08-10 Applied Intelligent Systems, Inc. Parallel neighborhood processing system and method
US4935894A (en) 1987-08-31 1990-06-19 Motorola, Inc. Multi-processor, multi-bus system with bus interface comprising FIFO register stocks for receiving and transmitting data and control information
US5253308A (en) 1989-06-21 1993-10-12 Amber Engineering, Inc. Massively parallel digital image data processor using pixel-mapped input/output and relative indexed addressing
WO1994009595A1 (en) 1991-09-20 1994-04-28 Shaw Venson M Method and apparatus including system architecture for multimedia communications
JP3482660B2 (ja) 1993-09-08 2003-12-22 ソニー株式会社 画像データ処理装置および画像データ処理方法
US5612693A (en) 1994-12-14 1997-03-18 International Business Machines Corporation Sliding window data compression using a toroidal bit shift register
US6049859A (en) 1996-01-15 2000-04-11 Siemens Aktiengesellschaft Image-processing processor
US6031573A (en) 1996-10-31 2000-02-29 Sensormatic Electronics Corporation Intelligent video information management system performing multiple functions in parallel
US5892962A (en) 1996-11-12 1999-04-06 Lucent Technologies Inc. FPGA-based processor
US6661421B1 (en) 1998-05-21 2003-12-09 Mitsubishi Electric & Electronics Usa, Inc. Methods for operation of semiconductor memory
US6366289B1 (en) 1998-07-17 2002-04-02 Microsoft Corporation Method and system for managing a display image in compressed and uncompressed blocks
US6587158B1 (en) 1998-07-23 2003-07-01 Dvdo, Inc. Method and apparatus for reducing on-chip memory in vertical video processing
US7010177B1 (en) 1998-08-27 2006-03-07 Intel Corporation Portability of digital images
JP4489305B2 (ja) 1999-03-16 2010-06-23 浜松ホトニクス株式会社 高速視覚センサ装置
US7792298B2 (en) 1999-06-30 2010-09-07 Silverbrook Research Pty Ltd Method of using a mobile device to authenticate a printed token and output an image associated with the token
JP3922859B2 (ja) 1999-12-28 2007-05-30 株式会社リコー 画像処理装置、画像処理方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
US6745319B1 (en) 2000-02-18 2004-06-01 Texas Instruments Incorporated Microprocessor with instructions for shuffling and dealing data
US6728862B1 (en) 2000-05-22 2004-04-27 Gazelle Technology Corporation Processor array and parallel data processing methods
US6728722B1 (en) 2000-08-28 2004-04-27 Sun Microsystems, Inc. General data structure for describing logical data spaces
US6986025B2 (en) 2001-06-11 2006-01-10 Broadcom Corporation Conditional execution per lane
US7286717B2 (en) 2001-10-31 2007-10-23 Ricoh Company, Ltd. Image data processing device processing a plurality of series of data items simultaneously in parallel
JP4146654B2 (ja) 2002-02-28 2008-09-10 株式会社リコー 画像処理回路、複合画像処理回路、および、画像形成装置
US9170812B2 (en) 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
AU2003221680A1 (en) 2002-04-09 2003-10-27 The Research Foundation Of State University Of New York Multiplier-based processor-in-memory architectures for image and graphics processing
JP2004013873A (ja) 2002-06-03 2004-01-15 Sony Corp 画像処理装置
WO2004021176A2 (de) 2002-08-07 2004-03-11 Pact Xpp Technologies Ag Verfahren und vorrichtung zur datenverarbeitung
GB2398446B (en) 2003-02-12 2006-06-07 Snell & Wilcox Ltd Image processing
US20060044576A1 (en) 2004-07-30 2006-03-02 Kabushiki Kaisha Toshiba Apparatus for image processing
US7667764B2 (en) 2004-06-04 2010-02-23 Konica Minolta Holdings, Inc. Image sensing apparatus
KR100614647B1 (ko) * 2004-07-02 2006-08-22 삼성전자주식회사 디블록킹 필터에서의 효과적인 에지 필터링 연산을 위한레지스터 어레이 구조
JP4219887B2 (ja) 2004-12-28 2009-02-04 富士通マイクロエレクトロニクス株式会社 画像処理装置及び画像処理方法
US20100122105A1 (en) 2005-04-28 2010-05-13 The University Court Of The University Of Edinburgh Reconfigurable instruction cell array
US7882339B2 (en) 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
JP2007067917A (ja) 2005-08-31 2007-03-15 Matsushita Electric Ind Co Ltd 画像データ処理装置
US7602974B2 (en) 2005-10-21 2009-10-13 Mobilic Technology (Cayman) Corp. Universal fixed-pixel-size ISP scheme
FR2895103B1 (fr) 2005-12-19 2008-02-22 Dxo Labs Sa Procede et systeme de traitement de donnees numeriques
US7802073B1 (en) 2006-03-29 2010-09-21 Oracle America, Inc. Virtual core management
JP2007304803A (ja) 2006-05-10 2007-11-22 Fuji Xerox Co Ltd 画像処理装置
US20080111823A1 (en) 2006-11-13 2008-05-15 Faraday Technology Corp. Graphics processing system
US8321849B2 (en) 2007-01-26 2012-11-27 Nvidia Corporation Virtual architecture and instruction set for parallel thread computing
US20080244222A1 (en) 2007-03-30 2008-10-02 Intel Corporation Many-core processing using virtual processors
US8068114B2 (en) 2007-04-30 2011-11-29 Advanced Micro Devices, Inc. Mechanism for granting controlled access to a shared resource
JP4389976B2 (ja) 2007-06-29 2009-12-24 ブラザー工業株式会社 画像処理装置および画像処理プログラム
JP2009021459A (ja) 2007-07-13 2009-01-29 Fuji Xerox Co Ltd 面発光型半導体レーザの駆動方法および光伝送モジュール
KR101036596B1 (ko) 2007-09-05 2011-05-24 가부시키가이샤 시마쓰세사쿠쇼 고체촬상소자 및 그 구동방법
JP4917561B2 (ja) 2008-03-18 2012-04-18 株式会社リコー 画像処理装置
JP5461533B2 (ja) 2008-05-30 2014-04-02 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド ローカル及びグローバルのデータ共有
US8098894B2 (en) 2008-06-20 2012-01-17 Yahoo! Inc. Mobile imaging device as navigator
JP4999791B2 (ja) 2008-06-30 2012-08-15 キヤノン株式会社 情報処理装置、その制御方法、及びプログラム
US8456480B2 (en) 2009-01-14 2013-06-04 Calos Fund Limited Liability Company Method for chaining image-processing functions on a SIMD processor
US8332794B2 (en) 2009-01-22 2012-12-11 Taiwan Semiconductor Manufacturing Company, Ltd. Circuits and methods for programmable transistor array
US20100321579A1 (en) * 2009-02-11 2010-12-23 Mohammad Ahmad Front End Processor with Extendable Data Path
KR101572879B1 (ko) 2009-04-29 2015-12-01 삼성전자주식회사 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법
US20110055495A1 (en) 2009-08-28 2011-03-03 Qualcomm Incorporated Memory Controller Page Management Devices, Systems, and Methods
US8976195B1 (en) 2009-10-14 2015-03-10 Nvidia Corporation Generating clip state for a batch of vertices
US8436857B2 (en) 2009-10-20 2013-05-07 Oracle America, Inc. System and method for applying level of detail schemes
US8595428B2 (en) 2009-12-22 2013-11-26 Intel Corporation Memory controller functionalities to support data swizzling
JP2011165132A (ja) * 2010-02-15 2011-08-25 Seiko Epson Corp 画像処理装置、画像処理回路、及び画像処理方法
US8749667B2 (en) 2010-08-02 2014-06-10 Texas Instruments Incorporated System and method for maintaining maximum input rate while up-scaling an image vertically
CN101968851B (zh) * 2010-09-09 2012-08-08 西安电子科技大学 基于字典学习上采样的医学影像处理方法
US8508612B2 (en) 2010-09-30 2013-08-13 Apple Inc. Image signal processor line buffer configuration for processing ram image data
CN102572207B (zh) * 2010-12-30 2014-05-14 无锡华润矽科微电子有限公司 一种适于jpeg图像的颜色空间转换方法
US8797323B2 (en) 2011-01-18 2014-08-05 Intel Corporation Shadowing dynamic volumetric media
JP5875530B2 (ja) 2011-01-31 2016-03-02 株式会社ソシオネクスト プログラム生成装置、プログラム生成方法、プロセッサ装置及びマルチプロセッサシステム
US9092267B2 (en) 2011-06-20 2015-07-28 Qualcomm Incorporated Memory sharing in graphics processing unit
US20130027416A1 (en) 2011-07-25 2013-01-31 Karthikeyan Vaithianathan Gather method and apparatus for media processing accelerators
US9641866B2 (en) 2011-08-18 2017-05-02 Qualcomm Incorporated Applying partition-based filters
JP5742651B2 (ja) 2011-10-15 2015-07-01 コニカミノルタ株式会社 画像処理装置、連携方法および連携プログラム
JP5746100B2 (ja) 2011-12-27 2015-07-08 京セラドキュメントソリューションズ株式会社 画像形成装置
US8823736B2 (en) 2012-01-20 2014-09-02 Intel Corporation Graphics tiling architecture with bounding volume hierarchies
US10244246B2 (en) 2012-02-02 2019-03-26 Texas Instruments Incorporated Sub-pictures for pixel rate balancing on multi-core platforms
US9235769B2 (en) 2012-03-15 2016-01-12 Herta Security, S.L. Parallel object detection method for heterogeneous multithreaded microarchitectures
TWI520598B (zh) 2012-05-23 2016-02-01 晨星半導體股份有限公司 影像處理裝置與影像處理方法
CN102685439A (zh) * 2012-05-28 2012-09-19 上海海事大学 一种使用fpga实现图像数据传输控制的装置及方法
US20140019486A1 (en) 2012-07-13 2014-01-16 Amitava Majumdar Logic Content Processing for Hardware Acceleration of Multi-Pattern Search
US9232139B2 (en) 2012-07-24 2016-01-05 Apple Inc. Image stabilization using striped output transformation unit
US9378181B2 (en) 2012-11-09 2016-06-28 Intel Corporation Scalable computing array
CN103179408B (zh) * 2012-11-27 2016-01-06 上海高清数字科技产业有限公司 一种解决色度上采样错误的系统和方法
US9851977B2 (en) * 2012-12-06 2017-12-26 Kalray Apparatus and method for combining thread warps with compatible execution masks for simultaneous execution and increased lane utilization
US8954992B2 (en) 2013-03-15 2015-02-10 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Distributed and scaled-out network switch and packet processing
US9058673B2 (en) 2013-03-15 2015-06-16 Oracle International Corporation Image mosaicking using a virtual grid
US9477999B2 (en) * 2013-09-20 2016-10-25 The Board Of Trustees Of The Leland Stanford Junior University Low power programmable image processor
US9589175B1 (en) * 2014-09-30 2017-03-07 Amazon Technologies, Inc. Analyzing integral images with respect to Haar features
US9818166B2 (en) 2015-01-16 2017-11-14 Intel Corporation Graph-based application programming interface architectures with producer/consumer nodes for enhanced image processing parallelism
US9749548B2 (en) 2015-01-22 2017-08-29 Google Inc. Virtual linebuffers for image signal processors
US10291813B2 (en) * 2015-04-23 2019-05-14 Google Llc Sheet generator for image processor
US10310998B2 (en) * 2015-06-30 2019-06-04 Microsoft Technology Licensing, Llc Direct memory access with filtering

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101202914A (zh) * 2006-12-01 2008-06-18 汤姆森许可贸易公司 具有本地寄存器的处理元件阵列
CN103201764A (zh) * 2010-11-12 2013-07-10 高通股份有限公司 使用多个处理器的并行图像处理
CN103019656A (zh) * 2012-12-04 2013-04-03 中国科学院半导体研究所 可动态重构的多级并行单指令多数据阵列处理系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
OPTIMIZED PIXEL TEMPLATE IMAGE CORRELATOR;P H J Van Oosterhout;《http://alexandria.tue.nl/extra2/afstversl/E/563812.pdf》;19920819;第7-8、21-22页 *

Also Published As

Publication number Publication date
CN107438861A (zh) 2017-12-05
CN112967169A (zh) 2021-06-15
US10560598B2 (en) 2020-02-11
US10291813B2 (en) 2019-05-14
JP2018513474A (ja) 2018-05-24
DE112016001835T5 (de) 2018-02-15
WO2016171882A1 (en) 2016-10-27
KR102146515B1 (ko) 2020-08-21
US20190208075A1 (en) 2019-07-04
JP6793228B2 (ja) 2020-12-02
CN107438861B (zh) 2021-02-26
EP3286725A1 (en) 2018-02-28
KR20170125393A (ko) 2017-11-14
US20170257515A1 (en) 2017-09-07
US20160316094A1 (en) 2016-10-27
US11140293B2 (en) 2021-10-05
EP3286725B1 (en) 2021-10-06
US10284744B2 (en) 2019-05-07
JP2019215887A (ja) 2019-12-19
KR20200021003A (ko) 2020-02-26
US20200186667A1 (en) 2020-06-11
JP6563512B2 (ja) 2019-08-21

Similar Documents

Publication Publication Date Title
CN112967169B (zh) 用于图像生成器的数据片生成器
JP7202987B2 (ja) 高性能で、電力効率の良い、プログラマブルな画像処理のためのアーキテクチャ
JP6764954B2 (ja) プログラマブル二次元画像プロセッサ上の畳み込みニューラルネットワーク
US11138013B2 (en) Energy efficient processor core architecture for image processor
CN107430760B (zh) 用于图像处理器的二维移位阵列
CN107133908B (zh) 用于图像处理器的编译器管理存储器
US10996988B2 (en) Program code transformations to improve image processor runtime efficiency
CN110300944B (zh) 具有可配置数目的活动核心和支持内部网络的图像处理器

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant