CN110045960B - 基于芯片的指令集处理方法、装置及存储介质 - Google Patents
基于芯片的指令集处理方法、装置及存储介质 Download PDFInfo
- Publication number
- CN110045960B CN110045960B CN201810041814.8A CN201810041814A CN110045960B CN 110045960 B CN110045960 B CN 110045960B CN 201810041814 A CN201810041814 A CN 201810041814A CN 110045960 B CN110045960 B CN 110045960B
- Authority
- CN
- China
- Prior art keywords
- instruction set
- chip
- deep learning
- instruction
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 18
- 238000012545 processing Methods 0.000 claims abstract description 74
- 238000013135 deep learning Methods 0.000 claims abstract description 61
- 238000000034 method Methods 0.000 claims abstract description 59
- 238000013136 deep learning model Methods 0.000 claims abstract description 58
- 239000000872 buffer Substances 0.000 claims abstract description 48
- 238000004364 calculation method Methods 0.000 claims description 34
- 238000004458 analytical method Methods 0.000 claims description 22
- 230000006835 compression Effects 0.000 claims description 21
- 238000007906 compression Methods 0.000 claims description 21
- 238000012549 training Methods 0.000 claims description 7
- 238000012916 structural analysis Methods 0.000 claims description 4
- 238000005065 mining Methods 0.000 claims description 2
- 238000013433 optimization analysis Methods 0.000 claims description 2
- 230000003993 interaction Effects 0.000 abstract description 16
- 230000006870 function Effects 0.000 description 20
- 230000001133 acceleration Effects 0.000 description 17
- 230000008569 process Effects 0.000 description 17
- 239000011159 matrix material Substances 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000002093 peripheral effect Effects 0.000 description 10
- 238000011176 pooling Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 4
- 230000004913 activation Effects 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000013527 convolutional neural network Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000010606 normalization Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 239000000919 ceramic Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012821 model calculation Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000012356 Product development Methods 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 238000001994 activation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001960 triggered effect 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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/045—Combinations of networks
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computer Hardware Design (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Medical Informatics (AREA)
- Neurology (AREA)
- Devices For Executing Special Programs (AREA)
- Advance Control (AREA)
Abstract
本发明实施例公开了一种基于芯片的指令集处理方法、装置及计算机可读存储介质,属于数据处理技术领域。方法包括:基于芯片的架构对待加速的深度学习模型进行编译,得到与芯片匹配的待处理的深度学习指令集;对待处理的深度学习指令集进行压缩处理,得到压缩后的指令集;将所述压缩后的指令集通过写寄存器的方式存储至所述芯片的指令集缓冲区中,以用于执行对应的任务。通过对待处理的深度学习指令集进行压缩处理,可以降低对存储空间的需求;将压缩后的指令集通过写寄存器的方式存储至芯片的指令集缓冲区中,实现指令寄存器化,降低指令交互的开销。
Description
技术领域
本发明涉及数据处理技术领域,特别涉及一种基于芯片的指令集处理方法、装置及存储介质。
背景技术
随着深度学习的持续演进以及数据中心体系架构的重大变革,深度学习网络广泛应用在图像分类及检测中,各种深度学习模型也应运而生。然而,由于网络结构复杂、参数过多,计算时间过长使其应用受到了一定的限制。因此,对模型压缩、模型加速成为了深度学习领域比较热门的一个研究方向,而其中非常重要的一项研究就是高效的深度学习指令集的处理机制。
在相关技术中,主要通过编译器将深度学习模型编译成指令集,然后通过直接使用该指令集驱动芯片的各功能模块执行指令对应的任务。
在相关技术中,由于是直接使用指令集驱动芯片的各功能模块执行指令对应的任务,因而指令的交互较为频繁,开销大,特别是对于复杂模型,指令集占用较多存储空间。
发明内容
本发明实施例提供了一种基于芯片的指令集处理方法、装置及计算机可读存储介质,可以解决相关技术中存在的技术问题,具体技术方案如下:
一方面,提供了一种基于芯片的指令集处理方法,所述方法包括:
基于芯片的架构对待加速的深度学习模型进行编译,得到与所述芯片匹配的待处理的深度学习指令集;
对所述待处理的深度学习指令集进行压缩处理,得到压缩后的指令集;
对所述压缩后的指令集进行译码,得到译码后的指令信息;
将所述压缩后的指令集通过写寄存器的方式存储至所述芯片的指令集缓冲区中,以用于执行对应的任务。
一方面,提供了一种基于芯片的指令集处理方法,所述方法包括:
获取任务处理请求;
根据所述任务处理请求从芯片的指令集缓冲区中获取压缩后的指令集;
对所述压缩后的指令集进行译码,得到译码后的指令信息;
将所述译码后的指令信息进行寄存器的寄存更新操作;
根据寄存更新操作控制对应的功能模块执行所述指令信息对应的任务。
一方面,还提供了一种基于芯片的指令集处理装置,所述装置包括:
模型指令编译模块,用于基于芯片的架构对待加速的深度学习模型进行编译,得到与所述芯片匹配的待处理的深度学习指令集;
指令集压缩模块,用于对所述待处理的深度学习指令集进行压缩处理,得到压缩后的指令集;
指令集缓存模块,用于将所述压缩后的指令集通过写寄存器的方式存储至所述芯片的指令集缓冲区中,以用于执行对应的任务。
一方面,提供了一种基于芯片的指令集处理装置,所述装置包括:
第一获取模块,用于获取任务处理请求;
第二获取模块,用于根据所述任务处理请求从指令集缓冲区中获取压缩后的指令集;
指令集译码模块,用于对所述压缩后的指令集进行译码,得到译码后的指令信息;
寄存更新模块,用于将所述译码后的指令信息进行寄存器的寄存更新操作;
流程控制模块,用于根据寄存更新操作控制对应的功能模块执行所述指令信息对应的任务。
还提供了一种计算机设备,所述计算机设备包含处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述基于芯片的指令集处理方法。
还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述基于芯片的指令集处理方法。
本发明提供的技术方案可以包括以下有益效果:
通过对待加速的深度学习指令集进行压缩处理,可以降低对存储空间的需求;此外,将压缩后的指令集通过写寄存器的方式存储至芯片的指令集缓冲区中,实现指令寄存器化,从而后续在对压缩后的指令集进行译码得到指令信息后,通过指令信息实现任务的执行,能够降低执行任务时的指令交互的次数,减少交互开销。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一示例性实施例示出的一种基于芯片的指令集处理***架构示意图;
图2是本发明一示例性实施例示出的一种基于芯片的指令集处理方法流程图;
图3是本发明一示例性实施例示出的一种内存架构示意图;
图4是本发明一示例性实施例示出的一种深度学习指令集的压缩示意图;
图5是本发明一示例性实施例示出的一种基于芯片的指令集处理方法流程图;
图6是本发明一示例性实施例示出的一种深度学习指令集的处理过程示意图;
图7是本发明一示例性实施例示出的一种深度学习指令集的处理过程中的流程控制图;
图8是本发明一示例性实施例示出的一种基于芯片的指令集处理装置的结构示意图;
图9是本发明一示例性实施例示出的一种基于芯片的指令集处理装置的结构示意图;
图10是本发明一示例性实施例示出的一种终端的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。
随着深度学习的持续演进以及数据中心体系架构的重大变革,FPGA/ASIC(Application Specific Integrated Circuit,特定用途集成电路)等芯片作为一种异构加速解决方案逐渐走入到了互联网数据中心。由于在计算能力、响应延迟、可重构等方面的优势特性,FPGA/ASIC在深度学习模型加速方面的应用愈加广泛;此外,以深度学习为代表的AI(Artificial Intelligence,人工智能)算法依旧在快速的演进阶段,传统的以模型定制加速的方法无法适应算法的快速迭代,因此,设计具备一定通用性的基于芯片(如FPGA/ASIC)的深度学习模型的加速方案十分必要。
然而,在兼备通用性的基础上,充分发挥FPGA/ASIC等芯片的加速性能需要考虑非常多的因素,其中非常重要的一项就是高效的深度学习指令集的处理机制,为此,本发明实施例针对FPGA/ASIC等芯片在深度学习模型的加速领域的应用提出了一种高效的基于芯片的指令集处理方法,该方法相较于相关技术能够以更少的资源来兼容不同模型的加速。
在具体实施过程中,本发明实施例提供的基于芯片的指令集处理方法可应用于如图1所示的***架构中,该***架构可以设置于终端或服务器等设备中。如图1所示,该***架构包括深度学习模型101、编译器102、指令集压缩单元103、PCIe104、指令集缓冲区105、流程控制及指令译码单元106、寄存器107以及功能模块。
其中,深度学习模型101,即为待加速的深度学习模型。深度学习模型101,用于发现数据的分布特征,常用于分类、检测等应用中;在实际实施时,深度学习模型101可以根据具体应用场景进行选择,例如,根据具体应用场景选择CNN(Convolutional NeuralNetwork,卷积神经网络)模型、DNN(Deep Neural Network,深度神经网络)模型、或RNN(recurrent neural network,递归神经网络)模型等。
编译器102,用于实现深度学习模型101到指令集的映射,即对深度学习模型101进行编译,得到待处理的深度学习指令集。
指令集压缩单元103,用于对待处理的深度学习指令集进行压缩,压缩后的指令集通过PCIe104下发到指令集缓冲区105。
PCIe104,是一种高速串行计算机扩展总线,用于指令集的传输。
指令集缓冲区105,用于对指令集进行缓存。
流程控制及指令译码单元106,用于当检测到有新的任务到来时,从指令集缓冲区105中获取指令并进行译码,得到指令信息之后,根据指令信息对寄存器107及功能模块进行流程控制。
寄存器107与功能模块可以看作是模型加速器,即芯片加速器,寄存器107与功能模块一一对应,不同的寄存器107用于寄存指令信息中的操作数信息,该操作数信息用于指示指令执行时所需数据的来源。
功能模块,用于在流程控制及指令译码单元106的控制下,根据与其对应的寄存器107中寄存的操作数信息执行相应的功能。
如图1所示,功能模块的数量可以为一至多个,不同功能模块可以根据指令所需的处理方式进行设置。例如,包括但不限于基本计算单元(PE)1081、累加单元1082、激活单元1083、归一化(Normalizations)池化(pooling)单元1084以及内存访问单元1085等。
接下来,结合图1所示的***架构,以FPGA芯片为例,对本发明实施例提供的基于芯片的指令集处理方法进行解释说明。如图2所示,该方法包括:
在步骤201中,基于芯片的架构对待加速的深度学习模型进行编译,得到与芯片匹配的待处理的指令集;
在一种实现方式中,该步骤可包括如下几个子步骤:
步骤1:根据应用场景选择匹配的深度学习模型;
其中,应用场景包括但不限于图片分类、语音识别、智能推荐等。由于不同模型在不同场景下有各自的优势,因而可以根据应用场景选择匹配的深度学习模型。例如,在图片分类或图像处理的应用场景下,可以选择CNN模型;在语音识别的应用场景下,可以选择DNN模型或RNN模型。
步骤2:对选择的深度学习模型进行训练,得到待加速的深度学习模型;
当选择确定深度学***台上自动运行模型,可被用于语音识别或图像识别等多项机器深度学习领域。具体选择哪种框架训练模型,可根据实际情况进行选择,本发明实施例对此不作具体限定。
步骤3:基于芯片的架构对待加速的深度学习模型进行结构分析,根据分析结果对待加速的深度学习模型进行编译,得到与芯片匹配的待处理的深度学习指令集。
基于芯片的架构对得到的待加速的深度学习模型进行结构分析时,本发明实施例以更高的MAC(Multiply and Accumlate,乘加)DSP(Digital Signal Processing,数字信号处理)计算效率以及更少的内存访问需求为目标来进行分析,主要包括数据依赖关系分析、模型结构的优化以及可变精度定点化这几部分。每个部分的具体实现方式如下:
1)数据依赖关系分析
主要基于芯片的架构分析和挖掘模型中可流水化的计算以及可并行化的计算。其中,流水化的计算可以提高加速器中的计算单元利用率,并行化的计算可以在同一时刻利用尽量多的计算单元。
以FPGA芯片为例,对于流水化的计算,分析部分包括数据从DDR(Double DataRate,双倍速率)内存加载到FPGA芯片上(即加速器)SRAM(Static Random Access Memory,静态随机存取存储器)的操作与PE进行计算的流水,通过此项优化将内存访问的时间重叠;DSP计算整列的计算控制过程,保证DSP利用率的提升。
关于并行化的计算,需要重点分析PE计算阵列与激活、pooling以及归一化等功能模块之间的并行关系,如何确定好数据依赖关系以及防止冲突是此处设计关键。
2)模型结构优化
主要涉及两个方面:寻找模型结构优化以及支持动态精度调整的定点化。
FPGA是支持大量计算并行的器件,从模型结构上寻找更高维度的并行性,对于计算效率以及减少内存访问都十分有意义。例如,在一个深度学习模型中,在不同分支的第一层1x1卷积层,其输入数据完全一致,且卷积层的stride(卷积核的步长)以及pad(扩充边缘)均一致,那么,可以在输出特征图维度上对齐进行叠加,叠加后对输入数据的访存需求就降低到了原来的1/3,即降低了访问内存的需求,增加了计算效率。
另一方面,本发明实施例提供的方法可采用支持动态精度调整的定点化int16方案。其中,Int16是一种整数数据类型定义的标示符,表示值介于-32768到+32767之间的有符号整数。通过此种方法,训练好的模型可以直接通过编译器进行部署,而几乎无任何精度损失。
在上述分析基础上,带宽问题始终是计算机体系结构中制约性能的瓶颈之一,同时内存访问直接影响加速器功耗效率。为了最大化的减少模型计算过程中的DDR访存,本发明实施例提供了一种如图3所示的内存架构:
●Input buffer(输入缓冲)以及output buffer(输出缓冲)ping-pong设计,
最大化流水以及并行能力;
●支持Input buffer和output buffer之间的inner-copy(内部拷贝)操作;
●支持Input buffer和output buffer之间的cross-copy(交叉拷贝)操作;
由于现有的内存访问不支持上述Input buffer和output buffer之间的inner-copy操作以及cross-copy操作,因而当有数据处理请求从PCIe DMA进入到Input buffer,再通过功能模块处理,输出至output buffer之后,需要写入DDR4内存中。DDR4属于片外内存,再次访问时,速度较慢。
对此,为了提高速度,本发明实施例通过上述这种内存架构,在进行内存访问时,由于支持Input buffer和output buffer之间的inner-copy操作以及cross-copy操作,当有数据处理请求从PCIe DMA进入到Input buffer,再通过功能模块处理,输出至outputbuffer之后,如果后续还需要对数据进行使用,则可以先不写入DDR4内存,而是再返回至Input buffer。由于Input buffer和outputbuffer为芯片内缓冲,因而与DDR4的片外访问相比,不仅提高了访问速度,还降低了功耗。
基于上述分析,对于大多数目前主流模型,加速器可以做到将中间数据全部缓存在FPGA片上,除了模型权重的加载外,中间无需消耗任何额外的内存操作。对于无法将中间层feature map(特征图)完全存储在FPGA片上的模型,本发明实施例采用在Channel(通道)维度上引入了slice分片的概念,在featuremap维度上引入了part分片的概念。通过编译器将一次卷积或是池化/归一化操作进行合理的拆分,将DDR访存操作与FPGA加速计算进行流水化操作,在优先保证DSP计算效率的前提下尽量减少了DDR的访存需求。
综上所述,通过上述分析计算过程中的数据依赖及并行关系,根据深度学习模型各个层的参数信息,将一个完整的深度学习模型拆分成芯片可以支持的更小的计算单元。根据上述分析和拆分过程对待加速的深度学习模型进行编译,得到与芯片匹配的待处理的深度学习指令集。
其中,与芯片匹配的待处理的深度学习指令集可以为根据芯片加速器中各功能模块的处理能力选择的粗粒度的指令集,从而减少模型映射后的指令集数量,进而使用较少的存储空间,进一步减少指令交互开销。
此外,由于对于某种特定的任务,模型训练完成上线部署运行之后的一段时间内保持不变,因此,深度学习模型对应的指令集可以在芯片加速器初始化时完成加载,无需针对每一次workload(任务)下发,这样可以大大减少指令交互。
在步骤202中,对待处理的深度学习指令集进行压缩处理,得到压缩后的指令集;
在步骤201的基础上,对于通用的深度学习加速器而言,深度学习模型被分解成了很小的可执行单元在硬件中被执行。以大矩阵乘法的执行为例:假如深度学习加速器需要拆分执行n次完成计算,每一次计算需要有k条指令来完成。指令内容包括矩阵长宽高维度、矩阵源地址、矩阵目的地址、矩阵是否需要完成累加等信息。正常情况下,需要n*k条指令来完成本次大矩阵乘法。但对于深度学习这种计算密度很大的应用场景,被拆分后的任务的指令集有很大一部分是相同的,也就有被压缩的空间。
因此,当获取到待处理的深度学习指令集后,为了减少后续指令交互的开销,本发明实施例采取了对待处理的深度学习指令集进行压缩处理的方式,具体压缩处理的方式包括但不限于如下任一种:
第一种压缩处理方式:相同内容压缩。
如图4所示的深度学习指令集的压缩示意图,考虑到待处理的深度学习指令集中的每个指令包括操作码和操作数信息,因此,对待处理的深度学习指令集进行压缩处理时,将待处理的深度学习指令集中具有相同操作码的指令进行压缩处理,得到压缩后的指令集。
第二种压缩处理方式:基于位宽压缩。
该种方式中,可以获取待处理的深度学习指令集中每条指令的位宽,将位宽小于预设数值的指令进行合并处理,得到压缩后的指令集。
其中,该预设数值可以根据实际情况进行设置,以预设数值设置为32bit(比特)为例,获取每条指令的位宽后,将不足32bit内容的指令进行合并。例如,一条指示kernelsize(内核大小)的指令的位宽为5bit,一条指示feature map size(特征图大小)的指令的位宽为26bit,则可以将这两条指令进行合并,得到压缩后的一条指令。
当然,除上述压缩方式外,还可以采用其他压缩方式,本发明实施例不对具体压缩方式进行限定。
在步骤203中,将压缩后的指令集通过写寄存器的方式存储至芯片的指令集缓冲区中,以用于执行对应的任务。
无论采用哪种方式进行压缩,压缩后的指令集可以是一定位宽(例如32)的寄存器数组,这些压缩后的指令集通过PCIe写寄存器的方式写入到指令集缓冲区。该指令集缓冲区可以由BRAM组成,则该过程的实现需要占用芯片的BRAM资源,然而,由于指令集进行了压缩,则使用的BRAM资源较不压缩的情况变少,因而降低了资源使用率,对产品开发来说具有积极的意义。
本发明实施例提供的方法,通过对待加速的深度学习指令集进行压缩处理,可以降低对存储空间的需求;此外,将压缩后的指令集通过写寄存器的方式存储至芯片的指令集缓冲区中,实现指令寄存器化,从而在执行任务时,能够降低指令交互的次数,减少交互开销。
本发明实施例提供了一种基于芯片的指令集处理方法,该方法在上述图2所示实施例的基础上,针对执行任务时的指令集处理方式进行解释说明。如图5所示,该方法包括:
在步骤501中,获取任务处理请求;
由于深度学习模型由一个个layer(层)构成,每个layer核心是由几种相对固定的计算算子构成,各种深度学习模型架构之间的主要区别在于如何排列组合这些算子,如一些深度学习模型的基本构成均是卷积计算以及激活函数,而芯片实现的是基本算子,例如如何完成卷积计算、矩阵乘矩阵计算以及激活函数等。因此,采用上述图2所示实施例的方法将深度学习模型映射为指令集后,每一组指令集可以驱动芯片中对应的功能模块执行一次计算任务,一次计算任务可以对应一个任务处理请求。
整个深度学习模型的完整计算流程可能需要有多次计算任务,则各个计算任务对应的任务处理请求可以构成任务请求队列。当一次任务执行完毕后,从任务请求队列中获取新的任务处理请求。
在步骤502中,根据任务处理请求从芯片的指令集缓冲区中获取压缩后的指令集;
具体实施时,当获取到新的任务处理请求后,即触发从芯片的指令集缓冲区中获取压缩后的指令集。
如果各个计算任务对应的任务处理请求构成任务请求队列,则当一次任务执行完毕,从任务请求队列中获取到下一个新的任务处理请求后,根据该新的任务处理请求从芯片的指令集缓冲区中获取压缩后的指令集。
在步骤503中,对压缩后的指令集进行译码,得到译码后的指令信息;
由于每个不同的指令由不同的操作码来区分,因而对压缩后的指令集进行译码时,可以根据操作码来获得指令中的操作数信息,即得到指令信息。
对于一般的深度学习指令集主要包括四种类型的指令信息:computational(计算),logical(逻辑),control(控制)以及data transfer(数据传输)。而每个指令都有对应的Instruction Type(指令类型)域,根据Instruction Type域的定义可以译码出对应的指令内容,即得到对应的指令信息。
当然,实际应用中,还可以根据编译器设置子字段来划分不同的指令类型,进而根据不同的指令类型译码得出对应的指令信息。对于具体的译码方式,本发明实施例不做具体限定。
在步骤504中,将译码后的指令信息进行寄存器的寄存更新操作;
结合图1所示的***架构,每一个功能模块均对应一个指令寄存器,当流程控制及指令译码单元分配过来新的指令信息时,控制寄存器进行寄存更新操作,并控制功能模块执行对应的任务。
其中,寄存器可以认为是一个变量,写入一个值后,如果不去重新赋值,该寄存器的值不会更改。译码后的指令信息中包括操作数信息,不同的寄存器保存有不同的操作数信息;将译码后的指令信息进行寄存器的寄存更新操作,包括:根据译码后的指令信息更新对应的寄存器所保存的操作数信息,即更新寄存器的值。
例如,针对代表channel个数的变量channel_num,在上一次计算时其值是512,即寄存器的值为512;到了这次计算,这个变量是1024,那么根据指令信息,将其赋值成为1024,即将寄存器的值重新赋值为1024,该过程即为寄存更新操作。
在FPGA加速器中,为了支持上述指令集压缩的方式,需要将除功能模块启动指令外的其他指令进行寄存器化。通过寄存器化,每个功能模块通过寄存器将指令中的操作数信息进行保存。
例如,一个任务为进行一次矩阵乘法操作,需要a矩阵的长宽m和n,以及b矩阵的长宽n和k,则m、n和k这三个操作数信息被保存在不同的寄存器中。
在下一次功能模块执行任务启动前,如有新的opcode(操作码)相同的指令,则更新对应的寄存器,无则继续保留相关操作数信息的寄存器状态。
在步骤505中,根据寄存更新操作控制对应的功能模块执行指令信息对应的任务。
由于不同功能模块对应不同的寄存器,指令寄存器化之后,FPGA加速器中的流程控制及指令译码单元通过指令信息控制各个功能模块的执行。具体实现时,根据寄存更新操作控制对应的功能模块执行指令信息对应的任务,包括:控制进行寄存更新操作的寄存器所对应的功能模块,根据寄存更新操作后所保存的操作数信息执行对应的功能操作。
流程控制及指令译码单元通过判断各个功能模块的状态信息来控制指令的获取及执行,进而完成完整模型的加速任务。可选的,功能模块的状态信息可用于反映功能模块的执行状态,如是否正在执行任务,如果否,则可以继续控制指令的获取及执行。此外,为了实现流程控制,各功能模块和芯片加速器流程控制及指令译码单元之间的基本接口包括fetch_inst:执行指令命令;exe_busy:指令执行中;inst_done:指令执行完毕。
每一组指令集的粒度是可以驱动一个单独的功能模块完成一次单独的计算任务。例如,对于Pooling操作,如果需要完成模型中某层数据的pooling操作,无须用逐条的指令驱动一个接一个数据点计算;只需要将pooling计算的参数信息通过指令的方式译码到pooling接口的寄存器中,就可以完成一整次操作,中间具体的计算控制过程由pooling功能模块内部逻辑完成。
同pooling计算原理一样,对应于矩阵计算、卷积计算等也是如此。根据芯片中各功能模块设计的处理能力选择粗粒度的指令集设计可以大规模的减少模型映射后指令集的数量。
基于上述对指令集处理的方法介绍,处理指令集的加速栈可如图6所示,当执行任务时,指令集处理的流程控制过程可如图7所示。
例如,***启动后,根据模型各个层的参数信息,通过上述分析计算过程中的数据依赖及并行关系,将一个完整的深度学习模型拆分成芯片可以支持的更小的计算单元。根据上述分析和拆分过程对待加速的深度学习模型进行编译,得到待处理的深度学习指令集。对深度学习指令集进行压缩处理之后,即完成模型到指令集的初始化过程。压缩后的指令集以写寄存器的方式缓存到指令集缓冲区内。当有任务时,根据任务处理请求从芯片的指令集缓冲区中获取压缩后的指令集,再将压缩后的指令集发送至芯片的流程控制及指令译码单元,由该流程控制及指令译码单元对指令集进行译码,得到指令信息。接下来,便可以读取指令集的指令信息,执行任务。执行任务时,控制寄存器进行寄存更新操作之后,控制功能模块执行对应操作,从而完成任务的处理。如果任务未结束,继续从指令集缓冲区读取指令集,执行任务,直至任务结束,发起中断。等待完成中断之后,返回中断响应。
上述指令集处理的流程控制过程,无需像相关技术那样针对每个指令逐一驱动功能模块执行,而是直接采用指令信息的方式实现一类或一组指令的执行,例如,将一个任务的整个操作的所有指令译码得到指令信息后,仅通过指令信息实现整个任务的执行,执行过程由功能模块根据指令信息内部实现,从而完成一次操作,减少了指令的交互。
本发明实施例提供的方法,通过根据任务处理请求从芯片的指令集缓冲区中获取压缩后的指令集,在对压缩后的指令集进行译码得到指令信息后,通过将译码后的指令信息进行寄存器的寄存更新操作,实现指令寄存器化,从而后续通过指令信息实现任务的执行,能够降低指令交互的次数,减少交互开销。
需要说明的是,上述图2及图5所示的基于芯片的指令集处理方法可以应用于终端或服务器中,还可以应用于云端。例如,该方法可应用于智慧城市、无人机及无人车等场景中,也可以应用于云计算场景中,本申请不对上述方法的具体应用场景进行限定。
本发明实施例提供了一种基于芯片的指令集处理装置,用于执行上述图2所示的方法。如图8所示,本发明实施例提供的基于芯片的指令集处理装置包括:
模型指令编译模块81,用于基于芯片的架构对待加速的深度学习模型进行编译,得到与芯片匹配的待处理的深度学习指令集;
指令集压缩模块82,用于对待处理的深度学习指令集进行压缩处理,得到压缩后的指令集;
指令集缓存模块83,用于将压缩后的指令集通过写寄存器的方式存储至芯片的指令集缓冲区中,以用于执行对应的任务。
在一种实施方式中,模型指令编译模块81,用于根据应用场景选择匹配的深度学习模型;对选择的深度学习模型进行训练,得到待加速的深度学习模型;基于芯片的架构对待加速的深度学习模型进行结构分析,根据分析结果对待加速的深度学习模型进行编译,得到与芯片匹配的待处理的指令集。
在一种实现方式中,模型指令编译模块81,用于基于芯片的架构对待加速的深度学习模型进行依赖关系分析、模型结构的优化分析以及可变精度定点化分析中的至少一种分析。
在一种实现方式中,模型指令编译模块81,用于基于芯片的架构分析和挖掘待加速的深度学习模型中可流水化的计算及可并行化的计算。
其中,待处理的深度学习指令集中的每个指令包括操作码和操作数信息;
在一种实施方式中,指令集压缩模块82,用于将待处理的深度学习指令集中具有相同操作码的指令进行压缩处理,得到压缩后的指令集。
在一种实施方式中,指令集压缩模块82,用于获取待处理的深度学习指令集中每条指令的位宽,将位宽小于预设数值的指令进行合并处理,得到压缩后的指令集。
本发明实施例提供的装置,通过对待加速的深度学习指令集进行压缩处理,可以降低对存储空间的需求;此外,将压缩后的指令集通过写寄存器的方式存储至芯片的指令集缓冲区中,实现指令寄存器化,从而在执行任务时,能够降低指令交互的次数,减少交互开销。
本发明实施例提供了一种基于芯片的指令集处理装置,用于执行如图5所示的方法。如图9所示,本发明实施例提供的装置包括:
第一获取模块901,用于获取任务处理请求;
第二获取模块902,用于根据任务处理请求从指令集缓冲区中获取压缩后的指令集;
指令集译码模块903,用于对压缩后的指令集进行译码,得到译码后的指令信息;
寄存更新模块904,用于将译码后的指令信息进行寄存器的寄存更新操作;
流程控制模块905,用于根据寄存更新操作控制对应的功能模块执行指令信息对应的任务。
在一种实现方式中,译码后的指令信息包括操作数信息,不同的寄存器保存有不同的操作数信息;
寄存更新模块904,用于根据译码后的指令信息更新对应的寄存器所保存的操作数信息。
在一种实施方式中,不同功能模块对应不同的寄存器;流程控制模块905,用于控制进行寄存更新操作的寄存器所对应的功能模块,根据寄存更新操作后所保存的操作数信息执行对应的功能操作。
本发明实施例提供的装置,通过根据任务处理请求从芯片的指令集缓冲区中获取压缩后的指令集,在对压缩后的指令集进行译码得到指令信息后,通过将译码后的指令信息进行寄存器的寄存更新操作,实现指令寄存器化,从而后续通过指令信息实现任务的执行,能够降低指令交互的次数,减少交互开销。
需要说明的是:上述实施例提供的深度学习指令集的处理装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的深度学习指令集的处理装置和深度学习指令集的处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图10示出了本发明一个示例性实施例提供的终端1000的结构框图。该终端1000可以是智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio LayerIV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1000还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端1000包括有:处理器1001和存储器1002。
处理器1001可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1001可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1001也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1001可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1001还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1002可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1002还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1002中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1001所执行以实现本申请中方法实施例提供的深度学习指令集的处理方法。
在一些实施例中,终端1000还可选包括有:***设备接口1003和至少一个***设备。处理器1001、存储器1002和***设备接口1003之间可以通过总线或信号线相连。各个***设备可以通过总线、信号线或电路板与***设备接口1003相连。具体地,***设备包括:射频电路1004、触摸显示屏1005、摄像头1006、音频电路1007、定位组件1008和电源1009中的至少一种。
***设备接口1003可被用于将I/O(Input/Output,输入/输出)相关的至少一个***设备连接到处理器1001和存储器1002。在一些实施例中,处理器1001、存储器1002和***设备接口1003被集成在同一芯片或电路板上;在一些其他实施例中,处理器1001、存储器1002和***设备接口1003中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1004用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1004通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1004将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1004包括:天线***、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1004可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1004还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1005用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1005是触摸显示屏时,显示屏1005还具有采集在显示屏1005的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1001进行处理。此时,显示屏1005还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1005可以为一个,设置终端1000的前面板;在另一些实施例中,显示屏1005可以为至少两个,分别设置在终端1000的不同表面或呈折叠设计;在再一些实施例中,显示屏1005可以是柔性显示屏,设置在终端1000的弯曲表面上或折叠面上。甚至,显示屏1005还可以设置成非矩形的不规则图形,也即异形屏。显示屏1005可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1006用于采集图像或视频。可选地,摄像头组件1006包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1006还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1007可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1001进行处理,或者输入至射频电路1004以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1000的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1001或射频电路1004的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1007还可以包括耳机插孔。
定位组件1008用于定位终端1000的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件1008可以是基于美国的GPS(GlobalPositioning System,全球定位***)、中国的北斗***或俄罗斯的伽利略***的定位组件。
电源1009用于为终端1000中的各个组件进行供电。电源1009可以是交流电、直流电、一次性电池或可充电电池。当电源1009包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端1000还包括有一个或多个传感器1010。该一个或多个传感器1010包括但不限于:加速度传感器1011、陀螺仪传感器1012、压力传感器1013、指纹传感器1014、光学传感器1015以及接近传感器1016。
加速度传感器1011可以检测以终端1000建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1011可以用于检测重力加速度在三个坐标轴上的分量。处理器1001可以根据加速度传感器1011采集的重力加速度信号,控制触摸显示屏1005以横向视图或纵向视图进行用户界面的显示。加速度传感器1011还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器1012可以检测终端1000的机体方向及转动角度,陀螺仪传感器1012可以与加速度传感器1011协同采集用户对终端1000的3D动作。处理器1001根据陀螺仪传感器1012采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1013可以设置在终端1000的侧边框和/或触摸显示屏1005的下层。当压力传感器1013设置在终端1000的侧边框时,可以检测用户对终端1000的握持信号,由处理器1001根据压力传感器1013采集的握持信号进行左右手识别或快捷操作。当压力传感器1013设置在触摸显示屏1005的下层时,由处理器1001根据用户对触摸显示屏1005的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1014用于采集用户的指纹,由处理器1001根据指纹传感器1014采集到的指纹识别用户的身份,或者,由指纹传感器1014根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1001授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1014可以被设置终端1000的正面、背面或侧面。当终端1000上设置有物理按键或厂商Logo时,指纹传感器1014可以与物理按键或厂商Logo集成在一起。
光学传感器1015用于采集环境光强度。在一个实施例中,处理器1001可以根据光学传感器1015采集的环境光强度,控制触摸显示屏1005的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1005的显示亮度;当环境光强度较低时,调低触摸显示屏1005的显示亮度。在另一个实施例中,处理器1001还可以根据光学传感器1015采集的环境光强度,动态调整摄像头组件1006的拍摄参数。
接近传感器1016,也称距离传感器,通常设置在终端1000的前面板。接近传感器1016用于采集用户与终端1000的正面之间的距离。在一个实施例中,当接近传感器1016检测到用户与终端1000的正面之间的距离逐渐变小时,由处理器1001控制触摸显示屏1005从亮屏状态切换为息屏状态;当接近传感器1016检测到用户与终端1000的正面之间的距离逐渐变大时,由处理器1001控制触摸显示屏1005从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图10中示出的结构并不构成对终端1000的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括至少一条指令、至少一段程序、代码集或指令集的存储器,上述至少一条指令、至少一段程序、代码集或指令集可由处理器执行以完成本发明实施例的全部或者部分步骤。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
以上所述仅为本发明可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (11)
1.一种基于芯片的指令集处理方法,其特征在于,所述方法包括:
基于芯片的架构对待加速的深度学习模型进行编译,得到与所述芯片匹配的待处理的深度学习指令集;
若所述待处理的深度学习指令集中的每个指令包括操作码和操作数信息,将待处理的深度学习指令集中具有相同操作码的指令进行压缩处理,得到压缩后的指令集;或者,获取所述待处理的深度学习指令集中每条指令的位宽,将位宽小于预设数值的指令进行合并处理,得到压缩后的指令集;
将所述压缩后的指令集通过写寄存器的方式存储至所述芯片的指令集缓冲区中,以用于执行对应的任务。
2.根据权利要求1所述的方法,其特征在于,所述基于芯片的架构对待加速的深度学习模型进行编译,得到与所述芯片匹配的待处理的深度学习指令集,包括:
根据应用场景选择匹配的深度学习模型;
对选择的深度学习模型进行训练,得到待加速的深度学习模型;
基于芯片的架构对所述待加速的深度学习模型进行结构分析,根据分析结果对所述待加速的深度学习模型进行编译,得到与所述芯片匹配的待处理的深度学习指令集。
3.根据权利要求2所述的方法,其特征在于,所述基于芯片的架构对所述待加速的深度学习模型进行结构分析,包括:
基于芯片的架构对所述待加速的深度学习模型进行依赖关系分析、模型结构的优化分析以及可变精度定点化分析中的至少一种分析。
4.根据权利要求3所述的方法,其特征在于,所述基于芯片的架构对所述待加速的深度学习模型进行依赖关系分析,包括:
基于所述芯片的架构,分析和挖掘所述待加速的深度学习模型中可流水化的计算及可并行化的计算。
5.一种基于芯片的指令集处理方法,其特征在于,所述方法包括:
获取任务处理请求;
根据所述任务处理请求从芯片的指令集缓冲区中获取压缩后的指令集;
对所述压缩后的指令集进行译码,得到译码后的指令信息;
将所述译码后的指令信息进行寄存器的寄存更新操作;
根据寄存更新操作控制对应的功能模块执行所述指令信息对应的任务。
6.根据权利要求5所述的方法,其特征在于,所述译码后的指令信息包括操作数信息,不同的寄存器保存有不同的操作数信息;
所述将所述译码后的指令信息进行寄存器的寄存更新操作,包括:
根据所述译码后的指令信息更新对应的寄存器所保存的操作数信息。
7.根据权利要求5或6所述的方法,其特征在于,不同功能模块对应不同的寄存器;所述根据寄存更新操作控制对应的功能模块执行所述指令信息对应的任务,包括:
控制进行寄存更新操作的寄存器所对应的功能模块,根据寄存更新操作后所保存的操作数信息执行对应的功能操作。
8.一种基于芯片的指令集处理装置,其特征在于,所述装置包括:
模型指令编译模块,用于基于芯片的架构对待加速的深度学习模型进行编译,得到与所述芯片匹配的待处理的深度学习指令集;
指令集压缩模块,用于将待处理的深度学习指令集中具有相同操作码的指令进行压缩处理,得到压缩后的指令集;或者,用于获取所述待处理的深度学习指令集中每条指令的位宽,将位宽小于预设数值的指令进行合并处理,得到压缩后的指令集;
指令集缓存模块,用于将所述压缩后的指令集通过写寄存器的方式存储至所述芯片的指令集缓冲区中,以用于执行对应的任务。
9.一种基于芯片的指令集处理装置,其特征在于,所述装置包括:
第一获取模块,用于获取任务处理请求;
第二获取模块,用于根据所述任务处理请求从指令集缓冲区中获取压缩后的指令集;
指令集译码模块,用于对所述压缩后的指令集进行译码,得到译码后的指令信息;
寄存更新模块,用于将所述译码后的指令信息进行寄存器的寄存更新操作;
流程控制模块,用于根据寄存更新操作控制对应的功能模块执行所述指令信息对应的任务。
10.一种计算机设备,其特征在于,所述计算机设备包含处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1-4任一所述的基于芯片的指令集处理方法或者实现如权利要求5-7任一所述的基于芯片的指令集处理方法。
11.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1-4任一所述的基于芯片的指令集处理方法或者实现如权利要求5-7任一所述的基于芯片的指令集处理方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810041814.8A CN110045960B (zh) | 2018-01-16 | 2018-01-16 | 基于芯片的指令集处理方法、装置及存储介质 |
EP18901705.6A EP3742287A4 (en) | 2018-01-16 | 2018-12-07 | METHOD AND DEVICE FOR PROCESSING COMMAND SETS ON CHIP BASE AND STORAGE MEDIUM |
PCT/CN2018/119732 WO2019141014A1 (zh) | 2018-01-16 | 2018-12-07 | 基于芯片的指令集处理方法、装置及存储介质 |
US16/865,239 US10877924B2 (en) | 2018-01-16 | 2020-05-01 | Instruction set processing method based on a chip architecture and apparatus, and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810041814.8A CN110045960B (zh) | 2018-01-16 | 2018-01-16 | 基于芯片的指令集处理方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110045960A CN110045960A (zh) | 2019-07-23 |
CN110045960B true CN110045960B (zh) | 2022-02-18 |
Family
ID=67273446
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810041814.8A Active CN110045960B (zh) | 2018-01-16 | 2018-01-16 | 基于芯片的指令集处理方法、装置及存储介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10877924B2 (zh) |
EP (1) | EP3742287A4 (zh) |
CN (1) | CN110045960B (zh) |
WO (1) | WO2019141014A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110544234A (zh) * | 2019-07-30 | 2019-12-06 | 北京达佳互联信息技术有限公司 | 图像噪声检测方法、装置、电子设备及存储介质 |
CN110516789B (zh) * | 2019-08-09 | 2022-02-18 | 苏州浪潮智能科技有限公司 | 卷积网络加速器中指令集的处理方法、装置及相关设备 |
CN112667241B (zh) * | 2019-11-08 | 2023-09-29 | 安徽寒武纪信息科技有限公司 | 机器学习指令的转换方法及装置、板卡、主板、电子设备 |
JP2021124849A (ja) * | 2020-02-04 | 2021-08-30 | 富士通株式会社 | 演算処理装置、演算処理装置の制御方法及び演算処理プログラム |
US11327760B2 (en) | 2020-04-09 | 2022-05-10 | Huawei Technologies Co., Ltd. | Method and apparatus for balancing binary instruction burstization and chaining |
CN114063997A (zh) * | 2020-07-31 | 2022-02-18 | 伊姆西Ip控股有限责任公司 | 生成程序代码的方法、设备和计算机程序产品 |
CN111651207B (zh) * | 2020-08-06 | 2020-11-17 | 腾讯科技(深圳)有限公司 | 一种神经网络模型运算芯片、方法、装置、设备及介质 |
CN112114874B (zh) * | 2020-08-20 | 2021-10-15 | 北京百度网讯科技有限公司 | 数据处理方法、装置、电子设备和存储介质 |
CN113467609A (zh) * | 2021-05-28 | 2021-10-01 | 北京脑陆科技有限公司 | 脑机接口bci设备的架构方法、装置、终端及介质 |
CN113254385A (zh) * | 2021-06-02 | 2021-08-13 | 南京蓝洋智能科技有限公司 | 一种网络结构、并行推理模型的编译加载方法及芯片*** |
CN113268269B (zh) * | 2021-06-07 | 2022-10-14 | 中科计算技术西部研究院 | 一种针对动态规划算法的加速方法、***及装置 |
CN115658370B (zh) * | 2022-11-18 | 2023-05-23 | 辉羲智能科技(上海)有限公司 | 一种基于编译器的机器学习加速芯片故障实时探测方法 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ATE208514T1 (de) * | 1993-08-26 | 2001-11-15 | Univ California | Neuronales netzwerk-topographische sensorische organe und verfahren |
US9274796B2 (en) * | 2009-05-11 | 2016-03-01 | Arm Finance Overseas Limited | Variable register and immediate field encoding in an instruction set architecture |
EP2798479A4 (en) * | 2011-12-30 | 2016-08-10 | Intel Corp | CODING TO INCREASE THE DENSITY OF A SET OF INSTRUCTIONS |
US9235812B2 (en) * | 2012-12-04 | 2016-01-12 | Msc Intellectual Properties B.V. | System and method for automatic document classification in ediscovery, compliance and legacy information clean-up |
US10229356B1 (en) * | 2014-12-23 | 2019-03-12 | Amazon Technologies, Inc. | Error tolerant neural network model compression |
CN106485319B (zh) * | 2015-10-08 | 2019-02-12 | 上海兆芯集成电路有限公司 | 具有神经处理单元可动态配置以执行多种数据尺寸的神经网络单元 |
US10671938B2 (en) * | 2016-01-27 | 2020-06-02 | Bonsai AI, Inc. | Artificial intelligence engine configured to work with a pedagogical programming language to train one or more trained artificial intelligence models |
CN205665729U (zh) * | 2016-03-09 | 2016-10-26 | 陈进民 | 细胞/卷积神经网络智能视觉支付加速器 |
US11055063B2 (en) * | 2016-05-02 | 2021-07-06 | Marvell Asia Pte, Ltd. | Systems and methods for deep learning processor |
CN106022472A (zh) * | 2016-05-23 | 2016-10-12 | 复旦大学 | 一种嵌入式深度学习处理器 |
US20180046903A1 (en) * | 2016-08-12 | 2018-02-15 | DeePhi Technology Co., Ltd. | Deep processing unit (dpu) for implementing an artificial neural network (ann) |
US10621486B2 (en) * | 2016-08-12 | 2020-04-14 | Beijing Deephi Intelligent Technology Co., Ltd. | Method for optimizing an artificial neural network (ANN) |
CN106529670B (zh) * | 2016-10-27 | 2019-01-25 | 中国科学院计算技术研究所 | 一种基于权重压缩的神经网络处理器、设计方法、芯片 |
US10157045B2 (en) * | 2016-11-17 | 2018-12-18 | The Mathworks, Inc. | Systems and methods for automatically generating code for deep learning systems |
CN106389078A (zh) * | 2016-11-24 | 2017-02-15 | 贵州大学 | 一种智能导盲眼镜***及其导盲方法 |
US11663450B2 (en) * | 2017-02-28 | 2023-05-30 | Microsoft Technology Licensing, Llc | Neural network processing with chained instructions |
TWI606531B (zh) * | 2017-03-30 | 2017-11-21 | 義守大學 | 適用於三維晶片的缺陷測試方法及系統 |
US11934934B2 (en) * | 2017-04-17 | 2024-03-19 | Intel Corporation | Convolutional neural network optimization mechanism |
US10268795B2 (en) * | 2017-04-20 | 2019-04-23 | Taiwan Semiconductor Manufacturing Company Ltd. | Method and system for timing optimization with detour prediction |
US10310821B2 (en) * | 2017-06-03 | 2019-06-04 | Apple Inc. | Integration of learning models into a software development system |
US11321604B2 (en) * | 2017-06-21 | 2022-05-03 | Arm Ltd. | Systems and devices for compressing neural network parameters |
CN107563512B (zh) * | 2017-08-24 | 2023-10-17 | 腾讯科技(上海)有限公司 | 一种数据处理方法、装置以及存储介质 |
US20190095796A1 (en) * | 2017-09-22 | 2019-03-28 | Intel Corporation | Methods and arrangements to determine physical resource assignments |
-
2018
- 2018-01-16 CN CN201810041814.8A patent/CN110045960B/zh active Active
- 2018-12-07 EP EP18901705.6A patent/EP3742287A4/en not_active Ceased
- 2018-12-07 WO PCT/CN2018/119732 patent/WO2019141014A1/zh unknown
-
2020
- 2020-05-01 US US16/865,239 patent/US10877924B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP3742287A4 (en) | 2021-09-22 |
US10877924B2 (en) | 2020-12-29 |
CN110045960A (zh) | 2019-07-23 |
EP3742287A1 (en) | 2020-11-25 |
US20200257652A1 (en) | 2020-08-13 |
WO2019141014A1 (zh) | 2019-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110045960B (zh) | 基于芯片的指令集处理方法、装置及存储介质 | |
CN108304265B (zh) | 内存管理方法、装置及存储介质 | |
CN108363569B (zh) | 应用中的图像帧生成方法、装置、设备及存储介质 | |
CN110841285A (zh) | 界面元素的显示方法、装置、计算机设备及存储介质 | |
CN113553039B (zh) | 算子的可执行代码的生成方法及装置 | |
CN111694834A (zh) | 图数据的入库方法、装置、设备及可读存储介质 | |
CN111569435B (zh) | 排行榜生成方法、***、服务器及存储介质 | |
WO2022134634A1 (zh) | 视频处理方法及电子设备 | |
CN110673944B (zh) | 执行任务的方法和装置 | |
US20220035745A1 (en) | Data processing method and chip, device, and storage medium | |
CN112162843A (zh) | 工作流执行方法、装置、设备及存储介质 | |
CN109917988B (zh) | 选中内容显示方法、装置、终端及计算机可读存储介质 | |
CN113822322A (zh) | 图像处理模型训练方法及文本处理模型训练方法 | |
CN111813322B (zh) | 存储池的创建方法、装置、设备及存储介质 | |
CN113687816B (zh) | 算子的可执行代码的生成方法及装置 | |
CN111914985B (zh) | 深度学习网络模型的配置方法、装置及存储介质 | |
WO2020181858A1 (zh) | 资源转移方法、装置及存储介质 | |
CN113469322B (zh) | 确定模型的可执行程序的方法、装置、设备及存储介质 | |
CN113361376B (zh) | 获取视频封面的方法、装置、计算机设备及可读存储介质 | |
CN109117895A (zh) | 数据聚类方法、装置及存储介质 | |
CN113448692B (zh) | 分布式图计算的方法、装置、设备及存储介质 | |
CN114817709A (zh) | 排序方法、装置、设备及计算机可读存储介质 | |
CN109816047B (zh) | 提供标签的方法、装置、设备及可读存储介质 | |
CN110851435B (zh) | 一种存储数据的方法及装置 | |
CN109388732B (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 |