虚拟地址与物理地址:64位VS48位

物理地址宽度虚拟地址宽度是两个不同层次的概念,它们的区别可以用一个非常贴切的比喻来理解:

把整个系统想象成一个巨大的图书馆:

  • 虚拟地址(64位):图书目录 中的编号。
    • 这个目录非常庞大,理论上可以有 2^64 个编号(这是一个天文数字:16 EB)。每个读者(进程)都觉得自己拥有完整且独立的目录。
    • 位宽(64位) 决定了这个目录理论上能编多少号,它定义的是地址空间的"命名能力"。
  • 物理地址(48位): 是图书馆实际的书架位置
    • 图书馆实际只有 2^48 个物理书架格子(256 TB)。这已经非常巨大,但远小于目录的编号数量。
    • 位宽(48位) 决定了实际上有多少个可用的物理存储单元

详细对比

特性 虚拟地址(64位) 物理地址(48位)
"是什么" 进程看到的地址,是一个抽象的编号。 真实内存芯片(DRAM)上的电气信号线寻址的单元。
所处层次 软件层面(CPU的MMU使用)。 硬件层面(内存控制器、DRAM芯片使用)。
核心目的 为每个进程提供连续、独立、受保护的地址空间。实现隔离、共享和"虚拟内存"。 唯一标识物理内存中的每一个字节。
宽度决定什么 决定了单个进程理论上能寻址的空间上限(例如 16 EB)。这是一个逻辑上限。 决定了计算机最大支持多少物理内存(例如 256 TB)。这是一个物理上限。
地址转换 通过MMU和页表,映射到物理地址。 是转换的终点,直接送到内存总线。
为什么宽度不同 64位:为了极致的未来可扩展性和统一的架构设计(所有地址都用64位寄存器存储)。 48位 :是成本、功耗、硬件复杂度的工程折衷。目前及可预见的未来,256TB物理内存对绝大多数系统都绰绰有余。

两者的关系与协同工作

它们通过 MMU页表 紧密联系:

  1. 进程视角 :一个程序使用 0x400000 这样的虚拟地址加载指令。
  2. 地址转换 :CPU的MMU单元收到这个地址,查询当前进程的页表。页表就像一个"翻译字典",记录了 0x400000 这个"目录编号"对应哪个"物理书架位置"。
  3. 物理访问 :假设页表显示它映射到物理地址 0x8000。MMU就将这个48位的物理地址发送到内存控制器,从而从真实的物理内存中读取数据。
  4. 关键点 :如果物理地址只有48位,这意味着页表中所有条目的"物理页帧号"字段只需要48位宽。64位的虚拟地址在转换过程中,其高位会被用于查找页表目录,最终被"翻译"或"截断"为一个48位的物理地址。

为什么ARM64通常用48位虚拟地址而不是64位?

你可能会问,既然虚拟地址寄存器是64位的,为什么通常只用48位?这是为了效率

  • 在48位虚拟地址布局中(如前所述),地址被平分为用户空间和内核空间(各128TB)。最高位比特(第47位)直接指明了这个地址属于用户空间(0)还是内核空间(1)。硬件可以借此快速进行权限检查。
  • 如果使用完整的64位地址,页表的结构会变得更深(需要更多级),每次地址转换需要更多次内存访问,显著降低性能。48位是一个在地址空间大小(256TB对单个进程已完全足够)和转换效率之间的完美平衡点。

总结

概念 比喻 关键数字(例) 核心思想
64位虚拟地址 巨大的、私有的图书目录编号空间。 2^64 = 16 EB (理论极限) 抽象与隔离。为软件提供近乎无限的、安全的地址视图。
48位物理地址 图书馆实际的书架数量和位置。 2^48 = 256 TB (物理上限) 物理资源限制。由硬件成本、设计和功耗决定的实际可用内存上限。

简单来说:64位虚拟地址宽度让每个进程都"感觉"自己拥有一个超级大的私人地址空间;而48位物理地址宽度则标明了这台计算机"实际拥有"的物理内存容量上限。 MMU负责在这两者之间进行翻译和调度。

相关推荐
步步为营DotNet3 小时前
深度剖析.NET中IHostedService:后台服务管理的关键组件
服务器·网络·.net
Ares-Wang4 小时前
网络》》路由引入 、路由控制 》》路由策略 route-policy 、Filter-Policy(过滤策略)
网络·智能路由器
的卢马飞快6 小时前
【C语言进阶】给数据一个“家”:从零开始掌握文件操作
c语言·网络·数据库
Yu_Lijing6 小时前
《图解HTTP》笔记与读后感(上)
网络·笔记·网络协议·http
czy87874756 小时前
connect() 的阻塞特性取决于它所关联的 socket 是否被设置为非阻塞模式,connect() 会等待 TCP 三次握手的超时时间
服务器·网络·tcp/ip
上海云盾-小余7 小时前
Edge SCDN是如何实现智能 WAF 防护的?
前端·网络·安全·edge
旖旎夜光7 小时前
Linux(12)(上)
linux·网络
Gofarlic_oms18 小时前
UG/NX浮动许可证池智能配置与负载均衡策略
大数据·运维·网络·人工智能·微服务·负载均衡
2501_948120158 小时前
基于机器学习的网络异常检测与响应技术研究
网络·机器学习·php