CN110300944A - 具有可配置数目的活动核心和支持内部网络的图像处理器 - Google Patents

具有可配置数目的活动核心和支持内部网络的图像处理器 Download PDF

Info

Publication number
CN110300944A
CN110300944A CN201880011667.8A CN201880011667A CN110300944A CN 110300944 A CN110300944 A CN 110300944A CN 201880011667 A CN201880011667 A CN 201880011667A CN 110300944 A CN110300944 A CN 110300944A
Authority
CN
China
Prior art keywords
processor
core
configuration
object code
code
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
Application number
CN201880011667.8A
Other languages
English (en)
Other versions
CN110300944B (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 CN110300944A publication Critical patent/CN110300944A/zh
Application granted granted Critical
Publication of CN110300944B publication Critical patent/CN110300944B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17375One dimensional, e.g. linear array, ring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8023Two dimensional arrays, e.g. mesh, torus
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

描述了一种方法。该方法包括配置目标代码的第一实例以在处理器上执行。该处理器具有多个核心和内部网络。所述内部网络以第一配置来配置,该第一配置使得第一数目的核心通信地耦合。该方法还包括配置目标代码的第二实例以在处理器的第二实例上执行。所述处理器的所述第二实例的相应内部网络以第二配置来配置,该第二配置使得不同数目的核心通信地耦合,其中,所述处理器和所述处理器的所述第二实例上的相同定位的核心对于所述第一配置和所述第二配置具有相同的网络地址。还描述了一种处理器,具有被设计成实现上述方法的内部网络。

Description

具有可配置数目的活动核心和支持内部网络的图像处理器
技术领域
本发明的领域大体涉及计算科学,更具体涉及具有可配置数目的活动核心和支持内部网络的图像处理器。
背景技术
图像处理通常涉及处理组织成阵列的像素值。这里,在空间上组织的二维阵列捕获图像的二维性质(附加的维度可以包括时间(例如二维图像序列)和数据类型(例如颜色))。在通常情况下,阵列排列的像素值是由相机提供,该相机生成静止图像或是帧序列以捕获运动的图像。传统的图像处理器通常落在两个极端之一上。
第一极端将图像处理任务执行为在通用处理器或类通用处理器(例如,具有向量指令增强的通用处理器)上执行的软件程序。尽管第一极端通常提供了高度多功能的应用软件开发平台,但其使用更细粒度的数据结构结合相关联的开销(例如指令获取与解码、片上与片外数据的处置、预测执行)最终导致在程序代码的执行期间,每数据单元消耗更大量的能量。
第二相反的极端将固定功能硬连线电路应用于更大的数据单元。使用直接应用于定制设计电路的更大的(相对于更细粒度的)数据单元大大地降低了每数据单元的能耗。然而,使用定制设计的固定功能电路通常导致了该处理器能够执行有限任务集。因此,第二极端中缺乏(与第一极端相关联的)广泛通用的编程环境。
提供高度多功能的应用软件开发机会与每数据单元的改进的能效相组合的技术平台仍然是期望但缺失的解决方案。
发明内容
描述了一种方法。该方法包括配置目标代码的第一实例以在处理器上执行。该处理器具有多个核心和内部网络。所述内部网络以第一配置来配置,该第一配置使得第一数目的核心通信地耦合。该方法还包括配置目标代码的第二实例以在处理器的第二实例上执行。所述处理器的所述第二实例的相应内部网络以第二配置来配置,该第二配置使得不同数目的核心通信地耦合,其中,所述处理器和所述处理器的所述第二实例上的相同定位的核心对于所述第一配置和所述第二配置具有相同的网络地址。还描述了一种处理器,具有被设计成实现上述方法的内部网络。
附图说明
以下描述和附图被用来图示本发明的实施例。在附图中:
图1示出了模版处理器架构的高级视图;
图2示出了图像处理器架构的更详细视图;
图3示出了图像处理器架构的更详细视图;
图4示出了可以由图像处理器执行的应用软件程序;
图5示出了具有网络环的图3的图像处理器,该网络环被配置为支持可配置数目的活动核心;
图6a、6b、6c和6d示出了配置有不同数目的活动核心的图5的图像处理器;
图7示出了处理器配置方法;
图8a、8b、8c、8d和8e图示了将图像数据解析成线组,将线组解析成片(sheet)以及在利用重叠模版在片上执行的操作;
图9a示出模版处理器的实施例;
图9b示出了模版处理器的指令字的实施例;
图10示出了模版处理器内的数据计算单元的实施例;
图11a、11b、11c、11d、11e、11f、11g、11h、11i、11j和11k图示了使用二维移位阵列和执行通道阵列利用重叠模版来确定一对相邻输出像素值的示例;
图12示出了用于集成执行通道阵列和二维移位阵列的小单元(a unit cell)的实施例;
图13示出了示例性计算系统。
具体实施方式
1.0独特图像处理器架构
如本领域所公知的,用于执行程序代码的基本电路结构包括执行级(executionstage)和寄存器空间。执行级包含用于执行指令的执行单元。待执行的指令的输入操作数被从寄存器空间提供给执行级。将由指令的执行级执行生成的结果写回到寄存器空间。
在传统处理器上执行软件线程需要穿过执行级顺序执行一系列指令。最常见的是,在由单个输入操作数集生成单个结果的意义上,操作为“标量”。然而,在“向量”处理器的情况下,执行级执行指令将从输入操作数的向量生成结果的向量。
图1示出了独特图像处理器架构100的高级视图,其包括耦合到二维移位寄存器阵列102的执行通道101的阵列。在此,可以将执行通道阵列中的每个执行通道看作离散执行级,其包含执行处理器100支持的指令集所需的执行单元。在各个实施例中,每个执行通道接收相同指令以在同一机器周期中执行,使得处理器操作为二维单指令多数据(SIMD)处理器。
每个执行通道在二维移位寄存器阵列102内的对应位置中具有其自己的专用寄存器空间。例如,角部执行通道103在角部移位寄存器位置104中具有其自己的专用寄存器空间,角部执行通道105在角部移位寄存器位置106中具有其自己的专用寄存器空间等等。
另外,移位寄存器阵列102能够移位其内容,使得每个执行通道能够从其自己的寄存器空间对在先前的机器周期期间驻留在另一执行通道的寄存器空间中的值直接操作。例如,a+1水平移位使每个执行通道的寄存器空间接收来自其最左邻居的寄存器空间的值。由于沿水平轴在左右两方向上移位值并且沿垂直轴在上下两方向上移位值的能力,处理器能够有效率地处理图像数据的模版(stencil)。
在此,如本领域所知,模版是用作基本数据单元的图像表面区的切片(slice)。例如,输出图像中的特定像素位置的新值可以被计算为输入图像的特定像素位置在其中居中的区中的像素值的平均值。例如,如果模版具有3像素乘3像素的尺寸,则特定像素位置可以对应于3×3像素阵列的中间像素,并且可以在3×3像素阵列内的所有九个像素上计算平均值。
根据图1的处理器100的各个操作实施例,执行通道阵列101中的每个执行通道负责计算输出图像中的特定位置的像素值。因此,继续上文提及的3×3模版取平均示例,在移位寄存器内的输入像素数据的初始加载和八个移位操作的协调移位序列之后,执行通道阵列中的每个执行通道将已在其本地寄存器空间中接收计算其相应像素位置的平均值所需的所有九个像素值。也就是说,处理器能够同时处理以例如相邻输出图像像素位置为中心的多个重叠模版。因为图1的处理器架构特别擅长在图像模版上处理,所以它也可以被称为模版处理器。
图2示出用于图像处理器的架构200的实施例,该图像处理器具有多个模版处理器202_1至202_N。如图2中所示,架构200包括多个线缓冲器单元201_1到201_M,多个线缓冲器单元201_1到201_M通过网络204(例如芯片上网络(NOC),包括芯片上交换网络、芯片上环网,或者其他类型的网络)互连到多个模版处理器单元202_1至202_N以及对应的片生成器单元203_1至203_N。在一个实施例中,任何线缓冲器单元201_1到201_M可以通过网络204连接到任何片生成器203_1至203_N以及对应的模版处理器202_1至202_N。
程序代码被编译并被加载到对应的模版处理器202上,以执行先前由软件开发者定义的图像处理操作(程序代码例如取决于设计与实施方式还可以被加载到模版处理器的相关联的片生成器203上)。这样,每个模版处理器202_1到202_N可以更一般地表征为处理核心、处理器核心、核心等,并且整个图像处理器可以被表征为多核心图像处理器。在至少一些实例中,可以通过将用于第一流水线(pipeline)级的第一内核程序加载到第一模版处理器202_1中、将用于第二流水线级的第二内核程序加载到第二模版处理器202_2中等来实现图像处理流水线,其中,第一内核执行流水线的第一级的功能,第二内核执行流水线的第二级的功能等,并且安装附加的控制流方法以将输出图像数据从流水线的一个级传递到流水线的下一级。
在其它配置中,图像处理器可以被实现为具有操作相同内核程序代码的两个或更多个模版处理器202_1、202_2的并行机器。例如,可以通过跨多个模版处理器散布帧来处理高密度和高数据速率的图像数据流,所述多个模版处理器中的每一个执行相同的功能。
在其它配置中,基本上内核的任何有向无环图(DAG)可以通过下述方式来加载到硬件处理器上:利用相应的模版处理器的相应的程序代码内核来配置相应的模版处理器并且将适当的控制流挂钩(hook)配置到硬件中以将输出图像从DAG设计中的一个内核引导到下一个内核的输入。
作为一般流程,图像数据的帧由宏I/O单元205接收,并且以逐帧方式传递到线缓冲器单元201中的一个或多个。特定线缓冲器单元将其图像数据的帧解析为图像数据的更小区域,称为“线组(line group)”,然后通过网络204将线组传递到特定的片生成器。完整的或“完全的”单个线组可以例如由帧的多个毗连的完整行或列的数据组成(为简单起见,本说明书将主要指代毗连的行)。片生成器进一步将图像数据的线组解析成图像数据的更小区域,称为“片”,并且将该片呈现给其对应的模版处理器。
在图像处理流水线或DAG流具有单个输入的情况下,通常,输入帧被引导至同一线缓冲器单元201_1,线缓冲器单元201_1将图像数据解析成线组,并且将线组引导至片生成器203_1,片生成器203_1的对应的模版处理器202_1正在执行流水线/DAG中的第一内核的代码。当模版处理器202_1对其处理的线组完成操作时,片生成器203_1将输出线组发送到“下游”线缓冲器单元201_2(在一些用例中,输出线组可以被发送回先前已经发送该输入线组的同一线缓冲器单元201_1)。
然后,一个或多个“消费者”内核从下游线缓冲器单元201_2接收由第一模版处理器202_1生成的图像数据,该一个或多个“消费者”内核表示在其本身相应的其他片生成器和模版处理器(例如,片生成器203_2和模版处理器202_2)上执行的流水线/DAG中的下一级/操作。以这种方式,在第一模版处理器上操作的“生产者”内核将其输出数据转发到在第二模版处理器上操作的“消费者”内核,在第二模版处理器中,消费者内核在与整个流水线或DAG的设计一致的生产者内核之后执行下一任务集。
如上文参考图1所提到的,每个模版处理器202_1到202_N被设计为同时对图像数据的多个重叠模版进行操作。模版处理器的多个重叠模版和内部硬件处理能力有效地确定了片的大小。此外,如上所述,在模版处理器202_1到202_N的任何一个内,执行通道阵列一致地进行操作,从而同时处理由多个重叠模版覆盖的图像数据表面区。
另外,在各个实施例中,图像数据的片被模版处理器202的对应的(例如本地的)片生成器203加载到模版处理器的二维移位寄存器阵列中。使用片和二维移位寄存器阵列结构被认为通过下述方式有效地改善功耗:将大量数据移动到大量寄存器空间中,例如,作为单个加载操作,紧随其后是由执行通道阵列直接对数据执行的处理任务。此外,使用执行通道阵列和对应的寄存器阵列提供了易于可编程/可配置的不同模版大小。在下文中,在3.0节中进一步提供关于线缓冲器单元、片生成器和模版处理器的操作的更多细节。
图3示出了图2的图像处理器的特定硬件实现的更详细的实施例。如图3中所示,图2的网络204以环形拓扑304实现,环形拓扑304在线缓冲器单元301和片生成器/模版处理器核心302之间的每个交叉点处具有4×4网络节点314。为简单起见,图3仅标记驻留在线缓冲器单元301_4和片生成器/模版处理器核心302_4之间的网络节点314。
在此,片生成器/模版处理器核心302_1至302_8中的每一个应当被理解为包括模版处理器及其对应的片生成器。为简单起见,在下文中,将片生成器/模版处理器核心302_1至302_8中的每一个简称为模版处理器核心或核心。尽管在图3的特定实施例中图示了八个线缓冲器单元301_1至301_8和八个核心302_1至402_8,但是应当理解到,不同架构具有不同数目的线缓冲器单元和/或核心是可能的。除环形拓扑之外的网络拓扑也是可能的。
关于图3的图像处理器,环形网络304允许:1)I/O单元305将输入数据传递到任何线缓冲器单元301_1至301_8(或任何核心302_1至302_8);2)任何线缓冲器单元301_1至301_8将线组转发到任何核心302_1至302_8;3)任何核心302_1至302_8将其输出数据传递给任何线缓冲单元301_1至301_8;以及4)任何线缓冲器单元301_1至301_8将图像处理器输出数据传递到I/O单元305。这样,许多不同的软件内核加载选项和内部网络配置是可能的。也就是说,理论上,对于由将在处理器的各个核心302上执行的多个内核组成的任何软件应用,可以将任何内核加载到任何核心上,并且可以将任何线缓冲器单元配置为向任何核心输入数据的源/从任何核心的输出数据的宿。
图4示出了可以被加载到图3的图像处理器上的示例性应用软件程序或其部分。如图4所示,可以期望程序代码处理输入图像数据401的一个或多个帧以对输入图像数据401实现一些整体变换。通过程序代码402的一个或多个内核的操作来实现该变换,该程序代码402的一个或多个内核以由应用软件开发者串接设计(articulate)的编排序列对输入图像数据进行操作。
在图4的示例中,通过首先利用第一内核K1处理每个输入图像来实现整体变换。然后由内核K2对由内核K1产生的输出图像操作。然后由内核K3_1或K3_2对由内核K2产生的每个输出图像操作。接着由内核K4对由内核K3_1/K3_2产生的输出图像操作。在图3的特定示例中,内核K3_1和K3_2可以是例如执行不同图像处理操作的不同内核(例如,内核K3_1对第一特定类型的输入图像进行操作而内核K3_2对第二、不同类型的输入图像进行操作)。
为简单起见,仅示出了四个内核K1至K4。参考图3的图像处理器硬件架构实施例,注意,在每个内核在不同的模版处理器上操作的基本配置中,可以想象,在处理器的所有核心302具有对应的内核之前,四个更多的内核可以自内核K4流动(图4的四个内核流仅利用图3的处理器核心中的一半)。
2.0具有可配置数目的核心以及支持内部网络的图像处理器
图5示出了图3的图像处理器的实施例500,其具有环形网络实现以及指派给网络环上的每个节点的特定地址的更详细视图。如图5中所示,环形网络包括复用器对506_1、506_2和506_3,以实现不同数目的处理器核心502_1至502_8。在此,图像处理器500可以包括配置寄存器空间(图5中未示出),其例如确定复用器的通路选择值,以便实行或以其他方式实现多个不同网络配置中的任何特定网络配置(诸如下文论述的任何/所有配置)。如图5中所示,如果选择复用器对的A通路,则环继续前进以连接下一对处理器核心。相反,如果选择复用器对的B通路,则环“短路”以便切断下一对处理器核心。
图6a到6d示出了对于图5的图像处理器可能的不同环形网络和多个活动处理器核心配置。
图6a对应于已经选择复用器对506_1的B通路的配置,其有效地形成节点1(其对应于处理核心502_1在环上的位置)与节点2(其对应于处理核心502_2在环上的位置)之间的直接逻辑连接。如图5和6a中所示,选择复用器对506_1的B通路有效地切断了环形网络中的处理核心502_3、502_5、502_7、502_8、502_6和502_4。这样,环形网络仅耦合I/O单元505以及处理核心502_1和502_2。例如,如果将在图像处理器500上执行的应用软件程序仅包括一个或两个内核,则可以选择该特定配置,在这种情况下,激活不超过两个处理核心(核心502_1和核心502_2)。可以使其他核心502_3、502_5、502_7、502_8、502_6和502_4例如处于非活动低功率状态以降低图像处理器的总功耗。
图6b对应于已经选择了复用器对506_1的A通路并且已经选择了复用器对506_2的B通路的配置。与图6a的配置相比,该特定复用器配置扩展了环,使得环不仅耦合核心502_1和502_2,而且还耦合核心502_3和502_4。在此,在节点3(对应于处理核心502_3在环上的位置)和节点4(对应于处理核心502_4在环上的位置)之间形成直接逻辑连接。如图5和6b中所示,选择复用器对506_1的A通路和复用器对506_2的B通路有效地切断了来自环形网络的处理核心502_5、502_7、502_8和502_6。这样,环形网络仅耦合I/O单元505以及处理核心502_1、502_2、502_3和502_4。
例如,如果将在图像处理器500上执行的应用软件程序仅包括三个或四个内核,则可以选择该特定配置,在这种情况下,激活不超过四个处理核心(核心502_1、502_2、502_3和502_4)。可以使其他核心502_5、502_7、502_8和502_6处于例如非活动低功率状态以降低图像处理器的总功耗。
图6c对应于已经选择了复用器对506_1和506_2的A通路并且已经选择了复用器对506_3的B通路的配置。与图6b的配置相比,该特定复用器配置扩展了环,使得环不仅耦合核心502_1、502_2、502_3以及502_4,而且还耦合核心502_5和502_6。在此,在节点5(对应于处理核心502_5在环上的位置)和节点6(对应于处理核心502_6在环上的位置)之间形成直接逻辑连接。如图5和6c中所示,选择复用器对506_1和506_2的A通路和复用器对506_3的B通路有效地切断了来自环形网络的处理核心502_7和502_8。这样,环形网络耦合I/O单元505以及处理核心502_1、502_2、502_3、502_4、502_5和502_6。
例如,如果将在图像处理器500上执行的应用软件程序仅包括五个或六个内核,则可以选择该特定配置,在这种情况下,激活不超过六个处理核心(核心502_1、502_2、502_3、502_4、502_5和502_6)。可以使其他核心502_7和502_8处于例如非活动低功率状态以降低图像处理器的总功耗。
图6d对应于已经选择了复用器对506_1、506_2和506_3的A通路的配置。与图6b的配置相比,该特定复用器配置扩展了环,使得环耦合I/O单元505和所有核心502_1、502_2、502_3、502_4、502_5、502_6、502_7和502_8。在此,节点7(对应于处理核心502_7在环上的位置)与节点8(对应于处理核心502_8在环上的位置)之间的硬连线连接形成环的右边缘。例如,如果将在图像处理器500上执行的应用软件程序包括七个或八个内核,则可以选择该特定配置。
图5的处理器的网络环设计的另一相关特征是对不同网络节点的地址值指派的独特布置。在此,简要地重新参考图3,注意图3的处理器300按照惯例环绕环对节点连续地进行编号。然而,图5的环形网络上的网络地址指派不同于图3的传统方式,使得任何活动网络配置上的数字地址保持连续且连贯,而不管在环上有多少个核心被配置为活动。
也就是说,如果选择图6a的配置,则环上的活动数字地址包括地址0、1和2。相反,如果选择图6b的配置,则环上的活动数字地址包括地址0、1、2、3和4。此外,如果选择图6c的配置,则环上的活动数字地址包括地址0、1、2、3、4、5和6。最后,如果选择图6d的配置,则环上的有效数字地址包括地址0、1、2、3、4、5、6、7和8。
以这种方式排列网络地址可以帮助避免将应用软件源代码重新编译成多个不同的最低级目标代码(也称为二进制代码)实例,即使跨具有不同配置数目的活动处理器核心和对应不同的底层环形网络配置的不同软件应用重用这些最低级代码。在此,在各个实施例中,利用理论上可以映射到例如实际硬件处理器内的任何核心的逻辑地址,在应用软件程序的源代码层级处标识作为通信的目的地的内核。然而,当源代码被编译成更低级目标代码或二进制代码时,逻辑地址被转换成处理器上的特定硬件核心的标识(即,环形网络上的特定地址之一)。
例如,考虑使用两个内核K1和K2的应用软件程序,其中,I/O单元将输入数据发送到内核K1,并且内核K1将其输出数据发送到内核K2。在将源代码编译成更低级目标代码之后,假设指派内核K1来专门在核心502_1上运行,并且指派内核K2来专门在核心502_2上运行。这样,任何目标代码通信将包括用于被发送到内核K1的通信的网络地址1和被发送到内核K2的通信的网络地址2。
由于环绕环的网络节点地址指派的独特布置,具有最低级程序代码的该特定实例不仅可在图6a的两核心处理器配置上操作,而且还可在图6b、6c和6d的其他处理器核心配置中的每一个上操作。因此,如果应用软件程序的目标是在图像处理器配置6a、6b、6d、6e中的不同的一个上运行,则包括内核K1和K2的应用软件程序的源代码不需要被重新编译成不同的目标代码实例。没有对重新编译的需要在应用软件开发和/或构造方面提供了更高效率。
也就是说,通过将目标代码的实例用作更大的目标代码应用中的可插入组件,更容易实现目标代码层级的程序代码重用和/或可以在目标代码层级完成应用软件的构造。考虑具有内核K1和K2的上述应用软件程序执行操作OP1的示例,该操作OP1具有重要的用途,不仅用作独立程序而且还用作前端操作,该前端操作在例如具有其自身独特处理任务的一定数目的其他操作前执行。为简单起见,假设存在三个这样的其他操作:1)利用两个内核(例如,K3和K4)实现的OP2;2)利用三个内核(例如,K3、K4和K5)实现的OP3;以及3)利用五个内核(例如,K3、K4、K5、K6和K7)实现的OP4。
在此,考虑应用软件开发环境,其中,OP1前端操作被编译为目标代码实例,其中,内核K2将其输出数据发送到网络节点3处的核心502_3(例如,而不是网络节点0处的I/O单元505)。另外,假设后续操作OP2、OP3和OP4被编译成目标代码实例,使得:1)OP2、OP3和OP4的第一(输入,K3)内核和第二(K4)内核分别在核心502_3和502_4上操作;2)OP3和OP4的第三(K5)内核在核心502_5上操作;以及3)OP4的第四(K6)和第五(K7)内核分别在核心502_6和502_7上操作。
在这种情况下,编译的前端OP1实例可以在目标代码层级分别与任何编译的OP2、OP3和OP3目标代码实例“按原样”组合,以创建三个单独的可立即执行的应用软件程序:1)对应于OP1+OP2的第一应用软件程序;2)对应于OP1+OP3的第二应用软件程序;3)对应于OP1+OP4的第三应用软件程序。
在此,不仅OP1的目标代码实例可单独地与OP2、OP3和OP4目标代码实例中的每一个组合以创建三个不同的目标代码层级应用,而且还注意到可以配置使用四个核心的第一应用软件程序(OP1+OP2)以在图6b的处理器配置中操作,可以配置使用五个核心的第二应用软件程序(OP1+OP3)在图6c的处理器配置中操作,以及可以配置使用七个核心的第三应用软件程序(OP1+OP4)在图6d的处理器配置中操作。
因此,不仅可以将OP1的目标代码实例与其他目标代码实例组合并且产生更大的工作目标代码层级应用,而且,即使导致不同应用的组合需要具有不同数目的活动硬件核心和对应不同的内部环形网络配置的不同处理器配置,也可以如此组合OP1的目标代码实例。也就是说,可以在目标代码层级完成程序代码构造,其与目标硬件处理器中的活动核心的配置/数目无关,即使处理器内的内部网络跨不同的处理器配置上是不同的。
此外,通过在目标代码层级使用抽象内核标识符,任何目标代码程序可以被容易地插入到更大的目标代码层级构造中并且被配置为在不同的处理器核心上执行。例如,假设如上文所论述编译的OP3的目标代码实例:1)利用输入变量=BASE标识其第一内核(由上文论述,K3);2)利用标识符=BASE+1标识其第二内核(由上文论述,K4);以及3)利用标识符=BASE+2标识其第三内核(由上文论述,K5)。在这种情况下,通过设置BASE=3,配置OP3目标代码以供与上文论述的第二(OP1+OP3)应用一起使用是简单直接的。
此外,简单通过设置BASE=1,也可以容易地实现将OP3目标代码的同样的实例重用于独立操作。通过网络环上的正确的内核到内核通信,后者将导致OP3的第一内核在核心502_1上执行而其第二核心在核心502_2上操作。因此,通过简单改变输入变量/配置信息(BASE),可以使目标代码层级的OP3的同样的实例容易地在图6c的处理器配置中操作(对于上文刚刚论述的第二应用(OP1+OP3),或操作为图6a的处理器配置中的独立应用。
这样,通过它们相对于彼此的网络地址偏移来识别目标级程序内的不同内核,目标级程序的同样的实例可以容易地映射到不同的处理器配置,因为即使处理器网络环上的节点数目随每个不同的处理器配置而改变,该环上的独特寻址模式也基本上保留了这些偏移的含义。因此,在许多情况下,一旦创建了程序的目标代码实例,它的同样的副本就可以对许多不同应用和对应的配置重用作“插件(plug-in)”,而不是对例如程序功能的每个新使用或不同的底层处理器配置,从同一源代码层级编译目标代码的新实例。
如果输入流源自的地址和/或输出流将被发送至的地址也被指定为目标代码层级处的相应的输入变量,则还增强了将目标代码实例插入到更大的目标代码构造中的能力。例如,再次使用OP3作为示例,当OP3用于上文论述的第二(OP1+OP3)应用并且BASE=3时,可以将标识OP3的输入数据来自何处的附加输入变量IN设置为IN=2(在核心502_2上执行的OP1的K2向OP3发送其用于OP1+OP3应用的输入数据)。可以通过设置为OUT=0的另一变量OUT指定标识OP3要将其输出信息发送至的目的地(当在OP1+OP3应用中使用时,OP3将其输出数据发送到I/O单元505)。如上所述,利用这些设置,通过以图6c的配置来设置的处理器,OP3的目标代码实例可以在OP1+OP2应用内操作。
为了对独立操作重用OP3目标代码的相同实例的副本,输入配置信息仅需要设置为IN=OUT=0且BASE=1。利用这种配置,OP3将从I/O单元505接收其输入数据,并且将其输出数据发送到I/O单元505。同样利用这种配置,OP3实例可以在图6a的处理器配置中操作。因此,OP3代码的同样的实例对于包括不同内部网络环配置的底层处理器配置基本上没有偏向。
因此,整个应用软件开发环境可以包括在源代码层级开发更小颗粒化的应用软件程序,其被编写以执行基本的、经常使用/重用的处理功能。更小颗粒化的源代码应用被编译成相应的目标代码实例。然后根据需要复制目标代码实例,并且与目标代码实例的其他副本组合,以形成更大、更综合的可执行目标代码层级应用。
如果存在具有不同数目的核心的不同硬件平台,则可以实现甚至更高的效率。在此,已经针对具有八个核心的单个硬件平台给出了上文关于图6a至6d的论述,其中,八个核心平台可以配置有两个、四个、六个或八个活动核心。再次,如上所示,例如,两内核目标代码层级程序(例如,OP1)可以在这些配置中的任何一个上操作,而不需要用于OP1程序的两个重新编译的新目标代码实例。
这种通用性甚至可以进一步扩展到例如包含下述的产品线:1)支持两个活动核心的单个配置的、仅由两个核心组成的第一硬件平台;2)支持两个活动核心的第一配置和四个活动核心的第二配置的、由四个核心组成的第二硬件平台;3)支持第一配置、第二配置和第三配置的、由六个核心组成的第三硬件平台,第一配置支持二个核心,第二配置支持四个核心,以及第三配置支持六个核心;4)支持上文参考图6a至6d所述的四个不同的配置的、由八个核心组成的第四硬件平台。
上面详细描述了:使用两个内核的目标代码层级程序OP1可以在上述4)的硬件平台的四个配置中的每一个上操作。然而,如果上述1)、2)和3)的硬件平台被设计为如上文所述来枚举网络节点,则可在上述硬件平台4)的所有四个配置上操作的目标代码层级程序OP1也可以在下述的任何一个上操作:i)上述3)的硬件平台的三个不同配置;ii)上述2)的硬件平台的两个不同配置;iii)上述1)的硬件平台。因此,代码重用能力不仅扩展到相同硬件平台的不同配置,而且扩展到不同硬件平台的不同配置。如上所述,代码可以是独立的或与其他目标代码层级程序组合。
图7示出了上述方法。如图7所示,该方法包括配置(701)目标代码的第一实例以在处理器上执行,该处理器具有多个核心和内部网络,该内部网络以第一配置来配置,该第一配置使得第一数目的核心能够通信地耦合。该方法还包括配置(702)目标代码的第二实例以在处理器的第二实例上执行,处理器的第二实例的相应内部网络以第二配置来配置,该第二配置使得不同数目的核心能够通信地耦合,其中,处理器和处理器的第二实例上的相同定位的核心对于第一配置和第二配置具有相同的网络地址。
值得注意的是,认识到上述想法不限于图5的特定处理器。在此,具有例如不同数目的处理核心或甚至不同类型的内部网络拓扑的其他处理器可以利用本文的教导。也就是说,其他网络拓扑(例如,交换连接网络)可以被设计为跨不同的内部网络配置保持其源/目的地节点的物理地址恒定和/或保持物理地址跨不同的内部网络配置连续和连贯。
3.0图像处理器实施方式实施例
图8a-e至图12提供关于上文详细描述的图像处理器和相关模版处理器的各个实施例的操作和设计的附加细节。回顾图2的论述,线缓冲器单元将线组馈送到模版处理器的相关联的片生成器,图5a至8e示出线缓冲器单元101的解析活动、片生成器单元103的更细粒度解析活动以及耦合到片生成器单元103的模版处理器702的模版处理活动的高级实施例。
图8a图示了图像数据801的输入帧的实施例。图8a还图示了三个重叠模版802(每个具有3像素×3像素的尺寸)的略图,模版处理器被设计为在该三个重叠模版802上进行操作。以纯黑色突出显示每个模版为其分别生成输出图像数据的输出像素。为简单起见,三个重叠模版802被图示为仅在垂直方向上重叠。应当认识到,实际上,模版处理器可以被设计成在垂直和水平方向上均具有重叠模版。
如图8a所示,由于模版处理器内的垂直重叠模版802,在帧内存在宽带(wideband)图像数据,单个模版处理器可以对其操作。如下文更详细地论述,在一个实施例中,模版处理器以从左到右的方式跨图像数据对其重叠模版内的数据进行处理(然后以从上到下的顺序对下一线集合重复)。因此,随着模版处理器继续操作,纯黑色输出像素块的数目将水平向右增长。如上所述,线缓冲器单元401负责解析传入帧的输入图像数据的线组,其足以供模版处理器在扩展数目的即将到来的周期进行操作。线组的示例性图示被示为阴影区域803。在一个实施例中,线缓冲器单元201可以理解向片生成器发送线组/从格生成器接收线组的不同动态。例如,根据被称为“全组(full group)”的一种模式,在线缓冲器单元和片生成器之间传递图像数据的完整全宽度线。根据被称为“基本高(virtually tall)”的第二模式,最初线组以全宽度行的子集被传递。然后剩余的行以更小(小于全宽度)的片段被顺序传递。
在输入图像数据的线组803已经由线缓冲器单元定义并传递到片生成器单元的情况下,片生成器单元进一步将线组解析为对模版处理器的硬件限制更精确适应的更细化的片。更具体地,如下文进一步更详细所述,在一个实施例中,每个模版处理器包含二维移位寄存器阵列。二维移位寄存器阵列实质上将图像数据移位到执行通道阵列“之下”,其中,移位的模式使得每个执行通道对其自身相应模版内的数据进行操作(即,每个执行通道在其自身信息模版上处理以生成该模版的输出)。在一个实施例中,片是“填充”或以其它方式加载到二维移位寄存器阵列中的输入图像数据的表面区。
如下文更详细所述,在各个实施例中,实际上存在可以在任何周期上移位的多层二维寄存器数据。为方便起见,本说明书中的大部分将简单地使用术语“二维移位寄存器”等来指代具有可被移位的一个或多个这样的二维寄存器数据层的结构。
因此,如图8b所示,片生成器从线组803解析初始片804,并且将其提供给模版处理器(在此,数据的片对应于通常由附图标记804标识的阴影区域)。如图8c和图8d所示,模版处理器通过以从左到右的方式在输入图像数据的片上有效地移动重叠模版802而对该片进行操作。如图8d所示,可以从片内的数据计算其输出值的像素的数目完竭(没有其它像素位置可以具有从片内的信息确定的输出值)。为简单起见,忽略了图像的边界区域。
如图8e所示,然后片生成器为模版处理器提供下一个片805以继续操作。注意,当模版开始在下一片上操作时,模版的初始位置是从第一片上的完竭点(如之前在图8d中所示)向右的下一个累进。使用新片805,随着模版处理器以与第一片的处理相同的方式对新片进行操作,模版将简单地继续向右移动。
注意,由于围绕输出像素位置的模版的边界区域,第一片804的数据和第二片805的数据之间存在一些重叠。所述重叠可以由片生成器重复传送重叠数据两次来简单地处置。在替选实施方式中,为了给模版处理器馈送下一片,片生成器可以继续仅向模版处理器发送新数据,并且模版处理器重复使用来自前一片的重叠数据。
图9示出了模版处理器架构900的实施例。如图9所示,模版处理器包括数据计算单元901、标量处理器902以及相关联的存储器903和I/O单元904。数据计算单元901包括执行通道阵列905、二维移位阵列结构906和与阵列的特定行或列相关联的单独的随机存取存储器907。
I/O单元904负责将从片生成器接收的“输入”数据片加载到数据计算单元901中,并且将来自模版处理器的“输出”数据片存储到片生成器中。在一个实施例中,将片数据加载到数据计算单元901中需要将所接收的片解析成图像数据的行/列,并且将图像数据的行/列加载到二维移位寄存器结构906或执行通道阵列的行/列的相应的随机存取存储器907中(在下文中将更详细描述)。如果片最初被加载到存储器907中,则执行通道阵列905内的各个执行通道在适当的时候可以将片数据从随机存取存储器907加载到二维移位寄存器结构906中(例如,作为紧接在对片的数据进行操作之前的加载指令)。在完成将数据片加载到寄存器结构906中(无论是直接来自片生成器还是来自存储器907)时,执行通道阵列905的执行通道对数据进行操作,并且最终将完成的数据作为片直接“写回”至片生成器或随机存取存储器907中。如果是后者,I/O单元904从随机存取存储器907取出数据以形成输出片,然后将其转发到片生成器。
标量处理器902包括程序控制器909,其从标量存储器903读取模版处理器的程序代码的指令,并且将指令发布到执行通道阵列905中的执行通道。在一个实施例中,单个相同指令广播到阵列905内的所有执行通道以实现来自数据计算单元901的类似于SIMD的行为。在一个实施例中,从标量存储器903读取并发布到执行通道阵列905的执行通道的指令的指令格式包括超长指令字(VLIW)类型格式,该格式包括每指令多于一个操作码。在进一步的实施例中,VLIW格式包括ALU操作码和存储器操作码(该存储器操作码指导用于特定执行通道或执行通道集合的存储器操作)两者,该ALU操作码指导由每个执行通道的ALU执行的数学函数(如下所述,在一个实施例中ALU操作码可以指定多于一个传统ALU运算)。
术语“执行通道”是指能够执行指令的一个或多个执行单元的集合(例如,可以执行指令的逻辑电路)。然而,在各个实施例中,执行通道可以包括比仅执行单元范围更大的更多类似处理器的功能。例如,除一个或多个执行单元之外,执行通道还可包括解码所接收的指令的逻辑电路,或者在更多类似于MIMD设计的情况下,包括获取和解码指令的逻辑电路。关于类似于MIMD方法,尽管本文已大体上描述了集中式程序控制方法,但是在各个替选实施例中,可以实现更分布式的方法(例如,包括在阵列905的每个执行通道内的程序代码和程序控制器)。
执行通道阵列905、程序控制器909和二维移位寄存器结构906的组合为广泛的可编程功能提供了广泛的可适应/可配置的硬件平台。例如,考虑到各个执行通道能够执行各种功能并且能够容易地访问接近任何输出阵列位置的输入图像数据,应用软件开发人员能够对具有范围广泛的不同功能能力以及尺寸(例如,模版大小)的内核进行编程。
除了用作由执行通道阵列905操作的图像数据的数据存储之外,随机存取存储器907还可以保持一个或多个查找表。在各个实施例中,一个或多个标量查找表也可以在标量存储器903内被实例化。
标量查找涉及将相同查找表中的相同索引的相同的数据值传递到执行通道阵列905内的每个执行通道。在各个实施例中,上述VLIW指令格式被扩展为还包括标量操作码,所述标量操作码将由标量处理器执行的查找操作指向标量查找表中。指定与操作码一起使用的索引可以是立即操作数,或可以从一些其它数据存储位置获取。无论如何,在一个实施例中,从标量存储器内的标量查找表的查找基本上涉及在相同时钟周期期间,将相同的数据值广播到执行通道阵列905内的所有执行通道。在下文中,进一步提供有关查找表的用法和操作的附加细节。
图9b概述了上文论述的VLIW指令字实施例。如图9b所示,VLIW指令字格式包括用于下述三个单独指令的字段:1)由标量处理器执行的标量指令951;2)ALU指令952,其由执行通道阵列内的相应ALU以SIMD方式广播和执行;以及3)以部分SIMD方式广播和执行的存储器指令953(例如,如果沿执行通道阵列中的同一行的执行通道共享相同的随机存取存储器,则来自不同行中的每一行的一个执行通道实际上执行指令(存储器指令953的格式可以包括标识每行中的哪个执行通道执行指令的操作数)。
还包括用于一个或多个立即操作数的字段954。可以以指令格式标识指令951、952、953中的哪一个使用哪个立即操作数信息。指令951、952、953中的每一个还包括它们自己的相应的输入操作数和结果信息(例如,用于ALU操作的本地寄存器和用于存储器访问指令的本地寄存器和存储器地址)。在一个实施例中,在执行通道阵列内的执行通道执行另两个指令952、953中的任一者之前,由标量处理器执行标量指令951。也就是说,执行VLIW字包括执行标量指令951的第一周期,在该周期之后是第二周期,在该第二周期,可以执行其他指令952、953(注意,在各个实施例中,可以并行地执行指令952和953)。
在一个实施例中,由标量处理器执行的标量指令包括发布到片生成器的、从数据计算单元的存储器或2D移位寄存器加载片/将片存储到数据计算单元的存储器或2D移位寄存器中的命令。在此,片生成器的操作可以取决于线缓冲器单元的操作或其他变量,这些变量阻止对片生成器完成标量处理器发出的任何命令所需的周期数目的预运行时理解。这样,在一个实施例中,其标量指令951对应于或以其他方式使得向片生成器发出命令的任何VLIW字还包括在其他两个指令字段952、953中的无操作(NOOP)指令。然后,程序代码进入指令字段952、953的NOOP指令循环,直到片生成器完成其对数据计算单元的加载/存储。在此,在向片生成器发出命令时,标量处理器可以设置互锁寄存器的位,在完成命令时片生成器将该位重置。在NOOP循环期间,标量处理器监视互锁位的位。当标量处理器检测到片生成器已完成其命令时,正常执行再次开始。
图10示出了数据计算组件1001的实施例。如图10所示,数据计算组件1001包括逻辑上位于二维移位寄存器阵列结构1006“上方”的执行通道阵列1005。如上所述,在各个实施例中,由片生成器提供的图像数据片被加载到二维移位寄存器1006中。然后,执行通道对来自寄存器结构1006的片数据进行操作。
执行通道阵列1005和移位寄存器结构1006相对于彼此在位置上固定。然而,移位寄存器阵列1006中的数据以策略和协调的方式移位,以导致执行通道阵列中的每个执行通道处理数据内的不同模版。因此,每个执行通道确定正在生成的输出片中的不同像素的输出图像值。从图10的架构中可以清楚地看到,重叠模版不仅可以垂直地布置,而且也可以水平地布置,因为执行通道阵列1005包括垂直相邻的执行通道以及水平相邻的执行通道。
数据计算单元1001的一些值得注意的架构特征包括移位寄存器结构1006,其具有比执行通道阵列1005更宽的尺寸。也就是说,在执行通道阵列1005外部存在寄存器的“环带(halo)1009”。尽管环带1009被示为存在于执行通道阵列的两个侧上,但根据实施方式,环带可以存在于执行通道阵列1005的更少(一个)或更多(三个或四个)侧上。环带1005用于针对这样的数据来提供“溢出(spill-over)”空间:当该数据在执行通道1005下方移位时为溢出至执行通道阵列1005的边界外。作为一个简单的情况,当以执行通道阵列1005的右边缘为中心的5×5模版在该模版的最左边的像素被处理时,将需要进一步向右的四个环带寄存器位置。为了便于绘图,图10将环带的右侧的寄存器示出为仅具有水平移位连接,并且将环带的底侧的寄存器示出为仅具有垂直移位连接,而在标称实施例中,任一侧(右侧、底侧)上的寄存器将具有水平连接和垂直连接二者。在各个实施例中,环带区域不包括对应的执行通道逻辑以执行图像处理指令(例如,不存在ALU)。然而,各个存储器存取单元(M)存在于环带区域位置中的每一个中,使得各个光环寄存器位置可以单独地从存储器加载数据并且将数据存储到存储器。
附加的溢出空间由随机存取存储器1007提供,随机存取存储器1007耦合到阵列中的每一行和/或每一列,或者其一部分(例如随机存取存储器可以被指派到执行通道阵列的“区域”,其行方向上跨4个执行通道和列方向上跨2个执行通道)。为了简单起见,本申请的其余部分将主要涉及基于行和/或列的分配方案。在此,如果执行通道的内核操作需要它处理二维移位寄存器阵列1006外部的像素值(一些图像处理例程可能需要),则图像数据平面能够进一步溢出,例如从环带区域1009溢出到随机存取存储器1007中。例如,考虑6×6模版,其中,硬件包括执行通道阵列的右边缘上的执行通道的右侧的仅4个存储元件的环带区域。在这种情况下,需要将数据进一步向右移位到偏离环带1009的右边缘外,以完全处理模版。然后,移位至环带区域1009之外的数据将溢出到随机存取存储器1007。在下文中,进一步提供随机存取存储器1007和图9的模版处理器的其他应用。
图11a到11k展示了如上所述,在执行通道阵列的“下方”的二维移位寄存器阵列内移位图像数据的方式的工作示例。如图11a所示,在第一阵列1107中图示了二维移位阵列的数据内容,并且由帧1105图示执行通道阵列。此外,简化地图示了执行通道阵列内的两个相邻的执行通道1110。在该简化图示1110中,每个执行通道包括寄存器R1,其可以从移位寄存器接受数据、从ALU输出接受数据(例如,表现为跨周期的累加器),或将输出数据写入到输出目的地。
每个执行通道可获取在二维移位阵列中位于其“下方”的本地寄存器R2中的内容。因此,R1是执行通道的物理寄存器,而R2是二维移位寄存器阵列的物理寄存器。执行通道包括可以在由R1和/或R2提供的操作数上操作的ALU。如下文将进一步更详细所述,在一个实施例中,移位寄存器实际上通过每阵列位置多个(一定“深度”的)存储/寄存器元件来实现,但是移位活动仅限于一个存储元件的平面(例如:每周期仅一个存储元件平面可以移位)。图11a到11k图示了这些更深的寄存器位置中的一个正用于存储来自相应执行通道的结果X。为了便于说明,更深的结果寄存器被绘制在其对应寄存器R2的旁边而不是下方。
图11a到11k集中于两个模版的计算,两个模版的中心位置与在执行通道阵列内图示的执行通道位置对1111对准。为了便于说明,该执行通道对1110被绘制成水平相邻者,而实际上,根据下述示例,执行通道对1110是垂直相邻者。
如最初在图11a中所示,执行通道以其中央模版位置为中心。图11b示出了由两个执行通道1111执行的目标代码。如图11b所示,两个执行通道的程序代码使得移位寄存器阵列内的数据向下移位一个位置,并且向右移位一个位置。这使两个执行通道与它们相应的模版的左上角对准。然后,程序代码使得位于它们相应的位置中(在R2中)的数据被加载到R1中。
如图11c所示,程序代码接着使得该对执行通道将移位寄存器阵列内的数据向左移位一个单位,导致每个执行通道的相应位置的右边的值被移入到每个执行通道的位置中。然后,使R1中的值(先前值)与已经移入执行通道的位置(R2中)的新值相加。结果被写入R1。如图11d所示,重复如上对图11c所述的相同的过程,使得结果R1现在包括上执行通道中的值A+B+C和下执行通道中的F+G+H。此时,两个执行通道都处理了它们相应的模版的上部行。注意,溢出到执行通道阵列的左侧的环带区域中(如果左侧存在一个环带区域),或如果在执行通道阵列的左侧不存在环带区域,溢出到随机存取存储器中。
如图11e所示,程序代码接着使得移位寄存器阵列内的数据向上移位一个单位,使得两个执行通道与它们相应的模版的中间行的右边缘对准。两个执行通道的寄存器R1当前都包括模版的顶行和中间行的最右的值的总和。图11f和11g展示了在跨两个执行通道的模版的中间行向左移的继续累进。累计相加继续,使得在图11g的处理结束时,两个执行通道都包括它们相应的模版的顶行和中间行的值的总和。
图11h示出了另一移位,以使每一执行通道与其对应的模版的最低行对准。图11i和11j示出了在两个执行通道的模版的过程中继续移动以完成处理。图11k示出了附加移位以使每个执行通道与其在数据阵列中的正确位置对准,并且将结果写入其中。
在图11a-11k的示例中,注意,移位操作的目标代码可以包括指令格式,其可以标识以(X、Y)坐标表达的移位的方向和幅度。例如,用于向上移位一个位置的目标代码可以以目标代码表达为SHIFT0,+1。作为另一示例,向右移位一个位置可以以目标代码表达为SHIFT+1,0。在各个实施例中,更大幅度的移位也可以以目标代码(例如,SHIFT 0,+2)指定。在此,如果2D移位寄存器硬件仅支持每周期移位一个位置,则指令可以被机器解释为需要多个周期执行,或者,2D移位寄存器硬件可以被设计为支持每周期移位多于1个位置。在下文中,将进一步更详细地描述后者的实施例。
图12示出了用于执行通道的小单元和对应移位寄存器结构的另一更详细图示(在各个实施例中,环带区域中的寄存器不包括对应的执行通道,但是确实包括存储器单元)。在一个实施例中,通过在执行通道阵列的每个节点处实例化图12所示的电路,实现与执行通道阵列中的每个位置相关联的执行通道和寄存器空间。如图12所示,该小单元包括耦合到寄存器堆(register file)1202的执行通道1201,该寄存器堆1202由四个寄存器R2到R5组成。在任何周期期间,执行通道1201可以从寄存器R1到R5中的任何寄存器读取或者向其写入。对于需要两个输入操作数的指令,执行通道可以从R1到R5中的任何一个中检索该两个操作数。
在一个实施例中,二维移位寄存器结构通过下述来实现:在单个周期期间,允许寄存器R2到R4中的任何寄存器(仅一个寄存器)的内容通过输出复用器1203被移位“出”到其相邻者的寄存器堆中的一个,并且使寄存器R2到R4中的任何寄存器(仅一个寄存器)的内容通过输入复用器1204被替换为从相邻者中的对应寄存器移位“入”的内容,使得相邻寄存器之间的移位处于相同的方向(例如所有执行通道左移、所有执行通道右移等等)。虽然相同的寄存器使其内容移出并且被替换为在相同周期中移入的内容是常见的,但是复用器布置1203、1204允许在相同周期期间,相同寄存器堆内的不同的移位源和移位目标寄存器。
如图12所示,注意,在移位序列期间,执行通道将内容从其寄存器堆1202移出到其左、右、上和下相邻者中的每一个。结合相同的移位序列,执行通道还将内容从其左、右、上和下相邻者中的特定一个移位到其寄存器堆中。此外,移出目标和移入源应该与所有执行通道的相同移位方向一致(例如,如果移出到右相邻者,则应该从左相邻者移入)。
尽管在一个实施例中,每周期每执行通道仅允许移位一个寄存器的内容,但是其它实施例可以允许多于一个寄存器的内容移入/移出。例如,如果图12所示的复用器电路1203、1204的第二实例被并入图12的设计中,则在同一周期期间,可以移出/移入两个寄存器的内容。当然,在每周期允许移位仅一个寄存器的内容的实施例中,通过消费更多的时钟周期用于数学运算之间的移位,可以在数学操作之间进行从多个寄存器的移位(例如通过在数学运算之间中消费两个移位操作,可以在数学运算之间移位两个寄存器的内容)。
如果在移位序列期间,执行通道的寄存器堆的少于全部内容被移出,则注意每个执行通道的非移出寄存器的内容保持原位(不移位)。因此,未被移入内容替换的任何非移位内容跨移位周期保持在执行通道本地。在每个执行通道中所示的存储器单元(“M”)被用于从与执行通道阵列内的该执行通道的行和/或列相关联的随机存取存储器空间加载/向该随机存取存储器空间存储数据。在此,M单元充当标准M单元,因为其经常被用于加载无法从执行通道自己的寄存器空间加载的数据/存储无法向执行通道自己的寄存器空间存储的数据。在各个实施例中,M单元的主要操作是将数据从本地寄存器写入存储器,以及从存储器读取数据并且将其写入本地寄存器。
关于由硬件执行通道1201的ALU单元支持的ISA操作码,在各个实施例中,由硬件ALU支持的数学操作码包括(例如,ADD、SUB、MOV、MUL、MAD、ABS、DIV、SHL、SHR、MIN/MAX、SEL、AND、OR、XOR、NOT)。如上所述,存储器存取指令可以由执行通道1201执行,以从其相关联的随机存取存储器提取数据/向其存储数据。此外,硬件执行通道1201支持移位操作指令(右、左、上、下)以移位二维移位寄存器结构内的数据。如上所述,程序控制指令主要由模版处理器的标量处理器执行。
4.0实现实施例
有必要指出,上述各个图像处理器架构特征不一定限于传统意义上的图像处理,因此可以应用于可能(或可能不)使得图像处理器被重新表征的其它应用。例如,如果上述各个图像处理器架构特征中的任何一个被用在创建和/或生成和/或渲染动画中,而不是处理实际相机图像,则图像处理器可以被表征为图形处理单元。此外,上述图像处理器架构特征可以被应用于其它技术应用,诸如视频处理、视觉处理、图像识别和/或机器学习。以这种方式应用,图像处理器可以与更通用处理器(例如,其为计算系统的CPU或计算系统的CPU的一部分)集成(例如,作为更通用的处理器的协同处理器),或者可以是计算系统内的独立处理器。
上述硬件设计实施例可以在半导体芯片内实施和/或实现为用于最终目标为半导体制造工艺的电路设计的描述。在后者的情况下,这样的电路描述可以采取(例如,VHDL或Verilog)寄存器传输级(RTL)电路描述、门级电路描述、晶体管级电路描述或掩模描述或其各种组合的形式。电路描述通常体现在计算机可读存储介质(诸如CD-ROM或其它类型的存储技术)上。
从前面章节可以认识到,如上所述的图像处理器可以在计算机系统上的硬件中实现(例如,作为处理来自手持设备的相机的数据的手持设备的片上系统(SOC)的一部分)。在图像处理器被实现为硬件电路的情况下,注意,可以直接从相机接收由图像处理器处理的图像数据。在此,图像处理器可以是分离的相机的一部分,或者是具有集成相机的计算系统的一部分。在后者的情况下,可以直接从相机或从计算系统的系统存储器接收图像数据(例如,相机将其图像数据发送到系统存储器而不是图像处理器)。还要注意,前面章节中所述的许多特征可以适用于(渲染动画的)图形处理器单元。
图13提供了计算系统的示例性图示。下述所述的计算系统的许多组件适用于具有集成相机和相关联的图像处理器的计算系统(例如,手持设备,诸如智能电话或平板计算机)。普通技术人员将能够容易地区分两者。另外,图13的计算系统还包括高性能计算系统的许多特征,例如工作站或超级计算机的许多特征。
如图13所示,基本计算系统可以包括中央处理单元1301(其可以包括例如多个通用处理核心1315_1至1315_N以及设置在多核处理器或应用处理器上的主存储器控制器1317)、系统存储器1302、显示器1303(例如,触摸屏、平板)、本地有线点对点链路(例如USB)接口1304、各个网络I/O功能1305(诸如以太网接口和/或蜂窝调制解调器子系统)、无线局域网(例如WiFi)接口1306、无线点对点链路(例如蓝牙)接口1307和全球定位系统接口1308、各个传感器1309_1到1309_N、一个或多个相机1310、电池1311、电源管理控制单元1312、扬声器和麦克风1313以及音频编码器/解码器1314。
应用处理器或多核心处理器1350可以包括在其CPU 1201内的一个或多个通用处理核心1315、一个或多个图形处理单元1316、存储器管理功能1317(例如,存储器控制器)、I/O控制功能1318和图像处理单元1319。通用处理核心1315通常执行计算系统的操作系统和应用软件。图形处理单元1316通常执行图形密集功能,从而例如生成在显示器1303上呈现的图形信息。存储器控制功能1317与系统存储器1302对接以向系统存储器1302写入数据/从系统存储器1302读取数据。电源管理控制单元1312通常控制系统1300的功耗。
图像处理单元1319可以根据上述在先前章节中详细描述的任何图像处理单元实施例来实现。替选地或组合地,IPU 1319可以耦合到GPU 1316和CPU 1301中的任一者或两者作为其协处理器。此外,在各个实施例中,可以通过上述详细描述的任何图像处理器特征实现GPU 1316。可以利用上述详细描述的应用软件配置图像处理单元1319。另外,诸如图13的计算系统的计算系统可以执行程序代码以实现上述应用软件开发。
触摸屏显示器1303、通信接口1304-1307、GPS接口1308、传感器1309、相机1310和扬声器/麦克风编解码器1313、1314中的每一个均可以被视为关于整个计算系统的各种形式的I/O(输入和/或输出),在适当的情况下,所述I/O也包括集成的外围设备(例如,一个或多个相机1310)。根据实施方式,这些I/O组件中的各个I/O组件可以集成在应用处理器/多核心处理器1350上,或者可以位于晶片外部或应用处理器/多核心处理器1350的封装外部。
在一个实施例中,一个或多个相机1310包括能够测量相机与其视场中的物体之间的深度的深度相机。在应用处理器或其它处理器的通用CPU核心(或具有指令执行流水线以执行程序代码的其它功能块)上执行的应用软件、操作系统软件、设备驱动器软件和/或固件可以执行上述任何功能。
本发明的实施例可以包括如上所述的各个过程。所述过程可以体现在机器可执行指令中。所述指令可以用于使通用或专用处理器执行某些过程。替选地,这些过程可以由包含用于执行过程的硬连线和/或可编程逻辑的特定硬件组件或者由编程的计算机组件和定制硬件组件的任何组合来执行。
本发明的元件还可以提供为用于存储机器可执行指令的机器可读介质。所述机器可读介质可以包括但不限于软盘、光盘、CD-ROM和磁光盘、FLASH存储器、ROM、RAM、EPROM、EEPROM、磁卡或光卡、传播媒体或适合于存储电子指令的其它类型媒体/机器可读介质。例如,本发明可以作为计算机程序被下载,所述计算机程序可以通过在载波或其它传播介质中体现的数据信号经由通信链路(例如,调制解调器或网络连接)从远程计算机(例如,服务器)传送到请求计算机(例如,客户端)。
在上述说明书中,已参考本发明的具体示例性实施例描述了本发明。然而,将显而易见的是,在不脱离如所附权利要求书中阐述的本发明的更广泛的精神和范围的情况下,可以对其进行各种修改和改变。因此,说明书和附图被认为是说明性的而不是限制性的。
在下文中,描述了一些示例。
示例1:一种图像处理器,包括:
多个处理核心;以及
环形网络,所述环形网络耦合在所述处理核心之间,所述环形网络用于提供耦合第一处理核心集合的第一配置以及耦合所述第一处理核心集合和第二处理核心集合的第二配置,其中,所述第一配置和所述第二配置以连续序列向每个处理核心指派网络地址,其中,所述第一配置和所述第二配置对所述第一处理核心集合中的每个处理核心指派同样的网络地址,其中,环绕所述环来对所述处理核心指派的网络地址与所述连续序列不同。
示例2:如示例1所述的处理器,其中,所述图像处理器包括建立所述第一配置和所述第二配置的寄存器空间
示例3:如示例1或2所述的处理器,其中,所述环形网络包括复用器集合,使得选择所述复用器集合的第一通路导致所述环形网络允许包括所述环上的附加节点并且选择所述复用器集合的第二通路导致所述环形网络不包括所述附加节点。
示例4:如示例3所述的处理器,其中,所述复用器集合包括复用器对。
示例5:如前述示例中至少一项所述的处理器,其中,所述处理核心执行程序代码。
示例6:如前述示例中至少一项所述的处理器,其中,所述处理核心包括相应的执行通道阵列和二维移位寄存器阵列。
示例7:如前述示例中至少一项所述的处理器,其中,图像处理器的架构包括至少一个线缓冲器、至少一个片生成器和/或至少一个模版生成器。
示例8:如前述示例中至少一项所述的处理器,被配置为处理模版,特别是重叠的模版。
示例9:如前述示例中至少一项所述的处理器,被配置为在数据计算单元上操作,所述数据计算单元包括具有比所述执行通道阵列更宽的尺寸的移位寄存器结构,特别是所述执行通道阵列外存在寄存器。
示例10:一种包括程序代码的非暂时性机器可读存储介质,所述程序代码在由计算系统处理时使得执行方法,所述方法包括:
配置目标代码的第一实例以在处理器上执行,所述处理器具有多个核心和内部网络,所述内部网络以第一配置来配置,所述第一配置使得第一数目的核心通信地耦合;以及
配置所述目标代码的第二实例以在所述处理器的第二实例上执行,所述处理器的所述第二实例的相应内部网络以第二配置来配置,所述第二配置使得不同数目的核心通信地耦合,其中,所述处理器和所述处理器的所述第二实例上的相同定位的核心对于所述第一配置和所述第二配置具有相同的网络地址。
示例11:如示例10所述的非暂时性机器可读介质,其中,所述目标代码的所述第一实例和所述目标代码的所述第二实例在所述处理器和所述处理器的所述第二实例的不同的相应核心上执行。
示例12:如示例10或11所述的非暂时性机器可读介质,其中,所述目标代码的所述第一实例和所述第二实例将不同的核心定址为从基地址的偏移。
示例13:如示例10至12中至少一项所述的非暂时性机器可读介质,其中,配置所述目标代码的所述第一实例和所述第二实例包括为所述第一实例和所述第二实例设置不同的基地址。
示例14:如示例10至13中至少一项所述的非暂时性机器可读介质,其中,所述目标代码的所述第一实例和所述第二实例中的一个将作为其相应处理器上的更大应用内的更小代码组件执行,其中,所述更大应用是通过将另一程序的目标代码实例与所述目标代码的所述第一实例和所述第二实例中的一个相组合来构造的。
示例15:如示例10至14中至少一项所述的非暂时性机器可读介质,其中,所述目标代码的所述第一实例和所述第二实例中的另一个将作为其相应处理器上的独立应用执行。
示例16:如示例10至15中至少一项所述的非暂时性机器可读介质,其中,所述方法进一步包括:
配置所述目标代码的第三实例以在与所述处理器相比具有不同数目的核心的另一处理器上执行。
示例17:如示例10至16中至少一项所述的非暂时性机器可读介质,其中,所述方法在图像处理器的架构上操作,所述图像处理器的架构包括至少一个线缓冲器、至少一个片生成器和/或至少一个模版生成器。
示例18:如示例10至17中至少一项所述的非暂时性机器可读介质,被配置为处理模版,特别是重叠的模版。
示例19:如示例10至18中至少一项所述的非暂时性机器可读介质,被配置为在数据计算单元上操作,所述数据计算单元包括具有比所述执行通道阵列更宽的尺寸的移位寄存器结构,特别是所述执行通道阵列外存在寄存器。
示例20:一种计算系统,包括:
多个处理核心;
系统存储器;
系统存储器控制器,所述系统存储器控制器在所述系统存储器和所述多个处理核心之间;
非暂时性机器可读存储介质,所述非暂时性机器可读存储介质包括程序代码,所述程序代码在由所述计算系统处理时使得执行方法,所述方法包括:
配置目标代码的第一实例以在处理器上执行,所述处理器具有多个核心和内部网络,所述内部网络以第一配置来配置,所述第一配置使得第一数目的核心能够通信地耦合;以及
配置所述目标代码的第二实例以在所述处理器的第二实例上执行,所述处理器的所述第二实例的相应内部网络以第二配置来配置,所述第二配置使得不同数目的核心能够通信地耦合,其中,所述处理器和所述处理器的所述第二实例上的相同定位的核心对于所述第一配置和所述第二配置具有相同的网络地址。
示例21:如示例20所述的计算系统,其中,所述目标代码的所述第一实例和所述目标代码的所述第二实例在所述处理器和所述处理器的所述第二实例的不同的相应核心上执行。
示例22:如示例20或21所述的计算系统,其中,所述目标代码的所述第一实例和所述第二实例将不同的核心定址为从基地址的偏移。
示例23:如示例20至22中至少一项所述的计算系统,其中,配置所述目标代码的所述第一实例和所述第二实例包括为所述第一实例和所述第二实例设置不同的基地址。
示例24:如示例20至23中至少一项所述的计算系统,其中,所述目标代码的所述第一实例和所述第二实例中的一个将作为其相应处理器上的更大应用内的更小代码组件执行,其中,所述更大应用是通过将另一程序的目标代码实例与所述目标代码的所述第一实例和所述第二实例中的一个相组合来构造的。
示例25:如示例20至24中至少一项所述的计算系统,其中,所述目标代码的所述第一实例和所述第二实例中的另一个将作为其相应处理器上的独立应用执行。
示例26:如示例20至25中至少一项所述的计算系统,其中,所述处理器和所述处理器的所述第二实例是图像处理器。
示例27:如示例20至26中至少一项所述的计算系统,包括图像处理器,所述图像处理器具有包括至少一个线缓冲器、至少一个片生成器和/或至少一个模版生成器的架构。
示例28:如示例20至27中至少一项所述的计算系统,被配置为处理模版,特别是重叠的模版。
示例29:如示例20至18中至少一项所述的非暂时性机器可读介质,包括数据计算单元,所述数据计算单元包括具有比所述执行通道阵列更宽的尺寸的移位寄存器结构,特别是所述执行通道阵列外存在寄存器。

Claims (29)

1.一种图像处理器,包括:
多个处理核心;以及
环形网络,所述环形网络耦合在所述处理核心之间,所述环形网络用于提供耦合第一处理核心集合的第一配置以及耦合所述第一处理核心集合和第二处理核心集合的第二配置,其中,所述第一配置和所述第二配置以连续序列向每个处理核心指派网络地址,其中,所述第一配置和所述第二配置对所述第一处理核心集合中的每个处理核心指派同样的网络地址,其中,以环绕所述环对所述处理核心指派的网络地址与所述连续序列不同。
2.如权利要求1所述的处理器,其中,所述图像处理器包括用于建立所述第一配置和所述第二配置的寄存器空间。
3.如权利要求1或2所述的处理器,其中,所述环形网络包括复用器集合,使得选择所述复用器集合的第一通路导致所述环形网络允许包括所述环上的附加节点并且选择所述复用器集合的第二通路导致所述环形网络不包括所述附加节点。
4.如权利要求3所述的处理器,其中,所述复用器集合包括复用器对。
5.如前述权利要求中的至少一项所述的处理器,其中,所述处理核心执行程序代码。
6.如前述权利要求中的至少一项所述的处理器,其中,所述处理核心包括相应的执行通道阵列和二维移位寄存器阵列。
7.如前述权利要求中的至少一项所述的处理器,其中,图像处理器的架构包括至少一个线缓冲器、至少一个片生成器和/或至少一个模版生成器。
8.如前述权利要求中的至少一项所述的处理器,被配置为处理模版,特别是重叠的模版。
9.如前述权利要求中的至少一项所述的处理器,被配置为在数据计算单元上操作,所述数据计算单元包括具有比所述执行通道阵列更宽的尺寸的移位寄存器结构,特别是所述执行通道阵列外存在寄存器。
10.一种包括程序代码的非暂时性机器可读存储介质,所述程序代码在由计算系统处理时使得执行方法,所述方法包括:
配置目标代码的第一实例以在处理器上执行,所述处理器具有多个核心和内部网络,所述内部网络以第一配置来配置,所述第一配置使得第一数目的核心通信地耦合;以及
配置所述目标代码的第二实例以在所述处理器的第二实例上执行,所述处理器的所述第二实例的相应内部网络以第二配置来配置,所述第二配置使得不同数目的核心通信地耦合,其中,所述处理器和所述处理器的所述第二实例上的相同定位的核心对于所述第一配置和所述第二配置具有相同的网络地址。
11.如权利要求10所述的非暂时性机器可读介质,其中,所述目标代码的所述第一实例和所述目标代码的所述第二实例在所述处理器和所述处理器的所述第二实例的不同的相应核心上执行。
12.如权利要求10或11所述的非暂时性机器可读介质,其中,所述目标代码的所述第一实例和所述第二实例将不同的核心定址为从基地址的偏移。
13.如权利要求10至12中的至少一项所述的非暂时性机器可读介质,其中,对所述目标代码的所述第一实例和所述第二实例的所述配置包括为所述第一实例和所述第二实例设置不同的基地址。
14.如权利要求10至13中的至少一项所述的非暂时性机器可读介质,其中,所述目标代码的所述第一实例和所述第二实例中的一个将作为其相应处理器上的更大应用内的更小代码组件执行,其中,所述更大应用是通过将另一程序的目标代码实例与所述目标代码的所述第一实例和所述第二实例中的一个相组合来构造的。
15.如权利要求10至14中的至少一项所述的非暂时性机器可读介质,其中,所述目标代码的所述第一实例和所述第二实例中的另一个将作为其相应处理器上的独立应用执行。
16.如权利要求10至15中的至少一项所述的非暂时性机器可读介质,其中,所述方法进一步包括:
配置所述目标代码的第三实例以在与所述处理器相比具有不同数目的核心的另一处理器上执行。
17.如权利要求10至16中的至少一项所述的非暂时性机器可读介质,其中,所述方法在图像处理器的架构上操作,所述图像处理器的架构包括至少一个线缓冲器、至少一个片生成器和/或至少一个模版生成器。
18.如权利要求10至17中的至少一项所述的非暂时性机器可读介质,被配置为处理模版,特别是重叠的模版。
19.如权利要求10至18中的至少一项所述的非暂时性机器可读介质,被配置为在数据计算单元上操作,所述数据计算单元包括具有比所述执行通道阵列更宽的尺寸的移位寄存器结构,特别是所述执行通道阵列外存在寄存器。
20.一种计算系统,包括:
多个处理核心;
系统存储器;
系统存储器控制器,所述系统存储器控制器在所述系统存储器和所述多个处理核心之间;
非暂时性机器可读存储介质,所述非暂时性机器可读存储介质包括程序代码,所述程序代码在由所述计算系统处理时使得执行方法,所述方法包括:
配置目标代码的第一实例以在处理器上执行,所述处理器具有多个核心和内部网络,所述内部网络以第一配置来配置,所述第一配置使得第一数目的核心能够通信地耦合;以及
配置所述目标代码的第二实例以在所述处理器的第二实例上执行,所述处理器的所述第二实例的相应内部网络以第二配置来配置,所述第二配置使得不同数目的核心能够通信地耦合,其中,所述处理器和所述处理器的所述第二实例上的相同定位的核心对于所述第一配置和所述第二配置具有相同的网络地址。
21.如权利要求20所述的计算系统,其中,所述目标代码的所述第一实例和所述目标代码的所述第二实例在所述处理器和所述处理器的所述第二实例的不同的相应核心上执行。
22.如权利要求20或21所述的计算系统,其中,所述目标代码的所述第一实例和所述第二实例将不同的核心定址为从基地址的偏移。
23.如权利要求20至22中的至少一项所述的计算系统,其中,对所述目标代码的所述第一实例和所述第二实例的所述配置包括为所述第一实例和所述第二实例设置不同的基地址。
24.如权利要求20至23中的至少一项所述的计算系统,其中,所述目标代码的所述第一实例和所述第二实例中的一个将作为其相应处理器上的更大应用内的更小代码组件执行,其中,所述更大应用是通过将另一程序的目标代码实例与所述目标代码的所述第一实例和所述第二实例中的一个相组合来构造的。
25.如权利要求20至24中的至少一项所述的计算系统,其中,所述目标代码的所述第一实例和所述第二实例中的另一个将作为其相应处理器上的独立应用执行。
26.如权利要求20至25中的至少一项所述的计算系统,其中,所述处理器和所述处理器的所述第二实例是图像处理器。
27.如权利要求20至26中的至少一项所述的计算系统,包括图像处理器,所述图像处理器具有包括至少一个线缓冲器、至少一个片生成器和/或至少一个模版生成器的架构。
28.如权利要求20至27中的至少一项所述的计算系统,被配置为处理模版,特别是重叠的模版。
29.如权利要求20至28中的至少一项所述的非暂时性机器可读介质,包括数据计算单元,所述数据计算单元包括具有比所述执行通道阵列更宽的尺寸的移位寄存器结构,特别是所述执行通道阵列外存在寄存器。
CN201880011667.8A 2017-05-12 2018-01-12 具有可配置数目的活动核心和支持内部网络的图像处理器 Active CN110300944B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/594,502 2017-05-12
US15/594,502 US10789202B2 (en) 2017-05-12 2017-05-12 Image processor with configurable number of active cores and supporting internal network
PCT/US2018/013582 WO2018208339A1 (en) 2017-05-12 2018-01-12 Image processor with configurable number of active cores and supporting internal network

Publications (2)

Publication Number Publication Date
CN110300944A true CN110300944A (zh) 2019-10-01
CN110300944B CN110300944B (zh) 2023-05-16

Family

ID=61132915

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880011667.8A Active CN110300944B (zh) 2017-05-12 2018-01-12 具有可配置数目的活动核心和支持内部网络的图像处理器

Country Status (7)

Country Link
US (1) US10789202B2 (zh)
EP (1) EP3622370A1 (zh)
JP (1) JP6967597B2 (zh)
KR (1) KR102235056B1 (zh)
CN (1) CN110300944B (zh)
TW (2) TWI735971B (zh)
WO (1) WO2018208339A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10489878B2 (en) * 2017-05-15 2019-11-26 Google Llc Configurable and programmable image processor unit
US11074213B2 (en) * 2019-06-29 2021-07-27 Intel Corporation Apparatuses, methods, and systems for vector processor architecture having an array of identical circuit blocks
CN110597755B (zh) * 2019-08-02 2024-01-09 北京多思安全芯片科技有限公司 一种安全处理器的重组配置方法
CN113222126B (zh) * 2020-01-21 2022-01-28 上海商汤智能科技有限公司 数据处理装置、人工智能芯片
CN113342719B (zh) * 2021-06-30 2022-12-13 珠海一微半导体股份有限公司 一种运算加速单元及其运算方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030033374A1 (en) * 2001-07-24 2003-02-13 Condor Engineering, Inc. Method and system for implementing a communications core on a single programmable device
US20140149766A1 (en) * 2012-01-10 2014-05-29 Ahmad Samih Router parking in power-efficient interconnect architectures
US20160316094A1 (en) * 2015-04-23 2016-10-27 Google Inc. Sheet Generator For Image Processor

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1400962A (en) * 1920-03-09 1921-12-20 Roy E Leonard Process of and apparatus for drilling oil-wells
JP2900359B2 (ja) * 1986-10-30 1999-06-02 株式会社日立製作所 マルチプロセッサシステム
CA2101848A1 (en) * 1991-02-06 1992-08-07 Robert Walsh Disk drive array memory system using nonuniform disk drives
JPH06290159A (ja) * 1993-03-30 1994-10-18 Agency Of Ind Science & Technol 並列計算機のプロセス割当方法
JP3290798B2 (ja) * 1994-03-14 2002-06-10 富士通株式会社 並列コンピュータ
JP2004252508A (ja) * 2003-02-18 2004-09-09 Nec Corp 単一プロセッサ用ソフトウェアプログラムをマルチプロセッサ用ソフトウェアプログラムに変換する方法
JP2006093937A (ja) * 2004-09-22 2006-04-06 Canon Inc 光電融合回路
US7941698B1 (en) * 2008-04-30 2011-05-10 Hewlett-Packard Development Company, L.P. Selective availability in processor systems
JP2012252490A (ja) * 2011-06-02 2012-12-20 Renesas Electronics Corp マルチプロセッサおよびそれを用いた画像処理システム
US9514563B2 (en) 2013-08-30 2016-12-06 Arm Limited Graphics processing systems
WO2015163897A1 (en) 2014-04-24 2015-10-29 Empire Technology Development Llc Core prioritization for heterogeneous on-chip networks
US9769356B2 (en) * 2015-04-23 2017-09-19 Google Inc. Two dimensional shift array for image processor

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030033374A1 (en) * 2001-07-24 2003-02-13 Condor Engineering, Inc. Method and system for implementing a communications core on a single programmable device
US20140149766A1 (en) * 2012-01-10 2014-05-29 Ahmad Samih Router parking in power-efficient interconnect architectures
US20160316094A1 (en) * 2015-04-23 2016-10-27 Google Inc. Sheet Generator For Image Processor

Also Published As

Publication number Publication date
TW201947524A (zh) 2019-12-16
JP6967597B2 (ja) 2021-11-17
TWI735971B (zh) 2021-08-11
TWI676150B (zh) 2019-11-01
CN110300944B (zh) 2023-05-16
US20180329864A1 (en) 2018-11-15
KR20190107101A (ko) 2019-09-18
US10789202B2 (en) 2020-09-29
WO2018208339A1 (en) 2018-11-15
JP2020519979A (ja) 2020-07-02
EP3622370A1 (en) 2020-03-18
KR102235056B1 (ko) 2021-04-01
TW201901612A (zh) 2019-01-01

Similar Documents

Publication Publication Date Title
JP7202987B2 (ja) 高性能で、電力効率の良い、プログラマブルな画像処理のためのアーキテクチャ
JP6389571B2 (ja) 画像プロセッサのための二次元シフトアレイ
CN110300944A (zh) 具有可配置数目的活动核心和支持内部网络的图像处理器
CN107563952A (zh) 可编程二维图像处理器上的卷积神经网络
JP2018206413A (ja) 画像プロセッサのためのエネルギ効率的なプロセッサコアアーキテクチャ
JP2019215887A (ja) 画像プロセッサのためのシート生成部
CN107533750A (zh) 虚拟图像处理器指令集架构(isa)和存储器模型与具有二维移位阵列结构的示例性目标硬件
CN107133908A (zh) 用于图像处理器的编译器管理存储器
EP3622399B1 (en) Determination of per line buffer unit memory allocation
US11030005B2 (en) Configuration of application software on multi-core image processor
JP2019207745A (ja) 低減された配線複雑度を有するシフトレジスタ

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