このページの本文へ

ロードマップでわかる!当世プロセッサー事情 第170回

インテルCPU進化論 Haswellで導入されるCPUの改良 後編

2012年09月24日 12時00分更新

文● 大原雄介(http://www.yusuke-ohara.com/

  • この記事をはてなブックマークに追加
  • 本文印刷

図1 Haswellの内部構造図。赤枠内がSandy Bridgeからの主な変更部分

A=A×B+C

 Sandy Bridge世代では浮動小数点で上の演算を行なう場合、以下のように2つの命令に分けて処理を行なう必要があった。トータルでのレインテンシーは8サイクルかかる。

A=A×B (レイテンシー 5サイクル)
A=A+C (レイテンシー 3サイクル)

 これがHaswellの世代では1回でできるので、前掲のスライドにも「Latency:5 cycles」と記述されている。

 そのほかにも、これまではSSE3/SSE4などで提供されてAVXには含まれていなかった命令を、全部AVXで取り込むようにしたり、強力なデータの並べ替え機構(AVXレジスタにデータを取り込む時の指定方法を強化)、bit演算命令などの追加という改良が加えられている。

AVX強化に合わせて、
1次データ/2次キャッシュの帯域も強化

 ただし、AVX命令の性能を強化した結果、データ入出力についても強化しないといけなくなった。例えば「A=A+B」という演算では、2つの処理が必要になる。

  • ①AとB、2つの値を読み込む
  • ②計算後にAの値を書き出す

 従来のSSEは128bitだったので、読み込みが16byte(128bit)×2で32byte/サイクル。書き出しは16byte/サイクルの帯域が必要である。Sandy Bridgeはこれに合わせてLoadユニットを増加させていたが、AVX2で演算性能が倍になると、これらの帯域も倍増させないと間に合わなくなった。

 そのため、CPUコアと1次キャッシュ(正確には1次データキャッシュ)の帯域は、ついに読み出しが64byte/cycle、書き込みが32byte/cycleで、合計96byte/cycleの帯域を持つように強化された。それに合わせてデータ1次キャッシュと2次キャッシュの間の帯域も、Sandy Bridge世代の倍である64byte/サイクルに強化されている。

Haswellでのキャッシュ強化についての説明スライド。右に帯域幅の強化について記されている。命令に関しては引き続き16byte/サイクルの命令フェッチが維持されているので、こちらに関しては帯域はNehalem世代と同じく、16byte/サイクルのままと思われる

 ただし、上のスライドにもあるとおり、1次/2次キャッシュの構成やサイズそのものは、Sandy Bridge世代と変わっていない。また別の資料によれば、1次/2次キャッシュへのアクセスレイテンシーも「不変」とあるので、この帯域倍増は純粋に、バスの配線を倍増する形で実装したものと思われる。もちろん、バス幅以外まったく同じというわけではなく、書き戻しの際の干渉を軽減したり、キャッシュライン※1をまたがってデータアクセスする場合の効率を改善したりと、さまざまな工夫はされている。
※1 キャッシュは通常、32byteあるいは64byte単位で管理されており、この最小単位をキャッシュラインと呼ぶ。キャッシュにリクエストを出す場合、このライン単位で読み書きをするため、これにぴったりあった形で読み書きをすると高速だが、ラインをまたがった場合は著しく効率が落ちる。

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン