CN109614075A - 算术逻辑单元 - Google Patents

算术逻辑单元 Download PDF

Info

Publication number
CN109614075A
CN109614075A CN201811377785.9A CN201811377785A CN109614075A CN 109614075 A CN109614075 A CN 109614075A CN 201811377785 A CN201811377785 A CN 201811377785A CN 109614075 A CN109614075 A CN 109614075A
Authority
CN
China
Prior art keywords
data
routing
arithmetic logic
unit
logic 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
Application number
CN201811377785.9A
Other languages
English (en)
Other versions
CN109614075B (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.)
Mobileye Technologies Ltd
Original Assignee
Mobileye Technologies Ltd
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 Mobileye Technologies Ltd filed Critical Mobileye Technologies Ltd
Priority to CN201811377785.9A priority Critical patent/CN109614075B/zh
Publication of CN109614075A publication Critical patent/CN109614075A/zh
Application granted granted Critical
Publication of CN109614075B publication Critical patent/CN109614075B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03HIMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
    • H03H17/00Networks using digital techniques
    • H03H17/02Frequency selective networks
    • H03H17/06Non-recursive filters
    • 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/8053Vector processors

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Image Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Electric Propulsion And Braking For Vehicles (AREA)

Abstract

本发明涉及一种算术逻辑单元ALU,其包括被连接到多个数据通道以驱动第一数据到数据通道的第一路由网格;被连接到数据通道以驱动第二数据到数据通道的第二路由网格。每个数据通道包括多个,例如N个,函数单元,函数单元具有来自第一路由网格的第一输入和来自第二路由网格的第二输入。函数单元成对地计算在各自的第一输入上的相应的第一数据和在各自的第二输入上的相应的第二数据的函数。每个数据通道包括具有适于从函数单元接收K′位每字的输入的缩减单元。缩减单元被配置为执行缩减操作,该缩减操作被配置为输出具有缩减了数目的J′位每通道的输出结果,其中J′小于N乘以K′。

Description

算术逻辑单元
本申请是申请日为2013年10月31日,申请号为201310529403.0,发明名称为“算数逻辑单元”的申请的分案申请。
技术领域
本发明涉及计算机体系结构。
背景技术
在近几年里,基于摄像机的驾驶员辅助***(DAS)已经投入市场,包括,车道偏离警示***(LDW)、自动高光束控制***(AHC)、行人识别、以及前方碰撞预警(FCW)。这些驾驶员辅助***可以使用从安装于交通工具中的摄像机捕获的多个图像帧中探测到的多个补丁(patch)的实时图像处理。
向量处理器或者阵列处理器是执行含有对称之为向量的一维数据阵列进行操作的指令的指令集的处理器。比较起来,标量处理器对单个数据进行操作。最常用的处理器是标量处理器。
向量处理器或者阵列处理器——例如执行含有对一维数据阵列或向量进行操作的指令的指令集的传统的中央处理单元(CPU)的处理器。相比之下,标量处理器具有对单个的数据项进行操作的指令。
VLIW(超长指令字)数字信号处理单元含有几个并行操作的子处理单元。VLIW含有多个指向各种子处理单元的运算代码,由于每个子单元同时得到其运算代码,因此允许并行处理。运算代码是机器语言指令的一部分,其规定了要执行的操作。
发明内容
本文所使用的术语“单指令多数据”(SIMD)指的是具有同时在多个数据点上执行相同操作的多个处理元件的一类并行计算机。这样,这种SIMD机器利用数据级并行性。
各种算术逻辑单元(ALU)可能被提供,其包括连接到多个数据通道的第一路由网格,该第一路由网格适于驱动第一数据到数据通道;连接到数据通道的第二路由网格,该第二路由网格适于驱动第二数据到数据通道。每个数据通道包括多个(如,N个)函数单元,这些函数单元具有来自第一路由网格的第一输入和来自第二路由网格的第二输入。函数单元可操作为成对地计算各自的第一输入上的相应的第一数据和各自的第二输入上的相应的第二数据的函数。每个数据通道包括缩减单元,缩减单元具有适于从函数单元接收K′位每字的输入。缩减单元被配置为执行缩减操作,缩减操作被配置为输出具有缩减了数目的J′位每通道的输出结果,其中J′小于N乘以K′。多个数据通道可包括N个数据通道。全局控制块可以被配置为控制函数单元的函数和控制第一路由网格的第一路由,以及控制第二路由网格的第二路由。函数可以在第一数据的数据a与第二数据的数据b之间被执行。函数可以为:加法a+b、减法a-b、乘法a*b、a和b之间的关系运算、以及差的绝对值ABS(a-b)。缩减操作可以包括加法、找出最大值和找出最小值。数据通道可以在其中彼此独立地执行各自的计算。
使用本文所公开的算术逻辑单元,对于线性滤波、矩阵乘法、中值滤波、局部最大值滤波、局部最小值滤波和绝对差值和滤波中的任何一项,可执行各种方法。
各种计算方法可以由算术逻辑单元(ALU)执行,包括,第一路由,从而驱动第一数据到多个数据通道;第二路由,从而驱动第二数据到数据通道。且在数据通道中:(i)成对地计算相应的第一数据和相应的第二数据的函数的N个实例,从而输出具有K′位每字的N个结果。(ii)对N个结果执行操作,从而输出具有缩减了数目的J′位每通道的输出结果。J′小于N乘以K′。函数在第一数据的数据a与第二数据的数据b之间执行。函数可以为:加法a+b、减法a-b、乘法a*b、a和b之间的关系运算、以及差的绝对值ABS(a-b)。函数的N个实例被控制以选择函数,且第一和第二路由被控制。可以避免存储第一和第二数据于ALU中,且可以避免存储第一和第二数据的函数的中间结果。
由数据通道的N个实例执行的计算可以独立被执行。
本申请的实施方式主要包括以下方面:
1)一种算术逻辑单元ALU,包括:
第一路由网格,其被连接到多个数据通道,其中所述第一路由网格适于驱动第一数据到所述数据通道;
第二路由网格,其被连接到所述数据通道,其中所述第二路由网格适于驱动第二数据到所述数据通道;
其中,每个所述数据通道包括数量为N的多个函数单元,该函数单元具有来自所述第一路由网格的第一输入和来自所述第二路由网格的第二输入,其中,所述函数单元可操作为计算在各自的所述第一输入上的相应的所述第一数据和在各自的所述第二输入上的相应的所述第二数据的函数;
其中,每个所述数据通道包括具有适于从所述函数单元接收K′位每字的输入端的缩减单元,其中,所述缩减单元被配置为执行缩减操作,该缩减操作被配置为输出具有缩减了数目的J′位每字的输出结果,其中,J′小于N乘以K′。
2)如第1)项所述的算术逻辑单元ALU,其中,所述多个数据通道包括N个数据通道。
3)如第1)项所述的算术逻辑单元ALU,还包括:
全局控制块,其被配置为控制所述函数单元的函数且控制所述第一路由网格的第一路由,以及控制所述第二路由网格的第二路由。
4)如第1)项所述的算术逻辑单元ALU,其中,所述函数在所述第一数据的数据a与所述第二数据的数据b之间被执行,其中,所述函数是从由加法a+b、减法a-b、乘法a*b、a和b之间的关系运算、以及差的绝对值ABS(a-b)组成的组中选择的。
5)如第1)项所述的算术逻辑单元ALU,其中,所述缩减操作是从由加法、找出最大值和找出最小值组成的组中选择的。
6)如第1)项所述的算术逻辑单元ALU,其中,所述数据通道在其中相互独立地执行各自的计算。
7)一种使用如第1)项中所述的ALU来执行线性滤波、矩阵乘法、中值滤波、局部最大值滤波、局部最小值滤波和绝对差值和滤波中的任何一项的方法。
8)一种能够由算术逻辑单元ALU执行的计算方法,所述方法包括:
进行第一路由,从而驱动第一数据到多个数据通道;
进行第二路由,从而驱动第二数据到所述数据通道;以及
在所述数据通道中:
(i)计算相应的第一数据和相应的第二数据的函数的N个实例,从而输出具有K′位每字的N个结果;
(ii)对所述N个结果执行操作,从而输出具有缩减了数目的J′位每字的输出结果,其中,J′小于N乘以K′。
9)如第8)项所述的计算方法,其中,所述函数在所述第一数据的数据a与所述第二数据的数据b之间执行,其中,所述函数是从由加法a+b、减法a-b、乘法a*b、a和b之间的关系运算、以及差的绝对值ABS(a-b)组成的组中选择的。
10)如第8)项所述的计算方法,还包括:
控制所述N个实例,从而选择所述函数并控制所述第一路由和第二路由。
11)如第8)项所述的计算方法,还包括:
避免在所述ALU中存储所述第一数据和所述第二数据。
12)如第8)项所述的计算方法,还包括:
避免存储所述第一数据和所述第二数据的所述函数的中间结果。
13)如第8)项所述的计算方法,其中,计算所述N个实例由所述数据通道独立地执行。
当结合附图进行考虑时,从以下的详细描述中,上述内容和/或其他方面将会变得明显。
附图说明
参照附图,仅仅通过示例的方式,在本文中描述了本发明,其中:
图1和图2说明的是,根据本发明的方面,包括安装于交通工具中的摄像机或图像传感器的***;
图3说明的是,根据本发明的特征,包括算术逻辑单元的处理器的简化的***方框图;
图4显示的是,根据本发明的特征,图3中所示的算术逻辑单元的更多的细节;
图5说明的是,根据本发明的特征,作为图4中所示的算术逻辑单元的部分的数据通道;
图6显示的是,根据本发明的特征,通过图4中所示的端口SRC[M-1]的数据的示例性表示;
图7A说明的是,根据本发明的特征,可以用于实现一维垂直滤波的数据的路由的示例。
图7B说明的是,根据本发明的特征,可以应用于实现一维水平滤波的数据的路由的示例。
图8A和图8B说明的是,根据本发明的不同特征,可以使用的所执行的路由的示例。
图9说明的是根据本发明的实施方式的通用方法。
具体实施方式
现在将详细参考本发明的特征,这些特征的示例在附图中进行了说明,其中全文中相似的参考数字指的是相似的元件。以下参照附图描述了所述特征以解释本发明。
在详细解释本发明的特征之前,要理解的是,本发明并不限制于其应用于在以下描述中所阐述或附图中所描述的组件的布置和设计的细节。本发明能够具有其他特征或能够以各种方式进行实践或实施。还有,要理解的是,本文所采用的术语和措辞是出于描述的目的,而不应该理解为限制。
现在参考图1和图2,图1和图2说明的是根据本发明的一个方面的***16,其包括安装于交通工具18中的摄像机或图像传感器12。图像传感器12在向前的方向成像视场,实时提供图像帧15,且图像帧15被可能是向量处理器的图像处理器30所捕获。向量处理器30可以被用于同时处理图像帧15和/或并行服务于多个驾驶员辅助***/应用。使用带有车载软件的具体硬件电路和/或存储器302中的软件控制算法,可以执行驾驶员辅助***。图像传感器12可以是单色的或者黑白的,即,没有分色,或者图像传感器12可以是彩色感光的。通过图2中示例的方式,图像帧15被用于服务于行人检测20、交通标志识别(TSR)21和前方碰撞预警(FCW)22。向量处理器30可以被用于处理图像帧15,以探测和识别摄像机12的向前方向的视场的图像或图像的部分。
在某些情况中,在不同的驾驶员辅助应用之间,图像帧15被划分,而在其他的情况中,在不同的驾驶员辅助应用之间,图像帧15被共享。
虽然本发明的实施方式是以驾驶员辅助应用为背景而被展示的,但是本发明的实施方式可以等效地应用于其他实时信号处理应用和/或数字处理应用,例如通信、机器视觉、音频和/或语音处理。
通过引入的方式,本发明的各个方面是针对通过处理器30的SIMD算术逻辑单元(ALU)来增加计算吞吐量,而不必在增加寄存器宽度和存储带宽方面支付相应的价钱。
SIMD指令的最常用的形式对N个输入对进行操作,且产生N个输出,如,输入对的N个和、输入对的N个积,等等。例如,为了对吞吐量进行平方而使得产生N2个输出,N2个输入对被供应。因而,对吞吐量进行平方包含对寄存器大小和局部存储总线进行平方,达到N2的宽度。对输入进行平方付出了成本,即使大部分时间实际上仅仅利用了N2的宽度的一小部分,因为其发生于输入大小小于N2
因此这在含有保留N个项的寄存器的处理器30中支持一般超过N个输入对特别是N2个输入对的SIMD指令处理是有利的。一般情况下,实际上可能的是,给出与N成比例的数目的输入,以处理与N2成比例的数目的输入对,因为N数目的可能组合的数量的确成比例于N2
利用以上考虑增加计算吞吐量的任何***是专为一个特定领域定制的。例如,用于复数相乘的指令、或用于通过在计算机图形背景中投影矩阵而将坐标向量相乘的指令是SIMD指令的示例,SIMD指令的确执行比SIMD处理器接收的输入量更多的操作。这些指令是定制的,分别用于复数运算和计算机图形且允许选择将被处理的正确的输入组合。
各种实施方式中的本发明包括的***用于执行与N2成比例的数目的操作,假定输入的数目与N成比例且被定制用于嵌入式计算机视觉的需要。很好地映射到这些***且能够应用于视觉处理领域的示例算法是:
——线性滤波(相关/卷积),利用一维(一维)垂直/水平或二维(二维)滤波
——矩阵乘法(特别是用于对象分类)
——中值滤波
——SAD(绝对差值和)滤波(特别是用于图像视差计算和模板匹配)
——局部最大值滤波
以下展示执行这些示例算法的方法。
不像在许多专用于具体领域的SIMD指令的***,在本发明的实施方式中,指令和支持算法之间没有一对一的映射。即,一般当发现像“复数相乘”或者“投影矩阵乘以坐标向量”的指令时,根据本发明实施方式的示例性***并不具有“执行线性滤波”指令或特征,也不具有“进行中值滤波”特征、“执行矩阵乘法”特征等等,而是通过具体调度关于输入数据具体部分的更原始的操作来以软件执行各种算法。
现在参照图3,图3说明的是根据本发明示例的实施方式的处理器30的简化了的***方框图。存储器302通过图像帧总线310输入多个图像帧15。处理器30可以包括多个地址生成器单元(AGU)308,该地址生成器单元(AGU)308利用存储器总线331连接到存储器302。AGU 308操作为实时计算图像帧15的一个或多个窗口的存储器地址。算术逻辑单元(ALU)320和321(其可以相同或者可以不同)以及地址生成器308通过独立的总线从超长指令字(VLIW)指令寄存器322接收指令/命令(从而,允许同时执行相关的运算代码)。基于正在被处理的窗口尺寸,AGU 308可以利用信号通过事件线路32向累加器复位单元306通知事件,例如行结束、列结束。ALU 320和321包括累加器36,该累加器36当事件信号发生时,通过累加器复位线路34,经累加器复位单元306,可被实时复位。
存储器数据从存储器302下载到寄存器文件355,ALU 320/321从寄存器文件355输入数据。从ALU 320/321输出的结果被下载到寄存器文件355中。
现在参照附图4,附图4显示的是,根据本发明的一个特征,图3中所示的ALU 320的更多的细节。ALU 320根据时钟在数据路径SRC[0…M-2]336和SRC[0…M-1]334上独立地通过多通道400被输入数据驱动。
源操作数SRC[0…M-2]在数据路径336上被输入到预处理单元404。数据路径336的每个通道的位数为:
(M-1)×N×K
其中,
N是每个通道400的字数,其一般等于通道400的数量。
M是源操作数的数量,每个源操作数带有N个字。
K是每个字的位数。
预处理单元404的多个输出连接到各个输入缓冲器402的输入。缓冲器402的各自的输出连接到路由网格A408。路由网格A408输出0到N-1个数据向量,每个向量的范围为a0到aN-1,其连接到通道400的各自的输入端口A。
路由网格B 412的输出被输入到通道400的相关的端口B。路由网格B 412的输入经数据路径334来自于源操作数SRC[0…M-1]。路由网格B412的输出具有0到N-1的数据向量,每个向量的范围从b0到bN-1
数据路径334的宽度是N个通道400乘以K位每字。通道400的输出数据路径340提供数据给后处理单元410。沿每个输出数据路径340的每个通道的位数被表示为J′。输出数据流经宽度为N个通道乘以J位每输出字的数据路径332。
全局控制406经过线路338从VLIW 322接收控制信号。全局控制406提供用于各个通道400的控制线ctrl0到ctrlN-1,并提供(没有显示的)其他可选的控制线给预处理单元404、后处理单元410和路由网格408和412。
现在参照图5,图5更详细地示出根据本发明的一个特征的通道400。通道400具有0到N-1的函数单元500,这些函数单元分别从路由网格A408和路由网格B 412接收K位每字的向量数据(a0…aN-1)和(b0…bN-1)。函数单元500接收来自全局控制单元406的控制信号ctrl0…ctrlN-1
函数单元500是被硬件连线,以计算输入(a0,b0)…(aN,bN)的函数(像乘法a*b、差的绝对值|a-b|和像例如a<b、a<=b等的关系运算)。其他二元函数可被用于本发明的不同实施方式中。控制信号ctrl0…ctrlN-1可被用于控制或选择正在被计算的函数。
函数单元500的输出被组合到缩减单元504中,该缩减单元504执行位缩减操作,以将N字每通道乘以K位每字的位数缩减到小于N乘以K的J′位每通道。位缩减操作的示例可以是加法、返回最小值的函数、返回最大值的函数或任何其他的交换二元函数。如通道400中所示,数据可以使用循环累加器缓冲器502从缩减单元504被输出。另外,数据可以使用通用寄存器文件(未显示)代替循环累加器缓冲器502从缩减单元504被输出。
现在也参照图9,图9总结了根据本发明的实施方式的一个通用方法。在步骤91和92中,第一和第二数据成对地被路由到N个数据通道400。在步骤93,对第一和第二数据执行二元函数的N个实例,输出N个具有K′位每字的结果94。对于结果94执行位缩减操作95,以输出一个或多个具有J′位每通道400的结果96,其中J′小于N乘以K′。
现在参照图6,图6显示的是各个源操作数SRC[0]和SRC[1]中的数据如何通过在图4中作为数据线334示出的端口SRC[M-1]的示例性表示。每个通道400[0到N-1]与0到N-1的片(slice)相关,即,片[0]到片[N-1]。图6显示的是被安排用于一维水平滤波的情形的片。预处理单元404的操作被用于一维水平滤波的情形,以便预处理单元404被配置为生成起始于X、X+1、X+2...X+N-1的N个可能的窗口(“片”)。每个这种窗***有N个像素(这N个像素中,F个像素实际上被用于滤波)。下文进一步详细讨论一维水平滤波。
现在参照图7A,图7A说明的是可能用于路由网格A408以实现一维垂直滤波的数据路由的示例。通过保留图像窗口在输入缓冲器402中,在每一步向上移动图像窗口一行以得到下一个窗口,且在其通往通道400的路径上在每一步使用路由网格A408转置当前窗口(窗口是一行接着一行被读出,而不是一列接着一列被读出),以致每个通道400最后得到的是一列而不是一行,一维滤波避免从相同列取得N个像素。
现在参照图7B,图7B说明的是可被用于路由网格A408以实现最大为N的尺寸上的一维水平滤波的数据路由的示例。路由网格A408被配置成使得每个片(片[0]到片[N-1])被发送到其对应的通道400[N-1],且路由网格B 412被配置成使得滤波系数向量被发送到所有的通道400,即,转置路由被禁止。
现在参照图8A和图8B,图8A和图8B说明的是可被用于路由网格B412的所执行的路由示例。具体地,图8A是被启动转置路由的示例,而图8B是被禁止转置路由的示例。现在参照图8A,转置被启动,其中N=8字每通道400,N=8通道和K=8位每字。数据路径334载有8×8个数据字到路由网格412。字[0]通过数据路径342[0]被转置输入到通道400[0]的(b0…b7)。类似地,数据字[1]通过数据路径342[1]被转置输入到通道400[1]端口B的(b0…b7),以此类推,直到数据字[7]通过数据路径342[7]被转置输入到通道400[7]端口B的(b0…b7)。
线性滤波
线性滤波在信号处理中,特别是图像处理中,是普遍且重要的任务。使用线性滤波,诸如卷积和相关的重要的图像处理函数被执行。通常,诸如8乘8像素的小型滤波器在图像窗口上被扫描。线性滤波可以通过滤波器的值(如,灰度)乘以图像窗口对应的强度值而被执行。对于与窗口相关的滤波器的每个位置,中间乘积被存储和求和。该和是滤波器与窗口之间每个相对位移的过滤的图像窗口的数据。
现在展示一种使用***16中的处理器30执行线性滤波的方法。第一个示例是以水平的一维滤波的情形开始,而后进行讨论二维滤波,进而是垂直一维滤波。用于处理不同滤波尺寸和维度的众多细节除了与随后描述的线性滤波相关之外,还与其他的算法相关。
最大尺寸为N的一维水平滤波器
设想尺寸为F的一维水平滤波器,其中F<=N。该方法并行执行N个相关且N个附近的图像窗口与滤波器相关。特别是,如果最左边的图像窗口位于横坐标X且包含多达X+F个像素,那么N个窗口[X,X+F)、[X+1,X+1+F)、[X+2,X+2+F)、…、[X+N-1,X+N-1+F)将被并行处理。
在所有这N个窗口中的像素总数是N*F(当F=N时,最多是N2)。然而,窗口重叠,所以N-1+F个像素需要从范围[X,X+N-1+F)中读取,其中范围[X,X+N-1+F)包含在范围[X,X+N*2)中。
如下是用于一维水平滤波器的方法。在范围[X,X+N*2)中的N*2个像素通过数据线336上的端口SRC[0]和SRC[1]被提供给ALU 320。预处理单元404被配置为生成起始于X,X+1,X+2,…,X+N-1的N个可能窗口(“片”)。每个这样的窗***有N个像素(这N个像素中,F个像素实际是被用于过滤)。在图6中示出了对于N=8的情形,用于这种线性滤波的方法的预处理单元404的操作。
同时,滤波器系数通过数据线334上的端口SRC[M-1]被提供给ALU320。输入缓冲器402被绕开了。路由网格A408被配置成使得每个片被发送到其对应的通道400(如图7B中所示),而路由网格B 412被配置成使得滤波器系数向量被发送到所有通道(如图8B中所示)。
每个通道400将片与滤波器相关联——函数单元500被配置为执行乘法(a*b),且缩减块504被配置为执行加法,以便N个a*b的积被加到累加器缓冲器502的累加器。对于当F<=N的情形,在每一步中累加器都复位(被设置为0),以便获得N个积的全部的总和。注意,在线性滤波的情形中,每个累加器缓冲器502只有单个的累加器可以被应用。
在通道号0 400获得的N个积(当F<N时,某些结果为0)的和是窗口[X,X+F)的相关结果,在通道号[1]400的和是窗口[X+1,X+1+F)的结果,等等。这个结果在端口340被输出,且通过后处理单元410,被输出到端口332的外边(可能是到通用寄存器文件)。其中,后处理单元410能够在输出位的数目上执行进一步的截断,例如,通过截断可配置和的最低有效位(LSB)的数目,且在截断之前可选地四舍五入该和。
任意尺寸的一维水平滤波器
现在设想比较大的一维水平滤波器的情形,即当F>N时。让S为使得F/S≤N的最小的整数。那么,窗口[X,F)的相关结果将会在S个步骤之后在累加器502中获得,其中每一步的执行类似于上述F<=N的方法,差别在于在每一步被提供给ALU 320的数据。
具体地,在S个步骤的第一步,如上所述,像素[X,X+N*2)被精确地提供给ALU 320。在第二步,像素[X+N,X+N*3)被提供于相同端口336上,在第三步,提供像素[X+N*2,X+N*4),等等。类似地,在第一步,滤波系数0到N在端口334上被提供给ALU 320,然后是系数N到N*2,接着是N*2到N*3,等等。累加器502只在每S个步骤的第一步复位,在通道号i 400处一获得窗口[X+i,X+i+F)的结果之后,在这个时刻,接下来的N个窗口的处理将要开始。
注意,滤波器系数并不存储于ALU 320中,而是滤波器系数连续不断地提供给ALU320。连续不断地提供给ALU 320的滤波器系数对大型滤波器是很重要的,其不适合存储到本地ALU。
二维滤波器
二维滤波器的情形与大型一维滤波器的情形相当类似——再一次地,差别仅在于提供给ALU 320的数据。特别是,如果在二维滤波器中的行数是R,那么R*S个步骤被执行,而不是每N个窗口S个步骤,且每R*S个步骤累加器502仅被复位一次。
在获得N个图像窗口的第一行与第一滤波器行的相关性后——如上所述在S步骤中被精确执行,继续提供下一行的滤波器系数,且图像的下一行起始于坐标X、Y+1,且保持提供行,直到并包括起始于X、Y+R-1的行为止。在R*S个步骤之后,累加器502在通道号i 400处将对于在[X+i,X+i+F)×[Y,Y+R)处的窗口保持完全二维相关的结果。
一维垂直滤波器
本文所述的最后一个值得注意的情形是垂直的一维滤波器。垂直的一维滤波器是二维滤波器的特殊情形,但是应用与用于二维滤波器的方法相同的方法用于一维滤波器将是非常低效的。特别是,对于F个系数的滤波器,执行F个步骤,每个通道400仅一个乘法进行有效的工作;总体而言,对于N个通道400,正如在典型的宽为N的SIMD ALU中,每个步骤有N个有效的乘法累加。代替地,展示了利用ALU 320的N2个函数单元的方法。
例如,F≤N的情形——滤波器的尺寸最大是N。可以通过使图像分别与滤波器的每个N大小的子向量相关,输出结果给本地存储缓冲器并将这些部分相关相加,来处理较大的滤波器。特别是,VLIW SIMD主处理器非常适于执行在ALU 320的部分相关的计算,且并行进行使用VLIWSIMD主处理器的其他计算资源来更新存储器中的累加器缓冲器。
在一维垂直滤波器的情形中的目的是使图像窗口列与滤波器系数相关,取代水平滤波器的情形中的窗口行,因为对于列,每个通道400能够在每一步进行完整的关联(N个乘法累加)。如在水平的情形中一样,滤波器系数被提供——差别在于图像数据的提供,以便通道400得到窗口列而不是窗口行。
一维垂直滤波和二维滤波之间的差别并不是微小的原因在于,假设图像存储于行第一存储器布局中,且存储器具有宽为N的总线,在每一步N个像素能够轻易地从相同的行取得,但是N个像素不是从相同的列取得。不从相同的列取得N个像素的一个方法是保留图像窗口于输入缓冲器402中,在每一步将窗口向上移动一行,以得到下一个窗口,且在每一步在其通往通道400的路径上使用路由网格A408转置当前窗口(当前窗口是被一行接一行地读取,而不是一列接一列),以便每个通道400最终得到一列而不是一行。
在每一步,来自图像行的N个像素通过端口SRC[0]336被提供给ALU320。如图4中所示,缓冲器402被连接到它们相邻的缓冲器:缓冲器[1]402能够发送数据到缓冲器号[0]402,缓冲器号[2]402能够发送数据到缓冲器号[1]402,等等。这样,行从缓冲器402传播到下一个;新的行进行N个步骤,以传播到缓冲器号[0]402。在这个时候,N×N的图像窗口的N行存在于输入缓冲器402中。
因为在每一步来自下一个图像行的N个像素被提供,且已存在的行传播到链中的下一个缓冲器402,在每一步,存在基于X、Y的N×N窗口,而后是X、Y+1,接着是X、Y+2,等等。当经过这些窗口,继续前进到X+N,且经过在X+N、Y的窗口,而后是X+N、Y+1,等等。每个这样的窗***有高度为N的N个列,每列的前F个元素必与垂直的一维滤波器相关。为了提供这些列给通道400,路由网格A408被配置为如图7A所示(附图假设N=8)。
通过进行N×F有效的乘法累加,在每步尺寸为F的以上N个列已经被关联了。
在所展示的ALU上的线性滤波——总结
总之,根据以上本发明的实施方式,所展示的***30的操作方法具有以下期望的特性:
高计算吞吐量——每步N×F个操作,且对于较大滤波器接近N2
低输入/输出带宽以支持这种吞吐量——在2N和3N个项目之间。
支持大型滤波器,排除使用本地ALU存储。
有效地支持不同尺寸和维度的滤波器。
矩阵乘法
以下描述展示了对于尺寸达到N×N的输出矩阵的情形的矩阵乘法的映射。较大的输出矩阵——如,3N×5N——能够通过在一个单独的阶段计算每个N×N的子矩阵进行有效地处理——例如,在总计3×5=15个阶段中,被要求计算每个输出子矩阵的操作是独立的。假设输入矩阵A和B尺寸为N×L和L×N,导致N×N的输出矩阵(在最感兴趣的情形中,L明显大于N)。那么计算将占用L+N个步骤(在此期间,执行被问题陈述所要求的L×N×N个乘法)。N×N个的部分和被保留在通道400的循环累加器缓冲器502中(每个缓冲器502保留N个部分和)。
在L+N个步骤后,最终的N×N输出矩阵在循环累加器缓冲器502中可获得。最终的N×N输出矩阵可以在单独的步骤中或者与下个阶段并行地被读出。因此,如果有3×5个N×N的子矩阵要计算,当第二个被计算的时候第一个能够被读出,第三个被计算的时候第二个能够被读出,等等。最终的输出矩阵系数通过后处理单元410,其中最终的输出矩阵系数能够被可选地取整和/或使其较低位被截断以节省空间,或者经历其他转换。
用来处理大小为N×L和L×N的输入矩阵的L+N个步骤逻辑上可以被拆分成L/N+1个阶段,每个阶段占用N个步骤。在每组这样的N个步骤中,并行发生两个事件:第一输入矩阵A的N×N子矩阵乘以第二输入矩阵B的对应的N×N子矩阵;且同时,A的下一个N×N子矩阵被下载到输入缓冲器402。(L+N个步骤而不是L个步骤的原因是因为每个阶段占用N个步骤,且当A的第一个子矩阵被下载的开始时候有额外的阶段,但是与此同时,并没有A的已经下载的子矩阵乘以B的子矩阵。)
为了支持矩阵乘法,输入缓冲器402必须具有2个寄存器,每个保留N个元素,对于每个寄存器,一个用于N×N子矩阵的当前N元素行,而另一个用于下一行。如图4中所示,缓冲器402被连接到它们相邻的缓冲器:缓冲器号[1]402能够发送数据到缓冲器[0]402,缓冲器号[2]402能够发送数据到缓冲器[1]402,等等。
在N个步骤中,从端口SRC[0]336,N×N子矩阵的N个N元素行被提供给ALU 320。通过预处理单元404,每行被发送到输入缓冲器号N-1402。在每一步中,N个缓冲器402中的每一个发送其在之前步骤接收到的下一个N×N子矩阵N元素行给其相邻的缓冲器402。这样一来,在步骤0从端口SRC[0]336读取的行0将占用N个步骤以传播到缓冲器号0 402;在步骤N-1读取的行1将执行N-1个步骤以传播到缓冲器号1 402;以此类推,直到行N-1。
在N个步骤之后,编号i的行将如期望地存在于编号i的输入缓冲器402中。在这个时候——接下来的N个步骤阶段的开始——所有的输入缓冲器402同时将它们的输入行从“下一行”寄存器拷贝到“当前行”寄存器,其中,它们在之前的阶段保留了这些行。A的N个行现在准备好乘以B的对应的N×N子矩阵。
这个乘法——并行发生于如上所指出的输入缓冲器402的“下一行”寄存器的填充——被执行如下。根据问题定义,A的N×N子矩阵中的每一行必须乘以B的N×N子矩阵每一列——总体而言,N3的数量级的乘法,或N2的行乘以列的乘法。这就自然在ALU 320上占用N个步骤,因为ALU320能够同时进行N2的数量级的乘法,或者同时进行N个行乘以列的乘法。
在每个步骤中,通过端口SRC[M-1]334,与当前存在于输入缓冲器402中的A的N×N子矩阵对应的B的N×N子矩阵的单个的列被提供给ALU 320。B的子矩阵列通过路由网格B412被发送给通道400,如图8B中所示,网格412被配置为广播所有的列元素给所有N个通道400。同时,通过路由网格A 408,每个输入缓冲器402发送其A的子矩阵行给通道400,如图7B中所示,网格408被配置成使得编号I的通道400接收编号I的行。
这样,每个通道400接收A的N×N子矩阵的N元素行(对于每个通道有不同的行)和B的N×N子矩阵的N元素列(对于所有的通道有相同的列)。函数单元500被配置为执行乘法(a*b),而缩减单元504被配置为执行加法,以便通道400计算行和列的点积。点积被加到循环累加器缓冲器502的累加器的内容中,其在第一个N步骤阶段保持为0,且在下一个N步骤阶段保持为A和B的之前的子行和子列的点积的和,以便在最后阶段之后,循环累加器缓冲器502保持A的所有行与B的所有列的点积。在N个步骤的每一个步骤,从循环累加器缓冲器502中选择不同的累加器;当达到累加器N-1时,将被选择的下一个累加器(再次)是累加器0——这发生于下一个N步骤阶段开始时。
从以上描述中可以发现,在构成一个阶段的N个步骤的每一个步骤,B的N×N子矩阵的不同列将乘以A的N×N子矩阵的所有行,更新保留所有行和所有列的(部分)点积的唯一的累加器,其中N元素子行和子列被“删去”。
这样,以上描述的方法允许矩阵乘法的执行,以便当所消耗的带宽为2*N个输入时,N2个乘法累加运算被执行。
该方法还具有实用优势,适于当矩阵B以列优先的形式被布局于存储器中的情形,即,其逻辑列对应于物理存储器的行(此时其易于提供B的N×N子矩阵的列给ALU320)。这种存储器布局在计算机视觉应用中是常见的情形,例如,在其他示例中,A的行是图像特征而B的行是支持向量的分类。
中值滤波器
接下来是用于使用ALU 320计算中值滤波器(在每个图像像素周围的窗口的中值)的方法。
该方法是基于更基本的方法,其用于计数在每个图像像素周围的窗口中低于每窗口阈值的像素数目。对于各种窗口的形状(垂直/水平/二维),这种计数能够以与线性滤波相当类似的方式进行,但具有下列区别:
●函数单元500被配置执行比较(a<b)而不是乘法。
●路由网格B 412被配置为如图8A中所示(N=8)。这样一来,每个通道400对其从路由网格A 408得到的窗口行的每个像素与相同的阈值进行比较,而每个通道400处理不同的阈值。这是为了与对于窗口中所有像素使用相同的阈值相一致,但是对于每个窗口,阈值不同(不像每个像素乘以不同的系数的滤波的情形,而是相同的滤波器用于每个窗口)。
应用这种像素计数方法,可以如下迭代计算中值。每窗口阈值被初始化为最大强度值的一半(例如,用于8位像素的128),且计数这种级别之下的像素数量。所获得的每像素计数可以与窗口中像素的一半的数量相比较(应用的不是ALU 320,而是主SIMD VLIW处理器的其他计算资源)。例如,对于5×5的窗口,计数与25/2=12进行比较。对于计数超过窗口尺寸一半的像素,已知中值在最大强度值的一半之上;对于其他情况,已知中值在最大强度值以下。
实际上,已经计算出中值最高有效位——对于某些像素是1,而对于其他像素是0。从而,下一次迭代的每像素阈值将使其MSB被置位;其下一个最高有效位将再次是1。对阈值之下的像素进行计数并与窗口尺寸的一半进行比较,这将再次告诉我们对于每个像素新的位实际上是1还是0。
接着,从MSB转移到LSB,比较中值的其他位。在每次迭代中,每像素的阈值是基于当前中值的近似数。事实上,本方法的一个优势是在任何时候可以停止该方法——如果中值的4位近似足够的话,也可能在4次迭代之后停止该方法,节省剩下的迭代的运行时间。
这个方法主要的优势是“重的负担(heavy lifting)”由高吞吐量的ALU320来进行。例如,关于二维F×F的窗口,每个步骤将进行N×F个比较和累加操作(并行处理N个窗口),且仅需要F×K/N个步骤(假设K位像素的K次迭代,乘以每次迭代每像素F×F次比较和累加运算,除以ALU320的吞吐量N×F)。关于N=8、K=8和F=5——8位像素的5×5的中值滤波——只需要每像素5个步骤。
局部最大值滤波器
在以下描述中,考虑了两类局部最大值滤波器。在其中一个类型中,计算了每个图像窗口的最大值。在另一个类型中,对于每个图像窗口,如果在其中心的像素值大于或等于其周围的所有像素,那么生成一个非0值,否则生成0。
第一个类型的计算类似于线性滤波器的计算,只是函数单元500和缩减块504被不同地配置,且“B侧”(路由网格B 412、端口SRC[M-1]334和函数单元500的“b”输入)未被有效应用。
函数单元500被配置为选择“a”输入——即,所选择的函数是f(a,b)=a。缩减块504被配置为计算累加器和其N个输入的最大值。这样一来,如果图像数据以与用于计算线性滤波器相同的方式流入ALU 320,那么ALU 320将并行地逐步更新N个图像窗口的最大值(类似于在线性滤波器的情形中并行地用滤波器逐步更新N个图像窗口的部分相关)。
以上用于第一类型的方法能够被应用于通过逆转所执行的关系运算来计算局部最小值滤波器。
对于第二类型——每像素生成的布尔值告知其是否是局部最大值——方法呈现为并不依赖于能够使用最小值或最大值作为缩减块504中的缩减操作,而是依赖于求和作为缩减操作。该方法的优势是该方法使用了在由ALU 320支持的其他大多数算法中所使用的缩减操作,且并不要求硬件支持更“奇异的”和代价更高的缩减操作。
类似于进行中值滤波的计数,生成所要求的布尔值的方法仅仅是通过计数超过每像素阈值的像素。仅有的区别是,每像素阈值被设置为像素本身的值(而不是具有一个新位被设置的中值的当前近似数)。
这样一来,每个窗口中在这个像素之下的像素被计数;如果这个数等于窗口尺寸,那么就具有局部最大值,否则没有局部最大值。正如在中值示例中,依赖于在主SIMD VLIW处理器中的其他计算资源来进行像素计数与窗口尺寸的比较。
该方法非常有效——例如,对于F×F的窗口,只需要每个输出F/N个步骤。因为每个窗口必须执行F×F次比较和累加运算,且每个窗口实际上执行F/N个步骤,所以每个步骤执行F×F/(F/N)=N×F次有效运算。SAD滤波器
SAD(绝对差值和)滤波被执行,非常类似于线性滤波,只是函数单元500被配置为计算|a-b|代替a*b。注意,类似于线性滤波的情形,对于二维滤波器,每个滤波器行要求串行步骤。并行进行的是,相同滤波器的多达N个位移——即,对应于这些位移的多达N个和被并行更新。
这个方法对于模板匹配非常有效,其中,不可能重新使用相邻的位置间的计算。这个方法可能没有基于密集视差计算的积分图像的技术有效,其中,对于图像中每个像素必须计算出每个位移的结果,因此共享了相邻位置的差值的和中的部分和。
然而,积分图像可能并不有助于加快视差细化计算,对于每个像素,必须在高斯金字塔的粗糙水平上计算的位置周围核对数量有限的位移。在视差细化中,要核对的位移从而对于每个像素是不同的,因此由于每个位移只相关于一小部分像素,每位移积分图像是相当没用的。这里,本方法又可以非常有效的,因为对于每个像素,可能并行更新对应于多达N个位移的差值的和。
总之,以上方法的好处是,允许执行多达N2次|a-b|运算,而仅消耗N*3个输入的带宽,这些好处在那些操作不冗余且不能够被避免的情况下(像,模板匹配和视差细化)是最突出的。
使用ALU 320的常见的好处
高计算吞吐量——每个步骤比N多得多的操作,在许多情形中是N2个操作;
相对于该吞吐量的低I/O带宽——M*N,其中M比N少得多,在以上的示例中是2或3;
支持关于相同的加速电路的相对广泛的算法,特别是,应用于计算机视觉的许多重量级算法;
支持许多输入形状和尺寸。
本文所应用的不定冠词“一(a)”、“一(an)”,例如“一种算术逻辑单元”,具有“一个或多个”的意思,即“一个或多个算术逻辑单元”。
虽然已经显示了和描述了本发明所选择的特征,但是要理解,本发明并不限制于所描述的特征。反而,要理解的是,可以对这些特征进行改变,而不脱离本发明的原理和精神,本发明的范围由权利要求和其等同物进行定义。

Claims (10)

1.一种算术逻辑单元,包括:
第一路由网格,其被连接到多个数据通道,其中所述第一路由网格适于驱动第一数据到所述数据通道;
第二路由网格,其被连接到所述数据通道,其中所述第二路由网格适于驱动第二数据到所述数据通道;
其中,每个所述数据通道包括数量为N的多个函数单元,该函数单元具有来自所述第一路由网格的第一输入和来自所述第二路由网格的第二输入,其中,所述函数单元可操作为计算在各自的所述第一输入上的相应的所述第一数据和在各自的所述第二输入上的相应的所述第二数据的函数;
其中,每个所述数据通道包括适于从所述N个函数单元接收输出信号的缩减单元,其中,所述缩减单元被配置为执行缩减操作并输出输出结果。
2.如权利要求1所述的算术逻辑单元,其中,所述多个数据通道包括N个数据通道。
3.如权利要求1所述的算术逻辑单元,还包括:
全局控制块,其被配置为控制所述函数单元的函数且控制所述第一路由网格的第一路由,以及控制所述第二路由网格的第二路由。
4.如权利要求1所述的算术逻辑单元,其中,所述函数在所述第一数据的数据a与所述第二数据的数据b之间被执行,其中,所述函数是从由加法a+b、减法a-b、乘法a*b、a和b之间的关系运算、以及差的绝对值ABS(a-b)组成的组中选择的。
5.如权利要求1所述的算术逻辑单元,其中,所述缩减操作是从由加法、找出最大值和找出最小值组成的组中选择的。
6.如权利要求1所述的算术逻辑单元,其中,所述数据通道在其中相互独立地执行各自的计算。
7.如权利要求1所述的算数逻辑单元,其中,每个循环累加器缓冲器被配置为存储所述缩减单元的N个输出结果。
8.如权利要求1所述的算数逻辑单元,还包括预处理单元和N个输入缓冲器;
其中所述第一路由网格包括耦合到N个输出的N个输入;
其中所述第一路由网格的N个输出中的每个输出耦合到单个数据通道。
9.如权利要求8所述的算数逻辑单元,其中所述N个输入缓冲器中的每一个耦合到所述第一路由网格的N个输入中的单个输入;并且
其中所述N个输入缓冲器彼此串行耦合。
10.如权利要求8所述的算数逻辑单元,其中所述预处理单元被配置为接收N*2个像素并生成N个片作为第一数据,所述N个片通过一个像素彼此区分;
其中由所述第一路由网格将所述N个片中的不同片提供给所述N个数据通道中的不同数据通道;
其中所述第二路由网格被配置为将系数向量作为第二数据提供给所述N个数据通道中的每一个;
其中每个数据通道被配置为在被提供给该数据通道的片和所述系数向量之间执行乘法;并且
其中每个缩减单元被配置为通过将由所述数据通道的N个函数单元所计算的N个积相加来计算和。
CN201811377785.9A 2012-10-31 2013-10-31 算术逻辑单元 Active CN109614075B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811377785.9A CN109614075B (zh) 2012-10-31 2013-10-31 算术逻辑单元

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US13/664,475 US10318308B2 (en) 2012-10-31 2012-10-31 Arithmetic logic unit
US13/664,475 2012-10-31
CN201310529403.0A CN103793195B (zh) 2012-10-31 2013-10-31 算术逻辑单元
CN201811377785.9A CN109614075B (zh) 2012-10-31 2013-10-31 算术逻辑单元

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201310529403.0A Division CN103793195B (zh) 2012-10-31 2013-10-31 算术逻辑单元

Publications (2)

Publication Number Publication Date
CN109614075A true CN109614075A (zh) 2019-04-12
CN109614075B CN109614075B (zh) 2023-08-18

Family

ID=49513875

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201310529403.0A Active CN103793195B (zh) 2012-10-31 2013-10-31 算术逻辑单元
CN201811377785.9A Active CN109614075B (zh) 2012-10-31 2013-10-31 算术逻辑单元

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201310529403.0A Active CN103793195B (zh) 2012-10-31 2013-10-31 算术逻辑单元

Country Status (3)

Country Link
US (3) US10318308B2 (zh)
EP (2) EP2728462B1 (zh)
CN (2) CN103793195B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10698694B2 (en) 2012-10-31 2020-06-30 Mobileye Vision Technologies Ltd. Arithmetic logic unit

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5877897A (en) 1993-02-26 1999-03-02 Donnelly Corporation Automatic rearview mirror, vehicle lighting control and vehicle interior monitoring system using a photosensor array
US6822563B2 (en) 1997-09-22 2004-11-23 Donnelly Corporation Vehicle imaging system with accessory control
US7655894B2 (en) 1996-03-25 2010-02-02 Donnelly Corporation Vehicular image sensing system
WO2003093857A2 (en) 2002-05-03 2003-11-13 Donnelly Corporation Object detection system for vehicle
US7526103B2 (en) 2004-04-15 2009-04-28 Donnelly Corporation Imaging system for vehicle
US7972045B2 (en) 2006-08-11 2011-07-05 Donnelly Corporation Automatic headlamp control system
US9256480B2 (en) 2012-07-25 2016-02-09 Mobileye Vision Technologies Ltd. Computer architecture with a hardware accumulator reset
US9582273B2 (en) * 2013-07-09 2017-02-28 Texas Instrments Incorporated Faster and more efficient different precision sum of absolute differences for dynamically configurable block searches for motion estimation
US11106462B2 (en) * 2019-05-24 2021-08-31 Texas Instruments Incorporated Method and apparatus for vector sorting
US9830150B2 (en) 2015-12-04 2017-11-28 Google Llc Multi-functional execution lane for image processor
US10546211B2 (en) * 2016-07-01 2020-01-28 Google Llc Convolutional neural network on programmable two dimensional image processor
CN106878586B (zh) * 2017-01-09 2019-12-06 中国科学院自动化研究所 可重构的并行图像细节增强方法和装置
CN109032665B (zh) * 2017-06-09 2021-01-26 龙芯中科技术股份有限公司 微处理器中指令输出处理方法及装置
CN112214727B (zh) 2017-07-07 2024-07-05 华为技术有限公司 运算加速器
WO2019084788A1 (zh) * 2017-10-31 2019-05-09 深圳市大疆创新科技有限公司 用于神经网络的运算装置、电路及相关方法
US10324689B2 (en) * 2017-11-21 2019-06-18 Intel IP Corporation Scalable memory-optimized hardware for matrix-solve
FR3087907B1 (fr) * 2018-10-24 2021-08-06 St Microelectronics Grenoble 2 Microcontroleur destine a executer un traitement parametrable
CN110245096B (zh) * 2019-06-24 2023-07-25 苏州暴雪电子科技有限公司 一种实现处理器直接连接扩展计算模块的方法
US11294672B2 (en) 2019-08-22 2022-04-05 Apple Inc. Routing circuitry for permutation of single-instruction multiple-data operands
US11256518B2 (en) 2019-10-09 2022-02-22 Apple Inc. Datapath circuitry for math operations using SIMD pipelines
US11126439B2 (en) 2019-11-15 2021-09-21 Apple Inc. SIMD operand permutation with selection from among multiple registers
US20220261456A1 (en) * 2021-01-14 2022-08-18 Microsoft Technology Licensing, Llc Computing partial matrices at hardware accelerator
US11556337B2 (en) 2021-04-12 2023-01-17 Analog Devices International Unlimited Company Parallel matrix multiplication technique optimized for memory fetches
US20240004647A1 (en) * 2022-07-01 2024-01-04 Andes Technology Corporation Vector processor with vector and element reduction method
US11995030B1 (en) * 2022-11-10 2024-05-28 Azurengine Technologies, Inc. Reconfigurable parallel processor with stacked columns forming a circular data path

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4884265A (en) * 1987-04-30 1989-11-28 Loral Corporation Digital demodulator for frequency-division-multiplexed signals
EP0655676A2 (en) * 1993-11-30 1995-05-31 Texas Instruments Incorporated Three input arithmetic logic unit forming mixed arithmetic and boolean combinations
CN1306639A (zh) * 1998-04-22 2001-08-01 美商传威股份有限公司 用于嵌入式***的实时调试器接口
CN1539103A (zh) * 2001-03-13 2004-10-20 �����ɷ� 模数增值方法及装置
US20050071413A1 (en) * 2003-05-09 2005-03-31 Schulte Michael J. Processor reduction unit for accumulation of multiple operands with or without saturation
US20050219422A1 (en) * 2004-03-31 2005-10-06 Mikhail Dorojevets Parallel vector processing
US7484076B1 (en) * 2006-09-18 2009-01-27 Nvidia Corporation Executing an SIMD instruction requiring P operations on an execution unit that performs Q operations at a time (Q<P)
CN102216941A (zh) * 2008-08-19 2011-10-12 数字标记公司 用于内容处理的方法和***
EP2395472A1 (en) * 2010-06-11 2011-12-14 MobilEye Technologies, Ltd. Image processing system and address generator therefor
US20120113133A1 (en) * 2010-11-04 2012-05-10 Shpigelblat Shai System, device, and method for multiplying multi-dimensional data arrays
CN102571250A (zh) * 2006-11-08 2012-07-11 菲尼萨公司 用于在光电设备中使用的串化器/解串器
CN102707931A (zh) * 2012-05-09 2012-10-03 刘大可 一种基于并行数据通道的数字信号处理器
CN103034454A (zh) * 2011-07-14 2013-04-10 Lsi公司 柔性闪存命令

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6493467B1 (en) * 1959-12-12 2002-12-10 Sony Corporation Image processor, data processor, and their methods
JPS6053349B2 (ja) 1981-06-19 1985-11-25 株式会社日立製作所 画像処理プロセツサ
EP0075681B1 (en) * 1981-09-28 1988-05-18 Hughes Aircraft Company Real-time ordinal-value filter utilizing reference-function comparison
US5081573A (en) 1984-12-03 1992-01-14 Floating Point Systems, Inc. Parallel processing system
US4802108A (en) * 1987-06-15 1989-01-31 Polaroid Corporation Circuit for providing a select rank-order number from a plurality of numbers
US4975843A (en) * 1988-11-25 1990-12-04 Picker International, Inc. Parallel array processor with interconnected functions for image processing
JP3228927B2 (ja) 1990-09-20 2001-11-12 沖電気工業株式会社 プロセッサエレメント、プロセッシングユニット、プロセッサ、及びその演算処理方法
US5610850A (en) * 1992-06-01 1997-03-11 Sharp Kabushiki Kaisha Absolute difference accumulator circuit
KR0170301B1 (ko) * 1995-10-30 1999-04-15 김광호 복합위상여파기와 이를 이용한 타이밍 오차 보상장치 및 그 방법
US5822606A (en) 1996-01-11 1998-10-13 Morton; Steven G. DSP having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word
US5970254A (en) 1997-06-27 1999-10-19 Cooke; Laurence H. Integrated processor and programmable data path chip for reconfigurable computing
US6573936B2 (en) 1998-08-17 2003-06-03 Intel Corporation Method and apparatus for providing a single-instruction multiple data digital camera system that integrates on-chip sensing and parallel processing
US6513054B1 (en) * 2000-02-22 2003-01-28 The United States Of America As Represented By The Secretary Of The Army Asynchronous parallel arithmetic processor utilizing coefficient polynomial arithmetic (CPA)
US6901422B1 (en) * 2001-03-21 2005-05-31 Apple Computer, Inc. Matrix multiplication in a vector processing system
US6922716B2 (en) * 2001-07-13 2005-07-26 Motorola, Inc. Method and apparatus for vector processing
US7555513B2 (en) * 2004-09-13 2009-06-30 Broadcom Corporation SIMD processor having enhanced operand storage interconnects
US8443169B2 (en) 2005-03-28 2013-05-14 Gerald George Pechanek Interconnection network connecting operation-configurable nodes according to one or more levels of adjacency in multiple dimensions of communication in a multi-processor and a neural processor
US7971036B2 (en) * 2006-04-26 2011-06-28 Altera Corp. Methods and apparatus for attaching application specific functions within an array processor
US20070266225A1 (en) * 2006-05-09 2007-11-15 Ko Tak K V Microcontroller unit
WO2008077803A1 (en) * 2006-12-22 2008-07-03 Telefonaktiebolaget L M Ericsson (Publ) Simd processor with reduction unit
US7995067B2 (en) 2007-03-29 2011-08-09 Mobileye Technologies Limited Cyclical image buffer
US8356160B2 (en) * 2008-01-15 2013-01-15 International Business Machines Corporation Pipelined multiple operand minimum and maximum function
US8200940B1 (en) * 2008-06-30 2012-06-12 Nvidia Corporation Reduction operations in a synchronous parallel thread processing system with disabled execution threads
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

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4884265A (en) * 1987-04-30 1989-11-28 Loral Corporation Digital demodulator for frequency-division-multiplexed signals
EP0655676A2 (en) * 1993-11-30 1995-05-31 Texas Instruments Incorporated Three input arithmetic logic unit forming mixed arithmetic and boolean combinations
CN1306639A (zh) * 1998-04-22 2001-08-01 美商传威股份有限公司 用于嵌入式***的实时调试器接口
CN1539103A (zh) * 2001-03-13 2004-10-20 �����ɷ� 模数增值方法及装置
US20050071413A1 (en) * 2003-05-09 2005-03-31 Schulte Michael J. Processor reduction unit for accumulation of multiple operands with or without saturation
US20050219422A1 (en) * 2004-03-31 2005-10-06 Mikhail Dorojevets Parallel vector processing
US7484076B1 (en) * 2006-09-18 2009-01-27 Nvidia Corporation Executing an SIMD instruction requiring P operations on an execution unit that performs Q operations at a time (Q<P)
CN102571250A (zh) * 2006-11-08 2012-07-11 菲尼萨公司 用于在光电设备中使用的串化器/解串器
CN102216941A (zh) * 2008-08-19 2011-10-12 数字标记公司 用于内容处理的方法和***
EP2395472A1 (en) * 2010-06-11 2011-12-14 MobilEye Technologies, Ltd. Image processing system and address generator therefor
US20120113133A1 (en) * 2010-11-04 2012-05-10 Shpigelblat Shai System, device, and method for multiplying multi-dimensional data arrays
CN103034454A (zh) * 2011-07-14 2013-04-10 Lsi公司 柔性闪存命令
CN102707931A (zh) * 2012-05-09 2012-10-03 刘大可 一种基于并行数据通道的数字信号处理器

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10698694B2 (en) 2012-10-31 2020-06-30 Mobileye Vision Technologies Ltd. Arithmetic logic unit

Also Published As

Publication number Publication date
US10698694B2 (en) 2020-06-30
CN109614075B (zh) 2023-08-18
CN103793195B (zh) 2018-12-14
EP2728462A2 (en) 2014-05-07
US10318308B2 (en) 2019-06-11
EP3598298A1 (en) 2020-01-22
US20190163495A1 (en) 2019-05-30
US20200319891A1 (en) 2020-10-08
CN103793195A (zh) 2014-05-14
EP2728462B1 (en) 2019-10-23
EP2728462A3 (en) 2014-11-12
US20140122551A1 (en) 2014-05-01

Similar Documents

Publication Publication Date Title
CN103793195B (zh) 算术逻辑单元
CN111095241B (zh) 加速数学引擎
US20240265234A1 (en) Digital Processing Circuits and Methods of Matrix Operations in an Artificially Intelligent Environment
US10409604B2 (en) Apparatus and method for performing multiply-and-accumulate-products operations
EP3734543A1 (en) Image transformation for machine learning
EP3674987A1 (en) Method and apparatus for processing convolution operation in neural network
US10649771B2 (en) Semiconductor device
EP3326060B1 (en) Mixed-width simd operations having even-element and odd-element operations using register pair for wide data elements
EP3622389B1 (en) Circuit to perform dual input value absolute value and sum operation
EP3384376B1 (en) Multi-functional execution lane for image processor
Nguyen et al. The FPGA implementation of a one-bit-per-pixel image registration algorithm
US20210216312A1 (en) Semiconductor device
WO2020059156A1 (en) Data processing system, method, and program
Van Luong et al. A massively parallel approach to affine transformataion in medical image registration
WO2008077803A1 (en) Simd processor with reduction unit
JP2024510625A (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