(57)【要約】【課題】ワーキングセットの全てのデータを格納可能な記憶領域を提供し、かつ、高速なアクセスが可能な計算機システムを実現する。【解決手段】プロセッサ、プロセッサに接続されるメモリ、及びプロセッサに接続されるＩ／Ｏデバイスを備える計算機であって、メモリは、第１のメモリ素子及び第１のメモリ素子とは特性の異なる第２のメモリ素子を有し、第２のメモリ素子によって提供されるメモリ領域は、データ格納領域及びデータ圧縮領域を含み、計算機は、当該計算機の計算機リソースが割り当てられた仮想計算機を管理する仮想化管理部を備え、仮想化管理部は、仮想計算機の生成時に、仮想計算機が実行する処理に必要なデータを格納するワーキングセットをデータ格納領域に設定し、ワーキングセットに格納されたデータのアクセス状況に基づいて、ワーキングセットに格納されるデータの一部を、データ圧縮領域に格納するように制御する。【選択図】図２
2014170360.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ、前記プロセッサに接続されるメモリ、及び前記プロセッサに接続されるＩ／Ｏデバイスを備える計算機であって、
前記メモリは、第１のメモリ素子及び前記第１のメモリ素子とは特性の異なる第２のメモリ素子を有し、
前記第２のメモリ素子によって提供されるメモリ領域は、データ格納領域及びデータ圧縮領域を含み、
前記計算機は、当該計算機の計算機リソースが割り当てられた仮想計算機を管理する仮想化管理部を備え、
前記仮想化管理部は、
前記仮想計算機の生成時に、前記仮想計算機が実行する処理に必要なデータを格納するワーキングセットを前記データ格納領域に設定し、
前記ワーキングセットに格納されたデータのアクセス状況に基づいて、前記ワーキングセットに格納されるデータの一部を、前記データ圧縮領域に格納するように制御することを特徴とする計算機。
【請求項２】
請求項１に記載の計算機であって、
前記第１のメモリ素子は揮発メモリ素子であり、前記第２のメモリ素子は不揮発性メモリ素子であり、
前記メモリは、前記仮想化管理部を実行するプロセッサから出力されるメモリアクセスを制御するコントローラを有し、
前記仮想化管理部は、
前記データ格納領域の使用量を監視し、
前記データ格納領域の使用量が所定のしきい値より大きい場合に、前記ワーキングセットに格納されるデータのうち、アクセスされた時間が最も古いデータ又はアクセス頻度が最も低いデータを選択し、
前記選択されたデータの前記データ圧縮領域への書き込みを要求するメモリアクセスを出力し、
前記コントローラは、
前記メモリアクセスに基づいて、前記データ格納領域から前記選択されたデータを読み出し、
前記選択されたデータを圧縮し、
前記圧縮されたデータを圧縮データとして前記データ圧縮領域に書き込むことを特徴とする計算機。
【請求項３】
請求項２に記載の計算機であって、
前記仮想化管理部は、
前記データ格納領域の空き容量が所定のしきい値より大きい場合に、前記データ圧縮領域の中から読み出す前記圧縮データを選択し、
前記選択された圧縮データの前記データ格納領域への読み出しを要求するメモリアクセスを出力し、
前記コントローラは、
前記メモリアクセスに基づいて、前記データ圧縮領域から前記選択された圧縮データを読み出し、
前記読み出された圧縮データを伸長し、
前記伸長されたデータを前記データ格納領域に書き込むことを特徴とする計算機。
【請求項４】
請求項３に記載の計算機であって、
前記仮想計算機上では、オペレーティングシステムが稼働し、
前記仮想化管理部は、
前記第２のメモリ素子を、仮想的なストレージ装置として割り当て、
前記仮想的なストレージ装置へのＩ／Ｏアクセスを、前記第２のメモリ素子へのメモリアクセスに変換するための変換情報を生成し、
前記オペレーティングシステムから前記仮想的なストレージ装置へのＩ／Ｏアクセスを受け付けた場合に、前記変換情報に基づいて前記第２のメモリ素子へのメモリアクセスに変換し、
前記メモリに対して前記変換されたメモリアクセスを出力することを特徴とする計算機。
【請求項５】
プロセッサ、前記プロセッサに接続されるメモリ、及び前記プロセッサに接続されるＩ／Ｏデバイスを備える計算機におけるメモリ管理方法であって、
前記メモリは、第１のメモリ素子及び前記第１のメモリ素子とは特性の異なる第２のメモリ素子を有し、
前記第２のメモリ素子によって提供されるメモリ領域は、データ格納領域及びデータ圧縮領域を含み、
前記計算機は、当該計算機の計算機リソースが割り当てられた仮想計算機を管理する仮想化管理部を備え、
前記方法は、
前記仮想化管理部が、前記仮想計算機の生成時に、前記仮想計算機が実行する処理に必要なデータを格納するワーキングセットを前記データ格納領域に設定する第１のステップと、
前記仮想化管理部が、前記ワーキングセットに格納されたデータのアクセス状況に基づいて、前記ワーキングセットに格納されるデータの一部を、前記データ圧縮領域に格納するように制御する第２のステップと、を含むことを特徴とするメモリ管理方法。
【請求項６】
請求項５に記載のメモリ管理方法であって、
前記第１のメモリ素子は揮発メモリ素子であり、前記第２のメモリ素子は不揮発性メモリ素子であり、
前記メモリは、前記仮想化管理部を実行するプロセッサから出力されるメモリアクセスを制御するコントローラを有し、
前記第２のステップは、
前記仮想化管理部が、前記データ格納領域の使用量を監視するステップと、
前記仮想化管理部が、前記データ格納領域の使用量が所定のしきい値より大きい場合に、前記ワーキングセットに格納されるデータのうち、アクセスされた時間が最も古いデータ又はアクセス頻度が最も低いデータを選択するステップと、
前記仮想化管理部が、前記選択されたデータの前記データ圧縮領域への書き込みを要求するメモリアクセスを出力するステップと、
前記コントローラが、前記メモリアクセスに基づいて、前記データ格納領域から前記選択されたデータを読み出すステップと、
前記コントローラが、前記選択されたデータを圧縮するステップと、
前記コントローラが、前記圧縮されたデータを圧縮データとして前記データ圧縮領域に書き込むステップと、を含むことを特徴とするメモリ管理方法。
【請求項７】
請求項６に記載のメモリ管理方法であって、
前記方法は、
前記仮想化管理部が、前記データ格納領域の空き容量が所定のしきい値より大きい場合に、前記データ圧縮領域の中から読み出す前記圧縮データを選択するステップと、
前記仮想化管理部が、前記選択された圧縮データの前記データ格納領域への読み出しを要求するメモリアクセスを出力するステップと、
前記コントローラが、前記メモリアクセスに基づいて、前記データ圧縮領域から前記選択された圧縮データを読み出すステップと、
前記コントローラが、前記読み出された圧縮データを伸長するステップと、
前記コントローラが、前記伸長されたデータを前記データ格納領域に書き込むステップと、を含むことを特徴とするメモリ管理方法。
【請求項８】
請求項７に記載のメモリ管理方法であって、
前記仮想計算機上では、オペレーティングシステムが稼働し、
前記第１のステップは、
前記第２のメモリ素子を、仮想的なストレージ装置として割り当てるステップと、
前記仮想的なストレージ装置へのＩ／Ｏアクセスを、前記第２のメモリ素子へのメモリアクセスに変換するための変換情報を生成するステップと、
前記オペレーティングシステムから前記仮想的なストレージ装置へのＩ／Ｏアクセスを受け付けた場合に、前記変換情報に基づいて前記第２のメモリ素子へのメモリアクセスに変換するステップと、
前記メモリに対して前記変換されたメモリアクセスを出力するステップと、を含むことを特徴とするメモリ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機の主記憶装置に関する。
【背景技術】
【０００２】
従来の計算機システムは、特許文献１等に示されている。計算機システムの処理性能を向上させるために、メインメモリのワーキングセットに全てのデータが格納されていることが望ましい。しかし、メインメモリには容量に制限があるため、ワーキングセットに格納すべき全てのデータをメインメモリに格納できない。そのため、計算機は、一部のデータをストレージ装置に格納し、必要に応じてストレージ装置からデータを読み出す。したがって、ストレージ装置へのアクセス性能が計算機システムの処理性能のボトルネックとなっている。
【０００３】
これに対し、前述したボトルネックを改善するために方法が知られている。例えば、ストレージ装置の内部にＤＲＡＭ又はＦｌａｓｈメモリを搭載し、キャッシング又はティアリングを行う方法がある（例えば、特許文献２の段落（００１９）を参照）。また、近年登場してきたＰＣＩｅバスに接続可能なＦｌａｓｈメモリデバイスを用いて、性能を向上させる方法がある（例えば、特許文献３の段落（００２９）を参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１１−２７２６０５号公報
【特許文献２】特開２００８−２７３８３号公報
【特許文献３】米国特許出願公開第２０１０／０２５２９３１号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、ＰＣＩｅバスに接続可能なＦｌａｓｈメモリデバイスにも容量の制限があるため、ワーキングセットに全てのデータを格納できない。そのため、高速なメインメモリを増設等して、ワーキングセットをメインメモリに常駐させる必要がある。また、ＰＣＩｅバスの転送速度がボトルネックとなるという問題もある。
【０００６】
一方、ハードディスク装置の内部に搭載されるＤＲＡＭ又はＦｌａｓｈメモリに、全てのワーキングセットを常駐させた場合、計算機とハードディスク装置とを接続するインタフェースであるＦｉｂｅｒ  Ｃｈａｎｎｅｌのバンド幅がボトルネックになる。したがって、計算機の処理性能一定以上向上できないという問題がある。
【０００７】
これに対して、メインメモリの増設することによって、メインメモリに全てのワーキングセットを常駐させる方法が考えられる。しかし、メインメモリは、ハードディスク及びＦｌａｓｈメモリに比べて高価であるため、高コストなシステムになるという課題がある。また、メインメモリを増設すると消費電力も増大するという課題がある。
【０００８】
本発明の目的は、コスト及び消費電力を考慮して計算機システムの処理性能を向上させることである。
【課題を解決するための手段】
【０００９】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、プロセッサ、前記プロセッサに接続されるメモリ、及び前記プロセッサに接続されるＩ／Ｏデバイスを備える計算機であって、前記メモリは、第１のメモリ素子及び前記第１のメモリ素子とは特性の異なる第２のメモリ素子を有し、前記第２のメモリ素子によって提供されるメモリ領域は、データ格納領域及びデータ圧縮領域を含み、前記計算機は、当該計算機の計算機リソースが割り当てられた仮想計算機を管理する仮想化管理部を備え、前記仮想化管理部は、前記仮想計算機の生成時に、前記仮想計算機が実行する処理に必要なデータを格納するワーキングセットを前記データ格納領域に設定し、前記ワーキングセットに格納されたデータのアクセス状況に基づいて、前記ワーキングセットに格納されるデータの一部を、前記データ圧縮領域に格納するように制御することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、ワーキングセットを高速な帯域を有するメモリ領域に常駐させることによって、処理性能を向上させることができる。また、データのアクセス状況に応じてデータを圧縮領域に格納することによって、メモリ領域の容量を有効に活用できる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施例の計算機の構成例を示すブロック図である。
【図２】本発明の実施例における混載ＤＩＭＭの構成例を示すブロック図である。
【図３Ａ】本発明の実施例におけるアドレス空間の一例を示す説明図である。
【図３Ｂ】本発明の実施例におけるアドレス空間の一例を示す説明図である。
【図４】本発明の実施例におけるメモリ空間におけるソフトウェアの管理方法の一例を示す説明図である。
【図５】本発明の実施例における仮想的なアドレス空間と物理的なアドレス空間との対応関係を示す説明図である。
【図６】本発明の実施例におけるハイパバイザが仮想計算機を生成時に実行する処理を説明するフローチャートである。
【図７】本発明の実施例における監視記憶領域の監視処理を説明するフローチャートである。
【図８】本発明の実施例におけるハイパバイザがメモリアクセスを受け付けた場合に実行する処理を説明するフローチャートである。
【図９Ａ】本発明の実施例における混載ＤＩＭＭが実行するアクセス処理を説明するフローチャートである。
【図９Ｂ】本発明の実施例における混載ＤＩＭＭが実行するアクセス処理を説明するフローチャートである。
【図１０】本発明の実施例におけるメモリアクセス及びＩ／Ｏアクセスを示すスタック図である。
【発明を実施するための形態】
【００１２】
以下、図面を用いて本発明の実施例について説明する。なお、同一の構成及び情報には同一の符号を付すものとする。
【実施例１】
【００１３】
図１は、本発明の実施例の計算機の構成例を示すブロック図である。図１では、一つの計算機のみを図示しているが、本発明は複数の計算機から構成される計算機システムにおいても同様の効果を奏する。
【００１４】
計算機１００は、プロセッサ１１０、ＤＩＭＭ１２０、混載ＤＩＭＭ１３０、Ｉ／Ｏスイッチ１４０、ＮＩＣ１５０、及びＨＢＡ１６０を備える。
【００１５】
プロセッサ１１０は、ＤＩＭＭ１２０又は混載ＤＩＭＭ１３０に格納されるプログラムを実行する。プロセッサ１１０がプログラムを実行することによって所定の機能が実現される。プロセッサ１１０は、プロセッサコア１１１、メモリインタフェース１１２、及びＩ／Ｏインタフェース１１３を備える。
【００１６】
プロセッサコア１１１は、演算処理を実行する。メモリインタフェース１１２は、メモリへのアクセスを制御する。Ｉ／Ｏインタフェース１１３は、Ｉ／Ｏデバイスへのアクセスを制御する。
【００１７】
ＤＩＭＭ１２０及び混載ＤＩＭＭ１３０は、プロセッサ１１０が実行するプログラム及び当該プログラムの実行時に必要な情報を格納するメモリである。プロセッサ１１０は、メモリインタフェースバス１２５を介して、ＤＩＭＭ１２０及び混載ＤＩＭＭ１３０と接続する。具体的には、メモリインタフェース１１２が、メモリインタフェースバス１２５を介して、ＤＩＭＭ１２０及び混載ＤＩＭＭ１３０に対するデータの読出処理、及び、書込処理を制御する。
【００１８】
本発明では、メモリとして混載ＤＩＭＭ１３０を含む点に特徴がある。混載ＤＩＭＭ１３０は、ＤＲＡＭチップ２６０（図２参照）及びＦｌａｓｈメモリチップ２８０（図２参照）を備えるメモリである。混載ＤＩＭＭ１３０の詳細については、図２を用いて後述する。
【００１９】
Ｉ／Ｏスイッチ１４０は、Ｉ／Ｏデバイスを接続するためのスイッチである。本実施例の計算機１００は、Ｉ／ＯデバイスとしてＮＩＣ１５０、及びＨＢＡ１６０を備える。ＮＩＣ１５０は、ＩＰネットワーク１７０を介して外部の装置と接続するためのインタフェースである。ＨＢＡ１６０は、ＳＡＮ１７５を介して外部の装置と接続するためのインタフェースである。
【００２０】
図２は、本発明の実施例における混載ＤＩＭＭ１３０の構成例を示すブロック図である。
【００２１】
混載ＤＩＭＭ１３０は、コントローラ２００、ＤＲＡＭ実装部２５０、及びＦｌａｓｈメモリ実装部２７０を備える。
【００２２】
ＤＲＡＭ実装部２５０は、複数のＤＲＡＭチップ２６０を有する。Ｆｌａｓｈメモリ実装部２７０は、複数のＦｌａｓｈメモリチップ２８０を有する。
【００２３】
コントローラ２００は、メモリインタフェースバス１２５を介して、混載ＤＩＭＭ１３０に対するアクセスを制御する。コントローラ２００は、ＤＲＡＭインタフェース２１０、制御部２２０、ＤＲＡＭチップインタフェース２３０、及びＦｌａｓｈメモリチップインタフェース２４０を含む。なお、コントローラ２００には、図示しないバッファも含まれる。
【００２４】
ＤＲＡＭインタフェース２１０、制御部２２０、及びＤＲＡＭチップインタフェース２３０は、内部バス２３５を介して互いに接続される。また、ＤＲＡＭインタフェース２１０、制御部２２０、及びＦｌａｓｈメモリチップインタフェース２４０は、内部バス２４５を介して互いに接続される。
【００２５】
ＤＲＡＭインタフェース２１０は、メモリインタフェースバス１２５を介したアクセスを受け付けるインタフェースであり、アドレスレジスタ２１１を含む。アドレスレジスタ２１１は、メモリアドレスをラッチするためのレジスタである。なお、アドレスレジスタ２１１は、ＤＲＡＭインタフェース２１０の外部にあってもよい。
【００２６】
制御部２２０は、混載ＤＩＭＭ１３０に対するアクセスを制御する。制御部２２０は、ＤＭＡコントローラ２２１、圧縮／伸長部２２２、インテリジェント制御部２２３、及び管理テーブル２２４を含む。
【００２７】
ＤＭＡコントローラ２２１は、ＤＭＡ転送を制御する。圧縮／伸長部２２２は、データの圧縮し、又は、伸長する。インテリジェント制御部２２３は、ＤＲＡＭ実装部２５０及びＦｌａｓｈメモリ実装部２７０に対するデータの読出処理、及びデータの書込処理を制御する。
【００２８】
管理テーブル２２４は、インテリジェント制御部２２３が実行する制御処理に必要な情報を格納する。管理テーブル２２４には、例えば、後述する物理アドレス空間３００におけるＤＲＡＭ実装領域３５０及びＦｌａｓｈメモリ実装領域３６０のアドレスを管理するテーブルが含まれる。
【００２９】
ＤＲＡＭチップインタフェース２３０は、ＤＲＡＭ実装部２５０の各ＤＲＡＭチップ２６０へのアクセスを制御する。ＤＲＡＭチップインタフェース２３０は、ＤＲＡＭバス２６１を介して、各ＤＲＡＭチップ２６０と接続する。
【００３０】
ＤＲＡＭチップインタフェース２３０は、アドレスデコード２３１及びアクセス制御部２３２を含む。アドレスデコード２３１は、アドレスからアクセス対象のＤＲＡＭチップ２６０を特定し、特定されたＤＲＡＭチップ２６０にチップセレクト信号２６２を出力する。アクセス制御部２３２は、ＤＲＡＭチップ２６０に対するアクセスを制御する。
【００３１】
Ｆｌａｓｈメモリチップインタフェース２４０は、Ｆｌａｓｈメモリ実装部２７０の各Ｆｌａｓｈメモリチップ２８０へのアクセスを制御する。Ｆｌａｓｈメモリチップインタフェース２４０は、Ｆｌａｓｈメモリバス２８１を介して、各Ｆｌａｓｈメモリチップ２８０と接続する。
【００３２】
Ｆｌａｓｈメモリチップインタフェース２４０は、アドレスデコード２４１及びアクセス制御部２４２を含む。アドレスデコード２４１は、アドレスからアクセス対象のＦｌａｓｈメモリチップ２８０を特定し、特定されたＦｌａｓｈメモリチップ２８０にチップセレクト信号２８２を出力する。アクセス制御部２４２は、Ｆｌａｓｈメモリチップ２８０に対するアクセスを制御する。
【００３３】
なお、混載ＤＩＭＭ１３０は、図示しないＳＰＤ（Ｓｅｒｉａｌ  Ｐｒｅｓｅｎｃｅ  Ｄｅｔｅｃｔ）も備える。ＳＰＤには、混載ＤＩＭＭ１３０の種類、容量、及び動作周波数等の情報が格納される。本実施例では、ＳＰＤには、ＤＲＡＭ実装部２５０における記憶容量と、Ｆｌａｓｈメモリ実装部２７０における記憶容量に関する情報が格納される。
【００３４】
図３Ａ及び図３Ｂは、本発明の実施例におけるアドレス空間の一例を示す説明図である。
【００３５】
物理アドレス空間３００は、メモリ空間３１０及びＩ／Ｏ空間３２０を含む。メモリ空間３１０は、メモリへのアクセス時に用いられるアドレス空間である。メモリ空間３１０は、ＤＩＭＭ１２０のＤＩＭＭ実装領域３３０、及び混載ＤＩＭＭ１３０のＤＩＭＭ実装領域３４０を含む。ＤＩＭＭ実装領域３４０は、さらに、ＤＲＡＭ実装領域３５０及びＦｌａｓｈメモリ実装領域３６０を含む。
【００３６】
なお、メモリ空間３１０には、計算機１００に追加されるＤＩＭＭに割り当てるためのＤＩＭＭ未実装領域も含まれる。
【００３７】
Ｉ／Ｏ空間３２０は、Ｉ／Ｏデバイスへのアクセス時に用いられるアドレス空間である。Ｉ／Ｏ空間３２０には、Ｉ／Ｏデバイス実装領域及びＩ／Ｏデバイス未実装領域を含む。Ｉ／Ｏデバイス実装領域は、計算機１００が備えるＩ／Ｏデバイスを操作するためのレジスタ等の情報が格納される領域である。Ｉ／Ｏデバイス未実装領域は、計算機１００に追加されるＩ／Ｏデバイスに割り当てられる領域である。
【００３８】
後述するようにＦｌａｓｈメモリ実装領域３６０は、仮想アドレス空間５００（図５参照）では、Ｉ／Ｏ空間５２０にマップされる。この場合、Ｉ／Ｏ空間５２０がＦｌａｓｈメモリ実装領域３６０より大きいため、一対一にマップすることができない。したがって、図３Ｂに示すようにＦｌａｓｈメモリ実装領域３６０はバンクアクセス方式で管理することが望ましい。
【００３９】
本実施例のＦｌａｓｈメモリ実装領域３６０は、バンクセレクトレジスタ、情報レジスタ、及び複数のバンクから構成される。
【００４０】
バンクセレクトレジスタは、バンクの識別情報を格納する領域である。情報レジスタは、各バンクにおける制御情報を格納する領域である。例えば、ページ毎のアクセス時間等が格納される。
【００４１】
バンクは、Ｆｌａｓｈメモリ実装部２７０の管理単位であり、例えば、一つのＦｌａｓｈメモリチップ２８０に対して一つのバンクが対応づけられる。本実施例では、通常のデータを格納するバンクと、圧縮されたデータを格納するバンクとを含む。図３Ｂに示す例では、バンクｋには、バンク０からバンク２に格納されるデータを圧縮したデータが格納される。
【００４２】
以下の説明では、通常のデータを格納するバンクをＦｌａｓｈメモリ使用領域と記載し、圧縮データを格納するバンクをＦｌａｓｈメモリ圧縮領域と記載する。
【００４３】
図４は、本発明の実施例におけるメモリ空間３１０におけるソフトウェアの管理方法の一例を示す説明図である。
【００４４】
本実施例では、ハイパバイザ４００によってメモリ空間におけるアドレスの割当が管理される。
【００４５】
図４に示す例では、ハイパバイザ４００は、自分自身の記憶領域として、一つのＤＩＭＭ実装領域３３０を割り当て、一つの仮想計算機４１０に一つのＤＩＭＭ実装領域３４０を割り当てる。なお、ハイパバイザ４００は、仮想計算機４１０に仮想アドレス空間５００（図５参照）を割り当てる。
【００４６】
なお、図４に示すメモリ空間の割当方法は一例であって、複数のＤＩＭＭ実装領域３３０、又は複数のＤＩＭＭ実装領域３４０を一つの仮想計算機４１０に割り当てられてもよい。また、一つ以上のＤＩＭＭ実装領域３３０及び一つ以上のＤＩＭＭ実装領域３４０を一つの仮想計算機４１０に割り当ててもよい。
【００４７】
ハイパバイザ４００に割り当てられたＤＩＭＭ実装領域３３０には、アドレス変換部４０１を実現するプログラム及びアドレス変換テーブル４０２が格納される。アドレス変換部４０１は、仮想アドレス空間と物理アドレス空間との間のアドレスを変換する。アドレス変換テーブル４０２は、仮想アドレス空間と物理アドレス空間との対応関係を格納する。
【００４８】
仮想計算機４１０に割り当てられたＤＩＭＭ実装領域３４０には、ＯＳ４１１及びアプリケーション４１２を実現するためのプログラムが格納される。また、ＤＩＭＭ実装領域３４０には、アプリケーション４１２が使用するワーキングセットが含まれる。
【００４９】
図５は、本発明の実施例における仮想的なアドレス空間と物理的なアドレス空間との対応関係を示す説明図である。
【００５０】
本実施例では、ＤＩＭＭ実装領域３４０のＤＲＡＭ実装領域３５０は、仮想アドレス空間５００のメモリ空間５１０にマップされ、Ｆｌａｓｈメモリ実装領域３６０は、仮想アドレス空間５００のＩ／Ｏ空間５２０にマップされる。具体的には、Ｆｌａｓｈメモリ実装領域３６０は、高速Ｉ／Ｏデバイス実装領域５３０にマップされる。
【００５１】
すなわち、ハイパバイザ４００は、仮想的なストレージ装置として混載ＤＩＭＭ１３０のＦｌａｓｈメモリ実装部２７０を割り当てる。
【００５２】
これによって、仮想計算機４１０上で稼働するＯＳ４１１は、仮想的なストレージ装置によって提供される記憶領域としてＦｌａｓｈメモリ実装領域３６０を利用することができる。すなわち、既存のＯＳ４１１に対して混載ＤＩＭＭ１３０の構成を隠蔽できるため、既存のＯＳ４１１の設定を変更することなく混載ＤＩＭＭ１３０を導入することができる。
【００５３】
アドレス変換部４０１は、アドレス変換テーブル４０２に基づいて、メモリ空間５１０の所定のアドレスに対するアクセスを、ＤＲＡＭ実装領域３５０の所定のアドレスに対するアクセスに変換する。また、アドレス変換部４０１は、アドレス変換テーブル４０２に基づいて、高速Ｉ／Ｏデバイス実装領域５３０の所定のアドレスに対するアクセスを、Ｆｌａｓｈメモリ実装領域３６０の所定のアドレスに対するアクセスに変換する。さらに、アドレス変換部４０１は、アドレス変換テーブル４０２に基づいて、高速Ｉ／Ｏデバイス実装領域５３０以外のＩ／Ｏデバイス実装領域の所定のアドレスに対するアクセスを、Ｉ／Ｏ空間３２０の所定のアドレスに対するアクセスに変換する。
【００５４】
図６は、本発明の実施例におけるハイパバイザ４００が仮想計算機を生成時に実行する処理を説明するフローチャートである。
【００５５】
ハイパバイザ４００は、仮想計算機４１０の生成要求を受信した場合に処理を開始する。
【００５６】
ハイパバイザ４００は、仮想計算機４１０を起動する（ステップＳ６０１）。具体的には以下のような処理が実行される。
【００５７】
ハイパバイザ４００は、プロセッサ１１０、ＤＩＭＭ１２０、混載ＤＩＭＭ１３０、及びＩ／Ｏデバイス等の計算機リソースを仮想計算機４１０に割り当てることによって、仮想計算機４１０を生成する。本実施例では、仮想計算機４１０に、少なくとも一つ以上の混載ＤＩＭＭ１３０が割り当てられる。
【００５８】
このとき、ハイパバイザ４００は、混載ＤＩＭＭ１３０のＤＲＡＭ実装領域３５０を仮想メモリとして割り当て、混載ＤＩＭＭ１３０のＦｌａｓｈメモリ実装部２７０を仮想ディスクとして割り当てる。前述した処理によって、図５に示すような仮想アドレス空間５００が割り当てられる。
【００５９】
ハイパバイザ４００は、高速Ｉ／Ｏデバイス実装領域５３０とＦｌａｓｈメモリ実装領域３６０との対応関係をアドレス変換テーブル４０２に登録する。また、ハイパバイザ４００は、Ｆｌａｓｈメモリ実装領域３６０に仮想計算機４１０のワーキングセットに割り当てる記憶領域を設定する。
【００６０】
ハイパバイザ４００は、ＤＲＡＭ実装領域３５０及びＦｌａｓｈメモリ使用領域を監視する。また、ハイパバイザ４００は、当該対象の記憶領域における空き容量の上限値及び下限値を設定する。以下の説明では、ＤＲＡＭ実装領域３５０及びＦｌａｓｈメモリ使用領域を監視記憶領域とも記載する。
【００６１】
ハイパバイザ４００は、後述するようにワーキングセットへのアクセス時にメモリインタフェースバス１２５を介してＦｌａｓｈメモリ実装領域３６０にアクセスするため、ワーキングセットへの高速なアクセスが可能となる。これによって、仮想計算機４１０上で稼働するアプリケーション４１２のスループットを向上させることができる。
【００６２】
また、Ｆｌａｓｈメモリ実装領域３６０は、大容量化が可能であるため、外部ストレージ等へのワーキングセットのスワップを回避することができる。
【００６３】
その他の計算機リソースの割当方法は公知の技術を用いればよいため説明を省略する。
【００６４】
以上がステップＳ６０１の処理である。
【００６５】
ステップＳ６０１の処理完了後、生成された仮想計算機４１０上では、ＯＳ４１１及びアプリケーション４１２が稼働する。なお、アプリケーション４１２が仮想メモリ又は仮想ディスクにアクセスする場合に実行される処理については、図８、図９Ａ、及び図９Ｂを用いて後述する。
【００６６】
次に、ハイパバイザ４００は、監視記憶領域の監視処理を実行する（ステップＳ６０２）。監視記憶領域の監視処理の詳細については、図７を用いて後述する。
【００６７】
監視処理の開始タイミングとしては、周期的、又は、仮想メモリ又は仮想ディスクへのアクセスが検知された時に実行する方法が考えられる。
【００６８】
ハイパバイザ４００は、アプリケーション４１２の終了、又は、仮想計算機４１０が削除されるまで繰り返し監視処理を実行する。
【００６９】
図７は、本発明の実施例における監視記憶領域の監視処理を説明するフローチャートである。
【００７０】
ハイパバイザ４００は、監視記憶領域の空き容量が不足しているか否かを判定する（ステップＳ７０１）。
【００７１】
具体的には、ハイパバイザ４００は、監視記憶領域の空き容量が下限値より小さいか否かを判定する。監視記憶領域の空き容量が下限値より小さい場合、ハイパバイザ４００は、監視記憶領域の空き容量が不足していると判定する。
【００７２】
監視記憶領域の空き容量に関する情報は、公知の技術を用いることによって取得すればよい。例えば、ハイパバイザ４００が保持する計算機リソースの割当管理情報等から取得することができる。なお、本発明は、前述した方法に限定されない。
【００７３】
監視記憶領域の空き容量が不足していないと判定された場合、ハイパバイザ４００は、監視記憶領域の空き容量に余裕があるか否かを判定する（ステップＳ７０２）。
【００７４】
具体的には、ハイパバイザ４００は、監視記憶領域の空き容量が上限値より大きいか否かを判定する。監視記憶領域の空き容量が上限値より大きい場合、ハイパバイザ４００は、監視記憶領域の空き容量に余裕があると判定する。
【００７５】
監視記憶領域の空き容量に余裕がない、すなわち、圧縮データを伸長するための容量が確保できないと判定された場合、ハイパバイザ４００は、ステップＳ７０１に戻り同様の処理を実行する。
【００７６】
監視記憶領域の空き容量に余裕があると判定された場合、ハイパバイザ４００は、Ｆｌａｓｈメモリ圧縮領域に圧縮データが格納されているか否かを判定する（ステップＳ７０３）。
【００７７】
具体的には、ハイパバイザ４００は、仮想計算機に割り当てられたＦｌａｓｈメモリ実装領域３６０のＦｌａｓｈメモリ圧縮領域を参照することによって、圧縮データが格納されているか否かを判定する。
【００７８】
Ｆｌａｓｈメモリ圧縮領域に圧縮データが格納されていないと判定された場合、ハイパバイザ４００は、ステップＳ７０１に戻り同様の処理を実行する。
【００７９】
Ｆｌａｓｈメモリ圧縮領域に圧縮データが格納されていると判定された場合、ハイパバイザ４００は、Ｆｌａｓｈメモリ圧縮領域からＦｌａｓｈメモリ使用領域への圧縮データの読み出しを要求するメモリアクセスを出力する（ステップＳ７０４）。その後、ハイパバイザ４００は、ステップＳ７０２に戻り同様の処理を実行する。以下の説明では、ステップＳ７０４において出力されるメモリアクセスを第１の特殊メモリアクセスとも記載する。
【００８０】
ステップＳ７０４では、以下のような処理が実行される。
【００８１】
ハイパバイザ４００は、Ｆｌａｓｈメモリ圧縮領域から圧縮データを読み出すバンクを選択する。例えば、アクセス日時が新しい圧縮データが格納されるバンク、又は、アクセス頻度が高い圧縮データが格納されるバンクを選択する方法が考えられる。
【００８２】
ハイパバイザ４００は、圧縮データを格納するＦｌａｓｈメモリ使用領域のバンクを選択する。例えば、圧縮データを読み出すバンクのアドレスと近いアドレスのバンクを選択する方法が考えられる。
【００８３】
ハイパバイザ４００は、圧縮データを読み出すバンクのアドレス、及び格納先のバンクのアドレスを含む第１の特殊メモリアクセスを出力する。
【００８４】
以上がステップＳ７０４の処理である。
【００８５】
なお、第１の特殊メモリアクセスを受け付けた混載ＤＩＭＭ１３０が実行する処理については、図９Ａ及び図９Ｂを用いて後述する。
【００８６】
ステップＳ７０１において、監視記憶領域の空き容量が不足していると判定された場合、ハイパバイザ４００は、Ｆｌａｓｈメモリ圧縮領域に圧縮データを格納できるか否かを判定する（ステップＳ７０５）。
【００８７】
具体的には、ハイパバイザ４００は、Ｆｌａｓｈメモリ圧縮領域の空き容量を確認し、圧縮データを保存するための容量を確保できるか否かを判定する。
【００８８】
Ｆｌａｓｈメモリ圧縮領域に圧縮データを格納できると判定された場合、ハイパバイザ４００は、Ｆｌａｓｈメモリ使用領域からＦｌａｓｈメモリ圧縮領域へのデータの書き込みを要求するメモリアクセスを出力する（ステップＳ７０６）。その後、ハイパバイザ４００は、ステップＳ７０７に進む。以下の説明では、ステップＳ７０６において出力されるメモリアクセスを第２の特殊メモリアクセスとも記載する。
【００８９】
ステップＳ７０６では、以下のような処理が実行される。
【００９０】
ハイパバイザ４００は、Ｆｌａｓｈメモリ使用領域の情報レジスタを参照し、各バンクにおけるアクセス時間を確認する。ハイパバイザ４００は、アクセス時間が古い順にバンクを選択する。なお、本発明は選択されるバンクの数に限定されない。例えば、予め、選択するバンクの数を設定してもよいし、下限値以上となるようにバンクの数を選択してもよい。
【００９１】
ハイパバイザ４００は、Ｆｌａｓｈメモリ圧縮領域におけるバンクを選択する。例えば、圧縮対象のデータが格納されるバンクのアドレスと近いアドレスのバンクを選択する方法が考えられる。
【００９２】
ハイパバイザ４００は、圧縮対象のデータを格納するバンクのアドレス、及び格納先のバンクのアドレスを含む第２の特殊メモリアクセスを出力する。
【００９３】
以上がステップＳ７０６の処理である。
【００９４】
なお、第２の特殊メモリアクセスを受け付けた混載ＤＩＭＭ１３０が実行する処理については、図９Ａ及び図９Ｂを用いて後述する。
【００９５】
次に、ハイパバイザ４００は、仮想計算機４１０における処理が完了したか否かを判定する（ステップＳ７０７）。例えば、ハイパバイザ４００は、アプリケーション４１２の処理が完了したか否かを判定する。
【００９６】
仮想計算機４１０における処理が完了したと判定された場合、ハイパバイザ４００は、処理を終了する。
【００９７】
仮想計算機４１０における処理が完了していないと判定された場合、ハイパバイザ４００は、ステップＳ７０１に戻り同様の処理を実行する。
【００９８】
ステップＳ７０５において、Ｆｌａｓｈメモリ圧縮領域に圧縮データを格納できると判定された場合、ハイパバイザ４００は、Ｉ／Ｏスイッチ１４０を介して接続されるストレージ装置に、Ｆｌａｓｈメモリ使用領域に格納されるデータ、すなわち、ワーキングセットに格納されるデータの一部を退避する（ステップＳ７０８）。その後、ハイパバイザ４００は、ステップＳ７０１に戻り同様の処理を実行する。
【００９９】
本実施例では、ハイパバイザ４００は、以下のような処理を実行することによって退避対象のデータを選択する。ハイパバイザ４００は、Ｆｌａｓｈメモリ使用領域の情報レジスタを参照し、各バンクにおけるアクセス時間を確認する。ハイパバイザ４００は、アクセス時間が古い順にバンクを選択する。なお、本発明は選択されるバンクの数に限定されない。例えば、予め、選択するバンクの数を設定してもよいし、下限値以上となるようにバンクの数を選択してもよい。
【０１００】
選択されたデータをストレージ装置に退避する処理は公知の技術を用いればよいため詳細な説明を省略する。
【０１０１】
次に、メモリアクセスの処理について説明する。
【０１０２】
図８は、本発明の実施例におけるハイパバイザ４００がメモリアクセスを受け付けた場合に実行する処理を説明するフローチャートである。
【０１０３】
ハイパバイザ４００は、仮想計算機４１０上のＯＳ４１１からメモリアクセスを受け付けると処理を開始する（ステップＳ８０１）。
【０１０４】
ハイパバイザ４００は、メモリアクセスのアクセス対象が仮想アドレス空間５００のメモリ空間５１０であるか否かを判定する（ステップＳ８０２）。
【０１０５】
具体的には、ハイパバイザ４００は、アクセス先のアドレスがメモリ空間５１０に割り当てられたアドレス範囲に含まれるか否かを判定する。
【０１０６】
アクセス対象がメモリ空間５１０であると判定された場合、ハイパバイザ４００は、ハイパバイザ４００は、アドレス変換テーブル４０２を用いて物理アドレス空間３００のＤＲＡＭ実装領域３５０のアドレスに変換する（ステップＳ８０３）。さらに、ハイパバイザ４００は、混載ＤＩＭＭ１３０のＤＲＡＭ実装部２５０へのメモリアクセスを実行し（ステップＳ８０４）、処理を終了する。
【０１０７】
ステップＳ８０２においてアクセス対象がメモリ空間５１０でないと判定された場合、ハイパバイザ４００は、メモリアクセスのアクセス対象が高速Ｉ／Ｏデバイス実装領域５３０であるか否かを判定する（ステップＳ８０５）。
【０１０８】
具体的には、ハイパバイザ４００は、アクセス先のアドレスが高速Ｉ／Ｏデバイス実装領域５３０に割り当てられたアドレス範囲に含まれるか否かを判定する。
【０１０９】
アクセス対象が高速Ｉ／Ｏデバイス実装領域５３０であると判定された場合、ハイパバイザ４００は、アドレス変換テーブル４０２を用いて物理アドレス空間３００のＦｌａｓｈメモリ実装領域３６０のアドレスに変換する（ステップＳ８０６）。さらに、ハイパバイザ４００は、混載ＤＩＭＭ１３０のＦｌａｓｈメモリ実装部２７０へのメモリアクセスを実行し（ステップＳ８０７）、処理を終了する。
【０１１０】
ステップＳ８０５においてアクセス対象が高速Ｉ／Ｏデバイス実装領域５３０でないと判定された場合、ハイパバイザ４００は、アドレス変換テーブル４０２を用いて物理アドレス空間３００のＩ／Ｏデバイス実装領域のアドレスに変換する（ステップＳ８０８）。さらに、ハイパバイザ４００は、Ｉ／Ｏデバイスへのアクセスを実行し（ステップＳ８０９）、処理を終了する。
【０１１１】
図９Ａ及び図９Ｂは、本発明の実施例における混載ＤＩＭＭ１３０が実行するアクセス処理を説明するフローチャートである。
【０１１２】
混載ＤＩＭＭ１３０は、メモリアクセスを受け付けると処理を開始する（ステップ９０１）。具体的には、ＤＲＡＭインタフェース２１０がメモリアクセスを受け付ける。
【０１１３】
混載ＤＩＭＭ１３０は、受け付けたメモリアクセスが通常のメモリアクセスであるか否かを判定する（ステップＳ９０２）。
【０１１４】
ここで、通常のメモリアクセスとは、Ｆｌａｓｈメモリ使用領域への圧縮データの読み出し要求するメモリアクセス、又はＦｌａｓｈメモリ圧縮領域へのデータの書き込みを要求するメモリアクセス以外のアクセスを示す。
【０１１５】
具体的には、制御部２２０がメモリアクセスに二つのアドレスが含まれるか否かを判定する。本実施例では、前述した二つのメモリアクセスには二つのアドレスが含まれるためである。なお、本発明はこれに限定されず、例えば、メモリアクセスに通常のメモリアクセスであることを識別できるフラグ等を含める方法等であってもよい。
【０１１６】
通常のメモリアクセスであると判定された場合、混載ＤＩＭＭ１３０は、アクセス先がＤＲＡＭ実装領域３５０であるか否かを判定する（ステップＳ９０３）。
【０１１７】
具体的には、制御部２２０が、管理テーブル２２４及び受け付けたメモリアクセスに含まれるアドレスに基づいて、アクセス先のアドレスがＤＲＡＭ実装領域３５０のアドレス範囲に含まれるか否かを判定する。
【０１１８】
アクセス先がＤＲＡＭ実装領域３５０であると判定された場合、混載ＤＩＭＭ１３０は、ＤＲＡＭバス２６１を介して所定のＤＲＡＭチップ２６０にアクセスし、プロセッサ１１０にアクセス結果を応答し、処理を終了する（ステップＳ９０４）。
【０１１９】
具体的には、ＤＲＡＭチップインタフェース２３０がメモリアクセスに含まれるアドレスに基づいて、所定のＤＲＡＭチップ２６０にアクセスする。ＤＲＡＭチップ２６０へのアクセス制御は公知の技術を用いればよいため説明を省略する。
【０１２０】
アクセス先がＤＲＡＭ実装領域３５０でない、すなわち、アクセス先がＦｌａｓｈメモリ実装領域３６０であると判定された場合、混載ＤＩＭＭ１３０は、Ｆｌａｓｈメモリバス２８１を介してＦｌａｓｈメモリチップにアクセスし、プロセッサ１１０にアクセス結果を応答し、処理を終了する（ステップＳ９０５）。例えば、以下のような処理が実行される。
【０１２１】
メモリアクセスがＦｌａｓｈメモリ実装領域３６０へのデータ書込要求である場合、制御部２２０のインテリジェント制御部２２３が、コントローラ２００内部のバッファにデータを書き込み、プロセッサ１１０に書き込みの終了を応答する。その後、インテリジェント制御部２２３がＦｌａｓｈメモリチップインタフェース２４０に、バッファに書き込まれたデータの書き込み命令を発行する。Ｆｌａｓｈメモリチップインタフェース２４０は、当該命令に基づいてＦｌａｓｈメモリチップ２８０を特定し、特定されたＦｌａｓｈメモリチップ２８０にバッファに格納されたデータを書き込む。
【０１２２】
メモリアクセスがＦｌａｓｈメモリ実装領域３６０からのデータ読出要求である場合、制御部２２０のインテリジェント制御部２２３が、Ｆｌａｓｈメモリチップインタフェース２４０のデータの読み出し命令を発効する。Ｆｌａｓｈメモリチップインタフェース２４０は、当該命令に基づいてＦｌａｓｈメモリチップ２８０を特定し、特定されたＦｌａｓｈメモリチップ２８０からデータを読み出す。インテリジェント制御部２２３は、読み出されたデータをバッファに格納し、所定のデータサイズになった場合にバッファに格納されたデータをプロセッサ１１０に応答する。
【０１２３】
本実施例では、データの書き込み単位、及びデータの読み出し単位は、ページ単位であるものとする。ただし、本発明はこれに限定されない。
【０１２４】
以上がステップＳ９０５における処理の一例である。
【０１２５】
ステップＳ９０２において、通常のメモリアクセスでないと判定された場合、混載ＤＩＭＭ１３０は、受け付けたメモリアクセスが第１の特殊メモリアクセスであるか否かを判定する（ステップＳ９０６）。
【０１２６】
受け付けたメモリアクセスが第１の特殊メモリアクセスであると判定された場合、混載ＤＩＭＭ１３０は、Ｆｌａｓｈメモリ圧縮領域に格納される圧縮データを伸長し（ステップＳ９０７）、Ｆｌａｓｈメモリ使用領域に伸長されたデータを書き込む（ステップＳ９０８）。その後、混載ＤＩＭＭ１３０は処理を終了する。
【０１２７】
ステップＳ９０７及びステップＳ９０８では、例えば、以下のような処理が実行される。
【０１２８】
制御部２２０は、第１の特殊メモリアクセスに基づいて、Ｆｌａｓｈメモリチップインタフェース２４０に、指定されたＦｌａｓｈメモリ圧縮領域に格納される圧縮データの読み出し命令を発行する。Ｆｌａｓｈメモリチップインタフェース２４０は、当該命令に基づいて、Ｆｌａｓｈメモリ圧縮領域に対応するＦｌａｓｈメモリチップ２８０を特定し、特定されたＦｌａｓｈメモリチップ２８０から圧縮データを読み出す。
【０１２９】
制御部２２０は、読み出された圧縮データをバッファに格納し、制御部２２０の圧縮／伸長部２２２が、バッファに格納される圧縮データを伸長し、伸長されたデータをバッファに格納する。
【０１３０】
制御部２２０は、第１の特殊メモリアクセスに基づいて、Ｆｌａｓｈメモリチップインタフェース２４０に伸長されたデータの書き込み命令を発効する。Ｆｌａｓｈメモリチップインタフェース２４０は、当該命令に基づいてＦｌａｓｈメモリ使用領域に対応するＦｌａｓｈメモリチップ２８０を特定し、特定されたＦｌａｓｈメモリチップ２８０に伸長されたデータを書き込む。
【０１３１】
本実施例では、制御部２２０は、Ｆｌａｓｈメモリ圧縮領域からページ単位に圧縮データを読み出し、ページ単位に圧縮データを伸長するものとする。ただし、本発明はこれに限定されない。
【０１３２】
以上がステップＳ９０７及びステップＳ９０８における処理の一例である。
【０１３３】
ステップＳ９０６において、受け付けたメモリアクセスが第１の特殊メモリアクセスでない、すなわち、第２の特殊メモリアクセスであると判定された場合、混載ＤＩＭＭ１３０は、指定されたＦｌａｓｈメモリ使用領域に格納されるデータを圧縮し（ステップＳ９０９）、Ｆｌａｓｈメモリ圧縮領域に圧縮されたデータを書き込む（ステップＳ９１０）。その後、混載ＤＩＭＭ１３０は処理を終了する。
【０１３４】
ステップＳ９０９及びステップＳ９１０では、例えば、以下のような処理が実行される。
【０１３５】
制御部２２０は、第２の特殊メモリアクセスに基づいて、Ｆｌａｓｈメモリチップインタフェース２４０に、指定されたＦｌａｓｈメモリ使用領域に格納されるデータの読み出し命令を発効する。Ｆｌａｓｈメモリチップインタフェース２４０は、当該命令に基づいて、Ｆｌａｓｈメモリ使用領域に対応するＦｌａｓｈメモリチップ２８０を特定し、特定されたＦｌａｓｈメモリチップ２８０からデータを読み出す。
【０１３６】
制御部２２０は、読み出されたデータをバッファに格納し、制御部２２０の圧縮／伸長部２２２が、バッファに格納されるデータを圧縮し、圧縮データをバッファに格納する。なお、本発明は、データの圧縮方法に限定されない。
【０１３７】
制御部２２０は、第２の特殊メモリアクセスに基づいて、Ｆｌａｓｈメモリチップインタフェース２４０に圧縮データの書き込み命令を発効する。Ｆｌａｓｈメモリチップインタフェース２４０は、当該命令に基づいてＦｌａｓｈメモリ圧縮領域に対応するＦｌａｓｈメモリチップ２８０を特定し、特定されたＦｌａｓｈメモリチップ２８０に圧縮されたデータを書き込む。
【０１３８】
本実施例では、制御部２２０は、Ｆｌａｓｈメモリ使用領域からページ単位にデータを読み出し、ページ単位にデータを圧縮するものとする。ただし、本発明はこれに限定されない。
【０１３９】
図１０は、本発明の実施例におけるメモリアクセス及びＩ／Ｏアクセスを示すスタック図である。
【０１４０】
本実施例におけるメモリアクセス及びＩ／Ｏアクセスの経路は、図１０に示すような経路となる。
【０１４１】
ＯＳ４１１とＤＲＡＭ実装領域３５０との間のメモリアクセスの経路１００１は、従来の経路と同一である。すなわち、アプリケーション４１２がメモリへのアクセスを要求した場合、ＯＳ４１１、ハイパバイザ４００を介して、メモリインタフェース１１２が起動され、混載ＤＩＭＭ１３０のＤＲＡＭ実装部２５０にアクセスされる。
【０１４２】
また、ＯＳ４１１とＩ／Ｏデバイスとの間のＩ／Ｏアクセスの経路１００３は、従来の経路と同一である。すなわち、アプリケーション４１２がＩ／Ｏデバイスへのアクセスを要求した場合、ＯＳ４１１、ハイパバイザ４００を介して、Ｉ／Ｏインタフェース１１３が起動され、Ｉ／Ｏスイッチ１４０を介してＮＩＣ１５０等のＩ／Ｏデバイスが操作される。
【０１４３】
本実施例では、経路１００２に特徴がある。
【０１４４】
ＯＳ４１１は、図５に示すように、Ｆｌａｓｈメモリ実装領域３６０を高速Ｉ／Ｏデバイス実装領域５３０として認識している。したがって、アプリケーション４１２は、高速Ｉ／Ｏデバイス実装領域５３０へのアクセスする場合、Ｉ／Ｏ空間５２０へのアクセスが出力される。当該アクセスは、ＯＳ４１１を経由してハイパバイザ４００が受け付ける。
【０１４５】
ハイパバイザ４００は、当該アクセスをメモリ空間３１０へのアクセスに変換することによって、メモリインタフェース１１２が起動され、混載ＤＩＭＭ１３０のＦｌａｓｈメモリ実装部２７０にアクセスされる。
【０１４６】
本発明によれば、Ｆｌａｓｈメモリを搭載する混載ＤＩＭＭを用いることによって、高速アクセスが可能なメモリ領域にワーキングセットを常駐させることができる。また、ハイパバイザ４００がＩ／Ｏ空間としてＦｌａｓｈメモリの記憶領域を提供することによって、特殊なハードウェア構成を隠蔽できる。これによって、以下のような効果が奏される。
【０１４７】
混載ＤＩＭＭ１３０は、Ｆｌａｓｈメモリを有するためワーキングセットに全てのデータを格納することができる。このため、大量のメモリを増設する必要がないため計算機システムのコストを削減することができ、また、消費電力を削減することができる。
【０１４８】
メインメモリとストレージ装置との間のアクセスについては、特許文献２に記載された発明ではＦｉｂｅｒ  Ｃｈａｎｎｅｌのバンド幅がボトルネックとなっており、特許文献３に記載の発明ではＰＣＩｅバスの転送速度がボトルネックとなっていた。しかし、本発明では、高速なメモリインタフェースを用いてＦｌａｓｈメモリにアクセスするため、計算機システムの処理性能を向上させることができる。
【０１４９】
本発明の構成によって、既存のＯＳ、及びアプリケーション等の改変をすることなく混載ＤＩＭＭ１３０を利用することができる。
【０１５０】
Ｆｌａｓｈメモリの記憶領域は、データのアクセス状況に応じて、データを圧縮又は伸長することによってワーキングセットが常駐可能なメモリ領域を確保することができる。これによって、計算機システムの処理性の低下を抑止することができる。さらに、Ｆｌａｓｈメモリの記憶領域を有効に活用できるため、不要なＤＩＭＭの追加等を削減することができる。
【０１５１】
さらに、Ｆｌａｓｈメモリのワーキングセットに全てのデータを格納できるため、ページフォールトの発生を抑止できる。これによって、計算機システム全体としての消費電力を低減することができる。また、ワーキングセットに格納できないデータを対比するための外部ストレージを必要としないため、計算機システムの規模を小さくできる。したがって、低コストかつ低消費電力の計算機システムを実現することができる。
【０１５２】
また、Ｆｌａｓｈメモリ使用領域及びＦｌａｓｈメモリ圧縮領域は、同一の混載ＤＩＭＭ１３０内にあるため、ハイパバイザ４００の処理を実行するプロセッサ１１０は、一回のメモリアクセスを出力することによって、仮想計算機４１０の記憶容量を操作することができる。これによって、プロセッサ１１０の処理負荷を低減することができるため、計算機１００の消費電力を低減することができる。
【０１５３】
また、メモリインタフェースを用いたメモリアクセスによって、計算機システムの処理性能が向上するため、データの読み出し、又はデータの書き込み時の待ち時間を低減することができる。これによって、仮想計算機に割り当てられた計算機リソースを有効に活用できるため、計算機システム全体として消費電力を低減することができる。
【０１５４】
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。
【符号の説明】
【０１５５】
１００  計算機
１１０  プロセッサ
１１１  プロセッサコア
１１２  メモリインタフェース
１１３  Ｉ／Ｏインタフェース
１２０  ＤＩＭＭ
１２５  メモリインタフェースバス
１３０  混載ＤＩＭＭ
１４０  Ｉ／Ｏスイッチ
１５０  ＮＩＣ
１６０  ＨＢＡ
１７０  ＩＰネットワーク
１７５  ＳＡＮ
２００  コントローラ
２１０  ＤＲＡＭインタフェース
２１１  アドレスレジスタ
２２０  制御部
２２１  ＤＭＡコントローラ
２２２  圧縮／伸長部
２２３  インテリジェント制御部
２２４  管理テーブル
２３０  ＤＲＡＭチップインタフェース
２３１  アドレスデコード
２３２  アクセス制御部
２３５  内部バス
２４０  Ｆｌａｓｈメモリチップインタフェース
２４１  アドレスデコード
２４２  アクセス制御部
２４５  内部バス
２５０  ＤＲＡＭ実装部
２６０  ＤＲＡＭチップ
２６１  ＤＲＡＭバス
２６２  チップセレクト信号
２７０  Ｆｌａｓｈメモリ実装部
２８０  Ｆｌａｓｈメモリチップ
２８１  Ｆｌａｓｈメモリバス
２８２  チップセレクト信号
３００  物理アドレス空間
３１０  メモリ空間
３２０  Ｉ／Ｏ空間
３３０  ＤＩＭＭ実装領域
３４０  ＤＩＭＭ実装領域
３５０  ＤＲＡＭ実装領域
３６０  Ｆｌａｓｈメモリ実装領域
４００  ハイパバイザ
４０１  アドレス変換部
４０２  アドレス変換テーブル
４１０  仮想計算機
４１１  ＯＳ
４１２  アプリケーション
５００  仮想アドレス空間
５１０  メモリ空間
５２０  Ｉ／Ｏ空間
５３０  高速Ｉ／Ｏデバイス実装領域
【図１】
2014170360.tif 000003
【図２】
2014170360.tif 000004
【図３Ａ】
2014170360.tif 000005
【図３Ｂ】
2014170360.tif 000006
【図４】
2014170360.tif 000007
【図５】
2014170360.tif 000008
【図６】
2014170360.tif 000009
【図７】
2014170360.tif 000010
【図８】
2014170360.tif 000011
【図９Ａ】
2014170360.tif 000012
【図９Ｂ】
2014170360.tif 000013
【図１０】
2014170360.tif 000014