zoukankan      html  css  js  c++  java
  • TLB的作用及工作过程

    下面内容摘自《步步惊芯——软核处理器内部设计分析》一书

      

          页表一般都非常大,而且存放在内存中,所以处理器引入MMU后,读取指令、数据须要訪问两次内存:首先通过查询页表得到物理地址,然后訪问该物理地址读取指令、数据。

    为了降低由于MMU导致的处理器性能下降。引入了TLBTLBTranslation Lookaside Buffer的简称,可翻译为“地址转换后援缓冲器”,也可简称为“快表”。简单地说,TLB就是页表的Cache,当中存储了当前最可能被訪问到的页表项。其内容是部分页表项的一个副本。仅仅有在TLB无法完毕地址翻译任务时,才会到内存中查询页表,这样就降低了页表查询导致的处理器性能下降。

          TLB中的项由两部分组成:标识和数据。

    标识中存放的是虚地址的一部分,而数据部分中存放物理页号、存储保护信息以及其它一些辅助信息。虚地址与TLB中项的映射方式有三种:全关联方式、直接映射方式、分组关联方式。

    OR1200处理器中实现的是直接映射方式。所以本书仅仅对直接映射方式作介绍。直接映射方式是指每个虚拟地址仅仅能映射到TLB中唯一的一个表项。

    如果内存页大小是8KBTLB中有64项。採用直接映射方式时的TLB变换原理如图10.4所看到的。

    由于页大小是8KB,所以虚拟地址的0-12bit作为页内地址偏移。

    TLB表有64项,所以虚拟地址的13-18bit作为TLB表项的索引。假如虚拟地址的13-18bit1,那么就会查询TLB的第1项,从中取出标识,与虚拟地址的19-31位作比較,如果相等。表示TLB命中,反之,表示TLB失靶。

    TLB失靶时,能够由硬件将须要的页表项载入入TLB,也可由软件载入,详细取决于处理器设计。OR1200没有提供硬件载入页表项的功能,仅仅能由软件实现。TLB命中时,此时翻译得到的物理地址就是TLB1项中的标识(即物理地址13-31位)与虚拟地址0-12bit的结合。在地址翻译的过程中还会结合TLB项中的辅助信息推断是否发生违反安全策略的情况。比方:要改动某一页,但该页是禁止改动的。此时就违反了安全策略,会触发异常。

    OR1200中的MMU分为指令MMU、数据MMU。分别简称为IMMUDMMU。採用的是页式内存管理机制,每一页大小是8KB,没有实现页表管理、页表查询、更新、锁定等功能,都须要软件实现。

    实际上OR1200MMU模块主要实现的就是TLBOR1200TLB的大小能够配置。默认是64项,採用的是直接映射方式。IMMU中有ITLBDMMU中有DTLB,可是ITLBDTLB的载入、更新、失效、替换等功能也都须要软件实现。

    本章从下一节開始将分别对IMMUDMMU进行分析。

  • 相关阅读:
    精确计算微信小程序scrollview高度,全机型适配
    精确计算微信小程序scrollview高度,全机型适配
    七牛云赵之健:多维度融合赋能视频 AI 的实践
    javaweb学习总结(四十)——编写自己的JDBC框架
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    深度学习入门笔记(十三):批归一化(Batch Normalization)
    4G EPS 中的 Control Plane
    4G EPS 中建立 eNB 与 MME 之间的 S1 连接
  • 原文地址:https://www.cnblogs.com/mqxnongmin/p/10758396.html
Copyright © 2011-2022 走看看