前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深入理解计算机系统(第三版)/ CSAPP 杂谈,第6章:储存器层次结构

深入理解计算机系统(第三版)/ CSAPP 杂谈,第6章:储存器层次结构

作者头像
sickworm
发布2019-02-27 16:56:09
8510
发布2019-02-27 16:56:09
举报
文章被收录于专栏:sickworm
  • SRAM 贵,稳定,集成度低,用于高速缓存存储器
  • DRAM 较便宜,不稳定,集成度高,需要定时重新读写和纠错码,用于主存和帧缓冲区
  • DRAM 的存储单元(超单元)以二元阵列排列而不是线性排列,这样可以节省管脚。请求某个超单元先发送行,此时会将行缓存到内部行缓冲区;然后发送列,此时将该行该列的超单元数据返回给请求者。传统的 DRAM 会将剩余的数据丢掉,而 FPM DRAM会缓存整行。这两种DRAM早就已经停产了,现在主流是 DDR3/4 SDRAM。
  • 可擦写编程器 EEPROM 掉电数据不丢失,主要用于存储数据,如闪存(U盘)
  • 一般的程序都具有良好的局部性,即访问的数据都是在一个较密集的区间内,这样可以提高访问效率。但局部性也导致容易受到栈溢出攻击。印象中新版本的 Linux 内核有降低局部性,防止栈溢出攻击的策略。
  • 存储器层次结构的本质是,每一层存储设备都是较低一层的缓存。
  • 高速缓存步骤:1. 组选择(一般用内存中间的位避免相邻的内存分到同一个组) * 2.行匹配 3. 字抽取(返回)
  • 直接映射高速缓存命中遵循定的策略,在真实的程序中很常见,会导致令人困惑的性能问题。例如反复调用两个相邻的内存块(两个数组),而两个内存块映射的组索引恰好一样(块大小为2的幂时尤为容易出现),就会导致冲突不命中,只能每次重新加载。解决方案可以是稍微扩充一下内存块大小。直接映射高速缓存限制是只能有1行。
  • 组相联高速缓存每组可以有多行,冲突不命中的问题得到缓解。
  • 缓存经常会用到 write-back 机制,即更新的数据不会立刻写入到下一层,而是每隔一段时间写一次,以获得更高的性能。L1 对 RAM,RAM 对 ROM 都会用到。write-allocate 是当需要写的时候,如果没有匹配缓存,就先加载进来,而不是 write-through 直接写进去。write-back 和 write-allocate 经常一起使用。
  • i7 每个核心都有独立的 L1 i-cache (instructment) d-cache(data) 和 L2 unified cache。所有核心共享 L3 cache。L1 4周期,32kb,64组64块大小;L2 10周期,256KB,8行512组64块大小;L3 40-75 周期,8mb,16行8192组64块大小
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年12月2日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档