JP5020443B2 - Method and apparatus for accessing shared resource - Google Patents
Method and apparatus for accessing shared resource Download PDFInfo
- Publication number
- JP5020443B2 JP5020443B2 JP2001163361A JP2001163361A JP5020443B2 JP 5020443 B2 JP5020443 B2 JP 5020443B2 JP 2001163361 A JP2001163361 A JP 2001163361A JP 2001163361 A JP2001163361 A JP 2001163361A JP 5020443 B2 JP5020443 B2 JP 5020443B2
- Authority
- JP
- Japan
- Prior art keywords
- graphics
- memory
- access
- bandwidth control
- control circuit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Landscapes
- Memory System (AREA)
- Image Input (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、共有リソースへのアクセス方法及び装置に関し、より特定的には、家庭用ビデオゲームプラットフォーム用の対話式グラフィックス等の対話式グラフィックスシステムの共有リソースへのアクセス方法及び装置に関する。
【0002】
【従来の技術】
恐竜、宇宙人、アニメ化されたおもちゃといった空想的な生物が、非常にリアルに映像化された映画を見かけることが多くなっている。このような動画は、コンピュータグラフィックスにより可能となっている。この技術を用いることにより、コンピュータグラフィックスアーチストは、各物体の形状及び時間の経過に伴って生じる外見上の変化を特定することができる。そして、コンピュータが物体をモデリングして、ホームテレビやコンピュータ等の画面上に表示する。表示画像の各部分は、そのシーンにおける物体相互の距離及び向き、各物体に対する照明方向、各物体の表面の質感、その他様々な要素に基づき着色・形成され、この着色・形成を適切に行うために必要な数多くの処理は、コンピュータが引き受ける。
【0003】
コンピュータグラフィックスの生成処理が複雑なため、ほんの数年前まで、コンピュータで生成した3次元グラフィックスの活用は、高価格で専門化されたフライトシュミレータ、ハイエンドグラフィックスワークステーション及びスーパーコンピュータに限られていた。人々は、これらコンピュータシステムによって作り出された画像を、映画や制作費の高いテレビコマーシャルで目にすることがあっても、実際にグラフィックスを作成しているコンピュータと接触することはできなかったのである。しかし、ニンテンドウ64(登録商標)や各種3Dグラフィックスカード等、比較的安価なパーソナルコンピュータ用グラフィックスプラットフォームの登場により、状況は変わった。今や、自宅やオフィスでも、手ごろな価格のコンピュータグラフィックスシステムを用いて、迫力のある3Dアニメーション及びシミュレーションを、対話的に作り出すことが可能になっている。
【0004】
【発明が解決しようとする課題】
コンピュータグラフィックスシステムにおいて、リソースは、数多くのそれぞれ異なる構成要素によって「共有」されることが多い。例えば、グラフィックスプロセッサやメインプロセッサの動作は、システムメモリへの多数のアクセス要求に終始しがちである。各要求へのメモリアクセスの適切な割り当てを確実にするために、アービトレータ回路を使用することが知られている。調停には、構成要素のうちの1つに高い優先度が付与される技法や、構成要素のすべてにメモリアクセスのチャンスが与えられるラウンドロビン方式等の、それぞれ異なるいくつかの技法が適用可能である。本明細書では、メモリコントローラ等の、調停プロセスに関係する共有リソースへのアクセス要求の頻度制御が構成可能であるコントローラに関して説明する。
【0005】
【課題を解決するための手段】
本発明の1つの局面は、共有リソースへのアクセスを制御するコントローラを備えていることにある。このコントローラは、例えばステートマシンとして実現され、共有リソースへの複数のアクセス要求を調停するためのアービトレータと、アービトレータによる要求の調停頻度を制御するプログラム可能帯域幅制御回路とを含む。
【0006】
共有リソースは、コンピュータ読み出し可能媒体であってもよく、要求は、コンピュータ読み出し可能媒体への/からの読み出し及び書き込みの要求を含んでいてもよい。帯域幅制御回路は、プログラム可能レジスタと、関連アキュムレータとで構成されていてもよい。プログラム可能レジスタの内容は、それぞれ対応するアキュムレータに繰り返し加算され、その対応するアキュムレータの値が所定の値に達すると(例えば、ある特定のビットが設定/クリアされると)調停される。レジスタは、アプリケーションプログラミングインタフェースを用いてプログラム可能である。
【0007】
本発明の別の局面は、共有リソースへのアクセス制御方法であって、共有リソースへの複数のアクセス要求を調停し、それら要求の調停頻度をプログラム可能に制御する。
【0008】
【発明の実施の形態】
図1に、対話式3Dコンピュータグラフィックスシステム50の一例を示す。システム50は、興味をそそるステレオサウンドを伴う対話式3Dビデオゲームをプレイするのに使用され得る。さらに、その他様々なアプリケーションにも使用され得る。
【0009】
本例において、システム50は、デジタル表現又は3次元世界のモデルを、対話的にリアルタイムで処理する機能を有する。システム50は、その世界をどこでも任意の視点から部分的又は全体的に表示することができる。例えば、システム50は、手持ちコントローラ52a及び52b、又はその他の入力装置からのリアルタイム入力に応答して、対話的に視点を変えることができる。これにより、ゲームプレイヤは、世界の内部又は外部にいる誰かの目を通してその世界を見ることができる。システム50は、リアルタイム対話式3D表示を必要としないアプリケーションに使用可能であるが(例えば、2D表示生成及び/又は非対話式表示)、その高品質な3D画像の超高速表示機能により、非常にリアルで迫力のあるゲームプレイの制作、又はその他グラフィカルな対話に使用することができる。
【0010】
システム50を用いてビデオゲーム等のアプリケーションをプレイするには、ユーザは、まずケーブル58を用いて、メインユニット54を自身のカラーテレビセット56又はその他の表示装置に接続する。メインユニット54は、ビデオ信号とオーディオ信号とを生成して、カラーテレビセット56を制御する。ビデオ信号は、テレビスクリーン59上に表示される画像を制御するものであり、オーディオ信号は、テレビステレオスピーカ61L、61Rを通して、サウンドとして再生される。
【0011】
さらに、ユーザは、メインユニット54を電源に接続する。この電源は、従来のACアダプタ(図示せず)であって、標準型の家庭用電気コンセントに差込まれ、家庭用電流をメインユニット54への電力供給に適した低いDC電圧信号に変換する。電池は他の実施形態で使用可能である。
【0012】
ユーザは、手持ちコントローラ52a及び52bでメインユニット54を制御してもよい。例えば、操縦部60を用いて、テレビ56に表示されるキャラクタが3次元世界で動く方向を特定してもよい(上下、左右、近づける・遠ざける)。操縦部60は、さらにその他のアプリケーションに入力を与える(例えば、メニューの選択、ポインタ/カーソルの制御等)。コントローラ52は、様々な形をとることができる。本例においては、図示されるコントローラ52は、それぞれジョイスティック、プッシュボタン及び/又は方向スイッチ等の操縦部60を備える。コントローラ52は、電磁(無線、赤外線等)波を介して、ケーブル又はワイヤレスでメインユニット54に接続されてもよい。
【0013】
ゲーム等のアプリケーションをプレイする場合、ユーザは、ビデオゲーム等の自身がプレイしたいアプリケーションを記憶している記憶媒体62を適宜選択し、その記憶媒体をメインユニット54のスロット64に挿入する。記憶媒体62は、例えば、特別にコード化及び/又は暗号化された光及び/又は磁気ディスクであってもよい。ユーザは、電源スイッチ66を操作してメインユニット54をオンにし、記憶媒体62に記憶されているソフトウェアに基づいて、ビデオゲーム等のアプリケーションの実行を開始させる。ユーザは、コントローラ52を操作して、メインユニット54に入力を与えてもよい。例えば、操縦部60を操作すると、ゲーム等のアプリケーションがスタートし得る。他の操縦部60を動かすと、アニメ化されたキャラクタがそれぞれ異なる方向に移動したり、3次元世界におけるユーザの視点が変化し得る。記憶媒体62内部に格納されている特定のソフトウェアにより、コントローラ52上の各操縦部60は、異なる時間に異なる機能を実行することができる。
【0014】
(システム全体の電子部品例)
図2は、システム50の構成要素例を示すブロック図である。主な構成要素としては、
・メインプロセッサ(CPU)110
・メインメモリ112、及び
・グラフィックス&オーディオプロセッサ114
が含まれる。
【0015】
本例において、メインプロセッサ110(例えば、機能拡張型IBM Power PC 750)は、グラフィックス&オーディオプロセッサ114を介して、手持ちコントローラ52(及び/又はその他の入力装置)から入力を受け取る。メインプロセッサ110は、ユーザ入力に対話的に応答し、例えば、光ディスクドライブ等の大容量記憶アクセス装置106を介して外部記憶媒体62によって提供されるビデオゲーム又はその他のプログラムを実行する。例えば、ビデオゲームプレイの状況において、メインプロセッサ110は、様々な対話式制御機能に加え、衝突検出や動画処理を行うことができる。
【0016】
本例では、メインプロセッサ110は、3Dグラフィックスコマンドとオーディオコマンドとを生成し、それらをグラフィックス&オーディオプロセッサ114に送出する。グラフィックス&オーディオプロセッサ114は、これらコマンドを処理し、ディスプレイ59上に動的な視覚画像を生成し、さらにステレオスピーカ61R及び61L、又はその他の適切なサウンド発生装置から、高品質なステレオサウンドを出力する。
【0017】
例示のシステム50は、グラフィックス&オーディオプロセッサ114から画像信号を受信し、その画像信号を、コンピュータのモニタや家庭用カラーテレビセット56等の標準的な表示装置に表示するのに適したアナログ及び/又はデジタルビデオ信号に変換するビデオエンコーダ120を含む。システム150は、デジタル化されたオーディオ信号を圧縮/伸張し、さらに必要に応じてデジタルオーディオ信号フォーマットとアナログオーディオ信号フォーマットとの間の変換を行うオーディオコーデック(コンプレッサ/デコンプレッサ)122をさらに含む。オーディオコーデック122は、バッファ124を介してオーディオ入力を受け取り、それらを処理(プロセッサが生成したその他のオーディオ信号や、大容量記憶アクセス装置106のオーディオ出力ストリームを介して受信するオーディオ信号をミックス)するためにグラフィックス&オーディオプロセッサ114に提供することもできる。本例におけるグラフィックス&オーディオプロセッサ114は、オーディオ関連情報をオーディオタスクに使用可能なオーディオメモリ126に格納することができる。グラフィックス&オーディオプロセッサ114は、処理結果のオーディオ出力信号を、伸張してアナログ信号に変換(例えば、バッファアンプ128L及び128Rを介して)するために、オーディオコーデック122に出力し、その結果、スピーカ61L及び61Rによって再生され得る。
【0018】
グラフィックス&オーディオプロセッサ114は、システム50中に存在する様々な付加装置と通信する機能を備えている。例えば、パラレルデジタルバス130は、大容量記憶アクセス装置106及び/又はその他の構成要素との通信に使用され得る。シリアル周辺バス132は、例えば、
・プログラム可能な読み出し専用メモリ及び/又はリアルタイムクロック134
・モデム136又はその他のネットワーキングインタフェース(プログラム命令及び/又はデータが、そこからダウンロード又はそこにアップロードされ得る、インターネットやその他のデジタルネットワーク等のテレコミュニケーションネットワーク138に、システム50を接続し得るもの)
・フラッシュメモリ140
等の各種周辺装置と通信するのに使用されてもよい。なお、さらなる外部シリアルバス142は、追加拡張メモリ144(例えば、メモリカード)等の装置との通信に使用されてもよい。コネクタは、様々な装置をバス130、132、142に接続するために使用されてもよい。
【0019】
(グラフィックス&オーディオプロセッサの例)
図3は、グラフィックス&オーディオプロセッサ114の一例を示すブロック図である。グラフィックス&オーディオプロセッサ114は、例えば、1チップASIC(特定用途向け集積回路)である。本例においては、グラフィックス&オーディオプロセッサ114は、
・プロセッサインタフェース150
・メモリインタフェース/コントローラ152
・3Dグラフィックスプロセッサ154
・オーディオデジタル信号プロセッサ(DSP)156
・オーディオメモリインタフェース158
・オーディオインタフェース&ミキサ160
・周辺コントローラ162、及び
・ディスプレイコントローラ164
を備える。
【0020】
3Dグラフィックスプロセッサ154は、グラフィックス処理タスクを行う。オーディオデジタル信号プロセッサ156は、オーディオ処理タスクを行う。ディスプレイコントローラ164は、メインメモリ112の画像情報にアクセスし、それをディスプレイ装置56に表示するためビデオエンコーダ120に供給する。オーディオインタフェース&ミキサ160は、オーディオコーデック122と接続されて、異なるソースからのオーディオ(例えば、大容量記憶アクセス装置106からのオーディオストリーム、オーディオDSP156からの出力及びオーディオコーデック122を介して受信した外部オーディオ入力)をミックスすることができる。プロセッサインタフェース150は、メインプロセッサ110とグラフィックス&オーディオプロセッサ114との間で、データの供給とインタフェース制御とを行う。
【0021】
以下に詳細を後述するが、メモリインタフェース152は、グラフィックス&オーディオプロセッサ114とメモリ112との間で、データの供給とインタフェース制御とを行う。本例では、メインプロセッサ110は、グラフィックス&オーディオプロセッサ114の一部であるプロセッサインタフェース150及びメモリインタフェース152を介して、メインメモリ112にアクセスする。周辺コントローラ162は、グラフィックス&オーディオプロセッサ114と前述した様々な周辺装置との間で、データの供給とインタフェース制御とを行う。オーディオメモリインタフェース158は、オーディオメモリ126とのインタフェースとなる。
【0022】
(グラフィックスパイプラインの例)
図4に、図3に例示の3Dグラフィックスプロセッサ154をより詳細に示した、グラフィックスプロセッシングシステムを示す。3Dグラフィックスプロセッサ154は、他の構成要素に加え、コマンドプロセッサ200と3Dグラフィックスパイプライン180とを備える。メインプロセッサ110は、コマンドプロセッサ200にデータのストリーム(例えば、グラフィックスコマンドストリームや表示リスト)を通信する。メインプロセッサ110は、2レベルキャッシュ115を備え、メモリ待ち時間を最小にする。さらに、メインプロセッサ110は、グラフィックス&オーディオプロセッサ114向けのアンキャッシュデータストリーム用の書き込み用ギャザリングバッファ111を備える。この書き込み用ギャザリングバッファ111は、キャッシュラインを部分的に集めてフルキャッシュラインにし、バスを最大限に使用するために、1回につき1キャッシュラインでデータをグラフィックス&オーディオプロセッサ114に送出する。
【0023】
コマンドプロセッサ200は、メインプロセッサ110から表示コマンドを受信し、それらを解析する。なお、この処理を行うのに必要な追加データがあれば、メモリコントローラ152を介して共有されたメモリ112から取得する。コマンドプロセッサ200は、2D及び/又は3D処理及びレンダリングを行うために、頂点コマンドのストリームをグラフィックスパイプライン180に提供する。グラフィックスパイプライン180は、これらのコマンドに基づいて画像を生成する。結果作り出された画像情報は、メインメモリ112に転送され、パイプライン180のフレームバッファ出力をディスプレイ56に表示するディスプレイコントローラ/ビデオインタフェースユニット164によりアクセスされる。
【0024】
図5は、グラフィックスプロセッサ154を用いて行われる例示的な処理を説明する論理フロー図である。メインプロセッサ110は、グラフィックスコマンドストリーム210、表示リスト212及び頂点配列214をメインメモリ112に格納し、コマンドプロセッサ200にプロセッサ/バスインタフェース150を介してポインタを送り出してもよい。メインプロセッサ110は、メインメモリ112内に割り当てられた1つ又はそれ以上のグラフィックス先入れ先出し(FIFO)バッファ210に、グラッフィクスコマンドを格納する。コマンドプロセッサ200は、
・同期/フロー制御及びロードバランシングのために、グラフィックスコマンドを受信してバッファリングする、オンチップFIFOメモリバッファ216を介するメインメモリ112からのコマンドストリーム
・オンチップコールFIFOメモリバッファ218を介するメインメモリ112からの表示リスト212、及び
・頂点キャッシュ220を介するメインメモリ112内のコマンドストリーム及び/又は頂点配列214からの頂点属性、
を取り込む。
【0025】
コマンドプロセッサ200は、コマンド処理動作200aを行い、属性のタイプを浮動小数点形式に変換して、その結果である完全な頂点ポリゴンデータを、レンダリングとラスタライゼーションのためにグラフィックスパイプライン180に送出する。プログラム可能なメモリ調停回路130(図4参照)は、グラフィックスパイプライン180と、コマンドプロセッサ200と、ディスプレイコントローラ/ビデオインタフェースユニット164との間で、共有されたメインメモリ112へのアクセスを調停する。
図4は、
・変換ユニット300
・セットアップ/ラスタライザ400
・テクスチャユニット500
・テクスチャ環境ユニット600、及び
・ピクセルエンジン700、
を備えるグラフィックスパイプライン180を示す。
【0026】
変換ユニット300は、様々な2D及び3D変換やその他動作300a(図5参照)を実行する。変換ユニット300は、1つ又はそれ以上のマトリクスメモリ300bを備え、変換処理300aで使用するマトリクスを格納する。変換ユニット300は、受け取った図形を頂点毎にオブジェクト空間からスクリーン空間に変換したり、受け取ったテクスチャ座標を変換して投影するテクスチャの座標を求めたり(300c)する。変換ユニット300は、さらにポリゴンのクリッピング/カリング300dを行う。照明処理300eも同様に変換ユニット300によって行われ、頂点毎に照明計算を行って、例えば最高8段階の明暗を得る。変換ユニット300は、さらにテクスチャ座標を作成(300c)し、ポリゴンのクリッピング/カリング処理(300d)同様、エンボスタイプのバンプマッピング効果を得る。
【0027】
セットアップ/ラスタライザ400は、変換ユニット300から頂点データを受信し、エッジのラスタライズ、テクスチャ座標のラスタライズ及び色のラスタライズを行う1つ又はそれ以上のラスタライズユニット(400b)に、三角形セットアップ情報を送出するセットアップユニットを含んでいる。
【0028】
テクスチャユニット500(オンチップテクスチャメモリ(TMEM)502を備えていてもかまわない)は、テクスチャに関する様々な処理、例えば
・メインメモリ112からのテクスチャ504の取得、
・例えば、マルチテクスチャ処理、キャッシュ後テクスチャの伸張、テクスチャフィルタリング、エンボス、投影テクスチャを使用しての陰影付け及び照明処理、アルファ透明度や深度のBLITを含むテクスチャ処理(500a)、
・バンプマッピング、疑似テクスチャ、及びテクスチャタイリング効果(500b)用にテクスチャ座標のずれを計算するバンプマップ処理、及び
・間接的テクスチャ処理(500c)、
を行う。
【0029】
テクスチャユニット500は、テクスチャ環境処理(600a)のために、フィルタ処理されたテクスチャの値を、テクスチャ環境ユニット600に出力する。テクスチャ環境ユニット600は、ポリゴンとテクスチャの色/アルファ/深度とをブレンドし、テクスチャフォグ処理(600b)を行って、フォグ効果に基づく逆レンジを得ることができる。テクスチャ環境ユニット600は、例えば色/アルファ変調、エンボス、細部テクスチャリング、テクスチャスワッピング、クランピング、及び深度ブレンディングに基づいて、興味深い様々な環境関連機能を実行するための段階を複数備え得る。
【0030】
ピクセルエンジン700は、深度(Z)比較(700a)及びピクセルブレンディング(700b)を行う。本例において、ピクセルエンジン700は、データを埋め込み型(オンチップ)フレームバッファメモリ702に格納する。グラフィックスパイプライン180は、1つ又はそれ以上の埋め込み型DRAMメモリ702を備え、フレームバッファ及び/又はテクスチャの情報をローカルに格納してもよい。Z比較700a’は、その時点におけるレンダリングモードによっては、グラフィックスパイプライン180の初期段階において行われてもよい(アルファブレンディングが必要でなければ、Z比較は初期の段階で実行されてもよい)。ピクセルエンジン700は、オンチップフレームバッファ702をメインメモリ112に定期的に書き込むコピー動作700cを行い、ディスプレイ/ビデオインタフェースユニット164のアクセスに備える。さらに、このコピー動作700cは、動的なテクスチャ合成効果を得るために、埋め込み型フレームバッファ702の内容をメインメモリ112内のテクスチャにコピーする際にも利用され得る。アンチエリアシング及びその他のフィルタリングは、コピーアウト動作中に行われる。グラフィックスパイプライン180のフレームバッファ出力(最終的にメインメモリ112内に蓄えられる)は、ディスプレイ/ビデオインタフェースユニット164によってフレーム毎に読み出される。ディスプレイコントローラ/ビデオインタフェース164は、デジタルRGBピクセル値を出力して、ディスプレイ56に表示させる。
【0031】
(メモリコントローラ例)
図6は、メモリコントローラ152の他のシステム構成要素との関係を示す全体図である。図3及び図4において、メモリコントローラ152とグラフィックスメモリ要求調停130とが、それぞれ個別の構成要素であるように描かれているが、以下の本実施形態例においては、メモリコントローラ152がこの構成要素の両方を含む。
【0032】
メモリコントローラ152は、メインメモリ112へのアクセス要求を制御する。メインメモリ112は、例えば、Mosys社製であって、内部リフレッシュ動作を自動的に行う1TSRAM等のSRAMを備える。メインメモリ112へのアクセス要求には、
・3Dグラフィックスプロセッサ154(具体的には、コマンドプロセッサ200、テクスチャユニット500及びピクセルエンジン700)、
・プロセッサインタフェース150を介するメインプロセッサ110、
・オーディオDSP156、
・ディスプレイコントローラ164、及び
・様々なI/Oユニット(例えば、大容量記憶アクセス装置106)のための周辺コントローラ162、
等がある。
【0033】
これら「要求部」は、メインメモリ112へのアクセスを競合する。図7にこの競合に関わるいくつかの典型的な動作を示す。図7中の番号付き矢印は、以下の動作を示す。
1.新たなゲームセクタ又はレベルのための大容量記憶デバイス62(例えばDVD)からメインメモリ112へのテクスチャ画像のロード
2.新たなゲームセクタ又はレベルのための大容量記憶デバイス62からメインメモリ112への形状頂点表示リストのロード
3.メインプロセッサ110によるテクスチャマップの動的レンダリング
4.メインプロセッサ110による頂点の動的生成又は変更
5.メインプロセッサ110による光及びマトリクスのアニメーティング
6.メインプロセッサ110による表示リストの作成
7.メインプロセッサ110によるグラフィックスコマンドストリームの生成8.3Dグラフィックスプロセッサ154によるグラフィックスコマンドストリームの読み出し
9.3Dグラフィックスプロセッサ154による表示リストの読み出し
10.3Dグラフィックスプロセッサ154によるレンダリングのための頂点アクセス
11.3Dグラフィックスプロセッサ154によるレンダリングのためのテクスチャアクセス
【0034】
これら動作は例示であって、メインメモリ112の読み出し及び書き込みに関する多くの動作のうちのいくつかに過ぎない。その他にも、メモリコントローラ152は、メインメモリの読み出し及び書き込み動作に関与するポートに対して調停を行う。より具体的には、図8を参照して、メモリコントローラ152は、
・テクスチャユニット500用の読み出しポート602
・コマンドプロセッサ200用の読み出しポート604
・ピクセルエンジン700用の書き込みポート606
・プロセッサインタフェース150用の読み出し/書き込みポート608
・オーディオDSP156用の読み出し/書き込みポート610
・表示コントローラ/ビデオインタフェース164用の読み出しポート612、及び
・周辺コントローラ162用の読み出し/書き込みポート614
の間で調停を行う。
【0035】
もちろん、これらポートは例示目的であって、ある実施例においては、ポートの数はこれ以上であっても、これ以下であってもよい。さらに、図8等に示すバス/信号ライン幅は、例示目的だけに過ぎず、本発明の範囲を制限するものではない。メモリコントローラ152は、これらポートの間で調停を行い、メインメモリ112へのアクセスを割り当てる。本例において、メモリコントローラ152及びその入力及び出力のすべては、例えば200MHzで動作する。アドレス及び制御信号は、メモリコントローラ152のI/Oピンに直接接続され、一方、128ビット200MHzデータバスは、メモリアクセスコントロールMAC0〜MAC3を介して、例えば400MHzでクロック制御される。各MACは、メモリコントローラデータバス上の32ビットをメインメモリバス上の通信のために16ビットに変換する。以下の説明では、メインメモリ112に送出される要求を出す装置の動作を「マスタ」と称する。
【0036】
あるマスタのいくつかは、メモリ「ホグ」である(例えば、メインプロセッサ読み出しマスタ、コマンドプロセッサ読み出しマスタ、テクスチャユニット読み出しマスタ、メインプロセッサ書き込みマスタ及びピクセルエンジン書き込みマスタ)。図9に概略的に示すように、メモリコントローラ152は、帯域幅制御回路620−1〜620−5を備え、以下に詳細に説明するが、これらメモリホグによるメインメモリの使用に影響を及ぼす。帯域幅制御回路620−1〜620−5を「ダイアル」であると見なし、対応マスタによる要求がメモリアービトレータ622によりマスクされるように設定されてもよい。メモリアービトレータ622は、例えば3.2ギガバイトの帯域幅でメインメモリ112へのアクセスを割り当てるように、要求を調停する。帯域幅制御回路620−1、620−2及び620−3は、対応読み出しマスタからの読み出し要求がメモリアービトレータ622の調停プロセスに参加して、メインメモリ112に読み出し要求を与える割合を制御する。例えば、コマンドプロセッサ読み出しマスタ及びテクスチャユニット読み出しマスタに関連する帯域幅制御回路は、コマンドプロセッサ読み出し要求がメモリアービトレータ622に供給される割合を、テクスチャユニット読み出し要求がメモリアービトレータ622に供給される割合に関連付けて構成するのに使用される。帯域幅制御回路620−4と620−5とは、対応書き込みマスタからの書き込み要求がメモリアービトレータ622の調停プロセスに参加して、書き込み要求をグローバル書き込み用バッファのキューに与える割合を制御する。例えば、メインプロセッサ書き込みマスタ及びピクセルエンジン書き込みマスタに関連する帯域幅制御回路は、メインプロセッサ書き込み要求がグローバル書き込み用バッファキューに配置される割合を、ピクセルエンジン書き込み要求がグローバル書き込み用バッファキューに配置される割合に関連付けて構成するのに使用されてもよい。そのため、帯域幅制御回路は、例えばグローバル書き込み用バッファにエントリをスロットリングする(エントリの割合を減少させる)ことにより、書き込みマスタの書き込み要求をスローダウンさせることができる。グローバル書き込み用バッファは、通常、自身のキューがフルになった場合、又はある一定レベルを超えた場合、又はメインプロセッサの読み出し要求がグローバル書き込み用バッファへのエントリと一致した場合に、メインメモリ112への書き込み要求を開始する。
【0037】
調停方式は、典型的には、予め意図されたシステム全体の動作に合わせて設定され、かつ、バランスが取られる。これにより、ある調停方式では、メインプロセッサ読み出し要求が最優先される。しかしながら、アプリケーションによっては、メインプロセッサの読み出しには低めの優先度を付与して、グラフィックス処理により多くの帯域幅を与えることが好ましい場合もある。この場合、メインプロセッサ用帯域幅制御回路は、メインプロセッサ読み出しがサイクル毎に調停されないように構成されることも可能である。これにより、システムの性能がアプリケーションに合わせてうまく調整される。
【0038】
図10及び図11のそれぞれに、メモリコントローラ152用のアドレスパス及び読み出しデータパスを示す。メインメモリ112へのアクセスをシークする読み出しマスタは、読み出しキューRQ1〜RQ6のうちそれぞれ対応するものと関連付けられて、メインメモリ112から読み出すための読み出し要求(アドレス)のキューを形成する。メインメモリ112へのアクセスをシークする書き込みマスタは、書き込みキューWQ1〜WQ4のうちそれぞれ対応するものと関連付けられて、メインメモリ112に書き込むための書き込みアドレス及び対応データのキューを形成する。メモリアービトレータ622は、所定の調停プロセスで、読み出しキューRQ1〜RQ6にメインメモリへのアクセスを割り当て、かつ、書き込みキューWQ1〜WQ4のうちのどの書き込み要求がグローバル書き込み用バッファWQ0に与えられるかを制御する。少なくとも要求のうちのいくつかがこの調停プロセスに供給される割合は、上記帯域幅制御回路の設定に従って制御可能である。ある特定の動作に対して帯域幅制御回路を適切に設定することにより、見識のあるユーザであれば、調停プロセスへの要求の流れを調整して、その動作におけるシステムの性能を向上させることが可能である。
【0039】
グローバル書き込み用バッファWQ0向けの調停方式がある。というのは、4つの要求部がメインメモリ112に対して書き込み要求を行う場合があるためである。グローバル書き込み用バッファ向けの調停方式では、これら4つの要求部の間で調停を行う。各書き込みマスタは、ローカルキュー(すなわち、WQ1〜WQ4のうちの1つ)を有し、ある特定の書き込みマスタ用のローカルキューが空でない場合はいつでも、グローバル書き込み用バッファへのその他エントリを調停する。メインプロセッサ110の書き込みは常に最優先され、そのため帯域幅制御回路は、この優先度に対して「ダイアルダウン」される。ピクセルエンジン700は、オーディオDSP156及び周辺(I/O)コントローラ162と同様の書き込み優先度を有する。しかしながら、ピクセルエンジン700は、128ビットバスを使用し、メインメモリ112に対してコピーが行われると、ピクセルエンジン700は、サイクル毎に書き込み要求を行う場合がある。そのため、帯域幅制御回路は、この書き込み要求部に対して「ダイアルダウン」を付与して、その書き込み要求をサイクル毎に調停されないようにする。
【0040】
グローバル書き込み用バッファWQ0に書き込み要求を集めることにより、読み出しから書き込み及び書き込みから読み出しへの切り替えが減少され、メインメモリバスが変更される際に生じるデッドメモリサイクルが最小化できる。書き込み要求はグローバル書き込み用バッファWQ0に供給され、一方、読み出し要求は調停方式に従って処理される。グローバル書き込み用バッファWQ0があるレベルまで満たされた場合、あるいはメインプロセッサの読み出し要求がグローバル書き込み用バッファのエントリにマッチした場合、メインメモリバスは、読み出しから書き込み状態に切り替えられることが多い。このスイッチオーバーにより、グローバル書き込み用バッファWQ0は、メインメモリ112のある特定アドレスにデータを書き込むためにフラッシュされる。
【0041】
図12に、帯域幅制御回路620−1〜620−5の実現例を示す。もちろん、帯域幅制御回路はその他の方法でも実現可能であり、本発明はこれに限定されるものではない。本実施形態例において、各帯域幅制御回路は、プログラム可能ハードウェアレジスタ710及びハードウェアアキュムレータ720を含む。プログラム可能レジスタは、9ビットレジスタ(ビット8〜ビット0)であって、プログラム用のデータは、1.8フォーマット(すなわちx.xxxxxxxx)である。アキュムレータ720は、ある所定の数に初期化され(例えば0.00000000)、サイクル毎に、プログラム可能レジスタ710にプログラムされた数は、自動的にアキュムレータ720に加算される。アキュムレータ720のビット8(最上位ビット)が設定されると、対応する要求はそのサイクルで調停され、メインメモリから読み出されるか又はグローバル書き込み用バッファキューに配置される。これを、入力要求とアービトレータ622との間の信号パスの閉鎖部によって、図12において表現する。プログラム可能レジスタ710が0x1.00に設定された場合、対応する要求はサイクル毎に調停される。例えば、あるマスタからの要求を1サイクルおきに調停するようにするには、対応するプログラム可能レジスタを0x80に設定する。この場合のプログラム可能レジスタのデフォルト値は0x1.00であり、レジスタはアプリケーションプログラミングインタフェース(API)を介してプログラム可能である。
【0042】
プログラム可能レジスタの例を以下に示す。
【表1】
【0043】
ある要求部からのメモリアクセス要求は先入れ/先出しされ、対応プログラム可能レジスタにより決定されるNサイクル毎に、その先入れ/先出しされた要求のうちの1つが調停される。これにより、帯域幅制御回路が要求フィルタとして機能し、例えばこれら要求部が一度に大量の要求を生成し、他の要求部も同様に要求を生成している場合、特定の要求部によるメインメモリ112へのアクセス要求をスローダウンさせることができる。従って、特定の要求部がメインメモリ112へのデータ書き込み要求を大量に生成しているような場合、その帯域幅制御回路が、これら要求が調停される割合を制御するようプログラミングされる。どの要求部もアクセスを主張していない場合、ある要求部からの要求が直ちに処理される。
【0044】
帯域幅制御回路は、対応マスタのためにメモリ帯域幅を制御する。例えば、コマンドプロセッサのプログラム可能レジスタの内容がメモリサイクル毎に加算される、アキュムレータのビット8(すなわち最上位ビット)が1でない場合、待ち状態のコマンドプロセッサ要求があったとしても、アキュムレータのビット8が1に等しくなるように十分なサイクルが経過するまで、又は他のマスタからの待ち状態の要求がなくなるまで、その要求は調停されない。メモリコントローラ152は、帯域幅制御回路の設定により、メインメモリ112がアイドル状態にならないようにするのが好ましい。帯域幅制御回路620−1〜620−5は、マスタに対応するアキュムレータのビット8(すなわち最上位)が1に等しくなるまで、そのマスタからの要求をマスキングすることにより、この調停方式に作用する。
【0045】
このように、帯域幅制御回路620−1〜620−5は、マスタからの要求を調停する頻度をプログラム可能に制御することにより、主要メモリの「ホグ」によるメモリの使用に影響を及ぼす。ある書き込みマスタ用の帯域幅制御回路は、例えば、そのマスタからの書き込み要求をグローバル書き込み用バッファWQ0にスロットリングすることにより、その書き込みマスタからメインメモリ112への書き込みをスローダウンさせることができる。ここで、帯域幅制御回路のプログラム可能レジスタ設定により、許可されない未処理読み出し要求がある場合、調停によりメインメモリ112をアイドル状態にしないことが好ましい。この場合、スロットリングされる要求部の間で、ラウンドロビン方式が用いられる。例えば、2つの要求部がラウンドロビン方式に関与すると仮定すると、調停コントロール622は、最初の要求部に1番目のメモリサイクルを与え、2つ目の要求部に2番目のメモリサイクルを与え、最初の要求部に3番目のメモリサイクルを与える。
【0046】
このシステム例においては、読み出しはすべて単一キャッシュライン(32バイト)である。そのため、キャッシュラインの読み出しには200MHzで2サイクル要し、新規読み出しは10ナノ秒毎に行われる。その他要求部の間でのラウンドロビン調停において、メインプロセッサ110からの読み出し要求が最優先される。メモリ所有権は、読み出し要求部の間で10ナノ秒毎に変わってリフレッシュされるが、書き込みキューは、常に全体にわたって書き込みされる。書き込みキューは、あるレベルまで、又はあるレベルを超えて満たされたとき、あるいはメインプロセッサ読み出し要求が書き込み用バッファのエントリにマッチしたときに、要求を開始する。これらには、要求の頻度に関して以下の制限が課せられる。
・メインプロセッサの読み出しは、2つ連続して行えない。
・システムの読み出しは、2つ連続して行えない。
・10ナノ秒のリフレッシュサイクル中、2行リフレッシュされる。5ナノ秒毎に1行。
ここに記載する帯域幅制御回路は、ある特定の調停プロセスとの使用に限定されない。読み出しキュー調停方式例と書き込みキュー調停方式例とを以下に説明するが、これらは例示であって制限ではない。これら例示調停方式のさらなる詳細は、共に名称が「機能向上型メモリコントローラを用いたグラフィックス処理システム」である、上記仮出願番号60/226,894、及び対応出願番号09/726,220に記載されている。
【0047】
(読み出しキューの調停例)
メインプロセッサ110は、以下の場合を除いて最優先される。
・メインプロセッサ110が先のアクセスに対するマスタである場合
・メインプロセッサ読み出しマスタ用のアキュムレータのビット8(MSB)が1に等しくなく、アキュムレータのビット8(MSB)が1に等しい他のマスタによる他の要求がある場合
・書き込み用バッファが完全なフル状態で、書き込みサイクルの最中である場合
・先のメインプロセッサアドレスが、書き込み用バッファをフラッシュさせるプロセッサインタフェースローカル書き込み用バッファ、又はグローバル書き込み用バッファにおける有効なメインプロセッサ書き込みアドレスに合致する場合
【0048】
コマンドプロセッサ200又はテクスチャユニット500が、その他のシステムマスタ(すなわち、オーディオDSP156、周辺(I/O)コントローラ162、ビデオコントローラ164)と同じ優先度を有し、従って、以下の条件以外でシステムマスタをラウンドロビン方式でメモリ調停する。
・オーディオDSP156、周辺(I/O)コントローラ162又はビデオコントローラ164が、先のアクセスに対するマスタである場合
・コマンドプロセッサ読み出し又はテクスチャユニット読み出しのアキュムレータのビット8(MSB)が1に等しくなく、その対応アキュムレータのビット8が1に等しい他のマスタによる他の要求がある場合。
【0049】
オーディオDSP156(又は周辺(I/O)コントローラ162、又はビデオコントローラ164)の読み出しは、その他グラフィックスマスタ(コマンドプロセッサ200及びテクスチャユニット500)と同じ優先度を有し、従って、以下の条件以外でグラフィックスマスタをラウンドロビン方式でメモリ調停する。
・オーディオDSP156(又は周辺(I/O)コントローラ162、又はビデオコントローラ164)が、先のアクセスに対するマスタである場合
【0050】
グローバル書き込み用バッファWQ0は、以下の状態以外でメインプロセッサ110、グラフィックス又はシステムマスタより低い優先度を有する。
・グローバル書き込み用バッファWQ0が完全なフル状態で、ラウンドロビン方式で調停を行う場合
・メインプロセッサ読み出しアドレスは、グローバル書き込み用バッファWQ0内の書き込みアドレスと合致する場合、最優先される。
・優先度が高いその他のマスタのアキュムレータのビット8が1に等しくない場合
【0051】
以下の条件以外で、リフレッシュは最低の優先度を有する。
・リフレッシュ要求の合計がしきい値に達すると、その優先度はメインプロセッサ読み出しのすぐ下のレベルまであがる。
・優先度が高いその他のマスタのアキュムレータのビット8が1に等しくない場合
【0052】
(書き込みキューの調停例)
メインプロセッサ110、ピクセルエンジン700、オーディオDSP156及び周辺(I/O)コントローラ162は、書き込みキューの4つのマスタである。メインプロセッサによる書き込みは最優先され、その他3つのマスタは以下の状態以外の場合にラウンドロビン方式で調停される。
・メインプロセッサ書き込みのアキュムレータのビット8(MSB)が1に等しくなく、そのアキュムレータのビット8(MSB)が1に等しい書き込みマスタが他にある場合
【0053】
上記説明は、メモリ装置へのアクセスについてであるが、本発明はこれに限定されるものではなく、ここに説明するコンセプトは、バス(例えば、PCIバス)、プロセッサ(例えば、非埋め込み型プロセッサ)等の共有リソースへのアクセスを複数の要求部が要求するような状況下でも、十分に適用可能である。
【0054】
(その他互換性のあるインプリメンテーション例)
上記システム装置50は、上述したホームビデオゲームコンソール構成以外でも実現され得る。例えば、システム50をエミュレート、そうでなければ互換性がある違った構成を有するプラットフォーム上で、システム50向けに記述されたグラフィックスアプリケーションや他のソフトウェアを実行することができる。システム50のハードウェア及びソフトウェアリソースの一部又はすべてを、エミュレート、シミュレート及び/又は提供できるプラットフォームであれば、ソフトウェアを首尾良く実行することができる。
【0055】
例えば、エミュレータは、システム50のハードウェア及び/又はソフトウェア構成(プラットフォーム)とは異なるハードウェア及び/又はソフトウェア構成(プラットフォーム)を提供し得る。このエミュレータシステムは、アプリケーションソフトウェアが記述されたシステムのハードウェア及び/又はソフトウェア構成要素の一部又はすべてを、エミュレート又はシミュレートするソフトウェア及び/又はハードウェア構成要素を含むこともある。例えば、このエミュレータシステムは、システム50のハードウェア及び/又はファームウェアをシミュレートするソフトウェアエミュレータプログラムを実行するパーソナルコンピュータのような汎用デジタルコンピュータを備えることもある。上記オーディオシステムのDSP処理は、パーソナルコンピュータ上でエミュレート可能である。
【0056】
汎用デジタルコンピュータ(例えば、IBMやマッキントッシュのパーソナルコンピュータ、及びその互換機)によっては、DirectXやその他の標準3DグラフィックスコマンドAPIに準拠する3Dグラフィックスパイプラインを提供する、3Dグラフィックスカードを装備している。あるいは、サウンドコマンドの標準セットに基づく高品質な立体的サウンドを可能にする、立体的サウンドカードも装備していることがある。このような、エミュレータソフトウェアを実行するマルチメディアハードウェア対応パーソナルコンピュータは、システム50のグラフィックス及びサウンド性能を近似させるのに十分な性能を有し得る。エミュレータソフトウェアは、パーソナルコンピュータのプラットフォーム上のハードウェアリソースを制御して、ゲームプログラマがゲームソフトウェアを記述したホームビデオゲームコンソールプラットフォームの処理、3Dグラフィックス、サウンド、周辺、及びその他機能をシミュレートする。
【0057】
図13に、ホストプラットフォーム1201、エミュレータ構成1303及び記憶媒体62に用意されたゲームソフトウェアの実行可能な2値画像を用いた、包括的なエミュレーション処理の例を示す。ホスト1201は、例えば、パーソナルコンピュータ、ビデオゲームコンソール又はその他十分な演算能力を有するプラットフォームのような、汎用又は特殊目的用デジタル演算装置である。エミュレータ1303は、ホストプラットフォーム1201上で実行され、記憶媒体62からのコマンド、データ及び情報をホスト1201により処理可能な形式にリアルタイムに変換するソフトウェア及び/又はハードウェアである。例えば、エミュレータ1303は、システム50による実行を意図する「ソース」2値画像プログラム命令を記憶媒体62から取り出し、これらプログラム命令をホスト1201が実行又は処理可能な対象形式に変換する。
【0058】
例えば、ソフトウェアが、IBM Power PC等の特定のプロセッサを用いて、プラットフォーム上で実行されるよう記述されたものであり、ホスト1201がそれとは異なる(例えば、インテルの)プロセッサを使用したパーソナルコンピュータである場合、エミュレータ1303は、記憶媒体62から2値画像のプログラム命令を1つ又はそのシーケンスを取り出して、これらプログラム命令を1つ又はそれ以上の同等なインテルの2値画像プログラム命令に変換する。エミュレータ1303は、グラフィックス&オーディオプロセッサ114による処理向けのグラフィックスコマンドとオーディオコマンドも取り出し及び/又は生成し、これらコマンドを、ホスト1201上で使用可能なハードウェア及び/又はソフトウェアグラフィックス及びオーディオ処理リソースにより処理され得るフォーマットに変換する。一例として、エミュレータ1303は、これらのコマンドを、ホスト1201の特定グラフィックス及び/又はオーディオハードウェアで処理され得るコマンドに変換してもよい(例えば、標準DirectX、OpenGL及び/又はサウンドAPIを用いて)。
【0059】
上記ビデオゲームシステムの特長の一部又はすべてを提供するために使用されるエミュレータ1303は、グラフィックスユーザインタフェース(GUI)を備えていてもよく、これによりエミュレータを用いて実行されるゲームの様々なオプションやスクリーンモードの選択が簡易化又は自動化される。例えば、このようなエミュレータ1303は、本来のソフトウェア用ホストプラットフォームと比べてさらに機能が拡張されていてもよい。
【0060】
図14に、エミュレータ1303と共に使用するのに適したエミュレーションホストシステム1201を示す。システム1201は、処理ユニット1203及びシステムメモリ1205を含む。システムバス1207は、システムメモリ1205を始めとする様々なシステム構成要素を処理ユニット1203に接続する。システムバス1207は、メモリバス又はメモリコントローラを含むバス構造のいくつかのタイプのうちの1つであり、様々なバスアーキテクチャのうちの1つを利用した周辺バス及びローカルバスである。システムメモリ1207は、読み出し専用メモリ(ROM)1252、及びランダムアクセスメモリ(RAM)1254を含む。起動中等、パーソナルコンピュータシステム1201の内部要素の間での情報転送に役立つ基本ルーチンを含む基本入出力システム(BIOS)1256は、ROM1252に格納される。システム1201は、さらに様々なドライブと、それに関連するコンピュータ読み出し可能媒体を含む。ハードディスクドライブ1209は、(典型的に固定の)磁気ハードディスク1211からの読み出し/への書き込みを行う。追加(できればオプションで)磁気ディスクドライブ1213は、着脱可能な「フロッピー」又はその他の磁気ディスク1215からの読み出し/への書き込みを行う。光ディスクドライブ1217は、CD−ROMやその他の光学媒体等の着脱可能な光ディスク1219から読み出しを行い、構成によっては書き込みも行う。ハードディスクドライブ1209及び光ディスクドライブ1217は、それぞれハードディスクドライブインタフェース1221と光ドライブインタフェース1225とによって、システムバス1207に接続される。そのドライブとそれに関連するコンピュータ読み出し可能媒体とは、コンピュータ読み出し可能命令、データ構造、プログラムモジュール、ゲームプログラム及びその他パーソナルコンピュータシステム1201向けのデータを、不揮発的に記憶する。他の構成において、データを格納し、コンピュータによってアクセスされ得るコンピュータ読み出し可能媒体(例えば、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)等)も使用され得る。
【0061】
エミュレータ1303を含む数多くのプログラムモジュールは、ハードディスク1211、着脱式磁気ディスク1215、光ディスク1219、及び/又はシステムメモリ1205のROM1252及び/又はRAM1254上に記憶される。このようなプログラムモジュールは、グラフィックス&サウンドAPI、1つ又はそれ以上のアプリケーションプログラム、その他プログラムモジュール、プログラムデータ及びゲームデータを提供するオペレーティングシステムを含んでいてもよい。ユーザは、キーボード1227、ポインティング装置1229、マイク、ジョイスティック、ゲームコントローラ、衛星放送用アンテナ、スキャナ等の入力装置を通して、パーソナルコンピュータシステム1201にコマンドや情報を入力する。例えば、これらの入力装置は、システムバス1207に接続されるシリアルポートインタフェース1231を介して処理ユニット1203に接続され得るが、もちろん他のインタフェース、例えばパラレルポート、ゲームポートファイアワイヤバス又はユニバーサルシリアルバス(USB)によっても接続され得る。モニタ1233等の表示装置も、ビデオアダプタ1235等のインタフェースを介してシステムバス1207に接続される。
【0062】
システム1201は、モデム1154やその他のネットワークインタフェース手段も含み、インターネット等のネットワーク1152を介して通信を確立する。内部、外部を問わず、モデム1154は、シリアルポートインタフェース1231を介してシステムバス123に接続される。ネットワークインタフェース1156も備えられていてもよく、これによりシステム1201がローカルエリアネットワーク1158を介して、リモート演算装置1150(別システム1201等)と通信可能になる(この通信は、広域ネットワーク1152、又はダイアルアップやその他の通信手段等の通信パスでもかまわない)。システム1201は、典型的には、プリンタやその他の標準的な周辺装置等、その他周辺出力装置を含む。
【0063】
例えば、ビデオアダプタ1235は、マイクロソフトのDirect7.0、又はその他のバージョン等の標準3Dグラフィックスアプリケーションプログラマインタフェースに基づいて送出される3Dグラフィックスコマンドに応答して、高速3Dグラフィックスレンダリングを行う3Dグラフィックスパイプラインチップを含んでいてもよい。ステレオスピーカ1237のセットは、バス1207からのサウンドコマンドに基づいて、高品質な立体的サウンドを生成するためのハードウェア及び組み込みソフトウェアサポートを提供する、従来の「サウンドカード」のようなサウンド生成インタフェースを介して、システムバス1207に接続される。これらハードウェア機能により、システム1201が、記憶媒体62に格納されているソフトウェアをプレイするための、十分なグラフィックス及びサウンドスピード性能を提供する。
【0064】
以上、本発明を、最も実用的で好ましい実施形態であると現時点で判断される内容に関して説明してきたが、本発明は、開示された実施形態にのみ制限されるべきものではなく、反対に記載した請求項の範囲内において、様々に変更、及び同等な内容が適用されるものとする。
【図面の簡単な説明】
【図1】対話式コンピュータグラフィックスシステム例の全体図である。
【図2】図1に示すコンピュータグラフィックスシステム例を示すブロック図である。
【図3】図2に示すグラフィックス&オーディオプロセッサ例を示すブロック図である。
【図4】図3に示す3Dグラフィックスプロセッサ例を示すブロック図である。
【図5】図4のグラフィックス&オーディオプロセッサのロジカルフロー例を示す図である。
【図6】メモリコントローラ152とその他のシステム構成要素との関係を示す全体図である。
【図7】メインメモリ112へのアクセスの競合に関与する動作のいくつかを示す図である。
【図8】メモリコントローラ152のインタフェースを詳細に示す図である。
【図9】メモリコントローラ152の帯域幅制御回路620−1〜620−5を示す図である。
【図10】メモリコントローラ152のためのアドレスパス及び読み出しデータパスをそれぞれ示す図である。
【図11】メモリコントローラ152のためのアドレスパス及び読み出しデータパスをそれぞれ示す図である。
【図12】帯域幅制御回路620−1〜620−5の詳細を示すブロック図である。
【図13】別の互換的な実施例を示す図である。
【図14】別の互換的な実施例を示す図である。[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a method and apparatus for accessing a shared resource, and more particularly to a method and apparatus for accessing a shared resource of an interactive graphics system, such as an interactive graphic for a home video game platform.
[0002]
[Prior art]
Increasingly, fantasy creatures, such as dinosaurs, aliens, and animated toys, are seeing very realistic movies. Such moving images are made possible by computer graphics. By using this technique, the computer graphics artist can identify the shape of each object and the appearance changes that occur over time. Then, the computer models the object and displays it on the screen of a home television or computer. Each part of the display image is colored and formed based on the distance and orientation of objects in the scene, the illumination direction for each object, the texture of the surface of each object, and various other factors. The computer takes care of many of the processes necessary for this.
[0003]
Due to the complexity of the computer graphics generation process, until just a few years ago, the use of computer generated 3D graphics was limited to expensive and specialized flight simulators, high-end graphics workstations and supercomputers. It was. People could see the images produced by these computer systems in movies and high-cost television commercials, but could not come into contact with the computers that actually created the graphics. is there. However, the situation has changed with the advent of relatively inexpensive graphics platforms for personal computers, such as Nintendo 64 (registered trademark) and various 3D graphics cards. Now it is possible to interactively create powerful 3D animations and simulations in homes and offices using affordable computer graphics systems.
[0004]
[Problems to be solved by the invention]
In computer graphics systems, resources are often “shared” by a number of different components. For example, the operation of a graphics processor or main processor tends to end up with numerous access requests to system memory. It is known to use an arbitrator circuit to ensure proper allocation of memory access to each request. For arbitration, several different techniques can be applied, such as a technique in which one of the components is given high priority or a round robin method in which all of the components are given a memory access opportunity. is there. In this specification, a controller that can be configured to control the frequency of access requests to a shared resource related to the arbitration process, such as a memory controller, will be described.
[0005]
[Means for Solving the Problems]
One aspect of the present invention includes a controller that controls access to a shared resource. This controller is implemented as a state machine, for example, and includes an arbitrator for arbitrating a plurality of access requests to the shared resource, and a programmable bandwidth control circuit for controlling the arbitration frequency of requests by the arbitrator.
[0006]
The shared resource may be a computer readable medium and the request may include requests to read from and write to the computer readable medium. The bandwidth control circuit may be composed of programmable registers and associated accumulators. The contents of the programmable registers are repeatedly added to each corresponding accumulator and arbitrated when the corresponding accumulator value reaches a predetermined value (eg, when a particular bit is set / cleared). The registers are programmable using an application programming interface.
[0007]
Another aspect of the present invention is a method for controlling access to a shared resource, which arbitrates a plurality of access requests to the shared resource and controls the arbitration frequency of these requests in a programmable manner.
[0008]
DETAILED DESCRIPTION OF THE INVENTION
An example of an interactive 3D
[0009]
In this example, the
[0010]
To play an application such as a video game using the
[0011]
Further, the user connects the main unit 54 to a power source. This power source is a conventional AC adapter (not shown) that is plugged into a standard household electrical outlet and converts the household current into a low DC voltage signal suitable for powering the main unit 54. . The battery can be used in other embodiments.
[0012]
The user may control the main unit 54 with the
[0013]
When playing an application such as a game, the user appropriately selects a
[0014]
(Example of electronic components of the entire system)
FIG. 2 is a block diagram illustrating exemplary components of the
Main processor (CPU) 110
・ Graphics &
Is included.
[0015]
In this example, main processor 110 (eg, enhanced IBM Power PC 750) receives input from handheld controller 52 (and / or other input device) via graphics and
[0016]
In this example, the
[0017]
The
[0018]
The graphics and
Programmable read only memory and / or
A
-
May be used to communicate with various peripheral devices. Note that the additional external
[0019]
(Example of graphics and audio processor)
FIG. 3 is a block diagram illustrating an example of the graphics and
Memory interface /
Audio digital signal processor (DSP) 156
・ Audio Interface &
The
Is provided.
[0020]
The
[0021]
As will be described in detail later, the
[0022]
(Example of graphics pipeline)
FIG. 4 illustrates a graphics processing system that illustrates the
[0023]
The
[0024]
FIG. 5 is a logic flow diagram illustrating exemplary processing performed using
Command stream from
A
A command stream in the
Capture.
[0025]
The
FIG.
・
Setup /
-
The
A
[0026]
The
[0027]
The setup /
[0028]
The texture unit 500 (which may include an on-chip texture memory (TMEM) 502) may perform various processes related to texture, such as
Acquisition of
-For example, multi-texture processing, post-cache texture stretching, texture filtering, embossing, shading and lighting using projected textures, texture processing including alpha transparency and depth BLIT (500a),
Bump map processing for calculating texture coordinate shifts for bump mapping, pseudo-texture, and texture tiling effect (500b), and
-Indirect texture processing (500c),
I do.
[0029]
The
[0030]
The
[0031]
(Example of memory controller)
FIG. 6 is an overall view showing the relationship between the
[0032]
The
3D graphics processor 154 (specifically,
A
A
A
Etc.
[0033]
These “requesting units” compete for access to the
1. Loading texture images from the mass storage device 62 (eg DVD) for the new game sector or level into the
2. Load shape vertex display list from
3. Dynamic rendering of texture maps by
4). Dynamic generation or modification of vertices by
5. Light and matrix animation by
6). Creation of display list by
7). Generation of graphics command stream by
9. Reading display list by
Vertex access for rendering by 10.3
Texture access for rendering by 11.3
[0034]
These operations are exemplary and are only some of the many operations related to reading and writing to the
Read
Read
Write
Read /
Read /
A
Read /
Mediate between.
[0035]
Of course, these ports are for illustrative purposes, and in some embodiments, the number of ports may be more or less. Further, the bus / signal line widths shown in FIG. 8 etc. are for illustrative purposes only and do not limit the scope of the present invention. The
[0036]
Some of the masters are memory “hogs” (eg, main processor read master, command processor read master, texture unit read master, main processor write master, and pixel engine write master). As schematically shown in FIG. 9, the
[0037]
The arbitration scheme is typically set and balanced to the intended overall system operation. Thereby, in an arbitration method, the main processor read request has the highest priority. However, depending on the application, it may be preferable to give a lower priority to the main processor read and give more bandwidth to the graphics processing. In this case, the main processor bandwidth control circuit may be configured such that the main processor read-out is not arbitrated every cycle. This allows the system performance to be well tuned for the application.
[0038]
10 and 11 show an address path and a read data path for the
[0039]
There is an arbitration scheme for the global write buffer WQ0. This is because there are cases where four request units make a write request to the
[0040]
By collecting write requests in the global write buffer WQ0, switching from read to write and write to read is reduced, and dead memory cycles that occur when the main memory bus is changed can be minimized. The write request is supplied to the global write buffer WQ0, while the read request is processed according to the arbitration method. When the global write buffer WQ0 is filled to a certain level, or when a read request from the main processor matches an entry in the global write buffer, the main memory bus is often switched from read to write state. By this switchover, the global write buffer WQ0 is flushed in order to write data to a specific address in the
[0041]
FIG. 12 shows an implementation example of the bandwidth control circuits 620-1 to 620-5. Of course, the bandwidth control circuit can be realized by other methods, and the present invention is not limited to this. In the example embodiment, each bandwidth control circuit includes a
[0042]
An example of a programmable register is shown below.
[Table 1]
[0043]
A memory access request from a request unit is first-in / first-out, and one of the first-in / first-out requests is arbitrated every N cycles determined by the corresponding programmable register. As a result, the bandwidth control circuit functions as a request filter. For example, when these request units generate a large number of requests at a time and other request units generate requests in the same manner, the main memory by a specific request unit The access request to 112 can be slowed down. Thus, if a particular requester is generating a large number of data write requests to
[0044]
The bandwidth control circuit controls the memory bandwidth for the corresponding master. For example, if the accumulator bit 8 (ie, the most significant bit) is not 1, the contents of the command processor's programmable register are incremented every memory cycle, even if there is a waiting command processor request, the
[0045]
Thus, the bandwidth control circuits 620-1 to 620-5 control the frequency of arbitrating requests from the master in a programmable manner, thereby affecting the use of the memory by the “hog” of the main memory. The bandwidth control circuit for a certain write master can slow down the write from the write master to the
[0046]
In this example system, all reads are a single cache line (32 bytes). Therefore, two cycles are required for reading out the cache line at 200 MHz, and new reading is performed every 10 nanoseconds. In round robin arbitration between other request units, the read request from the
• Two main processor reads cannot be performed in succession.
• Two system reads cannot be performed in succession.
• Two rows are refreshed during a 10 nanosecond refresh cycle. One line every 5 nanoseconds.
The bandwidth control circuit described herein is not limited to use with any particular arbitration process. A read queue arbitration scheme example and a write queue arbitration scheme example are described below, but these are examples and not limitations. Further details of these exemplary arbitration methods are described in the provisional application number 60 / 226,894 and the corresponding application number 09 / 726,220, both of which are named “graphics processing system using a function-enhanced memory controller”. Has been.
[0047]
(Read queue arbitration example)
The
When the
The accumulator bit 8 (MSB) for the main processor read master is not equal to 1 and there is another request by another master where the accumulator bit 8 (MSB) is equal to 1.
When the write buffer is completely full and in the middle of a write cycle
-The previous main processor address matches the valid main processor write address in the processor interface local write buffer or the global write buffer that flushes the write buffer.
[0048]
The
When the
-Command processor read or texture unit read accumulator bit 8 (MSB) is not equal to 1 and there is another request by another master whose
[0049]
The readout of the audio DSP 156 (or peripheral (I / O)
The audio DSP 156 (or peripheral (I / O)
[0050]
The global write buffer WQ0 has a lower priority than the
When the global write buffer WQ0 is completely full and arbitration is performed using the round robin method
The main processor read address has the highest priority when it matches the write address in the global write buffer WQ0.
If
[0051]
Except for the following conditions, refresh has the lowest priority.
When the total refresh request reaches the threshold, its priority goes up to the level just below the main processor read.
If
[0052]
(Example of write queue arbitration)
The
When there is another write master in which the accumulator bit 8 (MSB) of the main processor write is not equal to 1 and bit 8 (MSB) of the accumulator is equal to 1.
[0053]
Although the above description is about access to a memory device, the present invention is not limited to this, and the concepts described here include a bus (eg, a PCI bus), a processor (eg, a non-embedded processor). The present invention is sufficiently applicable even in a situation where a plurality of requesting units request access to a shared resource such as the above.
[0054]
(Other compatible implementation examples)
The
[0055]
For example, the emulator may provide a hardware and / or software configuration (platform) that is different from the hardware and / or software configuration (platform) of the
[0056]
Some general-purpose digital computers (eg, IBM and Macintosh personal computers and compatibles) are equipped with a 3D graphics card that provides a 3D graphics pipeline that conforms to DirectX and other standard 3D graphics command APIs. . Alternatively, it may be equipped with a stereo sound card that allows high quality stereo sound based on a standard set of sound commands. Such a multimedia hardware capable personal computer running emulator software may have sufficient performance to approximate the graphics and sound performance of the
[0057]
FIG. 13 shows an example of comprehensive emulation processing using binary images executable by game software prepared in the
[0058]
For example, the software is written to be executed on a platform using a specific processor such as an IBM Power PC, and the
[0059]
The
[0060]
FIG. 14 shows an
[0061]
Many program modules including the
[0062]
The
[0063]
For example, the
[0064]
Although the present invention has been described in terms of what is presently determined to be the most practical and preferred embodiment, the present invention should not be limited to only the disclosed embodiment, but is described in reverse. Various changes and equivalents shall be applied within the scope of the appended claims.
[Brief description of the drawings]
FIG. 1 is an overall view of an example interactive computer graphics system.
FIG. 2 is a block diagram illustrating an example of a computer graphics system shown in FIG.
3 is a block diagram illustrating an example of the graphics and audio processor shown in FIG. 2. FIG.
4 is a block diagram illustrating an example of the 3D graphics processor shown in FIG. 3. FIG.
FIG. 5 is a diagram showing an example of a logical flow of the graphics & audio processor of FIG. 4;
6 is an overall view showing the relationship between the
7 is a diagram illustrating some of the operations involved in contention for access to the
FIG. 8 is a diagram showing in detail the interface of the
9 is a diagram showing bandwidth control circuits 620-1 to 620-5 of the
10 is a diagram showing an address path and a read data path for the
11 is a diagram showing an address path and a read data path for the
12 is a block diagram showing details of bandwidth control circuits 620-1 to 620-5. FIG.
FIG. 13 shows another compatible embodiment.
FIG. 14 illustrates another compatible embodiment.
Claims (21)
共有リソースへの複数のアクセス要求を調停するアービトレータ、及び
アービトレータによってアクセス要求が調停される割合を、当該アクセス要求の量に応じてプログラミングされることにより制御するようにプログラミング可能な帯域幅制御回路を備える、コントローラ。A controller that controls access to shared resources,
Arbitrator that arbitrates multiple access requests to a shared resource, and a bandwidth control circuit that can be programmed to control the rate at which access requests are arbitrated by the arbitrator by being programmed according to the amount of the access request A controller.
プログラム可能レジスタの内容は、それぞれ対応するアキュムレータに繰り返し加算され、プログラム可能レジスタに対応するアクセス要求は、アキュムレータの値が所定の値に達すると調停されることを特徴とする、請求項2に記載のコントローラ。The bandwidth control circuit further comprises an accumulator,
The contents of the programmable register is repeatedly added to the corresponding accumulators, the access request corresponding to the programmable register, wherein the value of the accumulator is arbitrated and reaches a predetermined value, according to claim 2 Controller.
表示用の3D視覚画像を生成するためのグラフィックスコマンドを処理するグラフィックス処理回路、
グラフィックス処理回路にアクセス可能なメモリ、
グラフィックス処理回路からの、複数のメモリアクセス要求を調停するためのアービトレータ、及び
アービトレータによってアクセス要求が調停される割合を、当該アクセス要求の量に応じてプログラミングされることにより制御するようにプログラミング可能な帯域幅制御回路を備える、3Dグラフィックスシステム。A 3D graphics system,
A graphics processing circuit for processing graphics commands for generating a 3D visual image for display;
Memory accessible to the graphics processing circuit,
Arbitrator for arbitrating multiple memory access requests from the graphics processing circuit, and the rate at which access requests are arbitrated by the arbitrator can be programmed to be controlled by programming according to the amount of access requests 3D graphics system with a flexible bandwidth control circuit.
プログラム可能レジスタの内容は、それぞれ対応するアキュムレータに繰り返し加算され、プログラム可能レジスタに対応するアクセス要求は、アキュムレータの値が所定の値に達すると調停されることを特徴とする、請求項8に記載の3Dグラフィックスシステム。The bandwidth control circuit further comprises an accumulator,
The contents of the programmable register is repeatedly added to the corresponding accumulators, the access request corresponding to the programmable register, wherein the value of the accumulator is arbitrated and reaches a predetermined value, according to claim 8 3D graphics system.
メインプロセッサ、
表示用の3D視覚画像を生成するためのグラフィックスコマンドを処理するグラフィックス処理回路、
3D視覚画像を伴うオーディオコンテンツを生成するためのオーディオコマンドを処理するオーディオ処理回路、
グラフィックス処理回路及びオーディオ処理回路にアクセス可能であるメモリ、
少なくともメインプロセッサとグラフィックス処理回路とからの複数のメモリアクセス要求を調停するアービトレータ、及び
アービトレータによってアクセス要求が調停される割合を、当該アクセス要求の量に応じてプログラミングされることにより制御するようにプログラミング可能な帯域幅制御回路を備える、ビデオゲームシステム。A video game system,
Main processor,
A graphics processing circuit for processing graphics commands for generating a 3D visual image for display;
An audio processing circuit for processing an audio command for generating audio content with a 3D visual image;
A memory accessible to the graphics processing circuit and the audio processing circuit;
Arbitrator for arbitrating a plurality of memory access requests from at least the main processor and the graphics processing circuit, and a rate at which the access request is arbitrated by the arbitrator is controlled by being programmed according to the amount of the access request. A video game system comprising a programmable bandwidth control circuit.
プログラム可能レジスタの内容は、それぞれ対応するアキュムレータに繰り返し加算され、プログラム可能レジスタに対応するアクセス要求は、アキュムレータの値が所定の値に達すると調停されることを特徴とする、請求項14に記載のビデオゲームシステム。The bandwidth control circuit further comprises an accumulator,
The contents of the programmable register is repeatedly added to the corresponding accumulators, the access request corresponding to the programmable register, wherein the value of the accumulator is arbitrated and reaches a predetermined value, according to claim 14 Video game system.
共有リソースへの複数のアクセス要求を調停し、及び
アクセス要求が調停される割合を、当該アクセス要求の量に応じてプログラミングされることにより制御する、方法。A method of controlling access to a shared resource,
A method of arbitrating a plurality of access requests to a shared resource and controlling a rate at which the access requests are arbitrated by being programmed according to the amount of the access request.
表示用の3D視覚画像を生成するグラフィックスコマンドを処理し、
その処理中に複数のメモリアクセス要求を調停し、及び
アクセス要求が調停される割合を、当該アクセス要求の量に応じてプログラミングされることにより制御することを特徴とする、方法。A method for controlling access to memory in a 3D graphics system comprising:
Processing graphics commands to generate 3D visual images for display;
A method of arbitrating a plurality of memory access requests during the process, and controlling a rate at which the access requests are arbitrated by being programmed according to an amount of the access requests.
前記コンピュータを、
共有リソースへの複数のアクセス要求を調停するアクセス要求調停手段、及び
前記アクセス要求調停手段によってアクセス要求が調停される割合を、当該アクセス要求の量に応じてプログラミングされることにより制御するようにプログラミング可能な帯域幅制御手段として機能させる、情報処理プログラム。An information processing program to be executed by a computer of an information processing apparatus that controls access to a shared resource,
The computer,
An access request arbitration unit that arbitrates a plurality of access requests to a shared resource, and a program that controls a rate at which an access request is arbitrated by the access request arbitration unit by being programmed according to the amount of the access request An information processing program that functions as a possible bandwidth control means.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US22688600P | 2000-08-23 | 2000-08-23 | |
US60/226886 | 2000-08-23 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012098920A Division JP5142419B2 (en) | 2000-08-23 | 2012-04-24 | Method and apparatus for accessing shared resource |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002163144A JP2002163144A (en) | 2002-06-07 |
JP5020443B2 true JP5020443B2 (en) | 2012-09-05 |
Family
ID=22850827
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001163361A Expired - Lifetime JP5020443B2 (en) | 2000-08-23 | 2001-05-30 | Method and apparatus for accessing shared resource |
JP2012098920A Expired - Lifetime JP5142419B2 (en) | 2000-08-23 | 2012-04-24 | Method and apparatus for accessing shared resource |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012098920A Expired - Lifetime JP5142419B2 (en) | 2000-08-23 | 2012-04-24 | Method and apparatus for accessing shared resource |
Country Status (1)
Country | Link |
---|---|
JP (2) | JP5020443B2 (en) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6043764A (en) * | 1983-08-19 | 1985-03-08 | Nec Corp | Information processing system |
JPH05120239A (en) * | 1991-10-30 | 1993-05-18 | Seiko Epson Corp | Parallel processing circuit |
JPH0660017A (en) * | 1992-08-06 | 1994-03-04 | Nec Eng Ltd | Collision circuit |
JPH07200386A (en) * | 1993-12-28 | 1995-08-04 | Toshiba Corp | Access controller for shared memory and image forming device |
JPH07295877A (en) * | 1994-04-20 | 1995-11-10 | Fuji Xerox Co Ltd | Arbiter |
US6006303A (en) * | 1997-08-28 | 1999-12-21 | Oki Electric Industry Co., Inc. | Priority encoding and decoding for memory architecture |
JPH11167557A (en) * | 1997-12-02 | 1999-06-22 | Hitachi Ltd | Shared memory access sequence assurance method and multiprocessor system |
JP2000194683A (en) * | 1998-12-28 | 2000-07-14 | Nec Kofu Ltd | Arbitration circuit and method for shared memory |
-
2001
- 2001-05-30 JP JP2001163361A patent/JP5020443B2/en not_active Expired - Lifetime
-
2012
- 2012-04-24 JP JP2012098920A patent/JP5142419B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP5142419B2 (en) | 2013-02-13 |
JP2012164344A (en) | 2012-08-30 |
JP2002163144A (en) | 2002-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5149985B2 (en) | Graphics processing system with function expansion memory controller | |
JP4808858B2 (en) | Graphics pipeline and method of synchronizing the same | |
JP4698893B2 (en) | Method, graphics system, and program for providing improved fog effects | |
JP4757406B2 (en) | Graphics system | |
JP4846120B2 (en) | Graphics device with skeleton animation stitching hardware | |
JP4691273B2 (en) | Graphics processing system and embossed bump mapping method | |
JP4890638B2 (en) | Method and apparatus for processing direct and indirect textures in a graphics system | |
US6636214B1 (en) | Method and apparatus for dynamically reconfiguring the order of hidden surface processing based on rendering mode | |
JP5025849B2 (en) | Method and apparatus for prefetching audio signals | |
JP2002074387A (en) | Image generating method using z texturing | |
AU785318B2 (en) | Method and apparatus for pre-caching data in audio memory | |
JP4570766B2 (en) | Method and apparatus for mixing audio signals | |
JP5020443B2 (en) | Method and apparatus for accessing shared resource | |
JP4658397B2 (en) | Method and apparatus for pre-caching data in audio memory | |
JP4740476B2 (en) | Method and apparatus for providing a logical combination of N alpha operations in a graphics system | |
JP4740490B2 (en) | Clamping Z values in the Z neighborhood to maximize the accuracy of visually important Z components in graphics rendering systems and avoid Z neighborhood clipping | |
JP4698894B2 (en) | Method, apparatus and program for texture tiling in a graphics system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080519 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110418 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110420 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110614 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20110902 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120202 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120424 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20120501 |
|
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: 20120612 |
|
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: 20120613 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5020443 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: 20150622 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 |
|
EXPY | Cancellation because of completion of term |