CN107678781B - 处理器以及用于在处理器上执行指令的方法 - Google Patents
处理器以及用于在处理器上执行指令的方法 Download PDFInfo
- Publication number
- CN107678781B CN107678781B CN201610621990.XA CN201610621990A CN107678781B CN 107678781 B CN107678781 B CN 107678781B CN 201610621990 A CN201610621990 A CN 201610621990A CN 107678781 B CN107678781 B CN 107678781B
- Authority
- CN
- China
- Prior art keywords
- matrix
- instruction
- processor
- instructions
- calculation
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 239000011159 matrix material Substances 0.000 claims abstract description 207
- 238000004364 calculation method Methods 0.000 claims abstract description 96
- 230000003993 interaction Effects 0.000 claims abstract description 35
- 230000004913 activation Effects 0.000 claims description 58
- 230000006870 function Effects 0.000 claims description 28
- 238000013135 deep learning Methods 0.000 abstract description 3
- 230000002452 interceptive effect Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 8
- 238000013473 artificial intelligence Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000011664 signaling 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- 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/30047—Prefetch instructions; cache control instructions
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
- G06F9/3881—Arrangements for communication of instructions and data
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
Abstract
本申请公开了处理器以及用于在处理器上执行指令的方法。所述处理器的一具体实施方式包括:主机交互器件、指令控制器件、片外存储器、片上缓存、阵列处理机,其中:所述主机交互器件,用于与所述处理器所连接的主机交互数据与指令,其中,所交互的数据以矩阵为粒度;所述片外存储器,用于存储从所述主机接收的、待执行矩阵运算的矩阵;所述指令控制器件,用于将从所述主机接收的外部指令转换成一系列访存指令与一系列计算指令并执行所转换成的指令。该实施方式能提高对深度学习算法的执行效率。
Description
技术领域
本申请涉及计算机技术领域,具体涉及处理器技术领域,尤其涉及处理器以及用于在处理器上执行指令的方法。
背景技术
目前在人工智能计算领域,中央处理器和图形处理器得到大量使用。虽然后者能比前者提供更大的计算能力,但这两种硬件都是基于细粒度指令流的通用处理器,他们的架构有如下的共同点:细粒度指令流中一个指令只完成加法、乘法、访问内存等最基本的计算操作;处理器中细粒度的算术逻辑单元,一个单元一般就执行一个乘加计算;支持细粒度访问的访存模式及通用的数据通路,必须要保证细粒度的内存访问及通用的数据通路。
现有技术的这些处理器中,细粒度的指令流、算术逻辑单元及通用的访存模式、数据通路,对于人工智能这类特定的应用,计算效率不高。细粒度的指令流和算术逻辑单元,一方面数据需要频繁加载和存储,效率较低;对于人工智能这一大类应用,通用的架构有很多冗余电路逻辑,导致***设计复杂,电路资源消耗多,总成本比较高。
发明内容
本申请的目的在于提出一种改进的处理器以及用于在处理器上执行指令的方法,来解决以上背景技术部分提到的技术问题。
第一方面,本申请提供了一种处理器,所述处理器包括主机交互器件、指令控制器件、片外存储器、片上缓存、阵列处理机,其中:所述主机交互器件,用于与所述处理器所连接的主机交互数据与指令,其中,所交互的数据以矩阵为粒度;所述片外存储器,用于存储从所述主机接收的、待执行矩阵运算的矩阵;所述指令控制器件,用于将从所述主机接收的外部指令转换成一系列访存指令与一系列计算指令并执行所转换成的指令,其中,所述外部指令包括矩阵运算指令,所述访存指令用于控制所述片外存储器与所述片上缓存之间以矩阵子块为粒度进行数据交互,所述计算指令用于控制所述阵列处理机对所述片上缓存中的矩阵子块执行矩阵运算操作。
在一些实施例中,所述阵列处理机中的多个处理单元用于并行执行所述矩阵运算操作的子运算操作。
在一些实施例中,所述处理器还包括用于执行激活函数计算操作的激活处理器件;以及所述指令控制器件还用于:在所述外部指令还包括激活函数计算指令时,生成用于控制所述激活处理器件工作的激活指令。
在一些实施例中,所述指令控制器件还用于:在所述外部指令还包括激活函数计算指令时,还生成用于将所述阵列处理机对矩阵子块执行矩阵运算操作所生成的结果矩阵子块流水传输至所述激活处理器件的控制指令。
在一些实施例中,所述指令控制器件包括:访存指令器件,用于生成一系列访存指令并控制访存指令的执行;计算指令器件,用于生成一系列计算指令并控制计算指令的执行。
在一些实施例中,所述访存指令器件进一步用于:在通过访存指令每完成一次将待处理的矩阵子块从所述片外存储器读取到所述片上缓存的操作时,向所述计算指令器件发送第一通知信号;以及所述计算指令器件进一步用于:响应于所述第一通知信号,执行计算指令以控制所述阵列处理机对所述片上缓存中读取完成的矩阵子块按序执行矩阵运算操作。
在一些实施例中,所述计算指令器件进一步用于:在通过计算指令每完成一次矩阵子块的矩阵运算操作时,向所述访存指令器件发送第二通知信号;以及所述访存指令器件进一步用于:响应于所述第二通知信号,执行将所述片外存储器中矩阵的下一个矩阵子块从所述片外存储器读取到所述片上缓存的访存指令。
在一些实施例中,所述矩阵子块的大小与所述阵列处理机每次操作的最大计算量以及所述片上缓存的存储空间匹配。
第二方面,本申请提供了一种用于在处理器上执行指令的方法,所述处理器包括主机交互器件、片外存储器、片上缓存、阵列处理机,所述方法包括:通过所述主机交互器件与所述处理器所连接的主机交互数据与指令,其中,所交互的数据以矩阵为粒度;将从所述主机接收的、待执行矩阵运算的矩阵存储在所述片外存储器上;将从所述主机接收的外部指令转换成一系列访存指令与一系列计算指令,并执行所转换成的指令,其中,所述外部指令包括矩阵运算指令,所述访存指令用于控制所述片外存储器与所述片上缓存之间以矩阵子块为粒度进行数据交互,所述计算指令用于控制所述阵列处理机对所述片上缓存中的矩阵子块执行矩阵运算操作。
在一些实施例中,所述阵列处理机中的多个处理单元用于并行执行所述矩阵运算操作的子运算操作。
在一些实施例中,所述处理器还包括用于执行激活函数计算操作的激活处理器件;以及所述将从所述主机接收的外部指令转换成一系列访存指令与一系列计算指令,还包括:在所述外部指令还包括激活函数计算指令时,生成用于控制所述激活处理器件工作的激活指令。
在一些实施例中,所述将从所述主机接收的外部指令转换成一系列访存指令与一系列计算指令,还包括:
在所述外部指令还包括激活函数计算指令时,还生成用于将所述阵列处理机对矩阵子块执行矩阵运算操作所生成的结果矩阵子块流水传输至所述激活处理器件的控制指令。
在一些实施例中,所述方法还包括:响应于访存指令每完成一次将待处理的矩阵子块从所述片外存储器读取到所述片上缓存的操作时,执行计算指令以控制所述阵列处理机对所述片上缓存中读取完成的矩阵子块按序执行矩阵运算操作。
在一些实施例中,所述方法还包括:响应于计算指令每完成一次矩阵子块的矩阵运算操作时,执行将所述片外存储器中矩阵的下一个矩阵子块从所述片外存储器读取到所述片上缓存的访存指令。
在一些实施例中,所述矩阵子块的大小与所述阵列处理机每次操作的最大计算量以及所述片上缓存的存储空间匹配。
本申请提供的处理器以及用于在处理器上执行指令的方法,所生成的访存指令和计算指令均以矩阵子块为单位进行访存和计算,相比于传统的位为单位进行访存和操作,可以通过执行较少的访存指令和计算指令即可完成相同的计算任务,处理效率较高,能节省操作时间。同时,以矩阵子块为粒度进行访存和计算,使得在面对较大的矩阵时,也可以通过对矩阵进行分块后进行访存和计算,使得该处理器可以对各种大小的矩阵进行处理,保证了该处理器对矩阵处理的通用性。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请可以应用于其中的示例性***架构图;
图2是根据本申请的处理器的一个实施例的结构示意图;
图3是根据图2对应实施例的一个实现方式中处理器的各个器件的信号交互图;
图4是根据本申请的处理器的又一个实施例的结构示意图;
图5是根据本申请的在处理器上执行指令的方法的一个实施例的流程图。
图6是根据本申请的在处理器上执行指令的方法的又一个实施例的流程图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的处理器或以及用于在处理器上执行指令的方法的实施例的示例性***架构100。
如图1所示,***架构100可以包括通用处理器101和专用服务器102。
通用处理器101用于将外部指令(例如矩阵运算)以及待处理的数据(例如矩阵)发送给专用处理器102,专用处理器102可以将按照外部指令执行,并对所接收的数据进行处理,最后处理生成的结果可以再发送回通用处理器101。其中,通用处理器102也可以称为主机,而专用处理器102可以是由FPGA(Field-Programmable Gate Array,即现场可编程门阵列服务器)设计而成。
需要说明的是,本申请实施例所提供的处理器一般是指图1中的专用处理器102,相应地,用于在处理器上执行指令的方法一般由专用处理器102执行。
应该理解,图1中的通用处理器101和专用处理器102的数目仅仅是示意性的。根据实现需要,可以具有任意数目的通用处理器和专用处理器。
继续参考图2,示出了根据本申请的处理器的一种结构示意图200。
如图2所示,处理器200包括主机交互器件201、指令控制器件202、片外存储器203、片上缓存204和阵列处理机205。
主机交互器件201可以与外部的主机(例如图1中的通用处理器)进行连接,从而实现处理器200与主机的指令与数据交互。实践中,该主机交互器件201可以通过PCIE(Peripheral Component Interface Express,总线和接口标准)或其他总线实现与主机的连接。主机交互器件201可以与指令控制器件202,从而可以将从主机接收的外部指令传输到指令控制部件202,以等待指令控制部件202对外部指令进行进一步处理。主机交互器件201也可以与片外存储器203电连接,从而可以将从主机接收的待处理的数据存放在片外存储器203中以等待后续处理,也可以将片外存储器203中处理好的结果数据传输至主机。需要说明的是,主机交互器件所交互的数据以矩阵为粒度,即数据为粗粒度,不同于通常数据交互中以位为粒度的细粒度数据。
指令控制器件202,可以用于对从主机接收的外部指令执行转换操作,生成一系列访存指令与一系列计算指令。其中,外部指令包括矩阵运算指令,即外部指令可以是粗粒度指令,不同于一般的细粒度指令中一条指令用于对数的加法、乘法以及内存访问。指令控制器件202所生成的访存指令用于控制片外存储器203与片上缓存204之间以矩阵子块为粒度进行数据交互,所生成的计算指令用于控制阵列处理机205对片上缓存中的矩阵子块执行矩阵运算操作。指令控制器件202除了用于生成访存指令以及计算指令外,还用于控制这些指令按一定的顺序执行。通常,指令控制器件202可以通过发送信号的方式控制片外存储器203、片上缓存204和阵列处理机205按一定的顺序执行。例如,在确定要执行访存指令时,指令控制器件202可以发送控制信号,使得可以将片外存储器中矩阵分块后的矩阵子块读取到片上缓存。又例如,在确定要执行计算指令时,指令控制器件202可以向阵列处理机205发送相应的控制信号,阵列处理机205便可以在该控制信号的控制下对片上缓存204中的矩阵子块执行矩阵运算操作。
阵列处理机重复设置大量相同的处理单元PE(Processing Element),并将它们按一定方式互连成阵列,在单一控制部件控制下,对各自所分配的不同数据并行执行同一组指令规定的操作。阵列处理机适用于矩阵运算。在本实施例中,阵列处理机可以在指令控制器件202执行计算指令时发出的控制信号下执行矩阵运算操作。
在本实施例的一些可选实现方式中,阵列处理机的多个处理单元用于并行执行矩阵运算操作的子运算操作。可选的,当阵列处理机所执行的矩阵运算操作是矩阵乘运算时,阵列处理机中的处理单元分别用于执行被乘数矩阵子块的不同行与乘数矩阵子块的乘操作,且各个单元可以并行执行乘操作。通过这种方式,阵列处理机中的各个单元可以并行处理对矩阵子块的操作,从而提高整体的处理效率。并且,在深度学习过程中,输入层对应的被乘数矩阵通常较小,而隐层对应的乘数矩阵通常较大,阵列处理机中的处理单元分别用于执行被乘数矩阵子块的不同行与乘数矩阵子块的乘操作,可以减小乘数矩阵的访存次数,从而有利于在执行实际的深度学习算法时提高整体的处理效率。
在本实施例的一些可选实现方式中,上述指令控制器件202包括:访存指令器件,用于生成一系列访存指令并控制访存指令的执行;计算指令器件,用于生成一系列计算指令并控制计算指令的执行。在该实现方式中,指令控制器件中的访存指令器件和计算指令器件可以分别负责访存指令与计算指令的控制。
继续参考图3,示出了根据本实施例中的一些可选实现方式中处理器中各个器件的信号交互图。在图3中,访存指令器件所执行的访存指令和计算指令器件所执行的计算指令可以是根据神经网络指令状态确定的。
在本实施例的一些可选实现方式中,上述访存指令器件进一步用于:在通过访存指令每完成一次将待处理的矩阵子块从片外存储器读取到片上缓存的操作时,向计算指令器件发送第一通知信号,即图3中的“数据ready”信号,该“数据ready”信号用于通知矩阵子块已准备好;以及计算指令器件进一步用于:响应于第一通知信号,执行计算指令以向阵列处理机发送控制信号,以使阵列处理机对片上缓存中读取完成的矩阵子块按序执行矩阵运算操作。通过这种方法,计算指令可以对片上缓存中已读取的矩阵子块持续不断地进行处理,提高了计算效率。
在本实施例的一些可选实现方式中,上述计算指令器件进一步用于:在通过计算指令每完成一次矩阵子块的矩阵运算操作时,向访存指令器件发送第二通知信号,即图3中“计算完成”信号,“计算完成”信号用于通知已完成一次矩阵运算操作;以及访存指令器件进一步用于:响应于第二通知信号,执行将片外存储器中矩阵的下一个矩阵子块从片外存储器读取到片上缓存的访存指令,从而可以利用片上缓存中已计算完成的矩阵子块所占用的空间读取新的矩阵子块,实现片上缓存空间的充分利用。
在本实施例的一些可选实现方式中,矩阵子块的大小与阵列处理机每次操作的最大计算量以及片上缓存的存储空间匹配。在该实现方式中,访存指令每次从片外存储器读取到片上缓存的矩阵子块的大小与阵列处理机每次操作的最大计算量以及片上缓存的存储空间匹配。
需要说明的是,图3中所示的信号交互图仅为示例,其不构成对本申请保护范围的限制。
本申请的上述实施例提供的处理器,所生成的访存指令和计算指令均以矩阵子块为单位进行访存和计算,相比于传统的位为单位进行访存和操作,可以通过执行较少的访存指令和计算指令即可完成相同的计算任务,处理效率较高,能节省操作时间。同时,以矩阵子块为粒度进行访存和计算,使得在面对较大的矩阵时,也可以通过对矩阵进行分块后进行访存和计算,使得该处理器可以对各种大小的矩阵进行处理,保证了该处理器对矩阵处理的通用性。
继续参考图4,示出了根据本申请的处理器的又一种结构示意图400。
如图4所示,处理器400包括主机交互器件401、指令控制器件402、片外存储器403、片上缓存404、阵列处理机405和激活处理器件406。
本实施例中,主机交互器件401、指令控制器件402、片外存储器403、片上缓存404、阵列处理机405可以参考图2对应实施例的主机交互器件201、指令控制器件202、片外存储器203、片上缓存204和阵列处理机205,这里不再赘述。与图2对应实施例不同的是,本实施例中的处理器400还包括用于执行激活函数计算操作的激活处理器件406。同时,指令控制器件402还用于:在外部指令还包括激活函数计算指令时,生成用于控制激活处理器件工作的激活指令。在该实现方式中,由于人工智能算法中经常涉及计算激活函数的操作,处理器400还设置有用于执行激活函数计算操作的激活处理器件406。对应的,当指令控制器件402接收到的外部指令还包括激活函数计算指令时,即接收到带激活函数的计算矩阵运算时,还生成用于控制激活处理器件406工作的激活指令。
在本实施例的一些可选实现方式中,指令控制器件402还用于:在外部指令还包括激活函数计算指令时,还生成用于将阵列处理机对矩阵子块执行矩阵运算操作所生成的结果矩阵子块流水传输至激活处理器件的控制指令。在该实现方式中,处理器可以通过该控制指令使得阵列处理机对矩阵子块执行矩阵运算操作所生成的结果矩阵直接传输至激活处理器件,供激活处理器件执行激活函数计算操作。此外,传输结果矩阵可以流水式传输,激活处理器件可以立即对当前接收到的结果矩阵立即进行处理,使得激活处理器件的操作可以和阵列处理机对后续矩阵子块的矩阵运算操作并行执行,从而使得激活函数计算的时间几乎可以被阵列处理机对矩阵子块运算的操作所覆盖,时间开销可以忽略不计。
继续参考图5,示出了根据本申请的用于在处理器上执行指令的方法的一个实施例的流程500。该处理器具有主机交互器件、片外存储器、片上缓存、阵列处理机。在处理器上执行指令的方法,包括以下步骤:
步骤501,通过主机交互器件与处理器所连接的主机交互数据与指令。
在本实施例中,处理器可以通过主机交互器件与所连接的主机进行数据与指令交互。其中,所交互的数据以矩阵为粒度。
步骤502,将从主机接收的、待执行矩阵运算的矩阵存储在片外存储器上。
在本实施例中,基于步骤501从主机接收到的待执行矩阵运算的矩阵,处理器将矩阵存储在片外存储器上。
步骤503,将从主机接收的外部指令转换成一系列访存指令与一系列计算指令,并执行所转换成的指令。
在本实施例中,基于步骤501中接收到的外部指令,处理器对其执行转换操作,将外部指令转换成一系列访存指令与一系列计算指令,其中,外部指令包括矩阵运算指令,访存指令用于控制片外存储器与片上缓存之间以矩阵子块为粒度进行数据交互,计算指令用于控制阵列处理机对片上缓存中的矩阵子块执行矩阵运算操作。
在本实施例的一些可选实现方式中,上述阵列处理机包括多个处理单元,且多个处理单元用于并行执行矩阵运算操作的子运算操作。该实施例的具体处理可以参考图2对应实施例中相应的实现方式,这里不再赘述。
在本实施例的一些可选实现方式中,上述处理器还包括用于执行激活函数计算操作的激活处理器件;以及,步骤503还包括:在外部指令还包括激活函数计算指令时,生成用于控制激活处理器件工作的激活指令。该实施例的具体处理可以参考图3对应实施例中相应的描述,这里不再赘述。
在本实施例的一些可选实现方式中,步骤503还包括:在外部指令还包括激活函数计算指令时,还生成用于将阵列处理机对矩阵子块执行矩阵运算操作所生成的结果矩阵子块流水传输至激活处理器件的控制指令。该实施例的具体处理可以参考图3对应实施例中相应的实现方式,这里不再赘述。
继续参考图6,示出了根据本申请的用于在处理器上执行指令的方法的一个实施例的流程600。该处理器具有主机交互器件、片外存储器、片上缓存、阵列处理机。在处理器上执行指令的方法,包括以下步骤:
步骤601,通过主机交互器件与处理器所连接的主机交互数据与指令。
在本实施例中,该步骤的具体处理可以参考图4对应实施例的步骤401,这里不再赘述。
步骤602,将从主机接收的、待执行矩阵运算的矩阵存储在片外存储器上。
在本实施例中,该步骤的具体处理可以参考图4对应实施例的步骤402,这里不再赘述。
步骤603,将从主机接收的外部指令转换成一系列访存指令与一系列计算指令,并执行所转换成的指令。
在本实施例中,该步骤的具体处理可以参考图4对应实施例的步骤403,这里不再赘述。
步骤604,响应于访存指令每完成一次将待处理的矩阵子块从片外存储器读取到片上缓存的操作时,执行计算指令以控制阵列处理机对片上缓存中待处理的矩阵子块执行矩阵运算操作。
在本实施例中,处理器可以在访存指令每完成一次将待处理的矩阵子块从片外存储器读取到片上缓存的操作时,执行计算指令,从而控制阵列处理机对片上缓存中读取完成的矩阵子块按序执行矩阵运算操作。其中,片上缓存可以在完成对片外存储器中一次矩阵子块的读取后,发出信号通知处理器矩阵子块读取完成。处理器在执行阵列处理机时,可以将对当前读取好的矩阵子块进行计算的控制信号发送给阵列处理机。阵列处理机可以根据所接收到的各个控制信号,按序对各个矩阵子块进行矩阵运算。即,当该矩阵子块前面的所有矩阵子块计算好后,阵列处理机即可根据当前计算任务的控制信号的控制下执行对该矩阵子块的矩阵运算。通过这种方法,可以保证处理机阵列能够不断地对矩阵子块执行矩阵运算操作,减少空闲时间。
在步骤604中,处理器可以在数据准备好后执行计算指令以通知阵列处理机进行计算,提高了处理效率。
步骤605,响应于计算指令每完成一次矩阵子块的矩阵运算操作时,执行计算指令以控制阵列处理机对片上缓存中读取完成的矩阵子块按序执行矩阵运算操作。
在本实施例中,处理器可以在计算指令每完成一次矩阵子块的矩阵运算操作时,执行将片外存储器中矩阵的下一个矩阵子块读取到片上缓存的访存指令。其中,阵列处理机可以在完成一次矩阵子块的矩阵运算操作后,发出信号通知处理器已完成一次矩阵子块的运算。处理器在计算指令每完成一次矩阵子块的矩阵运算操作时,可以执行将片外存储器中矩阵的下一个矩阵子块读取到片上缓存的访存指令。
在步骤605中,阵列处理机完成一次对矩阵子块的运算后,片上缓存不需要对继续存储该矩阵子块,此时处理器立即读取下一个矩阵子块的读取,有利于充分利用片上缓存的存储空间。
在本实施例中,当片上缓存可以容纳2个以上的矩阵子块时,通过本实施例中的方法可以使得片上缓存读取矩阵子块的操作可以和阵列处理机对矩阵子块的运算方式以流水线方式并行执行。以片上缓存容纳2个矩阵子块为例,片上缓存读取矩阵子块的操作可以和阵列处理机对矩阵子块的运算方式可以以乒乓流水的方式执行。需要说明的是,本申请的技术方案中可以包括步骤604和步骤605中的其中一个,也可以同时步骤604和步骤605。
在本实施例的一些可选实现方式中,上述矩阵子块的大小与阵列处理机每次操作的最大计算量以及片上缓存的存储空间匹配。通常,可以将矩阵子块的大小与阵列处理机每次操作的最大矩阵的大小设置为相同,以使阵列处理机的能力得到充分使用。此外,还可以将片上缓存中用于存储待计算数据的存储空间设置为矩阵子块的大小的N倍(N大于等于2),从而使得片上缓存可以预先读取待计算的后续矩阵子块。
本申请的上述实施例提供的方法,访存指令和计算指令以流水线方式并行执行,进一步提高了计算效率。
需要说明的是,附图中的框图和流程图,图示了按照本申请各种实施例的***、处理器和方法的可能实现的体系架构、功能和操作。应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。
作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中所述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当所述一个或者多个程序被一个包括主机交互器件、片外存储器、片上缓存、阵列处理机的处理器执行时,使得所述处理器:通过所述主机交互器件与所述处理器所连接的主机交互数据与指令,其中,所交互的数据以矩阵为粒度;将从所述主机接收的、待执行矩阵运算的矩阵存储在片外存储器上;将从所述主机接收的外部指令转换成一系列访存指令与一系列计算指令,并执行所转换成的指令,其中,所述外部指令包括矩阵运算指令,所述访存指令用于控制所述片外存储器与片上缓存之间以矩阵子块为粒度进行数据交互,所述计算指令用于控制阵列处理机对所述片上缓存中的矩阵子块执行矩阵运算操作。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (14)
1.一种处理器,其特征在于,所述处理器包括主机交互器件、指令控制器件、片外存储器、片上缓存、阵列处理机,其中:
所述主机交互器件,用于与所述处理器所连接的主机交互数据与指令,其中,所交互的数据以矩阵为粒度;
所述片外存储器,用于存储从所述主机接收的、待执行矩阵运算的矩阵;
所述指令控制器件,用于将从所述主机接收的外部指令转换成一系列访存指令与一系列计算指令并执行所转换成的指令,其中,所述外部指令包括矩阵运算指令,所述访存指令用于控制所述片外存储器与所述片上缓存之间以矩阵子块为粒度进行数据交互,所述计算指令用于控制所述阵列处理机对所述片上缓存中的矩阵子块执行矩阵运算操作;
所述处理器还包括用于执行激活函数计算操作的激活处理器件;以及
所述将从所述主机接收的外部指令转换成一系列访存指令与一系列计算指令,还包括:
在所述外部指令还包括激活函数计算指令时,生成用于控制所述激活处理器件工作的激活指令。
2.根据权利要求1所述的处理器,其特征在于,所述阵列处理机中的多个处理单元用于并行执行所述矩阵运算操作的子运算操作。
3.根据权利要求1所述的处理器,其特征在于,所述指令控制器件还用于:
在所述外部指令还包括激活函数计算指令时,还生成用于将所述阵列处理机对矩阵子块执行矩阵运算操作所生成的结果矩阵子块流水传输至所述激活处理器件的控制指令。
4.根据权利要求1所述的处理器,其特征在于,所述指令控制器件包括:
访存指令器件,用于生成一系列访存指令并控制访存指令的执行;
计算指令器件,用于生成一系列计算指令并控制计算指令的执行。
5.根据权利要求4所述的处理器,其特征在于,所述访存指令器件进一步用于:
在通过访存指令每完成一次将待处理的矩阵子块从所述片外存储器读取到所述片上缓存的操作时,向所述计算指令器件发送第一通知信号;以及
所述计算指令器件进一步用于:
响应于所述第一通知信号,执行计算指令以控制所述阵列处理机对所述片上缓存中读取完成的矩阵子块按序执行矩阵运算操作。
6.根据权利要求4或5所述的处理器,其特征在于,所述计算指令器件进一步用于:
在通过计算指令每完成一次矩阵子块的矩阵运算操作时,向所述访存指令器件发送第二通知信号;以及
所述访存指令器件进一步用于:
响应于所述第二通知信号,执行将所述片外存储器中矩阵的下一个矩阵子块读取到所述片上缓存的访存指令。
7.根据权利要求1所述的处理器,其特征在于,所述矩阵子块的大小与所述阵列处理机每次操作的最大计算量以及所述片上缓存的存储空间匹配。
8.一种用于在处理器上执行指令的方法,其特征在于,所述处理器包括主机交互器件、片外存储器、片上缓存、阵列处理机,所述方法包括:
通过所述主机交互器件与所述处理器所连接的主机交互数据与指令,其中,所交互的数据以矩阵为粒度;
将从所述主机接收的、待执行矩阵运算的矩阵存储在所述片外存储器上;
将从所述主机接收的外部指令转换成一系列访存指令与一系列计算指令,并执行所转换成的指令,其中,所述外部指令包括矩阵运算指令,所述访存指令用于控制所述片外存储器与所述片上缓存之间以矩阵子块为粒度进行数据交互,所述计算指令用于控制所述阵列处理机对所述片上缓存中的矩阵子块执行矩阵运算操作;
所述处理器还包括用于执行激活函数计算操作的激活处理器件;以及
所述将从所述主机接收的外部指令转换成一系列访存指令与一系列计算指令,还包括:
在所述外部指令还包括激活函数计算指令时,生成用于控制所述激活处理器件工作的激活指令。
9.根据权利要求8所述的方法,其特征在于,所述阵列处理机中的多个处理单元用于并行执行所述矩阵运算操作的子运算操作。
10.根据权利要求8所述的方法,其特征在于,所述处理器还包括用于执行激活函数计算操作的激活处理器件;以及
所述将从所述主机接收的外部指令转换成一系列访存指令与一系列计算指令,还包括:
在所述外部指令还包括激活函数计算指令时,生成用于控制所述激活处理器件工作的激活指令。
11.根据权利要求10所述的方法,其特征在于,所述将从所述主机接收的外部指令转换成一系列访存指令与一系列计算指令,还包括:
在所述外部指令还包括激活函数计算指令时,还生成用于将所述阵列处理机对矩阵子块执行矩阵运算操作所生成的结果矩阵子块流水传输至所述激活处理器件的控制指令。
12.根据权利要求8所述的方法,其特征在于,所述方法还包括:
响应于访存指令每完成一次将待处理的矩阵子块从所述片外存储器读取到所述片上缓存的操作时,执行计算指令以控制所述阵列处理机对所述片上缓存中读取完成的矩阵子块按序执行矩阵运算操作。
13.根据权利要求8或12所述的方法,其特征在于,所述方法还包括:
响应于计算指令每完成一次矩阵子块的矩阵运算操作时,执行将所述片外存储器中矩阵的下一个矩阵子块读取到所述片上缓存的访存指令。
14.根据权利要求8所述的方法,其特征在于,所述矩阵子块的大小与所述阵列处理机每次操作的最大计算量以及所述片上缓存的存储空间匹配。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610621990.XA CN107678781B (zh) | 2016-08-01 | 2016-08-01 | 处理器以及用于在处理器上执行指令的方法 |
US15/279,217 US10127040B2 (en) | 2016-08-01 | 2016-09-28 | Processor and method for executing memory access and computing instructions for host matrix operations |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610621990.XA CN107678781B (zh) | 2016-08-01 | 2016-08-01 | 处理器以及用于在处理器上执行指令的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107678781A CN107678781A (zh) | 2018-02-09 |
CN107678781B true CN107678781B (zh) | 2021-02-26 |
Family
ID=61009690
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610621990.XA Active CN107678781B (zh) | 2016-08-01 | 2016-08-01 | 处理器以及用于在处理器上执行指令的方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10127040B2 (zh) |
CN (1) | CN107678781B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102586173B1 (ko) * | 2017-10-31 | 2023-10-10 | 삼성전자주식회사 | 프로세서 및 그 제어 방법 |
CN111767995B (zh) * | 2019-04-02 | 2023-12-05 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111176582A (zh) * | 2019-12-31 | 2020-05-19 | 北京百度网讯科技有限公司 | 矩阵存储方法、矩阵访问方法、装置和电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6901422B1 (en) * | 2001-03-21 | 2005-05-31 | Apple Computer, Inc. | Matrix multiplication in a vector processing system |
CN102360344A (zh) * | 2011-10-10 | 2012-02-22 | 西安交通大学 | 矩阵处理器及其指令集和嵌入式*** |
CN102880594A (zh) * | 2012-10-17 | 2013-01-16 | 电子科技大学 | 基于多核dsp的并行矩阵全选主元高斯约旦求逆算法 |
CN103106175A (zh) * | 2013-01-23 | 2013-05-15 | 杭州士兰微电子股份有限公司 | 基于共享寄存器和流水处理的处理器阵列 |
CN104699631A (zh) * | 2015-03-26 | 2015-06-10 | 中国人民解放军国防科学技术大学 | Gpdsp中多层次协同与共享的存储装置和访存方法 |
CN104899182A (zh) * | 2015-06-09 | 2015-09-09 | 中国人民解放军国防科学技术大学 | 一种支持可变分块的矩阵乘加速方法 |
CN105512723A (zh) * | 2016-01-20 | 2016-04-20 | 南京艾溪信息科技有限公司 | 一种用于稀疏连接的人工神经网络计算装置和方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6000027A (en) * | 1992-08-25 | 1999-12-07 | Texas Instruments Incorporated | Method and apparatus for improved graphics/image processing using a processor and a memory |
US6898691B2 (en) * | 2001-06-06 | 2005-05-24 | Intrinsity, Inc. | Rearranging data between vector and matrix forms in a SIMD matrix processor |
US7237065B2 (en) * | 2005-05-24 | 2007-06-26 | Texas Instruments Incorporated | Configurable cache system depending on instruction type |
RU2586589C2 (ru) * | 2011-12-30 | 2016-06-10 | Интел Корпорейшн | Модуль сопроцессора кэша |
-
2016
- 2016-08-01 CN CN201610621990.XA patent/CN107678781B/zh active Active
- 2016-09-28 US US15/279,217 patent/US10127040B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6901422B1 (en) * | 2001-03-21 | 2005-05-31 | Apple Computer, Inc. | Matrix multiplication in a vector processing system |
CN102360344A (zh) * | 2011-10-10 | 2012-02-22 | 西安交通大学 | 矩阵处理器及其指令集和嵌入式*** |
CN102880594A (zh) * | 2012-10-17 | 2013-01-16 | 电子科技大学 | 基于多核dsp的并行矩阵全选主元高斯约旦求逆算法 |
CN103106175A (zh) * | 2013-01-23 | 2013-05-15 | 杭州士兰微电子股份有限公司 | 基于共享寄存器和流水处理的处理器阵列 |
CN104699631A (zh) * | 2015-03-26 | 2015-06-10 | 中国人民解放军国防科学技术大学 | Gpdsp中多层次协同与共享的存储装置和访存方法 |
CN104899182A (zh) * | 2015-06-09 | 2015-09-09 | 中国人民解放军国防科学技术大学 | 一种支持可变分块的矩阵乘加速方法 |
CN105512723A (zh) * | 2016-01-20 | 2016-04-20 | 南京艾溪信息科技有限公司 | 一种用于稀疏连接的人工神经网络计算装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
US20180032336A1 (en) | 2018-02-01 |
US10127040B2 (en) | 2018-11-13 |
CN107678781A (zh) | 2018-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107729989B (zh) | 一种用于执行人工神经网络正向运算的装置及方法 | |
JP6905573B2 (ja) | 計算装置と計算方法 | |
CN108009126B (zh) | 一种计算方法及相关产品 | |
CN107957976B (zh) | 一种计算方法及相关产品 | |
CN110163363B (zh) | 一种计算装置及方法 | |
KR20230165890A (ko) | 신경망 프로세서에서의 배치 프로세싱 | |
CN108121688B (zh) | 一种计算方法及相关产品 | |
CN108108190B (zh) | 一种计算方法及相关产品 | |
CN110825436B (zh) | 应用于人工智能芯片的计算方法和人工智能芯片 | |
CN115880132B (zh) | 图形处理器、矩阵乘法任务处理方法、装置及存储介质 | |
CN107678781B (zh) | 处理器以及用于在处理器上执行指令的方法 | |
US20230128529A1 (en) | Acceleration system, method and storage medium based on convolutional neural network | |
CN107957975B (zh) | 一种计算方法及相关产品 | |
CN107957977B (zh) | 一种计算方法及相关产品 | |
CN115310037A (zh) | 矩阵乘法计算单元、加速单元、计算***和相关方法 | |
CN114443559A (zh) | 可重构算子单元、处理器、计算方法、装置、设备及介质 | |
CN109583579B (zh) | 计算装置及相关产品 | |
CN109711540B (zh) | 一种计算装置及板卡 | |
CN108108189B (zh) | 一种计算方法及相关产品 | |
CN109740730B (zh) | 运算方法、装置及相关产品 | |
CN108021393B (zh) | 一种计算方法及相关产品 | |
CN108037908B (zh) | 一种计算方法及相关产品 | |
CN107977231B (zh) | 一种计算方法及相关产品 | |
CN111260070B (zh) | 运算方法、装置及相关产品 | |
CN111260046B (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 | ||
EE01 | Entry into force of recordation of patent licensing contract | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20180209 Assignee: Kunlun core (Beijing) Technology Co.,Ltd. Assignor: BEIJING BAIDU NETCOM SCIENCE AND TECHNOLOGY Co.,Ltd. Contract record no.: X2021980009778 Denomination of invention: Processor and method for executing instructions on the processor Granted publication date: 20210226 License type: Common License Record date: 20210923 |