0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

从内存中读取translation tables的逻辑介绍

麦辣鸡腿堡 来源:TrustZone 作者:Hcoco 2023-11-26 16:04 次阅读

TWU

table walk unit:包含从内存中读取translation tables的逻辑

一个完整的页表翻译和查找的过程叫作页表查询(Translation Table Walk),页表查询的过程由硬件自动完成,但是页表的维护需要软件来完成。

页表查询是一个相对耗时的过程,理想的状态是TLB里缓存有页表转换的相关信息。当TLB未命中时,才会去查询页表,并且开始读入页表的内容。

page table

page table是每个进程独有的,是软件实现的,是存储在main memory(比如DDR)中的

Address Translation

因为访问内存中的页表相对耗时,尤其是在现在普遍使用多级页表的情况下,需要多次的内存访问,为了加快访问速度,系统设计人员为page table设计了一个硬件缓存 - TLB,CPU会首先在TLB中查找,因为在TLB中找起来很快。TLB之所以快,一是因为它含有的entries的数目较少,二是TLB是集成进CPU的,它几乎可以按照CPU的速度运行。

如果在TLB中找到了含有该虚拟地址的entry(TLB hit),则可从该entry中直接获取对应的物理地址,否则就不幸地TLB miss了,就得去查找当前进程的page table。这个时候,组成MMU的另一个部分table walk unit就被召唤出来了,这里面的table就是page table。

使用table walk unit硬件单元来查找page table的方式被称为hardware TLB miss handling,通常被CISC架构的处理器(比如IA-32)所采用。它要在page table中查找不到,出现page fault的时候才会交由软件(操作系统)处理。

与之相对的通常被RISC架构的处理器(比如Alpha)采用的software TLB miss handling,TLB miss后CPU就不再参与了,由操作系统通过软件的方式来查找page table。使用硬件的方式更快,而使用软件的方式灵活性更强。IA-64提供了一种混合模式,可以兼顾两者的优点。

如果在page table中找到了该虚拟地址对应的entry的p(present)位是1,说明该虚拟地址对应的物理页面当前驻留在内存中,也就是page table hit。找到了还没完,接下来还有两件事要做:

• 既然是因为在TLB里找不到才找到这儿来的,自然要更新TLB。

• 进行权限检测,包括可读/可写/可执行权限,user/supervisor模式权限等。如果没有正确的权限,将触发SIGSEGV(Segmantation Fault)。

如果该虚拟地址对应的entry的p位是0,就会触发page fault,可能有这几种情况:

• 这个虚拟地址被分配后还从来没有被access过(比如malloc之后还没有操作分配到的空间,则不会真正分配物理内存)。触发page fault后分配物理内存,也就是demand paging,有了确定的demand了之后才分,然后将p位置1。

• 对应的这个物理页面的内容被换出到外部的disk/flash了,这个时候page table entry里存的是换出页面在外部swap area里暂存的位置,可以将其换回物理内存,再次建立映射,然后将p位置1。

后面再进一步就是看看这个TLB中具体是怎么找的,在page table中又是怎么“walk”,这部分就是具体的地址是怎么转换的,翻译的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    19156

    浏览量

    229075
  • 内存
    +关注

    关注

    8

    文章

    2998

    浏览量

    73874
  • 操作系统
    +关注

    关注

    37

    文章

    6734

    浏览量

    123184
  • MMU
    MMU
    +关注

    关注

    0

    文章

    91

    浏览量

    18264
收藏 人收藏

    评论

    相关推荐

    如何可编程逻辑访问处理器内存

    在存储在由指针寻址的内存的巨大稀疏矩阵上运行因子分解。有没有办法给PL创建的RTL提供相同的内存访问权限,或者我必须将整个矩阵存储在本地RAM
    发表于 04-28 10:26

    CPU怎样通过控制器将待运行的程序FLASH读入内存

    程序以机器码的形式,即二进制码的形式存在FLASH;上电后,CPU通过控制器将待运行的程序FLASH读入内存;代码在
    发表于 12-15 08:08

    CXL内存协议介绍

    Subordinate到Master的完成和指示,不带数据。3.3.6 S2M数据响应(DRS)DRS消息类包含Subordinate到Master读取内存数据。3.3.7 转发和排序规则在多跳互连网络
    发表于 11-01 15:08

    如何mifare和/或Felica读取内存内容?

    我希望能够 mifare 和/或 Felica 标签读取内存内容,类似于 Android 上的 NXP 标签检测器应用程序。我该怎么做呢?我已经使用 nfc03a1 和 SPI 上
    发表于 12-07 06:16

    GIC ITS的ITS tables和Command Queue访问简析

    ,Interrupt Translation Tables和Collection Table.而这些Device Table,Interrupt Translation Tables
    发表于 12-20 14:35

    ARMv8 MMU translation stages与相关寄存器介绍

    当EL3使用AArch64时,ARMv8 architecture定义了如下translation stages和translation regimes:上图是在implementation包含
    发表于 12-30 16:35

    DMA_读取GPIO电平到内存

    DMA_读取GPIO电平到内存,单片机程序
    发表于 01-12 18:19 10次下载

    windows应用程序读取进程的内存工具免费下载

    本文档的主要内容详细介绍的是windows应用程序读取进程的内存工具免费下载。
    发表于 05-27 08:00 1次下载

    FPGA逻辑关于地址映射说明

    背景与问题 CPU+FPGA架构,CPU做RC、FPGA做EP; FPGA逻辑(Vivado -BD - Address Editor)如何设置PCIe to AXI Translation
    的头像 发表于 11-20 15:28 6510次阅读
    FPGA<b class='flag-5'>逻辑</b><b class='flag-5'>中</b>关于地址映射说明

    内存是怎么读取数据的

    你知道内存是怎么读取数据的吗?知道数据是怎么一个一个字节发送的吗?
    的头像 发表于 03-30 13:52 5366次阅读

    如何有效地内核访问设备的全局内存

    个用途是将多维数组的 2D 块以合并的方式全局内存提取到共享内存,然后让连续的线程跨过共享内存块。与全局
    的头像 发表于 04-11 10:07 1170次阅读
    如何有效地<b class='flag-5'>从</b>内核<b class='flag-5'>中</b>访问设备的全局<b class='flag-5'>内存</b>

    ARM SMMU Data structure之Context Descriptors

    是否进行stage 1 translation,获取stage 1 translation tables的配置。
    的头像 发表于 05-11 09:10 919次阅读
    ARM SMMU Data structure之Context Descriptors

    为什么不能直接使用PLC读取到的模拟量信号?

    为什么不能直接使用PLC读取到的模拟量信号? PLC(可编程逻辑控制器)被广泛用于实现自动化控制,可以读取各种现场设备的模拟量信号。模拟量信号是实时反映被测量参数(如温度、压力、流量
    的头像 发表于 10-23 09:30 948次阅读

    怎么读取plc已存在的程序呢?

    怎么读取plc已存在的程序呢? PLC(可编程逻辑控制器)是一种重要的自动化设备,用于控制和监控各种工业过程。PLC的程序是由用户编写的,它们定义了PLC在操作
    的头像 发表于 11-21 16:10 8632次阅读

    逻辑内存和物理内存的区别

    逻辑内存和物理内存是计算机系统两个重要的概念,它们在计算机的运行和数据处理起着至关重要的作用。 1. 物理
    的头像 发表于 09-27 15:38 426次阅读