CN107533751A - 用于图像处理器的线缓冲器单元 - Google Patents
用于图像处理器的线缓冲器单元 Download PDFInfo
- Publication number
- CN107533751A CN107533751A CN201680019839.7A CN201680019839A CN107533751A CN 107533751 A CN107533751 A CN 107533751A CN 201680019839 A CN201680019839 A CN 201680019839A CN 107533751 A CN107533751 A CN 107533751A
- Authority
- CN
- China
- Prior art keywords
- line
- group
- line buffer
- memory
- unit
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N25/00—Circuitry of solid-state image sensors [SSIS]; Control thereof
- H04N25/70—SSIS architectures; Circuits associated therewith
- H04N25/701—Line sensors
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/76—Television signal recording
- H04N5/91—Television signal processing therefor
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Processing (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Image Input (AREA)
- Information Transfer Systems (AREA)
- Memory System (AREA)
Abstract
描述了一种装置,包括由多个线缓冲器接口单元构成的线缓冲器单元。每个线缓冲器接口单元用于处理各个生产者的一个或多个请求以将各个线群存储在存储器中,并且处理各个消费者的一个或多个请求以从存储器提取和提供各个线群。线缓冲器单元具有可编程存储空间,其信息确立线群尺寸,使得用于不同图像尺寸的不同线群尺寸可存储在存储器中。
Description
技术领域
本发明的领域通常涉及图像处理,更具体地,涉及用于图像处理器的线缓冲器单元。
背景技术
图像处理通常涉及被组织成阵列的像素值的处理。其中,空间组织的二维阵列捕获图像的二维性质(附加维度可以包括时间(例如,二维图像序列)和数据类型(例如,颜色))。在通常情况下,阵列像素值由已产生静止图像或帧序列以捕获运动图像的相机提供。传统的图像处理器通常落在两个极端中的任一侧。
第一极端执行作为在通用处理器或类通用处理器(例如,具有向量指令增强的通用处理器)上执行的软件程序的图像处理任务。虽然第一极端通常提供高度通用的应用软件开发平台,但是其使用更细粒度的数据结构以及相关的开销(例如,指令获取和解码、片上和片外数据的处理、推测执行)最终导致在程序代码的执行期间每单位数据消耗更大量的能量。
第二、相反的极端将固定功能硬布线电路应用于更大的数据块。使用直接应用于定制设计电路的较大(相对于较细粒度)的数据块大大降低了每单位数据的功耗。然而,使用定制设计的固定功能电路通常导致处理器能够执行的有限任务集。因此,在第二极端缺乏(其与第一极端相关联的)广泛通用的编程环境。
提供高度通用的应用软件开发机会与每单位数据的提高的功效两者相结合的技术平台仍然是期望但缺失的解决方案。
发明内容
描述了包括由多个线缓冲器接口单元构成的线缓冲器单元的装置。每个线缓冲器接口单元将处理各个生产者的一个或多个请求以将各个线群存储在存储器中并且处理各个消费者的一个或多个请求以从存储器提取并提供各个线群。线缓冲器单元具有可编程存储空间,其信息建立线群尺寸,使得用于不同图像尺寸的不同线群尺寸可存储在存储器中。
附图说明
以下描述和附图用于说明本发明的实施例。在附图中:
图1示出了技术平台的各种组件;
图2a示出了用内核构建的应用软件的实施例;
图2b示出了内核的结构的实施例;
图3示出了内核的操作的实施例;
图4示出了图像处理器硬件架构的实施例;
图5a、图5b、图5c、图5d和图5e图示了将图像数据解析成线群,将线群解析成表以及在具有重叠模板的表上执行的操作;
图6示出模板处理器的实施例;
图7示出了图像处理器的配置和编程的实施例;
图8示出了由线群构成的图像帧;
图9a、图9b和图9c图示了线缓冲器单元的设计和操作实施例;
图9d和图9e图示了图像处理器的可编程寄存器空间的实施例;
图10a和图10b图示了操作虚拟高模式;
图11a和图11b示出了线缓冲器接口单元实施例;
图12示出了计算系统的实施例。
具体实施方式
i.引言
以下说明描述了关于新的图像处理技术平台的多个实施例,所述技术平台提供广泛通用的应用软件开发环境,其使用更大的数据块(例如,如以下将进一步描述的线群和表)来提供改进的功率效率。
1.0应用软件开发环境
a.内核的应用和结构
图1示出了图像处理器技术平台的高级视图,其包括虚拟图像处理环境101、实际图像处理硬件103和用于将为虚拟处理环境101编写的高级代码转译为由实际硬件103物理执行的目标代码的编译器102。如下文更详细描述,虚拟处理环境101在能被开发并且为应用程序的构成过程的易于可视化定制的应用程序方面是广泛通用的。当开发者104完成程序代码开发工作时,编译器102将在虚拟处理环境101内编写的代码转译为针对实际硬件103的目标代码。
图2a示出了虚拟环境中编写的应用软件可采用的结构和形式的示例。如图2a所示,可期望程序代码处理输入图像数据201的一个或多个帧以对输入图像数据201进行一些整体变换。通过在由开发者表达的经编排的序列中的输入图像数据上操作的程序代码202的一个或多个内核的操作实现该变换。
例如,如图2a所示,通过利用第一内核K1首先处理每个输入图像,实现整体变换。然后,内核K2操作由内核K1所产生的输出图像。然后,内核K3_1或K3_2操作由内核K2产生的每个输出图像。接着,内核K4操作由内核K3_1/K3_2产生的输出图像。内核K3_1和K3_2可以是被设计为通过在K3级施加并行处理来加速整体处理的相同的内核,或者可以是不同的内核(例如,内核K3_1对第一特定类型的输入图像进行操作,内核K3_2对不同的第二类型的输入图像进行操作)。
因此,较大的整体图像处理序列可采取图像处理流水线或有向无环图(DAG)的形式,这样开发环境可被配备为实际向开发者呈现正在开发的程序代码的表示。内核可由开发者单独开发和/或可由提供任何底层技术(诸如实际的信号处理器硬件和/或其设计)的实体和/或由第三方(例如,为开发环境编写的内核软件的供应商)提供。这样,期望名义开发环境将包括开发者可以以各种方式自由“联合”以实现其更大开发工作的整体流程的内核“库”。预期为这种库的一部分的一些基本内核可包括用于提供以下基本图像处理任务中的任何一个或多个的内核:卷积、去噪、颜色空间转换、边缘和角点检测、锐化、白平衡、伽马校正、色调映射、矩阵乘法、图像配准、金字塔构造、小波变换、块方式离散余弦和傅立叶变换。
图2b示出了开发者可设想的内核203的结构的示例性描述。如图2b所示,内核203可被视为各自在相应底层处理器205上操作的程序代码的多个并行线程(“线程”)204,其中每个处理器205被定向到输出阵列206中的特定位置(诸如内核正在生成的输出图像中的特定像素位置)。为简单起见,在图2b中仅示出了三个处理器和对应的线程。在各种实施例中,每个所图示的输出阵列位置将具有自身的专用处理器和对应的线程。也就是说,可以为输出阵列中的每个像素分配单独的处理器和线程。
如下面将更详细描述,在各种实施例中,在实际底层硬件中,执行通道阵列和对应线程一致地操作(例如,以类似单指令多数据的方式),从而生成用于当前正在处理的帧的一部分“线群”的输出图像数据。线群是图像帧的连续的、可调尺寸的部分。在各种实施例中,开发者可意识到硬件在线群上操作,或者开发环境可呈现抽象的概念,其中单独的处理器和线程用于例如输出帧中的每个像素(例如,由其自身的专用处理器和线程所产生的输出帧中的每个像素)。无论如何,在各种实施例中,开发者理解内核包括用于每个输出像素的单独线程(无论输出阵列是可视化的、是整个输出帧还是其一部分)。
如下面将更详细描述,在实施例中,在虚拟环境中呈现给开发者的处理器205具有指令集架构(ISA),其不仅支持标准(例如RISC)操作码,而且还包括允许开发者通过正在执行的像素处理容易地将像素可视化的特殊格式化的数据访问指令。容易地定义/可视化任何输入阵列位置的能力与传统数学和程序控制操作码的整个ISA相结合允许非常通用的编程环境,其本质上允许应用程序开发者理想地定义要在任意尺寸的图像表面上执行的任何期望的功能。例如,理想地,任何数学运算可容易地被编程从而应用于任何模板尺寸。
关于数据访问指令,在实施例中,虚拟处理器的ISA(“虚拟ISA”)包括特殊数据加载指令和特殊数据存储指令。数据加载指令能够从图像数据的输入阵列内的任何位置读取。数据存储指令能够对图像数据的输出阵列内的任何位置写入。后一指令允许容易地将相同处理器的多个实例专用于不同的输出像素位置(每个处理器写入输出阵列中的不同像素)。这样,例如,可以使模板尺寸本身(例如,表示为像素的宽度和像素的高度)成为容易编程的特征。利用具有特殊指令格式的每个特殊加载和存储指令进一步简化处理操作的可视化,由此目标阵列位置被简单地指定为X和Y坐标。
无论如何,通过为输出阵列多个位置中的每个位置实例化单独的处理器,处理器可并行执行它们各自的线程,从而使例如同时产生输出阵列中的所有位置的相应值。值得注意的是,许多图像处理例程通常对相同输出图像的不同像素执行相同的操作。这样,在开发环境的一个实施例中,假设每个处理器是相同的并且执行相同的线程程序代码。因此,虚拟化环境可被视为一种类型的二维(2D)SIMD处理器,其例如由在锁定步骤中每个执行相同代码的相同处理器的2D阵列构成。
图3示出了针对输出阵列中的两个不同像素位置处理相同代码的两个虚拟处理器的处理环境的更详细的示例。图3示出了与正在生成的输出图像相对应的输出阵列304。在此,第一虚拟处理器正在处理线程301的代码以在输出阵列304的位置X1处生成输出值,第二虚拟处理器正在处理线程302的代码以在输出阵列304的位置X2处生成输出值。同样,在各种实施例中,开发者将理解,对于输出阵列304中的每个像素位置存在单独的处理器和线程(为简单起见,图3仅示出了它们中的两个)。然而,在各种实施例中开发者仅需要开发用于一个处理器和线程的代码(由于类似SIMD的机器性质)。
如本领域中已知的,输出像素值通常通过处理包括并围绕对应的输出像素位置的输入阵列的像素来确定。例如,如从图3可见,输出阵列304的位置X1对应于输入阵列303的位置E。因此,将被处理以确定输出值X1的输入阵列303像素值的模板将对应于输入值ABCDEFGHI。类似地,将被处理以确定输出值X2的输入阵列像素的模板将对应于输入值DEFGHIJKL。
图3示出了可分别用于计算输出值X1和X2的线程对301、302的对应虚拟环境程序代码的示例。在图3的示例中,两对代码是相同的,计算9个输入阵列值的模板的平均值以确定对应的输出值。两个线程之间的唯一区别是从输入阵列调用的变量和写入输出阵列的位置。具体来说,写入输出位置X1的线程在模板ABCDEFGHI上操作,写入输出位置X2的线程在模板DEFGHIJKL上操作。
从来自线程对301、302的相应程序代码可以看出,每个虚拟处理器至少包括内部寄存器R1和R2,并且至少支持以下指令:1)从输入阵列到R1的LOAD指令;2)从输入阵列到R2的LOAD指令;3)将R1和R2的内容相加并将结果放置在R2中的ADD指令;4)将R2中的值除以立即操作数9的DIV指令;和5)将R2的内容存储到线程专用的输出阵列位置的STORE指令。同样,尽管在图3中仅图示了两个输出阵列位置、两个线程和对应的处理器,但是可以想象,输出阵列中的每个位置可被分配执行这些功能的虚拟处理器和对应的线程。在各种实施例中,与处理环境的类似SIMD的性质保持一致,多个线程彼此孤立地执行。也就是说,在虚拟处理器之间没有线程到线程的通信(防止一个SIMD信道跨越到另一个SIMD信道)。
b.虚拟处理器存储器模型
在各种实施例中,虚拟处理器的显著特征在于其存储器模型。如本领域中所理解的,处理器从存储器读取数据,对所述数据进行操作并将新数据写回存储器。存储器模型是处理器具有的将数据组织在存储器中的方式的透视图或视图。在一个实施例中,虚拟处理器的存储器模型包括输入和输出阵列区域两者。用于线程的输入像素值存储在输入阵列区域中,由线程生成的输出像素值存储在输出阵列区域中。
在实施例中,使用新颖的存储器寻址方案来定义从虚拟处理器存储器模型的输入阵列部分调用哪些特定输入值。具体地,使用用X、Y坐标定义期望的输入数据的“位置相对”寻址方案而不是传统线性存储器地址。这样,虚拟处理器的ISA的加载指令包括用X分量和Y分量识别输入阵列内的特定存储器位置的指令格式。这样,二维坐标系统用于为从输入阵列读取的输入值寻址存储器。
位置相对存储器寻址方案的使用允许虚拟处理器正在操作的图像的区域更容易被开发者识别。如上所述,容易地定义/可视化任何输入阵列位置的能力与传统数学和程序控制操作码的整个ISA相结合允许极其通用的编程环境,其本质上允许应用程序开发者容易地、理想地定义在任意尺寸的图像表面上执行的任何期望的功能。以下更进一步详细地描述采用位置相对寻址方案的指令的各种指令格式实施例,以及所支持的ISA的其它特征的实施例。
输出阵列包含线程负责生成的输出图像数据。输出图像数据可以是最终的图像数据,诸如在整个图像处理序列之后在显示器上呈现的实际图像数据,或者可以是整个图像处理序列的后续内核用作其输入图像数据信息的中间图像数据。同样,通常虚拟处理器并不竞争相同的输出数据项,因为它们在相同的周期期间写入到输出图像数据的不同像素位置。
在实施例中,位置相对寻址方案还用于写入到输出阵列。这样,用于每个虚拟处理器的ISA包括存储指令,其指令格式将存储器中的目标写入位置定义为二维X、Y坐标而不是传统的随机存取存储器地址。
2.0硬件架构实施例
a.图像处理器硬件架构和操作
图4示出用于以硬件实现的图像处理器的架构400的实施例。所述图像处理器可例如是编译器的目标,所述编译器将为模拟环境内的虚拟处理器编写的程序代码转换为由硬件处理器实际执行的程序代码。如图4所示,架构400包括通过网络404(例如,包含片上交换机网络、片上环形网络或其它类型的网络的片上网络(NOC))与多个模板处理器单元402_1至402_N及相应的表生成器单元403_1至403-N互连的多个线缓冲器单元401_1至401_M。在实施例中,任何线缓冲器单元可通过网络404连接到任何表生成器及相应的模板处理器。
在实施例中,程序代码被编译并加载到相应的模板处理器402上以执行由软件开发者较早定义的图像处理操作(例如,取决于设计和实现方式,程序代码也可被加载到模板处理器的相关的表生成器403上)。在至少一些实例中,可通过将用于第一流水线级的第一内核程序加载到第一模板处理器402_1中、将用于第二流水线级的第二内核程序加载到第二模板处理器402_2中等来实现图像处理流水线,其中,第一内核执行流水线的第一级的功能,第二内核执行流水线的第二级的功能等,并且安装附加的控制流方法以将输出图像数据从流水线的一个级传递到流水线的下一级。
在其它配置中,图像处理器可被实现为具有操作相同内核程序代码的两个以上模板处理器402_1、402_2的并行机器。例如,可通过跨每个均执行相同的功能的多个模板处理器扩展帧来处理高密度和高数据速率的图像数据流。
在又一其它配置中,本质上内核的任何DAG都可通过在DAG设计中利用模板处理器自身的程序代码的各自内核配置模板处理器并且将适当的控制流钩配置到硬件中将来自一个内核的输出图像引导到的下一个内核的输入,来被加载到硬件处理器上。
作为通用流程,图像数据的帧由宏I/O单元405接收,并以逐帧为基础传递到一个或多个线缓冲器单元401。特定线缓冲器单元将其图像数据的帧解析为图像数据的较小区域,称为“线群”,然后通过网络404将线群传递到特定的表生成器。完整的或“全”的单个线群可例如由帧的多个相连完整行或列的数据构成(为简单起见,本说明书将主要涉及相连行)。表生成器进一步将图像数据的线群解析成图像数据的较小区域,称为“表”,并将所述表提交给其相应的模板处理器。
在具有单个输入的图像处理流水线或DAG流的情况下,通常,输入帧被引导到相同的线缓冲器单元401_1,其将图像数据解析为线群,并将线群引导到表生成器403_1,其相应的模板处理器402_1正在执行流水线/DAG中的第一内核的代码。当模板处理器402_1在其处理的线群上完成操作时,表生成器403_1将输出线群发送到“下游”线缓冲单元401_2(在一些使用情况下,输出线群可以被发送回到以前发送过输入线群的同一线缓冲器单位401_1)。
然后,表示在其自身各自的其它表生成器和模板处理器(例如,表生成器403_2和模板处理器402_2)上执行的流水线/DAG中的下一级/操作的一个或多个“消费者”内核从下游线缓冲器单元401_2接收由第一模板处理器402_1生成的图像数据。以这种方式,在第一模板处理器上操作的“生产者”内核将其输出数据转发到在第二模板处理器上操作的“消费者”内核,其中,与整个流水线或DAG的设计一致,消费者内核在生产者内核之后执行下一任务集。
模板处理器402被设计为同时在图像数据的多个重叠模板上操作。多个重叠模板和模板处理器的内部硬件处理能力有效地确定了表的尺寸。其中,在模板处理器402内,执行通道阵列一致地操作来同时处理由多个重叠模板覆盖的图像数据表面区域。
如下文将更详细地所述,在各种实施例中,图像数据的表被加载到模板处理器402内的二维寄存器阵列结构中。通过将大量数据移动到大量寄存器空间中,例如,作为单个加载操作,且紧随其后由执行通道阵列对数据直接执行处理任务,使用表和二维寄存器阵列结构被认为有效地提供功耗改善。此外,使用执行通道阵列和相应的寄存器阵列提供易于编程/可配置的不同模板尺寸。
图5a至图5e高水平地示出线缓冲器单元401的解析活动、表生成器单元403的更细粒度解析活动两者以及耦合到表生成器单元403的模板处理器402的模板处理活动的实施例。
图5a图示图像数据501的输入帧的实施例。图5a还图示三个重叠模板502(每个具有3像素×3像素的大小)的概略图,模板处理器被设计为在其三个重叠模板502上进行操作。以实心黑色突出每个模板各自生成的输出图像数据的输出像素。为简单起见,三个重叠模板502被图示为仅在垂直方向上重叠。应当认识到,实际上,模板处理器可被设计成在垂直和水平方向上均具有重叠模板。
如图5a所示,由于模板处理器内的垂直重叠模板502,在单个模板处理器在其上操作的帧内存在宽带(wide band)图像数据。如将在下文更详细所述,在实施例中,模板处理器以从左到右的方式跨图像数据处理重叠模板内的数据(然后以从上到下的顺序重复下一线集)。因此,随着模板处理器继续向前进行其操作,实心黑色输出像素块的数量将水平向右增长。如上所述,线缓冲器单元401负责解析来自足够模板处理器在扩展的多个即将到来的周期中操作的输入帧的输入图像数据的线群。线群的示例性图示被示为阴影区域503。在实施例中,如下文进一步所述,线缓冲器单元401可理解向/从表生成器发送/接收线群的不同动态。例如,根据被称为“全组”的一种模式,在线缓冲器单元和表生成器之间传递图像数据的完整全宽度线。根据被称为“虚拟高”的第二模式,最初线群以全宽度行的子集被传递。然后剩余的行以较小(小于全宽度)的片段顺序传递。
随着输入图像数据的线群503由线缓冲器单元定义并传递到表生成器单元,表生成器单元进一步将线群解析为更精确匹配模板处理器的硬件限制的更细的表。更具体地,如下文将更进一步详细描述,在实施例中,每个模板处理器由二维移位寄存器阵列构成。二维移位寄存器阵列实质上移位执行通道阵列“之下”的图像数据,其中,移位模式使得每个执行通道在其自身相应模板内的数据上操作(即,每个执行通道处理其自身模板上的信息处理以生成用于该模板的输出)。在实施例中,表是“填充”或以其它方式被加载到二维移位寄存器阵列中的输入图像数据的表面区域。
因此,如在图5b中所示,表生成器解析来自线群503的初始表504,并将其提供给模板处理器(在此,数据表对应于通常由附图标记504标识的阴影区域)。如在图5c和图5d中所示,模板处理器通过以从左到右的方式在表上有效地移动重叠模板502而对输入图像数据的表进行操作。如图5d所示,可以从表内的数据计算出输出值的像素的数量被耗尽(没有其它像素位置可以具有从表内的信息确定的输出值)。为简单起见,忽略了图像的边界区域。
如图5e所示,然后表生成器提供下一个表505供模板处理器继续操作。注意,当模板开始在下一表上操作时,模板的初始位置是从第一表上的耗尽点向右的下一进展(如之前在图5d中所图示的)。对于新表505,当模板处理器以与处理第一表相同的方式对新表进行操作时,模板将简单地继续向右移动。
注意,由于围绕输出像素位置的模板的边界区域,第一表504的数据和第二表505的数据之间存在一些重叠。所述重叠可由表生成器重复传送重叠数据两次进行简单处理。在替代的实施方式中,为了给模板处理器提供下一表,表生成器可继续仅向模板处理器发送新数据,并且模板处理器重复使用来自前一表的重叠数据。
b.模板处理器设计和操作
图6示出模板处理器架构600的实施例。如图6所示,模板处理器包括数据计算单元601、标量处理器602以及相关联的存储器603和I/O单元604。数据计算单元601包括执行通道阵列605、二维移位阵列结构606和与阵列的特定行或列相关联的单独的随机存取存储器607。
I/O单元604负责将从表生成器接收的“输入”表数据加载到数据计算单元601中,并将来自模板处理器的“输出”表数据存储到表生成器中。在实施例中,将表数据加载到数据计算单元601中需要将所接收的表解析成图像数据的行/列,并将图像数据的行/列加载到二维移位寄存器结构606或执行通道阵列的行/列的各自的随机存取存储器607中(以下将更详细描述)。如果表最初被加载到存储器607中,则执行通道阵列605内的各个执行通道随后在适当的时候可将表数据从随机存取存储器607加载到二维移位寄存器结构606中(例如随着恰好在对表的数据操作之前的加载指令)。在完成将表数据(直接从表生成器或是从存储器607)加载到寄存器结构606之后,执行通道阵列605的执行通道对数据进行操作,并最终将完成的数据作为表直接“写回”表生成器或随机存取存储器607中。如果是后者,I/O单元604从随机存取存储器607取出数据以形成输出表,然后将其转发到表生成器。
标量处理器602包括程序控制器609,其从标量存储器603读取模板处理器的程序代码的指令,并将指令发布到执行通道阵列605中的执行通道。在实施例中,单个相同指令被广播到阵列605内的所有执行通道以实现与数据计算单元601类似的SIMD的行为。在实施例中,从标量存储器603读取并发布到执行通道阵列605的执行通道的指令的指令格式包括超长指令字(VLIW)类型格式,该格式的每个指令包含多于一个的操作码。在进一步的实施例中,VLIW格式包括ALU操作码和存储器操作码(引导用于特定执行通道或执行通道集合的存储器操作)两者,ALU操作码引导由每个执行通道的ALU(如下所述,在实施例中可以指定多于一个的传统ALU操作)执行的数学函数。
术语“执行通道”是指能够执行指令(例如,可以执行指令的逻辑电路)的一个或多个执行单元的集合。然而,在各种实施例中,执行通道可以包括除了执行单元之外的更多类似于处理器的功能。例如,除了一个或多个执行单元之外,执行通道还可以包括对接收到的指令进行解码的逻辑电路,或者在更多类MIMD设计的情况下,提取和解码指令的逻辑电路。对于类MIMD方法,尽管本文已经大量地描述了集中式程序控制方法,但是可以在各种替代实施例中实现更分布式的方法(例如,将程序代码和程序控制器包括在阵列605的每个执行通道内)。
执行通道阵列605、程序控制器609和二维移位寄存器结构606的组合为广泛的可编程功能提供了广泛适应/可配置的硬件平台。例如,假定各个执行通道能够执行各种各样的功能并且能够容易地访问接近任何输出阵列位置的输入图像数据,应用软件开发者能够对具有广泛的不同功能能力以及大小(例如,模板尺寸)的内核进行编程。
除了用作由执行通道阵列605操作的图像数据的数据存储之外,随机存取存储器607还可保存一个或多个查找表。在各种实施例中,一个或多个标量查找表也可在标量存储器603内被实例化。
标量查找涉及将相同的数据值从来自相同索引的相同查找表传递到执行通道阵列605内的每个执行通道。在各种实施例中,上述VLIW指令格式被扩展为还包括标量操作码,所述标量操作码引导由标量处理器执行的查找操作到标量查找表。被指定用于与操作码一起使用的索引可以是立即操作数或从某个其它数据存储位置获取。无论如何,在实施例中,从标量存储器内的标量查找表查找本质上涉及在相同时钟周期内将相同的数据值广播到执行通道阵列605内的所有执行通道。
3.0线缓冲器单元实施例
a.线缓冲器单元概述
回顾上面在章节1.0中的讨论,在各种实施例中,为硬件平台编写的程序代码用唯一的虚拟代码写入,该唯一的虚拟代码包括具有加载和存储指令的指令集,其指令格式识别输入和输出阵列位置作为,例如X、Y坐标。在各种实施方式中,X、Y坐标信息实际上可被编程到硬件平台中并被其各个组件识别/理解。这不同于例如将X、Y坐标(例如在编译器内)转译成不同的信息。例如,在模板处理器内的二维移位寄存器结构的情况下,X、Y坐标信息被转译为寄存器移位运动。相比之下,硬件平台的其它部分可具体地接收并理解最初在较高的虚拟代码级表示的X、Y坐标信息。
如图7所示,如章节1.0中所描述的,程序代码开发者在虚拟代码级710处利用特殊指令格式将数据位置表示为X、Y坐标。在编译阶段期间,虚拟代码被转译为由硬件(目标代码)实际处理的程序代码和加载到硬件的配置(例如寄存器)空间中的对应的配置信息。如图7所示,在实施例中,特定内核的目标代码被加载到模板处理器的标量处理器705的程序空间中。
作为配置过程的一部分,在标量处理器705上执行的配置软件将适当的配置信息711、712加载到表生成器单元703和线缓冲器单元701两者,表生成器单元703与模板处理器702耦合,线缓冲器单元701将生成由模板处理器702操作的新表或接收由模板处理器702产生的处理过的表。在此,一般来说,仍然可根据整个图像的X、Y坐标考虑表。也就是说,一旦定义了图像或帧(例如,就每行的像素数目、行数量、每列的像素数目和列数量而言),图像的任何部分或位置仍可用X、Y坐标表示。
这样,在各种实施例中,表生成器单元703和线缓冲器单元701中的任一个或两者均配置有在它们各自的配置空间706、707内的信息711、712,其建立信息平台,从该信息平台,以X、Y坐标识别图像或帧的特定位置和/或区域(例如,线群,表)。在各种实施方式/使用中,X、Y坐标可以是在虚拟代码级表示的相同X、Y坐标。
这种信息的示例包括例如线缓冲器单元中的活动线群的数量、每个线群的图像尺寸(例如,作为一组四个X、Y坐标(每个角一个)或一对X、Y坐标(一个用于较低部分的较近角,一个用于较高部分的较远角))、绝对图像宽度和图像高度、模板尺寸(表示为定义模板处理器的单个模板和/或重叠模板区域的尺寸的X、Y值)、表和/或线群尺寸(例如,被指定为与图像尺寸相同的术语但具有较小的大小)等。此外,线缓冲器单元701至少可利用附加配置信息进行编程,所述附加配置信息是诸如写入由线缓冲器单元701管理的线群的生产者内核的数量和读取由线缓冲器单元701管理的线群的消费者内核的数量。通常也包含与图像数据相关联的信道和/或维度的数量作为配置信息。
图8仅作为一个示例,图示了使用X、Y坐标来定义图像内的线群。在此,在图像801内可观察到N个线群802_1、802_2、...、802_N。如从图8所见,可通过参照图像中的例如定义一个或多个线群角点的X、Y坐标来容易地定义每个线群。这样,在各种实施例中,用于定义特定线群的线群名或其它数据结构可包括与线群相关联的X、Y坐标位置,以便对其进行特别识别。
简单回顾图7,注意到图7示出了在运行时间期间,通过例如包含定义期望的数据区域的X、Y坐标信息,表生成器703可从线缓冲器单元701请求“下一个”线群(或线群的一部分)。图8示出了仅由图像数据的完整行构成的标称“全宽度”线群。在以下更进一步详细描述的被称为“虚拟高”的替代配置中,线缓冲器单元701最初仅传递线群的第一较高部分作为图像数据的全宽度行。然后线群的后续较低行由表生成器在小于全宽度行的连续语块中特别地请求并且被单独地请求。这样,表生成器进行多个请求以获得全线群。在此,每个这样的请求可通过归属于下一较低部分的X、Y坐标来定义下一较低部分。
图9a至图9c展示了线缓冲器单元实施例900的各种特征。如图9a所示,线缓冲器单元包括其中存储线群903_1至903_N的存储器902(例如静态或动态随机存取存储器(SRAM或DRAM))。图9a示出了产生和消耗存储器902内的特定图像/帧的线群903_1至903_N的各种内核之间的活动。
如图9a所示,生产者内核K1在分离的时间实例P1、P2至PN向存储器902发送新的线群。生产者内核K1在生成新的数据表的模板处理器上执行。耦合到模板处理器的表生成器累积表以形成线群,并将线群转发到存储器902。
同样如图9a所图示的,存在两个消费者内核K2、K3对由生产者内核K1生成的线群903_1至903_N进行操作。在此,消费者内核K2和K3分别在时间C21和C31接收第一线群903_1。显然,时间C21和C31发生在时间P1之后。其它限制可能不存在。例如,时间C21和/或C31可在时间P2至PN中的任意时间之前或之后发生。在此,内核K2和K3的各个表生成器在适于它们各自的内核的时间请求下一个线群。如果内核K2、K3中的任一个在时间P1之前请求线群903_1,则请求闲置,直到线群903_1实际上被写入存储器902之后。在多个实施方式中,生产者内核在与消费者内核不同的模板处理器上操作。
可以想到,来自内核K2和K3中的任一个或两者对所有线群903_1至903_N的请求均可在时间P1之前到达。因此,消费者内核可在任意时间请求线群。随着消费者内核请求线群,线群被转发到消费者内核,然而,这受制于生产者内核K1可产生它们的速率。在各种实施例中,消费者内核依次请求线群,并同样依次接收它们(内核K2在时间C22至C2N依次接收线群903_2至903_N)。为简单起见,对于特定线群仅图示了一个生产者内核。可以设想,各种实施例可被设计为允许不同的生产者写入相同的线群(例如,在消费者不允许被服务,直到所有生产者已写入线群之后的情况下)。
在没有生产者内核(因为(多个)消费者内核是处理器的DAG处理流程中的第一内核)的情况下,可将图像数据的帧传送到存储器902中(例如经由直接存储器访问(DMA)或从相机)并解析成线群。在没有(多个)消费者内核的情况下(因为生产者内核是处理器的总体程序流中的最后一个内核),可组合结果线群以形成输出帧。
图9b示出了整个线缓冲器单元900的更详细的实施例。为讨论起见,图9a的活动被叠加在图9b的线缓冲器单元900上。如在图9b中所见,线缓冲器单元900包括耦合到线缓冲器单元电路901的存储器902。线缓冲器单元电路901例如可由专用逻辑电路构造。在线缓冲器单元电路901内,保留线缓冲器接口单元904_1至904_N用于存储器902内的每个线群903_1至903_N。在各种实施例中,存在固定数量的线缓冲器接口单元904_1至904_N,其设置线缓冲器单元可在任何时刻管理的线群数量的上限(如果少于N个线群被激活,则对应较少数量的线缓冲器单元接口被激活并在任意时间使用)。
如图9b所图示的,利用线缓冲器单元电路901内的总共N个线缓冲器接口单元904,线缓冲器单元900处理最大数量的线群。此外,利用最大的允许线群尺寸(其中线群尺寸是可配置的参数),可确定存储器902的近似尺寸(当然,为了允许硬件效率,可以不同时允许N个最大尺寸的线群为代价来实例化较小的存储器占用量)。
每个线缓冲器接口单元904_1至904_N负责处理被分配待处理的针对特定线群的生产者和消费者请求。例如,线缓冲器接口单元904_1在时间P1处理来自生产者K1的请求以存储线群903_1,并处理来自消费者内核K2和K3对线群903_1的请求。响应于前者,线缓冲器接口单元904_1将线群903_1写入存储器902。响应于后者,线缓冲器接口单元904_1执行从存储器902中相应读取线群903_1并分别在时间C21和C31将线群903_1转发给消费者内核K2和K3。
在线群的所有消费者已被转发其线群的副本之后,线缓冲器接口单元被“自由”分配给另一线群。例如,如果线群903_1表示帧序列的第一图像帧内的第一线群,在线群903_1在时刻C21和C31被转发给消费者内核K2和K3之后,接着线缓冲器接口单元904_1可被分配处理所述帧序列的下一个,第二图像帧内的第一线群。以这种方式,线缓冲器单元电路901可被视为具有线缓冲器接口单元904的“池”,其中,每个接口单元在其紧接之前的线群被传送到其最后一个消费者之后被分配一个新的线群进行管理。因此,随着接口单元重复进入已经服务其最后一个消费者并且正在等待其下一线群的线缓冲器接口单元的“空闲池”并从中移除,存在接口单元的循环。
图9c更详细地说明了循环的实施例。如图9c所示,从线缓冲器单元电路内的线缓冲器接口单元的空闲池中选择可用的线缓冲器接口单元910。所述线缓冲器接口单元然后被配置有适当的配置信息911(例如,新线群的X,Y位置信息或等效的线性存储器地址)。在此,注意,在图9b中,每个线缓冲器接口单元可包括保持这种配置信息的配置寄存器空间905。
线缓冲器接口单元然后继续处理针对其新分配的线群的生产者和消费者请求912。在最后一个生产者已写入线群之后(在各种实施例中,每个线群仅有一个生产者)并且在最后一个消费者已被提供其生产者已写入的线群的版本之后,线缓冲器接口单元则返回到空闲池,并且该过程针对下一线群重复910。为了便于说明,图9b中未示出线缓冲器单元电路901内用于监控图9c的控制流的控制逻辑电路。
b.可编程寄存器空间实施例
关于提供给线缓冲器接口单元作为下一个线群的分配的一部分的更新的配置信息911,在标称情况下,线缓冲器单元900本身正在处理例如仅一个固定的生产者的静态配置,所述生产者供给固定的一组一个或多个消费者。在这种情况下,主要配置信息(例如线群尺寸、消费者的数量等)也倾向于是静态的,并且将在线群之间不会改变。相反,提供给线缓冲器接口单元的新配置信息主要标识新的线群(例如,存储器内线群的位置等)。然而,更复杂的潜在配置/设计是可能的。其中一些将在下面紧接地更详细地描述。
图9d图示了线缓冲器接口单元的寄存器空间的内容(例如,图9b的寄存器空间905_1的内容)的实施例。紧接着是一些寄存器字段的描述。
LB_Enable字段921本质上启用线缓冲器接口单元,并被“设置”为从空闲池获取线缓冲器接口单元的过程的一部分。Num_Channels字段922定义线群的图像数据内的信道的数量。在实施例中,Num_Channels字段922可以用于确定每个线群的总数据量。例如,视频流通常包括红色(R)像素的帧序列,蓝色(B)像素的帧序列和绿色(G)像素的帧序列。因此,对于任何线群,实际上有三个有价值的线群信息(R、G和B)。
Num_Consumers字段923描述将请求线群的消费者的数量。在实施例中,在线群实例已被递送的次数等于Num_Consumers字段923中的值之后,线缓冲器接口单元将被输入到空闲池。
Row_Width字段924定义全线群的宽度(例如,以像素数量)。注意,Row_Width 924值可表示为由编译器提供的X坐标值。FB_Rows字段926定义全线群的高度(例如,以像素数量)。注意,FB_Rows字段926可表示为由编译器提供的Y坐标值。
FB_Base_Address字段930定义线群在线缓冲器单元存储器中的位置。在称为“全”线群模式的第一操作模式中,在存储器中访问全尺寸线群(从生产者接收线群并将其递送给消费者,所述线群包含其各自全部数量的数据)。在全线群模式中,Num_Channels字段922、Row_Width字段924和FB_Rows字段926可与FB_Address字段930一起使用,以确定将被施加到存储器的地址的范围,以便完整地访问完整线群。此外,这些相同的参数可用于将来自已请求X、Y坐标中的线群的表生成器的请求“转译”为线性存储器地址。
VB_Enable字段925、VB_Rows字段927、VB_Cols字段928、Num_Reuse_Rows字段929以及VB_Base_Address字段931在被称为“虚拟高”的线群模式的另一操作模式中使用,其将在下面进一步详细描述。
鉴于图9d示出了单个线缓冲器接口单元的配置寄存器空间905,作为对比,图9e示出了对于线缓冲器单元电路901作为整体的全局配置寄存器空间907的场境的实施例。鉴于图9d的每线缓冲器接口单元寄存器空间聚焦在特定线群,作为对比,图9e的全局寄存器空间聚焦于对从相同图像解析不同线群以及专用于与图像处理相关联的生产者/消费者组合的其他信息的理解。
如图9e所示,全局寄存器空间的实施例包括用于特定图像的信道数量932和消费者数量933。为简单起见,图9e的寄存器空间仅考虑具有一组生产者和消费者的一个图像(例如,仅DAG中的单个视频流和单个点)。可以想到,也可分配图9e的寄存器空间的多个实例以允许线缓冲器单元电路有效地执行多任务。
多任务的第一形式在图像处理器上实现的DAG或软件流水线内。在此,相同的线缓冲器单元可被配置为处理DAG内的针对两个不同节点或流水线的两个不同级的线群(即,单个线缓冲器单元可支持多于一个的模板处理器)。不同的节点/级可能容易地具有不同数量的消费者,但是在许多情况下倾向于具有相同的图像和模板尺寸特性。多任务的第二形式是跨越在相同图像处理器硬件上实现的多个不同DAG和/或多个不同流水线。例如,具有四个模板处理器的图像处理器可并发执行用于分别处理具有完全不同模板大小的完全不同的图像尺寸的两个完全不同的两级流水线。
回到图9e的特定实施例,注意,在DAG或流水线级之间的任何特定的节点可由图像中的信道数量、图像尺寸、适用模板的大小和线群的消费者的数目以高级别来表征(图9e再次假定每线群一个生产者,但可以想象,在图9e的全局寄存器空间也将包括用于生产者的数量的字段的情况下,多于一个生产者可写入单个线群)。Num_Channels字段932和Num_Consumers字段933与图9c的对应字段922、923本质上相同。
Image_Size字段934和Stencil_Dimension字段935本质上分别描述了待处理的图像的尺寸以及对将要从图像中切出的线群进行操作的模板的大小。注意,字段934、935两者都可以依照X、Y坐标值表示,并且可由编译器提供。此外,在实施例中,当线缓冲器接口单元被分配用于处理来自生产者/消费者组的与全局信息有关的线群时,线缓冲器电路单元(图9b中未示出)内的控制逻辑电路利用Image_Size字段934和Stencil_Dimension字段935来确定被加载到线缓冲器接口单元的寄存器空间中的Row_Width值924、FB_Rows值926和FB_Base_Address值930。在替代的或进一步的实施例中,图像尺寸表示为可具有其自身的可单独寻址寄存器空间的两个单独的值:image_width和image_height。同样,模板尺寸可表示为可具有其自身的可单独寻址寄存器空间的两个单独的值:stencil_width和stencil_height。
Row_Width 924可直接从Image_Size 934信息获得。例如,如果Image_Size表示为离图像原点最远的像素处(如果原点在左下角,则为右上角)的X、Y坐标对,则可将Row_Width确定为X坐标值。
可以从Image_Size字段934和Stencil_Dimension字段935确定FB_Rows字段926和FB_Base_Address字段930。在此,具体地,可从图像的高度(Image_Size 934的Y坐标值)和模板高度(Stencil_Dimension 935的Y坐标值)计算每个线群的高度(FB_Rows926)。一旦线群的高度已知,则也可确定要从图像中解析的线群的数量和存储器中每个这种线群的起始线性地址(FB_Base_Address 930)。
因此,在实施例中,当线缓冲器单元被分配用于处理针对其全局寄存器空间由图9e的寄存器字段表征的特定生产者/消费者组合的线群时,即时计算上述确定,并将FB_Width 924、FB_Rows 926、Base_Address 934中的每一个连同直接复制的Num_Channels922和Num_Consumers 923一起加载到线缓冲器接口单元的特定寄存器空间中。逻辑电路和数据路径因此可存在于全局寄存器空间和线缓冲器接口单元寄存器空间的每个实例之间,以执行这些确定和数据传输。
在替代实施例中,编译器执行这些计算中的每一个,从而完全消除了很多(如果不是全部)全局寄存器空间。在此,例如,编译器可确定针对每个线群的Base_Address值,并将所述值加载到线缓冲器电路单元内的查找表中。随着配置对应的线群,从查找表调用所述值并将其加载到线缓冲器接口单元的寄存器空间中。也可实现两个极端之间的不同组合(硬件飞速写入与确定的静态编译器)。
虽然上述实施例强调了在寄存器电路(“寄存器空间”)中保持配置信息,但是在其它或组合的实施例中,配置信息可保持在存储器(例如缓冲器单元存储器)或其它存储器或信息保持电路中。
C.线缓冲器单元实施例&全线群模式&虚拟高模式
上述讨论主要涉及“全线群”模式,其中线群作为完整、整个的线群在表生成器和线缓冲器单元之间被引用和传递。在被称为“虚拟高”的另一模式中,线群作为在分离的离散区段中完成的全宽度较高部分和较低部分在表生成器之间被引用和传送。
图10a和图10b示出了示例性的虚拟高模式序列的描述。如图10a所示,线群最初形成为全宽度行的较高部分1003和仅具有第一较短宽度区段的第一较低部分1004_1。线群的初始形成可由生产表生成器提供给线缓冲器单元,或者可由线缓冲器单元提供给消费表生成器。
在生产者的情况下,在模板1002对较低部分1004_1进行处理之后形成线群(在图10b中观察到大致的模板定位)。在生产者模板处理器对较低部分1004_1进行处理之后,模板继续向右水平地向前。最终,它们将对下一个较低部分1004_2进行处理。在完成下一个较低部分1004_2时,下一个较低部分1004_2从表生成器被发送到线缓冲器单元,线缓冲器单元将其存储在存储器中的正确位置,例如“紧邻”第一较低部分1004_1。所述过程继续,直到线群被完全写入线缓冲器单元存储器。
在消费者的情况下,如图10a所示,线群最初被传送到表生成器。模板处理器在线群的第一部分1004_1上操作。在第一部分1004_1的处理接近完成时,表生成器将请求从存储器获取并由线缓冲器单元传送的下一个较低部分1004_2。所述过程继续,直到完全处理所述线群。
注意,对于生产者和消费者两者,较低部分专门由表生成器标识。也就是说,在生产者情况和消费者情况两者下,较低部分1004_2专门由表生成器标识,并且线缓冲器单元专门访问存储器以存储/获取较低部分1004_2。在实施例中,表生成器通过基于由编译器所提供的信息而考虑的X、Y坐标值来识别较低部分1004_2(例如,较低部分1004_2的任意角、较低部分1004_2的所有四个角、仅X坐标值等)。
图11a示出了线缓冲器接口单元1104内的电路的第一(更简单)实施例。如图11a所示,线缓冲器接口单元包括地址转译电路1106,其将由一个或多个X,Y坐标值识别的线群或其一部分的标识(诸如图10b的较低部分1004_2)转译为用于访问线缓冲器单元存储器的线性地址。也就是说,线群能被视为“映射”到线缓冲器单元存储器中。转译电路1106实质上以X,Y理解该映射,并且可以将其转换为特定的线性存储器地址。
理解映射的能力是基于配置寄存器空间1105内的信息,在上述图9d中提供了其实施例。在此,通过Row_Width 924、FB_Rows 926和FB_Base_Address 931的知识,转译单元可以“理解”存储器中全线群的尺寸和位置。因此,例如,在虚拟高模式中,基于任何X坐标值(例如,如果相对于线群参考较低部分)或X,Y坐标位置(例如,如果相对于图像帧参考较低部分)对于较低部分的请求足以识别表生成器所引用的部分。另外,Vb_Rows 927和Vb_Cols928实际上定义了较低部分的大小。通过较高部分和较低部分的大小的知识,易于确定向/从缓冲存储器存取的数据量。这些相同的概念也适合于全宽度线群。例如,可以通过图像内的其X,Y位置来识别任何全宽度线群。另外,在一些实施例中,经由以X和/或Y坐标值的方式,引用全宽度线群的较小块的原子请求/响应序列,通过网络传递全宽度线群。
转译电路1106还能用在抽象寻址模式中,其中,不填充Base_Address_Field 931,并且表生成器将线群引用为图像帧内的X,Y坐标。在这种情况下,如果转译电路1006被耦合到图9e的全局寄存器空间中的一些信息(例如,Image_Size,Stencil_Size),或者以其他方式获知,则转译电路1106能计算线群的所有相关信息(其大小和帧内的位置),并将其转换为用于存取线缓冲器单元存储器的线性地址。在另一实施例中,转译电路1106(基于全局类型信息和描述线群的一个或多个X,Y坐标)直接确定Base_Address_Field值931并将其加载到其自己的寄存器空间1105中。
图11a的线缓冲器接口单元实施例还支持线性寻址模式,其中,X,Y坐标值不被用来指代线群(而是使用传统的线性地址)。对于线性寻址模式,旁路路径1140绕过地址转译电路1106。在实施例中,无论哪种寻址模式用在线缓冲器接口单元输入处,线缓冲器接口单元为寻址线缓冲器单元存储器提供标准线性存储器地址。暂时回到图9b,将线性地址提供给仲裁器。存储器接口908解决冲突存储器存取请求并存取线缓冲器单元存储器902。
如上所述,表生成器可以指具有一个或多个X,Y坐标值的线群。在另一实施例中,表生成器不是识别全线群模式中的下一线群或虚拟高模式中的下一较低部分,而是表生成器简单地发出类似于“下一个”的请求(例如,该请求仅指示正被引用的“下一”全线群或同一全/虚拟高线群内的“下一”较低部分或“下一”图像数据,无需任何坐标)。
为了支持通信的该通路,线缓冲器单元和/或线缓冲器单元接口包括状态寄存器空间以理解下一线群/部分是什么。图11b示出了线缓冲器接口单元的增强实施例,其保持指针状态信息,使得表生成器能简单地引用虚拟高模式中的线群的“下一”较低部分,而不必用X,Y坐标指定其位置。此外,写指针1141由指针控制逻辑电路1143保持,该指针控制逻辑电路1143跟踪由生产表生成器提供的较低部分。实际上,写指针1141存储生产者被调度以传送的“下一”部分的位置。此外,指针状态信息允许表生成器仅引用“下一”全宽度线群(全宽模式),而不必指定任何X,Y坐标(因为线缓冲器接口单元能确定下一全宽度线群的位置)。
在实施例中,指针被表达为一个或多个X,Y坐标,并且转译电路将其转换为线性地址。当接收到下一部分时,通过指针控制逻辑电路1143更新指针1141以指向将跟随刚刚接收的部分的部分。读指针1142类似地操作,但是为每个消费者保留单独的读指针(为方便起见,假定仅一个生产者)。
在全线群模式的情况下,可从全局寄存器信息和保持在全局级的指针的类似排列确定“下一”全宽度线群的位置。
d.实现实施例
有必要指出,上述各种图像处理器架构特征不一定限于传统意义上的图像处理,因此可应用于可以(或可以不)使得图像处理器被重新表征的其它应用。例如,如果上述各种图像处理器架构特征中的任何一个被用于创建和/或生成和/或渲染动画,而不是实际相机图像的处理,则图像处理器可被表征为图形处理单元。此外,上述图像处理器架构特征可应用于其它技术应用,诸如视频处理、视觉处理、图像识别和/或机器学习。以这种方式应用,图像处理器可(例如作为协处理器)与更通用处理器(例如,其为计算系统的CPU或计算系统的CPU的一部分)集成,或者可为计算系统内的独立处理器。
上述硬件设计实施例可在半导体芯片内实施和/或实现为用于最终瞄准半导体制造工艺的电路设计的描述。在后者的情况下,这种电路描述可采取更高/行为级电路描述(例如,VHDL描述)或低级电路描述(例如寄存器传送级(RTL)电路描述、晶体管级描述或掩码描述)或其各种组合的形式。电路描述通常体现在计算机可读存储介质(诸如CD-ROM或其它类型的存储技术)上。
从前面的部分可认识到,如上所述的图像处理器可在计算机系统上的硬件中实现(例如,作为处理来自手持设备的相机的数据的手持设备的片上系统(SOC)的一部分)。在图像处理器被实现为硬件电路的情况下,注意,可直接从相机接收由图像处理器处理的图像数据。在此,图像处理器可以是分离的相机的一部分,或者是具有集成相机的计算系统的一部分。在后者的情况下,可直接从相机或从计算系统的系统存储器接收图像数据(例如,相机将其图像数据发送到系统存储器而不是图像处理器)。还要注意,前面部分中所描述的序多特征可适用于图形处理器单元(渲染动画)。
图12提供了计算系统的示例性描述。以下所描述的计算系统的许多组件适用于具有集成相机和相关联的图像处理器的计算系统(例如,手持设备,诸如智能电话或平板计算机)。普通技术人员将能够容易地区分两者。
如图12所示,基本计算系统可包括中央处理单元1201(其可包括例如多个通用处理核1215_1至1215_N、以及设置在多核处理器或应用处理器上的主存储器控制器1217)、系统存储器1202、显示器1203(例如,触摸屏,平板)、本地有线点对点链路(例如USB)接口1204、各种网络I/O功能1205(诸如以太网接口和/或蜂窝调制解调子系统)、无线局域网(例如WiFi)接口1206、无线点对点链路(例如蓝牙)接口1207和全球定位系统接口1208、各种传感器1209_1到1209_N、一个或多个相机1210、电池1211、电源管理控制单元1212、扬声器和麦克风1213以及音频编码器/解码器1214。
应用处理器或多核处理器1250可包括在其CPU 1201内的一个或多个通用处理核1215、一个或多个图形处理单元1216、存储器管理功能1217(例如,存储器控制器)、I/O控制功能1218和图像处理单元1219。通用处理核1215通常执行计算系统的操作系统和应用软件。图形处理单元1216通常执行图形密集功能,从而例如生成在显示器1203上呈现的图形信息。存储器控制功能1217与系统存储器1202对接以向系统存储器1202写入数据/从系统存储器1202读取数据。电源管理控制单元1212通常控制系统1200的功耗。
图像处理单元1219可根据以上在前部分中详细描述的任何图像处理单元实施例来实现。可替代地或组合地,IPU 1219可耦合到GPU1216和CPU1201中的任一者或两者作为其协处理器。此外,在各种实施例中,GPU 1216可实现为具有以上详细描述的任意图像处理器特征。
触摸屏显示器1203、通信接口1204-1207、GPS接口1208、传感器1209、相机1210和扬声器/麦克风1213、编码解码器1214中的每一个均可被视为相对于整个计算系统的各种形式的I/O(例如,输入和/或输出),在适当的情况下,所述整个计算系统也包括集成的外围设备(例如,一个或多个相机1210)。根据实现,这些I/O组件中的各种I/O组件可集成在应用处理器/多核处理器1250上,或者可位于芯片外部或应用处理器/多核处理器1250的封装外部。
在实施例中,一个或多个相机1210包括能够测量相机与其视场中的对象之间的深度的深度相机。在应用处理器或其它处理器的通用CPU核(或具有指令执行流水线以执行程序代码的其它功能块)上执行的应用软件、操作系统软件、设备驱动器软件和/或固件可执行上述任何功能。
本发明的实施例可包括如上所述的各种过程。所述过程可以体现在机器可执行指令中。所述指令可用于使通用或专用处理器执行某些过程。可替代地,这些过程可由包含用于执行过程的硬连线逻辑的特定硬件组件或者由编程的计算机组件和定制硬件组件的任何组合来执行。
本发明的元件还可提供为用于存储机器可执行指令的机器可读介质。所述机器可读介质可包括但不限于软盘、光盘、CD-ROM和磁光盘、FLASH存储器、ROM、RAM、EPROM、EEPROM、磁卡或光卡、传播媒体或适合于存储电子指令的其它类型媒体/机器可读介质。例如,本发明可作为计算机程序被下载,所述计算机程序可通过在载波或其它传播介质中体现的数据信号经由通信链路(例如,调制解调器或网络连接)从远程计算机(例如,服务器)传送到请求计算机(例如,消费者端)。
在上述说明书中,已参照本发明的具体示例性实施例描述了本发明。然而,将显而易见的是,在不脱离如所附权利要求中阐述的本发明的更广泛的精神和范围的情况下,可以对其进行各种修改和改变。因此,说明书和附图被认为是说明性的而不是限制性的。
Claims (27)
1.一种装置,包括:
由多个线缓冲器接口单元构成的线缓冲器单元,每个线缓冲器接口单元处理各个生产者的一个或多个请求以将各个线群存储在存储器中,并且处理各个消费者的一个或多个请求以从存储器提取和提供所述各个线群,所述线缓冲器单元具有可编程存储空间,所述可编程存储空间的信息确立线群尺寸,使得用于不同图像尺寸的不同线群尺寸能够存储在存储器中。
2.如权利要求1所述的装置,其中,所述线群包括控制逻辑电路,用于:
在线缓冲器接口单元为其最后一个消费者服务后,使所述线缓冲器接口单元进入空闲池;
然后,将所述线缓冲器接口单元分配给另一线群。
3.如权利要求1所述的装置,其中,所述线缓冲器单元包括理解图像帧内的至少一个X,Y位置的表达的电路。
4.如权利要求1所述的装置,其中,所述线缓冲器接口单元中的至少一个包括理解图像帧内的至少一个X,Y位置的表达,并且将所述表达转换为线性存储器地址的电路。
5.如权利要求1所述的装置,其中,所述线缓冲器单元中的至少一个支持全线群模式。
6.如权利要求1所述的装置,其中,所述线缓冲器单元中的至少一个支持虚拟高线群模式。
7.如权利要求1所述的装置,其中,所述线缓冲器接口单元中的至少一个被耦合以从配置寄存器空间接收下述信息的任何一个:
a)图像信息中的通道数;
b)线群的消费者数量;
c)全线群单位宽度;
d)全线群高度;
e)线群的较小部分的大小。
8.如权利要求1所述的装置,其中,所述线缓冲器单元包括存储线群的基地址的寄存器空间。
9.如权利要求1所述的装置,其中,所述线缓冲器单元包括基于从软件开发环境得出的X,Y坐标信息,确定线群的基地址的电路。
10.如权利要求1所述的装置,其中,所述线缓冲器单元包括理解待提取的下一图像数据位于所述存储器中何处的指针电路。
11.一种机器可读存储介质,包含电子电路的描述,所述电子电路包括:
由多个线缓冲器接口单元构成的线缓冲器单元,每个线缓冲器接口单元处理各个生产者的一个或多个请求以将各个线群存储在存储器中,并且处理各个消费者的一个或多个请求以从存储器提取和提供所述各个线群,所述线缓冲器单元具有可编程存储空间,所述可编程存储空间的信息确立线群尺寸,使得用于不同图像尺寸的不同线群尺寸能够存储在存储器中。
12.如权利要求11所述的机器可读存储介质,其中,所述线群包括控制逻辑电路,用于:
在线缓冲器接口单元为其最后一个消费者服务后,使所述线缓冲器接口单元进入空闲池;
然后,将所述线缓冲器接口单元分配给另一线群。
13.如权利要求11所述的机器可读存储介质,其中,所述线缓冲器单元包括理解图像帧内的至少一个X,Y位置的表达的电路。
14.如权利要求11所述的机器可读存储介质,其中,所述线缓冲器接口单元中的至少一个包括理解图像帧内的至少一个X,Y位置的表达,并且将所述表达转换为线性存储器地址的电路。
15.如权利要求11所述的机器可读存储介质,其中,所述线缓冲器单元中的至少一个支持全线群模式。
16.如权利要求11所述的机器可读存储介质,其中,所述线缓冲器单元中的至少一个支持虚拟高线群模式。
17.如权利要求11所述的机器可读存储介质,其中,所述线缓冲器接口单元中的至少一个被耦合以从配置寄存器空间接收下述信息的任何一个:
a)图像信息中的通道数;
b)线群的消费者数量;
c)全线群单位宽度;
d)全线群高度;
e)线群的较小部分的大小。
18.如权利要求11所述的机器可读存储介质,其中,所述线缓冲器单元包括存储线群的基地址的寄存器空间。
19.如权利要求11所述的机器可读存储介质,其中,所述线缓冲器单元包括基于从软件开发环境得出的X,Y坐标信息,确定线群的基地址的电路。
20.如权利要求11所述的机器可读存储介质,其中,所述线缓冲器单元包括理解待提取的下一图像数据位于所述存储器中何处的指针电路。
21.一种计算设备,包括:
多个处理内核;
图像处理器,所述图像处理器包括由多个线缓冲器接口单元构成的线缓冲器单元,每个线缓冲器接口单元处理各个生产者的一个或多个请求以将各个线群存储在存储器中,并且处理各个消费者的一个或多个请求以从存储器提取和提供所述各个线群,所述线缓冲器单元具有可编程存储空间,所述可编程存储空间的信息确立线群尺寸,使得用于不同图像尺寸的不同线群尺寸能够存储在存储器中。
22.如权利要求21所述的计算系统,其中,所述线群包括控制逻辑电路,用于:
在线缓冲器接口单元为其最后一个消费者服务后,使所述线缓冲器接口单元进入空闲池;
然后,将所述线缓冲器接口单元分配给另一线群。
23.如权利要求21所述的计算系统,其中,所述线缓冲器单元包括理解图像帧内的至少一个X,Y位置的表达的电路。
24.如权利要求21所述的计算系统,其中,所述线缓冲器接口单元中的至少一个包括理解图像帧内的至少一个X,Y位置的表达,并且将所述表达转换为线性存储器地址的电路。
25.如权利要求21所述的计算系统,其中,所述线缓冲器单元中的至少一个支持全线群模式。
26.如权利要求21所述的计算系统,其中,所述线缓冲器接口单元中的至少一个被耦合以从配置寄存器空间接收下述信息的任何一个:
a)图像信息中的通道数;
b)线群的消费者数量;
c)全线群单位宽度;
d)全线群高度;
e)线群的较小部分的大小。
27.如权利要求22所述的计算系统,其中,所述线缓冲器单元包括理解待提取的下一图像数据位于所述存储器中何处的指针电路。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/694,712 US9756268B2 (en) | 2015-04-23 | 2015-04-23 | Line buffer unit for image processor |
US14/694,712 | 2015-04-23 | ||
PCT/US2016/025385 WO2016171869A1 (en) | 2015-04-23 | 2016-03-31 | Line buffer unit for image processor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107533751A true CN107533751A (zh) | 2018-01-02 |
CN107533751B CN107533751B (zh) | 2020-10-27 |
Family
ID=55754441
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680019839.7A Active CN107533751B (zh) | 2015-04-23 | 2016-03-31 | 用于图像处理器的线缓冲器单元 |
Country Status (7)
Country | Link |
---|---|
US (4) | US9756268B2 (zh) |
EP (1) | EP3286723B1 (zh) |
JP (2) | JP6408717B2 (zh) |
KR (1) | KR102013404B1 (zh) |
CN (1) | CN107533751B (zh) |
DE (1) | DE112016001866T5 (zh) |
WO (1) | WO2016171869A1 (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9749548B2 (en) | 2015-01-22 | 2017-08-29 | Google Inc. | Virtual linebuffers for image signal processors |
US9756268B2 (en) | 2015-04-23 | 2017-09-05 | Google Inc. | Line buffer unit for image processor |
GB2539461B (en) * | 2015-06-16 | 2020-01-08 | Canon Kk | Image data encapsulation |
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 |
US10699362B2 (en) * | 2016-06-23 | 2020-06-30 | Intel Corporation | Divergent control flow for fused EUs |
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 |
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 |
US20180005059A1 (en) | 2016-07-01 | 2018-01-04 | Google Inc. | Statistics Operations On Two Dimensional Image Processor |
US10467056B2 (en) * | 2017-05-12 | 2019-11-05 | Google Llc | Configuration of application software on multi-core image processor |
US10489199B2 (en) * | 2017-05-12 | 2019-11-26 | Google Llc | Program code transformations to improve image processor runtime efficiency |
US10430919B2 (en) * | 2017-05-12 | 2019-10-01 | Google Llc | Determination of per line buffer unit memory allocation |
US10503689B2 (en) * | 2017-05-15 | 2019-12-10 | Google Llc | Image processor I/O unit |
US10489878B2 (en) * | 2017-05-15 | 2019-11-26 | Google Llc | Configurable and programmable image processor unit |
US10657617B1 (en) * | 2018-11-26 | 2020-05-19 | GM Global Technology Operations LLC | Method and apparatus for memory access management for data processing |
US11221976B2 (en) * | 2019-01-25 | 2022-01-11 | Microchip Technology Incorporated | Allocation of buffer interfaces for moving data, and related systems, methods and devices |
CN111506520B (zh) * | 2020-07-01 | 2020-09-22 | 腾讯科技(深圳)有限公司 | 一种地址生成的方法、相关装置以及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030222860A1 (en) * | 2002-02-28 | 2003-12-04 | Shinichi Yamaura | Image processing circuit, combined image processing circuit, and image forming apparatus |
US20080111823A1 (en) * | 2006-11-13 | 2008-05-15 | Faraday Technology Corp. | Graphics processing system |
TW201349852A (zh) * | 2012-05-23 | 2013-12-01 | Mstar Semiconductor Inc | 影像處理裝置與影像處理方法 |
Family Cites Families (89)
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 | 旭光学工業株式会社 | フイルタリング装置 |
DE3851005T2 (de) | 1987-06-01 | 1995-04-20 | Applied Intelligent Syst Inc | Paralleles Nachbarverarbeitungssystem und -Verfahren. |
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 |
DE59607143D1 (de) | 1996-01-15 | 2001-07-26 | Infineon Technologies Ag | Prozessor zur bildverarbeitung |
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 |
JP3593439B2 (ja) | 1997-06-09 | 2004-11-24 | 株式会社日立製作所 | 画像処理装置 |
US6148111A (en) * | 1998-04-27 | 2000-11-14 | The United States Of America As Represented By The Secretary Of The Navy | Parallel digital image compression system for exploiting zerotree redundancies in wavelet coefficients |
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 |
JP2000251065A (ja) | 1999-03-02 | 2000-09-14 | Fuji Xerox Co Ltd | 画像処理装置 |
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 |
JP3559021B2 (ja) * | 2001-10-31 | 2004-08-25 | 株式会社リコー | データ変換装置,画像処理装置およびデータ変換方法 |
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 |
US9170812B2 (en) | 2002-03-21 | 2015-10-27 | Pact Xpp Technologies Ag | Data processing system having integrated pipelined array data processor |
WO2003088033A1 (en) | 2002-04-09 | 2003-10-23 | University Of Rochester | Multiplier-based processor-in-memory architectures for image and graphics processing |
AU2003286131A1 (en) | 2002-08-07 | 2004-03-19 | Pact Xpp Technologies Ag | Method and device for processing data |
GB2395299B (en) * | 2002-09-17 | 2006-06-21 | Micron Technology Inc | Control of processing elements in parallel processors |
US7225301B2 (en) | 2002-11-22 | 2007-05-29 | Quicksilver Technologies | External memory controller node |
JP2004215242A (ja) * | 2002-12-16 | 2004-07-29 | Ricoh Co Ltd | データ処理装置,画像処理装置および画像形成装置 |
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 |
JP4219887B2 (ja) * | 2004-12-28 | 2009-02-04 | 富士通マイクロエレクトロニクス株式会社 | 画像処理装置及び画像処理方法 |
US7581851B2 (en) | 2005-01-03 | 2009-09-01 | Jessica Wang | Scented lighting devices and systems, and methods for making the same |
JP6059413B2 (ja) | 2005-04-28 | 2017-01-11 | クアルコム,インコーポレイテッド | 再構成可能命令セル・アレイ |
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 | 画像データ処理装置 |
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 |
US7834873B2 (en) | 2006-08-25 | 2010-11-16 | Intel Corporation | Display processing line buffers incorporating pipeline overlap |
EP1927949A1 (en) | 2006-12-01 | 2008-06-04 | Thomson Licensing | Array of processing elements with local registers |
US8321849B2 (en) | 2007-01-26 | 2012-11-27 | Nvidia Corporation | Virtual architecture and instruction set for parallel thread computing |
JP2008192038A (ja) | 2007-02-07 | 2008-08-21 | Mitsubishi Electric Corp | 画像前処理装置 |
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 | 面発光型半導体レーザの駆動方法および光伝送モジュール |
US8599208B2 (en) * | 2007-08-15 | 2013-12-03 | Nvidia Corporation | Shared readable and writeable global values in a graphics processor unit pipeline |
WO2009031302A1 (ja) | 2007-09-05 | 2009-03-12 | Tohoku University | 固体撮像素子及びその駆動方法 |
JP4917561B2 (ja) | 2008-03-18 | 2012-04-18 | 株式会社リコー | 画像処理装置 |
EP2289001B1 (en) | 2008-05-30 | 2018-07-25 | Advanced Micro Devices, Inc. | Local and global data share |
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 |
KR101572879B1 (ko) | 2009-04-29 | 2015-12-01 | 삼성전자주식회사 | 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법 |
US8626810B2 (en) | 2009-05-15 | 2014-01-07 | Texas Instruments Incorporated | Method and system for finite impulse response (FIR) digital filtering |
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 |
JP5185242B2 (ja) | 2009-12-04 | 2013-04-17 | 株式会社東芝 | コンパイル装置 |
US8595428B2 (en) | 2009-12-22 | 2013-11-26 | Intel Corporation | Memory controller functionalities to support data swizzling |
US8896668B2 (en) * | 2010-04-05 | 2014-11-25 | Qualcomm Incorporated | Combining data from multiple image sensors |
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 |
WO2012105174A1 (ja) | 2011-01-31 | 2012-08-09 | パナソニック株式会社 | プログラム生成装置、プログラム生成方法、プロセッサ装置及びマルチプロセッサシステム |
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 |
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 |
US8953882B2 (en) | 2012-05-31 | 2015-02-10 | Apple Inc. | Systems and methods for determining noise statistics of image data |
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 |
US9058673B2 (en) | 2013-03-15 | 2015-06-16 | Oracle International Corporation | Image mosaicking using a virtual grid |
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 |
US9756268B2 (en) | 2015-04-23 | 2017-09-05 | Google Inc. | Line buffer unit for image processor |
-
2015
- 2015-04-23 US US14/694,712 patent/US9756268B2/en active Active
-
2016
- 2016-03-31 DE DE112016001866.5T patent/DE112016001866T5/de active Pending
- 2016-03-31 WO PCT/US2016/025385 patent/WO2016171869A1/en active Application Filing
- 2016-03-31 KR KR1020177028003A patent/KR102013404B1/ko active IP Right Grant
- 2016-03-31 EP EP16716763.4A patent/EP3286723B1/en active Active
- 2016-03-31 CN CN201680019839.7A patent/CN107533751B/zh active Active
- 2016-03-31 JP JP2017550919A patent/JP6408717B2/ja active Active
-
2017
- 2017-05-17 US US15/598,027 patent/US10321077B2/en active Active
-
2018
- 2018-09-20 JP JP2018176186A patent/JP6793162B2/ja active Active
-
2019
- 2019-05-03 US US16/402,310 patent/US10638073B2/en active Active
-
2020
- 2020-04-27 US US16/859,308 patent/US11190718B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030222860A1 (en) * | 2002-02-28 | 2003-12-04 | Shinichi Yamaura | Image processing circuit, combined image processing circuit, and image forming apparatus |
US20080111823A1 (en) * | 2006-11-13 | 2008-05-15 | Faraday Technology Corp. | Graphics processing system |
TW201349852A (zh) * | 2012-05-23 | 2013-12-01 | Mstar Semiconductor Inc | 影像處理裝置與影像處理方法 |
Also Published As
Publication number | Publication date |
---|---|
US9756268B2 (en) | 2017-09-05 |
JP2019053736A (ja) | 2019-04-04 |
US11190718B2 (en) | 2021-11-30 |
EP3286723B1 (en) | 2020-10-07 |
US10321077B2 (en) | 2019-06-11 |
US20170257585A1 (en) | 2017-09-07 |
US10638073B2 (en) | 2020-04-28 |
WO2016171869A1 (en) | 2016-10-27 |
KR102013404B1 (ko) | 2019-08-22 |
US20190327433A1 (en) | 2019-10-24 |
JP6408717B2 (ja) | 2018-10-17 |
DE112016001866T5 (de) | 2018-01-25 |
US20160316157A1 (en) | 2016-10-27 |
CN107533751B (zh) | 2020-10-27 |
KR20170125392A (ko) | 2017-11-14 |
JP6793162B2 (ja) | 2020-12-02 |
JP2018513476A (ja) | 2018-05-24 |
US20200275040A1 (en) | 2020-08-27 |
EP3286723A1 (en) | 2018-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107533751A (zh) | 用于图像处理器的线缓冲器单元 | |
JP7202987B2 (ja) | 高性能で、電力効率の良い、プログラマブルな画像処理のためのアーキテクチャ | |
US9785423B2 (en) | Compiler for translating between a virtual image processor instruction set architecture (ISA) and target hardware having a two-dimensional shift array structure | |
US10095479B2 (en) | Virtual image processor instruction set architecture (ISA) and memory model and exemplary target hardware having a two-dimensional shift array structure | |
CN108541321A (zh) | 将程序代码映射到高性能、高功效的可编程图像处理硬件平台的编译技术 | |
CN107438861A (zh) | 用于图像生成器的数据片生成器 | |
US10733956B2 (en) | Macro I/O unit for image processor | |
CN110192220A (zh) | 提高图像处理器运行时效率的程序代码转换 | |
CN110300944A (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 | ||
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 |