PCI Express デザイン・ガイド ――LSI開発者のための設計Tips

中村正澄

tag: 半導体 実装

技術解説 2003年1月21日

 パケットのフロー制御には,バーチャル・チャネルという新しい概念が導入されています(図9).バーチャル・チャネルとは,同一のリンクを共用する複数の独立したデータ・フロー・バッファを使用するメカニズムです.規格では最大八つのバーチャル・チャネルを規定しています.最低一つのバーチャル・チャネルを使用することが必須で,いくつまでのバーチャル・チャネルを使用するかは自由に選択できます.

 PCI Expressのフロー制御は,エンド・ツー・エンドのクレジット・ベースで行われます(データ転送を始める前に,受け取り側のバッファの空き状況を確認し,オーバフロー,アンダフローが発生しないメカニズムになっている).このメカニズムを実現しているのがバーチャル・チャネルで,物理的には一つのリンクに,クレジット(空き状況を確認する問い合わせ)を別のデータ・フローとして送信することができます.

 各バーチャル・チャネルには,それぞれのバッファを用意し,各バーチャル・チャネルごとにフロー制御を行います.これにより,一つのバーチャル・チャネルのバッファが満ぱいの状態(full)になっても,ほかのバーチャル・チャネルの転送を行うことができます.物理的には一つのリンクを仮想的な複数のチャネルに分けることで,有効に使用することができるのです.

 バーチャル・チャネルに優先度をつけるため,トラフィック・クラスというラベルが用意されています(バーチャル・チャネルをトラフィック・クラスでラベル化する).一つのバーチャル・チャネルに対し,複数のトラフィック・クラスを割り当てることもできます.

 トラフィック・クラスには八つの優先度があります.そのうち,上位四つのトラフィック・クラスは同期転送に使用することを想定しています.

 バーチャル・チャネルとトラフィック・クラスの割り当てはソフトウェアで行います.ソフトウェアは必要なトラフィック・クラスを利用することで,トランザクションの優先度を制御することが可能です.

 例えば,一つのリンクの先に複数のデバイスが接続されている場合,ソフトウェアで特定デバイスの(特定のバーチャル・チャネルの)優先度を上げることができます.また,フロー制御はバーチャル・チャネルごとに行われるため,一つのデバイスのバッファが満ぱい(full)になっても,空いているほかのデバイスのトラフィックを転送することができます.例えば,サーバでバックアップを行っているときに,ネットワークI/OよりもディスクI/Oの優先度を上げることができます.

 同じトラフィック・クラスのオーダは保証しなければなりませんが,異なるトラフィック・クラスで制御されるストリームはオーダリング・ルールから解放されます.

f09_01.gif
〔図9〕バーチャル・チャネルの概念図(n個のバーチャル・チャネルが一つのリンクを共有する例)
スイッチを経由してルートのリンクが複数のデバイスに分かれる場合,各デバイスとのトラフィックの優先度を制御することができる.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日