存储器层次结构

关键点:内存

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. 我永远喜欢着OOP——第一次总结

    我永远喜欢着OOP--第一次总结 一.三次作业总结分析 1. 第一次作业 1.1 作业分析 第一作业主要是给我们引入了一个对于非法输入处理的思想,包括第一次上机,都一直围绕着一个全新的主题,就是非法输 ...

  2. 【Linux】linux查看日志文件内容命令tail、cat、tac、head、echo

    linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------- ...

  3. 什么是xss攻击,如何预防(初级)?

    概念: XSS(Cross Site Scripting),即跨站脚本攻击,是一种常见于web应用程序中的计算机安全漏洞.XSS通过在用户端注入恶意的可运行脚本,若服务器端对用户输入不进行处理,直接将 ...

  4. linux 下 ifcfg-ethx配置和解析

    网络接口配置文件[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0# Intel Corporation 82545EM ...

  5. qW3xT.2,解决挖矿病毒。

    网站在运行期间感觉怪怪的,响应速度慢的不是一丁半点,带宽5M,不该是这样的呀 于是登录Xshell top命令 查看cpu情况如下 PID为3435的进程占用CPU过大,难道被病毒入侵了吗? 查看该进 ...

  6. angular 分页插件的使用

    html: <pagination total-items="totalItems" ng-model="currentPage" items-per-p ...

  7. js 处理金额各个位数上的值

    //金额处理 var number = 1234567.35; if (parseInt(number) == number) { var money = number.toString().spli ...

  8. Vue2+VueRouter2+webpack 构建项目实战(四):接通api,渲染列表

    通过前面几篇教程,我们已经顺利搭建起来了,并且已经组建好路由了.本章节,我们需要做一个列表页面,然后利用获取 http://cnodejs.org/api 的公开API,渲染出来. 我们打开src/p ...

  9. Android联系人列表实现

    演示 汉字转拼音 String pinyingStr = PinyinHelper.getShortPinyin( String.valueOf(charSequence).toLowerCase() ...

  10. springboot部分常用注解

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...