CN111831339B - 用于智能处理器的指令执行方法、装置及电子设备 - Google Patents
用于智能处理器的指令执行方法、装置及电子设备 Download PDFInfo
- Publication number
- CN111831339B CN111831339B CN202010688860.4A CN202010688860A CN111831339B CN 111831339 B CN111831339 B CN 111831339B CN 202010688860 A CN202010688860 A CN 202010688860A CN 111831339 B CN111831339 B CN 111831339B
- Authority
- CN
- China
- Prior art keywords
- instruction
- fractal
- execution
- unit
- data
- 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 52
- 238000000354 decomposition reaction Methods 0.000 claims abstract description 121
- 230000015654 memory Effects 0.000 claims abstract description 83
- 238000003860 storage Methods 0.000 claims abstract description 41
- 238000004364 calculation method Methods 0.000 claims description 31
- 238000010801 machine learning Methods 0.000 description 26
- 238000012545 processing Methods 0.000 description 15
- 238000007726 management method Methods 0.000 description 14
- 230000009467 reduction Effects 0.000 description 13
- 238000013461 design Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 4
- 238000007635 classification algorithm Methods 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 239000002245 particle Substances 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 230000000593 degrading effect Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011176 pooling Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012706 support-vector machine Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
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
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本公开提供一种用于智能处理器的指令执行方法及装置,方法包括:指令译码,将执行分形运算的串行分解子指令译码为本地指令及分形运算指令;数据装载,将分形运算所需数据从外部存储单元读取至智能处理器的本地存储单元;操作执行,根据分形运算指令对数据完成分形运算;规约执行,根据本地指令对分形运算的结果进行规约运算;数据写回,将本地存储器中存储的规约运算结果读取至外部存储器;指令译码、数据装载、操作执行、规约执行及数据写回按照流水线方式执行。该方法可以在任意时将全部层次上的全部模块调动起来,提供了智能处理器的数据吞吐率,从而提高了智能处理器的执行效率。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种用于智能处理器的指令执行方法、装置及电子设备。
背景技术
机器学习算法作为一种新兴工具,在产业界得到越来越多的应用,包括图像识别、语音识别、人脸识别、视频分析、智能推荐、游戏竞技等领域。近年来,针对应用越来越广泛的机器学习负载,产业界出现了许多不同规模的机器学习专用计算机。例如,在移动端,一些智能手机采用了机器学习处理器用于人脸识别,在云服务端,采用机器学习计算机进行加速等。
机器学***台上。如果要对每一种硬件上的每一种应用分别编程,就会产生由编程-规模相关性带来的编程难题。因此,研发人员采用编程框架(例如TensorFlow、PyTorch、MXNet)来作为桥接模型,将各种应用和各种硬件桥接起来改善该问题。
但是,编程框架仅仅缓解了用户在编程时遇到的编程难题;对于硬件厂商而言,挑战则变得更严峻了。现在,硬件厂商不仅需要为每一个硬件产品提供编程接口,还需要将每一个编程框架移植到每一个硬件产品上,这产生了巨大的软件开发成本。单独TensorFlow一个框架,就具有超过一千种算子,而在某一硬件上为一个算子做优化就需要一名高级软件工程师工作几个月的时间。
发明内容
针对上述的缺陷,本公开的目的在于提供一种用于智能处理器的指令执行方法、装置及电子设备,用于至少部分解决上述技术问题。
根据本公开的第一方面,提供一种用于智能处理器的指令执行方法,所述指令执行方法包括:指令译码,将执行分形运算的串行分解子指令译码为本地指令及分形运算指令;数据装载,将所述分形运算所需数据从外部存储单元读取至所述智能处理器的本地存储单元;操作执行,根据所述分形运算指令对所述数据完成分形运算;规约执行,根据所述本地指令对所述分形运算的结果进行规约运算;数据写回,将所述本地存储器中存储的规约运算结果读取至所述外部存储器;所述指令译码、数据装载、操作执行、规约执行及数据写回按照流水线方式执行。
在一些实施例中,所述方法还包括:串行分解,将原始的分形指令集分解为所述串行分解子指令。
在一些实施例中,所述串行分解与流水线执行的所述指令译码、数据装载、操作执行、规约执行及数据写回异步执行。
在一些实施例中,所述智能处理器每一层次的分形计算子单元的指令按照指令译码、数据装载、操作执行、规约执行及数据写回流水线执行;所述智能处理器各层次之间的分形计算子单元的指令按照递归嵌套的分形流水线执行。
在一些实施例中,所述方法还包括:对所述串行分解子指令进行暂存。
根据本公开的第二方面,提供一种用于智能处理器的指令执行装置,所述指令执行装置包括:指令译码单元,将执行分形运算的串行分解子指令译码为本地指令及分形运算指令;数据装载单元,用于将所述分形运算所需数据从外部存储单元读取至所述智能处理器的本地存储单元;操作执行单元,用于根据所述分形运算指令对所述数据完成分形运算;规约执行单元,用于根据所述本地指令对所述分形运算的结果进行规约运算;数据写回单元,用于将所述本地存储器中存储的规约运算结果读取至所述外部存储器;所述指令译码单元、数据装载单元、操作执行单元、规约执行单元及数据写回单元按照流水线方式执行。
在一些实施例中,所述装置还包括:串行分解单元,用于将原始的分形指令集分解为所述串行分解子指令。
在一些实施例中,所述串行分解单元与流水线执行的所述指令译码单元、数据装载单元、操作执行单元、规约执行单元及数据写回单元异步执行。
在一些实施例中,所述智能处理器每一层次的分形计算子单元的指令按照指令译码单元、数据装载单元、操作执行单元、规约执行单元及数据写回单元流水线执行;所述智能处理器各层次之间的分形计算子单元的指令按照递归嵌套的分形流水线执行。
在一些实施例中,所述装置还包括:指令暂存单元,用于对所述串行分解子指令进行暂存。
根据本公开的第三方面,提供一种电子设备,包括上述所述的指令执行装置。
附图说明
图1示意性示出了本公开第一实施例提供分形冯·诺依曼体系结构的架构图;
图2示意性示出了本公开第一实施例提供的用于智能处理器的控制***结构图;
图3示意性示出了本公开第一实施例提供的控制方法的流程图;
图4示意性示出了本公开第二实施例提供的指令分解方法的流程图;
图5示意性示出了本公开第二实施例提供的指令分解方法一具体实例的逻辑图;
图6示意性示出了本公开第二实施例提供的指令分解装置的框图;
图7示意性示出了本公开第三实施例提供的两层体系的智能处理器形成的分形流水线;
图8示意性示出了本公开第三实施例提供的指令执行装置的框图;
图9示意性示出了本公开第四实施例提供的内存管理装置的结构图;
图10示意性示出了本公开第四实施例提供的内存管理方法的流程图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开作进一步的详细说明。
需要说明的是,在附图或说明书描述中,相似或相同的部分都使用相同的图号。附图中未绘示或描述的实现方式,为所属技术领域中普通技术人员所知的形式。另外,虽然本文可提供包含特定值的参数的示范,但应了解,参数无需确切等于相应的值,而是可在可接受的误差容限或设计约束内近似于相应的值。此外,以下实施例中提到的方向用语,例如“上”、“下”、“前”、“后”、“左”、“右”等,仅是参考附图的方向。因此,使用的方向用语是用来说明并非用来限制本公开。
研究发现,理想的机器学习计算机应该具有同构、串行、层次同性的特从而简化编程(包括编写机器学习应用和移植编程框架)。如果所有的机器学习计算机,即使它们具有完全不同的规模,都采用相同的指令集结构,那么程序的移植工作就不再需要单独为每一种新产品重做一次,这将显著地解放程序员的生产力。基于此,本公开实施例通过引入智能处理器的思想,构建分形的机器学习计算机,以解决上述技术问题。下面进行详细介绍。
要构造智能处理器的思想构造分形的机器学习计算机,首先要确认机器学习的应用负载适合表示为分形形式。本公开实施例研究了几种典型机器学习应用负载所具有的共性计算原语,发现使用一组计算原语(向量内积、向量距离、排序、激活函数、计数等)即可描述这些应用负载。
机器学习应用负载通常属于计算和存储密集型应用,但在执行控制流、学习方式和训练方法等方面有许多不同。然而,所有机器学习应用负载都在某一粒度上具有高并发度,因此,许多异构机器学习计算机设计了专用硬件来利用这一特性实现加速。这些专用硬件的例子包括GPU、FPGA、以及ASIC芯片。本公开实施例首先将这些应用负载分解为计算原语,然后使用分形的表达式进行表达。
具体地,本公开实施例选择了六种具有代表性的机器学习应用负载,在经典的数据集上执行,并分解其中每一种计算原语所需的执行时间。
表1
如表1所示,本公开实施例选择了以下负载:
·CNN-鉴于深度学习的流行,选择AlexNet算法和ImageNet数据集作为卷积神经网络(CNN)的代表性应用负载。
·DNN-同样出于深度学习技术,选择3层结构的多层感知机(MLP)作为深度神经网络(DNN)的代表性应用。
·k-Means-K-平均算法,一种经典的机器学习聚类算法。
·k-NN-K-近邻算法,一种经典的机器学习分类算法。
·SVM-支持向量机,一种经典的机器学习分类算法。
·LVQ-学习向量量化,一种经典的机器学习分类算法。
基于此,将机器学习应用负载分解为矩阵运算和向量运算。诸如向量-矩阵乘法或矩阵-向量乘法这样的运算被归并为矩阵乘法,诸如矩阵-矩阵加法/减法、矩阵-标量乘法、向量逐元素运算等运算归并为逐元素变换。于是,分解得到了7种主要的计算原语,包括内积、卷积、池化、矩乘、逐元素变换、排序和计数。为了深度学习应用表达的简易性,在矩乘之外还额外增加了专门的卷积、池化运算;内积实际上是向量-向量乘法,也可以用来表示深度神经网络中的全连接层。可以观察到,这7种共性计算原语基本表达了机器学习应用负载。
接下来,本公开实施例采用分形运算来描述上述7中共性计算原语,
表2
如表2所示,每一种计算原语可能具有多种k-分解方式。一些运算在分解后产生部分结果,需要经过归约才能得到最终结果,表2中列出了所需的归约运算;一些运算分解后得到的分形子运算之间可能存在共享的输入数据,此时需要引入数据冗余,表2中列出了冗余的部分。不难发现,通过引入归约运算和数据冗余,所有7个共性计算原语都能够表示为分形运算。因此,要设计新的专用体系结构高效地执行这些分形运算,本公开实施例需要解决以下三个关键挑战:
1.归约运算-为了高效地处理归约运算,本公开实施例需要在体系结构中引入轻量级的本地处理单元(LFU)。在从分形处理单元(FFU)收回部分结果数据后,本地处理单元可以高效地在其上执行归约运算。
2.数据冗余-在分形运算的执行过程中,本公开实施例需要引入数据冗余。为此,分形机器学习计算机中的存储层次结构需要保证数据一致性,并寻找数据复用机会。
3.分形机器学习计算机的不同节点之间的数据通信可能产生复杂的物理连线,导致面积、延迟和能耗开销。为此,本公开实施例发现在分形运算的执行过程中,仅有父子节点之间需要数据通信,因此,数据通路设计得以大幅简化;设计者可以通过迭代模块化设计分形机器学习计算机,而所有连线全部被限制在父子之间,因此减少了连线拥塞。
下面从细节介绍本公开实施例解决上述关键挑战的技术方案。
本公开第一实施例提供一种用于智能处理器的控制***,智能处理器的每一层分形计算子单元包括所述控制***,控制***包括:串行分解模块,用于对智能处理器执行分形运算对应的分形指令集进行串行分解,得到串行分解子指令,并对串行分解子指令进行暂存;降级模块,用于对串行分解子指令进行降级,将上一层分形计算子单元对当前层分形计算子单元下发的串行分解子指令修改为当前层分形计算子单元对下一层分形计算子单元下发的串行分解子指令;并行分解模块,用于对降级后的串行分解子指令进行并行分解,得到满足智能处理器中所有分形计算子单元并发运行的并发度要求的并行分解子指令。
图1示意性示出了本公开第一实施例提供分形冯·诺依曼体系结构的架构图。本公开实施例所述的智能处理器也即采用分形冯·诺依曼体系结构构建的计算***。
在几何学中,分形即指一个几何图形在不同规模尺度上自相似,因此,分形概念中包含了一种刻画几何图形的规模不变量,其是由一组简单的生成规则定义的,不断重复地以一种模式替换图形中的某一部分,可以生成具有任意规模的复杂图形。其中,图形的替换规则即是一种规模不变量。本公开实施例采用类似的思想,将***描述方式作为一种规模不变量,得到了分形冯·诺依曼体系结构。
如图1所示,分形冯·诺依曼体系结构是一种可以迭代模块化设计的体系结构,通过复制自身产生的数个副本组成——一个最小的分形冯·诺依曼体系结构由存储器、控制器和运算器(LFU和FFU)组成,搭配输入/输出模块,即可形成一个最小规模的计算***,也即分形计算子单元。更大一些的分形冯·诺依曼体系结构将较小规模的分形冯·诺依曼体系结构作为运算器,由多个并发的运算器搭配控制器、存储器,搭配输入/输入模块构成;以此类推,分形冯·诺依曼体系结构能够根据迭代模块化设计的方式构建出任意规模的计算***。其中,分形冯·诺依曼体系结构的每一层采用的控制器都具有相同的结构。因此在设计硬件电路时,分形冯·诺依曼体系结构的迭代模块化设计可以大幅简化控制逻辑的设计和验证工作。
分形冯·诺依曼体系结构在每一层上采用相同的指令集结构,称为分形指令集结构(FISA)。分形指令集结构中包含两种指令:本地指令和分形指令。
本实施例给出了分形指令集结构形式化的定义:
定义3.1(FISA指令)FISA指令I是一个三元组其中O是一种运算,P是操作数的有限集合,G是粒度标识符。
定义3.2(分形指令)FISA指令是分形指令,当且仅当存在一组粒度标识符G′1,G′2,...,G′n(G′i≤G,≤是定义在粒度标识符空间上的偏序关系)使得I的执行行为可以由I′1(G′1),I′2(G′2),...,I′n(G′n)与其他FISA指令依次执行来模拟。
定义3.3(FISA指令集)一个指令集是FISA指令集,当且仅当其中至少包含一条分形指令。
定义3.4(分形计算机)具有FISA指令集结构的计算机M是分形计算机,当且仅当存在至少一条分形指令是在计算机M上分形执行的。
表3
本公开实施例的智能处理器的FISA指令集设计采用了比较高的抽象级别,因此能够改善编程生产效率并达成高计算访存比。如表3所示,例如卷积和排序这样的高级操作可以直接用一条指令来表示。具有较低计算访存比的低级运算也同样加入了指令集中,因此可以获得更好的编程灵活性。这些低级运算通常会被视为本地指令,并且智能处理器会倾向于使用LFU来执行它们以减少数据搬运。
进一步地,本地指令用来描述归约操作,由控制器发往本地处理单元(LFU),并在分形冯·诺依曼体系结构的本地处理单元上执行;分形指令用来描述分形运算,控制器收到分形指令后对其执行k-分解,分解出子指令和本地指令,其中子指令仍然具有分形指令的形式,这些子指令将被发往分形处理单元(FFU)执行。因此,对分形冯·诺依曼体系结构进行编程时,程序员仅需要考虑单一、串行的指令集结构。LFU和FFU之间的异构性、多个FFU之间的并行性会由控制器解决。因为分形冯·诺依曼体系结构在不同层次上的每一个节点(分形处理单元,)均具有相同的指令集结构,因此程序员编程时不需要考虑不同层次的差异,不需要为不同规模的分形冯·诺依曼体系结构计算机编写不同的程序。甚至于,采用了同系列分形冯·诺依曼体系结构后,超级计算机可以与智能物端设备执行相同的程序,实现一套代码无需修改,从云到端处处皆可运行的效果。
分形冯·诺依曼体系结构构建了存储层次,并将存储器分为两类进行管理:外部存储和本地存储。对程序员而言,只有最外层的外部存储是可见(需要编程管理)的。在分形冯·诺依曼体系结构中,本层次的本地存储将被视为下一层次的外部存储,被所有分形处理单元(FFU)共享使用。不同于精简指令集计算机(RISC)的设计原则,在分形指令集结构中,程序员所能操作的存储空间全部位于外部存储,由各层控制器负责控制外部存储与本地存储之间的数据通信;而本层控制器生成指令发往下一层次,对于下一层控制器而言相当于扮演了程序员的角色,因此控制器也遵循只管理本层的本地存储,而不管理下层内部的存储器的原则。通过这种设计,分形冯·诺依曼体系结构中的所有存储都受本层控制器的管理,职责划分明确,也使编程变得简单。
图2示意性示出了本公开第一实施例提供的用于智能处理器的控制***结构图。
如图2所示,智能处理器的每一个节点(也即每一层分形计算子单元)都带有相同的控制器,用来管理子节点,使得整个智能处理器按照分形的方式运行。从功能的角度进行设计,每一个控制器包括串行分解模块、降级模块及并形分解模块。
串行分解模块包括第一指令队列暂存单元(IQ)、串行分解单元(SD)及第二指令队列暂存单元(SQ)。
在串行分解阶段,输入的分形指令集首先在IQ暂存,随后被SD取出。SD根据智能处理器对应的硬件容量的限制,将分形指令集串行分解为按顺序执行的串行分解子指令,其中,每一条串行分解子指令的粒度不超过硬件容量所能允许的范围,并且将串行分解指令写入SQ中暂存。由于串行分解模块具有IQ和SQ两个先入先出队列作为缓冲,串行分解阶段可以不按照流水线的同步步调执行,而是异步地独自执行,直至IQ为空或SQ已满。
降级模块(DD)包括检查单元、分配单元、DMA及替换单元。DD从SQ中取出一条串行分解子指令,并将其“降级”,将该指令从“上一级节点对本节点下达的指令”改写为“本节点对下一级节点下达的指令”,具体操作包括:
检查单元检查数据依赖是否满足,安排指令何时发射进入流水线,何时***流水线空泡。
分配单元为串行分解子指令中位于外部存储器的操作数分配本地存储空间。
DMA(Direct Memory Access,直接存储器访问)生成DMAC指令控制DMA将数据在指令执行前写入、执行后写出,形成外部数据的本地备份,以便下一级节点访问。
替换单元将串行分解子指令对应的操作数替换为本地备份操作数。
并行分解模块包括并行分解单元(PD)及规约控制单元(RC)。经过分解得到的串行分解子指令包括分形指令及本地指令,PD用于对分形指令执行k-分解,得到分形子指令,并将分形子指令发送至智能处理器各层的分形计算子单元中的分形处理单元执行分形运算。RC用于对本地指令执行k-分解,得到本地子指令,并将本地子指令发送至智能处理器各层的分形计算子单元中的本地处理单元,以对各层分形运算的结果进行规约运算。
RC还可以决定是否将该本地指令作为一个委托交由分形处理单元代为执行,在LFU性能较弱的节点遇到运算量较大的本地指令时,RC可以选择这么做。也即,RC不将该本地指令发往LFU,而是发往控制***的委托寄存器(CMR)暂存一拍,下一拍时,该本地指令将被视为一条分形指令交由PD分解,并送FFU执行。因为流水线中LFU总是工作在FFU之后一拍,经过CMR暂存后,流水线上的数据依赖关系不会发生改变,仍可以保证执行的正确性。
综上所述,本实施例提供一种基于分形冯·诺依曼体系结构的智能处理器,通过引入轻量级的本地处理单元(LFU)。在从分形处理单元(FFU)收回部分结果数据后,本地处理单元可以高效地在其上执行归约运算。同时,通过合理设计智能处理器控制器的结构,可以高效、准确地控制智能处理器执行分形运算。
本公开第一实施例还提供一种用于智能处理器的控制方法,通该控制方法可控制智能处理器的每一层分形计算子单元进行分形运算,图3示意性示出了本公开第一实施例提供的控制方法的流程图,如图3所示,该控制方法包括:
S301,对智能处理器执行分形运算对应的分形指令集进行串行分解,得到串行分解子指令,并对串行分解子指令进行暂存。
S302,对串行分解子指令进行降级,将上一层分形计算子单元对当前层分形计算子单元下发的串行分解子指令修改为当前层分形计算子单元对下一层分形计算子单元下发的串行分解子指令。
S303,对降级后的串行分解子指令进行并行分解,得到满足智能处理器中所有分形计算子单元并发运行的并发度要求的并行分解子指令,以使分形计算子单元根据并行分解子指令执行分形运算。
控制方法实施例部分未尽细节之处请参见上述控制***实施例部分,其带来的技术效果与控制***实施例部分相同,此处不再赘述。
为了提高上述指令分解的效率及准确性,本公开第二实施例提供一种用于第一实施例提供的控制***及方法的指令分解方法,图4示意性示出了本公开第二实施例提供的指令分解方法的流程图,如图4所示,该方法例如可以包括:
S401,确定对分形指令的操作数进行分解的维度的分解优先级。
S402,根据分解优先级选择当前分解的维度。
S403,在当前分解的维度上,对分形指令的操作数进行串行分解。
图5示意性示出了本公开第二实施例提供的指令分解方法一具体实例的逻辑图,如图5所示,具体逻辑如下:
首先,串行分解单元需要记录每一种分形指令可以分解的维度t1,t2,...,tN,按照它们之间的优先级顺序排列。
然后,串行分解单元需要根据优先级确定在哪一个维度进行分解,具体决定方式为:对于其中一维度,将该维度及优先级低于该维度的维度设为原子粒度,优先级高于该维度的维度的粒度保持原有粒度,得到第一指令标识符;根据第一指令标识符对操作数进行分解;判断分解后的操作数需要的内存容量是否小于智能处理器的内存组件的容量大小;若是,则选择该维度作为当前分解的维对操作数进行分解,若否,选择下一分解的维度进行判定。也即对每一个i=0,1,2,...,N,将t1,t2,...,ti设为原子粒度,形成新粒度标识符
最后,在当前的维度上,对分形指令的操作数进行串行分解,包括:将优先级低于当前分解的维度的维度对应的分解粒度为原子粒度,优先级高于该维度的维度对应的粒度保持不变,并确定当前分解的维度满足智能处理器的内存组件容量限制的最大粒度,得到第二指令标识符。根据第二指令标识符对分形指令的操作数进行串行分解。也即,选择在ti维度上进行串行分解,那么t1,t2,...,ti-1都被分解为原子粒度(粒度1),而ti+1,ti+2,...,tN都保持原粒度不变。依照二分查找法确定,寻找到满足容量限制的最大粒度t′i,最终输出的指令具有粒度标识符
进一步地,二分查找法确定满足容量限制的最大粒度t′i包括:
将最小的分解粒度min设为0,最大的分解粒度max设为ti,则在ti维度方向分解粒度为(max-min)/2维。
判断分解后的操作数需要的内存容量是否大于智能处理器内存组件的容量大小,若是,则操作数的最大分解粒度为(max-min)/2维,若否,则操作数的最小分解粒度为(max-min)/2维。
判断(max-min)是否等于1,若是,则ti选择(max-min)/2维的分解粒度进行分解。
上述串行分解过程需要进行判定的次数最多为N+log M,M为硬件最大容量。假设串行分解器每一硬件时钟周期内能够执行一次判定,则在一个具有4GB存储的节点上对一个具有10种维度的分形指令进行串行分解,最多需要执行42个时钟周期,能够在合理时间范围内找到最佳分解方案。找到最佳分解方案后,串行分解器按照粒度循环输出指令模板;通过累加,计算分解出的子指令中各操作数的地址。
此外,对于串行分解后的串行子指令进行并行分解器可以这样实现:对输入指令执行k-分解,并将分解得到的指令压回输入栈;不断循环,直到栈内指令数量超过本节点内FFU数量为止。
DMA控制器(DMAC)接受较为高级的指令形式(DMAC指令),可以按照高级数据结构进行数据搬运(例如n维张量)。DMAC内部通过产生循环来将DMAC指令翻译为低级的DMA控制原语,控制DMA的执行。
本实施例提供的指令分解方法,能够在合理时间范围内找到最佳分解方案,依据最佳分解方案,串行分解器按照粒度循环输出指令模板,通过累加,计算分解出的子指令中各操作数的地址,从而提高分形运算的并行效率。
本公开第二实施例还提供一种用于第一实施例提供的控制***及方法的指令分解装置,图6示意性示出了本公开第二实施例提供的指令分解装置的框图,如图6所示,该装置600例如可以包括:
确定模块610,用于确定对分形指令的操作数进行分解的维度的分解优先级。
选择模块620,用于根据分解优先级选择当前分解的维度。
分解模块630,用于在当前分解的维度上,对所述分形指令的操作数进行串行分解。
指令分解装置实施例部分未尽细节之处请参见上述指令分解方法实施例部分,其带来的技术效果与指令分解方法实施例部分相同,此处不再赘述。
由于上述智能处理器执行的运算时分形的,根节点将分形指令集译码后发送至FFU,每一个FFU重复同样的执行方式,直到叶子节点。叶子节点完成实际的运算,将结果送回父节点,每一个节点重复同样的执行方式,直到将最终结果汇总到根节点。在这一过程中,FFU大部分时间只能等待数据和指令到来,完成运算后又要等待数据返回到根节点。因此,如果不以流水的方式执行,智能处理器不能达到理想的执行效率。
为了提高智能处理器的吞吐率,本公开第三实施例提供一种用于智能处理器的指令执行方法,指令执行方法包括:指令译码,将执行分形运算的串行分解子指令译码为本地指令及分形运算指令。数据装载,将分形运算所需数据从外部存储单元读取至智能处理器的本地存储单元;操作执行,根据分形运算指令对数据完成分形运算。规约执行,根据本地指令对分形运算的结果进行规约运算。数据写回,将本地存储器中存储的规约运算结果读取至所述外部存储器。指令译码、数据装载、操作执行、规约执行及数据写回按照流水线方式执行。
请继续参阅图2,该FISA指令的执行分为五个流水线阶段:指令译码阶段(ID)、数据装载阶段(LD)、操作执行阶段(EX)、归约执行阶段(RD)和数据写回阶段(WB)。在ID阶段,一条串行分解子指令将被控制器译码为本地指令、分形指令、DMAC指令三种控制信号;在LD阶段,DMA将数据从外部存储搬运到本地存储以供FFU和LFU访问;在EX阶段,FFU完成分形子运算;在RD阶段,LFU完成归约运算;在WB阶段,DMA将运算结果从本地存储搬运到外部存储,完成一条串行分解子指令的执行。
进一步地,在ID之前,指令的执行方法还包括指令的串行分解,SD将原始的分形指令集FISA分解为串行分解子指令。串行分解与流水线执行的指令译码、数据装载、操作执行、规约执行及数据写回异步执行,也即独立有流水线之外,不断的将IQ中的分形指令分解为串行分解子指令并写入SQ进行暂存。
由于本公开实施例的分析计算***采用的是分形冯·诺依曼体系结构,在单一层次上,每一层次的分形计算子单元的指令按照指令译码、数据装载、操作执行、规约执行及数据写回流水线执行。在总体体系结构上,单一层次上形成的五级流水线构成递归嵌套的分形流水线。图7示意性示出了两层体系的智能处理器形成的分形流水线,如图7所示,不同类型的网格表示一条分形指令的执行,每一块代表一条串行分解子指令的执行阶段。在上一级的一个EX阶段之内,下一级运行着自己的流水线。因此,智能处理器可以在任意时间将全部层次上的全部模块调动起来,除了流水线的启动和排空阶段。
本实施例提供的指令执行方法,将指令的执行分为指令译码阶段、数据装载阶段、操作执行阶段、归约执行阶段和数据写回阶段多个阶段流水线执行,并且指令的串行分解独立于流水线之外异步执行,可以在任意时将全部层次上的全部模块调动起来,提供了智能处理器的数据吞吐率,从而提高了智能处理器的执行效率。
本公开第三实施例还提供一种用于智能处理器的指令执行装置,图8示意性示出了本公开第三实施例提供的指令执行装置的框图,如图8所示,该装置800例如可以包括:
指令译码单元810,将执行分形运算的串行分解子指令译码为本地指令及分形运算指令。
数据装载单元820,用于将分形运算所需数据从外部存储单元读取至智能处理器的本地存储单元。
操作执行单元830,用于根据分形运算指令对数据完成分形运算。
规约执行单元840,用于根据本地指令对分形运算的结果进行规约运算。
数据写回单元850,用于将本地存储器中存储的规约运算结果读取至外部存储器。
其中,指令译码单元、数据装载单元、操作执行单元、规约执行单元及数据写回单元按照流水线方式执行。
指令执行装置实施例部分未尽细节之处请参见上述指令执行方法实施例部分,其带来的技术效果与指令执行方法实施例部分相同,此处不再赘述。
在上述控制器工作过程中,SD、DD和PD都可能需要分配内存空间,因此,智能处理器的内存管理对于整体效率至关重要。其中,PD需要分配的空间通常仅仅存活于相邻的EX和RD两个流水线阶段,DD分配的空间存活于一个完整的串行分解子指令周期,而SD分配的空间的生命周期跨越多个串行分解子指令周期。
基于指令生命周期上的差别,本公开第四实施例提供一种内存管理装置,图9示意性示出了本公开第四实施例提供的内存管理装置的结构图,如图9所示,该内存管理装置900包括:
循环内存段910,用于放置串行分解子指令中包含的外部数据,计算结果,以及归约所需的临时中间结果等。
由于可能访问循环内存段的硬件功能单元有三个:FFU(在EX阶段)、LFU(在RD阶段)和DMA(在LD和WB阶段),因此,循环内存段分为三个区域,包括第一内存区域911、第二内存区域912及第三内存区域913,分别用于智能处理器进行运算过程中的分形运算、规约运算、数据装载和写回时调用。三个功能单元各自使用一段以避免数据冲突。三个区域会随着流水线的周期执行循环调用第一内存区域911、第二内存区域912及第三内存区域913,循环过程为:FFU在某一区域上执行了EX阶段后,在下一流水线周期中,LFU将获得这块内存,并在其中完成RD阶段的执行;在LFU完成了RD阶段的执行后,下一流水线周期中DMA将获得这块内存,先完成WB阶段的执行,然后再完成一条新指令的LD阶段的执行;再下一周期这块内存区域交还给FFU,以此类推。
静态内存段920,包括第四内存区域921及第五内存区域922,用于存储智能处理器进行运算时输入的分形指令,也即放置的是在串行分解期间预先装载上来,在多条串行分解子指令间共享的数据。将静态内存段也分为两个区域,SD将为每一条输入的分形指令交替安排使用静态内存段的空间,以避免相邻指令间生命周期重叠形成数据冲突。
进一步地,由于DD和SD控制内存的分配时,不会主动释放内存空间。空间的回收是随着流水线的进行而进行的,内存段在经过一轮循环使用后,新的数据将直接覆写在老的数据之上。为了充分利用这些临时写在内存中的数据,如图2所示,内存管理装置还增加了张量置换单元(或称张量置换表TTT),用于记录循环内存段或静态内存段上当前存储的数据所对应的外部存储地址,在下一次运算需要访问同一地址上的外部内存中的数据时,对外部存储地址进行置换,以智能处理器的本地存储器上暂存的备份数据代替外部内存中的数据,以便较少数据。在智能处理器的运算过程中,第一内存区域911、第二内存区域912及第三内存区域913是被周期性循环调用,在进入下一周期循环调用时,张量置换单元清空当前循环周期记录的外部存储地址。以便保证置换数据的时效性。增加TTT后,智能处理器可以将上一条串行分解子指令的运算结果(在RD阶段结束后产生)直接前递到下一条串行分解子指令的输入(需要在EX阶段开始前准备好),而无需写回后再重新读入。TTT可以显著改善智能处理器的执行效率,同时数据一致性也得以维护。
本实施例通过基于指令执行生命周期的差别,将控制器内存进行分类管理,可提高智能处理器的执行效率,并且,内存管理装置中增加张量置换单元可以进一步显著改善智能处理器的执行效率,同时数据一致性也得以维护。
本公开第四实施例还提供一种用于智能处理器的内存管理方法,图10示意性示出了本公开第四实施例提供的内存管理方法的流程图,如图10所示,该内存管理方法包括:
S1001,在对输入的分形指令进行串行分解时,采用静态内存段的第四内存区域及第五内存区域进行存储。
S1002,在智能处理器进行运算过程中,智能处理器的分形运算、规约运算、数据装载及写回分别调用所述循环内存段的第一内存区域、第二内存区域及第三内存区域。
内存管理方法实施例部分未尽细节之处请参见上述内存管理装置实施例部分,其带来的技术效果与内存管理装置实施例部分相同,此处不再赘述。
此外,在本公开一些实施例里,公开了一种芯片,其包括了上述智能处理器。
在本公开一些实施例里,公开了一种芯片封装结构,其包括了上述芯片。
在本公开一些实施例里,公开了一种板卡,其包括了上述芯片封装结构。
在本公开一些实施例里,公开了一种电子装置,其包括了上述板卡。
电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (9)
1.一种用于智能处理器的指令执行方法,其特征在于,所述指令执行方法包括:
指令译码,将执行分形运算的串行分解子指令译码为本地指令及分形运算指令;
数据装载,将所述分形运算所需数据从外部存储单元读取至所述智能处理器的本地存储单元;
操作执行,根据所述分形运算指令对所述数据完成分形运算;
规约执行,根据所述本地指令对所述分形运算的结果进行规约运算;
数据写回,将本地存储器中存储的规约运算结果读取至外部存储器;
所述指令译码、数据装载、操作执行、规约执行及数据写回按照流水线方式执行;
所述智能处理器每一层次的分形计算子单元的指令按照指令译码、数据装载、操作执行、规约执行及数据写回流水线执行;
所述智能处理器各层次之间的分形计算子单元的指令按照递归嵌套的分形流水线执行。
2.根据权利要求1所述的指令执行方法,其特征在于,所述方法还包括:
串行分解,将原始的分形指令集分解为所述串行分解子指令。
3.根据权利要求2所述的指令执行方法,其特征在于,所述串行分解与流水线执行的所述指令译码、数据装载、操作执行、规约执行及数据写回异步执行。
4.根据权利要求2所述的指令执行方法,其特征在于,所述方法还包括:
对所述串行分解子指令进行暂存。
5.一种用于智能处理器的指令执行装置,其特征在于,所述指令执行装置包括:
指令译码单元,将执行分形运算的串行分解子指令译码为本地指令及分形运算指令;
数据装载单元,用于将所述分形运算所需数据从外部存储单元读取至所述智能处理器的本地存储单元;
操作执行单元,用于根据所述分形运算指令对所述数据完成分形运算;
规约执行单元,用于根据所述本地指令对所述分形运算的结果进行规约运算;
数据写回单元,用于将本地存储器中存储的规约运算结果读取至外部存储器;
所述指令译码单元、数据装载单元、操作执行单元、规约执行单元及数据写回单元按照流水线方式执行;
所述智能处理器每一层次的分形计算子单元的指令按照指令译码单元、数据装载单元、操作执行单元、规约执行单元及数据写回单元流水线执行;
所述智能处理器各层次之间的分形计算子单元的指令按照递归嵌套的分形流水线执行。
6.根据权利要求5所述的指令执行装置,其特征在于,所述装置还包括:
串行分解单元,用于将原始的分形指令集分解为所述串行分解子指令。
7.根据权利要求6所述的指令执行装置,其特征在于,所述串行分解单元与流水线执行的所述指令译码单元、数据装载单元、操作执行单元、规约执行单元及数据写回单元异步执行。
8.根据权利要求6所述的指令执行装置,其特征在于,所述装置还包括:
指令暂存单元,用于对所述串行分解子指令进行暂存。
9.一种电子设备,包括权利要求5-8任一项所述的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010688860.4A CN111831339B (zh) | 2020-07-16 | 2020-07-16 | 用于智能处理器的指令执行方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010688860.4A CN111831339B (zh) | 2020-07-16 | 2020-07-16 | 用于智能处理器的指令执行方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111831339A CN111831339A (zh) | 2020-10-27 |
CN111831339B true CN111831339B (zh) | 2024-04-02 |
Family
ID=72924426
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010688860.4A Active CN111831339B (zh) | 2020-07-16 | 2020-07-16 | 用于智能处理器的指令执行方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111831339B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5715459A (en) * | 1994-12-15 | 1998-02-03 | International Business Machines Corporation | Advanced graphics driver architecture |
CN110489087A (zh) * | 2019-07-31 | 2019-11-22 | 北京字节跳动网络技术有限公司 | 一种生成分形结构的方法、装置、介质和电子设备 |
CN110502330A (zh) * | 2018-05-16 | 2019-11-26 | 上海寒武纪信息科技有限公司 | 处理器及处理方法 |
CN110538469A (zh) * | 2019-09-25 | 2019-12-06 | 杭州高低科技有限公司 | 可实现指令切换的有形编程指令积木 |
-
2020
- 2020-07-16 CN CN202010688860.4A patent/CN111831339B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5715459A (en) * | 1994-12-15 | 1998-02-03 | International Business Machines Corporation | Advanced graphics driver architecture |
CN110502330A (zh) * | 2018-05-16 | 2019-11-26 | 上海寒武纪信息科技有限公司 | 处理器及处理方法 |
CN110489087A (zh) * | 2019-07-31 | 2019-11-22 | 北京字节跳动网络技术有限公司 | 一种生成分形结构的方法、装置、介质和电子设备 |
CN110538469A (zh) * | 2019-09-25 | 2019-12-06 | 杭州高低科技有限公司 | 可实现指令切换的有形编程指令积木 |
Non-Patent Citations (1)
Title |
---|
YongweiZhao等.Cambricon-F:machine learning computers with fractal von neumann architecture.《2019ACM/IEEE 46th Annual International Symposium on Computer Architecture》.2019,788-801. * |
Also Published As
Publication number | Publication date |
---|---|
CN111831339A (zh) | 2020-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111831582B (zh) | 用于智能处理器的内存管理装置、方法及电子设备 | |
US20210271630A1 (en) | Compiler Flow Logic for Reconfigurable Architectures | |
CN111860807B (zh) | 分形计算装置、方法、集成电路及板卡 | |
CN110717584A (zh) | 神经网络编译方法、编译器、计算机设备及可读存储介质 | |
US20220147328A1 (en) | Compile time logic for inserting a buffer between a producer operation unit and a consumer operation unit in a dataflow graph | |
Zhao et al. | Machine learning computers with fractal von Neumann architecture | |
Zhao et al. | Cambricon-F: machine learning computers with fractal von Neumann architecture | |
CN111831333B (zh) | 用于智能处理器的指令分解方法、装置及电子设备 | |
Chen et al. | An instruction set architecture for machine learning | |
CN115437637A (zh) | 一种编译方法及相关装置 | |
Wolfe | Performant, portable, and productive parallel programming with standard languages | |
CN111831339B (zh) | 用于智能处理器的指令执行方法、装置及电子设备 | |
WO2023030507A1 (zh) | 编译优化方法、装置、计算机设备以及存储介质 | |
US20230325312A1 (en) | Merging Buffer Access Operations in a Coarse-grained Reconfigurable Computing System | |
US11841822B2 (en) | Fractal calculating device and method, integrated circuit and board card | |
US20190042941A1 (en) | Reconfigurable fabric operation linkage | |
US20220147808A1 (en) | Compiler configurable to generate instructions executable by different deep learning accelerators from a description of an artificial neural network | |
CN111831332A (zh) | 用于智能处理器的控制***、方法及电子设备 | |
CN115840894A (zh) | 一种用于处理多维张量数据的方法及其相关产品 | |
CN116569178A (zh) | 具有可经由编译器优化的可配置硬件选项的深度学习加速器 | |
Sohrabizadeh et al. | SPA-GCN: Efficient and Flexible GCN Accelerator with an Application for Graph Similarity Computation | |
US11775299B1 (en) | Vector clocks for highly concurrent execution engines | |
Khurge | Strategic Infrastructural Developments to Reinforce Reconfigurable Computing for Indigenous AI Applications | |
US20230385125A1 (en) | Graph partitioning and implementation of large models on tensor streaming processors | |
US20240168915A1 (en) | Graph Spatial Split |
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 |