高速シリアル通信プロトコルSerialLite ――オープン・ソースでコンパクトなプロトコル
● 物理層
新しいプロトコルの開発では,電気的特性が重要になります.高速トランシーバを動作させるためには,高い技術力が必要です.そして世界中の多くのユーザが問題を指摘し,それを一つ一つ解決することにより信頼性が上がっていきます.既存の標準規格には,とてもたくさんのリソースが投じられています.このように,新しい電気的仕様の策定には高い障壁が存在します.そこで,すでに策定済みの規格に合わせることが肝要です.SerialLiteの電気的特性は,IEEE 802.3aeとして規格化されているXAUIを参考にしています.唯一の違いは,通信速度に拡張性を持たせていることです(XAUIの通信速度は固定).
SerialLiteの物理層では,業界標準の8B/10B変換を利用しています.これは,8ビットのデータを伝送するために,10ビット・キャラクタに符号化する方式です.このエンコーダは,受信器において,受信データからクロックを再生できるように作られています.高速インターフェースでは一般的な方式であり,比較的シンプルな回路で実現できます.また,Altera社のStratix GXのようなFPGAであれば,8B/10Bのエンコーダとデコーダがあらかじめ内蔵されているので,実質的によけいなリソースを使いません.
SerialLiteは,一つのクロックを使う同期系システムと,複数のクロックを持つシステムで,あるクロック・ドメインから別のクロック・ドメインへデータを送るようなシステムの両方に対応しています.後者の例では,クロックの誤差が300ppmあっても,データが失われない補償機能が提供されます.
SerialLiteは,システム構成に合わせて最小の実装を選べる特徴があります.クロック補償を必要としないのであれば,そのためのオーバヘッドをなくすことができます.ほかの高速シリアル・プロトコルでは,このようなことは許容されていません.
データ伝送が行われていない間もリンクが切れないように,アイドル伝送を行います.また,チャネルのアライメントを確かめるためのキャラクタなど,さまざまな制御キャラクタが送られます.
リンクの使用前には初期化とトレーニングが必要です.すべてのレーンを最初に初期化しなくてはなりません.もし複数のレーンを使うのであれば,レーンをまとめ,デスキューを行う必要があります.この手順を図3に示します.
初期化のしくみには注意深い考察がなされています.トレーニング・シーケンスを持たせたことで,シンプルで高速なスタートアップ・シーケンスを維持しながら,レーンの極性や順番を入れ替えることができます.100サイクル以内に複数のレーンのリンクが確定します.それ以外の複雑なネゴシエーションはありません.
図3 SerialLiteのリンク初期化手順