(57)【要約】【課題】ソフトウェア制御型ＳＳＤにおいてライトバック処理を実行する場合に、アドレスの不整合の発生を抑制できるようにする。【解決手段】半導体素子メモリを有し、処理装置によって実行される制御プログラムによって半導体素子メモリの記憶領域に対するアクセス制御が行なわれる記憶装置１２と、半導体素子メモリに書き込むライトデータを一旦格納するキャッシュメモリ１５と、ライトバック処理を行なうライトバック処理部１１０と、半導体素子メモリにおける第１物理アドレスへのライトデータの書き込みが失敗すると、このライトデータを半導体素子メモリにおける第２物理アドレスに書き込む代替ライト処理部１１１と、第１物理アドレスと第２物理アドレスとを対応付けたアドレス管理情報を参照して、第２物理アドレスに書き込まれたライトデータにデータアクセスを行なうアクセス処理部１１０とを備える。【選択図】図３
2018120317.tif 000002
【特許請求の範囲】
【請求項１】
処理装置と、
半導体素子メモリを有し、前記処理装置によって実行される制御プログラムによって前記半導体素子メモリの記憶領域に対するアクセス制御が行なわれる記憶装置と、
前記半導体素子メモリに書き込むライトデータを一旦格納するキャッシュメモリと、
前記キャッシュメモリにライトデータを格納した後、前記半導体素子メモリに前記ライトデータを書き込む前に、前記ライトデータの書き込み完了を通知するライトバック処理を行なうライトバック処理部と、
前記半導体素子メモリにおける第１物理アドレスへのライトデータの書き込みが失敗すると、当該ライトデータを前記半導体素子メモリにおける第２物理アドレスに書き込む代替ライト処理部と、
前記第１物理アドレスと前記第２物理アドレスとを対応付けたアドレス管理情報を参照して、前記第２物理アドレスに書き込まれた前記ライトデータにデータアクセスを行なうアクセス処理部と
を備えることを特徴とする、情報処理装置。
【請求項２】
前記ライトデータの書き込みが失敗した前記第１物理アドレスを含むブロック内のデータを、前記ブロックとは異なる他のブロックに移動させる移動処理部
を備えることを特徴とする、請求項１記載の情報処理装置。
【請求項３】
前記移動処理部による、前記第１物理アドレスを含むブロック内のデータの、前記ブロックとは異なる他のブロックへの移動が完了した後に、前記キャッシュメモリから前記ライトデータを削除するキャッシュ削除処理部
を備えることを特徴とする、請求項２記載の情報処理装置。
【請求項４】
半導体素子メモリに書き込むライトデータを一旦格納するキャッシュメモリを備えるコンピュータにおいて、
前記半導体素子メモリを有し、前記コンピュータによって実行される制御プログラムによって前記半導体素子メモリの記憶領域に対するアクセス制御が行なわれる記憶装置が接続され、
前記コンピュータに、
前記キャッシュメモリにライトデータを格納した後、前記半導体素子メモリに前記ライトデータを書き込む前に、前記ライトデータの書き込み完了を通知するライトバック処理を行ない、
前記半導体素子メモリにおける第１物理アドレスへのライトデータの書き込みが失敗すると、当該ライトデータを前記半導体素子メモリにおける第２物理アドレスに書き込み、
前記第１物理アドレスと前記第２物理アドレスとを対応付けたアドレス管理情報を参照して、前記第２物理アドレスに書き込まれた前記ライトデータにデータアクセスを行なう
処理を実行させることを特徴とする、制御プログラム。
【請求項５】
半導体素子メモリに書き込むライトデータを一旦格納するキャッシュメモリを備えるコンピュータにおいて、
前記半導体素子メモリを有し、前記コンピュータによって実行される制御プログラムによって前記半導体素子メモリの記憶領域に対するアクセス制御が行なわれる記憶装置が接続され、
前記キャッシュメモリにライトデータを格納した後、前記半導体素子メモリに前記ライトデータを書き込む前に、前記ライトデータの書き込み完了を通知するライトバック処理と、
前記半導体素子メモリにおける第１物理アドレスへのライトデータの書き込みが失敗すると、当該ライトデータを前記半導体素子メモリにおける第２物理アドレスに書き込む処理と、
前記第１物理アドレスと前記第２物理アドレスとを対応付けたアドレス管理情報を参照して、前記第２物理アドレスに書き込まれた前記ライトデータにデータアクセスを行なう処理と
を備えることを特徴とする、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置，制御プログラムおよび情報処理方法に関する。
【背景技術】
【０００２】
図１０はＳＳＤ（Solid State Drive）を制御するための機能構成を模式的に示す図である。
【０００３】
この図１０に示すＳＳＤ制御システム５００は、ＳＳＤ５１０，ディスク用ドライバ５０４，ファイルシステム５０５およびアプリケーション５０６を備える。
【０００４】
アプリケーション５０６はユーザによって利用されるプログラムであり、各種機能を実現する。このアプリケーション５０６によって生成されたデータ等がＳＳＤ５１０のフラッシュメモリ５０１の記憶領域に格納される。また、このアプリケーション５０６からのリード要求に応じて、ＳＳＤ５１０の記憶領域からデータが読み出される。
【０００５】
ファイルシステム５０５は、データの操作やアクセス，検索を制御するものであり、アプリケーション５０６によって提供されるデータをファイルとしてＳＳＤ５１０に格納させたり、また、ＳＳＤ５１０からデータの読み出しを行なわせる。
【０００６】
ディスク用ドライバ５０４は、ＳＳＤ５１０と通信し、ＳＳＤ５１０との間でコマンドやデータの送受信を行なう。
【０００７】
ＳＳＤ５１０は、図１０に示すように、フラッシュメモリ制御部５０２，インタフェース部５０３および複数のフラッシュメモリ５０１を備える。
【０００８】
フラッシュメモリ５０１は、半導体記憶素子であって、データを読み出し自在に格納する。インタフェース部５０３は、ディスク用ドライバ５０４から送信されるコマンドやデータを受信し、また、ディスク用ドライバ５０４に対してデータを送信する。
【０００９】
フラッシュメモリ制御部５０２は、フラッシュメモリ５０１の記憶領域へアクセスし、のデータの格納や読み出しを行なう。例えば、フラッシュメモリ制御部５０２は、フラッシュメモリ５０１の物理アドレスを指定してデータのリードやライトを行なう。
【００１０】
そして、アプリケーション５０６，ファイルシステム５０５およびディスク用ドライバ５０４としての機能は、図示しないコンピュータのＣＰＵ（Central Processing Unit）がソフトウェアを実行することで実現される。
【００１１】
これに対して、インタフェース部５０３およびフラッシュメモリ制御部５０２は、ＳＳＤ５１０のハードウェアに実装されている。
【００１２】
近年、このようなＳＳＤ制御システムにおいて、ハードウェアで実装されていたフラッシュメモリ制御部５０２としての機能を、ソフトウェアで実装し、フラッシュメモリ５０１をソフトウェアから直接制御できるようにしたソフトウェア制御型ＳＳＤが提案されている。
【００１３】
図１１はソフトウェア制御型ＳＳＤの構成を示す図である。
【００１４】
図１１に示す例において、ＳＳＤ５１０は、フラッシュインタフェース部５０３および複数のフラッシュメモリ５０１を備える。
【００１５】
ソフトウェア制御型ＳＳＤにおいては、図１０に示すフラッシュメモリ制御部５０２と同様の機能を実現するフラッシュメモリ制御部５０２ａが、フラッシュメモリ制御ソフトウェアソフトウェア５０７にソフトウェアモジュールとして実装されている。
【００１６】
アプリケーション５０６ａは、このフラッシュメモリ制御ソフトウェアソフトウェア５０７に備えられたフラッシュメモリ制御部５０２ａの機能を用いて、フラッシュメモリ５０１の物理アドレスを、ソフトウェア側から直接指定することができる。
【００１７】
これにより、アプリケーション５０６ａは、フラッシュメモリ５０１に対するデータのリードやライトを細かく制御することができ、アプリケーション５０６ａに応じて最適化されたデータアクセスをフラッシュメモリ５０１に対して行なうことができる。
【００１８】
一般に、フラッシュメモリへのデータのライトには１〜２ｍｓｅｃ程度の時間がかかるため、ＳＳＤにおいては、ライトオペレーションを受信する度にフラッシュメモリにライト（program）を行なうと、処理速度が遅くなる。
【００１９】
そこで、従来のＳＳＤにおいては、ＤＩＭＭ（Dual Inline Memory Module）等のライトバッファ（図示省略）を備え、ライトオペレーションと共に受信したライトデータを、このライトバッファに一旦格納する。そして、ライトバッファにライトデータを格納した時点で、書き込み完了を示すコミット（Commit）をライト要求の送信元に対して応答し、フラッシュメモリにはバックグラウンドでライトを行なう、所謂ライトバック処理が行なわれている。なお、「ライトバック処理」は「ライト突き放し処理」といわれることもある。
【先行技術文献】
【特許文献】
【００２０】
【特許文献１】特開２０１２−１７３７７８号公報
【特許文献２】特開２００６−３１６９６号公報
【特許文献３】特開２００５−２３５１８２号公報
【発明の概要】
【発明が解決しようとする課題】
【００２１】
前述の如く、ソフトウェア制御型ＳＳＤにおいては、ソフトウェアとして実行されるフラッシュメモリ制御部５０２ａにより、アプリケーション５０６ａから、フラッシュメモリ５０１の物理アドレスを直接指定することが可能となる。
【００２２】
そして、ライトバック処理においては、ライトデータがライトバッファに書き込まれた後、ＳＳＤ５１０ａのフラッシュメモリ５０１に物理的に書き込みが行なわれる前に、ソフトウェア５０６ａにCommitが返される。
【００２３】
ここで、フラッシュメモリ５０１にライトデータの書き込みを行なう際に、何らかの理由でこの書き込みを失敗した場合には、フラッシュメモリ５０１における他の物理アドレスに、再度、書き込みが行なわれる。
【００２４】
このような場合に、フラッシュメモリ５０１においてライトデータが実際に書き込まれたアドレスは、アプリケーション５０６ａからライトが指示され、Commitを応答したアドレスと異なるものとなり不整合が生じる。
【００２５】
すなわち、その後、アプリケーション５０６ａが当該ライトデータをフラッシュメモリ５０１からリードする際には、アプリケーション５０６ａは、書き込みを失敗し、実際にはライトデータが格納されていないアドレスを指定してリード要求を送信することになり、フラッシュメモリ５０１から正しいデータをリードすることができないという課題がある。
【００２６】
１つの側面では、本発明は、ソフトウェア制御型ＳＳＤにおいてライトバック処理を実行する場合に、アドレスの不整合の発生を抑制できるようにすることを目的とする。
【課題を解決するための手段】
【００２７】
このため、この情報処理装置は、処理装置と、半導体素子メモリを有し、前記処理装置によって実行される制御プログラムによって前記半導体素子メモリの記憶領域に対するアクセス制御が行なわれる記憶装置と、前記半導体素子メモリに書き込むライトデータを一旦格納するキャッシュメモリと、前記キャッシュメモリにライトデータを格納した後、前記半導体素子メモリに前記ライトデータを書き込む前に、前記ライトデータの書き込み完了を通知するライトバック処理を行なうライトバック処理部と、前記半導体素子メモリにおける第１物理アドレスへのライトデータの書き込みが失敗すると、当該ライトデータを前記半導体素子メモリにおける第２物理アドレスに書き込む代替ライト処理部と、前記第１物理アドレスと前記第２物理アドレスとを対応付けたアドレス管理情報を参照して、前記第２物理アドレスに書き込まれた前記ライトデータにデータアクセスを行なうアクセス処理部とを備える。
【発明の効果】
【００２８】
一実施形態によれば、ソフトウェア制御型ＳＳＤにおいてライトバック処理を実行する場合に、アドレスの不整合の発生を抑制できるようにする。
【図面の簡単な説明】
【００２９】
【図１】第１実施形態の一例としてのコンピュータシステムのハードウェア構成を例示する図である。
【図２】図１に示すフラッシュメモリの記憶領域の構成を例示する図である。
【図３】第１実施形態の一例としてのコンピュータシステムにおけるアクセス管理部およびフラッシュメモリ制御部の各機能構成を示す図である。
【図４】第１実施形態の一例としてのコンピュータシステムにおけるライト（program）処理を説明するためのフローチャートである。
【図５】第１実施形態の一例としてのコンピュータシステムにおけるライト（program）処理を説明する図である。
【図６】第１実施形態の一例としてのコンピュータシステムにおけるリード（read）処理を説明するフローチャートである。
【図７】第２実施形態の一例としてのコンピュータシステムにおけるライト（program）処理を説明するための図である。
【図８】第２実施形態の一例としてのコンピュータシステムにおけるライト（program）処理を説明するためのフローチャートである。
【図９】第２実施形態の一例としてのコンピュータシステムにおけるリード（read）処理を説明するためのフローチャートである。
【図１０】ＳＳＤを制御するための機能構成を模式的に示す図である。
【図１１】ソフトウェア制御型ＳＳＤの構成を示す図である。
【発明を実施するための形態】
【００３０】
以下、図面を参照して本情報処理装置，制御プログラムおよび情報処理方法に係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。又、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００３１】
（Ｉ）第１実施形態の説明
（Ａ）構成
図１は第１実施形態の一例としてのコンピュータシステムのハードウェア構成を例示する図である。
【００３２】
コンピュータシステム１は、例えばサーバ機能を備える情報処理装置であって、図１に示すように、ＣＰＵ１０，システムメモリ１１，ＳＳＤ１２，チップセット１４および記憶装置１３を備える。
【００３３】
記憶装置１３は、ハードディスクドライブ（Hard disk drive：ＨＤＤ）、ＳＳＤ，ストレージクラスメモリ（Storage Class Memory：ＳＣＭ）等の記憶装置であって、記憶媒体を備え、種々のデータを格納するものである。
【００３４】
記憶装置１３は、コンピュータシステム１の補助記憶装置として使用され、本コンピュータシステム１において２次記憶装置として用いられる。
【００３５】
記憶装置１３は、コンピュータ読み取り可能な非一時的な記録媒体であり、ＯＳ（Operating System），アプリケーションプログラム、及び各種データを格納する。アプリケーションプログラムには、フラッシュメモリ制御ソフトウェア（制御プログラム）２０が含まれる。
【００３６】
チップセット１４は、例えばＣＰＵ１０と記憶装置１３とを接続するバスブリッジ機能を集積化したものである。
【００３７】
システムメモリ１１は、本コンピュータシステム１の主記憶装置として使用される。システムメモリ１１には、ＣＰＵ１０に実行させるＯＳやアプリケーションプログラム（フラッシュメモリ制御プログラム２０）の少なくとも一部が実行イメージとして一時的に格納される。また、システムメモリ１１には、ＣＰＵ１０による処理に必要な各種データが格納される。
【００３８】
システムメモリ１１上のアプリケーションプログラムは、ＣＰＵ１０に適宜読み込まれて実行される。システムメモリ１１は、一次記憶メモリあるいはワーキングメモリとして利用される。
【００３９】
また、システムメモリ１１の記憶領域の一部は、ＳＳＤ１２にライトされるライトデータを一時的に格納するライトバッファ１５として用いられる。このライトバッファ１５は、ＳＳＤ１２にライトデータを書き込む前に、このライトデータを一旦格納するキャッシュメモリとして機能する。
【００４０】
ＳＳＤ１２は、記憶媒体として半導体素子メモリを用いた記憶装置である。ＳＳＤ１２は、図１に示すように、フラッシュインタフェース１２１およびフラッシュメモリ１２２を備える。
【００４１】
ＳＳＤ１２は、ソフトウェア制御型のＳＳＤであり、自身にはフラッシュメモリ１２２に対するアクセス制御を行なうフラッシュメモリ制御部としての機能を備えていない。すなわち、当該ＳＳＤ１２の外部に搭載されたＣＰＵ１０によって実行されるフラッシュメモリ制御部１１０によってフラッシュメモリ１２２のアクセス制御が行なわれる。
【００４２】
フラッシュメモリ１２２は、半導体記憶素子であって、データを読み出し自在に格納する。フラッシュインタフェース１２１は、ＣＰＵ１０（フラッシュメモリ制御部１１０）から送信されるコマンドやデータを受信し、また、ＣＰＵ１０（フラッシュメモリ制御部１１０）に対してデータ等を送信する。
【００４３】
図２は図１に示すフラッシュメモリ１２２の記憶領域の構成を例示する図である。
【００４４】
フラッシュメモリ１２２の記憶領域は、図２に示すように、ブロック（block）およびページ（page）で構成される。
【００４５】
図２に例示するフラッシュメモリ１２２の記憶領域は、4200個のブロック（block0〜block4199）を備え、各ブロックには、256個のページ（Page0〜Page255）が形成されている。各ページはそれぞれ16KB（KiloByte）の記憶容量を有する。
【００４６】
また、フラッシュメモリ１２２へのオペレーションには、“read”，“program”および“erase”があり、後述するフラッシュメモリ制御部１１０からこれらのオペレーションが（リクエスト）発行される。
【００４７】
ここで、“read”はフラッシュメモリ１２２からのデータのリードに用いられ、ページ単位で実行される。
【００４８】
“erase”は、フラッシュメモリ１２２からのデータの削除に用いられ、ブロック単位で実行される。
【００４９】
“program”はフラッシュメモリ１２２へのデータのライトに用いられ、ページ単位で実行される。なお、フラッシュメモリ１２２には、既にデータが格納されている記憶領域について、データの上書きを一度に実現するオペレーションはなく、先ず、eraseを実行してデータを消去した後に、programを行なうことで、データの上書きを実現する。以下、programをライトという場合がある。
【００５０】
上述の如く、eraseはブロック単位で実行することができるが、ページ単位で実行することはできない。また、readおよびprogramはページ単位で実行することができる。
【００５１】
後述するフラッシュメモリ制御部１１０は、フラッシュメモリ１２２におけるブロックおよびページの指定とともに“read”，“program”および“erase”の各オペレーションをＳＳＤ１２に対して送信（通知）することで、フラッシュメモリ１２２へのリードやライトを実現する。
【００５２】
ＣＰＵ１０は、種々の制御や演算を行なう処理装置であり、システムメモリ１１に格納されたＯＳやプログラムを実行することにより、種々の機能を実現する。すなわち、ＣＰＵ１０は、フラッシュメモリ制御プログラム（制御プログラム）２０を実行することで、図１に示すように、アクセス管理部１０１およびフラッシュメモリ制御部１１０としての機能を実現する。
【００５３】
なお、これらのアクセス管理部１０１およびフラッシュメモリ制御部１１０としての機能を実現するためのプログラム（フラッシュメモリ制御プログラム）は、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
【００５４】
アクセス管理部１０１およびフラッシュメモリ制御部１１０としての機能を実現する際には、内部記憶装置（本実施形態ではシステムメモリ１１）に格納されたプログラムがコンピュータのマイクロプロセッサ（本実施形態ではＣＰＵ１０）によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行するようにしてもよい。
【００５５】
図３は第１実施形態の一例としてのコンピュータシステム１におけるアクセス管理部１０１およびフラッシュメモリ制御部１１０の各機能構成を示す図である。
【００５６】
フラッシュメモリ制御部１１０は、ＳＳＤ１２に対するデータのライトやリードを制御する。
【００５７】
フラッシュメモリ制御部１１０は、フラッシュメモリ１２２におけるブロックおよびページの指定とともに“read”，“program”および“erase”の少なくともいずれかのオペレーションをＳＳＤ１２やシステムメモリ１１（ライトバッファ１５）に通知することで、フラッシュメモリ１２２へのリードやライトを実現する。
【００５８】
すなわち、本コンピュータシステム１においては、ＣＰＵ１０がフラッシュメモリ制御プログラム２０を実行することによって、フラッシュメモリ１２２のブロックやページに対して、ＳＳＤ１２の機能を用いることなく直接のアクセス制御が実現される。
【００５９】
フラッシュメモリ制御部１１０は、図３に示すように、他ブロック格納制御部１１１およびバッファ管理部１１２としての機能を備える。
【００６０】
バッファ管理部１１２は、ＳＳＤ１２にデータのライトを行なうに際して、ＳＳＤ１２（フラッシュメモリ１２２）に記憶させるライトデータをシステムメモリ１１のライトバッファ１５に格納させる。
【００６１】
フラッシュメモリ制御部１１０は、ＳＳＤ１２のフラッシュメモリ１２２にデータ（ライトデータ）をライトする場合には、システムメモリ１１のライトバッファ１５に、ライトデータを格納させる。そして、フラッシュメモリ制御部１１０は、ライトデータをライトバッファ１５に格納した時点で、アクセス管理部１０１や図示しない上位装置に対して、ＳＳＤ１２へライトデータのライトが完了したことを示すコミット（Commit：書き込み完了通知）を通知する。
【００６２】
そして、フラッシュメモリ制御部１１０は、コミットの通知を行なった、ライトバッファ１５のデータについて、例えば、フラッシュメモリ制御部１１０やＳＳＤ１２が低負荷の状態において、バックグラウンドでＳＳＤ１２のフラッシュメモリ１２２の記憶領域に格納させる。
【００６３】
すなわち、フラッシュメモリ制御部１１０は、ライトバッファ（キャッシュメモリ）１５にライトデータを格納した後、このライトデータをフラッシュメモリ１２２に書き込む前に、ライトデータの書き込み完了（Commit）を通知するライトバック処理（ライト突き放し処理）を行なう。すなわち、フラッシュメモリ制御部１１０は、ライトバック処理部として機能する。
【００６４】
また、バッファ管理部（キャッシュ削除処理部）１１２は、ライトバッファ１５から、フラッシュメモリ１２２へのライトが完了したライトデータを削除させる処理を行なう。バッファ管理部１１２は、後述するバッドブロックデータ管理部１０２による、バッドブロックにおけるバッドページ以外のページに格納されているデータを、異常が検出されていない他のブロックに移動させる処理が完了した後に、ライトバッファ１５のデータ削除を行なう。
【００６５】
他ブロック格納制御部１１１は、フラッシュメモリ１２２のブロックおよびページの指定とともに行なわれた“read”，“program”および“erase”のいずれかの処理が失敗した場合に、ＳＳＤ１２における他のブロック（代替ブロック）を指定して“read”，“program”および“erase”の処理を再度実行させる。
【００６６】
例えば、ＳＳＤ１２（フラッシュメモリ１２２）におけるブロックＡの特定のページ（例えば、ページａ；Block A, page a）にデータＤをライトする際に、何らかの理由でこのページにライトを行なうことができない場合には、他ブロック格納制御部１１１は、ブロックＡとは異なる他のブロック（例えば、Block B：代替ブロック）の記憶領域（例えば、Block B, page b）をデータＤのライト先として選択する。
【００６７】
すなわち、他ブロック格納制御部１１１は、ＳＳＤ１２における指定された領域（第１物理アドレス）にデータのライト（program）を実行することができない場合には、ライトデータの格納先として他の領域（ブロック：第２物理アドレス，代替ブロック，代替記憶領域）を選択する、代替領域選択を行なう。そして、他ブロック格納制御部１１１は、この新たに選択した代替記憶領域にライトデータＤを格納させる、代替ライト処理を行なう。
【００６８】
従って、他ブロック格納制御部１１１は、フラッシュメモリ１２２における第１物理アドレスへのライトデータの書き込みが失敗すると、このライトデータをフラッシュメモリ１２２における第２物理アドレスに書き込む代替ライト処理部として機能する。
【００６９】
以下、代替領域選択において、ＳＳＤ１２（フラッシュメモリ１２２）におけるライトを行なうことができなかった記憶領域をバッド記憶領域という場合がある。また、特に、ライトを行なうことができなかったブロックをバッドブロックといい、バッドブロックにおいてライトを行なうことができなかったページをバッドページという場合がある。
【００７０】
また、他ブロック格納制御部１１１がバッドブロックの代わりにライトデータの格納先として選択した記憶領域を代替記憶領域という場合があり、特に、代替領域として選択されたブロックを代替ブロックという場合がある。
【００７１】
他ブロック格納制御部１１１は、代替領域選択を行なった場合に、そのバッド記憶領域と代替記憶領域とをアクセス管理部１０１に通知する。
【００７２】
アクセス管理部１０１は、ＳＳＤ１２においてデータが格納される領域のアドレスを管理する。
【００７３】
アクセス管理部１０１は、図３に示すように、バッドブロックデータ管理部１０２  およびテーブル管理部１０３として機能する。
【００７４】
テーブル管理部１０３は、アクセス管理情報１０４を管理する。テーブル管理部１０３は、例えば、アクセス管理情報１０４の作成や更新を行なう。
【００７５】
アクセス管理情報１０４は、ＳＳＤ１２の記憶領域のデータにアクセスするために用いられる情報であり、例えば、ＳＳＤ１２におけるデータの記録位置を管理する。このアクセス管理情報１０４においては、例えば、ＳＳＤ１２の記憶領域の位置を表す情報に対して、格納されているデータの内容を示す情報を関連付けて登録される。
【００７６】
また、アクセス管理情報１０４には、他ブロック格納制御部１１１から通知されたバッド記憶領域と代替記憶領域とを対応付けて構成されたアドレス変換情報も含まれる。以下、アクセス管理情報１０４におけるアドレス変換情報をアドレス変換テーブル１０４ａという場合がある。
【００７７】
アクセス管理情報１０４は、例えば、システムメモリ１１や記憶装置１３の所定の領域に格納される。
【００７８】
バッドブロックデータ管理部１０２は、ＳＳＤ１２におけるバッドブロックに格納されているデータを、ＳＳＤ１２における、バッドブロック以外の他のブロックに移動させる。すなわち、バッドブロックデータ管理部１０２は、バッドブロックにおけるバッドページ以外のページに格納されているデータ（有効データ）を、異常が検出されていない他のブロック（正常ブロック）に移動させる。
【００７９】
バッドブロックにおいては、バッドページ以外のページにおいても将来的にデータのリードやライトを行なうことができなくなるおそれがある。そこで、バッドブロック内に格納されている有効なデータ（有効データ）を、異常が検出されていない他のブロックに移動させることで、有効データの保護を図ることができる。
【００８０】
バッドブロックデータ管理部１０２は、バッドブロックにおけるバッドページ以外のページに格納されているデータ（有効データ）の移動先のブロックとして、代替ブロックを選択してもよい。これにより、代替ブロックを、代替領域選択を行なう前と同様のデータ構成にすることができ、利便性が高い。
【００８１】
また、アクセス管理部１０１は、ＳＳＤ１２にリードアクセスを行なう場合には、アクセス管理情報１０４（アドレス変換テーブル１０４ａ）を参照する。リードアクセス対象のページがアドレス変換テーブル１０４ａにバッドページとして登録されている場合には、このアドレス変換テーブル１０４ａから、そのバッドページに対応する代替ページを取得し、この代替ページに対してリードアクセスを行なう。
【００８２】
（Ｂ）動作
第１実施形態の一例としてのコンピュータシステム１におけるライト（program）処理を、図５を参照しながら、図４に示すフローチャート（ステップＡ１〜Ａ１１）に従って説明する。なお、図５は第１実施形態の一例としてのコンピュータシステム１におけるライト（program）処理を説明する図である。
【００８３】
以下に示す例においては、例えばＣＰＵ１０によって実行されるアプリケーションから、記憶領域“Block A, page a”にデータ“D”（data D）をprogramするオペレーションが発行された例について示すものとする。
【００８４】
ステップＡ１において、記憶領域“Block A, page a”にデータ“D”（data D）をprogramするオペレーションが発行される。
【００８５】
ステップＡ２において、アクセス管理部１０１が、システムメモリ１１のライトバッファ１５に、programオペレーション“Block A, page a, data D”を格納させる（図５の矢印（１）参照）。
【００８６】
ステップＡ３において、フラッシュメモリ制御部１１０が、アクセス管理部１０１にCommitを応答する（図５の矢印（２）参照）。
【００８７】
ステップＡ４において、アクセス管理部１０１が、アクセス管理情報（アクセス管理テーブル）１０４を更新する。すなわち、アクセス管理部１０１は、アクセス管理情報１０４に対して、ＳＳＤ１２の記憶領域“Block A, page a”にデータ“D”（data D）をprogramしたことを示す情報を登録する。
【００８８】
ステップＡ５において、フラッシュメモリ制御部１１０は、バックグラウンドで、ＳＳＤ１２のフラッシュメモリ１２２の記憶領域“Block A, page a”にデータ“D”（data D）をprogramする。
【００８９】
ステップＡ６において、フラッシュメモリ制御部１１０は、ステップＡ５において行なったprogramが成功したかを確認する。確認の結果、programが成功した場合には（ステップＡ６のＹＥＳルート参照）、処理を終了する。
【００９０】
一方、ステップＡ５において行なったprogramが失敗した場合には（ステップＡ６のＮＯルート参照）、ステップＡ７に移行する（図５の矢印（３），（Ｐ１）参照）。
【００９１】
ステップＡ７において、フラッシュメモリ制御部１１０は、programが失敗したブロック（バッドブロック）とは異なる他のブロック（代替ブロック）のページ（代替記憶領域：本例では記憶領域“Block B, page b”）を選択する（図５の矢印Ｐ２参照）。フラッシュメモリ制御部１１０は、この代替記憶領域に、データ“D”をprogramする。
【００９２】
ステップＡ８において、フラッシュメモリ制御部１１０は、ステップＡ７において行なったprogramが成功したかを確認する。確認の結果、programが失敗した場合には（ステップＡ８のＮＯルート参照）、ステップＡ７に戻り、再度、代替記憶領域の選択およびデータ“D”のprogramを実行する（図５の矢印（４）参照）。
【００９３】
一方、ステップＡ７において行なったprogramが成功した場合には（ステップＡ８のＹＥＳルート参照）、ステップＡ９に移行する。
【００９４】
ステップＡ９において、フラッシュメモリ制御部１１０は、アクセス管理部１０１に対して、データ“D”のprogram先を、記憶領域“Block A, page a”から記憶領域“Block B, page b”に変更したことを通知（変更通知）する（図５の矢印（５）参照）。すなわち、フラッシュメモリ制御部１１０は、アクセス管理部１０１に対して、バッドブロック（Block A）および代替ブロック（Block B）を通知する。
【００９５】
アクセス管理部１０１は、受信した変更通知（バッドブロックおよび代替ブロック）に基づき、アクセス管理情報１０４（アドレス変換テーブル１０４ａ）を更新する。すなわち、アクセス管理部１０１は、アドレス変換テーブル１０４ａに、Block Aをバッドブロックとして登録するとともに、このBlock Aに対応付けてBlock Bを代替ブロックとして登録する（図５の矢印（６）参照）。
【００９６】
アクセス管理部１０１は、アクセス管理情報１０４の更新が完了すると、フラッシュメモリ制御部１１０に対して通知（アドレス変換テーブル変更完了通知）を行なう（図５の矢印（７）参照）。
【００９７】
ステップＡ１０において、フラッシュメモリ制御部１１０は、アクセス管理部１０１によるアクセス管理情報１０４の更新が完了したかを確認する。確認の結果、アクセス管理情報１０４の更新が完了していない場合には（ステップＡ１０のＮＯルート参照）、ステップＡ７に戻る。
【００９８】
一方、ステップＡ１０における確認の結果、アクセス管理情報１０４の更新が完了した場合には（ステップＡ１０のＹＥＳルート参照）、ステップＡ１１に移行する。
【００９９】
ステップＡ１１において、フラッシュメモリ制御部１１０は、ライトバッファ１５におけるprogramオペレーション“Block A, page a, data D”を削除（クリア）し（図５の矢印（８）参照）、処理を終了する。
【０１００】
次に、第１実施形態の一例としてのコンピュータシステム１におけるリード（read）処理を、図６に示すフローチャート（ステップＢ１〜Ｂ５）に従って説明する。
【０１０１】
以下に示す例においては、例えばＣＰＵ１０によって実行されるアプリケーションから、記憶領域“Block A, page a”のデータをリードするオペレーションが発行された例について示すものとする。
【０１０２】
ステップＢ１において、アクセス管理部１０１は、アクセス管理情報１０４を参照して、リードする物理アドレスを検索する。
【０１０３】
ステップＢ２において、アクセス管理部１０１は、“Block A, page a”のデータのリードを実行する。
【０１０４】
ステップＢ３において、フラッシュメモリ制御部１１０は、ライトバッファ１５にリード対象領域である“Block A, page a”のデータが格納されているかを確認する。確認の結果、ライトバッファ１５に“Block A, page a”のデータが格納されている場合には（ステップＢ３のＹＥＳルート参照）、ステップＢ４に移行する。
【０１０５】
ステップＢ４において、フラッシュメモリ制御部１１０は、ライトバッファ１５に格納されている“Block A, page a”のデータを読み出して、アクセス管理部１０１に応答し、処理を終了する。
【０１０６】
ステップＢ３における確認の結果、ライトバッファ１５にリード対象領域である“Block A, page a”のデータが格納されていない場合は（ステップＢ３のＮＯルート参照）、ステップＢ５に移行する。
【０１０７】
ステップＢ５において、フラッシュメモリ制御部１１０は、ＳＳＤ１２のフラッシュメモリ１２２における記憶領域“Block A, page a”のデータを読み出して、アクセス管理部１０１に応答し、処理を終了する。
【０１０８】
（Ｃ）効果
このように、本発明の第１実施形態としてのコンピュータシステム１によれば、ソフトウェア制御型ＳＳＤ１２においてライトバック処理が行なわれる場合に、指定された記憶領域にデータのprogramを実行できず代理記憶領域にprogramを実行した場合でも、アクセス管理情報１０４（アドレス変換テーブル１０４ａ）を用いてprogram先の不整合を解消することができる。すなわち、アドレス変換テーブル１０４ａを参照することで、その後に行なわれるリードアクセスにおいて、代理記憶領域にprogramされたデータを読み出すことができる。
【０１０９】
すなわち、ソフトウェア制御型ＳＳＤ１２において、不整合が生じることなくライトバック処理を適用することができ、ＳＳＤ１２におけるライト（program）の処理性能を向上させることができる。
【０１１０】
また、ＳＳＤ１２における指定された領域にデータのライト（program）を実行することができない場合に、バッドブロックデータ管理部１０２が、ＳＳＤ１２におけるバッドブロックに格納されているデータを、ＳＳＤ１２における、バッドブロック以外の他のブロックに移動させる。すなわち、バッドブロックデータ管理部１０２は、バッドブロックにおけるバッドページ以外のページに格納されているデータ（有効データ）を、異常が検出されていない他のブロック（正常ブロック）に移動させる。これにより、バッドブロックに格納された有効データを保護することができ、信頼性を向上させることができる。
【０１１１】
（ＩＩ）第２実施形態の説明
【０１１２】
（Ａ）構成
図７は第２実施形態の一例としてのコンピュータシステム１におけるライト（program）処理を説明するための図である。
【０１１３】
上述した第１実施形態のコンピュータシステム１においては、ＣＰＵ１０がフラッシュメモリ制御プログラムを実行することで、アクセス管理部１０１がアクセス管理情報１０４（アドレス変換テーブル１０４ａ）の管理を実現しているが、これに限定されるものではない。
【０１１４】
本第２実施形態においては、ＳＳＤ１２がアドレス変換テーブル１０４ａを備え、ＳＳＤ１２における指定された領域にデータのライト（program）を実行することができない場合に、ＳＳＤ１２が、バッド記憶領域へのデータアクセスが発生した場合に、このアドレス変換テーブル１０４ａにバッド記憶領域と代替記憶領域とを登録する。
【０１１５】
また、ＳＳＤ１２へのデータアクセス時に、このＳＳＤ１２に備えられたアドレス変換テーブル１０４ａを参照し、バッド記憶領域へのデータアクセスに代えて代替記憶領域へのデータアクセスを行なう。
【０１１６】
また、本第２実施形態において、フラッシュメモリ制御部１１０は、program時において、program先のブロックが、以前にprogramの実行を失敗したブロックであるかを確認する機能を有する。このため、フラッシュメモリ制御部１１０は、ＳＳＤ１２のブロック毎に、programの実行が失敗した履歴を履歴情報として管理することが望ましい。フラッシュメモリ制御部１１０は、例えば、バッドブロックを管理する。
【０１１７】
フラッシュメモリ制御部１１０は、以前にprogramが失敗したブロック（バッドブロック）に対して発行されたprogram要求に対して、Commitを応答する代わりに、アクセス管理部１０１に“program失敗”を応答する。
【０１１８】
なお、その他の部分は第１実施形態のコンピュータシステム１と同様に構成されている。
【０１１９】
（Ｂ）動作
第２実施形態の一例としてのコンピュータシステム１におけるライト（program）処理を、図７を参照しながら、図８に示すフローチャート（ステップＣ１〜Ｃ１４）に従って説明する。
【０１２０】
以下に示す例においては、例えばＣＰＵ１０によって実行されるアプリケーションから、記憶領域“Block A, page a”にデータ“D”（data D）をprogramするオペレーションが発行された例について示すものとする。
【０１２１】
ステップＣ１において、記憶領域“Block A, page a”にデータ“D”（data D）をprogramするオペレーションが発行される。
【０１２２】
ステップＣ２において、フラッシュメモリ制御部１１０は、ステップＣ１において発行されたprogram先のブロック（Block A）が、以前にprogramの実行を失敗したブロックであるかを確認する。すなわち、フラッシュメモリ制御部１１０は、program先のブロック（Block A）が、バッドブロックであるかを確認する。
【０１２３】
ステップＣ２における確認の結果、以前にprogramの実行を失敗したブロックに対するprogramオペレーションでない場合には（ステップＣ２のＮＯルート参照）、ステップＣ６に移行する。
【０１２４】
ステップＣ６において、アクセス管理部１０１が、システムメモリ１１のライトバッファ１５に、programオペレーション“Block A, page a, data D”を格納させる（図７の矢印（１）参照）。
【０１２５】
ステップＣ７において、フラッシュメモリ制御部１１０が、アクセス管理部１０１にCommitを応答する（図７の矢印（２）参照）。
【０１２６】
ステップＣ８において、アクセス管理部１０１が、アクセス管理情報（アクセス管理テーブル）１０４を更新する。すなわち、アクセス管理部１０１は、アクセス管理情報１０４に対して、ＳＳＤ１２の記憶領域“Block A, page a”にデータ“D”（data D）をprogramしたことを示す情報を登録する。
【０１２７】
ステップＣ９において、フラッシュメモリ制御部１１０は、バックグラウンドで、ＳＳＤ１２のフラッシュメモリ１２２の記憶領域“Block A, page a”にデータ“D”（data D）をprogramする。
【０１２８】
ステップＣ１０において、フラッシュメモリ制御部１１０は、ステップＣ９において行なったprogramが成功したかを確認する。確認の結果、programが成功した場合には（ステップＣ１０のＹＥＳルート参照）、処理を終了する。
【０１２９】
一方、ステップＣ９において行なったprogramが失敗した場合には（ステップＣ１０のＮＯルート参照）、ステップＣ１１に移行する（図７の矢印（３），（Ｐ１）参照）。
【０１３０】
ステップＣ１１において、フラッシュメモリ制御部１１０は、programが失敗したブロック（バッドブロック）とは異なる他のブロック（代替ブロック）のページ（代替記憶領域：本例では記憶領域“Block B, page b”）を選択する（図７の矢印Ｐ２参照）。フラッシュメモリ制御部１１０は、この代替記憶領域に、データ“D”をprogramする。
【０１３１】
ステップＣ１２において、フラッシュメモリ制御部１１０は、ステップＣ１１において行なったprogramが成功したかを確認する。確認の結果、programが失敗した場合には（ステップＣ１２のＮＯルート参照）、ステップＣ１１に戻り、再度、代替記憶領域の選択およびデータ“D”のprogramを実行する（図７の矢印（４）参照）。
【０１３２】
一方、ステップＣ１１において行なったprogramが成功した場合には（ステップＣ１２のＹＥＳルート参照）、ステップＣ１３に移行する。
【０１３３】
ステップＣ１３において、フラッシュメモリ制御部１１０は、アドレス変換テーブル１０４ａを更新する。すなわち、フラッシュメモリ制御部１１０は、アドレス変換テーブル１０４ａに、Block Aをバッドブロックとして登録するとともに、このBlock Aに対応付けてBlock Bを代替ブロックとして登録する（図７の矢印（５）参照）。
【０１３４】
ステップＣ１４において、フラッシュメモリ制御部１１０は、ライトバッファ１５におけるprogramオペレーション“Block A, page a, data D”を削除（クリア）し（図７の矢印（６）参照）、処理を終了する。
【０１３５】
一方、ステップＣ２における確認の結果、以前にprogramの実行を失敗したブロックに対するprogramオペレーションである場合には（ステップＣ２のＹＥＳルート参照）、ステップＣ３に移行する。
【０１３６】
ステップＣ３において、フラッシュメモリ制御部１１０は、アクセス管理部１０１に対して、Commitではなく“program失敗”を応答する（図７の矢印（７）参照）。
【０１３７】
ステップＣ４において、ステップＣ２においてバッドブロックであると判断されたブロックについて、バッドブロックデータ管理部１０２による、有効データの移動が完了しているかを確認する。すなわち、バッドブロックデータ管理部１０２による、バッドブロックにおけるバッドページ以外のページに格納されているデータ（有効データ）を、異常が検出されていない他のブロック（正常ブロック）に移動させる処理が完了しているかを確認する。
【０１３８】
確認の結果、バッドブロックデータ管理部１０２による、有効データの移動が完了していない場合には（ステップＣ４のＮＯルート参照）、ステップＣ４に戻り、有効データの移動が完了するまで、ステップＣ４を繰り返し行なう。
【０１３９】
バッドブロックデータ管理部１０２は、バッドブロックにおけるバッドページ以外のページに格納されているデータ（有効データ）を、異常が検出されていない他のブロック（正常ブロック）に移動させる処理を完了させる（図７の矢印（８）参照）。
【０１４０】
バッドブロックデータ管理部１０２による、有効データの移動が完了した場合には（ステップＣ４のＹＥＳルート参照）、ステップＣ５に移行する。
【０１４１】
ステップＣ５においては、アクセス管理部１０１は、フラッシュメモリ制御部１１０に対して、アドレス変換テーブル１０４ａの更新を指示する（図７の矢印（９）参照）。フラッシュメモリ制御部１１０は、アドレス変換テーブル１０４ａからバッド記憶領域である“Block A, page a”を削除することで更新し（図７の矢印（１０）参照）、処理を終了する。
【０１４２】
次に、第２実施形態の一例としてのコンピュータシステム１におけるリード（read）処理を、図９に示すフローチャート（ステップＤ１〜Ｄ７）に従って説明する。
【０１４３】
以下に示す例においては、例えばＣＰＵ１０によって実行されるアプリケーションから、記憶領域“Block A, page a”のデータをリードするオペレーションが発行された例について示すものとする。
【０１４４】
ステップＤ１において、アクセス管理部１０１は、アクセス管理情報１０４を参照して、リードする物理アドレスを検索する。
【０１４５】
ステップＤ２において、アクセス管理部１０１は、“Block A, page a”のデータのリードを実行する。
【０１４６】
ステップＤ３において、フラッシュメモリ制御部１１０は、ライトバッファ１５にリード対象領域である“Block A, page a”のデータが格納されているかを確認する。確認の結果、ライトバッファ１５に“Block A, page a”のデータが格納されている場合には（ステップＤ３のＹＥＳルート参照）、ステップＤ４に移行する。
【０１４７】
ステップＤ４において、フラッシュメモリ制御部１１０は、ライトバッファ１５に格納されている“Block A, page a”のデータを読み出して、アクセス管理部１０１に応答し、処理を終了する。
【０１４８】
ステップＤ３における確認の結果、ライトバッファ１５にリード対象領域である“Block A, page a”のデータが格納されていない場合は（ステップＤ３のＮＯルート参照）、ステップＤ５に移行する。
【０１４９】
ステップＤ５において、フラッシュメモリ制御部１１０は、アドレス変換テーブル１０４ａにリード対象領域である“Block A, page a”が登録されているかを確認する。
【０１５０】
確認の結果、アドレス変換テーブル１０４ａにリード対象領域である“Block A, page a”が登録されている場合には（ステップＤ５のＹＥＳルート参照）、このリード対象領域はバッドブロックであると考えられる。
【０１５１】
そこで、ステップＤ７において、フラッシュメモリ制御部１１０は、アドレス変換テーブル１０４ａにおいて“Block A, page a”に対応する代替記憶領域“Block B, page b”を取得する。そして、フラッシュメモリ制御部１１０は、ＳＳＤ１２のフラッシュメモリ１２２における記憶領域“Block B, page b”のデータを読み出して、アクセス管理部１０１に応答し、処理を終了する。
【０１５２】
一方、ステップＤ５における確認の結果、アドレス変換テーブル１０４ａにリード対象領域である“Block A, page a”が登録されていない場合には（ステップＤ５のＮＯルート参照）、リード対象領域はバッドブロックではないと考えられる。
【０１５３】
そこで、ステップＤ６において、フラッシュメモリ制御部１１０は、ＳＳＤ１２のフラッシュメモリ１２２における記憶領域“Block A, page a”のデータを読み出して、アクセス管理部１０１に応答し、処理を終了する。
【０１５４】
（Ｃ）効果
本発明の第２実施形態としてのコンピュータシステム１によれば、第１実施形態と同様の作用効果を得られる。
【０１５５】
さらに、本第２実施形態によれば、代替領域選択を行なわれた際に、フラッシュメモリ制御部１１０からアクセス管理部１０１に対して、そのバッド記憶領域と代替記憶領域とをアクセス管理部１０１に通知する必要がない。このようなアドレス変更を通知するためのインタフェースを追加する必要がなく、既存システムに対するソフトウェア変更が少なく実現することができる。
【０１５６】
（ＩＩＩ）その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【０１５７】
例えば、上述した第２実施形態においては、フラッシュメモリ制御部１１０がアドレス変換テーブル１０４ａを備え管理しているが、これに限定されるものではない。例えば、ＳＳＤ１２がアドレス変換テーブル１０４ａを備え管理してもよい。
【０１５８】
また、ＳＳＤ１２のフラッシュメモリ１２２においては、programオペレーションに応じてライトデータのライトを行なうデータ領域とは別に、代替記憶領域の提供に用いられる専用の領域（失敗時領域）を予め確保しておき、この失敗時領域から代替記憶領域を選択して用いてもよい。
【０１５９】
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【０１６０】
（ＩＶ）付記
以上の実施形態に関し、更に以下の付記を開示する。
【０１６１】
（付記１）
処理装置と、
半導体素子メモリを有し、前記処理装置によって実行される制御プログラムによって前記半導体素子メモリの記憶領域に対するアクセス制御が行なわれる記憶装置と、
前記半導体素子メモリに書き込むライトデータを一旦格納するキャッシュメモリと、
前記キャッシュメモリにライトデータを格納した後、前記半導体素子メモリに前記ライトデータを書き込む前に、前記ライトデータの書き込み完了を通知するライトバック処理を行なうライトバック処理部と、
前記半導体素子メモリにおける第１物理アドレスへのライトデータの書き込みが失敗すると、当該ライトデータを前記半導体素子メモリにおける第２物理アドレスに書き込む代替ライト処理部と、
前記第１物理アドレスと前記第２物理アドレスとを対応付けたアドレス管理情報を参照して、前記第２物理アドレスに書き込まれた前記ライトデータにデータアクセスを行なうアクセス処理部と
を備えることを特徴とする、情報処理装置。
【０１６２】
（付記２）
前記ライトデータの書き込みが失敗した前記第１物理アドレスを含むブロック内のデータを、前記ブロックとは異なる他のブロックに移動させる移動処理部
を備えることを特徴とする、付記１記載の情報処理装置。
【０１６３】
（付記３）
前記移動処理部による、前記第１物理アドレスを含むブロック内のデータの、前記ブロックとは異なる他のブロックへの移動が完了した後に、前記キャッシュメモリから前記ライトデータを削除するキャッシュ削除処理部
を備えることを特徴とする、付記２記載の情報処理装置。
【０１６４】
（付記４）
半導体素子メモリに書き込むライトデータを一旦格納するキャッシュメモリを備えるコンピュータにおいて、
前記半導体素子メモリを有し、前記コンピュータによって実行される制御プログラムによって前記半導体素子メモリの記憶領域に対するアクセス制御が行なわれる記憶装置が接続され、
前記コンピュータに、
前記キャッシュメモリにライトデータを格納した後、前記半導体素子メモリに前記ライトデータを書き込む前に、前記ライトデータの書き込み完了を通知するライトバック処理を行ない、
前記半導体素子メモリにおける第１物理アドレスへのライトデータの書き込みが失敗すると、当該ライトデータを前記半導体素子メモリにおける第２物理アドレスに書き込み、
前記第１物理アドレスと前記第２物理アドレスとを対応付けたアドレス管理情報を参照して、前記第２物理アドレスに書き込まれた前記ライトデータにデータアクセスを行なう
処理を実行させることを特徴とする、制御プログラム。
【０１６５】
（付記５）
前記ライトデータの書き込みが失敗した前記第１物理アドレスを含むブロック内のデータを、前記ブロックとは異なる他のブロックに移動させる
処理を前記コンピュータに実行させることを特徴とする、付記４記載の制御プログラム。
【０１６６】
（付記６）
前記第１物理アドレスを含むブロック内のデータの、前記ブロックとは異なる他のブロックへの移動が完了した後に、前記キャッシュメモリから前記ライトデータを削除する
処理を、前記コンピュータに実行させることを特徴とする、付記５記載の制御プログラム。
【０１６７】
（付記７）
半導体素子メモリに書き込むライトデータを一旦格納するキャッシュメモリを備えるコンピュータにおいて、
前記半導体素子メモリを有し、前記コンピュータによって実行される制御プログラムによって前記半導体素子メモリの記憶領域に対するアクセス制御が行なわれる記憶装置が接続され、
前記キャッシュメモリにライトデータを格納した後、前記半導体素子メモリに前記ライトデータを書き込む前に、前記ライトデータの書き込み完了を通知するライトバック処理と、
前記半導体素子メモリにおける第１物理アドレスへのライトデータの書き込みが失敗すると、当該ライトデータを前記半導体素子メモリにおける第２物理アドレスに書き込む処理と、
前記第１物理アドレスと前記第２物理アドレスとを対応付けたアドレス管理情報を参照して、前記第２物理アドレスに書き込まれた前記ライトデータにデータアクセスを行なう処理と
を備えることを特徴とする、情報処理方法。
【０１６８】
（付記８）
前記ライトデータの書き込みが失敗した前記第１物理アドレスを含むブロック内のデータを、前記ブロックとは異なる他のブロックに移動させる処理
を備えることを特徴とする、付記７記載の情報処理方法。
【０１６９】
（付記９）
前記第１物理アドレスを含むブロック内のデータの、前記ブロックとは異なる他のブロックへの移動が完了した後に、前記キャッシュメモリから前記ライトデータを削除する処理
を備えることを特徴とする、付記８記載の情報処理方法。
【符号の説明】
【０１７０】
１    コンピュータシステム（コンピュータ）
１０    ＣＰＵ（処理装置）
１１    システムメモリ
１１１    他ブロック格納制御部
１１２    バッファ管理部
１２    ＳＳＤ（記憶装置）
１２１    フラッシュインタフェース
１２２    フラッシュメモリ（半導体素子メモリ）
１３    記憶装置
１４    チップセット
１５    ライトバッファ（キャッシュメモリ）
１０１    アクセス管理部
１０２    バッドブロックデータ管理部（移動処理部）
１０３    テーブル管理部
１０４    アクセス管理情報
１０４ａ    アドレス変換テーブル（アドレス管理情報）
１１０    フラッシュメモリ制御部（ライトバック処理部，代替ライト処理部，アクセス処理部）
１１１    他ブロック格納制御部（代替ライト処理部）
１１２    バッファ管理部（キャッシュ削除処理部）
【図１】
2018120317.tif 000003
【図２】
2018120317.tif 000004
【図３】
2018120317.tif 000005
【図４】
2018120317.tif 000006
【図５】
2018120317.tif 000007
【図６】
2018120317.tif 000008
【図７】
2018120317.tif 000009
【図８】
2018120317.tif 000010
【図９】
2018120317.tif 000011
【図１０】
2018120317.tif 000012
【図１１】
2018120317.tif 000013