CN101295240A - 嵌入式系统中基于spm的指令缓冲的实现方法 - Google Patents
嵌入式系统中基于spm的指令缓冲的实现方法 Download PDFInfo
- Publication number
- CN101295240A CN101295240A CNA2008100621622A CN200810062162A CN101295240A CN 101295240 A CN101295240 A CN 101295240A CN A2008100621622 A CNA2008100621622 A CN A2008100621622A CN 200810062162 A CN200810062162 A CN 200810062162A CN 101295240 A CN101295240 A CN 101295240A
- Authority
- CN
- China
- Prior art keywords
- spm
- bank
- space
- application
- sram
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 131
- 230000003139 buffering effect Effects 0.000 title abstract 2
- 230000008569 process Effects 0.000 claims abstract description 111
- 230000015654 memory Effects 0.000 claims abstract description 55
- 238000003860 storage Methods 0.000 claims description 13
- 230000003068 static effect Effects 0.000 claims description 12
- 238000013461 design Methods 0.000 claims description 9
- 238000012217 deletion Methods 0.000 claims description 8
- 230000037430 deletion Effects 0.000 claims description 8
- 230000007246 mechanism Effects 0.000 claims description 7
- 239000012634 fragment Substances 0.000 claims description 5
- 238000004886 process control Methods 0.000 claims description 4
- 238000012986 modification Methods 0.000 claims description 3
- 230000004048 modification Effects 0.000 claims description 3
- 238000004064 recycling Methods 0.000 claims description 3
- 238000000638 solvent extraction Methods 0.000 claims description 3
- 230000009466 transformation Effects 0.000 claims description 3
- 238000005265 energy consumption Methods 0.000 abstract description 11
- 230000009286 beneficial effect Effects 0.000 abstract 1
- 238000007726 management method Methods 0.000 description 11
- 230000008901 benefit Effects 0.000 description 5
- 238000013467 fragmentation Methods 0.000 description 5
- 238000006062 fragmentation reaction Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000004134 energy conservation Methods 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 208000035126 Facies Diseases 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 208000037265 diseases, disorders, signs and symptoms Diseases 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- 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
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种嵌入式系统中基于SPM的指令缓冲的实现方法。本发明的方法结合SPM位于嵌入式处理器片上的特点,对SPM的空间进行划分,将程序的指令驻留在SPM上。本发明实现了对SPM的有效使用,充分利用了SPM速度快的特点,提高了程序执行的效率。本发明实现了对SPM的有效使用,充分利用了SPM速度快的特点,提高了程序执行的效率;本发明对SPM的使用,有利于在运行时减少程序由于存储访问带来的能耗。
Description
技术领域
本发明涉及嵌入式系统技术领域,特别是涉及一种嵌入式系统中基于SPM的指令缓冲的实现方法。
背景技术
随着嵌入式系统越来越多的被人们所认识和了解,对于嵌入式系统的性能、运行速度、能耗等方面的要求,也越来越高。为了提高运行于嵌入式系统上的程序的运行速度,在对硬件不断开发、精益求精的同时,人们对嵌入式操作系统的要求也越来越高、越来越苛刻。
因为嵌入式环境的纷繁复杂,人们要求在其上的操作系统,有特别的规划和定制,而不希望千篇一律的只有共性、没有个性。比如有些嵌入式设备只需要完成比较有些的任务,那么其上的操作系统可能只需要提供支持这些任务的有限模块就行。而有些嵌入式设备需要持续力长、那自然而然节能是运行与其上的操作系统所需要考虑的最大方向。有些设备需要实时性的绝对保证,则操作系统的实时性是无法避免的设计初衷。
SRAM的英文全称是“Static RAM”,翻译过来就是“静态随即存储器”,主要用于制造Cache。这种存储器不需要通过定时的刷新电路,就可以保证其存储的内容。与其相对应的DRAM,即“Dynamic RAM”常被用作内存,其需要定时的刷新电路,每隔一段时间对其进行刷新充电,才能保证其内保存的数据不会丢失。具有较高的读写性能的同时,SRAM的造价和集成度都是限制其大小和使用的因素。
传统的嵌入式系统中,其实早已有SRAM介质的应用了,就是人们所熟悉的Cache。SRAM是一种静态存取内存,即不需要定时刷新电路就可以保存它内部存储的数据,不像DRAM那样的普通存储器那样需要刷新电路,每隔一段时间,固定地要对DRAM刷新充电一次,否则内部的数据无法保存下去。正是因为这样的硬件特性,使得SRAM具有较高的读写性能。同时,SRAM也有它自身的缺点,最主要的一点是它的集成度较低,相对于DRAM来说,同容量的SRAM需要大的多的空间体积。因此,如果主板上存在SRAM存储器,则要占用一部分面积,这对嵌入式系统来说是不能忍受的。一般在主板上集成SRAM的系统,通常是桌面系统。
由于SRAM具备较好的读写性能,所以在计算机系统内有它的特定用途。目前SRAM有几种用法:一种是置于CPU与主存之间的高速缓存,这种高速缓存有两种规格:一种是固定在主板上的高速缓存,即通常人们所说的Cache;另一种是插在卡槽上扩充用的高速缓存。还有为了加速CPU内部数据的传送,在CPU的内部也设计有高速缓存,所以在Pentium CPU就有一级高速缓存和二级高速缓存的概念,一般一级缓存是内建在CPU的内部,二级缓存是集成在CPU的外部。显然速度快,不需要定时刷新是SRAM最大的优点,但是也有相应的缺点,就是价格高,体积大,所以在主板上还不能作为用量较大的主存。
由于Cache体系结构的设计主要是为了一般的计算机系统,提高系统运行表现而来的。传统的Cache——内存模式作为一种降低内存存取开销的同时,它们的行为很大程度上倚赖于一些运行时刻的因素,因此它们可能不是嵌入式系统的最佳选择,因为嵌入式系统大多对实时性和执行时间保障有各方面要求,最近的研究结果还标明,Cache对于传统的多媒体应用程序的数据存取模式的表现非常的不尽如人意。传统Cache——内存模式的这些不足,使得在嵌入式计算为目的的很多设计中,人们越来越多的倾向于采用软件管理片内的内存。我们所知道的ScratchPad Memory存储单元就是软件管理的片内SRAM单元的一个例子。
其次,虽说Cache和ScratchPad Memory都是用SRAM元件制造而成的,它们的运行行为差异比较大。Cache分为tag RAM和data RAM两部分,tag RAM和被存取的数据地址做比较,如果比较表明存在,则把相应的Cache中的内容发送给处理器,以此来避免对于DRAM的访问,而ScratchPad Memory则没有包括这个所谓的tag RAM。我们知道嵌入式计算机系统的环境相对于一般计算机系统来说,都是比较苛刻的,对于芯片的计算能力、存储能力、空间大小、能耗、待机时间都有比较高的要求,特别是对于能耗来说,很多的研究往往都在这方面下苦工。作为传统的Cache——内存结构,由于每次CPU读取数据,必然存在一次tag RAM段的比较,这部分的能耗占用从全局来看,也是一笔不小的开销,这个也是Cache——内存结构在嵌入式运行环境下的缺陷。为了减少或者避免这种比较过程带来的能耗,可以引入ScratchPad Memory,其在节能这个意义上有其先天的优势,因为ScratchPad Memory是软件可编程的,它的行为是由开发人员自行定义的,不像Cache那样不可编程自行比较判断,不存在如Cache那样的比较过程,可以给嵌入式系统降低一定量的能耗。
ScratchPad SRAM存储器作为集成于CPU核心上的一类存储器,其读取数据的速度和Cache是一样快的,远高于读取内存的速度,其可以用于存储数据或者存储指令。从字面上解释(便签本SRAM),不难发现,其特点就是用作处理一些临时的小量的但又会反复“读”和“写”的数据的这么一类存储器。其位于片内(on-chip),相对于位于片外(off-chip)的“内存”而言,读写速度是它的优势;而相对于同样位于片内的高速缓冲存储器(Cache)而言,其软件可控制,用户可控制,是它的特征。集成这样一类的存储器到CPU上的好处,是可以提高芯片的集成度,使得芯片本身具备一定的数据处理和存取能力,对现在火热的嵌入式系统最终形态———SOC(System On Chip)来说,也是非常有利的一个地方。
目前市场上的高端处理器芯片很多都集成着这样的片内存储器,它们都用SRAM制成,或作为L1 L2 Cache,或作为ScratchPad RAM,提供给用户开发和使用。比较常见的芯片如Intel系列的PXA27x系列,就集成了这样的片内存储器,大小一般是256k左右。
目前市场上高端的处理器芯片很多集成有片内的存储器,如:Intel PXA27X等。目前它们的功能主要是做处理器片内Cache,或供用户特殊使用的内存。通常它们都是和主内存统一编址的,这样就方便了开发人员的开发工作。基于片内内存的一般特性,现在使用较多的是用SRAM作为片内内存,主要原因是它有很好的读写性能。但是由于SRAM的体积限制,所以目前片内的内存都是小容量的,一般大小在256K左右,如:Intel PXA272。
作为嵌入式环境的核心,嵌入式的CPU不断的在发展。许多的嵌入式微处理器内部都集成了高性能片内器件,ScratchPad Memory存储器就是集成在高端处理器芯片内部的存储介质,由于其位于微处理器内部,与CPU的交互极快,已经被越来越多的人所重视和开发。大多数的相关研究,都是利用了ScratchPadMemory存储器的高速度和低功耗的特性,对程序内的全局变量或者大小可以安置与ScratchPad Memory中的数组,进行静态的或者动态的规划,使其享受ScratchPad Memory的性能,从而提高程序段的运行时能耗和运行速度。
在使用时,通常将ScratchPad Memory简称为SPM。ScratchPad Memory一般都是分bank的,而bank与bank之间的电源管理是相对独立的,即ScratchPadMemory的各bank运行时态可能是以下的几种状态:
1.都保持运行状态;
2.某一个bank保持运行状态,另外的bank保持休眠状态;
3.若干个bank保持运行状态,另外的bank保持休眠状态;
4.都保持休眠状态;
而对于ScratchPad Memory的电源管理可以通过设置相应寄存器的位,来简单的完成,以此达到尽量的节约运行着的嵌入式系统的能耗,这个设计也是DRAM所达不到的,因为DRAM需要保证其刷新才能保证存储在其中的内容,无法进入休眠状态。本发明就是利用SPM来对系统性能进行提高。
发明内容
本发明的目的在于提供一种嵌入式系统中基于SPM的指令缓冲的实现方法。
本发明解决其技术问题采用的技术方案如下:
1)SPM空间划分:
根据ScratchPad Memory的特点,对SRAM空间进行以大小为4k的块为最小单位的划分;对于拥有m个快速bank,n个慢速bank的SPM来说,快速bank的bank号为QB0到QBm-1,空间被划分为每个大小为4k的逻辑块,这也正是SPM的最小物理使用单元;慢速bank的bank号为LB0到LBn-1,为了减少碎片的产生,充分利用SPM,慢速bank每个bank的逻辑块大小的划分可以根据系统的使用环境进行调整和适应,逻辑块大小应为2的指数幂的大小且大于4K的大小;
2)进程对SPM的请求:
进程对于使用SPM的请求,包括动态的请求和静态的请求;静态请求SPM是在编译阶段的工作,一些程序可以根据需求,通过基于相对地址的定址编译技术,把程序编译到慢速bank;SPM的动态请求,作为运行中的嵌入式操作系统,当一个进程建立的时候,根据它的优先级别和运行特性,来对SPM空间进行分配;
3)改进进程模块:
针对进程控制块的内容信息的改造,以及建立进程、调度进程、删除进程时候的过程的修改;设计一个域表示进程是否想要申请SPM空间作为进程代码段空间;
进程建立的时候,除了一般的建立过程之外,判断是否申请SPM地址空间,如果是申请的,进入内存管理中的SPM申请模块;
4)改造内存模块:
对内存模块中的换页机制进行改造;对于SPM来说,增加基于bank的“bank-块”式的管理,按照bank、块为SPM建立索引;
5)进程调度对SPM指令缓冲的使用:
当一次调度来临,某进程被切换到运行的时候,判断其代码段的位置,共可分为以下三种情况依次处理:
a.代码段处于SPM中时,保持普通的调度过程,继续执行下去就可以。
b.代码段处于DRAM中时,如果当前进程属于优先级比较低的进程,在其建立的时候,就没有提出对SPM的申请,不进行重新分配;如果进程建立时期其对SPM的申请没有被满足,自动退化成对普通DRAM的申请,重新检查它的申请是否能被满足;
c.代码段处于DRAM中,但已经被换页机制换出DRAM时,重新检查该进程,如果该进程在建立时期曾经提出过SPM申请,重新检查该进程对SPM的申请是否在此刻能被满足,如果能够满足就进行分配,否则就仍然分配到DARM空间;
6)回收SPM存储空间:
基于本方法中对SPM的逻辑划分,对快速bank和慢速bank的当前状态进行标记;
基于存在位,对SPM进行回收:进程删除时,检查其代码段是否在SPM上,如果不是,维持一般的进程删除过程;如果是,则进入SPM回收模块,置相应的内存块的存在位为0,表示该块SPM内存空间重新可被别的进程申请和使用;
7)整理SPM空间:
在进程的删除时,在遍历整个SPM页表的过程中进行;判断SPM的剩余空间的大小,如果满足处于[30%,70%]之间时,检查最近对SPM的操作次数,如果操作次数大于10,做碎片整理工作,如果小于10,继续等待新的SPM操作申请的到来。
本发明与背景技术相比,具有的有益的效果是:
本发明是一种嵌入式软件反编译中的静态库函数识别实现方法,其主要功能是结合SPM位于嵌入式处理器片上的特点,对SPM的空间进行划分,将程序的指令驻留在SPM上。本方法实现了在嵌入式系统中对SPM的利用,给进程带来的执行上的时间的节约,这样就能够大大提高系统中进程运行的速度,减少进程代码段运行和反复搬迁所耗时间。
(1)高效性。本发明实现了对SPM的有效使用,充分利用了SPM速度快的特点,提高了程序执行的效率。
(2)低能耗。本发明对SPM的使用,有利于在运行时减少程序由于存储访问带来的能耗。。
附图说明
附图是本发明的实施过程示意图。
具体实施方式
本发明是一种嵌入式系统中基于SPM的指令缓冲的实现方法,下面结合附图说明其具体实施过程。
1)SPM空间划分:
根据ScratchPad Memory的特点,对SRAM空间进行以大小为4k的块为最小单位的划分。ScratchPad SRAM各个bank之间的物理特性存在着可见的差异,不同的bank具有不同的访问速度,这些bank可以划分为访问速度快的快速bank和访问速度慢的慢速bank。为了减少内部碎片,对于各个bank内的空间的划分又不是完全一致的。
对于拥有m个快速bank,n个慢速bank的SPM来说,快速bank的bank号为QB0到QBm-1,空间被划分为每个大小为4k的逻辑块,这也正是ScratchPadSRAM的最小物理使用单元。慢速bank的bank号为LB0到LBn-1,为了减少碎片的产生,充分利用ScratchPad SRAM,慢速bank每个bank的逻辑块大小的划分可以根据系统的使用环境进行调整和适应,逻辑块大小应为2的指数幂的大小且大于4K的大小。
2)进程对ScratchPad SRAM的请求:
进程对于使用ScratchPad SRAM的请求,分为动态的请求和静态的请求。静态请求ScratchPad SRAM一般属于编译阶段的工作,一些程序可以根据自己的需求,通过基于相对地址的定址编译技术,把程序编译到指定的地址空间上,这里指的就是编译到ScratchPad SRAM之上。由于嵌入式软件都是自行设计和开发的,这部分静态编译的内容,限定在慢速bank。
对于ScratchPad SRAM的动态请求,作为运行中的嵌入式操作系统,当一个进程建立的时候,根据它的优先级别和运行特性,考虑是否把它的代码段放在ScratchPad SRAM中。如果是,则内存管理模块判断当前的ScratchPad SRAM的使用情况,是否某个bank内有连续的空间大小满足该进程代码段的大小。在使用ScratchPad SRAM的时候,根据所申请空间的大小和进程优先级的不同,需要定义不同的响应方式。对于具有高优先级的进程的请求,内存管理模块检查快速bank,只要有一个快速bank上的可用空间能够满足请求,即分配空间给该进程;如果快速bank上没有位于同一bank上的足够可用空间,内存管理模块检查慢速bank中的空间使用情况,进行分配。
空间的申请需要满足以下两个条件:
不越bank的原则,即任何申请块,某一时刻只可能在某一bank上存在;
对某bank的使用,遵循该bank划分的块的大小使用,即:如果是一个23k的代码段申请,如果是在QB0被满足的话,因为该bank是划分成4k一块的逻辑块,需要占据6个单位的逻辑块空间,且它们必须是连续的;如果是在LB0中被满足,且LB0的逻辑块大小是8k,需要占据3个单位的逻辑块空间,且它们必须是连续的。
3)改进进程模块:
针对进程控制块的内容信息的改造,以及建立进程、调度进程、删除进程时候的过程的修改。进程控制块中除了显示进程的优先级之外,还需要额外的设计一个域表示进程是否想要申请ScratchPad SRAM空间作为进程代码段空间(即使申请不一定会被满足),通过这个域,嵌入式操作系统可以给定进程以后的调度或者申请内存的时候的策略。进程建立的时候,除了一般的建立过程之外,判断是否申请ScratchPad SRAM地址空间,如果是申请的,进入内存管理中的ScratchPad SRAM申请模块。
进程调度的时候,是另一个进程可能重新申请到ScratchPad SRAM储存空间的时刻,如果进程域表明它并非想要申请ScratchPad SRAM空间,则转为普通调度流程,不做任何改变;如果进程域申请ScratchPad SRAM空间的,则判断其是否在建立的时候被满足,如果是,不做任何改变,如果在建立时刻没有被满足,则跳入内存管理模块中的ScratchPad SRAM申请模块,判断是否可能重新申请到储存空间。
进程终结的时候,是唯一的释放ScratchPad SRAM空间的入口,删除进程的时候,判断该进程是否申请了ScratchPad SRAM存储空间,如果否,转入普通的内存回收机制,如果是,则转入内存管理模块中相应的ScratchPad SRAM释放模块。
4)改造内存模块:
对内存模块中的换页机制进行改造。ScratchPad SRAM空间有自己单独的页表,对于ScratchPad SRAM的申请由于仅有两个入口(进程建立时期、进程调度时期),对于ScratchPad SRAM的回收仅有一个入口(进程删除时期)。对于SPM来说,增加基于bank的“bank-块”式的管理,按照bank、块为SPM建立索引。以一般的256k大小的4个bank结构的ScratchPad SRAM为例,只需要维护一个很小的索引页表。
5)进程调度对SPM指令缓冲的使用:
进程建立的时候,已经对其是否使用ScratchPad SRAM空间作了判断和预先的装载,对被装载入ScratchPad SRAM的进程的代码段的访问,是100%命中的,不存在Cache所谓的“冷启动”过程,这点对于嵌入式系统来说是非常重要而有所改善的。
进程调度的时候,再次给一个进程分配ScratchPad SRAM的时机,对于处在等待队列中的进程,它的代码段可能是在ScratchPad SRAM中,也可能是在片外DRAM中,还可能因为被换进换出而既不在ScratchPad SRAM中也不在DRAM中,某进程代码段的所处状态包涵于其中。
两种状态:存在于ScratchPad SRAM中或DRAM中;不存在于ScratchPadSRAM和DRAM中。
所以,当一次调度来临,某进程被切换到运行的时候,判断其代码段的位置,共可分为以下三种情况依次处理:
a.代码段处于ScratchPad SRAM中。这类情况下,当前进程属于优先级高的进程,其代码段在建立的时期成功分配到了ScratchPad SRAM空间,所以进程的调度和切换无需作任何工作,只需要保持普通的调度过程,继续执行下去就可以。
b.代码段处于DRAM中。这类情况下,当前进程可能属于优先级比较低的进程,在其建立的时候,就没有提出对ScratchPad SRAM的申请,这种情况我们不需要考虑;还有可能是因为在建立该进程的时候,由于ScratchPad SRAM中的空间都被别的进程所占据了,而且优先级都比该进程高,即该进程建立时期其对ScratchPad SRAM的申请没有被满足,自动退化成对普通DRAM的申请。这类进程对于在被调度时候,可以重新检查它的申请是否能被满足。
c.代码段处于DRAM中,但已经被换页机制换出DRAM。这种情况下,重新检查该进程,如果该进程在建立时期曾经提出过ScratchPad SRAM申请的话,重新审核该进程对ScratchPad SRAM的申请是否在此刻能被满足,如果能够满足就进行分配,否则就仍然分配到DARM空间。
6)回收SPM存储空间:
SPM空间作为代码段空间来使用,所以对SPM空间的回收,仅仅只是修改相应存在位即可完成,非常的高效和快速。基于本方法中对ScratchPad SRAM的逻辑划分,对快速bank和慢速bank的当前状态进行标记。
基于存在位的这个设计,ScratchPad SRAM回收和整理其实非常的简练:进程删除时,检查其代码段是否在ScratchPad SRAM上,如果不是,维持一般的进程删除过程;如果是,则进入ScratchPad SRAM回收模块,置相应的内存块的存在位为0,表示该块ScratchPad SRAM内存空间重新可被别的进程申请和使用。
7)整理SPM空间:
随着系统运行时间的逐渐的变长,对于ScratchPad SRAM的空间的使用和释放请求,不断的被接受和处理,空间的使用会使得ScratchPad SRAM逐渐的碎片化,连续的空间会越来越少,这样当有进程申请一段比较大的连续空间时候,很可能即使剩余空间大大超过申请空间的大小,也因为过于的碎片化,而无法满足申请的要求,这样的情况,使得ScratchPad SRAM的利用率大大的降低。
为了解决这种问题,必须定期的给ScratchPad SRAM做碎片的整理。整理不能过于频繁也不能间隔太久,过于频繁的整理没有效率还会浪费系统性能,而间隔太久的话,碎片情况也会比较严重。碎片整理在遍历整个ScratchPadSRAM页表的过程中进行。
对于ScratchPad SRAM的碎片化程度,可以从两个方面来考虑:
剩余空间的大小。剩余空间的大小,反映了当前ScratchPad SRAM空间的使用程度,剩余空间很小,说明当前对ScratchPad SRAM的利用很充分,无需整理;剩余空间很大,说明ScratchPad SRAM还有很多机会被使用到。这两种情况都不需要整理,需要考虑的是剩余空间处于[30%,70%]区间之内时,需要做空间的整理;
最近对ScratchPad SRAM的操作的次数,操作次数包括申请ScratchPadSRAM的次数和释放ScratchPad SRAM的次数,它们都对ScratchPad SRAM碎片化程度有着影响。当最近对ScratchPad SRAM的操作的次数大于10的时候,需要做空间的整理。
碎片整理判断ScratchPad SRAM的剩余空间的大小,如果满足处于[30%,70%]之间时,检查最近对ScratchPad SRAM的操作次数,如果操作次数大于10,做碎片整理工作,如果小于10,继续等待新的ScratchPad SRAM操作申请的到来。
碎片整理的时机,选择在进程的删除时期,因为创建时期由于进程可能需要比较及时的响应,或者有时间的限制,不适合做ScratchPad SRAM碎片整理的工作。而删除时期我们知道,作为代码段的驻留空间,由于不保存相关的数据,不需要“回写”阶段,所以事实上删除时期的时间很充裕,可以用来检查是否ScratchPad SRAM已经“凌乱不堪”需要整理了,这个也是“指令缓冲”这方面的优势所在。
Claims (1)
1.一种嵌入式系统中基于SPM的指令缓冲的实现方法,其特征在于:
1)SPM空间划分:
根据ScratchPad Memory的特点,对SRAM空间进行以大小为4k的块为最小单位的划分;对于拥有m个快速bank,n个慢速bank的SPM来说,快速bank的bank号为QB0到QBm-1,空间被划分为每个大小为4k的逻辑块,这也正是SPM的最小物理使用单元;慢速bank的bank号为LB0到LBn-1,为了减少碎片的产生,充分利用SPM,慢速bank每个bank的逻辑块大小的划分可以根据系统的使用环境进行调整和适应,逻辑块大小应为2的指数幂的大小且大于4K的大小;
2)进程对SPM的请求:
进程对于使用SPM的请求,包括动态的请求和静态的请求;静态请求SPM是在编译阶段的工作,一些程序可以根据需求,通过基于相对地址的定址编译技术,把程序编译到慢速bank;SPM的动态请求,作为运行中的嵌入式操作系统,当一个进程建立的时候,根据它的优先级别和运行特性,来对SPM空间进行分配;
3)改进进程模块:
针对进程控制块的内容信息的改造,以及建立进程、调度进程、删除进程时候的过程的修改;设计一个域表示进程是否想要申请SPM空间作为进程代码段空间;
进程建立的时候,除了一般的建立过程之外,判断是否申请SPM地址空间,如果是申请的,进入内存管理中的SPM申请模块;
4)改造内存模块:
对内存模块中的换页机制进行改造;对于SPM来说,增加基于bank的“bank-块”式的管理,按照bank、块为SPM建立索引;
5)进程调度对SPM指令缓冲的使用:
当一次调度来临,某进程被切换到运行的时候,判断其代码段的位置,共可分为以下三种情况依次处理:
a.代码段处于SPM中时,保持普通的调度过程,继续执行下去就可以。
b.代码段处于DRAM中时,如果当前进程属于优先级比较低的进程,在其建立的时候,就没有提出对SPM的申请,不进行重新分配;如果进程建立时期其对SPM的申请没有被满足,自动退化成对普通DRAM的申请,重新检查它的申请是否能被满足;
c.代码段处于DRAM中,但已经被换页机制换出DRAM时,重新检查该进程,如果该进程在建立时期曾经提出过SPM申请,重新检查该进程对SPM的申请是否在此刻能被满足,如果能够满足就进行分配,否则就仍然分配到DARM空间;
6)回收SPM存储空间:
基于本方法中对SPM的逻辑划分,对快速bank和慢速bank的当前状态进行标记;
基于存在位,对SPM进行回收:进程删除时,检查其代码段是否在SPM上,如果不是,维持一般的进程删除过程;如果是,则进入SPM回收模块,置相应的内存块的存在位为0,表示该块SPM内存空间重新可被别的进程申请和使用;
7)整理SPM空间:
在进程的删除时,在遍历整个SPM页表的过程中进行;判断SPM的剩余空间的大小,如果满足处于[30%,70%]之间时,检查最近对SPM的操作次数,如果操作次数大于10,做碎片整理工作,如果小于10,继续等待新的SPM操作申请的到来。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2008100621622A CN100549945C (zh) | 2008-06-03 | 2008-06-03 | 嵌入式系统中基于spm的指令缓冲的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2008100621622A CN100549945C (zh) | 2008-06-03 | 2008-06-03 | 嵌入式系统中基于spm的指令缓冲的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101295240A true CN101295240A (zh) | 2008-10-29 |
CN100549945C CN100549945C (zh) | 2009-10-14 |
Family
ID=40065544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2008100621622A Expired - Fee Related CN100549945C (zh) | 2008-06-03 | 2008-06-03 | 嵌入式系统中基于spm的指令缓冲的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100549945C (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495763A (zh) * | 2011-11-18 | 2012-06-13 | 成都易我科技开发有限责任公司 | 计算机程序内存动态配置方法 |
CN102508786A (zh) * | 2011-11-02 | 2012-06-20 | 盛科网络(苏州)有限公司 | 优化空间利用率芯片设计方法及其芯片 |
CN102890658A (zh) * | 2012-11-07 | 2013-01-23 | 武汉科技大学 | 一种嵌入式系统中基于spm的输入输出缓冲实现方法 |
CN106325822A (zh) * | 2016-08-25 | 2017-01-11 | 江苏绿扬电子仪器集团有限公司 | 提升dsp运算性能的方法 |
CN110059024A (zh) * | 2019-04-19 | 2019-07-26 | 中国科学院微电子研究所 | 一种内存空间数据缓存方法及装置 |
CN110543432A (zh) * | 2019-09-09 | 2019-12-06 | Oppo广东移动通信有限公司 | 内存碎片整理方法、装置、终端及存储介质 |
CN110597638A (zh) * | 2019-09-20 | 2019-12-20 | 上海德拓信息技术股份有限公司 | 基于OpenStack云平台的虚拟机申请大额内存的方法 |
CN114090536A (zh) * | 2022-01-19 | 2022-02-25 | 苏州浪潮智能科技有限公司 | 一种基于分布式存储的日志文件存储方法、装置及介质 |
CN114706467A (zh) * | 2022-03-10 | 2022-07-05 | 南京蓝洋智能科技有限公司 | 一种多颗dram系统的节能处理方法 |
-
2008
- 2008-06-03 CN CNB2008100621622A patent/CN100549945C/zh not_active Expired - Fee Related
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508786A (zh) * | 2011-11-02 | 2012-06-20 | 盛科网络(苏州)有限公司 | 优化空间利用率芯片设计方法及其芯片 |
CN102508786B (zh) * | 2011-11-02 | 2014-12-17 | 盛科网络(苏州)有限公司 | 优化空间利用率芯片设计方法及其芯片 |
CN102495763A (zh) * | 2011-11-18 | 2012-06-13 | 成都易我科技开发有限责任公司 | 计算机程序内存动态配置方法 |
CN102890658A (zh) * | 2012-11-07 | 2013-01-23 | 武汉科技大学 | 一种嵌入式系统中基于spm的输入输出缓冲实现方法 |
CN102890658B (zh) * | 2012-11-07 | 2016-03-02 | 武汉科技大学 | 一种嵌入式系统中基于spm的输入输出缓冲实现方法 |
CN106325822A (zh) * | 2016-08-25 | 2017-01-11 | 江苏绿扬电子仪器集团有限公司 | 提升dsp运算性能的方法 |
CN110059024A (zh) * | 2019-04-19 | 2019-07-26 | 中国科学院微电子研究所 | 一种内存空间数据缓存方法及装置 |
CN110543432A (zh) * | 2019-09-09 | 2019-12-06 | Oppo广东移动通信有限公司 | 内存碎片整理方法、装置、终端及存储介质 |
CN110543432B (zh) * | 2019-09-09 | 2021-07-20 | Oppo广东移动通信有限公司 | 内存碎片整理方法、装置、终端及存储介质 |
CN110597638A (zh) * | 2019-09-20 | 2019-12-20 | 上海德拓信息技术股份有限公司 | 基于OpenStack云平台的虚拟机申请大额内存的方法 |
CN114090536A (zh) * | 2022-01-19 | 2022-02-25 | 苏州浪潮智能科技有限公司 | 一种基于分布式存储的日志文件存储方法、装置及介质 |
CN114706467A (zh) * | 2022-03-10 | 2022-07-05 | 南京蓝洋智能科技有限公司 | 一种多颗dram系统的节能处理方法 |
CN114706467B (zh) * | 2022-03-10 | 2023-06-09 | 南京蓝洋智能科技有限公司 | 一种多颗dram系统的节能处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100549945C (zh) | 2009-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100549945C (zh) | 嵌入式系统中基于spm的指令缓冲的实现方法 | |
Cooper-Balis et al. | Fine-grained activation for power reduction in DRAM | |
US8103894B2 (en) | Power conservation in vertically-striped NUCA caches | |
US7443759B1 (en) | Reduced-power memory with per-sector ground control | |
US9384134B2 (en) | Persistent memory for processor main memory | |
US6038673A (en) | Computer system with power management scheme for DRAM devices | |
CN101346701A (zh) | 降低正在被供电的存储体的数量 | |
CN101464834B (zh) | 闪存数据写入方法及使用此方法的控制器 | |
US9645942B2 (en) | Method for pinning data in large cache in multi-level memory system | |
CN101739358B (zh) | 利用虚存机制对片上异构存储资源动态分配的方法 | |
US8171220B2 (en) | Cache architecture with distributed state bits | |
CN201570016U (zh) | 基于虚存机制的指令片上异构存储资源动态分配的电路 | |
CN201540564U (zh) | 利用虚存机制对片上异构存储资源动态分配的电路 | |
CN102792285A (zh) | 层级转换表控制 | |
CN100377117C (zh) | 用于虚实地址变换及读写高速缓冲存储器的方法及装置 | |
CN103019955A (zh) | 基于pcram主存应用的内存管理方法 | |
CN100377118C (zh) | 基于sram的嵌入式文件系统的实现方法 | |
CN1145887C (zh) | 数据处理的装置和方法 | |
CN101251810A (zh) | 基于spm的嵌入式操作系统进程调度优化方法 | |
Valero et al. | Design, performance, and energy consumption of eDRAM/SRAM macrocells for L1 data caches | |
CN100520737C (zh) | 高速缓存系统、方法及计算机系统 | |
Zhang et al. | Design and optimization of large size and low overhead off-chip caches | |
US6449690B1 (en) | Caching method using cache data stored in dynamic RAM embedded in logic chip and cache tag stored in static RAM external to logic chip | |
US6654854B1 (en) | Caching method using cache tag and cache data stored in dynamic RAM embedded in logic chip | |
Knyaginin | Towards Large-Capacity and Cost-Effective Main Memories |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20091014 Termination date: 20120603 |