Disk Geometry:

  

  磁盘的结构如图,每个面为surface,surface上的同心圆为track,track包含sector,不同的surface的同半径track构成cylinder。越外围的的track应该包含越多的sectors,这样用于分割sectors的spare space不至于太多而浪费。

SSD:

  传统的机械硬盘读写时需要旋转,而固态硬盘则不必如此故而得名。SSD是以flash memory为基础,由blocks组成,每个block又包含pages。一旦某个page的数据要更该,则需要erase整个block,所以寿命的限制是其缺点之一。

Locality:

  我们的存储器分级是一个金字塔形,越上层的容量越小、速度越快。每一层作为下一层的cache(音同cash),如果我们需要下层的数据,需要一层层传上来。

  Good locality是指我们多次访问相同或临近的地址,因为它们第一次被加载到高层的缓存中后就不用每一次再从下层加载,大大加快了速度。访问相同地址利用了temporal locality(时间的),访问临近地址利用了spatial locality(空间的)。

Cache memory:

  我们所需要的内容如果在缓存中称作cache hit,反之称作cache miss。当cache为空时称作cold cache,我们开始进行数据的访问就相当于给它warm up(^o^)  

  Cache的结构如图

  访问cache的地址分作三部分,最高位的t bits表示tag,中间的s bits表示set,最低位的b bits表示block。

  访问时先匹配set,然后看数据所在行的valid bit是否为1,接着看tag是否匹配,如果以上三步都顺利就可以从相应block中取出数据啦。

启示:

  我们写程序时要注意代码要locality friendly,比如说要选择

for (i=; i<3; i++)
for(j=; j<3; j++)
sum+=a[i][j];

  最里层循环中的i和j顺序不能调换。sum作为局部变量会被加载到高层的缓存中,对它的多次访问利用了temporal locality;而对类似a[i][1]、a[i][2]地址相邻,满足spatial locality。

Memory Mountain:

  这幅图咱们最熟悉了,就是书本封面嘛。

  Size是指block的size,越小则读取越快。Stride-k可以理解为每k个元素,比如说访问stride-3,即访问a[0]、a[3]、a[6]……,k变大时并不利于spatial locality。

  总的来说,size越小,stride越小,存储器的读取速度越快!

Chapter 6: The Memory Hierarchy的更多相关文章

  1. 谈谈计算机上的那些存储器-Memory Hierarchy

    文章首发于浩瀚先森博客http://www.guohao1206.com/2016/12/07/1248.html 说到计算机上的存储器,很多人第一反应是硬盘,然后是内存. 其实在计算机上除了硬盘和内 ...

  2. OpenRisc-39-ORPSoC,or1200的memory hierarchy整体分析

    引言 前面我们简单分析了ORPSoC的整体结构,or1200_top的整体结构,or1200_cpu的整体结构. 并对ORPSoC的启动过程,ORPSoC的debug子系统,clock子系统进行了介绍 ...

  3. 计算机科学基础知识(一)The Memory Hierarchy

    一.前言 最近一个问题经常萦绕在我的脑海:一个学习电子工程的机械师如何称为优秀的程序员?(注:本文作者本科学习机械设计,研究生转到电子工程系学习,毕业后却选择了系统程序员这样的职业).经过思考,我认为 ...

  4. 《CS:APP》 chapter 9 Vitrual Memory 笔记

    Vitrual Memory In order to manage memory more efficiently and with fewer errors, modern systems prov ...

  5. Java软件工程师技能图谱

    原文链接:Java软件工程师技能图谱 最近在考虑"拥有怎样的技能才能算一名合格的java软件工程师呢?"这个问题.碰巧在github发现一个很棒的开源项目--程序员技能图谱.@Zh ...

  6. Linux内核同步机制之(三):memory barrier【转】

    转自:http://www.wowotech.net/kernel_synchronization/memory-barrier.html 一.前言 我记得以前上学的时候大家经常说的一个词汇叫做所见即 ...

  7. CUDA ---- Memory Model

    Memory kernel性能高低是不能单纯的从warp的执行上来解释的.比如之前博文涉及到的,将block的维度设置为warp大小的一半会导致load efficiency降低,这个问题无法用war ...

  8. Linux内核同步 - memory barrier

    一.前言 我记得以前上学的时候大家经常说的一个词汇叫做所见即所得,有些编程工具是所见即所得的,给程序员带来极大的方便.对于一个c程序员,我们的编写的代码能所见即所得吗?我们看到的c程序的逻辑是否就是最 ...

  9. Optimizing TLB entries for mixed page size storage in contiguous memory

    A system and method for accessing memory are provided. The system comprises a lookup buffer for stor ...

随机推荐

  1. JavaScript中的this基本问题

    在函数中 this 到底取何值,是在函数真正被调用执行的时候确定下来的,函数定义的时候确定不了. 执行上下文环境 : **定义**:执行函数的时候,会产生一个上下文的对象,里面保存变量,函数声明和th ...

  2. win10 uwp Window.Current.Dispatcher中Current为null

    本文说的是进行网络中异步界面出现的错误,可能带有一定的主观性和局限性,说的东西可能不对或者不符合每个人的预期.如果觉得我有讲的不对的,就多多包含,或者直接关掉这篇文章,但是请勿生气或者发怒吐槽,可以在 ...

  3. Python学习笔记(八)

    Python学习笔记(八): 复习回顾 递归函数 内置函数 1. 复习回顾 1. 深浅拷贝 2. 集合 应用: 去重 关系操作:交集,并集,差集,对称差集 操作: 定义 s1 = set('alvin ...

  4. 关于keyTyped

    蠢了,重写keyTyped方法时候拿keyCode去做比较....记一下....VK_UNDEFiEND.......

  5. JAVA基础知识总结:六

    一.不定长参数 1.语法:数据类型... 变量名称 使用注意事项:a.不定长参数就相当于是一个数组 b.不定长参数只能出现在参数列表的最后面 c.一个函数的参数列表中只能出现一次不定长参数 d.对于不 ...

  6. Spring框架学习之依赖注入

    Spring框架从2004年发布的第一个版本以来,如今已经迭代到5.x,逐渐成为JavaEE开发中必不可少的框架之一,也有人称它为Java下的第一开源平台.单从Spring的本身来说,它贯穿着整个表现 ...

  7. Lua的函数调用和协程中,栈的变化情况

    Lua的函数调用和协程中,栈的变化情况 1. lua_call / lua_pcall   对于这两个函数,对栈底是没有影响的--调用的时候,参数会被从栈中移除,当函数返 回的时候,其返回值会从函数处 ...

  8. POJ1222EXTENDED LIGHTS OUT(高斯消元)

    EXTENDED LIGHTS OUT Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 11815   Accepted: 7 ...

  9. 暑假练习赛 006 B Bear and Prime 100

    Bear and Prime 100Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:262144KB ...

  10. 2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest J. Bottles

    J. Bottles time limit per test 2 seconds memory limit per test 512 megabytes input standard input ou ...