CN100383735C - 嵌入式系统中基于sram的局部变量支持方法 - Google Patents
嵌入式系统中基于sram的局部变量支持方法 Download PDFInfo
- Publication number
- CN100383735C CN100383735C CNB200610049677XA CN200610049677A CN100383735C CN 100383735 C CN100383735 C CN 100383735C CN B200610049677X A CNB200610049677X A CN B200610049677XA CN 200610049677 A CN200610049677 A CN 200610049677A CN 100383735 C CN100383735 C CN 100383735C
- Authority
- CN
- China
- Prior art keywords
- sram
- program
- sdram
- space
- power consumption
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 17
- 230000003068 static effect Effects 0.000 claims description 5
- 230000001360 synchronised effect Effects 0.000 claims description 3
- 239000004065 semiconductor Substances 0.000 claims description 2
- 230000007547 defect Effects 0.000 abstract 1
- 230000000694 effects Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000008569 process Effects 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
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种嵌入式系统中基于sram的局部变量支持方法。是将嵌入式系统中应用程序的局部变量操作空间从通常所使用的sdram中转移到sram中,实现所有局部变量操作都在sram中进行,而让sdram专注于全局变量操作和代码执行的部分。sram是高速度低功耗的高端存储器件,将sram用于对局部变量进行支持,解决了使用sdram进行局部变量操作速度慢,功耗高的缺陷,可以减少功耗并提高效率。
Description
技术领域
本发明涉及嵌入式系统程序结构及运行模式的技术领域,特别是涉及一种嵌入式系统中基于sram的局部变量支持方法。
背景技术
在最近二、三十年嵌入式领域取得了长足的发展,许多行业的发展已经离不开嵌入式领域的参与,如:汽车、航空、重工、机器人、智能管家等不一而足。这些产业嵌入式领域的需求,促使了嵌入式系统的发展,同时也提出了越来越高的要求。
为应对高性能、低功耗的市场要求,嵌入式系统已由过去的低端逐步的走向高端,很多的嵌入式系统里已经加入了高端的器件,这些器件无疑是为了提高系统性能,如Intel的pxa27x系列就加入了sram作为辅助存储器,它是低功耗、高速度的器件。
系统中有了高端的器件而没有很好的应用就不会最大限度的发挥端器件的作用。通常,在嵌入式系统中sram被用作节能器件,对它的读写是低功耗操作所以在一定的程度上是起到了的降低功耗的作用,这方面的应用如:sram作为视频帧缓冲,视频数据的读写操作都在sram中进行,所以较之在sdram中就在能耗上有了大的降低。同时,sdram的操作速度较慢,现在已经成为了CPU利用的一个瓶颈。
在sram的应用目前很多在探索阶段,许多想法很好但不能实现或不实用,这是有很多方面原因的,如:sram目前在嵌入式的空间数量比sdram还少的太多,空间限制过大。比如有个想法,就是把代码都放到sram中运行,但显然是不合适的,因为sram太小了,很多程序在空间尺寸上遇到瓶颈。
sram空间有限性在一定程度上限制了它的应用范围,但是它的空间大小在做局部变量支持方面可以尽现其才,目前,在嵌入式系统内有已有较多的sram,这样的空间长度已经足够作为程序局部变量支持了。用C语言所组成的程序基本上由函数所构成,函数中的变量即为局部变量,所以在一个应用程序中对局部变量的操作是占大部分的,应此在局部变量上的性能优化和功耗优化是对整个程序性能优化和功耗优化的主要部分。
发明内容
本发明的目的在于提供一种嵌入式系统中基于sram的局部变量支持方法。
本发明解决其技术问题采用的技术方案如下:
1)程序编译时堆栈分离;
在嵌入式系统中,静态随机存储器sram,Static Random Access Memory,采用静态存储操作,无需刷新周期,所以速度快,功耗小,同步动态随机存储器sdram,Synchronous dynamic Random Access Memory,一种以电荷形式进行存储的半导体存储器,有刷新周期,速度较sram慢,功耗高,编译器编译代码,将堆和代码在sdram中编址,栈在sram中编址;
2)sram堆栈分配:
在程序载入时,动态地设置堆栈寄存器;
多任务运行时,在sram中实现多个栈,其方法是固定地给每个任务分配20k字节空间,这样的大小已足够嵌入式程序使用;
3)sram堆栈管理:
在sdram中,定义一个数据结构,专门管理栈空间;
当有新任务载入运行时,将使用掉的sram空间标记出来,以保证不被再次使用;在一个程序退出时,将已标记为使用的标记擦除,以表示该空间可用。
本发明是一种全新的嵌入式系统局部变量支持方法,不再采用嵌入式系统中传统的在sdram中进行局部变量支持的方法,而是在高端的嵌入式sram存储器件里实现程序局部变量的的支持。sram在功耗上和运行速度上都比sdram有很大的优势。由于在嵌入式系统中,由C/C++语言实现的程序由大量函数构成,所以局部变量的运算在整个程序的运行上占有很大比重,对局部变量操作的优化是整个程序运行效率的提高和功耗的降低非常关键的一步。
本发明与背景技术相比,具有的有益的效果是:
(1)运行速度提高。sram在读写速度上是sdram的两倍,采用sram作为局部变量支持较传统的sdram中实现局部变量支持的程序运行速度提高了20%。
(2)运行功耗降低。sram在激活状态下的电流强度是sdram在激活状态下电流强度的25倍,sram中的局部变量运行功耗下降40%。
附图说明
附图是本发明实现方法流程图。
具体实施方式
嵌入式系统中基于sram的局部变量支持方法具体步骤如下。
1)程序编译时堆栈分离:
在附图中,在程序进行编译时,编译时局部变量分离,局部变量地址编入sram地址,全局变量编入sdram地址,然后对程序代码进行编译,形成程序的二进制代码。
在附图中,启动装载器BootLoader在程序开始处嵌入代码检查sdram的空间使用情况,若没有找到空闲空间,则程序的装入延迟,等待sdram有足够的空间。如果找到了足够的空间,则将程序装入到sdram中,设置好程序计数寄存器;并将程序前端嵌入预处理代码装载到sdram中。
2)sram堆栈分配:
Sram跟踪块是针对sram的使用情况定义,在sdram最高地址处定义一段二字节空间,该空间的每位的0、1状态代表sram从低到高每隔20K字节的区域的有无使用的状态。1代表该对应空间为已用空间,不得再被占用,0代码对应空间为空闲空间,可以被占用。
在图1中,程序检测sram跟踪块定义的二字节空间,从低位到高位找到0状态位,则说明找到了20k空闲空间,标记该位,使状态位为1,使其他程序不能再占用,以免引起覆盖和冲突。如果没有找到空间,堆栈按照传统方式放在sdram中进行。如果找到了空间,根据该位的偏移位置,即从最低位到该位的偏移位数,在程序开始处动态设置堆栈寄存器,使得堆栈寄存器能够指向该占用空间的底端,使与状态位对应到的sram中的未被使用空间成为该程序的栈空间。所以该程序在运行时可以将局部变量在该空闲空间中增长或削减,这样就可以程序的具体变量操作就会在sram中进行。由于程序的局部变量操作从sdram中移入到了sram中,所以运行速度提高,运行功耗降低。
3)sram堆栈管理:
多任务系统需要在内存内同时运行多个程序,且各个程序能够安全地互不干扰地执行,这样就要求有多个堆栈对于多个程序,所以要在sram中实现多个栈,这就要求保证不能覆盖和冲突。要保证不同程序的堆栈在自己所属地堆栈空间生长而不跨界到别的空间,其方法是:固定地给每个任务分配20k字节空间,这样的堆栈大小已足够嵌入式程序使用。
在sdram中,定义一个数据结构,在这个数据结构是全局的,生命周期覆盖整个嵌入式系统运行始终,里面积累有sram使用状况和每个程序所以空间的对于空间地址及堆栈寄存器对应的每个程序的当前堆栈位置,专门管理堆栈空间,当有新任务载入运行时,将使用掉的sram空间标记出来,以保证不被再次使用;在一个程序运行结束时,在程序的尾部嵌入代码设置数据结构状态,清零该程序使用的栈空间所对应的状态位,从而使之释放,成为可利用空间。
Claims (1)
1.一种嵌入式系统中基于sram的局部变量支持方法,其特征在于:
1)程序编译时堆栈分离:
在嵌入式系统中,静态随机存储器sram,采用静态存储操作,无需刷新周期,所以速度快,功耗小,同步动态随机存储器sdram,一种以电荷形式进行存储的半导体存储器,有刷新周期,速度较sram慢,功耗高,编译器编译代码,将堆和代码在sdram中编址,栈在sram中编址;
2)sram堆栈分配:
在程序载入时,动态地设置堆栈寄存器;
多任务运行时,在sram中实现多个栈,其方法是固定地给每个任务分配20k字节空间,这样的大小已足够嵌入式程序使用;
3)sram堆栈管理:
在sdram中,定义一个数据结构,专门管理栈空间;
当有新任务载入运行时,将使用掉的sram空间标记出来,以保证不被再次使用;在一个程序退出时,将已标记为使用的标记擦除,以表示该空间可用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200610049677XA CN100383735C (zh) | 2006-03-02 | 2006-03-02 | 嵌入式系统中基于sram的局部变量支持方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200610049677XA CN100383735C (zh) | 2006-03-02 | 2006-03-02 | 嵌入式系统中基于sram的局部变量支持方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1818862A CN1818862A (zh) | 2006-08-16 |
CN100383735C true CN100383735C (zh) | 2008-04-23 |
Family
ID=36918893
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200610049677XA Expired - Fee Related CN100383735C (zh) | 2006-03-02 | 2006-03-02 | 嵌入式系统中基于sram的局部变量支持方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100383735C (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101272551B (zh) * | 2007-03-23 | 2011-04-20 | 中兴通讯股份有限公司 | 一种嵌入式系统最大栈空间的设定方法 |
CN101216725B (zh) * | 2008-01-04 | 2011-04-27 | 东南大学 | 利用堆栈深度进行多线程预测的动态功耗控制方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002229864A (ja) * | 2001-01-30 | 2002-08-16 | Matsushita Electric Ind Co Ltd | 半導体装置 |
US20040015920A1 (en) * | 2001-03-20 | 2004-01-22 | International Business Machine Corporation | Object oriented apparatus and method for allocating objects on an invocation stack in a dynamic compilation environment |
CN1564098A (zh) * | 2004-04-09 | 2005-01-12 | 南京大学 | 一种防止缓冲区溢出攻击的动态堆栈内存管理方法 |
US20050086658A1 (en) * | 2003-10-15 | 2005-04-21 | Wilding Mark F. | Heap and stack layout for multithreaded processes in a processing system |
-
2006
- 2006-03-02 CN CNB200610049677XA patent/CN100383735C/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002229864A (ja) * | 2001-01-30 | 2002-08-16 | Matsushita Electric Ind Co Ltd | 半導体装置 |
US20040015920A1 (en) * | 2001-03-20 | 2004-01-22 | International Business Machine Corporation | Object oriented apparatus and method for allocating objects on an invocation stack in a dynamic compilation environment |
US20050086658A1 (en) * | 2003-10-15 | 2005-04-21 | Wilding Mark F. | Heap and stack layout for multithreaded processes in a processing system |
CN1564098A (zh) * | 2004-04-09 | 2005-01-12 | 南京大学 | 一种防止缓冲区溢出攻击的动态堆栈内存管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1818862A (zh) | 2006-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Cooper-Balis et al. | Fine-grained activation for power reduction in DRAM | |
CN100549945C (zh) | 嵌入式系统中基于spm的指令缓冲的实现方法 | |
CN103677654A (zh) | 一种存储数据的方法及电子设备 | |
CN201540564U (zh) | 利用虚存机制对片上异构存储资源动态分配的电路 | |
CN102073596B (zh) | 针对指令的可重构片上统一存储器管理方法 | |
CN201570016U (zh) | 基于虚存机制的指令片上异构存储资源动态分配的电路 | |
CN1841553A (zh) | 具有高速操作的存储器芯片架构 | |
CN104899154B (zh) | 基于嵌入式系统混合主存的页面管理方法 | |
CN1710519A (zh) | 通过数据备份节省sdram的自刷新消耗电量的方法 | |
CN104424103A (zh) | 固态储存装置中高速缓存的管理方法 | |
CN100383735C (zh) | 嵌入式系统中基于sram的局部变量支持方法 | |
CN102567220A (zh) | Cache存取的控制方法及装置 | |
CN100377118C (zh) | 基于sram的嵌入式文件系统的实现方法 | |
CN103092618A (zh) | 基于软件Cache的Dalvik虚拟机JIT加速方法 | |
CN106168926B (zh) | 基于linux伙伴系统的内存分配方法 | |
CN101251810A (zh) | 基于spm的嵌入式操作系统进程调度优化方法 | |
CN114489484A (zh) | Ssd的数据存储方法、ssd、终端设备以及存储介质 | |
CN104361009A (zh) | 一种基于倒排索引的实时索引方法 | |
CN102043723B (zh) | 用于通用流处理器的可变访存模式的片上缓存结构 | |
CN101084484B (zh) | 用于快速存取堆栈存储器的方法和系统 | |
CN103608768A (zh) | 一种数据预取方法、相关装置及系统 | |
CN103150157B (zh) | 基于访存分歧的gpu核心程序重组优化方法 | |
CN112148366A (zh) | 一种芯片降低功耗提升性能的flash加速方法 | |
CN102043591B (zh) | Pram的写操作方法 | |
CN110058859B (zh) | 程序运行及虚拟机实例的实现方法、装置、设备及介质 |
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: 20080423 Termination date: 20120302 |