(57)【特許請求の範囲】
【請求項１】
プロセッサにおいてデータをメモリの第１部分からメモリの第２部分に半同期的にコピーする方法であって、
半同期メモリ・コピー動作のための呼び出しをプロセッサにおいて受信するステップであって、前記半同期メモリ・コピー動作は、フラグ・ビットを設定することによりメモリ内のソース位置に対応する仮想ソース・アドレスとメモリ内のターゲット位置に対応する仮想ターゲット・アドレスとに関する妥当性の一時的な永続性を保ち、及び、ユーザ・コードによってメモリ・コピー命令が呼び出され、引数が前記メモリ・コピー命令に渡される、前記受信するステップと、
前記メモリ・コピー命令のターゲット・レジスタを使用して、前記ユーザ・コードからメモリ・コピー動作のためのターゲット・メモリ位置の仮想ターゲット・アドレスを受信するステップと、
前記メモリ・コピー命令のソース・レジスタを使用して、前記ユーザ・コードからメモリ・コピー動作のためのソース・メモリ位置の仮想ソース・アドレスを受信するステップと、
前記メモリ・コピー命令のバイト・レジスタを使用して、メモリ・コピー動作において転送されるバイト数を受信するステップと、
前記メモリ・コピー命令のキャッシュ注入レジスタを使用して、宛先データがキャッシュ又はメモリにコピーされるか否かを示す識別データを受信するステップであって、前記キャッシュ注入レジスタは、コピーされるべきデータ行がどのキャッシュ・レベルにコピーされるかを表示する、前記受信するステップと、
前記メモリ・コントローラにより前記メモリ・コピー動作を実行するために、前記引数を含む前記メモリ・コピー命令を前記メモリ・コントローラに接続されたキューに入れるステップと、
後続の命令が命令パイプラインから利用可能になったときに、前記半同期メモリ・コピー動作の間に少なくとも１つの後続の命令の実行を続行するステップと
を含む、前記方法。
【請求項２】
前記仮想ソース・アドレス及び前記仮想ターゲット・アドレスによって参照された一組のメモリ・ページが、ページング可能である、請求項１に記載の方法。
【請求項３】
前記後続の命令が、前記仮想ソース・アドレスに対応するアドレス範囲からの読み取り動作に関する命令である、請求項１に記載の方法。
【請求項４】
前記少なくとも１つの後続の命令の実行を続行させるステップが、
前記後続の命令が、ソース・アドレス範囲及び宛先アドレス範囲の少なくとも１つからの読み取り、及び、前記ソース・アドレス範囲及び前記宛先アドレス範囲の少なくとも１つへの書き込み、の少なくとも一方に関する命令であるかを判断するステップと、
前記後続の命令が前記ソース・アドレス範囲からの読み取りに関する命令であることに応答して前記プロセッサにより前記後続の命令を実行するステップと
をさらに含み、
半同期メモリ・コピー動作の進行中に前記ソース・アドレス範囲及び前記宛先アドレス範囲に関する妥当性の一時的な永続性が保たれる、
請求項１又は２に記載の方法。
【請求項５】
前記キューが満杯であるか否かを判断するステップと、
前記キューが追加のメモリ・コピー動作のためのスペースを有することに応答して、前記メモリ・コントローラにより少なくとも１つの追加のメモリ・コピー命令を実行のために前記キューに入れるステップと
をさらに含む、請求項１〜３のいずれか一項に記載の方法。
【請求項６】
前記キューが満杯であることに応答して、前記キューが前記少なくとも１つの追加のメモリ・コピー命令のための十分なスペースを有するまで、前記少なくとも１つの追加のメモリ・コピー命令を前記キューに入れるのを待つステップをさらに含む、請求項５に記載の方法。
【請求項７】
前記半同期メモリ・コピー動作の長さが任意に定められる、請求項１〜６のいずれか一項に記載の方法。
【請求項８】
前記仮想ソース・アドレスに対応するアドレス範囲及び前記仮想ターゲット・アドレスに対応するアドレス範囲が位置合わせされない、請求項１〜７のいずれか一項に記載の方法。
【請求項９】
データをメモリの第１部分からメモリの第２部分に半同期的にコピーするシステムであって、
メモリと、
前記メモリに通信可能に接続されるメモリ・コントローラと、
前記メモリ及び前記メモリ・コントローラに通信可能に接続されたプロセッサと、
前記メモリ・コントローラに接続され、前記メモリ・コントローラにより前記メモリ・コピー動作を実行するために、前記メモリ・コピー命令を保持するキューと
を備えており、
前記プロセッサが、請求項１〜８のいずれか一項に記載の方法の各ステップを実行する、前記システム。
【請求項１０】
データをメモリの第１部分からメモリの第２部分に半同期的にコピーするためのコンピュータ・プログラムであって、コンピュータに、請求項１〜８のいずれか一項に記載の方法の各ステップを実行させる前記コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、情報処理システムの分野に関し、より具体的には、情報処理システム内のメモリ・コピー動作に関する。
【背景技術】
【０００２】
メモリ・コピー動作は、非常に頻繁に実施されるデータ処理動作である。こうした動作は、ソフトウェアによるアプリケーションレベルで、オペレーティング・システム（ＯＳ）レベルで、またミドルウェア・プログラミングによって、開始される。メモリ・コピー動作は、メモリの１つの位置から別の位置へデータをコピーするロード及びストア動作の反復を伴ってプログラムされることが通例である。これにより、データ転送が、中央演算処理装置（ＣＰＵ、又はより簡略に「プロセッサ」）を経由してステージ化される。その結果として、以下の理由により、データ処理システムの全体的な動作に非効率性がもたらされる。
（１）コピー動作の性能は、ＣＰＵの速度に合致するには不十分であることがしばしばである、利用可能なメモリの帯域幅によって制限される。
（２）データ転送は、ＣＰＵを経由し、ロード及びストア命令を介して、ステージ化されるので、移動動作の間、本質的にＣＰＵを拘束し、ＣＰＵに他のタスクを処理することを停止させる。
（３）通例、ＣＰＵはメモリ・サブシステムより高速であることから、ＣＰＵはデータがメモリからＣＰＵに到着するのを待つ間アイドル状態となる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記の議論から分かるように、メモリ・コピー動作は、アプリケーション、ミドルウェア、及びオペレーション・システムにとって、性能に依存したプロシージャである。メモリ・コピー動作を実施する多くの方法が、ロード及びストア命令を繰り返し使用することにより、ＣＰＵを経由してデータがステージ化されることを引き起こす。上述されたように、この種の動作は、特に大量のデータがコピーされる時には、比較的長時間にわたってＣＰＵを拘束する。メモリ待ち時間及びメモリ帯域幅の制限がＣＰＵ速度に比べて遅い全体的な転送速度をもたらすため、このような動作も低速になり、結果として望ましくないレベルの性能をもたらす。
【０００４】
しかしながら、リアル・モードでのメモリ・コピー動作においては、ピンニングされたページに関して（従って、リアル・メモリ・アドレスに関して）は幾つかの解決策が事実上存在するが、アプリケーションによる、ミドルウェアによる、及びオペレーティング・システムによる一般使用に関しては、何ひとつ存在しない。別の言い方をすれば、データ・プロセッサが仮想アドレッシング・モードで機能しているときには、効率的なメモリ・コピー動作は単純に不可能であるか又は容認されない。本発明の出現に至るまでは、リアル・アドレッシング・モードが用いられたときにのみ、メモリ・コピー動作の効率を向上させる努力がなされたのであり、またそのときでさえ、「ページのピンニング」が必要である。ピンニングとは、メモリが、メモリの該当部分に格納されたデータのページ・アウトを防止するように設定されたときのことである。このことは、一時バッファへのデータ・アクセスにおいてページ不在が起こらないことを保証する。
【０００５】
別の問題は、ストア動作の典型的な実装は、キャッシュ・ライン全体が最終的には再書込みされるにも拘わらず、宛先キャッシュ・ラインがメモリからフェッチされるということが起こる点である。このことはまた、望ましくないことにメモリ帯域幅の大部分を無駄にする。
【０００６】
従来のメモリ・コピーにおける別の非効率の原因は、不完全なデータ位置合わせである。典型的なコンピュータ・システムは、自然に位置合わせされたデータをロード及びストアするときには、より効率的である。それらはまた、より粒度の大きいデータをロード及びストアするときには、より効率的である（例えば、６４ビットの動作は３２ビットの動作よりも効率的である）。残念なことに、メモリ・サブシステムに関しては、アプリケーション・ソフトウェアの大きなクラスは、データの自然な位置合わせということになると、良好に挙動しない。逆に、殆どのアプリケーション・ソフトウェアは、メモリ・コピー動作を達成するために、ｂｃｏｐｙ又は類似の命令といったオペレーティング・システム（ＯＳ）命令に依存する。ｂｃｏｐｙルーチンは、アプリケーションの位置合わせ挙動に関して何の知識も持たず、全ての位置合わせ条件の下で効率的に働くように設計されねばならない。
【０００７】
従って、上述されたように、従来技術に関わる問題を克服する必要性が存在する。
【課題を解決するための手段】
【０００８】
略述すれば、本発明により、データをメモリの第１部分からメモリの第２部分に半同期的にコピーするためのシステム、方法、及びプログラムが開示される。この方法は、プロセッサにおいて半同期メモリ・コピー動作実行のためのメモリ・コピー命令を受信するステップを含む。半同期メモリ・コピー動作は、フラグ・ビットを設定することによりメモリ内のソース位置に対応する仮想ソース・アドレス及びメモリ内のターゲット位置に対応する仮想ターゲット・アドレスに関する妥当性の一時的な永続性を保つ。メモリ・コピー命令は、少なくとも仮想ソース・アドレス、仮想ターゲット・アドレス、及びコピーされるバイト数を識別する標識を含む。メモリ・コピー命令は、メモリ・コントローラによりメモリ・コピー動作を実行するために、メモリ・コントローラに結合されたキューに入れられる。後続の命令が命令パイプラインから利用可能になったときに少なくとも１つの後続の命令の実行が続行される。
【０００９】
本発明の別の実施形態においては、データをメモリの第１部分からメモリの第２部分に半同期的にコピーするシステムが開示される。システムは、メモリと、メモリに通信可能に結合されるメモリ・コントローラとを含む。システムはまた、メモリ及びメモリ・コントローラに通信可能に結合されたプロセッサを含む。プロセッサは、半同期メモリ・コピー動作実行のためのメモリ・コピー命令を受信する。半同期メモリ・コピー動作は、フラグ・ビットを設定することによりメモリ内のソース位置に対応する仮想ソース・アドレス及びメモリ内のターゲット位置に対応する仮想ターゲット・アドレスに関する妥当性の一時的な永続性を保つ。メモリ・コピー命令は、少なくとも仮想ソース・アドレス、仮想ターゲット・アドレス、及びコピーされるバイト数を識別する標識を含む。メモリ・コントローラによりメモリ・コピー動作を実行するために、メモリ・コピー命令を保持するキューも含まれ、該キューは、メモリ・コントローラに結合される。
【００１０】
本発明の更に別の実施形態においては、データをメモリの第１部分からメモリの第２部分に半同期的にコピーするためのプログラムが開示される。具体的な実施形態においては、プログラムは、以下の手順をコンピュータに実行させる。まず、プロセッサにおいて、半同期メモリ・コピー動作実行のためのメモリ・コピー命令を受信する。半同期メモリ・コピー動作は、フラグ・ビットを設定することによりメモリ内のソース位置に対応する仮想ソース・アドレス及びメモリ内のターゲット位置に対応する仮想ターゲット・アドレスに関する妥当性の一時的な永続性を保つ。メモリ・コピー命令は、少なくとも仮想ソース・アドレス、仮想ターゲット・アドレス、及びコピーされるバイト数を識別する標識を含む。メモリ・コントローラによりメモリ・コピー動作を実行するために、メモリ・コピー命令がキューに入れられる。キューは、メモリ・コントローラに結合される。後続の命令が命令パイプラインから利用可能になったときに、少なくとも１つの後続の命令の実行が続行される。
【００１１】
上記の実施形態の利点は、メモリ・コピー動作のあいだにプロセッサが後続の命令を実行し続けられるようなメモリ・コピー動作を提供し、それにより、不必要なプロセッサ・ダウンタイムを回避するという点である。本発明の別の利点は、メモリ・コピー命令が有効（仮想）アドレスを引数として取るため、メモリ・コピー命令のソース及びターゲットによって参照される仮想メモリ・ページはピンニングされず、ページ不在を許容できるという点である。これにより、ピンニング・ページのオーバーヘッドが必然的に回避できるようになる。本発明の更に別の利点は、メモリ・コピー命令が、命令引数として渡されたアドレスの位置合わせに対して制約を課さない点である。本発明の更なる利点は、データ完成と組み合わせてキャッシュ注入を用いることにより、メモリ待ち時間が回避できる点である。
【発明を実施するための最良の形態】
【００１２】
個別の図面全てにわたり同一要素又は機能上類似の要素には同一の参照符号が付され、それらの図面は以下の詳細な説明と共に、本発明に係る種々の実施形態を更に詳述し、種々の原理及び利点を説明する役目を果たす。
【００１３】
必要に応じ、本発明の詳細な実施形態がここに開示されるが、開示された実施形態は、種々の形態で実施することが可能である本発明の単なる例示であると理解されるべきである。従って、ここで開示される具体的な構造上の詳細及び機能上の詳細は、限定するものではなく、単に請求項の基礎として、また事実上あらゆる適切な詳細な構造において本発明を様々に用いることを当事者に教示するための代表的な基礎として解釈されるべきである。更に、ここで用いられる用語及び語句は、限定するのではなく、本発明のわかりやすい説明を提供することを意図している。
【００１４】
ここで用いられる「１つの」という用語、及び単数複数を区別しない場合は、１つ又はそれ以上と定義される。ここで用いられる、「複数」という用語は、２つ又はそれ以上と定義される。ここで用いられる、「別の」という用語は、少なくとも第２又はそれ以上と定義される。ここで用いられる、「含む」及び「有する」という用語は、具備すると定義される（即ちオープン・ランゲージである）。ここで用いられる、「結合」という用語は、接続と定義されるが、必ずしも直接的にであるとは限らず、また必ずしも機械的にであるとは限らない。
【００１５】
ここで用いられる「メモリ・コピー動作」及び「メモリ・コピー」という用語は、ランダム・アクセス・メモリの一部分にあるデータが、同じランダム・アクセス・メモリの別の部分に、ソース・ストレージ位置のメモリ内容を変更することなしにコピーされるという、情報処理システム内において実行されるプロセスである。しかしながら、本発明の１つの例示的な実施形態においては、「メモリ・コピー」という用語は、何キロバイトものデータや、果てはメガバイト単位のデータをコピーすることを伴うメモリ・コピー動作を指す。
【００１６】
本発明は、１つの実施形態により、メモリ・コピー動作のための１つのより効率的な機構を提供することによって、従来技術に伴う問題を克服する。本発明は、プロセッサが、メモリ・コピー動作の間も後続の命令の実行を続けられるようにし、それにより、不必要なプロセッサ・ダウンタイムを回避する。
【００１７】
例示的なプロセッサ
本発明の１つの実施形態により、図１に示されるように、全体が１００で表される、本発明によって命令及びデータを処理するための例示的なプロセッサが図示される。プロセッサ１００は、以下で更に説明されるように、それら全てが集積回路によって形成されている種々の実行装置、レジスタ、バッファ、メモリ、及び他の機能的な装置を含む、スーパースカラ・プロセッサなどの単一の集積回路プロセッサを含む。
【００１８】
図１に示されるように、プロセッサ１００は、システム・メモリ１０２、及び１つの実施形態においては第２のプロセッサ１０４といった他のデバイスに、相互接続ファブリック１０６を用いて結合し、コンピュータ・システムのようなより大規模なデータ処理システムを形成することができる。プロセッサ１００は、例えば統合レベル２（「Ｌ２」）キャッシュ１０８と、分岐したレベル１（「Ｌ１」）命令（Ｉ）キャッシュ１１０及びデータ（「Ｄ」）キャッシュ１１２とを含む、オンチップ・マルチレベル・キャッシュ階層を有する。当業者には周知のように、キャッシュ１０８、１１０、１１２は、システム・メモリ１０２内のメモリ位置に対応するキャッシュ・ラインへの待ち時間の少ないアクセスを提供する。
【００１９】
命令フェッチ・アドレス・レジスタ（「ＩＦＡＲ」）１１４にある有効アドレス（「ＥＡ」）に応答して、処理のためにＬ１  Ｉ−キャッシュ１１０から命令がフェッチされる。各サイクルの間に、３つのソース、即ち、条件付き分岐命令の予測からもたらされる推測パス・アドレスを提供する分岐予測装置（「ＢＰＵ」）１１６、非推測パス・アドレスを提供する完了装置（「ＣＵ」）１９４、及び、予測が不正確だった条件付き分岐命令を解決することからもたらされる非推測パス・アドレスを提供する分岐実行装置（「ＢＥＵ」）１２０のうちの１つから、新たな命令フェッチ・アドレスをＩＦＡＲ１１４にロードすることができる。ヒット／ミス論理１２２は、有効アドレスからリアル・アドレスへの変換（「ＥＲＡＴ」）１２４及びＩ−キャッシュ・ディレクトリ１２６内のリアル・アドレス（「ＲＡ」）の参照によりＩＦＡＲ１１４に含まれるＥＡを変換した後で、ＩＦＡＲ１１４内のＥＡに対応する命令のキャッシュ・ラインがＬ１  Ｉ−キャッシュ１１０にないと判断した場合には、Ｉ−キャッシュ要求バス１２８を介してＬ２キャッシュ１０８にＲＡを要求アドレスとして提供する。こうした要求アドレスはまた、Ｌ２キャッシュ１０８内のプリフェッチ論理によって、最近のアクセス・パターンに基づいて生成することもできる。要求アドレスに応答して、Ｌ２キャッシュ１０８が命令のキャッシュ・ラインを出力し、それらの命令は、恐らくはオプションのプリデコード論理１３４を通過した後で、プリフェッチ・バッファ（「ＰＢ」）１３０及びＬ１  Ｉ−キャッシュ・リロード・バス１３２にロードされる。
【００２０】
一旦ＩＦＡＲ１１４内のＥＡによって指定されたキャッシュ・ラインがＬ１  Ｉ−キャッシュ１１０に格納されると、Ｌ１  Ｉ−キャッシュ１１０は、分岐予測装置（「ＢＰＵ」）１１６と命令フェッチ・バッファ（「ＩＦＢ」）１３６との両方にそのキャッシュ・ラインを出力する。ＢＰＵ１１６は、命令のキャッシュ・ラインをスキャンして分岐命令を探し、もしあれば、条件付き分岐命令の結果を予測する。分岐予測に従い、ＢＰＵ１１６は、上述されたようにＩＦＡＲ１１４に推測命令フェッチ・アドレスを供給し、分岐命令キュー（「ＢＩＱ」）１３８に予測を渡して、そのことにより、後で分岐実行装置１２０により条件付き分岐命令が解決された時に、予測の正確性を判断することができるようにする。
【００２１】
ＩＦＢ１３６は、Ｌ１  Ｉ−キャッシュ１１０から受信された命令のキャッシュ・ラインを、その命令のキャッシュ・ラインが命令変換装置（「ＩＴＵ」）１４０によって変換することができるようになるまで、一時的にバッファする。図示されたプロセッサ１００の実施形態においては、ＩＴＵ１４０は、ユーザ命令セット・アーキテクチャ（「ＵＩＳＡ」）命令から、プロセッサ１００の実行装置により直接実行可能な、数が異なる可能性のある内部ＩＳＡ（「ＩＩＳＡ」）命令へと、命令を変換する。このような変換は、例えば、読取り専用メモリ（「ＲＯＭ」）テンプレートに格納されたマイクロコードを参照することによって実施することができる。少なくとも幾つかの実施形態においては、ＵＩＳＡからＩＩＳＡへの変換は、元のＵＩＳＡ命令とは異なる数又は異なる長さのＩＩＳＡ命令をもたらす。結果得られるＩＩＳＡ命令は、次いで、グループ完了テーブル１１８により、そのメンバーが互いに順不同にディスパッチされ実行されることが許可されているグループに割当てられる。グループ完了テーブル１１８は、グループの中で最古の命令のＥＡであることが好ましい少なくとも１つの関連付けられたＥＡによって実行がまだ完了されていないグループの各々を追跡する。
【００２２】
ＵＩＳＡからＩＩＳＡへの命令変換に続いて、命令は、命令の種類に基づいて、順不同にラッチ１４２、１４４、１４６、１４８のうちの１つにディスパッチされる。即ち、分岐命令及び他の条件レジスタ（「ＣＲ」）修正命令はラッチ１４２にディスパッチされ、固定小数点命令及びロード／ストア命令はラッチ１４４及び１４６のいずれかにディスッチされ、浮動小数点命令はラッチ１４８にディスパッチされる。次いで、実行結果を一時的に格納するための名前変更レジスタを必要とする命令の各々が、適切なＣＲマッパー１５０、リンク及びカウント（「ＬＣ」）レジスタ・マッパー１５２、例外レジスタ（「ＸＥＲ」）マッパー１５４、汎用レジスタ（「ＧＰＲ」）マッパー１５６、又は浮動小数点レジスタ（「ＦＰＲ」）マッパー１５８により、１つ又は複数の名前変更レジスタに割当てられる。
【００２３】
次いで、ディスパッチされた命令は、適切なＣＲ発行キュー（「ＣＲＩＱ」）１６０、分岐発行キュー（「ＢＩＱ」）１３８、固定小数点発行キュー（「ＦＸＩＱ」）１６２、１６４、又は浮動小数点発行キュー（「ＦＰＩＱ」）１６６、１６８に一時的に置かれる。データ依存関係及びデータ非依存関係が観察される限りにおいて、便宜的に、発行キュー１６０、１３８、１６２、１６４、１６６、１６８からプロセッサ１００の実行装置に命令を発行して、実行させることが可能である。しかしながら、命令は、命令のいずれかが再発行される必要性が生じた場合に備えて、命令の実行が完了し、もしあれば結果データが書き戻されるまで、発行キュー１６０、１３８、１６２、１６４、１６６、１６８に維持される。
【００２４】
図示されたように、プロセッサ１００の実行装置は、ＣＲ修正命令を実行するためのＣＲ装置（「ＣＲＵ」）１７２と、分岐命令を実行するための分岐実行装置（「ＢＥＵ」）１２０と、固定小数点命令を実行するための２つの固定小数点装置（「ＦＸＵ」）１７４及び１７６と、ロード／ストア命令を実行するための２つのロード／ストア装置（「ＬＳＵ」）１７８及び１８０と、浮動小数点命令を実行するための２つの浮動小数点装置（「ＦＰＵ」）１８２及び１８４とを含む。実行装置１７２、１２０、１７４、１７６、１７８、１８０、１８２、１８４の各々は、複数のパイプライン・ステージを有する実行パイプラインとして実装されることが好ましい。
【００２５】
実行装置１７２、１２０、１７４、１７６、１７８、１８０、１８２、１８４の１つにおける実行の間に、命令は、もしあれば、その実行装置に結合されたレジスタ・ファイル内の１つ又は複数のアーキテクト・レジスタ又は名前変更レジスタ或いはその両方から、オペランドを受け取る。ＣＲ修正命令又はＣＲ依存命令を実行するときには、ＣＲＵ１７２及びＢＥＵ１２０は、１つの好ましい実施形態においては各々が１つ又は複数のビットから形成される複数の別個のフィールドを備えた、１つのＣＲ名前変更レジスタ及び複数のＣＲ名前変更レジスタを格納しているＣＲレジスタ・ファイル１８６にアクセスする。これらのフィールドの中には、値（典型的には命令の結果であるか又はオペランドである）がゼロより小さいことを示すＬＴフィールド、ゼロより大きいことを示すＧＴフィールド、及び、ゼロに等しいことを示すＥＱフィールドが含まれる。リンク及びカウント・レジスタ（「ＬＣＲ」）レジスタ・ファイル１８８は、カウント・レジスタ（「ＣＴＲ」）と、リンク・レジスタ（「ＬＲ」）と、各々の名前変更レジスタとを含み、それにより、ＢＥＵ１２０はまた、条件付き分岐を解決してパス・アドレスを取得することができる。同期された汎用レジスタ・ファイル（「ＧＰＲ」）１９０及び１９２は、レジスタ・ファイルを二重化し、ＦＸＵ１７４及び１７６とＬＳＵ１７８及び１８０によってアクセスされ生成された固定小数点値及び整数値を格納する。ＧＰＲ１９０及び１９２と同様に、浮動小数点レジスタ・ファイル（「ＦＰＲ」）１５８も、ＦＰＵ１８２、１８４による浮動小数点命令の実行、及び、ＬＳＵ１７８、１８０による浮動小数点ロード命令の実行によってもたらされた浮動小数点値を格納する、同期されたレジスタの二重化セットとして実装することもできる。
【００２６】
実行ユニットが命令の実行を終了した後で、実行ユニットは、命令によって指定された指定宛先に結果を書込み、命令を発行キューから削除し、命令の完了をプログラム順にスケジューリングするＣＵ１９４に完了を通知する。ＣＲＵ１７２、ＦＸＵ１７４及び１７６、又はＦＰＵ１８２及び１８４のうちの１つによって実行された命令を完了するために、ＣＵ１９４は実行装置に信号を送り、該実行装置は、もしあれば、結果データを、割当てられた名前変更レジスタから、適切なレジスタ・ファイル内の１つ又は複数のアーキテクト・レジスタへ書き戻す。そのグループの中の全ての命令が完了すると、それはＧＣＴ１１８から削除される。しかしながら、他の種類の命令は、異なる形で完了される。
【００２７】
ＢＥＵ１２０が条件付き分岐命令を解決し、取られるべき実行パスのパス・アドレスを決定した時には、パス・アドレスは、ＢＰＵ１１６によって予測された推測パス・アドレスに対して比較される。パス・アドレスが一致した場合には、それ以上の処理は不要である。しかしながら、計算されたパス・アドレスが予測されたパス・アドレスと一致しない場合には、ＢＥＵ１２０は、ＩＦＡＲ１１４に正しいパス・アドレスを供給する。どちらの事象においても、次に、ＢＩＱ１３８から分岐命令を削除することが可能であり、同じグループ内の全ての他の命令が完了している時には、ＧＣＴ１１８からも削除することが可能である。
【００２８】
ロード命令の実行に続いて、ロード命令を実行することにより算出された有効アドレスは、データＥＲＡＴ（図示せず）によってリアル・アドレスに変換され、次いで、要求アドレスとしてＬ１  Ｄ−キャッシュ１１２に提供される。この時点において、ロード命令は、ＦＸＩＱ１６２か１６４のどちらかから削除され、指示されたロードが実施されるまで、ロード再配列キュー（「ＬＲＱ」）１９６に置かれる。要求アドレスがＬ１  Ｄ−キャッシュ１１２においてミスした場合、その要求アドレスはロード・ミス・キュー（「ＬＭＱ」）１９８に置かれ、それから、要求されたデータがＬ２キャッシュ１０８から検索され、それに失敗した際には別のプロセッサ１０４又はシステム・メモリ１０２から検索される。ＬＲＱ１９６は、排他アクセス要求（例えば、修正する意図をもっての読取り）をスヌープし、相互接続ファブリック１０６上で未完了のロードに対しフラッシュ又は強制終了し、ヒットが発生した場合には、ロード命令の取り消しと再発行を行う。
【００２９】
ストア命令は、ストア命令の実行に続いて格納のための有効アドレスがロードされるストア・キュー（「ＳＴＱ」）１０３を用いて、同様にして完了される。ＳＴＱ１０３からは、Ｌ１  Ｄ−キャッシュ１１２及びＬ２キャッシュ１０８の両方又は一方にデータを格納することが可能である。プロセッサ１００はまた、メモリ管理装置（「ＭＭＵ」）１０５を含む。ＭＭＵ１０５は、プロセッサによって要求されるメモリ・アクセスを取り扱うための種々のコンポーネントを備える。例えば、メモリ管理装置２０２は、仮想アドレスをリアル・アドレスに変換するためのページ・テーブルの一部（ＭＭＵ１０５に含まれる）を含んでいる変換索引バッファ（「ＴＬＢ」）を含む。ＭＭＵ１０５はまた、メモリ保護及びキャッシュ制御のためのコンポーネントも含む。
【００３０】
例示的なメモリ・コピー機構
図２は、本発明の１つの実施形態による例示的なメモリ・コピー機構を含んだ、図１のプロセッサのより簡略化された図を図示するブロック図である。図２は、ＧＰＲ１９０及び１９２と、Ｌ１キャッシュ１１０及び１１２と、ＭＭＵ／ＴＬＢ１０５とを含んだプロセッサ・コア１００を示す。プロセッサ１００はまた、本発明の例示的なメモリ・コピー命令のような命令コード２０２も含む。
【００３１】
メモリの第１の部分からメモリの第２の部分へデータをコピーするための効率的且つ自由度の高い手段を提供するために、新たなメモリ・コピー命令（「ｍｃ」）がプロセッサ１００の命令アーキテクチャに追加される。本発明のメモリ・コピー動作は、プロセッサと半同期的に動作する。別の言い方をすれば、プロセッサは、メモリ・コピー動作のあいだ、後続の命令を実行することができる。しかしながら、メモリ・コピー命令は、メモリ１０２内のソース位置に対応する仮想ソース・アドレス及びターゲット位置に対応する仮想ターゲット・アドレスに関する妥当性の一時的な永続性を保つ。本発明の１つの実施形態においては、メモリ・コピー命令は、以下の構文／意味構造を含む。
ｍｃ  ＲＴ、ＲＳ、ＲＮ
【００３２】
ＲＴレジスタは、メモリ・コピー動作のためのターゲット・メモリ位置の有効（仮想）アドレスを含む。ＲＳレジスタは、メモリ・コピー動作のためのソース・メモリ位置の有効（仮想）アドレスを含む。ＲＮレジスタは、メモリ・コピー動作において転送されるバイトの数を含む。１つの実施形態においては、メモリ・コピー命令はまた、所定の数のデータ行を受信するべき１つ又は複数のキャッシュ・レベルを識別するための情報を含んでいるキャッシュ注入（「ＣＩ」）レジスタも含む。例えば、ＣＩレジスタは、１つの実施形態においては、最初の幾つかのデータ行がＬ１キャッシュ１１２にコピーされ、次の１０行がＬ２キャッシュ１０８にコピーされ、その次の２０行がＬ３キャッシュ２０４にコピーされるべきことを表示する。コピーされるべきデータ行の数は、個々の情報処理システムに基づいて変化する。例えば、データ行の数は、１つの実施形態においては、キャッシュ内の作業セットの汚染を最小にとどめつつ最良のキャッシュ・ヒット可能性を反映するように、システムによって制御される。システムは、命令ストリーム及びキャッシュの現在の状態を表すためにデータ行の数を割り振る。
【００３３】
「ｍｃ  ＲＴ、ＲＳ、ＲＮ」としての命令フォーマットの記述は、命令の命令コードに関する名前及び省略語、並びに指示されたレジスタの名前及び省略語を含めて、幾つかの任意に指定された項目を含む。命令コードは、一意に識別可能であって、メモリ・コピー動作に関連付けられていることのみが要求され、同様に、命令に仮想（即ち有効）開始アドレス及び終了アドレスが与えられることが必要であるが、名前及びそれらの省略語の構文上の位置決めは全く重要ではなく、転送されるべきデータのバイト数へのＲＮ参照についても同様である。加えて、ＲＮ参照ラベルに関連付けられた値は、「データのバイト」ではなく転送されるべき別のデータ量を指すことも可能であり、例えば、データの「ワード」（１ワードは、例えば３２ビットから成る）を指すこともできる。
【００３４】
メモリ・コピー命令は、キャッシュ不可能装置（「ＮＣＵ」）２０６を介して、メモリ・コントローラ（ＭＣ）２０８にエンキューされる。例えば、ＮＣＵ２０６は、メモリ・コピー命令を、最初にＬ１  Ｉ−キャッシュ１１０にロードすることなしに、直接、メモリ命令キュー２１２にエンキューできるようにする。クロスバー・スイッチのようなファブリック・コントローラ２３０は、ＮＣＵ２０６、Ｌ２キャッシュ１０８、及びＬ３キャッシュ２０４の間でメモリ・コントローラとの通信を調停する。ファブリック・コントローラ２３０はまた、Ｌ２キャッシュ１０８、Ｌ３キャッシュ２０４、及びＮＣＵ２０６を互いに結合する。Ｌ２キャッシュ１０８、Ｌ３キャッシュ２０４、及びＮＣＵ２０６は、各々、メモリ・コントローラ２０８に通信されるデータをキューイングするためのキュー２３２、２３４、２３６を含む。
【００３５】
メモリ命令キュー２１２は、メモリ・コピー命令２１４を含む。メモリ命令キュー２１２は、１つの実施形態においては、利用可能なメモリ帯域幅を飽和させることに並行して、できるだけ多くのメモリ・コピー命令を受け入れる能力をもつように設計される。メモリ・コピー装置２１０は、メモリ・コピー命令に従って、メモリ・コピー動作を実施する。例えば、メモリ１０２のソース・アドレス２１６から宛先アドレス２１８にデータがコピーされる。
【００３６】
コア１００はまた、半同期メモリ・コピー動作によって用いられる、ソース・レジスタ２２０、２２２、及び、ターゲット・レジスタ２２４、２２６を含む。レジスタ２２０、２２２、２２４、２２６内のアドレスには、有効ビット２２８が関連付けられる。１つの実施形態においては、複数の半同期メモリ・コピー動作を実施することが可能であり、各々の半同期動作は、それ自体の一対のソース・レジスタ及びターゲット・レジスタ、並びにそれに関連付けられた有効ビットを有する。これらのレジスタ２２０、２２２、２２４、２２６に関連付けられたアドレス範囲は、保護される。例えば、メモリ・コピー動作の間、ソース・アドレス範囲Ｒｓ、Ｒｓ＋Ｒｎ、及び、ターゲット・アドレス範囲Ｒｔ、Ｒｔ＋Ｒｎに対して、有効ビット２２８が設定される。メモリ・コピー動作が実行されている間、例えば、有効ビット２２８が設定されている間、ストア動作がアドレス範囲Ｒｓ、Ｒｓ＋Ｒｎへの書込みを試みた場合には、ストア命令は、メモリ・コピー動作が完了するまでブロックされ又は停止されることになろう。アドレス範囲Ｒｓ、Ｒｓ＋Ｒｎからの読取りのためのロード動作は許可される。メモリ・コピー動作が実行されている間、例えば有効ビット２２８が設定されている間、ストア動作又はロード動作がアドレス範囲Ｒｔ、Ｒｔ＋Ｒｎへの読取り／書込みを試みた場合には、メモリ・コピー動作が完了するまで、例えば有効ビット２２８がアドレス範囲Ｒｔ、Ｒｔ＋Ｒｎに対して設定されなくなるまで、ロード命令とストア命令の両方がブロックされ又は停止されることになろう。
【００３７】
本発明の１つの利点は、ソース・レジスタ２２０、２２２及びターゲット・レジスタ２２４、２２６のアドレス範囲に関連付けられたメモリ・ページがピンニングされることなくページングされないようにしている点である。例えば、ソース・レジスタ２２０、２２２及びターゲット・レジスタ２２４、２２６内のアドレス範囲は、メモリ・ページングのための命令によりターゲットにされたアドレス範囲と比較される。ソース・レジスタ２２０、２２２及びターゲット・レジスタ２２４、２２６内のアドレス範囲が、変換索引バッファのエントリ無効化（「ｔｌｂｉｅ」）命令のようなメモリ・ページング命令によりターゲットにされた場合には、その命令は、そのアドレス範囲に関連付けられたメモリ・コピー動作が完了するまで停止されることになる。例えば、ページ・テーブルの更新の場合、更新は、全ての保留中のメモリ動作が完了するまで（即ち、暗黙同期命令が発行されるまで）プロセッサ１００により停止され、変換索引バッファ（「ＴＬＢ」）エントリは、メモリ・コピーが完了するまで（即ち、暗黙ＴＬＢエントリ無効化（「ｔｌｂｉｅ」）命令が発行されるまで）変更されない。
【００３８】
例示的なメモリ・コピー動作のエンキュー・プロセス
図３は、例示的な半同期メモリ・コピー動作をメモリ・コントローラ２０８にエンキューするプロセスを示す動作流れ図である。図３の動作流れ図は、ステップ３０２で開始し、ステップ３０４まで直接に流れる。プロセッサ１００は、メモリ・コピー動作のための呼び出しを受信する。例えば、ユーザ・コードがメモリ・コピー命令を呼び出し、引数をメモリ・コピー命令に渡す。ステップ３０６において、メモリ・コピー命令のターゲット・レジスタ（「ＲＴ」）要素が、ユーザ・コードからメモリ・コピー動作のためのターゲット・メモリ位置の有効（仮想）アドレスを受信する。ステップ３０８において、メモリ・コピー命令のソース・レジスタ（「ＲＳ」）要素が、ユーザ・コードからメモリ・コピー動作のためのソース・メモリ位置の有効（仮想）アドレスを受信する。
【００３９】
ステップ３１０において、メモリ・コピー命令のバイト・レジスタ（「ＲＮ」）要素が、メモリ・コピー動作において転送されるバイトの数を受信する。ステップ３１２において、メモリ・コピー命令のキャッシュ注入レジスタ（「ＣＩ」）要素が、宛先データがキャッシュ又はメモリにコピーされるか否かを示すデータを受信する。メモリ・コピー命令の全てのパラメータが受信された後で、ステップ３１４において、命令が、キャッシュ不可能装置２０６を介してメモリ・コントローラ２０８にエンキューされる。その後、制御フローはステップ３１６で終了する。
【００４０】
本発明の１つの利点は、メモリ・コピー命令が有効（仮想）アドレスを引数として取るため、メモリ・コピー命令のソース及びターゲットによって参照される仮想メモリ・ページはピンニングされず、ページ不在を許容できるという点である。これにより、ピンニング・ページのオーバーヘッドが必然的に回避できるようになる。本発明の別の利点は、メモリ・コピー命令が、命令引数として渡されたアドレスの位置合わせに対して制約を課さない点である。
【００４１】
図４は例示的なメモリ・コピー命令の半同期属性を示す動作流れ図である。図４の動作流れ図は、ステップ４０２で開始し、ステップ４０４まで直接に流れる。ステップ４０４において、プロセッサ１００が、メモリ・コピー命令によって用いられるアドレス範囲を監視する。このことは、プロセッサ・メモリ・サブシステムに対して、いかなる新たな必要条件も課さず、ただプロセッサ１００の既存の機能及び規則に乗っているだけであることに留意されたい。ステップ４０６において、プロセッサ１００は、メモリ・コピー命令がメモリ・コントローラ２０８に実行のために既にエンキューされているか否かを判断する。例えば、例示的なメモリ・コピー動作は、プロセッサ・コア１００と半同期し、それにより、メモリ・コピー動作の間にプロセッサ・コア１００が後続の命令を実行できるようにする。
【００４２】
この判断の結果が否定であった場合には、プロセッサ１００は、ステップ４０８で、メモリ・コピー命令がエンキューされて後続命令の実行を継続できるようになるまで待機する。この判断の結果が肯定であった場合には、プロセッサ１００は、ステップ４１０で、例えばソース・レジスタ２２０、２２２及びターゲット・レジスタ２２４、２２６内のアドレス範囲のような、メモリ・コピー命令に用いられたアドレス範囲に対して、後続のロード及びストアを確認する。例えば、メモリ・コピー命令のソース・アドレス及び宛先アドレスとオーバーラップしないメモリ内の位置への後続のロード及びストアは、禁止されずに進行する。
【００４３】
プロセッサ１００は、ステップ４１２で、後続のロード動作がメモリ・コピー命令の宛先へのものであるか否かを判断する。この判断の結果が肯定であった場合には、プロセッサ１００は、ステップ４１４で、メモリ・コピー動作が完了するまでそれらのロード動作の実行を中断する。例えば、メモリ・コピー動作の間にソース・アドレス範囲Ｒｓ、Ｒｓ＋Ｒｎ及びターゲット・アドレス範囲Ｒｔ、Ｒｔ＋Ｒｎに対して有効ビット２２８が設定される。メモリ・コピー動作が実行されている間、例えば有効ビット２２８が設定されている間に、ストア動作又はロード動作がアドレス範囲Ｒｔ、Ｒｔ＋Ｒｎへの読取り／書込みを試みた場合には、メモリ・コピー動作が完了するまで、例えば有効ビット２２８がアドレス範囲Ｒｔ、Ｒｔ＋Ｒｎに対して設定されなくなるまで、ロード命令とストア命令の両方がブロックされ又は停止されることになろう。メモリ・コピー動作が完了した時には、プロセッサ１００は、ステップ４１６で、メモリ・コピー動作が完了したとの通知を受信する。次いで、プロセッサ１００は、ステップ４２４で、命令パイプラインから利用できるようになり次第、後続の命令の実行を続ける。
【００４４】
ステップ４１２の判断の結果が否定であった場合には、プロセッサ１００は、ステップ４１８で、後続のストア動作がメモリ・コピー命令のソース又は宛先或いはその両方へのものであるか否かを判断する。この判断が肯定であった場合には、プロセッサは、ステップ４２０で、メモリ・コピー動作が完了するまで、それらのストア動作の実行を中断する。ロード／ストア動作のアドレス範囲をメモリ・コピー動作に関連付けられたアドレス範囲（Ｒｓ〜Ｒｓ＋Ｒｎ、Ｒｔ〜Ｒｔ＋Ｒｎ）と比較することにより、メモリ・コピー動作の間、そのメモリ・コピー・アドレス範囲が保護される。別の言い方をすれば、メモリ・コピー・アドレス範囲の妥当性の一時的な永続性が保たれる。メモリ・コピー動作が完了した時には、プロセッサ１００は、ステップ４２０で、メモリ・コピー動作が完了したとの通知を受信する。
【００４５】
本発明の半同期メモリ・コピー動作は、例えば、メモリ・コピー命令にタグを関連付け、完了を保証するためにユーザにそのタグに対する待機命令を発行することにより、ユーザにメモリ・コピー動作の完了を通知する複雑な機構が必要にならないようにする。１つの実施形態においては、メモリ・コピー動作が完了した時には、「移動プログラム終了」信号がコア１００に送信され、有効ビット２２８がオフにされる。これは、プロセッサに、メモリ・コピー動作が完了したという信号を送る。ステップ４１８の判断の結果が否定であった場合には、次いで、プロセッサ１００は、ステップ４２４で、後続の命令の実行を続ける。その後、制御フローはステップ４２６で終了する。
【００４６】
メモリ・コピー動作が完了するまでメモリ・コピー命令のソースへのストア動作又はメモリ・コピー命令の宛先へのロード及びストア動作を停止することにより、プロセッサ１００は、プロセッサ１００の一貫性及び整合性規則において、メモリ・コピー命令を一連のストア命令として扱う。この態様は、他のメモリ動作が維持され、一連のストア動作と整合することを保証しつつ、メモリ・コピー動作との計算のオーバーラップを可能にするという点で重要である。
【００４７】
本発明の１つの実施形態においては、プロセッサ・アーキテクチャは、ロード及びストア動作が、所定の順序で実施されることを必要とする（順次的な整合性）。従って、ロード及びストア動作がソース・レジスタ２２０、２２２又はターゲット・レジスタ２２４、２２６内のアドレス範囲をターゲットとするか否かに関わりなく、ロード及びストア動作は、半同期メモリ・コピー動作の間は、ブロックされ又は停止される。別の実施形態においては、プロセッサ・アーキテクチャは、ストア動作だけが所定の順序で実施されることを必要とする（中程度の整合性）。従って、ストア動作がターゲットにするアドレスは、ソース・レジスタ２２０、２２２のアドレス範囲と比較される。ターゲットにされたアドレスがソース・レジスタ２２０、２２２のアドレス範囲内にあった場合には、ストア動作は、半同期メモリ・コピー動作が完了するまでブロックされ又は停止される。付加的な実施形態においては、プロセッサ・アーキテクチャは、ロード及びストア動作が所定の順序で実施されることを必要としない（弱い整合性）。従って、ロード及びストア動作が目標とするアドレスは、両方とも、図４に関して上述されたように、ソース・レジスタ２２０、２２２及びターゲット・レジスタ２２４、２２６と比較される。
【００４８】
本発明の別の利点は、ページ境界制限が不要な点である。しかしながら、本発明のメモリ・コピー命令の効率を活用しようとするミドルウェア及びバイト・レベル・コピー（「ｂｃｏｐｙ」）機能は、コピー機能を分割して、（ソースについても宛先についても）ページ境界をまたがないようにすることが可能である。別の言い方をすれば、メモリ・コピー命令は、１つの実施形態においては、複数のページ境界にまたがるメモリ・コピーに対しては、ループ内で実行される。ページ・テーブルの更新については、全ての保留中のメモリ動作をまず完了させるという制約を考えると、このことは、実際には良好な設計点である。メモリ・コピーのサイズに制限がない場合には、システム・リソースを独占してオペレーティング・システムの公正な側面に影響を及ぼす大量のメモリ・コピーを伴った１つのプロセスが生じかねない。
【００４９】
本発明の別の利点は、本発明の種々の実施形態を実装するために、プログラマによって用いられるプログラミング命令及びプログラミング意味構造を変更する必要がないという点である。
【００５０】
この機構は、異なるページ・サイズに合わせて調整して、効率的なメモリ・コピー動作が確実に行われるようにすることができ、また、プロセスによるシステム・リソースの使用において公平性を与えるように調整することもできることに注意されたい。付加的に、ソース・アドレス及び宛先アドレスは、それぞれのページ内において異なるオフセットにある場合があるので、このことは、オフセットをより望ましく位置合わせして効率的なメモリ・コピーを行うために「アドレス・シフト」が実行されることを意味することに留意されたい。
【００５１】
複数のメモリ・コピー命令を発行する例示的なプロセス
図５は、パイプライン化された方法で複数のメモリ・コピー命令を発行する例示的なプロセスを示す動作流れ図である。図５の動作流れ図は、ステップ５０２で開始し、ステップ５０４まで直接に流れる。少なくとも１つのメモリ・コピー命令がメモリ・コントローラ２０８にエンキューされた後で、プロセッサ１００は、ステップ５０４で、少なくとも１つの追加のメモリ・コピー命令を発行する。メモリ・コントローラ２０８は、ステップ５０６で、メモリ・コピー命令キュー２１２が満杯であるか否かを判断する。この判断の結果が肯定であった場合には、ステップ５０８で、ビジー信号がプロセッサ１００に戻される。例えば、メモリ・コピー命令は、リソースがビジーであることを示す条件コードを伴って戻ることができる。
【００５２】
別の実施形態においては、メモリ・コピー命令は、メモリ・コピー命令キュー２１２が新たに発行されたメモリ・コピー命令を入れるのに十分なスペースをもつまで停止される。本発明は、メモリ・コピー命令キューが満杯であることを示す種々の方法を実装するように構成することが可能である。停止することの１つの利点は、メモリ・コピー・リソースにアクセスする際の「順序公平性」が保証される点である。１つの実施形態においては、ビジー信号が戻された場合には、ロードされたシステムにおいてプロセスの幾つかがメモリ・コピー・リソースを不足させるかもしれないという含みを伴って、動作が再試行される。加えて、ビジー信号が戻された場合には、メモリ・コピー動作を要求するアプリケーションは、メモリ・コピー命令キュー２１２が空くのを待つ間に他の仕事をすることができる。
【００５３】
ステップ５０６での判断の結果が否定であった場合には、追加のメモリ・コピー命令が、ステップ５１０で、メモリ・コピー命令キュー２１２にエンキューされる。その後、制御フローはステップ５１２で終了する。メモリ・コピー命令キュー２１２は、１つの実施形態においては、利用可能なメモリ帯域幅を飽和させることに並行して、できるだけ多くのメモリ・コピー命令を受け入れる能力をもつように設計される。キュー２１２が利用可能なメモリ帯域幅より深い場合であっても、メモリ・コピー命令を後続の命令とオーバーラップさせることは、実行中のアプリケーションに対して、はっきりした便益を生じさせる。ソース・アドレス範囲と宛先アドレス範囲がオーバーラップした場合には、オーバーラップしているメモリ・コピー命令の領域の内容は、１つの実施形態においては、定義されず、通例はプログラミング・エラーが起こる。しかしながら、本発明の代替的な実施形態においては、ソース・アドレス範囲と宛先アドレス範囲がオーバーラップすることは、プログラミング・エラーの原因とはならない。この実施形態においては、ソース・アドレスからのデータを宛先アドレスにコピーできるようになっているが、プログラマには、可能性のある破壊の警告が与えられる。
【００５４】
例示的なキャッシュ注入プロセス
図６は、メモリ・コピー命令のキャッシュ注入レジスタ内の情報に基づいて宛先データをキャッシュ注入する例示的なプロセスを示す動作流れ図である。図６の動作流れ図は、ステップ６０２で開始し、ステップ６０４まで直接に流れる。プロセッサ１００は、ステップ６０４で、キャッシュ注入ビットについてメモリ・コピー命令をチェックする。キャッシュ注入ビットは、例えば、命令の独立したレジスタに配置されるが、代替的に命令のＲＮレジスタに配置してもよい。キャッシュ注入ビットは、メモリ・コピー装置２１０に、データの全て又は幾つかをどこにコピーするかを示す。例えば、より高速にデータを処理するために、メモリ・コピー命令はキャッシュ・ビットを含み、そのことにより、プロセッサがデータをロードする時に、メモリではなくキャッシュからデータがロードされるようにする。
【００５５】
ステップ６０６で、キャッシュ注入ビットが存在しないと判断された場合には、メモリ・コピー装置２１０は、ステップ６０８で、宛先データをメモリ１０２にコピーする。その後、制御フローは、ステップ６１０で終了する。ステップ６０６でキャッシュ注入ビットが存在すると判断された場合には、メモリ・コピー装置２１０は、ステップ６１２で、キャッシュ注入ビットによって示されたように、宛先データの所定数の行を適切なレベルのキャッシュにコピーする。例えば、最初の幾つかの行をレベル１キャッシュ１１２に移動し、次の１０行をレベル２キャッシュ１０８にコピーしてもよく、その次の２０行はレベル３キャッシュ２０４にコピーされる。このようにして、上位レベルのキャッシュは破壊されない。キャッシュにコピーされる行の数は、例えば、情報処理システムに基づいて変えられる。宛先データの１つのコピーは、ステップ６１４で、メモリ１０２にコピーされる。キャッシュ注入の１つの利点は、データ完成と組み合わされたときに、メモリ待ち時間が回避できる点である。
【００５６】
メモリ・コピー動作の結果は、しばしば異なる方法で用いられることにも留意されたい。多くの場合において、宛先メモリ内のデータは、後続の命令で消費するために、プロセッサにより直ちに用いられる。そのような使用モードの１つの例は、読取り動作の後で、データ・ファイルをユーザ・バッファから移すことである。そのような場合には、プロセッサ１００が、プロセッサ１００による消費のために、宛先データをキャッシュにアップロードすることが有用である。データをユーザ・バッファからネットワーク・バッファに移し、直接メモリ・アクセス（「ＤＭＡ」）によってネットワーク（又はＩ／Ｏデバイス）に転送するといった、他の場合においては、宛先データは、ＤＭＡ動作が進行できるように、メモリに置かれる（即ち、キャッシュされない）。
【００５７】
ＴＬＢＩＥ命令をブロックする例示的なプロセス
図７は、半同期メモリ・コピー動作の間に、ＴＬＢエントリ無効化命令をブロックする例示的なプロセスを示した動作流れ図である。図７の動作流れ図は、ステップ７０２で開始し、ステップ７０４まで直接に流れる。プロセッサ１００は、ステップ７０４で、ｔｌｂｉｅ命令が発行済みか否かを判断する。この判断の結果が否定であった場合は、プロセッサは、ステップ７０４で、引き続き、ｔｌｂｉｅ命令が発行済みか否かを判断する。この判断の結果が肯定であった場合には、プロセッサ１００は、ステップ７０６で、ｔｌｂｉｅ命令によってターゲットにされたアドレスを確認する。
【００５８】
プロセッサ１００は、ステップ７０８で、ｔｌｂｉｅ命令によってターゲットにされたアドレスが、半同期メモリ・コピー動作に関連付けられたアドレス範囲内にあるか否かを判断する。例えば、プロセッサ１００は、ｔｌｂｉｅ命令によってターゲットにされたアドレスを、ソース・レジスタ２２０、２２２及びターゲット・レジスタ２２４、２２６内で見つかったアドレス範囲と比較する。この判断の結果が否定であった場合には、プロセッサ１００は、ステップ７１０で、ｔｌｂｉｅ命令の実行を許可する。この判断の結果が肯定であった場合には、プロセッサ１００は、ステップ７１４で、メモリ・コピー動作が完了するまでｔｌｂｉｅ命令を停止する。その後、制御フローはステップ７１６で終了する。
【００５９】
図７の例示的なプロセスはまた、メモリ・ページングに関与する他の命令にも適用可能である。半同期メモリ・コピー動作に関連付けられたアドレスをターゲットにしているｔｌｂｉｅ命令を停止することにより、アドレスは、ページ・アウトされることから保護される。別の言い方をすれば、ソース・レジスタ２２０、２２２及び宛先アドレス２２４、２２６内のアドレスの妥当性の一時的な永続性が保たれる。アドレスは、費用のかかるピンニングを必要としない。
【００６０】
限定的ではない例
上述された本発明の実施形態は、メモリ・コピー動作の間にプロセッサが後続の命令を実行し続けられるようなメモリ・コピー動作を提供し、それにより、不必要なプロセッサ・ダウンタイムを回避できるという理由から、有利である。本発明の別の利点は、メモリ・コピー命令が有効（仮想）アドレスを引数として取るため、メモリ・コピー命令のソース及びターゲットによって参照される仮想メモリ・ページはピンニングされず、ページ不在を許容できるという点である。これにより、ピンニング・ページのオーバーヘッドが必然的に回避できるようになる。本発明の更に別の利点は、メモリ・コピー命令が、命令引数として渡されたアドレスの位置合わせに対して制約を課さない点である。本発明の更なる利点は、データ完成と組み合わせてキャッシュ注入を用いることにより、メモリ待ち時間が回避できる点である。
【００６１】
本発明は、ハードウェア、ソフトウェア、又はハードウェアとソフトウェアの組み合わせの形で実施することが可能である。本発明の好ましい実施形態によるシステムは、１つのコンピュータ・システムに集中化した形で実施しても良く、異なる要素が幾つかの相互接続されたコンピュータ・システムにわたって分散された、分散型の形で実施しても良い。いかなる種類のコンピュータ・システム、又は、ここで説明された方法を実行するように適合された他の装置も、好適である。典型的なハードウェアとソフトウェアの組み合わせは、ロードされて実行された時にはコンピュータ・システムを制御してここで説明された方法を実行させるコンピュータ・プログラムを伴う、汎用コンピュータ・システムであろう。
【００６２】
一般に、本発明の実施形態を実装するために実行されるルーチンは、オペレーティング・システムの一部として実装するか、又は特定のアプリケーション、コンポーネント、プログラム、モジュール、オブジェクト、又は命令シーケンスとして実装するかに関わりなく、ここでは「プログラム」と呼ぶことができる。コンピュータ・プログラムは、一般に、ネイティブ・コンピュータによって機械可読形式、従って実行可能な命令へと変換される多くの命令を含む。また、プログラムは、プログラムにローカルに存在するか、又はメモリもしくはストレージ・デバイスから見つけられる変数及びデータ構造体を含む。加えて、ここで説明された種々のプログラムは、本発明の特定の実施形態において、それらが実装されるアプリケーションに基づいて識別することができる。しかしながら、そこでのいかなる特定のプログラム専門語も、単に便宜上用いられているだけであり、従って、本発明は、そのような専門語によって識別又は示唆されるいずれかの特定のアプリケーションにおける使用のみに限定されてはならないことが理解されるべきである。
【００６３】
本発明の特定の実施形態が開示されたが、当業者であれば、本発明の精神及び範囲を逸脱することなしに、特定の実施形態に対して変更を行うことができると理解するであろう。本発明の範囲は、従って、特定の実施形態に制限されるものではなく、また、特許請求の範囲は、本発明の範囲内にあるそのような適用、修正、及び実施形態のいずれをもカバーすることが意図されている。
【図面の簡単な説明】
【００６４】
【図１】本発明の１つの実施形態による、命令を処理するための例示的なプロセッサを示すブロック図である。
【図２】本発明の１つの実施形態による、例示的なメモリ・コピー機構を含む図１のプロセッサのより簡略化された形態を示すブロック図である。
【図３】本発明の１つの実施形態による、例示的なメモリ・コピー動作をメモリ・コントローラにエンキューする例示的なプロセスを示す動作流れ図である。
【図４】本発明の１つの実施形態による、例示的な半同期メモリ・コピー動作を示す動作流れ図である。
【図５】本発明の１つの実施形態による、複数のメモリ・コピー命令を発行する例示的なプロセスを示す動作流れ図である。
【図６】本発明の１つの実施形態による、宛先データをキャッシュ注入する例示的なプロセスを示す動作流れ図である。
【図７】本発明の１つの実施形態による、変換索引バッファのエントリ無効化命令をブロックする例示的なプロセスを示す動作流れ図である。
【符号の説明】
【００６５】
１００：プロセッサ
１０２：システム・メモリ
１０８：Ｌ２キャッシュ
１１０：Ｌ１  Ｉ−次キャッシュ
１１２：Ｌ１  Ｄ−キャッシュ
２０６：キャッシュ不可能装置
２０８：メモリ・コントローラ
２１２：メモリ・コピー命令キュー
２１４：メモリ・コピー命令
２１６：ソース・アドレス
２１８：宛先アドレス
２２０、２２２：ソース・レジスタ
２２４、２２６：ターゲット・レジスタ
２３２、２３４、２３６：キュー
【図１】
0005120832.tif 000002
【図２】
0005120832.tif 000003
【図３】
0005120832.tif 000004
【図４】
0005120832.tif 000005
【図５】
0005120832.tif 000006
【図６】
0005120832.tif 000007
【図７】
0005120832.tif 000008