(57)【特許請求の範囲】
【請求項１】
アプリケーション（１１、１３）とバス（５８）との間で送受されるデータストリームを制御するデータストリーム制御方法において、
a．上記アプリケーション（１１、１３）及びバス（５８）より選択されたデータソースからデータストリームを受信して、受信データストリームを生成するステップと、
b．上記受信データストリームを送信データストリームに変換するための一連のオペコードを入手するステップと、
c．上記一連のオペコードを実行して上記受信データストリームを上記送信データストリームに変換するステップとを有するデータストリーム制御方法。
【請求項２】
上記受信データストリームは、アイソクロノスデータストリームであることを特徴とする請求の範囲第１項に記載のデータストリーム制御方法。
【請求項３】
上記受信データストリームのチャンネル番号を判定するステップを更に有し、
上記一連のオペコードは、上記受信データストリームのチャンネル番号に対応しているメモリアドレスから得られることを特徴とする請求の範囲第２項に記載のデータストリーム制御方法。
【請求項４】
上記バス（５８）は、ＩＥＥＥ１３９４仕様のバスであることを特徴とする請求の範囲第３項に記載のデータストリーム制御方法。
【請求項５】
上記受信データストリームは、非同期データストリーム及びアイソクロノスデータストリームのいずれかであることを特徴とする請求の範囲第１項に記載のデータストリーム制御方法。
【請求項６】
上記受信データストリームが非同期データストリームであるか、アイソクロノスデータストリームであるかを判定するステップを有することを特徴とする請求の範囲第５項に記載のデータストリーム制御方法。
【請求項７】
上記受信データストリームがアイソクロノスデータストリームであるとき、上記一連のオペコードは、上記チャンネル番号に対応するメモリアドレスから得られ、該受信データストリームが非同期データストリームであるとき、上記一連のオペコードは、非同期データストリームに対応するメモリアドレスから得られることを特徴とする請求の範囲第６項に記載のデータストリーム制御方法。
【請求項８】
上記バス（５８）は、ＩＥＥＥ１３９４仕様のバスであることを特徴とする請求の範囲第７項に記載のデータストリーム制御方法。
【請求項９】
アプリケーション（１１、１３）とバス（５８）と間の双方向データストリームを制御するデータストリーム制御装置において、
a．上記アプリケーション（１１、１３）及びバス（５８）より選択されたデータソースからデータストリームを受信して、受信データストリームを生成する受信データストリーム生成手段と、
b．受信データストリームを送信データストリームに変換するための一連のオペコードを入手する入手手段と、
c．上記入手手段に接続され、上記一連のオペコードを実行して、上記受信データストリームを送信データストリームに変換する送信データストリーム生成手段とを備えるデータストリーム制御装置。
【請求項１０】
上記データストリームがアプリケーション（１１、１３）から受信されたデータストリームであるときは、上記送信データストリームは、上記バス（５８）に出力され、該データストリームが該バス（５８）から受信されたデータストリームであるときは、該送信データストリームは、該アプリケーションに出力されることを特徴とする請求の範囲第９項に記載のデータストリーム制御装置。
【請求項１１】
上記入手手段に接続されるとともに、上記アプリケーションに接続され、上記一連のオペコードを記憶する記憶手段（２４）を備えることを特徴とする請求の範囲第９項に記載のデータストリーム制御装置。
【請求項１２】
上記受信データストリームは、アイソクロノスデータストリームであることを特徴とする請求の範囲第１１項に記載のデータストリーム制御装置。
【請求項１３】
上記一連のオペコードは、上記受信データストリームの転送に用いられたチャンネル番号に対応するメモリアドレスに格納されていることを特徴とする請求の範囲第１２項に記載のデータストリーム制御装置。
【請求項１４】
上記バスは、ＩＥＥＥ１３９４仕様のバスであることを特徴とする請求の範囲第１３項に記載のデータストリーム制御装置。
【請求項１５】
上記受信データストリーム生成手段に接続され、上記受信されたデータストリームがアイソクロノスデータストリームであるか、非同期データストリームであるかを判定する判定手段を更に備えることを特徴とする請求の範囲第１１項に記載のデータストリーム制御装置。
【請求項１６】
上記受信されたデータストリームがアイソクロノスデータストリームであるとき、上記一連のオペコードは、該データストリームの転送に用いられたチャンネル番号に対応するメモリアドレスに格納され、該受信されたデータストリームが非同期データストリームであるときは、該一連のオペコードは、該非同期データに対応するメモリアドレスに格納されることを特徴とする請求の範囲第１５項に記載のデータストリーム制御装置。
【請求項１７】
上記バス（５８）は、ＩＥＥＥ１３９４仕様のバスであることを特徴とする請求の範囲第１６項に記載のデータストリーム制御装置。
【請求項１８】
１つ以上のアプリケーション（１１、１３）とバス（５８）との間のデータ転送動作を制御及び管理するデータ転送動作制御装置において、
ａ．上記１つ以上のアプリケーションとバスとの間に接続されたアイソクロノスデータ処理装置（２０）と、
ｂ．上記バス（５８）に接続され、該バス（５８）にデータを送信し、及び該バス（５８）からデータを受信する物理インタフェース（５６）とを備え、
上記アイソクロノスデータ処理装置は、
i．上記アプリケーション（１１、１３）及びバス（５８）より選択されたデータソースからデータストリームを受信して、受信データストームを生成するデータストリム生成手段と、
ii．上記受信データストリームを送信データストリームに変換するための一連のオペコードを入手する入手手段と、
iii．上記入手手段に接続され、上記一連のオペコードを実行して上記受信データストリームを出力データストリームに変換する出力データストリーム生成手段とを備えることを特徴とするデータ転送動作制御装置。
【請求項１９】
上記入手手段に接続されるとともに、上記アプリケーション（１１、１３）に接続され、上記一連のオペコードを格納するメモリ（２４）を更に備える請求の範囲第１８項記載のデータ転送動作制御装置。
【請求項２０】
上記アプリケーション（１１、１３）とバス（５８）との間の非同期データ転送動作を制御する非同期データパイプ（２６）を更に備え、
上記非同期データパイプ（２６）は、
ａ．上記アプリケーション（１１、１３）に接続され、上記非同期データ転送動作に関する命令を受信する命令受信手段と、
ｂ．上記アプリケーション（１１、１３）と、上記バス（５８）上のノードとの間の非同期データ転送動作を完了するために必要なトランザクションを生成するトランザクション生成手段とを備えることを特徴とする請求の範囲第１９項に記載のデータ転送動作制御装置。
【請求項２１】
上記アイソクロノスデータ処理装置（２０）と、上記非同期データパイプ（２６）と、上記物理インタフェース（５６）とに接続され、上記アイソクロノスデータ処理装置（２０）及び非同期データパイプ（２６）からのデータパケットを多重化して上記バス（５８）に送信する多重化手段（４０）を更に備えることを特徴とする請求の範囲第２０項に記載のデータ転送動作制御装置。
【請求項２２】
上記アイソクロノスデータ処理装置（２０）と、上記非同期データパイプ（２６）と、上記物理インタフェース（５６）とに接続され、上記バス（５８）から受信したデータパケットを上記アイソクロノスデータ処理装置（２０）又は上記非同期データパイプ（２６）のうちの適切な一方にルーチングする分離手段（４２）を更に備える請求の範囲第２１項に記載のデータ転送動作制御装置。
【請求項２３】
上記バス（５８）は、ＩＥＥＥ１３９４仕様のバスであることを特徴とする請求の範囲第２２項に記載のデータ転送動作制御装置。
【請求項２４】
上記アイソクロノスデータ処理装置（２０）は、上記アイソクロノスデータと上記非同期データの両方に関する一連のオペコードを実行することを特徴とする請求の範囲第１９項に記載のデータ転送動作制御装置。
【請求項２５】
上記受信されたデータストリームがアイソクロノスデータストリームであるとき、上記一連のオペコードは、該データストリームの転送に用いられたチャンネル番号に対応するメモリアドレスに格納され、該受信されたデータストリームが非同期データストリームであるときは、該一連のオペコードは、該非同期データに対応するメモリアドレスに格納されることを特徴とする請求の範囲第２４項に記載のデータ転送動作制御装置。
【請求項２６】
上記バス（５８）は、ＩＥＥＥ１３９４仕様のバスであることを特徴とする請求の範囲第２５項に記載のデータ転送動作制御装置。
【請求項２７】
アプリケーション（１１、１３）とＩＥＥＥ１３９４仕様のバス（５８）との間に接続され、該アプリケーション（１１、１３）と該ＩＥＥＥ１３９４仕様のバス（５８）との間のアイソクロノスデータ転送を管理するアイソクロノスデータ処理装置（２０）において、
ａ．アイソクロノスデータストリームを処理するための一連のオペコードを上記アプリケーション（１１、１３）が格納する制御ストアメモリ（２４）と、
ｂ．上記アプリケーション（１１、１３）及びバス（５８）より選択されたデータソースからデータストリームを受信して、受信データストリームを生成する受信データストリーム生成手段（４４）と、
ｃ．上記制御ストアメモリ及び受信データストリーム生成手段に接続され、上記制御ストアメモリに格納された一連のオペコードに基づいて上記受信データストリムを送信データストリームに変換する変換手段とを備えるアイソクロノスデータ処理装置（２０）。
【発明の詳細な説明】
技術分野
本発明は、バスとアプリケーションとの間で行われるアイソクロノスデータ転送動作を制御するデータストリーム制御方法及び装置に関する。詳しくは、本発明は、アプリケーションとバス上のノードとの間で行われるデータ転送動作を完了するために、アイソクロノスデータの高速ストリームを管理及び処理する方法に関する。
背景技術
１９９５年６月１６日に発表されたＩＥＥＥ１３９４仕様書「高性能シリアルバスのためのＰ１３９４仕様8.01vlドラフト」は、非同期フォーマット及びアイソクロノスフォーマットのデータ転送をサポートする安価な高速シリアルバスアーキテクチャを実現した国際規格である。アイソクロノスデータ転送は、重要なインスタンスを転送するための時間間隔が送信側と受信側のアプリケーションで同じになるように実行されるリアルタイム転送である。アイソクロノスフォーマットで転送されるデータの各パケットは、各パケット自身が定義する期間において転送される。アイソクロノスフォーマツトによるデータ転送の応用例としては、例えば、ビデオレコーダ、テレビジョン受信機等がある。ビデオ記録装置は、映像及び音声を示すデータを離散的なチャンク又はパケットとして記録する。ビデオ記録装置は、記録した映像及び音声を示すパケットに基づく信号を所定期間テレビジョン受信機に供給し、これによりテレビジョン受信機から映像及び音声が再生される。ＩＥＥＥ１３９４仕様のバスアーキテクチャは、アプリケーション間のアイソクロノスデータ転送のために多チャンネルを提供する。ここで、適切なアプリケーションにデータを受信させるために、データは、６ビットのチャンネル番号とともに転送される。これにより、複数のアプリケーションがバスを介して同時にアイソクロノスデータを送受信することができる。非同期データ転送は、転送速度を重視する場合に行われる転送方式であり、大量のデータを転送する最も一般的なデータ転送動作である。
ＩＥＥＥ１３９４仕様は、デジタル装置を相互に接続するための高速シリアルバスを提供し、これによりＩ／Ｏ接続が標準化されている。ＩＥＥＥ１３９４仕様においては、デジタルインタフェースの仕様が規定されている。したがって、アプリケーションは、バスにデータを送信する前にデジタルデータをアナログデータに変換する必要がない。同様に、受信側アプリケーションはバスから直接デジタルデータを受信することができ、したがって、受信時にアナログデータをデジタルデータに変換する処理は必要ではない。ＩＥＥＥ１３９４仕様において必要とされるケーブルは、装置間の接続に用いられる他の一般的なケーブルと比較して、非常に細い。バスがアクティブな間、種々の装置をＩＥＥＥ１３９４バスに追加したり、削除したりすることができる。装置が追加されるか、削除されると、バスはバス自身の環境を設定し直し、これにより全てのノードの間でデータを送受信することが可能となる。ノードは、バス上で固有のアドレスを有する論理構成体とみなされる。各ノードは、識別ＲＯＭと、標準化された制御レジスタの組と、そのアドレス空間を備えている。
ＩＥＥＥ１３９４仕様では、図１に示すようなプロトコルが定義されている。このプロトコルは、シリアルバス管理ブロック１０と、シリアルバス管理ブロック１０に接続されたトランザクション層１２、リンク層１４及び物理層１６等から構成される。物理層１６は、装置又はアプリケーションをＩＥＥＥ１３９４ケーブルに電気的かつ機械的に接続する機能を司る。また、物理層１６は、実際のデータ送信及び受信だけでなく、ＩＥＥＥ１３９４バスに接続する全ての装置のバスへのアクセスを調停するアービトレーション機能を提供する。リンク層１４は、非同期データ転送及びアイソクロノスデータ転送のためのデータパケット配信サービスを提供する。リンク層１４は、肯定応答プロトコルを使って、非同期データトランスポート及びアイソクロノスデータ転送をサポートし、さらに、ジャストインタイムのデータ配信のためにリアルタイム帯域保証プロトコルを提供する。トランザクション層１２は、読出トランザクション、書込トランザクション及びロックトランザクションを含む非同期データ転送を完了するために必要なコマンドをサポートする。シリアルバス管理ブロック１０は、アイソクロノスデータ転送動作を管理するアイソクロノスリソースマネージャを備える。また、シリアルバス管理ブロック１０は、アービトレーションタイミングの最適化、バスに接続された全ての装置のための適切な電力の保証、サイクルマスタの割当て、アイソクロノスチャンネル及び帯域幅リソースの割当て、及びエラーの基本通知の実行等により、シリアルバス全体の環境を管理する。
アイソクロノスデータ転送動作を初期化する場合、アプリケーションの環境設定を行い、データ転送動作に用いられるチャンネル番号を特定するために、幾つかの非同期データ転送動作を行う必要がある場合がある。一旦、チャンネル番号が定義されると、送信側アプリケーションは、データをバッファメモリにバッファリングした後にデータを送信し、受信側のアプリケーションは、データをバッファリングメモリにバッファリングした後にデータを処理する。汎用ホストコンピュータ又は周辺機器において、送信データのフォーマットとアプリケーションが処理できるフォーマットとは異なることが多い。したがって、殆どの場合、メインプロセッサは、アプリケーションにデータストリームを送信する前にデータストリームを前処理しなければならない。前処理タスクは、メインプロセッサの演算処理にとってかなりの負担となり、これによりリアルタイムデータストリームの処理が困難になることがある。
そこで、本発明は、アプリケーションがバスとの間で送受する高速データストリームを管理及び処理するためのアイソクロノスデータパイプを提供することを目的とする。さらに、アプリケーションがアプリケーション自身のフォーマットによりデータを送受信し、これによりアプリケーションが連続したデータストリームを処理する際の効率を向上させるアイソクロノスデータパイプを提供することを目的とする。
発明の開示
アイソクロノスデータパイプは、アプリケーションとバスとの間で送受信されるデータのために双方向パスを提供する。アイソクロノスデータパイプは、複数のアイソクロノスチャンネル上のデータを含むあらゆるアイソクロノスデータストリームを送信し、受信し、あるいは所定の処理を実行する。アイソクロノスデータパイプは、アイソクロノスデータパイプを通過するアイソクロノスデータストリームに対する処理を行うプログラム可能なシーケンサーである。アイソクロノスデータパイプは、アプリケーションによってプログラミングされ、バスを介してデータを送信するか、あるいはアプリケーションにデータを送信する前に、データストリームに対して特定の処理を施す。これにより、データは、前処理が施された後に転送先に配信される。これらの処理は、データパケットのパケットヘッダとデータフィールドの両方に対して実行される。アイソクロノスデータパイプは、特定のイベントの発生により開始又は停止される。本発明の変形実施例において、アイソクロノスデータパイプは、アイソクロノスデータと非同期データの両方を送受信するようプログラミングされる。この処理には、要求及び適切なパケットヘッダの生成が含まれる。
【図面の簡単な説明】
図１は、ＩＥＥＥ１３９４仕様によって定義されるプロトコルを説明する図である。
図２は、本発明を適用したアイソクロノスデータパイプと非同期データパイプとを備えるリンク回路のブロック図である。
図３は、アイソクロノスデータパイプ内のレジスタファイルを示す図である。
図４は、アイソクロノスデータパイプシーケンサ内のレジスタファイルを示す図である。
図５は、アイソクロノス記録フォーマットを有するアイソクロノスデータストリームの具体例を示す図である。
発明を実施するための最良の形態
アイソクロノスデータパイプは、バスからのデータをアプリケーションに出力し、また、アプリケーションからのデータをバスに出力する。好ましくは、バスは、例えばＩＥＥＥ１３９４仕様のバスである。アイソクロノスデータパイプは、プログラム可能であり、データストリームに対して一連の命令を実行し、これによりアプリケーションによって要求された処理を行う。本発明では、アイソクロノスデータを送受信するためのアイソクロノスデータパイプと、非同期データを送受信するための非同期データパイプとをリンク回路に設ける。アイソクロノスデータパイプ及び非同期データパイプからのデータは、多重化されてバスに出力される。バスを介して受信されるデータは、分離（demultiplex）されてアイソクロノスデータパイプ又は非同期データパイプに供給される。あるいは、これに代えて、アイソクロノスデータパイプがアイソクロノスデータと非同期データの両方を送受するようにプログラミングすることもできる。
本発明を適用したアイソクロノスデータパイプ（ＩＤＰ）と、非同期データパイプ（ＡＤＰ）とを備えるリンク回路を図２に示す。リンク回路１００は、アプリケーション１１、１３とバス５８とをリンクさせる機能を有する。アプリケーション１１、１３は、いずれもシステムバス１５に接続されている。システムバス１５は、アイソクロノスデータパイプ２０と非同期データパイプ２６の両方に接続されている。アプリケーション１１、１３は、また、いずれもアプリケーションインタフェース回路１８に接続されている。アプリケーションインタフェース回路１８は、１組の制御レジスタ３８、アイソクロノスデータパイプ２０、非同期データパイプ２６と、リンクコア４４とに接続されている。アイソクロノスデータパイプ２０及び非同期データパイプ２６は、それぞれレジスタファイル２４、２８を備える。送信用ＦＩＦＯ３０は、アイソクロノスデータパイプ２０に対応しており、アイソクロノスデータパイプ２０とマルチプレクサ４０との間に接続されている。一方、送信用ＦＩＦＯ３２は、非同期データパイプ２６に対応しており、非同期データパイプ２６とマルチプレクサ４０との間に接続されている。制御レジスタ３８は、アイソクロノスデータパイプ２０と、非同期データパイプ２６とに接続されている。受信用ＦＩＦＯ３４は、デマルチプレクサ４２に接続されている。デマルチプレクサ４２は、アイソクロノスデータパイプ２０及び非同期データパイプ２６に接続されている。
リンクコア４４は、トランスミッタ４６と、レシーバ４８と、サイクルタイマ５０と、サイクルモニタ５２と、ＣＲＣエラーチェック回路５４と、バス５８に対する物理的なインタフェースとして機能する物理インタフェース回路５６とを備える。トランスミッタ４６は、マルチプレクサ４０と、サイクルタイマ５０と、ＣＲＣエラーチェック回路５４と、物理インタフェース回路５６とに接続されている。レシーバ４８は、受信用ＦＩＦＯ３４と、サイクルモニタ５２と、ＣＲＣエラーチェック回路５４と、物理インタフェース回路５６とに接続されている。サイクルタイマ５０は、サイクルモニタ５２に接続されている。物理インタフェース回路５６は、バス５８に接続されている。
図２に示すリンク回路１００は、アイソクロノスデータと非同期データの両方を含む全ての受信データに用いる１つの受信用ＦＩＦＯ３４と、アイソクロノスデータパイプ２０専用の送信用ＦＩＦＯ３０と、非同期データパイプ２６専用の送信用ＦＩＦＯ３２とを備えている。送信用ＦＩＦＯ３０、３２から出力される送信データは、マルチプレクサ４０により多重化された後、リンクコア４４を介してバス５８に出力される。後述するように、受信用ＦＩＦＯ３４に入力された受信データは、デマルチプレクサ４２によって分離された後、アイソクロノスデータパイプ２０又は非同期データパイプ２６のうちの適切な一方にルーチングされる。
受信用ＦＩＦＯ３４は３３ビット長であり、送信用ＦＩＦＯ３０は３４ビット長であり、送信用ＦＩＦＯ３２は３３ビット長である。ＦＩＦＯ３０、３２、３４の各々において、ビット０〜ビット３１はデータに使用され、ビット３２は、パケットの境界を示すマーカとして用いられる。送信パケットに対し、アイソクロノスデータパイプ２０及び非同期データパイプ２６は、各パケットの最初のクワドレットのビット３２を論理的高レベルに設定する。受信パケットに対しては、リンクコア４４が各パケットの最初のクワドレットのビット３２を論理的高レベルに設定する。
アイソクロノスデータパイプ２０に対応する送信用ＦＩＦＯ３０において、ビット３３はアイソクロノスサイクルの境界を示すために使用される。アイソクロノスデータパイプ２０は、各アイソクロノスサイクルにおけるアイソクロノスパケットの最初のクワドレットにおいてビット３３を論理的高レベルに設定する。リンクコア４４は、論理的高レベルに設定されたビット３３を有するクワドレットデータを受信すると、次のサイクルスタートまで待機し、次に論理的高レベルに設定されたビット３３を有するクワドレットデータを検出するまで、送信用ＦＩＦＯ３０に格納された全てのアイソクロノスパケットを送信する。
アプリケーション１１、１３のうちの１つからバス５８にアプリケーションデータを送信するために、アイソクロノスデータパイプ２０及び非同期データパイプ２６は、適切なヘッダ情報を生成して、適切なアプリケーションデータに付け、バス５８によって要求されるフォーマットのパケットを生成する。これらのパケットは、送信用ＦＩＦＯ３０又は送信用ＦＩＦＯ３２のいずれか適切な一方に格納された後、バス５８に送出される。
非同期データパイプ２６の実現については、同日に出願された米国特許出願番号08/612,321、「Asynchronous Data Pipe For Automatically Managing Asynchronous Data Transfers Between An Application And A Bus Structure」に記載されている。この出願は、１９９７年９月１２日に公開された国際出願公開番号ＷＯ９７／３３２３０に対応する。非同期データパイプ２６は、バス５８とアプリケーション１１、１３との間の非同期データ転送動作を完了するために必要なトランザクションを自動的に生成する。非同期データパイプ２６は、アプリケーション１１、１３によってプログラミングされるレジスタファイル２８を備える。レジスタファイル２８により、アプリケーション１１、１３は、データ転送動作の要求及び特性をプログラミングすることができる。レジスタファイル２８は、バス速度、トランザクションラベル、トランザクションコード、転送先ノード識別子、転送先オフセットアドレスフィールド、各データパケットのパケット長、パケットカウンタ、パケットカウンタパケットバンプフィールド、制御フィールド及び状態フィールドを有する。
アプリケーション１１、１３によりレジスタファイル２８がプログラミングされ、起動された後、非同期データパイプ２６は、適切な範囲内のアドレスに対するデータ転送動作を完了するための読出又は書込トランザクションを自動的に生成する。このとき、非同期データパイプ２６は、レジスタファイル２８内の情報をテンプレートとして用い、トランザクション及びヘッダを生成する。非同期データパイプ２６は、インクリメント機能が停止されない限り、各トランザクションに関して、各データパケットの長さに応じて転送先オフセットアドレスフィールドの値をインクリメントする。インクリメント機能が停止される場合とは、トランザクションが単一アドレスに対して実行される場合である。パケットカウンの値は、生成する残りのトランザクションの数を示す。パレットカウンタの値は、各データパケットが転送される毎にデクリメントされる。アプリケーション１１、１３は、パケットバンプフィールドに書込を行い、パケットカウンタの値をインクリメントする。
複数の非同期データ転送動作を管理するために、リンク回路１００に複数の非同期データパイプ２６を設けてもよい。この場合、各非同期データパイプ２６は、それぞれ固有のトランザクションラベルの値又は一定範囲の値を有する。マルチプレクサ４０は、非同期データパイプ２６及びアイソクロノスデータパイプ２０からバス５８に送出されるトランザクション及びデータパケットを多重化する。デマルチプレクサ４２は、バス５８から信号及びデータパケットを受信し、トランザクションコード及びトランザクションラベルの値を用いてこれらを適切な非同期データパイプ２６に出力する。
リンク回路１００には、単一のアイソクロノスデータパイプ２０が設けられている。このアイソクロノスデータパイプ２０は、複数のアイソクロノスチャンネルを処理することができる。このアイソクロノスデータパイプ２０は、データインタフェースにおいて複数のアプリケーション１１、１３とインタラクトすることができる。これにより、アイソクロノスデータパイプ２０は、複数のアイソクロノスデータストリームをサポートすることができる。各アイソクロノスデータストリームは、複数のチャンネルを含んでいてもよい。また、他の実施の形態においては、後述するように、アイソクロノスデータパイプ２０に非同期データを送受信させてもよい。すなわち、この場合、アイソクロノスデータパイプ２０は、非同期データパイプ２６の機能を代理する。
リンクコア４４は、送信用ＦＩＦＯ３０、３２からデータパケットが供給され、バス５８によって要求されるフォーマットに対応したパケットを生成し、生成したパケットを物理インタフェース回路５６を介してバス５８に送信する。リンクコア４４は、アイソクロノスの送信用ＦＩＦＯ３０から供給される１アイソクロノスサイクル分のデータを各アイソクロノスサイクル毎に送出する。アイソクロノスデータを送信しない場合、リンクコア４４は、非同期の送信用ＦＩＦＯ３２から供給される非同期パケットを送出する。
リンクコア４４は、受信したパケットの全てを受信用ＦＩＦＯ３４に供給する。リンクコア４４がスヌープモードで動作していない場合、リンクコア４４は、適切なノード識別子によってアドレス指定される非同期データパケット及び適切なチャンネル番号を有するアイソクロノスパケットのみを受信する。スヌープモードにおいては、リンクコア４４は、転送先のノード認識子又はアイソクロノスチャンネル番号に関係なく全てのパケットを受信する。
アイソクロノスデータパイプ２０は、バス５８を介して伝送されるアプリケーションデータに対して双方向のデータパスを提供する。アイソクロノスデータストリームは、１つ以上のアイソクロノスチャンネル上のデータからなる。アイソクロノスデータパイプ２０は、いかなる数のアイソクロノスチャンネル上のデータを含む、アイソクロノスデータのいかなる任意のストリームに対しても動作することができる。アイソクロノスデータパイプ２０は、システムバス１５からアイソクロノスの送信用ＦＩＦＯ３０への、又は受信用ＦＩＦＯ３４からシステムバス１５へのアイソクロノスデータストリームを処理するプログラム可能なシーケンサである。
アイソクロノスデータパイプ２０は、必要に応じて、転送されるデータの各クワドレットに対して、所定回数の命令を実行してデータを処理する。これらの命令は、アイソクロノスデータブロックパケットに対して実行される。バス５８に出力するデータを送信する場合、アイソクロノスデータパイプ２０から出力されるデータストリームのフォーマットは、アイソクロノスデータパイプ２０に入力されたデータストリームのフォーマットと、アイソクロノスデータパイプ２０においてデータに対し実行される処理との両方に依存している。同様に、バス５８からデータを受信する場合、アイソクロノスデータパイプ２０からシステムバス１５に出力されるデータストリームのフォーマットは、アイソクロノスデータパイプ２０に入力されたデータのフォーマットと、アイソクロノスデータパイプ２０においてデータに対し実行される処理とに依存している。
アイソクロノスデータパイプ２０は、アイソクロノスデータパイプの現在の動作モードに基づいて、アイソクロノスデータの転送を開始及び停止するための幾つかのスケジューリング機能をサポートする。適切なプログラミングにより、アイソクロノスデータパイプ２０は、ＳＣＳＩ−３シリアルバスプロトコル規格に準拠し、アイソクロノス記録データフォーマットをサポートする。このプロトコルは、記録時にアイソクロノスデータにラベルを付ける方法を定義しており、これにより、アイソクロノスデータは正確に再生することができる。アイソクロノスデータパイプ２０は、アイソクロノスデータパスにおけるプログラム可能なデータ処理エンジンである。適切なプログラミングにより、このデータ処理エンジン、すなわちアイソクロノスデータパイプ２０は、アイソクロノス記録フォーマットを実現し、クワドレットを削除することによりデータをフィルタリングし、さらにバス５８へ又はから転送される各クワドレットに対して特定の処理を行う。
アイソクロノスデータパイプ２０及び非同期データパイプ２６のＦＩＦＯインタフェースは、それぞれ直接送信用ＦＩＦＯ３０、３２に接続されている。送信用ＦＩＦＯ３０は、アイソクロノスデータパイプ２０によって制御されるデータパスに専用に用いられる。送信用ＦＩＦＯ３２は、非同期データパイプ２６によって制御されるデータパスに専用に用いられる。アイソクロノスデータパイプ２０及び非同期データパイプ２６のリンクインタフェースは、いずれもマルチプレクサ４０及びデマルチプレクサ４２を介してリンクコア４４に接続している。アイソクロノスデータパイプ２０及び非同期データパイプ２６からリンクコア４４に至るデータは、リンクコア４４の機能に必要とされるフォーマットを有している。アイソクロノスデータパイプ２０及び非同期データパイプ２６は、リンクコア４４から供給されるデータがリンクコア４４の仕様に基づくフォーマットを有するものとして処理を行う。リンク回路１００内に論理ブロックを追加する場合、各論理ブロックは、マルチプレクサ４０及びデマルチプレクサ４２を介してリンクコア４４に接続される。例えば、複数の非同期データパイプ２６をリンク回路１００内に設けてもよい。複数の非同期データパイプ２６を有するリンク回路１００においては、複数の非同期データパイプ２６は、それぞれ送信用ＦＩＦＯ３２介してマルチプレクサ４０に接続される。このようなリンク回路１００において、非同期データパイプ２６と送信用ＦＩＦＯ３２との間にマルチプレクサを追加し、このマルチプレクサにより送信用ＦＩＦＯ３２に供給するデータパケットを多重化する。
アイソクロノスデータパイプ２０からのデータを処理する場合、マルチプレクサ４０は、アイソクロノスデータパイプ２０からデータが供給されたことを認識し、アイソクロノスサイクルに対応して、チャンネル毎に１パケット分のデータを出力する。リンクコア４４からアイソクロノスデータパイプ２０及び非同期データパイプ２６に供給されるデータは、受信用ＦＩＦＯ３４及びデマルチプレクサ４２介して転送される。デマルチプレクサ４２がリンクコア４４からアイソクロノスデータパイプ２０と非同期データパイプ２６のうちの適切な一方にデータパケットをルーチングする場合、デマルチプレクサ４２は、データの変更を一切行わない。リンクコア４４によって生成される全ての情報は、転送先の論理ブロックに送られる。アイソクロノスデータパイプ２０及び非同期データパイプ２６は、リンクコア４４から供給されたデータに対して、全ての必要な処理を施した後に、処理したデータをアプリケーション１１、１３のいずれかに供給する。この処理は、例えばバス５８のプロトコルによる要求に応じて、ヘッダ情報を外す処理を含む。送信データについては、アイソクロノスデータパイプ２０及び非同期データパイプ２６は、いずれもアプリケーション１１、１３から供給されたデータをリンクコア４４が要求するフォーマットに変換する。アイソクロノスデータパイプ２０及び非同期データパイプ２６は、適切なヘッダ情報を生成し、マルチプレクサ４０介してデータをリンクコア４４に供給する前に、アプリケーション１１、１３からのデータにこのヘッダを付ける。
アイソクロノスデータパイプ２０と非同期データパイプ２６の両方のリンクインタフェースは、リンクコア４４における処理に要求されるフォーマットと互換性を有するフォーマットで、データを生成し、使用する。データ送信処理において、アイソクロノスデータパイプ２０は、リンクコア４４からの要求により、バス５８に応じた特定のヘッダ情報を生成し、アプリケーション１１、１３からのデータにそのヘッダ情報を付ける。データ受信処理において、アイソクロノスデータパイプ２０及び非同期データパイプ２６は、リンクコア４４から供給されるデータを、リンクコア４４から出力されたフォーマットのまま受け取る。このように、リンクコア４４からアイソクロノスデータパイプ２０又は非同期データパイプ２６にデータを転送する際は、データに変換処理を施す必要がない。
リンク回路１００内に論理ブロックを１つだけ設ける場合、この論理ブロックは、リンクコア４４に直接接続することができる。リンク回路１００内に複数の論理ブロックを設ける場合、複数の論理ブロックとリンクコア４４との間に適切なマルチプレクサ４０及びデマルチプレクサ４２を設ける。マルチプレクサ４０は、複数の論理ブロックのリンクインタフェースからデータが供給され、これらのデータを多重化して、多重化したデータをリンクコア４４を介してバス５８にパケット毎に送信する。この情報は、アプリケーション固有の情報であり、転送動作によって設定される優先度でバス５８にルーチングされる。各アイソクロノスデータパケットは、それぞれの適切な期間に、マルチプレクサ４０から送信される。デマルチプレクサ４２は、バス５８から受信される各パケットのトランザクションコード及びチャンネル番号フィールドの値を用いて、パケットを適切な論理ブロック、すなわちアイソクロノスデータパイプ２０又は非同期データパイプ２６にルーチングする。アイソクロノスデータパイプ２０及び非同期データパイプ２６がそれぞれ１つである場合、トランザクションコードのみに基づいてパケットを適切にルーチングすることができる。デマルチプレクサ４２は、まず、トランザクションコードを読み出し、パケットが非同期データであり、非同期データパイプ２６にルーチングするものであるか否かを判定する。リンク回路１００内に、複数の非同期データパイプ２６が設けられている場合、デマルチプレクサ４２は、非同期応答パケットのヘッダのトランザクションラベルを読み出し、これに基づいて適切な非同期データパイプ２６にパケットをルーチングする。
本発明を適用したアイソクロノスデータパイプ２０は、対応するＦＩＦＯ３０、３４とリンクコア４４と間の双方向データパスとして機能する。適切にプログラミングすることによって、アイソクロノスデータパイプ２０は、ＳＣＳＩ−３シリアルバスプロトコル（ＳＢＰ）規格に準拠したアイソクロノスデータ記録フォーマットをサポートし、これによりアイソクロノスデータストリーム内のデータの処理をプログラミングすることができる。
リンクコア４４に対応する送信用ＦＩＦＯ３０を介してデータを転送する場合、あるいは、デマルチプレクサ４２からデータを受信する場合、アイソクロノスデータパイプ２０は、各データクワドレットに対して独立に動作する。アイソクロノスデータパイプ２０は、データを処理するために、各クワドレットに対してプログラム可能な数の命令を、必要に応じて、実行する。アイソクロノスデータパイプ２０によって実行可能な命令は、命令セットに含まれており、これらの命令については後に詳細に説明する。アイソクロノスデータパイプ２０は、後述する独立した専用のレジスタファイル２４を備える。
アイソクロノスデータパイプ２０からデータを転送中にバスリセットが発生した場合、アイソクロノスデータパイプ２０の処理は、次のサイクルスタートパケットがバス５８に現れた時点から再開される。なお、アイソクロノスデータの処理は、直ちに再開されるが、ＩＥＥＥ１３９４仕様及び民生機器のためのＩＥＣ規格に定義されるように、アプリケーション１１、１３は、バスリセットの前にチャンネル番号、帯域幅及び使用する接続を割り当てる。
アイソクロノスデータパイプ２０は、図３に示すような、独立した専用のレジスタファイル８０（図２では２４）によって制御される。このレジスタファイル８０は、処理を開始するアプリケーション１１、１３によってプログラミングされ、バス５８を介したアイソクロノスデータ転送動作を完了するために必要なヘッダ、命令及びトランザクションを生成する。レジスタファイル８０は、００ｈ〜７７ｈ（１６進法）で番号付けされた１２０バイトのデータを有する。図３は、レジスタファイル８０をテーブル形式で示すものであり、この図３には、それぞれが４バイトのデータに相当する３０本の列が示されている。図３に示すオフセット欄８２は、レジスタファイル８０における各行の開始バイトのオフセットを示す。読出／書込欄８４は、各行に対応するフィールドが読出／書込可能であるか、あるいは、読出専用であるかを示している。
サイクルタイムフィールドcycle_timeは、レジスタファイル８０のバイト０〜バイト２内に設けられた２０ビットのフィールドである。サイクルタイムフィールドcycle timeは、読出／書込可能なフィールドである。後述する制御フィールドのイベントフィールドがサイクル番号の値を含む場合、サイクルタイムフィールドcycle timeは、アイソクロノスデータパイプ２０がアイソクロノスデータの転送を開始又は停止するサイクルタイムに関する情報を格納する。
制御フィールドは、レジスタファイル８０のバイト４〜バイト７内に設けられた３２ビットのフィールドである。制御フィールドは、読出／書込可能なフィールドである。制御フィールドは、イベントフィールドと、出力イネーブルフィールドと、ストップオンエラーフィールド（stop on error field）と、送信イネーブルフィールドと、ゴーフィールドとを含む。イベントフィールドは、レジスタファイル８０のビット２８〜ビット３１内に設けられた４ビットのフィールドである。イベントフィールドの値は、アイソクロノスデータパイプ２０のバスイベントを定義しており、トリガとして用いられる。すなわち、このバスイベントが発生すると、アイソクロノスデータパイプ２０は、保留中のチャンネルマスクレジスタpending_ch_maskに格納されている値を現在のチャンネルマスクレジスタch_maskに転送する。
イベントフィールドは、表１に示すようなバスイベントを示している。
0004033915.tif 000002
したがって、イベントフィールドの値が０である場合、アイソクロノスデータパイプ２０は、直ちに開始又は停止される。イベントフィールドの値が１である場合、アイソクロノスデータパイプ２０は、上述のように、サイクルタイムフィールドcycle timeの値により指定されるタイミングで開始又は停止される。
出力イネーブルフィールドは、制御フィールドのビット４〜ビット７内に設けられた４ビットのフィールドである。出力イネーブルフィールドにおけるビットのいずれかが論理的高レベルに設定されている場合、対応するダイレクトメモリアクセス（Direct Memory Access：以下、ＤＭＡという。）チャンネルは、対応するＦＩＦＯが一杯の状態であることを保証し、そして、アイソクロノスデータパイプ２０は、送信用ＦＩＦＯ３０に空のクワドレットが存在する場合は、常に制御ストア出力命令を出力する。
ストップオンエラーフィールド（stop on error field）は、制御フィールドのビット３内に設けられた１ビットのフィールドである。ストップオンエラーフィールドが論理的高レベルに設定された場合、アイソクロノスデータパイプ２０は、現在のチャンネルマスクレジスタch maskの値を論理的低レベルに設定することによって、検出された最初のエラーに対して現在の処理を停止する。データ送信時に発生する可能性のあるエラーは、例えばＦＩＦＯ３０、３２のアンダーラン、サイクルスタートパケットの検出の失敗等である。データ受信時に発生する可能性のあるエラーは、ＦＩＦＯ３４のオーバーラン、サイクルスタートパケットの検出の失敗、ＣＲＣデータエラー、パケットフォーマットエラー、チャンネル検出の失敗等である。
送信イネーブルフィールドは、制御フィールドのビット１内に設けられた１ビットのフィールドである。送信イネーブルフィールドが論理的高レベルに設定された場合、アイソクロノスデータパイプ２０は、出力制御ストアプログラムを実行する。ゴービットが論理的低レベルに設定された場合、又は、出力制御ストアプログラムがリターン命令を実行した場合、送信イネーブルビットはクリアされる。
ゴーフィールド（go field）は、制御フィールドのビット０内に設けられた１ビットのフィールドである。アプリケーション１１、１３は、アイソクロノスデータパイプ２０にイベントを監視させるために、ゴービットを論理的高レベルに設定する。特定のイベント条件が満たされた場合、アイソクロノスデータパイプ２０は、保留中のチャンネルマスクレジスタpending ch maskの内容を現在のチャンネルマスクレジスタch maskに転送する。
状態フィールドは、レジスタファイル８０のバイト８〜バイトＢ内に設けられた３２のビットのフィールドである。状態フィールドは、読出／書込可能なフィールドである。状態フィールドには、アイソクロノスデータパイプ２０の現在の状態を報告する状態情報が含まれている。状態フィールドのビット０〜ビット７は、制御フィールドのビット０〜ビット７に対応し、制御ストア出力フィールドと、ストップオンエラーフィールドと、送信イネーブルフィールドと、アクティブフィールドとを含んでいる。状態レジスタにおけるこれらのフィールドの値は、アイソクロノスデータパイプ２０の現在の動作状態を示す。状態フィールドのビット８〜ビット２７は、予備のフィールドである。状態フィールドのビット０には、１ビットのアクティブフィールドが設けられており、このアクティブフィールドは、アイソクロノスデータパイプ２０がアクティブであるか否かを示す。アクティブビットが論理的高レベルに設定されている場合、アイソクロノスデータパイプ２０は、現在アクティブであり、データ転送中である。アクティブビットが論理的低レベルに設定されている場合、アイソクロノスデータパイプ２０は現在アクティブでない。ストップオンエラーフィールドは、状態フィールドのビット２８〜ビット３１内に設けられた４ビットのフィールドである。アイソクロノスデータパイプ２０がエラーのために処理を停止している場合、ストップオンエラーフィールドは、エラー状態を示す値を格納する。ストップオンエラーフィールドは、アクティブビットが論理的低レベルに設定されている場合のみ有効である。ストップオンエラーフィールドが取り得る値及びその値に対応するエラーを表２に示す。
0004033915.tif 000003
保留中のチャンネルマスクハイフィールドpending_ch_mask_hiは、レジスタファイル８０のバイト２０〜バイト２３内に設けられた４バイトのフィールドである。保留中のチャンネルマスクローフィールドpending_ch_mask_loは、レジスタファイル８０のバイト２４〜バイト２７内に設けられた４バイトのフィールドである。２つの保留中のチャンネルマスクハイフィールドpending_ch_mask_hi及び保留中のチャンネルマスクローフィールドpending_ch_mask_loは、８バイトから構成され、アイソクロノスデータパイプ２０がデータを受信するためのアイソクロノスチャンネル番号のマスクを含んでいる。プログラムされたトリガイベントが発生すると、アイソクロノスデータパイプ２０は、これらのフィールドの内容を現在のチャンネルマスクレジスタch maskに転送する。保留中のチャンネルマスクレジスタpending ch maskのビット割当ては、ＩＥＥＥ１３９４仕様の第８章に定義される利用可能なレジスタのビット割当てと同様な方法で行われる。
現在のチャンネルマスクハイフィールドch_mask_hiは、レジスタファイル８０のバイト２８〜バイト２Ｂ内に設けられた４バイトのフィールドである。現在のチャンネルマスクローフィールドch_mask_loは、レジスタファイル８０のバイト２Ｃ〜バイト２Ｆ内に設けられた４バイトのフィールドである。現在のチャンネルマスクハイフィールドch_mask_hi及び現在のチャンネルマスクローフィールドch_mask_loは、８バイトから構成され、現在動作中のチャンネルマスクを格納する。現在のチャンネルマスクレジスタch maskのフィールドの各ビットは、それぞれアイソクロノスチャンネルを示す。トリガイベントが発生した場合、現在のチャンネルマスクレジスタch maskのフィールドの値は保留中のチャンネルマスクレジスタpending ch maskのフィールドからロードされる。アイソクロノスデータパイプ２０は、現在のチャンネルマスクレジスタch maskのフィールドにおける対応するビットが論理的高レベルに設定された受信アイソクロノスチャンネル番号を無視する。
制御ストア出力フィールドCS_outputは、レジスタファイル８０のバイト３４内に設けられた１バイトのフィールドである。制御ストア出力フィールドCS_outputは、レジスタファイル（以下、制御ストアメモリともいう）２４における制御ストアアドレスを示す値を格納する。送信用ＦＩＦＯ３０に空のクワドレットが存在し、アイソクロノスデータパイプ２０がアイソクロノスパケットデータを現在受信していない場合、アイソクロノスデータパイプ２０は、この制御ストアアドレスにデータを転送する。制御ストアメモリ２４は、アイソクロノスデータパイプ２０がデータストリームに対する処理を実行する際に用いる命令を格納する。
制御ストアサイクルスタートアドレスフィールドCS_addr_CSは、レジスタファイル８０のバイト３７内に設けられた１バイトのフィールドである。制御ストアサイクルスタートアドレスフィールドCS_addr_CSは、サイクルスタートパケットが受信されたとき、アイソクロノスデータパイプ２０が分岐する制御ストアアドレスを格納する。出力制御ストアプログラムが最初に利用できるクワドレットは、サイクルスタートパケットの最初のクワドレットである。制御ストアアドレスフィールドCS_addr_0〜CS_addr_63は、レジスタファイル８０のバイト３８〜バイト７７内に設けられた各１バイトのフィールドである。これらのフィールドは、制御ストアアドレスを含む。アイソクロノスデータパイプ２０が制御ストアアドレスフィールドCS_addr_0〜CS_addr_63のバイト番号に一致するアイソクロノスチャンネルからデータを受信した場合に、アイソクロノスデータパイプ２０は分岐する。例えば、制御ストアメモリ２４に制御ストアアドレスフィールドCS_addr_10が含まれている場合、アイソクロノスデータパイプ２０は、アイソクロノスチャンネル番号１０上の受信データに分岐する。アイソクロノスデータパイプ２０は、制御ストアアドレスフィールドCS_addr_0〜CS_addr_63の値がＦＦｈである全てのアイソクロノスチャンネルを無視する。なお、制御ストアアドレスフィールドCS_addr_0〜CS_addr_63は、アイソクロノスデータ送信時も受信時も同様に機能する。
存在する可能性があるアイソクロノスチャンネルは、アイソクロノスチャンネル０〜６３の６４個のアイソクロノスチャンネルである。制御ストアアドレスフィールドCS_addr_0〜CS_addr_63は、それぞれ１つのアイソクロノスチャンネルに対応しており、そのアイソクロノスチャンネルに対する命令が開始される制御ストアメモリ２４内のアドレスを格納している。これに応じて、アイソクロノスデータパイプ２０が特定のアイソクロノスチャンネルに関するデータを受信すると、アイソクロノスデータパイプ２０は、対応する制御ストアアドレスフィールドCS_addr_0〜CS_addr_63に含まれるアドレスに分岐し、そのチャンネルにおけるデータに対する処理を実行するための命令を得る。アイソクロノスデータパイプ２０は、対応する制御ストアアドレスフィールドCS_addr_0〜CS_addr_63の値がＦＦｈであるアイソクロノスチャンネルを無視する。
アイソクロノスデータストリームは、１つ以上のチャンネルから構成されている。アイソクロノスデータパイプ２０は、現在のチャンネルマスクレジスタch maskのフィールドにおける対応するビットが論理的高レベルに設定されているアイソクロノスチャンネルを受信する。アイソクロノスデータパイプ２０は、制御ストア出力フィールドCS_outputの値により示された制御ストアアドレスフィールドから始まる出力制御ストアプログラムに従ってアイソクロノスデータを送信する。例えば、アイソクロノスチャンネル３、４、５がバス５８に存在し、アプリケーション１１、１３がアイソクロノスデータパイプ２０に対して、データに変更を加えることなくアイソクロノスチャンネル３とアイソクロノスチャンネル５を併合するよう指示する場合、アプリケーション１１、１３は、制御ストアアドレスフィールドCS_addr_3、CS_addr_5に例えば「１０ｈ」の値をプログラミングする。制御ストアアドレスフィールドCS_addr_3、CS_addr_5の「１０ｈ」により、アプリケーション１１、１３は、表３に示すような命令シーケンスをロードする。
0004033915.tif 000004
そして、アプリケーション１１、１３は、保留中のチャンネルマスクレジスタpending ch maskのフィールドに値２８ｈをプログラミングし、制御フィールドに値１を書き込む。制御フィールドの値１は、出力のためにプログラミングされたＤＭＡチャンネルを有さない即時イベントを示す。この結果、アイソクロノスデータパイプ２０は、保留中のチャンネルマスクレジスタpending ch maskのフィールドの値を現在のチャンネルマスクレジスタch maskのフィールドに直ちにシフトする。ここで、現在のチャンネルマスクレジスタch maskのフィールドにおいて第３ビット及び第５ビットが論理的高レベルに設定されるので、アイソクロノスデータパイプ２０は、アドレス１０ｈから始まる出力制御ストアプログラムに従ってアイソクロノスチャンネル３及びアイソクロノスチャンネル５に対する処理を開始する。なお、この具体例では、制御ストアアドレスフィールドCS_addr_3、CS_addr_5が値１０ｈを有し、これにより、アイソクロノスチャンネル３、５のデータは、いずれもアドレス１０ｈから始まるサンプル制御ストア命令シーケンスに従って処理される。
表３に示す出力制御ストアプログラムは、受信用ＦＩＦＯ３４からシステムバス１５のＤＭＡチャンネル０にデータを移動させるプログラムである。現在のチャンネルマスクレジスタch maskのフィールドにおける第４ビットが論理的高レベルに設定されないので、アイソクロノスデータパイプ２０は、アイソクロノスチャンネル４の上で受信される全てのデータを無視する。
表３に示す制御ストアプログラムの最終行には、リターン命令が含まれている。あらゆる場合において、リターン命令は、アイソクロノスデータパイプ２０に同じタスクを実行させる。すなわち、アイソクロノスデータパイプ２０は、スタックポインタの値をデクリメントし、スタックポインタが現在示しているスタック内の命令にディスパッチする。スタックポインタの値がゼロである場合において、リターン命令が実行されると、アイソクロノスデータパイプ２０は、次の割込み可能なアイソクロノスチャンネルを受信するか、あるいは、サイクルスタートパケットを受信するまで処理を中断する。アイソクロノスデータパイプ２０が出力制御ストアプログラムを実行している場合、リターン命令により、アイソクロノスデータパイプ２０は、アイソクロノスパケットの受信により中断された出力制御プログラムの命令の位置から再開する。
アイソクロノスデータパイプ２０は、アイソクロノスデータの受信ストリームに対する処理を実行するためにプログラムされるプログラマブルシーケンサである。アイソクロノスデータパイプ２０は、図４に示すようなレジスタファイル９０を有する。レジスタファイル９０内に設けられた即時値レジスタIMM（immediate value register）は、レジスタコード０を有する３４ビットのレジスタである。これは、転送元レジスタとしてのみ機能する。即時値レジスタIMMは、命令の３４ビットの即時フィールドに与えられた処理のためのソースデータが格納されることを示す。
バス入力レジスタBUS_INは、レジスタコード１を有する３２ビットのレジスタである。これは、転送元レジスタとしてのみ機能する。処理の転送元としてバス入力レジスタBUS_INにアクセスすることにより、受信用ＦＩＦＯ３４を介してアイソクロノスデータパイプ２０に送られる１つのクワドレットデータが計時される。さらに続いてバス入力レジスタBUS_INにアクセスすると、受信データストリーム中の次のクワドレットデータがアクセスされる。
バス出力レジスタBUS_OUTは、レジスタコード２を有する３４ビットのレジスタである。これは、転送先レジスタとしてのみ機能する。処理の転送先としてバス出力レジスタBUS_OUTにアクセスすることにより、アイソクロノスデータパイプ２０を介して送信用ＦＩＦＯ３０に送られる１つのクワドレットデータ計時される。さらに続いてバス出力レジスタBUS_0UTにアクセスすると、送信データストリーム中の次のクワドレットデータがアクセスされる。
データレジスタD0〜D7は、それぞれレジスタコード４、５、６、７、８、９、Ａ、Ｂを有する３４ビットのレジスタである。これらは、転送元レジスタにも転送先レジスタにもなる。データレジスタD0〜D7は、あらゆる処理において、転送元レジスタ又は転送先レジスタとして使用できる。
データインタフェースレジスタDATA_0〜DATA_3は、それぞれレジスタコード１０、１１、１２、１３を有する３２ビットのレジスタである。これらは、転送元レジスタにも、転送先レジスタにもなる。
データインタフェースレジスタDATA_0〜DATA_3は、それぞれ異なるＤＭＡチャンネルにアクセスする。これらのレジスタを使用する場合、出力イネーブルフィールドDMA_out_enをプログラミングにより一致させる必要がある。
アイソクロノスデータパイプ２０は、８つの１バイトのレジスタの線形リストから構成されるスタックを備えている。スタック構造のレジスタは、サブルーチン命令及びリターン命令への分岐の際にのみアクセスされる。本発明の好ましい実施の形態において、スタックレジスタS0〜S7は、それぞれレジスタアドレス０〜７を有する。スタックレジスタの実際の数は、特定の具体例に応じて変化する。出力制御ストアプログラムがロードされると、スタックポインタの値は、自動的に初期化されて０となる。この値は、対応するスタックレジスタS0を指示する。
アイソクロノスデータパイプ２０がサブルーチンに分岐すると、アイソクロノスデータパイプ２０は、スタックポインタをデクリメントし、現在のスタックレジスタに次の制御ストア命令のアドレスを格納し、スタックポインタの値をインクリメントし、転送元フィールドの下位バイトによって示される制御ストア命令に分岐する。アイソクロノスデータパイプ２０がリターン命令を実行すると、アイソクロノスデータパイプ２０は、スタックポインタをデクリメントし、さらにアイソクロノスデータパイプ２０は、現在のスタックレジスタに含まれる制御ストア命令に分岐する。スタックポインタの値が０である場合に、さらにスタックポインタがデクリメントされると、その値は０から変化せず、このときアイソクロノスデータパイプ２０は、アイソクロノスデータパケット又はサイクルスタートパケットを受信するまで、処理を中断する。アイソクロノスデータパイプ２０が出力制御ストアプログラムを実行中にサイクルスタートパケット又はイネーブルされたアイソクロノスチャンネルのデータを受信した場合、アイソクロノスデータパイプ２０は、出力制御ストアプログラムの実行を中断し、実行中の命令のスタックにおけるアドレスを記憶し、スタックポインタをデクリメントした後、適切な位置にディスパッチして受信パケットを処理する。
各アイソクロノス制御ストア命令は、オペコードフィールドと、転送元フィールドと、転送先フィールドと、即時値フィールドと、即時フィールドと、予備フィールドとを含んでいる。オペコードフィールドは、図５を参照して後に説明するように、実行される処理を記述する６ビットのフィールドである。転送元フィールドsrcは、レジスタ値又は即時値を特定する４ビットのフィールドであり、これは特定された処理のための転送元を示す値を格納している。転送先フィールドdestは、特定された処理のために転送先レジスタを特定する４ビットのフィールドである。即時値フィールドimm.valは、１ビットのフィールドであり、論理的高レベルに設定されると、即時フィールドにオペランドの１つが含まれることを示すする。即時フィールドimmは、３４ビットのフィールドであり、即時値フィールドimm_valが論理的高レベルに設定された場合、処理に用いるための即時値を特定する。本発明の好ましい実施の形態において、予備フィールドは、１３ビットから構成され、アイソクロノスデータパイプ２０の他の実施の形態のために確保されている。
データストリーム処理の間にアイソクロノスデータパイプ２０によって実現され、オペコードフィールドに含まれる可能性がある操作コードを下記表４に示す。アイソクロノスデータパイプ２０は、これらの処理の結果を転送先となりうるどのレジスタにも格納することができる。転送先となりうるレジスタには、表４に示すように、データレジスタD0〜D7、アイソクロノスの送信用ＦＩＦＯ３０及び転送先として環境設定されたＤＭＡチャンネル等が含まれる。
0004033915.tif 000005
0004033915.tif 000006
0004033915.tif 000007
表４にリストされる大部分の処理には、２つの簡略命令が設けられている。「Ｉ」を含む簡略命令は、即時値を用いた処理を実行させる。「Ｉ」を含まない簡略命令は、転送元レジスタの値と転送先レジスタの値の値を用いた処理を実行させる。
MOVE処理が実行されると、転送元フィールドsrcで特定されるレジスタの値は、転送先フィールドdestで特定されるレジスタに移動する。転送元フィールドsrcで特定されるレジスタが３４ビットのレジスタであり、転送先フィールドdestで特定されるレジスタが３２ビットのレジスタである場合、上位２ビットは消失する。転送元フィールドsrcで特定されるレジスタが３２ビットのレジスタであり、転送先フィールドdestで特定されるレジスタが３４ビットのレジスタである場合、上位２ビットは、いずれも論理的低レベルに設定される。
MOVE Multiple処理が実行されると、カウント値によって特定される一定数のクワドレットデータは、転送元フィールドsrcで特定されるレジスタから転送先フィールドdestで特定されるレジスタに移動する。カウント値は、命令の即時フィールドによって指定されるレジスタに格納される。好ましくは、MOVE Multiple処理において、転送元フィールドsecで特定されるレジスタは、データインタフェースレジスタDATA_0〜DATA_3のうちの１つであり、このレジスタは、ＤＭＡチャンネル又はバス入力レジスタBUS_INにアクセスする。好ましくは、この処理において、転送先フィールドdestで特定されるレジスタは、データインタフェースレジスタDATA_0〜DATA_3のうちの１つであり、このレジスタは、ＤＭＡチャンネル又はバス出力レジスタBUS_0UTにアクセスする。
AND処理の間、転送元フィールドsrc及び転送先フィールドdestの値に対する論理的論理積演算が実行され、この演算の結果は、転送先フィールドdestで特定されるレジスタに格納される。ANDI処理では、転送先フィールドdestの値に代えて即時フィールドの値をオペランドのうちの１つとして使用し、演算結果を転送先フィールドdestで特定されるレジスタに格納する。転送元フィールドsecで特定されるレジスタが３４ビットのレジスタであり、転送先フィールドdestで特定されるレジスタが３２ビットのレジスタである場合、上位２ビットは消失する。転送元フィールドsrcで特定されるレジスタが３２ビットのレジスタであり、転送先フィールドdestで特定されるレジスタが３４ビットのレジスタである場合、上位２ビットは、いずれも論理的低レベルに設定される。転送元フィールドsecで特定されるレジスタ及び転送先フィールドdesで特定されるレジスタがいずれも３４ビットのレジスタである場合、論理積演算は３４のビットの全てに対して実行される。
OR処理においては、転送元フィールドsrc及び転送先フィールドｄestで特定されるレジスタの値に対して論理和演算が実行される。この演算結果は、転送先フィールドdestで特定されるレジスタに格納される。ORI形式の命令に基づく処理では、転送先フィールドdestの値に代えて、即時フィールドの値をオペランドの１つとして使用する。演算の結果は、転送先フィールドdestで特定されるレジスタに格納される。転送元フィールドsrcで特定されるレジスタが３４ビットのレジスタであり、転送先フィールドdestで特定されるレジスタが３２ビットのレジスタである場合、上位２ビットは消失する。転送元フィールドsrcで特定されるレジスタが３２ビットのレジスタであり、転送先フィールドdestで特定されるレジスタが３４ビットのレジスタである場合、上位２ビットは、いずれも論理的低レベルに設定される。転送元フィールドsrcで特定されるレジスタ及び転送先フィールドdestで特定されるレジスタがいずれも３４ビットのレジスタである場合、論理和演算は３４ビットの全てに対して実行される。
SHIFT処理が実行されると、転送先レジスタdestの値は、転送元レジスタsrcの値によって特定されるビット数分シフトされ、演算結果は転送先フィールドdestで特定されるレジスタに格納される。正のシフト値は、転送先レジスタの値を下位ビットの方向である右方向にシフトする、そして、左側の最上位ビットには０が充填される。負のシフト値は、転送先レジスタの中で値を上位ビットの方向である左方向にシフトする、そして、右側の最下位ビットには０が充填される。命令がSHIFTI形式で実行された場合、即時フィールドにおいて特定されるビット数によって転送元レジスタの値がシフトされ、その結果が転送先フィールドdestで特定されるレジスタに格納される。転送元フィールドsrcで特定されるレジスタが３４ビットのレジスタであり、転送先フィールドdestで特定されるレジスタが３２ビットのレジスタである場合、上位２ビットは消失する。転送元フィールドsrcで特定されるレジスタが３２ビットのレジスタであり、転送先フィールドdestで特定されるレジスタが３４ビットのレジスタである場合、上位２ビットは、いずれも論理的低レベルに設定される。転送元フィールドsecで特定されるレジスタ及び転送先フィールドdestで特定されるレジスタが３４ビットのレジスタである場合、シフト演算は下位３２ビットに対してのみ実行される。
CMP処理が実行されると、転送元レジスタsrcの値は転送先レジスタdestの値から減算される。CMP処理の結果が正の値である場合、Ｚビットは論理的高レベルに設定される。CMP処理の結果が負又は０である場合、Ｚビットは論理的低レベルに設定される。CMP処理の結果は、どこにも記憶されない。この命令がCMPI形式で実行された場合、即時値が転送元レジスタsecの値から減算され、その結果に応じて、上述と同様にしてＺビットが設定される。この命令も、処理の結果を記憶しない。
ADD処理が実行されると、転送元レジスタsrcの値は転送先レジスタdestの値に加算され、この演算結果は、転送先レジスタdestに格納される。この命令がADDI形式で実行された場合、即時値が転送元レジスタsrcの値に加算され、演算結果は、転送先レジスタdestに格納される。転送元フィールドsrcで特定されるレジスタが３４ビットのレジスタであり、転送先フィールドdestで特定されるレジスタが３２ビットのレジスタである場合、上位２ビットは消失する。転送元フィールドsrcで特定されるレジスタが３２ビットのレジスタであり、転送先フィールドdestで特定されるレジスタが３４ビットのレジスタである場合、上位２ビットは、いずれも論理的低レベルに設定される。転送元フィールドsrcで特定されるレジスタ及び転送先フィールドdestで特定されるレジスタが３４ビットのレジスタである場合、ADD処理は、下位３２ビットに対してのみ実行される。
ＳＵＢ処理が実行されると、転送先レジスタdestの値が転送元レジスタsrcの値から減算され、この演算結果は、転送先レジスタdestに格納される。この命令がSUBI形式で実行された場合、転送元レジスタの値から即時値が減算され、演算結果は、転送先レジスタdestに格納される。転送元フィールドsrcで特定されるレジスタが３４ビットのレジスタであり、そして、転送先フィールドdestで特定されるレジスタが３２ビットのレジスタである場合、上位２ビットは、消失する。転送元フィールドsrcで特定されるレジスタが３２ビットのレジスタであり、転送先フィールドdestで特定されるレジスタが３４ビットのレジスタである場合、上位２ビットは、いずれも論理的低レベルに設定される。転送元フィールドsrcで特定されるレジスタ及び転送先フィールドdestで特定されるレジスタが３４ビットのレジスタである場合、ＳＵＢ処理は下位３２ビットに対してのみ実行される。
MULT処理が実行されると、転送元レジスタsrcの値は、転送先レジスタdestの値によって乗算され、演算結果は、転送先レジスタdestに格納される。この命令がMULTI形式で実行された場合、転送元レジスタsrcには、即時値が乗算され、演算結果は、転送先レジスタdestに格納される。転送元フィールドsrcで特定されるレジスタが３４ビットのレジスタであり、転送先フィールドdestで特定されるレジスタが３２ビットのレジスタである場合、上位２ビットは消失する。転送元フィールドsrcで特定されるレジスタが３２ビットのレジスタであり、転送先フィールドdestで特定されるレジスタが３４ビットのレジスタである場合、上位２ビットは、いずれも論理的低レベルに設定される。転送元フィールドsrcで特定されるレジスタ及び転送先フィールドdestで特定されるレジスタが３４ビットのレジスタである場合、MULT処理は、下位３２ビットに対してのみ実行される。
BRANCH処理が実行されると、アイソクロノスデータパイプ２０は、転送元フィールドsecの下位バイトに含まれる制御ストアアドレスに分岐する。転送元フィールドsecは、レジスタ又は即時値を特定することができる。
BRANCH ON ZERO処理が実行されると、直前の演算又は移動制御ストア命令の結果が０である場合、アイソクロノスデータパイプ２０は、転送元フィールドsecの下位バイトに含まれる制御ストアアドレスに分岐する。転送元フィールドsecは、レジスタ又は即時値を特定することができる。
BRANCH ON NOT ZERO処理が実行されると、直前の演算又は移動制御ストア命令の結果が０ではない場合、アイソクロノスデータパイプ２０は、転送元フィールドsrcの下位バイトに含まれる制御ストアアドレスに分岐する。転送元フィールドsecは、レジスタ又は即時値を特定することができる。
BSR処理が実行されると、次の制御ストア命令のアドレスがスタックの上へ押し上げられ、アイソクロノスデータパイプ２０は、転送元フィールドsecの下位バイトに含まれる制御ストアアドレスに分岐する。転送元フィールドsecは、レジスタ又は即時値を特定することができる。
BSR ON ZERO処理が実行されると、直前の演算又は移動制御ストア命令の結果が０である場合、次の制御ストア命令のアドレスはスタックの上へ押し上げられ、アイソクロノスデータパイプ２０は、転送元フィールドsecの下位バイトに含まれる制御ストアアドレスに分岐する。転送元フィールドsrcは、レジスタ又は即時値を特定することができる。
BSR ON NOT ZERO処理が実行されると、直前の演算又は移動制御ストア命令の結果が０ではない場合、次の制御ストア命令のアドレスはスタックの上へ押し上げられ、アイソクロノスデータパイプ２０は、転送元フィールドsrcの下位バイトに含まれる制御ストアアドレスに分岐する。転送元フィールドsrcは、レジスタ又は即時値を特定することができる。
RETURN処理が実行されると、直前の制御ストアアドレスはスタックからポップオフされ、アイソクロノスデータパイプ２０は、そのアドレスに分岐する。
シリアルバスプロトコルにおいて定義されるアイソクロノス記録フォーマットは、バス５８を介して送信されるアイソクロノスデータストリームを記録するためのフォーマットである。本発明を適用したアイソクロノスデータパイプ２０は、シリアルバスプロトコルに基づいて、アイソクロノスデータの受信ストリームをアイソクロノス記録フォーマットに変換するようプログラミングされている。また、これに対応して、アイソクロノスデータパイプ２０は、アイソクロノス記録フォーマットのデータからアイソクロノスデータストリームを生成するようにプログラミングされている。アイソクロノス記録フォーマットのデータストリームを図５に示す。なお、図５に示すデータストリームは、アイソクロノスサイクル境界から開始されている。
図５において、データストリーム９４は、チャンネルＡ、Ｂの両方の各アイソクロノスサイクルに含まれるデータパケットを含む。図５におけるオフセット欄９２は、各水平行が開始されるオフセット値を示す。ヘッダ水平行は、それぞれ４バイトから構成される。データセクションは、データパケットを転送するために必要とされるバイト数から構成される。各パケットのヘッダは、１秒フィールド、サイクルナンバフィールド及びサイクルフィールドを含む。各パケット内に設けられた各チャンネルのためのサブヘッダは、それぞれデータ長フィールド、タグフィールドtg、チャンネルフィールド、データフィールド及び同期フィールドsyを含む。各パケットにおいて、サブヘッダの後には、データセクションが設けられている。
実例：アイソクロノスデータからアイソクロノス記録フォーマットへの変換
表５に示す出力制御ストアプログラムは、アイソクロノスデータパイプ２０がアイソクロノスチャンネル３及びアイソクロノスチャンネル５からなるアイソクロノスデータストリームを捕捉して、アイソクロノスチャンネル３をアイソクロノスチャンネル７に、及びアイソクロノスチャンネル５をアイソクロノスチャンネル９にマッピングし、得られたデータストリームをアイソクロノス記録フォーマットでＤＭＡチャンネル０に送信するように、アプリケーション１１、１３がアイソクロノスデータパイプ２０に対して行うプログラミングの実例を示すものである。
0004033915.tif 000008
実例：アイソクロノス記録フォーマットからの変換処理
表６に示す出力制御ストアプログラムは、アイソクロノスデータパイプ２０がアイソクロノス記録フォーマットを有するＤＭＡチャンネル３内のデータストリームをバス５８を介して転送できるアイソクロノスデータストリームに変換するよう、アプリケーション１１、１３がアイソクロノスデータパイプ２０に対して行うプログラミングの実例を示す図である。データの転送元ストリームは、アイソクロノスチャンネル７、９を含む。この出力制御ストアプログラムは、アイソクロノスチャンネル７をアイソクロノスチャンネル１に、アイソクロノスチャンネル９をアイソクロノスチャンネル２にマッピングする。なお、表６に示すプログラムにおいては、ＤＭＡチャンネルに最初に出現するクワドレットデータは、サイクルスタートクワドレットである。
0004033915.tif 000009
ＩＥＥＥ１３９４フォーマットバスを介して、アイソクロノスチャンネルを用いて転送される商業用デジタルオーディオデータ及びデジタルビデオデータには絶対時スタンプ（absolute time stamp）が含まれる。この絶対時スタンプは、送信側によって挿入され、受信側でデータのストリームをデコードするために必要なタイミング情報を再生するために使用される。同様に、例えばハードディスク装置等の非商業用オーディオデータビデオデータ記録装置は、後にデータが再生される場合でもデータを受信する側の機器が正常に動作するように、この挿入された絶対時スタンプを修正することができる。
アイソクロノスデータパイプ２０をアプリケーション１１、１３によって初期化することによりアイソクロノスデータの転送が可能となる。アプリケーション１１、１３は、アイソクロノスデータパイプ２０を初期化した後、アイソクロノスデータパイプ２０の操作可能状態を変更するために制御レジスタ３８を使う。現在の動作状態は、現在のチャンネルマスクレジスタch maskの値及び状態レジスタの下位バイトに含まれる情報によって定義される。
アイソクロノスデータパイプ２０の状態を変更するために、アプリケーション１１、１３は、新しいチャンネルマスク値を保留中のチャンネルマスクレジスタpending ch maskに、及び新たな動作状態を制御レジスタ３８にプログラミングする。制御レジスタ３８への同じアクセスにおいて、アプリケーション１１、１３は、さらにイベントフィールドにゴービットをセットし、イベントをプログラミングする。プログラミングされたイベントが発生すると、アイソクロノスデータパイプ２０は、保留中のチャンネルマスクレジスタpending ch maskの値を現在のチャンネルマスクレジスタch maskに転送する。アイソクロノスデータパイプ２０は、さらに、制御レジスタ３８の下位バイトが示す情報を状態レジスタの下位バイトに転送する。
アイソクロノスデータパイプ２０の処理を止める場合、アプリケーション１１、１３は、保留中のチャンネルマスクレジスタpending ch maskに値１をプログラミングし、制御レジスタ３８の送信イネーブルビットを論理的低レベルに設定する。動作状態が変更されると、アプリケーション１１、１３は、制御レジスタ３８のイベントフィールドにゴービットを設定し、イベントをプログラミングする。イベントが発生すると、現在のチャンネルマスクレジスタch maskの値は０になり、状態レジスタにおける送信イネーブルビットは論理的低レベルに設定され、これによりアイソクロノスデータパイプ２０の処理が停止される。アイソクロノスデータパイプ２０の処理が停止されると、状態レジスタのアクティブビットは、論理的低レベルに設定される。
アイソクロノスデータパイプ２０を起動させるために、アプリケーション１１、１３は、最初に出力制御ストアプログラムをロードし、制御ストアアドレスレジスタファイルに適切な制御ストアオフセットをプログラミングする。保留中のチャンネルマスクレジスタpending ch maskは、アイソクロノスデータパイプ２０が受信するべきチャンネルのビットマスクを用いてプログラミングされる。アイソクロノスデータパイプ２０がデータを受信していない場合、保留中のチャンネルマスクレジスタpending ch maskにおける値は０にプログラミングされる。制御レジスタ３８におけるゴービットは、状態の変更を示すために論理的高レベルに設定される。アイソクロノスデータパイプ２０がアイソクロノスデータを送信している場合、制御レジスタ３８における送信イネーブルビットは論理的高レベルに設定される。アイソクロノスデータパイプ２０がエラーにより処理を停止する場合、制御レジスタ３８におけるストップオンエラービットは論理的高レベルに設定される。アイソクロノスデータパイプ２０がアイソクロノスデータを送信している場合、送信アイソクロノスデータに含まれるＤＭＡチャンネルに対応する制御レジスタ３８内の出力イネーブルビットは、論理的高レベルに設定される。制御レジスタ３８におけるイベントフィールドには、アイソクロノスデータパイプ２０の状態を変更すイベントがプログラミングされる。
上述の通り、非同期データパイプ２６は、アプリケーション１１、１３からバス５８を介して実行される非同期データ転送動作を完了するために必要なトランザクションを自動的に生成する。本発明のアイソクロノスデータパイプ２０の変形実施例において、アイソクロノスデータパイプ２０がアイソクロノスデータと非同期データの両方を送受信するようなプログラミングを行ってもよい。この場合、非同期データパイプ２６及びこれに対応する送信用ＦＩＦＯ３２を設ける必要はない。さらに、この場合、アイソクロノスデータパイプ２０がリンク回路１００における唯一の論理ブロックとなるため、マルチプレクサ４０及びデマルチプレクサ４２を設ける必要はない。
先に述べたように、本発明の最良の実施の形態において、アイソクロノスデータパイプ２０は、出力制御ストアプログラムを実行するアイソクロノスデータストリーム上で一連の処理を実行するようプログラミングされる。変形実施例において、アイソクロノスデータパイプ２０は、非同期データも送受信するようにプログラミングされる。この変形実施例では、アイソクロノスデータパイプ２０は、仮想非同期データパイプ２６として機能し、データ送信時に適切なヘッダを生成し、受信データからはヘッダを除去するとともに、非同期データ転送動作に必要なトランザクションを生成する。これらの処理の詳細については、本出願と同日に提出された米国特許出願番号０８／６１２，３２１号、「アプリケーションのバスの間の非同期データ転送を自動的に管理する非同期データパイプ（Asynchronous Data Pipe For Automatically Managing Asynchronous Data Transfers Between An Application And A Bus Structure）」に記載されている。この出願は、１９９７年９月１２日に公開された国際出願公開番号ＷＯ９７／３３２３０に対応している。
この変形実施例において、アイソクロノスデータパイプ２０は、アイソクロノスデータと非同期データの両方を送受信する。アイソクロノスデータパイプ２０は、アプリケーション１１、１３によりプログラミングされ、必要に応じて、アイソクロノスデータストリームか非同期ストリームを処理するために適切なプログラムを実行する。非同期データを送受信する場合、アイソクロノスデータパイプ２０は、適切な範囲内のアドレスに対するデータ転送動作を完了するために必要な読出トランザクション又は書込トランザクションを自動的に生成するようプログラミングされる。アイソクロノスデータパイプ２０は、インクリメント機能がディスエーブルにされない限り、各データパケットのパケット長に応じて、各トランザクションのために転送先オフセットアドレスフィールドの値を自動的にインクリメントする。インクリメント機能がディスエーブルにされている場合とは、トランザクションが単一のアドレスにおいて実行される場合である。
本発明の原理に従った構造及び処理を特定の具体例に基づいて詳細に説明した。上述の説明で参照した具体例及びその細部は、本明細書に添付した請求の範囲を限定するものではない。
【図１】
0004033915.tif 000010
【図２】
0004033915.tif 000011
【図３】
0004033915.tif 000012
【図４】
0004033915.tif 000013
【図５】
0004033915.tif 000014