首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

虚拟存储器系统构架(2)

虚拟存储器系统构架(2)

二, 内存访问顺序当ARM CPU产生一个内存访问时,MMU先执行在TLBs中查找需要的修正后的虚拟地址的映射。从VMSAv6版本起,这个过程还包括当前的应用空间标识符(ASID)的查询。 在实际应用中可以选择哈佛结构的TLBs或者统一编址的TLBs。如果采用了指令TLBs和数据TLBs独立编址(哈佛结构),那么他就:· 取指令时使用指令TLB· 其他的所有的内存访问都使用数据TLB。如果TLBs中没有修正后的虚拟地址的全局映射,或者没有当前选择的ASID(VMSAv6)的映射,那么硬件将自动执行一个页表遍历。------------注----------------在VMSAv6版本之前,所有修正后的虚拟地址的转换都被认为是全局映射的。从VMSAv6版本起,当访问非全局的地址空间时,修正后的虚拟地址应该被作为是32位修正后的虚拟地址加上当前ASID的值。在 快速上下文切换扩展 一章中介绍的FCSE机制在ARMv6版本中已经不赞成使用了。因此如果同时使用FCSE和ASID将产生不可预测的结果。要么FCSE寄存器被清除,要么所有的内存申明为是全局的。-------------------------------如果在TLBs中查找到匹配的页表项,页表项的内容将被用来做如下的判断:1, 访问权限位和域位用来检测内存访问是否被允许。如果访问不被允许则MMU产生一个存储器异常信号。如果允许访问就进行下一步的操作。2, 内存区域类型用来控制:· 高速缓存和写缓冲· 访问需要缓存还是不缓存· 目标存储器的类型· 目标存储器是共享的还是不共享的3, 物理地址用来访问外部的或者是紧密耦合的存储器。在有物理高速缓存应用的系统中,物理地址还用来在高速缓存中寻找是否有能匹配的页表项。下图说明了高速缓存系统的结构:(一) TLB匹配过程每一个TLB表项包括修正后的虚拟地址(MVA),一个页的大小,一个物理地址和一组存储器的属性。它被标识为是与一个特定的应用空间相联系,还是作为全局的可使用于所有的应用空间。当使用ASID标识符时,CP15中的寄存器13决定当前选择的地址空间。一个修正后的虚拟地址与TLB表项匹配当修改过的虚拟地址的31位-N位都匹配时,且它要么标识为全局可用的,要么ASID与当前ASID相匹配,前面的N等于log2(一个页表项标识的一页的大小)。如果当前的虚拟地址与两个以上的表项匹配(包括全局的和指定ASID的表项),那么TLB产生的结果将是不可预测的。操作系统必须保证在同一时刻不能有一个以上的TLB表项与当前的MVA相匹配,典型的操作方法是当全局映射改变的时候清空TLBs。一个TLB能根据块的大小来储存以下的表项信息:超级段 是大小为16M的块段 是大小为1M的块大页 是大小为64K的块页 是大小为4K的块------------注----------------在VMSAv6版本中已不支持块的大小等于1K的微页的使用。-------------------------------超级段、段和大页只有在TLB中仅用一个表项来映射一个大范围的内存区域时使用。如果在TLB中没有找到一个地址的映射,那么硬件将去内存中读取这个地址对应的页表项,然后把读取的页表项中的映射结果存放到TLB中。具体可参考硬件页表转换章节的内容。(二) 虚拟地址到物理地址映射的约束VMSA可以与以虚拟地址为索引,物理地址为目标的高速缓存相结合使用。具体可参考页表映射约束章节中的虚拟地址到物理地址转换的页表映射约束的内容。(三) 使能和禁止MMU可以通过写协处理器的c1寄存器的M位(bit[0])来使能和禁止MMU。复位时,M位清0,即禁止MMU。禁止MMU时,内存访问如下处理:· 所有的数据访问都作为不缓存和强序来处理。意外的数据缓存命中行为可以根据实际的应用来定义。· 当使用哈佛结构的缓存时,如果CP15的c1寄存器的I位(bit[12])置1,则所有的指令访问作为可缓存、不共享和普通存储器来处理,如果I位清0,则作为不可缓存、不共享和普通存储器处理。其他的与高速缓存有关的内存属性(比如直写可缓存,后写可缓存)可根据实际的应用来定义。当使用统一编址结构的缓存时,所有的指令访问作为不可缓存、不共享和普通存储器处理。
继承事业,薪火相传
返回列表