热线电话:

厦门莫格电气自动化有限公司

主营:PLC可编程控制器模块,DCS卡件,ES...

商铺首页 > 新闻动态 > 51201475-150
厦门莫格电气自动化有限公司
7
企业等级: 普通会员
经营模式:
所在地区: 福建 厦门
联系卖家:    QQ在线咨询1982497648
手机号码:
公司官网:
公司地址:

51201475-150

发布时间:2019-08-28 07:55:43        

51201475-150  Honeywell

 针对有内存管理单元(MMU)的处理器设计的一些桌面操作系统(如Windows、Linux)都使用了虚拟存储器的概念,虚拟内存地址被送到MMU。在这里,虚拟地址被映射为物理地址,实际存储器被分割为相同大小的页面,采用分页的方式载入进程。一个程序在运行之前,没有必要全部装入内存,而是仅将那些当前要运行的部分页面装入内存运行。大多数嵌入式系统是针对没有MMU的处理器设计的,因此不能使用处理器的虚拟内存管理技术,而采用实存储管理策略,从而对内存的访问是直接的。它对地址的访问不需要经过MMU,而是直接送到地址线上输出,所有程序中访问的地址都是实际的物理地址。而且,大多数嵌入式操作系统对内存没有保护,各个进程实际上共享一个运行空间。一个进程在执行前,系统必须为它分配足够的连续地址空间,然后全部载入主存储的连续空间。从编译内核开始,开发人员必须告诉系统,这块开发板到底拥有多少内存;在开发程序时,必须考虑内存的分配情况并关注应用程序需要运行空间的大小。另外,由于采用实存储器管理策略,用户程序同内核以及其他用户程序在一个地址空间,程序开发时要保证不***其他应用程序的地址空间,不***系统的正常工作,使程序正常运行。因而对内存操作要格外小心。由此可见,开发者不得不参与系统的内存管理,否则系统的效率和性能都不能令人满意。开发者可以用一个内存管理器来帮助管理内存,可以借鉴流行操作系统对内存池(pool)中块(block)进行管理的思想。访问时先寻找对应的块,然后对物理地址进行页的***,进而是行***,***后是列***和根据图像处理系统处理大量数据的特点,对数据在内存中的布局进行规划。即同一块中使连续访问的数据在同一页;在同一页的数据,尽量安排在同一行,减小内存访问延迟,以便对性能进行改善。同时,内存块间相对位置也用同样的方法进行规划,使得块间的转换也尽快完成。本文采用遗传算法,同时对内存数据存储进行页、行、列的规划,对块间相对位置也进行了规划。
  1  内存规划
  流行的操作系统对内存访问的基本方式是支持快速缓存,执行的过程是把要访问的地址整行拷贝到缓存区,***行页***和行***,然后进行列***并根据读写信号进行选择。目前嵌入式系统中使用的DRAMs都支持***内存访问模式,还特别支持流行的页(page)访问模式和区间(burst)访问模式(相当于以列为主的访问)。这种访问模式消耗的能量低于随机访问方式,例如,IBM′s Cu-11 Embedded DRAM macro支持的随机访问时间是10ns,而块中页访问的时间是5ns,电流分别是60mA/MB和13mA/MB。所以,充分利用内存访问模式的特点可以改变嵌入式系统的性能。
  为了说明本文的规划思想,假设内存中有如图1所示的变量a,b,c,d,e,f,g,h。若要访问内存中变量的次序为 acacebdbefgfdah,则根据图1中内存存放的次序,可以计算出访问延迟的时间。如果页间访问延迟时间是5个时钟周期,记为Delay(P)= 5cycles,则在同页中行间访问延迟Delay(R)=3cycles,同行中列间访问延迟Delay(C)=1cycles。根据图1(a)和图1 (b)中两种存储模式,可以分别计算出如图2所示的两种内存存储方式下内存访问延迟时间:Latency(a)=47cycles,Latency(b) =29cycles。
内存存放的次序
两种内存存储方式下内存访问延迟时间
  同样,将相互访问频率较高的内存块,如三个数组A、B、C分别存放在不同的内存块,数组A和数组C是经常要进行元素间计算的,则把分别存储A和C的块放在相邻的位置上,这样,既可以减小地址总线的负担,也可以提高访问时间和减少访问次数。
  2  规划算法
  使系统内存访问延迟***小的内存规划应该从变量和要申请的内存块在内存中存储的相对位置的角度来寻找。其前提条件是变量和内存块的访问顺序已知,申请的块的信息也可以得到。根据嵌入式系统应用的特点,例如图像处理系统,经过对程序的预处理,这个条件可以满足。处理过程可分为二步:***步进行块间的规划;第二步对块内变量进行规划。问题的描述如下。
  在嵌入式系统中,设内存块大小为S,某段时间内内存块个数为T,块中每页的大小为p*q*w,其中p为行数,q为列数,w为每个字的位数。在某个应用中有N个变量{ni,i=1,……,N},已知变量被访问的次序为njnknl……nm,则首先寻找块存储的相对位置,使得内存访问延迟函数 Latency1***小(假设两个块相邻,访问需要1个时钟周期;相隔1个块,访问需要2个时钟周期;第i个块和第j个块间访问需要i-j个时钟访问延迟):
Latency1={Sum|∑z*(i-j)/z,z=1....m}            (1)
  其中:z是访问顺序表中内存块的位置,如第3个位置(z=3)访问的是bi,下一个位置存放的是bj,i和j是内存块访问顺序中相邻块标号,是块在内存中存储的相对位置,m是访问内存块的顺序排列长度。其次寻找N个变量在内存块内的存储相对位置的一种规划{nxnynz……nt},使得内存访问延迟函数Latency2***小,块内规划目标函数为:
Min:Latency2=5*#P+3*#R+#C                            (2)
  其中:#P是规划中访问的页间转换的次数,#R是行间转换的次数,#C是列间转换的次数。N个变量的排列方法的数目共有N!种,要在如此多的情况下寻找某种***优的排列,这是NP问题。解决这类优化问题有很多方法,如模拟退火算法、演化算法等一些启发算法,也可以用曲线图划分问题(graph partitioning problem)的方法来解决此问题。本文采用了***近几年发展很快的遗传算法来解决此规划问题。遗传算法是解决NP问题的有效方法。本文的研究目的在于内存规划的意义,而不是遗传算法,所以采用经典遗传算法[8],以此来验证内存规划的有效性。本文的算法可记为LBP(LBP-Layout of Block and Page)。
  2.1 算法的前提条件
  在解决问题之前,要给出解决问题的前提。
  (1)对块内访问时,通常是先寻找页,再找到行,***后找列,则对页访问的耗时(一般称为内存访问延迟)大于对同页中的行,行访问耗时大于同行中的列。同时在相距较远的块间访问耗时大于相邻块间访问。
  (2)减少内存访问中块和页的转换次数,可以减少延迟和节省能量。
  (3)在页/行/列之间转换没有优先级,也就是从1~3页和从1~2页耗时是相同的。
  (4)内存单元阵列是矩形,p和q代表内存块单元的行数和列数,w代表内存字的长度,则p*q*w代表了内存的大小。
  (5)数据访问顺序是已知的。
  (6)每个数据都分配给***的内存单元,基本单元的大小与要分配的数据刚好匹配。
  前面四个假设是解决问题的必要条件,而后面两条假设是为了简化解决的问题。如果没有特别的说明,这些假设在本文都是适用的。
  2.2 遗传算法
  遗传算法的基本步骤是确定适应度函数,然后对问题进行编码和寻找***优解。下面给出解决块内规划问题算法第二步的基本步骤。***步与第二步相似,本文省略。
  (1)适应度函数是目标函数,即Latency。依据假设,如果页访问模式延迟时间是5个时钟周期,记为Delay(P)=5cycles,则行延迟Delay(R)=3cycles,列延迟Delay(C)=1cycles,适应度函数为:latency(cycles)=#P*5+#R*3 +#C*1。
  (2)解决的问题是内存变量的存放次序,由于字母的数目有限,所以可用十进制编码来表示变量(如把图1中abcdefgh编码为12345678)。
  (3)杂交过程选择同一代中的某些位进行交换,不同代的交换容易产生***个体, 所以在某代个体内部进行交换,可以提高算法的有效性。选取某代杂交的概率为Pc=0.08。
  (4)算法的终止是在某两代适应度函数之间相对误差小于0.001时,程序终止,并给出***优的内存规划方法。如果内存单元数目有p*q个,则取串中每q个为一行(分为一组),间隔n*(q-1)为一列,存放在内存中供程序使用。
  2.3 实验结果
  图像处理系统的处理对象是象素,处理过程中使用大量的内存,造成了嵌入式系统图像处理应用中的瓶颈。经过近几十年的发展,图像处理算法也有很多成熟的算法。可以把这些算法经过改造,使之适应嵌入式系统体积小、容量小的特点。本文算法的提出是针对使用大量内存,同时处理步骤相对简单的系统设计的。本文采用一些标准(benchmark)系统,提高嵌入式系统有限的内存资源的利用率。基于内存的规划算法,用几个内存访问序列验证内存规划对嵌入式系统性能的改变。实验中使用IFA(Image Flip Algorithm)、GSR(Gauss-Seidel formula)、CA(Compress Algorithm)、BIQUAD(Biquad_one_section)和FIR。后两个例子是为了验证非图像处理的系统使用本算法的情况,说明算法的应用具有一定的普遍意义。
  表1和表2是用随机访问方法和本文的访问方法进行实验的结果。从表中可以看出,规划后的延迟时间都缩短了,另外还验证了规划内存方法的使用减少了嵌入式系统能耗。能耗的计算采用文献[2]中的算法,如图3(a)所示。
  文献[1]中的算法是对页进行规划时,寻找页访问次数***大,对列进行规划时,寻找列访问次数***大。在具体应用中,只能用一种方法。而本文同时对内存中页和行进行规划,所以对系统性能的提高更有效。图3(b)是与文献[1]算法的结果比较(仅给出能量消耗图),前者平均能量提高了大约10%。
用随机访问方法和本文的访问方法进行实验的结果
能量消耗比较
  把本文的算法应用于自行开发的嵌入式图像处理系统中,获得了良好的系统性能。
  3  结论和展望
  本文提出了一个通过减少对内存访问时块间和块内页间交换的次数和行间转换的次数,使嵌入式系统内存和能量资源能够有效利用的方法。该方法可以直接应用到嵌入式系统的内存管理器中。因为随着用户需求和功能的增加,越来越多的嵌入式系统需要处理大量的数据,所以对嵌入式系统的内存采取管理是必要的。尤其对一些不带MMU单元的操作系统来说,应用中加入内存管理程序对系统性能的提高起到很大的作用。本文给出的内存规划策略能有效地减轻嵌入式系统负担。本文是针对非数组的变量来讨论的,但是也可以应用到数组变量中。尽管使用的算法有可能没有找到系统的***优解,但使用这个算法,一定可以提高系统的性能。
  本文提出的算法不但可以应用到嵌入式系统中的DRAMs,也可以应用到其他支持行和列内存访问的存储设备上,如flash存储器。虽然目前一些多组SRAM的系统还不支持此算法,但是在将来的基于功耗设计的系统中,这种访问模式是会被支持的。
  本文方法同流行操作系统内存管理相比更简单,更加适合嵌入式系统,同时弥补了现用嵌入式操作系统CLinux等在内存管理方面的不足。
  为提高存储器利用率可采用图2所示的结构,其中公共段中存放了高32k段之间相互调用所需要的跳转表。各段相互调用之前应先跳转到公共段,执行页面切换后再跳转到被调用程序的入口,这就实现了18位虚拟地址到16位主存地址的变换。不妨以P1.0,P1.1,P1.2作为页面基址来指定不同的页,相应的跳转表程序结构如下:
  ADDR:CLR EA ;关中断
  SETB/CLR P1.0 ;切换页面
  SETB/CLR P1.1
  SETB/CLR P1.2
  SETB EA ;开中断
  JMP REAL_ADDR ;跳转
提高存储器利用率结构
  在公共段(256k存储芯片的低32k)中存放操作系统和提供给用户的其他库函数,其他各段用来存放嵌入式存储系统的用户程序。采用图2结构的单片机与存储器接口原理图如图3所示。其中A0~A15地址线接法与普通存储器扩展方法相同。
采用图2结构的单片机与存储器接口原理图
  以上考虑了复位时页面应切换到公共代码区。
  Keil C51编译器是单片机开发应用中非常流行的一种***编译器,它支持上述页面分组技术。
  2.3 单片机嵌入式存储系统数据存储区扩展
  嵌入式存储系统中引入操作系统需要增加一定的数据存储器开销,必要时仍可以采用分页技术扩展数据存储区容量。
  引入操作系统以后,数据区有两种***方法,比较简单的一种方法是操作系统与用户程序共用一个数据区,编译器将整个程序一起编译,不必区分是系统程序还是用户程序。但这样对用户来说操作系统变得不透明了,而且不良的用户程序可能会***系统的数据区,导致整个系统崩溃。
  相对应的另一种方法是给操作系统与用户程序分别分配***的数据区,譬如将128k 数据存储器给操作系统和用户程序各分配64k。不幸地是,当操作系统与用户程序一起编译时,编译器会自动给它们分配不同的地址,这样即使存储器物理上是分开的,操作系统与用户程序的数据区还是无法地址复用,这极大地浪费了地址空间;而且对传统的单片机, Keil C 编译器***大只支持64k数据区,幸运地是,这个矛盾可以通过采用虚拟接口的方法加以解决。
  为此,将公共代码段中的程序单独编译,并且在链接、***目标代码时,给操作系统和公共库函数的每个函数在00000~07FFFH内分别指定一个固定的首地址。鉴于用户程序可能调用这些函数,需要为这些函数分别编写一个相同类型的同名伪函数,每个伪函数仅包含一条到真实函数(入口地址已知)的转移指令,所有这些函数都存放在一个被称为虚拟接口的头文件中。虚拟接口文件与用户程序一起编译,完成用户程序与操作系统两次编译的接口。显然这种方法仅占用了用户区的***量代码空间,而丝毫没有浪费用户数据区,同时又实现了地址复用。
  公共代码段和操作系统的数据区特殊的对应关系(见图4),很容易通过P2端口线来指定。由单片机外部程序区访问时序(图 5)可知,PSEN的上升沿后数据总线A0~A7上开始出现指令或指令操作数,此时的地址线A15指示当前访问的是公共代码段(对应数据区高64k)还是其他程序段(对应数据区低64k),因此在PSEN上升沿锁存地址线A15,用它可以选择不同的数据存储器空间。
公共代码段和操作系统的数据区特殊的对应关系
由单片机外部程序区访问时序
  3 存储系统的性能分析
  本文基于虚拟存储系统思想实现了嵌入式存储系统中大容量存储器的扩展。不难看出系统的扩展余地受端口线的限制。由于在同一块芯片中构造图2所示的结构,需要多使用一根端口线,因此对于8051系列使用整个P1口可以将系统的程序虚拟空间扩展至8M字节。数据存储区扩展的***大容量还与程序在编译时所被分成块的数目有关,***大可达16M字节,这在单片机嵌入式存储系统中已经是足够大了。
  程序在调用不同页面的函数时需要额外的软件切换周期,频繁的页面切换会降低系统的性能,因此编译时应仔细选择函数,尽可能将相关的函数分配在同一页中。
  数据存储区切换是由硬件实现的,页面切换并不降低系统性能。由于操作系统与用户程序数据区相互***,对用户来说整个64k空间都是可用的,这就增加了操作系统的透明性。
  4结论
  嵌入式存储系统由于它的专用性和特殊性,系统的软硬件设计都与传统的计算机系统设计方法有所不同。但进行嵌入式系统设计时仍然很有必要借鉴传统计算机系统体系结构成熟的设计方法,“量体裁衣”为我所用。作者在进行嵌入式存储系统平台设计时借鉴了传统计算机虚拟存储思想来扩展存储系统,并在实际项目中得以应用,证明这种方法是非常有效的。
免责声明
• 本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们 304108043@qq.com
  • QQ在线咨询1982497648
  • 手机:
  • 联系我时务必告知是在产品网上看到的!

厦门莫格电气自动化有限公司

商铺|诚信档案

地址:

电话:传真:

免责声明:以上信息由会员自行提供,内容的真实性、准确性和合法性由发布会员负责,产品网对此不承担任何责任。产品网不涉及用户间因交易而产生的法律关系及法律纠纷, 纠纷由您自行协商解决。

风险提醒:本网站仅作为用户寻找交易对象,就货物和服务的交易进行协商,以及获取各类与贸易相关的服务信息的平台。为避免产生购买风险,建议您在购买相关产品前务必 确认供应商资质及产品质量。过低的价格、夸张的描述、私人银行账户等都有可能是虚假信息,请采购商谨慎对待,谨防欺诈,对于任何付款行为请您慎重抉择!如您遇到欺诈 等不诚信行为,请您立即与产品网联系,如查证属实,产品网会对该企业商铺做注销处理,但产品网不对您因此造成的损失承担责任!

联系:304108043@qq.com是处理侵权投诉的专用邮箱,在您的合法权益受到侵害时,欢迎您向该邮箱发送邮件,我们会在3个工作日内给您答复,感谢您对我们的关注与支持!

商铺首页 | 公司概况 | 供应信息 | 新闻动态 | 诚信档案 | 联系我们 |

厦门莫格电气自动化有限公司 电话: 传真: 联系人:

地址: 主营产品:PLC可编程控制器模块,DCS卡件,ESD系统卡件,振动监测系统卡件,汽轮机控制系统模块,燃气发电机备件

Copyright © 2024 版权所有: 产品网

免责声明:以上所展示的信息由企业自行提供,内容的真实性、准确性和合法性由发布企业负责。产品网对此不承担任何保证责任。

商盟客服

您好,欢迎莅临,欢迎咨询...