(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-31
(54)【発明の名称】ダイナミックランダムアクセスメモリキャッシュをアプリケーションプロセスごとに第2のタイプのメモリとして提供する
(51)【国際特許分類】
G06F 12/0871 20160101AFI20241024BHJP
G06F 16/185 20190101ALI20241024BHJP
G06F 12/0893 20160101ALI20241024BHJP
G06F 12/0842 20160101ALI20241024BHJP
【FI】
G06F12/0871
G06F16/185
G06F12/0893 107
G06F12/0842
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024522058
(86)(22)【出願日】2022-10-24
(85)【翻訳文提出日】2024-04-11
(86)【国際出願番号】 EP2022079501
(87)【国際公開番号】W WO2023072790
(87)【国際公開日】2023-05-04
(32)【優先日】2021-10-26
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】100104880
【氏名又は名称】古部 次郎
(74)【復代理人】
【識別番号】100118108
【氏名又は名称】久保 洋之
(72)【発明者】
【氏名】アバリ、ブレント
(72)【発明者】
【氏名】ブユクトスノグル、アルパー
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205UU46
(57)【要約】
コンピューティングシステムでは、第1のタイプのメモリと第2のタイプのメモリが識別されてもよい。第2のタイプのメモリは、第1のタイプのメモリと比較して、より大きな記憶容量を有する一方で、第1のタイプのメモリよりも低速である。コンピューティングシステム内で実行されているアプリケーションプロセスが識別されてもよい。第1のタイプのメモリの領域は、アプリケーションプロセス用の第2のタイプのメモリのキャッシュとして提供されてもよい。
【選択図】
図5
【特許請求の範囲】
【請求項1】
コンピューティング環境における、プロセッサによる方法であって、
コンピューティングシステムにおける第1のタイプのメモリと第2のタイプのメモリを識別することであって、前記第2のタイプのメモリは、前記第1のタイプのメモリと比較してより大きな記憶容量を有する一方で、前記第1のタイプのメモリよりも低速である、識別することと、
前記コンピューティングシステムで実行されている複数のアプリケーションプロセスを識別することと、
前記プロセッサによって、前記第1のタイプのメモリのプライベート領域を、前記複数のアプリケーションプロセスの各々に対する前記第2のタイプのメモリのキャッシュとして提供することと、
前記プロセッサによって、前記複数のアプリケーションプロセスのうちの1つが活動状態または非活動状態になるために、前記第1のタイプのメモリ内の前記プライベート領域のうちの1つを動的に使用可能または使用不可能にすることと、
前記複数のアプリケーションプロセスのうちの前記1つに対する性能要件に基づいて、前記複数のアプリケーションプロセスのうちの前記1つのための前記第1のタイプのメモリにおける前記プライベート領域のうちの前記1つのサイズを動的に変更することと、
を含む、
方法。
【請求項2】
前記複数のアプリケーションプロセスの各1つに対して、前記第1のタイプのメモリのプライベート領域として機能するように、キャッシュコントローラ内のレジスタの範囲に格納されたアドレス範囲の第1のセットを定義することをさらに含む、
請求項1に記載の方法。
【請求項3】
前記複数のアプリケーションプロセスの各1つに対して、前記第2のタイプのメモリの第2のプライベート領域として機能するように、キャッシュコントローラ内のレジスタの範囲に格納されたアドレス範囲の第2のセットを定義することをさらに含む、
請求項1に記載の方法。
【請求項4】
前記複数のアプリケーションプロセスの各1つに対して、前記第1のタイプのメモリの前記プライベート領域へのアクセスを提供することであって、前記プライベート領域は、前記第2のタイプのメモリの前記キャッシュとして構成される、提供することと、
前記複数のアプリケーションプロセスの各1つに対して、前記第2のタイプのメモリ内の第2のプライベート領域へのアクセスを提供することであって、前記第2のプライベート領域は、前記複数のアプリケーションプロセスの各1つに対する前記第2のタイプのメモリ内の追加のキャッシュである、提供することと、
をさらに含む、
請求項1に記載の方法。
【請求項5】
キャッシュコントローラによって、前記複数のアプリケーションプロセスの各1つに対して、前記第1のタイプのメモリの前記プライベート領域および前記第2のタイプのメモリ内の前記第2のプライベート領域へのアクセスを調整することをさらに含む、
請求項4に記載の方法。
【請求項6】
前記プライベート領域を使用する前記複数のアプリケーションプロセスの各1つの性能に基づいて、前記第1のタイプのメモリの前記プライベート領域のサイズを調整することをさらに含み、前記サイズは増加または減少する、
請求項1に記載の方法。
【請求項7】
前記複数のアプリケーションプロセスのうちの1つ以上が活動状態であることを識別することであって、前記複数のアプリケーションプロセスのうちの前記1つ以上が、前記第1のタイプのメモリおよび前記第2のタイプのメモリを使用する、識別することと、
アプリケーションプロセス用の前記第1のタイプのメモリのプライベート領域として機能するように、キャッシュコントローラに格納された範囲のアドレス範囲の第1のセットをロードおよび格納することであって、各非活動状態のアプリケーションプロセス用の代替範囲の代替アドレス範囲が前記キャッシュコントローラから取り除かれる、ロードおよび格納することと、
をさらに含む、
請求項1に記載の方法。
【請求項8】
コンピューティング環境におけるコンピューティング効率を向上させるためのシステムであって、
実行可能命令を有する1つ以上のコンピュータを含み、前記実行可能命令は、実行されたとき、前記システムに対して、
コンピューティングシステムにおける第1のタイプのメモリと第2のタイプのメモリを識別することであって、前記第2のタイプのメモリは、前記第1のタイプのメモリと比較してより大きな記憶容量を有する一方で、前記第1のタイプのメモリよりも低速である、識別することと、
前記コンピューティングシステムで実行されている複数のアプリケーションプロセスを識別することと、
前記プロセッサによって、前記第1のタイプのメモリのプライベート領域を、前記複数のアプリケーションプロセスの各々に対する前記第2のタイプのメモリのキャッシュとして提供することと、
前記プロセッサによって、前記複数のアプリケーションプロセスのそれぞれの1つが活動状態または非活動状態になったときに、前記複数のアプリケーションプロセスの前記それぞれの1つに対して、前記第1のタイプのメモリ内の前記プライベート領域の1つを動的に使用可能または使用不可能にすることと、
前記複数のアプリケーションプロセスの前記それぞれの1つに対する1つ以上の性能要件に応じて、前記複数のアプリケーションプロセスの前記それぞれの1つに対する前記第1のタイプのメモリ内の前記プライベート領域の前記1つのサイズを動的に変更することと、
を実行させる、システム。
【請求項9】
前記実行可能命令は、実行されたとき、前記システムに対して、前記複数のアプリケーションプロセスの各1つに対する前記第1のタイプのメモリのプライベート領域として機能するように、キャッシュコントローラ内のレジスタの範囲に格納されたアドレス範囲の第1のセットを定義させる、
請求項8に記載のシステム。
【請求項10】
前記実行可能命令は、前記複数のアプリケーションプロセスの各1つに対して、前記第2のタイプのメモリの第2のプライベート領域として機能するように、キャッシュコントローラ内のレジスタの範囲に格納されたアドレス範囲の第2のセットを定義する、
請求項8に記載のシステム。
【請求項11】
前記実行可能命令は、実行されたとき、前記システムに対して、
前記複数のアプリケーションプロセスの各1つに対して、前記第1のタイプのメモリの前記プライベート領域へのアクセスを提供することであって、前記プライベート領域は、前記第2のタイプのメモリの前記キャッシュとして構成される、提供することと、
前記複数のアプリケーションプロセスの各1つに対して、前記第2のタイプのメモリ内の第2のプライベート領域へのアクセスを提供することであって、前記第2のプライベート領域は、前記複数のアプリケーションプロセスの各1つに対する前記第2のタイプのメモリ内の追加のキャッシュである、提供することと、を実行させる、
請求項8に記載のシステム。
【請求項12】
前記実行可能命令は、実行されたとき、前記システムに対して、キャッシュコントローラによって、前記複数のアプリケーションプロセスの各1つに対して、前記第1のタイプのメモリの前記プライベート領域および前記第2のタイプのメモリ内の前記第2のプライベート領域へのアクセスを調整させる、
請求項8に記載のシステム。
【請求項13】
前記実行可能命令は、実行されたとき、前記システムに対して、前記プライベート領域を使用する前記複数のアプリケーションプロセスの各1つの性能に基づいて、前記第1のタイプのメモリの前記プライベート領域のサイズを調整させ、前記サイズは増加または減少する、
請求項8に記載のシステム。
【請求項14】
前記実行可能命令は、実行されたとき、前記システムに対して、
前記複数のアプリケーションプロセスのうちの1つ以上が活動状態であることを識別することであって、前記複数のアプリケーションプロセスのうちの前記1つ以上が、前記第1のタイプのメモリおよび前記第2のタイプのメモリを使用する、識別することと、
アプリケーションプロセス用の前記第1のタイプのメモリのプライベート領域として機能するように、キャッシュコントローラに格納された範囲のアドレス範囲の第1のセットをロードおよび格納することであって、各非活動状態のアプリケーションプロセス用の代替範囲の代替アドレス範囲が前記キャッシュコントローラから取り除かれる、ロードおよび格納することと、を実行させる、
請求項8に記載のシステム。
【請求項15】
コンピューティング環境におけるコンピューティング効率を向上させるためのコンピュータプログラム製品であって、前記コンピュータプログラム製品は、
1つ以上のコンピュータ可読記憶媒体と、前記1つ以上のコンピュータ可読記憶媒体に集合的に格納されたプログラム命令とを含み、前記プログラム命令は、
コンピューティングシステムにおける第1のタイプのメモリと第2のタイプのメモリを識別するプログラム命令であって、前記第2のタイプのメモリは、前記第1のタイプのメモリと比較してより大きな記憶容量を有する一方で、前記第1のタイプのメモリよりも低速である、プログラム命令と、
前記コンピューティングシステムで実行されている複数のアプリケーションプロセスを識別するプログラム命令と、
前記プロセッサによって、前記第1のタイプのメモリのプライベート領域を、前記複数のアプリケーションプロセスの各々に対する前記第2のタイプのメモリのキャッシュとして提供するプログラム命令と、
前記複数のアプリケーションプロセスのそれぞれの1つが活動状態または非活動状態になったときに、前記プロセッサによって、前記複数のアプリケーションプロセスの前記それぞれの1つに対して、前記第1のタイプのメモリ内の前記プライベート領域の1つを動的に使用可能または使用不可能にするプログラム命令と、
前記複数のアプリケーションプロセスの前記それぞれの1つに対する1つ以上の性能要件に応じて、前記複数のアプリケーションプロセスの前記それぞれの1つに対する前記第1のタイプのメモリ内の前記プライベート領域の前記1つのサイズを動的に変更するプログラム命令と、
を含む、コンピュータプログラム製品。
【請求項16】
前記複数のアプリケーションプロセスの各1つに対して、前記第1のタイプのメモリのプライベート領域として機能するように、キャッシュコントローラ内のレジスタの範囲に格納されるアドレス範囲の第1のセットを定義するプログラム命令をさらに含む、
請求項15に記載のコンピュータプログラム製品。
【請求項17】
前記複数のアプリケーションプロセスの各1つに対して、前記第2のタイプのメモリの第2のプライベート領域として機能するように、キャッシュコントローラ内のレジスタの範囲に格納されたアドレス範囲の第2のセットを定義するプログラム命令をさらに含む、
請求項15に記載のコンピュータプログラム製品。
【請求項18】
前記複数のアプリケーションプロセスの各1つに対して、前記第1のタイプのメモリの前記プライベート領域へのアクセスを提供することであって、前記プライベート領域は、前記第2のタイプのメモリの前記キャッシュとして構成される、提供することと、
前記複数のアプリケーションプロセスの各1つに対して、前記第2のタイプのメモリ内の第2のプライベート領域へのアクセスを提供することであって、前記第2のプライベート領域は、前記複数のアプリケーションプロセスの各1つに対する前記第2のタイプのメモリ内の追加のキャッシュである、提供することと、
キャッシュコントローラによって、前記複数のアプリケーションプロセスの各1つに対して、前記第1のタイプのメモリの前記プライベート領域および前記第2のタイプのメモリ内の前記第2のプライベート領域へのアクセスを調整することと、
を実行するプログラム命令をさらに含む、
請求項15に記載のコンピュータプログラム製品。
【請求項19】
前記プライベート領域を使用する前記複数のアプリケーションプロセスの各1つの性能に基づいて、前記第1のタイプのメモリの前記プライベート領域のサイズを調整するプログラム命令をさらに含み、前記サイズは増加または減少する、
請求項15に記載のコンピュータプログラム製品。
【請求項20】
前記複数のアプリケーションプロセスのうちの1つ以上が活動状態であることを識別することであって、前記複数のアプリケーションプロセスのうちの前記1つ以上が、前記第1のタイプのメモリおよび前記第2のタイプのメモリを使用する、識別することと、
アプリケーションプロセス用の前記第1のタイプのメモリのプライベート領域として機能するように、キャッシュコントローラに格納された範囲のアドレス範囲の第1のセットをロードおよび格納することであって、各非活動状態のアプリケーションプロセス用の代替範囲の代替アドレス範囲が前記キャッシュコントローラから取り除かれる、ロードおよび格納することと、
を実行するプログラム命令をさらに含む、
請求項15に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般にコンピューティングシステムに関し、より詳細には、1つ以上のコンピューティングプロセッサを使用するアプリケーションプロセスごとに、第2のタイプのメモリのキャッシュとしてダイナミック・ランダム・アクセス・メモリ(DRAM)を提供するための様々な実施形態に関する。
【背景技術】
【0002】
現代社会では、コンピュータシステムは当たり前のものとなっている。コンピュータシステムは、職場、家庭、学校などで見かけることがある。コンピュータシステムは、データを処理及び保存するための、データ・ストレージ・システムやディスク・ストレージ・システムを含むことがある。近年、ソフトウェア技術もハードウェア技術も目覚しい進歩を遂げている。新しい技術によって、より多くの機能が追加され、これらのコンピュータシステムの使用において、より高い利便性が提供されている。現在、処理すべき情報量は非常に増えている。そのため、さまざまな情報を処理もしくは保存もしくは検索することまたはその組み合わせが、解決すべき重要な課題となっている。
【発明の概要】
【0003】
様々な実施形態が、プロセッサによってコンピューティングシステムに第1のタイプのメモリを第2のタイプのメモリとして提供するために例示される。コンピューティングシステム内で実行されているアプリケーションプロセスが識別されてもよい。第1のタイプのメモリの領域は、アプリケーションプロセス用の第2のタイプのメモリのキャッシュとして提供されてもよい。
【0004】
本発明の利点が容易に理解されるように、添付の図面に図示される特定の実施形態を参照することにより、上記で簡単に説明した本発明のより具体的な説明を行う。これらの図面は、本発明の典型的な実施形態のみを描いており、したがって、その範囲を限定するものではないと考えられることを理解した上で、本発明は、添付図面の使用を通して、さらに具体的かつ詳細に描写および説明される。
【図面の簡単な説明】
【0005】
【
図1】本発明のある実施形態による例示的なクラウドコンピューティングノードを示すブロック図である。
【
図2】本発明のある実施形態による例示的なクラウドコンピューティング環境を示す追加のブロック図である。
【
図3】本発明のある実施形態による抽象化モデルレイヤを示す追加のブロック図である。
【
図4】本発明の様々な側面間の例示的な機能関係を示す追加のブロック図である。
【
図5】本発明の態様が実現され得る、アプリケーションプロセスごとの第2のタイプのメモリのキャッシュとしてDRAMを提供する動作を示す追加のブロック図である。
【
図6】本発明の態様に従った、アプリケーションプロセスごとに、第1のタイプのメモリの領域を第2のタイプのメモリのキャッシュとして提供するための例示的な方法を示すフローチャート図である。
【
図7】本発明の態様が実現され得る、コンピューティングシステムにおいてアプリケーションプロセスごとに第2のタイプのメモリのキャッシュとして使用するためのDRAMの領域を提供するための例示的な方法を示すフローチャート図である。
【発明を実施するための形態】
【0006】
コンピューティング環境は、メインストレージ(「メインメモリ」と呼ばれることもある)と、第2のストレージを含むことがある。メインストレージは、例えばストレージクラスメモリなどの第2のストレージに比べて高速なアクセスストレージであると考えられる。さらに、メインストレージのアドレッシングは、ストレージクラスメモリのアドレッシングよりも単純であると考えられる。古典的なメインストレージの外部にある外部ストレージスペースであるストレージクラスメモリは、直接アクセス記憶装置よりも高速なアクセスと永続性を提供する。ストレージクラスメモリは、複数の入出力(入力/出力)アダプタを介してコンピューティングシステムに接続された固体デバイスの群として実装されることがあり、このアダプタは、入力/出力デバイスの技術を中央処理装置のメモリバスにマッピングするために使用される。
【0007】
さらに、メモリデバイスは、コンピュータシステムを含む、さまざまな用途で使用される。マイクロプロセッサまたは同様のデバイスを含んだコンピュータシステムやその他の電子機器は、一般的にDRAMを使用して実装されるシステムメモリを一般に含む。
【0008】
さらに、プロセッサの性能とメモリの性能は、異なる割合で向上している。プロセッサの性能とメモリ容量が増加すると、仮想マシンと仮想コンテナがさらに増える。メモリのメカニズムによっては、アクセス時間が遅いものも含み、したがってコンピューティングシステムのメモリ容量は、多くの場合、高速アクセスの揮発性メモリと低速アクセスの永続ストレージの間でバランスが取られている。既存のシステムの中には、DRAMと組み合わせてストレージクラスまたは永続メモリを使用するものもある。ストレージクラスメモリと様々な速度のDRAMをもつシステムの中には、含まれるDRAMの速度の遅さを克服するために、DRAMの様々な速度に対応するメモリバッファを使用するものがある。システムによっては、異なるプロセッサに通信可能に接続されたローカルDRAMおよびリモートDRAMを使用するものもあり、時には「メモリインセプション」と呼ばれることもある。
【0009】
このタイプのシステムはこのように実装されるため、アプリケーションプロセスごとに、第1のタイプのメモリ(例えばDRAM)の領域を第2のタイプのメモリのキャッシュとして使用することが望ましい。第2のタイプのメモリは、より低速で、より大容量で、もしくは安価である、またはその組み合わせのDRAMであってもよい。また、第2のタイプのメモリは、例えば、不揮発性メモリ(NVM)フラッシュ、相変化材料(PCM)、その他の新興メモリなどの他のタイプのメモリであってもよい。一態様では、新興メモリは大容量であるが、一般的にDRAMより遅い(レイテンシ、帯域幅である)。したがって、本発明では、DRAMの領域を、アプリケーションプロセスごとの第2のタイプのメモリのキャッシュとして使用する。
【0010】
いくつかの実装では、コンピューティングシステムにおいて、第1のタイプのメモリと第2のタイプのメモリが識別されてもよい。第2のタイプのメモリは、第1のタイプのメモリと比較して、より大きな記憶容量を有する一方で、第1のタイプのメモリよりも低速である。コンピューティングシステム内で実行されている複数のアプリケーションプロセスが識別されてもよい。第1のタイプのメモリのプライベート領域は、プロセッサによって、アプリケーションプロセスの各1つに対して、第2のタイプのメモリのキャッシュとして提供されてもよい。第1のタイプのメモリのプライベート領域のうちの1つは、プロセッサによって、複数のアプリケーションプロセスのうちのそれぞれの1つが活動状態または非活動状態になったときに、複数のアプリケーションプロセスのうちのそれぞれの1つに対して動的に使用可能または使用不可能にされてもよい。第1のタイプのメモリ内のプライベート領域のうちの1つのサイズは、複数のアプリケーションプロセスのうちのそれぞれの1つに対して、複数のアプリケーションプロセスのうちのそれぞれの1つに対する1つ以上の性能要件に応じて変更されてもよい。
【0011】
他の実施態様では、本発明は、SCM(ストレージクラスメモリ;システムDRAMと第2のタイプのメモリが別々のメモリチャネル(例えば、Open Coherent Accelerator Processorインタフェース「OCAPI」)もしくは、DRAMとSCMの両方に付属するメモリバッファまたはその両方の上にあると仮定した第2のタイプのメモリ)のキャッシュとして構成可能な第1のタイプのメモリ(例えば、DRAM)の領域を提供する。1つの側面では、SCMのDRAMキャッシュは、第2のタイプのメモリと同様の費用と容量で動作する可能性がある(例えば、32TBのSCMでバックアップされた4テラバイトの「TB」DRAMキャッシュ(平均で32TBのDRAMに近いレイテンシと帯域幅を持つ))。
【0012】
本開示はクラウドコンピューティングに関する詳細な説明を含むが、本明細書に記載した教示の実装形態はクラウドコンピューティング環境に限定されない。むしろ、本発明の実施形態は、現在公知のまたは将来開発される他の任意の種類のコンピュータ環境と共に実施することができる。
【0013】
クラウドコンピューティングは、設定可能なコンピューティングリソースの共有プール(例えばネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、記憶装置、アプリケーション、仮想マシンおよびサービス)へ、簡便かつオンデマンドのネットワークアクセスを可能にするためのサービス提供のモデルであり、リソースは、最小限の管理労力または最小限のサービスプロバイダとのやり取りによって速やかに準備(provision)およびリリースできるものである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、および少なくとも4つの実装モデルを含むことがある。
【0014】
特性は以下の通りである。
【0015】
オンデマンド・セルフサービス:クラウドの消費者は、サービスプロバイダとの人的な対話を必要することなく、必要に応じて自動的に、サーバ時間やネットワークストレージなどのコンピューティング能力を一方的に準備することができる。
【0016】
ブロード・ネットワークアクセス:コンピューティング能力はネットワーク経由で利用可能であり、また、標準的なメカニズムを介してアクセスできる。それにより、異種のシンまたはシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、パーソナルデジタルアシスタント(PDA))による利用が促進される。
【0017】
リソースプーリング:プロバイダのコンピューティングリソースはプールされ、マルチテナントモデルを利用して複数の消費者に提供される。様々な物理リソースおよび仮想リソースが、需要に応じて動的に割り当ておよび再割り当てされる。一般に消費者は、提供されたリソースの正確な位置を管理または把握していないため、位置非依存(location independence)の感覚がある。ただし消費者は、より高い抽象レベル(例えば、国、州、データセンタ)では場所を特定可能な場合がある。
【0018】
迅速な柔軟性(elasticity):コンピューティング能力は、迅速かつ柔軟に準備することができるため、場合によっては自動的に、直ちにスケールアウトし、また、速やかにリリースされて直ちにスケールインすることができる。消費者にとって、準備に利用可能なコンピューティング能力は無制限に見える場合が多く、任意の時間に任意の数量で購入することができる。
【0019】
測定されるサービス:クラウドシステムは、サービスの種類(例えば、ストレージ、処理、帯域幅、アクティブユーザアカウント)に適したある程度の抽象化レベルでの測定機能を活用して、リソースの使用を自動的に制御し最適化する。リソース使用量を監視、制御、および報告して、利用されるサービスのプロバイダおよび消費者の両方に透明性を提供することができる。
【0020】
サービスモデルは以下の通りである。
【0021】
サービスとしてのソフトウェア(SaaS):消費者に提供される機能は、クラウドインフラストラクチャ上で動作するプロバイダのアプリケーションを利用できることである。当該そのアプリケーションは、ウェブブラウザ(例えばウェブメール)などのシンクライアントインタフェースを介して、各種のクライアント装置からアクセスできる。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージや、個別のアプリケーション機能さえも含めて、基礎となるクラウドインフラストラクチャの管理や制御は行わない。ただし、ユーザ固有の限られたアプリケーション構成の設定はその限りではない。
【0022】
サービスとしてのプラットフォーム(PaaS):消費者に提供される機能は、プロバイダによってサポートされるプログラム言語およびツールを用いて、消費者が作成または取得したアプリケーションを、クラウドインフラストラクチャに展開(deploy)することである。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージを含む、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、展開されたアプリケーションを制御でき、かつ場合によってはそのホスティング環境の構成も制御できる。
【0023】
サービスとしてのインフラストラクチャ(IaaS):消費者に提供される機能は、オペレーティングシステムやアプリケーションを含み得る任意のソフトウェアを消費者が展開および実行可能な、プロセッサ、ストレージ、ネットワーク、および他の基本的なコンピューティングリソースを準備することである。消費者は、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、オペレーティングシステム、ストレージ、および展開されたアプリケーションを制御でき、かつ場合によっては一部のネットワークコンポーネント(例えばホストファイアウォール)を部分的に制御できる。
【0024】
展開モデルは以下の通りである。
【0025】
プライベートクラウド:このクラウドインフラストラクチャは、特定の組織専用で運用される。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
【0026】
コミュニティクラウド:このクラウドインフラストラクチャは、複数の組織によって共有され、共通の関心事(例えば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンス)を持つ特定のコミュニティをサポートする。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
【0027】
パブリッククラウド:このクラウドインフラストラクチャは、不特定多数の人々や大規模な業界団体に提供され、クラウドサービスを販売する組織によって所有される。
【0028】
ハイブリッドクラウド:このクラウドインフラストラクチャは、2つ以上のクラウドモデル(プライベート、コミュニティまたはパブリック)を組み合わせたものとなる。それぞれのモデル固有の実体は保持するが、標準または個別の技術によってバインドされ、データとアプリケーションの可搬性(例えば、クラウド間の負荷分散のためのクラウドバースティング)を実現する。
【0029】
クラウドコンピューティング環境は、ステートレス性(statelessness)、低結合性(low coupling)、モジュール性(modularity)および意味論的相互運用性(semantic interoperability)に重点を置いたサービス指向タイプ環境である。クラウドコンピューティングの中核にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0030】
図1に、クラウドコンピューティングノードの一例を模式的に示す。なお、クラウドコンピューティングノード10は好適なクラウドコンピューティングノードの一例に過ぎず、本明細書に記載する本開示の実施形態の使用や機能の範囲について何らの限定も示唆するものではない。いずれにせよ、クラウドコンピューティングノード10は、実装されること、もしくは上述した機能のいずれかを行うこと、またはその両方が可能である。
【0031】
クラウドコンピューティングノード10には、コンピュータシステム/サーバ12があり、これらは、他の数多くの汎用または専用のコンピューティングシステム環境または構成と共に動作可能である。コンピュータシステム/サーバ12と共に使用するのに適した周知のコンピューティングシステム、環境もしくは構成またはその組み合わせの一例としては、パーソナルコンピュータシステム、サーバコンピュータシステム、シンクライアント、シッククライアント、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家電製品、ネットワークPC、ミニコンピュータシステム、メインフレームコンピュータシステム、および上記のシステムまたは装置のいずれかを含む分散タイプクラウドコンピューティング環境などが挙げられる。
【0032】
コンピュータシステム/サーバ12は、コンピュータシステムによって実行されるプログラムモジュールなどの、コンピュータシステム実行可能命令との一般的な関連において説明できる。一般に、プログラムモジュールは、特定のタスクを実行するかまたは特定のデータタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含むことができる。コンピュータシステム/サーバ12は、通信ネットワークを介してリンクされたリモート処理装置によってタスクが実行される分散タイプクラウドコンピューティング環境で実施することができる。分散タイプクラウドコンピューティング環境において、プログラムモジュールは、メモリ記憶装置を含む、ローカルおよびリモート両方のコンピュータシステム記憶媒体に記憶することができる。
【0033】
図1に示すように、クラウドコンピューティングノード10中のコンピュータシステム/サーバ12は汎用コンピュータ装置として示されている。コンピュータシステム/サーバ12のコンポーネントの一例としては、1つ以上のプロセッサもしくは処理ユニット16、システムメモリ28、およびシステムメモリ28を含む種々のシステムコンポーネントをプロセッサ16に接続するバス18が挙げられる。
【0034】
バス18は、種々のバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、アクセラレーテッドグラフィックスポート(AGP)、およびプロセッサまたはローカルバスを含む複数種類のバス構造のうち1つ以上の任意のものを表す。一例として、かかるアーキテクチャは、インダストリスタンダードアーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオエレクトロニクススタンダーズアソシエーション(VESA)ローカルバス、およびペリフェラルコンポーネントインターコネクト(PCI)バスを含む。
【0035】
コンピュータシステム/サーバ12は一般的に、種々のコンピュータシステム可読媒体を含む。かかる媒体は、コンピュータシステム/サーバ12によってアクセス可能な任意の利用可能な媒体でよく、揮発性媒体および不揮発性媒体の両方と、取り外し可能媒体および取り外し不能媒体の両方とを含むことができる。
【0036】
システムメモリ28は、RAM30もしくはキャッシュメモリ32またはその両方など、揮発性メモリとしてのコンピュータシステム可読媒体を含むことができる。コンピュータシステム/サーバ12はさらに、他の取り外し可能/取り外し不能コンピュータシステム可読媒体および揮発性/不揮発性コンピュータシステム可読媒体を含んでもよい。一例として、ストレージシステム34は、取り外し不能な不揮発性磁気媒体(不図示。一般に「ハードドライブ」と呼ばれる)への読み書きのために設けることができる。また、図示は省略するが、取り外し可能な不揮発性磁気ディスク(例えば、フロッピーディスク)への読み書きのための磁気ディスクドライブ、および取り外し可能な不揮発性光学ディスク(CD-ROM、DVD-ROMや他の光学媒体など)への読み書きのための光学ディスクドライブを設けることができる。これらの例において、それぞれを、1つ以上のデータ媒体インタフェースによってバス18に接続することができる。以下でさらに図示および説明するように、システムメモリ28は、本発明の実施形態の機能を実行するように構成されたプログラムモジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含むことができる。
【0037】
一例として、プログラムモジュール42のセット(少なくとも1つ)を有するプログラム/ユーティリティ40は、オペレーティングシステム、1つ以上のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータと同様に、メモリ28に記憶することができる。オペレーティングシステム、1つ以上のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータ、またはそれらのいくつかの組み合わせの各々は、ネットワーク環境の実装形態を含むことができる。プログラムモジュール42は一般に、本明細書に記載の本発明の実施形態の機能もしくは方法またはその両方を実行する。
【0038】
また、コンピュータシステム/サーバ12は、キーボード、ポインティングデバイス、ディスプレイ24などの1つ以上の外部装置14、ユーザとコンピュータシステム/サーバ12との対話を可能にする1つ以上の装置、もしくはコンピュータシステム/サーバ12と1つ以上の他のコンピュータ装置との通信を可能にする任意の装置(例えば、ネットワークカードやモデムなど)またはこれらの組み合わせと通信することができる。かかる通信は、入力/出力(入力/出力)インタフェース22を介して行うことができる。さらに、コンピュータシステム/サーバ12は、ネットワークアダプタ20を介して1つ以上のネットワーク(ローカルエリアネットワーク(LAN)、汎用広域ネットワーク(WAN)、もしくはパブリックネットワーク(例えばインターネット)またはこれらの組み合わせなど)と通信することができる。図示するように、ネットワークアダプタ20は、バス18を介してコンピュータシステム12の他のコンポーネントと通信することができる。なお、図示は省略するが、他のハードウェアコンポーネントもしくはソフトウェアコンポーネントまたはその両方を、コンピュータシステム12と併用することができる。それらの一例としては、マイクロコード、デバイスドライバ、冗長化処理ユニット、外付けディスクドライブアレイ、RAIDシステム、テープドライブ、データアーカイブストレージシステムなどがある。
【0039】
図2を参照すると、例示的なクラウドコンピューティング環境50が示されている。図示するように、クラウドコンピューティング環境50は1つ以上のクラウドコンピューティングノード10を含む。これらに対して、クラウド消費者が使用するローカルコンピュータ装置(例えば、パーソナルデジタルアシスタント(PDA)もしくは携帯電話54A、デスクトップコンピュータ54B、ラップトップコンピュータ54C、もしくは自動車コンピュータシステム54Nまたはこれらの組み合わせなど)は通信を行うことができる。ノード10は互いに通信することができる。ノード10は、例えば、上述のプライベート、コミュニティ、パブリックもしくはハイブリッドクラウドまたはこれらの組み合わせなど、1つ以上のネットワークにおいて、物理的または仮想的にグループ化(不図示)することができる。これにより、クラウドコンピューティング環境50は、サービスとしてのインフラストラクチャ、プラットフォームもしくはソフトウェアまたはこれらの組み合わせを提供することができ、クラウド消費者はこれらについて、ローカルコンピュータ装置上にリソースを維持する必要がない。なお、
図2に示すコンピュータ装置54A~Nの種類は例示に過ぎず、コンピューティングノード10およびクラウドコンピューティング環境50は、任意の種類のネットワークもしくはネットワークアドレス指定可能接続(例えば、ウェブブラウザの使用)またはその両方を介して、任意の種類の電子装置と通信可能であることを理解されたい。
【0040】
図3を参照すると、クラウドコンピューティング環境50(
図2)によって提供される機能的抽象化レイヤのセットが示されている。なお、
図3に示すコンポーネント、レイヤおよび機能は例示に過ぎず、本発明の実施形態はこれらに限定されないことをあらかじめ理解されたい。図示するように、以下のレイヤおよび対応する機能が提供される。
【0041】
デバイスレイヤ55は、クラウドコンピューティング環境50において様々なタスクを実行するために、電子機器、センサ、アクチュエータ、およびその他のオブジェクトが組み込まれたもしくはスタンドアローンの、物理デバイスもしくは仮想デバイスまたはその両方を含む。デバイスレイヤ55の各デバイスは、デバイスから得られた情報がそこに提供されること、もしくは他の抽象化レイヤからの情報がデバイスに提供されること、またはその両方があり得るように、他の機能抽象化レイヤへのネットワーキング機能を組み込む。一実施形態では、デバイスレイヤ55を含む様々なデバイスは、「モノのインターネット」(IoT)として集合的に知られるエンティティのネットワークを組み込んでもよい。このようなエンティティのネットワークは、当業者であれば理解するように、多種多様な目的を達成するための、データの相互通信、収集、および発信を可能にする。
【0042】
図示のようなデバイスレイヤ55は、図示のように、センサ52、アクチュエータ53、処理、センサ、およびネットワーキング電子機器を統合した「学習」サーモスタット56、カメラ57、制御可能な家庭用コンセント/ソケット58、および制御可能な電気スイッチ59を含む。他の可能なデバイスは、様々な追加のセンサデバイス、ネットワーキングデバイス、電子デバイス(遠隔制御デバイスなど)、追加のアクチュエータ・デバイス、冷蔵庫や洗濯機/乾燥機などのいわゆる「スマート」家電製品、および多種多様な他の可能な相互接続オブジェクトを含むが、これらに限定されない。
【0043】
ハードウェアおよびソフトウェアレイヤ60は、ハードウェアコンポーネントおよびソフトウェアコンポーネントを含む。ハードウェアコンポーネントの例には、メインフレーム61、縮小命令セットコンピュータ(RISC)アーキテクチャベースのサーバ62、サーバ63、ブレードサーバ64、記憶装置65、ならびにネットワークおよびネットワークコンポーネント66が含まれる。いくつかの実施形態において、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア67およびデータベースソフトウェア68を含む。
【0044】
仮想化レイヤ70は、抽象化レイヤを提供する。当該レイヤから、例えば以下の仮想エンティティを提供することができる:仮想サーバ71、仮想ストレージ72、仮想プライベートネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティングシステム74、ならびに仮想クライアント75。
【0045】
一例として、管理レイヤ80は以下の機能を提供することができる。リソース準備81は、クラウドコンピューティング環境内でタスクを実行するために利用されるコンピューティングリソースおよび他のリソースの動的な調達を可能にする。計量および価格設定82は、クラウドコンピューティング環境内でリソースが利用される際のコスト追跡、およびこれらのリソースの消費に対する請求またはインボイス送付を可能にする。一例として、これらのリソースはアプリケーションソフトウェアのライセンスを含んでよい。セキュリティは、データおよび他のリソースに対する保護のみならず、クラウドコンシューマおよびタスクの識別確認を可能にする。ユーザポータル83は、コンシューマおよびシステム管理者にクラウドコンピューティング環境へのアクセスを提供する。サービスレベル管理84は、要求されたサービスレベルが満たされるように、クラウドコンピューティングリソースの割り当ておよび管理を可能にする。サービス品質保証(SLA)の計画および履行85は、SLAに従って将来必要になると予想されるクラウドコンピューティングリソースの事前手配および調達を可能にする。
【0046】
ワークロードレイヤ90は、クラウドコンピューティング環境が利用可能な機能の例を提供する。このレイヤから提供可能なワークロードおよび機能の例には、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育の配信93、データ分析処理94、取引処理95、ならびに、コンピューティング環境におけるアプリケーションプロセスごとの第2のタイプのメモリのキャッシュとして第1のタイプのメモリの領域を提供するためのワークロードおよび機能96が含まれる。さらに、コンピューティング環境におけるアプリケーションプロセスごとの第2のタイプのメモリのキャッシュとして第1のタイプのメモリの領域を提供するためのワークロードおよび機能96は、データ分析(様々な環境センサからのデータ収集および処理を含む)もしくは分析操作またはその両方などの操作を含んでもよい。当業者であれば、コンピューティング環境におけるアプリケーションプロセスごとの第2のタイプのメモリのキャッシュとして第1のタイプのメモリの領域を提供するためのワークロードおよび機能96は、本発明の図示された実施形態の様々な目的を達成するために、ハードウェアおよびソフトウェア60、仮想化70、管理80、および他のワークロード90(例えば、データ分析処理94など)におけるものなど、様々な抽象化レイヤの他の部分と連携して動作することもできることを理解するであろう。
【0047】
先に述べたように、本発明は、コンピューティング環境におけるアプリケーションプロセスごとの第2のタイプのメモリのキャッシュとして第1のタイプのメモリの領域を提供するための新規の解決策を提供する。動作において、既存のDRAMがアクセスされ、利用されてもよい。第1のタイプのメモリの領域は、ソフトウェアプロセスごとにキャッシュとして構成されてもよい。キャッシュコントローラに格納されたアドレス範囲のセットは、ローカルな第1のタイプのメモリ(例えば、ローカルDRAMまたは「高速メモリ」または「低レイテンシ」メモリ)の領域をプロセスごとのキャッシュとして定義する。追加の実装では、キャッシュコントローラに格納されたアドレス範囲の別のセットが、プロセスごとに第2のタイプの領域として、第2のタイプのメモリ(例えば、低速メモリまたは高レイテンシメモリ)内の領域を定義する。
【0048】
動作において、アプリケーションプロセス(例えば、ソフトウェアプロセス)が活動状態になると、オペレーティングシステム(「OS」)は、アプリケーションプロセスをプロセッサコア上で実行/運行できるようにする。さらに、OSは、プロセスの各アドレス範囲をキャッシュコントローラにロードしてもよい。したがって、第1のタイプのメモリの領域および第2のタイプのメモリの領域における定義された領域のキャッシュのサイズは、ソフトウェアプロセスごとに固有であり、キャッシュ領域に基づくアプリケーションの性能に応じて調整されてもよい(例えば、性能もしくはキャッシュから得られる利益またはその両方に基づいて増加もしくは減少する)。
【0049】
このように、個々のプロセスそれぞれに対する第1のタイプのメモリおよび第2のタイプのメモリ内のキャッシュは、その活動の持続期間(例えば、アプリケーションプロセスが活動状態である間)では活動状態になる。活動状態のアプリケーションプロセスが非活動状態になると、第1のタイプのメモリ内のそれぞれのキャッシュ領域アドレスは、キャッシュコントローラから消去される。しかし、第1のタイプのメモリの容量が十分であれば、プロセスのキャッシュ内容は第1のタイプのメモリにそのまま残る可能性がある。2つ以上のアプリケーションプロセスが活動状態である場合、それぞれのキャッシュ領域はプロセスごとにプライベートであり、他の活動状態であるプロセスの領域内容によって置き換えられることはない。
【0050】
いくつかの実装では、コンピューティングシステムにおいて、第1のタイプのメモリと第2のタイプのメモリが識別されてもよい。第2のタイプのメモリは、第1のタイプのメモリと比較して、より大きな記憶容量を有する一方で、第1のタイプのメモリよりも低速である。コンピューティングシステム内で実行されている複数のアプリケーションプロセスが識別されてもよい。第1のタイプのメモリのプライベート領域は、プロセッサによって、アプリケーションプロセスの各1つに対して、第2のタイプのメモリのキャッシュとして提供されてもよい。第1のタイプのメモリ内のプライベート領域のうちの1つは、プロセッサによって、複数のアプリケーションプロセスのうちのそれぞれの1つが活動状態または非活動状態になったときに、複数のアプリケーションプロセスのうちのそれぞれの1つに対して動的に使用可能または使用不可能にされてもよい。第1のタイプのメモリ内のプライベート領域のうちの1つのサイズは、複数のアプリケーションプロセスのうちのそれぞれの1つに対して、複数のアプリケーションプロセスのうちのそれぞれの1つに対する1つまたは複数の性能要件に応じて変更されてもよい。
【0051】
次に
図4に目を向けると、図示された実施形態の様々なメカニズムに従って、コンピューティング環境においてコンピューティング環境におけるアプリケーションプロセスごとの第2のタイプのメモリのキャッシュとして第1のタイプのメモリの領域を提供するためのシステム400の例示的な機能コンポーネントを示すブロック図である。一態様では、
図1~3で説明されたコンポーネント、モジュール、サービス、アプリケーション、もしくは機能またはその組み合わせのうちの1つ以上が、
図4で使用されてもよい。これからわかるように、機能ブロックの多くは、先に
図1~3で説明したのと同じ説明的な意味で、機能の「モジュール」または「コンポーネント」とみなされてもよい。
【0052】
当業者であれば理解するように、システム400内の様々な機能ユニットの描写は、機能ユニットが
図1のコンピュータシステム/サーバ12の内部または外部、あるいは分散コンピューティングコンポーネント内もしくは分散コンピューティングコンポーネント間の他の場所またはその両方に配置される可能性があるため、説明のためのものである。
【0053】
一態様において、システム400は、仮想化コンピューティングサービス(すなわち、仮想化コンピューティング、仮想化ストレージ、仮想化ネットワーキングなど)を提供してもよい。より具体的には、システム400は、ハードウェア基板上で実行される仮想化コンピューティング、仮想化ストレージ、仮想化ネットワーキング、および他の仮想化サービスを提供してもよい。
【0054】
オーケストレーションサービス410(例えば、動的スケジューリングエージェント)が示されており、本発明の様々な態様に従って様々な計算、データ処理、および他の機能を実行するための処理ユニット420(「プロセッサ」)を組み込んでいる。一態様において、プロセッサ420およびメモリ430は、オーケストレーションサービス410の内部もしくは外部またはその両方であってよく、コンピューティングシステム/サーバ12の内部もしくは外部またはその両方であってよい。オーケストレーションサービス410は、
図1に記載されるように、コンピュータシステム/サーバ12に含まれる、もしくはコンピュータシステム/サーバ12の外部にある、またはその両方があり得る。処理ユニット420は、メモリ430と通信していてもよい。オーケストレーションサービス410は、構成コンポーネント440、キャッシュコントローラコンポーネント450、および範囲コンポーネント460を含んでもよい。
【0055】
いくつかの実装では、オーケストレーションサービス410は、構成コンポーネント440、キャッシュコントローラコンポーネント450、範囲コンポーネント460、およびストレージ管理コンポーネント470を使用して、アプリケーションプロセスがコンピューティングシステムで実行されていることを識別し、アプリケーションプロセス用の第2のタイプのメモリのキャッシュとして第1のタイプのメモリの領域を提供してもよい。
【0056】
他の実装では、オーケストレーションサービス410は、構成コンポーネント440、キャッシュコントローラコンポーネント450、範囲コンポーネント460、およびストレージ管理コンポーネント470を使用して、コンピューティングシステムにおいて第1のタイプのメモリおよび第2のタイプのメモリを識別してもよい。オーケストレーションサービス410は、構成コンポーネント440、キャッシュコントローラコンポーネント450、範囲コンポーネント460、およびストレージ管理コンポーネント470を使用して、コンピューティングシステムにおいて実行される複数のアプリケーションプロセスを識別してもよく、プロセッサによって、複数のアプリケーションプロセスの各1つに対して、第1のタイプのメモリのプライベート領域を第2のタイプのメモリのキャッシュとして提供してもよく、プロセッサによって、複数のアプリケーションプロセスのそれぞれの1つが活動状態または非活動状態になったときに、複数のアプリケーションプロセスのそれぞれの1つに対して、第1のタイプのメモリ内のプライベート領域の1つを動的に使用可能または使用不可能にしてもよく、複数のアプリケーションプロセスのそれぞれの1つに対する1つ以上の性能要件に応じて、複数のアプリケーションプロセスのそれぞれの1つに対して、第1のタイプのメモリ内のプライベート領域の1つのサイズを動的に変更してもよい。
【0057】
構成コンポーネント440は、アプリケーションプロセスごとの第1のタイプのメモリのプライベート領域として機能するように、キャッシュコントローラ内のレジスタの範囲に格納されるアドレス範囲の第1のセットを定義してもよい。構成コンポーネント440は、アプリケーションプロセス用の第2のタイプのメモリ内の第2のプライベート領域として機能するように、キャッシュコントローラ内のレジスタの範囲に格納されるアドレス範囲の第2のセットを定義してもよい。
【0058】
構成コンポーネント440は、キャッシュコントローラ450および範囲コンポーネント460と関連して、プライベート領域が第2のタイプのメモリのキャッシュとして構成されるアプリケーションプロセスに対して、第1のタイプのメモリのプライベート領域へのアクセスを提供してもよい。構成コンポーネント440は、キャッシュコントローラ450および範囲コンポーネント460と関連して、第2のプライベート領域は、アプリケーションプロセス用の第2のタイプのメモリの追加のキャッシュである、アプリケーションプロセス用の第2のタイプのメモリ内の第2のプライベート領域へのアクセスを提供してもよい。
【0059】
キャッシュコントローラ450は、キャッシュコントローラによるアプリケーションプロセスのために、第1のタイプのメモリのプライベート領域と第2のタイプのメモリ内の第2のプライベート領域へのアクセスを調整することができる。
【0060】
キャッシュコントローラ450は、任意選択で、構成コンポーネント440を採用してもよく、プライベート領域を使用するアプリケーションプロセスの性能に基づいて、第1のタイプのメモリのプライベート領域のサイズを調整してもよく、サイズが増加または減少する。
【0061】
キャッシュコントローラコンポーネント450は、活動状態のアプリケーションプロセスが第1のタイプのメモリおよび第2のタイプのメモリを使用する場合、アプリケーションプロセスが活動状態であることを識別してもよい。キャッシュコントローラコンポーネント450は、活動状態のアプリケーションプロセス用の第1のタイプのメモリのプライベート領域として機能するように、キャッシュコントローラに格納された範囲のアドレス範囲の第1のセットをロードおよび格納してもよく、各非活動状態のアプリケーションプロセス用の代替範囲の代替アドレス範囲は、キャッシュコントローラから削除される。
【0062】
一態様では、アプリケーションプロセスごとに、第1のタイプのメモリのプライベート領域を第2のタイプのメモリのキャッシュとして提供することは、第1のタイプのメモリ(例えば、ローカルDRAM)内のキャッシュアドレスを有するキャッシュラインを識別することを含む。キャッシュラインは第1のタイプのメモリ内で圧縮され、圧縮キャッシュラインとキャッシュライン内のオープンメモリスペースが生成される。オープンメモリスペースにキャッシュタグが生成され、オープンメモリスペースに圧縮キャッシュラインに対する検証値が生成される。キャッシュヒットは、キャッシュアドレス、キャッシュタグ、および検証値に基づいてキャッシュラインに対して決定される。
【0063】
いくつかの実装では、キャッシュラインは、第1のタイプのメモリ内のキャッシュアドレスを有する。DRAMキャッシュまたはローカルDRAMは、コンピューティングシステムの1つ以上のプロセッサに関連する、またはアクセス可能な第1のタイプのメモリであってもよい。いくつかの実施形態では、ローカルDRAMは、非一様メモリアクセス(NUMA)DRAM、ストレージクラスメモリ(SCM)、または可変速度を有するDRAMのセットのキャッシュである。NUMA DRAM、SCM、可変速DRAM、バッキングストレージ、および第2のストレージは、コンピューティングシステムの1つ以上のプロセッサに関連する、またはアクセス可能な第2のタイプのメモリであってもよい。いくつかの実施形態では、DRAMキャッシュは、1テラバイト以上のキャッシュである。バッキングストレージ、第2のストレージ、または他のメモリコンポーネントは、64テラバイトまたはそれ以上であってもよい。いくつかの例では、コンピュータシステムの1つ以上のプロセッサのローカルアドレススペースは、第1の領域と第2の領域に分割される。第1のタイプのメモリ(例えば、DRAMキャッシュ)は、第1の領域にマッピングされてもよい。第2のタイプのメモリ(例えば、SCMまたはバッキングストレージ)は、第2の領域にマッピングされてもよい。キャッシュラインは、第1のタイプのメモリ内で圧縮されてもよい。キャッシュラインを圧縮すると、圧縮キャッシュラインが生成される。
【0064】
一態様では、圧縮は軽圧縮であってもよい。軽圧縮は、ローカルDRAM内でキャッシュラインのアドレス情報とキャッシュラインデータを一緒に圧縮してもよい。いくつかの実施形態では、キャッシュラインの圧縮は、ローカルDRAM内にオープンメモリスペースを生成した。キャッシュラインの軽圧縮は、1バイトのオープンスペースとしてオープンメモリスペースを作成してもよい。このような場合、キャッシュラインは、最初は128バイトのキャッシュラインであり、軽く圧縮されて127バイトの圧縮キャッシュラインとなってもよい。いくつかの実施形態では、オープンメモリスペースは、ローカルDRAM内の圧縮キャッシュラインと連続している。圧縮キャッシュラインまたは符号化キャッシュラインは、本開示の実装を単純化するプロセッサネストまたは他のメモリアーキテクチャを透過的に通過してもよい。いくつかの実施形態では、キャッシュラインは、キャッシュラインのセットである。キャッシュラインのセットは、第1のタイプのメモリ内に格納されてもよい。そのような場合、キャッシュラインのセットを圧縮するために、キャッシュラインのセットの各キャッシュラインの圧縮性が決定されてもよい。圧縮コンポーネントは、キャッシュラインのセットのキャッシュラインの第1のサブセットが圧縮可能であると決定してもよい。このような場合、圧縮コンポーネント120は、ローカルDRAM(例えば、プロセッサのローカルアドレススペースの第1の領域)内のキャッシュラインの第1のサブセットの各ラインを圧縮する。キャッシュラインの第1のサブセットの各キャッシュラインを圧縮することにより、圧縮されたキャッシュラインのセットおよびオープンメモリスペースのセットが生成されてもよい。
【0065】
いくつかの実装では、キャッシュラインのセットのキャッシュラインの第2のサブセットは、圧縮不可能である。このような場合、キャッシュラインの第2のサブセットの指示は、キャッシュコントローラコンポーネント450に渡され、キャッシュラインの第2のサブセットをバッキングメモリに格納することができ、バッキングメモリは、リモートDRAM、SCM、またはメモリインセプションのうちの1つである。キャッシュタグは、圧縮キャッシュラインのオープンメモリスペースに生成されてもよい。タグは、1バイトのタグであってもよいし、キャッシュラインの圧縮によって解放された1バイトのスペースに格納されるように構成されたタグであってもよい。指定されたサイズまたはスペースの量に関して記載されているが、タグは、オープンメモリスペースに格納されるのに十分な任意の適切なサイズであってもよいことが理解されるべきである。いくつかの例では、タグはlog2(SCMsize/DRAMsize)ビットのキャッシュタグである。このような場合、対数の底は2である。例えば、1テラバイトのDRAMと64テラバイトのSCMの場合、log2(64)は6ビットであるため、タグは6ビットになる。圧縮キャッシュラインが圧縮キャッシュラインのセットの1つである実施形態では、別個のキャッシュタグが、圧縮キャッシュラインのセットの各圧縮キャッシュラインに対して生成されてもよい。いくつかの実施形態では、メタデータが生成され、キャッシュタグの隣に、圧縮によって作成された同じオープンスペースに格納されてもよい。メタデータは、リモートメモリにおけるキャッシュラインの物理アドレスを含んでもよい。メタデータはセキュリティキー、置換情報、プリフェッチ状態、それらの組み合わせ、またはキャッシュラインに関連するデータの検索を可能にする他の情報を含むこともできる。
【0066】
検証値は、圧縮されたキャッシュラインのオープンメモリスペースに生成される。検証値は1ビットであってもよい。いくつかの実施形態では、検証値は、キャッシュラインがDRAMキャッシュ内に保持されているか、SCMまたはバッキングメモリ内に保持されているかを示す。検証値が圧縮キャッシュラインのセットに対して生成される実施形態では、検証値は、圧縮キャッシュラインのセットの各圧縮キャッシュラインに対して生成されてもよい。いくつかの実施形態では、圧縮キャッシュラインのセット(例えば、キャッシュラインの第1のサブセット)の各圧縮キャッシュラインに対して生成される検証値は、第1の検証値であってもよい。第1の検証値は、ローカルDRAM内に圧縮キャッシュラインおよびキャッシュタグが存在することを示してもよい。このような場合、検証値は、1、定数値、または任意の他の適切な値として生成してもよい。
【0067】
キャッシュラインの第2のサブセットが圧縮不可能であると決定され、したがってバッキングメモリに格納された実施形態では、キャッシュラインの第2のサブセットの各キャッシュラインに対して第2の検証値が生成されてもよい。いくつかの例では、キャッシュラインの圧縮不可能な第2のサブセットがローカルアドレススペースの第2の領域に格納されている間、キャッシュラインが無効であることを示す検証値が、それぞれのキャッシュラインが第2の領域に格納されていることを示すために第1の領域に格納されてもよい。第2の検証値は、ローカルDRAMに格納されてもよい。第2の検証値は、ゼロ、第1の検証値とは異なる定数値、または任意の他の適切な値として生成されてもよい。ゼロの値の検証は、ローカルDRAMがキャッシュラインを含まず、そのラインがバッキングメモリに格納されていることを示す。
【0068】
いくつかの実施形態では、キャッシュラインの第2のサブセットが圧縮不可能であると決定され、バッキングメモリ(例えば、プロセッサのローカルアドレススペースの第2の領域)に格納されている場合、固定タグビットパターンまたは固定データパターンが、第1のタイプのメモリ内に生成されてもよい。ダイレクトマップ方式のキャッシュが生成されてもよい。キャッシュサイズは、第1のタイプのメモリの容量の範囲まで増加してもよい。いくつかの例では、キャッシュサイズは、第1のタイプのメモリキャッシュ内の連想性の不足を克服するために、第1のタイプのメモリの容量の範囲まで増加されてもよい。
【0069】
いくつかの実施形態では、キャッシュは、L2の南のアドレス発信器およびキャッシュコントローラ/デコーダによって知られてもよい。キャッシュコントローラコンポーネント450は、キャッシュラインを識別し、アクセスし、取り出し、キャッシュ要求に応答することができる。キャッシュ要求は、キャッシュ読み出しまたはキャッシュ書き込みであってもよい。キャッシュ読み出し動作は、キャッシュまたはキャッシュラインの存在を決定してもよい。キャッシュまたはキャッシュラインの存在を決定することは、キャッシュラインに対してキャッシュヒットまたはキャッシュミスが発生するかどうかを決定してもよい。キャッシュ書き込みは、キャッシュラインを圧縮し、キャッシュラインを圧縮することによって作成される空きスペース内にタグと検証値を格納してもよい。セクターを圧縮できない場合、キャッシュ書き込み動作は、空きスペースまたはオープンスペースにゼロの検証値を生成し、DRAMキャッシュの代わりに次のレベルのメモリにキャッシュラインを書き込んでもよい。
【0070】
いくつかの実施形態では、キャッシュコントローラコンポーネント450は、キャッシュラインのキャッシュヒットを決定する。キャッシュヒットは、キャッシュアドレス、キャッシュタグ、および検証値に基づいて決定されてもよい。キャッシュヒットが決定されると、キャッシュコントローラコンポーネント450は、第1のタイプのメモリからキャッシュラインを取り出してもよい。
【0071】
いくつかの実施形態では、キャッシュコントローラコンポーネント450は、キャッシュラインに対してキャッシュミスを決定する。このような場合、キャッシュラインは、キャッシュラインが圧縮不可能であることに基づいて、バッキングメモリに格納されてもよい。キャッシュコントローラコンポーネント450は、キャッシュラインがバッキングメモリに格納され、第1のタイプのメモリ内に存在しないことを示す、ローカルDRAM内でゼロに設定される第2の検証値に基づいて、キャッシュミスを決定してもよい。
【0072】
いくつかの実施形態では、キャッシュコントローラコンポーネント450は、固定タグビットパターンまたは固定データパターンに基づいて、キャッシュラインに対してキャッシュミスを決定する。パターンが存在する場合、キャッシュ内容は無効とみなされ、キャッシュコントローラコンポーネント450がキャッシュミスを返す原因となる。キャッシュミスが発生すると、キャッシュコントローラコンポーネント450は、非ローカルDRAM、SCM、バッキングメモリ、またはローカルDRAM以外の他のメモリコンポーネントまたはモジュールからキャッシュラインを取り出すために、1つ以上のプロセッサを通して命令を渡すメモリインセプションを使用する。いくつかの実施形態では、キャッシュコントローラコンポーネント450は、第1のタイプのメモリにおいてキャッシュミスの対象となったキャッシュラインを取り出すために、SCM、バッキングメモリ、低速DRAM、または他のメモリコンポーネントもしくはモジュールにアクセスする。このような場合、キャッシュコントローラコンポーネント450は、第1のタイプのメモリに通信可能に結合された1つ以上のプロセッサを通して、メモリコンポーネントまたはモジュールに直接アクセスする。
【0073】
キャッシュコントローラコンポーネント450は、ディレクトリなしで上述の動作を実行してもよい。同様に、システム400の動作は、オンチップまたはオフチップアレイなしで実行されてもよい。キャッシュコントローラコンポーネント450は、単純でハードウェア効率のよいキャッシュコントローラであってもよい。キャッシュコントローラコンポーネント450は、ローカルDRAMの一部をSCMおよびインセプションクラスタメモリのキャッシュとして使用してもよい。
【0074】
いくつかの実施形態では、リモートメモリ、SCM、またはバッキングメモリが不連続またはページベースである場合、データのリモートアドレスがローカルDRAMキャッシュ内のキャッシュアドレスにマッピングされることがある。このような場合、DRAMキャッシュコントローラはDRAMキャッシュにアクセスしてよいが、他の機能はDRAMキャッシュにアクセスすることを不可能にされることがある。例えば、データセットがリモートメモリからローカルDRAMの一部のアドレスCSSSSSSにマッピングされる場合、0SSSSSSはリモートアドレスからページテーブルエントリ(PTE)のスレッドにマッピングされたSCMバッキングストレージであってよく、1000000はDRAMキャッシュ内にある。DRAMキャッシュ内の情報は、PTEリモートアドレスのスレッドにマッピングされない場合がある。プロセッサのキャッシュコヒーレンスロジックは、1000000のアドレスがキャッシュされていない間、0SSSSSS形式のアドレスで動作することがある。1000000への読み出しおよびプッシュは、リモートメモリに向けられることがある。いくつかの例では、DRAMキャッシュは、L3キャッシュ書き込みからの機能またはコンポーネントからインストールされたキャッシュラインを持っていることがある。DRAMキャッシュとバッキングストレージの両方が、キャッシュラインで更新されることがある。その見返りとして、DRAMキャッシュコントローラは、キャッシュシステムの1つ以上のコンポーネントと協働して、キャッシュラインを圧縮し、キャッシュタグ(例えば、Tag=SSSSSS)を持つアドレス(例えば、1000000)にプッシュする。未加工のキャッシュラインは、P202100205US01のバッキングストレージ10/30ページのアドレス(例えば、0SSSSS)にプッシュされることがある。そのラインが元々DRAMキャッシュから来たものである場合、キャッシュラインは圧縮され、L3キャッシュ書き込みによって設定されないビットを持つキャッシュタグを有するアドレスにプッシュされてもよい。そのラインがDRAMキャッシュから来たものであれば、このビットはL2で設計され、1にセットされてもよい。そのラインがDRAMキャッシュに由来しない場合、ビットはゼロにリセットされてもよい。対立するキャッシュ書き込みが発生した場合、最後のキャッシュ書き込みが勝つか、前のキャッシュ書き込みを上書きすることがある。
【0075】
いくつかの例では、キャッシュコントローラコンポーネント450(検索コンポーネントとして機能する場合がある)は、キャッシュラインの読み出しを試みることによって、キャッシュ読み出し要求に応答する。キャッシュコントローラコンポーネント450がキャッシュミスを発見した場合、キャッシュコントローラコンポーネント450は、バッキングストレージである0SSSSSSへの読み出しを発行してもよい。読みやすく、介入がない場合、キャッシュコントローラコンポーネント450は、リモートアドレスに1000000を代入し、DRAMキャッシュからキャッシュラインを読み出してもよい。キャッシュコントローラコンポーネント450は、レイテンシを短縮するために、DRAMキャッシュからのキャッシュ読み出しを早期に開始してもよい。DRAMキャッシュからの読み出しを試みている間に介入またはキャッシュミスが発生した場合、データは破棄されてもよい。キャッシュコントローラコンポーネント450は、DRAMキャッシュからの読み出し時に、返されたキャッシュラインのタグを検査してもよい。タグが適切なキャッシュタグであり、検証値が有効であるとみなされる場合、キャッシュコントローラコンポーネント450は、キャッシュヒットを判定し、キャッシュラインを解凍する(decompress)。その後、キャッシュラインはプロセッサのロードストアユニット(LSU)に転送され、L2キャッシュに配置される。キャッシュタグまたは検証値が有効とみなされない場合、キャッシュコントローラコンポーネント450はキャッシュミスを判定する。キャッシュコントローラコンポーネント450は、SCMまたはバッキングメモリからキャッシュラインを読み出してもよい。
【0076】
さらなる説明のために、
図5は、本発明の態様が実現され得るアプリケーションプロセスごとの第2のタイプのメモリのキャッシュとして、動的ランダムアクセスメモリ(「DRAM」)を提供する動作を示す追加のブロック図である。一態様において、
図1~4で説明された構成要素、モジュール、サービス、アプリケーション、もしくは機能、またはその組み合わせのうちの1つ以上が、
図5で使用され得る。本明細書で説明する他の実施形態で採用される同様の要素、構成要素、モジュール、サービス、アプリケーション、もしくは機能、またはその組み合わせについての繰り返しの説明は、簡潔のために省略する。
【0077】
図示されているように、プロセッサ510(例えば、プロセッサデバイス/チップ)は、キャッシュコントローラ512を含むことができる。プロセッサ510は、第1のタイプのメモリ520(例えば、DRAM)および第2のタイプのメモリ530と通信する。第2のタイプのメモリ530は、低速DRAM、SCM、NVMフラッシュ、PCM、および他の新興メモリであってもよい。一態様では、第2のタイプのメモリは、第1のタイプのメモリ520(例えば、DRAM)よりも大容量であるが、低速(レイテンシ、帯域幅)である。データの大部分は、第2のタイプのメモリ530に格納される。一態様では、キャッシュヒットは第1のメタイプのメモリ520に行き、キャッシュミスは第2のタイプのメモリ530に行く。
【0078】
プロセッサ510は、例えば、範囲レジスタ514A、514Bのような1つ以上の範囲レジスタを有するキャッシュコントローラ512も含むことができる。第1のタイプのメモリ520は、例えばアプリケーションプロセスA用の領域522およびプロセスB用の領域524のようなアプリケーションプロセス用の第2のタイプのメモリのキャッシュを構成する第1のタイプのメモリ520内の1つ以上の領域を含むことができる。すなわち、領域522は、アプリケーションプロセスA用の第1のタイプのメモリ520の領域522として機能するように、キャッシュコントローラ512内の、例えば、範囲レジスタ514A(例えば、範囲レジスタ1)のようなレジスタの範囲に格納されたアドレス範囲の第1のセットである。また、領域524は、アプリケーションプロセスB用の第1のタイプのメモリ520の領域524として機能するように、キャッシュコントローラ512内の、例えば、範囲レジスタ514A(例えば、範囲レジスタ1)のようなレジスタの範囲に格納されたアドレス範囲の別のセットである。このように、第2のタイプのメモリのキャッシュとして構成される第1のタイプのメモリ520の各「範囲」は、アプリケーションプロセスごとである。
【0079】
キャッシュコントローラ512はまた、例えば、範囲レジスタ514B(例えば、範囲レジスタ2)のようなレジスタの範囲に格納されたアドレス範囲の1つ以上の代わりのセットを含むことができ、例えば、アプリケーションプロセスAおよびアプリケーションプロセスBのようなアプリケーションプロセス用の第2のタイプのメモリ530のメモリ領域(例えば、アプリケーションプロセスA用の領域532およびアプリケーションプロセスB用の領域536)として機能することができる。
【0080】
動作では、次のような操作を考える。アプリケーションプロセスAが活動状態になると仮定する。アプリケーションプロセスAが活動状態になると、領域522が定義され、アプリケーションプロセスA用に構成される。領域522は、アプリケーションプロセス用の第1のタイプのメモリ520の領域522として機能するように、キャッシュコントローラ512内の、例えば、範囲レジスタ514A(例えば、範囲レジスタ1)などのレジスタの範囲に格納されたアドレス範囲の第1のセットである。第1のタイプのメモリ520の領域522の位置(例えば、アドレス範囲のセット)は、キャッシュコントローラ512に格納される。
【0081】
キャッシュコントローラ512はまた、例えば、アプリケーションプロセスAなどのアプリケーションプロセス用に第2のタイプのメモリ530を割り当てることもできる。割り当てには、例えば、メモリ領域(例えば、アプリケーションプロセスA用の領域532)として機能するように、範囲レジスタ514B(例えば、範囲レジスタ2)などのキャッシュコントローラ512内の第2のタイプのメモリ530の位置(例えば、アドレス範囲のセット)を格納することを含むことができる。
【0082】
実行中、アプリケーションプロセスAは、ロードおよび格納データ操作を実行することができ、これは、主に、第1のタイプのメモリ520の領域522にデータをロードおよび格納することになる。しかしながら、第1のタイプのメモリ520の領域522に対してキャッシュミスが発生した場合、キャッシュコントローラ512は、メモリ領域(例えば、アプリケーションプロセスAの領域532)として機能するための範囲レジスタ514B(例えば、範囲レジスタ2)を使用して、データが第2のタイプのメモリ530に格納されていることを示す。キャッシュコントローラ512は、アプリケーションプロセスAが、例えばメモリ領域532などのアプリケーションプロセスA用に割り当てられた領域からデータのロードまたは格納を実行することを可能にする。
【0083】
アプリケーションプロセスAが活動状態である間、アプリケーションBは非活動状態であることに留意すべきである。したがって、キャッシュコントローラ512は、非活動状態のアプリケーションプロセスBのメモリ範囲524のアドレス範囲をキャッシュコントローラ512から削除してもよいが、メモリ範囲536のアドレス範囲は、第2のタイプのメモリ530に保存される。アプリケーションプロセスBが活動状態になると、メモリ範囲524のアドレス範囲が再ロードされ、キャッシュコントローラ512に格納される。
【0084】
次に
図6に目を向けると、コンピューティング環境において第1のタイプのメモリの一部が第2のタイプのメモリのキャッシュとして機能するための方法600が描かれており、この方法において、図示された実施形態の様々な態様が実施されてもよい。機能性600は、機械上の命令として実行される方法として実装されてもよく、命令は、少なくとも1つのコンピュータ可読媒体上または非一過性の機械可読記憶媒体上に含まれる。機能性600は、ブロック602で開始することができる。
【0085】
ブロック604のように、アプリケーションプロセスが、コンピューティングシステムで実行されているものとして識別される。例えば、アプリケーションプロセスは、プロセッサコア上で実行を開始する。このような活動は、プロセッサコアに、アプリケーションプロセスが活動状態であることを示す信号をキャッシュコントローラに送るようにする誘因となることがある。ブロック606のように、第1のタイプのメモリの領域が、アプリケーションプロセス用の第2のタイプのメモリのキャッシュとして提供されてもよい。領域は、第2のタイプのメモリのキャッシュと同様のキャッシュとして機能するように構成されてもよい。機能性600は、ブロック610で終了してもよい。
【0086】
一態様では、
図6の少なくとも1つのブロックと組み合わせて、もしくはその一部として、またはその両方で、方法600の動作は、以下の各々を含んでもよい。機能性600の動作は、アプリケーションプロセスごとの第1のタイプのメモリのプライベート領域として機能するように、キャッシュコントローラ内のレジスタの範囲に格納されたアドレス範囲の第1のセットを定義してもよい。機能性600の動作は、アプリケーションプロセスに対する第2のタイプのメモリ内の第2のプライベート領域として機能するように、キャッシュコントローラ内のレジスタの範囲に格納されたアドレス範囲の第2のセットを定義してもよい。
【0087】
機能性600の動作は、プライベート領域が第2のタイプのメモリのキャッシュとして構成される、アプリケーションプロセス用の第1のタイプのメモリのプライベート領域へのアクセスを提供してもよい。機能性600の動作は、アプリケーションプロセス用の第2のタイプのメモリ内の第2のプライベート領域へのアクセスを提供してもよく、第2のプライベート領域は、アプリケーションプロセス用の第2のタイプのメモリの追加のキャッシュである。
【0088】
機能性600の動作は、キャッシュコントローラによって、アプリケーションプロセス用の第1のタイプのメモリのプライベート領域および第2のタイプのメモリ内の第2のプライベート領域へのアクセスを調整してもよい。機能性600の動作は、プライベート領域を使用するアプリケーションプロセスの性能に基づいて、第1のタイプのメモリのプライベート領域のサイズを調整してもよく、サイズが増加または減少する。機能性600の動作は、活動状態のアプリケーションプロセスが第1のタイプのメモリおよび第2のタイプのメモリを使用する場合、アプリケーションプロセスが活動状態であることを識別してもよい。機能性600の動作は、活動状態のアプリケーションプロセス用の第1のタイプのメモリのプライベート領域として機能するように、キャッシュコントローラに格納された範囲のアドレス範囲の第1のセットをロードおよび格納してもよく、ここで、各非活動状態のアプリケーションプロセス用の代替範囲の代替アドレス範囲は、キャッシュコントローラから除去され、第1のタイプのメモリに保存される。
【0089】
機能性600の動作は、アプリケーションプロセスごとに、第1のタイプのメモリの領域を第2のタイプのメモリのキャッシュとして提供する(例えば、第1のタイプのメモリ内のプライベート領域が第2のタイプのメモリのキャッシュとして実行/機能する)ために、キャッシュラインをカッド語セクターのセットに区分化してもよい。いくつかの実施形態では、キャッシュラインは128バイトのキャッシュラインである。機能性600の動作は、キャッシュラインを4つの32バイトのカッド語サイズのセクターとして扱い、カッド語サイズのセクターを反映するようにキャッシュラインを区分化してもよい。いくつかの実施態様では、機能性600の動作は、データ転送のプロセッサバスユニットを使用して、キャッシュラインをオクトワードセクターに区分化する。オクトワードセクターは、クリティカルオクトワードを含んでもよい。
【0090】
機能性600の動作は、アプリケーションプロセスごとに第1のタイプのメモリの領域を第2のタイプのメモリのキャッシュとして提供するために、カッド語セクターまたはオクトワードセクターのセットを第1のタイプのメモリに順次または連続的に配置することができる。いくつかの実施態様では、キャッシュライン、カッド語セクター、またはオクトワードセクターは、第2のタイプのメモリ(例えば、リモートメモリ、SCM、またはバッキングメモリ)の連続または非連続の位置から第1のタイプのメモリのキャッシュにマッピングされてもよい。第2のタイプのメモリのアドレスは、任意の適切な動作を使用してキャッシュアドレスにマッピングされてもよい。例えば、第2のタイプのメモリのアドレスは、CacheAddr=RemoteAddr modulo CacheSizeで表されるようにキャッシュアドレスにマッピングされる。
【0091】
これらの例において、直接マッピングされたキャッシュ演算と同様の方法でアドレスをマッピングするために、単純な代数演算を使用してもよい。キャッシュライン、カッド語、またはオクトワードが非連続またはページベースである場合、線形または連続キャッシュアドレスを実際のキャッシュアドレスに変換するマッピングテーブルを使用してもよい。
【0092】
機能性600の動作は、第1のタイプのメモリの領域をアプリケーションプロセスごとに第2のタイプのメモリのキャッシュとして提供するために、カッド語セクターのセットの各カッド語セクターを圧縮してもよい。カッド語セクターのセットの圧縮は、圧縮されたカッド語セクターのセットを生成する。いくつかの実施形態では、第1のタイプのメモリの領域をアプリケーションプロセスごとに第2のタイプのメモリのキャッシュとして提供するための機能性600の動作は、オープンスペースまたは空きスペースを利用可能にするために、キャッシュラインの各カッド語セクターを軽くまたは些細に圧縮してもよい。例えば、各カッド語セクターは、6ビットのオープンスペースを作成するために十分に圧縮されてもよい。機能性600の動作は、第1のタイプのメモリの領域をアプリケーションプロセスごとに第2のタイプのメモリのキャッシュとして提供するために、上記のように各カッド語セクターを圧縮してもよい。
【0093】
機能性600の動作は、第1のタイプのメモリの領域をアプリケーションプロセスごとに第2のタイプのメモリのキャッシュとして提供するために、キャッシュラインがオクトワードに区分化される各オクトワードセクターを同様に圧縮してもよい。機能性600の動作は、第1のタイプのメモリの領域をアプリケーションプロセスごとに第2のタイプのメモリのキャッシュとして提供するために、圧縮されたカッド語セクターのセットの各圧縮されたカッド語に対してキャッシュタグを生成してもよい。キャッシュタグは、Kビットのキャッシュアドレスタグであってもよい。機能性600の動作は、第1のタイプのメモリの領域をアプリケーションプロセスごとに第2のタイプのメモリのキャッシュとして提供するために、圧縮されたカッド語セクターのセットの圧縮されたカッド語セクターごとに検証値を生成してもよい。検証値が生成される場合、キャッシュタグは、Kビットのキャッシュアドレスタグに有効ビットを加えたものであってもよい。たとえば、キャッシュタグは、有効ビットを持つ6ビットタグとして生成される。
【0094】
機能性600の動作は、第1のタイプのメモリの領域をアプリケーションプロセスごとに第2のタイプのメモリのキャッシュとして提供するために、キャッシュラインがオクトワードセクターに区分化される各オクトワードに対してキャッシュタグおよび検証値を同様に生成してもよい。機能性600の動作は、第1のタイプのメモリの領域をアプリケーションプロセスごとに第2のタイプのメモリのキャッシュとして提供するために、上述と類似したまたは同様の方法で、各圧縮されたカッド語に対してキャッシュタグおよび検証値を生成してもよい。機能性600の動作は、第1のタイプのメモリの領域をアプリケーションプロセスごとに第2のタイプのメモリのキャッシュとして提供するために、キャッシュ書き込み動作を実行してもよい。キャッシュ書き込み動作は、各セクターを圧縮してもよく、それぞれのカッド語セクターを圧縮することによって作成される空きスペースまたはオープンスペースにタグおよび検証値を書き込んでよい。1つ以上のセクターを圧縮できない場合、キャッシュ書き込み動作は、空きスペースまたはオープンスペースに検証値ゼロを書き込み、DRAMキャッシュの代わりにSCMなどの次のレベルのメモリに、キャッシュラインのセクターを書き込む。
【0095】
機能性600の動作は、第1のタイプのメモリの領域をアプリケーションプロセスごとに第2のタイプのメモリのキャッシュとして提供するために、圧縮されたカッド語セクターのセットに基づいてキャッシュ要求に応答してもよい。いくつかの実施形態では、圧縮されたカッド語のセットは、重要な(critical)カッド語を含む。第1のタイプのメモリの領域をアプリケーションプロセスごとに第2のタイプのメモリのキャッシュとして提供するために、圧縮されたカッド語セクターのセットの重要なカッド語に基づいてキャッシュヒットまたはキャッシュミスを判定することによって、キャッシュ要求に応答してもよい。キャッシュヒットは、重要なカッド語などのカッド語に対してアドレスとタグが一致する場合に発生することがある。さらに、キャッシュヒットは、アドレスとタグが一致し、検証値に基づいて状態が有効であると判定された場合に発生することがある。アドレスとタグが一致しない場合、またはカッド語が有効でないと判断された場合、キャッシュミスが発生する。キャッシュミスが発生した場合、キャッシュラインはSCMなどの次のレベルのメモリから読み出される。
【0096】
機能性600の動作は、第1のタイプのメモリの領域をアプリケーションプロセスごとに第2のタイプのメモリのキャッシュとして提供するために、重要なオクトワードに基づいてキャッシュ要求に同様に応答してもよい。いくつかの例では、キャッシュラインのオクトワードセクターは、DRAMキャッシュ内に任意に記録されてもよい。
【0097】
機能性600の動作は、第1のタイプのメモリの領域をアプリケーションプロセスごとに第2のタイプのメモリのキャッシュとして提供するために、最初に重要なカッド語に対してキャッシュ読み出し動作を実行してもよい。重要なカッド語は、第1のタイプのメモリのキャッシュから読み出される。検証値(例えば、有効ビット)が1に等しいか、または他の方法で有効であると判定され、タグが一致する場合、重要なカッド語は展開され、キャッシュコントローラに配信される。
【0098】
機能性600の動作は、第1のタイプのメモリの領域をアプリケーションプロセスごとに第2のタイプのメモリのキャッシュとして提供するために、重要なカッド語を展開してもよい。次にキャッシュライン内の残りのカッド語が、その後または順次、展開され、各展開されたカッド語が取り出されてもよい。
【0099】
機能性600の動作は、第1のタイプのメモリの領域をアプリケーションプロセスごとに第2のタイプのメモリのキャッシュとして提供するために、上述と類似したまたは同様の方法で実行されてもよい。機能性600の動作は、第1のタイプのメモリの領域をアプリケーションプロセスごとに第2のタイプのメモリのキャッシュとして提供するために、カッド語セクターごとに、第2の領域のアドレスから第1の領域のアドレスを識別、作成、割り当て、または生成してもよい。キャッシュヒットに応答して、キャッシュヒットに関連付けられたカッド語セクターのセットのカッド語セクターを展開することによって、キャッシュラインが第1の領域から読み出され、カッド語セクターが1つ以上のプロセッサに配信されてもよい。いくつかの例では、アドレスは、第2の領域のアドレスから第1の領域に対して生成される。キャッシュミスに応答して、キャッシュラインは第2の領域から読み出される。第1の領域は、DRAMキャッシュにマッピングされたプロセッサのローカルアドレススペースであり、第2の領域は、SCMやバッキングメモリなどの第2のメモリにマッピングされたプロセッサのローカルアドレススペースである。
【0100】
次に
図7に目を向けると、コンピューティング環境における第2のタイプのメモリのキャッシュとしての第1のタイプのメモリの領域のための方法700が描かれており、図示された実施形態の様々な態様が実装され得る。機能性700は、機械上で命令として実行される方法として実装されてもよく、ここで、命令は、少なくとも1つのコンピュータ可読媒体または1つの非一過性の機械可読記憶媒体上に含まれる。機能性700は、ブロック702で開始してもよい。
【0101】
アプリケーションプロセスは、ブロック704のように、コンピューティングシステムにおいて活動状態であると識別されることがある。ブロック706のように、第1のタイプのメモリの領域が、アプリケーションプロセス用の第2のタイプのメモリのキャッシュとして提供されることがある。ブロック708のように、第1のタイプのメモリのプライベート領域へのアクセスが、アプリケーションプロセスのために提供されてもよい。ブロック710のように、アプリケーションプロセス用の第2のタイプのメモリ内の第2のプライベート領域へのアクセスが提供されることがあり、第2のプライベート領域は、アプリケーションプロセス用の第2のタイプのメモリの追加のキャッシュである。ブロック712のように、第1のタイプのメモリのプライベート領域および第2のタイプのメモリ内の第2のプライベート領域へのアクセスは、キャッシュコントローラによってアプリケーションプロセスのために調整されてもよい。機能性700は、ブロック714で終了してもよい。
【0102】
本発明は、システム、方法もしくはコンピュータプログラム製品またはそれらの組み合わせとすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を記憶したコンピュータ可読記憶媒体を含んでよい。
【0103】
コンピュータ可読記憶媒体は、命令実行装置によって使用される命令を保持し、記憶することができる有形の装置とすることができる。コンピュータ可読記憶媒体は、一例として、電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置またはこれらの適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な一例としては、ポータブルコンピュータディスケット、ハードディスク、RAM、ROM、EPROM(またはフラッシュメモリ)、SRAM、CD-ROM、DVD、メモリスティック、フロッピーディスク、パンチカードまたは溝内の隆起構造などに命令を記録した機械的に符号化された装置、およびこれらの適切な組み合せが挙げられる。本明細書で使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波管もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを介して送信される電気信号のような、一過性の信号それ自体として解釈されるべきではない。
【0104】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理装置に、または、ネットワーク(例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、もしくはワイヤレスネットワークまたはその組み合わせ)を介して外部コンピュータまたは外部記憶装置にダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバー、無線伝送、ルーター、ファイアウォール、スイッチ、ゲートウェイコンピュータ、もしくはエッジサーバーまたはその組み合わせで構成される。各コンピューティング/処理装置のネットワークアダプタカードまたはネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理装置内のコンピュータ可読記憶媒体に格納するためにコンピュータ可読プログラム命令を転送する。
【0105】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、統合回路のための構成データ、またはSmalltalk、C++などのオブジェクト指向プログラミング言語と「C」プログラミング言語や類似のプログラミング言語などの手続きタイププログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで記述されたソースコードまたはオブジェクトコードのいずれかであってよい。コンピュータ可読プログラム命令は、スタンドアロンソフトウェアパッケージとして、完全にユーザのコンピュータ上で、または部分的にユーザのコンピュータ上で実行可能である。あるいは、部分的にユーザのコンピュータ上でかつ部分的にリモートコンピュータ上で、または完全にリモートコンピュータまたはサーバ上で実行可能である。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され、または(例えば、インターネットサービスプロバイダーを使用したインターネット経由で)外部コンピュータに接続されてよい。いくつかの実施形態では、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブルロジックアレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用してパーソナライズすることにより、コンピュータ可読プログラム命令を実行することができる。
【0106】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図もしくはブロック図またはその両方を参照して本明細書に記載されている。フローチャート図もしくはブロック図またはその両方の各ブロック、およびフローチャート図もしくはブロック図またはその両方のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されよう。
【0107】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令がフローチャートもしくはブロック図またはその両方の1つ以上のブロックで指定された機能/動作を実装するための手段を生成するように、機械を生成するためにコンピュータのプロセッサまたは他のプログラム可能なデータ処理装置に提供されることができる。これらのコンピュータ可読プログラム命令はまた、フローチャートもしくはブロック図またはその両方の1つ以上のブロックで指定された機能/行為の態様を実装する命令を含む生成品の1つを命令が記憶されたコンピュータ可読記憶媒体が構成するように、コンピュータ、プログラム可能なデータ処理装置、もしくは特定の方法で機能する他のデバイスまたはその組み合わせに接続可能なコンピュータ可読記憶媒体の中に記憶されることができる。
【0108】
コンピュータ、他のプログラム可能な装置、または他のデバイス上でフローチャートもしくはブロック図またはその両方の1つ以上のブロックで指定された機能/行為を実行する命令のように、コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能な装置、または他のデバイス上で一連の操作ステップを実行し、コンピュータ実装された過程を生成することができる。
【0109】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品が実行可能な実装の構成、機能、および動作を示している。これに関して、フローチャートまたはブロック図の各ブロックは、モジュール、セグメント、または命令の一部を表してよく、これは、指定された論理機能を実装するための1つ以上の実行可能命令を構成する。いくつかの代替の実施形態では、ブロックに示されている機能は、図に示されている順序とは異なる場合がある。例えば、連続して示される2つのブロックは、実際には、実質的に同時に実行されるか、またはブロックは、関係する機能に応じて逆の順序で実行される場合がある。ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方のブロックの組み合わせは、指定された機能または動作を実行する、または特別な目的のハードウェアとコンピュータ命令の組み合わせを実行する特別な目的のハードウェアベースのシステムによって実装できることにも留意されたい。
【手続補正書】
【提出日】2024-05-07
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピューティング環境における、プロセッサによる方法であって、
コンピューティングシステムにおける第1のタイプのメモリと第2のタイプのメモリを識別することであって、前記第2のタイプのメモリは、前記第1のタイプのメモリと比較してより大きな記憶容量を有する一方で、前記第1のタイプのメモリよりも低速である、識別することと、
前記コンピューティングシステムで実行されている複数のアプリケーションプロセスを識別することと、
前記プロセッサによって、前記第1のタイプのメモリのプライベート領域を、前記複数のアプリケーションプロセスの各々に対する前記第2のタイプのメモリのキャッシュとして提供することと、
前記プロセッサによって、前記複数のアプリケーションプロセスのうちの1つが活動状態または非活動状態になるために、前記第1のタイプのメモリ内の前記プライベート領域のうちの1つを動的に使用可能または使用不可能にすることと、
前記複数のアプリケーションプロセスのうちの前記1つに対する性能要件に基づいて、前記複数のアプリケーションプロセスのうちの前記1つのための前記第1のタイプのメモリにおける前記プライベート領域のうちの前記1つのサイズを動的に変更することと、
を含む、
方法。
【請求項2】
前記複数のアプリケーションプロセスの各1つに対して、前記第1のタイプのメモリのプライベート領域として機能するように、キャッシュコントローラ内のレジスタの範囲に格納されたアドレス範囲の第1のセットを定義することをさらに含む、
請求項1に記載の方法。
【請求項3】
前記複数のアプリケーションプロセスの各1つに対して、前記第2のタイプのメモリの第2のプライベート領域として機能するように、キャッシュコントローラ内のレジスタの範囲に格納されたアドレス範囲の第2のセットを定義することをさらに含む、
請求項1に記載の方法。
【請求項4】
前記複数のアプリケーションプロセスの各1つに対して、前記第1のタイプのメモリの前記プライベート領域へのアクセスを提供することであって、前記プライベート領域は、前記第2のタイプのメモリの前記キャッシュとして構成される、提供することと、
前記複数のアプリケーションプロセスの各1つに対して、前記第2のタイプのメモリ内の第2のプライベート領域へのアクセスを提供することであって、前記第2のプライベート領域は、前記複数のアプリケーションプロセスの各1つに対する前記第2のタイプのメモリ内の追加のキャッシュである、提供することと、
をさらに含む、
請求項1に記載の方法。
【請求項5】
キャッシュコントローラによって、前記複数のアプリケーションプロセスの各1つに対して、前記第1のタイプのメモリの前記プライベート領域および前記第2のタイプのメモリ内の前記第2のプライベート領域へのアクセスを調整することをさらに含む、
請求項4に記載の方法。
【請求項6】
前記プライベート領域を使用する前記複数のアプリケーションプロセスの各1つの性能に基づいて、前記第1のタイプのメモリの前記プライベート領域のサイズを調整することをさらに含み、前記サイズは増加または減少する、
請求項1に記載の方法。
【請求項7】
前記複数のアプリケーションプロセスのうちの1つ以上が活動状態であることを識別することであって、前記複数のアプリケーションプロセスのうちの前記1つ以上が、前記第1のタイプのメモリおよび前記第2のタイプのメモリを使用する、識別することと、
アプリケーションプロセス用の前記第1のタイプのメモリのプライベート領域として機能するように、キャッシュコントローラに格納された範囲のアドレス範囲の第1のセットをロードおよび格納することであって、各非活動状態のアプリケーションプロセス用の代替範囲の代替アドレス範囲が前記キャッシュコントローラから取り除かれる、ロードおよび格納することと、
をさらに含む、
請求項1に記載の方法。
【請求項8】
コンピューティング環境におけるコンピューティング効率を向上させるためのシステムであって、
実行可能命令を有する1つ以上のコンピュータを含み、前記実行可能命令は、実行されたとき、前記システムに対して、
コンピューティングシステムにおける第1のタイプのメモリと第2のタイプのメモリを識別することであって、前記第2のタイプのメモリは、前記第1のタイプのメモリと比較してより大きな記憶容量を有する一方で、前記第1のタイプのメモリよりも低速である、識別することと、
前記コンピューティングシステムで実行されている複数のアプリケーションプロセスを識別することと、
前記第1のタイプのメモリのプライベート領域を、前記複数のアプリケーションプロセスの各々に対する前記第2のタイプのメモリのキャッシュとして提供することと、
前記複数のアプリケーションプロセスのそれぞれの1つが活動状態または非活動状態になったときに、前記複数のアプリケーションプロセスの前記それぞれの1つに対して、前記第1のタイプのメモリ内の前記プライベート領域の1つを動的に使用可能または使用不可能にすることと、
前記複数のアプリケーションプロセスの前記それぞれの1つに対する1つ以上の性能要件に応じて、前記複数のアプリケーションプロセスの前記それぞれの1つに対する前記第1のタイプのメモリ内の前記プライベート領域の前記1つのサイズを動的に変更することと、
を実行させる、システム。
【請求項9】
前記実行可能命令は、実行されたとき、前記システムに対して、前記複数のアプリケーションプロセスの各1つに対する前記第1のタイプのメモリのプライベート領域として機能するように、キャッシュコントローラ内のレジスタの範囲に格納されたアドレス範囲の第1のセットを定義させる、
請求項8に記載のシステム。
【請求項10】
前記実行可能命令は、前記複数のアプリケーションプロセスの各1つに対して、前記第2のタイプのメモリの第2のプライベート領域として機能するように、キャッシュコントローラ内のレジスタの範囲に格納されたアドレス範囲の第2のセットを定義する、
請求項8に記載のシステム。
【請求項11】
前記実行可能命令は、実行されたとき、前記システムに対して、
前記複数のアプリケーションプロセスの各1つに対して、前記第1のタイプのメモリの前記プライベート領域へのアクセスを提供することであって、前記プライベート領域は、前記第2のタイプのメモリの前記キャッシュとして構成される、提供することと、
前記複数のアプリケーションプロセスの各1つに対して、前記第2のタイプのメモリ内の第2のプライベート領域へのアクセスを提供することであって、前記第2のプライベート領域は、前記複数のアプリケーションプロセスの各1つに対する前記第2のタイプのメモリ内の追加のキャッシュである、提供することと、を実行させる、
請求項8に記載のシステム。
【請求項12】
前記実行可能命令は、実行されたとき、前記システムに対して、キャッシュコントローラによって、前記複数のアプリケーションプロセスの各1つに対して、前記第1のタイプのメモリの前記プライベート領域および前記第2のタイプのメモリ内
の第2のプライベート領域へのアクセスを調整させる、
請求項8に記載のシステム。
【請求項13】
前記実行可能命令は、実行されたとき、前記システムに対して、前記プライベート領域を使用する前記複数のアプリケーションプロセスの各1つの性能に基づいて、前記第1のタイプのメモリの前記プライベート領域のサイズを調整させ、前記サイズは増加または減少する、
請求項8に記載のシステム。
【請求項14】
前記実行可能命令は、実行されたとき、前記システムに対して、
前記複数のアプリケーションプロセスのうちの1つ以上が活動状態であることを識別することであって、前記複数のアプリケーションプロセスのうちの前記1つ以上が、前記第1のタイプのメモリおよび前記第2のタイプのメモリを使用する、識別することと、
アプリケーションプロセス用の前記第1のタイプのメモリのプライベート領域として機能するように、キャッシュコントローラに格納された範囲のアドレス範囲の第1のセットをロードおよび格納することであって、各非活動状態のアプリケーションプロセス用の代替範囲の代替アドレス範囲が前記キャッシュコントローラから取り除かれる、ロードおよび格納することと、を実行させる、
請求項8に記載のシステム。
【請求項15】
コンピューティング環境におけるコンピューティング効率を向上させるためのコンピュータプログラム製品であって、前記コンピュータプログラム製品は、
1つ以上のコンピュータ可読記憶媒体と、前記1つ以上のコンピュータ可読記憶媒体に集合的に格納されたプログラム命令とを含み、前記プログラム命令は、
コンピューティングシステムにおける第1のタイプのメモリと第2のタイプのメモリを識別するプログラム命令であって、前記第2のタイプのメモリは、前記第1のタイプのメモリと比較してより大きな記憶容量を有する一方で、前記第1のタイプのメモリよりも低速である、プログラム命令と、
前記コンピューティングシステムで実行されている複数のアプリケーションプロセスを識別するプログラム命令と、
前記第1のタイプのメモリのプライベート領域を、前記複数のアプリケーションプロセスの各々に対する前記第2のタイプのメモリのキャッシュとして提供するプログラム命令と、
前記複数のアプリケーションプロセスのそれぞれの1つが活動状態または非活動状態になったときに、前記プロセッサによって、前記複数のアプリケーションプロセスの前記それぞれの1つに対して、前記第1のタイプのメモリ内の前記プライベート領域の1つを動的に使用可能または使用不可能にするプログラム命令と、
前記複数のアプリケーションプロセスの前記それぞれの1つに対する1つ以上の性能要件に応じて、前記複数のアプリケーションプロセスの前記それぞれの1つに対する前記第1のタイプのメモリ内の前記プライベート領域の前記1つのサイズを動的に変更するプログラム命令と、
を含む、コンピュータプログラム製品。
【請求項16】
前記複数のアプリケーションプロセスの各1つに対して、前記第1のタイプのメモリのプライベート領域として機能するように、キャッシュコントローラ内のレジスタの範囲に格納されるアドレス範囲の第1のセットを定義するプログラム命令をさらに含む、
請求項15に記載のコンピュータプログラム製品。
【請求項17】
前記複数のアプリケーションプロセスの各1つに対して、前記第2のタイプのメモリの第2のプライベート領域として機能するように、キャッシュコントローラ内のレジスタの範囲に格納されたアドレス範囲の第2のセットを定義するプログラム命令をさらに含む、
請求項15に記載のコンピュータプログラム製品。
【請求項18】
前記複数のアプリケーションプロセスの各1つに対して、前記第1のタイプのメモリの前記プライベート領域へのアクセスを提供することであって、前記プライベート領域は、前記第2のタイプのメモリの前記キャッシュとして構成される、提供することと、
前記複数のアプリケーションプロセスの各1つに対して、前記第2のタイプのメモリ内の第2のプライベート領域へのアクセスを提供することであって、前記第2のプライベート領域は、前記複数のアプリケーションプロセスの各1つに対する前記第2のタイプのメモリ内の追加のキャッシュである、提供することと、
キャッシュコントローラによって、前記複数のアプリケーションプロセスの各1つに対して、前記第1のタイプのメモリの前記プライベート領域および前記第2のタイプのメモリ内の前記第2のプライベート領域へのアクセスを調整することと、
を実行するプログラム命令をさらに含む、
請求項15に記載のコンピュータプログラム製品。
【請求項19】
前記プライベート領域を使用する前記複数のアプリケーションプロセスの各1つの性能に基づいて、前記第1のタイプのメモリの前記プライベート領域のサイズを調整するプログラム命令をさらに含み、前記サイズは増加または減少する、
請求項15に記載のコンピュータプログラム製品。
【請求項20】
前記複数のアプリケーションプロセスのうちの1つ以上が活動状態であることを識別することであって、前記複数のアプリケーションプロセスのうちの前記1つ以上が、前記第1のタイプのメモリおよび前記第2のタイプのメモリを使用する、識別することと、
アプリケーションプロセス用の前記第1のタイプのメモリのプライベート領域として機能するように、キャッシュコントローラに格納された範囲のアドレス範囲の第1のセットをロードおよび格納することであって、各非活動状態のアプリケーションプロセス用の代替範囲の代替アドレス範囲が前記キャッシュコントローラから取り除かれる、ロードおよび格納することと、
を実行するプログラム命令をさらに含む、
請求項15に記載のコンピュータプログラム製品。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0058
【補正方法】変更
【補正の内容】
【0058】
構成コンポーネント440は、キャッシュコントローラコンポーネント450および範囲コンポーネント460と関連して、プライベート領域が第2のタイプのメモリのキャッシュとして構成されるアプリケーションプロセスに対して、第1のタイプのメモリのプライベート領域へのアクセスを提供してもよい。構成コンポーネント440は、キャッシュコントローラコンポーネント450および範囲コンポーネント460と関連して、第2のプライベート領域は、アプリケーションプロセス用の第2のタイプのメモリの追加のキャッシュである、アプリケーションプロセス用の第2のタイプのメモリ内の第2のプライベート領域へのアクセスを提供してもよい。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0059
【補正方法】変更
【補正の内容】
【0059】
キャッシュコントローラコンポーネント450は、キャッシュコントローラによるアプリケーションプロセスのために、第1のタイプのメモリのプライベート領域と第2のタイプのメモリ内の第2のプライベート領域へのアクセスを調整することができる。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0060
【補正方法】変更
【補正の内容】
【0060】
キャッシュコントローラコンポーネント450は、任意選択で、構成コンポーネント440を採用してもよく、プライベート領域を使用するアプリケーションプロセスの性能に基づいて、第1のタイプのメモリのプライベート領域のサイズを調整してもよく、サイズが増加または減少する。
【国際調査報告】