高速シリアル通信プロトコルSerialLite ――オープン・ソースでコンパクトなプロトコル
● エラー・リトライ
オプションのエラー・リトライは,ダメージを受けたパケットの再送信を指示することにより,ビット・エラー率を低減する機能です.この機能がなくてもデータが信頼できるかどうかは示されますが,受信したとおりのデータを出力します.この場合,データがエラーかどうかを判断するのはユーザです.エラー・リトライが有効であれば,不良パケットは再送信されます.そしてユーザは,正常なパケットだけを受け取ることができます.
プロトコルで定義されているエラー・リトライは,回路規模の小さいシステムにとってはとても難しい機能です.再送信を考慮して,すべてのパケットはバッファに貯めておかなければなりません.そのためにはメモリを必要とします.再送信の可能性があるパケットはたくさんあり,このためには,多くのメモリが必要になります.
このしくみをできるだけ簡単にするため,SerialLiteではアクノリッジ方式をとっています.エラー・リトライが有効であれば,すべてのプライオリティ・パケットについてエラーの有無を確認します.もしエラーが見つかった場合,すべてのパケットを送信したあとで再送信します.アクノリッジとなるリンク管理パケットが失われたり,ダメージを受けた場合には,タイム・アウトによって再送信します.
● エラー・イベントとハンドリング
SerialLiteは,さまざまなエラーをさまざまな方法で扱います.高品質のリンクであれば,通常はエラーが起こらないものです.エラーが起きるとすれば,シンプルなデータ・エラーです.これは8B/10BコードやCRCによって検出することができます.これらのエラーは,データ出力先に単にレポートされるか,エラー・リトライが実装されていればパケットを再送します.
重大なエラーは,リンクの切断と再リンクによって解決します.シンプルなデータ・エラーが短い期間に多発する場合,切断と再リンクが発生します.高品質なリンクでは,きわめてまれな現象です.
SerialLiteは,Atlanticインターフェースや高速インターフェースとは独立したステータス・ポートを持ちます.常時モニタが必要であれば,このステータス・ポートによって,リンクの品質を監視します.