(57)【要約】  開示の技術は、メモリへのデータの書込みに失敗した場合でも、誤データの読出し及び誤データに基づく情報処理装置の誤動作を抑制することができる方法を提供することを目的とする。  開示の方法によれば、論理アドレスが付されたデータを、メモリの所定の物理アドレスに対して書込み、データの書込みが正常に行われなかった場合には、書込みが正常に行われなかったことを示す第１フラグを生成して論理アドレスに対応付けて記憶する。第１フラグにより、特定の論理アドレスが付されたデータに誤りがあることを記録として残すことができる。これにより、演算処理ノードが誤データを読出すことを防止できる。
2015040658.tif 000002
【特許請求の範囲】
【請求項１】
第１演算処理ノードが、第１論理アドレスが付されデータをメモリに書込むよう、メモリコントローラに要求する工程と、
前記メモリコントローラが、前記メモリの第１物理アドレスに対して前記データの書込みを行う工程と、
前記メモリコントローラが、前記データの書込みが正常に行われなかったこと示す第１フラグを生成し、前記第１論理アドレスに対応付けて記憶する工程と
を有することを特徴とする情報処理方法。
【請求項２】
前記メモリコントローラが、前記第１論理アドレスを指定した前記データの読出し要求を第２演算処理ノードから受ける工程と、
前記メモリコントローラが、第１論理アドレスに対応付けられた前記第１フラグを認識する工程と、
前記メモリコントローラが、前記データの読み出しを行わずに、前記データの書込みが正常に行われなかったことを示す第１通知を前記第２演算処理ノードに通知する工程と、
を有することを特徴とする請求項１に記載の情報処理方法。
【請求項３】
前記メモリコントローラが、前記データの書込みが正常に行われなかったことを示す第２通知を、前記第１演算処理ノードに通知する工程と、
前記第２演算処理ノードに前記第１通知がなされた後、前記第１演算処理ノードが前記メモリに対して、前記データの再書込みを行う工程と、
前記再書き込みによって前記データが前記メモリに正常に書込まれた場合、前記メモリコントローラが前記第１フラグを消去する工程と、
前記メモリコントローラが、前記データが正常に書込まれたことを示す第３通知を前記第２演算処理ノードに通知する工程と、
を有することを特徴とする請求項２に記載の情報処理方法。
【請求項４】
前記メモリはフラッシュメモリであることを特徴とする請求項１乃至３何れか一項に記載の情報処理方法。
【請求項５】
前記メモリコントローラは、前記データの書込みが正常に行われなかった場合、前記第１物理アドレスにデバイス不良があることを示す第２フラグを生成することを特徴とする請求項１乃至４何れか一項に記載の情報処理方法。
【請求項６】
前記データの書込みが正常に行われなかった場合は、前記メモリの第２物理アドレスに対して前記データの書込みを行い、前記第２物理アドレスへの書込みが正常に行われた場合は、前記第１論理アドレスが前記第２物理アドレスに対応することを示す論理アドレス管理テーブルを作成することを特徴とする請求項１乃至５何れか一項に記載の情報処理方法。
【請求項７】
メモリと、
第１論理アドレスが付されたデータの前記メモリへの書込み要求を行う第１演算処理ノードと、
前記書込み要求を受け、前記メモリの第１物理アドレスに対して前記データの書込みを行い、前記データの書込みが正常に行われなかったことを示す第１フラグを生成し、前記第１フラグを前記第１論理アドレスに対応付けて記憶するメモリコントローラと
を有することを特徴とする情報処理装置。
【請求項８】
前記メモリコントローラは、前記第１論理アドレスを指定した読出し要求を第２演算処理ノードから受け、第１論理アドレスに対応付けられた前記第１フラグを認識し、前記読出し要求に対する読出し処理を行わずに、前記データの書込みが正常に行われなかったことを示す第１通知を前記第２演算処理ノードに通知することを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記メモリコントローラは、前記データの書込みが正常に行われなかったことを示す第２通知を、前記第１演算処理ノードに通知し、
前記第１演算処理ノードによる前記データの再度の書込みによって前記データが正常に前記メモリに書込まれた場合、前記メモリコントローラは前記第１フラグを消去し、前記第１データが正常に書込まれたことを示す第３通知を前記第２演算処理ノードに通知することを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記メモリはフラッシュメモリであることを特徴とする請求項７乃至９何れか一項に記載の情報処理装置。
【請求項１１】
前記メモリコントローラは、前記第１物理アドレスにデバイス不良があることを示す第２フラグを生成することを特徴とする請求項７乃至１０何れか一項に記載の情報処理装置。
【請求項１２】
前記データの前記第１物理アドレスへの書き込みが失敗した後に、前記メモリコントローラは、前記第１データを前記メモリの第２物理アドレスに書込みを行い、前記第２物理アドレスへの書込みが正常に行われた場合は、前記第１論理アドレスが前記第２物理アドレスに対応することを示す論理アドレス管理テーブルを作成することを特徴とする請求項７乃至１１何れか一項に記載の情報処理装置。
【請求項１３】
第１演算処理ノードから受ける第１メモリへのデータ書込み要求を処理するメモリコントローラであって、
前記メモリコントローラは、
プロセッサと、第２メモリとを有し、
前記プロセッサは、第１論理アドレスが付されたデータを前記第１メモリに書込むよう、前記第１演算処理ノードから要求を受け、前記第１メモリの第１物理アドレスに対して前記データの書込みを行い、前記データの書込みが正常に行われなかったことを示す第１フラグを、前記第１論理アドレスに対応付けて前記第２メモリへ格納することを特徴とするメモリコントローラ。
【請求項１４】
前記プロセッサは、第２演算処理ノードから、前記第１論理アドレスを指定した読出し要求を受けた場合、前記第１フラグを前記第２メモリから読出し、前記読出し要求に対する読出し処理を行わずに、前記データの書込みが正常に行われなかったことを示す第１通知を前記第２演算処理ノードに通知することを特徴とする請求項１３に記載のメモリコントローラ。
【請求項１５】
前記プロセッサは、前記データの書込みが正常に行われなかったことを示す第２通知を、前記第１演算処理ノードに通知し、前記第１演算処理ノードによる前記データの再度の書込みによって前記データが正常に前記第１メモリに書込まれた場合、前記プロセッサは前記第１フラグを消去し、前記データが正常に書込まれたことを示す第３通知を前記第２演算処理ノードに通知することを特徴とする請求項１４に記載のメモリコントローラ。
【請求項１６】
前記第１メモリはフラッシュメモリであることを特徴とする請求項１３乃至１５何れか一項に記載のメモリコントローラ。
【請求項１７】
前記プロセッサは、前記第１物理アドレスにデバイス不良があることを示す第２フラグを生成することを特徴とする請求項１３乃至１６何れか一項に記載のメモリコントローラ。
【請求項１８】
前記データの前記第１物理アドレスへの書き込みが失敗した後に、前記プロセッサは、前記第１メモリの第２物理アドレスに対して前記データの書込みを行い、前記第２物理アドレスへの書込みが正常に行われた場合は、前記第１論理アドレスが前記第２物理アドレスに対応することを示す変換テーブルを作成することを特徴とする請求項１３乃至１７何れか一項に記載のメモリコントロ−ラ。
【請求項１９】
第１論理アドレスが付されたデータ書込み要求を第１演算処理ノードから受けるメモリコントローラによって書込み制御がなされるメモリであって、
前記メモリは、
記憶素子と、
前記記憶素子に正常に前記データが書込まれなかったことを記憶するステータスレジスタと
を有し、前記ステータスレジスタは、前記メモリコントローラに、前記データが正常に書込まれなかったことを示す第１フラグを前記第１論理アドレスに対応付けて格納させる
ことを特徴とするメモリ。
【請求項２０】
前記メモリはフラッシュメモリであることを特徴とする請求項１９に記載のメモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本願開示は、情報処理方法、情報処理装置メモリコントローラ及びメモリに関する。
【背景技術】
【０００２】
情報処理装置は、データ処理を行う演算処理ノードと、バスを介して演算処理ノードに接続され、データを格納するメモリとを有する。演算処理ノードは、メモリに格納されているデータを読み出して必要な演算処理を行う。また、演算処理ノードは、演算処理を行った結果のデータをメモリに格納する。情報処理装置は複数の演算処理ノードを有する場合がある。複数の演算処理ノードのうちの第１演算処理ノードがメモリの特定領域にデータを格納し、複数の演算処理ノードのうちの別の第２演算処理ノードが、第１演算処理ノードが格納したデータをメモリから読出して処理を行う場合もある。【０００３】
データを格納するメモリとしては、例えば不揮発メモリの一種であるフラッシュメモリが知られている。フラッシュメモリは、電荷蓄積膜に注入された電荷を保持することでデータを記憶する。演算処理ノードがメモリへの書込み要求を行い、メモリへのデータ書込み処理が行われても、データが正しくメモリに書込まれないことがある。例えばメモリが上記のフラッシュメモリである場合、電荷蓄積膜への電荷注入量が所定量に達しない等の書込みエラーが発生し得る。データの書込みエラーが発生すると、メモリに誤データが格納された状態となる。【０００４】
フラッシュメモリへのデータの書込みにおいて、特定のアドレスへの書込みが失敗した場合に、別のアドレスに同一データの書込みを行う先行技術が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−１３３６７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
メモリへのデータ書込みが失敗した場合、その後演算処理ノードがメモリへ書込んだデータの読出し要求を行うと、メモリに格納されている誤データが読出されることになる。読出された誤データに基づく処理が演算処理ノードにて行われると情報処理装置の誤動作の原因となる。この問題は、情報処理装置が複数の演算処理ノードを有する場合であれば、複数の演算処理ノードのうちの第１演算処理ノードがデータを書込んだ後に、第１演算処理ノード自身がデータを読み出す場合と、第１演算処理ノードとは異なる第２演算処理ノードがデータを読み出す場合のどちらの場合にも生じ得る。【０００７】
先行技術は、あるアドレスへのデータの書込みが失敗した場合に、書込み対象アドレスを変更して再度の書込みを行うことによって、正常な書込みが行われることを期待するものである。しかし先行技術には、別のアドレスへの変更を行っても正常に書込みが行われずに結局はメモリに誤データが書込まれた状態となった場合に、誤データの読出しを防止する手段については何ら開示がなされていない。【０００８】
本願開示の技術は、メモリへのデータの書込みに失敗した場合でも、誤データの読出し及び誤データに基づく情報処理装置の誤動作を抑制することができる方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
論理アドレスが付されたデータを、メモリの所定の物理アドレスに対して書込み、データの書込みが正常に行われなかった場合には、書込みが正常に行われなかったことを示すフラグを生成して論理アドレスに対応付けて記憶する。
【発明の効果】
【００１０】
メモリへの書込みが正常に行われなかったことを示すフラグを論理アドレスに対応付けて設けることで、特定の論理アドレスが付されたデータに誤りがあることを記録として残すことができる。それにより、演算処理ノードが誤データを読出すことを防止できる。また読出された誤データに基づく情報処理が行われることを抑制することができる。
【図面の簡単な説明】
【００１１】
【図１】実施例における情報処理装置のハ−ドウェア構成を示す図である。
【図２】実施例におけるフラッシュメモリのページについて説明する図である。
【図３】実施例における論理アドレス管理テーブル及び物理アドレス管理テーブルを示す図である。
【図４】実施例における論理アドレス管理テーブル及び物理アドレス管理テーブルを示す図である。
【図５】実施例における演算処理ノードが有するプロセッサの機能ブロック図である。
【図６】実施例における要求の記述フォーマットを示す図である。
【図７】実施例におけるメモリに格納される情報を示す図である。
【図８】実施例におけるメモリコントローラが有するプロセッサの機能ブロック図である。
【図９】実施例におけるフラッシュメモリの回路ブロック図である。
【図１０】実施例における演算処理ノードとメモリコントローラとメモリとの間での処理の流れを示す図である。
【図１１】実施例における演算処理ノードとメモリコントローラとメモリとの間での処理の流れを示す図である。
【図１２】実施例におけるメモリコントローラが有するプロセッサの書込み処理フローチャート図である。
【図１３】実施例におけるメモリコントローラが有するプロセッサの読出し処理フローチャート図である。
【図１４】第２実施例における論理アドレス管理テーブルを示す図である。
【図１５】第２実施例における演算処理ノードとメモリコントローラとメモリとの間での処理の流れを示す図である。
【図１６】第２実施例におけるメモリコントローラが有するプロセッサの書込み処理フローチャート図である。
【図１７】第３実施例における論理アドレス管理テーブルを示す図である。
【図１８】第３実施例におけるメモリコントローラが有するプロセッサの書込み処理フローチャート図である。
【図１９】第４実施例における論理アドレス管理テーブルを示す図である。
【図２０】第４実施例における演算処理ノードとメモリコントローラとメモリとの間での処理の流れを示す図である。
【図２１】第４実施例におけるメモリコントローラが有するプロセッサの読出し処理フローチャート図である。
【図２２】第４実施例におけるメモリコントローラが有するプロセッサの書込み処理フローチャート図である。
【発明を実施するための形態】
【００１２】
＜第１実施例＞
図１は、実施例における情報処理装置１のハードウェア構成図である。情報処理装置１は、第１演算処理ノード１００、第２演算処理ノード２００、メモリコントローラ３００、フラッシュメモリ４００、バス５００を有する。第１演算処理ノード１００は、プロセッサ１１０と、メモリ１３０と、ネットワークインターフェースカード（以下、ＮＩＣ）１５０を有する。プロセッサ１１０とメモリ１３０は互いに接続され、プロセッサ１１０はメモリ１３０にアクセスすることができる。第２演算処理ノード２００は、第１演算処理ノード１００と同様に、プロセッサ２１０と、メモリ２３０と、ＮＩＣ２５０を有する。プロセッサ２１０とメモリ２３０は互いに接続され、プロセッサ２１０はメモリ２３０にアクセスすることができる。メモリコントローラ３００は、プロセッサ３１０と、メモリ３３０と、ＮＩＣ３５０を有する。プロセッサ３１０とメモリ３３０は互いに接続され、プロセッサ３１０はメモリ３３０にアクセスすることができる。プロセッサ１１０、２１０、３１０は例えばＣＰＵチップであり、メモリ１３０、２３０、３３０は例えばＤＲＡＭチップである。第１演算処理ノード１００、第２演算処理ノード２００及びメモリコントローラ３００はバス５００によって相互に接続される。フラッシュメモリ４００はメモリコントローラ３００を介してバス５００に接続される。
【００１３】
第１演算処理ノード１００及び第２演算処理ノード２００は、メモリコントローラ３００を介してフラッシュメモリ４００にデータを書き込むことができる。また第１演算処理ノード１００及び第２演算処理ノード２００はメモリコントローラ３００を介してフラッシュメモリ４００からデータを読み出すことができる。また第１演算処理ノード１００がフラッシュメモリ４００に書込んだデータを第２演算処理ノード２００が読み出して演算処理を行うこともできる。本実施例は、メモリコントローラ３００を介してフラッシュメモリ４００にアクセス可能な演算処理ノードとして、第１演算処理ノード１００及び第２演算処理ノード２００の２つの演算処理ノードを含む情報処理装置１を示した。しかし、情報処理装置１に含まれる演算処理ノードの数はこれに限定されるものではなく、情報処理装置１は少なくとも１つの演算処理ノードを含むものであればよい。
【００１４】
図２は、実施例におけるフラッシュメモリ４００の、書込み、読出し、消去を行うことができる領域の単位について説明する図である。フラッシュメモリ４００は、複数の記憶素子を含むページと呼ばれる単位で、データの書込み及び読出しが行われる。またフラッシュメモリ４００は、複数のページを含んでブロックと呼ばれる単位で、データの消去が行われる。図２において、Ｐ＃００００、Ｐ＃０００１、・・・・Ｐ＃００ＭＮの各々が１つのページに相当する。また、Ｐ＃００００〜Ｐ＃０００Ｎが１つのブロックを構成する。
【００１５】
フラッシュメモリ４００のある特定のページにデータの書込みを行う際、そのページに既にデータが格納されている場合は、格納されているデータに対して新しいデータを上書きすることができない。これは、フラッシュメモリ４００の記憶素子が、ゲート電極とチャネル領域との間の電荷保持膜に対して電荷注入又は電荷引抜きを行うことによってデータの書込むという原理に起因するものである。そのため、あるデータを例えばページＰ＃００００に書込もうとする場合は、まずページＰ＃００００にデータが既に格納されているか否かを確認する必要がある。ページＰ＃００００に未だデータが格納されていない場合は、ページＰ＃００００にデータ書込みを行う。ページＰ＃００００に既にデータが格納されている場合は、他の空きページを抽出してデータ書込みを行う。また、ページＰ＃００００に既にデータが格納されている場合であって、既に格納されているデータを新しい書込みデータによって更新する場合は、以下の手順で処理を行う。
【００１６】
まず新たに書込むデータを準備する。そしてページＰ＃００００に格納されているデータを読み出す。次に、読み出されたデータと新たに書込むデータとをマージして更新データを作成する。そして、データが未だ書き込まれていないページを検索する。データが書き込まれていないページとして例えばページＰ＃０００１が選定された場合、更新データをページＰ＃０００１に書き込む。
【００１７】
次に、本願明細書にて用いる論理アドレス及び物理アドレスと、両者の対応関係について説明する。図１に示す情報処理装置１において、第１演算処理ノード１００がフラッシュメモリ４００に対してデータＸの書込みを行う場合を例として説明する。第１演算処理ノード１００は、メモリコントローラ３００に対して書込み要求を行い、書込みデータＸを送信する。この際、第１演算処理ノード１００は、第１演算処理ノード１００及び第２演算処理ノード２００により認識可能な識別子をデータに付す。この識別子を論理アドレスと呼ぶ。ここでは論理アドレスをＬ＃００ｘｘとして説明する。メモリコントローラ３００は、受信したデータＸをフラッシュメモリ４００の何れかのページに格納する。例えばページＰ＃００００に未だデータが書き込まれていない場合は、データＸをページＰ＃００００に書込むことが可能である。一方、ページＰ＃００００に既にデータが書き込まれている場合は、別の空きページ、例えばＰ＃０００１にデータＸが書込まれる。ページＰ＃０００１にも既にデータが書き込まれている場合は、更に別のページにデータＸが書き込まれる。つまり、データＸがフラッシュメモリ４００内のどのページに格納されるかは、フラッシュメモリ４００のその時点でのページの空き状況によって相違することになる。ここで、実際にデータＸが書き込まれるページＰ＃００００やＰ＃０００１のことを物理アドレスと呼ぶ。データＸがフラッシュメモリ４００の何れかのページに書き込まれた後、第１演算処理ノード１００又は第２演算処理ノード２００がデータＸを読み出すためにフラッシュメモリ４００にアクセスする。この場合、第１演算処理ノード１００又は第２演算処理ノード２００は、格納する際に用いた論理アドレスＬ＃００ｘｘを指定して読出し要求を行う。メモリコントローラ３００が要求に正しく応えるためには、論理アドレスＬ＃００ｘｘで指定されたデータＸの書込みが、フラッシュメモリ４００内のどのページに対してなされたのかを記憶しておく必要がある。本明細書においては、論理アドレスがどの物理アドレスに対応するのかを記録したテーブルを、論理アドレス管理テーブルと呼ぶ。
【００１８】
図３（Ａ）は、実施例における論理アドレス管理テーブルの例を示す図である。図３（Ａ）に示す論理アドレス管理テーブルは、論理アドレスと、論理アドレスに対応する物理アドレスと、Ｌ−Ｖａｌｉｄ値と、Ｌ−Ｅｒｒｏｒ値とを含む。
【００１９】
Ｌ−Ｖａｌｉｄ値は、論理アドレスが付されたデータが、対応する物理アドレスに格納されているか否かを示すフラグである。図３（Ａ）において論理アドレスＬ＃０００３に対応するＬ−Ｖａｌｉｄ値である「１」は、論理アドレスＬ＃０００３が付されたデータが、対応する物理アドレスＰ＃０００１のページに格納されていることを示す。図３（Ａ）において論理アドレスＬ＃００００に対応するＬ−Ｖａｌｉｄ値は「０」である。この場合、論理アドレスＬ＃００００が付されたデータは、物理アドレスＰ＃００１１のページには格納されていないことを示す。つまり、論理アドレス管理テーブルにおいては、論理アドレスＬ＃００００と物理アドレスＰ＃００１１とが対応付けられているように見えるが、実際に論理アドレスＬ＃００００が付されたデータが物理アドレスＰ＃００１１のページに格納されている訳ではない。
【００２０】
Ｌ−Ｅｒｒｏｒ値は、論理アドレスが付されたデータが、フラッシュメモリ４００に正しく書き込まれたか否かを示すフラグである。図３（Ａ）に示す例においては、Ｌ−Ｅｒｒｏｒ値が「０」であれば、論理アドレスで特定されるデータがフラッシュメモリ４００に正しく格納されたことを意味する。逆にＬ−Ｅｒｒｏｒ値が「１」であれば、論理アドレスで特定されるデータがフラッシュメモリ４００に正しく格納されなかった、すなわち書込まれたデータにエラーが含まれることを意味する。
【００２１】
論理アドレス管理テーブルとは別に、フラッシュメモリ４００の各物理アドレスのページが何等かのデータを格納している状態であるか、又はデータが消去された状態であるか、を記録しておく必要がある。各物理アドレスのページの状態が記録されたテーブルを、物理アドレス管理テーブルと呼ぶ。図３（Ｂ）は、実施例における物理アドレス管理テーブルの例を示す図である。図３（Ｂ）に示す物理アドレス管理テーブルは、物理アドレスと、Ｐ−Ｖａｌｉｄ値と、Ｐ−Ｅｒｒｏｒ値を含む。
【００２２】
Ｐ−Ｖａｌｉｄ値は、対応する物理アドレスのページに何等かのデータが書き込まれているか否かを示すフラグである。例えば物理アドレスＰ＃００１１のページに対応するＰ−Ｖａｌｉｄ値である「０」は、物理アドレスＰ＃００１１のページにはデータが書き込まれていないことを意味する。また物理アドレスＰ＃０００１のページに対応するＰ−Ｖａｌｉｄ値である「１」は、物理アドレスＰ＃０００１のページに何等かのデータが書き込まれていることを意味する。
【００２３】
Ｐ−Ｅｒｒｏｒ値は、対応する物理アドレスのページの記憶素子に何等かのデバイス不良が生じていることを示すフラグである。記憶素子のデバイス不良とは、例えばフラッシュメモリ４００の電荷保持膜の電荷保持能力が劣化している場合等である。図３（Ｂ）において、物理アドレスＰ＃００１４のページに対応するＰ−Ｅｒｒｏｒの値である「１」は、物理アドレスＰ＃００１４のページ含まれる記憶素子の少なくとも一部に何等かの不具合があることを意味する。このようにＰ−Ｅｒｒｏｒ値を記録することにより、このページには何等かの物理欠陥があることを認識することができ、今後このページへの書込みは行わないようにする等の制御が可能となる。
【００２４】
ここで、論理アドレス管理テーブルに記述されるＬ−Ｅｒｒｏｒ値と、物理アドレス管理テーブルに記述されるＰ−Ｅｒｒｏｒ値との技術的意義の相違を説明する。Ｐ−Ｅｒｒｏｒ値は、物理アドレスに対応付けられる識別子であり、対応する物理アドレスのページの記憶素子に何等かの不具合が生じ、当該物理アドレスのページにはデータ書込みを正しく行えないことを示すものである。これに対し、Ｌ−Ｅｒｒｏｒ値は、論理アドレスに対応付けられる識別子であり、対応する論理アドレスが付されたデータの書込みが正しく行われなかったこと示すものである。論理アドレスと物理アドレスの対応関係は一定ではなく、例えば後述するガベージコレクション等によって変更され得るものである。そのため、物理アドレスに対応付けられたＰ−Ｅｒｒｏｒ値では、ある論理アドレスが付されたデータの書込みが正しく行われなかったことを継続して記録することができない。これに対してＬ−Ｅｒｒｏｒ値は、論理アドレスに対応して付された識別子である。そのため、論理アドレスと物理アドレスの対応関係が変更されても、ある論理アドレスが付されたデータの書込みが正しく行われなかったことを継続して記録することができる。このＬ−Ｅｒｒｏｒ値を用いることで、情報処理装置１全体のデータ処理の効率化、または情報処理の誤動作を抑制することができる。本明細ではＬ−Ｅｒｒｏｒを書込みエラーフラグとも呼ぶ。
【００２５】
次に、データ書込みを行う際の、論理アドレス管理テーブルと物理アドレス管理テーブルの用い方及びそれぞれのテーブルの内容の更新について説明する。データ書込み要求を受けた時点では、論理アドレス管理テーブルと物理アドレス管理テーブルはそれぞれ図３（Ａ）及び図３（Ｂ）に示す内容であったとする。第１の例として、第１演算処理ノード１００が、論理アドレスＬ＃００００を付したデータＡの書込み要求を行う例を説明する。図３（Ａ）の論理アドレス管理テーブルによれば、論理アドレスＬ＃００００のＬ−Ｖａｌｉｄ値は「０」であるので、今回の書込みはデータの更新ではなく新規データの書込みであることが分かる。また論理アドレスＬ＃００００は物理アドレスＰ＃００１１に対応付けされていることが分かる。そして図３（Ｂ）の物理アドレス管理テーブルによれば、物理アドレスＰ＃００１１のＰ−Ｖａｌｉｄ値は「０」である。つまり、論理アドレスＬ＃００００に対応付けられている物理アドレスＰ＃００１１のページにはデータが書き込まれていないことが分かる。この場合は、データＡは物理アドレスＰ＃００１１のページに書込まれる。そして論理アドレスＬ＃００００に対応するＬ−Ｖａｌｉｄの欄に「１」が書き込まれる。また物理アドレスＰ＃００１１に対応するＰ−Ｖａｌｉｄの欄に「１」が書き込まれる。
【００２６】
第２の例として、第１演算処理ノード１００が、論理アドレスＬ＃０００２が付されたデータＢの書込み要求を行う例を説明する。図３（Ａ）の論理アドレス管理テーブルによれば、論理アドレスＬ＃０００２のＬ−Ｖａｌｉｄ値は「０」であるので、今回の書込みはデータの更新ではなく新規データの書込みであることが分かる。また論理アドレスＬ＃０００２は物理アドレスＰ＃０００６に対応付けされていることが分かる。そして図３（Ｂ）の物理アドレス管理テーブルによれば、物理アドレスＰ＃０００６のＰ−Ｖａｌｉｄ値は「１」であるので、物理アドレスＰ＃０００６のページには何等かのデータが既に書き込まれていることが分かる。この場合は、未だデータが書き込まれていない別のページ、例えば物理アドレスＰ＃００１１のページを書込みページとして特定する。そして物理アドレスＰ＃００１１にデータＢを書込み、論理アドレス管理テーブルにおいて、論理アドレスＬ＃０００２に対応する物理アドレスをＰ＃０００６からＰ＃００１１に書き換える。また、論理アドレス管理テーブルの、論理アドレスＬ＃０００２に対応するＬ−Ｖａｌｉｄ値を「１」とする。更に物理アドレス管理テーブルの、物理アドレスＰ＃００１１に対応するＰ−Ｖａｌｉｄ値を「１」とする。
【００２７】
第３の例として、第１演算処理ノード１００が論理アドレスＬ＃０００３を付したデータＣの書込み要求を行う例を説明する。図３（Ａ）の論理アドレス管理テーブルによれば、論理アドレスＬ＃０００３のＬ−Ｖａｌｉｄ値は「１」であるので、今回の書込みは新規データの書込みではなくデータの更新であることが分かる。また論理アドレスＬ＃０００３は物理アドレスＰ＃０００１に対応付けされていることが分かる。この場合は、物理アドレスＰ＃０００１に格納されているデータを読み出してデータＣとマージし、マージしたデータを別のページに書き込む。別のページとして例えば物理アドレスＰ＃００１１のページにマージされたデータが書込まれる。そして論理アドレス管理テーブルにおいて、論理アドレスＬ＃０００３に対応する物理アドレスをＰ＃０００１からＰ＃００１１に書き換える。更に物理アドレス管理テーブルにおいて、物理アドレスＰ＃００１１に対応するＰ−Ｖａｌｉｄ値を「１」に書き替える。尚、この第３の例において、更新前のデータが格納されていた物理アドレスＰ＃０００１は、更新前のデータを保持したまま論理アドレスＬ＃０００３との対応付けが断たれ、第１演算処理ノード１００又は第２演算処理ノード２００からアクセスできないページとなる。これは実際に使用し得るメモリ領域が減少したことを意味する。このようにアクセスが行えなくなった領域に対してはガベージコレクションを行うことで、再度書込み及び読出しのアクセスが行える領域とすることができる。ガベージコレクションとは、消去したいブロック内にある有効データが書き込まれたページを他のブロックに移動し、消去したいブロックを有効データの書き込まれたページを含まない状態にして消去し、書き込み可能な領域を増やす作業の事をいう。
【００２８】
第４の例として、第１演算処理ノード１００が論理アドレスＬ＃０００１を付したデータＤの書込み要求を行う例を説明する。図３（Ａ）の論理アドレス管理テーブルによれば、論理アドレスＬ＃０００１のＬ−Ｖａｌｉｄ値は「０」であるので、今回の書込みはデータの更新ではなく新規データの書込みであることが分かる。また論理アドレスＬ＃０００１は物理アドレスＰ＃００２３に対応付けされていることが分かる。そして図３（Ｂ）の物理アドレス管理テーブルによれば、物理アドレスＰ＃００２３のＰ−Ｖａｌｉｄ値は「０」である。つまり、論理アドレスＬ＃０００１に対応付けられている物理アドレスＰ＃００２３にはデータが書込まれていないことが分かる。この場合は、データＤは、物理アドレスＰ＃００２３に書込まれる。この時、データ書込みが正常に行われず、データＤが正しく物理アドレスＰ＃００２３のページに書込まれなかったものとする。この場合は、以下の作業が行われる。
【００２９】
まず物理アドレスＰ＃００２３にはデータ書込み自体は行われたため、このページが消去状態ではないことを示すために、Ｐ−Ｖａｌｉｄ値を「１」とする。また物理アドレスＰ＃００２３に何等かのデバイス不良がある可能性があることを示すために、Ｐ−Ｅｒｒｏｒ値を「１」とする。また、論理アドレスＬ＃０００１が物理アドレス００２３に対応付けられていることを示すために、Ｌ−Ｖａｌｉｄ値を「１」とする。更に、論理アドレスＬ＃０００１が付されたデータが、フラッシュメモリ４００においてエラーを有する状態で格納されていることを示すために、Ｌ−Ｅｒｒｏｒ値を「１」とする。このような書き替えを行った後の論理アドレス管理テーブルと物理アドレス管理テーブルの内容を図４（Ａ）及び図４（Ｂ）に示す。
【００３０】
以上のようにして、論理アドレス管理テーブルと物理アドレス管理テーブルを用いたデータの書込み、及び論理アドレス管理テーブルと物理アドレス管理テーブルの内容の書き換え行われる。
【００３１】
図５は、実施例における第１演算処理ノード１００が有するプロセッサ１１０の機能ブロック図である。プロセッサ１１０は、メモリ１３０、フラッシュメモリ４００又は他の演算処理ノードのメモリに格納された所定のプログラムによる処理を実行することにより、図５に示す各ブロックの機能を実現する。プロセッサ１１０は、メモリコントローラ３００に対してフラッシュメモリ４００へのアクセス要求を発行する要求発行部１１１、メモリコントローラ３００や第２演算処理ノード２００との間でのデータの送受信や各種通知の送受信を行う送受信部１１２、フラッシュメモリ４００へのデータ書込みに失敗した場合の回復処理を行う回復処理部１１３、メモリ１３０の制御を行うメモリ制御部１１４として機能する。但し、図５に示される機能の全てがプロセッサ１１０で実現される必要はない。一部の機能がプロセッサ１１０以外のプロセッサ又は専用の集積回路にて実現されてもよい。第２演算処理ノード２００が有するプロセッサ２１０は、メモリ２３０、フラッシュメモリ４００又は他の演算処理ノードのメモリに格納された所定のプログラムによる処理を実行することにより、プロセッサ１１０と同様の機能を実現する。
【００３２】
図６は、本実施例における第１演算処理ノード１００又は第２演算処理ノード２００から発行される要求の記述フォーマットの例を示す図である。要求の記述フォーマットには、要求の発行元を示す「要求発行元ＩＤ」、要求の同一性を識別するための「リクエストＩＤ」、要求内容を示す「コマンド」、要求の送信先を示す「ノードアドレス」、データの論理アドレスを指定する「論理アドレス」が含まれる。
【００３３】
図７は、実施例におけるメモリコントローラ３００の有するメモリ３３０に含まれる情報を示す図である。メモリ３３０には、論理アドレス管理テーブル３３１と物理アドレス管理テーブル３３２が格納される。また、メモリ３３０はフラッシュメモリ４００に書込まれるデータを一時格納するデータバッファとしても用いられる。
【００３４】
図８は、実施例におけるメモリコントローラ３００の有するプロセッサ３１０の機能ブロック図である。プロセッサ３１０は、メモリ３３０、フラッシュメモリ４００又は他の演算処理ノードのメモリに格納された所定のプログラムによる処理を実行することにより、図８に示す各ブロックの機能を実現する。プロセッサ３１０は、論理アドレス管理テーブル３３１及び物理アドレス管理テーブル３３２の解読や変更を行うテーブル管理部３１１、メモリコントローラ３００が要求に対する処理を行っている間は他の要求のアクセスを制限するロック制御部３１２、第１演算処理ノード１００及び第２演算処理ノード２００に各種の通知を行う通知部３１３、メモリ３３０の制御を行うメモリ制御部３１４、フラッシュメモリ４００からデータを読出すデータ読出し部３１５、フラッシュメモリ４００にデータを書き込むデータ書込み部３１６、フラッシュメモリ４００への書込みが正しく完了したかどうかを確認する確認部３１７、フラッシュメモリ４００への再書込み制御を行う再書込み部３１８、データの送信を行うデータ送信部３１９として機能する。但し、図８に示される機能の全てがプロセッサ３１０により実現される必要はない。一部の機能がプロセッサ３１０以外のプロセッサ又は専用の集積回路にて実現されてもよい。
【００３５】
図９は、実施例におけるフラッシュメモリ４００の回路ブロック図である。フラッシュメモリ４００は、記憶素子が配置されたメモリセルアレイ４１０と、メモリセルアレイ４１０に含まれる記憶素子に対してデータの書込み及びデータの読出しを行う書込み読出し回路４２０と、書込みデータを格納する書込みバッファ４３０と、コンパレータ４４０と、ステータスレジスタ４５０とを有する。またフラッシュメモリ４００は、必須ではないがエラー訂正回路４６０を有してもよい。本実施例においてエラー訂正回路を用いる場合、エラー訂正回路はフラッシュメモリ４００に搭載してもよく、またメモリコントローラ３００に搭載してもよい。
【００３６】
フラッシュメモリ４００にデータの書込みを行う場合は、まず書込みバッファ４３０に書込みデータを保持させる。そして書込み読出し回路４２０が、書込みバッファ４３０内のデータに基づき、メモリセルアレイ４１０内の記憶素子に書込み処理を行う。その後、記憶素子に書込まれたデータと書込みバッファ４３０に保持されたデータとをコンパレータ４４０が比較する。コンパレータ４４０による比較の結果、両データが一致した場合は、正常に書込みが行われたことを示す情報を、ステータスレジスタ４５０に記録する。また、記憶素子に書込まれたデータと書込みバッファ４３０に保持されたデータとが一致しない場合は、正常に書込みが行われなかったことを示す情報をステータスレジスタ４５０に記録する。フラッシュメモリ４００がエラー訂正回路４６０を有する場合は、書込みデータとともにエラー訂正用付加ビットをメモリセルアレイ４１０に書込む。書込んだデータにエラーがあっても、エラー訂正用付加ビットを用いてエラーが訂正可能であればエラーを訂正したデータが読み出される。本実施例においては、書込みデータにエラーがある場合であっても、エラー訂正回路４６０にて訂正可能なエラーである場合はステータスレジスタ４５０に正常に書込みが完了したことを示す情報を書き込んでもよい。この場合は、エラー訂正回路４６０にて訂正を行うことができない書込みエラーがある場合には、ステータスレジスタ４５０に正常に書込みが行われなかったことを示す情報が書き込まれる。もしくは、書込みデータにエラーがある場合であれば、エラー訂正回路４６０にて訂正可能なエラーであっても、ステータスレジスタ４５０に正常に書込みが行われなかったことを示す情報を書き込んでもよい。本明細書において「正常に書込みが行われなかった」とは、「エラー訂正が可能か不能かを問わず、書込みデータに何等かのエラーが存在する」という場合と、「エラー訂正が不能なエラーが書込みデータにエラーが存在する」という場合の、いずれの場合も含むものとして用いる。
【００３７】
図１０は、第１演算処理ノード１００、第２演算処理ノード２００と、メモリコントローラ３００と、フラッシュメモリ４００との間での処理の流れを例示する図である。まず処理６０１において、第１演算処理ノード１００がメモリコントローラ３００にデータ書込み要求を行う。また処理６０２において、第１演算処理ノード１００は、書込みデータをメモリコントローラ３００に送信する。書込みデータには論理アドレスＬ＃００ｘｘが付されているものとする。処理６０３において、ＮＩＣ３５０は、書込み要求をプロセッサ３１０に転送する。また処理６０４おいて、ＮＩＣ３５０は、書込みデータをメモリ３３０に一時格納する。また処理６０５において、ＮＩＣ３５０は、第１演算処理ノード１００に対して要求受領通知を通知する。要求受領通知は本実施例において必須ではないが、フラッシュメモリ４００への実際の書込みが終了するよりも先に要求受領通知を送信することで、第１演算処理ノード１００が他の作業を行うことを可能とする。フラッシュメモリ４００へのデータの書込みは、ＤＲＡＭやＳＲＡＭへのデータの書込みに対して時間を要するため、このような要求受領通知は第１演算処理ノード１００の処理効率を向上させるために有効である。処理６０６においてプロセッサ３１０は、受信したデータ書込み要求が、既にフラッシュメモリ４００に格納されているデータの更新である場合は、フラッシュメモリ４００から既に格納されているデータの読出しを行う。処理６０７においてフラッシュメモリ４００からデータが読み出される。処理６０８において、メモリ３３０に格納されていた書込みデータとフラッシュメモリ４００から読み出されたデータがマージされ、フラッシュメモリ４００に書込むデータが作成される。処理６０９においてプロセッサ３１０は、フラッシュメモリ４００にデータを書込む。処理６１０においてプロセッサ３１０は、フラッシュメモリ４００に対して書込みが正常に終了したか否かの完了確認を行う。処理６１１においてフラッシュメモリ４００は、完了確認に対応して、ステータスレジスタ４５０の内容をプロセッサ３１０に通知する。図１０に示す例では、データ書込みが正常に終了したことを示す正常終了通知がプロセッサ３１０に送られ、プロセッサ３１０は書込み処理を終了させる。
【００３８】
また処理６１２において、第２演算処理ノード２００がメモリコントローラ３００に対して、前述の第１演算処理ノード１００が処理６０１で書き込み要求したものと同じ論理アドレスＬ＃００ｘｘを指定した読出し要求を送信する。処理６１３において、ＮＩＣ３５０は、読出し要求をプロセッサ３１０に転送する。プロセッサ３１０は、第１演算処理ノード１００から受けた書込み要求に対する処理が完了するまで、第２演算処理ノード２００から受けた読出し要求に対する処理を保留する。書込み要求に対する処理が終了した後、処理６１４においてプロセッサ３１０はフラッシュメモリ４００に対して読出し処理を行う。処理６１５においてプロセッサ３１０はフラッシュメモリ４００からデータを受信し、処理６１６及び処理６１７において、プロセッサ３１０はＮＩＣ３５０を介して第２演算処理ノード２００にデータを送信する。
【００３９】
図１０では、論理アドレスＬ＃００ｘｘに対応する物理アドレスに、既にデータが書き込まれていた場合の処理を示した。しかし論理アドレスＬ＃００ｘｘに対応する物理アドレスにデータが書き込まれていない場合は、処理６０６及び処理６０７は行われず、書込みデータを直接対応する物理アドレスに書込む。また、図１０では、第１演算処理ノード１００から受けた書込み要求に対する処理の最中に第２演算処理ノード２００から読出し要求を受けた例を示している。しかし、第２演算処理ノード２００からの読出し要求は、第１演算処理ノード１００から受けた書込み要求に対する処理が完了した後にメモリコントローラ３００が受信してもよい。
【００４０】
図１１は、第１演算処理ノード１００、第２演算処理ノード２００と、メモリコントローラ３００と、フラッシュメモリ４００の間での処理の流れの別の例を示す図である。図１０に示す処理と同じ内容の処理については同一の参照符号を付し、説明を省略する。
【００４１】
図１１は、フラッシュメモリ４００へのデータ書込みにおいて書込みエラーが発生した場合について例示する。処理７００において、フラッシュメモリ４００が、異常終了通知をプロセッサ３１０に通知する。ここでプロセッサ３１０は、再書込み処理を行ってもよい。再書込み処理とは、書込みが正常に終了しなかった場合に同一データを再度フラッシュメモリ４００に書込む処理である。再書込み処理の詳細は後述する。再書込み処理を行っても書込みが正常に終了しない場合は、プロセッサ３１０はフラッシュメモリ４００から、再度異常終了通知を受信する。
【００４２】
フラッシュメモリ４００から異常終了通知を受けたプロセッサ３１０は、処理７０１及び処理７０２において書込みエラー通知を、ＮＩＣ３５０を介して書込み要求の発行元である第１演算処理ノード１００に通知する。またプロセッサ３１０は、フラッシュメモリ４００から異常終了通知を受けると、論理アドレス管理テーブル３３１のＬ‐Ｅｒｒｏｒ値を「１」とすることにより書込みエラーフラグを発生させる。そして処理７０３及び処理７０４において、プロセッサ３１０はＮＩＣ３５０を介して、第２演算処理ノード２００から受けた読出し要求に対して要求不受理通知を通知する。第２演算処理ノード２００から受けた読出し要求に対してデータ読出しは行わない。これにより、第２演算処理ノード２００に誤データが送信されることを防止することができる。
【００４３】
ここで、プロセッサ３１０が行う再書込み処理について説明する。再書込み処理は、書込みが正常に終了しなかった場合に、第１演算処理ノード１００からの要求に対して書込みエラー通知を出す前に行われる。再書込み処理を行う場合、プロセッサ３１０は最初に書込みを行った物理アドレスのＰ−Ｅｒｒｏｒ値を「１」として、物理アドレス管理テーブル３３２に格納する。そしてプロセッサ３１０は、物理アドレス管理テーブル３３２から、Ｐ−Ｖａｌｉｄが「０」であるページ、つまりデータが書き込まれていないページを検索する。検索された新しいページに対して同様にデータの書込みが行われる。再書込み処理によって正常にデータが書き込まれれば、新しいページの物理アドレスが論理アドレスに対応するように論理アドレス管理テーブル３３１が書き替えられる。この場合は、論理アドレスのＬ‐Ｅｒｒｏｒ値は、正常に書込みが行われたことを示す「０」となり、書込みエラー通知は発行されない。再書込み処理は、再書込みを行う回数制限を設けてもよい。例えば再書込みの回数制限を２回と設定した場合は、２回の再書込みを行ってもフラッシュメモリ４００に正常にデータ書込みが行われない場合は、再書込み処理を終了させる。そして論理アドレスのＬ‐Ｅｒｒｏｒ値は、正常に書込みが行われなかったことを示す「１」となる。尚、プロセッサ３１０による再書込み処理は本実施例において必須ではなく、最初の書込みが失敗したことを受けて書込みエラー通知を第１演算処理ノード１００に対して送信してもよい。
【００４４】
図１２は、実施例における、データ書込み要求を受けた際のプロセッサ３１０の処理フローを示す図である。図１２の処理は処理１１００により開始される。処理１１０１において、ロック制御部３１２は、アクセスされた論理アドレスをロックする。ロックされている状態の該当論理アドレスに他の要求がなされた場合は、他の要求は例えばメモリ３３０に一時格納される。処理１１０２において、テーブル管理部３１１が、メモリ３３０に格納されている論理アドレス管理テーブル３３１にアクセスする。処理１１０３において、テーブル管理部３１１は、論理アドレス管理テーブル３３１に記載されているＬ−Ｅｒｒｏｒの値が「０」であるか否かを判定する。処理１１０３においてＬ−Ｅｒｒｏｒの値が「０」ではないと判定された場合は、処理１１１５において通知部３１３が、データ書込み要求の発行元の演算処理ノードに要求不受理通知を行う。処理１１０３において、Ｌ−Ｅｒｒｏｒの値が「０」と判定された場合は、処理１１０４においてテーブル管理部３１１が、論理アドレス管理テーブル３３１に記載されているＬ−Ｖａｌｉｄの値が「０」であるか否かを判定する。処理１１０４においてＬ−Ｖａｌｉｄの値が「０」であると判定された場合は処理１１０８へ進む。処理１１０４においてＬ‐Ｖａｌｉｄの値が「０」ではないと判定された場合は、処理１１０５においてテーブル管理部３１１が、論理アドレス管理テーブル３３１に基づき、論理アドレスに対応する物理アドレスを抽出する。処理１１０６においてデータ読出し部３１５が、抽出された物理アドレスに書込まれているデータを読み出す。処理１１０７においてメモリ制御部３１４が、読み出されたデータとメモリ３３０に格納されている書込みデータとをマージさせて、更新書込みデータを作成する。処理１１０８においてテーブル管理部３１１が、メモリ３３０に格納されている物理アドレス管理テーブル３３２にアクセスし、データ書込みを行う物理アドレスを選定する。処理１１０９においてデータ書込み部３１６が、書込みデータ又は更新書込みデータを、選定された物理アドレスに書込む。処理１１１０において確認部３１７が、フラッシュメモリ４００のステータスレジスタ４５０にアクセスして、データ書込みが成功したか否かを判定する。処理１１１０においてデータ書込みが成功したと判定された場合は、処理１１１１においてテーブル管理部３１１が、論理アドレス管理テーブル３３１のＬ‐Ｅｒｒｏｒに「０」を記録する。処理１１１０においてデータ書込みが失敗したと判定された場合には、処理１１１２において再書込み部３１８が、再書込み回数が設定値を超えたか否かを判定する。処理１１１２において再書込み回数が設定値を超えていないと判定された場合は、処理１１０８へ戻る。処理１１１２において再書込み回数が設定値を超えていると判定された場合は、処理１１１３においてテーブル管理部３１１が、論理アドレス管理テーブル３３１のＬ‐Ｅｒｒｏｒに「１」を記録する。処理１１１４において通知部３１３が、書込みエラー通知を書込み要求の発行元に通知する。処理１１１６において、ロック制御部３１２が他の要求に対するロックを解除し、処理１１１７により終了する。
【００４５】
図１３は、実施例における、データ読出し要求を受けた際のプロセッサ３１０の処理フローを示す図である。図１３の処理は処理１２００により開始される。処理１２０１においてテーブル管理部３１１が、メモリ３３０に格納されている論理アドレス管理テーブル３３１にアクセスする。処理１２０２においてテーブル管理部３１１は、論理アドレス管理テーブル３３１に記載されているＬ−Ｅｒｒｏｒの値が「０」であるか否かを判定する。処理１２０２においてＬ−Ｅｒｒｏｒの値が「０」でないと判定された場合は、処理１２０６において通知部３１３が、データ読出し要求の発行元に要求不受理通知を行う。
【００４６】
処理１２０２においてＬ−Ｅｒｒｏｒの値が「０」であると判定された場合は、処理１２０３においてテーブル管理部３１１が、論理アドレス管理テーブル３３１に基づき、読出し要求に含まれる論理アドレスに対応する物理アドレスを抽出する。処理１２０４においてデータ読出し部３１５が、対応する物理アドレスからデータを読み出す。処理１２０５においてデータ送信部３１９が、読出したデータを読出し要求の発行元に送信して処理１２０７により終了させる。
【００４７】
このように本実施例では、第１演算処理ノード１００から受けた書込み要求の処理において、書込みが正常に行われなかった場合に、書込みエラーフラグであるＬ−Ｅｒｒｏｒ値の「１」を、論理アドレスに対応付けて格納しておく。これにより、同一論理アドレスに対して読出し要求がなされた場合に、その論理アドレスで特定されるデータにエラーが存在することをメモリコントローラ３００が認識できる。またメモリコントローラ３００が、読出し要求の発行元に対して誤ったデータを読み出して送信することなく、データに誤りがある旨の通知を行うことにより、情報処理装置１の誤動作を抑制することができる。
【００４８】
ここで、図１２の処理１１１５に示すように、Ｌ−Ｅｒｒｏｒの値が「１」の場合にはデータ書込み要求に対して要求不受理通知を通知し、データ書込みを行わないとすることの技術的意義を説明する。例えば第１演算処理ノード１００がメモリコントローラ３００に対してデータの書込みを要求し、そのデータ書込みが失敗した場合を想定する。この場合、メモリコントローラ３００は第１演算処理ノード１００に書込みエラー通知を送信する。書込みエラー通知を受けた第１演算処理ノード１００は種々の対応を取り得る。例えば回復処理として同じデータを書込むよう、メモリコントローラ３００に再度要求する場合がある。ここで、この再度の要求がなされる前に、第２演算処理ノード２００から同一論理アドレスを指定してデータの書込み要求、つまりデータ更新の要求がなされたとする。そして、第２演算処理ノード２００からの書込み要求をメモリコントローラ３００が受けてデータを書き込み、書込みに成功したとする。この場合、第２演算処理ノード２００からの書込み要求によってフラッシュメモリ４００内のデータは正しく更新されたことになる。しかしその後に、第１演算処理ノード１００の再度の要求に応じて書込みがなされると、古いデータに書き戻されてしまう。このような不具合を防止するため、本実施例ではメモリコントローラ３００は、受信した要求が読出し要求である場合だけでなく書込み要求である場合も、要求に応じることなく要求不受理通知を要求発行元へ通知する。
【００４９】
＜第２実施例＞
第２実施例は、第１実施例の内容を前提とし、更に第１演算処理ノード１００による書込みの再要求がなされた場合の処理を付加するものである。
【００５０】
メモリコントローラ３００から書込みエラー通知を受けた第１演算処理ノード１００は、エラー状態の回復処理として、同一データをメモリ４００に書込むための書込み再要求を行い得る。具体的には、図５に示した回復処理部１１３が、要求発行部１１１に書込み要求を再度発行するよう指示する。要求発行部１１１は、図６に示した所定の記述フォーマットに沿った書込み再要求をメモリコントローラ３００に向けて発行する。この書込み再要求に対するメモリコントローラ３００の処理を、図１４乃至図１６を用いて説明する。
【００５１】
図１４は、第２実施例における論理アドレス管理テーブルの例を示す図である。図３（Ａ）にて示した論理アドレス管理テーブルの内容に加えて要求発行元ＩＤが記録される。要求発行元ＩＤとは、メモリコントローラ３００が直近に受け付けた書込み要求の発行元を特定するＩＤである。この要求発行元ＩＤは、図６に示すように、演算処理ノードから送られる書込み要求の中に情報として含まれる。先の書込み要求を受信したメモリコントローラ３００は、書込み要求に含まれる要求発行元ＩＤと論理アドレスとを関連付けて、論理アドレス管理テーブル３３１に格納しておく。
【００５２】
図１５は、第２実施例における第１演算処理ノード１００、第２演算処理ノード２００と、メモリコントローラ３００と、フラッシュメモリ４００との間の処理の流れの別の例を示す図である。図１０及び図１１と同じ処理については同じ参照符号を付し、説明を省略する。
【００５３】
処理７０２において第１演算処理ノード１００は、書込みエラー通知をメモリコントローラ３００から受信する。処理８０１において第１演算処理ノード１００は、書込み再要求を発行する。また処理８０２において第１演算処理ノード１００は、書込みデータをメモリコントローラ３００に送信する。処理８０３においてＮＩＣ３５０は、書込み再要求をプロセッサ３１０に転送する。また処理８０４においてＮＩＣ３５０は、書込みデータをメモリ３３０に転送して格納する。処理８０５においてＮＩＣ３５０は、書込み要求の発行元である第１処理ノード１００に、要求受領通知を行う。一方プロセッサ３１０は、書込み再要求の発行元ＩＤと、先に行われた書込み要求の発行元ＩＤとが同一であることを確認し、書込み再要求に対する処理を行う。具体的にはプロセッサ３１０は、処理８０６及び処理８０７におけるフラッシュメモリ４００からのデータの読出し、処理８０８及び処理８０９におけるフラッシュメモリ４００へのデータの書込み、処理８１０におけるフラッシュメモリ４００への完了確認、処理８１１におけるフラッシュメモリ４００からの正常終了通知の受領を行う。尚、書込みの再要求に対する書込みを行っても正常に書込みが行えない場合は、処理８１１においてメモリコントローラ３００は、正常終了通知に代えて異常終了通知を受領する。
【００５４】
第１実施例においては、書込み要求を受けたメモリコントローラ３００は、Ｌ‐Ｅｒｒｏｒ値が「１」である場合、書込み要求に応えることなく要求受理通知を、書込み要求の発行元へ通知する。そのため、書込みエラー通知を受けた第１演算処理ノード１００が、回復処理として書込みの再要求を行っても、メモリコントローラ３００は再要求を受け付けず、再書込みの処理が行われない。これに対して第２実施例ではメモリコントローラ３００は、書込み要求があった場合に、要求発行元ＩＤを論理アドレス管理テーブル３３１に格納しておく。そしてその後に書込み要求を受けたメモリコントローラ３００は、Ｌ‐Ｅｒｒｏｒ値が「１」であっても、論理アドレス管理テーブル３３１に格納された発行元ＩＤと、書込み要求の発行元ＩＤが一致する場合には、例外的に書込み要求を受け付ける。これにより、第１演算処理ノード１００は、回復処理としての再度の書込みを行うことができる。
【００５５】
図１６は、第２実施例において、データ書込み要求を受けた際のプロセッサ３１０の処理フローを示す図である。図１２に示す処理内容と同一ものについては同一の参照番号を付し、説明を適宜省略する。
【００５６】
処理１１０３において、テーブル管理部３１１がＬ‐Ｅｒｒｏｒの値が「０」でないと判定した場合は、処理１３０１に進む。処理１３０１においてテーブル管理部３１１が、書込み要求に含まれる要求発行元ＩＤと論理アドレス管理テーブル３３１に格納された要求発行元ＩＤとが一致するか否かを判定する。処理１３０１において両要求発行元ＩＤが一致すると判定された場合は、処理１１０４へ進み、書込み処理が行われる。処理１３０１において両要求発行元ＩＤが一致しないと判定された場合は、処理１１１５において通知部３１３が、書込み要求の発行元へ要求不受理通知を発行する。
【００５７】
＜第３実施例＞
第３実施例は、第２実施例と同様に第１実施例の内容を前提とし、第１演算処理ノード１００による再書込み処理を含むものである。第２実施例では、メモリコントローラ３００が受信した要求が、書込みエラー通知を受けた演算処理ノードによる書込み再要求であることを識別するために要求発行元ＩＤを利用した。第３実施例では、メモリコントローラ３００が受信した書込み要求が、書込みエラー通知を受けた演算処理ノードによる書込み再要求であることを識別するためにリクエストＩＤを利用する。
【００５８】
図１７は、第３実施例における論理アドレス管理テーブルの例を示す。図３（Ａ）にて示した論理アドレス管理テーブルの内容に加えてリクエストＩＤが記録される。リクエストＩＤとは、メモリコントローラ３００が受け付けた直近の書込み要求の内容の同一性を示すＩＤである。このリクエストＩＤは、図６に示すように、演算処理ノードから送られる書込み要求の中に情報として含まれる。先の書込み要求を受信したメモリコントローラ３００は、書込み要求に含まれるリクエストＩＤと論理アドレスとを関連付けて論理アドレス管理テーブルに格納しておく。第１演算処理ノード１００が回復処理のための書込み要求を再度行う場合、図５に示した回復処理部１１４が、前回の書込み要求に付したリクエストＩＤと同一のリクエストＩＤを付した書込み要求の再発行を、要求発行部１１１に指示する。要求発行部１１１は書込み再要求をメモリコントローラに対して送信する。書込み再要求を受けたメモリコントローラ３００は、論理アドレス管理テーブル３３１を確認する。そして、Ｌ−Ｅｒｒｏｒの値が「１」であっても、書込み再要求に付されたリクエストＩＤが論理アドレス管理テーブル３３１に格納されているリクエストＩＤと一致していれば、メモリコントローラ３００は書込み要求を受け付ける。これにより、第１演算処理ノード１００は、回復処理としての再度の書込みを行うことが可能となる。
【００５９】
図１８は、第３実施例におけるプロセッサ３１０の処理フローを示す図である。図１２及び図１６に示すプロセッサ３１０の処理フローと同じ処理内容のものについては同じ参照番号を付し、説明を適宜省略する。
【００６０】
処理１１０３においてテーブル管理部３１１が、Ｌ‐Ｅｒｒｏｒの値が「０」でないと判定した場合は、処理１４０１に進む。処理１４０１においてテーブル管理部３１１が、書込み要求に含まれるリクエストＩＤと論理アドレス管理テーブル３３１に格納されたリクエストＩＤとが一致するか否かを判定する。処理１４０１において両リクエストＩＤが一致すると判定された場合は、処理１１０４へ進み、書込み処理が行われる。処理１４０１において両リクエストＩＤが一致しないと判定された場合は、処理１１１５において通知部３１３が、書込み要求の発行元へ要求不受理通知を発行する。
【００６１】
＜第４実施例＞
第４実施例は、第２実施例又は第３実施例の内容を前提とし、第１演算処理ノード１００による再度の書込みによってデータがメモリ４００に正常に書き込まれた場合の、メモリコントローラ３００の処理について開示する。
【００６２】
例えば第２実施例では、処理７０４において要求不受理通知を受けた第２演算処理ノード２００は、所望のデータを受け取ることができず処理が停滞することになる。また第２演算処理ノード２００は、第１演算処理ノード１００の書込みの再要求によって書込みエラー状態が解消されたか否かを認識する手段がない。よってどのタイミングで再度の読出し要求を試みるべきかを認識することができない。そこで第４実施例では、第１演算処理ノード１００の書込み再要求に対する書込みが正常に終了した場合は、第２演算処理ノード２００に対して正常にデータが書込まれた旨の通知であるリカバリ完了通知を行うこととする。この通知により第２演算処理ノード２００は、要求不受理通知を受けた読出し要求に対して、読出し再要求を行うことが可能となったことを認識でき、所望のデータをメモリ４００から読み出すことが可能となる。
【００６３】
図１９は、第４実施例における論理アドレス管理テーブルの例を示す。図１４にて示した論理アドレス管理テーブルの内容に加えて、情報処理装置１に含まれる各演算処理ノードの読出し要求実績が記録される。読出し要求実績とは、特定の論理アドレスのＬ‐Ｅｒｒｏｒ値が「１」となっている状態において、各演算処理ノードがその論理アドレスに対する読出し要求を行ったことを記録するものである。言い換えれば、論理アドレス管理テーブル３３１に読出し要求実績が記録されている演算処理ノードは、過去において読出し要求に対する要求不受理通知を受けていることを意味する。図１９においては、第２演算処理ノード２００が、論理アドレスＬ＃０００１に対して読出し要求を行ったことが記録されている。
【００６４】
図２０は、第４実施例における第１演算処理ノード１００、第２演算処理ノード２００と、メモリコントローラ３００と、フラッシュメモリ４００との間の処理の流れの別の例を示す図である。図１０、図１１及び図１５と同じ処理については同じ参照符号を付し、説明を適宜省略する。
【００６５】
処理８０３において第１演算処理ノード１００からの書込み再要求を受けたプロセッサ３１０は、処理８０６から処理８０９においてフラッシュメモリ４００に対して書込み処理を行う。更にプロセッサ３１０は、処理８１０においてフラッシュメモリ４００に対し完了確認を行い、処理８１１においてフラッシュメモリ４００から正常終了の通知を受ける。その後、プロセッサ３１０は処理９０１及び処理９０２において、フラッシュメモリ４００のデータが正常なものとなったことを示すリカバリ完了通知を、ＮＩＣ３５０を介して第２演算処理ノード２００に通知する。
【００６６】
図２１は、第４実施例において読出し要求を受けたメモリコントローラ３００のプロセッサ３１０の処理フローを示す図である。図１３に示すプロセッサ３１０の処理フローと同じ処理内容のものについては同じ参照番号を付し、説明を適宜省略する。
【００６７】
処理１２０２においてテーブル管理部３１１が、Ｌ−Ｅｒｒｏｒの値が「０」であると判定した場合は、処理１２０３へ進み、読出し処理が行われる。処理１２０２においてテーブル管理部３１１が、Ｌ‐Ｅｒｒｏｒの値が「０」でないと判定した場合は、処理１５０１へ進む。処理１５０１においてテーブル管理部３１１が、論理アドレス管理テーブルの読出し要求実績に「１」を記録する。そして処理１２０６において通知部３１３はデータ読出し要求の発行元に要求不受理通知を行う。
【００６８】
図２２は、第４実施例において書込み要求を受けたプロセッサ３１０の処理フローを示す図である。図１２、図１６及び図１８に示すプロセッサ３１０の処理フローと同じ処理内容のものについては同じ参照番号を付し、説明を適宜省略する。
【００６９】
処理１１１１においてテーブル管理部３１１が、論理アドレス管理テーブル３３１のＬ−Ｅｒｒｏｒ値に「０」を記録した後、処理１６０１においてテーブル管理部３１１が論理アドレス管理テーブル３１１の読出し要求実績の有無を判定する。処理１６０１において読出し要求の実績がないと判定された場合は、処理１１１６へ進む。処理１６０１において読出し要求の実績があると判定された場合は、処理１６０２において通知部３１３が、読出し要求を行った演算処理ノードに対してリカバリ処理完了通知を通知する。この通知により、例えば図２０において、読出し要求に対して要求不受理通知を受けた第２演算処理ノード２００は、データが正しくフラッシュメモリ４００に格納されたことを認識することができる。第２演算処理ノード２００は、必要に応じて読出しの再要求を行う等の処理を行うことができる。
【００７０】
尚、図２２の処理１３０１では、テーブル管理部３１１が要求発行元ＩＤの一致を判定しているが、変形例として、図１８の処理１４０１のようにテーブル管理部３１１がリクエストＩＤの一致を判定してもよい。
【００７１】
以上、本明細に開示した技術によれば、メモリへの書込みが正常に行われなかったことを示すフラグを論理アドレスに対応付けて設けることで、特定の論理アドレスが付されたデータに誤りがあることを記録として残すことができる。これにより、演算処理ノードが誤データを読出すことを防止できる。また読出された誤データに基づく情報処理が行われることを抑制することができる。また論理アドレス管理テーブルに要求発行元ＩＤもしくはリクエストＩＤを格納することにより、書込みエラー通知を受けた演算処理ノードが書込み再要求を行うことが可能となる。また、読出し要求実績の有無を論理アドレス管理テーブルに格納することにより、読出し要求が受理されなかった演算処理ノードに対して、書込みが正常に行われたことの通知を行うことが可能となる。
【００７２】
尚、本開示において、メモリコントローラ３００によって書込み及び読出しが制御されるメモリはフラッシュメモリに限られない。論理アドレスと物理アドレスの対応関係を記述する管理テーブルまたは管理テーブルと同等の内容を有する情報に基づいて、書込み及び読出しの制御がなされるメモリであれば本発明に適用可能である。
【符号の説明】
【００７３】
１  情報処理装置
１００  第１演算処理ノード
２００  第２演算処理ノード
３００  メモリコントローラ
４００  フラッシュメモリ
５００  バス
１１０、２１０、３１０  プロセッサ
１３０、２３０、３３０  メモリ
１５０、２５０、３５０  ＮＩＣ
１１１  要求発行部
１１２  送受信部
１１３  回復処理部
１１４  メモリ制御部
３１１  テーブル管理部
３１２  ロック制御部
３１３  通知部
３１４  メモリ制御部
３１５  データ読出し部
３１６  データ書込み部
３１７  確認部
３１８  再書込み部
３１９  データ送信部
３３１  論理アドレス管理テーブル
３３２  物理アドレス管理テーブル
４１０  メモリセルアレイ
４２０  書込み読出し回路
４３０  書込みバッファ
４４０  コンパレータ
４５０  ステータスレジスタ
４６０  エラー訂正回路
【図１】
2015040658.tif 000003
【図２】
2015040658.tif 000004
【図３】
2015040658.tif 000005
【図４】
2015040658.tif 000006
【図５】
2015040658.tif 000007
【図６】
2015040658.tif 000008
【図７】
2015040658.tif 000009
【図８】
2015040658.tif 000010
【図９】
2015040658.tif 000011
【図１０】
2015040658.tif 000012
【図１１】
2015040658.tif 000013
【図１２】
2015040658.tif 000014
【図１３】
2015040658.tif 000015
【図１４】
2015040658.tif 000016
【図１５】
2015040658.tif 000017
【図１６】
2015040658.tif 000018
【図１７】
2015040658.tif 000019
【図１８】
2015040658.tif 000020
【図１９】
2015040658.tif 000021
【図２０】
2015040658.tif 000022
【図２１】
2015040658.tif 000023
【図２２】
2015040658.tif 000024
【手続補正書】
【提出日】平成28年6月16日(2016.6.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１演算処理ノードが、第１論理アドレスが付されデータをメモリに書込むよう、メモリコントローラに要求する工程と、
前記メモリコントローラが、前記メモリの第１物理アドレスに対して前記データの書込みを行う工程と、
前記メモリコントローラが、前記データの書込みが正常に行われなかったこと示す第１フラグを生成し、前記第１論理アドレスに対応付けて記憶する工程と
を有することを特徴とする情報処理方法。
【請求項２】
前記メモリコントローラが、前記第１論理アドレスを指定した前記データの読出し要求を第２演算処理ノードから受ける工程と、
前記メモリコントローラが、第１論理アドレスに対応付けられた前記第１フラグを認識する工程と、
前記メモリコントローラが、前記データの読み出しを行わずに、前記データの書込みが正常に行われなかったことを示す第１通知を前記第２演算処理ノードに通知する工程と、
を有することを特徴とする請求項１に記載の情報処理方法。
【請求項３】
前記メモリコントローラが、前記データの書込みが正常に行われなかったことを示す第２通知を、前記第１演算処理ノードに通知する工程と、
前記第２演算処理ノードに前記第１通知がなされた後、前記第１演算処理ノードが前記メモリに対して、前記データの再書込みを行う工程と、
前記再書き込みによって前記データが前記メモリに正常に書込まれた場合、前記メモリコントローラが前記第１フラグを消去する工程と、
前記メモリコントローラが、前記データが正常に書込まれたことを示す第３通知を前記第２演算処理ノードに通知する工程と、
を有することを特徴とする請求項２に記載の情報処理方法。
【請求項４】
前記メモリはフラッシュメモリであることを特徴とする請求項１乃至３何れか一項に記載の情報処理方法。
【請求項５】
前記メモリコントローラは、前記データの書込みが正常に行われなかった場合、前記第１物理アドレスにデバイス不良があることを示す第２フラグを生成することを特徴とする請求項１乃至４何れか一項に記載の情報処理方法。
【請求項６】
前記データの書込みが正常に行われなかった場合は、前記メモリの第２物理アドレスに対して前記データの書込みを行い、前記第２物理アドレスへの書込みが正常に行われた場合は、前記第１論理アドレスが前記第２物理アドレスに対応することを示す論理アドレス管理テーブルを作成することを特徴とする請求項１乃至５何れか一項に記載の情報処理方法。
【請求項７】
メモリと、
第１論理アドレスが付されたデータの前記メモリへの書込み要求を行う第１演算処理ノードと、
前記書込み要求を受け、前記メモリの第１物理アドレスに対して前記データの書込みを行い、前記データの書込みが正常に行われなかったことを示す第１フラグを生成し、前記第１フラグを前記第１論理アドレスに対応付けて記憶するメモリコントローラと
を有することを特徴とする情報処理装置。
【請求項８】
前記メモリコントローラは、前記第１論理アドレスを指定した読出し要求を第２演算処理ノードから受け、第１論理アドレスに対応付けられた前記第１フラグを認識し、前記読出し要求に対する読出し処理を行わずに、前記データの書込みが正常に行われなかったことを示す第１通知を前記第２演算処理ノードに通知することを特徴とする請求項７に記載の情報処理装置。
【請求項９】
第１演算処理ノードから受ける第１メモリへのデータ書込み要求を処理するメモリコントローラであって、
前記メモリコントローラは、
プロセッサと、第２メモリとを有し、
前記プロセッサは、第１論理アドレスが付されたデータを前記第１メモリに書込むよう、前記第１演算処理ノードから要求を受け、前記第１メモリの第１物理アドレスに対して前記データの書込みを行い、前記データの書込みが正常に行われなかったことを示す第１フラグを、前記第１論理アドレスに対応付けて前記第２メモリへ格納することを特徴とするメモリコントローラ。
【請求項１０】
前記プロセッサは、第２演算処理ノードから、前記第１論理アドレスを指定した読出し要求を受けた場合、前記第１フラグを前記第２メモリから読出し、前記読出し要求に対する読出し処理を行わずに、前記データの書込みが正常に行われなかったことを示す第１通知を前記第２演算処理ノードに通知することを特徴とする請求項９に記載のメモリコントローラ。
【手続補正書】
【提出日】平成28年11月18日(2016.11.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
メモリコントローラが、第１論理アドレスが付されたデータのメモリへの書込み要求を、第１演算処理ノードから受信する工程と、
前記メモリコントローラが、前記メモリの第１物理アドレスに対して前記データの書込みを行う工程と、
前記データの書込みが正常に行われなかった場合、前記メモリコントローラが、前記データの書込みが正常に行われなかったことを示す第１通知を、前記第１演算処理ノードに通知する工程と、
前記メモリコントローラが、前記第１論理アドレスを指定した前記データの読出し要求を第２演算処理ノードから受信する工程と、
前記メモリコントローラが、前記データの読み出しを行わずに、前記データの書込みが正常に行われなかったことを示す第２通知を前記第２演算処理ノードに通知する工程と、
前記メモリコントローラが、前記メモリに対する前記データの再書込み要求を、前記第１演算処理ノードから受信する工程と、
前記再書き込み要求によって前記データが前記メモリに正常に書込まれた場合、前記メモリコントローラが、前記データが正常に書込まれたことを示す第３通知を前記第２演算処理ノードに通知する工程と
を有することを特徴とする情報処理方法。
【請求項２】
前記メモリはフラッシュメモリであることを特徴とする請求項１に記載の情報処理方法。
【請求項３】
前記メモリコントローラは、前記データの書込みが正常に行われなかった場合、前記第１物理アドレスにデバイス不良があることを示すフラグを生成することを特徴とする請求項１又は２に記載の情報処理方法。
【請求項４】
前記データの書込みが正常に行われなかった場合は、前記メモリの第２物理アドレスに対して前記データの書込みを行い、前記第２物理アドレスへの書込みが正常に行われた場合は、前記第１論理アドレスが前記第２物理アドレスに対応することを示す論理アドレス管理テーブルを作成することを特徴とする請求項１乃至３何れか一項に記載の情報処理方法。
【請求項５】
メモリと、
第１演算処理ノードと、
第２演算処理ノードと、
第１論理アドレスが付されたデータの前記メモリへの書込み要求を、前記第１演算処理ノードから受信し、前記メモリの第１物理アドレスに対して前記データの書込みを行い、前記データの書込みが正常に行われなかった場合に、前記データの書込みが正常に行われなかったことを示す第１通知を前記第１演算処理ノードに通知し、前記第１論理アドレスを指定した前記データの読出し要求を前記第２演算処理ノードから受信し、前記データの読み出しを行わずに、前記データの書込みが正常に行われなかったことを示す第２通知を前記第２演算処理ノードに通知し、前記第１演算処理ノードから前記メモリに対する前記データの再書込み要求を受信し、前記再書き込み要求に基づいて前記データが前記メモリに正常に書込まれた場合に、前記データが正常に書込まれたことを示す第３通知を前記第２演算処理ノードに通知するメモリコントローラと
を有することを特徴とする情報処理装置。
【請求項６】
第１論理アドレスが付されたデータのメモリへの書込み要求を、第１演算処理ノードから受信する処理と、
前記書込み要求に基づき、前記メモリの第１物理アドレスに対して前記データの書込みを行う処理と、
前記データの書込みが正常に行われなかった場合に、前記データの書込みが正常に行われなかったことを示す第１通知を、前記第１演算処理ノードに通知する処理と、
前記第１論理アドレスを指定した前記データの読出し要求を第２演算処理ノードから受信する処理と、
前記データの読み出しを行わずに、前記データの書込みが正常に行われなかったことを示す第２通知を前記第２演算処理ノードに通知する処理と、
前記メモリに対する前記データの再書込み要求を、前記第１演算処理ノードから受信する処理と、
前記再書き込み要求によって前記データが前記メモリに正常に書込まれた場合、前記データが正常に書込まれたことを示す第３通知を前記第２演算処理ノードに通知する処理と
を行う制御部
を有することを特徴とするメモリコントローラ。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
開示の情報処理装置は、メモリコントローラが、第１論理アドレスが付されたデータのメモリへの書込み要求を、第１演算処理ノードから受信する工程と、前記メモリコントローラが、前記メモリの第１物理アドレスに対して前記データの書込みを行う工程と、前記データの書込みが正常に行われなかった場合、前記メモリコントローラが、前記データの書込みが正常に行われなかったことを示す第１通知を、前記第１演算処理ノードに通知する工程と、前記メモリコントローラが、前記第１論理アドレスを指定した前記データの読出し要求を第２演算処理ノードから受信する工程と、前記メモリコントローラが、前記データの読み出しを行わずに、前記データの書込みが正常に行われなかったことを示す第２通知を前記第２演算処理ノードに通知する工程と、前記メモリコントローラが、前記メモリに対する前記データの再書込み要求を、前記第１演算処理ノードから受信する工程と、前記再書き込み要求によって前記データが前記メモリに正常に書込まれた場合、前記メモリコントローラが、前記データが正常に書込まれたことを示す第３通知を前記第２演算処理ノードに通知する工程とを有する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
メモリへの書込みが正常に行われなかった場合であっても、データに対する読出し要求を行った演算処理ノードが誤データを読出すことを防止でき、その後にデータ書込みが正常に行われた場合には、演算処理ノードに対してデータ書込みが正常に行われたことを通知することができる。
【国際調査報告】
2015040658.tif 000025
2015040658.tif 000026
2015040658.tif 000027
2015040658.tif 000028