《深入理解计算机系统》(6)存储器层次结构

news2024/11/17 23:54:48

1、存储技术

  • 随机访问存储器,分为两类:
    • RAM,同时也是易失性存储器,也分为两类:
      - SRAM:静态随机访问存储器,速度快,价格高。多用来作为高速缓存存储器
      - DRAM:动态随机访问存储器,速度慢,价格低。多用来作为主存图形系统的帧缓冲器
    • ROM,同时也是非易失性存储器闪存属于 ROM,固态硬盘就是基于闪存开发而来。
  • 机械硬盘
  • 固态硬盘

1.1、 静态RAM

1、SRAM

  • SRAM 将每个位存储在一个双稳态的存储器单元内。每个单元由六个晶体管组成(等价于RS触发器)。
    在这里插入图片描述
  • 双稳态即该电路无限期地稳定保持在两个不同的电压状态。
  • 对于 SRAM,只要有电,就永远地保持它的值。即使有干扰,当干扰消除,电路也会恢复到稳定值。

2、DRAM

  • DRAM 将每个位存储为对一个电容的充电。每个 DRAM 单元由一个电容和一个访问晶体管组成。
    在这里插入图片描述
  • DRAM 对干扰非常敏感。当电容的电压被扰乱后,就永远不会恢复了。暴露在光线下会使电容电压改变,数码照相机和摄像机中的传感器本质上就是DRAM单元的阵列。
  • DRAM会有漏电现象——在10~100ms时间内失去电荷,所以内存系统必须周期性读出,然后重新刷写内存的每一位
  • 下面是SRAM与 DRAM的比较在这里插入图片描述

3、传统的DRAM

DRAM芯片中的单元(位)被分成d个超单元( supercell),每个超单元都由w个DRAM单元组成。一个 d × w的DRAM总共存储了dw位信息。超单元被组织成一个r行c列的长方形阵列,这里rc=d。每个超单元有形如(i,j)的地址,这里i表示行,而j表示列。
例如,如下图所示是一个16×8的DRAM芯片的组织,有d=16个超单元,每个超单元有w=8位,r=4行,c=4列。带阴影的方框表示地址(2,1)处的超单元。信息通过称为引脚(pin)的外部连接器流入和流出芯片。每个引脚携带一个1位的信号。下图给出了两组引脚:8个data引脚,它们能传送一个字节到芯片或从芯片传出一个字节,以及2个addr引脚,它们携带2位的行和列超单元地址。其他携带控制信息的引脚没有显示出来。
在这里插入图片描述
每个DRAM芯片被连接到某个称为内存控制器( memory controller)的电路,这个电路可以一次传送w位到每个DRAM芯片或一次从每个DRAM芯片传出w位。为了读出超单元(i,j)的内容,内存控制器将行地址i发送到DRAM,然后是列地址j。DRAM把超单元(i,j)的内容发回给控制器作为响应。行地址i称为RAS( Row Access strobe,行访问选通脉冲)请求。列地址j称为CAS( Column Access strobe,列访问选通脉冲)请求。注意,RAS和CAS请求共享相同的DRAM地址引脚。
例如,要从图6-3中16×8的DRAM中读出超单元(2,1),内存控制器发送行地址2,如下图a所示。DRAM的响应是将行2的整个内容都复制到一个内部行缓冲区。接下来,内存控制器发送列地址1,如下图b所示。DRAM的响应是从行缓冲区复制出超单元(2,1)中的8位,并把它们发送到内存控制器。
在这里插入图片描述
电路设计者将DRAM组织成二维阵列而不是线性数组的一个原因是降低芯片上地址引脚的数量。例如,如果示例的128位DRAM被组织成一个16个超单元的线性数组,地址为0~15,那么芯片会需要4个地址引脚而不是2个。二维阵列组织的缺点是必须分两步发送地址,这增加了访问时间。

4、内存模块

  • 许多 DRAM 芯片封装在内存模块中,插到主板的扩展槽上。常用的是双列直插内存模块 (DIMM),以 64 位为块与内存控制器交换数据。

比如一个内存模块包含 8 个 DRAM 芯片,每个 DRAM 包含 8M 个超单元,每个超单元存储一个字节。使用 8 个 DRAM 芯片上相同地址处的超单元来表示一个 64 位字,DRAM 0 存储第一个字节,DRAM 1 存储第 2 个字节,依此类推。
在这里插入图片描述
要取出内存地址 A 处的一个字,内存控制器先将 A 转换为一个超单元地址 (i,j),然后内存模块将 i,j 广播到每个 DRAM。作为响应,每个 DRAM 输出它的 (i,j) 超单元的 8 位内容,合并成一个 64 位字,再返回给内存控制器。此外,主存由多个内存模块连接到内存控制器聚合成。

5、增强的DRAM

  • 快页模式 DRAM (Fast Page Mode DRAM,FPM DRAM):当连续访问位于同一行的超单元时,第二次以后,FPM DRAM 可以直接从行缓冲区获取数据。
  • 扩展数据输出 DRAM (Extended Data Out DRAM,EDO DRAM):FPM DRAM 的一个增强的形式,更快一些。
  • 同步 DRAM (Synchronous DRAM,SDRAM):常规的、FPM 和 EDO 都是异步的。从效果而言,SDRAM 可以比异步存储器更快地输出它的超单元的内容。
  • 双倍数据速率同步 DRAM(Double Data-Rate SDRAM,DDR SDRAM):对 SDRAM 的一种增强,使速度翻倍。不同的 DDR SDRAM 以提高有效带宽的很小的预留缓冲区的大小来划分:DDR(2位)、DDR2(4位)、DDR3(8位)。位越多速度越快,近乎翻倍。
  • 视频 RAM (VRAM):用在图形系统的帧缓冲区中,其思想与 FPM DRAM 类似。VRAM 允许对内存进行并行地读和写。因此系统可以在写下一次更新的新值时(写),用帧缓冲区的像素刷屏幕(读)。

6、非易失性存储器

  • DRAM 和 SRAM 会在断电后丢失信息,因此是易失性存储器。ROM 是非易失性存储器,在断电后仍保存着信息。
  • ROM 是只读存储器,但是实际上有些 ROM 既可以读也可以写。
  • 几种常见的非易失性存储器:
    • 可编程 ROM (PROM):只能被编程一次。
    • 可擦写可编程 ROM (EPROM):可以被擦除和重编程上千次。
    • 电子可擦除 PROM (EEPROM):类似于 EPROM,但是可以被重编程十万次。
    • 闪存:基于 EEPROM 的一种存储技术。闪存无处不在,固态硬盘就是一种基于闪存的磁盘驱动器。
    • 存储在 ROM 设备中的程序通常称为固件,当计算机系统通电后,会运行存储在 ROM 中的固件。(BIOS程序存储在固件中)

7、访问主存

  • 数据流通过总线在处理器与主存间来往,每次处理器和主存间的数据传送的一系列步骤称为总线事务
  • 总线是一组并行的导线,能携带地址、数据和控制信号。
  • 系统总线连接 CPU 和 IO 桥接器,内存总线连接 IO 桥接器和主存。IO 桥同时也连接着 I/O 总线。
    在这里插入图片描述
  • 读事务的三个步骤(movq A,%rax):
    • CPU 将地址 A 放到内存总线上。
    • 主存从总线读出 A,取出字 x,然后将 x 放到总线上。
    • CPU 从总线读出字 x,并将它复制到相应寄存器中。
      在这里插入图片描述
  • 写事务的三个步骤(movq %rax,A):
    • CPU 将地址 A 放到内存总线。主存读出这个地址,并等待数据字。
    • CPU 将数据字 y 放到总线上。
    • 主存从总线读数据字 y,并将它存储在地址 A。

在这里插入图片描述

1.2、 磁盘存储

1、磁盘构造

  • 磁盘由盘片组成,每个盘片有两个表面,表面上覆盖着磁性记录材料。一个磁盘包含一个或多个盘片。
  • 每个表面由多个同心圆(称为磁道)组成,每个磁道被划分为一组扇区,每个扇区包含相同的数据位(一般为512字节)。
  • 扇区之间由间隙分隔开,间隙中不存储数据位,而存储用来标识扇区的格式化位。
  • 名词柱面用来表示距离主轴相等的磁道的集合。比如一个磁盘有 3 个盘片,那么每个柱面就有 6 个磁道。
    在这里插入图片描述

2、磁盘构造

  • 决定磁盘容量的因素:
    • 记录密度:磁道一英寸的段中可以放入的位数。
    • 磁道密度:从盘片中心出发半径上一英寸的段内可以有的磁道数。
    • 面密度:记录密度与磁道密度的乘积。
  • 现代大容量磁盘使用一种称为多区记录技术,即柱面的集合被分割成不相交的集合,称为记录区。每个区包含一组连续的柱面。磁盘格式化会填写间隙、标识出有故障的柱面、在每个区中预留出一组柱面作为备用。所以格式化容量要比最大容量小。
  • 计量上需要注意的:DRAMSRAM 相关的单位中 K = 2^10,磁盘、网络、速率、吞吐量相关的单位中 K=10^3

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

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

相关文章

WinDbg安装入坑1(C#)

由于作者水平有限,如有写得不对的地方,请指正。 使用WinDbg的过程中,坑特别的多,对版本要求比较严格,如: 1 32位应用程序导出的Dump文件要用32位的WinDbg打开,想要没有那么多的问题&#xff…

chatgpt赋能python:Python删除内容:掌握三种删除方式

Python删除内容:掌握三种删除方式 删除变量中的值 删除变量中的值是Python编程中常见的操作。Python提供了del语句用于删除变量中的值: x "Hello World" del x上述代码中,del x语句将删除变量x中的值。如果我们在执行print(x)时…

从C语言到C++_18(stack和queue的常用函数+相关练习)力扣

目录 1. stack 1.1 栈的概念 1.2 stack 的介绍和使用 2. queue 2.1 队列的概念 2.2 queue 的介绍和使用 3. 栈和队列的相关选择题 答案: 4. 栈和队列的相关OJ题 155. 最小栈 - 力扣(LeetCode) 解析代码: 剑指 Offer 3…

python学习-代码调试器

目录 为什么学习调试器Pycharm Debugger示例所用代码布局调试工具栏 Debug Bar程序控制工具栏 pdb查看源代码 l list查看当前函数源代码 ll longlist打印变量 p查看调用栈w where向上移动当前帧 u up向上移动当前帧 d down运行当前行代码,在第一个可以停止的位置停下 s step继续…

Selenium基础篇之八大元素定位方式

文章目录 前言一、如何进行元素定位?1.右击元素-检查2.F12-选择工具点击元素3.借助selenium IDE 二、八大元素定位方式1.ID1.1 方法1.2 举例1.3 代码1.4 截图 2.NAME2.1 方法2.2 举例2.3 代码2.4 截图 3.CLASS_NAME3.1 方法3.2 举例3.3 代码3.4 截图 4.TAG_NAME4.1 …

再也不用担心组件跨层级的数据共享和方法驱动了

文章目录 兄弟组件的传值和方法调用多个独立组件的数据共享和方法调用多个组件内的方法和数据互相驱动:eventBus多个组件的数据共享以及数据修改:vuex 项目中关于组件的使用经常会碰到这种情况:父子组件传和方法调用、兄弟组件的传值和方法调…

Selenium该如何实现微博自动化运营:关注、点赞、评论

目录 前言: Selenium 是什么? 一、核心代码 二、步骤分解 三、自动化运营常用工具 前言: 使用 Selenium 实现微博自动化运营,可以提高效率、减少工作量,下面讲解如何使用 Selenium 实现微博的关注、点赞和评论功…

webSocket 学习

引子 WebSocket 是一种在单个 TCP 连接上进行全双工通信的网络协议。它是 HTML5 中的一种新特性,能够实现 Web 应用程序和服务器之间的实时通信,比如在线聊天、游戏、数据可视化等。 相较于 HTTP 协议的请求-响应模式,使用 WebSocket 可以建…

JVM零基础到高级实战之Java内存区域虚拟机栈

JVM零基础到高级实战之Java内存区域虚拟机栈 JVM零基础到高级实战之Java内存区域虚拟机栈 文章目录 JVM零基础到高级实战之Java内存区域虚拟机栈前言JVM内存模型之虚拟机栈总结 前言 JVM零基础到高级实战之Java内存区域虚拟机栈 JVM内存模型之虚拟机栈 虚拟机栈是什么&#x…

Ansys Lumerical | 光纤布拉格光栅温度传感器的仿真模拟

说明 该示例演示了一种基于光纤布拉格光栅(FBG)的温度传感器,因为光纤折射率会随温度而变化,导致其布拉格波长发生偏移,所以可以被用作温度的测量。(联系我们获取文章附件) 综述 在本示例中要考…

java八股文-并发篇

并发篇 1. 线程状态 要求 掌握 Java 线程六种状态掌握 Java 线程状态转换能理解五种状态与六种状态两种说法的区别 六种状态及转换 分别是 新建 当一个线程对象被创建,但还未调用 start 方法时处于新建状态此时未与操作系统底层线程关联 可运行 调用了 start …

在Linux上安装Zookeeper集群(zookeeper-3.5.9)

记录:455 场景:在CentOS 7.9操作系统上,使用zookeeper-3.5.9版本,在三台机器上,安装Zookeeper集群。 版本:zookeeper-3.5.9,CentOS 7.9,Linux kernel-5.4.218。 1.主机规划 目标&#xff1a…

接口自动化测试新玩法!Python构建mock服务让你的测试更加高效!

目录 引言 Flask mock接口开发示例 引言 Mock 即模拟,就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法,其最大的优势就是降级前后端耦合度, 使前端工程师可以不…

Alloy Tutorial(1)Alloy 基本使用

文章目录 构造一个 graph谓词undirected 无向图undirected2 无向图的第二种写法assertFact扩展 构造一个 graph In this workshop we are going to use Alloy to model graphs. Mathematically, recall that a graph is just a pair ⟨V, E⟩ where V is a set of vertices (a…

参数估计和假设检验的区别与联系

1.参数估计和假设检验的区别与联系 笔记来源: 参数估计与假设检验 参数估计和假设检验有什么区别? 1.1 联系 参数估计和假设检验是推断统计的两个组成部分,它们都是根据样本信息对总体的数量特征进行推断 下图来自《统计学图鉴》 参数估计…

详解WEB集群服务(LNMP+Nginx+Tomcat+Rewrite重写+七层反向代理+SNAT|DNAT策略)

实战项目演练 1.问题描述2.实验操作步骤2.1 CentOS 7-1客户端配置2.2 CentOS 7-2网关服务器配置2.3 CentOS 7-8 (Web1:Tomcat服务器)2.3.1 安装Tomcat服务器2.3.2 提供四层反向代理的动态页面 2.4 CentOS 7-9 (Nginx服务器)2.4.1 安装Nginx服务2.4.2 安装MySQL服务2.4.3 安装配…

基于Python的接口自动化-读写配置文件

目录 引言 configparser模块功能介绍 引言 在编写接口自动化测试脚本时,有时我们需要在代码中定义变量并给变量固定的赋值。为了统一管理和操作这些固定的变量,咱们一般会将这些固定的变量以一定规则配置到指定的配置文件中,后续需要用到这…

如何在电脑上使用wink一键高清短视频

如何在电脑上使用wink一键高清优化短视频画质 文章目录 如何在电脑上使用wink一键高清优化短视频画质1.软件简介1.1痛点1.2解决方案 2.实际操作2.1准备工作2.1.1下载雷电模拟器2.1.2下载wink 2.2.安装软件2.2.1安装雷电模拟器2.2.2安装wink2.2.2.1在雷电模拟器中安装wink2.2.2.…

LeetCode 双周赛 106(2023/06/10)两道思维题

本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 加入知识星球提问。 往期回顾:LeetCode 单周赛第 348 场 数位 DP 模版学会了吗? 双周赛 106 概览 T1. 判断一个数是否迷人(Easy) 标…

如何做企业发布会直播/企业发布会直播流程

1 .企业发布会直播流程图 2 .发布会解决方案 A .发布会直播前 B .发布会直播中 C .发布会直播后 如何做一场企业新品、产品发布会直播?流程图: 01 发布会直播前 专业全案策划 全面深入挖掘客户直播需求,拆解需求,制定全流程落地方…