JP4941148B2 - Gpuにおけるページマッピングのための専用機構 - Google Patents

Gpuにおけるページマッピングのための専用機構 Download PDF

Info

Publication number
JP4941148B2
JP4941148B2 JP2007189725A JP2007189725A JP4941148B2 JP 4941148 B2 JP4941148 B2 JP 4941148B2 JP 2007189725 A JP2007189725 A JP 2007189725A JP 2007189725 A JP2007189725 A JP 2007189725A JP 4941148 B2 JP4941148 B2 JP 4941148B2
Authority
JP
Japan
Prior art keywords
address
page table
memory
cache
graphics processor
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
JP2007189725A
Other languages
English (en)
Other versions
JP2008033928A (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 JP2008033928A publication Critical patent/JP2008033928A/ja
Application granted granted Critical
Publication of JP4941148B2 publication Critical patent/JP4941148B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • 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
    • 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
    • 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
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/654Look-ahead translation
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2330/00Aspects of power supply; Aspects of display protection and defect management
    • G09G2330/02Details of power systems and of start or stop of display operation
    • G09G2330/026Arrangements or methods related to booting a display
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/121Frame memory handling using a cache memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/125Frame memory handling using unified memory architecture [UMA]
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

関連出願の相互参照
[0001]本願は、2006年7月31日に出願された米国仮出願第60/820,952号及び2006年8月1日に出願された米国仮出願第60/821,127号の利益を主張する。これら両仮出願は、共に、Tong氏等によるものであり、「DEDICATED MECHANISM FOR PAGE-MAPPING IN A GPU」を発明の名称とするものである
[0002]本願は、共同出願係属中の、2005年10月18日に出願された「Zero Frame Buffer」を発明の名称とする米国特許出願第11/253,438号、2005年3月10日に出願された「Memory Management for Virtual Address Space with Translation Units of Variable Range Size」を発明の名称とする米国特許出願第11/077,662号、及び2005年3月10日に出願された「Memory Management for Virtual Address Space with Translation units of Variable Range Size」を発明の名称とする米国特許出願第11/077662号に関連している
背景
[0003]本発明は、システムメモリディスプレイデータアクセスのために必要とされるアドレス変換情報を検索するためのシステムメモリアクセスを排除又は減少させることに関するものである。
[0004]グラフィックス処理装置(GPU)は、モニタ又は他のディスプレイデバイス上にグラフィックスイメージを生成するため、コンピュータ、ビデオゲーム、カーナビゲーション及びその他の電子システムの一部分として含まれる。開発された当初のGPUは、フレームバッファと称されるローカルメモリにピクセル値、即ち、実際に表示されるカラーを記憶させていた。
[0005]それ以来、GPUの複雑さ、特に、カリフォルニア州サンタクララのNVIDIACorporationによって設計開発されるGPUの複雑さは、非常に増してきている。フレームバッファに記憶されるデータのサイズ及び複雑さも同様に増してきている。現在では、このグラフィックスデータは、ピクセル値だけでなく、テクスチャ、テクスチャ記述子、シェーダープログラム命令及び他のデータ及びコマンドをも含んでいる。現在では、これらフレームバッファは、それらの役割が拡張されたことの認識に基づいて、グラフィックスメモリと称されている。
[0006]最近まで、GPUは、アドバンスドグラフィックスポート又はAGPバスを経由してコンピュータシステムにおける中央処理装置及びその他のデバイスと通信している。このバスのより高速なバージョンが開発されたが、このバージョンでは、GPUへ十分なグラフィックスデータを分配することができない。したがって、それらグラフィックスデータは、AGPポートを通さなくともGPUに対して利用できるようなローカルメモリに記憶されていた。都合の良いことには、ペリフェラル・コンポーネント・インターコネクト(PCI)標準又はPCIE(PCIエクスプレス)のエンハンストバージョンである新しいバスが開発されている。このバスのプロトコル及びそのインプリメンテーションは、NVIDIACorporationによって大幅に改善され改良されてきた。その結果として、PCIEバスを経由してアクセスされるシステムメモリを有利に使用することができ、ローカルメモリを排除することができた。
[0007]グラフィックスメモリロケーションの変化の結果として、種々な困難な事項が生じてきている。その一つとして、GPUは、仮想アドレスを使用してデータ記憶場所を追跡するのに対して、システムメモリは、物理アドレスを使用しているということがある。システムメモリからデータを読み取るため、GPUは、その仮想アドレスを物理アドレスに変換する。このような変換のために過大な時間がかかる場合に、データは、十分に高速なペースにてシステムメモリによってGPUへ与えられないことになってしまう。これは、特に、GPUへ絶えず素早く与えられなければならないようなピクセル又はディスプレイデータについて言えることである。
[0008]このようなアドレス変換は、仮想アドレスを物理アドレスに変換するのに必要とされる情報がGPUに記憶されていない場合には、過大な時間を要することになってしまう。詳述すると、この変換情報がGPUにて得られない場合には、システムメモリからそれを検索するための第1のメモリアクセスが必要とされる。システムメモリからディスプレイデータ又はその他の必要なデータを読み取るのは、その後の第2のメモリアクセスにおいてでないとできないのである。したがって、第1のメモリアクセスによって与えられるアドレスがないと第2のメモリアクセスを進めることはできないので、第1のメモリアクセスは第2のメモリアクセスの前に行われるべき直列的なものである。この付加的な第1のメモリアクセスは、1マイクロ秒程もの時間長さを要することがあるもので、これにより、ディスプレイデータ又はその他の必要データを読み取る速度が大きく低下してしまうことがある。
[0009]したがって、システムメモリからアドレス変換情報を検索するためのこのような付加的なメモリアクセスを排除又は減少させる回路、方法及び装置が必要とされている。
概要
[0010]したがって、本発明の実施形態は、システムメモリディスプレイデータアクセスのために必要とされるアドレス変換情報を検索するためのシステムメモリアクセスを排除又は減少させる回路、方法及び装置を提供するものである。特定すると、アドレス変換情報は、グラフィックスプロセッサに記憶される。こうすることにより、変換情報を検索するための別々のシステムメモリアクセスの必要が減少又は排除される。付加的なメモリアクセスが必要とされないので、プロセッサは、より素早くアドレスを変換し、システムメモリから必要とされるディスプレイデータ又は他のデータを読み取ることができる。
[0011]本発明の一つの典型的な実施形態によれば、グラフィックス変換ルックアサイドバッファ(グラフィックスTLB)と称されるキャッシュに、GPUによって使用される仮想アドレスをシステムメモリによって使用される物理アドレスに変換するのに使用されるエントリーを、予め格納すること(以下、プリポピュレーティングという)により、電源投入に続くアドレス変換情報のためのシステムメモリアクセスを排除又は減少させる。本発明の特定の実施形態では、グラフィックスTLBは、ディスプレイデータのために必要とされるアドレス情報をプリポピュレーティングする。しかし、本発明の他の実施形態では、他のタイプのデータに対するアドレスをグラフィックスTLBにプリポピュレーティングすることができる。こうすることにより、さもなければ必要とされてしまうようなアドレス変換情報を検索するための付加的なシステムメモリアクセスを無くすることができる。
[0012]電源投入後、必要とされる変換情報が確実にグラフィックスプロセッサに維持されているようにするため、ディスプレイアクセスのために必要とされるグラフィックスTLBにおけるエントリーは、保護(以下、ロックという)され、又は別の仕方で制限される。これは、グラグラフィックスTLBにフラグ又は他の識別情報を記憶させることにより、又は、その他の適当な方法により、グラフィックスTLBにおける特定のロケーションへのアクセスを制限することによって行うことができる。こうすることにより、データが上書きされるのを防止することができる。このようなデータの上書きがなされてしまうと、もう一度システムメモリから読み取ることが必要となってしまう。
[0013]本発明の別の典型的な実施形態によれば、システムBIOSによって与えられるシステムメモリの大きな連続ブロックに対する基準アドレス(以下、ベースアドレスという)及びアドレスレンジを記憶することによって、アドレス変換情報のためのメモリアクセスを排除又は減少させる。電源投入又は他の適当なイベントにて、システムBIOSは、「カーブアウト」と称される大きなメモリブロックをGPUへ割り当てる。GPUは、ディスプレイデータ又は他のデータのためにこれを使用することができる。GPUは、チップに、例えば、ハードウエアレジスタにベースアドレス及びレンジを記憶させる。
[0014]GPUによって使用される仮想アドレスを物理アドレスに変換すべきときには、その仮想アドレスがカーブアウトのレンジ内にあるかを知るためのレンジチェックがなされる。本発明の特定の実施形態では、これは、カーブアウトのベースアドレスをゼロの仮想アドレスに対応させることによって簡単化される。このとき、カーブアウトにおける最も高い仮想アドレスが、物理アドレスのレンジに対応する。変換すべきアドレスがカーブアウトに対する仮想アドレスのレンジ内にある場合に、その仮想アドレスは、その仮想アドレスにベースアドレスを加えることによって物理アドレスに変換されうる。変換すべきアドレスがこのレンジ内に無い場合に、それは、グラフィックスTLB又はページテーブルを使用して変換することができる。
[0015]本発明の種々な実施形態は、これらの特徴又はここで説明するその他の特徴のうちの一つ以上のものを組み入れることができる。以下の詳細な説明及び添付図面を参照することにより、本発明の特性及び効果についてより良く理解できよう。
典型的な実施形態の説明
[0024]図1は、本発明の一つの実施形態を組み入れることにより改善されるコンピュータシステムのブロック図である。このブロック図は、中央処理装置(CPU)又はホストプロセッサ100、システムプラットフォームプロセッサ(SPP)110、システムメモリ120、グラフィックス処理装置(GPU)130、メディア通信プロセッサ(MCP)150、ネットワーク160並びに内部及び周辺デバイス270を含む。フレームバッファ、ローカル又はグラフィックスメモリ140も含まれているが、点線で示されている。その点線は、従来のコンピュータシステムでは、このメモリが含まれているが、本発明の実施形態によれば、このメモリを排除できることを示している。この図は、他の添付図と同様に、例示のために示すものに過ぎず、本発明の可能な実施形態を限定するものでもなく、特許請求の範囲を限定するものでもない。
[0025]CPU100は、ホストバス105を経由してSPP110に接続する。SPP110は、PCIEバス135を経由してグラフィックス処理装置130と通信する。SPP110は、メモリバス125を通してシステムメモリ120からデータを読み取ったり、システムメモリ120へデータを書き込んだりする。MCP150は、ハイパートランスポートバス155のような高速接続を通してSPP110と通信し、ネットワーク160並びに内部及び周辺デバイス170をコンピュータシステムの他の構成部分へ接続する。グラフィックス処理装置130は、PCIEバス135を通してデータを受け取り、モニタ又は他の表示デバイス(図示していない)上のディスプレイのためのグラフィック及びビデオイメージを生成する。本発明の他の実施形態では、グラフィックス処理装置は、SPP110に代えて使用される統合グラフィックスプロセッサ(IGP)に含まれる。更に他の実施形態では、汎用GPUを、GPU130として使用することができる。
[0026]CPU100は、Intel Corporation又はその他のサプライヤーによって製造されているような当業者によく知られたプロセッサであってよい。SPP110及びMCP150は、普通には、チップセットと称される。システムメモリ120は、しばしば、多数のデュアルインラインメモリモジュール(DIMM)に配列された多数のダイナミックランダムアクセスメモリデバイスである。グラフィックス処理装置130、SPP110、MCP150及びIGPは、使用されるのであれば、NVIDIACorporationによって製造されるのが好ましい。
[0027]グラフィックス処理装置130は、グラフィックスカード上に配設することができる。一方、CPU100、システムプラットフォームプロセッサ110、システムメモリ120及びメディア通信プロセッサ150は、コンピュータシステムマザーボード上に配設することができる。グラフィックス処理装置130を含むグラフィックスカードは、典型的には、グラフィックス処理装置を取り付けたプリント回路板である。このプリント回路板は、典型的には、コネクタ、例えば、PCIEコネクタが取り付けられており、そのコネクタは、マザーボードに含まれたPCIEスロットに嵌合する。本発明の他の実施形態では、グラフィックスプロセッサは、マザーボードに含まれるか、又は、IGP内に組み込まれる。
[0028]例示したコンピュータシステムのようなコンピュータシステムは、一つより多いGPU130を含むことができる。また、それらのグラフィックス処理装置の各々を、別々のグラフィックスカードに配設することができる。これらのグラフィックスカードの2つ以上のものを、ジャンパ又はその他の接続により一緒に接合することができる。このような技術の一つである、先駆的なSLI(商標名)がNVIDIACorporationによって開発されている。本発明の他の実施形態では、一つ以上のGPUを一つ以上のグラフィックスカード上に配設し、他の一つ以上のGPUをマザーボード上に配設することができる。
[0029]以前に開発されたコンピュータシステムでは、GPU130は、AGPバスを経由してノースブリッジのようなところでシステムプラットフォームプロセッサ110又は他のデバイスと通信していた。不都合なことに、AGPバスは、必要とされる速度でGPU130へデータを供給することができなかった。したがって、GPUの使用のためにフレームバッファ140が設けられていた。このメモリにより、データをAGPボトルネックに渡す必要なしに、データへのアクセスが可能となった。
[0030]現在では、PCIE及びハイパートランスポートのようなより高速のデータ転送プロトコルを利用できるようになってきている。特に、改良PCIEインターフェースが、NVIDIA Corporationによって開発されている。したがって、GPU130からシステムメモリ120までの帯域幅が大きく増大されてきている。かくして、本発明の実施形態は、フレームバッファ140を排除しようとするものである。フレームバッファを排除するのに使用できる別の方法及び回路の実施形態については、2005年10月18日に出願された共同出願係属中の「Zero Frame Buffer」を発明の名称とする米国特許出願第11/253438号に開示されている
[0031]本発明の実施形態によって可能とされるフレームバッファの排除により、これらのDRAMをなくすのみならず、同様の付加的な節約をなすことがきる。例えば、それらメモリへの電力供給を制御するのに典型的には電圧調整器が使用されており、電源のフィルタリングを行なうのにキャパシタが使用されている。これらのDRAM、調整器及びキャパシタを排除することにより、コストの節約ができ、これにより、グラフィックスカードの部品表(BOM)を削減することができる。その上、ボードレイアウトが簡単化され、ボードスペースが減少され、グラフィックカードのテスティングが簡単化される。これらの要因により、研究開発及び設計費、及びその他の工学及びテスト費が削減され、それにより、本発明の実施形態を組み入れたグラフィックスカードのためのグロスマージンが増大される。
[0032]本発明の実施形態は、ゼロフレームバッファグラフィックスプロセッサの性能を改善するのによく適しているが、限定又はオンチップメモリ又は限定ローカルメモリを有するようなグラフィックスプロセッサを含めてその他のグラフィックスプロセッサもまた、本発明の実施形態を組み入れることにより改善される。また、この実施形態は本発明の一つの実施形態を組み入れることによって改善される特定のタイプのコンピュータシステムを提供しているのであるが、他のタイプの電子システム又はコンピュータシステムも又改善することができる。例えば、ビデオ及びその他のゲームシステム、ナビゲーション、セットトップボックス、パチンコマシン並びにその他のタイプのシステムもまた、本発明の実施形態を組み入れることにより改善することができる。
[0033]また、ここに説明するこれらのタイプのコンピュータシステム及び他の電子システムは、今のところ普通のものであるが、他のタイプのコンピュータシステム及び他の電子システムが開発されているところである。また、将来においては、更に別のものが開発されてくるであろう。それらのうちの多くのものもまた、本発明の実施形態を組み入れることによって改善できると考えられる。したがって、ここに列挙した特定の実施形態は、本来的に説明のためのものであり、これらは、本発明の可能な実施形態を限定するものでもなく、特許請求の範囲を限定するものでもない。
[0034]図2は、本発明の一つの実施形態を組み入れることによって改善される別のコンピュータシステムのブロック図である。このブロック図は、中央処理装置又はホストプロセッサ200、SPP210、システムメモリ220、グラフィックス処理装置230、MCP250、ネットワーク260並びに内部及び周辺デバイス270を含む。また、フレームバッファ、ローカル又はグラフィックスメモリ240が含まれているが、それは、排除されることを強調するため点線で示されている。
[0035]CPU200は、ホストバス205を経由してSPP210と通信し、メモリバス225を経由してシステムメモリ220にアクセスする。GPU230は、PCIEバス235を通してSPP210と通信し、メモリバス245を通してローカルメモリと通信する。MCP250は、ハイパートランスポートバス255のような高速度接続を経由してSPP210と通信し、ネットワーク260並びに内部及び周辺デバイス270をそのコンピュータシステムの他の構成部分へ接続する。
[0036]前述したように、中央処理装置又はホストプロセッサ200は、IntelCorporation又は他のサプライヤーによって製造されている中央処理装置のうちの一つであって良く、当業者には良く知られているものである。グラフィックスプロセッサ230、統合グラフィックスプロセッサ210並びにメディア及び通信プロセッサ250は、NVIDIACorporationによって与えられるのが好ましい。
[0037]図1及び図2におけるフレームバッファ140及び240を排除し、また、本発明の他の実施形態において他のフレームバッファを排除することは簡単なことではない。例えば、システムメモリにデータを記憶させたりシステムメモリからデータを読み取ったりするのに使用されるアドレスについての困難な事項が生ずる。
[0038]GPUがデータを記憶するためローカルメモリを使用しているときには、そのローカルメモリは、厳密に、そのGPUの制御下にある。典型的には、他の回路は、そのローカルメモリへアクセスできないものとされている。これにより、GPUが適当と考えるどのような仕方でもアドレスを追尾し割り当てることができるようにされている。しかしながら、システムメモリは、複数の回路によって使用され、オペレーティングシステムによってスペースがそれらの回路に割り当てられている。オペレーティングシステムによってGPUへ割り当てられたスペースは、一つの連続メモリセクションを形成するものでありうる。より多くの場合、GPUへ割り当てられたスペースは、多くのブロック又はセクションへ分割されており、それらの幾つかは、異なるサイズを有していることがある。これらのブロック又はセクションは、初期アドレス、開始アドレス又はベースアドレス及びアドレスのメモリサイズ又はレンジによって記述できる。
[0039]グラフィックス処理装置が実際のシステムメモリアドレスを使用するのは難しく非効率的である。なぜならば、GPUへ与えられるアドレスは、複数の独立したブロックにて割り当てられているからである。また、GPUへ与えられるアドレスは、電力がターンオンされる毎に、又はメモリアドレスが別の仕方で再割り当てされる毎に、変化することがある。GPU上で実行されるソフトウエアがシステムメモリにおける実際の物理アドレスとは独立している仮想アドレスを使用する方がはるかに容易である。詳述すると、GPUは、メモリスペースを一つの大きな連続ブロックとして取り扱うが、一方、メモリは、幾つかのより小さい別々のブロックにてGPUへ割り当てられている。したがって、データがシステムメモリへ書き込まれたりシステムメモリから読み取られたりするとき、GPUによって使用される仮想アドレスとシステムメモリによって使用される物理アドレスとの間の変換が行われる。このような変換は、エントリーとして仮想アドレス及びそれらの対応する物理アドレス相当値を含むテーブルを使用して行うことができる。これらのテーブルは、ページテーブルと称され、一方、それらのエントリーは、ページテーブルエントリー(PTE)と称される。
[0040]これらのページテーブルは、GPUに入れるには大き過ぎ、そうすることは、コスト制約上望ましくない。したがって、ページテーブルは、システムメモリに記憶される。都合の悪いことに、こうすることは、データがシステムメモリから必要とされる毎に、必要とされるページテーブルエントリーを検索するための第1の又は付加的なメモリアクセスが必要とされる。そして、必要とされるデータを検索するための第2のメモリアクセスが必要とされることを意味している。したがって、本発明の実施形態では、ページテーブルにおけるデータのうちの幾つかのものが、GPUのグラフィックスTLBにキャッシュされる。
[0041]ページテーブルエントリーが必要とされ、そのページテーブルエントリーがGPUのグラフィックスTLBにて利用できるときには、ヒットと称され、アドレス変換に進むことができる。そのページテーブルエントリーがGPUのグラフィックスTLBに記憶されていない場合には、ミスと称される。この場合には、必要とされるページテーブルエントリーは、システムメモリにおけるページテーブルから検索される。
[0042]必要とされるページテーブルエントリーが検索された後は、この同じページテーブルエントリーが再び必要とされる可能性は高い。したがって、メモリアクセスの回数を減少させるため、そのページテーブルエントリーをグラフィックスTLBに記憶させておくのが望ましい。キャッシュに空の場所がない場合には、最近使用されていないページテーブルエントリーに対して、この新しいページテーブルエントリーで上書き又は放逐することができる。本発明の種々な実施形態では、放逐前に、現在キャッシュされているエントリーがシステムメモリから読み取られた後にそのグラフィックス処理装置によって変更されているかを判定するためのチェックがなされる。それが変更されている場合には、その新しいページテーブルエントリーでそのグラフィックスTLBにて上書きする前に、その更新されたページテーブルエントリーをシステムメモリへと書込み戻すようなライトバックオペレーションを行う。本発明の他の実施形態では、このようなライトバック手順は行われない。
[0043]本発明の特定の実施形態では、ページテーブルは、システムが割り当てる最小粒度に基づいてインデックスを付与される。例えば、PTEは、最小で44KBブロック又はページを表すことができる。したがって、仮想アドレスを16KBで分割し、それからエントリーのサイズで乗算することにより、ページテーブルにおける問題のインデックスが生成される。グラフィックスTLBのミス後、GPUは、ページテーブルエントリーを見出すため前述のインデックスを使用する。この特定の実施形態では、ページテーブルエントリーは、4KBより大きい一つ以上のブロックにマッピングすることができる。例えば、ページテーブルエントリーは、最小で4つの4KBブロックにマッピングすることができ、また、4KBより大きく最大で総計256KBの4、8又は16ブロックにマッピングすることができる。このようなページテーブルエントリーがキャッシュにロードされるとき、グラフィックスTLBは、単一PTEである単一グラフィックスTLBエントリーを参照することにより、その256KB内に仮想アドレスを見出すことができる。この場合において、ページテーブル自体は、各々が少なくとも16KBにマッピングされる16バイトエントリーとして構成される。したがって、その256KBページテーブルエントリーは、仮想アドレススペースのその256KB内に入るすべてのページテーブルロケーションにコピーされている。したがって、この実施形態では、正確に同じ情報を有する16ページテーブルエントリーがある。その256KB内のミスは、それらの同一のエントリーのうちの一つを読み取る。
[0044]前述したように、必要とされるページテーブルエントリーがグラフィックスTLBにて利用できない場合には、そのエントリーを検索するための付加的なメモリアクセスが必要とされる。データへの定常的に絶えずアクセスを必要とするような特定のグラフィックスファンクションの場合には、このような付加的なメモリアクセスは非常に望ましくないものである。例えば、グラフィックス処理装置は、必要とされる速度でイメージデータをモニタへ与えることができるようにディスプレイデータに対して信頼性のあるアクセスをする必要がある。過大なメモリアクセスが必要とされる場合には、その結果生ずる待ち時間のため、モニタへのピクセルデータの流れが中断されてしまい、それにより、グラフィックスイメージが乱れてしまうことがある。
[0045]詳述すると、ディスプレイデータアクセスのためのアドレス変換情報がシステムメモリから読み取られる必要がある場合には、そのアクセスは、後のデータアクセスに対して直列的なものである。即ち、必要とされるディスプレイデータがどこに記憶されているかをGPUが知ることができるように、アドレス変換情報をメモリから読み取らなければならない。この付加的なメモリアクセスによって生ずる付加的な待ち時間により、ディスプレイデータがモニタへ与えられる速度が減少させられ、グラフィックスイメージが更に又乱されてしまう。また、これらの付加的なメモリアクセスにより、PCIEバスのトラフィックが増大させられ、システムメモリ帯域幅が浪費されてしまう。
[0046]アドレス変換情報を検索するための付加的なメモリ読取りは、グラフィックスTLBが空又はクリアされるときの電源投入又はその他のイベント時に特に起こりやすい。詳述すると、コンピュータシステムの電源投入時に、基本入出力システム(BIOS)は、GPUがその構成にローカルフレームバッファメモリを有していると予想する。したがって、従来のシステムでは、システムBIOSは、グラフィックスプロセッサによる使用のためシステムメモリにスペースを割り当てない。むしろ、GPUは、オペレーティングシステムから特定の量のシステムメモリスペースを要求する。メモリスペースがオペレーティングシステムによって割り当てられた後、GPUは、システムメモリのページテーブルにページテーブルエントリーを記憶することができ、グラフィックスTLBは空である。ディスプレイデータが必要とされるとき、PTEに対する各要求においてミスが生じ、それにより、付加的なメモリアクセスが生ずことになる。
[0047]したがって、本発明の実施形態によれば、グラフィックスTLBにページテーブルエントリーをプリポピュレーティングする。即ち、グラフィックスTLBは、ページテーブルエントリーを必要とする要求がキャッシュミスとなる前に、それらページテーブルエントリーで満たされる。このプリポピュレーティングは、典型的には、少なくともディスプレイデータの検索のために必要とされるページテーブルエントリーを含むが、その他のページテーブルエントリーも又グラフィックスTLBにプリポピュレーティングすることができる。更に、ページテーブルエントリーが放逐されるのを防ぐため、幾つかのエントリーをロックし又はその他の仕方で制限することができる。本発明の特定の実施形態では、ディスプレイデータのために必要とされるページテーブルエントリーがロックされ又は制限されるが、他の実施形態では、その他のタイプのデータをロックし又は制限することができる。このような典型的な一つの実施形態を例示するフローチャートを次の図に示している。
[0048]図3は、本発明の一つの実施形態によりシステムメモリに記憶されたディスプレイデータにアクセスする方法を例示するフローチャートである。この図は、他の添付図と同様に、例示の目的で示されており、本発明の可能な実施形態を限定するものでもなく、特許請求の範囲を限定するものでもない。また、この実施形態及びここに示す他の実施形態は、ディスプレイデータにアクセスするのに特によく適したものであるが、その他のタイプのデータアクセスもまた、本発明の実施形態を組み入れることにより改善することができる。
[0049]この方法においては、GPU、又はより詳細には、GPU上で実行されるドライバ又はリソースマネージャにより、システムメモリから変換情報を検索する必要なしに、GPU自体に記憶された変換情報を使用して仮想アドレスを物理アドレスに変換するようにすることができる。これは、グラフィックスTLBに変換エントリーを初期的にプリポピュレーティング又はプリローディングすることによって行われる。それから、ディスプレイデータに関連したアドレスがロックされ、又は、その他の仕方で上書き又は放逐されないようにされる。
[0050]詳述すると、ステップ310にて、コンピュータ又は他の電子システムが電源投入され、又は、再起動、パワーリセット又は同様のイベントを受ける。ステップ320にて、GPUに対して作動するドライバの部分であるリソースマネージャが、オペレーティングシステムからシステムメモリスペースを要求する。オペレーティングシステムは、ステップ330にてGPUに対してシステムメモリのスペースを割り当てる。
[0051]この実施形態では、CPU上で作動するオペレーティングシステムが、フレームバッファ又はシステムメモリにおけるフレームバッファの割り当てを行っているが、本発明の種々な実施形態では、CPU又はシステムにおける他のデバイス上で実行されるドライバ又はその他のソフトウエアが、このようなタスクを行うようにすることができる。他の実施形態では、このタスクは、オペレーティングシステムとドライバ又は他のソフトウエアのうちの一つ以上のものとで分担される。ステップ340にて、リソースマネージャは、オペレーティングシステムからシステムメモリにおけるスペースに対する物理アドレス情報を受け取る。この情報は、典型的には、少なくとも、システムメモリにおける一つ以上のセクションのベースアドレス及びサイズ又はレンジを含む。
[0052]リソースマネージャは、このとき、GPUによって使用される仮想アドレスをシステムメモリによって使用される物理アドレスに変換するのに必要とされるページテーブルエントリーの数を制限するように、その情報を圧縮又は他の仕方で配列することができる。例えば、オペレーティングシステムによってGPUから割り当てられるシステムメモリスペースの別々ではあるが隣接するブロックを結合して、単一のベースアドレスをスタートアドレスとして使用し、仮想アドレスをインデックス信号として使用するようにすることができる。これを示す実施形態は、2005年3月10日に出願され「Memory Management for Virtual Address Space with Translation Units of Variable Range Size」を発明の名称とする出願係属中の共有の米国特許出願第11/077662号に開示されている。また、この実施形態では、このタスクは、GPU上で作動するドライバの部分であるリソースマネージャによって行われる。他の実施形態では、この実施形態及び他の実施形態において示されるこのタスク及びここに示す他のタスクは、他のソフトウエア、ファームウエア又はハードウエアによって行われるか、分担される。
[0053]ステップ350において、リソース管理プログラムは、変換エントリーをシステムメモリのページテーブルに書き込む。また、リソースマネージャは、グラフィックスTLBにそれらの変換エントリーのうちの少なくとも幾つかをプリロード又はプリポピュレーティングする。ステップ360にて、グラフィックスTLBのうちの幾つか又はすべてをロックするか又は他の仕方で放逐されないようにする。本発明の特定の実施形態では、ディスプレイデータのためのアドレスは、ディスプレイ情報のためのアドレスがアドレス変換情報のための付加的なシステムメモリアクセスを必要とせずに与えられるようにするため、上書き又は放逐されないようにされる。
[0054]このようなロックは、本発明の実施形態に係る種々な方法を使用して行うことが出来る。例えば、多数のクライアントがグラフィックスTLBからデータを読み取ることができるような場合には、それらのクライアントのうちの一つ以上のものが、データを制限されたキャッシュロケーションへ書き込むことができず、プールされるか又は制限されていないかの多数のキャッシュラインのうちの一つへそれらデータを書き込まねばならないように制限することができる。より詳細については、2005年12月8日に出願され「Shared Cache with Client-Specific Replacement Policy」を発明の名称とする出願係属中の共有の米国特許出願第11/298256号に開示されている。他の実施形態では、グラフィックスTLBへ書き込むことのできる回路に制限をすることができるか、又は、フラグのようなデータをグラフィックスTLBにエントリーと共に記憶させることができる。例えば、幾つかのキャッシュラインの存在をグラフィックTLBへ書き込むことのできる回路から隠すことができる。別の仕方として、フラグがセットされる場合に、その関連したキャッシュラインにおけるデータが上書き又は放逐されないようにすることができる。
[0055]ステップ370にて、ディスプレイデータ又は他のデータがシステムメモリから必要とされるとき、GPUによって使用される仮想アドレスは、グラフィックスTLBにおけるページテーブルエントリーを使用して物理アドレスに変換される。詳述すると、仮想アドレスがグラフィックスTLBへ与えられ、対応する物理アドレスが読み取られる。また、この情報がグラフィックスTLBに記憶されていない場合に、アドレス変換を行う前に、その情報は、システムメモリから要求される必要がある。
[0056]本発明の種々な実施形態では、グラフィックスTLBミスの影響を制限するための他の技法を使用することができる。詳述すると、付加的なステップを採用し、メモリアクセス待ち時間を減少させ、それにより、ディスプレイデータの供給に対するキャッシュミスの影響を減少させるようにする。一つの解決策は、PCIE仕様の部分である仮想チャンネルVC1を利用することである。グラフィックスTLBミスが仮想チャンネルVC1を使用する場合には、他の要求をバイパスして、必要とされるエントリーがより素早く検索されるようにすることができる。しかしながら、従来のチップセットでは、仮想チャンネルVC1へのアクセスが許されない。NVIDIACorporationは、このような解決策を本発明に係る方法によって製品において実施することができるのであるが、他のデバイスとの相互運用性のため現在ではそうすることは望ましくない。しかし、将来においては、このような事情は変わるかもしれない。別の解決策としては、グラフィックスTLBミスから生ずる要求を優先順位付けするか又は標識付けすることがある。例えば、要求に高優先度タグを付してフラグ付けすることができる。この解決策は、前述の解決策と同様に相互運用性の点で問題がある。
[0057]図4Aから図4Cは、本発明の一つの実施形態によるディスプレイデータにアクセスする方法中のコンピュータシステムにおけるコマンド及びデータの転送を例示している。この特定の実施形態では、図1のコンピュータシステムが示されているが、図2に示すシステムのような他のシステムにおけるコマンド及びデータの転送も同様である。
[0058]図4Aにおいて、システムの電源投入、リセット、再起動又はその他のイベント時に、GPUは、システムメモリスペースのための要求をオペレーティングシステムへ送る。また、この要求は、GPU上で動作するドライバから出され、詳述すると、ドライバのリソースマネージャ部分がこのような要求をなすことができる。しかしながら、他のハードウエア、ファームウエア又はソフトウエアにより、このような要求をなすこともできる。この要求は、システムプラットフォームプロセッサ410を通してGPU430から中央処理装置400へと渡すことができる。
[0059]図4Bにおいて、オペレーティングシステムは、フレームバッファ又はグラフィックスメモリ422として使用するためシステムメモリのスペースをGPUに対して割り当てる。このフレームバッファ又はグラフィックスメモリ422に記憶されるデータは、ディスプレイデータ、即ち、表示のためのピクセル値、テクスチャ、テクスチャ記述子、シェーダープログラム命令及びその他のデータ及びコマンドを含むことができる。
[0060]この実施形態では、システムメモリ420における割り当てられたスペースであるフレームバッファ422は、連続するものとして示されている。他の実施形態又は例では、その割り当てられたスペースは、連続したものでなくともよく、即ち、それは、別々のもので、複数のセクションに分割されているものでもよい。
[0061]典型的には、システムメモリのセクションの一つ以上のベースアドレス及びレンジを含む情報が、GPUへ渡される。また、本発明の特定の実施形態では、この情報は、GPU430上で作動するドライバのリソースマネージャ部分に渡されるが、他のソフトウエア、ファームウエア又はハードウエアを使用することもできる。この情報は、システムプラットフォームプロセッサ410を経由してCPU400からGPU430へ渡すことができる。
[0062]図4Cでは、GPUは、システムメモリのページテーブルに変換エントリーを書き込む。また、GPUは、グラフィックスTLBに、これらの変換エントリーのうちの少なくとも幾つかをプリロードする。また、これらのエントリーは、GPUによって使用される仮想アドレスをシステムメモリ420におけるフレームバッファ422によって使用される物理アドレスに変換する。
[0063]前述したように、グラフィックスTLBにおけるエントリーのうちの幾つかは、それらが放逐されたり上書きされたりできないように、ロック又はその他の仕方で制限することができる。また、本発明の特定の実施形態では、ピクセル又はディスプレイデータが記憶されているフレームバッファ422のロケーションを識別するアドレスを変換するエントリーがロック又はその他の仕方で制限される。
[0064フレームバッファ422からデータにアクセスする必要があるときには、GPU430によって使用される仮想アドレスが、グラフィックスTLB432を使用して物理アドレスに変換される。このとき、これらの要求は、システムプラットフォームプロセッサ410へ転送され、システムプラットフォームプロセッサ410は、必要とされるデータを読み取り、それをGPU430へ戻す。
[0065]前述の実施形態では、電源投入、又はその他のパワーリセット又は同様の状態に続いて、GPUは、システムメモリにおけるスペースのための要求をオペレーティングシステムへ送る。本発明の他の実施形態では、GPUがシステムメモリのスペースを必要とすることが知られており、要求を行う必要はない。この場合においては、電源投入、リセット、再起動又はその他の適当なイベントに続いて、システムBIOS、オペレーティングシステム、又は他のソフトウエア、ファームウエア又はハードウエアが、システムメモリのスペースを割り当てることができる。これは、モバイルアプリケーションのような制御環境において、特に適したことである。モバイルアプリケーションにおいては、GPUが容易に交換又は代用できず、デスクトップアプリケーションにおいてもしばしば同様である。
[0066]GPUがシステムメモリにおいて使用すべきアドレスを既に知っているようにするか、又は、そのアドレス情報をシステムBIOS又はオペレーティングシステムによってGPUへ渡すようにすることができる。どちらの場合にも、メモリスペースは、メモリの連続した部分であってよく、この場合には、単一アドレス、即ち、ベースアドレスのみをGPUに知らせるか又は与えるだけでよい。別の仕方として、メモリスペースは、別々のもの又は連続していないものでもよく、その場合には、GPUに複数のアドレスを知らせるか又は与える必要がある。典型的には、メモリブロックサイズ又はレンジ情報のような他の情報もまた、GPUへ渡されるか又は知らされる。
[0067]また、本発明の種々な実施形態では、システムメモリのスペースは、電源投入時にオペレーティングシステムによりシステムによって割り当てられ、GPUは、後でさらなるメモリのための要求をなすことができる。このような一つの実施形態では、システムBIOS及びオペレーティングシステムの両者が、GPUによる使用のためのシステムメモリのスペースを割り当てることができる。次の図は、システムBIOSが電源投入時にGPUのためのシステムメモリスペースを割り当てるようにプログラムされるような本発明の一つの実施形態の実施形態を示している。
[0068]図5は、本発明の一つの実施形態によるシステムメモリにおけるディスプレイデータにアクセスする別の方法を例示するフローチャートである。また、本発明の実施形態はディスプレイデータへのアクセスによく適したものであるが、種々な実施形態によれば、このタイプ又は他のタイプのデータへのアクセスもできる。この実施形態において、システムBIOSは、電源投入時に、システムメモリのスペースをGPUによる使用のために割り当てる必要があることを知る。このスペースは、連続したものでも、連続していないものでもよい。また、この実施形態では、システムBIOSが、メモリ及びアドレス情報をGPUのドライバのリソースマネージャ又は他の部分へ渡すが、本発明の他の実施形態では、GPUのドライバのリソースマネージャ又は他の部分が、前もってそのアドレス情報を知っておくことができる。
[0069]詳述すると、ステップ510にて、コンピュータ又は他の電子システムが電源投入する。ステップ520にて、システムBIOS又はオペレーティングシステムの他の適当なソフトウエア、ファームウエア若しくはハードウエアが、GPUによる使用のためのシステムメモリのスペースを割り当てる。そのメモリスペースが連続したものである場合に、システムBIOSは、GPU上で作動するリソースマネージャ又はドライバにベースアドレスを与える。そのメモリスペースが隣接したものでない場合に、システムBIOSは、多数のベースアドレスを与える。各ベースアドレスは、典型的には、サイズ又はアドレスレンジ情報のようなメモリブロックサイズ情報を伴う。典型的には、メモリスペースは、カーブアウト、即ち、連続したメモリスペースである。この情報は、典型的には、アドレスレンジ情報を伴う。
[0070]ステップ540にて、そのベースアドレス及びレンジがGPUの使用のために記憶される。その後、ステップ550にて、仮想アドレスは、仮想アドレスをインデックスとして使用して物理アドレスに変換することができる。例えば、本発明の特定の実施形態では、仮想アドレスは、その仮想アドレスをそのベースアドレスに加えることによって物理アドレスに変換することができる。
[0071]詳述すると、仮想アドレスを物理アドレスに変換すべきときには、レンジチェックが行われる。記憶されている物理ベースアドレスがゼロの仮想アドレスに対応するときには、その仮想アドレスがそのレンジ内にある場合に、仮想アドレスを物理ベースアドレスに加算することにより、仮想アドレスを変換することができる。同様に、記憶されている物理ベースアドレスがXの仮想アドレスに対応するときには、その仮想アドレスがそのレンジ内にある場合に、仮想アドレスを物理ベースアドレスに加算しXを減算することによって、仮想アドレスを変換することができる。その仮想アドレスがそのレンジ内にない場合には、前述したように、グラフィックスTLB又はページテーブルエントリーを使用してその仮想アドレスを変換することができる。
[0072]図6は、本発明の一つの実施形態によるディスプレイデータにアクセスする方法中のコンピュータシステムにおけるコマンド及びデータの転送を例示している。電源投入時に、システムBIOSは、GPU630による使用のためシステムメモリ620のスペース、即ち、カーブアウト622を割り当てる。
[0073]GPU630は、システムメモリ620における割り当てられたスペース又はカーブアウト622のためのベースアドレス(又は複数のベースアドレス)を検索し記憶する。このデータは、グラフィックスTLB632に記憶することができ、又は、このデータは、他の場所、例えば、GPU630のハードウエハレジスタに記憶することができる。このアドレスは、カーブアウト622のレンジと共に、例えば、ハードウエアレジスタに記憶される。
[0074]システムメモリ620におけるフレームバッファ622からデータを読み取るべきときには、GPU630によって使用される仮想アドレスは、その仮想アドレスをインデックスとして取り扱うことにより、システムメモリによって使用される物理アドレスに変換することができる。また、本発明の特定の実施形態では、カーブアウトアドレスレンジにおける仮想アドレスは、その仮想アドレスをそのベースアドレスに加えることにより物理アドレスに変換される。即ち、そのベースアドレスがゼロの仮想アドレスに対応する場合に、仮想アドレスは、前述したように、それらをベースアドレスに加えることによって物理アドレスに変換することができる。また、そのレンジの外の仮想アドレスは、前述したように、グラフィックスTLB及びページテーブルを使用して変換することができる。
[0075]図7は、本発明の一つの実施形態に係るグラフィックス処理装置のブロック図である。グラフィックス処理装置700のこのブロック図によれば、PCIEインターフェース710、グラフィックスパイプライン720、グラフィックスTLB730及びロジック回路740が含まれる。PCIEインターフェース710は、PCIEバス750を経由してデータの送受信を行う。また、本発明の他の実施形態では、現在開発されている又は開発中の他のタイプのバスを使用することができ、また、将来開発される他のタイプのバスを使用することもできる。グラフィックス処理装置は、典型的には、一つの集積回路上に形成されるが、ある実施形態では、複数の集積回路にてGPU700を構成することもできる。
[0076]グラフィックスパイプライン720は、PCIEインターフェースからデータを受け取り、モニタ又は他のデバイス上に表示するためのデータを与える。グラフィックスTLB730は、グラフィックスパイプライン720によって使用される仮想メモリアドレスをシステムメモリによって使用される物理メモリアドレスに変換するのに使用されるページテーブルエントリーを記憶する。ロジック回路740は、グラフィックスTLB730を制御し、そこに記憶されるデータのロック又は他の制限のためのチェックを行い、キャッシュからのデータの読取りキャッシュへのデータの書込みを行う。
[0077]図8は、本発明の一つの実施形態によるグラフィックスカードを例示する図である。このグラフィックスカード800は、グラフィックス処理装置810、バスコネクタ820及び第2のグラフィックスカードへのコネクタ830を含む。バスコネクタ820は、PCIEスロット、例えば、コンピュータシステムのマザーボードのPCIEオンスロットに嵌合するように設計されたPCIEコネクタであってもよい。第2のカードへのコネクタ830は、一つ以上の他のグラフィックスカードへのジャンパ又は他の接続に嵌合するように構成することができる。電力供給調整器及びキャパシタのような他のデバイスを含むことができる。このグラフィックスカードにはメモリデバイスは含まれていないことに注意されたい。
[0078]本発明の典型的な実施形態についての前述の記載は、例示的説明の目的でなされたものである。これら記載は、本発明の実施形態のすべてを説明し尽くそうとしているものでもなく、本発明をこれらの記載された詳細な構成に限定しようとしているものでもなく、前述の教示に徴して多くの変形態様がありうるものである。これら実施形態は、当業者が意図した特定の使用に適したような種々な変形態様及び種々な変形態様において本発明を最良に利用できるように本発明の原理及びその実際のアプリケーションを最良に説明するために、選択され記載されたものである。
本発明の一つの実施形態を組み入れることにより改善されるコンピュータシステムのブロック図である。 本発明の一つの実施形態を組み入れることにより改善される別のコンピュータシステムのブロック図である。 本発明の一つの実施形態によるシステムメモリに記憶されたディスプレイデータにアクセスする方法を例示するフローチャートである。 本発明の一つの実施形態によるディスプレイデータにアクセスする方法中のコンピュータシステムにおけるコマンド及びデータの転送を例示する。 本発明の一つの実施形態によるディスプレイデータにアクセスする方法中のコンピュータシステムにおけるコマンド及びデータの転送を例示する。 本発明の一つの実施形態によるディスプレイデータにアクセスする方法中のコンピュータシステムにおけるコマンド及びデータの転送を例示する。 本発明の一つの実施形態によるシステムメモリにおけるディスプレイデータにアクセスする別の方法を例示するフローチャートである。 本発明の一つの実施形態によるディスプレイデータにアクセスする方法中のコンピュータシステムにおけるコマンド及びデータの転送を例示する。 本発明の一つの実施形態にしたがうグラフィックス処理装置のブロック図である。 本発明の一つの実施形態によるグラフィックスカードを示す図である。
符号の説明
100・・・中央処理装置(CPU)、105・・・ホストバス、110・・・システムプラットフォームプロセッサ(SPP)、120・・・システムメモリ、125・・・メモリバス、130・・・グラフィックス処理装置(GPU)、135・・・PCIEバス、140・・・フレームバッファ、145・・・メモリバス、150・・・メディア通信プロセッサ(MCP)、155・・・ハイパートランスポートバス、160・・・ネットワーク、170・・・内部及び周辺デバイス、200・・・CPU、205・・・ホストバス、210・・・SPP、220・・・システムメモリ、225・・・メモリバス、230・・・GPU、235・・・PCIEバス、240・・・フレームバッファ、245・・・メモリバス、250・・・MCP、255・・・ハイパートランスポートバス、260・・・ネットワーク、270・・・内部及び周辺デバイス、400・・・CPU、405・・・ホストバス、410・・・SPP、420・・・システムメモリ、422・・・フレームバッファ又はページテーブル、425・・・メモリバス、430・・・GPU、432・・・グラフィックスTLB、435・・・PCIEバス、450・・・MCP、460・・・ネットワーク、470・・・内部及び周辺デバイス、600・・・CPU、605・・・ホストバス、610・・・SPP、620・・・システムメモリ、622・・・カーブアウト、625・・・メモリバス、630・・・GPU、632・・・アドレス、レンジ、635・・・PCIEバス、650・・・MCP、660・・・ネットワーク、670・・・内部及び周辺デバイス、700・・・グラフィックス処理装置、710・・・PCIEインターフェース、720・・・グラフィックスパイプライン、730・・・グラフィックスTLB、740・・・ロジック回路、750・・・PCIEバス、800・・・グラフィックスカード、810・・・グラフィックス処理装置、820・・・バスコネクタ、830・・・第2のカードへのコネクタ。

Claims (19)

  1. グラフィックスプロセッサによって使用される仮想アドレスを、システムメモリによって使用される物理メモリアドレスに変換する前記グラフィックプロセッサが実行する方法であって、
    前記システムメモリは、ページテーブルを記憶するように構成されており、前記ページテーブルは、複数のページテーブルエントリーを有し、該複数のページテーブルエントリーは、前記仮想アドレスと対応する物理メモリアドレスとを含み、
    前記グラフィックスプロセッサは、キャッシュを備えており、
    当該方法は、
    前記システムメモリにおけるメモリロケーションへのアクセスを要求するメモリーロケーションアクセス要求ステップと、
    前記システムメモリにおけるメモリロケーションの少なくとも一つのブロックのためのアドレス情報であって、少なくとも一つの物理メモリアドレスを識別する情報を含むアドレス情報を受け取るアドレス情報受取りステップと、
    前記複数のページテーブルエントリーの少なくともいくつか前記キャッシュに記憶させるページテーブルエントリーキャッシュ記憶ステップと、
    前記キャッシュにおいて前記複数のページテーブルエントリーの前記少なくともいくつかをロックするステップと、
    を備え、
    キャッシュミスを待たずに、前記アドレス情報が受け取られ、前記複数のページテーブルエントリーの前記少なくともいくつかが前記キャッシュに記憶されるようにする、方法。
  2. 前記複数のページテーブルエントリーを前記システムメモリに記憶させるページテーブルエントリーシステムメモリ記憶ステップを更に備える、請求項1に記載の方法。
  3. 前記グラフィックスプロセッサは、グラフィックス処理装置である、請求項に記載の方法。
  4. 前記グラフィックスプロセッサは、統合グラフィックスプロセッサに含まれる、請求項に記載の方法。
  5. 前記システムメモリにおけるメモリロケーションへのアクセスのための前記要求は、オペレーティングシステムに対してなされる、請求項に記載の方法。
  6. 少なくとも一つの物理メモリアドレスを識別する前記情報は、ベースアドレス及びメモリブロックサイズを含む、請求項に記載の方法。
  7. グラフィックスプロセッサによって使用される仮想アドレスを、システムメモリによって使用される物理メモリアドレスに変換するグラフィックスプロセッサであって、
    前記システムメモリは、ページテーブルを記憶するように構成されており、前記ページテーブルは、複数のページテーブルエントリーを有し、該複数のページテーブルエントリーは、前記仮想アドレスと対応する物理メモリアドレスとを含み、
    当該グラフィックスプロセッサは、
    前記システムメモリにおけるメモリロケーションへのアクセスのための要求を与えると共に、前記システムメモリにおけるメモリロケーションに関するアドレス情報であって、少なくとも一つの物理メモリアドレスを識別する情報を含むアドレス情報を受け取るためのデータインターフェースと、
    前記複数のページテーブルエントリーのいくつかを書き込むためのキャッシュコントローラと、
    前記複数のページテーブルエントリーの前記いくつかを記憶するためのキャッシュと、
    を備え、
    キャッシュミスが起こるのを待たずに、前記アドレス情報が受け取られ、前記複数のページテーブルエントリーの前記いくつかが前記キャッシュに記憶され
    前記複数のページテーブルエントリーの前記いくつかは、前記キャッシュにおいてロックされるようにする、グラフィックスプロセッサ。
  8. 前記データインターフェースは、前記システムメモリに前記複数のページテーブルエントリーを記憶させる要求も与える、請求項に記載のグラフィックスプロセッサ。
  9. 前記データインターフェースは、システムの電源投入に続いて前記システムメモリにおけるメモリロケーションへのアクセスのための要求を与える、請求項に記載のグラフィックスプロセッサ。
  10. 前記キャッシュコントローラは、前記いくつかのページテーブルエントリーが記憶されている前記キャッシュのメモリロケーションをロックする、請求項7に記載のグラフィックスプロセッサ。
  11. 前記キャッシュコントローラは、前記いくつかのページテーブルエントリーが記憶されている前記キャッシュのメモリロケーションへのアクセスを制限する、請求項7に記載のグラフィックスプロセッサ。
  12. 前記データインターフェースは、PCIEインターフェース回路である、請求項に記載のグラフィックスプロセッサ。
  13. 前記グラフィックスプロセッサは、グラフィックス処理装置である、請求項に記載のグラフィックスプロセッサ。
  14. 前記グラフィックスプロセッサは、統合グラフィックスプロセッサに含まれる、請求項に記載のグラフィックスプロセッサ。
  15. グラフィックスプロセッサによって使用される仮想アドレスを、システムメモリによって使用される物理メモリアドレスに変換する前記グラフィックスプロセッサが実行する方法であって、
    前記システムメモリは、ページテーブルを記憶するように構成されており、前記ページテーブルは、複数のページテーブルエントリーを有し、該複数のページテーブルエントリーは、前記仮想アドレスと対応する物理メモリアドレスとを含み、
    前記グラフィックスプロセッサはキャッシュとキャッシュコントローラとを備えており、前記キャッシュは、前記複数のページテーブルエントリーのいくつかを記憶し、前記キャッシュコントローラは、該記憶されたページテーブルエントリーをロックするように構成されており
    当該方法は、
    前記システムメモリにおけるメモリのブロックのためのベースアドレス及びレンジを受け取るベースアドレスレンジ受取りステップと、
    前記ベースアドレス及びレンジを記憶させるためのベースアドレスレンジ記憶ステップと、
    第1のアドレスを受け取るアドレス受取りステップと、
    前記第1のアドレスが前記レンジ内にあるかを判定するアドレスレンジ判定ステップと、
    前記第1のアドレスが前記レンジ内にある場合に、前記ベースアドレスを前記第1のアドレスに加えることによって前記第1のアドレスを第2のアドレスに変換するアドレス変換ステップと、
    前記第1のアドレスが前記レンジ内にない場合に、前記キャッシュからページテーブルエントリーを読み取るページテーブルエントリー読取りステップと、
    前記ページテーブルエントリーを使用して前記第1のアドレスを第2のアドレスに変換するページテーブルエントリー使用アドレス変換ステップと、
    を備える方法。
  16. 前記キャッシュからページテーブルエントリーを読み取る前に、キャッシュミスを待たずに、前記キャッシュに前記ページテーブルエントリーを記憶させるページテーブルエントリー読取り前記憶ステップを更に備える、請求項15に記載の方法。
  17. 前記キャッシュからページテーブルエントリーを読み取る前に、前記ページテーブルエントリーが前記キャッシュに記憶されているかどうか判定し、前記ページテーブルエントリーが前記キャッシュに記憶されていない場合に、前記システムメモリから前記ページテーブルエントリーを読み取るページテーブルエントリー読取り前判定ステップを更に備える、請求項15に記載の方法。
  18. 前記グラフィックスプロセッサは、グラフィックス処理装置である、請求項15に記載の方法。
  19. 前記グラフィックスプロセッサは、統合グラフィックスプロセッサに含まれる、請求項15に記載の方法。
JP2007189725A 2006-07-31 2007-07-20 Gpuにおけるページマッピングのための専用機構 Active JP4941148B2 (ja)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US82095206P 2006-07-31 2006-07-31
US60/820,952 2006-07-31
US82112706P 2006-08-01 2006-08-01
US60/821,127 2006-08-01
US11/689,485 US20080028181A1 (en) 2006-07-31 2007-03-21 Dedicated mechanism for page mapping in a gpu
US11/689,485 2007-03-21

Publications (2)

Publication Number Publication Date
JP2008033928A JP2008033928A (ja) 2008-02-14
JP4941148B2 true JP4941148B2 (ja) 2012-05-30

Family

ID=38461494

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007189725A Active JP4941148B2 (ja) 2006-07-31 2007-07-20 Gpuにおけるページマッピングのための専用機構

Country Status (7)

Country Link
US (1) US20080028181A1 (ja)
JP (1) JP4941148B2 (ja)
KR (1) KR101001100B1 (ja)
DE (1) DE102007032307A1 (ja)
GB (1) GB2440617B (ja)
SG (1) SG139654A1 (ja)
TW (1) TWI398771B (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9019285B2 (en) * 2007-03-15 2015-04-28 Renesas Electronics Corporation Semiconductor integrated circuit device
US20080276067A1 (en) * 2007-05-01 2008-11-06 Via Technologies, Inc. Method and Apparatus for Page Table Pre-Fetching in Zero Frame Display Channel
US8024547B2 (en) * 2007-05-01 2011-09-20 Vivante Corporation Virtual memory translation with pre-fetch prediction
US7827333B1 (en) * 2008-02-04 2010-11-02 Nvidia Corporation System and method for determining a bus address on an add-in card
US8219778B2 (en) * 2008-02-27 2012-07-10 Microchip Technology Incorporated Virtual memory interface
US8392667B2 (en) * 2008-12-12 2013-03-05 Nvidia Corporation Deadlock avoidance by marking CPU traffic as special
TWI514324B (zh) * 2010-11-30 2015-12-21 Ind Tech Res Inst 影像目標區域追蹤系統與方法及電腦程式產品
US9338215B2 (en) 2011-03-14 2016-05-10 Slangwho, Inc. Search engine
US9053037B2 (en) * 2011-04-04 2015-06-09 International Business Machines Corporation Allocating cache for use as a dedicated local storage
US9164923B2 (en) 2011-07-01 2015-10-20 Intel Corporation Dynamic pinning of virtual pages shared between different type processors of a heterogeneous computing platform
US9396130B2 (en) * 2012-08-18 2016-07-19 Qualcomm Technologies, Inc. System translation look-aside buffer integrated in an interconnect
US20140101405A1 (en) * 2012-10-05 2014-04-10 Advanced Micro Devices, Inc. Reducing cold tlb misses in a heterogeneous computing system
US9697006B2 (en) 2012-12-19 2017-07-04 Nvidia Corporation Technique for performing memory access operations via texture hardware
US9348762B2 (en) 2012-12-19 2016-05-24 Nvidia Corporation Technique for accessing content-addressable memory
US9720858B2 (en) 2012-12-19 2017-08-01 Nvidia Corporation Technique for performing memory access operations via texture hardware
US9292453B2 (en) * 2013-02-01 2016-03-22 International Business Machines Corporation Storing a system-absolute address (SAA) in a first level translation look-aside buffer (TLB)
US9619364B2 (en) 2013-03-14 2017-04-11 Nvidia Corporation Grouping and analysis of data access hazard reports
US9886736B2 (en) 2014-01-20 2018-02-06 Nvidia Corporation Selectively killing trapped multi-process service clients sharing the same hardware context
US10152312B2 (en) 2014-01-21 2018-12-11 Nvidia Corporation Dynamic compiler parallelism techniques
US9507726B2 (en) 2014-04-25 2016-11-29 Apple Inc. GPU shared virtual memory working set management
US9563571B2 (en) 2014-04-25 2017-02-07 Apple Inc. Intelligent GPU memory pre-fetching and GPU translation lookaside buffer management
US9594697B2 (en) * 2014-12-24 2017-03-14 Intel Corporation Apparatus and method for asynchronous tile-based rendering control
CN106560798B (zh) * 2015-09-30 2020-04-03 杭州华为数字技术有限公司 一种内存访问方法、装置及计算机系统
DE102016219202A1 (de) * 2016-10-04 2018-04-05 Robert Bosch Gmbh Verfahren und Vorrichtung zum Schützen eines Arbeitsspeichers
US10417140B2 (en) * 2017-02-24 2019-09-17 Advanced Micro Devices, Inc. Streaming translation lookaside buffer
WO2019237261A1 (zh) * 2018-06-12 2019-12-19 华为技术有限公司 一种内存管理方法、装置及系统
US11436292B2 (en) 2018-08-23 2022-09-06 Newsplug, Inc. Geographic location based feed
WO2020086381A1 (en) * 2018-10-23 2020-04-30 Nvidia Corporation Effective and scalable building and probing of hash tables using multiple gpus
CN111274166B (zh) * 2018-12-04 2022-09-20 展讯通信(上海)有限公司 Tlb的预填及锁定方法和装置
US11550728B2 (en) * 2019-09-27 2023-01-10 Advanced Micro Devices, Inc. System and method for page table caching memory
CN111338988B (zh) * 2020-02-20 2022-06-14 西安芯瞳半导体技术有限公司 内存访问方法、装置、计算机设备和存储介质
US20210149815A1 (en) * 2020-12-21 2021-05-20 Intel Corporation Technologies for offload device fetching of address translations

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4677546A (en) * 1984-08-17 1987-06-30 Signetics Guarded regions for controlling memory access
JPS62237547A (ja) * 1986-04-09 1987-10-17 Hitachi Ltd アドレス変換方式
JP2635058B2 (ja) * 1987-11-11 1997-07-30 株式会社日立製作所 アドレス変換方式
JP2689336B2 (ja) * 1988-07-29 1997-12-10 富士通株式会社 コンピュータシステムに於けるアダプタ用アドレス変換装置
US5058003A (en) * 1988-12-15 1991-10-15 International Business Machines Corporation Virtual storage dynamic address translation mechanism for multiple-sized pages
US5394537A (en) * 1989-12-13 1995-02-28 Texas Instruments Incorporated Adaptive page placement memory management system
JPH0418650A (ja) * 1990-05-14 1992-01-22 Toshiba Corp メモリ管理装置
EP0508577A1 (en) * 1991-03-13 1992-10-14 International Business Machines Corporation Address translation mechanism
US5617554A (en) * 1992-02-10 1997-04-01 Intel Corporation Physical address size selection and page size selection in an address translator
US5465337A (en) * 1992-08-13 1995-11-07 Sun Microsystems, Inc. Method and apparatus for a memory management unit supporting multiple page sizes
US5555387A (en) * 1995-06-06 1996-09-10 International Business Machines Corporation Method and apparatus for implementing virtual memory having multiple selected page sizes
US5479627A (en) * 1993-09-08 1995-12-26 Sun Microsystems, Inc. Virtual address to physical address translation cache that supports multiple page sizes
US5446854A (en) * 1993-10-20 1995-08-29 Sun Microsystems, Inc. Virtual memory computer apparatus and address translation mechanism employing hashing scheme and page frame descriptor that support multiple page sizes
DE69428881T2 (de) * 1994-01-12 2002-07-18 Sun Microsystems Inc Logisch adressierbarer physikalischer Speicher für ein Rechnersystem mit virtuellem Speicher, das mehrere Seitengrössen unterstützt
US5822749A (en) * 1994-07-12 1998-10-13 Sybase, Inc. Database system with methods for improving query performance with cache optimization strategies
JP3740195B2 (ja) * 1994-09-09 2006-02-01 株式会社ルネサステクノロジ データ処理装置
US5963984A (en) * 1994-11-08 1999-10-05 National Semiconductor Corporation Address translation unit employing programmable page size
US5958756A (en) * 1996-01-26 1999-09-28 Reynell; Christopher Paul Method and apparatus for treating waste
US5963964A (en) * 1996-04-05 1999-10-05 Sun Microsystems, Inc. Method, apparatus and program product for updating visual bookmarks
US6104417A (en) * 1996-09-13 2000-08-15 Silicon Graphics, Inc. Unified memory computer architecture with dynamic graphics memory allocation
US5928352A (en) * 1996-09-16 1999-07-27 Intel Corporation Method and apparatus for implementing a fully-associative translation look-aside buffer having a variable numbers of bits representing a virtual address entry
US5987582A (en) * 1996-09-30 1999-11-16 Cirrus Logic, Inc. Method of obtaining a buffer contiguous memory and building a page table that is accessible by a peripheral graphics device
US6308248B1 (en) * 1996-12-31 2001-10-23 Compaq Computer Corporation Method and system for allocating memory space using mapping controller, page table and frame numbers
US6349355B1 (en) * 1997-02-06 2002-02-19 Microsoft Corporation Sharing executable modules between user and kernel threads
JP3296240B2 (ja) * 1997-03-28 2002-06-24 日本電気株式会社 バス接続装置
KR100263672B1 (ko) * 1997-05-08 2000-09-01 김영환 가변적인 페이지 크기를 지원하는 어드레스 변환장치
US6249853B1 (en) * 1997-06-25 2001-06-19 Micron Electronics, Inc. GART and PTES defined by configuration registers
US5933158A (en) * 1997-09-09 1999-08-03 Compaq Computer Corporation Use of a link bit to fetch entries of a graphic address remapping table
US5999743A (en) * 1997-09-09 1999-12-07 Compaq Computer Corporation System and method for dynamically allocating accelerated graphics port memory space
US6112285A (en) * 1997-09-23 2000-08-29 Silicon Graphics, Inc. Method, system and computer program product for virtual memory support for managing translation look aside buffers with multiple page size support
US5949436A (en) * 1997-09-30 1999-09-07 Compaq Computer Corporation Accelerated graphics port multiple entry gart cache allocation system and method
US6356991B1 (en) * 1997-12-31 2002-03-12 Unisys Corporation Programmable address translation system
US6205531B1 (en) * 1998-07-02 2001-03-20 Silicon Graphics Incorporated Method and apparatus for virtual address translation
US6374341B1 (en) * 1998-09-02 2002-04-16 Ati International Srl Apparatus and a method for variable size pages using fixed size translation lookaside buffer entries
JP2001022640A (ja) * 1999-07-02 2001-01-26 Victor Co Of Japan Ltd メモリ管理方法
US6457068B1 (en) * 1999-08-30 2002-09-24 Intel Corporation Graphics address relocation table (GART) stored entirely in a local memory of an expansion bridge for address translation
US6857058B1 (en) * 1999-10-04 2005-02-15 Intel Corporation Apparatus to map pages of disparate sizes and associated methods
US6628294B1 (en) * 1999-12-31 2003-09-30 Intel Corporation Prefetching of virtual-to-physical address translation for display data
US6477612B1 (en) * 2000-02-08 2002-11-05 Microsoft Corporation Providing access to physical memory allocated to a process by selectively mapping pages of the physical memory with virtual memory allocated to the process
US6643759B2 (en) * 2001-03-30 2003-11-04 Mips Technologies, Inc. Mechanism to extend computer memory protection schemes
JP4263919B2 (ja) * 2002-02-25 2009-05-13 株式会社リコー 画像形成装置及びメモリ管理方法
US20040117594A1 (en) * 2002-12-13 2004-06-17 Vanderspek Julius Memory management method
US7194582B1 (en) * 2003-05-30 2007-03-20 Mips Technologies, Inc. Microprocessor with improved data stream prefetching
US7082508B2 (en) * 2003-06-24 2006-07-25 Intel Corporation Dynamic TLB locking based on page usage metric
US20050160229A1 (en) * 2004-01-16 2005-07-21 International Business Machines Corporation Method and apparatus for preloading translation buffers
US7321954B2 (en) * 2004-08-11 2008-01-22 International Business Machines Corporation Method for software controllable dynamically lockable cache line replacement system
JP2006195871A (ja) * 2005-01-17 2006-07-27 Ricoh Co Ltd 通信装置、電子機器、及び画像形成装置
US7519781B1 (en) * 2005-12-19 2009-04-14 Nvidia Corporation Physically-based page characterization data

Also Published As

Publication number Publication date
JP2008033928A (ja) 2008-02-14
GB0713574D0 (en) 2007-08-22
KR101001100B1 (ko) 2010-12-14
GB2440617B (en) 2009-03-25
GB2440617A (en) 2008-02-06
TWI398771B (zh) 2013-06-11
TW200817899A (en) 2008-04-16
US20080028181A1 (en) 2008-01-31
SG139654A1 (en) 2008-02-29
DE102007032307A1 (de) 2008-02-14
KR20080011630A (ko) 2008-02-05

Similar Documents

Publication Publication Date Title
JP4941148B2 (ja) Gpuにおけるページマッピングのための専用機構
US8669992B2 (en) Shared virtual memory between a host and discrete graphics device in a computing system
US8359454B2 (en) Memory access techniques providing for override of page table attributes
US7610464B2 (en) Methods and apparatus for providing independent logical address space and access management
US6924810B1 (en) Hierarchical texture cache
US6801207B1 (en) Multimedia processor employing a shared CPU-graphics cache
US8707011B1 (en) Memory access techniques utilizing a set-associative translation lookaside buffer
US8230179B2 (en) Administering non-cacheable memory load instructions
US20010049771A1 (en) Dynamic replacement technique in a shared cache
US8868883B1 (en) Virtual memory management for real-time embedded devices
US20060123142A1 (en) Method and apparatus for providing peer-to-peer data transfer within a computing environment
US10593305B2 (en) Prefetching page access data for input surfaces requiring processing
US10467138B2 (en) Caching policies for processing units on multiple sockets
US8352709B1 (en) Direct memory access techniques that include caching segmentation data
US8700883B1 (en) Memory access techniques providing for override of a page table
US6748512B2 (en) Method and apparatus for mapping address space of integrated programmable devices within host system memory
KR102508987B1 (ko) 그래픽 표면 어드레싱
US9153211B1 (en) Method and system for tracking accesses to virtual addresses in graphics contexts
US9652560B1 (en) Non-blocking memory management unit
US8593472B1 (en) System and method for accessing a frame buffer via a storage driver

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101201

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101214

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110314

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110317

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110413

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4941148

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

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250