CN111831333A - 用于智能处理器的指令分解方法、装置及电子设备 - Google Patents

用于智能处理器的指令分解方法、装置及电子设备 Download PDF

Info

Publication number
CN111831333A
CN111831333A CN202010689147.1A CN202010689147A CN111831333A CN 111831333 A CN111831333 A CN 111831333A CN 202010689147 A CN202010689147 A CN 202010689147A CN 111831333 A CN111831333 A CN 111831333A
Authority
CN
China
Prior art keywords
decomposition
dimension
instruction
fractal
granularity
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.)
Granted
Application number
CN202010689147.1A
Other languages
English (en)
Other versions
CN111831333B (zh
Inventor
支天
赵永威
李威
张士锦
杜子东
郭崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN202010689147.1A priority Critical patent/CN111831333B/zh
Publication of CN111831333A publication Critical patent/CN111831333A/zh
Application granted granted Critical
Publication of CN111831333B publication Critical patent/CN111831333B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本公开提供一种用于智能处理器的指令分解方法、装置及电子设备,所述智能处理器根据分形指令进行分形运算,所述方法包括:确定对所述分形指令的操作数进行分解的维度的分解优先级;根据所述分解优先级选择当前分解的维度;在所述当前分解的维度上,对所述分形指令的操作数进行串行分解。该指令分解方法,能够在合理时间范围内找到最佳分解方案,依据最佳分解方案,串行分解器按照粒度循环输出指令模板,通过累加,计算分解出的子指令中各操作数的地址,从而提高分形运算的并行效率。

Description

用于智能处理器的指令分解方法、装置及电子设备
技术领域
本公开涉及计算机技术领域,尤其涉及一种用于智能处理器的指令分 解方法、装置及电子设备。
背景技术
机器学习算法作为一种新兴工具,在产业界得到越来越多的应用,包 括图像识别、语音识别、人脸识别、视频分析、智能推荐、游戏竞技等领 域。近年来,针对应用越来越广泛的机器学习负载,产业界出现了许多不 同规模的机器学习专用计算机。例如,在移动端,一些智能手机采用了机 器学习处理器用于人脸识别,在云服务端,采用机器学习计算机进行加速 等。
机器学习算法具有广泛的前景,但应用收到编程难题的制约。应用场 景的广泛不仅体现在具有多种应用领域,同时还体现在应用在不同规模的 硬件平台上。如果要对每一种硬件上的每一种应用分别编程,就会产生由 编程-规模相关性带来的编程难题。因此,研发人员采用编程框架(例如 TensorFlow、PyTorch、MXNet)来作为桥接模型,将各种应用和各种硬件 桥接起来改善该问题。
但是,编程框架仅仅缓解了用户在编程时遇到的编程难题;对于硬件 厂商而言,挑战则变得更严峻了。现在,硬件厂商不仅需要为每一个硬件 产品提供编程接口,还需要将每一个编程框架移植到每一个硬件产品上, 这产生了巨大的软件开发成本。单独TensorFlow一个框架,就具有超过一 千种算子,而在某一硬件上为一个算子做优化就需要一名高级软件工程师 工作几个月的时间。
发明内容
针对上述的缺陷,本公开的目的在于提供一种用于智能处理器的指令 分解方法、装置及电子设备,用于至少部分解决上述技术问题。
根据本公开的第一方面,提供一种用于智能处理器的指令分解方法, 所述智能处理器根据分形指令进行分形运算,所述方法包括:确定对所述 分形指令的操作数进行分解的维度的分解优先级;根据所述分解优先级选 择当前分解的维度;在所述当前分解的维度上,对所述分形指令的操作数 进行串行分解。
在一些实施例中,所述根据所述分解优先级选择当前分解的维度,包 括:对于其中一维度,将该维度及优先级低于该维度的维度设为原子粒度, 优先级高于该维度的维度的粒度保持原有粒度,得到第一指令标识符;根 据所述第一指令标识符对所述操作数进行分解;判断分解后的操作数需要 的内存容量是否小于所述智能处理器的内存组件的容量大小;若是,则选 择该维度作为所述当前分解的维对所述操作数进行分解,若否,选择下一分解的维度进行判定。
在一些实施例中,所述在所述当前分解的维度上,对所述分形指令的 操作数进行串行分解,包括:将优先级低于所述当前分解的维度的维度对 应的分解粒度为原子粒度,优先级高于该维度的维度对应的粒度保持不 变,并确定所述当前分解的维度满足所述智能处理器的内存组件容量限制 的最大粒度,得到第二指令标识符;根据所述第二指令标识符对所述分形 指令的操作数进行串行分解。
在一些实施例中,所述确定所述当前分解的维度满足所述智能处理器 的内存组件容量限制的最大粒度,包括:采用二分查找法确定所述最大粒 度。
在一些实施例中,所述指令分解方法还包括:计算串行分解得到的子 指令中各操作数的地址。
根据本公开的第二方面,提供一种用于智能处理器的指令分解装置, 所述智能处理器根据分形指令进行分形运算,所述装置包括:确定模块, 用于确定对所述分形指令的操作数进行分解的维度的分解优先级;选择模 块,用于根据所述分解优先级选择当前分解的维度;分解模块,用于在所 述当前分解的维度上,对所述分形指令的操作数进行串行分解。
在一些实施例中,所述选择模块根据所述分解优先级选择当前分解的 维度时,包括:对于其中一维度,所述选择模块将该维度及优先级低于该 维度的维度设为原子粒度,优先级高于该维度的维度的粒度保持原有粒 度,得到第一指令标识符;所述选择模块根据所述第一指令标识符对所述 操作数进行分解;所述选择模块判断分解后的操作数需要的内存容量是否 小于所述智能处理器的内存组件的容量大小;若是,则所述选择模块选择该维度作未所述当前分解的维对所述操作数进行分解,若否,所述选择模 块选择下一分解的维度进行判定。
在一些实施例中,所述分解模块在所述当前分解的维度上,对所述分 形指令的操作数进行串行分解时,包括:所述分解模块将优先级低于所述 当前分解的维度的维度对应的分解粒度为原子粒度,优先级高于该维度的 维度对应的粒度保持不变,并确定所述当前分解的维度满足所述智能处理 器的内存组件容量限制的最大粒度,得到第二指令标识符;所述分解模块 根据所述第二指令标识符对所述分形指令的操作数进行串行分解。
在一些实施例中,所述分解模块确定所述当前分解的维度满足所述智 能处理器的内存组件容量限制的最大粒度,包括:所述分解模块采用二分 查找法确定所述最大粒度。
在一些实施例中,所述指令分解装置还包括:计算模块,用于计算串 行分解得到的子指令中各操作数的地址。
根据本公开的第三方面,提供一种电子设备,包括上述所述的指令分 解装置。
附图说明
图1示意性示出了本公开第一实施例提供分形冯·诺依曼体系结构的 架构图;
图2示意性示出了本公开第一实施例提供的用于智能处理器的控制系 统结构图;
图3示意性示出了本公开第一实施例提供的控制方法的流程图;
图4示意性示出了本公开第二实施例提供的指令分解方法的流程图;
图5示意性示出了本公开第二实施例提供的指令分解方法一具体实例 的逻辑图;
图6示意性示出了本公开第二实施例提供的指令分解装置的框图;
图7示意性示出了本公开第三实施例提供的两层体系的智能处理器形 成的分形流水线;
图8示意性示出了本公开第三实施例提供的指令执行装置的框图;
图9示意性示出了本公开第四实施例提供的内存管理装置的结构图;
图10示意性示出了本公开第四实施例提供的内存管理方法的流程图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实 施例,并参照附图,对本公开作进一步的详细说明。
需要说明的是,在附图或说明书描述中,相似或相同的部分都使用相 同的图号。附图中未绘示或描述的实现方式,为所属技术领域中普通技术 人员所知的形式。另外,虽然本文可提供包含特定值的参数的示范,但应 了解,参数无需确切等于相应的值,而是可在可接受的误差容限或设计约 束内近似于相应的值。此外,以下实施例中提到的方向用语,例如“上”、 “下”、“前”、“后”、“左”、“右”等,仅是参考附图的方向。因此,使用 的方向用语是用来说明并非用来限制本公开。
研究发现,理想的机器学习计算机应该具有同构、串行、层次同性的 特从而简化编程(包括编写机器学习应用和移植编程框架)。如果所有的 机器学习计算机,即使它们具有完全不同的规模,都采用相同的指令集结 构,那么程序的移植工作就不再需要单独为每一种新产品重做一次,这将 显著地解放程序员的生产力。基于此,本公开实施例通过引入智能处理器 的思想,构建分形的机器学习计算机,以解决上述技术问题。下面进行详 细介绍。
要构造智能处理器的思想构造分形的机器学习计算机,首先要确认机 器学习的应用负载适合表示为分形形式。本公开实施例研究了几种典型机 器学习应用负载所具有的共性计算原语,发现使用一组计算原语(向量内 积、向量距离、排序、激活函数、计数等)即可描述这些应用负载。
机器学习应用负载通常属于计算和存储密集型应用,但在执行控制 流、学习方式和训练方法等方面有许多不同。然而,所有机器学习应用负 载都在某一粒度上具有高并发度,因此,许多异构机器学习计算机设计了 专用硬件来利用这一特性实现加速。这些专用硬件的例子包括GPU、 FPGA、以及ASIC芯片。本公开实施例首先将这些应用负载分解为计算原语,然后使用分形的表达式进行表达。
具体地,本公开实施例选择了六种具有代表性的机器学习应用负载, 在经典的数据集上执行,并分解其中每一种计算原语所需的执行时间。
表1
Figure BDA0002587387080000051
如表1所示,本公开实施例选择了以下负载:
·CNN-鉴于深度学习的流行,选择AlexNet算法和ImageNet数据 集作为卷积神经网络(CNN)的代表性应用负载。
·DNN-同样出于深度学习技术,选择3层结构的多层感知机 (MLP)作为深度神经网络(DNN)的代表性应用。
·k-Means-K-平均算法,一种经典的机器学习聚类算法。
·k-NN-K-近邻算法,一种经典的机器学习分类算法。
·SVM-支持向量机,一种经典的机器学习分类算法。
·LVQ-学习向量量化,一种经典的机器学习分类算法。
基于此,将机器学习应用负载分解为矩阵运算和向量运算。诸如向量 -矩阵乘法或矩阵-向量乘法这样的运算被归并为矩阵乘法,诸如矩阵-矩阵 加法/减法、矩阵-标量乘法、向量逐元素运算等运算归并为逐元素变换。 于是,分解得到了7种主要的计算原语,包括内积、卷积、池化、矩乘、 逐元素变换、排序和计数。为了深度学习应用表达的简易性,在矩乘之外 还额外增加了专门的卷积、池化运算;内积实际上是向量-向量乘法,也可 以用来表示深度神经网络中的全连接层。可以观察到,这7种共性计算原 语基本表达了机器学习应用负载。
接下来,本公开实施例采用分形运算来描述上述7中共性计算原语,
表2
Figure BDA0002587387080000061
如表2所示,每一种计算原语可能具有多种k-分解方式。一些运算在 分解后产生部分结果,需要经过归约才能得到最终结果,表2中列出了所 需的归约运算;一些运算分解后得到的分形子运算之间可能存在共享的输 入数据,此时需要引入数据冗余,表2中列出了冗余的部分。不难发现, 通过引入归约运算和数据冗余,所有7个共性计算原语都能够表示为分形 运算。因此,要设计新的专用体系结构高效地执行这些分形运算,本公开 实施例需要解决以下三个关键挑战:
1.归约运算-为了高效地处理归约运算,本公开实施例需要在体系结 构中引入轻量级的本地处理单元(LFU)。在从分形处理单元(FFU)收回 部分结果数据后,本地处理单元可以高效地在其上执行归约运算。
2.数据冗余-在分形运算的执行过程中,本公开实施例需要引入数据 冗余。为此,分形机器学习计算机中的存储层次结构需要保证数据一致性, 并寻找数据复用机会。
3.分形机器学习计算机的不同节点之间的数据通信可能产生复杂的 物理连线,导致面积、延迟和能耗开销。为此,本公开实施例发现在分形 运算的执行过程中,仅有父子节点之间需要数据通信,因此,数据通路设 计得以大幅简化;设计者可以通过迭代模块化设计分形机器学习计算机, 而所有连线全部被限制在父子之间,因此减少了连线拥塞。
下面从细节介绍本公开实施例解决上述关键挑战的技术方案。
本公开第一实施例提供一种用于智能处理器的控制系统,智能处理器 的每一层分形计算子单元包括所述控制系统,控制系统包括:串行分解模 块,用于对智能处理器执行分形运算对应的分形指令集进行串行分解,得 到串行分解子指令,并对串行分解子指令进行暂存;降级模块,用于对串 行分解子指令进行降级,将上一层分形计算子单元对当前层分形计算子单 元下发的串行分解子指令修改为当前层分形计算子单元对下一层分形计算子单元下发的串行分解子指令;并行分解模块,用于对降级后的串行分 解子指令进行并行分解,得到满足智能处理器中所有分形计算子单元并发 运行的并发度要求的并行分解子指令。
图1示意性示出了本公开第一实施例提供分形冯·诺依曼体系结构的 架构图。本公开实施例所述的智能处理器也即采用分形冯·诺依曼体系结 构构建的计算系统。
在几何学中,分形即指一个几何图形在不同规模尺度上自相似,因此, 分形概念中包含了一种刻画几何图形的规模不变量,其是由一组简单的生 成规则定义的,不断重复地以一种模式替换图形中的某一部分,可以生成 具有任意规模的复杂图形。其中,图形的替换规则即是一种规模不变量。 本公开实施例采用类似的思想,将系统描述方式作为一种规模不变量,得 到了分形冯·诺依曼体系结构。
如图1所示,分形冯·诺依曼体系结构是一种可以迭代模块化设计的 体系结构,通过复制自身产生的数个副本组成——一个最小的分形冯·诺 依曼体系结构由存储器、控制器和运算器(LFU和FFU)组成,搭配输入 /输出模块,即可形成一个最小规模的计算系统,也即分形计算子单元。更 大一些的分形冯·诺依曼体系结构将较小规模的分形冯·诺依曼体系结构 作为运算器,由多个并发的运算器搭配控制器、存储器,搭配输入/输入模块构成;以此类推,分形冯·诺依曼体系结构能够根据迭代模块化设计的 方式构建出任意规模的计算系统。其中,分形冯·诺依曼体系结构的每一 层采用的控制器都具有相同的结构。因此在设计硬件电路时,分形冯·诺 依曼体系结构的迭代模块化设计可以大幅简化控制逻辑的设计和验证工 作。
分形冯·诺依曼体系结构在每一层上采用相同的指令集结构,称为分 形指令集结构(FISA)。分形指令集结构中包含两种指令:本地指令和分 形指令。
本实施例给出了分形指令集结构形式化的定义:
定义3.1(FISA指令)FISA指令I是一个三元组<O,P,G>,其中O是 一种运算,P是操作数的有限集合,G是粒度标识符。
定义3.2(分形指令)FISA指令I<O,P,G>是分形指令,当且仅当存在 一组粒度标识符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上分形执行的。
本公开实施例的智能处理器的FISA指令集设计采用了比较高的抽象 级别,因此能够改善编程生产效率并达成高计算访存比。如表3所示,例 如卷积和排序这样的高级操作可以直接用一条指令来表示。具有较低计算 访存比的低级运算也同样加入了指令集中,因此可以获得更好的编程灵活 性。这些低级运算通常会被视为本地指令,并且智能处理器会倾向于使用 LFU来执行它们以减少数据搬运。
表3
Figure BDA0002587387080000091
进一步地,本地指令用来描述归约操作,由控制器发往本地处理单元 (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设为原子粒 度,形成新粒度标识符<1,1,...,1,ti+1,ti+2,...,tN>。
最后,在当前的维度上,对分形指令的操作数进行串行分解,包括: 将优先级低于当前分解的维度的维度对应的分解粒度为原子粒度,优先级 高于该维度的维度对应的粒度保持不变,并确定当前分解的维度满足智能 处理器的内存组件容量限制的最大粒度,得到第二指令标识符。根据第二 指令标识符对分形指令的操作数进行串行分解。也即,选择在ti维度上进 行串行分解,那么t1,t2,...,ti-1都被分解为原子粒度(粒度1),而ti+1,ti+2,...,tN都保持原粒度不变。依照二分查找法确定,寻找到满足容量限 制的最大粒度t′i,最终输出的指令具有粒度标识符<1,1,...,1,t′i,ti+1, ti+2,...,tN>。
进一步地,二分查找法确定满足容量限制的最大粒度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 (11)

1.一种用于智能处理器的指令分解方法,其特征在于,所述智能处理器根据分形指令进行分形运算,所述方法包括:
确定对所述分形指令的操作数进行分解的维度的分解优先级;
根据所述分解优先级选择当前分解的维度;
在所述当前分解的维度上,对所述分形指令的操作数进行串行分解。
2.根据权利要求1所述的指令分解方法,其特征在于,所述根据所述分解优先级选择当前分解的维度,包括:
对于其中一维度,将该维度及优先级低于该维度的维度设为原子粒度,优先级高于该维度的维度的粒度保持原有粒度,得到第一指令标识符;
根据所述第一指令标识符对所述操作数进行分解;
判断分解后的操作数需要的内存容量是否小于所述智能处理器的内存组件的容量大小;
若是,则选择该维度作为所述当前分解的维对所述操作数进行分解,若否,选择下一分解的维度进行判定。
3.根据权利要求1或2所述的指令分解方法,其特征在于,所述在所述当前分解的维度上,对所述分形指令的操作数进行串行分解,包括:
将优先级低于所述当前分解的维度的维度对应的分解粒度为原子粒度,优先级高于该维度的维度对应的粒度保持不变,并确定所述当前分解的维度满足所述智能处理器的内存组件容量限制的最大粒度,得到第二指令标识符;
根据所述第二指令标识符对所述分形指令的操作数进行串行分解。
4.根据权利要求3所述的指令分解方法,其特征在于,所述确定所述当前分解的维度满足所述智能处理器的内存组件容量限制的最大粒度,包括:
采用二分查找法确定所述最大粒度。
5.根据权利要求3所述的指令分解方法,其特征在于,所述指令分解方法还包括:
计算串行分解得到的子指令中各操作数的地址。
6.一种用于智能处理器的指令分解装置,其特征在于,所述智能处理器根据分形指令进行分形运算,所述装置包括:
确定模块,用于确定对所述分形指令的操作数进行分解的维度的分解优先级;
选择模块,用于根据所述分解优先级选择当前分解的维度;
分解模块,用于在所述当前分解的维度上,对所述分形指令的操作数进行串行分解。
7.根据权利要求1所述的指令分解装置,其特征在于,所述选择模块根据所述分解优先级选择当前分解的维度时,包括:
对于其中一维度,所述选择模块将该维度及优先级低于该维度的维度设为原子粒度,优先级高于该维度的维度的粒度保持原有粒度,得到第一指令标识符;
所述选择模块根据所述第一指令标识符对所述操作数进行分解;
所述选择模块判断分解后的操作数需要的内存容量是否小于所述智能处理器的内存组件的容量大小;
若是,则所述选择模块选择该维度作未所述当前分解的维对所述操作数进行分解,若否,所述选择模块选择下一分解的维度进行判定。
8.根据权利要求6或7所述的指令分解方法,其特征在于,所述分解模块在所述当前分解的维度上,对所述分形指令的操作数进行串行分解时,包括:
所述分解模块将优先级低于所述当前分解的维度的维度对应的分解粒度为原子粒度,优先级高于该维度的维度对应的粒度保持不变,并确定所述当前分解的维度满足所述智能处理器的内存组件容量限制的最大粒度,得到第二指令标识符;
所述分解模块根据所述第二指令标识符对所述分形指令的操作数进行串行分解。
9.根据权利要求8所述的指令分解装置,其特征在于,所述分解模块确定所述当前分解的维度满足所述智能处理器的内存组件容量限制的最大粒度,包括:
所述分解模块采用二分查找法确定所述最大粒度。
10.根据权利要求8所述的指令分解装置,其特征在于,所述指令分解装置还包括:
计算模块,用于计算串行分解得到的子指令中各操作数的地址。
11.一种电子设备,包括权利要求6-10任一项所述的装置。
CN202010689147.1A 2020-07-16 2020-07-16 用于智能处理器的指令分解方法、装置及电子设备 Active CN111831333B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010689147.1A CN111831333B (zh) 2020-07-16 2020-07-16 用于智能处理器的指令分解方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010689147.1A CN111831333B (zh) 2020-07-16 2020-07-16 用于智能处理器的指令分解方法、装置及电子设备

Publications (2)

Publication Number Publication Date
CN111831333A true CN111831333A (zh) 2020-10-27
CN111831333B CN111831333B (zh) 2024-03-29

Family

ID=72924414

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010689147.1A Active CN111831333B (zh) 2020-07-16 2020-07-16 用于智能处理器的指令分解方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN111831333B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113268269A (zh) * 2021-06-07 2021-08-17 中科计算技术西部研究院 一种针对动态规划算法的加速方法、系统及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5418942A (en) * 1989-07-06 1995-05-23 Krawchuk; Kenneth V. System and method for storing and managing information
CN110489087A (zh) * 2019-07-31 2019-11-22 北京字节跳动网络技术有限公司 一种生成分形结构的方法、装置、介质和电子设备
CN110502330A (zh) * 2018-05-16 2019-11-26 上海寒武纪信息科技有限公司 处理器及处理方法
CN110538469A (zh) * 2019-09-25 2019-12-06 杭州高低科技有限公司 可实现指令切换的有形编程指令积木

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5418942A (en) * 1989-07-06 1995-05-23 Krawchuk; Kenneth V. System and method for storing and managing information
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)

* Cited by examiner, † Cited by third party
Title
YONGWEIZHAO等: "Cambricon-F:machine learning computers with fractal von neumann architecture", 《2019ACM/IEEE 46TH ANNUAL INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE》, pages 788 - 801 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113268269A (zh) * 2021-06-07 2021-08-17 中科计算技术西部研究院 一种针对动态规划算法的加速方法、系统及装置
CN113268269B (zh) * 2021-06-07 2022-10-14 中科计算技术西部研究院 一种针对动态规划算法的加速方法、系统及装置

Also Published As

Publication number Publication date
CN111831333B (zh) 2024-03-29

Similar Documents

Publication Publication Date Title
JP6821002B2 (ja) 処理装置と処理方法
Gajski et al. Essential issues in multiprocessor systems
US12026606B2 (en) Fractal calculating device and method, integrated circuit and board card
CN111831582B (zh) 用于智能处理器的内存管理装置、方法及电子设备
US11841822B2 (en) Fractal calculating device and method, integrated circuit and board card
CN115437637A (zh) 一种编译方法及相关装置
Zhao et al. Machine learning computers with fractal von Neumann architecture
CN111831333B (zh) 用于智能处理器的指令分解方法、装置及电子设备
WO2023030507A1 (zh) 编译优化方法、装置、计算机设备以及存储介质
CN115469931B (zh) 一种循环程序的指令优化方法、装置、系统、设备及介质
US20190042941A1 (en) Reconfigurable fabric operation linkage
CN111831339B (zh) 用于智能处理器的指令执行方法、装置及电子设备
CN111831332A (zh) 用于智能处理器的控制系统、方法及电子设备
Mishra et al. Artificial Intelligence and Hardware Accelerators
CN115840894A (zh) 一种用于处理多维张量数据的方法及其相关产品
CN111857824A (zh) 用于分形智能处理器的控制系统、方法及电子设备
Du et al. Breaking the interaction wall: A DLPU-centric deep learning computing system
US20230385125A1 (en) Graph partitioning and implementation of large models on tensor streaming processors
US11775299B1 (en) Vector clocks for highly concurrent execution engines
US12073200B2 (en) Compiler device, instruction generation method, program, compiling method, and compiler program
US20230385230A1 (en) High performance softmax for large models
US11809981B1 (en) Performing hardware operator fusion
US20240069770A1 (en) Multiple contexts for a memory unit in a reconfigurable data processor
Andrade et al. Multi-Processor System-on-Chip 1: Architectures
CN118034696A (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