ARM体系结构与编程版课件

上传人:文**** 文档编号:240605320 上传时间:2024-04-24 格式:PPTX 页数:44 大小:615.85KB
收藏 版权申诉 举报 下载
ARM体系结构与编程版课件_第1页
第1页 / 共44页
ARM体系结构与编程版课件_第2页
第2页 / 共44页
ARM体系结构与编程版课件_第3页
第3页 / 共44页
资源描述:

《ARM体系结构与编程版课件》由会员分享,可在线阅读,更多相关《ARM体系结构与编程版课件(44页珍藏版)》请在装配图网上搜索。

1、第第5章章ARM的存储系统的存储系统与其他的中、低档与其他的中、低档单片机不同,片机不同,ARM处理器中理器中可以包含一个存可以包含一个存储管理部件。本章介管理部件。本章介绍ARM体体系中两种典型的存系中两种典型的存储管理管理实现机制。并在最后机制。并在最后给出一个出一个实例。例。15.1ARM存储系统概述存储系统概述ARM存存储系系统的体系的体系结构可以适构可以适应多种不同的嵌入式多种不同的嵌入式应用用系系统。最。最简单的存的存储系系统使用普通的地址映射机制,就像在使用普通的地址映射机制,就像在一些一些简单的的单片机系片机系统中一中一样,地址空,地址空间的分配方式是固定的分配方式是固定的,系

2、的,系统中各部分都使用物理地址。而一些复中各部分都使用物理地址。而一些复杂的系的系统可能可能包括一种或者多种下面的技包括一种或者多种下面的技术,从而可以提供功能更,从而可以提供功能更为强大大的存的存储系系统:系统中可能包含多种类型的存储器件通过使用Cache及WriteBuffer技术,可以缩小处理器和存储系统的速度差别,从而提高系统的整体性能。内存管理部件使用内存映射技术实现虚拟空间到物理空间的映射引入存储保护机制,增强系统的安全性。引入一些机制,保证将I/O操作映射成内存操作后,各种I/O操作能够得到正确的结果。25.1ARM存储系统概述存储系统概述本章中主要介本章中主要介绍以下内容。在介

3、以下内容。在介绍相关内容相关内容时,将,将以以LinkUp公司的通用公司的通用ARM芯片芯片L7205作作为例子。例子。ARM中用于存储管理的系统控制协处理器CP15。ARM中的存储管理部件MMU(MemoryManagementUnit)。ARM中的Cache及WriteBuffer技术。快速进程上下文切换技术。35.2ARM中用于存储管理的系统控制协处理器中用于存储管理的系统控制协处理器CP15CP15可以包含可以包含16个个32位的寄存器,其位的寄存器,其编号号为015。实际上,上,对于某些于某些编号的寄存器,可能号的寄存器,可能对应有多个物理寄存器,有多个物理寄存器,在指令中可指定特定

4、的在指令中可指定特定的标志位来区分志位来区分这些物理寄存器。些物理寄存器。这种种机制有些机制有些类似于似于ARM中的寄存器,当中的寄存器,当处于不同的于不同的处理器模理器模式式时,某些,某些ARM寄存器可能是不同的物理寄存器,比如寄存器可能是不同的物理寄存器,比如对于寄存器于寄存器SPSR,每一种,每一种处理器模式下都理器模式下都对应一个独立的物一个独立的物理寄存器理寄存器(用用户模式和系模式和系统模式模式对应同同样的物理寄存器,的物理寄存器,这是一个例外是一个例外)。CP15中的寄存器可能是只中的寄存器可能是只读的,也可能是只写的,的,也可能是只写的,还有一有一些是可以些是可以读写的。写的。

5、对于每一种寄存器,将会于每一种寄存器,将会详细介介绍:寄存器的访问类型(只读/只写/读写)。各种访问操作对于寄存器的作用。寄存器是否对应有多个物理寄存器。寄存器的具体作用。45.2.1访问访问CP15寄存器的指令寄存器的指令访问CP15寄存器的指令有下面两种。寄存器的指令有下面两种。MCR:ARM寄存器到协处理器寄存器的数据传送指令。MRC:协处理器寄存器到ARM寄存器的数据传送指令。MCR指令和指令和MRC指令只能在指令只能在处理器模式是系理器模式是系统模模式式时执行,在用行,在用户模式下模式下执行行MCR指令和指令和MRC指指令将会触令将会触发未定未定义指令的异常中断。指令的异常中断。55

6、.2.2CP15中的寄存器中的寄存器1.CP15中的寄存器中的寄存器C0(1)标识符寄存器ARM7之后的处理器ARM7处理器ARM7之前的处理器(2)Cache类型标识符寄存器2.CP15中的寄存器中的寄存器C1CP15中的寄存器C1是一个控制寄存器,它包括以下控制功能:禁止/使能MMU以及其他的与存储系统相关的功能。配置存储系统以及ARM处理器中的相关部分的工作方式。65.3存储器管理单元存储器管理单元MMU5.3.1存存储器管理器管理单元元MMU概述概述在ARM系统中,存储器管理单元MMU主要完成以下工作:虚拟存储空间到物理存储空间的映射。在ARM中采用了页式虚拟存储管理。它把虚拟地址空间

7、分成一个个固定大小的块,每一块称为一页,把物理内存的地址空间也分成同样大小的页。页的大小可以分为粗粒度和细粒度两种。MMU就要实现从虚拟地址到物理地址的转换。存储器访问权限的控制。设置虚拟存储空间的缓冲的特性。75.3.1存储器管理单元MMU概述页表表(TranslateTable)是是实现上述上述这些功能的重要些功能的重要手段,它是一个位于内存中的表。手段,它是一个位于内存中的表。页表存放在内存中,系表存放在内存中,系统通常用一个寄存器来保存通常用一个寄存器来保存页表的基地址。在表的基地址。在ARM中,系中,系统控制控制协处理器理器CP15的寄存器的寄存器C2用来保存用来保存页表的基地址。表

8、的基地址。当当CPU需要需要访问内存内存时,先在,先在TLB中中查找需要的地找需要的地址址变换条目。如果条目。如果该条目不存在,条目不存在,CPU从位于内存从位于内存中的中的页表中表中查询,并把相,并把相应的的结果添加到果添加到TLB中。中。这样,当,当CPU下一次又需要下一次又需要该地址地址变换条目条目时,就,就可以从可以从TLB中直接得到了,从而使地址中直接得到了,从而使地址变换的速度的速度大大加快。大大加快。85.3.1存储器管理单元MMU概述当内存中的当内存中的页表内容改表内容改变,或者通,或者通过修改系修改系统控制控制协处理器理器CP15的寄的寄存器存器C2使用新的使用新的页表表时,

9、TLB中的内容需要全部清除。中的内容需要全部清除。MMU提供了相提供了相关的硬件支持关的硬件支持这种操作。系种操作。系统控制控制协处理器理器CP15的寄存器的寄存器C8用来控制用来控制清除清除TLB内容的相关操作。内容的相关操作。MMU可以将某些地址可以将某些地址变换条目条目锁定定(LockedDown)在在TLB中,从而使中,从而使得得进行与行与该地址地址变换条目相关的地址条目相关的地址变换速度保持很快。在速度保持很快。在MMU中,寄中,寄存器存器C10用于控制用于控制TBL内容的内容的锁定。定。MMU可以将整个存可以将整个存储空空间分分为最多最多16个域个域(Domain)。每个域。每个域

10、对应一定一定的内存区域,的内存区域,该区域具有相同的区域具有相同的访问控制属性。控制属性。MMU中,寄存器中,寄存器C3用用于控制与域相关的属性的配置。于控制与域相关的属性的配置。当存当存储访问失效失效时,MMU提供了相提供了相应的机制用于的机制用于处理理这种情况。在种情况。在MMU中,寄存器中,寄存器C5和寄存器和寄存器C6用于支持用于支持这些机制。些机制。95.3.2禁止禁止/使能使能MMUCP15的寄存器的寄存器C1的位的位0用于控制禁止用于控制禁止/使能使能MMU。当。当CP15的寄存器的寄存器C1的位的位0设置成置成0时,禁止,禁止MMU;当;当CP15的寄存器的寄存器C1的位的位0

11、设置成置成1时,使,使能能MMU。下面的指令使能。下面的指令使能MMU:MRCP15,0,R0,C1,0,0ORRR0,#01MCRP15,0,R0,C1,0,01.使能使能MMU时存存储访问过程程2.禁止禁止MMU时存存储访问过程程3.禁止禁止/使能使能MMU时应注意的注意的问题105.3.3MMU中的地址变换过程中的地址变换过程ARM支持的存支持的存储块大小有以下几种。大小有以下几种。段(section):是大小为1MB的存储块。大页(LargePages):是大小为64KB的存储块。小页(SmallPages):是大小为4KB的存储块。极小页(TinyPages):是大小为1KB的存储块

12、。在在MMU中采用下面两中采用下面两级页表表实现上述地址映射:上述地址映射:一级页表中包含有以段为单位的地址变换条目以及指向二级页表的指针。一级页表实现的地址映射粒度较大。二级页表中包含以大页和小页为单位的地址变换条目。其中,一种类型的二级页表还包含有以极小页为单位的地址变换条目。115.3.3MMU中的地址变换过程中的地址变换过程1.基于一基于一级页表的地址表的地址变换过程程(1)基于一级页表的地址变换过程(2)段描述符及其地址变换过程(3)粗粒度页表描述符(4)细粒度页表描述符125.3.3MMU中的地址变换过程中的地址变换过程2.基于二基于二级页表的地址表的地址变换过程程二级页表有两种:

13、粗粒度的二级页表和细粒度的二级页表。(1)大页描述符以及相关的地址变换(2)小页描述符以及相关的地址变换(3)极小页描述符以及相关的地址变换135.3.4MMU中的存储访问权限控制中的存储访问权限控制在在MMU中,寄存器中,寄存器C1的的R、S控制位和控制位和页表中地址表中地址转换条目中的条目中的访问权限控制位限控制位联合作用,控制存合作用,控制存储访问的的权限。具体限。具体规则如表如表5.20所示。所示。14APSR特权级的访问权限用户级的访问权限0b0000没有访问权限没有访问权限0b0010只读没有访问权限0b0001只读只读0b0011不可预知不可预知0b01XX读/写没有访问权限0b

14、10XX读/写只读0b11XX读/写读/写5.3.5MMU中的域中的域MMU中的域指的是一些段、大中的域指的是一些段、大页或者小或者小页的集合。的集合。ARM支持最多支持最多16个域,每个域的个域,每个域的访问控制特性由控制特性由CP15中的寄存器中的寄存器C3中的两位来控制。中的两位来控制。这样就能很就能很方便地将某个域的地址空方便地将某个域的地址空间包含在虚包含在虚拟存存储空空间中,中,或者排除在虚或者排除在虚拟存存储空空间之外。之外。CP15中的寄存器中的寄存器C3的格式如下所示。的格式如下所示。15D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D05.3.6关

15、于快表的操作关于快表的操作1.使无效使无效(Invalidate)快表的内容快表的内容2.锁定快表的内容定快表的内容(1)寄存器C10(2)锁定TLB165.3.7ARM中的存储访问失效中的存储访问失效在在ARM中有下面两种机制可以中有下面两种机制可以检测存存储访问失效,失效,并并进而中止而中止CPU的的执行:行:当MMU检测到存储访问失效时,它可以向CPU报告该情况,并将存储访问失效的相关信息保存到寄存器中。这种机制称为MMU失效(MMUFault)。外部存储系统也可以向CPU报告存储访问失效。这种机制称为外部存储访问中止(ExternalAbort)。上述两种情况上述两种情况统称称为存存储

16、访问中止中止(Abort)。这时称称造成存造成存储访问中止的存中止的存储访问被中止被中止(Aborted)。如果存如果存储访问中止中止发生在数据生在数据访问周期,周期,CPU将将产生数据生数据访问中止异常中断。如果存中止异常中断。如果存储访问中止中止发生生在指令在指令预取周期,当取周期,当该指令指令执行行时,CPU产生指令生指令预取异常中断。取异常中断。175.3.7ARM中的存储访问失效中的存储访问失效1.MMU失效失效(1)MMU中与存储访问失效相关的寄存器(2)MMU存储访问失效的类型2.外部存外部存储访问失效失效读操作。非缓冲的写操作。一级描述符的获取。二级描述符的获取。非缓冲的存储区

17、域中的信号量操作。185.4高速缓冲存储器和写缓冲区高速缓冲存储器和写缓冲区通常通常ARM处理器的主理器的主频为几十几十MHz,有的已,有的已经达到达到200MHz。而一般的主存。而一般的主存储器使用器使用动态存存储器器(DRAM),其存,其存储周期周期仅为100ns200ns。这样,如果指令和数据都存放在主存如果指令和数据都存放在主存储器中,主存器中,主存储器的器的速度将会速度将会严重制重制约整个系整个系统的性能。的性能。高速高速缓冲存冲存储器器(Cache)和写和写缓冲区冲区(WriteBuffers)位于主存位于主存储器和器和CPU之之间,主要用来提高存,主要用来提高存储系系统的性能。本

18、的性能。本节主要介主要介绍与与这两种技两种技术相关的基本概念。相关的基本概念。1993年著名的ARM7诞生,之后的ARM9、ARM11风靡世界。随后出现了Cortex系列。实际上,Cortex就是ARM12。在“全国第七届嵌入式系统与单片机学术交流暨Cortex有两大分支:高性能的A8系列,主频可达到1GHz;低成本、计划与8/16位MCU竞争的M3系列195.4.1基本概念基本概念高速高速缓冲存冲存储器是全部用硬件来器是全部用硬件来实现的,因此,它不的,因此,它不仅对应用程序用程序员是是透明的,而且透明的,而且对系系统程序程序员也是透明的。也是透明的。Cache与主存与主存储器之器之间以以块

19、(CacheLine)为单位位进行数据交行数据交换。不同系不同系统中,中,Cache的的块大小也是不同的。通常大小也是不同的。通常Cache的的块大小大小为几个几个字。字。写写缓冲区是由一些高速的存冲区是由一些高速的存储器构成的。它主要用来器构成的。它主要用来优化向主存化向主存储器中器中的写入操作。当的写入操作。当CPU进行向主存行向主存储器中的写入操作器中的写入操作时,它先将数据写入,它先将数据写入到写到写缓冲区中,由于写冲区中,由于写缓冲区的冲区的访问速度很高,速度很高,这种写入操作的速度将种写入操作的速度将很高。然后很高。然后CPU就可以就可以进行下面的操作。写行下面的操作。写缓冲区在适

20、当的冲区在适当的时候以候以较低低的速度将数据写入到主存的速度将数据写入到主存储器中相器中相应的位置。的位置。通通过引入引入Cache和写和写缓冲区,存冲区,存储系系统的性能得到了很大的提高,但同的性能得到了很大的提高,但同时也也带来了一些来了一些问题。比如,由于数据将存在于系。比如,由于数据将存在于系统中不同的物理位置,中不同的物理位置,可能造成数据的不一致性;由于写可能造成数据的不一致性;由于写缓冲区的冲区的优化作用,可能有些写操作化作用,可能有些写操作的的执行行顺序不是用序不是用户期望的期望的顺序,从而造成操作序,从而造成操作错误。205.4.2Cache的工作原理和地址映像方法的工作原理

21、和地址映像方法1.Cache的工作原理的工作原理2.Cache地址映像和地址映像和变换方法方法(1)全相联映像方式(2)直接映像方式(3)组相联映像方式215.4.3Cache的分类的分类1.统一一/独立的数据独立的数据Cache和指令和指令Cache2.写通写通(Write-through)Cache和写回和写回(Write-back)Cache可靠性与主存的通信量控制的复杂性硬件实现的代价3.读操作分配操作分配Cache和写操作分配和写操作分配Cache225.4.4Cache的替换算法的替换算法在把主存地址在把主存地址变换成成Cache地址的地址的过程中,如果程中,如果发现Cache块失

22、效,失效,则需要从主存中需要从主存中调入一个新入一个新块到到Cache中。而来自主存中的中。而来自主存中的这个新个新块往往往往可以装入到可以装入到Cache的多个的多个块中。当可以装入中。当可以装入这个新个新块的几个的几个Cache块都都已已经装装满时,就要使用,就要使用cache替替换算法,从那些算法,从那些块中找出一个不常用的中找出一个不常用的块,把它,把它调回到主存中原来存放它的那个地方,回到主存中原来存放它的那个地方,腾出一个出一个块存放从主存存放从主存中中调来的新来的新块。在。在ARM中常用的替中常用的替换算法有两种:随机替算法有两种:随机替换算法和算法和轮转法。法。(1)随机替换算

23、法通过一个伪随机数发生器产生一个伪随机数,用新块将编号为该伪随机数的Cache块替换掉。这种算法很简单,易于实现。但是它没有考虑程序的局部性特点,也没有利用历史上的块地址流的分布情况,因而效果较差。同时这种算法不易预测最坏情况下Cache的性能。(2)轮转法维护一个逻辑的计数器,利用该计数器依次选择将要被替换出去的Cache块。这种算法容易预测最坏情况下Cache的性能。但它有一个明显的缺点,在程序发生很小的变化时,可能造成Cache平均性能急剧的变化。235.4.5缓冲技术的使用注意事项缓冲技术的使用注意事项通常使用通常使用Cache和写和写缓冲可以提高系冲可以提高系统的性能,但是由于的性能

24、,但是由于Cache和写和写缓冲区的使用可能改冲区的使用可能改变访问主存的数量、主存的数量、类型和型和时间,这些技些技术对于有些于有些类型的存型的存储访问是不适合的。本小是不适合的。本小节介介绍使用使用这些技些技术时的一些限制。的一些限制。Cache通常需要存通常需要存储器件具有下面的特性:器件具有下面的特性:读取操作将返回最后一次写入的内容,而且没有其他的副作用。写操作除了影响目标单元的内容外,没有其他的副作用。对同一目标单元的两次连续读取操作将得到相同的结果。对同一目标单元的两次连续写取操作将会把第2次写操作的值写入目标单元,第1次写操作将没有意义。将存将存储区域区域设置成置成unbuff

25、ered是是为了防止延了防止延迟存存储访问操作的操作的执行行时间。对于写回于写回Cache如果如果设置置cached,必然造成存,必然造成存储访问操作操作执行的延行的延迟,因而写回因而写回类型的型的Cache不能不能设置成置成cached/buffered。在在C语言中,是通言中,是通过使用关使用关键词volatile声明存声明存储器映射的器映射的I/O空空间,来,来防止防止编译器在器在优化化时删掉有用的存掉有用的存储访问操作的。操作的。245.4.6存储系统的一致性问题存储系统的一致性问题1.地址映射关系地址映射关系变化造成的数据不一致化造成的数据不一致2.指令指令Cache的数据一致性的数

26、据一致性问题3.DMA造成的数据不一致造成的数据不一致问题将DMA访问的存储区域设置成非缓冲的(uncachable及unbufferable)。将DMA访问的存储区域所涉及的数据Cache块设置成无效,或者清空数据Cache。清空写缓冲区(执行写缓冲区中延迟的所有写操作)。在DMA操作期间限制处理器访问DMA所访问的存储区域。255.4.7Cache内容锁定内容锁定这里所里所说的的N锁定定块被被锁定,是指定,是指编号号为0N-1的的锁定定块被被锁定在定在Cache中,中,编号号为NASSOCIATIVITY-1的的锁定定块可用于正常的可用于正常的cache替替换操作。操作。实现N锁定定块被被

27、锁定的操作序列如下。定的操作序列如下。(1)确保在整个锁定过程中不会发生异常中断。否则,必须保证与该异常中断相关的代码和数据必须位于非缓冲(uncachable)的存储区域。(2)如果锁定的是指令Cache或者统一的Cache,必须保证锁定过程所执行的代码位于非缓冲的存储区域。(3)如果锁定的是数据Cache或者统一的Cache,必须保证锁定过程所涉及的数据位于非缓冲的存储区域。265.4.7Cache内容锁定内容锁定(4)确保将要被锁定的代码和数据位于缓冲(cacheable)的存储区域。(5)确保将要被锁定的代码和数据尚未在Cache中,可以通过使无效相应的cache中的块达到这一目的。(

28、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

29、。275.4.8与与Cache和写缓冲区相关的编程接口和写缓冲区相关的编程接口1.寄存器寄存器C1中的相关位中的相关位2.寄存器寄存器C73.寄存器寄存器C9(1)寄存器C9的格式(2)访问寄存器C9的指令285.5快速上下文切换技术快速上下文切换技术快速上下文切快速上下文切换技技术(FastContextSwitchExtension,FCSE)通通过修改系修改系统中不同中不同进程的虚程的虚拟地址,避免在地址,避免在进行行进程程间切切换时造成的虚造成的虚拟地地址到物理地址的重映射,从而提高系址到物理地址的重映射,从而提高系统的性能。的性能。本本节介介绍快速上下文切快速上下文切换技技术的原理及

30、其的原理及其编程接程接口。口。295.5.1快速上下文切换技术原理快速上下文切换技术原理快速上下文切快速上下文切换技技术(FCSE)的引入避免了的引入避免了这种开种开销。它位于。它位于CPU和和MMU之之间,如果两个,如果两个进程使用了同程使用了同样的虚的虚拟地址空地址空间,则对CPU而言,而言,两个两个进程使用了同程使用了同样的虚的虚拟地址空地址空间;快速上下文切;快速上下文切换机构机构对各各进程的程的虚虚拟地址地址进行行变换,这样,系,系统中除了中除了CPU之外的部分看到的是之外的部分看到的是经过快快速上下文切速上下文切换机制机制变换的虚的虚拟地址。快速上下文切地址。快速上下文切换机制将各

31、机制将各进程的虚程的虚拟空空间变换成不同的虚成不同的虚拟空空间。这样,在,在进行行进程程间切切换时,就不需要,就不需要进行虚行虚拟地址到物理地址的重映射了。地址到物理地址的重映射了。快速上下文切快速上下文切换机构将机构将CPU发出的每个虚出的每个虚拟地址按照上述的地址按照上述的规则进行行变换,然后,然后发送到系送到系统中的其他部分。中的其他部分。变换过程如程如图5.12所示。所示。305.5.2快速上下文切换技术编程接口快速上下文切换技术编程接口CP15中的寄存器中的寄存器C13用于快速上下文切用于快速上下文切换。其。其编码格式如下所示。格式如下所示。3125240访问寄存器寄存器C13的指令

32、格式如下所示:的指令格式如下所示:MCRp15,0,c0,0MRCp15,0,c0,0当当PID的的值为0时,MVA=VA,相当于禁止了,相当于禁止了FCSE。系。系统复位后复位后PID即即为0。当当PID的的值不不为0时,相当于使能了,相当于使能了FCSE。31PID05.6与存储系统相关的程序设计指南与存储系统相关的程序设计指南本本节主要介主要介绍与与ARM存存储系系统相关的程序相关的程序设计用到用到的一些概念。如果的一些概念。如果说前面的几章介前面的几章介绍了了ARM存存储系系统内部的内部的结构,本构,本节是从外部来看是从外部来看ARM的存的存储系系统,即即ARM存存储系系统提供的提供的

33、对外接口。当用外接口。当用户通通过这些些接口来接口来访问ARM存存储系系统时,需要遵守一定的,需要遵守一定的规则,本本节将介将介绍这些些规则。325.6.1地址空间地址空间ARM体系使用体系使用单一的普通地址空一的普通地址空间。该地址空地址空间的的大小大小为232个个8位字位字节。这些字些字节单元的地址是一个元的地址是一个无符号的无符号的32位数位数值,其取,其取值范范围为0232-1。ARM的地址空的地址空间也可以看作是也可以看作是230个个32位的字位的字单元。元。这些字些字单元的地址可以被元的地址可以被4整除,也就是整除,也就是说,该地地址的低两位址的低两位为0b00。地址。地址为A的字

34、数据包括地址的字数据包括地址为A、A+1、A+2、A+3四个字四个字节单元的内容。元的内容。在在ARM版本版本4及以上的版本中,及以上的版本中,ARM的地址空的地址空间也也可以看作是可以看作是231个个16位的半字位的半字单元。元。这些半字些半字单元的元的地址可以被地址可以被2整除,也就是整除,也就是说,该地址的最低位地址的最低位为0b0。地址。地址为A的半字数据包括地址的半字数据包括地址为A、A+1两个两个字字节单元的内容。元的内容。335.6.1地址空间地址空间各存各存储单元的地址作元的地址作为32位的无符号数,可以位的无符号数,可以进行常行常规的整数运算。的整数运算。这些运算的些运算的结

35、果果进行行232取模。即运算取模。即运算结果果发生上溢出和下溢出生上溢出和下溢出时,地址将,地址将会会发生卷生卷绕。比如,如果运算。比如,如果运算结果果为(0 xffffffff+0 x80),实际上地址上地址值为0 x80。为了使程序便于和将来版本兼容,在程序中尽量使地址运算的了使程序便于和将来版本兼容,在程序中尽量使地址运算的结果在果在00 xffffffff之之间。如果程序中跳。如果程序中跳转指令的目指令的目标地址依地址依赖于地址于地址值卷卷绕,则指令指令执行的行的结果将不可果将不可预知。所以在程序中知。所以在程序中应该保保证向前跳向前跳转不不超超过0 xffffffff,向后跳,向后跳

36、转不超不超过0 x0。在程序的正常在程序的正常执行行时,每,每执行一条行一条ARM指令,当前指令指令,当前指令计数器数器值加加4个个字字节;每;每执行一条行一条Thumb指令,当前指令指令,当前指令计数器数器值加加2个字个字节。但是,。但是,当当发生地址生地址值上溢出上溢出时,执行的行的结果将是不可果将是不可预知的。知的。LDC、LDM、STC及及STM指令可能指令可能访问一段一段连续的存的存储单元。每元。每执行一行一次次读取取/写入操作,目写入操作,目标单元的地址元的地址值加加4个字个字节。如果。如果这种地址更新造种地址更新造成地址成地址值上溢出,上溢出,则指令指令执行的行的结果将是不可果将

37、是不可预知的。知的。345.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个字个字节哪一个是高位字哪一个是高位字节,哪一个,哪一个是低位字是低位字节

38、则有两种不同的格式:有两种不同的格式:Big-endian格式格式和和Little-endian格式。格式。355.6.3非对齐的存储访问操作非对齐的存储访问操作1.非非对齐的指令的指令预取操作取操作2.非非对齐的数据的数据访问操作操作执行的结果不可预知。忽略字单元地址的低两位的值,即访问地址为(AddressAND0XFFFFFFC)的字单元;忽略半字单元地址的最低位的值,即访问地址为(AddressAND0XFFFFFFE)的半字单元。忽略字单元地址值中的低两位的值;忽略半字单元地址的最低位的值。由存储系统实现这种“忽略”。也就是说,这时该地址值原封不动地送到存储系统。365.6.4指令预

39、取和自修改代码指令预取和自修改代码在在ARM中允中允许指令指令预取。在取。在CPU执行当前指令的同行当前指令的同时,可以从存,可以从存储器器中中预取其后的若干条指令,具体取其后的若干条指令,具体预取多少条指令,不同的取多少条指令,不同的ARM实现中有中有不同的数不同的数值。当用当用户读取取PC寄存器的寄存器的值时,返回的是当前指令下面第,返回的是当前指令下面第2条指令的地址。条指令的地址。预取的指令并不一定能取的指令并不一定能够得到得到执行。行。正如在不同的正如在不同的ARM实现中,中,预取的指令条数可能不同,当取的指令条数可能不同,当发生程序跳生程序跳转时,不同的,不同的ARM实现中采用的跳

40、中采用的跳转预测算法也可能不同。算法也可能不同。自修改代自修改代码指的是代指的是代码在在执行行过程中可能修改自身。程中可能修改自身。对于支持指令于支持指令预取的取的ARM系系统,自修改代,自修改代码可能可能带来潜在的来潜在的问题。当指。当指令被令被预取后,在取后,在该指令被指令被执行前,如果有数据行前,如果有数据访问指令修改了位于主存指令修改了位于主存中的中的该指令,指令,这时被被预取的指令和主存中取的指令和主存中对应的指令不同,从而可能使的指令不同,从而可能使执行的行的结果果发生生错误。375.6.5IMBIMB是一段特定的代是一段特定的代码序列,序列,对于每种不同的于每种不同的ARM实现,

41、对应有不同的有不同的IMB。IMB在新的指令被保存在新的指令被保存到主存中后,在到主存中后,在该指令被指令被实际执行之前行之前执行,使得行,使得可自修改代可自修改代码在在ARM体系中能体系中能够可靠地可靠地执行。行。在很多在很多ARM系系统中,中,IMB中需要的很多指令中需要的很多指令(如使如使无效无效Cache等操作等操作)只能运行在系只能运行在系统模式下。模式下。对于包含于包含24位立即数的位立即数的SWI指令,通常使用下面的指令,通常使用下面的SWI功能功能调用提供用提供IMB功能:功能:SWI0XF00000385.6.5IMB同同样,在其他的一些,在其他的一些场合也需要在适当的合也需

42、要在适当的时候运行候运行适当的适当的IMB。下面介。下面介绍这些些IMB的的应用用场合。合。(1)对于采用了虚拟地址到物理地址映射的系统,如果在指令预取之后和该指令得到实际执行之前,虚拟地址到物理地址的映射关系发生了改变,这时也需要运行适当的IMB。(2)如果在指令预取之后和该指令得到实际执行之前,该指令所涉及到的存储区域的访问权限发生了改变(由允许访问变成了不允许访问,或者由不允许访问变成了允许访问),这时也需要运行适当的IMB。这种情况下的IMB中,一般不需要使无效Cache中相关的内容,运行代价相对较低。395.6.6存储器映射的存储器映射的I/O空间空间在在ARM中,中,I/O操作通常

43、被映射成存操作通常被映射成存储器操作。器操作。I/O的的输出操出操作可以通作可以通过存存储器写入操作器写入操作实现;I/O的的输入操作可以通入操作可以通过存存储器器读取操作取操作实现。这样I/O空空间就被映射成了存就被映射成了存储空空间。这些存些存储器映射的器映射的I/O空空间不不满足足Cache所要求的上述特性。所要求的上述特性。由于写由于写缓冲技冲技术可能推可能推迟写操作,它同写操作,它同样不适合不适合对于存于存储器器映射的映射的I/O空空间的操作。比如当的操作。比如当CPU向中断控制器的向中断控制器的I/O端口端口写写ACK,清除当前中断,清除当前中断请求求标志位,并重新使能中断志位,并

44、重新使能中断请求。求。如果使用了写如果使用了写缓冲技冲技术,CPU的写操作将被先写入高速的的写操作将被先写入高速的缓冲区。高速的冲区。高速的缓冲区可能在以后某个冲区可能在以后某个时间再将再将结果写到果写到I/O端口,端口,这样就造成一种假象,似乎外就造成一种假象,似乎外设又又发出了中断出了中断请求。求。405.6.6存储器映射的存储器映射的I/O空间空间将存将存储区域区域设置成置成unbuffered是是为了防止延了防止延迟存存储访问操作的操作的执行行时间。对于写回于写回Cache如果如果设置置cached必然造成存必然造成存储访问操作操作执行的延行的延迟,因而,因而写回写回类型的型的Cach

45、e不能不能设置成置成cached/buffered。将存将存储器映射的器映射的I/O空空间设置成置成uncached是是为了有了有效地防止硬件系效地防止硬件系统优化化时删掉有用的存掉有用的存储访问操作。操作。如果在高如果在高级语言中言中访问存存储器映射的器映射的I/O空空间时,仅仅将存将存储器映射的器映射的I/O空空间设置成置成uncached,是不,是不够的。的。还必必须告告诉编译器不要在器不要在优化化时删掉有用的掉有用的存存储访问操作。在操作。在C语言中是通言中是通过使用关使用关键词volatile声明存声明存储器映射的器映射的I/O空空间来防止来防止编译器在器在优化化时删掉有用的存掉有用

46、的存储访问操作。操作。415.7ARM存储系统的实例存储系统的实例LinkUp公司生公司生产的的L7205芯片是一款芯片是一款ARM720T微微处理器。理器。它内部包含了功能它内部包含了功能强大的大的MMU。可以。可以连接多种存接多种存储设备,包括包括512字字节的芯片内的芯片内ROM,5KB的芯片内的芯片内SRAM,可以在,可以在芯片外芯片外扩充充SRAM/Flash,可以在芯片外,可以在芯片外扩充充SDRAM。其。其存存储器可以被器可以被CPU、DMA以及以及LCD部分部分访问。L7205SDB是是LinkUp设计的基于的基于L7205芯片的芯片的评价板,价板,该评价板包含价板包含一个一个

47、L7205芯片、芯片、32MB的的SDRAM、两个、两个SRAM/Flash扩展展槽。系槽。系统有两种启有两种启动方式,可以通方式,可以通过控制面板上的跳控制面板上的跳线进行行选择。本章将比本章将比较详细地描述地描述L7205SDB存存储系系统及其配置方法,及其配置方法,也可以作也可以作为设计其他基于其他基于ARM的嵌入系的嵌入系统存存储系系统的参考。的参考。42p经常不断地学习,你就什么都知道。你知道得越多,你就越有力量pStudyConstantly,AndYouWillKnowEverything.TheMoreYouKnow,TheMorePowerfulYouWillBe写在最后谢谢大家荣幸这一路,与你同行ItS An Honor To Walk With You All The Way演讲人:XXXXXX 时 间:XX年XX月XX日

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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