CN116662727A - 矩阵计算引擎 - Google Patents
矩阵计算引擎 Download PDFInfo
- Publication number
- CN116662727A CN116662727A CN202310721822.8A CN202310721822A CN116662727A CN 116662727 A CN116662727 A CN 116662727A CN 202310721822 A CN202310721822 A CN 202310721822A CN 116662727 A CN116662727 A CN 116662727A
- Authority
- CN
- China
- Prior art keywords
- matrix
- elements
- vector
- size
- memory
- 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.)
- Pending
Links
- 239000011159 matrix material Substances 0.000 title claims abstract description 260
- 230000015654 memory Effects 0.000 claims abstract description 143
- 238000004364 calculation method Methods 0.000 claims abstract description 49
- 239000013598 vector Substances 0.000 claims description 64
- 238000000034 method Methods 0.000 claims description 8
- 238000013507 mapping Methods 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 7
- 230000002093 peripheral effect Effects 0.000 description 7
- 239000000872 buffer Substances 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000007792 addition Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000014616 translation Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000007787 long-term memory Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000007787 solid 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
- 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
- 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
- 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/544—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 for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- 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/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- 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 or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
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)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Measurement And Recording Of Electrical Phenomena And Electrical Characteristics Of The Living Body (AREA)
- Image Processing (AREA)
Abstract
本公开涉及矩阵计算引擎。在一个实施方案中,矩阵计算引擎被配置为执行矩阵计算(例如,矩阵乘法)。在一个实施方案中,矩阵计算引擎可并行执行多次矩阵计算。更具体地,矩阵计算引擎可被配置为对输入矩阵元素并行地执行多次乘法运算,从而生成所得矩阵元素。在一个实施方案中,矩阵计算引擎可被配置为在结果存储器中累加结果,从而对每个矩阵的每个矩阵元素执行乘法累加运算。
Description
本分案申请是基于申请号为201880071101.4,申请日为2018年10月18日,发明名称为“矩阵计算引擎”的中国专利申请的分案申请。
技术领域
本文所述的实施方案涉及用于在基于处理器的系统中执行矩阵运算的电路。
背景技术
在现代计算系统中执行的各种工作负载依赖于大量的矩阵乘法。例如,某些长期记忆(LSTM)学习算法用于各种情景,诸如语言检测、读卡器、自然语言处理和手写处理等。LSTM处理包括许多矩阵乘法。矩阵乘法可以是例如小整数,但是其数量非常多。此类运算在通用中央处理单元(CPU)上即使是具有矢量指令的CPU上性能也很低,而功耗非常高。低性能高功率工作负载对任何计算系统都是问题,但对于电池供电系统尤其是个问题。
发明内容
在一个实施方案中,矩阵计算引擎被配置为执行矩阵计算(例如,矩阵乘法)。在一个实施方案中,矩阵计算引擎可并行执行多次矩阵计算。更具体地,矩阵计算引擎可被配置为对输入矩阵元素并行地执行多次乘法运算,从而生成所得矩阵元素。在一个实施方案中,矩阵计算引擎可被配置为在结果存储器中累加结果,从而对每个矩阵的每个矩阵元素执行乘法累加运算。例如,与通用处理器(甚至具有矢量指令的处理器)相比,矩阵计算引擎在一个实施方案中可以是高性能和高功效的。
附图说明
下面的详细描述参照附图,现在对这些附图进行简要说明。
图1是处理器、矩阵计算引擎和低级高速缓存的一个实施方案的框图。
图2是示出了用于图1中所示的矩阵计算引擎的X、Y和Z存储器和乘法累加(MAC)电路的一个实施方案的框图。
图3是示出了用于一个实施方案的生成结果矩阵元素的MAC中的一个MAC的框图。
图4是示出了用于一个实施方案的矩阵元素值重映射的框图。
图5是可用于处理器和矩阵计算引擎的一个实施方案的指令表。
图6是系统的一个实施方案的框图。
图7是计算机可访问存储介质的一个实施方案的框图。
尽管本公开中所述的实施方案可受各种修改形式和另选形式的影响,但其具体实施方案在附图中以举例的方式示出并将在本文中详细描述。然而,应当理解,附图和对其的具体实施方式不旨在将实施方案限制为所公开的特定形式,而相反,本发明旨在涵盖落入所附权利要求书的实质和范围内的所有修改、等同物和另选方案。本文所使用的标题仅用于组织目的,并不旨在用于限制说明书的范围。如在整个本申请中所使用的那样,以允许的意义(即,意味着具有可能性)而非强制的意义(即,意味着必须)使用“可能”一词。类似地,字词“包括”、“包含”是指包括但不限于。
在本公开内,不同实体(其可被不同地称为“单元”、“电路”、其他部件等等)可被描述或声称成“被配置为”执行一个或多个任务或操作。此表达方式—被配置为[执行一个或多个任务]的[实体]—在本文中用于指代结构(即,物理的事物,诸如电子电路)。更具体地,此表达方式用于指示此结构被布置成在操作期间执行一个或多个任务。结构可被描述成“被配置为”执行某个任务,即使该结构当前并非正被操作亦如此。“被配置为生成输出时钟信号的时钟电路”旨在涵盖例如在操作期间执行该功能的电路,即使所涉及的电路当前并非正被使用(例如该电路并未连接到电源)。因此,被描述或表述成“被配置为”执行某个任务的实体是指物理的事物,诸如设备、电路、存储可执行以实施该任务的程序指令的存储器等。该短语在本文中不被用于指代无形的事物。通常,形成与“被配置为”对应的结构的电路可包括硬件电路。硬件电路可包括以下项的任意组合:组合式逻辑电路、时钟存储设备(诸如触发器、寄存器、锁存器等)、有限状态机、存储器(诸如静态随机存取存储器或嵌入式动态随机存取存储器)、定制设计电路、模拟电路、可编程逻辑阵列等。类似地,为了描述方便,可将各种单元/电路/部件描述为执行一个或多个任务。此类描述应当被解释为包括短语“被配置为”。
术语“被配置为”并不旨在表示“可被配置为”。例如,未经编程的FPGA不会被认为是“被配置为”执行某个特定功能,虽然其可能“可被配置为”执行该功能。在适当编程之后,FPGA然后可被配置为执行该功能。
所附权利要求书中表述被配置为执行一个或多个任务的单元/电路/部件或其他结构明确地旨在对该项权利要求不援引35U.S.C.§112(f)的解释。于是,所提交的本申请中没有任何权利要求旨在要被解释为具有装置-加-功能要素。如果申请人在申请过程中想要援引112(f)部分,则其将利用“用于”[执行功能]“的装置”结构来表述权利要求的要素。
在实施方案中,可通过以硬件描述语言(HDL)诸如Verilog或VHDL对电路的描述进行编码来实现根据本公开的硬件电路。可针对为给定集成电路制造技术设计的单元库来合成HDL描述,并可出于定时、功率和其他原因而被修改,以获得可被传输到工厂以生成掩模并最终产生集成电路的最终的设计数据库。一些硬件电路或其部分也可在示意图编辑器中被定制设计并与合成电路一起被捕获到集成电路设计中。该集成电路可包括晶体管并还可包括其他电路元件(例如,无源元件,诸如电容器、电阻器、电感器等),以及晶体管和电路元件之间的互连件。一些实施方案可实现耦接在一起的多个集成电路,以实现硬件电路,和/或可在一些实施方案中使用离散元件。另选地,HDL设计可被合成为可编程逻辑阵列诸如现场可编程门阵列(FPGA)并且可在FPGA中实现。
如本文所用,术语“基于”或“取决于”用于描述影响确定的一个或多个因素。此术语不排除可能有附加因素可影响确定。也就是说,确定可仅基于指定的因素或基于所指定的因素及其他未指定的因素。考虑短语“基于B确定A”。这个短语指定B是用于确定A的因素或者其影响A的确定。这个短语并不排除A的确定也可能基于某个其他因素诸如C。这个短语还旨在涵盖A仅基于B来确定的实施方案。如本文所用,短语“基于”与短语“至少部分地基于”是同义的。
本说明书包括对各种实施方案的参考,以指示本公开并非旨在提及一个特定具体实施,而是提及落入包括所附权利要求书的本公开的实质内的一系列实施方案。特定特征、结构或特性可以与本公开一致的任何合适的方式被组合。
具体实施方式
现在转向图1,示出了包括处理器12、矩阵计算引擎10和低级高速缓存14的装置的一个实施方案的框图。在例示的实施方案中,处理器12耦接到低级高速缓存14和矩阵计算引擎10。在一些实施方案中,矩阵计算引擎10也可耦接到低级高速缓存14,和/或可耦接到处理器12中的数据高速缓存(DCache)16。处理器12还可包括指令高速缓存(ICache)18、一个或多个流水线级20A-20N。流水线级20A-20N可以串行耦接。矩阵计算引擎10可包括彼此耦接的指令缓冲器22、X存储器24、Y存储器26、Z存储器28和乘法累加(MAC)电路30。在一些实施方案中,矩阵计算引擎10可包括高速缓存32。
矩阵计算引擎10可被配置为执行一个或多个矩阵计算。具体地,在一个实施方案中,矩阵计算引擎10可执行整数矩阵乘法。例如,实施方案接收输入矩阵的矢量(例如,在X存储器24和Y存储器26中)。MAC电路30可包括MAC电路的阵列。每个MAC电路可在X存储器24和Y存储器26中接收矩阵的所选择的矩阵元素,并且可使那些值相乘并添加乘积。另外,MAC电路30可在Z存储器28中接收目的地位置的当前值,并且可以将当前值与乘法结果求和以生成Z存储器28的结果(从而将乘法结果与先前结果累加)。
在一个实施方案中,矩阵计算引擎10可支持2×2整数矩阵。其他实施方案可使用不同的矩阵大小(例如,3×3、4×4等)。随着矩阵大小的增加,用于生成结果的一个矩阵元素的乘法和加法的数量增加。可以确定矩阵大小与可利用矩阵计算引擎10的算法的要求之间的平衡,以提供MAC电路30的性能和经济实现。
在一个实施方案中,矩阵元素可为8位整数。因此,X存储器24或Y存储器26中的32位字段可包括作为2x2矩阵的四个值的4个整数。矩阵值能够以行主顺序或列主顺序以32位数量格式化。行主顺序可指给定行的矩阵元素在值方面是连续的或相邻的,后接下一行的矩阵元素等的格式。列主顺序可指给定列的矩阵元素在值方面是连续的或相邻的,后接下一列的矩阵元素等的格式。
在一个实施方案中,矩阵乘法结果可被生成并累加为16位整数或32位整数。其他实施方案可采用任何期望的大小(用于输入矩阵元素和结果存储器(Z存储器28)中的累加元素两者)。
在一个实施方案中,矩阵计算引擎10可支持输入到X存储器24和Y存储器26的小于8位矩阵元素。例如,可使用4位整数或2位整数。在另一个实施方案中,也可使用1位整数。在一个实施方案中,可将查找表编程到矩阵计算引擎10中,其包括每4位或2位整数的8位值。查找表能够以任何期望的方式编程,并且因此可允许对操纵中使用的值进行编码。在一个实施方案中,查找表可被编程在X存储器24和/或Y存储器26的条目中。其他实施方案可为查找表提供单独的存储。在其他实施方案中,可以使用比由MAC电路30实现的整数大小更小的任何整数集。类似地,在包括大于8位MAC实现的整数大小的实施方案中,可使用小于所支持的大小的任何整数集大小。
如前所述,MAC电路30可以是MAC阵列,从而不仅执行为一个结果矩阵生成元素的乘法和加法,而且还可并行地为多个矩阵执行乘法。例如,如果X存储器24和Y存储器26包括256位条目并且实现8位矩阵元素,则在X存储器24和Y存储器26的每个条目中存储8个输入矩阵。如果存储器包括512位条目,则在每个条目中存储16个输入矩阵。类似地,如果存储器的每个条目支持1024位条目,则可以并行处理32个输入矩阵。如果支持128位条目,则可以并行处理4个输入矩阵。另选地,MAC电路30可包括比要用于并行地执行输入操作数中的所有矩阵乘法更少数量的MAC。在此类实施方案中,矩阵计算引擎10可针对来自X存储器24和Y存储器26的输入数据的不同部分使用多次通过MAC电路30以完成矩阵计算的一个阵列。
由于Z存储器累加矩阵乘法结果,因此X存储器24和Y存储器26可加载有附加矩阵以执行进一步的矩阵计算。
使用较小的整数值来表示矩阵元素可减小矩阵计算引擎10在其上操作的给定数据结构的大小。与使用较大整数或浮点值的能与之相比的数据结构相比,数据结构可消耗较少的存储器(例如,具有较小的“存储器占有面积”)。传输给定数量的矩阵可更有效并且可消耗更少的功率,因为传输中所消耗的功率可与所移动的数据量成比例。另外,并行操作的效率可比处理器12可本地实现的每个完成任务提供高性能和低功耗。矩阵计算引擎10可从处理器12减轻计算密集型矩阵计算的负担,该处理器可为例如通用CPU。通用CPU通常是针对标量整数和/或标量浮点性能进行优化的。
如上所述,矩阵计算引擎10可支持累加结果中的矩阵元素的多个大小。例如,可以支持16位结果矩阵元素和32位结果矩阵元素。Z存储器28中的结果矩阵元素的最大数量可由Z存储器28的大小和矩阵元素的大小来设置。较小的大小可消耗Z存储器28中的较少存储器。Z存储器28可被布置成在存储器的特定行中写入较小的矩阵元素,而保留其他行未使用。例如,如果矩阵元素是最大元素的大小的1/2,则Z存储器28中每隔一行都可能未使用。如果矩阵元素是最大大小元素的1/4,则可以每隔四行使用,等等。
在一个实施方案中,由矩阵计算引擎10执行的矩阵计算指令还可包括存储器指令(例如,加载/存储指令)。加载指令可将矩阵矢量从系统存储器(未示出)传送到X存储器24和Y存储器26,或将矩阵元素传送到Z存储器28中。存储指令可将矩阵从Z存储器28写入系统存储器。其他实施方案还可包括用于将存储指令从X存储器24和Y存储器26写入系统存储器的存储指令。该系统存储器可以是在包括高速缓存14、16和18的高速缓存分级结构的底部存取的存储器。系统存储器可由随机存取存储器(RAM)形成,诸如各种类型的动态RAM(DRAM)或静态RAM(SRAM)。可包括存储器控制器以接口连接到系统存储器。在一个实施方案中,矩阵计算引擎10可以是与处理器12一致的高速缓存。在一个实施方案中,矩阵计算引擎10可有权访问数据高速缓存16以读/写数据。另选地,矩阵计算引擎10相反可有权访问低级高速缓存14,并且低级高速缓存14可确保高速缓存与数据高速缓存16的一致性。在另一个另选方案中,矩阵计算引擎10可有权访问存储器系统,存储器系统中的一致点可确保访问的一致性。在另一个另选方案中,矩阵计算引擎10可有权访问高速缓存14和16。
在一些实施方案中,矩阵计算引擎10可包括高速缓存32,以存储最近由矩阵计算引擎10访问的数据。选择是否包括高速缓存32可基于外积10所经受的有效延迟以及矩阵计算引擎10期望的性能水平。高速缓存32可具有任何容量、高速缓存行大小和配置(例如,设定关联、直接映射等)。
在例示的实施方案中,处理器12负责获取矩阵计算指令(例如,MAC指令、存储器指令等)并将矩阵计算指令传输至矩阵计算引擎10以供执行。处理器12对矩阵计算指令进行获取、解码等的“前端”开销可以在矩阵计算引擎10执行的矩阵计算上被分摊。在一个实施方案中,处理器12可以被配置为将矩阵计算指令沿流水线(图1中一般性地示为级20A-20N)向下传播到矩阵计算指令变为非推测性的点。在图1中,级20M示出了流水线的非推测性级。从非推测性级,指令可被传输到矩阵计算引擎10。然后处理器12可退出指令(级20N)。具体地,处理器12可在矩阵计算引擎10完成矩阵计算之前(或如果矩阵计算指令在指令缓冲器22中排在其他指令之后,则甚至在开始矩阵计算之前)退出指令。
通常,如果知道指令要完成执行而没有异常/中断,则指令可以是非推测性的。因此,一旦前面的指令(按程序顺序)已经被处理到已知先前指令不会导致处理器12中的异常/推测性刷新且还知道指令自身不会导致异常/推测性刷新,则指令就可以是非推测性的。基于处理器12实施的指令集架构,可能已知一些指令不会导致异常,并且也不会导致推测性刷新。一旦已经确定其他先前指令无异常且无刷新,此类指令就也是无异常且无刷新的。
对于要传输到矩阵计算引擎10的存储器指令而言,处理器12中的处理可包括将存储器操作的虚拟地址转换为物理地址(包括执行任何保护检查并确保存储器指令具有有效转换)。
图1示出了处理器12(具体地非推测性级20M)和矩阵计算引擎10之间的通信路径。例如,如果矩阵计算引擎10在物理上靠近处理器12,该路径可以是专用通信路径。该通信路径可以与其他通信共享,例如,基于分组的通信系统可被用来向系统存储器传输存储器请求并向矩阵计算引擎10传输指令。该通信路径也可通过系统存储器,例如,矩阵计算引擎可具有指向处理器12可将外积指令写入其中的存储器区域的指针。
可提供指令缓冲器22以允许矩阵计算引擎10在其他指令被执行时将一些指令排队。在一个实施方案中,指令缓冲器22可为先进先出缓冲器(FIFO)。即,可按照程序顺序处理矩阵计算指令。其他实施方案可实施其他类型的缓冲器。
X存储器24和Y存储器26可各自被配置为存储矩阵的针对矩阵计算指令所定义的至少一个矢量(例如,8位矩阵元素的8个、16个、32个、64个等矩阵和2×2矩阵)。类似地,Z存储器28可被配置为存储至少一个矩阵计算结果。结果可以是结果大小的矩阵阵列(例如,16位矩阵元素或32位矩阵元素)。在一些实施方案中,X存储器24和Y存储器26可被配置为存储矩阵的多个矢量,和/或Z存储器28可被配置为存储矩阵的多个结果矢量。矩阵的每个矢量可被存储在存储器中不同的存储体中,并且用于给定指令的操作数可由存储体编号来标识。
处理器12从指令高速缓存(ICache)18获取指令并通过各流水线级20A-20N处理指令。该流水线是一般化的,并可在各种实施方案中包括任何级别的复杂度以及性能增强特征。例如,处理器12可能是超标量的,并且一个或多个流水线级可被配置为一次处理多个指令。流水线可针对不同类型的指令而有长度变化(例如,ALU指令可具有调度、执行和回写级,而存储器指令可具有调度、地址生成、转换/高速缓存存取、数据转发和错过处理级)。级可包括分支预测、寄存器重命名、预先获取等。
一般来讲,在处理每条指令期间可能存在指令变为非推测性的点。流水线级20M可表示针对矩阵计算指令的这个级,矩阵计算指令从非推测性级传输到矩阵计算引擎10。退出级20N可表示将给定指令结果移交到架构状态并不再能通过刷新指令或重新发出指令而“撤销”的状态。该指令本身相对于当前执行的指令(例如,指令仍可存储于指令高速缓存中)而言在退出级处退出处理器。因此,在例示的实施方案中,在已经成功将指令传输到矩阵计算引擎10时,发生外积指令的退出。
指令高速缓存18和数据高速缓存(DCache)16可各自为具有任何所需容量、高速缓存行大小和配置的高速缓存。类似地,低级高速缓存14可以是任何容量、高速缓存行大小和配置。低级高速缓存14可以是高速缓存分级结构中的任何级别(例如,对于处理器12而言的最后一级高速缓存(LLC),或任何中间高速缓存级别)。
现在转向图2,其示出了例示X存储器24(大括号40)、Y存储器26(大括号42)、MAC电路30和Z存储器28(大括号43)的条目的框图。X存储器条目40和Y存储器条目42中的每一者可包括输入矩阵(在图2中标记为矩阵0至矩阵N)的矢量。X存储器条目40的矩阵1以分解图(大括号44)示出以包括用于2x2矩阵的矩阵元素M00、M10、M01和M11。矩阵元素的下标可以是左侧的行数(0或1)和右侧的列数(0或1),如图2底部的矩阵46所示。因此,如图2所示,矩阵以列主顺序存储。如先前所提及的,其他实施方案可使用行主顺序。需注意,在一些实施方案中,Z存储器28中的矩阵元素可大于X存储器24和Y存储器26中的矩阵元素(例如,16或32位,与X存储器24和Y存储器26中的8位相比)。
MAC电路30包括多个MAC,诸如图2所示的MAC 48A-48D和如图2中的椭圆所示的附加MAC。MAC 48A-48D中的每个MAC可以从X存储器条目40接收一个或多个矩阵元素,并且从Y存储器条目42接收一个或多个矩阵元素,以生成用于Z存储器28的矩阵元素输出。MAC还可以从Z存储器28接收对应矩阵元素的当前值以执行累加操作。Z存储器28中的每个矩阵元素可存在一个MAC。MAC可执行乘法和加法,其生成用于矩阵乘法Z=Y×X的所得矩阵元素。也就是说,对于Z中的矩阵中的一个矩阵的元素Mab,MAC可将Y的行a的矩阵元素与X的列b的矩阵元素相乘,并且将结果与Z的矩阵中的Mab的当前值一起相加。其他实施方案可以实现矩阵乘法Z=X×Y。在该实施方案中,对于Z中的矩阵中的一个矩阵的元素Mab,MAC可以将X的行a的矩阵元素与Y的列b的矩阵元素相乘,并将结果与Z的矩阵中的Mab的当前值一起相加。
图3是示出4个MAC 48E-48H的框图,这4个MAC 48E-48H生成矢量X和Y中的一个矩阵的2x2矩阵的矩阵乘法的结果,生成Z的结果矩阵。每个MAC 48E-48H接收Y矩阵的行(图3中的元素YM)和X矩阵的列(图3中的元素XM)。将对应的元素相乘(例如,行中的第一元素与列中的第一元素相乘,行中的第二元素与列中的第二元素相乘等)。将结果相加,并将当前值包括在加法中以生成输出。
例如,MAC 48E接收Y矩阵(YM00和YM01)的行零和X矩阵(XM00和XM10)的列零以及来自对应Z矩阵(ZM00)的行0、列0处的矩阵元素的当前值。MAC(ZM00+XM00YM00+XM10YM01)的结果被输出为ZM00的新值。类似地,MAC 48F、48G和48H接收Y矩阵的行、X矩阵的列和Z矩阵元素的当前值,并且分别生成ZM01、ZM10和ZM11。可以为矢量中的每个其他矩阵提供一组类似的MAC。
在一个实施方案中,Z矩阵可比输入整数矩阵元素累加更大的整数矩阵元素。例如,在一个实施方案中,输入矩阵元素可为8位,并且Z矩阵可具有16位或32位元素。因此,MAC 48可接收8位输入并产生16位或32位输出。其他实施方案针对任一矩阵元素可具有不同的大小。
图4是示出接受元素小于所实现的矩阵元素大小(例如,4位或2位元素,具有8位所实现的元素大小)的矩阵的实施方案的框图。例如,在一些LSTM网络中,应用于模型的输入数据的权重(在先前操作中学习的)可为4位或2位整数。模型的输入数据可以是例如所实现的大小(例如,8位)。在图4的实施方案中,提供了查找表60,该查找表可使用可映射到输入矩阵元素的值(例如,图4中的值V0至VN-1)来编程。矩阵元素值可为到查找表60中的索引,并且对应值可从查找表60读取并通过mux 62取代来自X存储器24或Y存储器26的矩阵元素值。矩阵i 62在图4中被示出为来自X存储器或Y存储器的示例性矩阵,其中矩阵元素M00、M01、M10和M11小于元素大小,因此在矩阵i 62中在元素之间存在空间。也就是说,矩阵i存储区域可包括足以用于所实现元素大小的存储装置,并且较小元素的元素大小不填满存储装置。
每个元素被用作到表60中的索引(例如,图4中的Mjk),因此表中的值N的数量可以是2矩阵元素中的位数(例如,针对4位为16,或针对2位为4)。在一个实施方案中,表60可存储在X存储器条目或Y存储器条目中,并且能够以类似于将矩阵矢量加载到X存储器24和Y存储器26中的方式从存储器加载。因此,较小值到较大值的映射可在软件的控制下,该软件可使用映射来实现编码/解码方案,以数字方式将较小值转换为较大值,或用于任何其他目的。
Mux 64上的选择控制可以是矩阵元素大小。如果元素大小是所实现的元素大小(例如,8位),则mux 64可选择矩阵存储位置的输出(例如,附图标号62)。否则,可选择查找表的输出。
需注意,可使用来自X存储器24或Y存储器26的读取矩阵元素的不同具体实施,并且用查找表输出值选择性地替换矩阵元素。图4示出了查找表的逻辑构造,但不一定是如何在物理上实现查找表。
图5是示出了针对矩阵计算引擎10的一个实施方案的示例性指令集的表90。其他实施方案可实施任何指令集,包括所示的指令集的子集、其他指令、子集和其他指令的组合等。
存储器操作可包括加载和存储指令。具体地讲,在例示的实施方案中,对于X、Y和Z存储器分别有加载和存储指令。在Z存储器28的情况下,大小参数可指示正在使用哪个矩阵元素大小,从而将Z存储器的哪些行写入存储器或从存储器读取哪些行(例如,所有行、每隔一行,每隔四行等)。在一个实施方案中,X存储器和Y存储器可具有用于存储矩阵的不同矢量的多个存储体。在此类实施方案中,可存在多个读/写不同存储体的指令,或者可以有操作数指定受加载/存储X/Y指令影响的存储体。在每种情况下,X存储体都可存储指针,该指针指向要从/向其执行加载/存储的存储器。该指针可以是虚拟的,并且可以如上所述由处理器12转换。另选地,指针可以是物理的,并且可由处理器12在转换后提供。
MAC指令可以对X矢量和Y矢量中的矩阵执行矩阵乘法,并且可以将所得矩阵元素与Z存储器28的对应元素求和。具体地,在一个实施方案中,MAC指令执行Y中的矩阵与X中的对应矩阵的乘法。其他实施方案可将X中的矩阵乘以Y中的对应矩阵,或者可支持两种形式的指令以选择所需的乘法。如果输入矩阵使用小于所实现的大小的矩阵元素,则可选表操作数可指定查找表。
图6是系统150的一个实施方案的框图。在例示的实施方案中,系统150包括耦接到一个或多个外围设备154和外部存储器158的集成电路(IC)152的至少一个实例。提供了电源156,其向IC 152供应供电电压以及向存储器158和/或外围设备154供应一个或多个供电电压。IC 152可包括处理器12的一个或多个实例以及矩阵计算引擎10的一个或多个实例。在其他实施方案中,多个IC可具有处理器12和/或矩阵计算引擎10的实例。
根据系统150的类型,外围设备154可包括任何期望的电路。例如,在一个实施方案中,系统150可以是计算设备(例如,个人计算机、膝上型计算机等)、移动设备(例如,个人数字助理(PDA)、智能电话、平板电脑等)或能够从矩阵计算引擎10受益的专用计算设备(例如,神经网络、LSTM网络、包括实施机器学习的设备的其他机器学习引擎等)。在系统150的各种实施方案中,外围设备154可包括用于各种无线通信的设备,诸如WiFi、蓝牙、蜂窝、全球定位系统等。外围设备154还可以包括额外的存储装置,包括RAM存储装置、固态存储装置或磁盘存储装置。外围设备154可包括用户界面设备,诸如显示屏,其包括触摸显示屏或多触摸显示屏、键盘或其他输入设备、麦克风、扬声器等。在其他实施方案中,系统150可为任何类型的计算系统(例如,台式个人计算机、膝上型电脑、工作站、网络机顶盒等)。
外部存储器158可包括任何类型的存储器。例如,外部存储器158可为SRAM、动态RAM(DRAM)(诸如同步DRAM(SDRAM))、双倍数据速率(DDR、DDR2、DDR3等)SDRAM、RAMBUSDRAM、低功率版本的DDR DRAM(例如LPDDR、mDDR等)等等。外部存储器158可包括存储器设备可被安装到的一个或多个存储器模块,诸如单列直插内存模块(SIMM)、双列直插内存模块(DIMM)等。另选地,外部存储器158可包括以芯片上芯片或封装上封装具体实施被安装在IC152上的一个或多个存储器设备。
图7是示出了计算机可访问存储介质160的一个实施方案的框图,该介质存储IC152的电子描述(附图标号162)。更具体地,该描述可包括至少矩阵计算引擎10和处理器12。一般来讲,计算机可访问存储介质可包括在使用期间能够被计算机访问以向计算机提供指令和/或数据的任何存储介质。例如,计算机可访问存储介质可包括诸如磁性或光学介质的存储介质,例如,盘(固定或可拆卸)、带、CD-ROM、DVD-ROM、CD-R、CD-RW、DVD-R、DVD-RW或蓝光。存储介质还可包括易失性或非易失性存储器介质,诸如RAM(例如,同步动态RAM(SDRAM)、Rambus DRAM(RDRAM)、静态RAM(SRAM)等)、ROM或闪存存储器。存储介质可被物理地包括在存储介质将指令/数据提供至其的计算机内。另选地,存储介质可连接至计算机。例如,存储介质可通过网络或无线链路诸如网络附接存储装置而被连接至计算机。存储介质可通过外围接口诸如通用串行总线(USB)而被连接。通常,计算机可访问存储介质160可以非暂态方式存储数据,其中非暂态在该上下文中可指不通过信号传输指令/数据。例如,非暂态存储装置可为易失性的(并且响应于断电而可能会丢失所存储的指令/数据)或为非易失性的。
通常,计算机可访问存储介质160上存储的IC 152的电子描述162可以是数据库,该数据库可以由程序读取并直接或间接用于制造包括IC 152的硬件。例如,该描述可以是诸如Verilog或VHDL的高级设计语言(HDL)中硬件功能的行为级别的描述或寄存器传输级别(RTL)的描述。可通过合成工具读取该描述,合成工具可合成该描述以产生包括来自合成库的门电路列表的网表。网表包括一组门电路,其还表示包括IC 152的硬件的功能。然后可放置并路由网表,以产生用于描述要应用到掩模的几何形状的数据集。然后可以在各种半导体制造步骤中使用掩模以产生对应于IC 152的半导体电路。另选地,计算机可访问存储介质300上的描述162可以是期望的网表(具有或没有合成库)或数据集。
尽管计算机可访问存储介质160存储IC 152的描述162,但其他实施方案可根据需要存储IC 152的任何部分(例如,如上所述,矩阵计算引擎10和/或处理器12)的描述162。
一旦充分了解了上面的公开,许多变型和修改对于本领域的技术人员而言将变得显而易见。本公开旨在使以下权利要求书被阐释为包含所有此类变型和修改。
Claims (20)
1.一种装置,包括:
处理器,所述处理器被配置为获取第一指令;和
计算引擎,所述计算引擎耦接到所述处理器,其中:
所述计算引擎包括被配置为存储元素的输入矢量的至少两个输入存储器和被配置为累加元素的输出矢量的输出存储器;并且
所述计算引擎包括乘法累加MAC电路,所述MAC电路耦接到所述至少两个输入存储器,并且被配置为响应于所述第一指令,对具有第一大小的元素的矢量执行乘法累加运算,从而生成用于所述输出存储器的元素的所述输出矢量;并且
所述计算引擎包括查找表,所述查找表被编程为将小于所述第一大小的第二大小的第一元素映射到所述第一大小的第二元素,其中所述第一元素从所述输入存储器中的至少一个提供,并且其中所述第二元素是被提供给所述MAC电路的具有所述第一大小的元素的矢量中的一个矢量,并且其中所述查找表被存储在所述至少两个输入存储器中的一者中。
2.根据权利要求1所述的装置,其中所述输入矢量和输出矢量是矩阵的矢量,并且其中所述MAC电路包括多个MAC,每个MAC被配置为生成所述输出矢量中的一个矩阵的一个矩阵元素。
3.根据权利要求2所述的装置,其中所述多个MAC的数量等于所述输出矢量中的矩阵元素的数量。
4.根据权利要求2所述的装置,其中所述多个MAC的数量小于所述输出矢量中的矩阵元素的数量,并且其中所述第一指令通过用所述输入矢量和所述输出矢量的不同部分迭代所述多个MAC来完成。
5.一种方法,包括:
从计算引擎中的第一操作数存储器读取第一元素的第一矢量,所述第一元素具有第一大小;
利用所述计算引擎中的查找表将所述第一矢量的第一元素中的各第一元素映射到具有大于所述第一大小的第二大小的第二元素,其中所述第二元素形成第二矢量;
在所述计算引擎中对第二元素的第二矢量和从第二操作数存储器读取的第三元素的第三矢量执行乘法累加操作,其中所述查找表存储在所述第一操作数存储器或所述第二操作数存储器中的一者中;以及
从耦接到所述计算引擎的处理器向所述计算引擎发出计算指令,以使所述计算引擎执行所述乘法累加操作。
6.根据权利要求5所述的方法,其中所述第一矢量、所述第二矢量和所述第三矢量是矩阵的矢量,并且其中所述第一元素、所述第二元素和所述第三元素是矩阵元素。
7.根据权利要求5所述的方法,还包括对所述查找表编程。
8.一种矩阵计算引擎,包括:
电路,被配置为对第一矢量操作数和第二矢量操作数执行矩阵乘法运算,从而产生所得输出矢量;
其中所述电路被配置为对具有大于第一大小的第二大小的矩阵元素进行操作;以及
所述矩阵计算引擎包括查找表,所述查找表用于将具有所述第一大小的第一矩阵元素映射到具有所述第二大小的第二矩阵元素,其中所述第二矩阵元素被提供为所述第一矢量操作数。
9.根据权利要求8所述的矩阵计算引擎,还包括一个或多个操作数存储器,耦接到所述电路并且存储所述第二矢量操作数和第三矢量操作数,其中,所述第三矢量操作数具有所述第一大小的第一矩阵元素,其中所述第二矢量操作数和所述第三矢量操作数在使用期间从所述一个或多个操作数存储器读取以执行所述矩阵乘法运算,并且其中所述矩阵计算引擎被配置为映射所述第一矩阵元素以生成所述第一矢量操作数。
10.根据权利要求9所述的矩阵计算引擎,其中所述查找表是可编程的,并且其中所述查找表存储在所述一个或多个操作数存储器中的一者中。
11.根据权利要求8所述的矩阵计算引擎,其中所述电路包括多个乘法累加电路,其中所述多个乘法累加电路被耦接以接收所述第二大小的输入矩阵元素,并且被配置为生成大于所述第二大小的第三大小的所得矩阵元素。
12.根据权利要求11所述的矩阵计算引擎,还包括输出存储器,其中所述多个乘法累加电路被耦接以从所述输出存储器接收矩阵元素以与所得输出矢量累加,其中来自所述输出存储器的矩阵元素具有第三大小,并且其中与来自所述输出存储器的矩阵元素累加的所述所得输出矢量被写入所述输出存储器,并且其中所述多个乘法累加电路的数量等于所述输出存储器中的矩阵元素的数量。
13.一种方法,包括:
从计算引擎中的第一操作数存储器读取第一元素的第一矢量,所述第一元素具有第一大小;
利用所述计算引擎中的查找表将所述第一矢量的各元素映射到具有大于所述第一大小的第二大小的第二元素,其中所述第二元素形成第二矢量;以及
对第二元素的第二矢量和第三元素的第三矢量执行乘法累加操作。
14.根据权利要求13所述的方法,其中所述第一矢量、所述第二矢量和所述第三矢量是矩阵的矢量,并且其中所述第一元素、所述第二元素和所述第三元素是矩阵元素。
15.根据权利要求14所述的方法,还包括:
对来自耦接到所述计算引擎的处理器的查找表进行编程;以及
将来自所述处理器的计算指令发出给所述计算引擎以使所述乘法累加操作被执行。
16.一种矩阵计算引擎,包括:
电路,被配置为响应于由耦接到矩阵计算引擎的处理器对所述矩阵计算引擎发出的指令,对第一矢量操作数和第二矢量操作数执行矩阵乘法运算,从而产生所得输出矢量,其中所述电路被配置为对具有大于第一大小的第二大小的矩阵元素进行操作;
查找表,被配置为将具有所述第一大小的第一矩阵元素映射到具有所述第二大小的第二矩阵元素,其中所述第二矩阵元素被提供为所述第一矢量操作数;以及
一个或多个操作数存储器,耦接到所述电路并且存储所述第二矢量操作数和第三矢量操作数,其中,所述第三矢量操作数具有所述第一大小的第一矩阵元素,其中所述第二矢量操作数和所述第三矢量操作数在使用期间从所述一个或多个操作数存储器读取以执行所述矩阵乘法运算,并且其中所述矩阵计算引擎被配置为将所述第一矩阵元素映射到所述第二矩阵元素以生成所述第一矢量操作数,并且其中所述查找表被存储在所述一个或多个操作数存储器中的一者中。
17.根据权利要求16所述的矩阵计算引擎,其中所述电路包括多个乘法累加电路,其中所述多个乘法累加电路被耦接以接收所述第二大小的输入矩阵元素,并且被配置为生成大于所述第二大小的第三大小的所得矩阵元素。
18.根据权利要求17所述的矩阵计算引擎,还包括输出存储器,其中所述多个乘法累加电路被耦接以从所述输出存储器接收矩阵元素以与所述所得输出矢量累加,其中来自所述输出存储器的矩阵元素具有所述第三大小,并且其中与来自所述输出存储器的矩阵元素累加的所述所得输出矢量被写入所述输出存储器。
19.根据权利要求18所述的矩阵计算引擎,其中所述多个乘法累加电路的数量等于所述输出存储器中的矩阵元素的数量。
20.根据权利要求17所述的矩阵计算引擎,其中所述多个乘法累加电路的数量小于所述所得输出矢量中的矩阵元素的数量,并且其中所述矩阵乘法运算通过用所述第一矢量操作数和所述第二矢量操作数的不同部分迭代所述多个乘法累加电路来完成。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/800,342 US10346163B2 (en) | 2017-11-01 | 2017-11-01 | Matrix computation engine |
US15/800,342 | 2017-11-01 | ||
CN201880071101.4A CN111316261B (zh) | 2017-11-01 | 2018-10-18 | 矩阵计算引擎 |
PCT/US2018/056582 WO2019089239A2 (en) | 2017-11-01 | 2018-10-18 | Matrix computation engine |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880071101.4A Division CN111316261B (zh) | 2017-11-01 | 2018-10-18 | 矩阵计算引擎 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116662727A true CN116662727A (zh) | 2023-08-29 |
Family
ID=64110244
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310721822.8A Pending CN116662727A (zh) | 2017-11-01 | 2018-10-18 | 矩阵计算引擎 |
CN201880071101.4A Active CN111316261B (zh) | 2017-11-01 | 2018-10-18 | 矩阵计算引擎 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880071101.4A Active CN111316261B (zh) | 2017-11-01 | 2018-10-18 | 矩阵计算引擎 |
Country Status (5)
Country | Link |
---|---|
US (3) | US10346163B2 (zh) |
CN (2) | CN116662727A (zh) |
DE (1) | DE112018005177T5 (zh) |
GB (1) | GB2582094B (zh) |
WO (1) | WO2019089239A2 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10346163B2 (en) | 2017-11-01 | 2019-07-09 | Apple Inc. | Matrix computation engine |
US10628295B2 (en) * | 2017-12-26 | 2020-04-21 | Samsung Electronics Co., Ltd. | Computing mechanisms using lookup tables stored on memory |
CN109992743B (zh) | 2017-12-29 | 2020-06-16 | 华为技术有限公司 | 矩阵乘法器 |
US10970078B2 (en) | 2018-04-05 | 2021-04-06 | Apple Inc. | Computation engine with upsize/interleave and downsize/deinterleave options |
US10642620B2 (en) | 2018-04-05 | 2020-05-05 | Apple Inc. | Computation engine with strided dot product |
US10754649B2 (en) | 2018-07-24 | 2020-08-25 | Apple Inc. | Computation engine that operates in matrix and vector modes |
US10831488B1 (en) | 2018-08-20 | 2020-11-10 | Apple Inc. | Computation engine with extract instructions to minimize memory access |
US10922077B2 (en) * | 2018-12-29 | 2021-02-16 | Intel Corporation | Apparatuses, methods, and systems for stencil configuration and computation instructions |
CN112328962B (zh) * | 2020-11-27 | 2021-12-31 | 深圳致星科技有限公司 | 矩阵运算优化方法、装置、设备和可读存储介质 |
US12001385B2 (en) * | 2020-12-24 | 2024-06-04 | Intel Corporation | Apparatuses, methods, and systems for instructions for loading a tile of a matrix operations accelerator |
CN113110822A (zh) * | 2021-04-20 | 2021-07-13 | 安徽芯纪元科技有限公司 | 一种可配置矩阵乘法装置及算法 |
Family Cites Families (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2141847B (en) * | 1983-05-06 | 1986-10-15 | Seiko Instr & Electronics | Matrix multiplication apparatus for graphic display |
US5025407A (en) | 1989-07-28 | 1991-06-18 | Texas Instruments Incorporated | Graphics floating point coprocessor having matrix capabilities |
US5852444A (en) * | 1992-12-07 | 1998-12-22 | Intel Corporation | Application of video to graphics weighting factor to video image YUV to RGB color code conversion |
US6675187B1 (en) * | 1999-06-10 | 2004-01-06 | Agere Systems Inc. | Pipelined linear array of processor elements for performing matrix computations |
US6959378B2 (en) | 2000-11-06 | 2005-10-25 | Broadcom Corporation | Reconfigurable processing system and method |
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 |
US20030221086A1 (en) | 2002-02-13 | 2003-11-27 | Simovich Slobodan A. | Configurable stream processor apparatus and methods |
US6944746B2 (en) | 2002-04-01 | 2005-09-13 | Broadcom Corporation | RISC processor supporting one or more uninterruptible co-processors |
US20040122887A1 (en) * | 2002-12-20 | 2004-06-24 | Macy William W. | Efficient multiplication of small matrices using SIMD registers |
US7668894B2 (en) | 2003-08-22 | 2010-02-23 | Apple Inc. | Computation of power functions using polynomial approximations |
GB2409068A (en) * | 2003-12-09 | 2005-06-15 | Advanced Risc Mach Ltd | Data element size control within parallel lanes of processing |
US20050203980A1 (en) | 2004-03-11 | 2005-09-15 | Harrison John R. | Computing transcendental functions using single instruction multiple data (SIMD) operations |
US7873812B1 (en) | 2004-04-05 | 2011-01-18 | Tibet MIMAR | Method and system for efficient matrix multiplication in a SIMD processor architecture |
US7619637B2 (en) * | 2004-04-09 | 2009-11-17 | Samsung Electronics Co., Ltd. | Systems and methods for improved gamut mapping from one image data set to another |
WO2006120664A2 (en) * | 2005-05-13 | 2006-11-16 | Provost Fellows And Scholars Of The College Of The Holy And Undivided Trinity Of Queen Elizabeth Near Dublin | A data processing system and method |
US8051124B2 (en) * | 2007-07-19 | 2011-11-01 | Itt Manufacturing Enterprises, Inc. | High speed and efficient matrix multiplication hardware module |
US8700884B2 (en) | 2007-10-12 | 2014-04-15 | Freescale Semiconductor, Inc. | Single-instruction multiple-data vector permutation instruction and method for performing table lookups for in-range index values and determining constant values for out-of-range index values |
US8667250B2 (en) | 2007-12-26 | 2014-03-04 | Intel Corporation | Methods, apparatus, and instructions for converting vector data |
GB2464292A (en) | 2008-10-08 | 2010-04-14 | Advanced Risc Mach Ltd | SIMD processor circuit for performing iterative SIMD multiply-accumulate operations |
US8984043B2 (en) | 2009-12-23 | 2015-03-17 | Intel Corporation | Multiplying and adding matrices |
US9600281B2 (en) | 2010-07-12 | 2017-03-21 | International Business Machines Corporation | Matrix multiplication operations using pair-wise load and splat operations |
CN103348300B (zh) | 2011-01-21 | 2016-03-23 | 飞思卡尔半导体公司 | 计算函数的函数值的装置和方法 |
US20120254592A1 (en) | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location |
US20120254591A1 (en) | 2011-04-01 | 2012-10-04 | Hughes Christopher J | Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements |
CN104115115B (zh) | 2011-12-19 | 2017-06-13 | 英特尔公司 | 用于多精度算术的simd整数乘法累加指令 |
US9960917B2 (en) * | 2011-12-22 | 2018-05-01 | Intel Corporation | Matrix multiply accumulate instruction |
US8893104B2 (en) | 2012-01-26 | 2014-11-18 | Qualcomm Incorporated | Method and apparatus for register spill minimization |
JP6225687B2 (ja) * | 2013-02-18 | 2017-11-08 | 富士通株式会社 | データ処理装置、およびデータ処理方法 |
US9292298B2 (en) | 2013-07-08 | 2016-03-22 | Arm Limited | Data processing apparatus having SIMD processing circuitry |
US10649775B2 (en) * | 2013-07-15 | 2020-05-12 | Texas Instrum Ents Incorporated | Converting a stream of data using a lookaside buffer |
KR20170137761A (ko) * | 2015-04-16 | 2017-12-13 | 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 | 곱셈 누적 연산을 수행하는 저항성 메모리 어레이 |
US9965275B2 (en) | 2015-07-31 | 2018-05-08 | Arm Limited | Element size increasing instruction |
US9886377B2 (en) | 2015-10-05 | 2018-02-06 | Intel Corporation | Pipelined convolutional operations for processing clusters |
US9823871B2 (en) | 2015-10-09 | 2017-11-21 | Oracle International Corporation | Performance of coprocessor assisted memset() through heterogeneous computing |
US20170192781A1 (en) | 2015-12-30 | 2017-07-06 | Robert Valentine | Systems, Apparatuses, and Methods for Strided Loads |
US10496855B2 (en) * | 2016-01-21 | 2019-12-03 | Hewlett Packard Enterprise Development Lp | Analog sub-matrix computing from input matrixes |
CN106126481B (zh) * | 2016-06-29 | 2019-04-12 | 华为技术有限公司 | 一种计算系统和电子设备 |
US10120649B2 (en) | 2016-07-29 | 2018-11-06 | Microunity Systems Engineering, Inc. | Processor and method for outer product accumulate operations |
US20180074824A1 (en) * | 2016-09-13 | 2018-03-15 | Apple Inc. | Outer Product Engine |
CN106445471B (zh) * | 2016-10-13 | 2018-06-01 | 北京百度网讯科技有限公司 | 处理器和用于在处理器上执行矩阵乘运算的方法 |
US10521390B2 (en) | 2016-11-17 | 2019-12-31 | The United States Of America As Represented By The Secretary Of The Air Force | Systems and method for mapping FIFOs to processor address space |
US10698685B2 (en) | 2017-05-03 | 2020-06-30 | Intel Corporation | Instructions for dual destination type conversion, mixed precision accumulation, and mixed precision atomic memory operations |
CN109032668B (zh) | 2017-06-09 | 2023-09-19 | 超威半导体公司 | 具有高带宽和低功率向量寄存器堆的流处理器 |
US10725740B2 (en) * | 2017-08-31 | 2020-07-28 | Qualcomm Incorporated | Providing efficient multiplication of sparse matrices in matrix-processor-based devices |
US20190079903A1 (en) * | 2017-09-14 | 2019-03-14 | Qualcomm Incorporated | Providing matrix multiplication using vector registers in processor-based devices |
US10346163B2 (en) | 2017-11-01 | 2019-07-09 | Apple Inc. | Matrix computation engine |
-
2017
- 2017-11-01 US US15/800,342 patent/US10346163B2/en active Active
-
2018
- 2018-10-18 CN CN202310721822.8A patent/CN116662727A/zh active Pending
- 2018-10-18 WO PCT/US2018/056582 patent/WO2019089239A2/en active Application Filing
- 2018-10-18 GB GB2007817.6A patent/GB2582094B/en active Active
- 2018-10-18 DE DE112018005177.3T patent/DE112018005177T5/de active Pending
- 2018-10-18 CN CN201880071101.4A patent/CN111316261B/zh active Active
-
2019
- 2019-05-28 US US16/423,702 patent/US10592239B2/en active Active
-
2020
- 2020-03-13 US US16/818,200 patent/US10877754B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US10592239B2 (en) | 2020-03-17 |
US10346163B2 (en) | 2019-07-09 |
GB2582094B (en) | 2022-03-09 |
WO2019089239A3 (en) | 2019-06-06 |
CN111316261A (zh) | 2020-06-19 |
US20190294441A1 (en) | 2019-09-26 |
DE112018005177T5 (de) | 2020-06-10 |
GB2582094A (en) | 2020-09-09 |
WO2019089239A2 (en) | 2019-05-09 |
CN111316261B (zh) | 2023-06-16 |
US20190129719A1 (en) | 2019-05-02 |
US20200272464A1 (en) | 2020-08-27 |
US10877754B2 (en) | 2020-12-29 |
GB202007817D0 (en) | 2020-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111316261B (zh) | 矩阵计算引擎 | |
US11042373B2 (en) | Computation engine that operates in matrix and vector modes | |
US20180074824A1 (en) | Outer Product Engine | |
US20220358082A1 (en) | Coprocessors with Bypass Optimization, Variable Grid Architecture, and Fused Vector Operations | |
US20210349823A1 (en) | Dynamic Adaptive Drain for Write Combining Buffer | |
US11650825B2 (en) | Coprocessor synchronizing instruction suppression | |
CN114341802A (zh) | 用于执行存储器内处理操作的方法及相关存储器装置和系统 | |
US10846091B2 (en) | Coprocessor with distributed register | |
US11099990B2 (en) | Managing serial miss requests for load operations in a non-coherent memory system | |
US10120690B1 (en) | Reservation station early age indicator generation | |
US10990401B2 (en) | Computation engine with strided dot product | |
US10831488B1 (en) | Computation engine with extract instructions to minimize memory access | |
US10970078B2 (en) | Computation engine with upsize/interleave and downsize/deinterleave options | |
US20220365751A1 (en) | Compressed wallace trees in fma circuits | |
US20200241876A1 (en) | Range Mapping of Input Operands for Transcendental Functions | |
US10969858B2 (en) | Operation processing controlled according to difference in current consumption | |
US20230094414A1 (en) | Matrix operation with multiple tiles per matrix dimension |
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 |