2011年8月のHot Chips 23においてMicron Technologyは「Hybrid Memory Cube」というテクノロジを発表した。
Micron TechnologyのHybrid Memory Cubeについて発表するJ.Thomas Pawlowski氏 |
一般に言われるメモリウォールはCPUのクロック向上にメモリのアクセスタイムの短縮がついて行かず、メモリのアクセスにかかるCPUサイクル数がどんどんと大きくなりメモリからデータが届かないことから処理性能が制約されることを指すのであるが、最近ではCPUのクロックが上がらないので、ちょっと危機感は下火になっている。
一方、マルチコアなどでCPUチップのスループット(単位時間の命令処理数)が上がっている。そうすると処理に必要なメモリの読み書きの量もスループットに比例して増加する。このため、DDRメモリの転送速度を向上させたり、CPUチップからのメモリチャネル数を増やしたりしているが、それでも間に合わなくなってきている。 Hybrid Memory Cube(HMC)は、メモリバンド幅の不足を解消する有力な提案の1つである。
この図の右側にみられるように、HMCは一番下にロジックチップがあり、その上に4枚とか8枚のDRAMチップを載せ、それらのチップの間をTSV(Through Silicon Via:シリコン貫通ビア)で接続した構造である。ロジックチップとDRAMチップ間は多数のTSV接続の信号線があるので、1Tbit/sを超える高いメモリバンド幅が得られる。そして、CPUとHMCの間は、それに見合う高速のリンクで接続する。
これなら、CPUチップの上に直接DRAMチップを載せてTSVで繋いだ方がよいと思うかもしれないが、CPUは消費電力が大きいので、CPUチップの上には放熱のためのヒートシンクを付ける必要があるのでDRAMを載せられない。無理をして載せたとしてもDRAMは温度が高くなるとデータの保持時間が短くなるなど色々な問題がある。このため、HMCはCPUとは別のパッケージという構造になっている。
また、HMCのロジックチップには色々な機能を持たせることができる。HMCをCPUと1対1に接続するだけでなく、ロジックチップがメッシュネットワークのルータとして動作して多数のHMCをつなぐという構造も考えられている。
例えばDDR3-1333でx8のDRAMチップのバンド幅は、1.333GB/sである。しかし、このDRAMを2個使えばバンド幅は2.667GB/sになり、個数に比例してバンド幅が増加する。
DRAMチップの中身を見ると、基本となる1つのDRAMアレイの容量は数Mbit程度で、1GbitのDRAMでは、数百から1000個程度のDRAMアレイが入っている。通常のDRAMでは一時には少数のアレイしか動作させていないが、たくさんのDRAMアレイを並列に動作させれば、複数のDRAMチップを使うのと同様にメモリバンド幅を高めることができる。
先に書いたように、HMCはロジックチップの上にDRAMチップが重なって搭載されている。この図ではそれぞれのメモリチップを16区画に区分して、それぞれの区画を独立のDRAMチップのように扱う。この図では8枚のDRAMチップが重なっているので、普通のマザーボートでいうと8枚のDIMMを芋づるで接続したメモリチャネルがスライスごとに16チャネルあるという感じになる。DIMMを8枚も芋づる接続すると、電気的な特性が悪くなり高速のデータ伝送はできないが、TSV接続は8枚重ねても1mm以下という程度なので、高速の伝送も可能である。
通常のDIMMではDRAM内部の8バンクで並列アクセスができるが、4枚のDRAMチップを重ねる第1世代のHMCの場合は、4DRAM×16Slice×2Banks=128とDIMMの16倍のバンクが並列にアクセスできることになる。このため、HMCを使うとメモリバンド幅が増えるだけではなく、ランダムなメモリアクセスが連続するような用途ではバンクの空きを待つ時間が大幅に減少して高速のアクセスができるようになる。
図の左上にロジックチップのブロックダイヤグラムが書かれているが、重なったDRAMのそれぞれの区画とインタフェースするスライスコントロールが区画の数だけ存在し、その下のメモリコントロールがDRAMの制御を行う。そしてクロスバスイッチでスライスとプロセサに接続するリンクインタフェースコントローラの間の接続を必要に応じて切り替える。