特集 6. 互換性重視で高速化された拡張バス/スロット(1) |
ここまでは、IAサーバの概要から始まって、プロセッサやメモリに注目してきた。次は、IAサーバにとってI/Oの拡張性の要となる「拡張バス/スロット」について、その必要性や現在の拡張バス/スロットの問題点、2002年の標準バス規格、そして将来の拡張I/Oなどについて解説していく。
拡張バス/スロットの重要度が高いIAサーバ
半導体技術が高度に進歩した現在、PCに必要なハードウェアの多くはチップセットに統合できるようになった。デスクトップPCなら、USBやIDEのホスト・コントローラ、基本的なサウンド機能(AC'97)といったものから、最近ではグラフィックス機能を内蔵したものや、チップセットを1つに統合したものまで登場してきている。しかし、それでもPCから拡張スロットはなくなっていない。小型化の著しいデスクトップPCでも2スロット程度はまだ装備されているのが一般的だ。そしてIAサーバでは、いまもって拡張バス/スロットは必要不可欠な存在なのだ。
オンボード実装のイーサネット・コントローラ |
これはデルコンピュータのPowerEdge 1650に搭載されている2個のギガビット・イーサネット・コントローラ。両方同時に稼働すると200Mbytes/s以上の帯域を消費する。こうしたオンボード実装のデバイスのためにも、IAサーバには多数のデバイスが接続可能で、かつ高速な拡張バスが必要となる。 |
その理由の1つは、ハードウェアのアップグレードの必要性だ。最近のIAサーバでは、ネットワーク/ディスク・インターフェイスなど各種コントローラ・チップがオンボードで実装されており、拡張カードなしでもネットワークやハードディスクを接続してそのまま利用できるようになっている。しかし、例えばユーザー数が増えるなどして次第にIAサーバへの負荷が増大すれば、オンボード実装のコントローラでは性能が不足することも十分あり得る。そうそう簡単にリプレースできないIAサーバでは、負荷の増大に耐えられるように標準装備のコントローラを、より高性能なものにアップグレードできる必要がある。そこで拡張スロットを用いて性能の高いコントローラ・カード(拡張カード)を追加するわけだ。
例えば、イーサネット・インターフェイスが挙げられる。オンボードで実装されている100BASE-TX対応イーサネット・コントローラの性能が不足した場合、ギガビット・イーサネット・カードを拡張スロットに実装して性能を向上させるといった具合である(もちろん、ネットワーク全体をギガビット・イーサネット対応にしないと意味はないが)。さらにサーバは、クライアントPCと異なり、複数枚のイーサネット・カードを実装して、ネットワークのセグメントを分けるといった使い方も行われる。そこで、このような高速インターフェイスを生かすために、高い帯域幅を持つ複数の拡張スロットが必要になるのだ。プロセッサ数やメイン・メモリの最大容量と同様、拡張スロットの数および拡張バスの最大転送速度はIAサーバのスケーラビリティを決める要素の1つといえる。
もちろん拡張スロットには、新しいI/Oの追加という重要な役割もある。例えばファイバ・チャネル(Fibre Channel)は、まだIAサーバにとって標準的なインターフェイスとはいえず、ほとんどの場合はオプション扱いだ。そのため、SAN(Storage Area Network)を構築するためにファイバ・チャネルが必要なら、そのホストアダプタをIAサーバに装着しなければならない。ほかにも、マイナーだが特定のコンピュータ環境では必須というI/Oも存在する。そのような環境でも適応するには、業界標準の拡張バス/スロットが必須である。
IAサーバの拡張バスの種類
IAサーバに組み込まれている大多数のハードウェアと同様、拡張バス/スロットも標準規格に沿ったものが採用されている。現在の標準は、デスクトップPCと同様、PCI(Peripheral Component Interconnect)と呼ばれる拡張バス規格である。PCIは、当初Intelが提唱し、のちにPCI SIG(PCI Special Interest Group)によって規格化されたものだ。PCI Revision 2.0の策定後、1996年ごろから急速にPCに普及し、またIAサーバでもそれまでのEISA(Extended ISA)バスを置き換える形で広まっていった。
「デスクトップPCと同様」と書いたが、IAサーバとデスクトップPCそれぞれが採用しているPCIバスは、まったく同じではない。デスクトップPCのほとんどが32bit/33MHz PCIを採用しているのに対し、IAサーバの多くは64bit/66MHz PCIを採用している(あるいは32bit/33MHz PCIと64bit/66MHz PCIの両方を実装している)。
PCIのバリエーション:データ・バス幅と最大クロック周波数 |
|
多くのIAサーバが64bit/66MHz PCIを採用しているのは、もちろん(グラフィックスを除けば)デスクトップPCより高い転送速度が要求されるからだ。32bit/33MHz PCIの133Mbytes/sという最大転送速度は、下表のように単体のデバイスでも上回るようになってきており、高速なI/Oデバイスを必要とするIAサーバにとって力不足になってしまっている。一方、64bit/66MHz PCIなら最大転送速度は533Mbytes/sと、32bit/33MHz PCIの4倍に達する。
名称 | 最大転送速度 | 備考 |
ギガビット・イーサネット | 1Gbits/s(100Mbytes/s以上) | IAサーバには標準装備されることも多くなってきたネットワーク・インターフェイス。全二重通信時には、200Mbytes/s以上の転送速度が拡張バスに要求される |
Ultra160 SCSI | 160Mbytes/s | Ultra3 SCSIとも呼ばれるパラレルSCSI規格。RAIDコントローラでよく採用されており、チャネル数の分だけ拡張バスの転送速度も必要となる(2チャネルなら320Mbytes/sの転送速度が必要になることがある) |
Ultra320 SCSI | 320Mbytes/s | Ultra160 SCSIの後継で、すでに対応製品の出荷が始まっている。やはりRAIDコントローラでの採用が多い |
ファイバ・チャネル(光ファイバ使用) | 1Gbits/s以上(100Mbytes/s以上) | SAN(Storage Area Network)の標準インターフェイス |
IAサーバによく装備されるI/Oインターフェイスとその最大転送速度 | ||
どれも単体で100Mbytes/sを超える転送速度を発揮するため、32bit/33MHz PCIの最大133Mbytes/sという転送速度ではもはや十分ではない。 |
64bit/66MHz PCIでも性能不足!?
とはいえ、64bit/66MHz PCIの533Mbytse/sでもIAサーバにとって十分に高い転送速度とはいえなくなりつつある。下図のようにPCIバスは複数のデバイスで共有されるため、例えばギガビット・イーサネット×2系統とUltra160 SCSI×2チャネル対応のRAIDコントローラが同時にフル稼働すると、533Mbytes/sの帯域幅を使い切ってしまう。
1系統のPCIバスでは各デバイスが帯域幅を共有する |
1本の64bit/66MHz PCIバスにおいて、ある瞬間には単一のデバイスが533Mbytes/sでデータを転送できる。しかし、そのとき、ほかのデバイスはデータ転送を待たされる。平均すると、例えば(A)が320Mbytes/sの帯域を消費する場合、(B)は単純計算でも最大533−320=213Mbytes/sの帯域しか利用できない計算になる。もし本来(B)のデバイスがこれより高速な場合、PCIバスがボトルネックとなってしまい、I/O性能のスケーラビリティに悪影響を及ぼすことになる。 |
この帯域不足の問題を解消するために、IAサーバでは複数系統のPCIバスが実装されることがよくある。
複数系統のPCIバスを設けて帯域幅を広める |
この図のように2系統のPCIバスを実装すれば、総合の帯域幅は2倍になる。仮に各PCIバスにデバイスを1つずつ接続すれば、それぞれのデバイスは533Mbytes/sの帯域を占有できるようになり、ボトルネックの限界を高めることができる。 |
複数系統のバスが実装されるのは、スロット数を増やすためという目的もある(むしろ、こちらの方が性能向上より重視されている)。例えば66MHz PCIでは、1系統あたりのスロット数つまり装着可能なカードの枚数がわずか2枚に制限される。これは、33MHz PCIに比べて電気信号のタイミング・マージン(余裕)が小さく、多くのカードを66MHz PCIに装着すると(電気的な負荷が増えて)信号の遅延時間が長くなり、マージンを超えてしまって安定した動作が保証できなくなるからだ。バスの系統を増やせば、タイミング・マージンの問題は回避できるので、その分スロット数も増やせる。
33MHz PCIカードと66MHz PCIカードを1系統のPCIバスに混在させると、すべて33MHz動作に限定されてしまうのも、複数系統のバスを設ける理由の1つに挙げられる。66MHz PCIバスに66MHz PCIカードだけを装着していればバス・クロック66MHzで最大性能を発揮できるが、そこに1枚でも33MHz PCIカードが混ざるとバス・クロックは33MHz以下に下がってしまい、66MHz PCIカードの性能はスポイルされてしまうのだ*4。しかも現時点で、装着する全PCIカードを66MHz対応品にすることは難しい。そこでIAサーバによっては、33MHz PCIバスと66MHz PCIバスをそれぞれ設け、対応クロック周波数によってPCIカードを分類して各バスに接続することで、クロック周波数の低下を回避できるようにしている。
*4 ちなみにデータ・バス幅が異なるPCIカードを混在させても、速度の低下には結びつかない。1系統の64bit PCIバスに32bit PCIカードと64bit PCIカードを装着した場合、それぞれ32bitと64bit単位でデータ転送が行われる。ただし、データを転送し合う2つのデバイス間でデータ・バス幅が異なる場合は、狭い方、つまり32bit幅に制限される。 |
このように、複数の系統のPCIバスをIAサーバに実装することには多くのメリットがあるが、実装コストは当然高くなる。いずれにせよ、IAサーバを選ぶためのポイントの1つであることは間違いない。例えば、カタログを一見するとPCIスロット数が同じでも、そのバス構成が1系統か複数系統かによって、拡張性やI/O性能は変化する。スロット数が限定される小型/薄型ケースのIAサーバほど、この点には注意すべきだろう。
PCIのバリエーションその2:バス信号の振幅電圧 |
「System Insiderの特集」 |
- Intelと互換プロセッサとの戦いの歴史を振り返る (2017/6/28)
Intelのx86が誕生して約40年たつという。x86プロセッサは、互換プロセッサとの戦いでもあった。その歴史を簡単に振り返ってみよう - 第204回 人工知能がFPGAに恋する理由 (2017/5/25)
最近、人工知能(AI)のアクセラレータとしてFPGAを活用する動きがある。なぜCPUやGPUに加えて、FPGAが人工知能に活用されるのだろうか。その理由は? - IoT実用化への号砲は鳴った (2017/4/27)
スタートの号砲が鳴ったようだ。多くのベンダーからIoTを使った実証実験の発表が相次いでいる。あと半年もすれば、実用化へのゴールも見えてくるのだろうか? - スパコンの新しい潮流は人工知能にあり? (2017/3/29)
スパコン関連の発表が続いている。多くが「人工知能」をターゲットにしているようだ。人工知能向けのスパコンとはどのようなものなのか、最近の発表から見ていこう
|
|