【计算机组成 课程笔记】7.2 DRAM和SRAM
课程链接:
计算机组成_北京大学_中国大学MOOC(慕课)
7 - 2 - 702-DRAM和SRAM(13-'22-'-')_哔哩哔哩_bilibili
从【计算机组成 课程笔记】7.1 存储层次结构概况_Elaine_Bao的博客-CSDN博客中,我们了解到:SRAM比较快,DRAM比较慢,SRAM比较贵,DRAM比较便宜。记住这些结论是很容易的, 但是比是什么更重要的是为什么,这一节我们就从电路的级别来探索DRAM和SRAM为什么会具有它们这样各自的特点。
DRAM
这是我们计算机中使用的内存条,准确的说叫内存模组,图中这个内存模组中共有8块DRAM芯片。
DRAM芯片内部的核心结构就是这个存储阵列,由若干行、若干列构成。如果外部给定行地址和列地址,DRAM中有地址译码逻辑电路,能够选中一个存储单元,而每个存储单元往往包含若干个比特,常见的有4比特和8比特。每个比特都采用如下的电路结构,称为DRAM的基本存储单元。
DRAM的基本存储单元(1bit)
这个基本单元就是通过一个电容来保存一个比特的信息。写入就是由外部的数据线驱动对电容进行充电或者放电的操作,从而完成写入0或1,读操作则是由电容对外部的数据信号线进行驱动,从而完成读出0或1。
这个电路结构非常简单,但是我们要注意,电容是存在漏电效应的,如果经过一段时间,电容上的电荷流失过多,我们就会丢失它所存的信息。因此,为了保证DRAM的存储信息的正确性,我们需要定期对所有的单元进行“刷新”。如果初始保存的数据是0,则通过刷新使它保持无电荷状态,如果原先保存的数据为1,则补充这个电容的电荷。这就是DRAM的基本结构和运行原理。
DRAM的特点和主要用途
现在PC机中大多是采用DRAM作为主存储器,也就是内存。当然,DRAM也有很多种不同的实现,比如SDRAM,这个S是同步的缩写,它是在DRAM的基本结构基础上,对输入输出接口进行时钟同步,从而提高了读写的效率。而现在更为常用的内存,则是在SDARAM的基础上又进行了进一步的改进,比如说这些年有DDR1,DDR2,DDR3, 这些不同的内存标准都是在SDRAM的基础上进行的改进和升级。
总体来说,由于每个DRAM的基本存储单元非常简单,所以能做到很高的集成度,而且功耗也比较低,我们可以用较低的成本制造大容量的DRAM芯片。当然它的缺点也跟它的这个结构有关,因为采用了电容充放电的方式,所以DRAM的读写速度还是比较慢的,而且它还需要定期刷新,这进一步影响了DRAM的读写性能。
SRAM
那么与DRAM相对的,还有一种常用的存储部件,就是SRAM。我们先来看看SRAM的基本结构。
SRAM的基本存储单元(1bit)
SRAM的基本存储单元共有6个晶体管构成,我们分别用M1~M6表示,这6个晶体管合在一起才可以保存一个比特,显然比DRAM的结构要复杂得多。
这个基本存储单元对外有3个接口信号,其中BL、~BL用于传送读写数据信息,WL用于控制外部是否可以访问这个存储单元。
下面通过读写的实例来看看SRAM是如何工作的。
SRAM的写入过程示例
以写入数据1为例进行分析。
- 首先,这个存储单元中连接了电源和地,分别代表1和0。只要SRAM处于通电状态,VDD和地的信号的值都会保持稳定,为1和0。
- 如果要写入1,则将BL置为1,与之相对~BL则为0,这样就准备好了要写入的数据。
- 然后我们需要访问这个SRAM单元,就要将WL置为1。WL信号为1,则M5、M6两个晶体管的gate端也为1。由于M5和M6都是NMOS晶体管,当NMOS晶体管的gate端为1时,它是处于连通状态的。因此BL上的值就会通过M6传递进来,则Q信号为1,类似的,~Q信号为0。
- Q信号控制了M2晶体管的gate端,它是一个PMOS晶体管,当PMOS晶体管的gate端为1时,它是处于关闭状态的,所以VDD的信号不会被传到~Q,与步骤3中由~BL信号传递进来的0是一致的。类似的,Q信号还控制了M1晶体管,则它处于连通状态。M3和M4被~Q信号控制,分别处于关闭和连通状态,此时VDD的信号传到Q,与步骤3中由BL信号传递进来的1也是没有冲突的。
这样由外部的BL和~BL输入的信号就驱动了这个SRAM的存储单元的晶体管达到了一个稳定的状态。因为晶体管的工作速度很快,所以SRAM的写入过程也很快,当这几个晶体管达到稳定后,写入过程就结束了。
现在我们可以撤销WL信号了(由1变0),从而将M5、M6两个晶体管关闭。然后撤销BL和~BL的信号,那在外部的信号撤销之后,因为M5和M6都关闭了,所以并不是由外部的信号驱动M2和M1这两个晶体管的gate端,但是由于在刚才写入的过程中,M4晶体管处于连通状态,所以电源传导的这个1会始终驱动M2和M1的gate端保持为1。而只要M2和M1的gate端保持为1,由地传导过来的0又会反过来驱动M4和M3的gate端为0。那么在这4个晶体管的相互作用下,SRAM就保持住了刚才写入的1。只要WL信号保持为0,这个存储单元就会始终保持住之前存储的信号,当然前提是要保持通电的状态。
SRAM的读出过程示例
以读取刚才写入的数据1为例。
- 首先把WL信号置为1,这样M5、M6两个晶体管都会处于连通的状态。
- 此时外部并不驱动BL和~BL,因此它们会通过M5、M6被SRAM驱动。
- BL被驱动为1,~BL被驱动为0,这样读出1的过程就完成了。
这就是SRAM基本存储单元的结果和工作原理。
SRAM的特点和主要用途
如果我们把很多个这样的存储单元组合在一起,就可以构成一个存储矩阵,从外部可以输入若干的地址线,通过增加一些地址译码的驱动电路,就可以根据地址线的值选中存储矩阵当中对应的若干个存储单元,再通过读写控制,就可以将存储单元和数据线进行连通。
由此看来,因为晶体管的开关速度远比电容充放电速度快,所以相对于DRAM,SRAM更快。但是我们也看到,SRAM中每存储一个比特就需要6个晶体管,晶体管数量多会造成芯片面积大,从而带来集成度和价格高的问题。同时每个晶体管都是要耗电的,晶体管越多功耗就越高,这些都是SRAM的缺点。
那现代CPU中的高速缓存都是用SRAM实现的。比如这就是一颗4核CPU的版图,在这个芯片当中,这些大面积的看起来非常规整的电路,实际上都是SRAM。所以仅从制造成本上来看,这些作为高速缓存的SRAM往往要占到整个CPU的一半或者更多。而且由于高速缓存大多采用和CPU相当的时钟频率,所以它们的功耗也非常高。
DRAM和SRAM的比较
相关文章:

【计算机组成 课程笔记】7.2 DRAM和SRAM
课程链接: 计算机组成_北京大学_中国大学MOOC(慕课) 7 - 2 - 702-DRAM和SRAM(13-22--)_哔哩哔哩_bilibili 从【计算机组成 课程笔记】7.1 存储层次结构概况_Elaine_Bao的博客-CSDN博客中,我们了解到:SRAM比较快&#x…...

1802_在Linux系统上开发ARM单机片机嵌入式软件
全部学习汇总: GreyZhang/little_bits_of_linux: My notes on the trip of learning linux. (github.com) 1. 在Linux上也有嵌入式的开发环境,或许还有很多。不过,我现在接触到的大部分还是Windows居多。这一份文件介绍的是一个mbed platform…...

【计算机网络-自顶向下方法】应用层(HTTP、FTP)
目录 1. Principles of network applications创建一个网络应用1.1 网络应用架构1.1.1 客户-服务器架构1.1.2 P2P架构1.1.3 两种架构的比较 1.2 不同终端上的进程通信1.3 应用需要什么样的传输服务1.4 因特网能够提供的传输服务1.5 应用层协议1.6 小结 2. Web and HTTPWeb应用画…...
CSS文本超出显示小数点
目录 1、单行文本溢出 2、多行文本溢出 1、基于高度截断 2、基于行数截断 1、单行文本溢出 如果解决文本溢出显示省略号,需要满足的三个条件: 先强制一行内显示文本 white-space:nowrap;/*默认normal 自动换行*/ 超出的文本隐藏起来。 overflow:…...

怎么把图片压缩小一点?4个简单的压缩办法
怎么把图片压缩小一点?因为图片太大而带来的不良影响可说是非常的多,例如因为图片体积太大导致电脑中的存储空间越来越小,使得电脑使用起来越来越慢;当我们打开一张体积非常大的图片时无法开,甚至一度让电脑卡死&#…...
react嵌套路由
react嵌套页面 先从路由身上导出 import { HashRouter, Routes, Route, Navigate } from react-router-dom; //引入页面; import Home from ./view/Home; import About from ./view/About; import Integrated from ./view/Integrated; import Sidebar from ./vie…...
代码随想录 单调栈 Ⅰ
739. 每日温度 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替 思路&#…...
C++返回引用
在本文中,您将学习如何在函数中通过引用返回值,以及如何在程序中有效地使用它。 在C 编程中,不仅可以通过引用将值传递给函数,还可以通过引用返回值。 示例:通过引用返回 #include <iostream> int c; int add…...

010:连续跌3天,同时这三天收盘价都在20日均线下,第四天上涨的概率--以京泉华为例
对于《连续跌三天,压第四天上涨的盈利计算》,我们可以继续优化这个策略,增加条件:同时三天都收盘在20日均线下。 因为我们上一篇《获取20日均线数据到excel表中》获得了20日均线数据,我们可以利用均线数据来编写新的脚…...

MATLAB与Python:优势与挑战
本文旨在探讨MATLAB与Python在特定领域内的使用情况,并分析两者之间的优势和挑战。 MATLAB和Python都是流行的编程语言,广泛应用于科学计算、数据分析和机器学习等领域。在某些领域,如航空航天工程、自动化和电子工程嵌入式系统开发等&#…...

CSP-J第二轮试题-2019年-1、2题
文章目录 参考:总结 [CSP-J2019] 数字游戏题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示答案答案2 [CSP-J 2019] 公交换乘题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示…...

深入理解 python 虚拟机:原来虚拟机是这么实现闭包的
深入理解 python 虚拟机:原来虚拟机是这么实现闭包的 在本篇文章当中主要从虚拟机层面讨论函数闭包是如何实现的,当能够从设计者的层面去理解闭包就再也不用死记硬背一些闭包的概念了,因为如果你理解闭包的设计原理之后,这些都是…...

【数据结构-哈希表 一】【原地哈希】:缺失的第一个正整数
废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【原地哈希】,使用【数组】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为&…...

【C++设计模式之迭代器模式】分析及示例
简介 迭代器模式是一种行为型设计模式,它提供了一种顺序访问聚合对象元素的方法,而又不需要暴露聚合对象的内部结构。迭代器模式通过将遍历算法封装在迭代器对象中,可以使得遍历过程更简洁、灵活,并且符合开闭原则。 描述 迭代…...

【代码随想录】LC 27. 移除元素
文章目录 前言一、题目1、原题链接2、题目描述 二、解题报告1、思路分析2、时间复杂度3、代码详解 三、知识风暴 前言 本专栏文章为《代码随想录》书籍的刷题题解以及读书笔记,如有侵权,立即删除。 一、题目 1、原题链接 27. 移除元素 2、题目描述 二、…...
crash工具分析dma设备内存踩踏(一)
背景介绍 我们的客户在利用我们提供的SDK参考方案开发相关产品时,在产品方案上进行一些基础老化测试时,极低概率出现kernel随机panic问题,由于场景复杂,无法单独针对特定模块或功能进行拆解来进行实验排查,只能基于已…...

C#上位机——根据命令发送
C#上位机——根据命令发送 第一步:设置窗口的布局 第二步:设置各个属性 第三步:编写各个模块之间的关系...
BEVFormer代码跑通
1 环境配置 1.1 环境安装 # 1 拉取源码 github加速代理https://ghproxy.com/ git clone https://github.com/fundamentalvision/BEVFormer.git# 2 创建虚拟环境 conda create -n bev python3.8 -y# 3 激活虚拟环境 conda activate bev# 4.1 安装torch,torchvision,torchaud…...

kafka安装
kafka安装 1 kafka概念 1.1 kafka介绍 kafka是最初有Linkedin公司开发的,是一个分布式,分区,多副本,多生产者,多订阅者,基于zookeeper协调的分布式日志系统。具有高吞吐量,可扩展性和可容错性…...

Mac上安装Java的JDK多版本管理软件jEnv
JDK的多版本管理软件主要有以下三种: jEnv jEnv 是一个命令行工具,可以帮助您管理和切换不同版本的 Java 环境。它可以让您在不同的项目之间轻松切换 Java 版本。您可以使用 jenv global 命令设置全局 Java 版本,也可以使用 jenv local 命令…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...

中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...

GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...
2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案
一、延迟敏感行业面临的DDoS攻击新挑战 2025年,金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征: AI驱动的自适应攻击:攻击流量模拟真实用户行为,差异率低至0.5%,传统规则引…...
命令行关闭Windows防火墙
命令行关闭Windows防火墙 引言一、防火墙:被低估的"智能安检员"二、优先尝试!90%问题无需关闭防火墙方案1:程序白名单(解决软件误拦截)方案2:开放特定端口(解决网游/开发端口不通)三、命令行极速关闭方案方法一:PowerShell(推荐Win10/11)方法二:CMD命令…...
简单介绍C++中 string与wstring
在C中,string和wstring是两种用于处理不同字符编码的字符串类型,分别基于char和wchar_t字符类型。以下是它们的详细说明和对比: 1. 基础定义 string 类型:std::string 字符类型:char(通常为8位)…...