CN110383237B - 可重新配置的矩阵乘法器系统和方法 - Google Patents
可重新配置的矩阵乘法器系统和方法 Download PDFInfo
- Publication number
- CN110383237B CN110383237B CN201880014540.1A CN201880014540A CN110383237B CN 110383237 B CN110383237 B CN 110383237B CN 201880014540 A CN201880014540 A CN 201880014540A CN 110383237 B CN110383237 B CN 110383237B
- Authority
- CN
- China
- Prior art keywords
- matrix
- data
- multiplier
- memory
- cpm
- 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 title claims abstract description 410
- 238000000034 method Methods 0.000 title claims abstract description 66
- 230000015654 memory Effects 0.000 claims abstract description 188
- 230000006870 function Effects 0.000 claims abstract description 66
- 238000012546 transfer Methods 0.000 claims abstract description 65
- 239000013598 vector Substances 0.000 claims description 111
- 239000000872 buffer Substances 0.000 claims description 37
- 238000004364 calculation method Methods 0.000 claims description 31
- 230000009466 transformation Effects 0.000 claims description 6
- 230000008878 coupling Effects 0.000 abstract description 3
- 238000010168 coupling process Methods 0.000 abstract description 3
- 238000005859 coupling reaction Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 34
- 241001442055 Vipera berus Species 0.000 description 26
- 238000006243 chemical reaction Methods 0.000 description 25
- 230000005540 biological transmission Effects 0.000 description 22
- 230000036961 partial effect Effects 0.000 description 22
- 238000012545 processing Methods 0.000 description 21
- 238000009825 accumulation Methods 0.000 description 15
- 238000007792 addition Methods 0.000 description 14
- 208000003476 primary myelofibrosis Diseases 0.000 description 14
- 230000008569 process Effects 0.000 description 10
- 238000013459 approach Methods 0.000 description 8
- 238000009826 distribution Methods 0.000 description 8
- 230000002829 reductive effect Effects 0.000 description 8
- 238000003491 array Methods 0.000 description 6
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 5
- 102100026150 Tyrosine-protein kinase Fgr Human genes 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 238000013479 data entry Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000012055 resonant mass measurement Methods 0.000 description 4
- 238000002604 ultrasonography Methods 0.000 description 4
- 238000010276 construction Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000013501 data transformation Methods 0.000 description 3
- 230000001934 delay Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000007429 general method Methods 0.000 description 3
- 238000003384 imaging method Methods 0.000 description 3
- 230000000670 limiting effect Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000004513 sizing Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 238000001297 coherence probe microscopy Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 229940050561 matrix product Drugs 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 101100534223 Caenorhabditis elegans src-1 gene Proteins 0.000 description 1
- 101100534229 Caenorhabditis elegans src-2 gene Proteins 0.000 description 1
- 101000651201 Homo sapiens N-sulphoglucosamine sulphohydrolase Proteins 0.000 description 1
- 102100027661 N-sulphoglucosamine sulphohydrolase Human genes 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000009738 saturating Methods 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 230000003442 weekly effect Effects 0.000 description 1
Images
Classifications
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- 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/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (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)
- Computing Systems (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Algebra (AREA)
- Computer Hardware Design (AREA)
- Complex Calculations (AREA)
- Bus Control (AREA)
- Image Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
可重新配置的矩阵乘法器(RMM)(0410)系统/方法允许紧密或松散耦合到片上系统(SOC)环境(0401)中的监督控制处理器应用控制逻辑(ACL)。RMM(0410)提供C=A*B矩阵乘法运算,其具有A乘数矩阵(AMM)、B被乘数矩阵(BMM)和C乘积矩阵(CPM),以及C=A*B+D运算,其中D求和矩阵(DSM)表示先前乘法运算的结果或另一个先前定义的矩阵。RMM(0410)提供附加的CPM LOAD/STORE(加载/存储)路径,允许计算/数据传输操作(0421,0422,0423)的重叠,并从先前计算的CPM结果向AMM或BMM操作数输入提供CPM数据反馈。RMM(0410)预期共同使用8、16和32位操作数的可重新配置矩阵数据以及512位数据宽度的外部存储器总线和使用一系列RMM配置字(RCW)和流操作码功能(SOF)实施的指令控制单元(ICU)。
Description
技术领域
本发明涉及实现形式C=A*B和C=A*B+D的矩阵乘法的硬件,其中A乘数矩阵(AMM)、B被乘数矩阵(BMM)、C乘积矩阵(CPM)和D-求和矩阵(DSM)的数据宽度可以动态地重新配置以解译包含在固定外部存储器数据总线(EMB)内的数据。
背景技术
这涉及可重新配置的矩阵乘法器(RMM)系统和实现固定点矩阵乘法的方法。RMM提供C=A*B矩阵乘法运算,具有A乘数矩阵(AMM)、B被乘数矩阵(BMM)和C乘积矩阵(CPM),以及C=A*B+D运算,其中D求和矩阵(DSM)表示先前乘法运算的结果或另一个先前定义的矩阵。多位输入数据(A,B,D)可以被解译为以可重新配置的方式在固定的外部存储器数据总线内复制,从而允许矩阵乘法器硬件重用,与从最低精度的基线开始的矩阵缩放匹配并且对于精度每增加一倍:
·每个维度中的C矩阵尺寸减少一半;
·矩阵乘法器-累加器(MAC)缩放四分之一,实现高效的矩阵乘法器重用;
·C矩阵累加器精度保持为输入数据(A,B,D)精度的四倍,与输入数据类型无关(在一些实施例中,C矩阵累加器精度保持在输入数据(A,B,D)精度的双多边形倍数);
之前使用的B矩阵和C矩阵行的一半可以被释放并且可以用于替代算法。
C累加器矩阵可以包括附加的加载存储(LOAD-STORE)数据路径,其:
·改善长卷积和C=A*B+D运算的性能;
·在8位输入数据的情况下,包括使用附加的C矩阵存储器;
·在16位和32位输入数据的情况下,可以包括可以实现的额外C矩阵存储器,或者可以实现现有的两个C矩阵存储器的额外行。
发明内容
可重新配置的矩阵乘法器(RMM)系统/方法允许在片上系统(SOC)环境中与监督控制处理器应用控制逻辑(ACL)紧密或松散耦合。RMM提供C=A*B矩阵乘法运算,其具有A乘数矩阵(AMM)、B被乘数矩阵(BMM)和C乘积矩阵(CPM),以及C=A*B+D运算,其中D求和矩阵(DSM)表示先前乘法运算的结果或另一个先前定义的矩阵。RMM提供附加的CPM LOAD/STORE(加载/存储)路径,允许计算/数据传输操作的重叠,并从先前计算的CPM结果向AMM或BMM操作数输入提供CPM数据反馈。RMM预期使用8、16和32位操作数的可重新配置的矩阵数据以及512位数据宽度的外部存储器总线和使用一系列RMM配置字(RCW)和流操作码功能(SOF)实现的指令控制单元(ICU)。
附图说明
图1示出实施例的系统块图。
图2示出在紧密耦合的可重新配置的矩阵乘法器(RMM)应用背景中实现的实施例的系统块图。
图3示出在松散耦合的可重新配置的矩阵乘法器(RMM)应用背景中实现的实施例的系统块图。
图4示出使用512位外部存储器总线(EMB)与CPU接口连接的实施例的系统块图。
图5示出采用与解复用器/复用器共同使用的示例读/写查找表以转换在EMB和RMM之间传输的数据的系统实施例。
图6示出采用与多路复用器共同用以转换在EMB和RMM之间传输的数据的示例读/写查找表的系统实施例。
图7示出采用与多路复用器共同用于转换在EMB和RMM之间传输的数据的示例双向查找表的系统实施例。
图8示出采用与多路复用器共同用于在特定转换功能的控制下转换在EMB和RMM之间传输的数据的示例双向功能转换块的系统实施例。
图9示出通用矩阵乘法/累加操作。
图10示出3x3矩阵的行0的矩阵乘法/累加操作的详细计算。
图11示出3x3矩阵的行1的矩阵乘法/累加操作的详细计算。
图12示出3x3矩阵的行2的矩阵乘法/累加操作的详细计算。
图13示出示例前台/后台执行/传输级0(STAGE 0)初始时序图,其描绘了其中RMM可以被流水线化并且重叠以使得乘法/累加计算周期可以与本地存储器总线(LMB)和外部存储器总线(EMB)之间的数据传输重叠的实施例。
图14示出示例前台/后台执行/传输STAGE 1时序图,其描绘了RMM可以被流水线化并重叠使得乘法/累加计算周期可以与本地存储器总线(LMB)和外部存储器总线(EMB)之间的数据传输重叠的实施例。
图15示出示例前台/后台执行/传输STAGE N-1末端前时序图,其描绘了RMM可以被流水线化并且重叠以使得乘法/累加计算周期可以与本地存储器总线(LMB)和外部存储器总线(EMB)之间的数据传输重叠的实施例。
图16示出前台/后台执行/传输STAGE N末端时序图,其描绘了RMM可以被流水线化和重叠以使得乘法/累加计算周期可以与本地存储器总线(LMB)和外部存储器总线(EMB)之间的数据传输重叠的实施例。
图17示出描绘前台/后台矩阵乘法器方法的实施例的时序图,其中部分行乘法/累加计算周期与本地存储器总线(LMB)和外部存储器总线(EMB)之间的数据传输周期重叠。
图18示出描绘前台/后台矩阵乘法器方法的实施例的流程图,其中部分行乘法/累加计算周期与本地存储器总线(LMB)和外部存储器总线(EMB)之间的数据传输周期重叠(页1/3)。
图19示出描绘前台/后台矩阵乘法器方法的实施例的流程图,其中部分行乘法/累加计算周期与本地存储器总线(LMB)和外部存储器总线(EMB)之间的数据传输周期重叠(页2/3)。
图20示出描绘前台/后台矩阵乘法器方法的实施例的流程图,其中部分行乘法/累加计算周期与本地存储器总线(LMB)和外部存储器总线(EMB)之间的数据传输周期重叠(页3/3)。
图21示出描绘前台/后台矩阵乘法器方法的实施例的时序图,其中全行乘法/累加计算周期与本地存储器总线(LMB)和外部存储器总线(EMB)之间的数据传输周期重叠。
图22示出描绘前台/后台矩阵乘法器方法的实施例的流程图,其中全行乘法/累加计算周期与本地存储器总线(LMB)和外部存储器总线(EMB)之间的数据传输周期重叠(页1/3)。
图23示出描绘前台/后台矩阵乘法器方法的实施例的流程图,其中全行乘法/累加计算周期与本地存储器总线(LMB)和外部存储器总线(EMB)之间的数据传输周期重叠(页2/3)。
图24示出描绘前台/后台矩阵乘法器方法的实施例的流程图,其中全行乘法/累加计算周期重叠本地存储器总线(LMB)和外部存储器总线(EMB)之间的数据传输周期重叠(页3/3)。
图25示出描绘在一些公开的实施例中有用的前台/后台存储器/寄存器映射技术的系统块图。
图26示出在一些公开的系统实施例中有用的存储器数据传输架构。
图27示出采用附加CPM矩阵加载/存储数据路径的系统实施例。
图28示出采用附加的CPM到BMM矩阵存储数据路径和附加的CPM到AMM矩阵存储数据路径的系统实施例。
图29示出用于乘法/累加操作的数据格式,并且描绘了AMM行数据条目尺寸调整、BMM矩阵数据条目尺寸调整以及CPM行数据条目尺寸调整,其中详细描述了乘积数据位和累加保护位。
图30示出系统实施例中的存储器与数据精度的图形描绘。
图31示出系统实施例中的数据移动与数据精度的图形描绘。
图32示出系统实施例中的乘法器重用/计算与数据精度的图形描绘。
图33示出乘法器/累加器实施例,其中使用动态加载的AMM向量和静态加载的BMM矩阵来计算CPM向量。
图34示出描绘RMM向量/矩阵乘法器方法的流程图,其中动态加载的AMM向量同时与静态BMM矩阵的多个列进行点积(dot product)相乘,以产生在多个总线周期中将CPM向量结果存储到EMB的CPM向量结果,并且其中加载新的AMM向量导致随后的点积乘法,其导致随后的CPM结果,使得可以使用触发乘法/累加操作和CPM向量存储的AMM向量的多个加载来完成整个AMM*BMM矩阵乘法。
图35示出采用到EMB的可重新配置的输出格式化接口的系统实施例。
图36示出描绘RMM输出格式化方法实施例的流程图,该实施例在将数据从CPM乘积结果寄存器传输到EMB时允许可重新配置的输出格式化。
图37示出描绘系统实施例的功能块和控制流程的块图。
图38示出与许多实施例相关联的计算处理状态机/数据流图。
图39示出与许多实施例相关联的输出格式化状态机/数据流图和饱和/ReLU转换映射。
图40示出描绘用于RMM实施的集成电路(IC)布置图的顶层块图。
图41示出描绘用于在一些示例实施例中有用的干(STEM)阵列乘法器模块(SAM)实施方式的集成电路(IC)布置图的块图。
图42示出描绘用于在一些实施例中有用的叶(LEAF)阵列乘法器模块(LAM)实施方式(具有如8x8乘法模式所示配置的数据路径)的集成电路(IC)布置图的块图。
图43示出描绘用于在一些实施例中有用的叶阵列乘法器模块(LAM)实施方式(具有如16x16乘法模式中所示配置的数据路径)的集成电路(IC)布置图的块图。
图44示出描绘用于在一些实施例中有用的叶阵列乘法器模块(LAM)实施方式(具有如32x32乘法模式中所示配置的数据路径)的集成电路(IC)布置图的块图。
图45示出在许多实施例中有用的AMM中间数据路径的实施方式。
图46示出在许多实施例中有用的行主BMM分布数据路径的实施方式。
图47示出BMM元件写启用逻辑(4列块)。
图48示出BMM元件写启用解码器逻辑。
图49示出CPM累加器数据路径128b区段(所描绘的16个区段中的1个)。
图50示出CPM加载数据格式化数据传输/映射。
图51示出CPM存储流水线数据路径。
图52示出CPM存储体结构(示出2个数据存储体中的1个)。
图53示出块图,其描绘在许多基8矩阵乘法器(radix-8matrix multipliers)中使用的基本8x8有符号或无符号整数乘法器Booth编码的进位保存实施方式构建块。
图54示出在许多实施例中使用的示例8位预乘行操作数广播布局配置的块图。
图55示出模式/控制配置编码。
图56示出功能/操作码配置编码。
具体实施方式
示例实施例有利地适用于可重新配置的矩阵乘法器系统和方法的问题。然而,对于示例实施例,许多有利用途是可能的。
示例实施例的将固定外部存储器数据总线(EMB)的解译动态地重新配置为具有不同标量数据位宽度的能力允许单个乘法/累加处理器重用乘法硬件并且还允许动态地改变点标量分辨率,从而允许在单个数据源的背景中发生各种数据解译。
矩阵命名法
示例实施例涉及形式C=A*B+D的矩阵乘法乘积的生成。在此说明书中,此函数中的变量将等效地标识为“A”或A乘数矩阵(AMM)、“B”或B被乘数矩阵(BMM)、“C”或C乘积矩阵(CPM)和“D”或D求和矩阵(DSM)。
矩阵范围
XXX[行,列]([row,col])形式的矩阵可以指XXX[行,:]表示的给定行上的所有列元素以及XXX[:,列]表示的给定列上的所有行元素。行/列的范围可以由XXX[r1:r2,cl:c2]表示,并且表示从行r1到r2以及列cl到c2的XXX的子矩阵。
非有限矩阵
在该系统描述的上下文中,术语“矩阵”应该被给出宽泛的定义。在一些实施例中,可以配置形式C=A*B或C=A*B+D的乘法运算,使得A乘数矩阵(AMM)是具有单个行和固定长度位的向量,该向量被分成相等尺寸的各个数据。因此,术语“矩阵”包括单行或单列向量。
例如,配置有固定512位外部存储器数据总线的系统可以配置有具有512位的AMM,其被划分为64个8位数据、32个16位数据、16个32位数据、8个64位矩阵、4个128位数据或2个256位数据,具体取决于矩阵乘法系统的动态重新配置。
矩阵维度
本说明书中提供的数值矩阵维度仅是示例,并不限制示例实施例的范围。另外,虽然许多实施例使用方形矩阵(具有相同数量的行和列)来实施矩阵乘法和/或累加,但是这不是对示例实施例的限制。此外,虽然所描绘的矩阵的维度是二阶(二维),但是示例实施例不限于具有二维配置的矩阵,并且支持具有大于二的维度的更高阶矩阵(例如,CPM[x,y,z]),CPM[w,x,y,z]等)。
存储器总线宽度
这里将示例实施例描述为具有512位的示例数据总线宽度。该示例数据总线宽度不是对示例实施例的范围的限制。在各种应用背景中可能有各种各样的数据总线宽度。然而,在许多实施例中,对应于2的幂的数据位的数据总线宽度是最佳的。
自然/计数数
短语“自然数”、“多于一个自然数”、“计数数”和“多于一个计数数”及其倍数在本文中将指的是大于零的正整数的数学集合(1,2,3,...)。
多边形数
短语“多边形数”、“多于一个多边形数”及其倍数是可以表示为以正多边形的形状排列的点的数字。如这里所使用的,这些短语将指的是大于2的正整数的数学集合(3,4,5,...)。这里使用的多边形数的定义可以替代地被定义为自然数的集合(如上所定义的),其中整数值一(1)和二(2)被去除。
双多边形数
短语“双多边形数”、“多于一个双多边形数”及其倍数在本文中将指代大于1(2,3,4,...)的正整数的数学集合。该定义包括多边形整数(3,4,5,...)和正整数2的组合集合。这里使用的双多边形数的定义可以替代地被定义为自然数字集合(如上所定义的),其中整数值一(1)被去除。
二的幂数
短语“2的幂”,“2的多个幂”及其倍数在本文中将表示2N形式的整数的数学集合,其中N是如上定义的自然数。
双多边形二的幂数
短语“双多边形二的幂”,“双多边形二的多个幂”及其倍数在本文中将表示形式为2N的整数的数学集合,其中N是如上所述的双多边形数。
数据总线解译
在示例实施例中,由RMM执行的乘法/累加操作可以在各种外部和内部数据总线上存在的各种数据类型上操作,并且提供给RMM的模式/控制和/或功能/操作码信息可以控制从EMB检索并由RMM操作的数据的解译。在此上下文中,RMM支持以下操作数数据类型:
·4位无符号整数;
·4位有符号整数;
·8位无符号整数;
·8位有符号整数;
·16位无符号整数;
·16位有符号整数;
·32位无符号整数;
·32位有符号整数;
·64位无符号整数;和
64位有符号整数。
虽然RMM内的累加函数可以包含各种数据类型,但RMM支持以下累加数据类型:
·用于4位无符号操作数的16位无符号整数;
·用于4位有符号或混合有符号/无符号操作数的16位有符号整数;
·用于8位无符号操作数的32位无符号整数;
·用于8位有符号或混合有符号/无符号操作数的32位有符号整数;
·用于16位无符号操作数的64位无符号整数;
·用于16位有符号或混合有符号/无符号操作数的64位有符号整数;
·用于32位无符号操作数的128位无符号整数;
·用于32位有符号或混合有符号/无符号操作数的128位有符号整数;
·用于64位无符号操作数的256位无符号整数;和
·用于64位有符号或混合有符号/无符号操作数的256位有符号整数。
虽然RMM的输出数据可以包含各种数据类型,但RMM支持以下输出数据类型:
·4位无符号整数;
·4位有符号整数;
·8位无符号整数;
·8位有符号整数;
·16位无符号整数;
·16位有符号整数;
·32位无符号整数;
·32位有符号整数;
·64位无符号整数;
·64位有符号整数;
·128位无符号整数;
·128位有符号整数;
·256位无符号整数;和
·256位有符号整数。
其他数据类型也是可能的。
系统概述(0100)
示例实施例的示例应用背景概述大体在图1(0100)中描绘,其中可重新配置的矩阵乘法器(RMM)(0110)经由可选的流引擎流水线(SEP)(0130)和外部数据储存器(EDM)(0140)接口连接到应用控制逻辑(ACL)(0120)。在不存在可选的流引擎流水线(SEP)(0130)的情况下,可以通过使用ACL(0120)和RMM(0110)可访问的传统硬件寄存器将数据传输到RMM(0110)或从RMM传输数据(0110)。应用控制逻辑(ACL)(0120)通常表示中央处理单元(CPU),RMM(0110)表示矩阵乘法加速器(MMA),其可以紧密地或松散地集成到ACL(0120)的操作中。
SEP(0130)表示ACL(0120)和RMM(0110)之间的硬件接口,其允许RMM(0110)模式/控制(0111)和功能/操作码(0112)配置信息被流传输到RMM(0110),以允许RMM(0110)的连续操作,而不需要ACL(0120)的进一步干预。SEP(0130)还可以表示EDM(0140)和RMM(0110)之间的硬件接口,其允许RMM(0110)模式/控制(0111)和功能/操作码(0112)配置信息被流传输到EDM(0140),以在ACL(0120)初始执行流传输之后允许RMM(0110)的连续操作,而无需ACL(0120)的进一步干预。RMM(0110)模式/控制(0111)总线定义如何解译和/或格式化RMM(0110)操作的数据,并且RMM(0110)功能/操作码(0112)总线定义什么数学运算将在被呈现给RMM(0110)的数据(AMM,BMM等)上执行。虽然外部数据储存器(EDM)(0140)通常是诸如动态随机存取存储器(DRAM)的较慢形式的随机存取存储器(RAM),但这不一定是示例实施例的限制,而是示例应用实施方式。通常但不是必须的,RMM(0110)中包含的存储器具有比EDM(0140)的存储器快的读/写/访问时序。
RMM(0110)经由外部存储器总线(EMB)(0113)接口连接到EDM(0140),EMB允许源矩阵操作数(SRC1,SRC2)经由一个或更多个数据总线(A[M,K];B[K,N])加载和通过公共或单独数据总线存储矩阵乘法运算(C[M,N])的结果(DST)。在示例应用背景中,外部存储器总线(EMB)(0113)可以包括单个数据总线,其数据宽度是与A,B和C矩阵相关联的单个数据宽度的倍数。例如,EMB(0113)数据宽度可以设置为512位,矩阵数据宽度设置为8、16、32或64位,这取决于确定EMB(0113)内的数据位解译的模式/控制(0111)配置信息。
通常,示例实施例允许具有形式X[行,列]的矩阵被乘到一起,使得C[M,N]=A[M,K]*B[K,N]或C[M,N]=A[M,K]*B[K,N]+D[M,N],其中M,N和K是自然数。然而,在许多实施例中,A乘数矩阵(AMM)被配置为单行向量,使得形式C[1,N]=A[1,K]*B[K,N]或C[1,N]=A[1,K]*B[K,N]+D[1,N]的矩阵乘法被实现。在此上下文中,ACL(0120)与SEP(0130)一起将能够通过简单地复制形式C[I,N]=A[I,K]*B[K,N]或C[I,N]=A[I,K]*B[K,N]+D[I,N]的乘法实现函数C[M,N]=A[M,K]*B[K,N]或C[M,N]]=A[M,K]*B[K,N]+D[M,N],其中索引I设置为源/目标矩阵中的适当行,并且随着索引I从1增加到M执行多次乘法。如上所述,RMM(0110)和/或ACL(0120)可以包含有形的非暂时性计算机可读介质(0119,0129),其包含分别由RMM(0110)和ACL(0120)的内部逻辑执行的机器指令。
紧密耦合的应用背景(0200)
示例实施例可以在各种应用背景中实施,利用大体在图2(0200)中呈现的紧密耦合的应用背景的示例,其中DRAM存储器(0210)与片上系统(SOC)(0220)接口连接,片上系统包含紧密耦合的RMM(0221),其接口连接到主机CPU(0222),格式化硬件(0223)和本地存储器(0224)。这种紧密耦合的方法可以集成在加速器框架(0225)中,加速器框架组合合并了其他应用特定的加速器,其支持处理来自各种外围接口(0226)的数据、成像数据、视频数据、流视频、音频数据、流音频、超声数据、超声传感器、雷达数据、雷达、加密数据、加密数据源以及其他需要高性能乘法和/或累加操作的应用,该外围接口(0226)耦合到诸如相机的硬件设备(0230)。
松散耦合的应用背景(0300)
示例实施例可以在各种应用背景中实现,利用在图3(0300)中大体呈现的松散耦合的应用背景的示例,其中DRAM存储器(0310)与片上系统(SOC)(0320)接口连接,片上系统包含松散耦合的RMM(0321),其接口连接到加速器框架(0324)内的格式化硬件(0322)和本地存储器(0323),加速器框架(0324)与松散耦合的主机CPU(0325)接口连接。加速器框架(0324)可以结合RMM(0321)合并其他专用加速器,其支持处理来自耦合到诸如相机的硬件设备(0330)的各种外围接口(0326)的数据、成像数据、视频数据、流式视频、音频数据、流式音频、超声波数据、超声波传感器、雷达数据、雷达、加密数据、加密数据源以及其他需要高性能乘法和/或累加操作的应用。
硬件接口(0400)
虽然示例实施例可以以各种方式与外部应用程序控制逻辑(ACL)接口连接,但是硬件接口大体在图4(0400)中描绘,其中通用CPU(0401)(可以是高度集成的片上系统(SOC)的一部分)与RMM(0410)通过512位SRC1(0421)和SRC2(0422)数据总线接口连接,并在一到四个写周期内(对于总共512-2048位)通过512位DST结果(DST RESULTS)数据总线(0423)返回乘积结果。虽然在许多背景中采用512位的总线宽度,但SRC1数据总线(0421)、SRC2数据总线(0422)和DST结果(DST RESULTS)总线(0423)的总线宽度是任意的,并且不受示例实施例范围的限制。例如,DST结果总线(0423)可以比SRC1(0421)和SRC2(0422)数据总线的总线宽。此外,尽管这些总线被描绘为分开的数据总线,但是在一些实施例中,这些总线实际上可以是将RMM连接到物理上与RMM分离的存储器的单个外部存储器数据总线(EMB)。在许多实施例中,通常,如果SRC1(AMM)乘数和SRC2(BMM)被乘数的标量数据宽度为W数据位,则得到的乘法/累加DST(CPM)结果的标量数据宽度通常为4*W数据位。然而,在许多实施例中,写回到所得到的DST或EMB数据总线的数据位的数量可以选择为W、2*W或4*W。
除了这些数据总线之外,RMM(0410)还被提供有来自CPU(0401)的命令(COMMAND)线(0424)(其可以包括模式/控制信息以及功能/操作码指令和/或操作初始控制线)。RMM(0410)还可以向CPU(0401)提供指示RMM(0410)的状态、错误条件、操作完成状态指示符和时间/排序控制线的多个状态(STATUS)线(0425)。所有这些总线(0421,0422,0423)和命令(0424)/状态(0425)接口可以可选地包含奇偶校验和/或纠错码(ECC,SECDED)功能,以确保CPU(0401)和RMM(0410)之间的数据完整性。
在RMM(0410)内,数据转换缓冲器(DTB)(0411)允许来自SRC1(0421),SRC2(0422)(或等效的单个EMB)总线的数据在被在RMM(0410)内部使用之前经由查找表(LUT)变换或其他函数变换。类似地,输出数据格式化器(OTF)(0412)允许在提供给DST结果(0423)数据总线(或等效地,单个EMB总线)之前格式化和/或函数变换由RMM(0410)计算的结果数据。由DTB(0411)转换的传入数据存储在由前台/后台缓冲器控制(FBB)(0413)协调的寄存器内,该缓冲器控制(FBB)(0413)为AMM、BMM和CPM数据提供数据存储,AMM、BMM和CPM数据由分层乘法阵列(HMA)(0414)操作以从由FBB(0413)维护的AMM-前乘数和BMM前被乘数寄存器的乘法产生CPM-前点积结果。当HMA(0414)内的计算发生时,使用由FBB(0413)维护的AMM-后、BMM-后和CPM-后寄存器组在后台传输数据,以便在RMM(0410)内重叠计算和数据传输周期。有限状态机(FSM)控制逻辑(0415)响应来自ACL/CPU(0401)的命令(0424)输入,协调RMM(0410)内主要子系统的操作,并产生各种状态(0425)响应,其可以由ACL/CPU(0401)询问。
查找表(LUT)和数据变换(0500)-(0700)
在一些实施例中,可以实现查找表(LUT)数据变换,其中经由外部存储器数据总线(EMB)读取和/或写入的数据可以在RMM进行的数据上的乘法/累加操作之前和/或之后被转换。可以如何实施这一点的示例大体在图5(0500)中描绘,其中RMM(0510)与外部存储器数据总线(EMB)(0501)接口连接。根据RMM(0510)模式/控制和/或功能/操作码指令(0519)提供的SEL-R数据,在来自EMB(0501)的读取周期上,多路解复用器(0511)选择旁路读取(0512)或读取查找转换(RLT)(0513),用于将数据从EMB(0501)传输到内部RMM(0510)A/B/C/D数据总线(0518)。类似地,取决于由RMM(0510)模式/控制和/或功能/操作码指令(0519)提供的SEL-W数据,在到EMB(0501)的写周期上,多路复用器(0521)选择旁路写入(0522)或写入查找转换(WLT)(0523),用于将数据从内部RMM(0510)A/B/C/D数据总线(0518)传输到EMB(0501)。
图5(0500)中描绘的查找表实施方式使用解复用器(0511)(具有可选择的驱动输出)以执行读取数据转换,以及多路复用器(0521)以执行写入数据转换功能。图6(0600)描绘了功能上等效的配置,其中多路复用器用于读取转换(0611)和写入转换(0621)功能。
大体在图5(0500)和图6(0600)中描绘的转换功能可以被集成到如图7(0700)中大致所描述的重复映射功能中,其中多路复用器(0711,0712)与集成读取/写入查找表(RWT)(0713)接口连接,并且在RMM(0710)模式/控制和/或功能/操作码指令(0719)的控制下对EMB(0701)的读和写入操作都进行操作。
在一些实施例中,LUT功能可以应用于表示加载到AMM中的滤波器系数的4位有符号或无符号数据。在该配置中,可以对数据执行非均匀量化,其中LUT功能以及转换的结果扩展为8位滤波数据,然后将其置于AMM中。在该公共配置中,BMM矩阵包括8位数据,其乘以经转换的AMM 8位数据以产生CPM矩阵中通常为32位宽的累加结果。
数据转换/变换(0800)
在示例性实施例中,RMM可以包含数据转换功能,其中作为矩阵乘法运算的结果的累加数据在被传输到EMB时可以被转换为不同的数据类型。因此,有符号/无符号32位、有符号/无符号64位、有符号/无符号128位、有符号/无符号256位,可以转化并输出到RMB,作为有符号/无符号4位、有符号/无符号8位、有符号/无符号16位、有符号/无符号32位、有符号/无符号64位、有符号/无符号128位或有符号/无符号256位数据。这些转换功能中的规定包括可选的右/左移位(从累加结果中的高/低位提取输出),半LSB凑整、设置上饱和边界(基于高于某个值的累加值强制固定值)、设置负到零边界(将有符号值限制到最小值零)和绝对值转换(清除结果的符号),并将输出结果偏移固定值。
如图8(0800)中大体描绘的,图7(0700)中描绘的查找表转换(0713)可以由一个或更多个数据转换/转换功能块(0813)代替,其在内部A/B/C/D数据总线(0818)的背景中由RMM(0810)执行的乘法计算之前和/或之后,操作数据以在数据上执行功能。这些数据转换/变换功能(0813)可以包括各种操作符,例如数据的数据转换(如上所述的)、范围限制、范围扩展、线性化和非线性化。功能块(0813)可以是单向的(在两个方向上作为单个功能操作)、双向的(在一个方向上作为一个功能而在反向上作为相反的功能操作),或者可以在两个方向上包含不同的功能。由于这些功能涉及到/来自EMB的数据传输,它们可以与RMM的算术运算并行执行,并且可以通过往来EMB的数据总线传输来流水线化。这些功能的范围不被示例实施例的范围限制。
上述查找表转换和数据转换/变换映射功能可以等效地应用于任何RMM A/B/C/D矩阵,并且在某些情况下可以应用于选择性矩阵,使得可以在已经执行矩阵数学运算之前和/或之后,执行数据转换。
广义矩阵乘法运算(0900)-(1200)
对于C[i,j]的某个预定义初始值,示例实施例实施矩阵乘法器/累加器功能,如图9(0900)中大致所描绘的。这里,A乘数矩阵(AMM)、B被乘数矩阵(BMM)、C乘积矩阵(CPM)和D-求和矩阵(DSM)通过以下乘法/累加公式相关:
i=0K M-1 A,C,D中的行
j=0K N-1 B,C,D中的列
k=0K K-1 A中的列,B中的行 (1)
这些等式可以等效地使用赋值求和操作符(“A+=B”等效于“A=A+B”(0901))表示为:
在图9(0900)中描绘了该乘法/累加过程的一般描述,其中AMM矩阵/向量(0910)的行(0911,0912,0913)乘以BMM矩阵(0920)的列(0921,0922,0923),并且可选地与可选DSM矩阵(0940)的各个元素一起,与CPM矩阵(0930)的各个元素相加。
在示例实施例的变体中,AMM矩阵被配置为单个静态行向量并且乘以本地存储的BMM矩阵的列以产生乘法器乘积,该乘法器乘积与CPM矩阵的各个元素相加。对本地存储的BMM矩阵的每列重复该过程,直到完成CPM矩阵的整行。在此上下文中,上述公式简化为以下:
可以针对要计算的CPM的每一行重新加载该示例中的AMM向量。或者,AMM向量可以使用双相前台/后台方法来实现,该方法能够实现矩阵乘积的前台计算,同时AMM矩阵的下一个向量行与矩阵乘法运算并行加载。在计算完成之后(在此期间加载了新的AMM数据),交换到AMM寄存器数据的前台和后台指针,并且可以使用新加载的AMM数据进行新的计算。
在一些实施例中,B,C和D矩阵是方形的,其中上述等式可以简化为以下:
i=0K N-1 A,B,C,D中的行
j=0KN-1 A,B,C,D中的列 (8)
在矩阵是单行向量的情况下,简化如下:
i=0K N-1 B,D中的行
j=0KN-1 A,B,C,D中的列 (11)
图10(1000)——图12(1200)提供关于涉及3x3矩阵的示例乘法/累加操作的一些细节,并且包括在计算CPM矩阵的行0(图10(1000))、行1(图11(1100))和行2(图12(1200))的每一个期间执行的算术运算。
前台/后台执行/传输(1300)-(1600)
在示例实施例中,与RMM相关联的计算和数据传输操作可以被流水线化并重叠,使得乘法/累加计算周期可以与本地存储器总线(LMB)和外部存储器总线(EMB)(通常比LMB慢)之间的数据传输重叠。这种执行/数据传输的重叠大体在图13(1300)-图16(1600)中描述,其中说明包含前台(1310,1420,1530,1640)和后台(1350,1460,1570,1680)操作的示例三级乘法/累加操作。为了实现这种计算/传输重叠,保持一组前台(1310,1420,1530,1640)和后台(1350,1460,1570,1680)寄存器,其中使用存储器指针或其他硬件寄存器以在前台/后台存储器/寄存器组之间交换(“乒乓”)。如所描述的,前台(1310,1420,1530,1640)和后台(1350,1460,1570,1680)寄存器表示两组寄存器,它们由前台/后台控制信号选择性地复用,前台/后台控制信号交替地选择与计算相关联的每个主要寄存器组以及与数据传输操作相关联的后台组。这表示一个两级流水线,可以扩展为包含许多前台计算周期(例如,每个与ROW x COL(行*列)乘法运算中的点积的计算相关联)和许多后台数据传输操作(例如,每个与BMM矩阵的列元素的检索或CPM矩阵的列元素的存储相关联)。
通常的操作周期通过将AMF(1311)的行乘以BMF(1312)的列来计算CPM+=AMM*BMM,以产生与CPF矩阵(1313)结果中的当前索引的CPF(1314)元素相加的乘积和。在此计算周期期间,后台数据传输并行发生以用于以下两个过程。存储在后台CPB矩阵(1353)中的先前计算的CPM行结果被传输到EMB并存储在外部存储器中。同时或顺序地,将待使用的后台BMM矩阵(1352)的另一行从EMB加载到BMB矩阵中。然后以类似的方式执行CPF矩阵(1423)的另一行元素的计算,其中AMF(1421)的行乘以BMF(1422)的列,以产生与CPF矩阵(1423)结果中的当前索引的CPF(1424)元素相加的乘积和。结合该操作,发生数据传输以存储CPB行结果(1463)并加载下一个BMB行(1462)。这些成对的计算/传输操作按顺序/并行继续,直到CPF矩阵(1533)的最后一行元素的最终计算然后以类似的方式执行,其中AMF(1531)的最后一行乘以BMF(1532)的最后一列以产生与CPF矩阵(1533)结果中的当前索引的CPF(1534)元素相加的乘积和。结合该操作,发生数据传输以存储倒数第二个CPB行结果(1573)并加载最后一个BMB行(1572)。该周期如
图16(1600)所示重复,其中计算继续,存储最后的CPB行结果(1683)并加载下一个BMB行(1682)以进行处理。
虽然已经指示了该计算/传输重叠,使得CPF行(1314,1424,1534,1644)的每个单独元素的计算导致相应的数据传输以存储CPB行并加载BMB行但是,也可以对计算/传输重叠进行排序,使得在CPB/BMB存储/加载数据传输期间计算CPF矩阵的完整行。因此,如果EMB比LMB慢得多,则与完整的行*列乘积/求和相关联的计算周期可用于与CMB和BMB一起发生的较慢的EMB-LMB数据传输重叠。此外,如其他地方所指出的,EMB可以在AMM/BMM/CPM之间共享(因此在这种情况下在AMF/BMF/CPF和AMB/BMB/CPB之间共享),其中可能发生数据拥塞,使数据传输到EMB显著较慢,并且需要执行全行计算周期以重叠EMB数据传输。在EMB在AMF/BMF/CPF/AMB/BMB/CPB的各种元素之间分离的其他场景中,可以简单地将计算周期的部分与数据传输重叠,以便减少用于计算周期完成或发生数据传输到各种EMB总线的等待时间。
部分行前台/后台方法(1700)-(2000)
如图17(1700)的时序图和图18(1800)-图20(2000)的流程图所描绘的,示例实施例结合图13(1300)-图16(1600)中描述的硬件功能,教导了部分行前台/后台矩阵乘法器方法。在此上下文中,用于生成部分CPM行值的给定AMM行与BMM列的点积将与先前CPB行计算到EMB的存储以及将要在稍后的CPF+=AMF*BMF计算中使用的新BMB行的加载重叠。
图17(1700)描绘了与部分行前台/后台矩阵乘法器实施例相关联的示例时序图。这里可以看出,时间通常被分成双相(“乒乓”)格式(1710,1720),其中AMF/BMF/CPF/DSF前台缓冲器在第一阶段(1710)中是有效(Active)的并且AMB/BMB/CPB/D SB后台缓冲器在第二阶段中有效(1720)。在第一阶段(1710)期间,前台/后台选择器是有效的(1711),指示AMF/BMF/CPF/DSF前台缓冲器的前台MUX选择。启动(1712)行*列点乘积乘法,其使矩阵乘法器/累加器(MAC)(1713)有效一段时间,之后使用LMB存储乘法乘积(1714)。在该第一阶段(1710)期间,同时执行BMB行读取(1715)以将来自EMB的新行加载到当前后台BMB矩阵中,并且之后,执行(1716)该四个写入周期,已将先前计算的CPM行乘积值写入EMB。EMB传输操作(1715,1716)与计算执行(1712,1713)和与当前矩阵乘法运算相关联的内部存储(1714)操作重叠。第二阶段(1720)与第一阶段(1710)相同地操作,除了前台/后台MUX寄存器选择器不有效(1721)以便选择不同的一组有效寄存器/存储器缓冲器(AMB/BMB/CPB/DSB),使得在对BMB的行读操作和对CPB的行写入操作期间反转前台/后台缓冲器。
如图18(1800)-图20(2000)的流程图中大体描绘的,图17(1700)的部分行前台/后台执行/传输时序图的实施通常可以使用部分行前台/后台执行/传输方法完成,包括以下步骤:
(1)初始化A,B,C,D矩阵尺寸参数(1801);
(2)加载初始AMM乘数前台矩阵/向量(AMF)(1802)(AMM通常对于单独的BMM被乘数上的多个运算是固定的,但是在某些情况下,AMM可以在步骤(8)中用下一个BMM重新加载);
(3)加载初始BMM被乘数前台矩阵(BMF)(1803);
(4)可选地,将CPM乘积前台矩阵(CPF)初始化为固定值(1804);
(5)初始化用于BMM矩阵行处理的行索引指针(W)(1905);
(6)计算CPM前台矩阵行(CPF)点积(1906);
(7)与步骤(6)同时,如果行索引指针等于零,则进入步骤(10)(1907);
(8)与步骤(6)同时,加载下一个BMM被乘数后台矩阵行(BMB)(也可以在该步骤中可选地从步骤(2)重新加载AMM)(1908);
(9)与步骤(6)同时,存储来自先前矩阵行*列乘法运算的CPM乘积后台矩阵行(CPB)(这可能涉及1-4个EMB总线写周期)(1909);
(10)交换AMF/AMB,BMF/BMB和CPF/CPB的前台/后台存储器/寄存器指针(2010);
(11)递增下一行*列乘法/累加的行索引指针W(2011);
(12)确定矩阵乘法的所有乘积行是否已经完成,如果没有,则进入步骤(6)(2012);
(13)存储来自当前矩阵行*列乘法运算的CPM乘积后台矩阵行(CPB)(这可能涉及1-4个EMB总线写周期)(这完成了计算完成后所有乘积行的存储)(2013);和
(14)在RMM状态(RMM STATUS)寄存器中设置操作完成(OPERATION COMPLETE)指示符(2014)。
与许多实施例一样,该方法在某些情况下可以假设B,C和D矩阵是方形的。此外,该示例方法指示使用单个外部存储器总线(EMB),从中加载/存储A,B,C和D矩阵。在一些实施例中,分开的外部存储器总线用于这些矩阵中的一个或更多个。
可以根据许多因素来修改该一般方法,因此在示例实施例的范围内可以重新排列和/或添加/删除步骤。在示例实施例的范围内,结合本文描述的各种系统集成该方法和其他方法是可能的。
全行前台/后台方法(2100)-(2400)
如图21(2100)的时序图和图22(2200)-图24(2400)的流程图所描绘的,示例实施例结合图13(1300)-图16(1600)中描述的硬件功能,教导了全行前台/后台矩阵乘法器方法。在此上下文中,用于生多个CPM行值的给定AMM行与多个BMM列的多个点积将与先前CPB行计算到EMB的存储以及将要在稍后的CPF+=AMF*BMF计算中使用的新BMB行的加载重叠。
图21(2100)描绘了与部分前台/后台矩阵乘法器实施例相关联的示例时序图。这里可以看出,时间通常被划分为双相(“乒乓”)格式(2110,2120),其中AMF/BMF/CPF/DSF前台缓冲器在第一阶段(2110)中是有效的。并且AMB/BMB/CPB/DSB后台缓冲器在第二阶段中有效(2120)。在第一阶段(2110)期间,前台/后台选择器是有效的(2111),指示AMF/BMF/CPF/DSF前台缓冲器的前台MUX选择。启动多个行*列点乘积乘法(2112),其使矩阵乘法器/累加器(MAC)(2113)在一段时间有效,之后使用LMB存储乘法乘积(2114)。因此,通常在该乘法有效/执行时间(2112,2113)期间执行整行的点积乘法。在该第一阶段(2110)期间,同时执行BMB行读取(2115)以将新行从EMB加载到当前后台BMB矩阵中,并且之后,执行这四个写入周期(2116)以写入先前计算的CPM行乘积值到EMB。EMB传输操作(2115,2116)与计算执行(2112,2113)和与当前矩阵乘法运算相关联的内部存储(2114)操作重叠。第二阶段(2120)与第一阶段(2110)的操作相同,除了前台/后台MUX寄存器选择器不是有效的(2121),以便选择一组不同的有效寄存器/存储器缓冲器(AMB/BMB/CPB/DSB),使得在对BMB的行读操作和对CPB的行写入操作期间反转前台/后台缓冲器。从该图中可以看出,这允许大量的行*列乘法/累加操作与到EMB的数据传输操作重叠。在许多应用的背景中,这适用于EMB总线速度明显慢于LMB的速度和与MAC计算周期相关的执行时间的情况。
如图21(2100)-图24(2400)的流程图中大体描绘的,图21(2100)的全行前台/后台执行/传输时序图的实施通常可以使用全行前台/后台执行/传输方法,包括以下步骤:
(1)初始化A,B,C,D矩阵尺寸参数(2201);
(2)加载初始AMM乘数前台矩阵/向量(AMF)(2202)(AMM通常对于单独的BMM被乘数上的多个运算是固定的,但是在某些情况下,AMM可以在步骤(7)中用下一个BMM重新加载);
(3)加载初始BMM被乘数前台矩阵(BMF)(2203);
(4)可选地将CPM乘积前台矩阵(CPF)初始化为固定值(2204);
(5)初始化用于BMM矩阵列处理的COL索引指针(W)(2305);
(6)计算CPM前台矩阵行(CPF)点积(2306);
(7)与步骤(6)同时,加载下一个BMM被乘数后台矩阵行(BMB)(也可以在该步骤中可选地从步骤(2)重新加载AMM)(2307);
(8)与步骤(6)同时,存储来自先前矩阵行*列乘法运算的CPM乘积后台矩阵行(CPB)(这可能涉及1-4个EMB总线写周期)(2308);
(9)交换用于AMF/AMB、BMF/BMB和CPF/CPB的前台/后台存储器/寄存器指针(2409);
(10)递增列(COL)索引指针W用于下一个行*列乘法/累加(2410);
(11)确定矩阵乘法的所有乘积行是否已经完成,如果没有,则进入步骤(6)(2411);
(12)存储来自当前矩阵行*列乘法运算的CPM乘积后台矩阵行(CPB)(这可能涉及1-4个EMB总线写周期)(这完成了计算完成后所有乘积行的存储)(2412);和
(13)在RMM状态寄存器中设置操作完成指示符(2413)。
与许多实施例一样,该方法在某些情况下可以假设B,C和D矩阵是方形的。此外,该示例方法指示使用单个外部存储器总线(EMB),从中加载/存储A,B,C和D矩阵。在一些实施例中,单独的外部存储器总线用于这些矩阵中的一个或更多个。
可以根据许多因素来修改该一般方法,在示例实施例的范围内可以重新排列和/或添加/删除步骤。在示例实施例的范围内,结合本文描述的各种系统集成该方法和其他方法是可能的。
多路复用前台/后台存储器选择(2500)
示例实施例可以在RMM的构造内提供前台/后台CPM,AMM,BMM和/或DSM元素的多路复用选择,如图25(2500)中大致所描述的。这里可以看出涉及CPM(2513)=AMM(2511)*BMM(2512)的当前操作的一般情况,该操作在从相应的地址多路复用器(2521,2522,2523)导出的本地存储器指针(2511,2512,2513)上执行,地址多路复用器使用D触发器多路复用选择器(2520)在前台存储器地址(2531,2532,2533)和后台存储器地址(2541,2542,2543)的选择之间交替来选择。在许多实施例中,仅实施单个AMM寄存器而不是前台/后台寄存器对。在这种情况下,实施简化到单个非多路复用寄存器。
如果结合到上文描述的矩阵乘法函数配置CPM=AMM*BMM+DSM中,则可以将类似的选择方法用于DSM元素。在示例实施例中,可以使用该方法选择AMM,BMM,CPM和/或DSM的任何子集。实施例利用二的幂的数据尺寸,使得在许多情况下,图25(2500)中描绘的地址总线所使用的地址宽度可以在尺寸上显著减小,因为前台/后台指针的低阶位将是相同的并且只有高阶位才会根据前台/后台选择有所不同。在用于AMM,BMM,CPM和/或DSM的分开的本地存储器的极端情况下,多路复用可以仅涉及单个存储器地址位,其中DFF多路复用器选择器(2520)的输出(2529)可以直接用作本地存储器指针(2511,2512,2513)的地址选择输入。
示例存储器数据传输架构(2600)
在一些实施例中,上述前台/后台处理可以与存储器数据传输架构集成,该架构流水线化较慢的外部存储器总线(EMB)和RMM内较快的本地存储器总线(LMB)之间的数据传输。描绘该实施方式的一般存储器数据传输架构在图26(2600)中描绘出。这里实施512位的示例存储器数据总线宽度(尽管确切的总线宽度是任意的并且不限于所示),其中可以在每个总线周期传输512位到EMB或从EMB传输。使用前台存储器/寄存器CPM-前(2613)+=AMM-前(2611)*BMM-前(2612)(CPM-fore(2613)+=AMM-fore(2611)*BMM-fore(2612))在前台中计算CPM+=AMM*BMM的当前计算。在许多实施例中,仅实施单个AMM寄存器而不是前台(261l)/后台(2621)寄存器对。在这种情况下,实施简化到单个非多路复用寄存器。
与这些计算同时,用于包括4x512=2048位的CPM后(2623)的相应后台寄存器以512位的区段存储到FIFO(2633)中,并且用单独的总线周期写入EMB(2643)。写入EMB可能涉及1-4个EMB总线写周期,因为在某些情况下,只有一部分CPM后(CPM-back)结果可以写回到EMB。因此,可以将得到的2048位结果的一到四个512位区段写入EMB(2643)。64行CPM后(2623)寄存器每个表示4x512=2048位,因此需要对EMB进行四次写入以完全存储CPM后(2623)行向量的每个2048位行。这使用FIFO(2633)来最好地完成,但是可以等效地使用存储器选择多路复用器来完成,该多路复用器被配置为使用四个单独的偏移存储器地址来写入CPM后(2623)行向量的512位区段。
类似地,对于来自EMB(2642)的512位的区段中的矩阵中的64行中的每一行,使用FIFO(2632)或其他缓冲方法,将数据后台加载到BMM后(2622)矩阵中。如果实施为FIFO(2632),则该缓冲方法可以包含足够的深度(N)以容纳BMM后(2622)矩阵的所有行。
最后,EMB读取周期(2641)可以在后台寄存器/FIFO(2621)中加载后台AMM行,以准备存储在CPM-前(2613)矩阵中的行*列点积的新计算。在许多实施中,将数据写入AMM-前(2621)FIFO将触发CPM-前(2613)矩阵行点积计算,直到AMM-前(2621)FIFO已用尽。
CPM加载/存储路径(2700)
一些实施例可以结合附加的CPM加载/存储路径以改善需要保存和重用CPM的操作的性能(例如在涉及长卷积的计算中等)或矩阵乘法和矩阵加法(例如C=A*B+d)的性能。在这些情况下,包括以下内容是有用的:
(a)额外的CPM矩阵加载/存储路径(2743,2744);和
(b)额外的CPM存储器(这里称为D求和矩阵(DSM))(在某些情况下其可以从CPM中的额外行被使用)(2724)。
该架构的示例实施方式大体在图27(2700)中描绘,其中使用来自存储器的当前AMM(2741)(如加载到前台AMM(2711)中的)乘以前台BMM(2712),来计算CPM(2713)=AMM(2711)*BMM(2712)的前台计算,以产生前台CPM(2713)。在该示例中,乘数AMM(2711)和被乘数BMM(2712)具有512位的数据宽度,内部数据通常使用8位的倍数(8,16,32等)来定义,如在乘法运算之前由系统动态配置的。得到的CPM乘积(2713)具有512*4=2048个数据位的数据宽度,以除了先前乘法运算的求和/累加运算之外还容纳512x512乘法运算(在8,16,32等位中的各个数据)。
对于16位和更宽输入数据的情况,CPM-前(2713)和/或CPM-后(2723)存储器中的额外行可用于存储DSM(2724)矩阵。取决于应用背景,可以不存在从DSM矩阵(2724)到CPM矩阵(2713)的数据路径,并且根据需要用直接加载DSM(2724)矩阵来代替。
CPM到BMM/AMM矩阵存储路径(2800)
在一些实施例中,可以实现附加的CPM到BMM和/或CPM到AMM的一个或更多个矩阵存储路径。该架构支持各种算法,这些算法可能需要将操作的输出用作下一操作的输入(例如,在FFT中,矩阵的行然后是结果的列)。附加的直接CPM到BMM后路径允许来自第一操作的输出用作另一操作的输入,以最小化传输等待时间,并消除与EMB存储器访问相关联的任何附加延迟。可以使用类似的策略来实施CPM-后到A-前数据路径。
该架构增强的示例大体在图28(2800)中描绘,其中使用选择多路复用器(2832)来实施可选的CPM到BMM加载/存储路径,该多路复用器在BMM EMB数据(2842)和先前计算的CPM数据(2833)之间进行选择(如在输出CPM数据总线的一部分中选择一样)。类似的CPM到AMM加载/存储路径被描绘为使用选择多路复用器(2831)来实施,该选择多路复用器在EMBAMM数据(2841)和先前计算的CPM数据(2833)之间进行选择(如在输出CPM数据总线一部分内选择一样)。
乘法/累加数据宽度(2900)
在示例实施例中,可以实施各种各样的乘法/累加操作。通常,RMM可以配置为实现以下任何操作:
·CPF=(AMM x BMM)
·CPF=-(AMM x BMM)
·CPF=DSM+(AMM x BMM)
·CPF=DSM-(AMM x BMM)
在这些原始操作符的每一个内,在针对每个列元素的CPF的每行内生成点积,其中AMM行乘以BMM列以产生点积,导致所选CPF行的列元素。在这里描述的实施方式中,与这些点积相关联的标量乘法利用W个数据位的固定标量实体位宽度。由于两个W位量的标量乘积乘法可以产生2xW个数据位的结果乘积,因此CPM乘积矩阵应该包含具有2xW个数据位的最小宽度的各个数据条目。例如,如果AMM和BMM包含8位数据,则生成的标量积将需要支持16位数据。
另外,由于上述原始函数可以包含累加函数(如在CPF=DSM+(AMM x BMM)和CPF=DSM-(AMM x BMM)中),因此超过2xW个数据位的附加标量数据存储可以被提供。示例实施例通过CPM矩阵的实施例提供该要求,该CPM矩阵包含足够的存储空间以处理每个具有4xW个数据位的数据宽度的标量。这提供了足够的存储空间以容纳完整的2xW标量乘法加上附加的累加操作(在累加函数的情况下可以级联(如在CPF=DSM+(AMM x BMM)和CPF=DSM-(AMMx BMM)中)。
该概念大体在图29(2900)中描绘,其中AMM(2910)乘以BMM(2920)的乘积CPM(2930)使用在AMM(2910)向量和BMM(2920)矩阵中具有2W位的M个条目的标量ROW/COL(行/列)生成。CPM(2930)内的数据包括具有M个列条目的行,每个列条目包括4x2W个位,2W+1个位包括乘积结果(2931)以及2W+1个位包括累加保护位(2932)。
对于许多实施例,矩阵乘法总是在AMM向量和BMM矩阵的全尺寸上。8位操作总是将64元素向量乘以64x64元素矩阵。16位操作总是将32元素向量乘以32x32元素矩阵。32位操作总是将16元素向量乘以16x16元素矩阵。64位操作总是将8元素向量乘以8x8元素矩阵。
使用足够的操作数和结果宽度执行AMM*BMM操作,使得不会发生环绕或饱和。CPM矩阵存储元件尺寸具有足够的宽度以支持多个累加而没有环绕或饱和。长时间运行的计算可以周期性地存储C矩阵部分结果,以便在RMM单元之外以更高精度格式进行后续处理。
CPM矩阵中的4xW数据位存储为重复累加提供大约以下余量而没有溢出:
存储器与数据精度(3000)
在示例实施例中,可以基于RMM正在处理的数据的类型来动态地重新配置与RMM相关联并且经由LMB访问的本地存储器。因此,LMB存储器配置基于RMM正在操作的数据的数据精度而动态地变化。该技术大体在采用图30(3000)中的512位EMB的实施例中描述,其中使用前台(3011,3012,3013)存储器阵列执行CPM+=AMM*BMM计算,同时使用后台阵列(3022,3023)和任何多周期总线访问处理(3033)进行后台数据传输。
从该示例中,对于AMM行向量,无论输入数据类型如何,存储器要求都是相同的。对于CPM和BMM矩阵,以下陈述成立:
·8位(最低精度)输入数据类型设置存储器要求,因为它需要64行。
·16位和32位输入数据类型分别具有32和48个额外行。
·额外行可用于额外的板存储或简化硬件实施。
·无论输入数据类型如何,累加器位数量通常是输入数据位数量的四倍。在一些备选实施例中,累加器位数量是输入数据位数量的双多边形倍数,而与输入数据类型无关。在一些其他替代实施例中,累加器位数量是输入数据位数量的二的双多边形幂的倍数,而与输入数据类型无关。
因此,可以看出,对于该示例中除了8位数据之外的所有数据,BMM和CPM矩阵的额外行可以用于其他功能。
数据移动与数据精度(3100)
如在图31(3100)中采用512位EMB的实施例中大体描述的,其中使用前台(3111,3112,3013)存储器阵列执行CPM+=AMM*BMM计算,同时使用后台阵列(3122,3123)和任何多周期总线访问处理(3133)进行后台数据传输,发生固定的每周期数据移动,其中:
·无论数据精度如何,每个周期的数据移动要求都是相同的,因为矩阵尺寸随精度缩放,以使矩阵行位保持不变。
·每个EMB总线周期可以加载AMM-前或BMM-后的一行并存储CPM-后的一行。
·在64个EMB总线周期中,以64x 64矩阵加载或存储8位数据的方形矩阵。
·在32个EMB总线周期中,以32x 32矩阵加载或存储16位数据的方形矩阵。
·在16个EMB总线周期中,以16x 16矩阵加载或存储32位数据的方形矩阵。
这些数据移动细节仅是可能实施的示例实施例。
乘法器重用/计算与数据精度(3200)
在示例实施例中,如本文所述的由可重新配置的乘法器-累加器(MAC)执行的乘法运算可以使用分层乘法方法来实施,以便在示例实施例的实施方式中增加乘法器硬件的重用。这种乘法计算的分层方法允许RMM以这样的方式重用原子P位乘法器:即使得EMB中的数据可以被动态地重新解译为包括各种数据类型。这种MAC的层次方法大体在图32(3200)中描绘,其描绘在512位EMB数据宽度的背景中操作的MAC系统的一部分。可以从图32(3200)中描绘的示例树层次结构中辨别出:
·每个周期8位固定点乘的数量(642=4096)(3201)与每个周期所需的16位乘法数量(4096/4=322=1024)的比率恰好为4∶1(3202);
·每个周期的16位固定点乘法的数量与每个周期所需的32位乘法数量(1024/4=162=256)的比率恰好为4∶1(3203);
·可以有效地组合四个P位固定点乘法器来实现一个2*P位固定点乘法器;
·由于数据精度每增加一倍,MAC/周期缩放1/4,因此在精度上有最大量的计算机硬件重用。
例如,可以利用一些附加移位和相加从四个P位固定点乘法器构建2*P位固定点乘法器。所描述的示例提供8→16→32位乘法器(高b/低b(Highb/Lowb)到2*b位数量的高/低b位,并且2n有效地实现为左移n位):
x32*y32=(xhigh16*216+xlow16)*(yhigh16*216+ylow16)
=(xhigh16*yhigh16*232)+(xhigh16*ylow16*216)+(xlow16*yhigh16*216)+(xlow16*ylow16)
x16*y16=(xhigh8*28+xlow8)*(yhigh8*28+ylow8)
=(xhigh8*yhigh8*216)+(xhigh8*ylow8*28)+(xlow8*yhigh8*28)+(xlow8*ylow8)
这些技术可以同样地应用于任何尺寸的标量乘法/累加操作,并且不限于上述的位宽度。通常,在示例实施例中,EMB总线的最佳宽度是二的幂,其中许多实施方式利用512位总线宽度。这种二的幂尺寸允许简化存储器寻址,但也允许EMB总线宽度与单个标量数据宽度的比率也是二的幂。例如,512位EMB总线宽度可被8位单独的标量数据宽度整除,因此在一个512位EMB总线周期内可包含64个8位字节。对于16位、32位、64位、128位数据,存在类似的情况。可以将图32(3200)中提供的模式扩展(3204)到任意位宽度的任何数量的嵌套乘法运算/操作。
示例向量/矩阵乘法器(3300)-(3400)
在示例实施例中,执行CPM+=AMM*BMM矩阵乘法,其中CPM和AMM矩阵是向量量并且BMM矩阵是方形的。对于此示例,假设EMB总线长度为512位,指示AMM向量长度为512位,CPM向量的每一行长度为4*512=2048位,以及BMM矩阵的每一行长度为512位。此示例还假设最小单独标量位宽度为8位,除了这个二进制倍数(16x16,32x32,64x64),还允许进行8x8乘法。具有这些参数的示例RMM计算配置大体在图33(3300)中描绘,其中AMM向量(3311)的列条目乘以BMM矩阵(3312)的行条目并求和以产生在CPM结果向量(3313)内的单个列条目。
对于CPM结果向量(3313)中的每个列条目,使用相同的AMM向量(3311)和BMM矩阵的新列(3312)产生对应的点积。根据为可重新配置的乘法运算选择的标量数据类型,在点积计算中将使用BMM矩阵(3312)中的不同数量的行,因为AMM向量(3311)中的标量条目的数量将基于所选的标量数据类型(64个8位条目、32个16位条目、16个32位条目、8个64位条目等)而变化。
RMM配置有足够数量的硬件乘法器/累加器单元,以基于在AMM向量(3311)列条目以及BMM矩阵(3312)中的相应行条目之间发生的各个点积的所需数量来同时计算CPM向量(3313)中的所有结果列。例如,如果配置为8x8乘法,则RMM中MAC单元的每个机器周期将计算CPM行(3313)中的64个点积,其对应于AMM(3311)的64个行元素和BMM(3312)中的64列(每列包含64行)中的每一列的点积。
在CPM矩阵(3313)和AMM矩阵(3311)表示向量的该配置中,RMM系统可以被配置为允许应用控制逻辑(ACL)初始地用静态数据填充BMM矩阵(3312)的内容,然后顺序地将数据写入AMM寄存器(3311),其自动触发CPM(行)=AMM(行)*BMM(矩阵)的矩阵乘法运算,从而生成新的CPM行值。然后使用上文描述的前台/后台技术(具有如上所述的可选数据变换/查找操作)将计算出的CPM行值自动写回到EMB。该周期可以继续,ACL将新的AMM行条目写入AMM向量(3311),随后乘以静态存储的BMM矩阵(3312),并存储在CPM向量(3313)中(随后传输到EMB)。
这种通常的乘法/累加总线周期大体可以根据图34(3400)所描绘的流程图来描述,其中RMM向量/矩阵乘法方法包括以下步骤:
(1)初始化乘法处理参数(L=标量条目数据宽度(位);W=EMB总线宽度(位);K=W/L(AMM,CPM列和BMM行))(3401);
(2)加载静态BMM被乘数前台矩阵(BMF)(K*K值)(3402);
(3)加载新的/下一个AMM乘数前台向量(AMF)(K值)(3403);
(4)同时计算AMM(向量)*BMM(矩阵)的K列点积(K个点积值)(3404);
(5)使用1-4个EMB写周期(根据输出数据类型要求的写周期数量)将CPM乘积行结果存储到EMB(4*W位)(3405);
(6)确定是否已经处理了AMM向量的K行,如果没有则进行到步骤(3)(3406);和
(7)终止RMM向量/矩阵乘法方法(3407)。
该方法假设CPB和AMM矩阵是AMM*BMM矩阵乘积的向量和计算,其中AMM乘数是具有多于一行的矩阵,其是使用静态BMM矩阵乘以多个AMM向量来完成的。这是使用步骤(6)中的循环逻辑完成的,但在某些情况下可以简单地通过对AMM存储器(3311)的多个写入操作来完成,AMM存储器(3311)的多个写入操作使用顺序ACL写入功能或等效地利用ACL和AMM存储器之间的FIFO存储器,其将AMM矩阵的顺序行馈送到AMM向量(3311)。在任何情况下,RMM被配置为在每个总线周期期间使用AMM向量(3310)和BMM矩阵的选定列(3320)的K个点积乘法计算CPM向量(3330)的K个列元素。在不脱离示例实施例的范围的情况下,EMB总线宽度W和标量条目位长度L可以以多种方式变化。
输出格式化逻辑示例(3500)-(3600)
如图35(3500)中大体所描绘的,当CPM-前(3513)前台数据被计算并且随后在内部被引用为CPM-后(3523)后台数据时,在最终传输到EMB(3553)之前,它将被传输(3533)并被格式化(3543)。
在示例实施例中,许多RMM实施方式将提供灵活的输出格式化(3533)以将CPM累加器元素数据格式变换为输出元素尺寸和Q点的范围。关于图5(0500)-图8(0800)描述这些数据查找/变换中的几个。在若干实施例中,组合输出格式化单元是可能的。该输出格式化方法大体在图36的流程图中示出(3600)。在此上下文中并且应用于具有512位EMB总线宽度的示例应用,在示例X0输出流水线级中,2048位CPM存储元件(3601)在多级SEVID桶形移位器中右移,该多级SEVID桶形移位器具有4个32位跨步选择(3602,3603)、4个8位跨步选择(3604,3605)和8个1位跨步选择(3606,3607)。在移位非零的情况下,移位量(3699)在X0输出流水线级之前递减,使得LSB-1位置可用于舍入加法。CPM元素类型特定逻辑预处理数据以在每个移位器级之前处理符号/零扩展和操作数边界。在移位完成之后,执行早期饱和检测(3608)以从关键路径中消除深度逻辑AND(与)和OR(或)简化树。通过检查少量位在舍入之后调整早期饱和检测情况。在X1输出流水线级(3609)中,移位的CPM元素可选地通过二进制单指令多数据(SIMD)加法器(3610)以LSB-1权重递增。舍入递增器输出向右移动一个位置并执行最终饱和检测(3611)。最后,选择输出字段或饱和值(3612)。直到最终输出字段选择(3613),在CPM元素宽度处执行对来自CPM矩阵的元素的处理。
如图35(3500)中大体所示的,传输缓冲器的数据部分包含4行512位。它有一个写入端口,由传输有限状态机用于将数据从CPM储存器移动到传输缓冲器。传输缓冲器还有一个读端口,由RMM指令使用以将数据从RMM单元移动到ACL向量寄存器。读写端口是独立的。当在同一传输缓冲器行上同时写入和读取时,写端口可以将数据旁路到读端口。在许多实施例中,对传输缓冲器的所有读和写访问都是512位宽。传输缓冲存储元件最佳是时钟门控的标准单元可扫描触发器等。
系统实施示例(3700)
在图37(3700)中描绘与示例RMM实现相关联的功能和数据路径的详细块图,其中RMM(3710)被分解为包括RMM阵列(3721)、根时钟控制/发生器(3722)和RMM控制逻辑(3723)的顶层RMM功能块(3720)。
RMM阵列(3721)包括附加功能块,其包括水平数据路径(3731)、垂直重复器(3732)、水平重复器(3733)、干乘法器(3734)、中间数据路径底部(3735)以及中间数据路径顶部(3736)。
水平数据路径(3731)还包括CPM加载数据路径(3741)、结果格式化器(3742)、传输数据路径有限状态机(RSM)(3743)、累加器(3744)和CPM储存器(3745)。
在RMM系统内使用的乘法器是分级地分层布置的,使得干乘法器(3734)被排列并包括内部排列的叶乘法器(3746),其包括内部排列的8x8乘法器(3751),其被实施为基8布斯(Booth)乘法器。
中间数据路径底部(3735)和中间数据路径顶部(3736)接口连接以支持AMM查找表(LUT)(3747)、AMM预缩放器(3748)和BMM转置单元(3749)。AMM查找表(LUT)(3747)和/或AMM预缩放器(3748)可以包含附加逻辑以执行数据转换以及如本文所述的查找功能。BMM转置单元(3749)允许BMM矩阵以行主或列主顺序加载,因此允许BMM加载上的自动矩阵转置。该行主要/列主顺序选择可以部分地由存储在模式/控制寄存器(MCR)和/或功能/操作码寄存器(FOR)中的数据确定。此外,可以通过传输偏移寄存器(TOR)来调整向BMM中加载数据,该传输偏移寄存器确定数据被传输到的BMM中的偏移。
RMM控制逻辑(3723)提供ACL/CPU接口(3761)、传输缓冲器逻辑(3762)、AMM有限状态机(FSM)(3763)、BMM有限状态机(FSM)(3764),以及CPM有限状态机(FSM)(3765)。此控制接口允许外部ACL/CPU连接到RMM(3710)并协调AMM、BMM和CPM与ACL/CPU之间的数据传输。此控制接口还负责触发乘法/累加操作、执行系统诊断,并在与外部ACL/CPU共同使用时为RMM提供软件调试支持。
系统实施示例(3700)
与图37(3700)的系统块图一致,示例实施例可以利用如图38(3800)中大致描绘的计算状态机/数据流配置。
如图38(3800)所示,RMM中的数据流是固定的,并从操作数输入继续到操作数存储。接下来读取并乘以矩阵乘法操作数,并加上来自CPM矩阵储存器的可选的较早值。CPM矩阵结果通过输出处理块传递到由ACL/CPU访问的输出缓冲器。主控制路径用虚线表示。
示例计算状态机/数据流(3900)
与图37(3700)的系统块图和图38(3800)的数据流程图一致,示例实施例可以利用输出数据格式化(ODF)状态机/数据流配置,如图39中大致所描绘的(3900)。
X FSM控制构成RMM单元中的输出处理块的子功能。子功能的顺序是固定的,但子功能操作可以通过ACL/CPU控制/模式寄存器(3901)中的字段进行参数化。
偏移量必须小于CPM矩阵的元素尺寸的宽度(3902)。DSP舍入步骤(3903)是1/2-LSB权重递增,然后是截断(3904),或者:舍入=((C值>>(移位-1))+1)>>1)(rounded=((Cvalue>>(shift-1))+1)>>1)
其中移位(shift)是ACL/CPU控制/模式寄存器值。当ACL/CPU控制/模式寄存器值为零时,舍入(3904)被抑制。该系统还允许使用各种方法对CPM矩阵(3902)值进行范围限制,其中描绘两个方法(饱和(SAT)(3905)和ReLU(3906))。在将下限从最小可表示数字改变为零的情况下,ReLU(3906)被实施为饱和(SAT)(3905)。在ReLU(3906)和SAT(3905)两个模式中,太大而不能以目标格式表示的数字被转换为写入X传输缓冲器的目标格式的最大可表示数(3907)。ReLU(3906)和SAT(3905)模式在图39(3900)的右侧详细说明(3910)并且不应同时启用。
示例MAC IC布置图物理放置(4000)-(4400)
虽然图37(3700)的系统块图可以以各种方式实施,但是可以设想利用半导体集成电路(IC)技术的若干构造技术。这里详细描述用于这些实施方式的示例性布置图。
示例IC布置图(4000)
可以使用集成电路(IC)技术来实现示例实施例,通常作为如上所述的片上系统(SOC)的一部分。在此上下文中,RMM内的乘法器/累加器(MAC)功能的组织可用于优化物理布局、改善数据传输等待时间,并提供到SOC的ACL组件的统一接口。该MAC组织的示例大体在图40(4000)中描绘出,用于具有64x64 8位MAC功能的示例RMM,其能够针对维度64x64的BMM 8位矩阵同时执行全行AMM 64 8位MAC列操作。
图40(4000)中描绘的示例顶层布置图由分层乘法累加模块(4011,4012,4013,4014,4021,4022,4023,4024,4031,4032,4033,4034,4041,4042,4043,4044)的阵列、用于操作数预处理的数据路径以及接口/控制区域(4001)组成。接口和控制区域(4001)位于EMM单元的顶部,并且预期与ACL或监控CPU相邻。在ACL/CPU和RMM单元之间传递的向量操作数和结果是交错的但不折叠并且在水平宽度的大部分上延伸。如图所描绘的,这些向量数据总线的最低有效位位于RMM单元布置图的最右顶侧。这些位也对应于这些总线所包含的编号最低的向量元素。实例化乘法器的干阵列乘法器(SAM)模块(4011,4012,4013,4014,4021,4022,4023,4024,4031,4032,4033,4034,4041,4042,4043,4044)以4x4阵列布置。干阵列的列之间的垂直区段包含重复器(Vrep)和操作数处理逻辑。干阵列的行之间的水平区段包含加法器和重复器。中间水平区段(Vrep/add/acc/CPM储存器)通常保留用于最终累加器、CPM矩阵储存器、CPM操作数移位和输出处理。
图40(4000)中描绘的缩放RMM设计是通过增加或减少干阵列乘法器(SAM)模块(4011,4012,4013,4014,4021,4022,4023,4024,4031,4032,4033,4034,4041,4042,4043,4044)实例的数量来实现的。理想情况下,干阵列乘法器(SAM)模块(4011,4012,4013,4014,4021,4022,4023,4024,4031,4032,4033,4034,4041,4042,4043,4044)的数量应具有整数二的幂平方根,以实现最佳实施效率。可以基于特定应用背景的需要来扩展或缩小图40(4000)的示例方式。
数据流
与该示例布置图相关联的数据流描述如下。操作数和指令在布置图的顶部块中进入接口逻辑。如本文所述,BMM向量行和AMM向量被分配到叶模块中的乘法器,但是通常从RMM布置图的顶部到底部并且在干模块之间的区域中具有时钟控制的重复器。将来自干模块的乘积相加以在二叉树中形成点积。树的根在物理上位于干阵列乘法器(SAM)模块示例的行1和2之间的布置图的中间水平区段中。中间区段还包含CPM矩阵储存器和输出处理数据路径。来自输出处理数据路径的结果一直传输到传输缓冲器所在的接口块。读取传输缓冲器的ACL/CPU指令的处理完全限于布置图顶部的区域。
解码和操作数分配流水线级
在示例实施例中,流水线操作可以并入如本文所述的RMM系统,包括但不限于多个解码和操作数分配流水线级。在此上下文中,七个流水线级通常与指令解码、FSM处理和叶级乘法器的操作数分配相关联。它们在本文中命名为d0至d6。定义流水线深度的路径是从AMM操作数,通过预缩放数据路径和操作数分布到叶级乘法器操作数寄存器。实际上,不同组的叶级乘法器可以基于它们的位置观察到不同的AMM操作数延迟。这些延迟与点积求和树中的补偿延迟相平衡。在加法器树而不是叶操作数中执行补偿的优点是它减小了需要插入延迟触发器的树中的切割尺寸。
计算流水线级
计算流水线级跨越从叶乘法器操作数寄存器到累加器的输出的数据流,该累加器使用先前的CPM行值来加上或减去每列点积。为叶乘法器阵列分配四个流水线级。为加法器树中的剩余求和分配四个附加的流水线级(2个干阵列加2个加上的干结果)。两个级被分配给CPM行累加并从进位保存格式转换为二进制。最后,为CPM矩阵存储写入建立时间分配一个级。这些组合以形成用于计算硬件的11个流水线级,这里称为c0到c10。
干阵列乘法器(SAM)模块详细信息(4100)
在图41(4100)中提供干阵列乘法器(SAM)模块的附加细节,其描绘了示例性干阵列乘法器(SAM)模块布置图。从该图中可以看出,根据叶阵列乘法器模块(LAM)进一步分层地定义干乘法阵列。在该实施例中,干阵列乘法器(SAM)模块由叶阵列乘法器模块(LAM)的16个实例组成,并间接地实例化256个乘法器。来自叶阵列乘法器模块的打包的SIMD结果被组合成两个级别的4:2SIMD进位保存加法器,以有助于点积求和。每个级别的相加之后是流水线寄存器,以便为传输延迟和随后的相加提供足够的时间。在顶层布置图中实例化干阵列乘法器(SAM)模块的16个实例,以形成完整的4096个MMA乘法器。为了与其他RMM组件间距匹配,干阵列乘法器(SAM)模块的宽度通常近似为128个触发器宽度。
叶阵列模块(LAM)细节(8位)(4200)
图40(4000)中描绘的每个干阵列乘法器(SAM)模块包括如图41(4100)所示的叶阵列乘法器模块(LAM)。在图42(4200)中提供以8位模式操作的示例叶阵列乘法器模块(LAM)的附加细节。RMM单元中的所有乘法器都位于叶阵列乘法器模块(LAM)中,如图42(4200)中大致所描绘的。叶阵列乘法器模块(LAM)以树结构复制以构造整组RMM乘法器。叶阵列乘法器模块(LAM)还包括第一级别点积CSA加法器、流水线寄存器和数据复用,以支持不同的操作数尺寸和有符号/无符号选项。最低级别的乘法器块是8x8基8Booth乘法器。BMM数据始终连接到Booth编码的乘法器操作数。四个AMM向量数据元素在中间数据路径中预缩放,并连接到部分乘积发生器数据输入用于非重新编码的操作数。中间数据路径中的预缩放避免了在每个叶乘法器中复制预缩放硬件并节省了芯片面积和功率。在不同的操作数尺寸模式中,8x8乘法器的组被重新配置以形成8个8x16乘法器或4个8x32乘法器。操作数尺寸配置在ACL/CPU模式/控制寄存器中定义。与数据流水线并行地,配置控件被流水线化至叶阵列乘法器模块(LAM),使得ACL/CPU模式/控制寄存器的更改不影响RMM流水线中的早期指令。为了与RMM单元中的其他组件间距匹配,在许多实施例中,LAM的宽度近似于32个触发器宽度。
叶阵列模块(LAM)细节(16位)(4300)
如图43(4300)中大体所示的,在16位模式中,垂直相邻的8x8乘法器对被重新配置以形成单个8x16乘法器。在此模式下,垂直对中的两个乘法器共享BMM矩阵操作数的相同8位字段和16位预缩放的AMM操作数。为了形成16x16乘积,相邻的8x16乘法器连接到同一16位预缩放的AMM操作数。然后,两个8x16乘积在执行点积相加的加法器中求和(适当的移位)。其余6个8x16乘法器构成剩余的3个16x16乘法器。结果是四个16x16乘法的两个和。
叶阵列模块(LAM)细节(32位)(4400)
如图44(4400)中大体所示的,在32位模式中,列中的4个8x8乘法器被重新配置以形成单个8x32乘法器。在此模式下,四个乘法器共享BMM矩阵操作数的相同8位字段和32位预缩放的AMM操作数。要形成32x32乘积,其余列将连接到同一32位预缩放的AMM操作数。然后将四个8x32乘积在以较低精度格式执行点积相加的加法器中求和(适当的移位),以生成单个32x32乘积。
示例AMM FSM和数据路径(4500)
在许多实施例中,AMM数据路径包括以下组件:
·AMM有限状态机(FSM);
·AMM向量储存器;
·AMM向量查找表;
·AMM向量基8预缩放;
·AMM向量流水线;和
·AMM和BMM向量分布。
图45(4500)中描绘示例AMM中间数据路径。
AMM FSM
物理上,AMM FSM位于顶部接口和控制块中,并计算d0流水线级中的状态更新。控制信号与操作数一起被流水线化。
AMM向量储存器
AMM向量储存器是沿着RMM布置图的中心垂直部分分布的512位寄存器。AMM向量储存元件可以实施为时钟门控标准单元可扫描触发器。
AMM向量查找表
在功能上,对于AMM向量的每8位,可以存在一个4位到8位的扩展查找表,或64个独立的查找表。为了实施,存在32个3端口查找表,每个表都有一个宽边写端口和两个独立的读端口。查找表可以由时钟门控可扫描触发器构成,并且每个可以包含16个9位条目。查找表包含必须长时间有效的数据,并且查找表中的错误可能导致矩阵计算中的系统错误。因此,当将表内容广播到查找表的32个副本时,每8位条目一个奇偶校验位可以被可选地计算。在查找表读取上检测奇偶校验。
AMM向量基8预缩放
对于具有BMM矩阵的AMM向量乘法,相同的AMM向量元素用于乘以BMM矩阵的所有列中的所有对应元素。为了节省功率和面积,可以预先计算(预缩放)在阵列中的Booth乘法器中使用的缩放的AMM向量元素值,并且将其通过HMA在LMA乘法器的列上广播。对于基8的情况,唯一非重要的倍数是x3(3倍)权重。剩余的倍数可以由Booth乘法器部分乘积发生器多路复用器计算。对于不同的操作数尺寸,可以使用SIMD破位进位加法器经济地实现x3逻辑。
AMM向量流水线
为AMM向量处理分配两个流水线级。第一流水线级包括可选的查找操作、符号/零扩展和支持操作数类型的x3倍数生成所需的移位多路复用。第二流水线级包含SFMD二进制加法器和某个允许到输出触发器的传输延迟。第二流水线级的输出触发器可能左右重复,以驱动MMA单元的左右乘法器阵列。通过将左/右输出触发器移动到干乘法器阵列之间的垂直通道中,SIMD加法器级中的时间裕量可以在下一个分配阶段中交换附加的传输延迟时间。
向量和B列主分布
物理上,AMM向量储存器、查找表和预缩放在MMA单元的中间垂直区段中,以帮助均衡到各个乘法器的x3和x1倍传输延迟。在BMM矩阵转置操作的列主要加载顺序中,存在与AMM向量储存器和逻辑并行的分布网络,它将BMM列数据垂直向下移动到RMM单元的中间,并穿过所有乘数列转向发送部分B数据。叶乘法器模块中的逻辑选择B矩阵数据的行主或列主形式。
BMM FSM和数据路径(4600)-(4800)
BMM FSM
BMM FSM物理上位于布置图中的顶部接口和控制模块中。状态更新在dl流水线级中计算。控制信号从顶部模块向下到干和叶阵列广播以及从中间数据路径到左侧和右侧干阵列广播。
BMM行主要分配
如图46(4600)中大体所描绘的,BMM矩阵行通过与AMM向量分配周期匹配的重复器网络加载到BMM矩阵储存器中。在布置图顶部附近有几个周期匹配的流水线级。一旦BMM矩阵行被驱动到干阵列乘法器(SAM)模块,下一个重复器就位于布置图的中间水平区段。第二个重复器允许数据以丰富的余量在累加器和CPM矩阵储存器周围的拥挤区域上传播。最后,离开中间区段的数据被广播到剩余的干阵列乘法器(SAM)模块列。
BMM矩阵写入启用
在更新BMM矩阵储存器的情况下,计算4096个写启用并将其分配给储存元件。写启用计算取决于ACL/CPU写入的写偏移值,BMM矩阵元素尺寸,全局偏移和ACL/CPU BMM转置设置。这些偏移寄存器、加法器和解码逻辑允许软件精确控制元素加载到B矩阵的位置。例如,软件可以设置每个元素的偏移量,以快速加载矩阵类型,如稀疏或带对称矩阵。物理上有两个写启用逻辑副本,如图47(4700)所描绘的:一个水平位于布置图顶部处的控制和接口模块中用于行主顺序,一个垂直位于中间数据路径中用于列主顺序。启用一个或另一个,并且来自两组逻辑的BMM元素写入启用被逻辑“或”以形成最终写入启用。这同样在叶阵列中启用控制行与列数据的选择。由ACL/CPU寄存器编程的列偏移寄存器可以是奇偶校验保护的。每4个偏移可能有一个奇偶校验位,即每24位数据一个奇偶校验位。偏移寄存器的垂直和水平副本可以具有独立的奇偶校验。
如图48(4800)所描绘的启用逻辑由与叶阵列的步幅匹配的4列块构成。ACL/CPU偏移寄存器的每列偏移字段被复用以形成字节、半字和字粒度启用。多路复用器的6位输出被加到BMM FSM维持的当前行或列偏移中。该总和由处理字节、半字和字尺寸情况的逻辑解码。对于每种尺寸情况,存在预解码逻辑,其将参与解码的位分成两组。然后,三组预解码信号由64个AO222功能阵列解码,这些功能在逻辑上和预解码信号对“与”。
BMM矩阵储存器
BMM矩阵储存器在功能上是64个条目乘512位行的两个存储体,总容量为65536位(8KiB)。该阵列具有单个写端口和单个读端口。从写入到读端口不提供旁路。
写入BMM矩阵储存器总是512位。BMM矩阵储存器的读取始终是32768位的完整BMM矩阵体容量。BMM矩阵储存元件通常是时钟门控的标准单元可扫描触发器,其物理地分布在叶乘法器片中。
CPM FSM和数据路径(4900)-(5200)
CPMFSM
CPM FSM物理上位于布置图中的顶部接口和控制模块中。在dl流水线级中计算下几个状态值。控制信号流水线连接到中间累加器和C存储块,使得控制信号在点积组件进入最终计算流水线级时可用。
CPM累加器数据路径(4900)
如图49(4900)中大体所示的,累加器数据路径实施完成点积并将点积与来自CPM储存器的行组合的功能。在干模块阵列的上半部分和下半部分中的C6流水线寄存器的输出被发送到阵列的中间区段。在那里,两个延迟周期被加到上部流水线部分和以匹配下部干模块中的时间偏移。延迟的上部和与下部和使用进位保存4:2SIMD加法器相加,然后在流水线寄存器C7中寄存。然后,C7寄存器的输出可选地是1的补码(和以及进位),再使用进位保存4:2SEVID加法器(简化的4:2加法器,其中大部分位配置为全加器/半加法器组合)相加。该加法器结果在C8流水线寄存器中捕获。当对C7寄存器输出求补时,产生1的补码的相同逻辑信号被用作进入SEVID加法器的12权重的进位,以完成求和和进位输入的2的补码。C8流水线寄存器输出仍处于进位保存形式。它们通过由四个32位二进制加法器和逻辑组成的分离进位阵列转换为二进制,以生成32位区段的进位输入。如果存在时间裕量,则进位逻辑可以向上移动到C7级。二进制结果被写入流水线寄存器C9。然后,C9流水线寄存器将目标为CPM矩阵的数据发送到CPM矩阵数据分配逻辑。
CPM加载数据路径(5000)
如图50(5000)中大体所描绘的,CPM加载数据路径执行固定移位和符号扩展,以将打包在512位向量中的CPM矩阵元素移动到2048位CPM存储行中。可以使用4:1多路复用器(mux)或A02222结构实施选项。
CPM矩阵储存器(5100)
如图51(5100)中大体所描绘的,CPM矩阵储存器在功能上是64个条目乘2048位行的两个存储体,总容量为262144位(32KiB)。每个存储体都有一个独立的读端口和一个独立的写端口。通常不提供从存储体中的写端口到读端口的旁路。C6、C7和C9流水线寄存器与CPM储存器集成在一起。
如图52(5200)中大体所描绘的,对CPM矩阵存储行的写入可以是在512位边界上对齐的512位,在1024位边界上对齐的1024位或2048位。常见情况是来自累加器逻辑的2048位写入。来自CPM矩阵存储行的读取可以是在512位边界上对齐的512位,在1024位边界上对齐的1024位或2048位。常见的情况是由X FSM发起的2048位读取,用于将CPM行移动通过结果处理并进入传输缓冲器,或者是2048位读取用于与行乘以矩阵(row-by-matrix)乘积进行累加。在物理上,CPM矩阵储存器被折叠并划分为2048位读取宽度的512位子字段。这简化了读取或写入512位粒度值的操作。然后将512位子字段折叠4次,使得每个子字段的触发宽度为128位,并且CPM矩阵储存器中的存储触发器的总宽度为512个触发宽度。CPM矩阵储存元件通常是时钟门控的标准单元可扫描触发器。读取路径以RTL写入,以映射到组合字线选择和触发器输出的AOI门,然后是NAND/NOR(与非/或非)简化树位线。
数据传输(X)FSM和数据路径
数据传输(X)FSM以及最终累加器和CPM矩阵储存器物理上位于干加法器阵列的中间。在x0流水线级中计算接下来的状态值,并且将与传输缓冲器相关的控制信号在布置图中垂直流水线化到传输缓冲器所在的接口和控制模块。在上文中参考图35(3500)-图36(3600)描述了与X FSM相关联的输出格式化和传输缓冲储存器。
示例基8矩阵乘法加速器乘法器(5300)
在许多实施例中,基本8x8有符号或无符号整数乘法器构建块是Booth编码的进位保存实施。有时Booth编码的乘数称为Booth乘数。Booth编码是一种减少乘法中部分积数量的技术,最早由Andrew D.Booth于1951年公布(“机械与应用数学季刊(The QuarterlyJournal of Mechanics and Applied Mathematics)”第四卷,第2部分中的“有符号二进制乘法技术(A Signed Binary Multiplication Technique)”,1951年)。
Booth编码背后的思想是将第一乘数操作数表示为由一小组系数缩放的数字等效的二的幂的和。在基8Booth编码器的情况下,系数是{-4,-3,-2,-1,0,1,2,3,4},这些系数缩放形式为2(3N)的二的幂。因为乘以二的幂的乘法可以实施为简单的移位操作,所以乘法问题已经简化为由小系数缩放的少量移位值的相加。
例如,考虑8位二进制2的补码值011101102,等于11810。应用Booth算法,可将其重新编码为(-2*20)+(-l*23)+(2*26),等于11810。因此,将任意值B乘以11810的乘法可以通过以下方式实现:(-2*B<<0)+(-1*B<<3)+(2*B<<6)其中<<是C编程语言左移操作符。
在基8Booth编码的情况下,仅需要计算一个非重要系数缩放(乘以3)。较高的基数导致较少的相加项,较大组的非重要系数。可选择特定的基数以优化加法的数量、与分配缩放的操作数相关联的布线量,以及存储器元件之间的逻辑电平的数量。
在常见的Booth编码乘法器设计中,存在若干子组件,如图53(5300)所描绘的。这些是Booth编码器(5321,5322,5323)、预乘法器(5330)、部分积多路复用器(5341,5342,5343)、乘法移位器(5351,5352)和加法器树(5360)Booth编码器(5321,5322,5323)实施Booth算法,以将第一操作数的位的范围映射到对应于所需系数的控制线。预乘法器(5330)产生乘以第二操作数的非重要系数组。部分积多路复用器(5341,5342,5343)响应于Booth编码系数控制,并选择第二操作数的适当值乘以Booth编码的系数。在通过表示每个Booth编码的系数的二的幂固定移位(5351,5352)偏移部分积之后,加法器树(5360)组合部分积多路复用器(5341,5342,5343)输出,称为部分积。加法器树5360的输出是乘法乘积5370。
加法器树(5360)构造可具有许多变型。由于串行加法的数量,使用3:2或4:2进位保存加法器或压缩器或4:2有符号数字冗余表示法的无进位加法是有用的。许多实施例在扩展二进制树中使用4:2进位保存压缩器,扩展二进制树包括部分积相加和点积相加,其完成计算每个结果矩阵元素的向量行列点积。
预乘的行操作数广播(5400)
在许多实施例中实现的矩阵乘法器中执行的计算导致各个乘法器构建块的一些简化。回想一下,当用右边的矩阵计算左边向量的内积时,得到的积向量的每个元素n是左边的向量(AMM)和右操作数矩阵(BMM)中的列n的点积。因为相同的左向量(AMM)用于右矩阵(BMM)的所有列,所以右矩阵(BMM)中的每一行乘以左向量(AMM)中的相同元素。如果向量元素(AMM)被视为图53(5300)中的第二操作数(5312),则可以从各个乘法器中移除预乘法器功能(5330),并且预乘法器的单个副本可以广播预乘值到处理来自右矩阵(BMM)的同一行元素的所有乘法器。在大型矩阵乘法阵列中,每个乘法器预乘法器的消除可提供有用的芯片面积和功率节省。
此外,如果该共享的预乘法器在一组乘法器的中间物理地实施并且处理来自右矩阵(BMM)的相同行,则可以构造平衡的重复器树,使得到达每一行元素乘数的时钟周期的数量是常数。恒定操作数到达时间简化了协调整个矩阵乘法阵列中的活动。图54(5400)说明了这种安排。这里可以看出,第二操作数被输入到预乘法器(5410),其输出然后被施加到左/右对称重复器存储体(5421,5422),然后被路由到对称构造的左对重复行乘法器(5431,5439,5441,5449)和右对重复行乘法器(5451,5459,5461,5469))。这种物理结构优化系统时序,降低动态功耗,并为RMM提供最佳的硅面积消耗。
示例模式/控制配置(5500)
虽然ACL/CPU和RMM之间的模式/控制接口配置可以采用许多形式,但是在示例实施例的范围内,以下模式/控制功能列表是可能的:
·标量位宽和有符号/无符号模式(每个个体AMM/BMM/CPM向量/矩阵实体中的位数量)(4,8,16,32,64,128,256等);
·用于CPM输出格式的右移计数(0...32);
·为CPM输出格式化启用的输出舍入(0...1);
·为CPM输出格式启用的饱和变换;
·为CPM输出格式启用的ReLU变换;
·启用输出查找转换表(LUT);
·启用输入查找转换表(LUT);
·用于结果存储的CPM总线写周期数量(1...4)(仅允许存储部分累加结果);
·BMM数据解译为正常(0)或转置(1);
·启用反馈路径,使BMM-下一个=CPM-前;
·启用反馈路径,使AMM-下一个=CPM-前;和
·启用反馈路径,使DSM-下一个=CPM-前。
该列表不是详尽的,并且在一些实施方式中,可以基于应用背景要求仅包括该列表的一部分。在一些实施例中,该列表的元素可以包含在RMM功能/操作码寄存器内。如何在一个实施例中编码该模式/控制功能的一般描绘大体在图55(5500)中描绘,其中在通过内部RMM逻辑(5530)执行数据路由和控制操作之前,对模式/控制寄存器(MCR)(5510)进行解码(5520)。在某些情况下,可以减少MCR中的位数和/或可以根据上面列出的那些消除或扩展一些模式/控制。
示例功能/操作码配置(5600)
虽然ACL/CPU和RMM之间的功能/操作码接口配置可以采用许多形式,但是在示例实施例的范围内,以下模式/控制功能列表是可能的:
·CPM=AMM*BMM;
·CPM+=AMM*BMM;
·CPM=-AMM*BMM;
·CPM+=-AMM*BMM;
·CPM=AMM*BMM+DSM;
·CPM+=AMM*BMM+DSM;
·CPM=-AMM*BMM+DSM;和
·CPM+=-AMM*BMM+DSM。
该列表不是详尽的,并且在一些实施方式中,可以基于应用背景要求仅包括该列表的一部分。在一些实施例中,该列表的元素可以包含在RMM模式/控制寄存器内。如何在示例性实施例中编码该指令集的一般描述大体在图56(5600)中描述,其中在由分层乘法阵列(UMA)(5630)执行的计算操作之前对功能/操作码寄存器(FOR)(5610)进行解码(5620)。
示例性能
在许多系统实施例中,RMM被配置为乘法器,其允许AMM[0,:]行向量乘以BMM[:,:]方形矩阵以产生CPM[0,:]点积行向量。在该配置中,可以顺序地加载多个AMM行向量以产生多个CPM[:,:]点积行向量。
该示例背景中的RMM计算行向量操作数AMM与矩阵操作数BMM的每列的向量点积,并将点积以一个时钟周期的吞吐量累加到矩阵CPM的行中。这些操作可以无限期地持续下去。
对于8位操作数,行向量AMM中有64个元素,方形矩阵BMM中有4096个元素,导致需要4096次乘法,并且等效为每个时钟周期4096次求和。在没有舍入或溢出的情况下完成中间点积求和。
对于16位操作数,行向量AMM中有32个元素,方形矩阵BMM中有1024个元素,导致需要1024次乘法,并且等效为每个时钟周期1024次求和。在没有舍入或溢出的情况下完成中间点积求和。
对于32位操作数,行向量AMM中有16个元素,方形矩阵BMM中有256个元素,导致需要256次乘法,并且等效为每个时钟周期256次求和。在没有舍入或溢出的情况下完成中间点积求和。
对于64位操作数,行向量AMM中有8个元素,方形矩阵BMM中有64个元素,导致需要64次乘法,并且等效为每个时钟周期64次求和。在没有舍入或溢出的情况下完成中间点积求和。
系统概述
该描述的系统可以广义地概括为可重新配置的矩阵乘法器(RMM)系统,包括:
(a)模式/控制寄存器(MCR);
(b)功能/操作码寄存器(FOR);
(c)外部存储器数据总线(EMB);
(d)数据转换缓冲器(DTB);
(e)本地存储器数据总线(LMB);
(f)A乘数矩阵(AMM)寄存存储器;
(g)B被乘数矩阵(BMM)寄存存储器;
(h)C乘积矩阵(CPM)寄存存储器;
(i)分层乘法阵列(HMA);和
(j)输出数据格式化器(ODF);
其中:
EMB将外部数据存储器(EDM)连接到DTB;
DTB将EMB连接到LMB;
LMB选择性地电耦合到AMM;
LMB选择性地电耦合到BMM;
LMB选择性地电耦合到CPM;
ODF将EMB与CPM连接;
EMB的外部存储器数据宽度(EMW)值等于2的E次幂,其中E是自然数;
LMB的本地存储器数据宽度(LMW)值等于2的L次幂的正整数倍,其中L是自然数;
EMW可被LMW均分,使得EMW与LMW的外部到本地总线宽度比值(ELR)是双多边形数;
LMW具有基于存储在MCR中的数据确定的值;
AMM包括具有至少一行的寄存存储器矩阵;
AMM在每行中具有等于EMW的多个数据位;
BMM包括BMM-前寄存存储器和BMM-后寄存存储器,每个存储器被组织为具有等于ELR值的行数的矩阵;
BMM在每个ELR行中具有等于EMW值的多个数据位;
CPM包括CPM-前寄存存储器和CPM-后寄存存储器,每个存储器被组织为具有至少一行的矩阵;
CPM在每行中具有等于EMW值的双多边形倍数的多个数据位;
HMA包括干阵列乘法器(SAM)模块的方形阵列;
每个SAM模块包括方形阵列的叶阵列乘法器(LAM)模块;
每个LAM模块包括方形阵列的8位x 8位乘法器(EEM)模块;
HMA根据存储在MCR中的数据重新配置AMM、BMM-前和CPM-前寄存存储器与SAM模块、LAM模块和EEM模块之间的数据路径互连;
HMA根据存储在FOR中的数据计算由SAM模块、LAM模块和EEM模块生成的乘法/累加寄存结果(MAR);
HMA计算包括AMM-前的一行和BMM-前的一列或更多列的同时点积,以产生最终的CPM-前行向量结果;
在HMA计算期间,BMM-后从LMB加载矩阵行;
ODF将包括先前计算的点积的CPM-后的寄存行结果从初始数据格式(IDF)变换为输出数据格式(ODF),以生成变换后的乘法/累加结果(TMR);
ODF包括在HMA计算期间将TMR传输到EMB的寄存器;
在每个HMA计算的交替周期期间,BMM-前和BMM-后将它们各自的功能交换,作为计算和数据传输寄存器;和
在每次HMA计算的交替周期期间,CPM-前和CPM-后将它们各自的功能交换,作为计算和数据传输寄存器。
该一般系统概述可以通过本文描述的各种元素来增强,以产生与该总体设计描述一致的各种各样的实施例。
方法概述
该描述的方法可以广义地概括为在可重新配置的矩阵乘法器(RMM)系统上操作的可重新配置的矩阵乘法器(RMM)方法,该系统包括:
(a)模式/控制寄存器(MCR);
(b)功能/操作码寄存器(FOR);
(c)外部存储器数据总线(EMB);
(d)数据转换缓冲器(DTB);
(e)本地存储器数据总线(LMB);
(f)A乘数矩阵(AMM)寄存存储器;
(g)B被乘数矩阵(BMM)寄存存储器;
(h)C乘积矩阵(CPM)寄存存储器;
(i)分层乘法阵列(HMA);和
(j)输出数据格式化器(ODF);
其中:
EMB将外部数据存储器(EDM)连接到DTB;
DTB将EMB连接到LMB;
LMB选择性地电耦合到AMM;
LMB选择性地电耦合到BMM;
LMB选择性地电耦合到CPM;
ODF将EMB与CPM连接;
EMB的外部存储器数据宽度(EMW)值等于2的E次幂,其中E是自然数;
LMB的本地存储器数据宽度(LMW)值等于2的L次幂的正整数倍,其中L是自然数;
EMW可被LMW均分,使得EMW与LMW的外部到本地总线宽度比值(ELR)是双多边形数;
LMW具有基于存储在MCR中的数据确定的值;
AMM包括具有至少一行的寄存存储器矩阵;
AMM在每行中具有等于EMW的多个数据位;
BMM包括BMM-前寄存存储器和BMM-后寄存存储器,每个存储器被组织为具有等于ELR值的行数量的矩阵;
BMM在每个ELR行中具有等于EMW值的多个数据位;
CPM包括CPM-前寄存存储器和CPM-后寄存存储器,每个存储器被组织为具有至少一行的矩阵;
CPM在每行中具有等于EMW值的双多边形倍数的多个数据位;
HMA包括方形阵列的干阵列乘法器(SAM)模块;
每个SAM模块包括方形阵列的叶阵列乘法器(LAM)模块;
每个LAM模块包括方形阵列的8位x 8位乘法器(EEM)模块;
其中该方法包括以下步骤:
(1)将一行或更多行BMM矩阵数据写入EMB;
(2)将BMM矩阵数据传输到BMM-前寄存存储器;
(3)将一行或更多行AMM矩阵数据写入EMB;
(4)将AMM矩阵数据传输到AMM寄存存储器;
(5)利用HMA,基于存储在MCR中的数据,重新配置AMM、BMM-前和CPM-前寄存存储器与SAM模块、LAM模块和EEM模块之间的数据路径互连;
(6)利用HMA,计算由SAM模块、LAM模块和EEM模块生成的乘法/累加寄存结果(MAR),其中HMA计算包括AMM-前的一行和BMM-前的一列或更多列的同时点积,以产生最终的CPM-前行向量结果;
(7)在HMA计算过程中将矩阵行从LMB传输到BMM-后;
(8)利用ODF,基于FOR中包含的寄存数据,将CPM-后的寄存结果从初始数据格式(IDF)转换为输出数据格式(ODF),以生成变换的乘法/累加结果(TMR);
(9)利用ODF,将TMR传输到EMB;
(10)在每次HMA计算的交替周期期间,将BMM-前和BMM-后各自的功能交换,作为计算和数据传输寄存器;和
(11)在每次HMA计算的交替周期期间,将CPM-前和CPM-后各自的功能交换,作为计算和数据传输寄存器。
该一般方法可以根据许多因素进行修改,其中在示例实施例的范围内重新排列和/或添加/删除步骤。在示例实施例的范围内,结合本文描述的各种系统集成该方法和其他方法是可能的。
系统/方法变体
在示例实施例中,构造的基本主题的各种变化。前面展示的示例并不代表可能的用法的整个范围。它们旨在引用一些几乎无限的可能性。
该基本系统和方法可以用各种辅助实施例来增强,包括但不限于:
·一种实施例,其中AMM被配置为具有单行EMW位的向量。
·一个实施例,其中EMW是512的自然数倍。
·一个实施例,其中CPM在每行中具有数量等于EMW值的四倍的数据位。
·一个实施例,其中LMW是8的自然数倍。
·一个实施例,其中LMB还包括多路复用器选择器,该多路复用器选择器被配置为选择性地启用从CPM-前寄存存储器中加载AMM-后寄存存储器。
·一个实施例,其中LMB还包括多路复用器选择器,该多路复用器选择器被配置为选择性地启用从CPM-前寄存存储器中加载BMM-后寄存存储器。
·一个实施例,其中LMB还包括多路复用器选择器,该多路复用器选择器被配置为选择性地启用将CPM-后寄存存储器存储到D求和矩阵(DSM)寄存存储器,HMA将该DSM寄存存储器与CPM-前寄存存储器求和。
·一个实施例,其中AMM包括具有N列的行向量,并且BMM包括尺寸为N行x N列的方形矩阵,其中N=2的P-1次幂(N=2(P-1)),其中P是多边形数。
·一个实施例,其中DTB还包括查找表(LUT),其被配置为转换在EMB和AMM之间传输的数据。
·一个实施例,其中ODF包括通过右移位器、整数舍入器、饱和格式化器或ReLU格式化器的顺序数据流,顺序数据流由存储在MCR中的数据控制。
·一个实施例,其中EMB被配置为从电耦合到外围数据源的硬件接口检索数据,该外围数据源选自由以下各项组成的组:相机;成像数据源;视频数据源;流视频源;音频数据源;流音频源;超声波数据源;超声波传感器;雷达数据源;雷达;加密数据源和加密的数据源。
·一个实施例,其中LMB还包括查找表(LUT),其被配置为将从EMB读取的数据转换为存储在AMM中的数据。
·一个实施例,其中LMB还包括查找表(LUT),其被配置为将从EMB读取的4位数据转换为存储在AMM中的8位数据。
·一个实施例,其中LMB包括无符号整数数据。
·一个实施例,其中LMB包括有符号整数数据。
·一种实施例,其中AMM包括行向量,BMM包括方形矩阵。
·一种实施例,其中LMB以行主顺序将数据传输到所述BMM。
·一个实施例,其中LMB以列主顺序将数据传输到所述BMM。
·一个实施例,其中LMB基于传输偏移寄存器(TOR)的内容将数据传输到所述BMM的在所述BMM中的偏移处。
·一个实施例,其中LMB可配置为同时向所述BMM和所述CMM传输数据。
·一个实施例,其中HMA重新配置所述AMM和所述LAM模块之间的数据路径互连,以将来自所述AMM的预缩放数据广播到所述LAM模块。
基于上文描述的元素的任何组合,其他实施例是可能的。
广义计算机可用介质
各种替代实施例可以实施为用于与计算机化计算系统一起使用的计算机程序产品。定义由示例实施例定义的功能的程序可以用任何适当的编程语言编写并以多种形式传输到计算机,包括但不限于:(a)永久存储在不可写存储介质(例如,只读存储器设备,诸如ROM或CD-ROM盘之类)上的信息;(b)可变地存储在可写存储介质(例如,软盘和硬盘驱动器)上的信息;和/或(c)通过诸如局域网、电话网络或诸如因特网的公共网络之类的通信介质传输到计算机的信息。当携带实施示例实施例的方法的计算机可读指令时,这种计算机可读介质表示替代的实施例。
如本文大体所示,示例实施例的系统可以包含各种计算机可读介质,其包括计算机可用介质,其中体现有计算机可读代码手段。与本文描述的各种处理相关联的软件可以体现在各种计算机可访问介质中,包括有形和非暂时形式的这种介质,从中加载软件和激活软件。
结论
已经公开一种可重新配置的矩阵乘法器(RMM)系统/方法,其允许紧密或松散地耦合到片上系统(SOC)环境中的监督控制处理器应用控制逻辑(ACL)。RMM提供C=A*B矩阵乘法运算,具有A乘数矩阵(AMM),B被乘数矩阵(BMM)和C乘积矩阵(CPM),以及C=A*B+D运算,其中D求和矩阵(DSM)表示先前乘法运算的结果或另一个先前定义的矩阵。RMM提供附加的CPM LOAD/STORE路径,允许计算/数据传输操作的重叠,并从先前计算的CPM结果向AMM或BMM操作数输入提供CPM数据反馈。RMM预期使用8、16和32位操作数可重新配置的矩阵数据以及512位外部存储器总线数据宽度和使用一系列RMM配置字(RCW)和流操作码功能(SOF)实施的指令控制单元(ICU)。
Claims (20)
1.一种可重新配置的矩阵乘法器系统,包括:
至少一个寄存器;
至少一个数据总线;
至少一个缓冲器;
至少一个存储器,具有A乘数矩阵寄存存储器,B被乘数矩阵寄存存储器和C乘积矩阵寄存存储器;
至少一个数据阵列,具有至少一个干阵列乘法器模块阵列,所述至少一个干阵列乘法器模块阵列包括至少一个叶阵列乘法器模块阵列;和
至少一个数据格式化器;
其中,所述至少一个寄存器、所述至少一个数据总线、所述至少一个缓冲器、所述至少一个存储器、所述至少一个数据阵列和所述至少一个数据格式化器被选择性地电耦合;
其中,B被乘数矩阵包括前B被乘数矩阵寄存存储器和后B被乘数矩阵寄存存储器,每个存储器被组织为具有多个行的矩阵;
其中,C乘积矩阵包括前C乘积矩阵寄存存储器和后C乘积矩阵寄存存储器,每个存储器被组织为具有至少一行的矩阵;
其中,基于存储在至少一个寄存器中的数据,所述至少一个数据阵列重新配置所述A乘数矩阵、前B被乘数矩阵和所述前C乘积矩阵寄存存储器和所述干阵列乘法器模块以及所述叶阵列乘法器模块之间的数据路径互连;
其中,基于存储在至少一个寄存器中的数据,所述至少一个数据阵列计算由所述干阵列乘法器模块以及所述叶阵列乘法器模块生成的乘法/累加寄存结果,所述计算包括前A乘数矩阵的行和所述前B被乘数矩阵的一列或更多列的同时点积,以产生得到的前C乘积矩阵行向量结果,同时所述后B被乘数矩阵在所述计算期间从至少一个数据总线加载矩阵行;
其中,所述至少一个数据格式化器将包含先前计算的点积的所述后C乘积矩阵的寄存行结果从初始数据格式变换为输出数据格式,以生成变换的乘法/累加结果,所述变换的乘法/累加结果存储在至少一个数据格式化器内的寄存器中,所述寄存器在所述计算过程中将所述变换的乘法/累加结果传输给所述至少一个数据总线;和
其中在每个计算的交替周期中,前B被乘数矩阵、前C乘积矩阵、后C乘积矩阵和后B被乘数矩阵交换它们各自的功能,作为计算和数据传输寄存器。
2.根据权利要求1所述的可重新配置的矩阵乘法器系统,其中所述A乘数矩阵被配置为具有单行外部存储器数据宽度值位的向量。
3.根据权利要求1所述的可重新配置的矩阵乘法器系统,其中外部存储器数据宽度值是512的自然数倍。
4.根据权利要求1所述的可重新配置的矩阵乘法器系统,其中所述至少一个数据总线是本地存储器数据总线,具有的本地存储器数据宽度值是8的自然数倍。
5.根据权利要求1所述的可重新配置的矩阵乘法器系统,其中所述至少一个数据总线还包括多路复用器选择器,所述多路复用器选择器被配置为选择性地启用从所述前C乘积矩阵寄存存储器加载后A乘数矩阵寄存存储器。
6.根据权利要求1所述的可重新配置的矩阵乘法器系统,其中,所述至少一个数据总线还包括多路复用器选择器,所述多路复用器选择器被配置为选择性地启用从所述前C乘积矩阵寄存存储器加载所述后B被乘数矩阵寄存存储器。
7.根据权利要求1所述的可重新配置的矩阵乘法器系统,其中,所述至少一个数据总线还包括多路复用器选择器,所述多路复用器选择器被配置为选择性地启用将所述后C乘积矩阵寄存存储器存储到D求和矩阵寄存存储器,通过所述至少一个数据阵列将所述前C乘积矩阵寄存存储器与所述D求和矩阵寄存存储器求和。
8.根据权利要求1所述的可重新配置的矩阵乘法器系统,其中,所述A乘数矩阵包括具有N列的行向量,并且所述B被乘数矩阵包括尺寸为N行x N列的方形矩阵,其中所述N=2的P减1次幂,其中所述P是多边形数。
9.根据权利要求1所述的可重新配置的矩阵乘法器系统,其中,所述至少一个缓冲器还包括查找表,其被配置为转换在外部存储器数据总线和A乘数矩阵之间传输的数据。
10.根据权利要求1所述的可重新配置的矩阵乘法器系统,其中,所述至少一个数据格式化器包括通过右移位器、整数舍入器、饱和格式化器或ReLU格式化器的顺序数据流,所述顺序数据流由存储在所述至少一个寄存器中的一个中的数据控制。
11.根据权利要求1所述的可重新配置的矩阵乘法器系统,其中,所述至少一个缓冲器以行主顺序将数据传输到所述B被乘数矩阵。
12.根据权利要求1所述的可重新配置的矩阵乘法器系统,其中,所述至少一个缓冲器以列主顺序将数据传输到所述B被乘数矩阵。
13.根据权利要求1所述的可重新配置的矩阵乘法器系统,其中,所述至少一个缓冲器基于传输偏移寄存器的内容将数据传输到所述B被乘数矩阵的所述B被乘数矩阵中的偏移处。
14.根据权利要求1所述的可重新配置的矩阵乘法器系统,其中,所述至少一个缓冲器可配置为同时将数据传输到所述B被乘数矩阵和所述C乘积矩阵。
15.根据权利要求1所述的可重新配置的矩阵乘法器系统,其中,所述至少一个数据阵列重新配置所述A乘数矩阵和叶阵列乘法器模块之间的数据路径互连,以将来自所述A乘数矩阵的预缩放的数据广播到所述叶阵列乘法器模块。
16.一种可重新配置的矩阵乘法器系统操作的方法,包括:
(1)将B被乘数矩阵的矩阵数据的一行或更多行写入至少一个数据总线;
(2)将所述B被乘数矩阵的矩阵数据传输到至少一个存储器;
(3)将A乘数矩阵的矩阵数据的一行或更多行写入至少一个数据总线;
(4)将所述A乘数矩阵的矩阵数据传输到至少一个存储器;
(5)利用至少一个数据阵列,基于存储在至少一个寄存器中的数据,重新配置所述A乘数矩阵、前B被乘数矩阵和前C乘积矩阵、至少一个存储器和至少一个干阵列乘法器模块、至少一个叶阵列乘法器模块之间的数据路径互连;
(6)利用至少一个数据阵列,计算由所述干阵列乘法器模块、所述叶阵列乘法器模块生成的乘法/累加寄存结果,其中所述至少一个数据阵列计算包括前A乘数矩阵的行与所述前B被乘数矩阵的一列或更多列的同时点积,以产生得到的前C乘积矩阵行向量结果;
(7)在所述至少一个数据阵列计算期间,将矩阵行从至少一个缓冲器传输到后B被乘数矩阵;
(8)利用至少一个数据格式化器,基于包含在至少一个寄存器中的寄存数据,将后C乘积矩阵的寄存结果从初始数据格式转换为输出数据格式,以生成变换的乘法/累加结果;
(9)利用所述至少一个数据格式化器,将所述变换的乘法/累加结果传输到所述至少一个数据总线;
(10)在每个所述至少一个数据阵列计算的交替周期期间,交换所述前B被乘数矩阵和所述后B被乘数矩阵的各自的功能,作为计算和数据传输寄存器;和
(11)在每个所述至少一个数据阵列计算的交替周期期间,交换所述前C乘积矩阵和所述后C乘积矩阵的各自的功能,作为计算和数据传输寄存器。
17.根据权利要求16所述的可重新配置的矩阵乘法器系统操作方法,其中,所述A乘数矩阵被配置为具有单行外部存储器数据宽度值位的向量。
18.根据权利要求16所述的可重新配置的矩阵乘法器系统操作方法,其中,外部存储器数据宽度值是512的自然数倍。
19.根据权利要求16所述的可重新配置的矩阵乘法器系统操作方法,其中,本地存储器数据宽度值是8的自然数倍。
20.根据权利要求16所述的可重新配置的矩阵乘法器系统操作方法,其中,所述至少一个数据总线还包括多路复用器选择器,其被配置为选择性地启用从所述前C乘积矩阵寄存存储器加载后A乘数矩阵寄存存储器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310507791.6A CN116522058A (zh) | 2017-02-28 | 2018-02-28 | 可重新配置的矩阵乘法器系统和方法 |
Applications Claiming Priority (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762464954P | 2017-02-28 | 2017-02-28 | |
US201762464964P | 2017-02-28 | 2017-02-28 | |
US62/464,964 | 2017-02-28 | ||
US62/464,954 | 2017-02-28 | ||
US201762465620P | 2017-03-01 | 2017-03-01 | |
US62/465,620 | 2017-03-01 | ||
US15/905,250 US10817587B2 (en) | 2017-02-28 | 2018-02-26 | Reconfigurable matrix multiplier system and method |
US15/905,250 | 2018-02-26 | ||
PCT/US2018/020283 WO2018160738A2 (en) | 2017-02-28 | 2018-02-28 | Reconfigurable matrix multiplier system and method |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310507791.6A Division CN116522058A (zh) | 2017-02-28 | 2018-02-28 | 可重新配置的矩阵乘法器系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110383237A CN110383237A (zh) | 2019-10-25 |
CN110383237B true CN110383237B (zh) | 2023-05-26 |
Family
ID=63246259
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310507791.6A Pending CN116522058A (zh) | 2017-02-28 | 2018-02-28 | 可重新配置的矩阵乘法器系统和方法 |
CN202410111920.4A Pending CN117932202A (zh) | 2017-02-28 | 2018-02-28 | 矩阵传输加速器系统和方法 |
CN201880013544.8A Active CN110383267B (zh) | 2017-02-28 | 2018-02-28 | 矩阵传输加速器系统和方法 |
CN201880014540.1A Active CN110383237B (zh) | 2017-02-28 | 2018-02-28 | 可重新配置的矩阵乘法器系统和方法 |
Family Applications Before (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310507791.6A Pending CN116522058A (zh) | 2017-02-28 | 2018-02-28 | 可重新配置的矩阵乘法器系统和方法 |
CN202410111920.4A Pending CN117932202A (zh) | 2017-02-28 | 2018-02-28 | 矩阵传输加速器系统和方法 |
CN201880013544.8A Active CN110383267B (zh) | 2017-02-28 | 2018-02-28 | 矩阵传输加速器系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (4) | US10817587B2 (zh) |
CN (4) | CN116522058A (zh) |
WO (2) | WO2018160773A1 (zh) |
Families Citing this family (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9841922B2 (en) * | 2016-02-03 | 2017-12-12 | SK Hynix Inc. | Memory system includes a memory controller |
CN117130661A (zh) * | 2017-03-20 | 2023-11-28 | 英特尔公司 | 用于点积操作的系统、方法和装置 |
US11113603B1 (en) | 2017-05-01 | 2021-09-07 | Perceive Corporation | Training network with discrete weight values |
US10809978B2 (en) * | 2017-06-02 | 2020-10-20 | Texas Instruments Incorporated | Merge sort accelerator |
JP6749358B2 (ja) * | 2018-03-19 | 2020-09-02 | 株式会社東芝 | 演算処理装置 |
US10621489B2 (en) | 2018-03-30 | 2020-04-14 | International Business Machines Corporation | Massively parallel neural inference computing elements |
US11049013B1 (en) | 2018-04-20 | 2021-06-29 | Perceive Corporation | Encoding of weight values stored on neural network inference circuit |
US11481612B1 (en) | 2018-04-20 | 2022-10-25 | Perceive Corporation | Storage of input values across multiple cores of neural network inference circuit |
US10740434B1 (en) | 2018-04-20 | 2020-08-11 | Perceive Corporation | Reduced dot product computation circuit |
US11586910B1 (en) | 2018-04-20 | 2023-02-21 | Perceive Corporation | Write cache for neural network inference circuit |
US11222257B1 (en) | 2018-04-20 | 2022-01-11 | Perceive Corporation | Non-dot product computations on neural network inference circuit |
US11210586B1 (en) | 2018-04-20 | 2021-12-28 | Perceive Corporation | Weight value decoder of neural network inference circuit |
US11568227B1 (en) | 2018-04-20 | 2023-01-31 | Perceive Corporation | Neural network inference circuit read controller with multiple operational modes |
US11361213B1 (en) | 2018-04-20 | 2022-06-14 | Perceive Corporation | Using lookup table to represent neural network activation function |
US11783167B1 (en) | 2018-04-20 | 2023-10-10 | Perceive Corporation | Data transfer for non-dot product computations on neural network inference circuit |
US20200073636A1 (en) * | 2018-08-31 | 2020-03-05 | Qualcomm Incorporated | Multiply-accumulate (mac) operations for convolutional neural networks |
US11216532B2 (en) * | 2018-09-26 | 2022-01-04 | Intel Corporation | Circuitry for high-bandwidth, low-latency machine learning |
US11307977B2 (en) * | 2018-09-27 | 2022-04-19 | Intel Corporation | Technologies for direct matrix read and write operations |
US11093580B2 (en) | 2018-10-31 | 2021-08-17 | Advanced Micro Devices, Inc. | Matrix multiplier with submatrix sequencing |
US11995533B1 (en) | 2018-12-05 | 2024-05-28 | Perceive Corporation | Executing replicated neural network layers on inference circuit |
US10818359B2 (en) | 2018-12-21 | 2020-10-27 | Micron Technology, Inc. | Apparatuses and methods for organizing data in a memory device |
US10838732B2 (en) | 2018-12-21 | 2020-11-17 | Micron Technology, Inc. | Apparatuses and methods for ordering bits in a memory device |
US20200210517A1 (en) * | 2018-12-27 | 2020-07-02 | Intel Corporation | Systems and methods to accelerate multiplication of sparse matrices |
KR20200082617A (ko) * | 2018-12-31 | 2020-07-08 | 삼성전자주식회사 | 메모리 장치를 이용한 계산 방법 및 이를 수행하는 메모리 장치 |
US11347297B1 (en) | 2019-01-23 | 2022-05-31 | Perceive Corporation | Neural network inference circuit employing dynamic memory sleep |
CN110147347B (zh) * | 2019-03-18 | 2023-01-06 | 腾讯科技(深圳)有限公司 | 用于矩阵处理的芯片、矩阵处理方法、装置及存储介质 |
US11625585B1 (en) | 2019-05-21 | 2023-04-11 | Perceive Corporation | Compiler for optimizing filter sparsity for neural network implementation configuration |
US11675998B2 (en) * | 2019-07-15 | 2023-06-13 | Meta Platforms Technologies, Llc | System and method for performing small channel count convolutions in energy-efficient input operand stationary accelerator |
TWI722491B (zh) * | 2019-07-16 | 2021-03-21 | 國立陽明交通大學 | 應用於神經網絡之四位元與八位元組合之分離式量化方法 |
CN110580519B (zh) * | 2019-08-19 | 2022-03-22 | 中国科学院计算技术研究所 | 一种卷积运算装置及其方法 |
US11934824B2 (en) * | 2019-09-05 | 2024-03-19 | Micron Technology, Inc. | Methods for performing processing-in-memory operations, and related memory devices and systems |
US11829729B2 (en) | 2019-09-05 | 2023-11-28 | Micron Technology, Inc. | Spatiotemporal fused-multiply-add, and related systems, methods and devices |
CN110688087B (zh) * | 2019-09-24 | 2024-03-19 | 上海寒武纪信息科技有限公司 | 数据处理器、方法、芯片及电子设备 |
CN112579971B (zh) * | 2019-09-29 | 2024-04-16 | 广州希姆半导体科技有限公司 | 矩阵运算电路、矩阵运算装置及矩阵运算方法 |
KR20210045224A (ko) | 2019-10-16 | 2021-04-26 | 삼성전자주식회사 | 데이터를 처리하는 방법 및 장치 |
KR102410166B1 (ko) * | 2019-11-27 | 2022-06-20 | 고려대학교 산학협력단 | 이종 곱셈-누셈 유닛을 이용하는 심층 신경망의 가속기 |
US11568021B2 (en) | 2020-02-21 | 2023-01-31 | Alibaba Group Holding Limited | Vector-vector multiplication techniques for processing systems |
US11797830B2 (en) | 2020-03-25 | 2023-10-24 | Western Digital Technologies, Inc. | Flexible accelerator for sparse tensors in convolutional neural networks |
US11462003B2 (en) * | 2020-03-25 | 2022-10-04 | Western Digital Technologies, Inc. | Flexible accelerator for sparse tensors in convolutional neural networks |
CN111489313B (zh) * | 2020-04-13 | 2023-10-31 | 湖南国科微电子股份有限公司 | 一种cfa图像去马赛克方法及装置 |
US11379557B2 (en) * | 2020-05-07 | 2022-07-05 | Meta Platforms, Inc. | Device and method for flexibly summing matrix values |
US11501151B2 (en) * | 2020-05-28 | 2022-11-15 | Arm Limited | Pipelined accumulator |
US11720328B2 (en) * | 2020-06-26 | 2023-08-08 | Advanced Micro Devices, Inc. | Processing unit with small footprint arithmetic logic unit |
US20210406018A1 (en) * | 2020-06-27 | 2021-12-30 | Intel Corporation | Apparatuses, methods, and systems for instructions for moving data between tiles of a matrix operations accelerator and vector registers |
US20220051086A1 (en) * | 2020-08-17 | 2022-02-17 | Alibaba Group Holding Limited | Vector accelerator for artificial intelligence and machine learning |
US11347652B2 (en) * | 2020-08-31 | 2022-05-31 | Microsoft Technology Licensing, Llc | Banked memory architecture for multiple parallel datapath channels in an accelerator |
US11526965B2 (en) * | 2020-09-28 | 2022-12-13 | Robert Bosch Gmbh | Multiplicative filter network |
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 |
US11748251B2 (en) | 2021-01-08 | 2023-09-05 | Microsoft Technology Licensing, Llc | Storing tensors in memory based on depth |
CN112862091B (zh) * | 2021-01-26 | 2022-09-27 | 合肥工业大学 | 一种基于快速卷积的资源复用型神经网络硬件加速电路 |
CN113077047B (zh) * | 2021-04-08 | 2023-08-22 | 华南理工大学 | 一种基于特征图稀疏性的卷积神经网络加速器 |
CN113220267B (zh) * | 2021-05-20 | 2022-04-19 | 西安电子科技大学 | 基于布斯编码位扩展的乘法器及实现方法 |
CN113345484A (zh) * | 2021-06-24 | 2021-09-03 | 苏州兆芯半导体科技有限公司 | 一种数据运算电路及存算一体芯片 |
CN114580628A (zh) * | 2022-03-14 | 2022-06-03 | 北京宏景智驾科技有限公司 | 一种神经网络卷积层的高效量化加速方法及硬件电路 |
CN117272893B (zh) * | 2023-11-21 | 2024-03-15 | 芯来智融半导体科技(上海)有限公司 | 芯片信号接收电路及方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN86106427A (zh) * | 1985-10-02 | 1987-07-29 | 国际标准电气公司 | 一种阵列重新配置设备以及特别适用于超大规模集成电路的方法 |
US5099447A (en) * | 1990-01-22 | 1992-03-24 | Alliant Computer Systems Corporation | Blocked matrix multiplication for computers with hierarchical memory |
CN1774709A (zh) * | 2002-12-20 | 2006-05-17 | 英特尔公司 | 使用simd寄存器的小矩阵有效乘法 |
CN102360276A (zh) * | 2010-12-03 | 2012-02-22 | 威盛电子股份有限公司 | 无进位乘法装置及其处理方法 |
CN106250103A (zh) * | 2016-08-04 | 2016-12-21 | 东南大学 | 一种卷积神经网络循环卷积计算数据重用的系统 |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4897717A (en) | 1988-03-30 | 1990-01-30 | Starsignal, Inc. | Computer-based video compression system |
US5519839A (en) | 1992-10-02 | 1996-05-21 | Compaq Computer Corp. | Double buffering operations between the memory bus and the expansion bus of a computer system |
US5745793A (en) | 1995-06-07 | 1998-04-28 | Seagate Technology, Inc. | Apparatus having a circular buffer that maintains a one entry gap between elements written to the microprocessor and elements operated on by the clock |
US5982375A (en) | 1997-06-20 | 1999-11-09 | Sun Microsystems, Inc. | Floating point processor for a three-dimensional graphics accelerator which includes single-pass stereo capability |
US7386046B2 (en) | 2001-02-13 | 2008-06-10 | Realtime Data Llc | Bandwidth sensitive data compression and decompression |
WO2004019159A2 (en) | 2002-08-20 | 2004-03-04 | Interdigital Technology Corporation | Efficient joint detection |
US8145785B1 (en) | 2004-02-13 | 2012-03-27 | Habanero Holdings, Inc. | Unused resource recognition in real time for provisioning and management of fabric-backplane enterprise servers |
US8977790B2 (en) * | 2008-02-15 | 2015-03-10 | Freescale Semiconductor, Inc. | Peripheral module register access methods and apparatus |
US8533251B2 (en) | 2008-05-23 | 2013-09-10 | International Business Machines Corporation | Optimized corner turns for local storage and bandwidth reduction |
US8250130B2 (en) | 2008-05-30 | 2012-08-21 | International Business Machines Corporation | Reducing bandwidth requirements for matrix multiplication |
KR101074010B1 (ko) | 2009-09-04 | 2011-10-17 | (주)이스트소프트 | 블록 단위 데이터 압축 및 복원 방법 및 그 장치 |
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 |
US9201701B2 (en) | 2010-07-16 | 2015-12-01 | Nokia Technologies Oy | Method and apparatus for distributing computation closures |
US9042440B2 (en) | 2010-12-03 | 2015-05-26 | Qualcomm Incorporated | Coding the position of a last significant coefficient within a video block based on a scanning order for the block in video coding |
US8433148B2 (en) | 2011-03-31 | 2013-04-30 | Mitsubishi Electric Research Laboratories, Inc. | Method for compressing textured images |
US9647731B2 (en) | 2011-10-20 | 2017-05-09 | Microelectronics Research & Development Corp. | Reconfigurable network on a chip (NoC) radio through reduced instruction set computer (RISC) agents by overwriting program store for different phases of demodulation |
JP5840994B2 (ja) * | 2012-03-27 | 2016-01-06 | 富士通株式会社 | 行列演算装置 |
US8847798B2 (en) | 2012-12-17 | 2014-09-30 | Maxeler Technologies, Ltd. | Systems and methods for data compression and parallel, pipelined decompression |
US9384168B2 (en) * | 2013-06-11 | 2016-07-05 | Analog Devices Global | Vector matrix product accelerator for microprocessor integration |
US10061675B2 (en) | 2013-07-15 | 2018-08-28 | Texas Instruments Incorporated | Streaming engine with deferred exception reporting |
US10078551B2 (en) | 2013-07-15 | 2018-09-18 | Texas Instruments Incorporated | Streaming engine with error detection, correction and restart |
US9606803B2 (en) | 2013-07-15 | 2017-03-28 | Texas Instruments Incorporated | Highly integrated scalable, flexible DSP megamodule architecture |
US10073696B2 (en) | 2013-07-15 | 2018-09-11 | Texas Instruments Incorporated | Streaming engine with cache-like stream data storage and lifetime tracking |
US10083035B2 (en) | 2013-07-15 | 2018-09-25 | Texas Instruments Incorporated | Dual data streams sharing dual level two cache access ports to maximize bandwidth utilization |
US10203958B2 (en) | 2013-07-15 | 2019-02-12 | Texas Instruments Incorporated | Streaming engine with stream metadata saving for context switching |
CN103714044A (zh) * | 2013-12-30 | 2014-04-09 | 南京大学 | 一种基于片上网络的高效率矩阵转置簇以及转置方法 |
US9645974B1 (en) * | 2015-03-11 | 2017-05-09 | Google Inc. | Optimized matrix multiplication using vector multiplication of interleaved matrix values |
US10114613B2 (en) | 2016-09-07 | 2018-10-30 | International Business Machines Corporation | Mixed-precision memcomputing system |
US20190266218A1 (en) | 2018-02-28 | 2019-08-29 | Wave Computing, Inc. | Matrix computation within a reconfigurable processor fabric |
-
2018
- 2018-02-26 US US15/905,250 patent/US10817587B2/en active Active
- 2018-02-27 US US15/907,042 patent/US10809933B2/en active Active
- 2018-02-28 CN CN202310507791.6A patent/CN116522058A/zh active Pending
- 2018-02-28 CN CN202410111920.4A patent/CN117932202A/zh active Pending
- 2018-02-28 WO PCT/US2018/020334 patent/WO2018160773A1/en active Application Filing
- 2018-02-28 CN CN201880013544.8A patent/CN110383267B/zh active Active
- 2018-02-28 CN CN201880014540.1A patent/CN110383237B/zh active Active
- 2018-02-28 WO PCT/US2018/020283 patent/WO2018160738A2/en active Application Filing
-
2020
- 2020-10-16 US US17/072,259 patent/US11403025B2/en active Active
-
2022
- 2022-07-29 US US17/877,518 patent/US20220365700A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN86106427A (zh) * | 1985-10-02 | 1987-07-29 | 国际标准电气公司 | 一种阵列重新配置设备以及特别适用于超大规模集成电路的方法 |
US5099447A (en) * | 1990-01-22 | 1992-03-24 | Alliant Computer Systems Corporation | Blocked matrix multiplication for computers with hierarchical memory |
CN1774709A (zh) * | 2002-12-20 | 2006-05-17 | 英特尔公司 | 使用simd寄存器的小矩阵有效乘法 |
CN102360276A (zh) * | 2010-12-03 | 2012-02-22 | 威盛电子股份有限公司 | 无进位乘法装置及其处理方法 |
CN106250103A (zh) * | 2016-08-04 | 2016-12-21 | 东南大学 | 一种卷积神经网络循环卷积计算数据重用的系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2018160738A2 (en) | 2018-09-07 |
WO2018160773A1 (en) | 2018-09-07 |
WO2018160738A3 (en) | 2018-10-11 |
US20220365700A1 (en) | 2022-11-17 |
US11403025B2 (en) | 2022-08-02 |
US20180246855A1 (en) | 2018-08-30 |
CN116522058A (zh) | 2023-08-01 |
US20210034277A1 (en) | 2021-02-04 |
US10809933B2 (en) | 2020-10-20 |
CN110383267B (zh) | 2024-02-13 |
US20180246669A1 (en) | 2018-08-30 |
CN110383267A (zh) | 2019-10-25 |
CN110383237A (zh) | 2019-10-25 |
CN117932202A (zh) | 2024-04-26 |
US10817587B2 (en) | 2020-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110383237B (zh) | 可重新配置的矩阵乘法器系统和方法 | |
EP3835942B1 (en) | Systems and methods for loading weights into a tensor processing block | |
Ebeling et al. | Mapping applications to the RaPiD configurable architecture | |
US8458442B2 (en) | Method and structure of using SIMD vector architectures to implement matrix multiplication | |
JP3573755B2 (ja) | 画像処理プロセッサ | |
US11328038B2 (en) | Computational units for batch normalization | |
CN111353126A (zh) | 分块矩阵乘法运算系统 | |
US10810281B2 (en) | Outer product multipler system and method | |
US11809798B2 (en) | Implementing large multipliers in tensor arrays | |
CN110955861A (zh) | 用于高带宽、低延迟机器学习的电路 | |
US20210326111A1 (en) | FPGA Processing Block for Machine Learning or Digital Signal Processing Operations | |
EP3841461B1 (en) | Digital circuit with compressed carry | |
EP3384376A1 (en) | Multi-functional execution lane for image processor | |
EP4206996A1 (en) | Neural network accelerator with configurable pooling processing unit | |
US11443014B1 (en) | Sparse matrix multiplier in hardware and a reconfigurable data processor including same | |
Chen et al. | BRAMAC: Compute-in-BRAM Architectures for Multiply-Accumulate on FPGAs | |
GB2614705A (en) | Neural network accelerator with configurable pooling processing unit | |
EP1936492A1 (en) | SIMD processor with reduction unit | |
US20220382514A1 (en) | Control logic for configurable and scalable multi-precision operation | |
GB2614327A (en) | Configurable pooling process unit for neural network accelerator | |
Hafdi | Mixed-precision architecture for flexible neural network accelerators | |
CN113031918A (zh) | 数据处理器、方法、装置及芯片 |
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 |