(57)【要約】【課題】入力データストリームに関して操作を実行するデータ処理システムを提供する。【解決手段】複数のデータ処理タスクを実行するように動作可能なメイン処理装置と、メイン処理装置に代わって複数のデータ処理タスクを実行するように動作可能なデータエンジンコアを有するデータエンジンと、メイン処理装置とデータエンジンコアとの間のデータ通信経路を提供するデータストリーム処理装置とを備えるデータ処理システムが提供される。データストリーム処理装置は、データエンジンコアから命令を受信するように動作可能な制御インタフェースと、入力データストリームを受信し、出力データストリームを生成するために、入力データストリームに関して操作を実行するように動作可能なデータストリーム制御器とを備え、少なくとも１つの操作を実行するようにデータストリーム制御器を制御するために、データエンジンコアからの少なくとも１つの命令に応答する。【選択図】図３
2006313546.tif 000002
【特許請求の範囲】
【請求項１】
(i)複数のデータ処理タスクを実行するように動作可能なメイン処理装置と、
(ii)前記メイン処理装置に成り代わって前記複数のデータ処理タスクのいくつかを実行するように動作可能なデータエンジンコアを有するデータエンジンと、
(iii)前記メイン処理装置と前記データエンジンコアとの間のデータ通信経路を提供するデータストリーム処理装置とを備え、
前記データストリーム処理装置が、
(a)前記データエンジンコアから少なくとも１つの命令を受信するように動作可能な制御インタフェースと、
(b)少なくとも１つの入力データストリームを受信すると共に、一連のデータ要素を含む少なくとも１つの出力データストリームを生成するために、前記少なくとも１つの入力データストリームに関して少なくとも１つの操作を実行するように動作可能なデータストリーム制御器とを備え、
前記データストリーム処理装置が、前記少なくとも１つの操作を実行するように前記データストリーム制御器を制御するために、前記データエンジンコアからの前記少なくとも１つの命令に応答する
ことを特徴とするデータストリーム処理システム。
【請求項２】
前記データストリーム処理装置が、前記少なくとも１つの入力データストリームにおける少なくとも１つの基準位置を含む管理情報を保存するように動作可能であると共に、
前記データストリーム処理装置が、前記少なくとも１つの基準位置に基づいて、少なくとも１つの命令を実行する
ことを特徴とする請求項１に記載のデータストリーム処理システム。
【請求項３】
前記データエンジンコアによって実行されるデータ処理タスクのいくつかが、前記データエンジンコアによって実行可能な命令セットの少なくとも１つの命令を含む一連の命令を含み、
前記データエンジンコアが、前記少なくとも１つの命令の実行に関して、前記少なくとも１つの命令を前記データストリーム処理装置の前記制御インタフェースに出力するように動作可能である
ことを特徴とする請求項１に記載のデータストリーム処理システム。
【請求項４】
前記入力データストリームが、規則の所定のセットに従って構造化されたマルチメディアデータストリームであると共に、
前記命令セットが、前記規則の所定のセットに基づいて定義される
ことを特徴とする請求項３に記載のデータストリーム処理システム。
【請求項５】
前記データストリーム処理装置が、前記データストリーム制御器による前記入力データストリームの受信に関して、もしくは前記出力データストリーム要素の送信に関して、前記少なくとも１つの命令に従って非同期的に動作するように動作可能である
ことを特徴とする請求項１に記載のデータストリーム処理システム。
【請求項６】
前記データストリーム制御器が、前記データエンジン、及び構成情報を備える前記メイン処理装置のうちの少なくとも１つによって構成可能である
ことを特徴とする請求項１に記載のデータストリーム処理システム。
【請求項７】
前記データストリーム制御器が、前記少なくとも１つの操作を実行しているとき、前記少なくとも１つの入力データストリームの少なくとも一部分を、接続されたバッファリングリソース内に選択的にバッファするように動作可能である
ことを特徴とする請求項１に記載のデータストリーム処理システム。
【請求項８】
前記データストリーム処理装置が、前記バッファリングリソースから選択的にデータを出力するように動作可能なマルチプレクサを有するデータ出力ロジック回路を備えると共に、
前記データストリーム制御器が、前記少なくとも１つの出力データストリームを生成するために、前記マルチプレクサの出力を制御するように動作可能である
ことを特徴とする請求項７に記載のデータストリーム処理システム。
【請求項９】
前記接続されたバッファリングリソースが、ソフトウェアＦＩＦＯである
ことを特徴とする請求項７に記載のデータストリーム処理システム。
【請求項１０】
前記データストリーム制御器が、前記少なくとも１つの入力データストリームのどの部分が前記接続されたバッファリングリソースに現在記憶されているかという履歴を保存するように動作可能である
ことを特徴とする請求項７に記載のデータストリーム処理システム。
【請求項１１】
前記データストリーム制御器が、前記データエンジン、及び構成情報を備える前記メイン処理装置のうちの少なくとも１つによって構成可能であると共に、
前記構成情報が、前記データストリーム制御器と接続された前記バッファリングリソースのサイズを含む
ことを特徴とする請求項７に記載のデータストリーム処理システム。
【請求項１２】
前記データストリーム処理装置が、データ経路を処理モジュールに提供する処理インタフェースを備えると共に、
前記処理モジュールが、前記データプロセッサコアによって実行可能な前記命令セットの少なくとも１つの命令の実行に応答して、処理タスクを実行するように動作可能である
ことを特徴とする請求項１に記載のデータストリーム処理システム。
【請求項１３】
前記データストリーム制御器が、前記データエンジン、及び構成情報を備える前記メイン処理装置のうちの少なくとも１つによって構成可能であると共に、
前記データエンジン、及び前記メイン処理装置のうちの少なくとも１つによって前記データストリーム処理装置に供給された前記構成情報が、少なくとも１つの前記処理リソースの特性を含む
ことを特徴とする請求項１２に記載のデータストリーム処理システム。
【請求項１４】
前記データストリーム制御器が、前記データエンジン、及び構成情報を備える前記メイン処理装置のうちの少なくとも１つによって構成可能であると共に、
前記データエンジン、及び前記メイン処理装置のうちの少なくとも１つによって前記データストリーム処理装置に提供された前記構成情報が、前記データストリーム制御器と接続された前記バッファリングリソースのスタート地点、及びエンド地点を含む
ことを特徴とする請求項７に記載のデータストリーム処理システム。
【請求項１５】
前記少なくとも１つの入力データストリームが、入力の一時的なシーケンスに順序よく配置された複数のデータ部分を含むと共に、
前記少なくとも１つの出力データストリームが、前記入力の一時的なシーケンスと異なる出力の一時的なシーケンスに順序よく配置された、前記入力の一時的なシーケンスの前記複数のデータ部分を含む
ことを特徴とする請求項１に記載のデータストリーム処理システム。
【請求項１６】
前記データエンジンコアによって実行可能な前記命令セットの前記少なくとも１つの命令が、条件付きの応答を有する命令か、無条件の応答を有する命令のいずれかである
ことを特徴とする請求項３に記載のデータストリーム処理システム。
【請求項１７】
前記少なくとも１つの命令が、前記データストリーム機能装置によって出力された前記少なくとも１つの命令に応答して前記データストリーム制御器によって実行されるべきそれぞれの処理に対応すると共に、
前記それぞれの処理が、前記データストリーム制御器によって維持される、関連する状態機械を備える
ことを特徴とする請求項３に記載のデータストリーム処理システム。
【請求項１８】
前記データストリーム処理装置が、前記少なくとも１つの入力データストリームにおける少なくとも１つの基準位置を含む管理情報を保存するように動作可能であると共に、
前記データストリーム処理装置が、前記少なくとも１つの基準位置に基づいて、少なくとも１つの命令を実行し、
前記データエンジンコアによって実行可能な前記命令セットが、前記データストリーム制御器に、選択的に前記少なくとも１つの入力データストリームのデータ部分をバッファさせるように動作可能なバッファリング命令を含む
ことを特徴とする請求項７に記載のデータストリーム処理システム。
【請求項１９】
前記データエンジンコアによって実行可能な前記命令セットが、前記データストリーム制御器に、前記バッファリングリソースから前記少なくとも１つの入力データストリームの少なくとも１つのデータ要素を読み出させると共に、前記少なくとも１つの出力データストリームに対して前記少なくとも１つのデータ要素を出力させるように動作可能なデータ読み出し命令を含む
ことを特徴とする請求項２に記載のデータストリーム処理システム。
【請求項２０】
前記管理情報が、前記データストリーム制御器によって前記少なくとも１つの出力データストリームに対して次に供給されるべき、前記少なくとも１つの入力データストリームのうちの１つにおけるデータを示す少なくとも現在の出力位置を含む
ことを特徴とする請求項２に記載のデータストリーム処理システム。
【請求項２１】
前記データエンジンコアによって実行可能な前記命令セットが、対応する入力データストリームと関連付けられた入力の一時的なシーケンスにおける以前の地点のデータ要素と現在の出力位置が対応するように、前記現在の出力位置を変更させるように動作可能な後退命令を含む
ことを特徴とする請求項２に記載のデータストリーム処理システム。
【請求項２２】
前記データストリーム処理装置が、前記少なくとも１つの入力データストリームにおける少なくとも１つの基準位置を含む管理情報を保存するように動作可能であると共に、
前記データストリーム処理装置が、前記少なくとも１つの基準位置に基づいて、少なくとも１つの命令を実行し、
前記管理情報が、前記少なくとも１つの入力データストリームのどのデータ要素が前記バッファリングリソースに記憶されたかを示す履歴、及び前記少なくとも１つの入力データストリームのどのデータ要素が前記データストリーム制御器によって受信されたかを示す履歴のうちの少なくとも１つを含む
ことを特徴とする請求項７に記載のデータストリーム処理システム。
【請求項２３】
前記データエンジンコアによって実行可能な前記命令セットが、前記データストリーム制御器に、前記データエンジンからのデータを前記少なくとも１つの出力データストリームに挿入させるように動作可能なデータ挿入命令を含む
ことを特徴とする請求項２に記載のデータストリーム処理システム。
【請求項２４】
前記データストリーム制御器に対する前記少なくとも１つの入力データストリームの供給のためのデータ通信経路を直接メモリアクセス制御器に提供するように動作可能な直接メモリアクセスインタフェースを備える
ことを特徴とする請求項１に記載のデータストリーム処理システム。
【請求項２５】
前記データストリーム制御器が、前記データエンジン、及び構成情報を備える前記メイン処理装置のうちの少なくとも１つによって構成可能であると共に、
前記構成情報が、前記直接メモリアクセス制御器の少なくとも１つの特性を含む
ことを特徴とする請求項２４に記載のデータストリーム処理システム。
【請求項２６】
前記データストリーム処理装置が、前記データストリーム制御器が前記記憶されたデータ要素を前記少なくとも１つの出力データストリームに供給する前に、前記少なくとも１つの入力データストリームのデータ要素を一時的に記憶するためのデータ入力レジスタを備える
ことを特徴とする請求項１に記載のデータストリーム処理システム。
【請求項２７】
前記データエンジンコアによって実行可能な前記命令セットが、カウント設定命令と関連付けられた命令がデータエンジンコアから前記データストリーム処理装置に送信される瞬間の前記データポインタの状態に関連して、前記データストリーム処理装置にデータポインタ状態の上限を設定することを命令するように動作可能なカウント設定命令を含む
ことを特徴とする請求項２に記載のデータストリーム処理システム。
【請求項２８】
前記データストリーム処理装置が、前記データエンジンに少なくとも一部組み込まれる
ことを特徴とする請求項１に記載のデータストリーム処理システム。
【請求項２９】
複数のデータ処理タスクを実行するように動作可能なメイン処理装置と、前記メイン処理装置に成り代わって前記複数のデータ処理タスクのいくつかを実行するように動作可能なデータエンジンコアを有するデータエンジンとの間のデータ通信経路を提供するためのデータストリーム処理装置であって、
前記データストリーム処理装置が、
(a)前記データエンジンコアから少なくとも１つの命令を受信するように動作可能な制御インタフェースと、
(b)少なくとも１つの入力データストリームを受信すると共に、一連のデータ要素を含む少なくとも１つの出力データストリームを生成するために、前記少なくとも１つの入力データストリームに関して少なくとも１つの操作を実行するように動作可能なデータストリーム制御器とを備え、
前記データストリーム処理装置が、前記少なくとも１つの操作を実行するように前記データストリーム制御器を制御するために、前記データエンジンコアからの前記少なくとも１つの命令に応答する
ことを特徴とするデータストリーム処理装置。
【請求項３０】
(i)複数のデータ処理タスクをメイン処理装置に割当てる処理と、
(ii)データエンジンコアを有するデータエンジンを使用して、前記メイン処理装置に成り代わって前記複数のデータ処理タスクのいくつかを実行する処理と、
(iii)データストリーム処理装置を使用して、前記メイン処理装置と、前記データエンジンコアとの間のデータ通信経路を提供する処理と、
(iv)前記データエンジンコアからの少なくとも１つの命令を、前記データストリーム処理装置において受信する処理と、
(v)少なくとも１つの入力データストリームを、前記データストリーム処理装置のデータストリーム制御器において受信する処理と、
(vi)一連のデータ要素を含む少なくとも１つの出力データストリームを生成するために、前記少なくとも１つの入力データストリームに関して少なくとも１つの操作を実行する処理とを含み、
前記データストリーム処理装置が、前記少なくとも１つの操作を実行するように前記データストリーム制御器を制御するために、前記データエンジンコアからの前記少なくとも１つの命令に応答する
ことを特徴とするデータストリーム処理方法。
【請求項３１】
(i)複数のデータ処理タスクを実行するように動作可能なメイン処理装置と、
(ii)前記メイン処理装置に成り代わって前記複数のデータ処理タスクのいくつかを実行するように動作可能なデータエンジンコアを有するデータエンジンと、
(iii)前記メイン処理装置と前記データエンジンコアとの間のデータ通信経路を提供するデータストリーム処理装置とを備え、
前記データストリーム処理装置が、
(a)前記データエンジンコアから少なくとも１つの命令を受信するように動作可能な制御インタフェースと、
(b)少なくとも１つのデータストリームに対する第１のインタフェースと、一連のデータ要素を含む少なくとも１つのデータ要素ストリームに対する第２のインタフェースとを有すると共に、前記第１のインタフェースと前記第２のインタフェースとの間のデータ転送を管理するための少なくとも１つの操作を実行するように動作可能であるデータストリーム制御器とを備え、
前記データストリーム処理装置が、前記少なくとも１つの操作を実行するように前記データストリーム制御器を制御するために、前記データエンジンコアからの前記少なくとも１つの命令に応答する
ことを特徴とするデータストリーム処理システム。
【請求項３２】
前記データストリーム処理装置が、前記少なくとも１つのデータストリーム、または前記少なくとも１つのデータ要素ストリームにおける少なくとも１つの基準位置を含む管理情報を保存するように動作可能であると共に、
前記データストリーム処理装置が、前記少なくとも１つの基準位置に基づいて、少なくとも１つの命令を実行する
ことを特徴とする請求項３１に記載のデータストリーム処理システム。
【請求項３３】
前記データエンジンコアによって実行されるデータ処理タスクのいくつかが、前記データエンジンコアによって実行可能な命令セットの少なくとも１つの命令を含む一連の命令を含み、
前記データエンジンコアが、前記少なくとも１つの命令の実行に関して、前記少なくとも１つの命令を前記データストリーム処理装置の前記制御インタフェースに出力するように動作可能である
ことを特徴とする請求項３１、または請求項３２のいずれか１項に記載のデータストリーム処理システム。
【請求項３４】
前記少なくとも１つのデータストリームが、規則の所定のセットに従って構造化されたマルチメディアデータストリームであると共に、
前記命令セットが、前記規則の所定のセットに基づいて定義される
ことを特徴とする請求項３３に記載のデータストリーム処理システム。
【請求項３５】
前記データストリーム処理装置が、前記第１のインタフェースの前記少なくとも１つのデータストリーム、または前記第２のインタフェースの前記少なくとも１つのデータ要素ストリームの受信または送信に関して、前記少なくとも１つの命令に従って非同期的に動作するように動作可能である
ことを特徴とする請求項３１に記載のデータストリーム処理システム。
【請求項３６】
前記データストリーム制御器が、構成情報を備える前記メイン処理装置によって構成可能である
ことを特徴とする請求項３１に記載のデータストリーム処理システム。
【請求項３７】
前記データストリーム制御器が、前記少なくとも１つの操作を実行しているとき、前記少なくとも１つのデータストリーム、または前記少なくとも１つのデータ要素ストリームの少なくとも一部分を、接続されたバッファリングリソース内に選択的にバッファするように動作可能である
ことを特徴とする請求項３１に記載のデータストリーム処理システム。
【請求項３８】
前記データストリーム処理装置が、前記バッファリングリソースから選択的にデータ要素を出力するように動作可能なマルチプレクサを有するデータ出力ロジック回路を備えると共に、
前記データストリーム制御器が、前記少なくとも１つのデータ要素ストリームを生成するために、前記マルチプレクサの出力を制御するように動作可能である
ことを特徴とする請求項３７に記載のデータストリーム処理システム。
【請求項３９】
前記接続されたバッファリングリソースが、ソフトウェアＦＩＦＯである
ことを特徴とする請求項３７に記載のデータストリーム処理システム。
【請求項４０】
前記データストリーム制御器が、前記少なくとも１つのデータストリーム、または前記少なくとも１つのデータ要素ストリームのどの部分が前記接続されたバッファリングリソースに現在記憶されているかという履歴を保存するように動作可能である
ことを特徴とする請求項３７に記載のデータストリーム処理システム。
【請求項４１】
前記データストリーム制御器が、構成情報を備える前記メイン処理装置によって構成可能であると共に、
前記構成情報が、前記データストリーム制御器と接続された前記バッファリングリソースのサイズを含む
ことを特徴とする請求項３７に記載のデータストリーム処理システム。
【請求項４２】
前記データストリーム処理装置が、データ経路を処理モジュールに提供する処理インタフェースを備えると共に、
前記処理モジュールが、前記データプロセッサコアによって実行可能な前記命令セットの少なくとも１つの命令の実行に応答して、処理タスクを実行するように動作可能である
ことを特徴とする請求項３１に記載のデータストリーム処理システム。
【請求項４３】
前記データストリーム制御器が、構成情報を備える前記メイン処理装置によって構成可能であると共に、
前記メイン処理装置によって前記データストリーム処理装置に供給された前記構成情報が、少なくとも１つの前記処理リソースの特性を含む
ことを特徴とする請求項４２に記載のデータストリーム処理システム。
【請求項４４】
前記データストリーム制御器が、構成情報を備える前記メイン処理装置によって構成可能であると共に、
前記メイン処理装置によって前記データストリーム処理装置に提供された前記構成情報が、前記データストリーム制御器と接続された前記バッファリングリソースのスタート地点、及びエンド地点を含む
ことを特徴とする請求項３７に記載のデータストリーム処理システム。
【請求項４５】
前記少なくとも１つのデータストリームが、第１の一時的なシーケンスに順序よく配置された複数のデータ要素を含むと共に、
前記少なくとも１つのデータ要素ストリームが、前記第１の一時的なシーケンスと異なる第２の一時的なシーケンスに順序よく配置された、前記第１の一時的なシーケンスの前記複数のデータ要素を含む
ことを特徴とする請求項３１に記載のデータストリーム処理システム。
【請求項４６】
前記データエンジンコアによって実行可能な前記命令セットの前記少なくとも１つの命令が、条件付きの応答を有する命令か、無条件の応答を有する命令のいずれかである
ことを特徴とする請求項３３に記載のデータストリーム処理システム。
【請求項４７】
前記少なくとも１つの命令が、前記データストリーム機能装置によって出力された前記少なくとも１つの命令に応答して前記データストリーム制御器によって実行されるべきそれぞれの処理に対応すると共に、
前記それぞれの処理が、前記データストリーム制御器によって維持される、関連する状態機械を備える
ことを特徴とする請求項３３に記載のデータストリーム処理システム。
【請求項４８】
前記データストリーム処理装置が、前記少なくとも１つのデータストリーム、または前記少なくとも１つのデータ要素ストリームにおける少なくとも１つの基準位置を含む管理情報を保存するように動作可能であると共に、
前記データストリーム処理装置が、前記少なくとも１つの基準位置に基づいて、少なくとも１つの命令を実行し、
前記データエンジンコアによって実行可能な前記命令セットが、前記データストリーム制御器に、選択的に前記少なくとも１つのデータストリーム、または前記少なくとも１つのデータ要素ストリームのデータをバッファさせるように動作可能なバッファリング命令を含む
ことを特徴とする請求項３７に記載のデータストリーム処理システム。
【請求項４９】
前記データエンジンコアによって実行可能な前記命令セットが、前記データストリーム制御器に、前記バッファリングリソースから少なくとも１つのデータ項目を読み出させると共に、前記第１のインタフェースまたは前記第２のインタフェースに対して前記少なくとも１つのデータ項目を出力させるように動作可能なデータ読み出し命令を含む
ことを特徴とする請求項３２に記載のデータストリーム処理システム。
【請求項５０】
前記管理情報が、前記データストリーム制御器によって前記第１のインタフェースまたは前記第２のインタフェースに対して次に供給されるべき、前記少なくとも１つのデータストリーム、または前記少なくとも１つのデータ要素ストリームのうちの１つにおけるデータ項目を示す少なくとも現在の出力位置を含む
ことを特徴とする請求項３２に記載のデータストリーム処理システム。
【請求項５１】
前記データエンジンコアによって実行可能な前記命令セットが、対応する少なくとも１つのデータストリーム、または少なくとも１つのデータ要素ストリームのうちの１つと関連付けられた一時的なシーケンスにおける以前の地点のデータ項目と現在の出力位置が対応するように、前記現在の出力位置を変更させるように動作可能な後退命令を含む
ことを特徴とする請求項３２に記載のデータストリーム処理システム。
【請求項５２】
前記データストリーム処理装置が、前記少なくとも１つのデータストリーム、または前記少なくとも１つのデータ要素ストリームにおける少なくとも１つの基準位置を含む管理情報を保存するように動作可能であると共に、
前記データストリーム処理装置が、前記少なくとも１つの基準位置に基づいて、少なくとも１つの命令を実行し、
前記管理情報が、前記少なくとも１つのデータストリーム、または前記少なくとも１つのデータ要素ストリームのどのデータが前記バッファリングリソースに記憶されたかを示す履歴、及び前記少なくとも１つのデータストリーム、または前記少なくとも１つのデータ要素ストリームのどのデータが前記データストリーム制御器によって受信されたかを示す履歴のうちの少なくとも１つを含む
ことを特徴とする請求項３７に記載のデータストリーム処理システム。
【請求項５３】
前記データエンジンコアによって実行可能な前記命令セットが、前記データストリーム制御器に、前記データエンジンからのデータを前記少なくとも１つのデータストリーム、または前記少なくとも１つのデータ要素ストリームに挿入させるように動作可能なデータ挿入命令を含む
ことを特徴とする請求項３２に記載のデータストリーム処理システム。
【請求項５４】
前記データストリーム制御器に対する前記少なくとも１つのデータストリームの供給のためのデータ通信経路を直接メモリアクセス制御器に提供するように動作可能な直接メモリアクセスインタフェースを備える
ことを特徴とする請求項３１に記載のデータストリーム処理システム。
【請求項５５】
前記データストリーム制御器が、構成情報を備える前記メイン処理装置によって構成可能であると共に、
前記構成情報が、前記直接メモリアクセス制御器の少なくとも１つの特性を含む
ことを特徴とする請求項５４に記載のデータストリーム処理システム。
【請求項５６】
前記データストリーム処理装置が、前記データストリーム制御器が前記記憶されたデータを前記第１のインタフェースまたは前記第２のインタフェースに出力する前に、前記少なくとも１つのデータストリーム、または前記少なくとも１つのデータ要素ストリームのデータを一時的に記憶するためのデータ入力レジスタを備える
ことを特徴とする請求項３１に記載のデータストリーム処理システム。
【請求項５７】
前記データエンジンコアによって実行可能な前記命令セットが、カウント設定命令と関連付けられた命令がデータエンジンコアから前記データストリーム処理装置に送信される瞬間の前記データポインタの状態に関連して、前記データストリーム処理装置にデータポインタ状態の上限を設定することを命令するように動作可能なカウント設定命令を含む
ことを特徴とする請求項３２に記載のデータストリーム処理システム。
【請求項５８】
前記データストリーム処理装置が、前記データエンジンに少なくとも一部組み込まれる
ことを特徴とする請求項３１に記載のデータストリーム処理システム。
【請求項５９】
メイン処理装置とデータエンジンコアとの間のデータ通信経路を提供するためのデータストリーム処理装置であって、
前記データストリーム処理装置が、
前記データエンジンコアから少なくとも１つの命令を受信するように動作可能な制御インタフェースと、
少なくとも１つのデータストリームに対する第１のインタフェースと、一連のデータ要素を含む少なくとも１つのデータ要素ストリームに対する第２のインタフェースとを有すると共に、前記第１のインタフェースと前記第２のインタフェースとの間のデータ転送を管理するための少なくとも１つの操作を実行するように動作可能であるデータストリーム制御器とを備え、
前記データストリーム処理装置が、前記少なくとも１つの操作を実行するように前記データストリーム制御器を制御するために、前記データエンジンコアからの前記少なくとも１つの命令に応答する
ことを特徴とするデータストリーム処理装置。
【請求項６０】
複数のデータ処理タスクをメイン処理装置に割当てる処理と、
データエンジンコアを有するデータエンジンを使用して、前記メイン処理装置に成り代わって前記複数のデータ処理タスクのいくつかを実行する処理と、
データストリーム処理装置を使用して、前記メイン処理装置と、前記データエンジンコアとの間のデータ通信経路を提供する処理と、
前記データエンジンコアからの少なくとも１つの命令を、前記データストリーム処理装置において受信する処理と、
少なくとも１つのデータストリームに対する第１のインタフェースと、データストリーム制御器の少なくとも１つのデータ要素ストリームに対する第２のインタフェースとの間のデータ転送を管理するための少なくとも１つの操作を実行する処理とを含み、
前記データストリーム処理装置が、前記少なくとも１つの操作を実行するように前記データストリーム制御器を制御するために、前記データエンジンコアからの前記少なくとも１つの命令に応答する
ことを特徴とするデータストリーム処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理の分野に関するものである。更に特に、本発明は、１つ以上のデータストリーム上で実行されるべき操作を必要とするデータ処理システムに関するものである。
【背景技術】
【０００２】
データに関する操作を実行することが可能であるデータ処理システムを提供するということが知られており、そのような操作は、双方向、すなわち入力から出力、または出力から入力のデータフローを包含し得ると共に、入力データと出力データの各々は、関連するデータフォーマットを有することができる。双方向のデータフローに関して共通に必要とされるデータストリーム操作の例は、ストリーム上の可変長コード化シンタックス要素の読み出しと同様に、データストリームのデータ位置合せ、バッファリング、先送り及び巻戻し、そしてデータストリームのマージ及び接続機能を含む。同様に、多くの場合、異なる一時的なシーケンスを有する出力のデータストリームを提供するために、すなわちデータストリームに対する命令順変更（out-of-order）アクセスを提供するために、入力の一時的なシーケンスに変更を加えることが必要とされる。実行されるべき操作を必要とするそのようなデータ処理システムの例は、既知のフォーマットに従ってコード化されたオーディオデータ、及び／またはビデオデータを含むマルチメディアデータストリームを処理するためのシステムであり、フォーマットは国際“標準”（例えば、ＭＰ３、またはＭＰＥＧ）によって定義されつつある。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、これらの既知のデータ処理システムは、プログラマが、入力データストリームのどの部分が受信され、操作され、そして出力されたかを記録することのような多数のデータ処理タスクを明白に管理すること、またはデータ処理を実行するための複数の機能を有するソフトウェアライブラリを提供すると共に維持することを要求されるので、プログラマに深刻な負担を負わせる。データ処理の明白な管理も多大な時間を必要とすると共に、ソフトウェアライブラリを提供して維持することも多大な時間を必要とし、非能率的である。従って、更に効率的な方法で、入力データ及び出力データの処理と関連付けられた少なくともいくつかのタスクをプログラマから取り去るデータ処理システムが必要とされる。
【０００４】
メイン処理装置を備えるデータ処理装置において、時々、メイン処理装置に成り代わって特定のデータ処理タスクを処理するために使用され得る疎結合のコプロセッサとも言われる（それがメイン処理装置の外部にあると共に、データエンジンとメイン処理装置との間の同期化が、処理またはタスクレベルに関してのみ実行されるという意味において、疎結合される）データエンジンを提供するということが知られている。この説明において、メイン処理装置（すなわち、メインプロセッサ）という用語は、それが中央演算処理装置（ＣＰＵ）であり得るか、または代わりにデータ処理装置の中の他の単純化された制御要素、例えば、単に起動を制御すると共に、その後、１つ以上のデータエンジンに全ての他のタスクを委託する制御要素であり得ると定義される。データエンジンを提供することは、タスクの全てがメイン処理装置によって処理されるデータ処理装置に関しての様々な性能改良をもたらすことができ、これらの改良は、例えば実行スピードの増加、タスクの特定のセットに関する電力消費量の減少、または要求される機能をサポートするのに必要とされるトータルのシリコン領域の減少のうちの１つ以上である。しかしながら、データストリーム処理タスクは、一般的に計算的に集約されており、データエンジンに割り当てられる時は、データエンジンのコンピュータ処理能力の大部分を消費でき、従って、メイン処理装置に成り代わって他のデータ処理タスクを実行する利用価値を減らす。
【０００５】
２００５年５月４日に出願された米国特許出願番号11/121,185号は、ローカルに記憶されたデータストリームに窓を提供するために使用され得るローカルなファーストインファーストアウト（First-in-First-Out：ＦＩＦＯ）メモリを備えるデータ処理装置について説明する。米国特許出願番号1l/121,185号の内容は、参照によってここに組み込まれる。
【課題を解決するための手段】
【０００６】
第１の特徴によれば、本発明は、複数のデータ処理タスクを実行するように動作可能なメイン処理装置と、前記メイン処理装置に成り代わって前記複数のデータ処理タスクのいくつかを実行するように動作可能なデータエンジンコアを有するデータエンジンと、前記メイン処理装置と前記データエンジンコアとの間のデータ通信経路を提供するデータストリーム処理装置とを備え、前記データストリーム処理装置が、前記データエンジンコアから少なくとも１つの命令を受信するように動作可能な制御インタフェースと、少なくとも１つの入力データストリームを受信すると共に、一連のデータ要素を含む少なくとも１つの出力データストリームを生成するために、前記少なくとも１つの入力データストリームに関して少なくとも１つの操作を実行するように動作可能なデータストリーム制御器とを備え、前記データストリーム処理装置が、前記少なくとも１つの操作を実行するように前記データストリーム制御器を制御するために、前記データエンジンコアからの前記少なくとも１つの命令に応答するデータ処理システムを提供する。
【０００７】
入力データストリーム、及び出力データストリームの各々は、例えば、データエンジン、または（直接的なメモリアクセスのような）外部の処理から提供され得ることに注意が必要である。
【０００８】
本発明は、データストリームの処理が、データエンジンに成り代わって入力データストリームに関する操作を実行するデータストリーム処理装置を提供することによって、更に能率的に実行され得るということを認識する。メイン処理装置によってデータエンジンに割当てられた処理タスクのサブセットが、制御インタフェースを経由してデータストリーム処理装置に委託され得るので、その効率が向上する。少なくともデータストリーム処理操作のサブセットがデータエンジンに成り代わってデータストリーム処理装置によって実行されるので、これは、データエンジンにおける計算処理の負担を減少させる。従って、他のデータ処理操作を実行するためのデータエンジンの容量が増大すると共に、データストリーム処理装置が、データエンジンと並列に処理タスクを実行することができるので、全体の計算効率が向上する。更に、いくつかの単純な処理操作は、結合されて、データストリーム処理装置によって能率的に実行され得る更に複合的な操作になり得る。データストリーム処理装置は、データストリーム内に定義されたシンタックス要素の判定及び復号と同様に、データストリームにおけるデータ位置合せ、バッファリング、巻戻しまたは先送り、そしてデータストリームの接続及びマージのような、データストリーム操作に関するサポートを提供する。このように、データストリーム処理装置は、メイン処理装置及びデータエンジンの負担を軽減するように、データ処理タスクのサブセットを実行するために使用される。効果的に、これは、データストリーム制御器の制御インタフェースが、メイン処理装置からの、もしくはデータエンジンからの更なる介入なしで、それぞれの処理を実行することが可能である状態機械と見なされ得ることを意味する。データストリーム制御器が２つ以上のインタフェースを備える装置において、各インタフェースは、関連する状態機械、及び関連する処理を備えることになると共に、特定の処理は、インタフェースの残りの他のものと関連付けられた状態機械の現在の状態によって変わる可能性がある。複数の状態機械の各々の状態に関する情報は、データストリーム制御器を経由して交換され得る。
【０００９】
データストリーム処理装置は、入力データストリームに関する操作を実行するようにデータストリーム処理装置のデータ制御器を制御するために、データエンジンコアからの（制御信号のような）命令に応答する。入力データストリームに関する１つ以上の操作を実行するために、データエンジンコアからデータストリーム処理操作に命令を送信する能力は、データエンジンコアによって出力された命令を適宜定義することによって、出力データストリームの生成に包含されるいくつかのデータ処理タスクが、プログラマから取り去られることを可能にする。更に、データストリーム処理装置によって入力データストリームに関して実行される制御操作に対する命令を定義する能力は、実行され得る操作の種類において、拡張された柔軟性をプログラマに提供する。
【００１０】
メイン処理装置は、様々な形式をとることができる。例えば、それは中央演算処理装置（ＣＰＵ）であり得るか、または代わりにデータ処理装置の中の他の単純化された制御要素、例えば、単に起動を制御すると共に、その後、１つ以上のデータエンジンに全ての他のタスクを委託する制御要素であり得る。
【００１１】
一実施例において、データストリーム処理装置は、少なくとも１つの入力データストリームにおける少なくとも１つの基準位置を含む管理情報を保存するように動作可能である。データストリーム処理装置は、少なくとも１つの基準位置に基づいて、少なくとも１つの命令を実行する。基準点を保存するというタスクがデータストリーム制御器によって実行されるので、これは、入力データストリームの中のデータ要素に対するアクセスを単純化する。これは、データエンジンコアによりデータストリーム処理装置に対して出力された命令の複雑さを減少させる。
【００１２】
一実施例において、データエンジンコアによって実行されるデータ処理タスクのいくつかは、データエンジンコアによって実行可能な命令セットの少なくとも１つの命令を含む一連の命令を有する。データエンジンコアは、少なくとも１つの命令の実行に関して、少なくとも１つの命令をデータストリーム処理装置の制御インタフェースに対して出力するように動作可能である。データエンジンコアによって実行されるべき処理タスクが命令セットの命令に容易に割り当てられ得るので、これは、データストリーム処理装置とデータエンジンコアとの双方向の情報授受（双方向通信）を単純化する。
【００１３】
一実施例において、入力データストリームは、規則の所定のセットに従って構造化されたマルチメディアデータストリームであると共に、命令セットは、規則の所定のセットに基づいて定義される。規則のセットは、例えば、ＭＰ３標準のようなオーディオデータ標準、またはＭＰＥＧ標準のようなビデオデータ標準と一致するであろう。特定のマルチメディアデータストリームを処理する場合に典型的に実行される処理操作のセットを実行するべく具体的に調整されるように、命令セットを定義する能力は、処理操作の特別なセットに関する処理性能を微調整するための多くの柔軟性を提供する。
【００１４】
一実施例において、データストリーム処理装置は、データストリーム制御器による入力データストリームの受信に関して、もしくは出力データストリーム要素の送信に関して、少なくとも１つの命令に従って非同期的に動作するように動作可能である。これは、入力データストリーム、または出力データストリームに関して処理タスクを実行する場合に、データストリームの到着、もしくは出発における変化量に適合する柔軟性を提供する。
【００１５】
一実施例において、データストリーム制御器は、データエンジン、及び構成情報を備えるメイン処理装置のうちの少なくとも１つによって構成可能である。データストリーム処理装置が、ランタイム中に、メイン処理装置かデータエンジンのいずれかからのこの構成情報を要求する必要性がないので、これは、メイン処理装置からの自立性の拡張されたレベルをデータストリーム処理装置に提供する。
【００１６】
一実施例において、データストリーム制御器は、少なくとも１つの操作を実行しているとき、少なくとも１つのデータストリームの少なくとも一部分を、接続されたバッファリングリソース内に選択的にバッファするように動作可能である。しばらく後での出力のためにデータの一部分がバッファされ得るので、これは、データエンジンにデータストリームに対する命令順変更アクセスを生じさせる効率的な方法を提供する。
【００１７】
一実施例において、データストリーム処理装置は、バッファリングリソースから選択的にデータを出力するように動作可能なマルチプレクサを有するデータ出力ロジック回路を備えると共に、データストリーム制御器は、少なくとも１つの出力データストリームを生成するために、マルチプレクサの出力を制御するように動作可能である。データの選択された部分が、データストリーム処理装置からの命令に応答して、バッファリングに容易に割り当てられ得るので、このシンプルな回路構成は、データフローの効率的で、それにも拘らず効果的な管理を可能にする。
【００１８】
一実施例において、接続されたバッファリングリソースは、ソフトウェアＦＩＦＯである。いくつかのそのような実施例において、メモリ領域は、パーティションポインタによって定義される一方、データへのアクセスは、少なくとも１つのヘッドポインタ、及び少なくとも１つのテールポインタの状態によって制御される。ソフトウェアＦＩＦＯの使用は、バッファされたデータに対する更に急速で、効率的なアクセスを可能にすると共に、データストリーム処理装置が、ヘッドポインタ、及びテールポインタを単に管理することによってバッファリングリソースを管理するのを容易にする。
【００１９】
一実施例において、データストリーム制御器は、少なくとも１つの入力データストリームのどの部分が接続されたバッファリングリソースに現在記憶されているかという履歴を保存するように動作可能である。従って、プログラマは、どこに要求されたデータ部分が記憶されるかという知識を持っている必要がなく、より正確に言うと、プログラマは、データストリームの特定の部分を単に要求し得ると共に、データストリーム処理装置は、データがバッファから読み出される必要があるかどうかを独立して決定し得る。
【００２０】
一実施例において、構成情報は、データストリーム制御器と接続されたバッファリングリソースのサイズを含む。これは、データストリーム処理装置が、更に自立的にバッファリング操作を管理することを可能にすると共に、プログラマ、もしくはデータエンジンが、バッファ占有レベルを記録する必要性を取り除く。
【００２１】
一実施例において、データストリーム処理装置は、データ経路を処理モジュールに提供する処理インタフェースを備えると共に、処理モジュールは、データプロセッサコアによって実行可能な命令セットの少なくとも１つの命令の実行に応答して、処理タスクを実行するように動作可能である。処理インタフェースが、データストリーム処理装置から入力／出力データ要素に対する更なるデータフロー経路を提供するので、これは、データストリーム処理装置の機能性を拡張する。処理モジュールのアクセス可能性によって利用可能にされた処理リソースは、特に効率的方法における復号化のような専門のデータ処理機能を実行するために使用され得る。
【００２２】
一実施例において、データエンジン、及びメイン処理装置のうちの少なくとも１つによってデータストリーム処理装置に供給された構成情報は、少なくとも１つの処理リソースの特性を含む。これは、最初の構成操作の後で、データストリーム処理装置の自立性を増加させ、データストリーム機能装置からの、データストリーム処理タスクを実行する命令に従うためにどの追加の処理リソースがそれに利用可能であるかを決定するために、それはメイン処理装置を参照する必要性がない。
【００２３】
一実施例において、データエンジン、及びメイン処理装置のうちの少なくとも１つによってデータストリーム処理装置に提供された構成情報は、データストリーム制御器と接続されたバッファリングリソースのスタート地点、及びエンド地点を含む。更に、これは、データストリーム操作を実行する際のデータストリーム処理装置の自立性を増加する。
【００２４】
一実施例において、少なくとも１つの入力データストリームは、入力の一時的なシーケンスに順序よく配置された複数のデータ部分を含むと共に、少なくとも１つの出力データストリームは、入力の一時的なシーケンスと異なる出力の一時的なシーケンスに順序よく配置された、入力の一時的なシーケンスの複数のデータ部分を含む。これは、一定ビットレート（Constant Bit-Rate：ＣＢＲ）オーディオ符号化アルゴリズムのようなアプリケーションのための平凡なデータ操作動作である、入力データストリームに対する命令順変更アクセスを提供する。
【００２５】
一実施例において、データエンジンコアによって実行可能な命令セットの少なくとも１つの命令は、条件付きの応答を有する命令か、無条件の応答を有する命令のいずれかである。このように命令を分類することは、異常終了操作が条件付き応答命令と関連付けられるように規定することによって、更に容易に計算処理のデッドロックが回避されることを可能にする。
【００２６】
一実施例において、少なくとも１つの命令は、データストリーム機能装置によって出力された少なくとも１つの命令に応答してデータストリーム制御器によって実行されるべきそれぞれの処理に対応すると共に、それぞれの処理は、データストリーム制御器によって維持される、関連する状態機械を備える。所定の状態を有するデータストリーム処理装置によって実行される計算の処理を結び付けることによって、データストリーム処理装置が、その処理タスクと関連した状態にある時間の間、その制御処理の性能を排除し、特定の処理タスクの完了を危うくする特定の制御処理を容易に抑制することが可能である。データストリーム制御器のそれぞれの状態として処理タスクをモデル化することは、同様に、実行されたデータ操作をデータストリーム処理装置が記録することを可能にさせる効率的な方法である。
【００２７】
一実施例において、データエンジンコアによって実行可能な命令セットは、データストリーム制御器に、選択的に少なくとも１つの入力データストリームのデータ要素をバッファさせるように動作可能なバッファリング命令を含む。バッファリングは、命令順変更アクセス及びデータストリームの接続に関して頻繁に実行されるタスクであり、明示的なバッファリング命令の提供は、効率的なデータ操作を可能にする。
【００２８】
一実施例において、データエンジンコアによって実行可能な命令セットは、データストリーム制御器に、バッファリングリソースから少なくとも１つの入力データストリームの少なくとも１つのデータ要素を読み出させると共に、少なくとも１つの出力データストリームに対して少なくとも１つのデータ要素を出力させるように動作可能なデータ読み出し命令を含む。これは、どこにバッファされたデータ要素が実際に記憶されるかをプログラマが正確に指定する必要性なしで、そしてデータストリームに関する操作を行うためにプログラマによって考案されたプログラムコード内に物理的なデータ位置に関する情報を保存するオーバーヘッドなしで、バッファされたデータ要素に対するプログラマによるアクセスを容易にする。
【００２９】
一実施例において、管理情報は、データストリーム制御器によって少なくとも１つの出力データストリームに対して次に供給されるべき、少なくとも１つの入力データストリームのうちの１つにおけるデータを示す少なくとも現在の出力位置を含む。これは、既にどのデータが出力されたかを記録するプログラマの負担を軽減すると共に、データストリームのデータにアクセスするためにデータエンジンに供給されなければならない命令を単純化する。
【００３０】
一実施例において、データエンジンコアによって実行可能な命令セットは、対応する入力データストリームと関連付けられた入力の一時的なシーケンスにおける以前の地点のデータ要素と現在の出力位置が対応するように、現在の出力位置を変更させるように動作可能な後退（back step）命令を含む。これは、入力データストリームに対する命令順変更アクセスを容易にする。
【００３１】
一実施例において、管理情報は、少なくとも１つの入力データストリームのどのデータ要素がバッファリングリソースに記憶されたかを示す履歴、及び少なくとも１つの入力データストリームのどのデータ要素がデータストリーム制御器によって受信されたかを示す履歴のうちの少なくとも１つを含む。これは、上述のデータ管理タスクの１つ以上がデータストリーム制御器によって独立して管理され得ると共に、これらの管理タスクの複雑さが、プログラマに容易に隠され得ることを意味する。
【００３２】
一実施例において、データエンジンコアによって実行可能な命令セットは、データストリーム制御器に、前記データエンジンからのデータを少なくとも１つの出力データストリームに挿入させるように動作可能なデータ挿入命令を含む。これは、データエンジンからの指定されたデータをデータストリームに挿入するための柔軟性を提供する。
【００３３】
一実施例において、データ処理システムは、データストリーム制御器に対する少なくとも１つの入力データストリームの供給のためのデータ通信経路をメモリアクセス制御器に直接提供するように動作可能な直接メモリアクセスインタフェースを備える。
【００３４】
そのような一実施例において、構成情報は、直接メモリアクセス制御器の少なくとも１つの特性を含む。メイン処理装置を参照することなくデータに対するアクセスが獲得され得るので、これは、操作がより効率的に実行されるべきデータストリームに対するアクセスを実行する。そのような一実施例において、メイン処理装置によってデータストリーム処理装置に供給された構成情報は、ＤＭＡ制御器の少なくとも１つの特性を含む。これは、データストリーム制御器が、入力データストリームに対するアクセスを更に容易に独立して管理し得ると共に、それがメイン処理装置の処理負担を減少させると共に、それによって効率を向上させることを意味する。
【００３５】
一実施例において、データストリーム処理装置は、データストリーム制御器が記憶されたデータ要素を少なくとも１つの出力データストリームに供給する前に、少なくとも１つの入力データストリームのデータ要素を一時的に記憶するためのデータ入力レジスタを備える。入力データ要素のローカルなバッファリングは、着信データの到着の一連のレートに即応するために、データストリーム処理装置の中でいくつかの柔軟性を提供すると共に、着信データストリームのどのデータ要素が既に受信されたかを記録することのようなデータ管理動作を促進する。
【００３６】
一実施例において、前記データエンジンコアによって実行可能な命令セットは、カウント設定命令と関連付けられた命令が、データエンジンコアから前記データストリーム処理装置に送信される瞬間の前記データポインタの状態に関連して、前記データストリーム処理装置にデータポインタ状態の上限を設定することを命令するように動作可能なカウント設定命令を含む。カウント設定命令の実行の後で、データストリーム処理装置は、データ要素、またはシンタックス要素に関する要求を実行し続けることになる。しかしながら、データストリーム処理装置は、データの更なる要求に関係なくデータポインタがこの上限に留まるように、データストリームポインタ値がセットされた上限を越えて進むことを妨げることになる。データポインタが上限に達した後で出力されるあらゆるデータ要素要求信号、またはデータポインタがこの上限を越えなければならないことにつながるであろうデータ要素要求信号は、構成可能なエラーコードか、もしくは固定したエラーコード（すなわち、ゼロ）、及びデータストリーム処理装置によって維持される管理情報の一部と対応する状態レジスタにおけるビットの設定のどちらも引き起こすことになる。データストリーム処理装置は、（i）新しい値によってカウント設定命令を再発行する、（ii）リセット命令を出力する、あるいは（iii）特別なコード（すなわち、−１）によってカウント設定命令を発行することにより、上限に到達した最終状態から解除され得る。
【００３７】
データストリーム処理装置が、データを伴うデータ通信経路を有する別個の存在として提供され得るが、一実施例において、データストリーム処理装置は、データエンジンに少なくとも一部組み込まれる。このように、データストリーム処理装置の選択的な部分は、データエンジンに移動され得る。例えば、データストリーム処理装置のデータアクセスレジスタの一部分であるバレルシフターは、データエンジンの算術論理演算装置（arithmetic logic unit：ＡＬＵ）のバレルシフターと結合されるであろう。
【００３８】
第２の特徴によれば、本発明は、複数のデータ処理タスクを実行するように動作可能なメイン処理装置と、前記メイン処理装置に成り代わって前記複数のデータ処理タスクのいくつかを実行するように動作可能なデータエンジンコアを有するデータエンジンとの間のデータ通信経路を提供するためのデータストリーム処理装置を提供すると共に、前記データストリーム処理装置は、前記データエンジンコアから少なくとも１つの命令を受信するように動作可能な制御インタフェースと、少なくとも１つの入力データストリームを受信すると共に、一連のデータ要素を含む少なくとも１つの出力データストリームを生成するために、前記少なくとも１つの入力データストリームに関して少なくとも１つの操作を実行するように動作可能なデータストリーム制御器とを備え、前記データストリーム処理装置は、前記少なくとも１つの操作を実行するように前記データストリーム制御器を制御するために、前記データエンジンコアからの前記少なくとも１つの命令に応答する。
【００３９】
第３の特徴によれば、本発明は、複数のデータ処理タスクをメイン処理装置に割当てる処理と、データエンジンコアを有するデータエンジンを使用して、前記メイン処理装置に成り代わって前記複数のデータ処理タスクのいくつかを実行する処理と、データストリーム処理装置を使用して、前記メイン処理装置と、前記データエンジンコアとの間のデータ通信経路を提供する処理と、前記データエンジンコアからの少なくとも１つの命令を、前記データストリーム処理装置において受信する処理と、少なくとも１つの入力データストリームを、前記データストリーム処理装置のデータストリーム制御器において受信する処理と、一連のデータ要素を含む少なくとも１つの出力データストリームを生成するために、前記少なくとも１つの入力データストリームに関して少なくとも１つの操作を実行する処理とを含み、前記データストリーム処理装置が、前記少なくとも１つの操作を実行するように前記データストリーム制御器を制御するために、前記データエンジンコアからの前記少なくとも１つの命令に応答するデータ処理方法を提供する。
【００４０】
第４の特徴によれば、本発明は、複数のデータ処理タスクを実行するように動作可能なメイン処理装置と、前記メイン処理装置に成り代わって前記複数のデータ処理タスクのいくつかを実行するように動作可能なデータエンジンコアを有するデータエンジンと、前記メイン処理装置と前記データエンジンコアとの間のデータ通信経路を提供するデータストリーム処理装置とを備え、前記データストリーム処理装置が、前記データエンジンコアから少なくとも１つの命令を受信するように動作可能な制御インタフェースと、少なくとも１つのデータストリームに対する第１のインタフェースと、一連のデータ要素を含む少なくとも１つのデータ要素ストリームに対する第２のインタフェースとを有すると共に、前記第１のインタフェースと前記第２のインタフェースとの間のデータ転送を管理するための少なくとも１つの操作を実行するように動作可能であるデータストリーム制御器とを備え、前記データストリーム処理装置が、前記少なくとも１つの操作を実行するように前記データストリーム制御器を制御するために、前記データエンジンコアからの前記少なくとも１つの命令に応答するデータ処理システムを提供する。
【００４１】
第５の特徴によれば、本発明は、メイン処理装置とデータエンジンコアとの間のデータ通信経路を提供するためのデータストリーム処理装置を提供すると共に、前記データストリーム処理装置は、前記データエンジンコアから少なくとも１つの命令を受信するように動作可能な制御インタフェースと、少なくとも１つのデータストリームに対する第１のインタフェースと、一連のデータ要素を含む少なくとも１つのデータ要素ストリームに対する第２のインタフェースとを有すると共に、前記第１のインタフェースと前記第２のインタフェースとの間のデータ転送を管理するための少なくとも１つの操作を実行するように動作可能であるデータストリーム制御器とを備え、前記データストリーム処理装置は、前記少なくとも１つの操作を実行するように前記データストリーム制御器を制御するために、前記データエンジンコアからの前記少なくとも１つの命令に応答する。
【００４２】
本発明に基づくデータストリーム処理装置の実施例が、データ処理システムに関して上述された関連した任意の特徴のうちのどれでも１つ以上を含むかもしれないということが認識されることになる。
【００４３】
第６の特徴によれば、本発明は、複数のデータ処理タスクをメイン処理装置に割当てる処理と、データエンジンコアを有するデータエンジンを使用して、前記メイン処理装置に成り代わって前記複数のデータ処理タスクのいくつかを実行する処理と、データストリーム処理装置を使用して、前記メイン処理装置と、前記データエンジンコアとの間のデータ通信経路を提供する処理と、前記データエンジンコアからの少なくとも１つの命令を、前記データストリーム処理装置において受信する処理と、少なくとも１つのデータストリームに対する第１のインタフェースと、データストリーム制御器の少なくとも１つのデータ要素ストリームに対する第２のインタフェースとの間のデータ転送を管理するための少なくとも１つの操作を実行する処理とを含み、前記データストリーム処理装置が、前記少なくとも１つの操作を実行するように前記データストリーム制御器を制御するために、前記データエンジンコアからの前記少なくとも１つの命令に応答するデータ処理方法を提供する。
【００４４】
データ要素ストリームは、データストリーム処理装置が接続されたデータエンジンコアの命令セット構造の範囲において意味のある“値”のストリームであり、すなわちそれに関する操作が命令、及びリソースを使用することによって実行され得る要素である。データ要素は、１つ以上のビットから構成され得ると共に、一実施例において、データ要素は、標準によって定義されたシンタックス要素を含むことができる。シンタックス要素のそのような１つの例は、ハフマンワード（Huffman word）であろう。
【００４５】
シンタックス要素は、IS0-IEC 11172-3 MPEG 1 audio、IS0-IEC 13818-3 MPEG 2 audio、IS0-IEC 13818-7 MPEG 2、AAC audio、IS0-IEC 14496-3 MPEG-4 MC twinVQ audioや、IS0-IEC 11172-2 MPEG 1 video、IS0-IEC 13818-2 MPEG 2 video、IS0-IEC 14496-2 MPEG-4 video、H.261 , H.262, H.263, H.264 video 及びVCIのような多くの異なる国際標準のうちのいずれにでも従って定義されるように構造化され得る。
【００４６】
データストリームは、データエンジンを囲むサブシステム層（データストリーム処理装置はその一部分である）において発見されたハードウェア装置の物理的構造、またはサブシステムを囲む構造の範囲において意味のある“パターン”のストリームである。例えば、それらのパターンは、シンタックス要素よりむしろ、バスを横断して転送されるか、もしくはメモリに記憶されるであろうデータ部分（すなわち、数量または原子の単位）を含む。データストリームは、データ要素ストリームを含むデータの一部分が提供する、データの異なって定義された部分から構成される。
【００４７】
本発明の上述の目的、及び他の目的、特徴、そして利点は、添付図面に関連して読まれるべきである、実例となる実施例の以下の詳細な記述から明白になる。
【発明を実施するための最良の形態】
【００４８】
図１は、データ処理システムを概略的に説明する。システムは、メイン処理装置１１０と、メモリ１２０と、直接メモリアクセス（ＤＭＡ）制御器１３０と、データエンジンコア１４２を有するデータエンジン１４０と、データストリーム処理装置１５０と、そしてシステムバス１６０とを備える。
【００４９】
データストリーム処理装置１５０は、データエンジン１４０とシステムバス１６０との間に位置すると共に、データエンジンコア１４２の制御下にある処理タスクを実行するように動作可能である。データエンジン１４０のデータエンジンコア１４２は、メイン処理装置１１０に成り代わって処理タスクのサブセットを実行するように構成されると共に、疎結合のコプロセッサであると考えられ得る。データエンジンコア１４２は、それがメイン処理装置１１０と一緒に集積化されないと共に、データエンジンコア１４２、及びメイン処理装置１１０の間の同期化が、処理またはタスクレベルでのみ実行されるという意味において、疎結合される。この装置において、データエンジンコア１４２は、メイン処理装置１１０によって共有されるいくつかのリソースへのアクセスを有している。特に、ＤＭＡ制御器１３０、及びメモリ１２０に対するアクセスは、共有される。
【００５０】
データエンジンコア１４２は、メイン処理装置１１０に成り代わって命令のセットを実行するように動作可能であると共に、少なくともプログラム命令のセットのサブセットの実行に関して、それがデータストリーム処理装置１５０に命令する少なくとも１つの命令（例えば、制御信号）を生成するように動作可能である。この命令に応答して、データストリーム処理装置１５０は、１つ以上のデータストリーム処理タスクを実行するように制御される。データストリーム処理装置１５０は、バス１６０を経由すると共に、ＤＭＡ制御器の制御下で、メモリ１２０から１つ以上の入力データストリームを受信するように構成可能である。
【００５１】
データストリーム処理装置１５０は、１つ以上の出力データストリームを生成するために、入力データストリームに関して操作を実行するように動作可能である。これらのデータストリーム操作を実行するために、データストリーム処理装置１５０は、バッファメモリに対するアクセスを有する（図示せず）。特にこの装置において、バッファメモリは、メモリ１２０の一部分を構成する。代替装置において、バッファメモリは、データストリーム処理装置１５０の中に局所的に提供される。データストリーム処理装置１５０によって実行される操作は、例えば、入力データストリームに対する命令順変更アクセスを可能にするか、または単一の出力データストリームを生成するために、少なくとも２つの入力データストリームの一部分の接続を可能にする。データストリーム処理装置１５０は、例えば、バッファサイズと位置、バッファメモリに関するスタートアドレスとエンドアドレス、及びＤＭＡ制御器１３０の特性のような構成情報を有するメイン処理装置１１０によって構成可能である。
【００５２】
図１において、データストリーム処理装置１５０とデータエンジン１４０の組み合わせは、プログラミングと集積化の両方の観点において、向上した性能と減少した複雑さを有するデータストリーム処理を提供する。データストリーム処理装置１５０、及びデータエンジン１４０は、ホストシステムからの更なる双方向の情報授受の必要性なしに、データストリームを処理することが可能であるＤＭＡスレーブ装置として効果的に機能する。データエンジンコア１４２によってデータストリーム処理タスクを実行するために提供されたアプリケーションプログラムインタフェース（Application Program Interface：ＡＰＩ）は、ビットストリームに対する命令順変更アクセスのためのストリームバッファリング、及び巻き戻し機能と同様に、自動データ位置合せを伴う可変長ビットストリームアクセスのための機能を提供する。そのような命令順変更アクセスは、一定ビットレート（Constant Bit-Rate：ＣＢＲ）オーディオ符号化アルゴリズムでは一般的である。
【００５３】
図２は、更に詳細に図１のデータエンジン１４０を概略的に説明する。図１において、データストリーム処理装置１５０は、データエンジン１４０の外部に提供される。しかしながら、これに代る装置において、データストリーム処理装置１５０は、データエンジン１４０の構成要素として統合され得る。これは、図２において、データストリーム処理装置１５０の点線によって示される。データエンジンコアは、データエンジン制御器２１０、及びデータストリーム機能装置２２０、及び複数の他の機能装置２３０を備える。データエンジン制御器２１０は、メイン処理装置１１０（図１参照）から、実行のためのプログラム命令を受信するように動作可能であると共に、各命令を、実行するために、データストリーム機能装置２２０及び複数の機能装置２３０のうちの適切なものに送信するように構成される。データエンジン制御器２１０は、データエンジンコア１４０の中のデータの動き、及びデータストリーム機能装置２２０、または他の機能装置２３０による実行のためのプログラム命令の発行をもたらす制御信号を出力する。これらの命令の実行は、データを使用するか、もしくはデータを生成することができる。
【００５４】
データストリーム機能装置２２０、及び複数の他の機能装置２３０は、それぞれ、メイン処理装置１１０に成り代わって少なくとも１つのプログラム命令を実行するように動作可能である。機能装置２３０のうちの異なるものは、異なる処理タスクを実行することに専念する。データストリーム機能装置２２０は、データストリーム処理装置１５０に送信される命令を生成する指示を実行するように構成される特別な種類の機能装置である。データストリーム機能装置２２０によってデータストリーム処理装置１５０に入力として供給される命令（この場合、制御信号）は、入力データストリームに対するアクセス、及び入力データストリームの操作を含むタスクを実行するように、データストリーム処理装置１５０を制御する。処理されるべきデータストリームの例は、圧縮され、及び／またはコード化された形式におけるビデオデータ、及びオーディオデータを含むが、それに限定されない。
【００５５】
図３は、データストリーム処理装置の中のロジック回路、及び、どのようにデータストリーム処理装置１５０がデータエンジンコア１４２とインターフェイスするかを概略的に説明する。データストリーム処理装置は、構成モジュール３１０と、データ受信モジュール３２０と、バッファインタフェース３３０と、データストリーム制御器３４０と、制御インタフェース３５０と、そしてアクセラレータ３６２に対するアクセスを提供するアクセラレータインタフェース３６０とを備える。データ受信モジュール３２０は、ＤＭＡインタフェース３７０と通信するように構成される。バッファインタフェース３３０は、外部のバッファ３３２とのデータ通信経路を提供する。
【００５６】
同様に、データストリーム処理装置１５０は、管理データを管理レコードに記憶する管理モジュール３８０を備えている。この実施例における管理レコードは、管理モジュール３８０によって局所的に記憶されるファイルであるが、しかし、代替装置において、管理レコードは、データストリーム処理装置１５０の外部メモリに記憶されるファイルである。管理レコードは、管理モジュール３８０を経由して、データストリーム制御器３４０によってアクセス可能である。管理データは、バッファに記憶されたデータのポインタ、及びヘッダ部分の始まりと終わりを示すマーカーデータを含むが、それに限定されない。この明細書においては、モジュールという用語、及びロジックという用語は、ハードウェア要素、ソフトウェア要素、またはそれらの組み合わせを含むことができる構成要素のことを指すために使用されることになるということに注意が必要である。
【００５７】
データ受信モジュール３２０は、ハンドシェイクプロトコルによってＤＭＡインタフェース３７０と通信すると共に、ＤＭＡインタフェース３７０を経由して１つ以上の入力データストリームを受信するように動作可能である。データ受信モジュール３２０は、図３において、更に詳細に説明される。構成モジュール３１０は、バッファ３３２の特性、ＤＭＡインターフェイス３７０を経由してアクセス可能であるＤＭＡ制御器１３０（図１参照）の特性、及びアクセラレータインターフェイス３６０を経由してアクセス可能であるアクセラレータ処理モジュール３６２の特性を含む構成情報を有するメイン処理装置１１０によってプログラムされる。
【００５８】
そのような構成情報によりデータストリーム処理装置１５０の構成モジュール３１０をプログラムすることによって、データストリーム処理装置１５０によって実行されるバッファリングの実施の詳細は、プログラマから隠されることができる。これは、データストリーム処理装置１５０が、構成モジュール３１０に記憶される構成情報に基づくデータストリーム機能装置２２０によるプログラム命令の実行に応答して実行されたバッファリング処理を管理し得るからである。従って、データストリーム機能装置２２０によって実行されるプログラム命令において、そこに記憶すると共に、バッファされたデータをそこから読み出すバッファの位置を明白に明示するという要求は、取り除かれる。
【００５９】
制御インタフェース３５０は、データストリーム機能装置２２０と直接的に通信できると共に、データストリーム機能装置２２０によって出力される制御信号を受信する。データエンジンコア１４２は、メイン処理装置からプログラム命令のサブセットを受信すると共に、データエンジンコア１４２は、それらのプログラム命令と関連付けられた処理タスクの実行に関与する。制御器２１０は、制御信号を生成するためにプログラム命令を実行する。制御器２１０は、処理タスクをデータストリーム機能装置２２０、及び他の機能装置２３０に割り当てる。それは、データストリーム機能装置２２０に対して、扱えるデータストリームと関連付けられた少なくともいくつかの処理タスクを割り当てることになる。特に、制御器２１０は、処理タスクのサブセットを実行するために、制御信号をデータストリーム機能装置２２０に送信する。データストリーム機能装置２２０は、順繰りに、制御信号をデータストリーム処理装置１５０の制御インタフェース３５０に送信する。
【００６０】
データストリーム制御器３４０は、制御インタフェース３５０を経由してデータストリーム機能装置２２０から受信された命令に基づいて、入力データストリームに関して実行される操作を制御する。データストリーム制御器３４０は、入力データストリームのいくつかのデータ要素（例えば、ビット、バイト、またはワード）を、バッファ３３２における一時記憶のためのバッファインタフェース３３０に導くように動作可能である。データストリーム制御器３４０は、データ受信モジュール３２０、アクセラレータインタフェース３６０、バッファインタフェースロジック３３０、及び制御インタフェース３５０を含む複数のインタフェースを備えている。データストリーム制御器３４０は、１つ以上の出力データ要素ストリームを生成するために、１つ以上の入力データストリームに関して操作を実行することができるように、もしくは、出力データストリームを供給するために、１つ以上の入力データ要素ストリームに関して操作を実行することができるように、双方向のデータフローをサポートする。データ要素ストリームが、データストリーム処理装置１５０が通信しているデータエンジンコアの命令セット構造に関して意味のある値のストリーム、すなわち操作が命令及びリソースを用いて実行され得る要素であることを思い出す必要がある。データ要素の例は、国際標準によって定義されたシンタックス要素である。アクセラレータ３６２は、マルチメディアデータストリームのようなデータストリームのシンタックス要素を処理するように動作可能である。
【００６１】
（メイン処理装置１１０によって実行可能な一連の命令と共に、）データストリーム機能装置２２０による実行のためのプログラム命令を提供するプログラマは、位置、現在の収容能力、またはバッファに供給されたデータのために使用されるべき記憶アドレスのようなバッファの特性の知識を、データストリーム処理装置１５０がこの点で自立的であるので、持つ必要がない。データストリーム処理装置１５０の自立性は、それが構成データを、バッファ３３２、アクセラレータ３６２、及びＤＭＡ制御器１３０のような接続されるデータ処理リソースの詳細を指定する構成モジュール３１０に記憶するという事実の少なくとも一部分に起因する。
【００６２】
構成モジュール３１０は、メイン処理装置１１０（図１を参照）、及びバス１６０と接続された他の演算処理装置によってアクセス可能であるが、データエンジン１４０によってアクセス可能ではない。更に、データストリーム処理装置１５０は、管理モジュール３８０を経由して、データ受信モジュール３４０によって各入力データストリームのどれだけのデータ要素が受信されたか、各入力データストリームのどのデータ要素が現在バッファに記憶されているか、各入力データストリームのどのデータ要素が制御インタフェース３５０またはアクセラレータインタフェース３６０を経由して既に出力されたか、を記録する管理レコードを保存する。
【００６３】
アクセラレータインタフェース３６０は、入力／出力データ通信経路にアクセラレータ３６２を提供する。アクセラレータ３６２は、急速かつ能率的に一連の専門の処理タスクを実行するように構成される。特にこの装置において、アクセラレータは、データストリームのハフマン符号化／復号化を実行するように構成される。アクセラレータ３６２は、制御インタフェース３５０を経由して受信される、データストリーム機能装置２２０によって供給された命令に応答してデータストリーム符号化／復号化を実行するように動作可能である。このアクセラレータ命令（または、命令のシーケンス）に応答して、データストリーム処理装置１５０は、アクセラレータ３６２によって操作されるべきデータ要素を読み出す操作と、それらのデータ要素の符号化／復号化を実行する操作の両方を自立的に実行する。
【００６４】
図３において示されたように、データエンジンコア１４２は、複数の命令を含む命令セットを実行すると共に、各命令の実行に応答して制御インタフェース３５０に対する制御信号を生成するように動作可能である。データエンジンコア１４２によって実行可能な命令セットは、以下の命令を含む。
【００６５】
(i)入力データストリームから指定されたデータ要素を読み出すための“getbits()”命令。
(ii)データストリーム制御器３４０に入力データストリームの指定されたデータ要素をバッファするように命令するための“bufferbits()”命令。
(iii)それに続く次のデータ要素が出力データストリームに既に供給された後で、事前にバッファされたデータストリームのデータ要素を読み出すことによって、データストリームのデータに対する命令順変更アクセスを得るための“backstep()”命令。
(iv)データエンジンからのデータを、データストリームに対する挿入のためのデータストリーム処理装置に挿入するように動作可能な“putbits()”命令。
(v)データストリーム処理装置１５０の中でデータを記録するカウンタを設定するための“setcount()”命令。
(vi)カウンタをリセットするための“rstcount()”命令。
(vii)バッファ３３２の深さを設定するための“setbufferdepth()”命令。
(viii)データストリームからのシンタックス要素の自立的な読み出しのための“get Huffword()”命令。シンタックス要素は、複数のデータ要素を含む可能性がある。
(ix)バッファからデータを削除するための“unbufferbits()”命令。
(x)ストリーム自身、またはビットポインタを前進させることなく、データストリームからの限られた数のビットに対するアクセスを可能にする“peakbits()”命令。
【００６６】
例えば、出力に関するバッファリングは、後に“unbufferbits()”命令が続いている“putbits()”命令が後に続く“backstep()”命令を実行することによって成し遂げられ得る。
【００６７】
一代替装置において、データストリーム処理装置は、１つのデータストリーム（入力または出力のいずれか）を取得すると共に、それを別の異なってフォーマットされたデータストリームに変換する基礎的な機能を実行するように動作可能である。この場合、上述のリストから必要とされるであろう唯一の命令は、入力ストリームに関する“getbits()”命令、及び出力ストリームに関する“putbits()”命令である。
【００６８】
データエンジンコア１４２によって実行されると共に、データエンジンのデータストリーム機能装置２２０から制御インタフェース３５０を経由してデータストリーム処理装置１５０に対して送信された命令に帰着する指示の全ては、(a)条件付き応答命令か、(b)無条件応答命令のいずれかである。無条件応答命令（例えば、“getbits()”命令）は、内部的か、または外部的かに拘わらず、他の処理のロック状態に依存していないものである。従って、これらの命令は、戻ることを保証される。一方、条件応答命令は、ロック状態に依存していることができ、従って、対応する“abort()”命令が、デッドロックを妨げるように、これらの命令に提供される。“getbits()”命令は無条件応答命令であるが、必要とされるデータが利用可能ではない場合には停止することになる、ということに注意が必要である。
【００６９】
“setcount()”命令、及び“resetcount()”命令は、データストリームアクセスを更に安全にするために、明確に提供される。例えば、“ISO.IEC 11172-3”、及び“ISO.IEC 13818-3”（ＭＰＥＧ１、２オーディオ）の標準において、一定の数のビットが読まれることは定義されるけれど、読まれるデータの量がデータ要素（例えば、シンタックス要素）の整数の数と一致するか、またはそれが処理ループの処理ステップの完全な数と一致するという保証は全くない。犠牲の大きい“ブレーク”命令を回避するために、“setcount()”命令は、データストリーム処理装置１５０が、指定された数のビットを提供すると共に、後でゼロ及び終了状態を生成することを可能にする。これが保証するのは、コードがループの終りで終了することになるということである。
【００７０】
データストリーム処理装置１５０によって生成された出力データストリームは、制御インタフェース３５０を経由して、データエンジン１４０に送信される。データエンジン１４０によってデータストリーム処理装置１５０から受信されたデータは、データエンジン１４０におけるレジスタ（図示せず）に記憶される。
【００７１】
上述の各々のプログラム命令の実行によって生成された命令信号は、制御インタフェース３５０を経由して、データエンジンコア１４２によってデータストリーム処理装置１５０に供給される。データエンジンコア１４２による各命令の実行は、データストリーム処理装置１５０内の処理タスクを誘発する。制御インタフェース３５０は、そこを経由して、自立処理（例えば、“bufferbytes()”命令、“getbits()”命令等）が開始されて終了するポートである。各自立処理は、それ自身の状態機械を備えている。
【００７２】
ＤＭＡインタフェース３７０、及びデータ受信モジュール３２０、もしくはバッファインタフェースロジック３３０は、入力データストリームからのデータの受信に応答して動作を実行するが、一方制御インタフェース３５０は、入力データストリームに関して操作を実行するようにデータストリーム処理装置１５０を制御するために、（一般的に、入力データストリームの受信に対して非同期的に）データエンジンコア１４２から受信される命令に応答する。従って、例えば、ＤＭＡインタフェース３７０は、たとえ、制御インタフェース３５０を経由して受信される対応する命令がないとしても、バス信号に応答するように構成される。従って、データストリーム処理装置の動作は、調整を必要とすると共に、この調整は状態機械を用いて実行される。もし“bufferbytes()”操作が、データ受信モジュール３２０からバッファインタフェースロジック３３０に対してデータが転送されつつあるようなデータストリーム処理装置１５０によって実行されている場合、その場合に、バッファリングが進行中である間に制御インタフェース３５０を経由して受信される“getbits()”命令は、バッファリングと同時に処理されることができない。バッファリングは、“getbits()”命令の受信に関係なく継続されることになる。メモリアクセスを含むバッファリングの中断は、浪費的な電力消費に帰着すると共に、同様に命令間の依存による機能的に誤った動作に帰着するであろう。状態機械は、バッファリング動作が“getbits()”命令を受信次第停止することを防止する。状態機械の使用の更なる例は、“bufferbytes()”動作と関連付けられた状態機械である。バッファリング動作の間、バッファインタフェースロジック３３０は、データを接続されたバッファ３３２に書き込むためのライトイネーブル信号を生成する。しかしながら、もしバッファリング動作が他の処理によるバッファ３３２の使用のために停止される場合、それはデータストリーム処理装置１５０によるバッファ３３２の使用に対して優先すると共に、それは、バッファ３３２に対するライトイネーブル信号が、機能停止の期間の間、高いまま維持される場合である。これは、電力のかなりの量を浪費するであろう。これを防止するために、バッファリング処理と関連付けられた状態機械は、あらゆる機能停止の期間の間、ライトイネーブル信号を下げる（低い状態にする）と共に、バッファ３３２が再び利用可能になるときにライトイネーブル信号を復活させるように動作可能である。
【００７３】
制御インタフェース３５０は、データストリーム処理装置１５０の現在の状態を有効にすると共に、その上で実行される処理が、セットされ、リセットされ、保存されて復元されることを可能にする（データエンジンコア１４２により実行される）一組の命令をサポートする。
【００７４】
図４は、どのように一連のデータストリーム処理タスクが図１のデータ処理装置によって実行されるかを概略的に説明するフローチャートである。セッションがステージ４１０で初期化され、その結果データ処理装置が起動される。次に、ステージ４２０において、起動時に、それに利用可能なデータ処理リソースの特性を決定したメイン処理装置１１０は、バッファインタフェース３３０を経由して利用可能なあらゆるバッファリングリソース、及び、アクセラレータインタフェース３６０を経由して利用可能なあらゆる処理リソースの特性を指定するデータストリーム処理装置１５０の構成モジュール３１０（図３を参照）に、構成情報を送信する。
【００７５】
構成モジュール３１０によって記憶される構成情報は、データエンジン１４０にアクセス可能ではない。一度、構成モジュールがステージ４２０において構成されたならば、データエンジンコア１４２がスタート（開始）されると共に、メイン処理装置１１０がそれに成り代わって処理タスクのサブセットを実行するために利用することができるようになる。
【００７６】
ステージ４３０において、データエンジンコア１４２は、プログラム命令を受信すると共に、これらの命令（の少なくともいくつか）を、実行するためのデータストリーム機能装置２２０（図２を参照）に送信する。あるプログラム命令の実行に応答したデータストリーム機能装置２２０は、１つ以上の入力データストリームのデータ要素に関してデータ処理タスクを実行するために、制御インタフェース３５０を経由して、少なくとも１つの命令をデータストリーム制御器３４０に出力する。実行され得るデータ処理タスクは、データ要素のバッファリングを必要とするデータ操作を包含する。例えば、命令順変更ストリームアクセス、またはデータストリーム接続（すなわち、出力データストリームを形成するための２つ以上の入力データストリームの部分の連結）である。データストリーム機能装置２２０によって実行される所定の命令の実行と関連付けられたタスクが完了された後で、処理はステージ４６０に進行する。
【００７７】
ステージ４６０において、データエンジンコア制御器２１０を経由して受信された全てのデータストリーム処理タスクが完了されたか否かが判定される。もし更なるタスクがまだ実行されなければならない場合、その場合には処理はステージ４４０に戻る。しかしながら、もし全ての処理タスクがステージ４６０において既に完了されていた場合、処理はステージ４７０に進行し、その結果データエンジンコアがストップ（停止）される。図４のフローチャートにおいて、説明の目的のために、データエンジン制御器２１０によって受信された全てのプログラム命令がデータストリーム機能装置２２０に行くことになっている、と仮定される点に注意が必要である。しかし、データストリーム操作を包含しないいくつかの命令は、実際には、データストリーム機能装置２２０よりむしろ、実行するための他の機能装置２３０に導かれるということが認識されることになる。
【００７８】
図５は、データストリームのデータ要素の入力及び出力を、それらが通過するとき管理するためにデータストリーム演算処理装置１５０の中で使用されるロジック回路を概略的に説明する図である。ロジック回路は、データ入力レジスタ５１０のセット（それは、図３のデータ受信モジュール３２０の一部分である）と、データアクセスレジスタ５２０及び接続されたビットポインタ５２２のセット（両方とも図３の制御インタフェース３５０の構成要素である）と、接続された内部バッファ５３２と接続する双方向性のデータ通信経路を有する多重化モジュール５３０（それは、図３のデータストリーム制御器３４０の一部を構成する）とを備える。図５のバッファ５３２がデータストリーム演算処理装置１５０の外部にあるのに対して、図３のバッファ３３２がデータストリーム演算処理装置１５０の内部にあるという点で、図５の装置が図３の装置に対する代替である点に注意が必要である。
【００７９】
ＤＭＡインタフェース３７０（図３を参照）によって受信される入力データストリームのデータ要素は、データ入力レジスタ５１０内のファーストインファーストアウト（First-in-First-Out：ＦＩＦＯ）基盤に一時的に記憶される。データ入力レジスタ５１０のＦＩＦＯの性質によって、データストリームはＤＭＡインタフェース３７０を経由して順次にアクセスされることが可能になる。管理モジュール３８０（図３を参照）は、どのくらいのデータ要素が受信されたか、そして、どのデータ要素がデータ入力レジスタ５１０にまだあるかを記録する。データ要素は、データ入力レジスタ５１０から出力されると共に、多重化モジュール５３０に供給される。制御インタフェース３５０（図３を参照）を経由してデータストリーム機能装置２２０から受信された命令に基づいて、多重化モジュール５３０は、データ入力レジスタ５１０からのいくつかのデータ要素を、一時記憶のためのバッファ５３２まで導くと共に、データ入力レジスタ５１０からのデータ要素の他のものを、データエンジンコア１４２にアクセス可能である、制御インタフェース３５０のデータアクセスレジスタ５２０まで直接導く。データストリーム処理装置１５０は、入力データストリームにおける少なくとも１つの基準点を含む管理情報を保存する。この基準点は、図５におけるデータアクセスレジスタ５２０と関連付けられた状態機械の状態と対応する。同様にデータ入力レジスタ５１０は、データ入力処理と関連付けられた基準点情報を記憶する、関連する状態機械を有している。データストリーム処理装置１５０が、データストリームに関する少なくとも１つの基準点を記憶することが可能であるという事実は、効果的に、それが状態情報を記憶することが可能であるということを意味する。これは、（上述のように）データストリームからビットを自動的に読み出すようにする“getbits()”命令の実行を可能にする。同様に、記憶された状態情報によって、データストリーム処理装置１５０は、どのポートからデータを獲得するか、またはどのポートにデータを書き込むか（すなわち、データ入力レジスタ５１０と接続されたインタフェース、またはバッファ５３２と接続されたインタフェース）を自動的に選択することが可能になる。
【００８０】
多重化モジュール５３０は、同様に、“getbits()”命令の実行に応答して生成された命令に応答して、データアクセスレジスタ５２０に対して出力するための、入力データストリームのバッファされたデータ要素を、バッファ５３２から読み出すように動作可能である。更に、管理モジュール３８０は、どのデータ要素がまだバッファに存在するか、そしてどこにそれらが位置しているかを記録すると共に、同様に、どのデータ要素がデータアクセスレジスタ５２０に存在するかを記録する。出力データストリームは、“putbits()”命令を使用して、データ要素を、データアクセスレジスタ５２０から送信ストリーム上に選択的に出力することによって生成される。
【００８１】
ビットポインタ５２２は、出力データストリームに対して次に供給されるべきデータ要素を指し示す。ビットポインタをリセットするために、“resetbitpointer()”命令、もしくは“reset()”命令が使用される。図５のデータアクセスレジスタ５２０は、データエンジンコアからの命令に関して動作する場合に、データストリーム処理装置１５０によって基準点として使用される、データストリームにおける基準点を、自動的に選択する。データストリーム処理装置１５０は、この基準点を含む管理情報を保存する。管理情報は、同様に、どのデータ要素がバッファ５３２に記憶されたか、及びどのデータ要素がＤＭＡインタフェースを経由してデータ入力レジスタ５１０で受信されたかという記録を含む。図３を参照して上述されたように、ＤＭＡインタフェース３７０、アクセラレータインタフェース３６０、バッファインタフェース３３０、及び制御インタフェース３５０の全ては、すべて関連付けられた状態機械を有する。従って、例えば、バッファインタフェース３３０と関連付けられた状態機械が、どのデータ要素が接続されたバッファ３３２に記憶されたかを指定する管理情報を記憶するように、管理情報は、それぞれのインタフェースの状態機械に分配され得る／割り当てられ得る。
【００８２】
図６は、データストリーム処理装置を通過するデータの流れを制御するロジック回路を概略的に説明する図である。このロジック回路は、バッファ５３２（図４を参照）からのデータ要素と、入力データレジスタからのデータ要素とを多重化するように動作可能である。図６の装置は、図３のＤＭＡインタフェース３７０から制御インタフェース３５０までのデータ経路と対応する。マルチプレクサ６１０、及びマルチプレクサ６１２は、データ経路と接続されている一方、マルチプレクサ６１４、マルチプレクサ６１８、マルチプレクサ６２０、及びマルチプレクサ６２２は、制御経路と接続されている。マルチプレクサ６１０は、バッファ３３２からのバッファされたデータ、またはＦＩＦＯデータ入力レジスタ５１０からの直接のデータのどちらが、制御インタフェース３５０を経由してデータエンジン１４０に供給されるかを制御する。マルチプレクサ６１２は、ＦＩＦＯ入力レジスタ５１０からのデータが、出力のための制御インタフェース３５０に直接供給されるか、または、代わりに一時記憶のためのバッファ３３２に供給されるかを制御する。データ部分は、データストリーム機能装置２２０（図２を参照）からの命令に応答して、バッファされると共に、出力されることになる。マルチプレクサ６１４、及びマルチプレクサ６１８は、制御インタフェース３５０を経由してデータエンジンコア（図３を参照）からＡＣＫ信号（肯定応答）を受信するように動作可能である。マルチプレクサ６２０、及びマルチプレクサ６２２は、制御インタフェース３５０を経由して要求信号をデータエンジンコア１４２に出力するように動作可能である。もしデータがＦＩＦＯ５１０に到達していない場合、ＦＩＦＯは、マルチプレクサ６２０、及びマルチプレクサ６２２を経由して制御インタフェース３５０に到達する保留信号を出力する。保留信号は、データエンジン制御器２１０（図３を参照）を停止させる。一方、もしデータストリームがＦＩＦＯ５１０に供給されつつある場合、その場合にＡＣＫ信号（肯定応答信号）がデータエンジンコア１４２から、制御インタフェース３５０とマルチプレクサ６１４及びマルチプレクサ６１８を経由して、ＦＩＦＯ５１０に送信されることになる。マルチプレクサ６１０、及びマルチプレクサ６１２を経由してＦＩＦＯ５１０を制御インタフェース３５０と接続するメインのデータ経路は、以下のように設定され得る。
【００８３】
(i)データエンジン１４０による使用（消耗）のために、入力ＦＩＦＯ５１０から制御インタフェース３５０まで、データをストレートに通過させる。
(ii)バッファ３３２からデータを読み取る。
(iii)キャッシュ３３２に記憶するために入力ＦＩＦＯ５１０からのデータをバッファする。
【００８４】
要求／肯定応答のマルチプレクサ６１４、マルチプレクサ６１８、マルチプレクサ６２０、及びマルチプレクサ６２２は、先例に従わなければならない。例えば、バッファリングモードにおいては、ＦＩＦＯ５１０からのデータがキャッシュ３３２に供給されつつあるとき、バッファリングが進行中である間、データエンジン１４０によるデータに関するあらゆる要求が機能停止に帰着することになるのを保証するために、ゼロの信号入力が、要求制御経路６２０、６２２上に配置されることになる。簡素化のために、図６において示された回路は、データフローの制御と関連付けられた回路素子の全てを示していない。例えば、更なる回路素子（図示せず）が、データエンジン１４０におけるデータの到着を認識するＡＣＫ信号（肯定応答信号）を、制御器３４０に提供するために用意される。
【００８５】
図７は、データストリーム処理装置を通過するデータの流れを制御すると共に、同様に、データ転送が中断されたとき、転送中の保留データを記憶するように動作可能であるロジック回路を概略的に説明する図である。この装置は、図６の装置に対する代替装置である。回路構成の下方の部分７１０は、図６の回路構成に対して、形式と機能の両方において同一である。回路構成の上方の部分７２０は、転送における保留データを保存するように動作可能である。データエンジンコア１４２が、ＤＭＡインタフェースを経由してデータ受信モジュール３２０に供給されているデータストリームを包含するデータ転送を中断するための命令をデータストリーム処理装置１５０（図３を参照）に送信する場合には、図７の装置は有益である。データがその時まだＤＭＡインタフェース３７０に対する転送状態にあるときに、もしデータエンジンコア１４２がデータ転送を終了させる命令を出力する場合、その場合には、現在データエンジンコア１４２によって必要とされないが、そのデータをバッファすることが望ましい。なぜなら、そうでない場合には、データエンジンコア１４２が処理を再開するとき、もし既にＤＭＡ制御器によって出力されたデータが単に処分される場合には、データストリームが恐らく破損されるからである。図７の回路構成の上方の部分７２０は、エンジンコア１４２からの停止命令が手続きされる前に、転送中のデータ、またはデータストリーム処理装置１５０に送信された“オーバフローデータ”を消耗するように機能する。オーバフローデータは、入力ＦＩＦＯ５１０によって受信されると共に、マルチプレクサ７４４を経由して、記憶するためのバッファ７４２に供給される。データエンジンコア１４２による処理の再開に関して、バッファ７４２に記憶されるデータは、上方の回路部分７２０を下方の回路部分７１０と接続するインタフェース７３０を経由して、処理するために、回路構成７１０の下方部分に供給される。図７の回路構成によって、データストリームはデータの損失なしで中断されることが可能になる。上述のように、データストリーム処理装置１５０は、（少なくとも）そのインタフェースの各々と関連付けられた状態機械を有している。データ異常終了が発生した場合は、後の時点における処理の再開を可能にするために、異常終了動作の前の時点における状態機械の状態が保存されるということが認識されることになる。
【００８６】
図８は、図６のロジック回路によって実行される多重化動作の状態機械表現を概略的に説明する図である。
【００８７】
図８で表されたデータ多重化処理タスクに関して、データストリーム処理装置１５０は、デフォルト出力状態８１０、バッファリング状態８２０、及びバッファデータ読み出し状態８３０を含む３つの処理状態のうちの１つにおいて操作することができる。
【００８８】
状態８１０において、データは、データ入力レジスタ５１０（図４を参照）から直接読み取られると共に、出力データストリームの送信の準備が整ったデータアクセスレジスタ５２０に供給される。状態８２０は、データ入力レジスタ５１０から読み取られたデータが、多重化モジュール５３０によって、出力から要求されるようなときまでの一時記憶のためのバッファ５３２に経路指定されるバッファリング状態である。状態８１０から状態８２０までの状態遷移は、“bufferbytes()”命令の実行の結果生成されるデータストリーム機能装置２２０（図３を参照）からの命令に応答して実行される。（状態８１０から状態８２０までの）この状態遷移が発生した場合、管理ロジック回路３８０によって維持されるカウンタはリセットされ、それ以降、このカウンタは、バッファされたデータストリームの連続したデータ要素の数を記録し、所定のカウント値でバッファリング状態８２０に入ることを保証する。状態８２０において、１度データ要素（例えば、ビット、バイト、またはワード）の要求された数がバッファされたら、その場合には、デフォルトの出力状態に戻る状態遷移が実行される。
【００８９】
もしシステムがデフォルトの出力状態８１０にあるときにデータストリーム機能装置２２０（図３を参照）が“backstep()”命令を実行する場合、その場合に、バッファデータ読み出し状態８３０への状態遷移が発生することになる。バッファデータ読み出し状態８３０において、データストリーム処理装置の管理モジュール３８０は、入力データストリームの一時的なシーケンスにおける以前の地点と対応する、記憶されたデータ要素の記憶場所を決定するために、データストリーム制御器３４０によって参照されると共に、データストリーム制御器３４０は、その記憶されたデータの出力データストリームに対する出力に備えて準備するために、ビットポインタ５２２（図５を参照）をリセットする。これが所定の入力データストリームに対する命令順変更アクセスが達成されるやり方である。データストリーム処理装置１５０が、バッファリング状態８２０か、またはバッファデータ読み出し状態８３０のいずれかにあるときの、データエンジンコア１４２からのデータに関するあらゆる要求は、機能停止に帰着することになる。この機能停止は、図６の装置のマルチプレクサ６２０にゼロを供給することによって達成される。
【００９０】
図９Ａは、ＭＰ３オーディオデータストリームの一部分のフォーマットを概略的に説明する図である。データストリーム処理装置１５０は、ＦＩＦＯデータ入力レジスタ５１０（図３を参照）を使用して、ＤＭＡインタフェース３７０を経由し、順次に入力データストリームにアクセスする。しかしながら、ＭＰ３標準は、以前のフレームに記憶されるメインデータにアクセスするために、入力ＭＰ３データストリームの処理の間、ビットストリームにおいて５１２バイトまで戻ることが可能であることを指定する。ＭＰ３オーディオは、ＭＰＥＧ１のレイヤ３オーディオ、及びＭＰＥＧ２のレイヤ３オーディオと対応すると共に、以下の工業標準規格“IS0-IEC 11172-3”、“IS0-IEC 13818-3”に関係する。
【００９１】
５１２バイトがヘッダの日付、巡回冗長検査（ＣＲＣ）データ、及び側面情報（side information）を除外する点に注意が必要である。そのような“backstep”命令のあとで、全てのヘッダ、ＣＲＣ、及び側面情報は、読み飛ばされる。従って、最高５１２バイトのペイロードデータが、そのペイロードデータと関連付けられたヘッダ、及びＣＲＣ情報が受信される前に、入力データストリームに出現する可能性があるということが認識されることになる。従って、関連するヘッダ情報が受信された後で、しばらくの間このデータをバッファするという要求が存在することになる。
【００９２】
図９Ａを参照すると、代表的なＭＰ３ビットストリーム部分は、全部で６６データ要素“DS[O:65]”を含む。データストリームは、データ要素“DS[O:4]”を含む第１のヘッダ部分９１０と、データ要素“DS[5:34]”を含む第１のペイロードデータ部分９２０と、データ要素“DS[35:45]”を含む第２のペイロードデータ部分９３０と、データ要素“DS[46:50]”を含む第２のヘッダ部分９４０と、そしてデータ要素“DS[51:65]”を含む第３のペイロードデータ部分９５０とを有する。
【００９３】
第１のペイロードデータ部分９２０は、第１のヘッダ部分９１０と結合されている一方、第２のぺーロードデータ部分９３０と、第３のペイロードデータ部分９５０の両方は、第２のヘッダ部分９４０と結合されている。第２のペイロードデータ部分９３０が、関連するヘッダ部分（第２のヘッダ部分９４０）の受信より前に、入力の一時的なシーケンスにおける地点に現れるので、そのペイロードデータが処理されるときに関連したヘッダ情報が利用可能であるように、出力の前に第２のデータ部分９３０をバッファすることは適切である。
【００９４】
図９Ｂは、図９Ａの入力データストリーム部分に関してデータエンジンコア１４２及びデータストリーム処理装置１５０（図３を参照）によって実行される一連のデータ操作（もしくは処理タスク）を概略的に説明する図である。
【００９５】
ステップ１において、第１のヘッダ部分９１０は、データエンジン１４０によって読み込まれる。この動作は、５つのデータ要素を表す５つの入力引数を有する“getbits()”命令のデータストリーム機能装置２２０（図３を参照）による実行に応答して行われる。これは、ＦＩＦＯデータ入力レジスタ５１０から読み出されると共に、出力の準備が整ったデータアクセスレジスタ５２０（図５を参照）に供給されたデータ要素“DS[O:4]”に帰着する。
【００９６】
ステップ２において、第１のペイロードデータ部分９２０は、入力データレジスタ５１０から読み取られる。これは、プログラム命令“getbits(30)”を実行するデータストリーム機能装置２２０によって達成されると共に、その結果データ要素“DS[5:34]”が、入力データレジスタ５１０から除去され、出力の用意のためにデータアクセスレジスタ５２０に記憶される。
【００９７】
ステップ３において、第２のぺーロードデータ部分９２０は、データ入力レジスタ５１０から読み取られると共に、それが一時記憶のためのバッファ５３２に導かれる多重化モジュール５３０に供給される。この動作は、データストリーム機能装置２２０による命令“bufferbits(11)”の実行に応答したデータストリーム処理装置１５０によって行われる。“DS[35:45]”と対応する１１個のデータ要素は、バッファに記憶される。管理モジュール３８０（図３を参照）は、どのデータ要素がバッファされるかということ、及びそれらが記憶されるバッファの位置を保存する。
【００９８】
ステップ４において、第２のヘッダ部分９４０は、入力データレジスタ５１０から読み取られると共に、出力データストリームの送信の準備が整ったデータアクセスレジスタ５２０に記憶される。第２のペイロードデータ部分９３０のデータ要素が、ステップ３でバッファされたので、第２のヘッダ部分は、第１のペイロードデータ部分９２０の後に直接出力されることになる。
【００９９】
ステップ５において、データエンジンコア１４２は、バッファ５３２にアクセスする準備をする。従って、データストリーム機能装置２２０は、命令“backstep(11)”を実行すると共に、その結果、出力データストリームに供給するためのデータの現在の出力位置を制御するビットポインタ５２２が、“DS[35]”、すなわち第２のペイロードデータ部分の開始点３５に対応するように巻き戻される。
【０１００】
ステップ６において、第２のペイロードデータ部分９３０は、データアクセスレジスタ５２０から出力するための準備が整ったバッファから読み出される。ビットポインタ５２２が、ステップ５においてリセットされたので、このデータは、データストリーム機能装置２２０による命令“getbits(11)”の実行によって、出力データストリームに加えられ得る。
【０１０１】
最終的に、ステップ７において、（第２のペイロードデータ部分９３０と同様に、）第２のヘッダ部分と結合された第３のペイロードデータ部分９５０は、入力データレジスタ５１０から読み取られると共に、出力の準備が整ったデータアクセスレジスタ５２０に記憶される。これは、データストリーム機能装置２２０による命令“getbits(15)”の実行によって達成され、それに応答してデータ要素“DS[51:65]”が出力される。
【０１０２】
図１０は、図３のバッファがソフトウェアＦＩＦＯとして実装される装置を概略的に説明する図である。図１０は、データストリーム処理装置１５０、及びデータエンジンコア１４２の構成要素のサブセットを示すと共に、それらの双方向の情報授受（双方向通信）をソフトウェアＦＩＦＯ１００５によって説明する。ソフトウェアＦＩＦＯ１００５は、データストリーム制御器３４０と接続され、データストリーム制御器３４０は、バッファリングのために、ソフトウェアＦＩＦＯ１００５に対して入力データストリームのデータ要素を選択的に供給するように動作可能である。データストリーム制御器３４０は、管理モジュール３８０によって維持される管理レコードに記憶されるローカルなヘッドアドレス１０１０、及びローカルなテールアドレス１０２０のうちの少なくとも１つに応答して、ソフトウェアＦＩＦＯ１００５の注入と排出を管理するように動作可能である。ソフトウェアＦＩＦＯと関連付けられたメモリ領域は、パーティションポインタによって定義される。
【０１０３】
ローカルなヘッドアドレス１０１０、及びローカルなテールアドレス１０２０は、ソフトウェアＦＩＦＯ１００５として使用するように割り当てられたメモリ領域と関連付けられた物理アドレスである。ヘッドポインタ１０１０は、新しいデータ要素がデータ入力レジスタ５１０（図５を参照）からソフトウェアＦＩＦＯ１００５によって受信されたときに書き込まれるメモリ位置を制御する。テールポジションの、もしくはテールポジションに近接するデータ要素が、例えば、それらが出力データストリームに既に送られたので、もはや必要とされないとき、テールポインタ１０２０は前進する。
【０１０４】
管理モジュール３８０は、バッファに記憶されたどのデータ要素がもはや必要とされないかを記録すると共に、ヘッドポインタ１０１０、及びテールポインタ１０２０の前進を管理する。しかしながら、管理モジュール３８０によって記憶される現在のポインタ値を変更するための指令信号をデータストリーム制御器３４０に送信するデータストリーム機能装置２２０による命令の実行に応答して、これらの２つのポインタ１０１０、及びポインタ１０２０は、同様に変更され得る。これの例は、図９Ｂのステップ５を参照して上述された。
【０１０５】
ヘッドポインタは、ＤＭＡインタフェース３７０及びデータ受信モジュール３２０を介してデータストリーム処理装置に提供されたＤＭＡデータと、バッファにおける利用可能空間（ヘッドがまだテールに噛みついていない）とに基づいて移動される。テールポインタは、制御インタフェース３５０から出力された“getbit()”タイプの命令に応答して更新される。しかしながら、そのテールポインタは、“forward()”命令（“bufferbytes()”命令に等価である）の後で修正されない。
【０１０６】
ソフトウェアＦＩＦＯ１００５は、ヘッドポインタ、及びテールポインタが、各々記憶されるデータの開始、及び終了を定義すると共に、循環型バッファに関する従来の方法において、メモリアドレス空間の終りで循環する循環型バッファメモリ（リングバッファ）として形成される。
【０１０７】
データストリーム処理装置１５０を備えないシステムにおいてデータ処理動作を実行するために、プログラマによって、多数のデータ処理動作がソフトウェアにおいて明白に指定される必要がある。例えば、以下に示す（Ｃプログラミング言語で書かれた）プログラムコードの一部分は、本技術による“getbits()”命令に相当する機能、すなわちデータストリームのデータの部分の読み出し機能を実行する。
【０１０８】
【数１】
2006313546.tif 000003
【０１０９】
上述のプログラムコードから、ビット整列、マスキング、及び連結のようなデータ処理動作は、ソフトウェア機能において指定されるということが分かる。本技術によれば、これらのデータ処理動作の全ては、プログラマから取り除かれる。本技術に従ってデータの部分を読み出すために、データエンジンコア１４２は、“getbits()”命令を単に実行すると共に、これは制御インタフェース３５０（図３を参照）に送信される制御信号に帰着し、それに応答してデータストリーム処理装置１５０は、データストリームからのデータの部分の読み出しを実行する。
【０１１０】
上述のプログラムコードは、読み出されたデータのフォーマットがシステムの物理的性質、すなわちバス幅及びポート幅によって決定されるシステムにおいて使用するためのものである。
【０１１１】
図１１Ａは、データワード１１００からデータの部分が読み出される上述のプログラムコードにおける“事例１”を概略的に説明する図である。図１１Ａにおいて、バス幅（ワード長と等価である）は、Ｎビットであると共に、読み出されるべきデータの部分は、データ部分“bits2get”と対応する。この場合に、データの要求されたビット数は、それが１つのデータワード１１００の中に含まれるほど十分に小さい。部分１１１０は、既に消耗されたデータと対応する。利用可能なデータのうちで、サブセットのみが“bits2get”と対応する。このデータを読み出すために、利用可能なビットは、最下位ビット（ＬＳＢ）配列される（least significant bit (LSB) aligned）と共に、ワードの不必要なビットはマスクされる。
【０１１２】
図１１Ｂは、上述のプログラムコードにおける“事例２”を概略的に説明する。この例において、読み出されるべきビット“bits2get”は、２つのデータワード、すなわち第１のデータワード１２００、及び第２のデータワード１３００に及ぶ。第１のデータワード１２００のデータ部分１２１０は、既に消耗されたビットと対応する。第１のデータワード１２００の利用可能なビット“part1bits”は、データの要求を満たすのに数において十分ではなく、従って、データワード１３００が同様に読み出されなければならないと共に、要求を満たすために必要とされるビットの追加の数と対応する第２のデータワード“part2bits”の部分は、第２のデータワード１２００から抽出される。第１のデータワード１２００からの“part1bits”、及び第２のデータワードからの“part2bits”は、その場合に、出力の準備をするためにＬＳＢ配列（LSB alignment）形式で連結される。
【０１１３】
図１２Ａ、及び図１２Ｂは、“setcount()”命令の使用を概略的に説明する図である。“setcount()”命令、及びresetcount()命令は、データストリームアクセスを更に安全にするために、明確に提供される。
【０１１４】
図１２Ａにおいて、“setcount()”命令の引き数は、データストリームから読み取られ得るビットの数に対する制限がないということを意味するデフォルト値である。従って、データストリームのポインタは、無制限にインクリメントされ得る。しかしながら、データストリームのポインタが、ポインタの値を少なくとも含む関連する状態を有する点に注意が必要である。追加の状態変数は、データポインタがロックされるか、もしくは解除されるかどうかに対応する。ロックされた状態において、データ出力は防止される。
【０１１５】
図１２Ｂにおいて、“setcount()”命令は、引数Ｍを有している。これは、“setcount(M)”命令に関連付けられた命令（すなわち、制御信号）が、データエンジンコア１４２からデータストリーム処理装置１５０（図３を参照）に送信された瞬間に、ビットポインタの状態と関連するデータポインタ状態に関する上限を設定する。図１２Ｂにおいて、“setcount(M)”命令がデータストリーム処理装置１５０に送信されたときのデータストリームポインタの状態は“t”の値に対応した。データストリームポインタが“(t+K)”の値を有するときの状態と対応する次の時刻において、データ読み出し命令“getElements(P)”の実行に起因する命令信号が、データストリーム処理装置１５０によって受信された。“getelements(P)”命令は、データストリームからＰ個のデータ要素の読み出しを要求した。しかしながら、図１２Ｂで示されたように、Ｐ個のデータ要素の読み出しは、データストリームポインタに関する“setcount(M)”のしきい値を越えることに帰着する。しきい値は、“t+M”に等しい。従って、“getElements(P)”動作の出力は、無効であると宣言される。
【０１１６】
本発明の実施例の上述の討論において、メインプロセッサ（すなわち、メイン処理装置）は単一のデータエンジンに接続されると説明された一方、それは、同様に、複数のデータエンジンを備える単一の階層に接続されることができるであろう。多くのデータエンジンを階層型方式で配置することが同様に可能である。例えば、メインプロセッサは、自身をデータエンジンとして更に高いレベルの階層に提示し得る。
【０１１７】
興味のある読み手のために、本発明の実施例の更に一般的な特徴が、以下の段落において説明される。
【０１１８】
「概観」
“AudioDE”は、ポータブルオーディオアプリケーション内に内蔵されたデジタル信号処理に合わせて調整される、アプリケーションクラス特有のデータエンジンである。構造上の特性の組み合わせ、及び高度に並列処理化しているコンパイラは、オーディオアプリケーションに関する最小の電力及び領域の要求に帰着する解決法をもたらす。付随の専用システム関数、及び一般的な“ARM-AMBA”インタフェース関数（AIKO）は、“AudioDE”の容易な集積化をサポートする。
【０１１９】
「導入」
“AudioDE”のための設計目標は、ポータブルオーディオプレーヤーの必要条件、すなわち電力及び領域に関する性能（ＰＰＡ）の最大化に焦点を合わせる。これは、まだ小さなコアサイズ、及び小さなメモリフットプリントで、そのタスクのために最小の“MHz”を必要とするデジタル信号処理プラットフォーム（ＤＳＰ）に帰着する。整数及び分数の両方のデータ計算に関して、マイクロ構造が標準のＤＳＰ命令セットを特色とするので、名前にもかかわらず、他のＤＳＰアルゴリズムに対して“AudioDE”が等しくうまく用いられ得る。
【０１２０】
“AudioDE”コアは、計算のリソース、レジスタファイル、メモリ帯域幅、及びアドレス生成能力の間のバランスをとる。この特性は、可変長−ロング命令ワード（Variable Length - Long Instruction Word：ＶＬ−ＬＩＷ）制御器に関する複数の命令セットと共に、興味のある応用分野では一般的であるので、“MHz”要求を最小限にする非常に速い極めて並列的なアルゴリズムの開発を可能にする。
【０１２１】
“AudioDE”は、単一の２４ビットの整数演算装置（Arithmetic Logic Unit：ＡＬＵ）と、４８ビットの累算を行う単一の２４ｘ２４ビットの積和演算装置（Multiplier and Accumulator unit：ＭＡＣ）とを備えるデュアルハーバード構造である。これらのユニットは、２つのデータメモリポート、及び付随のアドレス生成器と、並列に動作する。効率的な単一サイクルメモリアクセスは、ビット反転、及びモジュロアドレス指定のような全てのアドレス指定モードに関してサポートされる。
【０１２２】
ＡＬＵは、圧縮されたメディアファイルに関して典型的であるビットストリームアクセスを容易にするための命令によって拡張される。この特徴によって、“AudioDE”は、ＤＭＡ駆動された入力ストリームのデータを直接処理することが可能になると共に、多くの標準に共通であるように、ストリームにおける命令順変更アクセスに関する自動バッファリング設備を提供する。メモリポートのような他の外部インタフェースと同じように、データが利用不可能であるときに、“AudioDE”は自動的に低電力モードに入る。
【０１２３】
“OptimoDE”構造は、総合的な一式の開発ツールを搭載している。これらのツールは、コア、命令セットシミュレータのようなシミュレーション手段の強化を可能にする構造上の手段、及び“OptimoDE”の高度な並列処理化コンパイラの両方を備えている。コンパイラは、あらゆる手作りのアセンブリライブラリと同じくらい良好なコード効率を達成する。それらのツールが対話型環境において操作され得るので、ソースレベルにおける最適化のため、及びスピードとオブジェクトコードサイズとの間のトレードオフのためにフィードバックが提供される。
【０１２４】
ＭＰ３デコーダは、“AudioDE”コア、及び“OptimoDE”ツールの効率に関する良い例である。デコーダは、２２［Ｋｂｙｔｅ］のプログラム、及び２２［Ｋｂｙｔｅ］のデータメモリを備えて、わずか８［ＭＨｚ］サイクルを必要とするようにプログラムされ得ると共に、４２［Ｋｇａｔｅ］コアに対する１．２［Ｖ］の印加で、０．１３［μｍ］のＣＭＯＳにおける０．８［ｍＷ］の電力消費をもたらす。
【０１２５】
「“OptimoDE”技術」
“AudioDE”は、構造の一部として提供された標準のツール及びＩＰフレームワークを使用して、標準の“OptimoDE”構造から得られる。これは、特定の構成がこの明細書において提示されるけれど、更に良くアプリケーションに適合する変形、または拡張を生成することは簡単であるということを意味する。データエンジンの開発サイクルには以下の３つの段階がある。:
【０１２６】
−設計段階：マイクロ構造の選択、または創作。
−プログラミング段階：データエンジン上で動作することになるタスクに関する、固定された構造のためのソースコードのコンパイル、及びプロファイリング、
−実装段階：合成可能な“Verilog”におけるマイクロ構造の具体化。これは、標準の具体化、もしくは利用者に定義されたリソースの具体化を包含する。
【０１２７】
マイクロ構造が修正され得るとき、最初の２つの段階は反復過定になり得る。全てが１つのフレームワークの一部である構成ツールは、この過程を単純化する。他の場合は、最後の２つの段階のみが適用できると共に、固定された構造のためのマシンコードのみが生成されることになる。図１３は、この過程を説明する。
【０１２８】
設計段階の結果は、“DesignDE”構成ツールによる固定の特性を有するマイクロ構造のリリースである。ＩＳＳモデルが、同様に生成される。
【０１２９】
この過程の一部分は、関連したコードフラグメントのプログラミングとプリファイリングを包含すると共に、マイクロ構造を改善する特定の目的がなければ、以下に説明されたプログラミング段階と等しい。
【０１３０】
“DesignDE”は、いくつかの構成要素を備えている。構成ツールは、所定のマイクロ構造を取り込むと共に、容易な修正及び拡張を可能にする。後者の事例において、デザイナーはデータ経路リソース間の相互接続を定義する。機能装置を有する標準のリソースライブラリが提供される。
【０１３１】
利用者に定義されたリソースの設計は、そのような構成要素のライブラリを維持すると共に、“C”、“C++”、または“システムC（System C）”のソース記述から“Verilog”を生成するライブラリアン（Librarian）によって促進される。この“Verilog”は、機能的に正しいと共に、合成可能である。
【０１３２】
プログラミング段階の結果は、提供されたマイクロ構造のための所定のソースコードと対応する“DEvelop”コンパイラによるマイクロコードのリリースである。
【０１３３】
ソースコードのコンパイルは、対話型方式で実行される。“DEvelop”は、詳細なスケジュール、及びリソースの使用法に関して、詳細で静的なプロファイリング結果を提供する。
【０１３４】
改良された動的なプロファイリングは、マイクロ構造を補足するＩＳＳモデルに基づいて実行され得る。
【０１３５】
実装段階の結果は、“BuildDE”ツールによって例示されたマイクロ構造の合成可能な“Verilog”である。コード開発が設計段階の結果のみを必要とするので、実装段階は、それとの並列処理において実行され得ると共に、従って、経過時間を減少させる。
【０１３６】
「アプリケーションクラス特有の設計フロー」
“AudioDE”は、“OptimoDE”ツールを用いて構成されたコアの特有の結果である。“OptimoDE”の開始するマイクロ構造のうちの１つからスタートして、このセクションは、“AudioDE”の設計過程を示す。
【０１３７】
図１４は、設計過程における様々なステップを説明する。処理の目的は、過剰設計のリスクを除外する一方、コアコストとその効率との間のバランスを発見することである。
【０１３８】
アルゴリズム及びアプリケーションクラス分析：出発点として、多くの現存するオーディオアプリケーション、及び一般的なＤＳＰアプリケーションが分析されて、輪郭を描かれた。とりわけ、以下の観測結果は、オーディオアルゴリズムに関連したと思われた。：
【０１３９】
−ノイズ要求は、中間のスケーリングオーバーヘッドを減少させる２４ビットデータ経路を支持する。
−オーディオ符号化アルゴリズムは、ＭＡＣの集中的フィルターバンクに基づいている。
−可変長データは、ビットストリームから読まれると共に、ビットストリームに挿入される。
【０１４０】
それら、及び更に精巧な観測結果が、命令セット特殊化、もしくはデータ経路の並列処理化のいずれかによって解決されるべきマイクロ構造に関する性能予測を定義するために使用される。
【０１４１】
アプリケーション特有のリソース、及び命令セット：“AudioDE”に関するこの方法のアプリケーションのうちの１つは、ビットストリームアクセスに関する標準のＡＬＵの強化に帰着した。アルゴリズム分析が示すのは、特にこの目的のための命令を提供することが特筆すべき節約に帰着するということである。
【０１４２】
この特殊化は、計算周期の“MHz”を節約するばかりでなく、ストリーミングメディアに対する統一されたインタフェースを提供することにより、構造上の複雑さを減少させるので、特に効果的である。
【０１４３】
一般的に、“AudioDE”は、信号処理のための分数演算、標準の“C”のサポートのための整数演算、及びゼロオーバーヘッドアドレス計算（zero-overhead address computation）のための拡張された命令に関して等しい注意を有する豊かな命令セットを特色とする。
【０１４４】
システム構造チューニング：マイクロ構造定義のこの特徴は、継続的なゼロオーバーヘッド並列ＭＡＣスタイル計算（zero-overhead parallel MAC-style computation）を実行する能力に対応する。性能インジケータは、伝統的なＤＳＰベンチマークアルゴリズムと、オーディオアプリケーションにおいて発見されたフィルタコードの両方である。
【０１４５】
このチューニングステージは、領域及び電力消費に関して効率的な状態を維持する一方、高スループットの計算をサポートするデータ経路を定義した。従って、“AudioDE”システム構造は、単一のＭＡＣ及びＡＬＵだけを含むように選択された。これが動作の並列処理を制限するけれども、ＡＬＵ及びＭＡＣは、ユニット上に１００％の負荷がある状態でアルゴリズムが操作され得るように配置され、従って、高いレベルのデータ移動の並列処理を提供する。
【０１４６】
「“AudioDE”ハードウェア構造」
全体のハードウェア構造は、図１５において説明される。
【０１４７】
“AudioDE”は、多重命令セット、及び可変長−ロング命令ワード（Variable Length - Long Instruction Word：ＶＬ−ＬＩＷ）を備える低分岐遅延制御器（low branch delay controller）を特色とする。“OptimoDE”コンパイラは、全てのプログラムにおいて命令及びデータのパイプラインの十分な可視性を備えていると共に、ループ制御の複雑さは、ハードウェアの複雑さを減少させる開発ツールによって解決される。
【０１４８】
全ての“AudioDE”機能装置は、内部のパイプラインがない単一サイクルである。“OptimoDE”コンパイラが全てのデータ経路動作の原因となるので、制御器におけるいかなる修正もなく、更に高いクロック周波数を達成するために、装置はパイプライン化され得る。
【０１４９】
“AudioDE”データパスは、２４ビットＡＬＵ、及び２４ビットＭＡＣ装置から構成される。ＭＡＣユニットは、単精度乗算（single-precision multiplication）、または単一サイクル倍精度累算（single-cycle, double-precision accumulation）を実行する。分数乗算は、出力の自動位置合せによってサポートされる。飽和装置は、装置の不可欠な部分であるので、全ての命令は、飽和状態にするか、または非飽和状態にすることができる。更に、ＡＬＵとＭＡＣの両方は、乗算、右シフト、及び型変換のために、絶対的かつ明白な丸め命令をサポートする。
【０１５０】
データ経路は、大きな高帯域幅レジスタファイルを特色とする。そのサイズは、ＦＦＴ及びＤＣＴ、または同様のアルゴリズムの高スピードの基数４の計算に適当である。
【０１５１】
“AudioDE”コアにおける構造上の複雑さを減少させると共に、コンパイラのタスクを単純化するために、算術データ経路は、比較的に、以下で説明されるアドレス生成データ経路から分離される。
【０１５２】
高い基数のアルゴリズムと同様に、シンプルな単一サイクルの積和演算シーケンスを維持するために、第３の単一ワイドプログラムメモリポート（third single-wide program memory port）の隣に、２つの独立したデータメモリポートが提供された。
【０１５３】
原価重視の内臓されたアプリケーションに関するメモリ必要条件を最小限にするために、Ｘ−メモリ及びＹ−メモリは、非対称的な状態にされる。Ｘ−メモリのみが、典型的なオーディオ処理要求を満たすために、２４ビット幅であり、一方Ｙ−メモリは、整数及び係数データに十分な１６ビットに最適化される。大きなデータ経路レジスタファイルは、２４ビットデータがＸ−メモリにのみ制限されるという事実と関連付けられた不利な条件がないということをが保証する。
【０１５４】
上記のセクションにおいて論じられたように、コスト最適化、及びシステム集積化問題に関して全体の自由を与えるために、“AudioDE”のメモリは、データ経路の外にある。
【０１５５】
各データメモリは、１５ビットアドレス範囲を有するそれ自身のアドレス生成器を備えている。これがシングルタスクに関して維持されるアドレス範囲である点に注意が必要であり、トータルのアドレス範囲は、サブシステムにおけるメモリ管理機能によって拡張され得る。
【０１５６】
アドレス生成器は、自動モジュロアドレス指定、及びプログラム可能なビット反転アドレス指定を含む全てのモードにおいて、単一サイクル動作が可能である。後者は、特にＦＦＴアルゴリズムにとって重要である。
【０１５７】
電力、領域を節約すると共に、複雑さを制御するように、利用可能な１次ポインタ及び２次ポインタ操作レジスタフィールドの数は最適化される。
【０１５８】
ストリームインタフェースは、プログラミングと集積化の両方の観点から、改良された性能及び減少された複雑さに関する“AudioDE”のユニークなマルチメディアの特定の機能である。
【０１５９】
このインタフェースによって、“AudioDE”は、ＤＭＡスレーブ装置として接続されると共に、ホストシステムとの更なる双方向の情報授受（双方向通信）の必要性なしで、ビットストリームを処理することが可能になる。
【０１６０】
そのデータ経路ＡＰＩは、自動データ位置合せ機能を有する可変長ビットストリームアクセスに関する機能、及び一定ビットレート（Constant Bit-Rate：ＣＢＲ）オーディオ符号化アルゴリズムにおいては一般的であるビットストリームに対する命令順変更アクセスのためのストリームバッファと巻き戻し機能を提供する。
【０１６１】
「電力減少機能」
低電力消費に関する一般的な“OptimoDE”アプローチは、利用可能な並列処理全てを活用することによって“MHz”要求を減少させることである。これは、非常に高いリソース活動を伴う非常に濃密なコードに帰着し、従って、同様にリソースの不必要なオンオフトグリング（on-off toggling）を最小限にする。更に、ループ本体に関して、そのような濃密なコードは、キャッシュか、もしくはコアの外側のシステムの範囲内でのメモリ管理に関する他の最適化に適当である。
【０１６２】
それらの構造上の利点は別として、“AudioDE”コアは、追加の電力節約技術を備えている。その特定の低電力ライブラリに加えて、ＡＲＭ社の物理的ＩＰ部門から提供されるライブラリがシリコン−マッピングの間に使用され得る。
【０１６３】
クロックゲーティング：“AudioDE”コア記述は、十分に業界標準クロックゲーティングと互換性がある。
【０１６４】
“AudioDE”は、特に、ストリーミングインタフェースと、外部記憶装置使用の両方のために設計されている。データが利用不可能である場合、“AudioDE”コアは、自動的に低電力機能停止モード（low-power stall mode）に入る。
【０１６５】
“OptimoDE”コンパイラは、完全な命令及びデータパイプラインの十分な可視性を備えている。従って、データが入力に利用可能であるに違いないとき、もしくはそれが生じるとき、この特性は、予期しないパイプライン機能停止、及び関係がある追加の論理回路を回避する。
【０１６６】
「システム集積化」
“AudioDE”はデータエンジンに関係するけれど、それは、同様に明確に費用効率がよいシステム集積化のためにも設計される。この理由によって、いくつかの構成要素は、例えばＤＭＡ制御器のような、システムに既に存在するブロックとこれらの機能を共有する可能性を提供するために、コアから明白に除外された。
【０１６７】
原価重視のシステムメモリの特徴に関して、最適化に関する同じ自由がシステム設計者に提供される。システム集積化シナリオの２つの例が、以下で説明される。両方のシナリオは、“OptimoDE”のためのＡＭＢＡ集積化キット（AMBA Integration Kit：ＡＩＫＯ）のような標準の“OptimoDE”の構成要素によってサポートされる。
【０１６８】
最小限コストの解決法：このシナリオは、アプリケーション柔軟性を犠牲にして見えてくる、電力を最適化されると共に領域を最適化された解決法に対応する。これは、例えば低コストでポータブルのフラッシュカードをベースにしたオーディオプレーヤー製品に適合するであろう。
【０１６９】
この場合、“AudioDE”は、ローカルな専用のメモリに統合される。メモリサイズ及び接続形態は、最も良い結果の関数として自由に選択され得るので、この構成は、電力消費を最小限にする。更に、ストリーミングインタフェースは、あらゆる高速なシステムの双方向通信（system interaction）の必要性を完全に取り除き、従って“AudioDE”が非常に効率的な高性能の周辺装置として動作することを可能にする。
【０１７０】
ＡＩＫＯインタフェースは、それらのメモリが常にシステムに対して見えるということを保証する。
【０１７１】
柔軟性のある共用メモリ構造：このシナリオは、最小のメモリ電力消費の制限下にあるアプリケーション開発に関する最高の柔軟性を対象にする。そのようなアプリケーションの例は、多くの異なるコーデックをサポートするオーディオプレーヤーであろう。
【０１７２】
ホストバス、またはＤＭＡコントローラのようなあらゆるシステムリソースと同様に、この場合、全ての“AudioDE”メモリポートは、柔軟性のある単一のレベルの共用メモリアービタ回路（single-level shared memory arbiter）に接続される。この構成は、まだ最小の電力消費のための最適なメモリサイズ及びレイアウトを可能にする一方、全てのシステム機能のロックフリー（lock-free）、及びスターベイションフリー（starvation-free）の動作を保証する。
【０１７３】
特にこの“AudioDE”のサブシステムは、同様に、メモリ及びタスクのアドレス空間の動的な構成を可能にするための軽量のメモリ管理機能を特色とする。
【０１７４】
「ＭＰ３アプリケーション例」
性能証明の要点を確立する手段として、IS0/IEC仕様のＭＰ３デコーダアルゴリズムが“AudioDE”のためにコンパイルされた。このアルゴリズムには、２つの明白な特徴がある。第１に、ビットストリームデコード及び逆量子化（dequantize）機能は、ステレオ処理、及び大きな２ステージの合成フィルターバンクが後に接続される。
【０１７５】
コードの最初の部分は、豊かな“AudioDE”ビットストリームアクセスＡＰＩを使用した。これは、シンプルかつコンパクトで、非常に効率的なコードに帰着した。アルゴリズムの第２の部分は、“AudioDE”の高い基数の処理能力を利用するために組織化された。両方のセクションのために、Ｃコードがソース言語として使用された。
【０１７６】
その結果生じるアルゴリズムは、３２０［Ｋｂｉｔ／ｓ］のビットストリームから、４８［ＫＨｚ］でサンプリングされたステレオの信号のために８［ＭＨｚ］周期を必要とした。このコードは、２２［Ｋｂｙｔｅ］のプログラムメモリ、及び２２［Ｋｂｙｔｅ］のデータメモリを使用した。電力節約技術を配置することは、上記のセクションにおいて、ＡＲＭ社の物理的ＩＰ低電力ライブラリ（Physical IP low-power libraries）を使用して、１．２［Ｖ］で０．１３［μｍ］のＣＭＯＳにおける０．１［ｍＷ／ＭＨｚ］の電力消費を有する４２［Ｋｇａｔｅ］コアをもたらす、と記述した。そのようなオーディオストリームを復号化する場合、“AudioDE”コアに関する電力消費は、ちょうど０．８［ｍＷ］以下であり、一方、最適なメモリサブシステムによって、全消費電力は、十分に２［ｍＷ］未満となるであろう。
【０１７７】
「結論」
“AudioDE”は、“OptimoDE”構造から得られると共に、標準が供給された構成ツール及び開発ツールを使用する、小さくかつ電力の効率的なコアである。これの結果は、半分のゲート及びリソースにより、まだほぼ代替解決法の２倍のスピードでＭＰ３ベンチマークアルゴリズムを実行することが可能な設計である。
【０１７８】
発明の実例となる実施例が添付図面を参照してここに詳細に示されたが、本発明がそれらの厳密な実施例に限定されないと共に、添付された特許請求の範囲によって定義された発明の範囲、及び精神から逸脱することなく、当業者により、それに対する様々な変更、及び修正が達成され得ると理解されるべきである。
【図面の簡単な説明】
【０１７９】
【図１】データ処理システムを概略的に説明する図である。
【図２】更に詳細に図１のデータエンジンを概略的に説明する図である。
【図３】図１のデータストリーム処理装置の中のロジック回路、及び、どのようにデータストリーム処理装置がデータエンジンコアとインターフェイスするかを概略的に説明する図である。
【図４】どのように一連のデータストリーム処理タスクが図１のデータ処理装置によって実行されるかを概略的に説明するフローチャートである。
【図５】データストリームのデータ要素の入力及び出力を、それらが通過するとき管理するためにデータストリーム演算処理装置１５０の中で使用されるロジック回路を概略的に説明する図である。
【図６】データストリーム処理装置を通過するデータの流れを制御するロジック回路を概略的に説明する図である。
【図７】データストリーム処理装置を通過するデータの流れを制御すると共に、同様に、データ転送が中断されたとき、転送中の保留データを記憶するように動作可能であるロジック回路を概略的に説明する図である。
【図８】図６のロジック回路によって実行される多重化動作の状態機械表現を概略的に説明する図である。
【図９Ａ】ＭＰ３オーディオデータストリームの一部分のフォーマットを概略的に説明する図である。
【図９Ｂ】図９Ａの入力データストリーム部分に関してデータエンジンコア及び図３のデータストリーム処理装置によって実行される一連のデータ操作（もしくは処理タスク）を概略的に説明する図である。
【図１０】図３のバッファがソフトウェアＦＩＦＯとして実装される装置を概略的に説明する図である。
【図１１Ａ】所定のサイズを有するデータワードからのデータ部分の読み出しを説明する図である。
【図１１Ｂ】所定のサイズを有するデータワードからのデータ部分の読み出しを説明する図である。
【図１２Ａ】どのように“setcount()”命令がデータ保護機能を実行するかを概略的に説明する図である。
【図１２Ｂ】どのように“setcount()”命令がデータ保護機能を実行するかを概略的に説明する図である。
【図１３】本発明の実施例の一般的な特徴を概略的に説明する図である。
【図１４】本発明の実施例の一般的な特徴を概略的に説明する図である。
【図１５】本発明の実施例の一般的な特徴を概略的に説明する図である。
【符号の説明】
【０１８０】
１１０    メイン処理装置
１２０    メモリ
１３０    直接メモリアクセス（ＤＭＡ）制御器
１４０    データエンジン
１４２    データエンジンコア
１５０    データストリーム処理装置
１６０    システムバス
２１０    データエンジン制御器
２２０    データストリーム機能装置
２３０    複数の他の機能装置
３１０    構成モジュール
３２０    データ受信モジュール
３３０    バッファインタフェース
３３２    バッファ
３４０    データストリーム制御器
３５０    制御インタフェース
３６０    アクセラレータインタフェース
３６２    アクセラレータ
３７０    ＤＭＡインタフェース
３８０    管理モジュール
５１０    データ入力レジスタ
５２０    データアクセスレジスタ
５２２    ビットポインタ
５３０    多重化モジュール
５３２    内部バッファ
８１０    デフォルト出力状態
８２０    バッファリング状態
８３０    バッファデータ読み出し状態
１００５    ソフトウェアＦＩＦＯ
１０１０    ヘッドアドレス
１０２０    テールアドレス
【図１】
2006313546.tif 000004
【図２】
2006313546.tif 000005
【図３】
2006313546.tif 000006
【図４】
2006313546.tif 000007
【図５】
2006313546.tif 000008
【図６】
2006313546.tif 000009
【図７】
2006313546.tif 000010
【図８】
2006313546.tif 000011
【図９Ａ】
2006313546.tif 000012
【図９Ｂ】
2006313546.tif 000013
【図１０】
2006313546.tif 000014
【図１１Ａ】
2006313546.tif 000015
【図１１Ｂ】
2006313546.tif 000016
【図１２Ａ】
2006313546.tif 000017
【図１２Ｂ】
2006313546.tif 000018
【図１５】
2006313546.tif 000019
【図１３】
2006313546.tif 000020
【図１４】
2006313546.tif 000021
【手続補正書】
【提出日】平成18年6月14日(2006.6.14)
【手続補正１】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2006313546.tif 000022
【図２】
2006313546.tif 000023
【図３】
2006313546.tif 000024
【図４】
2006313546.tif 000025
【図５】
2006313546.tif 000026
【図６】
2006313546.tif 000027
【図７】
2006313546.tif 000028
【図８】
2006313546.tif 000029
【図９Ａ】
2006313546.tif 000030
【図９Ｂ】
2006313546.tif 000031
【図１０】
2006313546.tif 000032
【図１１Ａ】
2006313546.tif 000033
【図１１Ｂ】
2006313546.tif 000034
【図１２Ａ】
2006313546.tif 000035
【図１２Ｂ】
2006313546.tif 000036
【図１３】
2006313546.tif 000037
【図１４】
2006313546.tif 000038
【図１５】
2006313546.tif 000039
【外国語明細書】
2006313546.tif 000040
2006313546.tif 000041
2006313546.tif 000042
2006313546.tif 000043
2006313546.tif 000044
2006313546.tif 000045
2006313546.tif 000046
2006313546.tif 000047
2006313546.tif 000048
2006313546.tif 000049
2006313546.tif 000050
2006313546.tif 000051
2006313546.tif 000052
2006313546.tif 000053
2006313546.tif 000054
2006313546.tif 000055
2006313546.tif 000056
2006313546.tif 000057
2006313546.tif 000058
2006313546.tif 000059
2006313546.tif 000060
2006313546.tif 000061
2006313546.tif 000062
2006313546.tif 000063
2006313546.tif 000064
2006313546.tif 000065
2006313546.tif 000066
2006313546.tif 000067
2006313546.tif 000068
2006313546.tif 000069
2006313546.tif 000070
2006313546.tif 000071
2006313546.tif 000072
2006313546.tif 000073
2006313546.tif 000074
2006313546.tif 000075
2006313546.tif 000076
2006313546.tif 000077
2006313546.tif 000078
2006313546.tif 000079
2006313546.tif 000080
2006313546.tif 000081
2006313546.tif 000082
2006313546.tif 000083
2006313546.tif 000084
2006313546.tif 000085
2006313546.tif 000086
2006313546.tif 000087
2006313546.tif 000088
2006313546.tif 000089
2006313546.tif 000090
2006313546.tif 000091
2006313546.tif 000092
2006313546.tif 000093
2006313546.tif 000094
2006313546.tif 000095
2006313546.tif 000096
2006313546.tif 000097
2006313546.tif 000098
2006313546.tif 000099
2006313546.tif 000100
2006313546.tif 000101
2006313546.tif 000102
2006313546.tif 000103
2006313546.tif 000104
2006313546.tif 000105
2006313546.tif 000106
2006313546.tif 000107
2006313546.tif 000108
2006313546.tif 000109
2006313546.tif 000110
2006313546.tif 000111
2006313546.tif 000112
2006313546.tif 000113
2006313546.tif 000114
2006313546.tif 000115