一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

集成电路及其配置方法与流程

2022-02-22 07:05:33 来源:中国专利 TAG:
1.本技术涉及电路设计,尤其涉及一种集成电路(integratedcircuit,ic)及其配置(configuration)方法。
背景技术
::2.依据相关技术,一神经网络模型可应用于各种不同的处理,以达到简单的逻辑电路无法达到的目标。然而,可能发生某些问题。例如,该神经网络模型的相关计算可以非常复杂,且这些计算所需要的存储器的容量可以非常大。当尝试将该神经网络模型实施于一电子产品时,由于存储器资源的需求极大,故相关成本会对应地增加。因此,需要一种新颖的方法及相关架构,以在没有副作用或较不可能带来副作用之状况下实现精巧(compact)、快速且可靠的电子产品。技术实现要素:3.本技术的一目的在于提供一种集成电路及其配置方法,以解决上述问题。4.本技术的一实施例提供一种集成电路,应用于一神经网络计算,其包括一第一算子引擎、一第二算子引擎、一随机存取存储器及一直接存储器访问引擎。第一算子引擎用来进行一第一计算操作。第二算子引擎用以进行一第二计算操作。直接存储器访问引擎于该第一算子引擎进行该第一计算操作时,依据一第一存储器管理单元表对该随机存取存储器进行存取操作,并于该第二算子引擎进行该第二计算操作时,依据一第二存储器管理单元表对该随机存取存储器进行存取操作。5.本技术的一实施例提供一种集成电路的配置方法,其中该配置方法可包括:对一神经网络模型的计算所需要的所有张量存储器进行对应于多个预定单位页面的划分;分别对该多个预定单位页面进行数据依赖分析以建立多个数据依赖关系,且根据该多个数据依赖关系对该多个预定单位页面进行多个虚拟缓存器的分配;分别对该多个虚拟缓存器进行生命周期分析,其中该生命周期分析的分析结果指出该多个虚拟缓存器各自的生命周期;依据所述分析结果,进行多个物理缓存器的分配;以及建立多个预定存储器管理单元表以记录虚拟地址和物理地址之间的映射关系,以容许该集成电路于一使用阶段中,根据一预先加载的存储器管理单元表中的至少一映射关系查找至少一物理地址以存取数据,其中该预先加载的存储器管理单元表系选择自该多个预定存储器管理单元表。6.本技术的好处之一是,透过仔细设计的存储器管理机制,本技术的集成电路及其配置方法能用有限的存储器资源来实现该神经网络模型的非常复杂的计算。由于存储器资源可被妥善地管理,故本技术的集成电路及其配置方法能避免过大的存储器需求,且避免不必要的额外成本。相较于相关技术,本技术的集成电路及其配置方法能在没有副作用或较不可能带来副作用的状况下实现精巧、快速且可靠的电子产品。附图说明7.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。8.图1为依据本技术一实施例的一种集成电路的示意图。9.图2为依据本技术一实施例绘示的图1所示的集成电路的配置方法的一存储器区域重用控制方案。10.图3为依据本技术一实施例绘示的该配置方法的一存储器映射控制方案。11.图4为依据本技术一实施例绘示的该配置方法的一数据依赖分析控制方案。12.图5为依据本技术一实施例绘示的该配置方法的一生命周期分析控制方案。13.图6为依据本技术一实施例绘示的该配置方法之一物理缓存器分配(allocation)控制方案。14.图7为绘示图6所示的物理缓存器分配控制方案的实施细节。15.图8为依据本技术一实施例绘示的该配置方法的一动态的存储器管理单元控制方案。16.图9为依据本技术一实施例绘示的该配置方法的一动态的存储器访问控制方案。17.图10为依据本技术一实施例绘示的该配置方法的一工作流程。具体实施方式18.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本技术的保护范围。19.图1为依据本技术一实施例的一种集成电路的示意图。集成电路100可包括一非挥发性存储器(non-volatilememory,简称nvm)101、一直接存储器访问(directmemoryaccess,简称dma)引擎110、多个算子(operator)引擎120以及一随机存取存储器(randomaccessmemory,简称ram)诸如静态随机存取存储器(staticrandomaccessmemory,简称sram)130,而算子引擎120可包括分别用来实现算子#1、算子#2等之算子#1引擎eng(1)、算子#2引擎eng(2)等,其中这些组件之间的箭头可指出这些组件彼此耦接,但本技术不限于此。举例来说,集成电路100可另包括一处理电路诸如一中央处理单元(centralprocessingunit,简称cpu)(未显示),且上列组件可透过一总线彼此耦接。为了便于理解,一动态随机存取存储器(dynamicrandomaccessmemory,简称dram)30可被绘示成耦接至集成电路100,尤其,dma引擎110。在本实施例中,nvm101可藉由电子可抹除可复写只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、闪存(flashmemory)等方式来实施。20.如第1图所示,nvm101可储存多个预定存储器管理单元(memorymanagementunit,简称mmu)表诸如mmu表table(1)、table(2)等,而sram130可储存一预先加载的mmu表诸如mmu表table(0)。依据集成电路100的一配置方法,在集成电路100的一配置阶段中,managementunit,简称pmmu)等方式来实施,尤其,可实施成pmmu表,并且其内所记录的映射关系可用页面(page)为单位来管理。举例来说,在该神经网络模型中的层与层之间的流通的数据流可被描述为张量(tensor),其可视为实际占用存储器(例如sram130和dram30)的数据。该配置方法可将集成电路100配置成适合该神经网络模型的特性来运作,尤其,在该配置阶段中建立该多个预定mmu表诸如多个预定pmmu表,以容许集成电路100在该使用阶段中动态地选择该多个预定mmu表(例如该多个预定pmmu表)的其中之一作为该预先加载的mmu表(例如预先加载的pmmu表),以更新该预先加载的mmu表。为了简明起见,于这些实施例中类似的内容在此不重复赘述。24.图2为依据本技术一实施例绘示的图1所示的集成电路的配置方法的一存储器区域重用控制方案。为了便于理解,集成电路100可逻辑地组合sram130的至少一部分(例如一部分或全部)以及dram30的至少一部分(例如一部分或全部)以作为一存储器200,且可存取存储器200的多个存储器区域中的任一存储器区域,诸如存储器区域210,但本技术不限于此。25.如第2图上半部所示,当算子引擎120中之一第一算子引擎(例如:算子#1引擎eng(1))针对一组数据(诸如一列数据)进行一第一计算操作时,dma引擎110可根据对应该组数据的一第一虚拟地址查询该预先加载的mmu表得到存储器200(例如该ram诸如sram130或一外部的ram诸如dram30)中的某一存储器区域的一第一物理地址,诸如存储器区域210,且据以将该组数据从存储器区域210读取出来,以容许该第一算子引擎依据该组数据进行该第一计算操作以产生一第一计算结果,作为该第一算子引擎的输出结果。如第2图下半部所示,在这一组数据诸如这一列数据不再被使用的情况下,dma引擎110可根据该预先加载的mmu表诸如mmu表table(0)判定存储器区域210,且将该第一计算结果写存储器区域210。举例来说,集成电路100(例如该cpu及/或dma引擎110)可判定是否后面不再重复使用这一列数据,尤其,若后面不再重复使用这一列数据,则可以将该输出结果诸如该第一计算结果直接写入这一列数据所在的存储器区域210,但本技术不限于此。26.在一实施例中,dma引擎110可根据对应该第一计算结果之一第二虚拟地址查询该预先加载的mmu表得到一第二物理地址,并据以将第一计算结果储存至第二物理地址的存储器区域。在第一计算操作之后接着由算子#2引擎eng(2)进行第二计算操作,第二预定mmu表系被加载至sram130中的该预定位置,dma引擎110依据对应一第三虚拟地址查询第二预定mmu表以得到第二物理地址,dma引擎110并依据第二物理地址自对应存储器区域读取该第一计算结果以供算子#2引擎eng(2)进行第二计算操作。此例中,虽然第二虚拟地址系不同于第三虚拟地址,但其分别透过第一预定mmu表及第二预定mmu表映射到相同的物理地址。第一预定mmu表中虚拟地址与物理地址的映射关系可让算子#1引擎eng(1)进行第一计算操作有效地利用sram130及dram30,而第二预定mmu表中虚拟地址与物理地址的映射关系可让算子#2引擎eng(2)进行第二计算操作有效地利用sram130及dram30。27.依据某些实施例,于集成电路100执行该神经网络模型的相关计算之过程中,中间数据诸如张量之运算和传递都需要存储器作为载体,而存储器需求的大小可随着该神经网络模型的输入节点的数量以及该神经网络模型的深度而变化。另外,为了优化在该使用阶段中之存储器资源的使用,该生产工具(例如:执行着该第一生产工具程序代码之该主机装置、或执行着该第二生产工具程序代码之该cpu)可依据该配置方法于该配置阶段中进行下列操作:28.(1)、对该神经网络模型的计算所需要的所有张量存储器(例如所有张量所需要的存储器空间)进行对应于多个预定单位页面之划分;29.(2)、分别对该多个预定单位页面进行数据依赖分析以建立多个数据依赖关系(例如某一算子所输出的数据为另一算子所输入的数据),且根据该多个数据依赖关系对该多个预定单位页面进行多个虚拟缓存器的分配(allocation);30.(3)、分别对该多个虚拟缓存器进行生命周期分析,其中该生命周期分析之分析结果指出该多个虚拟缓存器之各自的生命周期;31.(4)、依据上述分析结果,进行多个物理缓存器的分配;以及32.(5)、基于该多个物理缓存器的分配,建立该多个预定mmu表以记录虚拟地址和物理地址之间的映射关系,以容许集成电路100的硬件(例如dma引擎110)于该使用阶段中根据该预先加载的mmu表中的该至少一映射关系查找该至少一物理地址以存取数据;但本技术不限于此。为了便于理解,该多个虚拟缓存器可分别代表该神经网络模型中的所有数据流的传输所需的暂存空间,亦可视为对应于该网状结构中的所有线段的总暂存空间。于进行该生命周期分析的期间,该生产工具可依据该神经网络模型的各层节点的顺序(例如对应的算子之执行顺序)判定需要存储器资源的任一张量的生命周期,以供控制该任一张量在存活的期间占有所需的存储器空间。当该任一张量从存活状态变为非存活状态时就及时释放这个存储器空间,以供一后续的张量(例如从非存活状态变为存活状态之张量)继续使用。为了简明起见,于这些实施例中类似的内容在此不重复赘述。33.图3为依据本技术一实施例绘示的该配置方法的一存储器映射控制方案。为了优化在该使用阶段中之存储器资源的使用,该后续的张量所需要的存储器空间之大小可以和先前释放的存储器空间之大小彼此匹配,不论该先前释放的存储器空间是否为离散的。该存储器映射控制方案可将多个离散的存储器区域整合成该后续的张量所需要的存储器空间,以容许dma引擎110依据连续的地址来存取,尤其,从一起始地址开始,存取一预定大小的存储器空间。举例来说,dma引擎110可依据该预先加载的mmu表诸如mmu表table(0),将连续的虚拟地址的至少一部分(例如v_address(0)~v_address(5))映射到不连续的或局部不连续的物理地址(例如{p_address(0),p_address(1),p_address(3),p_address(4),p_address(8),p_address(9)}),以将已经被释放的存储器区域(而非已经被使用的存储器区域)整合成一或多个后续的张量所需要的存储器空间。为了简明起见,于本实施例中类似的内容在此不重复赘述。34.依据某些实施例,该多个预定单位页面具有大于1位之一共同的页面大小,且该共同的页面大小系以一预定位数来定义。典型地,张量存储器的大小通常很大。假设以位为单位来配置实际的存储器(例如sram130和dram30)作为张量存储器,这可能造成该多个预定mmu表的每一预定mmu表中之映射关系的数量非常大而难以实施。因此,该预定位数应大于1。举例来说,集成电路100中之硬件(例如dma引擎110)存取数据的基本单位可以是256位。基于某些因素诸如该基本单位、该神经网络模型中之数据流(例如张量的分布)的形状、粒度(例如该预定位数)的大小、软件调度的效率等以及一部分因素之间的关系(例如:当粒度越小,缓存器越多且调度越慢;当粒度越大,sram130的复用度越低),该预定位数可以等于4k,而k=210=1024,且该多个预定单位页面可代表多个4k位页面,其中该多个预定mmu表中之映射关系的原子单位的大小等于该预定位数诸如4k,但本技术不限于此。于某些例子中,该预定位数可以等于k或k的倍数,诸如1k、2k…等中之任一者。为了简明起见,于这些实施例中类似的内容在此不重复赘述。35.图4为依据本技术一实施例绘示的该配置方法的一数据依赖分析控制方案。其中张量存储器400及其内的多个页面可分别作为上述张量存储器及该多个预定单位页面的例子。该多个数据依赖关系可包括所有数据的缓存器依赖关系,而建立这些数据依赖关系可确保连续两级算子中的第一级算子(例如算子#1)所输出的数据和该连续两级算子中的第二级算子(例如算子#2)所输入的数据是在同一个缓存器中。在该神经网络模型的该网状结构中,该第一级算子的输出数据就是该第二级算子的输入数据。基于这个特性和该多个预定单位页面的页面划分,该生产工具可用该共同的页面大小为单位来进行数据追踪来产生以页面为单位的依赖关系,以透过一虚拟缓存器(例如一预定单位页面诸如一4k位页面)暂时地将该输出数据和该输入数据彼此关联,所以这样的关系可称为缓存器依赖关系。为了简明起见,于本实施例中类似的内容在此不重复赘述。36.图5为依据本技术一实施例绘示的该配置方法的一生命周期分析控制方案。用来实现该多个计算操作的程序代码可包括多个局部程序代码510、520和530,其可分别对应于列索引(lineindex){000,001,002}、{003,004,005}和{006,007,008},指令“writex”和“readx”分别代表写入变量x和读取变量x,而符号“...”代表省略的指令。以页面page(x)作为该虚拟缓存器的例子,其生命周期可表示如下:37.[001,007);[0038]其中在代表时间t的时间轴上,列索引001~00n诸如000、001等可用来标记时间点,而产生页面page(x)时间点和最后使用页面page(x)的时间点之间的区间[001,007)可视为页面page(x)的生命周期。[0039]依据某些实施例,该生命周期的表示方式可予以变化。例如,页面page(x)的生命周期可表示为区间[001,007]。为了简明起见,于这些实施例中类似的内容在此不重复赘述。[0040]图6为依据本技术一实施例绘示的该配置方法之一物理缓存器分配控制方案。图7为绘示图6所示的物理缓存器分配控制方案的实施细节。其中sram600可作为sram130内的数据区域的例子。该生产工具可对实际的存储器(例如sram130和dram30)也按照该预定位数诸如4k来划分,尤其,将其内的数据区域划分为具有该共同的页面大小之多个页面(例如sram600内的这些页面)以供用来作为该多个物理缓存器,且根据该多个虚拟缓存器之各自的生命周期来分配该多个物理缓存器。该多个虚拟缓存器可包括分别对应于变量x、y和z之页面page(x)、page(y)和page(z),其各自的生命周期没有重迭。此情况下,该生产工具可分配该多个物理缓存器中之同一个物理缓存器(于第7图中标示“缓存器”以求简明)作为页面page(x)、page(y)和page(z)分别于不同时间区间的实际存储器空间。例如:[0041]一第一、第二、第三虚拟缓存器诸如页面page(x)、page(y)和page(z)分别在其生命周期的期间占用该物理缓存器以使该物理缓存器处于使用状态,而当此生命周期结束时,该物理缓存器被释放以处于未使用状态;其中该物理缓存器于被释放时即处于未使用状态以供下一个虚拟缓存器使用。该生产工具可将该多个物理缓存器的分配结果(例如虚拟地址和物理地址之间的映射关系)记录在该多个预定mmu表,例如,依据一或多个存储器管理因素诸如该神经网络模型的计算顺序、计算方式等,针对不同批次计算来优化该多个物理缓存器的分配以建立该多个预定mmu表。为了简明起见,于本实施例中类似的内容在此不重复赘述。[0042]图8为依据本技术一实施例绘示的该配置方法的一动态的存储器管理单元控制方案。该生产工具可将所分配出来的该多个物理缓存器所关联的该多个虚拟缓存器的虚拟地址以及这些物理缓存器的物理地址记录在该多个预定mmu表。该动态mmu控制方案提供可动态地改变之格式以供建立该多个预定mmu表。图例中的类型pa_total_length、tag,pa_length、virtual_addr、physical_addr和garbage可分别代表一系列物理地址在此格式中之总长度、此格式的识别卷标、该系列物理地址中的一组物理地址(例如一或多个物理地址)在此格式中之长度、关联于这组物理地址之一虚拟地址(例如起始地址)、这组物理地址以及垃圾信息(例如无效信息)。另外,字段tl、tag、len、va以及pa0等可分别载有该总长度、该识别卷标、该组物理地址之长度、该虚拟地址以及这组物理地址。举例来说,此格式右上角第1个字段所示之tl=32表示该总长度等于32,第2个字段tag中的该识别标签指出当前记录的表内容符合此格式,第3个字段所示之len=4表示从第4个字段va中的虚拟地址起的4个连续的虚拟地址分别被映射至第5~8个字段pa0~pa3中的第一组物理地址。紧接着字段pa0~pa3的第9个字段所示之len=26表示从第10个字段va中的虚拟地址起的26个连续的虚拟地址分别被映射至第11~36个字段pa0~pa25中的第二组物理地址。紧接着字段pa0~pa25的第37个字段所示之len=1表示从第38个字段va中的虚拟地址起的1个的虚拟地址被映射至第39个字段pa0中的第三组物理地址。紧接着第39个字段pa0的第40个字段所示之len=1表示从第41个字段va中的虚拟地址起的1个的虚拟地址被映射至第42个字段pa0中的第四组物理地址。以上这四组物理地址之各自的物理地址的数量4、26、1和1的总和等于32,这和第1个字段所示之tl=32(该总长度等于32)吻合。后续6个字段所示之tl=0表示总长度等于0,且因此代表垃圾信息。为了简明起见,于本实施例中类似的内容在此不重复赘述。[0043]图9为依据本技术一实施例绘示的该配置方法的一动态的存储器访问控制方案。由于虚拟地址是连续的,故集成电路100中之硬件(例如dma引擎110)可依据虚拟地址来存取数据(例如,从该起始地址开始,存取该预定大小的存储器空间)来提升存取效能,尤其,在存取过程中查询该预先加载的mmu表诸如mmu表table(0)以将虚拟地址转换为相关联的物理地址作为存取操作的目标位置来存取数据。[0044]当算子引擎120中之一第一算子引擎(例如:算子#1引擎eng(1);标示为“算子#1”以求简明)进行一第一计算操作以产生一第一计算结果时,dma引擎110可根据该预先加载的mmu表诸如mmu表table(0)判定位于该ram诸如sram130或该外部的ram诸如dram30中的一存储器区域(例如张量存储器400中的某一页面),且将该第一计算结果储存在该存储器区域(标示为“dma储存”以便于理解)。另外,当算子引擎120中之一第二算子引擎(例如:算子#2引擎eng(2);标示为“算子#2”以求简明)进行一第二计算操作时,dma引擎110可根据该预先加载的mmu表诸如mmu表table(0)判定该存储器区域(例如张量存储器400中的同一页面),且将该第一计算结果从该存储器区域读取出来以供加载至该第二算子引擎中的缓冲器(标示为“dma载入”以便于理解),以容许该第二算子引擎依据该第一计算结果进行该第二计算操作。[0045]针对将该第一计算结果储存在该存储器区域的情况(例如“dma储存”)以及将该第一计算结果从该存储器区域读取出来以供加载至该第二算子引擎中的缓冲器的情况(例如“dma载入”)中之任一者,dma引擎110可依据该动态的存储器访问控制方案之一工作流程900来操作,尤其,可使用变量地址(variableaddress)作为用以进行查找操作之一虚拟地址、且依据这个虚拟地址在该预先加载的mmu表(标示为“mmu表”以求简明)中查找对应于这个虚拟地址之一物理地址,并且进行物理地址位置判断以判定该物理地址属于sram地址或dram地址。例如,当该物理地址属于sram地址时,dma引擎110可依据该物理地址于sram130中存取(例如读取或写入)该第一计算结果。又例如,当该物理地址属于dram地址时,dma引擎110可依据该物理地址于dram30中存取(例如读取或写入)该第一计算结果。为了简明起见,于本实施例中类似的内容在此不重复赘述。[0046]图10为依据本技术一实施例绘示的该配置方法的一工作流程。步骤1010、1012、1014、1016、1018和1020的操作及其相关细节可如以上实施例所述,其中该多个预定单位页面可描述为多个4k位页面以便于理解,但本技术不限于此。例如,在步骤1018中,该生产工具可被安排成以4k位页面为单位,建立该多个预定mmu表以记录虚拟地址和物理地址之间的映射关系。另外,在步骤1020中,集成电路100的硬件(例如dma引擎110)可于该使用阶段中根据该预先加载的mmu表中的该至少一映射关系查找该至少一物理地址以存取数据。为了简明起见,于本实施例中类似的内容在此不重复赘述。[0047]本技术的集成电路100及其配置方法能用有限的存储器资源来实现该神经网络模型之非常复杂的计算,尤其,可将存储器单位从张量转换为4k位页面,且根据生命周期来追溯各个页面之数据的使用时期以分配实际的物理地址,而不需要考虑地址连续性问题,例如透过mmu表中的映射关系将离散的物理地址和连续的虚拟地址彼此关联,以大幅地提升存储器空间的复用率且避免浪费存储器空间,藉此最小化所分配的存储器空间。相较于相关技术,本技术的集成电路100及其配置方法能在没有副作用或较不可能带来副作用之状况下实现精巧、快速且可靠的电子产品。[0048]以上所述仅为本技术之较佳实施例,凡依本技术申请专利范围所做之均等变化与修饰,皆应属本技术之涵盖范围。[0049]符号说明[0050]100:集成电路(ic)[0051]101:非挥发性存储器(nvm)[0052]110:直接存储器访问(dma)引擎[0053]120:算子引擎[0054]eng(1):算子#1引擎[0055]eng(2):算子#2引擎[0056]130,600:静态随机存取存储器(sram)[0057]table(0)~table(2):存储器管理单元(mmu)表[0058]30:动态随机存取存储器(dram)[0059]200:存储器[0060]210:存储器区域[0061]v_address(0)~v_address(7):虚拟地址[0062]p_address(0)~p_address(10):物理地址[0063]400:张量存储器[0064]510,520,530:局部程序代码[0065]x,y,z:变数[0066]t:时间[0067]page(x),page(y),page(z):页面[0068]pa_total_length,tag,pa_length,virtual_addr,physical_addr,garbage:类型[0069]tl,tag,len,va,pa0~pa25:字段[0070]900:工作流程[0071]1010,1012,1014,1016,1018,1020:步骤。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献