CN116225532A - 一种支持加速向量运算的通用处理器 - Google Patents
一种支持加速向量运算的通用处理器 Download PDFInfo
- Publication number
- CN116225532A CN116225532A CN202310219286.1A CN202310219286A CN116225532A CN 116225532 A CN116225532 A CN 116225532A CN 202310219286 A CN202310219286 A CN 202310219286A CN 116225532 A CN116225532 A CN 116225532A
- Authority
- CN
- China
- Prior art keywords
- vector
- data
- processed
- cpu
- register
- 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.)
- Pending
Links
- 239000013598 vector Substances 0.000 title claims abstract description 357
- 230000001133 acceleration Effects 0.000 title description 12
- 238000004364 calculation method Methods 0.000 claims description 44
- 238000000034 method Methods 0.000 claims description 22
- 238000013528 artificial neural network Methods 0.000 claims description 21
- 230000008569 process Effects 0.000 claims description 10
- 239000013067 intermediate product Substances 0.000 claims description 6
- 238000003079 width control Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供了一种支持加速向量运算的通用处理器,该通用处理器包括CPU,该通用处理器还包括一个或者多个向量运算模块,每个向量运算模块被配置为:从CPU获取对待处理的向量运算的指示信息,所述指示信息包括数据位宽和向量维度;根据所述指示信息中的数据位宽和向量维度调整向量运算模块对待处理的向量运算中数据的读取和计算方式,以在支持可配置数据位宽和向量维度的情况下利用向量运算模块完成向量运算。
Description
技术领域
本发明通用处理器领域,具体来说涉及通用处理器对向量运算的硬件加速,更具体地说,涉及一种支持加速向量运算的通用处理器。
背景技术
随着神经网络模型在人工智能领域的普及,各种预测任务相比传统预测方法有了显著的提升。然而,在例如图像处理等需要用到大量的矩阵运算的领域的神经网络算法会给终端处理器带来过量运算载荷。
随着神经网络算法和任务复杂度的提高,对于非专用神经网络处理器而言,很难应对如此大量的矩阵运算,且运算效率不高。现有技术中,有直接将神经网络任务卸载到为此神经网络任务定义的专用神经网络加速器中进行运算的方案,但是,该专用神经网络加速器不仅需要定制,导致成本较高;且难以用于不同的神经网络任务,扩展性不强。
发明内容
因此,本发明的目的在于克服上述现有技术的缺陷,提供一种支持加速向量运算的通用处理器。
本发明的目的是通过以下技术方案实现的:
根据本发明的第一方面,提供一种支持加速向量运算的通用处理器,该通用处理器包括CPU,该通用处理器还包括一个或者多个向量运算模块,每个向量运算模块被配置为:从CPU获取对待处理的向量运算的指示信息,所述指示信息包括数据位宽和向量维度;根据所述指示信息中的数据位宽和向量维度调整向量运算模块对待处理的向量运算中数据的读取和计算方式,以在支持可配置数据位宽和向量维度的情况下利用向量运算模块完成向量运算。
在本发明的一些实施例中,每个向量运算模块包括读取数据控制单元、向量计算控制单元、多个乘法器和至少一个加法器,其中,待处理的向量运算是对第一向量和第二向量进行点乘,其中:所述读取数据控制单元包括多个预定大小的存储寄存器,用于从CPU的存储区中获取第一向量和第二向量中的至少部分维度的数据并暂存至存储寄存器中;所述向量计算控制单元用于控制乘法器和加法器从存储寄存器中接收数据并控制乘法器对第一向量和第二向量对应维度的数据分别进行乘法运算得到中间乘积和控制加法器对各维度的中间乘积进行求和得到向量运算结果,其中,乘法器和加法器被配置为按照预设方式实现并行运算。
在本发明的一些实施例中,所述读取数据控制单元针对待处理的向量所包含的数据分多次进行读取,其中,在每次读取数据时通过交叉取数的方式从CPU的存储区中分别读取第一向量的指定维度的数据和第二向量的对应维度的数据并将其存储到存储寄存器中以减少数据准备时间。
优选的,当待处理的向量的数据位宽大于单个存储寄存器的数据位宽时,将待处理的向量的每个维度的数据拆分到至少两个存储寄存器进行存储,并且向量计算控制单元控制对应的乘法器从至少两个存储寄存器获取对应的数据作为乘法运算输入;当待处理的向量的数据位宽小于存储寄存器的数据位宽时,每个存储寄存器存储待处理的向量的多个数据,并且向量计算控制单元控制多个乘法器分别从存储寄存器的对应比特位置获取对应的数据作为乘法运算输入以实现并行乘法运算;当待处理的向量的数据位宽等于存储寄存器的数据位宽时,每个存储寄存器存储一个数,并且向量计算控制单元控制多个乘法器从存储寄存器的对应比特位置获取对应的数据作为乘法运算输入。
在本发明的一些实施例中,每个向量运算模块被配置为按照以下预设方式实现乘法器和加法器的并行运算:向量计算控制单元控制乘法器从存储寄存器中读取数据进行乘法运算;读取数据控制单元在乘法器进行乘法运算的同时从CPU的存储区中读取下一次数据并存入存储寄存器中;加法器接收乘法器的运算结果并进行加法运算,同时向量计算控制单元控制乘法器从存储寄存器中读取下一次数据进行乘法运算;重复以上步骤直至完成待处理的向量运算。
在本发明的一些实施例中,所述指示信息被配置为通过访问CPU上的指定寄存器组得到,所述CPU上的指定寄存器组包括:运算状态寄存器,用于指示当前向量运算模块是否完成当前待处理的向量的运算;数据位宽控制状态寄存器用于配置待处理的向量的数据位宽;向量维度控制状态寄存器用于配置待处理的向量的向量维度;首地址控制状态寄存器用于配置待处理的向量数据在CPU的存储区中的存储首地址。
优选的,所述加法器中设置有计数器,所述计数器基于当前配置的向量维度所计算的计数阈值控制运算状态寄存器指示当前待处理的向量是否计算完成的标志。
优选的,每个向量运算模块中还包括回写控制单元,所述回写控制单元用于控制每个向量运算模块将向量运算结果根据首地址控制状态寄存器中的首地址回写至CPU的存储区中。
在本发明的一些实施例中,每个向量运算模块在整个工作过程对应多个工作状态,包括空闲状态、读取数据状态、计算等待状态和回写结果状态,其中:空闲状态是向量运算模块未完成配置寄存器的配置时的状态,当配置寄存器完成配置时跳转至读取数据状态;读取数据状态是所述向量运算模块从CPU的存储区中读取数据时的状态,当完成待处理的向量所包含的全部数据的读取后跳转到计算等待状态,当读取数据访问CPU的存储区失败时跳转至空闲状态;计算等待状态是所述向量运算模块待处理的向量完成全部运算之前的状态,当完成待处理的向量的全部运算后跳转至回写结果状态;回写结果状态是所述向量运算模块在完成当前向量的全部运算后将结果回写至CPU的存储区时的状态,当完成待处理的向量的运算结果的回写后跳转至空闲状态。
根据本发明的第二方面,提供一种向量运算方法,所述方法包括:S1、采用基于本发明第一方面所述的通用处理器的向量运算模块进行向量运算以获得向量运算结果,并将向量运算结果回写至CPU的存储区中;S2、通用处理器的CPU从存储区中读取向量运算结果。
优选的,在所述步骤S1中,通用处理器的CPU将神经网络任务中的卷积运算分解成多个待处理的向量运算,并对每个待处理的向量运算设置指示信息并分别调用对应的向量运算模块根据所述指示信息进行向量运算。与现有技术相比,本发明的优点在于:能够提升向量运算的计算效率,同时也适用于不同场景下的神经网络算法的加速任务,不仅拓展性强,还能降低成本。
附图说明
以下参照附图对本发明实施例作进一步说明,其中:
图1为根据本发明实施例的一种支持加速向量运算的通用处理器的结构示意图;
图2为根据本发明实施例的一种支持加速向量运算的通用处理器中向量运算模块的结构示意图;
图3为根据本发明实施例的向量运算模块的状态转换示意图;
图4为根据本发明实施例的向量运算模块读取数据位宽为32bit的向量数据的示意图;
图5为根据本发明实施例的向量运算模块的计算过程控制逻辑示意图;
图6为根据本发明实施例的向量运算模块读取数据位宽为64bit的向量数据的示意图;
图7为根据本发明实施例的向量运算模块的整体工作流程示意图。
具体实施方式
为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如在背景技术部分提到的,在执行例如图像处理、目标检测等包含大量矩阵运算的神经网络算法时,非专用的神经网络处理器很难应对,尽管目前已有直接将神经网络任务卸载到为此神经网络任务定义的专用神经网络加速器中进行运算的方案,但是,该专用神经网络加速器不仅需要定制,导致成本较高;且难以用于不同的神经网络任务,扩展性不强。因此,发明人通过研究提出了一种支持加速向量运算的通用处理器,其通过在现有的通用处理器上新增一个或多个向量运算模块,并且每个向量运算模块可针对需要进行运算的向量,根据需要进行运算的向量的数据位宽以及向量维度进行配置并通过简单的软件指令进行调用以实现多个向量运算模块的并行运算。
为了更好地理解本发明,下面结合具体的实施例针对每一个步骤分别进行详细说明。
根据本发明的一个实施例,如附图1所示,本发明提供一种支持加速向量运算的通用处理器,该通用处理器包括CPU,该通用处理器还包括一个或者多个向量运算模块(多个向量运算模块之间可独立并行开展向量运算),每个向量运算模块被配置为:从CPU获取对待处理的向量运算的指示信息,所述指示信息包括数据位宽和向量维度;根据所述指示信息中的数据位宽和向量维度调整向量运算模块对待处理的向量运算中数据的读取和计算方式,以在支持可配置数据位宽和向量维度的情况下利用向量运算模块完成向量运算。应当理解,待处理的向量即需要进行向量运算的向量,通常为两个向量之间的运算,超过两个的向量之间的运算同样需要转换为多次两个向量之间的运算。还需要说明的是,所述向量运算模块可以为ASIC芯片、FPGA以及其他形式的集成电路或芯片等硬件形式,本发明对此不做限制;此外,CPU通过可在通用处理器上运行的软件运行平台实现对向量运算模块的调用,例如可采用C程序、汇编指令等方式实现向量运算模块的调用,本发明对此同样不做限制。在本发明提供的通用处理器中,通过设立多个可并行运算的向量运算模块以实现计算效率的提升。
根据本发明的一个实施例,每个向量运算模块与CPU通过存储器读写接口相联,以实现数据的读写,由于存储器读写接口属于通用处理器领域的公知技术,因此此处不对其进行详细说明。
根据本发明的一个实施例,所述指示信息被配置为通过访问CPU上的指定寄存器组得到,所述CPU上的指定寄存器组包括运算状态寄存器、数据位宽控制状态寄存器、向量维度控制状态寄存器、首地址控制状态寄存器(为了简化,后文也将后面三种控制状态寄存器统称为配置寄存器),下面分别介绍每种寄存器。
根据本发明的一个实施例,运算状态寄存器用于指示当前向量运算模块是否完成当前待处理的向量的运算。例如,当待处理的向量的运算完成时,将运算状态寄存器置1,否则一直为0,CPU会不断查询运算状态寄存器,直至查询到完成运算的状态(即1)。
根据本发明的一个实施例,数据位宽控制状态寄存器用于配置待处理的向量的数据位宽。例如,对于将进行运算的待处理的向量的数据,以1指示数据位宽为8bit,以2指示数据位宽为16bit,以3指示数据位宽为32bit,以4指示数据位宽为64bit。CPU通过修改控制数据位宽控制状态寄存器的参数以实现不同向量位宽的向量的点乘。
根据本发明的一个实施例,向量维度控制状态寄存器用于配置待处理的向量的向量维度(可简称维度),其由待处理的向量的数据位宽,例如,对于将进行运算的待处理的向量的数据,8bit可配置向量维度为4的倍数的向量,16bit可配置向量维度为2的倍数的向量,32bit和64bit可配置向量维度为自然数的向量(最大可支持维度为2^32的向量)。
根据本发明的一个实施例,首地址控制状态寄存器用于配置待处理的向量数据在CPU的存储区中的存储首地址,对于待处理的两个向量,通常可按照先存第一向量,后存第二向量(为便于理解,后文一些部分将第一向量称为向量A,将第二向量称为向量B)的顺序。
需要说明的是,对于寄存器组对向量运算模块的控制,可根据实际情况自行调整,例如,可以通过一个寄存器组以分时复用的方式控制多个向量运算模块,以使得多个向量运算模块并行进行计算;也可以为每一个向量运算模块配置一个寄存器组,这样每个寄存器组可以不用频繁地调整参数。本发明通过CPU生成待计算向量的数据位宽和向量维度对应的指示信息,来控制某一对应的向量运算模块执行向量运算,以实现可配置不同数据位宽和向量维度的向量运算。
根据本发明的一个实施例,如附图2所示,所述每个向量运算模块包括读取数据控制单元、向量计算控制单元、回写控制单元、多个乘法器和至少一个加法器,其中,待处理的向量运算是对第一向量和第二向量进行点乘,下面分别对各个单元进行说明。
根据本发明的一个实施例,读取数据控制单元包括多个预定大小的存储寄存器,用于从CPU的存储区中获取第一向量和第二向量中的至少部分维度的数据并暂存至存储寄存器中。优选的,所述读取数据控制单元针对待处理的向量所包含的数据分多次进行读取,其中,在每次读取数据时通过交叉取数的方式从CPU的存储区中分别读取第一向量的指定维度的数据和第二向量的对应维度的数据并将其存储到存储寄存器中以减少数据准备时间。需要说明的是,交叉取数是指在每次从CPU的存储区取数存入存储寄存器中时,通过控制CPU存储区的读地址,交叉读取第一向量的n个数和第二向量的n个数存入存储寄存器中。优选的,读取数据控制单元在向量计算控制单元从存储寄存器中读取数据后按照预设的周期从CPU的存储区中读取下一次数据并存入存储寄存器中,所述预设的周期为根据存储寄存器数量确定的拍数,其中,每个存储寄存器存入最大数量的数据所需的时间为一拍。
根据本发明的一个实施例,向量计算控制单元用于控制乘法器和加法器从存储寄存器中接收数据并控制乘法器和加法器对第一向量和第二向量对应维度的数据分别进行乘法运算得到中间乘积和控制加法器对各维度的中间乘积进行求和得到向量运算结果,其中,乘法器和加法器被配置为按照预设方式实现并行运算。
根据本发明的一个实施例,乘法器用于完成乘法运算,并将乘法运算结果作为加法器的输入加法器进行加法运算。通过乘法器和加法器的结合完成向量的点乘运算。优选的,对于每个向量运算模块,可配置多个乘法器和至少一个加法器,其中,乘法器数量可根据实际情况对应于存储寄存器个数进行调整,以保证每次从存储寄存器中读取到的数据能够并行进行乘法运算。优选的,在本发明所述的向量运算模块中的加法器中还设置有计数器,计数器基于当前配置向量维度所计算的计数阈值控制运算状态寄存器指示当前待处理的向量是否计算完成的标志。根据本发明的一种实施例,根据向量维度设置计数阈值,每完成待处理的向量运算中的一次加法运算,计数值对应增1,并根据计数值是否达到计数阈值来确定是否计算完成。比如:计数阈值设为向量维度减1,计数值初始为0,每完成待处理的向量运算中的一次加法运算,计数值对应增1,在计数值达到计数阈值时,则视为计算完成。应当理解,也可能有其他方式,比如,计数阈值设为向量维度的值,计数值初始为1等。
根据本发明的一个实施例,乘法器和加法器被配置为按照预设方式实现并行运算,所述预设的方式如下:向量计算控制单元控制乘法器从存储寄存器中读取数据进行乘法运算;读取数据控制单元在乘法器进行乘法运算的同时从CPU的存储区中读取下一次数据并存入存储寄存器中;加法器接收乘法器的运算结果并进行加法运算,同时向量计算控制单元控制乘法器从存储寄存器中读取下一次数据进行乘法运算;重复以上步骤直至完成待处理的向量的运算。
根据本发明的一个实施例,对于每个向量运算模块,当待处理的向量的数据位宽大于单个存储寄存器的数据位宽时,将待处理的向量的每个数拆分到至少两个存储寄存器进行存储,并且向量计算控制单元控制对应的乘法器从至少两个存储寄存器获取对应的数据作为乘法运算输入;当待处理的向量的数据位宽小于存储寄存器的数据位宽时,每个存储寄存器存储待处理的向量的多个数据,并且向量计算控制单元控制多个乘法器分别从存储寄存器的对应比特位置获取对应的数据作为乘法运算输入以实现并行乘法运算;当待处理的向量的数据位宽等于存储寄存器的数据位宽时,每个存储寄存器存储一个数,并且向量计算控制单元控制多个乘法器从存储寄存器的对应比特位置获取对应的数据作为乘法运算输入。应当理解,存储寄存器的数量与可存储数据的数据位宽为人为设定,可根据实际应用场景进行调整。例如,待处理的向量的数据位宽为32bit,而存储寄存器的数据位宽为16bit,一个32bit的数需要拆分为高16bit和低16bit,此时向量的每一个数需要两个存储寄存器,一次取数需要至少4个存储寄存器以分别读取两个向量的一个数;而当待处理的向量的数据位宽等于存储寄存器的数据位宽时,每个存储寄存器可存储一个数,例如,待处理的向量的数据位宽和存储寄存器的数据位宽均为16bit,此时可设置数量为2或4或6个存储寄存器,一次取数可分别读取两个向量的一个数或两个数或三个数,与此同时,乘法器的个数也相应设置为一个或两个或三个,使得乘法器并行进行乘法运算;当待处理的向量的数据位宽为8bit,而存储寄存器的数据位宽为32bit时,每个存储寄存器一次可存储4个数,因此此时若配置2个存储寄存器,则一次取数可分别读取两个向量的四个数,此时可同时设置8个乘法器,在一次取数时完成对两个向量共8个数的并行乘法运算。需要说明的是,当待处理的向量(即需要进行运算的向量A和向量B的维度不同时),通过软件将低维度向量进行补0,使低维度向量的维度与高维度向量相同。
根据本发明的一个实施例,回写控制单元用于将待处理的向量的运算结果回写到CPU的存储区中,其中,回写的地址由待处理的向量在进行向量运算前在CPU的存储区中的存储首地址确定。
根据本发明的一个实施例,参照附图3所示,每个向量运算模块在整个工作过程对应多个工作状态,包括空闲状态、读取数据状态、计算等待状态和回写结果状态,下面分别对每个状态进行详细说明。
空闲状态是向量运算模块未完成配置寄存器的配置时的状态,当配置寄存器完成配置时跳转至读取数据状态,而当寄存器组中的配置寄存器未完成配置时,向量运算模块一直处于空闲状态。
读取数据状态是所述向量运算模块从CPU的存储区中读取数据时的状态,当完成待处理的向量所包含的全部数据的读取后跳转到计算等待状态,当读取数据访问CPU的存储区失败时跳转至空闲状态。对于每个向量运算模块来说,其包含的读取数据控制单元需要根据CPU上的寄存器组基于当前待处理的向量的数据位宽、向量维度以及存储首地址的指示信息对各个单元进行配置。
计算等待状态是所述向量运算模块待处理的向量完成全部运算之前的状态,当完成待处理的向量的全部运算后跳转至回写结果状态。
回写结果状态是所述向量运算模块在完成当前向量的全部运算后将结果回写至CPU的存储区时的状态,当完成待处理的向量的运算结果的回写后跳转至空闲状态。
为了便于理解,下面以一种具体的示例说明整个向量运算过程。在该示例中,待处理的向量分别为数据位宽为32bit的两个向量,向量A和向量B,读取数据控制单元中的存储寄存器为4个32bit的存储寄存器,在进行取数时,读取数据控制单元首先根据CPU上的寄存器组中的首地址控制状态寄存器从CPU的存储区中相应的首地址分别读取向量A和向量B的第一个数(数据位宽为32bit)存入第一和第二存储寄存器中,接着再分别读取向量A和向量B的第二个数存入第三和第四存储寄存器中,此时整个过程共历时4拍(即一拍对应一个存储寄存器存入数据的过程),接着将存储寄存器中的四个数(即向量A和向量B的第一个数和第二个数)输入到乘法器中进行乘法运算,在乘法器进行这四个数的乘法运算的同时,读取数据控制单元又读取向量A和向量B的第三、第四个数存入存储寄存器中,当乘法器完成乘法运算后将结果输入到加法器进行加法运算,在加法器进行加法运算的同时将存储寄存器中的四个数输入到乘法器中进行乘法运算,与此同时读取数据控制单元又读取向量A和向量B的第五、第六个数存入存储寄存器中,并不断重复上述过程,最终,当CPU查询到运算状态寄存器中的1时(即代表完成当前待处理的向量的所有数据的运算),CPU再根据首地址控制状态寄存器中存储的首地址从存储区中的相应地址读取计算结果。通过采用上述方式,能够实现乘法器和加法器的分时复用,大大提高了运算效率,同时由于存储寄存器的存在可以大大降低向量运算模块中所需的存储空间,每次只需读取少量数据,相比之下,现有技术需要一次性读取两个向量所包含的全部数,同时乘法器与加法器无法并行运算,因此采用本发明提供的方式能够加速向量运算。
对于数据位宽为32bit的向量数据,附图4示出了向量运算模块读取向量数据的示意,此时的存储寄存器为2个32bit的存储寄存器,因此每次取数时分别读取向量A的一个数和向量B的一个数,例如,第一次取数时分别读取向量A和向量B的第一个数;附图5示出了整个计算过程的控制逻辑示意。
对于数据位宽为64bit的向量数据,附图6示出了向量运算模块读取向量数据的示意,此时的存储寄存器为4个32bit的存储寄存器,因此需要将一个64bit的数拆分,分别将低32bit和高32bit存入两个32bit的存储寄存器,即将向量A的第一个数(64bit)和向量B的第一数(64bit)存入4个32bit的存储寄存器中。
对于其他数据位宽的向量计算,可参照上述示意,仅需对CPU上的寄存器组的指示信息(即待处理的向量的数据位宽、向量维度和存储首地址)以及存储寄存器的数据位宽和个数进行更改即可实现,此处不再进行赘述。
附图7示出了本发明提供的支持加速向量运算的通用处理器中的每个向量运算模块完成一次针对待处理的向量的全部过程,该过程主要包括软件和硬件两个方面,其中,软件主要是指通过CPU将数据写入到CPU的存储区,并配置CPU上的寄存器组中的参数、查询运算状态寄存器以及读取最终完成向量运算结果;硬件则主要是指启动向量运算模块并从CPU的存储区中读取待处理的向量的数据进行计算、回写最终的运算结果、更新运算状态寄存器以及对配置寄存器的清零操作。
根据本发明的一个实施例,本发明还提供一种向量运算方法,所述方法包括:S1、采用基于前文所述的通用处理器的向量运算模块进行向量运算以获得向量运算结果,并将向量运算结果回写至CPU的存储区中;S2、通用处理器的CPU从存储区中读取向量运算结果。优选的,所述步骤S1中,通用处理器的CPU将神经网络任务中的卷积运算分解成多个待处理的向量运算,并对每个待处理的向量运算设置指示信息并分别调用对应的向量运算模块根据所述指示信息进行向量运算。应当理解,除了神经网络任务对应的向量运算,CPU还可能处理其他任务对应的向量运算,根据实施者设置的规则,也可以由CPU调用向量运算模块来完成其他任务对应的向量运算。
与现有技术相比,本发明的优点在于:能够提升向量运算的计算效率,同时也适用于不同场景下的神经网络算法的加速任务,不仅拓展性强,还能降低成本。
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (13)
1.一种支持加速向量运算的通用处理器,该通用处理器包括CPU,其特征在于,该通用处理器还包括一个或者多个向量运算模块,每个向量运算模块被配置为:
从CPU获取对待处理的向量运算的指示信息,所述指示信息包括数据位宽和向量维度;
根据所述指示信息中的数据位宽和向量维度调整向量运算模块对待处理的向量运算中数据的读取和计算方式,以在支持可配置数据位宽和向量维度的情况下利用向量运算模块完成向量运算。
2.根据权利要求1所述的通用处理器,其特征在于,每个向量运算模块包括读取数据控制单元、向量计算控制单元、多个乘法器和至少一个加法器,其中,待处理的向量运算是对第一向量和第二向量进行点乘,其中:
所述读取数据控制单元包括多个预定大小的存储寄存器,用于从CPU的存储区中获取第一向量和第二向量中的至少部分维度的数据并暂存至存储寄存器中;
所述向量计算控制单元用于控制乘法器和加法器从存储寄存器中接收数据并控制乘法器对第一向量和第二向量对应维度的数据分别进行乘法运算得到中间乘积和控制加法器对各维度的中间乘积进行求和得到向量运算结果,其中,乘法器和加法器被配置为按照预设方式实现并行运算。
3.根据权利要求2所述的通用处理器,其特征在于,所述读取数据控制单元针对待处理的向量所包含的数据分多次进行读取,其中,在每次读取数据时通过交叉取数的方式从CPU的存储区中分别读取第一向量的指定维度的数据和第二向量的对应维度的数据并将其存储到存储寄存器中以减少数据准备时间。
4.根据权利要求2所述的通用处理器,其特征在于,当待处理的向量的数据位宽大于单个存储寄存器的数据位宽时,将待处理的向量的每个维度的数据拆分到至少两个存储寄存器进行存储,并且向量计算控制单元控制对应的乘法器从至少两个存储寄存器获取对应的数据作为乘法运算输入。
5.根据权利要求2所述的通用处理器,其特征在于,当待处理的向量的数据位宽小于存储寄存器的数据位宽时,每个存储寄存器存储待处理的向量的多个数据,并且向量计算控制单元控制多个乘法器分别从存储寄存器的对应比特位置获取对应的数据作为乘法运算输入以实现并行乘法运算。
6.根据权利要求2所述的通用处理器,其特征在于,当待处理的向量的数据位宽等于存储寄存器的数据位宽时,每个存储寄存器存储一个数,并且向量计算控制单元控制多个乘法器从存储寄存器的对应比特位置获取对应的数据作为乘法运算输入。
7.根据权利要求2所述的通用处理器,其特征在于,每个向量运算模块被配置为按照以下预设方式实现乘法器和加法器的并行运算:
向量计算控制单元控制乘法器从存储寄存器中读取数据进行乘法运算;
读取数据控制单元在乘法器进行乘法运算的同时从CPU的存储区中读取下一次数据并存入存储寄存器中;
加法器接收乘法器的运算结果并进行加法运算,同时向量计算控制单元控制乘法器从存储寄存器中读取下一次数据进行乘法运算;
重复以上步骤直至完成待处理的向量运算。
8.根据权利要求1-7之一所述的通用处理器,其特征在于,所述指示信息被配置为通过访问CPU上的指定寄存器组得到,所述CPU上的指定寄存器组包括:
运算状态寄存器,用于指示当前向量运算模块是否完成当前待处理的向量的运算;
数据位宽控制状态寄存器,用于配置待处理的向量的数据位宽;
向量维度控制状态寄存器,用于配置待处理的向量的向量维度;
首地址控制状态寄存器,用于配置待处理的向量数据在CPU的存储区中的存储首地址。
9.根据权利要求8所述的通用处理器,其特征在于,所述加法器中设置有计数器,所述计数器基于当前配置的向量维度所计算的计数阈值控制运算状态寄存器指示当前待处理的向量是否计算完成的标志。
10.根据权利要求9所述的通用处理器,其特征在于,每个向量运算模块中还包括回写控制单元,所述回写控制单元用于控制每个向量运算模块将向量运算结果根据首地址控制状态寄存器中的首地址回写至CPU的存储区中。
11.根据权利要求10所述的通用处理器,其特征在于,每个向量运算模块在整个工作过程对应多个工作状态,包括空闲状态、读取数据状态、计算等待状态和回写结果状态,其中:
空闲状态是向量运算模块未完成配置寄存器的配置时的状态,当配置寄存器完成配置时跳转至读取数据状态;
读取数据状态是所述向量运算模块从CPU的存储区中读取数据时的状态,当完成待处理的向量所包含的全部数据的读取后跳转到计算等待状态,当读取数据访问CPU的存储区失败时跳转至空闲状态;
计算等待状态是所述向量运算模块待处理的向量完成全部运算之前的状态,当完成待处理的向量的全部运算后跳转至回写结果状态;
回写结果状态是所述向量运算模块在完成当前向量的全部运算后将结果回写至CPU的存储区时的状态,当完成待处理的向量的运算结果的回写后跳转至空闲状态。
12.一种向量运算方法,其特征在于,所述方法包括:
S1、采用基于权利要求1-11之一所述的通用处理器的向量运算模块进行向量运算以获得向量运算结果,并将向量运算结果回写至CPU的存储区中;
S2、通用处理器的CPU从存储区中读取向量运算结果。
13.根据权利要求12所述的向量运算方法,其特征在于,在所述步骤S1中,通用处理器的CPU将神经网络任务中的卷积运算分解成多个待处理的向量运算,并对每个待处理的向量运算设置指示信息并分别调用对应的向量运算模块根据所述指示信息进行向量运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310219286.1A CN116225532A (zh) | 2023-03-07 | 2023-03-07 | 一种支持加速向量运算的通用处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310219286.1A CN116225532A (zh) | 2023-03-07 | 2023-03-07 | 一种支持加速向量运算的通用处理器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116225532A true CN116225532A (zh) | 2023-06-06 |
Family
ID=86576620
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310219286.1A Pending CN116225532A (zh) | 2023-03-07 | 2023-03-07 | 一种支持加速向量运算的通用处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116225532A (zh) |
-
2023
- 2023-03-07 CN CN202310219286.1A patent/CN116225532A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7016942B2 (ja) | 演算アクセラレータ | |
US9696994B2 (en) | Apparatus and method for comparing a first vector of data elements and a second vector of data elements | |
US20220083857A1 (en) | Convolutional neural network operation method and device | |
US20230084523A1 (en) | Data Processing Method and Device, and Storage Medium | |
WO2022001301A1 (zh) | 神经网络运算方法及相关设备 | |
CN112771546A (zh) | 运算加速器和压缩方法 | |
CN118152980A (zh) | 一种分叉算子融合方法、装置、设备及存储介质 | |
CN110232665B (zh) | 最大池化方法、装置、计算机设备及存储介质 | |
US20220171630A1 (en) | Apparatus and method | |
CN116227599A (zh) | 一种推理模型的优化方法、装置、电子设备及存储介质 | |
US20080215859A1 (en) | Computer with high-speed context switching | |
CN116225532A (zh) | 一种支持加速向量运算的通用处理器 | |
US20030037227A1 (en) | Processor enabling exception handling to be set by program | |
CN111798363B (zh) | 图形处理器 | |
CN111340224B (zh) | 适用于低资源嵌入式芯片的cnn网络的加速设计方法 | |
KR102372869B1 (ko) | 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법 | |
CN113591031A (zh) | 低功耗矩阵运算方法及装置 | |
CN113705795A (zh) | 卷积处理方法、装置、卷积神经网络加速器和存储介质 | |
EP1197875B1 (en) | Conditional vector operation method and device thereof | |
US20230195651A1 (en) | Host device performing near data processing function and accelerator system including the same | |
CN116821576B (zh) | 用于基于risc-v加速n:m稀疏网络的方法和装置 | |
CN116501454A (zh) | 多任务执行方法、装置以及电子设备 | |
CN111597886B (zh) | 一种用于指纹图像处理的硬件加速器、系统及加速方法 | |
KR20230095775A (ko) | Ndp 기능을 포함하는 메모리 확장 장치 및 이를 포함하는 가속기 시스템 | |
CN116882475A (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 |