凌阳教育的个人空间 https://blog.eetop.cn/204849 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

ARM存储系统简介

已有 370 次阅读| 2015-12-10 13:45 |个人分类:linux技术

与中低档单片机不同的是,ARM处理器中一般都包含一个存储器管理部件,用于对存储器的管理。同时,为了适应不同的嵌入式应用需求,ARM存储系统的体系结构在构成上存在很多差别。简单的系统可使用像单片机系统中的平板式地址映射机制,而一些复杂的系统中,则可能包含多种现代计算机存储技术来构成功能更为强大的存储系统。

因为ARM存储系统内部的结构非常复杂,下面只对ARM存储系统的基本内容和多种类型存储器件进行简单介绍。基于ARM核的嵌入式应用系统中可能多种类型存储器件,如FlashROMSRAMSDRAM等,而且不同类型的存储器件要求不同的速度、数据宽度等,如Embest S3CEV40实验系统上的存储系统包括一片1M×16Flash

1.       CacheWRITE BUTTER

基于ARM核的SoC芯片通常是使用容量小但是非常快的CacheWRITE BUTTER技术来缩小处理器和存储系统的速度差别,从而提高系统的整体性能。现在Cache通常与处理器在同一芯片上实现。Cache有多种构造方法。在最高层次,微处理器可采用下列2种组织中的一种:

统一的Cache。指令和数据共用同一个Cache,如图所示:

指令和数据Cache分开。这种组织方式又称为改进的哈佛结构,如图所示:

着两种组织方式各有优点。统一的Cache能够根据当前程序的需要自动地调整指令在Cache存储器中的比例,比固定划分有更好的性能;而分开的Cache使Load/Store指令能够单周期执行。

2.       MMU

内存管理部件使用内存映射技术实现虚拟空间到物理空间的映射。这种映射机制对于嵌入式系统非常重要。通常嵌入式系统的程序存放在ROM/Flash中,这样系统断电后程序能够得到保存。但是ROM/FlashSDRAM相比,通常速度要慢很多,而且嵌入式系统中通常把异常中断向量表存放在RAM中。利用内存映射机制可解决这种需要。在系统加电 时,将ROM/Flash映射为地址0,这样可进行一些初始化处理;当这些初始化处理完成后,将SDRAM映射为地址0,并把系统程序加载到SDRAM中运行,这样很好地解决了嵌入式系统的需要。在ARM系统中,存储器管理单元MMU主要完成以下工作:

虚拟存储空间到物理存储空间的映射。在ARM中采用了页式虚拟存储管理。它把虚拟地址空间分成一个个固定大小的块,每一块称为一页,把物理内存的地址空间也分同样大小的页。页的大小可分为粗粒度个细粒度2种。MMU就是实现从虚拟地址到物理地址的转换。

存储器访问权限的控制。

设置虚拟存储空间的缓冲特性。

页表是实现上述功能的一个重要的手段。实际上,它是位于内存中的一个对照表。

3.       用于存储管理的系统控制协处理寄存器CP15

在基于ARM的嵌入式系统中,存储系统通常使用CP15来完成存储器的大部分管理工作,除了CP15之外,在具体的存储机制中,可能还会用到其他技术,如页表技术等。

CP15可保护1632位的寄存器,编号为0~15.实际上,对于某些编号的存储器,可能对应有多个物理寄存器;在指令中指定特定的标志位来区分相应的寄存器。

4.       存储保护机制

引入一些机制保证将I/O操作映射成内存操作后,各种I/O操作能够得到正确的结果。在简单的存储系统中,增强系统的安全性不存在问题,而当系统引入了CacheWRITE BUTTER后,就需要采取一些特别的措施。

5.       快速上下文切换技术

快速上下文切换技术FCSE通过修改系统中不同进程的虚拟地址,避免在进行进程间切换时造成的虚拟地址,避免在进行进程间切换时造成的虚拟地址到物理地址的重映射,从而提高系统的性能。

如果两个进程占用的虚拟地址空间有重叠,则系统在这两个进程之间进行切换时,必须进行虚拟地址到物理地址的重映射,包括重建TLB、清除Cache,整个工作需要巨大的系统开销,而快速上下文切换技术的引入避免了这种开销。

FCSE位于CPUMMU之间,其责任就是将不同进程使用的相同虚拟地址映射为不同的虚拟空间,使得在上下文切换时无需重建TLB等。

如果两个进程使用了同样的虚拟地址空间,则对CPU而言,FCSE机构对于各个进程的虚拟地址进行变换,这样系统中除了CPU之外的部分,看到的是经过上下文切换机构变换后的虚拟地址。

6.       存储器映射的输入/输出

ARM系统中,I/O操作通常被映射成存储器操作,即输入/输出是通过存储器映射的可寻址外围寄存器和中断输入的组合来实现的。

ARM中,I/O的输出操作可通过寄存器写入操作实现;I/O的输入操作可通过存储器读取操作实现。这样I/O空间就被映射成存储空间。但这些存储器映射的I/O空间不满足Cache所需要的特性。例如,从一个普通的存储单元连续读取2次,将会返回同样的结果。对于存储器映射的I/O空间,连续读取2次,返回的结果可能不同。这可能是由于第1次读操作有副作用,或者其他操作可能影响了该存储器映射的I/O单元的内容,因此,对于存储器映射的I/O空间的操作,就不能使用Cache技术。某些ARM系统也可能有存储器直接访问硬件。

凌阳教育,专注嵌入式人才培养13年,完善的培养方案,强大的师资,合理的课程安排,成功从小白蜕变为嵌入式工程师。想了解凌阳教育,或者获得更多嵌入式学习资料的免费下载,请点击www.sunplusedu.com访问凌阳教育官网


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 1

    获赞
  • 3

    评论
  • 3815

    访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-17 05:34 , Processed in 0.033288 second(s), 14 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部