计算机组成与体系结构:存储器(Memory)
目录
📁 当你打开一个文件,计算机会做什么?
⚡ 越大的 memory,访问速度越快吗?
🧠 那么,我们是怎么设计存储器的呢?
Primary Memory(主存)登场!
DRAM(动态随机存取存储器)
SRAM(静态随机存取存储器)
Primary Memory 的典型工作流程
Secondary Memory(二级存储)
Secondary Memory 的典型设备
Secondary Memory 的访问方式
为什么访问速度比主存慢?
CPU 怎么访问存储器?
第一步:🔍 CPU 优先找 Cache
第二步:🚪Cache 没有怎么办?去找 主存(Main Memory)
第三步:📂主存也没有怎么办?去找 Secondary Memory(二级存储)
📁 当你打开一个文件,计算机会做什么?
想象一下你在电脑里打开一个视频。点开那一刻,计算机会做什么?
本质上,你的电脑要找到那个视频文件,读出数据,传给CPU解码和播放。所以最初的问题是:
“数据文件存在哪儿?我怎么能快速拿到它?”
从第一性原理来看,数据存储的本质就是:把信息(0 和 1)稳定地放在某种介质上,等需要时再读回来。最原始的存储方式是磁带、磁盘(比如硬盘),它们可以存很多东西,但读取速度很慢。这就产生了我们第一个认知冲突:
⚡ 越大的 memory,访问速度越快吗?
❓“既然硬盘能存几TB,为什么不让 CPU 直接用硬盘?”是不是 memory 越大,access time 越小?
从第一性原理看,这是不可能的。
-
物理规律告诉我们:想要更大容量,通常要放更多单元;更多单元意味着更远的距离或更复杂的电路,于是速度慢。
-
相反,越快的存储,通常是物理结构更简单、距离更短,但这意味着空间小而昂贵。
因此,memory 越大,access time 通常是越长的,这也是计算机设计里非常关键的一个矛盾点。
同时,CPU频率越高,反而效率低。这是因为:
CPU完成任务太快,其他设备(比如内存、硬盘)跟不上,导致CPU大多数时间都在“等”数据,反而没干活。
🧠 那么,我们是怎么设计存储器的呢?
我们来看看“打开文件”这个例子里 memory 的角色。
🪨 最开始:Second Memory(二级存储)
你的视频文件被保存在 硬盘 或 **固态硬盘(SSD)**里,这是所谓的:
Secondary Memory(二级存储)
当你打开一个文件,操作系统先从 Second Memory 读入文件内容。
这时,问题来了:
“如果每次都直接从硬盘里读数据,会不会太慢了?”
答案是:是的,真的太慢了!
于是我们就需要更快的地方来放这个数据,让 CPU 能快速用 —— 这就引出了:Primary Memory(主存)
Primary Memory(主存)登场!
这个名字不是随便起的。
-
“Primary” 表示**“第一位”**、“主要的”。
-
它是 CPU 访问的第一存储层次,是直接和 CPU 通信的数据源头。
-
与之相对的是 Secondary Memory,它不直接参与程序运行,只负责长期存储。
这就是我们常说的 RAM 随机存取存储器(Random Access Memory),计算机运行程序和数据的主战场。
-
特点:速度比硬盘快很多,电一断就全没了
-
存储的不是全部数据,而是当前“正在用”的部分
-
CPU 可以在任意时间,直接访问内存中的任意一个位置,访问速度都差不多,不用排队、也不用顺序读。(Random)
当你点开文件时,系统会把文件从硬盘读到主存中,再由 CPU 来使用主存中的数据。
那么主存又是怎么实现的呢?
DRAM(动态随机存取存储器)
全称:Dynamic Random Access Memory
为什么叫“动态”?
因为它存储 0 或 1 用的是一个小电容器(像一个蓄水池),电荷会自动泄漏,所以必须定时刷新——这就是“动态”的来源。
⚙️ 构造和工作原理:
-
一个 bit 是由 一个电容 + 一个晶体管 构成。
-
电容充电为 1,不充为 0。
-
由于电会漏掉,所以需要 周期性刷新(refresh)。
✅ 优点:
-
结构简单,单个单元非常小,所以可以做到容量大。
-
成本相对较低。
❌ 缺点:
-
需要刷新,速度比 SRAM 慢。
-
不适合频繁读写的小数据块操作。
所以主要用于 主内存(RAM),这就是我们电脑中内存条(比如 8GB、16GB DDR4)的核心技术。
SRAM(静态随机存取存储器)
全称:Static Random Access Memory
为什么叫“静态”?
因为它一旦写入了 0 或 1,就能一直保持状态,不需要像 DRAM 那样不断刷新。
⚙️ 构造和工作原理:
-
用 6 个晶体管做成一个稳定电路,可以记住一个 bit。
-
不靠电容,不存在漏电问题。
✅ 优点:
-
速度极快,不需要刷新。
-
稳定可靠,适合高速缓存使用。
❌ 缺点:
-
结构复杂,占用空间大。
-
造价高,不适合做大容量。
这就是为什么它被用在 CPU 内部的 Cache(L1/L2/L3) 里,作为 Primary Memory 的一部分,但仅用于极高频的操作。
Primary Memory 的典型工作流程
我们还是用“打开视频文件”的例子:
-
你打开视频,系统从硬盘读取数据。
-
把数据放到主存(DRAM)里,这是 Primary Memory。
-
CPU 从 DRAM 中拿数据。
-
如果有些数据频繁访问,就会被自动缓存进 SRAM Cache 中,加速下一次访问。
所以 Primary Memory 的核心角色是:
“给 CPU 准备好、随时能用的数据区”
它不管文件长存在哪里(那是硬盘的事),也不管最重要的数据被缓存在哪里(那是 Cache 的事),它就是中间的“主力军”,连接了 CPU 和磁盘。
Secondary Memory(二级存储)
我们先想象一个常见的场景:
你正在写文档,突然断电了,电脑重启之后,什么都没保存下来……
为什么会这样?
因为你写的内容暂时保存在了 Primary Memory(主存) 中,一旦断电就全丢了。
这暴露了一个主存(比如 DRAM)天生的缺陷:
它是“易失性”的(Volatile)—— 电一断,数据就没了。
从第一性原理看:
-
我们要有一种不依赖持续供电也能保持数据状态的存储方式。
-
同时还希望能存储很多很多数据(整个系统的照片、文档、视频等)。
于是,工程师们设计出了一个新的存储层级:二级存储
名字的由来:
-
“Secondary” 表示它在访问顺序中不是第一优先级,但仍然是不可或缺的一层。
-
它与主存不同,不直接和 CPU 通信,而是通过操作系统调度参与。
Secondary Memory 的定义:
用于长期保存数据、非易失性的存储设备,如硬盘、固态硬盘、U盘等。
问题 | 谁来解决? | 原因 |
---|---|---|
数据必须长期保存 | Secondary Memory | 主存断电就丢 |
主存太贵,容量不够 | Secondary Memory | 容量更大,成本低 |
启动电脑,数据要从哪来? | Secondary Memory | 包含系统、程序、文件等 |
Secondary Memory 的典型设备
-
HDD(硬盘,Hard Disk Drive):
-
利用磁性材料记录 0/1。
-
机械臂读写,容量大,成本低。
-
速度慢,易受震动影响。
-
-
SSD(固态硬盘,Solid State Drive):
-
用闪存(Flash memory)技术存储。
-
没有机械结构,速度快。
-
成本比 HDD 高,但在逐渐取代 HDD。
-
-
USB闪存盘、SD卡等:
-
同样基于 Flash。
-
容量适中,便于移动。
-
-
光盘(CD/DVD):
-
现在较少用,但依然是 Secondary Memory 一种。
-
Secondary Memory 的访问方式
因为它不直接和 CPU 通信,所以它的访问方式如下:
-
当你打开一个程序(比如 Word),操作系统会:
-
从 Secondary Memory(比如硬盘)中读取程序代码。
-
把它加载进 Primary Memory(RAM)中。
-
-
CPU 接下来只和 RAM 打交道,不直接操作硬盘。
-
如果程序需要读取更多数据(如打开一个大视频),操作系统会按需从 Secondary Memory 再取一部分放进 RAM。
为什么访问速度比主存慢?
从第一性原理看:
-
Secondary Memory 关注的是容量大、存储持久,因此使用的技术(磁盘或 Flash)不以“纳秒级速度”设计。
-
而 Primary Memory 是 CPU 的直接数据供应商,强调的是极致速度和响应时间。
-
所以,在物理结构、材料、功耗策略上,二者天生差异巨大。
CPU 怎么访问存储器?
当 CPU 想要读取一份数据(比如一个文档、一张图片)时,它到底去哪找?
第一步:🔍 CPU 优先找 Cache
为什么?
CPU 是整个计算机系统中最快的“执行者”。它的速度非常快,思考的速度以纳秒计(十亿分之一秒),所以它不能等。
从第一性原理看:
既然 CPU 不能等,那我们就必须把最可能被用到的数据,提前放到离它最近的位置。
这个“最近的地方”就是 —— Cache(高速缓存)
第二步:🚪Cache 没有怎么办?去找 主存(Main Memory)
如果 Cache 里没有数据(称为Cache Miss),那就只能去下一个层级——主存。
主存就是我们平时说的 “内存条” 所代表的空间,最常见的类型是 DRAM(动态随机访问内存)。
为什么要有主存?
从根本上看:
-
Cache 太贵,容量太小,放不了太多东西。
-
所以我们用主存作为一个容量更大、但速度稍慢的临时存放空间。
你可以把主存理解为一个大一点的书桌,虽然离 CPU 稍远一点,但可以放下更多的数据和程序。
第三步:📂主存也没有怎么办?去找 Secondary Memory(二级存储)
有些情况更极端,比如:
你打开电脑上一个几 GB 的视频,但内存已经快满了……
这时候,主存也放不下更多东西了,怎么办?
系统就会启动“调页机制”(paging)——
把不常用的数据“换出去”,放回二级存储,比如你的硬盘或固态硬盘(SSD)。
当你又需要这些数据时,系统会:
-
从二级存储里读取一页(page)数据,
-
放进主存,
-
然后由主存再传给 Cache,最后到 CPU。
访问层级 | 设备 | 特征 | 发生的典型情况 |
---|---|---|---|
第1层 | Cache | 非常小、极快 | CPU 正常工作中优先访问 |
第2层 | Main Memory(主存) | 较大、速度一般 | Cache Miss,程序运行中频繁读取数据 |
第3层 | Secondary Memory(二级存储) | 非易失、容量大、速度最慢 | 程序刚打开,或主存不够时加载数据 |
因此,CPU 并不是直接访问硬盘,而是:
Cache → RAM(DRAM)→ 硬盘(Secondary Memory)
你可以把它比喻为:
-
Cache 是你手边的便利贴;
-
主存是你办公桌上的文档堆;
-
硬盘是你办公室角落的文件柜;