csapp第六章

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


先匹配有效位再匹配标记为

  • 解决抖动

  • 组相联高速缓存

  • 全相联

  • 有关写的问题
    • 写命中

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 写不命中

  • jj



因为较高的层的写都很快,越低访问速度越慢适合用写回策略


  • 静态RAM:双稳态的寄存器,
  • 动态RAM要定时刷新,SRAM不用
  • 传统的DRAM:行地址称为RAS列地址称为CAS。RAS和CAS共享相同的DRAM地址引脚。(内存控制器先发送行地址,将整个行复制到一个缓冲区,然后在发送列地址,读出超单元发送到内存控制器)
  • 内存模块:我们要读取一个字,需要从不同的芯片中读取一字节,发送到内存控制器,
  • 增强DRAM:基于传统进行改造
    • 快页模式DRAM:传统的是每次发送RAS/CAS都只能取一个超单元到内存控制器中,但是快页模式DRAM允许对缓存到缓冲区的行进行多次访问。
    • 扩展数据传输DRAM:FPM DRAM的一个增强形式,他允许各个CAS信号在时间上更加紧凑。
    • 同步DRAM:常规的,FPM,EDO模式都是异步的,但是他是同步的,更快的输出超单元的内容。
    • 刷个南北数据速率同步DRAM:(DDR SDRAM),现在的内存都是DDR5还有ddr4
    • 视频RAM:
  • 非易失性存储器
    DRAM和SRAM都是易失性的存储器。 只读存储器(ROM)
    • PROM:只能编写一次
    • 可擦写可编程的ROM:1. EPROM2. EEPROM(能编写的次数更多)
    • 闪存(flash memory):是一种非易失性存储器。固态硬盘就是通过闪存来实现的
  • 存储在ROM设备中的程序一般都被称为固件,如BIOS例程。
  • 访问主存:通过总线将传送读事务和写事务。系统总线-I/O桥-内存总线
6.1.2 磁盘存储
  • 柱面:柱面是所有磁盘表面上到主轴中心的距离相等的磁道的集合
  • 记录密度:磁道一英寸的段中可以放入的位数
  • 磁道密度:从盘片中心出发半径上一英寸的段内可以有的磁道数
  • 面密度:记录密度和磁道密度乘积
    现代大容量磁盘使用一种称为夺取记录的技术,这种技术,柱面的集合被分割成不可相交的子集和,称为记录区,每个区包含一组连续的柱面,。一个区中每个柱面中的每个磁道都有相同数量的扇区,这个扇区的数量是由该区中最里面磁道所包含的扇区数决定的
    在这里1GB等于10九次方字节,但是对于DRAM和SRAM通常K=2的十次方
  • 磁盘控制器:维护着逻辑块号和实际磁盘扇区之间的映射关系(将逻辑块号翻译成(盘面,磁道,扇区)的三元组。
  • 连接I/O设备:
  • 访问磁盘:CPU使用一种称为内存映射I/O的技术来向I/O设备发射命令。在使用内存映射I/O的系统中,地址空间中有一块地址是为与I/O设备通信保留的。这样的地址称为一个I/O端口。当一个设备连接到总线时。他与一个或者多个端口相关联。
    • USB控制器是一个连接到USB总线设备的中转机构,
6.1.3 固态硬盘(SSD)

固态硬盘是一种基于闪存的存储技术

  • 数据是以页为单位读写的,只有在一页所属的块被整个擦除之后,才能写这一页。
    写很慢的原因:
  1. 擦除块需要很长时间
  2. 如果写操作试图修改一个包含已经有数据的页P,那么这个块中所有带有用数据的页都必须被复制到一个新的块,然后才能对页p进行写操作。
    SSD比旋转磁盘的优点:
  3. SSD由半导体器件构成,没有移动部件,因而随机访问的时间比旋转磁盘块,能耗更低,同时也更结实。
6.1.4 存储技术趋势
  1. 不同的存储技术有不同的价格和性能折中
  2. 不同的存储技术的价格和性能属性以截然不同的速率变化着

6.2 局部性

  1. 时间局部性:同一个位置在不远的将来会再次被引用

  2. 空间局部性:一段时间引用一个内存位置相邻的内存位置

6.2.1
  • 步长增加,空间局部性下降
  • 双重嵌套循环按照行优先
6.2.2 取指令的局部性

循环体的时间和空间局部性都很好,循环体越小,循环迭代次数越多局部性越好。

存储器层次结构

  • 存储技术
  • 计算机软件
6.3.1 存储器层次结构中的缓存
  • 上层的块大小和下层一样
  1. 缓存命中
  2. 缓存不命中
  • 覆盖一个现存的块替换,被替换的是牺牲快。LRU(最近最少使用)
  1. 缓存不命中的种类:
  • 冷不命中
  • 冲突不命中
  1. 存储管理

6.4 高速缓存存储器(cache)

6.4.1 通用的高速缓存存储器组织结构
  • 为什么不用高位做索引?
    如果永高位做索引,那么一些连续的内存块就会映射到相同的高速缓存块
  • 全相联高速缓存只适合做小的高速缓存,如TLB.
6.4.5 写的一些问题

直写:直接将w的高速缓存块协会到紧接着的低一层中,虽然简单,但是每次写回都会引起总线流量,

写回:尽可能地推迟更新,只有当替换算法驱逐这个更新过的块时才写回到更低一层中,,但是他得为每个高速缓冲行维护一个额外的修改位

写分配:加载相应的低一层中的块到高速缓存中,然后更新这个高速缓存快。

非写分配:避开高速缓存,直接把这个字写到低一层中。

一般组合写回和写分配

一个真实的高速缓存层次结构解刨
  • 告诉缓存即保存数据也保存指令
    为什么永两个独立的缓存保存指令和数据?
  1. i-cache只读,比较简单
  2. i-cache和d-cache可以有不同的块大小,相联度和容量,
  3. 使用不同的告诉缓存也确保了数据访问不会与指令访问形成冲突不命中,代价就是可能会引起容量不命中增加
高速缓存参数的性能影响
  1. 相联度的影响
    较高的相联度优点是降低了高速缓存由于冲突不命中出现抖动的可能性,但是成本高了,也会增加命中时间,因为复杂度增加了,还会增加不命中处罚
  2. 写策略的影响
    直写高速缓存比较容易实现,而且能使用独立于高速缓存的写缓冲区用来更新内存。一般而言高速缓存越往下层,越可能使用写回而不是直写。

编写高速缓存友好的代码

  1. 让最常见的情况运行的快

  2. 尽量减小每个循环内部的缓存不命中数

高速缓存对程序性能的影响
  • 一个程序从存储系统中读数据的速率称为读吞吐量(带宽)
6.6.2 重新排列循环以提高空间局部性
  • 19
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值