欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    ARM体系结构与编程第版第章.ppt

    • 资源ID:24456894       资源大小:474KB        全文页数:44页
    • 资源格式: PPT        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    ARM体系结构与编程第版第章.ppt

    25.1 ARM存储系统概述存储系统概述ARM存储系统的体系结构可以适应多种不同的嵌入式应用存储系统的体系结构可以适应多种不同的嵌入式应用系统。最简单的存储系统使用普通的地址映射机制,就像在系统。最简单的存储系统使用普通的地址映射机制,就像在一些简单的单片机系统中一样,地址空间的分配方式是固定一些简单的单片机系统中一样,地址空间的分配方式是固定的,系统中各部分都使用物理地址。而一些复杂的系统可能的,系统中各部分都使用物理地址。而一些复杂的系统可能包括一种或者多种下面的技术,从而可以提供功能更为强大包括一种或者多种下面的技术,从而可以提供功能更为强大的存储系统:的存储系统:系统中可能包含多种类型的存储器件通过使用Cache及Write Buffer技术,可以缩小处理器和存储系统的速度差别,从而提高系统的整体性能。内存管理部件使用内存映射技术实现虚拟空间到物理空间的映射引入存储保护机制,增强系统的安全性。引入一些机制,保证将I/O操作映射成内存操作后,各种I/O操作能够得到正确的结果。35.1 ARM存储系统概述存储系统概述本章中主要介绍以下内容。在介绍相关内容时,将本章中主要介绍以下内容。在介绍相关内容时,将以以LinkUp公司的通用公司的通用ARM芯片芯片L7205作为例子。作为例子。ARM中用于存储管理的系统控制协处理器CP15。ARM中的存储管理部件MMU(Memory Management Unit)。ARM中的Cache及Write Buffer技术。快速进程上下文切换技术。45.2 ARM中用于存储管理的系统控制协处理器中用于存储管理的系统控制协处理器CP15CP15可以包含可以包含16个个32位的寄存器,其编号为位的寄存器,其编号为015。实际。实际上,对于某些编号的寄存器,可能对应有多个物理寄存器,上,对于某些编号的寄存器,可能对应有多个物理寄存器,在指令中可指定特定的标志位来区分这些物理寄存器。这种在指令中可指定特定的标志位来区分这些物理寄存器。这种机制有些类似于机制有些类似于ARM中的寄存器,当处于不同的处理器模中的寄存器,当处于不同的处理器模式时,某些式时,某些ARM寄存器可能是不同的物理寄存器,比如对寄存器可能是不同的物理寄存器,比如对于寄存器于寄存器SPSR,每一种处理器模式下都对应一个独立的物,每一种处理器模式下都对应一个独立的物理寄存器理寄存器(用户模式和系统模式对应同样的物理寄存器,这用户模式和系统模式对应同样的物理寄存器,这是一个例外是一个例外)。CP15中的寄存器可能是只读的,也可能是只写的,还有一中的寄存器可能是只读的,也可能是只写的,还有一些是可以读写的。对于每一种寄存器,将会详细介绍:些是可以读写的。对于每一种寄存器,将会详细介绍:寄存器的访问类型(只读/只写/读写)。各种访问操作对于寄存器的作用。寄存器是否对应有多个物理寄存器。寄存器的具体作用。55.2.1 访问访问CP15寄存器的指令寄存器的指令访问访问CP15寄存器的指令有下面两种。寄存器的指令有下面两种。MCR:ARM寄存器到协处理器寄存器的数据传送指令。MRC:协处理器寄存器到ARM寄存器的数据传送指令。MCR指令和指令和MRC指令只能在处理器模式是系统模指令只能在处理器模式是系统模式时执行,在用户模式下执行式时执行,在用户模式下执行MCR指令和指令和MRC指指令将会触发未定义指令的异常中断。令将会触发未定义指令的异常中断。65.2.2 CP15中的寄存器中的寄存器1. CP15中的寄存器中的寄存器C0(1)标识符寄存器ARM7之后的处理器ARM7处理器ARM7之前的处理器(2)Cache类型标识符寄存器2. CP15中的寄存器中的寄存器C1CP15中的寄存器C1是一个控制寄存器,它包括以下控制功能:禁止/使能MMU以及其他的与存储系统相关的功能。配置存储系统以及ARM处理器中的相关部分的工作方式。75.3 存储器管理单元存储器管理单元MMU5.3.1 存储器管理单元存储器管理单元MMU概述概述在ARM系统中,存储器管理单元MMU主要完成以下工作:虚拟存储空间到物理存储空间的映射。在ARM中采用了页式虚拟存储管理。它把虚拟地址空间分成一个个固定大小的块,每一块称为一页,把物理内存的地址空间也分成同样大小的页。页的大小可以分为粗粒度和细粒度两种。MMU就要实现从虚拟地址到物理地址的转换。存储器访问权限的控制。设置虚拟存储空间的缓冲的特性。85.3.1 存储器管理单元MMU概述页表页表(Translate Table)是实现上述这些功能的重要是实现上述这些功能的重要手段,它是一个位于内存中的表。手段,它是一个位于内存中的表。页表存放在内存中,系统通常用一个寄存器来保存页表存放在内存中,系统通常用一个寄存器来保存页表的基地址。在页表的基地址。在ARM中,系统控制协处理器中,系统控制协处理器CP15的寄存器的寄存器C2用来保存页表的基地址。用来保存页表的基地址。当当CPU需要访问内存时,先在需要访问内存时,先在TLB中查找需要的地中查找需要的地址变换条目。如果该条目不存在,址变换条目。如果该条目不存在,CPU从位于内存从位于内存中的页表中查询,并把相应的结果添加到中的页表中查询,并把相应的结果添加到TLB中。中。这样,当这样,当CPU下一次又需要该地址变换条目时,就下一次又需要该地址变换条目时,就可以从可以从TLB中直接得到了,从而使地址变换的速度中直接得到了,从而使地址变换的速度大大加快。大大加快。95.3.1 存储器管理单元MMU概述当内存中的页表内容改变,或者通过修改系统控制协处理器当内存中的页表内容改变,或者通过修改系统控制协处理器CP15的寄的寄存器存器C2使用新的页表时,使用新的页表时,TLB中的内容需要全部清除。中的内容需要全部清除。MMU提供了相提供了相关的硬件支持这种操作。系统控制协处理器关的硬件支持这种操作。系统控制协处理器CP15的寄存器的寄存器C8用来控制用来控制清除清除TLB内容的相关操作。内容的相关操作。MMU可以将某些地址变换条目锁定可以将某些地址变换条目锁定(Locked Down)在在TLB中,从而使中,从而使得进行与该地址变换条目相关的地址变换速度保持很快。在得进行与该地址变换条目相关的地址变换速度保持很快。在MMU中,中,寄存器寄存器C10用于控制用于控制TBL内容的锁定。内容的锁定。MMU可以将整个存储空间分为最多可以将整个存储空间分为最多16个域个域(Domain)。每个域对应一定。每个域对应一定的内存区域,该区域具有相同的访问控制属性。的内存区域,该区域具有相同的访问控制属性。MMU中,寄存器中,寄存器C3用用于控制与域相关的属性的配置。于控制与域相关的属性的配置。当存储访问失效时,当存储访问失效时,MMU提供了相应的机制用于处理这种情况。在提供了相应的机制用于处理这种情况。在MMU中,寄存器中,寄存器C5和寄存器和寄存器C6用于支持这些机制。用于支持这些机制。105.3.2 禁止禁止/使能使能MMUCP15的寄存器的寄存器C1的位的位0用于控制禁止用于控制禁止/使能使能MMU。当。当CP15的寄存器的寄存器C1的位的位0设置成设置成0时,禁时,禁止止MMU;当;当CP15的寄存器的寄存器C1的位的位0设置成设置成1时,时,使能使能MMU。下面的指令使能。下面的指令使能MMU: MRC P15,0,R0,C1,0, 0ORR R0,#01MCR P15,0,R0,C1,0,01. 使能使能MMU时存储访问过程时存储访问过程2. 禁止禁止MMU时存储访问过程时存储访问过程3. 禁止禁止/使能使能MMU时应注意的问题时应注意的问题115.3.3 MMU中的地址变换过程中的地址变换过程ARM支持的存储块大小有以下几种。支持的存储块大小有以下几种。段(section):是大小为1MB的存储块。大页(Large Pages):是大小为64KB的存储块。小页(Small Pages):是大小为4KB的存储块。极小页(Tiny Pages):是大小为1KB的存储块。在在MMU中采用下面两级页表实现上述地址映射:中采用下面两级页表实现上述地址映射:一级页表中包含有以段为单位的地址变换条目以及指向二级页表的指针。一级页表实现的地址映射粒度较大。二级页表中包含以大页和小页为单位的地址变换条目。其中,一种类型的二级页表还包含有以极小页为单位的地址变换条目。125.3.3 MMU中的地址变换过程中的地址变换过程1. 基于一级页表的地址变换过程基于一级页表的地址变换过程(1)基于一级页表的地址变换过程(2)段描述符及其地址变换过程(3)粗粒度页表描述符(4)细粒度页表描述符 31 14 13 0 CP15 的寄存器 C2 31 20 19 0 虚拟地址 31 14 13 2 1 0 合成的页表中相应地址转换条目的地址 页表的基地址 应为 0 页表内序号 页表的基地址 页表内序号 0 0 135.3.3 MMU中的地址变换过程中的地址变换过程2. 基于二级页表的地址变换过程基于二级页表的地址变换过程二级页表有两种:粗粒度的二级页表和细粒度的二级页表。(1) 大页描述符以及相关的地址变换(2) 小页描述符以及相关的地址变换(3) 极小页描述符以及相关的地址变换145.3.4 MMU中的存储访问权限控制中的存储访问权限控制在在MMU中,寄存器中,寄存器C1的的R、S控制位和页表中地址控制位和页表中地址转换条目中的访问权限控制位联合作用,控制存储转换条目中的访问权限控制位联合作用,控制存储访问的权限。具体规则如表访问的权限。具体规则如表5.20所示。所示。APS R特权级的访问权限用户级的访问权限0b000 0没有访问权限没有访问权限0b001 0只读没有访问权限0b000 1只读只读0b001 1不可预知不可预知0b01X X读/写没有访问权限0b10X X读/写只读0b11X X读/写读/写155.3.5 MMU中的域中的域MMU中的域指的是一些段、大页或者小页的集中的域指的是一些段、大页或者小页的集合。合。ARM支持最多支持最多16个域,每个域的访问控制特个域,每个域的访问控制特性由性由CP15中的寄存器中的寄存器C3中的两位来控制。这样就中的两位来控制。这样就能很方便地将某个域的地址空间包含在虚拟存储空能很方便地将某个域的地址空间包含在虚拟存储空间中,或者排除在虚拟存储空间之外。间中,或者排除在虚拟存储空间之外。CP15中的寄存器中的寄存器C3的格式如下所示。的格式如下所示。D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0165.3.6 关于快表的操作关于快表的操作1. 使无效使无效(Invalidate)快表的内容快表的内容2. 锁定快表的内容锁定快表的内容(1)寄存器C10(2)锁定TLB175.3.7 ARM中的存储访问失效中的存储访问失效在在ARM中有下面两种机制可以检测存储访问失效,中有下面两种机制可以检测存储访问失效,并进而中止并进而中止CPU的执行:的执行:当MMU检测到存储访问失效时,它可以向CPU报告该情况,并将存储访问失效的相关信息保存到寄存器中。这种机制称为MMU失效(MMU Fault)。外部存储系统也可以向CPU报告存储访问失效。这种机制称为外部存储访问中止(External Abort)。上述两种情况统称为存储访问中止上述两种情况统称为存储访问中止(Abort)。这时。这时称造成存储访问中止的存储访问被中止称造成存储访问中止的存储访问被中止(Aborted)。如果存储访问中止发生在数据访问周。如果存储访问中止发生在数据访问周期,期,CPU将产生数据访问中止异常中断。如果存储将产生数据访问中止异常中断。如果存储访问中止发生在指令预取周期,当该指令执行时,访问中止发生在指令预取周期,当该指令执行时,CPU产生指令预取异常中断。产生指令预取异常中断。185.3.7 ARM中的存储访问失效中的存储访问失效1. MMU失效失效(1)MMU中与存储访问失效相关的寄存器(2)MMU存储访问失效的类型2. 外部存储访问失效外部存储访问失效读操作。非缓冲的写操作。一级描述符的获取。二级描述符的获取。非缓冲的存储区域中的信号量操作。195.4 高速缓冲存储器和写缓冲区高速缓冲存储器和写缓冲区通常通常ARM处理器的主频为几十处理器的主频为几十MHz,有的已经达,有的已经达到到200MHz。而一般的主存储器使用动态存储器。而一般的主存储器使用动态存储器(DRAM),其存储周期仅为,其存储周期仅为100ns200ns。这样,。这样,如果指令和数据都存放在主存储器中,主存储器的如果指令和数据都存放在主存储器中,主存储器的速度将会严重制约整个系统的性能。速度将会严重制约整个系统的性能。高速缓冲存储高速缓冲存储器器(Cache)和写缓冲区和写缓冲区(Write Buffers)位于主存储位于主存储器和器和CPU之间,主要用来提高存储系统的性能。本之间,主要用来提高存储系统的性能。本节主要介绍与这两种技术相关的基本概念。节主要介绍与这两种技术相关的基本概念。1993年著名的ARM7诞生,之后的ARM9、ARM11风靡世界。随后出现了Cortex系列。实际上,Cortex就是ARM12。在“全国第七届嵌入式系统与单片机学术交流暨Cortex有两大分支:高性能的A8系列,主频可达到1GHz;低成本、计划与8/16位MCU竞争的M3系列205.4.1 基本概念基本概念高速缓冲存储器是全部用硬件来实现的,因此,它不仅对应用程序员是高速缓冲存储器是全部用硬件来实现的,因此,它不仅对应用程序员是透明的,而且对系统程序员也是透明的。透明的,而且对系统程序员也是透明的。Cache与主存储器之间以块与主存储器之间以块(Cache Line)为单位进行数据交换。为单位进行数据交换。不同系统中,不同系统中,Cache的块大小也是不同的。通常的块大小也是不同的。通常Cache的块大小为几个的块大小为几个字。字。写缓冲区是由一些高速的存储器构成的。它主要用来优化向主存储器中写缓冲区是由一些高速的存储器构成的。它主要用来优化向主存储器中的写入操作。当的写入操作。当CPU进行向主存储器中的写入操作时,它先将数据写入进行向主存储器中的写入操作时,它先将数据写入到写缓冲区中,由于写缓冲区的访问速度很高,这种写入操作的速度将到写缓冲区中,由于写缓冲区的访问速度很高,这种写入操作的速度将很高。然后很高。然后CPU就可以进行下面的操作。写缓冲区在适当的时候以较低就可以进行下面的操作。写缓冲区在适当的时候以较低的速度将数据写入到主存储器中相应的位置。的速度将数据写入到主存储器中相应的位置。通过引入通过引入Cache和写缓冲区,存储系统的性能得到了很大的提高,但同和写缓冲区,存储系统的性能得到了很大的提高,但同时也带来了一些问题。比如,由于数据将存在于系统中不同的物理位时也带来了一些问题。比如,由于数据将存在于系统中不同的物理位置,可能造成数据的不一致性;由于写缓冲区的优化作用,可能有些写置,可能造成数据的不一致性;由于写缓冲区的优化作用,可能有些写操作的执行顺序不是用户期望的顺序,从而造成操作错误。操作的执行顺序不是用户期望的顺序,从而造成操作错误。215.4.2 Cache的工作原理和地址映像方法的工作原理和地址映像方法1. Cache的工作原理的工作原理2. Cache地址映像和变换方法地址映像和变换方法(1)全相联映像方式(2)直接映像方式(3)组相联映像方式225.4.3 Cache的分类的分类1. 统一统一/独立的数据独立的数据Cache和指令和指令Cache2. 写通写通(Write-through)Cache和写回和写回(Write-back)Cache可靠性与主存的通信量控制的复杂性硬件实现的代价3. 读操作分配读操作分配Cache和写操作分配和写操作分配Cache235.4.4 Cache的替换算法的替换算法在把主存地址变换成在把主存地址变换成Cache地址的过程中,如果发现地址的过程中,如果发现Cache块失效,则块失效,则需要从主存中调入一个新块到需要从主存中调入一个新块到Cache中。而来自主存中的这个新块往往中。而来自主存中的这个新块往往可以装入到可以装入到Cache的多个块中。当可以装入这个新块的几个的多个块中。当可以装入这个新块的几个Cache块都块都已经装满时,就要使用已经装满时,就要使用cache替换算法,从那些块中找出一个不常用的替换算法,从那些块中找出一个不常用的块,把它调回到主存中原来存放它的那个地方,腾出一个块存放从主存块,把它调回到主存中原来存放它的那个地方,腾出一个块存放从主存中调来的新块。在中调来的新块。在ARM中常用的替换算法有两种:随机替换算法和轮中常用的替换算法有两种:随机替换算法和轮转法。转法。(1)随机替换算法通过一个伪随机数发生器产生一个伪随机数,用新块将编号为该伪随机数的Cache块替换掉。这种算法很简单,易于实现。但是它没有考虑程序的局部性特点,也没有利用历史上的块地址流的分布情况,因而效果较差。同时这种算法不易预测最坏情况下Cache的性能。(2)轮转法维护一个逻辑的计数器,利用该计数器依次选择将要被替换出去的Cache块。这种算法容易预测最坏情况下Cache的性能。但它有一个明显的缺点,在程序发生很小的变化时,可能造成Cache平均性能急剧的变化。245.4.5 缓冲技术的使用注意事项缓冲技术的使用注意事项通常使用通常使用Cache和写缓冲可以提高系统的性能,但是由于和写缓冲可以提高系统的性能,但是由于Cache和写缓和写缓冲区的使用可能改变访问主存的数量、类型和时间,这些技术对于有些冲区的使用可能改变访问主存的数量、类型和时间,这些技术对于有些类型的存储访问是不适合的。本小节介绍使用这些技术时的一些限制。类型的存储访问是不适合的。本小节介绍使用这些技术时的一些限制。Cache通常需要存储器件具有下面的特性:通常需要存储器件具有下面的特性:读取操作将返回最后一次写入的内容,而且没有其他的副作用。写操作除了影响目标单元的内容外,没有其他的副作用。对同一目标单元的两次连续读取操作将得到相同的结果。对同一目标单元的两次连续写取操作将会把第2次写操作的值写入目标单元,第1次写操作将没有意义。将存储区域设置成将存储区域设置成unbuffered是为了防止延迟存储访问操作的执行时是为了防止延迟存储访问操作的执行时间。对于写回间。对于写回Cache如果设置如果设置cached,必然造成存储访问操作执行的,必然造成存储访问操作执行的延迟,因而写回类型的延迟,因而写回类型的Cache不能设置成不能设置成cached/buffered。在在C语言中,是通过使用关键词语言中,是通过使用关键词volatile声明存储器映射的声明存储器映射的I/O空间,来空间,来防止编译器在优化时删掉有用的存储访问操作的。防止编译器在优化时删掉有用的存储访问操作的。255.4.6 存储系统的一致性问题存储系统的一致性问题1. 地址映射关系变化造成的数据不一致地址映射关系变化造成的数据不一致2. 指令指令Cache的数据一致性问题的数据一致性问题3. DMA造成的数据不一致问题造成的数据不一致问题将DMA访问的存储区域设置成非缓冲的(uncachable及unbufferable)。将DMA访问的存储区域所涉及的数据Cache块设置成无效,或者清空数据Cache。清空写缓冲区(执行写缓冲区中延迟的所有写操作)。在DMA操作期间限制处理器访问DMA所访问的存储区域。265.4.7 Cache内容锁定内容锁定这里所说的这里所说的N锁定块被锁定,是指编号为锁定块被锁定,是指编号为0N-1的的锁定块被锁定在锁定块被锁定在Cache中,编号为中,编号为NASSOCIATIVITY-1的锁定块可用于正常的的锁定块可用于正常的cache替替换操作。换操作。实现实现N锁定块被锁定的操作序列如下。锁定块被锁定的操作序列如下。(1)确保在整个锁定过程中不会发生异常中断。否则,必须保证与该异常中断相关的代码和数据必须位于非缓冲(uncachable)的存储区域。(2)如果锁定的是指令Cache或者统一的Cache,必须保证锁定过程所执行的代码位于非缓冲的存储区域。(3)如果锁定的是数据Cache或者统一的Cache,必须保证锁定过程所涉及的数据位于非缓冲的存储区域。275.4.7 Cache内容锁定内容锁定(4)确保将要被锁定的代码和数据位于缓冲(cacheable)的存储区域。(5)确保将要被锁定的代码和数据尚未在Cache中,可以通过使无效相应的cache中的块达到这一目的。(6)对于I=0到N-1,重复执行下面的操作:index=I写入寄存器C9,当使用B格式的锁定寄存器时,令L=1。对于锁定块I中的各Cache块内容从主存中预取到Cache中。对于数据Cache和统一Cache可以使用LDR指令读取一个位于该块中的数据,将该块预取到Cache中;对于指令Cache,通过操作寄存器C7,将相应的块预取到指令Cache中。(7)将index=N写入寄存器C9,当使用B格式的锁定寄存器时,令L=0。解除解除N锁定块的锁定只需执行下面的操作:将锁定块的锁定只需执行下面的操作:将index=0写入写入寄存器寄存器C9。当使用。当使用B格式的锁定寄存器时,令格式的锁定寄存器时,令L=0。285.4.8 与与Cache和写缓冲区相关的编程接口和写缓冲区相关的编程接口1. 寄存器寄存器C1中的相关位中的相关位2. 寄存器寄存器C73. 寄存器寄存器C9(1)寄存器C9的格式(2)访问寄存器C9的指令295.5 快速上下文切换技术快速上下文切换技术快速上下文切换技术快速上下文切换技术(Fast Context Switch Extension,FCSE)通过修改系统中不同进程的通过修改系统中不同进程的虚拟地址,避免在进行进程间切换时造成的虚拟虚拟地址,避免在进行进程间切换时造成的虚拟地址到物理地址的重映射,从而提高系统的性地址到物理地址的重映射,从而提高系统的性能。本节介绍快速上下文切换技术的原理及其编能。本节介绍快速上下文切换技术的原理及其编程接口。程接口。305.5.1 快速上下文切换技术原理快速上下文切换技术原理快速上下文切换技术快速上下文切换技术(FCSE)的引入避免了这种开销。它位于的引入避免了这种开销。它位于CPU和和MMU之间,如果两个进程使用了同样的虚拟地址空间,则对之间,如果两个进程使用了同样的虚拟地址空间,则对CPU而而言,两个进程使用了同样的虚拟地址空间;快速上下文切换机构对各进言,两个进程使用了同样的虚拟地址空间;快速上下文切换机构对各进程的虚拟地址进行变换,这样,系统中除了程的虚拟地址进行变换,这样,系统中除了CPU之外的部分看到的是经之外的部分看到的是经过快速上下文切换机制变换的虚拟地址。快速上下文切换机制将各进程过快速上下文切换机制变换的虚拟地址。快速上下文切换机制将各进程的虚拟空间变换成不同的虚拟空间。这样,在进行进程间切换时,就不的虚拟空间变换成不同的虚拟空间。这样,在进行进程间切换时,就不需要进行虚拟地址到物理地址的重映射了。需要进行虚拟地址到物理地址的重映射了。快速上下文切换机构将快速上下文切换机构将CPU发出的每个虚拟地址按照上述的规则进行变发出的每个虚拟地址按照上述的规则进行变换,然后发送到系统中的其他部分。变换过程如图换,然后发送到系统中的其他部分。变换过程如图5.12所示。所示。315.5.2 快速上下文切换技术编程接口快速上下文切换技术编程接口CP15中的寄存器中的寄存器C13用于快速上下文切换。其编用于快速上下文切换。其编码格式如下所示。码格式如下所示。31 25 24 0访问寄存器访问寄存器C13的指令格式如下所示:的指令格式如下所示:MCR p15, 0, , , c0, 0MRC p15, 0, , , c0, 0当当PID的值为的值为0时,时,MVA=VA,相当于禁止了,相当于禁止了FCSE。系统复位后。系统复位后PID即为即为0。当当PID的值不为的值不为0时,相当于使能了时,相当于使能了FCSE。PID0325.6 与存储系统相关的程序设计指南与存储系统相关的程序设计指南本节主要介绍与本节主要介绍与ARM存储系统相关的程序设计用到存储系统相关的程序设计用到的一些概念。如果说前面的几章介绍了的一些概念。如果说前面的几章介绍了ARM存储系存储系统内部的结构,本节是从外部来看统内部的结构,本节是从外部来看ARM的存储系的存储系统,即统,即ARM存储系统提供的对外接口。当用户通过存储系统提供的对外接口。当用户通过这些接口来访问这些接口来访问ARM存储系统时,需要遵守一定的存储系统时,需要遵守一定的规则,本节将介绍这些规则。规则,本节将介绍这些规则。335.6.1 地址空间地址空间ARM体系使用单一的普通地址空间。该地址空间的体系使用单一的普通地址空间。该地址空间的大小为大小为232个个8位字节。这些字节单元的地址是一个位字节。这些字节单元的地址是一个无符号的无符号的32位数值,其取值范围为位数值,其取值范围为0232-1。ARM的地址空间也可以看作是的地址空间也可以看作是230个个32位的字单位的字单元。这些字单元的地址可以被元。这些字单元的地址可以被4整除,也就是说,整除,也就是说,该地址的低两位为该地址的低两位为0b00。地址为。地址为A的字数据包括地的字数据包括地址为址为A、A+1、A+2、A+3四个字节单元的内容。四个字节单元的内容。在在ARM版本版本4及以上的版本中,及以上的版本中,ARM的地址空间也的地址空间也可以看作是可以看作是231个个16位的半字单元。这些半字单元位的半字单元。这些半字单元的地址可以被的地址可以被2整除,也就是说,该地址的最低位整除,也就是说,该地址的最低位为为 0b0。地址为。地址为A的半字数据包括地址为的半字数据包括地址为A、A+1两两个字节单元的内容。个字节单元的内容。345.6.1 地址空间地址空间各存储单元的地址作为各存储单元的地址作为32位的无符号数,可以进行常规的整数运算。这位的无符号数,可以进行常规的整数运算。这些运算的结果进行些运算的结果进行232取模。即运算结果发生上溢出和下溢出时,地址取模。即运算结果发生上溢出和下溢出时,地址将会发生卷绕。比如,如果运算结果为将会发生卷绕。比如,如果运算结果为(0 xffffffff+0 x80),实际上地址值,实际上地址值为为0 x80。为了使程序便于和将来版本兼容,在程序中尽量使地址运算的。为了使程序便于和将来版本兼容,在程序中尽量使地址运算的结果在结果在00 xffffffff之间。如果程序中跳转指令的目标地址依赖于地址之间。如果程序中跳转指令的目标地址依赖于地址值卷绕,则指令执行的结果将不可预知。所以在程序中应该保证向前跳值卷绕,则指令执行的结果将不可预知。所以在程序中应该保证向前跳转不超过转不超过0 xffffffff,向后跳转不超过,向后跳转不超过0 x0。在程序的正常执行时,每执行一条在程序的正常执行时,每执行一条ARM指令,当前指令计数器值加指令,当前指令计数器值加4个个字节;每执行一条字节;每执行一条Thumb指令,当前指令计数器值加指令,当前指令计数器值加2个字节。但是,个字节。但是,当发生地址值上溢出时,执行的结果将是不可预知的。当发生地址值上溢出时,执行的结果将是不可预知的。LDC、LDM、STC及及STM指令可能访问一段连续的存储单元。每执行指令可能访问一段连续的存储单元。每执行一次读取一次读取/写入操作,目标单元的地址值加写入操作,目标单元的地址值加4个字节。如果这种地址更新个字节。如果这种地址更新造成地址值上溢出,则指令执行的结果将是不可预知的。造成地址值上溢出,则指令执行的结果将是不可预知的。355.6.2 存储器的格式存储器的格式在在ARM中,如果地址中,如果地址A是字对齐的,有下面几种:是字对齐的,有下面几种:地址为地址为A的字单元包括字节单元的字单元包括字节单元A、A+1、A+2及及A+3。地址为A的半字单元包括字节单元A、A+1。地址为A+2的半字单元包括字节单元A+2、A+3。地址为A的字单元包括半字单元A、A+2。这样,每个字单元中包含这样,每个字单元中包含4个字节单元或者两个半个字节单元或者两个半字单元;一个半字单元中包含两个字节单元。但是字单元;一个半字单元中包含两个字节单元。但是在字单元中,在字单元中,4个字节哪一个是高位字节,哪一个个字节哪一个是高位字节,哪一个是低位字节则有两种不同的格式:是低位字节则有两种不同的格式:Big-endian格式格式和和Little-endian格式。格式。365.6.3 非对齐的存储访问操作非对齐的存储访问操作1. 非对齐的指令预取操作非对齐的指令预取操作2. 非对齐的数据访问操作非对齐的数据访问操作执行的结果不可预知。忽略字单元地址的低两位的值,即访问地址为(Address AND 0XFFFFFFC)的字单元;忽略半字单元地址的最低位的值,即访问地址为(Address AND 0XFFFFFFE)的半字单元。忽略字单元地址值中的低两位的值;忽略半字单元地址的最低位的值。由存储系统实现这种“忽略”。也就是说,这时该地址值原封不动地送到存储系统。375.6.4 指令预取和自修改代码指令预取和自修改代码在在ARM中允许指令预取。在中允许指令预取。在CPU执行当前指令的同时,可以从存储器执行当前指令的同时,可以从存储器中预取其后的若干条指令,具体预取多少条指令,不同的中预取其后的若干条指令,具体预取多少条指令,不同的ARM实现中实现中有不同的数值。有不同的数值。当用户读取当用户读取PC寄存器的值时,返回的是当前指令下面第寄存器的值时,返回的是当前指令下面第2条指令的地条指令的地址。址。预取的指令并不一定能够得到执行。预取的指令并不一定能够得到执行。正如在不同的正如在不同的ARM实现中,预取的指令条数可能不同,当发生程序跳实现中,预取的指令条数可能不同,当发生程序跳转时,不同的转时,不同的ARM实现中采用的跳转预测算法也可能不同。实现中采用的跳转预测算法也可能不同。自修改代码指的是代码在执行过程中可能修改自身。自修改代码指的是代码在执行过程中可能修改自身。对于支持指令预取的对于支持指令预取的ARM系统,自修改代码可能带来潜在的问题。当系统,自修改代码可能带来潜在的问题。当指令被预取后,在该指令被执行前,如果有数据访问指令修改了位于主指令被预取后,在该指令被执行前,如果有数据访问指令修改了位于主存中的该指令,这时被预取的指令和主存中对应的指令不同,从而可能存中的该指令,这时被预取的指令和主存中对应的指令不同,从而可能使执行的结果发生错误。使执行的结果发生错误。385.6.5 IMBIMB是一段特定的代码序列,对于每种不同的是一段特定的代码序列,对于每种不同的ARM实现,对应有不同的实现,对应有不同的IMB。IMB在新的指令被保存在新的指令被保存到主存中后,在该指令被实际执行之前执行,使得到主存中后,在该指令被实际执行之前执行,使得可自修改代码在可自修改代码在ARM体系中能够可靠地执行。体系中能够可靠地执行。在很多在很多ARM系统中,系统中,IMB中需要的很多指令中需要的很多指令(如使如使无效无效Cache等操作等操作)只能运行在系统模式下。只能运行在系统模式下。对于包含对于包含24位立即数的位立即数的SWI指令,通常使用下面的指令,通常使用下面的SWI功能调用提供功能调用提供IMB功能:功能: SWI 0XF00000395.6.5 IMB同样,在其他的一些场合也需要在适当的时候运行同样,在其他的一些场合也需要在适当的时候运行适当的适当的IMB。下面介绍这些。下面介绍这些IMB的应用场合。的应用场合。(1)对于采用了虚拟地址到物理地址映射的系统,如果在指令预取之后和该指令得到实际执行之前,虚拟地址到物理地址的映射关系发生了改变,这时也需要运行适当的IMB。(2)如果在指令预取之后和该指令得到实际执行之前,该指令所涉及到的存储区域的访问权限发生了改变(由允许访问变成了不允许访问,或者由不允许访问变成了允许访问),这时也需要运行适当的IMB。这种情况下的IMB中,一般不需要使无效Cache中相关的内容,运行代价相对较低。405.6.6 存储器映射的存储器映射的I/O空间空间在在ARM中,中,I/O操作通常被映射成存储器操作。操作通常被映射成存储器操作。I/O的输出操的输出操作可以通过存储器写入操作实现;作可以通过存储器写入操作实现;I/O的输入操作可以通过的输入操作可以通过存储器读取操作实现。这样存储器读取操作实现。这样I/O空间就被映射成了存储空空间就被映射成了存储空间。这些存储器映射的间。这些存储器映射的I/O空间不满足空间不满足Cache所要求的上述所要求的上述特性。特性。由于写缓冲技术可能推迟写操作,它同样不适合对于存储器由于写缓冲技术可能推迟写操作,它同样不适合对于存储器映射的映射的I/O空间的操作。比如当空间的操作。比如当CPU向中断控制器的向中断控制器的I/O端口端口写写ACK,清除当前中断请求标志位,并重新使能中断请,清除当前中断请求标志位,并重新使能中断请求。如果使用了写缓冲技术,求。如果使用了写缓冲技术,CPU的写操作将被先写入高的写操作将被先写入高速的缓冲区。高速的缓冲区可能在以后某个时间再将结果写速的缓冲区。高速的缓冲区可能在以后某个时间再将结果写到到I/O端口,这样就造成一种假象,似乎外设又发出了中断端口,这样就造成一种假象,似乎外设又发出了中断请求。请求。415.6.6 存储器映射的存储器映射的I/O空间空间将存储区域设置成将存储区域设置成unbuffered是为了防止延迟存储是为了防止延迟存储访问操作的执行时间。对于写回访问操作的执行时间。对于写回Cache如果设置如果设置cached必然造成存储访问操作执行的延迟,因而必然造成存储访问操作执行的延迟,因而写回类型的写回类型的Cache不能设置成不能设置成cached/buffered。将存储器映射的将存储器映射的I/O空间设置成空间设置成uncached是为了有是为了有效地防止硬件系统优化时删掉有用的存储访问操效地防止硬件系统优化时删掉有用的存储访问操作。如果在高级语言中访问存储器映射的作。如果在高级语言中访问存储器映射的I/O空间空间时,仅仅将存储器映射的时,仅仅将存储器映射的I/O空间设置成空间设置成uncached,是不够的。还必须告诉编译器不要在,是不够的。还必须告诉编译器不要在优化时删掉有用的存储访问操作。在优化时删掉有用的存储访问操作。在C语言中是通语言中是通过使用关键词过使用关键词volatile声明存储器映射的声明存储器映射的I/O空间来空间来防止编译器在优化时删掉有用的存储访问操作。防止编译器在优化时删掉有用的存储访问操作。425.7 ARM存储系统的实例存储系统的实例LinkUp公司生产的公司生产的L7205芯片是一款芯片是一款ARM720T微处理器。微处理器。它内部包含了功能强大的它内部包含了功能强大的MMU。可以连接多种存储设备,。可以连接多种存储设备,包括包括512字节的芯片内字节的芯片内ROM,5KB的芯片内的芯片内SRAM,可以在,可以在芯片外扩充芯片外扩充SRAM/Flash,可以在芯片外扩充,可以在芯片外扩充SDRAM。其。其存储器可以被存储器可以被CPU、DMA以及以及LCD部分访问。部分访问。L7205SDB是是LinkUp设计的基于设计的基于L7205芯片的评价板,该评价板包含芯片的评价板,该评价板包含一个一个L7205芯片、芯片、32MB的的SDRAM、两个、两个SRAM/Flash扩展扩展槽。系统有两种启动方式,可以通过控制面板上的跳线进行槽。系统有两种启动方式,可以通过控制面板上的跳线进行选择。选择。本章将比较详细地描述本章将比较详细地描述L7205SDB存储系统及其配置方法,存储系统及其配置方

    注意事项

    本文(ARM体系结构与编程第版第章.ppt)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开