掌桥专利:专业的专利平台
掌桥专利
首页

存算一体处理器、处理系统以及算法模型的部署方法

文献发布时间:2023-06-19 11:05:16


存算一体处理器、处理系统以及算法模型的部署方法

技术领域

本公开的实施例涉及一种存算一体处理器、存算一体处理系统、存算一体处理装置以及基于存算一体处理器的算法模型的部署方法。

背景技术

信息时代已经表现出智能化的新趋势,其面临的主要问题是数据、模型规模的爆发式增长和有限的计算算力之间的矛盾。由于摩尔定律发展逐渐停滞,以及传统计算系统存算分离的本征架构缺陷,经典计算芯片无法满足人工智能发展的高算力和高能效需求。基于忆阻器的存算一体技术有望取得颠覆性突破,依靠新型器件的优势和存算融合的范式,计算过程不需要数据搬移,减少了访存的延时和能耗,有望实现算力和能效的巨幅提升。

经过多年来的发展,忆阻器存算一体技术发展经过器件优化和阵列功能演示阶段后,开始集中于存算一体芯片、系统实现的相关研究。目前,忆阻器芯片实现主要是简单结构的宏阵列芯片(集成忆阻器阵列和简单的外围电路结构)和面向特定网络、特定应用的高度定制化专用芯片,缺少高效、通用的忆阻器存算一体架构和芯片报道。通用忆阻器存算一体芯片是指可以部署、运行各种深度神经网络架构,适合不同的应用任务和应用场景,需要具备同时具备灵活性和高效性。如何在灵活性、高效性和通用性之间平衡,是忆阻器存算一体芯片设计的难点。

发明内容

本公开至少一些实施例提供一种存算一体处理器,包括:第一主控单元和多个忆阻器处理模组,其中,所述第一主控单元被配置为能够调度和控制所述多个忆阻器处理模组;所述多个忆阻器处理模组被配置为能够根据所述第一主控单元的调度和控制进行计算;所述多个忆阻器处理模组还被配置为能够不依赖于所述第一主控单元来进行通信以进行计算。

例如,在本公开一些实施例提供的存算一体处理器中,所述多个忆阻器处理模组中的每个忆阻器处理模组包括多个忆阻器处理单元,其中,所述第一主控单元还被配置为能够调度和控制所述多个忆阻器处理单元;所述多个忆阻器处理单元被配置为能够根据所述第一主控单元的调度和控制进行计算;所述多个忆阻器处理单元还被配置为能够直接数据通信以进行计算。

例如,在本公开一些实施例提供的存算一体处理器中,所述多个忆阻器处理模组中的每个忆阻器处理模组包括第二主控单元和多个忆阻器处理单元,其中,所述第二主控单元被配置为能够调度和控制所述多个忆阻器处理单元;所述多个忆阻器处理单元被配置为能够根据所述第二主控单元的调度和控制进行计算;所述多个忆阻器处理单元还被配置为能够直接数据通信以进行计算。

例如,在本公开一些实施例提供的存算一体处理器中,所述多个忆阻器处理单元中的每个忆阻器处理单元具有独立的接口地址。

例如,在本公开一些实施例提供的存算一体处理器中,所述多个忆阻器处理单元中的每个忆阻器处理单元包括一个忆阻器阵列。

例如,在本公开一些实施例提供的存算一体处理器中,所述多个忆阻器处理模组相互之间通过总线或片上路由进行通信。

例如,在本公开一些实施例提供的存算一体处理器中,所述第一主控单元通过总线或片上路由与所述多个忆阻器处理模组进行交互。

例如,在本公开一些实施例提供的存算一体处理器中,所述多个忆阻器处理模组中的每个忆阻器处理模组具有独立的接口地址。

例如,本公开一些实施例提供的存算一体处理器,还包括:路由模块、输入输出模块,其中,所述存算一体处理器被配置为支持第一计算模式,在所述第一计算模式中,所述路由模块被配置为接收输入数据,对所述输入数据进行解析以得到输入信号,并将所述输入信号传输至所述输入输出模块;所述输入输出模块被配置为对所述输入信号进行分配并传输至所述多个忆阻器处理模组中的至少一个忆阻器处理模组;所述至少一个忆阻器处理模组被配置为根据所述输入信号进行计算,以得到输出信号;所述输入输出模块还被配置为接收所述至少一个忆阻器处理模组的输出信号并整理得到输出数据;所述路由模块还被配置为输出所述输出数据。

例如,本公开一些实施例提供的存算一体处理器,还包括:路由模块、输入输出模块,其中,所述存算一体处理器被配置为支持第二计算模式,在所述第二计算模式中,所述路由模块被配置为接收输入数据,对所述输入数据进行解析以得到输入信号,并将所述输入信号传输至所述输入输出模块;所述输入输出模块被配置为对所述输入信号进行分配并传输至所述第一主控单元;所述第一主控单元被配置为存储所述输入信号,以及控制所述多个忆阻器处理模组中的至少一个忆阻器处理模组获取所述输入信号并进行计算;所述至少一个忆阻器处理模组被配置为在所述第一主控单元的控制下,获取所述输入信号,并根据所述输入信号进行计算以得到输出信号;所述第一主控单元还被配置为存储所述输出信号,并将所述输出信号传输至所述输入输出模块;所述输入输出模块还被配置为接收所述输出信号并整理得到输出数据;所述路由模块还被配置为输出所述输出数据。

例如,本公开一些实施例提供的存算一体处理器,还包括:路由模块、输入输出模块,其中,所述存算一体处理器被配置为支持第三计算模式,在所述第三计算模式中,所述路由模块被配置为接收输入数据,对所述输入数据进行解析以得到输入信号,并将所述输入信号传输至所述输入输出模块;所述输入输出模块被配置为对所述输入信号进行分配,并将所述输入信号中的第一部分输入信号传输至所述多个忆阻器处理模组中的第一部分忆阻器处理模组,将所述输入信号中的第二部分输入信号传输至所述第一主控单元;所述第一部分忆阻器处理模组被配置为根据所述第一部分输入信号进行计算,以得到第一输出信号;所述第一主控单元被配置为存储所述第二部分输入信号,以及控制所述多个忆阻器处理模组中的第二部分忆阻器处理模组获取所述第二部分输入信号并进行计算;所述第二部分忆阻器处理模组被配置为在所述第一主控单元的控制下,获取所述第二部分输入信号,并根据所述第二部分输入信号进行计算以得到第二输出信号;所述第一主控单元还被配置为存储所述第二输出信号,并将所述第二输出信号传输至所述输入输出模块;所述输入输出模块还被配置为接收所述第一输出信号和所述第二输出信号,并相应整理得到第一输出数据和第二输出数据;所述路由模块还被配置为输出所述第一输出数据和第二输出数据。

本公开至少一些实施例还提供一种存算一体处理系统,包括第三主控单元和多个本公开任一实施例提供的存算一体处理系统,其中,所述第三主控单元被配置为能够调度和控制所述多个存算一体处理器;所述多个存算一体处理器被配置为能够根据所述第三主控单元的调度和控制进行计算;所述多个存算一体处理器还被配置为能够不依赖于所述第三主控单元来进行通信以进行计算。

本公开至少一些实施例还提供一种存算一体处理装置,包括:本公开任一实施例提供的存算一体处理器,以及与所述存算一体处理器连接的输入接口和输出接口;其中,所述输入接口被配置为接收指令以控制所述存算一体处理器的运行,所述输出接口被配置为输出所述存算一体处理器的运行结果。

本公开至少一些实施例还提供一种基于本公开任一实施例提供的存算一体处理器的算法模型的部署方法,包括:根据所述算法模型的特征,在所述存算一体处理器中,采用全直连模式、全调度模式和混合调度模式三者之一部署所述算法模型;其中,在所述全直连模式中,用于实现所述算法模型的多个忆阻器处理模组不依赖于所述第一主控单元来进行通信以进行计算;在所述全调度模式中,用于实现所述算法模型的多个忆阻器处理模组在所述第一主控单元的调度和控制下进行计算;在所述混合调度模式中,用于实现所述算法模型的多个忆阻器处理模组中的一部分忆阻器处理模组不依赖于所述第一主控单元来进行通信以进行计算,用于实现所述算法模型的忆阻器处理模组中的另一部分忆阻器处理模组在所述第一主控单元的调度和控制下进行计算。

附图说明

为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。

图1为一种忆阻器单元电路的示意图;

图2为一种忆阻器阵列的示意图;

图3为一种忆阻器处理单元的结构示意图;

图4为一种依托于控制流的计算架构的示意图;

图5A为一种基于忆阻器处理模组间通信的数据流的计算架构示意图;

图5B为另一种基于忆阻器处理模组间通信的数据流的计算架构示意图;

图6为本公开一些实施例提供的一种存算一体处理器的混合调度架构的示意图;

图7A为本公开一些实施例提供的一种基于片上路由机制的混合调度架构的示意图;

图7B为本公开一些实施例提供的一种基于总线机制的混合调度架构的示意图;

图8A为本公开一些实施例提供的忆阻器处理模组内部的忆阻器处理单元之间的一种交互机制的示意图;

图8B为本公开一些实施例提供的忆阻器处理模组内部的忆阻器处理单元之间的另一种交互机制的示意图;

图9为本公开一些实施例提供的一种基于混合调度架构的存算一体处理器的示意框图;

图10为图9所示的存算一体处理内部的直连模式数据通路;

图11为图9所示的存算一体处理内部的调度模式数据通路;

图12为本公开一些实施例提供的一种忆阻器处理模组的示意框图;

图13为本公开一些实施例提供的一种存算一体处理系统的混合调度架构的示意图;

图14本公开一些实施例提供的一种算法模型的部署方法的示意性流程图;

图15为本公开一些实施例提供的一种残差神经网络的部署方案的示意图;以及

图16为本公开一些实施例提供的一种存算一体处理装置的示意框图。

具体实施方式

为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。

忆阻器(阻变存储器、相变存储器、导电桥存储器等)是一种可以通过施加外部激励,调节其电导状态的非易失型器件。根据基尔霍夫电流定律和欧姆定律,由这类器件构成的阵列可以并行的完成乘累加计算,且存储和计算都发生在阵列各器件中。基于这种计算架构,可以实现不需要大量数据搬移的存算一体计算。同时,乘累加是运行神经网络需要的核心计算任务。因此,使用阵列中的忆阻器型器件的电导表示权重值,可以基于这种存算一体计算实现高能效的神经网络运算。

图1为一种忆阻器单元电路的示意图。如图1所示,该忆阻器单元电路采用1T1R结构,即该忆阻器单元电路包括一个晶体管M1和一个忆阻器R1。

需要说明的是,本公开的实施例中采用的晶体管均可以为薄膜晶体管或场效应晶体管(例如MOS场效应晶体管)或其他特性相同的开关器件。这里采用的晶体管的源极、漏极在结构上可以是对称的,所以其源极、漏极在结构上可以是没有区别的。在本公开的实施例中,为了区分晶体管除栅极之外的两极,直接描述了其中一极为第一极,而另一极为第二极。

本公开的实施例对采用的晶体管的类型不作限定,例如当晶体管M1采用N型晶体管时,其栅极和字线端WL连接,例如字线端WL输入高电平时晶体管M1导通;晶体管M1的第一极可以是源极并被配置为和源线端SL连接,例如晶体管M1可以通过源线端SL接收复位电压;晶体管M1的第二极可以是漏极并被配置为和忆阻器R1的第二极(例如负极)连接,忆阻器R1的第一极(例如正极)和位线端BL连接,例如忆阻器R1可以通过位线端BL接收置位电压。例如当晶体管M1采用P型晶体管时,其栅极和字线端WL连接,例如字线端WL输入低电平时晶体管M1导通;晶体管M1的第一极可以是漏极并被配置为和源线端SL连接,例如晶体管M1可以通过源线端SL接收复位电压;晶体管M1的第二极可以是源极并被配置为和忆阻器R1的第二极(例如负极)连接,忆阻器R1的第一极(例如正极)和位线端BL连接,例如忆阻器R1可以通过位线端BL接收置位电压。需要说明的是,阻变存储器结构还可以实现为其他结构,例如忆阻器R1的第二极与源线端SL连接的结构,本公开的实施例对此不作限制。下面各实施例均以晶体管M1采用N型晶体管为例进行说明。

字线端WL的作用是对晶体管M1的栅极施加相应电压,从而控制晶体管M1导通或关闭。在对忆阻器R1进行操作时,例如进行置位操作或复位操作,均需要先开启晶体管M1,即需要通过字线端WL对晶体管M1的栅极施加导通电压。在晶体管M1导通后,例如,可以通过在源线端SL和位线端BL向忆阻器R1施加电压,以改变忆阻器R1的阻态。例如,可以通过位线端BL施加置位电压,以使得该忆阻器R1处于低阻态;又例如,可以通过源线端SL施加复位电压,以使得该忆阻器R1处于高阻态。

需要说明的是,在本公开的实施例中,通过字线端WL和位线端BL同时施加电压,使得忆阻器R1的电阻值越来越小,即忆阻器R1从高阻态变为低阻态,将使得忆阻器R1从高阻态变为低阻态的操作称为置位操作;通过字线端WL和源线端SL同时施加电压,使得忆阻器R1的电阻值越来越大,即忆阻器R1从低阻态变为高阻态,将使得忆阻器R1从低阻态变为高阻态的操作称为复位操作。例如,忆阻器R1具有阈值电压,在输入电压幅度小于忆阻器R1的阈值电压时,不会改变忆阻R1的电阻值(或电导值)。在这种情况下,可以通过输入小于阈值电压的电压,利用忆阻器R1的电阻值(或电导值)进行计算;可以通过输入大于阈值电压的电压,改变忆阻器R1的电阻值(或电导值)。

图2示出了一种忆阻器阵列,该忆阻器阵列由多个如图1中所示的忆阻器单元电路构成,例如多个忆阻器单元电路构成一个m行n列的阵列,m为大于1的整数,n为大于等于1的整数。图2中BL<1>、BL<2>……BL分别表示第一行、第二行……第m行的位线,每一行的忆阻器单元电路中的忆阻器和该行对应的位线连接;图2中WL<1>、WL<2>……WL分别表示第一列、第二列……第n列的字线,每一列的忆阻器单元电路中的晶体管的栅极和该列对应的字线连接;图2中SL<1>、SL<2>……SL分别表示第一列、第二列……第n列的源线,每一列的忆阻器单元电路中的晶体管的源极和该列对应的源线连接。

图2所示的m行n列的忆阻器阵列可以表示一个m行n列大小的神经网络权重矩阵。例如,第一层神经元层具有m个神经元节点,与图2所示的忆阻器阵列的m行位线对应连接;第二层神经元层具有n个神经元节点,与图2所示的忆阻器阵列的n列源线对应连接。通过向第一层神经元层并行输入电压激励,可以在第二层神经元层得到由电压激励向量和忆阻器阵列的电导矩阵(电导为电阻的倒数)相乘得到的输出电流。

具体地,根据基尔霍夫定律,忆阻器阵列的输出电流可以根据下述公式得出:

其中,j=1,…,n,k=1,…,m。

在上述公式中,v

需要说明的是,例如在某些示例中,神经网络权重矩阵的每个权重也可以使用两个忆阻器来实现。也就是说,可以通过忆阻器阵列中的两列忆阻器实现一列输出电流的输出。在此情况下,表示一个m行n列大小的神经网络权重矩阵需要m行2n列的忆阻器阵列。

需要说明的是,忆阻器阵列输出的电流为模拟电流,在一些示例中,可以通过模数转换电路(ADC)将模拟电流转换为数字电压传递给第二层神经元层,从而第二层神经元层还可以通过数模转换电路(DAC)将数字电压转换为模拟电压,并通过另一忆阻器阵列与另一层神经元层连接;在另一些示例中,还可以通过采样保持电路将模拟电流转换为模拟电压传输给第二层神经元层。

根据上述基尔霍夫定律可知,忆阻器阵列可以并行地完成矩阵向量乘计算。矩阵向量乘计算是深度学习等机器学习算法中最核心、最基本的算子单元,可以利用忆阻器阵列搭建忆阻器处理单元(Processing Element,PE)对其加速,满足各种智能应用场景的需求。

图3为一种忆阻器处理单元的结构示意图。该忆阻器处理单元包括一个忆阻器阵列以及支持该忆阻器阵列读写编程的单元模块和实现核心矩阵向量乘计算的单元模块,需要说明的是,各个单元模块可以通过电路实现,本公开的实施例对具体电路实现方式不作限制。例如,计算电压生成模块通常由模数转换电路构成,可以根据外部的配置提供特定的计算电压;输入缓冲单元用于在不改变计算电压的前提下,增加其驱动能力;多路选通器根据外部数字信号的控制,选择对应的驱动后的计算电压接入忆阻器阵列;读写电压生成模块用于生成忆阻器阵列编程所需的电压,包括改变电阻的电压和读出电阻的电压;电流感知放大单元用于量化输入的模拟电流值,通常用来读出单个忆阻器的电阻值;采样保持单元用于在计算模式下,将忆阻器阵列的输出电流值采样、保持下来;模数转化单元用于将保存的模拟电流值量化为数字值;移位累加模块用于将多次的量化值进行累积,生成最终的计算结果;状态控制和转换单元用于整个模块的控制,根据输入和当前的状态生成模块的控制信号;输入输出寄存器用于存储输入、输出信号;池化和函数功能单元是通过数字电路实现对计算结果的进一步处理,完成神经网络的功能需求;测试模式控制单元用于该模块各电路的测试状态的控制;校准和电源管理单元用于特定电路的校准控制,并生成、驱动整个模块的电源;处理单元接口是整个模块和外部通信的电路,按照设计的协议完成信号传输。通过阵列读写通路将阵列中各个器件编程至目标电导后,就可以通过核心计算通路实现深度学习等人工智能算法的加速。应当理解的是,图3所示的忆阻器处理单元的结构可以根据不同的架构和应用场景进行剪裁和增添,比如加入片上存储模块、直接存储器访问模块等,本公开的实施例对此不作限制。

忆阻器存算一体芯片和系统需要兼具通用性和高效性。当前的存算一体处理器主要有两种计算架构。

一种是集成片上主控单元和忆阻器处理单元的主从结构,该结构中的数据调度和控制都由主控单元发起、完成,支持将各种神经网络和机器学习算法编译成忆阻器处理单元支持的算子,具有很好的通用性和灵活性。但是,这种架构需要控制单元和忆阻器处理单元间频繁的数据通信才能完成任务,造成大量的系统延时和功耗开销,计算效率低。图4示出了一种依托于控制流的计算架构,该计算架构包括主控单元和若干忆阻器处理模组(简称PE模组)。例如,主控单元的具体实现方式不唯一,可以基于ARM架构,也可以基于RSIC-V架构等;PE模组包括若干个忆阻器处理单元,还包括一些必要的控制单元和其他功能模块,如存储、缓存单元,输入输出接口,访存控制单元,路由通信模块等。在这种计算架构中,PE模组提供细粒度的基本算子的加速;在完成基本权重等参数配置后,算法的完整执行依赖于主控单元的调度,主控单元不断分配计算任务给PE模组进行并行加速计算,数据在PE模组和主控单元间来回传输,最终完成整体任务。这种计算架构有很好的灵活性,在顶层软件开发工具链的配合下,能广泛支持多种人工智能算法,更好的适应算法的发展,然而调度和数据交互需要耗费大量时间和功耗,计算效率不高。

另一种架构是针对特定算法的专用化处理器设计,比如卷积网络加速器。在这种实现方式中,通常会针对目标算法进行深度优化和设计,集成的各个忆阻器处理单元之间按照配置互相通信,省去主控单元的调度,是一种高效的存算一体实现方式。然而,这是一种粗粒度的加速器架构,深度定制化的流水设计限制了其对其他算法的适配和支持,没有灵活的控制和调度,无法满足多目标、多场景、多任务的应用需求,缺乏灵活性和通用性。图5A和图5B示出了两种基于忆阻器处理模组间通信的数据流的计算架构。对于图5A和图5B所示的计算架构,在完成系统配置后,整体计算过程不再需要或者很少需要主控单元完成控制和调度,各个PE模组之间可以实现点对点的自由通信,任务实现主要依赖于各个模组之间按照配置进行的数据交互,可以省去图4所示的计算架构中的频繁的主控单元和PE模组间的通信。这种计算架构可以通过合适的流水设计,实现粗粒度的算法级并行加速,节省大量的等待时间,系统完成特定算法将更加高速、高效。然而有限的片上资源下,无法部署所有的机器学习算法,往往只能支持特定的若干种算法模型,灵活性和通用性受到限制。同上,PE模组包括多个忆阻器处理单元,各忆阻器处理单元可以彼此交互、协同配合。PE模组之间的通信实现方式多种多样;一种是如图5A所示的基于片上路由(包括若干路由节点)机制,具体可以是开关阵列方式,也可以是片上网络方式等;另一种是基于总线(例如AXI总线等)机制实现模PE组间的点对点通信,每个PE模组既可以是主单元,又可以是从单元,不同PE模组具有不同的接口地址。

本公开至少一些实施例提供一种存算一体处理器,该存算一体处理器包括第一主控单元和多个忆阻器处理模组,其中,该第一主控单元被配置为能够调度和控制多个忆阻器处理模组,该多个忆阻器处理模组被配置为能够根据该第一主控单元的调度和控制进行计算,该多个忆阻器处理模组还被配置为能够不依赖于该第一主控单元来进行通信以进行计算。

本公开至少一些实施例还提供对应于上述存算一体处理器的存算一体处理系统以及算法模型的部署方法。

本公开的实施例提供的存算一体处理器中的忆阻器处理模组能够根据该第一主控单元的调度和控制进行计算,还能够不依赖于该第一主控单元来进行通信以进行计算,因此,该存算一体处理器具有集成控制流和数据流的混合调度结构,既支持细粒度的算子级加速,又支持粗粒度的算法级加速,从而在满足灵活性和通用性的同时,具备计算高效性。

下面结合附图对本公开的一些实施例及其示例进行详细说明。

本公开至少一些实施例提供一种存算一体处理器,该存算一体处理器具有混合调度架构。图6为本公开一些实施例提供的一种存算一体处理器的混合调度架构的示意图。

如图6所示,该存算一体处理器包括第一主控单元(即图6中所示的“主控单元”)和多个忆阻器处理模组(即图6中所示的PE模组)。例如,该第一主控单元被配置为能够调度和控制该多个PE模组,该多个PE模组被配置为能够根据该第一主控单元的调度和控制进行计算,该多个忆阻器处理模组还被配置为能够不依赖于该第一主控单元(即几乎不需要第一主控单元的参与)来进行通信以进行计算。

从而,图6所示的混合调度架构同时支持两种数据交互模式,一种是由第一主控单元完成调度和控制、由PE模组完成算子加速的调度模式,这是一种面向控制流的高灵活度计算处理;另一种是由PE模组之间按照配置实现数据交互和调度、几乎不需要第一主控单元参与的深度定制化的直连模式,这是一种数据流为主的加速处理,可以避免和第一主控单元交互的开销,实现更高效率的并行流水计算。需要说明的是,本公开的实施例对这两种模式具体的实现方式不作限制。图7A示出了一种基于片上路由机制的混合调度架构,图7B示出了一种基于总线机制的混合调度架构的示意图。例如,直连模式可以采用如图7A所示的片上路由机制或者如图7B所示的总线机制等,也就是说,多个PE模组相互之间可以通过总线或片上路由进行通信;例如,第一主控单元和PE模组交互的调度模式也可以采用如图7A所示的片上路由机制或者如图7B所示的总线机制等,也就是说,第一主控单元可以通过总线或片上路由与多个PE模组进行交互。

例如,本公开的实施例对第一主控单元的具体实现方式不作限制,其可以基于ARM架构,也可以基于RSIC-V架构等。例如,每个PE模组包括多个忆阻器处理单元(例如,图3所示的忆阻器处理单元,但不限于此)。例如,为了适应上述混合调度架构(处理器层面的混合调度架构),每个PE模组具有独立的接口地址。例如,本公开的实施例对每个PE模组内部的多个忆阻器处理单元之间的交互机制不作限制。

图8A示出了PE模组内部的忆阻器处理单元之间的一种基于总线的交互机制,图8B示出了PE模组内部的忆阻器处理单元之间的一种基于片上路由的交互机制。如图8A和图8B所示,每个PE模组内部集成了多个忆阻器处理单元,这些忆阻器处理单元之间也可以通过总线或片上路由实现交互。例如,在实际应用中,一个PE模组可能部署了一层或多层网络,当部署一层网络时,各忆阻器处理单元协同完成该层的加速计算;当部署多层网络时,需要各忆阻器处理单元进行数据交互,实现对不同层的加速。

应当理解的是,与图6所示的处理器层面的混合调度架构类似,每个PE模组也可以具有混合调度架构。例如,在一些实施例中,第一主控单元还被配置为能够调度和控制每个PE模组中的多个忆阻器处理单元;每个PE模组中的多个忆阻器处理单元被配置为能够根据第一主控单元的调度和控制进行计算;每个PE模组中的多个忆阻器处理单元还被配置为能够直接数据通信(不依赖于第一主控单元)以进行计算。例如,在另一些实施例中,每个忆阻器处理模组不仅包括多个忆阻器处理单元,还包括第二主控单元;第二主控单元被配置为能够调度和控制该多个忆阻器处理单元;该多个忆阻器处理单元被配置为能够根据第二主控单元的调度和控制进行计算;该多个忆阻器处理单元还被配置为能够直接数据通信(不依赖于第二主控单元)以进行计算。例如,第二主控单元的具体实现方式可以参考前述第一主控单元的具体实现方式,在此不再重复赘述。例如,第二主控单元与第一主控单元可以为同一主控单元。例如,为了适应上述混合调度架构(PE模组层面的混合调度架构),每个忆阻器处理单元具有独立的接口地址。

与图6所示的处理器层面的混合调度架构类似,上述PE模组层面的混合调度结构也可以同时支持两种数据交互模式,具体细节可以参考前述直连模式和调度模式的相关描述(只要将忆阻器处理单元看作PE模组即可),在此不再重复赘述。

图9为本公开一些实施例提供的一种基于混合调度架构的存算一体处理器的示意框图。如图9所示,除了主控单元和PE模组之外,该存算一体处理器还可以包括路由模块、输入输出模块、时钟模块、电源管理模块、接口模块等。例如,路由模块用来实现处理器之间的互联和数据通讯,采用例如自定义的路由协议进行交互;时钟模块用于生成处理器的时钟信号;电源管理用于生成、管理处理器需要的供电;接口模块可以包括PCIE(peripheralcomponent interconnect express)接口、SPI(Serial Peripheral Interface)接口、I2C(Inter-Integrated Circuit)接口、DDR(Double Data Rate)接口、UART(UniversalAsynchronous Receiver/Transmitter)接口等中的一种或多种,用来和处理器之外的硬件模块进行连接,以扩展处理器的能力。

例如,该存算一体处理器被配置为支持第一计算模式(直连模式)。例如,在第一计算模式(直连模式)中,路由模块被配置为接收输入数据,对输入数据进行解析以得到输入信号(即解析后的输入数据),并将输入信号传输至输入输出模块;输入输出模块被配置为对输入信号进行分配并传输至该多个忆阻器处理模组中的至少一个忆阻器处理模组;该至少一个忆阻器处理模组被配置为根据输入信号进行计算,以得到输出信号;输入输出模块还被配置为接收至少一个忆阻器处理模组的输出信号,基于输出信号整理得到输出数据,并将输出数据传输至路由模块;路由模块还被配置为输出输出数据。图10为图9所示的存算一体处理内部的直连模式数据通路。例如,如图10所示,在第一计算模式(直连模式)中,输入数据由路径1进入路由模块,路由模块对输入数据进行解析(例如,进行地址匹配等操作),并将解析得到的输入信号通过路径2传输至输入输出模块;输入输出模块按照配置对输入信号进行重新分配,通过路径3(路径3也可以是AXI总线形式)传输给至少一个PE模组(例如,PE模组群),该至少一个PE模组基于直连模式完成计算,将处理后得到的输出信号通过路径4(路径4也可以是AXI总线形式)返回给输入输出模块;输入输出模块对输出信号进行整理后得到输出数据并通过路径5传输给路由模块;路由模块再将输出数据通过路径6向外输出。在第一计算模式(直连模式)中,各个PE模组可以按照配置的流水和交互方式,彼此之间通过例如AXI总线进行数据交互,而不需要第一主控单元的参与,从而实现高效计算。

例如,该存算一体处理器还被配置为支持第二计算模式(调度模式)。例如,在第二计算模式(调度模式)中,路由模块被配置为接收输入数据,对输入数据进行解析以得到输入信号,并将输入信号传输至输入输出模块;输入输出模块被配置为对输入信号进行分配并传输至第一主控单元;第一主控单元被配置为存储输入信号,以及控制该多个忆阻器处理模组中的至少一个忆阻器处理模组获取输入信号并进行计算;该至少一个忆阻器处理模组被配置为在第一主控单元的控制下,获取输入信号,并根据输入信号进行计算以得到输出信号;第一主控单元还被配置为存储输出信号,并将输出信号传输至输入输出模块;输入输出模块还被配置为接收输出信号,基于输出信号整理得到输出数据,并将输出数据传输至路由模块;路由模块还被配置为输出输出数据。图11为图9所示的存算一体处理内部的调度模式数据通路。如图11所示,在第二计算模式(调度模式)中,输入数据由路径1进入路由模块,路由模块对输入数据进行解析(例如,进行地址匹配等操作),并将解析得到的输入信号通过路径2传输至输入输出模块;输入输出模块按照配置对输入信号进行重新分配,通过路径3、4(路径3也可以是AXI总线形式)传输至第一主控单元;第一主控单元在例如基于ARM架构的控制器(或者基于RSIC-V架构的控制器等)的控制下将输入信号存入例如片上存储系统,并生成对PE模组的计算模式的配置数据;第一主控单元控制PE模组通过路径5、6获取输入信号,并在第一主控单元的控制下进行相应的计算处理;处理得到的输出信号通过路径7、8存入第一主控单元的片上存储系统,再在例如基于ARM架构的控制器(或者基于RSIC-V架构的控制器等)的控制下由路径9、10返回给输入输出模块;输入输出模块对输出信号进行整理后得到输出数据并通过路径11传输给路由模块;路由模块再将输出数据通过路径12向外输出。在第二计算模式(调度模式)中,第一主控单元可以按照配置通过例如AXI总线与各个PE模组进行交互,从而满足计算的灵活性。

第一计算模式(直连模式)速度快、功耗低,可以完成粗粒度的算子或算法级加速;第二计算模式(调度模式)速度慢、功耗大,可以完成细粒度的算子加速,更加灵活,有主控单元配合计算,能实现更多的算子和操作,支持更多的算法加速。

应当理解的是,该存算一体处理器还可以被配置为支持第三计算模式(混合模式),也即同时支持第一计算模式(直连模式)和第二计算模式(调度模式)。例如,在第三计算模式(混合模式)中,路由模块被配置为接收输入数据,对输入数据进行解析以得到输入信号,并将输入信号传输至输入输出模块;输入输出模块被配置为对输入信号进行分配,并将输入信号中的第一部分输入信号传输至该多个忆阻器处理模组中的第一部分忆阻器处理模组(第一部分忆阻器处理模组包括至少一个忆阻器处理模组),将输入信号中的第二部分输入信号传输至第一主控单元;第一部分忆阻器处理模组被配置为根据第一部分输入信号进行计算,以得到第一输出信号;第一主控单元被配置为存储第二部分输入信号,以及控制该多个忆阻器处理模组中的第二部分忆阻器处理模组(第二部分忆阻器处理模组包括至少一个忆阻器处理模组))获取第二部分输入信号并进行计算;第二部分忆阻器处理模组被配置为在第一主控单元的控制下,获取第二部分输入信号,并根据第二部分输入信号进行计算以得到第二输出信号;第一主控单元还被配置为存储第二输出信号,并将第二输出信号传输至输入输出模块;输入输出模块还被配置为接收第一输出信号和第二输出信号,并相应整理得到第一输出数据和第二输出数据;路由模块还被配置为输出第一输出数据和第二输出数据。也即,该存算一体处理器中的第一部分PE模块可以基于前述直连模式完成计算,第二部分PE模块可以基于前述调度模式完成计算,具体细节可以参考前述直连模式和调度模式的相关描述,在此不再重复赘述。

图12为本公开一些实施例提供的一种忆阻器处理模组的示意框图。如图12所示,该PE模组还包括模组控制单元、缓存和DMA(Direct Memory Access)模块、输入数据多路选择器、PE配置缓存器、模组缓存、单元输入缓存、辅助计算模块、单元输出缓存和输出数据多路选择器等。模组控制单元用于管理、控制整个PE模组的工作状态和方式;缓存和DMA模块用于存储输入数据,并用于在调度模式下控制PE模组内的数据调度;输入数据多路选择器用于选择是将路径1的数据还是路径2的数据输送到后级;PE配置缓存器用于存储控制相关的配置信息;模组缓存用于存储各个忆阻器处理单元的输入信息;单元输入缓存用于存储对应忆阻器处理单元的具体输入数据;辅助计算模块用于完成额外的数字处理功能,包括残差计算、数据拼接等功能,对各个忆阻器处理单元的输出进行加工;单元输出缓存用于存储每个忆阻器处理单元经过辅助计算模块后的输出数据;输出数据多路选择器用于选择具体将哪些单元输出缓存中的数据进行输出。

如图12所示,当该PE模组处于直连模式时,可以按照图11中的方式1处理数据。在直连模式下,输入数据(例如,其他PE模组的输出数据)通过路径1进入输入数据多路选择器,并输入到PE配置缓存和模组缓存,进一步配置单元输入缓存,在模组控制单元的配合下,通过忆阻器处理单元完成计算,计算结果输入到辅助计算模块并按照配置进行处理,处理后的数据存储到单元输出缓存,并通过输出数据多路选择器输出到例如下一级PE模组。如图12所示,当该PE模组处于调度模式时,可以按照图11中的方式2处理数据。在调度模式下,输入数据由模组控制单元控制,通过路径2先进入缓存和DMA模块,然后,根据系统配置,可以按照与直连模式类似的方式输送到输入数据多路选择器并完成后续一系列流程,最后将处理后的数据输出给模组控制单元;还可以在这种工作方式的基础上,同时直接将输入数据传输给辅助计算模块,在模组控制单元控制下,辅助计算模块对这部分输入数据和忆阻器处理单元的输出数据进行处理,实现例如残差连接等功能,最终再通过输出多路选择器输出给模组控制单元。

例如,在一些实施例中,图12中的模组控制单元即为前述第一主控单元或第二主控单元。

本公开的实施例提供的存算一体处理器中的忆阻器处理模组能够根据该第一主控单元的调度和控制进行计算,还能够不依赖于该第一主控单元来进行通信以进行计算,因此,该存算一体处理器具有集成控制流和数据流的混合调度结构,既支持细粒度的算子级加速,又支持粗粒度的算法级加速,从而在满足灵活性和通用性的同时,具备计算高效性。

本公开至少一些实施例还提供一种存算一体处理系统,该存算一体处理系统也具有混合调度架构。图13为本公开一些实施例提供的一种存算一体处理系统的混合调度架构的示意图。

如图13所示,该存算一体处理系统包括第三主控单元(即图13中所示的“主控单元”)和多个存算一体处理器,例如,该存算一体处理器为本公开前述任一实施例提供的存算一体处理器。例如,该第三主控单元被配置为能够调度和控制该多个存算一体处理器,该多个存算一体处理器被配置为能够根据该第三主控单元的调度和控制进行计算,该多个存算一体处理器还被配置为能够不依赖于第三主控单元(即几乎不需要第三主控单元的参与)来进行通信以进行计算。

从而,与图6所示的处理器层面的混合调度架构类似,图13所示的系统层面的混合调度架构也可以同时支持两种数据交互模式,从而也支持三种计算模式(参考前述第一计算模式、第二计算模式和第三计算模式)具体细节可以参考前述直连模式和调度模式的相关描述(只要将存算一体处理器看作PE模组即可),在此不再重复赘述。

本公开的实施例提供的存算一体处理系统的技术效果可以参考前述实施例中关于存算一体处理器的相应描述,在此不再赘述。

本公开至少一些实施例还提供一种基于前述存算一体处理器的算法模型的部署方法。图14为本公开一些实施例提供的一种算法模型的部署方法的示意性流程图。如图14所示,该算法模型的部署方法包括以下步骤(1)-(5)。

(1)任务建模。面向特定的智能计算场景和任务,对问题进行抽象建模。

(2)算法框架。针对建立的任务模型,选择适合的算法模型和框架,确定算法结构。

(3)参数训练。对算法模型中的参数进行训练,该训练过程可以引入器件、阵列和电路中的噪声、波动和寄生效应。

(4)编译优化得到具体的算法模型后(框架和参数都已经确定),通过编译器优化,得到最优的硬件部署方案和具体的配置参数。

(5)硬件部署。根据算法模型的特征,在具有混合调度架构的存算一体处理器中,采用全直连模式、全调度模式和混合调度模式三者之一部署该算法模型。也即,将算法模型映射到具有混合调度架构的存算一体通用处理器上,此时根据算法支持的程度,可以采用全直连模式进行加速,也可以用全调度模式加速,还可以用部分直连、部分调度的方式(即混合调度模式)。例如,全直连模式、全调度模式和混合调度模式的具体细节可以分别参考前述第一计算模式、第二计算模式和第三计算模式的相关描述,在此不再重复赘述。例如,在一些实施例中,存算一体处理器中的各PE模组可以采用全直连模式、全调度模式和混合调度模式三者之一部署算法模型;例如,在全直连模式中,用于实现算法模型的多个忆阻器处理模组不依赖于第一主控单元来进行通信以进行计算;在全调度模式中,用于实现算法模型的多个忆阻器处理模组在第一主控单元的调度和控制下进行计算;在混合调度模式中,用于实现算法模型的多个忆阻器处理模组中的一部分忆阻器处理模组(包括至少一个忆阻器处理模组)不依赖于第一主控单元来进行通信以进行计算,用于实现算法模型的忆阻器处理模组中的另一部分忆阻器处理模组(包括至少一个忆阻器处理模组)在第一主控单元的调度和控制下进行计算。例如,在另一些实施例中,存算一体处理器中的PE模组中的各忆阻器处理单元也可以采用全直连模式、全调度模式和混合调度模式三者之一部署算法模型;例如,在全直连模式中,用于实现算法模型的多个忆阻器处理单元不依赖于第一主控单元(或第二主控单元)来进行通信以进行计算;在全调度模式中,用于实现算法模型的多个忆阻器处理单元在第一主控单元(或第二主控单元)的调度和控制下进行计算;在混合调度模式中,用于实现算法模型的多个忆阻器处理单元中的一部分忆阻器处理单元(包括至少一个忆阻器处理单元)不依赖于第一主控单元(或第二主控单元)来进行通信以进行计算,用于实现算法模型的忆阻器处理单元中的另一部分忆阻器处理单元(包括至少一个忆阻器处理单元)在第一主控单元(或第二主控单元)的调度和控制下进行计算。

应当理解的是,本公开的实施例对上述步骤(1)-(4)的具体实现方式不作限制。

在实际应用中,对于一个复杂的深度学习网络,可以通过编译优化,将能直连加速的部分部署到直连模式进行加速,将剩下的部分部署到调度模式进行加速,通过优化后的协同计算,共同完成计算任务。图15为本公开一些实施例提供的一种残差神经网络的部署方案的示意图。例如,如图15所示,残差神经网络(ResNet)通常包括依次连接的卷积层、残差结构和全连接层,其中,残差结构可以采用调度模式进行部署,其余直接连接的卷积层和全连接层等可以采用直连模式进行部署,也即,可以采用混合调度模式部署残差神经网络。例如,当在存算一体处理器的一个PE模组内部署图15所述的残差神经网络时,基于调度模式实现残差结构的计算可以通过例如图12中所示的方式2完成,而基于直连模式实现其余直接连接的卷积层和全连接层的计算可以通过例如图12中所示的方式1完成。

本公开的实施例提供的算法模型的部署方法的技术效果可以参考前述实施例中关于存算一体处理器的相应描述,在此不再重复赘述。

本公开至少一些实施例还提供一种存算一体处理装置。图16为本公开一些实施例提供的一种存算一体处理装置的示意框图。例如,如图16所示,该存算一体处理装置包括上述实施例提供的存算一体处理器或存算一体处理系统以及与该存算一体处理器或存算一体处理系统连接的输入接口和输出接口。例如,该存算一体处理装置可以基于其中的存算一体处理器执行前述算法模型的部署方法。

例如,在一些示例中,如图16所示,该存算一体处理装置还可以包括系统总线,存算一体处理器及输入接口和输出接口之间可以通过系统总线互相通信。例如,输入接口被配置为从外部计算机设备、从用户等处接收指令以控制所述存算一体处理器的运行等。例如,输出接口被配置为输出所述存算一体处理器的运行结果等。例如,通过输入接口和输出接口与存算一体处理装置通信的外部设备可被包括在提供任何类型的用户可与之交互的用户界面的环境中。用户界面类型的示例包括图形用户界面、自然用户界面等。例如,图形用户界面可接受来自用户采用诸如键盘、鼠标、遥控器等之类的输入设备的输入,以及在诸如显示器之类的输出设备上提供输出。此外,自然用户界面可使得用户能够以无需受到诸如键盘、鼠标、遥控器等之类的输入设备强加的约束的方式来与存算一体处理装置交互。相对地,自然用户界面可依赖于语音识别、触摸和指示笔识别、屏幕上和屏幕附近的手势识别、空中手势、头部和眼睛跟踪、语音和语音、视觉、触摸、手势、以及机器智能等。

另外,存算一体处理装置尽管在图16中被示出为单个系统,但可以理解,存算一体处理装置也可以是分布式系统,还可以布置为云设施(包括公有云或私有云)。因此,例如,若干设备可以通过网络连接进行通信并且可共同执行被描述为由存算一体处理装置执行的任务。

例如,算法模型的部署方法的运行过程可以参考上述算法模型的部署方法的实施例中的相关描述,重复之处在此不再赘述。

需要说明的是,本公开的实施例提供的存算一体处理装置是示例性的,而非限制性的,根据实际应用需要,该存算一体处理装置还可以包括其他常规部件或结构,例如,为实现存算一体处理装置的必要功能,本领域技术人员可以根据具体应用场景设置其他的常规部件或结构,本公开的实施例对此不作限制。

本公开的实施例提供的存算一体处理装置的技术效果可以参考上述实施例中关于并行加速方法和存算一体处理器的相应描述,在此不再赘述。

对于本公开,有以下几点需要说明:

(1)本公开实施例附图中,只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。

(2)在不冲突的情况下,本公开同一实施例及不同实施例中的特征可以相互组合。

以上,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。

相关技术
  • 存算一体处理器、处理系统以及算法模型的部署方法
  • 存算一体电路和基于存算一体电路的数据运算方法
技术分类

06120112792169