(57)【要約】【課題】クロックドリフトを補償するシステムを提供すること。【解決手段】第一のデバイスと第二のデバイスとの間でのデータフローを同期化するシステムであって、該システムは、バスシステムを介してデータを送受信可能な２つ以上のデバイスを結合するデータリンクと、情報を感知し、該バスシステムを介して該情報を転送するように構成されたキャプチャデバイスと、該データリンクによって受信されたデータを一時的に格納するリングバッファと、該キャプチャデバイスによって受信されたデータの第一の長さと異なる第二の長さのデータをコピーまたは再構築する読み出しコントローラと、該リングバッファの中または外へのデータのアンダーフローまたはオーバーフローを検出し、クロックドリフトを補償するモニタとを備える、システム。【選択図】図１
2008048392.tif 000002
【特許請求の範囲】
【請求項１】
第一のデバイスと第二のデバイスとの間でのデータフローを同期化するシステムであって、該システムは、
バスシステムを介してデータを送受信可能な２つ以上のデバイスを結合するデータリンクと、
該データリンクと通信するキャプチャデバイスであって、情報を感知し、該バスシステムを介して該情報を転送するように構成されたキャプチャデバイスと、
該キャプチャデバイスと通信するリングバッファであって、該データリンクによって受信されたデータを一時的に格納するリングバッファと、
該リングバッファにデータを書き込む書き込みコントローラと、
該リングバッファと通信する読み出しコントローラであって、該キャプチャデバイスによって受信されたデータの第一の長さと異なる第二の長さのデータをコピーまたは再構築する読み出しコントローラと、
出力ポートにデータを送信するプレイバックデバイスと、
該リングバッファの中または外へのデータのアンダーフローまたはオーバーフローを検出し、キャプチャデバイスまたはプレイバックデバイスにブロッキングコールを送信することによって、クロックドリフトを補償するモニタと
を備える、システム。
【請求項２】
前記第一のデータリンクは、外部バスを備える、請求項１に記載のシステム。
【請求項３】
前記データリンクと通信するデバイスドライバをさらに備える、請求項１に記載のシステム。
【請求項４】
前記デバイスドライバは、２つの異なるデバイス間の動作互換性を確保するために、データフォーマットを異なるデータフォーマットに翻訳する翻訳機を備える、請求項１に記載のシステム。
【請求項５】
前記リングバッファは、先入れ先出しストレージデバイスを備える、請求項１に記載のシステム。
【請求項６】
前記モニタは、前記プレイバックデバイスによって送信されるべきデータを構築または構文解析するように構成される、請求項１に記載のシステム。
【請求項７】
前記キャプチャデバイスは、前記データが前記プレイバックデバイスによって送信されるレートとは異なるレートで処理されるデータを受信するように構成される、請求項１に記載のシステム。
【請求項８】
前記リングバッファは、メモリの連続的なブロックを備える、請求項１に記載のシステム。
【請求項９】
前記リングバッファは、メモリの不連続的なブロックを備える、請求項１に記載のシステム。
【請求項１０】
前記リングバッファは、アクセスポインタが所定のメモリアドレス範囲の外に動くのを防止するオーバーフローロジックを備える、請求項１に記載のシステム。
【請求項１１】
前記オーバーフローロジックは、ソフトウェア命令を介してディセーブルにされるように構成される、請求項１０に記載のシステム。
【請求項１２】
前記モニタは、ウィンドウ処理機能によって、補償時間を導出するように構成される、請求項１に記載のシステム。
【請求項１３】
前記モニタは、同期ベースで、前記クロックドリフトを補償する、請求項１に記載のシステム。
【請求項１４】
前記モニタは、非同期ベースで、前記クロックドリフトを補償する、請求項１に記載のシステム。
【請求項１５】
第一のデバイスと第二のデバイスとの間でのデータフローを同期化するシステムであって、
データリンクと通信するキャプチャデバイスであって、情報を感知して、転送するように構成されたキャプチャデバイスと、
該キャプチャデバイスと通信するシンクロナイザであって、該キャプチャデバイスを介して受信されたデータを格納するシンクロナイザと、
該リングバッファと通信する読み出しコントローラであって、該キャプチャデバイスによって受信された長さと異なる第二の長さでデータをコピーする読み出しコントローラと、
該シンクロナイザの中または外へのアンダーフロー状態またはオーバーフロー状態を検出し、オーバーフロー状態が検出されるとき、キャプチャデバイスにブロッキングコールを送信することによってクロックドリフトを補償し、アンダーフロー状態が検出されるとき、プレイバックデバイスにブロッキングコールを送信することによって該クロックドリフトを補償するモニタと
を備える、システム。
【請求項１６】
前記キャプチャデバイスは、デバイスドライバと通信し、
該デバイスドライバは、２つの異なるデバイス間の動作互換性を確保するために、データフォーマットを異なるデータフォーマットに翻訳する翻訳機を備える、請求項１５に記載のシステム。
【請求項１７】
前記モニタは、非同期インターバルで、クロックドリフトを補償する、請求項１５に記載のシステム。
【請求項１８】
前記シンクロナイザは、車両に結合される、請求項１５に記載のシステム。
【請求項１９】
前記シンクロナイザは、公けにアクセス可能なネットワークに結合される、請求項１５に記載のシステム。
【請求項２０】
異なるブロック幅でデータを処理することによって、クロックドリフトを補償する方法であって、
第一のインターフェースでデータをキャプチャするステップと、
２つ以上のデバイスで情報が処理されるレート間の差を補償するように構成されるストレージデバイスにデータを書き込むステップと、
２つの異なるデータ長でデータを処理することによって、該ストレージデバイスの中または外へのデータのアンダーフローまたはオーバーフローを検出するステップと、
出力データストリームの中にデータを挿入すること、あるいは該出力データストリームからデータを削除することによって、クロックドリフトを補償するステップと
を包含する、方法。
【請求項２１】
前記出力データストリームをデバイスドライバに送信するステップをさらに包含する、請求項２０に記載の方法。
【請求項２２】
前記クロックドリフトは、非同期インターバルで補償される、請求項２０に記載の方法。
【請求項２３】
前記補償は、人を輸送するデバイス上で生じる、請求項２０に記載の方法。
【請求項２４】
前記補償は、ノイズを低減するシステムで生じる、請求項２０に記載の方法。
【請求項２５】
異なるブロック幅でデータを処理することによって、クロックドリフトを補償する、コンピュータ読み出し可能な媒体であって、該補償することは、
第一のインターフェースでデータをキャプチャすることと、
２つ以上のデバイスで情報が処理されるレート間の差を補償するように構成されるメモリにデータを書き込むことと、
２つの異なるデータ長でデータを処理することによって、該メモリの中または外へのデータのオーバーフローまたはアンダーフローを検出することと、
出力データストリームの中にデータを挿入すること、あるいは該出力データストリームからデータを削除することによって、クロックドリフトを補償することと
を包含する、コンピュータ読み出し可能な媒体。
【請求項２６】
第一のデバイスと第二のデバイスとの間でのデータフローを同期化するシステムであって、
データリンクと通信するキャプチャデバイスであって、情報を感知し、転送するように構成されたキャプチャデバイスと、
該キャプチャデバイスと通信するシンクロナイザであって、該キャプチャデバイスを介して受信されたデータを格納するシンクロナイザと、
該リングバッファと通信する読み出しコントローラであって、該キャプチャデバイスによって受信された長さとは異なる第二の長さのデータをコピーする読み出しコントローラと、
該シンクロナイザの中または外へのアンダーフロー状態またはオーバーフロー状態を検出する手段であって、オーバーフロー状態が検出されるとき、キャプチャデバイスにブロッキングコールを送信することによってクロックドリフトを補償し、アンダーフロー状態が検出されるとき、プレイバックデバイスにブロッキングコールを送信することによって該クロックドリフトを補償する手段と
を備える、システム。
【請求項２７】
前記キャプチャデバイスは、デバイスドライバと通信し、
該デバイスドライバは、２つの異なるデバイス間の動作互換性を確保するために、データフォーマットを異なるデータフォーマットに翻訳する手段を備える、請求項２６に記載のシステム。
【請求項２８】
前記アンダーフローまたはオーバーフロー状態を検出する前記手段は、非同期インターバルでクロックドリフトを補償する、請求項２６に記載のシステム。
【請求項２９】
前記シンクロナイザは、車両に結合される、請求項２６に記載のシステム。
【請求項３０】
前記シンクロナイザは、公けにアクセス可能なネットワークと通信する、請求項２６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
（発明の背景）
（２．技術分野）
本出願は、タイミングに関し、より具体的には、デバイス間でのデータ転送を同期化することに関する。
【背景技術】
【０００２】
（３．関連技術）
デジタルシステムは、デバイス間の調整された通信に依存する。一部のシステムは、タイミング信号に依存して、情報の受信ストリームをいつ調査するかを決定する。タイミング情報を分配することは、大きな挑戦であり得る。タイミング信号は、生成され、分配され、そして、同期化され、送信デバイスと受信デバイスとの間の通信を可能にする。
【０００３】
一部のシステムは、デバイス間で通信するために、別個のクロックを使用する。ドリフトが生じるとき、一つのデバイスが他のデバイスと同じ速さで情報を処理しないこともあり得るので、情報は失われ得る。一部のシステムは、クロックレートにおける何らかの望ましくないスキューを補償するために、情報の大きなブロックを故意に削除する。これらの処理は、一時的な発生（ｔｅｍｐｏｒａｌ  ｏｃｃｕｒｅｎｃｅ）を欠く。情報の大きなブロックが失われる際に、データストリームを破壊するか、あるいは不正なものとするアーチファクトが、データストリームの中に導入され得る。データが失われると、あるいは変化すると、その結果、受信された情報のみならず、また処理されるべき情報にも影響を与え得る破滅的なイベントまたは故障になり得る。それゆえ、大量の情報を削除することなく、クロックドリフトまたはスキューを補償するシステムに対するニーズが存在する。
【発明の開示】
【課題を解決するための手段】
【０００４】
（概要）
システムは、第一のデバイスと第二のデバイスとの間でのデータフローを同期化する。該システムは、情報を感知して、転送するように構成されたキャプチャデバイスを含む。シンクロナイザは、該キャプチャデバイスを介して受信されたデータを格納する。読み出しコントローラは、該キャプチャデバイスによって受信されたデータの長さと等しくない長さで、データをコピーするか、あるいは読み出す。モニタは、該シンクロナイザの中または外へのアンダーフロー状態またはオーバーフロー状態を検出し、クロックドリフトを補償する。
【０００５】
本発明の他のシステム、方法、特徴、および利点は、以下の図面および詳細な説明を考察すると、当業者には明らかであるか、あるいは明らかになる。このような追加のシステム、方法、特徴、および利点の全ては、本記述内に含まれ、本発明の範囲内にあり、そして、以下の請求項によって保護されることが意図される。
【０００６】
本発明は、以下の図面および記載を参照して、より良好に理解され得る。図におけるコンポーネントは、必ずしも縮尺どおりではなく、その代わりに、本発明の原理を説明するために強調されている。さらに、図面において、同様の参照番号は、異なる図を通して、対応するパーツを示す。
【０００７】
上記目的を達成するために、本発明は、例えば、以下の手段を提供する。
【０００８】
（項目１）
第一のデバイスと第二のデバイスとの間でのデータフローを同期化するシステムであって、該システムは、
バスシステムを介してデータを送受信可能な２つ以上のデバイスを結合するデータリンクと、
該データリンクと通信するキャプチャデバイスであって、情報を感知し、該バスシステムを介して該情報を転送するように構成されたキャプチャデバイスと、
該キャプチャデバイスと通信するリングバッファであって、該データリンクによって受信されたデータを一時的に格納するリングバッファと、
該リングバッファにデータを書き込む書き込みコントローラと、
該リングバッファと通信する読み出しコントローラであって、該キャプチャデバイスによって受信されたデータの第一の長さと異なる第二の長さのデータをコピーまたは再構築する読み出しコントローラと、
出力ポートにデータを送信するプレイバックデバイスと、
該リングバッファの中または外へのデータのアンダーフローまたはオーバーフローを検出し、キャプチャデバイスまたはプレイバックデバイスにブロッキングコールを送信することによって、クロックドリフトを補償するモニタと
を備える、システム。
【０００９】
（項目２）
上記第一のデータリンクは、外部バスを備える、項目１に記載のシステム。
【００１０】
（項目３）
上記データリンクと通信するデバイスドライバをさらに備える、項目１に記載のシステム。
【００１１】
（項目４）
上記デバイスドライバは、２つの異なるデバイス間の動作互換性を確保するために、データフォーマットを異なるデータフォーマットに翻訳する翻訳機を備える、項目１に記載のシステム。
【００１２】
（項目５）
上記リングバッファは、先入れ先出しストレージデバイスを備える、項目１に記載のシステム。
【００１３】
（項目６）
上記モニタは、上記プレイバックデバイスによって送信されるべきデータを構築または構文解析するように構成される、項目１に記載のシステム。
【００１４】
（項目７）
上記キャプチャデバイスは、上記データが上記プレイバックデバイスによって送信されるレートとは異なるレートで処理されるデータを受信するように構成される、項目１に記載のシステム。
【００１５】
（項目８）
上記リングバッファは、メモリの連続的なブロックを備える、項目１に記載のシステム。
【００１６】
（項目９）
上記リングバッファは、メモリの不連続的なブロックを備える、項目１に記載のシステム。
【００１７】
（項目１０）
上記リングバッファは、アクセスポインタが所定のメモリアドレス範囲の外に動くのを防止するオーバーフローロジックを備える、項目１に記載のシステム。
【００１８】
（項目１１）
上記オーバーフローロジックは、ソフトウェア命令を介してディセーブルにされるように構成される、項目１０に記載のシステム。
【００１９】
（項目１２）
上記モニタは、ウィンドウ処理機能によって、補償時間を導出するように構成される、項目１に記載のシステム。
【００２０】
（項目１３）
上記モニタは、同期ベースで、上記クロックドリフトを補償する、項目１に記載のシステム。
【００２１】
（項目１４）
上記モニタは、非同期ベースで、上記クロックドリフトを補償する、項目１に記載のシステム。
【００２２】
（項目１５）
第一のデバイスと第二のデバイスとの間でのデータフローを同期化するシステムであって、
データリンクと通信するキャプチャデバイスであって、情報を感知して、転送するように構成されたキャプチャデバイスと、
該キャプチャデバイスと通信するシンクロナイザであって、該キャプチャデバイスを介して受信されたデータを格納するシンクロナイザと、
該リングバッファと通信する読み出しコントローラであって、該キャプチャデバイスによって受信された長さと異なる第二の長さでデータをコピーする読み出しコントローラと、
該シンクロナイザの中または外へのアンダーフロー状態またはオーバーフロー状態を検出し、オーバーフロー状態が検出されるとき、キャプチャデバイスにブロッキングコールを送信することによってクロックドリフトを補償し、アンダーフロー状態が検出されるとき、プレイバックデバイスにブロッキングコールを送信することによって該クロックドリフトを補償するモニタと
を備える、システム。
【００２３】
（項目１６）
上記キャプチャデバイスは、デバイスドライバと通信し、
該デバイスドライバは、２つの異なるデバイス間の動作互換性を確保するために、データフォーマットを異なるデータフォーマットに翻訳する翻訳機を備える、項目１５に記載のシステム。
【００２４】
（項目１７）
上記モニタは、非同期インターバルで、クロックドリフトを補償する、項目１５に記載のシステム。
【００２５】
（項目１８）
上記シンクロナイザは、車両に結合される、項目１５に記載のシステム。
【００２６】
（項目１９）
上記シンクロナイザは、公けにアクセス可能なネットワークに結合される、項目１５に記載のシステム。
【００２７】
（項目２０）
異なるブロック幅でデータを処理することによって、クロックドリフトを補償する方法であって、
第一のインターフェースでデータをキャプチャするステップと、
２つ以上のデバイスで情報が処理されるレート間の差を補償するように構成されるストレージデバイスにデータを書き込むステップと、
２つの異なるデータ長でデータを処理することによって、該ストレージデバイスの中または外へのデータのアンダーフローまたはオーバーフローを検出するステップと、
出力データストリームの中にデータを挿入すること、あるいは該出力データストリームからデータを削除することによって、クロックドリフトを補償するステップと
を包含する、方法。
【００２８】
（項目２１）
上記出力データストリームをデバイスドライバに送信するステップをさらに包含する、項目２０に記載の方法。
【００２９】
（項目２２）
上記クロックドリフトは、非同期インターバルで補償される、項目２０に記載の方法。
【００３０】
（項目２３）
上記補償は、人を輸送するデバイス上で生じる、項目２０に記載の方法。
【００３１】
（項目２４）
上記補償は、ノイズを低減するシステムで生じる、項目２０に記載の方法。
【００３２】
（項目２５）
異なるブロック幅でデータを処理することによって、クロックドリフトを補償する、コンピュータ読み出し可能な媒体であって、該補償することは、
第一のインターフェースでデータをキャプチャすることと、
２つ以上のデバイスで情報が処理されるレート間の差を補償するように構成されるメモリにデータを書き込むことと、
２つの異なるデータ長でデータを処理することによって、該メモリの中または外へのデータのオーバーフローまたはアンダーフローを検出することと、
出力データストリームの中にデータを挿入すること、あるいは該出力データストリームからデータを削除することによって、クロックドリフトを補償することと
を包含する、コンピュータ読み出し可能な媒体。
【００３３】
（項目２６）
第一のデバイスと第二のデバイスとの間でのデータフローを同期化するシステムであって、
データリンクと通信するキャプチャデバイスであって、情報を感知し、転送するように構成されたキャプチャデバイスと、
該キャプチャデバイスと通信するシンクロナイザであって、該キャプチャデバイスを介して受信されたデータを格納するシンクロナイザと、
該リングバッファと通信する読み出しコントローラであって、該キャプチャデバイスによって受信された長さとは異なる第二の長さのデータをコピーする読み出しコントローラと、
該シンクロナイザの中または外へのアンダーフロー状態またはオーバーフロー状態を検出する手段であって、オーバーフロー状態が検出されるとき、キャプチャデバイスにブロッキングコールを送信することによってクロックドリフトを補償し、アンダーフロー状態が検出されるとき、プレイバックデバイスにブロッキングコールを送信することによって該クロックドリフトを補償する手段と
を備える、システム。
【００３４】
（項目２７）
上記キャプチャデバイスは、デバイスドライバと通信し、
該デバイスドライバは、２つの異なるデバイス間の動作互換性を確保するために、データフォーマットを異なるデータフォーマットに翻訳する手段を備える、項目２６に記載のシステム。
【００３５】
（項目２８）
上記アンダーフローまたはオーバーフロー状態を検出する上記手段は、非同期インターバルでクロックドリフトを補償する、項目２６に記載のシステム。
【００３６】
（項目２９）
上記シンクロナイザは、車両に結合される、項目２６に記載のシステム。
【００３７】
（項目３０）
上記シンクロナイザは、公けにアクセス可能なネットワークと通信する、項目２６に記載のシステム。
【００３８】
（摘要）
システムは、第一のデバイスと第二のデバイスとの間でのデータフローを同期化する。該システムは、バスを介してデータを送受信可能な２つ以上のデバイスを接続するデータリンクを含む。キャプチャデバイスは、情報を感知して、該バスシステムを介して該情報を転送する。リングバッファは、該バスを介して送信されたデータを一時的に格納する。読み出しコントローラは、該受信されたデータの長さと異なる長さのデータをコピーまたは再構築する。モニタは、該リングバッファの中または外へのアンダーフロー状態またはオーバーフロー状態を検出し、クロックドリフトを補償する。
【発明を実施するための最良の形態】
【００３９】
（好ましい実施形態の詳細な説明）
同期化システムまたはアプリケーションは、通信媒体を介するデバイス間の情報の交換を改善する。このデバイスまたはアプリケーションは、１つ以上のデバイスにデータを提供し得、その１つ以上のデバイスからデータを受信し得るハードウェアデバイスまたはプログラムを備え得る。このシステムは、大きなブロックサイズを含む所定の長さで、データが通信されることを可能にするが、そのデータを受信または処理し得るコントローラ、プロセッサ、シンクロナイザ、またはメモリの動作に影響を及ぼさない。一部のシステムは、（単一のデジタルサンプルと同じくらい小さいこともあり得る）細かな解像度または非常に細かな解像度の補償を提供する。この補償は、一部のシステムおよびアプリケーションにおいて、ユーザによって制御され得るか、あるいは自動的に起こり得る。一部のシステムは、補償の影響を最小限にする頻繁なタイミングでの同期化を提供する。一部のシステムにおけるモニタまたは自己モニタソフトウェアまたはハードウェアは、データが受信され、処理されるレートにおける差を検出し得る。一部のモニタシステムまたはソフトウェアモジュールは、補償が生じ得る時間またはインターバルを予測し得、補償をスケジューリングし得る。計画的な同期化は、一部のシステムの性能および／または信頼性を改善し得る。
【００４０】
図１は、第一のデバイスドライバ１０２および第二のデバイスドライバ１０４に結合される同期化システムまたはアプリケーション１００である。図１において、デバイスドライバ１０２および１０４は、通信を容易にするハードウェアデバイスまたはソフトウェアコンポーネントを備える。これらのデバイスドライバ１０２および１０４は、アダプタに結合され得る翻訳機を含み得る。翻訳機は、言語またはデータフォーマットを１つ以上の言語またはフォーマットに翻訳し、１つ以上のデバイス間の動作互換性を確保する。デバイスドライバ１０２および１０４によって操作が実行されるシーケンスを判断するタイミングは、２つ以上のクロックを含み得る。図１において、第一のクロックＣ１および第二のクロックＣ２は、データが共有されることを可能にするタイミングパルスの定常ストリームを生成する。一部の同期化システムまたはアプリケーションにおいて、デバイスドライバ１０２および１０４は、タイミング情報を共有または交換しない。
【００４１】
同期化システムまたはアプリケーション１００は、２つのスレッドを介して動作する。図１において、スレッドは、２つの非同期ソフトウェアルーチンまたはハードウェアスレッドを備える。第一のスレッド１０６は、第一のデバイスドライバ１０２への読み出しコールをブロックし（待ち）、第二のスレッド１０８は、第二のデバイスドライバ１０４への書き込みコールをブロックする。これらのスレッド１０６および１０８は、一時的にデータを格納するリングバッファ１１０のようなバッファに、データをプッシュし、そのデータをバッファからプルする。一部のシステムにおいて、リングバッファ１１０は、先入れ先出しストレージデバイスを備える。このデバイスは、コール、読み出し、モニタ、または自己モニタデバイスまたはプログラムが、データを構築および／または構文解析し得るように、アクセスを提供する。リングバッファ１１０は、メモリの連続的なブロックを備え得るか、あるいは読み出され、書き込まれ得る異なるメモリ（例えば、非連続的な）の間に撒き散らされ（ｓｐｉｌｔ）得る。一部のシステムにおいて、リングバッファ１１０は、直接メモリアクセスを提供し、この直接メモリアクセスは、プロセッサの関与しないメモリアクセスを備え、メモリと周辺デバイスとの間で直接データを転送し得る。一部の代替的なシステムにおいて、リングバッファ１１０は、読み出しコール上のブロックを起動し得るオーバーフローロジック（例えば、ハードウェアまたはソフトウェア）を含み得る。一部の同期化アプリケーションおよびシステム１００において、オーバーフローロジックは、アクセスポインタがリングバッファ１１０によって管理された所定のアドレス範囲から外れて移動することを防止し得る。これらの同期化アプリケーションおよびシステム１００において、オーバーフローロジックは、必要なら、ソフトウェア命令またはハードウェア選択を介して、ディセーブル（ｄｉｓａｂｌｅ）にされ得る。
【００４２】
第一のキャプチャデバイス１１２は、入力バスを介して第一のデバイスドライバ１０２と通信する。第一のキャプチャデバイス１１２は、情報を感知し、その情報を書き込みコントローラ１１４に転送する。このコントローラ１１４は、内部バスを介してリングバッファ１１０に書き込み得る。第一のクロックＣ１および第二のクロックＣ２が、同一の周波数で動作している場合、モニタまたは自己モニタソフトウェアまたはハードウェア１１６は、リングバッファ１１０内に格納される一定のデータ長を検出し得る。この２つのクロックレートが等しくないとき、あるいは異なるレートまたは周波数で動作しているとき、リングバッファ１１０内に格納されるデータ量は、クロックＣ１およびＣ２の速度に依存して増加または減少し得る。
【００４３】
データがリングバッファ１１０の中に流れると、そのデータは、読み出しコントローラ１１８によって内部バスを介して読み出され得る。読み出しコントローラ１１８は、格納されたデータを再構築またはコピーするように構成され得、出力バスを介して、そのデータを第二のデバイスドライバ１０４に送信し得る。読み出しコントローラ１１８を備えるソフトウェアまたはデバイスは、そのデータを再構築または複製し得、そのデータを所定または所望の長さで、第二のデバイスドライバ１０４に送信する。
【００４４】
一部の同期化システムまたはアプリケーション１００は、実質的に等しい長さの情報を送受信し得る。これらのシステムおよびアプリケーション１００において、モニタまたは自己モニタソフトウェアまたはハードウェア１１６は、受信または送信されるデータ長と同じくらいのサイズである解像度で、そのリングバッファ１１０のサイズの変化を検出または観察し得る。図２において、解像度は、「ｓ１」で指定される。変化は、（サンプリングレートおよびビット解像度に依存して、所定の時間量に対応する）バイトのように、「ｓ１」の長さごとに観察され得るのみなので、クロックドリフト補償は、データが送信、または処理、あるいは受信されるインターバルで、データストリームに付与され得る。図２において、インターバルは、「ｓ１」の長さの倍数または約数であり得る。一部の同期化システムまたはアプリケーションにおいて、タイミング条件が不完全なとき、データのアンダーフローまたはオーバーフローが生じ得る。一部の状況において、データの大きなブロックまたはユニットの挿入、複製、および／または除去は、システムまたはアプリケーションを破壊し得る。
【００４５】
また図１に示される代替の同期化システムまたはアプリケーション１００において、システムおよびアプリケーションは、データのデータストリームまたはデータのパケットを、データの不均等なブロックサイズまたは異なるブロックサイズに解体されるように構成される。この代替において、リングバッファ１１０に書き込まれたデータのサイズ（例えば、この説明におけるブロックサイズ）は、リングバッファ１１０から再構築またはコピーされたデータのサイズと等しくないこともあり得る。システムまたはアプリケーション１００において、スレッド１０６および１０８の双方は、それぞれデバイスドライバ１０２および１０４と通信する。反復ソフトウェアまたは通信ループを介して、第一のスレッド１０６は、第一のデバイスドライバ１０２と通信し、第二のスレッド１０８は、第二のデバイスドライバ１０４と通信する。第一のキャプチャデバイス１１２を介して、第一のスレッド１０６は、入力バスを介するデータのブロックをキャプチャする。内部バスを介して、書き込みコントローラ１１４は、この情報を、Ｃ１のインターバルで、ｓ１のブロック長さのリングバッファ１１０の中に書き込む。読み出しコントローラ１１８は、リングバッファ１１０に書き込まれたデータの長さとは異なる長さのデータのチャンク（ｃｈｕｎｋ）を読み出し、コピーまたは再構築しているので、モニタまたは自己モニタ（例えば、ソフトウェアコンポーネントまたはハードウェアデバイス）１１６は、リングバッファ１１０の中に流れるデータのオーバーフロー、またはリングバッファ１１０から外へ流れるアンダーフローを検出し得る。図３において、自己モニタ１１６は、タイミングよく、リングバッファ１１０内に格納されたデータの量の増加を検出した。リングバッファ１１０から読み出されたデータのブロックまたはフレームの長さｓ２が、リングバッファ１１０に書き込まれたデータのブロックまたはフレームの長さｓ１より大きいとき、補償ファクタｓ３は、一部のシステムおよびアプリケーションにおいて、式１によって計算され得る。図３において、被除数は、ｓ１を含み、除数はｓ２を含み、
ｓ３＝剰余（ｓ２／ｓ１）  （ここで、ｓ２＞ｓ１）      式１
である。モニタまたは自己モニタ１１６は、時間を導出して、これらの差を補償し得る。一つのシステムまたはアプリケーションは、リングバッファ内に格納されたデータの量をトラックし、Ｎ点ウィンドウ付き平均（Ｎ−ｐａｔｈ  ｗｉｎｄｏｗｅｄ  ａｖｅｒａｇｅ）を計算する。ここで、Ｎは、式２：
Ｎ＝（（ｓ２／ｓ３）−１）      式２
で示される。
【００４６】
図４に示すように、２つのクロック間のドリフトは、ｓ３バイトの解像度で観察され得る。ｓ３は、ユーザによって選択され得るか、あるいはシステムまたはアプリケーション設計によって決定され得る２つのブロックまたはフレームサイズｓ１およびｓ２から導出されるので、クロックドリフトの補償の任意の所望の解像度が、獲得され得る。このシステムは、（再び、一部のシステムおよびアプリケーションにおける２つのクロックの相対的速度に依存して）、リングバッファ内のデータを挿入または除去することによって、クロックドリフトを補償され得る。ｓ３は、望まれるように小さくされ得るので、その結果生じるデータストリームへの混乱（ｄｉｓｒｕｐｔｉｏｎ）は、最小化され得る。
【００４７】
図５は、代替の同期化システムまたはアプリケーション５００である。このシステムまたはアプリケーション５００は、マスタ／スレーブ配置で構成される。ここで、マスタスレッド５０２と呼ばれる１つのスレッドは、スレーブスレッド５０４と呼ばれる別のスレッドを制御する。図５において、キャプチャデバイス１１２は、入力バスを介して、第一のデバイスドライバ１０２と通信する。キャプチャデバイス１１２は、データのブロックまたはフレームを検出し得、それを書き込みコントローラ５０６に送信し得る。書き込みコントローラ５０６は、そのデータのブロックまたはフレームをシンクロナイザ５０８に書き込み得る。シンクロナイザ５０８は、情報が２つ、３つ、４つ、またはそれ以上のデバイスで処理されるレート間の差を補償するストレージデバイスを備え得る。デバイスドライバ１０２および１０４を駆動するタイミング信号が、異なる周波数で発生するとき、モニタ５１２（例えば、ソフトウェアルーチンまたはハードウェアモジュール）は、シンクロナイザ５０８内のストレージ容量の変化を検出し得る。異なるブロックサイズが、シンクロナイザ５０８に書き込まれるとき、あるいはシンクロナイザ５０８から読み出されるとき、モニタ５１２は、ストレージ使用の変化を観察し得る。オーバーフローが生じている場合、あるいは代替として、オーバーフローが生じそうであるか、または生じる寸前である場合、モニタ５１２は、キャプチャデバイス１１２が、第一のデバイスドライバ１０２からのデータをグラブ（ｇｒａｂ）するのを防止するブロッキングコールを送信し得る。代替として、または組み合わせて、モニタ５１２は、シンクロナイザ５０８に、格納されたデータのブロックまたはフレームに上書きするように命令し得るか、あるいは書き込みコントローラ５０６に、リモートであるが、シンクロナイザ５０８と通信中であり得る補助メモリに書き込むように指示し得る。アンダーフローが生じている場合、あるいは代替として、アンダーフローが生じそうであるか、または生じる寸前である場合、モニタ５１２は、第二のブロッキングコールを送信することにより、プレイバックデバイス１２０が、デバイスドライバ１０４に情報を送信するのを防止し得る。代替として、アンダーフロー状態が沈静化するか、終了するまでに、データのブロックまたはフレームを繰り返すか、あるいは複製するように、命令し得る。
【００４８】
動作において、シンクロナイザ５０８へのデータフローは、読み出しコントローラ５１０によって、内部バスを介して、読み出され得る。同期化システムまたはアプリケーション５００は、オーバーフローまたはアンダーフロー状態を補償しない場合、読み出しコントローラ５１０は、出力データをコピーまたは再構築し、そのデータを出力バスを介して、補償することなしに、１つ以上のデバイスまたはデバイスドライバに送信する。通信は、内部バス、読み出しコントローラ５１０、プレイバックデバイス１２０、および出力バスを介して生じ得る。代替として、補償および送信処理は、同時に、またはほぼ同時に、あるいは異なるときに、生じ得る。
【００４９】
同期化システムおよびアプリケーション１００および５００は、多数のデバイス、デバイスドライバ、およびインターフェース（例えば、接続がなされるポイント）に適応可能である。一部のスピーチ同期化システムまたはアプリケーションは、人または物を輸送するデバイスまたは構造（例えば、図６に示される車両）、図７に示されるような公的または私的なアクセス可能なネットワーク、図８に示されるような陸線および無線電話ならびにオーディオシステムのように、声および他の音をリモートなロケーションに送信され、そこで再構成され得る形式に変換する機器（ｉｎｓｔｒｕｍｅｎｔ）、図９に示されるようなビデオシステムと、図１０のノイズ低減システム、ナビゲーションシステムを含むクロックドリフトに敏感であり得る他の固定または移動システムと、インターフェースするか、通信するか、あるいは結合する。同期化システムまたはアプリケーションは、（例えば、ｉＰｏｄ（登録商標）のような）携帯型のアナログまたはデジタルのオーディオおよび／またはビデオプレイヤ、ナビゲーションシステム、あるいはスピーチ強化システムを含むか、インターフェースするか、またはスピーチ強化ロジックを保持するマルチメディアシステムとインターフェースし得る。同期化システムおよびアプリケーションは、また、上述のシステムのコンポーネントの一部または全部をインプリメントするデジタル信号処理システム内で、データ転送を同期化し得る。
【００５０】
図１１は、２つ以上のデバイス間のデータ転送を同期化し得る同期化処理の流れ図である。デジタル信号処理技術が使用されるとき、処理は、１つのデジタルサンプルと同じくらい小さなものを介して、クロックドリフトを補償し得て、ユーザによってプログラムされ得るか、自動的に生じ得るか、あるいは非同期な時間に生じ得る頻繁な間隔で、データストリームを同期化し得る。この方法は、データストリームまたはデータのパケットを、不均等な、または異なるデータのブロックサイズ（一部は、長さにおいて、実質的に、あるいはほぼ等しい）に解体し得る。図１１に示される同期化処理において、リングバッファ、シンクロナイザ、またはストレージデバイスに書き込まれたデータのサイズのそれぞれは（例えば、この説明のブロックサイズ）、リングバッファ、シンクロナイザ、またはストレージデバイスのそれぞれから再構築またはコピーされたデータのサイズと等しくない。図１１において、スレッドは、インターフェースまたはデバイスドライバを含み得るデバイスと通信する。第一のスレッドは、第一のデバイスと通信し、第二のスレッドは、第二のデバイスと通信する。スレッドを介する通信は、状態が検出されるまで、繰り返し生じ得る。図１１において、状態は、データフローがないこと、あるいはプログラムされ得る別の状態を備え得る。
【００５１】
１１０２で、データがキャプチャされる。データは、１つ以上のデバイスから受信されたデータのブロックまたはフレームを備え得る。１つ以上のハードウェア経路を介して、１１０４で、時限インターバルに、データがブロック長さで、リングバッファ、シンクロナイザ、またはストレージデバイスに書き込まれる。データは、リングバッファ、シンクロナイザ、またはストレージデバイスに書き込まれたデータと異なる長さで、再構築またはコピーされるので、モニタまたは自己モニタ（例えば、ソフトウェアルーチンまたはハードウェアデバイス）は、１１０６で、リングバッファの中に流れるデータのオーバーフロー、またはリングバッファから外へ流れるデータのアンダーフローを検出し得る。図１１で、自己モニタは、リングバッファ、シンクロナイザ、またはストレージデバイスに、タイミングよく格納されたデータの量の増加を検出し得る。リングバッファ、シンクロナイザ、またはストレージデバイスから読み出されたデータのブロックまたはデータのフレームの長さｓ２が、リングバッファ、シンクロナイザ、またはストレージデバイスに書き込まれたデータのブロックまたはデータのフレームの長さｓ１より大きいとき、補償ファクタｓ３は、１１０８で導出され得る。任意のファクタが、導出され得るが、１つのファクタは、式１によって、幾つかの処理で計算され得る。式１において、被除数は、ｓ１を含み、除数はｓ２を含む。
ｓ３＝剰余（ｓ２／ｓ１）  （ここで、ｓ２＞ｓ１）      式１
モニタまたは自己モニタは、１１０８で、時間を導出して、これらの差を補償し得る。１つの方法は、リングバッファ、シンクロナイザ、またはストレージデバイスのサイズをトラックし得、Ｎ点ウィンドウ付き平均を計算する。Ｎは、式２
Ｎ＝（（ｓ２／ｓ３）−１）      式２
として示される。
【００５２】
２つのクロック間のドリフトは、ｓ３バイトの解像度で観察され得る。ｓ３は、（ユーザによって選択またはプログラムされ得るか、あるいはシステムまたはアプリケーションの設計によって決定され得る）２つのブロックまたはフレームのサイズｓ１およびｓ２から導出されるので、クロックドリフトにおける任意の解像度が、取得され得る。この方法は、次いで、１１１２で、データを挿入し（例えば、アンダーフロー状態１１１０に対する例示的な補償）、データを除去し、データを削除し、リングバッファ、シンクロナイザ、またはストレージデバイスから出力に読み出されたデータを構文解析する（再び、一部の方法で２つのクロックの相対的な速度に依存し得る）ことによって、クロックドリフトを補償し得る。ｓ３は、ユーザが望むように小さくあり得るので、その結果生じるデータストリームへの混乱は、最小化され得る。
【００５３】
図１１の方法は、信号保持媒体、メモリのようなコンピュータ読み出し可能な媒体で、コード化され得、１つ以上の集積回路、１つ以上のプロセッサのようなデバイス（例えば、プロセッサのそれぞれまたは一部と通信するデバイスキャプチャプロセッサ、書き込みコントローラプロセッサ、モニタプロセッサ、読み出しコントローラプロセッサ、プレイバック制御プロセッサ）内にプログラムされ得、あるいはコントローラまたはコンピュータによって処理され得る。この方法が、ソフトウェアによって実行される場合、ソフトウェアは、ストレージデバイス、シンクロナイザ、通信インターフェース、あるいは送信機と通信する不揮発性または揮発性メモリに常駐またはインターフェースするメモリに、常駐し得る。回路または電子デバイスは、別のロケーションにデータを送信するように設計される。メモリは、ロジカル機能をインプリメントするための実行可能な命令の順序だったリストを含み得る。上述のロジカル機能または任意のシステムエレメントは、光学回路網、デジタル回路網を介して、ソースコードを介して、アナログ回路網を介して、アナログの電気信号、オーディオ信号、またはビデオ信号またはその組み合わせのようなアナログソースを介して、インプリメントされ得る。ソフトウェアは、任意のコンピュータ読み出し可能な媒体または信号保持媒体において、命令実行可能なシステム、装置、またはデバイスによって使用するために、あるいはこれらと接続して、具現化され得る。このようなシステムは、コンピュータベースのシステム、プロセッサを含むシステム、あるいは命令実行可能なシステム、装置、またはデバイスからの命令を選択的に取り出し（ｆｅｔｃｈ）得て、自身も命令を実行し得る別のシステムを含み得る。
【００５４】
「コンピュータ読み出し可能な媒体」、「マシン読み出し可能な媒体」、「伝播信号」媒体、および／または「信号保持媒体」は、命令実行可能なシステム、装置、またはデバイスによって使用するためのソフトウェア、またはこれらと接続するソフトウェアを含むか、格納するか、通信するか、伝播するか、あるいは運搬する、任意のデバイスを備え得る。マシン読み出し可能な媒体は、選択的に、電気、磁気、光学、電磁気、赤外線、または半導体のシステム、装置、デバイス、または伝播媒体であり得るが、これらに限定されない。マシン読み出し可能な媒体の例の非網羅的なリストは、１つ以上のワイヤを有する「電子的」電気接続、携帯型の磁気または光学ディスク、ランダムアクセスメモリ「ＲＡＭ」（電子）のような揮発性メモリ、読み出し専用メモリ「ＲＯＭ」（電子）、消去可能なプログラマブル読み出し専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）（電子）、または光ファイバ（光学）を含む。マシン読み出し可能な媒体は、有形媒体を含み得、ソフトウェアが、（例えば、光学スキャンによって）画像または他のフォーマットとして電子的に格納され得る際に、その有形媒体上に印刷され、次いで、編集および／または解釈されるか、あるいはそれら以外の処理がなされ得る。処理された媒体は、次いで、コンピュータおよび／またはマシンのメモリに格納され得る。
【００５５】
上述の同期化システムまたは方法は、ユーザによって選択またはプログラムされ得るか、あるいはシステムまたはアプリケーションの設計によって決定され得る。補償の任意の所望の解像度は、非同期または同期なインターバルで、システム、アプリケーション、または方法によって取得され得る。このシステムは、主ストレージデバイスまたは補助ストレージデバイスにおいて、データを挿入、除去、削除、構文解析することによって、あるいはこれらを組み合わせることによって、クロックドリフトを補償し得る。補償の所望の解像度は、ユーザまたはプログラマが望むように、小さくされ得る。結果として生じるデータストリームへの混乱はいずれも、最小化され得る。
【００５６】
このシステムまたはアプリケーションは、通信媒体を介するデバイス間の情報の交換を改善する。このシステムは、大きなブロックサイズを含む所定の長さで、データが通信されることを可能にするが、そのデータの受信または処理し得るデバイスに影響を及ぼさない。一部のシステムは、（単一のデジタルサンプルと同じくらい小さいこともあり得る）細かな解像度または非常に細かな解像度補償を提供する。この補償は、一部のシステムおよびアプリケーションにおいて、ユーザによって制御され得るか、あるいは自動的に起こり得る。一部のシステムは、補償の影響を最小限にする頻繁なタイミングでの再発生同期化を提供する。一部のシステムにおけるモニタまたは自己モニタソフトウェアまたはハードウェアは、データが受信され、処理されるレートにおける差を検出し得る。一部のモニタシステムまたはソフトウェアモジュールは、補償が生じ得る時間またはインターバルを予測し得、補償をスケジューリングし得る。
【００５７】
本発明の様々な実施形態が記載されてきたが、多数のさらなる実施形態およびインプリメンテーションが、本発明の範囲内で可能であることは、当業者には明らかである。したがって、本発明は、添付される請求項およびその均等物との観点以外によって、制約されるべきではない。
【図面の簡単な説明】
【００５８】
【図１】図１は、デバイスドライバに結合された同期化システムである。
【図２】図２は、等しいブロックサイズに対するリングバッファサイズ対時間を示す。
【図３】図３は、等しくないブロックサイズに対するリングバッファサイズ対時間を示す。
【図４】図４は、図３の時間にわたるウィンドウ付き平均である。
【図５】図５は、デバイスドライバに結合された代替の同期化システムである。
【図６】図６は、車両と通信する同期化システム、あるいは車両に結合された同期化システムである。
【図７】図７は、ネットワークと通信する同期化システム、あるいはネットワークに結合された同期化システムである。
【図８】図８は、電話と通信する同期化システム、あるいは電話に結合された同期化システムである。
【図９】図９は、ビデオシステムと通信する同期化システム、あるいはビデオシステムに結合された同期化システムである。
【図１０】図１０は、ノイズ低減システムと通信する同期化システム、あるいはノイズ低減システムに結合された同期化システムである。
【図１１】図１１は、同期化処理である。
【符号の説明】
【００５９】
１００、５００  同期化システムまたはアプリケーション
１０２  第一のデバイスドライバ
１０４  第二のデバイスドライバ
１０６  第一のスレッド
１０８  第二のスレッド
１１０  リングバッファ
１１２  第一のキャプチャデバイス
１１４、５０６  書き込みコントローラ
１１６、５１２  モニタ
１１８、５１０  読み出しコントローラ
１２０  プレイバックデバイス
５０２  マスタスレッド
５０４  スレーブスレッド
５０８  シンクロナイザ
Ｃ１、Ｃ２  クロック
【図１】
2008048392.tif 000003
【図２】
2008048392.tif 000004
【図３】
2008048392.tif 000005
【図４】
2008048392.tif 000006
【図５】
2008048392.tif 000007
【図６】
2008048392.tif 000008
【図７】
2008048392.tif 000009
【図８】
2008048392.tif 000010
【図９】
2008048392.tif 000011
【図１０】
2008048392.tif 000012
【図１１】
2008048392.tif 000013