JP3559046B2 - データ処理マネージメントシステム - Google Patents

データ処理マネージメントシステム Download PDF

Info

Publication number
JP3559046B2
JP3559046B2 JP53596997A JP53596997A JP3559046B2 JP 3559046 B2 JP3559046 B2 JP 3559046B2 JP 53596997 A JP53596997 A JP 53596997A JP 53596997 A JP53596997 A JP 53596997A JP 3559046 B2 JP3559046 B2 JP 3559046B2
Authority
JP
Japan
Prior art keywords
data
data processing
management system
thread
operations
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 - Lifetime
Application number
JP53596997A
Other languages
English (en)
Other versions
JP2000509528A (ja
Inventor
ジェームス ロバート ウィタカー
ポール ロウランド
Original Assignee
イマジネイション テクノロジーズ リミテッド
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by イマジネイション テクノロジーズ リミテッド filed Critical イマジネイション テクノロジーズ リミテッド
Publication of JP2000509528A publication Critical patent/JP2000509528A/ja
Application granted granted Critical
Publication of JP3559046B2 publication Critical patent/JP3559046B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/507Low-level

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)
  • Image Processing (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

発明の分野
本発明は、リアルタイムマルチメディア入力及び処理に使用できる形式のデータ処理マネージメントシステムに係る。
先行技術の説明
コンピュータのユーザインターフェイスは、テレタイプからキーボードへそしてキャラクタターミナルからGUI(グラフィックユーザインターフェイス)へと連続的に進化し、現在では、GUIが大部分のコンピュータユーザの標準的なインターフェイスとなっている。この進化は、サウンド及び3Dグラフィックスが次第に一般的となりそして3Dサウンド及びバーチャルリアリティが出現するというように続いている。その共通の脈絡は、ユーザに与えられるデータの形式が付随的に増加するために人間とコンピュータとのインターフェイスが益々複雑化することである。PC(パーソナルコンピュータ)アプリケーションは、この移行の利点を取り上げ、そしてそれらの完全な潜在能力を引き出すためにサウンド及び3Dグラフィックスを利用することに益々依存している。
その結果、チップ及びボード供給者は、2つ以上のデータ形式、例えば、2Dグラフィックス及びサウンド、又は2D及びMPEG(動画専門グループ)再生を取り扱うように設計された複合機能をもつ製品を提供するようになった。今日までのこれらの製品は、各データ形式ごとに個別の機能的ユニットを使用していることに注目するのが重要である。
最近、プログラマブルSIMD(単一命令多データ)アーキテクチャー(例えば、クロマティックMPACT)が出現している。これらアーキテクチャーは、同じ命令を実行する同一の処理要素を使用して、多数のデータブロックに対して同じ処理を並列して実行する。この解決策は、例えば、MPEGのようなデータ圧縮におけるブロック処理のような共通の機能を実行できるように容易に分割できるデータについては充分に機能するが、データ処理内で条件付きの流れ制御をしばしば必要とする完全な汎用アルゴリズムを実行するに充分な融通性がない。
又、DSP(デジタル信号プロセッサ)の売り主は、種々のデータ形式を処理するに必要な融通性を与えるMIMD(多命令多データ)デバイス(例えばテキサスインスツルーメント社のTI320C80)をこのマーケットに向けるように努めた。しかしながら、そのアーキテクチャーは、アプリケーションに必要とされるものよりも遙に大きな融通性を保持する汎用DSPコアの複製であるために、それにより形成されるチップは、一般的なPC及び消費者向けとしては非常にコストの高いデバイスとなってしまう。
汎用プログラム及びマルチメディア処理の両方について高速RISC CPUをプロモートするCPU(中央処理ユニット)の売り主は、数個以上のマルチメディア特有の命令をサポートするようにそれらのアーキテクチャーを妥協することができず(そしてそのように望まず)、それ故、妥当なコストで所要の性能レベルを得ることができない。又、CPUは、一般に、非リアルタイムのオペレーティングシステムを実行するのに使用されるので、待ち時間の短い処理を与えることもできない。
多数の処理ユニットを制御するVLIW(非常に長い命令ワード)命令を使用する専用のマルチメディアCPU(例えばフィリップス社のトリメディア)は、それらの処理能力を効率的に使用することができない。というのは、各命令が単一のタスク(及びデータ形式)に専用のものであり、それ故、使用できる全ての処理ユニットを最適に活用することができないからである。例えば、3Dグラフィックオペレーションに専用のVLIW命令は、MPEG運動推定に設計されたハードウェアの利点を取り入れることができない。又、処理ユニットの個数、ひいては、拡張性も、VLIWワードの長さにより制限される。
発明の要旨
本発明の好ましい実施形態は、システムコストを最小限にすると共に、マルチメディア及び関連工業規格の将来の進展に備えるように、全てのマルチメディアデータ形式を処理するデバイスの要求に向けられる。本発明の実態形態は、処理能力、リアルタイムI/Oサポート、及び実行できる同時アクティビティの数について拡張性のあるアーキテクチャーを提供する。
全てのマルチメディアデータ形式は、ベクトル処理解決策に適したデータの流れとしてみることができる。これら流れの幾つかは、リアルタイムであり(例えば、音声又は映像入力からの流れ)、従って、データロスを回避するために専用のバッファ又は低待ち時間処理を必要とする。又、各データ流は、それを処理するのに何らかのハードウェアリソースを必要とする。
本発明の好ましい実施形態は、データIO及びタスクスケジューリングのみを遂行する低待ち時間のリアルタイム処理を含む。これは、不要で且つコストのかかるバッファの必要性を回避する。又、必要なリソースが使用できるタスクのみが実行されるよう確保するための動的なリソースチェック方法も含む。
ホストの処理能力と、メモリのコストと、シリコンのコストとのバランスは、常時変化している。これは、ホストプロセッサとマルチメディア共通プロセッサとの間の最適な作業分担も、時間と共に変化することを意味する。このデバイスは、必要に応じて作業分担を変更できるようにプログラム可能である。
並列処理デバイスの拡張性は、ハードウェア設計及びサポートソフトウェアの両方にとって問題である。より多くの処理ユニットがデバイスに追加されたときには、処理ユニット間のタスクの振り分けが益々困難になり、利益の減少を招くか、又は機能ユニット間の相互接続数の指数関数的な増加を招く。又、このような変化は、一般に、サポートソフトウェアの大規模な変更を必要とするデバイスに対しプログラミングモデルの変更を招く。本発明の好ましい実施形態は、機能ユニット間の相互接続の急増を生じることなく且つデバイスへのソフトウェアインターフェイスに与えられるプログラミングモデルの変更を伴うことなく全ての要素を拡張できる一貫した拡張可能なアーキテクチャーによってこれらの問題に対処する。
図1は、デバイスの基本的なアーキテクチャーを示す。
デバイスは、マルチメディアデータを処理するのに必要な現在及び将来の全てのアルゴリズムに適合できる再構成可能なエンジンと考えられている。これによって行われる作業は、2つの分類に分けられる。リアルタイムスケジューリング及びIO処理の両方は、メディアコントロールコアにより実行され、一方、計算能力の高いデータ処理は、1つ以上の付加的なデータ処理ユニットにより実行される。
この作業分割は、アーキテクチャーの基本的特徴の1つである。
データ処理は、次のような多数のステップより成る。
パラメータフェッチ及び設定;
データフェッチ及び設定;及び
データ記憶。
高いデータ処理スループットを効率的に達成するために、プロセッサは、適度な大きさのデータセットに対して上記オペレーションを行うことが必要である。データセットがあまりに小さいと、プロセッサは、タスク間のコンテクスト切り換えと、それに伴うスレッド状態のセーブ及び再記憶の必要性とにその能力のほとんどの部分を費やすことになる。
メディアコントロールコアは、IOポートとメモリとの間にデータを移動する(データ処理を行えるようにするために)要求に応じるためにのみ必要とされるので、各クロックサイクルにコンテクスト切り換えすることができ、これは、次いで、リアルタイムIOをサポートするための大きなデータバッファの必要性を排除する。データ処理ユニットは、データに対してアルゴリズムの重要な部分を中断なしに実行することにより効率的にデータを処理することができる。
これらの処理要素は、アクティブなアルゴリズムを実行するのに必要なデータセットをキャッシュ処理することにより効率的なデータ移動及び処理をサポートする拡張可能なマルチバンクキャッシュによりサポートされる。
本発明は、その種々の特徴について、請求の範囲に詳細に規定される。
【図面の簡単な説明】
添付図面を参照し、本発明の好ましい実施形態を一例として詳細に説明する。
図1は、本発明の実施形態のブロック図である。
図2は、図1のメディアコントロールコアのブロック図である。
図3は、本発明の第2の実施形態のブロック図である。
図4は、メディアコントロールコアのコントロールユニット命令パイプラインを示すブロック図である。
図5は、図4のデータバンクの1つの内部アーキテクチャーを示すブロック図である。
図6は、メディアコントロールコアによりリソースチェック、ひいては、プロセス選択をいかに実行するか示すブロック図である。
図7は、図1のバンク型キャッシュメモリへいかにアクセスするかを示すブロック図である。
好ましい実施形態の詳細な説明
本発明の実施形態の基本的なアーキテクチャーが図1に示されている。システムの中心は、メディアコントロールコア(MCC)2である。これは、微細粒度のマルチスレッディングプロセッサである。これは、リアルタイムデータ入力及び出力デバイス4に接続できる複数の入力及び出力を有する。デバイス4は、例えば、ビデオソース、オーディオソース、ビデオ出力、オーディオ出力、データソース、記憶装置等である。簡単な例では、1つの入力及び1つの出力のみが与えられる。
又、メディアコントロールコア2には、複数のデータ処理ユニット6も接続される。これらの各々は、データパイプライン10を経てデータの処理を制御するデータ処理コア8を含む。コア8は、パイプライン10のマイクロ命令をデコードしそしてシーケンスする。
又、メディアコントロールコア2には、マルチバンク型キャッシュメモリ12も接続され、このメモリからメディアコントロールコア2及びデータ処理ユニット6によりデータが検索されると共に、メディアコントロールコア2及びデータ処理ユニット6によりこのメモリにデータが書き込まれる。
メディアコントロールコアは、入力からデータ処理コア又は記憶装置へデータを導くと共に出力へデータ供給する微細粒度のマルチスレッディング処理ユニットである。これは、各クロックサイクルにタスクを切り換えできるように構成される。これは、各クロックサイクルに、それが実行できる考えられるオペレーションのどれが、実行されるべきタスクに対して使用可能な全てのリソースを有するか、そしてその中でどれが最も高い優先順位を有するかをチェックすることにより達成される。充分な処理能力が与えられる場合には、各クロックサイクルに2つ以上のオペレーションを開始するように構成することができる。
このリソースチェックは、特定のタスクを実行するに必要な全てのものが存在するよう確保する。これは、データが入力ポートに得られるかどうか(EGビデオデータ)、或いはデータ記憶装置又は出力が使用できるかどうかといった外部リソースを含む。又、一時的な記憶のためのデータバンクや、特定の新たな処理動作に必要な他のデータ又は既に処理されたデータに現在作用していない使用可能な処理コアのような内部リソースも含む。メディアコントロールコアは、入力から適当なデータ処理ユニット6へデータを送って処理を実行し、そして必要なときに必要に応じてキャッシュを使用して出力へデータをルート指定するように動作する。1組の命令の実行が処理ユニットにおいて開始されると、MCCは、それが実行できる種々のスレッド及びそれに対して使用できるリソースを再び探すことができ、その間に、プログラムはデータ処理ユニットにおいて実行を続ける。
メディアコントロールコアのリソース及び優先順位チェックは、ビデオ入力のようなリアルタイムデータとして働くタスクを、現在のリアルタイム入力に通常必要とされる大きなメモリバッファを伴わずに実行できることを意味する。ビデオ入力のようなオペレーションでは、メディアコントロールコアは、IOポートにデータが得られるかどうかを調べ、もしそうであれば、そのデータを受け取って、マルチバンク型キャッシュの一部分又はデータ記憶レジスタへ送り、データ処理ユニット6の1つで処理するための準備をする。
全てのデータ処理ユニット6は、メディアコントロールコア2の制御及びスケジューリングのもとにある。図1に示す例では、これらのユニットは、その関連するデータ処理コア8の制御のもとで、乗算器、加算器、シフタ等の多数の処理要素で作り上げられる処理パイプライン(データパイプライン10)より成り、処理コア8は、一連の命令を実行してデータ処理アルゴリズムを実行する。これらデータ処理コアの各々は、特定のデータ処理を実行するための一連の命令を記憶するそれ自身のマイクロ命令ROM及び/又はRAMを有する。メディアコントロールコアは、データ処理ユニット6を呼び出し、例えばアドレスオフセットをそのマイクロ命令ROMに通して実行の開始を命令することによりその特定のオペレーションシーケンスを実行する。次いで、マルチバンク型キャッシュからのデータ、又は1つの入力からメディアコントロールコアへ通されたデータに対して特定のプロセスを完了まで実行し、その際に、処理が完了したことをメディアコントロールコアに通知する。
図1のマルチバンク型キャッシュ12は、メモリアクセスに対して使用され、これらは全てこのバンクを通してキャッシュ処理される。キャッシュは、複数のバンク14に分割され、その各々は、行われる1つのデータ処理タスクの要件に適合するようにプログラムすることができる。例えば、キャッシュバンクは、3Dグラフィックレンダリングに使用するためにメインメモリからのテクスチャマップをキャッシュ処理するのに専用としてもよい。キャッシュバンクのこのプログラム特性を使用すると、オンチップメモリを最大限に使用できると共に、動的なキャッシュ割り当てを実行することができ、これにより、特定の条件のもとで最良の性能を得ることができる。
更に、多数のキャッシュバンクの使用は、キャッシュを非ブロッキングにすることができる。即ち、キャッシュバンクの1つが、現在満足することのできない要求、例えば、データが現在得られないような読み取り命令を処理している場合には、個別のキャッシュバンクを使用する別の処理スレッドを動作することができる。
図1に示す全デバイスは、拡張可能であり、シリコンの単一断片上に集積チップとして構成することができる。メディアコントロールコア2は、図2を参照して以下に述べるように拡張できる。メディアコントロールコアのサイズが増加するにつれて、メディアコントロールのための同じプログラミングモデルを使用しながらも更に別のデータ処理ユニット6をサポートすることができる。又、更に多数のキャッシュバンクを追加して、更に別のデータ処理ユニットをサポートすることにより、メディアコントロールコア及びデータ処理ユニットに対するデータスループットの有効性を高めることができる。デバイスのプログラムモデルが変化しないので、これは、高度の下位互換性を得られるようにする。
メディアコントロールコアが図2に詳細に示されている。これは、コントロールユニット16と、1組の読み取り/書き込みユニット18と、1組のプログラムカウンタバンク20と、1組のアドレスバンク22と、1組のデータバンク24と、1組の入力/出力バンク26とで構成される。これらのバンクは、全て、メディアコントロールコア状態バス28、メディアコントロールコア制御バス29及びメディアコントロールコアデータ相互接続部30によって互いに接続される。メディアコントロールコアデータ相互接続部は、種々の異なるバンク間にデータを送信するのに使用され、そして状態バスは、入力/出力ポートの状態や、メディアコントロールコアが命令及びデータを送信できるところのデータ処理ユニットの状態のようなデータを供給する。
更に、ROM及びRAMにマイクロ命令を記憶するメモリブロック32は、コントロールユニット16及び上記のユニット18−26に接続される。
コントロールユニットを除いて全てのコア要素18−26は、それらからデータを読み取ったり、それらにデータを書き込んだり、それらに記憶されたデータ間でオペレーションを実行したりすることのできる同じ基本的インターフェイスモデルを有する。各バンクは、処理ユニット及び演算論理ユニット(ALU)と共に、密接接続のローカル記憶レジスタファイルで構成される。
コントロールユニット16は、メディアコントロールコアの実行を制御するのに使用される。これは、各クロックサイクルごとに、メディアコントロール状態バス28により供給される状態情報を使用して、全てのリソースの利用性(例えば入力/出力ポート状態、データ処理ユニットの状態等)を、その制御のもとで各プログラムを実行するのに必要なリソースに対してチェックする。次いで、全てのリソースが使用できる最も優先順位の高いプログラムスレッドに対して命令の実行を開始する。
プログラムカウンタバンクは、メディアコントロールコアによってサポートされる各処理スレッドごとにプログラムカウンタを記憶するのに使用される。これは、メディアコントロールコアがサポートできる各処理スレッドに対するレジスタと、プログラムの進行、ループ動作、分岐等のためにプログラムカウンタに対して全てのオペレーションを実行するAULとで構成される。データバンク24は、メディアコントロールコア内のプログラムの流れを制御するためにデータに対する汎用動作に使用される。それらは、MMCにおいて動作する処理スレッドにより必要に応じて使用できる一般的なリソースである。
アドレスバンク22は、命令及びデータの両方に対するアドレスを記憶しそして操作するのに使用されると共に、データバンク24と同様の一般的なMMCリソースでもある。
入力/出力バンク26は、MCCによりサポートされる入力/出力に対しメディアコントロールコアとリアルタイムデータ流との間のインターフェイスを形成する。それらの状態は、例えばビデオ入力のようなポートにおけるデータの入手性、又は出力のためのデータを取り出すポートの能力を指示する。それらは、オプションとして、データが取り込まれ又は取り出されるときにデータを変換する能力、例えば、データ流のビットスタフィングを含むことができる。
読み取り/書き込みバンク18は、メディアコントロールコアとメモリとの間のインターフェイスを形成する(マルチバンクキャッシュを経て)。一度に2つ以上の処理スレッドを動作できるときには、メモリ要求のブロッキングを回避するために2つ以上の読み取り/書き込みユニットが必要とされる。
メディアコントロールコアは、全ての重要な観点で拡張可能である。これは、記憶(レジスタファイル)及び処理(ALU)をローカライズするバンクから構成されるので、ルート及び相互接続を管理できないという問題を生じることなく付加的なバンクを追加することができる。サポートできる処理スレッドの数は、プログラムカウンタバンクにレジスタを追加しそしてそれに応じてコントロールユニットを変更することにより増加することができる。MCCによりサポートできる入力/出力流の数は、更に別のIOバンクを追加することにより増加することができる。
データスループットは、更に別の読み取り/書き込みユニット18を追加することにより増加できると共に、全MCC処理能力は、更に別のデータ及びアドレスバンク24、22を追加することにより増加できる。
図3は、データ処理マネージメントシステムの特定の実施形態を示すブロック図である。このシステムのMCCは、複数のリアルタイムデータ入力/出力ポートとして働き、そしてそこから受け取った及びそこに出力されるデータを処理するようにデータ処理ユニットを制御する。
図示されたように、ビデオ入力34及びオーディオ入力36が、関連する前プロセッサ38及び40を経てメディアコントロールコアに接続される。対応するビデオ出力42及びオーディオ出力44は、各後プロセッサ46及び48を経てメディアコントロールコア2に接続される。ビデオ及びオーディオ入力及び出力は、デジタル入力及び出力である。
図1の場合と同様に、メディアコントロールコア2は、この場合にメインキャッシュバンクと称するマルチバンク型キャッシュ12に接続される。二次コア8及びデータ(メディア)パイプライン10を含むデータ処理ユニット6は、メディアコントロールコアに直接接続され、そしてそれらに供給されるべきデータを処理するのに使用される。
又、メディアコア2には、処理ユニット50も接続され、これは、デジタル/アナログコンバータ供給コア(DAC供給コア)52と、DAC供給パイプライン54とを備え、このパイプラインは、デジタル/アナログコンバータ56にデータを供給する。その目的は、グラフィック出力を供給することである。このため、処理ユニット50は、フレームバッファインターフェイス58を経てデータをフェッチし、そしてホストコンピュータ映像グラフィックアダプタ(VGA62)用のシステムバス60は、互換性のためにのみ保持される。従って、リアルタイムデータは、ビデオ及びオーディオ入力に送られ、そしてビデオ及びオーディオ出力を経て送り出すことができるが、グラフィック出力は、DAC56により送信することができる。
グラフィック出力のためのデータは、図3ではフレームバッファインターフェイス58を経て接続が示されたグラフィックフレームバッファのようなソースからの非リアルタイムデータ、3Dデータ、又はリアルタイムビデオを処理することにより発生できる。
二次コア8及びメディアパイプライン10は、音声、3D、2D、映像スケーリング、映像デコード等の処理を行うことのできるデータ処理ユニットの一例である。これは、何らかの形式の汎用プロセッサで形成することができる。
DAC供給コア及びDAC供給パイプラインは、DACのためのRGBデータを発生するために多数のフレームバッファからのデータを専用に処理する。これは、ピクセルごとにソースバッファ間で切り換わることができ、従って、YUVを含む多数の映像フォーマットから得られたデータを変換し、そして多数のフレームバッファからのソースデータを混合によるか或いはカラー又はクロマキー動作により合成することができる。
各コアは、ROM及びRAMで形成された関連するマイクロコード記憶装置を有し、これは、明瞭化のためにここには示さないが、プロセッサにより実行されるべき命令を記憶する。キャッシュバンク12は、メディアコントロールコア及びデータ処理ユニット6、50にインターフェイスする。それらは、アドレス変換ユニット64を経てシステムバスにもインターフェイスする。又、それらは、1つ以上のフレームバッファにデータを書き込んだりそこからデータを読み取ったりするためにフレームバッファインターフェイス58にもリンクされる。
データバンク24が図5に示されている。これは、レジスタファイル72と、ALU74と、マルチプレクスユニット76とを含む。データバンクのオペレーションは、レジスタファイルへ入力されるWE、W、R1及びR2と示されたマイクロ命令の多数のビットにより制御される。ALUにより実行されるマイクロ命令の結果は、状態ビットH、S、Zとして得ることができ、これらは、分岐及び条件付き命令を実行するためにメディアコントロールコアのコントロールユニットにルート指定される。
レジスタファイルは、各クロックサイクルに、2つのオペランドを入力からフェッチしそして1つのオペランドを出力に書き込むことができるように構成される。データ入力ポート78及びデータ出力ポート80は、それらが接続されたメディアコントロールコアデータバス30を経て他のデータと通信することができる。従って、図5のデータ流は、図を通して垂直方向下降し、一方、制御情報の流れは、左から右へと進み、コントロールユニットからの制御ビットと、コントロールユニットへ返送されるデータバンクの状態を表す状態ビットとで形成される。
複数のこれらデータバンクが使用され、その各々は同じ形態であり、即ちその各々は、図5に示すようにALUに密接に接続されたそれ自身のレジスタファイルを有する。複数の密接に接続されたレジスタ及びALUを好ましくは1対1の関係で使用するこの構成体は、レジスタバンクと多数のALUとの間の複雑なマルチプレクスが必要とされた多数のALUの公知の構成体とは異なる。
一般に、これらのデータバンクは、MCC内のプログラムの流れを制御するようにデータに対して汎用のオペレーションを実行し、そしてMCCにおいて動作する処理スレッドにより使用することができる。
アドレスバンク22、プログラムカウンタバンク20、IOバンク26、及び読み取り/書き込みユニット18は、全て、同様に構成されて動作するが、それらの実施を最適化して、それらが使用される方法を反映するように、個別のユニットで設けられる。
アドレスバンクは、メモリ(図示せず)へデータアクセスするためのアドレスを記憶しそして操作する。それらは、非符号化アキュムレータを使用し、そして状態バスを経てコントロールユニット16に変更される条件コードを発生しないという点で、データバンクより若干簡単である。
プログラムカウンタバンクは、メディアコントロールコアによってサポートされるスレッドを各々処理するためのプログラムカウンタを記憶するのに使用される。従って、図5に示された形式のバンクにおけるレジスタの数は、MCCがサポートできる処理スレッドの数に等しい。アドレスバンクの場合と同様に、ALUは、プログラムカウンタ動作に使用され、そして非符号化される。これは、コントロールユニット2に返送される条件コードを発生しない。
IOバンクは、IOポートにインターフェイスするのに使用され、レジスタもALUも含まない。それらは、MCCによりサポートされるリアルタイムデータ流とインターフェイスする。状態信号は、ポートにおけるデータの入手性、又はデータを採取するポートの能力を指示する。それらは、データが転送されるときにデータを変換する能力を任意に含むことができる。
読み取り/書き込みユニットは、キャッシュバンク12にインターフェイスする。それらは、レジスタもALUも有していない。読み取りユニットは、アドレスを受け入れ、そしてデータが返送されないときに、データ有効状態ビットをセットする。書き込みユニットは、アドレス及びデータを受け入れる。多数の読み取り及び書き込みユニットを使用し、1つのキャッシュがブロックをアクセスする場合に、別のスレッドが別の読み取り/書き込みユニットを介して実行を継続できるよう確保する。
各データ処理スレッドごとにコントロールユニット(図示せず)をもつ命令バッファは、そのスレッドの次のマイクロ命令及び命令オペランドを記憶する。命令及びオペランドは、その命令を実行するのに必要なリソースを示すビットを含む。これらのリソース要求は、メディアコントロールコア2、外部IOポート20及びデータ処理ユニット6、50の現在状態を示す状態ビットと共にコントロールユニットのリソースチェックロジックへと供給される。ロジックゲートのアレーのような簡単な組合せロジックは、命令を実行できるかどうか決定し、そしてコントロールユニット16の固定優先順位セレクタは、最も優先順位の高い実行可能なスレッドをデータ経路制御パイプライン(図4に示す)へ送り出し、そのプログラムスレッドの実行をスタートする。スレッドタスクは、「受信ビデオデータ」、「プロセス記憶オーディオデータ」等である。
通常、命令は、それが実行されるときに、そのスレッドの次の命令をメモリから読み取ることを必要とする。命令は、命令opコード及びオペランドを含むメモリ(プログラムカウンタで指示された)から読み取られる。命令のopコードフィールドは、次の命令を検索するためにマイクロコードROMをインデックスするのに使用され、それにより得られるマイクロ命令は、命令オペランドフィールドと共にスレッドの命令バッファに記憶される。
リソースチェック及び優先順位が図6に完全に示されている。図示された3つのスレッドに対し、全体的な状態情報は、必要なデータバンク及び必要なアドレスバンクから受け取られ、ルートコントロールデータは、コントロールユニットから、コントロール状態情報は、コントロールユニット16から、そして実行依存性データは、特定のスレッドが依存する他のプロセスから受け取られる。この全ての情報は、リソースチェッカ80へ送られ、該チェッカは、それをIOポートからのデータ、種々のパイプラインデータバンク状態、及び種々のデータ処理ユニットの状態と合成する。これは、考えられる各スレッドに対して行われる。そのデータ処理スレッドを実行できる場合には、優先順位セレクタ82へ出力が発生される。これは、サポートされるデータ処理スレッドの各々の優先順位に関する情報を有し、その結果、最も優先順位の高いスレッドを実行のために選択することができる。例えば、映像のようなリアルタイムデータ入力には高い優先順位が与えられ、これは、バックグランド処理動作より高い優先度をとる。
スレッドの次の命令は既に命令バッファに与えられているので、その命令は、常にリソースチェック及び優先順位選択に使用できる。従って、各クロックサイクルの状態をチェックすることにより実行時間のロスがなくなる。
図4に示すデータ経路コントロールパイプラインは、マイクロ命令のフィールドを異なる深さでパイプラインに入れられるようにすることにより動作する。これは、マイクロ命令が多数のクロックにわたりパイプラインを通るデータの流れを制御できるようにし、ひいては、データのパイプライン処理を制御できるようにする。
図4の回路は、アンドゲート92の出力をそのイネーブル入力に受け取る1対4デコーダ90を備えている。アンドゲート92の入力は、マイクロコード命令からの制御ビットと、命令の条件付き実行に使用される条件コードである。出力選択であるマイクロコード命令からの一対のタイミングヒットがデコーダ90に入力される。デコーダ90の4つの出力は、オアゲート94を経て、シフトレジスタとして構成された4つのD型フリップ−フロップ96への入力を形成する。デコーダ90からの出力は、ゲート94において、レジスタの手前のフリップ−フロップ96の出力(第1フリップ−フロップ96からの出力)とオアされる。ビットは、マイクロコード命令の実行を開始する出力制御ビットとして出現するまで、クロック98によりレジスタに沿ってクロックされる。
従って、制御ビットは、必要なクロックサイクルで行先バンクに到達するようにそのスケジューリングパイプラインの正しい位置に挿入される。概念的には、このような命令ビットパイプラインは、全てのマイクロコード制御ビットに対して存在するが、コントロールパイプラインを実施するのに必要なロジックの量を制限するために、マイクロコードのあるフィールドを配することのできるクロックサイクルに限度が設けられる。
条件付き実行は、条件付きオペレーションを特定しそして条件ビットを発生することにより達成される。2つの形式の条件付きオペレーションがサポートされる。第1の形式は、同じ又は別のバンクからの条件コードでバンクへの書き込みイネーブルパルスを定質化することである。第2の形式は、ある条件コードが真である場合にマイクロ命令ワードが再び実行される(プログラムカウンタからの次の命令ではなく)ことを特定することである。条件コードに対する可能性の数を制限するために、これらの条件付きオペレーションにおいてデータバンク条件コードしか使用できない。
マイクロ命令フォーマットの例
このアーキテクチャーに対するマイクロ命令フォーマットの例を以下に示し、サイクルごとにマルチスレッド処理を達成するためにこれをいかに使用するかについて説明する。
図6には、多数のスレッドのマイクロ命令が示されている。その各々は、次のものを含む。
各バンクに対するコントロールフィールド、例えば、レジスタ選択ビット及びALU制御ビット;
各バンクに対する命令タイミングビット−これらは以下で説明する;
バンク間のデータのルートを制御するルートコントロールビット;
命令を条件付きで繰り返すべきか及びそれが即時データオペランドを含むかどうかを示すコアコントロールビット。
性能のために、命令は、多数のクロックサイクルにわたって実行することが許される。命令の一部分が実行される時間は、コントロールユニット命令パイプライン(図6)に制御ビットを入れる位置を制御するバンクコントロールフィールド内の遅延ビットによりセットされる。
制御ビットは、メディアコントロールコアの将来の状態を表す命令パイプラインに入れられるので、コントロールユニットロジックは、命令遅延がリソースチェック時に準備されそして命令がそれが実行されるいかなるクロックサイクルにも矛盾を生じないよう確保することができる。
実行依存性
ハードウェア設計の複雑さを低く保つために、命令は、多数のクロックサイクルにわたって実行することが許される。命令の一部分が実行される時間は、バンクコントロールフィールド内の遅延ビットにより制御される。
リソースチェックが行われるときにこの命令遅延が各クロックに対して準備され、そしてオペレーションが正しいサイクルで行われるように確保するために、遅延ビットに対応するopコードが、各サイクルにクロックされる1組のラッチへ供給される。これらのラッチの出力は、データパイプラインの将来の状態を表し、そしてリソースチェックロジックへ供給されて、命令がそれが実行されるいかなるクロックサイクルにおいても矛盾を生じないように確保する。
バンク型キャッシュ
マルチバンク型キャッシュは、多数のキャッシュバンクで形成され、図7に示すように処理ユニット及びメモリにインターフェイスする。任意に拡張できるデバイスをサポートするために、多数のキャッシュバンクが使用される。各バンクの使用は、読み取りユニット又は書き込みユニットのようなキャッシュユーザに関連したキャッシュアロケータ86により制御される。これらは、キャッシュバンクを異なる構成で使用するためにプログラム可能に制御される。例えば、コマンドデータに1つのバンクを使用し、3Dテクスチャマップに別のバンクを使用し、そして2Dパラメータに第3のバンクを使用する。キャッシュバンクを構成する機能は、良好なメモリ性能を達成する上で重要である。
キャッシュへアクセスを要求する読み取りユニット88又は書き込みユニット90のような各ポートは、アロケータモジュール86に接続される。これらのモジュールは、ポートによってなされるメモリ要求を検討し、そして適当なキャッシュバンクにその要求をルート指定する。ポートから送られるアドレスは、書き込みアロケータにおいてベースレンジレジスタ対と比較され、アドレスが所与の領域内に入るかどうか決定する。一致が生じた場合には、要求がキャッシュバンクに送られる。一致が生じない場合には、デフォールトキャッシュバンクが使用される。これは、メモリサブシステムへ要求を単に通すことより成る。
ポートに接続されたモジュールのメモリ要求に基づいて2組以上のベース及びレンジレジスタが使用される。
所与の各アロケータから全てのキャッシュバンクにアクセスできるようにする必要はない。ある部分は、他の部分より融通性がなければならない。これは、キャッシュバンクの数を容易に拡張(増加)できるようにする一方、アロケータとキャッシュバンクとの間に必要とされる相互接続の増加を制限する。従って、1組のキャッシュは、ビデオ入力要求並びにオーディオ入力及び出力を処理するように割り当てられる一方、他のキャッシュは、メインメモリからのデータフェッチを主として処理するように割り当てることができる。
各キャッシュバンクは、アービタ94を経て読み取り及び書き込みアロケータに接続される。アービタは、全てのアロケータからアクセスのための要求を受け取り、そしてどのアロケータがその特定のキャッシュバンクへのアクセスを得るべきかを決定することができる。これは、各ポートに優先順位を指定し、そして単純に保留中の最も優先順位の高い要求をアービタが処理するように構成することにより行われる。
システムは、MPEG及びビデオ会議のような他の形式の入力を使用するように拡張することができる。

Claims (31)

  1. 独立命令スレッドを実行するためのデータ処理マネージメントシステムにおいて、複数のデータ入力と、複数のデータ出力と、各々が上記命令スレッドの少なくとも1つを構成する命令を実行するためのデータ処理動作を実行できる複数のデータ処理手段と、データ記憶手段と、コントロール手段とを備えており、
    上記コントロール手段は、
    1つ以上のプログラム可能なルート指定動作において、上記データ入力のうちの選択された1つと、上記データ出力のうちの選択された1つと、上記データ処理手段のうちの選択された1つと、データ記憶手段との間に、複数のルート指定動作の中から選択されたルート指定動作にて、データを選択的にルート指定するための手段と、
    データがルート指定された各データ処理手段が上記命令スレッドのうちの1つからの命令に基づいて多数の所定のデータ処理動作の1つを開始するようにさせる手段と、
    どのルート指定動作及びどのデータ処理動作を実行できるか繰り返し決定するための手段と、
    実行できると決定されたルート指定動作またはデータ処理動作のうちの少なくとも1つの実行を開始するための手段と、
    を備えたことを特徴とするデータ処理マネージメントシステム。
  2. 実行できる各ルート指定動作及びデータ処理動作に優先順位を指定するための手段と、実行できるルート指定動作及びデータ処理動作のどれに最も高い優先順位が指定されたかを決定するための手段とを備え、実行を開始する上記手段は、最も高い優先順位が指定された動作の実行を開始するように制御される請求項1に記載のデータ処理マネージメントシステム。
  3. 少なくとも1つのデータ入力はリアルタイム入力であり、そしてその入力にデータを受信する動作に最も高い優先順位が指定される請求項1又は2に記載のデータ処理マネージメントシステム。
  4. データ入力はビデオデータ入力である請求項3に記載のデータ処理マネージメントシステム。
  5. データ入力はオーディオ入力である請求項3に記載のデータ処理マネージメントシステム。
  6. どのルート指定動作及びどのデータ処理動作を実行できるか繰り返し決定する上記手段、及びそのように決定された動作のどれに最も高い優先順位が指定されたかを決定する上記手段は、上記コントロール手段に関連したクロック手段の各クロックサイクルにこの決定を行う請求項2ないし5のいずれかに記載のデータ処理マネージメントシステム。
  7. 上記のように決定されて最も高い優先順位が指定された動作の開始は、その後のクロックサイクルに行われる請求項6に記載のデータ処理マネージメントシステム。
  8. どのルート指定動作及びデータ処理動作を実行できるか決定する上記手段は、状態バスを経て受け取られそして内部及び/又は外部リソースにより発生されたリソース状態ビットからこの決定を行う請求項1ないし7のいずれかに記載のデータ処理マネージメントシステム。
  9. 上記データ処理手段は、その処理手段により実行されるべき処理動作に関連したマイクロコード命令の記憶を含む請求項1ないし8のいずれかに記載のデータ処理マネージメントシステム。
  10. 実行を開始する上記手段は、動作を実行すべき上記データ処理手段のマイクロコード命令記憶にアドレスオフセットを与えることにより処理動作の実行を開始する請求項9に記載のデータ処理マネージメントシステム。
  11. 上記データ記憶手段は、キャッシュメモリ手段を含む請求項1ないし10のいずれかに記載のデータ処理マネージメントシステム。
  12. 上記キャッシュメモリ手段は、キャッシュメモリ記憶装置の複数のバンクを含む請求項11に記載のデータ処理マネージメントシステム。
  13. 上記キャッシュメモリへのアクセスを有するシステムの各部分は、上記キャッシュメモリの異なるバンクへのアクセスを許すようにプログラムできるキャッシュメモリ割り当て手段に関連される請求項1に記載のデータ処理マネージメントシステム。
  14. 上記コントロール手段は、そのコントロール手段内でデータに対して動作を実行するための1組のデータバンクを含む請求項1ないし13のいずれかに記載のデータ処理マネージメントシステム。
  15. 上記コントロール手段は、システムにより実行されるべきデータ処理動作の各々に対して1つづつ、1組のアドレスバンクを含む請求項1ないし14のいずれかに記載のデータ処理マネージメントシステム。
  16. 上記コントロール手段は、システムにより実行されるべきデータ処理動作の各々に対して現在プログラムアドレスを記憶するためのプログラムカウンタバンクを含む請求項1ないし15のいずれかに記載のデータ処理マネージメントシステム。
  17. 上記コントロール手段は、上記入力及び出力手段とインターフェイスするための1組の入力/出力バンクを含む請求項1ないし16のいずれかに記載のデータ処理マネージメントシステム。
  18. 上記コントロール手段は、上記データ記憶手段とインターフェイスするための読み取り/書き込みユニットを含む請求項1ないし17のいずれかに記載のデータ処理マネージメントシステム。
  19. 各データバンクは、演算論理ユニット(ALU)と、そのALUのみに関連したレジスタファイルとを含む請求項12に記載のデータ処理マネージメントシステム。
  20. 上記データバンク、アドレスバンク、プログラムカウンタバンク、入力/出力バンク、及び読み取り/書き込みバンクは、全て、共通の状態バス、共通のデータ相互接続部及び共通のコントロールバスに接続される請求項14ないし19のいずれかに記載のデータ処理マネージメントシステム。
  21. 実行されるべきルート指定動作またはデータ処理動作の実行を開始する上記手段は、その動作が実行でき且つ最も高い優先順位を有すると決定された後、続くクロックサイクルにてその最も高い優先順位を有する実行できるそのルート指定動作またはデータ処理動作を開始させるように構成されている請求項6に記載のデータ処理マネージメントシステム。
  22. データ処理マネージメントシステムにおいて、複数のデータ入力と、複数のデータ出力と、複数のデータ処理手段と、データ記憶手段と、コントロール手段とを備えており、
    上記コントロール手段は、
    複数のルート指定動作にて上記データ処理手段のうちの選択された1つを通して上記データ入力の各々から上記データ出力のうちの選択された1つへとデータをルート指定する手段と、
    データがルート指定される上記データ処理手段の各々がそのデータに対するデータ処理動作を実行するようにさせる手段と、
    複数のルート指定動作の中からどのルート指定動作が実行できるか及び複数のデータ処理動作の中からどのデータ処理動作が実行できるかを繰り返し決定する手段と、
    どの動作が実行できるかを決定する上記手段が実行できると決定したルート指定動作及びデータ処理動作の実行を開始する手段と、
    を備えることを特徴とするデータ処理マネージメントシステム。
  23. 各ルート指定動作及びデータ処理動作に優先順位を指定するための手段と、実行できるルート指定動作及びデータ処理動作のどれに最も高い優先順位が指定されたかを決定するための手段とを備え、動作の実行を開始する上記手段は、最も高い優先順位が指定されたルート指定動作またはデータ処理動作の実行を開始するように構成されている請求項22に記載のデータ処理マネージメントシステム。
  24. どの動作が実行できるかを繰り返し決定する上記手段及び実行できるどの動作が最も高い優先順位を有しているかを決定する上記手段は、どのルート指定動作及びデータ処理動作が実行できるか、且つそれらの動作のうちのどれが最も高い優先順位を有するかを、上記コントロール手段と一体的なクロック手段の各クロックサイクル中に決定するようにまとめて構成されている請求項23に記載のデータ処理マネージメントシステム。
  25. 上記複数のデータ処理手段は、別々の命令スレッドの一部分を構成する別々の命令を実行するため、データに対するデータ処理動作を独立的且つ同時に実行するように構成されており、上記コントロール手段は、上記複数のデータ処理手段がデータ処理動作を実行している間に、上記コントロール手段がどのルート指定動作及びデータ処理動作が実行できるか且つ実行できる動作のうちのどの動作が最も高い優先順位を有するかを同時に決定するように構成されている請求項24に記載のデータ処理マネージメントシステム。
  26. どの動作が実行できるかを繰り返し決定する上記手段は、上記コントロール手段と一体的なクロック手段の各クロックサイクル中に、どのルート指定動作及びデータ処理動作が実行できるかを決定するように構成されている請求項22に記載のデータ処理マネージメントシステム。
  27. 別々の命令スレッドを独立的に実行する方法であって、各命令スレッドに基づいて処理されるべきデータは、複数のデータ入力のうちの1つから与えられ、上記命令スレッドの処理の結果として生成されるデータは、複数のデータ出力のうちの1つへと送られるような方法において、
    各命令スレッドについて、そのスレッドにて実行されるべき次の処理ステップのために、実行されるべき処理ステップを指示するオプコードと、該処理ステップが実行されるべきデータ及びその命令を実行するのに必要とされるリソースを記述または定義する少なくとも1つのオペランドとを含むスレッドマイクロ命令をアセンブルし、
    上記複数のスレッドマイクロ命令について、そのマイクロ命令が実行されるべき相対的優先順位を確立し、
    各スレッドマイクロ命令について、そのマイクロ命令が実行できるかの決定がなされるように、その必要とされるリソースを定義するマイクロ命令に対するデータ及びそれらリソースの使用可能性のチェックに基づいてリソースがそのマイクロ命令を実行するのに使用可能であるかを決定し、
    実行できるスレッドマイクロ命令について、どのスレッドマイクロ命令が最も高い優先順位を有するかを決定し、
    最も高い優先順位を有するスレッドマイクロ命令について、そのスレッドマイクロ命令のオプコードに基づいて、上記データ入力の選択された1つから処理されるべきデータを検索し、該データをデータ処理手段にて処理し、及び/又は上記データ入力の選択された1つへ該データを送る、
    という各段階を含むことを特徴とする方法。
  28. 上記データ処理手段がマイクロ命令を実行している間、次のスレッドマイクロ命令を実行するためのリソースの使用可能性を決定する上記段階及びすべてのリソースが使用可能であるスレッドマイクロ命令について最も高い優先順位を有するスレッドマイクロ命令を決定する上記段階を同時に実行する請求項27に記載の方法。
  29. 複数の別々のデータ処理手段が与えられ、最も高い優先順位を有するスレッドマイクロ命令を決定する上記段階の後、その最も高い優先順位を有するスレッドマイクロ命令が実行のため多数の上記データ処理手段のうちのどれかに送られ、上記個々のデータ処理手段が異なる命令スレッドのスレッドマイクロ命令を同時に実行する請求項28に記載の方法。
  30. キャッシュメモリが与えられ、上記データ入力から上記キャッシュメモリへデータが書き込まれ、上記個々のデータ処理手段は、スレッドマイクロ命令の処理中に上記キャッシュメモリからデータを読み取り、また上記キャッシュメモリへデータを書き込み、データは、上記キャッシュメモリから上記データ出力へ読み出され、上記キャッシュメモリは、上記データ入力の複数のものがデータを書き込むことができ、上記データ処理手段の複数のものがデータを読み出したり書き込んだりすることができ、及び/又はデータが上記データ出力の複数のものへと読み出されうる複数のメモリ場所を有している請求項29に記載の方法。
  31. 上記データ処理手段は、該データ処理手段によって実行されるマイクロ命令が記憶されるメモリを有しており、データ処理手段でデータを処理する上記段階が実行されるべき時、そのデータ処理手段のマイクロ命令メモリにおけるオフセットアドレスがそのデータ処理手段へ供給され、上記オフセットアドレスは、実行すべきスレッドマイクロ命令に基づいており、上記オフセットアドレスがデータ処理手段によって受け取られることにより、該データ処理手段が該オフセットアドレスによって特定されたデータ処理手段マイクロ命令に従ってそのデータを処理するようにさせられる請求項27に記載の方法。
JP53596997A 1996-04-04 1997-04-04 データ処理マネージメントシステム Expired - Lifetime JP3559046B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB9607153A GB2311882B (en) 1996-04-04 1996-04-04 A data processing management system
GB9607153.5 1996-04-04
PCT/GB1997/000972 WO1997038372A1 (en) 1996-04-04 1997-04-04 A data processing management system

Publications (2)

Publication Number Publication Date
JP2000509528A JP2000509528A (ja) 2000-07-25
JP3559046B2 true JP3559046B2 (ja) 2004-08-25

Family

ID=10791630

Family Applications (1)

Application Number Title Priority Date Filing Date
JP53596997A Expired - Lifetime JP3559046B2 (ja) 1996-04-04 1997-04-04 データ処理マネージメントシステム

Country Status (7)

Country Link
US (1) US5968167A (ja)
EP (1) EP0891588B1 (ja)
JP (1) JP3559046B2 (ja)
DE (1) DE69709078T2 (ja)
ES (1) ES2171919T3 (ja)
GB (1) GB2311882B (ja)
WO (1) WO1997038372A1 (ja)

Families Citing this family (95)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6079008A (en) * 1998-04-03 2000-06-20 Patton Electronics Co. Multiple thread multiple data predictive coded parallel processing system and method
DE19817024A1 (de) * 1998-04-17 1999-10-21 Alcatel Sa Integrierte Schaltung
FI107365B (fi) * 1998-04-27 2001-07-13 Nokia Mobile Phones Ltd Menetelmä ja järjestelmä muuttuvan datankäsittelyn ilmaisemiseksi tiedonsiirtoyhteydessä
US6205465B1 (en) * 1998-07-22 2001-03-20 Cisco Technology, Inc. Component extensible parallel execution of multiple threads assembled from program components specified with partial inter-component sequence information
US6505228B1 (en) 1998-07-22 2003-01-07 Cisco Technology, Inc. Dynamic determination of execution sequence
US6041400A (en) * 1998-10-26 2000-03-21 Sony Corporation Distributed extensible processing architecture for digital signal processing applications
US6300962B1 (en) * 1998-12-23 2001-10-09 Scientific-Atlanta, Inc. Method and apparatus for providing reliable graphic memory operations in a set-top box environment
US6209078B1 (en) * 1999-03-25 2001-03-27 Lsi Logic Corporation Accelerated multimedia processor
US20080184017A1 (en) * 1999-04-09 2008-07-31 Dave Stuttard Parallel data processing apparatus
WO2000079395A1 (en) * 1999-06-21 2000-12-28 Bops Incorporated Methods and apparatus for establishing port priority functions in a vliw processor
US6542921B1 (en) * 1999-07-08 2003-04-01 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
US6606704B1 (en) * 1999-08-31 2003-08-12 Intel Corporation Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode
US6678277B1 (en) * 1999-11-09 2004-01-13 3Com Corporation Efficient means to provide back pressure without head of line blocking in a virtual output queued forwarding system
US6898617B2 (en) * 1999-11-18 2005-05-24 International Business Machines Corporation Method, system and program products for managing thread pools of a computing environment to avoid deadlock situations by dynamically altering eligible thread pools
US7518993B1 (en) * 1999-11-19 2009-04-14 The United States Of America As Represented By The Secretary Of The Navy Prioritizing resource utilization in multi-thread computing system
US7793076B1 (en) * 1999-12-17 2010-09-07 Intel Corporation Digital signals processor having a plurality of independent dedicated processors
US6532509B1 (en) 1999-12-22 2003-03-11 Intel Corporation Arbitrating command requests in a parallel multi-threaded processing system
US6694380B1 (en) 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
US6625654B1 (en) * 1999-12-28 2003-09-23 Intel Corporation Thread signaling in multi-threaded network processor
US7856633B1 (en) 2000-03-24 2010-12-21 Intel Corporation LRU cache replacement for a partitioned set associative cache
US7093109B1 (en) 2000-04-04 2006-08-15 International Business Machines Corporation Network processor which makes thread execution control decisions based on latency event lengths
US6931641B1 (en) 2000-04-04 2005-08-16 International Business Machines Corporation Controller for multiple instruction thread processors
US20060036756A1 (en) * 2000-04-28 2006-02-16 Thomas Driemeyer Scalable, multi-user server and method for rendering images from interactively customizable scene information
GB2367913A (en) * 2000-09-16 2002-04-17 Motorola Inc Processor resource scheduler
WO2002029601A2 (en) * 2000-10-04 2002-04-11 Pyxsys Corporation Simd system and method
US6684262B1 (en) 2000-10-25 2004-01-27 International Business Machines Corporation Method and system for controlling peripheral device interface behavior using thread registration
US7225320B2 (en) * 2000-12-28 2007-05-29 Koninklijke Philips Electronics N.V. Control architecture for a high-throughput multi-processor channel decoding system
GB2372847B (en) 2001-02-19 2004-12-29 Imagination Tech Ltd Control of priority and instruction rates on a multithreaded processor
US6895520B1 (en) 2001-03-02 2005-05-17 Advanced Micro Devices, Inc. Performance and power optimization via block oriented performance measurement and control
US7320065B2 (en) 2001-04-26 2008-01-15 Eleven Engineering Incorporated Multithread embedded processor with input/output capability
US7548586B1 (en) 2002-02-04 2009-06-16 Mimar Tibet Audio and video processing apparatus
US8024735B2 (en) 2002-06-14 2011-09-20 Intel Corporation Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution
ITTO20020570A1 (it) * 2002-07-01 2004-01-02 St Microelectronics Srl Procedimento e dispositivo per elaborare segnali video per la visualizzazione su un display e relativo prodotto informatico.
JP2006506349A (ja) * 2002-09-13 2006-02-23 メットコン・メディシン・アクチボラゲット 腸洗浄法における使用のための組成物および方法
US6925643B2 (en) * 2002-10-11 2005-08-02 Sandbridge Technologies, Inc. Method and apparatus for thread-based memory access in a multithreaded processor
US7395408B2 (en) * 2002-10-16 2008-07-01 Matsushita Electric Industrial Co., Ltd. Parallel execution processor and instruction assigning making use of group number in processing elements
US20040225840A1 (en) * 2003-05-09 2004-11-11 O'connor Dennis M. Apparatus and method to provide multithreaded computer processing
US20050050310A1 (en) 2003-07-15 2005-03-03 Bailey Daniel W. Method, system, and apparatus for improving multi-core processor performance
US7003640B2 (en) * 2003-07-28 2006-02-21 Hewlett-Packard Development Company, L.P. Power-aware adaptation in an information server
US8463996B2 (en) * 2003-08-19 2013-06-11 Oracle America, Inc. Multi-core multi-thread processor crossbar architecture
US7239322B2 (en) 2003-09-29 2007-07-03 Ati Technologies Inc Multi-thread graphic processing system
US7472390B2 (en) * 2003-10-01 2008-12-30 Intel Corporation Method and apparatus to enable execution of a thread in a multi-threaded computer system
US6897871B1 (en) 2003-11-20 2005-05-24 Ati Technologies Inc. Graphics processing architecture employing a unified shader
AU2003295276A1 (en) * 2003-12-24 2005-07-14 Telefonaktiebolaget Lm Ericsson (Publ) System with centralized resource manager
US9047094B2 (en) * 2004-03-31 2015-06-02 Icera Inc. Apparatus and method for separate asymmetric control processing and data path processing in a dual path processor
US7949856B2 (en) 2004-03-31 2011-05-24 Icera Inc. Method and apparatus for separate control processing and data path processing in a dual path processor with a shared load/store unit
US8484441B2 (en) * 2004-03-31 2013-07-09 Icera Inc. Apparatus and method for separate asymmetric control processing and data path processing in a configurable dual path processor that supports instructions having different bit widths
GB2415060B (en) * 2004-04-16 2007-02-14 Imagination Tech Ltd Dynamic load balancing
US20050268019A1 (en) * 2004-06-01 2005-12-01 Che-Hui Chang Chien [interface and system for transmitting real-time data ]
EP1605354A1 (en) * 2004-06-10 2005-12-14 Deutsche Thomson-Brandt Gmbh Method and apparatus for improved synchronization of a processing unit for multimedia streams in a multithreaded environment
GB0415851D0 (en) 2004-07-15 2004-08-18 Imagination Tech Ltd Microprocessor output ports and control of instructions provided therefrom
US7552316B2 (en) * 2004-07-26 2009-06-23 Via Technologies, Inc. Method and apparatus for compressing instructions to have consecutively addressed operands and for corresponding decompression in a computer system
US7418576B1 (en) * 2004-11-17 2008-08-26 Nvidia Corporation Prioritized issuing of operation dedicated execution unit tagged instructions from multiple different type threads performing different set of operations
US7765547B2 (en) 2004-11-24 2010-07-27 Maxim Integrated Products, Inc. Hardware multithreading systems with state registers having thread profiling data
US7644221B1 (en) 2005-04-11 2010-01-05 Sun Microsystems, Inc. System interface unit
GB0519597D0 (en) 2005-09-26 2005-11-02 Imagination Tech Ltd Scalable multi-threaded media processing architecture
US20070101332A1 (en) * 2005-10-28 2007-05-03 International Business Machines Corporation Method and apparatus for resource-based thread allocation in a multiprocessor computer system
US7656409B2 (en) * 2005-12-23 2010-02-02 Intel Corporation Graphics processing on a processor core
GB2435116B (en) 2006-02-10 2010-04-07 Imagination Tech Ltd Selecting between instruction sets in a microprocessors
US7802073B1 (en) 2006-03-29 2010-09-21 Oracle America, Inc. Virtual core management
JP4878487B2 (ja) * 2006-03-30 2012-02-15 キヤノン株式会社 情報配信装置、情報配信システム、情報処理方法、およびプログラム
GB0613289D0 (en) * 2006-07-04 2006-08-16 Imagination Tech Ltd Synchronisation of execution threads on a multi-threaded processor
US7685409B2 (en) * 2007-02-21 2010-03-23 Qualcomm Incorporated On-demand multi-thread multimedia processor
JP5223220B2 (ja) * 2007-03-30 2013-06-26 日本電気株式会社 ベクトル処理装置及びベクトル処理システム
US8281308B1 (en) 2007-07-23 2012-10-02 Oracle America, Inc. Virtual core remapping based on temperature
GB2451845B (en) * 2007-08-14 2010-03-17 Imagination Tech Ltd Compound instructions in a multi-threaded processor
US8515052B2 (en) 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
GB2457265B (en) 2008-02-07 2010-06-09 Imagination Tech Ltd Prioritising of instruction fetching in microprocessor systems
GB2458487B (en) * 2008-03-19 2011-01-19 Imagination Tech Ltd Pipeline processors
US8520571B2 (en) 2008-03-26 2013-08-27 Qualcomm Incorporated Reconfigurable wireless modem sub-circuits to implement multiple air interface standards
US8458380B2 (en) * 2008-03-26 2013-06-04 Qualcomm Incorporated Off-line task list architecture utilizing tightly coupled memory system
US8787433B2 (en) * 2008-03-28 2014-07-22 Qualcomm Incorporated Wall clock timer and system for generic modem
ES2341414B1 (es) * 2008-06-10 2011-05-23 Francisco Vega Quevedo Medios y procedimiento de control de explotaciones agricolas agrupadas.
US9026424B1 (en) * 2008-10-27 2015-05-05 Juniper Networks, Inc. Emulation of multiple instruction sets
GB2466984B (en) * 2009-01-16 2011-07-27 Imagination Tech Ltd Multi-threaded data processing system
JP4878054B2 (ja) * 2009-03-03 2012-02-15 日本電信電話株式会社 映像解析装置,映像解析方法および映像解析プログラム
GB2469822B (en) 2009-04-28 2011-04-20 Imagination Tech Ltd Method and apparatus for scheduling the issue of instructions in a multithreaded microprocessor
GB2486485B (en) 2010-12-16 2012-12-19 Imagination Tech Ltd Method and apparatus for scheduling the issue of instructions in a microprocessor using multiple phases of execution
US9424685B2 (en) 2012-07-31 2016-08-23 Imagination Technologies Limited Unified rasterization and ray tracing rendering environments
US9639371B2 (en) * 2013-01-29 2017-05-02 Advanced Micro Devices, Inc. Solution to divergent branches in a SIMD core using hardware pointers
US9830164B2 (en) * 2013-01-29 2017-11-28 Advanced Micro Devices, Inc. Hardware and software solutions to divergent branches in a parallel pipeline
GB2551291B (en) 2013-05-23 2018-02-14 Linear Algebra Tech Limited Corner detection
US9146747B2 (en) 2013-08-08 2015-09-29 Linear Algebra Technologies Limited Apparatus, systems, and methods for providing configurable computational imaging pipeline
US9910675B2 (en) 2013-08-08 2018-03-06 Linear Algebra Technologies Limited Apparatus, systems, and methods for low power computational imaging
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging
US9727113B2 (en) 2013-08-08 2017-08-08 Linear Algebra Technologies Limited Low power computational imaging
US10001993B2 (en) 2013-08-08 2018-06-19 Linear Algebra Technologies Limited Variable-length instruction buffer management
US9196017B2 (en) 2013-11-15 2015-11-24 Linear Algebra Technologies Limited Apparatus, systems, and methods for removing noise from an image
US9270872B2 (en) 2013-11-26 2016-02-23 Linear Algebra Technologies Limited Apparatus, systems, and methods for removing shading effect from image
US10445240B2 (en) * 2014-08-01 2019-10-15 Analog Devices Global Unlimited Company Bus-based cache architecture
US10460704B2 (en) 2016-04-01 2019-10-29 Movidius Limited Systems and methods for head-mounted display adapted to human visual mechanism
US10122642B2 (en) 2016-09-29 2018-11-06 Intel IP Corporation Managing a data stream in a multicore system
US10949947B2 (en) 2017-12-29 2021-03-16 Intel Corporation Foveated image rendering for head-mounted display devices
US10614406B2 (en) 2018-06-18 2020-04-07 Bank Of America Corporation Core process framework for integrating disparate applications
US10691490B2 (en) 2018-07-06 2020-06-23 Apple Inc. System for scheduling threads for execution

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2457521B1 (fr) * 1979-05-23 1985-12-27 Thomson Csf Systeme multiprocesseur de traitement de signal
US4985831A (en) * 1988-10-31 1991-01-15 Evans & Sutherland Computer Corp. Multiprocessor task scheduling system
KR930002316B1 (ko) * 1989-05-10 1993-03-29 미쯔비시덴끼 가부시끼가이샤 버스제어방법 및 화상처리 장치
US5487153A (en) * 1991-08-30 1996-01-23 Adaptive Solutions, Inc. Neural network sequencer and interface apparatus
JPH05173989A (ja) * 1991-12-24 1993-07-13 Kawasaki Steel Corp 計算機及びマルチプロセッサ計算装置
DK0627100T3 (da) * 1992-12-23 2000-06-26 Ebauchesfabrik Eta Ag Laveffekt-multitaskkontroller
US5511002A (en) * 1993-09-13 1996-04-23 Taligent, Inc. Multimedia player component object system
JP3501485B2 (ja) * 1993-12-24 2004-03-02 キヤノン株式会社 マルチメディア機器の管理システムおよび管理方法
US5689674A (en) * 1995-10-31 1997-11-18 Intel Corporation Method and apparatus for binding instructions to dispatch ports of a reservation station
US5748921A (en) * 1995-12-11 1998-05-05 Advanced Micro Devices, Inc. Computer system including a plurality of multimedia devices each having a high-speed memory data channel for accessing system memory
US5699537A (en) * 1995-12-22 1997-12-16 Intel Corporation Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions

Also Published As

Publication number Publication date
EP0891588A1 (en) 1999-01-20
GB2311882B (en) 2000-08-09
JP2000509528A (ja) 2000-07-25
US5968167A (en) 1999-10-19
ES2171919T3 (es) 2002-09-16
GB2311882A (en) 1997-10-08
EP0891588B1 (en) 2001-12-12
DE69709078T2 (de) 2002-10-31
DE69709078D1 (de) 2002-01-24
GB9607153D0 (en) 1996-06-12
WO1997038372A1 (en) 1997-10-16

Similar Documents

Publication Publication Date Title
JP3559046B2 (ja) データ処理マネージメントシステム
KR100236527B1 (ko) 벡터 레지스터의 복수 뱅크를 사용한 단일 명령복수 데이터 처 리
JP4879307B2 (ja) プロセッサでの条件付き実行をサポートする装置及びその方法
US5872987A (en) Massively parallel computer including auxiliary vector processor
JP2519226B2 (ja) プロセツサ
US5752071A (en) Function coprocessor
US6826674B1 (en) Program product and data processor
JP4657455B2 (ja) データプロセッサ
US20020078320A1 (en) Methods and apparatus for instruction addressing in indirect VLIW processors
US6330657B1 (en) Pairing of micro instructions in the instruction queue
JP2014501009A (ja) データを移動させるための方法及び装置
JP2002536738A (ja) 間接vliwプロセッサにおける実行時間並列処理のための動的vliwサブ命令選択システム
JP2010009610A (ja) プロセッサ装置、デュアルプロセッサを動作させる方法及びアレイプロセッサの動作方法
TW201346733A (zh) 具有為向量衝突指令與置換指令所共享的全連接互連的處理器
US8671266B2 (en) Staging register file for use with multi-stage execution units
KR100765567B1 (ko) 산술 논리 유닛 및 스택을 가지는 데이터 프로세서, 멀티미디어 장치 및 컴퓨터 판독가능 기록 매체
EP0952528A2 (en) Information processing apparatus and storage medium
US6948049B2 (en) Data processing system and control method
US6782470B1 (en) Operand queues for streaming data: A processor register file extension
US20100281234A1 (en) Interleaved multi-threaded vector processor
KR100267092B1 (ko) 멀티미디어신호프로세서의단일명령다중데이터처리
JPH10143494A (ja) スカラ/ベクトル演算の組み合わせられた単一命令複数データ処理
JP5372307B2 (ja) データ処理装置およびその制御方法
US20100281236A1 (en) Apparatus and method for transferring data within a vector processor
KR20010072490A (ko) 레지스터 스택을 포함하는 데이터 프로세서, 그 처리방법, 컴퓨터 프로그램 제품 및 멀티미디어 장치

Legal Events

Date Code Title Description
A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20031202

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20040126

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040302

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: 20040420

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040520

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090528

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100528

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110528

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110528

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120528

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130528

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130528

Year of fee payment: 9

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term