51CTO首页
AI.x社区
博客
学堂
精品班
软考社区
免费课
企业培训
鸿蒙开发者社区
WOT技术大会
IT证书
公众号矩阵
移动端

CPU是如何访问内存的?

运维 系统运维
内存管理是一个复杂的模块,它涉及到硬件的交互和复杂的软件算法。本片文章我们就来讲解下硬件原理和分页管理。

在之前的《 Linux内存管理》文章中,我们大致讲解了Linux内存管理的体系架构和映射过程。当然内存管理是一个复杂的模块。它涉及到硬件的交互和复杂的软件算法。本片文章我们就来讲解下硬件原理和分页管理。

CPU如果访问内存?

答案很简单,通过内存管理单元(MMU),我们先看一张很简单的CPU访问内存的流程图:

CPU是如何访问内存的?

TLB:转换lookaside 缓存,有了它可以让虚拟地址到物理地址转换速度大增。

从上图中我们可以清楚的知道了,CPU,DDR,MMU它们三者之间的关系。CPU在MMU开启的情况下,访问的都是虚拟地址。首先通过MMU将虚拟地址转换为物理地址,然后再通过总线上去访问内存(我们都知道内存是挂在总线上的)。

那MMU是怎么将虚拟地址转换为物理地址呢?当然之前的文章也讲过了,是通过页表的方式。MMU从页表中查出虚拟地址对应的物理地址是什么,然后就去访问物理内存了。

所以搞懂了上面的问题,也就解决了标题的问题:《CPU如何访问内存的?》

页表是什么?页表就是一种特殊的数据结构,它保存的是逻辑页和物理页帧的映射关系,而且每一个进程都各自拥有自己的页表。

虚拟地址在我们看来是一个整体,其实不然,它是可以拆分的。可以分为:

  • p(页号),它可以存储页表的索引;
  • d(偏移),可以在页内进行地址偏移

我们假设页大小为4KB,而且页表只有一级,也就是一级页表。那虚拟地址的拆分后的样子是这样的:

下面我们来看下CPU,虚拟地址,页表和物理地址之间的关系。看下图:

很简单的吧,应该看懂了吧。我们可以发现如果采用一级页表的话,每个进程需要维护一个4MB大小的页表(我们可以算下,如果是32位平台,地址空间大小为4GB,页面大小为4KB,每个页表项占用4字节,所以4GB/4KB*4=4MB)。

因为每个进程都有自己的页表,所以在多进程的情况下,内存消耗简直惊人。所以一级页表是不合理的。那有没有优化的办法呢?答案是有的,就是利用多级页表,可以节省内存。

二级页表就是将页表再次分页。再次举例,将逻辑地址分为10位页码p1+10位页码p2+12位页偏移。我们直接看图吧。

访问过程如下图:

责任编辑:赵宁宁 来源: 今日头条
相关推荐
CPU如何访问内存
内存管理可以说是一个比较难学的模块,之所以比较难学。一是内存管理涉及到硬件的实现原理和软件的复杂算法,二是网上关于内存管理的解释有太多错误的解释。

2018-12-06 12:58:50

CPU 内存 模块
CPU 如何识数
先来看一个简单的问题:小孩子都知道数数:1,2,3,4,5,6,7,8,9,10,可为什么要这样数呢为什么不是1,2,3,4,5,6,10呢

2021-05-10 08:20:32

CPU 符号 整数
Linux 如何管理内存
Linux内存管理模型非常直接明了,因为Linux的这种机制使其具有可移植性并且能够在内存管理单元相差不大的机器下实现Linux,下面我们就来认识一下Linux内存管理是如何实现的。

2020-07-28 08:10:33

Linux 内存 虚拟
什么内存溢出,Golang如何解决内存溢出
虽然Go的垃圾回收机制可以帮助避免大部分的内存溢出问题,但开发者仍需注意合理使用内存,避免大数据结构的无限增长、递归无限循环等问题。

2024-09-09 09:41:03

内存溢出 golang 开发者
CPU怎么保证内存访问冲突?一致性?
内存一致性模型(memoryconsistencymodel)就是用来描述多线程对共享存储器的访问行为,在不同的内存一致性模型里,多线程对共享存储器的访问行为有非常大的差别。

2019-10-16 00:06:08

CPU 内存 存储
线程切换如何CPU 洗脑
计算机系统中有很多程序员习以为常但又十分神秘的存在:函数调用、系统调用、进程切换、线程切换以及中断处理。

2021-07-28 07:53:20

CPU 线程 切换
鸿蒙内核源码分析(CPU篇) | 内核如何描述CPU ?
文章由鸿蒙社区产出,想要了解更多内容请前往:51CTO和华为官方战略合作共建的鸿蒙技术社区https:harmonyos.51cto.com

2021-04-08 09:32:17

鸿蒙 HarmonyOS 应用
我们常说内存怎么分配如何减少内存浪费大难题
说到内存的分配方式,就不得不提连续分配方式。这种方式是指为一个用户程序分配一个连续的内存空间,它曾被广泛的用于20世纪6070年代的OS中,至今仍被使用。连续分配方式可以进一步分为单一连续分配、固定分配方式、动态分区分配以及动态重定位分配。

2019-02-28 14:04:28

内存 固定分配 存储
Java代码如何CPU狂飙起来
在介绍Java如何一步步被执行起来之前,我们需要先弄明白为什么Java可以实现跨平台运行,因为搞清楚了这个问题之后,对于我们理解Java程序如何被CPU执行起来非常有帮助。

2023-03-05 22:30:25

Java CPU
Java与CPU缓存如何亲密接触
CPU在读主存的时候,会先将主存的一块数据加载到缓存上,然后在缓存上读取。当CPU写主存的时候,它会首先写缓存,在未来的某个时间点再一次性将缓存的数据全部刷回主存,这样就可以提高写操作的性能。

2018-08-16 11:30:12

Java CPU 缓存
这次我们看看阿里的人如何蹂躏CPU
在前面的系列文章中皮皮就介绍过如何使得CPU、IO满载,如何实现网络延迟、丢包和中断,如何模拟线程、进程以及机器假死。

2019-08-16 14:18:38

CPU 故障
CPU 如何理解 01 二进制
CPU就像一个单细胞一样,本身不具备任何思考能力,没什么自己的想法,你给它一个刺激,它只是简单的会有一个反应。

2021-11-10 09:15:00

CPU 01 二进制 Linux
你不好奇 CPU 如何执行任务
CPU是如何调度任务的?如果你的任务对响应要求很高,你希望它总是能被先调度,这该怎么办?

2020-11-10 08:41:51

CPU 执行任务 内存
如何Linux下得到CPU内存及PCI信息
如何Linux下得到CPU、内存及PCI信息。

2009-02-16 18:08:01

linux 硬件信息 cpu
Linux 如何进行内存分配
在Linux操作系统中,虚拟地址空间的内部又被分为内核空间和用户空间两部分,不同位数的系统,地址空间的范围也不同。比如最常见的32位和64位系统。

2023-10-17 00:01:34

Linux 操作系统
深度解析 Flink 如何管理好内存
在这篇文章中,我们将讨论ApacheFlink如何管理内存,讨论其自定义序列化与反序列化机制,以及它是如何操作二进制数据的。

2019-08-19 08:01:50

Flink 数据 管理内存
为什么 CPU 访问硬盘很慢
在计算机体系结构中,硬盘属于一种常见的输入输出设备,操作系统在启动时不一定需要硬盘,它既可以通过硬盘启动,也可以通过网络设备或者外部设备启动,所以硬盘不是计算机运行的必要条件。

2020-08-11 09:41:27

CPU 硬盘 操作系统
图解 | 高性能服务器CPU如何布局
本文并不会从逻辑电路、芯片设计、cpu历史等等角度去阐述,水平有限实战第一,通过本文你将了解到以下内容。

2021-09-14 10:21:13

CPU 高性能 服务器
数据结构如何装入CPU寄存器
我们在之前很多文章的讲解中涉及了CPU与寄存器,然后有同学问了这样一个问题:既然CPU内部的寄存器数量有限,容量有限,那么我们使用的庞大的数据结构是怎样装入寄存器供CPU计算的呢

2021-08-13 07:56:13

CPU 寄存器 数据
如何使用vCSA6.5监控CPU内存和网络
嵌入式vPostgres数据库推出了全新的用户界面,在显示设备的资源使用和消耗方面与之前有所不同。非常重要的一点是其能够监控已经占用的存储空间,因为事物日志有可能填满所有空间,并且VMware自动配置了空间回收机制,称为vacuuming。

2017-05-08 14:29:11

vCSA6.5 CPU 内存

玻璃钢生产厂家阿里巴巴玻璃钢雕塑河北特色商场美陈市场价玻璃钢花盆费用玻璃钢雕塑打磨抛光黄山个性化玻璃钢雕塑开封镜面校园玻璃钢雕塑双鸭山玻璃钢雕塑造型邵阳长沙玻璃钢雕塑厂家设计中山迪庆玻璃钢卡通雕塑信阳佛像玻璃钢雕塑大型主题商场美陈厂家直销常见玻璃钢花盆定制房山区道路景观玻璃钢花盆成都白色玻璃钢花盆公仔形象定制玻璃钢雕塑人物动物玻璃钢雕塑新模式宝鸡室外不锈钢玻璃钢卡通雕塑东莞自发光动物玻璃钢雕塑摆件吉林舞台道具商场美陈静安区拉丝玻璃钢雕塑价格小区玻璃钢雕塑报价多少无锡玻璃钢古代人物雕塑设计盘龙区设计玻璃钢雕塑岳麓玻璃钢花盆花器宁德玻璃钢仿铜雕塑定制广西动物玻璃钢雕塑定做贺州玻璃钢雕塑哪里有许昌火烈鸟玻璃钢雕塑制作玻璃钢卡通人物雕塑工程厂家道路玻璃钢花盆香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化