cpu为什么可以直接访问内存(cpu是如何访问内存的)

技术CPU是如何访问内存的这期内容当中小编将会给大家带来有关CPU是如何访问内存的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。内存管理可以说是一个比较难学的模块,之所以比较难学。一是

本期,边肖将为您带来关于CPU如何访问内存的信息。文章内容丰富,从专业角度进行分析和描述。看完这篇文章,希望你能有所收获。

内存管理可以说是一个难学的模块,这也是为什么难学的原因。首先,内存管理涉及硬件的实现原理和软件的复杂算法;第二,网上关于内存管理的错误解释太多了。我希望做一系列的内存管理,从硬件实现到底层内存分配算法,再从内核分配算法到应用内存分区,直到内存如何与硬盘交互等等。从而彻底了解内存管理的整个框架。下面主要讲解硬件原理和分页管理。

00-1010我们先来看一张图片:

CPU是如何访问内存的

从图中可以清楚地看到CPU、MMU和DDR是如何在硬件中分布的。首先,CPU访问内存时,需要通过MMU将虚拟地址转换为物理地址,然后通过总线访问内存。MMU开启后,CPU看到的所有地址都是虚拟地址。CPU将这个虚拟地址发送给MMU后,MMU会在页表中找出这个虚拟地址对应的物理地址是什么,从而访问外部DDR(记忆棒)。

因此,了解MMU如何将虚拟地址转换为物理地址将有助于您了解CPU如何通过MMU访问内存。

MMU通过页表将虚拟地址转换为物理地址,这是一种特殊的数据结构。它被放置在系统空间的页表区域中,以存储逻辑页和物理页框架之间的对应关系。每个进程都有自己的页表。

CPU访问的虚拟地址可以分为:p(页码),作为页表的索引;d(页面偏移量),页面内的地址偏移量。现在我们假设每页的大小为4KB,页表只有一级,那么页表看起来是这样的(页表的每行有32位,前20位代表页码P,后12位代表页面偏移量D):

CPU是如何访问内存的

CPU、虚拟地址、页表和物理地址之间的关系如下:

CPU是如何访问内存的

页面包含每个页面所在的物理内存的基址。这些基址和页面偏移量的组合形成一个物理地址,可以发送到物理单元。

我们发现,如果采用一级页表,每个进程需要一个4 MB的页表(如果虚拟地址空间为32位(即4GB),每个页面映射4KB,每个页表项占用4MB,那么进程需要1M的页表项(4GB/4KB=1M),即页表(每个进程有一个页表)占用4 MB (1 M * 4B=4 MB)。但是对于大多数程序来说,它们使用的空间远远不是4GB,那么为什么要映射不可能使用的空间呢?也就是说,一级页表覆盖了整个4GB的虚拟地址空间,但是如果不使用一级页表的页表条目,就不需要创建这个页表条目对应的二级页表,也就是说,只有在需要的时候才能创建二级页表。做一个简单的计算,假设只使用了20%的一级页表条目,那么页表占用的内存空间只有0.804 MB(1k * 4b 0.2 * 1k * 1k * 4b=0.804 MB)。除了在需要时创建辅助页表,该页还可以从磁盘传输到内存。只有主页表在内存中,只有一个次页表在内存中,其余的都在磁盘中(虽然这样效率很低)。此时页表占用8KB(1K * 4B 1 * 1K * 4B=8KB),远小于上一步的0.804MB。总之,使用多级页表可以节省内存。

第二级页表是重新分页页表。还是以之前的32位系统为例,一个逻辑地址分为20位页码和12位页偏移量d,因为页表要重新分页,所以页号可以分为10位页码p1和10位页偏移量p2。其中p1用于访问外部页表的索引,p2是外部页表的页偏移量。

CPU是如何访问内存的

CPU是如何访问内存的

这就是上面边肖共享的中央处理器访问内存的方式。如果你恰好也有类似的疑惑,可以参考上面的分析来理解。想了解更多,请关注行业信息渠道。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/154598.html

(0)

相关推荐

  • 君越怎么样,君越的优点和缺点是什么

    技术君越怎么样,君越的优点和缺点是什么展开全部 1、车体宽大君越怎么样,大气,外形给人一种豪华上档次的感觉。 2、有全新四缸全铝发动机,据说油耗在6.2升/100公里/90公里等速,如果能真的达到这个标准,我感觉应该非

    生活 2021年10月25日
  • k8s之PV、PVC

    技术k8s之PV、PVC k8s之PV、PVC目录一、PVC和PV1.1 PV概念1.2 PVC概念1.3 PV与PVC之间的关系1.4 两种PV的提供方式二、基于nfs创建静态PV资源和PVC资源2.

    礼包 2021年11月11日
  • java多线程梳理,1)

    技术java多线程梳理,1) java多线程梳理(1)要开始了解多线程的知识我们先得理解线程是什么线程和进程之间关系
    线程是什么
    线程是程序的一个指令序列,具有传统进程所具有的特征,故又称为轻型进程或进

    礼包 2021年11月4日
  • 火柴英文,卖火柴的小女孩英文原版结局

    技术火柴英文,卖火柴的小女孩英文原版结局Once upon a time a little girl tried to make a living by selling matches in the street. Th

    生活 2021年10月26日
  • 栩栩如生和惟妙惟肖的区别,惟妙惟肖这个成语是对的嘛

    技术栩栩如生和惟妙惟肖的区别,惟妙惟肖这个成语是对的嘛一、与惟妙惟肖意思相近的成语栩栩如生和惟妙惟肖的区别:栩栩如生 1、成语读音:xǔ xǔ rú shēng 2、释义:形容画作、雕塑中的艺术形象等生动逼真,就像活的一

    生活 2021年10月23日
  • 如何理解UML设计模式

    技术如何理解UML设计模式这篇文章将为大家详细讲解有关如何理解UML设计模式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.UML1.1UML是什么一种创建程序模型的可

    攻略 2021年11月23日