CN108733625B - 运算装置及方法 - Google Patents

运算装置及方法 Download PDF

Info

Publication number
CN108733625B
CN108733625B CN201710256444.5A CN201710256444A CN108733625B CN 108733625 B CN108733625 B CN 108733625B CN 201710256444 A CN201710256444 A CN 201710256444A CN 108733625 B CN108733625 B CN 108733625B
Authority
CN
China
Prior art keywords
matrix
instruction
address information
unit
information
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
Application number
CN201710256444.5A
Other languages
English (en)
Other versions
CN108733625A (zh
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN201710256444.5A priority Critical patent/CN108733625B/zh
Priority to PCT/CN2017/101843 priority patent/WO2018192161A1/zh
Priority to CN201811413244.7A priority patent/CN109344965A/zh
Priority to CN201880001242.9A priority patent/CN109219821B/zh
Priority to EP24168317.6A priority patent/EP4372620A3/en
Priority to EP19199526.5A priority patent/EP3633526A1/en
Priority to CN201811423421.XA priority patent/CN109359736A/zh
Priority to EP19199524.0A priority patent/EP3627437B1/en
Priority to CN201811423295.8A priority patent/CN109409515B/zh
Priority to EP18780474.5A priority patent/EP3579150B1/en
Priority to PCT/CN2018/081929 priority patent/WO2018184570A1/zh
Priority to EP19199521.6A priority patent/EP3620992B1/en
Priority to EP19199528.1A priority patent/EP3624018B1/en
Publication of CN108733625A publication Critical patent/CN108733625A/zh
Priority to US16/283,711 priority patent/US10896369B2/en
Priority to US16/520,041 priority patent/US11551067B2/en
Priority to US16/520,082 priority patent/US11010338B2/en
Priority to US16/520,615 priority patent/US10671913B2/en
Priority to US16/520,654 priority patent/US11049002B2/en
Application granted granted Critical
Publication of CN108733625B publication Critical patent/CN108733625B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30083Power or thermal control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Neurology (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本公开属于计算机、高等数学领域,更具体地涉及一种运算装置及方法。本公开提出的装置及方法,可以实现使用一条单独指令在常数时间复杂度内完成任意大小矩阵的运算。相比较传统的运算操作实现方法,在降低操作时间复杂度的同时也使运算操作的使用更为简单高效。

Description

运算装置及方法
技术领域
本公开属于计算机、高等数学领域,更具体地涉及一种运算装置及方法。
背景技术
矩阵转置运算是各领域中使用频率很高的一种基本数学运算,它的定义是对一个矩阵进行处理,使其行与列互相交换。当前阶段,使用计算机进行这一操作的通常方法为利用通用处理器编写两层循环,其时间复杂度为O(n^2)。这样时间复杂度的矩阵转置运算在复杂系统中会成为提高性能的瓶颈之一,尤其是在矩阵元素量很大的情况下。
发明内容
基于以上问题,本公开的目的在于提出一种运算装置及方法,用于解决以上技术问题的至少之一。
为了达到上述目的,作为本公开的一个方面,本公开提出一种运算装置,包括地址存储模块、运算控制模块、运算模块和数据存储模块,其中:
地址存储模块,用于存储运算矩阵的地址信息;
数据存储模块,用于存储原始矩阵数据,并存储运算后的转置矩阵;
运算控制模块,用于从地址存储模块提取运算矩阵的地址信息,并根据运算矩阵的地址信息分析得到分块信息;
运算模块,用于从运算控制模块获取运算矩阵的地址信息及分块信息,根据运算矩阵的地址信息从数据存储模块提取运算矩阵,并根据分块信息对运算矩阵进行分块、转置及合并运算,得到运算矩阵的转置矩阵,并将运算矩阵的转置矩阵反馈至数据存储模块。
进一步地,上述运算模块包括矩阵分块单元、矩阵运算单元和矩阵合并单元,其中:
矩阵分块单元:用于从运算控制模块获取运算矩阵的地址信息及分块信息,并根据运算矩阵的地址信息从数据存储模块提取运算矩阵,根据分块信息对运算矩阵进行分块,得到n个分块矩阵;
矩阵运算单元,用于获取n个分块矩阵,并对n个分块矩阵进行转置运算,得到n个分块矩阵的转置矩阵;
矩阵合并单元,用于获取并合并n个分块矩阵的转置矩阵,得到运算矩阵的转置矩阵,并将运算矩阵的转置矩阵反馈至数据存储模块,其中,n为自然数。
进一步地,上述运算模块还包括缓存单元,用于缓存n个分块矩阵,以供矩阵运算单元获取。
进一步地,上述运算控制模块包括指令处理单元、指令缓存单元和矩阵判断单元,其中:
指令缓存单元,用于存储待执行的矩阵运算指令;
指令处理单元,用于从指令缓存单元中获取矩阵运算指令,对矩阵运算指令进行译码,并根据译码后的矩阵运算指令从地址存储模块中提取运算矩阵的地址信息;
矩阵判断单元,用于对运算矩阵的地址信息进行分析,得到分块信息。
进一步地,上述运算控制模块还包括依赖关系处理单元,用于判断译码后的矩阵运算指令和运算矩阵的地址信息是否与上一运算存在冲突,若存在冲突,则暂存译码后的矩阵运算指令和运算矩阵的地址信息;若不存在冲突,则发射译码后的矩阵运算指令和运算矩阵的地址信息至矩阵判断单元。
进一步地,上述运算控制模块还包括指令队列,用于缓存存在冲突的译码后的矩阵运算指令和运算矩阵的地址信息,当冲突消除后,将所缓存的译码后的矩阵运算指令和运算矩阵的地址信息发射至矩阵判断单元。
进一步地,上述指令处理单元包括取指单元和译码单元,其中:
取指单元,用于从指令缓存单元中获取矩阵运算指令,并将此矩阵运算指令传输至译码单元;
译码单元,用于对矩阵运算指令进行译码,根据该译码后的矩阵运算指令从地址存储模块中提取运算矩阵的地址信息,并将译码后的矩阵运算指令和提取的运算矩阵的地址信息传输至依赖关系处理单元。
进一步地,上述装置还包括输入输出模块,用于向数据存储模块输入原始矩阵数据,还用于从数据存储模块获取运算后的转置矩阵,并输出所述运算后的转置矩阵。
进一步地,上述地址存储模块包括标量寄存器堆或通用内存单元;数据存储模块包括高速暂存存储器或通用内存单元;运算矩阵的地址信息为矩阵的起始地址信息和矩阵大小信息。
为了达到上述目的,作为本公开的另一个方面,本公开提出一种运算方法,包括以下步骤:
步骤1、运算控制模块从地址存储模块提取运算矩阵的地址信息;
步骤2、运算控制模块根据运算矩阵的地址信息得到分块信息,并将运算矩阵的地址信息和分块信息传输至运算模块;
步骤3、运算模块根据运算矩阵的地址信息从数据存储模块提取运算矩阵;并根据分块信息将运算矩阵分成n个分块矩阵;
步骤4、运算模块对n个分块矩阵分别进行转置运算,得到n个分块矩阵的转置矩阵;
步骤5、运算模块合并n个分块矩阵的转置矩阵,得到运算矩阵的转置矩阵并反馈至数据存储模块;
其中,n为自然数。
本公开提出的矩阵装置运算装置及方法,由于可以对运算矩阵进行分块,通过对多个分块矩阵分别进行转置运算得到多个分块矩阵的转置矩阵,最终对多个分块矩阵的转置矩阵进行合并,得到运算矩阵的转置矩阵,因此可以实现使用一条单独指令在常数时间复杂度内完成任意大小矩阵的转置操作。相比较传统的矩阵转置操作实现方法,在降低操作时间复杂度的同时也使矩阵转置操作的使用更为简单高效。
附图说明
图1是本公开提出的运算装置的结构示意图;
图2是本公开提出的运算装置的信息流示意图;
图3是本公开提出的运算装置中运算模块的结构示意图;
图4是本公开提出的运算装置中运算控制模块的结构示意图;
图5是本公开一实施例提出的运算装置的详细结构示意图;
图6是本公开另一实施例提出的运算方法的流程图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开作进一步的详细说明。
如图1~2所示,本公开公开了一种运算装置,包括地址存储模块、运算控制模块、运算模块和数据存储模块,其中:
地址存储模块,用于存储运算矩阵的地址信息;
数据存储模块,用于存储原始矩阵数据,并存储运算后的转置矩阵;
运算控制模块,用于从地址存储模块提取运算矩阵的地址信息,并根据运算矩阵的地址信息分析得到分块信息;
运算模块,用于从运算控制模块获取运算矩阵的地址信息及分块信息,根据运算矩阵的地址信息从数据存储模块提取运算矩阵,并根据分块信息对运算矩阵进行分块、转置及合并运算,得到运算矩阵的转置矩阵,并将运算矩阵的转置矩阵反馈至数据存储模块。
如图3所示,在本公开的一些实施例中,上述运算模块包括矩阵分块单元、矩阵运算单元和矩阵合并单元,其中:
矩阵分块单元:用于从运算控制模块获取运算矩阵的地址信息及分块信息,并根据运算矩阵的地址信息从数据存储模块提取运算矩阵,根据分块信息对运算矩阵进行分块运算得到n个分块矩阵;
矩阵运算单元,用于获取n个分块矩阵,并对n个分块矩阵分别进行转置运算,得到n个分块矩阵的转置矩阵;
矩阵合并单元,用于获取并合并n个分块矩阵的转置矩阵,得到运算矩阵的转置矩阵,其中,n为自然数。
在本公开的一些实施例中,上述运算模块还包括缓存单元,用于缓存n个分块矩阵,以供矩阵运算单元获取。
在本公开的一些实施例中,上述矩阵合并单元还具有缓存功能,用于暂时存储获取的分块矩阵的转置矩阵,当矩阵运算单元完成所有分块矩阵的运算后,矩阵合并单元即可获取到所有分块矩阵的转置矩阵,再对n个分块矩阵的转置矩阵进行合并操作,得到转置后的矩阵,并将输出结果写回到数据存储模块中。
如图4所示,在本公开的一些实施例中,上述运算控制模块包括指令处理单元、指令缓存单元和矩阵判断单元,其中:
指令缓存单元,用于存储待执行的矩阵运算指令;
指令处理单元,用于从指令缓存单元中获取矩阵运算指令,对矩阵运算指令进行译码,并根据译码后的矩阵运算指令从地址存储模块中提取运算矩阵的地址信息;
矩阵判断单元,用于根据运算矩阵的地址信息判断是否需要进行分块,并根据判断结果得到分块信息。
在本公开的一些实施例中,上述运算控制模块还包括依赖关系处理单元,用于判断译码后的矩阵运算指令和运算矩阵的地址信息是否与上一运算存在冲突,若存在冲突,则暂存译码后的矩阵运算指令和运算矩阵的地址信息;若不存在冲突,则发射译码后的矩阵运算指令和运算矩阵的地址信息至矩阵判断单元。
在本公开的一些实施例中,上述运算控制模块还包括指令队列,用于缓存存在冲突的译码后的矩阵运算指令和运算矩阵的地址信息,当所述冲突消除后,将所缓存的译码后的矩阵运算指令和运算矩阵的地址信息发射至矩阵判断单元。
具体地,矩阵运算指令访问数据存储模块时,前后指令可能会访问同一块存储空间,为了保证指令执行结果的正确性,当前指令如果被检测到与之前的指令的数据存在依赖关系,该指令必须在指令队列内等待至依赖关系被消除。
在本公开的一些实施例中,上述指令处理单元包括取指单元和译码单元,其中:
取指单元,用于从指令缓存单元中获取矩阵运算指令,并将此矩阵运算指令传输至译码单元;
译码单元,用于对矩阵运算指令进行译码,根据该译码后的矩阵运算指令从地址存储模块中提取运算矩阵的地址信息,并将译码后的矩阵运算指令和提取的运算矩阵的地址信息传输至所述依赖关系处理单元。
在本公开的一些实施例中,上述运算装置还包括输入输出模块,用于向数据存储模块输入原始矩阵数据,还用于从数据存储模块获取运算后的转置矩阵,并输出运算后的转置矩阵。
在本公开的一些实施例中,上述运算矩阵的地址信息为矩阵的起始地址信息和矩阵大小信息。
在本公开的一些实施例中,运算矩阵的地址信息是矩阵在数据存储单元中的存储地址。
在本公开的一些实施例中,地址存储模块为标量寄存器堆或通用内存单元;数据存储模块为高速暂存存储器或通用内存单元。
在本公开的一些实施例中,地址存储模块可以是标量寄存器堆,提供运算过程中所需的标量寄存器,标量寄存器不只存放矩阵地址,还可存放有标量数据。当对大规模矩阵进行转置时进行了分块操作后,标量寄存器中的标量数据可以用于记录矩阵块的数量。
在本公开的一些实施例中,数据存储模块可以是高速暂存存储器,能够支持不同大小的矩阵数据。
在本公开的一些实施例中,矩阵判断单元用于判断矩阵大小,如果超过规定的最大规模M,则需要对矩阵进行分块操作,矩阵判断单元根据此判断结果分析得到分块信息。
在本公开的一些实施例中,指令缓存单元,用于存储待执行的矩阵运算指令。指令在执行过程中,同时也被缓存在指令缓存单元中,当一条指令执行完之后,如果该指令同时也是指令缓存单元中未被提交指令中最早的一条指令,该指令将被提交,一旦提交,该条指令进行的操作对装置状态的改变将无法撤销。该指令缓存单元可以是重排序缓存。
在本公开的一些实施例中,矩阵运算指令为矩阵转置运算指令,包括操作码和操作域,其中,操作码用于指示该矩阵转置运算指令的功能,矩阵运算控制模块通过识别该操作码确认进行矩阵转置操作,操作域用于指示该矩阵转置运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,例如,要获取一个矩阵时,根据寄存器号可以在相应的寄存器中获取矩阵起始地址和矩阵规模,再根据矩阵起始地址和矩阵规模在数据存储模块中获取相应地址存放的矩阵。
综上所述,本公开使用一种新的运算结构简单高效的实现对矩阵的转置运算,降低了这一运算的时间复杂度。
本公开还公开了一种运算方法,包括以下步骤:
步骤1、运算控制模块从地址存储模块提取运算矩阵的地址信息;
步骤2、运算控制模块根据运算矩阵的地址信息得到分块信息,并将运算矩阵的地址信息和分块信息传输至运算模块;
步骤3、运算模块根据运算矩阵的地址信息从数据存储模块提取运算矩阵;并根据分块信息将运算矩阵分成n个分块矩阵;
步骤4、运算模块对n个分块矩阵分别进行转置运算,得到n个分块矩阵的转置矩阵;
步骤5、运算模块合并n个分块矩阵的转置矩阵,得到运算矩阵的转置矩阵并反馈至数据存储模块;
其中,n为自然数。
以下通过具体实施例对本公开提出的运算装置及方法进行详细描述。
实施例1
如图5所示,本实施例提出一种运算装置,包括地址存储模块、运算控制模块、运算模块、数据存储模块和输入输出模块,其中
运算控制模块包括指令缓存单元、指令处理单元、依赖关系处理单元、指令队列和矩阵判断单元,其中指令处理单元又包括取指单元和译码单元;
运算模块包括矩阵分块单元、矩阵缓存单元、矩阵运算单元和矩阵合并单元;
地址存储模块为一标量寄存器堆;
数据存储模块为一高速暂存存储器;输入输出模块为一IO直接内存存取模块。
以下对运算装置的各组成部分进行详细说明:
取指单元,该单元负责从指令缓存单元中取出下一条将要执行的运算指令,并将该运算指令传给译码单元;
译码单元,该单元负责对运算指令进行译码,并将译码后的运算指令发送至标量寄存器堆,得到标量寄存器堆反馈的运算矩阵的地址信息,将译码后的运算指令和得到的运算矩阵的地址信息传输给依赖关系处理单元;
依赖关系处理单元,该单元处理运算指令与前一条指令可能存在的存储依赖关系。矩阵运算指令会访问高速暂存存储器,前后指令可能会访问同一块存储空间。为了保证指令执行结果的正确性,当前运算指令如果被检测到与之前的运算指令的数据存在依赖关系,该运算指令必须缓存至指令队列内等待至依赖关系被消除;如当前运算指令与之前的运算指令不存在依赖关系,则依赖关系处理单元直接将运算矩阵的地址信息和译码后的运算指令传输至矩阵判断单元。
指令队列,考虑到不同运算指令在包含的标量寄存器上有可能存在依赖关系,用于缓存存在冲突的译码后的运算指令和相应的运算矩阵的地址信息,当依赖关系被满足之后发射译码后的运算指令和相应的运算矩阵的地址信息至矩阵判断单元;
矩阵判断单元,用于根据运算矩阵的地址信息判断矩阵大小,如果超过规定的最大规模M,则需要对矩阵进行分块操作,矩阵判断单元根据此判断结果分析得到分块信息,并将运算矩阵的地址信息和得到的分块信息传输至矩阵分块单元。
矩阵分块单元,该单元负责根据运算矩阵的地址信息,从高速暂存器中提取需进行转置运算的运算矩阵,并根据分块信息对该运算矩阵进行分块,得到n个分块矩阵。矩阵缓存单元,该单元用于缓存经过分块后的n个分块矩阵,依次传输至矩阵运算单元进行转置运算;
矩阵运算单元,负责依次从矩阵缓存单元中提取分块矩阵进行转置运算,并将转置后的分块矩阵传输至矩阵合并单元;
矩阵合并单元,负责接收并暂时缓存转置后的分块矩阵,待所有分块矩阵都进行完转置运算后,对n个分块矩阵的转置矩阵进行合并运算,得到运算矩阵的转置矩阵。
标量寄存器堆,提供装置在运算过程中所需的标量寄存器,为运算提供运算矩阵的地址信息;
高速暂存器,该模块是矩阵数据专用的暂存存储装置,能够支持不同大小的矩阵数据。
IO内存存取模块,该模块用于直接访问高速暂存存储器,负责从高速暂存存储器中读取数据或写入数据。
实施例2
如图6所示,本实施例提出一种运算方法,用于执行大规模矩阵的转置运算,具体包括以下步骤:
步骤1、运算控制模块从地址存储模块提取运算矩阵的地址信息,具体包括以下步骤:
步骤1-1、取指单元提取运算指令,并将运算指令送至译码单元;
步骤1-2、译码单元对运算指令进行译码,根据译码后的运算指令从地址存储模块获取运算矩阵的地址信息,并将译码后的运算指令和运算矩阵的地址信息送往依赖关系处理单元;
步骤1-3、依赖关系处理单元分析该译码后的运算指令与前面的尚未执行结束的指令在数据上是否存在依赖关系。若存在依赖关系,该条译码后的运算指令与相应的运算矩阵的地址信息需要在指令队列中等待至其与前面的未执行结束的指令在数据上不再存在依赖关系为止;
步骤2、运算控制模块根据运算矩阵的地址信息得到分块信息;
具体的,依赖关系不存在后,指令队列发射该条译码后的运算指令与相应的运算矩阵的地址信息至矩阵判断单元,判断矩阵是否需要进行分块,矩阵判断单元根据判断结果得到分块信息,并将分块信息和运算矩阵的地址信息传输至矩阵分块单元;
步骤3、运算模块根据运算矩阵的地址信息从数据存储模块提取运算矩阵;并根据分块信息将运算矩阵分成n个分块矩阵;
具体的,矩阵分块单元根据传入的运算矩阵的地址信息从数据存储模块中取出需要的运算矩阵,再根据传入的分块信息,将运算矩阵分成n个分块矩阵,完成分块后依次将每个分块矩阵传入到矩阵缓存单元;
步骤4、运算模块分别对n个分块矩阵进行转置运算,得到n个分块矩阵的转置矩阵;
具体的,矩阵运算单元依次从矩阵缓存单元提取分块矩阵,并对每个提取的分块矩阵进行转置操作,再将得到的每个分块矩阵的转置矩阵传入到矩阵合并单元。
步骤5、运算模块合并n个分块矩阵的转置矩阵,得到运算矩阵的转置矩阵,并将该转置矩阵反馈给数据存储模块,具体包括以下步骤:
步骤5-1、矩阵合并单元接收每个分块矩阵的转置矩阵,当接收到的分块矩阵的转置矩阵数量达到总的分块数后,对所有的分块进行矩阵合并操作,得到运算矩阵的转置矩阵;并将该转置矩阵反馈至数据存储模块的指定地址;
步骤5-2、输入输出模块直接访问数据存储模块,从数据存储模块中读取运算得到的运算矩阵的转置矩阵。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (13)

1.一种运算装置,包括地址存储模块、运算控制模块、运算模块和数据存储模块,其中:
地址存储模块,用于存储运算矩阵的地址信息;
数据存储模块,用于存储原始矩阵数据,并存储运算后的转置矩阵;
运算控制模块,用于直接从所述地址存储模块提取所述运算矩阵的地址信息,并根据所述运算矩阵的地址信息分析得到分块信息;
运算模块,用于从所述运算控制模块获取运算矩阵的地址信息及分块信息,根据所述运算矩阵的地址信息从所述数据存储模块提取运算矩阵,并根据所述分块信息对所述运算矩阵进行分块、转置及合并运算,得到所述运算矩阵的转置矩阵,并将所述运算矩阵的转置矩阵反馈至所述数据存储模块;
所述运算模块包括矩阵分块单元、矩阵运算单元和矩阵合并单元,其中:
矩阵分块单元:用于从所述运算控制模块获取运算矩阵的地址信息及分块信息,并根据所述运算矩阵的地址信息从所述数据存储模块提取运算矩阵,根据所述分块信息对所述运算矩阵进行分块,得到n个分块矩阵;
矩阵运算单元,用于获取所述n个分块矩阵,并对所述n个分块矩阵进行转置运算,得到所述n个分块矩阵的转置矩阵;
矩阵合并单元,用于负责接收并暂时缓存转置后的分块矩阵,待所有分块矩阵都进行完转置运算后,对n个分块矩阵的转置矩阵进行合并运算,得到运算矩阵的转置矩阵,并将所述运算矩阵的转置矩阵反馈至所述数据存储模块,其中,n为自然数。
2.如权利要求1所述的运算装置,其中,所述运算模块还包括缓存单元,用于缓存所述n个分块矩阵,以供所述矩阵运算单元获取。
3.如权利要求1或2所述的运算装置,其中,所述运算控制模块包括指令处理单元、指令缓存单元和矩阵判断单元,其中:
指令缓存单元,用于存储待执行的矩阵运算指令;
指令处理单元,用于从指令缓存单元中获取矩阵运算指令,对所述矩阵运算指令进行译码,并根据所述译码后的矩阵运算指令从所述地址存储模块中获取运算矩阵的地址信息;
矩阵判断单元,用于对所述运算矩阵的地址信息进行分析,得到所述分块信息。
4.如权利要求3所述的运算装置,其中,所述运算控制模块还包括依赖关系处理单元,用于判断所述译码后的矩阵运算指令和运算矩阵的地址信息是否与上一运算存在冲突,若存在冲突,则暂存所述译码后的矩阵运算指令和运算矩阵的地址信息;若不存在冲突,则发射所述译码后的矩阵运算指令和运算矩阵的地址信息至所述矩阵判断单元。
5.如权利要求4所述的运算装置,其中,所述运算控制模块还包括指令队列,用于缓存所述存在冲突的译码后的矩阵运算指令和运算矩阵的地址信息,当所述冲突消除后,将缓存的所述译码后的矩阵运算指令和运算矩阵的地址信息发射至所述矩阵判断单元。
6.如权利要求4或5所述的运算装置,其中,所述指令处理单元包括取指单元和译码单元,其中:
取指单元,用于从所述指令缓存单元中获取矩阵运算指令,并将此矩阵运算指令传输至所述译码单元;
译码单元,用于对所述矩阵运算指令进行译码,根据该译码后的矩阵运算指令从所述地址存储模块中提取运算矩阵的地址信息,并将所述译码后的矩阵运算指令和提取的运算矩阵的地址信息传输至所述依赖关系处理单元。
7.如权利要求6所述的运算装置,其中,所述装置还包括输入输出模块,用于向所述数据存储模块输入原始矩阵数据,还用于从所述数据存储模块获取运算后的转置矩阵,并输出所述运算后的转置矩阵。
8.如权利要求7所述的运算装置,其中,所述地址存储模块包括标量寄存器堆或通用内存单元;所述数据存储模块包括高速暂存存储器或通用内存单元;所述运算矩阵的地址信息为矩阵的起始地址信息和矩阵大小信息。
9.一种应用于权利要求1至8任一项权利要求所述的运算装置的运算方法,包括以下步骤:
步骤1、运算控制模块直接从地址存储模块提取运算矩阵的地址信息;
步骤2、运算控制模块根据所述运算矩阵的地址信息得到分块信息,并将所述运算矩阵的地址信息和分块信息传输至运算模块;
步骤3、运算模块根据所述运算矩阵的地址信息从数据存储模块提取运算矩阵;并根据所述分块信息将所述运算矩阵分成n个分块矩阵;
步骤4、运算模块对所述n个分块矩阵分别进行转置运算,得到所述n个分块矩阵的转置矩阵;
步骤5、运算模块合并所述n个分块矩阵的转置矩阵,得到所述运算矩阵的转置矩阵并反馈至所述数据存储模块;
其中,n为自然数。
10. 根据权利要求9所述的运算方法,其中,所述运算控制模块根据所述运算矩阵的地址信息得到分块信息,包括:
获取矩阵运算指令,对所述矩阵运算指令进行译码,并根据译码后的矩阵运算指令获取所述运算矩阵的地址信息;以及
对所述运算矩阵的地址信息进行分析,得到所述分块信息。
11.根据权利要求10所述的运算方法,其中,在对所述运算矩阵的地址信息进行分析,得到所述分块信息之前,所述方法还包括:
判断所述译码后的矩阵运算指令和运算矩阵的地址信息是否与上一运算存在冲突,若存在冲突,则暂存所述译码后的矩阵运算指令和运算矩阵的地址信息;若不存在冲突,则对所述运算矩阵的地址信息进行分析,得到所述分块信息。
12.根据权利要求11所述的运算方法,其中,在暂存所述译码后的矩阵运算指令和运算矩阵的地址信息后,所述方法还包括:
在所述冲突消除后,对暂存的所述运算矩阵的地址信息进行分析,得到所述分块信息。
13.根据权利要求9所述的运算方法,还包括:
输入原始矩阵数据,以供提取所述运算矩阵;以及
输出所述运算矩阵的转置矩阵。
CN201710256444.5A 2017-04-06 2017-04-19 运算装置及方法 Active CN108733625B (zh)

Priority Applications (18)

Application Number Priority Date Filing Date Title
CN201710256444.5A CN108733625B (zh) 2017-04-19 2017-04-19 运算装置及方法
PCT/CN2017/101843 WO2018192161A1 (zh) 2017-04-19 2017-09-15 运算装置及方法
EP19199521.6A EP3620992B1 (en) 2017-04-06 2018-04-04 Neural network processor and neural network computation method
EP24168317.6A EP4372620A3 (en) 2017-04-06 2018-04-04 Neural network processor and neural network computation method
EP19199526.5A EP3633526A1 (en) 2017-04-06 2018-04-04 Computation device and method
CN201811423421.XA CN109359736A (zh) 2017-04-06 2018-04-04 网络处理器和网络运算方法
EP19199524.0A EP3627437B1 (en) 2017-04-06 2018-04-04 Data screening device and method
CN201811423295.8A CN109409515B (zh) 2017-04-06 2018-04-04 运算装置和方法
EP18780474.5A EP3579150B1 (en) 2017-04-06 2018-04-04 Operation apparatus and method for a neural network
PCT/CN2018/081929 WO2018184570A1 (zh) 2017-04-06 2018-04-04 运算装置和方法
CN201811413244.7A CN109344965A (zh) 2017-04-06 2018-04-04 运算装置和方法
EP19199528.1A EP3624018B1 (en) 2017-04-06 2018-04-04 Neural network computation device and method
CN201880001242.9A CN109219821B (zh) 2017-04-06 2018-04-04 运算装置和方法
US16/283,711 US10896369B2 (en) 2017-04-06 2019-02-22 Power conversion in neural networks
US16/520,041 US11551067B2 (en) 2017-04-06 2019-07-23 Neural network processor and neural network computation method
US16/520,082 US11010338B2 (en) 2017-04-06 2019-07-23 Data screening device and method
US16/520,615 US10671913B2 (en) 2017-04-06 2019-07-24 Computation device and method
US16/520,654 US11049002B2 (en) 2017-04-06 2019-07-24 Neural network computation device and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710256444.5A CN108733625B (zh) 2017-04-19 2017-04-19 运算装置及方法

Publications (2)

Publication Number Publication Date
CN108733625A CN108733625A (zh) 2018-11-02
CN108733625B true CN108733625B (zh) 2021-06-08

Family

ID=63855458

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710256444.5A Active CN108733625B (zh) 2017-04-06 2017-04-19 运算装置及方法

Country Status (2)

Country Link
CN (1) CN108733625B (zh)
WO (1) WO2018192161A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111353595A (zh) * 2018-12-20 2020-06-30 上海寒武纪信息科技有限公司 运算方法、装置及相关产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6038580A (en) * 1998-01-02 2000-03-14 Winbond Electronics Corp. DCT/IDCT circuit
CN102508803A (zh) * 2011-12-02 2012-06-20 南京大学 一种矩阵转置存储控制器
CN105426160A (zh) * 2015-11-10 2016-03-23 北京时代民芯科技有限公司 基于sprac v8指令集的指令分类多发射方法
CN106227507A (zh) * 2016-07-11 2016-12-14 姚颂 计算系统及其控制器

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7031994B2 (en) * 2001-08-13 2006-04-18 Sun Microsystems, Inc. Matrix transposition in a computer system
US20030084081A1 (en) * 2001-10-27 2003-05-01 Bedros Hanounik Method and apparatus for transposing a two dimensional array
US20040236920A1 (en) * 2003-05-20 2004-11-25 Sheaffer Gad S. Methods and apparatus for gathering and scattering data associated with a single-instruction-multiple-data (SIMD) operation
CN103761215B (zh) * 2014-01-15 2016-08-24 北京新松佳和电子系统股份有限公司 基于图形处理器的矩阵转置优化方法
CN104598391A (zh) * 2015-01-21 2015-05-06 佛山市智海星空科技有限公司 一种待转置二维矩阵的分块线性存储读取方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6038580A (en) * 1998-01-02 2000-03-14 Winbond Electronics Corp. DCT/IDCT circuit
CN102508803A (zh) * 2011-12-02 2012-06-20 南京大学 一种矩阵转置存储控制器
CN105426160A (zh) * 2015-11-10 2016-03-23 北京时代民芯科技有限公司 基于sprac v8指令集的指令分类多发射方法
CN106227507A (zh) * 2016-07-11 2016-12-14 姚颂 计算系统及其控制器

Also Published As

Publication number Publication date
CN108733625A (zh) 2018-11-02
WO2018192161A1 (zh) 2018-10-25

Similar Documents

Publication Publication Date Title
CN109522254B (zh) 运算装置及方法
US10671913B2 (en) Computation device and method
EP3832499B1 (en) Matrix computing device
US8984043B2 (en) Multiplying and adding matrices
EP3633526A1 (en) Computation device and method
US10521228B2 (en) Data read-write scheduler and reservation station for vector operations
US20130159665A1 (en) Specialized vector instruction and datapath for matrix multiplication
KR102524565B1 (ko) 로드 스토어 유닛들을 바이패싱하여 스토어 및 로드 추적
US10289419B2 (en) Method and apparatus for sorting elements in hardware structures
CN107315717B (zh) 一种用于执行向量四则运算的装置和方法
US6301654B1 (en) System and method for permitting out-of-order execution of load and store instructions
CN117453594A (zh) 数据传输装置及方法
US20100318758A1 (en) Efficient transfer of matrices for matrix based operations
US20020099922A1 (en) Data processing apparatus including a plurality of pipeline processing mechanisms in which memory access instructions are carried out in a memory access pipeline
CN108733625B (zh) 运算装置及方法
CN109471612B (zh) 运算装置及方法
CN109564510B (zh) 用于在地址生成时间分配加载和存储队列的系统和方法
CN114237705A (zh) 验证方法、装置、电子设备和计算机可读存储介质
CN110147222B (zh) 运算装置及方法
CN114625421A (zh) Simt指令处理方法及装置
US20180067745A1 (en) Accelerated execution of execute instruction target
CN116804915B (zh) 基于存储器的数据交互方法、处理器、设备以及介质
US20240220256A1 (en) Polymorphic two-dimensional register file
EP2696280B1 (en) Method and device for data transmission between register files
CN118331904A (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