码迷,mamicode.com
首页 > 其他好文 > 详细

Chapter 6: The Memory Hierarchy

时间:2015-11-21 21:07:50      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:

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=0; i<3; i++)
    for(j=0; j<3; j++)
        sum+=a[i][j];

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

Chapter 6: The Memory Hierarchy

标签:

原文地址:http://www.cnblogs.com/justforfun12/p/4984648.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!