JP4384828B2 - コプロセッサ装置およびデータ転送を容易にするための方法 - Google Patents
コプロセッサ装置およびデータ転送を容易にするための方法 Download PDFInfo
- Publication number
- JP4384828B2 JP4384828B2 JP2001357206A JP2001357206A JP4384828B2 JP 4384828 B2 JP4384828 B2 JP 4384828B2 JP 2001357206 A JP2001357206 A JP 2001357206A JP 2001357206 A JP2001357206 A JP 2001357206A JP 4384828 B2 JP4384828 B2 JP 4384828B2
- Authority
- JP
- Japan
- Prior art keywords
- template
- data
- data transfer
- block
- transfer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Advance Control (AREA)
- Image Processing (AREA)
- Bus Control (AREA)
- Digital Computer Display Output (AREA)
Description
【発明の背景】
この発明は、オンチップ並列性を実現するプロセッサのためのデータフロー管理に関し、より特定的には、データ転送を管理し、オンチップ並列性を示す効率のよい性能のプロセッサを可能にするためのコプロセッサに関する。
【0002】
ここで用いられる「メディアプロセッサ」は、ビデオまたは画像データを処理するためのオンチップ並列性を示すプロセッサを指す。効率のよいデータフロー管理は、メディアプロセッサにおいて高性能を達成するために必須である。しかしながら、現在のメディアプロセッサはアプリケーションプログラマに対して低レベルのデータ転送インターフェイスしか提供せず、これはデータフロープログラミングを困難にするだけでなく、ソースコードを長くし維持を難しくする。
【0003】
現在のメディアプロセッサは典型的には、広いデータ経路でサブGHzクロック周波数で動作する。これは、メモリに対する高いデータアクセス率を要求する。しかしながら、オフチップメモリへのアクセスは長いレイテンシに関わり、結果として全体的なメモリ帯域幅を制限する。したがって、これらの頻繁に用いられるデータをキャッシュし、かつ外部メモリアクセスペナルティを減じるために高速オンチップメモリが用いられる。さらに、実効アクセスレイテンシを減じるための、すなわちCPUが実際にデータを用いる前にデータをオンチップメモリ上で利用可能にするためのさまざまなデータプリフェッチ技術が開発されている。
【0004】
負担の大きい、大量の生データに関わる画像およびビデオアプリケーションがメディアプロセッサの主なターゲットである。典型的な画像およびビデオ処理アルゴリズムは、規則的なデータアクセスパターンを有する。こうして、プログラムはまもなく使われるデータのブロックを前もってフェッチできる。しかしながら、そのような負荷を実現するために従来のメディアプロセッサによって要求されるプログラミングは非常に制限されている。ほとんどのメディアプロセッサは、プログラマが処理タスクを区分して、ブロック転送を行なうために区分の各々に対して用いられるデータブロックのサイズおよびアドレスを決定することを要求する。画像とビデオフレームとは異なったサイズを有し得るので、プログラマは不規則な区分および付加的な制御フローを用いてコードを一般化しなければならず、プログラムが長くなる。さらに、いくつかのアルゴリズムにおいては、パッディングのようなさらなるタスクが行なわれることが必要となる。これらは付加されたプログラム命令によって行なわれるので、データ処理タスクの効率性を減じる。ブロックに基づくデータフロープログラミングが用いられる多くのアルゴリズムにおいて、バルクデータに加えて境界のピクセルを明確にフェッチすることが必要である。プログラムにおけるそのような不規則なデータフローを取扱うことは、プログラマの全体的な生産性を減じ、かつソースコードをアップグレードおよび維持することをも困難にする。さらに、計算とデータフローとの間の同時実行の程度が減じられる。したがって、ブロックデータ転送を行なう、より効率的で汎用性の高い態様に対する必要性が存在する。
【0005】
広いデータ経路を備えたメディアプロセッサに対する特別な懸念は、多倍精度(multiple small precision)オペランドを異なった記憶場所からワイドワード(wide word)へのパッキングのオーバーヘッドである。これは従来、メディアプロセッサにおいて命令を明示的に実行することにより行なわれるので、貴重なCPUサイクルが消費され、かつ全体的な性能が減じられる。したがって、多数のオペランドをパッキングするための、より効率的な態様に対する必要性が存在する。
【0006】
【発明の概要】
この発明によると、メディアプロセッサからのオフロードブロックデータ転送動作に対してテンプレートデータ転送コプロセッサが実現される。テンプレートデータ転送コプロセッサは、さまざまなタイプのブロックデータ転送動作を指定するための汎用性の高いプロトコルを提供する。
【0007】
この発明の一局面によると、さまざまなタイプのデータ転送テンプレートが導入される:ユニブロック(uniblock)テンプレート、プログラム誘導(program-guided)テンプレート、間接(indirect)テンプレート、およびキューに基づく(queue-based)テンプレートである。これらのテンプレートは、メディアプロセッサにおけるさまざまなタイプのデータ転送フローを容易にする。この発明の利点によると、ブロック転送ごとに低レベルデータ転送パラメータを計算しかつ設定するのではなく、パラメータ化されたテンプレートがプログラマに特定のアルゴリズムに対して必要なデータフローを容易に設計できる効率的で汎用性の高い機構を提供する。たとえば、2D畳み込みおよびアフィンワーピング(affine warping)においては、データフロープログラミングに関するソースコードラインの数が実質的に減じられる(たとえば、テンプレートなしで要求されるデータ転送を達成する場合に要求される数の約6分の1となる)。
【0008】
この発明の別の局面によると、ユニブロックおよびプログラム誘導テンプレートは、メディアプロセッサのオンチップメモリとオフチップメモリとの間でブロックに基づくデータ転送において用いられる。そのようなテンプレートの利点によると、オンチップメモリにおける入力および出力データブロックはダブルバッファリングされることが可能であり、それによりメディアプロセッサ機能ユニットは高速計算のためにオンチップメモリにおけるデータにアクセスするだけでよい一方で、遅い外部メモリとの間のデータ転送は機能ユニットから隠される。ブロックごとに、アドレスおよびサイズはテンプレートデータ転送コプロセッサによってテンプレートから計算される。したがって、データフロープログラミングは簡略化され、CPUの計算負荷は減じられる。
【0009】
ユニブロックテンプレートは、オーバーラップすることができるソースメモリ空間からのブロックを指定する。したがって、境界のブロックはパッディングされるか、またはラップアラウンドされて、境界に沿った必要なオーバーラップ領域を準備する。
【0010】
パッディングおよびラッピングは実際のデータ転送の間に行なわれる。したがって、メディアプロセッサ計算はさらに減じられ、かつこれらの不規則なデータコピー動作はテンプレートデータ転送コプロセッサによって自動的に扱われるという事実により、プログラマの負担は軽くなる。
【0011】
この発明の別の局面によると、間接データフローテンプレートは、プロセッサの計算エンジンに顕著な負荷を生成することなく、ランダムな場所からデータをアセンブルするための効率的な方法を可能にする。
【0012】
この発明の別の局面によると、キューに基づくデータフローテンプレートは、仮想キューと物理キューとの間のデータ転送を容易にする。仮想キューは、循環的にアクセスされるメモリ空間であってもよく、任意のサイズを有する。物理キューはデータをバッファし、かつ計算エンジンに対してオペランドストリームを提供する。テンプレートデータ転送コプロセッサは、2Dメモリ空間からオペランドバッファへのデータをストリーム化するか、またはデスティネーションオペランドバッファにストアされるメディアプロセッサ結果を2Dメモリ空間にディスパッチする。そのようなテンプレートの利点によると、キューに基づくデータフローは多くのロード/ストア命令をなくし、レジスタファイルサイズに対する圧力を緩和する。さらに、長いレイテンシロード/ストア命令がなくなってコードスケジューリングはより簡略化され、高性能のために要求されるループアンローリングの量は減じられ、よりコンパクトなコードをもたらす。
【0013】
この発明の別の局面によると、テンプレートデータ転送コプロセッサは2Dアドレス生成ユニット(AGU)を含み、これは割込なしでアドレスのシーケンスが生成されることを可能にする組込み論理ユニットを有する。これらのアドレスが2Dブロックに対応し、これは最も小さなデータ転送ユニットとしての役割を果たす。この態様で、テンプレートデータ転送コプロセッサ内のセントラルコントローラは、アドレス生成事象の各々に関与する必要がなく、よってたとえば、次の転送ブロックの位置の突き止めや、データフローのアービトレーションなどの他のテンプレート計算のためのさらなる時間をもたらす。
【0014】
この発明の別の局面によると、テンプレートデータ転送コプロセッサはテンプレートインタプリタを含み、これはコプロセッサのメインコントローラとしての役割を果たす。一実施例においては、インタプリタはテンプレートをセットアップし、テンプレートごとにブロック情報を計算するための事象駆動制御機構を用いる。インタプリタの利点によると、テンプレートのタイプごとの計算はモジュラ化される。したがって、新しいテンプレートタイプを簡単に追加することができる。
【0015】
この発明のこれらおよび他の局面と利点とは、添付の図面と併せて以下の詳細な説明を参照することにより、よりよく理解されるであろう。
【0016】
【特定の実施例の説明】
概要
図1を参照すると、画像またはビデオデータを処理するためのホストシステム10は、1つ以上のバス構造22によって相互接続される、メディアプロセッサ12、テンプレートデータコプロセッサ14、メインメモリ16、不揮発性メモリ18、およびユーザインターフェイス20を含む。ユーザインターフェイス20はディスプレイ装置24、キーボード26およびポイント/クリック装置28を含む。
【0017】
図2を参照すると、一実施例においてメディアプロセッサ12は、日本国東京の株式会社日立製作所およびカリフォルニア州キャンベルのイクエータ・テクノロジー(Equator Technologies)によって製造されるメディア加速プロセッサ(Media Accelerated Processor)1000(MAP1000)によって形成される。MAP1000は、直接メモリアクセス(DMA)コントローラ29、オンチップメモリ(データキャッシュ30および命令キャッシュ32)およびクラスタ34と呼ばれる並列実行ユニットを含む。クラスタ34の各々は、整数演算および論理ユニット(IALU)36と、整数浮動小数点グラフィック演算および論理ユニット(IFGALU)38とを含む。また、クラスタ34の各々はいくつかの汎用レジスタ(たとえば32ビットレジスタ)、いくつかの1ビットプレディケートレジスタおよび多数の特別レジスタ(たとえば、128ビットレジスタ)を含む。
【0018】
他のさまざまなメディアプロセッサ実施例もまた実現される。特に、ここで用いられる「メディアプロセッサ」は、ビデオまたは画像データを処理するためのオンチップ並列性を示すプロセッサを指す。マイクロプロセッサおよびデジタル信号プロセッサは、命令レベル並列性と呼ばれる技術によってオンチップ並列性を用いる。命令レベル並列性は、多数の動作が単一のクロックサイクルで開始されるものである。命令レベル並列性への2つの方策は:超長命令語(VLIW)アーキテクチャおよびスーパースカラアーキテクチャである。VLIWアーキテクチャにおいては、プロセッサは多数の独立処理ユニットを含む。長い命令の各々は機能ユニットの各々に対するオペレーションコードを含む。すべての機能ユニットは、実質的に同じ時点でそれらのオペレーションコードを受取る。機能ユニットはそれらの割当てられたタスクを同時に実行する。スーパースカラアーキテクチャは特別なオンチップハードウェアを用いて、命令ストリームを調べ、並列性を最大化するために同時に実行し得る独立した動作を見出す。
【0019】
命令レベル並列性は、サブワード並列性を用いていくつかのシステムにおいてさらに展開されるが、ここでは実行ユニットは多数のより小さなユニットに区分される。たとえば、主に64ビット論理演算装置(ALU)によって実現されるプロセスは、ALUを論理的に4つの小さな16ビットALUに分割する。特定的には、ALUへのデータ入力は4つの小さなサブワードの連結である。ALU出力は4つのサブワードでの結果の連結である。そのようなサブワード並列性は、「単一命令多重データ」(SIMD)命令と呼ばれるものを与えることによりアーキテクチャに組入れられる。メディアプロセッサ12のSIMD実現化の例は:サン・マイクロシステムズ(Sun Microsystems)のビジュアル命令セット、インテル(Intel)のマルチメディア拡張機構、ヒューレット・パッカード(Hewlett-Packard)のmultimedia acceleration extensions-s、デジタル・イクイップメント・コーポレーション(Digital Equipment Corporation)のマルチメディア拡張機構、シリコン・グラフィックス(Silicon Graphics, Inc.)のデジタルメディア拡張機構である。これらの拡張機構における命令は、データワード(たとえば32ビットまたは64ビット)を1組の多数のサブワード(8、16または32)として処理する。サブワードの各々で区分された動作を実行することができ、最小限の付加的なハードウェアで2倍、4倍または8倍の性能向上が得られる。
【0020】
テンプレートデータ転送コプロセッサ(TDTP)14は、メディアプロセッサの処理ユニット(たとえばクラスタ34)、メディアプロセッサのオンチップメモリキャッシュ30、32および外部メモリ(たとえばシステムキャッシュ16および不揮発性メモリ18)の間のさまざまなデータフローパターンを扱う役割を果たす。テンプレートを用いることにより、最小限のプログラミングが実現されてこのデータフロー制御を達成する。
【0021】
テンプレート
テンプレートは、(i)パラメータ化されたデータ構造、または(ii)規定されたパラメータの組を備えたパラメータ化されたデータ構造、のいずれかである。メディアプロセッサにおいて異なったタイプのデータフローを扱うためにさまざまなテンプレートが用いられる。ここでは、ユニブロックテンプレート、プログラム誘導テンプレート、間接テンプレートおよびキューに基づくテンプレートを含む4つのテンプレートを説明する。これらのテンプレートタイプの各々は、同様のデータフローの群に対して用いられる。ユニブロックテンプレートは、2つの記憶場所領域の間のブロックごとのデータ転送を説明する。すべてのデータブロックパラメータ、たとえばアドレスおよびサイズは、テンプレートから導出される。プログラム誘導テンプレートもまたブロックに基づくデータ転送を規定するが、データブロックパラメータはプログラムによって明示的に与えられる。ユニブロックテンプレートおよびプログラム誘導テンプレートは主に画像/ビデオ処理に対して望ましいフローパターンであるダブルバッファリングデータフローを実現するために用いられる。間接テンプレートにより、離散的データ要素を(隣接するデータをインデクシングすることにより)連結するメモリ空間へマッピングすることが可能になる。間接テンプレートは効率的にメディアプロセッサの作業負荷を減じる。キューに基づくテンプレートは、メディアプロセッサに対するメモリ空間とバッファされたオペランドの小さな物理ストリームキューとの間のデータ転送を指定する。一実施例においてはテンプレートの各々における第1の項目はテンプレートのタイプを識別するためのコードである。各々のテンプレートタイプのより詳細な説明を以下に述べる。
【0022】
ユニブロックテンプレート
ほとんどの画像およびビデオアルゴリズムは、単一のデータフレームまたは多数のデータフレームで計算を実行する。多くのアルゴリズムは連続的なデータが独立して計算できるデータレベルの並列性さえも実現する。たとえば、処理は区分され、各々の区分が制限されたオンチップメモリ空間に整合する画像データのブロックに動作し得る。そのような処理に対するデータ転送を容易にするために、ユニブロックテンプレートが導入される。ユニブロックテンプレートは、予め定められた転送ブロック次元およびサイズでオンチップメモリ空間とオフチップメモリ空間との間のデータ転送を説明するために用いられる。
【0023】
図3を参照すると、ユニブロックテンプレートは、ソースブロックパラメータ38とデスティネーションブロックパラメータ40とを用いてソースブロックとデスティネーションブロックとを規定する。ソースブロックパラメータ38は、ベースアドレス、幅、高さ、ピッチおよびソースアクセスモードを含む。同様に、デスティネーションブロックパラメータ40は、ベースアドレス、幅、高さ、ピッチおよびデスティネーションアクセスモードを含む。次元フラグ42(すなわち、1D/2Dフラグと標識付けされる)は、データ転送の次元を決定する。典型的には、2次元(2D)ブロックはブロック幅44およびブロック高さ46パラメータで規定される。フラグ42が1次元(1D)を示す場合、ブロック幅44のみが有効である。2次元データ転送に関しては、オーバーラップモードパラメータ48が用いられ、これはソースメモリ空間における隣接するブロックがオーバーラップするか否かを指定する。オーバーラップが設定される場合、パッディングモードパラメータ50またはラッピングモードパラメータ52のいずれかが有効であり、オーバーラップする境界で必要であるデータを処理するためにパッディングまたはラッピングのいずれかが用いられることを示す。さらに、パッディングモードおよびラッピングモードの各々に対して、水平オーバーラップパラメータ54値および垂直オーバーラップパラメータ56値が設定される。オーバーラップする部分で、ソースブロックおよび隣接するデータのウィンドウからピクセル値が導出される。
【0024】
そのようなパッディングおよびラッピング指定は、あるアルゴリズムをより効率的に実現するために望ましい。たとえば、2D畳み込みを含むアルゴリズムにおいては、境界上のデータブロックがパッディングされる必要がある。ウェーブレット変換を含むアルゴリズムにおいては、データブロックはラップアラウンドされる必要がある。ブロックに基づくデータフロープログラミングが用いられる多くのアルゴリズムにおいて、バルクデータに加えて境界のピクセルを明示的にフェッチすることが必要である。プログラム内でそのような不規則なデータフローを扱うことは、プログラマの全体的な生産性を減じ、かつソースコードをアップグレードし維持することを難しくする傾向がある。さらに、計算とデータフローとの間の同時性の度合が減じられる。ユニブロックテンプレートは、そのような機能を指定するための効率的なプログラミングインターフェイスを提供する。
【0025】
図4を参照すると、パッディングが実施されるべき9つのブロック58のソースデータが示される。ピクセルを計算するのに隣接するピクセルが用いられる場合、示される対称的な隣接ウィンドウが境界で用いられる。図4は、ブロック64に対する水平オーバーラップ60および垂直オーバーラップ62を示す。対称的な隣接ウィンドウに対しては、パッディングは同様である。
【0026】
図5を参照すると、ラッピングモードが用いられる場合、オーバーラップは対称的ではない。そうではなく、これは単方向性である。パッディングモードは、ゼロパッディングと境界拡張との間を選択可能である一方、ラッピングモードはさらに垂直(上または下)および水平(左または右)ラッピングを指定できる。図5は、ブロック64′に対する水平オーバーラップ60′および垂直オーバーラップ62′を示す。
【0027】
ソースおよびデスティネーションアクセスモードを用いることにより、付加的な柔軟性が得られる。アクセスモードは、アクセスされたデータがオンチップに向けられているか、またはオフチップメモリに対して向けられているかを判断する。これはオンチップメモリにおけるオフチップデータのダブルバッファリングにおいて主要な問題である。また、アクセスモードはソースまたはデスティネーションメモリ空間における次のデータブロックがどのようにアドレスされるかを決定する。図6(A)を参照すると、アクセスモードは次のブロックが2Dメモリ空間において行ごとにまたは列ごとにアクセスされるかを決定する。図6(B)を参照すると、メモリ空間境界に到達すると、アクセスモードは次に逆方向のブロックがアクセスされるべきかまたはメモリ空間は循環的にアクセスされるべきかを判断する。
【0028】
ユニブロックテンプレート36は、ソースブロックとデスティネーションブロックとが同じサイズであることを必要としない。たとえば、テンプレート36が入力データフローを規定する場合、ソースメモリ空間はソース画像に対応する一方、デスティネーションメモリ空間は入力データをダブルバッファするオンチップメモリ領域に対応する。データ転送は、大きい方のソースメモリ空間におけるすべてのデータが転送されたときに終了する。小さい方のオンチップメモリ空間は逆方向のまたは循環的なアクセスモードのいずれかによって、図6(B)に示されるように再利用される。
【0029】
テンプレートデータ転送コプロセッサ14は、ブロック転送ごとにデータブロックアドレスを計算し、ソースまたはデスティネーションメモリ空間に整合するようブロックサイズを調整する。したがって、画像境界におけるブロックは異なった幅および/または高さ値を、テンプレートに指定されるものからは異なって有し得る。ランタイムブロック情報、たとえばアドレス、幅、および高さは、プログラムにパスされる。こうして、プログラムは単にデータフローテンプレートを初期化し、ブロック転送を同期させ、ブロックをオンチップに処理するだけでよい。
【0030】
プログラム誘導テンプレート
いくつかのアルゴリズムは不規則なブロックアクセスを要求し、すなわちデータブロックの各々のアドレスおよびサイズがプログラムから計算されなければならない。図7に示すプログラム誘導テンプレート66は、そのようなプログラムによって導かれるデータ転送を容易にするために用いられる。プログラム誘導テンプレート66は記述アドレスパラメータ68、ソースフィールド69およびデスティネーションフィールド73を含む。ソースフィールド69は、ソースアドレスパラメータ70およびソースピッチパラメータ72を含む。デスティネーションフィールドは、デスティネーションアドレスパラメータ74およびデスティネーションピッチパラメータ76を含む。
【0031】
記述アドレスパラメータ68は、転送されるべきブロックの各々のソースアドレスオフセット、デスティネーションアドレスオフセット、およびサイズ情報を含むブロック記述テーブル78をポイントするアドレスをストアする。ソースフィールド69およびデスティネーションフィールド73は、それぞれソースブロックおよびデスティネーションブロックを開始するためのベースアドレスおよびピッチ値をストアする。異なったベースアドレスを用いることにより、同じブロック記述テーブルは異なったプログラムによって再利用されることができる。
【0032】
ブロックを転送する場合、テンプレートデータ転送コプロセッサ14はブロック記述テーブル78からブロック情報をフェッチし、ソースおよびデスティネーションブロックアドレスを計算し、データ転送を開始する。ブロック記述テーブルにおいて規定されるブロックは、記述テーブルが到達されるまでシーケンシャルに転送される。
【0033】
プログラム誘導テンプレートはまた、外部メモリ16、18とオンチップメモリ30、32との間での計算の実行と同時のデータ転送のために用いられ、こうしてプロセッサ計算サイクルからメモリレイテンシサイクルを隠す。特に、プログラム誘導データフローは、ランダムに配置される任意の大きさのデータブロックのシーケンスを転送することを可能にする。したがって、これはプログラムがデータフローを規定することに、より柔軟性を与える。関連するオーバーヘッドは、テンプレートデータ転送コプロセッサ14が、ブロック転送ごとにブロック記述にアクセスすることである。
【0034】
間接データフローテンプレート
図8を参照すると、間接データフローテンプレート80によって容易になるデータ転送は、3つのメモリ空間、すなわちインデックスデータ領域82、ソースデータ領域84、およびデスティネーションデータ領域86に関わる。インデックスデータはソースデータアドレスを計算するために用いられる。したがって、ソースデータ領域84へのアクセスは極めてランダムになり得る。インデックスデータ領域82およびデスティネーションデータ領域86へのアクセスは、シーケンシャルであることが期待される。間接データフローテンプレート80はインデックスフィールド88(たとえばインデックスアドレス90およびインデックス幅92)、ソースデータアドレスパラメータ94およびデスティネーションデータアドレスパラメータ96を含む。これはまた、データ幅98およびデータカウント100を指定する。インデックス幅パラメータ92は、さまざまな形式のデータ、たとえば8、16または32ビットのデータをインデックスとして用いることを可能にする。テンプレートデータ転送コプロセッサ14は、インデックスデータ82をシーケンシャルな順序に参照し、現在アクセスされているインデックスデータ値を対応のソースアドレスパラメータ値94に加え、結果として生じるアドレスをソースデータ領域84へのアクセスに用いる。アクセスされたソースデータはデスティネーション領域86にシーケンシャルに書込まれる。転送されるデータ項目の数および項目の各々のデータ幅は、カウントパラメータ100および幅パラメータ98によって決定される。この態様で、ランダム記憶場所からのデータはパックされることができる。間接データフローは、たとえばジオメトリ変換およびグレースケールマッピングなどの、ルックアップテーブルが用いられるアルゴリズムに望ましい。
【0035】
間接データ転送は、データフローを通してパックまたはアンパックし、かつプロセッサのアドレス計算を緩和するために用いられるので、TDTP14を用いて達成されるそのような転送速度は、好ましくはメディアプロセッサクラスタ34によって行なわれるものに匹敵する。しかしながら、デスティネーションデータ要素の移動を終了させるためには3つのメモリアクセス、すなわち1つはインデックス領域82からの読出、1つはソース領域84からの読出、および1つはデスティネーション領域86への書込、が必要となるが、これはオフチップメモリアクセスに関わる場合に遅くなる。このような潜在的なボトルネックを避けるために、間接データフローはいくつかの実施例においては、上のセクションにおいて説明されたブロックに基づくデータフローを通してプリフェッチすることができるオンチップデータを扱うためにのみ限定される。
【0036】
キューに基づくデータフロー
ストリームキューは、計算エンジンに対して一定のオペランドのフローを効率的に提供し、こうしてレジスタに対する圧力を緩和する。キューはハードウェア、たとえばFIFO(先入れ先出し)メモリを用いるか、またはソフトウェア、たとえば規則的なメモリ空間を用いることのいずれかによって実現される。一実施例においてはテンプレートデータ転送コプロセッサは、ハードウェアキューを用いて計算エンジンに対して必要なオペランドをバッファする。別の実施例においては、テンプレートデータ転送コプロセッサによって循環的にアドレスされるメモリ空間として仮想キューが規定される。さらに別の実施例においては、物理キューとその関連の仮想キューとの組合せとして、プログラマに対して可視である論理キューが規定される。テンプレートデータ転送コプロセッサ14は、仮想キューと物理キューとの間のデータ転送を制御し、それにより論理キューが仮想キューに匹敵する深さを有するようにする。物理キューはデータをバッファするためにだけ用いられるので、これはデータ転送レートの変動を扱える限り、小さくてもよい。
【0037】
従来は、キューにストアされたデータはシーケンシャルにアクセスされる。しかしながら、TDTP14は、キューに基づくテンプレートを用いることによりさらなる柔軟性を可能にする。図9を参照すると、キューに基づくテンプレート102は、物理キュー名を指定するためのパラメータ104と、関連の仮想キュー107を指定するためのパラメータのフィールド106とを含む。仮想キューパラメータは、仮想キューアドレス108、幅110、ストライド112、およびサイズ114を含む。仮想キュー107に対するアクセスは一定のストライドを有し、これはメモリ空間におけるシーケンシャルではないデータがキューにストリーム化されることを可能にする。TDTP14は、仮想および物理キューの間で、方向パラメータ116の値に従ってデータを転送する。方向は、キューがクラスタ34機能ユニット内でソースまたはデスティネーションのどちらとして用いられるかを決定する。仮想キューメモリ空間は循環状にアドレスされ、かつ一度にいくつかの物理キューに関連付けられることができる。たとえば、同じ仮想キューが、ソースオペランドキューおよびデスティネーションオペランドキューに関連付けられることができる。機能ユニットはメモリ空間におけるソースキューデータを消費する一方で、その結果でデスティネーションキューメモリ空間を埋める。
【0038】
キューに基づくデータ転送は、物理キューステータスによって制御される。ソースオペランドキューに対しては、オンチップメモリからオペランドバッファへの転送は、物理キューがフルになったときに停止する。デスティネーションオペランドキューに対しては、オペランドバッファからオンチップメモリへの転送は物理キューが空になったときに停止する。
【0039】
テンプレートデータ転送コプロセッサアーキテクチャ
図10を参照すると、一実施例においてテンプレートデータ転送コプロセッサ14は、テンプレートインタプリタ110、2Dアドレス生成ユニット(AGU)112の群、テンプレートバッファ114、パッディングバッファ116およびデータ転送バッファ118を含む。テンプレートバッファ114は、1つ以上のテンプレートタイプ36、66、80、102に対してTDTPを用いるアプリケーションプログラムによって設定されるテンプレートパラメータのような静的なデータフロー情報を含む。テンプレートバッファ114はまた、ランタイムに計算されるブロックアドレスのような動的データフロー情報をも含む。
【0040】
テンプレートインタプリタ110は、アクティブなテンプレートエントリのリストを維持し、アクティブなテンプレートごとのランタイムデータ転送パラメータを計算する。ブロックに基づくテンプレートに対しては、すなわちユニブロックおよびプログラム誘導テンプレート36、66に対しては、ブロックごとの転送パラメータはプログラムに同期して計算される。
【0041】
2D AGU112の各々は、2Dブロック情報を受け、そのブロックに対してアドレスのシーケンスを生成し、これはデータ転送のためのオンチップバスを駆動するために用いられる。2D AGU112の数は、外部メモリ16、18およびオンチップメモリ30、32に接続されるオンチップデータバスの数によって決定される。マルチバンクオンチップメモリは、多数のデータフローが最小限のコンフリクトで同時に進行することを可能にする。
【0042】
異なったテンプレートのタイプは、異なった2D AGU112の組を用い得るが、これは2D AGUが別々のデータバスに関連付けられるためである。たとえば、キューに基づくテンプレート102は、オンチップメモリ30、32およびオペランドキュー120に接続するデータバス22に結合される2D AGU112の組を用いる。多数のデータフローが同じAGU112を共用し得る。AGUが利用可能になると、テンプレートインタプリタ110は、このAGUを用いることができるアクティブなテンプレートからブロックを選択する。この選択は、ラウンドロビン方式で行なわれる。しかしながら、テンプレートにおいて優先パラメータを用いることにより、代替的な選択規則もまた実施し得る。
【0043】
テンプレートの各々は、ソースおよびデスティネーションメモリ空間を規定し、データはソースメモリから転送されて、(必要であれば)データ転送バッファ118にストアされる前に整列される。データ転送バッファ118の数は、外部メモリ16、18とオンチップメモリ30、32との間の同時データフローの最大数を決定する。転送バッファ118内のデータもまた、(必要であれば)デスティネーションメモリに転送される前に整列される。
【0044】
さらに、2つの特別な場合を説明する。第1に、間接テンプレート80に対して、ソースデータアドレスは、ソースアドレスパラメータ94(図8を参照)にストアされるソースベースアドレスにインデックスデータを加えることにより計算される。関連の2D AGU112は、オペランドを直接オンチップメモリまたはこのインデックスデータをストアするオペランドキューから取ることによりこれらの加算を素早く実行する。第2に、パッディングおよびラッピングデータフローを実現するために、境界のピクセルはTDTP14にロードされる。これらのピクセルはパッディングバッファ116にストアされて、他のデータとともにデータ整列ユニットにシンクロナスに挿入される。
【0045】
テンプレートインタプリタ110は、データ転送を制御し、メディアプロセッサクラスタ34およびAGU112からの信号に応答する。図11を参照すると、テンプレートインタプリタ110の制御フロー122が示される。テンプレートインタプリタ110は、ステップ124においてクラスタ34の信号または次の利用可能な2D AGU112を待機する。4つの潜在的な動作のうちの1つが、受信される信号に応じて発生する。クラスタ信号「A」に対しては、インタプリタはステップ126において新しいテンプレートを初期化する。これを行なうために、インタプリタ110は、テンプレートタイプに従って適切なテンプレートセットアップモジュールを呼出し、ステップ127において転送されるべき最初のブロックを決定する。クラスタ信号「B」に対しては、インタプリタ110はステップ128においてテンプレートを削除することによりテンプレート転送を終了させる。テンプレートに対するブロック転送を行なうためのクラスタ信号「C」に対しては、インタプリタはステップ130において現在のブロックを準備モードに設定する。ステップ132において、インタプリタは、最後のブロックに到達したか否かをテストする。もし到達していなければ、次に転送されるべきブロックがステップ134において決定される。テンプレートで指定されるブロックがない場合、インタプリタ110はクラスタ34に(クラスタによってポーリングされるフラグを設定することにより)信号を送り、テンプレートの終了を示す。
【0046】
第4の起こり得る動作は、AGU112のうちの1つのテンプレートデータ転送コプロセッサ14内で生成される。2D AGUユニット112が利用可能になると、AGUはインタプリタ110に対して信号「D」を生成する。次いでステップ136において、インタプリタ110はテンプレートを選択し、準備されたブロックをAGUユニットに対してディスパッチする。2D AGUはまた、ブロック転送の各々が完了した場合にインタプリタに信号を送る。
【0047】
以下の例は、テンプレートデータ転送のプログラミングインターフェイスを示す。第1の例においては、関数はset_uniblockルーチン(ライン1−2)を用いて2つのブロックに基づくデータフローを生成するが、1つは入力データのためであり、他方は出力データのためのものである。set_uniblockルーチンはTDTP14がテンプレートを指定し、テンプレートバッファ114にパラメータをコピーし、ハンドラにそのテンプレートを返すことを要求する。データフローは、transferルーチン(ライン3、6および10)によって開始される。transferルーチンへのコールの各々は、データのブロックをソースメモリからデスティネーションメモリに転送する。テンプレートで指定されたデータのすべてが転送されると、さらなる転送は無効にされる。
【0048】
waitルーチン(ライン5および9)は、テンプレートに関連の準備信号をポーリングすることによりブロック転送が完了することを待機する。テンプレートが生成されると、その準備信号が自動的に設定される。TDTPは、ブロックの転送を開始するときに準備信号をリセットする。準備信号は、ブロック転送が完了したときに設定される。タイトループコールは、クラスタ34とTDTP14との間の共通のデータ構造から入力および出力データブロックに関するアドレスおよびサイズ情報を受ける。タイトループがクラスタ34で実行される一方で、次の入力データブロックおよび先行する出力データブロックはTDTP14によって転送される。テンプレートに対するすべてのデータが転送されると、TDTP14はテンプレート完了信号を設定し、これもまたプログラムにおいてループ制御のために用いられる。
【0049】
deleteルーチン(ライン11−12)は、関連のテンプレートバッファを無効化することによりテンプレートを終了させる。例1に示されるように、TDTP14はアプリケーションプログラムに対して効率的で簡単なプログラミングインターフェイスの組を提供する。特に、データフローの詳細は、適切なテンプレートパラメータを選択することによりTDTP14において隠されている。
【0050】
例1:ユニブロックテンプレート転送
【0051】
【表1】
【0052】
プログラム誘導テンプレートは、ユニブロックテンプレートに加えてデータブロックをダブルバッファリングするために用い得るので、そのプログラミングインターフェイスは例1のものに似ているが、テンプレートがset_guidedルーチンによって設定され、ブロック記述テーブルがデータフローを活性化する前に誘導テンプレートに対してオンチップメモリで確立される点が異なる。
【0053】
第2の例は、間接データフローのためのプログラミングインターフェイスを示す。間接データフローは、set_indirectルーチン(ライン1)によって生成され、これはTDTP14がテンプレートバッファ114における間接テンプレートを指定し、次いで指定されたテンプレートにパラメータを転送することを要求する。ルーチンはまた、ハンドラを返し、これによりプログラムがテンプレートに関するステータス情報にアクセスすることができる。間接データ転送は、transferルーチン(ライン2)を用いることにより開始され、その後に他のタスク(ライン3)が続く。同じ時点で、プログラムは間接データ転送が完了するのを待機し、次いで転送されたデータを計算する。deleteはテンプレートを終了させる。
【0054】
例2:間接テンプレートデータ転送
【0055】
【表2】
【0056】
例3は、キューに基づくデータフローインターフェイスを示す。ブロックに基づくデータフローおよび間接データフローと同様に、set_voq(ライン1)がテンプレートを生成するために用いられ、transferルーチン(ライン2)がデータ転送を開始するために用いられる。しかしながら、プログラムは転送が完了するのを待機することなく、transferルーチンのすぐ後にキューを使い始める。
【0057】
例3:キューに基づくテンプレート転送
【0058】
【表3】
【0059】
価値のある有利な効果
パラメータ化されたテンプレートの1つの利点は、そのようなテンプレートはブロック転送ごとに低レベルデータ転送パラメータを計算し設定するのではなく、プログラマが特定のアルゴリズムのために必要なデータフローを容易に設計するために効率的で汎用性の高い機構であることである。
【0060】
ユニブロックテンプレートの利点は、オンチップメモリにおける入力および出力データブロックがダブルバッファリングされることが可能であり、それによりメディアプロセッサ機能ユニットは、高速計算のためにオンチップメモリにおけるデータにアクセスするだけでよく、一方で遅い外部メモリとの間のデータ転送は機能ユニットから隠されることである。また、ブロックごとに、テンプレートデータ転送コプロセッサによってテンプレートからアドレスおよびサイズが計算される。したがって、データフロープログラミングは簡略化され、CPUの計算負荷は減じられる。別の利点とは、ユニブロックテンプレートがソースメモリ空間からオーバーラップされるべきブロックを指定することである。したがって、境界のブロックはパッディングされるかまたはラップアラウンドされ、境界に沿った必要なオーバーラッピングを準備する。
【0061】
パッディングおよびラッピングは実際のデータ転送の間に行なわれる。したがって、メディアプロセッサ計算はさらに減じられ、かつプログラマの負担は、テンプレートデータ転送コプロセッサによってこれらの不規則なデータコピー動作が自動的に扱われるという事実により、減じられる。
【0062】
間接テンプレートの利点は、これがプロセッサの計算エンジンに対して顕著な負荷を生成することなく、ランダムな場所からデータをアセンブルするための効率的な方法を提供することである。
【0063】
キューに基づくデータフローテンプレートの利点は、仮想キューと物理キューとの間のデータ転送を促進することである。キューに基づくデータフローは、ロード/ストア命令をなくし、レジスタファイルサイズに対する圧力を緩和する。さらに、コードスケジューリングは長いレイテンシロード/ストア命令をなくして簡略化され、高性能のために必要となるループアンローリングの量は減じられ、よりコンパクトなコードをもたらす。
【0064】
この発明の好ましい実施例を例示し説明したが、さまざまな代替例、変形および等価物を用い得る。したがって、上述の説明は前掲の特許請求の範囲によって規定されるこの発明の範囲を限定するものと解されてはならない。
【図面の簡単な説明】
【図1】 この発明の実施例に従った、メディアプロセッサおよびテンプレートデータ転送コプロセッサを有する画像/ビデオ処理システムのブロック図である。
【図2】 例示的なメディアプロセッサ実施例のブロック図である。
【図3】 図1のテンプレートデータ転送コプロセッサによって実現されるデータ転送のためのユニブロックテンプレートの図である。
【図4】 1組の画像データブロックの間のソースブロックに対するパッディング領域の図である。
【図5】 1組の画像データブロックの間のソースブロックに対するデータラッピングの図である。
【図6】 データブロックに対するアクセスパターンを示す図である。
【図7】 図1のテンプレートデータ転送コプロセッサによって実現されるデータ転送のためのプログラム誘導テンプレートの図である。
【図8】 図1のテンプレートデータ転送コプロセッサによって実現されるデータ転送のための間接テンプレートの図である。
【図9】 図1のテンプレートデータ転送コプロセッサによって実現されるデータ転送のためのキューに基づくテンプレートの図である。
【図10】 この発明の実施例に従った、図1のテンプレートデータ転送コプロセッサのブロック図である。
【図11】 図10のテンプレートインタプリタに対する処理状況のフローチャートである。
【符号の説明】
12 メディアプロセッサ、14 テンプレートデータ転送コプロセッサ、36 ユニブロックテンプレート。
Claims (18)
- メディアプロセッサによってアクセスするためにデータをロードおよびアンロードするデータ転送を扱うためのテンプレートデータ転送コプロセッサ装置であって、
対応のデータ転送動作を規定する一組のパラメータであって、複数の可能性のあるテンプレートタイプの中からテンプレートタイプを特定するテンプレートタイプパラメータを含む1組のパラメータを、各々が含む1つ以上のデータ転送テンプレートを同時にストアするテンプレートバッファと、
前記テンプレートバッファにストアされた複数のデータ転送テンプレートの中からテンプレートを読出し、前記読出されたテンプレートのテンプレートタイプに従ってデータ転送を制御するテンプレートインタプリタと、
各々が別々のバスに関連付けられた複数のアドレス生成ユニットとを備え、前記アドレス生成ユニットの異なる組は異なる1つのテンプレートタイプに対して用いられ、前記アドレス生成ユニットの各々は、前記読出されたテンプレートに対してアクセスするための1組のアドレスを前記テンプレートインタプリタから受け取った情報に基づいて生成し、コプロセッサ装置はさらに、
ソースからデスティネーションに転送されるデータを受けるデータ転送バッファとを備えることを特徴とするコプロセッサ装置。 - 前記テンプレートバッファにストアされる前記1つ以上のデータ転送テンプレートの所与の1つに対するパラメータの組は、テンプレートパラメータと、ランタイムに計算されるブロックアドレス情報とを含み、前記テンプレートインタプリタは、ランタイムの間に動的なデータフロー情報を導出することを特徴とする請求項1に記載のコプロセッサ装置。
- 前記1つ以上のデータ転送テンプレートの前記少なくとも1つのタイプは、ブロックデータ転送を容易にし、ブロックデータ転送のブロックサイズが導出されブロックデータ転送に対するソースおよびデスティネーションアドレスが導出されるパラメータを含むことを特徴とする請求項1に記載のコプロセッサ装置。
- 前記1つ以上のデータ転送テンプレートの前記少なくとも1つのタイプは、ソースブロックパラメータおよびデスティネーションブロックパラメータと、かつブロック転送が1次元データブロックに対するものであるか、または2次元データブロッ
クに対するものであるかの表示とを含むことを特徴とする請求項3に記載のコプロセッサ装置。 - ブロックデータ転送を容易にする前記1つ以上のデータ転送テンプレートの前記少なくとも1つのタイプは、ソースメモリ空間内で隣接するブロックがオーバーラップするか否かおよび境界データを変更する態様を指定するパラメータをさらに含むことを特徴とする請求項4に記載のコプロセッサ装置。
- 前記1つ以上のデータ転送テンプレートの前記少なくとも1つのタイプは、プログラム誘導ブロックデータ転送を容易にし、ランダムに配置される任意のサイズのデータブロックのシーケンスの転送を容易にするためのソースパラメータとデスティネーションパラメータとを含むことを特徴とする請求項1に記載のコプロセッサ装置。
- 前記1つ以上のデータ転送テンプレートの前記少なくとも1つのタイプは、間接データ転送を容易にし、インデックスアドレスパラメータ、ソースアドレスパラメータおよびデスティネーションアドレスパラメータを含むことを特徴とする請求項1に記載のコプロセッサ装置。
- 前記テンプレートインタプリタは、データ転送するためにキューに基づくテンプレートを読出し、前記キューに基づくテンプレートは物理キューを指定するためのパラメータと、仮想キューを指定するための複数のパラメータとを含み、物理キューと仮想キューとの間を定められた方向で前記データが転送されることを特徴とする請求項1に記載のコプロセッサ装置。
- 外部メモリとオンチップメモリを有するメディアプロセッサとの組合せにおいて、テンプレートデータ転送コプロセッサ装置は、外部メモリとオンチップメモリとの間のデータ転送を容易にすることを特徴とする請求項1に記載のコプロセッサ装置。
- メディアプロセッサのオンチップメモリとオフチップメモリとの間のデータ転送を容易にするための転送制御方法であって、
テンプレートバッファから複数のデータ転送テンプレートの少なくとも1つを読み出すステップを含み、前記複数のデータ転送テンプレートの各々は、オンチップメモリとオフチップメモリとの間のデータ転送を容易にする複数のパラメータを含み、前記複数のパラメータは、テンプレートタイプの範囲の中からテンプレートタイプを特定するテンプレートタイプパラメータを備え、前記方法はさらに
ロードされたテンプレートのテンプレートタイプにしたがって、各々が別々のバスに関連付けられた複数のアドレス生成ユニットから、一組のアドレス生成ユニットを使用して、前記ロードされたテンプレートに対してアクセスされる一組のアドレスを生成するステップと、
前記ロードされたテンプレートのテンプレートタイプにしたがって、コプロセッサによって、オンチップメモリとオフチップメモリとの間で生成された一組のアドレスを用いてデータ転送するステップと、前記メディアプロセッサに複数の画像データブロックを提供するステップと、
前記複数の画像データブロックに対して前記メディアプロセッサで前記画像処理アルゴリズムを実行するステップとを備えることを特徴とする転送制御方法。 - 前記複数のデータ転送テンプレートの前記少なくとも1つはブロックデータ転送を容易にし、ブロックデータ転送のブロックサイズを導出できブロックデータ転送に対するソースおよびデスティネーションアドレスを導出できるパラメータを含むことを特徴とする請求項10に記載の転送制御方法。
- 前記複数のデータ転送テンプレートの前記少なくとも1つは、ソースブロックパラメータとデスティネーションブロックパラメータとを含み、かつブロック転送が1次元データブロックに対するものであるか、または2次元データブロックに対するものであるかの表示を含むことを特徴とする請求項10に記載の転送制御方法。
- 前記複数のデータ転送テンプレートのうちの前記少なくとも1つは、ソースメモリ空間内で隣接するブロックがオーバーラップするか否かおよび境界データ
を変更する態様を指定するパラメータをさらに含むことを特徴とする請求項12に記載の転送制御方法。 - 前記1つ以上のデータ転送テンプレートの前記少なくとも1つは、プログラム誘導ブロックデータ転送を容易にし、ランダムに配置される任意のサイズのデータブロックのシーケンスを転送することを容易にするためのソースパラメータとデスティネーションパラメータとを含むことを特徴とする請求項10に記載の転送制御方法。
- 前記1つ以上のデータ転送パラメータの前記少なくとも1つは、間接データ転送を容易にし、インデックスアドレスパラメータ、ソースアドレスパラメータ、およびデスティネーションアドレスパラメータを含むことを特徴とする請求項10に記載の転送制御方法。
- 前記複数のデータ転送テンプレートの1つは、物理キューを指定するためのパラメータと仮想キューを指定するための複数のパラメータとを備えるキューに基づくテンプレートであって、前記データを転送するステップは、物理キューと仮想キューとの間でデータを転送するステップを含むことを特徴とする請求項10に記載の転送制御方法。
- 前記識別されたパラメータの少なくとも1つは、コプロセッサによってランタイムに規定されることを特徴とする請求項10に記載の転送制御方法。
- 前記転送を容易にするステップは、サブワード区分を有するオペランドとしてパックした前記複数の画像データブロックをメディアプロセッサに提供するステップを含み、当該サブワードは、前記複数のデータブロックの画像データブロックの1つのデータ項目に対応することを特徴とする請求項10に記載の転送制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001357206A JP4384828B2 (ja) | 2001-11-22 | 2001-11-22 | コプロセッサ装置およびデータ転送を容易にするための方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001357206A JP4384828B2 (ja) | 2001-11-22 | 2001-11-22 | コプロセッサ装置およびデータ転送を容易にするための方法 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2003167726A JP2003167726A (ja) | 2003-06-13 |
JP2003167726A5 JP2003167726A5 (ja) | 2005-07-14 |
JP4384828B2 true JP4384828B2 (ja) | 2009-12-16 |
Family
ID=19168580
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001357206A Expired - Fee Related JP4384828B2 (ja) | 2001-11-22 | 2001-11-22 | コプロセッサ装置およびデータ転送を容易にするための方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4384828B2 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7088371B2 (en) * | 2003-06-27 | 2006-08-08 | Intel Corporation | Memory command handler for use in an image signal processor having a data driven architecture |
US7275148B2 (en) * | 2003-09-08 | 2007-09-25 | Freescale Semiconductor, Inc. | Data processing system using multiple addressing modes for SIMD operations and method thereof |
JP5241584B2 (ja) * | 2009-04-01 | 2013-07-17 | キヤノン株式会社 | 画像処理装置および画像処理方法、並びにプログラム |
JP2011141823A (ja) * | 2010-01-08 | 2011-07-21 | Renesas Electronics Corp | データ処理装置および並列演算装置 |
US9645854B2 (en) | 2010-12-15 | 2017-05-09 | Advanced Micro Devices, Inc. | Dynamic work partitioning on heterogeneous processing devices |
JP6316593B2 (ja) | 2014-01-07 | 2018-04-25 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
-
2001
- 2001-11-22 JP JP2001357206A patent/JP4384828B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2003167726A (ja) | 2003-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230418764A1 (en) | Tracking streaming engine vector predicates to control processor execution | |
EP3120245B1 (en) | Hardware-based atomic operations for supporting inter-task communication | |
JP4987882B2 (ja) | スレッドに最適化されたマルチプロセッサアーキテクチャ | |
US5822606A (en) | DSP having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word | |
US20190073222A1 (en) | Streaming engine with cache-like stream data storage and lifetime tracking | |
US11269638B2 (en) | Exposing valid byte lanes as vector predicates to CPU | |
KR100956970B1 (ko) | 프로세서에서의 마스킹된 저장 동작들을 위한 시스템 및방법 | |
US20190121697A1 (en) | Streaming engine with error detection, correction and restart | |
US11119779B2 (en) | Dual data streams sharing dual level two cache access ports to maximize bandwidth utilization | |
US11907721B2 (en) | Inserting predefined pad values into a stream of vectors | |
US11249759B2 (en) | Two-dimensional zero padding in a stream of matrix elements | |
US11231929B2 (en) | One-dimensional zero padding in a stream of matrix elements | |
US10642490B2 (en) | Streaming engine with fetch ahead hysteresis | |
US20220179652A1 (en) | Inserting null vectors into a stream of vectors | |
US20230385063A1 (en) | Streaming engine with early exit from loop levels supporting early exit loops and irregular loops | |
Donovan et al. | Pixel processing in a memory controller | |
US6785743B1 (en) | Template data transfer coprocessor | |
JP4384828B2 (ja) | コプロセッサ装置およびデータ転送を容易にするための方法 | |
US6782470B1 (en) | Operand queues for streaming data: A processor register file extension | |
US11900117B2 (en) | Mechanism to queue multiple streams to run on streaming engine | |
WO2020237231A1 (en) | Inserting predefined pad values into a stream of vectors | |
US20230065512A1 (en) | Pseudo-First In, First Out (FIFO) Tag Line Replacement |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041110 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041110 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070219 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070731 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071030 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080708 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20081006 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20081009 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20081107 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20081112 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081202 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090901 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090928 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121002 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131002 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |