AMDのPC向け新CPU「Ryzen」が搭載する新アーキテクチャー「Zen」とはいかなるものなのか。前回に続いて、内部構造を解説する。今回は、省電力に関する詳細だ。

 図1は、Zenと競合CPUとの回路規模を比較したものである。図中の「Competitor A」は、米インテルの第6世代Coreプロセッサー(開発コード名はSkylake)だとみられる。比較は4個のコア+共有3次キャッシュである。

図1●表の下から2番目にあるように、普通に6トランジスター構成の1ビット分のSRAMを構築すると、Zenの方がエリアサイズが大きくなる。
図1●表の下から2番目にあるように、普通に6トランジスター構成の1ビット分のSRAMを構築すると、Zenの方がエリアサイズが大きくなる。
(出所:米AMD)
[画像のクリックで拡大表示]

ZenのコアはSkylakeより小さい

 製造プロセスそのものは、インテルの14nmに対して、AMDは米グローバルファウンドリーズの14nmで一見同じに見えるが、CPP(コンタクテッド・ポリ・ピッチ)とフィンピッチはインテル製コアの方が小さくなっている。そもそも昨今は「14nmプロセス」といっても、実際には14nmの寸法の場所は無かったりする。その代わりにCPPとフィンピッチ、あるいはゲートピッチなどを使って「何nm相当なのか」を計算する。

 実際に計算してみると、グローバルファウンドリーズは14nm相当になるが、インテルのコアは12nmあたりになる。つまり同じトランジスター数ならSkylakeの方がエリアサイズを小さくできる。ところが実際には4コア+3次キャッシュの合計面積は44平方mm対49平方mmで、Zenの方がコンパクトである。

 2次キャッシュと3次キャッシュのエリア面積も出ているから、ここからCPUコア1個当たりの面積を算出すると、Zenが5.5平方mmなのに対し、Skylakeは約6.6平方mmに達する。この理由の一つは1回目に説明した通り、AVX512をサポートしないことがある。

 演算器や内部のAVXレジスター、さらにはロード/ストアユニットなどを節約することが可能になり、その分サイズを節約できたわけだ。ただ、これだけでは説明には十分ではない。2次キャッシュ/3次キャッシュともにZenの方がSkylakeより高密度を実現している。プロセスルール的にはやや不利なのに、同等の機能をより少ない面積で達成していると言うのは、その分構造を工夫した、ということになる。

省電力、コンパクトにするためのキャッシュの実装

 では、その2次キャッシュ/3次キャッシュはどうなっているのだろうか(図2図3)。Zenでは1次キャッシュや2次キャッシュはインクルーシブ(同じデータが両方に保存されている)、2次/3次はエクスクルーシブ(同じデータが両方に載らないように制御される)の構成になっている。2次キャッシュが512KBと大きいので、インクルーシブ構成にすると4コアで最大2MB分が無駄(2次と3次で同じデータを保持する)になるのを避けたかったと言うこともあるのだろう。ただその分制御がやや複雑化している。

図2●LRU(リースト・リーセントリー・ユースト)は、「各々のキャッシュの領域が何時使われたか」を保持する。キャッシュは新しいデータを取り込むとき、古い領域は破棄することになるので、どの領域を破棄するかをLRUを利用して決定する。
図2●LRU(リースト・リーセントリー・ユースト)は、「各々のキャッシュの領域が何時使われたか」を保持する。キャッシュは新しいデータを取り込むとき、古い領域は破棄することになるので、どの領域を破棄するかをLRUを利用して決定する。
(出所:米AMD)
[画像のクリックで拡大表示]
図3●3次キャッシュは、そこにつながる4個のコアの中で最も高速に駆動されるコアに合わせた周波数で動作する、というのも特に待機時における省電力化に貢献している。
図3●3次キャッシュは、そこにつながる4個のコアの中で最も高速に駆動されるコアに合わせた周波数で動作する、というのも特に待機時における省電力化に貢献している。
(出所:米AMD)
[画像のクリックで拡大表示]