使用显式寄存器的位矩阵乘法运算的制作方法

文档序号:9396838阅读:269来源:国知局
使用显式寄存器的位矩阵乘法运算的制作方法
【技术领域】
[0001] 本发明涉及具有数据重组功能的处理器,尤其涉及使用位矩阵乘法单元的处理 器。
【背景技术】
[0002] 位矩阵乘法单元("Bit-Matrix Multiply",BMM)能够实现重组指令单循环数据。 可具有多种类型的重组类型,实现处理数据单独位的重组。文章 [Yedidya Hilewitz公司 的"商用处理器的位矩阵乘法运算",2008年,特殊应用系统、建筑和处理器的IEEE国际会 议]中描述了 BMM单元的应用。
[0003] 事实上,所使用的BMM操作器带有选定常数值的其中一个操作数,以定义在另一 操作数内容上的特定操作。为第一操作数选择的常数能够转置关联于第二操作数的矩阵 行,即转置由行表示的字段。为第二操作数选择的常数能够转置关联于第一操作数的矩阵 列,即根据应用到矩阵所有行的相同模式的位转置。
[0004] 然而,当重组混合了多个矩阵数据时,BMM单元在有效性上具有限制。

【发明内容】

[0005] 总体上提供一种处理器,在其指令集中包括:位矩阵乘法指令,具有表示待相乘的 第一矩阵的第一双精度操作数;第二操作数,明确指定任意两个单精度工作寄存器,其联合 内容表示待相乘的第二矩阵;以及目的参数,明确指定用于联合包含表示相乘结果的矩阵 的任意两个单精度工作寄存器。
[0006] 所述处理器可包括单精度工作寄存器的寄存器文件(register file),配置来在 读取时联合双精度输出字段中的分别选定的两个寄存器的内容,并且在写入时将双精度输 入字段分到分别选定的两个寄存器中;位矩阵乘法单元,配置来接收以双精度字段形式的 两个被相乘矩阵并以双精度字段的形式将结果矩阵写入到寄存器文件;以及指令处理单 元,配置来执行位矩阵乘法器的指令:
[0007] -直接提供第一操作数,作为位矩阵乘法单元的两个被乘数中的第一个被乘数,
[0008] -使用第二操作数,以在寄存器文件中读取位矩阵乘法单元的第二个被乘数,以及
[0009] -使用目标参数,以将位矩阵乘法单元提供的结果写入到寄存器文件。
[0010] 可以进一步设置位矩阵乘法单元以通过提供对应于相乘结果的转置矩阵的双精 度结果来响应位矩阵乘法指令的变化。
[0011] 还可以提供一种位矩阵相乘的方法,包括以下步骤:用双精度字段表示位矩阵; 从在单精度工作寄存器的寄存器文件中读取分别选定的两个寄存器;联合已读的两个寄存 器内容以形成第一被乘矩阵;用第二被乘矩阵乘以第一被乘矩阵;将相乘结果分成两个单 精度字段;以及将两个单精度字段写入到寄存器文件的分别选定的两个寄存器中。
[0012] 所述方法可以进一步包括以下步骤:在位矩阵乘法指令的第一操作数中直接定义 第二被乘矩阵;定义用于在位矩阵乘法指令的第二操作数中形成第一被乘矩阵的寄存器; 以及定义用于在位矩阵乘法指令的目标参数中包含(holding)相乘结果的寄存器。
【附图说明】
[0013] 通过以下仅以示例性目的并且如附图所示的本发明的具体实施例的描述,其他优 点以及特征变得更加清楚和明显,其中:
[0014] 图1为设计用于处理8X8位矩阵的BMM单元的方框图;
[0015] 图2示出了 BMM单元的操作;
[0016] 图3为与特定结构的处理器寄存器文件相关联的BMM单元的方框图;
[0017] 图4示出了来自两个数据包的交错字段的操作;
[0018] 图5A到5C示出了执行用于处理图4的重组的特定BMM指令的不同阶段的数据;
[0019] 图6示出了两个数据包的位交错操作;以及
[0020] 图7A到7D示出了执行用于处理图6的重组的两个特定BMM指令的不同阶段的数 据。
【具体实施方式】
[0021] 图1为BMM单元的方框图。操作矩阵的形状总体是方形的并且符合由处理器管理 的精度格式中的一种。
[0022] 下面以32位处理器作为例,支持32位"单"精度和64位"双"精度。在上下文中, 矩阵为8X8位矩阵,用双精度字段(64位)表示每个矩阵。
[0023] BMM单元接收代表两个8 X 8位被乘矩阵MATa和MATb的两个64位字段A和B。通 过硬连电缆电路MMULT将矩阵MATa和MATb相乘,以产生8X8位的结果矩阵MATc。通过 BMM单元提供以64位字段C的形式的矩阵MATc。
[0024] 下面,考虑以下列方式存储形成表示矩阵的64位字段的字节:从矩阵的第一行到 第八行以权重增大的顺序进行排列,并且从矩阵的第一列到第八列以权重减小的顺序排列 每个字节的位。而且,如果用bji指示64位字段的权重i的字节的权重j的位,那么相应 的矩阵可表达为:
[0026] 如前所示,其中一个操作数接收的常数定义操作在另一变化操作数上的重组。如 果BMM单元通过为操作数A选择常数来执行AXB乘法运算,定义与操作数B相关联的矩阵 行的重组,即形成操作数B的字节。通过选择用于操作数B的常数,定义与操作数A相关联 的矩阵列的重组。接下来以举例方式而考虑通过使用用于操作数A的常数进行处理的情 况。
[0027] 特定常数与标识矩阵相关联,仅在第一对角线上包括1。对于表示64位操作数B 的8X8矩阵,例如用十六进制表达标识矩阵:
[0028] MID = 0x80 40 20 10 08 04 02 01
[0029] 常数的每一对数字代表字节或矩阵的行,对应于矩阵第一行的字节权重较小 (0x01) 〇
[0030] 根据该常数MID,可组成定义任意字节转置操作的十六进制常数Μ0Ρ。考虑操作数 和结果的字节权重自右向左从〇值开始增加。此时,如果常数MOP的位置i包含值OxXY, 其中OxXY为常数MID的位置j的内容,操作产生结果C,其位置i的字节接收第二操作数B 的位置j上的字节。
[0031] 图2通过一种实施例示出该功能。例如,第一操作数A接收常数Μ0Ρ,其权重为2 的字节包含值0x20。操作数B接收仏到B 7的八个字节。常数MOP中的值0x20的字节标识 标识矩阵MID中的权重5。在这种情况下,将操作数B的权重5的字节B5放置在结果C的 权重2处。
[0032] 根据该方式,可定义多个有用常数,例如:
[0033] 0x01 02 04 08 10 20 40 80 :将第二操作数B的字节顺序颠倒,
[0034] 0x80 40 08 04 20 10 02 01 :将形成操作数B的两个32位字段的16位字段相交 错,
[0035] 0x80 08 40 04 20 02 10 01 :交错两个形成操作数B的32位字段的字节等。
[0036] 由此可以通过适当构建用于操作数A的常数MOP进行相同操作数B中的所有字节 重组。然而,存在希望重组不适用于由BMM单元处理的矩阵的数据序列的数据的情况。数 据序列还可被分成多个矩阵尺寸的数据包,并且BMM单元可轮流处理各个数据包。如果两 个连续数据包的数据应被混合到一个相乘结果C,则可能需要传统结构来实现寄存器之间 的多个转换,以在提供到BMM单元之前准备操作数。
[0037] 图3为具有BMM单元的处理器的实施方式的局部方框图,其能够利用特定BMM指 令减少需要混合来自多个数据包的数据的指令循环次数。
[0038] 处理器包括工作寄存器文件REGS。寄存器的大小适合于处理器结构。在32位处 理器的上下文内,寄存器也具有32位大小,对应于单精度。反之,设计BMM单元以处理双精 度字段(64位)。寄存器文件被关联到控制电路CTRL,其被设计为同时向BMM单元提供作 为64位被乘数的寄存器对的内容。还可以设计控制电路以将双精度的相乘结果写入到寄 存器对当中。
[0039] 在设计为使用寄存器对处理双精度数据的传统处理器结构中,指令仅标识寄存器 对中的第一个寄存器。寄存器对中的第二个隐式地为寄存器文件的地址系统中的下一个寄 存器。而且,处理双精度数据的指令仅可标识偶数行寄存器,即奇数行寄存器被保留以与指 令标识的寄存器形成隐式的寄存器对。
[0040] 设计图3的结构以能够使指令明确地标识任意两个寄存器,从而形成包含双精度 字段的寄存器对。尤其提供BMM指令,以明确标识联合包含操作数的两个寄存器中的每一 个以及联合接收结果的两个寄存器中的每一个。
[0041] 更具体地,为了执行该类矩阵乘法运算C = Μ0ΡΧΒ,可提供以下BMM指令:
[0042] bmm$rx :$ry, MOP, $ri :$rj
[0043] 其中"$rx :$ry"表示待使用发接收结果C的两个寄存器地址;并且"紅i :$rj"表 示含有被乘数B的两个寄存器地址。没有的符号表示寄存器内容。符号"Μ0Ρ"表示传 送在指令中的立即(immediate)双精度常数,直接作为乘数A被提供到BMM单元。假设寄存 器对中的第一个寄存器包含权重最小的字节并且第二寄存器包含权重最大的字节。此时, 还以相同格式表达常数MOP -例如,如果选择的常数MOP等于MID标识矩阵,将用如下公式 表达:
[0044] MOP = 0x08040201 :0x80402010〇
[0045] 设计指令寄存器30以并行地将由bmm指令传送的寄存器地址($ri、$rj、$rx、$ry) 提供给控制电路CTRL,并且将操作数MOP作为被乘数A提供给BMM单元。设计控制电路以 联合寄存器紅i和紅j的内容,从而形成BMM单元的被乘数B,且将乘法运算的结果C分割 到两个寄存器紅X和(较小权重字节被分配到寄存器对中的第一个寄存器)。
[0046] 在一些结构中,bmm指令的操作数A还可如操作数B -样的寄存器类型,标识显式 寄存器对$ru :$rv。
[0047] 事实上,在多个处理器结构中,指令中的立即值被用作最后参数。优选地,使用如 下指令:
[0048] sbmm$rx :$ry,j,MOP
[0049] 其中
[0050] sbmm C,B,A
[0051
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1