JP5149311B2 - オン−デマンド・マルチ−スレッド・マルチメディア・プロセッサ - Google Patents

オン−デマンド・マルチ−スレッド・マルチメディア・プロセッサ Download PDF

Info

Publication number
JP5149311B2
JP5149311B2 JP2009551017A JP2009551017A JP5149311B2 JP 5149311 B2 JP5149311 B2 JP 5149311B2 JP 2009551017 A JP2009551017 A JP 2009551017A JP 2009551017 A JP2009551017 A JP 2009551017A JP 5149311 B2 JP5149311 B2 JP 5149311B2
Authority
JP
Japan
Prior art keywords
multimedia
application
core
processing
applications
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.)
Active
Application number
JP2009551017A
Other languages
English (en)
Other versions
JP2010519652A5 (ja
JP2010519652A (ja
Inventor
ドゥ、ユン
ユ、チュン
ジャオ、グオファン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2010519652A publication Critical patent/JP2010519652A/ja
Publication of JP2010519652A5 publication Critical patent/JP2010519652A5/ja
Application granted granted Critical
Publication of JP5149311B2 publication Critical patent/JP5149311B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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
    • 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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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/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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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]
    • 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
    • G06F9/5016Allocation 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 the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Image Generation (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Image Processing (AREA)

Description

本開示は、一般にエレクトロニクスに関し、具体的には、プロセッサに関する。
プロセッサは、コンピュータ計算、通信、ネットワーキングなどの様々な目的に広く使用される。プロセッサは、中央処理装置(CPU)のような汎用プロセッサ、或いは、デジタル信号プロセッサ(DSP)のような専門化されたプロセッサ、或いは、グラフィックス処理装置(GPU)である。汎用プロセッサは、様々なタイプのアプリケーションで利用される包括的な関数及び包括的な命令のセットをサポートする。汎用プロセッサは、固有の処理を要求するある種のアプリケーションに対して非効率である。対照的に、専門化されたプロセッサは、固有のアプリケーションに対してカスタマイズされた特殊な機能及び命令の限定されたセットをサポートする。これは、設計されたものに対してアプリケーションを効率的にサポートするために専門化されたプロセッサが与えられるからである。しかしながら、専門化されたプロセッサによってサポートされるアプリケーションの範囲は限られる。
携帯電話、携帯情報端末(PDA)、又は、ラップトップ・コンピュータなどのデバイスは、様々なタイプのアプリケーションをサポートする。コスト、電力などを低減するためにできるだけ効率的に、且つ、小さなハードウェアでこれらのアプリケーションを実行することが望ましい。
複数のアプリケーションを同時にサポート出来るマルチメディア・プロセッサを含むデバイスが、ここに記載される。これらのアプリケーションは、グラフィックス、オーディオ、ビデオ、カメラ、ゲームなどの様々なタイプのマルチメディアに関するものである。マルチメディア・プロセッサは、アプリケーションに関する状態情報、データ及び命令を蓄積するための構成可能な(configurable)記憶リソースと、アプリケーションに関する様々なタイプの処理を行なうための割り当て可能な(assignable)処理装置を含む。構成可能な記憶リソースは、アプリケーションに関する命令を格納するための命令キャッシュ、アプリケーションに関するデータを格納するためのレジスタ・バンク(register banks)、アプリケーションのスレッドに関する状態情報を格納するためのコンテキスト・レジスタ(context registers)などを含む。処理装置は、算術論理演算装置(ALU)コア、初等関数コア、論理コア、テクスチャ・サンプラ、ロード制御装置、フロー・コントローラなどを含む。また、これらは、下記されたように動作する。マルチメディア・プロセッサは、各アプリケーションに構成可能な記憶リソースの一部を割り当て、これらのアプリケーションによって要求された時、アプリケーションに処理装置を動的に割り当てる。従って、各アプリケーションは、独立した仮想プロセッサを監視し、同時に実行している他のアプリケーションを認識することを必要としない。マルチメディア・プロセッサは、アプリケーションから非同期にスレッドを受け取るためのインプット・インターフェース装置、非同期にアプリケーションへ結果を供給するアウトプット・インターフェース装置及び必要に応じてキャッシュ・メモリ、及び/又は、メイン・メモリからアプリケーションに関する命令やデータを取り出すためのロード制御装置を更に含む。
マルチメディア・プロセッサは、処理装置がアプリケーションに割り当てられた時間の割合に基づいて負荷を決定する。マルチメディア・プロセッサは、電力消費量を削減するために、負荷に基づいてクロック速度を調節する。
本開示の様々な態様及び特徴は、以下で更に詳細に記述される。
マルチメディア・システムのブロック図。 マルチメディア・プロセッサのブロック図。 N個のアプリケーションに対する記憶リソースの割り当てを示す図。 N個のアプリケーションに対する処理装置の割り当てを示す図。 N個のアプリケーション各々に対する仮想プロセッサを示す図。 スレッド・スケジューラのブロック図。 仮想記憶アーキテクチャを備えた記憶装置の設計を示す図。 図7の記憶装置に対する論理的及び物理的な参照用テーブルを示す図。 マルチメディア・アプリケーションをサポートするための処理を示す図。 無線通信デバイスのブロック図。
発明の詳細な説明
図1は、マルチメディア・システム100のブロック図を示している。システム100は、独立型のシステム、又はコンピューティング・システム(例えば、ラップトップ・コンピュータ)、無線通信装置(例えば、携帯電話)、ゲーム・システム(例えば、ゲーム機)などのより大きなシステムの一部である。システム100は、1からN個のアプリケーションとして参照されるN個のマルチメディア・アプリケーションをサポートする。一般的に、Nは任意の整数である。アプリケーションは、プログラム、ソフトウェア・プログラムなどとも呼ばれる。マルチメディア・アプリケーションは、グラフィックス、オーディオ、ビデオ、カメラ、ゲームなどの任意のタイプのマルチメディアに関するものである。アプリケーションは、異なる時間で開始し終了し、任意の数のアプリケーションは、ある瞬間で並列に実行される。
システム100は2次元(2D)、及び/又は、3次元の(3D)グラフィックスをサポートする。2D、又は3Dイメージはポリゴン(一般に三角形)で表わされる。各三角形は、画素(ピクセル)で構成される。各ピクセルは、空間座標、色値(color values)、テクスチャ座標などの様々な特性を有する。各特性は、4つまでのコンポーネントを有する。例えば、空間座標は、3つのコンポーネント、x、y及びz、又は4つのコンポーネント、x、y、z及びwのどちらで与えられても良い。ここで、xとyは水平座標と垂直座標であり、zは深さであり、wは同次座標である。色値は、3つのコンポーネント、r、g及びb、又は4つのコンポーネント、r、g、b及びaのどちらで与えられても良い。ここで、rは赤であり、gは緑あり、bは青であり、aは、1ピクセルの透明度を決定する透明度の要素である。同次座標は、一般的に水平座標と垂直座標であるu及びvによって与えられる。1ピクセルは、他の特性と関連付けられても良い。
システム100は、マルチメディア・プロセッサ120、テクスチャ・エンジン180及び構成可能なキャッシュ・メモリ190を含む。マルチメディア・プロセッサ120は、下記されるように、マルチメディア・アプリケーションに関する様々なタイプの処理を実行する。テクスチャ・エンジン180は、テクスチャ・マッピングなどのグラフィックス演算を実行する。ここで、テクスチャ・マッピングは、テクスチャ・イメージの色にピクセルの色の修正を関連させる複雑なグラフィックス演算である。キャッシュ・メモリ190は、マルチメディア・プロセッサ120及びテクスチャ・エンジン180に関するデータや命令を格納できる高速なメモリである。また、システム100は、他の装置を含んでも良い。
マルチメディア・プロセッサ120は、N個のアプリケーションに関する処理を実行する。マルチメディア・プロセッサ120は、一連のスレッドに各アプリケーションを、例えば、アプリケーションに対して透明であるように及び自動的に分割する。スレッド(又は、実行のスレッド)は、1つ以上の命令のセットを実行する特定の処理を示す。スレッドは、アプリケーションが複数の処理を異なる装置によって同時に実行することを可能にし、また、異なるアプリケーションが処理及び記憶リソースを共有することを可能にする。
図1に示される設計において、マルチメディア・プロセッサ120は、インプット・インターフェース装置122、アウトプット・インターフェース装置124、スレッド・スケジューラ130、フロー・コントローラ132、マスター・コントローラ134、割り当て可能な処理装置140、構成可能な記憶リソース150及びロード制御装置170を含む。インプット・インターフェース装置122は、N個のアプリケーションからスレッドを受け取り、スレッド・スケジューラ130にこれらのスレッドを供給する。スレッド・スケジューラ130は、下記されるようにスレッドの実行を予定し、管理する様々な関数を実行する。フロー・コントローラ132は、アプリケーション/プログラム・フロー制御を支援する。マスター・コントローラ134は、処理モード、データ形式などの情報を受信し、それに応じてマルチメディア・プロセッサ120内で様々な装置の演算を設定する。例えば、マスター・コントローラ134は、コマンドを解読し、アプリケーションに関する状態をセットアップし、状態のアップデート・シーケンスを制御する。
図1に示される設計において、割り当て可能な処理装置140は、ALUコア142、初等関数コア144、ロジック・コア146及びテクスチャ・サンプラ148を含む。コアは、一般的に集積回路内での処理装置を指す。用語「コア」、「エンジン」、「マシン」、「プロセッサ」、「処理装置」、「ハードウェア装置」などは、交換して利用できる。一般的に、指定可能な処理装置140は、任意の数の処理装置を含んでも良いし、任意のタイプの処理装置を含んでも良い。各処理装置は、他の処理装置と独立に動作してもよい。
ALUコア142は、加法、減法、乗法、積算及び加算、内積、絶対値、相反、比較、飽和などの算術演算を実行する。ALUコア142は、1つ以上のスカラーALU、及び/又は、1つ以上のベクトルALUで構成される。スカラーALUは、一度に1つのコンポーネント上で動作できる。ベクトルALUは、一度に複数の(例えば、4つの)コンポーネント上で動作できる。初等関数コア144は、グラフィック・アプリケーションで広く利用される、正弦、余弦、逆数、対数、指数関数、平方根、平方根の逆数などの超越初等関数を計算する。初等関数コア144は、簡単な命令を使用する初等関数の多項式近似を実行するために必要な時間より非常に少なく初等関数を計算することによって性能を改善する。初等関数コア144は、1つ以上の初等関数装置を含む。各初等関数装置は、一度に1つのコンポーネントに関する初等関数を計算する。
論理コア146は、論理演算(例えば、AND、OR、XORなど)、ビット演算(例えば、左シフトと右シフト)、整数演算、比較、データバッファ管理演算(例えば、格納(push)、取り出し(pop)など)、及び/又は、他の演算を実行する。更に、論理コア146は、フォーマット変換(format conversion)、例えば、整数から浮動小数点数に変換すること及びこの逆の変換も実行する。テクスチャ・サンプラ148は、テクスチャ・エンジン180に関する前処理を実行する。例えば、テクスチャ・サンプラ148はテクスチャ座標を読み込み、コード、及び/又は、他の情報を添付し、テクスチャ・エンジン180にその出力を送信する。更に、テクスチャ・サンプラ148は、テクスチャ・エンジン180に命令を与え、テクスチャ・エンジンからの結果を受信する。
図1に示された設計において、構成可能な記憶リソース150は、コンテキスト・レジスタ152、命令キャッシュ154、レジスタ・バンク156及び定数バッファ158を含む。一般に、構成可能な記憶リソース150は、任意の数の記憶装置及び任意のタイプの記憶装置を含む。コンテキスト・レジスタ152は、N個のアプリケーションからスレッドに関する状態情報、又はコンテキストを蓄積する。命令キャッシュ154は、スレッドに関する命令を蓄積する。これらの命令は、各スレッドで行なうための特有の演算を指し示す。各演算は、算術演算、初等関数、論理演算、メモリ・アクセス演算などである。命令キャッシュ154は、必要に応じてロード制御装置を経由し、キャッシュ・メモリ190及び/またはメイン・メモリ(図1に図示されていない)から命令をロードする。レジスタ・バンク156は、処理装置から中間及び最終結果もアプリケーションに関するデータも格納する。定数バッファ158は、論理装置140(例えば、ALUコア142及び論理コア146)によって使用される定数(例えば、スケール・ファクタ及びフィルタの重みなど)を蓄積する。
ロード制御装置170は、N個のアプリケーションに関する命令、データ及び定数を読み込むことを制御する。ロード制御装置170は、キャッシュ・メモリ190とインターフェースで結合し、命令キャッシュ154、レジスタ・バンク156及びコンスタント・バッファ158にキャッシュ・メモリからの定数、データ、及び命令をロードする。更に、ロード制御装置170は、キャッシュ・メモリ190にレジスタ・バンク156のデータと結果を書き込む。アウトプット・インターフェース装置124は、実行されたスレッドに関する最終結果をレジスタ・バンク156から受信し、アプリケーションにこれらの結果を供給する。インプット・インターフェース装置122及びアウトプット・インターフェース装置124は、N個のアプリケーションに関連した外部装置(例えば、カメラ、ディスプレイ装置など)に非同期のインターフェースを供給する。
図1は、マルチメディア・プロセッサ120の設計の一例を示している。一般的に、マルチメディア・プロセッサ120は、割り当て可能な処理装置の任意のセット及び構成可能な記憶リソースの任意のセットを含む。構成可能な記憶リソースは、アプリケーションに関する命令、データ、状態情報などを格納する。処理装置は、アプリケーションに関する任意のタイプの処理を実行する。たとえコントローラ132及びロード制御装置170が装置140内に含まれていなくても、フロー・コントローラ132及びロード制御装置170も指定可能な処理装置としてみなしてもよい。更に、マルチメディア・プロセッサ120は、図1で図示されていない他の処理装置、記憶装置及び制御装置を含んでもよい。マルチメディア・プロセッサ120は、各アプリケーションに構成可能な記憶リソースの一部を割り当て、これらのアプリケーションによって要求されたとき、アプリケーションに処理装置を動的に割り当てる。
マルチメディア・プロセッサ120は、オープン・グラフィックス・ライブラリー(OpenGL)、ダイレクト3D(Direct3D)、オープン・ベクター・グラフィックス(OpenVG)などの1つ以上のグラフィックス・アプリケーション・プログラム・インターフェイス(API)を実行する。これら様々なグラフィックスAPIsは当技術分野で周知である。更に、マルチメディア・プロセッサ120は、2Dグラフィックス、3Dグラフィックス、あるいは両方をサポートする。
図2は、図1のマルチメディア・プロセッサ120の設計のブロック図を示している。この設計において、スレッド・スケジューラ130は、割り当て可能な処理装置140内のALUコア142、初等関数コア144、論理コア146及びテクスチャ・サンプラ148とインターフェースで接続される。更に、スレッド・スケジューラ130は、インプット・インターフェース装置122、フロー・コントローラ132、マスター・コントローラ134、コンテキスト・レジスタ152、命令キャッシュ154及びロード制御装置170とインターフェースで接続される。レジスタ・バンク156は、ロード制御装置170、アウトプット・インターフェース装置124及び割り当て可能な処理装置140内のALUコア142、初等関数コア144、論理コア146及びテクスチャ・サンプラ148とインターフェースで接続される。更に、ロード制御装置170は、命令キャッシュ154、定数バッファ158及びキャッシュ・メモリ190とインターフェースで接続される。また、マルチメディア・プロセッサ120内の様々な装置は、他の方法で別の装置とインターフェースで接続されても良い。
メイン・メモリ192は、システム100の一部であってもよく、システム100の外部にあってもよい。メイン・メモリ192は、マルチメディア・プロセッサ120からより離れて(例えば、オフ−チップ)配置された大きく、より遅いメモリである。メイン・メモリ192は、マルチメディア・プロセッサ120によって実行されたN個のアプリケーションに関する全ての命令及びデータを格納する。メイン・メモリ192内の命令及びデータは、必要になった時及び必要に応じてキャッシュ・メモリ190にロードされる。
マルチメディア・プロセッサ120は、実行された各アプリケーションに独立した仮想プロセッサとして見えるように設計され、処理される。各アプリケーションは、命令、データ、定数及び状態情報に対して十分な記憶リソースを割り当てられる。各アプリケーションは、マルチメディア・プロセッサ120によって維持される、個々の状態(例えば、プログラム・カウンタ、データ形式など)を有している。更に、各アプリケーションは、そのアプリケーションに対して実行された命令に基づいて処理装置を割り当てられる。N個のアプリケーションは、別のアプリケーションと干渉せず、他のアプリケーションを認識していなくても同時に実行してもよい。マルチメディア・プロセッサ120は、アプリケーションの要求、及び/又は、別の要因(例えば、優先事項)に基づいて各アプリケーションに対する性能目標(performance target)を調節する。
図3は、N個のアプリケーションに記憶リソースを割り当てる一例を示している。各アプリケーションは、コンテキスト・レジスタ152の一部、命令キャッシュ154の一部、レジスタ・バンク156の一部及びコンスタント・バッファ158の一部が割り当てられる。各記憶装置について、与えられたアプリケーションに割り当てられた一部分は、そのアプリケーションの記憶の要求に依存して0、又は非0となる。
コンテキスト・レジスタ152は、以下で記載される様に、N個のアプリケーションから動的にスレッドを割り当て、スレッドに関する様々なタイプの情報を格納する。コンテキスト・レジスタ152は、スレッドが受理され、実行され、終了する時、更新される。命令キャッシュ154及びレジスタ・バンク156は、実行開始時に、例えば、アプリケーションの要求に基づいて、各アプリケーションに割り当てられる。各アプリケーションについて、命令キャッシュ154及び/またはレジスタ・バンク156に割り当てられた一部分は、その要求及び他の要因に基づいてアプリケーションの実行の間に変化してもよい。定数バッファ158は、任意のアプリケーションに対して使用される定数を格納する。与えられたアプリケーションに対する定数は、必要な時に定数バッファ158にロードされ、その時、すべてのアプリケーションで利用可能になる。
記憶装置は、以下で記載されるように、アプリケーションに記憶リソースの柔軟な割り当てをサポートするために設計されてもよい。更に、記憶装置は、以下で記載されるように、アプリケーションによって簡単にメモリ・アクセスするために設計されてもよい。
図4は、N個のアプリケーションに処理装置を割り当てる一例が示されている。別々のスケジュール(timeline)が、ALUコア142、初等関数コア144、論理コア146、テクスチャ・サンプラ148、フロー・コントローラ132及びロード制御装置170などの各処理装置で保持される。各処理装置に対するスケジュールは、タイム・スロットに仕切られる。タイム・スロットは、アプリケーションに割り当てられ、1周期以上のクロック周期に一致する最も小さな時間の単位である。処理装置は、同じ、又は、異なる持続時間のタイム・スロットを有する。
ALUコア142に関するタイム・スロットは、任意のアプリケーションに割り当てられる。図4に示される例において、ALUコア142は、タイム・スロットt及びt+1でアプリケーション1(app 1)に割り当てられ、タイム・スロットt+2でアプリケーション3に割り当てられ、タイム・スロットt+3でアプリケーションNに割り当てられるなどとなっている。同様に、初等関数コア144、論理コア146、テクスチャ・サンプラ148、フロー・コントローラ132及びロード制御装置170に対するタイム・スロットは、任意のアプリケーションに割り当てられる。マルチメディア・プロセッサ120は、これらのアプリケーションの処理要求に基づいてアプリケーションにオン−デマンドで処理装置を動的に割り当てる。
図5は、N個のアプリケーション各々に対する仮想プロセッサを示している。各アプリケーションは、そのアプリケーションによって利用される処理装置のすべてを有する仮想プロセッサを観察する。各アプリケーションは、そのアプリケーションの処理要求に基づいて処理装置を割り当てられる。更に、指定された処理装置は、そのアプリケーションに関するスケジュールで示される。図5に示された例において、アプリケーション1は、タイム・スロットt及びt+1でALUコア142を割り当てられ、その後、タイム・スロットt+2で論理コア144を、その後、タイム・スロットt+3でロード制御装置170を、その後、タイム・スロットt+4でALUコア142を、その後、タイム・スロットt+5でロード制御装置170を、その後、タイム・スロットt+6で論理コア144を割り当てられるなどである。アプリケーション1は、図5で示されるタイム・スロットの期間で初等関数コア144、テクスチャ・サンプラ148及びフロー・コントローラ132を使用せず、割り当てられない。アプリケーション2からNは、異なる順序で処理装置を割り当てられる。
図5で示されるように、各アプリケーションは、マルチメディア・プロセッサ120内の適切な処理装置を割り当てられる。各アプリケーションに割り当てられる特定の処理装置は、処理要求に依存して時間的に変化しても良い。各アプリケーションは、他のアプリケーションを認識している必要もないし、他のアプリケーションへの処理装置の割り当てを知る必要もない。
マルチメディア・プロセッサ120は、命令の並列実行を実現するためにマルチ−スレッディングをサポートし、全体の効率を改善する。マルチ−スレッディングは、異なる処理装置によって並列に多数のスレッドを実行するために参照する。スレッド・スケジューラ130は、N個のアプリケーションからスレッドを受け入れ、どのスレッドが実行の準備が出来ているか決定し、異なる処理装置にこれらのスレッドを送り出す。スレッド・スケジューラ130は、処理装置のスレッド及び利用の実行を管理する。
図6は、図1及び図2のスレッド・スケジューラ130の設計のブロック図を示している。この設計において、スレッド・スケジューラ130は、中央スレッド・スケジューラ610、ハイ−レベル・デコーダ612、リソース使用量モニター装置614、アクティブ・キュー(active queue)620及びスリープ・キュー(sleep queue)622を含む。コンテキスト・レジスタ152は、T個のスレッドに対するT個のコンテキスト・レジスタ630aから630tを含む。ここで、Tは、任意の値である。
中央スレッド・スケジューラ610は、リクエスト(Req)及び許可(grant)インターフェースを介して処理装置132、142、144、146、148及び170、及びコンテキスト・レジスタ630aから630tと通信する。スケジューラ610は、命令キャッシュ154への要求を発行し、レスポンス内でヒット/ミス(Hit/Miss)の命令を受信する。一般的に、これらの装置間の通信は、制御信号、一時停止、メッセージ、レジスタなどの様々な機構で成し遂げられる。
中央スレッド・スケジューラ610は、スレッドをスケジュールするために様々な関数を実行する。中央スレッド・スケジューラ610は、N個のアプリケーションから新規のスレッドを受け入れるか、実行用のスレッドを送出するか及び終了したスレッドを開放/削除(release/remove)するかどうか決定する。各スレッドに関して、中央スレッド・スケジューラ610は、そのスレッドによって要求されるリソース(例えば、命令、処理装置、レジスタ・バンクなど)が利用可能か判断する。もし、要求されたリソースが利用可能であれば、スレッドを起動してそれをアクティブ・キュー620に配置し、もし、どのスレッドも利用可能でない場合、スリープ・キュー622にスレッドを配置する。アクティブ・キュー620は、実行準備が出来たスレッドを格納し、スリープ・キュー622は、実行準備の出来ていないスレッドを格納する。
更に、中央スレッド・スケジューラ610は、スレッドの実行も管理する。各スケジューリング間隔(例えば、各タイム・スロット)において、中央スレッド・スケジューラ610は、評価及び可能な処理に対するアクティブ・キュー620内の候補スレッドの数を選択する。中央スレッド・スケジューラ610は、候補スレッドに対して利用する処理装置を決定し、記憶装置の読み込み/書き込み衝突をチェックし、そして、実行のために異なる処理装置に異なるスレッドを送り出す。マルチメディア・プロセッサ120は、M個のスレッドの実行を同時に実行することをサポートする。ここで、Mは、適切な値(例えば、M = 12)である。一般的に、Mは、処理装置が可能な限り使用するように、記憶リソース(例えば、命令キャッシュ154及びレジスタ・バンク156)のサイズ、ロード処理に対する呼出し時間又は遅延時間、処理装置のパイプライン、及び/又は、他の要因のサイズに基づいて選択される。
中央スレッド・スケジューラ610は、状態(status)を更新し、適切なスレッドの状態に更新する。もし、(a)スレッドに対する次の命令が命令キャッシュ154で見つからない場合、(b)次の命令が以前の命令からの結果待ちの場合、もしくは(c)幾つかの他のスリープ条件が満たされた場合、中央スレッド・スケジューラ610は、スリープ・キュー622にスレッドを配置する。スリープ条件が正しくない場合、中央スレッド・スケジューラ610は、スリープ・キュー622からアクティブ・キュー620にスレッドを移動する。
中央スレッド・スケジューラ610は、各スレッドに対するプログラム・カウンタを保持し、命令が実行される、又はプログラム・フローが変更された時、プログラム・カウンタを更新する。スケジューラ610は、スレッドに対してプログラム・フローを制御するためにフロー・コントローラ132から補助を求める。
フロー・コントローラ132は、if/else命令文、ループ、呼出しサブルーチン、ブランチ、スイッチ命令、画素落ち、及び/又は、命令を変更する他のフローを取り扱う。フロー・コントローラ132は、そのような各命令に対して一つ以上の条件を評価し、(複数の)条件に合致する場合はプログラム・カウンタの一方向の変化を示し、(複数の)条件に合致しない場合はプログラム・カウンタの別方向の変化を示す。更に、フロー・コントローラ132は、動的なプログラム・フローと関係する他の関数も実行する。中央スレッド・スケジューラ610は、フロー・コントローラ132による結果に基づいてプログラム・カウンタを更新する。
更に、中央スレッド・スケジューラ610は、コンテキスト・レジスタ152を管理し、スレッドが受理され、実行され、完了したときこれらのレジスタを更新する。コンテキスト・レジスタ152は、スレッドに対する様々なタイプの情報を格納する。例えば、スレッドに対するコンテキスト・レジスタ630は、(1)スレッドが属するアプリケーションに関するアプリケーション/プログラム識別子(ID)、(2)スレッド関する現在の命令を示すプログラム・カウンタ、(3)スレッドに関する有効及び無効なピクセルを指し示すカバレッジ・マスク、(4)命令を変更するフローの場合に処理するためのピクセルを指し示すアクティブ・フラッグ、(5)ピクセルが不活性で、再び活性化する場合を指し示すレジューム・命令ポインタ、(6)ダイナミック・フロー・コントロールに関する復帰命令ポインタを格納するためのスタック、(7)相対的なアドレス指定に関するアドレス・レジスタ、(8)状態の計算結果を格納する述語レジスタ(predicate registers)、(9)ロード要求及びデータバック条件を追跡するロード参照カウンタ、及び/又は、(10)他の情報を蓄積する。コンテキスト・レジスタ152は、少ない、多い、又は異なる情報も格納できる。
マルチメディア・プロセッサ120は、様々なマルチメディア・アプリケーションに対する包括的な命令のセットをサポートする。この命令のセットは、演算、初等関数、論理的、ビットに関するもの(bitwise)、フロー制御及び他の命令を含む。
命令の2つのレベルでの復号が性能を改善するために実行される。ハイ・レベルの復号器612は、命令のタイプ、オペランド・タイプ(operand type)、転送元(source)及び転送先(destination)識別子(IDs)、及び/又は、スケジューリングに利用される他の情報を決定するために命令のハイ・レベルでの復号を実行する。各処理装置は、その処理装置に関する命令の低レベルでの復号を実行する別々の命令デコーダを含む。例えば、ALUコア142に関する命令デコーダは、ALU−関連の命令のみを取り扱い、初等関数コア144に関する命令デコーダは、初等関数に関する命令のみを取り扱うなどである。2つのレベルでの復号は、処理装置に関する命令デコーダと同様に中央スレッド・スケジューラ610の設計を簡単にする。
リソース使用量モニター装置614は、例えば各処理装置が割り当てられる時間の割合(percentage)を追跡し続けることによって、処理装置の使用量をモニターする。モニター装置614は、適切な性能を供給している間、電池電力を節約するために処理装置の処理を調節する。例えば、モニター装置614は、電力消費量を削減するために、マルチメディア・プロセッサの負荷に基づいてマルチメディア・プロセッサ120のクロック速度を調節する。更に、モニター装置614は、その処理装置の負荷、又は利用の割合に基づいて個々の処理装置のクロック速度も調節する。モニター装置614は、最大限の負荷(full loading)に対して最も速いクロック速度を選択し、次第に遅い負荷(less loading)に対して次第により遅い速度のクロックを選択する。更に、モニター装置614は、どのアプリケーションにも割り当てられない任意の処理装置を一時停止し/電力を下げ、いずれかのアプリケーションに割り当てられた時、その処理装置を使用可能にし/電力を上げる。
各スレッドは、パケットベースであり、あらかじめ決められたサイズまでのデータ単位で処理する。データの単位のサイズは、処理装置及び記憶装置の設計、処理されているデータの特性などに基づいて選択される。1つの設計において、各スレッドは、イメージの中の4つまでのピクセル、又は4つまでの頂点を処理する。レジスタ・バンク156は、4つのレジスタ・バンクを含む。そのレジスタ・バンクは、(a)ピクセルに対して各特性の4つまでのコンポーネント、つまり、レジスタ・バンク毎に1つのコンポーネントを蓄積する、又は、(b)ピクセルに対する特性のコンポーネント、つまり、レジスタ・バンク毎に一つのピクセルを蓄積する。ALUコア142は、一度に4つまでのコンポーネント上で作動することができる4つのスカラーALUあるいは1つのベクトルALUを含む。
記憶装置(例えば、命令キャッシュ154又は、レジスタ・バンク156)は、アプリケーションに記憶リソースの効率的な割り当てを許可する仮想メモリ・アーキテクチャで実施され、アプリケーションによって割り当てられた記憶リソースを簡単に呼び出す。仮想メモリ・アーキテクチャは、仮想メモリと物理メモリを利用する。
アプリケーションは、仮想メモリの区画を割り当て、仮想アドレススペースを経由してメモリ・アクセスを行なう。仮想メモリの異なる区画は、命令、及び/又は、データを蓄積する物理メモリの異なった区画に割り振られる。
図7は、仮想メモリ・アーキテクチャと記憶装置700の設計を示す。記憶装置700は、命令キャッシュ154、レジスタ・バンク156などに対して使用される。この設計において、記憶装置700は、アプリケーションに仮想メモリ710として見られる。仮想メモリ710は、1からSの論理タイルとして参照される、複数(例えば、S個)の論理タイル、又は区分に仕切られる。一般的に、Sは、N以上の任意の整数である。Sは、同じサイズ、又は異なるサイズを持っている。各アプリケーションは、アプリケーションのメモリ使用量及び利用可能なタイルに基づいて任意の数の連続した論理タイルを割り当てられる。図7に示される例において、アプリケーション1は、論理タイル1および2を割り当てられ、アプリケーション2は、論理タイル3から6を割り当てられるなどである。
記憶装置700は、アプリケーションに関する命令、及び/又は、データを格納する物理メモリ720を実装する。物理メモリ720は、1からSまでのS個の物理タイルを含む。仮想メモリ710の各論理タイルは、物理メモリ720の1枚の物理タイルにマッピングされる。いくつかの論理タイルに対するマッピングの例は、図7に示される。この例において、物理タイル1は、論理タイル2に対する命令、及び/又は、データを蓄積し、物理タイル2は、論理タイルS-1に対する命令、及び/又は、データを蓄積する等である。
論理タイル及び物理タイルの使用は、アプリケーションに対するタイルの割り当て及びタイルの管理を簡単にする。アプリケーションは、命令及びデータに対するある量の記憶リソースを要求する。マルチメディア・プロセッサ120は、命令キャッシュ154内の1つ以上のタイル及びレジスタ・バンク156内の1つ以上のタイルをアプリケーションに割り当てる。アプリケーションは、必要に応じて、追加の論理タイル、より少ない論理タイル、又は異なる論理タイルを割り当てられてもよい。
図8は、図7の論理タイル参照用テーブル(look up table)(LUT)810の設計及び記憶装置700に対する物理アドレス参照テーブル820を示す。この設計において、論理タイル参照テーブル810は、N個のアプリケーションに対してN個のエントリー、つまり、各アプリケーションに対して1つのエントリーを含む。N個のエントリーは、アプリケーションIDによってインデックスを付けられる。各アプリケーションに対するエントリーは、アプリケーションに割り付けられた最初の論理タイルに対するフィールド及びアプリケーションに割り付けられた論理タイルの数に対する別のフィールドを含む。図8に示される例において、アプリケーション1は、論理タイル1から始まって2枚の論理タイルが割り当てられ、アプリケーション2は、論理タイル3から始まって4枚の論理タイルが割り当てられ、アプリケーション3は、論理タイル7から始まって8枚の論理タイルが割り当てられているなどが示されている。各アプリケーションは、メモリ・アクセスのためのアドレスの生成を単純化するために連続する論理タイルを割り当てられても良い。しかしながら、アプリケーションは、例えば、論理タイル1が任意のアプリケーションに割り当てられるように任意の順序で論理タイルを割り当てられても良い。
図8に示される設計において、物理アドレス参照テーブル820は、S個の論理タイルに対してS個のエントリーつまり、各論理タイルに対して1つのエントリーを含む。テーブル820のS個のエントリーは、論理タイル・アドレスによってインデックスを付けられる。各論理タイルに対するエントリーは、その論理タイルがマッピングされた物理タイルを指す。図7及び図8に示される例において、論理タイル1は、物理タイル4にマッピングされ、論理タイル2は物理タイル1にマッピングされ、論理タイル3は物理タイルiにマッピングされ、論理タイル4は物理タイルS-2にマッピングされるなどである。アプリケーションが追加の論理タイル、より少ない論理タイル、及び/又は、異なる論理タイルを割り当てられるたびに、参照テーブル810及び820は更新される。アプリケーションは、物理タイル間で実際に命令又はデータを転送する必要なく、単に参照テーブルを更新することによって異なる量の記憶リソースが割り当てられる。
従って、記憶装置は、仮想記憶及び物理メモリと関連付けられる。各アプリケーションは、設置可能な仮想メモリの一部分を当てられる。少なくとも1つのテーブルは、物理メモリの対応する一部分に各アプリケーションに割り当てられた仮想メモリの一部分をマッピングするために使用される。
各アプリケーションは、一般的に、そのアプリケーションに対する命令及びデータをそれぞれ格納するために命令キャッシュ154及びレジスタ・バンク156内の記憶リソースの有限の量を割り当てられる。キャッシュ・メモリ190は、アプリケーションのための追加の命令及びデータを格納する。アプリケーションに対する命令が命令キャッシュ154において利用可能でない時はいつでも、キャッシュ・ミスがスレッド・スケジューラ130に返される。その時、スレッド・スケジューラ130は、ロード制御装置170にロードするための命令要求を発行する。同様に、アプリケーションに対するデータがレジスタ・バンク156において利用可能でない、又は、記憶装置がデータでオーバーフローする時はいつでも、データ要求は、ロード制御装置170に発行される。
ロード制御装置170は、スレッド・スケジューラ130から命令要求を受信し、他の装置からデータ要求を受信する。ロード制御装置170は、(a)キャッシュ・メモリ190、又はメイン・メモリ192から要求された命令、及び/又は、データをロードするために、及び/又は、(b)キャッシュ・メモリ190、又はメイン・メモリ192にデータを書き込むために、これらの様々な要求を仲裁し、メモリ要求を生成する。
マルチメディア・プロセッサ120内の記憶装置は、アプリケーションで現在使用される命令及びデータの小さい一部を格納する。キャッシュ・メモリ190は、アプリケーションで使用されるであろう命令及びデータのより大きな部分を格納する。マルチメディア・プロセッサ120は、キャッシュ・メモリ190を経由して無制限の命令及びデータ・アクセスをサポートする。この性能(capability)は、マルチメディア・プロセッサ120が任意のサイズのアプリケーションをサポートすることを許容する。更に、マルチメディア・プロセッサ120は、キャッシュ・メモリ190とメイン・メモリ192との間の総称的なメモリ・ロード及びテクスチャ・ロードをサポートする。
図9は、マルチメディア・アプリケーションをサポートする過程900を示している。複数のアプリケーションは、例えば、マルチメディア・プロセッサによって同時にサポートされる(ブロック912)。設置可能な記憶リソースの一部分は、アプリケーションに関する命令、データ及び状態情報を格納するために各アプリケーションに割り当てられる(ブロック914)。ブロック914において、各アプリケーションは、アプリケーションに対する命令を格納するため設置可能な命令キャッシュの一部を割り当て、アプリケーションに対するデータを格納するため設置可能なレジスタ・バンクの一部を割り当て、アプリケーションに対する状態情報を格納するため一つ以上のコンテキスト・レジスタを割り当てるなどである。処理装置は、これらのアプリケーションによって要求されたとき、アプリケーションに動的に割り当てられる(ブロック916)。スレッドは、アプリケーションから非同期に受信され、実行するために予定される(ブロック918)。スレッドの実行結果は、アプリケーションに非同期に提供される(ブロック920)。
ここに記述されたマルチメディア・プロセッサは、無線通信デバイス、携帯型デバイス、ゲーム・デバイス、コンピューティング・デバイス、民生用電子機器デバイス、コンピュータなどに使用される。無線通信デバイスのためのマルチメディア・プロセッサの典型的な使用は、以下に記載される。
図10は、無線通信システム内における無線通信デバイス1000の設計のブロック図を示している。無線デバイス1000は、携帯電話、端末装置(terminal)、送受話器、携帯情報端末(PDA)、又は他のデバイスである。無線通信システムは、符号分割多元接続(CDMA)システム、グローバル移動体通信システム(GSM)システム、又は他のシステムである。
無線デバイス1000は、受信経路及び送信経路を経由して双方向通信を供給することが可能である。受信経路上において、基地局によって送信された信号は、アンテナ1012によって受信され、受信機(RCVR)1014に供給される。受信機1014は、受信信号を調整し、デジタル化し、更に処理するためにデジタル・セクション1020にサンプルを供給する。送信経路において、トランスミッタ(TMTR)1016は、デジタル・セクション1020から送信されるデータを受信し、データを処理・調整し、基地局にアンテナ1012を経由して送信される変調された信号を生成する。
デジタル・セクション1020は、例えば、モデム・プロセッサ1022、デジタル信号プロセッサ(DSP)1024、ビデオ/オーディオ・プロセッサ1026、コントローラ/プロセッサ1028、ディスプレイ・プロセッサ1030、中央処理装置(CPU)/縮小命令セット・コンピュータ(RISC)1032、マルチメディア・プロセッサ1034、カメラ・プロセッサ1036、内部メモリ/キャッシュ・メモリ1038および外部バス・インターフェース(EBI)1040のような様々な処理装置、インターフェース装置及び記憶素子を含む。モデム・プロセッサ1022は、データ送信及び受信(例えば、符号化、変調、復調及び復号)に関する処理を実行する。DSP1024は、無線デバイス1000に関する専門的な処理を実行する。ビデオ/オーディオ・プロセッサ1026は、カムコーダー、ビデオ・アシスト(video playback)及びビデオ会議のようなビデオ・アプリケーションに対するビデオの内容(例えば、静止画、動画及び動テキストで処理を実行する。更に、ビデオ/オーディオ・プロセッサ1026は、オーディオ・アプリケーションのためにオーディオの内容(例えば、合成されたオーディオ)に関する処理も実行する。コントローラ/プロセッサ1028は、デジタル・セクション1020内で様々な装置の演算を指示する。ディスプレイ・プロセッサ1030は、表示装置1050上のビデオ、グラフィックス及びテキストのディスプレイを用意にするための処理を実行する。CPU/RISC1032は、無線デバイス1000に関する汎用的な処理を実行する。マルチメディア・プロセッサ1034は、マルチメディア・アプリケーションに関する処理を実行し、上記の図1から図8のように具体化される。カメラ・プロセッサ1036は、カメラ(図10で省略されている)に関する処理を実行する。内部メモリ/キャッシュ・メモリ1038は、デジタル・セクション1020内で様々な装置に関するデータ及び/命令を格納し、図1及び図2のキャッシュ・メモリ190を実装する。EBI1040は、デジタル・セクション1020(例えば、内部メモリ/キャッシュ・メモリ1038)とメイン・メモリ1060間のデータの転送を容易にする。マルチメディア・アプリケーションは、デジタル・セクション1020の任意のプロセッ
サに対して実行される。
デジタル・セクション1020は、1つ以上のプロセッサ、マイクロプロセッサ、DSPs、RISCsなどで実行される。更に、デジタル・セクション1020は、1つ以上の特定用途向けIC(ASIC)及び/または、幾つかの他のタイプの集積回路(IC)で製作もされる。
ここに記載されたマルチメディア・プロセッサは、様々なハードウェア・デバイス内で実行される。例えば、マルチメディア・プロセッサは、ASICs、DSPs、デジタル信号処理デバイス(DSPD)、プログラム可能な論理回路(programmable logic devices) (PLDs)、フィールドプログラム可能なゲート・アレイ(field programmable gate arrys) (FPGAs)、プロセッサ、コントローラ、マイクロ・コントローラ、マイクロプロセッサ、電子デバイス及び他の電子装置内で実行されるマルチメディア・プロセッサは、統合メモリ/埋め込みメモリを含んでも良いし、含まなくてもよい。
ここに記述されたマルチメディア・プロセッサを実行する装置は、独立型の装置でも良いし、あるデバイスの一部であってもよい。デバイスは、(i)独立型のIC、(ii)蓄積されたデータ、及び/又は、命令に対するメモリICsを含む一つ以上のICsのセット、(iii)移動局モデム(MSM)のようなASIC、(iv)他のデバイス内に埋め込まれたモジュール、(v)携帯電話、無線デバイス、送受話器又は移動装置(vi)その他である。
本開示の以上の記載は、任意の当業者が本開示を製造し、使用することを可能にするために提供される。本開示に対する様々な修正は、それらの当業者には容易に明らかであり、ここで定義された総称的な原理は、開示の精神又は範囲から外れることなく他の様々なものに適用されても良い。従って、本開示は、ここで記載された例に限る意図は無く、ここに開示された新規な特徴や原理と一致する最も広い範囲が与えられるべきである。

Claims (30)

  1. 複数のマルチメディア・アプリケーションを同時にサポートするためのマルチメディア・プロセッサを含むデバイスであって、前記マルチメディア・プロセッサは、
    前記複数のマルチメディア・アプリケーションに関する命令、データ、状態情報を蓄積するための構成可能な記憶リソースと、
    前記複数のマルチメディア・アプリケーションに関する処理を実行するための割り当て可能な処理装置と、
    を具備し、
    前記マルチメディア・プロセッサは、各マルチメディア・アプリケーションに前記記憶リソースの構成可能な一部分を割り当て、前記マルチメディア・アプリケーションによって要求された際、前記複数のアプリケーションに前記処理装置を動的に割り当て、前記割り当て可能な処理装置は、前記複数のマルチメディア・アプリケーションのために異なるタイプの処理を実行する異なる処理装置を有し、前記割り当て可能な処理装置は、少なくとも1つの算術論理演算装置(ALU)コア、少なくとも1つの初等関数コア、少なくとも1つの論理コア、および少なくとも1つのテクスチャ・サンプラを備え、
    前記構成可能な記憶リソースは、前記複数のマルチメディア・アプリケーションに関する命令を格納するための命令キャッシュを有し、
    各マルチメディア・アプリケーションは、前記命令キャッシュの構成可能な一部分を割り当てられることを特徴とするデバイス。
  2. 複数のマルチメディア・アプリケーションを同時にサポートするためのマルチメディア・プロセッサを含むデバイスであって、前記マルチメディア・プロセッサは、
    前記複数のマルチメディア・アプリケーションに関する命令、データ、状態情報を蓄積するための構成可能な記憶リソースと、
    前記複数のマルチメディア・アプリケーションに関する処理を実行するための割り当て可能な処理装置と、
    を具備し、
    前記マルチメディア・プロセッサは、各マルチメディア・アプリケーションに前記記憶リソースの構成可能な一部分を割り当て、前記マルチメディア・アプリケーションによって要求された際、前記複数のアプリケーションに前記処理装置を動的に割り当て、前記割り当て可能な処理装置は、前記複数のマルチメディア・アプリケーションのために異なるタイプの処理を実行する異なる処理装置を有し、前記割り当て可能な処理装置は、少なくとも1つの算術論理演算装置(ALU)コア、少なくとも1つの初等関数コア、少なくとも1つの論理コア、および少なくとも1つのテクスチャ・サンプラを備えることを特徴とするデバイス。
  3. 前記構成可能な記憶リソースは、前記複数のマルチメディア・アプリケーションに関するデータを格納するためのレジスタ・バンクを有し、
    各マルチメディア・アプリケーションは、前記レジスタ・バンクの構成可能な一部分に割り当てられることを特徴とする請求項1または2に記載のデバイス。
  4. 前記構成可能な記憶リソースは、
    前記複数のマルチメディア・アプリケーションに関する命令、又はデータを格納するための記憶装置であって、仮想メモリ及び物理メモリと関連付けられる記憶装置と、なお、各マルチメディア・アプリケーションは、前記仮想メモリの構成可能な一部分を割り当てられる、
    各マルチメディア・アプリケーションに対して割り当てられた前記仮想メモリの一部分を前記物理メモリの対応した一部分にマッピングするための少なくとも1つのテーブルと、
    を有することを特徴とする請求項1または2に記載のデバイス。
  5. 前記マルチメディア・プロセッサは、前記マルチメディア・アプリケーションに割り当てられた前記記憶リソースの一部分内の記憶に関するキャッシュ・メモリ、又はメイン・メモリから、要求された際に、各マルチメディア・アプリケーションに関する命令及びデータを取り出すためのロード制御装置を更に具備することを特徴とする請求項1または2に記載のデバイス。
  6. 前記処理装置は、独立に動作し、各処理装置は、与えられたタイム・スロット内で前記複数のマルチメディア・アプリケーションの任意の一つに対して割り当て可能であることを特徴とする請求項1または2に記載のデバイス。
  7. 前記マルチメディア・プロセッサは、前記複数のマルチメディア・アプリケーションの任意の一つに割り当てられなかった処理装置の電力を落とすことを特徴とする請求項1または2に記載のデバイス。
  8. 前記マルチメディア・プロセッサは、前記複数のマルチメディア・アプリケーションからスレッドを非同期に受信するためのインプット・インターフェース装置と、
    前記複数のマルチメディア・アプリケーションに結果を非同期に供給するためのアウトプット・インターフェース装置と、
    を更に具備することを特徴とする請求項1または2に記載のデバイス。
  9. 前記マルチメディア・プロセッサは、電力消費を削減するために前記マルチメディア・プロセッサの負荷に基づいてクロックの速度を調節することを特徴とする請求項1または2に記載のデバイス。
  10. 前記マルチメディア・プロセッサは、前記処理装置がある特定の時間間隔に割り当てられた時間の割合に基づいて負荷を決定することを特徴とする請求項に記載のデバイス。
  11. 前記マルチメディア・プロセッサは、前記複数のマルチメディア・アプリケーションに関する複数のスレッドを同時にサポートすることを特徴とする請求項1または2に記載のデバイス。
  12. 前記構成可能な記憶リソースは、前記複数のスレッドに関する複数のコンテキスト・レジスタを具備し、
    各コンテキスト・レジスタは、関連付けられたスレッドに関する状態情報を格納することを特徴とする請求項11に記載のデバイス。
  13. 各スレッドに関する前記状態情報は、プログラム・カウンタ、ダイナミック・フロー・コントロールに関するポインタを格納するためのスタック、関連したアドレス指定に関するアドレス・レジスタ、条件の計算結果を格納するための述語レジスタ及びロード要求及びデータバック条件を追跡するためのロード参照カウンタの少なくとも1つを有することを特徴とする請求項12に記載のデバイス。
  14. 各スレッドは、前もって決められたサイズまでのデータ単位で処理することを特徴とする請求項11に記載のデバイス。
  15. 各スレッドはイメージ内の4つのピクセルまで、又は4つの頂点までで処理することを特徴とする請求項11に記載のデバイス。
  16. 前記マルチメディア・プロセッサは、前記複数のマルチメディア・アプリケーションに適用可能な単一の命令セットをサポートすることを特徴とする請求項1または2に記載のデバイス。
  17. 前記複数のマルチメディア・アプリケーションは、グラフィックス・アプリケーション、オーディオ・アプリケーション、ビデオ・アプリケーション、カメラ・アプリケーション、ゲーム・アプリケーションの少なくとも一つを有することを特徴とする請求項1または2に記載のデバイス。
  18. 複数のマルチメディア・アプリケーションを同時にサポートすることと、
    前記マルチメディア・アプリケーションに関する命令、データ及び状態情報を蓄積するため各マルチメディア・アプリケーションに記憶リソースの構成可能な一部を割り当てることと、
    前記マルチメディア・アプリケーションによって要求された際、前記複数のマルチメディア・アプリケーションに処理装置を動的に割り当てることと、
    を具備し、
    前記処理装置は、前記複数のマルチメディア・アプリケーションのために異なるタイプの処理を実行する異なる処理装置を有し、前記割り当て可能な処理装置は、少なくとも1つの算術論理演算装置(ALU)コア、少なくとも1つの初等関数コア、少なくとも1つの論理コア、および少なくとも1つのテクスチャ・サンプラを備え、
    前記記憶リソースの構成可能な一部を割り当てることは、前記マルチメディア・アプリケーションに関する命令を蓄積するために各マルチメディア・アプリケーションに命令キャッシュの構成可能な一部分を割り当てることを具備することを特徴とする方法。
  19. 複数のマルチメディア・アプリケーションを同時にサポートすることと、
    前記マルチメディア・アプリケーションに関する命令、データ及び状態情報を蓄積するため各マルチメディア・アプリケーションに記憶リソースの構成可能な一部を割り当てることと、
    前記マルチメディア・アプリケーションによって要求された際、前記複数のマルチメディア・アプリケーションに処理装置を動的に割り当てることと、
    を具備し、
    前記処理装置は、前記複数のマルチメディア・アプリケーションのために異なるタイプの処理を実行する異なる処理装置を有し、前記割り当て可能な処理装置は、少なくとも1つの算術論理演算装置(ALU)コア、少なくとも1つの初等関数コア、少なくとも1つの論理コア、および少なくとも1つのテクスチャ・サンプラを備えることを特徴とする方法。
  20. 前記記憶リソースの構成可能な一部を割り当てることは、前記マルチメディア・アプリケーションに関するデータを蓄積するために各マルチメディア・アプリケーションにレジスタ・バンクの構成可能な一部分を割り当てることを具備することを特徴とする請求項18または19に記載の方法。
  21. 前記複数のマルチメディア・アプリケーションからスレッドを非同期に受信することと、
    前記複数のマルチメディア・アプリケーションに非同期に結果を与えることと、
    を更に具備することを特徴とする請求項18または19に記載の方法。
  22. 複数のマルチメディア・アプリケーションを同時にサポートする手段と、
    前記マルチメディア・アプリケーションに関する情報、データ、状態情報を格納するために各マルチメディア・アプリケーションに記憶リソースの構成可能な一部分を割り当てる手段と、
    前記マルチメディア・アプリケーションによって要求された際、前記複数のマルチメディア・アプリケーションに処理装置を動的に割り当てる手段と、
    を具備し、
    前記処理装置は、前記複数のマルチメディア・アプリケーションのために異なるタイプの処理を実行する異なる処理装置を有し、前記割り当て可能な処理装置は、少なくとも1つの算術論理演算装置(ALU)コア、少なくとも1つの初等関数コア、少なくとも1つの論理コア、および少なくとも1つのテクスチャ・サンプラを備え、
    前記記憶リソースの構成可能な一部を割り当てるための前記手段は、前記マルチメディア・アプリケーションに関する命令を蓄積するために各マルチメディア・アプリケーションに命令キャッシュの構成可能な一部分を割り当てるための手段を具備することを特徴とする装置。
  23. 複数のマルチメディア・アプリケーションを同時にサポートする手段と、
    前記マルチメディア・アプリケーションに関する情報、データ、状態情報を格納するために各マルチメディア・アプリケーションに記憶リソースの構成可能な一部分を割り当てる手段と、
    前記マルチメディア・アプリケーションによって要求された際、前記複数のマルチメディア・アプリケーションに処理装置を動的に割り当てる手段と、
    を具備し、
    前記処理装置は、前記複数のマルチメディア・アプリケーションのために異なるタイプの処理を実行する異なる処理装置を有し、前記割り当て可能な処理装置は、少なくとも1つの算術論理演算装置(ALU)コア、少なくとも1つの初等関数コア、少なくとも1つの論理コア、および少なくとも1つのテクスチャ・サンプラを備えることを特徴とする装置。
  24. 前記記憶リソースの構成可能な一部を割り当てるための前記手段は、前記マルチメディア・アプリケーションに関するデータを蓄積するために各マルチメディア・アプリケーションにレジスタ・バンクの構成可能な一部分を割り当てるための手段を具備することを特徴とする請求項22または23に記載の装置。
  25. 前記複数のマルチメディア・アプリケーションから非同期にスレッドを受信する手段と、
    前記複数のマルチメディア・アプリケーションに非同期にスレッドを送信する手段と、
    を更に具備することを特徴とする請求項22または23に記載の装置。
  26. 複数のマルチメディア・アプリケーションを同時にサポートするためのマルチメディア・プロセッサを具備する無線装置であって、
    前記マルチメディア・プロセッサは、
    前記複数のマルチメディア・アプリケーションに関する命令、データ及び状態情報を格納するための構成可能な記憶リソースと、
    前記複数のマルチメディア・アプリケーションに関する処理を実行するための割り当て可能な処理装置と、なお、前記マルチメディア・プロセッサは、各マルチメディア・アプリケーションに前記記憶リソースの構成可能な一部分を割り当て、前記マルチメディア・アプリケーションによって要求された際、前記複数のマルチメディア・アプリケーションに前記処理装置を動的に割り当て、前記処理装置は、前記複数のマルチメディア・アプリケーションのために異なるタイプの処理を実行する異なる処理装置を有し、前記割り当て可能な処理装置は、少なくとも1つの算術論理演算装置(ALU)コア、少なくとも1つの初等関数コア、少なくとも1つの論理コア、および少なくとも1つのテクスチャ・サンプラを備える、
    前記記憶リソースに読み込むための命令とデータを格納するためのキャッシュ・メモリと、
    を具備することを特徴とする無線装置。
  27. 前記ALUコアは、算術論理演算を実行し、前記初等関数コアは、多項式近似を実行することなく超越初等関数計算し、前記論理コアは、論理演算、ビット演算、データバッファ管理演算を実行し、前記テクスチャ・コアは、テクスチャ・エンジンに関する前処理を実行することを特徴とする、請求項1または2に記載のデバイス。
  28. 前記ALUコアは、算術論理演算を実行し、前記初等関数コアは、多項式近似を実行することなく超越初等関数計算し、前記論理コアは、論理演算、ビット演算、データバッファ管理演算を実行し、前記テクスチャ・コアは、テクスチャ・エンジンに関する前処理を実行することを特徴とする、請求項18または19に記載の方法。
  29. 前記ALUコアは、算術論理演算を実行し、前記初等関数コアは、多項式近似を実行することなく超越初等関数計算し、前記論理コアは、論理演算、ビット演算、データバッファ管理演算を実行し、前記テクスチャ・コアは、テクスチャ・エンジンに関する前処理を実行することを特徴とする、請求項22または23に記載の装置。
  30. 前記ALUコアは、算術論理演算を実行し、前記初等関数コアは、多項式近似を実行することなく超越初等関数計算し、前記論理コアは、論理演算、ビット演算、データバッファ管理演算を実行し、前記テクスチャ・コアは、テクスチャ・エンジンに関する前処理を実行することを特徴とする、請求項26に記載の無線装置。
JP2009551017A 2007-02-21 2008-02-21 オン−デマンド・マルチ−スレッド・マルチメディア・プロセッサ Active JP5149311B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/677,362 US7685409B2 (en) 2007-02-21 2007-02-21 On-demand multi-thread multimedia processor
US11/677,362 2007-02-21
PCT/US2008/054620 WO2008103854A1 (en) 2007-02-21 2008-02-21 On-demand multi-thread multimedia processor

Publications (3)

Publication Number Publication Date
JP2010519652A JP2010519652A (ja) 2010-06-03
JP2010519652A5 JP2010519652A5 (ja) 2012-11-22
JP5149311B2 true JP5149311B2 (ja) 2013-02-20

Family

ID=39535482

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009551017A Active JP5149311B2 (ja) 2007-02-21 2008-02-21 オン−デマンド・マルチ−スレッド・マルチメディア・プロセッサ

Country Status (10)

Country Link
US (1) US7685409B2 (ja)
EP (1) EP2126690B1 (ja)
JP (1) JP5149311B2 (ja)
KR (1) KR101118486B1 (ja)
CN (1) CN101627367B (ja)
BR (1) BRPI0807951B1 (ja)
CA (1) CA2676184C (ja)
RU (1) RU2425412C2 (ja)
TW (1) TWI367453B (ja)
WO (1) WO2008103854A1 (ja)

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8276164B2 (en) 2007-05-03 2012-09-25 Apple Inc. Data parallel computing on multiple processors
US8341611B2 (en) 2007-04-11 2012-12-25 Apple Inc. Application interface on multiple processors
US8286196B2 (en) 2007-05-03 2012-10-09 Apple Inc. Parallel runtime execution on multiple processors
US8108633B2 (en) * 2007-04-11 2012-01-31 Apple Inc. Shared stream memory on multiple processors
EP3413198A1 (en) 2007-04-11 2018-12-12 Apple Inc. Data parallel computing on multiple processors
US11836506B2 (en) 2007-04-11 2023-12-05 Apple Inc. Parallel runtime execution on multiple processors
JP2008299610A (ja) * 2007-05-31 2008-12-11 Toshiba Corp マルチプロセッサ
TWI386814B (zh) * 2007-12-31 2013-02-21 Ind Tech Res Inst 具動態工作管理能力之多處理器界面及其程式載卸方法
US8947460B2 (en) 2008-04-22 2015-02-03 Htc Corporation Method and apparatus for operating graphic menu bar and recording medium using the same
US8286198B2 (en) 2008-06-06 2012-10-09 Apple Inc. Application programming interfaces for data parallel computing on multiple processors
US8225325B2 (en) 2008-06-06 2012-07-17 Apple Inc. Multi-dimensional thread grouping for multiple processors
US9013498B1 (en) * 2008-12-19 2015-04-21 Nvidia Corporation Determining a working set of texture maps
US8819258B2 (en) * 2009-05-07 2014-08-26 International Business Machines Corporation Architecture for building multi-media streaming applications
KR20110116553A (ko) * 2010-04-19 2011-10-26 삼성전자주식회사 미디어 프로세싱 애플리케이션 실행 장치 및 방법
CN101901167A (zh) * 2010-07-22 2010-12-01 网御神州科技(北京)有限公司 一种多cpu架构下的多网络安全审计方法和系统
CN101937368A (zh) * 2010-08-31 2011-01-05 苏州阊亦宏环保科技有限公司 一种面向云计算的数据中心管理系统
US8762644B2 (en) * 2010-10-15 2014-06-24 Qualcomm Incorporated Low-power audio decoding and playback using cached images
KR101359717B1 (ko) 2010-11-08 2014-02-07 한국전자통신연구원 에너지 타일 프로세서
US8775836B2 (en) * 2010-12-23 2014-07-08 Intel Corporation Method, apparatus and system to save processor state for efficient transition between processor power states
WO2012087566A2 (en) * 2010-12-23 2012-06-28 Intel Corporation Method, apparatus and system to save processor state for efficient transition between processor power states
US8789065B2 (en) 2012-06-08 2014-07-22 Throughputer, Inc. System and method for input data load adaptive parallel processing
GB2487355B (en) 2011-01-13 2020-03-25 Advanced Risc Mach Ltd Processing apparatus, trace unit and diagnostic apparatus
US9201689B2 (en) * 2011-04-22 2015-12-01 Cray Inc. Software emulation of massive hardware threading for tolerating remote memory references
US10061618B2 (en) * 2011-06-16 2018-08-28 Imagination Technologies Limited Scheduling heterogenous computation on multithreaded processors
US8935491B2 (en) * 2011-07-15 2015-01-13 Throughputer, Inc. Memory architecture for dynamically allocated manycore processor
US9448847B2 (en) 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization
TWI454905B (zh) 2011-09-30 2014-10-01 Intel Corp 在多核心平台中之受限制的啓動技術
KR101881019B1 (ko) * 2011-10-26 2018-07-24 삼성전자 주식회사 휴대 단말기의 전원절약 장치 및 방법
WO2013149374A1 (zh) * 2012-04-01 2013-10-10 华为技术有限公司 媒体处理系统和处理媒体业务的方法
RU2490696C1 (ru) * 2012-07-20 2013-08-20 Открытое акционерное общество "КОНСТРУКТОРСКОЕ БЮРО "КОРУНД-М" (ОАО КБ "КОРУНД-М") Устройство детектирования и корректирования ошибок с функцией самотестирования памяти
US9082078B2 (en) * 2012-07-27 2015-07-14 The Intellisis Corporation Neural processing engine and architecture using the same
US9465655B2 (en) 2012-11-28 2016-10-11 Htc Corporation Method for managing threads using executing time scheduling technique and electronic device using the same method
CN103853605B (zh) * 2012-11-28 2017-06-09 宏达国际电子股份有限公司 线程管理方法及其电子装置
US9185057B2 (en) 2012-12-05 2015-11-10 The Intellisis Corporation Smart memory
US9697006B2 (en) * 2012-12-19 2017-07-04 Nvidia Corporation Technique for performing memory access operations via texture hardware
US10007323B2 (en) 2012-12-26 2018-06-26 Intel Corporation Platform power consumption reduction via power state switching
US10437591B2 (en) 2013-02-26 2019-10-08 Qualcomm Incorporated Executing an operating system on processors having different instruction set architectures
US9396012B2 (en) * 2013-03-14 2016-07-19 Qualcomm Incorporated Systems and methods of using a hypervisor with guest operating systems and virtual processors
US9606818B2 (en) 2013-03-14 2017-03-28 Qualcomm Incorporated Systems and methods of executing multiple hypervisors using multiple sets of processors
US10114756B2 (en) 2013-03-14 2018-10-30 Qualcomm Incorporated Externally programmable memory management unit
US9471318B2 (en) * 2013-03-15 2016-10-18 International Business Machines Corporation System management and instruction counting
GB2516435A (en) * 2013-04-05 2015-01-28 Continental Automotive Systems Embedded memory management scheme for real-time applications
JP6094356B2 (ja) * 2013-04-22 2017-03-15 富士通株式会社 演算処理装置
RU2538920C2 (ru) * 2013-05-06 2015-01-10 Общество с ограниченной ответственностью "Аби ИнфоПоиск" Способ распределения задач сервером вычислительной системы, машиночитаемый носитель информации и система для реализации способа
US20140379725A1 (en) * 2013-06-19 2014-12-25 Microsoft Corporation On demand parallelism for columnstore index build
CN104521180B (zh) * 2013-07-01 2017-11-24 华为技术有限公司 基于统一通信的视频会议呼叫方法、设备和系统
US20150077635A1 (en) * 2013-09-18 2015-03-19 Htc Corporation Method for outputting multiple multimedia tracks along multiple processing paths from a portable electronic device
US9223574B2 (en) * 2014-03-27 2015-12-29 International Business Machines Corporation Start virtual execution instruction for dispatching multiple threads in a computer
US9542221B2 (en) * 2014-05-22 2017-01-10 Oracle International Corporation Dynamic co-scheduling of hardware contexts for parallel runtime systems on shared machines
US9507655B2 (en) * 2014-10-31 2016-11-29 AppDynamics, Inc. Tracking asynchronous entry points for an application
US9552327B2 (en) 2015-01-29 2017-01-24 Knuedge Incorporated Memory controller for a network on a chip device
US10061531B2 (en) 2015-01-29 2018-08-28 Knuedge Incorporated Uniform system wide addressing for a computing system
US10489197B2 (en) 2015-06-01 2019-11-26 Samsung Electronics Co., Ltd. Highly efficient inexact computing storage device
US10067878B2 (en) 2015-09-23 2018-09-04 Hanan Potash Processor with logical mentor
US9977693B2 (en) 2015-09-23 2018-05-22 Hanan Potash Processor that uses plural form information
US10140122B2 (en) * 2015-09-23 2018-11-27 Hanan Potash Computer processor with operand/variable-mapped namespace
US10095641B2 (en) 2015-09-23 2018-10-09 Hanan Potash Processor with frames/bins structure in local high speed memory
US10061511B2 (en) 2015-09-23 2018-08-28 Hanan Potash Computing device with frames/bins structure, mentor layer and plural operand processing
US9900260B2 (en) 2015-12-10 2018-02-20 Arm Limited Efficient support for variable width data channels in an interconnect network
US10157133B2 (en) 2015-12-10 2018-12-18 Arm Limited Snoop filter for cache coherency in a data processing system
US20170185516A1 (en) * 2015-12-28 2017-06-29 Arm Limited Snoop optimization for multi-ported nodes of a data processing system
US10027583B2 (en) 2016-03-22 2018-07-17 Knuedge Incorporated Chained packet sequences in a network on a chip architecture
US11093286B2 (en) 2016-04-26 2021-08-17 Hanan Potash Computing device with resource manager and civilware tier
US10346049B2 (en) 2016-04-29 2019-07-09 Friday Harbor Llc Distributed contiguous reads in a network on a chip architecture
US9990292B2 (en) 2016-06-29 2018-06-05 Arm Limited Progressive fine to coarse grain snoop filter
US10565024B2 (en) * 2016-10-19 2020-02-18 Oracle International Corporation Generic concurrency restriction
US10209887B2 (en) 2016-12-20 2019-02-19 Texas Instruments Incorporated Streaming engine with fetch ahead hysteresis
US10042766B1 (en) 2017-02-02 2018-08-07 Arm Limited Data processing apparatus with snoop request address alignment and snoop response time alignment
US10409614B2 (en) * 2017-04-24 2019-09-10 Intel Corporation Instructions having support for floating point and integer data types in the same register
US10783011B2 (en) * 2017-09-21 2020-09-22 Qualcomm Incorporated Deadlock free resource management in block based computing architectures
GB201717303D0 (en) 2017-10-20 2017-12-06 Graphcore Ltd Scheduling tasks in a multi-threaded processor
US10606641B2 (en) 2017-10-20 2020-03-31 Graphcore Limited Scheduling tasks in a multi-threaded processor
US10642737B2 (en) * 2018-02-23 2020-05-05 Microsoft Technology Licensing, Llc Logging cache influxes by request to a higher-level cache
US11513837B2 (en) * 2018-05-07 2022-11-29 Micron Technology, Inc. Thread commencement and completion using work descriptor packets in a system having a self-scheduling processor and a hybrid threading fabric
US11100604B2 (en) * 2019-01-31 2021-08-24 Advanced Micro Devices, Inc. Multiple application cooperative frame-based GPU scheduling
CN110704368B (zh) * 2019-09-25 2020-11-06 支付宝(杭州)信息技术有限公司 基于fpga的安全智能合约处理器的高效运算方法及装置
CN114968358A (zh) * 2020-10-21 2022-08-30 上海壁仞智能科技有限公司 配置向量运算系统中的协作线程束的装置和方法
US20220263691A1 (en) * 2021-02-16 2022-08-18 Nvidia Corporation Technique to perform demodulation of wireless communications signal data

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10506492A (ja) * 1995-07-21 1998-06-23 フィリップス エレクトロニクス ネムローゼ フェンノートシャップ 高性能密度を有するマルチメディアプロセッサアーキテクチャ
GB2311882B (en) * 1996-04-04 2000-08-09 Videologic Ltd A data processing management system
US5966734A (en) * 1996-10-18 1999-10-12 Samsung Electronics Co., Ltd. Resizable and relocatable memory scratch pad as a cache slice
US6092175A (en) 1998-04-02 2000-07-18 University Of Washington Shared register storage mechanisms for multithreaded computer systems with out-of-order execution
US6041400A (en) * 1998-10-26 2000-03-21 Sony Corporation Distributed extensible processing architecture for digital signal processing applications
US6507903B1 (en) * 2000-06-20 2003-01-14 International Business Machines Corporation High performance non-blocking parallel storage manager for parallel software executing on coordinates
US7111294B2 (en) * 2001-01-16 2006-09-19 Microsoft Corporation Thread-specific heaps
JP2004157636A (ja) * 2002-11-05 2004-06-03 Renesas Technology Corp データ処理装置
US7185215B2 (en) * 2003-02-24 2007-02-27 International Business Machines Corporation Machine code builder derived power consumption reduction
KR100591755B1 (ko) 2003-07-22 2006-06-22 삼성전자주식회사 복수의 스레드를 동시에 처리하는 장치 및 방법
US7239322B2 (en) * 2003-09-29 2007-07-03 Ati Technologies Inc Multi-thread graphic processing system
JP2005182791A (ja) * 2003-12-12 2005-07-07 Sharp Corp 汎用組込みプロセッサ
US7386747B2 (en) 2005-05-10 2008-06-10 Qualcomm Incorporated Method and system for reducing power consumption of a programmable processor

Also Published As

Publication number Publication date
US7685409B2 (en) 2010-03-23
BRPI0807951B1 (pt) 2019-05-14
CN101627367A (zh) 2010-01-13
RU2009135022A (ru) 2011-04-10
US20080201716A1 (en) 2008-08-21
KR20090115211A (ko) 2009-11-04
EP2126690A1 (en) 2009-12-02
EP2126690B1 (en) 2014-04-02
CA2676184C (en) 2014-12-23
WO2008103854A1 (en) 2008-08-28
TW200842757A (en) 2008-11-01
TWI367453B (en) 2012-07-01
CA2676184A1 (en) 2008-08-28
CN101627367B (zh) 2016-04-27
KR101118486B1 (ko) 2012-03-13
JP2010519652A (ja) 2010-06-03
BRPI0807951A2 (pt) 2014-06-03
RU2425412C2 (ru) 2011-07-27

Similar Documents

Publication Publication Date Title
JP5149311B2 (ja) オン−デマンド・マルチ−スレッド・マルチメディア・プロセッサ
US8345053B2 (en) Graphics processors with parallel scheduling and execution of threads
US9575807B2 (en) Processing accelerator with queue threads and methods therefor
US8035650B2 (en) Tiled cache for multiple software programs
EP2024819B1 (en) Graphics processor with arithmetic and elementary function units
US10217183B2 (en) System, method, and computer program product for simultaneous execution of compute and graphics workloads
US7805589B2 (en) Relative address generation
WO2018063480A1 (en) Graphics processor register renaming mechanism
WO2017155610A1 (en) Method and apparatus for efficient submission of workload to a high performance graphics sub-system
US7876329B2 (en) Systems and methods for managing texture data in a computer
US9171525B2 (en) Graphics processing unit with a texture return buffer and a texture queue
US9165396B2 (en) Graphics processing unit with a texture return buffer and a texture queue
EP4198749A1 (en) De-prioritizing speculative code lines in on-chip caches
WO2024001699A1 (zh) 一种着色器输入数据的处理方法和图形处理装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110928

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111004

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120104

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120112

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120403

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120703

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20121002

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121003

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121129

R150 Certificate of patent or registration of utility model

Ref document number: 5149311

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20151207

Year of fee payment: 3

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

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250