存储器层次结构

关键点:内存

6.1 随机访问存储器6.2 局部性6.3 存储器层次结构

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:第六章 存储器层次结构的更多相关文章

  1. [CSAPP笔记][第六章存储器层次结构]

    第六章 存储器层次结构 在简单模型中,存储器系统是一个线性的字节数组,CPU能够在一个常数访问每个存储器位置. 虽然是一个行之有效的模型,但没有反应现代系统实际工作方式. 实际上,存储器系统(memo ...

  2. 【深入理解计算机系统CSAPP】第六章 存储器层次结构

    6 存储器层次结构 存储器系统(memory system)是一个具有不同容量.成本和访问时间的存储设备的层次结构.CPU 寄存器保存着最常用的数据.靠近 CPU 的小的.快速的高速缓存存储器(cac ...

  3. csapp第六章笔记-存储器结构

    目录 随机访问存储器(Random-Access-Memory) 静态RAM 动态RAM 增强的DRAM 非易失性存储器 磁盘存储 磁盘构成 磁盘容量 磁盘操作 逻辑磁盘块 访问磁盘和连接I/O设备 ...

  4. 【CSAPP笔记】11. 存储器层次结构

    在没有专门研究存储器系统之前,我们依赖的存储器模型是一个很简单的概念,也就是把它看成一个线性数组,CPU 能在一个常数时间内访问任何一个存储器位置.虽然在研究别的问题时,这是一个有效的模型,但是它不能 ...

  5. CSAPP阅读笔记-存储器层次结构-第六章-P400-P462

    6.1 存储技术 1.随机访问存储器(RAM),是易失性存储器,掉电存储信息会丢失,与之相对的是非易失性存储器(ROM),它掉电后存储信息不丢失,但前者访问速度较快,但容量有限,通常只有几百或几千兆字 ...

  6. [CSAPP笔记][第九章虚拟存储器][吐血1500行]

    9.虚拟存储器 为了更加有效地管理存储器且少出错,现代系统提供了对主存的抽象概念,叫做虚拟存储器(VM). 虚拟存储器是硬件异常,硬件地址翻译,主存,磁盘文件和内核软件的完美交互. 为每个进程提供一个 ...

  7. [CSAPP笔记][第一章计算机系统漫游]

    计算机系统漫游 我们通过追踪hello程序的生命周期来开始对系统的学习—–从它被程序员创建,到系统上运行,输出简单的消息,然后终止.我们沿着这个程序的生命周期,简要介绍一些逐步出现的概念,专业术语和组 ...

  8. 《Entity Framework 6 Recipes》中文翻译系列 (30) ------ 第六章 继承与建模高级应用之多对多关联

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第六章  继承与建模高级应用 现在,你应该对实体框架中基本的建模有了一定的了解,本章 ...

  9. 【windows核心编程】 第六章 线程基础

    Windows核心编程 第六章 线程基础 欢迎转载 转载请注明出处:http://www.cnblogs.com/cuish/p/3145214.html 1. 线程的组成 ①    一个是线程的内核 ...

随机推荐

  1. 【MAC】安装神器brew

    安装方法:命令行输入 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/ma ...

  2. virtualbox中 Ubuntu安装增强功能

    1. 执行,等待,当提示按 Enter 时按下 2. 在文件管理中找到挂载的文件,切换到该目录,执行命令 sudo ./VBoxLinuxAdditions.run 3. 重启

  3. Retrofit2 原理解析

    Retrofit是什么 官网介绍是A type-safe HTTP client for Android and Java,是一个 RESTful 的 HTTP 网络请求框架的封装,但网络请求不是Re ...

  4. mapreduce中文乱码,已解决

    问题: mapreduce中文乱码 原因: 再用Hadoop处理数据的时候,发现输出的时候,总是会出现乱码,这是因为Hadoop在设计编码的时候,是写死的.默认是UTF-8,所以当你处理的文件编码格式 ...

  5. h5+js视频播放器控件

    由于h5兼容性问题,很多浏览器对于插入视频播放的支持都大不相同.火狐支持的比较完整,谷歌则支持的不是很好,很多功能都不能实现,这就需要我们去自制一个播放界面,去兼容不同的浏览器. 只插入一个视频时,浏 ...

  6. Hibernate(链接数据库方便得多)!

    首先让我们看一下配置文件,我这里先是用struts搞得controller,不明白struts的可以去百度一下这里就不讲解了: 之后我们需要做一个hibernate的配置文件内容如下(这里链接的是my ...

  7. Android为TV端助力 布局、绘制、内存泄露、响应速度、listview和bitmap、线程优化以及一些优化的建议!

    1.布局优化 首先删除布局中无用的控件和层级,其次有选择地使用性能较低的viewgroup,比如布局中既可以使用RelativeLayout和LinearLayout,那我们就采用LinearLayo ...

  8. onmouseover和onmouseenter区别

    onmouseover和onmouseenter都是鼠标进入时触发,onmouseover在所选元素的子元素间切换的时候也触发! <!doctype html><html lang= ...

  9. socket通讯,TCP,UDP,HTTP的区别

    socket编程有TCP和UDP, TCP:传送控制协议(Transmission Control Protocol) 传输控制协议TCP是TCP/IP协议栈中的传输层协议,它通过序列确认以及包重发机 ...

  10. [20190101]块内重整.txt

    [20190101]块内重整.txt --//我不知道用什么术语表达这样的情况,我仅仅一次开会对方这么讲,我现在也照用这个术语.--//当dml插入数据到数据块时,预留一定的空间(pctfree的百分 ...