(57)【要約】  第１のセットの命令と入来データがデータドリブン型プロセッサの第１の処理ユニットに供給され、入来データが処理される。第１の処理ユニットは、第１のセットの命令が外部メモリとの間で読み出しまたは書き込みのいずれかを必要とすると判断すると、それに応じて、プロセッサの第２の処理ユニットと外部メモリの間に論理チャネルを設定し、追加データをその外部メモリとその第２の処理ユニットとの間で転送する。この機能は、第１の呂利ユニットにデータポートとは別に制御ポートを付加することにより実現できる。第１の処理ユニットは、プロセッサのメモリアクセスユニットデータチャネルを介して追加データを読み出しまたは書き込みするために、制御ポートにより、アドレス情報と（追加データの位置も含む）モード情報を書き込むことができる。【特許請求の範囲】
【請求項１】
データドリブン型処理方法であって、
データドリブン型プロセッサの第１の処理ユニットに第１の命令セットと入来データを供給し前記入来データを処理するステップと、
前記データドリブン型プロセッサの第２の処理ユニットと外部メモリの間にデータを転送するデータパスを設定するステップと、を有し、
前記第１の処理ユニットは、前記第１の命令セットが外部メモリとの間で読み出しまたは書き込みの一方を必要とすると認識すると、その認識に応じて前記プロセッサのメモリアクセスユニットにアドレス情報を供給し、前記データパスを介して前記外部メモリと前記第２の処理ユニットとの間で追加データの転送を可能とすることを特徴とする方法。
【請求項２】
請求項１に記載の方法であって、
前記第１の処理ユニットは、前記第１の命令セット中に画像処理動きベクトルを認識し、
前記追加データは、前記外部メモリに書き込むものであり、前記動きベクトルに基づき前記第２の処理ユニットにより生成されたマクロブロックを含むことを特徴とする方法。
【請求項３】
請求項１に記載の方法であって、
前記データパスは外部ホストコントローラにより設定されることを特徴とする方法。
【請求項４】
請求項１に記載の方法であって、
前記第１の処理ユニットは、前記メモリアクセスユニットに前記転送が読み出しと書き込みの一方であるかどうかの表示を提供することを特徴とする方法。
【請求項５】
データプロセッサであって、
第１のダイレクトメモリアクセス（DMA）ユニットと、
それぞれが複数のデータポートを有する複数の処理ユニットと、を有し、
前記データポートは、互いに結合され、前記処理ユニットのいずれか１つから他の１つへのデータフロー、または前記処理ユニットのいずれか１つから前記DMAユニットへのデータフローを可能とするようにプログラム可能であり、
前記処理ユニットの１つにより処理すべきデータ及び結果データの一方を転送するDMAチャネルの設定に関する情報を前記DMAユニットに送る制御ポートを、前記処理ユニットの１つが有することを特徴とするデータプロセッサ。
【請求項６】
請求項５に記載のプロセッサであって、
メモリインターフェイス回路をさらに有し、
前記DMAユニットは、前記メモリインターフェイス回路を介して外部メモリにアクセスすることを特徴とするプロセッサ。
【請求項７】
請求項６に記載のプロセッサであって、
前記メモリインターフェイス回路は、前記DMAユニット、前記複数の処理ユニット、及び前記ホストインターフェイスとオンチップであることを特徴とするプロセッサ。
【請求項８】
請求項６に記載のプロセッサであって、
前記メモリインターフェイス回路、ダイナミックランダムアクセスメモリである外部メモリとインターフェイスするように設計されていることを特徴とするプロセッサ。
【請求項９】
請求項５に記載のプロセッサであって、
前記複数の処理ユニットは、それぞれが複数の辺を有する基本的に同一のユニットであり、各辺には入力ポートと出力ポートである複数の一方向性データポートがあることを特徴とするプロセッサ。
【請求項１０】
請求項９に記載のプロセッサであって、
前記入力ポートは、入来データを前記出力ポートのいずれか１つに経路指定するようにプログラム可能であることを特徴とするプロセッサ。
【請求項１１】
請求項１０に記載のプロセッサであって、
前記複数の処理ユニットは、それぞれ各辺に入力制御ポートと出力制御ポートを含む複数の制御ポートを有し、
処理ユニットの前記入力制御ポートは、前記処理ユニットの前記出力制御ポートのいずれにも入来コマンド情報を経路指定するようにプログラム可能であることを特徴とするプロセッサ。
【請求項１２】
請求項９に記載のプロセッサであって、
外部デバイスとのインターフェイスをさらに有し、
前記処理ユニットの出力ポートは、前記処理ユニットの中心から外れたものの出力ポートの一部が前記外部デバイスインターフェイスに結合していることを除いて、前記処理ユニットに隣接するものの入力ポートに結合されていることを特徴とするプロセッサ。
【請求項１３】
請求項９に記載のプロセッサであって、
第２のDMAユニットをさらに有し、
前記複数の処理ユニットは少なくとも４つあり、
前記４つの処理ユニットのうち第１と第３の処理ユニットの北側のデータポートは、前記第１のDMAユニットに結合し、
前記４つの処理ユニットのうち第３と第４の処理ユニットの南側のデータポートは、前記第２のDMAユニットに結合し、
前記第１と第２の処理ユニットの南側のデータポートは、前記第３と第４の処理ユニットの北側のデータポートと結合していることを特徴とするプロセッサ。
【請求項１４】
請求項１３に記載のプロセッサであって、
外部デバイスとのインターフェイスをさらに有し、
前記処理ユニットの東側及び西側のデータポートの一部は、前記外部デバイスインターフェイスに結合していることを特徴とするプロセッサ。
【請求項１５】
請求項５に記載のプロセッサであって、
前記処理ユニットの１つから外部メモリにデータチャネルを生成するために前記データポートと前記DMAユニットを設定する命令を読み出し実行する中央演算処理装置を有することを特徴とするプロセッサ。
【請求項１６】
請求項５に記載のプロセッサであって、
前記処理ユニットの１つから外部メモリへのデータパスを生成するため、前記データポートと前記DMAユニットを設定する命令を外部ホストコントローラから受け取るホストインターフェイスユニットをさらに有することを特徴とするプロセッサ。
【請求項１７】
システムであって、
ホストコントローラと、
外部メモリと、
データドリブン型プロセッサと、を有し、
前記データドリブン型プロセッサは、
前記外部メモリとインターフェイスするメモリアクセスユニットと、
それぞれが複数のデータポートを有する複数の処理ユニットと、を有し、
前記データポートは、互いに結合され、前記処理ユニットのいずれか１つから他の１つへのデータフロー、及び前記処理ユニットのいずれか１つから前記メモリアクセスユニットへのデータフローを可能とするようにプログラム可能であり、
前記データドリブン型プロセッサは、
前記処理ユニットの１つからデータチャネルを介して前記外部メモリへのデータパスを生成するために前記データポートと前記メモリユニットを設定する命令を前記外部ホストコントローラから受け取るホストインターフェイスユニットをさらに有し、
前記処理ユニットの１つは、前記メモリアクセスユニットにデータ位置情報を書き込むために使用する制御ポートを有し、
前記システムは、
前記外部メモリ、前記ホストコントローラ、及び前記データドリブン型プロセッサにパワー供給するように結合した再充電可能バッテリと燃料電池のうちの１つをさらに有することを特徴とするシステム。
【請求項１８】
請求項１７に記載のシステムであって、
前記ホストコントローラは、組込プロセッサとそれに付随するメインメモリとを含むことを特徴とするシステム。
【請求項１９】
請求項１７に記載のシステムであって、
隣接する処理ユニットからのデータポートの各ペアの結合は、ポイントツーポイントの一方向性接続であることを特徴とするシステム。
【請求項２０】
請求項１９に記載のシステムであって、
前記処理ユニットはそれぞれ、
入力データポートを介して受け取った入来データを処理する命令を実行するようにプログラム可能であるコアプログラミングエレメント（PE）と、
その処理ユニットの複数の入力データポートのいずれかからデータを読み出し可能な入力PEと、
その処理ユニットの複数の出力データポートのいずれかにデータを書き込み可能な出力PEと、を有することを特徴とするシステム。
【請求項２１】
請求項２０に記載のシステムであって、
各処理ユニットのコアPEは、その処理ユニットの前記入出力データポートのペアを通じて動作するデータパスによらずにその命令を実行可能であることを特徴とするシステム。
【請求項２２】
請求項１７に記載のシステムであって、
前記制御ポートを通して送られた前記データ位置情報は、画像データブロックのサイズと表示位置に関する情報を含むことを特徴とするシステム。
【請求項２３】
システムであって、
外部メモリと、
データドリブン型プロセッサと、を有し、
前記データドリブン型プロセッサは、
前記外部メモリとインターフェイスするメモリアクセスユニットと、
それぞれが複数のデータポートを有する複数の処理ユニットと、を有し、
前記データポートは、互いに結合され、前記処理ユニットのいずれか１つから他の１つへのデータフロー、及び前記処理ユニットのいずれか１つから前記メモリアクセスユニットへのデータフローを可能とするようにプログラム可能であり、
前記データドリブン型プロセッサは、
前記処理ユニットの１つからデータチャネルを通して前記外部メモリへのデータパスを生成するために、前記データポートと前記メモリユニットを設定する命令を受け取り実行する中央演算処理装置をさらに有し、
前記処理ユニットの１つは、前記メモリアクセスユニットにデータチャネル情報を書き込むために使用する制御ポートを有し、
前記システムは、
前記外部メモリ、前記ホストコントローラ、及び前記データドリブン型プロセッサにパワー供給するように結合した再充電可能バッテリと燃料電池のうちの１つをさらに有することを特徴とするシステム。
【請求項２４】
請求項１７に記載のシステムであって、
前記処理ユニットは、それぞれメッシュ構成で互いに接続された複数の制御ポートを有し、
前記データチャネル情報は、読み出し及び書き込みコマンド、アドレス、及びメモリアクセスユニットチャネル識別子の１つを含み、前記処理ユニットのいずれかに由来し、前記メッシュ構成でプログラムされた論理制御チャネルを介して前記メモリアクセスユニットに経路指定されることを特徴とするシステム。
【請求項２５】
請求項２３に記載のシステムであって、
隣接する処理ユニットからの各データポートペアの結合は、ポイントツーポイントの一方向性接続であることを特徴とするシステム。
【請求項２６】
請求項２３に記載のシステムであって、
前記処理ユニットはそれぞれ、互いに結合した、データチャネル情報を前記処理ユニットのいずれかから前記メモリアクセスユニットに送れるようにプログラム可能である複数の制御ポートを有することを特徴とするシステム。
【請求項２７】
データプロセッサであって、
高レベル読み出し及び書き込みコマンドを低レベルメモリアクセスコマンドに変換する手段と、
複数のデータを処理する手段と、
前記複数のデータ処理手段のいずれかとの間でデータをやりとりするプログラマブルデータパス実施手段と、
前記プログラマブルデータパス実施手段、前記複数のデータ処理手段、前記高レベル読み出し書き込み変換手段を設定する命令を前記複数のデータ処理手段以外から受け取る手段と、
前記複数のデータ処理手段の１つから前記高レベル読み出し及び書き込み変換手段に、高レベル読み出し及び書き込みコマンドを転送するプログラマブル制御パスを実施する手段と、を有することを特徴とするシステム。
【請求項２８】
請求項２７に記載のプロセッサであって、
前記低レベルメモリアクセスが外部メモリの信号レベルとタイミングに対する要求を満たすことを保証する手段手段をさらに有することを特徴とするシステム。
【請求項２９】
請求項２７に記載のプロセッサであって、前記データプロセッサを拡張する手段をさらに有することを特徴とするシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
以下に説明する本発明の実施形態は、データドリブンプロセッサの現実的な実施に関し、すなわち、より広い範囲のアプリケーションでよい性能を示し、比較的低コストである実施に関する。
【０００２】
プロセッサのデータドリブン型アーキテクチャは、比較的少ない命令を用いて、大量のデータを処理する問題を解決するために、ノイマン型アーキテクチャよりよいソリューションを提供するために開発された。ノイマン型プロセッサは、メモリのほとんどどこからでも命令とデータを引いてこられるクロックによるアドレススキームにより制御されている。ノイマン型プロセッサは、命令タイプやメモリ中の位置に関する制限が少ないので、異なる広い範囲のプログラムを実行する柔軟性を有している。反対に、データドリブン型プロセッサ（DDP）は、一般的にはメモリ中に連続に格納されたデータブロックが入力され、データに作用する少数の命令だけを有するプログラムにより処理されるように設計されている。このタイプのプログラムは、（例えば、複写コピー）文書及びオーディオもしくはビデオデータのデジタル符号化及びフィルタリング等のアプリケーションに使われている。オーディオ及びビデオデータアプリケーションの例としては、ポータブルなコンシューマ情報機器（例えば、デジタルカメラ）、モバイル汎用コンピュータ、小型媒体装置（例えば、MP3プレーヤ）における圧縮と解凍がある。DDPは、処理する入力データが無いときには、急速にそのパワー消費がほぼゼロに落ち、その固有のパワー効率のため、このようなバッテリ駆動の製品に特に好適である。
【０００３】
DDPを有するほとんどのコンシューマ製品において、内蔵ホストコントローラ（HC）がDDPを補助して、そのDDPの個々の処理エレメントに対する命令と入力データの供給を調整する。例えば、コンシューマ製品の主汎用プロセッサまたは組込プロセッサをHCとして機能するようにプログラムすることができる。HCは、DDPの各処理エレメントに実行すべきタスクを命令する。HCは、出力データである処理エレメントによる処理の結果を受け取るための、DDPと外部メモリ間のデータパスの形成も制御する。DDPは、HCにより特定された連続したアドレスメモリ一に、DDPの個々の処理エレメントからの出力データストリームを送るダイレクトメモリアクセス（DMA）ユニットを備えていてもよい。一般的なDDPの処理エレメントは、入力データの出所は知らず、結果データが最終的にどこ宛であるかも知らない。その情報はHCだけが知っている。
【０００４】
本発明の実施形態を添付した図面に、限定としてではなく例示として示した。同じ参照符号は同じエレメントを示している。
【発明の詳細な説明】
【０００５】
最初に図１を参照する。この図は、データドリブン型アーキテクチャを有するプロセッサを示すブロック図である。このプロセッサは、広い範囲のアプリケーションにおいてよい性能を示すが、コストが比較的低いと期待されている。このプロセッサは、複数（この場合、６つ）の処理ユニット（PU）１０４により構成されている。各PU１０４は、メッシュ構成で示されたように、互いに結合した複数（この場合、１６）のデータポートを有する。データポートはプログラマブルであり、１つの処理ユニットから他の処理ユニットへのデータフローと、１つの処理ユニットからメモリアクセスユニット１０８へのデータフローを可能とする。
【０００６】
本発明の一実施形態によると、少なくとも１つのPU１０４が制御ポートを備えており、そのPUはその制御ポートからメモリアクセスユニット１０８に、読み出しまたは外部メモリ１２０への書き込みをすべきデータの位置に関する情報を送ることができる。データポート及び制御ポートは、図１では明示的にラベルしていないが、それぞれデータライン１１２及び制御ライン１１６により黙示的に示されている。メモリアクセスチャネルに関するアドレス情報及びモード情報は、制御ポートを介して送られ、メモリアクセス制御レジスタ１２７に行く。制御レジスタ１２７は、例えば、DMAチャネルの動作モードに関するDMAチャネルの設定と、そのチャネルを通して転送されるデータの位置識別子と、を決定する。
【０００７】
PU１０４は、通常、データが読み書きされる外部メモリ１２０中の位置を知らない。PU１０４は、そのPUのためにプログラムされた命令に基づき、その入力ポートを通して受け取るデータを処理し、指定された出力ポートを通して結果データを出力する。出力ポートは、外部メモリ１２０中の特定位置に結果データを送るために生成されたデータパスの一部である。ホストコントローラ（図示せず）を用いて、通常、PUに命令またはプログラムし、そのデータポートの少なくとも１つとの間でデータを読み書きする。そのデータポートは、メモリアクセスユニット１０８とプログラムされたデータパスを介して論理的に接続されている。図１に示した実施形態において、少なくとも１つのPU１０４は、メモリアクセスユニット１０８に読み出しまたは書き込み要求を送り、ホストコントローラをそのようなタスクから解放することができる。この少なくとも１つのPU１０４のメモリアドレス能力により、プロセッサは全体として、処理すべき入来データの次のブロックがメモリに連続して格納されていないようなアプリケーションを処理するのに、より適したものとなる。このプロセッサのより詳細な説明に続いて、ビデオ復号アプリケーションの一実施例を説明し、PU１０４の付加的なメモリアドレス能力の利点を例示する。
【０００８】
プロセッサのメモリアクセスユニット１０８は、中央演算処理装置（CPU）１２４が関与しなくても外部メモリ１２０との間で読み書きができるダイレクトメモリアクセスユニット（DMA）である。メモリアクセスユニット１０８は、PU１０４、CPU１２４、または外部ホストコントローラ（図示せず）の１つの制御ポートから受け取った高レベルの読み出し書き込みコマンドを低レベルのメモリアクセスコマンドに変換するように機能する。高レベルの読み出し書き込みコマンドは、例えば、ビデオ、文書、またはオーディオ等の特定アプリケーションである特定用途向けであってもよい。一例として、PU１０４は、画像データのフレームにアクセスするが一部のピクセルはスキップするため、メモリアクセスユニット１０８に対する読み出し要求を生成する。他の実施例として、その読み出し要求は、画像フレーム全体の中の特定ブロックだけに対するものであってもよい。このような高レベル要求は、例えば、ディスプレイ上のカーテシアン座標系によって与えられるピクセル位置を単に参照するものでもよい。それに応じて、メモリアクセスユニット１０８により生成されたメモリアクセスコマンドは、ピクセル値が格納されている外部メモリ１２０中の特定のアドレスを参照する。場合によっては、これらの低レベルメモリアクセスが外部メモリ１２０の信号レベルとタイミングの要求を満たすことを保証するため、図１に示したようなメモリインターフェイス回路１２８を必要とするかもしれない。複数のDMAチャネルを利用して、読み出し及び書き込み処理を要求したり、外部メモリとの間でデータを転送したりすることができる。
【０００９】
図１に示したプロセッサは、外部デバイス（図示せず）とのI/Oインターフェイス１３２も有する。PU１０４の出入力データポートの一部、特に中心から離れたPU1とPU4の出入力データポートがI/Oインターフェイス１３２と結合していることが分かる。そのインターフェイス１３２により、入来データと結果データがPU１０４と外部デバイス（例えば、ハードディスクドライブ、CD-ROMドライブ、及びビデオディスプレイ等）との間で転送できる。インターフェイス１３２は、PU１０４のデータポートにより必要な信号とパラレルコンピュータペリフェラルバスまたは高速シリアルバスの信号との間で変換を行うように設計されている。インターフェイス１３２は、オーディオまたはビデオデータの入来ストリーム及び結果ストリームのために使用されてもよい。他の手段として、すべての入来及び結果データ（例えば、画像フレーム全体）を外部メモリ１２０に格納して、すべての処理が完了した後に、結果データを大容量記憶デバイスその他の周辺装置に転送する。
【００１０】
外部メモリとの関係でプロセッサの性能をさらに高めるため、追加的メモリアクセスユニット１３６を設けて、別のメモリインターフェイス１３８を介して、追加的外部メモリ１４０中の利用可能な記憶もPU１０４に使用させてもよい。上記の実施形態において、PU１−PU３の北側のデータポートは、第１のメモリアクセスユニット１０８に結合し、PU４−PU６の南側のデータポートは、第２のメモリアクセスユニット１３６に結合している。PU１−PU３に（南側の）外部メモリ１４０にアクセスさせるため、PU１−PU３の南側データポートがPU４−PU６の北側データポートに結合している。
【００１１】
図１に示したプロセッサの実施形態は、CPU１２４も有している。CPU１２４は、PU１０４のチップ上に設けられ、PU１０４とメモリアクセスユニット１０８、１３６のデータポートを設定する命令を読み出し実行し、１つのPU１０４から外部メモリ１２０、１４０へのデータチャネルを生成する。データポートのメッシュ構成を通るデータパスを生成し、PU１０４に個別のタスクを命令する機能は、外部のホストコントローラ（図示せず）に担わせてもよい。図２を用いてPU間に複数のデータパスを生成するデータポートの柔軟性を例示する。
【００１２】
図２は、プロセッサの別の実施形態における２つのポイント間に生成できるデータパスの一例を示す。この実施形態において、８つのPU１０４と５つのデータパスが示され、PU１とPU8がリンクされている。各PU１０４は、各側に４セットのデータライン１１２と接続するデータポートを有する（制御ポートとそれに対応する制御ライン１１６は示さず、図１を参照）。データポートメッシュは、１つのPU１０４から他のPU１０４へのデータフロー、及びデータチャネルを通じた外部メモリ１２０、１４０へのデータフローをサポートする。外部メモリ１２０、１４０は、バッファタイプの専用固体メモリであってもよく、比較的高速アクセスと大容量記憶に好適であり、文書処理及びビデオ・オーディオ処理等のアプリケーションに使用されるものである。あるいは、外部メモリ１２０、１４０は、ホストコントローラ（図示せず）のメインメモリや電子システムの他のメインメモリの一部であってもよい。外部メモリ１２０、１４０は、ダブルデータレートまたはシンクロナスダイナミックランダムアクセスメモリで構成されてもよい。プロセッサのそのアプリケーションに好適な他のタイプの固体メモリを代替的に用いてもよい。
【００１３】
上述の通り、データポートを設定して、プロセッサの２つのポイントの間に論理的コネクションを確立することができる。この実施形態において、データポートメッシュの設定は、ホストインターフェイス１３９を通してコンピュータペリフェラルバス（図示せず）により接続されたホストプロセッサ（図示せず）により制御される。比較的低速のグローバルバス（図示せず）がホストインターフェイス１３９をPU１０４、メモリアクセスユニット１０８、プロセッサの他の構成要素に接続する。このグローバルバスを用いて、PU１０４のための命令またはマイクロコードをロードし、状態レジスタ（図示せず）を読み出すことにより、プロセッサを設定またはプログラムする。また、中心からはずれたPU、すなわちPU１、PU５、PU４、及びPU８の各々は、それぞれの拡張インターフェイス（EI）ユニット１４１に結合したデータポートのペアを有する。EIユニット１４１は、データポート通信メッシュを複数のプロセッサにわたって拡張させ、上述の通り、外部周辺デバイス（例えば、ビデオディスプレイ、ハードディスクドライブ、及びプリンター等）をプロセッサに接続させる。
【００１４】
PU１０４は、複数の辺を有する基本的に同一のユニットであり、各辺には、少なくとも１つが入力ポートであり、少なくとも１つは出力ポートである複数の一方向性のデータポートがある。図２の実施形態において、隣接するPU１０４からの、データポートの各ペアの結合タイプは、ポイントツーポイント、一方向性接続である。データポートと各PUのプログラミングエレメントへのその接続（図４−７を参照して以下にさらに説明する）は、各PU内のプログラミングエレメントがそのPUのデータポートを通して転送されるデータに関係する必要がないように設計される。このように、図２に示した例において、関係するデータポートを実際に読み出しまたは書き込みしているPU１０４はPU１とPU８である。それら２つのPUの間に５つの異なるデータパスを設定することができることは、データポートのメッシュ構成が柔軟性を有することを示している。分かりやすくするため、図２には、PU１とPU８の間の可能なデータパスのすべてを示してはいない。また、すでに明らかなように、同様のプログラマブルデータパスをPU１０４のいずれかと外部メモリ１２０または１４０との間に、メモリアクセスユニット１０８または１３６を通るどのデータチャネルを介しても生成することができる。
【００１５】
メモリアクセスユニット１０８（図１参照）の制御レジスタ１２７を少なくとも１つのPU１０４の制御ポートを介して書き込めるようにすると、全体としてプロセッサをビデオ処理アプリケーションにより好適なものにすることができる。そのビデオ処理アプリケーションにおいては、処理が必要な入来データの位置は、必ずしもブロックごとに順次変化はしない。一例として、シーン中の動きによる、前フレームからの画像ブロック位置の変化をポイントする、現フレームの動きベクトルを生成することにより、圧縮段階においてフレーム間の時間的冗長性を減らすビデオ圧縮を考える。復号または解凍段階を考えるが、この段階では、PU１が入来ビデオデータを復号して「現」フレームを再構成するように命令される。この入来ビデオデータは動きベクトルを含んでもよい。動きベクトルは前フレームにあった画像データブロックをポイントするので、そのブロックをフェッチするには外部メモリに対する別のアクセスが必要である。言い換えると、動きベクトルは、外部メモリ１２０に格納されている、現フレームを復号するためにコピーされる必要がある前フレームの画像ブロックをポイントしている。留意すべきことは、ホストコンピュータは、復号プロセスが開始される前、このブロックの正確な表示位置（x,y）を知らないことである。しかし、一旦、その情報が処理ユニット（例えば、PU１）に利用可能となると、外部メモリへのアクセスは以下のように迅速に行われる。最初、PU１は、その制御ポートを通して、メモリアクセスユニットのデータチャネルZを介して位置（x,y）から読み取るコマンドを送る。この結果、メモリアクセスユニット１０８の制御レジスタ１２７は、動きベクトル（この場合、データチャネルZを介して位置（x,y）から読み出される）に関するアドレス及びモード情報で設定される。読み出しデータは、メモリアクセスユニット１０８によりフェッチされ、チャネルZを通して利用可能となる。論理データパスがメモリアクセスユニットのチャネルZとPU５の間で（例えば、外部ホストコントローラにより）前にプログラムされているので、動きベクトルによりポイントされた画像ブロックはそのパスを通じてPU５に経路指定される。PU５は、前に命令されたように、このデータを処理し、現フレームの外部メモリにその結果のデータを書き込む。その結果のデータには、この場合、動きベクトルに基づき前にプログラムされたアルゴリズムによりPU５により生成された復号されたマクロブロックを含む。
【００１６】
一般に、少なくとも１つのPU１０４を与えられて、どのアドレス情報を外部メモリに送るかを制御することにより、プロセッサのプログラミングを全体として自由かつ柔軟にすることができる。少なくとも１つのPUに制御ポートを備えることにより、アルゴリズムの論理的複雑性をPU１０４により多く担わせることができ、CPU１２４（図１参照）またはホストコントローラ（図示せず）がアプリケーションを実行するより複雑なタスクを処理できるようにする。制御ポートを追加してもデータポートのメッシュ構成の利益には悪影響はなく、メッシュ構成によるデータドリブン型アーキテクチャ（タイミング問題の減少とパワー効率の改善を含む）、複数PUの並行処理能力、PU設計のスケーラビリティとモジュール性という利点を維持する。
【００１７】
まだ図２を参照して、メモリインターフェイス回路１２８は、メモリアクセスユニット１０８、すべてのPU１０４、及びホストインターフェイス１３９とオンチップである。代替案として、これら構成要素は、例えばPU１０４が別チップ上にあるマルチチップぱっけいじの一部であってもよい。
【００１８】
次に図３を参照して、上で説明したデータドリブン型プロセッサ３０４を含む電子システムのブロック図が示されている。そのシステムは、表示または可聴化（例えば、ビデオまたはオーディオファイルの解凍）、格納（例えば、格納前の圧縮）、または印刷のために画像、オーディオ、その他の媒体を処理できるいかなる形のコンピューティングまたは通信装置であってもよい。そのシステムはコネクター３０８を有し、そのコネクター３０８により、プロセッサ３０４は、例えば、I/Oインターフェイス１３２（図１参照）を介して周辺デバイス（図示せず）に直接的に結果データを供給することができる。システムはホストコントローラ３１０も有し、そのホストコントローラ３１０は、バス３１４を介してプロセッサ３０４と通信するように結合している。そのバス３１４は、シリアルまたはパラレルのコンピュータペリフェラルバスである。ホストコントローラ３１０は、プロセッサ３０４により与えられた、データドリブン型アーキテクチャによる実行に特に好適なタスクを含む、上に例を示したビデオ符号化等のアプリケーションプログラムを実行するように構成されている。ホストコントローラ３１０は、組込プロセッサとそれに付随するメインメモリ（図示せず）を含んでもよい。
【００１９】
プロセッサ３０４により処理されるコンテントデータは、外部メモリ３１６に格納され（例えば、画像フレーム全体）、プロセッサ３０４の個々の処理ユニットが上で説明したデータポートのメッシュ接続を介してアクセス可能である。プロセッサ３０４のホストインターフェイスユニット（図示せず）は、個々の処理ユニットにそのタスクを命令し、その処理ユニットからデータチャネルを介して外部メモリ３１６へ至るデータパスを生成する命令をホストコントローラ３１０から受け取る。プロセッサ３０４は、それのメモリアクセスユニットにデータチャネルアドレス情報を書き込むために用いる、その処理ユニットの少なくとも１つの制御ポートで拡張される。図３に示したシステムは、燃料電池または再充電可能バッテリ３３０も有し、電圧レギュレータ（VR）モジュール３３４により外部メモリ３１６、ホストコントローラ３１０、プロセッサ３０４にパワーを供給するために結合される。もちろん、燃料電池または再充電可能バッテリ３３０の出力電圧が十分安定して、外部メモリ、プロセッサ、及びホストコントローラの要求を満足すれば、VRモジュール３３４は必要ない。
【００２０】
図４を参照して、PU１０４のブロック図が示されている。この実施形態において、PU１０４は、少なくとも１つのコアプログラミングエレメント（PE）を有し、そのコアPEは、８つの入力データポート４０８のいずれか１つを介して受け取った入来データを処理する。各PEは、ベースライン命令セットアーキテクチャを実施する、命令メモリと算術演算ユニット（ALU）とを有する。また、少なくとも１つのPE４１６に加えて、乗算・加算ユニット（MAC）がある。追加的PEは、少なくとも１つのアクセラレータユニット４２０を含む（例えば、２の補数の乗算や、特定アプリケーション用のデジタルフィルタリング等の特殊演算を実行する）。PU１０４内のデータ、定数、命令をローカル記憶のために内蔵データRAMを有するメモリコマンドハンドラ（MCH）４２４を備えている。入力PE４２８は、PU１０４の入力データポート４０８のひとつからデータを読み出すことができ、一方、出力PE４３２は、複数の出力データポート４３６のいずれかに結果データを書き込むことができる。一組の汎用レジスタ４４０により、所定のセマフォプロトコルによりPE間でデータを交換することができる。複数の汎用レジスタを介して結合された複数の処理エレメントを有するデータドリブン型デジタル信号プロセッサのさらに別の例については、米国特許出願公開公報第US2002/0147768号（Vevro）を参照せよ。図４の実施形態において、PU１０４の各コアPUは、そのPUの入力及び出力データポート４０８、４３６のペアを通して動作しているデータパスとは独立に、その命令を実行することができることに留意せよ。言い換えると、入力データポート４０８、入力PE４２８、汎用レジスタ４４０、出力PE４３２、出力データポート４３６の間にデータパスがあるが、PE４１２、４１６、アクセラレータユニット４２０、及びMCH４２４の動作とは独立である。入出力データポート４０８、４３６に関する詳細は、図５−７を参照して以下で説明する。
【００２１】
次に図５を参照して、入力データポート４０８（図４参照）の一部のブロック図が示されている。入力データポート４０８は、他のPUからデータを受け取る。その入力データポートは、そのPUの外からデータとともに要求を受け取る要求／許可プロトコルにより通信する。入力データポートは、そのデータを受領すると許可を返す。この実施形態において、その要求／許可プロトコルは、入力クロック信号のアクティブエッジで要求及び許可信号がアクティブなときはいつもデータが転送されていることを必要とする。この入力データは、先入れ先出し（FIFO）バッファ５１０に一時的に格納される。そのデータは、複数のいわゆるトランスミッタP０−P７の１つから許可信号を受け取るまで、FIFO５１０に格納される。マルチプレクサ５１４が設けられ、この入力データポート４０８が接続されたデバイスからの（この場合、８つの）許可信号の１つを選択する。入力ポート４０８は、マルチプレクサ５１４の選択入力を制御するレジスタ設定によりプログラムされ、８つのトランスミッタのどれがFIFO５１０からのデータを受け取るかを決定する。このレジスタ設定は、FIFO５１０へのデータ転送が起こる前または後に変更される。
【００２２】
この場合の８つの可能な許可信号は、このPUの（８つ中）７つの出力データポートと、このPU１０４（図４参照）の入力PE４２８を指す。この場合、８つの可能な許可信号があることに留意せよ。その理由は、データを転送できる出力データポートが７つだけあり、８つめのデータポートは、入力データポート４０８に付随した出力データポートに対応する。図５に示したように、FIFO５１０からPU１０４の他のすべてのデバイス（この場合、８つ）に受信データ、要求、及び初期化信号を転送するパスがある。
【００２３】
初期化（Init）信号は、データパスを形成する各データポートを通して送られる。このように、データポートがデータのソースポイントで初期化された場合、初期化信号がデータパスであるすべての論理接続を通して伝送され、データパス全体を初期化する。初期化信号は、プロセッサ中の長い論理接続を通して伝搬遅れが集積するのを防止するため、登録され、データであるがごとくデータポートを通じて送られる。データポートインターフェイス信号（データ及び要求信号を含む）は、論理接続を通じた大きな組み合わせ遅れを防止するために、すべてこのように取り扱われる。入力データポートのパッケージピンと出力データポートのパッケージピンの間に論理接続を確立刺せる入力データポート４０８の他の実施形態も可能である。図６は、出力データポート４３６の一部を示すブロック図である。
【００２４】
図６に示した出力データポート４３６は、他のPU１０４にデータを送信するので、「トランスミッタ」ポートとも呼ばれる。３つのマルチプレクサ６１４が一組となって設けられ、PUから送信される要求、データ、及び初期化信号を選択する。各マルチプレクサ６１４は、この実施形態では、８つの入力を有し、これらの入力は、PUの７つの入力データポートと、１つの出力PE４３２（図４参照）に対応することに留意せよ。再び、マルチプレクサ６１４への選択入力は、データ転送が起こる前または後に変更可能なレジスタ設定により制御される。
【００２５】
選択された要求、データ、初期化情報は、FIFO６２０の一次記憶におかれる。図５を参照して上で説明した入力データポート４０８の場合のように、出力データポートのFIFO６２０は、PUの外部のデバイスから許可を受信すると、それに応じてバッファされた要求、データ、及び初期化情報を提供する。
【００２６】
FIFO５１０とFIFO６２０の組み合わせは、図７のように2-deepFIFO７２０として例示できる。この2-deepFIFO７２０は、与えられたPUを通じた、論理接続の一部であり、入力データポートと出力データポートによりできている。入力側において、data_in、request_in、init_inを受信しFIFO７２０に格納し、この一組の入力情報が受け入れられるとき、grant_inが信号出力される。FIFO７２０は、PUの外部のデバイスからgrant_out信号を受信すると、それに応じてdata_out、request_out、init_outを送信する、プログラムされた論理接続の一部である。上述の通り、これらのインターフェイス信号は、論理接続を通じた大きな組み合わせ遅れを防止するように取り扱われる。これにより、データパス経路指定に関して特に心配せずに、システムオンチップ設計を容易にすることができる。データポート間の経路指定はすべて、上述の通り、各データポートに登録された簡単なポイントツーポイント接続である。論理接続は、マルチプレクサ５１４（図５）及び６１４（図６）の簡単なレジスタ設定によりプログラムされる。しかし、PU１０４を通じた論理接続の他の実施形態も可能である。
【００２７】
次に図８を参照して、この図は、フレキシブルなデータドリブン型アーキテクチャに好適な一般化されたデータ処理方法のフロー図を示している。ブロック８０４で始まり、一組の命令と入来データ（第１のセット）がデータドリブン型プロセッサの第１の処理ユニット（PU）に供給される。上で示唆したように、これらの命令と入来データ（及び、第１のPUに到達する入来データのデータパス）は、プロセッサの比較的低速なグローバル制御バスを通じて、オンチップCPUまたは外部ホストコントローラにより調整され設定される。また、少なくとも１つの制御パスが設定され、第１のPUがメモリチャネルアドレス情報をプロセッサのメモリアクセスユニットに送る。
【００２８】
第１のPUは、入来データを処理する時、この第１のセットの命令が外部メモリとの間で読み書きのいずれかを必要とすることを認識する。従って、ブロック８０８に進み、第１のPUがメモリアクセスユニットに（コントロールパスを介して）与えられたメモリチャネルとの間でデータをフェッチまたは待機するよう要求する。プロセッサの第２のPUと外部メモリの間の論理データパス（その与えられたメモリチャネルを介した）は、前に生成されており、外部メモリと第２のPUの間の追加的データを転送する。本発明の一実施形態によると、上述の追加された制御ポート構造を用いて、第１のPUは、外部メモリと第２のPUの間に前もってプログラムされたデータパスを通じて、転送すべきデータの位置を特定することができる。この論理データパスは、各処理ユニット内の個々のプログラミングエレメントとは独立なデータポートメッシュ構成を通して経路指定される。
【００２９】
一例として、第１のPUは、第１のセットの命令中の画像処理動きベクトルを認識する。その場合、追加的データは、外部メモリに書き込まれ、動きベクトルに基づき第２のPUにより生成されるマクロブロックを含む。オーディオ圧縮等の多くの他のタイプのデータドリブン型アプリケーションはこの追加された機能により利益を受ける。
【００３０】
図９は、データドリブン型プロセッサの制御ポートメッシュ構成の高レベルブロック図を示す。この図において、理解しやすくするために、制御ポートメッシュ構成のみを示した。本発明のこの実施形態において、DMAチャネルはコマンドを発することができないので、DMAユニットはPUのスレーブである。むしろ、DMAチャネルへのすべてのコマンドはPUの北または南の制御ポートのいずれかにより発せられる。この例において各PUは、北、東、南、西とのラベルを付された４つの制御ポートセットを含む。それぞれポート０とポート１を有する。例えば、PU１のE１ポートはコマンドを受信し、一方、（メッシュ構成の制御パスの一部として設定されている場合）E０はコマンドを送信する。ポイントツーポイントバス接続は、隣接するPUからの（または、PU及びDMAユニットからの）制御ポートのペアによりサポートされている。
【００３１】
トランスミッタポートとレシーバポート（PUの外部）の間のポイントツーポイント接続は、コマンド部分と状態部分を有するパラレルバスを用いて構築されてもよい。コマンド部分は１６ビットバスを有し、DMAユニットの特定データチャネルの、DMAユニットに宛てられた設定命令を送信するために用いられる。ステータスバスは、３ビット設けられ、データチャネルのステータスをコマンド発信者に返すために使用される。初期化（Init）信号の使用に加えて、上で説明したデータポートリンクと同様に、要求及び許可の信号プロトコルを用いてもよい。コマンドを完全に送信するには、このように２クロックサイクルかかる。次に図１０を参照して、第１のサイクルで、制御ワード１００４が送信され、その次に第２のサイクルで、コントロールポート＿データワード１００８が送信され、コマンドが完了する。図１０から分かるように、制御ワードは、経路指定情報（ルータ識別情報、RID）を含み、制御ポートがコマンドを正しい宛先に経路指定するのを助ける。より具体的に、レシーバポートは、RIDビットに基づきコマンドの宛先、及びそのコマンドが読み出しまたは書き込みチャネルを特定しているかどうかを決定する。RIDビットは、この実施例の場合、ポート０またはポート１のいずれかを特定する。このコマンドの最終宛先は、要求された読み出しまたは書き込みコマンドを実行するため、（上述の通り、データポートを通じて利用可能な）データチャネルを設定するDMAユニットであることを思い出して欲しい。ポートビット（RID#1）は、０ポートであるか１ポートであるかに応じて、トランスミッタポートでハードウェアに組み込まれていてもよい。R/Wビットは、コマンド発信者により駆動され、制御パス中の全制御ポートによって変更されずに通過する。
【００３２】
制御ワード１００４は、データチャネルの設定を規定するREG_SELビット（この場合、４ビット）も含む。例えば、REG_SEL値００００に続き制御ポート＿データワード１００８を用いて、メモリ転送の開始の合図をする。他のコマンドが（x,y）データ位置を参照して読み出しまたは書き込みをすることもある（CH_ADDRX及びCH_ADDRY）。他の種類のいろいろなコマンドが図１０に記載されている。これらのコマンドは、特に静止が及びビデオ画像処理のアプリケーションに好適である。他のアプリケーションは、異なるコマンドセットを有していてもよいが、ほとんどの場合、（与えられたデータチャネルに付随する別のデータパスを用いて）DMAユニットが外部メモリとの間でコンテントデータの読み書きをできるようにする、データ位置またはアドレス情報を少なくとも含むであろう。このデータパスは、例えば、ホストコントローラによりデータポートメッシュ構成で前もって設定されていてもよいことに留意せよ。
【００３３】
さらに図１０を参照して、レシーバポートは、制御ワード１００４と制御ポート＿データワード１００８の受信に応じて、ステータスインディケータ１０１２を送る。この例において、ステータスインディケータ１０１２は、２つの条件のうち一方が起こった時に送られる。その２つの条件とは：アイドルタイマーが時間切れとなるか、または「end of swath（EOS）」に到達した場合である。これらの条件が２つとも起こらない場合、コマンド発信者は、ステータス表示を何も受け取らない。例えば、EOS条件が無く、最後に読み出しまたは書き込みを行ってから一定クロック数メモリの読み出しや書き込み動作がない場合、アイドルタイマーが時間切れとなる。書き込みの場合、DMAチャネルが、そのチャネルによる前の読み出しまたは書き込みの後、追加コンテントデータがデータポートで利用可能となるのを一定クロック数待った場合、アイドルタイマーが時間切れとなる。書き込みの場合、データチャネルが、与えられたデータパスを介してPUから受け取るべき追加的コンテントデータを一定クロック数待った場合、アイドルタイマーが時間切れとなる。読み出しの場合、最後のコンテントデータワードが、一定のクロックサイクル数が経過してデータチャネルから出された場合に、アイドルタイマーが時間切れとなる。制御ポートの間で合図を送る要求・許可プロトコルを異なるように規定することも可能である。
【００３４】
コマンド発信者が、アイドルタイマーが時間切れとなったとの状態を受信した場合、制御ポート制御レジスタ（図示せず）のInitビットを所定値にプログラムして、制御パス及びその制御パスに付随したDMAチャネルにあるすべてのコマンドをクリアする。また、書き込みデータチャネルでアイドルタイマーが時間切れとなった状態が検出された場合、コマンド発信者は、データポート制御レジスタ中のInitビットを所定値にプログラムして、データポートパス中のすべてのコンテントデータをクリアし、DMAユニットのキューにあるコマンドにより書き込みデータチャネルを再構成させる。
【００３５】
次に図１１を参照して、制御ポート（この場合、ノースポートN０及びN１（図９参照）の１つ）として使用できるアービタの簡略化した図が示されている。アービタ１１０４は、トランスミッタにあり、この実施例では、関連するPUの８つの可能な接続パスからの要求を調停する（送信要求を受信する６つの制御ポートと、読み出しコマンドを発することができる入力プログラミングエレメント（IPE）と、書き込みコマンドを発することができる出力プログラミングエレメント（OPE）とがあるからである）。他の実施形態において、要求を発することができる制御ポートが６つより少なくても多くてもよい。
【００３６】
次に図１２を参照して、制御ポートNorth０の選択レジスタの例を示した。この例において、制御ポートレシーバ選択用に使用される３ビットと、トランスミッタ選択用の３ビットがある。レシーバ選択ビットは、ノースポートを通して到着したコマンドを付随するPUのどのデバイスが受信すべきかを示すことにより制御ポートをプログラムする。同様に、トランスミッタ選択ビットは、（上述の８つのうち）どのデバイスがコマンドを、ノースポートを通して送信することができるかを決める。OPEからのコマンドは、一般的に、DMA書き込みチャネルに向けられ、一方、IPEからのコマンドは、DMA読み出しチャネルに向けられることに留意せよ。コントロールポートをトランスミッタとして（PUからコマンドを送信する）、及びレシーバとして（PUのデバイスへのコマンドを経路指定する）動作するようにプログラムする他の方法もある。
【００３７】
要約すると、広い範囲のアプリケーションを実行するより効率的なデータドリブン型プロセッサのいろいろな実施形態を説明した。上記の説明では、本発明を具体的な実施形態を参照して説明した。しかし、言うまでもなく、添付したクレームに記載した本発明の精神と範囲から逸脱することなく、いろいろな修正や変更をすることが可能である。例えば、図面に示したプロセッサは６つまたは８つのPUからなっているが、PUを２つ以上、または８つより多くメッシュ構成で互いに接続したアーキテクチャも、PUの一部または全部に制御ポートを付加することにより利益がある。従って、明細書と図面は、限定ではなく例示をするものと考えなければならない。
【図面の簡単な説明】
【００３８】
【図１】データドリブン型アーキテクチャを有するプロセッサを示すブロック図である。
【図２】そのプロセッサの他の実施形態において、生成されるデータパスを示す図である。
【図３】そのプロセッサの一実施形態を用いた電子システムを示すブロック図である。
【図４】そのプロセッサの一実施形態の構成要素を示すブロック図である。
【図５】そのプロセッサにおいて使用される入力データポートを示すブロック図である。
【図６】そのプロセッサで使用される出力データポートの一部を示す図である。
【図７】入出力データポートで使用される先入れ先出しロジックへの入出力信号を示す図である。
【図８】本発明の一実施形態によるデータ処理方法を示すフロー図である。
【図９】データドリブン型プロセッサの制御ポートメッシュ構成を示す高レベルのブロック図である。
【図１０】制御ポートが互いに通信するために使用する制御ワード、制御ポートデータワード、及び状態表示の一例を示す図である。
【図１１】制御ポートトランスミッタで使用されるアービタを示す簡略化したブロック図である。
【図１２】制御ポートに設けることができ、その制御ポートのトランスミッタ部分及びレシーバ部分を構成する選択レジスタの一例を示す図である。
【図１】
2007524142.tif 000002
【図２】
2007524142.tif 000003
【図３】
2007524142.tif 000004
【図４】
2007524142.tif 000005
【図５】
2007524142.tif 000006
【図６】
2007524142.tif 000007
【図７】
2007524142.tif 000008
【図８】
2007524142.tif 000009
【図９】
2007524142.tif 000010
【図１０】
2007524142.tif 000011
【図１１】
2007524142.tif 000012
【図１２】
2007524142.tif 000013
【国際調査報告】
2007524142.tif 000014
2007524142.tif 000015
2007524142.tif 000016