説明

推測的技術を用いるメッセージベースのネットワークインターフェースのためのプロセッサ

【課題】メッセージネットワークインターフェースユニットを提供すること。
【解決手段】メッセージネットワークインターフェースユニットは、プロセッサに連結されており、プロセッサがプロセッサによって生成された複数のメッセージをハードウェアユニットに送信することを可能にし、メッセージネットワークインターフェースユニットは、プロセッサによって生成された複数のメッセージのうちの少なくもと1つのメッセージの引数を格納するように動作可能な伝送レジスタであって、少なくとも1つのメッセージが推測的に生成される、伝送レジスタと、伝送レジスタに連結されており、複数のメッセージをキューに入れるように動作可能なキューであって、動作は、メッセージネットワークインターフェースユニットがトリガーメッセージを受信することに応じてキューにおいて実行される、キューとを含む。

【発明の詳細な説明】
【技術分野】
【0001】
(関連出願への相互参照)
本出願は、2011年9月7日に出願された、同時係属中の、同一人に譲渡された米国仮特許出願第61/531,950号の利益および優先権を主張する。上記出願は、全体として本明細書において参照することによって援用される。
【0002】
(本発明の分野)
本発明は、集積回路デバイスに関し、具体的には、高速メッセージパッシングのためのメッセージネットワークインターフェースユニットを有するデバイスに関する。
【背景技術】
【0003】
(開示内容の背景)
データ集約型電子デバイスおよびアプリケーションが広がるにつれて、データレートは、増加し続けている。あるデータ集約型リアルタイムアプリケーションにおいてデバイス(例えば、プログラマブル論理デバイス)の使用を容易にするために、低レベル専門処理ブロックとメッセージパッシング通信構造とを含む階層的専門処理ブロックがますます多く使用されている。専門処理ブロック(例えば、知的財産(IP)ブロック)は、ブロックサーキットリーであり、デバイス上に実装される、デバイスの汎用のプログラマブル論理から分離され得、特定の機能を実行するために少なくとも部分的にハードワイヤされる。デバイス通信構造に基づいて、他の専門処理ブロックまたはサーキットリーより低階層レベルにある専門処理ブロック(例えば、IPブロック)は、低レベル専門処理ブロック(例えば、低レベルIPブロック)と呼ばれ得る。低レベル専門処理ブロックは、メッセージネットワークを用いてこれらの専門処理ブロックに通信するプロセッサにおいて動作するソフトウェアを用いて最もよく調整される。例えば、プロセッサは、メモリマップ化されたプロトコールを用いてメッセージを読み取り、そして書き込み、メッセージは、ストリーミングパケットベースのプロトコールを用いて低レベル専門処理ブロックに伝送され、またはそこから伝送され得る。高効率的なインターフェースは、データ集約型リアルタイムアプリケーションにおいて用いられるために、プロセッサとメッセージネットワークとの間で使用され得る。
【0004】
メッセージパッシングネットワークは、共通使用になり得る。多くの既存メッセージパッシングネットワークは、プロセッサまたは処理ブロック(例えば、IPコア)が互いと通信するためにメッセージを送受信することを可能にする。例えば、チップ上のネットワーク(NoC)設計は、チップ上のシステム(SoC)内のIPコアの間の通信のために生成され、そして使用され得る。プロセッサとメッセージとの間の使用のための複数の既存インターフェース設計もあり、複数の既存インターフェース設計は、専門処理ブロックと通信するために、プロセッサによって使用される。このようなインターフェース設計の一例として、PicaRiSC,DPXは、FIFOベースのメッセージパッシング機構を活用する。インターフェース設計の別の例として、プログラマブルデバイス内に埋め込まれたプロセッサは、バス書き込みサイクルの間に、メッセージを直接にネットワーク内に書き込むことによってメッセージを送信することができる。しかしながら、これらのインターフェースは、欠点を有している。特に、PicaRISC,DPXは、FIFO要求のため、柔軟性のない傾向があり、メッセージを直接にネットワーク内に書き込むことを必要とする設計は、メッセージが隣接してグループ化される必要があるため、柔軟性のない傾向がある。
【発明の概要】
【発明が解決しようとする課題】
【0005】
現存のメッセージパッシングネットワークの柔軟性がないために、プロセッサとメッセージパッシングネットワークとの間の迅速かつ効率的インターフェースに対するニーズがある。
【課題を解決するための手段】
【0006】
技術分野における上記および他の短所を解決するために、本開示は、プロセッサとメッセージパッシングネットワークとの間に迅速かつ効率的インターフェースを提供するための方法およびシステムを示す。このインターフェースは、プロセッサからメッセージを送信する待ち時間を低減させ(すなわち、メッセージの処理量を増大させ)、ハードウェアユニットから受信されたメッセージにおける動作の待ち時間を低減させる(すなわち、メッセージ応答待ち時間を低減させる)。
【0007】
メッセージインターフェースは、伝送レジスタ内のスクラッチパッドメモリ内にメッセージを推測的に生成し、1つ以上のキュー内に生成されたメッセージを推測的にキューに入れ、そして後に任意のメッセージおよび/またはメッセージのキューを送信するか否かのような決定をすることによって上記の待ち時間を低減させる。
【0008】
特に、メッセージは、プロセッサが別で働いていない期間の間に、もしくはメッセージが送信されるずっと前に生成され得るので、インターフェースは、メッセージを送信するために要求されるプロセッサクロックサイクルの数を低減させる。伝送レジスタおよびスクラッチパッドメモリは、プロセッサがボイラープレートメッセージを生成し、そしてそれらをカスタマイズすることを可能にするテンプレートとして使用され得る。アプリケーションプログラミングインターフェース(API)は、メッセージ生成のためのプロセッサクロックサイクルの最適消費への接近(すなわち、プロセッササイクル毎に1メッセージワードに近いレートでのメッセージの生成)を可能にするために提供される。1つ以上のキューは、生成されたメッセージを推測的にキューに入れるために使用される。
【0009】
加えて、本明細書に記載されるインターフェースは、メッセージを受信し、および引込メッセージをキューに入れるための1つ以上の別々のアドレス指定されたキューを有することによって受信されたメッセージ上に動作する待ち時間を低減させる。キューは、優先度レベルに関連付けられ得る。優先度レベルは、異なるキューのメッセージの中のメッセージをどの順番で処理するかを決定するために使用され得る。例えば、最高優先度レベルを有するキューからのメッセージは、より低い優先度レベルを有するキューからのメッセージの前に処理され得る。本明細書に記載されるメッセージネットワークインターフェースは、実質的に短いメッセージ応答待ち時間と実質的に大きいメッセージ処理量を要求するデータ集約型リアルタイムアプリケーションの実装を可能にし得る。
【0010】
方法およびシステムは、プロセッサに連結されており、プロセッサがメッセージをハードウェアユニットに送信することを可能にするために使用されるメッセージネットワークインターフェースユニット(メッセージインターフェースユニット)に対して提供される。実施形態において、メッセージネットワークインターフェースユニットは、伝送レジスタを含む。伝送レジスタは、スクラッチパッドメモリを含み、プロセッサによって推測的に生成されるメッセージのうちの少なくとも1つの引数を格納する。1つ以上のキューは、伝送レジスタに連結されている。1つ以上のキューが、メッセージをキューに入れるために使用され得る。動作は、メッセージインターフェースユニットにおいて、動作が実行されるべきであること示すメッセージを受信することに応じて1つ以上のキューにおいて実行され得る。1つ以上のキューにおいて実行され得る動作は、例外が発生したことを示すメッセージを受信することに応じて、キューのうちの1つの内容のすべてを放棄することを含む。1つ以上のキューにおいて実行され得る動作は、キューのうちの1つの中に格納されたメッセージの各々を送信することを含む。いくつかの実施形態において、メッセージインターフェースユニットおよびプロセッサは、同じデバイス上に設置されている。デバイスの例は、プログラマブル論理デバイス、集積回路デバイス、または他のデバイスを含む。いくつかの実施形態において、メッセージインターフェースユニットは、ビデオスカラーによって使用される。
【0011】
方法およびシステムはまた、プロセッサに連結されており、プロセッサがハードウェアユニットからメッセージを受信することを可能にするために使用されるメッセージインターフェースユニットに対して提供される。実施形態において、メッセージインターフェースユニットは、メッセージをキューに入れるために使用され得る1つ以上のキューを含む。1つ以上のキューの各々は、そのキューに対する優先度レベルを示す特有なアドレスに割り当てられ得る。特有なアドレスは、ハードウェアユニットによって、プロセッサかまたはメッセージインターフェースユニットによって送信されたメッセージの目的地アドレスとして使用される。受信レジスタは、1つ以上のキューに連結されている。受信レジスタは、メッセージのうちの1つ以上の引数を格納するために使用される。いくつかの実施形態において、受信レジスタは、現在において最高の優先度レベルを有するキューのメッセージの引数を格納するために使用され、このメッセージは、他のキュー(例えば、より低い優先度レベル)のメッセージの前にプロセッサによって処理される。いくつかの実施形態において、メッセージインターフェースユニットおよびプロセッサは、同じデバイス(例えば、プログラマブル論理デバイス)上に設置されている。
【0012】
本発明は、例えば、以下の項目を提供する。
(項目1)
メッセージネットワークインターフェースユニットであって、該メッセージネットワークインターフェースユニットは、プロセッサに連結されており、該プロセッサが該プロセッサによって生成された複数のメッセージをハードウェアユニットに送信することを可能にし、該メッセージネットワークインターフェースユニットは、
該プロセッサによって生成された該複数のメッセージのうちの少なくもと1つのメッセージの引数を格納するように動作可能な伝送レジスタであって、該少なくとも1つのメッセージが推測的に生成される、伝送レジスタと、
該伝送レジスタに連結されており、該複数のメッセージをキューに入れるように動作可能なキューであって、動作は、該メッセージネットワークインターフェースユニットがトリガーメッセージを受信することに応じて該キューにおいて実行される、キューと
を含む、メッセージネットワークインターフェースユニット。
(項目2)
上記動作は、上記キューの内容を放棄しており、上記トリガーメッセージは、例外が発生したことを示す、上記項目に記載のメッセージネットワークインターフェースユニット。
(項目3)
上記動作は、上記キュー内の上記複数のメッセージを送信している、上記項目のいずれかに記載のメッセージネットワークインターフェースユニット。
(項目4)
上記伝送レジスタは、上記複数のメッセージのうちの任意のメッセージが送信されるか否かの決定の前に、該複数のメッセージのうちの各メッセージを生成するために使用される、上記項目のいずれかに記載のメッセージネットワークインターフェースユニット。
(項目5)
上記伝送レジスタは、上記少なくとも1つのメッセージの引数を格納するためのスクラッチパッドメモリを含む、上記項目のいずれかに記載のメッセージネットワークインターフェースユニット。
(項目6)
上記メッセージネットワークインターフェースユニットおよび上記プロセッサは、同じデバイス上に設置されている、上記項目のいずれかに記載のメッセージネットワークインターフェースユニット。
(項目7)
上記デバイスは、プログラマブル論理デバイスである、上記項目のいずれかに記載のメッセージネットワークインターフェースユニット。
(項目8)
ビデオスカラーであって、該ビデオスカラーは、上記項目のいずれかに記載のメッセージネットワークインターフェースユニットを用いて1つのフォーマットから別のフォーマットにビデオをスケールする、ビデオスカラー。
(項目9)
メッセージネットワークインターフェースユニットに連結されたプロセッサが複数のメッセージをハードウェアユニットに送信することを可能にするための方法であって、該方法は、
該プロセッサを用いて、該複数のメッセージを推測的に生成することであって、該生成することは、該複数のメッセージのうちの少なくとも1つのメッセージの引数を伝送レジスタ内に格納することを含む、ことと、
該伝送レジスタに連結されたキュー内の該複数のメッセージをキューに入れることと、
該メッセージネットワークインターフェースユニットにおいて、動作が実行されるべきであることを示すメッセージを受信することと、
該動作が実行されるべきであることを示す該メッセージを受信することに応じて該キューにおいて動作することと
を含む、方法。
(項目10)
上記動作は、上記キューの内容を放棄することを含み、該動作が実行されるべきであることを示す上記メッセージは、期待が発生したことを示す、上記項目のいずれかに記載の方法。
(項目11)
上記動作は、上記キュー内の上記複数のメッセージを送信することを含む、上記項目のいずれかに記載の方法。
(項目12)
上記推測的に生成することは、上記複数のメッセージのうちの1つのメッセージが送信されるか否かの決定の前に、上記伝送レジスタを使用する、上記項目のいずれかに記載の方法。
(項目13)
上記複数のメッセージのうちの上記少なくとも1つのメッセージの引数を格納することは、該複数のメッセージのうちの該少なくとも1つのメッセージの該引数をスクラッチパッドメモリ内に格納することを含む、上記項目のいずれかに記載の方法。
(項目14)
上記メッセージネットワークインターフェースユニットおよび上記プロセッサは、同じデバイス上に設置されている、上記項目のいずれかに記載の方法。
(項目15)
上記デバイスは、プログラマブル論理デバイスである、上記項目のいずれかに記載の方法。
(項目16)
メッセージネットワークインターフェースユニットであって、該メッセージネットワークインターフェースユニットは、プロセッサに連結されており、該プロセッサがハードウェアユニットから複数のメッセージを受信することを可能にし、該メッセージネットワークインターフェースユニットは、
該複数のメッセージをキューに入れるように動作可能な複数のキューであって、該複数のキューのうちの少なくとも1つのキューは、関連付けられた優先度レベルを示すアドレスに割り当てられる、複数のキューと、
該複数のキューに連結されており、該複数のメッセージのうちの少なくとも1つのメッセージの引数を格納するように動作可能である受信レジスタと
を含む、メッセージネットワークインターフェースユニット。
(項目17)
上記受信レジスタは、現在の最高優先度レベルを示すアドレスに関連付けられた上記複数のキューのうちの1つのキューから上記複数のメッセージのうちの上記少なくとも1つのメッセージの上記引数を格納するように動作可能である、上記項目のいずれかに記載のメッセージネットワークインターフェースユニット。
(項目18)
上記プロセッサは、上記複数のキューの別のキュー内の他のメッセージを処理する前に、上記現在の最高優先度レベルを示す上記アドレスに関連付けられた該複数のキューのうちの上記キュー内のメッセージを処理する、上記項目のいずれかに記載のメッセージネットワークインターフェースユニット。
(項目19)
上記アドレスは、特有であり、該アドレスは、上記ハードウェアユニットから受信された上記複数のメッセージのための目的地アドレスとして使用される、上記項目のいずれかに記載のメッセージネットワークインターフェースユニット。
(項目20)
上記メッセージネットワークインターフェースユニットおよび上記プロセッサは、プログラマブル論理デバイス上に設置されている、上記項目のいずれかに記載のメッセージネットワークインターフェースユニット。
【0013】
(摘要)
方法およびシステムは、プロセッサに連結されており、プロセッサがメッセージをハードウェアユニットに送信することを可能にするために使用されるメッセージネットワークインターフェースユニット(メッセージインターフェースユニット)に対して提供される。方法およびシステムはまた、プロセッサに連結されており、プロセッサがハードウェアユニットからメッセージを受信することを可能にするために使用されるメッセージインターフェースユニットに対して提供される。本明細書に説明されるメッセージネットワークインターフェースユニットは、実質的に短いメッセージ応答待ち時間と実質的に大きいメッセージ処理量を要求するデータ集約型リアルタイムアプリケーションの実装を可能にし得る。
【0014】
本開示のさらなる特徴、その本質およびさまざまな利点は、添付の図面を関連して、以下の詳細な説明を考慮する際に明白になる。同様な参照文字は、全体通して同様なバーツを指す。
【図面の簡単な説明】
【0015】
【図1】図1は、例示的な実施形態に従う、メッセージに対応する信号とメッセージのフォーマットとの簡単化されたダイヤグラムである。
【図2A】図2Aは、例示的な実施形態に従う、メッセージインターフェースユニットを活用するビデオスカラーのための簡単化されたブロックダイヤグラムである。
【図2B】図2Bは、例示的な実施形態に従う、メッセージインターフェースユニットを活用するビデオスカラーのための簡単化されたブロックダイヤグラムである。
【図3】図3は、例示的な実施形態に従う、メッセージインターフェースユニットを提供するための直接メモリアクセス解決法である。
【図4】図4は、例示的な実施形態に従う、メッセージインターフェースユニットを提供するための解決法の簡単化されたブロックダイヤグラムである。
【図5】図5は、データ処理システム内にあるように、本明細書において説明されたメッセージインターフェースユニットの実施形態を含む集積回路(IC)または他のデバイス(例えば、PLD、ASSP、ASIC、フルカスタムチップ、専用チップ、プログラマブル論理デバイス、またはFPGA)を例示する。
【発明を実施するための形態】
【0016】
(発明の詳細な説明)
本発明の全体の理解を提供するために、ある例示的な実施形態がここで説明される。しかしながら、本明細書において説明されたシステムおよび方法が対象とする用途に対して適切であるように適合かつ改変され得ることと、本明細書において説明されるシステムおよび方法が他の適切な用途において使用され得ることと、そのような他の付加および改変が本明細書の範囲から逸脱されないこととが当業者によって理解される。
【0017】
図1は、例示的な実施形態に従う、メッセージに対応する信号とメッセージのフォーマットとの簡単化されたダイヤグラムである。本明細書に使用されるように、メッセージは、ソフトプログラミングにおける機能コールに類似し得る。特に、メッセージは、機能コールをカプセル化するパケットであり得る。例えば、メッセージは、機能コールボイドf00(整数引数1,...,整数引数N)を実行するために必要な情報をカプセル化し、および運搬し得る。この機能コールにおいて、実行するためのタスクは、f00であり、入力をタスクに提供する引数は、引数1から引数Nである。パケット化されたメッセージフォーマットにおいて、機能f00は、タスクIDによって識別されたタスクに対応し、引数1から引数Nまでの引数は各々、パケット内の引数データワードに対応する。ハードウェアユニット(例えば、プロセッサまたは専用処理ブロック)がこのメッセージを受信する場合に、メッセージは、関連付けられた入力、引数1から引数Nを用いて(すなわち、パケット内の受信された引数データワードを用いて)タスクf00(すなわち、タスクIDに関連付けられたタスク)を実行するように、ハードウェアユニットに命令する。
【0018】
図1は、メッセージが送受信されることができる期間を決定するために使用されるクロック信号102を示す。図1はまた、パケットの開始(sop)信号104と、パケットの終了(eop)信号106とを示す。sopは、パケット、およびメッセージの開始を指示し、eopは、パケットおよびメッセージの終了を指示する。さらに、図1は、メッセージの一般的フォーマット110を示す。110において例示されるように、コンテキストID(CID)112、タスクID(TID)114、ソースID(SID)116、および目的地ID(DID)118を含む制御ヘッダは、メッセージの最重要ビット(MSB)の中に見つけられ得る。引数データワード120の各々は、110内のメッセージの最も重要でないビット(LSB)の中に見つけられ得る。コンテキストID112は、メッセージ110に関連するタスクが実行されるべきである状態を示す。タスクID114は、実行されるべきであるタスクを示す。ソースID116は、メッセージの送信元を識別する。目的地ID118は、メッセージの受信側を識別し、そしてメッセージが、例えば、メッセージの正しい受信側または正しいキューへルーティングされることを可能にし得る。
【0019】
図2Aおよび2Bは、例示的な実施形態に従う、メッセージインターフェースユニット220を活用するビデオスカラー200のための簡単化されたブロックダイヤグラムである。ビデオスカラー200は、計数されたビデオ入力(CVI)ユニット202、VIBユニット204、パケットスイッチ206、ハードウェアパイプライン208、パケットライター210、DDR3メモリブロック212、フレームリーダー214、計数されたビデオ出力(CVO)ユニット216、パケットスイッチ218、メッセージインターフェースユニット220、カーネルクリエイタ222、およびプロセッサ224(スケジューラ224とも呼ばれる)を含む。ビデオスカラー200は、ビデオ処理、例えば、1080p60ビデオ(フレーム当たり1080のビデオのアクティブラインと毎秒60のフレームとを含む)を4Kビデオ(すなわち、1080p60ビデオの4倍の解像度)にアップスケールするために使用され得る。いくつかの実施形態において、プロセッサ224は、スカラー200の外部に設置され得る。いくつかの実施形態において、プロセッサ224は、San Jose,CaliforniaのAltera Corporationから入手可能なFPGAに組み込まれたNIOS(登録商標)CPUであり得る。いくつかの実施形態において、プロセッサは、任意タイプの一般的なプロセッサまたはプロセッサコアであり得る。1つの例示的な実施形態において、ビデオアップスケーリングは、本明細書に説明されるメッセージインターフェースユニットを活用するが、例えば、ビデオ処理、データストレージ、または通信における他の機能は、これらのメッセージインターフェースユニットを用いて同様に実装され得る。
【0020】
ビデオアップスケーリングは、システム200のハードウェアパイプライン208のうちの4つを用いて実装され得る。ハードウェアパイプラインの各々は、4つのハードウェアユニット(順番に、クリッパー、ラインバッファー、スカラー、および別のクリッパー)を含み得、パイプラインの各々は、引込ビデオの四分の一で動作し得る。プロセッサ224において動作するソフトウェアは、メッセージインターフェースユニット220を用いてメッセージを送信することによって引込ビデオを処理するように、ハードウェアパイプライン208の各々を制御し得る。特に、プロセッサ224は、ハードウェアパイプライン208のハードウェアユニットのうちの1つ以上にメッセージを送信するように、メッセージインターフェースユニット200を命令し得る。プロセッサ224において動作するソフトウェアは、メッセージインターフェースユニット220を介してハードウェアパイプライン208内のハードウェアユニットに送信されたメッセージのタイプを変えることによって、任意のハードウェアパイプラインを任意の特定タイプの引込ビデオストリームに動的に適応することが可能であり得る。ハードウェアパイプライン208に動的に適応するこの方法は、複雑なハードウェア制御なしに、パイプラインが入出力ビデオフォーマットの複数の構成およびタイプをサポートすることを可能にし得る。例えば、ハードウェアパイプライン208は、1つの4Kビデオストリーム、4つの1080p60ストリーム、または4つの720p60ビデオストリームの出力をサポートすることが可能であり得る。
【0021】
動作中、1080p60ビデオは、ある時間においてフレームの1つのラインをCVIユニット202に入力し得、CVIユニット202は、この情報を処理し、そしてVIBユニット204に送信し得る。VIBユニット204は、この情報をパケット化し、そしてパケットスイッチ218に出力し得、パケットスイッチ218は、この情報をメッセージインターフェースユニット220およびカーネルクリエイタ222に出力し得る。メッセージインターフェースユニット220は、1つ以上のメッセージをプロセッサ224に送信することによってビデオのフレームの引込ラインをプロセッサ224に通知し得る。プロセッサ224はまた、ビデオのフレームの引込ラインを通知され得る。
【0022】
プロセッサ224は、ビデオの引込ラインおよびフレームに対応するメッセージを受信し得、これらのメッセージの各々を処理し得る。特に、1080p60ビデオに対して、実際には、毎秒60の引込フレームの各々は、プロセッサ224に、フレームの幅および高さを示す1つのメッセージを受信させ得る。実際には、引込1080アクティブラインのビデオの各入力アクティブラインは、プロセッサ224に、2つのメッセージ:ラインの開始を示す1つのメッセージと、ラインの終了を示す別のメッセージとを受信させ得る。実際には、ビデオの各入力アクティブラインはまた、カーネルクリエイタ222からパケットスイッチ218を介して2つの追加のメッセージを受信させ得、2つの追加のメッセージは、出力ビデオの2つのラインを生成するために、ビデオの入力アクティブラインをアップスケールするためのカーネルクリエイタによって形成された要求された係数を含む。先行するメッセージの各々は、プロセッサに通信するメッセージインターフェースユニット220を介してプロセッサ224によって受信され得る。
【0023】
メッセージインターフェースユニット220を用いて、プロセッサ224はまた、アップスケールされるべきである引込ビデオのフレームおよびラインに基づいてメッセージを送信し得る。各入力フレームは、プロセッサ224に、6つのメッセージを(2つのメッセージをカーネルクリエイタ222に、4つのメッセージをハードウェアパイプライン208のラインバッファーの各々に)送信させ得る。加えて、ビデオの各入力アクティブラインは、プロセッサ224に、52のメッセージを、例えば、パケットスイッチ218を介して4つのハードウェアパイプライン208の各々におけるさまざまな部品に送信させ得る。メッセージインターフェースユニット220は、プロセッサ224に代わってこれらのメッセージの各々を送信し得る。
【0024】
VIBユニット204は、パケットスイッチ218を介して、メッセージインターフェースユニット220および/またはカーネルクリエイタ222によって送信されたメッセージを受信し得る。VIBユニット204は、これらのメッセージ内にビデオデータを複製し得、そしてメッセージをパケットスイッチ206に転送し得、パケットスイッチ206は、ハードウェアパイプライン208のさまざまな部品にメッセージを転送し得る。引込ビデオのアクティブラインおよびフレームで動作するハードウェアパイプライン208の各々は、それが受信するビデオの各アクティブラインの一部分、ビデオの複数の引込クリップされたアクティブラインをバッファーするためのラインバッファー、バッファーからバッファーされ、かつクリップされたビデオのアクティブラインをスケールするスカラー、およびスケールされ、バッファーされ、そしてクリップされたビデオをクリップするためのクリッパーを含む。前述のように、ハードウェアパイプライン208内のこれらのハードウェアユニットの各々は、プロセッサ224および/またはメッセージインターフェースユニット220によって送信/転送される制御メッセージを用いて制御され得る。ハードウェアパイプライン208によって処理された後に、結果として生じるビデオは、DDR3メモリブロック212に書き込まれるように、パケットライター210に送信され得る。DDR3メモリブロック212の使用は、例示的であり、本発明の範囲を限定する意図がない。他のタイプのメモリ(例えば、任意のタイプのランダムアクセスメモリ、読取専用メモリ、またはフラッシュメモリ)が、代わりに、またはDDR3メモリブロック212と組み合わせて使用され得る。結果として生じるビデオは、フレームリーダー214によって、ある後の時間にDDR3メモリブロック212から読み出され得、フレームリーダー214は各々、それが読み取るビデオを、スカラー200から出力されるように、CVOユニット216のうちの1つに転送し得る。フレームリーダー214は各々、プロセッサ224および/またはメッセージインターフェースユニット220によって送信/転送される制御メッセージを用いて別々に制御され得る。
【0025】
1080p60ビデオを4Kビデオにアップスケールするために、(60×1)+(1080×60×4)=259260のメッセージの全部は、毎秒、プロセッサによって受信され得、(60×6)+(1080×60×52)=3369960のメッセージの全部は、毎秒、送信され得る。それ故に、この代表的な実施形態において、259260+3369960=3.6百万のメッセージは、毎秒、受信も送信もされ得る。それ故に、この例において、アップスケーリングは、毎秒3.6百万のメッセージ処理量を要求し得る。
【0026】
メッセージ応答待ち時間は、プロセッサがメッセージを受信し、プロセッサが適切な動作を取り終わるまでの経過時間として規定され得、適切な動作は、例えば、応答において適切なメッセージを送信することを含む。1080p60ビデオを4Kビデオにアップスケールすることは、短いメッセージ応答待ち時間を要求し得る。リアルタイルアプリケーション(例えば、1080p60ビデオを4Kビデオにアップスケールすること)に対して、メッセージ応答待ち時間は、タスクの完成における全体的待ち時間の実質的な要因であり得る。従って、ビデオをアップスケールすることは、毎秒、送信または受信されるべきである3.6百万のメッセージの組み合わせされた処理量を要求し得るだけではなく、実質的に短いメッセージ応答待ち時間も要求し得る。
【0027】
図3は、代表的な実施形態に従う、メッセージインターフェースユニットを提供するためのDirect Memory Accessベースの解決法である。図3において、共用メモリ310、Direct Memory Access(DMA)コントローラ312、およびメッセージフォーマットブリッジにマップ化されたメモリ314(合わせてメッセージインターフェースユニット350)は各々、プロセッサ300に、およびデータバス320を介して互いに連結されている。DMAコントローラ312は、メッセージを送受信するために、プロセッサ300によって使用され得る。
【0028】
プロセッサ300は、メッセージを生成、およびこれらのメッセージを共用メモリ310内に格納し得る。例えば、図3は、生成され、およびプロセッサ300によって共用メモリ310内に格納された7つのメッセージを示す。プロセッサ300は、プロセッサ300が伝送することを望む共有メモリ310内のメッセージを指すDMA転送記述を生成し得る。次に、プロセッサ300は、メッセージフォーマットブリッジにマップ化されたメモリ314を用いて、1つ以上のハードウェアユニットにメッセージを転送することによってこれらのメッセージを送信するようにDMAコントローラ312に命令し得る。メッセージフォーマットブリッジにマップ化されたメモリ314は、メッセージをパケット化し、メッセージを適切なハードウェアユニットに転送し得る。図3に示されるメッセージインターフェースユニット350の解決法は、完全な機能的メッセージインターフェースユニットの解決法であるが、あるデータ集約型リアルタイムアプリケーションの実質的に高処理量の要求を満たすことができない場合がある。特に、図3に示された解決法において、プロセッサ300は、送信/転送されるメッセージを上書きし、プロセッサの非効率的使用を引き起こすことを防止するために、共用メモリ310へのアクセスを管理する必要があり得る。加えて、この解決法は、各メッセージ転送のために、DMAコントローラ312に対するDMA転送記述を生成するようにプロセッサ300に要求し得、プロセッサの非効率的使用を引き起こす。さらに、図3に示された解決法を用いて、複数回、同じメッセージを、またはメッセージに対する僅かな変更を伴って送信することは、解決法がプロセッサのDMAコントローラ312との同期を要求するため、プロセッサ300にとって非効率的であり得る。プロセッサに対するこれらの非効率化は、図3に示された解決法を用いる場合に、メッセージの処理量を低減させ得る。
【0029】
図3に示されたメッセージインターフェースユニット350の解決法はまた、メッセージがプロセッサによって受信されるときに、いくつかのデータ集約型リアルタイムアプリケーションの正しい動作に対して長すぎるメッセージ応答待ち時間を有し得る。特に、この解決法において、プロセッサ300は、任意の引込メッセージを共有メモリ310に複製するようにDMAコントローラ312に命令することを要求され、プロセッサ300に対するクロックサイクルの非効率的使用を引き起こす。加えて、この解決法において、DMAコントローラ312は、コントローラが任意の引込メッセージを共有メモリ310に複製したときに、プロセッサ300を中断させる。次に、プロセッサ300は、メッセージを読み取り、適切な動作を実行するように要求される。引込メッセージに対して適切な動作を実行するようにプロセッサに対して要求された追加のステップは、プロセッサ300に対する浪費されたクロックサイクルに起因する追加の非効率化を引き起こす。従って、図3に示された解決法のメッセージインターフェースユニット350を用いてメッセージを受信することは、あるデータ集約型リアルタイムアプリケーションに対する要求を超えるメッセージ応答待ち時間を増加し得るプロセッサ非効率化を引き起こす。
【0030】
図4は、例示的な実施形態に従う、メッセージインターフェースユニット450を提供するための解決法の簡単化されたブロックダイヤグラムである。図4は、データバス402を介してメッセージインターフェースユニット450に連結されているプロセッサ400を示す。いくつかの実施形態において、プロセッサ400は、任意タイプの一般的プロセッサであり得る。いくつかの実施形態において、プロセッサ400は、プログラマブル集積回路デバイス(例えば、プログラマブル論理デバイス(例えば、FPGA))の組み込まれたプロセッサである。例えば、プロセッサ400は、San Jose,CaliforniaのAltera Corporationから入手可能なFPGAに組み込まれたNIOS(登録商標)CPUであり得る。いくつかの実施形態は、プロセッサは、任意タイプの一般的プロセッサまたは処理コアであり得る。プロセッサは、メッセージインターフェースユニット450と同じデバイス上または、メッセージインターフェースユニット450とは別のデバイス、またはその周辺のデバイス上に設置され得る。
【0031】
メッセージインターフェースユニット450は、プロセッサ400がメッセージを送受信することを可能にし得る。メッセージインターフェースユニット450は、プロセッサ400が、データ集約型リアルタイムアプリケーション(例えば、前述の1080p60ビデオを4Kビデオにアップスケールすること)をサポートするために、十分に大きい処理量かつ十分に短いメッセージ応答待ち時間でメッセージを送受信することを可能にし得る。いくつかの実施形態において、メッセージインターフェースユニット450は、プロセッサ400と同じデバイス上に含まれ得る。いくつかの実施形態において、メッセージインターフェースユニット450は、プロセッサ400とは別個のデバイス(すなわち、周辺デバイス)である。いくつかの実施形態において、メッセージインターフェースユニット450は、任意のプロセッサに取り付けられ得るメモリマップ化された周辺デバイスである。メッセージインターフェースユニット450は、図2Bのメッセージインターフェースユニット220に類似し得、図2Aおよび2Bのビデオスカラー220を用いて使用され得る。
【0032】
メッセージインターフェースユニット450は、いくつかの予備のレジスタ(示されていない)、space_availableレジスタ404、send_queueレジスタ406、free_queueレジスタ408、ヘッダレジスタ410、引数レジスタ412を含む伝送レジスタ460を含み得る。引数レジスタ412は、スクラッチパッドメモリとも呼ばれ得る。プロセッサ400は、メッセージインターフェースユニット450と通信することによって伝送レジスタ460から読み取り、または伝送レジスタ460に書き込み得る。いくつかの実施形態において、伝送レジスタ460は、1つ以上のキュー480に連結され得、1つ以上のキュー480は各々、メッセージ(例えば、プロセッサによって生成されたメッセージ)をキューに入れ、送信するために使用され得る。いくつかの実施形態において、伝送レジスタ460のアドレスと、プロセッサ400がこれらのレジスタの各々に書き込むかまたは読み取るときに発生するものに対する記述とが、表1に示される。
【0033】
【表1】

プロセッサ400は、メッセージインターフェースユニット450用いて、データ集約型リアルタイムアプリケーションのためのメッセージを送信することに対して十分に大きい処理量を達成し得る。特に、引数レジスタ412(すなわち、スクラッチパッドメモリ)は、後に送信され得るメッセージを推測的に生成するために、プロセッサ400によってアクセスされ得る。プロセッサ400は、スクラッチパッドメモリを活用することによって、高レートでメッセージを生成し、および送信することが可能であり得る。メッセージインターフェースユニット450は、スクラッチパッドメモリへの任意のアクセスを制御し得、プロセッサ400が現在(例えば、前のメッセージの一部分として)送信されている引数レジスタに書き込もうとする場合に、プロセッサを遅延させ得る。そうでなければ、メッセージインターフェースユニット450は、プロセッサ400が、各クロックサイクルがメッセージを送信するための準備中である間に、引数レジスタに書き込むことを可能し得る。メッセージが送信される前に、変更がある引数値に対応する引数レジスタのみが書き込まれる必要があるので、プロセッサは、効率的に同一または類似のメッセージを送信し得る。一旦プロセッサ400が、ヘッダレジスタ410に書き込むと、スクラッチパッドメモリ内の引数を含むメッセージは、キュー480のうちの1つに送信され、またはキューに入れられ得る。このように、メッセージインターフェースユニット450と共に、プロセッサ400は、メッセージインターフェースユニット450および/またはプロセッサ400が特定のメッセージを受信する場合において送信されるべきであるメッセージを推測的に生成し、キューに入れ得る。推測的メッセージの生成およびキューに入れることが以下により詳細に説明される。
【0034】
メッセージを送信し、または任意のキューの内容を放棄するために、プロセッサ(例えば、プロセッサ400)によって使用され得るソフトウェアコードの例が、以下に示される。この例のコードにおいて、使用されたマクロは、本明細書に組み込まれた付録Aに記載されている。
【0035】
【化1】

プロセッサ400は、推測的にメッセージを生成するために、メッセージインターフェースユニット450において、引数レジスタ412(すなわち、スクラッチパッドメモリ)を使用し得る。プロセッサ400は、プロセッサが生成したメッセージを(デバイスかまたはキュー480のうちの1つ)に送信するために、ヘッダレジスタ410に書き込み得る。プロセッサ400は、メッセージを送信するために、最小数のクロックサイクルを使用し得る。特に、メッセージを送信するためのクロックサイクルの数は、N回の書き込み(N個の引数レジスタ412に書き込み、ここで、Nは、引数の数である)+1回の書き込み(ヘッダレジスタ410に書き込む)と等しくあり得る。加えて、メッセージは、プロセッサ400を中断することなしに送信され得る(すなわち、プロセッサ400からの関与なしに、メッセージインターフェースユニット450によって自動的に送信され得る)。いくつかの実施形態において、引数レジスタ412は、それらの値を保持することにより、後の同一のメッセージは、ヘッダメッセージへの1回の書き込みのみによって送信され得る。プロセッサ400は、繰り返し同じメッセージを送信するために、ヘッダレジスタ410への繰り返しの書き込みを実行し得る。
【0036】
メッセージを送信する場合に、引数レジスタ412内に格納された引数は、プロセッサ400が既に送信/転送されている引数に対して引数レジスタ412を更新する(に書き込む)ことを可能にするために、連続して読み取られ、送信/転送され得る。迅速に新しいメッセージを生成するために、プロセッサ400は、引数レジスタ412のうちの任意の1つの引数が送信/転送されている間のクロックサイクルの直後のクロックサイクルの間に、そのレジスタに書き込み得る。従って、ヘッダレジスタ410への書き込みの後のクロックサイクルの開始において、メッセージインターフェースユニット450は、プロセッサ400が、(事前に格納された引数arg0が送信/転送された後に)arg0引数レジスタに書き込むことを可能にし得る。後のクロックサイクルの間に、メッセージインターフェースユニット450は、プロセッサ400が、arg1引数レジスタに書き込み、後のクロックサイクルにおいて、arg2引数レジスタに書き込む等を可能にし得る。
【0037】
伝送レジスタ460からのメッセージをキュー480または他のデバイスに送信/伝送するために使用される伝送データバスは、1つの引数の幅の数倍であり得る。これは、複数の引数が、データバス上で一回で送信されることを可能にし得、また、メッセージが、生成され、プロセッサ400を遅延させることなしにシステムまたはキューに送信/転送されることを可能にし得る。これは、プロセッサ400に対して向上された効率化を引き起こし得る。
【0038】
上に議論されたように、メッセージは、システム内に、またはハードウェアユニットに直接に送信される代わりに、キュー480のうちの1つに置かれ得る。キュー480のうちの任意の1つにおける全てのメッセージは、プロセッサ400によって、free_queueレジスタ408へ、一回書き込みで放棄され得る。キュー480のうちの任意の1つにおける全てのメッセージは、プロセッサ400によって、send_queueレジスタ406へ、一回書き込みで送信され得る。特に、プロセッサ400は、キュー408のうちの1つの中へのメッセージを推測的に生成し、キューに入れ得る。このような推測的メッセージの生成およびキューに入れることは、発生し得る期待された事象の予想(例えば、アップスケールされるべきであるビデオの新ラインを有する引込メッセージが後に到達するという予想)においてプロセッサによって実行され得る。メッセージは、(前述のように)生成され得、プロセッサが働いていない間のクロックサイクルの間に推測的にキューに入れられ得る(例えば、ビデオの新ラインを受信することに応じてプロセッサによって送信されるべきであるメッセージは、伝送レジスタ460を用いて推測的に生成され、キュー480を用いてキューに入れられ得る)。このタイプの推測的メッセージの生成およびキューに入れることは、いくつかのメッセージが推測的に生成され、期待されたメッセージの到達に応じて迅速に送信されるので、メッセージインターフェースユニット450が大きいメッセージ処理量を達成することを可能にし得る。加えて、このタイプの推測的メッセージの生成およびキューに入れることは、メッセージインターフェースユニット450が、期待されたメッセージの到達に応じてメッセージを生成するための追加のサイクルの使用を防ぐことによって短いメッセージ応答待ち時間を達成することを可能にし得る。さらなる待ち時間を低減させるために、メッセージインターフェースユニット450は、特定のメッセージ(トリガーメッセージとも呼ばれる)によってトリガーされる場合に、キュー480のうちの1つの中のメッセージの一部または全部を自動的に送信し、または放棄するように構成され得、それによって、プロセッサ400から追加のクロックサイクルを解放し、場合によっては他のタスクを実行する。
【0039】
前述のように、1つ以上のキュー480は、推測的にメッセージをキューに入れるために使用され得る。プロセッサ400の代わりに動作し、または独立して動作するメッセージインターフェースユニット450は、メッセージインターフェースユニット450またはプロセッサ400によって受信される特定のメッセージに応じて動作を実行し得る。メッセージインターフェースユニット450によって実行された動作は、メッセージインターフェースユニット450が、メッセージインターフェースユニット450またはプロセッサ400によって受信された特定のメッセージに応じてキューのうちの1つのメッセージまたはキュー480のうちの1つ以上の中に含まれたメッセージの全てを送信または放棄することを可能にする。例えば、プロセッサ400および/またはメッセージインターフェースユニット450は、それが例外の発生を示すメッセージを受信したときに、キュー480のうちの1つの中のメッセージの全部を放棄し得る。メッセージインターフェースユニット450は、構成可能なトリガー(示されていない)を含み得、構成可能なトリガーは、任意のキュー480内に含まれるメッセージの一部または全てがメッセージ(すなわち、トリガーメッセージ)を受信したときに、自動的に送信または放棄されることを可能にする。これらのトリガーは、メッセージインターフェースユニット450が、プロセッサ400の関与なしに、メッセージ(トリガーメッセージ)の受信のときに動作することを可能にし得、それによって、プロセッサ400上の負担を低減させる。いくつかの実施形態において、構成可能なトリガーは、メッセージインターフェースユニット450内のハードウェアユニットにおいてハードワイヤ化またはプログラム化され得る。いくつかの実施形態において、構成可能なトリガーは、メッセージインターフェースユニット上で動作するソフトウェアに基づき得る。
【0040】
メッセージインターフェースユニット450は、いくつかの予備のレジスタ(示されていない)、send_queueレジスタ420、fill_levelレジスタ422、get_messageレジスタ424、ヘッダレジスタ426、引数レジスタ428を含む受信レジスタ470を含み得る。プロセッサ400は、メッセージインターフェースユニット450を介して伝送レジスタ470から読み取り、または伝送レジスタ470に書き込み得る。1つの実施形態において、受信レジスタ470のアドレスと、プロセッサ400がこれらのレジスタの各々に書き込むかまたは読み取るときに発生するものに対する記述とが、表2に示される。
【0041】
【表2】

メッセージを受信するために、プロセッサ(例えば、プロセッサ400)によって使用され得るソフトウェアコードの例が、以下に示される。この例のコードにおいて、使用されるマクロは、本明細書に組み込まれた付録Bに記載されている。
【0042】
【化2】

プロセッサ400が、書き込み動作をget_messageレジスタ424に対して実行するときに、メッセージがキュー490のうちの1つ以上から引数レジスタ428内にロードされ得る。プロセッサ400は、メッセージをロード/受信するために、最小数のクロックサイクルを使用し得る。特に、メッセージをロード/受信するためのクロックサイクルの数は、1回の書き込み(get_messageレジスタ424に書き込む)+1回の読み取り(ヘッダレジスタ426から読み取る)+N回の読み取り(N個の引数レジスタ428から読み取り、ここで、Nは、引数の数である)と等しくあり得る。加えて、いくつかの実施形態において、メッセージは、プロセッサ400を中断することなしにロード/受信され得る(すなわち、メッセージインターフェースユニット450によって自動的にロード/受信され得る)。
【0043】
メッセージをロード/受信する場合に、引数レジスタ428が連続して書き込まれ、読み取られることにより、プロセッサ400が(例えば、キュー490のうちの1つを介して)既に書き込まれ、および最近に利用可能になった引数レジスタ428から引数を読み取ることを可能し得る。迅速に新しいメッセージをロードするために、プロセッサ400は、引数レジスタ428のうちの任意の1つの引数が、例えば、キュー490のうちの1つを介して書き込まれている間のクロックサイクルの直後のクロックサイクルの間に、そのレジスタから読み取られ得る。従って、get_messageレジスタ424への書き込みの後のクロックサイクルの開始において、メッセージインターフェースユニット450は、プロセッサ400が、(引数arg0が、例えば、キュー490のうちの1つを介して書き込まれた後の1つのクロックサイクル)arg0引数レジスタを読み取ることを可能にし得る。後のクロックサイクルの間に、メッセージインターフェースユニット450は、プロセッサ400が、arg1引数レジスタから読み取り、後のクロックサイクルにおいて、arg2引数レジスタから読み取る等を可能にし得る。
【0044】
キュー490から受信レジスタ470にメッセージをロード/受信するために使用される伝送データバスは、1つの引数の幅の数倍であり得る。これは、複数の引数が、データバス上で一回でロード/受信されることを可能にし得、また、メッセージが、プロセッサ400を遅延させることなしにロード/受信され、読み取ることを可能にし得る。これは、プロセッサ400に対して向上された効率化を引き起こし得る。
【0045】
プロセッサ400またはメッセージインターフェースユニット450に送信されたメッセージは、キュー490のうちの1つに置かれ得る。1つ以上のキュー490の各々は、ハードウェアユニットの各々がそれのメッセージを適切なキューに送信することが可能であるようにするために、異なる特有な目的地アドレスを有し得る。プロセッサ400がキュー490のうちの任意の1つからメッセージを受信することが可能であり得るので、専用キューに入れることのこの使用は、特定のメッセージが「ヘッダへジャンプし」、他のメッセージより早く処理されることを可能にする。さらに、専用キューに入れることのこのような使用は、システムが異なる優先度に従ってメッセージをキューに入れることを可能にする。これは、異なる優先度レベルをキュー490の各々に割り当てることによって達成され得る。このような方式において、各キューに割り当てられたアドレスは、特定の優先度レベルを示し、そして/または関連付けられ得る。
【0046】
図5は、集積回路(IC)560または別のデバイス(例えば、ASSP、ASIC、フルカスタムチップ、専用チップ、プログラマブル論理デバイス、またはFPGA)を活用するデータ処理システム500を例示する。システム500は、本明細書に説明されるメッセージインターフェースユニットの実施形態を含む。実施形態において、IC560は、実質的に図2Aおよび2Bのシステム200に類似し得る。データ処理システム500は、以下の部品:プロセッサ570、メモリ580、I/Oサーキットリー550、および周辺デバイス540のうちの1つ以上を含み得る。これらの部品は、システムバスまたは他の相互接続530によって一緒に連結され、エンドユーザーシステム510内に含まれる回路基板上に置かれる。
【0047】
システム500は、幅広いさまざまな用途(例えば、コンピュータネットワーク、データネットワーキング、計測、ビデオ処理、デジタル信号処理、またはプログラマブルまたは再プログラマブル論理の使用の利点が望ましい任意の別の用途)において使用され得る。IC560は、さまざまな異なる論理機能を実行するために使用され得る。例えば、IC560は、プロセッサ570と協働して働くプロセッサまたはコントローラとして構成され得る。IC560はまた、システム500内の共用リソースへのアクセスを仲裁するためのアービターとして使用され得る。なお別の例において、IC560は、プロセッサ570と、システム500の別の部品またはシステム500の外部の別のデバイスまたはハードウェアユニットとの間のインターフェースとして構成され得る。システム500は、単に代表的であることと、本発明の真の範囲および精神が以下の請求項によって示されるべきであることとが留意されるべきである。
【0048】
以上の説明は、本発明の原理の例示に過ぎず、さまざまな変更は、本発明の範囲および精神から逸脱することなしに当業者によって加えられ得ることが理解される。例えば、図2Bのメッセージインターフェースユニット220は、図4のメッセージインターフェースユニット450に類似し得る。加えて、メッセージインターフェースユニット220は、メッセージインターフェースユニット450と相互交換に使用され得る。当業者は、本発明が、限定ではなく、例示の目的のために示される説明された実施形態以外によって実践され得ることと、本発明が、以下の請求項のみによって限定されることとを認識する。
【0049】
付録A−APIを伝送する
TX_SELECT_QUEUE(queue_id)
TX_SELECT_QUEUEコマンドが利用可能なスペースを返すキューを選択する
1つのキューのみが使用される場合に、これは、スタートアップにおいて1回行われる必要だけがある
MIUへの一回書き込み
words_available = TX_QUEUE_SPACE();
(ワードで)TX_QUEUE_SPACEによって選択されたキュー内の利用可能なスペースを得る
MIUからの一回読み取り
TX_ARG(n, value);
現在のメッセージのn番目引数を設定する
MIUへの一回書き込み
TX_SEND_MSG(queue_id, dst_addr, eid, no_of_arguments);
現在のメッセージのeidおよびdst_addrフィールドを設定する
MIUに現在のメッセージを特定のキューに書き込ませる
MIUへの一回書き込み
キュー0が、直接送信として構成され得る
これは、後にTX_SEND_MSGメッセージを送信する必要なしに、メッセージを直接にシステム内に送信する
TX_SEND_MSG1(queue_id, dst_addr, eid, arg0)
単一引数メッセージを送信する簡潔な方法
MIUに2回書き込み、1回がarg0に対し、1回がヘッダに対する
TX_SEND_MSG2〜TX_SEND_MSG8は、複数の引数メッセージを送信するために使用され得る
MIUにそれぞれに3〜9回書き込む
TX_SEND_QUEUE(queue_id);
キュー内のメッセージのすべてを、それらがキー内にある順番でシステム内に送信する
MIUへの一回書き込み
TX_QUEUE_FREE(queue_id);
キュー内のメッセージのすべてを削除する
MIUへの一回書き込み
付録B−APIを受信する
RX_SELECT_QUEUE(queue_id)
RX_QUEUE_FILL_LEVELコマンドがフィルレベルを返すキューを選択する
1つのキューのみが使用される場合に、これは、スタートアップにおいて1回行われる必要だけがある
MIUへの一回書き込み
no_of_messages = RX_QUEUE_FILL_LEVEL();
RX_SELECT_QUEUEによって選択されたキュー内のメッセージの数を得る
MIUへの一回読み取り
header = RX_HEADER
現在のメッセージのメッセージヘッダを得る
メッセージが有効であるか否かを知るために、ビット24をチェックする(0は、利用可能なメッセージが未だないことを示す)
arg0 = RX_ARG0;
現在のメッセージの1番目の引数を得る
MIUからの一回読み取り
RX_ARG(0〜N)は、1番目〜N+1番目の引数を得るために使用され得る
RX_RECV_MSG(queue_id);
MIUにキューからの次のメッセージを用いて現在のメッセージを更新させる
MIUへの一回読み取り

【特許請求の範囲】
【請求項1】
メッセージネットワークインターフェースユニットであって、該メッセージネットワークインターフェースユニットは、プロセッサに連結されており、該プロセッサが該プロセッサによって生成された複数のメッセージをハードウェアユニットに送信することを可能にし、該メッセージネットワークインターフェースユニットは、
該プロセッサによって生成された該複数のメッセージのうちの少なくもと1つのメッセージの引数を格納するように動作可能な伝送レジスタであって、該少なくとも1つのメッセージが推測的に生成される、伝送レジスタと、
該伝送レジスタに連結されており、該複数のメッセージをキューに入れるように動作可能なキューであって、動作は、該メッセージネットワークインターフェースユニットがトリガーメッセージを受信することに応じて該キューにおいて実行される、キューと
を含む、メッセージネットワークインターフェースユニット。
【請求項2】
前記動作は、前記キューの内容を放棄しており、前記トリガーメッセージは、例外が発生したことを示す、請求項1に記載のメッセージネットワークインターフェースユニット。
【請求項3】
前記動作は、前記キュー内の前記複数のメッセージを送信している、請求項1に記載のメッセージネットワークインターフェースユニット。
【請求項4】
前記伝送レジスタは、前記複数のメッセージのうちの任意のメッセージが送信されるか否かの決定の前に、該複数のメッセージのうちの各メッセージを生成するために使用される、請求項1に記載のメッセージネットワークインターフェースユニット。
【請求項5】
前記伝送レジスタは、前記少なくとも1つのメッセージの引数を格納するためのスクラッチパッドメモリを含む、請求項1に記載のメッセージネットワークインターフェースユニット。
【請求項6】
前記メッセージネットワークインターフェースユニットおよび前記プロセッサは、同じデバイス上に設置されている、請求項1に記載のメッセージネットワークインターフェースユニット。
【請求項7】
前記デバイスは、プログラマブル論理デバイスである、請求項6に記載のメッセージネットワークインターフェースユニット。
【請求項8】
ビデオスカラーであって、該ビデオスカラーは、請求項1に記載のメッセージネットワークインターフェースユニットを用いて1つのフォーマットから別のフォーマットにビデオをスケールする、ビデオスカラー。
【請求項9】
メッセージネットワークインターフェースユニットに連結されたプロセッサが複数のメッセージをハードウェアユニットに送信することを可能にするための方法であって、該方法は、
該プロセッサを用いて、該複数のメッセージを推測的に生成することであって、該生成することは、該複数のメッセージのうちの少なくとも1つのメッセージの引数を伝送レジスタ内に格納することを含む、ことと、
該伝送レジスタに連結されたキュー内の該複数のメッセージをキューに入れることと、
該メッセージネットワークインターフェースユニットにおいて、動作が実行されるべきであることを示すメッセージを受信することと、
該動作が実行されるべきであることを示す該メッセージを受信することに応じて該キューにおいて動作することと
を含む、方法。
【請求項10】
前記動作は、前記キューの内容を放棄することを含み、該動作が実行されるべきであることを示す前記メッセージは、期待が発生したことを示す、請求項9に記載の方法。
【請求項11】
前記動作は、前記キュー内の前記複数のメッセージを送信することを含む、請求項9に記載の方法。
【請求項12】
前記推測的に生成することは、前記複数のメッセージのうちの1つのメッセージが送信されるか否かの決定の前に、前記伝送レジスタを使用する、請求項9に記載の方法。
【請求項13】
前記複数のメッセージのうちの前記少なくとも1つのメッセージの引数を格納することは、該複数のメッセージのうちの該少なくとも1つのメッセージの該引数をスクラッチパッドメモリ内に格納することを含む、請求項9に記載の方法。
【請求項14】
前記メッセージネットワークインターフェースユニットおよび前記プロセッサは、同じデバイス上に設置されている、請求項9に記載の方法。
【請求項15】
前記デバイスは、プログラマブル論理デバイスである、請求項14に記載の方法。
【請求項16】
メッセージネットワークインターフェースユニットであって、該メッセージネットワークインターフェースユニットは、プロセッサに連結されており、該プロセッサがハードウェアユニットから複数のメッセージを受信することを可能にし、該メッセージネットワークインターフェースユニットは、
該複数のメッセージをキューに入れるように動作可能な複数のキューであって、該複数のキューのうちの少なくとも1つのキューは、関連付けられた優先度レベルを示すアドレスに割り当てられる、複数のキューと、
該複数のキューに連結されており、該複数のメッセージのうちの少なくとも1つのメッセージの引数を格納するように動作可能である受信レジスタと
を含む、メッセージネットワークインターフェースユニット。
【請求項17】
前記受信レジスタは、現在の最高優先度レベルを示すアドレスに関連付けられた前記複数のキューのうちの1つのキューから前記複数のメッセージのうちの前記少なくとも1つのメッセージの前記引数を格納するように動作可能である、請求項16に記載のメッセージネットワークインターフェースユニット。
【請求項18】
前記プロセッサは、前記複数のキューの別のキュー内の他のメッセージを処理する前に、前記現在の最高優先度レベルを示す前記アドレスに関連付けられた該複数のキューのうちの前記キュー内のメッセージを処理する、請求項17に記載のメッセージネットワークインターフェースユニット。
【請求項19】
前記アドレスは、特有であり、該アドレスは、前記ハードウェアユニットから受信された前記複数のメッセージのための目的地アドレスとして使用される、請求項16に記載のメッセージネットワークインターフェースユニット。
【請求項20】
前記メッセージネットワークインターフェースユニットおよび前記プロセッサは、プログラマブル論理デバイス上に設置されている、請求項16に記載のメッセージネットワークインターフェースユニット。

【図1】
image rotate

【図2A】
image rotate

【図2B】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2013−58200(P2013−58200A)
【公開日】平成25年3月28日(2013.3.28)
【国際特許分類】
【出願番号】特願2012−195916(P2012−195916)
【出願日】平成24年9月6日(2012.9.6)
【出願人】(597154922)アルテラ コーポレイション (163)
【氏名又は名称原語表記】Altera Corporation
【Fターム(参考)】