インテル QuickPath インターコネクト
読み:インテル-クイック-パス-インターコネクト
外語:Intel QPI: Intel QuickPath Interconnect
Intel
製プロセッサーで採用されたCPUバスの一つ。略称は「QPI」。
目次
概要
採用
由来
技術
平衡伝送
シリアル
レーン
速度
プロトコル
レイヤー構造
物理層(Physical layer)
リンク層(Link layer)
ルーティング層(Routing layer)
トランスポート層(Transport layer)
プロトコル層(Protocol layer)
概要
採用
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)に分けて扱う。
データバス
幅は次の三種類が用意される。
4象限(20対40ピン): フル幅(full-width)
2象限(10対20ピン): ハーフ幅(half-width)
1象限(5対10ピン): クォーター幅(quarter-width)
CPU用として使われるのはフル幅の4象限である。いずれかのレーンが故障した場合、仕様上は劣化モード(degraded mode)で動作することもできる。クロックが生きていれば、遅くなるが10+1や5+1で動作できる。クロック線が動作しない場合は、データ線に割り当てて利用できるともしている。
80ビットのフリットのうち、8ビットが
誤り訂正
用の情報、8ビットがプロトコルヘッダーとなるため、実際のデータは64ビットとなる。つまり、20ビットのレーンの実効伝送幅は16ビットである。
速度
Nehalemで最初に実装されたものは、3.2GHzのクロックで動作した。
片道の伝送速度は、次のように計算できる。
3.2GHz
×2bit/Hz (DDR)
×20bit (QPIのレーン幅)
×(64/80) (実効速度。64/80≒16/20)
= 102.4Gbps
÷8 (bit/byte)
= 12.8GB/s
単純計算では双方向で倍速なので、25.6Gバイト/秒、ということになる。
この速度は、最速のFSBであるFSB 1600MHz(帯域幅12.8GB/s)の倍速となり、クロック当たりの伝送効率はFSBよりも高いことが分かる。
プロトコル
レイヤー構造
QPIのプロトコルは、5層に分かれている。
物理層に近い側から順に、次のようになっている。
物理層(Physical layer)
リンク層(Link layer)
ルーティング層(Routing layer)
トランスポート層(Transport layer)
プロトコル層(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が特許を申請している。
再検索