CN108139886B - 用于图像处理器的多功能执行通道 - Google Patents
用于图像处理器的多功能执行通道 Download PDFInfo
- Publication number
- CN108139886B CN108139886B CN201680060253.5A CN201680060253A CN108139886B CN 108139886 B CN108139886 B CN 108139886B CN 201680060253 A CN201680060253 A CN 201680060253A CN 108139886 B CN108139886 B CN 108139886B
- Authority
- CN
- China
- Prior art keywords
- instruction
- alu
- unit
- execution
- alu logic
- 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
- 238000004364 calculation method Methods 0.000 claims abstract description 5
- 238000012545 processing Methods 0.000 claims description 25
- 238000000034 method Methods 0.000 claims description 21
- 238000013461 design Methods 0.000 claims description 8
- 230000015572 biosynthetic process Effects 0.000 claims 1
- 238000003786 synthesis reaction Methods 0.000 claims 1
- 230000008569 process Effects 0.000 description 14
- 230000006870 function Effects 0.000 description 13
- 230000009471 action Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 210000004027 cell Anatomy 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 210000003126 m-cell Anatomy 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
- 238000009877 rendering Methods 0.000 description 1
- 238000010977 unit operation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- 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/3001—Arithmetic instructions
-
- 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/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- 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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
-
- 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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
-
- 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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
Abstract
描述了一种包括执行单元的设备,所述执行单元具有乘加计算单元、第一ALU逻辑单元、和第二ALU逻辑单元。所述ALU单元用于执行第一指令、第二指令、第三指令、和第四指令。所述第一指令是乘加指令。第二指令用于在所述第一和第二ALU逻辑单元同时运算的情况下执行并行ALU运算以产生所述第二指令的不同相应输出结果。所述第三指令用于在所述ALU逻辑单元中的一个根据所述ALU逻辑单元中的另一个的输出进行运算的情况下执行顺序ALU运算以确定所述第三指令的输出结果。所述第四指令用于执行迭代除法运算,其中所述第一ALU逻辑单元和所述第二ALU逻辑单元进行运算以确定第一和第二除法结果数位值。
Description
技术领域
本发明的技术领域大体上涉及计算科学,并且更具体地涉及用于图像处理器的多功能执行通道。
背景技术
图像处理通常包含对组织成阵列的像素值的处理。此处,在空间上组织的二维阵列捕获图像的二维性质(附加维度可以包括时间(例如,二维图像序列)和数据类型(例如,颜色)。在典型场景中,成阵列的像素值由已经生成了静态图像或者捕获运动的图像的帧序列的相机提供。传统图像处理器通常落入两个极端中的任一侧。
第一极端执行图像处理任务作为在通用处理器或者类似通用的处理器(例如,具有向量指令增强的通用处理器)上执行的软件程序。虽然第一极端通常提供了高度通用应用软件开发平台,但是其对与关联的开销组合的细粒度数据结构的使用(例如,取指令和解码、片上和片外数据的处置、推测执行)最终导致在执行程序代码期间每单位数据消耗更多的能量。
第二相对的极端将固定功能硬连线电路系统应用于大得多的数据块。使用直接应用于定制设计的电路的较大(与细粒度相对)数据块在很大程度上降低了每单位数据的能耗。然而,使用定制设计的固定功能电路系统通常导致处理器能够执行有限的任务集合。同样,第二极端缺乏(与第一极端相关联的)广泛通用的编程环境。
提供高度通用的应用软件开发机会以及每单位数据的提高的功率效率的技术平台仍然是期望但缺少的解决方案。
发明内容
描述了一种包括执行单元的设备,该执行单元具有乘加计算单元、第一ALU逻辑单元、和第二ALU逻辑单元。ALU单元用于执行第一指令、第二指令、第三指令、和第四指令。第一指令是乘加指令。第二指令用于在第一ALU逻辑单元和第二ALU逻辑单元同时运算的情况下执行并行ALU运算以产生第二指令的不同相应输出结果。第三指令用于在ALU逻辑单元中的一个根据ALU逻辑单元中的另一个的输出进行运算的情况下执行序列ALU运算以确定第三指令的输出结果。第四指令用于执行迭代除法运算,其中第一ALU逻辑单元和第二ALU逻辑单元交替地运算以在迭代期间确定商数位值。
描述了一种包括图像处理器的执行单元的设备。ALU单元包括用于执行第一指令的装置,该第一指令是乘加指令。ALU单元包括用于执行第二指令的装置,执行该第二指令包括在第一ALU逻辑单元和第二ALU逻辑单元同时运算的情况下执行并行ALU运算以产生第二指令的不同相应输出结果。ALU单元包括用于执行第三指令的装置,执行该第三指令包括在ALU逻辑单元中的一个根据ALU逻辑单元中的另一个的输出进行运算的情况下执行顺序ALU运算以确定第三指令的输出结果。ALU单元包括用于执行第四指令的装置,执行该第四指令包括执行迭代除法运算,其中第一ALU逻辑单元和第二ALU逻辑单元进行运算以确定第一和第二数位结果数位值。
附图说明
使用以下描述和附图来说明本发明的实施例。在附图中:
图1示出了图像处理器的模板处理器组件;
图2示出了执行通道及其与二维移位寄存器耦合的实例;
图3示出了由图2的执行通道的实施例执行的功能的相对延迟;
图4示出了多功能执行通道的设计;
图5a和图5b示出了执行迭代除法运算的电路系统和方法;
图6示出了由关于图3至图5a、b描述的执行通道执行的方法;
图7示出了计算系统的实施例。
具体实施方式
图1示出了模板(stencil)处理器架构100的实施例。以下讨论将更清楚描述的模板处理器是被优化或者以其他方式设计成处理图像数据的模板的处理器。可以将一个或者多个模板处理器集成到图像处理器中,该图像处理器对由处理器处理的图像执行基于模板的任务。如在图1中看到的,模板处理器包括数据计算单元101、标量处理器102、和关联的存储器103以及I/O单元104。数据计算单元101包括执行通道阵列105、二维移位阵列结构106、和与该阵列的特定行或者列相关联的单独的随机存取存储器107。
I/O单元104负责将接收到的图像数据的输入“表单”加载到数据计算单元101中并且存储来自模板处理器外部的数据计算单元的输出数据表单。在一个实施例中,将表单数据加载到数据计算单元101中需要将接收到的表单解析成图像数据的行/列,并且将图像数据的行/列加载到执行通道阵列的行/列的二维移位寄存器结构106或者相应随机存取存储器107中(下文更详细地描述)。
如果最初将表单加载到存储器107中,则执行通道阵列105内的各个执行通道然后可以在适当的情况下将表单数据从随机存取存储器107加载到二维移位寄存器结构106中(例如,作为恰好在对表单数据进行运算之前的加载指令)。在完成将数据表单加载到寄存器结构106中(无论是直接从表单生成器还是直接从存储器107)之后,执行通道阵列105的执行通道对数据进行运算并且最终在模板处理器外部“回写”完成的数据或者将完成的数据回写入随机存取存储器107中。如果稍后I/O单元104从随机存取存储器107取得数据以形成输出表单,然后在模板处理器外部写入该输出表单。
标量处理器102包括程序控制器109,该程序控制器109从指令存储器103读取模板处理器的程序代码的指令并且向执行通道阵列105中的执行通道发布指令。在一个实施例中,向阵列105内的所有执行通道广播单个相同的指令,以达到来自数据计算单元101的类似SIMD的行为。在一个实施例中,从标量存储器103读取的并且向执行通道阵列105的执行通道发布的指令的指令格式包括超长指令字(VLIW)类型格式,该超长指令字(VLIW)类型格式包括每指令多于一个的操作码。在又一实施例中,VLIW格式包括指引由每个执行通道的ALU执行的数学函数的ALU操作码和存储器操作码(该存储器操作码指引特定执行通道或者执行通道集合的存储器操作)。
术语“执行通道”指代能够执行指令的一个或者多个执行单元的集合(例如,可以执行指令的逻辑电路系统)。然而,在各个实施例中,执行通道可以包括超过执行单元本身的更多类似处理器的功能。例如,除了一个或者多个执行单元之外,执行通道还可以包括对接收到的指令进行解码的逻辑电路系统,或者在更多类似MIMD的设计的情况下,执行通道可以包括取得指令并且对指令进行解码的逻辑电路系统。相对于类似MIMD的方法,虽然本文已经在很大程度上描述了集中式程序控制方法,但是可以在各个替选实施例中实现更为分布式的方法(例如,包括阵列105的每个执行通道内的程序代码和程序控制器)。
执行通道阵列105、程序控制器109、和二维移位寄存器结构106的组合为范围广泛的可编程功能提供了广泛可适应/可配置硬件平台。例如,考虑到各个执行通道能够执行各种功能并且能够容易地访问接近任何输出阵列位置的输入图像数据,应用软件开发者能够对具有各种不同功能能力以及维度(例如,模板大小)的内核进行编程。
在运算期间,由于执行通道阵列105和二维移位寄存器106,图像的多个模板可以并行运算(如本领域中所理解的,通常将模板实现为图像内的连续的NxM或者NxMxC像素组(其中,N可以等于M))。此处,例如,每个执行通道执行用于对图像数据内的具有特定模板价值的数据进行处理的运算,同时二维移位阵列转移其数据以按顺序将每个模板的数据传递至寄存器空间,该寄存器空间耦合至正在执行模板的任务的执行通道。注意,二维移位寄存器106也可以具有比执行通道阵列105更大的尺寸(例如,如果执行通道阵列的尺寸为XxX,则二维移位寄存器106的尺寸可以是YxY,其中,Y>X)。此处,为了对模板进行完全处理,当模板的左边缘正在被执行通道处理时,移位寄存器106中的数据将“推出”执行通道阵列105的右边缘。移位寄存器106的额外维度能够承受从执行通道阵列的边缘推出的数据。
除了充当由执行通道阵列105运算的图像数据的数据存储之外,随机存取存储器107还可以保存一个或者多个查找表。在各个实施例中,也可以在标量存储器103内将一个或者多个标量查找表实例化。
标量查找涉及将来自相同索引的相同查找表的相同数据传递至执行通道阵列105内的每个执行通道。在各个实施例中,上文描述的VLIW指令格式被扩展为还包括标量操作码,该标量操作码将由标量处理器执行的查找操作引导到标量查找表中。指定供与操作码一起使用的索引可以是立即操作数或者可以从一些其它数据存储位置取得。无论如何,在一个实施例中,对来自标量存储器内的标量查找表的查找本质上涉及在相同的时钟周期期间向执行通道阵列105内的所有执行通道广播相同的数据值。
图2示出了对执行通道201内的ALU执行单元205的单元包(unit cell)和对应本地移位寄存器结构的更详细的描述。在一个实施例中,执行通道和与执行通道阵列中的每个位置相关联的寄存器空间通过在执行通道阵列的每个节点处将图2中看到的电路系统实例化来实现。如在图2中看到的,单元包(unit cell)包括耦合至寄存器堆(register file)202的执行通道201,该寄存器堆202由四个寄存器R1至R4组成。在任何周期期间,可以从寄存器R1至R4中的任何一个中读取ALU执行单元,并且将ALU执行单元写入寄存器R1至R4中的任何一个。
在一个实施例中,二维移位寄存器结构通过以下来实现:在单个周期期间准许寄存器R1至R3中的任何一个(仅一个)的内容通过输出多路复用器203被移“出”至其邻居的寄存器堆中的一个并且通过输入多路复用器204用从其邻居中的对应的一个移“入”的内容替换寄存器R1至R3中的任何一个(仅一个)的内容,使得邻居之间的移位处于相同方向(例如,所有执行通道向左移、所有执行通道向右移等)。在各个实施例中,执行通道本身执行其自身的相应移位指令以实现移位寄存器内容的大规模SIMD二维移位。虽然相同寄存器使其内容移出并且用在相同周期内移入的内容替换其内容可能是常见的,但是多路复用器布置203、204准许在相同周期期间在相同寄存器堆内的不同移位源和移位目标寄存器。
如图2中描绘的,注意,在移位序列期间,执行通道将内容从其寄存器堆202移出至其左、右、上(top)、和下(bottom)邻居中的每一个。结合相同的移位序列,执行通道还将内容从其左、右、上、和下邻居中的特定的一个邻居移入其寄存器堆中。再次,移出目标和移入源应该与所有执行通道的相同移位方向一致(例如,如果移出朝向右邻居,则移入应该来自左邻居)。
虽然在一个实施例中,每周期每执行通道只准许一个寄存器的内容被移位,但其它实施例可以准许多于一个的寄存器的内容被移入/移出。例如,如果将在图2中看到的多路复用器电路系统203、204的第二实例并入图2的设计中,则可以在相同周期期间移出/移入两个寄存器的内容。当然,在每周期只准许一个寄存器的内容被移位的实施例中,通过消耗更多时钟周期以供在数学运算之间进行移位,可以在数学运算之间进行来自多个寄存器的移位(例如,通过消耗数学op(运算)之间的两个移位op,可以在数学op之间移位两个寄存器的内容)。
如果在移位序列期间移出执行通道的寄存器堆的不超过全部内容,则注意,每个执行通道的非移出的寄存器的内容保持在原位(不移位)。同样,未用移入内容替换的任何非移位内容跨移位周期保持在执行通道本地。存储器执行单元——为了便于说明在图2中未示出——也可以存在于每个执行通道201中,以从与执行通道阵列内的执行通道的行和/或列相关联的随机存取存储器空间加载数据/向其存储数据。此处,存储器单元充当标准M单元,这是因为其通常用于加载无法从执行通道自身的寄存器空间加载的数据/存储无法向执行通道自身的寄存器空间存储的数据。在各个实施例中,M单元的主要操作是将来自本地寄存器的数据写入存储器中,并且从存储器读取数据并且将所述数据写入本地寄存器。
相对于硬件执行通道201的ALU单元205所支持的ISA操作码,在各个实施例中,ALU单元205所支持的数学操作码可以包括任何以下ALU运算:加(ADD)、减(SUB)、移动(MOV)、乘(MUL)、乘加(MAD)、绝对值(ABS)、除(DIV)、左移(SHL)、右移(SHR)、返回最小值或者最大值(MIN/MAX)、选择(SEL)、逻辑与(AND)、逻辑或(OR)、逻辑异或(XOR)、前导零计数(CLZ或者LZC)、和逻辑补(NOT)。下文参照图3至图5更详细地描述了ALU单元205或者其部分的实施例。如上所述,存储器访问指令可以由执行通道201执行为从其关联的随机存取存储器取得数据/向其关联的随机存取存储器存储数据。另外,硬件执行通道201支持移位op指令(右、左、上、下)以在二维移位寄存器结构内移位数据。如上所述,程序控制指令主要由模板处理器的标量处理器执行。
图3示出了如上所述的执行通道的执行单元或者其部分的消耗时间图。具体地,图3绘出了可以由执行单元执行的多个不同指令中的每一个所消耗的时间量。如在图3中看到的,执行单元可以执行:1)乘register file并行的两个全宽(FW)或者四个半宽(HW)ALU运算302;3)双宽(2XW)ALU运算303;4)形式为((C op D)op B)的FUSED运算304;以及5)迭代除法(DIV)运算306。
如在图3中看到的,MAD运算301本身在执行单元可以执行的各个指令中消耗最多的时间。同样,设计观点在于除了执行MAD运算的逻辑之外,还可以利用多个ALU逻辑单元来增强执行单元,以例如并行执行多个ALU运算(诸如,运算302)和/或串行执行多个ALU运算(诸如,运算304)。
图4示出了可以支持图3中图示的不同指令的执行单元405的设计的实施例。如在图4中看到的,执行单元405包括第一ALU逻辑单元401和第二ALU逻辑单元402以及乘加逻辑单元403。来自寄存器堆的输入被标记为A、B、C、D,而回写寄存器堆的输出被标记为X和Y。通用,执行单元405是4输入端口、2输出端口执行单元。
在一个实施例中,乘加逻辑单元403执行完全乘加指令。即,乘加逻辑单元403执行函数(A*B)+(C,D),其中,A是全宽输入操作数,B是全宽操作数,并且(C,D)是形成双宽求和项的两个全宽操作数的级联。例如,如果全宽与16位相对应,则A是16位,B是16位,并且求和项是32位。如本领域中所理解的,两个全宽值的乘加可以产生双宽结果。同样,跨X、Y输出端口写入MAD运算的结果,其中,例如,X包括结果的上半部分,并且Y包括结果的下半部分。在又一实施例中,乘加单元403支持半宽乘加。此处,例如,将A的下半部分用作第一被乘数,将B的下半部分用作第二被乘数,并且将C或者D中任一者(但不是级联)用作加数。
如上文参照图3提到的,执行MAD运算可以消耗比典型ALU逻辑单元更多的时间。同时,执行单元包括一对ALU逻辑单元401、402,以不仅能实现ALU运算的并行执行,而且还能实现顺序ALU运算。
此处,参照图3至图4,关于双并行FW运算302、第一ALU逻辑单元401执行第一全宽ALU运算(A op B),同时第二ALU与第一全宽ALU运算并行执行第二全宽ALU运算(C op D)。再次,在一个实施例中,全宽运算与16位相对应。此处,第一ALU逻辑单元401将(A op B)的结果写入寄存器X中,同时第二ALU逻辑单元402将(C op D)的结果写入寄存器Y。
在一个实施例中,用于执行双并行全宽ALU运算302的指令格式包括指定双并行全宽运算的操作码和目标寄存器。在又一实施例中,除了指定双并行全宽运算之外,操作码还指定一个或者两个ALU运算。如果操作码仅指定一个运算,则两个ALU逻辑单元401、402都将执行相同的运算。相比之下,如果操作码指定第一和第二不同的ALU运算,则第一ALU逻辑单元401执行运算中的一个运算,并且第二ALU逻辑单元402执行运算中的第二运算。
关于运算302的半宽(HW)特征,并行执行四个半宽ALU运算。此处,输入A、B、C、和D中的每一个被理解成均包括两个单独的输入操作数。即,例如,A的上半部分与第一输入操作数相对应,A的下半部分与第二输入操作数相对应,B的上半部分与第三输入操作数相对应,B的下半部分与第四输入操作数相对应等。
同样,ALU逻辑单元401并行处置两个ALU运算,并且ALU逻辑单元402并行处置两个ALU运算。因此,在执行期间,并行执行所有的四个半宽运算。在运算302结束时,ALU逻辑单元401将两个半宽结果写入寄存器X中,并且ALU逻辑单元402将两个半宽结果写入寄存器Y中。同样,在寄存器X和Y中存在四个单独的半宽结果。
在一个实施例中,指令格式不仅指定要执行并行半宽运算,而且还指定要执行哪些ALU运算。在各个实施例中,指令格式可以指定所有的四个运算都相同并且仅指定一个运算和/或可以指定所有的四个运算都不同并且指定四个不同运算。在后者的情况下,替选地,为了针对所有的四个运算实现相同运算,指令格式可以指定四次相同运算。这些指令格式方法的各种组合也是可能的。
关于图3的双宽ALU运算303,在一个实施例中,执行单元405执行(A,C)op(B,D),其中,(A,C)是形成第一双宽输入操作数的输入A和C的级联,并且(B,D)是形成第二双宽输入操作数的输入B和D的级联。此处,进位项可以沿着进位线404从第一ALU逻辑单元401传递至第二ALU逻辑单元402以将运算从全宽向前进位至双宽。
即,在一个实施例中,C和D项表示两个双宽输入操作数的降低的阶(loweredordered)的半部分。第二ALU逻辑单元402对两个下半部分执行指定运算(例如,ADD),并且所生成的结果与整个双宽结果的下半部分相对应。同样,将来自第二ALU逻辑单元402的结果写入寄存器Y中。对下半部分的运算可以生成进位项,该进位项进位至第一ALU逻辑单元401,该第一ALU逻辑单元401继续输入操作数的两个相应上半部分A和C的运算。来自第一ALU逻辑单元401的结果与写入输出寄存器X中的整体结果的上半部分相对应。因为通过第一ALU逻辑单元401对上半部分进行的运算在第一ALU逻辑单元401从第二ALU逻辑单元402接收进位项之前可能无法开始,因此ALU逻辑单元402、401的运算是顺序的,而不是并行的。同样,如在图3中看到的,双宽运算303可以花费大约两倍于并行全/半宽运算302的时间。
虽然如此,因为MAD运算301可以消耗比两个连续的ALU逻辑单元运算更多的时间,因此可以在执行单元405周围构建机器,该执行单元405可以试图将其能够执行的尽可能多的函数插入其最长传播延迟运算所消耗的时间段中。同样,在一个实施例中,执行单元405的周期时间与MAD指令301的执行时间相对应。在一个实施例中,双宽运算的指令格式不仅指定要执行的运算,而且还指定运算是双宽运算。
关于FUSED运算304,执行单元405执行运算(C op D)op B。此处,如同上文讨论的双宽ALU运算303,因为第二运算对第一运算的结果进行运算,因此双ALU逻辑单元401、402顺序运算。此处,第二ALU逻辑单元402对全宽输入C和D执行初始运算。作为将第二ALU逻辑402的结果写入结果寄存器空间中的替代,经由多路复用器406将第二ALU逻辑402的结果多路复用到第一ALU逻辑单元401的输入中。然后,第一ALU逻辑单元401执行第二运算并且将结果写入寄存器X中。
在又一实施例中,还可以执行半宽FUSED运算。此处,除了仅利用输入操作数的半部分之外,都如上所述那样进行运算。即,例如,在计算(C op D)op B时,仅使用C的下半部分和D的下半部分来确定第一运算的半宽结果。然后,仅连同第一运算的半宽结果一起使用B的下半部分来执行第二运算。将结果作为半宽值写入寄存器X中。更进一步地,可以并行执行两个半宽FUSED运算。此处,运算如上文所述与相同逻辑运算同时进行,但是针对操作数的上半部分。结果是具有写入寄存器X中的值的两个半部分。
在一个实施例中,FUSED运算的指令格式指定要执行FUSED运算,并且指定两个运算。如果执行相同运算两次,则在一个实施例中,指令仅指定运算一次或者指定运算两次。在又一实施例中,除了指定FUSED运算和要执行的运算之外,指令格式可以进一步指定要执行全宽运算还是半宽运算。
图3的运算306说明迭代除法运算也可以由执行单元执行。具体地,如下文更详细地解释的,在各个实施例中,ALU逻辑单元401、402二者在迭代除法运算期间并行协同地参与。
图5a和图5b涉及用于执行图3的迭代除法指令306的实施例。图5a示出了要添加至图4的执行单元电路系统405以使得能够执行迭代除法指令的附加电路系统(除了被理解为图4的相同的ALU逻辑单元401、402的ALU逻辑单元501、502之外)。图5b示出了在执行迭代除法指令期间的执行单元的微序列运算的实施例。如将通过以下讨论更清楚地,指令的单次执行本质上执行两次迭代,这两次迭代与长除法的原子动作(atomic act)相似,其中,试图用(值被划分成的)分子的前导数位除以(值被划分成分子的)除数。
为了简单起见,将描述16位除法(普通技术人员将能够将本教导扩展至不同宽度的实施例)。利用本文描述的执行两个长除法原子动作的实施例,使用指令的八次顺序执行来将16位分子完全用16位除数除。即,每个原子长除法动作与分子的下一个(next)有效位的处理相对应。在指令的单次执行期间对两个这样的有效位进行处理。因此,为了对分子的所有位进行处理,需要指令的八次顺序执行来完全执行完整的除法。第一指令的输出被写入寄存器堆并且用作下一个后续指令的输入。
参照图5a,在B输入处提供分子输入,并且在D输入处呈现分子输入。再次,在本公开中,B和D输入操作数二者都是16位。作为A和B输入操作数(A操作数也是16位)的级联A、B的“封装的”32位数据结构“PACK”可以被视为完整的除法过程的初始数据结构。如同,初始条件A被设置为十六个零(000…0)的字符串并且B是分子值。
参照图5a和图5b,在第一微序列期间,执行PACK数据结构的左移以创建称为PACK的最高有效字(“PACK msw”)的数据结构A[14:0],B[15]。然后由第二ALU逻辑单元502从PACK msw中减去除数D(511)。该运算与最初将除数划分成分子的前导数位的长除法对应。注意,在一个实施例中,ALU逻辑单元501、502实际上是三个输入ALU,而不是如图4所建议的两个输入ALU(针对除数D保留第三输入以供进行迭代除法运算)。
然后根据减法511的结果的符号512遵循不同的数据处理过程。重要的是,第一商结果位(即,除法结果的第一位)是分阶段的以写入Y输出端口509(“NEXT B[1]”)的第二位至最低有效位。如果减法的结果为负,则商结果位B[1]设置513为a0。如果减法的结果为正,则商结果位B[1]设置514为a1。该位的设置与长除法中的过程相对应,其中,通过查实除数值是否可以被划分成分子的第一数位来确定商结果的第一数位。
另外,制作两个不同的数据结构并且将其呈现给多路复用器506(该多路复用器506可以是与图4的多路复用器406相同的多路复用器)的相应输入端口(“1”,“2”)。第一数据结构与Pack msw(A[13:0],B[15],B[14])的左移相对应并且被呈现在多路复用器506的输入1处。创建该数据结构与长除法的过程相对应,其中,如果除数不划分成最高有效邻居,则将分子的下一个数位附加至其最高有效邻居。
第二制作数据结构与刚刚由添加有位B[13]的第二ALU逻辑单元502执行的减法511的结果的左移相对应并且被呈现在多路复用器506的第二输入(“2”)处。该数据结构的创建与长除法的情形相对应,该情形下除数划分成分子的第一数位,该分子将下一个除数建立为分子的第一数位与除数的倍数之差的结果。
然后,根据由第二ALU逻辑单元502执行的减法的结果是产生正结果还是负结果,由多路复用器506选择第一数据结构或者第二数据结构。如果减法产生了负结果(该负结果与无法被划分成分子的下一有效数位的除数相对应),则选择第一数据结构(513)。如果减法产生了正结果(该正结果与能够被划分成分子的下一有效数位的除数相对应),则选择第二数据结构(514)。
现在将多路复用器506的输出理解为PACK数据结构(new PACK msw)的新最高有效字并且与要试图将除数划分成的长除法序列中的下一个值相对应。同样,第一ALU逻辑单元501从new PACK msw值中减去除数D(515)。根据来自第一ALU 501的减法结果的符号,Y输出B[0]的最低有效位510是分阶段的以写成a 1或者a 0并且表示商结果517、518中的下一个数位。
根据第一ALU逻辑单元的减法515的符号(516),第二多路复用器508在第一数据结构与第二数据结构之间进行选择。在第二多路复用器508的输入“1”处呈现的第一数据结构与new PACK msw值相对应。在第二多路复用器508的输入“2”处呈现的第二数据结构与由第一ALU逻辑单元501执行的减法的结果相对应。根据由第一ALU 501执行的减法515的结果的符号来选择两个数据结构中的哪一个。如果减法的结果为负,则多路复用器选择new PACKmsw值517。如果减法的结果为正,则多路复用器选择new PACK msw-D值518。
第二多路复用器508的输出与从X输出写入寄存器堆中的NEXT A值相对应。在Y输出(B[15:0])处呈现的值在减去其两个最高有效位的B操作数的前导沿处组成,该两个最高有效位由刚刚执行的两次迭代(B[13:0])消耗。将B的这些余数位与两个新计算得到的商数位结果的级联作为新B操作数NEXT B写入寄存器堆中。对于下一次迭代,将来自前一个指令的X输出读入A操作数,并且将来自前一个指令的Y输出读入B操作数。该过程然后重复,直到已经对原始B操作数的所有数位进行处理为止(在16位B操作数将消耗指令的八个序列执行的情况下,该过程再次重复)。在所有迭代结束时,将最终商从Y输出写入寄存器堆中,并且任何余数将表示为从X输出写入寄存器堆中的NEXT A值。
图6示出了由上述ALU单元执行的方法的实施例。如在图6中看到的,方法包括利用图像处理器的ALU单元执行以下运算。执行第一指令,该第一指令是乘加指令601。执行第二指令,该第二指令包括在第一ALU逻辑单元和第二ALU逻辑单元同时运算的情况下执行并行ALU运算以产生第二指令602的不同的相应输出结果。执行第三指令,该第三指令包括:执行ALU逻辑单元中的一个根据ALU逻辑单元中的另一个的输出进行运算的顺序ALU运算以确定第三指令603的输出结果。执行第四指令,该第四指令包括执行迭代除法运算,其中第一ALU逻辑单元和第二ALU逻辑单元进行运算以确定第一除法结果数位和第二除法结果数位值604。
有必要指出,上述各个图像处理器架构特征不一定限于传统意义上的图像处理,并且因此,可以应用于可能会(或者可能不会)使得图像处理器被重新表征的其它应用。例如,与对实际相机图像进行处理相对,如果在创建和/或生成和/或渲染动画时使用上述各个图像处理器架构特征中的任何一个,则图像处理器可以表征为图形处理单元。另外,上述图形处理器架构特征可以应用于其它技术应用,诸如视频处理、视觉处理、图像识别和机器学习。按照这种方式应用,图像处理器可以与(例如,作为计算系统的CPU或者作为计算系统的CPU的一部分的)更通用的处理器集成(例如,作为协处理器),或者可以是计算系统内的独立式处理器。
上文讨论的硬件设计实施例可以实施在半导体芯片内和/或实施为对最终针对半导体制造过程的电路设计的描述。在后者的情况下,这样的电路描述可以采取(例如,VHDL或者Verilog)寄存器传输级(RTL)电路描述、门级电路描述、晶体管级电路描述、或者掩模描述、或者它们的各种组合的形式。电路描述通常实施在计算机可读存储介质(诸如,CD-ROM或者其它类型的存储技术)上。
从前述章节可以认识到,如上所述的图像处理器可以实施在计算机系统上的硬件中(例如,作为处理来自手持式装置的相机的数据的手持式装置的片上系统(SOC)的一部分)。在图像处理器被实施为硬件电路的情况下,注意,可以直接从相机接收由图像处理器进行处理的图像数据。此处,图像处理器可以是分立相机的一部分或者具有集成相机的计算系统的一部分。在后者的情况下,可以直接从相机或者从计算系统的系统存储器接收图像数据(例如,相机将其图像数据发送至系统存储器,而不是发送至图像处理器)。还要注意,在前述章节中描述的大多数特征可以适用于图形处理器单元(该图形处理器单元渲染动画)。
图7提供了计算系统的示例性描述。下面描述的计算系统的许多组件适用于具有集成相机和关联的图像处理器的计算系统(例如,手持装置,诸如智能电话或者平板计算机)。本领域的普通技术人员将能够容易地在两者之间进行描述。
如在图7中看到的,基本计算系统可以包括中央处理单元701(例如,该中央处理单元701可以包括布置在多核处理器或者应用处理器上的多个通用处理核715_1至715_N和主存储器控制器717)、系统存储器702、显示器703(例如,触摸屏、平板)、本地有线点对点链路(例如,USB)接口704、各个网络I/O功能705(诸如,以太网接口和/或蜂窝式调制解调器子系统)、无线局域网(例如,WiFi)接口706、无线点对点链路(例如,蓝牙)接口707、和全球定位系统接口708、各个传感器709_1至709_N、一个或者多个相机710、电池711、电源管理控制单元712、扬声器和麦克风713、和音频编码器/解码器714。
应用处理器或者多核处理器750可以包括其CPU 701内的一个或者多个通用处理核715、一个或者多个图形处理单元716、存储器管理功能717(例如,存储器控制器)、I/O控制功能718、和图像处理单元719。通用处理核715通常执行计算系统的操作系统和应用软件。图形处理单元716通常执行图形密集型功能以例如,生成呈现在显示器703上的图形信息。存储器控制功能717与系统存储器702对接以向从系统存储器702写入数据/从其读取数据。电源管理控制单元712通常控制系统700的功耗。
可以根据上文在前述章节中详细描述的任何图像处理单元实施例来实现图像处理单元719。替选地或者组合地,IPU 719可以作为其协处理器耦合至GPU 716和GPU 701中的任一者或者两者。另外,在各个实施例中,可以用上文详细描述的任何图像处理器特征来实现GPU716。
相对于整个计算系统,触摸屏显示器703、通信接口704至707、GPS接口708、传感器709、相机710、和扬声器/麦克风编解码器713、714中的每一个都可以被视作各种形式的I/O(输入和/或输出),在适当地情况下,该整个计算系统还包括集成外围设备(例如,一个或者多个相机710)。根据实施方式,这些I/O组件中的各个I/O组件可以集成在应用处理器/多核处理器750上或者可以位于管芯(die)之外或者位于应用处理器/多核处理器750的封装外。
在一个或者多个相机710包括深度相机的实施例中,该深度相机能够测量相机与其视野中的物体之间的深度。在应用处理器或者其它处理器的通用CPU内核(或者具有执行程序代码的指令执行管线的其它功能块)上执行的应用软件、操作系统软件、装置驱动器软件、和/或固件可以执行上述任何功能。
本发明的实施例可以包括如上文陈述的各个过程。这些过程可以实施为机器可执行指令。可以使用这些指令来使得通用处理器或者专用处理器执行特定过程。替选地,可以由包含用于执行过程的硬连线逻辑的特定硬件组件或者由编程计算机组件和自定义硬件组件的任何组合执行这些过程。
还可以提供本发明的元素作为用于存储机器可执行指令的机器可读介质。机器可读介质可以包括但不限于,软盘、光盘、CD-ROM、和磁光盘、FLASH存储器、ROM、RAM、EPROM、EEPROM、磁卡或者光卡、或者适合于存储电子指令的传播介质或者其它类型的介质/机器可读介质。例如,本发明可以作为计算机程序进行下载,可以经由通信链路(例如,调制解调器或者网络连接)通过实施为载波或者其它传播介质的数据信号将该计算机程序从远程计算机(例如,服务器)传输至请求计算机(例如,客户端)。
在前述说明书中,已经参照本发明的特定示例性实施例描述了本发明。然而,显而易见的是,可以在不脱离如随附权利要求书中阐述的本发明的更宽泛的精神和范围的情况下对其进行各种修改和改变。因此,说明书和附图被认为是说明性的而不是限制性的。
Claims (23)
1.一种用于图像处理的设备,包括:
执行单元,所述执行单元包括乘加计算单元、第一ALU逻辑单元、和第二ALU逻辑单元,所述执行单元用于执行:
第一指令,所述第一指令是乘加指令;
第二指令,所述第二指令用于在所述第一ALU逻辑单元和所述第二ALU逻辑单元同时运算的情况下执行并行ALU运算以产生所述第二指令的不同相应输出结果;
第三指令,所述第三指令用于在所述ALU逻辑单元中的一个根据所述ALU逻辑单元中的另一个的输出进行运算的情况下执行顺序ALU运算以确定所述第三指令的输出结果;
第四指令,所述第四指令用于执行迭代除法运算,其中所述第一ALU逻辑单元和所述第二ALU逻辑单元进行运算以确定第一除法结果数位值和第二除法结果数位值。
2.根据权利要求1所述的设备,其中,所述执行单元进一步执行第五指令,所述第五指令也用于在所述第一ALU逻辑单元和所述第二ALU逻辑单元同时运算的情况下执行并行ALU运算。
3.根据权利要求2所述的设备,其中,所述第二指令和所述第五指令根据不同的数据宽度运算。
4.根据权利要求3所述的设备,其中,所述宽度中的一个宽度是8位,并且所述宽度中的另一个宽度是16位。
5.根据权利要求1所述的设备,其中,所述第一ALU逻辑单元和所述第二ALU逻辑单元与进位项信号线耦合。
6.根据权利要求1所述的设备,其中,所述执行单元进一步执行第五指令,所述第五指令是FUSED指令。
7.根据权利要求1所述的设备,其中,所述执行单元进一步执行第五指令,所述第五指令是双宽指令,其中所述第一ALU逻辑单元和所述第二ALU逻辑单元分别生成结果的不同的半部分。
8.根据权利要求1所述的设备,其中,所述第二指令、所述第三指令、和所述第四指令没有比所述第一指令消耗更多的时间,并且所述执行单元的循环时间与所述乘加指令的执行时间相对应。
9.一种用于图像处理的设备,包括:
图像处理器,所述图像处理器包括执行通道阵列,每条执行通道包括执行单元,所述执行单元包括乘加计算单元、第一ALU逻辑单元、和第二ALU逻辑单元,所述执行单元用于执行:
第一指令,所述第一指令是乘加指令;
第二指令,所述第二指令用于在所述第一ALU逻辑单元和所述第二ALU逻辑单元同时运算的情况下执行并行ALU运算以产生所述第二指令的不同相应输出结果;
第三指令,所述第三指令用于在所述ALU逻辑单元中的一个根据所述ALU逻辑单元中的另一个的输出进行运算的情况下执行顺序ALU运算以确定所述第三指令的输出结果;
第四指令,所述第四指令用于执行迭代除法运算,其中所述第一ALU逻辑单元和所述第二ALU逻辑单元进行运算以确定第一结果数位值和第二结果数位值。
10.根据权利要求9所述的设备,其中,所述图像处理器进一步包括二维移位寄存器阵列结构,其中,所述二维移位寄存器阵列的阵列位置本地耦合至所述执行通道阵列的相应执行通道。
11.根据权利要求9所述的设备,其中,所述执行单元进一步执行第五指令,所述第五指令也用于在所述第一ALU逻辑单元和所述第二ALU逻辑单元同时运算的情况下执行并行ALU运算。
12.根据权利要求11所述的设备,其中,所述第二指令和所述第五指令根据不同的数据宽度运算。
13.根据权利要求12所述的设备,其中,所述宽度中的一个宽度是8位,并且所述宽度中的另一个宽度是16位。
14.根据权利要求11所述的设备,其中,所述第一ALU逻辑单元和所述第二ALU逻辑单元与进位项信号线耦合。
15.根据权利要求10所述的设备,其中,所述执行单元进一步执行第五指令,所述第五指令是FUSED指令。
16.根据权利要求10所述的设备,其中,所述执行单元进一步执行第五指令,所述第五指令是双宽指令,其中所述第一ALU逻辑单元和所述第二ALU逻辑单元分别生成结果的不同的半部分。
17.根据权利要求9所述的设备,其中,所述第二指令、所述第三指令、和所述第四指令比所述第一指令消耗更少的时间,并且所述执行单元的循环时间与由所述第一指令消耗的时间相称。
18.根据权利要求9所述的设备,其中,所述图像处理器在计算系统内。
19.一种用于图像处理的设备,包括:
执行单元的电路设计综合工具兼容描述,所述执行单元包括乘加计算单元、第一ALU逻辑单元、和第二ALU逻辑单元,所述执行单元用于执行:
第一指令,所述第一指令是乘加指令;
第二指令,所述第二指令用于在所述第一ALU逻辑单元和所述第二ALU逻辑单元同时运算的情况下执行并行ALU运算以产生所述第二指令的不同相应输出结果;
第三指令,所述第三指令用于在所述ALU逻辑单元中的一个根据所述ALU逻辑单元中的另一个的输出进行运算的情况下执行顺序ALU运算以确定所述第三指令的输出结果;
第四指令,所述第四指令用于执行迭代除法运算,其中所述第一ALU逻辑单元和所述第二ALU逻辑单元进行运算以确定第一除法结果数位值和第二除法结果数位值。
20.根据权利要求19所述的设备,其中,所述描述进一步描述了包括执行通道阵列的图像处理器,所述执行通道中的一条执行通道包括所述执行单元。
21.根据权利要求20所述的设备,其中,所述图像处理器进一步包括二维移位寄存器阵列电路,其中,所述二维移位寄存器阵列电路的阵列位置本地耦合至所述执行通道阵列中的相应ALU单元。
22.根据权利要求19所述的设备,其中,所述执行单元进一步执行第五指令,所述第五指令也用于在所述第一ALU逻辑单元和所述第二ALU逻辑单元同时运算的情况下执行并行ALU运算。
23.一种用于图像处理的方法,包括:
用图像处理器的执行单元执行以下:
执行第一指令,所述第一指令是乘加指令;
执行第二指令,包括在第一ALU逻辑单元和第二ALU逻辑单元同时运算的情况下执行并行ALU运算以产生所述第二指令的不同相应输出结果;
执行第三指令,包括在所述ALU逻辑单元中的一个根据所述ALU逻辑单元中的另一个的输出进行运算的情况下执行顺序ALU运算以确定所述第三指令的输出结果;
执行第四指令,包括执行迭代除法运算,其中所述第一ALU逻辑单元和所述第二ALU逻辑单元进行运算以确定第一除法结果数位值和第二除法结果数位值。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/960,334 | 2015-12-04 | ||
US14/960,334 US9830150B2 (en) | 2015-12-04 | 2015-12-04 | Multi-functional execution lane for image processor |
PCT/US2016/057771 WO2017095547A1 (en) | 2015-12-04 | 2016-10-19 | Multi-functional execution lane for image processor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108139886A CN108139886A (zh) | 2018-06-08 |
CN108139886B true CN108139886B (zh) | 2021-11-16 |
Family
ID=57223790
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680060253.5A Active CN108139886B (zh) | 2015-12-04 | 2016-10-19 | 用于图像处理器的多功能执行通道 |
Country Status (9)
Country | Link |
---|---|
US (4) | US9830150B2 (zh) |
EP (2) | EP3633504B1 (zh) |
JP (1) | JP6789287B2 (zh) |
KR (1) | KR102000894B1 (zh) |
CN (1) | CN108139886B (zh) |
DE (1) | DE112016005521T5 (zh) |
GB (1) | GB2561306A (zh) |
TW (3) | TWI622014B (zh) |
WO (1) | WO2017095547A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10261786B2 (en) | 2017-03-09 | 2019-04-16 | Google Llc | Vector processing unit |
US10534736B1 (en) * | 2018-12-31 | 2020-01-14 | Texas Instruments Incorporated | Shared buffer for multi-output display systems |
CN109902795B (zh) * | 2019-02-01 | 2023-05-23 | 京微齐力(北京)科技有限公司 | 处理单元设置有输入复用器的人工智能模块和系统芯片 |
US10552939B1 (en) | 2019-02-12 | 2020-02-04 | Google Llc | Image processor complex transfer functions |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4486848A (en) * | 1982-07-28 | 1984-12-04 | Sperry Corporation | Microprocessor parallel additive execution of a computer count ones instruction |
US5258944A (en) * | 1992-09-01 | 1993-11-02 | Cray Research, Inc. | High performance mantissa divider |
US5426600A (en) * | 1993-09-27 | 1995-06-20 | Hitachi America, Ltd. | Double precision division circuit and method for digital signal processor |
US5751618A (en) * | 1994-02-22 | 1998-05-12 | Texas Instruments Incorporated | Arithmetic circuit |
CN102637124A (zh) * | 2012-03-22 | 2012-08-15 | 中国电子科技集团公司第五十八研究所 | 一种基4fft算法的并行处理装置及方法 |
CN102750133A (zh) * | 2012-06-20 | 2012-10-24 | 中国电子科技集团公司第五十八研究所 | 支持simd的32位三发射的数字信号处理器 |
Family Cites Families (89)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US542600A (en) * | 1895-07-09 | Lattice hedge fence and method of plashing | ||
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 |
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 |
US7395298B2 (en) * | 1995-08-31 | 2008-07-01 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed data |
US5777918A (en) * | 1995-12-22 | 1998-07-07 | International Business Machines Corporation | Fast multiple operands adder/subtracter based on shifting |
JP3573755B2 (ja) | 1996-01-15 | 2004-10-06 | シーメンス アクチエンゲゼルシヤフト | 画像処理プロセッサ |
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 |
EP1164544B1 (en) | 1999-03-16 | 2011-11-02 | Hamamatsu Photonics K.K. | High-speed vision sensor |
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 |
US6606700B1 (en) * | 2000-02-26 | 2003-08-12 | Qualcomm, Incorporated | DSP with dual-mac processor and dual-mac coprocessor |
US7124160B2 (en) * | 2000-03-08 | 2006-10-17 | Sun Microsystems, Inc. | Processing architecture having parallel arithmetic capability |
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 |
US6675376B2 (en) * | 2000-12-29 | 2004-01-06 | Intel Corporation | System and method for fusing instructions |
US7286717B2 (en) | 2001-10-31 | 2007-10-23 | Ricoh Company, Ltd. | Image data processing device processing a plurality of series of data items simultaneously in parallel |
JP4146654B2 (ja) | 2002-02-28 | 2008-09-10 | 株式会社リコー | 画像処理回路、複合画像処理回路、および、画像形成装置 |
US9170812B2 (en) | 2002-03-21 | 2015-10-27 | Pact Xpp Technologies Ag | Data processing system having integrated pipelined array data processor |
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 |
WO2004092949A2 (en) * | 2003-04-15 | 2004-10-28 | Koninklijke Philips Electronics N.V. | Processing system with instruction-and thread-level parallelism |
EP1656622B1 (en) * | 2003-08-15 | 2007-05-16 | Koninklijke Philips Electronics N.V. | Parallel processing array |
GB2409065B (en) * | 2003-12-09 | 2006-10-25 | Advanced Risc Mach Ltd | Multiplexing operations in SIMD processing |
US7873815B2 (en) * | 2004-03-04 | 2011-01-18 | Qualcomm Incorporated | Digital signal processors with configurable dual-MAC and dual-ALU |
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 | 富士通マイクロエレクトロニクス株式会社 | 画像処理装置及び画像処理方法 |
ATE504043T1 (de) | 2005-04-28 | 2011-04-15 | Univ Edinburgh | Umkonfigurierbares anweisungs-zellen-array |
US7882339B2 (en) | 2005-06-23 | 2011-02-01 | Intel Corporation | Primitives to enhance thread-level speculation |
JP2007067917A (ja) | 2005-08-31 | 2007-03-15 | Matsushita Electric Ind Co Ltd | 画像データ処理装置 |
US7602974B2 (en) | 2005-10-21 | 2009-10-13 | Mobilic Technology (Cayman) Corp. | Universal fixed-pixel-size ISP scheme |
FR2895103B1 (fr) | 2005-12-19 | 2008-02-22 | Dxo Labs Sa | Procede et systeme de traitement de donnees numeriques |
US7555514B2 (en) * | 2006-02-13 | 2009-06-30 | Atmel Corportation | Packed add-subtract operation in a microprocessor |
US7802073B1 (en) | 2006-03-29 | 2010-09-21 | Oracle America, Inc. | Virtual core management |
US7882307B1 (en) * | 2006-04-14 | 2011-02-01 | Tilera Corporation | Managing cache memory in a parallel processing environment |
US20080111823A1 (en) | 2006-11-13 | 2008-05-15 | Faraday Technology Corp. | Graphics processing system |
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 |
US20080244222A1 (en) | 2007-03-30 | 2008-10-02 | Intel Corporation | Many-core processing using virtual processors |
JP4389976B2 (ja) | 2007-06-29 | 2009-12-24 | ブラザー工業株式会社 | 画像処理装置および画像処理プログラム |
US8521800B1 (en) * | 2007-08-15 | 2013-08-27 | Nvidia Corporation | Interconnected arithmetic logic units |
JP4844853B2 (ja) | 2007-09-05 | 2011-12-28 | 国立大学法人東北大学 | 固体撮像素子及びその駆動方法 |
CN102047241B (zh) | 2008-05-30 | 2014-03-12 | 先进微装置公司 | 本地与全局数据共享 |
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 |
KR101572879B1 (ko) | 2009-04-29 | 2015-12-01 | 삼성전자주식회사 | 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법 |
JP5385982B2 (ja) | 2009-07-16 | 2014-01-08 | 株式会社日立製作所 | 障害の根本原因に対応した復旧方法を表す情報を出力する管理システム |
TWI398781B (zh) * | 2009-08-03 | 2013-06-11 | Hon Hai Prec Ind Co Ltd | 離散餘弦轉換電路及裝置 |
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 |
WO2012105174A1 (ja) | 2011-01-31 | 2012-08-09 | パナソニック株式会社 | プログラム生成装置、プログラム生成方法、プロセッサ装置及びマルチプロセッサシステム |
US20120254588A1 (en) | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask |
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 | 京セラドキュメントソリューションズ株式会社 | 画像形成装置 |
WO2013101147A1 (en) | 2011-12-30 | 2013-07-04 | Intel Corporation | Configurable reduced instruction set core |
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 | 晨星半導體股份有限公司 | 影像處理裝置與影像處理方法 |
US9232139B2 (en) | 2012-07-24 | 2016-01-05 | Apple Inc. | Image stabilization using striped output transformation unit |
US9588766B2 (en) | 2012-09-28 | 2017-03-07 | Intel Corporation | Accelerated interlane vector reduction instructions |
US10318308B2 (en) | 2012-10-31 | 2019-06-11 | Mobileye Vision Technologies Ltd. | Arithmetic logic unit |
US9378181B2 (en) | 2012-11-09 | 2016-06-28 | Intel Corporation | Scalable computing array |
US8954992B2 (en) | 2013-03-15 | 2015-02-10 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Distributed and scaled-out network switch and packet processing |
US9323535B2 (en) | 2013-06-28 | 2016-04-26 | Intel Corporation | Instruction order enforcement pairs of instructions, processors, methods, and systems |
GB2522290B (en) * | 2014-07-14 | 2015-12-09 | Imagination Tech Ltd | Running a 32-bit operating system on a 64-bit machine |
US9749548B2 (en) | 2015-01-22 | 2017-08-29 | Google Inc. | Virtual linebuffers for image signal processors |
US9785423B2 (en) | 2015-04-23 | 2017-10-10 | Google Inc. | Compiler for translating between a virtual image processor instruction set architecture (ISA) and target hardware having a two-dimensional shift array structure |
US9769356B2 (en) | 2015-04-23 | 2017-09-19 | Google Inc. | Two dimensional shift array for image processor |
US9965824B2 (en) | 2015-04-23 | 2018-05-08 | Google Llc | Architecture for high performance, power efficient, programmable image processing |
US10291813B2 (en) | 2015-04-23 | 2019-05-14 | Google Llc | Sheet generator for image processor |
US9772852B2 (en) | 2015-04-23 | 2017-09-26 | Google Inc. | Energy efficient processor core architecture for image processor |
US10095479B2 (en) | 2015-04-23 | 2018-10-09 | Google Llc | Virtual image processor instruction set architecture (ISA) and memory model and exemplary target hardware having a two-dimensional shift array structure |
US9756268B2 (en) | 2015-04-23 | 2017-09-05 | Google Inc. | Line buffer unit for image processor |
-
2015
- 2015-12-04 US US14/960,334 patent/US9830150B2/en active Active
-
2016
- 2016-10-19 CN CN201680060253.5A patent/CN108139886B/zh active Active
- 2016-10-19 JP JP2018519299A patent/JP6789287B2/ja active Active
- 2016-10-19 EP EP19213291.8A patent/EP3633504B1/en active Active
- 2016-10-19 GB GB1805590.5A patent/GB2561306A/en not_active Withdrawn
- 2016-10-19 WO PCT/US2016/057771 patent/WO2017095547A1/en active Application Filing
- 2016-10-19 DE DE112016005521.8T patent/DE112016005521T5/de active Pending
- 2016-10-19 EP EP16790499.4A patent/EP3384376B1/en active Active
- 2016-10-19 KR KR1020187010230A patent/KR102000894B1/ko active IP Right Grant
- 2016-11-17 TW TW105137593A patent/TWI622014B/zh active
- 2016-11-17 TW TW107106346A patent/TWI680435B/zh active
- 2016-11-17 TW TW108133222A patent/TWI724545B/zh active
-
2017
- 2017-05-10 US US15/591,955 patent/US10185560B2/en active Active
-
2019
- 2019-01-18 US US16/251,887 patent/US20190213006A1/en not_active Abandoned
-
2022
- 2022-03-10 US US17/691,615 patent/US20220206796A1/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4486848A (en) * | 1982-07-28 | 1984-12-04 | Sperry Corporation | Microprocessor parallel additive execution of a computer count ones instruction |
US5258944A (en) * | 1992-09-01 | 1993-11-02 | Cray Research, Inc. | High performance mantissa divider |
US5426600A (en) * | 1993-09-27 | 1995-06-20 | Hitachi America, Ltd. | Double precision division circuit and method for digital signal processor |
US5751618A (en) * | 1994-02-22 | 1998-05-12 | Texas Instruments Incorporated | Arithmetic circuit |
CN102637124A (zh) * | 2012-03-22 | 2012-08-15 | 中国电子科技集团公司第五十八研究所 | 一种基4fft算法的并行处理装置及方法 |
CN102750133A (zh) * | 2012-06-20 | 2012-10-24 | 中国电子科技集团公司第五十八研究所 | 支持simd的32位三发射的数字信号处理器 |
Non-Patent Citations (2)
Title |
---|
A Core Generator for Multi-ALU Processors Utilized in Genetic Parallel Programming;Z. Gajda 等;《2006 IEEE Design and Diagnostics of Electronic Circuits and systems》;20060705;第1-3页 * |
微控制器中ALU与移位逻辑的设计与改进;黄海林 等;《计算机科学与工程》;20040220;第26卷(第1期);第95-98页 * |
Also Published As
Publication number | Publication date |
---|---|
TWI622014B (zh) | 2018-04-21 |
TW201721580A (zh) | 2017-06-16 |
CN108139886A (zh) | 2018-06-08 |
JP2018532200A (ja) | 2018-11-01 |
JP6789287B2 (ja) | 2020-11-25 |
US9830150B2 (en) | 2017-11-28 |
EP3384376A1 (en) | 2018-10-10 |
TWI680435B (zh) | 2019-12-21 |
US20190213006A1 (en) | 2019-07-11 |
US20170161064A1 (en) | 2017-06-08 |
US20170242695A1 (en) | 2017-08-24 |
GB201805590D0 (en) | 2018-05-23 |
WO2017095547A1 (en) | 2017-06-08 |
TWI724545B (zh) | 2021-04-11 |
US20220206796A1 (en) | 2022-06-30 |
KR20180052721A (ko) | 2018-05-18 |
US10185560B2 (en) | 2019-01-22 |
EP3384376B1 (en) | 2019-12-04 |
TW201816715A (zh) | 2018-05-01 |
KR102000894B1 (ko) | 2019-07-16 |
EP3633504A1 (en) | 2020-04-08 |
EP3633504B1 (en) | 2021-10-06 |
TW202004655A (zh) | 2020-01-16 |
DE112016005521T5 (de) | 2018-08-30 |
GB2561306A (en) | 2018-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3602278B1 (en) | Systems, methods, and apparatuses for tile matrix multiplication and accumulation | |
JP5089776B2 (ja) | 浮動小数点演算のための再構成アレイプロセッサ | |
US20190102179A1 (en) | Processors and methods for privileged configuration in a spatial array | |
EP3513281B1 (en) | Vector multiply-add instruction | |
US20220206796A1 (en) | Multi-functional execution lane for image processor | |
US20210216318A1 (en) | Vector Processor Architectures | |
KR20190022627A (ko) | 프로그램 가능한 2차원 이미지 프로세서상의 컨볼루션 신경망 | |
KR20240011204A (ko) | 행렬 연산 가속기의 명령어들을 위한 장치들, 방법들, 및 시스템들 | |
US10521225B2 (en) | Matrix multiplication at memory bandwidth | |
CN111767516A (zh) | 用于利用所选择的舍入来执行浮点加法的系统和方法 | |
CN107533460B (zh) | 紧缩有限冲激响应(fir)滤波处理器、方法、系统和指令 | |
CN110909883A (zh) | 用于执行指定三元片逻辑操作的指令的系统和方法 | |
CN107145335B (zh) | 用于大整数运算的向量指令的装置和方法 | |
TWI752343B (zh) | 用於執行絕對差計算之加總的執行單元電路、影像處理器以及方法 | |
TW202113630A (zh) | 用於矩陣運算加速器的指令之設備、方法及系統 | |
GB2532847A (en) | Variable length execution pipeline | |
EP1936492A1 (en) | SIMD processor with reduction unit | |
US20050055394A1 (en) | Method and system for high performance, multiple-precision multiply-and-add operation | |
CN112149050A (zh) | 用于增强的矩阵乘法器架构的装置、方法和系统 | |
US20230094414A1 (en) | Matrix operation with multiple tiles per matrix dimension | |
US11704092B2 (en) | High-precision anchored-implicit processing | |
GUPTA et al. | A Review Paper on Arithmetic and Logical Unit for Multimedia Processing Unit | |
GB2537523A (en) | Multimode variable length execution pipeline |
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 |