当前位置: 首页 > web >正文

计算机组成与体系结构:存储器(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 的典型工作流程

我们还是用“打开视频文件”的例子:

  1. 你打开视频,系统从硬盘读取数据。

  2. 把数据放到主存(DRAM)里,这是 Primary Memory。

  3. CPU 从 DRAM 中拿数据。

  4. 如果有些数据频繁访问,就会被自动缓存进 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 的典型设备

  1. HDD(硬盘,Hard Disk Drive)

    • 利用磁性材料记录 0/1。

    • 机械臂读写,容量大,成本低。

    • 速度慢,易受震动影响。

  2. SSD(固态硬盘,Solid State Drive)

    • 用闪存(Flash memory)技术存储。

    • 没有机械结构,速度快。

    • 成本比 HDD 高,但在逐渐取代 HDD。

  3. USB闪存盘、SD卡等

    • 同样基于 Flash。

    • 容量适中,便于移动。

  4. 光盘(CD/DVD)

    • 现在较少用,但依然是 Secondary Memory 一种。

Secondary Memory 的访问方式

因为它不直接和 CPU 通信,所以它的访问方式如下:

  1. 当你打开一个程序(比如 Word),操作系统会:

    • 从 Secondary Memory(比如硬盘)中读取程序代码。

    • 把它加载进 Primary Memory(RAM)中。

  2. CPU 接下来只和 RAM 打交道,不直接操作硬盘。

  3. 如果程序需要读取更多数据(如打开一个大视频),操作系统会按需从 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 是你手边的便利贴;

  • 主存是你办公桌上的文档堆;

  • 硬盘是你办公室角落的文件柜;

http://www.xdnf.cn/news/975.html

相关文章:

  • Unity使用Rider的常用快捷键
  • 【显卡占用】kill程序后,显卡仍被占用
  • CAD文件如何导入BigemapPro
  • 基于Python的施工图与竣工图对比小工具开发方案
  • 使用 WinDbg 启动程序并捕获崩溃转储的完整流程
  • ANSYS Fluent -地下市政供热管道泄漏模型-note
  • 职坐标IT培训:人工智能职业跃迁路径
  • Timm 加载本地 huggingface 模型
  • requestAnimationFrame是什么?【前端】
  • Unreal如何实现一个Highlight高亮效果
  • 【PyQt5】@QtCore.pyqtSlot()的作用
  • 深度学习-全连接神经网络-2
  • Fluent 内置双向流固耦合FSI 液舱晃荡仿真计算
  • Java Lambda表达式指南
  • 4月21日复盘
  • 飞控系统的鲁棒性模块详解!
  • GPU软硬件架构协同设计解析
  • 蓝牙WiFi模组rtl8821cs在Android14调
  • 推荐系统/业务,相关知识/概念2
  • 【LaTeX】图片大小调整和并排放置
  • 一文详解卷积神经网络中的卷积层和池化层原理 !!
  • 大模型相关 XSS等 漏洞事件深度剖析
  • 进程和线程(2)
  • 跨境电商行业新周期下的渠道突围策略
  • [python] set
  • JavaScript day5
  • 一文了解相位阵列天线中的真时延
  • 深度学习:人工智能的核心驱动力
  • C语言——数组
  • Sentinel源码—7.参数限流和注解的实现二