2017-09-21

猎数博客

数据挖掘,机器学习

cache基础知识

作者:江航 / 2011-06-09 / (阅读 2,010 次) /



cache设计是IC设计的重要组成部分,一般一个CHIP的主要面积为各式RAM,其中包括有CACHE,BUFFER,FIFO之类,这类面积占了整个CHIP面积的一半以上。因此深入了解cache的设计是必要的。

一个块(cache line)可以被放置在cache的哪里

  •  如果一个块只能出现在cache中唯一的一个位置上,那么这种映射就叫做直接映射(direct mapping),映射方法通常是 (块地址) mod (cache 中的块数)
  • 如果一个块可以放在cache中的任何一个地方,那么这种映射就叫做全相连映射(fully associative mapping)
  • 如果一个块可以放在cache中一个受限的组里,那个这种映射就叫做组相连映射(set associative mapping),一个组是cache中的一组块,一个块首先被映射到一个组里,在该组中他可以被放置在任何一个位置。
    如果一个组有n块,那么这种映射方法就称为n路组相连(n way set association)
    现在大多数cache处理器的cache采取直接映射,2路组相连或者4路组相连映射方式。

如果某个块在cache中,如何找到它

cache中的每个地址的划分方法,先划分出块地址和块内偏移。块地址可以进一步划分为标志字段和索引字段,其中索引字段用来选择组,块内便宜用来从块中选出数据,通过比较标志字段判断是否发生命中。

块地址                          :块内偏移
标志字段:索引字段:块内偏移

如果没有命中,哪个块应该被替换

当cache没有命中时,可以替换块的策略可以是:随机替换,最近最少使用替换(LRU),先进先出替换(FIFO)。

写操作方式

通常写cache时有两种方式:write through 和write back。 有人翻译为(写直达和写回法)

其中write through方式是数据被写到cache时,同时被写到更低一层的存储器块中。write back是指数据只被写入cache,只有当当前块被替换出去时,才将这些数据写到下一层存储器中。

当发生写缺失时,也就是要写的地址并不在cache中,通常有两种策略:

写分配(write allocate) 内存的块被读到cache中,同时执行前面写命中时的操作

不按写分配(no-write allocate)直接修改内存中的块,并不把这个块读取到cache中。因此,这种方式的写操作并不会影响cache的内容。

cache的性能问题

  CPU执行时间 = (CPU时钟周期数+存储器停顿时间) X  时钟周期时间

其中

存储器停顿时间=缺失次数 X 缺失代价

                               =执行指令数 X (缺失次数/指令数) X  缺失代价

                               =执行指令数 X (存储器访问次数/指令数)  X 缺失率 X 缺失代价

其中的缺失代价为每次cache缺失时,读写存储器需要的时钟周期数 。

实例

假设某个cache大小为64KB , 块大小(cache line)为64字节,使用2路组相连映射模式,写回法,在写缺失时采用写分配策略:

进入cache的地址为44位,进入的地址被分为两部分,38位块地址和6位块内偏移地址,采用6位块内偏移地址是因为cache line大小为64字节,64=2^6,故而,要定位一个字节需要6位地址。

至于38位块地址也分为两部分,即标志字段和索引字段,索引字段为组索引,因为每组两个块,所以一共有64KB/(64Byte*2) = 512 = 2^9 , 所以索引宽为9位。

至此得到标志字段为38-9=29位。

cache拿到地址后,先有索引字段得到组,然后拿到组内的两个块中的标志位,并跟当前地址的标志位进行比较,如果某个块标志段匹配,则从该块中读出需要的数据,否则就是一个cache miss。在命中的情况下,估计三个时钟周期就可以把数据从cache中取出来。

本文基于《计算机系统结构–量化研究方法》(第三版) 郑纬民等译。



本文地址: http://www.bagualu.net/wordpress/archives/750 转载请注明






相关文章

  • 配了台机器( 2,594 )
  • cache基础知识( 2,010 )
  • debussy 快速上手教程( 1,552 )
  • SDXC卡 DV( 1,461 )
  • 电动打蛋器( 1,456 )
  • Tegra2 和 Tegra 3( 1,328 )
  • ARM 处理器( 1,261 )
  • 电脑和电话( 1,241 )
  • Leave a Reply

    您必须登录以发表评论,

    沪ICP备11036560号
    联系我: jianghang at bagualu.net