(57)【要約】【課題】ステージング・エリアを管理するためのコンピュータ実施プロセス、コンピュータ・プログラム製品、装置を提供すること。【解決手段】ステージング・エリアを管理するためのコンピュータ実施プロセスの例示的な一実施形態は、識別された候補コールド・オブジェクトのためのステージング・エリアを作成し、識別された候補オブジェクトをステージング・エリア内へ移動させ、ステージング・エリアを含むメモリへのアプリケーション・アクセスを追跡把握し、特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているかどうかを判定する。その特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているという判定に応答して、その特定のオブジェクトを通常エリア内へ移動させ、現在の時刻が所定のしきい値を超えているかどうかを判定する。現在の時刻が所定のしきい値を超えているという判定に応答して、このコンピュータ実施プロセスは、残りのオブジェクトをステージング・エリアからコールド・エリアへ移動させる。【選択図】図９
2015505623.tif 000002
【特許請求の範囲】
【請求項１】
ステージング・エリアを管理するためのコンピュータ実施プロセスであって、
識別された候補コールド・オブジェクトのための前記ステージング・エリアを作成するステップと、
前記識別された候補オブジェクトを前記ステージング・エリア内へ移動させるステップと、
前記ステージング・エリアを含むメモリへのアプリケーション・アクセスを追跡把握するステップと、
特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているかどうかを判定するステップと、
前記特定のオブジェクトに関する前記使用頻度情報が所定のしきい値を超えているという判定に応答して、前記特定のオブジェクトを通常エリア内へ移動させるステップと、
現在の時刻が所定のしきい値を超えているかどうかを判定するステップと、
前記現在の時刻が所定のしきい値を超えているという判定に応答して、残りのオブジェクトを前記ステージング・エリアからコールド・エリアへ移動させるステップと
を含むコンピュータ実施プロセス。
【請求項２】
前記識別された候補コールド・オブジェクトのための前記ステージング・エリアを作成するステップが、
前記ステージング・エリアのための候補コールド・オブジェクトが存在するかどうかを判定するステップと、
前記ステージング・エリアのための候補コールド・オブジェクトが存在するという判定に応答して、前記ステージング・エリアが存在するかどうかを判定するステップと、
前記ステージング・エリアが存在しないという判定に応答して、メモリの通常エリアの部分を使用するステップであって、前記メモリが、マネージド・ランタイムによって使用されるメモリを表しており、前記メモリが、前記通常エリアに関連付けられている高パフォーマンス層からコールド・エリアの低パフォーマンス層までを含むパフォーマンス層において配列されており、前記メモリが、別々のタイプのメモリおよび同じタイプのメモリのうちの１つを含む、前記使用するステップと、
前記ステージング・エリアが存在するという判定に応答して、前記ステージング・エリアを使用するステップと
をさらに含む、請求項１に記載のコンピュータ実施プロセス。
【請求項３】
前記識別された候補コールド・オブジェクトのための前記ステージング・エリアを作成する前記ステップが、
従来の読み取り／書き込みバリア、ページ保護メカニズム、メモリ・キャッシュ／トランスレーション・ルック・アサイド・バッファ（ＴＬＢ）頻度データ、およびハードウェア支援プロファイリングを含む方法のセットから選択された方法の組合せを含む選択された方法を使用して、オブジェクトのアクセス・パターンを追跡把握するステップであって、トラッキング情報が、前記メモリ内のそれぞれのオブジェクトのアクセスの結果としてインクリメントされるアクセス・カウントを含む前記使用頻度情報、および最後のアクセスの時刻を含む、前記追跡把握するステップと、
方法のセットから選択された人気検知方法を使用して、通常のメモリ内のオブジェクトのセットを含むそれぞれのオブジェクトに関する前記使用頻度情報を使用して情報を収集するステップと、
アクセス頻度を形成するために前記使用頻度情報に従ってオブジェクトのそれぞれのオブジェクト・セットをランク付けするステップと
をさらに含む、請求項１に記載のコンピュータ実施プロセス。
【請求項４】
識別された候補コールド・オブジェクトのための前記ステージング・エリアを作成するステップが、
初期化値を含む構成データ構造を読み取るステップと、
前記構成データ構造内の初期値によって判定されたサイズの前記ステージング・エリアを作成するステップであって、前記初期値が、オブジェクトの所定の数およびコールド・エリアのサイズから選択された値を表す、前記作成するステップと
をさらに含む、請求項１に記載のコンピュータ実施プロセス。
【請求項５】
前記識別された候補オブジェクトを前記ステージング・エリア内へ移動させるステップが、
前記オブジェクトに関連付けられている情報に最後にアクセスした時刻を更新するステップをさらに含む、請求項１に記載のコンピュータ実施プロセス。
【請求項６】
残りのオブジェクトを前記ステージング・エリアからコールド・エリアへ移動させるステップが、
前記ステージング・エリアを除去するかどうかを決定するステップと、
前記ステージング・エリアを除去するという決定に応答して、前記ステージング・エリアを前記メモリから除去するステップと
をさらに含む、請求項１に記載のコンピュータ実施プロセス。
【請求項７】
前記ステージング・エリアを含むメモリへのアプリケーション・アクセスを追跡把握するステップが、すべての実際のオブジェクト・アクセスを検知するステップをさらに含む、請求項１に記載のコンピュータ実施プロセス。
【請求項８】
ステージング・エリアを管理するためのコンピュータ・プログラム製品であって、
その上に格納されているコンピュータ実行可能プログラム・コードを含む、コンピュータで記録可能なタイプのメディアを含み、前記コンピュータ実行可能プログラム・コードが、
識別された候補コールド・オブジェクトのための前記ステージング・エリアを作成するためのコンピュータ実行可能プログラム・コードと、
前記識別された候補オブジェクトを前記ステージング・エリア内へ移動させるためのコンピュータ実行可能プログラム・コードと、
前記ステージング・エリアを含むメモリへのアプリケーション・アクセスを追跡把握するためのコンピュータ実行可能プログラム・コードと、
特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているかどうかを判定するためのコンピュータ実行可能プログラム・コードと、
前記特定のオブジェクトに関する前記使用頻度情報が所定のしきい値を超えているという判定に応答して、前記特定のオブジェクトを通常エリア内へ移動させるためのコンピュータ実行可能プログラム・コードと、
現在の時刻が所定のしきい値を超えているかどうかを判定するためのコンピュータ実行可能プログラム・コードと、
前記現在の時刻が所定のしきい値を超えているという判定に応答して、残りのオブジェクトを前記ステージング・エリアからコールド・エリアへ移動させるためのコンピュータ実行可能プログラム・コードと
を含む、コンピュータ・プログラム製品。
【請求項９】
前記識別された候補コールド・オブジェクトのための前記ステージング・エリアを作成するためのコンピュータ実行可能プログラム・コードが、
前記ステージング・エリアのための候補コールド・オブジェクトが存在するかどうかを判定するためのコンピュータ実行可能プログラム・コードと、
前記ステージング・エリアのための候補コールド・オブジェクトが存在するという判定に応答して、前記ステージング・エリアが存在するかどうかを判定するためのコンピュータ実行可能プログラム・コードと、
前記ステージング・エリアが存在しないという判定に応答して、メモリの通常エリアの部分を使用するためのコンピュータ実行可能プログラム・コードであって、前記メモリが、マネージド・ランタイムによって使用されるメモリを表しており、前記メモリが、前記通常エリアに関連付けられている高パフォーマンス層からコールド・エリアの低パフォーマンス層までを含むパフォーマンス層において配列されており、前記メモリが、別々のタイプのメモリおよび同じタイプのメモリのうちの１つを含む、前記使用するためのコンピュータ実行可能プログラム・コードと、
前記ステージング・エリアが存在するという判定に応答して、前記ステージング・エリアを使用するコンピュータ実行可能プログラム・コードと
をさらに含む、請求項８に記載のコンピュータ・プログラム製品。
【請求項１０】
前記識別された候補コールド・オブジェクトのための前記ステージング・エリアを作成するためのコンピュータ実行可能プログラム・コードが、
従来の読み取り／書き込みバリア、ページ保護メカニズム、メモリ・キャッシュ／トランスレーション・ルック・アサイド・バッファ（ＴＬＢ）頻度データ、およびハードウェア支援プロファイリングを含む方法のセットから選択された方法の組合せを含む選択された方法を使用して、オブジェクトのアクセス・パターンを追跡把握するためのコンピュータ実行可能プログラム・コードであって、トラッキング情報が、前記メモリ内のそれぞれのオブジェクトのアクセスの結果としてインクリメントされるアクセス・カウントを含む前記使用頻度情報、および最後のアクセスの時刻を含む、前記追跡把握するためのコンピュータ実行可能プログラム・コードと、
方法のセットから選択された人気検知方法を使用して、通常のメモリ内のオブジェクトのセットを含むそれぞれのオブジェクトに関する前記使用頻度情報を使用して情報を収集するためのコンピュータ実行可能プログラム・コードと、
アクセス頻度を形成するために前記使用頻度情報に従ってオブジェクトのそれぞれのオブジェクト・セットをランク付けするためのコンピュータ実行可能プログラム・コードと
をさらに含む、請求項８に記載のコンピュータ・プログラム製品。
【請求項１１】
識別された候補コールド・オブジェクトのための前記ステージング・エリアを作成するためのコンピュータ実行可能プログラム・コードが、
初期化値を含む構成データ構造を読み取るためのコンピュータ実行可能プログラム・コードと、
前記構成データ構造内の初期値によって判定されたサイズの前記ステージング・エリアを作成するためのコンピュータ実行可能プログラム・コードであって、前記初期値が、オブジェクトの所定の数およびコールド・エリアのサイズから選択された値を表す、前記作成するためのコンピュータ実行可能プログラム・コードと
をさらに含む、請求項８に記載のコンピュータ・プログラム製品。
【請求項１２】
前記識別された候補オブジェクトを前記ステージング・エリア内へ移動させるためのコンピュータ実行可能プログラム・コードが、
前記オブジェクトに関連付けられている情報に最後にアクセスした時刻を更新するためのコンピュータ実行可能プログラム・コードをさらに含む、請求項８に記載のコンピュータ・プログラム製品。
【請求項１３】
残りのオブジェクトを前記ステージング・エリアからコールド・エリアへ移動させるためのコンピュータ実行可能プログラム・コードが、
前記ステージング・エリアを除去するかどうかを決定するためのコンピュータ実行可能プログラム・コードと、
前記ステージング・エリアを除去するという決定に応答して、前記ステージング・エリアを前記メモリから除去するためのコンピュータ実行可能プログラム・コードと
をさらに含む、請求項８に記載のコンピュータ・プログラム製品。
【請求項１４】
前記ステージング・エリアを含むメモリへのアプリケーション・アクセスを追跡把握するためのコンピュータ実行可能プログラム・コードが、すべての実際のオブジェクト・アクセスを検知するためのコンピュータ実行可能プログラム・コードをさらに含む、請求項８に記載のコンピュータ・プログラム製品。
【請求項１５】
ステージング・エリアを管理するための装置であって、
通信ファブリックと、
前記通信ファブリックに接続されているメモリであり、コンピュータ実行可能プログラム・コードを含む、前記メモリと、
前記通信ファブリックに接続されている通信ユニットと、
前記通信ファブリックに接続されている入力／出力ユニットと、
前記通信ファブリックに接続されているディスプレイと、
前記通信ファブリックに接続されているプロセッサ・ユニットと
を含み、前記プロセッサ・ユニットが、
識別された候補コールド・オブジェクトのための前記ステージング・エリアを作成することと、
前記識別された候補オブジェクトを前記ステージング・エリア内へ移動させることと、
前記ステージング・エリアを含むメモリへのアプリケーション・アクセスを追跡把握することと、
特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているかどうかを判定することと、
前記特定のオブジェクトに関する前記使用頻度情報が所定のしきい値を超えているという判定に応答して、前記特定のオブジェクトを通常エリア内へ移動させることと、
現在の時刻が所定のしきい値を超えているかどうかを判定することと、
前記現在の時刻が所定のしきい値を超えているという判定に応答して、残りのオブジェクトを前記ステージング・エリアからコールド・エリアへ移動させることと
を行うように前記装置に指示するために前記コンピュータ実行可能プログラム・コードを実行する、装置。
【請求項１６】
前記プロセッサ・ユニットが、前記識別された候補コールド・オブジェクトのための前記ステージング・エリアを作成するために前記コンピュータ実行可能プログラム・コードを実行し、
前記ステージング・エリアのための候補コールド・オブジェクトが存在するかどうかを判定することと、
前記ステージング・エリアのための候補コールド・オブジェクトが存在するという判定に応答して、前記ステージング・エリアが存在するかどうかを判定することと、
前記ステージング・エリアが存在しないという判定に応答して、メモリの通常エリアの部分を使用することであって、前記メモリが、マネージド・ランタイムによって使用されるメモリを表しており、前記メモリが、前記通常エリアに関連付けられている高パフォーマンス層からコールド・エリアの低パフォーマンス層までを含むパフォーマンス層において配列されており、前記メモリが、別々のタイプのメモリおよび同じタイプのメモリのうちの１つを含む、前記使用することと、
前記ステージング・エリアが存在するという判定に応答して、前記ステージング・エリアを使用することと
を行うように前記装置にさらに指示する、請求項１５に記載の装置。
【請求項１７】
前記プロセッサ・ユニットが、前記識別された候補コールド・オブジェクトのための前記ステージング・エリアを作成するために前記コンピュータ実行可能プログラム・コードを実行し、
従来の読み取り／書き込みバリア、ページ保護メカニズム、メモリ・キャッシュ／トランスレーション・ルック・アサイド・バッファ頻度データ、およびハードウェア支援プロファイリングを含む方法のセットから選択された方法の組合せを含む選択された方法を使用して、オブジェクトのアクセス・パターンを追跡把握することであって、前記使用頻度情報が、前記メモリ内のそれぞれのオブジェクトのアクセスの結果としてインクリメントされるアクセス・カウント、および最後のアクセスの時刻を含む、前記追跡把握することと、
方法のセットから選択された人気検知方法を使用して、通常のメモリ内のオブジェクトのセットを含むそれぞれのオブジェクトに関する前記使用頻度情報を使用して情報を収集することと、
アクセス頻度を形成するために前記使用頻度情報に従ってオブジェクトのそれぞれのオブジェクト・セットをランク付けすることと
を行うように前記装置にさらに指示する、請求項１５に記載の装置。
【請求項１８】
前記プロセッサ・ユニットが、識別された候補コールド・オブジェクトのための前記ステージング・エリアを作成するために前記コンピュータ実行可能プログラム・コードを実行し、
初期化値を含む構成データ構造を読み取ることと、
前記構成データ構造内の初期値によって判定されたサイズの前記ステージング・エリアを作成することであって、前記初期値が、オブジェクトの所定の数およびコールド・エリアのサイズから選択された値を表す、前記作成することと
を行うように前記装置にさらに指示する、請求項１５に記載の装置。
【請求項１９】
前記プロセッサ・ユニットが、前記識別された候補オブジェクトを前記ステージング・エリア内へ移動させるために前記コンピュータ実行可能プログラム・コードを実行し、
前記オブジェクトに関連付けられている情報に最後にアクセスした時刻を更新することを行うように前記装置にさらに指示する、請求項１５に記載の装置。
【請求項２０】
前記プロセッサ・ユニットが、残りのオブジェクトを前記ステージング・エリアからコールド・エリアへ移動させるために前記コンピュータ実行可能プログラム・コードを実行し、
前記ステージング・エリアを除去するかどうかを決定することと、
前記ステージング・エリアを除去するという決定に応答して、前記ステージング・エリアを前記メモリから除去することと
を行うように前記装置にさらに指示する、請求項１５に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般にはデータ処理システムにおけるメモリ管理に関し、より詳細には、データ処理システムにおいてデータ・ステージングを管理することに関する。
【背景技術】
【０００２】
メモリにおけるいくつかの異なる実行層（performing  tier）がさらに行き渡るようになるにつれて、コンピュータ・システムにおける基礎をなす物理メモリは、均一さが低下している。その上、クラウド・コンピューティング・テクノロジの出現に伴って、プロセッサおよびメモリに関して最大限のキャパシティまでマシンを利用するための取り組みの中で、仮想化された環境の使用が増大している。
【０００３】
アプリケーション・メモリ・スペースは、典型的には、いくつかの異なる基礎をなす物理メモリの実装形態にわたって広がっており、それらの実装形態はそれぞれ、潜在的に別々のアクセス・スピードを有する。したがって、アクセス頻度を意識した様式でアプリケーション・データを分配することに対する強いニーズがある。最も頻繁にアクセスされる、またはより人気のあるデータを、最も高速な物理メモリ上に置くことは、最適なアプリケーション・パフォーマンスを確かなものにし、電力消費を低減し、最高レベルのハードウェア利用度を可能にする。
【０００４】
この課題に対処するために、いくつかのデータ・アクセス頻度検知方法が開発されてきた。データ・アクセス頻度検知方法を、マネージド・ランタイムの仮想マシンに関連付けられているガベージ・コレクタなどのメモリ管理システムと組み合わせると、結果として、１つのアプリケーションに関連付けられているデータを、階層化されたメモリ環境内にインテリジェントに分配する機能がもたらされる。より良好な分配は、典型的には、アプリケーションの全体的なデータ・アクセス時間を改善する。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、完璧に正確なデータ・アクセス頻度検知は、アプリケーション・パフォーマンスに非常に大きなマイナスの影響を及ぼす。したがって、データ・アクセス頻度検知方法は、ランタイム・オーバーヘッドをより低くしておくために、いくらかのレベルの正確さを犠牲にしなければならない。低減された正確さによって、典型的には、非常に頻繁にアクセスされるデータのいくつかの断片が人気（popularity）検知プロセスによって見落とされることになる。少数の非常に人気があるデータ・アイテム（またはオブジェクト）でさえ、より低速な形態のメモリへ移動させると、アプリケーションのパフォーマンスを大幅に低下させる場合がある。
【課題を解決するための手段】
【０００６】
一実施形態によれば、ステージング・エリアを管理するためのコンピュータ実施プロセスは、識別された候補コールド・オブジェクト（candidate  cold  object）のためのステージング・エリアを作成し、識別された候補オブジェクトをステージング・エリア内へ移動させ、ステージング・エリアを含むメモリへのアプリケーション・アクセスを追跡把握し、特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているかどうかを判定する。その特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているという判定に応答して、その特定のオブジェクトを通常エリア内へ移動させ、現在の時刻が所定のしきい値を超えているかどうかを判定する。現在の時刻が所定のしきい値を超えているという判定に応答して、このコンピュータ実施プロセスは、残りのオブジェクトをステージング・エリアからコールド・エリアへ移動させる。
【０００７】
別の実施形態によれば、ステージング・エリアを管理するためのコンピュータ・プログラム製品は、その上に格納されているコンピュータ実行可能プログラム・コードを含む、コンピュータで記録可能なタイプのメディアを含む。そのコンピュータ実行可能プログラム・コードは、識別された候補コールド・オブジェクトのためのステージング・エリアを作成するためのコンピュータ実行可能プログラム・コードと、識別された候補オブジェクトをステージング・エリア内へ移動させるためのコンピュータ実行可能プログラム・コードと、ステージング・エリアを含むメモリへのアプリケーション・アクセスを追跡把握するためのコンピュータ実行可能プログラム・コードと、特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているかどうかを判定するためのコンピュータ実行可能プログラム・コードと、その特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているという判定に応答して、その特定のオブジェクトを通常エリア内へ移動させるためのコンピュータ実行可能プログラム・コードと、現在の時刻が所定のしきい値を超えているかどうかを判定するためのコンピュータ実行可能プログラム・コードと、現在の時刻が所定のしきい値を超えているという判定に応答して、残りのオブジェクトをステージング・エリアからコールド・エリアへ移動させるためのコンピュータ実行可能プログラム・コードとを含む。
【０００８】
別の実施形態によれば、ステージング・エリアを管理するための装置は、通信ファブリックと、通信ファブリックに接続されているメモリであり、コンピュータ実行可能プログラム・コードを含む、メモリと、通信ファブリックに接続されている通信ユニットと、通信ファブリックに接続されている入力／出力ユニットと、通信ファブリックに接続されているディスプレイと、通信ファブリックに接続されているプロセッサ・ユニットとを含む。そのプロセッサ・ユニットは、識別された候補コールド・オブジェクトのためのステージング・エリアを作成することと、識別された候補オブジェクトをステージング・エリア内へ移動させることと、ステージング・エリアを含むメモリへのアプリケーション・アクセスを追跡把握することと、特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているかどうかを判定することと、その特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているという判定に応答して、その特定のオブジェクトを通常エリア内へ移動させることと、現在の時刻が所定のしきい値を超えているかどうかを判定することと、現在の時刻が所定のしきい値を超えているという判定に応答して、残りのオブジェクトをステージング・エリアからコールド・エリアへ移動させることとを行うように装置に指示するためにコンピュータ実行可能プログラム・コードを実行する。
【０００９】
次いで、本開示のさらに完全な理解のために、添付の図面および詳細な説明と併せて理解しながら、以降の簡単な説明に対する参照を行う。ここでは、同様の参照番号は、同様の部分を表す。
【図面の簡単な説明】
【００１０】
【図１】本開示のさまざまな実施形態のために機能することができる例示的なネットワーク・データ処理システムのブロック図である。
【図２】本開示のさまざまな実施形態のために機能することができる例示的なデータ処理システムのブロック図である。
【図３】本開示のさまざまな実施形態のために機能することができるメモリ・マネージャのブロック図である。
【図４】本開示の一実施形態によるメモリ・マネージャによって管理されるメモリ構成のブロック図である。
【図５】本開示の一実施形態による、ステージング・エリアを伴うメモリ構成のブロック図である。
【図６】本開示の一実施形態による、ステージング・エリアを伴うメモリ構成のブロック図である。
【図７】本開示の一実施形態による、ステージング・エリアを伴うメモリ構成のブロック図である。
【図８】本開示の例示的な一実施形態によるメモリ・マネージャとともに使用されるメモリ構成のブロック図である。
【図９】本開示のさまざまな実施形態による、ステージング・エリアを管理するためのプロセスのフローチャートである。
【発明を実施するための形態】
【００１１】
１つまたは複数の実施形態の例示的な実施態様が以降で提供されているが、開示されているシステムまたは方法あるいはその両方は、任意の数の技術を使用して実施されることが可能である。本開示は、本明細書において例示および説明されている例示的な設計および実施態様を含む、以降で例示されている例示的な実施態様、図面、および技術にいっさい限定されるものではなく、添付の特許請求の範囲の範疇と、それらの均等物の最大範囲との中で変更されることが可能である。
【００１２】
当業者なら理解するであろうが、本開示の態様は、システム、方法、またはコンピュータ・プログラム製品として具体化されることが可能である。したがって、本開示の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、またはソフトウェアおよびハードウェアの態様を組み合わせている実施形態という形態を取ることができ、それらはすべて、本明細書においては一般に「回路」、「モジュール」、または「システム」と呼ばれることが可能である。さらに、本発明の態様は、その上で具体化されているコンピュータ可読プログラム・コードを有する１つまたは複数のコンピュータ可読メディアにおいて具体化されているコンピュータ・プログラム製品という形態を取ることができる。
【００１３】
１つまたは複数のコンピュータ可読メディアの任意の組合せが利用されることが可能である。そのコンピュータ可読メディアは、コンピュータ可読信号メディアまたはコンピュータ可読ストレージ・メディアであることが可能である。コンピュータ可読ストレージ・メディアは、たとえば、電子式の、磁気式の、光学式の、電磁気式の、赤外線式の、または半導体式のシステム、装置、もしくはデバイス、または上記のものの任意の適切な組合せであることが可能であるが、それらには限定されない。コンピュータ可読ストレージ・メディアのさらに具体的な例（非網羅的なリスト）には、１つもしくは複数のワイヤを有する電気接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭもしくはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤＲＯＭ）、光学ストレージ・デバイス、もしくは磁気ストレージ・デバイス、または上記のものの任意の適切な組合せが含まれるであろう。本文書の文脈においては、コンピュータ可読ストレージ・メディアは、命令実行システム、装置、もしくはデバイスによって、または命令実行システム、装置、もしくはデバイスに関連して使用するためのプログラムを含む、または格納することができる任意の有形のメディアであることが可能である。
【００１４】
コンピュータ可読信号メディアは、その中で、たとえばベースバンド内で、または搬送波の一部として具体化されているコンピュータ可読プログラム・コードを伴う伝搬されるデータ信号を含むことができる。そのような伝搬される信号は、さまざまな形態を取ることができ、それらの形態としては、電磁気、光学、またはそれらの任意の適切な組合せが含まれるが、それらには限定されない。コンピュータ可読信号メディアは、命令実行システム、装置、もしくはデバイスによって、または命令実行システム、装置、もしくはデバイスに関連して使用するためのプログラムを通信、伝搬、または移送することができる、コンピュータ可読ストレージ・メディアではない任意のコンピュータ可読メディアであることが可能である。
【００１５】
コンピュータ可読メディア上で具体化されているプログラム・コードは、任意の適切なメディアを使用して送信されることが可能であり、それらのメディアとしては、ワイヤレス、ワイヤ・ライン、光ファイバ・ケーブル、ＲＦなど、または上記のものの任意の適切な組合せが含まれるが、それらには限定されない。
【００１６】
本開示の態様のためのオペレーションを実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋等などのオブジェクト指向プログラミング言語と、「Ｃ」プログラミング言語または類似のプログラミング言語などの従来の手続き型プログラミング言語とを含む１つまたは複数のプログラミング言語の任意の組合せで書かれることが可能である。Ｊａｖａ（Ｒ）およびすべてのＪａｖａ（Ｒ）ベースの商標およびロゴは、米国、その他の国々、またはそれらの両方におけるＯｒａｃｌｅまたはその関連会社あるいはその両方の商標である。このプログラム・コードは、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンのソフトウェア・パッケージとして、部分的にユーザのコンピュータ上で、および部分的にリモート・コンピュータ上で、または全体的にリモート・コンピュータもしくはサーバ上で実行することができる。最後のシナリオにおいては、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続されることが可能であり、またはその接続は、（たとえば、インターネット・サービス・プロバイダを使用してインターネットを通じて）外部コンピュータに対して行われることが可能である。
【００１７】
以降では、本発明の実施形態による方法、装置、（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照しながら、本開示の態様について説明する。フローチャート図またはブロック図あるいはその両方のそれぞれのブロック、ならびにフローチャート図またはブロック図あるいはその両方におけるブロックどうしの組合せは、コンピュータ・プログラム命令によって実施されることが可能であるということが理解できるであろう。
【００１８】
これらのコンピュータ・プログラム命令は、マシンを生み出すために、汎用コンピュータ、専用コンピュータ、またはその他のプログラム可能なデータ処理装置のプロセッサに提供されることが可能であり、それによって、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行されるこれらの命令は、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定されている機能／行為を実施するための手段を生み出す。
【００１９】
これらのコンピュータ・プログラム命令は、特定の様式で機能するようにコンピュータまたはその他のプログラム可能なデータ処理装置に指示することができるコンピュータ可読メディア内に格納されることも可能であり、それによって、そのコンピュータ可読メディア内に格納されているそれらの命令は、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定されている機能／行為を実施する命令を含む製品を生み出す。
【００２０】
それらのコンピュータ・プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置上にロードされて、そのコンピュータまたはその他のプログラム可能な装置上で一連の機能ステップを実行させて、コンピュータ実施プロセスを生み出すこともでき、それによって、そのコンピュータまたはその他のプログラム可能な装置上で実行されるそれらの命令は、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定されている機能／行為を実施するためのプロセスを提供する。
【００２１】
次いで、図を参照すると、とりわけ図１〜図２を参照すると、例示的な実施形態が実施されることが可能であるデータ処理環境の例示的な図が提供されている。図１〜図２は、例示的なものにすぎず、さまざまな実施形態が実施されることが可能である環境に関して何らかの限定を主張または暗示することを意図されているものではないということを理解されたい。示されている環境に対する多くの変更が行われることが可能である。
【００２２】
図１は、例示的な実施形態が実施されることが可能であるデータ処理システムのネットワークの絵画図を示している。ネットワーク・データ処理システム１００は、例示的な実施形態が実施されることが可能であるコンピュータのネットワークである。ネットワーク・データ処理システム１００は、ネットワーク１０２を含み、ネットワーク１０２は、ネットワーク・データ処理システム１００内でともに接続されているさまざまなデバイスおよびコンピュータの間において通信リンクを提供するために使用されるメディアである。ネットワーク１０２は、ワイヤ、ワイヤレス通信リンク、または光ファイバ・ケーブルなどの接続を含むことができる。
【００２３】
示されている例においては、サーバ１０４およびサーバ１０６は、ストレージ・ユニット１０８とともにネットワーク１０２に接続している。加えて、クライアント１１０、１１２、および１１４は、ネットワーク１０２に接続している。クライアント１１０、１１２、および１１４は、たとえば、パーソナル・コンピュータまたはネットワーク・コンピュータであることが可能である。示されている例においては、サーバ１０４は、ブート・ファイル、オペレーティング・システム・イメージ、およびアプリケーションなどのデータをクライアント１１０、１１２、および１１４に提供する。クライアント１１０、１１２、および１１４は、この例においては、サーバ１０４に対するクライアントである。ネットワーク・データ処理システム１００は、図示されていないさらなるサーバ、クライアント、およびその他のデバイスを含むことができる。
【００２４】
示されている例においては、ネットワーク・データ処理システム１００は、互いに通信するためにプロトコルのトランスミッション・コントロール・プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）スイートを使用するネットワークおよびゲートウェイの世界規模の集合体に相当するネットワーク１０２を伴うインターネットである。インターネットの中心には、データおよびメッセージを回送する数千の商業系、政府系、教育系、およびその他のコンピュータ・システムから構成されている主要なノードまたはホスト・コンピュータの間における高速データ通信回線のバックボーンがある。もちろん、ネットワーク・データ処理システム１００は、たとえば、イントラネット、ローカル・エリア・ネットワーク（ＬＡＮ）、またはワイド・エリア・ネットワーク（ＷＡＮ）など、複数の異なるタイプのネットワークとして実装されることも可能である。図１は、一例として意図されており、さまざまな例示的な実施形態に関するアーキテクチャ上の限定として意図されているものではない。
【００２５】
図２を参照すると、本開示のさまざまな実施形態のために機能することができる例示的なデータ処理システムのブロック図が提示されている。この説明例においては、データ処理システム２００は、通信ファブリック２０２を含み、通信ファブリック２０２は、プロセッサ・ユニット２０４、メモリ２０６、永続ストレージ２０８、通信ユニット２１０、入力／出力（Ｉ／Ｏ）ユニット２１２、およびディスプレイ２１４の間における通信を提供する。
【００２６】
プロセッサ・ユニット２０４は、メモリ２０６へとロードされることが可能であるソフトウェアのための命令を実行するように機能する。プロセッサ・ユニット２０４は、特定の実施態様に応じて、１つもしくは複数のプロセッサのセットであることが可能であり、またはマルチプロセッサ・コアであることが可能である。さらに、プロセッサ・ユニット２０４は、単一のチップ上でメイン・プロセッサがセカンダリ・プロセッサとともに存在する１つまたは複数のヘテロジニアス・プロセッサ・システムを使用して実装されることが可能である。別の説明例としては、プロセッサ・ユニット２０４は、同じタイプの複数のプロセッサを含む対称型マルチプロセッサ・システムであることが可能である。
【００２７】
メモリ２０６および永続ストレージ２０８は、ストレージ・デバイス２１６の例である。ストレージ・デバイスは、情報を格納することができる任意のハードウェアであり、それらの情報は、たとえば、一時的なまたは永続的なあるいはその両方である、データ、機能的な形態のプログラム・コード、またはその他の適切な情報、あるいはそれらのすべてなどであるが、それらには限定されない。メモリ２０６は、これらの例においては、たとえば、ランダム・アクセス・メモリ、または任意のその他の適切な揮発性もしくは不揮発性のストレージ・デバイスであることが可能である。永続ストレージ２０８は、特定の実施態様に応じて、さまざまな形態を取ることができる。たとえば、永続ストレージ２０８は、１つまたは複数のコンポーネントまたはデバイスを含むことができる。たとえば、永続ストレージ２０８は、ハード・ドライブ、フラッシュ・メモリ、書き換え可能な光ディスク、書き換え可能な磁気テープ、または上記のものの何らかの組合せであることが可能である。永続ストレージ２０８によって使用されるメディアは、取り外し可能とすることもできる。たとえば、永続ストレージ２０８のために、取り外し可能なハード・ドライブが使用されることが可能である。
【００２８】
通信ユニット２１０は、これらの例においては、その他のデータ処理システムまたはデバイスとの通信を提供する。これらの例においては、通信ユニット２１０は、ネットワーク・インターフェース・カードである。通信ユニット２１０は、物理的な通信リンクおよびワイヤレス通信リンクのいずれかまたは両方の使用を通じて通信を提供することができる。
【００２９】
入力／出力ユニット２１２は、データ処理システム２００に接続されることが可能であるその他のデバイスとの間におけるデータの入力および出力を可能にする。たとえば、入力／出力ユニット２１２は、キーボード、マウス、またはその他の何らかの適切な入力デバイス、あるいはそれらのすべてを通じたユーザ入力のための接続を提供することができる。さらに、入力／出力ユニット２１２は、出力をプリンタへ送信することができる。ディスプレイ２１４は、情報をユーザに表示するためのメカニズムを提供する。
【００３０】
オペレーティング・システム、アプリケーション、またはプログラム、あるいはそれらのすべてのための命令は、ストレージ・デバイス２１６内に配置されることが可能であり、ストレージ・デバイス２１６は、通信ファブリック２０２を通じてプロセッサ・ユニット２０４と通信状態にある。これらの説明例においては、それらの命令は、永続ストレージ２０８上に機能的な形態で存在する。それらの命令は、プロセッサ・ユニット２０４による実行のためにメモリ２０６へとロードされることが可能である。さまざまな実施形態のプロセスは、コンピュータ実施命令を使用してプロセッサ・ユニット２０４によって実行されることが可能であり、それらのコンピュータ実施命令は、メモリ２０６などのメモリ内に配置されることが可能である。
【００３１】
これらの命令は、プログラム・コード、コンピュータ使用可能プログラム・コード、またはコンピュータ可読プログラム・コードと呼ばれ、プロセッサ・ユニット２０４内のプロセッサによって読み取られて実行されることが可能である。さまざまな実施形態におけるプログラム・コードは、メモリ２０６または永続ストレージ２０８などのさまざまな物理的なまたは有形のコンピュータ可読ストレージ・メディア上で具体化されることが可能である。
【００３２】
プログラム・コード２１８は、選択的に取り外し可能であるコンピュータ可読ストレージ・メディア２２０上に機能的な形態で配置されており、プロセッサ・ユニット２０４による実行のためにデータ処理システム２００へとロードまたは転送されることが可能である。プログラム・コード２１８およびコンピュータ可読ストレージ・メディア２２０は、これらの例においてはコンピュータ・プログラム製品２２２を形成している。一例においては、コンピュータ可読ストレージ・メディア２２０は、たとえば、永続ストレージ２０８の一部であるハード・ドライブなどのストレージ・デバイス上への転送のために、永続ストレージ２０８の一部であるドライブまたはその他のデバイス内に挿入されるまたは置かれる光ディスクまたは磁気ディスクなどの有形の形態であることが可能である。有形の形態においては、コンピュータ可読ストレージ・メディア２２０は、データ処理システム２００に接続されているハード・ドライブ、サム・ドライブ、またはフラッシュ・メモリなどの永続ストレージの形態を取ることもできる。その有形の形態のコンピュータ可読ストレージ・メディア２２０は、コンピュータ記録可能ストレージ・メディアとも呼ばれる。いくつかの例においては、コンピュータ可読ストレージ・メディア２２０は、取り外し可能でなくてもよい。
【００３３】
あるいは、プログラム・コード２１８は、通信ユニット２１０への通信リンクを通じて、または入力／出力ユニット２１２への接続を通じて、あるいはその両方を通じてコンピュータ可読ストレージ・メディア２２０からデータ処理システム２００へ転送されることが可能である。その通信リンクまたは接続あるいはその両方は、これらの説明例においては物理的またはワイヤレスであることが可能である。そのコンピュータ可読メディアは、プログラム・コードを含む通信リンクまたはワイヤレス伝送などの無形のメディアの形態を取ることもできる。
【００３４】
いくつかの例示的な実施形態においては、プログラム・コード２１８は、データ処理システム２００内での使用のために別のデバイスまたはデータ処理システムからネットワークを介して永続ストレージ２０８へダウンロードされることが可能である。たとえば、サーバ・データ処理システムにおいてコンピュータ可読ストレージ・メディア内に格納されているプログラム・コードは、サーバからネットワークを介してデータ処理システム２００へダウンロードされることが可能である。プログラム・コード２１８を提供するデータ処理システムは、サーバ・コンピュータ、クライアント・コンピュータ、または、プログラム・コード２１８を格納および送信することができるその他の何らかのデバイスであることが可能である。
【００３５】
一例として図２のデータ処理システム２００を使用して、ステージング・エリアを管理するためのコンピュータ実施プロセスが提示されている。プロセッサ・ユニット２０４は、識別された候補オブジェクトのためのステージング・エリアを作成し、ストレージ・デバイス２１６を使用して、識別された候補オブジェクトをステージング・エリア内へ移動させ、ステージング・エリアを含むストレージ・デバイス２１６のメモリへのアプリケーション・アクセスを追跡把握し、特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているかどうかを判定する。その特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているという判定に応答して、プロセッサ・ユニット２０４は、その特定のオブジェクトを通常エリア内へ移動させ、現在の時刻が所定のしきい値を超えているかどうかを判定する。現在の時刻が所定のしきい値を超えているという判定に応答して、プロセッサ・ユニット２０４は、残りのオブジェクトをステージング・エリアからコールド・エリアへ移動させる。
【００３６】
開示されているプロセスの一実施形態は、典型的に低いオーバーヘッドのステージング・エリアを提供し、頻繁にアクセスされないように思われるオブジェクトは、一定の時間にわたってそのステージング・エリア内に移転されてから、それらのオブジェクトが真に不人気であるかどうか、および相対的に低速な物理メモリへ移動されるかどうかが決定される。ステージング・エリアを作成することは、データ・オブジェクトのさらなる移動の潜在的な結果を確認するために、稼働しているシステムのデータ分離結果をテストするための機会を可能にする。プロファイリングを通じて、頻繁にアクセスされるとみなされるデータは、ステージング・エリアの外へ再び移動されることが可能であり、そして頻繁にアクセスされないデータは、より低い層のストレージ・レイヤへ移動されることが可能である。
【００３７】
図３を参照すると、本開示のさまざまな実施形態によるメモリ・マネージャのブロック図が提示されている。メモリ・マネージャ３００は、ストレージの階層内でストレージ層を作成してその利用を管理する能力を提供する実施形態の一例である。ストレージ階層は、最も高い優先度と、最も低い優先度との間にわたるメモリの複数のタイプおよびスピードを含む。
【００３８】
メモリ・マネージャ３００は、ステージング・エリア・コントローラ３０２、アクセス・パターン・トラッカ３０４、検知方法３０６、および構成３０８を含む機能要素を含んでいる。メモリ・マネージャ３００および関連付けられているコンポーネントはすべて、図２のデータ処理システム２００、または図１のデータ処理システム１００のネットワーク内のデータ処理システムなど、基礎をなすデータ処理システムからのサポートを活用する。メモリ・マネージャ３００の機能要素は、メモリ・マネージャ３００内の別々の物理的なコンポーネントとして、またはメモリ・マネージャ３００内に機能的に組み込まれた論理ユニットとして実装されることが可能である。メモリ・マネージャ３００は、きめの粗いページごとのプロセスよりもむしろ、オブジェクトごとのきめ細かいプロセスを使用してオブジェクトのメモリ・ロケーションを管理する能力を提供する。
【００３９】
ステージング・エリア・コントローラ３０２は、メモリのステージング・エリアを作成および除去すること、ならびにオブジェクトを、ステージング・エリアの中へのおよび外への移動のための候補として識別することを行う能力を提供する。ステージング・エリアは、ステージング・エリア・コントローラ３０２によって保持されるデータ構造であり、論理的には通常のメモリ・エリアの一部である。ステージング・エリアは、通常のメモリ・エリアのうちで以前に割り当てられた物理的な部分から、または通常のメモリ・エリアに論理的に関連付けられているとみなされている別個の割り当てから作成されることが可能である。
【００４０】
アクセス・パターン・トラッカ３０４は、データ・オブジェクトのアプリケーション・アクセスに関連付けられている情報を識別して保持するために使用される方法のセットを提供する。ステージング・エリアを含むメモリ内のオブジェクトのアクセス・パターンは、従来の読み取り／書き込みバリア、ページ保護メカニズム、メモリ・キャッシュ／トランスレーション・ルック・アサイド・バッファ（ＴＬＢ）頻度データ、ハードウェア支援プロファイリング、およびその他の類似した技術を含む選択された方法または方法の組合せを使用して、追跡把握されることが可能である。データ構造内で典型的に保持される情報は、たとえば、メモリ内のそれぞれのオブジェクトのアクセスの結果としてインクリメントされるアクセス・カウントを含むアクセス頻度情報、および最後のアクセスの時刻を含む。
【００４１】
検知方法３０６は、関連付けられている利用情報に従ってメモリ内のオブジェクトを識別してランク付けするために使用される方法のセットを提供する。たとえば人気検知方法は、方法のセットから選択されること、および通常のメモリ内のオブジェクトのセットを含むオブジェクトに対するアクセス要求に基づいて情報を収集するために使用されることが可能である。人気検知方法は、典型的には、アクセス頻度の形式としてのアクセスの回数に従って、それぞれのオブジェクトをランク付けする。より高くランク付けされているオブジェクトは、より低くランク付けされているオブジェクトよりも多くのデータ・アクセスを有する。最近のアクセスの別の表示を提供するために、最後のアクセスの時刻が使用されることも可能である。
【００４２】
この例においては、人気検知方法だけに完全に依存するよりもむしろ人気検知方法と組み合わせてステージング・エリアを使用することによって、人気検知エラーの典型的な悪影響が低減されることが可能になる。ステージング・エリアは、従来のダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）を超えてさらに低速な階層化されたストレージよりもはるかに低いデータ・アクセス・オーバーヘッドを有するように設計されている。より低いオーバーヘッドが意味しているのは、あるオブジェクトがアプリケーションによって頻繁にアクセスされている一方で人気検知方法によって見落とされているときに、そのオブジェクトがステージング・エリア内に置かれている場合には、より低速な物理メモリへ直接移動される場合と比較して、全体的なパフォーマンスは、典型的にはさほど悪影響を受けないということである。
【００４３】
人気検知方法は、人気を検知する上で確立的なまたはサンプリングのアプローチに依存しているが、ステージング・エリアは、すべての実際のオブジェクト・アクセスを検知して、人気のさらにいっそう正確な表示を提供する。人気検知と組み合わせたステージング・エリアの使用はまた、人気検知の自動的な調整を可能にする。ステージング・エリアは、人気検知方法によって見落とされた人気オブジェクトにおけるアクセス・パターンを明らかにすることによって人気検知方法のパラメータをプログラマチックに調整するために使用されることが可能である。
【００４４】
人気検知を伴うステージング・エリアは、人気検知方法にさらなる柔軟性を加える。ステージング・エリアは、人気検知方法がスピードのためにさらなる正確さを犠牲にするように構成されることを可能にする上で効果的であるためには人気検知アルゴリズムがどれぐらい厳格でなければならないかという点で、ある程度の柔軟性を提供する。
【００４５】
構成３０８は、メモリ・マネージャ３００のオペレーションを指示またはコントロールする能力を提供する。構成情報は、ステージング・エリアを作成するために使用されるロケーションに関する値を含むオペレーション情報（たとえば、パス情報、メモリのレンジ）のセット、初期サイズおよび最大サイズを含むステージング・エリアのサイズ、ならびにステージング・エリアをいつクリーンすべきかを示すタイム・ピリオドしきい値を含む。ステージング・エリアは、典型的には、必要とされる場合に動的に作成される。しかしながら、特定の状況においては、静的な専用のステージング・エリアが必要とされる場合がある。たとえば、特定の専門化されたハードウェア・ソリューションを、コールド・エリア・ストレージよりも高速である一方でアクセス・トラッキングも可能にする別個の専用のメモリとして使用することによって、ステージング・エリアとしての排他的な使用のための能力が提供される。専用のメモリ、たとえばソリッドステート・ディスクが、ステージング・エリアとしての使用のために特に初期化されて保持される。
【００４６】
図４を参照すると、本開示のさまざまな実施形態によるメモリ・マネージャによって管理されるメモリ構成のブロック図が提示されている。メモリ４００が、論理的なビューにおいて提示されており、その示されているメモリの複数の部分は、同じタイプまたはスピードのメモリを使用した１つの物理的なユニットとして実装される必要はない。メモリ４００は、図３のメモリ・マネージャ３００によって管理されるメモリの一例である。
【００４７】
メモリ４００は、通常エリア４０２およびコールド・エリア４０４を含む複数の部分を含んでいる。通常エリア４０２内に置かれているところが示されているオブジェクト４０６などのオブジェクトのセットは、メモリ４００内に保持されているが、同様に十分にメモリ内にあるその他のロケーションに配置されることも可能である。現在使用されているオブジェクトは、典型的には通常エリア４０２内に配置され、その一方で、頻繁には使用されないオブジェクトは、コールド・エリア４０４へ移る傾向がある。
【００４８】
メモリ４００は、論理的にはストレージ優先度４０８に従って配列されている。ストレージ優先度４０８は、コールド・エリア４０４の部分から最も遠い通常エリア４０２の部分に関連付けられている高優先度から、通常エリア４０２の部分から最も遠いコールド・エリア４０４の部分に関連付けられている低優先度へのメモリの配列を示している。現在使用されているオブジェクトは、典型的には通常エリア４０２内に配置され、その一方で、頻繁には使用されないオブジェクトは、コールド・エリア４０４へ移る傾向がある。
【００４９】
図３のメモリ・マネージャ３００のステージング・コントローラ３０２は、メモリのどのエリアをステージング・エリアへと変換すべきかを判定するためにデータ・アクセス頻度方法によって収集される人気データを使用する。一例においては、メモリ４００は、通常のＪａｖａ（Ｒ）ヒープである。どのオブジェクトがホット（人気）かまたはコールド（不人気）かを判定するための十分な時間を人気検知方法が有する前に、通常エリア４０２の一部分を変換してメモリのその部分を保護する必要はない。
【００５０】
図５を参照すると、本開示のさまざまな実施形態による、ステージング・エリアを伴うメモリ構成のブロック図が提示されている。ステージング・エリア５００は、図３のメモリ・マネージャ３００によって管理されるメモリの一部分の例である。
【００５１】
図４のメモリ４００の前の例を使用して、通常エリア４０２として前に定義されたメモリの一部分から、ステージング・エリア５００が作成される。ステージング・エリア５００の作成は、メモリのどのエリアをステージング・エリア５００へと変換すべきかを判定するためにデータ・アクセス頻度方法によって収集される人気データを使用して、図３のメモリ・マネージャ３００のステージング・コントローラ３０２によって実行される。一例においては、メモリ４００は、通常のＪａｖａ（Ｒ）ヒープであり、このＪａｖａ（Ｒ）ヒープは、ステージング・エリア５００へと変換される。別の例においては、ステージング・エリア５００は、通常エリア４０２の一部分から動的に作成されること、または通常エリア４０２に論理的に関連付けられていながらも別のストレージ・タイプまたはデバイスあるいはその両方の上に物理的に作成されることが可能である。ストレージ・エリア５００は、動的に、または構成情報とともに事前の割り当てを使用して静的に作成されることが可能である。
【００５２】
時間が経過して、人気検知方法がデータ・アクセス情報を得て処理するにつれて、オブジェクト・アクセス頻度は、より明らかになる。強化されたマネージド・ランタイムにおける図３のメモリ・マネージャ３００は、コールドと思われるオブジェクトどうしをまとめて、通常エリア４０２の一部であるステージング・エリア５００へとグループ化し、メモリを有効／無効にする技術をトラッキング・メカニズムとして使用する一例においては、ステージング・エリア５００へのすべてのメモリ・アクセスを無効にする。オブジェクト５０２およびオブジェクト５０４、ならびに、以前に通常エリア４０２内に配置されていたオブジェクトのセットを含むその他のオブジェクトが、ステージング・エリア５００内に配置されている。
【００５３】
ステージング・エリアを含むメモリへのアプリケーション・アクセスを無効にすることは、開示されているプロセスを実施する例示的な一実施形態である。開示されているプロセスの実施形態は、トラッキング方法のセットからの選択されたトラッキング方法を使用して、ステージング・エリア内のオブジェクトに対して行われたすべてのアクセスをモニタして追跡把握する。たとえば、特定のメモリ・レンジへのメモリ・アクセスをさらに徹底的に追跡把握するための変更が、オペレーティング・システム・カーネル内に組み込まれることが可能である。ステージング・エリア・メモリを提供するために使用される場合には、ソリッドステート・ディスクとともに、専用のアクセス・トラッキング・ハードウェア／ファームウェア・ソリューションが使用されることも可能である。
【００５４】
図６を参照すると、本開示のさまざまな実施形態による、ステージング・エリアを伴うメモリ構成のブロック図が提示されている。ステージング・エリア５００は、図３のメモリ・マネージャ３００によって管理されるメモリの一部分の例であり、その部分からのオブジェクトの移転が計画されている。
【００５５】
一例においては、ステージング・エリア５００へのメモリ・アクセスが無効にされている場合に、アプリケーションは、その無効にされているステータスにまったく気づかず、通常どおり実行を継続する。オブジェクト５０２、オブジェクト５０４、およびオブジェクト６００などのコールド・オブジェクトは、その他のオブジェクトよりも頻度は低いものの、依然として使用されているため、アプリケーションは、それらのコールド・オブジェクトに対する読み取りまたは書き込みを試みる。ステージング・エリア５００内のオブジェクト５０４などのコールド・オブジェクトを求めるアプリケーション要求は、この例を使用してメモリ保護違反をトリガーする。
【００５６】
ステージング・エリア５００を取り扱う図３のステージング・コントローラ３０２の信号ハンドラは、そのメモリ保護違反をキャッチし、どのオブジェクトがアクセスされたかを記録し、そのオブジェクトに関連付けられているアクセス頻度カウントを更新し、そのオブジェクトを含むメモリへのアクセスを一時的に許可する。ステージング・エリア５００内のすべてのアクセスされたオブジェクトに関してアクセス頻度カウントが保持され、オブジェクト５０４などのオブジェクトがあまりにも頻繁にアクセスされた場合には、そのオブジェクトが識別されて、ステージング・エリア５００から出されて通常エリア４０２のロケーション６０２へと移転されるための準備が行われる。別の例においては、ページ保護メカニズム、メモリ・キャッシュ／トランスレーション・ルック・アサイド・バッファ（ＴＬＢ）頻度データ、またはハードウェア支援プロファイリングが、ステージング・エリア内のオブジェクトに対するアクセスをトリガーして、使用情報の関連付けられている頻度を更新することができる。
【００５７】
図７を参照すると、本開示のさまざまな実施形態による、ステージング・エリアを伴うメモリ構成のブロック図が提示されている。ステージング・エリア５００は、図３のメモリ・マネージャ３００によって管理されるメモリの一部分の例であり、その部分から、オブジェクトが通常エリアへ移転される。
【００５８】
あまりにも頻繁にアクセスされたオブジェクト５０４は、ステージング・エリア５００から出されて通常エリア４０２へと移転される。オブジェクト５０４の移動とは対照的に、たとえば、低アクセス頻度情報に従ったオブジェクトの通常の移動は、通常エリア４０２の部分から最も遠いコールド・エリア４０４の部分への移動方向７００として示されている。
【００５９】
図８を参照すると、本開示のさまざまな実施形態によるメモリ・マネージャとともに使用されるメモリ構成のブロック図が提示されている。この例においては、図３のメモリ・マネージャ３００によって管理されるメモリの一部分のステージング・エリア５００は、もはや必要とされない。
【００６０】
通常エリア４０２の部分から最も遠いコールド・エリア４０４の部分への図７の移動方向７００によって示されているように、低アクセス頻度カウントに従った、オブジェクト５０２およびオブジェクト６００などのオブジェクトの通常の移動が生じている。図７のストレージ・エリア５００は削除されている。なぜなら、このレベルのストレージに対する必要性は、もはや存在しないためである。以前に図７のストレージ・エリア５００に割り当てられたメモリは、通常エリア４０２へ戻されている。ストレージ・エリア５００が通常エリア４０２以外のロケーションに配置されている場合には、そのストレージ・エリアは、論理的に除去され、再利用を待つ。
【００６１】
図９を参照すると、本開示のさまざまな実施形態による、ステージング・エリアを管理するためのプロセスのフローチャートが提示されている。この例においては、プロセス９００は、図３のメモリ・マネージャ３００によって管理されるメモリの一部分におけるステージング・エリアを管理することの一例である。
【００６２】
プロセス９００が開始し（ステップ９０２）、ステージング・エリアのための候補コールド・オブジェクトが存在するかどうかを判定する（ステップ９０４）。たとえば、アクセスされる頻度がより低いオブジェクトが、パフォーマンスの強度がより低いメモリへの移転のための候補とみなされる人気検知方法を用いて得られたアクセス頻度情報を使用して、候補コールド・オブジェクトが識別されることが可能である。ステージング・エリアのための候補コールド・オブジェクトが存在しないという判定に応答して、プロセス９００はループ・バックして、前と同様にステップ９０２を実行する。
【００６３】
ステージング・エリアのための候補コールド・オブジェクトが存在するという判定に応答して、プロセス９００は、ステージング・エリアが存在するかどうかを判定する（ステップ９０６）。ステージング・エリアが存在しないという判定に応答して、プロセス９００は、識別された候補コールド・オブジェクトのためのステージング・エリアを作成する（ステップ９０８）。ステージング・エリアは、構成ファイルまたはプロパティ・ファイルなど、メモリ・マネージャに関連付けられているデータ構造から得られたデフォルト・サイズを使用して作成されることが可能である。コールド・エリアのサイズ以下の初期サイズが設定されることが可能である。ステージング・エリアは、論理的には、使用中のメモリの通常エリアの一部分、または通常のメモリから物理的に離れたメモリの別の部分であることが可能である。ステージング・エリアは、通常エリアのタイプとは異なるタイプのメモリから割り当てられることも可能である。
【００６４】
ステージング・エリアが存在するという判定に応答して、プロセス９００は、識別された候補コールド・オブジェクトをステージング・エリア内へ移動させる（ステップ９１０）。識別された候補オブジェクトは、通常エリアからステージング・エリア内へ移転される。前述したように、ステージング・エリアは、通常エリアの一部分であることが可能であり、または物理的に別のロケーションおよびデバイスであることが可能である。
【００６５】
プロセス９００は、ステージング・エリアを含むメモリへのアプリケーション・アクセスを追跡把握する（ステップ９１２）。一例においては、プロセス９００は、ステージング・エリア内のオブジェクトのためのトラッキング・メカニズムとして、ステージング・エリアを含むメモリへのアプリケーション・アクセスを無効にする。ステージング・エリアのメモリへのアクセスを無効にすることによって、アプリケーションは、ステージング・エリア内のオブジェクトに対する使用およびアクセスを継続することが可能になるが、ステージング・エリア内のオブジェクトを求めるそれぞれのアプリケーション要求上でメモリ・アクセス違反が生じることになる。別の例においては、アプリケーション・アクセスは、ステージング・エリアのコンテンツを使用したいという要望をアクセス・トラッキング・メカニズム（ページ要求など）にアラートする。
【００６６】
プロセス９００は、ステージング・エリア内のそれぞれの特定のオブジェクトに関連付けられているアクセス頻度情報を更新する。ステージング・エリアへのアクセスをモニタして追跡把握する別の技術を使用している場合には、さらなる許可は必要とされないことが可能である。別の例においては、プロセス９００は、ステージング・エリア内のオブジェクトのアクセス・リストを含むデータ構造を保持し、アクセス頻度情報としてオブジェクトへのアクセスの回数および最後の参照時刻を表すアクセス・カウントなどの使用頻度インジケータをインクリメントすることを含めて、それぞれのさらなるオブジェクトに関するリストを更新する。
【００６７】
プロセス９００は、その特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているかどうかを判定する（ステップ９１４）。その特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているという判定に応答して、プロセス９００は、その特定のオブジェクトをステージング・エリアから通常エリア内へ移動させる（ステップ９１６）。
【００６８】
その特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えていないという判定に応答して、プロセス９００は、現在の時刻が所定のしきい値を超えているかどうかを判定する（ステップ９１８）。現在の時刻は、特定のオブジェクトに関する最後のアクセス以降のピリオドまたは持続時間を表す時間値に関する所定の値と比較される。たとえば、現在の時刻がＹであり、あるオブジェクトが時刻Ｘにアクセスされた場合には、その差は時間Ｚであり、時間Ｚが所定のしきい値を超えていなければ、そのオブジェクトを保持し、そうでなければ、そのオブジェクトを一掃する。現在の時刻が所定のしきい値を超えていないという判定に応答して、プロセス９００は終了する（ステップ９２８）。
【００６９】
現在の時刻が所定のしきい値を超えているという判定に応答して、プロセス９００は、残りのオブジェクトをステージング・エリアからコールド・エリアへ移動させる（ステップ９２０）。プロセス９００は、ステージング・エリアを除去するかどうかを決定する（ステップ９２２）。ステージング・エリアを除去するという決定に応答して、プロセス９００は、ステージングを除去する（ステップ９２４）。ステージングは、ステージング・エリアの現在の割り当て形態に応じて、物理的にまたは論理的に除去されることが可能である。ステージング・エリアを除去しないという決定に応答して、プロセス９００は、その後に終了する（ステップ９２８）。
【００７０】
メモリへのアクセスを無効にする代替例が使用されている場合には、プロセス９００は、ステージング・エリアを含むメモリへのアプリケーション・アクセスが無効にされていたことを認識している。次いで、ステージング・エリアを含むメモリが有効にされる。ステージング・エリアはもはや必要とされておらず、ひいてはステージング・エリアは除去されるため、それまでステージング・エリアとして使用されていたメモリは、通常エリアへ戻される。
【００７１】
したがって、例示的な一実施形態においては、ステージング・エリアを管理するためのコンピュータ実施プロセスが提示されている。このコンピュータ実施プロセスは、識別された候補コールド・オブジェクトのためのステージング・エリアを作成し、識別された候補オブジェクトをステージング・エリア内へ移動させ、ステージング・エリアを含むメモリへのアプリケーション・アクセスを追跡把握し、特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているかどうかを判定する。その特定のオブジェクトに関する使用頻度情報が所定のしきい値を超えているという判定に応答して、その特定のオブジェクトを通常エリア内へ移動させ、現在の時刻が所定のしきい値を超えているかどうかを判定する。現在の時刻が所定のしきい値を超えているという判定に応答して、このコンピュータ実施プロセスは、残りのオブジェクトをステージング・エリアからコールド・エリアへ移動させる。
【００７２】
図におけるフローチャートおよびブロック図は、本発明のさまざまな実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能、およびオペレーションを示している。この点については、フローチャートまたはブロック図におけるそれぞれのブロックは、指定された論理機能を実施するための１つまたは複数の実行可能な命令を含むコードのモジュール、セグメント、または部分を表すことができる。いくつかの代替実施態様においては、ブロックにおいて示されている機能どうしは、図において示されている順序から外れて生じることが可能であるということにも留意されたい。たとえば、連続して示されている２つのブロックは、実際には、実質的に同時に実行されることが可能であり、またはそれらのブロックは、含まれている機能に応じて、逆の順序で実行されることが可能である場合がある。ブロック図またはフローチャート図あるいはその両方のそれぞれのブロック、ならびにブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、指定された機能または行為を実行する専用のハードウェアベースのシステム、または専用のハードウェアおよびコンピュータ命令の組合せによって実施されることが可能であるということも認識されるであろう。
【００７３】
添付の特許請求の範囲におけるすべての手段またはステップ＋機能の要素の対応する構造、素材、行為、および均等物は、具体的に特許請求されているように、特許請求されているその他の要素と組み合わせて機能を実行するための任意の構造、素材、または行為を含むことを意図されている。本発明の説明は、例示および説明の目的で提示されており、網羅的であること、または開示されている形態の本発明に限定されることを意図されているものではない。当技術分野における標準的な技術者にとっては、本発明の範囲および趣旨から逸脱することなく、多くの変更形態および変形形態が明らかであろう。実施形態は、本発明の原理、および実際の応用を最もよく説明するために、ならびに、当技術分野における他の標準的な技術者が、本発明をさまざまな実施形態に関して、考えられる特定の使用に適しているさまざまな変更形態とともに理解することを可能にするために選ばれ、説明された。
【００７４】
本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、またはハードウェア要素およびソフトウェア要素の両方を含む実施形態という形態を取ることができる。好ましい一実施形態においては、本発明は、ソフトウェアにおいて実施され、そのソフトウェアは、ファームウェア、常駐ソフトウェア、マイクロコード、および、当業者によって認識されることが可能であるその他のソフトウェア・メディアを含むが、それらには限定されない。
【００７５】
完全に機能しているデータ処理システムというコンテキストにおいて本発明について説明してきたが、本発明のプロセスは、命令のコンピュータ可読メディアの形態およびさまざまな形態において配布されることが可能であるということ、ならびに本発明は、その配布を実行するために実際に使用される信号伝達メディアの特定のタイプを問わずに等しく適用されるということを当技術分野における標準的な技術者なら理解するであろうということに留意することが重要である。コンピュータ可読メディアの例としては、フロッピー（Ｒ）・ディスク、ハード・ディスク・ドライブ、ＲＡＭ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭなどの記録可能なタイプのメディアと、たとえば無線周波数および光波伝送などの伝送形態を使用するデジタルおよびアナログ通信リンク、有線またはワイヤレス通信リンクなどの伝送タイプのメディアとが含まれる。コンピュータ可読メディアは、特定のデータ処理システムにおける実際の使用のためにデコードされるコード化されたフォーマットの形態を取ることができる。
【００７６】
プログラム・コードを格納することまたは実行することあるいはその両方を行うのに適しているデータ処理システムは、システム・バスを通じてメモリ要素に直接または間接的に結合されている少なくとも１つのプロセッサを含むであろう。それらのメモリ要素は、プログラム・コードの実際の実行中に採用されるローカル・メモリと、バルク・ストレージと、実行中にコードがバルク・ストレージから取り出されなければならない回数を減らすために少なくとも何らかのプログラム・コードの一時的な格納を提供するキャッシュ・メモリとを含むことができる。
【００７７】
入力／出力またはＩ／Ｏデバイス（キーボード、ディスプレイ、ポインティング・デバイスなどを含むが、それらには限定されない）は、直接または介在するＩ／Ｏコントローラを通じてシステムに結合されることが可能である。
【００７８】
データ処理システムが、介在するプライベートまたはパブリック・ネットワークを通じてその他のデータ処理システムまたはリモートのプリンタもしくはストレージ・デバイスに結合されるようになることを可能にするために、ネットワーク・アダプタがシステムに結合されることも可能である。モデム、ケーブル・モデム、およびイーサネット（Ｒ）・カードは、現在利用可能なタイプのネットワーク・アダプタのうちのほんの一部である。
【図１】
2015505623.tif 000003
【図２】
2015505623.tif 000004
【図３】
2015505623.tif 000005
【図４】
2015505623.tif 000006
【図５】
2015505623.tif 000007
【図６】
2015505623.tif 000008
【図７】
2015505623.tif 000009
【図８】
2015505623.tif 000010
【図９】
2015505623.tif 000011
【国際調査報告】
2015505623.tif 000012
2015505623.tif 000013