(57)【要約】【課題】小容量の不揮発性メモリで長期間運用できる情報処理システムを提供する。【解決手段】情報処理システムは、不揮発性メモリと、不揮発性メモリの中のブロックの割り当て制御を行うメモリ制御手段と、バッドリストと、フリーリストとを有する。バッドリストは、不揮発性メモリの中の、エラーが増加傾向にあるメモリセルを含むページをバッドページとし、当該バッドページを含む連続ページからなるブロックを集めたリストである。フリーリストは、上記のバッドページを含まない連続ページからなるブロックを集めたリストである。メモリ制御手段は、ブロックの割り当て制御を行う時に、先にフリーリストのブロックの割り当て処理を試みる。ここで、フリーリストのブロックの割り当てができない場合には、バッドリストのブロックの割り当て処理を試みる。【選択図】      図１
2018120522.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと、
前記不揮発性メモリを制御するメモリ制御手段と、
前記不揮発性メモリの中のエラーが増加傾向にある不揮発性メモリセルを含むページをバッドページとし、前記バッドページを含む連続ページからなるブロックを集めたバッドリストと、
前記バッドページを含まない連続ページからなるブロックを集めたフリーリストと、
を有し、
前記メモリ制御手段は、
ブロックの割り当て処理時に、前記フリーリストのブロックの割り当て処理を先に試み、前記フリーリストのブロックの割り当てができない場合に、前記バッドリストのブロックの割り当て処理を試みる
ことを有することを特徴とする情報処理システム。
【請求項２】
スペアページを構成する不揮発性スペアメモリと、
ページ単位でページのアドレスを変換するアドレス変換部と
を有し、
前記アドレス変換部は、
前記バッドリストのブロックの割り当て処理時に、前記バッドページのアドレスを前記スペアページのアドレスに変換する
ことを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記メモリ制御手段が、
ブロックの解放処理時に、当該ブロックに前記スペアページに置き換えられた前記バッドページがある場合、前記バッドページと前記スペアページとの対応関係を前記アドレス変換部から削除する
ことを特徴とする請求項２に記載の情報処理システム。
【請求項４】
前記メモリ制御手段が、
前記バッドページの登録処理時に、前記バッドページが使用中であり、かつ連続ページの場合は、前記バッドページの前記スペアページへの置き換えを試み、
前記スペアページへの置き換えが可能な場合、前記バッドページの内容を前記スペアページへ移動し、
前記バッドページのアドレスを前記スペアページのアドレスに変換するように前記アドレス変換部を更新する
ことを特徴とする請求項３に記載の情報処理システム。
【請求項５】
前記メモリ制御手段が、
前記バッドページの登録処理時に、前記バッドページが使用中であり、非連続ページの場合、新規ページの割り当てを試み、
前記新規ページの割り当てが可能な場合、前記バッドページの内容を前記新規ページへ移動し、
前記バッドページのアドレスを前記新規ページのアドレスに変換するようにページテーブルエントリを更新する
ことを特徴とする請求項４に記載の情報処理システム。
【請求項６】
前記メモリ制御手段が、
前記バッドページの登録処理時に、前記バッドページが未使用の場合、前記バッドページを含むブロックを前記バッドリストにつなげる
ことを特徴とする請求項５に記載の情報処理システム。
【請求項７】
前記メモリ制御手段が、
前記バッドリストのブロックの割り当て処理時に、前記バッドリストから取得したブロックサイズが、要求ブロックサイズより大きい場合、不要なブロックを解放し、
前記不要なブロックを解放する時には、取得するブロックに、できるだけ前記バッドページが含まれないように制御する
ことを特徴とする請求項６に記載の情報処理システム。
【請求項８】
前記メモリ制御手段が、
スイッチ部と、エラー検出部と、バッドページ管理部とを備え、
前記スイッチ部は、前記アドレス変換部によって変換されたアドレス信号によって指定されたメモリセルの読み出しデータを選択して、前記エラー検出部に供給し、
前記エラー検出部は、エラーが起こったメモリセルを検出し、エラー情報を前記バッドページ管理部に供給し、
前記バッドページ管理部は、エラーが増加傾向にある前記不揮発性メモリセルを含むページを前記バッドページとして登録する
ことを特徴とする請求項７に記載の情報処理システム。
【請求項９】
不揮発性メモリを制御し、
前記不揮発性メモリの中のエラーが増加傾向にある不揮発性メモリセルを含むページをバッドページとし、前記バッドページを含む連続ページからなるブロックを集めたバッドリストを作成し、
前記バッドページを含まない連続ページからなるブロックを集めたフリーリストを作成し、
ブロックの割り当て処理時に、前記フリーリストのブロックの割り当て処理を先に試み、
前記フリーリストのブロックの割り当てができない場合に、前記バッドリストのブロックの割り当て処理を試みる
ことを特徴とする情報処理システムの制御方法。
【請求項１０】
不揮発性メモリを制御するステップと、
前記不揮発性メモリの中のエラーが増加傾向にある不揮発性メモリセルを含むページをバッドページとし、前記バッドページを含む連続ページからなるブロックを集めたバッドリストを作成するステップと、
前記バッドページを含まない連続ページからなるブロックを集めたフリーリストを作成するステップと、
ブロックの割り当て処理時に、前記フリーリストのブロックの割り当て処理を先に試みるステップと、
前記フリーリストのブロックの割り当てができない場合に、前記バッドリストのブロックの割り当て処理を試みるステップと
を有することを特徴とする情報処理システムの制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システムおよび情報処理システムの制御方法に関する。
【背景技術】
【０００２】
不揮発性メモリとして、以前は一般的に、ハードディスクやフラッシュメモリ等が利用されてきた。近年、ＦｅＲＡＭ、ＭＲＡＭ、ＰＣＲＡＭ、ＲｅＲＡＭ、ＣＢＲＡＭ等の高速にランダムアクセス可能な不揮発性メモリが開発されている。なお、これらのＲＡＭの表記は、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙの略である。そして、ＦｅＲＡＭはＦｅｒｒｏｅｌｅｃｔｒｉｃ−ＲＡＭの略、ＭＲＡＭはＭａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ−ＲＡＭの略、ＰＣＲＡＭはＰｈａｓｅ―Ｃｈａｎｇｅ−ＲＡＭの略である。またＲｅＲＡＭはＲｅｓｉｓｔｉｖｅ−ＲＡＭ、ＣＢＲＡＭはＣｏｎｄｕｃｔｉｖｅ−Ｂｒｉｄｇｅ−ＲＡＭの略である。これら新興の不揮発性メモリをＤＲＡＭ（Ｄｉｎａｍｉｃ−ＲＡＭ）と同様に主メモリとして利用した情報処理システムが提案されている。例えば、不揮発性メモリを利用することにより、高速なサスペンド・レジューム機能を実現する情報処理システムが提案されている。しかしながら、新興の不揮発性メモリは、書き込みにより摩耗する等の課題がある。そこで、このような課題を解決する方法が提案されている。
【０００３】
例えば、特許文献１には、不揮発性メモリを含むメモリシステム及びその摩耗度管理方法が開示されている。特許文献１に記載の技術は、不揮発性メモリの仮想アドレス及び物理アドレスのマッピング情報を含むページテーブルを有し、ページテーブルエントリは、ページの摩耗度を表す寿命情報を含む。そして、ページにデータが書き込まれる度に、寿命情報を更新し、耐久限度に到達したページにはメモリ割り当てが行われないように制御する。さらに、物理的に連続したページを割り当てる必要がある場合、空きページを管理するバディシステムを用いて、耐久限度に到達したページにはメモリ割り当てが行われないように制御する。上記の制御により、耐久限度内のページにメモリを割り当てることができる。
【０００４】
また、特許文献２には、メモリリマップ情報を記憶する不揮発性メモリが開示されている。特許文献２に記載の技術は、エラー数が閾値を超えるメモリセルの使用を中止し、全メモリ装置容量を維持するように、スペアメモリセルを選択する。この制御により、エラー数が閾値以下のメモリセルを選択しつつ、容量も確保することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−１８６４７７号公報
【特許文献２】特開２０１１−０４００５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に記載の技術は、運用期間が長くなるほど、耐久限度に到達したページが増加し、ページ単位のメモリ断片化が進む。このため、物理的に連続したページを割り当てる必要がある場合、メモリを効率的に割り当てられないという課題がある。
【０００７】
特許文献２に記載の技術は、スペアメモリの利用により、メモリ断片化の課題は解決するが、運用期間が長くなるほど、エラー数が閾値を超えるメモリセルが増加する。このため、全メモリ装置容量を維持するためには、多くのスペアメモリセルを必要とするという問題点があった。
【０００８】
本発明は、上記の課題に鑑みてなされたものであり、その目的は、小容量の不揮発性メモリで長期間運用できる情報処理システムを提供することである。
【課題を解決するための手段】
【０００９】
上記の課題を解決するため、本発明の情報処理システムは、情報処理システムは、不揮発性メモリと、不揮発性メモリの中のブロックの割り当て制御を行うメモリ制御手段と、バッドリストと、フリーリストとを有する。バッドリストは、不揮発性メモリの中の、エラーが増加傾向にあるメモリセルを含むページをバッドページとし、当該バッドページを含む連続ページからなるブロックを集めたリストである。フリーリストは、上記のバッドページを含まない連続ページからなるブロックを集めたリストである。メモリ制御手段は、ブロックの割り当て制御を行う時に、先にフリーリストのブロックの割り当て処理を試みる。ここで、フリーリストのブロックの割り当てができない場合には、バッドリストのブロックの割り当て処理を試みる。
【発明の効果】
【００１０】
本発明の効果は、小容量の不揮発性メモリで長期間運用できる情報処理システムを提供できることである。
【図面の簡単な説明】
【００１１】
【図１】第１の実施形態の情報処理システムを示すブロック図である。
【図２】第２の実施形態の情報処理システムの全体構成を示すブロック図である。
【図３】第２の実施形態の情報処理システムの主記憶装置を示すブロック図である。
【図４】第２の実施形態の情報処理システムの主記憶装置の一部を示すブロック図であるである。
【図５】第２の実施形態の情報処理システムにおけるバッドページを含む実ページの管理方法を示す模式図である。
【図６】第２の実施形態の情報処理システムにおけるバッドページを含む実ページの管理方法を示す別の模式図である。
【図７】第２の実施形態の情報処理システムにおけるバッドページの登録処理を示すフローチャートである。
【図８】第２の実施形態の情報処理システムにおけるバッドページの登録処理を示すフローチャートの一部である。
【図９】第２の実施形態の情報処理システムにおけるブロックの割り当て処理を示すフローチャートである。
【図１０】第２の実施形態の情報処理システムにおけるフリーリストのブロックの割り当て処理を示すフローチャートである。
【図１１】第２の実施形態の情報処理システムにおけるバッドリストのブロックの割り当て処理を示すフローチャートである。
【図１２】第２の実施形態の情報処理システムにおけるバッドリストのブロックの割り当て処理の一部を示すフローチャートである。
【図１３】第２の実施形態の情報処理システムにおけるブロックの解放処理を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、図面を参照しながら、本発明の実施形態を詳細に説明する。但し、以下に述べる実施形態には、本発明を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。なお各図面の同様の構成要素には同じ番号を付し、説明を省略する場合がある。
【００１３】
（第１の実施形態）
図１は第１の実施形態を示すブロック図である。情報処理システムは、不揮発性メモリ１と、不揮発性メモリ１の中のブロックの割り当て制御を行うメモリ制御手段２と、バッドリスト３と、フリーリスト４とを有する。
【００１４】
バッドリスト３は、不揮発性メモリ１の中の、エラーが増加傾向にあるメモリセルを含むページをバッドページとし、当該バッドページを含む連続ページからなるブロックを集めたリストである。
【００１５】
フリーリスト４は、上記のバッドページを含まない連続ページからなるブロックを集めたリストである。
【００１６】
メモリ制御手段２は、ブロックの割り当て制御を行う時に、先にフリーリスト４のブロックの割り当て処理を試みる。ここで、フリーリスト４のブロックの割り当てができない場合には、バッドリスト３のブロックの割り当て処理を試みる。
【００１７】
以上の構成とすることにより、小容量の不揮発性メモリで長期間運用できる情報処理システムを提供することができる。
【００１８】
（第２の実施形態）
図２は本発明の情報処理システムの全体構成を示すブロック図である。情報処理システム１０００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１００と、主記憶装置２００と、２次記憶装置３００と、入出力装置４００とを備えている。
【００１９】
ＣＰＵ１００は、２次記憶装置３００から主記憶装置２００にロードされたプログラムを実行し、バス５００を介して、主記憶装置２００と、２次記憶装置３００と、入出力装置４００とを制御する。また、ＣＰＵ１００は各装置からの制御信号に応答し、プログラムを実行する。
【００２０】
２次記憶装置３００は不揮発性メモリとして、ハードディスクやフラッシュメモリ等を含む。入出力装置４００は、キーボードやマウスなどの入力手段と、液晶ディスプレイ等の出力手段を含む。
【００２１】
主記憶装置２００は、不揮発性メモリ２１０とメモリ制御装置２２０とを含む。なお、主記憶装置２００として、揮発性メモリ２３０が含まれていてもよい。主記憶装置２００の揮発性メモリ２３０は、ＤＲＡＭやＳＲＡＭを含む。揮発性メモリ２３０は電源の供給されている間のみデータを保持できる。不揮発性メモリ２１０は、ＦｅＲＡＭ、ＭＲＡＭ、ＰＣＲＡＭ、ＲｅＲＡＭ、ＣＢＲＡＭ等の高速にランダムアクセス可能な不揮発性メモリを含む。不揮発性メモリ２１０は、電源の供給が遮断されてもデータを保持できる。他方、揮発性メモリ２３０は、動作時にプログラムやＣＰＵ１００が処理したデータを格納する。また、不揮発性メモリ２１０は、動作時とサスペンド時にプログラムやＣＰＵ１００が処理したデータを格納する。
【００２２】
主記憶装置２００が提供する実メモリは、ページ単位に分割され、管理される。仮想アドレス空間も同じページ単位に分割され、管理される。仮想記憶機構を備えたＣＰＵ１００は、プログラムを固有の仮想アドレス空間上で動作させることができる。仮想アドレスから実メモリのアドレス（実アドレス）への変換はページテーブルを基にページ単位で行われる。ページテーブルは、仮想ページと実ページの対応表である。
【００２３】
本実施形態の情報処理システム１０００における主記憶装置２００が提供する実メモリは、揮発性メモリ２３０と不揮発性メモリ２１０とを区別して管理されうる。例えば、Ｏｐｅｒａｔｉｇｎ  Ｓｙｓｔｅｍ（ＯＳ）の一つであるＬｉｎｕｘ（登録商標）は、ゾーンとノードの組み合わせに応じてページを管理する機構を備えているが、同様の機構を適用してもよい。ゾーンは、実アドレスの領域によって分けて、管理される単位である。ページの割り当てはゾーン毎に行われる。また、ノードは、システム内のメモリを分割し、管理される単位である。ノードは、たとえば、Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ（ＮＵＭＡ）システムにおいて、メモリの割り当て方に差をつけるために利用される。
【００２４】
図３は、本実施形態の主記憶装置２００を示すブロック図である。主記憶装置２００は、不揮発性メモリ２１０と、不揮発性スペアメモリ２１１と、メモリ制御装置２２０とから構成される。メモリ制御装置２２０はバス５００を介して、アドレス信号、データ信号、制御信号を含む信号を送信または受信する。メモリ制御装置２２０は、ローカルバス６００を介して、不揮発性メモリ２１０と不揮発性スペアメモリ２１１に接続し、ローカルアドレス信号、ローカルデータ信号、ローカル制御信号を含む信号を送信または受信する。不揮発性スペアメモリ２１１は、例えば、不揮発性メモリと同一の種類のメモリセルから構成される。
【００２５】
図４はメモリ制御装置の一部を示す模式図である。メモリ制御装置２２０は、アドレス変換部２２１と、スイッチ部２２２と、エラー検出部２２３と、バッドページ管理部２２４を含む。
【００２６】
アドレス変換部２２１は、不揮発性メモリ２１０のバッドページを、ページ単位で不揮発性スペアメモリ２１１のページに置き換える。不揮発性メモリ２１０のバッドページは、エラーが増加傾向にあるメモリセルを含むページである。アドレス変換部２２１は、置き換え元の不揮発性メモリ２１０のアドレスと、置き換え先の不揮発性スペアメモリ２１１のアドレスとの対応情報を記憶した記憶部２２１ａを備える。そして、記憶部２２１ａの対応情報を参照して、バス５００上のアドレス信号をローカルバス６００上のローカルアドレス信号に変換する。アドレス変換部２２１は、アドレス対応情報を記憶する記憶部２２１ａとして、Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ（ＣＡＭ）などを利用し、高速にアドレス変換してもよい。
【００２７】
スイッチ部２２２は、ローカルアドレス信号によって指定されたメモリセルの読み出しデータであるローカルデータ出力信号を選択し、エラー検出部２２３に供給する。スイッチ部２２２は、マルチプレクサ等の信号スイッチを利用することができる。
【００２８】
エラー検出部２２３は、エラーが起こったメモリセルを検出し、エラー情報をバッドページ管理部２２４へ出力する。メモリ制御装置２２０は、エラー検出部２２３として、Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ（ＥＣＣ）等の技術を利用することができる。尚、エラー検出部２２３は、ＥＣＣ等の技術を利用して、エラーを訂正して、データ出力信号を出力してもよい。
【００２９】
バッドページ管理部２２４は、エラー検出部２２３から供給されるエラー情報と、アドレス変換部２２１から供給されるローカルアドレス信号とを用いて、ローカルアドレスによって指定されたメモリセルがエラー増加傾向にあるか否かを判断する。エラーが増加傾向にあると判断した場合、そのメモリセルを含むページをバッドページとして、登録する。バッドページ管理部２２４は、例えば、エラーがあったメモリセルのアドレスとそのエラー回数を記録し、エラー回数がある閾値以上の場合、そのメモリセルをエラー傾向にあると判断する。もしくは、バッドページ管理部２２４は、ＥＣＣの符号語を形成する複数のメモリセルに対し、その符号語内のエラー数がある閾値より多い場合、それらのメモリセルをエラー増加傾向にあると判断する。バッドページ管理部２２４は、バッドページを登録するための記憶部２２４ａを備え、バッドページのページフレーム番号などの識別子を保存する。ページフレーム番号は、ＣＰＵ１００が利用するアドレスの一部のビットから構成される。さらに、バッドページ管理部２２４は、バッドページの登録をＣＰＵ１００へ通知する通知部２２４ｂを備える。通知部２２４ｂは、例えば、割り込み要求などの通知手段を用いる。ＣＰＵ１００は、メモリ制御装置２２０からの通知を受けると、その割り込み処理において、バッドページ管理部２２４の記憶部２２４ａから、登録されているバッドページの識別子を読み出す。ＣＰＵ１００は、後述のＯＳ等のソフトウェアを用いて、バッドページを管理する。
【００３０】
図５は、本実施形態の情報処理システムにおけるバッドページを含む実ページの管理方法を示す模式図である。本実施形態の情報処理システムは、フリー領域とバッド領域から構成されるバディシステムによって、実ページを管理する。バディシステムはページを２のべき乗の単位で管理する。フリー領域は空きページから構成される２のべき乗の単位の連続ページが集められ、バッド領域はバッドページを含む２のべき乗の単位の連続ページが集められる。バディシステムは、連続ページをブロックとして管理する。
【００３１】
図５は８つのページとそれぞれのバディシステムのブロックを例示している。バディシステムは、未使用ページ、使用ページ、バッドページを管理する。オーダーは、べき指数を表す。オーダーＮのブロックは２のＮ乗のページサイズであり、かつ、オーダーＮのブロックの先頭ページのページフレーム番号は、２のＮ乗の整数倍である。ここでは、バディブロックを、隣接する同じオーダーＮのブロックであり、かつ、統合するとオーダー（Ｎ＋１）のブロックを形成できるものと定義する。
【００３２】
図５に示すように、ブロックは未使用ページとバッドページを用いて、できるだけ大きなブロックを構成する。これはバディブロックがバッド領域またはフリー領域に存在するか調査し、バディブロックが存在する場合、それらのブロックを統合して大きなブロックを形成することにより行われる。さらに、ブロック内にバッドページが含まれる場合、そのブロックをバッド領域に所属させる。バッドページが含まれない場合、そのブロックをフリー領域に所属させる。図５では、オーダー０に一つのブロック、オーダー１に一つのブロック、オーダー２に一つのブロックがある。そのうち、オーダー２のブロックはバッドページを含んでいる。このため、このオーダー２のブロックはバッド領域に属する。そして、オーダー０とオーダー１のブロックは、バッドページを含んでいないため、フリー領域に属する。
【００３３】
図６は、本実施形態の情報処理システムにおけるバッドページを含む実ページの管理方法を示す模式図である。本実施形態の情報処理システムは、ゾーン記述子とページ記述子から構成されるフリーリストとバッドリストによって、実ページを管理する。ゾーン記述子は、不揮発性メモリの実ページが属するゾーンを管理する記述子である。ページ記述子は、不揮発性メモリの実ページを管理する記述子である。
ゾーン記述子は、ｆｒｅｅ＿ａｒｅａメンバと、ｂａｄ＿ａｒｅａメンバを備える。ｆｒｅｅ＿ａｒｅａメンバはｆｒｅｅ＿ｌｉｓｔ配列を備える。ｂａｄ＿ａｒｅａメンバはｂａｄ＿ｌｉｓｔ配列を備える。これらの配列のインデックスはオーダーである。
【００３４】
ｆｒｅｅ＿ｌｉｓｔ［Ｎ］メンバは、オーダーがＮのフリーリストの先頭のページ記述子を指す。オーダーがＮのフリーリストは、オーダーがＮのフリー領域に属するブロックの内、先頭ページのページ記述子から構成される。
【００３５】
ｂａｄ＿ａｒｅａ［Ｎ］メンバは、オーダーがＮのバッドリストの先頭のページ記述子を指す。オーダーがＮのバッドリストは、オーダーがＮのバッド領域に属するブロックの内、先頭ページのページ記述子から構成される。
【００３６】
ページ記述子は、ＰＧ＿ｂａｄフラグと、ｎｅｘｔメンバを備える。ＰＧ＿ｂａｄフラグは、ページがバッドページの場合、１に設定される。ページがバッドページではない場合、０に設定される。ｎｅｘｔメンバは、各リストの後続のページ記述子を指す。
【００３７】
図７は、本実施形態の情報処理システムにおけるバッドページの登録処理のフローチャートである。メモリ制御装置からバッドページ登録の通知を受けると、ＯＳ等のソフトウェハは、メモリ制御装置からバッドページとして登録されたページＰ１のページフレーム番号を取得する（Ｓ１）。そして、ページＰ１のページ記述子にＰＧ＿ｂａｄフラグを立てる（Ｓ２）。
【００３８】
ここで、ページＰ１が使用中ではない場合（Ｓ３＿Ｎｏ）、ページＰ１を含むブロックがバッドリストにつながるように制御しブロックを更新する（Ｓ４）。
【００３９】
一方、ページＰ１が使用中の場合（Ｓ３＿Ｙｅｓ）、プロセスＡに進む。図８はプロセスＡを示すフローチャートである。プロセスＡでは、まず、ページＰ１が連続ページか否かを調べる（Ｓ５）。
【００４０】
ページＰ１が連続ページではない場合（Ｓ５＿Ｎｏ）、新規ページＰ２の割り当てを試みる（Ｓ６）。割り当てに成功した場合（Ｓ７＿Ｙｅｓ）、ページＰ１のページの内容を新規ページＰ２へ移動する。そして、ページＰ１から新規ページＰ２を指すように、ページテーブルエントリを更新する（Ｓ８）。割り当てに失敗した場合（Ｓ７＿Ｎｏ）、新規ページ割り当てエラーを返す（Ｓ９）。そして、図７のフローチャートのＢへ戻り終了する。
【００４１】
一方、ページＰ１が連続ページの場合（Ｓ５＿Ｙｅｓ）、ページＰ１のスペアページＰ３への置き換えを試みる（Ｓ１０）。未使用のスペアページがあり、置き換え可能な場合（Ｓ１１＿Ｙｅｓ）、ページＰ１の内容をスペアページＰ３へ移動する。そして、ページＰ１のアドレスをスペアページＰ３のアドレスに変換するように、メモリ制御装置のアドレス変換部を更新する（Ｓ１２）。置き換え不可の場合（Ｓ１１＿Ｎｏ）、スペアページの置き換えエラーを返す（Ｓ１３）。そして、図７のフローチャートのＢへ戻り終了する。
【００４２】
図９は、本実施形態の情報処理システムにおけるブロックの割り当て処理のフローチャートである。ブロックの割り当て要求を受け取ると（Ｓ１０１）、ＯＳ等のソフトウェアは、フリーリストのブロックの割り当てを試みる（Ｓ１０２）。
【００４３】
フリーリストのブロックを取得できた場合（Ｓ１０３＿Ｙｅｓ）、その取得ブロックを返す（Ｓ１０７）。一方、フリーリストのブロックを取得できなかった場合（Ｓ１０３＿Ｎｏ）、バッドリストのブロックの割り当てを試みる（Ｓ１０４）。
【００４４】
バッドリストのブロックを取得できた場合（Ｓ１０５＿Ｙｅｓ）、その取得ブロックを返す（Ｓ１０７）。一方、バッドリストのブロックを取得できなかった場合（１０５＿Ｎｏ）、割り当て失敗としてＮＵＬＬを返す（Ｓ１０６）。
【００４５】
図１０は、本実施形態の情報処理システムにおけるフリーリストのブロックの割り当て処理のフローチャートである。まず、２のＭ乗のページサイズのブロックの割り当て要求を受けると（Ｓ２０１）、ＯＳ等のソフトウェアは、Ｎ≧Ｍの条件のもと、２のＮ乗のページサイズのブロックの取得を試みる（Ｓ２０２）。この時、できるだけ小さなブロックを取得するように、小さいオーダーのフリーリストからブロックを調べていく。
【００４６】
２のＮ乗のブロックを取得できなかった場合（Ｓ２０３＿Ｎｏ）、割り当て失敗としてＮＵＬＬを返す（Ｓ２０４）。
【００４７】
一方、２のＮ乗のブロックを取得できた場合（Ｓ２０３＿Ｙｅｓ）、ブロックサイズを調べる。ブロックサイズが要求サイズと等しい場合、すなわちＮ＝Ｍの場合（Ｓ２０５＿Ｙｅｓ）、取得ブロックを返す（Ｓ２０７）。一方ブロックサイズが要求サイズより大きい場合、すなわちＮ＞Ｍの場合（Ｓ２０５＿Ｎｏ）、不要なブロックを解放し（Ｓ２０６）、取得ブロックを返す（Ｓ２０７）。
【００４８】
図１１は、本実施形態の情報処理システムにおけるバッドリストのブロックの割り当て処理のフローチャートである。まず、２のＭ乗のページサイズのブロックの割り当て要求を受けると（Ｓ３０１）、ＯＳ等のソフトウェアは、Ｎ≧Ｍの条件のもと、２のＮ乗のページサイズのブロックの取得を試みる（Ｓ３０２）。この時、できるだけ小さなブロックを取得するように、小さいオーダーのバッドリストからブロックを調べていく。
【００４９】
２のＮ乗のブロックを取得できなかった場合（Ｓ３０３＿Ｎｏ）、割り当て失敗としてＮＵＬＬを返す（Ｓ３０４）。
【００５０】
一方、２のＮ乗のブロックを取得できた場合（Ｓ３０３＿Ｙｅｓ）、プロセスＣに進む。図１２は、プロセスＣを示すフローチャートである。プロセスＣでは、まず、ブロックサイズを調べる。そして、ブロックサイズが要求サイズと等しい場合（Ｎ＝Ｍの場合、Ｓ３０５＿Ｙｅｓ）、取得ブロックにバッドページがあるか調べる（Ｓ３０７）。一方、ブロックサイズが要求サイズより大きい場合（Ｎ＞Ｍの場合、Ｓ３０５＿Ｎｏ）、不要なブロックを解放し（Ｓ３０６）、取得ブロックにバッドページがあるか調べる（Ｓ３０７）。尚、不要なブロックを解放する処理の際に、取得するブロックに、できるだけバッドページが含まれないように制御し、スペアページの利用を抑えてもよい。
【００５１】
Ｓ３０７では、取得ブロックにバッドページがあるかを調べる。そしてバッドページが含まれない場合（Ｓ３０７＿Ｎｏ）、取得ブロックを返し（Ｓ３１１）、図１１のフローチャートのＤに戻り終了する。
【００５２】
一方、バッドページが含まれる場合（Ｓ３０７＿Ｙｅｓ）、バッドページのスペアページへの置き換えを試みる（Ｓ３０８）。ここで、未使用のスペアページがあり、置き換え可能な場合（Ｓ３０９＿Ｙｅｓ）、バッドページのアドレスをスペアページのアドレスに変換するように、メモリ制御装置のアドレス変換部を更新する（Ｓ３１０）。そして、取得ブロックを返し（Ｓ３１１）、図１１のフローチャートのＤに戻る。一方、置き換え不可の場合（Ｓ３０９＿Ｎｏ）、取得したブロックを解放し（Ｓ３１２）、図１１のフローチャートのＥに戻り、割り当て失敗としてＮＵＬＬを返して（Ｓ３０４）、終了する。
【００５３】
図１３は、本実施形態の情報処理システムにおけるブロックの解放処理のフローチャートである。まず、２のＭ乗のページサイズのブロックの開放要求を受けると（Ｓ４０１）、ＯＳ等のソフトウェアは、Ｎ≧Ｍの条件のもと、２のＮ乗のページサイズのブロックへ統合する（Ｓ４０２）。ここで、小さいオーダーのフリーリストまたはバッドリストのバディブロックから順次調べ、できるだけ大きなブロックに統合していく。
統合したブロックにバッドページが含まれない場合（Ｓ４０３＿Ｎｏ）、そのブロックをフリーリストにつなぐ（Ｓ４０４）。
【００５４】
一方、統合したブロックにバッドページが含まれる場合（Ｓ４０３＿Ｙｅｓ）、バッドページはスペアページに置き換えられているかを調べる（Ｓ４０５）。スペアページに置き換えられているかを調べる方法として、たとえば、ページ記述子にＰＧ＿ｓｐａｒｅフラグを設け、スペアページの置き換えられている場合に、ＰＧ＿ｓｐａｒｅフラグを１に設定してもよい。
【００５５】
スペアページに置き換えられていない場合（Ｓ４０５＿Ｎｏ）、ブロックをバッドリストにつなぐ（Ｓ４０７）。
【００５６】
一方、スペアページに置き換えられている場合（Ｓ４０５＿Ｙｅｓ）、スペアページを解放する（Ｓ４０６）。スペアページの解放処理は、バッドページとスペアページの対応関係を、アドレス変換部から削除する処理を含む。そして、ブロックをバッドリストへつなぐ（Ｓ４０７）。
【００５７】
尚、スペアページの管理は、メモリ制御装置等のハードウェア、もしくは、ＯＳ等のソフトウェアを用いてもよい。
【００５８】
（効果）
本実施形態の情報処理システムは、物理的に連続したページを割り当てる必要がある場合、オンデマンドで、バッドページをスペアページに置き換える。これにより、複数のバッドページがスペアページを時分割で共有することができる。さらに、フリーリスト、バッドリストの順にページの割り当てを試みることにより、スペアページの利用を抑える。これらにより、長期間の運用においても必要なスペアメモリの容量を低減できることが期待される。
【００５９】
よって、本実施形態の情報処理システムは、小容量のスペアメモリで長期間運用できる不揮発性メモリを備えた情報処理システを提供することができる。
【００６０】
上述した第１および第２の実施形態の処理をコンピュータに実行させるプログラムおよび該プログラムを格納した記録媒体も本発明の範囲に含む。記録媒体としては、例えば、磁気ディスク、磁気テープ、光ディスク、光磁気ディスク、半導体メモリ、などを用いることができる。
【００６１】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００６２】
（付記１）
不揮発性メモリと、
前記不揮発性メモリを制御するメモリ制御手段と、
前記不揮発性メモリの中のエラーが増加傾向にある不揮発性メモリセルを含むページをバッドページとし、前記バッドページを含む連続ページからなるブロックを集めたバッドリストと、
前記バッドページを含まない連続ページからなるブロックを集めたフリーリストと、
を有し、
前記メモリ制御手段は、
ブロックの割り当て処理時に、前記フリーリストのブロックの割り当て処理を先に試み、前記フリーリストのブロックの割り当てができない場合に、前記バッドリストのブロックの割り当て処理を試みる
ことを有することを特徴とする情報処理システム。
【００６３】
（付記２）
スペアページを構成する不揮発性スペアメモリと、
ページ単位でページのアドレスを変換するアドレス変換部と
を有し、
前記アドレス変換部は、
前記バッドリストのブロックの割り当て処理時に、前記バッドページのアドレスを前記スペアページのアドレスに変換する
ことを特徴とする付記１に記載の情報処理システム。
【００６４】
（付記３）
前記メモリ制御手段が、
ブロックの解放処理時に、当該ブロックに前記スペアページに置き換えられた前記バッドページがある場合、前記バッドページと前記スペアページとの対応関係を前記アドレス変換部から削除する
ことを特徴とする付記２に記載の情報処理システム。
【００６５】
（付記４）
前記メモリ制御手段が、
前記バッドページの登録処理時に、前記バッドページが使用中であり、かつ連続ページの場合は、前記バッドページの前記スペアページへの置き換えを試み、
前記スペアページへの置き換えが可能な場合、前記バッドページの内容を前記スペアページへ移動し、
前記バッドページのアドレスを前記スペアページのアドレスに変換するように前記アドレス変換部を更新する
ことを特徴とする付記３に記載の情報処理システム。
【００６６】
（付記５）
前記メモリ制御手段が、
前記バッドページの登録処理時に、前記バッドページが使用中であり、非連続ページの場合、新規ページの割り当てを試み、
前記新規ページの割り当てが可能な場合、前記バッドページの内容を前記新規ページへ移動し、
前記バッドページのアドレスを前記新規ページのアドレスに変換するようにページテーブルエントリを更新する
ことを特徴とする付記４に記載の情報処理システム。
【００６７】
（付記６）
前記メモリ制御手段が、
前記バッドページの登録処理時に、前記バッドページが未使用の場合、前記バッドページを含むブロックを前記バッドリストにつなげる
ことを特徴とする付記５に記載の情報処理システム。
【００６８】
（付記７）
前記メモリ制御手段が、
前記バッドリストのブロックの割り当て処理時に、前記バッドリストから取得したブロックサイズが、要求ブロックサイズより大きい場合、不要なブロックを解放し、
前記不要なブロックを解放する時には、取得するブロックに、できるだけ前記バッドページが含まれないように制御する
ことを特徴とする付記６に記載の情報処理システム。
【００６９】
（付記８）
前記メモリ制御手段が、
スイッチ部と、エラー検出部と、バッドページ管理部とを備え、
前記スイッチ部は、前記アドレス変換部によって変換されたアドレス信号によって指定されたメモリセルの読み出しデータを選択して、前記エラー検出部に供給し、
前記エラー検出部は、エラーが起こったメモリセルを検出し、エラー情報を前記バッドページ管理部に供給し、
前記バッドページ管理部は、エラーが増加傾向にある前記不揮発性メモリセルを含むページを前記バッドページとして登録する
ことを特徴とする付記７に記載の情報処理システム。
【００７０】
（付記９）
情報処理を実行するＣＰＵを有し、
前記バッドページ管理部が、
前記バッドページの登録を前記ＣＰＵへ通知する通知部を有する
ことを特徴とする付記７または付記８に記載の情報処理システム。
【００７１】
（付記１０）
前記ＣＰＵと前記メモリ制御手段とを接続するバスと、
前記メモリ制御手段と、前記不揮発性メモリおよび前記不揮発性スペアメモリとを接続するローカルバスと
を有することを特徴とする付記９に記載の情報処理システム。
【００７２】
（付記１１）
不揮発性メモリを制御し、
前記不揮発性メモリの中のエラーが増加傾向にある不揮発性メモリセルを含むページをバッドページとし、前記バッドページを含む連続ページからなるブロックを集めたバッドリストを作成し、
前記バッドページを含まない連続ページからなるブロックを集めたフリーリストを作成し、
ブロックの割り当て処理時に、前記フリーリストのブロックの割り当て処理を先に試み、
前記フリーリストのブロックの割り当てができない場合に、前記バッドリストのブロックの割り当て処理を試みる
ことを特徴とする情報処理システムの制御方法。
【００７３】
（付記１２）
不揮発性スペアメモリを用いたスペアページを構成し、
ページ単位で前記ページのアドレスを変換し、
前記アドレスの変換では、
前記バッドリストのブロックの割り当て処理時に、前記バッドページのアドレスを前記スペアページのアドレスに変換する
ことを特徴とする付記１１に記載の情報処理システムの制御方法。
【００７４】
（付記１３）
ブロックの解放処理時に、当該ブロックに前記スペアページに置き換えられた前記バッドページがある場合、前記バッドページと前記スペアページとの対応関係を前記アドレス変換部から削除する
ことを特徴とする付記１２に記載の情報処理システムの制御方法。
【００７５】
（付記１４）
前記バッドページの登録処理時に、前記バッドページが使用中であり、かつ連続ページの場合は、前記バッドページの前記スペアページへの置き換えを試み、
前記スペアページへの置き換えが可能な場合、前記バッドページの内容を前記スペアページへ移動し、
前記バッドページのアドレスを前記スペアページのアドレスに変換するように前記アドレス変換部を更新する
ことを特徴とする付記１３に記載の情報処理システムの制御方法。
【００７６】
（付記１５）
前記バッドページの登録処理時に、前記バッドページが使用中であり、非連続ページの場合、新規ページの割り当てを試み、
前記新規ページの割り当てが可能な場合、前記バッドページの内容を前記新規ページへ移動し、
前記バッドページのアドレスを前記新規ページのアドレスに変換するようにページテーブルエントリを更新する
ことを特徴とする付記１４に記載の情報処理システムの制御方法。
【００７７】
（付記１６）
前記バッドページの登録処理時に、前記バッドページが未使用の場合、前記バッドページを含むブロックを前記バッドリストにつなげる
ことを特徴とする付記１５に記載の情報処理システムの制御方法。
【００７８】
（付記１７）
前記バッドリストのブロックの割り当て処理時に、前記バッドリストから取得したブロックサイズが、要求ブロックサイズより大きい場合、不要なブロックを解放し、
不要なブロックを解放する時には、取得するブロックに、できるだけ前記バッドページが含まれないように制御する
ことを特徴とする付記１６に記載の情報処理システムの制御方法。
【００７９】
（付記１８）
スイッチ部が、前記アドレス変換部によって変換されたアドレス信号によって指定されたメモリセルの読み出しデータを選択して、エラー検出部に供給し、
前記エラー検出部は、エラーが起こったメモリセルを検出し、エラー情報をバッドページ管理部に供給し、
前記バッドページ管理部は、エラーが増加傾向にある前記不揮発性メモリセルを含むページを前記バッドページとして登録する
ことを特徴とする付記１７に記載の情報処理システムの制御方法。
【００８０】
（付記１９）
前記バッドページ管理部が、
前記バッドページの登録をＣＰＵへ通知する
ことを特徴とする付記１８に記載の情報処理システムの制御方法。
【００８１】
（付記２０）
不揮発性メモリを制御するステップと、
前記不揮発性メモリの中のエラーが増加傾向にある不揮発性メモリセルを含むページをバッドページとし、前記バッドページを含む連続ページからなるブロックを集めたバッドリストを作成するステップと、
前記バッドページを含まない連続ページからなるブロックを集めたフリーリストを作成するステップと、
ブロックの割り当て処理時に、前記フリーリストのブロックの割り当て処理を先に試みるステップと、
前記フリーリストのブロックの割り当てができない場合に、前記バッドリストのブロックの割り当て処理を試みるステップと
を有することを特徴とする情報処理システムの制御プログラム。
【００８２】
以上、本発明の好ましい実施形態を説明したが、本発明はこれに限定されるものではない。請求の範囲に記載した発明の範囲内で、種々の変形が可能であり、それらも本発明の範囲に含まれることはいうまでもない。
【符号の説明】
【００８３】
１、２１０    不揮発性メモリ
２    メモリ制御手段
３    バッドリスト
４    フリーリスト
１００    ＣＰＵ
２００    主記憶装置
２２０    メモリ制御装置
２３０    揮発性メモリ
３００    ２次記憶装置
４００    入出力装置
５００    バス
６００    ローカルバス
１０００    情報処理システム
【図１】
2018120522.tif 000003
【図２】
2018120522.tif 000004
【図３】
2018120522.tif 000005
【図４】
2018120522.tif 000006
【図５】
2018120522.tif 000007
【図６】
2018120522.tif 000008
【図７】
2018120522.tif 000009
【図８】
2018120522.tif 000010
【図９】
2018120522.tif 000011
【図１０】
2018120522.tif 000012
【図１１】
2018120522.tif 000013
【図１２】
2018120522.tif 000014
【図１３】
2018120522.tif 000015