CN111831331B - 用于分形智能处理器的分形可重配指令集 - Google Patents
用于分形智能处理器的分形可重配指令集 Download PDFInfo
- Publication number
- CN111831331B CN111831331B CN202010688961.1A CN202010688961A CN111831331B CN 111831331 B CN111831331 B CN 111831331B CN 202010688961 A CN202010688961 A CN 202010688961A CN 111831331 B CN111831331 B CN 111831331B
- Authority
- CN
- China
- Prior art keywords
- fractal
- decomposition
- instruction set
- instruction
- operations
- 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
- 238000000354 decomposition reaction Methods 0.000 claims abstract description 129
- 238000004364 calculation method Methods 0.000 claims abstract description 29
- 239000013598 vector Substances 0.000 claims abstract description 15
- 230000015556 catabolic process Effects 0.000 claims abstract description 9
- 238000006731 degradation reaction Methods 0.000 claims abstract description 9
- 230000000593 degrading effect Effects 0.000 claims abstract description 5
- 238000012545 processing Methods 0.000 claims description 22
- 230000009467 reduction Effects 0.000 claims description 8
- 239000011159 matrix material Substances 0.000 claims description 3
- 230000009466 transformation Effects 0.000 claims description 3
- 238000000034 method Methods 0.000 abstract description 16
- 230000008569 process Effects 0.000 abstract description 12
- 230000014509 gene expression Effects 0.000 abstract description 8
- 238000013461 design Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- MHABMANUFPZXEB-UHFFFAOYSA-N O-demethyl-aloesaponarin I Natural products O=C1C2=CC=CC(O)=C2C(=O)C2=C1C=C(O)C(C(O)=O)=C2C MHABMANUFPZXEB-UHFFFAOYSA-N 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
- 239000002699 waste material Substances 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/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/29—Graphical models, e.g. Bayesian networks
-
- 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/30094—Condition code generation, e.g. Carry, Zero flag
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本公开提供一种用于分形智能处理器的分形可重配指令集,该分形可重配指令集将本地指令或计算原语映射为用于分形运算的分形指令,该本地指令作用于向量数据或标量数据。该分形可重配指令集包括间接指令域。对应的,分形智能处理器的控制系统包括分解模块、降级模块及记录模块;分解模块用于对分形可重配指令集进行串行分解;降级模块用于对串行分解后的串行分解子指令进行降级;分解模块还用于对降级后的串行分解子指令进行并行分解。记录模块,用于在每一次串行分解之前,替换所间接指令域的值,以实现对分形可重配指令集的动态控制。该分形可重配指令抽象层次高,表达灵活性强,结合控制系统的硬件架构支持,可解决计算过程中的失效问题。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种用于分形智能处理器的分形可重配指令集。
背景技术
在分形计算领域,由于计算中涉及到一些未原生支持的非共性运算时,受限于指令结构,在计算过程中可能存在计算失效和通信失效的现象。对于一些更复杂的算法,虽然可以通过串行地拼接原生支持的低级分形运算来间接地支持,但执行效率会受到明显的损失。
例如,贝叶斯网络是一种符合分形运算定义的应用负载,但在分形指令集结构上却只能分解为一系列基本运算来描述。拆解后多条基本运算指令之间形成了抽象阻隔,没有任何一条指令保留了原应用负载作为“贝叶斯网络”的语义,也就不能按照针对“贝叶斯网络”最佳的方式去执行,引入额外的运算和通信开销。
因此,采用固定的、有限的分形指令集是无法有效支持多变的、无限的应用负载需求,并且相关控制系统也不能有效支持多变的、无限的应用负载需求。
发明内容
针对上述的缺陷,本公开的目的在于提供一种用于分形智能处理器的分形可重配指令集,用于至少部分解决上述问题。
根据本公开实施例提供一种用于分形智能处理器的分形可重配指令集,所述分形可重配指令集将本地指令和/或计算原语映射为用于分形运算的分形指令,其中,所述本地指令作用于向量数据和/或标量数据;所述分形智能处理器包括控制系统,所述控制系统包括分解模块及降级模块;所述分解模块用于对所述分形可重配指令集进行串行分解;所述降级模块用于对串行分解后的串行分解子指令进行降级;所述分解模块还用于对降级后的串行分解子指令进行并行分解,以使得所述分形智能处理器根据并行分解后的分形指令执行分形运算。
在一些实施例中,所述分形可重配指令集将本地指令映射为用于分形运算的分形指令;所述分解模块包括通用处理单元、存储器、第一状态栈及第二状态栈,其中,所述存储器用于存储所述分形可重配指令集对应的控制代码;第一状态栈及第二状态栈用于保存所述通用处理单元的执行状态;所述通用处理单元用于在访问所述第一状态栈时,根据所述控制代码对所述分形可重配指令集进行串行分解,得到串行分解子指令,以及在访问所述第二状态栈时,根据所述控制代码对降级后的串行分解子指令并行分解,得到满足所述分形智能处理器中所有分形计算子单元并发运行的并发度要求的并行分解子指令。
在一些实施例中,所述分形可重配指令集将计算原语映射为用于分形运算的分形指令;所述分解模块包括串行分解模块及并行分解模块,所述串行分解模块用于对所述分形可重配指令集进行串行分解,得到串行分解子指令,其中,每一条所述串行分解子指令的粒度不超过所述分形智能处理器的硬件容量所能允许的范围;所述并行分解模块用于对降级后的串行分解子指令并行分解,得到满足所述分形智能处理器中所有分形计算子单元并发运行的并发度要求的并行分解子指令。
在一些实施例中,所述分形可重配指令集还包括间接指令域;所述分解模块还包括记录模块,所述记录模块用于在每一次串行分解之前,替换所述分形可重配指令集中的间接指令域的值,以实现对所述分形可重配指令集的动态控制。
在一些实施例中,所述本地指令的类型包括数据搬运类、计算类、逻辑类及杂项类。
在一些实施例中,所述数据搬运类对应的操作包括显式的张量移动运算。
在一些实施例中,所述计算类对应的操作包括逐元素非线性变换运算、向量加法运算、标量加法运算、混合加法运算、规约最大值运算、矩阵乘法运算。
在一些实施例中,所述逻辑类对应的操作包括逻辑异或运算、比较大小运算。
在一些实施例中,所述杂项类对应的操作包括生成随机向量、比特计数、归并有序向量。
在一些实施例中,所述计算原语为高抽象层次的计算原语,所述高抽象层次的计算原语包括卷积或排序。
附图说明
图1示意性示出了本公开第一实施例提供分形可重配指令集结构与一般分形指令集结构及传统指令集结构的在抽象层次与表达灵活性方面对比的结果图;
图2示意性示出了本公开第二实施例提供的一种用于分形智能处理器的控制系统结构图;
图3示意性示出了本公开第二实施例提供的另一种用于分形智能处理器的控制系统结构图
图4示意性示出了本公开第三实施例提供的控制方法的流程图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开作进一步的详细说明。
需要说明的是,在附图或说明书描述中,相似或相同的部分都使用相同的图号。附图中未绘示或描述的实现方式,为所属技术领域中普通技术人员所知的形式。另外,虽然本文可提供包含特定值的参数的示范,但应了解,参数无需确切等于相应的值,而是可在可接受的误差容限或设计约束内近似于相应的值。此外,以下实施例中提到的方向用语,例如“上”、“下”、“前”、“后”、“左”、“右”等,仅是参考附图的方向。因此,使用的方向用语是用来说明并非用来限制本公开。
为了克服分形计算过程中的失效问题,本公开提出一种用于分形智能处理器的分形可重配指令集,分形可重配指令集可灵活可配置,具有高编程效率(对应抽象层次,抽象层次高,对应变成效率高),分形智能处理器的硬件结构上增加对分形可重配指令集对应的硬件支持。两者相互结合,使得分形智能处理器可根据分形可重配指令集有效支持任意分形运算。
本公开第一实施例提供一种分形可重配指令集结构(FRISA),FRISA被配置为可自定义新的分形指令,这样,从程序员的角度来看,能够自定义新分形指令的可重配指令集能够在不更新硬件的情况下提供新分形指令,对于适应新兴应用而言极其灵活。
在本公开一些实施例中,该分形可重配指令集结构可以基于本地指令构建,本地指令类型多样,每一类本地指令均可作用于向量数据和标量数据,基于该些均可作用于向量数据和标量数据的本地指令,可以组合非常复杂的运算,程序员可以通过必要的硬件结构支持为新运算构建分形扩展指令(硬件结构的支持在后面进行详细介绍)。如表1所示,列举出了本公开实施例的一部分本地指令类型。
表1
该本地指令集可以包括四大类,数据搬运类、计算类、逻辑类及杂项类。其中,数据搬运类对应的操作例如可以包括显式的张量移动运算。计算类对应的操作例如可以包括逐元素非线性变换运算、向量加法运算、标量加法运算、混合加法运算、规约最大值运算、矩阵乘法运算等。逻辑类对应的操作例如可以包括逻辑异或运算、比较大小运算等。杂项类对应的操作例如可以包括生成随机向量、比特计数、归并有序向量等。基于该些本地指令,可根据实际需求组合对应的运算,自定义分形运算指令。
在本公开一些实施例中,该分形可重配指令集结构还可以基于计算原语构建,也即将计算原语映射为用于分形运算的分形指令,使得分形智能处理器可根据提供的原生分形指令执行分形运算。该可重配指令集结构可以将高抽象级别的计算原语直接映射为用于分形运算的分形指令。高抽象级别的原语包括但不限于卷积、排序等。
本实施例在抽象层次与表达灵活性方面,将上述基于本地指令构建的分形可重配指令集结构(FRISA)与一般分形指令集结构(FISA)及传统指令集结构——例如超长指令字(VLIW)和精简指令集计算机(RISC),对比结果如图1所示。
从图1可以看出,位于顶部的FISA能够提供出色的编程效率,因为它将一些高抽象级别原语(例如卷积、排序等)直接映射成为一条FISA指令。然而,当需要的运算不存在于FISA指令集中时,就需要编写多条串行执行的FISA指令来表达。因为原运算已经被分解为多条FISA指令组成的序列,每一条指令在执行过程中,各个分形节点无法知道具体的原运算,这导致浪费掉一部分计算能力和数据复用的机会。另一方面,现今的机器学习算法正在快速演进,许多新提出的高抽象级别原语正在诞生。如果新运算原语不能由已有的FISA指令拼接表达,就必须要更新指令集才能支持该运算,同时还需要重新设计、制造更新指令集的分形计算机。
FRISA相比FISA、VLIW和RISC,在抽象层次和表达灵活性上均完全占优。与FISA不同,FRISA不再提供原生的分形指令,而是提供一组本地指令(与FISA中的本地指令类似)作为组件来构造分形指令。基于这些本地指令,程序员可以通过必要的硬件结构支持为新运算构建分形扩展指令。因此,目标运算可以映射为一条分形扩展指令,而非FISA中串行执行的多条固定的分形指令,可以改善失效现象,并且,FISA指令集中原本提供的分形指令也可以在FRISA中预配置,所以具有FRISA指令集的计算机可以完全兼容已有的FISA程。与VLIW和RISC不同,VLIW和RISC这些传统指令集结构通常更贴近于底层硬件的运算能力,带有许多低抽象层次的表达(例如许多RISC指令是硬件功能单元例如ALU和FPU的直接映射),而FRISA能够将高抽象层次的计算原语表达为一条分形指令。
因此,基于本地指令构建的可重配指令集结构,其表达的灵活性显著提高,并且可将高抽象层次运算直接映射为分形指令,从而改变分形计算过程中的失效现象。
进一步地,在上述描述的分形可重配指令集结构的基础上,分形可重配指令集结构还包括间接指令域,该间接指令域用于实现对分形可重配指令集结构的动态控制。在实际的运算过程中,一些指令参数需要在运行时读取数据来决定,即需要动态控制。例如,将稀疏数据分解为两部分时,需要插入一条POPCNT(比特计数)指令在索引表上计数,来确定分解后每一部分的实际大小。由于该数据只有在运行时才能确定,所以需要动态控制的支持才能实现这个功能。因此,通过在FRISA指令上设置间接指令域来实现动态控制。
综上所述,本公开第一实施例提供一种基于本地指令构建的分形可重配指令集结构,可被配置为自定义新指令,且由于本地指令的多样性及本地指令可作用于向量及标量数据,使得该指令能够组合各种复杂的运算,指令表达的灵活性显著提升,同时该分形可重配指令集结构可将高抽象层次的计算原语直接映射为分形指令,抽象层次高,高抽象层次及强表达灵活性可解决计算过程中的失效问题。
为了对上述构建的分形可重配指令集结构提供硬件支持,以使分形智能处理器能够更好地根据分形可重配指令集结构进行相应的分形运算,分形智能处理器包括控制系统,该控制系统包括分解模块及降级模块;分解模块用于对分形可重配指令集进行串行分解;降级模块用于对串行分解后的分形指令进行降级;分解模块还用于对降级后的分形指令进行并行分解,以使得分形智能处理器根据并行分解后的分形指令执行分形运算。
本公开实施例提供一种控制系统,该控制系统可有效地支持基于本地指令或计算原语映射的分形指令的分形运算。图2示意性示出了本公开第二实施例提供的一种用于分形智能处理器的控制系统结构图。
如图2所示,分形智能处理器的每一个节点(也即每一层分形计算子单元)都带有相同的控制器,用来对分形可重配指令集结构进行处理,使得整个分形智能处理器按照处理后的分形指令集进行分形运算。
该控制系统将分形智能处理器中指令的串行分解、并行分解及规约运算组成一个分解模块(分解器(DEC)),该控制系统还包括降级模块(DD)、第一指令队列暂存单元(IQ)及第二指令队列暂存单元(SQ)。
第一指令队列暂存单元(IQ)用于储存原始的分形可重配指令集,第二指令队列暂存单元(SQ)用于串行分解后的分形可重配指令集。
分解器包括通用处理单元(DECC)、存储器、第一状态栈(SDSTACK)及第二状态栈(PDSTACK)。
存储器例如可以选择只读存储器(ROM),用于预装载分形可重配指令对应的控制代码,DECC根据ROM中装载的控制代码执行对指令的处理,两个状态栈用于保存DECC的执行状态。
DEC使用双线程执行方式,一条线程模拟SD的功能,另一条线程模拟PD和RC的功能,通过多路选通模块切换DECC目前访问的状态栈来进行线程切换。也即若当前时刻DECC访问第一状态栈,则DECC获取ROM中的控制代码及IQ中暂存的分形可重配指令集,根据控制代码对分形可重配指令集进行串行分解(SD),得到串行分解子指令,并将串行的分解子指令暂存到SQ中。若当前时刻DECC访问第二状态栈,则DECC获取ROM中的控制代码,根据控制代码对降级后的串行分解执行并行分解(PD),得到满足分形智能处理器中所有分形计算子单元并发运行的并发度要求的并行分解子指令。其中,并行分解的优先级要高于串行分解,因此,在第二状态栈不为空时,通用处理单元根据控制代码对降级后的串行分解子指令并行分解;在第二状态栈为空时,通用处理单元根据控制代码对分形可重配指令集进行串行分解。两个线程共享大多数控制代码,因此共用同一个DECC/ROM能够节省许多电路面积,也会让控制代码编程的冗余减少。其中,多路选通模块可以是有硬件结构实现的多路选通器。
降级模块(DD)包括检查单元、分配单元、DMA及替换单元。DD从SQ中取出一条串行分解子指令,并将其“降级”,将该指令从“上一级节点对本节点下达的指令”改写为“本节点对下一级节点下达的指令”,具体操作包括:
检查单元检查数据依赖是否满足,安排指令何时发射进入流水线,何时插入流水线空泡。
分配单元为串行分解子指令中位于外部存储器的操作数分配本地存储空间。
DMA(Direct Memory Access,直接存储器访问)生成DMAC指令控制DMA将数据在指令执行前写入、执行后写出,形成外部数据的本地备份,以便下一级节点访问。
替换单元将串行分解子指令对应的操作数替换为本地备份操作数。
在DEC对指令处理完成后,分形智能处理器根据处理后的指令进行分形运算,得到分形运算结果。此时,使用多路选通模块将DECC切换到访问第二状态栈,此时DECC执行模拟PD和RC的线程,从而对分形运算结果进行规约运算。
进一步地,正如前述所述,分形可重配指令集结构还包括间接指令域,该间接指令域用于实现对分形可重配指令集结构的动态控制。因此,该控制系统还设有一记录模块,也即DEC维护一个记录模块,每一次串行分解开始之前,等待记录模块记录的状态可用时将分形可重配指令集读出并替换间接指令域的值,从而通过间接指令域实现动态控制。并且,经过串行分解后,送往其他部分的分形可重配指令集结构指令上不会再包含间接域,控制系统的其他部分不需要增加动态控制的结构支持。
综上所述,本实施例提供的控制系统的对上述分形可重配指令集结构提供硬件支持,即该控制系统的也是可重配,将SD、PD和RC重组成了一个新的模块(分解器DEC),分解器按照预装载的控制代码控制用户定义的分形可重配指令集结构的执行过程,能够有效支持任意分形运算,避免计算过程中的失效问题。并且,控制系统还增加记录模块,根据记录模块记录的状态对分形可重配指令集中的间接指令域进行替换,实现动态控制,以满足实际分形运算中一些指令参数需要在运行时读取数据来决定的情况。
在本实施例另一可行的方式中,当分形指令为基于计算原语映射时,控制系统的分解模块除了上述双线程设计外,还可以是独立设置的串行分解模块及并行分解模块。串行分解模块用于对分形可重配指令集进行串行分解,得到串行分解子指令,其中,每一条串行分解子指令的粒度不超过分形智能处理器的硬件容量所能允许的范围;并行分解模块用于对降级后的串行分解子指令并行分解,得到满足分形智能处理器中所有分形计算子单元并发运行的并发度要求的并行分解子指令。
图3示意性示出了本公开第二实施例提供的另一种用于分形智能处理器的控制系统结构图。如图3所示,串行分解模块包括第一指令队列暂存单元(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暂存后,流水线上的数据依赖关系不会发生改变,仍可以保证执行的正确性。
应当理解,上述控制系统中的各功能模块可以通过硬件电路实现,也可通过软件模块实现。
基于上述控制系统,本公开第三实施例还提供一种控制方法,图4示意性示出了本公开第三实施例提供的控制方法的流程图,如图4所示,该方法例如可以包括:
S401,将通用处理单元切换至访问第一状态栈,使得通用处理单元根据控制代码对分形可重配指令集进行串行分解,得到串行分解子指令。
在进行串行分解的过程中,为了满足实际分形运算中一些指令参数需要在运行时读取数据来决定的情况,在在每一次串行分解之前,替换分形可重配指令集中的间接指令域的值,以实现动态控制。
S402,对串行分解子指令进行降级,将上一层分形计算子单元对当前层分形计算子单元下发的所述串行分解子指令修改为当前层分形计算子单元对下一层分形计算子单元下发的串行分解子指令。
S403,将通用处理单元切换至访问第二状态栈,使得通用处理单元根据控制代码对降级后的串行分解子指令并行分解,得到满足分形智能处理器中所有分形计算子单元并发运行的并发度要求的并行分解子指令,以使分形计算子单元根据并行分解子指令执行分形运算。
S404,保持通用处理单元访问第二状态栈,使得通用处理单元根据控制代码对分形运算后的结果进行规约运算。
方法实施例部分未尽细节之处请参见上述系统实施例部分,其带来的效果与系统实施例部分相同,此处不再赘述。
为了能够帮助程序员定义上述所述的分形可重配指令,无需管理太多的机器运行细节,本公开的实施例定义一种新编程语言DEFRACTAL来描述分形运算的三个部分(k-分解程序-指令分解、归约程序-规约运算和叶子模型程序-分形子单元)。
DEFRACTAL的编程方式是特殊的,因为许多执行的决定权并不归属于程序员。在DEFRACTAL中,程序员仅负责提供可供选择的选项,而分解器将按照自身硬件参数、当前执行的指令参数来选择最佳方案。这样,程序员从机器细节中解放出来,更专注于使用语言来描述运算本身。具体来说:
1.程序员定义指令的名字和参数(形参),而DEFRACTAL将会提供一个具体的指令(实参)来调用该部分程序;
2.程序员提供几种分解备选项(opt),而DEFRACTAL根据机器的实际情况尽力选择一个最佳选项;
3.程序员定义一个分解中枢变量,提供它的取值范围,而DEFRACTAL将为中枢变量赋一个最佳的中枢值;
4.程序员根据实参和中枢值,写出该选项下分解出的子指令序列,而DEFRACTAL将决定是否对每一条子指令继续进行递归的分解过程。
DEFRACTAL的主要优势就是通过提供一种人机互动式的编程方式,将形式的定义和实际的执行过程分离开,从而简化了编程和硬件结构设计。编程过程中用户将重要决定的权力(例如确定opt和确定中枢值)交由DEFRACTAL根据机器的实际情况处理。因此DEFRACTAL实现了三项性质:
·与硬件配置无关。因为实际的分解过程由DEFRACTAL根据机器的参数来决定,程序员写出的扩展指令定义可以执行于任意规模的分形智能处理器上;
·与指令粒度无关。当分解出的指令粒度不够小时DEFRACTAL能够自动决定继续分解,因此程序员写出的扩展指令定义与指令的粒度也无关;
·与SD/PD无关。程序员不需要关心所写程序是用于SD还是PD,因为DEC能够以双线程模式调度,而在SD/PD线程中分别选取合适的opt是DEFRACTAL的责任,程序员写出的程序与所处线程也无关。
具体地,本实施例严格按照分形运算的定义来设计DEFRACTAL,DEFRACTAL的语法是由C语言修改而来,例如:
<translation-unit>::=<frisa-def><translation-unit>optional
<frisa-def>::=<frisa-opcode><frisa-param-list>{<opt-def-list>}
<pivot-decl>::=<pivot>:[<lower>,<upper>]
<opt-def>::=<opt-specifier><pivot-decl>optional<comp-stmt>
<stmt>::=<var-decl>|<comp-stmt>|<frac-slmt>|<reduce-stmt>|<sub-inst-stmt>
<frac-stmt>::=frac<expr>:<expr><stmt>
<reduce-stmt>::=reduce<stmt>
<sub-inst-stmt>::=<frisa-opcode><expr-list>;
上述语法中,frisa-def定义了指令的名字(frisa-opcode)、参数(frisaparam-list)以及一系列opt(opt-def),每一个opt-def定义了一个分解备选项。
opt-def包含了一个分解中枢变量的声明(pivot-decl),以及一个复合语句
作为定义分解出的子指令的命令式代码。实际上,有些opt不需要定义中枢值,
特别是叶子节点上的叶子分解(分解为一系列本地指令),因此pivot-decl是可以省略的。
DEFRACTAL当中引入了三种新的语句:frac-stmt、reduce-stmt和sub-inststmt,对应着待分解分形运算f(·)、归约运算g(·)和实际要写出的分解后的子指令。有了这三种语句,DEFRACTAL就能够描述任何分形运算。
作为补充,DEFRACTAL还提供了opt-specifier可以指定该opt用于哪一种分解中(目标是减少静态内存段使用的SD、目标是减少循环内存段使用的SD、PD、叶子分解四种)。虽然DEFRACTAL原则上不区分SD和PD,但该额外功能能够帮助性能优化,并化简编译器的设计。
本公开第四实施例还提供一种分形计算机,该分形计算机包括上述所述的控制系统,该控制系统可对上述分形可重配的指令结构集进行处理,以使得该分形智能处理器可进行任意有限的分形运算。具体细节请参见上述实施例部分,此处不再赘述。
此外,在本公开一些实施例里,公开了一种芯片,其包括了上述控制系统。
在本公开一些实施例里,公开了一种芯片封装结构,其包括了上述芯片。
在本公开一些实施例里,公开了一种板卡,其包括了上述芯片封装结构。
在本公开一些实施例里,公开了一种电子装置,其包括了上述板卡。
电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (7)
1.一种用于分形智能处理器的分形可重配指令集,其特征在于,所述分形可重配指令集将本地指令和/或计算原语映射为用于分形运算的分形指令,其中,所述本地指令作用于向量数据和/或标量数据;所述分形智能处理器包括控制系统,所述控制系统包括分解模块及降级模块,所述分形可重配指令集包括间接指令域;
所述分解模块用于对所述分形可重配指令集进行串行分解,所述分解模块包括:
通用处理单元、存储器、第一状态栈及第二状态栈,其中,所述存储器用于存储所述分形可重配指令集对应的控制代码;所述第一状态栈及第二状态栈用于保存所述通用处理单元的执行状态;
所述通用处理单元用于在访问所述第一状态栈时,根据所述控制代码对所述分形可重配指令集进行串行分解,得到串行分解子指令,以及在访问所述第二状态栈时,根据所述控制代码对降级后的串行分解子指令并行分解,得到满足所述分形智能处理器中所有分形计算子单元并发运行的并发度要求的并行分解子指令;所述降级模块用于对串行分解后的串行分解子指令进行降级;
所述分解模块还用于对降级后的串行分解子指令进行并行分解,所述分解模块包括:
串行分解模块及并行分解模块,所述串行分解模块用于对所述分形可重配指令集进行串行分解,得到串行分解子指令,其中,每一条所述串行分解子指令的粒度不超过所述分形智能处理器的硬件容量所能允许的范围;所述并行分解模块用于对降级后的串行分解子指令并行分解,得到满足所述分形智能处理器中所有分形计算子单元并发运行的并发度要求的并行分解子指令;
记录模块,所述记录模块用于在每一次串行分解之前,替换所述分形可重配指令集中的间接指令域的值,以实现对所述分形可重配指令集的动态控制;
以使得所述分形智能处理器根据并行分解后的分形指令执行分形运算。
2.根据权利要求1所述的用于分形智能处理器的分形可重配指令集,其特征在于,所述本地指令的类型包括数据搬运类、计算类、逻辑类及杂项类。
3.根据权利要求2所述的用于分形智能处理器的分形可重配指令集,其特征在于,所述数据搬运类对应的操作包括显式的张量移动运算。
4.根据权利要求2所述的用于分形智能处理器的分形可重配指令集,其特征在于,所述计算类对应的操作包括逐元素非线性变换运算、向量加法运算、标量加法运算、混合加法运算、规约最大值运算、矩阵乘法运算。
5.根据权利要求2所述的用于分形智能处理器的分形可重配指令集,其特征在于,所述逻辑类对应的操作包括逻辑异或运算、比较大小运算。
6.根据权利要求2所述的用于分形智能处理器的分形可重配指令集,其特征在于,所述杂项类对应的操作包括生成随机向量、比特计数、归并有序向量。
7.根据权利要求1所述的用于分形智能处理器的分形可重配指令集,其特征在于,所述计算原语为高抽象层次的计算原语,所述高抽象层次的计算原语包括卷积或排序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010688961.1A CN111831331B (zh) | 2020-07-16 | 2020-07-16 | 用于分形智能处理器的分形可重配指令集 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010688961.1A CN111831331B (zh) | 2020-07-16 | 2020-07-16 | 用于分形智能处理器的分形可重配指令集 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111831331A CN111831331A (zh) | 2020-10-27 |
CN111831331B true CN111831331B (zh) | 2024-04-05 |
Family
ID=72924427
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010688961.1A Active CN111831331B (zh) | 2020-07-16 | 2020-07-16 | 用于分形智能处理器的分形可重配指令集 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111831331B (zh) |
Citations (7)
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 |
US5715459A (en) * | 1994-12-15 | 1998-02-03 | International Business Machines Corporation | Advanced graphics driver architecture |
CN1584824A (zh) * | 2003-08-18 | 2005-02-23 | 上海海尔集成电路有限公司 | 一种基于cisc结构的微处理器构架及指令实现方式 |
CN104820613A (zh) * | 2015-05-27 | 2015-08-05 | 中国科学院自动化研究所 | 一种异构多核程序的编译方法 |
CN110489087A (zh) * | 2019-07-31 | 2019-11-22 | 北京字节跳动网络技术有限公司 | 一种生成分形结构的方法、装置、介质和电子设备 |
CN110502330A (zh) * | 2018-05-16 | 2019-11-26 | 上海寒武纪信息科技有限公司 | 处理器及处理方法 |
CN110538469A (zh) * | 2019-09-25 | 2019-12-06 | 杭州高低科技有限公司 | 可实现指令切换的有形编程指令积木 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090264786A1 (en) * | 2008-04-21 | 2009-10-22 | Brainscope Company, Inc. | System and Method For Signal Denoising Using Independent Component Analysis and Fractal Dimension Estimation |
-
2020
- 2020-07-16 CN CN202010688961.1A patent/CN111831331B/zh active Active
Patent Citations (7)
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 |
US5715459A (en) * | 1994-12-15 | 1998-02-03 | International Business Machines Corporation | Advanced graphics driver architecture |
CN1584824A (zh) * | 2003-08-18 | 2005-02-23 | 上海海尔集成电路有限公司 | 一种基于cisc结构的微处理器构架及指令实现方式 |
CN104820613A (zh) * | 2015-05-27 | 2015-08-05 | 中国科学院自动化研究所 | 一种异构多核程序的编译方法 |
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 |
---|
Yongwei Zhao等.Machine Learning Computers With Fractal von Neumann Architecture.《IEEE Transactions on Computers》.2020,(第7期),998-1014. * |
Also Published As
Publication number | Publication date |
---|---|
CN111831331A (zh) | 2020-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2290543B1 (en) | Task management in a multiprocessor system | |
JP3559046B2 (ja) | データ処理マネージメントシステム | |
US9052957B2 (en) | Method and system for conducting intensive multitask and multiflow calculation in real-time | |
JP3592230B2 (ja) | データ処理装置 | |
US8239660B2 (en) | Processor with automatic scheduling of operations | |
JP2021192257A (ja) | プログラム可能な最適化を有するメモリネットワークプロセッサ | |
JP5145809B2 (ja) | 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム | |
CN111860804B (zh) | 分形计算装置、方法、集成电路及板卡 | |
US20140047218A1 (en) | Multi-stage register renaming using dependency removal | |
US20060265571A1 (en) | Processor with different types of control units for jointly used resources | |
US20030200426A1 (en) | System for expanded instruction encoding and method thereof | |
CN114610394B (zh) | 指令调度的方法、处理电路和电子设备 | |
US20040172519A1 (en) | Processor, system LSI circuit, method of designing same, and recording medium having said method recorded thereon | |
US9690600B2 (en) | Reconfigurable processor and method of operating the same | |
CN111831331B (zh) | 用于分形智能处理器的分形可重配指令集 | |
CN111857824A (zh) | 用于分形智能处理器的控制系统、方法及电子设备 | |
CN111831582A (zh) | 用于智能处理器的内存管理装置、方法及电子设备 | |
US7680909B2 (en) | Method for configuration of a processing unit | |
US8549466B2 (en) | Tiered register allocation | |
US20090063881A1 (en) | Low-overhead/power-saving processor synchronization mechanism, and applications thereof | |
CN115048334A (zh) | 可编程阵列处理器控制装置 | |
TW201005649A (en) | Operating system fast run command | |
US20130166887A1 (en) | Data processing apparatus and data processing method | |
US20220100501A1 (en) | Compressing Micro-Operations in Scheduler Entries in a Processor | |
CN114115997A (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 |