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

【计组】RAM的深入理解

一、存储机理

RAM的实现逻辑有种,分别是触发器和电容。

SRAM(Static)DRAM(Dynamic)
存储方式触发器电容
破坏性读出否(触发器具有稳态,能够锁住0或1两种状态)是(电容需要放电才能获取当前状态)
需要刷新是(电容的电会在2ms后自动放出,每次刷新一行存储单元)
送行列地址同时送分两次(二维矩阵排列方式,这样使地址线得以复用变少)
运行速度快(集成度低)慢(集成度高)
发热量
存储成本

由表中数据可知,电容方式构造的存储器结构简单但是速度并不快,所以常被用作主存;而由触发器构造的存储器访问速度快,成本高,所以常被用做cache。

二、读取写入

1.DRAM的刷新

动态随即地址存储器由于是电容构造而成所以需要进行随时的充电,充电周期以2ms为单位(因为在2ms后就算不充电也会将电放出)。

这就导致有三种刷新方式:集中刷新、分散刷新、异步刷新。


1)集中刷新

集中刷新指在2ms的最后,拿出所需时间进行刷新。缺点是:这段时间内外界是不能访问内存的,称为“死区”或者“死时间”。

2)分散刷新

分散刷新指在一个读写周期内,每次读写完毕后,都对于DRAM进行刷新。这样做能够消除“死区”。缺点是:并不高效。

3)异步刷新

假设现有一块8*8的DRAM存储器。

异步刷新指在2ms的时间内,把这8行的刷新压力分散开,2ms/8 = 0.25ms,即0.25ms刷新一行,即可在要求时间内完成存储器的刷新工作。

2.读取/写入数据

1.首先由读写控制线发挥使能,使整个RAM处于读取状态(假设本RAM只有一片存储芯片)

2.由地址线传入地址,根据译码器选择本次从哪个存储单元读取数据

3.找到后由读写电路进行输出读取到的数据完成一次读取 

由以上过程可知一次读取过程首先是传进地址后,由片选线进行判断这个地址是不是在自己所指向的存储芯片中,若在则调动存储体进行数据的读取,然后进行数据的读取,由数据线进行传输。

所以在这个过程中会有延迟:传进地址时,由于有多根地址线进行传输,传输的数据也不同,造成了传输速度的不同,所以需要等待一段时间待地址稳定后,片选线发挥作用读入正确的地址,在读写电路进行数据读取时,也和第一阶段读取地址一样,存在数据的不稳定,所以仍然需要等待一段时间待数据稳定后再进行数据的读取,此时数据已经开始读取,数据在传输的路上,所以可以关闭地址线向片选线的输送,但是读写电路仍需等待,因为数据不稳定,不能够确保数据完全读取出来,这段读写电路等待的时间称为恢复时间,等到读取出的数据稳定后,读写电路也关闭,才能进行下一次的存取工作,这时,完成一次数据的读取工作。

从传进地址开始一直到恢复时间之前的时间段叫做存取时间,存取时间和回复时间共同构成了存取周期。

写入数据的过程同读取过程类似,也有存取时间和恢复时间。

三、总结

存储速度:用数据传输率表示,(也叫主存带宽(Bm))单位为字/秒,字节/秒。

数据传输率 = 数据宽度 / 存取周期

存储容量 = 存储字数 * 字长

单位成本 = 总成本 / 总容量

http://www.lryc.cn/news/43242.html

相关文章:

  • JavaScript 之数据交互
  • Python 十大开源Python库,看看你熟悉几个?
  • 不愧是阿里开发的SpringBoot实战文档:入门+基础+进阶+项目,应有尽有
  • Vue(3)-vue中的Ajax、Vuex、路由及UI组件库
  • jwt 学习笔记
  • 网络安全实战从 0 到 1 彻底掌握 XXE
  • 如何安装 Composer
  • WPF 常用控件
  • 河南工程学院蓝桥培训(2.21)
  • 新人使用Git获取远程仓库项目
  • 理解信号的
  • SpringSecurity学习(七)授权
  • 【Vue3】模板语法
  • Linux基础
  • Spark-序列化、依赖关系、持久化
  • 蓝桥杯刷题冲刺 | 倒计时16天
  • Java设计模式-12 、建造者模式
  • 一款全新的基于GPT4的Python神器,关键还免费
  • 上岸整理:2023前端面试题-vue,小程序,js,css
  • Linux下LED设备驱动开发(LED灯实现闪烁)
  • JavaEE-多线程中wait和notify都有哪些区别?
  • JavaScript实现列表分页(小白版)
  • Python调用GPT3.5接口的最新方法
  • Java开发 - 拦截器初体验
  • 【数据仓库-7】-- 使用维度建模的一些缘由
  • 【开发实践】在线考试系统(一) 生成错题知识点的思维导图
  • Java Web 实战 17 - 计算机网络之传输层协议(2)
  • MyBatis<3>:动态SQL的使用<if><trim><where><set><foreach>
  • 【超好懂的比赛题解】暨南大学2023东软教育杯ACM校赛个人题解
  • go-zero学习及使用中遇到的问题