CSAPP:第六章 存储器层次结构
存储器层次结构
关键点:内存
6.1 随机访问存储器
随机访问存储器(Random-Access Memory,RAM)分为两类:静态的和动态的。静态RAM(SRAM)比动态RAM(DRAM)更快,但也贵的多。SRAM用来作为高速缓存存储器,既可以在CPU芯片上,也可以在片下。DRAM用来做主存以及图形系统的帧缓冲区。
- 1. 静态RAM
SRAM将每个位存储在一个双稳态的存储器单元里,具有双稳态性,只要有电,它就会永远地保持它的值。即使有干扰来扰乱电压,当干扰消除时,又会恢复到稳定状态 - 2. 动态RAM
DRAM将每个位存储为对一个电容的充电。DRAM存储器可以制造得非常密集--每个单元由一个电容和一个访问晶体管组成。但是与SRAM不同,DRAM存储器单元对干扰非常敏感。当电容的电压被扰乱后,它就不会恢复了 - 3. 传统的DRAM
DRAM芯片中的单元(位)被分成d个超单元,每个超单元都由w个DRAM单元组成。一个d * w的DRAM总共存储了dw位信息。超单元被组织成一个r行c列的长方型阵列,这里rc = d。每个超单元有形如(i,j)的地址,这里的i表示行,j表示列。
如图6-3展示的是一个16x8的DRAM芯片组织,有d = 16个超单元,每个超单元有w = 8位,r = 4行,c = 4列。带有阴影的方框表示地址(2,1)处的超单元,信息通过称为引脚(pin)的外部链接器流入和流出芯片。每个引脚携带一个1位信号。 - 4. 内存模块
DRAM芯片封装在内存模块中,它插到主板的扩展槽上。如下图展示了一个内存模块的基本思想。示例模块用8个64Mbit的8M x 8的DRAM芯片,总共存储64MB,这8个芯片编号为0~7.每个超单元存储主存的一个字节,而相应超单元地址为(i,j)的8个超单元来表示主存中字节地址A处的64位字。
要取出内存地址A处的一个字,内存控制器将A转化成一个超单元地址(i,j),并将它发送到内存模块,然后内存模块再将i和j广播到每个DRAM。作为响应,每个DRAM输出它的(i,j)超单元的8位内容,模块中的电路收集这些输出,并把它们合并成一个64位字,再返回给内存控制器。 - 5. 增强的DRAM
- 快页模式DRAM(异步)
- 扩展数据输出DRAM(异步)
- 同步DRAM(SDRAM)
- 双倍速率同步DRAM(Double Data-Rate Synchronous DRAM,DDR SDRAM).
- 视频RAM(VRAM)
- 6. 非易失性存储器
如果断电SRAM和DRAM会丢失它们的信息,从某种意义上说,它们是易失性的。非易失性存储器,即使在掉电后,仍然保存着它们的信息。现在有很多种非易失性存储器,但是整体上都被称为只读存储器(Read-only Memory,ROM).- PROM(可编程ROM)
- EPROM(可擦写可编程,Erasable Programmable ROM)
- EEPROM(电子可擦除PROM)
- FLASH(闪存,SSD就是基于闪存的磁盘驱动器)
存储在ROM设备中的程序通常被称为固件(fireware)。当一个计算机通电后,它会运行在ROM中的固件。
- 7. 访问主存
数据流通过总线的共享电子电路在处理器和DRAM主存之间来来回回。每次CPU和主存之间的数据传输都是通过一系列步骤完成的,这些步骤称为总线事务。读事务(从主存传送数据到CPU),写事务(从CPU传送数据到主存)
6.2 局部性
一个良好的计算机程序常常具有良好的局部性。也就是它们倾向于引用临近于其他最近引用过的数据和数据项。这种倾向被称为局部性原理。
- 时间局部性:在一个具有良好时间局部性的程序中,被引用过一次的内存位置,很可能在不远的将来再次多次被引用。
- 空间局部性:在一个具有良好空间局部性的程序中,被引用过一次的内存位置,很可能在不远的将来引用附近其他位置的内存。
6.3 存储器层次结构
计算机存储结构如下图,一般而言从高层往底层走,存储设备变得更慢、更便宜和更大。在最高层是L0,是少量快速的CPU寄存器,CPU可以在一个时钟周期访问它们,接下来是一个或者多个中型基于SRAM的高速缓存存储器,可以在几个时钟周期访问。然后是一个大的基于DRAM的主存,可在几十到几百个时钟周期内访问,接下来是慢速的本地磁盘,最后系统可能还包含了远程服务器。
CSAPP:第六章 存储器层次结构的更多相关文章
- [CSAPP笔记][第六章存储器层次结构]
第六章 存储器层次结构 在简单模型中,存储器系统是一个线性的字节数组,CPU能够在一个常数访问每个存储器位置. 虽然是一个行之有效的模型,但没有反应现代系统实际工作方式. 实际上,存储器系统(memo ...
- 【深入理解计算机系统CSAPP】第六章 存储器层次结构
6 存储器层次结构 存储器系统(memory system)是一个具有不同容量.成本和访问时间的存储设备的层次结构.CPU 寄存器保存着最常用的数据.靠近 CPU 的小的.快速的高速缓存存储器(cac ...
- csapp第六章笔记-存储器结构
目录 随机访问存储器(Random-Access-Memory) 静态RAM 动态RAM 增强的DRAM 非易失性存储器 磁盘存储 磁盘构成 磁盘容量 磁盘操作 逻辑磁盘块 访问磁盘和连接I/O设备 ...
- 【CSAPP笔记】11. 存储器层次结构
在没有专门研究存储器系统之前,我们依赖的存储器模型是一个很简单的概念,也就是把它看成一个线性数组,CPU 能在一个常数时间内访问任何一个存储器位置.虽然在研究别的问题时,这是一个有效的模型,但是它不能 ...
- CSAPP阅读笔记-存储器层次结构-第六章-P400-P462
6.1 存储技术 1.随机访问存储器(RAM),是易失性存储器,掉电存储信息会丢失,与之相对的是非易失性存储器(ROM),它掉电后存储信息不丢失,但前者访问速度较快,但容量有限,通常只有几百或几千兆字 ...
- [CSAPP笔记][第九章虚拟存储器][吐血1500行]
9.虚拟存储器 为了更加有效地管理存储器且少出错,现代系统提供了对主存的抽象概念,叫做虚拟存储器(VM). 虚拟存储器是硬件异常,硬件地址翻译,主存,磁盘文件和内核软件的完美交互. 为每个进程提供一个 ...
- [CSAPP笔记][第一章计算机系统漫游]
计算机系统漫游 我们通过追踪hello程序的生命周期来开始对系统的学习—–从它被程序员创建,到系统上运行,输出简单的消息,然后终止.我们沿着这个程序的生命周期,简要介绍一些逐步出现的概念,专业术语和组 ...
- 《Entity Framework 6 Recipes》中文翻译系列 (30) ------ 第六章 继承与建模高级应用之多对多关联
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第六章 继承与建模高级应用 现在,你应该对实体框架中基本的建模有了一定的了解,本章 ...
- 【windows核心编程】 第六章 线程基础
Windows核心编程 第六章 线程基础 欢迎转载 转载请注明出处:http://www.cnblogs.com/cuish/p/3145214.html 1. 线程的组成 ① 一个是线程的内核 ...
随机推荐
- Java学习笔记之——String和Arrays常用方法
一.String常用方法 1.subString(int beginIndex,int endIndex) 截取字符串 从beginIndex开始截取,截取endIndex-beginIndex的长度 ...
- Android Lifecycle使用
引言 Lifecycle 是官方提供的架构组件之一,目前已经是稳定版本,Lifecycle 组件包括LifecycleOwner.LifecycleObserver.Lifecycle 组件是执行操作 ...
- Java自动内存管理机制学习(二):垃圾回收器与内存分配策略
备注:本文引自<深入理解Java虚拟机第二版>仅供参考 图片来自:http://csdn.net/WSYW126 垃圾收集器与内存分配策略 概述 GC要完成3件事: 哪些内存需要回收? 什 ...
- 2; HTML 基本结构
1. HTML 的基本结构 2. HTML 控制标记的格式 3. 最常用的控制标记 本章讲解最基本的 HTML 元素,也就是创建文档结构所需的元素.例如:标题.段落. 页面分隔.注释等等. 2.1 H ...
- react-conponent-hellocynthia
<!DOCTYPE html> <html> <head> <script src="../../build/react.js">& ...
- JS对url进行编码和解码(三种方式区别)
Javascript语言用于编码的函数,一共有三个,最古老的一个就是escape().虽然这个函数现在已经不提倡使用了,但是由于历史原因,很多地方还在使用它,所以有必要先从它讲起. escape 和 ...
- Java NIO 学习
Java NIO提供了与标准IO不同的IO工作方式: Channels and Buffers(通道和缓冲区):标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(B ...
- 2.Odoo产品分析 (一) – 一切为零
查看Odoo产品分析系列--目录 1. 默认数据库 声明在先 本系列文档(Odoo产品分析)整理来自本人对该ERP的理解,并结合文档Working-with-Odoo-10-Second-Editi ...
- bat 批处理获取时间语法格式
bat 批处理获取时间语法格式 取年份:echo %date:~0,4% 取月份:echo %date:~5,2% 取日期:echo %date:~8,2% 取星期:echo %date:~10 ...
- java 返回某一天的周日和现在这一周的周日
import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import j ...