全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 接口/总线/驱动 >

ARM MMU/TLB的学习笔记和总结

时间:2023-08-04 14:39

人气:

作者:admin

标签:   笔记  TLB  MMU    ARM  学习 

导读:ARM MMU/TLB的学习笔记和总结-Memory Management Unit (MMU)** 的**主要功能**就是 **能够让系统在执行多任务时,作为一个独立的程序运行它自己的虚拟地址空间中,它们无需知道真正的物理地址是...

思考:

  1. 页表最大支持几级页表查询?
  2. 虚拟地址的有效位一般是多少?最大是多少?
  3. 虚拟地址的高16bit的用途?
  4. 查询到的页面的大小,可以是多大?

Memory Management Unit (MMU)主要功能就是 能够让系统在执行多任务时,作为一个独立的程序运行它自己的虚拟地址空间中,它们无需知道真正的物理地址是什么 。开启MMU的硬件框图如下所示:

image.png

Virtual and physical memory的映射图如下所示:

image.png

一、Translation Lookaside Buffer (TLB)

1.1 TLB entry里有什么?

TLB中不仅仅包含物理地址和虚拟地址,它还包含一些属性,例如:memory type、cache policies、access permissions、ASID、VMID
注:ASID - Address Space ID, VMID - Virtual Machine ID

1.2 contiguous block entries

TLB拥有固定数目的entries,所以你可以通过减少外部内存地址转换的次数来提升TLB hit率.

ARMV8 architecture中有一个TLB中的feature叫contiguous block entries,它表示一个entry可以对应多个blocks.。一个entry找到多个blocks,再通过index来查找具体是哪个block。页表的block entries中,也有一个contiguous bit。这个bit为1,则表示开启了TLB的contiguous block entries feature。contiguous block entries feature要求alignment,例如:

  • 16 × 4KB adjacent blocks giving a 64KB entry with 4KB granule. 缓存64kb blocks,只需16 enties
  • 32 × 32MB adjacent blocks giving a 1GB entry for L2 descriptors, 128 × 16KB giving a 2MB entry for L3 descriptors when using a 16KB granule.
  • 32 × 64Kb adjacent blocks giving a 2MB entry with a 64KB granule.

如果支持了contiguous bit,那么:TLB查询后的PA = TLB entry中的PA + index。

1.3 TLB abort

如果开启了contiguous bit,而要转换的table entries却不是连续的,或者entries的output在地址范围之外或没有对齐,那么将会产生TLB abort。

1.4 TLB一致性

如果os修改了页表(entries),那么os需要告诉TLB,invalid这些TLB entries,这是需要软件来做的. 指令如下:

TLBI < type >< level >{IS} {, < Xt >}

二、Translation table

2.1 TTBR0/TTBR1

ARM文档说:因为应用程序切换时要切换页表,页表经常改变,而kernel切换时不需要切换页表,页表几乎不改。所以ARM就提供了 a number of features,也就是TTBR0和TTBR1两个页表基地址。

TTBR0用于0x00000000_00000000 - 0x0000FFFF_FFFFFFFF虚拟地址空间的翻译,TTBR1用于0xFFFF0000_00000000 - 0xFFFFFFFF_FFFFFFFF虚拟地址空间的翻译。

EL2/EL3只有TTBR0,没有TTBR1,所以EL2/EL3的虚拟地址空间是:0x0000FFFF_FFFFFFFF

2.2 页表的entry中包含哪些信息

MMU除了完成地址的翻译,还控制访问权限、memory ordering、cache policies。

如图所示,列出了三种类型的entry信息:

image.png

bits[1:0]表示该输出是block address,还是next level table address,还是invalid entry

2.3 granule sizes

有三种granule sizes的页表:4kb、16kb、64kb

image.png

2.4 Cache configuration

MMU使用translation tables 和 translation registers控制着cache policy、memory attributes、access permissions、va到pa的转换

三、 ARM mmu三级页表查询的过程

image.png

  • (1)、在开启MMU后,cpu发起的读写地址是一个64bit的虚拟地址,
  • (2)、该虚拟地址的高16bit要么是全0,要么是全1. 如果是全0,则选择TTBR0ELx作为L1页表的基地址; 如果是全1,则选择TTBR1ELx作为L1页表的基地址;
  • (3)、TTBRx_ELn作为L1页表,它指向L2页表,在根据bit[41:29]的index,查询到L3页表的基地址
  • (4)(5)、有了L3页表的基地址之后,在根据bit[28:16]的index,查询到页面的地址
  • (6)、最后再根据bit[15:0]查找到最终的物理地址
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信