一种用于执行向量内积运算的装置和方法制造方法及图纸

技术编号:25598257 阅读:20 留言:0更新日期:2020-09-11 23:56
本公开提供了一种执行向量内积运算的装置及方法,其中装置包括指令存储单元和向量内积运算单元,存储单元中存储有向量,向量内积运算单元根据配套指令在寄存器单元中获取向量地址,然后,根据该向量地址在存储单元中获取相应的向量,接着,根据获取的向量进行向量内积,得到运算结果。本公开将参与计算的向量数据暂存在高速暂存存储器上,使得向量内积过程中可以更加灵活有效地支持不同宽度的数据,提升包含大量向量内积应用的执行性能。

【技术实现步骤摘要】
一种用于执行向量内积运算的装置和方法
本公开涉及一种向量内积运算装置及方法,用于根据向量内积运算指令高效灵活地执行向量内积,能够很好地解决当前计算机领域越来越多的算法包含大量向量内积的问题。
技术介绍
向量内积(dotproduct;scalarproduct,也称为点积)是接受在实数R上的两个向量并返回一个实数值标量的二元运算。它是欧几里得空间的标准内积。在数学运算领域,两个向量a=[a1,a2,…,an]和b=[b1,b2,…,bn]的内积定义为:a·b=a1b1+a2b2+……+anbn使用矩阵乘法并把(纵列)向量当作n×1矩阵,点积还可以写为:a·b=a^T*b其中,a^T表示矩阵a的转置。在已有的计算机领域应用中,与向量内积运算相关的应用十分普遍。以目前的热门应用领域人工智能中的主流算法机器学习算法为例,几乎所有已有的经典算法中都含有大量的向量内积。在现有技术中,一种进行向量内积的已知方案是使用通用处理器,该方法通过通用寄存器堆和通用功能部件来执行通用指令,从而执行向量内积。然而,该方法的缺点之一是单个通用处理器多用于标量计算,在进行向量内积时运算性能较低。而使用多个通用处理器并行执行时,通用处理器之间的相互通讯又有可能成为性能瓶颈。在另一种现有技术中,使用图形处理器(GPU)来进行向量计算,其中,通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来进行向量内积。然而,上述方案中,GPU片上缓存太小,在进行大规模向量内积时需要不断进行片外数据搬运,片外带宽成为了主要性能瓶颈。在另一种现有技术中,使用专门定制的向量内积装置来进行向量计算,其中,使用定制的寄存器堆和定制的处理单元进行向量内积。然而,目前已有的专用向量内积装置受限于寄存器堆,不能够灵活地支持不同长度的向量内积。公开内容(一)要解决的技术问题本公开的目的在于,提供一种向量内积装置及方法,解决现有技术中存在的受限于片间通讯、片上缓存不够、支持的向量长度不够灵活等问题。(二)技术方案本公开提供一种向量内积装置,用于根据向量内积运算指令执行向量内积,包括:存储单元,用于存储向量;寄存器单元,用于存储向量地址,其中,向量地址为向量在存储单元中存储的地址;向量内积运算单元,用于获取向量内积运算指令,根据向量内积运算指令在寄存器单元中获取向量地址,然后,根据该向量地址在存储单元中获取相应的向量,接着,根据获取的向量进行向量内积,得到向量内积结果。本公开还提供一种向量内积运算方法,用于根据向量内积运算指令执行向量内积运算,方法包括:通过存储单元存储向量;通过寄存器单元存储向量地址;通过向量内积运算单元获取向量内积运算指令,根据向量内积运算指令获取向量地址,然后,根据该向量地址获取存储的向量,接着,根据获取的向量进行向量内积运算,得到向量内积运算结果。(三)有益效果本公开提供的向量内积装置及方法,将参与计算的向量数据暂存在高速暂存存储器(ScratchpadMemory)上。在仅发送同一条指令的情况下,向量内积运算单元中可以更加灵活有效地支持不同宽度的数据,并可以解决数据存储中的相关性问题,从而提升了包含大量向量计算任务的执行性能,本公开采用的指令集使用方便、支持的向量长度灵活。本公开可以应用于以下(包括但不限于)场景中:数据处理、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、B超、心电图仪等各类医疗设备。附图说明图1是本公开提供的向量内积装置的结构示意图。图2是本公开提供的指令集的格式示意图。图3是本公开实施例提供的向量内积装置的结构示意图。图4是本公开实施例提供的向量内积装置执行向量内积运算指令的流程图。图5为本公开实施例提供的向量内积运算单元的结构示意图。具体实施方式本公开提供一种向量内积计算装置及方法,装置包括存储单元、寄存器单元和向量内积运算单元,存储单元中存储有向量,寄存器单元中存储有向量存储的地址,向量内积运算单元根据向量内积运算指令在寄存器单元中获取向量地址,然后,根据该向量地址在存储单元中获取相应的向量,接着,根据获取的向量进行向量内积,得到向量内积结果。本公开将参与计算的向量数据暂存在高速暂存存储器上,使得向量内积过程中可以更加灵活有效地支持不同宽度的数据,提升包含大量向量计算任务的执行性能。图1是本公开提供的向量内积装置的结构示意图,如图1所示,向量内积装置包括:存储单元,用于存储向量,在一种实施方式中,该存储单元可以是高速暂存存储器,能够支持不同大小的向量数据;本公开将必要的计算数据暂存在高速暂存存储器(ScratchpadMemory)上,使本运算装置在进行向量内积过程中可以更加灵活有效地支持不同宽度的数据。存储单元可以通过各种不同存储器件(SRAM、eDRAM、DRAM、忆阻器、3D-DRAM或非易失存储等)实现。寄存器单元,用于存储向量地址,其中,向量地址为向量在存储单元中存储的地址;在一种实施方式中,寄存器单元可以是标量寄存器堆,提供运算过程中所需的标量寄存器,标量寄存器不只存放向量地址,还存放有标量数据。当涉及到向量与标量的运算时,向量内积运算单元不仅要从寄存器单元中获取向量地址,还要从寄存器单元中获取相应的标量。向量内积运算单元,用于获取向量内积运算指令,根据向量内积运算指令在所述寄存器单元中获取向量地址,然后,根据该向量地址在存储单元中获取相应的向量,接着,根据获取的向量进行向量内积,得到向量内积结果,并将向量内积结果存储于存储单元中。向量内积运算单元包括加法部件和乘法部件,并且,向量内积运算单元为多流水级结构,其中,向量标量乘法部件处于第一流水级,向量加法部件处于第二流水级。这些单元处于不同的流水级,当连续串行的多条向量内积运算指令的先后次序与相应单元所在流水级顺序一致时,可以更加高效地实现这一连串向量内积运算指令所要求的操作。根据本公开的一种实施方式,向量内积装置还包括:指令缓存单元,用于存储待执行的向量内积运算指令。指令在执行过程中,同时也被缓存在指令缓存单元中,当一条指令执行完之后,如果该指令同时也是指令缓存单元中未被提交指令中最早的一条指令,该指令将被提交,一旦提交,该条指令进行的操作对装置状态的改变将无法撤销。在一种实施方式中,指令缓存单元可以是重排序缓存。根据本公开的一种实施方式,向量内积装置还包括:指令处理单元,用于从指令缓存单元获取向量内积运算指令,并对该向量内积运算指令进行处理后,提供给所述向量内积运算单元。其中,指令处理单元包括:取指模块,用于从指令缓存本文档来自技高网...

【技术保护点】
1.一种向量内积运算装置,包括:/n存储单元,用于存储向量;/n向量内积运算单元,用于/n获取向量内积运算指令,所述向量内积运算指令包括操作码和操作域,所述操作域用于指示该向量内积运算指令的数据信息,/n根据所述数据信息在所述存储单元中获取向量,/n根据获取的向量进行向量内积运算,得到向量内积运算结果。/n

【技术特征摘要】
1.一种向量内积运算装置,包括:
存储单元,用于存储向量;
向量内积运算单元,用于
获取向量内积运算指令,所述向量内积运算指令包括操作码和操作域,所述操作域用于指示该向量内积运算指令的数据信息,
根据所述数据信息在所述存储单元中获取向量,
根据获取的向量进行向量内积运算,得到向量内积运算结果。


2.根据权利要求1所述的装置,其特征在于,所述装置还包括:
寄存器单元,用于存储向量地址和/或向量长度;
所述操作域包括立即数或寄存器号;
所述根据数据信息在所述存储单元中获取向量,包括:
根据所述寄存器号,在所述寄存器单元中获取所述向量地址和所述向量长度,根据所述向量地址和所述向量长度在所述存储单元中获取所述向量地址存放的长度为所述向量长度的向量。


3.根据权利要求1所述的装置,其特征在于,
所述数据信息包括向量地址和向量长度;其中,所述向量地址为向量在所述存储单元中存储的地址,
所述根据所述数据信息在所述存储单元中获取向量,包括
根据所述向量地址和所述向量长度,在所述存储单元中获取所述向量地址存放的长度为所述向量长度的向量。


4.如权利要求1所述的装置,其特征在于,
所述向量内积运算指令包括一操作码和五个操作域,所述五个操作域分别对应第一个向量的起始地址、第一个向量的长度、第二个向量的起始地址、第二向量的长度和输出结果。


5.根据权利要求1-4中任一项所述的装置,其特征在于,所述装置还包括:
依赖关系处理单元,用于判断所述向量内积运算指令与之前指令是否存在依赖关系,以决定是否立即将所述向量内积运算指令发送至所述向量内积运算单元中执行。


6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
指令缓存单元,用于存储待执行的向量内积运算指令;和/或
指令处理单元,用于从所述指令缓存单元获取向量内积运算指令,并对所述向量内积运算指令进行处理后,提供给所述向量内积运算单元。


7.根据权利要求6所述的装置,其特征在于,所述指令缓存单元包括:
重排序缓存,用于在一条指令在执行过程中,也被缓存在所述重排序缓存中,当一条指令执行完之后,如果所述指令也是所述重排序缓存中未被提交的指令中最早的一条指令,则所述指令将被提交。


8.根据权利要求6所述的装置,其特征在于,所述指令处理单元包括:
取指模块,用于从所述指令缓存单元中获取所述向量内积运算指令;
译码模块,用于对获取的向量内积运算指令进行译码;
指令队列,用于对译码后的向量内积运...

【专利技术属性】
技术研发人员:支天郭崎刘少礼陈天石陈云霁
申请(专利权)人:中科寒武纪科技股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1