CN107430760B - 用于图像处理器的二维移位阵列 - Google Patents
用于图像处理器的二维移位阵列 Download PDFInfo
- Publication number
- CN107430760B CN107430760B CN201680019863.0A CN201680019863A CN107430760B CN 107430760 B CN107430760 B CN 107430760B CN 201680019863 A CN201680019863 A CN 201680019863A CN 107430760 B CN107430760 B CN 107430760B
- Authority
- CN
- China
- Prior art keywords
- shift register
- array structure
- locations
- dimensional shift
- register array
- 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
Links
- 238000012545 processing Methods 0.000 claims description 31
- 238000000034 method Methods 0.000 claims description 23
- 125000001475 halogen functional group Chemical group 0.000 claims description 17
- 230000008878 coupling Effects 0.000 claims description 16
- 238000010168 coupling process Methods 0.000 claims description 16
- 238000005859 coupling reaction Methods 0.000 claims description 16
- 239000004065 semiconductor Substances 0.000 claims description 4
- 238000004519 manufacturing process Methods 0.000 claims description 2
- 210000004027 cell Anatomy 0.000 description 40
- 238000013461 design Methods 0.000 description 23
- 230000008569 process Effects 0.000 description 17
- 239000000872 buffer Substances 0.000 description 14
- 230000006870 function Effects 0.000 description 14
- 230000000694 effects Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 3
- 210000003126 m-cell Anatomy 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N3/00—Scanning details of television systems; Combination thereof with generation of supply voltages
- H04N3/10—Scanning details of television systems; Combination thereof with generation of supply voltages by means not exclusively optical-mechanical
- H04N3/14—Scanning details of television systems; Combination thereof with generation of supply voltages by means not exclusively optical-mechanical by means of electrically scanned solid-state devices
- H04N3/15—Scanning details of television systems; Combination thereof with generation of supply voltages by means not exclusively optical-mechanical by means of electrically scanned solid-state devices for picture signal generation
- H04N3/1575—Picture signal readout register, e.g. shift registers, interline shift registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/14—Picture signal circuitry for video frequency region
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Image Processing (AREA)
- Executing Machine-Instructions (AREA)
- Image Input (AREA)
Abstract
描述了一种装置。该装置包括耦合到二维移位寄存器阵列结构的执行道阵列。执行道阵列中的位置被耦合到二维移位寄存器阵列结构中的相同位置,使得不同执行道具有不同的专用寄存器。
Description
技术领域
本发明的领域一般涉及图像处理,更具体地,涉及用于图像处理器的二维移位阵列。
背景技术
图像处理通常涉及被组织成阵列的像素值的处理。此处,空间组织的二维阵列捕捉图像的二维性质(另外的维度可以包括时间(例如,二维图像的序列)和数据类型(例如,颜色))。在通常情景下,阵列化的像素值由生成静态图像或帧序列以捕捉运动图像的相机提供。传统的图像处理器通常落入两种极端之一。
第一种极端执行作为在通用处理器或类通用处理器(例如,具有向量指令增强的通用处理器)上执行的软件程序的图像处理任务。虽然第一种极端通常提供高度通用的应用软件开发平台,但是其使用更细粒度的数据结构与相关的开销(例如,取指令和解码、片上和片外数据的处理、推测执行)的结合最终导致在程序代码的执行期间每单位数据消耗更大量的能量。
第二种相反的极端把固定功能硬布线电路应用于更大的数据块。使用直接应用于定制设计电路的较大(相对于细粒度)的数据块大大降低了每单位数据的功耗。然而,使用定制设计的固定功能电路通常导致处理器能够执行的任务集有限。因此,在第二种极端种缺乏广泛通用的编程环境(其与第一极端相关联)。
提供高度通用的应用软件开发机会与每单位数据的提高的功率效率两者相结合的技术平台仍然是期望但缺失的解决方案。
发明内容
描述了一种装置。该装置包括如下部件,该部件用于使来自二维移位寄存器阵列结构中的多个相连位置的数据在相同方向和多个位置中位移,从而为执行道阵列内的多个不同执行道中的每一个提供多个不同的执行道的相应专用寄存器内的新值。在执行道阵列和二维移位寄存器阵列的相同的相应位置处不同的执行道耦合到它们相应的专用寄存器。
描述了一种装置。该装置包括耦合到二维移位寄存器阵列结构的执行道阵列。执行道阵列中的位置耦合到二维移位寄存器阵列结构中的相同位置,使得不同的执行道具有不同的专用寄存器。
附图说明
以下描述和附图用于说明本发明的实施例。在附图中:
图1示出图像处理器硬件架构的实施例;
图2a、2b、2c、2d和2e图示利用重叠模板将图像数据解析成线群,将线群解析成数据片,以及对数据片执行操作;
图3示出模板处理器的实施例;
图4示出模板处理器内的数据计算单元的实施例;
图5a、5b、5c、5d、5e、5f、5g、5h、5i、5j和5k图示利用重叠模板使用二维移位阵列和执行道阵列以确定一对相邻输出像素值的示例;
图6示出用于集成的执行道阵列和二维移位阵列的单位胞元的实施例;
图7a图示第一二维寄存器阵列结构互连方案;
图7b图示第二二维寄存器阵列结构互连方案;
图8a图示二维寄存器阵列结构的第一行或列;
图8b图示二维寄存器阵列结构的第二行或列;
图8c图示耦合到存储器单元的图8b的行;
图8d示出另一环形实施例;
图8e示出节能电路;
图9示出计算系统的实施例。
具体实施方式
a.图像处理器硬件架构和操作
图1示出用于以硬件实现的图像处理器的架构100的实施例。图像处理器可例如作为编译器的目标,所述编译器将为模拟环境内的虚拟处理器编写的程序代码转换为由硬件处理器实际执行的程序代码。如图1所示,架构100包括通过网络104(例如,片上网络(NOC),包括片上交换网络、片上环形网络或其它类型的网络)与多个模板处理器单元102_1至102_N及对应的数据片生成器单元103_1至103-N互连的多个线缓存器单元101_1至101_M。在一个实施例中,任何线缓存器单元可通过网络104连接到任何数据片生成器及对应的模板处理器。
在一个实施例中,程序代码被编译并加载到相应的模板处理器102上以执行由软件开发者早先定义的图像处理操作(程序代码也可被加载到模板处理器的相关的数据片生成器103上,例如,这取决于设计和实现)。在至少一些实例中,可通过将用于第一流水线级的第一内核程序加载到第一模板处理器102_1中、将用于第二流水线级的第二内核程序加载到第二模板处理器102_2中等来实现图像处理流水线,其中,第一内核执行流水线的第一级的功能,第二内核执行流水线的第二级的功能等,并且安装另外的控制流方法以将输出图像数据从流水线的一级传递到流水线的下一级。
在其它配置中,图像处理器可被实现为具有操作相同内核程序代码的两个或更多个模板处理器102_1、102_2的并行机。例如,可通过跨每个均执行相同功能的多个模板处理器扩展帧来处理高密度和高数据速率的图像数据流。
在又一其它配置中,基本上内核的任何DAG都可通过在DAG设计中配置具有其自身的相应程序代码内核的相应模板处理器,以及将适当的控制流钩子配置到硬件中以将输出图像从一个内核引导到下一个内核的输入,被加载到硬件处理器上。
作为一般流程,图像数据的帧由宏I/O单元105接收,并逐帧传递到一个或多个线缓存器单元101。特定线缓存器单元将其图像数据的帧解析为图像数据的更小区域,称为“线群(line group)”,然后通过网络104将线群传递到特定的数据片生成器。完整的或“完全”的单线群可例如由一帧的多个连续完整的行或列的数据组成(为简单起见,本说明书将主要涉及连续的行)。数据片生成器进一步将图像数据的线群解析成图像数据的更小区域,称为“数据片(sheet)”,并将所述数据片提供给其对应的模板(stencil)处理器。
在具有单个输入的图像处理流水线或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被设计为同时在图像数据的多个重叠模板上进行操作。多个重叠模板和模板处理器的内部硬件处理能力有效地确定了数据片的尺寸。其中,在模板处理器102内,执行道的阵列操作一致使得同时处理被多个重叠模板覆盖的图像数据表面区域。
如下文将更详细所述的,在各种实施例中,图像数据的数据片被加载到模板处理器102内的二维寄存器阵列结构中。使用数据片和二维寄存器阵列结构被认为有效地提供功耗改善,这是通过将大量数据移入大量寄存器空间,例如,作为单个加载操作,紧随其后,由执行道阵列直接对数据执行处理任务。此外,使用执行道阵列和对应的寄存器阵列提供可易于编程/配置的不同模板大小。
图2a至图2e高水平地示出线缓存器单元101的解析活动、数据片生成器单元103的更细粒度解析活动两者以及耦合到数据片生成器单元103的模板处理器102的模板处理活动的实施例。
图2a图示图像数据201的输入帧的实施例。图2a还图示三个重叠模板202(每个具有3像素×3像素的大小)的概略图,模板处理器被设计为在三个重叠模板202上进行操作。以实心黑色突出每个模板相应生成的输出图像数据的输出像素。为简单起见,三个重叠模板202被图示为仅在垂直方向上重叠。应当认识到,实际上,模板处理器可被设计成在垂直和水平方向上均具有重叠模板。
如图2a所示,由于模板处理器内的垂直重叠模板202,在单个模板处理器能够操作的帧内存在宽范围的图像数据。如将在下文更详细所述,在一个实施例中,模板处理器跨图像数据以从左到右的方式在其重叠模板内处理数据(然后以从上到下的顺序对下一组线进行重复)。因此,随着模板处理器持续进行其操作,实心黑色输出像素块的数目会在水平方向上向右增加。如上所论,线缓存器单元101负责解析来自输入帧的输入图像数据的线群,其足以使模板处理器在更多个即将到来的周期中进行操作。线群的示例性描绘被图示为阴影区域203。在一个实施例中,线缓存器单元101能够具有用于向/从数据片生成器发送/接收线群的不同动态性。例如,根据一种称作“全群”的模式,在线缓存器单元与数据片生成器之间传递图像数据的完整全宽线。根据称作“实高”的第二模式,最初用全宽行的子集来传递线群。然后,依序以更小的片段(小于全宽)传递剩余的行。
随着输入图像数据的线群203已由线缓存器单元定义并且传递到数据片生成器单元,数据片生成器单元将线群进一步解析成更精细的数据片,其更准确适配于模板处理器的硬件限制。更具体地,如下详述,在一个实施例中,每个模板处理器由二维移位寄存器阵列组成。二维移位寄存器阵列基本上将图像数据移位到执行道的阵列“下方”,在此移位的模式使得每个执行道对其各自相应模板内的数据进行操作(也就是说,每个执行道对其自己的信息模板进行处理以生成用于该模板的输出)。在一个实施例中,数据片是“填充”或以其他方式加载到二维移位寄存器阵列中的输入图像数据的表面区域。
如将在下文更详细描述的,在各种实施例中,实际上存在能在任何周期上移位的二维寄存器数据的多个层。为了方便起见,本说明书的大部分将简单地使用术语“二维移位寄存器”等来表示具有可移位的二维寄存器数据的一个或多个这样的层的结构。
因此,如在图2b中所示,数据片生成器解析来自线群203的初始数据片204,并将其提供给模板处理器(在此,数据的数据片对应于通常由附图标记204标识的阴影区域)。如在图2c和图2d中所示,模板处理器通过以从左到右的方式在数据片上有效地移动重叠模板202而对输入图像数据的数据片进行操作。如图2d所示,可以从数据片内的数据计算出输出值的像素的数量被穷尽(没有其它像素位置会具有从数据片内的信息确定的输出值)。为简单起见,忽略了图像的边界区域。
如图2e所示,然后数据片生成器提供下一个数据片205供模板处理器继续操作。注意,模板开始对下一个数据片进行操作时的初始位置是从第一个数据片上的穷尽点向右的下一进度(如前在图2d中所示)。关于新的数据片205,随着模板处理器按照与第一个数据片的相同处理方式对新的数据片进行操作,模板将简单地继续向右移动。
注意,由于围绕输出像素位置的模板的边界区域,第一数据片204的数据和第二数据片205的数据之间存在一些重叠。所述重叠可由数据片生成器重复传送重叠数据两次进行简单处理。在替代的实施方式中,为了将下一个数据片馈送到模板处理器数据片,数据片生成器可继续仅将新的数据发送到模板处理器,并且模板处理器重新使用来自前一数据片的重叠数据。
b.模板处理器设计和操作
图3示出模板处理器架构300的实施例。如图3所示,模板处理器包括数据计算单元301、标量处理器302以及相关联的存储器303和I/O单元304。数据计算单元301包括执行道阵列305、二维移位阵列结构306和与阵列的特定行或列相关联的单独的随机存取存储器307。
I/O单元304负责将从数据片生成器接收的“输入”数据的数据片加载到数据计算单元301中,并将来自模板处理器的“输出”数据的数据片存储到数据片生成器中。在实施例中,将数据的数据片加载到数据计算单元301中需要将所接收的数据片解析成图像数据的行/列,并将图像数据的行/列加载到二维移位寄存器结构306或执行通道执行道阵列的行/列的相应的随机存取存储器307中(以下将更详细描述)。如果数据片最初被加载到存储器307中,则执行道阵列305内的各个执行道随后在适当的时候可将数据片数据从随机存取存储器307加载到二维移位寄存器结构306中(例如作为对数据片的数据操作之前的加载指令)。在完成将数据数据片(直接从数据片生成器或是从存储器307)加载到寄存器结构306之后,执行道阵列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内的全部执行道。下面进一步提供关于查找表的使用和操作的其他细节。
图4示出数据计算组件401的实施例。如图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和图3的模板处理器的其他应用。
图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)坐标表示的移位的方向和大小的指令格式。例如,用于上移一个位置的目标代码可以以目标代码表示为SHIFT 0,+1。作为另一示例,右移一个位置可以以目标代码表示为SHIFT+1,0。在各种实施例中,较大幅度的移位也可以以目标代码(例如SHIFT 0,+2)指定。在此,如果2D移位寄存器硬件仅支持每个周期移位一个位置,则该指令可被机器解释为需要多个周期执行,或者2D移位寄存器硬件可被设计为支持每个周期位移1个以上位置。在下文中,将进一步详细描述后一实施例。
图6a示出用于阵列执行道和移位寄存器结构的单位胞元(cell)的另一个更详细图示(光晕区域中的寄存器不包括相应的执行道)。在一个实施例中,通过在执行道阵列的每个节点处实例化图6a所示的电路来实现与执行道阵列中的每个位置相关联的执行道和寄存器空间。如图6a所示,单位胞元包括耦合到由四个寄存器R2至R5组成的寄存器堆602的执行道601。在任何周期期间,执行道601可以从寄存器R1至R5中的任一个读取或向其写入。对于需要两个输入操作数的指令,执行道可以从R1至R5中的任何一个获得两个操作数。
在一个实施例中,实现二维移位寄存器结构是通过在单个周期期间允许寄存器R2至R4中的任何(仅)一个的内容通过输出复用器603“移出”到其邻居的寄存器堆中的一个,并且将寄存器R2至R4中的任何(仅)一个的内容替换成如果其邻居通过输入复用器604从对应的一个“移入”的内容,使得邻居之间的移位处于相同的方向(例如,全部执行道向左移位,全部执行道向右移位等)。虽然通常相同寄存器可能会将其内容移出并且替换成在相同周期中移入的内容,但复用器装置603、604允许同一周期期间同一寄存器堆内的不同移位源寄存器和移位目标寄存器。
如图6a所示,注意,在移位序列期间,执行道将内容从其寄存器堆602移位到其左邻、右邻、上邻和下邻中的每个。结合相同的移位序列,执行道还将内容从其左邻、右邻、上邻和下邻中的特定一个移位到其寄存器堆中。另外,对于全部执行道,移出目标和移入源应当符合同一移位方向(例如,如果移出是向右方的邻居,则移入应当是从左方的邻居)。
尽管在一个实施例中,允许每个周期每个执行道仅移位一个寄存器的内容,但是其他实施例可允许移入/移出一个以上寄存器的内容。例如,如果在图6a中所示的复用器电路603,604的第二实例被并入图6a的设计中,则在同一周期期间,可以移出/移入两个寄存器的内容。当然,在每个周期仅允许移位一个寄存器的内容的实施例中,通过消耗更多的时钟周期用于数学运算之间的移位,可以在数学运算之间进行从多个寄存器移位(例如,通过在数学运算之间消耗两个移位操作,可以在数学运算之间移位两个寄存器的内容)。
如果在移位序列期间移出的内容少于执行道的寄存器堆的全部内容,则注意,每个执行道的未移出的寄存器的内容保持在位(不移位)。这样,任何未替换成移入内容的未移位内容在整个移位周期内仍在本地存留于执行道。在每个执行道中观察到的存储器单元(“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支持移位操作指令(右,左,上,下)以移位二维移位寄存器结构内的数据。如上所述,程序控制指令主要由模板处理器的标量处理器执行。
图7a图示二维寄存器阵列结构的逻辑(和潜在的物理)设计的“自顶向下”视图的实施例。图7a的“自顶向下”视图基本上符合图6的单位胞元设计实施例,其中,特定阵列位置处的每个寄存器堆耦合到其左、右、上和下相邻单位胞元位置的寄存器堆。也就是说,例如,如图7a所示,寄存器堆A耦合到寄存器堆B、C、D和E。
图7b图示二维寄存器阵列结构的逻辑(和潜在的物理)设计的“自顶向下”视图的另一实施例。如图7b所示,单位胞元不仅耦合到最近的垂直和水平邻居,而且还耦合到“次”近的垂直和水平邻居。例如,如图7b所示,单位胞元A不仅耦合到单位胞元B、C、D和E,而且耦合到单位胞元F、G、H和I。为了便于绘图和观看,只有单位胞元A被图示为具有使耦合至最近和次近邻居所需的全套连接。除了单位胞元A之外,仅每隔一个单位胞元显示沿着任何特定行或列的次近邻居耦合(例如,单位胞元B不图示任何第二近邻居耦合)。读者将理解到,优选实施例将包括用于例如内核内的所有单位胞元的单位胞元A的耦合,并且足够远离阵列边缘以支持次近邻居耦合。
具有次近连接提供寄存器值通过寄存器阵列的更快传播。例如,如果寄存器值需要被移动到四个位置之外的单位胞元,则图7b的阵列结构可以在两个周期内完成移动,而图7a的阵列结构只能在四个周期内完成相同的移动。注意,图7b的实施例也具有最近邻居连接。因此,用于图7b的结构的执行道指令集可能比用于图7a的结构的执行道指令集更昂贵(前者具有一跳和两跳MOV指令,而后者仅具有一跳MOV指令)。
有必要指出的是,不同跳数移动的数量和组合和相应的阵列结构实施例可以在各个实施例之间广泛变化,这取决于快速寄存器值移动的需要与阵列结构布线密度之间的适当折衷平衡。一些实施例可以支持第三近和/或第四近邻居连接,而其他实施例可以不支持(在第四近邻居连接的情况下,例如,在图7b中单位胞元D将直接耦合到单位胞元J)。一些实施例可以仅具有最近邻居连接和第三近或更远的连接等。可以想象到,更复杂的实施例甚至可以支持对角连接(例如,在图7b中将单位胞元A与单位胞元K及其他三个邻角单位胞元连接)。普通技术人员将认识到,通过如图6将输入源扩展到输入复用器结构604并且从输出复用结构603扩展扇出,容易实现单位胞元之间的各种扩展连接中的任何一种。
图8a示出沿二维寄存器阵列结构内的行或列的寄存器的示例性逻辑布置(为便于绘制,寄存器阵列仅具有8×8的尺寸,而在实际实践中,尺寸可以大得多)。在此,正在处理的阵列中的相邻像素将位于数字相邻的单位胞元中(例如,阵列中的一对相邻像素将被放置在单位胞元3和4而不是3和5中)。图8a的逻辑设计还包括通过连接801,将第一逻辑单位胞元1耦合到最后一个单位胞元8的滚动能力(因此执行道阵列的执行道也可以包括滚动操作码)。
然而,如果图8a的设计不仅表示逻辑设计,而且代表物理设计,则可能会出现问题,特别是在大尺寸阵列的情况下。如果图8a的方法也表示物理设计,则与连接除对1和8外的单位胞元对的其它导线的长度相比,连接801对应于极长的导线。该特定导线长度异常值会导致电路定时复杂性(通过将所有单位胞元之间的所有移位时间减慢至不小于最慢的1<->8移位时间,或引入识别与在任何其他相邻单位胞元之间移位相比,在1<->8移位需要更多周期的复杂性)。
图8b示出具有图8a逻辑设计的改进的物理设计的实施例,其用于寄存器阵列结构的行或列。在此,物理设计对应于电路结构的实际布局,而不仅仅是逻辑连接(与逻辑设计一样)。如图8b所示,物理设计通过在布局的逻辑中施加环形设计来缓冲由其他单位胞元之间的1<->8连接所需的额外长度。例如,尽管单位胞元1物理地连接到单位胞元2以保留逻辑设计,但单位胞元8物理上位于它们之间。结果是,较之图8a中的导线801的长度,在图8b的结构中的单位胞元之间的最大导线长度短得多。因此,图8b的结构的定时复杂化避免了上述图8a的结构的定时复杂化。在一个实施例中,所有单位胞元之间的寄存器内容滚动能在单个周期内发生。
图8c示出数据片生成器或随机存取存储器802(诸如图4的RAM407中的任何一个)与寄存器阵列的行或列之间的数据总线结构包括一种混合(swizzle)结构803以便保持与具有环形物理布局的阵列或行的正确逻辑连接。图8d示出可以实现4跳移位的另一个环形结构,其中由任何寄存器值行进的最大距离是4个单位胞元。在此,应当清楚的是,在图8d的寄存器和数据片生成器或RAM之间将存在另一类似混合的数据总线。以此方式,实现环形物理布局的特征是存在通过数据总线进行的混合,该数据总线连接以逻辑顺序排列的输入。
图8e示出来自移位阵列结构的单位胞元的输出复用器804的特殊扇出电路。在此,输出复用器804可以被看作类似于图6a的输出复用器603。由于移位阵列被设计为支持越来越多的连接(一跳,两跳等),输出复用器804的扇出增加。随着复用器804的扇出增加,功耗可能变得越来越成为一个问题。图8e示出用于完全支持一跳和两个连接的移位寄存器阵列的输出复用器804。在此,不存在图8e所示的逻辑门,复用器804处的新输出(例如,新移出值)将被广播到八个不同的位置(左邻,右邻……2跳下邻)。在此,如本领域所理解的,逻辑电路中的导线的行程长度上的数据的变化对应于“切换活动”,其又会消耗功率。
在复用器804的输出处所示的八个逻辑门的存在被设计成防止除对应于移位方向的实际导线之外的任何这样的数据变化。例如,如果移位方向是向右一跳,则仅耦合到右边紧接着的邻居的门将允许复用器804的输出通过。所有其他逻辑门将阻止数据值传播到其他节点(不需要移位值),并降低该过程中移位操作的功耗。
c.实现实施例
有必要指出,上述各种图像处理器架构特征不一定限于传统意义上的图像处理并由此可以应用于可能(或可能不)促使图像处理器被重新表征的其他应用。例如,如果上述各种图像处理器架构特征中的任何一个要被使用于创建和/或生成和/或呈现动画,而非处理实际的相机图像,则图像处理器可以被表征为图形处理单元。此外,上述图像处理器架构特征可以被应用于其他技术应用,诸如视频处理、视觉处理、图像识别和/或机器学习。通过这种方式应用,图像处理器可以(例如,作为协处理器)与更通用的处理器(例如,作为计算系统的CPU或其一部分)集成,或者可以是计算系统内的独立处理器。
上文所讨论的硬件设计实施例可以在半导体芯片内和/或作为用于最终靶向半导体制造工艺的电路设计的描述来实现。在后一情况下,这样的电路描述可以采取高级/行为级电路说明(例如,VHDL描述)或者低级电路描述(例如,寄存器传送级(RTL)描述、晶体管级描述或掩模描述)或者其各种组合的形式。电路描述通常被体现于计算机可读存储介质(诸如CD-ROM或其他类型的存储技术)上。
从前述部分而言,有必要认识到,如上所述的图像处理器可以被体现于计算机系统上的硬件中(例如,作为处理来自手持设备的相机的数据的手持设备的片上系统(SOC)的一部分)。在图像处理器被实现为硬件电路的情况下,注意,由图像处理器处理的图像数据可以直接从相机接收。在此,图像处理器可以是分立相机的一部分,或者是具有集成相机的计算系统的一部分。在后一情况下,图像数据可以直接从相机或者从计算系统的系统存储器接收(例如,相机将其图像数据发送到系统存储器而非图像处理器)。还应注意,前述部分中所述的许多特征可以适用于图形处理器单元(其呈现动画)。
图9提供计算系统的示例性描述。下述计算系统的许多组件可应用于具有集成相机和相关联的图像处理器的计算系统(例如,手持设备,诸如智能电话或平板型计算机)。本领域普通技术人员能够容易理解两者之间的关系。
如图9所示,基本计算系统可以包括中央处理单元901(其可以例如包括多个通用处理内核915_1至915_N以及布置在多核处理器上的主存储器控制器917或者应用处理器)、系统存储器902、显示器903(例如,触摸屏、平板)、本地有线点对点链路(例如,USB)接口904、各种网络I/O功能905(诸如以太网接口和/或蜂窝调制解调器子系统)、无线局域网(例如,WiFi)接口906、无线点对点链路(例如,蓝牙)接口907和全球定位系统接口908、各种传感器909_1至909_N、一个或多个相机910、电池911、功率管理控制单元912、扬声器和麦克风913以及音频编码器/解码器914。
应用处理器或多核处理器950可以包括其CPU 901内的一个或多个通用处理内核915、一个或多个图形处理单元916、存储器管理功能917(例如,存储器控制器)、I/O控制功能918以及图像处理单元919。通用处理内核915通常执行计算系统的操作系统和应用软件。图形处理单元916通常执行图形密集功能,例如,用以生成在显示器903上呈现的图形信息。存储器控制功能917与系统存储器902接口,以向/从系统存储器902写入/读取数据。功率管理控制单元912通常控制系统900的功耗。
图像处理单元919可以根据前述部分中的详细描述的图像处理单元实施例中的任何一个来实现。替代地或组合地,IPU 919可以被耦合至GPU 916和CPU 901中的一个或两者,作为其协处理器。此外,在各种实施例中,GPU 916可以通过上文详细描述的图像处理器特征中的任何一个来实现。
触摸屏显示器903、通信接口904至907、GPS接口908、传感器909、相机910和扬声器/麦克风编解码器913、914中的每个能够被视为各种形式的I/O(输入和/或输出),这是相对于整个计算系统而言,在适当情况下,其还包括集成的外围设备(例如,一个或多个照相机910)。根据实施方式,这些I/O组件中的各个都可以被集成在应用处理器/多核处理器950上,或者可以位于处理器/多核处理器950的管芯之外或者其封装之外。
在一个实施例中,一个或多个相机910包括能够在相机与其视野内的物体之间测量深度的深度相机。在应用处理器或其他处理器的通用CPU核(或具有用于执行程序代码的指令执行流水线的其他功能块)上执行的应用软件、操作系统软件、设备驱动器软件和/或固件可以执行上述功能中的任何一个。
本发明的实施例可包括如上所述的各种过程。所述过程可以体现在机器可执行指令中。所述指令可用于使通用或专用处理器执行某些过程。可替代地,这些过程可由包含用于执行过程的硬连线逻辑的专用硬件组件或者由编程的计算机组件和定制硬件组件的任何组合来执行。
本发明的元件还可被提供为用于存储机器可执行指令的机器可读介质。所述机器可读介质可包括但不限于软盘、光盘、CD-ROM和磁光盘、FLASH存储器、ROM、RAM、EPROM、EEPROM、磁卡或光卡、传播媒体或适合于存储电子指令的其它类型媒体/机器可读介质。例如,本发明可作为计算机程序被下载,该计算机程序可以经由通信链路(例如,调制解调器或网络连接)通过体现于载波或其他传播介质中的数据信号而从远程计算机(例如,服务器)传送到请求计算机(例如,客户端)。
在上述说明书中,已参照本发明的具体示例性实施例描述了本发明。然而,将显而易见的是,在不脱离如所附权利要求中阐述的本发明的更广泛的精神和范围的情况下,可以对其进行各种修改和改变。因此,说明书和附图被认为是说明性的而不是限制性的。
Claims (26)
1.一种用于图像处理的装置,包括:
耦合到二维移位寄存器阵列结构的执行道阵列,其中,所述执行道阵列中的位置被耦合到所述二维移位寄存器阵列结构中的相同位置,使得不同执行道具有不同的专用寄存器,其中,所述二维移位寄存器阵列结构沿水平轴和垂直轴两者耦合位置,以提供沿所述水平轴和所述垂直轴两者的二维数据阵列的移位,使得所述阵列内的数据布置对于水平移位和垂直移位两者均保持不变,并且其中,所述二维移位寄存器阵列结构中的一对逻辑上相邻的位置具有在它们相应的物理位置之间的物理阵列位置。
2.如权利要求1所述的装置,其中,所述二维移位寄存器阵列结构包括所述二维移位寄存器阵列结构中的相邻位置之间的耦合。
3.如权利要求2所述的装置,其中,所述二维移位寄存器阵列结构包括所述二维移位寄存器阵列结构中相距两个位置的位置之间的耦合。
4.如权利要求2所述的装置,其中,所述二维移位寄存器阵列结构包括所述二维移位寄存器阵列结构中相距三个位置和相距四个位置中至少之一的位置之间的耦合。
5.如权利要求1所述的装置,其中,所述二维移位寄存器阵列结构包括所述二维移位寄存器阵列结构中相距两个、三个和四个位置中至少之一的位置之间的耦合。
6.如权利要求1所述的装置,其中,所述二维移位寄存器阵列结构的尺寸大于所述执行道阵列的尺寸,使得晕圈区域存在于所述执行道阵列外部。
7.如权利要求1所述的装置,其中,所述二维移位寄存器阵列结构的物理阵列结构利用环形结构。
8.如权利要求6所述的装置,其中,所述二维移位寄存器阵列结构把最后逻辑位置耦合到第一逻辑位置以支持滚动操作。
9.如权利要求6所述的装置,其中,所述二维移位寄存器阵列结构通过混合数据总线耦合到随机存取存储器。
10.一种计算系统,包括:
多个处理内核;
耦合到所述多个处理内核的存储器控制器,所述存储器控制器耦合到系统存储器;
图像处理器,所述图像处理器包括耦合到二维移位寄存器阵列结构的执行道阵列,其中,所述执行道阵列中的位置被耦合到所述二维移位寄存器阵列结构中的相同位置,使得不同执行道具有不同的专用寄存器,其中,所述二维移位寄存器阵列结构沿水平轴和垂直轴两者耦合位置,以提供沿所述水平轴和所述垂直轴两者的二维数据阵列的移位,使得所述阵列内的数据布置对于水平移位和垂直移位两者均保持不变,并且其中,所述二维移位寄存器阵列结构中的一对逻辑上相邻的位置具有在它们相应的物理位置之间的物理阵列位置。
11.如权利要求10所述的计算系统,其中,所述二维移位寄存器阵列结构包括所述二维移位寄存器阵列结构中的相邻位置之间的耦合。
12.如权利要求11所述的计算系统,其中,所述二维移位寄存器阵列结构包括所述二维移位寄存器阵列结构中相距两个位置的位置之间的耦合。
13.如权利要求11所述的计算系统,其中,所述二维移位寄存器阵列结构包括所述二维移位寄存器阵列结构中相距三个位置和四个位置中至少之一的位置之间的耦合。
14.如权利要求10所述的计算系统,其中,所述二维移位寄存器阵列结构包括所述二维移位寄存器阵列结构中相距两个、三个和四个位置中至少之一的位置之间的耦合。
15.如权利要求10所述的计算系统,其中,所述二维移位寄存器阵列结构的尺寸大于所述执行道阵列的尺寸,使得晕圈区域存在于所述执行道阵列外部。
16.如权利要求10所述的计算系统,其中,所述二维移位寄存器阵列结构的物理阵列结构利用环形结构。
17.如权利要求15所述的计算系统,其中,所述二维移位寄存器阵列结构把最后逻辑位置耦合到第一逻辑位置以支持滚动操作。
18.如权利要求15所述的计算系统,其中,所述二维移位寄存器阵列结构通过混合数据总线耦合到随机存取存储器。
19.一种用于图像处理的方法,包括:
在相同方向和多个位置中,从二维移位寄存器阵列结构内的多个连续位置沿水平轴移位第一二维数据阵列,为执行道阵列内的多个不同执行道的每一个提供所述多个不同执行道的相应的专用寄存器内的新值并且使得所述第一二维数据阵列内的数据布置保持不变,在所述执行道阵列和所述二维移位寄存器阵列结构的相同的相应位置处所述不同执行道耦合到它们相应的专用寄存器;以及
在相同方向和多个位置中,从所述二维移位寄存器阵列结构内的多个连续位置沿垂直轴移位第二二维数据阵列,为所述执行道阵列内的多个不同执行道的每一个提供所述多个不同执行道的相应的专用寄存器内的新值并且使得所述第二二维数据阵列内的数据布置保持不变,其中,所述移位的物理移位量与所述移位的逻辑移位量不同。
20.如权利要求19所述的方法,其中,所述移位中的至少一个移位的距离为一个逻辑位置。
21.如权利要求19所述的方法,其中,所述移位中的至少一个移位的距离是两个、三个、四个逻辑位置中的任一个。
22.如权利要求19所述的方法,该方法还包括在所述二维移位寄存器阵列结构内执行数据滚动。
23.一种包含程序代码的非暂时性计算机可读介质,所述程序代码用于编译和加载电子电路的格式化描述以用于制造为半导体芯片从而使所述半导体芯片作为所述电子电路操作,所述电子电路包括:
耦合到二维移位寄存器阵列结构的执行道阵列,其中,所述执行道阵列中的位置被耦合到所述二维移位寄存器阵列结构中的相同位置,使得不同执行道具有不同的专用寄存器,其中,所述二维移位寄存器阵列结构沿水平轴和垂直轴两者耦合位置,以提供沿所述水平轴和所述垂直轴两者的二维数据阵列的移位,使得所述阵列内的数据布置对于水平移位和垂直移位两者均保持不变,并且其中,所述二维移位寄存器阵列结构中的一对逻辑上相邻的位置具有在它们相应的物理位置之间的物理阵列位置。
24.如权利要求23所述的非暂时性计算机可读介质,其中,所述二维移位寄存器阵列结构包括所述二维移位寄存器阵列结构中的相邻位置之间的耦合。
25.如权利要求24所述的非暂时性计算机可读介质,其中,所述二维移位寄存器阵列结构包括所述二维移位寄存器阵列结构中相距两个位置的位置之间的耦合。
26.如权利要求24所述的非暂时性计算机可读介质,其中,所述二维移位寄存器阵列结构包括所述二维移位寄存器阵列结构中相距三个和四个位置中至少之一的位置之间的耦合。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/694,750 US9769356B2 (en) | 2015-04-23 | 2015-04-23 | Two dimensional shift array for image processor |
US14/694,750 | 2015-04-23 | ||
PCT/US2016/026786 WO2016171926A1 (en) | 2015-04-23 | 2016-04-08 | Two dimensional shift array for image processor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107430760A CN107430760A (zh) | 2017-12-01 |
CN107430760B true CN107430760B (zh) | 2021-01-12 |
Family
ID=55806822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680019863.0A Active CN107430760B (zh) | 2015-04-23 | 2016-04-08 | 用于图像处理器的二维移位阵列 |
Country Status (7)
Country | Link |
---|---|
US (3) | US9769356B2 (zh) |
EP (1) | EP3286724B1 (zh) |
JP (2) | JP6389571B2 (zh) |
KR (2) | KR102016097B1 (zh) |
CN (1) | CN107430760B (zh) |
DE (1) | DE112016001844T5 (zh) |
WO (1) | WO2016171926A1 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10061746B2 (en) * | 2014-09-26 | 2018-08-28 | Intel Corporation | Instruction and logic for a vector format for processing computations |
US9830150B2 (en) | 2015-12-04 | 2017-11-28 | Google Llc | Multi-functional execution lane for image processor |
US10313641B2 (en) | 2015-12-04 | 2019-06-04 | Google Llc | Shift register with reduced wiring complexity |
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 |
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 |
US20180005059A1 (en) * | 2016-07-01 | 2018-01-04 | Google Inc. | Statistics Operations On Two Dimensional Image Processor |
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 |
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 |
US10915319B2 (en) * | 2017-05-15 | 2021-02-09 | Google Llc | Two dimensional masked shift instruction |
US10262701B2 (en) | 2017-06-07 | 2019-04-16 | Micron Technology, Inc. | Data transfer between subarrays in memory |
WO2020103766A1 (en) * | 2018-11-23 | 2020-05-28 | Huawei Technologies Co., Ltd. | Filter independent l1 mapping of convolution data into general purpose register |
US10552939B1 (en) | 2019-02-12 | 2020-02-04 | Google Llc | Image processor complex transfer functions |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0293701A2 (en) * | 1987-06-01 | 1988-12-07 | Applied Intelligent Systems, Inc. | Parallel neighborhood processing system and method |
WO1994009595A1 (en) * | 1991-09-20 | 1994-04-28 | Shaw Venson M | Method and apparatus including system architecture for multimedia communications |
WO2007071883A2 (fr) * | 2005-12-19 | 2007-06-28 | Dxo Labs | Procede et systeme de traitement de donnes numeriques |
CN101202914A (zh) * | 2006-12-01 | 2008-06-18 | 汤姆森许可贸易公司 | 具有本地寄存器的处理元件阵列 |
JP2013090070A (ja) * | 2011-10-15 | 2013-05-13 | Konica Minolta Business Technologies Inc | 画像処理装置、連携方法および連携プログラム |
Family Cites Families (81)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4380046A (en) * | 1979-05-21 | 1983-04-12 | Nasa | Massively parallel processor computer |
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 |
US4797852A (en) * | 1986-02-03 | 1989-01-10 | Intel Corporation | Block shifter for graphics processor |
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 |
JP3482660B2 (ja) | 1993-09-08 | 2003-12-22 | ソニー株式会社 | 画像データ処理装置および画像データ処理方法 |
US6058473A (en) | 1993-11-30 | 2000-05-02 | Texas Instruments Incorporated | Memory store from a register pair conditional upon a selected status bit |
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 |
US5892962A (en) | 1996-11-12 | 1999-04-06 | Lucent Technologies Inc. | FPGA-based processor |
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 |
US6757019B1 (en) * | 1999-03-13 | 2004-06-29 | The Board Of Trustees Of The Leland Stanford Junior University | Low-power parallel processor and imager having peripheral control circuitry |
JP4489305B2 (ja) | 1999-03-16 | 2010-06-23 | 浜松ホトニクス株式会社 | 高速視覚センサ装置 |
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 |
EP1322117A1 (fr) * | 2001-12-06 | 2003-06-25 | Koninklijke Philips Electronics N.V. | Dispositif de codage/décodage arithmétique |
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 |
CN1215553C (zh) * | 2002-04-17 | 2005-08-17 | 西安交通大学 | 一种内在并行的二维离散小波变换的vlsi结构的设计方法 |
US7084929B2 (en) * | 2002-07-29 | 2006-08-01 | Koninklijke Philips Electronics N.V. | Video data filtering arrangement and method |
WO2004021176A2 (de) | 2002-08-07 | 2004-03-11 | Pact Xpp Technologies Ag | Verfahren und vorrichtung zur datenverarbeitung |
GB2395299B (en) * | 2002-09-17 | 2006-06-21 | Micron Technology Inc | Control of processing elements in parallel processors |
CN1187698C (zh) * | 2003-04-07 | 2005-02-02 | 西安交通大学 | 内在并行的二维离散小波变换的vlsi结构设计方法 |
US20060044576A1 (en) | 2004-07-30 | 2006-03-02 | Kabushiki Kaisha Toshiba | Apparatus for image processing |
US7199915B2 (en) * | 2004-03-26 | 2007-04-03 | Avago Technologies Fiber Ip (Singapore) Pte. Ltd. | Buffers for light modulation elements in spatial light modulators |
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 |
JP2007034887A (ja) * | 2005-07-29 | 2007-02-08 | Matsushita Electric Ind Co Ltd | ハイレベル合成コンパイラ用のシフトレジスタファイルを自動生成するための方法および装置 |
JP2007067917A (ja) | 2005-08-31 | 2007-03-15 | Matsushita Electric Ind Co Ltd | 画像データ処理装置 |
JP4712503B2 (ja) * | 2005-09-29 | 2011-06-29 | 富士通セミコンダクター株式会社 | リコンフィグ可能な画像処理用アドレス生成回路及びそれを有するリコンフィグlsi |
US7602974B2 (en) | 2005-10-21 | 2009-10-13 | Mobilic Technology (Cayman) Corp. | Universal fixed-pixel-size ISP scheme |
US7802073B1 (en) | 2006-03-29 | 2010-09-21 | Oracle America, Inc. | Virtual core management |
JP4934356B2 (ja) * | 2006-06-20 | 2012-05-16 | 株式会社日立製作所 | 映像処理エンジンおよびそれを含む映像処理システム |
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 | ブラザー工業株式会社 | 画像処理装置および画像処理プログラム |
US20090046105A1 (en) * | 2007-08-15 | 2009-02-19 | Bergland Tyson J | Conditional execute bit in a graphics processor unit pipeline |
KR101036596B1 (ko) | 2007-09-05 | 2011-05-24 | 가부시키가이샤 시마쓰세사쿠쇼 | 고체촬상소자 및 그 구동방법 |
JP5461533B2 (ja) | 2008-05-30 | 2014-04-02 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | ローカル及びグローバルのデータ共有 |
JP4999791B2 (ja) | 2008-06-30 | 2012-08-15 | キヤノン株式会社 | 情報処理装置、その制御方法、及びプログラム |
JP5435902B2 (ja) | 2008-07-07 | 2014-03-05 | サーパス工業株式会社 | 流量調整弁 |
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 |
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 |
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 |
US8508612B2 (en) | 2010-09-30 | 2013-08-13 | Apple Inc. | Image signal processor line buffer configuration for processing ram image data |
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 |
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 | 晨星半導體股份有限公司 | 影像處理裝置與影像處理方法 |
JP5939572B2 (ja) * | 2012-07-11 | 2016-06-22 | 国立大学法人東京農工大学 | データ処理装置 |
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 |
CN103019656B (zh) * | 2012-12-04 | 2016-04-27 | 中国科学院半导体研究所 | 可动态重构的多级并行单指令多数据阵列处理系统 |
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 |
US9477999B2 (en) * | 2013-09-20 | 2016-10-25 | The Board Of Trustees Of The Leland Stanford Junior University | Low power programmable image processor |
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 |
-
2015
- 2015-04-23 US US14/694,750 patent/US9769356B2/en active Active
-
2016
- 2016-04-08 KR KR1020177028034A patent/KR102016097B1/ko active IP Right Grant
- 2016-04-08 WO PCT/US2016/026786 patent/WO2016171926A1/en active Application Filing
- 2016-04-08 DE DE112016001844.4T patent/DE112016001844T5/de active Pending
- 2016-04-08 EP EP16718118.9A patent/EP3286724B1/en active Active
- 2016-04-08 JP JP2017550909A patent/JP6389571B2/ja active Active
- 2016-04-08 KR KR1020197024671A patent/KR102202579B1/ko active IP Right Grant
- 2016-04-08 CN CN201680019863.0A patent/CN107430760B/zh active Active
-
2017
- 2017-05-09 US US15/590,849 patent/US10397450B2/en active Active
-
2018
- 2018-07-09 JP JP2018130045A patent/JP6764904B2/ja active Active
-
2019
- 2019-07-30 US US16/526,063 patent/US11153464B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0293701A2 (en) * | 1987-06-01 | 1988-12-07 | Applied Intelligent Systems, Inc. | Parallel neighborhood processing system and method |
WO1994009595A1 (en) * | 1991-09-20 | 1994-04-28 | Shaw Venson M | Method and apparatus including system architecture for multimedia communications |
WO2007071883A2 (fr) * | 2005-12-19 | 2007-06-28 | Dxo Labs | Procede et systeme de traitement de donnes numeriques |
CN101202914A (zh) * | 2006-12-01 | 2008-06-18 | 汤姆森许可贸易公司 | 具有本地寄存器的处理元件阵列 |
JP2013090070A (ja) * | 2011-10-15 | 2013-05-13 | Konica Minolta Business Technologies Inc | 画像処理装置、連携方法および連携プログラム |
Also Published As
Publication number | Publication date |
---|---|
KR20190102086A (ko) | 2019-09-02 |
US20170310855A1 (en) | 2017-10-26 |
DE112016001844T5 (de) | 2018-02-08 |
WO2016171926A1 (en) | 2016-10-27 |
JP2018185847A (ja) | 2018-11-22 |
EP3286724A1 (en) | 2018-02-28 |
CN107430760A (zh) | 2017-12-01 |
KR102016097B1 (ko) | 2019-08-29 |
EP3286724B1 (en) | 2021-10-06 |
US20190364174A1 (en) | 2019-11-28 |
US9769356B2 (en) | 2017-09-19 |
US10397450B2 (en) | 2019-08-27 |
US20160316107A1 (en) | 2016-10-27 |
US11153464B2 (en) | 2021-10-19 |
KR20170125395A (ko) | 2017-11-14 |
KR102202579B1 (ko) | 2021-01-13 |
JP6764904B2 (ja) | 2020-10-07 |
JP2018520399A (ja) | 2018-07-26 |
JP6389571B2 (ja) | 2018-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107430760B (zh) | 用于图像处理器的二维移位阵列 | |
CN107408041B (zh) | 用于图像处理器的能量高效的处理器核心架构 | |
CN107438860B (zh) | 用于高性能功率高效的可编程图像处理的架构 | |
KR102050899B1 (ko) | 이미지 프로세서용 컴파일러 관리 메모리 | |
CN112967169B (zh) | 用于图像生成器的数据片生成器 | |
CN107563951B (zh) | 在二维图像处理器上的统计操作 | |
CN110574011B (zh) | 每线缓冲器单元存储器分配的确定 | |
CN110300944B (zh) | 具有可配置数目的活动核心和支持内部网络的图像处理器 | |
CN110574067B (zh) | 图像处理器i/o单元 |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: American California Applicant after: Google limited liability company Address before: American California Applicant before: Google Inc. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |