计算机组成原理 —— 存储系统(DRAM和SRAM,ROM)

计算机组成原理 —— 存储系统(DRAM和SRAM)

  • DRAM和SRAM
  • DRAM的刷新
  • DRAM地址复用
  • ROM(Read-Only Memory(只读存储器))

我们今天来看DRAM和SRAM

DRAM和SRAM

DRAM(动态随机存取存储器)和SRAM(静态随机存取存储器)都是半导体存储器,广泛应用于计算机和其他电子设备中,但它们在设计、性能、成本和应用场景上存在显著差异:

SRAM(静态随机存取存储器)

  • 工作原理:SRAM使用双稳态触发器来存储每个比特的信息,不需要刷新电路来维持数据。这意味着一旦数据被写入SRAM,只要电源持续供应,数据就会保持不变。
  • 速度:由于其设计,SRAM提供了非常快速的读写访问时间,通常用于需要高速数据访问的场景,如CPU缓存(L1、L2、L3缓存)。
  • 集成度与成本:SRAM的每个存储单元需要更多的晶体管(通常是4到6个),这导致其集成度相对较低,成本较高,且占用更多空间。
  • 应用场景:因其高速特性,SRAM常用于缓存、寄存器以及对速度要求极高的局部存储。

DRAM(动态随机存取存储器)

  • 工作原理:DRAM通过电容来存储电荷,以此表示比特的1或0状态。由于电容会自然放电,DRAM需要定期刷新(每隔几毫秒)来保持数据的完整性。
  • 速度:相比SRAM,DRAM的读写速度较慢,因为它涉及到电容充电/放电的过程以及刷新操作。
  • 集成度与成本:DRAM的存储单元结构更为简单,每个比特通常只需一个晶体管和一个小电容,这使得DRAM能够在给定的芯片面积上集成更多的存储单元,从而降低成本,提高存储密度。
  • 应用场景:由于其高密度和相对低廉的成本,DRAM是计算机主内存(如DDR SDRAM)的首选,广泛应用于个人电脑、服务器、移动设备等,作为大容量存储解决方案。

总结来说,SRAM提供快速访问但成本较高,适用于需要快速数据交换的小容量存储场景;而DRAM虽然访问速度稍慢,但因成本效益高、容量大,成为大规模存储的主流选择。

其实我们上篇博客讲的就是DRAM:

在这里插入图片描述这就是DRAM的内部组成,如果大家对上一篇博客有兴趣的话,可以点击这里:

https://blog.csdn.net/qq_67693066/article/details/139881200

SRAM换了一种材料,换成了双稳态触发器
在这里插入图片描述双稳态触发器集成了6根MOS管,体积更大,稳定性更高。经常用作Cache的材料。
在这里插入图片描述

DRAM的刷新

DRAM(动态随机存取存储器)的刷新是维护DRAM存储数据完整性的必要操作,因为DRAM单元中的电容会随着时间逐渐放电,导致存储的信息丢失。为了防止这种情况发生,DRAM需要定期刷新。刷新操作涉及读取每一行的数据,然后立即重写回该行,以补充电容的电荷,确保数据得以保持。

DRAM刷新主要采用以下三种方式:

  1. 集中刷新(Bulk Refresh或Collective Refresh):在这种模式下,系统会在一个特定的刷新周期内,暂停正常的读写操作,集中一段时间来逐行刷新所有存储单元。这意味着在刷新期间,DRAM无法响应其他读写请求,这会造成所谓的“刷新死区”(refresh dead time),影响系统的连续数据访问性能。
  1. 分散刷新(Distributed Refresh或Hidden Refresh):分散刷新尝试减少集中刷新带来的性能损失,它将刷新操作分散到每个存储周期中进行。在每次访问DRAM时,系统会检查是否需要对当前行进行刷新,如果需要,则在访问之后立即执行刷新操作,尽量使刷新操作与正常读写操作重叠,从而隐藏刷新带来的延迟。
  1. 异步刷新(Self Refresh):异步刷新是集中刷新和分散刷新的折衷方案,它允许DRAM在没有外部命令的情况下自行管理刷新操作。在低功耗模式或待机状态下特别有用,此时DRAM可以按照内部定时器控制的周期自行进行刷新,减少了对外部控制器的依赖,降低了系统整体的能耗。

在这里插入图片描述
我们的SRAM就不用刷新:
在这里插入图片描述

刷新间隔和刷新周期是DRAM参数的重要组成部分,刷新间隔定义了两次刷新操作之间的时间,而刷新周期则是对DRAM所有存储单元完成一次刷新的总时间间隔。这些参数由DRAM芯片规格确定,并需由系统内存控制器妥善管理,以确保数据的可靠存储。

DRAM地址复用

DRAM(动态随机存取存储器)采用地址复用技术,主要是为了减少芯片引脚数量,从而降低成本并简化电路设计。具体来说,DRAM的存储阵列由行和列地址共同确定一个唯一的存储单元位置。由于DRAM存储单元数量庞大,若为每个地址位都分配单独的引脚,会显著增加芯片的物理尺寸和复杂性,进而增加制造成本。

在地址复用技术中,DRAM将完整的地址信号分为两部分:行地址和列地址,通过同一组地址线分时传送。具体过程如下:

  1. 行地址传输:首先,DRAM接收到来自内存控制器的行地址,通过行地址选通信号(RAS, Row Address Strobe)激活相应的行,这个过程被称为行有效(Row Active)或行选通(Row Access)。
  1. 列地址传输:随后,在列地址选通信号(CAS, Column Address Strobe)的作用下,DRAM准备好接收列地址。列地址被送入后,指定的列与之前激活的行交叉点处的存储单元就被选中,从而完成寻址。
  1. 数据读写:在列地址传输完成后,可以进行数据的读取或写入操作。

在这里插入图片描述

通过这样的分时复用机制,DRAM使用较少的地址线实现了对大量存储单元的寻址,降低了对硬件资源的需求。然而,这也意味着相比于地址线独立的SRAM,DRAM在每次访问时需要更多的时钟周期来完成寻址,因此在速度上有所牺牲。

我们的刷新操作一般会在行列选址的时候发生
在这里插入图片描述
下面一张图对比了SRAM和DRAM
在这里插入图片描述

ROM(Read-Only Memory(只读存储器))

ROM,全称为Read-Only Memory(只读存储器),是一种非易失性存储介质,其中存储的数据在正常操作下是固定的,无法轻松或直接修改。ROM的特点包括:

  1. 数据持久性:ROM中的信息在断电后仍能保留,因为它是非易失性的。
  1. 出厂预编程:传统ROM的信息通常在制造过程中就被永久写入,不适合用户修改。
  1. 固定用途:由于数据不可改写,ROM常用于存储计算机启动时所需的固件、BIOS、初始化程序或者特定设备的控制代码等。

随着技术的发展,ROM的概念扩展到了几种不同的类型,包括:

  • PROM (可编程只读存储器):用户可以通过特殊的设备一次性写入数据,之后便无法更改。
  • EPROM (可擦除可编程只读存储器):可以通过紫外线照射擦除原有数据,然后可以重新编程。这类ROM有一个透明窗口,以便暴露芯片于紫外线。
  • EEPROM (电可擦除可编程只读存储器):可以在电路板上通过电信号擦除和重写数据,无需移除芯片或使用特殊设备,提供了更高的灵活性。
  • Flash Memory(闪存):虽然通常不归类为传统的ROM,但闪存基于EEPROM技术,提供高速度、高密度和更便捷的多次擦写能力,广泛应用于USB驱动器、存储卡和固态硬盘中。

在这里插入图片描述我们的操作系统就是安装在ROM中的:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/32827.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

展示3D模型的网站哪个好?

如果仅仅是模型展示,目前国内外值得推荐的无非就是那么几个,它们各自有不同的特点和优势: 1、Sketchfab:Sketchfab是一个知名的3D模型展示平台,提供了海量的模型资源和出色的3D展示效果。用户无需安装任何插件即可在线…

Spring Cloud - nacos +ubuntu环境搭建

1、安装ubuntu虚拟环境 VMware虚拟机安装Ubuntu与配置Ubuntu(超详细教程) 2、docker环境安装 1、apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common 2、curl -fsSL https://mirrors.ustc.edu.cn/docke…

Maven的依赖传递、依赖管理、依赖作用域

在Maven项目中通常会引入大量依赖,但依赖管理不当,会造成版本混乱冲突或者目标包臃肿。因此,我们以SpringBoot为例,从三方面探索依赖的使用规则。 1、 依赖传递 依赖是会传递的,依赖的依赖也会连带引入。例如在项目中…

自动驾驶仿真测试用例表格示例 ACC ELK FCW

自动驾驶仿真测试用例表格示例 测试用例概览 本测试用例表格涵盖了自动驾驶系统中多个关键功能和场景的测试,旨在确保系统在不同条件下的表现和稳定性。 用例编号测试项目测试描述预期结果实际结果通过/失败TC-001ACC功能测试在高速公路上启用ACC,测试车…

JSON介绍

一、JSON的介绍 JOSN,中文名,JS对象表示法,JSON就是一种特殊的字符串 是一种轻量级的数据交换格式,客户端和服务器端的交互,基本都是JSON格式。 JSON格式 { “name”: "Tom", "age" …

SCI一区级 | Matlab实现BO-Transformer-LSTM多变量时间序列预测

SCI一区级 | Matlab实现BO-Transformer-LSTM多变量时间序列预测 目录 SCI一区级 | Matlab实现BO-Transformer-LSTM多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.【SCI一区级】Matlab实现BO-Transformer-LSTM多变量时间序列预测,贝叶斯…

力扣SQL50 超过5名学生的课

Problem: 596. 超过5名学生的课 Code select class from courses group by class having count(distinct student) > 5;

Java中常见的设计模式及应用场景

Java中常见的设计模式及应用场景 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨Java中常见的设计模式及其应用场景,帮助大家更好地理…

Java中如何处理日期和时间?

Java中如何处理日期和时间? 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何在Java中处理日期和时间,这是开发中非常常…

数组元素去重

1 .旧数组不重复的元素放到新数组 2 .遍历旧数组,拿旧数组查新数组,如果元素在新数组内没有出现过就添加 3 .利用 新数组.indexOf(数组元素) 如果返回-1就说明新数组里没有该元素 //封装一个 去重的函数 function unique(arr) {var newArr[];for(var …

高通安卓12-固件升级

下载步骤 第一步 格式化 「下载一次即可;能开机能下载的板子 忽略这一步,直接执行第二步即可」 QFIL工具配置为UFS类型,勾选Provision,如下图: Programmer选择prog_firehose_ddr.elf,Provision Xml选择prov…

Springboot项目jar加密

部署的程序进行加密,防止第三方非法拷贝走项目进行二次开发或部署。我们知道java代码编译后生成的以.class结尾的字节码文件或者.jar/.war结尾的可执行文件都是可以反编译生成.java文件的,虽然反编译后生成的.java文件和原本的.java文件有些微差别&#…

【STM32-新建工程-CubeMX】

STM32-新建工程-CubeMX ■ CubeMX 生产工程 ■ CubeMX 生产工程

QT事件处理系统之五:自定义事件的发送案例 sendEvent和postEvent接口

1、案例 双击窗口,会发送 自定义事件,然后在事件过滤中心进行拦截处理自定义事件。 2、核心代码 /*解释:双击窗口时,将产生双击事件,然后该事件被包裹成一个对象,随后将会被发往event事件中心,然后进行事件的处理(Widget对象);因为m_lineEdit开启了事件过滤机制,所…

在前端项目中,如何处理错误和异常?

在前端项目中,如何处理错误和异常? 在前端项目中,处理错误和异常是至关重要的,它能确保应用程序的稳定性和用户体验。以下是一些常见的方法: try-catch-finally结构:使用JavaScript的try/catch块来捕获并…

如何使用Dockerfile创建容器映像

如何使用Dockerfile创建容器映像 Dockerfile是一个基于文本的文档,用于创建容器映像。它为映像构建器提供有关要运行的命令、要复制的文件、启动命令等的说明。在这篇博客中,我们将介绍如何编写一个Dockerfile来生成一个可立即运行的应用程序容器映像。…

MQTT协议与TCP/IP协议在性能上的区别

MQTT协议与TCP/IP协议在性能上的区别主要体现在以下几个方面: 1.协议开销与传输效率: ① MQTT:MQTT协议针对消息传递进行了优化,使用了小型的控制包和变长的包头设计,极大程度地减少了数据传输过程中的冗余和带宽消耗…

一定要注意空调孔,不仅会进风还会进雨

有位业主给我说,感觉家里边老是有风,感觉家里的温度也不高,也找不到从哪进的,帮忙去给看看。      和业主约了个时间,然后就一块去房子里面看一下。      这套房子已经装修好两年了,业主的父母已经…

2024.6.23 刷题总结

2024.6.23 **每日一题** 520.检测大写字母,本题是简单模拟题,考察了ASCLL码相关的知识,根据题意,本题对于字符串有三种正确的用法,所以我们分三类来讨论,先根据首字母的大小写来分类,如果首字母…

Linux - 利用/proc/sys/vm/drop_caches实现手工清理系统缓存

文章目录 现象buff/cache 的作用和含义分析 buff/cache 占用大量内存的原因是否需要清理缓存及其方法 命令清理缓存方法1. sync 命令2. echo 3>/proc/sys/vm/drop_caches 命令 注意事项小结 现象 使用free 命令,看到 buff/cache 占用很多 。 free 命令用于显示系…