(57)【要約】【課題】コンピュータシステムの利用者が、障害を発生させたい特定の部分に容易に障害を発生させる。【解決手段】コンピュータシステムは、ＣＰＵコア、および、メモリ障害を検出するメモリコントローラを含むプロセッサと、揮発性メモリ素子を含み前記メモリコントローラ配下である揮発性メモリ部と、障害指定情報で示された前記揮発性メモリ素子の特定部分を含む前記メモリコントローラ配下の領域のすべてに“０”を書き込むか、または、前記障害指定情報で示されたプロセスにより使用される物理ページを含む前記メモリコントローラ配下の領域に一部を残してすべてに、“０”を書き込み、前記メモリコントローラにリフレッシュ間隔を長い値に変更、または、停止させる障害投入プログラムと、を含む。【選択図】      図１
2016162183.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵコア、および、メモリ障害を検出するメモリコントローラを含むプロセッサと、
揮発性メモリ素子を含み前記メモリコントローラ配下である揮発性メモリ部と、
障害指定情報で示された前記揮発性メモリ素子の特定部分を含む前記メモリコントローラ配下の領域のすべてに“０”を書き込むか、または、前記障害指定情報で示されたプロセスにより使用される物理ページを含む前記メモリコントローラ配下の領域に一部を残してすべてに、“０”を書き込み、
前記メモリコントローラにリフレッシュ間隔を長い値に変更、または、停止させる障害投入プログラムと、
を含むことを特徴とするコンピュータシステム。
【請求項２】
前記特定部分が１ビット、または、２ビットであり、
前記障害投入プログラムは、前記メモリコントローラ配下の領域にすべて、“０”を書き込んだ後に、前記特定部分に“１”を書き込み、その後、前記メモリコントローラにリフレッシュ間隔を長い値に変更、または、停止させ、その後、前記特定部分を読み出すことを特徴とする請求項１のコンピュータシステム。
【請求項３】
前記揮発性メモリ部は、ＤＩＭＭであり、
前記揮発性メモリ素子は、ＤＲＡＭであることを特徴とする請求項２のコンピュータシステム。
【請求項４】
前記障害指定情報は、特定の前記ＤＲＡＭのビット位置を示し、
前記障害投入プログラムは、前記ＤＲＡＭのビット位置から物理アドレスを生成し、前記物理アドレスに対応する仮想アドレスを獲得し、前記仮想アドレスを使用して書き込み、読み出しを行うことを特徴とする請求項３のコンピュータシステム。
【請求項５】
前記障害指定情報は、障害を発生させる特定のプロセスを示す情報であり、
前記障害投入プログラムは、前記プロセスにより使用されている物理ページから事前に設定されたアルゴリズムにしたがい１つの物理ページを選択し、前記選択した物理ページ以外の前記メモリコントローラ配下の領域をオフラインにし、前記選択した物理ページ以外の前記メモリコントローラ配下の領域に、すべて、“０”を書き込むことを特徴とする請求項１のコンピュータシステム。
【請求項６】
前記アルゴリズムは、値が“１”であるビットの総数が最小である（ただし、すべて“０”のページは除く）物理ページを選択する、または、値が“１”であるビットの総数が最大である物理ページを選択するものであることを特徴とする請求項５記載のコンピュータシステム。
【請求項７】
ＣＰＵコア、および、メモリ障害を検出するメモリコントローラを含むプロセッサと、
揮発性メモリ素子を含み前記メモリコントローラ配下である揮発性メモリ部と、
を含み、
障害投入プログラムは、
障害指定情報で示された前記揮発性メモリ素子の特定部分を含む前記メモリコントローラ配下の領域のすべてに“０”を書き込むか、または、前記障害指定情報で示されたプロセスにより使用される物理ページを含む前記メモリコントローラ配下の領域に一部を残してすべてに、“０”を書き込み、前記メモリコントローラにリフレッシュ間隔を長い値に変更、または、停止させることを特徴とするメモリ障害投入方法。
【請求項８】
前記特定部分が１ビット、または、２ビットであり、
前記障害投入プログラムは、前記メモリコントローラ配下の領域にすべて、“０”を書き込んだ後に、前記特定部分に“１”を書き込み、その後、前記メモリコントローラにリフレッシュ間隔を長い値に変更、または、停止させ、その後、前記特定部分を読み出すことを特徴とする請求項７のメモリ障害投入方法。
【請求項９】
ＣＰＵコア、および、メモリ障害を検出するメモリコントローラを含むプロセッサと、
揮発性メモリ素子を含み前記メモリコントローラ配下である揮発性メモリ部と、
を含むコンピュータシステムのコンピュータに、
障害指定情報で示された前記揮発性メモリ素子の特定部分を含む前記メモリコントローラ配下の領域のすべてに“０”を書き込むか、または、前記障害指定情報で示されたプロセスにより使用される物理ページを含む前記メモリコントローラ配下の領域に一部を残してすべてに、“０”を書き込み、前記メモリコントローラにリフレッシュ間隔を長い値に変更、または、停止させる処理を実行させることを特徴とする障害投入プログラム。
【請求項１０】
前記特定部分が１ビット、または、２ビットであり、
前記コンピュータに、
前記メモリコントローラ配下の領域にすべて、“０”を書き込んだ後に、前記特定部分に“１”を書き込み、その後、前記メモリコントローラにリフレッシュ間隔を長い値に変更、または、停止させ、その後、前記特定部分を読み出す処理を実行させることを特徴とする請求項９のメモリ障害投入プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステム、メモリ障害投入方法、および、メモリ障害投入プログラムに関する。
【背景技術】
【０００２】
メモリの試験に関する技術の一例が、特許文献１に記載されている。この技術は、メモリセルの試験に際し、最初の電荷の充電以外の電荷の充電をメモリリフレッシュ処理で行い、期待値との比較を、複数のホールド処理をすべて行った後、１回のみ行うものである。これにより、この技術は、試験時間を短縮している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１６５２３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１記載の技術には、障害を発生させたい特定の部分に容易に障害を発生させることができないという問題がある。
【０００５】
本発明の目的は、上記問題点を解決するコンピュータシステム、メモリ障害投入方法、および、メモリ障害投入プログラムを提供することである。
【課題を解決するための手段】
【０００６】
本発明のコンピュータシステムは、
ＣＰＵコア、および、メモリ障害を検出するメモリコントローラを含むプロセッサと、揮発性メモリ素子を含み前記メモリコントローラ配下である揮発性メモリ部と、障害指定情報で示された前記揮発性メモリ素子の特定部分を含む前記メモリコントローラ配下の領域のすべてに“０”を書き込むか、または、前記障害指定情報で示されたプロセスにより使用される物理ページを含む前記メモリコントローラ配下の領域に一部を残してすべてに、“０”を書き込み、前記メモリコントローラにリフレッシュ間隔を長い値に変更、または、停止させる障害投入プログラムと、を含む。
【０００７】
本発明のメモリ障害投入方法は、
ＣＰＵコア、および、メモリ障害を検出するメモリコントローラを含むプロセッサと、揮発性メモリ素子を含み前記メモリコントローラ配下である揮発性メモリ部と、を含み障害投入プログラムは、障害指定情報で示された前記揮発性メモリ素子の特定部分を含む前記メモリコントローラ配下の領域のすべてに“０”を書き込むか、または、前記障害指定情報で示されたプロセスにより使用される物理ページを含む前記メモリコントローラ配下の領域に一部を残してすべてに、“０”を書き込み、前記メモリコントローラにリフレッシュ間隔を長い値に変更、または、停止させる。
【０００８】
本発明の障害投入プログラムは、
ＣＰＵコア、および、メモリ障害を検出するメモリコントローラを含むプロセッサと、揮発性メモリ素子を含み前記メモリコントローラ配下である揮発性メモリ部と、を含むコンピュータシステムのコンピュータに、障害指定情報で示された前記揮発性メモリ素子の特定部分を含む前記メモリコントローラ配下の領域のすべてに“０”を書き込むか、または、前記障害指定情報で示されたプロセスにより使用される物理ページを含む前記メモリコントローラ配下の領域に一部を残してすべてに、“０”を書き込み、前記メモリコントローラにリフレッシュ間隔を長い値に変更、または、停止させる処理を実行させる。
【発明の効果】
【０００９】
本発明は、コンピュータシステムの利用者が、障害を発生させたい特定の部分に容易に障害を発生させることができるという効果を持つ。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１の実施の形態の構成を示すブロック図である。
【図２】本発明の第１の実施の形態の動作を示す動作説明図である。
【図３】本発明の第２の実施の形態の構成を示すブロック図である。
【図４】障害投入プログラムの構成を示すブロック図である。
【図５】ＤＩＭＭの構成の一例を示すブロック図である。
【図６】本発明の第２の実施の形態の動作を示す動作説明図である。
【図７】物理アドレス空間を示す説明図である。
【図８】本発明の第３の実施の形態の構成の一部を示すブロック図である。
【図９】プロセスに関する物理アドレス空間を示す説明図である。
【図１０】本発明の第３の実施の形態の動作を示す動作説明図である。
【発明を実施するための形態】
【００１１】
次に、本発明の第１の実施の形態について図面を参照して詳細に説明する。
【００１２】
図１は、第１の実施の形態の構成を示すブロック図である。図１を参照すると、コンピュータシステム１００は、プロセッサ２００（複数可）、揮発性メモリ部５００、および、揮発性メモリ部５０１を含む。揮発性メモリ部５００、５０１の総数は、１以上であればよい。
【００１３】
プロセッサ２００は、ＣＰＵコア３００（コンピュータであるCentral Processing Unit；複数可）、メモリコントローラ４００、および、メモリコントローラ４０１を含む。メモリコントローラ４００、４０１の総数は、１以上であればよい。
【００１４】
メモリコントローラ４００には、揮発性メモリ部５００、および、揮発性メモリ部５０１が接続される。メモリコントローラ４００は、揮発性メモリ部５００、５０１に対しリフレッシュを行う。また、揮発性メモリ部５００は、揮発性メモリ素子６００、揮発性メモリ素子６０１、…、揮発性メモリ素子６０ｎを含む。ｎは、任意の整数を示す。メモリコントローラ４０１にも他の揮発性メモリ部が接続されるが、図示していない。
【００１５】
障害投入プログラム８００は、たとえば、図示しない不揮発性記憶装置に格納される。プロセッサ２００のＣＰＵコア３００は、メモリコントローラ４００を介し、揮発性メモリ部５００をアクセスする。書き込みのアクセスに関して、メモリコントローラ４００は、データにＥＣＣ等を付加する。また、読み出しのアクセスに関して、メモリコントローラ４００は、データ、および、ＥＣＣ（Error Correcting Code）等のチェックを行う。
【００１６】
障害投入プログラム８００は、不揮発性記憶装置から揮発性メモリ部５００等にロードされ、ＣＰＵコア３００により実行される。障害投入プログラム８００は、オペレーティングシステム上で動作するアプリケーションプログラムの１種であってよい。また、ＣＰＵコア３００が、障害投入プログラム８００を揮発性メモリ部５００にロードせずに実行する構成も可能である。
【００１７】
次に、第１の実施の形態の動作について図面を参照して説明する。
【００１８】
図２は、第１の実施の形態の動作を示す動作説明図である。揮発性メモリ部５００の揮発性メモリ素子６００の特定部分に障害が生成される場合について説明する。
【００１９】
図２を参照すると、障害投入プログラム８００は、オペレータ等から揮発性メモリ素子６００の特定部分（ビット位置等）を示す障害指定位置情報、あるいは、プロセスを示す障害指定プロセス情報を受け取る（ステップＳ１）。なお、障害指定位置情報、および、障害指定プロセス情報を総称して、障害指定情報と呼ぶ。
【００２０】
次に、障害投入プログラム８００は、揮発性メモリ素子６００の特定部分（あるいは、プロセスが使用する特定物理ページ）に対応する物理アドレスを生成する（ステップＳ２）。次に、障害投入プログラム８００は、生成した物理アドレスに対応する仮想アドレスを生成する（ステップＳ３）。
【００２１】
次に、障害指定情報が、障害指定位置情報の場合（ステップＳ４／Ｙ）、障害投入プログラム８００は、生成した仮想アドレスを使用し、メモリコントローラ４００配下の領域（揮発性メモリ部５００、５０１）に、すべて“０”を書き込む（ステップＳ５）。
【００２２】
次に、障害投入プログラム８００は、生成した仮想アドレスを使用し、揮発性メモリ素子６００の前記特定部分である１ビット（または、複数ビット）に“１”を書き込む（ステップＳ６）。ここで、１［ビット］の値を“１”とした場合は、後の処理を実行することで、揮発性メモリ素子６００にシングルビット障害を発生させることができ、２［ビット］の値を“１”とした場合は、マルチビット障害を発生することができる。
【００２３】
次に、障害投入プログラム８００は、メモリコントローラ４００に、リフレッシュ間隔を通常より長い値に変更（あるいは、停止）させる（ステップＳ７）。
【００２４】
障害指定情報が、障害指定プロセス情報の場合（ステップＳ４／Ｎ）、障害投入プログラム８００は、プロセスにより使用される物理ページから特定物理ページを選択（＝決定）する（ステップＳ８）。そして、障害投入プログラム８００は、その特定物理ページを配下に持つメモリコントローラ４００の配下の領域（すなわち、揮発性メモリ部５００、５０１）の特定物理ページ以外に、すべて“０”を書き込み（ステップＳ９）、ステップＳ７の処理に進む。
【００２５】
以上から、リフレッシュ間隔の変更（あるいは、停止）により、特定部分、または、特定物理ページのビットの値が“１”から“０”に変化し、メモリコントローラ４００によりメモリ障害が検出される。
【００２６】
また、第１の実施の形態は、障害指定情報、すなわち、障害指定位置情報、または、障害指定プロセス情報のどちらか１種のみを使用して、メモリを検証する構成が可能である。
【００２７】
次に、第１の実施の形態の効果について説明する。
【００２８】
第１の実施の形態の第１の効果は、コンピュータシステム１００の利用者（オペレータ）が障害を発生させたい部分のメモリ障害の試験を容易に実施できることである。
【００２９】
その理由は、利用者（オペレータ）、第１の実施の形態のオペレーティングシステム上の障害投入プログラム８００に、障害を発生させたい部分を示す情報（障害指定情報）を入力するだけで、メモリ障害を生成することができるからである。
【００３０】
第１の実施の形態の第２の効果は、メモリコントローラ４００と揮発性メモリ部５００、５０１との間の信号線上の信号の動作周波数が高くなっても、安定してメモリ障害の試験を実施できることである。
【００３１】
その理由は、メモリコントローラ４００と揮発性メモリ部５００、５０１との間の信号線にプローブを接続する、または、障害発生月の専用のハードウェアを接続するなどせずに、障害を生成するからである。
【００３２】
第１の実施の形態の第３の効果は、特別なハードウェアを追加することなくメモリ障害の試験を実施できることである。
【００３３】
その理由は、第１の実施の形態が、ハードウェア的には、元々の機能であるメモリコントローラ４００のリフレッシュ間隔の延長（または、停止）により、メモリの障害を生成するからである。
【００３４】
第１の実施の形態の第４の効果は、実際に発生するメモリの障害と同じ挙動を示すメモリの障害を生成することができることである。
【００３５】
その理由は、第１の実施の形態が、揮発性メモリ部５００の揮発性メモリ素子６００から読み出したデータを不正な値に変更するのではなく、実際に揮発性メモリ素子６００のデータを不正な値に変更して障害を発生させているからである。
【００３６】
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。
【００３７】
図３は、第２の実施の形態の構成を示すブロック図である。図３を参照すると、第２の実施の形態は、第１の実施の形態の一例である。コンピュータシステム１００は、プロセッサ２００、ＤＩＭＭ５１０、ＤＩＭＭ５１１、および、不揮発性記憶装置７００を含む。Dual Inline Memory ModuleであるＤＩＭＭ５１０、５１１は、それぞれ、揮発性メモリ部５００、５０１の一例である。
【００３８】
ＤＩＭＭ５１０は、ＤＲＡＭ６１０、ＤＲＡＭ６１１、…、ＤＲＡＭ６１ｎを含む。ＤＲＡＭ６１０、ＤＲＡＭ６１１、…、ＤＲＡＭ６１ｎは、Dynamic Random Access Memoryであり、それぞれ、揮発性メモリ素子６００、揮発性メモリ素子６０１、…、揮発性メモリ素子６０ｎの一例である。
【００３９】
プロセッサ２００は、ＣＰＵコア３００、ＣＰＵコア３０１、メモリコントローラ４００、メモリコントローラ４０１、および、結合網９００を含む。結合網９００には、ＣＰＵコア３００、３０１、メモリコントローラ４００、４０１、不揮発性記憶装置７００、および、図示しない他のプロセッサが接続される。
【００４０】
不揮発性記憶装置７００には、障害投入プログラム８００、および、ＯＳ７１０（オペレーティングシステム；Operating System）等が格納される。障害投入プログラム８００は、ＯＳ７１０上で動作する。ＣＰＵコア３００は、アドレスデコーダ３１０を含む（ＣＰＵコア３０１については、図示を省略する）。
【００４１】
メモリコントローラ４００、４０１は、それぞれ、アドレスデコーダ４１０、アドレスデコーダ４１１を含む。アドレスデコーダ３１０、４１０、４１１は、受け取ったアドレス値を事前に設定された変換規則（たとえば、変換表）にしたがい、別のアドレスの値に変換する。
【００４２】
通常、ＣＰＵコア３００で実行されているプログラムコードが、たとえば、ＤＩＭＭ５１０内のＤＲＡＭ６１０上のデータヘアクセスする場合について説明する。まず、ＣＰＵコア３００が仮想アドレスを物理アドレスに変換する。
【００４３】
そして、ＣＰＵコア３００のアドレスデコーダ３１０が、この物理アドレスを結合網９００におけるアドレス（結合網アドレスと呼ぶ）に変換する。ここで、結合網アドレスには、アクセス対象がどのメモリコントロ−ラ配下のＤＩＭＭであるかを示す情報が含まれる。ここでは、メモリコントローラ４００の配下であることを示す情報、および、ＤＲＡＭ６１０を示す情報が含まれる。
【００４４】
たとえば、物理アドレスが、［０ｘ２＿１３００＿０００４］であると、アドレスデコーダ３１０は、この上位部分［０ｘ２］を、メモリコントローラ４００を示すメモリコントローラアドレスに変換する。そして、アドレスデコーダ３１０は、残りの［０ｘ１３００＿０００４］を、ＤＩＭＭ５１０を示すオフセットとする。
【００４５】
結合網９００は、結合網アドレスを受け取ると、メモリコントローラアドレスにしたがって、オフセット［０ｘ１３００＿０００４］を含む要求をメモリコントローラ４００に出力する。メモリコントローラ４００は、結合網９００から要求を受け取ると、オフセットにしたがって、配下のＤＩＭＭ５１０のＤＲＡＭ６１０を含む領域にアクセスする。
【００４６】
たとえば、メモリコントローラ４００は、上位部分［０ｘ１］を、ＤＩＭＭ５１０を示すと判断し、残りの［０ｘ３００＿０００４］を、ＤＲＡＭ６１０を含む領域を示すオフセットと判断する。
【００４７】
図４は、障害投入プログラム８００の構成を示すブロック図である。図４を参照すると、障害投入プログラム８００は、メモリ確保処理部８１０、アドレス特定処理部８２０、メモリアクセス処理部８３０、および、リフレッシュ間隔変更処理部８４０を含む。
【００４８】
メモリ確保処理部８１０は、物理アドレスの特定の範囲が、ＯＳ７１０や他のアプリケーションプログラムから利用されないように、ＯＳ７１０に対して設定を行う処理を行う。
【００４９】
アドレス特定処理部８２０は、任意のＤＩＭＭ５１０、…上の任意のＤＲＡＭ６１０、…が指定されると、アドレスデコーダ３１０、…、アドレスデコーダ４１０、…の変換規則から、指定されたＤＲＡＭ６１０、…に対応する物理アドレスを算出する。この算出は、たとえば、アドレスデコーダ３１０、…、アドレスデコーダ４１０、…の変換規則の逆変換をプログラムコードで行うことで実現可能である。
【００５０】
メモリアクセス処理部８３０は、任意の物理アドレスに対して任意のデータの書き込みと、任意の物理アドレスからのデータの読み出しを行う処理を行う。ＯＳ７１０上で動作するアプリケーションプログラムは、通常、ＯＳ７１０の仮想アドレス空間で動作するため、メモリアクセス処理部８３０は、ＯＳ７１０に対し、任意の物理アドレスを仮想アドレスにマッピングさせるための指示の処理も行う。
【００５１】
リフレッシュ間隔変更処理部８４０は、メモリコントローラ４００、…の設定を変更することで、メモリコントローラ４００、…のＤＲＡＭ６１０、…に対するリフレッシュ間隔を変更する処理を行う。
【００５２】
次に、本発明の第２の実施の形態の動作について図面を参照して説明する。
【００５３】
図５は、ＤＩＭＭ５１０の構成の一例を示すブロック図である。図７は、物理アドレス空間を示す説明図である。
図５を参照すると、ＤＩＭＭ５１０は、ＤＲＡＭ６１０、ＤＲＡＭ６１１、…、ＤＲＡＭ６１７を含む。ＤＲＡＭ６１０、…は、８［ビット］×１［キロビット］である。
【００５４】
ＤＲＡＭ６１０のエントリ４のビット１にメモリ障害を発生させる場合について説明する。図６は、第２の実施の形態の動作を示す動作説明図である。
【００５５】
図６を参照すると、障害投入プログラム８００のアドレス特定処理部８２０は、オペレータ等からＤＲＡＭ６１０の特定ビットを示す障害指定位置情報（ＤＲＡＭ６１０のエントリ４、および、そのビット１を示す）を受け取る（ステップＳ１１）。そして、アドレス特定処理部８２０は、上述の逆変換により特定ビットを含む特定部分に対応する物理アドレスを生成する（ステップＳ１２）。
【００５６】
たとえば、アドレス特定処理部８２０は、ＤＲＡＭ６１０のエントリ４のビットから、ＤＩＭＭ５１０であることを示すオフセット［０ｘ１３００＿０００４］を生成する。次に、アドレス特定処理部８２０は、ＤＩＭＭ５１０に接続されるメモリコントローラ４００を示す物理アドレス［０ｘ２＿１３００＿０００４］を生成する（ステップＳ１３）。
【００５７】
次に、メモリ確保処理部８１０は、メモリコントローラ４００に対応する物理アドレス空間全体をＯＳ７１０、および、他のプログラムから利用されないようにＯＳ７１０に対して設定を行う（ステップＳ１４）。
【００５８】
次に、メモリアクセス処理部８３０は、ＯＳ７１０に、物理アドレス［０ｘ２＿１３００＿０００４］を渡し、それに対応する仮想アドレス（たとえば、［０ｘ５０＿５５５５＿０００４］）を戻り値として獲得する（ステップＳ１５）。すなわち、メモリアクセス処理部８３０は、マッピングをＯＳ７１０に指示し、結果を受け取る。たとえば、この処理には、ｍｍａｐ関数等が利用可能である。
【００５９】
この場合、ＯＳ７１０は、仮想アドレス［０ｘ５０＿５５５５＿０００４］を、物理アドレス［０ｘ２＿１３００＿０００４］にマッピング（たとえば、ページ単位）し、記憶する。
【００６０】
次に、メモリアクセス処理部８３０は、メモリコントローラ４００に対応する（配下である）物理アドレス空間全体に“０”を書きこむ（図７のＬ１）（ステップＳ１６）。この時、メモリアクセス処理部８３０は、受け取った仮想アドレス［０ｘ５０＿５５５５＿０００４］を含むメモリコントローラ４００に対応する領域に、仮想アドレスでアクセスする。
【００６１】
次に、メモリアクセス処理部８３０は、ＤＩＭＭ５１０に対応する物理アドレス空間（図７のＬ２）内の障害指定位置情報で指定されたビットを含む領域に対して、データを書き込む（ステップＳ１７）。この領域は、具合的には、ＤＲＡＭ６１０のエントリ４、ビット１を含む６４［ビット］（図７のＬ３）である。
【００６２】
また、このデータは、ビット１の値が“１”であり、他のビットは、“０”である。この時、メモリアクセス処理部８３０は、受け取った仮想アドレス［０ｘ５０＿５５５５＿０００４］を使用する。
【００６３】
次に、リフレッシュ間隔変更処理部８４０は、メモリコントローラ４００のＤＲＡＭリフレッシュ間隔を通常より十分に長い値に変更する（あるいは、ＤＲＡＭリフレッシュを停止する）（ステップＳ１８）。すなわち、リフレッシュ間隔変更処理部８４０は、資源としてのメモリコントローラ４００にアクセスし、設定値を変更する。
【００６４】
次に、メモリアクセス処理部８３０は、Ｌ３の領域を定期的に読み出す（ステップＳ１９）。ＤＲＡＭリフレッシュ間隔の変更により、一定時間が経過すると、メモリコントローラ４００配下のＤＩＭＭ５１０、…のＤＲＡＭ６１０、…の電荷が閾値未満まで失われ、値“１”は、値“０”に変化する（すなわち、障害が発生する）。
【００６５】
そして、プロセッサ２００のメモリコントローラ４００は、ＥＣＣにより、ＤＲＡＭ６１０の１ビット障害を検出する（ステップＳ２０）。
【００６６】
第２の実施の形態において、たとえば、Ｌｉｎｕｘ（登録商標）のコーディングの一例（概念であり、正確なコーディングではない）を以下に示す。
【００６７】
物理アドレスを、phy_ddr=0x2_1300_0004とすると、
vir_addr=mmap(phy_ddr);により、仮想アドレスを受け取り、
*(uint64_t*)vir_addr=0x4000000000000000;によりデータを書き込み、
read_value=*(uint64_t*)vir_addr;によりデータを読み出す。
【００６８】
次に、第２の実施の形態の効果について説明する。
【００６９】
第２の実施の形態は、第１の実施の形態の一例なので、第１の実施の形態と同一の効果を持つ。
【００７０】
次に、本発明の第３の実施の形態について図面を参照して詳細に説明する。
【００７１】
第３の実施の形態は、第１の実施の形態であり、ハードウェア構成は、図３に示される第２の実施の形態の構成と同一である。図８は、第３の実施の形態の障害投入プログラム８００、および、ＯＳ７１０の構成を示すブロック図である。
【００７２】
図８を参照すると、第２の実施の形態の障害投入プログラム８００は、第２の実施の形態のメモリ確保処理部８１０を含まず、代わりに、障害投入ページ決定処理部８５０、および、ページオフライン要求処理部８６０を含む。ＯＳ７１０は、ページ管理処理部７２０、および、ページオフライン処理部７３０を含む。
【００７３】
さらに、アドレス特定処理部８２０は、第２の実施の形態における機能に加え、アドレスデコーダ３１０、アドレスデコーダ４１０、…における変換規則を含み、物理アドレスから対応するＤＩＭＭ５１０、…を特定する機能を持つ。
【００７４】
障害投入ページ決定処理部８５０は、ＯＳ７１０のページ管理処理部７２０からの対応情報（後述）を参照し、ＯＳ７１０上で動作する指定されたプロセスにより使用されているメモリ領域を特定する。そして、障害投入ページ決定処理部８５０は、事前に設定されたアルゴリズムにしたがい当該プロセスで使用されているどの物理アドレス（物理ページを示す）に、障害を発生させるかを決定する。
【００７５】
ページオフライン要求処理部８６０は、ＯＳ７１０のページオフライン処理部７３０を利用して、指定された物理アドレス範囲のページを全てページオフラインとする。
【００７６】
ページ管理処理部７２０は、ＯＳ７１０、および、ＯＳ７１０で動作するプロセスのそれぞれのコンテキストにおける仮想アドレスと物理アドレスとの対応情報をページ単位で保持する。この対応情報は、ＯＳ７１０上で動作するプログラムから参照することができる。
【００７７】
ページオフライン処理部７３０は、ＯＳ７１０、または、ＯＳ７１０上で動作するプログラムから指示された物理アドレスに対応する領域を、ページ単位で、ＯＳ７１０、および、ＯＳ７１０上で動作するプログラムによって使用されないようにする。ページを使用されないようにすることをページオフラインと呼ぶ。
【００７８】
指示された物理アドレスに対応するページがすでに利用されている場合、ページオフライン処理部７３０は、オフラインするページの内容を別のメモリ領域にコピーする。そして、ページオフライン処理部７３０は、オフラインするページの仮想アドレスに対応する物理アドレスをコピー先の物理アドレスに変更する。
【００７９】
ページオフライン処理部７３０の機能は、一般に、訂正可能障害が多発し故障が疑われるメモリ領域を、ページオフラインにして利用されないようにすることで、対象のメモリ領域で訂正不可能障害が発生し、システムがダウンするのを防ぐ目的で利用される。
【００８０】
次に、第３の実施の形態の動作について図面を参照して説明する。
【００８１】
第３の実施の形態においては、ＯＳ７１０上で動作している何れか１つのプロセスが選択され、そのプロセスが使用しているメモリ領域内でメモリ障害を発生させる。ＯＳ７１０上で２つのプロセスＡ、および、プロセスＢが動作しており、プロセスＡにより使用されているメモリ領域内でメモリ障害を発生させる場合について説明する。
【００８２】
図９は、プロセスＡ、および、プロセスＢに関する物理アドレス空間を示す説明図である。図９を参照すると、プロセスＡによって使用されるページＡ０、Ａ１、Ａ２、Ａ３、および、プロセスＢによって使用されるページＢ０、Ｂ１、Ｂ２が配置されている。
【００８３】
［ページオフライン前］には、メモリコントローラ４００配下のアドレス空間Ｍ１に、ページＡ０〜Ａ２、および、ページＢ０〜Ｂ１が配置されており、その他の空間に、ページＢ２、および、ページＡ３、Ａ４が配置されている。
【００８４】
図１０は、第３の実施の形態の動作を示す動作説明図である。図１０を参照すると、障害投入プログラム８００の障害投入ページ決定処理部８５０は、オペレータ等から障害を発生させるプロセスを示す障害指定プロセス情報（プロセスＡを示す）を受け取る（ステップＳ３１）。
【００８５】
障害指定プロセス情報は、第１の実施の形態の障害指定プロセス情報の一例である。そして、障害投入ページ決定処理部８５０は、ＯＳ７１０のページ管理処理部７２０からプロセスＡにより使用されているページ（物理ページ）の一覧（対応情報）を獲得する（ステップＳ３２）。
【００８６】
次に、メモリアクセス処理部８３０は、上述の一覧（対応情報）に含まれる物理ページの内容を読み出し、障害投入ページ決定処理部８５０に渡す（ステップＳ３３）。障害投入ページ決定処理部８５０は、事前に設定されたアルゴリズムにしたがい障害を発生させる物理ページ（障害を発生させるプロセスが使用している）を決定する（ステップＳ３４）。
【００８７】
例としては、値が“１”であるビットの総数が最小である（ただし、すべて“０”のページは除く）物理ページを選択するアルゴリズムがある（シングルビット障害を発生させる場合に適す）。また、別の例としては、値が“１”であるビットの総数が最大である物理ページを選択するアルゴリズムがある（マルチビット障害を発生させる場合に適す）。
【００８８】
以下、ページＡ１にシングルビット障害を発生させる場合について説明する。
【００８９】
次に、アドレス特定処理部８２０は、ページＡ１（物理ページ）に対応するＤＩＭＭ５１０を特定する（ステップＳ３５）。そして、アドレス特定処理部８２０は、ＤＩＭＭ５１０を配下とするメモリコントローラ４００を特定し、メモリコントローラ４００配下のアドレス空間Ｍ１の物理アドレスを生成する（ステップＳ３６）。
【００９０】
次に、ページオフライン要求処理部８６０は、ＯＳ７１０のページオフライン処理部７３０に、アドレス空間Ｍ１のページＡ１以外の領域をオフラインにする要求を出力する（ステップＳ３７）。
【００９１】
ページオフライン処理部７３０は、その要求を受け取ると、ページＡ０、Ａ２、Ｂ０、および、Ｂ１を他のアドレス空間に移動し、アドレス空間Ｍ１のページＡ１以外の領域をオフラインにする（ステップＳ３８）。図９の［ページオフライン後］に、ページの移動後の配置を示す。
【００９２】
次に、メモリアクセス処理部８３０は、ＯＳ７１０に、アドレス空間Ｍ１を示す物理アドレスを渡し、対応する仮想アドレスを受け取り、アドレス空間Ｍ１のページＡ１以外の領域に、すべて“０”を書き込む（ステップＳ３９）。
【００９３】
次に、リフレッシュ間隔変更処理部８４０は、メモリコントローラ４００のＤＲＡＭリフレッシュ間隔を通常より十分に長い値に変更する（あるいは、ＤＲＡＭリフレッシュを停止する）（ステップＳ４０）。
【００９４】
これにより、ページＡ１内のビットの値“１”が、“０”に変化する。この状態で、プロセスＡが実行され、ページＡ１からデータが読み出されると、メモリコントローラ４００は、ＥＣＣにより、メモリ障害を検出する（ステップＳ４１）。
【００９５】
メモリコントローラ４００配下のＤＩＭＭ５１０、…には、プロセスＡが使用しているページＡ１のデータのみが存在し、ページＡ１以外の値はすべて“０”であるため、他のプロセスに使用されているメモリ領域でメモリ障害が検出されることはない。
【００９６】
次に、第３の実施の形態の効果について説明する。
【００９７】
第３の実施の形態は、第１の実施の形態の一例なので、第１の実施の形態と同一の効果を持つ。
【００９８】
上記の実施の形態の一部、または、全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００９９】
［付記１］
ＣＰＵコア、および、メモリ障害を検出するメモリコントローラを含むプロセッサと、
揮発性メモリ素子を含み前記メモリコントローラ配下である揮発性メモリ部と、
障害指定情報で示された前記揮発性メモリ素子の特定部分を含む前記メモリコントローラ配下の領域のすべてに“０”を書き込むか、または、前記障害指定情報で示されたプロセスにより使用される物理ページを含む前記メモリコントローラ配下の領域に一部を残してすべてに、“０”を書き込み、
前記メモリコントローラにリフレッシュ間隔を長い値に変更、または、停止させる障害投入プログラムと、
を含むことを特徴とするコンピュータシステム。
【０１００】
［付記２］
前記特定部分が１ビット、または、２ビットであり、
前記障害投入プログラムは、前記メモリコントローラ配下の領域にすべて、“０”を書き込んだ後に、前記特定部分に“１”を書き込み、その後、前記メモリコントローラにリフレッシュ間隔を長い値に変更、または、停止させ、その後、前記特定部分を読み出すことを特徴とする付記１のコンピュータシステム。
【０１０１】
［付記３］
前記揮発性メモリ部は、ＤＩＭＭであり、
前記揮発性メモリ素子は、ＤＲＡＭであることを特徴とする付記２のコンピュータシステム。
【０１０２】
［付記４］
前記障害指定情報は、特定の前記ＤＲＡＭのビット位置を示し、
前記障害投入プログラムは、前記ＤＲＡＭのビット位置から物理アドレスを生成し、前記物理アドレスに対応する仮想アドレスを獲得し、前記仮想アドレスを使用して書き込み、読み出しを行うことを特徴とする付記３のコンピュータシステム。
【０１０３】
［付記５］
前記障害指定情報は、障害を発生させる特定のプロセスを示す情報であり、
前記障害投入プログラムは、前記プロセスにより使用されている物理ページから事前に設定されたアルゴリズムにしたがい１つの物理ページを選択し、前記選択した物理ページ以外の前記メモリコントローラ配下の領域をオフラインにし、前記選択した物理ページ以外の前記メモリコントローラ配下の領域に、すべて、“０”を書き込むことを特徴とする付記１のコンピュータシステム。
【０１０４】
［付記６］
前記アルゴリズムは、値が“１”であるビットの総数が最小である（ただし、すべて“０”のページは除く）物理ページを選択する、または、値が“１”であるビットの総数が最大である物理ページを選択するものであることを特徴とする付記５記載のコンピュータシステム。
【０１０５】
［付記７］
ＣＰＵコア、および、メモリ障害を検出するメモリコントローラを含むプロセッサと、
揮発性メモリ素子を含み前記メモリコントローラ配下である揮発性メモリ部と、
を含み、
障害投入プログラムは、
障害指定情報で示された前記揮発性メモリ素子の特定部分を含む前記メモリコントローラ配下の領域のすべてに“０”を書き込むか、または、前記障害指定情報で示されたプロセスにより使用される物理ページを含む前記メモリコントローラ配下の領域に一部を残してすべてに、“０”を書き込み、前記メモリコントローラにリフレッシュ間隔を長い値に変更、または、停止させることを特徴とするメモリ障害投入方法。
【０１０６】
［付記８］
前記特定部分が１ビット、または、２ビットであり、
前記障害投入プログラムは、前記メモリコントローラ配下の領域にすべて、“０”を書き込んだ後に、前記特定部分に“１”を書き込み、その後、前記メモリコントローラにリフレッシュ間隔を長い値に変更、または、停止させ、その後、前記特定部分を読み出すことを特徴とする付記７のメモリ障害投入方法。
【０１０７】
［付記９］
前記揮発性メモリ部は、ＤＩＭＭであり、
前記揮発性メモリ素子は、ＤＲＡＭであることを特徴とする付記８のメモリ障害投入方法。
【０１０８】
［付記１０］
前記障害指定情報は、特定の前記ＤＲＡＭのビット位置を示し、
前記障害投入プログラムは、前記ＤＲＡＭのビット位置から物理アドレスを生成し、前記物理アドレスに対応する仮想アドレスを獲得し、前記仮想アドレスを使用して書き込み、読み出しを行うことを特徴とする付記９のメモリ障害投入方法。
【０１０９】
［付記１１］
前記障害指定情報は、障害を発生させる特定のプロセスを示す情報であり、
前記障害投入プログラムは、前記プロセスにより使用されている物理ページから事前に設定されたアルゴリズムにしたがい１つの物理ページを選択し、前記選択した物理ページ以外の前記メモリコントローラ配下の領域をオフラインにし、前記選択した物理ページ以外の前記メモリコントローラ配下の領域に、すべて、“０”を書き込むことを特徴とする付記７のメモリ障害投入方法。
【０１１０】
［付記１２］
前記アルゴリズムは、値が“１”であるビットの総数が最小である（ただし、すべて“０”のページは除く）物理ページを選択する、または、値が“１”であるビットの総数が最大である物理ページを選択するものであることを特徴とする付記１１記載のメモリ障害投入方法。
【０１１１】
［付記１３］
ＣＰＵコア、および、メモリ障害を検出するメモリコントローラを含むプロセッサと、
揮発性メモリ素子を含み前記メモリコントローラ配下である揮発性メモリ部と、
を含むコンピュータシステムのコンピュータに、
障害指定情報で示された前記揮発性メモリ素子の特定部分を含む前記メモリコントローラ配下の領域のすべてに“０”を書き込むか、または、前記障害指定情報で示されたプロセスにより使用される物理ページを含む前記メモリコントローラ配下の領域に一部を残してすべてに、“０”を書き込み、前記メモリコントローラにリフレッシュ間隔を長い値に変更、または、停止させる処理を実行させることを特徴とする障害投入プログラム。
【０１１２】
［付記１４］
前記特定部分が１ビット、または、２ビットであり、
前記コンピュータに、
前記メモリコントローラ配下の領域にすべて、“０”を書き込んだ後に、前記特定部分に“１”を書き込み、その後、前記メモリコントローラにリフレッシュ間隔を長い値に変更、または、停止させ、その後、前記特定部分を読み出す処理を実行させることを特徴とする付記１３のメモリ障害投入プログラム。
【０１１３】
［付記１５］
前記揮発性メモリ部は、ＤＩＭＭであり、
前記揮発性メモリ素子は、ＤＲＡＭである前記コンピュータシステムの前記コンピュータに、メモリ障害を発生させる処理を実行させることを特徴とする付記１４のメモリ障害投入プログラム。
【０１１４】
［付記１６］
前記障害指定情報は、特定の前記ＤＲＡＭのビット位置を示し、
前記コンピュータに、
前記ＤＲＡＭのビット位置から物理アドレスを生成し、前記物理アドレスに対応する仮想アドレスを獲得し、前記仮想アドレスを使用して書き込み、読み出しを行う処理を実行させることを特徴とする付記１５のメモリ障害投入方法。
【０１１５】
［付記１７］
前記障害指定情報は、障害を発生させる特定のプロセスを示す情報であり、
前記障害投入プログラムは、前記プロセスにより使用されている物理ページから事前に設定されたアルゴリズムにしたがい１つの物理ページを選択し、前記選択した物理ページ以外の前記メモリコントローラ配下の領域をオフラインにし、前記選択した物理ページ以外の前記メモリコントローラ配下の領域に、すべて、“０”を書き込むことを特徴とする付記１３のメモリ障害投入プログラム。
【０１１６】
［付記１８］
前記コンピュータに、
値が“１”であるビットの総数が最小である（ただし、すべて“０”のページは除く）物理ページを選択する、または、値が“１”であるビットの総数が最大である物理ページを選択するものである前記アルゴリズムを実行させることを特徴とする付記１７記載のメモリ障害投入方法。
【符号の説明】
【０１１７】
１００    コンピュータシステム
２００    プロセッサ
３００    ＣＰＵコア
３０１    ＣＰＵコア
３１０    アドレスデコーダ
４００    メモリコントローラ
４０１    メモリコントローラ
４１０    アドレスデコーダ
４１１    アドレスデコーダ
５００    揮発性メモリ部
５０１    揮発性メモリ部
５１０    ＤＩＭＭ
５１１    ＤＩＭＭ
６００    揮発性メモリ素子
６０１    揮発性メモリ素子
６０ｎ    揮発性メモリ素子
６１０    ＤＲＡＭ
６１１    ＤＲＡＭ
６１７    ＤＲＡＭ
６１ｎ    ＤＲＡＭ
７００    不揮発性記憶装置
７１０    ＯＳ
７２０    ページ管理処理部
７３０    ページオフライン処理部
８００    障害投入プログラム
８１０    メモリ確保処理部
８２０    アドレス特定処理部
８３０    メモリアクセス処理部
８４０    リフレッシュ間隔変更処理部
８５０    障害投入ページ決定処理部
８６０    ページオフライン要求処理部
９００    結合網
【図１】
2016162183.tif 000003
【図２】
2016162183.tif 000004
【図３】
2016162183.tif 000005
【図４】
2016162183.tif 000006
【図５】
2016162183.tif 000007
【図６】
2016162183.tif 000008
【図７】
2016162183.tif 000009
【図８】
2016162183.tif 000010
【図９】
2016162183.tif 000011
【図１０】
2016162183.tif 000012