掌桥专利:专业的专利平台
掌桥专利
首页

用于矩阵乘法运算的矩阵的近似的数据压缩器

文献发布时间:2024-04-18 19:57:31


用于矩阵乘法运算的矩阵的近似的数据压缩器

相关申请的交叉引用

本申请要求2021年3月26日提交的名称为“DATA COMPRESSOR FOR APPROXIMATIONOF MATRICES FOR MATRIX MULTIPLY OPERATIONS(用于矩阵乘法运算的矩阵的近似的数据压缩器)”的待审美国非临时专利申请17/214,779号的权益,该申请全部内容据此以引用方式并入本文。本申请涉及2021年3月26日提交的名称为“APPROXIMATION OF MATRICES FORMATRIX MULTIPLY OPERATIONS(用于矩阵乘法运算的矩阵的近似)”的非临时申请17/214,784号,该申请以引用方式并入本文,如同充分阐述的一样。

背景技术

矩阵乘法是跨越多个应用领域的关键构建块,包括在高性能计算(HPC)和机器学习中的使用。矩阵乘法也用于卷积神经网络、递归神经网络和其他形式的人工神经网络。

矩阵乘法技术采用并行化来提高矩阵乘法的效率。例如,通常将两个矩阵划分成较小部分(例如,列、行以及列与行的部分),并且通过执行多个矩阵乘法计算来执行两个矩阵的矩阵乘法运算,每个矩阵乘法计算包括一个矩阵的一部分与另一矩阵的一部分的乘法。矩阵乘法计算被映射到处理器网络的不同处理器核心,并且由不同处理器核心执行以执行矩阵乘法运算。

附图说明

可以从以下描述中获得更详细的理解,通过示例结合附图给出,其中:

图1是可实现本公开的一个或多个特征的示例设备的框图;

图2是示出可实现本公开的一个或多个特征的处理器的示例性部件的框图;

图3是示出用于实现本公开的一个或多个特征的图2中所示的数据压缩器和MAC的示例部件的图;

图4是示出根据本公开的特征的选择用于矩阵乘法的数据的示例方法的流程图;

图5A示出根据本公开的特征的近似乘积指数值的数组的第一示例;

图5B示出根据本公开的特征的近似乘积指数值的数组的第二示例;

图5C示出根据本公开的特征的近似乘积指数值的数组的第三示例;

图5D示出根据本公开的特征的近似乘积指数值的数组的第四示例;并且

图6是示出根据本公开的特征的两个矩阵A和B以及输出矩阵C的部分矩阵乘法的示例的图。

具体实施方式

如本文所使用的,程序包括待使用一个或多个处理器执行以执行过程或例程(例如,操作、计算、功能、过程、作业)的指令序列。编程的指令和数据的处理包括多个处理阶段中的一个或多个处理阶段,诸如但不限于获取、解码、执行调度、执行和解码编程的指令和数据。编程的指令包括例如应用程序和控制程序,诸如操作系统。处理器包括例如多个处理核心(例如,计算单元(CU)),每个处理核心被配置为读取并执行程序指令,诸如执行矩阵乘法的指令。

矩阵乘法包括计算第一矩阵和第二矩阵的数据的子部分的点积。矩阵乘法运算包括计算C=A×B,其中A、B、C分别是大小为M×K、K×N和M×N的矩阵。矩阵C中的每个元素是矩阵A的行与矩阵B的列的点积。例如,乘法累加运算计算一对值的乘积,每个值对应于矩阵的一部分(例如,行、列、行或列的一部分,或多个行或列)的元素,并且使用称为乘数累加器(MAC)的硬件部件将乘积添加到累加器。例如,64×64乘积可实现为四个16×16MAC或八个8×8MAC。矩阵乘法通常涉及许多计算,这是耗时且昂贵的。

本申请提供用于有效地执行矩阵乘法的近似的设备和方法。本公开的特征包括数据压缩硬件,该数据压缩硬件被配置为通过沿着两个矩阵的公共维度K从待用于输入矩阵的矩阵乘法的点积计算的乘积中丢弃多个乘积(即,两个输入矩阵的元素对的乘积)来动态地确定输出矩阵。丢弃的乘积是近似为在待用于点积计算的乘积中具有最小指数和的乘积。

数据压缩硬件包括保留逻辑和多组多路复用器阵列。保留逻辑被配置为基于近似乘积指数值来确定保留位值,并且将该保留位值提供给多组多路复用器阵列,以用于确定将两个矩阵的数据元素的数组中的哪些元素保留(即,不被丢弃)并且提供给MAC以用于矩阵乘法。保留逻辑通过以下方式来确定待保留的每个矩阵的元素值的数组中的元素值的目标数量:对近似乘积指数值中的每一者的相同有效性的位值求和并且将该和与目标数量(例如,6)进行比较,从对乘积指数值的最高有效位(MSB)求和开始并且继续到每组对应的下一有效位。本公开的特征在无需首先根据乘积的值对输入数组的元素进行分类的情况下减少它们的数量,否则这在硬件中实现将是昂贵的。

例如,通过在64×64乘积值中保留最大的近似48个乘积值(即,丢弃最低的16个近似值),将64×64乘积减小为48×48乘积。举例来说,如果将64×64乘积实现为16×16MAC,则将四个16×16MAC减少为三个16×16MAC,从而导致执行任务的时间减少25%并且执行任务的能量成本减少。同样地,如果将64×64乘积实现为8×8MAC,则将八个8×8MAC减少为6个8×8MAC,从而也导致时间减少25%。待保留并且待提供给MAC以执行矩阵乘法的元素值的目标数量或者待从乘积值中丢弃的乘积值(即,丢弃的乘积值)的目标数量可为任何数量,并且基于运行时间期间的各种因素(诸如可由用于特定任务或应用程序的近似容忍的结果误差的量)来确定。例如,当用于机器学习训练时,被确定为待丢弃的乘积的目标数量是基于近似将对所得网络的精度的影响。还可基于公共维度K的大小来确定待丢弃的乘积值的目标数量。例如,基于试探法,对于较大的K值,可丢弃额外的乘积值,而对于较低的K值,可保留额外的乘积值并将其提供给MAC。

本公开的特征包括对各种不同的数据类型执行矩阵乘法,诸如浮点数据类型(例如,FP32、FP16和BF16格式)和整数数据类型(例如,int8格式)。

提供了一种处理设备,该处理设备包括被配置为存储数据的存储器和处理器。该处理器包括多个MAC,该多个MAC被配置为执行第一矩阵的元素与第二矩阵的元素的矩阵乘法。该处理器还包括多个逻辑器件,该多个逻辑器件被配置为对第一矩阵和第二矩阵的元素的乘积指数值的位的值求和,并且确定待保留以用于矩阵乘法的乘积指数值的保留位值。该处理器还包括多个多路复用器阵列,每个多路复用器阵列被配置为接收第一矩阵和第二矩阵的元素的位和保留位值,并且提供用于选择将第一矩阵和第二矩阵值的哪些元素提供给MAC以用于矩阵乘法的数据。

提供了一种处理设备,该处理设备包括被配置为存储数据的存储器和彼此通信的多个处理器核心。每个处理器核心包括:多个MAC,该多个MAC被配置为执行第一矩阵的元素和第二矩阵的元素的矩阵乘法;多个逻辑器件,该多个逻辑器件被配置为对第一矩阵和第二矩阵的元素的近似乘积指数的位的值求和,并且生成保留位值;以及多个多路复用器阵列,每个多路复用器阵列被配置为接收乘积指数和保留位值,并且提供用于选择将乘积指数中的哪些乘积指数提供给MAC以用于矩阵乘法的数据。

提供了一种用于矩阵乘法的处理设备,该处理设备包括被配置为执行第一矩阵的元素和第二矩阵的元素的矩阵乘法的多个MAC。该处理设备还包括多个逻辑器件,该多个逻辑器件被配置为对第一矩阵和第二矩阵的元素的乘积指数值的位的值求和,并且确定待保留以用于矩阵乘法的乘积指数值的保留位值。该处理设备进一步包括多个多路复用器阵列,每个多路复用器阵列被配置为接收乘积指数值和保留位值的位,并且提供用于选择将乘积指数中的哪些乘积指数提供给MAC以用于矩阵乘法的数据。

图1是可实现本公开的一个或多个特征的示例设备100的框图。设备100包括例如计算机、游戏设备、手持设备、机顶盒、电视、移动电话或平板计算机。设备100包括处理器102、存储器104、存储装置106、一个或多个输入设备108以及一个或多个输出设备110。设备100还任选地包括输入驱动器112和输出驱动器114。应当理解,设备100可包括图1中未示出的另外部件。

在各种另选方案中,处理器102包括任何加速处理设备,诸如中央处理单元(CPU)、图形处理单元(GPU)、位于同一管芯上的CPU和GPU、或一个或多个处理器核心,其中每个处理器核心可为CPU或GPU。在各种另选方案中,存储器104位于与处理器102相同的管芯上,或与处理器102分开定位。存储器104包括易失性或非易失性存储器,例如随机存取存储器(RAM),包括动态RAM(DRAM)或静态RAM(SRAM)。RAM包括例如高速缓存存储器、高速暂存存储器和寄存器。

存储装置106包括固定或可移动存储装置,例如硬盘驱动器、固态驱动器、光盘或闪存驱动器。输入设备108包括但不限于键盘、小键盘、触摸屏、触控板、检测器、麦克风、加速度计、陀螺仪、生物扫描仪或网络连接(例如,用于发射和/或接收无线IEEE 802信号的无线局域网卡)。输出设备110包括但不限于显示器、扬声器、打印机、触觉反馈设备、一个或多个灯、天线或网络连接(例如,用于发射和/或接收无线IEEE 802信号的无线局域网卡)。

输入驱动器112与处理器102和输入设备108通信,并允许处理器102从输入设备108接收输入。输出驱动器114与处理器102和输出设备110通信,并允许处理器102向输出设备110发送输出。应注意,输入驱动器112和输出驱动器114是任选的部件,并且如果输入驱动器112和输出驱动器114不存在,则设备100将以相同方式操作。

本文使用CU作为处理器核心的示例来描述本公开的特征。CU包括一个或多个单指令多数据(SIMD)单元,该一个或多个单指令多数据单元被配置为根据SIMD范式以并行方式在处理器102的请求下执行操作。SIMD范式是这样一种范式,其中多个处理元件共用单个程序控制流单元和程序计数器并由此执行相同的程序,但能够执行具有不同数据的该程序。在一个示例中,每个SIMD单元包括十六个通道,其中每个通道与SIMD单元中的其他通道同时执行相同的指令,但可执行具有不同数据的该指令。如果不是所有通道都需要执行给定指令,则可通过预测来关闭通道。还可使用预测来执行具有发散控制流的程序。更具体地,对于具有条件分支或其中控制流基于由单个通道执行的计算的其他指令的程序,预测对应于当前未被执行的控制流路径的通道,并且不同控制流路径的串行执行可实现任意控制流。由CU提供的并行性适合于矩阵乘法,诸如例如在图形相关操作(诸如像素值计算、顶点变换和其他图形操作)中使用的矩阵乘法。

图2是示出可实现本公开的一个或多个特征的图1中所示的处理器102的示例的框图。如图2中所示,处理器102包括多个CU 202。每个CU 202包括与对应的N级高速缓存204通信并且被配置为使用对应的N级高速缓存204来处理数据的N级(例如,1级)高速缓存控制器208。另选地,使用多个N级高速缓存控制器208(例如,用于每个CU 202的高速缓存控制器208或多个高速缓存控制器208,每个高速缓存控制器与一组CU 202通信)来处理数据。

如图2中所示,处理器102还包括与N+1级高速缓存206通信并且被配置为使用N+1级高速缓存206来处理数据的N+1级(例如,2级)高速缓存控制器210。另选地,使用与一个或多个对应的N+1级高速缓存通信的多个N+1级高速缓存控制器来处理数据。如图2中所示,高速缓存控制器210还与下一高速缓存级(例如,3级)和每个N级高速缓存控制器208通信。另外地或替代地,每个CU 202与不同类型的存储器104(诸如寄存器和高速暂存存储器)通信。

如图2中所示,每个CU 202还包括MAC 212和与MAC 212通信的数据压缩器214。MAC212被配置为计算矩阵的部分的元素对的乘积(例如,近似乘积指数值)并且累加(例如,存储)该乘积以执行矩阵乘法运算。

例如,通常将两个矩阵划分成较小部分(例如,列、行以及列与行的部分),并且通过执行多个矩阵乘法计算来执行两个矩阵的矩阵乘法运算,每个矩阵乘法计算包括一个矩阵的一部分与另一矩阵的一部分的乘法。矩阵乘法计算被映射到不同处理器核心(例如,CU202),并且由不同处理器核心执行以执行矩阵乘法运算。

图6中示出两个矩阵A和B以及输出矩阵C的部分矩阵乘法的示例。矩阵乘法运算包括计算C=A×B,其中A、B、C分别是大小为M×K、K×N和M×N的矩阵。矩阵C中的每个元素是矩阵A的行和矩阵B的列的点积。矩阵A和矩阵B在图6的顶部示出。例如,根据本公开的特征,通过以下方式来执行矩阵A与B的矩阵乘法的一部分:将矩阵B的元素数组602的4个元素602(1)至602(4)与矩阵B的数组604的4个对应的元素604(1)至604(4)的乘积值进行近似,以产生矩阵C的部分1(P1)中的结果。

尽管图6中的矩阵A和矩阵B的大小彼此不同,但是如果一个矩阵中的列的数量等于另一矩阵中的行的数量,则可对矩阵执行矩阵乘法运算。在图6中所示的示例中,矩阵A包括八列并且矩阵B包括8行。矩阵A和B中的列和行的数量仅为示例。根据本公开的特征,对满足用于矩阵乘法的一般规则的任何大小的矩阵执行矩阵乘法(例如,矩阵A中的列的数量等于矩阵B中的行的数量)。

如下文关于图3更详细描述的,数据压缩器214包括硬件电路,该硬件电路被配置为通过沿着两个矩阵的公共维度K从待用于输入矩阵的矩阵乘法的点积计算的乘积中丢弃多个乘积(即,两个输入矩阵的元素对的乘积)来动态地确定输出矩阵C。丢弃的乘积是近似为在待用于点积计算的乘积中具有最小指数和的乘积。

图3是示出用于实现本公开的一个或多个特征的图2中所示的数据压缩器214和MAC 212的示例部件的图。如图3中所示,数据压缩器214包括保留逻辑306、多组多路复用器阵列300,每组多路复用器阵列具有6个多路复用器。图3中所示的多路复用器的数量被用作用于从8个数据元素的数组中选择6个元素的示例。本公开的特征可包括不同数量的多路复用器,这取决于矩阵的部分的大小和待保留以用于矩阵乘法的目标乘积的数量。

保留逻辑306包括逻辑电路,诸如例如固定功能逻辑器件、算术电路、顺序逻辑器件(例如,触发器、计数器和寄存器)和可编程逻辑器件,它们被配置为对近似乘积值执行不同计算。保留逻辑306生成被提供给多组多路复用器阵列300的保留信号,以用于确定来自8个数据元素的数组的哪些6个元素待保留并且待提供给MAC 212以用于矩阵乘法。例如,如下文更详细描述的,使用保留逻辑306来对乘积指数的对应的有效位的值求和,从乘积指数值的最高有效位开始,并且将和中的每个和与乘积指数值的目标数量(例如,6)进行比较直到确定乘积指数值的目标数量为止。

图3中所示的每组多路复用器阵列300被配置为接收矩阵A的对应的8个元素值(即,A0至A7)中的每一者的相同有效位,并且被配置为接收由保留逻辑306确定的保留信号(K0至K7)。由多路复用器阵列300提供的输出值(例如,A’0、A’1、A’2、A’3、A’4和A’5)对应于被选择待提供给MAC 212以用于矩阵乘法的8个元素中的6个元素。被选择待保留的6个元素是当与来自第二矩阵B的6个对应的元素相乘时被确定为生成8个乘积值中的6个最大乘积值的元素。

该乘积值近似为2,自乘到操作数A和B的指数的和。然而,当MAC单元212进行精确乘法时,尾数值也被相乘并且这些值被四舍五入。结果,A和B的丢弃值的精确乘积中的一者或多者可能大于保留值,这对于应用程序(诸如机器学习)而言可能导致网络的精度的微小但可接受的降低。除此之外,执行矩阵乘法运算的时间减少(例如,如上所述的时间减少25%)超过了精度的可能的微小降低。

如图3中所示,使用N个阵列来接收矩阵A的8个元素值(A0至A7)中的每一者的相同有效位,其中N是每个元素值的位的数量。如果例如矩阵A的元素值中的每个元素值包括4个位,则将4组多路复用器阵列300用于矩阵A。每组多路复用器阵列300并行地接收元素的对应的有效位和来自保留逻辑306的保留信号。即,第一组多路复用器阵列接收矩阵A的8个元素值的最高有效位(即,第一位),第二组多路复用器阵列300接收矩阵A的8个元素值的下一最高有效位(即,第二位),第三组多路复用器阵列300接收矩阵A的8个元素值的第三位,以及第四组多路复用器阵列300接收矩阵A的8个元素值的最低有效位。

除此之外,数据压缩器214还包括多组多路复用器阵列300,该多组多路复用器阵列被配置为并行地接收元素值的对应的有效位和来自保留逻辑306的保留信号。因此,对于其中元素值(B0至B7)中的每个元素值包括4个位的示例,4组多路复用器阵列300也用于矩阵B。用于矩阵B的多组多路复用器阵列300的架构和用于矩阵B的多组多路复用器阵列300的功能与针对矩阵A示出和描述的多组多路复用器阵列300相同(除了用于矩阵B的多路复用器阵列300接收位和与矩阵B相关联的保留信号之外)。因此,用于矩阵B的多组多路复用器阵列的详细描述和图示因多余而被省略。

如图3中所示,每组多路复用器阵列300包括第一多路复用器阵列302和第二多路复用器阵列304。第一多路复用器阵列302包括6个多路复用器302(1)、302(2)、302(3)、302(4)、302(5)和302(6)。第二多路复用器阵列304包括6个多路复用器304(1)、304(2)、304(3)、304(4)、304(5)和304(6)。图3中所示的第一阵列302和第二阵列304中的多路复用器的数量仅用作矩阵的8个输入元素减少到6个输入元素的情况的示例。本公开的特征可使用具有任何数量的多路复用器的多路复用器阵列来实现。

如图3中所示,第一组多路复用器阵列300的第一阵列302中的每个多路复用器302(1)至302(6)接收来自矩阵A的第7元素值(A6)的位值和来自矩阵A的第8元素值(A7)的位值。第一阵列302中的每个多路复用器302(1)至302(6)还接收对应的U值(即,U0、U1、U2、U3、U4、U5),其中U0=K6(元素值A6的保留信号值),U1=K0&&U0(即,如果K0和K6都为1,则U1的值=1),U2=K1&&K0&&U0,U3=K2&&K1&&K0&&U0,U4=K3&&K2&&K1&&K0&&U0以及U5=K4&&K3&&K2&&K1&&K0&&U0。

第二阵列304中的每个多路复用器304(1)至304(6)接收来自矩阵A的对应的元素值(A0至A5)的位值以及对应的保留位值(即,K0至K5)。多路复用器阵列302和304的功能的示例在下文关于图4的框412至420描述。

图4是示出根据本公开的特征的选择用于矩阵乘法的数据的示例方法400的流程图。如上文所述,通常将两个矩阵划分成较小部分(例如,列、行以及列与行的部分),并且通过执行多个矩阵乘法计算来执行两个矩阵的矩阵乘法运算,每个矩阵乘法计算包括一个矩阵的一部分与另一矩阵的一部分的乘法。

图6中示出两个矩阵A和B以及输出矩阵C的部分矩阵乘法的示例。矩阵乘法运算包括计算C=A×B,其中A、B、C分别是大小为M×K、K×N和M×N的矩阵。矩阵C中的每个元素是矩阵A的行和矩阵B的列的点积。矩阵A和矩阵B在图6的顶部示出。例如,根据本公开的特征,通过以下方式来执行矩阵A与B的矩阵乘法的一部分:将矩阵B的元素数组602的4个元素602(1)至602(4)与矩阵B的数组604的4个对应的元素604(1)至604(4)的乘积值进行近似,以产生矩阵C的部分1(P1)中的结果。

尽管图6中的矩阵A和矩阵B的大小彼此不同,但是如果一个矩阵中的列的数量等于另一矩阵中的行的数量,则可对矩阵执行矩阵乘法运算。在图6中所示的示例中,矩阵A包括八列并且矩阵B包括8行。矩阵A和B中的列和行的数量仅为示例。根据本公开的特征,对满足用于矩阵乘法的一般规则的任何大小的矩阵执行矩阵乘法(例如,矩阵A中的列的数量等于矩阵B中的行的数量)。

返回参考图4,如在框402和404处所示,方法500包括接收(例如,通过CU 202的数据压缩器214)第一矩阵A的数据(数据A[8])的一部分和第二矩阵B的数据(数据B[8])的一部分。在图4中所示的示例中,数据的每个部分包括8个元素(即,值)。即,矩阵A的数据的8个元素被表示为图4中的数据A[8],并且矩阵B的数据的8个元素被表示为图4中的数据B[8]。然而,图4中所示的元素的数量只是示例。数据的部分可包括待提供给MAC 212以执行矩阵乘法的任何数量的元素。

第一矩阵和第二矩阵的数据的部分可为多种数据类型中的任一种,诸如例如整数数据类型(例如,int8格式)和浮点数据类型(例如,BF16格式)。表示每个元素的位的数量取决于浮点格式(例如,FP32、FP16、BF16)和正在使用的整数格式(例如,int8、int16、int32)。例如,对于浮点格式BF16,每个元素由16位表示,而每个指数由8位表示。

如在框406和408所示,方法300包括从第一矩阵A和第二矩阵B的数据的部分中的元素提取指数。即,从第一矩阵A的8个元素中的每个元素提取指数(在框406处示为“E

如果第一矩阵和第二矩阵的数据的部分的元素是浮点数据类型,则可仅从每个元素的指数位提取指数值。例如,如果元素是BF16格式,则第一位是符号位,位2至9是指数位,以及位10至16是尾数位。因此,可从位2至9的值中提取指数值。

如果第一矩阵A和第二矩阵B的数据的部分的元素是整数数据类型(int8),则通过以下方式来提取指数:确定数据(A

举例来说,如果第一矩阵(A

执行相同的过程以确定第一矩阵A的子部分的剩余7个元素(A[2-8])与第二矩阵B的子部分的对应的剩余7个元素(B[2-8])的近似乘积。

在框410处,将第一矩阵和第二矩阵的8个对应的元素对的乘积值(即,乘积)进行近似。即,将第一对应的元素对的乘积近似为矩阵A的第一元素与矩阵B的第一元素的所提取指数的和(即,E

使用保留逻辑306来分析近似乘积值E

现在使用图5A至图5D中所示的乘积指数值的4个不同数组的示例来描述分析近似乘积值E

对于图5A至图5D中所示的数组中的每个数组,确定哪些保留信号为真以及哪些保留值为假包括对乘积指数的对应的有效位的值求和,从乘积指数值的最高有效位开始,并且将和中的每个和与乘积指数值的目标数量(例如,当待保留A和B的8个值中的6个值时为6)进行比较直到保留位值的目标数量被确定为真为止。

例如,对于图5A中所示的8个乘积指数值的数组,对8个乘积指数值的MSB求和。在这种情况下,8个乘积指数值的MSB的和是6,这等于待保留的6个乘积指数值的目标数量。其中MSB是1的6个乘积指数值被确定为待保留的乘积指数值,并且对于其中MSB是1的乘积指数值而言保留位被设置为1。即,因为对于第1乘积指数值(E

对于图5B中所示的8个乘积指数值的数组,8个乘积指数值的MSB的和是8,其大于待保留的A和B的6个值的目标数量。当MSB的和大于6时,对8个乘积指数值的下一较低有效位求和。在这种情况下,以“11”开始的8个乘积指数值的下一较低有效位的(即,第2位)的和等于4。因此,以“11”开始的乘积指数值被识别为4个最大乘积指数值,并且对于以“11”开始的乘积指数值,对应的保留位被设置为1。即,因为第1乘积指数值(E

对于图5C中所示的8个乘积指数值的数组,8个乘积指数值的MSB的和是8,其大于待保留的输入矩阵A和B的6个值的目标数量。如上所述,当MSB的和大于6时,对8个乘积指数值的下一较低有效位求和。在这种情况下(其与上文针对图5B中所示的乘积指数值所描述的情况相同),8个乘积指数值的下一较低有效位(即,第2位)的和等于4。因此,以“11”开始的乘积指数值被识别为待保留的4个值。因此,对于以“11”开始的乘积指数值,K0、K1、K3和K7的保留位值被设置为1。但是因为4个最大乘积指数值比目标数量6小2,所以以“101”开始的乘积指数值被识别,并且对以“101”开始的乘积指数值的下一最低有效位(即,第3位)求和,并且将其与先前的和4相加。在这种情况下,以“101”开始的乘积指数值的第3位的和等于3,当与先前的和4相加时其等于7。因为总和7大于目标数量6,所以将以“1011”开始的8个乘积指数值的最低有效位(即,第4位)求和,这再次等于3,并且当与先前的和4相加时,其再次大于目标数量6。在这种情况下,因为没有更多的位待求和并且先前的和的总和大于目标数量,所以以“1011”开始的前2个乘积指数值(E

对于图5D中所示的8个乘积指数值的数组,8个乘积指数值的MSB的和是8,这大于待保留的6个乘积指数值的目标数量(这与上文针对图5B和图5C中所示的乘积指数值所描述的情况相同)。然而,在这种情况下,剩余的位中的每个位是零。在这种情况下,保留数组中的前6个乘积指数值。即,对于乘积指数值的目标数量中的任一者(例如,数组中的前6个值),保留位被设置为1。

用于第N位位置(例如,对应于图5至图5C中所示的值的第一位、第二位、第三位或第四位的位置)的保留逻辑306的硬件具体实施的示例如下:

数据输入I

总T

累计和A

启用E

//注释:丢弃8个值中的2个值

求逆V

限定Q

用于选择第N位置处的位的保留逻辑306的硬件具体实施的示例如下:

完成D

计数C

对于i=0至7

{

保留K

C

D

}

用于选择第-1位置(图5C和图5D中最低有效位右侧的位位置)处的位的保留逻辑306的硬件具体实施的示例如下:

完成D

计数C

对于I=0至7

{

K

C

D

}

保留i=∑K

然后对从矩阵A中选择的6个数据元素和从矩阵B中选择的6个数据元素执行矩阵乘法。除此之外,由矩阵乘法运算生成的信息可被显示在显示设备(例如,图1中的输出设备110)上。

应当理解,基于本文的公开内容,可能有许多变化。尽管上述特征和元素在特定组合中进行了描述,但每个特征或元素可以在没有其他特征和元素的情况下单独使用,或者在有或没有其他特征或元素的各种组合中使用。

所提供的方法可以在通用计算机、处理器或处理器核心中实现。举例来说,合适的处理器包括通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP核心相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路,任何其他类型的集成电路(IC)和/或状态机。可以通过使用处理的硬件描述语言(HDL)指令和包括网表的其他中间数据(能够存储在计算机可读介质上的此类指令)的结果来配置制造过程而制造此类处理器。此类处理的结果可以是掩码,然后在半导体制造过程中使用这些掩码来制造实现本公开的特征的处理器。

本文提供的方法或流程图可以在并入非暂态计算机可读存储介质中的计算机程序、软件或固件中实现,以供通用计算机或处理器执行。非暂态计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓存存储器、半导体存储器设备、磁性介质(诸如内部硬盘和可移动磁盘)、磁光介质和光学介质(诸如CD-ROM磁盘)以及数字多功能磁盘(DVD)。

相关技术
  • 一种基于近似4-2压缩器的近似乘法运算方法和近似乘法器
  • 一种基于近似4-2压缩器的近似乘法运算方法和近似乘法器
技术分类

06120116458686