TLB与MMU

1.MMU介绍

MMU,全称内存管理单元,一般是CPU里的硬件电路,也可单独集成电路,主要功能是把虚拟地址转换为物理地址。通过段机制页机制完成转换.


至此,MMU可以完成地址转换,通过建立页表,把虚拟地址通过页表查找,得到最终的物理地址。例如,当需要访问内存中的一个数据,通过这个数据的虚拟地址查找页表,一旦在页表中找到(hit),就通过找到的物理地址寻址到内存中的数据。如果页表中没有找到(miss),表示页表中没有建立这个数据虚拟地址到物理地址的映射,通过缺页异常,建立这个页表映射项。

但是有个问题,当我们经常使用一些不变的数据,时间浪费在查找页表上了,尽管我们上次已经找过这个数据和它的页表项了 。
于是为了加快速度,减少不必要的重复,TLB出现了。

2.TLB介绍

TLB,俗称快表,因为它确实快。TLB是MMU的一部分,实质是cache,它所缓存的是最近使用的数据的页表项(虚拟地址到物理地址的映射)。他的出现是为了加快访问数据(内存)的速度,减少重复的页表查找。当然它不是必须要有的,但有它,速度就更快。

TLB很小,因此,缓存的东西也不多。主要缓存最近使用的数据的数据映射。TLB结构如下图:

如果一个需要访问内存中的一个数据,给定这个数据的虚拟地址,查询TLB,发现有(hit),直接得到物理地址,在内存根据物理地址取数据。如果TLB没有这个虚拟地址(miss),那么就只能费力的通过页表来查找了。

关于cpu如何读取内存中的一个数据,下面流程图说明:


3.TLB刷新与上下文切换

当进程地址空间进行了切换,比如现在是进程1运行,TLB中放的是进程1的相关数据的地址;突然切换到进程2,TLB中原有的数据不是进程2相关的,此时TLB需要刷新数据。怎么刷新数据?
目前两种方法:一,全部刷新。二,部分刷新
全部刷新很简单,但花销大,很多不必刷新的数据也进行刷新,增加了无畏的花销。
部分刷新是根据标志位,刷新需要刷新的数据,保留不需要刷新的数据。

4.参考

[1] Translation lookaside buffer
[2] Memory management unit
[3] Frank Uyeda (2009). “Lecture 7: Memory Management ” (PDF). CSE 120: Principles of Operating Systems. UC San Diego. Retrieved 2013-12-04.

  • 17
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
ARM是一种广泛使用的处理器体系结构,它被用于包括智能手机、平板电脑和其他便携式设备等许多应用中。ARM处理器在执行应用程序时必须访问内存,因此为了保护系统的安全性和稳定性,需要使用内存管理单元(MMU)。 MMU是一种硬件设备,它在CPU执行程序时提供一种虚拟地址空间和实际物理地址空间之间的映射。MMU将真实的物理地址与虚拟地址进行映射,这样ARM处理器就可以将指令和数据从内存中读取出来。MMU还提供了一种保护机制,可以在进程之间隔离不同的内存空间,避免各个进程间的干涉。 在ARM体系结构中,MMU有两个关键组成部分:页表和TLB。页表是一种用来存储地址转换信息的数据结构,其中每个页表项存储有关与该虚拟地址相关的物理地址的信息。TLB是一个高速缓存,它存储最近使用的页表项以加速地址转换。 ARM MMU需要进行两种类型的地址转换:虚拟地址到物理地址的转换和背景映射的动态操作。虚拟地址到物理地址的转换通常是根据硬件逻辑中所定义的一组规则执行的。例如,由4KB大小的页面组成的虚拟地址空间可以映射到由4KB大小的页面组成的物理地址空间中。这个转换过程可以通过查询页表来完成。背景映射包括动态地址转换,以及TLB的管理和刷新。例如,内核可以在页表中描述一个虚拟地址范围,并将该范围映射到一个物理地址范围。因为一个进程可能有多个地址空间,所以需要确保只有虚拟地址空间是不同的,物理地址空间应该是隔离的。 总的来说,ARM MMU是一种重要的硬件设备,它提供了一种安全的和可靠的内存管理机制。它通过为每个进程提供独立的地址空间,可以有效地保护系统的安全性和稳定性,同时也为系统提供了强大的性能和灵活性。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值