CN102918495B - 用于执行算术运算的硬件 - Google Patents
用于执行算术运算的硬件 Download PDFInfo
- Publication number
- CN102918495B CN102918495B CN201180012812.2A CN201180012812A CN102918495B CN 102918495 B CN102918495 B CN 102918495B CN 201180012812 A CN201180012812 A CN 201180012812A CN 102918495 B CN102918495 B CN 102918495B
- Authority
- CN
- China
- Prior art keywords
- hardware
- bitmap
- matrix
- run
- plan
- 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
- 239000011159 matrix material Substances 0.000 claims abstract description 74
- 238000007667 floating Methods 0.000 claims description 3
- 230000005055 memory storage Effects 0.000 claims description 3
- 238000007689 inspection Methods 0.000 claims 1
- 238000000034 method Methods 0.000 description 19
- 239000000047 product Substances 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 238000007906 compression Methods 0.000 description 6
- 230000006835 compression Effects 0.000 description 6
- 239000000203 mixture Substances 0.000 description 5
- 230000006837 decompression Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 101100328886 Caenorhabditis elegans col-2 gene Proteins 0.000 description 2
- 101100328884 Caenorhabditis elegans sqt-3 gene Proteins 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000011982 device technology Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000004615 ingredient Substances 0.000 description 1
- 239000013067 intermediate product Substances 0.000 description 1
- 229940050561 matrix product Drugs 0.000 description 1
- 230000005039 memory span Effects 0.000 description 1
- 208000010553 multiple abscesses Diseases 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
用于执行一系列算术运算的硬件。所述硬件包括:计划机,其能够运行以基于指示所述矩阵中的条目是否为零的所述位图来生成指令计划。所述硬件还包括算术线路,所述算术线路构造成根据所述计划来对所述矩阵执行算术运算。
Description
技术领域
本发明涉及用于执行与数据结构相关的重复性算术或逻辑运算的硬件。更特别地本发明涉及的硬件包括计划机,所述计划机能够运行以基于位图产生指令计划以及相关联的地址基准(address references),其中所述位图指示矩阵中的条目是否为零,所述硬件进一步包括算术线路,所述算术线路构造成根据所述计划使用非零值对所述矩阵进行算术运算。
背景技术
在计算系统的设计中有一个基本问题,即使得存储器访问的时间成本最小化。
这是对计算机系统的基本限制,其原因在于,不论使用什么存储器技术来支持计算以及不论使用什么技术来讲所述存储器连接至处理器,在给定时间内有多少信息能够在处理器和存储器之间传输有最大的限制,这是可用的存储器带宽,并且可用的存储器带宽对计算机能力的限制通常称为“存储器壁(memory-wall)”。
已知采用数据压缩来减少“存储器壁”的效应。然而,对于编程器使用压缩的存储器子系统的问题在于数据必须在器能够在图1所示的系统操作之前被压缩。这通常涉及从一部分存储器读取压缩数据至处理器16的寄存器文件14,使用从程序存储器18获得的程序对之进行解压,并且将解压的数据存储在存储器12的另一非压缩部分中。
然而,这种方法具有下述缺点:需要附加的存储器带宽来读取压缩数据库,将其以非压缩形式存储,以及在运算时将其读回至所述处理器。还需要附加的存储器容量来保持解压的数据,并且解压过程将增加对处理器寄存器文件的压力。显然,这是不太好的方案,说明此种压缩的存储器子系统还是停留在学术上而没有进入主流微处理工业。
寄存器分块对于加速矩阵计算(特别是有限元)是有用的技术,但是它具有下述缺点:对于许多矩阵(例如,用在诸如GOOGLETM的搜索引擎中),必须增加零,降低了有效的FLOPS,并且增加了存储器带宽要求,这两项是在现代计算系统中供应不足的。
实际上,处理能力和存储器带宽之间的增长差异(分别以每年50%和7%的高差别速度增长)如上所述地称为“存储器壁”。已经有许多“破开”存储器壁的方法,这些方法通常使用高速缓存器来降低必须与芯片外进行通信的可能性,和/或使用多线程使得响应时间和与芯片外通信相关联的损失能够被降低。
这些方法仅仅将受限制的外部存储器带宽隐藏起来,而不是解决这个问题,并且通常依赖于数据组呈现足够的数据局部性,以及程序呈现足够的线程级并行能力(TLP),以便整体上更加有效。实际上,许多较大和更主要的问题既不呈现有效的数据局部性,也不呈现足够的TLP,并且整个系统的能力下降至由外部存储器带宽限制的点,并且已经加在芯片上的其他硬件不可使用。为此,大的工程应用的处理器性能下降至制造商标称峰值性能参数的1%或更低并不罕见。
用于计算稀疏矩阵向量产物(SMVM)的现有技术方法在过去的几十年中进步很小,并且性能改进主要由于处理器和半导体处理技术的改进。通常SMVM对于主流微处理器的设计的影响微乎其微(如果有的话),尽管与放大I/O带宽性能的明显问题,特别是芯片多处理器(CMPs)通过逐渐地放大I/O带宽加剧问题。典型的分块稀疏矩阵中的条目的可调整数量由零值数量确的。即使这些值(即使不会有助于SMVM的结果)从存储器获取,并且与功率消耗和系统工作容量方面的所有相关问题联系在一起。
图2是现有技术的分块压缩稀疏行(BCSR)数据结构的状态的示例性说明,该数据结构由3个阵列组成。行阵列(row_start)保持含有非零片的行条目,第二col阵列(col_idx)含有所述非零片的列地址,val(value)阵列含有稀疏矩阵中所有非零值的实际非零条目(带有内容)——以逐片的顺序设置。如果A矩阵条目是零,然后处理器将不必使用零值执行计算,从而不会导致不必要的带宽和功率消耗。
由处理器执行的许多计算包括大量的简单运算。结果,乘法运算会占用大量的时钟循环来进行。尽管该运算不能算作复杂计算,同样也不能称为细微运算,例如一个数乘以0、+1或-1,答案可以非常简单的方式获得。
JP 60247782公开了一种技术方案,其中稀疏矩阵被加载,然后被检查以识别矩阵内的微小值。然而,该方法不能克服下述限制:必须从存储器加载完整的矩阵。JP 61025275公开了一种处理器,所述处理器询问矩阵内的值,以减小矩阵运算所需的时间。类似地,JP 58022446公开了一种处理器,其中根据寄存器内含有的值避免算术运算。JP58109971检查寄存器内的值以减少管线处理器结构内用于计算的整体计算时间——当在计算期间产生的中间值是微小值时。类似地,GB1479404公开了一种技术方案,其中检查矩阵内的数据值,以确定它们是否含有微小值,以及该确定结果是否在计算性能中使用。所有这些方法还是涉及从存储器加载完整矩阵。
在一些应用中,涉及稀疏矩阵,执行的微小运算能够使非常显著的,原因在于大量零的存在。稀疏矩阵中零的数量能够被减少或消除通过将所述矩阵存储为诸如压缩行存储(CRS)格式的稀疏形式,然而,由于地址产生方面的开销,此种存储格式经常导致商用计算机系统具有非常差的性能。
因此需要一种解决方案来解决现有技术的至少一些缺点。
发明内容
通过提供用于执行算术运算的硬件来解决这些问题,所述硬件包括:计划机,其能够运行以基于指示矩阵中的条目是否为零的位图来生成指令计划和相关的地址(阵列基准);以及算术线路,其构造成根据所述计划来使用非零值对所述矩阵执行算术运算。
所述硬件不需要执行由于矩阵中含有的零值而导致的琐碎运算。消除了对下述运算的需求:将零值存储至存储器以及从存储器载入零值,通过共享的总线移动所述零值,或者实际上使用这些零值执行算术运算。
相应地,本发明的第一实施例提供如权利要求1中限定的硬件。本发明还提供如权利要求50中限定的硬件组件。此外,本发明涉及如权利要求55中所限定的方法。附加地,本发明提供如权利要求56中所限定的方法。有利的实施例在从属权利要求中提供。
参考附图将更好地理解这些和其他特征,所述附图是为了辅助理解本发明的教示而提供的。
附图说明
下面将结合附图对本发明进行说明。在所述附图中:
图1是现有技术中已知的处理器结构的框图。
图2是现有技术中已知的分块压缩稀疏行(BCSR)数据结构的图示。
图3是根据本发明一实施例的硬件的框图。
图4是包括图3的硬件和其它硬件元件的硬件组件的框图。
图5是由图3的硬件所使用的位图分块压缩稀疏行(BBCSR)数据结构的图示。
图6是图3的硬件的控制寄存器的图示。
图7是用于的压缩所述计划的示例性位图。
图8是图3的硬件的元件的示意性线路图。
图9是图3的硬件的元件的示意性线路图。
图10是带有相关数据结构的示例性矩阵的图示。
图11是示出由图3的硬件所执行的操作的控制逻辑时序图。
图12是图3的硬件的元件的示意性线路图。
图13是由图3的硬件所实施的示例性计划结构。
具体实施方式
现在将结合示例性硬件来对本发明进行说明,所述示例性硬件是提供用来辅助理解本发明的教示的。
参见附图,首先参见图3和图4,在图3和图4中提供硬件100用于执行算术运算。硬件100设计成在处理矩阵时避免对零条目进行操作。这需要执行诸如存储或加载零值至存储器的操作,避免通过共享的总线移动它们或者避免实际上使用零值进行算术运算。图4的硬件组件108包含能够通过处理器总线110偶联至外部硬件元件的硬件100。处理器总线110允许在硬件100和外部硬件元件之间进行数据交换,所述外部硬件元件例如可以包含处理器、缓冲储存器(cache)、SDRAM控制器、SDRAM等。
稀疏数据结构在计算机科学和工程应用中的一个主要用途是存储稀疏矩阵,系数矩阵的主要应用是直接或迭代方法的联立式的系统的解决。在这些直接或迭代方法的核心的中心操作是通过对稀疏矩阵乘以密集向量来产生密集结果向量。所述计算的形式是y=Ax,其中A是稀疏矩阵,y和x是密集向量。下面是示例的稀疏矩阵-向量乘法。
对于以行执行的4x4稀疏矩阵-向量乘法的详细计算由式1提供。
式1
y0=a00*x0+a01*x1+a02*x2+a03*x3
y1=a10*x0+a11*x1+a12*x2+a13*x3
y2=a20*x0+a21*x1+a22*x2+a23*x3
y3=a30*x0+a31*x1+a32*x2+a33*x3
在基于行的式中,y结果向量中的元素是经过计算的一行——A-矩阵的一行乘以x向量。整体上,乘法和求和的形式如式2所示。
式2
t[row]=a[row,col0]*x[col0]+a[row,col1]*x[col1]+a[row,col2]*x[col2]+a[row,col3]*x[col3]
密集矩阵向量计算涉及的步骤为:
.将x向量预加载至处理器内的寄存器(对于所有的y条目重复使用)。
.对y向量进行初始化。
.根据数据总线的宽度,将A-矩阵一个元素一个元素地或者一行一行地读入处理器内的寄存器中。
.将a[row,col]乘以x[col],并与y[row]求和。
.重复进行,直到已经处理所有的行和列。
在稀疏矩阵的情况下,在式2中,A和x条目中的许多将明显是零,因为稀疏矩阵A的行和列中的许多将是零。常规的稀疏矩阵-向量乘法器不考虑获知和/或避免零乘法(其中A矩阵的元素是稀疏的),从而对于总的矩阵-向量乘法而言导致相当长的耗时和功率消耗。
本发明使用位图压缩来压缩所述稀疏矩阵。所述位图指明哪个矩阵元素是零,允许避免零乘法,从而构成中间产物的y向量元素的求和得到简化。如果位图全部是1位的,乘法操作简化成逻辑与(AND)。
式3
y0=bm00*a00*x0+bm01*a01*x1+bm02*a02*x2+bm03*a03*x3
y1=bm04*a10*x0+bm05*a11*x1+bm06*a12*x2+bm07*a13*x3
y2=bm08*a20*x0+bm09*a21*x1+bm10*a22*x2+bm11*a23*x3
y3=bm12*a30*x0+bm13*a31*x1+bm14*a32*x2+bm15*a33*x3
bmn∈{0,1}
基于位图压缩,所述稀疏矩阵-向量乘法能够分解成下述步骤:
1.将x向量预加载至处理器内的寄存器(对于所有的y条目重复使用)。
2.对y向量进行初始化。
3.从外部存储器将位图读入至内部寄存器中。
4.将位图扩展成未压缩清单,用于SMVM并存储在寄存器内。
5.对计划进行压缩,以使用位图仅仅进行非零乘法。
6.将a[row,col]乘以x[col],并使用压缩的清单与y[row]求和。
7.重复进行,直到已经处理所有的行/列。
硬件100构造成执行如上所述的步骤1-7。这样,硬件100能够执行诸如式3中列出的算术运算(其仅仅是以示例的方式给出的)。硬件100构造成通过软件接口114读取位图分块压缩稀疏行数据结构(BBCSR)112。BBCSR 112数据机构增大图2的BCSR阵列(row_start,col_idx和值),bitmap_idx阵列含有位图。位图中的每个条目表明在矩阵的片中是否存在零值。BBCSR 112数据结构的值阵列内容与图2的BCSR数据结构中的值阵列内容的不同之处在于仅仅实际的非零值条目被存储,而没有填充任何的零(除非对位图中的1位条目进行计数)对于稀疏矩阵中的所有非零数据,一片一片地设置。图5的bitmap_idx阵列中的位图条目是16位进制的值。
BBCSR 112的四个阵列中含有的值通过偶联至总线110的映射的储存器结构118写入硬件100的内部寄存器116。一旦所有的值被载入,通过对命令寄存器写开始指令,计算可以被使能。用于包括所述命令寄存器的软件接口的寄存器映射在图6中示出。命令寄存器允许开始加速的稀疏矩阵向量(SMVM)产生、SMVM计算暂停,暂停的SMVM继续,或者硬件100停止以及所有寄存器复位。所有的寄存器可以复位,只有NZ计数(其显示在当前SMVM中由硬件100处理成数据的A矩阵非零内容的数量)和循环计数(其显示在当前SMVM操作中经过的循环的数量)除外。如果所需的附加的寄存器能够容易地添加,以允许计划机通过询问X和Y向量片段和硬件100内的其它寄存器而对SMVM码进行调试。
软件接口114允许用于矩阵-向量生成物的下述参数如图3中所示被加载至硬件100的寄存器116内。
.BM是A矩阵122中的位图分块的片的数量。
.Arows是A矩阵122中的行的数量。
.Acols是A矩阵122中的列的数量。
.Brows是A矩阵122中的分块的片124中行的数量。
.Bcols是A矩阵122中的分块的片124中列的数量。
.VALaddr是值阵列126的基本地址。
.RSTaddr是row-start阵列128的基本地址。
.CIXaddr是col_idx阵列130的基本地址。
.BIXaddr是位图阵列132的基本地址。
位图计划机134读取位图阵列132以从带有相应函和列基准的所述位图产生指令计划138。由位图计划机134产生的示例的计划138在图13A中示出。位图计划机134产生一系列非零部分产物来与它们相关的列和行地址进行求值。所述计划还包括将由控制器140使用的非零计数。如图7中所示,位图计划机138根据位图142被压缩。位图计划机134可以使用多个位片段146以及一个阵列的多路器144来构造。计划是通过控制一组多路器144而获得的。在示例实施例中,位图计划机134可以通过二输入多路器以一个阵列的(N2+N)/2,4位构成,其中,N是位图位的数量,并且对应于需计划的时段。如同从图8能够看出的,位图计划机134由120个4位、2:1多路器134以及相应的查询表(LUT)构成。如果位图计划机134被包括作为可编程处理器管线的一部分,它还能够用作通用64位移位器(在4位或4位的倍数的步骤中)——如果附加的2:1多路器被包括在输入中来在LUT输出和输入寄存器或总线之间进行选择。
位图计划机134的最终元素是迭代计数器151,迭代计数器151确定使用N元宽SIMN FPU执行SMVM计算而必须的算法迭代的数量。迭代计数器151的示例实施例在图9中示出,其包括19个全地址156和单个或(OR)门158。
硬件100的控制器140将所有的相关控制信号与来自位图生成计划的列和行地址施加至所述多路器,以确保正确的结果被计算、求和和存储回正确的y寄存器。控制逻辑信号包括能够影响下述操作的信号:
.将y向量条目加载至对应于A矩阵上片的各行的内寄存器(load_y control signal)
.将用于片的位图加载至寄存器(load_bmp)。
.从片位图产生计划。
.将x-向量条目加载至对应于各A矩阵片的内部寄存器中(load_x)。
.从储存器流注(读取)A矩阵条目(load_a)。
.选择正确的x向量条目来与各A矩阵条目相乘。
.顺次地计算个A.x部分产物(amultx)。
.选择正确的y值来进行更新,通过在浮点(FP)加法器中增加A。x部分产物。
.更新正确的y向量寄存器。
.将y向量寄存器内容写回至A矩阵行端部处的寄存器。
执行算术运算所需的硬件由算术线路141提供,所述算术运算诸如是A矩阵中的非零条目与适当的元相乘。在示例实施例中,算术线路141包括浮点单元(FPU)。本领域普通技术人员可以理解的是,浮点单元通常形成计算系统的一部分,并且构造成执行诸如乘法、除法、加法、减法和开方之类的运算。所述算术线路141可以提供单指令多数据(SIMD)FPU。可以包含在算术线路141内的硬件元件的示例实施例在图12中示出。在图12中,A-dly表示通过浮点加法器进行延迟来匹配时钟循环中的延迟,M-dly表示通过浮点乘法器进行延迟来匹配时钟循环中的延迟。这些延迟是为了排列多路器选择信号到达的时间,以及数据到达浮点加法器和乘法器。
将结合图10和图11说明硬件100的示例实施例的运算。示出的时序图的片段假定4x 4分块的片和单个FP乘法器和FP加法器(各自具有单个时钟循环延迟,而不是SIMD单元,用于简化),并且控制信号的时长示出为对应于前两个片和相关的位图。图11的位图被简化,且不包括从所述计划产生的数据路径源和目的地多路器控制信号。
y寄存器初始被夹在四个值,保持在先的两个矩阵片。一旦这些值已经被加载,对应于在先的矩阵片的位图被获取,并产生计划。接着,在先的四个x寄存器值在接下来的四个时钟循环中被加载。接着,在先的四个非零A矩阵值从储存器内的值阵列126获取,并且乘以x寄存器条目,以产生四个部分产物。这些部分产物然后在四个循环中与存储在y寄存器内的四个y向量条目求和。接下来,第二片和相关的条目被处理,更新y寄存器以完成矩阵向量产物。最后,对应于A矩阵片的第一行的y向量值被从y寄存器写回至储存器,并且对应于A矩阵片的下一个行的SMVM产物的计算能够被进行。
由控制器140产生的控制逻辑还可以包含逻辑来检测数据依赖性,所述数据依赖性能够导致RAW危险,以及导致使数据路径停止,知道这些依赖性已经被解决。相同地,控制器140可以使得硬件100的运行停止(暂停)来等待来自外部总线、数据高速缓存器或真正的外部SDRAM的数据。
由控制器140产生的控制信号可以设计成管线以及来叠置可能的话能够同时执行的操作,导致26/28或93%的高总线带宽利用率。实际上,一旦考虑在典型的处理器核心中使用的高频浮点单元的长的等待时间,能够获得的总线利用率将低于上述利用率。
存储器接口118由控制器140控制,且递增四个地址指针,并产生存储器读和写信号,以确保硬件100所需的所有数据以适时的方式从存储器或硬件100外的高速缓存器内的适当地址到达,以及确保硬件100产生的结果被写回至存储器或硬件100外的高速缓存器内的正确地址。
A矩阵的非零元乘以x的相应元(其是使用来自相应计划条目的列参引而从寄存器查询获得的)。A矩阵的元直接地从存储器读取,并且随着他们进入硬件100而被施加乘法操作。在稀疏矩阵通过向量乘法运算的情况下,不需要存储A稀疏矩阵的元,由于A稀疏矩阵中的条目仅仅使用一次。
本领域技术人员将理解的是,不将A矩阵的元存储在寄存器文件中与现有技术相比有数个优点:
.节省与将A矩阵的行写至寄存器文件相关联的功率和时间(反应时间)
.节省与从寄存器文件读取A矩阵的行相关联的功率和时间(反应时间)
.避免与A矩阵条目在寄存器文件中的临时存储相关联的寄存器压力
还将理解的是,将x向量存储在临时寄存器中而不是作为多端口寄存器文件具有优点:与对于待被乘的A矩阵的各行读取x向量相关联的相当高的功率得以节省,因为简单的临时寄存器能够用于保持x的条目。
位图计划机134可以构造成执行前瞻,以解决依赖性。在原则上如果计划能够在一个时钟周期内产生,并且得到的SMVM占用NZ周期,那么位图计划机134能够对下一个N位图进行前瞻,以评估是否能够消除数据依赖性和相关的RAW风险。
如同在图13中示出的示例中能够看出的,如果计划是在一个时间内在位图上独立地执行的,依赖性和相关的RAW风险与y[1]的和相关地出现——由于在所述片中行1的每个元是非零的。如果计划被处理,将与部分产物加至y[1]的每次相加相关联地出现停止。在图13中示出的方法是对于相同矩阵行中的两个位图相关地计算所述计划,进行前瞻来看第二位图计划中的哪些段(slots)会与来自第一位图计划的那些段交错。这个前瞻计划能够在如图所示的相同基础上被扩展至其他位图,以适应浮点加法器逐渐较高的反应时间,如果不解决的话,所述逐渐较高的反应时间导致成正比的较高的停止补偿。
可以理解的是,文中说明的内容是示例性的硬件。尽管本发明是参考一些示例方案进行说明的,但是可以理解的是,并非意在将本发明的教示限制与这些方案,能够在不脱离本发明的主旨和范围的情况下进行修改。本领域普通技术人员将理解的是,通过将所述硬件与硬件组件中的硬件元件借助总线进行通信,所述硬件能够被改造成含有硬件元件的现有硬件组件。以此方式,可以理解的是,本发明将仅仅必须如所附权利要求书中所限定的方式被限制。类似地,将理解的是,尽管是以稀疏矩阵向量产品的方式对所述方法和硬件进行的说明,但是相同的方法和硬件也可以用于使用算术和逻辑运算来支持具有一个列或行的矩阵和矩阵-矩阵产物的特殊情况的浓密矩阵、向量。
类似的词语包括/包含在用在说明书中时是用于表示存在所述的特征、组成部分、步骤或成分,但是不排除一个或更多附加特征、组成部分、步骤、成分或其组合的存在或添加。
Claims (58)
1.用于对存储在存储器中的矩阵格式(122)中的数据结构进行算术运算的硬件(100),所述硬件包括:
硬件计划机(134),其能够运行以基于指示哪个矩阵元素是零的压缩位图(142)来生成计划(138);以及
算术线路(141),其构造成根据所产生的计划来使用位图非零值对所述计划(138)执行算术运算。
2.如权利要求1所述的硬件,其中,所述算术线路是单指令多数据(SIMD)浮点单元。
3.如权利要求1所述的硬件,进一步包括构造用于接收所述位图的软件接口(114)。
4.如权利要求3所述的硬件,其中,所述软件接口能够运行以读取所述矩阵格式中的位图分块的片的数量。
5.如权利要求3所述的硬件,其中,所述软件接口能够运行以读取所述矩阵格式中的行的数量。
6.如权利要求3所述的硬件,其中,所述软件接口能够运行以读取所述矩阵格式中的列的数量。
7.如权利要求3所述的硬件,其中,所述软件接口能够运行以读取所述矩阵格式中的非零条目的数量。
8.如权利要求3所述的硬件,其中,所述软件接口能够运行以读取所述矩阵格式中的分块的片的行的数量。
9.如权利要求3所述的硬件,其中,所述软件接口能够运行以读取所述矩阵格式中的分块的片的列的数量。
10.如权利要求3所述的硬件,其中,所述软件接口能够运行以读取含有所述矩阵格式的非零数据元的第一阵列的基本地址。
11.如权利要求3所述的硬件,其中,所述软件接口能够运行以读取保持含有非零片的行条目的第二阵列的基本地址。
12.如权利要求3所述的硬件,其中,所述软件接口能够运行以读取含有非零片的列地址的第三阵列的基本地址。
13.如权利要求3所述的硬件,其中,所述软件接口能够运行以读取保持所述位图的第四阵列的基本地址。
14.如权利要求10至13中任一项所述的硬件,其中,所述第一、第二、第三和第四阵列存储在外部存储器内。
15.如权利要求3至13中任一项所述的硬件,进一步包括寄存器(116)用于存储通过所述软件接口(114)接收的数据。
16.如权利要求15所述的硬件,进一步包括映射的存储器接口(118)用于促进将通过所述软件接口(114)接收的数据写入所述寄存器(116)。
17.如权利要求16所述的硬件,其中,所述寄存器存储存储器映射。
18.如权利要求15所述的硬件,其中,寄存器存储用于执行稀疏矩阵向量产物SMVM的命令。
19.如权利要求18所述的硬件,其中,所述命令包括启动SMVM的命令。
20.如权利要求18所述的硬件,其中,所述命令包括暂停SMVM计算的命令。
21.如权利要求18项所述的硬件,其中,所述命令包括使得暂停的SMVM计算重新开始的命令。
22.如权利要求18所述的硬件,其中,所述命令包括使得暂停的SMVM计算终止的命令。
23.如权利要求18所述的硬件,其中,所述命令包括复位寄存器的命令。
24.如权利要求18所述的硬件,其中,所述命令包括停止命令。
25.如权利要求1-13中任一项所述的硬件,其中,所述计划机(134)构造成产生一系列待评价的非零部分产物,以及从所述位图(142)产生的相关列和行地址。
26.如权利要求25所述的硬件,其中,由计划机产生的计划根据位图被压缩。
27.如权利要求1-13中任一项所述的硬件,其中,所述计划机包括多路器(144)的阵列。
28.如权利要求1-13中任一项所述的硬件,其中,所述计划机包括多个位片。
29.如权利要求28所述的硬件,其中,所述计划机包括多路器(144)的阵列,所述多路器具有相关查询表(LUTs)。
30.如权利要求1-13中任一项所述的硬件,其中,所述计划机形成可编程处理器的一部分。
31.如权利要求1-13中任一项所述的硬件,其中,所述计划机进一步包括迭代计数器,所述迭代计数器能够运行以确定所需算术迭代的数量。
32.如权利要求31所述的硬件,其中,所述迭代计数器包括多个全加法器。
33.如权利要求32所述的硬件,其中,所述迭代计数器进一步包括或门。
34.如权利要求1-13中任一项所述的硬件,进一步包括构造成用于产生控制信号的控制器。
35.如权利要求34所述的硬件,其中,所述控制器构造用于将控制信号施加至控制算术运算的算术线路。
36.如权利要求35所述的硬件,其中,所述控制信号包括用于加载y向量条目的信号。
37.如权利要求35或36所述的硬件,其中,所述控制信号包括用于加载位图的信号。
38.如权利要求35所述的硬件,其中,所述控制信号包括用于产生计划的信号。
39.如权利要求35所述的硬件,其中,所述控制信号包括用于加载x向量条目的信号。
40.如权利要求39所述的硬件,其中,所述控制信号包括用于从存储器读取矩阵条目的信号。
41.如权利要求40所述的硬件,其中,所述控制信号包括用于选择与各矩阵条目相乘的正确x向量条目的信号。
42.如权利要求41所述的硬件,其中,所述控制信号包括用于评测部分产物的信号。
43.如权利要求42所述的硬件,其中,所述控制信号包括用于评测算术的信号。
44.如权利要求42所述的硬件,其中,所述控制信号包括用于选择待更新的正确y值的信号。
45.如权利要求44所述的硬件,其中,所述控制信号包括用于将内容写至外部存储器的信号。
46.如权利要求35所述的硬件,其中,所述控制器构造成用于检测能够导致数据风险的数据依赖性。
47.如权利要求46所述的硬件,其中,所述控制器构造成停止数据路径,直到所述数据依赖性已经解决。
48.如权利要求35所述的硬件,其中,所述控制器能够运行以暂停操作,以便等待来自外部总线、数据高速缓存器或外部SDRAM的数据。
49.如权利要求1-13、16-24、29、32-33、35-48中任一项所述的硬件,其中,所述计划机(134)构造成对随后时钟周期中产生的计划执行前瞻以解决数据依赖性。
50.如权利要求28所述的硬件,其中,在由计划机使用以产生在所述计划中使用的地址的行和列地址查询表(LUTs)是可编程的。
51.如权利要求1至13中任一项所述的硬件,其中,从所述位图解码的行和列的数量是可编程的。
52.如权利要求1至13中任一项所述的硬件,其中,所述位图能够用于产生一系列的逻辑和/或算术指令和阵列基准用于不同于稀疏矩阵向量产物的操作。
53.一种硬件组件,其包括如权利要求1至52中任一项所述的硬件。
54.如权利要求53所述的硬件组件,进一步包括处理器。
55.如权利要求53所述的硬件组件,进一步包括高速缓存器。
56.如权利要求53所述的硬件组件,进一步包括SDRAM控制器。
57.如权利要求53所述的硬件组件,进一步包括SDRAM。
58.如权利要求54至57中任一项所述的硬件组件,进一步包括用于所述硬件和其他硬件元件的通信的总线。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1000197.2 | 2010-01-07 | ||
GB1000197A GB2476800A (en) | 2010-01-07 | 2010-01-07 | Sparse matrix vector multiplier using a bit map of non-zero elements to control scheduling of arithmetic operations |
PCT/EP2011/050189 WO2011083152A1 (en) | 2010-01-07 | 2011-01-07 | Hardware for performing arithmetic operations |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102918495A CN102918495A (zh) | 2013-02-06 |
CN102918495B true CN102918495B (zh) | 2016-08-31 |
Family
ID=41819035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180012812.2A Active CN102918495B (zh) | 2010-01-07 | 2011-01-07 | 用于执行算术运算的硬件 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9104633B2 (zh) |
EP (1) | EP2521968B1 (zh) |
KR (1) | KR20120113777A (zh) |
CN (1) | CN102918495B (zh) |
GB (1) | GB2476800A (zh) |
WO (1) | WO2011083152A1 (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101400577B1 (ko) * | 2013-03-11 | 2014-06-19 | 한양대학교 산학협력단 | Gpu를 이용한 희소행렬 곱셈 방법 |
US20150067273A1 (en) * | 2013-08-30 | 2015-03-05 | Microsoft Corporation | Computation hardware with high-bandwidth memory interface |
TWI604379B (zh) * | 2014-12-24 | 2017-11-01 | 英特爾公司 | 用於k最近相鄰者搜尋之系統、設備及方法 |
US10303735B2 (en) | 2015-11-18 | 2019-05-28 | Intel Corporation | Systems, apparatuses, and methods for K nearest neighbor search |
US10460704B2 (en) | 2016-04-01 | 2019-10-29 | Movidius Limited | Systems and methods for head-mounted display adapted to human visual mechanism |
CN107315574B (zh) * | 2016-04-26 | 2021-01-01 | 安徽寒武纪信息科技有限公司 | 一种用于执行矩阵乘运算的装置和方法 |
GB2552153B (en) | 2016-07-08 | 2019-07-24 | Advanced Risc Mach Ltd | An apparatus and method for performing a rearrangement operation |
GB2552154B (en) * | 2016-07-08 | 2019-03-06 | Advanced Risc Mach Ltd | Vector register access |
EP3501011A4 (en) | 2016-08-19 | 2020-09-09 | Movidius Ltd. | ROUTE PLANNING USING SPARKLING VOLUMETRIC DATA |
US10489063B2 (en) * | 2016-12-19 | 2019-11-26 | Intel Corporation | Memory-to-memory instructions to accelerate sparse-matrix by dense-vector and sparse-vector by dense-vector multiplication |
US10452744B2 (en) * | 2017-03-27 | 2019-10-22 | Oracle International Corporation | Memory management for sparse matrix multiplication |
US10776699B2 (en) * | 2017-05-05 | 2020-09-15 | Intel Corporation | Optimized compute hardware for machine learning operations |
JP7250784B2 (ja) | 2017-10-16 | 2023-04-03 | モビディウス リミテッド | ボリュームデータの密度座標ハッシュ化 |
GB2568085B (en) | 2017-11-03 | 2020-01-01 | Imagination Tech Ltd | Hardware unit for performing matrix multiplication with clock gating |
US10949947B2 (en) | 2017-12-29 | 2021-03-16 | Intel Corporation | Foveated image rendering for head-mounted display devices |
KR20190106010A (ko) | 2018-03-07 | 2019-09-18 | 삼성전자주식회사 | 전자 장치 및 머신 러닝 수행 방법 |
US20190362235A1 (en) | 2018-05-23 | 2019-11-28 | Xiaofan Xu | Hybrid neural network pruning |
US10846363B2 (en) * | 2018-11-19 | 2020-11-24 | Microsoft Technology Licensing, Llc | Compression-encoding scheduled inputs for matrix computations |
US11493985B2 (en) | 2019-03-15 | 2022-11-08 | Microsoft Technology Licensing, Llc | Selectively controlling memory power for scheduled computations |
US11379556B2 (en) | 2019-05-21 | 2022-07-05 | Arm Limited | Apparatus and method for matrix operations |
US11222092B2 (en) * | 2019-07-16 | 2022-01-11 | Facebook Technologies, Llc | Optimization for deconvolution |
US11120101B2 (en) * | 2019-09-27 | 2021-09-14 | Arm Limited | Matrix multiplication system and method |
KR102578971B1 (ko) | 2021-09-23 | 2023-09-14 | 정성길 | 천정 천공 장치 |
CN116304509A (zh) * | 2021-12-20 | 2023-06-23 | 华为技术有限公司 | 一种矩阵计算方法、芯片以及相关设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3919534A (en) * | 1974-05-17 | 1975-11-11 | Control Data Corp | Data processing system |
US5442581A (en) * | 1993-11-30 | 1995-08-15 | Texas Instruments Incorporated | Iterative division apparatus, system and method forming plural quotient bits per iteration |
CN1185606A (zh) * | 1996-12-20 | 1998-06-24 | 国际商业机器公司 | 面向算术/移位操作的单指令多数据校正电路 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE2505518A1 (de) * | 1974-03-13 | 1975-09-18 | Control Data Corp | Vorrichtung zur uebertragung von daten zwischen den speicher- und rechenabschnitten eines elektronischen rechners |
JPS5822446B2 (ja) | 1976-11-12 | 1983-05-09 | 日本化薬株式会社 | 豚の自由摂取用薬剤 |
NL7801727A (nl) | 1978-02-16 | 1979-08-20 | Hollandse Signaalapparaten Bv | Drempelspanningsselectieschakeling. |
JPS5822446A (ja) * | 1981-08-04 | 1983-02-09 | Hitachi Ltd | ベクトル・マスク演算制御方式 |
JPS58109971A (ja) * | 1981-12-23 | 1983-06-30 | Fujitsu Ltd | ベクトル演算処理方式 |
JPS60247782A (ja) * | 1984-05-23 | 1985-12-07 | Fujitsu Ltd | スパ−ス行列演算処理方式 |
JPS6125275A (ja) * | 1984-07-16 | 1986-02-04 | Nec Corp | ベクトル命令処理装置 |
US5021945A (en) * | 1985-10-31 | 1991-06-04 | Mcc Development, Ltd. | Parallel processor system for processing natural concurrencies and method therefor |
GB2447428A (en) * | 2007-03-15 | 2008-09-17 | Linear Algebra Technologies Lt | Processor having a trivial operand register |
GB2457303A (en) * | 2008-02-11 | 2009-08-12 | Linear Algebra Technologies | Randomly accessing elements of compressed matrix data by calculating offsets from non-zero values of a bitmap |
-
2010
- 2010-01-07 GB GB1000197A patent/GB2476800A/en not_active Withdrawn
-
2011
- 2011-01-07 CN CN201180012812.2A patent/CN102918495B/zh active Active
- 2011-01-07 US US13/521,178 patent/US9104633B2/en active Active
- 2011-01-07 KR KR1020127020779A patent/KR20120113777A/ko not_active Application Discontinuation
- 2011-01-07 EP EP11700729.4A patent/EP2521968B1/en active Active
- 2011-01-07 WO PCT/EP2011/050189 patent/WO2011083152A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3919534A (en) * | 1974-05-17 | 1975-11-11 | Control Data Corp | Data processing system |
US5442581A (en) * | 1993-11-30 | 1995-08-15 | Texas Instruments Incorporated | Iterative division apparatus, system and method forming plural quotient bits per iteration |
CN1185606A (zh) * | 1996-12-20 | 1998-06-24 | 国际商业机器公司 | 面向算术/移位操作的单指令多数据校正电路 |
Also Published As
Publication number | Publication date |
---|---|
KR20120113777A (ko) | 2012-10-15 |
US20130073599A1 (en) | 2013-03-21 |
GB2476800A (en) | 2011-07-13 |
WO2011083152A1 (en) | 2011-07-14 |
CN102918495A (zh) | 2013-02-06 |
US9104633B2 (en) | 2015-08-11 |
GB201000197D0 (en) | 2010-02-24 |
EP2521968B1 (en) | 2016-11-16 |
EP2521968A1 (en) | 2012-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102918495B (zh) | 用于执行算术运算的硬件 | |
US10719318B2 (en) | Processor | |
CN103221916B (zh) | 执行乘乘累加指令 | |
US10691996B2 (en) | Hardware accelerator for compressed LSTM | |
Ebeling et al. | Mapping applications to the RaPiD configurable architecture | |
US20200394495A1 (en) | System and architecture of neural network accelerator | |
US8250130B2 (en) | Reducing bandwidth requirements for matrix multiplication | |
CN102087740B (zh) | 用于通用计算的纹理单元 | |
US20080097625A1 (en) | Iterative matrix processor based implementation of real-time model predictive control | |
US20190196825A1 (en) | Vector multiply-add instruction | |
US20090024685A1 (en) | High Speed and Efficient Matrix Multiplication Hardware Module | |
WO2012039961A2 (en) | System and method for generating images of subsurface structures | |
KR101843243B1 (ko) | 제로값을 피연산자로 갖는 연산자에 대한 연산을 스킵하는 연산 방법 및 연산 장치 | |
CN109284824B (zh) | 一种基于可重构技术的用于加速卷积和池化运算的装置 | |
US11748645B2 (en) | Optimization apparatus and control method thereof | |
CN101689105A (zh) | 运用平凡算术运算的处理器 | |
US20240119114A1 (en) | Matrix Multiplier and Matrix Multiplier Control Method | |
CN113486298B (zh) | 基于Transformer神经网络的模型压缩方法、矩阵乘法模块 | |
Rákossy et al. | Efficient and scalable cgra-based implementation of column-wise givens rotation | |
KR101715456B1 (ko) | 스레드 오프셋 카운터 | |
JP2009181293A (ja) | 行列演算コプロセッサ | |
Flynn et al. | Finding speedup in parallel processors | |
Chen et al. | OpenCL-based erasure coding on heterogeneous architectures | |
JP2022500782A (ja) | データ処理システム、方法、およびプログラム | |
Richter et al. | A Configurable VHDL Template for Parallelization of 3D Stencil Codes on FPGAs: ERSA'12 Distinguished Paper |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |