
技术摘要:
本发明公开了一种物联网终端轻量级操作系统的混合内存管理方法,包括:通过扩展的混合内存分配管理接口函数,将特定应用需要重复读取计算并内容很少变化的大规模动态变量数据在非易失PCRAM存储器区域进行分配、计算和释放。存储管理使用存算一体变量列表(SC_List)目录 全部
背景技术:
近年来,基于非易失相变存储器(PCRAM)器件技术的存算一体计算架构技术成为 研究热点。PCRAM器件具有非易失性、读取速度快、静态功耗低、可字节寻址等优良特性。基 于PCRAM的非·冯诺依曼架构芯片技术能像人脑一样在存储中执行计算任务,以超低功耗 实现复杂且准确的各类计算,如深度神经网络推理等(I Giannopoulos,Abu Sebastian,M Le Gallo ,V P Jonnalagadda ,M Sousa ,M N Boon ,Evangelos S Eleftheriou .8-bit Precision In-Memory Multiplication with Projected Phase-Change Memory[C] .international electron devices meeting,2018以及Vinay Joshi,Manuel Le Gallo, Simon Haefeli,Irem Boybat,S.R.Nandakumar,Christophe Piveteau,Martino Dazzi, Bipin Rajendran ,Abu Sebastian ,Evangelos Eleftheriou .Accurate deep neural network inference using computational phase-change memory[J] .Nature Communications,2020,11(1))。这一技术的不断进步未来将可以支撑快速、低功耗且可靠 准确的人工智能应用,将大大加速各类物联网领域应用技术的发展。 基于现有的传统冯诺依曼架构计算技术,将PCRAM技术与现有的计算、存储芯片技 术相结合,也可以在现阶段极大提升各类物联网终端应用的性能和效率。将PCRAM与传统的 DRAM/FLASH技术相结合,研究表明不仅可以有效降低传统计算技术架构的功耗(Dongjae Shin ,Sung Kyu Park ,Seong Min Kim ,Kyu Ho Park .Adaptive page grouping for energy efficiency in hybrid PRAM-DRAM main memory[C] .Research in applied computation symposium,2012:395-402中的研究表明降低30%以上),也可以极大提升数 据存访的吞吐性能(Hyung Gyu Lee.High-performance NAND and PRAM hybrid storage design for consumer electronics[J].IEEE Transactions on Consumer Electronics, 2010,56(1):112-118中的研究表明读取速度提升6倍以上)。 现有的物联网终端通常采用成熟的32位微处理器(如各种ARM Cortex M架构处理 器),在处理器片内集成一定容量的RAM和NAND FLASH(通常情况下RAM小于128KB,FLASH小 于512KB)分别用于支持应用计算和数据保存,可以以单芯片的高集成度、低成本方案满足 以数据采集为主,进行有限数据处理应用的物联网终端应用需求。此类单芯片物联网终端 MCU与普通的嵌入式MCU相比,一个很大的不同在于往往片内不具有进行虚/实地址转换的 内存管理单元(MMU)电路。当需要支持具有一定容量规模的数据(大于128KB)进行计算/存 储时,虽然可以采用一定的存储器接口技术实现硬件存储容量扩展支撑,但存在难于有效 进行软件混合内存管理的问题。 已有的PCRAM混合内存研究(陈吉,刘海坤,王孝远,张宇,廖小飞,金海.一种支持 大页的层次化DRAM/NVM混合内存系统[J].计算机研究与发展,2018,55(09):2050-2065), 4 CN 111552651 A 说 明 书 2/8 页 多侧重于研究具有MMU情况下的页面管理策略、页面粒度控制等内容,较少涉及对混合内存 管理算法本身及其应用接口的研究。现有的文献中,孙浩,陈岚,郝晓冉.一种混合内存的管 理方法、系统、设备及介质[P].CN110347510A,2019-10-18.提出了一种基于MMU的页面管理 方法,找到PCRAM中写操作密集的页面并适当加以管理;李顺芬,陈小刚,陈后鹏,丁晟,陈一 峰,许林海,王玉婵,刘波,宋志棠.基于单类型存储器的嵌入式系统的动态存储管理方法 [P].CN103246610A,2013-08-14.提出的是针对仅具有PCRAM存储器的动态存储管理方法。 其他更多的发明专利申请比如:李顺芳,陈小刚,韩文炳,段有康,宋志棠.基于链表和N-ary 树结构实现快速回滚的文件系统管理方法、装置、终端、介质[P].CN109933564A,2019-06- 25。李顺芬,陈小刚,李大刚,韩文炳,李鸽子,陈诗雁,宋志棠.一种基于N-ary树结构的随机 访问的文件系统的实现方法[P].CN106354890A,2017-01-25。陈岚,戴正元,郝晓.一种基于 混合内存的系统休眠、唤醒方法及装置[P].CN103927145A,2014-07-16.。贾智平,王冠.基 于相变存储器的存储系统结构及其损耗均衡算法[P].CN103885724A,2014-06-25。主要集 中在如何利用PCRAM的快速读取特性更好地加速计算机系统的开机启动流程等领域。
技术实现要素:
发明目的:为了克服现有技术中存在的不足,本发明提供一种轻量级的物联网终 端轻量级操作系统的混合内存管理方法,对物理地址离散、特性不同的RAM/PCRAM进行统一 分配管理,为用户任务提供统一的存算一体变量(存储在PCRAM中的变量)分配管理接口。本 发明提出了在没有MMU电路支持的MCU PCRAM RAM物联网终端硬件计算架构下,由轻量级物 联网操作系统软件进行统一的混合内存管理算法实现,通过提供不同的内存访问接口将不 同特性的RAM/PCRAM进行统一分配管理的混合内存管理方法。以此解决在现有轻量级物联 网终端计算架构下,通过采用PCRAM技术进行扩展,来支持大规模数据/计算密集处理的物 联网应用所面临的存算一体混合內存管理问题。本发明重点考虑现阶段的应用环境,基于 目前主流的物联网终端实现技术,结合轻量级物联网操作系统实现,来考虑PCRAM技术如何 更好地满足轻量级物联网终端系统的应用需要。 技术方案:为实现上述目的,本发明采用的技术方案为: 一种物联网终端轻量级操作系统的混合内存管理方法,通过扩展现有轻量级物联 网终端计算架构,利用PCRAM存储密度大、掉电非易失的特性,将用户任务中多读少写的存 储容量较大的变量(如大于64KB高维数组)存储在PCRAM中并建立索引表项,当系统重新上 电时能迅速检索到这些变量进行计算处理,实现存算一体化,为大规模数据/计算密集存算 处理的物联网应用提供支持。通过扩展的混合内存分配管理接口函数,采用合理的内存分 配和管理技术,将特定应用需要重复读取计算并内容很少变化的大规模动态变量数据(如 历史数据,规模超出主流物联网终端微处理器芯片片内存储容量)在非易失PCRAM存储器区 域进行分配、计算和释放(存储在非易失PCRAM存储器中的变量称为存算一体变量)。存储管 理使用存算一体变量列表(SC_List)目录及表项进行存算一体变量的索引操作;对已经分 配的存算一体变量可在重新上电后,通过混合内存分配接口管理函数直接索引SC_List,再 通过指针赋值操作,直接进行快速加载,恢复为上次掉电时的存储值,具体包括以下步骤: 步骤A、混合内存地址空间的上电复位策略: 每次RAM区域重新上电都对其地址空间进行初始化,初始化后RAM区域的结构为头 5 CN 111552651 A 说 明 书 3/8 页 部的两个控制块和之后的等大小的内存块,头部的两个控制块分别为第一个控制块和第二 个控制块,第一个控制块用于管理RAM的内存块,第二个控制块用于管理PCRAM数据区的内 存块。 针对PCRAM,PCRAM第一次上电时将其初始化为目录区和数据区两个区域。 PCRAM目录区起始位置预留一个16位大小的魔术字,第一次上电初始化后设置为 0xFFAA,表示该块PCRAM已被初始化,之后不再进行初始化操作。PCRAM初始化时将目录区分 成同样结构的两份,一份称为存算一体变量目录表一SC_List1((Storage-computation List 1),用于日常操作维护存算一体变量索引表项,另一份称为存算一体变量目录表二 SC_List2,用于对SC_List1备份,并在SC_List1出现错误时,用于修正SC_List1。轻量级物 联网操作系统支持的任务数N不超过15个,N<=15,PCRAM初始化时将SC_List1分成N 1个等 大小的任务变量目录块TVCB(Task Variable Content Block),任务变量目录块TVCB仅用 于存储该任务的存算一体变量索引表项,按任务号TID顺序排列。存算一体变量目录表二 SC_List2亦进行同样的初始化操作。 PCRAM初始化时将数据区分成等大小的内存块,用于实际存储存算一体变量。 步骤B、存算一体变量的索引机制: 存算一体变量的索引表项VIB(Variable Index Block)包含4个字段:12字节TID 变量标识符、16位变量分配内存块个数、32位变量分配起始地址、16位校验码CRC。 在存算一体变量目录表一SC_List1中,根据TID 变量标识符对存算一体变量进行 索引,索引步骤如下: 步骤B1,根据当前任务号TID值,在SC_list1中定位到其任务变量目录块TVCB,时 间复杂度为O(1)。 步骤B2,根据变量标识符,遍历步骤B1中定位的任务变量目录块TVCB中的存算一 体变量的索引表项VIB,时间复杂度为O(n);若未查找到,则索引失败返回。 步骤B3,查找到相应存算一体变量的索引表项VIB后,根据校验码CRC,进行存算一 体变量的索引表项VIB内容的校验码CRC校验,若正确继续步骤B4。否则,根据SC_List2对当 前记录进行修复后,重新进行验证。 步骤B4,根据存算一体变量的索引表项VIB的“变量分配起始地址”字段取址,根据 “变量分配内存块个数”字段获取整个连续分配的PCRAM内存空间并取值。 步骤C、RAM的内存分配方法: 步骤C1,根据申请内存大小从RAM中取出连续内存块进行分配。 步骤C2,更新RAM控制块中的“已使用内存块”字段。 步骤C3,返回指向已分配内存的指针。 步骤D、PCRAM的内存分配方法: 步骤D1,根据当前任务号TID和变量标识符,在SC_List1中检索任务变量目录块 TVCB是否存在该变量的存算一体变量的索引表项VIB,若存在执行步骤D2,否则执行步骤 D4。 步骤D2,根据存算一体变量的索引表项VIB进行索引,获取变量起始地址 步骤D3,若操作标志为0,则清零所索引的存算一体变量,将分配类型标识置为“索 引返回”转至步骤D7。 6 CN 111552651 A 说 明 书 4/8 页 步骤D4,复用RAM的分配方法在PCRAM数据区为其分配空间。 步骤D5,进行CRC计算,在TVCB中创建存算一体变量的索引表项VIB。 步骤D6,清零所分配的存算一体变量,将分配类型标识置为“分配返回”。 步骤D7,返回分配类型标识和PCRAM地址。 步骤E、RAM在进行内存释放时,将需要释放的内存块头部32位置为0XFFAAFFAA,标 明该内存块空闲。 步骤F、PCRAM的内存释放: 步骤F1,根据任务号TID和变量标识符,在SC_List1中检索任务变量目录块TVCB是 否存在该变量的存算一体变量的索引表项VIB,若存在执行步骤F2、步骤F3,否则执行步骤 F4。 步骤F2,复用RAM的内存释放算法将需要释放的内存块头部32位置为0XFFAAFFAA, 标明该内存块已使用。 步骤F3,将该存算一体变量的VIB删除并返回成功信息。 步骤F4,返回错误信息。 优选的:步骤B中校验码CRC根据12字节TID 变量标识符、16位变量分配内存块个 数、32位变量分配起始地址生成。 本发明相比现有技术,具有以下有益效果: 1 .本发明的混合内存管理方法对物理地址离散、特性不同的RAM/PCRAM进行统一 分配管理,为多个用户任务提供统一的存算一体变量(存储在PCRAM中的变量)分配管理接 口。 2.在终端系统重新上电后,计算任务通过混合内存分配函数再次执行时的不同流 程迅速检索到已经保存的存算一体变量,通过指针赋值操作快速加载回上次掉电时的保存 值,为大规模数据/计算密集、低功耗存算处理的物联网应用提供支持。 附图说明 图1为本发明实施例所述混合内存管理方法架构图; 图2为本发明实施例所述RAM初始化后结构示意图; 图3为本发明实施例所述RAMBox算法内存块分配流程图; 图4为本发明实施例所述RAMBox算法内存块释放流程图; 图5为本发明实施例所述PCRAM初始化后结构示意图; 图6为本发明实施例所述SC_List索引结构图; 图7为本发明实施例所述SC_MALLOC分配流程图; 图8为本发明实施例所述SC_FREE释放流程图。