JP2010503073A - 相対アドレス生成 - Google Patents

相対アドレス生成 Download PDF

Info

Publication number
JP2010503073A
JP2010503073A JP2009526886A JP2009526886A JP2010503073A JP 2010503073 A JP2010503073 A JP 2010503073A JP 2009526886 A JP2009526886 A JP 2009526886A JP 2009526886 A JP2009526886 A JP 2009526886A JP 2010503073 A JP2010503073 A JP 2010503073A
Authority
JP
Japan
Prior art keywords
address
absolute
processor
storage unit
receive
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.)
Granted
Application number
JP2009526886A
Other languages
English (en)
Other versions
JP5096470B2 (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 JP2010503073A publication Critical patent/JP2010503073A/ja
Application granted granted Critical
Publication of JP5096470B2 publication Critical patent/JP5096470B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • 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/3802Instruction 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3875Pipelining a single stage, e.g. superpipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

相対アドレッシングを効率的に取り扱う技法が、説明される。一設計においては、プロセッサは、アドレスジェネレータと、ストレージユニットと、を含む。アドレスジェネレータは、ベースアドレスとオフセットとから成る相対アドレスを受け取り、ベースアドレスについての基準値を取得し、その基準値をオフセットと加算し、そして、その相対アドレスに対応する絶対アドレスを供給する。ストレージユニットは、ベースアドレスを受け取り、基準値をアドレスジェネレータへと供給する。ストレージユニットはまた、絶対アドレスを受け取り、このアドレスにおけるデータを供給する。アドレスジェネレータは、メモリアクセスの第1のクロックサイクルにおいて絶対アドレスを導き出すことができる。ストレージユニットは、メモリアクセスの第2のクロックサイクルにおいてそのデータを供給することができる。ストレージユニットは、同時発生のアドレス生成とデータ取出しをサポートする複数の(例えば、2つの)読取りポートを有することができる。

Description

背景
[I.技術分野]
本開示は、一般にエレクトロニクスに関し、より詳細には相対アドレス(relative address)を生成するための技法に関する。
[II.背景]
プロセッサは、通信、コンピューティング、データネットワーキングなど、様々なアプリケーションのために広く使用される。プロセッサは、ストレージユニット(storage unit)に記憶されるデータに対する様々な演算を実行することができ、このストレージユニットは、レジスタファイル(register file)、ランダムアクセスメモリ(random access memory)(RAM)などとすることができる。演算のためのデータは、絶対アドレス(absolute address)または相対アドレスのいずれかによって指定されることができる。絶対アドレスは、データが記憶されるストレージユニットにおける特定のロケーションを指し示す。相対アドレスは、ベースアドレス(base address)と、オフセットとによって与えられる。ベースアドレスは、ストレージユニットにおける基準ロケーション(reference location)を指し示す。オフセットは、その基準ロケーションと、データが記憶される実際のロケーションとの間の距離を指し示す。相対アドレスは、一般的に絶対アドレスに変換され、次いで、この絶対アドレスは、ストレージユニットから望ましいデータをフェッチするために使用される。
一例として、2つのオペランドを加算する命令は、次式のように与えられることができる。
add r0,x0[r1+15],r2
第1のオペランドは、レジスタ/ロケーションr2に記憶される。第2のオペランドは、レジスタr1に記憶される基準値(base value)と、15というオフセットとによって決定されるロケーションに記憶される。2つのオペランドの加算の結果は、レジスタ/ロケーションr0に記憶される。
上記命令は、以下のように2つの命令へと変換される。
add a0,r1,15
add r0,x0[a0],r2
第1の命令は、レジスタr1における基準値を15というオフセットと加算することにより、第2のオペランドについての絶対アドレスを計算し、次いでその絶対アドレスをレジスタa0に記憶する。第2の命令は、絶対アドレスによって決定されている第2のオペランドが、第1の命令によって計算されて、2つのオペランドの和を計算する。算術論理演算装置(arithmetic logic unit)(ALU)は、第1の命令と、第2の命令との両方について計算を実行することができる。
相対アドレスを有する単一命令を2つの命令に変換することは、いくつかの理由のために望ましくない可能性がある。第1に、第1の命令による絶対アドレスの計算は、ALUリソースを消費する。第2に、第2の命令は、第1の命令の結果に依存するので、2つの命令を逐次的な順序で完了するために、より長い遅延が経験される可能性がある。この遅延ペナルティは、ALUが複数のステージを有するときに、より厳しくなる。複数のALUステージに起因したより長い遅延は、性能に悪影響を及ぼす可能性がある。
したがって、当技術分野においては相対アドレッシング(relative addressing)を効率的に取り扱う技法についての必要性が存在する。
相対アドレッシングを効率的に取り扱う技法が、ここにおいて説明される。一実施形態においては、プロセッサは、アドレスジェネレータ(address generator)と、ストレージユニット(storage unit)と、を含む。アドレスジェネレータは、ベースアドレス(base address)と、オフセット(offset)とから成る相対アドレスを受け取り、ベースアドレスについての基準値(base value)を取得し、その基準値をオフセットと加算し、そしてその相対アドレスに対応する絶対アドレスを供給する。ストレージユニットは、ベースアドレスを受け取り、基準値をアドレスジェネレータに対して供給する。ストレージユニットはまた、絶対アドレスを受け取り、このアドレスにおけるデータを供給する。アドレスジェネレータは、メモリアクセスの第1のクロックサイクルにおいて絶対アドレスを導き出す(derive)ことができる。ストレージユニットは、メモリアクセスの第2のクロックサイクルにおいてデータを供給することができる。ストレージユニットは、同時発生のアドレス生成とデータ取出し(concurrent address generation and data retrieval)をサポートする複数の(例えば、2つの)読取りポートを有することができる。
別の実施形態においては、プロセッサは、複数のアドレスジェネレータ(multiple address generators)と、複数のレジスタバンク(multiple register banks)と、を含む。アドレスジェネレータは、相対アドレスを受け取り、絶対アドレスを供給する。レジスタバンクは、絶対アドレスを受け取り、これらのアドレスにおけるデータを供給する。レジスタバンクはまた、相対アドレスについてのベースアドレスを受け取り、基準値を供給することもできる。ジェネレータは、絶対アドレスを取得するために、相対アドレスについてのオフセットを基準値と加算することができる。プロセッサは、アドレスクロスバー(address crossbar)と、データクロスバー(data crossbar)と、複数のALUと、をさらに含むことができる。アドレスクロスバーは、アドレスジェネレータの出力をレジスタバンクへと結合する。データクロスバーは、レジスタバンクからのデータをALUへと供給する。ALUは、レジスタバンクからの、例えば、複数のピクセルについてのデータに対して同時に(concurrently)動作する。
本開示の様々の態様および実施形態が、下記にさらに詳細に説明される。
図1Aは、絶対アドレッシング(absolute addressing)を示している。 図1Bは、相対アドレッシング(relative addressing)を示している。 図2は、相対アドレッシングをサポートするストレージ構造(storage structure)を示している。 図3は、相対アドレッシングを用いた読取りおよび書込みをサポートするストレージ構造を示している。 図4は、相対アドレッシングをサポートするデュアルポートストレージ構造(dual-port storage structure)を示している。 図5は、グラフィックスプロセッサ(graphics processor)を示している。 図6は、グラフィックスプロセッサ内のALUコアとレジスタバンクとを示している。 図7は、レジスタバンクにおけるグラフィックスデータの記憶を示している。 図8は、レジスタバンクをALUコアに結合するデータクロスバーを示している。 図9は、ワイヤレスデバイスのブロック図を示している。
詳細な説明
本開示の態様および実施形態は、図面と併せて解釈されるときに下記に述べられる詳細な説明から、より明らかになるであろう。図面において、同様な参照文字は、全体を通してそれに対応して識別する。
「例示的な(exemplary)」という言葉は、「1つの例、インスタンス、または例証(illustration)としての役割を果たしている(serving)」を意味するようにここにおいて使用される。「例示的な」として、ここにおいて説明される任意の実施形態または設計は、必ずしも他の実施形態または設計よりも好ましい、または有利であるとして解釈されるべきものとは限らない。
図1Aは、絶対アドレッシングを用いた読取りオペレーションを示している。絶対アドレスは、ストレージユニットにおけるロケーションを指し示し、このストレージユニットは、メモリ、レジスタバンクなどとすることができる。このロケーションに記憶されたデータは、出力データとして供給される。
図1Bは、相対アドレッシングを用いた読取りオペレーションを示している。相対アドレスは、ベースアドレスと、オフセットとから成る。ベースアドレスは、基準値を記憶する、ストレージユニットにおけるロケーションを指し示す。基準値は、相対アドレスに対応する絶対アドレスを生成するために、オフセットと加算される。基準値またはオフセットは、負の値とすることもできるが、絶対アドレスは、一般的に正の値である。絶対アドレスによって指し示されるロケーションに記憶されるデータは、出力データとして供給される。
図2は、相対アドレッシングを用いたメモリアクセスを効率的にサポートするストレージ構造200の一実施形態のブロック図を示している。ストレージ構造200は、アドレスジェネレータ210と、ストレージユニット230と、を含む。ストレージ構造200は、絶対アドレスまたは相対アドレスを受け取り、受け取られたアドレスによって指し示されるロケーションにおけるデータ(例えば、オペランド)を供給する。
アドレスジェネレータ210は、アドレス情報を受け取り、このアドレス情報は、ソース識別子(source identifier)(ID)と、オフセットと、を備えることができる。ソースIDは、命令の一部分とすることもでき、あるいは他の何らかのソース、例えば、バッファに由来することもできる。ソースIDは、絶対アドレスまたはベースアドレスを含むことができる。相対アドレスでは、加算器220は、ストレージユニット230からの出力と、オフセットと、を受け取り、それらの2つの入力を加算し、その結果をラッチ222へと供給する。マルチプレクサ(Mux)224は、2つの入力上で、ラッチ222の出力と、アドレス情報と、を受け取り、2つの入力のうちの一方をストレージユニット230へと供給する。
アドレス情報が、絶対アドレスを備える場合、そのときにはマルチプレクサ224は、絶対アドレスを直接にストレージユニット230へと供給し、次いで、このストレージユニットは、絶対アドレスによって指し示されるロケーションにおけるデータを供給する。アドレス情報が、相対アドレスを備える場合、そのときには対応する絶対アドレスが、計算され、そして2つのクロックサイクルで供給される。第1のクロックサイクルにおいて、マルチプレクサ224は、アドレス情報(例えば、ソースID)におけるベースアドレスをストレージユニット230へと供給し、次いで、このストレージユニットは、その基準値を加算器220へと供給する。次いで、加算器220は、アドレス情報におけるオフセットをストレージユニット230からの基準値と加算し、そしてその絶対アドレスをラッチ222へと供給する。第2のクロックサイクルにおいて、マルチプレクサ224は、ラッチ222からの絶対アドレスをストレージユニット230へと供給し、次いで、このストレージユニットは、絶対アドレスによって指し示されるロケーションにおけるデータを供給する。
加算器220は、2つの整数値を加算し、整数の結果を供給することができる簡単な加算器とすることができる。加算器220は、当技術分野において知られている任意の設計を用いてインプリメントされる(implemented)ことができ、一般的にALUに比べて複雑さがずっと少ない。ストレージユニット230は、異なる固有のアドレスが割り当てられたレジスタのバンクまたはアレイとすることができる。ストレージユニット230は、例えば、RAM、シンクロナスRAM(synchronous RAM)(SRAM)、シンクロナスダイナミックRAM(synchronous dynamic RAM)(SDRAM)、フラッシュメモリ(Flash memory)など、他のタイプのストレージとすることもできる。
図2に示される実施形態において、相対アドレッシングを用いた読取りオペレーションが、2つのクロックサイクルで実行される。絶対アドレスは、第1のクロックサイクルにおいて計算され、そしてデータは、第2のクロックサイクルにおいて取り出される。この実施形態は、読取りオペレーションについての総遅延を分割し、より高いクロック速度が、ストレージ構造200のために使用されることを可能にする。ラッチ(図2に示されず)は、アドレス情報を受け取り、第2の入力のマルチプレクサ224に対してその出力を供給することができる。このラッチは、相対アドレスの遅延をマッチングさせるために絶対アドレスを遅延させることになる。代わりに、レジスタ(やはり図2に示されず)が、相対アドレスについての出力データを絶対アドレスについての出力データと時間的に位置合わせするために、ストレージユニット230の出力に追加されることもできる。
別の実施形態においては、ラッチ222は、存在せず、絶対アドレス計算と、データ取出しとは、1つのクロックサイクルにおいて実行される。さらに別の実施形態においては、複数のラッチが、さらに総遅延を分割し、より高いクロック速度さえサポートするために挿入されることができる。
ストレージ構造200は、ある種の利点を提供することができる。第1に、絶対アドレスは、アドレス情報、例えば、命令に含まれるソースIDに基づいて、実行中に計算されることができる。この特徴は、各実行スレッド(thread of execution)についてのアドレスレジスタを有する必要性を取り除くことができ、これは、マルチスレッドプロセッサ(multi-threaded processor)について注目に値する節約を提供することができる。第2に、ALUリソースは、絶対アドレスを計算するために消費されない。節約されたALUリソースは、他のオペレーションのために利用されることができる。第3に、相対アドレッシングを用いた命令は、2つの命令に変換されない。これは、遅延を減少させ、スループットを改善することができる。ストレージ構造200を使用することからの他の利点が存在する可能性がある。
図3は、相対アドレッシングを用いた読取りおよび書込みを効率的にサポートするストレージ構造300の一実施形態のブロック図を示している。ストレージ構造300は、アドレスジェネレータ310と、ストレージユニット330と、を含む。アドレスジェネレータ310は、ソースアドレス情報(source address information)と、宛先アドレス情報(destination address information)とを受け取る。ソースアドレス情報は、読取りオペレーションについての読取りアドレスを指し示し、ソースIDとオフセットとを備えることができる。ソースIDは、絶対アドレスまたはベースアドレスを含むことができる。宛先アドレス情報は、書込みオペレーションについての書込みアドレスを指し示し、宛先IDとオフセットとを備えることができる。宛先IDは、絶対アドレスまたはベースアドレスを含むことができる。ソースIDと宛先IDとは、命令の一部分とすることができ、あるいは他のソースに由来することができる。
アドレスジェネレータ310内において、マルチプレクサ318は、2つの入力においてソースアドレス情報と、宛先アドレス情報と、を受け取り、そして2つの入力のうちの一方を加算器320へと供給する。加算器320はまた、ストレージユニット330からの出力を受け取り、2つの入力を加算し、そしてその結果をラッチ322へと供給する。マルチプレクサ324は、3つの入力上で、ラッチ322の出力と、ソースアドレス情報と、宛先アドレス情報と、を受け取り、そしてそれらの3つの入力のうちの1つをストレージユニット330へと供給する。マルチプレクサ326は、2つの入力上で、ラッチ322の出力と、宛先アドレス情報と、を受け取り、そしてそれらの2つの入力のうちの一方を遅延ユニット328へと供給する。ユニット328は、ストレージユニット330からのオペランドに対して動作するALU(図3には示されず)の遅延とマッチングする(matches)遅延を提供する。例えば、ALUが4クロックサイクルの遅延を有する場合、そのときにはユニット328は、4クロックサイクルの遅延を提供する。ユニット328は、書込みアドレスをストレージユニット330へと供給する。
読取りアドレスは、以下のようにソースアドレス情報から計算されることができる。ソースアドレス情報が、絶対アドレスを備える場合、そのときにはマルチプレクサ324は、読取りアドレスとして絶対アドレスをストレージユニット330へと供給する。ソースアドレス情報が、相対アドレスを備える場合、そのときには第1のクロックサイクルにおいて、マルチプレクサ318は、ソースアドレス情報の中のオフセットを加算器320へと供給し、マルチプレクサ324は、ソースアドレス情報の中のベースアドレス(例えば、ソースID)をストレージユニット330へと供給し、そして加算器320は、マルチプレクサ318からのオフセットをストレージユニット330からの基準値と加算し、絶対アドレスをラッチ322へと供給する。第2のクロックサイクルにおいて、マルチプレクサ324は、読取りアドレスとしてラッチ322からの絶対アドレスをストレージユニット330へと供給する。
書込みアドレスは、以下のように宛先アドレス情報から計算されることができる。宛先アドレス情報が、絶対アドレスを備える場合、そのときにはマルチプレクサ326は、書込みアドレスとして絶対アドレスをストレージユニット330へと供給する。宛先アドレス情報が、相対アドレスを備える場合、そのときには第1のクロックサイクルにおいて、マルチプレクサ318は、宛先アドレス情報の中のオフセットを加算器320へと供給し、マルチプレクサ324は、宛先アドレス情報の中のベースアドレス(例えば、宛先ID)をストレージユニット330と供給し、そして加算器320は、マルチプレクサ318からのオフセットをストレージユニット330からの基準値と加算し、絶対アドレスをラッチ322へと供給する。第2のクロックサイクルにおいて、マルチプレクサ326は、書込みアドレスとしてラッチ322からの絶対アドレスをストレージユニット330へと供給する。
図4は、相対アドレッシングを効率的にサポートするデュアルポートストレージ構造400の一実施形態のブロック図を示している。ストレージ構造400は、アドレスジェネレータ410と、ストレージユニット430と、を含む。ストレージユニット430は、1つのクロックサイクルにおいて2つのロケーションにおけるデータを供給することができる2つの読取りポートを有する。アドレスジェネレータ410は、図2における加算器220と、ラッチ222と、マルチプレクサ224と同様に結合される加算器420と、ラッチ422と、マルチプレクサ424と、を含む。アドレスジェネレータ410は、2つの読取りポートに結合された2つの入力と、加算器420に結合された1つの出力と、を有するマルチプレクサ428をさらに含んでいる。コントローラまたはリソースマネージャ(図4に示されず)は、実行される命令の中のアドレス情報に基づいてマルチプレクサ424および428についての制御信号を生成することができる。
2つの読取りポートは、交互になるように2つのメモリアクセスについてのデータの(例えば、2つの命令による)取出しをサポートする。例えば、第1の命令についての絶対アドレスは、マルチプレクサ424を経由してベースアドレスをストレージユニット430へと供給することと、ポート0を経由して基準値を取得することと、により、第1のクロックサイクルにおいて計算されることができる。第2のクロックサイクルにおいて、第1の命令についてのデータは、ラッチ422からの絶対アドレスをストレージユニット430へと供給することと、ポート0を経由してデータを取得することと、により、取り出されることができる。また第2のクロックサイクルにおいては、第2の命令についての絶対アドレスは、マルチプレクサ424を経由してベースアドレスをストレージユニット430へと供給することと、ポート1を経由して基準値を取得することと、により、計算されることができる。第3のクロックサイクルにおいては、第2の命令についてのデータは、ラッチ422からの絶対アドレスをストレージユニット430へと供給することと、ポート1を経由してデータを取得することと、により、取り出されることができる。
別の実施形態においては、一方のポート(例えば、ポート0)は、相対アドレスについての基準値を供給するように指定され、そして他方のポート(例えば、ポート1)は、データを供給するように指定される。この実施形態においては、マルチプレクサ428は、省略されることができ、ストレージユニット430のポート0は、加算器420に直接に結合されることができる。クロスバーは、ラッチ422とマルチプレクサ424との出力をストレージユニット430の2つのアドレス入力に結合することができる。
2つの読取りポートは、各読取りオペレーションが2つのクロックサイクルの遅延を有する、クロックサイクル当たりに1つの読取りオペレーションをサポートする。図4に示される実施形態においては、単一の加算器420が、各クロックサイクルにおいて絶対アドレスを計算することができる。2つの読取りポートは、同時発生のアドレス生成とデータ取出しをサポートすることができる。
ストレージユニット430は、交互になるように2つのメモリアクセスについてのデータの書込みをサポートする2つの書込みポート(図4には示されず)を含むこともできる。
ここにおいて説明される技法は、相対アドレッシングをサポートする様々なタイプのプロセッサのために使用されることができる。例えば、本技法は、グラフィックスプロセッサ(graphics processor)、グラフィックス処理ユニット(graphics processing unit)(GPU)、デジタル信号プロセッサ(digital signal processor)(DSP)、縮小命令セットコンピュータ(reduced instruction set computer)(RISC)、高度なRISCマシン(advanced RISC machine)(ARM)、コントローラ、マイクロプロセッサなどのために使用されることができる。グラフィックスプロセッサのための本技法の例示使用が、下記に説明される。
図5は、一般にL≧1となる場合のL個のグラフィックスアプリケーション/プログラムをサポートするグラフィックスプロセッサ500の一実施形態のブロック図を示している。L個のグラフィックスアプリケーションは、ビデオゲーム、グラフィックスなどについてのものとすることができ、同時に実行することができる。グラフィックスプロセッサ500は、シェーダーコア(shader core)502と、テクスチャエンジン(texture engine)504と、キャッシュメモリシステム(cache memory system)506と、を含む。用語「コア」、「エンジン」、「マシン」、「プロセッサ」および「処理ユニット」は、多くの場合に交換可能に使用される。シェーダーコア502は、シェーディング(shading)などのグラフィックスオペレーションを実行することができ、このシェーディングは、照明、陰影付けなどを伴う非常に複雑なオペレーションである。テクスチャエンジン504は、テクスチャマッピングなどのグラフィックスオペレーションを実行することができ、このテクスチャマッピングは、テクスチャテーブルのカラーを用いて画像のピクセルのカラーを修正することを伴う。キャッシュメモリシステム506は、1つまたは複数のキャッシュを含むことができ、これらのキャッシュは、シェーダーコア(shader core)502と、テクスチャエンジン(texture engine)504と、についてのデータおよび命令を記憶することができる高速のメモリである。
シェーダーコア502内において、マルチプレクサ510は、L個のグラフィックスアプリケーションからのスレッドを受け取り、これらのスレッドをスレッドスケジューラ(thread scheduler)/命令デコーダ(instruction decoder)512へと供給する。スレッドスケジューラ512は、スレッドの実行をスケジュールし管理するために、様々なファンクションを実行する。命令キャッシュ516は、それらのスレッドについての命令を記憶する。これらの命令は、各スレッドのために実行されるべき特定のオペレーションを指し示し、キャッシュメモリシステム506および/またはメインメモリからロードされることができる。ALUコア520は、算術演算、論理演算、フォーマット変換などを実行する。定数バッファ522は、ALUコア520によって使用される定数値を記憶する。ロード制御ユニット(load control unit)514は、シェーダーコア502とテクスチャエンジン504との内部の様々なユニットについてのデータおよび命令の流れを制御する。レジスタバンク530は、ALUコア520と、ALU544と、からの中間結果および最終結果を記憶する。デマルチプレクサ(demultiplexer)(Demux)532は、実行されたスレッドについての最終結果をレジスタバンク530から受け取り、これらの結果をグラフィックスアプリケーションへと供給する。
テクスチャエンジン504内で、テクスチャアドレスジェネレータ(texture address generator)540は、テクスチャエンジン504によって動作させられるべき各ピクセルの位置を計算する。テクスチャキャッシュ(texture cache)542は、テクスチャエンジン504のためにピクセルを記憶する。ALU544は、ピクセルに対して計算を実行し、そして中間結果を供給し、これらの中間結果は、レジスタバンク530に記憶して戻されることができる。
図6は、図5におけるシェーダーコア502内のALUコア520およびレジスタバンク530の一実施形態を示している。この実施形態においては、ALUコア520は、4つのスカラALU620a、620b、620cおよび620dを含む。各ALU620は、データクロスバー(data crossbar)640から3つまでの入力オペランドを受け取り、それらの入力オペランドに対して算術演算または論理演算を実行し、そしてその結果をデータクロスバー640へと供給して戻すことができる。
図6に示される実施形態においては、レジスタバンク530は、4つのレジスタバンク630a、630b、630cおよび630dを含み、これらは、下記に説明されるようにグラフィックスデータを記憶することができる。3つのアドレスジェネレータ610a、610bおよび610cは、3つのオペランドについてのソースアドレス情報を受け取り、これらのオペランドについての読取りアドレスを生成する。アドレスジェネレータ610dは、宛先アドレス情報を受け取り、その結果についての書込みアドレスを生成する。スレッドスケジューラ512内の命令デコーダは、アドレス情報を各アドレスジェネレータ610へと供給することができる。各アドレスジェネレータ610は、図2におけるアドレスジェネレータ200または図4におけるアドレスジェネレータ400を用いてインプリメントされることができる。アドレスクロスバー612は、3つの読取りアドレスおよび書込みアドレスを適切なレジスタバンク630および定数バッファ(constant buffer)522へと供給する。
各レジスタバンク630は、3つのアドレスジェネレータ610aから610cのうちの1つから読取りアドレスを受け取ることができ、そして読取りオペレーションでは、読取りアドレスによって指し示されるロケーションにあるデータをデータクロスバー640へと供給する。各レジスタバンク630は、アドレスジェネレータ610dから書込みアドレスを受け取ることもでき、そして書込みオペレーションでは、データクロスバー640からのデータを書込みアドレスによって指し示されるロケーションに記憶する。
一実施形態においては、すべての4つのレジスタバンク630aから630dは、同時にアクセスされる(それから読み取られ、かつ/またはそれに書き込まれる)ことができる。一般に、各レジスタバンク630は、任意数の読取りポートと、任意数の書込みポートと、を含むことができる。一実施形態においては、各レジスタバンク630は、2つの読取りポートと、2つの書込みポートと、を含む。2つの読取りポートは、交互になるように2つの読取りオペレーションについてのデータの取出しを可能にする。2つの書込みポートは、交互になるように2つの書込みオペレーションについてのデータの書込みを可能にする。
データクロスバー640は、レジスタバンク630aから630dと、定数バッファ522と、からデータを受け取り、3つまでのオペランドを各ALU620へと供給する。一般に、各ALU620についての入力オペランドは、4つのレジスタバンク630aから630dおよび/または定数バッファ522のうちのどれかに由来する。各ALU620からの結果は、4つのレジスタバンク630aから630dのうちの任意の1つに記憶されることもできる。
レジスタバンク530は、シェーダーコア502および/またはテクスチャエンジン504によって動作させられるべきピクセルについてデータを記憶することができる。2−次元(2−D)または3次元(3−D)の画像は、多角形(一般的に三角形)を用いて表されることができる。各三角形は、ピクセルから成ることができる。各ピクセルは、空間座標、カラー値、テクスチャ座標など、様々な属性(attributes)を有することができる。各属性は、4つまでの成分を有することができる。例えば、空間座標は、3つの成分x、y、およびz、あるいは4つの成分x、y、zおよびwのいずれかによって与えられることができ、ここでxおよびyは、水平座標および垂直座標であり、zは、深さであり、wは、同次座標(homogeneous coordinate)である。カラー値は、3つの成分r、gおよびb、あるいは4つの成分r、g、bおよびaによって与えられ、ここで、rは、赤であり、gは、緑であり、bは、青であり、そしてaは、ピクセルの透明度を決定する透明性ファクタである。テクスチャ座標は、一般的に水平座標uおよび垂直座標vによって与えられる。ピクセルは、他の属性に関連づけられることもできる。
図7は、図6におけるレジスタバンク630aから630dにピクセルについてのグラフィックスデータを記憶する一実施形態を示している。この実施形態においては、各レジスタバンク630は、空間座標の異なる成分と、カラー値の異なる成分と、テクスチャ座標の1成分と、を記憶する。特に、レジスタバンク630aは、水平(x)空間座標と、赤色(r)カラー値と、水平(u)テクスチャ座標と、を記憶する。レジスタバンク630bは、垂直(y)空間座標と、緑色(g)カラー値と、垂直(v)テクスチャ座標と、を記憶する。レジスタバンク630cは、深さ(z)空間座標と、青色(b)カラー値と、水平(u)テクスチャ座標と、を記憶する。レジスタバンク630dは、同次(w)空間座標と、透明度(a)カラー値と、垂直(v)テクスチャ座標と、を記憶する。この実施形態は、ALU620aから620dについてのデータの効率的な取出しと、ALUからの結果の効率的な記憶とを可能にすることができる。一般に、ピクセルについてのデータは、任意の方法で記憶されることができ、例えば、各レジスタバンクは、ピクセルについての属性のすべての成分を記憶することができる。
実行されるべき各スレッドには、4つのレジスタバンク630aから630dにおける十分な数のレジスタが割り付けられることができる。図7に示される例において、各スレッドは、4つのピクセルについてのデータを含み、これらのピクセルは、P0、P1、P2およびP3として示される。スレッド0では、4つのピクセルについての水平空間座標(P0.X、P1.X、P2.XおよびP3.X)は、レジスタバンク630aのレジスタ0に記憶され、4つのピクセルについての赤色カラー値(P0.R、P1.R、P2.RおよびP3.R)は、レジスタバンク630aのレジスタ1に記憶され、4つのピクセルについての水平テクスチャ座標(P0.u0、P1.u0、P2.u0およびP3.u0)は、レジスタバンク630aのレジスタ2に記憶され、そして4つのピクセルについての水平テクスチャ座標(P0.u2、P1.u2、P2.u2およびP3.u2)は、レジスタバンク630aのレジスタ3に記憶される。u0およびv0と、u1およびv1と、u2およびv2と、u3およびv3とは、テクスチャするために使用されることができる4つのテクスチャマップ(texture map)についてのテクスチャ座標である。スレッド0についての4つのピクセルについての他の成分は、図7に示されるようにレジスタバンク630b、630cおよび630dのレジスタ0から3に記憶される。スレッド1、2および3についてのピクセルの成分は、図7に示されるように4つのレジスタバンク630aから630dにも記憶される。
図8は、図6におけるデータクロスバー640の一実施形態を示している。この実施形態においては、データクロスバー640は、4つのALU620aから620dについてのそれぞれ4つのマルチプレクサの組(four multiplexer sets)840aから840dを含む。マルチプレクサの組840(multiplexer set)aは、ALU620aのための3つの入力オペランドについての3つのマルチプレクサ(three multiplexers)842a、842bおよび842cを含む。各マルチプレクサ842は、6つの入力において、4つのレジスタバンク620aから620dからのデータと、定数バッファ522からのデータと、ALU620aからの結果と、を受け取る。各マルチプレクサ842は、6つの入力のうちの1つをALU620aのための1つの入力オペランドとして供給する。図8に示されるように、各レジスタバンク620は、ALU620aのための3つの入力オペランドのうちの任意の1つを供給することができる。マルチプレクサの組840b、840cおよび840dは、おのおのマルチプレクサの組840aと同じ方法でインプリメントされることができる。マルチプレクサの組840aから840dは、異なる制御信号を受け取ることができ、これらの制御信号は、実行されている命令によって決定されることができる。
一般に、命令は、ベクトルベース、またはピクセルベースのものとすることができ、ALUもまた、ベクトルベース、またはピクセルベースのものとすることができる。ベクトルベースとは、一時に1ピクセルの4つまでの成分の並列のアクセスまたは処理を意味している。ピクセルベースとは、一時に4つまでのピクセルについての1成分の並列なアクセスまたは処理を意味している。一実施形態においては、命令は、ベクトルベースであり、そしてALUは、ピクセルベースである。ベクトルベースの命令は、無効なピクセルについての計算の省略を可能にする。ピクセルベースのALUは、対象となる成分だけの計算を可能にする。例えば、2つの空間成分xとyとを加算するために、4つのALUは、同じクロックサイクルにおいて4つのピクセルに対してこの計算を効率的に実行することができる。それ故に、ベクトルベースの命令と、ピクセルベースのALUとは、全体的な性能を改善することができる。
図6から8に示される実施形態は、4つのレジスタバンク630aから630dからのデータの効率的な取出しと、4つのALU620aから620dによって取り出されたデータに対する効率的なオペレーションと、をサポートする。一例として、4つのピクセルについての2つの空間成分xと、yとは、加算されることができる。アドレスジェネレータ610aおよび610bは、レジスタバンク630aおよび630bについての読取りアドレスを生成することができ、そしてアドレスジェネレータ610dは、その結果についての書込みアドレスを生成することができる。1つの読取りサイクルにおいて、レジスタバンク630aは、4つのピクセルについてのx空間成分を供給し、レジスタバンク630bは、4つのピクセルについてのy空間成分を供給する。データクロスバー640は、第1のピクセル、第2のピクセル、第3のピクセル、および第4のピクセルについてのx成分およびy成分をそれぞれALU620a、620b、620cおよび620dへと供給する。各ALU620は、1つのピクセルについてのx成分およびy成分に対して動作する。次いで、データクロスバー640は、4つのALU620aおよび620dからの結果を指定されたレジスタバンクへと供給し、このレジスタバンクは、アドレスジェネレータ610dによって計算される書込みアドレスにそれらの結果を記憶する。ALU620によってアクセスされないレジスタバンクは、グラフィックスプロセッサ500内の他のユニット(例えば、ロード制御ユニット514)によってアクセスされることができる。
ここにおいて説明される技法は、ワイヤレス通信、コンピューティング、ネットワーキング、パーソナルエレクトロニクスなどのために使用されることができる。ワイヤレス通信についての本技法の例示使用は、下記に説明される。
図9は、ワイヤレス通信システムにおけるワイヤレスデバイス900の一実施形態のブロック図を示している。ワイヤレスデバイス900は、セルラ電話、端末、ハンドセット、携帯型個人情報端末(personal digital assistant)(PDA)、または他の何らかのデバイスとすることができる。ワイヤレス通信システムは、符号分割多元接続(Code Division Multiple Access)(CDMA)システム、移動体通信用グローバルシステム(Global System for Mobile Communication)(GSM)システム、または他の何らかのシステムとすることができる。
ワイヤレスデバイス900は、受信経路と送信経路とを経由して双方向通信を提供することができる。受信経路上では、基地局によって送信される信号は、アンテナ912によって受信され、そしてレシーバ(RCVR)914へと供給される。レシーバ914は、受信信号を条件づけしデジタル化し、そしてさらに処理するためにデジタルセクション(digital section)920へとサンプルを供給する。送信経路上では、トランスミッタ(TMTR)916は、デジタルセクション920から送信されるべきデータを受信し、そのデータを処理し条件づけし、そして被変調信号を生成し、この被変調信号は、アンテナ912を経由して基地局へと送信される。
デジタルセクション920は、例えば、モデムプロセッサ922、ビデオプロセッサ924、コントローラ/プロセッサ926、ディスプレイプロセッサ928、ARM/DSP932、グラフィックスプロセッサ934、内部メモリ936、外部バスインターフェース(external bus interface)(EBI)938など、様々な処理ユニットと、インターフェースユニットと、メモリユニットと、を含む。モデムプロセッサ922は、データの送信および受信のための処理(例えば、符号化、変調、復調、および復号化)を実行する。ビデオプロセッサ924は、カムコーダ、ビデオ再生、ビデオ会議などのビデオアプリケーションについてのビデオコンテンツ(例えば、スチル画像、ムービングビデオ(moving video)、およびムービングテキスト(moving text))に対して処理を実行する。コントローラ/プロセッサ926は、デジタルセクション920内の様々な処理ユニットおよびインターフェースユニットのオペレーションを指示することができる。ディスプレイプロセッサ928は、ディスプレイユニット930上で、ビデオ、グラフィックス、およびテキストの表示を容易にする処理を実行する。ARM/DSP932は、ワイヤレスデバイス900についての様々なタイプの処理を実行することができる。グラフィックスプロセッサ934は、グラフィックス処理を実行し、そして図5に示されるようにインプリメントされることができる。ここにおいて説明される技法は、デジタルセクション920の中のプロセッサのうちの任意のもの、例えば、グラフィックスプロセッサ934のために使用されることができる。内部メモリ936は、デジタルセクション920内の様々なユニットのためのデータおよび/または命令を記憶する。EBI938は、デジタルセクション920(例えば、内部メモリ936)と、メインメモリ940との間のデータの転送を容易にする。
デジタルセクション920は、1つまたは複数のDSP、マイクロプロセッサ、RISCなどを用いてインプリメントされることができる。デジタルセクション920は、1つまたは複数の特定用途向け集積回路(application specific integrated circuit)(ASIC)、あるいは他の何らかのタイプの集積回路(integrated circuit)(IC)の上に製造されることもできる。
ここにおいて説明される技法は、様々なハードウェアユニットの形でインプリメントされることができる。例えば、本技法は、ASICと、DSPと、RISCと、ARMと、デジタル信号処理デバイス(digital signal processing device)(DSPD)と、プログラマブルロジックデバイス(programmable logic device)(PLD)と、フィールドプログラマブルゲートアレイ(field programmable gate array)(FPGA)と、プロセッサと、コントローラと、マイクロコントローラと、マイクロプロセッサと、他の電子ユニットと、の形でインプリメントされることができる。
開示された実施形態の上記の説明は、いずれの当業者(person skilled in the art)も本開示を作り、または使用することを可能とするように、提供されている。これらの実施形態に対する様々な修正は、当業者にとっては容易に明らかであり、そしてここにおいて定義される包括的な原理は、本開示の精神または範囲を逸脱することなしに他の実施形態に対して適用されることができる。したがって、本開示は、ここにおいて示される実施形態だけに限定されるようには意図されておらず、ここにおいて開示される原理および新規な特徴と整合する最も広い範囲が与えられるべきである。

Claims (28)

  1. ベースアドレスとオフセットとから成る相対アドレスを受け取るように、前記ベースアドレスについての基準値を取得するように、前記基準値を前記オフセットと加算するように、そして前記相対アドレスに対応する絶対アドレスを供給するように、動作するアドレスジェネレータと、
    前記ベースアドレスを受け取り、前記基準値を前記アドレスジェネレータへと供給するように、動作するストレージユニットと、
    を備えるプロセッサ。
  2. 前記アドレスジェネレータは、メモリアクセスの第1のクロックサイクルにおいて前記絶対アドレスを導き出し、前記ストレージユニットは、前記メモリアクセスの第2のクロックサイクルにおいて前記絶対アドレスにおいてアクセスされる、請求項1に記載のプロセッサ。
  3. 前記アドレスジェネレータは、前記基準値と前記オフセットとを加算するように動作する加算器を備える、請求項1に記載のプロセッサ。
  4. 前記アドレスジェネレータは、
    前記加算器に結合され、そして、前記加算器の出力を記憶するように、そして前記絶対アドレスを供給するように動作する、ラッチ、
    をさらに備える、
    請求項3に記載のプロセッサ。
  5. 前記アドレスジェネレータは、
    前記ラッチに結合され、そして、前記ラッチからの前記絶対アドレス、または前記ベースアドレスを、前記ストレージユニットへと供給するように動作する、マルチプレクサ、
    をさらに備える、
    請求項4に記載のプロセッサ。
  6. 前記マルチプレクサは、メモリアクセスの第1のクロックサイクルにおいて前記ベースアドレスを前記ストレージユニットへと供給するように、そして前記メモリアクセスの第2のクロックサイクルにおいて前記絶対アドレスを前記ストレージユニットへと供給するように、動作する、請求項5に記載のプロセッサ。
  7. 前記アドレスジェネレータは、
    ソースアドレス情報と宛先アドレス情報とを受け取るように、そして前記オフセットを前記加算器へと供給するように、動作する第1のマルチプレクサと、
    前記ソースアドレス情報と前記ラッチの出力とを受け取るように、読取りオペレーションの第1のクロックサイクルにおいて前記ソースアドレス情報からの前記ベースアドレスを供給するように、そして前記読取りオペレーションの第2のクロックサイクルにおいて前記ラッチの前記出力を供給するように、動作する第2のマルチプレクサと、
    をさらに備える、
    請求項4に記載のプロセッサ。
  8. 前記アドレスジェネレータは、
    前記宛先アドレス情報と前記ラッチの前記出力とを受け取るように、そして書込みオペレーションについての前記絶対アドレスを供給するように、動作する第3のマルチプレクサ、
    をさらに備える、
    請求項7に記載のプロセッサ。
  9. 前記アドレスジェネレータは、
    前記第3のマルチプレクサの出力を受け取るように、そして前記書込みオペレーションについての書込みアドレスを供給するように、動作する遅延ユニット、
    をさらに備える、
    請求項8に記載のプロセッサ。
  10. 前記ストレージユニットは、第1のポートと第2のポートとを備え、前記アドレスジェネレータは、前記第1のポートまたは前記第2のポートから前記基準値を受け取るように動作する、請求項3に記載のプロセッサ。
  11. 前記ストレージユニットは、レジスタのバンクである、請求項1に記載のプロセッサ。
  12. 前記ストレージユニットは、ランダムアクセスメモリ(RAM)、シンクロナスRAM(SRAM)、または、シンクロナスダイナミックRAM(SDRAM)である、請求項1に記載のプロセッサ。
  13. ベースアドレスとオフセットとから成る相対アドレスを受け取るように、前記ベースアドレスについての基準値を取得するように、前記基準値を前記オフセットと加算するように、そして前記相対アドレスに対応する絶対アドレスを供給するように、動作するアドレスジェネレータと、
    前記ベースアドレスを受け取り、前記基準値を前記アドレスジェネレータへと供給するように、動作するストレージユニットと、
    を備える集積回路。
  14. 前記アドレスジェネレータは、メモリアクセスの第1のクロックサイクルにおいて前記絶対アドレスを導き出し、前記ストレージユニットは、前記メモリアクセスの第2のクロックサイクルにおいて前記絶対アドレスにおいてアクセスされる、請求項13に記載の集積回路。
  15. 前記アドレスジェネレータは、
    前記基準値と前記オフセットとを加算するように動作する加算器と、
    前記加算器に結合され、そして、前記加算器の出力を記憶するように、そして前記絶対アドレスを供給するように動作する、ラッチと、
    を備える、
    請求項13に記載の集積回路。
  16. 前記アドレスジェネレータは、
    前記ラッチに結合され、そして、メモリアクセスの第1のクロックサイクルにおいて前記ベースアドレスを前記ストレージユニットへと供給するように、そして前記メモリアクセスの第2のクロックサイクルにおいて前記絶対アドレスを前記ストレージユニットへと供給するように動作する、マルチプレクサ、
    をさらに備える、
    請求項15に記載の集積回路。
  17. 相対アドレスを受け取り、絶対アドレスを供給する、ように動作する複数のアドレスジェネレータと、
    前記複数のアドレスジェネレータに結合され、そして、前記絶対アドレスを受け取り、そして前記絶対アドレスにおけるデータを供給するように動作する、複数のレジスタバンクと、
    を備えるプロセッサ。
  18. 前記複数のアドレスジェネレータは、
    少なくとも2つのオペランドについての少なくとも2つの絶対アドレスを供給するように動作する少なくとも2つのアドレスジェネレータと、
    結果についての絶対アドレスを供給するように動作するアドレスジェネレータと、
    を備える、
    請求項17に記載のプロセッサ。
  19. 前記複数のレジスタバンクは、ベースアドレスを受け取るように、そして基準値を供給するように、動作しており、前記複数のアドレスジェネレータは、前記絶対アドレスを取得するために前記相対アドレスについてのオフセットを前記基準値と加算するように動作する、請求項17に記載のプロセッサ。
  20. 前記複数のアドレスジェネレータの出力を前記複数のレジスタバンクに結合するように動作するクロスバー、
    をさらに備える請求項17に記載のプロセッサ。
  21. 前記複数のレジスタバンクからの前記データに対して動作するように構成された複数の算術論理演算装置(ALU)、
    をさらに備える請求項17に記載のプロセッサ。
  22. 前記複数のALUは、複数のピクセルについてのデータに対して同時に動作するように構成されている、請求項21に記載のプロセッサ。
  23. 前記複数のレジスタバンクからの前記データを前記複数のALUへと供給するように動作するクロスバー、
    をさらに備える請求項21に記載のプロセッサ。
  24. 各レジスタバンクは、少なくとも2つの読取りポートを備え、1つの読取りポートは、1つのメモリアクセスについての基準値を供給するように動作し、別の読取りポートは、別のメモリアクセスについてのデータを供給するように動作する、請求項17に記載のプロセッサ。
  25. 前記複数のレジスタバンクは、ピクセルについての属性の4つの成分を記憶するように動作する4つのレジスタバンクを備え、各レジスタバンクは、前記4つの成分のうちの異なる1つを記憶する、請求項17に記載のプロセッサ。
  26. 相対アドレスを受け取り、絶対アドレスを供給するように、動作する複数のアドレスジェネレータと、
    前記複数のアドレスジェネレータに結合され、そして、前記絶対アドレスを受け取り、そして前記絶対アドレスにおけるグラフィックスデータを供給するように動作する、複数のレジスタバンクと、
    前記複数のレジスタバンクからの前記グラフィックスデータに対して動作するように構成された、複数の算術論理演算装置(ALU)と、
    を備えるグラフィックスプロセッサ。
  27. 前記複数のアドレスジェネレータは、
    前記複数のALUのための少なくとも2つのオペランドについての少なくとも2つの絶対アドレスを供給するように動作する少なくとも2つのアドレスジェネレータと、
    前記複数のALUからの結果についての絶対アドレスを供給するように動作するアドレスジェネレータと、
    を備える、
    請求項26に記載のグラフィックスプロセッサ。
  28. 複数のアドレスジェネレータと複数のレジスタバンクとを備えるグラフィックスプロセッサと、なお、前記複数のアドレスジェネレータは、相対アドレスを受け取り、絶対アドレスを受け取るように動作し、前記複数のレジスタバンクは、前記絶対アドレスを受け取り、前記絶対アドレスにおけるグラフィックスデータを供給するように動作する;
    前記グラフィックスプロセッサに結合されたメモリと;
    を備えるワイヤレスデバイス。
JP2009526886A 2006-08-31 2007-08-29 相対アドレス生成 Active JP5096470B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/469,347 US7805589B2 (en) 2006-08-31 2006-08-31 Relative address generation
US11/469,347 2006-08-31
PCT/US2007/077087 WO2008027951A1 (en) 2006-08-31 2007-08-29 Relative address generation

Publications (2)

Publication Number Publication Date
JP2010503073A true JP2010503073A (ja) 2010-01-28
JP5096470B2 JP5096470B2 (ja) 2012-12-12

Family

ID=38800883

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009526886A Active JP5096470B2 (ja) 2006-08-31 2007-08-29 相対アドレス生成

Country Status (6)

Country Link
US (1) US7805589B2 (ja)
EP (1) EP2069940A1 (ja)
JP (1) JP5096470B2 (ja)
KR (1) KR101076245B1 (ja)
CN (1) CN101512499B (ja)
WO (1) WO2008027951A1 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6702949B2 (en) 1997-10-24 2004-03-09 Microdiffusion, Inc. Diffuser/emulsifier for aquaculture applications
US8445546B2 (en) 2006-10-25 2013-05-21 Revalesio Corporation Electrokinetically-altered fluids comprising charge-stabilized gas-containing nanostructures
JP5595041B2 (ja) 2006-10-25 2014-09-24 リバルシオ コーポレイション 酸素富化溶液を用いる、眼および他のヒト組織の治療処置の方法
US8609148B2 (en) 2006-10-25 2013-12-17 Revalesio Corporation Methods of therapeutic treatment of eyes
AU2007308838B2 (en) 2006-10-25 2014-03-13 Revalesio Corporation Mixing device and output fluids of same
US8784898B2 (en) 2006-10-25 2014-07-22 Revalesio Corporation Methods of wound care and treatment
EP2083876A4 (en) 2006-10-25 2012-09-19 Revalesio Corp WOUND CARE AND TREATMENT METHOD
US8784897B2 (en) 2006-10-25 2014-07-22 Revalesio Corporation Methods of therapeutic treatment of eyes
US9745567B2 (en) 2008-04-28 2017-08-29 Revalesio Corporation Compositions and methods for treating multiple sclerosis
US10125359B2 (en) 2007-10-25 2018-11-13 Revalesio Corporation Compositions and methods for treating inflammation
US8452943B2 (en) * 2007-12-06 2013-05-28 Nec Corporation Apparatus and method for address generation for array processor and array processor
US8120608B2 (en) 2008-04-04 2012-02-21 Via Technologies, Inc. Constant buffering for a computational core of a programmable graphics processing unit
US8815292B2 (en) 2009-04-27 2014-08-26 Revalesio Corporation Compositions and methods for treating insulin resistance and diabetes mellitus
US8478946B2 (en) * 2009-09-08 2013-07-02 Advanced Micro Devices, Inc. Method and system for local data sharing
US9198929B2 (en) 2010-05-07 2015-12-01 Revalesio Corporation Compositions and methods for enhancing physiological performance and recovery time
EP2603202A4 (en) 2010-08-12 2016-06-01 Revalesio Corp COMPOSITIONS AND METHOD FOR THE TREATMENT OF TAUOPATHIES
CN102708916A (zh) * 2012-04-16 2012-10-03 东莞市泰斗微电子科技有限公司 一种地址跳转输出装置和方法
US8898433B2 (en) * 2012-04-26 2014-11-25 Avago Technologies General Ip (Singapore) Pte. Ltd. Efficient extraction of execution sets from fetch sets
US9110778B2 (en) * 2012-11-08 2015-08-18 International Business Machines Corporation Address generation in an active memory device
CN103942162B (zh) 2014-05-14 2020-06-09 清华大学 在存储器中进行多访问的方法、装置和存储系统
KR102533229B1 (ko) 2015-11-27 2023-05-17 삼성전자주식회사 상대 주소를 사용하는 메모리 장치의 접근 방법

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58225422A (ja) * 1982-06-25 1983-12-27 Toshiba Corp デ−タ制御装置
US5768609A (en) * 1989-11-17 1998-06-16 Texas Instruments Incorporated Reduced area of crossbar and method of operation
JPH11316679A (ja) * 1997-10-28 1999-11-16 Microchip Technol Inc 多数のバンクアドレス値供給源を有するプロセッサアーキテクチャスキームおよびその方法
US6604191B1 (en) * 2000-02-04 2003-08-05 International Business Machines Corporation Method and apparatus for accelerating instruction fetching for a processor
US20040088518A1 (en) * 1999-07-14 2004-05-06 Broadcom Corporation Memory access system
WO2005114646A2 (en) * 2004-05-14 2005-12-01 Nvidia Corporation Low power programmable processor
US20060059315A1 (en) * 2004-09-15 2006-03-16 Broadcom Corporation Nonuniform chip multiprocessor

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3199465B2 (ja) * 1992-07-22 2001-08-20 株式会社日立製作所 情報処理装置
EP0580109B1 (en) * 1992-07-23 1997-12-10 Rockwell International Corporation Data acces in a RISC digital signal processor
US5668773A (en) * 1994-12-23 1997-09-16 Micron Technology, Inc. Synchronous burst extended data out DRAM
US6356994B1 (en) * 1998-07-09 2002-03-12 Bops, Incorporated Methods and apparatus for instruction addressing in indirect VLIW processors
US7091982B2 (en) * 2004-05-14 2006-08-15 Nvidia Corporation Low power programmable processor

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58225422A (ja) * 1982-06-25 1983-12-27 Toshiba Corp デ−タ制御装置
US5768609A (en) * 1989-11-17 1998-06-16 Texas Instruments Incorporated Reduced area of crossbar and method of operation
JPH11316679A (ja) * 1997-10-28 1999-11-16 Microchip Technol Inc 多数のバンクアドレス値供給源を有するプロセッサアーキテクチャスキームおよびその方法
US20040088518A1 (en) * 1999-07-14 2004-05-06 Broadcom Corporation Memory access system
US20050044342A1 (en) * 1999-07-14 2005-02-24 Broadcom Corporation Memory acess system
US6604191B1 (en) * 2000-02-04 2003-08-05 International Business Machines Corporation Method and apparatus for accelerating instruction fetching for a processor
WO2005114646A2 (en) * 2004-05-14 2005-12-01 Nvidia Corporation Low power programmable processor
US20060059315A1 (en) * 2004-09-15 2006-03-16 Broadcom Corporation Nonuniform chip multiprocessor

Also Published As

Publication number Publication date
CN101512499A (zh) 2009-08-19
EP2069940A1 (en) 2009-06-17
US7805589B2 (en) 2010-09-28
CN101512499B (zh) 2012-11-07
KR20090049060A (ko) 2009-05-15
WO2008027951A1 (en) 2008-03-06
US20080059756A1 (en) 2008-03-06
JP5096470B2 (ja) 2012-12-12
KR101076245B1 (ko) 2011-10-26

Similar Documents

Publication Publication Date Title
JP5096470B2 (ja) 相対アドレス生成
US8345053B2 (en) Graphics processors with parallel scheduling and execution of threads
CN105630441B (zh) 一种基于统一染色技术的gpu系统
KR101118486B1 (ko) 온-디맨드 멀티 스레드 멀티미디어 프로세서
KR101012625B1 (ko) 산술 유닛 및 기본 함수 유닛을 갖는 그래픽 프로세서
CN106575430B (zh) 用于像素哈希的方法和装置
WO2013012668A1 (en) Virtual gpu
US10089115B2 (en) Apparatus to optimize GPU thread shared local memory access
US8786618B2 (en) Shader program headers
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
JP5435253B2 (ja) グラフィックスプロセッサユニットパイプラインにおける条件付き実行ビット
TWI427552B (zh) 圖形處理器管線內之共享可讀取與可寫入全域值
US8427490B1 (en) Validating a graphics pipeline using pre-determined schedules
CN115861026B (zh) 数据处理方法、装置、计算机设备、存储介质
Wu et al. Designing a 3D Graphics Processor for Mobile Applications

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120117

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120416

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120423

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120516

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120523

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120618

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120625

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120704

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120920

R150 Certificate of patent or registration of utility model

Ref document number: 5096470

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

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