缓存

高速缓存(cache)

避免数据在短时间内可能会再次被利用, 甚至该数据项周围的数据也会被再次的调用, 为了保证数据能够及时的被调用, 减少访问数据的时间, 也就增加了高速缓冲.

就是为了数据在短时间内可能会再次被利用, 甚至该数据项周围的数据也会被再次的调用.减少数据访问的时间

随机访问存储器

保证每个数据被访问的时间都是相同的, 而不会因为存放的位置较远会造成时间的成线性增长

类型

  • 静态高速缓存(SRAM) : 更快, 不需要刷新, 高速缓存.
  • 动态高速缓存(DRAM) : 快, 需要刷新, 主存.

缓存是采用中间位做索引, 而不采用顺序索引(高位索引). 因为顺序索引的效率太低, 寻找的数据还是跟索引的位置呈线性增长

数据流通过总线的共享电子电路在处理器和DRAM主存之间来来回回


I/O操作

CPU采用内存映射I/O来向I/O设备发送命令请求.

CPU对地址操作的储存指令

  • 发送一个指令告诉磁盘是读/写操作
  • 指明指令要读取的逻辑块号
  • 指明应该存储磁盘扇区内容的地址
写策略

写回 : 尽可能的推迟更新, 只有当替换算法要驱逐这个更新快时, 才将数据写回到低一层存储中.
不命中写分配 : 加载相应的低一层块到高速缓存中, 然后更新这个高速缓存块, 修改就修改这个缓存块的数据, 等到一定的时候在写回到内存中/磁盘中.(缺点 : 每次不命中操作都会更新缓存块)

直写 : 立即将修改的数据写回到低一层中.
不命中非写分配 : 避开高速缓存, 直接将数据写回到内存/磁盘中a.

直写高速缓存是非写分配, 写回高速缓存是写分配


缓存命中与不命中

高速缓存具有局部性

局部性

  1. 空间局部性 : 调用的数据项的周围数据项可能不久也会被引用, 所以也存储缓存中. 强调不同的数据项.
  2. 时间局部性 : 调用的数据项可能不久也会重复的被调用, 同样存放在缓存中. 强调同一数据项.
命中 : CPU直接从缓存中快速的读取数据项. 不命中 : CPU从缓存中没有读取到需要的数据项, 产生一个中断, 那么缓存就需要找到一个牺牲块, 然后从主存中查找这个数据项, 将该数据项以及它相邻的数据项都映射到缓冲的牺牲块中, 然后CPU就可以读取到需要的数据项.

cache不命中的原因

  1. 义务失效 : 第一次访问的数据项.
  2. 容量失效 : 数据块太多, 容量不够.
  3. 冲突失效 : 多个数据项放在了同一个数据块中.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值