説明

コントローラ、データ記憶装置およびプログラム

【課題】通常時の応答速度を向上する。
【解決手段】実施の形態によれば、コントローラは、ビット列操作部と特殊データ設定部とを備える。ビット列操作部は、操作対象データのビット列を所定の規則に基づき操作する。特殊データ設定部は、ホストインタフェース部からの特殊データ設定要求に基づいてマジックナンバーを生成し、このマジックナンバーに対応する誤り検出符号を取得し、マジックナンバーと誤り検出符号とを操作対象データとしてビット列操作部に送信してビット列操作後の操作対象データを取得する。また、特殊データ設定部は、特殊データ設定要求から論理アドレス情報を抽出し、この論理アドレス情報に対応する記憶領域のうちユーザデータ記憶領域にビット列操作後の操作対象データにおけるマジックナンバーを、冗長領域にビット列操作後の操作対象データにおける誤り検出符号を書き込むようにアクセス部に指示する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、コントローラ、データ記憶装置およびプログラムに関する。
【背景技術】
【0002】
通常、データ記憶装置には、ホスト装置からのある論理アドレス(LBA:Logical Block Address)への読込み要求に対し、ユーザデータを返信する通常の応答ではなく、所定の応答をするように設定可能であることが求められる。一般的にデータ記憶装置は、ある論理アドレスへの読込み要求に対して所定の応答をするように設定されていなかった場合、通常の応答をするように設計されている。ただし、通常の応答を実行する前に必ず論理アドレスに対する設定を判定する構成では、通常の応答時の応答時間が長くなってしまう。そこで、記憶媒体からのユーザデータの読み出しと論理アドレスに対する設定の判定とを並列に実行することが考えられる。しかし、この場合でも、論理アドレスに対する設定の判定結果を待ってから、ユーザデータをホスト装置へ返信する必要がある。このため、通常時の応答速度が、論理アドレスに対する設定の判定時間に影響されて遅くなってしまう場合がある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平5−2830号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の一観点は、論理アドレスに対する設定の判定時間に影響されることなく、通常時の応答速度を向上できるコントローラ、データ記憶装置およびプログラムを提供することである。
【課題を解決するための手段】
【0005】
実施の形態によるコントローラは、ユーザデータ記憶領域と冗長領域とが含まれる記憶領域を複数有し、それぞれの記憶領域に論理アドレスそれぞれに対応するデータを記憶する記憶部への読み書き処理を補助するアクセス部と、論理アドレス情報と所定の応答の種別を識別する特殊データ識別情報とが含まれる特殊データ設定要求をホスト装置から受け付け、前記受け付けた特殊データ設定要求を特殊データ設定部に送信するホストインタフェース部と、第1誤り検出符号または第1誤り訂正符号の生成の元とするデータを要求元から受け付け、受け付けた前記データから、所定の方法に基づき、前記第1誤り検出符号または前記第1誤り訂正符号を生成し、生成した前記第1誤り検出符号または第1誤り訂正符号を前記要求元に送信する第1生成部と、に接続されたコントローラであって、要求元から操作対象データを受け付け、受け付けた前記操作対象データのビット列を所定の規則に基づき操作し、ビット列操作後の前記操作対象データを前記要求元に送信するビット列操作部と、前記ホストインタフェース部から前記特殊データ設定要求を受け付け、受け付けた前記特殊データ設定要求から前記特殊データ識別情報を抽出し、抽出した前記特殊データ識別情報に応じた識別ビット列を生成し、生成した前記識別ビット列を前記第1生成部に送信して前記識別ビット列に対応する第1誤り検出符号を取得し、前記識別ビット列と前記第1誤り検出符号とを前記操作対象データとして前記ビット列操作部に送信してビット列操作後の前記操作対象データを取得し、前記特殊データ設定要求から論理アドレス情報を抽出し、抽出した前記論理アドレス情報に対応する前記記憶領域のうち前記ユーザデータ記憶領域に前記ビット列操作後の操作対象データにおける前記識別ビット列を書き込むとともに前記冗長領域に前記ビット列操作後の操作対象データにおける前記第1誤り検出符号を書き込むように前記アクセス部に指示する前記特殊データ設定部と、を備える。
【図面の簡単な説明】
【0006】
【図1】実施の形態1にかかるデータ記憶装置の概略構成図。
【図2】実施の形態1にかかる記憶領域の一例。
【図3A】実施の形態1による誤り検出符号を含む操作対象データの一例。
【図3B】実施の形態1によるビット列操作後の復元操作対象データの一例。
【図3C】実施の形態1によるビット列復元操作後の復元済みデータの一例。
【図4A】実施の形態1による誤り訂正符号を含む操作対象データの一例。
【図4B】実施の形態1によるビット列操作後の復元操作対象データの一例。
【図4C】実施の形態1によるビット列復元操作後の復元済みデータの一例。
【図5】実施の形態1によるマジックナンバーを含む特殊データの一例。
【図6】実施の形態1における書込み処理の一例。
【図7】実施の形態1における特殊データ設定処理の一例。
【図8】実施の形態1における読込み処理の一例。
【図9】実施の形態2にかかるデータ記憶装置の概略構成図。
【図10】実施の形態2にかかる記憶領域の一例。
【図11】実施の形態2における書込み処理の一例。
【図12】実施の形態2における特殊データ設定処理の一例。
【図13】実施の形態2における読込み処理の一例。
【発明を実施するための形態】
【0007】
以下、例示する実施の形態にかかるコントローラ、データ記憶装置およびプログラムについて、図面を参照して詳細に説明する。
【0008】
<実施の形態1>
(構成)
実施の形態1では、以下のようなコントローラ、データ記憶装置およびプログラムを例示する。図1は、実施の形態1にかかるデータ記憶装置100の概略構成を示す。図1に示すように、データ記憶装置100は、コントローラ110と、第1生成部121および第1判定部122と、ホストインタフェース部130と、アクセス部150と、記憶部160と、を備える。コントローラ110は、ビット列操作部111と、ビット列復元部112と、特殊データ設定部113と、書込み部114と、読込み部115とを含む。このコントローラ110は、たとえばデータバス140を介してアクセス部150およびホストインタフェース部130と相互に接続されている。以下の説明において、特殊データとは、ホスト装置へ所定の応答を送信するためのデータを意味する。
【0009】
記憶部160は、複数の記憶領域を有する。それぞれの記憶領域には、データ記憶装置100の論理アドレスそれぞれに対応するデータが記憶される。なお、実施の形態1において、データ記憶装置100の論理アドレスと記憶部160の記憶領域に対する物理的なアドレス(物理アドレス)との対応付けは、いかなる形態であってよい。たとえば、論理アドレスと物理アドレスとが静的に固定されている構成でも良いし、論理アドレスと物理アドレスの対応付けをアドレス変換テーブルで管理する構成でもよい。アドレス変換テーブルは、所定のタイミングで動的に変更可能であるとする。
【0010】
図2に、記憶部160が有する記憶領域の一例を示す。図2に示すように、各記憶領域161は、ユーザデータを記憶するユーザデータ記憶領域162と、冗長データを記憶する冗長領域163とを含む。冗長データには、たとえば誤り検出符号や誤り訂正符号を用いてよい。
【0011】
アクセス部150は、コントローラ110による記憶部160への書込み処理および読込み処理を補助する。ホストインタフェース部130は、データ記憶装置100と図示しないホスト装置とのインタフェース処理を行う。
【0012】
より詳細には、ホストインタフェース部130は、ホスト装置からある論理アドレスに対する設定要求を受け付ける。この設定要求は、ホスト装置からデータ記憶装置100のある論理アドレスに対して読込み要求が発行された時に、通常のユーザデータを応答するのではなく、所定の応答をするように設定することを要求するものである。本開示では、この設定要求を特殊データ設定要求と呼ぶ。特殊データ設定要求には、たとえば論理アドレス情報と、所定の応答の種別を識別する特殊データ識別情報とが含まれる。ホストインタフェース部130は、ホスト装置から特殊データ設定要求を受け付けると、受け付けた特殊データ設定要求を特殊データ設定部113に送信する。
【0013】
また、ホストインタフェース部130は、ホスト装置から書込み要求を受け付ける。書込み要求には、たとえば書込み先の論理アドレス情報と、書込み対象のデータ(以下、書込み対象データという)とが含まれる。ホストインタフェース部130は、ホスト装置から書込み要求を受け付けると、受け付けた書込み要求を書込み部114に送信する。
【0014】
さらに、ホストインタフェース部130は、ホスト装置から読込み要求を受け付ける。読込み要求には、たとえば読込み先の論理アドレス情報が含まれる。ホストインタフェース部130は、ホスト装置から読込み要求を受け付けると、受け付けた読込み要求を読込み部115に送信する。また、ホストインタフェース部130は、読込み要求に応じた読込み応答を読込み部115から受け付けると、受け付けた読込み応答をホスト装置に送信する。読込み応答には、ホスト装置から要求された読込み対象のデータか、もしくは、読込み状態情報が含まれる。読込み状態情報とは、読込みの状態を示す情報である。読込みの状態を示す情報としては、たとえば読込みエラーを示す情報などがある。
【0015】
第1生成部121は、誤り検出符号の要求元から、誤り検出符号の生成もとになるデータを受け付ける。誤り検出符号の要求元には、たとえば特殊データ設定部113や書込み部114などがある。第1生成部121は、予め定めておいた所定の方法に基づき、受け付けたデータから誤り検出符号を生成する。また、第1生成部121は、生成した誤り検出符号を要求元に送信する。なお、本開示において、誤り検出符号を誤り訂正符号と読み替えてもよい。
【0016】
第1判定部122は、誤り判定の要求元から、誤り検出対象データおよびこれに対応する誤り検出符号を受け付ける。誤り判定の要求元には、たとえば書込み部115などがある。第1判定部122は、予め定めておいた所定の方法に基づき、受け付けた誤り検出対象データおよび誤り検出符号に誤りが存在するか否かを判定する誤り判定処理を実行する。また、第1判定部122は、誤り判定処理の結果を要求元に送信する。なお、誤り検出符号を誤り訂正符号と読み替えた場合は、この誤り判定処理が、「予め定めておいた所定の方法に基づき、受け付けた誤り訂正対象データおよび誤り訂正符号の誤り訂正が可能であるか否かを判定する誤り判定処理」に置き換えられる。
【0017】
ビット列操作部111は、ビット列操作の要求元から、操作対象データを受け付ける。操作対象データは、たとえば所定の応答に対応づけられた特殊データと、この特殊データのビット列に対応する誤り検出符号とを含む。ビット列操作の要求元には、たとえば特殊データ設定部113などがある。ビット列操作部111は、予め定めておいた所定の規則に従って、受け付けた操作対象データのビット列を操作するビット列操作処理を実行する。所定の規則は、ビット列操作の結果として誤りが検出されるビット列の操作の規則となっていること、および、ビット列操作後のビット列を元のビット列に復元可能であるビット列の操作の規則となっていること、とすることができる。このような所定の規則の例としては、所定のビットの値(0または1)を反転させることが挙げられる。ただし、これに限るものではない。また、ビット列操作部111は、ビット列操作後の操作対象データを要求元に送信する。なお、誤り検出符号を誤り訂正符号と読み替えた場合、所定の規則は、「ビット列操作後のビット列に対する誤り訂正が不可能になること、および、ビット列操作後のビット列を元のビット列に復元可能であること」とすることができる。このような所定の規則の例としては、誤り訂正能力を超えたビット数について、所定のビットの値(0または1)を反転させることが挙げられる。ただし、これに限るものではない。
【0018】
ビット列復元部112は、ビット列復元操作の要求元から、復元操作対象データを受け付ける。ビット列復元操作の要求元には、たとえば書込み部115などがある。復元操作対象データは、たとえばビット列操作後の操作対象データである。すなわち、復元操作対象データは、ビット列操作後の特殊データおよび誤り検出符号を含む。ビット列復元部112は、予め定めておいた所定の規則に従って、復元操作対象データのビット列を復元操作するビット列復元操作処理を実行する。ビット列復元操作とは、復元操作対象データのビット列が、ビット列操作部111によって操作されたものであった場合に、ビット列操作前の元の状態に復元することを意味する。ビット列操作処理を前述した例(所定のビットの値を反転させる)とした場合、ビット列復元操作処理は、所定のビットの値をもう一度反転させることとすることができる。これにより、ビット列操作されたビット列を、元のビット列に復元することができる。なお、ビット列復元操作処理は、ビット列操作部111が実行するビット列操作処理の内容に応じて種々変形可能である。また、ビット列復元部112は、ビット列復元操作後の復元操作対象データを要求元に送信する。なお、誤り検出符号を誤り訂正符号と読み替えた場合、ビット列操作処理において誤り訂正能力を超えたビット数について所定のビットの値を反転させる例に対するビット列復元操作処理では、誤り訂正能力を超えたビット数について、所定のビットの値がもう一度反転させられる。これにより、ビット列操作されたビット列を、元のビット列に復元することができる。
【0019】
ここで、ビット列操作からビット列復元操作にかかる一連の処理の具体例を、図3A〜図4Cを用いて詳細に説明する。なお、前述したように、ビット列操作とビット列復元操作との処理は、以下で説明する具体例に限られるものではない。
【0020】
まず、図3A〜図3Cを用いて、誤り検出符号を用いる場合のビット列操作からビット列復元操作にかかる一連の処理の具体例を説明する。図3Aは、操作対象データの一例を示す。図3Aに示すように、操作対象データ11は、たとえば記憶部160の記憶領域161におけるユーザデータ記憶領域162の長さと同じビット長の特殊データ12と、下位数ビットの誤り検出符号13とよりなる。誤り検出符号13は、特殊データ12から所定の方法に基づいて生成された値である。
【0021】
ビット列操作処理では、ビット列操作部111は、操作対象データ11(図3A)を要求元から受け取ると、これの所定のビット(たとえば下位から2番目のビット13a)の値を反転する。これにより、図3Bに示すように、正しい誤り検出符号13から誤りを含む誤り検出符号13Aに変換された復元操作対象データ11Aを得る。なお、操作対象のビットは、複数であってもよい。また、ビット列操作部111に入力するデータは、操作対象データ11における特殊データ12および誤り検出符号13の少なくとも一方であればよい。言い換えれば、操作対象とするビット列は、特殊データ12および誤り検出符号13の少なくとも一方でよく、また、操作対象としたビット列のみをビット列操作部111に入力すればよい。
【0022】
一方、ビット列復元操作処理では、ビット列復元部112は、図3Bに示す復元操作対象データ11Aを受け取ると、これの所定のビット13aの値を再度反転する。これにより、図3Cに示すように、所定のビット13aの値が復元された復元済みデータ11Bを得る。図3Aと図3Cとを比較すると明らかなように、復元済みデータ11Bのビット列(図3C)は、操作対象データ11のビット列(図3A)と同じである。すなわち、ビット列復元操作処理の結果、復元操作対象データ11Aのビット列がビット列操作前の操作対象データ11のビット列に戻されている。なお、ビット列復元部112に入力するデータは、特殊データ12および誤り検出符号13のうち少なくとも操作対象としたビット列であればよい。
【0023】
本具体例では、誤り検出符号13のビット列を操作対象としているが、これに限られない。たとえば、特殊データ12のビット列を操作対象としてもよい。または、誤り検出符号13のビット列と、特殊データ12のビット列との両方を操作対象としてもよい。つまり、ビット列操作後の復元操作対象データ11Aを第1判定部122に入力した場合に誤りが検出され、かつ、ビット列復元操作後の復元済みデータ11Bを第1判定部122に入力した場合に誤りが検出されない(つまり正しい)のであれば、如何様にも変形することができる。
【0024】
次に、図4A〜図4Cを用いて、誤り訂正符号を用いる場合のビット列操作からビット列復元操作にかかる一連の処理の具体例を説明する。図4Aは、操作対象データの一例を示す。図4Aに示すように、操作対象データ21は、特殊データ12と、下位数ビットの誤り訂正符号23とよりなる。誤り訂正符号23は、特殊データ12から所定の方法に基づいて生成された値である。
【0025】
ビット列操作処理では、ビット列操作部111は、操作対象データ21(図4A)を要求元から受け取ると、これのビット列のうち誤り訂正能力を超えた数の所定のビット(たとえば下位2〜4番目のビット群23a)の値をそれぞれ反転する。これにより、図4Bに示すように、正しい誤り訂正符号23から誤り訂正能力以上の誤りを含む誤り訂正符号23Aに変換された復元操作対象データ21Aを得る。なお、ビット列操作部111に入力するデータは、操作対象データ21における特殊データ12および誤り訂正符号23の少なくとも一方であればよい。言い換えれば、操作対象とするビット列は、特殊データ12および誤り訂正符号23の少なくとも一方でよく、また、操作対象としたビット列のみをビット列操作部111に入力すればよい。
【0026】
一方、ビット列復元操作処理では、ビット列復元部112は、図4Bに示す復元操作対象データ21Aを受け取ると、これの所定のビット群23aの値を再度反転する。これにより、図4Cに示すように、所定のビット群23aの値が復元された復元済みデータ21Bを得る。図4Aと図4Cとを比較すると明らかなように、復元済みデータ21Bのビット列(図4C)は、操作対象データ21のビット列(図4A)と同じである。すなわち、ビット列復元操作処理の結果、復元操作対象データ21Aのビット列がビット列操作前の操作対象データ21のビット列に戻されている。なお、ビット列復元部112に入力するデータは、特殊データ12および誤り訂正符号23のうち少なくとも操作対象としたビット列であればよい。
【0027】
本具体例では、誤り訂正能力を2ビットとし、それを超える3ビット分の値を反転する場合を例示している。この際、誤り検出符号13の場合と同様に、誤り訂正符号23のビット列を操作対象としているが、これに限られない。たとえば、特殊データ12のビット列を操作対象としてもよい。または、誤り訂正符号23のビット列と、特殊データ12のビット列との両方を操作対象としてもよい。つまり、ビット列操作後の操作データ21Aを第1判定部122に入力した場合に誤り訂正が不可能であって、かつ、ビット列復元操作後の復元済みデータ21Bを第1判定部122に入力した場合に誤り訂正が可能であるのであれば、如何様にも変形することができる。
【0028】
図1に戻って説明する。書込み部114は、ホストインタフェース部130から書込み要求を受け付ける。書込み部114は、受け付けた書込み要求から書込み対象データを抽出する。また、書込み部114は、抽出した書込み対象データを第1生成部121に送信し、書込み対象データに対応する誤り検出符号を取得する。なお、第1生成部121に送信するデータには、書込み対象データ以外のデータがさらに含まれていてもよい。たとえば、受け付けた書込み要求から抽出した論理アドレス情報を示すビット列や、所定のビット列がさらに含まれていてもよい。
【0029】
また、書込み部114は、受け付けた書込み要求から書込み先の論理アドレス情報を抽出する。書込み部114は、抽出した論理アドレス情報に対応する記憶部160の記憶領域161に書込み対象データと誤り検出符号とを書き込むように、アクセス部150に指示する。
【0030】
特殊データ設定部113は、ホストインタフェース部130から、特殊データ設定要求を受け付ける。特殊データ設定部113は、特殊データ設定要求から、所定の応答の種別を識別する特殊データ識別情報を抽出する。また、特殊データ設定部113は、抽出した所定の応答の種別に応じたビット列である識別ビット列を含む特殊データを生成する。
【0031】
識別ビット列とは、複数の応答の種別に一意に対応したビット列をいう。識別ビット列をマジックナンバーとも言う。識別ビット列は、複数の識別対象(複数の応答の種別)から特定の対象(特定の応答の種別)を一意に識別できる。
【0032】
ここで図5に、マジックナンバーを含む特殊データの一例を示す。図5に示すように、特殊データ32は、図2に示した記憶領域161におけるユーザデータ記憶領域162と同サイズのビット列で構成される。ここで、たとえば所定の応答の種別を3ビットで表現できる場合、特殊データ32のうちの上位3ビットをマジックナンバー32aに使用する。特殊データ32における残りのビットは、たとえば全て‘0’よりなるNULLデータ32bとしてよい。ただし、これに限らず、特殊データ32をコントローラ100において管理または予測可能な値で構成できるのであれば、種々変形できる。
【0033】
図1に戻り説明する。特殊データ設定部113は、生成した特殊データ32を第1生成部121に送信し、特殊データ32のビット列に対応する誤り検出符号13を取得する。第1生成部121に送信するデータには、特殊データ32以外のデータがさらに含まれていてもよい。たとえば、受け付けた特殊データ設定要求から抽出した論理アドレス情報を示すビット列や、所定のビット列がさらに含まれていてもよい。
【0034】
また、特殊データ設定部113は、特殊データ32と誤り検出符号13とをビット列操作部111に送信し、ビット列操作後の特殊データ32および誤り検出符号13を取得する。
【0035】
さらに、特殊データ設定部113は、受け付けた特殊データ設定要求から論理アドレス情報を抽出する。特殊データ設定部113は、抽出した論理アドレス情報に対応する記憶部160の記憶領域161に、ビット列操作後の特殊データ32および誤り検出符号13を書き込むように、アクセス部150に指示する。
【0036】
読込み部115は、ホストインタフェース部130から読込み要求を受け付ける。読込み部115は、受け付けた読込み要求から論理アドレス情報を抽出する。読込み部115は、抽出した論理アドレス情報が示す論理アドレスに対応する記憶部160の記憶領域161に記憶されているデータを読み込むように、アクセス部150に指示し、これによって読み込まれたデータを取得する。
【0037】
また、読込み部115は、読み込んだデータのうち、ユーザデータ記憶領域162に格納されていたデータを誤り検出対象データとして、また、冗長領域163に格納されていたデータを誤り検出対象データに対応する誤り検出符号として、第1判定部122に送信する。ここで、書込み部114および特殊データ設定部113が第1生成部121に送信するデータに、書込み対象データ11または特殊データ32以外のデータをさらに含ませていた場合、そのさらに含ませていたデータについても第1判定部122に送信される。たとえば書込み要求または特殊データ設定要求に含まれる論理アドレス情報を示すビット列をさらに含ませていた場合、読込み要求から抽出した論理アドレス情報を示すビット列をさらに第1判定部122に送信する。また、たとえば所定のビット列をさらに含ませていた場合、この所定のビット列をさらに第1判定部122に送信する。その後、読込み部115は、第1判定部122から送信された第1の判定結果を取得する。
【0038】
第1判定部122から取得した第1の判定結果が誤りが検出されなかった旨の結果であった場合、読込み部115は、記憶領域161から読み込んだデータのうちユーザデータ記憶領域162に格納されていたデータを含む読込み応答を、ホストインタフェース部130に送信する。なお、読込み応答は、読み込んだデータそのものであってもよい。また、誤り検出符号に代えて誤り訂正符号を用いた場合、取得した第1の判定結果が誤り訂正処理が可能である旨の結果であったときは、読込み部115は、読み込んだデータの誤りを訂正する。また、読込み部115は、誤り訂正されたデータのうちのユーザデータ記憶領域162に格納されていたデータを含む読込み応答を、ホストインタフェース部130に送信する。すなわち、特殊データ32が対応付けられていない論理アドレスに対する読込み要求であって、記憶部160に記憶されたデータのビット列に誤りが生じなかったものまたは記憶部160に記憶されたデータのビット列に誤りが生じたものの誤り訂正可能な範囲であったものについては、通常必要な誤り検出処理または誤り訂正処理によってホスト装置に読込み応答を送信することができる。
【0039】
ただし、特殊データ32として記憶部160に記憶されたデータのビット列(ビット列操作後のもの)に誤りが生じた結果、偶然、前記誤りが生じたビット列が、ビット列復元部112によるビット列復元操作後のビット列と同じになる場合、または前記誤りが生じたビット列の誤りが誤り訂正可能な範囲になってしまう場合が考えられる。このような場合、この特殊データ32が設定された論理アドレスに対する読込み要求に対しても、第1の判定結果が誤りが検出されなかった旨、または誤り訂正処理が可能である旨の結果であった場合と同様の読込み応答が実行されることとなる。このため、特殊データ32に基づいた所定の応答がホスト装置に返らなくなる可能性がある。ただし、このようなケースは、記憶部160に記憶されたデータに誤りが生じた結果として起こるものである。ここで、記憶部160に記憶されたデータに誤りが生じた際に正確でない応答がホスト装置に返る可能性があることは、厳密な設計に要するコストとのトレードオフである。このため、当該動作を一概に誤った動作であるとする必要はない。この結果、通常の読込み処理の高速化が図れる。
【0040】
一方、第1判定部122から取得した第1の判定結果が誤りが検出された旨または誤り訂正処理が不能である旨の結果であった場合、読込み部115は、記憶領域161から読み込んだデータ、すなわちユーザデータ記憶領域162に格納されていたデータと冗長領域163に格納されていたデータとを、ビット列復元部112に送信し、ビット列復元部112からビット列復元操作後のデータを取得する。
【0041】
また、読込み部115は、ビット列復元部112から取得したビット列復元操作後のデータのうち、ユーザデータ記憶領域162に格納されていたビット列復元操作後のデータを誤り検出対象データとして、また、冗長領域163に格納されていたビット列復元操作後のデータを誤り検出対象データに対応する誤り検出符号として、それぞれ第1判定部122に送信する。ここで、書込み部114および特殊データ設定部113が第1生成部121に送信するデータに書込み対象データまたは特殊データ32以外のデータをさらに含ませていた場合、そのさらに含ませていたデータについても第1判定部122に送信される。たとえば書込み要求または特殊データ設定要求に含まれる論理アドレス情報を示すビット列をさらに含ませていた場合、読込み要求から抽出した論理アドレス情報を示すビット列をさらに第1判定部122に送信する。また、たとえば所定のビット列をさらに含ませていた場合、この所定のビット列をさらに第1判定部122に送信する。その後、読込み部115は、第1判定部122から送信された第2の判定結果を取得する。
【0042】
第1判定部122から取得した第2の判定結果が誤りが検出されなかった旨の結果であった場合、読込み部115は、ビット列復元操作後のデータのうちユーザデータ記憶領域162に格納されていた特殊データ32の所定ビットをマジックナンバー32aとみなして、特殊データ識別情報を判別する。なお、誤り検出符号に代えて誤り訂正符号を用いた場合、読込み部115は、取得した第2の判定結果が誤り訂正処理が可能である旨の結果であれば、ビット列復元操作後のデータの誤りを訂正する。また、読込み部115は、誤り訂正されたデータのうちユーザデータ記憶領域162に格納されていたデータの所定ビットをマジックナンバー32aとみなして、特殊データ識別情報を判別する。さらに、読込み部115は、判別した特殊データ識別情報に応じた所定の応答を、ホストインタフェース部130に送信する。すなわち、特殊データが対応付けられている論理アドレスに対する読込み要求であって、記憶部160に記憶されたデータのビット列に誤りが生じなかったもの、または記憶部160に記憶されたデータのビット列に誤りが生じたもののビット列復元操作の結果、ビット列の誤りが誤り訂正可能な範囲であったものについては、所定の応答をホスト装置に送信することができる。
【0043】
ただし、通常のユーザデータとして記憶部160に記憶されたデータのビット列(ビット列操作されていないもの)に誤りが生じた結果、偶然、前記誤りが生じたデータのビット列が、ビット列操作部111によるビット列操作後のビット列と同じになる場合、または、前記誤りが生じたビット列をビット列復元部112がビット列復元操作を実行し、そのビット列復元操作後のビット列の誤りが誤り訂正可能な範囲になる場合が考えられる。このような場合、この通常のユーザデータが記録された論理アドレスに対する読込み要求に対しても、第2の判定結果が誤りが検出されなかった旨または誤り訂正処理が可能である旨の結果であった場合と同様に、所定の応答が実行されることとなる。このため、通常のユーザデータとしての読込み応答がホスト装置に返らなくなる可能性がある。ただし、このようなケースは、記憶部160に記憶されたデータに誤りが生じた結果として起こるものである。上述したように、記憶部160に記憶されたデータに誤りが生じた際に正確でない応答がホスト装置に返る可能性があることは、厳密な設計に要するコストとのトレードオフである。このため、当該動作を一概に誤った動作であるとする必要はない。
【0044】
一方、第1判定部122から取得した第2の判定結果が誤りが検出された旨または誤り訂正処理が不能である旨の結果であった場合、読込み部115は、読込みエラーを示す読込み状態情報を読込み応答として、ホストインタフェース部130に送信する。
【0045】
(動作)
次に、実施の形態1における処理手順の一例について、図面を参照して詳細に説明する。図6は、実施の形態1における書込み処理の一例を示す。図7は、実施の形態1における特殊データ設定処理の一例を示す。図8は、実施の形態1における読込み処理の一例を示す。
【0046】
・書込み処理
まず、実施の形態1における書込み処理の一例を、図6を参照して詳細に説明する。図6に示すように、書込み処理では、まず、ホスト装置からの書込み要求に対して、誤り検出符号を生成する(ステップS101)。より詳細には、ホストインタフェース部130は、ホスト装置から書込み要求を受け付ける。書込み要求には、論理アドレス情報と、書込み対象データとが含まれる。ホストインタフェース部130は、ホスト装置から書込み要求を受け付けると、受け付けた書込み要求を書込み部114に送信する。書込み部114は、ホストインタフェース部130から書込み要求を受け付けると、この書込み要求から書込み対象データを抽出する。つづいて、書込み部114は、抽出した書込み対象データを、第1生成部121に送信する。なお、第1生成部121に送信するデータには、書込み対象データ以外のデータがさらに含まれていてもよい。例えば、書込み要求から抽出した論理アドレス情報を示すビット列や、所定のビット列がさらに含まれていてもよい。第1生成部121は、要求元である書込み部114から、誤り検出符号の生成のもとになる書込み対象データを受け付けると、受け付けた書込み対象データから、所定の方法に基づき、誤り検出符号を生成する。生成された誤り検出符号は、第1生成部121から要求元である書込み部114に送信される。その後、書込み部214は、書込み対象データに対応する誤り検出符号を第1生成部121から取得する。なお、以降の説明を含め、誤り検出符号を誤り訂正符号と読み替えてもよい。
【0047】
つぎに、抽出した書込み対象データと、取得した誤り検出符号とを、記憶部160内の記憶領域161に書き込み(ステップS102)、その後、書込み処理を終了する。より詳細には、書込み部114は、書込み要求から論理アドレス情報を抽出する。書込み部114は、抽出した論理アドレス情報に対応する記憶部160の記憶領域161に、同じく抽出した書込み対象データと取得した誤り検出符号を書き込むように、アクセス部150に指示する。アクセス部150は、書込み部114から入力された書込み対象データと誤り検出符号とを、同じく書込み部114から入力された論理アドレス情報に対応する記憶部160の記憶領域161に書き込む。
【0048】
・特殊データ設定処理
次に、実施の形態1における特殊データ設定処理の一例を、図7を参照して詳細に説明する。図7に示すように、特殊データ設定処理では、まず、ホスト装置からの特殊データ設定要求に対して、マジックナンバーを含む特殊データ32を生成する(ステップS201)。より詳細には、ホストインタフェース部130は、ホスト装置から特殊データ設定要求を受け付ける。特殊データ設定要求には、書込み先の論理アドレス情報と、所定の応答の種別を識別する特殊データ識別情報とが含まれる。ホストインタフェース部130は、ホスト装置から特殊データ設定要求を受け付けると、受け付けた特殊データ設定要求を特殊データ設定部113に送信する。特殊データ設定部113は、ホストインタフェース部130から特殊データ設定要求を受け付けると、この特殊データ設定要求から特殊データ識別情報を抽出する。つづいて、特殊データ設定部113は、上述において図5を用いて説明したように、抽出した特殊データ識別情報に応じたビット列のマジックナンバーを含む特殊データ32を生成する。
【0049】
つぎに、生成した特殊データ32を用いて、誤り検出符号を生成する(ステップS202)。より詳細には、特殊データ設定部113は、生成した特殊データ32を第1生成部121に送信する。なお、第1生成部121に送信するデータには、特殊データ32以外のデータがさらに含まれていてもよい。たとえば、特殊データ設定要求から抽出した論理アドレス情報を示すビット列や、所定のビット列がさらに含まれていてもよい。第1生成部121は、要求元である特殊データ設定部113から特殊データ32を受け付けると、この受け付けた特殊データ32から、所定の方法に基づき、誤り検出符号を生成する。生成された誤り検出符号は、第1生成部121から要求元である特殊データ設定部113に送信される。これにより、特殊データ設定部113は、生成した特殊データ32のビット列に対応する誤り検出符号を取得する。なお、以降の説明において、特殊データ32のビット列と誤り検出符号のビット列とからなるデータを、操作対象データという。
【0050】
つぎに、生成した特殊データ32および取得した誤り検出符号よりなる操作対象データにおける所定のビットの値を操作する(ステップS203)。より詳細には、特殊データ設定部113は、生成した特殊データ32と取得した誤り検出符号とを操作対象データとして、ビット列操作部111に送信する。ビット列操作部111は、要求元である特殊データ設定部113から操作対象データを受け付けると、上述したように、所定の規則に従って、受け付けた操作対象データのビット列を操作する。その後、ビット列操作部111は、ビット列操作後の操作データを、要求元である特殊データ設定部113に送信する。これにより、特殊データ設定部113が、ビット列操作後の特殊データ32および誤り検出符号を取得する。なお、上述したように、誤り検出符号を誤り訂正符号に置き換えてもよい。
【0051】
つぎに、ビット列操作後の特殊データ32および誤り検出符号を記憶部160に書き込み(ステップS204)、その後、特殊データ設定処理を終了する。より詳細には、特殊データ設定部113は、特殊データ設定要求から論理アドレス情報を抽出する。特殊データ設定部113は、抽出した論理アドレス情報に対応する記憶部160の記憶領域161に、ビット列操作後の特殊データ32および誤り検出符号を書き込むように、アクセス部150に指示する。アクセス部150は、特殊データ設定部113から入力されたビット列操作後の特殊データ32および誤り検出符号を、同じく特殊データ設定部113から入力された論理アドレス情報に対応する記憶部160の記憶領域161に書き込む。
【0052】
・読込み処理
次に、実施の形態1における読込み処理の一例を、図8を参照して詳細に説明する。図8に示すように、読込み処理では、まず、ホスト装置からの読込み要求に応じて、記憶部160からデータを読み込む(ステップS301)。より詳細には、ホストインタフェース部130は、ホスト装置から読込み要求を受け付ける。読込み要求には、読込み対象データの格納先を示す論理アドレス情報が含まれる。ホストインタフェース部130は、ホスト装置から読込み要求を受け付けると、受け付けた読込み要求を読込み部115に送信する。読込み部115は、ホストインタフェース部130から読込み要求を受け付けると、この読込み要求から論理アドレス情報を抽出する。その後、読込み部115は、抽出した論理アドレス情報が示す論理アドレスに対応する記憶部160の記憶領域161に記憶されているデータを読み込むように、アクセス部150に指示する。アクセス部150は、読込み部115から入力された論理アドレス情報が示す論理アドレスに対応する記憶部160の記憶領域161に記憶されているデータを読み込み、これを読込み部115に返答する。これにより、読込み部115が、読込み対象データを取得する。
【0053】
つぎに、読み込んだデータに対する誤り検出処理を実行する(ステップS302)。より詳細には、読込み部115は、読み込んだデータのうち、ユーザデータ記憶領域162に格納されていたデータを誤り検出対象データとして、また、冗長領域163に格納されていたデータを誤り検出符号として、第1判定部122に送信する。ここで、書込み部114および特殊データ設定部113が、第1生成部121に送信するデータに、ユーザデータ記憶領域162に格納されていたデータ以外のデータをさらに含ませていた場合、そのさらに含ませていたデータについても第1判定部122に送信する。たとえば、書込み要求または特殊データ設定要求に含まれる論理アドレス情報を示すビット列をさらに含ませていた場合、読込み要求から抽出した論理アドレス情報を示すビット列をさらに第1判定部122に送信する。また、所定のビット列をさらに含ませていた場合、所定のビット列をさらに第1判定部122に送信する。第1判定部122は、要求元である読込み部115から、誤り検出対象データおよび誤り検出符号を受け付けると、所定の方法に基づき、受け付けた誤り検出対象データおよび誤り検出符号のビット列に誤りが存在するか否かを判定する。その後、第1判定部122は、この判定結果(第1判定結果)を要求元である読込み部115に送信する。これにより、読込み部115が第1判定部122から送信された第1判定結果を取得する。なお、上述したように、誤り検出符号を誤り訂正符号と読み替えてもよい。
【0054】
つぎに、ステップS302による誤り判定処理の結果として誤りが検出されたか否かを判定する(ステップS303)。より詳細には、第1判定部122から取得した第1判定結果が誤りが検出されなかった旨の結果であった場合(ステップS303のNO)、ステップS304に進む。一方、取得した第1判定結果が誤りが検出された旨の結果であった場合(ステップS303のYES)、ステップS305に進む。なお、誤り検出符号に代えて誤り訂正符号を用いた場合、読込み部115は、第1判定結果が誤り訂正処理が可能である旨の結果であれば(ステップS303のNO)、ステップS304に進み、第1判定結果が誤り訂正処理が不能である旨の結果であれば(ステップS303のYES)、ステップS305に進む。
【0055】
ステップS304では、ステップS301で読み込んだデータを読込み応答としてホスト装置へ送信する。より詳細には、読込み部115は、ステップS301で読み込んだデータのうちユーザデータ記憶領域162に格納されていたデータを読込み応答として、ホストインタフェース部130に送信する。なお、誤り検出符号に代えて誤り訂正符号を用いた場合、読込み部115は、読み込んだデータの誤りを訂正する。また、読込み部115は、誤り訂正されたデータのうちユーザデータ記憶領域162に格納されていたデータを読込み応答として、ホストインタフェース部130に送信する。読込み応答には、ホスト装置から要求された読込み対象データか、もしくは、読込み状態情報が含まれる。読込み状態情報は、読込みの状態を示す情報である。読込みの状態を示す情報としては、たとえば読込みエラーを示す情報がある。ホストインタフェース部130は、読込み部115から読込み応答を受け付けると、ホスト装置にこの読込み応答を送信し、その後、読込み処理を終了する。
【0056】
また、ステップS305では、ステップS301で読み込んだデータのビット列を復元操作する。より詳細には、読込み部115は、ステップS301で読み込んだデータ(ユーザデータ記憶領域162に格納されていたデータ、および、冗長領域163に格納されていたデータ)を、ビット列復元部112に送信する。ビット列復元部112は、要求元である読込み部115から復元操作対象データを受け付けると、上述したように、この操作対象データのビット列の復元操作を実行する。その後、ビット列復元部112は、ビット列復元操作後のデータを、要求元である読込み部115に送信する。これにより、読込み部115が、ビット列復元操作後のデータを取得する。なお、上述したように、誤り検出符号を誤り訂正符号と読み替えることも可能である。
【0057】
つぎに、ビット列復元操作後のデータに対する誤り検出処理を実行する(ステップS306)。より詳細には、読込み部115は、ビット列復元部112から取得したビット列復元操作後のデータのうちユーザデータ記憶領域162に格納されていたビット列復元操作後のデータを誤り検出対象データとして、また、冗長領域163に格納されていたビット列復元操作後のデータを誤り検出符号として、第1判定部122に送信する。ここで、書込み部114および特殊データ設定部113が第1生成部121に送信するデータにユーザデータ記憶領域162に格納されるデータ以外のデータをさらに含ませていた場合、そのさらに含ませていたデータについても第1判定部122に送信する。たとえば、書込み要求または特殊データ設定要求に含まれる論理アドレス情報を示すビット列をさらに含ませていた場合、読込み要求から抽出した論理アドレス情報を示すビット列をさらに第1判定部122に送信する。また、所定のビット列をさらに含ませていた場合、所定のビット列をさらに第1判定部122に送信する。第1判定部122は、要求元である読込み部115から、誤り検出対象データおよび誤り検出符号を受け付けると、所定の方法に基づき、受け付けた誤り検出対象データおよび誤り検出符号に誤りが存在するか否かを判定する。その後、第1判定部122は、この判定結果(第2判定結果)を要求元である読込み部115に送信する。なお、上述したように、誤り検出符号を誤り訂正符号と読み替えてもよい。
【0058】
つぎに、ステップS306による誤り判定処理の結果として誤りが検出されたか否かを判定する(ステップS307)。より詳細には、第1判定部122から取得した第2判定結果が誤りが検出されなかった旨の結果であった場合(ステップS307のNO)、ステップS308に進む。一方、取得した第2判定結果が誤りが検出された旨の結果であった場合(ステップS307のYES)、ステップS309に進む。なお、誤り検出符号に代えて誤り訂正符号を用いた場合、読込み部115は、第2判定結果が誤り訂正処理が可能である旨の結果であれば(ステップS307のNO)、ステップS308に進み、第2判定結果が誤り訂正処理が不能である旨の結果であれば(ステップS307のYES)、ステップS309に進む。
【0059】
ステップS308では、ステップS305のビット列復元操作によって得られた特殊データ32におけるマジックナンバー32aに従って所定の応答を実行する。より詳細には、読込み部115は、ステップS305で得られたビット列復元操作後のデータのうちユーザデータ記憶領域162に格納されていたデータの所定ビットをマジックナンバー32aとみなして、特殊データ識別情報を判別する。なお、誤り検出符号に代えて誤り訂正符号を用いた場合、読込み部115は、ステップS305で得られたビット列復元操作後のデータの誤りを訂正し、この誤り訂正されたデータのうちユーザデータ記憶領域162に格納されていたデータの所定ビットをマジックナンバー32aとみなして、特殊データ識別情報を判別する。つづいて、読込み部115は、判別した特殊データ識別情報に従って、所定の応答を読込み応答として、ホストインタフェース部130に送信する。ホストインタフェース部130は、読込み部115から所定の応答を受け付けると、ホスト装置に所定の応答を読込み応答として送信し、その後、読込み処理を終了する。
【0060】
一方、ステップS309では、ホスト装置に読込みエラーを応答する。より詳細には、読込み部115は、読込みエラーを示す読込み状態情報を読込み応答として、ホストインタフェース部130に送信する。ホストインタフェース部130は、読込み部115から読込み応答を受け付けると、ホスト装置に読込みエラーを送信し、その後、読込み処理を終了する。
【0061】
以上のように構成および動作することで、実施の形態1では、特殊データが設定された論理アドレスの情報を、別途管理する必要がない。これにより、使用メモリ容量を削減できる。また、特殊データが設定されていない論理アドレスに対する読込み処理において、記憶部160に記憶されたデータに誤りが生じなかったものについては、通常必要な誤り検出処理のみで、ホスト装置に読込み応答を送信することができる。これにより、通常の読込み処理の高速化が図れる。
【0062】
また、実施の形態1では、論理アドレスに対応する記憶媒体の記憶領域161に特殊データである旨のマジックナンバーを記録することで、ある論理アドレスに対して特殊データを対応付けるため、対応関係管理用の追加の記録媒体が不要であるとともに、記録部160内の記憶領域161を対応関係管理用の記憶領域として割り当てる必要もない。
【0063】
ここで、実施の形態1と対比されるデータ記憶装置の一例について説明する。対比とするデータ記憶装置は、ホスト装置からある論理アドレスに対する読込み要求が発行されると、当該論理アドレスに所定の応答が設定されているか否かを判定するアドレス判定処理と、当該アドレスに対応付けられているユーザデータを記憶媒体から読み込むデータ読出処理とを並列実行する。そしてデータ記憶装置は、アドレス判定結果が真ならば、並行して読み込んだユーザデータを破棄し、代わりに所定の応答を実行する。一方、アドレス判定結果が偽ならば、データ記憶装置は、並行して読み込んだユーザデータをホストに応答する。
【0064】
特殊データが設定されていた際にデータ記憶装置が実行する「所定の応答」としては、以下に示すパターンの機能が例示できる。
(1)所定の値を通常のユーザデータの応答と同じ形式で応答
(2)所定の状態を通常のユーザデータの応答とは異なる形式で応答
【0065】
パターン(1)では、データ記憶装置は、たとえばホスト装置からある論理アドレスに記録されているデータの初期化を指示された後に、ホスト装置から当該論理アドレスに対して読込み要求が発行されると、所定の初期化済みの値を通常のユーザデータの応答と同じ形式でホスト装置に応答する。
【0066】
パターン(2)では、データ記憶装置は、たとえばホスト装置からある論理アドレスに対する読み込みがエラーになるように指示された後に、ホスト装置から当該論理アドレスに対して読込み要求が発行されると、エラー状態を示す所定の値を通常のユーザデータの応答と異なる形式でホスト装置に応答する。
【0067】
上記のパターン(1)および(2)で例示したような機能は、以下の手法を用いることでも実現することができる。すなわち、記憶媒体の欠陥個所(バッドセクタ)の情報を記録媒体中の所定の記憶領域に記憶し、あるアドレスに対する読込み要求を処理する際は、所定の記憶領域に記憶された情報に基づいて該当アドレスが欠陥個所であるか否かを判定し、欠陥個所である場合は所定の応答を実行する。この構成を利用し、ある論理アドレスに対する読込み要求に応じて所定の応答を実行するように設定する処理では、所定の記憶領域に該当論理アドレスと所定の応答との対応関係を示す情報を記憶する。ある論理アドレスへの読込み要求を処理する際は、所定の記憶領域に記憶された情報を参照して該当論理アドレスに所定の応答が設定されているか否かを判定する。所定の応答が設定されていた場合、記録装置は、情報に応じた所定の応答をする機能を実現することができる。
【0068】
このように、読込み要求に対して所定の応答を実行するように設定された論理アドレスを別途管理することでも、上記例示のような機能を実現することができる。ただし、この例示のような手法では、特殊データの対応関係を上述のように別途管理すると、次のようなデメリットが生じる場合がある。すなわち、特殊データは論理アドレス毎に設定される。このため、データ記憶装置の大容量化に伴い、利用可能な論理アドレスの最大値が増大すると、管理する情報の容量が増大してしまう。
【0069】
そこで、たとえば以下に例示するような2つのアプローチのうちいずれかを採用することが考えられる。
(1)特殊データを設定可能な論理アドレスの数に上限を設定する
(2)管理情報をテーブルのようなフラットなデータ構造で管理し、必要な個所を随時記憶媒体から読み込む
【0070】
しかしながら、アプローチ(1)および(2)では、それぞれ以下に示すようなデメリットが考えられる。すなわち、アプローチ(1)では、特殊データを設定可能な論理アドレスの数に上限を設けることで、管理情報の容量を削減することが可能である。ただし、この方法では、特殊データの設定可能数に制約が出てしまう。また、この方法では、リストのようなデータ構造で管理情報を管理することが現実的である。ただし、ある論理アドレスに特殊データが設定されているか否かを判定するためにはリストに対する探索処理が必要になるため、結果として、処理に長い時間を要する場合がある。
【0071】
また、アプローチ(2)では、管理情報を管理するテーブルが記憶媒体に記憶される。ホスト装置からの読込み要求に対しては、テーブルにおける必要な個所が随時記憶媒体から読み込まれる。この構成によれば、必要なメモリ容量を削減することが可能である。また、アプローチ(2)では、アプローチ(1)と異なりリストの探索処理は不要であるが、記憶媒体からの読込み処理に長い時間を要する場合がある。また、記憶媒体に管理情報を保存するための領域を別途確保しなければならない。
【0072】
ここで、HDD(Hard Disk Drive)のように、記憶媒体からの読み込みに比較的時間がかかるデータ記憶装置では、上記アプローチ(1)を採用することで、通常時の応答速度がアドレス判定処理時間に影響されるなどの不具合が生じ難い。これは、記憶媒体からの読み込みに比較的時間がかかるHDDなど、データ読出処理時間がアドレス判定処理時間よりも通常長いデータ記憶装置では、アドレス判定処理とデータ読出処理とを並列実行することで、アドレス判定処理時間をデータ読出処理時間に隠すことができるためである。
【0073】
しかしながら、SSD(Solid State Drive)のように、記憶媒体からの読み込みに比較的時間がかからないデータ記憶装置では、アドレス判定処理時間がデータ読出処理時間に隠せない場合がある。この場合、特殊データの設定機能を有さないデータ記憶装置に比べて、通常の応答時間が長くなってしまう場合がある。
【0074】
これに対し、実施の形態1では、特殊データが設定された論理アドレスの情報を、別途管理する必要がない。これにより、使用メモリ容量を削減できる。また、特殊データが設定されていない論理アドレスに対する読込み処理において、記憶部160に記憶されたデータに誤りが生じなかったものについては、通常必要な誤り検出処理のみで、ホスト装置に読込み応答を送信することができる。これにより、通常の読込み処理の高速化が図れる。
【0075】
また、実施の形態1では、論理アドレスに対応する記憶媒体の記憶領域161に特殊データである旨のマジックナンバーを記録することで、ある論理アドレスに対して特殊データを対応付けるため、対応関係管理用の追加の記録媒体が不要であるとともに、記録部160内の記憶領域161を対応関係管理用の記憶領域として割り当てる必要もない。
【0076】
<実施の形態2>
つぎに、実施の形態2にかかるコントローラ、データ記憶装置およびプログラムを例示する。なお、以下の説明において、実施の形態1と同様の構成には、同一の符号を付し、その重複する説明を省略する。
【0077】
上述したように、実施の形態1では、一概に誤った動作であるとする必要はないものの、特殊データ32として記憶部160に記憶されたデータのビット列に誤りが生じた結果、偶然、ビット列操作後の前記誤りが生じたビット列が、ビット列復元部112によるビット列復元操作後のビット列と同じになる場合、または前記誤りが生じたビット列の誤りが誤り訂正可能な範囲になってしまう場合や、通常のユーザデータとして記憶部160に記憶されたデータのビット列に誤りが生じた結果、偶然、前記誤りが生じたデータのビット列が、ビット列操作部111によるビット列操作後のビット列と同じになる場合、または、前記誤りが生じたビット列をビット列復元部112がビット列復元操作を実行し、そのビット列復元操作後のビット列の誤りが誤り訂正可能な範囲になる場合においては、正確でない応答がホスト装置に返る可能性があった。そこで実施の形態2では、このようなケースの発生を無くすために、誤り検出符号を2つ以上使用する場合を例に挙げる。
【0078】
(構成)
図9は、実施の形態2にかかるデータ記憶装置200の概略構成を示す。図9と図1とを比較すると明らかなように、データ記憶装置200(図9)は、データ記憶装置100(図1)と同様の構成を備える。ただし、データ記憶装置200では、データ記憶装置100におけるコントローラ110とホストインタフェース部130とが、それぞれコントローラ210とホストインタフェース部230に置き換えられている。また、データ記憶装置200は、第2生成部221と、第2判定部222とをさらに備える。
【0079】
コントローラ210は、図1に示すコントローラ110と同様の構成において、特殊データ設定部113と書込み部114と読込み部115とが、それぞれ特殊データ設定部213と書込み部214と読込み部215とに置き換えられている。このコントローラ210は、たとえばデータバス140を介してアクセス部150およびホストインタフェース部230と相互に接続されている。
【0080】
ホストインタフェース部230は、連携先の機能部が、書込み部114ではなく書込み部214であり、特殊データ設定部113ではなく特殊データ設定部213であり、また、読込み部115ではなく読込み部215である以外はホストインタフェース部130と同様であるので、詳細な説明は省略する。
【0081】
第2生成部221は、誤り検出符号の要求元から、誤り検出符号(便宜上、この誤り検出符号を第2誤り検出符号という)の生成のもとになるデータを受け付ける。第2生成部221は、予め定めておいた所定の方法に基づき、受け付けたデータデータから第2誤り検出符号を生成する。また、第2生成部221は、生成した第2誤り検出符号を要求元に送信する。なお、本開示において、誤り検出符号を誤り訂正符号と読み替えてもよい。また、第2誤り検出符号の生成方法を、第1生成部121による誤り検出符号(便宜上、この誤り検出符号を第1誤り検出符号という)の生成方法と同じにする場合、第1生成部121で第2生成部221の機能を代用してもよい。この場合、第2生成部221を省略できる。
【0082】
第2判定部222は、誤り判定の要求元から、誤り検出対象データおよびこれに対応する第2誤り検出符号を受け付ける。第2判定部222は、予め定めておいた所定の方法に基づき、受け付けた誤り検出対象データおよび第2誤り検出符号に誤りが存在するか否かを判定する誤り判定処理を実行する。また、第2判定部222は、誤り判定処理の結果を要求元に送信する。なお、誤り検出符号を誤り訂正符号と読み替えた場合は、この誤り判定処理が、「予め定めておいた所定の方法に基づき、受け付けた誤り訂正対象データおよび誤り訂正符号の誤り訂正が可能であるか否かを判定する誤り判定処理」に置き換えられる。また、第2判定部222の誤り判定方法を、第1判定部122の誤り判定方法と同じにする場合、第1判定部122で第2判定部222の機能を代用してもよい。この場合、第2判定部222を省略できる。
【0083】
書込み部214は、ホストインタフェース部230から書込み要求を受け付ける。書込み部214は、受け付けた書込み要求から書込み対象データを抽出する。また、書込み部214は、抽出した書込み対象データを第1生成部121に送信し、書込み対象データに対応する第1誤り検出符号を取得する。なお、第1生成部121に送信するデータには、書込み対象データ以外のデータがさらに含まれていてもよい。たとえば、受け付けた書込み要求から抽出した論理アドレス情報を示すビット列や、所定のビット列がさらに含まれていてもよい。
【0084】
また、書込み部214は、抽出した書込み対象データと取得した第1誤り検出符号とを第2生成部221に送信し、これらのビット列に対応する第2誤り検出符号を取得する。なお、第2生成部221に送信するデータには、書込み対象データおよび第1誤り検出符号以外のデータがさらに含まれていてもよい。たとえば、受け付けた書込み要求から抽出した論理アドレス情報を示すビット列や、所定のビット列がさらに含まれていてもよい。
【0085】
さらに、書込み部214は、受け付けた書込み要求から書込先の論理アドレス情報を抽出する。書込み部214は、抽出した論理アドレス情報に対応する記憶部160の記憶領域161に書込み対象データと第1および第2誤り検出符号とを書き込むように、アクセス部150に指示する。図10に、記憶部160の記憶領域161に対するデータ配置の一例を示す。図10に示すように、書込み対象データは、記憶部160の記憶領域161におけるユーザデータ記憶領域162に記憶される。また、第1誤り検出符号は、同記憶領域161における冗長領域163内の第1冗長領域163aに記憶され、第2誤り検出符号は、同冗長領域163内の第2冗長領域163bに記憶される。ただし、各記憶領域161内のデータ配置は、図10に示すものに限られない。
【0086】
特殊データ設定部213は、ホストインタフェース部230から、特殊データ設定要求を受け付ける。特殊データ設定部213は、特殊データ設定要求から、所定の応答の種別を識別する特殊データ識別情報を抽出する。また、特殊データ設定部213は、抽出した所定の応答の種別に応じたビット列のマジックナンバーを含む特殊データ32(図4A参照)を生成する。特殊データ32の生成方法は、実施の形態1における特殊データ設定部113と同様である。
【0087】
また、特殊データ設定部213は、生成した特殊データ32を第1生成部121に送信し、特殊データ32のビット列に対応する第1誤り検出符号を取得する。第1生成部121に送信するデータには、特殊データ32以外のデータがさらに含まれていてもよい。たとえば、受け付けた特殊データ設定要求から抽出した論理アドレス情報を示すビット列や、所定のビット列がさらに含まれていてもよい。
【0088】
さらに、特殊データ設定部213は、特殊データ32と第1誤り検出符号とをビット列操作部111に送信し、ビット列操作後の特殊データ32および第1誤り検出符号を取得する。
【0089】
さらにまた、特殊データ設定部213は、ビット列操作後の特殊データ32および第1誤り検出符号を第2生成部221に送信し、これらのビット列に対応する第2誤り検出符号を取得する。第2生成部221に送信するデータには、ビット列操作後の特殊データ32および第1誤り検出符号以外のデータがさらに含まれていてもよい。たとえば、受け付けた特殊データ設定要求から抽出した論理アドレス情報を示すビット列や、所定のビット列がさらに含まれていてもよい。
【0090】
さらにまた、特殊データ設定部213は、受け付けた特殊データ設定要求から論理アドレス情報を抽出する。特殊データ設定部213は、抽出した論理アドレス情報に対応する記憶部160の記憶領域161に、ビット列操作後の特殊データ32および第1誤り検出符号と、第2誤り検出符号とを書き込むように、アクセス部150に指示する。
【0091】
なお、ビット列操作後の特殊データ32は、図10におけるユーザデータ記憶領域162に記憶される。また、ビット列操作後の第1誤り検出符号は、冗長領域163内の第1冗長領域163aに記憶され、第2誤り検出符号は、同冗長領域163内の第2冗長領域163bに記憶される。ただし、各記憶領域161内のデータ配置は、図10に示すものに限られない。
【0092】
読込み部215は、ホストインタフェース部230から読込み要求を受け付ける。読込み部215は、受け付けた読込み要求から論理アドレス情報を抽出する。読込み部215は、抽出した論理アドレス情報が示す論理アドレスに対応する記憶部160の記憶領域161に記憶されているデータを読み込むように、アクセス部150に指示し、これによって読み込まれたデータを取得する。
【0093】
ここで、読込み部215によって読み込まれたデータの配置は、たとえば図10に示した配置など、予め定めておいた配置となっている。そこで以降の説明では、読込み部215が読み込んだデータのうち、ユーザデータ記憶領域162から読み込んだデータを第1データ、第1冗長領域163aから読み込んだデータを第2データ、第2冗長領域163bから読み込んだデータを第3データと呼ぶ。なお、第1データは、ビット列操作されていない書込み対象データか、または、ビット列操作後の特殊データ32である。第2データは、ビット列操作されていない第1誤り検出符号か、または、ビット列操作後の第1誤り検出符号である。第3データは、ビット列操作されていない第2誤り検出符号である。
【0094】
読込み部215は、読み込んだデータのうち、第1データおよび第2データを誤り検出対象データとして、また、第3データを誤り検出対象データに対応する誤り検出符号として、第2判定部222に送信する。ここで、書込み部214および特殊データ設定部213が第2生成部221に送信するデータに第1および第2データ以外のデータをさらに含ませていた場合、そのさらに含ませていたデータについても第2判定部222に送信される。たとえば、書込み要求または特殊データ設定要求に含まれる論理アドレス情報を示すビット列をさらに含ませていた場合、読込み要求から抽出した論理アドレス情報を示すビット列をさらに第2判定部222に送信する。また、たとえば所定のビット列をさらに含ませていた場合、所定のビット列をさらに第2判定部222に送信する。その後、読込み部215は、第2判定部222から送信された第3判定結果を取得する。
【0095】
第2判定部222から取得した第3判定結果が誤りが検出された旨または誤り訂正処理が不能である旨の結果であった場合、読込み部215は、読込みエラーを示す読込み状態情報を読込み応答として、ホストインタフェース部230に送信する。
【0096】
一方、第2判定部222から取得した第3判定結果が誤りが検出されなかった旨の結果であった場合、読込み部215は、記憶領域161から読み込んだデータのうち、第1データを誤り検出対象データとして、また、第2データを誤り検出対象データに対応する誤り検出符号として、第1判定部122に送信する。なお、第2生成部221が生成する誤り検出符号に代えて誤り訂正符号を用いた場合、読込み部215は、第3判定結果が誤り訂正処理が可能である旨の結果であれば、読み込んだデータの誤りを訂正する。以降、誤りが訂正されたデータを第1誤り訂正済みデータと呼ぶ。また、読込み部215は、第1誤り訂正済みデータのうち、第1データを誤り検出対象データとして、また、第2データを誤り検出対象データに対応する誤り検出符号として、第1判定部122に送信する。ここで、書込み部214および特殊データ設定部213が第1生成部121に送信するデータに第1データ以外のデータをさらに含ませていた場合、そのさらに含ませていたデータについても第1判定部122に送信する。たとえば、書込み要求または特殊データ設定要求に含まれる論理アドレス情報を示すビット列をさらに含ませていた場合、読込み要求から抽出した論理アドレス情報を示すビット列をさらに第1判定部122に送信する。また、たとえば所定のビット列をさらに含ませていた場合、所定のビット列をさらに第1判定部122に送信する。読込み部215は、第1判定部122から送信された第4の判定結果を取得する。
【0097】
また、読込み部215は、第1判定部122から取得した第4の判定結果が誤りが検出されなかった旨の結果であった場合、記憶領域161から読み込んだデータのうち第1データをホスト装置から要求されたデータとして含む読込み応答を、ホストインタフェース部230に送信する。なお、第2生成部221が生成する誤り検出符号に代えて誤り訂正符号を用いた場合、取得した第4の判定結果が誤り訂正処理が可能である旨の結果であれば、読込み部215は、第1誤り訂正済みデータのうち第1データをホスト装置から要求されたデータとして含む読込み応答を、ホストインタフェース部230に送信する。これは、記憶部160に記録されたデータに誤りが生じた場合、この誤りを訂正することで得られた第1誤り訂正済みデータには誤りがなくなっているからである。一方、ビット列を操作していた場合、第1判定部122からの第4判定結果により、誤り訂正処理が不能である旨の結果を必ず得られる。このため、誤り訂正処理が可能である旨の結果が得られた場合は、誤り訂正処理を実施する必要がない。
【0098】
ただし、特殊データ32として記憶部160に記憶されたデータのビット列に誤りが生じた結果、偶然、第1データ(ビット列操作後のマジックナンバーのビット列)と、第2データ(ビット列操作後の第1誤り検出符号)とが、ビット列復元部112によるビット列復元操作後のビット列と同じになる場合が考えられる。このような場合でも、第2判定部222からの第3判定結果で誤りが検出されるか誤り訂正不能であると判定され読み込みエラーがホスト装置に返されるか、または誤り訂正可能な範囲であると判定され上記誤りが訂正されるため、実施の形態1とは異なり、記憶領域161から読み込んだ第1データをデータとして含む読込み応答をホストインタフェース部230に返すことはない。このように、すなわち、特殊データ32が対応付けられていない論理アドレスに対する読込み要求であって、誤りが生じなかったものについては、通常必要な誤り検出処理によってホスト装置に読込み応答を送信することができる。この結果、通常の読込み処理の高速化が図れる。
【0099】
一方、第1判定部122から取得した第4の判定結果が誤りが検出された旨の結果であった場合、読込み部215は、記憶領域161から読み込んだデータのうち第1データおよび第2データをビット列復元部112に送信し、ビット列復元操作後のデータを取得する。なお、誤り検出符号に代えて誤り訂正符号を用いた場合、読込み部215は、第4の判定結果が誤り訂正処理が不能である旨の結果であれば、第1誤り訂正済みデータのうち第1データおよび第2データをビット列復元部112に送信し、ビット列復元操作後のデータを取得する。
【0100】
また、読込み部215は、取得したビット列復元操作後のデータのうち第1データの配置個所に対応するデータを誤り検出対象データとして、また、取得したビット列復元操作後のデータのうち第2データの配置個所に対応するデータを誤り検出対象データに対応する誤り検出符号として、第1判定部122に送信する。ここで、書込み部214および特殊データ設定部213が第1生成部121に送信するデータに第1データ以外のデータをさらに含ませていた場合、そのさらに含ませていたデータについても第1判定部122に送信する。たとえば、書込み要求または特殊データ設定要求に含まれる論理アドレス情報を示すビット列をさらに含ませていた場合、読込み要求から抽出した論理アドレス情報を示すビット列をさらに第1判定部122に送信する。また、たとえば所定のビット列をさらに含ませていた場合、所定のビット列をさらに第1判定部122に送信する。読込み部215は、第1判定部122から送信された第5判定結果を取得する。
【0101】
読込み部215は、第1判定部122から取得した第5判定結果が誤りが検出されなかった旨の結果であることを確認する。なお、第1生成部121が生成する誤り検出符号に代えて誤り訂正符号を用いた場合、読込み部215は、第5判定結果が誤り訂正処理が可能である旨の結果であることを確認する。
【0102】
ただし、通常のユーザデータとして記憶部160に記憶されたデータのビット列に誤りが生じた結果、偶然、第1データ(書込み対象データ)と第2データ(第1誤り検出符号)とがビット列操作部111によるビット列操作後のビット列と同じになる場合が考えられる。このような場合でも、本実施の形態2では、第3判定結果で誤りが検出されるか誤り訂正不能であると判定され読み込みエラーがホスト装置に返されるか、または誤り訂正可能な範囲であると判定され上記誤りが訂正されるため、実施の形態1とは異なり、本確認処理において誤りが検出されることはない。また、ビット列操作部111によるビット列操作結果とは異なる形で記憶部160に記憶されたデータのビット列に誤りが生じた場合においても、第3判定結果で誤りが検出されるか誤り訂正不能であると判定され読み込みエラーがホスト装置に返されるか、または誤り訂正可能な範囲であると判定され上記誤りが訂正されるため、実施の形態1とは異なり、本確認処理において誤りが検出されることはない。なお、誤り検出符号に代えて誤り訂正符号を用いた場合、第5判定結果として誤り訂正処理が可能である旨の結果を確認するが、前述の理由により第5判定結果には誤りが存在しない。このため、第5判定結果後の誤り訂正処理を省略することができる。具体的には、第5判定結果を取得するために読込み部215が第1判定部122に所定のデータを送信する処理、および、第5判定結果の確認を読込み部215が行う処理を、省略してもよい。
【0103】
また、読込み部215は、第1判定部122から取得したビット列復元操作後のデータのうち第1データの配置個所に対応するデータをマジックナンバーとみなして、特殊データ識別情報を判別する。読込み部215は、判別した特殊データ識別情報に応じた所定の応答を読込み応答として、ホストインタフェース部230に送信する。
【0104】
(動作)
次に、実施の形態2における処理手順の一例について、図面を参照して詳細に説明する。図11は、実施の形態2における書込み処理の一例を示す。図12は、実施の形態2における特殊データ設定処理の一例を示す。図13は、実施の形態2における読込み処理の一例を示す。
【0105】
・書込み処理
まず、実施の形態2における書込み処理の一例を、図11を参照して詳細に説明する。図11に示すように、書込み処理では、まず、ホスト装置からの書込み要求に対して、第1誤り検出符号を生成する(ステップS401)。より詳細には、ホストインタフェース部230は、ホスト装置から書込み要求を受け付ける。書込み要求には、論理アドレス情報と、書込み対象データとが含まれる。ホストインタフェース部230は、ホスト装置から書込み要求を受け付けると、受け付けた書込み要求を書込み部214に送信する。書込み部214は、ホストインタフェース部230から書込み要求を受け付けると、この受け付けた書込み要求から書込み対象データを抽出する。つづいて、書込み部214は、抽出した書込み対象データを、第1生成部121に送信する。なお、第1生成部121に送信するデータには、書込み対象データ以外のデータがさらに含まれていてもよい。たとえば、書込み要求から抽出した論理アドレス情報を示すビット列や、所定のビット列がさらに含まれていてもよい。第1生成部121は、要求元である書込み部214から、第1誤り検出符号の生成のもとになる書込み対象データを受け付けると、受け付けた書込み対象データから、所定の方法に基づき、誤り検出符号を生成する。生成された第1誤り検出符号は、第1生成部121から要求元である書込み部214に送信される。その後、書込み部214は、書込み対象データに対応する第1誤り検出符号を第1生成部121から取得する。なお、以降の説明を含め、誤り検出符号を誤り訂正符号と読み替えてもよい。
【0106】
つぎに、第2誤り検出符号を生成する(ステップS402)。より詳細には、書込み部214は、抽出した書込み対象データと取得した第1誤り検出符号とを、第2生成部221に送信する。なお、第2生成部221に送信するデータには、書込み対象データおよび第1誤り検出符号以外のデータがさらに含まれていてもよい。たとえば、書込み要求から抽出した論理アドレス情報を示すビット列や、所定のビット列がさらに含まれていてもよい。第2生成部221は、要求元である書込み部214から、第2誤り検出符号の生成のもとになる書込み対象データおよび第1誤り検出符号を受け付けると、これらのビット列から、所定の方法に基づき、第2誤り検出符号を生成する。生成された第2誤り検出符号は、第2生成部221から要求元である書込み部214に送信される。その後、書込み部214は、書込み対象データおよび第1誤り検出符号に対応する第2誤り検出符号を第2生成部221から取得する。なお、第2誤り検出符号の生成方法を第1誤り検出符号の生成方法と同じにする場合、第2生成部221の代わりに第1生成部121を用いて第2誤り検出符号を生成してもよい。この場合、第2生成部221は省略できる。
【0107】
つぎに、抽出した書込み対象データと、取得した第1および第2誤り検出符号とを、記憶部160内の記憶領域161に書き込み(ステップS403)、その後、書込み処理を終了する。より詳細には、書込み部214は、書込み要求から論理アドレス情報を抽出する。書込み部214は、抽出した論理アドレス情報に対応する記憶部160の記憶領域161に、同じく抽出した書込み対象データと取得した第1および第2誤り検出符号とを書き込むように、アクセス部150に指示する。アクセス部150は、書込み部214から入力された書込み対象データと第1および第2誤り検出符号とを、同じく書込み部214から入力された論理アドレス情報に対応する記憶部160の記憶領域161に書き込む。なお、図10を用いて説明したように、書込み対象データは、記憶領域161内のユーザデータ記憶領域162に記憶される。また、第1誤り検出符号は、同記憶領域161内の冗長領域163における第1冗長領域163aに記憶され、第2誤り検出符号は、同冗長領域163における第2冗長領域163bに記憶される。ただし、これに限るものではない。
【0108】
・特殊データ設定処理
次に、実施の形態2における特殊データ設定処理の一例を、図12を参照して詳細に説明する。図12に示すように、特殊データ設定処理では、まず、ホスト装置からの特殊データ設定要求に対して、マジックナンバーを含む特殊データ32を生成する(ステップS501)。より詳細には、ホストインタフェース部230は、特殊データ設定要求を受け付ける。特殊データ設定要求には、書込み先の論理アドレス情報と、所定の応答の種別を識別する特殊データ識別情報とが含まれる。ホストインタフェース部230は、ホスト装置から特殊データ設定要求を受け付けると、受け付けた特殊データ設定要求を特殊データ設定部213に送信する。特殊データ設定部213は、ホストインタフェース部230から特殊データ設定要求を受け付けると、特殊データ設定要求から特殊データ識別情報を抽出する。つづいて、特殊データ設定部213は、抽出した特殊データ識別情報に応じたビット列のマジックナンバーを含む特殊データ32を生成する。特殊データ32の生成方法は、特殊データ設定部113と同様である。
【0109】
つぎに、生成した特殊データ32を用いて、第1誤り検出符号を生成する(ステップS502)。より詳細には、特殊データ設定部213は、生成した特殊データ32を第1生成部121に送信する。なお、第1生成部121に送信するデータには、特殊データ32以外のデータがさらに含まれていてもよい。たとえば、特殊データ設定要求から抽出した論理アドレス情報を示すビット列や、所定のビット列がさらに含まれていてもよい。第1生成部121は、要求元である特殊データ設定部213から特殊データ32を受け付けると、この受け付けた特殊データ32から、所定の方法に基づき、第1誤り検出符号を生成する。生成された第1誤り検出符号は、第1生成部121から要求元である特殊データ設定部213に送信される。これにより、特殊データ設定部213は、生成した特殊データ32のビット列に対応する第1誤り検出符号を取得する。
【0110】
つぎに、生成した特殊データ32および取得した第1誤り検出符号よりなる操作対象データにおける所定のビットの値を操作する(ステップS503)。より詳細には、特殊データ設定部213は、生成した特殊データ32と取得した第1誤り検出符号とを操作対象データとして、ビット列操作部111に送信する。ビット列操作部111は、要求元である特殊データ設定部213から、操作対象データを受け付けると、上述したように、所定の規則に従って、受け付けた操作対象データのビット列を操作する。その後、ビット列操作部111は、ビット列操作後の操作対象データを、要求元である特殊データ設定部213に送信する。これにより、特殊データ設定部213が、ビット列操作後の特殊データ32および第1誤り検出符号を取得する。なお、上述したように、誤り検出符号を誤り訂正符号に置き換えてもよい。
【0111】
つぎに、ビット列操作後の特殊データ32および第1誤り検出符号から、第2誤り検出符号を生成する(ステップS504)。より詳細には、特殊データ設定部213は、ビット列操作後の特殊データ32および第1誤り検出符号を、第2生成部221に送信する。なお、第2生成部221に送信するデータには、取得したビット列操作後の特殊データ32および第1誤り検出符号以外のデータがさらに含まれていてもよい。たとえば、特殊データ設定要求から抽出した論理アドレス情報を示すビット列や、所定のビット列がさらに含まれていてもよい。第2生成部221は、要求元である特殊データ設定部213から、ビット列操作後の特殊データ32および第1誤り検出符号を受け付けると、この受け付けた特殊データ32および第1誤り検出符号から、所定の方法に基づき、第2誤り検出符号を生成する。生成された第2誤り検出符号は、第2生成部221から要求元である特殊データ設定部213に送信される。これにより、特殊データ設定部213は、ビット列操作後の特殊データ32および第1誤り検出符号に対応する第2誤り検出符号を取得する。なお、第2誤り検出符号の生成方法を、第1誤り検出符号の生成方法と同じにする場合、第1生成部121で、第2生成部221の機能を代用してもよい。
【0112】
つぎに、ビット列操作後の特殊データ32および第1誤り検出符号と、取得した第2誤り検出符号とを、記憶部160内の記憶領域161に書き込み(ステップS505)、その後、書込み処理を終了する。より詳細には、特殊データ設定部213は、特殊データ設定要求から論理アドレス情報を抽出する。特殊データ設定部213は、抽出した論理アドレス情報に対応する記憶部160の記憶領域161に、ビット列操作後の特殊データ32および第1誤り検出符号と、取得した第2誤り検出符号とを書き込むように、アクセス部150に指示する。アクセス部150は、ビット列操作後の特殊データ32および第1誤り検出符号と、取得した第2誤り検出符号とを、抽出した論理アドレス情報に対応する記憶部160の記憶領域161に書き込む。なお、ビット列操作後の特殊データ32は、ユーザデータ記憶領域162に記憶される。また、図10に示すように、ビット列操作後の第1誤り検出符号は、冗長領域163における第1冗長領域163aに記憶され、第2誤り検出符号は、同冗長領域163における第2冗長領域163bに記憶される。ただし、これに限定されるものではない。
【0113】
・読込み処理
次に、実施の形態2における読込み処理の一例を、図13を参照して詳細に説明する。図13に示すように、読込み処理では、まず、ホスト装置からの読込み要求に応じて、記憶部160からデータを読み込む(ステップS601)。より詳細には、ホストインタフェース部230は、ホスト装置から読込み要求を受け付ける。読込み要求には、読込み対象データの格納先を示す論理アドレス情報が含まれる。ホストインタフェース部230は、ホスト装置から読込み要求を受け付けると、受け付けた読込み要求を読込み部215に送信する。読込み部215は、ホストインタフェース部230から読込み要求を受け付けると、受け付けた読込み要求から論理アドレス情報を抽出する。その後、読込み部215は、抽出した論理アドレス情報が示す論理アドレスに対応する記憶部160の記憶領域161に記憶されているデータを読み込むように、アクセス部150に指示する。アクセス部150は、読込み部215から入力された論理アドレス情報が示す論理アドレスに対応する記憶部160の記憶領域161に記憶されているデータを読込み、これを読込み部215に返答する。これにより、読込み部215が読込み対象データを取得する。
【0114】
つぎに、読み込んだデータに対し、第2誤り検出符号を用いた誤り検出処理を実行する(ステップS602)。より詳細には、読込み部215は、読み込んだデータのうち、第1データおよび第2データを誤り検出対象データとして、また、第3データを第2誤り検出符号として、第2判定部222に送信する。ここで、書込み部214および特殊データ設定部213が第2生成部221に送信するデータに第1および第2データ以外のデータをさらに含ませていた場合、そのさらに含ませていたデータについても第2判定部222に送信する。たとえば、書込み要求または特殊データ設定要求に含まれる論理アドレス情報を示すビット列をさらに含ませていた場合、前記読込み要求から抽出した論理アドレス情報を示すビット列をさらに第2判定部222に送信する。また、たとえば所定のビット列をさらに含ませていた場合、所定のビット列をさらに第2判定部222に送信する。第2判定部222は、要求元である読込み部215から、第1および第2データを受け付けると、所定の方法に基づき、受け付けた第1および第2データに誤りが存在するか否かを判定する。その後、第2判定部222は、この判定結果(第3判定結果)を要求元である読込み部125に送信する。これにより、読込み部215が第2判定部222から送信された第3判定結果を取得する。なお、上述したように、誤り検出符号を誤り訂正符号と読み替えてもよい。
【0115】
つぎに、ステップS602による誤り判定処理の結果として誤りが検出されたか否かを判定する(ステップS603)。より詳細には、第2判定部222から取得した第3判定結果が誤りが検出された旨の結果であった場合(ステップS603のYES)、ステップS604に進む。一方、取得した第3判定結果が誤りが検出されなかった旨の結果であった場合(ステップS603のNO)、ステップS605に進む。なお、誤り検出符号に代えて誤り訂正符号を用いた場合、読込み部215は、第3判定結果が誤り訂正処理が不能である旨の結果であれば(ステップS603のYES)、ステップS604に進み、第3判定結果が誤り訂正処理が可能である旨の結果であれば(ステップS603のNO)、ステップS605に進む。
【0116】
ステップS604では、ホスト装置からの読込み要求に対して読込みエラーを送信する。より詳細には、読込み部215は、読込みエラーを示す読込み状態情報を読込み応答として、ホストインタフェース部230に送信する。ホストインタフェース部230は、読込み部215から読込み応答を受け付けると、ホスト装置に読込みエラーを送信し、その後、読込み処理を終了する。
【0117】
ステップS605では、読み込んだデータのうち第1データおよび第2データに対し、第2データである第1誤り検出符号を用いた誤り検出処理を実行する。より詳細には、読込み部215は、読み込まれたデータのうち、第1データを誤り検出対象データとして、また、第2データを第1誤り検出符号として、第1判定部122に送信する。なお、第2生成部221が生成する誤り検出符号に代えて誤り訂正符号を用いた場合、読込み部215は、第1および第2データの誤りを訂正する。以降、誤りが訂正された第1および第2データを第1誤り訂正済みデータと呼ぶ。また、読込み部215は、第1誤り訂正済みデータのうち、第1データを誤り検出対象データとして、また、第2データを第1誤り検出符号として、第1判定部122に送信する。ここで、書込み部214および特殊データ設定部213が第1生成部121に送信するデータに第1データ以外のデータをさらに含ませていた場合、そのさらに含ませていたデータについても第1判定部122に送信する。たとえば、書込み要求または特殊データ設定要求に含まれる論理アドレス情報を示すビット列をさらに含ませていた場合、読込み要求から抽出した論理アドレス情報を示すビット列をさらに第1判定部122に送信する。また、たとえば所定のビット列をさらに含ませていた場合、所定のビット列をさらに第1判定部122に送信する。第1判定部122は、要求元である読込み部215から、誤り検出対象データおよび第1誤り検出符号を受け付けると、所定の方法に基づき、受け付けた誤り検出対象データおよび第1誤り検出符号に誤りが存在するか否かを判定する。その後、第1判定部122は、この判定結果(第4判定結果)を要求元である読込み部215に送信する。なお、上述したように、誤り検出符号を誤り訂正符号と読み替えてもよい。
【0118】
つぎに、ステップS605による誤り判定処理の結果として誤りが検出されたか否かを判定する(ステップS606)。より詳細には、第1判定部122から取得した第4判定結果が誤りが検出されなかった旨の結果であった場合(ステップS606のNO)、ステップS607に進む。一方、取得した第4判定結果が誤りが検出された旨の結果であった場合(ステップS606のYES)、ステップS608に進む。なお、誤り検出符号に代えて誤り訂正符号を用いた場合、読込み部215は、第4判定結果が誤り訂正処理が可能である旨の結果であれば(ステップS606のNO)、ステップS607に進み、第4判定結果が誤り訂正処理が不能である旨の結果であれば(ステップS606のYES)、ステップS608に進む。
【0119】
ステップS607では、ステップS601で読み込んだデータを読込み応答としてホスト装置へ送信する。より詳細には、読込み部215は、ステップS601で読み込んだデータのうち第1データを読込み応答として、ホストインタフェース部230に送信する。なお、第2生成部221が生成する誤り検出符号に代えて誤り訂正符号を用いた場合、前述したように、読込み部215は、読み込んだデータの誤りを訂正して第1誤り訂正済みデータを得る。したがって、読込み部215は、第1誤り訂正済みデータのうち第1データを読込み応答として、ホストインタフェース部230に送信する。ホストインタフェース部230は、読込み部215から読込み応答を受け付けると、ホスト装置にこの読込み応答を送信し、その後、読込み処理を終了する。
【0120】
また、ステップS608では、ステップS601で読み込んだデータのビット列を復元操作する。より詳細には、読込み部215は、ステップS605で取得した第4判定結果が誤りが検出された旨の結果であった場合、ステップS601で読み込んだデータのうち第1および第2データを、ビット列復元部112に送信する。なお、第2生成部221が生成する誤り検出符号に代えて誤り訂正符号を用いた場合、読込み部215は、第4判定結果が誤り訂正処理が不能である旨の結果であれば、第1誤り訂正済みデータのうち第1および第2データを、ビット列復元部112に送信する。ビット列復元部112は、要求元である読込み部215から、復元操作対象の第1および第2データを受け付けると、上述したように、このデータのビット列の復元操作を実行する。その後、ビット列復元部112は、ビット列復元操作後のデータを、要求元である読込み部215に送信する。これにより、読込み部215が、ビット列復元操作後のデータを取得する。なお、上述したように、誤り検出符号を誤り訂正符号と読み替えることも可能である。
【0121】
つぎに、ビット列復元操作後のデータに対し、第1誤り検出符号を用いた誤り検出処理を実行する(ステップS609)。より詳細には、読込み部215は、ビット列復元部112から取得したビット列復元操作後のデータのうち第1データの配置個所に対応するデータを誤り検出対象データとして、また、第2データの配置個所に対応するデータを第1誤り検出符号として、第1判定部122に送信する。ここで、書込み部214および特殊データ設定部213が第1生成部121に送信するデータに第1データ以外のデータをさらに含ませていた場合、そのさらに含ませていたデータについても第1判定部122に送信する。たとえば、書込み要求または特殊データ設定要求に含まれる論理アドレス情報を示すビット列をさらに含ませていた場合、読込み要求から抽出した論理アドレス情報を示すビット列をさらに第1判定部122に送信する。また、たとえば所定のビット列をさらに含ませていた場合、所定のビット列をさらに第1判定部122に送信する。第1判定部122は、要求元である読込み部215から、誤り検出対象データおよび第1誤り検出符号を受け付けると、所定の方法に基づき、受け付けた誤り検出対象データおよび第1誤り検出符号に誤りが存在するか否かを判定する。その後、第1判定部122は、この判定結果(第5判定結果)を要求元である読込み部215に送信する。なお、上述したように、誤り検出符号を誤り訂正符号と読み替えてもよい。
【0122】
つぎに、ステップS609で取得した第5判定結果において誤りが検出されていないことを確認する(ステップS610)。より詳細には、読込み部215は、第1判定部122から取得した第5判定結果が誤りが検出されなかった旨の結果であることを確認する。なお、第1生成部121が生成する誤り検出符号に代えて誤り訂正符号を用いた場合、読込み部215は、第5判定結果が誤り訂正処理が可能である旨の結果であることを確認する。また、上述したように、第5判定結果を取得するために読込み部215が第1判定部122に送信する処理(ステップS609)、および、第5判定結果の確認を読込み部215が行う処理(ステップS610)は、省略してもよい。
【0123】
つぎに、ステップS608のビット列復元操作によって得られた特殊データ32におけるマジックナンバー32aに従って所定の応答を実行する(ステップS611)。より詳細には、読込み部215は、ステップS608で取得したビット列復元操作後のデータのうち第1データの配置個所に対応するデータの所定ビットをマジックナンバー32aとみなして、特殊データ識別情報を判別する。つづいて、読込み部215は、判別した特殊データ識別情報に従って、所定の応答を読込み応答として、ホストインタフェース部230に送信する。ホストインタフェース部230は、読込み部215から読込み応答を受け付けると、ホスト装置に所定の応答を読込み応答として送信し、その後、読込み処理を終了する。
【0124】
以上のように、構成および動作することで、実施の形態2では、特殊データ32および第1誤り検出符号に対して第2誤り検出符号が付与される。これにより、一概に誤った動作であるとする必要はないものの、特殊データ32として記憶部160に記憶されたデータのビット列に誤りが生じた結果、偶然、ビット列操作後の前記誤りが生じたビット列が、ビット列復元部112によるビット列復元操作後のビット列と同じになる場合、または前記誤りが生じたビット列の誤りが誤り訂正可能な範囲になってしまう場合や、通常のユーザデータとして記憶部160に記憶されたデータのビット列に誤りが生じた結果、偶然、前記誤りが生じたデータのビット列が、ビット列操作部111によるビット列操作後のビット列と同じになる場合、または、前記誤りが生じたビット列をビット列復元部112がビット列復元操作を実行し、そのビット列復元操作後のビット列の誤りが誤り訂正可能な範囲になる場合においては、正確でない応答がホスト装置に返る可能性があることを防止できる。この他の構成、動作および効果は、実施の形態1と同様であるため、ここでは詳細な説明を省略する。
【0125】
なお、上述した実施の形態における各動作は、ソフトウエアで実現されても、ハードウエアで実現されてもよい。ソフトウエアで実現する場合、たとえば所定のプログラムをCPUなどの情報処理装置が読み出して実行することで、コントローラ、データ記憶装置およびプログラムが実現される。所定のプログラムは、たとえばCD−ROMやDVD−ROMやフラッシュメモリなどの記録媒体に記録されていてもよいし、ネットワークに接続された記録装置に記録されていてもよい。情報処理装置は、この所定のプログラムを読み出すか、ダウンロードして実行する。
【0126】
また、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。
【符号の説明】
【0127】
11、21 操作対象データ、 12 特殊データ、 13 誤り検出符号、 13A 誤りを含む誤り検出符号、 13a 操作対象のビット、 23 誤り訂正符号、 23A 誤りを含む誤り訂正符号、 23a 操作対象のビット群、 100、200 データ記憶装置、 110、210 コントローラ、 111 ビット列操作部、 112 ビット列復元部、 113、213 特殊データ設定部、 114、214 書込み部、 115、215 読込み部、 121 第1生成部、 122 第1判定部、 130、230 ホストインタフェース部、 140 データバス、 150 アクセス部、 160 記憶部、 161 記憶領域、 162 ユーザデータ記憶領域、 163 冗長領域、 163a 第1冗長領域、 163b 第2冗長領域、 221 第2生成部、 222 第2判定部

【特許請求の範囲】
【請求項1】
ユーザデータ記憶領域と冗長領域とが含まれる記憶領域を複数有し、それぞれの記憶領域に論理アドレスそれぞれに対応するデータを記憶する記憶部への読み書き処理を補助するアクセス部と、
論理アドレス情報と所定の応答の種別を識別する特殊データ識別情報とが含まれる特殊データ設定要求をホスト装置から受け付け、前記受け付けた特殊データ設定要求を特殊データ設定部に送信するホストインタフェース部と、
第1誤り検出符号または第1誤り訂正符号の生成の元とするデータを要求元から受け付け、受け付けた前記データから、所定の方法に基づき、前記第1誤り検出符号または前記第1誤り訂正符号を生成し、生成した前記第1誤り検出符号または第1誤り訂正符号を前記要求元に送信する第1生成部と、
に接続されたコントローラであって、
要求元から操作対象データを受け付け、受け付けた前記操作対象データのビット列を所定の規則に基づき操作し、ビット列操作後の前記操作対象データを前記要求元に送信するビット列操作部と、
前記ホストインタフェース部から前記特殊データ設定要求を受け付け、受け付けた前記特殊データ設定要求から前記特殊データ識別情報を抽出し、抽出した前記特殊データ識別情報に応じた識別ビット列を生成し、生成した前記識別ビット列を前記第1生成部に送信して前記識別ビット列に対応する第1誤り検出符号を取得し、前記識別ビット列と前記第1誤り検出符号とを前記操作対象データとして前記ビット列操作部に送信してビット列操作後の前記操作対象データを取得し、前記特殊データ設定要求から論理アドレス情報を抽出し、抽出した前記論理アドレス情報に対応する前記記憶領域のうち前記ユーザデータ記憶領域に前記ビット列操作後の操作対象データにおける前記識別ビット列を書き込むとともに前記冗長領域に前記ビット列操作後の操作対象データにおける前記第1誤り検出符号を書き込むように前記アクセス部に指示する前記特殊データ設定部と、
を備えることを特徴とするコントローラ。
【請求項2】
ユーザデータ記憶領域と冗長領域とが含まれる記憶領域を複数有し、それぞれの記憶領域に論理アドレスそれぞれに対応するデータを記憶する記憶部への読み書き処理を補助するアクセス部と、
論理アドレス情報が含まれる読込み要求をホスト装置から受け付け、前記受け付けた読込み要求を読込み部に送信するホストインタフェース部と、
第1誤り検出対象データまたは第1誤り訂正対象データ、および前記第1誤り検出対象データに対応する第1誤り検出符号または前記第1誤り訂正対象データに対応する第1誤り訂正符号を要求元から受け付け、所定の方法に基づき、受け付けた前記第1誤り検出対象データおよび前記第1誤り検出符号に誤りが存在するか否か、または、前記第1誤り訂正対象データおよび前記第1誤り訂正符号の誤り訂正処理が可能であるか否かを判定して、前記判定結果を前記要求元に送信する第1判定部と、
に接続されたコントローラであって、
要求元から復元操作対象データを受け付け、受け付けた前記復元操作対象データのビット列の復元操作を実行し、ビット列復元操作後の前記復元操作対象データを前記要求元に送信するビット列復元部と、
前記ホストインタフェース部から前記読込み要求を受け付け、受け付けた前記読込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報が示す論理アドレスに対応する前記記憶領域に記憶されているデータを読み出すように前記アクセス部に指示して読み出された前記データを取得し、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータを前記第1誤り検出対象データまたは前記第1誤り訂正対象データとするとともに前記冗長領域に格納されていたデータを前記第1誤り検出符号または前記第1誤り訂正符号として前記第1判定部に送信して前記第1判定部から送信された第1判定結果を取得し、取得した前記第1判定結果が誤りが検出されなかった旨の結果であった場合、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータを読込み応答として前記ホストインタフェース部に送信し、前記第1判定結果が誤り訂正処理が可能である旨の結果であった場合、前記読み出されたデータの誤りを訂正し、誤り訂正された前記データのうち前記ユーザデータ記憶領域に格納されていたデータを読込み応答として前記ホストインタフェース部に送信し、前記第1判定結果が誤りが検出された旨または誤り訂正処理が不能である旨の結果であった場合、前記読み出されたデータを前記ビット列復元部に送信して前記ビット列復元操作後のデータを取得し、取得した前記ビット列復元操作後のデータのうち前記ユーザデータ記憶領域に格納されていたデータの少なくとも一部を所定の応答の種別を識別する特殊データ識別情報に対応づけられたマジックナンバーとみなして前記特殊データ識別情報を判別し、判別した前記特殊データ識別情報に従って所定の応答を読込み応答として前記ホストインタフェース部に送信する前記読込み部と、
を備え、
前記ホストインタフェース部はさらに、前記読込み部から前記読み出されたデータまたは読み込みの状態を示す情報である読込み状態情報を受け付け、受け付けた前記読み出されたデータまたは前記読込み状態情報を読込み応答として前記ホスト装置へ送信する、
ことを特徴とするコントローラ。
【請求項3】
前記コントローラは、第1誤り検出対象データまたは第1誤り訂正対象データ、および前記第1誤り検出対象データに対応する前記第1誤り検出符号または前記第1誤り訂正対象データに対応する前記第1誤り訂正符号を要求元から受け付け、所定の方法に基づき、受け付けた前記第1誤り検出対象データおよび前記第1誤り検出符号に誤りが存在するか否か、または、前記第1誤り訂正対象データおよび前記第1誤り訂正符号の誤り訂正処理が可能であるか否かを判定して、前記判定結果を前記要求元に送信する第1判定部に、さらに接続され、
前記ホストインタフェース部はさらに、論理アドレス情報が含まれる読込み要求をホスト装置から受け付け、前記受け付けた読込み要求を読込み部に送信し、
前記コントローラは、
要求元から復元操作対象データを受け付け、受け付けた前記復元操作対象データのビット列の復元操作を実行し、ビット列復元操作後の前記復元操作対象データを前記要求元に送信するビット列復元部と、
前記ホストインタフェース部から前記読込み要求を受け付け、受け付けた前記読込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報が示す論理アドレスに対応する前記記憶領域に記憶されているデータを読み出すように前記アクセス部に指示して読み出された前記データを取得し、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータを前記第1誤り検出対象データまたは前記第1誤り訂正対象データとするとともに前記冗長領域に格納されていたデータを前記第1誤り検出符号または前記第1誤り訂正符号として前記第1判定部に送信し、前記第1判定部から送信された第1判定結果を取得し、取得した前記第1判定結果が誤りが検出されなかった旨の結果であった場合、前記第1誤り検出対象データのうち前記ユーザデータ記憶領域に格納されていたデータを読込み応答として前記ホストインタフェース部に送信し、前記第1判定結果が誤り訂正処理が可能である旨の結果であった場合、前記誤り訂正対象データの誤りを訂正して誤り訂正済みデータを生成し、前記誤り訂正済みデータのうち前記ユーザデータ記憶領域に格納されていたデータを読込み応答としてホストインタフェース部に送信し、前記第1判定結果が誤りが検出された旨または誤り訂正処理が不能である旨の結果であった場合、前記読み出されたデータを前記ビット列復元部に送信して前記ビット列復元操作後のデータを取得し、取得した前記ビット列復元操作後のデータのうち前記ユーザデータ記憶領域に格納されていたデータの少なくとも一部を前記マジックナンバーとみなして前記特殊データ識別情報を判別し、判別した前記特殊データ識別情報に従って所定の応答を読込み応答として前記ホストインタフェース部に送信する前記読込み部と、
をさらに備え、
前記ホストインタフェース部はさらに、前記読込み部から前記読み出されたデータまたは読み込みの状態を示す情報である読込み状態情報を受け付け、受け付けた前記読み出されたデータまたは前記読込み状態情報を読込み応答として前記ホスト装置へ送信する、
ことを特徴とする請求項1に記載のコントローラ。
【請求項4】
前記ホストインタフェース部はさらに、論理アドレス情報と書き込むべきデータとが含まれる書込み要求を前記ホスト装置から受け付け、前記受け付けた書込み要求を書込み部に送信し、
前記コントローラは、前記ホストインタフェース部から前記書込み要求を受け付け、受け付けた前記書込み要求から前記書き込むべきデータを抽出し、抽出した前記書き込むべきデータを前記第1生成部に送信して前記書き込むべきデータに対応する第1誤り検出符号を取得し、前記受け付けた書込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報に対応する前記記憶領域のうち前記ユーザデータ記憶領域に前記書き込むべきデータを書き込むとともに前記冗長領域に前記第1誤り検出符号を書き込むように前記アクセス部に指示する前記書込み部を、さらに備える、
ことを特徴とする請求項3に記載のコントローラ。
【請求項5】
前記冗長領域は、第1冗長領域と第2冗長領域とを含み、
前記コントローラは、第2誤り検出符号または第2誤り訂正符号の生成の元とするデータを要求元から受け付け、受け付けた前記データから、所定の方法に基づき、前記第2誤り検出符号または前記第2誤り訂正符号を生成し、生成した前記第2誤り検出符号または前記第2誤り訂正符号を前記要求元に送信する第2生成部に、さらに接続され、
前記特殊データ設定部が、前記アクセス部に前記ビット列操作後の第1誤り検出符号を書き込むように指示した前記冗長領域は前記第1冗長領域であり、
前記特殊データ設定部はさらに、前記ビット列操作後のマジックナンバーおよび第1誤り検出符号を前記第2生成部に送信して前記ビット列操作後のマジックナンバーおよび第1誤り検出符号に対応する第2誤り検出符号を取得し、前記抽出した論理アドレス情報に対応する前記記憶領域のうち前記第2冗長領域にさらに前記第2誤り検出符号を書き込むように前記アクセス部に指示する、
ことを特徴とする請求項1に記載のコントローラ。
【請求項6】
ユーザデータ記憶領域と第1および第2冗長領域とが含まれる記憶領域を複数有し、それぞれの記憶領域に論理アドレスそれぞれに対応するデータを記憶する記憶部への読み書き処理を補助するアクセス部と、
論理アドレス情報が含まれる読込み要求をホスト装置から受け付け、受け付けた前記読込み要求を読込み部に送信するホストインタフェース部と、
第1誤り検出対象データまたは第1誤り訂正対象データ、および前記第1誤り検出対象データに対応する前記第1誤り検出符号または前記第1誤り訂正対象データに対応する前記第1誤り訂正符号を要求元から受け付け、所定の方法に基づき、受け付けた前記第1誤り検出対象データおよび前記第1誤り検出符号に誤りが存在するか否か、または、前記第1誤り訂正対象データおよび前記第1誤り訂正符号の誤り訂正処理が可能であるか否かを判定して、前記判定結果を前記要求元に送信する第1判定部と、
第2誤り検出対象データまたは第2誤り訂正対象データ、および前記2誤り検出対象データに対応する前記第2誤り検出符号または前記第2誤り訂正対象データに対応する前記第2誤り訂正符号を受け付け、所定の方法に基づき、受け付けた前記第2誤り検出対象データおよび前記第2誤り検出符号に誤りが存在するか否か、または、前記第2誤り訂正対象データおよび前記第2誤り訂正符号の誤りを訂正可能であるか否かを判定して、前記判定結果を前記要求元に送信する第2判定部と、
に接続されたコントローラであって、
要求元から復元操作対象データを受け付け、受け付けた前記復元操作対象データのビット列の復元操作を実行し、ビット列復元操作後の前記復元操作対象データを前記要求元に送信するビット列復元部と、
前記ホストインタフェース部から前記読込み要求を受け付け、受け付けた前記読込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報が示す論理アドレスに対応する前記記憶領域に記憶されているデータを読み出すように前記アクセス部に指示して読み出された前記データを取得し、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータと前記第1冗長領域に格納されていたデータとを前記第2誤り検出対象データまたは前記第2誤り訂正対象データとするとともに前記第2冗長領域に格納されていたデータを前記第2誤り検出符号または前記第2誤り訂正符号として前記第2判定部に送信して前記第2判定部から送信された第2判定結果を取得し、取得した前記第2判定結果が誤りが検出されなかった旨の結果であった場合、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータを前記第1誤り検出対象データとするとともに前記第1冗長領域に格納されていたデータを前記第1誤り検出符号として前記第1判定部に送信して前記第1判定部から送信された第1判定結果を取得し、前記第2判定結果が誤り訂正処理が可能である旨の結果であった場合、前記第2誤り訂正対象データの誤りを訂正して誤り訂正済みデータを生成し、前記誤り訂正済みデータのうち前記ユーザデータ記憶領域に格納されていたデータを前記第1誤り訂正対象データとするとともに前記第1冗長領域に格納されていたデータを前記第1誤り訂正符号として前記第1判定部に送信して前記第1判定部から送信された第1判定結果を取得し、取得した前記第1判定結果が誤りが検出されなかった旨または誤り訂正処理が可能である旨の結果であった場合、前記第1誤り検出対象データのうち前記ユーザデータ記憶領域に記憶されていたデータを読込み応答として前記ホストインタフェース部に送信し、前記第1判定結果が誤りが検出された旨または前記第1判定結果が誤り訂正処理が不能である旨の結果であった場合、前記第1誤り検出対象データのうち前記ユーザデータ記憶領域に格納されていたデータと前記第1冗長領域に格納されていたデータとを前記復元操作対象データとして前記ビット列復元部に送信して前記ビット列復元操作後のデータを取得し、取得した前記ビット列復元操作後のデータのうち前記ユーザデータ記憶領域に格納されていたデータの少なくとも一部を所定の応答の種別を識別する特殊データ識別情報に対応づけられたマジックナンバーとみなして前記特殊データ識別情報を判別し、判別した前記特殊データ識別情報に従って所定の応答を読込み応答として前記ホストインタフェース部に送信する前記読込み部と、
を備え、
前記ホストインタフェース部はさらに、前記読込み部から前記読み出されたデータまたは読み込みの状態を示す情報である読込み状態情報を受け付け、受け付けた前記読み出されたデータまたは前記読込み状態情報を読込み応答として前記ホスト装置へ送信する、
ことを特徴とするコントローラ。
【請求項7】
前記コントローラは、
第1誤り検出対象データまたは第1誤り訂正対象データ、および前記第1誤り検出対象データに対応する前記第1誤り検出符号または前記第1誤り訂正対象データに対応する前記第1誤り訂正符号を要求元から受け付け、所定の方法に基づき、受け付けた前記第1誤り検出対象データおよび前記第1誤り検出符号に誤りが存在するか否か、または、前記第1誤り訂正対象データおよび前記第1誤り訂正符号の誤り訂正処理が可能であるか否かを判定して、前記判定結果を前記要求元に送信する第1判定部と、
第2誤り検出対象データまたは第2誤り訂正対象データ、および前記第2誤り検出対象データに対応する前記第2誤り検出符号または前記第2誤り訂正対象データに対応する前記第2誤り訂正符号を要求元から受け付け、所定の方法に基づき、受け付けた前記第2誤り検出対象データおよび前記第2誤り検出符号に誤りが存在するか否か、または、前記第2誤り訂正対象データおよび前記第2誤り訂正符号の誤り訂正処理が可能であるか否かを判定して、前記判定結果を前記要求元に送信する第2判定部と、
にさらに接続され、
前記ホストインタフェース部はさらに、論理アドレス情報が含まれる読込み要求をホスト装置から受け付け、受け付けた前記読込み要求を読込み部に送信し、
前記コントローラは、
要求元から復元操作対象データを受け付け、受け付けた前記復元操作対象データのビット列の復元操作を実行し、ビット列復元操作後の前記復元操作対象データを前記要求元に送信するビット列復元部と、
前記ホストインタフェース部から前記読込み要求を受け付け、受け付けた前記読込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報が示す論理アドレスに対応する前記記憶領域に記憶されているデータを読み出すように前記アクセス部に指示して読み出された前記データを取得し、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータと前記第1冗長領域に格納されていたデータとを前記第2誤り検出対象データまたは前記第2誤り訂正対象データとするとともに前記第2冗長領域に格納されていたデータを前記第2誤り検出符号または前記第2誤り訂正符号として前記第2判定部に送信して前記第2判定部から送信された第2判定結果を取得し、取得した前記第2判定結果が誤りが検出されなかった旨の結果であった場合、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータを前記第1誤り検出対象データとするとともに前記第1冗長領域に格納されていたデータを前記第1誤り検出符号として前記第1判定部に送信して前記第1判定部から送信された第1判定結果を取得し、前記第2判定結果が誤り訂正処理が可能である旨の結果であった場合、前記第2誤り訂正対象データの誤りを訂正して誤り訂正済みデータを生成し、前記誤り訂正済みデータのうち前記ユーザデータ記憶領域に格納されていたデータを前記第1誤り訂正対象データとするとともに前記第1冗長領域に格納されていたデータを前記第1誤り訂正符号として前記第1判定部に送信して前記第1判定部から送信された第1判定結果を取得し、取得した前記第1判定結果が誤りが検出されなかった旨または誤り訂正処理が可能である旨の結果であった場合、前記第1誤り検出対象データのうち前記ユーザデータ記憶領域に記憶されていたデータを読込み応答として前記ホストインタフェース部に送信し、前記第1判定結果が誤りが検出された旨または前記第1判定結果が誤り訂正処理が不能である旨の結果であった場合、前記第1誤り検出対象データのうち前記ユーザデータ記憶領域に格納されていたデータと前記第1冗長領域に格納されていたデータとを前記復元操作対象データとして前記ビット列復元部に送信して前記ビット列復元操作後のデータを取得し、取得した前記ビット列復元操作後のデータのうち前記ユーザデータ記憶領域に格納されていたデータの少なくとも一部を前記マジックナンバーとみなして前記特殊データ識別情報を判別し、判別した前記特殊データ識別情報に従って所定の応答を読込み応答として前記ホストインタフェース部に送信する前記読込み部と、
をさらに備え、
前記ホストインタフェース部はさらに、前記読込み部から前記読み出されたデータまたは読み込みの状態を示す情報である読込み状態情報を受け付け、受け付けた前記読み出されたデータまたは前記読込み状態情報を読込み応答として前記ホスト装置へ送信する、
ことを特徴とする請求項5に記載のコントローラ。
【請求項8】
前記ホストインタフェース部はさらに、論理アドレス情報と書き込むべきデータとが含まれる書込み要求を前記ホスト装置から受け付け、前記受け付けた書込み要求を書込み部に送信し、
前記コントローラは、前記ホストインタフェース部から前記書込み要求を受け付け、受け付けた前記書込み要求から前記書き込むべきデータを抽出し、抽出した前記書き込むべきデータを前記第1生成部に送信して前記書き込むべきデータに対応する第1誤り検出符号を取得し、前記書き込むべきデータと前記第1誤り検出符号とを前記第2生成部に送信して前記書き込むべきデータおよび前記第1誤り検出符号に対応する第2誤り検出符号を取得し、前記受け付けた書込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報に対応する前記記憶領域のうち前記ユーザデータ記憶領域に前記書き込むべきデータを書き込むとともに前記第1冗長領域に前記第1誤り検出符号を書き込み且つ前記第2冗長領域に前記第2誤り検出符号を書き込むように前記アクセス部に指示する前記書込み部を、さらに備える、
ことを特徴とする請求項7に記載のコントローラ。
【請求項9】
ユーザデータ記憶領域と冗長領域が含まれる記憶領域を複数有し、それぞれの記憶領域に論理アドレスそれぞれに対応するデータを記憶する記憶部と、
前記記憶部への読み書き処理を補助するアクセス部と、
論理アドレス情報と所定の応答の種別を識別する特殊データ識別情報とが含まれる特殊データ設定要求と、論理アドレス情報が含まれる読込み要求と、論理アドレス情報と書き込むべきデータとが含まれる書込み要求と、をホスト装置から受け付け、前記受け付けた特殊データ設定要求を特殊データ設定部に、前記受け付けた読込み要求を読込み部に、前記受け付けた書込み要求を書込み部に送信するホストインタフェース部と、
誤り検出符号または誤り訂正符号の生成の元とするデータを要求元から受け付け、受け付けた前記データから、所定の方法に基づき、前記誤り検出符号または前記誤り訂正符号を生成し、生成した前記誤り検出符号または前記誤り訂正符号を前記要求元に送信する第1生成部と、
誤り検出対象データまたは誤り訂正対象データ、および前記誤り検出対象データに対応する前記誤り検出符号または前記誤り訂正対象データに対応する前記誤り訂正符号を要求元から受け付け、所定の方法に基づき、受け付けた前記誤り検出対象データおよび前記誤り訂正符号に誤りが存在するか否か、または、受け付けた前記第1誤り検出対象データおよび前記第1誤り訂正符号の誤り訂正処理が可能であるか否かを判定して、前記判定結果を前記要求元に送信する第1判定部と、
要求元から操作対象データを受け付け、受け付けた前記操作対象データのビット列を所定の規則に基づき操作し、ビット列操作後の前記操作対象データを前記要求元に送信するビット列操作部と、
要求元から復元操作対象データを受け付け、受け付けた前記復元操作対象データのビット列の復元操作を実行し、ビット列復元操作後の前記復元操作対象データを前記要求元に送信するビット列復元部と、
前記ホストインタフェース部から前記特殊データ設定要求を受け付け、受け付けた前記特殊データ設定要求から前記特殊データ識別情報を抽出し、抽出した前記特殊データ識別情報に応じたマジックナンバーを生成し、生成した前記マジックナンバーを前記第1生成部に送信して前記マジックナンバーに対応する誤り検出符号を取得し、前記マジックナンバーと前記誤り検出符号とを前記操作対象データとして前記ビット列操作部に送信してビット列操作後の前記操作対象データを取得し、前記特殊データ設定要求から論理アドレス情報を抽出し、抽出した前記論理アドレス情報に対応する前記記憶領域のうち前記ユーザデータ記憶領域に前記ビット列操作後の操作対象データにおけるマジックナンバーを書き込むとともに前記冗長領域に前記ビット列操作後の操作対象データにおける前記誤り検出符号を書き込むように前記アクセス部に指示する前記特殊データ設定部と、
前記ホストインタフェース部から前記読込み要求を受け付け、受け付けた前記読込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報が示す論理アドレスに対応する前記記憶領域に記憶されているデータを読み出すように前記アクセス部に指示して読み出された前記データを取得し、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータを前記誤り検出対象データまたは前記誤り訂正対象データとするとともに前記冗長領域に格納されていたデータを前記誤り検出符号または前記誤り訂正符号として前記第1判定部に送信して第1判定部から送信された第1判定結果を取得し、取得した前記第1判定結果が誤りが検出されなかった旨の結果であった場合、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータを読込み応答として前記ホストインタフェース部に送信し、前記第1判定結果が誤り訂正処理が可能である旨の結果であった場合、前記読み出されたデータの誤りを訂正し、前記誤り訂正されたデータのうち前記ユーザデータ記憶領域に格納されていたデータを読込み応答として前記ホストインタフェース部に送信し、前記第1判定結果が誤りが検出された旨または誤り訂正処理が不能である旨の結果であった場合、前記読み出されたデータを前記ビット列復元部に送信して前記ビット列復元操作後のデータを取得し、取得した前記ビット列復元操作後のデータのうち前記ユーザデータ記憶領域に格納されていたデータの少なくとも一部を前記マジックナンバーとみなして前記特殊データ識別情報を判別し、判別した前記特殊データ識別情報に従って所定の応答を読込み応答として前記ホストインタフェース部に送信する前記読込み部と、
前記ホストインタフェース部から前記書込み要求を受け付け、受け付けた前記書込み要求から前記書き込むべきデータを抽出し、抽出した前記書き込むべきデータを前記第1生成部に送信して前記書き込むべきデータに対応する誤り検出符号を取得し、前記受け付けた書込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報に対応する前記記憶領域のうち前記ユーザデータ記憶領域に前記書き込むべきデータを書き込むとともに前記冗長領域に前記誤り検出符号を書き込むように前記アクセス部に指示する前記書込み部と、
をさらに備え、
前記ホストインタフェース部はさらに、前記読込み部から前記読み出されたデータまたは読み込みの状態を示す情報である読込み状態情報を受け付け、受け付けた前記読み出されたデータまたは前記読込み状態情報を読込み応答として前記ホスト装置へ送信する、
ことを特徴とするデータ記憶装置。
【請求項10】
ユーザデータ記憶領域と冗長領域とが含まれる記憶領域を複数有し、それぞれの記憶領域に論理アドレスそれぞれに対応するデータを記憶する記憶部への読み書き処理を補助するアクセス部と、
論理アドレス情報と所定の応答の種別を識別する特殊データ識別情報とが含まれる特殊データ設定要求と、論理アドレス情報が含まれる読込み要求と、論理アドレス情報と書き込むべきデータとが含まれる書込み要求と、をホスト装置から受け付け、前記受け付けた特殊データ設定要求を特殊データ設定処理を実行するコンピュータに、前記受け付けた読込み要求を読込み処理を実行するコンピュータに、前記受け付けた書込み要求を書込み処理を実行するコンピュータに送信するホストインタフェース部と、
誤り検出符号または誤り訂正符号の生成の元とするデータを要求元から受け付け、受け付けた前記データから、所定の方法に基づき、前記誤り検出符号または前記誤り訂正符号を生成し、生成した前記誤り検出符号または前記誤り訂正符号を前記要求元に送信する第1生成部と、
誤り検出対象データまたは誤り訂正対象データ、および前記誤り検出対象データに対応する前記誤り検出符号または前記誤り訂正対象データに対応する前記誤り訂正符号を要求元から受け付け、所定の方法に基づき、受け付けた前記誤り検出対象データおよび前記誤り訂正符号に誤りが存在するか否か、または、受け付けた前記第1誤り検出対象データおよび前記第1誤り訂正符号の誤り訂正処理が可能であるか否かを判定して、前記判定結果を前記要求元に送信する第1判定部と、
を制御するコンピュータを機能させるためのプログラムであって、
要求元から操作対象データを受け付け、受け付けた前記操作対象データのビット列を所定の規則に基づき操作し、ビット列操作後の前記操作対象データを前記要求元に送信するビット列操作処理と、
要求元から復元操作対象データを受け付け、受け付けた前記復元操作対象データのビット列の復元操作を実行し、ビット列復元操作後の前記復元操作対象データを前記要求元に送信するビット列復元処理と、
前記ホストインタフェース部から前記特殊データ設定要求を受け付け、受け付けた前記特殊データ設定要求から前記特殊データ識別情報を抽出し、抽出した前記特殊データ識別情報に応じたマジックナンバーを生成し、生成した前記マジックナンバーを前記第1生成部に送信して前記マジックナンバーに対応する誤り検出符号を取得し、前記マジックナンバーと前記誤り検出符号とを前記操作対象データとして前記ビット列操作処理に入力してビット列操作後の前記操作対象データを取得し、前記特殊データ設定要求から論理アドレス情報を抽出し、抽出した前記論理アドレス情報に対応する前記記憶領域のうち前記ユーザデータ記憶領域に前記ビット列操作後の操作対象データにおけるマジックナンバーを書き込むとともに前記冗長領域に前記ビット列操作後の操作対象データにおける前記誤り検出符号を書き込むように前記アクセス部に指示する前記特殊データ設定処理と、
前記ホストインタフェース部から前記読込み要求を受け付け、受け付けた前記読込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報が示す論理アドレスに対応する前記記憶領域に記憶されているデータを読み出すように前記アクセス部に指示して読み出された前記データを取得し、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータを前記誤り検出対象データまたは前記誤り訂正対象データとするとともに前記冗長領域に格納されていたデータを前記誤り検出符号または前記誤り訂正符号として前記第1判定部に送信して前記第1判定部から送信された第1判定結果を取得し、取得した前記第1判定結果が誤りが検出されなかった旨の結果であった場合、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータを読込み応答として前記ホストインタフェース部に送信し、前記第1判定結果が誤り訂正処理が可能である旨の結果であった場合、前記読み出されたデータの誤りを訂正し、前記誤り訂正されたデータのうち前記ユーザデータ記憶領域に格納されていたデータを読込み応答として前記ホストインタフェース部に送信し、前記第1判定結果が誤りが検出された旨または誤り訂正処理が不能である旨の結果であった場合、前記読み出されたデータを前記ビット列復元処理に入力して前記ビット列復元操作後のデータを取得し、取得した前記ビット列復元操作後のデータのうち前記ユーザデータ記憶領域に格納されていたデータの少なくとも一部を前記マジックナンバーとみなして前記特殊データ識別情報を判別し、判別した前記特殊データ識別情報に従って所定の応答を読込み応答として前記ホストインタフェース部に送信する前記読込み処理と、
前記ホストインタフェース部から前記書込み要求を受け付け、受け付けた前記書込み要求から前記書き込むべきデータを抽出し、抽出した前記書き込むべきデータを前記第1生成部に送信して前記書き込むべきデータに対応する誤り検出符号を取得し、前記受け付けた書込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報に対応する前記記憶領域のうち前記ユーザデータ記憶領域に前記書き込むべきデータを書き込むとともに前記冗長領域に前記誤り検出符号を書き込むように前記アクセス部に指示する前記書込み処理と、
を前記コンピュータに実行させ、
前記ホストインタフェース部はさらに、前記読込み処理で送信された前記読み出されたデータまたは読み込みの状態を示す情報である読込み状態情報を受け付け、受け付けた前記読み出されたデータまたは前記読込み状態情報を読込み応答として前記ホスト装置へ送信する、
ことを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3A】
image rotate

【図3B】
image rotate

【図3C】
image rotate

【図4A】
image rotate

【図4B】
image rotate

【図4C】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2012−181700(P2012−181700A)
【公開日】平成24年9月20日(2012.9.20)
【国際特許分類】
【出願番号】特願2011−44425(P2011−44425)
【出願日】平成23年3月1日(2011.3.1)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】