电子产业一站式赋能平台

PCB联盟网

搜索
查看: 24|回复: 0
收起左侧

内存的工作原理

[复制链接]

434

主题

434

帖子

5935

积分

四级会员

Rank: 4

积分
5935
发表于 昨天 10:01 | 显示全部楼层 |阅读模式
通过内存的组成原理那篇:内存的组成原理我们已经知道了内存主要是由晶体管+电容组成。
在现代计算机系统中,内存(Memory)扮演着至关重要的角色。它不仅是处理器与外部存储之间的数据桥梁,更是程序运行的核心舞台。本文将深入探讨计算机内存的结构与工作原理,帮助您全面理解这一关键组件。

4jyifnx1ko564096038629.jpg

4jyifnx1ko564096038629.jpg

一、内存的基本概念内存,通常指随机存取存储器(RAM, Random Access Memory),是计算机中用于暂时存储数据和指令的部件。根据其工作方式,RAM可分为两种主要类型:静态随机存取存储器(SRAM):使用双稳态触发器(通常由6个晶体管组成)来存储每个位的数据。SRAM速度快,但成本高,主要用于缓存(Cache)等对速度要求高的场合。

4mauuppm3sj64096038729.png

4mauuppm3sj64096038729.png

动态随机存取存储器(DRAM):使用一个晶体管和一个电容来存储每个位的数据。由于电容会漏电,DRAM需要定期刷新以保持数据。它的成本较低,容量大,广泛应用于主存中。

nw4lowhofj564096038829.png

nw4lowhofj564096038829.png

读存储器(ROM, Read-Only Memory):只读存储器。这意味着一旦数据被写入ROM,就不能被修改。ROM主要用于存储固定的程序和数据,如BIOS程序、操作系统启动代码等。
二、内存的结构组成内存的结构可以从物理和逻辑两个层面来理解。
1. 物理结构内存条(Memory Module)是内存的物理载体,常见的有DDR3、DDR4、DDR5等类型。每条内存条由多个内存芯片组成,每个芯片内部包含数百万甚至数十亿个存储单元。
在DRAM中,每个存储单元由一个晶体管和一个电容组成,用于存储1位数据。这些存储单元排列成矩阵结构,通过行和列的地址线进行访问。
2. 逻辑结构从逻辑上看,内存被划分为多个地址单元,每个单元存储一定数量的位(通常为8位,即1字节)。处理器通过地址总线指定要访问的内存单元,通过数据总线进行数据的读写操作。
为了提高访问速度,现代处理器还引入了多级缓存(L1、L2、L3 Cache),这些缓存通常使用SRAM构建,存储最近使用的数据和指令,减少访问主存的次数。
三、内存的工作原理

iwbe3d50b5x64096038929.jpg

iwbe3d50b5x64096038929.jpg

如上图所示:内存又叫主存,从名称可以看出,它是计算机主要存储位置。那有些童鞋就会问,那磁盘的存储空间不是更大嘛。磁盘的存储空间虽然很大,但是计算机的CPU没办法直接跟磁盘交互,它只跟内存打交道。CPU通过总线读写内存的数据,如果数据不在内存中,就会去磁盘中检索对应的数据到内存中,然后返回给CPU。所以内存在计算机中核心的作用就是用来做主缓存,配合CPU读写数据。一句话总结:内存的工作原理主要是数据的存储、读取和刷新。
1. 数据存储与读取当处理器需要读取数据时,会将目标地址发送到内存控制器,控制器通过地址线定位到对应的存储单元,然后通过数据线将数据传输回处理器。写入数据的过程类似,只是数据流的方向相反。DRAM中,由于每个位的数据存储在电容中,而电容会随时间漏电,因此需要定期刷新(Refresh)以维持数据的正确性。刷新操作由内存控制器自动完成,通常每64ms刷新一次所有存储单元。
2.内存与CPU的关系
内存在计算机中的作用,主要是用来缓存数据,提供给CPU使用。但是CPU运行的速度太快了,相对而言内存的读写速度就非常慢了。如果CPU每次都要等内存操作完成,才可以继续后续的操作,那效率会非常低下。所以为了解决这个问题,CPU内部缓存逐步发展到L1 Cache、L2 Cache、L3 Cache的三级缓存结构,如下图所示:

004wd4snly164096039029.jpg

004wd4snly164096039029.jpg

三级缓存:
L1 Cache,分为数据缓存和指令缓存,逻辑核独占。
L2 Cache,物理核独占,逻辑核共享。
L3 Cache,所有物理核共享。
缓存级别越小,越靠近CPU, 同样也意味着速度越快,但是对应的容量越少。
存储器存储空间大小:内存>L3>L2>L1>寄存器。
存储器速度快慢排序:寄存器>L1>L2>L3>内存。
通过三级缓存结构,可以极大地提高CPU运行效率,但是从方法论上来说,任何一件事情,肯定有好处和坏处。三级缓存结构好处显而易见,可以提高CPU运行效率,不用被内存读写速度慢拖累。但它不好的地方是,这种三级缓存结构,在数据同步方面比较麻烦。特别是多核处理器,在修改缓存数据之后,需要及时同步给其它核的CPU,不然对方读取到的就是脏数据。这也就是我们Java开发常说的内存屏障问题,需要采用volatile关键词来获取最新的数据。
2. 虚拟内存与地址映射上面讲到了,CPU会读写数据到内存中,那CPU是直接跟内存的实际物理地址交互的嘛?那如果是每个程序都直接跟内存物理地址交互,那就会存在:A程序写入a数据到内存中,同时B程序修改b数据到内存中。因为a和b对应的同一个内存物理地址,所以导致b直接覆盖a的数据。那如果这样的话,整个计算机将会乱套。所以我们的操作系统给出了这个解决方案,就是虚拟内存。
我们先来了解两个概念,如下所示:
虚拟内存地址:我们程序所使用的内存地址叫做虚拟内存地址(Virtual Memory Address)。
物理内存地址:实际存在硬件里面的空间地址叫物理内存地址(Physical Memory Address)。
2. 地址映射过程CPU其实不会直接跟内存物理地址交互,而是通过一个叫做内存管理单元(MMU),来将虚拟地址转为实际的物理地址,如下图所示:

svthbvu0p2b64096039129.png

svthbvu0p2b64096039129.png

内存管理单元(MMU):处理器中的一个组件,负责虚拟地址到物理地址的转换。
有了这个MMU之后,就不会出现数据互相影响的情况了。操作系统会给每一个进程分配独立的一套虚拟地址,各个进程之间互不干涉。通过虚拟内存来管理实际的物理地址,每一个进程申请的物理地址,因为有虚拟内存的统一管理,所以不会出现互相影响的情况。四、分页机制与页表结构分页机制将虚拟地址空间和物理地址空间划分为固定大小的页(Page)和页框(Page Frame)。这种方式简化了内存管理,提高了内存的利用率。
1. 简单页表简单页表为每个虚拟页维护一个页表项,记录其对应的物理页号。这种方式实现简单,但在32位或64位系统中,页表可能非常庞大,占用大量内存。
2. 多级页表为了解决简单页表占用内存过大的问题,现代操作系统采用多级页表结构。多级页表将页表分为多个层级,每一级页表只在需要时才创建,从而节省内存空间。
五、页面置换算法当物理内存不足时,操作系统需要将部分页面从内存中移除,腾出空间给新的页面。这就涉及到页面置换算法的选择。
1. 先进先出(FIFO)算法FIFO算法选择最早进入内存的页面进行置换。这种算法实现简单,但可能会导致频繁的页面置换,影响性能。
2. 最近最少使用(LRU)算法LRU算法选择最近最少使用的页面进行置换。这种算法能够更好地保留活跃页面,提高内存的利用率。
3. 时钟(Clock)算法时钟算法是对LRU算法的近似实现,使用一个环形队列和指针,遍历页面,选择合适的页面进行置换。
六、总结

hilzrhc4uoa64096039229.png

hilzrhc4uoa64096039229.png

内存作为计算机系统的核心组件,其结构和工作原理对系统性能有着深远的影响。从物理结构到逻辑架构,从数据存储到地址映射,内存的每一个细节都体现了计算机工程的精妙设计。随着技术的不断演进,内存将继续朝着更高的速度、更大的容量和更低的功耗方向发展,满足日益增长的计算需求。
了解内存的结构与工作原理,不仅有助于我们更好地使用和优化计算机系统,也为深入学习计算机体系结构和操作系统打下坚实的基础。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条


联系客服 关注微信 下载APP 返回顶部 返回列表