【技术实现步骤摘要】
【国外来华专利技术】用于分配存储器的方法
本技术涉及在没有存储器管理单元的设备上的存储器的高效使用。更特别地,本技术涉及用于将存储器分配给不连续调用栈的方法。
技术介绍
存储器管理单元(MMU)处理与处理器相关联的存储器和高速缓存操作,以便高效地管理存储器。然而,微控制器很少具有存储器管理单元(MMU),因为MMU给设计增加了显著的尺寸和功耗。
技术实现思路
根据第一技术,提供了用于管理包括多个存储器块当中的至少一个存储器块的不连续调用栈(discontinuouscallstack)的方法。该方法包括:将指示所述不连续调用栈的顶部的栈位置指示符存储在数据存储区(datastore)中;使用所述栈位置指示符从所述多个存储器块中识别所述不连续调用栈的当前存储器块,所述当前存储器块存储所述不连续调用栈的所述顶部以及指示所述不连续调用栈的前一个存储器块的位置的前一个位置指示符;确定所述当前存储器块中可用的存储器量;确定栈框架所需要的存储器量;确定中断允许(interruptallowance)所需要的存储器量;响应于所述确定,从所述多个存储器块中为所述栈框架和所述中断允许分配至少一个存储器块;将所述栈框架存储在所分配的存储器块中;以及更新所述数据存储中的所述栈位置指示符,使得更新后的栈位置指示符可以用来识别已经变成所述当前存储器块的所分配的存储器块。根据第二技术,提供了用于管理包括多个存储器块中的至少一个存储器块的不连续调用栈的方法。该方法包括:为中断保留所述多个存储器块中的至少一个存储器块;将指示所保留的存储器块的中断位置指示符存储在中断栈指针数据存储区中;将指示所述不连续调用栈的顶 ...
【技术保护点】
1.一种用于管理包括多个存储器块中的至少一个存储器块的不连续调用栈的方法,该方法包括:将指示所述不连续调用栈的顶部的栈位置指示符存储在数据存储区中;使用所述栈位置指示符来从所述多个存储器块中识别所述不连续调用栈的当前存储器块,所述当前存储器块存储所述不连续调用栈的顶部以及指示所述不连续调用栈的前一个存储器块的位置的前一个位置指示符;确定所述当前存储器块中可用的存储器量;确定栈框架所需要的存储器量;确定中断允许所需要的存储器量;响应于所述确定,从所述多个存储器块中为所述栈框架和所述中断允许分配至少一个存储器块;将所述栈框架存储在所分配的存储器块中;以及更新所述数据存储区中的所述栈位置指示符,使得更新后的栈位置指示符可以用来识别已经变成所述当前存储器块的所分配的存储器块。
【技术特征摘要】
【国外来华专利技术】2016.01.19 GB 1601003.5;2016.01.19 GB 1617459.11.一种用于管理包括多个存储器块中的至少一个存储器块的不连续调用栈的方法,该方法包括:将指示所述不连续调用栈的顶部的栈位置指示符存储在数据存储区中;使用所述栈位置指示符来从所述多个存储器块中识别所述不连续调用栈的当前存储器块,所述当前存储器块存储所述不连续调用栈的顶部以及指示所述不连续调用栈的前一个存储器块的位置的前一个位置指示符;确定所述当前存储器块中可用的存储器量;确定栈框架所需要的存储器量;确定中断允许所需要的存储器量;响应于所述确定,从所述多个存储器块中为所述栈框架和所述中断允许分配至少一个存储器块;将所述栈框架存储在所分配的存储器块中;以及更新所述数据存储区中的所述栈位置指示符,使得更新后的栈位置指示符可以用来识别已经变成所述当前存储器块的所分配的存储器块。2.根据权利要求1所述的方法,其中所述数据存储区包括函数栈指针数据存储区。3.根据权利要求1或者权利要求2所述的方法,其中所述栈位置指示符包括指示在所述当前存储器块中由前一个栈框架使用的已使用存储器的结束的地址。4.根据权利要求1或者权利要求2所述的方法,其中所述栈位置指示符包括指示在所述当前存储器块中前一个栈框架之后的可用存储器的开始的地址。5.根据权利要求1至4中任一项所述的方法,还包括:将中断位置指示符存储在中断栈指针数据存储区中,所述中断位置指示符指示在所分配的存储器块中为所述中断允许分配的存储器量的开始;以及更新所述数据存储区中的所述中断位置指示符。6.根据权利要求5所述的方法,其中当所述中断允许和所述栈框架被分配相同的存储器块时,所述中断位置指示符包括所述栈位置指示符。7.根据权利要求5所述的方法,其中当所述中断允许和所述栈框架被分配不同的存储器块时,所述中断位置指示符与所述栈位置指示符不同。8.根据权利要求1至7中任一项所述的方法,其中所述多个存储器块包括多个相同大小的存储器块。9.根据权利要求1至7中任一项所述的方法,其中所述多个存储器块包括多个不同大小的存储器块,并且所述方法还包括:将指示所述当前存储器块的存储器位置指示符存储在第二数据存储区中;以及使用所述存储器位置指示符识别所述当前存储器块并且使用所述栈位置指示符识别所述当前存储器块中的所述不连续调用栈的顶部;以及更新所述数据存储区中的所述存储器位置指示符。10.根据权利要求1至9中任一项所述的方法,其中所述前一个位置指示符包括所述前一个存储器块的最后一个已使用字节的地址。11.根据权利要求1至9中任一项所述的方法,其中所述前一个位置指示符包括所述前一个存储器块的第一个空闲字的地址。12.根据权利要求1至11中任一项所述的方法,其中对于向下生长的不连续调用栈,所述前一个位置指示符被存储在所述当前存储器块中的最高位置。13.根据权利要求1至11中任一项所述的方法,其中对于向上生长的不连续调用栈,所述前一个位置指示符被存储在所述当前存储器块中的最低位置。14.根据权利要求1至13中任一项所述的方法,还包括:确定所述栈框架和所述中断允许需要的所述存储器量小于或者等于所述当前存储器块中可用的存储器量;以及响应于所述确定,从所述多个存储器块中为所述栈框架和所述中断允许分配所述当前存储器块。15.根据权利要求1至13中任一项所述的方法,还包括:确定所述栈框架和所述中断允许需要的所述存储器量大于所述当前存储器块中可用的存储器量;以及响应于所述确定,从所述多个存储器块中为所述栈框架和所述中断允许分配新的存储器块。16.根据权利要求1至13中任一项所述的方法,还包括:确定所述栈框架和所述中断允许需要的所述存储器量大于所述当前存储器块中可用的存储器量;确定所述栈框架需要的所述存储器量小于或者等于所述当前存储器块中可用的存储器量;以及响应于所述确定,从所述多个存储器块中为所述栈框架分配所述当前存储器块并且为所述中断允许分配新的存储器块。17.根据权利要求1至13中任一项所述的方法,还包括:确定所述栈框架和所述中断允许需要的所述存储器量大于所述当前存储器块中可用的存储器量;确定所述栈框架需要的所述存储器量大于所述当前存储器块中可用的所述存储器量;以及响应于所述确定,从所述多个存储器块中为所述栈框架和所述中断允许分配至少一个新的存储器块。18.根据权利要求1至13中任一项所述的方法,还包括:确定所述栈框架和所述中断允许需要的所述存储器量大于所述多个存储器块的每个新的存储器块中可用的存储器量;以及响应于所述确定,从所述多个存储器块中为所述栈框架和所述中断允许分配两个或更多个新的存储器块。19.根据权利要求1至13中任一项所述的方法,还包括:确定所述栈框架和所述中断允许需要的所述存储器量大于所述当前存储器块中可用的存储器量;确定所述栈框架需要的所述存储器量大于所述当前存储器块中可用的存储器量;确定所述栈框架和所述中断允许需要的所述存储器量小于所述多个存储器块当中的每个新的存储器块中可用的存储器空间量;以及响应于所述确定,从所述多个存储器块中为所述栈框架和所述中断允许分配新的存储器块。20.根据权利要求1至13中任一项所述的方法,还包括:确定...
【专利技术属性】
技术研发人员:J·克罗斯比,B·莫兰,
申请(专利权)人:阿姆IP有限公司,
类型:发明
国别省市:英国,GB
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。