(57)【要約】  メモリ管理の方法及び装置が開示される。メモリプールを生成するために少なくとも１つのメモリをプールし、少なくとも１つのメモリ空間を生成するようにメモリプールを分割し、それぞれのメモリ空間を各々のＣＰＵに１対１の対応方式で割り当てる。また、それぞれのＣＰＵに割り当てられたそれぞれのメモリ空間は、それぞれのＣＰＵのピンメモリとして設定される。さらに、割り当てられていないメモリ空間を共有メモリプールとして設定し、動作中のそれぞれのＣＰＵによるそれぞれのメモリ空間の使用量を表すメモリ値を取得し、メモリ値が予め設定された閾値範囲を超えるかどうかを判定する。メモリ値が予め設定された閾値範囲を超える場合、メモリプールから追加のメモリ空間を選択し、それぞれのＣＰＵに割り当てるか、またはＣＰＵに割り当てられたそれぞれのメモリ空間の少なくとも一部を再割り当てする。
2017535888.tif 000002
【特許請求の範囲】
【請求項１】
メモリ管理方法であって、
メモリプールを生成するために少なくとも１つのメモリをプールすることと、
前記メモリプールを分割して少なくとも１つのメモリ空間を生成することと、
前記少なくとも１つのメモリ空間のそれぞれのメモリ空間を複数のＣＰＵのそれぞれのＣＰＵに１対１の対応方式で割り当てて、前記それぞれのメモリ空間を前記それぞれのＣＰＵのピンメモリとして設定することと、
割り当てられていないメモリ空間を前記メモリプールの共有メモリプールとして設定することと、
動作中の前記それぞれのＣＰＵによる前記それぞれのメモリ空間の使用量を表すメモリ値を取得することと、
前記メモリ値が予め設定された閾値範囲を超えるかどうかを判定することと、
前記メモリ値が前記予め設定された閾値範囲を超えるかどうかに基づいて、前記メモリプールから追加のメモリ空間を選択して前記それぞれのＣＰＵに割り当てるか、または前記それぞれのＣＰＵに割り当てられている前記それぞれのメモリ空間の少なくとも一部を再割り当てすることと、
を備える方法。
【請求項２】
前記メモリ値を取得すること、前記判定すること、及び追加のメモリ空間を前記選択することを繰り返すことをさらに含む、請求項１に記載の方法。
【請求項３】
前記メモリ値が前記予め設定された閾値範囲を超えないと判定したことに応答して、
前記メモリ値を取得すること、前記判定すること、及び前記再割り当てすることを繰り返すことをさらに含む、請求項１に記載の方法。
【請求項４】
前記それぞれのＣＰＵの数に等しい数のメモリコントローラを選択することと、
前記それぞれのＣＰＵのポートアドレスと前記メモリコントローラのポートアドレスとを１対１の対応方式で一致させることと、
前記メモリコントローラに関連する少なくとも１つのチャネル内の前記メモリプールの少なくとも１つのデュアルインラインメモリモジュール（ＤＩＭＭ）スロットの対応するメモリ空間を、前記それぞれのＣＰＵに前記ピンメモリとして割り当てることであって、前記ＤＩＭＭスロットの前記割り当てられた対応するメモリ空間は固定アドレスを含む、ことをさらに含む、請求項１に記載の方法。
【請求項５】
前記メモリ値を取得することは、
前記複数のＣＰＵから前記それぞれのＣＰＵの前記メモリ値を取得することを含む、請求項４に記載の方法。
【請求項６】
前記メモリ値が予め設定された閾値範囲を超えるかどうかを前記判定することは、
前記メモリ値のうちの少なくとも１つが予め設定された第１の閾値を超えるかどうかを判定することと、
前記メモリ値が前記予め設定された第１の閾値を超える場合には、前記メモリ値の一定の割合に従って前記メモリプールから前記追加のメモリ空間を選択して、前記追加のメモリ空間を前記それぞれのＣＰＵに割り当てることと
を含む、請求項５に記載の方法。
【請求項７】
前記メモリ値が予め設定された第１の閾値を超えない場合、前記メモリ値が予め設定された第２の閾値未満であるかどうかを判定することと、
前記メモリ値が前記予め設定された第１の閾値を超えておらず、かつ前記メモリ値が前記予め設定された第２の閾値未満である場合には、前記メモリ値の一定の割合に従って前記それぞれのＣＰＵに割り当てられた前記それぞれのメモリ空間の少なくとも一部を再割り当てすることと
をさらに含む、請求項６に記載の方法。
【請求項８】
前記メモリ値が前記予め設定された第２の閾値以上である場合、前記メモリ値を取得すること、前記メモリ値が前記予め設定された閾値範囲を超えているかどうかを判定すること、及び前記メモリ値が予め設定された前記閾値範囲を超えるかどうかに基づいて、追加のメモリを前記メモリプールから選択して、前記それぞれのＣＰＵに割り当てるか、または前記それぞれのＣＰＵに割り当てられた前記それぞれのメモリ空間を再割り当てすることを繰り返すことをさらに含む、請求項７に記載の方法。
【請求項９】
前記メモリプールから追加のメモリ空間を前記選択することは、
前記それぞれのＣＰＵの前記ピンメモリに対応する前記ＤＩＭＭスロットと同じチャネルに位置する前記メモリプールの第２のＤＩＭＭスロットが存在するかどうかを判定することと、
前記第２のＤＩＭＭスロットが存在する場合、前記第２のＤＩＭＭスロットの第２の対応するメモリ空間を、前記メモリ値の一定の割合に従って前記それぞれのＣＰＵに割り当てることと
を含む、請求項６に記載の方法。
【請求項１０】
前記第２のＤＩＭＭスロットが存在しない場合には、前記それぞれのＣＰＵの前記ピンメモリに対応する前記ＤＩＭＭスロットとして、前記メモリコントローラ内に位置する前記メモリプール内に第３のＤＩＭＭスロットが存在するかどうかを判定することと、
前記第３のＤＩＭＭスロットが存在する場合、前記第３のＤＩＭＭスロットの第３の対応するメモリ空間を、前記メモリ値の一定の割合に従って前記それぞれのＣＰＵに割り当てることと、
前記第３のＤＩＭＭスロットが存在しない場合には、前記メモリ値の別の一定の割合に従って、前記メモリプールから前記追加のメモリ空間を前記それぞれのＣＰＵに割り当てることと
をさらに含む、請求項９に記載の方法。
【請求項１１】
前記メモリ値を取得することは、
総メモリ値を得るために、前記複数のＣＰＵからの前記それぞれのＣＰＵの前記メモリ値を合計することを含む、請求項５に記載の方法。
【請求項１２】
前記メモリ値が予め設定された閾値範囲を超えるかどうかを判定することは、
前記総メモリ値が予め設定された第１の閾値を超えるかどうかを判定することと、
前記総メモリ値が前記予め設定された第１の閾値を超える場合、前記メモリ値の一定の割合に従って前記メモリプールから前記追加のメモリ空間を選択し、前記追加のメモリ空間を前記それぞれのＣＰＵに割り当てることと
を含む、請求項１１に記載の方法。
【請求項１３】
前記総メモリ値が予め設定された第１の閾値を超えない場合、前記総メモリ値が予め設定された第２の閾値未満であるかどうかを判定することと、
前記総メモリ値が前記予め設定された第１の閾値を超えておらず、かつ前記総メモリ値が前記予め設定された第２の閾値未満である場合には、前記メモリ値の一定の割合に従って前記それぞれのＣＰＵに割り当てられた前記それぞれのメモリ空間の前記少なくとも一部を再割当てすることと、
前記メモリ値が前記予め設定された第２の閾値以上である場合には、前記メモリ値を取得すること、前記メモリ値が前記予め設定された閾値範囲を超えるかどうかを判定すること、及び前記メモリ値が前記予め設定された閾値範囲を超えるかどうかに基づいて、前記メモリプールから追加のメモリ空間を選択して前記それぞれのＣＰＵに割り当てるか、または前記それぞれのＣＰＵに割り当てられた前記それぞれのメモリ空間を再割り当てすることを繰り返すことと
をさらに含む、請求項１２に記載の方法。
【請求項１４】
前記メモリプールから追加のメモリ空間を選択することは、
前記それぞれのＣＰＵの前記ピンメモリに対応する前記ＤＩＭＭスロットと同じチャネルに位置する前記共有メモリプールの第２のＤＩＭＭスロットが存在するかどうかを判定することと、
前記第２のＤＩＭＭスロットが存在する場合、前記第２のＤＩＭＭスロットの第２の対応するメモリ空間を、前記メモリ値の一定の割合に従って前記それぞれのＣＰＵに割り当てることと、
前記第２のＤＩＭＭスロットが存在しない場合、前記それぞれのＣＰＵの前記ピンメモリに対応する前記ＤＩＭＭスロットとして、それぞれのメモリコントローラに配置された前記共有メモリプールに第３のＤＩＭＭスロットが存在するかどうかを判定することと、
前記第３のＤＩＭＭスロットが存在する場合、前記第３のＤＩＭＭスロットの第３の対応するメモリ空間を、前記メモリ値の一定の割合に従って前記それぞれのＣＰＵに割り当てることと、
前記第３のＤＩＭＭスロットが存在しない場合、前記メモリ値の一定の割合に従って、前記メモリプールから前記追加のメモリ空間を前記それぞれのＣＰＵに割り当てることと
を含む、請求項１２に記載の方法。
【請求項１５】
前記複数のＣＰＵのそれぞれのＣＰＵを前記複数のＣＰＵのノードとして設定し、前記複数のＣＰＵの前記ノードを接続してＣＰＵプールを生成することと、をさらに含む、請求項１に記載の方法。
【請求項１６】
メモリ管理装置であって、
メモリプールを生成するために少なくとも１つのメモリをプールするように構成されたメモリプール部と、
前記メモリプールを分割して少なくとも１つのメモリ空間を生成すること、それぞれのメモリ空間を複数のＣＰＵのそれぞれのＣＰＵに１対１の対応方式で割り当てることであって、前記それぞれのＣＰＵに割り当てられた前記それぞれのメモリ空間が、前記それぞれのＣＰＵのピンメモリとして設定される、前記割り当てること、及び割り当てられていないメモリ空間を前記メモリプールの共有メモリプールとして設定することを行うように構成された、メモリデバイダと、
動作中の前記それぞれのＣＰＵによる前記それぞれのメモリ空間の使用量を表すメモリ値を取得するように構成されたメモリ値取得部と、
前記メモリ値が予め設定された閾値範囲を超えているかどうかを判定して、マネージャを開始するように構成されたメモリ値判定部と、を備え、
前記マネージャは、前記メモリプールから追加のメモリ空間を選択して前記それぞれのＣＰＵに割り当てるか、または前記それぞれのＣＰＵに割り当てられた前記それぞれのメモリ空間の前記少なくとも一部を再割り当てするように構成されている、装置。
【請求項１７】
前記メモリデバイダは、
メモリコントローラのセットを選択するように構成されたセレクタであって、前記メモリコントローラのセットの数は、前記複数のＣＰＵの数と等しい、セレクタと、
前記それぞれのＣＰＵのポートアドレスを前記メモリコントローラのポートアドレスと１対１の対応方式で一致させ、前記メモリコントローラによって制御される少なくとも１つのチャネルにおいて、少なくとも１つのデュアルインラインメモリモジュール（ＤＩＭＭ）スロットに対応する前記それぞれのメモリ空間を、前記それぞれのＣＰＵに割り当てるように構成されたアロケータであって、前記それぞれのメモリ空間は、前記それぞれのＣＰＵのピンメモリとして設定され、前記ＤＩＭＭスロットに対応するメモリアドレスは固定アドレスを含む、アロケータと
を備える、請求項１６に記載の装置。
【請求項１８】
前記複数のＣＰＵのそれぞれのＣＰＵを前記複数のＣＰＵのノードとして設定し、前記複数のＣＰＵの前記ノードを接続してＣＰＵプールを生成するように構成されたＣＰＵプール部をさらに備える、請求項１６に記載の装置。
【請求項１９】
プログラム命令が埋め込まれた非一時的なコンピュータ可読記憶媒体であって、デバイスの１または複数のプロセッサによって実行される場合、前記プログラム命令は、前記１または複数のプロセッサに、
メモリプールを生成するために少なくとも１つのメモリをプールすることと、
前記メモリプールを分割して少なくとも１つのメモリ空間を生成することと、
前記少なくとも１つのメモリ空間のそれぞれのメモリ空間を、複数のＣＰＵのそれぞれのＣＰＵに１対１の対応方式で割り当て、前記それぞれのメモリ空間を前記それぞれのＣＰＵのピンメモリとして設定することと、
前記割り当てられていないメモリ空間を前記メモリプールの共有メモリプールとして設定することと、
動作中の前記それぞれのＣＰＵによる前記それぞれのメモリ空間の使用量を表すメモリ値を取得することと、
前記メモリ値が予め設定された閾値範囲を超えるかどうかを判定することと、
前記メモリ値が、前記予め設定された閾値範囲を超えるかどうかに基づいて、前記メモリプールから追加のメモリ空間を選択して前記それぞれのＣＰＵに割り当てるか、または前記それぞれのＣＰＵに割り当てられた前記それぞれのメモリ空間の少なくとも一部を再割り当てすることと
を含む、メモリ空間を管理させることを実行させる、前記非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、その全体が参照により本出願に含まれる2014年11月25日に出願された中国特許出願第201410686872.8号の優先権及び利益を主張する。
【０００２】
本開示は、一般にメモリ管理の分野に関し、より詳細には、コンピュータメモリを管理する方法及び装置に関する。
【背景技術】
【０００３】
一般に、単一のサーバーでは、メモリサイズとＣＰＵプロセッサ能力との間の固定比が存在する。ＣＰＵの電力またはメモリサイズを増加させる必要がある場合、このプロセスが実行される一般的な方法は、１つまたは複数のサーバーを追加することである。その結果、ＣＰＵの全体的な能力またはメモリのサイズが増加する。メモリ空間やＣＰＵ処理能力を高めるために追加のサーバーを加えるだけで、結果として過剰な容量が発生し、これにより利用可能な全体的なＣＰＵ処理能力の利用率またはメモリ使用量が低下し得る。これはリソースの浪費と見なすことができる。
【０００４】
現在、ソフトウェアベースの解決策は、ＣＰＵまたはメモリの使用率が低下し、関連するリソースが浪費されるという上記の問題に対処するために利用可能である。このようなソフトウェアベースの解決策は、カプセル化のプロトコルによってサービスシステム内のメモリを管理し、ディスパッチする。
【０００５】
しかし、現在の解決法には欠点がある。例えば、メモリ使用量を再現する必要がある場合、メモリサイズは動的伝播を実行できない。さらに、ソフトウェアレベルでのカプセル化のプロトコルの使用により、サーバーシステム内のＣＰＵは、これらのプロトコルを処理するために比較的大容量のメモリを利用する傾向があり、ある程度の時間遅延を引き起こし、サーバーシステムの処理効率を低下させる。
【発明の概要】
【０００６】
本開示の実施形態は、メモリ管理の方法及び装置を提供する。また、本開示の実施形態は、より良いメモリ管理及びＣＰＵ処理割り当てを提供することによって、従来の解決策の欠点に対処する技術を提供する。
【０００７】
従って、本開示の一実施形態は、メモリ管理の方法を提供する。本方法は、メモリプールを生成することと、メモリプールを分割して少なくとも１つのメモリ空間を生成することと、それぞれのメモリ空間を１対１の対応方式でそれぞれのＣＰＵに割り当てることと、を含む。それぞれのメモリ空間は、各々のＣＰＵのピンメモリ（pinned memory）として設定される。本方法はさらに、割り当てられていないメモリ空間をメモリプールの共有メモリプールとして設定することを含む。すなわち、割り当てられていないメモリ空間は、メモリプール内に依然として割り当てられていないメモリ空間を備える。本方法は、動作中のそれぞれのＣＰＵによるそれぞれのメモリ空間の使用量を表すメモリ値を取得することと、メモリ値が予め設定された閾値範囲を超えるかどうかを判定することと、をさらに含む。本方法はさらに、メモリ値が予め設定された閾値範囲を超える場合、メモリプールから追加のメモリ空間を選択してそれぞれのＣＰＵに割り当て、かつ／またはそれぞれのＣＰＵに割り当てられたそれぞれのメモリ空間の一部を再割り当てすることを含む。
【０００８】
本開示の別の実施形態に基づき、メモリ管理装置が提供される。本装置は、メモリプールを生成するメモリプール部を備える。本装置はさらに、少なくとも１つのメモリ空間を生成するためにメモリプールに分割するメモリデバイダを備える。また、メモリデバイダは、それぞれのメモリ空間をそれぞれのＣＰＵに１対１の対応方式で割り当てるように動作可能である。それぞれのメモリ空間は、それぞれのＣＰＵのピンメモリとして設定される。割り当てられていないメモリ空間が、メモリプールの共有メモリプールとして設定される。すなわち、割り当てられていないメモリ空間は、依然として割り当てられていないメモリ空間、またはメモリプール内のピンメモリではないメモリ空間を備える。本装置はさらに、動作中のそれぞれのＣＰＵによるそれぞれのメモリ空間の使用量を表すメモリ値を取得するメモリ値取得部を備える。また、本装置は、メモリ値が予め設定された閾値範囲を超えるかどうかを判定するメモリ値判定部を備える。本装置はさらに、メモリプールから追加のメモリ空間を選択してそれぞれのＣＰＵに割り当て、かつ／またはそれぞれのＣＰＵに割り当てられたそれぞれのメモリ空間の少なくとも一部を再割り当てするためのマネージャを備える。メモリ値判定部は、メモリ値が予め設定された閾値範囲を超えた場合にマネージャを開始するように動作可能である。
【０００９】
さらに、本開示の別の実施形態は、メモリ管理システムを提供する。本システムは、少なくとも１つのメモリプールを生成させる命令と、メモリプールを分割して少なくとも１つのメモリ空間を生成させる命令と、それぞれのメモリ空間を１対１の対応方式でそれぞれのＣＰＵに割り当てさせる命令と、を含む。それぞれのメモリ空間は、それぞれのＣＰＵのピンメモリとして設定される。本システムはさらに、割り当てられていないメモリ空間をメモリプールの共有メモリプールとして設定させる命令を含む。すなわち、割り当てられていないメモリ空間は、メモリプール内に依然として割り当てられていないメモリ空間を備える。本システムはさらに、動作中のそれぞれのＣＰＵによるそれぞれのメモリ空間の使用量を表すメモリ値を取得させる命令と、メモリ値が予め設定された閾値範囲を超えるかどうかを判定させる命令と、を含む。本システムはさらに、メモリ値が予め設定された閾値範囲を超える場合に、メモリプールから追加のメモリ空間を選択させ、それぞれのＣＰＵに割り当てさせる命令、及び／またはそれぞれのＣＰＵに割り当てられたそれぞれのメモリ空間の少なくとも一部を再割り当てさせる命令をさらに含む。
【００１０】
本概要には、必要に応じて、詳細の簡略化、一般化、及び省略が含まれる。その結果、当業者は、概要が例示的なものに過ぎず、決して限定することを意図するものではないことを理解するであろう。特許請求の範囲によってのみ定義される本開示の他の態様、発明的特徴、及び利点は、以下に記載される非限定的な詳細な説明において明らかになる。
【図面の簡単な説明】
【００１１】
本開示の実施形態は、添付図面と併せて以下の詳細な説明を読むことにより、より良く理解される。図面において、同様の参照符号は同様の要素を示す。
【図１Ａ】実施形態に基づくメモリ管理方法のフロー図である。
【図１Ｂ】実施形態に基づくメモリ管理方法のフロー図である。
【図２】実施形態に基づくメモリ管理の装置のブロック図である。
【発明を実施するための形態】
【００１２】
ここで、実施形態を詳細に参照する。実施形態の例は添付図面に示す。本開示は、実施形態と関連付けて説明されるが、これらは本開示を実施形態に限定することを意図するものではないことが理解されるであろう。反対に、本開示は、添付の特許請求の範囲によって規定される本開示の趣旨及び範囲内で含まれ得る代替物、改変物、及び等価物を包含することを意図するものである。さらに、以下の実施形態の詳細な説明では、本開示の完全な理解を提供するために、多数の特定の詳細が記載される。しかし、当業者であれば、これらの具体的な詳細なしに実施形態を実施できることが認識されるであろう。他の例では、周知の方法、手順、及び構成要素は、実施形態の態様を不必要に不明瞭にしないように詳細に記載されていない。さらに、本開示の実施形態は、サーバーシステムにおけるメモリ管理方法及び装置を提供する。ここに限定されない他のタイプのシステムに基づく実施形態が存在し得る。
【００１３】
図１Ａは、メモリ管理方法を示す。ステップＳ１０１では、少なくとも１つのメモリをプールしてメモリプールを生成する。
【００１４】
ステップＳ１０１で言及されるメモリは、サーバーシステム内のサーバーによって構成されるメモリコントローラにより管理されるメモリであってもよい。
【００１５】
プールには、以下に限定しないが、ノードとしてサーバーシステム内のサーバーによって構成されたメモリコントローラにより管理されるそれぞれのメモリの設定と、ノードの単位でメモリプールを作成するために、ロジックチップまたはロジックデバイスを介したサーバーシステム内のノードの接続とが含まれる。
【００１６】
本開示の一実施形態では、少なくとも１つのメモリがプールされる。メモリプールを作成するためのプール操作の後の追加のステップが存在する。
【００１７】
サーバーシステム内のそれぞれのサーバーに対して構成されたそれぞれのＣＰＵは、ＣＰＵノードとして設定される。ＣＰＵノードは、ロジックチップまたはロジックデバイスを介して相互接続され、ＣＰＵノードを含むＣＰＵプールを作成する。
【００１８】
サーバーシステムにおけるメモリのプール及びＣＰＵのプールは、サーバーシステムにおけるメモリ及びＣＰＵの物理的な分離を実現する。従って、この物理的な分離の結果、サーバーシステム内のメモリとＣＰＵとの間の制限のない構成を実現することができる。すなわち、これらの制限のない構成により、サーバーシステム内のメモリの数を個別に増減することができる。さらに、サーバーシステム内のＣＰＵの数は、制限のない構成によって個別に増減することができ、メモリ及びＣＰＵリソースの不必要な使用の欠如が回避される。
【００１９】
さらに、本明細書で詳細に言及されていないメモリ及びＣＰＵのプールを実行または構成するための他の方法または例が存在し得る。
【００２０】
ステップＳ１０２では、メモリプールを分割して少なくとも１つのメモリ空間を生成し、それぞれのメモリ空間は、複数のＣＰＵに１対１の対応方式でそれぞれ割り当てる。ＣＰＵに割り当てられたメモリ空間はＣＰＵのピンメモリとして設定され、割り当てられていないメモリ空間はメモリプールの共有メモリプールとして設定される。すなわち、割り当てられていないメモリ空間は、メモリプール内に依然として割り当てられていないメモリ空間を備える。
【００２１】
サーバーシステム内のＣＰＵの数を「ｎ」個、メモリコントローラの数を「ｍ」個と仮定して（この場合、ｎはｍ未満である）、メモリプールを分割してメモリ空間を少なくとも１つ生成し、それぞれのＣＰＵに割り当て、割り当てられたメモリ空間をそれぞれのＣＰＵのピンメモリとして設定するステップを次で説明する。
【００２２】
（１）まず、複数のＣＰＵ内のＣＰＵの数に等しい数のメモリコントローラを選択する。ここで、上記「ｍ」個のメモリコントローラから、「ｎ」個のＣＰＵに対応する「ｎ」個のメモリコントローラとして、ｎ個のメモリコントローラがランダムに選択され、１対１のマッピング関係が確立される。
【００２３】
本開示の一実施形態に基づき、メモリコントローラとＣＰＵとの間の関係は、１対１の対応関係である。メモリコントローラとＣＰＵとの間には、１対多または多対１の方式のような他のタイプの対応関係が存在し、これは容易に構成することができるが、本明細書では詳細には言及しない。
【００２４】
（２）次に、１対１の対応方式で「ｎ」個のメモリの「ｎ」個のポートアドレスを備える「ｎ」個のＣＰＵの「ｎ」個のクイックパスインターコネクト「ＱＰＩ」ポートアドレス間の関係のセットを生成する。「ｎ」個のメモリコントローラのそれぞれのメモリコントローラの下にある少なくとも１つのチャネルの少なくとも１つのデュアルインラインメモリモジュール「ＤＩＭＭ」スロットの対応するメモリ空間を、メモリコントローラとの１対１対応関係を有するＣＰＵに割り当て、対応するメモリ空間をＣＰＵのピンメモリとして設定する。割り当ては、「ｎ」個のＣＰＵのすべてのＣＰＵがピンメモリを取得するまで繰り返される。
【００２５】
クイックパスインターコネクト「ＱＰＩ」は、ＣＰＵがデータにアクセスするために使用するパケット送信ベースの高速シリアルポイントツーポイント接続合意である。ＤＩＭＭすなわちデュアルインラインメモリモジュールは、コンピュータマザーボードに接続するピンを備えた小型回路基板上に１つまたは複数のランダムアクセスメモリチップを備えるモジュールである。
【００２６】
メモリコントローラは、メモリとＣＰＵとの間のデータ交換を管理するために使用するメモリを選択する。それぞれのメモリコントローラは、２〜４個のＤＤＲ（ダブルデータレート同期ダイナミックランダムアクセスメモリ）チャネルをサポートすることができ、各チャネルは１〜３個のメモリチップに対して１〜３個のＤＩＭＭスロットをサポートすることができる。それぞれのメモリチップのメモリ空間は、ＤＩＭＭスロットのメモリ空間に対応する。
【００２７】
本開示に基づく別の実施形態では、それぞれのメモリコントローラによって制御される少なくとも１つのチャネルの少なくとも１つのＤＩＭＭスロットに対応するメモリ空間がＣＰＵに割り当てられる。メモリ空間の割り当ては、ＣＰＵのピンメモリとして１対１の対応関係で行われる。
【００２８】
例えば、それぞれのメモリコントローラによって制御される２つのチャネルの４つのＤＩＭＭスロットの対応するメモリ空間は、メモリコントローラと１対１の対応関係にあるＣＰＵに割り当てられ、対応するメモリ空間はＣＰＵのピンメモリとして設定される。これを、以下を含む表１に示す。
【００２９】
それぞれのメモリコントローラの下の第１のチャネル（チャネル０１）の３つのＤＩＭＭスロット（ＤＩＭＭ  １、ＤＩＭＭ  ２及びＤＩＭＭ  ３）の対応するメモリ空間及び第２のチャネル（チャネル０２）の１つのＤＩＭＭスロット（ＤＩＭＭ  １）の対応するメモリ空間は、ｎ個のＣＰＵのそれぞれのＣＰＵのピンメモリとして「ｎ」個のＣＰＵのそれぞれのＣＰＵに割り当てられる。
【００３０】
割り当てられていないメモリ空間は、メモリプールに残っており、共有メモリプールとして設定される。それぞれのメモリコントローラによって制御されるチャネル０２のＤＩＭＭ  ２及びＤＩＭＭ  ３の対応するメモリ空間、並びにチャネル０３及びチャネル０４のＤＩＭＭ１、ＤＩＭＭ２、及びＤＩＭＭ３の対応するメモリ空間を含む表１の陰部分が共有メモリプールとして設定される。
【００３１】
【表１】
2017535888.tif 000003
【００３２】
本開示に基づく上記の実施形態では、メモリチップのメモリ空間のアドレスは固定アドレスである。すなわち、ＤＩＭＭスロットの対応するメモリ空間のアドレスは固定アドレスである。
【００３３】
ＤＩＭＭスロットの対応するメモリ空間のアドレスを実装する他の実行可能な実施形態が存在する。一例は、サーバーシステムによってリアルタイムアドレスを割り当てるものである。他のアドレス実装技術については、ここでは詳細に説明しない。
【００３４】
ステップＳ１０３では、動作中のそれぞれのＣＰＵによるそれぞれのメモリ空間の使用量を示すメモリ値が取得される。
【００３５】
この実施形態では、動作中のそれぞれのＣＰＵによるそれぞれのメモリ空間の使用量を表すメモリ値が、上述の「ｎ」個のＣＰＵの各々に対して得られる。
【００３６】
サーバーシステム内のオペレーティングシステムによって取得されたすべての「ｎ」個のＣＰＵの動作中のそれぞれのＣＰＵによって使用されるメモリ値は、オペレーティングシステムによって使用されるメモリ値及びアプリケーションプログラムによって使用されるメモリ値を含むことに留意されたい。
【００３７】
使用されたメモリ値を得るための上記の方法以外に、本明細書中で詳細に説明されない追加の方法が存在する。
【００３８】
この実施形態では、「ｎ」個のＣＰＵにおける動作中のそれぞれのＣＰＵによるそれぞれのメモリ空間の使用量を表すメモリ値が得られる。これらのメモリ値は、「ｎ」個のＣＰＵのそれぞれのＣＰＵを判定部として設定して、ＣＰＵによって使用されるメモリ値が予め設定された閾値範囲を超えるかどうかを判定することによって得られる。この判定に従って、共有メモリプールからＣＰＵに追加のメモリ空間を割り当てる、またはＣＰＵに割り当てられた元のメモリ空間の一部を解放するといったさらなる動作が行われる。
【００３９】
上記の方法に加えて、必要なメモリ空間を決定する他の方法がある。例えば、「ｎ」個のＣＰＵの動作中のそれぞれのＣＰＵによって使用されるメモリ値を得るために、「ｎ」個のＣＰＵの動作中に少なくとも１個のＣＰＵによって使用される全てのメモリ値を合計して、動作中の少なくとも１つのＣＰＵによって使用される全体的なメモリ値を取得することができる。次に、動作中の少なくとも１つのＣＰＵによって使用される全体的なメモリ値が、予め設定された閾値範囲を超えるかどうかが判定される。この判定に基づき、それぞれのＣＰＵに割り当てられた共有メモリプールから追加のメモリ空間が選択されるか、またはメモリ空間が解放もしくはリリースされる。
【００４０】
ステップＳ１０４では、メモリ値が予め設定された閾値範囲を超えているかどうかが判定される。
【００４１】
このステップでは、「ｎ」個のＣＰＵの動作中のそれぞれのＣＰＵのメモリ値を使用して、それぞれのメモリ値がそれぞれのＣＰＵの予め設定された閾値範囲を超えているかどうかを判定する。
【００４２】
一例として、「ｎ」個のＣＰＵのうちの１つのＣＰＵが、メモリ値がＣＰＵの予め設定された閾値範囲を超えているかどうかを判定するためのプロセスで使用される。プロセスには以下が含まれる。
【００４３】
（１）動作中のＣＰＵによって使用されるメモリ値が予め設定された第１の閾値を超えるかどうかを判定する。
【００４４】
動作中のＣＰＵによって使用されるメモリ値が、予め設定された第１の閾値を超える場合、ステップＳ１０５が開始され、メモリ値の一定の割合に従って共有メモリプールから追加のメモリ空間を適用し、追加のメモリ空間を対応するＣＰＵに割り当てる。
【００４５】
処理中のＣＰＵによって使用されるメモリ値が予め設定された第１の閾値を超えない場合、次のステップが開始され、処理中のＣＰＵによって使用されるメモリ値が予め設定された第２の閾値未満であるかどうかが判定される。
【００４６】
（２）動作中のＣＰＵによって使用されるメモリ値が、予め設定された第２の閾値未満であるかどうかを判定する。
【００４７】
ＣＰＵが動作中に使用するメモリ値が、予め設定された第２の閾値未満である場合、ステップＳ１０５において、ＣＰＵに割り当てられたメモリ空間はメモリ値の一定の割合に従って部分的に解放される。メモリを解放するプロセスは、ＣＰＵに割り当てられたメモリ空間がピンメモリに達するまで継続する。
【００４８】
動作中のＣＰＵが使用するメモリ値が予め設定された第２の閾値以上である場合、プロセスはステップＳ１０３に戻り、「ｎ」個のＣＰＵのそれぞれのＣＰＵが使用するメモリ値を取得する。
【００４９】
これらの解決策に加えて、ステップを実施する他の方法も存在する。例えば、「ｎ」個のＣＰＵの動作中にそれぞれのＣＰＵによって使用されるメモリ値が予め設定された第１の閾値を超えた場合、「ｎ個」のＣＰＵを順番に決定することができ、かつ／または「ｎ」個のＣＰＵの動作中にそれぞれのＣＰＵによって使用されるメモリ値が予め設定された第２の閾値未満である場合、「ｎ個」のＣＰＵを順番に決定することができる。次に、「ｎ」個すべてのＣＰＵが判定プロセスによって処理されるまで、前述の判定ステップが「ｎ」回繰り返される。この反復プロセスは本明細書では詳細には説明しない。
【００５０】
ステップＳ１０３に対応する本開示の実施形態では、「ｎ」個のＣＰＵの動作中にそれぞれのＣＰＵによって使用されるメモリ値を得るために、「ｎ」個のＣＰＵの動作中に少なくとも１つのＣＰＵによって使用される全てのメモリ値を合計して、処理中の少なくとも１つのＣＰＵによって使用される全体的なメモリ値を得る。次に、動作中の少なくとも１つのＣＰＵによって使用される全体的なメモリ値が予め設定された閾値範囲を超えるかどうかが判定される。この判定に基づき、それぞれのＣＰＵに割り当てられた共有メモリプールから追加のメモリ空間が選択されるか、またはメモリ空間が解放されるかもしくは再割り当てされる。
【００５１】
ステップＳ１０４において、動作中の少なくとも１つのＣＰＵによって使用される全体的なメモリ値が予め設定された閾値範囲を超えているかどうかの判定は、次に説明するように実施することができる。
【００５２】
（１）動作中の「ｎ」個のＣＰＵの少なくとも１つのＣＰＵによって使用される全体的なメモリ値が、予め設定された第１の閾値を超えるかどうかを判定する。
【００５３】
動作中の少なくとも１つのＣＰＵによって使用される全体的なメモリ値が、予め設定された第１の閾値を超えた場合、メモリプールから少なくとも１つの追加のメモリ空間がメモリ値の一定の割合に従って適用され、その結果、少なくとも１つのＣＰＵ内のそれぞれのＣＰＵに１対１対応の方式で割り当てられる。
【００５４】
動作中の少なくとも１つのＣＰＵによって使用される全体的なメモリ値が、予め設定された第１の閾値を超えない場合、次のステップが開始されて、動作中の少なくとも１つのＣＰＵによって使用される全体的なメモリ値が予め設定された第２の閾値未満であるかどうかを判定する。
【００５５】
（２）動作中の少なくとも１つのＣＰＵによって使用される全体的なメモリ値が予め設定された第２の閾値未満であるかどうかを判定する。
【００５６】
動作中の少なくとも１つのＣＰＵによって使用される全体的なメモリ値が、予め設定された第２の閾値未満である場合、少なくとも１つのＣＰＵ内のそれぞれのＣＰＵに割り当てられるメモリ空間は、メモリ値の一定割合に従って部分的に解放される。メモリを解放するプロセスは、少なくとも１つのＣＰＵ内のそれぞれのＣＰＵに割り当てられたメモリ空間がピンメモリのサイズに達するまで継続する。
【００５７】
動作中の少なくとも１つのＣＰＵによって使用される全体的なメモリ値が、予め設定された第１の閾値以上である場合、プロセスはステップＳ１０３に戻り、「ｎ」個のＣＰＵのそれぞれのＣＰＵによって使用されるメモリ値を取得する。
【００５８】
ステップＳ１０５では、メモリプールから追加のメモリ空間を適用してＣＰＵに割り当てるか、またはＣＰＵに割り当てられたメモリ空間を再割り当てするかもしくは解放する。
【００５９】
ステップＳ１０５を実行するための前提条件は、ステップＳ１０４において、処理中のＣＰＵによって使用されるメモリ値が予め設定された第１の閾値を超えているか、または処理中のＣＰＵによって使用されるメモリ値が予め設定された第２の閾値未満であるかが判定されることである。
【００６０】
処理中のＣＰＵによって使用されるメモリ値が、予め設定された第１の閾値を超える場合、ＣＰＵに割り当てられるメモリ値の一定の割合に従ってメモリプールから１つの追加のメモリ空間が適用される。
【００６１】
動作中のＣＰＵによって使用されるメモリ値が、予め設定された第２の閾値未満である場合、ＣＰＵに割り当てられたメモリ空間がピンメモリのサイズに達するまで、ＣＰＵに割り当てられたメモリ空間は部分的に解放される。
【００６２】
この実施形態では、ＣＰＵに割り当てられるメモリ値の一定の割合に従ってメモリプールから追加のメモリ空間を適用する場合、同じチャネル内のＤＩＭＭスロットの対応するメモリ空間または同じメモリコントローラ内のＤＩＭＭスロットの対応するメモリ空間が、次に記述されるようにＣＰＵに割り当てられることに留意されたい。
【００６３】
（１）最初に、ＣＰＵのピンメモリに対応するＤＩＭＭスロットと同じメモリコントローラによって制御される同じチャネルに位置するメモリプール内にＤＩＭＭスロットが存在するかどうかを判定する。
【００６４】
ピンメモリに対応するＤＩＭＭスロットと同じメモリコントローラの下の同じチャネルに位置するメモリプール内にそのようなＤＩＭＭスロットが存在する場合、ＤＩＭＭスロットの対応するメモリ空間が、メモリ値の一定の割合に従ってＣＰＵに割り当てられる。
【００６５】
例えば、ＣＰＵのピンメモリに対応するＤＩＭＭスロットを有する同じメモリコントローラによって制御される同じチャネル内のＤＩＭＭスロットの対応するメモリ空間のメモリプールでは、対応するＤＩＭＭスロットのメモリ空間から適用されるメモリ空間のサイズは、動作中のＣＰＵによって使用されるメモリ値の２０％に相当する。これはＣＰＵに割り当てられる量である。
【００６６】
ピンメモリに対応するＤＩＭＭスロットと同じメモリコントローラの下の同じチャネルに位置するメモリプール内にＤＩＭＭスロットが存在しない場合、次のステップが開始され、ピンメモリに対応するＤＩＭＭスロットと同じメモリコントローラ内に配置されたメモリプール内にＤＩＭＭスロットが存在するかどうかが判定される。これは以下で説明される。
【００６７】
（２）ピンメモリに対応するＤＩＭＭスロットと同じメモリコントローラ内に位置するメモリプール内にＤＩＭＭスロットが存在するかどうかが判定される。ピンメモリに対応するＤＩＭＭスロットと同じメモリコントローラ内に位置するメモリプール内にＤＩＭＭスロットが存在する場合、ＤＩＭＭスロットの対応するメモリ空間は、メモリ値の一定の割合に従ってＣＰＵに割り当てられる。
【００６８】
例えば、メモリプールにおいて、ＣＰＵのピンメモリに対応するＤＩＭＭスロットを有する同じメモリコントローラ内のＤＩＭＭスロットの対応するメモリ空間では、対応するＤＩＭＭスロットのメモリ空間から適用されるメモリ空間のサイズは、動作中のＣＰＵによって使用されるメモリ値の２０％に相当し、ＣＰＵに割り当てられる。
【００６９】
ピンメモリに対応するＤＩＭＭスロットと同じメモリコントローラ内に位置するメモリプール内にＤＩＭＭスロットが存在しない場合、共有メモリプール内のメモリ空間は、メモリ値の一定の割合に従ってＣＰＵに割り当てられる。
【００７０】
例えば、共有メモリプールから適用されるメモリ空間は、ＣＰＵに割り当てられる動作中のＣＰＵによって使用されるメモリ値の２０％のサイズに相当する。
【００７１】
共有メモリプールからのＣＰＵへの割り当てのためのメモリ空間の上述のアプリケーションを実行する他の実行可能な実施形態が存在する。これについては本明細書では詳細に説明しない。
【００７２】
同様に、メモリ値の一定の割合に従ってメモリプールからメモリ空間を解放または再割り当てするステップは、上述の方法に対応する他の方法で実施することができる。
【００７３】
例えば、ＣＰＵのピンメモリに対応するＤＩＭＭスロットを有する同じメモリコントローラ内のＤＩＭＭスロットの対応するメモリ空間では、解放されるメモリ空間のサイズは、動作中のＣＰＵによって使用されるメモリ値の２０％に相当することになる。
【００７４】
メモリ空間の解放または再割り当てを実行する他の実行可能な方法が存在するが、これについては本明細書では詳細に説明しない。
【００７５】
ステップＳ１０３、Ｓ１０４及びＳ１０５は、周期的な判定プロセスであることに留意されたい。「ｎ」個のＣＰＵの動作中にそれぞれのＣＰＵによって使用されるメモリ値は、ステップＳ１０３において取得される。「ｎ」個のＣＰＵの動作中にそれぞれのＣＰＵが使用するメモリ値が、予め設定された閾値範囲を超えているかどうかが、ステップＳ１０４で判定される。ステップＳＩ０４の結果に基づいて、ステップＳＩ０５において、ＣＰＵに割り当てられる共有メモリプールから追加のメモリ空間が選択されるか、またはＣＰＵに割り当てられたメモリ空間が再割り当てされるかもしくは解放される。
【００７６】
ステップＳ１０３、Ｓ１０４及びＳ１０５の周期的な判定プロセスは、処理中のＣＰＵが使用するメモリ値のリアルタイム監視を実行する。監視結果に基づき、特定のメモリ空間がＣＰＵに割り当てられるか、またはＣＰＵの特定のメモリ空間が解放され、その結果、メモリが適切な方法で利用され、サーバーシステムの機能が強化される。
【００７７】
さらに、ステップＳ１０３及びＳ１０４に対応して、取得した、「ｎ」個のＣＰＵの動作中にそれぞれのＣＰＵによって使用されるメモリ値に基づき、「ｎ」個のＣＰＵの動作中に少なくとも１つのＣＰＵによって使用されるすべてのメモリ値を合計して、動作中の少なくとも１つのＣＰＵによって使用される全体的なメモリ値を取得する。次に、動作中の少なくとも１つのＣＰＵによって使用される全体的なメモリ値が、予め設定された閾値範囲を超えるかどうかが判定される。判定の結果に基づき、少なくとも１つのＣＰＵ内のそれぞれのＣＰＵに割り当てられた共有メモリプールから追加のメモリ空間が選択されるか、またはメモリ空間が再割り当てされるかもしくは解放される。
【００７８】
少なくとも１つのＣＰＵ内のそれぞれのＣＰＵに割り当てるために共有メモリプールから追加のメモリ空間を適用するステップについて、さらに次に説明する。
【００７９】
（１）まず、少なくとも１つのＣＰＵのそれぞれのＣＰＵのピンメモリに対応するそれぞれのＤＩＭＭスロットと同じチャネルに位置する共有メモリプールにＤＩＭＭスロットが存在するかどうかを順番に判定する。
【００８０】
少なくとも１つのＣＰＵ内のそれぞれのＣＰＵのピンメモリに対応するそれぞれのＤＩＭＭスロットと同じチャネルに位置する共有メモリプール内にそのようなＤＩＭＭスロットが存在する場合、ＤＩＭＭスロットの対応するメモリ空間は、次いで、メモリ値の一定の割合に従ってＣＰＵに割り当てられる。
【００８１】
それぞれのＣＰＵのピンメモリに対応するＤＩＭＭスロットと同じチャネルに位置する共有メモリプール内にＤＩＭＭスロットが存在しない場合、次のステップが開始されて、少なくとも１つのＣＰＵのそれぞれのＣＰＵのピンメモリに対応するＤＩＭＭスロットと同じメモリコントローラ内に位置する共有メモリプール内にＤＩＭＭスロットが存在するかどうかが判定される。
【００８２】
（２）ＣＰＵセットのそれぞれのＣＰＵのピンメモリに対応するＤＩＭＭスロットと同じメモリコントローラ内に位置する共有メモリプールにＤＩＭＭスロットが存在するかどうかを判定する。
【００８３】
ＣＰＵセットのそれぞれのＣＰＵのピンメモリに対応するＤＩＭＭスロットと同じメモリコントローラ内に位置する共有メモリプール内にＤＩＭＭスロットが存在する場合、ＤＩＭＭスロットの対応するメモリ空間が、メモリ値の一定割合に従ってＣＰＵに割り当てられる。
【００８４】
このようなＤＩＭＭスロットが、少なくとも１つのＣＰＵ内のそれぞれのＣＰＵのピンメモリに対応するＤＩＭＭスロットと同じのメモリコントローラ内に位置する共有メモリプール内に存在しない場合、共有メモリプール内のメモリ空間は、メモリ値の一定の割合に従ってＣＰＵに割り当てられる。
【００８５】
上述の判定プロセスは、少なくとも１つのＣＰＵのそれぞれからメモリが割り当てられるまで繰り返される。また、上記プロセスに限定されず、他の実施形態も実施可能である。
【００８６】
図１Ｂは、本開示の別の実施形態に基づくメモリ管理方法のフロー図を示す。ステップＳ１１０では、少なくとも１つのメモリをプールしてメモリプールを生成する。ステップＳ１３０では、メモリプールを分割して少なくとも１つのメモリ空間を生成する。ステップＳ１４０では、それぞれのメモリ空間を複数のＣＰＵにそれぞれ１対１の対応方式で割り当てる。ステップＳ１４１において、１対１に割り当てられたそれぞれのメモリ空間が、それぞれのＣＰＵのピンメモリとしてそれぞれのＣＰＵに割り当てられる。ステップＳ１４２では、割り当てられていないメモリ空間をメモリプールの共有メモリプールとして設定する。すなわち、割り当てられていないメモリ空間は、メモリプール内に依然として割り当てられていないメモリ空間を備える。
【００８７】
ステップＳ１５０では、動作中のそれぞれのＣＰＵによるそれぞれのメモリ空間の使用量を表すメモリ値が取得される。ステップＳ１６０では、ステップＳ１５０で取得したメモリ値が、予め設定した閾値範囲を超えているかどうかを判定する。動作中のＣＰＵによって使用されるメモリ値が、予め設定された第１の閾値を超える場合、ステップＳ１７１が開始され、メモリ値の一定の割合に従って共有メモリプールから追加メモリ空間を適用し、追加メモリ空間を対応するＣＰＵに割り当てる。動作中のＣＰＵが使用するメモリ値が、予め設定された第２の閾値未満である場合、ステップＳ１７２において、ＣＰＵに割り当てられたメモリ空間は、メモリ値の一定の割合に従って部分的に解放される。
【００８８】
図２において、以下の部を含むメモリ管理のデバイス２００の開示の別の実施形態が示されている。
【００８９】
少なくとも１つのメモリをプールしてメモリプールを生成するように構成されたメモリプール部２１０である。
【００９０】
メモリデバイダ２２０は、メモリプールを分割して少なくとも１つのメモリ空間を生成し、それぞれのメモリ空間をそれぞれのＣＰＵに１対１の対応方式で割り当てる。それぞれのＣＰＵに割り当てられたそれぞれのメモリ空間は、それぞれのＣＰＵのピンメモリとして設定される。割り当てられていないメモリ空間は、メモリプールの共有メモリプールとして設定される。すなわち、割り当てられていないメモリ空間は、メモリプール内に依然として割り当てられていないメモリ空間、またはピンメモリではないメモリ空間を備える。
【００９１】
メモリ値取得部２３０は、動作中のそれぞれのＣＰＵによる各メモリ空間の使用量を示すメモリ値を取得する。メモリ値判定部２４０は、メモリ値が予め設定された閾値範囲を超えているかどうか、及びメモリ値が予め設定された閾値範囲を超える場合にメモリマネージャ２５０を開始するかどうかを判定する。
【００９２】
メモリマネージャ２５０は、共有メモリプールから追加のメモリ空間を選択してＣＰＵに割り当て、かつ／または閾値を超過する場合にＣＰＵに割り当てられたメモリ空間を解放もしくは再割り当てするように構成される。
【００９３】
代替として、メモリデバイダ２２０は、メモリコントローラのセットを選択するように構成されたメモリコントローラ選択サブモジュールを備え、メモリコントローラの数は、ＣＰＵのセットの数に等しい。また、これは、ＣＰＵのＱＰＩポートアドレスをメモリコントローラのポートアドレスと１対１の対応方式で一致させ、かつメモリコントローラの下の少なくとも１つのチャンネル内の少なくとも１つのＤＩＭＭスロットの対応するメモリ空間をＣＰＵに割り当てるように構成されたアロケータサブモジュールをさらに備える。対応するメモリはＣＰＵのピンメモリとして設定され、ＤＩＭＭスロットの対応するメモリアドレスは固定アドレスである。
【００９４】
代替として、デバイス２００は、ＣＰＵセットのノードとしてＣＰＵのセット内のそれぞれのＣＰＵを設定し、かつＣＰＵセットのすべてのノードを接続してＣＰＵプールを生成するように構成されたＣＰＵプール部も備える。
【００９５】
典型的な構成では、コンピューティングデバイスは、１つまたは複数のＣＰＵ、入力／出力ポート、インターネットポート、及びメモリを備える。
【００９６】
本開示によれば、コンピュータ可読媒体は、変調データ信号及びキャリアなどの一時的な媒体を含まない。開示されるコンピュータ可読媒体には、相変化メモリ（ＰＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、他のタイプのランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、電気的消去可能プログラマブル読み出し専用メモリ（ＥＥＰＲＯＭ）、フラッシュＲＡＭ及び他のメモリ技術、コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、デジタルビデオディスク（ＤＶＤ）及び他の光学記憶装置、磁気テープ、磁気ディスク、他の磁気記憶装置、並びに任意の他の非移行媒体が含まれるが、これらに限定されない。
【００９７】
当業者であれば、本開示が、コンピュータのための方法、システム、及び／または命令として実施され得ることを理解するであろう。本開示は、ハードウェア、ソフトウェア、及び／またはハードウェアとソフトウェアとの組み合わせとして実装できることが意図されている。本開示は、コンピュータプログラム命令を含む１つまたは複数の記憶媒体を利用するコンピュータプログラム製品として実装されてもよい。記憶媒体は、相変化メモリ（ＰＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、他のタイプのランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、電気的消去可能プログラマブル読み出し専用メモリ（ＥＥＰＲＯＭ）、フラッシュＲＡＭ及び他のメモリ技術、コンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、デジタルビデオディスク（ＤＶＤ）及び他の光学記憶装置、磁気テープ、磁気ディスク、他の磁気記憶装置、並びに任意の他の記憶装置を含むが、これらに限定されない。
【００９８】
特定の実施形態及び方法が本明細書に開示されているが、本開示の趣旨及び範囲から逸脱することなく、そのような実施形態及び方法の変形及び修正を行うことができることは、上記の開示から当業者に明らかであろう。本開示は添付の特許請求の範囲及び適用法の規則及び原則によって定義されることが意図される。
【図１Ａ】
2017535888.tif 000004
【図１Ｂ】
2017535888.tif 000005
【図２】
2017535888.tif 000006
【国際調査報告】
2017535888.tif 000007