(57)【要約】  メモリをデフラグするシステムおよび方法が開示される。特定の実施形態では、方法は、メモリの第1の物理メモリアドレスに記憶されたデータをメモリからデータキャッシュのキャッシュラインにロードするステップを含む。第1の物理メモリアドレスは、第1の仮想メモリアドレスにマップされる。方法は、第1の仮想メモリアドレスがメモリの第2の物理メモリアドレスに対応するように、データキャッシュにおいて、第1の仮想メモリアドレスに関連付けられたルックアップ情報の修正を開始するステップをさらに含む。方法は、キャッシュラインが第1の物理メモリアドレスではなく第2の物理メモリアドレスに対応することを示すように、データキャッシュにおいて、キャッシュラインに関連付けられた情報を修正するステップも含む。
2017501504.tif 000002
【特許請求の範囲】
【請求項１】
メモリの第1の物理メモリアドレスに記憶されたデータを前記メモリからデータキャッシュのキャッシュラインにロードするステップであって、前記第1の物理メモリアドレスが第1の仮想メモリアドレスにマップされる、ステップと、
前記第1の仮想メモリアドレスが前記メモリの第2の物理メモリアドレスに対応するように、前記データキャッシュにおいて、前記第1の仮想メモリアドレスに関連付けられたルックアップ情報の修正を開始するステップと、
前記キャッシュラインが前記第1の物理メモリアドレスではなく前記第2の物理メモリアドレスに対応することを示すように、前記データキャッシュにおいて、前記キャッシュラインに関連付けられた情報を修正するステップと
を備える方法。
【請求項２】
前記データキャッシュにおいて、デフラグ動作を実行するための要求をプロセッサから受信するステップと、
前記データが前記データキャッシュから追い出されるとき、前記修正された情報に基づいて、前記データを前記第2の物理メモリアドレスに書き込むステップと、
前記データを前記第2の物理メモリアドレスに書き込んだ後に応答を前記プロセッサに送るステップであって、前記応答が、前記デフラグ動作が完了したことを示す、ステップと
をさらに備える、請求項1に記載の方法。
【請求項３】
前記要求が、ロードおよび再マップ命令に応答して受信され、前記プロセッサの命令セットが、前記ロードおよび再マップ命令を含む、請求項2に記載の方法。
【請求項４】
前記メモリがページに編成され、前記メモリのページが前記キャッシュの複数のセットにまたがり、前記キャッシュが各ページについての複数のセグメントを含み、前記方法が、
前記第1の物理メモリアドレスがキャッシュヒットを生じたとき、前記データを前記第1の物理アドレスに対応する前記キャッシュの第1のセグメントから前記第2の物理アドレスに対応する前記キャッシュの第2のセグメントにロードするステップと、
前記第1の物理メモリアドレスがキャッシュミスを生じたとき、前記データを前記メモリから前記第2の物理アドレスに対応する前記第2のセグメントにロードするステップと
をさらに備える、請求項1に記載の方法。
【請求項５】
前記キャッシュラインに関連付けられた前記情報を修正するステップが、前記キャッシュラインに関連付けられたタグアレイ中のタグ情報を修正するステップを備える、請求項1に記載の方法。
【請求項６】
前記キャッシュラインに関連付けられた前記情報を修正するステップが、前記第1の物理メモリアドレスに対応するタグアレイ中の第1のタグ情報を前記第2の物理メモリアドレスに対応する第2のタグ情報で上書きするステップを備える、請求項1に記載の方法。
【請求項７】
前記第2の物理メモリアドレスへの前記データの書込みをトリガするステップをさらに備える、請求項1に記載の方法。
【請求項８】
前記第2の物理メモリアドレスへの前記データの前記書込みをトリガするステップが、前記キャッシュラインをダーティとしてマークするステップを備える、請求項7に記載の方法。
【請求項９】
前記第1の物理メモリアドレスがメモリフラグメントに対応し、前記第2の物理メモリアドレスがデフラグ宛先に対応する、請求項1に記載の方法。
【請求項１０】
前記デフラグ宛先が、データを記憶する物理アドレスの間に配置された、前記メモリ中のフリー物理アドレスに対応する、請求項9に記載の方法。
【請求項１１】
前記データを前記キャッシュラインから第2のキャッシュラインにコピーするステップと、
前記キャッシュラインを無効化するステップであって、前記キャッシュラインが前記メモリの第1のセグメントに関連付けられ、前記第2のキャッシュラインが前記メモリの第2のセグメントに関連付けられる、ステップと
をさらに備える、請求項1に記載の方法。
【請求項１２】
電力を前記第1の物理メモリアドレスを含むダイナミックランダムアクセス(DRAM)の一部分に低減することを含むパーシャルアレイセルフリフレッシュモードに入るステップをさらに備える、請求項1に記載の方法。
【請求項１３】
前記第1の仮想メモリアドレスを前記第2の物理メモリアドレスにマップするために、仮想メモリに関連付けられたページテーブルを修正するステップをさらに備える、請求項1に記載の方法。
【請求項１４】
前記メモリの第3の物理メモリアドレスに記憶された第2のデータを前記メモリから前記データキャッシュの第2のキャッシュラインにロードするステップであって、前記第3の物理メモリアドレスが第3の仮想メモリアドレスにマップされる、ステップと、
前記第2のキャッシュラインが前記第3の物理メモリアドレスではなく第4の物理メモリアドレスに対応することを示すように、前記データキャッシュにおいて、前記第2のキャッシュラインに関連付けられた情報を修正するステップと、
前記修正された情報に基づいて、前記第2のデータを前記第4の物理メモリアドレスに書き込むステップと
をさらに備える、請求項1に記載の方法。
【請求項１５】
前記メモリのページに対応する第1の複数の追加の物理メモリアドレスの各々に記憶された追加のデータを前記データキャッシュの追加のキャッシュラインにロードするステップと、
各追加のキャッシュラインが前記第1の複数の追加の物理メモリアドレスではなく第2の複数の追加の物理メモリアドレスのそれぞれの物理メモリアドレスに対応することを示すように、前記データキャッシュにおいて、前記追加のキャッシュラインの各々に関連付けられた追加の情報を修正するステップと、
前記修正された追加の情報に基づいて、前記追加のデータを前記第2の複数の追加の物理メモリアドレスに書き込むステップと
をさらに備える、請求項1に記載の方法。
【請求項１６】
前記キャッシュに関連付けられた前記情報を修正するステップが、電子デバイスに統合されたプロセッサによって開始される、請求項1に記載の方法。
【請求項１７】
複数の物理メモリアドレスを備えるメモリと、
メモリデフラグ動作を実行するように構成されたデフラグ回路を含むデータキャッシュとを備え、前記メモリデフラグ動作が、
前記メモリの第1の物理メモリアドレスに記憶されたデータを前記メモリから前記データキャッシュのキャッシュラインにロードするステップであって、前記第1の物理メモリアドレスが第1の仮想メモリアドレスにマップされる、ステップと、
前記第1の仮想メモリアドレスが前記メモリの第2の物理メモリアドレスに対応するように、前記第1の仮想メモリアドレスに関連付けられたルックアップ情報の修正を開始するステップと、
前記キャッシュラインが前記第1の物理メモリアドレスではなく前記第2の物理メモリアドレスに対応することを示すように、前記キャッシュラインに関連付けられた情報を修正するステップと
を備える、システム。
【請求項１８】
プロセッサをさらに備え、前記データキャッシュが、前記メモリデフラグ動作を実行するための要求を前記プロセッサから受信し、前記メモリデフラグ動作が完了したことを示す応答を前記プロセッサに送るようにさらに構成される、請求項17に記載のシステム。
【請求項１９】
前記応答が割込み信号を含み、前記プロセッサが前記デフラグ動作に無関係な動作を実行する間に、前記キャッシュが前記デフラグ動作を実行する、請求項18に記載のシステム。
【請求項２０】
前記データの前記メモリから前記キャッシュへの前記ローディングが、前記要求に応答したものである、請求項18に記載のシステム。
【請求項２１】
前記メモリから前記キャッシュへの前記データの前記ローディングが、ロードおよび再マップ命令より前に前記プロセッサから受信されたデータ要求に応答したものである、請求項18に記載のシステム。
【請求項２２】
少なくとも1つの追加のキャッシュをさらに備え、前記データキャッシュがメインメモリと第2のレベルキャッシュとの間で結合されたラストレベルキャッシュである、請求項17に記載のシステム。
【請求項２３】
前記データキャッシュが、メインメモリとプロセッサとの間で結合された専用デフラグキャッシュを備える、請求項17に記載のシステム。
【請求項２４】
少なくとも1つのダイに統合された、請求項17に記載のシステム。
【請求項２５】
前記メモリおよび前記データキャッシュが統合される、モバイルフォン、タブレット、コンピュータ、通信デバイス、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、携帯情報端末(PDA)、および固定ロケーションデータユニットから選択された電子デバイスをさらに備える、請求項17に記載のシステム。
【請求項２６】
プロセッサによって実行されると、前記プロセッサに、
メモリの第1の物理メモリアドレスに記憶されたデータを前記メモリからデータキャッシュのキャッシュラインにロードするステップであって、前記第1の物理メモリアドレスが第1の仮想メモリアドレスにマップされる、ステップと、
前記第1の仮想メモリアドレスが前記メモリの第2の物理メモリアドレスに対応するように、前記第1の仮想メモリアドレスに関連付けられたルックアップ情報の修正を開始するステップと、
前記キャッシュラインが前記第1の物理メモリアドレスではなく前記第2の物理メモリアドレスに対応することを示すように、前記キャッシュラインに関連付けられた情報を修正するステップと
を備える動作を実行させる命令を備える非一時的コンピュータ可読媒体。
【請求項２７】
前記非一時的コンピュータ可読媒体が統合される、モバイルフォン、タブレット、コンピュータ、通信デバイス、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、携帯情報端末(PDA)、および固定ロケーションデータユニットから選択されたデバイスをさらに備える、請求項26に記載の非一時的コンピュータ可読媒体。
【請求項２８】
複数の物理メモリアドレスを使用してデータを記憶するための手段と、
データをキャッシュするための手段とを備え、前記データをキャッシュするための前記手段が、
メモリの第1の物理メモリアドレスに記憶されたデータを前記メモリからデータキャッシュのキャッシュラインにロードすることであって、前記第1の物理メモリアドレスが第1の仮想メモリアドレスにマップされる、ロードすることと、
前記第1の仮想メモリアドレスが前記メモリの第2の物理メモリアドレスに対応するように、前記第1の仮想メモリアドレスに関連付けられたルックアップ情報の修正を開始することと、
前記キャッシュラインが前記第1の物理メモリアドレスではなく前記第2の物理メモリアドレスに対応することを示すように、前記キャッシュラインに関連付けられた情報を修正することと
を行うように構成されたデフラグ回路を含む、システム。
【請求項２９】
少なくとも1つのダイに統合された、請求項28に記載のシステム。
【請求項３０】
データを記憶するための前記手段およびデータをキャッシュするための前記手段が統合される、モバイルフォン、タブレット、コンピュータ、通信デバイス、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、携帯情報端末(PDA)、および固定ロケーションデータユニットから選択されたデバイスをさらに備える、請求項29に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、その内容全体が参照により本明細書に明確に組み込まれる、同一出願人が所有する2014年1月2日に出願した米国非仮特許出願第14/146,576号の優先権を主張する。
【０００２】
本開示は一般に、メモリをデフラグすることに関する。
【背景技術】
【０００３】
技術の進歩の結果、コンピューティングデバイスはより小型でより強力になっている。たとえば、小型、軽量であり、ユーザによる持ち運びが容易な、ポータブルワイヤレス電話、携帯情報端末(PDA)、およびページングデバイスなどのワイヤレスコンピューティングデバイスを含む様々なポータブルパーソナルコンピューティングデバイスが現在存在している。より具体的には、セルラー電話およびインターネットプロトコル(IP)電話などのポータブルワイヤレス電話は、ワイヤレスネットワークを介して音声およびデータパケットを通信することができる。さらに、多くのそのようなワイヤレス電話は、その内部に組み込まれた他のタイプのデバイスを含む。たとえば、ワイヤレス電話は、デジタルスチールカメラ、デジタルビデオカメラ、デジタルレコーダ、およびオーディオファイルプレーヤも含むことができる。また、そのようなワイヤレス電話は、インターネットにアクセスするために使用され得るウェブブラウザアプリケーションなどのソフトウェアアプリケーションを含む実行可能命令を処理することができる。したがって、これらのワイヤレス電話は、かなりのコンピューティング能力を含むことができる。
【０００４】
コンピューティングデバイスは、中央処理ユニット(CPU)などのプロセッサを含み得る。現代のCPUは、仮想メモリ空間を使用し得る。CPUは、仮想から物理へのメモリアドレス変換を管理するためのメモリ管理ユニット(MMU)を含み得る。MMUは、物理メモリを割り振るためのアルゴリズムを使用し得る。時間とともに、割振りアルゴリズムはメモリフラグメントをもたらすことがある。メモリフラグメントの存在により、コンピューティングデバイスにおいていくつかの節電機能を適用することが困難になることがある。たとえば、ダイナミックランダムアクセスメモリ(DRAM)は、パーシャルアレイセルフリフレッシュ(PASR:partial array self-refresh)などの節電機能を利用し得る。PASRの間、DRAMの一部分を電源切断し得る。DRAMのより少ない部分が空であり、データを失う危険なしに電源切断することが可能であるので、メモリフラグメンテーションはPASRを無効化することがある。
【０００５】
フラグメンテーションが生じたときにPASRを有効にする1つの方法は、DRAMに記憶されたデータをデフラグすることである。DRAMをデフラグすることは、さらなる電力を節約するためのPASRなどの高度な節電機能を有効にし得る。しかしながら、メモリデフラグプロセスは通常、プロセッサがメモリ内で大量のデータ移動を実行することを伴う。データ移動は、メモリがデフラグされている間にプロセッサ性能の低下を引き起こすことがある。さらに、プロセッサがデータ移動を実行するために必要とされる電力は、PASRを使用することによって節約していた電力を超えることがある。
【発明の概要】
【課題を解決するための手段】
【０００６】
メモリをデフラグするシステムおよび方法は、キャッシュ管理の間に、デフラグに関連付けられたデータ移動を実行する。たとえば、オペレーティングシステムはデータフラグメントを検出し得る。オペレーティングシステムは、データフラグメント、たとえば、領域Aに記憶されたデータが、「ホール」、たとえば、領域B中のロケーションに再配置されるべきであると決定し得る。データフラグメントを検出したことに応答して、オペレーティングシステムはロードおよび再マップ命令をプロセッサに発行し得る。ロードおよび再マップ命令の実行の間、デフラグプロセスはキャッシュにおいて実行され得る。キャッシュは、データを領域Aからキャッシュにロードし得る。キャッシュは、キャッシュ内のデータをメモリ中のデータの物理アドレスにマップするために使用されるタグ情報を含み得る。キャッシュは、領域Aに関連付けられたデータが領域B中のロケーションの物理アドレスに再マップされるようにタグ情報を変更し得る。その後、再マップされたキャッシュラインが(たとえば、最長時間未使用(LRU)、最小使用頻度(LFU)、または先入れ先出し(FIFO:first-in-first-out)ポリシーなどのキャッシュ管理ポリシーに従って)キャッシュから追い出されると、再マップされたキャッシュラインは領域Aではなく領域B中のロケーションの物理アドレスに記憶され、それによって、キャッシュ管理の間にメモリをデフラグする。
【０００７】
特定の実施形態では、方法は、メモリの第1の物理メモリアドレスに記憶されたデータをデータキャッシュのキャッシュラインにロードするステップを含む。第1の物理メモリアドレスは、第1の仮想メモリアドレスにマップされる。方法は、第1の仮想メモリアドレスがメモリの第2の物理メモリアドレスに対応するように、データキャッシュにおいて、第1の仮想メモリアドレスに関連付けられたルックアップ情報の修正を開始するステップをさらに含む。方法は、キャッシュラインが第1の物理メモリアドレスではなく第2の物理メモリアドレスに対応することを示すように、データキャッシュにおいて、キャッシュラインに関連付けられた情報を修正するステップも含む。
【０００８】
別の特定の実施形態では、システムは、複数の物理メモリアドレスを含むメモリを含む。システムは、メモリデフラグ動作を実行するように構成されたデフラグ回路を含むデータキャッシュをさらに含む。デフラグ動作は、メモリの第1の物理メモリアドレスに記憶されたデータをメモリからデータキャッシュのキャッシュラインにロードすることを含む。第1の物理メモリアドレスは、第1の仮想メモリアドレスにマップされる。デフラグ動作は、第1の仮想メモリアドレスがメモリの第2の物理メモリアドレスに対応するように、第1の仮想メモリアドレスに関連付けられたルックアップ情報の修正を開始することも含む。デフラグ動作は、キャッシュラインが第1の物理メモリアドレスではなく第2の物理メモリアドレスに対応することを示すように、キャッシュラインに関連付けられた情報を修正することを含む。
【０００９】
別の特定の実施形態では、コンピュータ可読媒体は、プロセッサによって実行されると、プロセッサに動作を実行させる命令を含む。動作は、メモリの第1の物理メモリアドレスに記憶されたデータをデータキャッシュのキャッシュラインにロードすることを含む。第1の物理メモリアドレスは、第1の仮想メモリアドレスにマップされる。動作は、第1の仮想メモリアドレスがメモリの第2の物理メモリアドレスに対応するように、第1の仮想メモリアドレスに関連付けられたルックアップ情報の修正を開始することをさらに含む。動作は、キャッシュラインが第1の物理メモリアドレスではなく第2の物理メモリアドレスに対応することを示すように、キャッシュラインに関連付けられた情報を修正することも含む。
【００１０】
別の特定の実施形態では、システムは、複数の物理メモリアドレスを使用してデータを記憶するための手段を含み、システムは、データをキャッシュするための手段をさらに含む。データをキャッシュするための手段は、メモリの第1の物理メモリアドレスに記憶されたデータをメモリからデータキャッシュのキャッシュラインにロードするように構成されたデフラグ回路を含む。第1の物理メモリアドレスは、第1の仮想メモリアドレスにマップされる。デフラグ回路は、第1の仮想メモリアドレスがメモリの第2の物理メモリアドレスに対応するように、第1の仮想メモリアドレスに関連付けられたルックアップ情報の修正を開始するようにさらに構成される。デフラグ回路はまた、キャッシュラインが第1の物理メモリアドレスではなく第2の物理メモリアドレスに対応することを示すように、キャッシュラインに関連付けられた情報を修正するように構成される。
【００１１】
開示する実施形態のうちの少なくとも1つによって提供される1つの特定の利点は、メモリデフラグのためにのみデータ移動動作を実行する代わりに、メモリデフラグに関連付けられたデータ移動をキャッシュ管理に統合できることである。メモリデフラグに関連付けられたデータ移動をキャッシュ管理に統合することは、キャッシュがデフラグを実行する間に、プロセッサが他の動作を実行するかまたは節電モードに入ることを可能にし得る。
【００１２】
本開示の他の態様、利点、および特徴は、以下のセクション、すなわち、図面の簡単な説明、発明を実施するための形態、および特許請求の範囲を含む本出願全体の検討後に明らかになるであろう。
【図面の簡単な説明】
【００１３】
【図１】キャッシュベースのデフラグプロセスを実行するように動作可能なシステムの特定の例示的な実施形態のブロック図である。
【図２】キャッシュベースのデフラグプロセスの前後の図1のメモリの特定の例示的な実施形態を示す図である。
【図３Ａ】キャッシュベースのデフラグプロセスを実行するように動作可能なシステムの別の特定の例示的な実施形態のブロック図である。
【図３Ｂ】図3Aのシステムに対応するデフラグアドレス指定方式の特定の例示的な実施形態の図である。
【図４】図3Aのデフラグ回路によって実行されるキャッシュベースのデフラグ動作の第1の実施形態を示すブロック図である。
【図５】図3Aのデフラグ回路によって実行されるキャッシュベースのデフラグ動作の第2の実施形態を示すブロック図である。
【図６】図3Aのデフラグ回路によって実行されるキャッシュベースのデフラグ動作の第3の実施形態を示すブロック図である。
【図７】図3Aのデフラグ回路によって実行されるキャッシュベースのデフラグ動作の第4の実施形態を示すブロック図である。
【図８Ａ】キャッシュベースのデフラグプロセスを実行するように動作可能なシステムの別の特定の例示的な実施形態のブロック図である。
【図８Ｂ】図8Aのシステムに対応するデフラグアドレス指定方式の特定の例示的な実施形態の図である。
【図９】キャッシュベースのデフラグを実行する方法の特定の例示的な実施形態のフローチャートである。
【図１０】キャッシュベースのデフラグを実行する方法の別の特定の例示的な実施形態のフローチャートである。
【図１１】デフラグ回路を有するデータキャッシュを含むポータブルデバイスのブロック図である。
【図１２】デフラグ回路を有するデータキャッシュを含む電子デバイスを製造するための製造プロセスの特定の例示的な実施形態のデータフロー図である。
【発明を実施するための形態】
【００１４】
図1を参照すると、キャッシュベースのデフラグプロセスを実行するように動作可能なシステムの特定の例示的な実施形態が示され、全体が100で表される。システム100は、データキャッシュ102と、物理メモリ130と、メモリ管理ユニット(MMU)160と、プロセッサ(たとえば、中央処理ユニット(CPU)180)とを含む。システム100は、CPU180の処理リソースを継続的に使用することなしに(たとえば、物理メモリ130中のあるロケーションから物理メモリ130中の別のロケーションにデータを移動するためにCPU180が読取り命令および書込み命令を発行することを必要とすることなしに)物理メモリ130のデフラグを可能にし得る。
【００１５】
データキャッシュ102は、データアレイ104と、タグアレイ106と、状態アレイ108とを含み得る。データキャッシュ102は、物理メモリ130に対してデフラグ動作を実行するためのデフラグ回路112も含み得る。データアレイ104、タグアレイ106、および状態アレイ108は、複数のキャッシュライン(たとえば、キャッシュライン121〜124)で編成され得る。各キャッシュラインは、データアレイ104の特定の列からのデータを含み得、タグアレイ106中の対応するタグデータと、状態アレイ108中の対応する状態情報とを有し得る。状態情報は、有効性情報および/またはダーティ情報を含み得る。たとえば、各キャッシュラインは、有効性ビットおよび/またはダーティビットを含み得る。代替実施形態では、状態アレイ108は、追加の、より少ない、および/または異なる状態ビットを含み得る。図1には示されていないが、データキャッシュ102は、図4〜図7を参照しながら説明するように、マルチウェイ(たとえば、Nウェイ)セットアソシアティブキャッシュであり得る。
【００１６】
物理メモリ130は、データを複数のアドレスに記憶し得る。たとえば、物理メモリ130は、第1のデータを第1のアドレス151に、第2のデータを第2のアドレス152に、第3のデータを第3のアドレス153に、第4のデータを第4のアドレス154に記憶し得る。キャッシュベースのデフラグプロセスの後、本明細書でさらに説明するように、第1のデータは第5のアドレス141に記憶され得、第2のデータは第6のアドレス142に記憶され得、第3のデータは第7のアドレス143に記憶され得、第4のデータは第8のアドレス144に記憶され得る。物理メモリ130はページに編成され得る。たとえば、アドレス151〜154は第1のページ136に対応するものとして示され、アドレス141〜144は第2のページ138に対応するものとして示される。物理メモリ130をデフラグすることは、データを第1のページ136から第2のページ138に移動することを含み得る。たとえば、第1のページ136は割り振られていないメモリページによって囲まれるメモリフラグメントに対応し得、第2のページ138はメモリホール(たとえば、割り振られていないメモリページ)に対応し得る。
【００１７】
メモリ管理ユニット(MMU)160は、物理メモリ130ならびに仮想メモリを管理および編成し得る。たとえば、MMU160は、仮想メモリアドレス(VA)を物理メモリ130の物理メモリアドレス(PA)にマップし得る。例示のために、メモリ管理ユニット160はページテーブル162を含み得る。ページテーブル162は、VA164のアレイと、VA164を物理メモリ130のPAにマップするポインタ166のアレイとを含み得る。図1の例では、第1の仮想メモリアドレス171は第1の物理アドレス151にマップされ、第2の仮想メモリアドレス172は第2の物理アドレス152にマップされ、第3の仮想メモリアドレス173は第3の物理アドレス153にマップされ、第4の仮想メモリアドレス174は第4の物理アドレス154にマップされる。図示されていないが、ページテーブル162は、物理メモリ130の他のアドレスへのおよび/または他のメモリデバイスへのより多くの仮想アドレスマッピングを含み得る。
【００１８】
メモリ管理ユニット160は、特定の仮想メモリアドレスを特定の物理メモリアドレスから別の物理メモリアドレスに再マップするために、データキャッシュ102のデフラグ回路112によってアクセス可能であり得る。たとえば、デフラグ回路112は、本明細書でさらに説明するように、デフラグ回路112によって実行されるキャッシュベースのデフラグ動作の間に、第1の仮想メモリアドレス171を第5の物理アドレス141に、第2の仮想メモリアドレス172を第6の物理アドレス142に、第3の仮想メモリアドレス173を第7の物理アドレス143に、第4の仮想メモリアドレス174を第8の物理アドレス144に再マップし得る。仮想メモリアドレス171〜174は、個々の動作の間にまたは単一の再マッピング動作の一部として再マップされ得る。
【００１９】
CPU180は、動作を実行するための命令セット182の命令を実行するように構成され得る。命令セット182は、ロードおよび再マップ命令184を含む。ロードおよび再マップ命令184は、CPU180で稼動しているソフトウェア(たとえば、オペレーティングシステムソフトウェア、アプリケーションソフトウェアなど)によって発行され得る。ロードおよび再マップ命令184は、CPU180に、データキャッシュ102においてキャッシュベースのデフラグ動作を開始させ得る。
【００２０】
動作時、CPU180は、ロードおよび再マップ命令184を受信し得る。ロードおよび再マップ命令184に応答して、CPU180は、要求186をデータキャッシュ102に発行し得る。要求186は、データキャッシュ102に、1つまたは複数のデフラグ動作を実行させ得る。デフラグ動作は、物理メモリ130中の1つのページからの単一のデータアイテム、1つのページからの複数のデータアイテム、1つのページ全体、または複数のページを再配置することを含み得る。たとえば、ロードおよび再マップ命令184は、第1のPA151に記憶された第1のデータが第5のPA141に再配置されるべきであることを指定し得る。デフラグ回路112は、第1の物理メモリアドレス151からキャッシュライン121に対応するデータアレイ104の列への第1のデータのコピーを開始し得る。代替実施形態では、第1のデータは、デフラグに無関係なキャッシュ動作の一部として(たとえば、要求186に先行する、CPU180からの読取り要求または書込み要求に応答して)、データアレイ104に以前にロードされていることがある。
【００２１】
デフラグ回路112は、データキャッシュ102にコピーされた第1のデータに対応する仮想メモリアドレスに関連付けられたルックアップ情報の修正を開始し得る。たとえば、仮想メモリアドレス171から物理メモリアドレス151への実線矢印によって図1に示すように、仮想メモリアドレス171は最初に物理メモリアドレス151にマップされ得る。物理メモリアドレス151に関連付けられたデータがキャッシュライン121にロードされた後、デフラグ回路112は、仮想メモリアドレス171と第5の物理メモリアドレス141との間の破線矢印によって示すように、仮想メモリアドレス171に関連付けられたポインタが第5の物理メモリアドレス141を指すように、ページテーブル162の修正を開始し得る。特定の実施形態では、デフラグ回路112は、MMU160にコマンドを発行することによって、ページテーブル162の修正を開始する。代替的に、CPU180は、(たとえば、要求186を発行する前または後に)MMU160にページテーブル162を修正させ得る。
【００２２】
デフラグ回路112は、データキャッシュライン121に対応するタグアレイ106中のタグ情報を修正し得る。タグ情報は、キャッシュライン121に記憶されたデータがデータキャッシュ102から追い出されるときにデータが書き込まれるべき物理メモリ130の物理アドレスを決定するために、データキャッシュ102によって使用され得る。例示のために、キャッシュライン121に対応するタグ情報は、第1の物理アドレス151の少なくとも一部分を含み得る。デフラグ回路112は、第5の物理アドレス141の少なくとも一部分を有する、キャッシュライン121に対応するタグ情報を上書きし得る。データがデータキャッシュ102から追い出されるとき、データは、第1の物理アドレス151ではなく、第5の物理アドレス141に書き込まれる。データは、最長時間未使用(LRU)、最小使用頻度(LFU)、先入れ先出し(FIFO)などのキャッシュ管理ポリシーに従って追い出され得る。データはまた、オンデマンドで(たとえば、要求186などのCPU180からの要求に応答して)追い出され得る。代替実施形態では、タグ情報は、ルックアップ情報を修正する前に修正され得る。特定の実施形態では、デフラグ回路112はまた、本明細書でさらに説明するように、物理アドレス151へのデータの書込みをトリガするためにキャッシュライン121のダーティビットを設定し得る。
【００２３】
デフラグ回路112は、物理メモリ130の複数のメモリフラグメントに対してデフラグ動作を実行し得る。複数のデフラグ動作は、同時にまたは1つずつ実行され得る。図1の例では、デフラグ回路112はまた、第2のデータを第2の物理アドレス152から第2のキャッシュライン122に、第3のデータを第3の物理アドレス153から第3のキャッシュライン123に、第4のデータを第4の物理アドレス154から第4のキャッシュライン124にコピーする。デフラグ回路112は、タグ情報がPA152〜154ではなくPA142〜144に対応するように、追加のキャッシュライン122〜124の各々に関連付けられたタグ情報を修正し得る。タグ情報が修正された後、キャッシュ102は、第2のデータ、第3のデータ、および第4のデータをそれぞれPA142〜144に書き込み得る。
【００２４】
このようにして、データキャッシュ102は、物理メモリ130に対してデフラグ動作を実行するために使用され得る。要求186によって示されたキャッシュベースのデフラグ動作を完了した後、データキャッシュ102は、キャッシュベースのデフラグ動作が完了したことを示す応答188をCPU180に送り得る。特定の実施形態では、デフラグ動作は割込みベースの動作を含み得る。たとえば、応答188は、割込みハンドラに対応する動作をCPU180に実行させる割込みを含み得る。特定の実施形態では、割込みハンドラは、CPU180で稼動しているオペレーティングシステムに関連付けられ得る。
【００２５】
特定の実施形態では、デフラグ動作は、キャッシュラインに記憶されたデータの異なる物理メモリアドレスへの書込みをトリガするために、キャッシュラインをダーティとしてマークすることも含み得る。たとえば、キャッシュライン121に対応するダーティビットは、(タグ情報のみが修正され、第1のデータが修正されていなくても)キャッシュライン121に記憶された第1のデータが修正されたことを示すようにアサート(たとえば、設定)され得る。データキャッシュ動作の間に、データキャッシュ102は、ダーティとしてマークされた各キャッシュラインを物理メモリ130の物理アドレスに書き込み得る。たとえば、キャッシュライン121に記憶された第1のデータは、物理メモリ130に書き込まれ得る。キャッシュライン121に対応するタグ情報が第5の物理アドレス141を指すように修正されたので、キャッシュライン121に記憶されたデータは、物理メモリ130の第1の物理アドレス151ではなく第5の物理アドレス141に書き込まれる。したがって、キャッシュライン121をダーティとしてマークすることは、キャッシュライン121中の第1のデータを第2の物理メモリアドレス141に書き込むようにデータキャッシュをトリガし得る。
【００２６】
特定の実施形態では、タグ情報は、ソース物理アドレスまたは宛先物理アドレスの一部分のみを含み得る。データをソース物理アドレス(たとえば、データフラグメントに関連付けられたアドレス)から宛先物理アドレス(たとえば、デフラグ宛先)に再配置するために、デフラグ回路112は、タグ情報を修正することに加えて、データキャッシュ102内のデータを再配置し得る。データキャッシュ102内のデータを再配置した後、ソースキャッシュライン(再配置前のデータのロケーション)は(たとえば、状態アレイ108の有効性情報を修正することによって)無効としてマークされ得、宛先キャッシュライン(再配置後のデータのロケーション)が有効としてマークされ得る。キャッシュ内のデータを再配置する特定の実施形態について、図4〜図7を参照しながら説明する。
【００２７】
特定の実施形態では、説明するキャッシュベースのデフラグプロセスは、物理メモリ130に記憶された個別のファイルまたは構造をデフラグするために使用され得る。たとえば、アプリケーションに関連付けられた特定のファイルによって占有される物理メモリ130の部分は、フラグメント化され(たとえば、不連続であり)得る。説明するキャッシュベースのデフラグプロセスは、ファイルが物理メモリ130の単一の連続した領域を占有するように、ファイルのフラグメントを再配置し得る。
【００２８】
CPU180においてではなくデータキャッシュ102においてデフラグ動作を実行することは、デフラグが行われている間にCPU180が他の動作を実行することまたはアイドル/節電モードにとどまることを可能にし、それによって、システム100におけるプロセッサリソースおよび電力を節約する。
【００２９】
図2は、(キャッシュベースのデフラグプロセスを実行する前および後の)データを記憶するメモリの一実施形態を示し、全体が200で表される。(たとえば、図1の130に対応する)メモリ220は最初に、任意の数のメモリロケーションに記憶されたアプリケーションデータを含み得る。たとえば、メモリ220は、複数のアプリケーション(たとえば、アプリケーション1、アプリケーション2、アプリケーション4、およびアプリケーション6)のためのアプリケーションデータを含むものとして示されている。メモリ220は、第1のメモリアドレス205に記憶されたアプリケーション4に対応するアプリケーションデータと、第2のメモリアドレス206に記憶されたアプリケーション6に対応するアプリケーションデータとを含み得る。
【００３０】
メモリ220は、アプリケーションデータに関連付けられていないメモリアドレスも含み得る。たとえば、メモリ220は、アプリケーションに関連付けられていないフリー(たとえば、割り振られていない)メモリアドレスに対応する第3のメモリアドレス202および第4のメモリアドレス203を含み得る。フリーメモリアドレスは、メモリホールに関連付けられ得る。本明細書で使用する場合、「ホール」とは、メモリの割り振られた物理アドレスまたは領域によって囲まれ得る、メモリの割り振られていない(たとえば、フリー)物理アドレスまたは領域である。たとえば、第3のメモリアドレス202および第4のメモリアドレス203は、アプリケーション2およびアプリケーション4に関連付けられたデータを記憶するメモリアドレスの間に配置される。メモリホールは、メモリの割振りおよび割振り解除のせいで、メモリを使用している間に生じ得る。たとえば、別のアプリケーション(たとえば、アプリケーション3、アプリケーション5)に関連付けられたデータは、最初にメモリホールに記憶されていることがある。(たとえば、アプリケーションが終了するせいで)メモリが割振り解除されると、ホールが生じ得る。第1のメモリアドレス205および第2のメモリアドレス206はそれぞれ、メモリの割り振られていない領域(たとえば、ホール)によって囲まれた、メモリの割り振られた領域であるので、第1のメモリアドレス205および第2のメモリアドレス206はメモリ「フラグメント」と見なされる。
【００３１】
キャッシュベースのデフラグ動作222は、メモリ220に対して実行され得る。たとえば、メモリ220は、図1のデータキャッシュ102などのデータキャッシュに結合され得る。キャッシュベースのデフラグ動作222が実行された後、メモリ220は、割り振られていないメモリに関連付けられたメモリのブロックを含み得る。メモリ220がダイナミックランダムアクセスメモリ(DRAM)であるとき、パーシャルアレイセルフリフレッシュ(PASR)は割り振られていないメモリに適用され得る。たとえば、DRAMチップ全体が割り振られていないとき、PASRはDRAMチップの電源を切断し得る。DRAMチップが電源切断されると、DRAMチップはリフレッシュカレントを使用して周期的にリフレッシュされず、このことは、電子デバイスにおける電力を節約し得る。
【００３２】
さらに、メモリ220に対してキャッシュベースのデフラグを使用することによって、プロセッサリソースが保持され得る。たとえば、プロセッサは、キャッシュがデフラグを実行する間に、デフラグに無関係な動作を実行し得る。さらに、キャッシュベースのデフラグ動作はキャッシュ動作に統合され、それによって、データをメモリフラグメントからメモリホールにコピーするプロセッサ機能を使用するデフラグ動作と比較して電力消費を低減し得る。
【００３３】
図3Aを参照すると、キャッシュベースのデフラグ動作を実行するためのシステムの特定の実施形態が示され、全体が300で表される。システム300は、プロセッサ302(たとえば、CPU)と、第1のレベル(たとえば、L1)キャッシュ304と、第2のレベル(たとえば、L2)キャッシュ306と、第3のレベル(たとえば、L3)キャッシュ308と、メインメモリ310とを含む。第3のレベルキャッシュ308は、ラストレベルキャッシュ(連続するキャッシュレベルにおいてメインメモリ310に最も近いキャッシュ)と呼ばれることがある。図3Aのシステム300には3つのレベルのキャッシュが示されているが、システム300は、任意の順序で配列された任意の数のキャッシュを含み得る。図3Aに示すように、デフラグ回路312は、メモリデフラグがキャッシュメモリ管理の間に行われることを可能にするためにラストレベルキャッシュに統合され、それによって、メモリデフラグを実行するための追加のハードウェアリソースへの依存を低減し得る。
【００３４】
第3のレベルキャッシュ308は、図1のデータキャッシュ102に対応し得る。CPU302は図1のCPU180に対応し得、メインメモリ310は図1のメインメモリ160または図2のメモリ220に対応し得る。したがって、システム300は、図1を参照しながら説明したようにキャッシュベースのメモリデフラグ動作を実行し得る。たとえば、CPU302は、メインメモリ310に対してデフラグ動作を実行するための要求320を第3のレベルキャッシュ308に送り得る。要求320に応答して、デフラグ回路312は、メモリ310の第1の物理メモリアドレスに記憶されたデータを第3のレベルキャッシュ308のキャッシュラインにロードし得る。デフラグ回路312は、キャッシュラインがメインメモリ310の第2の物理メモリアドレスに対応することを示すように、キャッシュラインに関連付けられた情報(たとえば、タグ情報および/または状態情報)を修正し得る。次いで、第3のレベルキャッシュ308は、キャッシュ動作の一部として、データをメインメモリ310の第2の物理メモリアドレスに書き込み得る。
【００３５】
図3Bは、本明細書で説明する特定の実施形態で使用され得るアドレス指定方式を示す。図示のアドレス指定方式では、物理アドレス350は物理メモリ(たとえば、図3Aのメインメモリ310)内のロケーションを表し得る。ソースアドレス352は物理メモリの第1のページ(たとえば、メモリフラグメント)に対応し得、宛先アドレス354は物理メモリの第2のページ(たとえば、デフラグ宛先またはメモリホール)に対応し得る。データをソースアドレス352から宛先アドレス354に移動することは、データロケーションのページオフセットを変更することなしに、データを物理メモリの異なるページに移動する(たとえば、ページ番号を変更する)ことを含み得る。
【００３６】
物理アドレス350は、図示のように、タグ、インデックス、およびラインオフセットに分割され得る。タグの値は、キャッシュライン(たとえば、図1のキャッシュライン121〜124のうちの1つ)における第3のレベルキャッシュ308内に記憶され得、対応するデータを物理メモリアドレス350に関連付けるために第3のレベルキャッシュ308によって使用され得る。第3のレベルキャッシュ308はセットアソシアティブキャッシュであってもよく、インデックスはデータが記憶される第3のレベルキャッシュ308内のセットを示し得る。ラインオフセットは、データが記憶されるセット内のラインを示し得る。物理アドレス350は、図示のように、ページ番号およびページオフセットとしても表され得る。図3Bでは、物理アドレス350は32ビットの物理アドレスである。メインメモリ310のページは、(12ビットのページオフセットによって表される)4キロバイト(KB)の物理ページを含み得る。ページ番号は、残りの20ビットの物理アドレスによって表され得る。
【００３７】
特定の実施形態では、第3のレベルキャッシュ308は8ウェイで512KBのラストレベルキャッシュである。第3のレベルキャッシュ308の各キャッシュラインは、(6ビットのラインオフセットによって表される)64バイトを含み得る。第3のレベルキャッシュ308は、(10ビットのインデックスによって表される)1024個のセットを含み得る。残りの16ビットの物理アドレス350は、タグを含み得る。図3Bの実施形態では、タグはページ番号(20ビット)よりも少ないビット(16ビット)を含む。したがって、ページ番号は第3のレベルキャッシュ308のインデックスと(たとえば、4ビットだけ)重複することがある。ページ番号の重複する部分は、第3のレベルキャッシュ302内のどのセットにデータが記憶されるかに影響を及ぼし得る。各ページは、インデックスの重複する部分(たとえば、インデックスの最上位ビット)に応じてセグメントに分割され得る。図3Bでは、各ページは16個のページセグメントに分割される。
【００３８】
メモリフラグメントをメインメモリ310の第1のページからメインメモリ310の第2のページに移動するために、デフラグ回路312は、図1を参照しながら説明したように物理アドレス350のタグを変更し得る。しかしながら、ページ番号はタグよりも多くのビットを含み得るので、物理アドレス350のタグを変更することは、物理アドレス350のページ番号の一部分のみを変更することであり得る。ページ番号全体を変更するために、デフラグ回路はインデックスの一部分も変更し得る。インデックスの一部分を変更するために、デフラグ回路はデータを第1のページセグメントに対応する第1のキャッシュラインから第2のページセグメントに対応する第2のキャッシュラインに移動し得る。データを第1のページセグメントから第2のページセグメントに移動するかどうかを決定することについて、図4〜図7を参照しながらさらに説明する。
【００３９】
ソースアドレス352は、タグ情報A1およびセグメント情報A2に分割され得る。同様に、宛先アドレス354は、タグ情報B1およびセグメント情報B2に分割され得る。ソースアドレス352および宛先アドレス354が異なるセグメントにあるとき、データは(ページの第1のセグメントに対応する)あるキャッシュセットから(ページの第2のセグメントに対応する)別のキャッシュセットに移動され得る。
【００４０】
図4〜図7は、図3Aおよび図3Bのシステム300のコンテキスト内でのキャッシュベースのデフラグ動作の特定の実施形態を示す。実施形態は、ソースアドレスおよび宛先アドレスが同じページセグメントに対応し、データがすでにキャッシュ内に配置されている(たとえば、キャッシュヒット)第1の実施形態(図4)と、ソースアドレスおよび宛先アドレスが同じページセグメントに対応し、データがキャッシュ内に配置されていない(たとえば、キャッシュミス)第2の実施形態(図5)と、ソースアドレスおよび宛先アドレスが異なるページセグメントに対応し、データがすでにキャッシュ内に配置されている第3の実施形態(図6)と、ソースアドレスおよび宛先アドレスが異なるページセグメントに対応し、データがキャッシュ内に配置されていない第4の実施形態(図7)とを含む。
【００４１】
図4を参照すると、デフラグ回路(たとえば、図3Aのデフラグ回路312)によって実行されるキャッシュベースのデフラグ動作の第1の実施形態が示され、全体が400で表される。図4は、タグアレイ402(たとえば、8ウェイセットアソシアティブキャッシュのタグアレイ)とデータアレイ410(たとえば、8ウェイセットアソシアティブキャッシュのデータアレイ)とを含む、(たとえば、図1のデータキャッシュ102および/または図3Aの第3のレベルデータキャッシュ308に対応する)データキャッシュを示す。図4はまた、複数のアドレスに関連付けられた(たとえば、図1の物理メモリ130および/または図3Aの物理メモリ310に対応する)メインメモリ420を示す。たとえば、メインメモリ420は、(たとえば、図3Bのソースアドレス352に対応する)ソースアドレス424および(たとえば、図3Bの宛先アドレス354に対応する)宛先アドレス422にデータを記憶するように構成され得る。
【００４２】
タグアレイ402は図1のタグアレイ106に対応し得、データアレイ410は図1のデータアレイ104に対応し得る。たとえば、タグアレイ402は、(たとえば、データロケーション412における)キャッシュ内に記憶されたデータに対応するタグ情報(たとえば、タグ情報404)を含み得る。タグアレイ402およびデータアレイ410は、16個のページセグメントに分割され得る。ページセグメントは、セット(たとえば、10ビットのインデックスに対応する1024個のセット)にさらに分割され得る。
【００４３】
図4の実施形態では、ソースアドレス424および宛先アドレス422は、同じページセグメント414に対応する(たとえば、図3Bのソースアドレス352のA2は、図3Bの宛先アドレス354のB2に等しい)。さらに、ソースアドレス424に対応するデータは、(データロケーション412における塗りつぶされたブロックによって示すように)データアレイ410のデータロケーション412に(たとえば、キャッシュ動作の間に)ロードされている。デフラグ動作を実行するための要求が受信されると、ソースアドレス424に記憶されたデータがすでにキャッシュにロードされているので、キャッシュヒットが生じ得る。
【００４４】
デフラグ回路(たとえば、図3Aのデフラグ回路312)は、データに関連付けられたタグ情報404を修正し得る。たとえば、デフラグ回路は、ソースアドレスに対応するタグ(たとえば、図3Bのソースアドレス352のA1)を宛先アドレスに対応するタグ(たとえば、図3Bの宛先アドレス354のB1)に置き換え得る。デフラグ回路はまた、メインメモリ420へのデータのライトバックをトリガするために、(たとえば、図1を参照しながら説明したように、状態アレイ108中のダーティビットを修正することによって)データをダーティとしてマークし得る。データがキャッシュから追い出されるとき、データは、ソースアドレス424ではなく、宛先アドレス422に書き込まれる。
【００４５】
図5を参照すると、デフラグ回路によって実行されるキャッシュベースのデフラグ動作の第2の実施形態が示され、全体が500で表される。図5は、ページセグメントは同じである(A2=B2)が、キャッシュミスが生じるときの動作に対応する。したがって、キャッシュベースのデフラグ動作が開始されたとき、ソースアドレス424に対応するデータは(キャッシュロケーション412における白抜きのブロックによって示すように)まだデータアレイ410のキャッシュロケーション412にロードされていない。デフラグ動作を実行するための要求が受信されると、キャッシュミスが生じ得る。
【００４６】
(図4を参照しながら説明した)デフラグ回路は、ソースアドレス424に記憶されたデータをキャッシュロケーション412にロードし得る。しかしながら、ソースアドレス424に関連付けられたタグA1をタグアレイ402に挿入する代わりに、デフラグ回路は宛先アドレス422に関連付けられたタグB1をタグ404に挿入し得る。デフラグ回路はまた、データをダーティとしてマークし得る。データがキャッシュから追い出されるとき、データは、ソースアドレス424ではなく、宛先アドレス422に書き込まれる。
【００４７】
図6を参照すると、デフラグ回路によって実行されるキャッシュベースのデフラグ動作の第3の実施形態が示され、全体が600で表される。図6は、ページセグメントが異なり(A2はB2と等しくない)、キャッシュヒットが生じるときの動作に対応する。ソースアドレス424は第1のページセグメント418に対応し得、宛先アドレス422は第2のページセグメント618に対応し得る。ソースアドレス424に対応するデータは、(キャッシュロケーション412の塗りつぶされたブロックによって示すように)データアレイ410のキャッシュロケーション412にロードされている。デフラグ動作を実行するための要求が受信されると、キャッシュヒットが生じる。
【００４８】
(図4および図5を参照しながら説明した)デフラグ回路は、キャッシュロケーション412に記憶されたデータを第2のページセグメント618に関連付けられた第2のキャッシュロケーション616に移動し得る。デフラグ回路はまた、キャッシュロケーション616に対応するタグ情報606として、宛先アドレス422に対応するタグB1をタグアレイ402に挿入し得る。デフラグ回路は、(たとえば、有効性ビットを変更することによって)キャッシュロケーション412に記憶されたデータを無効化し得る。
【００４９】
デフラグ回路はまた、メインメモリ420へのデータのライトバックをトリガするために、データをダーティとしてマークし得る。(たとえば、キャッシュ動作の間に)データがキャッシュから追い出されるとき、データは、ソースアドレス424ではなく、宛先アドレス422に書き込まれる。
【００５０】
図7を参照すると、デフラグ回路によって実行されるキャッシュベースのデフラグ動作の第4の実施形態が示され、全体が700で表される。図7は、ページセグメントが異なり(A2はB2と等しくない)、キャッシュミスが生じるときの動作に対応する。
【００５１】
(図4、図5、および図6を参照しながら説明した)デフラグ回路は、ソースアドレス424に記憶されたデータを、第1のセグメント414ではなく、第2のセグメント718にロードし得る。ソースアドレス424に関連付けられたタグA1を(たとえば、タグ情報404として)タグアレイ402に挿入する代わりに、デフラグ回路は、宛先アドレス422に関連付けられたタグB1を(たとえば、タグ情報706として)タグアレイ402に挿入し得る。デフラグ回路はまた、データをダーティとしてマークし得る。(たとえば、キャッシュ動作の間に)データがキャッシュから追い出されるとき、データは、ソースアドレス424ではなく、宛先アドレス422に書き込まれる。このようにして、図4〜図7は、キャッシュヒットまたはキャッシュミスが生じるかどうかに基づいて、また、ソースアドレスおよび宛先アドレスが同じページセグメントに対応するかまたは異なるページセグメントに対応するかに基づいて、キャッシュベースのデフラグ動作を実行する様々な実施形態を示している。
【００５２】
図8Aを参照すると、キャッシュベースのデフラグプロセスを実行するように動作可能なシステムの別の特定の実施形態が示され、全体が800で表される。システム800は、プロセッサ802(たとえば、CPU)と、第1のレベル(たとえば、L1)キャッシュ804と、第2のレベル(たとえば、L2)キャッシュ806と、第3のレベル(たとえば、L3)キャッシュ808と、メインメモリ810とを含む。図8Aのシステム800には3つのレベルのキャッシュが示されているが、システム800は、任意の順序で配列された任意の数のキャッシュを含み得る。図3Aのシステム300とは対照的に、システム800は、他のキャッシュ804〜808のいずれとも異なる専用デフラグキャッシュ812を含む。デフラグキャッシュ812はまた、メインメモリ810とCPU802との間のキャッシュパスと異なり(たとえば、その外部にあり)得る。システム800内の他のキャッシュとは異なることにより、デフラグキャッシュ812が第3のレベルキャッシュ808よりも小さくなることが可能になり得る。さらに、デフラグキャッシュ812は、デフラグキャッシュ812がデフラグ動作を実行していないとき、CPU802に対する「支援」キャッシュとして使用され得る。デフラグキャッシュ812は、デフラグ回路814を含み得る。
【００５３】
動作時、CPU802は、メインメモリ810に対してデフラグ動作を実行するための要求をデフラグキャッシュ812に送り得る。要求に応答して、デフラグ回路814は、メモリ810の第1の物理メモリアドレスに記憶されたデータをデフラグキャッシュ808のキャッシュラインにロードし得る。デフラグ回路814は、キャッシュラインがメインメモリ810の第2の物理メモリアドレスに対応することを示すように、キャッシュラインに関連付けられた情報を修正し得る。デフラグキャッシュ814は、(たとえば、データが追い出されるときに)データをメインメモリの第2の物理メモリアドレスに書き込み得る。
【００５４】
図8Bは、図8Aのシステム800とともに使用され得るアドレス指定方式の図である。図示したアドレス指定方式では、物理アドレス850は再配置されるべきデータのアドレスを表す。ソースアドレス852は物理メモリの第1のページ(たとえば、メモリフラグメント)に対応し、宛先アドレス854は物理メモリの第2のページ(たとえば、デフラグ宛先またはメモリホール)に対応する。物理アドレス850は、図示のように、タグ、インデックス、およびラインオフセットに分割され得る。物理アドレス850は、ページ番号およびページオフセットとしても表され得る。図8Bでは、物理アドレス850は32ビットの物理アドレスである。メインメモリ810のページは、(12ビットのページオフセットによって表される)4キロバイト(KB)の物理ページを含み得る。デフラグキャッシュ812は、8ウェイで32KBのキャッシュを含み得る。デフラグキャッシュ812の各キャッシュラインは、(6ビットのラインオフセットによって表される)64バイトであり得る。
【００５５】
図8Aの実施形態では、タグは、ページ番号と同数のビットを含む。したがって、図8Aのデフラグキャッシュ812は、物理アドレス850のタグを変更することによって、物理アドレス850のページ番号全体を変更し得る。デフラグ回路814は、ページセグメントの不一致に基づいてデータをデフラグキャッシュ812内の第1のキャッシュラインから第2のキャッシュラインに移動することなしにデフラグ動作を実行し得る。その結果、図8Aの実施形態は図3Aの実施形態よりも速くなり得る。しかしながら、図8Aの実施形態は、専用デフラグキャッシュ812の導入により、図3Aの実施形態よりも多くのチップ領域を占めることがある。
【００５６】
図9を参照すると、キャッシュベースのデフラグを実行する方法900の特定の例示的な実施形態は、902において、メモリの第1の物理メモリアドレスに記憶されたデータをメモリからデータキャッシュのキャッシュラインにロードすることを含み、第1の物理メモリアドレスは第1の仮想メモリアドレスにマップされる。たとえば、図1のデフラグ回路112は、第1の物理アドレス151に対応する第1のデータをキャッシュライン121にロードし得る。第1の物理アドレス151は、第1の仮想アドレス171にマップされ得る。データキャッシュは、ラストレベルキャッシュまたは専用デフラグキャッシュであり得る。
【００５７】
方法900は、904において、第1の仮想メモリアドレスがメモリの第2の物理メモリアドレスに対応するように、第1の仮想メモリアドレスに関連付けられたルックアップ情報の修正を開始することをさらに含む。たとえば、図1のページテーブル162は、仮想アドレス171が第1の物理アドレス151ではなく第5の物理アドレス141にマップされるように修正され得る。
【００５８】
方法900は、906において、キャッシュラインが第1の物理メモリアドレスではなく第2の物理メモリアドレスに対応することを示すように、データキャッシュにおいて、キャッシュラインに関連付けられた情報を修正することも含む。たとえば、図1のキャッシュライン121に対応するタグアレイ106の第1のタグは、第1の物理アドレス151ではなく第5の物理アドレス141に対応するように修正され得る。
【００５９】
方法900は、908において、修正された情報に基づいて、データを第2の物理メモリアドレスに書き込むことを含む。たとえば、図1のデータキャッシュ102は、データがデータキャッシュ102から追い出されるとき、第1のタグ情報に基づいて、データを第5の物理メモリアドレス141に書き込み得る。
【００６０】
方法900は、追加の物理メモリアドレスに記憶された追加のデータについて反復および/または同時に実行され得る。たとえば、第1の複数の追加の物理メモリアドレスの各々に記憶された追加のデータは、追加のキャッシュラインにロードされ得る。追加のキャッシュラインの各々のタグ情報は、各追加のキャッシュラインが第2の複数の追加の物理アドレスのそれぞれの物理メモリアドレスに対応することを示すように修正され得る。キャッシュから追い出されるとき、追加のデータは、修正されたタグ情報に基づいて、第2の複数の追加の物理アドレスに書き込まれ得る。
【００６１】
図9の方法は、特定用途向け集積回路(ASIC)、中央処理ユニット(CPU)などの処理ユニット、デジタル信号プロセッサ(DSP)、コントローラ、フィールドプログラマブルゲートアレイ(FPGA)デバイス、別のハードウェアデバイス、ファームウェアデバイス、またはそれらの任意の組合せによって実装され得る。一例として、図9の方法は、図11に関して説明するように、命令を実行するプロセッサによって実行され得る。
【００６２】
図10を参照すると、キャッシュベースのデフラグを実行する方法1000の特定の例示的な実施形態が示されている。例示的な実施形態では、方法1000は、図4〜図7を参照しながら説明した動作に対応し得る。方法1000は、1002において、データキャッシュにおいて、デフラグ動作を実行するための要求をプロセッサから受信することを含む。デフラグ動作は、データをソースアドレスから宛先アドレスに再配置することを含む。
【００６３】
方法1000は、1004において、データが第1のページのページセグメントから第2のページの同じページセグメントに再配置されるべきかどうかを決定することをさらに含み得る。データが第1のページのページセグメントから第2のページの同じページセグメントに再配置されるべきである場合、方法1000は、1006において、ソースアドレスがキャッシュヒットを生じたかどうかを決定することを含み得る。たとえば、図4では、ソースアドレス424に対応するデータはデータアレイ410にロードされており、キャッシュヒットが生じている。別の例として、図5では、ソースアドレス424に対応するデータはデータアレイ410にロードされておらず、キャッシュミスが生じている。
【００６４】
キャッシュヒットが生じるとき、方法1000は、1008において、ソースアドレスではなく宛先アドレスを示すようにデータのためのタグ情報を修正することを含み得る。たとえば、図4を参照すると、タグ情報404は、ソースアドレス424ではなく宛先アドレス422を示すように修正され得る。
【００６５】
キャッシュミスが生じるとき、方法1000は、1010において、データをソースアドレスからデータキャッシュにロードし、ソースアドレスではなく宛先アドレスのためのタグ情報を挿入することを含み得る。たとえば、図5を参照すると、データはソースアドレス424からキャッシュロケーション412にロードされ得、挿入されたタグ情報404はソースアドレス424ではなく宛先アドレス422を示し得る。
【００６６】
データが第1のページのページセグメントから第2のページの異なるページセグメントに再配置されるべきである場合、方法1000は、1012において、データが異なるページセグメントに再配置されるべきである場合、ソースアドレスがキャッシュヒットを生じたかどうかを決定することも含み得る。たとえば、図6では、ソースアドレス424に対応するデータは以前にデータアレイ410にロードされており、キャッシュヒットが生じている。別の例として、図7では、ソースアドレス424に対応するデータは以前にデータアレイ410にロードされておらず、キャッシュミスが生じている。
【００６７】
キャッシュヒットが生じるとき、方法1000は、1014において、データをソースページセグメントに対応する第1のキャッシュロケーションから宛先ページセグメントに対応する第2のキャッシュロケーションに移動することを含み得る。加えて、宛先アドレスのためのタグ情報は第2のキャッシュロケーションに挿入され得、第1のキャッシュロケーションは無効化され得る。たとえば、図6を参照すると、データがキャッシュロケーション412からキャッシュロケーション616に移動され得、宛先アドレス422のためのタグ情報606が挿入され得、キャッシュロケーション412が無効としてマークされ得る。キャッシュミスが生じるとき、方法1000は、1016において、宛先ページセグメントのためのキャッシュロケーションにおいて、データをデータキャッシュにロードし、宛先アドレスのためのタグ情報を挿入することを含み得る。たとえば、図7を参照すると、データはソースアドレス424からキャッシュロケーション716にロードされ得、挿入されたタグ情報706は宛先アドレス422を示し得る。
【００６８】
方法1000は、1018において、宛先アドレスへのデータの書込みをトリガすることも含み得る。たとえば、データは、図4〜図7を参照しながら説明したように、ダーティビットをアサートすることによってダーティとしてマークされ得る。方法1000は、1020において、デフラグ動作が完了したことを示す応答をプロセッサに送ることも含み得る。
【００６９】
代替実施形態では、図10の方法が修正され得ることに留意されたい。たとえば、図3Bのアドレス指定方式ではなく図8Bのアドレス指定方式が使用されるとき、タグおよびページ番号の情報はいずれも同数のビットを含み得、データは、ページセグメントの不一致により、データキャッシュ内で再配置される必要がないことがある。そのような実施形態では、デフラグ動作を実行することは、キャッシュミスをチェックすることを含み得るが、ページセグメントの不一致をチェックすることを含まないことがある。
【００７０】
図10の方法は、特定用途向け集積回路(ASIC)、中央処理ユニット(CPU)などの処理ユニット、デジタル信号プロセッサ(DSP)、コントローラ、フィールドプログラマブルゲートアレイ(FPGA)デバイス、別のハードウェアデバイス、ファームウェアデバイス、またはそれらの任意の組合せによって実装され得る。一例として、図10の方法は、図11に関して説明するように、命令を実行するプロセッサによって実行され得る。
【００７１】
図11を参照すると、ワイヤレス通信デバイスの特定の例示的な実施形態のブロック図が示され、全体が1100で表される。デバイス1100は、メモリ1132に結合された、デジタル信号プロセッサ(DSP)1110(またはCPUまたは別のタイプのプロセッサ)などのプロセッサを含む。デバイス1100は、デフラグ動作を実行するように動作可能なデフラグキャッシュ1164も含み得る。例示的な実施形態では、デフラグキャッシュ1164は、図1のデータキャッシュ102、図3Aの第3のレベルキャッシュ308、図8Aのデフラグキャッシュ812に対応し得、図9、図10、図11、またはそれらの任意の組合せの方法に従って動作し得る。
【００７２】
デフラグキャッシュ1164は、メモリ1132に対してデフラグ動作を実行するために、メモリ1132に結合され得る。メモリ1132は、動作を実行するためのプロセッサ1110によって実行可能な(たとえば、図1のロードおよび再マップ命令184を含む)データおよびコンピュータ実行可能命令1156を記憶する非一時的コンピュータ可読媒体であり得る。動作は、メモリ1132の第1の物理メモリアドレスに記憶されたデータをメモリ1132からデフラグキャッシュ1164のキャッシュラインにロードすることを含み得る。第1の物理メモリアドレスは、第1の仮想メモリアドレスにマップされ得る。動作は、第1の仮想メモリアドレスがメモリ1132の第2の物理メモリアドレスに対応するように、第1の仮想メモリアドレスに関連付けられたルックアップ情報(たとえば、図1のページテーブル162)の修正を開始することをさらに含み得る。動作は、キャッシュラインが第1の物理メモリアドレスではなく第2の物理メモリアドレスに対応することを示すように、キャッシュラインに関連付けられた情報(たとえば、図1のタグアレイ106)を修正することも含み得る。動作は、(たとえば、データがデータキャッシュから追い出されるとき)修正された情報に基づいて、データを第2の物理メモリアドレスに書き込むことを含み得る。
【００７３】
図11は、デジタル信号プロセッサ1110およびディスプレイ1128に結合されたディスプレイコントローラ1126も示す。コーダ/デコーダ(コーデック)1134も、デジタル信号プロセッサ1110に結合され得る。スピーカ1136およびマイクロフォン1138は、コーデック1134に結合され得る。
【００７４】
図11は、ワイヤレスコントローラ1140がデジタル信号プロセッサ1110およびアンテナ1142に結合され得ることも示す。特定の実施形態では、DSP1110、ディスプレイコントローラ1126、メモリ1132、コーデック1134、およびワイヤレスコントローラ1140は、システムインパッケージまたはシステムオンチップデバイス1122に含まれる。特定の実施形態では、入力デバイス1130および電源1144は、システムオンチップデバイス1122に結合される。さらに、特定の実施形態では、図11に示すように、ディスプレイ1128、入力デバイス1130、スピーカ1136、マイクロフォン1138、アンテナ1142、および電源1144は、システムオンチップデバイス1122の外部にある。しかしながら、ディスプレイ1128、入力デバイス1130、スピーカ1136、マイクロフォン1138、アンテナ1142、および電源1144の各々は、インターフェースまたはコントローラなどのシステムオンチップデバイス1122の構成要素に結合され得る。
【００７５】
説明する実施形態とともに、図1の物理メモリ130、図3Aのメインメモリ310、図8Aのメインメモリ810、複数の物理メモリアドレスを使用してデータを記憶するように構成された1つまたは複数の他のデバイスまたは回路、あるいはそれらの任意の組合せなど、複数の物理メモリアドレスを使用してデータを記憶するための手段を含み得るシステムが開示される。システムは、データをキャッシュするための手段も含み得、データをキャッシュするための手段は、メモリの第1の物理メモリアドレスに記憶されたデータをメモリからデータキャッシュのキャッシュラインにロードするように構成されたデフラグ回路を含み、第1の物理メモリアドレスは第1の仮想メモリアドレスにマップされる。デフラグ回路はまた、第1の仮想メモリアドレスがメモリの第2の物理メモリアドレスに対応するように、第1の仮想メモリアドレスに関連付けられたルックアップ情報の修正を開始するように構成され得る。デフラグ回路は、キャッシュラインが第1の物理メモリアドレスではなく第2の物理メモリアドレスに対応することを示すように、キャッシュラインに関連付けられた情報を修正するようにさらに構成され得る。たとえば、デフラグ回路は、図1のデフラグ回路112、図3のデフラグ回路312、図8のデフラグ回路814、図11のデフラグキャッシュ1164、またはそれらの任意の組合せを含み得る。
【００７６】
上記の開示したデバイスおよび機能は、コンピュータ可読媒体上に記憶されたコンピュータファイル(たとえば、RTL、GDSII、GERBERなど)に設計および構成され得る。いくつかまたはすべてのそのようなファイルは、そのようなファイルに基づいてデバイスを製作する製作ハンドラに提供され得る。得られる製品は半導体ウエハを含み、次いで半導体ウエハが半導体ダイに切断され、半導体チップ内にパッケージングされる。次いで、チップは、上記で説明したデバイスにおいて利用される。図12は、電子デバイス製造プロセス1200の特定の例示的な実施形態を示す。
【００７７】
物理デバイス情報1202は、研究コンピュータ1206においてなど、製造プロセス1200において受信される。物理デバイス情報1202は、図1のデータキャッシュ102、図3Aの第3のレベルキャッシュ308、図8Aのデフラグキャッシュ812、図11のデフラグキャッシュ1164、またはそれらの任意の組合せなどの半導体デバイスの少なくとも1つの物理的特性を表す設計情報を含み得る。たとえば、物理デバイス情報1202は、研究コンピュータ1206に結合されたユーザインターフェース1204を介して入力される物理パラメータ、材料特性、および構造情報を含み得る。研究コンピュータ1206は、メモリ1210などのコンピュータ可読媒体に結合された、1つまたは複数の処理コアなどのプロセッサ1208を含む。メモリ1210は、プロセッサ1208に、物理デバイス情報1202をファイルフォーマットに適合するように変換させ、ライブラリファイル1212を生成させるように実行可能なコンピュータ可読命令を記憶し得る。
【００７８】
特定の実施形態では、ライブラリファイル1212は、変換された設計情報を含む少なくとも1つのデータファイルを含む。たとえば、ライブラリファイル1212は、電子設計自動化(EDA)ツール1220とともに使用するために提供される、図1のデータキャッシュ102、図3Aの第3のレベルキャッシュ308、図8Aのデフラグキャッシュ812、図11のデフラグキャッシュ1164、またはそれらの任意の組合せを含むデバイスを含む半導体デバイスのライブラリを含み得る。
【００７９】
ライブラリファイル1212は、メモリ1218に結合された、1つまたは複数の処理コアなどのプロセッサ1216を含む設計コンピュータ1214において、EDAツール1220とともに使用され得る。EDAツール1220は、設計コンピュータ1214のユーザが、ライブラリファイル1212の、図1のデータキャッシュ102、図3Aの第3のレベルキャッシュ308、図8Aのデフラグキャッシュ812、図11のデフラグキャッシュ1164、またはそれらの任意の組合せを含む回路を設計することを可能にするために、メモリ1218においてプロセッサ実行可能命令として記憶され得る。たとえば、設計コンピュータ1214のユーザは、設計コンピュータ1214に結合されたユーザインターフェース1224を介して回路設計情報1222を入力し得る。回路設計情報1222は、図1のデータキャッシュ102、図3Aの第3のレベルキャッシュ308、図8Aのデフラグキャッシュ812、図11のデフラグキャッシュ1164、またはそれらの任意の組合せなどの半導体デバイスの少なくとも1つの物理的特性を表す設計情報を含み得る。例示のために、回路設計特性は、特定の回路の識別および回路設計内の他の要素に対する関係、位置情報、フィーチャサイズ情報、相互接続情報、または半導体デバイスの物理的特性を表す他の情報を含み得る。
【００８０】
設計コンピュータ1214は、回路設計情報1222を含む設計情報を、ファイルフォーマットに適合するように変換するように構成され得る。例示のために、ファイルフォーマットは、平面幾何学的形状、テキストラベル、および回路レイアウトについての他の情報をグラフィックデータシステム(GDSII)ファイルフォーマットなどの階層フォーマットで表すデータベースバイナリファイルフォーマットを含み得る。設計コンピュータ1214は、図1のデータキャッシュ102、図3Aの第3のレベルキャッシュ308、図8Aのデフラグキャッシュ812、図11のデフラグキャッシュ1164、またはそれらの任意の組合せについて記述する情報を、他の回路または情報に加えて含む、GDSIIファイル1226などの変換された設計情報を含むデータファイルを生成するように構成され得る。例示のために、データファイルは、図1のデータキャッシュ102、図3Aの第3のレベルキャッシュ308、図8Aのデフラグキャッシュ812、図11のデフラグキャッシュ1164、またはそれらの任意の組合せを含み、内部に追加の電子回路および構成要素も含むシステムオンチップ(SOC)に対応する情報を含み得る。
【００８１】
GDSIIファイル1226は、図1のデータキャッシュ102、図3Aの第3のレベルキャッシュ308、図8Aのデフラグキャッシュ812、図11のデフラグキャッシュ1164、またはそれらの任意の組合せを、GDSIIファイル1226中の変換された情報に従って製造するために、製作プロセス1228において受信され得る。たとえば、デバイス製造プロセスは、典型的なマスク1232として示された、フォトリソグラフィプロセスとともに使用されるマスクなどの1つまたは複数のマスクを作成するために、マスク製造業者1230にGDSIIファイル1226を提供することを含み得る。マスク1232は、試験され、典型的なダイ1236などのダイに分離され得る1つまたは複数のウエハ1234を生成するために、製作プロセス中に使用され得る。ダイ1236は、図1のデータキャッシュ102、図3Aの第3のレベルキャッシュ308、図8Aのデフラグキャッシュ812、図11のデフラグキャッシュ1164、またはそれらの任意の組合せを含むデバイスを含む回路を含む。
【００８２】
ダイ1236はパッケージングプロセス1238に提供され得、ここで、ダイ1236は典型的なパッケージ1240に組み込まれる。たとえば、パッケージ1240は、単一のダイ1236またはシステムインパッケージ(SiP)配置などの複数のダイを含み得る。パッケージ1240は、電子デバイス技術合同協議会(JEDEC)規格などの1つまたは複数の規格または仕様に準拠するように構成され得る。
【００８３】
パッケージ1240に関する情報は、コンピュータ1246に記憶された構成要素ライブラリを介するなどして、様々な製品設計者に配布され得る。コンピュータ1246は、メモリ1250に結合された、1つまたは複数の処理コアなどのプロセッサ1248を含み得る。プリント回路基板(PCB)ツールは、ユーザインターフェース1244を介してコンピュータ1246のユーザから受信されたPCB設計情報1242を処理するために、プロセッサ実行可能命令としてメモリ1250に記憶され得る。PCB設計情報1242は、図1のデータキャッシュ102、図3Aの第3のレベルキャッシュ308、図8Aのデフラグキャッシュ812、図11のデフラグキャッシュ1164、またはそれらの任意の組合せを含むパッケージ1240に対応するパッケージングされた半導体デバイスの、回路基板上での物理的な位置情報を含み得る。
【００８４】
コンピュータ1246は、回路基板上のパッケージングされた半導体デバイスの物理的な位置情報を含むデータ、ならびにトレースおよびビアなどの電気的接続のレイアウトを有するGERBERファイル1252などのデータファイルを生成するためにPCB設計情報1242を変換するように構成され得、パッケージングされた半導体デバイスは、図1のデータキャッシュ102、図3Aの第3のレベルキャッシュ308、図8Aのデフラグキャッシュ812、図11のデフラグキャッシュ1164、またはそれらの任意の組合せを含むパッケージ1240に対応する。他の実施形態では、変換されたPCB設計情報によって生成されるデータファイルは、GERBERフォーマット以外のフォーマットを有し得る。
【００８５】
GERBERファイル1252は、基板アセンブリプロセス1254において受信され、GERBERファイル1252内に記憶された設計情報に従って製造される、典型的なPCB1256などのPCBを作成するために使用され得る。たとえば、GERBERファイル1252は、PCB生産プロセスの様々なステップを実行するために、1つまたは複数の機械にアップロードされ得る。PCB1256には、典型的なプリント回路アセンブリ(PCA)1258を形成するために、パッケージ1240を含む電子構成要素が実装される。
【００８６】
PCA1258は、製品製造プロセス1260において受け取られ、第1の典型的な電子デバイス1262および第2の典型的な電子デバイス1264などの1つまたは複数の電子デバイスに統合され得る。例示的な非限定的な例として、第1の典型的な電子デバイス1262、第2の典型的な電子デバイス1264、または両方は、図1のデータキャッシュ102、図3Aの第3のレベルキャッシュ308、図8Aのデフラグキャッシュ812、図11のデフラグキャッシュ1164、またはそれらの任意の組合せが統合される、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、携帯情報端末(PDA)、固定ロケーションデータユニット、およびコンピュータの群から選択され得る。別の例示的な非限定的な例として、電子デバイス1262および1264のうちの1つまたは複数は、モバイルフォン、ハンドヘルドパーソナル通信システム(PCS)ユニット、携帯情報端末などのポータブルデータユニット、全地球測位システム(GPS)対応デバイス、ナビゲーションデバイス、メーター読取り機器などの固定ロケーションデータユニット、またはデータもしくはコンピュータ命令を記憶するかもしくは取り出す任意の他のデバイス、またはそれらの任意の組合せなどのリモートユニットであり得る。図12は本開示の教示によるリモートユニットを示しているが、本開示はこれらの図示のユニットに限定されない。本開示の実施形態は、メモリおよびオンチップ回路を含む能動集積回路を含む任意のデバイスにおいて適切に利用され得る。
【００８７】
図1のデータキャッシュ102、図3Aの第3のレベルキャッシュ308、図8Aのデフラグキャッシュ812、図11のデフラグキャッシュ1164、またはそれらの任意の組合せを含むデバイスは、例示的なプロセス1200で説明したように製作され、処理され、電子デバイスに組み込まれ得る。図1〜図11に関して開示した実施形態の1つまたは複数の態様は、ライブラリファイル1212、GDSIIファイル1226、およびGERBERファイル1252内など、様々な処理段階において含まれ、ならびに、研究コンピュータ1206のメモリ1210、設計コンピュータ1214のメモリ1218、コンピュータ1246のメモリ1250、基板アセンブリプロセス1254においてなど、様々な段階において使用される1つまたは複数の他のコンピュータまたはプロセッサ(図示せず)のメモリに記憶され、また、マスク1232、ダイ1236、パッケージ1240、PCA1258、プロトタイプの回路もしくはデバイス(図示せず)などの他の製品、図11のデフラグキャッシュ1164、またはそれらの任意の組合せなどの1つまたは複数の他の物理的な実施形態に組み込まれ得る。物理デバイス設計から最終製品までの生産の様々な典型的な段階が示されているが、他の実施形態では、より少ない段階が使用され得るか、または追加の段階が含まれ得る。同様に、プロセス1200は、単一のエンティティによってまたはプロセス1200の様々な段階を実行する1つまたは複数のエンティティによって実行され得る。
【００８８】
本明細書で開示する実施形態に関して説明する様々な例示的な論理ブロック、構成、モジュール、回路、およびアルゴリズムステップが、電子ハードウェア、プロセッサによって実行されるコンピュータソフトウェア、またはその両方の組合せとして実装され得ることを当業者はさらに諒解されよう。様々な例示的な構成要素、ブロック、構成、モジュール、回路、およびステップについて、概してそれらの機能の観点から上記で説明した。そのような機能がハードウェアとして実装されるか、プロセッサ実行可能命令として実装されるかは、特定の適用例および全体的なシステムに課された設計制約に依存する。当業者は説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は本開示の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【００８９】
本明細書で開示する実施形態に関して説明する方法またはアルゴリズムのステップは、直接ハードウェアで、プロセッサによって実行されるソフトウェアモジュールで、またはこの2つの組合せで具現化され得る。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、プログラマブル読取り専用メモリ(PROM)、消去可能プログラマブル読取り専用メモリ(EPROM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、コンパクトディスク読取り専用メモリ(CD-ROM)、または当技術分野で知られている任意の他の形態の非一時的記憶媒体内に存在し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体は、プロセッサと一体化され得る。プロセッサおよび記憶媒体は、特定用途向け集積回路(ASIC)内に存在し得る。ASICは、コンピューティングデバイスまたはユーザ端末内に存在し得る。代替として、プロセッサおよび記憶媒体は、コンピューティングデバイスまたはユーザ端末内に個別構成要素として存在し得る。
【００９０】
開示した実施形態の前述の説明は、開示した実施形態を当業者が作成または使用することを可能にするために提供される。これらの実施形態に対する様々な修正は、当業者には容易に明らかになり、本明細書で定義する原理は、本開示の範囲から逸脱することなく、他の実施形態に適用され得る。したがって、本開示は本明細書に示す実施形態に限定されるものではなく、以下の特許請求の範囲によって定義される原理および新規の特徴と一致する、可能な最も広い範囲を与えられるべきである。
【符号の説明】
【００９１】
100  システム
102  データキャッシュ
104  データアレイ
106  タグアレイ
108  状態アレイ
112  デフラグ回路
121  キャッシュライン
122  キャッシュライン
123  キャッシュライン
124  キャッシュライン
130  物理メモリ
136  第1のページ
138  第2のページ
141  第5のアドレス
142  第6のアドレス
143  第7のアドレス
144  第8のアドレス
151  第1のアドレス
152  第2のアドレス
153  第3のアドレス
154  第4のアドレス
160  メモリ管理ユニット、MMU
162  ページテーブル
164  VA
166  ポインタ
171  第1の仮想メモリアドレス
172  第2の仮想メモリアドレス
173  第3の仮想メモリアドレス
174  第4の仮想メモリアドレス
180  中央処理ユニット、CPU
182  命令セット
184  ロードおよび再マップ命令
186  要求
188  応答
202  第3のメモリアドレス
203  第4のメモリアドレス
205  第1のメモリアドレス
206  第2のメモリアドレス
220  メモリ
222  キャッシュベースのデフラグ動作
300  システム
302  プロセッサ
304  第1のレベルキャッシュ
306  第2のレベルキャッシュ
308  第3のレベルキャッシュ
310  メインメモリ
312  デフラグ回路
320  要求
350  物理アドレス
352  ソースアドレス
354  宛先アドレス
402  タグアレイ
404  タグ情報
410  データアレイ
412  データロケーション
414  第1のセグメント
420  メインメモリ
422  宛先アドレス
424  ソースアドレス
606  タグ情報
616  キャッシュロケーション
618  第2のページセグメント
706  タグ情報
716  キャッシュロケーション
718  第2のセグメント
800  システム
802  プロセッサ
804  第1のレベルキャッシュ
806  第2のレベルキャッシュ
808  第3のレベルキャッシュ
810  メインメモリ
812  デフラグキャッシュ
814  デフラグ回路
850  物理アドレス
852  ソースアドレス
854  宛先アドレス
900  方法
1000  方法
1100  デバイス
1110  デジタル信号プロセッサ、DSP
1122  システムオンチップデバイス
1126  ディスプレイコントローラ
1128  ディスプレイ
1130  入力デバイス
1132  メモリ
1134  コーダ/デコーダ、コーデック
1136  スピーカ
1138  マイクロフォン
1140  ワイヤレスコントローラ
1142  アンテナ
1144  電源
1156  データおよびコンピュータ実行可能命令
1164  デフラグキャッシュ
1200  電子デバイス製造プロセス、製造プロセス、プロセス
1202  物理デバイス情報
1204  ユーザインターフェース
1206  研究コンピュータ
1208  プロセッサ
1210  メモリ
1212  ライブラリファイル
1214  設計コンピュータ
1216  プロセッサ
1218  メモリ
1220  電子設計自動化(EDA)ツール、EDAツール
1222  回路設計情報
1224  ユーザインターフェース
1226  GDSIIファイル
1228  製作プロセス
1230  マスク製造業者
1232  マスク
1234  ウエハ
1236  ダイ
1238  パッケージングプロセス
1240  パッケージ
1242  PCB設計情報
1244  ユーザインターフェース
1246  コンピュータ
1248  プロセッサ
1250  メモリ
1252  GERBERファイル
1254  基板アセンブリプロセス
1256  PCB
1258  プリント回路アセンブリ、PCA
1260  製品製造プロセス
1262  第1の典型的な電子デバイス
1264  第2の典型的な電子デバイス
A1  タグ情報
A2  セグメント情報
B1  タグ情報
B2  セグメント情報
【図１】
2017501504.tif 000003
【図２】
2017501504.tif 000004
【図３Ａ】
2017501504.tif 000005
【図３Ｂ】
2017501504.tif 000006
【図４】
2017501504.tif 000007
【図５】
2017501504.tif 000008
【図６】
2017501504.tif 000009
【図７】
2017501504.tif 000010
【図８Ａ】
2017501504.tif 000011
【図８Ｂ】
2017501504.tif 000012
【図９】
2017501504.tif 000013
【図１０】
2017501504.tif 000014
【図１１】
2017501504.tif 000015
【図１２】
2017501504.tif 000016
【手続補正書】
【提出日】平成28年11月14日(2016.11.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
メモリの第1の物理メモリアドレスに記憶されたデータを前記メモリからデータキャッシュのキャッシュラインにロードするステップであって、前記第1の物理メモリアドレスが第1の仮想メモリアドレスにマップされる、ステップと、
ページテーブルに記憶されたルックアップ情報の修正を開始するステップであって、前記ページテーブルが仮想メモリに関連付けられ、前記ルックアップ情報が前記第1の仮想メモリアドレスに関連付けられ、前記ルックアップ情報の前記修正が前記第1の仮想メモリアドレスを前記メモリの前記第1の物理メモリアドレスから第2の物理メモリアドレスに再マップする、ステップと、
前記キャッシュラインが前記第1の物理メモリアドレスではなく前記第2の物理メモリアドレスに対応することを示すように、前記データキャッシュにおいて、前記キャッシュラインに関連付けられた情報を修正するステップと
を備える方法。
【請求項２】
前記データキャッシュにおいて、デフラグ動作を実行するための要求をプロセッサから受信するステップと、
前記データが前記データキャッシュから追い出されることに応答して、前記修正された情報に基づいて、前記データを前記第2の物理メモリアドレスに書き込むステップと、
前記データを前記第2の物理メモリアドレスに書き込んだ後に応答を前記プロセッサに送るステップであって、前記応答が、前記デフラグ動作が完了したことを示す、ステップと
をさらに備える、請求項1に記載の方法。
【請求項３】
前記要求が、ロードおよび再マップ命令に応答して受信され、前記プロセッサの命令セットが、前記ロードおよび再マップ命令を含む、請求項2に記載の方法。
【請求項４】
前記メモリがページに編成され、前記メモリのページが前記データキャッシュの複数のセットにまたがり、前記データキャッシュが各ページについての複数のセグメントを含み、前記方法が、
前記第1の物理メモリアドレスに関連付けられたキャッシュヒットに応答して、前記データを前記第1の物理メモリアドレスに対応する前記データキャッシュの第1のセグメントから前記第2の物理メモリアドレスに対応する前記データキャッシュの第2のセグメントにロードするステップと、
前記第1の物理メモリアドレスに関連付けられたキャッシュミスに基づいて、前記データを前記メモリから前記第2の物理メモリアドレスに対応する前記第2のセグメントにロードするステップと
をさらに備える、請求項1に記載の方法。
【請求項５】
前記キャッシュラインに関連付けられた前記情報を修正するステップが、前記キャッシュラインに関連付けられたタグアレイ中のタグ情報を修正するステップを備える、請求項1に記載の方法。
【請求項６】
前記キャッシュラインに関連付けられた前記情報を修正するステップが、前記第1の物理メモリアドレスに対応するタグアレイ中の第1のタグ情報を前記第2の物理メモリアドレスに対応する第2のタグ情報で上書きするステップを備える、請求項1に記載の方法。
【請求項７】
前記第2の物理メモリアドレスへの前記データの書込みをトリガするステップをさらに備える、請求項1に記載の方法。
【請求項８】
前記第2の物理メモリアドレスへの前記データの前記書込みをトリガするステップが、前記キャッシュラインをダーティとしてマークするステップを備える、請求項7に記載の方法。
【請求項９】
前記第1の物理メモリアドレスがメモリフラグメントに対応し、前記第2の物理メモリアドレスがデフラグ宛先に対応する、請求項1に記載の方法。
【請求項１０】
前記デフラグ宛先が、データを記憶する物理アドレスの間に配置された、前記メモリ中のフリー物理アドレスに対応する、請求項9に記載の方法。
【請求項１１】
前記データを前記キャッシュラインから第2のキャッシュラインにコピーするステップと、
前記キャッシュラインを無効化するステップであって、前記キャッシュラインが前記メモリの第1のセグメントに関連付けられ、前記第2のキャッシュラインが前記メモリの第2のセグメントに関連付けられる、ステップと
をさらに備える、請求項1に記載の方法。
【請求項１２】
電力を前記第1の物理メモリアドレスに対応するダイナミックランダムアクセス(DRAM)の一部分に低減することを含むパーシャルアレイセルフリフレッシュモードに入るステップをさらに備える、請求項1に記載の方法。
【請求項１３】
前記ページテーブルに含まれる前記ルックアップ情報を修正するステップであって、前記ルックアップ情報が前記ページテーブルのポインタを含む、ステップをさらに備える、請求項1に記載の方法。
【請求項１４】
前記メモリの第3の物理メモリアドレスに記憶された第2のデータを前記メモリから前記データキャッシュの第2のキャッシュラインにロードするステップであって、前記第3の物理メモリアドレスが第3の仮想メモリアドレスにマップされる、ステップと、
前記第2のキャッシュラインが前記第3の物理メモリアドレスではなく第4の物理メモリアドレスに対応することを示すように、前記データキャッシュにおいて、前記第2のキャッシュラインに関連付けられた第2の情報を修正するステップと、
前記修正された第2の情報に基づいて、前記第2のデータを前記第4の物理メモリアドレスに書き込むステップと
をさらに備える、請求項1に記載の方法。
【請求項１５】
前記メモリのページに対応する第1の複数の追加の物理メモリアドレスの各々に記憶された追加のデータを前記データキャッシュの追加のキャッシュラインにロードするステップと、
各追加のキャッシュラインが前記第1の複数の追加の物理メモリアドレスではなく第2の複数の追加の物理メモリアドレスのそれぞれの物理メモリアドレスに対応することを示すように、前記データキャッシュにおいて、前記追加のキャッシュラインの各々に関連付けられた追加の情報を修正するステップと、
前記修正された追加の情報に基づいて、前記追加のデータを前記第2の複数の追加の物理メモリアドレスに書き込むステップと
をさらに備える、請求項1に記載の方法。
【請求項１６】
前記データキャッシュに関連付けられた前記情報を修正するステップが、電子デバイスに統合されたプロセッサによって開始される、請求項1に記載の方法。
【請求項１７】
複数の物理メモリアドレスを備えるメモリと、
仮想メモリに関連付けられたページテーブルを記憶するように構成されたメモリ管理ユニット(MMU)であって、前記ページテーブルが第1の仮想メモリアドレスに関連付けられたルックアップ情報を含む、メモリ管理ユニット(MMU)と、
メモリデフラグ動作を実行するように構成されたデフラグ回路を含むデータキャッシュとを備え、前記メモリデフラグ動作が、
前記メモリの第1の物理メモリアドレスに記憶されたデータを前記メモリから前記データキャッシュのキャッシュラインにロードすることであって、前記第1の物理メモリアドレスが前記第1の仮想メモリアドレスにマップされる、ロードすることと、
前記ルックアップ情報の修正を開始することであって、前記ルックアップ情報の前記修正が前記第1の仮想メモリアドレスを前記メモリの前記第1の物理メモリアドレスから第2の物理メモリアドレスに再マップする、開始することと、
前記キャッシュラインが前記第1の物理メモリアドレスではなく前記第2の物理メモリアドレスに対応することを示すように、前記キャッシュラインに関連付けられた情報を修正することと
を含む、システム。
【請求項１８】
プロセッサをさらに備え、前記データキャッシュが、前記メモリデフラグ動作を実行するための要求を前記プロセッサから受信し、前記メモリデフラグ動作が完了したことを示す応答を前記プロセッサに送るようにさらに構成される、請求項17に記載のシステム。
【請求項１９】
前記応答が割込み信号を含み、前記プロセッサが前記メモリデフラグ動作に無関係な動作を実行する間に、前記データキャッシュが前記メモリデフラグ動作を実行する、請求項18に記載のシステム。
【請求項２０】
前記デフラグ回路が前記要求に応答して前記メモリデフラグ動作を実行するように構成される、請求項18に記載のシステム。
【請求項２１】
前記デフラグ回路が前記プロセッサから受信されたデータ要求に応答して前記メモリデフラグ動作を実行するように構成される、請求項18に記載のシステム。
【請求項２２】
少なくとも1つの追加のキャッシュをさらに備え、前記データキャッシュがメインメモリと第2のレベルキャッシュとの間で結合されたラストレベルキャッシュであり、前記修正を開始することが前記MMUにコマンドを発行することを含み、前記MMUが前記コマンドに応答して前記修正を開始するように構成される、請求項17に記載のシステム。
【請求項２３】
前記データキャッシュが、メインメモリおよびプロセッサに結合された専用デフラグキャッシュを備える、請求項17に記載のシステム。
【請求項２４】
前記第1の物理メモリアドレスがメモリフラグメントに対応し、前記第2の物理メモリアドレスがデフラグ宛先に対応する、請求項17に記載のシステム。
【請求項２５】
前記メモリおよび前記データキャッシュが統合される、モバイルフォン、タブレット、コンピュータ、通信デバイス、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、携帯情報端末(PDA)、および固定ロケーションデータユニットから選択された電子デバイスをさらに備える、請求項17に記載のシステム。
【請求項２６】
プロセッサによって実行されると、前記プロセッサに、
メモリの第1の物理メモリアドレスに記憶されたデータを前記メモリからデータキャッシュのキャッシュラインにロードするステップであって、前記第1の物理メモリアドレスが第1の仮想メモリアドレスにマップされる、ステップと、
ページテーブルに記憶されたルックアップ情報の修正を開始するステップであって、前記ページテーブルが仮想メモリに関連付けられ、前記ルックアップ情報が前記第1の仮想メモリアドレスに関連付けられ、前記ルックアップ情報の前記修正が前記第1の仮想メモリアドレスを前記メモリの前記第1の物理メモリアドレスから第2の物理メモリアドレスに再マップする、ステップと、
前記キャッシュラインが前記第1の物理メモリアドレスではなく前記第2の物理メモリアドレスに対応することを示すように、前記キャッシュラインに関連付けられた情報を修正するステップと
を備える動作を実行させる命令を備えるコンピュータ可読記憶媒体。
【請求項２７】
前記第1の物理メモリアドレスがメモリフラグメントに対応し、前記第2の物理メモリアドレスがデフラグ宛先に対応する、請求項26に記載のコンピュータ可読記憶媒体。
【請求項２８】
複数の物理メモリアドレスを使用してデータを記憶するための手段と、
データをキャッシュするための手段とを備え、前記データをキャッシュするための前記手段が、
メモリの第1の物理メモリアドレスに記憶されたデータを前記メモリからデータキャッシュのキャッシュラインにロードすることであって、前記第1の物理メモリアドレスが第1の仮想メモリアドレスにマップされる、ロードすることと、
ページテーブルに記憶されたルックアップ情報の修正を開始することであって、前記ページテーブルが仮想メモリに関連付けられ、前記ルックアップ情報が前記第1の仮想メモリアドレスに関連付けられ、前記ルックアップ情報の前記修正が前記第1の仮想メモリアドレスを前記メモリの前記第1の物理メモリアドレスから第2の物理メモリアドレスに再マップする、開始することと、
前記キャッシュラインが前記第1の物理メモリアドレスではなく前記第2の物理メモリアドレスに対応することを示すように、前記キャッシュラインに関連付けられた情報を修正することと
を行うように構成されたデフラグ回路を含む、システム。
【請求項２９】
少なくとも1つのダイに統合された、請求項28に記載のシステム。
【請求項３０】
前記第1の物理メモリアドレスがメモリフラグメントに対応し、前記第2の物理メモリアドレスがデフラグ宛先に対応する、請求項29に記載のシステム。
【国際調査報告】
2017501504.tif 000017
2017501504.tif 000018