高速シリアル通信プロトコルSerialLite ――オープン・ソースでコンパクトなプロトコル
リンク管理 : フロー制御とエラー・リトライ
SerialLiteは,フロー制御とエラー・リトライの二つのリンク管理機能をオプションで用意しています.いずれの機能も,パケットを損失や欠損なく到達させることにより,データ伝送の確実性を向上させるためのものです.
SerialLiteの2点間の通信リンクを可能にするため,リンク管理パケットという第3のパケットが提供されています.データ・パケットやプライオリティ・パケットと異なり,ユーザはリンク管理パケットを確認することはありません.それはSerialLite自身によって生成され使われているためです.リンク管理パケットは,プライオリティ・パケットより高い優先度を持ちます.そして通常のデータ・パケットかプライオリティ・パケットのどちらかの内部にネスティングされます.
● フロー制御
オプションのフロー制御の機能は,たとえ十分に高速にデータを受信することができなくても,データの欠落のない確実な通信を実現するためのしくみです.SerialLite自身はいかなるデータの流れもコントロールできますが,データの出力先をコントロールすることはできません.システムの一部がフリーズしたりデータの取り出しを停止せざるをえない場合,受信データ処理のデータ取り出し再開を待っている間に受信FIFOがいっぱいになってしまうでしょう.かりに,いかなる配慮もされていなければ,パケットが失われてしまいます.
フロー制御は,FIFOの状態を監視し,いっぱいになってしまったときにデータの送信を停止させるしくみです.リンク管理パケットのPause命令を使って送信器を停止させ,そしていつでもデータ伝送を再開することができます.