サーヴァンツブログ

技術
Mellanox

InfiniBandとは。「起の章」

InfiniBandとは。「起の章」

時は、1990年台後半。インテルから一つのチップが発売になりました。その名はPentium™ Proといい、32ビットCPUと0.5/1Mバイトのキャッシュメモリ搭載しており、最大4チップのSMP(Symmetric Multiprocessing)構成ができました。

スーパーコンピュータの性能を競うTop500で、1997年にトップの座に躍り出たASCI Redの初期モデルに使用されています。1993年に地下核実験をしないと合衆国大統領が宣言したため、アメリカ合衆国エネルギー省(Department of Energy)の推進により、ASCI Redは核実験を行わず、シミュレーションで精密な結果を得るというものでした。計算能力の向上は、核実験を実際に行うことなく、コンピュータの中で精密なシミュレーションにより代用するということ可能にしました。このように、処理能力を格段に高めたプロセッサではありますが、サーバやワークステーションでは、相対的にIO処理のために性能が大きく消費されてしまうという事態になってしまいました。当時インテルや、システムメーカーがこぞってIO処理の高速化の必要性を強く感じました。

IT業界でも、プロセッサの性能は格段に上がっているが、IO性能を向上させるためにIOとメインメモリ間のデータのやり取りをいかに早くするか。そしてDMA(Direct Memory Access)を高速かつ効率よく使うかということでトータル性能を向上させ、そしてIOのインテリジェント化が検討されました。

ここで2つのグループが発足しました、NGIO ForumとFurure IO Alliance です。

2年程の1999年2月、NGIO Forumが結成され7月には仕様書1.0が発行されました。そして2000年中に製品化を目指すというプランでした。NGIOでは、低遅延のスイッチとファブリックテクノロジを用いて、他のデバイスを経由することなく、直接デバイス間でデータの送受信を行い、ファブリックでの拡張性、RAS機能も備えていました。

もう一方のFuture I/O Allianceは、1999年2月に発足をし、2000年の初頭に仕様の承認を受け、2001年初頭には製品化を目指すというプランでした。こちらは、IOを主体とする高速チャネルとして、バス構成でのIOの拡張性、RAS機能を実現するものでした。

これらを見ると、“BetamaxとVHSの戦いが再来するか“との見方がありましたが、1999年8月にNGIOとFuture I/Oの両メンバーの合意が成立し、統合した仕様System I/Oとして一本化が図られ、その後、InfiniBand™として標準化を担うInfiniBand Trade Association(IBTA)が発足しました。ここでは標準仕様およびドライバモデルが発行され、InfiniBand のロードマップとともに現在に至っています。

さて、InfiniBand の特徴の一つとして、RDMA(Remote Direct Memory Access) という機能があります。もともとDMAはプロセッサの介在なくI/O – メインメモリ間のデータ転送を行うことにより、I/Oのデータ転送効率を上げるというものです。8/16ビットの時代から使われてきた技術でありましたが、当時のプロセッサは、I/OがDMA転送を行うためにキャッシュメモリが搭載されておらずプロセッサバスを共用するために、プロセッサ自身の動作を止める(Bus hold)必要がありました。その後32ビットのプロセッサが本格化したころからキャッシュメモリを内蔵するプロセッサの登場により、プロセッサバスを強要しても、プロセッサ自身を停止しなければならない時間が減り、益々DMAの有用性が高まってきました。PCI-Express バスが普及することによりIOファブリックとメインメモリの間の転送スピードの高速化および低遅延でのデータ転送が実現することとなります。

ところが、メインメモリとI/O間での転送は、上図の通りで、一旦システムメモリ(OS) にデータをコピーし、これをユーザメモリにコピーしアプリケーションがそのデータを利用するということになり、いずれにしてもホストプロセッサの介在は免れません。

InfiniBandでは、このようなコピーを無くし、I/Oから直接ユーザメモリへ書き込むということが前提となり、初 I/Oファブリックとホスト間の高速インテリジェント通信として生まれてきましたが、ホスト-ホスト間の転送までができるようになりました。

これにより、異なるホストのアプリケーションメモリ領域間で、ホストプロセッサを経由することなくデータ転送が高速かつ低遅延で行えます。これが、HPC (High Performance Computing)に繋がっています。