[计算机存储器分层体系|宏观认知|通用思想|适用于任何架构]寄存?缓存?主存?内存?外存?一文辨析清楚计算机存储器概念

一.宏观的冯诺伊曼计算机体系结构

首先,现代计算机是以冯诺伊曼的构想架构的,我们首先要对冯诺伊曼提出的体系结构大体上有宏观把握,才能开始后面的探讨。

图1 冯诺伊曼计算机体系结构

二.存储器的基本分类

1.从物理实现技术上分:

本图按照大黑书第五章P64整理,书上只讲了存储器的各种分类,没有讲出现代一般家用电脑的内存、缓存、硬盘分别属于其中的哪种,我在图中做了说明。

图2 存储器从物理实现上分类

另外就是有必要说明一点,严格来说寄存、缓存、内存、外存都是存储器,原因很简单,存东西的嘛,当然算存储器。但是一般来说,存储器只包括缓存、内存和外存。因为寄存器虽然也是存储数据的,但是他位于CPU内部,而且物理组成是用触发器门电路做的,从目的上来说它更多是为了配合ALU实现高速运算用的,要不然加减乘除运算的操作数在进入ALU之前总得有个快当好使的地方存吧?对吧,要不然存哪呢?所以出于这样的目的,发明的寄存器这种东西,所以它跟内存外存这种专门为存储数据而生的器件还是不太一样,所以一般来说认为寄存器是处理器的一部分,和存储器体系是分离开的,所以寄存器是不属于图2的任何一个分支的,而且你看我图1也是把寄存器放处理器那一分支的。所以我们本文讨论的就是计算机的存储器,我们首先对什么是存储器,存储器包括啥不包括啥,有个明确的把握。

2025/5/6添加:

2.从功能目标上分:

这张图我当年放的是从物理实现上区分不同存储器,现在我意识到,能从功能目标上区分存储器其实是更重要的!!因为我发现计算机中其实还有一个存储器,固件存储!

固件的概念:

知道软件,知道硬件,那啥叫固件?固件是固有软件,就比如BIOS系统。

事件的起因是我笔记本电脑硬盘烧了,去换了一块,所以操作系统需要重装。

然后重装系统时,我发现,没有操作系统,也就是硬盘完全空的电脑,它也能启动,启动的叫BIOS(Basic Input Output System)系统,重装win11系统就是从BIOS界面操作的,那么BIOS程序又存储在哪里!?经过查证,我才知道,原来,除了我们今天要辨析的寄存、缓存、内存、外存,电脑在主板上还有一块存储器,叫做固件存储,就存储BIOS程序。

所以引出,能从功能上区分计算机的存储器是很重要的,从功能上区分的话,你就想计算机的存储器都需要服务于啥目标,首先,操作系统,还有你玩的游戏,用的office程序,这些软件程序得有地方存吧?还有你的照片、文档这些文件,得有地方存吧?存啥地方呢?得是个永久性存储的地方吧?不能你电脑一断电完了照片也没了文档也没了装的程序也全没了吧?所以有了硬盘这个东西,你的个人照片文档、应用程序都存硬盘里,硬盘就是为了适应这种需求,所以能永久保存,而且大容量。然后呢,CPU高速运算处理,要执行的程序在硬盘里,CPU和硬盘之间交互可很慢啊,得找个跟CPU交互快的地方,把接下来一段事件内可能执行的程序,可能读取的数据,都放在那,这个地方不用硬盘那么大,只存储接下来很可能肯快用到的数据就完了,但是得读写够快,这就是内存啊,内存就是为了干这事而发明的。但是接下来人们又发现了有内存还不够快,还想再快点,所以有了缓存和寄存器。此外,设想假如你像我一样硬盘烧掉了,换了块新的空硬盘,那么这时候你的电脑总得能打开能操作吧?那需要啥?你要操作硬件,那肯定需要软件啊!这个软件跟别的那些应用软件比如你的游戏、浏览器和office不一样,那些刚说了都是存在硬盘里的,硬盘现在烧掉了换了新的那就没了,但是这软件是固定在你这电脑上的,哪怕你硬盘完全换了块空的也还在,那么它该存哪呢?所以电脑上其实主板上还有一个存储器,固件存储器,它的物理实现就跟硬盘差不多,因为从目的上都是要永久保存一个程序,所以物理实现也差不多。所以从功能目的上分,电脑的存储器就分为三类,一种是为了永久保存一些程序和文件,就是外存,硬盘和u盘,另一种就是为了配合CPU实现高速处理的,寄存和缓存和内存本质上来说都服务于这一目的,还有一种就是为了存储固有软件,就是固件存储。

好了,如果上面的话你觉得不懂,我们可以逐个来辨析这些概念:

三.内存

“内存"这个概念我们生活中时常听到, 然而教材上(我们学校用大黑书)却把它称为"主存",这里我刚学的时候也是十分懵逼,"主存"是啥,咋从没听说过? 后经上网查证,发现其实主存就是内存

所以,实际上,我们须明确:

1."主存"="内存",主存就是内存,内存就是主存,这俩是一个概念。

教材上与日常生活中叫法名称不统一,是造成我们懵逼的一大原因。

2.内存的作用:CPU与硬盘间的中转

内存是CPU与硬盘之间数据交互的中转站,其读写速度比硬盘要快很多,可以理解为CPU运转太快,硬盘反应慢跟不上,中间就出现了一个中转仓库叫内存。

3.内存的特点和属性

1.RAM和ROM,内存属于RAM

如上面的图所示,大黑书上第5章讲,计算机存储器分两种,分RAM(Random Access Memory, 随机存取存储器)和ROM(Read Only Memory), 内存就属于RAM,并且属于DRAM,

使用电容器,电容器充电则这时状态是1,如果放电则是0,由于电容器会放电所以需要周期性刷新,并且关机断电后其中的数据都会消失。

四.外存

1.指的就是硬盘\U盘\光盘等,

各种机械硬盘,固态硬盘(SSD),都属于是外存,虽然"外存"这个名称在官方的教材中不常见,但为了和内存区分开所以这么叫,显然电脑的应用游戏等都是存储在硬盘中的,下载安装游戏就是将数据写入硬盘,所以人们日常生活中常会犯一个错误:

你的室友可能会看着红了的C盘跟你吐槽:"才下了这么几个游戏就红了,这电脑内存空间也太小了 " 这种时候你知道他什么意思就行了,其实严格来说不是"内存空间太小",而是"硬盘空间太小",或者说“存储空间太小"也不算错。

2.属于EEPROM

小矛盾:

还是看上面那张图,现代硬盘u盘属于ROM中的EEPROM, EEPROM是什么?电可擦除可编程只读存储器?明明都可编程了咋还只读呢?谁家电脑硬盘只能读不能写啊? 这里听起来是有点矛盾,但我们老师当时是解释了这个矛盾的,计算机在早期,由于结构简单且技术尚不发达,存储数据的硬盘确实是只能读不能写,但这样显然无法满足技术逐渐进步的人类的需求,所以后来慢慢发展,从ROM到PROM(能写但只能写一次),再到(EPROM能写能擦,但擦需要拆下来),最后到EEPROM(随时随地可擦可写不用拆), 显然这时的硬盘已经不是只读的了,ROM已经不RO了,但是可能由于这一套理论体系已经提出确立了,不好再颠覆搞乱了,所以就出现了”可擦除可编程只读存储器"这种矛盾的名称,实际上它不是只读的。

特性:

解释完小矛盾,接着说其特点和属性,由上所述,ROM->PROM->EPROM->EEPROM,功能是不断强化全面的,当代民用电脑的硬盘\U盘,自然是都是属于EEPROM,而之前的ROM,PROM,EPROM,基本上都已淡出历史舞台了,毕竟众所周知,你的电脑硬盘肯定是你想写入想删除都随时随地的对吧,所以是EEPROM,

其数据有非易失性,断电后,数据不会丢失,

可写入可擦除,并且用电子脉冲控制,现代的实现技术是闪存颗粒,具体细节可自行百度。

五.缓存

1.缓存的作用

置于CPU和内存之间,而内存又被置于CPU和硬盘之间,这样架构是为了提高效率。缓存存取速度比内存快,用于存放内存中一部分内容的副本以提高读写速度(具体CPU和缓存与内存的工作过程原理此处不过多阐述,本文只用于澄清概念)。

记得大二上计组课老师给我们做了个形象的比喻(此处表白吉林大学计院刘小华老师讲课清晰人也超好,yyds!),说缓存就像个菜鸟驿站,快递员一家一家给你送太慢了,所以就设立菜鸟驿站这么个中转站,先都送到这,然后你再去取,这样效率高点。

2.属于SRAM

用触发器门电路保存数据,速度比内存也就是使用电容的DRAM更快,价格也更贵,

六.寄存

寄存器,严格来说也是一种存储器,但是按照第一张图,冯诺依曼的体系结构来说,寄存器是中央处理单元CPU的一部分,而CPU和存储器是不同的两个单元,其实寄存器也是一种存储器,但它既不是RAM也不是ROM.

1.寄存器的作用

存放临时数据和一些操作数,高速而独立。加减等运算的操作数都是存放在寄存器里,因为它最快。

但是程序中的变量那么多,寄存器肯定不能全放得下,像MIPS架构一共就32个通用寄存器。所以肯定要寄存器和存储器不断交互数据,把最hot,最常用,最有可能被用到的变量放在寄存器里,其余不太可能用的就先回缓存里待着去。而这种将不常使用(或稍后才使用的变量)存回到存储器中的过程叫寄存器溢出(spilling)。

2.由触发器构成

虽然寄存器从功能听起来是RAM,但和RAM的物理结构是不同的,寄存器由触发器组成,数字电路与模拟电路的专业课会讲用各种触发器拼接设计一个寄存器。所以和开头呼应一下,为什么一般不认为寄存器是存储器体系的一部分,因为从设计上它用的是触发器门电路,更多是为了暂存数据、高速运算,跟RAM和ROM这种专为保存数据的东西不一样。

七.不同存储器的对比

说了他们各自的属性和区别,我们再将他们联系对比一下:

八 总结:贯彻分层思想

最后总结来说,就还是归结到咱们计算机学习中贯穿始终的一种分层思想,现在计算机的存储器就是一个分层体系,最外层是磁盘/外存,最内层是寄存器,**寄存->缓存->内存->外存**,其中缓存又可能分多层,分层的目的就是为了实现最快读写速度。计算机这东西就这样,硬件也分层,软件也分层,一层又分好几层。一层一层就是用来中转,内存是CPU与外存之间的中转站,缓存又是CPU与内存之间的中转站。

以上就是我结合大黑书和自己的查证与理解写的辨析了,希望能帮到你。

2025-05-11 18:35:30