CSAPP之RAM要点快记

简介: RAM随机访问存储器(RAM),分为静态随机访问存储器(SRAM)和动态随机访问存储器(DRAM)。速度:SRAM > DRAM价格:SRAM > DRAM

RAM

随机访问存储器(RAM),分为静态随机访问存储器(SRAM)和动态随机访问存储器(DRAM)。

速度:SRAM > DRAM

价格:SRAM > DRAM

应用:

  • SRAM:多用于高速缓存
  • DRAM:多用于主存 | 图形帧缓冲区

DRAM芯片构造

DRAM中有很多很多单元(位),而DRAM中的单元一般被划分为d个超单元。每个超单元都有w个单元。所以一个d\times wd×w的DRAM芯片可以储存dwdw位数据。

超单元不是一排排到底的,是被划分为r行,c列,形成一个矩阵。这样子做的好处在接下来的数据读取可以体现出来。

从单DRAM芯片中存取数据

从DRAM芯片中存取数据需要通过内存控制器。而内存控制器与DRAM芯片又是通过引脚交流。在传统的DRAM中,两者之间存在着两组引脚。

第一组被称为addr引脚,用于指示DRAM芯片应该对哪个超单元进行访问。第二组被称为data引脚,顾名思义用于传输数据。addr引脚是从内存控制器到DRAM的单向流通引脚,而data引脚则是双向流通的。毕竟DRAM没有将地址返回给内存控制器的需求。

随着计算机的发展,单位面积上我们希望塞进去更多的单元,存储更多的数据,这个时候就需要尽可能减少一些不必要的空间,例如引脚的数量。

但是有些引脚可以动,有些引脚动不得。

例如data引脚,如果每个超单元由8个单元构成,即每个超单元存储的数据是8位的。也就是说data引脚必须要8位才能实现完整的数据交流。引脚多了没用,少了数据被截断。所以data引脚一般是不会去动它的。

而addr引脚就可以稍微优化一下。加入这是一个16x8的DRAM,即有16个超单元,每个超单元有8位。那么如果将所有的超单元排排站,我们就会发现总共需要log_2 16 = 4log216=4个引脚来传输地址。但是如果我们将超单元排列成一个4x4的矩阵,那么我们可以将addr引脚优化到2个指针。我们可以先传输行地址,锁定目标行,再传输列地址,确定目标超单元。

实际上这也是传统的DRAM的设计与存取方法。实际的读取流程如下:

  1. 内存控制器向DRAM发送行地址i
  2. DRAM将i行存储至DRAM内置的行缓冲区。
  3. 内从控制器向DRAM发送列地址j
  4. DRAM从行缓冲区去除第j列的超单元数据,通过data引脚传出
  5. 行缓冲区被清空

其中第一步被称为RAS(Row Access Strobe,行访问选通脉冲),第三步被称为CAS(Column Access Strobe,列访问选通脉冲)。

将超单元排排站还是组成团,各有优劣

排排站的好处是一步到位,缺点是引脚增多

组成团的好处是引脚减少,缺点是过程复杂

内存模块

DRAM芯片不都是单枪匹马战斗的,他们被封装在内存模块里面。这样子可以统一调配多个DRAM芯片,而且每一个超单元的存储位数也能“变多”。怎么回事呢?

例如将8个64Mbit的8M×8的DRAM芯片封装成一个内存模块,那么和这个内存模块总共可以存储64MB的数据。其中每一个“超单元”可以存储64位的数据。这里的“超单元”实际上不是简单的一个超单元,而是在8个DRAM中相同的(i,j)(i,j)对应的每一个超单元的集合!每一个超单元可以存储8位,那么将8个DRAM中相同地址的超单元的数据串起来就可以存储64位的数据。具体的实现过程如下:

  • 内存控制器向内存模块发送地址(i,j)(i,j)
  • 模块内将ij广播到每一个DRAM中
  • 内存模块取得每一个DRAM中(i,j)(i,j)对应的超单元数据,并将它们拼接为64位的数据,传输给内存控制器

(这里的拼接实际上是有内存模块中的电路实现的)

更快更强的DRAM

  • 快页模式DRAM(FPM DRAM),即行缓冲区在使用后不清空,如果下一次需要访问的数据还在该行,就可以直接从缓冲区读取。
  • 拓展数据输出DRAM(EDO DRAM),让CAS信号能够更加紧凑
  • 同步DRAM(SDRAM),使用与外部相同的时钟信号来控制(一般的DRAM内部有自己的时钟信号,即异步的)
  • 双倍速率同步DRAM(Double Data-rate Synchronous DRAM, DDR SRAM),是SDRAM的升级版。原本的SDRAM只在时钟上升沿或下降沿更新,现在被升级为上升沿和下降沿都更新,从而将速率翻倍。
  • 视频RAM(Video RAM,VRAM)。主要用于图形系统的帧缓冲区,思想与FPM DRAM类似,不过稍有区别。
  • VRAM可以对内存并行读写,FPM 不行
  • VRAM的输出是通过整个内部缓冲区的内容移位得到的


目录
相关文章
|
7月前
|
机器学习/深度学习 API 数据安全/隐私保护
视觉智能平台常见问题之一直提示ram没有权限但是我在角色中已经有添加相应的权限如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
|
4月前
|
存储 缓存 Java
|
6月前
|
SQL DataWorks 数据管理
DataWorks操作报错合集之在查找支持实例错误的时候提示:无法承担用户的角色,请检查RAM角色配置,该怎么办
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
阿里云RAM角色和自定义角色
阿里云RAM角色和自定义角色
148 1
[笔记]阿里云创建RAM用户
[笔记]阿里云创建RAM用户
100 0
RAM 中的 2 个基本概念
RAM 中的 2 个基本概念自制脑图
96 0
RAM 中的 2 个基本概念
|
开发工具 索引 Windows
Windows程序设计——两个重要的参数wParam和lParam
Windows程序设计——两个重要的参数wParam和lParam
1193 0
Windows程序设计——两个重要的参数wParam和lParam
|
缓存 Oracle Java
DDD领域驱动设计实战 - 创建实体身份标识的常用策略(下)
DDD领域驱动设计实战 - 创建实体身份标识的常用策略(下)
193 0
DDD领域驱动设计实战 - 创建实体身份标识的常用策略(下)
|
存储 缓存 算法
DDD领域驱动设计实战 - 创建实体身份标识的常用策略(中)
DDD领域驱动设计实战 - 创建实体身份标识的常用策略(中)
282 0
|
API
自定义资源粒度RAM权限测试
问题: 1.资源组 和 资源策略里面的资源不是一个概念 2.测试全局的全称策略资源粒度的授权
213 0
自定义资源粒度RAM权限测试

热门文章

最新文章