JP2007172609A - 効率的かつ柔軟なメモリ・コピー動作 - Google Patents

効率的かつ柔軟なメモリ・コピー動作 Download PDF

Info

Publication number
JP2007172609A
JP2007172609A JP2006337593A JP2006337593A JP2007172609A JP 2007172609 A JP2007172609 A JP 2007172609A JP 2006337593 A JP2006337593 A JP 2006337593A JP 2006337593 A JP2006337593 A JP 2006337593A JP 2007172609 A JP2007172609 A JP 2007172609A
Authority
JP
Japan
Prior art keywords
memory
instruction
memory copy
processor
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006337593A
Other languages
English (en)
Other versions
JP5120832B2 (ja
Inventor
P Sharma Satya
サティヤ・ピー・シャルマ
G Mealey Bruce
ブルース・ジー・ミレイ
Sinharoy Balaram
バラーラム・シンハロイ
H Hochschild Peter
ピーター・エイチ・ホックシールド
K Arimilli Ravi
ラビ・ケー・アリミリ
K Govindaraju Rama
ラーマ・ケー・ゴービンダラジュ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2007172609A publication Critical patent/JP2007172609A/ja
Application granted granted Critical
Publication of JP5120832B2 publication Critical patent/JP5120832B2/ja
Expired - Fee Related 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/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing

Abstract

【課題】メモリ・コピー動作のあいだにプロセッサが後続の命令を実行し続けられるようなメモリ・コピー動作を提供し、不必要なプロセッサ・ダウンタイムを回避する。
【解決手段】半同期メモリ・コピー動作実行のためのメモリ・コピー命令を受信するステップを含む。半同期メモリ・コピー動作は、フラグ・ビットを設定することによりメモリ内のソース位置に対応する仮想ソース・アドレス及びメモリ内のターゲット位置に対応する仮想ターゲット・アドレスに関する妥当性の一時的な永続性を保つ。メモリ・コピー命令は、少なくとも仮想ソース・アドレス、仮想ターゲット・アドレス、及びコピーされるバイト数を識別する標識を含む。メモリ・コピー命令は、メモリ・コントローラによりメモリ・コピー動作を実行するために、メモリ・コントローラに結合されたキューに入れられる。後続の命令が命令パイプラインから利用可能になったときの実行が続行される。
【選択図】図2

Description

本発明は、一般に、情報処理システムの分野に関し、より具体的には、情報処理システム内のメモリ・コピー動作に関する。
メモリ・コピー動作は、非常に頻繁に実施されるデータ処理動作である。こうした動作は、ソフトウェアによるアプリケーションレベルで、オペレーティング・システム(OS)レベルで、またミドルウェア・プログラミングによって、開始される。メモリ・コピー動作は、メモリの1つの位置から別の位置へデータをコピーするロード及びストア動作の反復を伴ってプログラムされることが通例である。これにより、データ転送が、中央演算処理装置(CPU、又はより簡略に「プロセッサ」)を経由してステージ化される。その結果として、以下の理由により、データ処理システムの全体的な動作に非効率性がもたらされる。
(1)コピー動作の性能は、CPUの速度に合致するには不十分であることがしばしばである、利用可能なメモリの帯域幅によって制限される。
(2)データ転送は、CPUを経由し、ロード及びストア命令を介して、ステージ化されるので、移動動作の間、本質的にCPUを拘束し、CPUに他のタスクを処理することを停止させる。
(3)通例、CPUはメモリ・サブシステムより高速であることから、CPUはデータがメモリからCPUに到着するのを待つ間アイドル状態となる。
上記の議論から分かるように、メモリ・コピー動作は、アプリケーション、ミドルウェア、及びオペレーション・システムにとって、性能に依存したプロシージャである。メモリ・コピー動作を実施する多くの方法が、ロード及びストア命令を繰り返し使用することにより、CPUを経由してデータがステージ化されることを引き起こす。上述されたように、この種の動作は、特に大量のデータがコピーされる時には、比較的長時間にわたってCPUを拘束する。メモリ待ち時間及びメモリ帯域幅の制限がCPU速度に比べて遅い全体的な転送速度をもたらすため、このような動作も低速になり、結果として望ましくないレベルの性能をもたらす。
しかしながら、リアル・モードでのメモリ・コピー動作においては、ピンニングされたページに関して(従って、リアル・メモリ・アドレスに関して)は幾つかの解決策が事実上存在するが、アプリケーションによる、ミドルウェアによる、及びオペレーティング・システムによる一般使用に関しては、何ひとつ存在しない。別の言い方をすれば、データ・プロセッサが仮想アドレッシング・モードで機能しているときには、効率的なメモリ・コピー動作は単純に不可能であるか又は容認されない。本発明の出現に至るまでは、リアル・アドレッシング・モードが用いられたときにのみ、メモリ・コピー動作の効率を向上させる努力がなされたのであり、またそのときでさえ、「ページのピンニング」が必要である。ピンニングとは、メモリが、メモリの該当部分に格納されたデータのページ・アウトを防止するように設定されたときのことである。このことは、一時バッファへのデータ・アクセスにおいてページ不在が起こらないことを保証する。
別の問題は、ストア動作の典型的な実装は、キャッシュ・ライン全体が最終的には再書込みされるにも拘わらず、宛先キャッシュ・ラインがメモリからフェッチされるということが起こる点である。このことはまた、望ましくないことにメモリ帯域幅の大部分を無駄にする。
従来のメモリ・コピーにおける別の非効率の原因は、不完全なデータ位置合わせである。典型的なコンピュータ・システムは、自然に位置合わせされたデータをロード及びストアするときには、より効率的である。それらはまた、より粒度の大きいデータをロード及びストアするときには、より効率的である(例えば、64ビットの動作は32ビットの動作よりも効率的である)。残念なことに、メモリ・サブシステムに関しては、アプリケーション・ソフトウェアの大きなクラスは、データの自然な位置合わせということになると、良好に挙動しない。逆に、殆どのアプリケーション・ソフトウェアは、メモリ・コピー動作を達成するために、bcopy又は類似の命令といったオペレーティング・システム(OS)命令に依存する。bcopyルーチンは、アプリケーションの位置合わせ挙動に関して何の知識も持たず、全ての位置合わせ条件の下で効率的に働くように設計されねばならない。
従って、上述されたように、従来技術に関わる問題を克服する必要性が存在する。
略述すれば、本発明により、データをメモリの第1部分からメモリの第2部分に半同期的にコピーするためのシステム、方法、及びプログラムが開示される。この方法は、プロセッサにおいて半同期メモリ・コピー動作実行のためのメモリ・コピー命令を受信するステップを含む。半同期メモリ・コピー動作は、フラグ・ビットを設定することによりメモリ内のソース位置に対応する仮想ソース・アドレス及びメモリ内のターゲット位置に対応する仮想ターゲット・アドレスに関する妥当性の一時的な永続性を保つ。メモリ・コピー命令は、少なくとも仮想ソース・アドレス、仮想ターゲット・アドレス、及びコピーされるバイト数を識別する標識を含む。メモリ・コピー命令は、メモリ・コントローラによりメモリ・コピー動作を実行するために、メモリ・コントローラに結合されたキューに入れられる。後続の命令が命令パイプラインから利用可能になったときに少なくとも1つの後続の命令の実行が続行される。
本発明の別の実施形態においては、データをメモリの第1部分からメモリの第2部分に半同期的にコピーするシステムが開示される。システムは、メモリと、メモリに通信可能に結合されるメモリ・コントローラとを含む。システムはまた、メモリ及びメモリ・コントローラに通信可能に結合されたプロセッサを含む。プロセッサは、半同期メモリ・コピー動作実行のためのメモリ・コピー命令を受信する。半同期メモリ・コピー動作は、フラグ・ビットを設定することによりメモリ内のソース位置に対応する仮想ソース・アドレス及びメモリ内のターゲット位置に対応する仮想ターゲット・アドレスに関する妥当性の一時的な永続性を保つ。メモリ・コピー命令は、少なくとも仮想ソース・アドレス、仮想ターゲット・アドレス、及びコピーされるバイト数を識別する標識を含む。メモリ・コントローラによりメモリ・コピー動作を実行するために、メモリ・コピー命令を保持するキューも含まれ、該キューは、メモリ・コントローラに結合される。
本発明の更に別の実施形態においては、データをメモリの第1部分からメモリの第2部分に半同期的にコピーするためのプログラムが開示される。具体的な実施形態においては、プログラムは、以下の手順をコンピュータに実行させる。まず、プロセッサにおいて、半同期メモリ・コピー動作実行のためのメモリ・コピー命令を受信する。半同期メモリ・コピー動作は、フラグ・ビットを設定することによりメモリ内のソース位置に対応する仮想ソース・アドレス及びメモリ内のターゲット位置に対応する仮想ターゲット・アドレスに関する妥当性の一時的な永続性を保つ。メモリ・コピー命令は、少なくとも仮想ソース・アドレス、仮想ターゲット・アドレス、及びコピーされるバイト数を識別する標識を含む。メモリ・コントローラによりメモリ・コピー動作を実行するために、メモリ・コピー命令がキューに入れられる。キューは、メモリ・コントローラに結合される。後続の命令が命令パイプラインから利用可能になったときに、少なくとも1つの後続の命令の実行が続行される。
上記の実施形態の利点は、メモリ・コピー動作のあいだにプロセッサが後続の命令を実行し続けられるようなメモリ・コピー動作を提供し、それにより、不必要なプロセッサ・ダウンタイムを回避するという点である。本発明の別の利点は、メモリ・コピー命令が有効(仮想)アドレスを引数として取るため、メモリ・コピー命令のソース及びターゲットによって参照される仮想メモリ・ページはピンニングされず、ページ不在を許容できるという点である。これにより、ピンニング・ページのオーバーヘッドが必然的に回避できるようになる。本発明の更に別の利点は、メモリ・コピー命令が、命令引数として渡されたアドレスの位置合わせに対して制約を課さない点である。本発明の更なる利点は、データ完成と組み合わせてキャッシュ注入を用いることにより、メモリ待ち時間が回避できる点である。
個別の図面全てにわたり同一要素又は機能上類似の要素には同一の参照符号が付され、それらの図面は以下の詳細な説明と共に、本発明に係る種々の実施形態を更に詳述し、種々の原理及び利点を説明する役目を果たす。
必要に応じ、本発明の詳細な実施形態がここに開示されるが、開示された実施形態は、種々の形態で実施することが可能である本発明の単なる例示であると理解されるべきである。従って、ここで開示される具体的な構造上の詳細及び機能上の詳細は、限定するものではなく、単に請求項の基礎として、また事実上あらゆる適切な詳細な構造において本発明を様々に用いることを当事者に教示するための代表的な基礎として解釈されるべきである。更に、ここで用いられる用語及び語句は、限定するのではなく、本発明のわかりやすい説明を提供することを意図している。
ここで用いられる「1つの」という用語、及び単数複数を区別しない場合は、1つ又はそれ以上と定義される。ここで用いられる、「複数」という用語は、2つ又はそれ以上と定義される。ここで用いられる、「別の」という用語は、少なくとも第2又はそれ以上と定義される。ここで用いられる、「含む」及び「有する」という用語は、具備すると定義される(即ちオープン・ランゲージである)。ここで用いられる、「結合」という用語は、接続と定義されるが、必ずしも直接的にであるとは限らず、また必ずしも機械的にであるとは限らない。
ここで用いられる「メモリ・コピー動作」及び「メモリ・コピー」という用語は、ランダム・アクセス・メモリの一部分にあるデータが、同じランダム・アクセス・メモリの別の部分に、ソース・ストレージ位置のメモリ内容を変更することなしにコピーされるという、情報処理システム内において実行されるプロセスである。しかしながら、本発明の1つの例示的な実施形態においては、「メモリ・コピー」という用語は、何キロバイトものデータや、果てはメガバイト単位のデータをコピーすることを伴うメモリ・コピー動作を指す。
本発明は、1つの実施形態により、メモリ・コピー動作のための1つのより効率的な機構を提供することによって、従来技術に伴う問題を克服する。本発明は、プロセッサが、メモリ・コピー動作の間も後続の命令の実行を続けられるようにし、それにより、不必要なプロセッサ・ダウンタイムを回避する。
例示的なプロセッサ
本発明の1つの実施形態により、図1に示されるように、全体が100で表される、本発明によって命令及びデータを処理するための例示的なプロセッサが図示される。プロセッサ100は、以下で更に説明されるように、それら全てが集積回路によって形成されている種々の実行装置、レジスタ、バッファ、メモリ、及び他の機能的な装置を含む、スーパースカラ・プロセッサなどの単一の集積回路プロセッサを含む。
図1に示されるように、プロセッサ100は、システム・メモリ102、及び1つの実施形態においては第2のプロセッサ104といった他のデバイスに、相互接続ファブリック106を用いて結合し、コンピュータ・システムのようなより大規模なデータ処理システムを形成することができる。プロセッサ100は、例えば統合レベル2(「L2」)キャッシュ108と、分岐したレベル1(「L1」)命令(I)キャッシュ110及びデータ(「D」)キャッシュ112とを含む、オンチップ・マルチレベル・キャッシュ階層を有する。当業者には周知のように、キャッシュ108、110、112は、システム・メモリ102内のメモリ位置に対応するキャッシュ・ラインへの待ち時間の少ないアクセスを提供する。
命令フェッチ・アドレス・レジスタ(「IFAR」)114にある有効アドレス(「EA」)に応答して、処理のためにL1 I−キャッシュ110から命令がフェッチされる。各サイクルの間に、3つのソース、即ち、条件付き分岐命令の予測からもたらされる推測パス・アドレスを提供する分岐予測装置(「BPU」)116、非推測パス・アドレスを提供する完了装置(「CU」)194、及び、予測が不正確だった条件付き分岐命令を解決することからもたらされる非推測パス・アドレスを提供する分岐実行装置(「BEU」)120のうちの1つから、新たな命令フェッチ・アドレスをIFAR114にロードすることができる。ヒット/ミス論理122は、有効アドレスからリアル・アドレスへの変換(「ERAT」)124及びI−キャッシュ・ディレクトリ126内のリアル・アドレス(「RA」)の参照によりIFAR114に含まれるEAを変換した後で、IFAR114内のEAに対応する命令のキャッシュ・ラインがL1 I−キャッシュ110にないと判断した場合には、I−キャッシュ要求バス128を介してL2キャッシュ108にRAを要求アドレスとして提供する。こうした要求アドレスはまた、L2キャッシュ108内のプリフェッチ論理によって、最近のアクセス・パターンに基づいて生成することもできる。要求アドレスに応答して、L2キャッシュ108が命令のキャッシュ・ラインを出力し、それらの命令は、恐らくはオプションのプリデコード論理134を通過した後で、プリフェッチ・バッファ(「PB」)130及びL1 I−キャッシュ・リロード・バス132にロードされる。
一旦IFAR114内のEAによって指定されたキャッシュ・ラインがL1 I−キャッシュ110に格納されると、L1 I−キャッシュ110は、分岐予測装置(「BPU」)116と命令フェッチ・バッファ(「IFB」)136との両方にそのキャッシュ・ラインを出力する。BPU116は、命令のキャッシュ・ラインをスキャンして分岐命令を探し、もしあれば、条件付き分岐命令の結果を予測する。分岐予測に従い、BPU116は、上述されたようにIFAR114に推測命令フェッチ・アドレスを供給し、分岐命令キュー(「BIQ」)138に予測を渡して、そのことにより、後で分岐実行装置120により条件付き分岐命令が解決された時に、予測の正確性を判断することができるようにする。
IFB136は、L1 I−キャッシュ110から受信された命令のキャッシュ・ラインを、その命令のキャッシュ・ラインが命令変換装置(「ITU」)140によって変換することができるようになるまで、一時的にバッファする。図示されたプロセッサ100の実施形態においては、ITU140は、ユーザ命令セット・アーキテクチャ(「UISA」)命令から、プロセッサ100の実行装置により直接実行可能な、数が異なる可能性のある内部ISA(「IISA」)命令へと、命令を変換する。このような変換は、例えば、読取り専用メモリ(「ROM」)テンプレートに格納されたマイクロコードを参照することによって実施することができる。少なくとも幾つかの実施形態においては、UISAからIISAへの変換は、元のUISA命令とは異なる数又は異なる長さのIISA命令をもたらす。結果得られるIISA命令は、次いで、グループ完了テーブル118により、そのメンバーが互いに順不同にディスパッチされ実行されることが許可されているグループに割当てられる。グループ完了テーブル118は、グループの中で最古の命令のEAであることが好ましい少なくとも1つの関連付けられたEAによって実行がまだ完了されていないグループの各々を追跡する。
UISAからIISAへの命令変換に続いて、命令は、命令の種類に基づいて、順不同にラッチ142、144、146、148のうちの1つにディスパッチされる。即ち、分岐命令及び他の条件レジスタ(「CR」)修正命令はラッチ142にディスパッチされ、固定小数点命令及びロード/ストア命令はラッチ144及び146のいずれかにディスッチされ、浮動小数点命令はラッチ148にディスパッチされる。次いで、実行結果を一時的に格納するための名前変更レジスタを必要とする命令の各々が、適切なCRマッパー150、リンク及びカウント(「LC」)レジスタ・マッパー152、例外レジスタ(「XER」)マッパー154、汎用レジスタ(「GPR」)マッパー156、又は浮動小数点レジスタ(「FPR」)マッパー158により、1つ又は複数の名前変更レジスタに割当てられる。
次いで、ディスパッチされた命令は、適切なCR発行キュー(「CRIQ」)160、分岐発行キュー(「BIQ」)138、固定小数点発行キュー(「FXIQ」)162、164、又は浮動小数点発行キュー(「FPIQ」)166、168に一時的に置かれる。データ依存関係及びデータ非依存関係が観察される限りにおいて、便宜的に、発行キュー160、138、162、164、166、168からプロセッサ100の実行装置に命令を発行して、実行させることが可能である。しかしながら、命令は、命令のいずれかが再発行される必要性が生じた場合に備えて、命令の実行が完了し、もしあれば結果データが書き戻されるまで、発行キュー160、138、162、164、166、168に維持される。
図示されたように、プロセッサ100の実行装置は、CR修正命令を実行するためのCR装置(「CRU」)172と、分岐命令を実行するための分岐実行装置(「BEU」)120と、固定小数点命令を実行するための2つの固定小数点装置(「FXU」)174及び176と、ロード/ストア命令を実行するための2つのロード/ストア装置(「LSU」)178及び180と、浮動小数点命令を実行するための2つの浮動小数点装置(「FPU」)182及び184とを含む。実行装置172、120、174、176、178、180、182、184の各々は、複数のパイプライン・ステージを有する実行パイプラインとして実装されることが好ましい。
実行装置172、120、174、176、178、180、182、184の1つにおける実行の間に、命令は、もしあれば、その実行装置に結合されたレジスタ・ファイル内の1つ又は複数のアーキテクト・レジスタ又は名前変更レジスタ或いはその両方から、オペランドを受け取る。CR修正命令又はCR依存命令を実行するときには、CRU172及びBEU120は、1つの好ましい実施形態においては各々が1つ又は複数のビットから形成される複数の別個のフィールドを備えた、1つのCR名前変更レジスタ及び複数のCR名前変更レジスタを格納しているCRレジスタ・ファイル186にアクセスする。これらのフィールドの中には、値(典型的には命令の結果であるか又はオペランドである)がゼロより小さいことを示すLTフィールド、ゼロより大きいことを示すGTフィールド、及び、ゼロに等しいことを示すEQフィールドが含まれる。リンク及びカウント・レジスタ(「LCR」)レジスタ・ファイル188は、カウント・レジスタ(「CTR」)と、リンク・レジスタ(「LR」)と、各々の名前変更レジスタとを含み、それにより、BEU120はまた、条件付き分岐を解決してパス・アドレスを取得することができる。同期された汎用レジスタ・ファイル(「GPR」)190及び192は、レジスタ・ファイルを二重化し、FXU174及び176とLSU178及び180によってアクセスされ生成された固定小数点値及び整数値を格納する。GPR190及び192と同様に、浮動小数点レジスタ・ファイル(「FPR」)158も、FPU182、184による浮動小数点命令の実行、及び、LSU178、180による浮動小数点ロード命令の実行によってもたらされた浮動小数点値を格納する、同期されたレジスタの二重化セットとして実装することもできる。
実行ユニットが命令の実行を終了した後で、実行ユニットは、命令によって指定された指定宛先に結果を書込み、命令を発行キューから削除し、命令の完了をプログラム順にスケジューリングするCU194に完了を通知する。CRU172、FXU174及び176、又はFPU182及び184のうちの1つによって実行された命令を完了するために、CU194は実行装置に信号を送り、該実行装置は、もしあれば、結果データを、割当てられた名前変更レジスタから、適切なレジスタ・ファイル内の1つ又は複数のアーキテクト・レジスタへ書き戻す。そのグループの中の全ての命令が完了すると、それはGCT118から削除される。しかしながら、他の種類の命令は、異なる形で完了される。
BEU120が条件付き分岐命令を解決し、取られるべき実行パスのパス・アドレスを決定した時には、パス・アドレスは、BPU116によって予測された推測パス・アドレスに対して比較される。パス・アドレスが一致した場合には、それ以上の処理は不要である。しかしながら、計算されたパス・アドレスが予測されたパス・アドレスと一致しない場合には、BEU120は、IFAR114に正しいパス・アドレスを供給する。どちらの事象においても、次に、BIQ138から分岐命令を削除することが可能であり、同じグループ内の全ての他の命令が完了している時には、GCT118からも削除することが可能である。
ロード命令の実行に続いて、ロード命令を実行することにより算出された有効アドレスは、データERAT(図示せず)によってリアル・アドレスに変換され、次いで、要求アドレスとしてL1 D−キャッシュ112に提供される。この時点において、ロード命令は、FXIQ162か164のどちらかから削除され、指示されたロードが実施されるまで、ロード再配列キュー(「LRQ」)196に置かれる。要求アドレスがL1 D−キャッシュ112においてミスした場合、その要求アドレスはロード・ミス・キュー(「LMQ」)198に置かれ、それから、要求されたデータがL2キャッシュ108から検索され、それに失敗した際には別のプロセッサ104又はシステム・メモリ102から検索される。LRQ196は、排他アクセス要求(例えば、修正する意図をもっての読取り)をスヌープし、相互接続ファブリック106上で未完了のロードに対しフラッシュ又は強制終了し、ヒットが発生した場合には、ロード命令の取り消しと再発行を行う。
ストア命令は、ストア命令の実行に続いて格納のための有効アドレスがロードされるストア・キュー(「STQ」)103を用いて、同様にして完了される。STQ103からは、L1 D−キャッシュ112及びL2キャッシュ108の両方又は一方にデータを格納することが可能である。プロセッサ100はまた、メモリ管理装置(「MMU」)105を含む。MMU105は、プロセッサによって要求されるメモリ・アクセスを取り扱うための種々のコンポーネントを備える。例えば、メモリ管理装置202は、仮想アドレスをリアル・アドレスに変換するためのページ・テーブルの一部(MMU105に含まれる)を含んでいる変換索引バッファ(「TLB」)を含む。MMU105はまた、メモリ保護及びキャッシュ制御のためのコンポーネントも含む。
例示的なメモリ・コピー機構
図2は、本発明の1つの実施形態による例示的なメモリ・コピー機構を含んだ、図1のプロセッサのより簡略化された図を図示するブロック図である。図2は、GPR190及び192と、L1キャッシュ110及び112と、MMU/TLB105とを含んだプロセッサ・コア100を示す。プロセッサ100はまた、本発明の例示的なメモリ・コピー命令のような命令コード202も含む。
メモリの第1の部分からメモリの第2の部分へデータをコピーするための効率的且つ自由度の高い手段を提供するために、新たなメモリ・コピー命令(「mc」)がプロセッサ100の命令アーキテクチャに追加される。本発明のメモリ・コピー動作は、プロセッサと半同期的に動作する。別の言い方をすれば、プロセッサは、メモリ・コピー動作のあいだ、後続の命令を実行することができる。しかしながら、メモリ・コピー命令は、メモリ102内のソース位置に対応する仮想ソース・アドレス及びターゲット位置に対応する仮想ターゲット・アドレスに関する妥当性の一時的な永続性を保つ。本発明の1つの実施形態においては、メモリ・コピー命令は、以下の構文/意味構造を含む。
mc RT、RS、RN
RTレジスタは、メモリ・コピー動作のためのターゲット・メモリ位置の有効(仮想)アドレスを含む。RSレジスタは、メモリ・コピー動作のためのソース・メモリ位置の有効(仮想)アドレスを含む。RNレジスタは、メモリ・コピー動作において転送されるバイトの数を含む。1つの実施形態においては、メモリ・コピー命令はまた、所定の数のデータ行を受信するべき1つ又は複数のキャッシュ・レベルを識別するための情報を含んでいるキャッシュ注入(「CI」)レジスタも含む。例えば、CIレジスタは、1つの実施形態においては、最初の幾つかのデータ行がL1キャッシュ112にコピーされ、次の10行がL2キャッシュ108にコピーされ、その次の20行がL3キャッシュ204にコピーされるべきことを表示する。コピーされるべきデータ行の数は、個々の情報処理システムに基づいて変化する。例えば、データ行の数は、1つの実施形態においては、キャッシュ内の作業セットの汚染を最小にとどめつつ最良のキャッシュ・ヒット可能性を反映するように、システムによって制御される。システムは、命令ストリーム及びキャッシュの現在の状態を表すためにデータ行の数を割り振る。
「mc RT、RS、RN」としての命令フォーマットの記述は、命令の命令コードに関する名前及び省略語、並びに指示されたレジスタの名前及び省略語を含めて、幾つかの任意に指定された項目を含む。命令コードは、一意に識別可能であって、メモリ・コピー動作に関連付けられていることのみが要求され、同様に、命令に仮想(即ち有効)開始アドレス及び終了アドレスが与えられることが必要であるが、名前及びそれらの省略語の構文上の位置決めは全く重要ではなく、転送されるべきデータのバイト数へのRN参照についても同様である。加えて、RN参照ラベルに関連付けられた値は、「データのバイト」ではなく転送されるべき別のデータ量を指すことも可能であり、例えば、データの「ワード」(1ワードは、例えば32ビットから成る)を指すこともできる。
メモリ・コピー命令は、キャッシュ不可能装置(「NCU」)206を介して、メモリ・コントローラ(MC)208にエンキューされる。例えば、NCU206は、メモリ・コピー命令を、最初にL1 I−キャッシュ110にロードすることなしに、直接、メモリ命令キュー212にエンキューできるようにする。クロスバー・スイッチのようなファブリック・コントローラ230は、NCU206、L2キャッシュ108、及びL3キャッシュ204の間でメモリ・コントローラとの通信を調停する。ファブリック・コントローラ230はまた、L2キャッシュ108、L3キャッシュ204、及びNCU206を互いに結合する。L2キャッシュ108、L3キャッシュ204、及びNCU206は、各々、メモリ・コントローラ208に通信されるデータをキューイングするためのキュー232、234、236を含む。
メモリ命令キュー212は、メモリ・コピー命令214を含む。メモリ命令キュー212は、1つの実施形態においては、利用可能なメモリ帯域幅を飽和させることに並行して、できるだけ多くのメモリ・コピー命令を受け入れる能力をもつように設計される。メモリ・コピー装置210は、メモリ・コピー命令に従って、メモリ・コピー動作を実施する。例えば、メモリ102のソース・アドレス216から宛先アドレス218にデータがコピーされる。
コア100はまた、半同期メモリ・コピー動作によって用いられる、ソース・レジスタ220、222、及び、ターゲット・レジスタ224、226を含む。レジスタ220、222、224、226内のアドレスには、有効ビット228が関連付けられる。1つの実施形態においては、複数の半同期メモリ・コピー動作を実施することが可能であり、各々の半同期動作は、それ自体の一対のソース・レジスタ及びターゲット・レジスタ、並びにそれに関連付けられた有効ビットを有する。これらのレジスタ220、222、224、226に関連付けられたアドレス範囲は、保護される。例えば、メモリ・コピー動作の間、ソース・アドレス範囲Rs、Rs+Rn、及び、ターゲット・アドレス範囲Rt、Rt+Rnに対して、有効ビット228が設定される。メモリ・コピー動作が実行されている間、例えば、有効ビット228が設定されている間、ストア動作がアドレス範囲Rs、Rs+Rnへの書込みを試みた場合には、ストア命令は、メモリ・コピー動作が完了するまでブロックされ又は停止されることになろう。アドレス範囲Rs、Rs+Rnからの読取りのためのロード動作は許可される。メモリ・コピー動作が実行されている間、例えば有効ビット228が設定されている間、ストア動作又はロード動作がアドレス範囲Rt、Rt+Rnへの読取り/書込みを試みた場合には、メモリ・コピー動作が完了するまで、例えば有効ビット228がアドレス範囲Rt、Rt+Rnに対して設定されなくなるまで、ロード命令とストア命令の両方がブロックされ又は停止されることになろう。
本発明の1つの利点は、ソース・レジスタ220、222及びターゲット・レジスタ224、226のアドレス範囲に関連付けられたメモリ・ページがピンニングされることなくページングされないようにしている点である。例えば、ソース・レジスタ220、222及びターゲット・レジスタ224、226内のアドレス範囲は、メモリ・ページングのための命令によりターゲットにされたアドレス範囲と比較される。ソース・レジスタ220、222及びターゲット・レジスタ224、226内のアドレス範囲が、変換索引バッファのエントリ無効化(「tlbie」)命令のようなメモリ・ページング命令によりターゲットにされた場合には、その命令は、そのアドレス範囲に関連付けられたメモリ・コピー動作が完了するまで停止されることになる。例えば、ページ・テーブルの更新の場合、更新は、全ての保留中のメモリ動作が完了するまで(即ち、暗黙同期命令が発行されるまで)プロセッサ100により停止され、変換索引バッファ(「TLB」)エントリは、メモリ・コピーが完了するまで(即ち、暗黙TLBエントリ無効化(「tlbie」)命令が発行されるまで)変更されない。
例示的なメモリ・コピー動作のエンキュー・プロセス
図3は、例示的な半同期メモリ・コピー動作をメモリ・コントローラ208にエンキューするプロセスを示す動作流れ図である。図3の動作流れ図は、ステップ302で開始し、ステップ304まで直接に流れる。プロセッサ100は、メモリ・コピー動作のための呼び出しを受信する。例えば、ユーザ・コードがメモリ・コピー命令を呼び出し、引数をメモリ・コピー命令に渡す。ステップ306において、メモリ・コピー命令のターゲット・レジスタ(「RT」)要素が、ユーザ・コードからメモリ・コピー動作のためのターゲット・メモリ位置の有効(仮想)アドレスを受信する。ステップ308において、メモリ・コピー命令のソース・レジスタ(「RS」)要素が、ユーザ・コードからメモリ・コピー動作のためのソース・メモリ位置の有効(仮想)アドレスを受信する。
ステップ310において、メモリ・コピー命令のバイト・レジスタ(「RN」)要素が、メモリ・コピー動作において転送されるバイトの数を受信する。ステップ312において、メモリ・コピー命令のキャッシュ注入レジスタ(「CI」)要素が、宛先データがキャッシュ又はメモリにコピーされるか否かを示すデータを受信する。メモリ・コピー命令の全てのパラメータが受信された後で、ステップ314において、命令が、キャッシュ不可能装置206を介してメモリ・コントローラ208にエンキューされる。その後、制御フローはステップ316で終了する。
本発明の1つの利点は、メモリ・コピー命令が有効(仮想)アドレスを引数として取るため、メモリ・コピー命令のソース及びターゲットによって参照される仮想メモリ・ページはピンニングされず、ページ不在を許容できるという点である。これにより、ピンニング・ページのオーバーヘッドが必然的に回避できるようになる。本発明の別の利点は、メモリ・コピー命令が、命令引数として渡されたアドレスの位置合わせに対して制約を課さない点である。
図4は例示的なメモリ・コピー命令の半同期属性を示す動作流れ図である。図4の動作流れ図は、ステップ402で開始し、ステップ404まで直接に流れる。ステップ404において、プロセッサ100が、メモリ・コピー命令によって用いられるアドレス範囲を監視する。このことは、プロセッサ・メモリ・サブシステムに対して、いかなる新たな必要条件も課さず、ただプロセッサ100の既存の機能及び規則に乗っているだけであることに留意されたい。ステップ406において、プロセッサ100は、メモリ・コピー命令がメモリ・コントローラ208に実行のために既にエンキューされているか否かを判断する。例えば、例示的なメモリ・コピー動作は、プロセッサ・コア100と半同期し、それにより、メモリ・コピー動作の間にプロセッサ・コア100が後続の命令を実行できるようにする。
この判断の結果が否定であった場合には、プロセッサ100は、ステップ408で、メモリ・コピー命令がエンキューされて後続命令の実行を継続できるようになるまで待機する。この判断の結果が肯定であった場合には、プロセッサ100は、ステップ410で、例えばソース・レジスタ220、222及びターゲット・レジスタ224、226内のアドレス範囲のような、メモリ・コピー命令に用いられたアドレス範囲に対して、後続のロード及びストアを確認する。例えば、メモリ・コピー命令のソース・アドレス及び宛先アドレスとオーバーラップしないメモリ内の位置への後続のロード及びストアは、禁止されずに進行する。
プロセッサ100は、ステップ412で、後続のロード動作がメモリ・コピー命令の宛先へのものであるか否かを判断する。この判断の結果が肯定であった場合には、プロセッサ100は、ステップ414で、メモリ・コピー動作が完了するまでそれらのロード動作の実行を中断する。例えば、メモリ・コピー動作の間にソース・アドレス範囲Rs、Rs+Rn及びターゲット・アドレス範囲Rt、Rt+Rnに対して有効ビット228が設定される。メモリ・コピー動作が実行されている間、例えば有効ビット228が設定されている間に、ストア動作又はロード動作がアドレス範囲Rt、Rt+Rnへの読取り/書込みを試みた場合には、メモリ・コピー動作が完了するまで、例えば有効ビット228がアドレス範囲Rt、Rt+Rnに対して設定されなくなるまで、ロード命令とストア命令の両方がブロックされ又は停止されることになろう。メモリ・コピー動作が完了した時には、プロセッサ100は、ステップ416で、メモリ・コピー動作が完了したとの通知を受信する。次いで、プロセッサ100は、ステップ424で、命令パイプラインから利用できるようになり次第、後続の命令の実行を続ける。
ステップ412の判断の結果が否定であった場合には、プロセッサ100は、ステップ418で、後続のストア動作がメモリ・コピー命令のソース又は宛先或いはその両方へのものであるか否かを判断する。この判断が肯定であった場合には、プロセッサは、ステップ420で、メモリ・コピー動作が完了するまで、それらのストア動作の実行を中断する。ロード/ストア動作のアドレス範囲をメモリ・コピー動作に関連付けられたアドレス範囲(Rs〜Rs+Rn、Rt〜Rt+Rn)と比較することにより、メモリ・コピー動作の間、そのメモリ・コピー・アドレス範囲が保護される。別の言い方をすれば、メモリ・コピー・アドレス範囲の妥当性の一時的な永続性が保たれる。メモリ・コピー動作が完了した時には、プロセッサ100は、ステップ420で、メモリ・コピー動作が完了したとの通知を受信する。
本発明の半同期メモリ・コピー動作は、例えば、メモリ・コピー命令にタグを関連付け、完了を保証するためにユーザにそのタグに対する待機命令を発行することにより、ユーザにメモリ・コピー動作の完了を通知する複雑な機構が必要にならないようにする。1つの実施形態においては、メモリ・コピー動作が完了した時には、「移動プログラム終了」信号がコア100に送信され、有効ビット228がオフにされる。これは、プロセッサに、メモリ・コピー動作が完了したという信号を送る。ステップ418の判断の結果が否定であった場合には、次いで、プロセッサ100は、ステップ424で、後続の命令の実行を続ける。その後、制御フローはステップ426で終了する。
メモリ・コピー動作が完了するまでメモリ・コピー命令のソースへのストア動作又はメモリ・コピー命令の宛先へのロード及びストア動作を停止することにより、プロセッサ100は、プロセッサ100の一貫性及び整合性規則において、メモリ・コピー命令を一連のストア命令として扱う。この態様は、他のメモリ動作が維持され、一連のストア動作と整合することを保証しつつ、メモリ・コピー動作との計算のオーバーラップを可能にするという点で重要である。
本発明の1つの実施形態においては、プロセッサ・アーキテクチャは、ロード及びストア動作が、所定の順序で実施されることを必要とする(順次的な整合性)。従って、ロード及びストア動作がソース・レジスタ220、222又はターゲット・レジスタ224、226内のアドレス範囲をターゲットとするか否かに関わりなく、ロード及びストア動作は、半同期メモリ・コピー動作の間は、ブロックされ又は停止される。別の実施形態においては、プロセッサ・アーキテクチャは、ストア動作だけが所定の順序で実施されることを必要とする(中程度の整合性)。従って、ストア動作がターゲットにするアドレスは、ソース・レジスタ220、222のアドレス範囲と比較される。ターゲットにされたアドレスがソース・レジスタ220、222のアドレス範囲内にあった場合には、ストア動作は、半同期メモリ・コピー動作が完了するまでブロックされ又は停止される。付加的な実施形態においては、プロセッサ・アーキテクチャは、ロード及びストア動作が所定の順序で実施されることを必要としない(弱い整合性)。従って、ロード及びストア動作が目標とするアドレスは、両方とも、図4に関して上述されたように、ソース・レジスタ220、222及びターゲット・レジスタ224、226と比較される。
本発明の別の利点は、ページ境界制限が不要な点である。しかしながら、本発明のメモリ・コピー命令の効率を活用しようとするミドルウェア及びバイト・レベル・コピー(「bcopy」)機能は、コピー機能を分割して、(ソースについても宛先についても)ページ境界をまたがないようにすることが可能である。別の言い方をすれば、メモリ・コピー命令は、1つの実施形態においては、複数のページ境界にまたがるメモリ・コピーに対しては、ループ内で実行される。ページ・テーブルの更新については、全ての保留中のメモリ動作をまず完了させるという制約を考えると、このことは、実際には良好な設計点である。メモリ・コピーのサイズに制限がない場合には、システム・リソースを独占してオペレーティング・システムの公正な側面に影響を及ぼす大量のメモリ・コピーを伴った1つのプロセスが生じかねない。
本発明の別の利点は、本発明の種々の実施形態を実装するために、プログラマによって用いられるプログラミング命令及びプログラミング意味構造を変更する必要がないという点である。
この機構は、異なるページ・サイズに合わせて調整して、効率的なメモリ・コピー動作が確実に行われるようにすることができ、また、プロセスによるシステム・リソースの使用において公平性を与えるように調整することもできることに注意されたい。付加的に、ソース・アドレス及び宛先アドレスは、それぞれのページ内において異なるオフセットにある場合があるので、このことは、オフセットをより望ましく位置合わせして効率的なメモリ・コピーを行うために「アドレス・シフト」が実行されることを意味することに留意されたい。
複数のメモリ・コピー命令を発行する例示的なプロセス
図5は、パイプライン化された方法で複数のメモリ・コピー命令を発行する例示的なプロセスを示す動作流れ図である。図5の動作流れ図は、ステップ502で開始し、ステップ504まで直接に流れる。少なくとも1つのメモリ・コピー命令がメモリ・コントローラ208にエンキューされた後で、プロセッサ100は、ステップ504で、少なくとも1つの追加のメモリ・コピー命令を発行する。メモリ・コントローラ208は、ステップ506で、メモリ・コピー命令キュー212が満杯であるか否かを判断する。この判断の結果が肯定であった場合には、ステップ508で、ビジー信号がプロセッサ100に戻される。例えば、メモリ・コピー命令は、リソースがビジーであることを示す条件コードを伴って戻ることができる。
別の実施形態においては、メモリ・コピー命令は、メモリ・コピー命令キュー212が新たに発行されたメモリ・コピー命令を入れるのに十分なスペースをもつまで停止される。本発明は、メモリ・コピー命令キューが満杯であることを示す種々の方法を実装するように構成することが可能である。停止することの1つの利点は、メモリ・コピー・リソースにアクセスする際の「順序公平性」が保証される点である。1つの実施形態においては、ビジー信号が戻された場合には、ロードされたシステムにおいてプロセスの幾つかがメモリ・コピー・リソースを不足させるかもしれないという含みを伴って、動作が再試行される。加えて、ビジー信号が戻された場合には、メモリ・コピー動作を要求するアプリケーションは、メモリ・コピー命令キュー212が空くのを待つ間に他の仕事をすることができる。
ステップ506での判断の結果が否定であった場合には、追加のメモリ・コピー命令が、ステップ510で、メモリ・コピー命令キュー212にエンキューされる。その後、制御フローはステップ512で終了する。メモリ・コピー命令キュー212は、1つの実施形態においては、利用可能なメモリ帯域幅を飽和させることに並行して、できるだけ多くのメモリ・コピー命令を受け入れる能力をもつように設計される。キュー212が利用可能なメモリ帯域幅より深い場合であっても、メモリ・コピー命令を後続の命令とオーバーラップさせることは、実行中のアプリケーションに対して、はっきりした便益を生じさせる。ソース・アドレス範囲と宛先アドレス範囲がオーバーラップした場合には、オーバーラップしているメモリ・コピー命令の領域の内容は、1つの実施形態においては、定義されず、通例はプログラミング・エラーが起こる。しかしながら、本発明の代替的な実施形態においては、ソース・アドレス範囲と宛先アドレス範囲がオーバーラップすることは、プログラミング・エラーの原因とはならない。この実施形態においては、ソース・アドレスからのデータを宛先アドレスにコピーできるようになっているが、プログラマには、可能性のある破壊の警告が与えられる。
例示的なキャッシュ注入プロセス
図6は、メモリ・コピー命令のキャッシュ注入レジスタ内の情報に基づいて宛先データをキャッシュ注入する例示的なプロセスを示す動作流れ図である。図6の動作流れ図は、ステップ602で開始し、ステップ604まで直接に流れる。プロセッサ100は、ステップ604で、キャッシュ注入ビットについてメモリ・コピー命令をチェックする。キャッシュ注入ビットは、例えば、命令の独立したレジスタに配置されるが、代替的に命令のRNレジスタに配置してもよい。キャッシュ注入ビットは、メモリ・コピー装置210に、データの全て又は幾つかをどこにコピーするかを示す。例えば、より高速にデータを処理するために、メモリ・コピー命令はキャッシュ・ビットを含み、そのことにより、プロセッサがデータをロードする時に、メモリではなくキャッシュからデータがロードされるようにする。
ステップ606で、キャッシュ注入ビットが存在しないと判断された場合には、メモリ・コピー装置210は、ステップ608で、宛先データをメモリ102にコピーする。その後、制御フローは、ステップ610で終了する。ステップ606でキャッシュ注入ビットが存在すると判断された場合には、メモリ・コピー装置210は、ステップ612で、キャッシュ注入ビットによって示されたように、宛先データの所定数の行を適切なレベルのキャッシュにコピーする。例えば、最初の幾つかの行をレベル1キャッシュ112に移動し、次の10行をレベル2キャッシュ108にコピーしてもよく、その次の20行はレベル3キャッシュ204にコピーされる。このようにして、上位レベルのキャッシュは破壊されない。キャッシュにコピーされる行の数は、例えば、情報処理システムに基づいて変えられる。宛先データの1つのコピーは、ステップ614で、メモリ102にコピーされる。キャッシュ注入の1つの利点は、データ完成と組み合わされたときに、メモリ待ち時間が回避できる点である。
メモリ・コピー動作の結果は、しばしば異なる方法で用いられることにも留意されたい。多くの場合において、宛先メモリ内のデータは、後続の命令で消費するために、プロセッサにより直ちに用いられる。そのような使用モードの1つの例は、読取り動作の後で、データ・ファイルをユーザ・バッファから移すことである。そのような場合には、プロセッサ100が、プロセッサ100による消費のために、宛先データをキャッシュにアップロードすることが有用である。データをユーザ・バッファからネットワーク・バッファに移し、直接メモリ・アクセス(「DMA」)によってネットワーク(又はI/Oデバイス)に転送するといった、他の場合においては、宛先データは、DMA動作が進行できるように、メモリに置かれる(即ち、キャッシュされない)。
TLBIE命令をブロックする例示的なプロセス
図7は、半同期メモリ・コピー動作の間に、TLBエントリ無効化命令をブロックする例示的なプロセスを示した動作流れ図である。図7の動作流れ図は、ステップ702で開始し、ステップ704まで直接に流れる。プロセッサ100は、ステップ704で、tlbie命令が発行済みか否かを判断する。この判断の結果が否定であった場合は、プロセッサは、ステップ704で、引き続き、tlbie命令が発行済みか否かを判断する。この判断の結果が肯定であった場合には、プロセッサ100は、ステップ706で、tlbie命令によってターゲットにされたアドレスを確認する。
プロセッサ100は、ステップ708で、tlbie命令によってターゲットにされたアドレスが、半同期メモリ・コピー動作に関連付けられたアドレス範囲内にあるか否かを判断する。例えば、プロセッサ100は、tlbie命令によってターゲットにされたアドレスを、ソース・レジスタ220、222及びターゲット・レジスタ224、226内で見つかったアドレス範囲と比較する。この判断の結果が否定であった場合には、プロセッサ100は、ステップ710で、tlbie命令の実行を許可する。この判断の結果が肯定であった場合には、プロセッサ100は、ステップ714で、メモリ・コピー動作が完了するまでtlbie命令を停止する。その後、制御フローはステップ716で終了する。
図7の例示的なプロセスはまた、メモリ・ページングに関与する他の命令にも適用可能である。半同期メモリ・コピー動作に関連付けられたアドレスをターゲットにしているtlbie命令を停止することにより、アドレスは、ページ・アウトされることから保護される。別の言い方をすれば、ソース・レジスタ220、222及び宛先アドレス224、226内のアドレスの妥当性の一時的な永続性が保たれる。アドレスは、費用のかかるピンニングを必要としない。
限定的ではない例
上述された本発明の実施形態は、メモリ・コピー動作の間にプロセッサが後続の命令を実行し続けられるようなメモリ・コピー動作を提供し、それにより、不必要なプロセッサ・ダウンタイムを回避できるという理由から、有利である。本発明の別の利点は、メモリ・コピー命令が有効(仮想)アドレスを引数として取るため、メモリ・コピー命令のソース及びターゲットによって参照される仮想メモリ・ページはピンニングされず、ページ不在を許容できるという点である。これにより、ピンニング・ページのオーバーヘッドが必然的に回避できるようになる。本発明の更に別の利点は、メモリ・コピー命令が、命令引数として渡されたアドレスの位置合わせに対して制約を課さない点である。本発明の更なる利点は、データ完成と組み合わせてキャッシュ注入を用いることにより、メモリ待ち時間が回避できる点である。
本発明は、ハードウェア、ソフトウェア、又はハードウェアとソフトウェアの組み合わせの形で実施することが可能である。本発明の好ましい実施形態によるシステムは、1つのコンピュータ・システムに集中化した形で実施しても良く、異なる要素が幾つかの相互接続されたコンピュータ・システムにわたって分散された、分散型の形で実施しても良い。いかなる種類のコンピュータ・システム、又は、ここで説明された方法を実行するように適合された他の装置も、好適である。典型的なハードウェアとソフトウェアの組み合わせは、ロードされて実行された時にはコンピュータ・システムを制御してここで説明された方法を実行させるコンピュータ・プログラムを伴う、汎用コンピュータ・システムであろう。
一般に、本発明の実施形態を実装するために実行されるルーチンは、オペレーティング・システムの一部として実装するか、又は特定のアプリケーション、コンポーネント、プログラム、モジュール、オブジェクト、又は命令シーケンスとして実装するかに関わりなく、ここでは「プログラム」と呼ぶことができる。コンピュータ・プログラムは、一般に、ネイティブ・コンピュータによって機械可読形式、従って実行可能な命令へと変換される多くの命令を含む。また、プログラムは、プログラムにローカルに存在するか、又はメモリもしくはストレージ・デバイスから見つけられる変数及びデータ構造体を含む。加えて、ここで説明された種々のプログラムは、本発明の特定の実施形態において、それらが実装されるアプリケーションに基づいて識別することができる。しかしながら、そこでのいかなる特定のプログラム専門語も、単に便宜上用いられているだけであり、従って、本発明は、そのような専門語によって識別又は示唆されるいずれかの特定のアプリケーションにおける使用のみに限定されてはならないことが理解されるべきである。
本発明の特定の実施形態が開示されたが、当業者であれば、本発明の精神及び範囲を逸脱することなしに、特定の実施形態に対して変更を行うことができると理解するであろう。本発明の範囲は、従って、特定の実施形態に制限されるものではなく、また、特許請求の範囲は、本発明の範囲内にあるそのような適用、修正、及び実施形態のいずれをもカバーすることが意図されている。
本発明の1つの実施形態による、命令を処理するための例示的なプロセッサを示すブロック図である。 本発明の1つの実施形態による、例示的なメモリ・コピー機構を含む図1のプロセッサのより簡略化された形態を示すブロック図である。 本発明の1つの実施形態による、例示的なメモリ・コピー動作をメモリ・コントローラにエンキューする例示的なプロセスを示す動作流れ図である。 本発明の1つの実施形態による、例示的な半同期メモリ・コピー動作を示す動作流れ図である。 本発明の1つの実施形態による、複数のメモリ・コピー命令を発行する例示的なプロセスを示す動作流れ図である。 本発明の1つの実施形態による、宛先データをキャッシュ注入する例示的なプロセスを示す動作流れ図である。 本発明の1つの実施形態による、変換索引バッファのエントリ無効化命令をブロックする例示的なプロセスを示す動作流れ図である。
符号の説明
100:プロセッサ
102:システム・メモリ
108:L2キャッシュ
110:L1 I−次キャッシュ
112:L1 D−キャッシュ
206:キャッシュ不可能装置
208:メモリ・コントローラ
212:メモリ・コピー命令キュー
214:メモリ・コピー命令
216:ソース・アドレス
218:宛先アドレス
220、222:ソース・レジスタ
224、226:ターゲット・レジスタ
232、234、236:キュー

Claims (10)

  1. プロセッサにおいてデータをメモリの第1部分からメモリの第2部分に半同期的にコピーする方法であって、
    フラグ・ビットを設定することによりメモリ内のソース位置に対応する仮想ソース・アドレス及びメモリ内のターゲット位置に対応する仮想ターゲット・アドレスに関する妥当性の一時的な永続性を保つ半同期メモリ・コピー動作を実行するための、少なくとも仮想ソース・アドレス、仮想ターゲット・アドレス、及びコピーされるバイト数を識別する標識を含むメモリ・コピー命令をプロセッサにおいて受信するステップと、
    メモリ・コントローラにより前記メモリ・コピー動作を実行するために、前記メモリ・コピー命令を前記メモリ・コントローラに結合されたキューに入れるステップと、
    後続の命令が命令パイプラインから利用可能になったときに少なくとも1つの後続の命令の実行を続行するステップと、
    を含む方法。
  2. 前記仮想ソース・アドレス及び前記仮想ターゲット・アドレスによって参照された一組のメモリ・ページが、ページング可能である、請求項1に記載の方法。
  3. 前記後続の命令が、前記仮想ソース・アドレスに対応するアドレス範囲からの読み取り動作に関する命令である、請求項1に記載の方法。
  4. 前記少なくとも1つの後続の命令の実行を続行させるステップがさらに、
    前記後続の命令が、ソース・アドレス範囲及び宛先アドレス範囲の少なくとも1つからの読み取り、及び、前記ソース・アドレス範囲及び前記宛先アドレス範囲の少なくとも1つへの書き込み、の少なくとも一方に関する命令であるかを判断するステップと、
    前記後続の命令が前記ソース・アドレス範囲からの読み取りに関する命令であることに応答して前記プロセッサにより前記後続の命令を実行するステップと、
    を含み、半同期メモリ・コピー動作の進行中に前記ソース・アドレス範囲及び前記宛先アドレス範囲に関する妥当性の一時的な永続性が保たれる、請求項1に記載の方法。
  5. 前記キューが満杯であるか否かを判断するステップと、
    前記キューが追加のメモリ・コピー動作のためのスペースを有することに応答して、前記メモリ・コントローラにより少なくとも1つの追加のメモリ・コピー命令を実行のために前記キューに入れるステップと、
    を含む、請求項1に記載の方法。
  6. 前記キューが満杯であることに応答して、前記キューが前記少なくとも1つの追加のメモリ・コピー命令のための十分なスペースを有するまで、前記少なくとも1つの追加のメモリ・コピー命令を前記キューに入れるのを待つステップをさらに含む、請求項5に記載の方法。
  7. 前記半同期メモリ・コピー動作の長さが任意に定められる、請求項1に記載の方法。
  8. 前記仮想ソース・アドレスに対応するアドレス範囲及び前記仮想ターゲット・アドレスに対応するアドレス範囲が位置合わせされない、請求項1に記載の方法。
  9. データをメモリの第1部分からメモリの第2部分に半同期的にコピーするシステムであって、
    メモリと、
    前記メモリに通信可能に結合されるメモリ・コントローラと、
    前記メモリ及び前記メモリ・コントローラに通信可能に結合され、フラグ・ビットを設定することによりメモリ内のソース位置に対応する仮想ソース・アドレス及びメモリ内のターゲット位置に対応する仮想ターゲット・アドレスに関する妥当性の一時的な永続性を保つ半同期メモリ・コピー動作を実行するための、少なくとも仮想ソース・アドレス、仮想ターゲット・アドレス、及びコピーされるバイト数を識別する標識を含むメモリ・コピー命令を受信するプロセッサと、
    前記メモリ・コントローラに結合され、前記メモリ・コントローラにより前記メモリ・コピー動作を実行するために、前記メモリ・コピー命令を保持するキューと、
    を備えるシステム。
  10. データをメモリの第1部分からメモリの第2部分に半同期的にコピーするためのプログラムであって、
    フラグ・ビットを設定することによりメモリ内のソース位置に対応する仮想ソース・アドレス及びメモリ内のターゲット位置に対応する仮想ターゲット・アドレスに関する妥当性の一時的な永続性を保つ半同期メモリ・コピー動作を実行するための、少なくとも仮想ソース・アドレス、仮想ターゲット・アドレス、及びコピーされるバイト数を識別する標識を含むメモリ・コピー命令をプロセッサにおいて受信する手順と、
    メモリ・コントローラにより前記メモリ・コピー動作を実行するために、前記メモリ・コピー命令を前記メモリ・コントローラに結合されたキューに入れる手順と、
    後続の命令が命令パイプラインから利用可能になったときに少なくとも1つの後続の命令の実行を続行する手順と、
    をコンピュータに実行させるためのプログラム。
JP2006337593A 2005-12-22 2006-12-14 効率的かつ柔軟なメモリ・コピー動作 Expired - Fee Related JP5120832B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/316,663 US7454585B2 (en) 2005-12-22 2005-12-22 Efficient and flexible memory copy operation
US11/316663 2005-12-22

Publications (2)

Publication Number Publication Date
JP2007172609A true JP2007172609A (ja) 2007-07-05
JP5120832B2 JP5120832B2 (ja) 2013-01-16

Family

ID=38184629

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006337593A Expired - Fee Related JP5120832B2 (ja) 2005-12-22 2006-12-14 効率的かつ柔軟なメモリ・コピー動作

Country Status (4)

Country Link
US (2) US7454585B2 (ja)
JP (1) JP5120832B2 (ja)
KR (1) KR100856774B1 (ja)
CN (1) CN100440176C (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010170328A (ja) * 2009-01-22 2010-08-05 Hitachi Ltd メモリ装置および計算機
JP2012512468A (ja) * 2008-12-19 2012-05-31 エーティーアイ・テクノロジーズ・ユーエルシー 複製された書き込み要求を伴うコヒーレントメモリコピーのための方法及び装置
CN109313548A (zh) * 2016-06-24 2019-02-05 高通股份有限公司 用于执行simd收集和复制操作的方法和设备

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8458280B2 (en) * 2005-04-08 2013-06-04 Intel-Ne, Inc. Apparatus and method for packet transmission over a high speed network supporting remote direct memory access operations
US7889762B2 (en) 2006-01-19 2011-02-15 Intel-Ne, Inc. Apparatus and method for in-line insertion and removal of markers
US7849232B2 (en) 2006-02-17 2010-12-07 Intel-Ne, Inc. Method and apparatus for using a single multi-function adapter with different operating systems
US8316156B2 (en) 2006-02-17 2012-11-20 Intel-Ne, Inc. Method and apparatus for interfacing device drivers to single multi-function adapter
US8078743B2 (en) * 2006-02-17 2011-12-13 Intel-Ne, Inc. Pipelined processing of RDMA-type network transactions
US7774554B2 (en) * 2007-02-20 2010-08-10 International Business Machines Corporation System and method for intelligent software-controlled cache injection
US8990633B2 (en) * 2009-04-21 2015-03-24 Freescale Semiconductor, Inc. Tracing support for interconnect fabric
US8583886B2 (en) * 2010-02-02 2013-11-12 International Business Machines Corporation Synchronizing data storage systems in a data storage environment
US8285679B2 (en) * 2010-03-11 2012-10-09 International Business Machines Corporation Creating a buffer point-in-time copy relationship for a point-in-time copy function executed to create a point-in-time copy relationship
US8713260B2 (en) * 2010-04-02 2014-04-29 Intel Corporation Adaptive block pre-fetching method and system
CN103455280B (zh) 2012-05-31 2016-12-14 国际商业机器公司 用于执行存储器复制的方法和系统
JP6155723B2 (ja) * 2013-03-18 2017-07-05 富士通株式会社 レーダ装置及びプログラム
US20170123792A1 (en) * 2015-11-03 2017-05-04 Imagination Technologies Limited Processors Supporting Endian Agnostic SIMD Instructions and Methods
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US9934033B2 (en) 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
CN107766079B (zh) * 2016-08-19 2022-03-11 北京百度网讯科技有限公司 处理器以及用于在处理器上执行指令的方法
US10331358B1 (en) * 2017-01-31 2019-06-25 Vexata, Inc. High performance and low-latency replication using storage mirroring
US10564965B2 (en) * 2017-03-03 2020-02-18 International Business Machines Corporation Compare string processing via inline decode-based micro-operations expansion
US11334498B2 (en) * 2019-07-11 2022-05-17 Vmware, Inc. Zero copy method that can span multiple address spaces for data path applications
CN117270971B (zh) * 2023-09-15 2024-03-19 上海合芯数字科技有限公司 加载队列控制方法、装置及处理器

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5211730A (en) * 1975-07-17 1977-01-28 Hitachi Ltd Information processing unit
JPH03182945A (ja) * 1989-12-13 1991-08-08 Hitachi Ltd 主記憶内データ転送方式
JPH0447350A (ja) * 1990-06-12 1992-02-17 Nec Ibaraki Ltd 主記憶読み出し応答制御方式
JPH05173961A (ja) * 1991-05-23 1993-07-13 Internatl Business Mach Corp <Ibm> データ・ブロック転送制御方法
JPH06309219A (ja) * 1993-04-26 1994-11-04 Fujitsu Ltd ロックアクセス制御回路
WO1998012639A1 (fr) * 1996-09-20 1998-03-26 Hitachi, Ltd. Systeme informatique
JP2001184259A (ja) * 1999-12-22 2001-07-06 Nec Kofu Ltd 演算処理装置及び該装置におけるデータ転送方法
JP2007172610A (ja) * 2005-12-22 2007-07-05 Internatl Business Mach Corp <Ibm> 半同期メモリ・コピー動作において用いられるアドレス範囲の妥当性

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0630075B2 (ja) 1984-08-31 1994-04-20 株式会社日立製作所 キャッシュメモリを有するデータ処理装置
JPS63231652A (ja) 1987-03-20 1988-09-27 Fujitsu Ltd 制御システムにおけるメモリコピ−方式
GB2228116B (en) 1989-02-10 1993-05-26 Intel Corp Pipelined floating-point load instruction for microprocessor
US5237668A (en) * 1989-10-20 1993-08-17 International Business Machines Corporation Process using virtual addressing in a non-privileged instruction to control the copying of a page of data in or between multiple media
EP0436341B1 (en) * 1990-01-02 1997-05-07 Motorola, Inc. Sequential prefetch method for 1, 2 or 3 word instructions
US5544347A (en) * 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
DE4323929A1 (de) 1992-10-13 1994-04-14 Hewlett Packard Co Software-geführtes Mehrebenen-Cache-Speichersystem
GB2273181A (en) 1992-12-02 1994-06-08 Ibm Cache/non-cache access control.
US5377337A (en) * 1993-06-08 1994-12-27 International Business Machines Corporation Method and means for enabling virtual addressing control by software users over a hardware page transfer control entity
US5497494A (en) * 1993-07-23 1996-03-05 International Business Machines Corporation Method for saving and restoring the state of a CPU executing code in protected mode
JPH10506483A (ja) * 1994-06-10 1998-06-23 テキサス・マイクロ・インコーポレーテッド フォールト・トレラントなコンピュータ・システムのためのメイン・メモリ・システム及びチェックポイント用プロトコル
TW360852B (en) * 1995-04-12 1999-06-11 Matsushita Electric Ind Co Ltd Pipeline processor
JP3717212B2 (ja) 1995-10-27 2005-11-16 株式会社日立製作所 情報処理装置及び情報処理ユニット
KR100348808B1 (ko) * 1996-04-24 2003-01-29 엘지전자주식회사 메모리간의 데이타 전송장치
JP3497055B2 (ja) 1996-12-20 2004-02-16 株式会社リコー 画像形成装置
US6859862B1 (en) * 2000-04-07 2005-02-22 Nintendo Co., Ltd. Method and apparatus for software management of on-chip cache
US6925547B2 (en) * 2000-12-14 2005-08-02 Silicon Graphics, Inc. Remote address translation in a multiprocessor system
US6502170B2 (en) * 2000-12-15 2002-12-31 Intel Corporation Memory-to-memory compare/exchange instructions to support non-blocking synchronization schemes
US6738870B2 (en) * 2000-12-22 2004-05-18 International Business Machines Corporation High speed remote storage controller
US6950837B2 (en) 2001-06-19 2005-09-27 Intel Corporation Method for using non-temporal streaming to improve garbage collection algorithm
US6738370B2 (en) 2001-08-22 2004-05-18 Nokia Corporation Method and apparatus implementing retransmission in a communication system providing H-ARQ
US6931487B2 (en) * 2001-10-22 2005-08-16 Hewlett-Packard Development Company L.P. High performance multi-controller processing
US6871257B2 (en) * 2002-02-22 2005-03-22 Sandisk Corporation Pipelined parallel programming operation in a non-volatile memory system
US6920521B2 (en) * 2002-10-10 2005-07-19 International Business Machines Corporation Method and system of managing virtualized physical memory in a data processing system
US7840763B2 (en) * 2004-03-12 2010-11-23 Sca Technica, Inc. Methods and systems for achieving high assurance computing using low assurance operating systems and processes
JP4715286B2 (ja) * 2004-05-11 2011-07-06 株式会社日立製作所 計算機システムおよび計算機システムの制御方法
US7257686B2 (en) * 2004-06-03 2007-08-14 International Business Machines Corporation Memory controller and method for scrubbing memory without using explicit atomic operations

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5211730A (en) * 1975-07-17 1977-01-28 Hitachi Ltd Information processing unit
JPH03182945A (ja) * 1989-12-13 1991-08-08 Hitachi Ltd 主記憶内データ転送方式
JPH0447350A (ja) * 1990-06-12 1992-02-17 Nec Ibaraki Ltd 主記憶読み出し応答制御方式
JPH05173961A (ja) * 1991-05-23 1993-07-13 Internatl Business Mach Corp <Ibm> データ・ブロック転送制御方法
JPH06309219A (ja) * 1993-04-26 1994-11-04 Fujitsu Ltd ロックアクセス制御回路
WO1998012639A1 (fr) * 1996-09-20 1998-03-26 Hitachi, Ltd. Systeme informatique
JP2001184259A (ja) * 1999-12-22 2001-07-06 Nec Kofu Ltd 演算処理装置及び該装置におけるデータ転送方法
JP2007172610A (ja) * 2005-12-22 2007-07-05 Internatl Business Mach Corp <Ibm> 半同期メモリ・コピー動作において用いられるアドレス範囲の妥当性

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012512468A (ja) * 2008-12-19 2012-05-31 エーティーアイ・テクノロジーズ・ユーエルシー 複製された書き込み要求を伴うコヒーレントメモリコピーのための方法及び装置
JP2010170328A (ja) * 2009-01-22 2010-08-05 Hitachi Ltd メモリ装置および計算機
CN109313548A (zh) * 2016-06-24 2019-02-05 高通股份有限公司 用于执行simd收集和复制操作的方法和设备
JP2019525294A (ja) * 2016-06-24 2019-09-05 クアルコム,インコーポレイテッド Simdの集中およびコピー動作を実行するための方法および装置
JP7134100B2 (ja) 2016-06-24 2022-09-09 クアルコム,インコーポレイテッド Simdの集中およびコピー動作を実行するための方法および装置
CN109313548B (zh) * 2016-06-24 2023-05-26 高通股份有限公司 用于执行simd收集和复制操作的方法和设备

Also Published As

Publication number Publication date
CN1987827A (zh) 2007-06-27
KR100856774B1 (ko) 2008-09-05
US7454585B2 (en) 2008-11-18
JP5120832B2 (ja) 2013-01-16
KR20070066876A (ko) 2007-06-27
CN100440176C (zh) 2008-12-03
US8140801B2 (en) 2012-03-20
US20070150676A1 (en) 2007-06-28
US20080307182A1 (en) 2008-12-11

Similar Documents

Publication Publication Date Title
JP5120832B2 (ja) 効率的かつ柔軟なメモリ・コピー動作
US7506132B2 (en) Validity of address ranges used in semi-synchronous memory copy operations
US7890703B2 (en) Cache injection using semi-synchronous memory copy operation
JP3753743B2 (ja) 先進のプロセッサにおけるメモリ・データ・エリアシング方法および装置
US7962730B2 (en) Replaying memory operation assigned a load/store buffer entry occupied by store operation processed beyond exception reporting stage and retired from scheduler
US7272664B2 (en) Cross partition sharing of state information
US7849298B2 (en) Enhanced processor virtualization mechanism via saving and restoring soft processor/system states
US6981083B2 (en) Processor virtualization mechanism via an enhanced restoration of hard architected states
US20010052053A1 (en) Stream processing unit for a multi-streaming processor
US20080127182A1 (en) Managing Memory Pages During Virtual Machine Migration
JP2005235233A (ja) コンピュータシステム
JP2003514274A (ja) 接近して結合される多重プロセッサのための高速マルチスレッディング
US9740623B2 (en) Object liveness tracking for use in processing device cache
US7117319B2 (en) Managing processor architected state upon an interrupt
US20040111593A1 (en) Interrupt handler prediction method and system
US6983347B2 (en) Dynamically managing saved processor soft states
US7039832B2 (en) Robust system reliability via systolic manufacturing level chip test operating real time on microprocessors/systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090917

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120314

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120321

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120605

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120608

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120717

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120717

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20120717

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120717

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120927

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20120927

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121016

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

Free format text: PAYMENT UNTIL: 20151102

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees