(57)【要約】      （修正有）【課題】アプリケーションが実行され続けることを可能にする一方でソースメモリから移動先メモリへの内容のコピーを作成し又は内容を移動させる方法を提供する。【解決手段】コヒーレントメモリコピー論理１２４は、ソースメモリロケーション１０６から移動先メモリロケーション１０４へデータをコピーし、そしてソースメモリ領域への書き込み要求を複製して、複製された書き込み要求１７０を作成する。コヒーレントメモリコピー論理はまた、複製された書き込み要求を実行して、外部メモリ領域からの内容を移動先メモリ領域へコピーする。次いで、内部メモリ１０４が使用されている間に電力を節約するために、ソースメモリ１０６への電力が低減される。【選択図】図１
2015122113.tif 000002
【特許請求の範囲】
【請求項１】
メモリ内容を再配分するための方法であって、
外部ソースメモリ領域への連続的な読み出し及び書き込みアクセスを提供すると共に前記外部ソースメモリ領域から内部移動先メモリ領域へデータをコピーすることと、
前記内部移動先メモリ領域へ内容をコピーすることに応答して前記外部メモリ領域を含む外部メモリの電力を低減することとを備え、
前記データをコピーすることは、
前記外部ソースメモリ領域に対するメモリ書き込みをもたらす現在のアプリケーションを実行し続けることと、
前記ソースメモリ領域に対する当該書き込み要求を複製して複製された書き込み要求を作成することと、
前記複製された書き込み要求を実行して前記ソースメモリ領域からの内容が前記移動先メモリ領域の内容と同一になるのを確実にすることと、によってなされる方法。
【請求項２】
ソースメモリ領域から移動先メモリ領域へデータをコピーするように動作し且つソースメモリ領域に入ってくる書き込み要求を複製して複製された書き込み要求を作成すると共に前記複製された書き込み要求を実行して前記ソースメモリ領域から前記移動先メモリ領域への内容を同期させるように動作するコヒーレントメモリコピー論理を備え、
前記コヒーレントメモリコピー論理は、移動先メモリ内の前記移動先メモリ領域へコピーされつつあるソースメモリに対するメモリ書き込み要求を傍受するように動作する入力要求ルータ論理と、前記傍受されたメモリ書き込み要求のアドレスを係属中データキュー内のエントリと比較してコピーコヒーレンシを促進するように動作するコピー書き込み論理とを備えている集積回路（ＩＣ）。
【請求項３】
前記係属中データキューは、前記ソースメモリ領域からコピーされるべきデータと少なくとも前記係属中データキュー内のエントリが前記移動先メモリへコピーされる準備ができていることを表すデータ及びエントリが前記移動先メモリ領域へ既にコピーされたことを表すデータとを一時的に記憶する請求項２のＩＣ。
【請求項４】
前記コヒーレントメモリコピー論理は、係属中データキューと前記係属中データキューに動作可能に結合されるコピー書き込み論理とを備えているコピー論理を備えており、前記コピー書き込み論理は、
前記複製された書き込み要求を作成することに基き前記書き込み要求と同じアドレスに対応しているソースメモリに対する係属中読み出し要求があるかどうかを前記係属中データキューから決定し、且つ
前記係属中読み出し要求がある場合にエントリに対する破棄フラグを有効に設定するように動作する請求項２のＩＣ。
【請求項５】
前記コヒーレントメモリコピー論理は当該複製書き込みを即時的に実行するように動作する請求項４のＩＣ。
【請求項６】
当該複製書き込みからのデータを前記係属中データキュー内へ挿入するように動作するコピー書き込み論理を備えた請求項４のＩＣ。
【請求項７】
コピーすることは、（ａ）準備完了フラグが有効であり且つ破棄フラグが無効であり且つ前記移動先メモリ領域へ書き込んでいる場合、又は（ｂ）前記準備完了フラグが有効であり且つ読み出し破棄フラグが有効であり且つ当該複製書き込みの内容が係属中データキュー内に既にあった場合のいずれかの場合に前記係属中データキューからエントリを読み出すことを備えている請求項２のＩＣ。
【請求項８】
請求項２の集積回路を備えたデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概してソースメモリから移動先メモリへメモリ内容を再配分するための方法に関し、更に特定的には集積回路（例えばチップ）の外部にある外部メモリとチップ上に配置される内部メモリとの間でメモリ内容を再配分するための方法及び装置に関する。
【背景技術】
【０００２】
携帯型デバイス、例えば多機能携帯電話機(smart phones)、マルチメディアプレーヤ、デジタルオーディオプレーヤ及び他の携帯型デバイスは、改善されたバッテリ寿命を必要としている。長いバッテリ寿命のためには、携帯型チップ（携帯型デバイス内に配置される集積回路）の低電力動作が必須である。これらのチップが例えばオーディオ再生のようなアプリケーションを起動する場合、それらは、内部チップメモリ構造内でアプリケーションに対してメモリスペースを割り当てることを試みる。内部メモリ構造が既に他のアプリケーションによって使用されている場合には、チップは、チップの外部にある新たなアプリケーションメモリ構造に対してメモリを割り当てる。しかし、外部メモリを使用することは、携帯型デバイスの電力消費を増やし、バッテリ寿命を短くする。
【０００３】
チップ上の内部メモリが空いた場合、最新の携帯型デバイスは、メモリページのソフトウエアベースのマイグレーション(migration)の複雑さ又は信頼性のなさに起因して、典型的にはアプリケーションを外部メモリから内部メモリへ移動させることはできない。従って、内部メモリ構造が使用可能になったとしても、デバイスは典型的には外部メモリを使用し続ける。このことは、電力の不必要な消費をもたらし得る。
【０００４】
外部メモリの使用は、追加的な電力を要するであろう外部通信ピン(pins)を必要とする。携帯型デバイスが低電力モードに入り且つ実行中のアプリケーションが内部メモリ内に存在し得る場合、必要な動作は少なくなるが、アプリケーションは通常は外部メモリ内に存在する。他のシステムは、例えば、実行中の全てのアプリケーションが外部メモリから内部メモリへ移動することを可能にし、あるいは幾つかの最小数のアプリケーションが外部メモリから実行されることを可能にしつつ最大数のアプリケーションが移動させられる。しかし、これらは典型的にはソフトウエア同期及び転送動作を用いる。
【０００５】
また、アプリケーションが移動させられる場合、オペレーティングシステムはアプリケーションを停止し、そしてデータを外部メモリから内部メモリへ移動させる。しかし、アプリケーションが停止されるので、ユーザに対する許容し得ないサービスの中断が生じる。
【０００６】
外部メモリ及び内部メモリのようなソースメモリ及び移動先メモリ(destination memory)の間でアプリケーションを移動させるための１つの既知の試みられている解決法は、ソフトウエアベースである。それらは典型的には複雑なソフトウエア同期技術を必要としている。ソフトウエアベースの転送動作は、アプリケーションを転送するプロセスの間にアプリケーションを完全に又は部分的に利用できなくする。この中断は、どんなに短い期間であろうとも、オーディオ及びビデオ再生のようなマルチメディアアプリケーションにとっては許容することができないであろう。
【０００７】
外部メモリから内部メモリへ情報を移動させるための既知のハードウエア技術は、例えば「メモリコピーエンジン」を含むであろうし、あるいはソースメモリから移動先メモリへデータをコピーする直接メモリアクセスコピーエンジン（ＤＭＡエンジン）が知られている。そのようなコピーエンジンに伴う問題は、移動先メモリへ既にコピーされたソースメモリの特定のロケーションに対するいかなる更新も移動先メモリ内に反映されないであろうことである。従って、メモリコヒーレンスは強制されない。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
アプリケーションは停止される必要がある一方で直接メモリアクセスエンジンは動作しており、その結果サービスが中断される。加えて、直接メモリアクセスエンジンは、典型的には仮想アドレスを認知していない。例えばホストプロセッサ上で実行中のソフトウエアアプリケーションは、データを移動させるように直接メモリアクセスのコピーエンジンに命令する。ソフトウエアアプリケーションは、仮想メモリの物理メモリへの翻訳(translations)を要求する必要がある。従って、アプリケーションが実行され続けることを可能にする一方でソースメモリから移動先メモリへの内容のコピーを作成し又は内容を移動させるハードウエアベースのシステムを有することが望ましい。
【課題を解決するための手段】
【０００９】
概して、メモリコピープロセスの一部として、メモリコピー論理がソースメモリ領域への書き込み要求を複製して複製された書き込み要求を作成するように動作する。コヒーレントメモリコピー論理はまた、複製された書き込み要求を実行して、書き込み要求がソースメモリ内で更新する任意の内容が移動先メモリ内でも更新されることを確実にするように動作する。次いで、内部メモリが使用されている間に電力を節約するために、ソースメモリへの電力が低減され得る。その結果、ある種の「ハードウエアメモリムーバ(hard ware memory mover)」は、複雑ないかなるソフトウエア同期の使用をも必要とせず、そしてメモリ移動(memory move)の間にいかなるサービス中断をももたらさない。コヒーレントメモリコピー論理は、アプリケーションソフトウエア及びユーザにとって明白な(transparent)方法で例えば外部メモリからチップ内の内部メモリへアプリケーションメモリスペースを再配分する。ソース領域から移動先領域へデータを移動させる場合にコヒーレンシを提供する他の例は、メモリの１つの領域の内容を同一の物理メモリ（例えば内部メモリ及び外部メモリではない）内の新たなロケーション（領域）へ再配置するためのコヒーレントメモリコピーエンジンの使用を含む。これにより、デバイスの通常動作の間にフラグメント化されてしまっているであろうメモリ領域の整理統合(consolidation)が可能になる。他の利点は当業者によって理解されるであろう。
【図面の簡単な説明】
【００１０】
本発明は下記の図面と共に以下の説明を考慮して更に容易に理解されるであろうし、図面において同様の参照番号は同様の要素を表す。
【００１１】
【図１】図１は本開示において説明される１つの例に従いメモリ内容を移動させるように動作する論理を含む集積回路の部分の１つの例を示すブロック図である。
【００１２】
【図２】図２は本開示において説明される１つの例に従いメモリ内容を再配分するための方法の１つの例を示すフローチャートである。
【００１３】
【図３】図３は本開示において説明される１つの例に従いメモリ内容を再配分するための方法の１つの例を示すフローチャートである。
【００１４】
【図４】図４は本開示において説明される１つの例に従いメモリ内容を再配分するための方法の１つの例を示すフローチャートである。
【００１５】
【図５】図５は本開示において説明される１つの例に従い図１において説明されるコピーエンジンの１つの例を示すブロック図である。
【００１６】
【図６】図６は本開示において説明される１つの例に従いメモリ内容を再配分するための方法の１つの例を示すフローチャートである。
【００１７】
【図７】図７は本開示において説明される１つの例に従いメモリ内容を再配分するための方法の１つの例を示すフローチャートである。
【発明を実施するための形態】
【００１８】
コヒーレントメモリコピー論理は、移動先メモリ領域へコピーされつつあるソースメモリ領域に対するメモリ書き込み要求を傍受する(intercepts)入力要求ルータ論理と、傍受されたメモリ書き込み要求のアドレスを係属中データキュー(pending data queue)内のエントリと比較してコピーコヒーレンシを促進するように動作するコピー書き込み制御器論理とを含んでいる。係属中データキューは、外部メモリソース領域からコピーされるべきデータ及び係属中データキュー内のエントリが内部メモリへコピーされる準備ができたことを表すデータを一時的に記憶する。係属中データキュー内の各エントリは、ソースメモリから読み出されてはいるが未だ移動先メモリへは書き込まれていないデータフラグメントを一時的に記憶する。係属中データキューはまた、移動先メモリ領域へコピーされつつあるデータフラグメントに関連するデータを含む。そのような関連するデータは、ソースメモリ及び移動先メモリ内のデータフラグメントの物理アドレス、当該データフラグメントが移動先メモリ内へ書き込まれる準備ができていることを表示するフラグ、並びに当該データフラグメントが破棄されるべきであることを表示する破棄フラグを含む。
【００１９】
他の例においては、コヒーレントメモリコピー論理は、物理アドレスを含んでいた外部メモリ又はソースメモリ内にある外部翻訳ルックアサイドバッファ(translation look aside buffer)からの情報の一部、例えば全ページに対する全翻訳より少ない部分、又は修正された一部を記憶する内部翻訳ルックアサイドバッファを含む。外部ＴＬＢは、外部ロケーションの代わりに内部ロケーションを向くように修正される。メモリ制御器ブロックメモリインタフェース１１６及び１１０は、内部翻訳ルックアサイドバッファ１３６を使用して、内部メモリ内に記憶されるページのみに対して物理アドレス及び仮想アドレスを翻訳する。
【００２０】
集積回路を含む携帯型デバイスの他、対応する方法もまた以下に説明される。
【００２１】
図１は携帯型デバイス１００の一部分の１つの例を示しており、携帯型デバイス１００は、限定はされないが例えば多機能携帯電話機(smart phone)であり、図示はしないがディスプレイ、ワイヤレスセルラサブシステム、カメラ及び他の既知のコンポーネントのような標準的なコンポーネントを含んでいる。図１は移動先メモリ(destination memory)１０４を含むグラフィックス処理ユニットのようなプロセッサ１０２を示しており、移動先メモリ１０４は、限定はされないがマイクロプロセッサ集積回路１０２のようなプロセッサ１０２に対する内部メモリである。また、例えばダイナミックＲＡＭ（ＤＲＡＭ）であってよいソースメモリ１０６が示されており、移動先メモリ１０４はＳＲＡＭであってよいが、任意の適切なメモリ種類が用いられてもよいことが認識されるであろう。ソースメモリ１０６は、集積回路１０２に対して外部にある外部メモリとして示されている。携帯型デバイス１００はまた、同一の集積回路上又は別個の集積回路上にあってよい中央処理コアのような他のプロセッサ１０８を含む。プロセッサ１０２は、適切なバス１１２を介して内部メモリ１０４と通信する内部メモリインタフェース１１０を含み、更に、適切なバス１１８を介して外部メモリ１０６と通信する外部メモリインタフェース１１６を含む。説明のみを目的として、バス１１２及びバス１１８を介して通信する個々の通信経路はまた、楕円内に示されている。プロセッサ１０２はまた、メモリ制御器ブロック１２２の一部として又は別個のブロックとして、コヒーレントメモリコピー論理１２４、多重化調整論理(multiplexing arbitration logic)１２６及び１つ以上のメモリクライアント１２８，１３０を含み、これらはプロセッサ１０２内の他のクライアント及び回路と通信する。
【００２２】
コヒーレントメモリコピー論理１２４は、ページコピー作業キュー１３２、コピー論理１３４、随意的内部メモリ翻訳ルックアサイドバッファ１３６及びコピーフローエンジン１３８を含むハードウエア論理である。コヒーレントメモリコピー論理１２４は適切な通信バス１４０を介してプロセッサ１０８と通信する。以下に更に説明されるプロセッサ１０８は、ページコピー作業キュー１３２へデータ投入する(populate)よう動作する論理１４２として機能するように実行される適切なプログラムを含んでいてよい。多重化及び調整論理１２６は、当該分野において知られているような適切なバス１５０及び１５２を介して種々のクライアントインタフェース１２８〜１３０と通信する。
【００２３】
コピーエンジン１３４は、適切なリンク１５４を介してページコピー作業キュー１３２と、また適切なリンク１５６を介してコピーフローエンジン１３８と通信するようにこれらと動作可能に結合される。コピーフローエンジン１３８（例えば状態マシン）は、適切な通信リンク１５８を介して内部メモリＴＬＢ１３６と、またリンク１６０を介してページコピー作業キューと通信する。内部メモリＴＬＢ１３６は、適切な通信リンク９９９を介して種々のメモリインタフェース（内部及び外部）と通信する。
【００２４】
図２もまた参照すると、動作において、コヒーレントメモリコピー論理１２４は、１つのメモリロケーションから他のメモリロケーションへデータをコピーするように動作する（ブロック２０４及び２０６参照）。例のみとして、コピーすることは、読み出し要求１８２を用いてソースメモリ領域１６４からデータフラグメント(data fragments)をシーケンシャルに読み出すことと、書き込み要求１８４を用いて移動先メモリ領域１８０内へデータフラグメントを書き込むこととを含んでいてよい。このことはブロック２０４及び２０６内に示されている。コヒーレントメモリコピー論理１２４はまた、例えばメモリからのページであってよい領域１６４へ例えば書き込むためにソースメモリ１０６への書き込みを表示している任意のメモリクライアント１３０〜１２８からの書き込み要求１６２を複製して複製された書き込み要求１７０を生成し、これを移動先メモリ１０４内の対応する移動先メモリ領域１８０へ書き込むようにも動作する。このことはブロック２００内に示されている。線１６３は読み出しを表している。ブロック２０２内に示されるように、コヒーレントメモリコピー論理１２４はまた、複製された書き込み要求１７０を実行してソースメモリ１０６からの内容を移動先メモリ１０４内の移動先メモリ領域１８０へコピーするようにも動作する。リンク１７１は通常動作の間における読み出し及び書き込みを表している。全ての読み出し要求及び書き込み要求に対して、コピーエンジンとも称されるコピー論理１３４は、仮想アドレス（図１にＶＡで示される）又は物理アドレス（図１にＰＡで示される）のいずれかに対して動作することができる。メモリクライアント１２８〜１３０又はページコピー作業キュー１３２が物理アドレスを提供した場合には、コピー論理１３４は提供されたそれらの物理アドレスを用いる。メモリクライアント１２８〜１３０又はページコピー作業キュー１３２が仮想アドレスを提供する場合には、コピー論理１３４は仮想アドレスを物理アドレスへ翻訳する。当業者であれば、メモリ内の仮想アドレスと物理アドレスの間での翻訳を解釈するための多くの十分に発達し且つ理解されている方法を認識しているであろう。また、線１８６はソースメモリから情報を読み出すためのメモリクライアント要求を表しており、ソースメモリ１０６はクライアント読み出しとして参照される線１８８によって示される情報を提供する。この実施形態においては、コヒーレントメモリコピー論理１２４が外部メモリ１０６への連続的な書き込み及び読み出しのアクセスをもたらす一方でデータフラグメントをコピーするように動作し、ここでは、これらのフラグメントの合計は、ソース領域から移動先メモリ領域１８０へ、そのコピー機能の使用によって並びに複製された書き込み要求１７０の生成及び利用によって、１つ以上のメモリページを形成する。このことは、プロセッサ１０８上で実行中のアプリケーションの動作を停止させることなく行われる。
【００２５】
ソースメモリ１０６から移動先メモリ１０４へのメモリページのコヒーレントなコピーを実行するために、コヒーレントメモリコピー論理１２４が例えばプロセッサ１０８上で実行中のアプリケーションからページコピー作業キュー１３２を介して指令(command)を受信する。メモリページは、物理ベースのアドレスＰＡ−１に対応する図示されるような仮想ベースのアドレスＶＡ−１を有していてよい。代替的には、プロセッサ１０８が当該ページの物理ベースのアドレスＰＡ−１を提供してよい。プロセッサ１０８はまた、ページコピー作業キュー１３２を介して、コピーされることになる幾つかのページの基本アドレス（ＶＡ−１１，ＶＡ１１１，…等又はＰＡ−１１，ＰＡ−１１１，…等）を提供することができる。ソースメモリからコピーされるべき各メモリページに対して、プロセッサ１０８はまた、その時点でソースメモリ内にあるデータをコヒーレントコピーエンジンがコピーすることになる移動先メモリ領域のいずれかの基本アドレスを提供する。移動先メモリ領域の基本アドレスは、物理的アドレス（ＰＡ−２）又は仮想アドレス（ＶＡ−２）のいずれかであり得る。指令のこの受信はまた、ページコピー作業キュー１３２内のキューを介して又は単純なレジスタベースの指令を介して起こり得る。コピーフローエンジン１３８は、ページコピー作業キュー１３２の内容を読み出し、そして適切なバス１５６を介してコピー論理１３４へコピー指令を発行する。コピー論理１３４は、コピー動作の間にコヒーレンシを維持しつつ、その基本アドレスがＰＡ−１であるページをコピーし、そしてそれを基本アドレスがＰＡ−２であるページへ書き込む。ページコピー動作の間、コヒーレンシは全てのクライアントブロックに対して明白(transparent)であるように維持されるべきである。このことは以下に更に説明される。
【００２６】
追加的に又は随意的に、仮想アドレスと物理アドレスの間で翻訳することができる又は１つの物理アドレスと他の物理アドレスの間で翻訳することができる内部メモリ翻訳ルックアサイドバッファ１３６が用いられてもよい。例えば、外部メモリ又はソースメモリ内に仮想ページから物理ページへの翻訳テーブルが記憶されている場合には、要求されたページが内部メモリへ転送された後であっても、外部メモリは仮想アドレスから物理アドレスへの翻訳のためにメモリアクセスユニットにとってアクセス可能のままである必要があるから、課題(a challenge)がもたらされる。内部メモリのみが用いられるモード（ＩＭＯＭ）においては、内部メモリページのみのための内部メモリＴＢＬが用いられる。
【００２７】
図３を参照すると、内部メモリページが用いられるのを可能にするために内部メモリＴＬＢを維持すると共に電力を低減する方法は、ブロック３００内に示されるように、外部メモリ又はソースメモリからプロセッサ１０２の内部メモリへ動作を移すことを含む。ブロック３０２内に示されるように、この方法は、ソースメモリ１０６の電力を低減するのに先立ち、物理アドレスを含む外部ソースメモリ内の全体的な翻訳ルックアサイドバッファから内部翻訳ルックアサイドバッファへ情報の一部を記憶する（例えばコピーする）ことによって内部翻訳ルックアサイドバッファ１３６を生成することを含む。このことは、例えばコピー論理１３４によって行われてよい。メモリインタフェース１１０及び１１８は、内部ＴＬＢ１３６を用いて、内部メモリ内に記憶されるページだけに対してメモリクライアント１２８〜１３０からのアドレスを翻訳する。このことは、例えば、論理１４２として実行中のソフトウエアモジュールの制御下で行われてよい。内部メモリＴＬＢは、内部メモリのみモードに入るのに先立ち論理１４２によって構成されてよい。内部メモリＴＬＢの物理的サイズは、内部メモリのサイズの関数であるが、典型的には内部メモリのサイズよりも小さいオーダである。内部メモリＴＬＢは、従って、外部メモリ１０６の遮断による電源オフ及びこれに伴う電力節約を可能にする拡張可能な解決法(scalable solution)である。
【００２８】
ブロック３０４内に示されるように、方法は次に、外部メモリ１０６へのアクセスを停止して電力を低減することを含む。ソースメモリを低電力モードに置くことは、ソースメモリを自己リフレッシュモードに置くこと又はソースメモリから電力を排除することを含む。
【００２９】
アプリケーションによる更なる動作は、内部メモリ１０４の使用を通して単独で行われる。内部メモリＴＬＢ１３６は、内部メモリ１０４とは別個のＲＡＭのピースであってよく、あるいは内部メモリ１０４内のメモリの一部分であってよい。しかし、内部メモリ翻訳ルックアサイドバッファ１３６は、全体的な電力を低減するために、望ましくはＳＲＡＭ内にある。ブロック３０４内に示されるソースメモリ１０６へのアクセスの停止は、ソースメモリ１０６の電力消費の低減を可能にする。ソースメモリは次いで、当該分野において知られているように、低電力モードに置かれる。このことは、例えば、プロセッサ１０２若しくはプロセッサ１０８又は他の適切な電力制御モジュールによって行われてよい。内部メモリ翻訳ルックアサイドバッファ１３６は、２進の又はＭ進の検索ツリー(binary or M-ary search tree)によって作成されてよい。構造は、単純なハードウエアベースの手法を用いて検索することができる。Ｍ値の検索ツリーは、幅の広いＲＡＭインタフェースの利益を享受して検索時間を短縮することができる。代替的には、ＩＭ＿ＴＬＢ１３６はハッシュテーブル(hash table)であってよい。内部メモリモードにある場合のみ、内部メモリインタフェース１１０は、入ってくるトランザクションのアドレスを提供することによって検索指令をＴＬＢへ発行する。内部メモリＴＬＢ１３６は、その内容の検索を実行し、そして対応するアドレスを内部メモリ１０４内へ返送する。しかし、ハッシュ検索方法を用いることの１つのそれほど望ましくない結果は、ハッシュテーブル内での衝突(collision)であろう。そのような衝突は、長い検索期間を生み出すことがあり、また場合によってはテーブルの実際の構造を複雑にすることがある。従って、検索ツリー手法がより望ましいであろう。
【００３０】
書き込み要求を複製すること及びそれに関連するコヒーレントメモリコピー論理１２４の動作を再び参照して、図４〜７について言及する。図５は、ソース読み出し制御器５００と、ソース読み出し制御器に結合される係属中(pending)データキュー５０２と、係属中データキュー及びソース読み出し制御器に結合されるコピー読み出し制御器５０４と、外部ソースメモリインタフェース１１６、コピー書き込み制御器５０８及び内部メモリインタフェース１１０に結合される入力要求ルータ５０６とを含むコピー論理１３４の１つの例を示している。入力要求ルータ５０６は、コピー論理１３４の外部の要求、例えばコピー論理１３４の外にあるメモリクライアント１２８〜１３０からの読み出し要求又は書き込み要求を処理し、そして５１０及び５１２のような適切なバスを用いて読み出し応答を提供する。係属中データキュー５０２は、データキューエントリ５１６として構成されるメモリを含む。データキューエントリの各々は、読み出しデータ５１８、準備完了フラグ(ready flag)５２０、ソースアドレス５２２、移動先アドレス５２４、及び読み出し破棄フラグ(read discard flag)５２６を表すデータを含んでいる。
【００３１】
図１、４及び５を再び参照して、外部メモリのようなソースメモリ及び移動先メモリ領域又は内部メモリ１０４のような移動先メモリからの内容を転送するための方法を説明する。ブロック４００内に示されるように、ページコピー作業キュー１３２内に任意のエントリが存在するかどうかに関して決定がなされる。このことは、例えばコピーフローエンジン１３８によってなされてよい。ページコピー作業キュー１３２内にエントリが係属していない場合には、プロセスは、ページコピー作業キュー１３２内に係属することになるソースメモリロケーションから移動先ロケーションへのコピー要求、例えばページコピー要求を待つことを含む。このことはブロック４０２内に示されている。ページコピー要求がページコピー作業キュー１３２内にある場合には、方法は、例えばエントリをキューからデキューすること(dequeuing)によって要求を処理することを含む。ページコピー作業キュー１３２内のエントリは、移動先開始アドレス、ソース開始アドレス、ページの長さ及びストライド(page length and stride)を含んでいてよい。このことはブロック４０４内に示されている。このプロセスはまた、移動先アドレスカウンタを開始移動先アドレスに設定することと、ソースアドレスカウンタを開始ソースアドレスに設定することと、最終ソースアドレスを開始ソースアドレス及びページ長さの和に設定することとを含んでいてよい。このことは、例えば、コピー読み出し制御器５０４においてこれらのカウンタの値をコピーフローエンジン１３８に設定させることによって行われてよい。上述のエントリ情報に加えて、エントリはまた、所望に応じて読み出し要求毎に幾つかの読み出しを含んでいてもよい。
【００３２】
ブロック４０６内に示されるように、方法は、ソースアドレスカウンタが最終ソースアドレスカウンタに等しいかどうかを決定することを含む。このことはコピー読み出し制御器５０４によって行われてよい。ソースアドレスカウンタが最終ソースアドレスに等しい場合には、方法は、ブロック４０８内に示されるように、係属中データキューが空になるのを待つことを含む。一旦空になると、方法は、ブロック４１０内に示されるように、コピー作業キュー１３２を更新することを含む。このことは、コピー論理１３４によるコピー完了が通知されるとすぐにコピーフローエンジン１３８によって行われてよい。４１０内に同様に示されるように、方法は、移動先メモリ内のページの新たなロケーションでソースメモリ内の翻訳ルックアサイドバッファを更新することを含む。この動作は、コピーフローエンジン１３８によって又はプロセッサ１０８によって行われてよい。
【００３３】
ブロック４０６を再び参照すると、ソースアドレスカウンタが最終ソースアドレスに等しくない場合には、方法は、ブロック４１２内に示されるように係属中データキュー５０２が埋まっているかどうかを決定することを含む。係属中データキュー５０２が埋まっている場合には、方法は、ブロック４１４内に示されるように、係属中データキューが埋まっていなくなるのを待つことを含む。係属中データキュー５０２が埋まっていない場合には、ブロック４１６内に示されるように、方法は、係属中データキュー内の次の空のエントリの数、例えばキュー書き込みスロット数を得ることを含む。このことはコピー読み出し制御器５０４によって実行されてよい。ブロック４１８内に示されるように、方法は、書き込みスロット数として知られる数によって標識付けられるキューエントリでの係属中データキュー５０２内に、ソースアドレスカウンタに等しくなるソースアドレス、移動先アドレスカウンタに等しくなる移動先アドレス、無効に設定されることになる準備完了フラッグ、及び無効に設定された読み出し破棄フラグを挿入することを含む。ブロック４２０内に示されるように、方法は、ストライド量によってソースアドレスカウンタをインクリメントすることと、ストライドによって移動先アドレスカウンタをインクリメントすることとを含む。ブロック４１８及び４２０は、例えば、コピーフローエンジン１３８によって、そしてより特定的にはコピー読み出し制御器５０４によって実行されてよい。プロセスは次いでブロック４０６へ続く。
【００３４】
また、方法は、ブロック４２２内に示されるように、係属中データキュー内の次の空エントリの数、書き込みスロット数を得た後に、読み出し要求を特定のパラメータと共にソース読み出し制御器５００へ発行することを含む。これらのパラメータは、ソースアドレスカウンタ、ストライド及びキュー書き込みスロット数に等しくなる読み出しアドレスを含む。ブロック４２４内に示されるように、方法はまた、ソースメモリ１０６から返送する読み出しデータを待つことを含む。このことは、例えばソース読み出し制御器５００によって行われてよい。ブロック４２６内に示されるように、方法は、読み出し破棄フラグが有効であるかどうかをキュー書き込みスロット数に対して決定することを含む。読み出し破棄フラグが有効である場合には、方法は、ブロック４２８内に示されるように、対応するキュー書き込みスロット数での準備完了フラグを有効に設定することを含む。一方、読み出し破棄フラグが有効でない場合には、方法は、ブロック４３０内に示されるように、キュー書き込みスロット数によって識別されるエントリでの係属中データキュー内の読み出しデータフィールドへ読み出しデータをソースメモリから書き込むことを含む。このプロセスは次いでブロック４２８へ続く。
【００３５】
図６を参照して、図４において概説されたコピー動作を実行しつつソースメモリ及び移動先メモリの両方において内容のコヒーレントな表示(coherent view)を維持する方法を説明する。ブロック６００内に示されるように、読み出し要求又は書き込み要求が一旦コピーエンジン１３４の外部から受信されると、方法は、ブロック６０２内に示されるように、要求が読み出し要求であるかどうかを決定することを含む。この決定は、入力要求ルータ５０６によって実行されてよい。読み出し要求である場合には、ブロック６０４内に示されるように、その読み出し要求は、適切なメモリインタフェース、内部又は外部のいずれかのメモリインタフェースへ経路付けられる。この例では、全てのメモリアクセス要求はコピー論理１３４を通過し、それらは入力要求ルータ５０６によって検査され、そしてアドレスロケーションが、その時点でコピーされつつある領域と比較される。
【００３６】
入力要求ルータ５０６は、要求が書き込み要求であるブロック６０６内に示されるように、メモリ書き込み要求を傍受する(intercepts)。入力要求ルータ５０６は、内部移動先メモリ領域へコピーされつつある外部メモリ領域（又はソース領域）に対するメモリ書き込み要求を傍受する。その時点でコピーされつつある領域に対して書き込み要求が向かうことになっていない場合には、ブロック６０８内に示されるように、書き込み要求は適切なメモリインタフェースへ経路付けられる。傍受されるメモリ要求は、ソースメモリから移動先メモリへコピーされつつある領域に対して傍受されるものである。従って、ブロック６１０内に示されるように、その時点でコピーされつつある領域に対して書き込み要求が向かうことになっている場合には、方法は、ソースメモリへの書き込み要求、即ち書き込みコピー要求１６２を送信することを含む。従って、元の書き込み要求はソースメモリへ送信される。入力要求ルータ５０６は、複製書き込み要求が必要とされていることを表示しているコピー書き込み制御器５０８へデータ５５０を供給する。ブロック６２０内に示されるように、方法は、その準備完了フラグがゼロに設定されている係属中データキュー内のエントリのソースアドレスと書き込み要求のアドレスが等しいかどうかを決定することを含むある種のインフライト動作(in flight operation)コヒーレンスチェックを含む。等しくない場合には、方法は、ブロック６２２内に示されるように、コピー書き込み制御器５０８によって書き込み要求のコピーを移動先メモリへ１７０で示されるように送信することを含む。
【００３７】
書き込み要求のアドレスが係属中データキュー内のエントリのソースアドレスと等しい場合には、方法はブロック６２４内に示されるように続き、ブロック６２４においては、コピー書き込み制御器が、書き込み動作のソースアドレスに対応する係属中データキュー５０２内のエントリ数を識別する。ブロック６２６内に示されるように、方法は、係属中データキュー内の識別されたエントリ数の読み出しデータフィールドへ書き込み要求のデータを書き込むことを含み、このことはコピー書き込み制御器５０８によって実施される。ブロック６２８内に示されるように、方法は、コピー書き込み論理５０８が、係属中データキュー内の識別されたエントリ数の信号５５２を介して読み出し破棄フラグを有効に設定することを含む。従って、ソース読み出し制御器は、当該エントリに対して係属中データキュー内へ書き込むことができないようにされている。図７はこの実施形態ではコピー書き込み論理５０８によって実施されてよい係属中データキュー５０２からデータを除去するための方法の１つの例を示している。ブロック７００内に示されるように、方法は、有効に設定されている準備完了フラグを係属中データキュー５０２内のエントリが有することになるまで待機することを含む。ブロック７０２内に示されるように、方法は、キューエントリの読み出しデータフィールドからのデータを有効な準備完了フラグと共に移動先メモリへ書き込むことを含む。このことは、例えば、有効な準備完了フラグを伴うキューエントリの移動先アドレスフィールドと等しくなるように移動先メモリ内にアドレスを書き込むことを含む。ブロック７０４内に示されるように、方法は、エントリの準備完了フラグを無効として標識付けることと、読み出し破棄フラグを無効として標識付けることとを含む。プロセスは次いで、係属中データキュー内にデータがあるときはいつでも繰り返されてよい。
【００３８】
別の言い方をすれば、通常の動作の間には、コピー読み出し制御器５０４は、ソースメモリロケーションへ読み出しを発行し、そして無効に設定されている準備完了フラグ５２０及び無効に設定されている読み出し破棄フラグ５２６と共に当該要求を係属中データキュー５０２内の待ち行列に入れる(queues)。外部メモリ１０６は典型的には長い待ち時間(latency)を有している。待ち時間の後、外部メモリインタフェース１１６は、発行された読み出し要求からの読み出し結果を返送する。ソース読み出し制御器５００は、読み出し動作から到着したデータを係属中データキュー内へ書き込み、そして準備完了フラグ５２０を有効に設定する。コピー書き込み制御器５０８は、有効にされた準備完了フラグを有する係属中データキュー内のエントリを見出し、その結果、コピー書き込み制御器５０８は、係属中キュー内のエントリ内にあるデータを移動先メモリへ書き込む。
【００３９】
コヒーレンシを促進するために、コピー読み出し制御器５０４は、ソースメモリロケーションへ読み出しを発行し、そして当該要求を係属中データキュー５０２内の待ち行列に入れる。外部メモリは、前述したように長い待ち時間を有している。外部メモリからデータが戻る前に、同じメモリロケーションを対象として入力要求ルータ５０６内へ新たな書き込み動作が到着した場合には、入力要求ルータ５０６は、当該書き込み要求を複製してそれをデータ５５０としてコピー書き込み制御器５０８へ送信する。コピー書き込み制御器５０８は、係属中データキュー５０２を検索し、そして同じロケーションに対する外部ソースメモリからの係属中読み出しがあるかどうかを決定する。係属中データキュー５０２内のエントリのソースアドレスが複製された書き込み要求のソースアドレスと一致する場合には、コピー書き込み制御器５０８は、複製された書き込み要求に含まれるデータを当該エントリの読み出しデータフィールド５１８内へ置き、また係属中データキュー５０２内の当該エントリの読み出し破棄フラグ５２６を有効に設定し、その結果、後で読み出し結果がソースメモリから到着するときに、古くなったデータ(stale data)の係属中データキューエントリ内への書き込みをトリガーすることはない。外部メモリインタフェースが読み出し要求の結果として読み出し情報を受信した場合においては、読み出し破棄フラグ５２６が有効でないときにのみ、読み出しデータが係属中データキュー内へ書き込まれる。外部メモリインタフェースが読み出し要求の結果として読み出し情報を受信した場合、読み出し破棄フラグ５２６の値にかかわらず準備完了フラグが有効に設定される。ソース読み出し制御器からの古くなったデータが係属中データキュー５０２内のいかなる複製データをも上書きしなかったことが保証された状態で、コピー書き込み制御器は、有効に設定された準備完了フラグを有している係属中データキュー内のエントリを見出し、そしてその準備完了フラグ５２０が有効である当該係属中データキューからデータを書き込む。最新のエントリはその時点でデータを保持しておらず、従ってコピー読み出し制御器５０４によって再使用されるために利用可能である。このように、コピー書き込み論理は、傍受されたメモリ書き込み要求のアドレスを係属中データキュー内の全てのエントリのアドレスと比較してコピーコヒーレンシを促進するように動作する。係属中データキュー５０２は、コピー書き込み論理５０８が係属中データキュー５０２からのデータを移動先メモリ領域へコピーすることが可能になる時まで、外部メモリ領域即ちソースメモリ領域からコピーされたデータ及び当該エントリーイン(entry in)を表すデータを一時的に記憶する。コピーされるべきデータを一時的に記憶するためのバッファの一種として係属中データキュー５０２を用いるのとは対照的に、係属中データキュー内の一時的記憶を必要としない移動先メモリへのデータの即時的な書き込みを用いることができるが、読み出し破棄フラグはこの場合にも用いられる。コヒーレンシを促進するための代替的な方法においては、コピー読み出し制御器５０４がソースメモリロケーションへ読み出しを発行し、そして当該要求を係属中��ータキュー５０２内の待ち行列に入れる。外部メモリは前述したように長い待ち時間を有する。外部メモリからデータが戻る前に、同じメモリロケーションを対象として入力要求ルータ５０６内へ新たな書き込み動作が到着した場合には、入力要求ルータ５０６は、当該書き込み要求を複製してそれをデータ５５０としてコピー書き込み制御器５０８と１６２で示されるソースメモリインタフェースとに送信する。コピー書き込み制御器５０８は次いで、複製された書き込み１７０を移動先即ち内部メモリインタフェース１１０へ送信する。コピー書き込み制御器５０８はまた、係属中データキュー５０２を検索し、そして同じロケーションに対して外部ソースメモリからの係属中読み出しがあるかどうかを決定する。コピー書き込み制御器５０８は、係属中データキュー５０２内の当該エントリの読み出し破棄フラグ５２６を有効に設定し、その結果、後で読み出し結果がソースメモリから入って来るときに、古くなったデータの移動先メモリ１０４内への書き込みをトリガーすることはない。外部メモリインタフェースが読み出し要求の結果として読み出し情報を受信する場合、読み出し破棄フラグ５２６の値にかかわらず読み出しフラグは有効に設定される。コピー書き込み制御器は、有効に設定された準備完了フラグ及び同じく有効に設定された読み出し破棄フラグを有している係属中データキュー内のエントリを見出す。このことは、複製書き込みが既に内部移動先メモリに対して実行されており、従って係属中データキューのエントリ内のデータが古くなっていることを意味する。その結果、コピー書き込み制御器５０８は、係属中データキューの上記エントリのデータを破棄し、そして準備完了フラグ５２０及び読み出し破棄フラグ５２６をリセットする。最新のエントリはその時点でデータを保持しておらず、そしてコピー読み出し制御器５０４によって再使用されるために利用可能である。従って、コピー書き込み論理は、傍受されたメモリ書き込み要求のアドレスを係属中データキュー内の全てのエントリのアドレスと比較してコピーコヒーレンシを促進するように動作する。係属中データキュー５０２は、コピー書き込み論理５０８が係属中データキュー５０２からのデータを移動先メモリ領域へコピーすることが可能になる時まで、又はその読み出し破棄フラグ５２６が設定されており且つその準備完了フラグ５２０も設定されているエントリを表すデータを破棄することが可能になる時まで、外部メモリ領域即ちソースメモリ領域からコピーされたデータ及び当該エントリを表すデータを一時的に記憶する。
【００４０】
上述したように、コピー書き込み論理５０８は、複製された書き込み要求を作成することに基き、書き込み要求と同じアドレスに対応しているソースメモリに対する係属中読み出し要求があるかどうかを係属中データキューから決定するように動作し、係属中読み出し要求がある場合には、破棄フラグがエントリに対して有効に設定される。
【００４１】
コヒーレントメモリコピー論理は、複写書き込みを即時的に実行するように動作し、あるいはコピー書き込み論理が複写書き込みからのデータを係属中データキュー内に挿入する。また、データをコピーする場合、コピーすることは、（ａ）準備完了フラグが有効であり且つ破棄フラグが無効であり且つ移動先メモリ領域へ書き込んでいる場合、又は（ｂ）準備完了フラグが有効であり且つ読み出し破棄フラグが有効であり且つ複製書き込みの既存内容が係属中データキュー内に既にあった場合のいずれかの場合に係属中データキューからエントリを読み出すことを含んでいる。
【００４２】
部分的内部メモリのみモードが採用されてもよく、この場合、内部メモリが小さすぎるであろうという理由で、内部メモリ内へ移動させることが必要な全てのページを例えばソフトウエアアプリケーションが移動させることができないかもしれない。この場合、最も頻繁に用いられる複数のページを内部メモリ内へ移動させることによって、外部メモリ使用はやはりまた低減され得る。この部分的内部メモリのみモードにおいては、プロセッサ１０８によって頻繁にアクセスされるメモリページが内部メモリ内へ入れられる。これにより、プロセッサに対するアクセス待ち時間を減少させることができる一方で、外部メモリへのアクセス数を低減することができる。従って、方法は、どのメモリページが他よりも頻繁にプロセッサによってアクセスされているかを決定することを含んでいてよく、このことは、例えばプロセッサ１０８上で実行されるソフトウエアを用いると共に、より頻繁に用いられるメモリページを内部移動先メモリへコピーすることによって行われてよい。また、方法は、外部ソースメモリ内にある外部翻訳ルックアサイドバッファ（外部ＴＬＢ）からの情報の一部を記憶することによって内部翻訳ルックアサイドバッファ（内部ＴＬＢ）を作成することと、外部ＴＬＢを検索する前に内部ＴＬＢを検索してアドレス翻訳を決定することとを含む。仮想から物理への翻訳は種々の方法において実行され得る。１つの選択肢は、アドレス翻訳のために外部メモリページテーブルを用いることである。他の選択肢は、内部メモリ翻訳ルックアサイドバッファ及び外部メモリページテーブルの両方を用いることである。この選択肢が採用される場合、内部メモリＴＬＢが先ず検索される。必要な翻訳を内部メモリＴＬＢが含んでいない場合には、検索を実行するために外部メモリページテーブルが用いられる。
【００４３】
ＣＰＵ上で実行されるソフトウエアモジュールは、使用事例に基く先見的な方法(apriori manner)での内部メモリ内の記憶のための良好な候補であるページを識別することができる。代替的には、所与の期間内に最も使用されたメモリページを識別し且つカウントするために、動的ページ履歴バッファ（図示せず）がメモリ制御器ブロック１２２内に配置されてよい。論理又は実行中のソフトウエアモジュール１４２は次いで、ページ履歴バッファの内容を用いてコヒーレントメモリコピー論理へのコピー動作を発行するために用いられてよい。
【００４４】
所望に応じてバッチ動作が用いられ得るように、ページコピー作業キューが循環バッファであれば便利であろう。コヒーレントメモリコピー論理はまた、ソフトウエア層を通知する前に種々のページをシーケンシャルな様態でコピーすることもできる。所望に応じて多重ページを並列してコピーすることが実施されてもよく、またアプリケーションによっては、バースト読み出し又はバースト書き込みを実行することが望ましいかもしれない。
【００４５】
上述したように、メモリ内容を再配分するための方法は、外部ソースメモリ領域への連続的な読み出し及び書き込みアクセスを提供する一方で例えば外部ソースメモリ領域に対するメモリ書き込みをもたらす現在のアプリケーションを実行し続けることによって外部ソースメモリ領域からデータをコピーすることを含んでいる。アプリケーションが実行中の一方で、方法は、外部ソースメモリ領域に対する書き込み要求を複製して複製された書き込み要求を作成することを含んでいる。方法は、複製された書き込み要求を実行して外部ソースメモリからの内容を内部移動先メモリ領域へコピーすることを含んでいる。方法はまた、内部移動先メモリ領域へ内容をコピーすることに応答して外部メモリ領域を含む外部メモリの電力を低減することとを含んでいる。当業者によって理解されるであろうように、携帯型デバイス又は可搬型デバイスの例示的な実施形態がこれまで説明された一方で、本発明の実施形態は、ノートブック及びノートブックコンピュータ、ゲームコンソール、他の可搬型デバイス（例えば可搬型ゲームシステム）、デスクトップ、ワークステーション及びサーバコンピュータその他のものを含み得る。
【００４６】
また、限定はされないがＣＤＲＯＭ、ＲＡＭ、ＲＯＭの他の形態、ハードドライブ、分散型メモリ等のようなコンピュータ可読メモリに記憶された実行可能な命令に基いて集積回路を作り出す集積回路設計システム（例えばワークステーション）が知られている。命令は、限定はされないがハードウエア記述言語又は他の適切な言語のような任意の適切な言語によって表されてよい。従って、ここに説明される論理（例えば回路）は、そのようなシステムによって集積回路として製造されてもよい。例えば、コンピュータ可読媒体に記憶される命令を用いて、ディスプレイ内で使用される集積回路が作り出されてよく、その命令は、実行されるときに、集積回路設計システムに、多重刺激色空間(multi-stimulus color space)内で受け取られることになるワイドガマット(wide gamut)ＲＧＢ色データに対するワイドガマットＲＧＢ表示情報及びワイドガマット色フォーマット定義情報を画像ソースプロバイダに示し、画像ソースプロバイダからワイドガマット確認情報を受け取り、そしてワイドガマットＲＧＢ表示情報及びフォーマット定義情報に応答して受け取られた受信ワイドガマットＲＧＢ色データを表示するように動作する集積回路を作り出すことをさせる。ここに説明される他の動作を実行する論理を有する集積回路が適切に製造されてもよい。
【００４７】
メモリコピー動作の一部としてメモリ内容のコヒーレンシを提供する新しい種類のＤＭＡ論理及び方法が説明されてきた。本発明の上述した詳細な説明及びそこで説明される例は、例示及び説明のみを目的として提示されたものであり、限定によるものではない。従って、本発明は、上記で開示され且つここに請求される基本的な内在する原理の精神及び範囲内に含まれる任意のまた全ての修正、変更又は均等なものに及ぶことが意図されている。
【図１】
2015122113.tif 000003
【図２】
2015122113.tif 000004
【図３】
2015122113.tif 000005
【図４】
2015122113.tif 000006
【図５】
2015122113.tif 000007
【図６】
2015122113.tif 000008
【図７】
2015122113.tif 000009