(57)【要約】  システムメモリ中のバッファ及びコーデックの間でデータを流し、バッファ中の現在位置を示すシステムメモリにおける値を保持するためのマシン読み取り可能な媒体、方法及び装置が説明される。一例ではオーディオコントローラは、システムメモリのバッファに対して緩和されたオーダリングルールを有するイソクロナスチャネルでデータを流し、イソクロナスチャネルを通じたシステムメモリへの書き込みにより、現在位置を示す値を更新する。
2007512626.tif 000002
【特許請求の範囲】
【請求項１】
システムメモリ及びコーデックを有するコンピュータ装置のコントローラで使用される方法であって、
前記コントローラの第１インターフェースで前記システムメモリのバッファからデータを読み取るステップと、
前記コントローラの第２インターフェースで前記コーデックに前記データを転送するステップと、
前記コントローラが前記データを読み取った前記バッファ中の位置を探知するステップと、
前記バッファ中の前記位置を示す値を前記第１インターフェースを通じて前記システムメモリに書き込むステップと、
を有することを特徴とする方法。
【請求項２】
前記読み取るステップが、前記データを前記第１インターフェースでイソクロナスに受信するステップを有する
ことを特徴とする請求項１記載の方法。
【請求項３】
前記データを前記第２インターフェースで前記コーデックに転送する進捗状況を探知するステップを更に有する
ことを特徴とする請求項１記載の方法。
【請求項４】
前記バッファからデータを読み取るステップが、前記バッファを規定するバッファデスクリプタリストに従って前記データを読み取るステップを有する
ことを特徴とする請求項１記載の方法。
【請求項５】
前記バッファからデータを読み取るステップが、前記バッファの終わりに達したことに応答して前記バッファの始めに戻るステップを有する
ことを特徴とする請求項４記載の方法。
【請求項６】
システムメモリに値を書き込む前に、前記第２インターフェースで転送されるデータに基づいて、前記システムメモリ中の値を更新するように決定するステップを更に有する
ことを特徴とする請求項１記載の方法。
【請求項７】
システムメモリ及びコーデックを有するコンピュータ装置のコントローラで使用される方法であって、
前記コントローラの第１インターフェースで前記コーデックからデータを読み取るステップと、
前記コントローラの第２インターフェースで前記システムメモリのバッファに前記データを書き込むステップと、
前記コントローラが前記データを書き込んだ前記バッファ中の位置を探知するステップと、
前記バッファ中の前記位置を示す値を前記第２インターフェースを通じて前記システムメモリに書き込むステップと、
を有することを特徴とする方法。
【請求項８】
前記バッファに前記データを書き込むステップが、前記バッファに向けて前記データを前記第２インターフェースでイソクロナスに転送するステップを有する
ことを特徴とする請求項７記載の方法。
【請求項９】
前記データを前記第１インターフェースで前記コーデックから受信するする進捗状況を探知するステップを更に有する
ことを特徴とする請求項７記載の方法。
【請求項１０】
前記バッファに前記データを書き込むステップが、前記バッファを規定するバッファデスクリプタリストに従って前記データを書き込むステップを有する
ことを特徴とする請求項７記載の方法。
【請求項１１】
前記バッファに前記データを書き込むステップが、前記バッファの終わりに達したことに応答して前記バッファの始めに戻るステップを有する
ことを特徴とする請求項１０記載の方法。
【請求項１２】
システムメモリに値を書き込む前に、前記第１インターフェースで受信されるデータに基づいて、前記システムメモリ中の値を更新するように決定するステップを更に有する
ことを特徴とする請求項７記載の方法。
【請求項１３】
プロセッサと、
バッファ及びバッファポジションを有するシステムメモリと、
前記システムメモリに第１バスで結合されたオーディオコントローラと、
前記オーディオコントローラに第２バスで結合されたコーデックと、
を有するシステムであって、
前記オーディオコントローラは、前記第１バス及び前記第２バスで前記バッファ及び前記コーデック間でデータを転送し、前記バッファ及び前記オーディオコントローラ間で転送する前記オーディオコントローラに関連する前記バッファ中の位置を示すように、前記バッファポジションを前記第１バスにより更新する
ことを特徴とするシステム。
【請求項１４】
前記オーディオコントローラは、前記第１バスを通じてイソクロナスチャネルで前記データを転送し、前記イソクロナスチャネルで前記バッファポジションを更新する
ことを特徴とする請求項１３記載のシステム。
【請求項１５】
前記オーディオコントローラは、前記第１バスのリンクを通じて前記データを転送し、前記リンクを通じて転送されたデータに基づいて前記オーディオコントローラのリンクポジションカウンタを更新する
ことを特徴とする請求項１３記載のシステム。
【請求項１６】
前記システムメモリは前記バッファを規定するバッファデスクリプタリストを更に有し、前記オーディオコントローラは前記バッファデスクリプタリストに基づいて前記データを転送する
ことを特徴とする請求項１３記載のシステム。
【請求項１７】
前記オーディオコントローラは、前記第１バスを通じて前記バッファから前記データをイソクロナスに読み取り、前記第２バスを通じて前記データを前記コーデックに転送する
ことを特徴とする請求項１３記載のシステム。
【請求項１８】
前記オーディオコントローラは、前記第２バスを通じて前記コーデックから前記データを受信し、前記第１バスを通じて前記バッファに前記データをイソクロナスに書き込む
ことを特徴とする請求項１３記載のシステム。
【請求項１９】
システムメモリ及びコーデック間で、前記システムメモリの第１インターフェース及び前記コーデックの第２インターフェースを通じてデータを転送する第１の直接メモリアクセスコントローラと、
前記バッファ中の前記直接メモリアクセスコントローラの位置を示すように、前記システムメモリ中の位置の値を前記第１インターフェースで更新するポジションインバッファコントローラと、
を有することを特徴とするコントローラ。
【請求項２０】
前記システムメモリのバッファを規定するバッファデスクリプタリストを前記システムメモリから読み取り、前記バッファデスクリプタリストに従って前記バッファ及び前記コーデック間で前記データを転送するように前記第１の直接メモリアクセスコントローラを構築する第２の直接メモリアクセスコントローラを更に有する
ことを特徴とする請求項１９記載のコントローラ。
【請求項２１】
前記第２インターフェースで前記データを転送する前記第１の直接メモリアクセスコントローラの進捗状況を示すカウント値を保持するリンクカウンタを更に有する
ことを特徴とする請求項１９記載のシステム。
【請求項２２】
前記第１インターフェース前記データを転送する前記第１の直接メモリアクセスコントローラの進捗状況を示すカウント値を保持するバッファポジションカウンタを更に有する
ことを特徴とする請求項１９記載のシステム。
【請求項２３】
前記第１の直接メモリアクセスコントローラは、イソクロナスに前記データを前記バッファに書き込む
ことを特徴とする請求項１９記載のシステム。
【請求項２４】
前記第１の直接メモリアクセスコントローラは、イソクロナスに前記データを前記バッファから読み取る
ことを特徴とする請求項１９記載のシステム。
【請求項２５】
コンピュータ装置で実行するための複数の命令を有するマシン読み取り可能な媒体であって、前記命令は前記コンピュータ装置に
前記コンピュータ装置のシステムメモリ中のバッファと前記コンピュータ装置のコーデックとの間でデータを流すオーディオコントローラを構築させ、
前記バッファ及び前記コーデック間のデータ伝送の進捗に基づいて、前記システムメモリ中のバッファ位置を更新するよう前記オーディオコントローラを構築させ、
前記システムメモリから前記バッファ位置を読み取り、前記バッファ及び前記コーデック間でデータを流す前記オーディオコントローラの進捗状況を判定させる
ことを特徴とするマシン読み取り可能な媒体。
【請求項２６】
前記複数の命令は更に、
前記オーディオコントローラからリンク位置を読み取り、前記コーデック及び前記オーディオコントローラ間でデータを流す前記オーディオコントローラの進捗状況を判定させる
ことを特徴とする請求項２５記載のマシン読み取り可能な媒体。
【請求項２７】
前記複数の命令は更に、
前記システムメモリ中のバッファを割り当て、前記システムメモリにバッファデスクリプタリストを格納させ、
前記バッファデスクリプタリストに従って前記データを転送するように前記オーディオコントローラを構築させる
ことを特徴とする請求項２５記載のマシン読み取り可能な媒体。
【請求項２８】
前記複数の命令は更に、
前記システムメモリのバッファ構造における位置を割り当て、
バッファの前記位置でバッファ構造における位置を更新するよう構築させる
ことを特徴とする請求項２５記載のマシン読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータストリーマの進行を追跡することに関連する。
【背景技術】
【０００２】
PCIエクスプレスはPCI(ペリフェラルコンポーネント相互接続)とコンパチブルなソフトウエアになるよう試みるI/O（入力／出力）相互接続である。PCIとある程度の両立性を維持するよう試みる一方、PCIエクスプレスはPCIによって完全にサポートされる又は発見されない多くの機能を提案する。そのような１つの機能はイソクロナス(isochronous)データ伝送をサポートすることである。イソクロナスデータ伝送のサポートは、例えば高品質の結果をもたらすオーディオ及び／又はビデオ再生アプリケーションのようなマルチメディアアプリケーションを支援する。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながらイソクロナスデータ伝送のPCIエクスプレスを実現すると、厳格なPCI順序規則をいくらか緩和させる。その結果、PCIエクスプレスチャネルを通じてデータを等時的に伝送するソフトウエアアプリケーションは、既存のPCIデータ伝送の進行を追跡するのに使用される技術とは異なる、データ転送の進行を追跡する技術を使用する必要がある。
【課題を解決するための手段】
【０００４】
以下に説明される本発明は添付図面に非限定的な例示で説明される。図示の簡明化のため、図示される要素は必ずしもスケールを描くものではない。例えば或る要素の寸法は明確化のために他の要素に比較して誇張されているかもしれない。更に適当であるならば対応する又は同様な要素を示すために参照ラベルは各図中で繰り返し使用される。
【発明を実施するための最良の形態】
【０００５】
以下データストリーミング技法が説明される。以下の説明において、本発明の理解を更に完全にするために、ロジック実現例、オペレーションコード(opcode)、オペレーションを指定する手段、リソース区分け／共有／複製実現、システム要素のタイプや相互関係、ロジック区分け／統合選択肢のような多数の具体的詳細が説明される。しかしながら本発明はそのような具体的詳細によらずに実現されてよいことは当業者に理解されるであろう。実施例では、制御構造、ゲートレベル回路及び完全なソフトウエア命令シーケンスは本発明を曖昧にしないように詳細には示されていない。当業者は、説明される内容によって、不要な実験なしに適切な機能を実現できるであろう。
【０００６】
本明細書を通じて「一例」、「実施例」及び「一実施例」等に関するものは、説明されるその例は特定の特質、構造又は特徴を含んでよいが、全ての例がその特定の特質、構造又は特徴を含む必要はないことを意味する。更にそのような語句は同じ実施例を指す必要もない。更に特定の特質、構造又は特徴が或る例に関して説明される場合に、明示的に記載されているか否かによらず、他の例に関連してそのような特質、構造又は特徴をもたらすことも当業者の知識の範疇にあることが意図される。
【０００７】
本発明の実施例はハードウエアで、ソフトウエアで又はそれらの如何なる組み合わせでも実現されてよい。本発明の実施例はマシン読み取り可能な媒体に格納された命令としても実現されてよく、その命令は１以上のプロセッサで読み取られて実行される。マシン読み取り可能な媒体はマシン（例えば、コンピュータ装置）で読み取り可能な情報を格納又は伝送する如何なる手段を含んでもよい。例えばマシン読み取り可能な媒体は、リードオンリメモリ（ROM）；ランダムアクセスメモリ（RAM）；磁気ディスク格納媒体；光格納媒体；フラッシュメモリ装置；伝搬信号の電気的な、光学的な、音響的な又は他の形式（例えば、搬送波、赤外線信号、ディジタル信号等）等を含んでよい。
【０００８】
図１にはコンピュータ装置の例が示されている。コンピュータ装置はプロセッサバス１０４を通じてチップセット１０２に結合された１以上のプロセッサ１００を有する。チップセット１０２はメインの又はシステムのメモリ１０６に、オーディオコントローラ１０８に、及び／又はコンピュータ装置の他の要素にプロセッサ１００を結合する１以上の集積回路パッケージ又はチップを含む。特に、チップセット１０２は、例えば１以上のバス１１４を通じてＢＩＯＳファームウエア、キーボード、マウス、ストレージ装置、ネットワークインターフェース等のようなコンピュータ装置の他の要素１１０への及び／又はそこからのデータ伝送をサポートする１以上の装置インターフェース１１２を有する。
【０００９】
チップセット１０２はメモリバス１１８を通じてシステムメモリ１０６にアクセスするメモリコントローラ１１６を更に有する。メモリコントローラ１１６はプロセッサ１００、オーディオコントローラ１０８及びコンピュータ装置の他の要素１１０に関連するメモリトランザクションに応答してシステムメモリ１０６にアクセスする。更にシステムメモリ１０６はアドレス指定可能な記憶場所（ストレージロケーション）を用意する様々なメモリ装置を有し、メモリコントローラ１１６はそれらからのデータを読み取り及び／又はそれらにデータを書き込む。特にシステムメモリ１０６は例えばＤＲＡＭ（ダイナミックランダムアクセスメモリ）装置、ＳＤＲＡＭ（同期ＤＲＡＭ）装置、ＤＤＲ（ダブルデータレート）ＳＤＲＡＭ装置又は他のメモリ装置のような１以上のタイプのメモリ装置を有してよい。
【００１０】
コンピュータ装置はオーディオバス１２２を通じてオーディオコントローラ１０８に結合された１以上のコーデック１２０を更に有してよい。コーデック１２０は、オーディオコントローラ１０８及び／又はチップセット１０２に統合されてもよいし、コンピュータ装置のメインボードに搭載されてもよいし、コンピュータ装置に結合されたアドイン（拡張）カードに搭載されてもよいし、例えばドッキングステーション、オーディオミキサ等のような外部装置の一部でもよく、外部装置はコンピュータ装置のインターフェースポート（図示せず）に結合される。更にコーデック１２０は（データのストリームを生成及び／又は処理する）コンピュータ装置のサウンドカード、モデム、ファクシミリ装置、電話装置、オーディオ捕捉装置、ビデオ捕捉装置等に関連してもよい。
【００１１】
オーディオコントローラ１０８は、システムメモリ１０６に格納された１以上のバッファデスクリプタリスト（ＢＤＬ）１２６で規定されたシステムメモリ１０６のバッファ１２４及びコーデック１２０の間でデータを流す。オーディオコントローラ１０８は、オーディオコントローラ１０８及び１以上のバッファ１２４の間でデータを伝送する際にオーディオコントローラ１０８の進捗を反映するためにシステムメモリ１０６のバッファ（ＤＰＩＢ）構造１２８中有のダイレクトメモリアクセス（ＤＭＡ）位置を更新してよい。
【００１２】
オーディオコントローラ１０８はチップセット１０２に統合されてもよい。しかしながら図示の例ではオーディオコントローラ１０８はチップセット１０２とは分離されている。そのような例ではチップセット１０２及びオーディオコントローラ１０８の各々は１以上のインターフェースを有してよく、そのインターフェースはイソクロナスチャネル１３２で等時性データデータ伝送をサポートし及び非イソクロナスチャネル１３４で非イソクロナスデータ伝送をサポートする。一実施例では、１以上のイソクロナスチャネル１３２はオーディオコントローラ１０８のバスインターフェース１３０をチップセット１０２のバスインターフェース１３０に結合し、それらの間でイソクロナスデータ伝送をサポートする。一実施例では各バスインターフェース１３０はイソクロナス仮想チャネルをサポートするPCIエクスプレスコンパチブルインターフェースを実現してもよい。しかしながらバスインターフェース１３０は付加的な及び／又は代替的なインターフェースプロコルを実現してもよい。更にチップセット１０２及びバスインターフェース１３０は従来のPCIオーダリングルールより厳格ではないPCIエクスプレスオーダリングルールのようなオーダリングルールを実現してもよい。特に、PCIオーダリングルールとは異なり、プロセッサのデータ読み込み完了は、システムメモリ１０６への等時的な書き込み及び／又は読み込みを後押ししなくてよい。更に割り込みはイソクロナスな読み込み及び／又はシステムメモリ１０６への書き込みを後押ししないかもしれない。しかしながら一実施例ではオーダリングルールは、イソクロナスな書き込みが、以前に発行したイソクロナスな読み込みを及び／又は同じチャネルでの書き込みを飛び越えないことを保証する。FIX−ME:これらのオーダリングルールは正確か？
オーディオコントローラ１０８はコード１２０をオーディオコントローラ１０８に結合するために使用されるオーディオバス１２２のためのオーディオバスインターフェース１３６を更に有する。一実施例ではオーディオバスインターフェース１３６はオーディオバス１２２の１以上の１対１シリアル入力リンクを通じてコーデック１２０からデータフレームを受信してよい。オーディオバスインターフェース１３６はオーディオバス１２２のブロードキャストシリアル出力リンクを通じて１以上のコーデック１２０にデータフレームを更に送信し、それは様々なフォーマットに従ってストリームをエンコード及び／又はデコードする。
【００１３】
図２を参照するに、オーディオコントローラ１０８は１以上のBDLDMAコントローラ１３８、DPIBDMAコントローラ１４０、１以上の入力DMAコントローラ１４２及び１以上の出力DMAコントローラ１４４を有する。一実施例では各入力DMAコントローラ１４２は、１以上のコーデック１２０から受信したデータをシステムメモリ１０６のバッファ１２４に別々に流すようにプロセッサ１００によりプログラムされてよい。同様に各出力DMAコントローラ１４２は、システムメモリ１０６のバッファ１２４から１以上のコーデック１２０へデータを別々に流すようにプロセッサ１００によりプログラムされてよい。
【００１４】
各DBLDMAコントローラ１３８は、システムメモリ１０６からバッファデスクリプタリスト１２６を読み取り、そのバッファデスクリプタリストを適切なDMAコントローラ１４２に与える。各バッファデスクリプタリスト１２６はバッファ１２４の複数のバッファセグメントを規定し、そのバッファから対応する出力コントローラ１４２，１４４がデータを読み出し、或いはそこから対応する入力DMAコントローラがデータを書き込む。バッファデスクリプタリスト１２６のデスクリプタ１４８の各々は、バッファ１２４のバッファセグメント１４６の開始を識別するベースと、バッファセグメント１４６の終了を識別する長さ（レングス）とを有する。一実施例ではDMAコントローラ１４２，１４４はそれら各自のバッファ１２４をリングバッファ又はサイクリックバッファとして取り扱ってよい。従ってそれら各自のバッファ１２４の終了に達すると、DMAコントローラ１４２，１４４は対応するバッファ１２４の開始に送り込む(wrap−around)又は戻す。
【００１５】
オーディオコントローラ１０８は個別のバッファレングスレジスタ１５０、個別のDMAポジションインバッファ（DPIB）カウンタ１５２、個別のリンクポジションインバッファ（LPIB）カウンタ１５４を入力DMAコントローラ１４２及び出力DMAコントローラ１４４の各々について更に有する。プロセッサ１００及び／又はBDLDMAコントローラ１３８はDMAコントローラ１４２，１４４各々のバッファレングスレジスタ１５０に対応するバッファ１２４の長さを格納する。各入力DMAコントローラ１４２はそのDPIBカウンタ１５２をインクリメントし、DPIBカウンタ１５２がバイト数（入力DMAコントローラ１４２がそのバッファ１２４に向けて転送したバイト数）に等しい数を含むようにする。更に各入力DMAコントローラ１４２はそのLPIBカウンタ１５４をインクリメントし、LPIBカウンタ１５４がバイト数（入力DMAコントローラ１４２が入力リンクから受信したバッファ数）に等しい数を含むようにする。同様に各出力DMAコントローラ１４４はDPIBカウンタ１５２をインクリメントし、DPIBカウンタ１５２がバイト数（出力DMAコントローラ１４４がそのバッファ１２４から転送したバイト数）に等しい数を含むようにする。更に各出力DMAコントローラ１４４はLPIBカウンタ１５４をインクリメントし、LPIBカウンタ１５４がバイト数（出力DMAコントローラ１４４がオーディオバス１２２の出力リンクに転送したバイト数）に等しい数を含むようにする。
【００１６】
DPIBカウンタ１５２及びLPIBカウンタ１５４は、それらのカウントが各自のバッファ１２４の終了に到達したことを示す場合にそれら自身をクリアしてもよいし或いは初期値（例えば、ゼロ、関連するバッファ長等）にリセットしてもよい。一実施例ではDPIBカウンタ１５２及びLPIBカウンタ１５４は、それらのカウントが、対応するバッファレングスレジスタ１５０のバッファ長と所定の関係になった場合にそれらをクリアしてもよいし或いは初期値にリセットしてもよい。別の実施例ではDPIBカウンタ１５２及びLPIBカウンタ１５４は、オーバーフローする及び／又はアンダーフローするカウンタ１５２，１５４に応答して、それら自身をクリアしてもよいし或いは初期値にリセットしてもよい。更に、プロセッサ１００はLPIBカウンタ１５４のカウント値を読み取るがLPIBカウンタ１５４のカウント値を書き込んだり更新したりしないように、LPIBカウンタ１５４はインクリメントされてもよい。
【００１７】
オーディオコントローラ１０８はアップデートカウンタ１５６及びアップデートレートレジスタ１５８を更に有する。一実施例ではアップデートカウンタ１５６は、アップデートレートレジスタ１５８に格納された値を超えて増加しているアップデートカウンタ１５６のカウント値に応答してオーバーフロー信号を生成する。オーバーフローに応答してアップデートカウンタ１５６のカウント値はクリアされてもよいし或いはゼロに設定されてもよい。別の実施例ではアップデートカウンタ１５６は、ゼロを超えて減少しているアップデートカウンタ１５６のカウント値に応答してアンダーフロー信号を生成してもよい。アンダーフローに応答してアップデートカウンタ１５６のカウント値はアップデートレートレジスタ１５８に格納された値に設定されてもよい。
【００１８】
DPIBDMAコントローラ１４０はDPIB構造１２８を更新する時を判定するためにアンダーフロー／オーバーフロー信号を使用する。図２に示されるようにDPIB構造１２８は、入力DMAコントローラ１４２の各々について及び出力DMAコントローラ１４４の各々についてDPIBフィールド１６０を有する。DPIB構造１２８は将来の利用に備えて予約された予約フィールド１６２を更に有してもよい。一実施例ではDPIB構造１２８はシステムメモリ１０６の隣接部分を有し、DPIB構造の各フィールド１６０，１６２は３２ビットより成る。
【００１９】
図３にはバッファ１２４及びコーデック１２０の間でデータを流す又は転送する方法の一例が示される。ボックス２００にてプロセッサ１００は、或るストリームにバッファ１２４を割り当て、システムメモリ１０６にバッファデスクリプタリスト１２６を格納し、そのバッファデスクリプタリストは割り当てられたバッファ１２４のバッファセグメント１４６を識別する。ボックス２０２にてプロセッサ１００は、オーディオコントローラ１０８のDMAコントローラ１４２，１４４をそのストリームに割り当て、そのデータを流すようにオーディオコントローラ１０８を構成する。一実施例ではプロセッサ１００は、割り当てられたバッファ１２４の長さ、バッファデスクリプタリスト１２６のベースアドレス、転送されるストリームのストリーム識別子、データを流すためのDMAコントローラ１４２，１４４用のDMA識別子、データ伝送に含まれるコーデック１２０用の１以上のコーデック識別子及びアップデートレートレジスタ１５８のアップデート値をオーディオコントローラ１０８に与える。
【００２０】
ボックス２０４ではオーディオコントローラ１０８はプロセッサ１００から受信した情報に基づいてストリーム用に１以上のDMAコントローラ１３８，１４０，１４２，１４４を構築する。一実施例ではオーディオコントローラ１０８は、受信したバッファ長に基づいて割り当てられたDMAコントローラ１４２，１４４のバッファレングスレジスタ１５０を更新し、割り当てられたDMAコントローラ１４２，１４４のDPIBカウンタ及びLPIBカウンタ１５４を初期化し、割り当てられたバッファ１２４のバッファデスクリプタリスト１２６のベースアドレスと割り当てられたDMAコントローラ１４２，１４４のDMA識別子とを、割り当てられたDMAコントローラ１４２，１４４のBDLDMAコントローラ１３８に与えてもよい。
【００２１】
ボックス２０６ではBDLDMAコントローラ１３８はバッファデスクリプタリスト１２６をシステムメモリ１０６から読み取る。BDLDMAコントローラ１３８は、受信したDMA識別子に関連するDMAコントローラ１４２，１４４にバッファデスクリプタリスト１２６を与え、及び／又は読み取ったバッファデスクリプタリスト１２６に従ってデータを転送するようにDMAコントローラ１４２，１４４を構成してもよい。ボックス２０８ではオーディオコントローラ１０８はバッファデスクリプタリスト１２６に従ってバッファ１２４及びコーデック１２０の間でデータを転送してよい。特に入力ストリームについて、オーディオバスインターフェース１３６は、オーディオバス１２２の入力リンクを通じて関連データ及びストリーム識別子をコーデック１２０から受信する。オーディオバスインターフェース１３６はシステム識別子に基づいて適切な入力DMAコントローラ１４２にデータをルーティングし、その入力DMAコントローラ１４２はイソクロナスチャネル１３２でそのデータを割り当てられたバッファ１２４に書き込む。同様に出力DMAコントローラ１４４は割り当てられたバッファ１２４からイソクロナスチャネルでバッファデスクリプタリスト１２６により決められたようにデータを読み取る。オーディオバスインターフェース１３６は、出力DMAコントローラ１４４からデータを受信し、オーディオバス１２２の出力リンクを通じてフレーム中のデータを適切なコーデック１２０に転送する。
【００２２】
オーディオバスインターフェース１３６によりデータを送信又は受信したことに応答して、ボックス２１０ではDMAコントローラ１４２は、オーディオバス１２２のリンクでの転送の進捗を反映するように各自のLPIBカウンタ１５４を更新する。一実施例ではDMAコントローラ１４２，１４４は、最後に更新して以来そのリンクで転送されたバイト数だけLPIBカウンタ１５４をインクリメントする。更にDMAコントローラ１４２，１４４はそのリンクで転送されたデータに基づいてアップデートカウンタ１５６を更新する。一実施例では各DMAコントローラ１４２，１４４は、最後に更新して以来各自のリンクで転送されたフレーム数だけアップデートカウンタ１５６のカウント値を更新し、アップデートカウンタ１５６に、オーディオバス１２２で転送されたフレーム数を追跡させる。
【００２３】
バッファ１２４からデータを読み込む又はそこにデータを書き込むことに応じて、ボックス２１４にてDMAコントローラ１４２，１４４は或る進捗状況を反映するように各自のDPIBカウンタ１５２を更新し、その進捗状況はDMAコントローラ１４２，１４４がバッファ１２４及びオーディオコントローラ１０８間でデータを転送している状況である。一実施例ではDMAコントローラ１４２，１４４は、バッファ１２４及びオーディオコントローラ１０８間で最後に更新して以来転送されたバッファ数だけDPIBカウンタ１５２を更新する。
【００２４】
ボックス２１６では、DPIBDMAコントローラ１４０は、更新カウンタ１５６のカウント値に基づいてシステムメモリ１０６中のDPIB構造１２８を更新するか否かを判定する。一実施例ではDPIBDMAコントローラ１４０は、アップデートカウンタ１５６のオーバーフロー及び／又はアンダーフロー信号に応答して、システムメモリ１０６に格納されたDPIB構造１２８を更新するよう決定してよい。別の実施例では、更新カウンタ１５６のカウント値が更新レートレジスタ１５８に格納された更新値と所定の関係（例えば、等しい関係）になったことを確認したことに応答して、DPIBDMAコントローラ１４０はDPIB構造１２８を更新するよう決定してもよい。DPIB構造１２８を更新する決定に応じて、ボックス２１８ではDPIBDMAコントローラ１４０は、DMAコントローラ１４２，１４４で使用されたのと同じ仮想チャネルで、DPIBカウンタ１５２のカウント値をDPIB構造１２８のそれら各自のDPIBフィールド１６０に書き込む。
【００２５】
仮想チャネルで書き込み順序を維持するバスインターフェース１３０により、プロセッサ１００は、システムメモリ１０６のバッファ１２４に及び／又はそこからイソクロナスにデータを転送するオーディオコントローラ１０８の進捗状況をDPIB構造１２８から判定する。更にプロセッサ１００はLPIBカウンタ１５４を読み取り、オーディオバス１２２のリンクでデータを転送するオーディオコントローラ１０８の進捗を判定する。
【００２６】
ボックス２２０ではオーディオコントローラ１０８はDMAコントローラ１４２，１４４がバッファ１２４の終わりに達したか否かを判定する。一実施例ではDPIBカウンタ１５６のオーバーフロー及び／又はアンダーフロー信号に応答して、オーディオコントローラ１０８はDMAコントローラ１４２，１４４がバッファ１２４の終わりに到達したことを確認する。別の実施例では、DPIBカウンタ１５２のカウント値が、関連するバッファレングスレジスタ１５０に格納済みのバッファ長と所定の関係（例えば、等しい関係）になったのを確認したことに応答して、オーディオコントローラ１０８はDMAコントローラ１４２，１４４がバッファ１２４の終わりに到達したことを確認してもよい。バッファ１２４の終わりに達したことの確認に応じて、ボックス２２２ではDMAコントローラ１４２，１４４はDPIBカウンタ１５２及びLPIBカウンタ１５４をリセット又は初期化してもよい。DMAコントローラ１４２，１４４はバッファデスクリプタリスト１２６に従ってバッファ１２４のスタートにもどってもよい。そしてDMAコントローラ１４２，１４４はボックス２０８に戻り、バッファ１２４及びオーディオコントローラ１０８の間でデータを伝送し続ける。
【００２７】
以上本発明の特徴が実施例に関連して説明された。しかしながらその説明は限定的な意味に解釈されることを意図していない。実施例の様々な修正に加えて本発明の他の実施例も、本発明に関連する当業者に明白であり、本発明の精神及び範囲内にある。
【図面の簡単な説明】
【００２８】
【図１】オーディオコントローラを備えたコンピュータ装置例を示す図である。
【図２】システムメモリのバッファデスクリプタリスト及びバッファに関連するオーディオコントローラの例を示す図である。
【図３】システムメモリ中のバッファ及びコーデック間でデータを伝送する方法例を示す図である。
【図１】
2007512626.tif 000003
【図２】
2007512626.tif 000004
【図３】
2007512626.tif 000005
【国際調査報告】
2007512626.tif 000006
2007512626.tif 000007
2007512626.tif 000008