インテル QuickPath インターコネクト
読み:インテル-クイック-パス-インターコネクト
外語:Intel QPI: Intel QuickPath Interconnect

 Intel製プロセッサーで採用されたCPUバスの一つ。略称は「QPI」。
目次

概要

採用
 Pentium Pro以降のx86シリーズプロセッサーは、CPUノースブリッジ間の接続にフロントサイドバス(FSB)が使われてきた。
 IA-32系「Nehalemアーキテクチャー」(ネハーレン)のIntel Core i7で採用された。また、IA-64系「Tukwila」(タックウイラ)のItaniumシリーズでも採用される予定である。

由来
 Pentium Pro以来使われてきたFSBは、GTLと呼ばれる技術を用い、振幅の遷移で伝送を行なっていた。しかし速度に限界が出てきたため、新たに開発されたものがQPIである。
 AMDが採用しているHyperTransportの対抗ということができる。
 この技術は、かつてDECでAlphaチップ開発に携わり、後にIntelに移籍したエンジニアによって開発された。

技術

平衡伝送
 QPIは平衡(差動、ディファレンシャル)伝送方式を採用している。
 またネットワークトポロジー面も、FSBは双方向(全二重)の共有バスだが、QPIは片方向(単向)のポイント・トゥー・ポイント型リンクである。

シリアル
 FSBはパラレルバスインターフェイスだったが、QPIはシリアルバスインターフェイスである。
 QPIはデータ線に加え、これと別にクロック信号線がある。つまり、データ内にクロック信号を埋め込むエンベデットクロック方式ではないのが特徴である。この方式をもって、QPIを「シリアルではない」とする記述も一部に見られるが、クロック信号が別であってもシリアルはシリアルである。
 クロックの立ち上がりと立ち下がりの双方でビット伝送が行なわれるため、クロック速度の倍速で伝送できる(いわゆるDDR)。

レーン
 各QPIは、全二重で20レーンのデータリンクユニットにより構成される。他に上下方向のクロックが必要なため、計42の信号が必要となる。
 このため一度に20ビットを伝送できるが、プロトコルとしては2クロック(クロックあたり2回転送するので、転送4回分)の80ビットを一つの単位とし、これをフリット(Flit: Flow control unit)と呼んでいる。
 なお、QPIは20レーンを、5レーンずつ4つの象限(quadrant)に分けて扱う。データバス幅は次の三種類が用意される。
 CPU用として使われるのはフル幅の4象限である。いずれかのレーンが故障した場合、仕様上は劣化モード(degraded mode)で動作することもできる。クロックが生きていれば、遅くなるが10+1や5+1で動作できる。クロック線が動作しない場合は、データ線に割り当てて利用できるともしている。
 80ビットのフリットのうち、8ビットが誤り訂正用の情報、8ビットがプロトコルヘッダーとなるため、実際のデータは64ビットとなる。つまり、20ビットのレーンの実効伝送幅は16ビットである。

速度
 Nehalemで最初に実装されたものは、3.2GHzのクロックで動作した。
 片道の伝送速度は、次のように計算できる。
 単純計算では双方向で倍速なので、25.6Gバイト/秒、ということになる。
 この速度は、最速のFSBであるFSB 1600MHz(帯域幅12.8GB/s)の倍速となり、クロック当たりの伝送効率はFSBよりも高いことが分かる。

プロトコル

レイヤー構造
 QPIのプロトコルは、5層に分かれている。
 物理層に近い側から順に、次のようになっている。
  1. 物理層(Physical layer)
  2. リンク層(Link layer)
  3. ルーティング層(Routing layer)
  4. トランスポート層(Transport layer)
  5. プロトコル層(Protocol layer)

物理層(Physical layer)
 物理層は平衡伝送のシリアルバスインターフェイスであり、データ、クロックともに信号線は一対2本である。
 データバス幅によるが、最大で20ビットをユニットとし、伝送が行なわれる。
 信号は平衡なので信号線は倍の本数が必要となるので、フル幅(4象限)では片方向42線、双方向で84線となる。これでも、従来の64ビットFSBの150ピンと比較して約半分となり、製造の困難が大幅に改善される。

リンク層(Link layer)
 フロー制御誤り訂正を行なう層である。エラー検出はCRCによって行なわれる。
 リンク層では、フリット単位でデータを扱う。1フリットは80ビットで、フル幅(20ビット)の場合は4サイクルで1フリットが伝送される。
 80ビット中、データは64ビットで、残る16ビットはプロトコルヘッダー(8ビット)とCRC(8ビット)に使われている。

ルーティング層(Routing layer)
 複数のデバイスがバス上にある時、そのデバイスを転送する際に必要となる層である。
 TCP/IPならIPが位置する層。

トランスポート層(Transport layer)
 より高度なルーティングを実現するために用意されている層。定義だけで、最初の製品では未使用とされている。
 TCP/IPならTCPが位置する層。

プロトコル層(Protocol layer)
 CPUとチップセットなど、相互で必要なデータは、お互いのこの層にて処理される。
 ここでは、従来よりマルチプロセッサーで使われてきたMESIプロトコルを改良したプロトコル「MESIFプロトコル」が使われており、一つ以上のフリットで構成されるパケット単位でデータを扱う。なお、MESIFプロトコルはIntelが特許を申請している。

再検索