千家信息网

CPU是如何访问内存的

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这期内容当中小编将会给大家带来有关CPU是如何访问内存的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。内存管理可以说是一个比较难学的模块,之所以比较难学。一是内存管
千家信息网最后更新 2025年01月23日CPU是如何访问内存的

这期内容当中小编将会给大家带来有关CPU是如何访问内存的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

内存管理可以说是一个比较难学的模块,之所以比较难学。一是内存管理涉及到硬件的实现原理和软件的复杂算法,二是网上关于内存管理的解释有太多错误的解释。希望可以做个内存管理的系列,从硬件实现到底层内存分配算法,再从内核分配算法到应用程序内存划分,一直到内存和硬盘如何交互等,彻底理解内存管理的整个脉络框架。下面主要讲解硬件原理和分页管理。

CPU通过MMU访问内存

我们先来看一张图:

从图中可以清晰地看出,CPU、MMU、DDR 这三部分在硬件上是如何分布的。首先 CPU 在访问内存的时候都需要通过 MMU 把虚拟地址转化为物理地址,然后通过总线访问内存。MMU 开启后 CPU 看到的所有地址都是虚拟地址,CPU 把这个虚拟地址发给 MMU 后,MMU 会通过页表在页表里查出这个虚拟地址对应的物理地址是什么,从而去访问外面的 DDR(内存条)。

所以搞懂了 MMU 如何把虚拟地址转化为物理地址也就明白了 CPU 是如何通过 MMU 来访问内存的。

MMU 是通过页表把虚拟地址转换成物理地址,页表是一种特殊的数据结构,放在系统空间的页表区存放逻辑页与物理页帧的对应关系,每一个进程都有一个自己的页表。

CPU 访问的虚拟地址可以分为:p(页号),用来作为页表的索引;d(页偏移),该页内的地址偏移。现在我们假设每一页的大小是 4KB,而且页表只有一级,那么页表长成下面这个样子(页表的每一行是32个 bit,前20 bit 表示页号 p,后面12 bit 表示页偏移 d):

CPU,虚拟地址,页表和物理地址的关系如下图:

页表包含每页所在物理内存的基地址,这些基地址与页偏移的组合形成物理地址,就可送交物理单元。

上面我们发现,如果采用一级页表的话,每个进程都需要1个4MB的页表(假如虚拟地址空间为32位(即4GB)、每个页面映射4KB以及每条页表项占4B,则进程需要1M个页表项(4GB / 4KB = 1M),即页表(每个进程都有一个页表)占用4MB(1M * 4B = 4MB)的内存空间)。然而对于大多数程序来说,其使用到的空间远未达到4GB,何必去映射不可能用到的空间呢?也就是说,一级页表覆盖了整个4GB虚拟地址空间,但如果某个一级页表的页表项没有被用到,也就不需要创建这个页表项对应的二级页表了,即可以在需要时才创建二级页表。做个简单的计算,假设只有20%的一级页表项被用到了,那么页表占用的内存空间就只有0.804MB(1K * 4B + 0.2 * 1K * 1K * 4B = 0.804MB)。除了在需要的时候创建二级页表外,还可以通过将此页面从磁盘调入到内存,只有一级页表在内存中,二级页表仅有一个在内存中,其余全在磁盘中(虽然这样效率非常低),则此时页表占用了8KB(1K * 4B + 1 * 1K * 4B = 8KB),对比上一步的0.804MB,占用空间又缩小了好多倍!总而言之,采用多级页表可以节省内存。

二级页表就是将页表再分页。仍以之前的32位系统为例,一个逻辑地址被分为20位的页码和12位的页偏移d。因为要对页表进行再分页,该页号可分为10位的页码p1和10位的页偏移p2。其中p1用来访问外部页表的索引,而p2是是外部页表的页偏移。

上述就是小编为大家分享的CPU是如何访问内存的了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

内存 地址 物理 空间 偏移 管理 只有 硬件 进程 算法 内容 原理 基地 基地址 就是 时候 磁盘 程序 系统 索引 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络服务器三大特征 网络技术从业方向统计图 G6e连接不到本地数据库 高速公路网络安全自查 邮件服务器证书 吴中区进口网络技术质量推荐 远程安全登录服务器 全光通信网络技术 收费专网网络安全等级保护 徐汇区专业软件开发结构设计 违反网络安全法算违法记录吗 数据库应用心得体会 阿神解说100人服务器第三期 服务器更换内存 燃烧的远征奥罗服务器好吗 开源网络安全专业 我国在哪年成立中央网络安全小组 专业技术人员网络安全知识内容 榆树品质网络技术服务口碑推荐 文献中心数据库可搞什么 虹口区性能优良网络技术哪家强 国家网络安全管理工作要点 2021网络安全专业有调剂的学校 无线网络技术研讨会 杭州湾新区手机游戏软件开发 网络安全技能ppt 如何确定数据库的存储结构 交警网络安全承诺书 法制建设网络安全 什么是网络安全最大风险
0