Radeon HD 2000シリーズのうちRadeon HD 2900シリーズに限っては、メモリコントローラの大幅な機能拡張も行われている。
Radeon HD 2900シリーズのメモリコントローラは、先代Radeon X1800/X1900シリーズのものを、さらに進化させた512ビット・リングバス・メモリー・コントローラを採用している。リングバスの発想自体は昔からあったものなので珍しくはないが、それよりも512ビットバスインタフェースを採用したことはGPU業界における1つのマイルストーンとなったといえる。
図は、GPUに採用されているメモリコントローラの3つの形態を模式図として表したものだ。
従来の多くのGPUのメモリコントローラは最上段のようなクロスバー構造の設計になっている(Radeon HD 2600/HD 2400シリーズもこの従来方式を採用)。メモリコントローラが全てのメモリチップにアクセスできるこの設計は確かに高速だが、メモリバス幅が増えていくと、これに比例して複雑性が増していく。ビデオメモリのバス幅が拡大されるとメモリコントローラのチップに膨大な数のピンをレイアウトする必要があり、さらにそこから基板上に配線を伸ばす必要がある。こうしたピンや配線のアライメントは基板の物理設計やアナログ回路技術的な分野であり、プロセッサの製造プロセスのシュリンクとはまた違った次元の高度な技術が求められ、高コストとしてのしかかってくる。
こうした技術的課題を回避しつつ、最大パフォーマンスを得る方法として、AMDが着目したのがこの「リングバス」(Ring Bus)というソリューションだ。
リングバスは実はRadeon X1800シリーズの時に採用になっている。しかし、この時は、図の中段に表されているような、いわばクロスバーとリングバスのハイブリッド形態だった。Radeon X1800/1900シリーズの時のハイブリッド版リングバスでは、リンクバスの構造は読み出したデータの受け渡しにしか用いられていなかった。メモリ読み込みのリクエストと書き込みのリクエストは中央のメモリコントローラからクロスバーで接続されたラインを用いて実行されていたのであった。
Radeon HD 2900シリーズでは、図の最下段のような、完全なリングバス構造となり、中央コントローラを廃止した設計になっている。
Radeon HD 2900シリーズのリングバス・メモリコントローラの仕組みをもうちょっと詳しく図解した図がこちらになる。
512ビットのリングバス(Ring Bus)アーキテクチャ |
Radeon X1000シリーズのハイブリッド型リングバスのブロック図(参考)。この時のリングストップを結ぶバスラインは左回り256ビット、右回り256ビットだった |
リングバスは、イメージ的には山手線のような環状線構造のバスラインだ。この図において、時計でいうところの12時、3時、6時、9時の位置にあるのがリングバスにおける停車駅ともいえるメモリコントローラ「リングストップ」(Ring Stop)だ。リングストップには64ビットのバスラインでメモリチップが接続されている。
なお、この4基のリングストップは、前述の4基のレンダーバックエンドと接続されているイメージになる。
リングストップ間を4本のラインが相互に接続しているのが描かれているが、この1本ずつが256ビットのバスラインを示している。つまり、Radeon HD 2900シリーズでは左回り256ビット×2本、右回り256ビット×2本のバスラインがこのリングストップを結んでいる。左回り、右回り双方向512ビットなので「512ビット・リングバス・メモリインタフェース」を名乗っているのだ。
メモリへの読み込みや書き込みといった作業におけるデータの伝送は、丁度バケツリレーのように行われるのがリングバスの特徴となっている。
例えば、3時方向のリングストップに対して、"とある"アドレスのメモリ読みだしの要求が届いたとする。そのアドレスが、この3時のリングストップ管理下のメモリチップを指していればそこからデータを読んで終わりだが、そうでなくて他のリングストップ管理下のメモリへのアクセスと判明した場合は、このメモリ読み出し要求を隣のリングストップへ受け流す。6時方向や12時方向の、隣のリングストップに対象データがある場合には、それらのリングストップがその要求を受け取ってすぐにメモリを読み出し、読み出したデータを3時のリングストップに向けて流し戻す。ここにもなかった場合は、さらにこのメモリ読み出し要求を9時方向のリングストップへと受け流す。こうした読み出しデータ、書き出しデータ、読み込み要求などが、このリングバスに乗ってリングストップ間を同時多発的に往来することになる。
つまり、メモリアクセスの要求がそのリングストップ管理下のメモリチップに対してであれば最速で事が済むが、隣のリングストップ、あるいは隣の隣のリングストップへとバケツリレーが発生すると、それだけ実際のメモリアクセスが完了するまでの遅延時間は長くなってしまう。これはリングバスの弱点といってもいいだろう。
ただし、この遅延はリングストップ間のバスラインを高クロック化していくことで低減していくことは可能だ。また、将来的に、メモリチップとリングストップの接続バス幅を広げた場合も、リングストップ間のバスラインのバス幅を広げたり、あるいは本数を増やすことでさらなる帯域増強を行えば対応できる。クロスバー接続方式と違い、基本設計をそのままに、スケーラブルな進化/拡張を推し進められる将来性の高さこそがリングバスの最大のメリットなのである。
10時方向あたりに「PCI-Express Ring Stop」という名称のリングストップがあるが、これはPCI-Expressバスを通じて、システムメインメモリをビデオメモリ的に活用するためのもの。ビデオメモリが不足した場合に、その代替メモリとしてメインメモリを活用する場合があるが、その仕組みをGPU側からシームレスに実現するために活躍する。Windows Vista環境下ではビデオメモリの仮想化がサポートされるが、その仕組みの実装をハードウェア的に支援する部分になる。