浅谈高端CPU Cache Page-Coloring(6)

2011-05-31 21:58

浅谈高端CPU Cache Page-Coloring(6)

by 陈怀临

at 2011-05-31 13:58:45

original http://www.tektalk.org/2011/05/30/%e6%b5%85%e8%b0%88%e9%ab%98%e7%ab%afcpu-cache-page-coloring%ef%bc%886%ef%bc%89/

系列目录 高端CPU Cache Page Coloring

  1. 浅谈高端CPU Cache Page-Coloring(1)
  2. 浅谈高端CPU Cache Page-Coloring(2)
  3. 浅谈高端CPU Cache Page-Coloring(3)
  4. 浅谈高端CPU Cache Page-Coloring(4)
  5. 浅谈高端CPU Cache Page-Coloring(5)
  6. 浅谈高端CPU Cache Page-Coloring(6)

前面5节阐述了大CPU大Cache的Cache Page-Coloring的一些基本概念。主要是通过妈咪的包厢运作制度来作为各位弟兄们比较熟悉的场景,从而达到融会贯通的。

在Cache Page-Coloring方面,一个前提是“里面放了N个长凳子的包厢制度”–Set Associative的Cache。否则,一切无从谈起。

这一节谈一下目前大CPU中的L3 Cache的一些问题。通常我们说LLC–Last Layer Cache。

目前市场上不少芯片都有了On-Die的L3 cache,例如Intel的Nehalem-EX, Westmere,IBM的Power7,RMI的XLP,Tilera等等。

与L1和L2的Cache相比,L3 cache的设计和管理方式有相同的地方,也有不一样的地方。

这里比较容易犯迷惑。

1。L3也是Set/Associative的。换言之,学术界和工业界没有,也没有傻到整一个新的Cache机制。从而,Page Coloring的各种思想和算法是而且当然是可以apply到L3 cache中去的。
2。 与L1,L2 cache controller相比,L3的实现是各个厂商差别很大。各有千秋。但总体而言,都是通过一个Distributed L3 Cache的机制,在系统层面提供一个完整的Set/Associative的L3 Cache。其中用Ring结构的还是比较多,例如Intel,RMI等等。Tilera用是其声称的Mesh结构。

3。对L3 cache理解里最容易出错误的就是这个通常不是Local bus的Interconnect结构,例如Ring。从而对其寻址方式和其结构方式造成混淆。请记住:Local Bus的直接拿Index bit来寻址和通过Pa做Hash来寻址,这是一个微结构的事情(Micro-Arch),而非结构(Arch)的事情。在结构上,L3仍然是一个Set/Associate的Cache。例如Nehalem-EX(Beckton)的24M的24Way的L3 Cache。这就说明,这个L3 Cache有(24*2^20)/(24 * 2^6) = 2^14=64K Sets.
[Nehalem的Cache Line是64Bytes]。

显然,通过我们上述几节的分析,在Intel CPU上,一个44位物理地址的0-5是cache offset;6-19是Set的Index bit。我们会在后续文章中对Intel的L3 Cache的微结构做一些探讨,例如其hash机制。

下面是一些相关CPU(Nehalem-EX;XLP-832
,Tilera和Power7)的L3 Cache结构示意图:



分享到: 新浪微博 QQ空间 开心 人人 Live Digg FB Twitter


系列前一篇