从 01 开始 从 01 开始
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档
  • 计算机简史

  • 数字电路

  • 计算机组成原理

    • 计算机组成原理(北大-陆俊林)

      • 概述-计算机组成原理(北大-陆俊林)
      • 第1周-计算机组成章节视频简介
      • 101-电子计算机的兴起
      • 102-冯·诺依曼结构的要点
      • 103-冯·诺依曼结构的小故事
      • 104-计算机结构的简化模型
      • 105-计算机执行指令的过程
      • 106-计算机输入和输出
      • 107-冯诺依曼结构和具体实现
      • 201-设计自己的计算机
      • 202-x86 体系结构
      • 203-x86 指令简介
      • 204-复杂的 x86 指令举例
      • 205-MIPS 体系结构
      • 206-MIPS 指令简介
      • 301-算术运算和逻辑运算
      • 302-门电路的基本原理
      • 303-寄存器的基本原理
      • 304-逻辑运算的实现
      • 305-加法和减法的实现
      • 306-加法器的优化
      • 401-乘法的运算过程
      • 402-乘法器的实现
      • 403-乘法器的优化 1
      • 404-乘法器的优化 2
      • 405-除法的运算过程
      • 406-除法器的实现
      • 407-除法器的优化
      • 501-处理器的设计步骤
      • 502-数据通路的建立
      • 503-运算指令的控制信号
      • 504-访存指令的控制信号
      • 505-分支指令的控制信号
      • 506-控制信号的集成
      • 601-流水线的基本原理
      • 602-流水线的优化
      • 603-超标量流水线
      • 604-流水线的冒险
      • 605-数据冒险的处理
      • 606-控制冒险的处理
      • 701-存储层次结构概况
      • 702-DRAM 和 SRAM
        • SRAM 的读出过程
        • 存储矩阵
      • 703-主存的工作原理
      • 704-主存技术的发展
      • 705-高速缓存的工作原理
      • 706-高速缓存的组织结构
      • 707-存储容量的计算
      • 801-中断和异常的来源
      • 802-中断向量表的结构
      • 803-中断向量表的发展
      • 804-中断的处理过程
      • 805-内部中断分类说明
      • 806-基于中断的功能调用
      • 901-输入输出接口的基本功能
      • 902-输入输出接口的编址方式
      • 903-输入输出的控制方式
      • 904-中断控制方式
      • 905-外部中断的处理过程
      • 906-直接存储器访问方式
    • 字符编码入门

  • 操作系统

  • Linux

  • 计算机网络

  • 数据库

  • 编程工具

  • 装机

  • 计算机基础
  • 计算机组成原理
  • 计算机组成原理(北大-陆俊林)
2023-06-13
目录

702-DRAM 和 SRAM

# 702-DRAM 和 SRAM

SRAM 比较快,DRAM 比较慢,SRAM 比较贵,DRAM 比较便宜,记住这些结论是很容易的,但是比是什么更重要的是为什么,那在这一节我们就从电路的级别来探索 DRAM 和 SRAM 为什么会具有他们这样各自的特点。

‍‍

这就是我们平常在计算机 当中使用的内存条,规范的说法我们应该叫它内存模组。 而一个内存模组实际上就是由一块小电路板再加上若干的 DRAM 芯片构成。 在这个内存模组上一共有八个 DRAM 芯片。 然后我们来看 DRAM 芯片内部的结构。 DRAM 芯片内部核心的结构就是这个存储阵列,由若干行和若干列构成。 如果从外部给入行地址,在给入列地址,那么就可以由此选中一个存储单元, 而在一个存储单元当中往往包含着若干个比特, 常见的有四比特或者八比特。 每一个比特都采用了这样一个电路的结构, 这个结构我们称为 DRAM 的一个基本存储单元

​

这个基本单元就通过这个电容来保存了一个比特的信息, 那在 DRAM 芯片当中还有一些地址译码的逻辑, 根据外部送入的行地址生成行选择信号, 再根据外部送入的列地址,生成列选择信号, 那通过这样的行列选择信号就可以选中对应的存储单元。 其实也就是将这样的电容联通到外部的输入输出线, 那如果是写入就是由外部的数据线驱动对电容进行充电或者放电的操作, 从而完成写入一或者零。 那如果是读操作则是由电容对外部的数据信号线进行驱动,从而完成读出零或者一。 这个电路结构非常简单,但是我们要注意电容是存在漏电效应的, 如果经过一段时间电容上的电荷流失过多,我们就会丢失它所存的信息。因此为了保证 DRAM 的存储的信息的正确性,我们就需要定期对所有的单元进行刷新。 如果这个电容保存的数据信息是一,那么应该补充这个电容的电荷, 而如果它原先保存的是数据零,那么也需要通过刷新让它保持无电荷的状态。 那这就是 DRAM 的基本结构和运行的原理。

​ ‍

那现在的 pc 机当中大多是采用 DRAM 作为主存储器也就是内存, 那当然 DRAM 也有很多种不同的实现,比如 SDRAM,这个 s 是同步的缩写,那它是在 DRAM 的基本结构基础上对输入输出接口进行时钟同步。 从而提高了读写的效率,而现在更为常用的内存,则是在 SDARAM 的基础上又进行了进一步的改进, 比如说这些年有 DDR1,DDR2,DDR3,DDR4, 这些不同的内存标准都是在 SDRAM 的基础上进行的改进和升级。

那总体来说由于每个 DRAM 的基本存储单元非常的简单, 所以它能够做到很高的集成度,而且功耗也比较低, 我们可以用较低的成本制造出大容量的 DRAM 芯片。 当然它的缺点也跟它的这个结构有关, 因为给予了电容充放电的方式, 所以 DRAM 的读写速度还是比较慢的,而且它还需要定时刷新,这进一步影响了 DRAM 读写性能。

​

那么与 DRAM 相对的,我们还有一种常用的存储单元是 SRAM。 我们先来看看 SRAM 的基本结构,这个结构一共有六个晶体管构成。 我们分别用 m1,m2 一直到 m6 进行标记,那这六个晶体管合在一起才可以保存一个比特,显然比 DRAM 的一个基本存储单元要复杂得多。

那这个基本存储单元对外有三个接口信号,其中 BL 和 BL' 是用于传送读写数据信息的,而 wl 信号则是用于控制外部是否可以访问这个基本存储单元。 那么就通过读写的实例来看一看 SRAM 是如何工作的。

​

我们以写入数据 1 为例来进行分析。 首先这个存储单元中连接的电源和 VDD 分别代表着一和零, 那只要 SRAM 处于通电状态,这两个信号的值都会保持稳定, 那如果要写入 1,就得将 BL 的信号的值置为 1,而与之相对 则需要将 BL bar 信号置为零,这样就准备好了要写入的数据,

然后我们需要访问这个 SRAM 单元,就得把 wl 信号置为 1,一旦 wl 信号为 1, 那它所连接的 M5 和 M6 这两个晶体管的 gate 端就都为 1。 那通过这个图标我们就可以看出 M6 是一个 NMOS 晶体管, NMOS 晶体管的 gate 端连接为一时,那这个晶体管应该是连通还是关闭呢? 这一点我们以前已经学习过,你还记得吗? 那当然对于 NMOS 来说,如果 gate 端为一,它应该是处于连通状态。 因此 BL 信号上的值就会通过 M6 传递进来, 那么来看一看这根信号控制了哪些晶体管的 gate 端。 ‍ 首先它是连到了 M2 晶体馆的 gate 端, 那么看 M2 是一个什么类型的晶体管呢? 它是一个 PMOS 管,PMOS 管的 gate 端如果为 1,那就应该处于关闭的状态。 那因为 M2 是关闭的,所以从电源这连过来的 1 不会被传导出来, 那所以这根信号线上的值到底是什么,我们还得来看下面这个晶体管也就是 M1。

而 M1 的 gate 端和 M2 的 gate 端连接的是同一个信号, 所以现在也是 1,M1 是一个 NMOS,所以它处于连通状。 所以这根信号上的值就应该是零, 那么还应该注意到这根信号线同时连接到了 M5 的这跟晶体管, 而 M5 的 gate 端也是由 WL 信号控制的, 所以 M5 也是处于联通状态,它会将 BL bar 信号的 0 传导进来, 那么我们刚才分析了从 D 传过来的也是零, 这样就没有冲突,这根信号就可以稳定地维持为 0。

​ ‍

那么我们现在来看这根信号又控制了哪些晶体管的 gate 端。 首先是 M4,M4 是一个 PMOS 管,它的 gate 端为 0 的时候, 它就处于连通状态,那来自电源的这个 1 会被传导进来, 与此同时 M3 的 gate 端也是 0,那这根 NMOS 晶体管就会处于关闭状态。 所以这根信号与 D 是不连通的, 那这样从 M3 和 M4 的控制来看,这跟信号也应该是 1,这和由 BL 信号传递进来的这个 1 也是没有冲突的。 那这样由外部的 BL 和 BL bar 输入的信号 就驱动了这个 SRAM 存储单元的晶体管达到了一个稳定的状态。 那因为晶体管的工作速度很快,所以这个 SRAM 的写入的过程也非常快, 那当这几个晶体管状态达到稳定之后我们就可以结束这次写的过程了。

现在我们可以将 WL 信号由 1 变为 0,从而将 M5 和 M6 这两个晶体管关闭, 然后就可以撤销 BL 和 BL bar 上的信号了。

​

那在外部的信号撤销之后,那因为 M5 和 M6 这两个晶体管都关闭了, 所以并不是由外部的 BL 信驱动 M2 和 M1 这两个晶体管的 gate 端, 但是我们注意在刚才写入的过程中,因为 M4 晶体管处于连通状态, 所以电源所传导的这个 1 会始终驱动这根信号, 保持 M2 和 M1 的 gate 端为 1, 而只要 M2 和 M1 的 gate 端为 1,那么由 D 传过来的这个 0 就会保持稳定, 而这个 0 又会反过来驱动 M4 和 M3 保持刚才的状态, 从而让这个 1 也保持稳定,那么在这四个晶体管的相互作用下, 那这个 SRAM 单元就稳定地保持住了刚才写入的这个数据 1。 那现在只要 WL 信号保持为零,这个 SRAM 存储单元当中就会始终存储的这个数据 1, 当然前提是要保持通电的状态。 如果断电,电源的这个 1 消失了,那 SRAM 当中保存的这个数据也就会丢失。

​

# SRAM 的读出过程

那在这个基础上我们再来看 SRAM 的读出过程。 这还是刚才那个 SRAM 单元, 里面已经保持了一个数据 1,那现在外部就来读取这个单元。 这还是需要把 WL 信号置为 1, 那这样 M5 和 M6 这两个晶体管都会处于连通的状态, 而此时外部并不驱动 BL 和 BL bar 这两根信号, 因此它们将会分别通过 M5 和 M6 这两个晶体管被这个 SRAM 的存储单元所驱动。 BL bar 的信号将会被驱动为 0,而 BL 的信号将会被驱动为 1。 这样外部在接受到这两根信号之后就可以判断出读出的是一个数据 1。 这就是一个 SRAM 基本单元的结构和工作原理。

​ ‍

# 存储矩阵

那如果我们将很多个这样的基本单元组合起来就可以构成一个存储矩阵。 那从外部可以输入若干个地址线,那通过再增加一些地址译码的驱动电路, 就可以根据地址信号线的值,选中存储矩阵当中指定的若干个 SRAM 的基本存储单元, 由 SRAM 构成的存储器和 DRAM 芯片不太一样,它不需要分成行地址和列地址分别选择。 而且相对来说 SRAM 的设计是比较灵活的, 一个地址所对应的存储单元的数量也许是 8 个比特,10 个比特, 也可以是 32 个比特,40 个比特,64 个比特等等都可以。

那通过地址线选中的一组存储单元之后,我们还要确定到底是需要读还是写, 所以外部还需要有读写控制信号,并且有相应的读写控制电路。 而且这些读写控制电路还会将外部传来的数据线连接到 SRAM 的存储单元上, 那如果现在是写这样来自外部数据线的信号去驱动存储单元, 而如果是读则将存储单元当中的信号驱动外部的数据线, 那这样的电路一般就称为一个 SRAM 的存储器, 通常这个 SRAM 存储器还会有片选信号, 以标明当前是否需要对这个 SRAM 存储器进行读或者写的操作。

​ ‍

那由此看来因为晶体管的开关速度远比电容充放电的速度要快,所以相对于 DRAM,SRAM 有速度快的优势。 但是我们也看到 SRAM 中要存储一个比特就需要用六个晶体管, 晶体管数量多就会造成芯片的面积大,从而带来集成度低和价格较高的问题。 同时每个晶体管都是要耗电的,晶体管越多功耗也就会越高,这些都是 SRAM 的缺点。

那现在 CPU 当中的高速缓存一般都是用 SRAM 来实现的。 比如这就是一颗四核 CPU 的版图, 在这个芯片当中这些大面积的看起来非常规整的电路实际上都是 SRAM, 所以仅从制造成本上来看这些作为高速缓存 SRAM 往往要占到整个 CPU 的一半或者更多。

​

而且由于高速缓存大多和 CPU 采用相等或者接近的时钟频率, 所以它们的功耗也非常高,这都是在使用 SRAM 实现高速缓存时需要注意的问题。

那么综合比较来看 DRAM 的主要优势在于集成度高,功耗低,价格低, 而 SRAM 的优势则于速度快,而且不像 DRAM 需要经常进行刷新, 所以我们需要根据它们不同的特点,用在不同的场合上。

​

现在我们已经掌握了 DRAM 和 SRAM 的内部结构 以及其工作原理,那我们也就知道了他们的那些特点是如何产生的。 这对我们理解存储体系是如何构成的有着非常重要的帮助。 ‍

上次更新: 2025/6/3 17:50:46
701-存储层次结构概况
703-主存的工作原理

← 701-存储层次结构概况 703-主存的工作原理→

最近更新
01
语雀文档一键下载至本地教程
07-04
02
要成功,就不要低估环境对你的影响
07-03
03
血泪教训:电子设备要定期开机
07-02
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式