天天看点

MIPS TLB / MMU 硬件及其作用

TLB是把你的程序用的地址(程序地址或者虚拟地址)转换成为访问存储器的物理地址的硬件。操作系统对于内存转换的控制是所有软件安全特性的关键。

在MIPS CPU(以及所有的现代CPU上)上,地址转换以4KB大小为单位,称为页。页内的12位地址只是从虚拟地址简单地传递到物理地址。转换表中每一项含有一个页的虚拟地址(VPN即虚拟页号)和一个物理页地址(PFN代表页帧号)。当程序给出一个虚拟地址时,该地址和TLB中的每个VPN做比较,如果和某一项匹配就给出相应的PFN。TLB是一种称之为相联存储器或者内容才址的存储器——不是按照索引来选择而是根据内容来选择某一项。这逻辑是相当复杂的,其中每一项都有内建的比较器,复杂度和性能扩展性很差。所以典型的TLB只有16到64项。

有一组标志位和每个PFN一起存储并一起返回叫,标志位让操作系统可以指定某一页为只读或者指定某页的数据是否可以高速缓存。

大多数现代的MIPS CPU(以及所有的MIPS32/64 CPU)采用双倍存储,每一个TLB项容纳一对相邻的虚拟页面对应的两个单独的物理地址。

MIPS TLB / MMU 硬件及其作用

图5.1 : TLB数据项

图5.1给出了一个TLB项。每个域标上软件加载和读取TLB表项的时候用的CPO寄存器的名字,下一节讲这些寄存器。

当你在运行一个真正的复杂的操作系统时,软件很快就会覆盖比TLB的转换表能容纳的更多地址。这可以通过把TLB当作一个软件管理的最近用过的地址转换的高速缓存来维护得到解决。当一个需要的地址转换不在TLB中时,就会产生一个异常,异常处理程序算出并安装正确的地址转换。很难相信这种做法会有效率,但是事实确实如此。

转自嵌入式学习网!

原文地址:http://www.embedstudy.com/viewnews-4922