技术摘要:
本披露提供了一种向量运算装置和计算方法,其中向量运算装置包括存储单元和向量运算单元,存储单元中存储有向量,向量运算单元根据向量运算指令获取向量地址,然后,根据该向量地址在存储单元中获取相应的向量,接着,根据获取的向量进行向量运算,得到向量运算结果。 全部
背景技术:
当前计算机领域有越来越多的算法涉及到向量运算,以人工神经网络算法为例, 多种神经网络算法中都含有大量的向量运算。在神经网络中,输出神经元的运算表达式为y =f(wx b),其中w是矩阵,x、b是向量,计算输出向量y的过程为矩阵w与向量x相乘,加上向 量b,然后对得到的向量进行激活函数运算(即对向量中的每个元素进行激活函数运算)。因 此,向量运算成为目前各种计算装置在设计之初都需要考虑的一个重要问题。 在现有技术中,一种进行向量运算的已知方案是使用通用处理器,该方法通过通 用寄存器堆和通用功能部件来执行通用指令,从而执行向量运算。然而,该方法的缺点之一 是单个通用处理器多用于标量计算,在进行向量运算时运算性能较低。而使用多个通用处 理器并行执行时,通用处理器之间的相互通讯又有可能成为性能瓶颈。 在另一种现有技术中,使用图形处理器(GPU)来进行向量计算,其中,通过使用通 用寄存器堆和通用流处理单元执行通用SIMD指令来进行向量运算。然而,上述方案中,GPU 片上缓存太小,在进行大规模向量运算时需要不断进行片外数据搬运,片外带宽成为了主 要性能瓶颈。 在另一种现有技术中,使用专门定制的向量运算装置来进行向量计算,其中,使用 定制的寄存器堆和定制的处理单元进行向量运算。然而,目前已有的专用向量运算装置受 限于寄存器堆,不能够灵活地支持不同长度的向量运算。
技术实现要素:
(一)要解决的技术问题 本披露的目的在于,提供一种向量运算装置,解决现有技术中存在的受限于片间 通讯、片上缓存不够、支持的向量长度不够灵活等问题。 (二)技术方案 本披露提供一种向量运算装置,用于根据向量运算指令执行向量运算,包括: 存储单元,用于存储向量; 向量运算单元,用于获取向量运算指令,根据向量运算指令在所述寄存器单元中 获取向量地址,然后,根据该向量地址在存储单元中获取相应的向量,接着,根据获取的向 量进行向量运算,得到向量运算结果。 进一步的,还包括:寄存器单元,用于存储向量地址,其中,所述向量地址为向量在 所述存储单元中存储的地址。 进一步的,还包括:指令缓存单元,用于存储待执行的向量运算指令。 进一步的,还包括:指令处理单元,用于从所述指令缓存单元获取向量运算指令, 9 CN 111580863 A 说 明 书 2/8 页 并对该向量运算指令进行处理后,提供给所述向量运算单元。 进一步的,所述指令处理单元包括:取指模块,用于从所述指令缓存单元中获取向 量运算指令;译码模块,用于对获取的向量运算指令进行译码;指令队列,用于对译码后的 向量运算指令进行顺序存储。 进一步的,还包括:依赖关系处理单元,用于在所述向量运算单元获取向量运算指 令前,判断该向量运算指令与前一向量运算指令是否访问相同的向量,若是,则等待前一向 量运算指令执行完毕后,将该向量运算指令提供给所述向量运算单元;否则,直接将该向量 运算指令提供给所述向量运算单元。 进一步的,当该向量运算指令与前一向量运算指令访问相同的向量时,所述依赖 关系处理单元将该向量运算指令存储在一存储队列中,待前一向量运算指令执行完毕后, 将存储队列中的该向量运算指令提供给所述向量运算单元。 进一步的,所述存储单元还用于存储所述向量运算结果。 进一步的,还包括:输入输出单元,用于将向量存储于所述存储单元,或者,从所述 存储单元中获取向量运算结果。 进一步的,所述存储单元为高速暂存存储器。 进一步的,所述向量运算指令包括一操作码和至少一操作域,其中,所述操作码用 于指示该向量运算指令的功能,操作域用于指示该向量运算指令的数据信息。 进一步的,所述向量运算单元包含包括向量加法部件、向量乘法部件和大小比较 部件。 进一步的,所述向量运算单元、非线性运算部件和向量标量乘法部件。 进一步的,所述向量运算单元为多流水级结构,其中,所述向量加法部件和向量乘 法部件处于第一流水级,大小比较部件处于第二流水级,非线性运算部件和向量标量乘法 部件处于第三流水级。 本披露还提供一种向量运算方法,用于根据向量运算指令执行向量运算,包括: 使用存储单元存储向量; 使用向量运算单元获取向量运算指令,根据向量运算指令获取向量地址,然后,根 据该向量地址获取相应的向量,接着,根据获取的向量进行向量运算,得到向量运算结果。 进一步的,还包括:使用寄存器单元存储向量地址,其中,所述向量地址为向量在 所述存储单元中存储的地址。 进一步的,还包括:使用指令缓存单元存储待执行的向量运算指令。 进一步的,还包括:使用指令处理单元获取向量运算指令,并对该向量运算指令进 行处理。 进一步的,使用指令处理单元从所述指令缓存单元获取向量运算指令,并对该向 量运算指令进行处理包括:使用取指模块获取向量运算指令;使用译码模块对获取的向量 运算指令进行译码;使用指令队列对译码后的向量运算指令进行顺序存储。 进一步的,还包括:使用依赖关系处理单元,在向量运算指令前,判断该向量运算 指令与前一向量运算指令是否访问相同的向量,若是,则等待前一向量运算指令执行完毕 后,将该向量运算指令提供给一向量运算单元;否则,直接将该向量运算指令提供给一向量 运算单元。 10 CN 111580863 A 说 明 书 3/8 页 进一步的,当该向量运算指令与前一向量运算指令访问相同的向量时,所述依赖 关系处理单元将该向量运算指令存储在一存储队列中,待前一向量运算指令执行完毕后, 将存储队列中的该向量运算指令提供给所述向量运算单元。 进一步的,还包括:使用存储单元存储所述向量运算结果。 进一步的,还包括:将向量存储于所述存储单元,或者,从存储单元中获取向量运 算结果。 进一步的,所述向量运算指令包括一操作码和至少一操作域,其中,所述操作码用 于指示该向量运算指令的功能,操作域用于指示该向量运算指令的数据信息。 (三)有益效果 本披露提供的向量运算装置,将参与计算的向量数据暂存在高速暂存存储器上 (Scratchpad Memory),使得向量运算过程中可以更加灵活有效地支持不同宽度的数据,提 升包含大量向量计算任务的执行性能。 附图说明 图1是本披露提供的向量运算装置的结构示意图。 图2是本披露提供的指令集的格式示意图。 图3是本披露实施例提供的向量运算装置的结构示意图。 图4是本披露实施例提供的向量运算装置执行向量点积指令的流程图。 图5为本披露实施例提供的向量运算单元的结构示意图。