(57)【特許請求の範囲】
【請求項１】
ユーザデータ記憶領域と冗長領域とが含まれる記憶領域を複数有し、それぞれの記憶領域に論理アドレスそれぞれに対応するデータを記憶する記憶部への読み書き処理を補助するアクセス部と、
論理アドレス情報と所定の応答の種別を識別する特殊データ識別情報とが含まれる特殊データ設定要求をホスト装置から受け付け、前記受け付けた特殊データ設定要求を特殊データ設定部に送信するホストインタフェース部と、
第１誤り検出符号の生成の元とするデータを要求元から受け付け、受け付けた前記データから、所定の方法に基づき、前記第１誤り検出符号を生成し、生成した前記第１誤り検出符号を前記要求元に送信する第１生成部と、
に接続されたコントローラであって、
要求元から操作対象データを受け付け、受け付けた前記操作対象データのビット列を所定の規則に基づき操作し、ビット列操作後の前記操作対象データを前記要求元に送信するビット列操作部と、
前記ホストインタフェース部から前記特殊データ設定要求を受け付け、受け付けた前記特殊データ設定要求から前記特殊データ識別情報を抽出し、抽出した前記特殊データ識別情報に応じた識別ビット列を生成し、生成した前記識別ビット列を前記第１生成部に送信して前記識別ビット列に対応する第１誤り検出符号を取得し、前記識別ビット列と前記第１誤り検出符号とを前記操作対象データとして前記ビット列操作部に送信してビット列操作後の前記操作対象データを取得し、前記特殊データ設定要求から論理アドレス情報を抽出し、抽出した前記論理アドレス情報に対応する前記記憶領域のうち前記ユーザデータ記憶領域に前記ビット列操作後の操作対象データにおける前記識別ビット列を書き込むとともに前記冗長領域に前記ビット列操作後の操作対象データにおける前記第１誤り検出符号を書き込むように前記アクセス部に指示する前記特殊データ設定部と、
を備え、
前記所定の規則は、ビット列操作の結果として誤りが検出されるビット列の操作の規則となっていること、および、ビット列操作後のビット列を元のビット列に復元可能であるビット列の操作の規則となっていることを含むことを特徴とするコントローラ。
【請求項２】
ユーザデータ記憶領域と冗長領域とが含まれる記憶領域を複数有し、それぞれの記憶領域に論理アドレスそれぞれに対応するデータを記憶する記憶部への読み書き処理を補助するアクセス部と、
論理アドレス情報と所定の応答の種別を識別する特殊データ識別情報とが含まれる特殊データ設定要求をホスト装置から受け付け、前記受け付けた特殊データ設定要求を特殊データ設定部に送信するホストインタフェース部と、
第１誤り訂正符号の生成の元とするデータを要求元から受け付け、受け付けた前記データから、所定の方法に基づき、前記第１誤り訂正符号を生成し、生成した第１誤り訂正符号を前記要求元に送信する第１生成部と、
に接続されたコントローラであって、
要求元から操作対象データを受け付け、受け付けた前記操作対象データのビット列を所定の規則に基づき操作し、ビット列操作後の前記操作対象データを前記要求元に送信するビット列操作部と、
前記ホストインタフェース部から前記特殊データ設定要求を受け付け、受け付けた前記特殊データ設定要求から前記特殊データ識別情報を抽出し、抽出した前記特殊データ識別情報に応じた識別ビット列を生成し、生成した前記識別ビット列を前記第１生成部に送信して前記識別ビット列に対応する第１誤り訂正符号を取得し、前記識別ビット列と前記第１誤り訂正符号とを前記操作対象データとして前記ビット列操作部に送信してビット列操作後の前記操作対象データを取得し、前記特殊データ設定要求から論理アドレス情報を抽出し、抽出した前記論理アドレス情報に対応する前記記憶領域のうち前記ユーザデータ記憶領域に前記ビット列操作後の操作対象データにおける前記識別ビット列を書き込むとともに前記冗長領域に前記ビット列操作後の操作対象データにおける前記第１誤り訂正符号を書き込むように前記アクセス部に指示する前記特殊データ設定部と、
を備え、
前記所定の規則は、ビット列操作後のビット列に対する誤り訂正が不可能になること、および、ビット列操作後のビット列を元のビット列に復元可能であることを含むことを特徴とするコントローラ。
【請求項３】
ユーザデータ記憶領域と冗長領域とが含まれる記憶領域を複数有し、それぞれの記憶領域に論理アドレスそれぞれに対応するデータを記憶する記憶部への読み書き処理を補助するアクセス部と、
論理アドレス情報が含まれる読込み要求をホスト装置から受け付け、前記受け付けた読込み要求を読込み部に送信するホストインタフェース部と、
第１誤り検出対象データまたは第１誤り訂正対象データ、および前記第１誤り検出対象データに対応する第１誤り検出符号または前記第１誤り訂正対象データに対応する第１誤り訂正符号を要求元から受け付け、所定の方法に基づき、受け付けた前記第１誤り検出対象データおよび前記第１誤り検出符号に誤りが存在するか否か、または、前記第１誤り訂正対象データおよび前記第１誤り訂正符号の誤り訂正処理が可能であるか否かを判定して、前記判定結果を前記要求元に送信する第１判定部と、
に接続されたコントローラであって、
要求元から復元操作対象データを受け付け、受け付けた前記復元操作対象データのビット列の復元操作を実行し、ビット列復元操作後の前記復元操作対象データを前記要求元に送信するビット列復元部と、
前記ホストインタフェース部から前記読込み要求を受け付け、受け付けた前記読込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報が示す論理アドレスに対応する前記記憶領域に記憶されているデータを読み出すように前記アクセス部に指示して読み出された前記データを取得し、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータを前記第１誤り検出対象データまたは前記第１誤り訂正対象データとするとともに前記冗長領域に格納されていたデータを前記第１誤り検出符号または前記第１誤り訂正符号として前記第１判定部に送信して前記第１判定部から送信された第１判定結果を取得し、取得した前記第１判定結果が誤りが検出されなかった旨の結果であった場合、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータを読込み応答として前記ホストインタフェース部に送信し、前記第１判定結果が誤り訂正処理が可能である旨の結果であった場合、前記読み出されたデータの誤りを訂正し、誤り訂正された前記データのうち前記ユーザデータ記憶領域に格納されていたデータを読込み応答として前記ホストインタフェース部に送信し、前記第１判定結果が誤りが検出された旨または誤り訂正処理が不能である旨の結果であった場合、前記読み出されたデータを前記ビット列復元部に送信して前記ビット列復元操作後のデータを取得し、取得した前記ビット列復元操作後のデータのうち前記ユーザデータ記憶領域に格納されていたデータの少なくとも一部を所定の応答の種別を識別する特殊データ識別情報に対応づけられたマジックナンバーとみなして前記特殊データ識別情報を判別し、判別した前記特殊データ識別情報に従って所定の応答を読込み応答として前記ホストインタフェース部に送信する前記読込み部と、
を備え、
前記ホストインタフェース部はさらに、前記読込み部から前記読み出されたデータまたは読み込みの状態を示す情報である読込み状態情報を受け付け、受け付けた前記読み出されたデータまたは前記読込み状態情報を読込み応答として前記ホスト装置へ送信する、
ことを特徴とするコントローラ。
【請求項４】
前記コントローラは、第１誤り検出対象データ、および前記第１誤り検出対象データに対応する前記第１誤り検出符号を要求元から受け付け、所定の方法に基づき、受け付けた前記第１誤り検出対象データおよび前記第１誤り検出符号に誤りが存在するか否かを判定して、前記判定結果を前記要求元に送信する第１判定部に、さらに接続され、
前記ホストインタフェース部はさらに、論理アドレス情報が含まれる読込み要求をホスト装置から受け付け、前記受け付けた読込み要求を読込み部に送信し、
前記コントローラは、
要求元から復元操作対象データを受け付け、受け付けた前記復元操作対象データのビット列の復元操作を実行し、ビット列復元操作後の前記復元操作対象データを前記要求元に送信するビット列復元部と、
前記ホストインタフェース部から前記読込み要求を受け付け、受け付けた前記読込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報が示す論理アドレスに対応する前記記憶領域に記憶されているデータを読み出すように前記アクセス部に指示して読み出された前記データを取得し、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータを前記第１誤り検出対象データとするとともに前記冗長領域に格納されていたデータを前記第１誤り検出符号として前記第１判定部に送信し、前記第１判定部から送信された第１判定結果を取得し、取得した前記第１判定結果が誤りが検出されなかった旨の結果であった場合、前記第１誤り検出対象データのうち前記ユーザデータ記憶領域に格納されていたデータを読込み応答として前記ホストインタフェース部に送信し、前記第１判定結果が誤りが検出された旨の結果であった場合、前記読み出されたデータを前記ビット列復元部に送信して前記ビット列復元操作後のデータを取得し、取得した前記ビット列復元操作後のデータのうち前記ユーザデータ記憶領域に格納されていたデータの少なくとも一部を前記マジックナンバーとみなして前記特殊データ識別情報を判別し、判別した前記特殊データ識別情報に従って所定の応答を読込み応答として前記ホストインタフェース部に送信する前記読込み部と、
をさらに備え、
前記ホストインタフェース部はさらに、前記読込み部から前記読み出されたデータまたは読み込みの状態を示す情報である読込み状態情報を受け付け、受け付けた前記読み出されたデータまたは前記読込み状態情報を読込み応答として前記ホスト装置へ送信する、
ことを特徴とする請求項１に記載のコントローラ。
【請求項５】
前記ホストインタフェース部はさらに、論理アドレス情報と書き込むべきデータとが含まれる書込み要求を前記ホスト装置から受け付け、前記受け付けた書込み要求を書込み部に送信し、
前記コントローラは、前記ホストインタフェース部から前記書込み要求を受け付け、受け付けた前記書込み要求から前記書き込むべきデータを抽出し、抽出した前記書き込むべきデータを前記第１生成部に送信して前記書き込むべきデータに対応する第１誤り検出符号を取得し、前記受け付けた書込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報に対応する前記記憶領域のうち前記ユーザデータ記憶領域に前記書き込むべきデータを書き込むとともに前記冗長領域に前記第１誤り検出符号を書き込むように前記アクセス部に指示する前記書込み部を、さらに備える、
ことを特徴とする請求項４に記載のコントローラ。
【請求項６】
前記コントローラは、第１誤り訂正対象データ、および前記第１誤り訂正対象データに対応する前記第１誤り訂正符号を要求元から受け付け、所定の方法に基づき、受け付けた前記第１誤り訂正対象データおよび前記第１誤り訂正符号の誤り訂正処理が可能であるか否かを判定して、前記判定結果を前記要求元に送信する第１判定部に、さらに接続され、
前記ホストインタフェース部はさらに、論理アドレス情報が含まれる読込み要求をホスト装置から受け付け、前記受け付けた読込み要求を読込み部に送信し、
前記コントローラは、
要求元から復元操作対象データを受け付け、受け付けた前記復元操作対象データのビット列の復元操作を実行し、ビット列復元操作後の前記復元操作対象データを前記要求元に送信するビット列復元部と、
前記ホストインタフェース部から前記読込み要求を受け付け、受け付けた前記読込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報が示す論理アドレスに対応する前記記憶領域に記憶されているデータを読み出すように前記アクセス部に指示して読み出された前記データを取得し、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータを前記第１誤り訂正対象データとするとともに前記冗長領域に格納されていたデータを前記第１誤り訂正符号として前記第１判定部に送信し、前記第１判定部から送信された第１判定結果を取得し、取得した前記第１判定結果が誤り訂正処理が可能である旨の結果であった場合、前記誤り訂正対象データの誤りを訂正して誤り訂正済みデータを生成し、前記誤り訂正済みデータのうち前記ユーザデータ記憶領域に格納されていたデータを読込み応答としてホストインタフェース部に送信し、前記第１判定結果が誤り訂正処理が不能である旨の結果であった場合、前記読み出されたデータを前記ビット列復元部に送信して前記ビット列復元操作後のデータを取得し、取得した前記ビット列復元操作後のデータのうち前記ユーザデータ記憶領域に格納されていたデータの少なくとも一部を前記マジックナンバーとみなして前記特殊データ識別情報を判別し、判別した前記特殊データ識別情報に従って所定の応答を読込み応答として前記ホストインタフェース部に送信する前記読込み部と、
をさらに備え、
前記ホストインタフェース部はさらに、前記読込み部から前記読み出されたデータまたは読み込みの状態を示す情報である読込み状態情報を受け付け、受け付けた前記読み出されたデータまたは前記読込み状態情報を読込み応答として前記ホスト装置へ送信する、
ことを特徴とする請求項２に記載のコントローラ。
【請求項７】
前記ホストインタフェース部はさらに、論理アドレス情報と書き込むべきデータとが含まれる書込み要求を前記ホスト装置から受け付け、前記受け付けた書込み要求を書込み部に送信し、
前記コントローラは、前記ホストインタフェース部から前記書込み要求を受け付け、受け付けた前記書込み要求から前記書き込むべきデータを抽出し、抽出した前記書き込むべきデータを前記第１生成部に送信して前記書き込むべきデータに対応する第１誤り訂正符号を取得し、前記受け付けた書込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報に対応する前記記憶領域のうち前記ユーザデータ記憶領域に前記書き込むべきデータを書き込むとともに前記冗長領域に前記第１誤り訂正符号を書き込むように前記アクセス部に指示する前記書込み部を、さらに備える、
ことを特徴とする請求項６に記載のコントローラ。
【請求項８】
前記冗長領域は、第１冗長領域と第２冗長領域とを含み、
前記コントローラは、第２誤り検出符号の生成の元とするデータを要求元から受け付け、受け付けた前記データから、所定の方法に基づき、前記第２誤り検出符号を生成し、生成した前記第２誤り検出符号を前記要求元に送信する第２生成部に、さらに接続され、
前記特殊データ設定部が、前記アクセス部に前記ビット列操作後の第１誤り検出符号を書き込むように指示した前記冗長領域は前記第１冗長領域であり、
前記特殊データ設定部はさらに、前記ビット列操作後のマジックナンバーおよび第１誤り検出符号を前記第２生成部に送信して前記ビット列操作後のマジックナンバーおよび第１誤り検出符号に対応する第２誤り検出符号を取得し、前記抽出した論理アドレス情報に対応する前記記憶領域のうち前記第２冗長領域にさらに前記第２誤り検出符号を書き込むように前記アクセス部に指示する、
ことを特徴とする請求項１に記載のコントローラ。
【請求項９】
前記冗長領域は、第１冗長領域と第２冗長領域とを含み、
前記コントローラは、第２誤り訂正符号の生成の元とするデータを要求元から受け付け、受け付けた前記データから、所定の方法に基づき、前記第２誤り訂正符号を生成し、生成した前記第２誤り訂正符号を前記要求元に送信する第２生成部に、さらに接続され、
前記特殊データ設定部が、前記アクセス部に前記ビット列操作後の第１誤り検出符号を書き込むように指示した前記冗長領域は前記第１冗長領域であり、
前記特殊データ設定部はさらに、前記ビット列操作後のマジックナンバーおよび第１誤り検出符号を前記第２生成部に送信して前記ビット列操作後のマジックナンバーおよび第１誤り検出符号に対応する第２誤り訂正符号を取得し、前記抽出した論理アドレス情報に対応する前記記憶領域のうち前記第２冗長領域にさらに前記第２誤り訂正符号を書き込むように前記アクセス部に指示する、
ことを特徴とする請求項１に記載のコントローラ。
【請求項１０】
前記冗長領域は、第１冗長領域と第２冗長領域とを含み、
前記コントローラは、第２誤り検出符号の生成の元とするデータを要求元から受け付け、受け付けた前記データから、所定の方法に基づき、前記第２誤り検出符号を生成し、生成した前記第２誤り検出符号を前記要求元に送信する第２生成部に、さらに接続され、
前記特殊データ設定部が、前記アクセス部に前記ビット列操作後の第１誤り訂正符号を書き込むように指示した前記冗長領域は前記第１冗長領域であり、
前記特殊データ設定部はさらに、前記ビット列操作後のマジックナンバーおよび第１誤り訂正符号を前記第２生成部に送信して前記ビット列操作後のマジックナンバーおよび第１誤り訂正符号に対応する第２誤り検出符号を取得し、前記抽出した論理アドレス情報に対応する前記記憶領域のうち前記第２冗長領域にさらに前記第２誤り検出符号を書き込むように前記アクセス部に指示する、
ことを特徴とする請求項２に記載のコントローラ。
【請求項１１】
前記冗長領域は、第１冗長領域と第２冗長領域とを含み、
前記コントローラは、第２誤り訂正符号の生成の元とするデータを要求元から受け付け、受け付けた前記データから、所定の方法に基づき、前記第２誤り訂正符号を生成し、生成した前記第２誤り訂正符号を前記要求元に送信する第２生成部に、さらに接続され、
前記特殊データ設定部が、前記アクセス部に前記ビット列操作後の第１誤り訂正符号を書き込むように指示した前記冗長領域は前記第１冗長領域であり、
前記特殊データ設定部はさらに、前記ビット列操作後のマジックナンバーおよび第１誤り訂正符号を前記第２生成部に送信して前記ビット列操作後のマジックナンバーおよび第１誤り訂正符号に対応する第２誤り訂正符号を取得し、前記抽出した論理アドレス情報に対応する前記記憶領域のうち前記第２冗長領域にさらに前記第２誤り訂正符号を書き込むように前記アクセス部に指示する、
ことを特徴とする請求項２に記載のコントローラ。
【請求項１２】
ユーザデータ記憶領域と第１および第２冗長領域とが含まれる記憶領域を複数有し、それぞれの記憶領域に論理アドレスそれぞれに対応するデータを記憶する記憶部への読み書き処理を補助するアクセス部と、
論理アドレス情報が含まれる読込み要求をホスト装置から受け付け、受け付けた前記読込み要求を読込み部に送信するホストインタフェース部と、
第１誤り検出対象データまたは第１誤り訂正対象データ、および前記第１誤り検出対象データに対応する前記第１誤り検出符号または前記第１誤り訂正対象データに対応する前記第１誤り訂正符号を要求元から受け付け、所定の方法に基づき、受け付けた前記第１誤り検出対象データおよび前記第１誤り検出符号に誤りが存在するか否か、または、前記第１誤り訂正対象データおよび前記第１誤り訂正符号の誤り訂正処理が可能であるか否かを判定して、前記判定結果を前記要求元に送信する第１判定部と、
第２誤り検出対象データまたは第２誤り訂正対象データ、および前記第２誤り検出対象データに対応する前記第２誤り検出符号または前記第２誤り訂正対象データに対応する前記第２誤り訂正符号を受け付け、所定の方法に基づき、受け付けた前記第２誤り検出対象データおよび前記第２誤り検出符号に誤りが存在するか否か、または、前記第２誤り訂正対象データおよび前記第２誤り訂正符号の誤りを訂正可能であるか否かを判定して、前記判定結果を前記要求元に送信する第２判定部と、
に接続されたコントローラであって、
要求元から復元操作対象データを受け付け、受け付けた前記復元操作対象データのビット列の復元操作を実行し、ビット列復元操作後の前記復元操作対象データを前記要求元に送信するビット列復元部と、
前記ホストインタフェース部から前記読込み要求を受け付け、受け付けた前記読込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報が示す論理アドレスに対応する前記記憶領域に記憶されているデータを読み出すように前記アクセス部に指示して読み出された前記データを取得し、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータと前記第１冗長領域に格納されていたデータとを前記第２誤り検出対象データまたは前記第２誤り訂正対象データとするとともに前記第２冗長領域に格納されていたデータを前記第２誤り検出符号または前記第２誤り訂正符号として前記第２判定部に送信して前記第２判定部から送信された第２判定結果を取得し、取得した前記第２判定結果が誤りが検出されなかった旨の結果であった場合、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータを前記第１誤り検出対象データとするとともに前記第１冗長領域に格納されていたデータを前記第１誤り検出符号として前記第１判定部に送信して前記第１判定部から送信された第１判定結果を取得し、前記第２判定結果が誤り訂正処理が可能である旨の結果であった場合、前記第２誤り訂正対象データの誤りを訂正して誤り訂正済みデータを生成し、前記誤り訂正済みデータのうち前記ユーザデータ記憶領域に格納されていたデータを前記第１誤り訂正対象データとするとともに前記第１冗長領域に格納されていたデータを前記第１誤り訂正符号として前記第１判定部に送信して前記第１判定部から送信された第１判定結果を取得し、取得した前記第１判定結果が誤りが検出されなかった旨または誤り訂正処理が可能である旨の結果であった場合、前記第１誤り検出対象データのうち前記ユーザデータ記憶領域に記憶されていたデータを読込み応答として前記ホストインタフェース部に送信し、前記第１判定結果が誤りが検出された旨または前記第１判定結果が誤り訂正処理が不能である旨の結果であった場合、前記第１誤り検出対象データのうち前記ユーザデータ記憶領域に格納されていたデータと前記第１冗長領域に格納されていたデータとを前記復元操作対象データとして前記ビット列復元部に送信して前記ビット列復元操作後のデータを取得し、取得した前記ビット列復元操作後のデータのうち前記ユーザデータ記憶領域に格納されていたデータの少なくとも一部を所定の応答の種別を識別する特殊データ識別情報に対応づけられたマジックナンバーとみなして前記特殊データ識別情報を判別し、判別した前記特殊データ識別情報に従って所定の応答を読込み応答として前記ホストインタフェース部に送信する前記読込み部と、
を備え、
前記ホストインタフェース部はさらに、前記読込み部から前記読み出されたデータまたは読み込みの状態を示す情報である読込み状態情報を受け付け、受け付けた前記読み出されたデータまたは前記読込み状態情報を読込み応答として前記ホスト装置へ送信する、
ことを特徴とするコントローラ。
【請求項１３】
前記コントローラは、
第１誤り検出対象データ、および前記第１誤り検出対象データに対応する前記第１誤り検出符号を要求元から受け付け、所定の方法に基づき、受け付けた前記第１誤り検出対象データおよび前記第１誤り検出符号に誤りが存在するか否かを判定して、前記判定結果を前記要求元に送信する第１判定部と、
第２誤り検出対象データ、および前記第２誤り検出対象データに対応する前記第２誤り検出符号を要求元から受け付け、所定の方法に基づき、受け付けた前記第２誤り検出対象データおよび前記第２誤り検出符号に誤りが存在するか否かを判定して、前記判定結果を前記要求元に送信する第２判定部と、
にさらに接続され、
前記ホストインタフェース部はさらに、論理アドレス情報が含まれる読込み要求をホスト装置から受け付け、受け付けた前記読込み要求を読込み部に送信し、
前記コントローラは、
要求元から復元操作対象データを受け付け、受け付けた前記復元操作対象データのビット列の復元操作を実行し、ビット列復元操作後の前記復元操作対象データを前記要求元に送信するビット列復元部と、
前記ホストインタフェース部から前記読込み要求を受け付け、受け付けた前記読込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報が示す論理アドレスに対応する前記記憶領域に記憶されているデータを読み出すように前記アクセス部に指示して読み出された前記データを取得し、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータと前記第１冗長領域に格納されていたデータとを前記第２誤り検出対象データとするとともに前記第２冗長領域に格納されていたデータを前記第２誤り検出符号として前記第２判定部に送信して前記第２判定部から送信された第２判定結果を取得し、取得した前記第２判定結果が誤りが検出されなかった旨の結果であった場合、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータを前記第１誤り検出対象データとするとともに前記第１冗長領域に格納されていたデータを前記第１誤り検出符号として前記第１判定部に送信して前記第１判定部から送信された第１判定結果を取得し、取得した前記第１判定結果が誤りが検出されなかった旨の結果であった場合、前記第１誤り検出対象データのうち前記ユーザデータ記憶領域に記憶されていたデータを読込み応答として前記ホストインタフェース部に送信し、前記第１判定結果が誤りが検出された旨の結果であった場合、前記第１誤り検出対象データのうち前記ユーザデータ記憶領域に格納されていたデータと前記第１冗長領域に格納されていたデータとを前記復元操作対象データとして前記ビット列復元部に送信して前記ビット列復元操作後のデータを取得し、取得した前記ビット列復元操作後のデータのうち前記ユーザデータ記憶領域に格納されていたデータの少なくとも一部を前記マジックナンバーとみなして前記特殊データ識別情報を判別し、判別した前記特殊データ識別情報に従って所定の応答を読込み応答として前記ホストインタフェース部に送信する前記読込み部と、
をさらに備え、
前記ホストインタフェース部はさらに、前記読込み部から前記読み出されたデータまたは読み込みの状態を示す情報である読込み状態情報を受け付け、受け付けた前記読み出されたデータまたは前記読込み状態情報を読込み応答として前記ホスト装置へ送信する、
ことを特徴とする請求項８に記載のコントローラ。
【請求項１４】
前記ホストインタフェース部はさらに、論理アドレス情報と書き込むべきデータとが含まれる書込み要求を前記ホスト装置から受け付け、前記受け付けた書込み要求を書込み部に送信し、
前記コントローラは、前記ホストインタフェース部から前記書込み要求を受け付け、受け付けた前記書込み要求から前記書き込むべきデータを抽出し、抽出した前記書き込むべきデータを前記第１生成部に送信して前記書き込むべきデータに対応する第１誤り検出符号を取得し、前記書き込むべきデータと前記第１誤り検出符号とを前記第２生成部に送信して前記書き込むべきデータおよび前記第１誤り検出符号に対応する第２誤り検出符号を取得し、前記受け付けた書込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報に対応する前記記憶領域のうち前記ユーザデータ記憶領域に前記書き込むべきデータを書き込むとともに前記第１冗長領域に前記第１誤り検出符号を書き込み且つ前記第２冗長領域に前記第２誤り検出符号を書き込むように前記アクセス部に指示する前記書込み部を、さらに備える、
ことを特徴とする請求項１３に記載のコントローラ。
【請求項１５】
前記コントローラは、
第１誤り検出対象データ、および前記第１誤り検出対象データに対応する前記第１誤り検出符号を要求元から受け付け、所定の方法に基づき、受け付けた前記第１誤り検出対象データおよび前記第１誤り検出符号に誤りが存在するか否かを判定して、前記判定結果を前記要求元に送信する第１判定部と、
第２誤り訂正対象データ、および前記第２誤り訂正対象データに対応する前記第２誤り訂正符号を要求元から受け付け、所定の方法に基づき、受け付けた前記第２誤り訂正対象データおよび前記第２誤り訂正符号の誤り訂正処理が可能であるか否かを判定して、前記判定結果を前記要求元に送信する第２判定部と、
にさらに接続され、
前記ホストインタフェース部はさらに、論理アドレス情報が含まれる読込み要求をホスト装置から受け付け、受け付けた前記読込み要求を読込み部に送信し、
前記コントローラは、
要求元から復元操作対象データを受け付け、受け付けた前記復元操作対象データのビット列の復元操作を実行し、ビット列復元操作後の前記復元操作対象データを前記要求元に送信するビット列復元部と、
前記ホストインタフェース部から前記読込み要求を受け付け、受け付けた前記読込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報が示す論理アドレスに対応する前記記憶領域に記憶されているデータを読み出すように前記アクセス部に指示して読み出された前記データを取得し、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータと前記第１冗長領域に格納されていたデータとを前記第２誤り訂正対象データとするとともに前記第２冗長領域に格納されていたデータを前記第２誤り訂正符号として前記第２判定部に送信して前記第２判定部から送信された第２判定結果を取得し、取得した前記第２判定結果が誤り訂正処理が可能である旨の結果であった場合、前記第２誤り訂正対象データの誤りを訂正して誤り訂正済みデータを生成し、前記誤り訂正済みデータのうち前記ユーザデータ記憶領域に格納されていたデータを前記第１誤り検出対象データとするとともに前記第１冗長領域に格納されていたデータを前記第１誤り検出符号として前記第１判定部に送信して前記第１判定部から送信された第１判定結果を取得し、取得した前記第１判定結果が誤りが検出されなかった旨の結果であった場合、前記第１誤り検出対象データのうち前記ユーザデータ記憶領域に記憶されていたデータを読込み応答として前記ホストインタフェース部に送信し、前記第１判定結果が誤りが検出された旨の結果であった場合、前記第１誤り検出対象データのうち前記ユーザデータ記憶領域に格納されていたデータと前記第１冗長領域に格納されていたデータとを前記復元操作対象データとして前記ビット列復元部に送信して前記ビット列復元操作後のデータを取得し、取得した前記ビット列復元操作後のデータのうち前記ユーザデータ記憶領域に格納されていたデータの少なくとも一部を前記マジックナンバーとみなして前記特殊データ識別情報を判別し、判別した前記特殊データ識別情報に従って所定の応答を読込み応答として前記ホストインタフェース部に送信する前記読込み部と、
をさらに備え、
前記ホストインタフェース部はさらに、前記読込み部から前記読み出されたデータまたは読み込みの状態を示す情報である読込み状態情報を受け付け、受け付けた前記読み出されたデータまたは前記読込み状態情報を読込み応答として前記ホスト装置へ送信する、
ことを特徴とする請求項９に記載のコントローラ。
【請求項１６】
前記ホストインタフェース部はさらに、論理アドレス情報と書き込むべきデータとが含まれる書込み要求を前記ホスト装置から受け付け、前記受け付けた書込み要求を書込み部に送信し、
前記コントローラは、前記ホストインタフェース部から前記書込み要求を受け付け、受け付けた前記書込み要求から前記書き込むべきデータを抽出し、抽出した前記書き込むべきデータを前記第１生成部に送信して前記書き込むべきデータに対応する第１誤り検出符号を取得し、前記書き込むべきデータと前記第１誤り検出符号とを前記第２生成部に送信して前記書き込むべきデータおよび前記第１誤り検出符号に対応する第２誤り訂正符号を取得し、前記受け付けた書込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報に対応する前記記憶領域のうち前記ユーザデータ記憶領域に前記書き込むべきデータを書き込むとともに前記第１冗長領域に前記第１誤り検出符号を書き込み且つ前記第２冗長領域に前記第２誤り訂正符号を書き込むように前記アクセス部に指示する前記書込み部を、さらに備える、
ことを特徴とする請求項１５に記載のコントローラ。
【請求項１７】
前記コントローラは、
第１誤り訂正対象データ、および前記第１誤り訂正対象データに対応する前記第１誤り訂正符号を要求元から受け付け、所定の方法に基づき、受け付けた前記第１誤り訂正対象データおよび前記第１誤り訂正符号の誤り訂正処理が可能であるか否かを判定して、前記判定結果を前記要求元に送信する第１判定部と、
第２誤り検出対象データ、および前記第２誤り検出対象データに対応する前記第２誤り検出符号を要求元から受け付け、所定の方法に基づき、受け付けた前記第２誤り検出対象データおよび前記第２誤り検出符号に誤りが存在するか否かを判定して、前記判定結果を前記要求元に送信する第２判定部と、
にさらに接続され、
前記ホストインタフェース部はさらに、論理アドレス情報が含まれる読込み要求をホスト装置から受け付け、受け付けた前記読込み要求を読込み部に送信し、
前記コントローラは、
要求元から復元操作対象データを受け付け、受け付けた前記復元操作対象データのビット列の復元操作を実行し、ビット列復元操作後の前記復元操作対象データを前記要求元に送信するビット列復元部と、
前記ホストインタフェース部から前記読込み要求を受け付け、受け付けた前記読込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報が示す論理アドレスに対応する前記記憶領域に記憶されているデータを読み出すように前記アクセス部に指示して読み出された前記データを取得し、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータと前記第１冗長領域に格納されていたデータとを前記第２誤り検出対象データとするとともに前記第２冗長領域に格納されていたデータを前記第２誤り検出符号として前記第２判定部に送信して前記第２判定部から送信された第２判定結果を取得し、取得した前記第２判定結果が誤りが検出されなかった旨の結果であった場合、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータを前記第１誤り訂正対象データとするとともに前記第１冗長領域に格納されていたデータを前記第１誤り訂正符号として前記第１判定部に送信して前記第１判定部から送信された第１判定結果を取得し、取得した前記第１判定結果が誤り訂正処理が可能である旨の結果であった場合、前記第１誤り訂正対象データのうち前記ユーザデータ記憶領域に記憶されていたデータを読込み応答として前記ホストインタフェース部に送信し、前記第１判定結果が誤り訂正処理が不能である旨の結果であった場合、前記第１誤り訂正対象データのうち前記ユーザデータ記憶領域に格納されていたデータと前記第１冗長領域に格納されていたデータとを前記復元操作対象データとして前記ビット列復元部に送信して前記ビット列復元操作後のデータを取得し、取得した前記ビット列復元操作後のデータのうち前記ユーザデータ記憶領域に格納されていたデータの少なくとも一部を前記マジックナンバーとみなして前記特殊データ識別情報を判別し、判別した前記特殊データ識別情報に従って所定の応答を読込み応答として前記ホストインタフェース部に送信する前記読込み部と、
をさらに備え、
前記ホストインタフェース部はさらに、前記読込み部から前記読み出されたデータまたは読み込みの状態を示す情報である読込み状態情報を受け付け、受け付けた前記読み出されたデータまたは前記読込み状態情報を読込み応答として前記ホスト装置へ送信する、
ことを特徴とする請求項１０に記載のコントローラ。
【請求項１８】
前記ホストインタフェース部はさらに、論理アドレス情報と書き込むべきデータとが含まれる書込み要求を前記ホスト装置から受け付け、前記受け付けた書込み要求を書込み部に送信し、
前記コントローラは、前記ホストインタフェース部から前記書込み要求を受け付け、受け付けた前記書込み要求から前記書き込むべきデータを抽出し、抽出した前記書き込むべきデータを前記第１生成部に送信して前記書き込むべきデータに対応する第１誤り訂正符号を取得し、前記書き込むべきデータと前記第１誤り訂正符号とを前記第２生成部に送信して前記書き込むべきデータおよび前記第１誤り訂正符号に対応する第２誤り訂正符号を取得し、前記受け付けた書込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報に対応する前記記憶領域のうち前記ユーザデータ記憶領域に前記書き込むべきデータを書き込むとともに前記第１冗長領域に前記第１誤り訂正符号を書き込み且つ前記第２冗長領域に前記第２誤り検出符号を書き込むように前記アクセス部に指示する前記書込み部を、さらに備える、
ことを特徴とする請求項１７に記載のコントローラ。
【請求項１９】
前記コントローラは、
第１誤り訂正対象データ、および前記第１誤り訂正対象データに対応する前記第１誤り訂正符号を要求元から受け付け、所定の方法に基づき、受け付けた前記第１誤り訂正対象データおよび前記第１誤り訂正符号の誤り訂正処理が可能であるか否かを判定して、前記判定結果を前記要求元に送信する第１判定部と、
第２誤り訂正対象データ、および前記第２誤り訂正対象データに対応する前記第２誤り訂正符号を要求元から受け付け、所定の方法に基づき、受け付けた前記第２誤り訂正対象データおよび前記第２誤り訂正符号の誤り訂正処理が可能であるか否かを判定して、前記判定結果を前記要求元に送信する第２判定部と、
にさらに接続され、
前記ホストインタフェース部はさらに、論理アドレス情報が含まれる読込み要求をホスト装置から受け付け、受け付けた前記読込み要求を読込み部に送信し、
前記コントローラは、
要求元から復元操作対象データを受け付け、受け付けた前記復元操作対象データのビット列の復元操作を実行し、ビット列復元操作後の前記復元操作対象データを前記要求元に送信するビット列復元部と、
前記ホストインタフェース部から前記読込み要求を受け付け、受け付けた前記読込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報が示す論理アドレスに対応する前記記憶領域に記憶されているデータを読み出すように前記アクセス部に指示して読み出された前記データを取得し、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータと前記第１冗長領域に格納されていたデータとを前記第２誤り訂正対象データとするとともに前記第２冗長領域に格納されていたデータを前記第２誤り訂正符号として前記第２判定部に送信して前記第２判定部から送信された第２判定結果を取得し、取得した前記第２判定結果が誤り訂正処理が可能である旨の結果であった場合、前記第２誤り訂正対象データの誤りを訂正して誤り訂正済みデータを生成し、前記誤り訂正済みデータのうち前記ユーザデータ記憶領域に格納されていたデータを前記第１誤り訂正対象データとするとともに前記第１冗長領域に格納されていたデータを前記第１誤り訂正符号として前記第１判定部に送信して前記第１判定部から送信された第１判定結果を取得し、取得した前記第１判定結果が誤り訂正処理が可能である旨の結果であった場合、前記第１誤り訂正対象データのうち前記ユーザデータ記憶領域に記憶されていたデータを読込み応答として前記ホストインタフェース部に送信し、前記第１判定結果が誤り訂正処理が不能である旨の結果であった場合、前記第１誤り訂正対象データのうち前記ユーザデータ記憶領域に格納されていたデータと前記第１冗長領域に格納されていたデータとを前記復元操作対象データとして前記ビット列復元部に送信して前記ビット列復元操作後のデータを取得し、取得した前記ビット列復元操作後のデータのうち前記ユーザデータ記憶領域に格納されていたデータの少なくとも一部を前記マジックナンバーとみなして前記特殊データ識別情報を判別し、判別した前記特殊データ識別情報に従って所定の応答を読込み応答として前記ホストインタフェース部に送信する前記読込み部と、
をさらに備え、
前記ホストインタフェース部はさらに、前記読込み部から前記読み出されたデータまたは読み込みの状態を示す情報である読込み状態情報を受け付け、受け付けた前記読み出されたデータまたは前記読込み状態情報を読込み応答として前記ホスト装置へ送信する、
ことを特徴とする請求項１１に記載のコントローラ。
【請求項２０】
前記ホストインタフェース部はさらに、論理アドレス情報と書き込むべきデータとが含まれる書込み要求を前記ホスト装置から受け付け、前記受け付けた書込み要求を書込み部に送信し、
前記コントローラは、前記ホストインタフェース部から前記書込み要求を受け付け、受け付けた前記書込み要求から前記書き込むべきデータを抽出し、抽出した前記書き込むべきデータを前記第１生成部に送信して前記書き込むべきデータに対応する第１誤り訂正符号を取得し、前記書き込むべきデータと前記第１誤り訂正符号とを前記第２生成部に送信して前記書き込むべきデータおよび前記第１誤り訂正符号に対応する第２誤り訂正符号を取得し、前記受け付けた書込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報に対応する前記記憶領域のうち前記ユーザデータ記憶領域に前記書き込むべきデータを書き込むとともに前記第１冗長領域に前記第１誤り訂正符号を書き込み且つ前記第２冗長領域に前記第２誤り訂正符号を書き込むように前記アクセス部に指示する前記書込み部を、さらに備える、
ことを特徴とする請求項１９に記載のコントローラ。
【請求項２１】
ユーザデータ記憶領域と冗長領域が含まれる記憶領域を複数有し、それぞれの記憶領域に論理アドレスそれぞれに対応するデータを記憶する記憶部と、
前記記憶部への読み書き処理を補助するアクセス部と、
論理アドレス情報と所定の応答の種別を識別する特殊データ識別情報とが含まれる特殊データ設定要求と、論理アドレス情報が含まれる読込み要求と、論理アドレス情報と書き込むべきデータとが含まれる書込み要求と、をホスト装置から受け付け、前記受け付けた特殊データ設定要求を特殊データ設定部に、前記受け付けた読込み要求を読込み部に、前記受け付けた書込み要求を書込み部に送信するホストインタフェース部と、
誤り検出符号の生成の元とするデータを要求元から受け付け、受け付けた前記データから、所定の方法に基づき、前記誤り検出符号を生成し、生成した前記誤り検出符号を前記要求元に送信する第１生成部と、
誤り検出対象データ、および前記誤り検出対象データに対応する前記誤り検出符号を要求元から受け付け、所定の方法に基づき、受け付けた前記誤り検出対象データおよび前記誤り検出符号に誤りが存在するか否かを判定して、前記判定結果を前記要求元に送信する第１判定部と、
要求元から操作対象データを受け付け、受け付けた前記操作対象データのビット列を所定の規則に基づき操作し、ビット列操作後の前記操作対象データを前記要求元に送信するビット列操作部と、
要求元から復元操作対象データを受け付け、受け付けた前記復元操作対象データのビット列の復元操作を実行し、ビット列復元操作後の前記復元操作対象データを前記要求元に送信するビット列復元部と、
前記ホストインタフェース部から前記特殊データ設定要求を受け付け、受け付けた前記特殊データ設定要求から前記特殊データ識別情報を抽出し、抽出した前記特殊データ識別情報に応じたマジックナンバーを生成し、生成した前記マジックナンバーを前記第１生成部に送信して前記マジックナンバーに対応する誤り検出符号を取得し、前記マジックナンバーと前記誤り検出符号とを前記操作対象データとして前記ビット列操作部に送信してビット列操作後の前記操作対象データを取得し、前記特殊データ設定要求から論理アドレス情報を抽出し、抽出した前記論理アドレス情報に対応する前記記憶領域のうち前記ユーザデータ記憶領域に前記ビット列操作後の操作対象データにおけるマジックナンバーを書き込むとともに前記冗長領域に前記ビット列操作後の操作対象データにおける前記誤り検出符号を書き込むように前記アクセス部に指示する前記特殊データ設定部と、
前記ホストインタフェース部から前記読込み要求を受け付け、受け付けた前記読込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報が示す論理アドレスに対応する前記記憶領域に記憶されているデータを読み出すように前記アクセス部に指示して読み出された前記データを取得し、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータを前記誤り検出対象データとするとともに前記冗長領域に格納されていたデータを前記誤り検出符号として前記第１判定部に送信して第１判定部から送信された第１判定結果を取得し、取得した前記第１判定結果が誤りが検出されなかった旨の結果であった場合、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータを読込み応答として前記ホストインタフェース部に送信し、前記第１判定結果が誤りが検出された旨の結果であった場合、前記読み出されたデータを前記ビット列復元部に送信して前記ビット列復元操作後のデータを取得し、取得した前記ビット列復元操作後のデータのうち前記ユーザデータ記憶領域に格納されていたデータの少なくとも一部を前記マジックナンバーとみなして前記特殊データ識別情報を判別し、判別した前記特殊データ識別情報に従って所定の応答を読込み応答として前記ホストインタフェース部に送信する前記読込み部と、
前記ホストインタフェース部から前記書込み要求を受け付け、受け付けた前記書込み要求から前記書き込むべきデータを抽出し、抽出した前記書き込むべきデータを前記第１生成部に送信して前記書き込むべきデータに対応する誤り検出符号を取得し、前記受け付けた書込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報に対応する前記記憶領域のうち前記ユーザデータ記憶領域に前記書き込むべきデータを書き込むとともに前記冗長領域に前記誤り検出符号を書き込むように前記アクセス部に指示する前記書込み部と、
をさらに備え、
前記ホストインタフェース部はさらに、前記読込み部から前記読み出されたデータまたは読み込みの状態を示す情報である読込み状態情報を受け付け、受け付けた前記読み出されたデータまたは前記読込み状態情報を読込み応答として前記ホスト装置へ送信し、
前記所定の規則は、ビット列操作の結果として誤りが検出されるビット列の操作の規則となっていること、および、ビット列操作後のビット列を元のビット列に復元可能であるビット列の操作の規則となっていることを含む、
ことを特徴とするデータ記憶装置。
【請求項２２】
ユーザデータ記憶領域と冗長領域が含まれる記憶領域を複数有し、それぞれの記憶領域に論理アドレスそれぞれに対応するデータを記憶する記憶部と、
前記記憶部への読み書き処理を補助するアクセス部と、
論理アドレス情報と所定の応答の種別を識別する特殊データ識別情報とが含まれる特殊データ設定要求と、論理アドレス情報が含まれる読込み要求と、論理アドレス情報と書き込むべきデータとが含まれる書込み要求と、をホスト装置から受け付け、前記受け付けた特殊データ設定要求を特殊データ設定部に、前記受け付けた読込み要求を読込み部に、前記受け付けた書込み要求を書込み部に送信するホストインタフェース部と、
誤り訂正符号の生成の元とするデータを要求元から受け付け、受け付けた前記データから、所定の方法に基づき、前記誤り訂正符号を生成し、生成した前記誤り訂正符号を前記要求元に送信する第１生成部と、
誤り訂正対象データ、および前記誤り訂正対象データに対応する前記誤り訂正符号を要求元から受け付け、所定の方法に基づき、受け付けた前記誤り訂正対象データおよび前記誤り訂正符号の誤り訂正処理が可能であるか否かを判定して、前記判定結果を前記要求元に送信する第１判定部と、
要求元から操作対象データを受け付け、受け付けた前記操作対象データのビット列を所定の規則に基づき操作し、ビット列操作後の前記操作対象データを前記要求元に送信するビット列操作部と、
要求元から復元操作対象データを受け付け、受け付けた前記復元操作対象データのビット列の復元操作を実行し、ビット列復元操作後の前記復元操作対象データを前記要求元に送信するビット列復元部と、
前記ホストインタフェース部から前記特殊データ設定要求を受け付け、受け付けた前記特殊データ設定要求から前記特殊データ識別情報を抽出し、抽出した前記特殊データ識別情報に応じたマジックナンバーを生成し、生成した前記マジックナンバーを前記第１生成部に送信して前記マジックナンバーに対応する誤り訂正符号を取得し、前記マジックナンバーと前記誤り訂正符号とを前記操作対象データとして前記ビット列操作部に送信してビット列操作後の前記操作対象データを取得し、前記特殊データ設定要求から論理アドレス情報を抽出し、抽出した前記論理アドレス情報に対応する前記記憶領域のうち前記ユーザデータ記憶領域に前記ビット列操作後の操作対象データにおけるマジックナンバーを書き込むとともに前記冗長領域に前記ビット列操作後の操作対象データにおける前記誤り訂正符号を書き込むように前記アクセス部に指示する前記特殊データ設定部と、
前記ホストインタフェース部から前記読込み要求を受け付け、受け付けた前記読込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報が示す論理アドレスに対応する前記記憶領域に記憶されているデータを読み出すように前記アクセス部に指示して読み出された前記データを取得し、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータを前記誤り訂正対象データとするとともに前記冗長領域に格納されていたデータを前記誤り訂正符号として前記第１判定部に送信して第１判定部から送信された第１判定結果を取得し、取得した前記第１判定結果が誤り訂正処理が可能である旨の結果であった場合、前記読み出されたデータの誤りを訂正し、前記誤り訂正されたデータのうち前記ユーザデータ記憶領域に格納されていたデータを読込み応答として前記ホストインタフェース部に送信し、前記第１判定結果が誤り訂正処理が不能である旨の結果であった場合、前記読み出されたデータを前記ビット列復元部に送信して前記ビット列復元操作後のデータを取得し、取得した前記ビット列復元操作後のデータのうち前記ユーザデータ記憶領域に格納されていたデータの少なくとも一部を前記マジックナンバーとみなして前記特殊データ識別情報を判別し、判別した前記特殊データ識別情報に従って所定の応答を読込み応答として前記ホストインタフェース部に送信する前記読込み部と、
前記ホストインタフェース部から前記書込み要求を受け付け、受け付けた前記書込み要求から前記書き込むべきデータを抽出し、抽出した前記書き込むべきデータを前記第１生成部に送信して前記書き込むべきデータに対応する誤り訂正符号を取得し、前記受け付けた書込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報に対応する前記記憶領域のうち前記ユーザデータ記憶領域に前記書き込むべきデータを書き込むとともに前記冗長領域に前記誤り訂正符号を書き込むように前記アクセス部に指示する前記書込み部と、
をさらに備え、
前記ホストインタフェース部はさらに、前記読込み部から前記読み出されたデータまたは読み込みの状態を示す情報である読込み状態情報を受け付け、受け付けた前記読み出されたデータまたは前記読込み状態情報を読込み応答として前記ホスト装置へ送信し、
前記所定の規則は、ビット列操作後のビット列に対する誤り訂正が不可能になること、および、ビット列操作後のビット列を元のビット列に復元可能であることを含む、
ことを特徴とするデータ記憶装置。
【請求項２３】
ユーザデータ記憶領域と冗長領域とが含まれる記憶領域を複数有し、それぞれの記憶領域に論理アドレスそれぞれに対応するデータを記憶する記憶部への読み書き処理を補助するアクセス部と、
論理アドレス情報と所定の応答の種別を識別する特殊データ識別情報とが含まれる特殊データ設定要求と、論理アドレス情報が含まれる読込み要求と、論理アドレス情報と書き込むべきデータとが含まれる書込み要求と、をホスト装置から受け付け、前記受け付けた特殊データ設定要求を特殊データ設定処理を実行するコンピュータに、前記受け付けた読込み要求を読込み処理を実行するコンピュータに、前記受け付けた書込み要求を書込み処理を実行するコンピュータに送信するホストインタフェース部と、
誤り検出符号の生成の元とするデータを要求元から受け付け、受け付けた前記データから、所定の方法に基づき、前記誤り検出符号を生成し、生成した前記誤り検出符号を前記要求元に送信する第１生成部と、
誤り検出対象データ、および前記誤り検出対象データに対応する前記誤り検出符号を要求元から受け付け、所定の方法に基づき、受け付けた前記誤り検出対象データおよび前記誤り検出符号に誤りが存在するか否かを判定して、前記判定結果を前記要求元に送信する第１判定部と、
を制御するコンピュータを機能させるためのプログラムであって、
要求元から操作対象データを受け付け、受け付けた前記操作対象データのビット列を所定の規則に基づき操作し、ビット列操作後の前記操作対象データを前記要求元に送信するビット列操作処理と、
要求元から復元操作対象データを受け付け、受け付けた前記復元操作対象データのビット列の復元操作を実行し、ビット列復元操作後の前記復元操作対象データを前記要求元に送信するビット列復元処理と、
前記ホストインタフェース部から前記特殊データ設定要求を受け付け、受け付けた前記特殊データ設定要求から前記特殊データ識別情報を抽出し、抽出した前記特殊データ識別情報に応じたマジックナンバーを生成し、生成した前記マジックナンバーを前記第１生成部に送信して前記マジックナンバーに対応する誤り検出符号を取得し、前記マジックナンバーと前記誤り検出符号とを前記操作対象データとして前記ビット列操作処理に入力してビット列操作後の前記操作対象データを取得し、前記特殊データ設定要求から論理アドレス情報を抽出し、抽出した前記論理アドレス情報に対応する前記記憶領域のうち前記ユーザデータ記憶領域に前記ビット列操作後の操作対象データにおけるマジックナンバーを書き込むとともに前記冗長領域に前記ビット列操作後の操作対象データにおける前記誤り検出符号を書き込むように前記アクセス部に指示する前記特殊データ設定処理と、
前記ホストインタフェース部から前記読込み要求を受け付け、受け付けた前記読込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報が示す論理アドレスに対応する前記記憶領域に記憶されているデータを読み出すように前記アクセス部に指示して読み出された前記データを取得し、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータを前記誤り検出対象データとするとともに前記冗長領域に格納されていたデータを前記誤り検出符号として前記第１判定部に送信して前記第１判定部から送信された第１判定結果を取得し、取得した前記第１判定結果が誤りが検出されなかった旨の結果であった場合、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータを読込み応答として前記ホストインタフェース部に送信し、前記第１判定結果が誤りが検出された旨の結果であった場合、前記読み出されたデータを前記ビット列復元処理に入力して前記ビット列復元操作後のデータを取得し、取得した前記ビット列復元操作後のデータのうち前記ユーザデータ記憶領域に格納されていたデータの少なくとも一部を前記マジックナンバーとみなして前記特殊データ識別情報を判別し、判別した前記特殊データ識別情報に従って所定の応答を読込み応答として前記ホストインタフェース部に送信する前記読込み処理と、
前記ホストインタフェース部から前記書込み要求を受け付け、受け付けた前記書込み要求から前記書き込むべきデータを抽出し、抽出した前記書き込むべきデータを前記第１生成部に送信して前記書き込むべきデータに対応する誤り検出符号を取得し、前記受け付けた書込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報に対応する前記記憶領域のうち前記ユーザデータ記憶領域に前記書き込むべきデータを書き込むとともに前記冗長領域に前記誤り検出符号を書き込むように前記アクセス部に指示する前記書込み処理と、
を前記コンピュータに実行させ、
前記ホストインタフェース部はさらに、前記読込み処理で送信された前記読み出されたデータまたは読み込みの状態を示す情報である読込み状態情報を受け付け、受け付けた前記読み出されたデータまたは前記読込み状態情報を読込み応答として前記ホスト装置へ送信し、
前記所定の規則は、ビット列操作の結果として誤りが検出されるビット列の操作の規則となっていること、および、ビット列操作後のビット列を元のビット列に復元可能であるビット列の操作の規則となっていることを含む、
ことを特徴とするプログラム。
【請求項２４】
ユーザデータ記憶領域と冗長領域とが含まれる記憶領域を複数有し、それぞれの記憶領域に論理アドレスそれぞれに対応するデータを記憶する記憶部への読み書き処理を補助するアクセス部と、
論理アドレス情報と所定の応答の種別を識別する特殊データ識別情報とが含まれる特殊データ設定要求と、論理アドレス情報が含まれる読込み要求と、論理アドレス情報と書き込むべきデータとが含まれる書込み要求と、をホスト装置から受け付け、前記受け付けた特殊データ設定要求を特殊データ設定処理を実行するコンピュータに、前記受け付けた読込み要求を読込み処理を実行するコンピュータに、前記受け付けた書込み要求を書込み処理を実行するコンピュータに送信するホストインタフェース部と、
誤り訂正符号の生成の元とするデータを要求元から受け付け、受け付けた前記データから、所定の方法に基づき、前記誤り訂正符号を生成し、生成した前記誤り訂正符号を前記要求元に送信する第１生成部と、
誤り訂正対象データ、および前記誤り訂正対象データに対応する前記誤り訂正符号を要求元から受け付け、所定の方法に基づき、受け付けた前記誤り訂正対象データおよび前記誤り訂正符号の誤り訂正処理が可能であるか否かを判定して、前記判定結果を前記要求元に送信する第１判定部と、
を制御するコンピュータを機能させるためのプログラムであって、
要求元から操作対象データを受け付け、受け付けた前記操作対象データのビット列を所定の規則に基づき操作し、ビット列操作後の前記操作対象データを前記要求元に送信するビット列操作処理と、
要求元から復元操作対象データを受け付け、受け付けた前記復元操作対象データのビット列の復元操作を実行し、ビット列復元操作後の前記復元操作対象データを前記要求元に送信するビット列復元処理と、
前記ホストインタフェース部から前記特殊データ設定要求を受け付け、受け付けた前記特殊データ設定要求から前記特殊データ識別情報を抽出し、抽出した前記特殊データ識別情報に応じたマジックナンバーを生成し、生成した前記マジックナンバーを前記第１生成部に送信して前記マジックナンバーに対応する誤り訂正符号を取得し、前記マジックナンバーと前記誤り訂正符号とを前記操作対象データとして前記ビット列操作処理に入力してビット列操作後の前記操作対象データを取得し、前記特殊データ設定要求から論理アドレス情報を抽出し、抽出した前記論理アドレス情報に対応する前記記憶領域のうち前記ユーザデータ記憶領域に前記ビット列操作後の操作対象データにおけるマジックナンバーを書き込むとともに前記冗長領域に前記ビット列操作後の操作対象データにおける前記誤り訂正符号を書き込むように前記アクセス部に指示する前記特殊データ設定処理と、
前記ホストインタフェース部から前記読込み要求を受け付け、受け付けた前記読込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報が示す論理アドレスに対応する前記記憶領域に記憶されているデータを読み出すように前記アクセス部に指示して読み出された前記データを取得し、前記読み出されたデータのうち前記ユーザデータ記憶領域に格納されていたデータを前記誤り訂正対象データとするとともに前記冗長領域に格納されていたデータを前記誤り訂正符号として前記第１判定部に送信して前記第１判定部から送信された第１判定結果を取得し、取得した前記第１判定結果が誤り訂正処理が可能である旨の結果であった場合、前記読み出されたデータの誤りを訂正し、前記誤り訂正されたデータのうち前記ユーザデータ記憶領域に格納されていたデータを読込み応答として前記ホストインタフェース部に送信し、前記第１判定結果が誤り訂正処理が不能である旨の結果であった場合、前記読み出されたデータを前記ビット列復元処理に入力して前記ビット列復元操作後のデータを取得し、取得した前記ビット列復元操作後のデータのうち前記ユーザデータ記憶領域に格納されていたデータの少なくとも一部を前記マジックナンバーとみなして前記特殊データ識別情報を判別し、判別した前記特殊データ識別情報に従って所定の応答を読込み応答として前記ホストインタフェース部に送信する前記読込み処理と、
前記ホストインタフェース部から前記書込み要求を受け付け、受け付けた前記書込み要求から前記書き込むべきデータを抽出し、抽出した前記書き込むべきデータを前記第１生成部に送信して前記書き込むべきデータに対応する誤り訂正符号を取得し、前記受け付けた書込み要求から前記論理アドレス情報を抽出し、抽出した前記論理アドレス情報に対応する前記記憶領域のうち前記ユーザデータ記憶領域に前記書き込むべきデータを書き込むとともに前記冗長領域に前記誤り訂正符号を書き込むように前記アクセス部に指示する前記書込み処理と、
を前記コンピュータに実行させ、
前記ホストインタフェース部はさらに、前記読込み処理で送信された前記読み出されたデータまたは読み込みの状態を示す情報である読込み状態情報を受け付け、受け付けた前記読み出されたデータまたは前記読込み状態情報を読込み応答として前記ホスト装置へ送信し、
前記所定の規則は、ビット列操作後のビット列に対する誤り訂正が不可能になること、および、ビット列操作後のビット列を元のビット列に復元可能であることを含む、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、コントローラ、データ記憶装置およびプログラムに関する。
【背景技術】
【０００２】
通常、データ記憶装置には、ホスト装置からのある論理アドレス（ＬＢＡ：Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）への読込み要求に対し、ユーザデータを返信する通常の応答ではなく、所定の応答をするように設定可能であることが求められる。一般的にデータ記憶装置は、ある論理アドレスへの読込み要求に対して所定の応答をするように設定されていなかった場合、通常の応答をするように設計されている。ただし、通常の応答を実行する前に必ず論理アドレスに対する設定を判定する構成では、通常の応答時の応答時間が長くなってしまう。そこで、記憶媒体からのユーザデータの読み出しと論理アドレスに対する設定の判定とを並列に実行することが考えられる。しかし、この場合でも、論理アドレスに対する設定の判定結果を待ってから、ユーザデータをホスト装置へ返信する必要がある。このため、通常時の応答速度が、論理アドレスに対する設定の判定時間に影響されて遅くなってしまう場合がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平５−２８３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一観点は、論理アドレスに対する設定の判定時間に影響されることなく、通常時の応答速度を向上できるコントローラ、データ記憶装置およびプログラムを提供することである。
【課題を解決するための手段】
【０００５】
実施の形態によるコントローラは、ユーザデータ記憶領域と冗長領域とが含まれる記憶領域を複数有し、それぞれの記憶領域に論理アドレスそれぞれに対応するデータを記憶する記憶部への読み書き処理を補助するアクセス部と、論理アドレス情報と所定の応答の種別を識別する特殊データ識別情報とが含まれる特殊データ設定要求をホスト装置から受け付け、前記受け付けた特殊データ設定要求を特殊データ設定部に送信するホストインタフェース部と、第１誤り検出符号の生成の元とするデータを要求元から受け付け、受け付けた前記データから、所定の方法に基づき、前記第１誤り検出符号を生成し、生成した前記第１誤り検出符号を前記要求元に送信する第１生成部と、に接続されたコントローラであって、要求元から操作対象データを受け付け、受け付けた前記操作対象データのビット列を所定の規則に基づき操作し、ビット列操作後の前記操作対象データを前記要求元に送信するビット列操作部と、前記ホストインタフェース部から前記特殊データ設定要求を受け付け、受け付けた前記特殊データ設定要求から前記特殊データ識別情報を抽出し、抽出した前記特殊データ識別情報に応じた識別ビット列を生成し、生成した前記識別ビット列を前記第１生成部に送信して前記識別ビット列に対応する第１誤り検出符号を取得し、前記識別ビット列と前記第１誤り検出符号とを前記操作対象データとして前記ビット列操作部に送信してビット列操作後の前記操作対象データを取得し、前記特殊データ設定要求から論理アドレス情報を抽出し、抽出した前記論理アドレス情報に対応する前記記憶領域のうち前記ユーザデータ記憶領域に前記ビット列操作後の操作対象データにおける前記識別ビット列を書き込むとともに前記冗長領域に前記ビット列操作後の操作対象データにおける前記第１誤り検出符号を書き込むように前記アクセス部に指示する前記特殊データ設定部と、を備え、前記所定の規則は、ビット列操作の結果として誤りが検出されるビット列の操作の規則となっていること、および、ビット列操作後のビット列を元のビット列に復元可能であるビット列の操作の規則となっていることを含む。
また、実施の形態による他のコントローラは、ユーザデータ記憶領域と冗長領域とが含まれる記憶領域を複数有し、それぞれの記憶領域に論理アドレスそれぞれに対応するデータを記憶する記憶部への読み書き処理を補助するアクセス部と、論理アドレス情報と所定の応答の種別を識別する特殊データ識別情報とが含まれる特殊データ設定要求をホスト装置から受け付け、前記受け付けた特殊データ設定要求を特殊データ設定部に送信するホストインタフェース部と、第１誤り訂正符号の生成の元とするデータを要求元から受け付け、受け付けた前記データから、所定の方法に基づき、前記第１誤り訂正符号を生成し、生成した第１誤り訂正符号を前記要求元に送信する第１生成部と、に接続されたコントローラであって、要求元から操作対象データを受け付け、受け付けた前記操作対象データのビット列を所定の規則に基づき操作し、ビット列操作後の前記操作対象データを前記要求元に送信するビット列操作部と、前記ホストインタフェース部から前記特殊データ設定要求を受け付け、受け付けた前記特殊データ設定要求から前記特殊データ識別情報を抽出し、抽出した前記特殊データ識別情報に応じた識別ビット列を生成し、生成した前記識別ビット列を前記第１生成部に送信して前記識別ビット列に対応する第１誤り訂正符号を取得し、前記識別ビット列と前記第１誤り訂正符号とを前記操作対象データとして前記ビット列操作部に送信してビット列操作後の前記操作対象データを取得し、前記特殊データ設定要求から論理アドレス情報を抽出し、抽出した前記論理アドレス情報に対応する前記記憶領域のうち前記ユーザデータ記憶領域に前記ビット列操作後の操作対象データにおける前記識別ビット列を書き込むとともに前記冗長領域に前記ビット列操作後の操作対象データにおける前記第１誤り訂正符号を書き込むように前記アクセス部に指示する前記特殊データ設定部と、を備え、前記所定の規則は、ビット列操作後のビット列に対する誤り訂正が不可能になること、および、ビット列操作後のビット列を元のビット列に復元可能であることを含む。
【図面の簡単な説明】
【０００６】
【図１】実施の形態１にかかるデータ記憶装置の概略構成図。
【図２】実施の形態１にかかる記憶領域の一例。
【図３Ａ】実施の形態１による誤り検出符号を含む操作対象データの一例。
【図３Ｂ】実施の形態１によるビット列操作後の復元操作対象データの一例。
【図３Ｃ】実施の形態１によるビット列復元操作後の復元済みデータの一例。
【図４Ａ】実施の形態１による誤り訂正符号を含む操作対象データの一例。
【図４Ｂ】実施の形態１によるビット列操作後の復元操作対象データの一例。
【図４Ｃ】実施の形態１によるビット列復元操作後の復元済みデータの一例。
【図５】実施の形態１によるマジックナンバーを含む特殊データの一例。
【図６】実施の形態１における書込み処理の一例。
【図７】実施の形態１における特殊データ設定処理の一例。
【図８】実施の形態１における読込み処理の一例。
【図９】実施の形態２にかかるデータ記憶装置の概略構成図。
【図１０】実施の形態２にかかる記憶領域の一例。
【図１１】実施の形態２における書込み処理の一例。
【図１２】実施の形態２における特殊データ設定処理の一例。
【図１３】実施の形態２における読込み処理の一例。
【発明を実施するための形態】
【０００７】
以下、例示する実施の形態にかかるコントローラ、データ記憶装置およびプログラムについて、図面を参照して詳細に説明する。
【０００８】
＜実施の形態１＞
（構成）
実施の形態１では、以下のようなコントローラ、データ記憶装置およびプログラムを例示する。図１は、実施の形態１にかかるデータ記憶装置１００の概略構成を示す。図１に示すように、データ記憶装置１００は、コントローラ１１０と、第１生成部１２１および第１判定部１２２と、ホストインタフェース部１３０と、アクセス部１５０と、記憶部１６０と、を備える。コントローラ１１０は、ビット列操作部１１１と、ビット列復元部１１２と、特殊データ設定部１１３と、書込み部１１４と、読込み部１１５とを含む。このコントローラ１１０は、たとえばデータバス１４０を介してアクセス部１５０およびホストインタフェース部１３０と相互に接続されている。以下の説明において、特殊データとは、ホスト装置へ所定の応答を送信するためのデータを意味する。
【０００９】
記憶部１６０は、複数の記憶領域を有する。それぞれの記憶領域には、データ記憶装置１００の論理アドレスそれぞれに対応するデータが記憶される。なお、実施の形態１において、データ記憶装置１００の論理アドレスと記憶部１６０の記憶領域に対する物理的なアドレス（物理アドレス）との対応付けは、いかなる形態であってよい。たとえば、論理アドレスと物理アドレスとが静的に固定されている構成でも良いし、論理アドレスと物理アドレスの対応付けをアドレス変換テーブルで管理する構成でもよい。アドレス変換テーブルは、所定のタイミングで動的に変更可能であるとする。
【００１０】
図２に、記憶部１６０が有する記憶領域の一例を示す。図２に示すように、各記憶領域１６１は、ユーザデータを記憶するユーザデータ記憶領域１６２と、冗長データを記憶する冗長領域１６３とを含む。冗長データには、たとえば誤り検出符号や誤り訂正符号を用いてよい。
【００１１】
アクセス部１５０は、コントローラ１１０による記憶部１６０への書込み処理および読込み処理を補助する。ホストインタフェース部１３０は、データ記憶装置１００と図示しないホスト装置とのインタフェース処理を行う。
【００１２】
より詳細には、ホストインタフェース部１３０は、ホスト装置からある論理アドレスに対する設定要求を受け付ける。この設定要求は、ホスト装置からデータ記憶装置１００のある論理アドレスに対して読込み要求が発行された時に、通常のユーザデータを応答するのではなく、所定の応答をするように設定することを要求するものである。本開示では、この設定要求を特殊データ設定要求と呼ぶ。特殊データ設定要求には、たとえば論理アドレス情報と、所定の応答の種別を識別する特殊データ識別情報とが含まれる。ホストインタフェース部１３０は、ホスト装置から特殊データ設定要求を受け付けると、受け付けた特殊データ設定要求を特殊データ設定部１１３に送信する。
【００１３】
また、ホストインタフェース部１３０は、ホスト装置から書込み要求を受け付ける。書込み要求には、たとえば書込み先の論理アドレス情報と、書込み対象のデータ（以下、書込み対象データという）とが含まれる。ホストインタフェース部１３０は、ホスト装置から書込み要求を受け付けると、受け付けた書込み要求を書込み部１１４に送信する。
【００１４】
さらに、ホストインタフェース部１３０は、ホスト装置から読込み要求を受け付ける。読込み要求には、たとえば読込み先の論理アドレス情報が含まれる。ホストインタフェース部１３０は、ホスト装置から読込み要求を受け付けると、受け付けた読込み要求を読込み部１１５に送信する。また、ホストインタフェース部１３０は、読込み要求に応じた読込み応答を読込み部１１５から受け付けると、受け付けた読込み応答をホスト装置に送信する。読込み応答には、ホスト装置から要求された読込み対象のデータか、もしくは、読込み状態情報が含まれる。読込み状態情報とは、読込みの状態を示す情報である。読込みの状態を示す情報としては、たとえば読込みエラーを示す情報などがある。
【００１５】
第１生成部１２１は、誤り検出符号の要求元から、誤り検出符号の生成もとになるデータを受け付ける。誤り検出符号の要求元には、たとえば特殊データ設定部１１３や書込み部１１４などがある。第１生成部１２１は、予め定めておいた所定の方法に基づき、受け付けたデータから誤り検出符号を生成する。また、第１生成部１２１は、生成した誤り検出符号を要求元に送信する。なお、本開示において、誤り検出符号を誤り訂正符号と読み替えてもよい。
【００１６】
第１判定部１２２は、誤り判定の要求元から、誤り検出対象データおよびこれに対応する誤り検出符号を受け付ける。誤り判定の要求元には、たとえば書込み部１１５などがある。第１判定部１２２は、予め定めておいた所定の方法に基づき、受け付けた誤り検出対象データおよび誤り検出符号に誤りが存在するか否かを判定する誤り判定処理を実行する。また、第１判定部１２２は、誤り判定処理の結果を要求元に送信する。なお、誤り検出符号を誤り訂正符号と読み替えた場合は、この誤り判定処理が、「予め定めておいた所定の方法に基づき、受け付けた誤り訂正対象データおよび誤り訂正符号の誤り訂正が可能であるか否かを判定する誤り判定処理」に置き換えられる。
【００１７】
ビット列操作部１１１は、ビット列操作の要求元から、操作対象データを受け付ける。操作対象データは、たとえば所定の応答に対応づけられた特殊データと、この特殊データのビット列に対応する誤り検出符号とを含む。ビット列操作の要求元には、たとえば特殊データ設定部１１３などがある。ビット列操作部１１１は、予め定めておいた所定の規則に従って、受け付けた操作対象データのビット列を操作するビット列操作処理を実行する。所定の規則は、ビット列操作の結果として誤りが検出されるビット列の操作の規則となっていること、および、ビット列操作後のビット列を元のビット列に復元可能であるビット列の操作の規則となっていること、とすることができる。このような所定の規則の例としては、所定のビットの値（０または１）を反転させることが挙げられる。ただし、これに限るものではない。また、ビット列操作部１１１は、ビット列操作後の操作対象データを要求元に送信する。なお、誤り検出符号を誤り訂正符号と読み替えた場合、所定の規則は、「ビット列操作後のビット列に対する誤り訂正が不可能になること、および、ビット列操作後のビット列を元のビット列に復元可能であること」とすることができる。このような所定の規則の例としては、誤り訂正能力を超えたビット数について、所定のビットの値（０または１）を反転させることが挙げられる。ただし、これに限るものではない。
【００１８】
ビット列復元部１１２は、ビット列復元操作の要求元から、復元操作対象データを受け付ける。ビット列復元操作の要求元には、たとえば書込み部１１５などがある。復元操作対象データは、たとえばビット列操作後の操作対象データである。すなわち、復元操作対象データは、ビット列操作後の特殊データおよび誤り検出符号を含む。ビット列復元部１１２は、予め定めておいた所定の規則に従って、復元操作対象データのビット列を復元操作するビット列復元操作処理を実行する。ビット列復元操作とは、復元操作対象データのビット列が、ビット列操作部１１１によって操作されたものであった場合に、ビット列操作前の元の状態に復元することを意味する。ビット列操作処理を前述した例（所定のビットの値を反転させる）とした場合、ビット列復元操作処理は、所定のビットの値をもう一度反転させることとすることができる。これにより、ビット列操作されたビット列を、元のビット列に復元することができる。なお、ビット列復元操作処理は、ビット列操作部１１１が実行するビット列操作処理の内容に応じて種々変形可能である。また、ビット列復元部１１２は、ビット列復元操作後の復元操作対象データを要求元に送信する。なお、誤り検出符号を誤り訂正符号と読み替えた場合、ビット列操作処理において誤り訂正能力を超えたビット数について所定のビットの値を反転させる例に対するビット列復元操作処理では、誤り訂正能力を超えたビット数について、所定のビットの値がもう一度反転させられる。これにより、ビット列操作されたビット列を、元のビット列に復元することができる。
【００１９】
ここで、ビット列操作からビット列復元操作にかかる一連の処理の具体例を、図３Ａ〜図４Ｃを用いて詳細に説明する。なお、前述したように、ビット列操作とビット列復元操作との処理は、以下で説明する具体例に限られるものではない。
【００２０】
まず、図３Ａ〜図３Ｃを用いて、誤り検出符号を用いる場合のビット列操作からビット列復元操作にかかる一連の処理の具体例を説明する。図３Ａは、操作対象データの一例を示す。図３Ａに示すように、操作対象データ１１は、たとえば記憶部１６０の記憶領域１６１におけるユーザデータ記憶領域１６２の長さと同じビット長の特殊データ１２と、下位数ビットの誤り検出符号１３とよりなる。誤り検出符号１３は、特殊データ１２から所定の方法に基づいて生成された値である。
【００２１】
ビット列操作処理では、ビット列操作部１１１は、操作対象データ１１（図３Ａ）を要求元から受け取ると、これの所定のビット（たとえば下位から２番目のビット１３ａ）の値を反転する。これにより、図３Ｂに示すように、正しい誤り検出符号１３から誤りを含む誤り検出符号１３Ａに変換された復元操作対象データ１１Ａを得る。なお、操作対象のビットは、複数であってもよい。また、ビット列操作部１１１に入力するデータは、操作対象データ１１における特殊データ１２および誤り検出符号１３の少なくとも一方であればよい。言い換えれば、操作対象とするビット列は、特殊データ１２および誤り検出符号１３の少なくとも一方でよく、また、操作対象としたビット列のみをビット列操作部１１１に入力すればよい。
【００２２】
一方、ビット列復元操作処理では、ビット列復元部１１２は、図３Ｂに示す復元操作対象データ１１Ａを受け取ると、これの所定のビット１３ａの値を再度反転する。これにより、図３Ｃに示すように、所定のビット１３ａの値が復元された復元済みデータ１１Ｂを得る。図３Ａと図３Ｃとを比較すると明らかなように、復元済みデータ１１Ｂのビット列（図３Ｃ）は、操作対象データ１１のビット列（図３Ａ）と同じである。すなわち、ビット列復元操作処理の結果、復元操作対象データ１１Ａのビット列がビット列操作前の操作対象データ１１のビット列に戻されている。なお、ビット列復元部１１２に入力するデータは、特殊データ１２および誤り検出符号１３のうち少なくとも操作対象としたビット列であればよい。
【００２３】
本具体例では、誤り検出符号１３のビット列を操作対象としているが、これに限られない。たとえば、特殊データ１２のビット列を操作対象としてもよい。または、誤り検出符号１３のビット列と、特殊データ１２のビット列との両方を操作対象としてもよい。つまり、ビット列操作後の復元操作対象データ１１Ａを第１判定部１２２に入力した場合に誤りが検出され、かつ、ビット列復元操作後の復元済みデータ１１Ｂを第１判定部１２２に入力した場合に誤りが検出されない（つまり正しい）のであれば、如何様にも変形することができる。
【００２４】
次に、図４Ａ〜図４Ｃを用いて、誤り訂正符号を用いる場合のビット列操作からビット列復元操作にかかる一連の処理の具体例を説明する。図４Ａは、操作対象データの一例を示す。図４Ａに示すように、操作対象データ２１は、特殊データ１２と、下位数ビットの誤り訂正符号２３とよりなる。誤り訂正符号２３は、特殊データ１２から所定の方法に基づいて生成された値である。
【００２５】
ビット列操作処理では、ビット列操作部１１１は、操作対象データ２１（図４Ａ）を要求元から受け取ると、これのビット列のうち誤り訂正能力を超えた数の所定のビット（たとえば下位２〜４番目のビット群２３ａ）の値をそれぞれ反転する。これにより、図４Ｂに示すように、正しい誤り訂正符号２３から誤り訂正能力以上の誤りを含む誤り訂正符号２３Ａに変換された復元操作対象データ２１Ａを得る。なお、ビット列操作部１１１に入力するデータは、操作対象データ２１における特殊データ１２および誤り訂正符号２３の少なくとも一方であればよい。言い換えれば、操作対象とするビット列は、特殊データ１２および誤り訂正符号２３の少なくとも一方でよく、また、操作対象としたビット列のみをビット列操作部１１１に入力すればよい。
【００２６】
一方、ビット列復元操作処理では、ビット列復元部１１２は、図４Ｂに示す復元操作対象データ２１Ａを受け取ると、これの所定のビット群２３ａの値を再度反転する。これにより、図４Ｃに示すように、所定のビット群２３ａの値が復元された復元済みデータ２１Ｂを得る。図４Ａと図４Ｃとを比較すると明らかなように、復元済みデータ２１Ｂのビット列（図４Ｃ）は、操作対象データ２１のビット列（図４Ａ）と同じである。すなわち、ビット列復元操作処理の結果、復元操作対象データ２１Ａのビット列がビット列操作前の操作対象データ２１のビット列に戻されている。なお、ビット列復元部１１２に入力するデータは、特殊データ１２および誤り訂正符号２３のうち少なくとも操作対象としたビット列であればよい。
【００２７】
本具体例では、誤り訂正能力を２ビットとし、それを超える３ビット分の値を反転する場合を例示している。この際、誤り検出符号１３の場合と同様に、誤り訂正符号２３のビット列を操作対象としているが、これに限られない。たとえば、特殊データ１２のビット列を操作対象としてもよい。または、誤り訂正符号２３のビット列と、特殊データ１２のビット列との両方を操作対象としてもよい。つまり、ビット列操作後の操作データ２１Ａを第１判定部１２２に入力した場合に誤り訂正が不可能であって、かつ、ビット列復元操作後の復元済みデータ２１Ｂを第１判定部１２２に入力した場合に誤り訂正が可能であるのであれば、如何様にも変形することができる。
【００２８】
図１に戻って説明する。書込み部１１４は、ホストインタフェース部１３０から書込み要求を受け付ける。書込み部１１４は、受け付けた書込み要求から書込み対象データを抽出する。また、書込み部１１４は、抽出した書込み対象データを第１生成部１２１に送信し、書込み対象データに対応する誤り検出符号を取得する。なお、第１生成部１２１に送信するデータには、書込み対象データ以外のデータがさらに含まれていてもよい。たとえば、受け付けた書込み要求から抽出した論理アドレス情報を示すビット列や、所定のビット列がさらに含まれていてもよい。
【００２９】
また、書込み部１１４は、受け付けた書込み要求から書込み先の論理アドレス情報を抽出する。書込み部１１４は、抽出した論理アドレス情報に対応する記憶部１６０の記憶領域１６１に書込み対象データと誤り検出符号とを書き込むように、アクセス部１５０に指示する。
【００３０】
特殊データ設定部１１３は、ホストインタフェース部１３０から、特殊データ設定要求を受け付ける。特殊データ設定部１１３は、特殊データ設定要求から、所定の応答の種別を識別する特殊データ識別情報を抽出する。また、特殊データ設定部１１３は、抽出した所定の応答の種別に応じたビット列である識別ビット列を含む特殊データを生成する。
【００３１】
識別ビット列とは、複数の応答の種別に一意に対応したビット列をいう。識別ビット列をマジックナンバーとも言う。識別ビット列は、複数の識別対象（複数の応答の種別）から特定の対象（特定の応答の種別）を一意に識別できる。
【００３２】
ここで図５に、マジックナンバーを含む特殊データの一例を示す。図５に示すように、特殊データ３２は、図２に示した記憶領域１６１におけるユーザデータ記憶領域１６２と同サイズのビット列で構成される。ここで、たとえば所定の応答の種別を３ビットで表現できる場合、特殊データ３２のうちの上位３ビットをマジックナンバー３２ａに使用する。特殊データ３２における残りのビットは、たとえば全て‘０’よりなるＮＵＬＬデータ３２ｂとしてよい。ただし、これに限らず、特殊データ３２をコントローラ１００において管理または予測可能な値で構成できるのであれば、種々変形できる。
【００３３】
図１に戻り説明する。特殊データ設定部１１３は、生成した特殊データ３２を第１生成部１２１に送信し、特殊データ３２のビット列に対応する誤り検出符号１３を取得する。第１生成部１２１に送信するデータには、特殊データ３２以外のデータがさらに含まれていてもよい。たとえば、受け付けた特殊データ設定要求から抽出した論理アドレス情報を示すビット列や、所定のビット列がさらに含まれていてもよい。
【００３４】
また、特殊データ設定部１１３は、特殊データ３２と誤り検出符号１３とをビット列操作部１１１に送信し、ビット列操作後の特殊データ３２および誤り検出符号１３を取得する。
【００３５】
さらに、特殊データ設定部１１３は、受け付けた特殊データ設定要求から論理アドレス情報を抽出する。特殊データ設定部１１３は、抽出した論理アドレス情報に対応する記憶部１６０の記憶領域１６１に、ビット列操作後の特殊データ３２および誤り検出符号１３を書き込むように、アクセス部１５０に指示する。
【００３６】
読込み部１１５は、ホストインタフェース部１３０から読込み要求を受け付ける。読込み部１１５は、受け付けた読込み要求から論理アドレス情報を抽出する。読込み部１１５は、抽出した論理アドレス情報が示す論理アドレスに対応する記憶部１６０の記憶領域１６１に記憶されているデータを読み込むように、アクセス部１５０に指示し、これによって読み込まれたデータを取得する。
【００３７】
また、読込み部１１５は、読み込んだデータのうち、ユーザデータ記憶領域１６２に格納されていたデータを誤り検出対象データとして、また、冗長領域１６３に格納されていたデータを誤り検出対象データに対応する誤り検出符号として、第１判定部１２２に送信する。ここで、書込み部１１４および特殊データ設定部１１３が第１生成部１２１に送信するデータに、書込み対象データ１１または特殊データ３２以外のデータをさらに含ませていた場合、そのさらに含ませていたデータについても第１判定部１２２に送信される。たとえば書込み要求または特殊データ設定要求に含まれる論理アドレス情報を示すビット列をさらに含ませていた場合、読込み要求から抽出した論理アドレス情報を示すビット列をさらに第１判定部１２２に送信する。また、たとえば所定のビット列をさらに含ませていた場合、この所定のビット列をさらに第１判定部１２２に送信する。その後、読込み部１１５は、第１判定部１２２から送信された第１の判定結果を取得する。
【００３８】
第１判定部１２２から取得した第１の判定結果が誤りが検出されなかった旨の結果であった場合、読込み部１１５は、記憶領域１６１から読み込んだデータのうちユーザデータ記憶領域１６２に格納されていたデータを含む読込み応答を、ホストインタフェース部１３０に送信する。なお、読込み応答は、読み込んだデータそのものであってもよい。また、誤り検出符号に代えて誤り訂正符号を用いた場合、取得した第１の判定結果が誤り訂正処理が可能である旨の結果であったときは、読込み部１１５は、読み込んだデータの誤りを訂正する。また、読込み部１１５は、誤り訂正されたデータのうちのユーザデータ記憶領域１６２に格納されていたデータを含む読込み応答を、ホストインタフェース部１３０に送信する。すなわち、特殊データ３２が対応付けられていない論理アドレスに対する読込み要求であって、記憶部１６０に記憶されたデータのビット列に誤りが生じなかったものまたは記憶部１６０に記憶されたデータのビット列に誤りが生じたものの誤り訂正可能な範囲であったものについては、通常必要な誤り検出処理または誤り訂正処理によってホスト装置に読込み応答を送信することができる。
【００３９】
ただし、特殊データ３２として記憶部１６０に記憶されたデータのビット列（ビット列操作後のもの）に誤りが生じた結果、偶然、前記誤りが生じたビット列が、ビット列復元部１１２によるビット列復元操作後のビット列と同じになる場合、または前記誤りが生じたビット列の誤りが誤り訂正可能な範囲になってしまう場合が考えられる。このような場合、この特殊データ３２が設定された論理アドレスに対する読込み要求に対しても、第１の判定結果が誤りが検出されなかった旨、または誤り訂正処理が可能である旨の結果であった場合と同様の読込み応答が実行されることとなる。このため、特殊データ３２に基づいた所定の応答がホスト装置に返らなくなる可能性がある。ただし、このようなケースは、記憶部１６０に記憶されたデータに誤りが生じた結果として起こるものである。ここで、記憶部１６０に記憶されたデータに誤りが生じた際に正確でない応答がホスト装置に返る可能性があることは、厳密な設計に要するコストとのトレードオフである。このため、当該動作を一概に誤った動作であるとする必要はない。この結果、通常の読込み処理の高速化が図れる。
【００４０】
一方、第１判定部１２２から取得した第１の判定結果が誤りが検出された旨または誤り訂正処理が不能である旨の結果であった場合、読込み部１１５は、記憶領域１６１から読み込んだデータ、すなわちユーザデータ記憶領域１６２に格納されていたデータと冗長領域１６３に格納されていたデータとを、ビット列復元部１１２に送信し、ビット列復元部１１２からビット列復元操作後のデータを取得する。
【００４１】
また、読込み部１１５は、ビット列復元部１１２から取得したビット列復元操作後のデータのうち、ユーザデータ記憶領域１６２に格納されていたビット列復元操作後のデータを誤り検出対象データとして、また、冗長領域１６３に格納されていたビット列復元操作後のデータを誤り検出対象データに対応する誤り検出符号として、それぞれ第１判定部１２２に送信する。ここで、書込み部１１４および特殊データ設定部１１３が第１生成部１２１に送信するデータに書込み対象データまたは特殊データ３２以外のデータをさらに含ませていた場合、そのさらに含ませていたデータについても第１判定部１２２に送信される。たとえば書込み要求または特殊データ設定要求に含まれる論理アドレス情報を示すビット列をさらに含ませていた場合、読込み要求から抽出した論理アドレス情報を示すビット列をさらに第１判定部１２２に送信する。また、たとえば所定のビット列をさらに含ませていた場合、この所定のビット列をさらに第１判定部１２２に送信する。その後、読込み部１１５は、第１判定部１２２から送信された第２の判定結果を取得する。
【００４２】
第１判定部１２２から取得した第２の判定結果が誤りが検出されなかった旨の結果であった場合、読込み部１１５は、ビット列復元操作後のデータのうちユーザデータ記憶領域１６２に格納されていた特殊データ３２の所定ビットをマジックナンバー３２ａとみなして、特殊データ識別情報を判別する。なお、誤り検出符号に代えて誤り訂正符号を用いた場合、読込み部１１５は、取得した第２の判定結果が誤り訂正処理が可能である旨の結果であれば、ビット列復元操作後のデータの誤りを訂正する。また、読込み部１１５は、誤り訂正されたデータのうちユーザデータ記憶領域１６２に格納されていたデータの所定ビットをマジックナンバー３２ａとみなして、特殊データ識別情報を判別する。さらに、読込み部１１５は、判別した特殊データ識別情報に応じた所定の応答を、ホストインタフェース部１３０に送信する。すなわち、特殊データが対応付けられている論理アドレスに対する読込み要求であって、記憶部１６０に記憶されたデータのビット列に誤りが生じなかったもの、または記憶部１６０に記憶されたデータのビット列に誤りが生じたもののビット列復元操作の結果、ビット列の誤りが誤り訂正可能な範囲であったものについては、所定の応答をホスト装置に送信することができる。
【００４３】
ただし、通常のユーザデータとして記憶部１６０に記憶されたデータのビット列（ビット列操作されていないもの）に誤りが生じた結果、偶然、前記誤りが生じたデータのビット列が、ビット列操作部１１１によるビット列操作後のビット列と同じになる場合、または、前記誤りが生じたビット列をビット列復元部１１２がビット列復元操作を実行し、そのビット列復元操作後のビット列の誤りが誤り訂正可能な範囲になる場合が考えられる。このような場合、この通常のユーザデータが記録された論理アドレスに対する読込み要求に対しても、第２の判定結果が誤りが検出されなかった旨または誤り訂正処理が可能である旨の結果であった場合と同様に、所定の応答が実行されることとなる。このため、通常のユーザデータとしての読込み応答がホスト装置に返らなくなる可能性がある。ただし、このようなケースは、記憶部１６０に記憶されたデータに誤りが生じた結果として起こるものである。上述したように、記憶部１６０に記憶されたデータに誤りが生じた際に正確でない応答がホスト装置に返る可能性があることは、厳密な設計に要するコストとのトレードオフである。このため、当該動作を一概に誤った動作であるとする必要はない。
【００４４】
一方、第１判定部１２２から取得した第２の判定結果が誤りが検出された旨または誤り訂正処理が不能である旨の結果であった場合、読込み部１１５は、読込みエラーを示す読込み状態情報を読込み応答として、ホストインタフェース部１３０に送信する。
【００４５】
（動作）
次に、実施の形態１における処理手順の一例について、図面を参照して詳細に説明する。図６は、実施の形態１における書込み処理の一例を示す。図７は、実施の形態１における特殊データ設定処理の一例を示す。図８は、実施の形態１における読込み処理の一例を示す。
【００４６】
・書込み処理
まず、実施の形態１における書込み処理の一例を、図６を参照して詳細に説明する。図６に示すように、書込み処理では、まず、ホスト装置からの書込み要求に対して、誤り検出符号を生成する（ステップＳ１０１）。より詳細には、ホストインタフェース部１３０は、ホスト装置から書込み要求を受け付ける。書込み要求には、論理アドレス情報と、書込み対象データとが含まれる。ホストインタフェース部１３０は、ホスト装置から書込み要求を受け付けると、受け付けた書込み要求を書込み部１１４に送信する。書込み部１１４は、ホストインタフェース部１３０から書込み要求を受け付けると、この書込み要求から書込み対象データを抽出する。つづいて、書込み部１１４は、抽出した書込み対象データを、第１生成部１２１に送信する。なお、第１生成部１２１に送信するデータには、書込み対象データ以外のデータがさらに含まれていてもよい。例えば、書込み要求から抽出した論理アドレス情報を示すビット列や、所定のビット列がさらに含まれていてもよい。第１生成部１２１は、要求元である書込み部１１４から、誤り検出符号の生成のもとになる書込み対象データを受け付けると、受け付けた書込み対象データから、所定の方法に基づき、誤り検出符号を生成する。生成された誤り検出符号は、第１生成部１２１から要求元である書込み部１１４に送信される。その後、書込み部２１４は、書込み対象データに対応する誤り検出符号を第１生成部１２１から取得する。なお、以降の説明を含め、誤り検出符号を誤り訂正符号と読み替えてもよい。
【００４７】
つぎに、抽出した書込み対象データと、取得した誤り検出符号とを、記憶部１６０内の記憶領域１６１に書き込み（ステップＳ１０２）、その後、書込み処理を終了する。より詳細には、書込み部１１４は、書込み要求から論理アドレス情報を抽出する。書込み部１１４は、抽出した論理アドレス情報に対応する記憶部１６０の記憶領域１６１に、同じく抽出した書込み対象データと取得した誤り検出符号を書き込むように、アクセス部１５０に指示する。アクセス部１５０は、書込み部１１４から入力された書込み対象データと誤り検出符号とを、同じく書込み部１１４から入力された論理アドレス情報に対応する記憶部１６０の記憶領域１６１に書き込む。
【００４８】
・特殊データ設定処理
次に、実施の形態１における特殊データ設定処理の一例を、図７を参照して詳細に説明する。図７に示すように、特殊データ設定処理では、まず、ホスト装置からの特殊データ設定要求に対して、マジックナンバーを含む特殊データ３２を生成する（ステップＳ２０１）。より詳細には、ホストインタフェース部１３０は、ホスト装置から特殊データ設定要求を受け付ける。特殊データ設定要求には、書込み先の論理アドレス情報と、所定の応答の種別を識別する特殊データ識別情報とが含まれる。ホストインタフェース部１３０は、ホスト装置から特殊データ設定要求を受け付けると、受け付けた特殊データ設定要求を特殊データ設定部１１３に送信する。特殊データ設定部１１３は、ホストインタフェース部１３０から特殊データ設定要求を受け付けると、この特殊データ設定要求から特殊データ識別情報を抽出する。つづいて、特殊データ設定部１１３は、上述において図５を用いて説明したように、抽出した特殊データ識別情報に応じたビット列のマジックナンバーを含む特殊データ３２を生成する。
【００４９】
つぎに、生成した特殊データ３２を用いて、誤り検出符号を生成する（ステップＳ２０２）。より詳細には、特殊データ設定部１１３は、生成した特殊データ３２を第１生成部１２１に送信する。なお、第１生成部１２１に送信するデータには、特殊データ３２以外のデータがさらに含まれていてもよい。たとえば、特殊データ設定要求から抽出した論理アドレス情報を示すビット列や、所定のビット列がさらに含まれていてもよい。第１生成部１２１は、要求元である特殊データ設定部１１３から特殊データ３２を受け付けると、この受け付けた特殊データ３２から、所定の方法に基づき、誤り検出符号を生成する。生成された誤り検出符号は、第１生成部１２１から要求元である特殊データ設定部１１３に送信される。これにより、特殊データ設定部１１３は、生成した特殊データ３２のビット列に対応する誤り検出符号を取得する。なお、以降の説明において、特殊データ３２のビット列と誤り検出符号のビット列とからなるデータを、操作対象データという。
【００５０】
つぎに、生成した特殊データ３２および取得した誤り検出符号よりなる操作対象データにおける所定のビットの値を操作する（ステップＳ２０３）。より詳細には、特殊データ設定部１１３は、生成した特殊データ３２と取得した誤り検出符号とを操作対象データとして、ビット列操作部１１１に送信する。ビット列操作部１１１は、要求元である特殊データ設定部１１３から操作対象データを受け付けると、上述したように、所定の規則に従って、受け付けた操作対象データのビット列を操作する。その後、ビット列操作部１１１は、ビット列操作後の操作データを、要求元である特殊データ設定部１１３に送信する。これにより、特殊データ設定部１１３が、ビット列操作後の特殊データ３２および誤り検出符号を取得する。なお、上述したように、誤り検出符号を誤り訂正符号に置き換えてもよい。
【００５１】
つぎに、ビット列操作後の特殊データ３２および誤り検出符号を記憶部１６０に書き込み（ステップＳ２０４）、その後、特殊データ設定処理を終了する。より詳細には、特殊データ設定部１１３は、特殊データ設定要求から論理アドレス情報を抽出する。特殊データ設定部１１３は、抽出した論理アドレス情報に対応する記憶部１６０の記憶領域１６１に、ビット列操作後の特殊データ３２および誤り検出符号を書き込むように、アクセス部１５０に指示する。アクセス部１５０は、特殊データ設定部１１３から入力されたビット列操作後の特殊データ３２および誤り検出符号を、同じく特殊データ設定部１１３から入力された論理アドレス情報に対応する記憶部１６０の記憶領域１６１に書き込む。
【００５２】
・読込み処理
次に、実施の形態１における読込み処理の一例を、図８を参照して詳細に説明する。図８に示すように、読込み処理では、まず、ホスト装置からの読込み要求に応じて、記憶部１６０からデータを読み込む（ステップＳ３０１）。より詳細には、ホストインタフェース部１３０は、ホスト装置から読込み要求を受け付ける。読込み要求には、読込み対象データの格納先を示す論理アドレス情報が含まれる。ホストインタフェース部１３０は、ホスト装置から読込み要求を受け付けると、受け付けた読込み要求を読込み部１１５に送信する。読込み部１１５は、ホストインタフェース部１３０から読込み要求を受け付けると、この読込み要求から論理アドレス情報を抽出する。その後、読込み部１１５は、抽出した論理アドレス情報が示す論理アドレスに対応する記憶部１６０の記憶領域１６１に記憶されているデータを読み込むように、アクセス部１５０に指示する。アクセス部１５０は、読込み部１１５から入力された論理アドレス情報が示す論理アドレスに対応する記憶部１６０の記憶領域１６１に記憶されているデータを読み込み、これを読込み部１１５に返答する。これにより、読込み部１１５が、読込み対象データを取得する。
【００５３】
つぎに、読み込んだデータに対する誤り検出処理を実行する（ステップＳ３０２）。より詳細には、読込み部１１５は、読み込んだデータのうち、ユーザデータ記憶領域１６２に格納されていたデータを誤り検出対象データとして、また、冗長領域１６３に格納されていたデータを誤り検出符号として、第１判定部１２２に送信する。ここで、書込み部１１４および特殊データ設定部１１３が、第１生成部１２１に送信するデータに、ユーザデータ記憶領域１６２に格納されていたデータ以外のデータをさらに含ませていた場合、そのさらに含ませていたデータについても第１判定部１２２に送信する。たとえば、書込み要求または特殊データ設定要求に含まれる論理アドレス情報を示すビット列をさらに含ませていた場合、読込み要求から抽出した論理アドレス情報を示すビット列をさらに第１判定部１２２に送信する。また、所定のビット列をさらに含ませていた場合、所定のビット列をさらに第１判定部１２２に送信する。第１判定部１２２は、要求元である読込み部１１５から、誤り検出対象データおよび誤り検出符号を受け付けると、所定の方法に基づき、受け付けた誤り検出対象データおよび誤り検出符号のビット列に誤りが存在するか否かを判定する。その後、第１判定部１２２は、この判定結果（第１判定結果）を要求元である読込み部１１５に送信する。これにより、読込み部１１５が第１判定部１２２から送信された第１判定結果を取得する。なお、上述したように、誤り検出符号を誤り訂正符号と読み替えてもよい。
【００５４】
つぎに、ステップＳ３０２による誤り判定処理の結果として誤りが検出されたか否かを判定する（ステップＳ３０３）。より詳細には、第１判定部１２２から取得した第１判定結果が誤りが検出されなかった旨の結果であった場合（ステップＳ３０３のＮＯ）、ステップＳ３０４に進む。一方、取得した第１判定結果が誤りが検出された旨の結果であった場合（ステップＳ３０３のＹＥＳ）、ステップＳ３０５に進む。なお、誤り検出符号に代えて誤り訂正符号を用いた場合、読込み部１１５は、第１判定結果が誤り訂正処理が可能である旨の結果であれば（ステップＳ３０３のＮＯ）、ステップＳ３０４に進み、第１判定結果が誤り訂正処理が不能である旨の結果であれば（ステップＳ３０３のＹＥＳ）、ステップＳ３０５に進む。
【００５５】
ステップＳ３０４では、ステップＳ３０１で読み込んだデータを読込み応答としてホスト装置へ送信する。より詳細には、読込み部１１５は、ステップＳ３０１で読み込んだデータのうちユーザデータ記憶領域１６２に格納されていたデータを読込み応答として、ホストインタフェース部１３０に送信する。なお、誤り検出符号に代えて誤り訂正符号を用いた場合、読込み部１１５は、読み込んだデータの誤りを訂正する。また、読込み部１１５は、誤り訂正されたデータのうちユーザデータ記憶領域１６２に格納されていたデータを読込み応答として、ホストインタフェース部１３０に送信する。読込み応答には、ホスト装置から要求された読込み対象データか、もしくは、読込み状態情報が含まれる。読込み状態情報は、読込みの状態を示す情報である。読込みの状態を示す情報としては、たとえば読込みエラーを示す情報がある。ホストインタフェース部１３０は、読込み部１１５から読込み応答を受け付けると、ホスト装置にこの読込み応答を送信し、その後、読込み処理を終了する。
【００５６】
また、ステップＳ３０５では、ステップＳ３０１で読み込んだデータのビット列を復元操作する。より詳細には、読込み部１１５は、ステップＳ３０１で読み込んだデータ（ユーザデータ記憶領域１６２に格納されていたデータ、および、冗長領域１６３に格納されていたデータ）を、ビット列復元部１１２に送信する。ビット列復元部１１２は、要求元である読込み部１１５から復元操作対象データを受け付けると、上述したように、この操作対象データのビット列の復元操作を実行する。その後、ビット列復元部１１２は、ビット列復元操作後のデータを、要求元である読込み部１１５に送信する。これにより、読込み部１１５が、ビット列復元操作後のデータを取得する。なお、上述したように、誤り検出符号を誤り訂正符号と読み替えることも可能である。
【００５７】
つぎに、ビット列復元操作後のデータに対する誤り検出処理を実行する（ステップＳ３０６）。より詳細には、読込み部１１５は、ビット列復元部１１２から取得したビット列復元操作後のデータのうちユーザデータ記憶領域１６２に格納されていたビット列復元操作後のデータを誤り検出対象データとして、また、冗長領域１６３に格納されていたビット列復元操作後のデータを誤り検出符号として、第１判定部１２２に送信する。ここで、書込み部１１４および特殊データ設定部１１３が第１生成部１２１に送信するデータにユーザデータ記憶領域１６２に格納されるデータ以外のデータをさらに含ませていた場合、そのさらに含ませていたデータについても第１判定部１２２に送信する。たとえば、書込み要求または特殊データ設定要求に含まれる論理アドレス情報を示すビット列をさらに含ませていた場合、読込み要求から抽出した論理アドレス情報を示すビット列をさらに第１判定部１２２に送信する。また、所定のビット列をさらに含ませていた場合、所定のビット列をさらに第１判定部１２２に送信する。第１判定部１２２は、要求元である読込み部１１５から、誤り検出対象データおよび誤り検出符号を受け付けると、所定の方法に基づき、受け付けた誤り検出対象データおよび誤り検出符号に誤りが存在するか否かを判定する。その後、第１判定部１２２は、この判定結果（第２判定結果）を要求元である読込み部１１５に送信する。なお、上述したように、誤り検出符号を誤り訂正符号と読み替えてもよい。
【００５８】
つぎに、ステップＳ３０６による誤り判定処理の結果として誤りが検出されたか否かを判定する（ステップＳ３０７）。より詳細には、第１判定部１２２から取得した第２判定結果が誤りが検出されなかった旨の結果であった場合（ステップＳ３０７のＮＯ）、ステップＳ３０８に進む。一方、取得した第２判定結果が誤りが検出された旨の結果であった場合（ステップＳ３０７のＹＥＳ）、ステップＳ３０９に進む。なお、誤り検出符号に代えて誤り訂正符号を用いた場合、読込み部１１５は、第２判定結果が誤り訂正処理が可能である旨の結果であれば（ステップＳ３０７のＮＯ）、ステップＳ３０８に進み、第２判定結果が誤り訂正処理が不能である旨の結果であれば（ステップＳ３０７のＹＥＳ）、ステップＳ３０９に進む。
【００５９】
ステップＳ３０８では、ステップＳ３０５のビット列復元操作によって得られた特殊データ３２におけるマジックナンバー３２ａに従って所定の応答を実行する。より詳細には、読込み部１１５は、ステップＳ３０５で得られたビット列復元操作後のデータのうちユーザデータ記憶領域１６２に格納されていたデータの所定ビットをマジックナンバー３２ａとみなして、特殊データ識別情報を判別する。なお、誤り検出符号に代えて誤り訂正符号を用いた場合、読込み部１１５は、ステップＳ３０５で得られたビット列復元操作後のデータの誤りを訂正し、この誤り訂正されたデータのうちユーザデータ記憶領域１６２に格納されていたデータの所定ビットをマジックナンバー３２ａとみなして、特殊データ識別情報を判別する。つづいて、読込み部１１５は、判別した特殊データ識別情報に従って、所定の応答を読込み応答として、ホストインタフェース部１３０に送信する。ホストインタフェース部１３０は、読込み部１１５から所定の応答を受け付けると、ホスト装置に所定の応答を読込み応答として送信し、その後、読込み処理を終了する。
【００６０】
一方、ステップＳ３０９では、ホスト装置に読込みエラーを応答する。より詳細には、読込み部１１５は、読込みエラーを示す読込み状態情報を読込み応答として、ホストインタフェース部１３０に送信する。ホストインタフェース部１３０は、読込み部１１５から読込み応答を受け付けると、ホスト装置に読込みエラーを送信し、その後、読込み処理を終了する。
【００６１】
以上のように構成および動作することで、実施の形態１では、特殊データが設定された論理アドレスの情報を、別途管理する必要がない。これにより、使用メモリ容量を削減できる。また、特殊データが設定されていない論理アドレスに対する読込み処理において、記憶部１６０に記憶されたデータに誤りが生じなかったものについては、通常必要な誤り検出処理のみで、ホスト装置に読込み応答を送信することができる。これにより、通常の読込み処理の高速化が図れる。
【００６２】
また、実施の形態１では、論理アドレスに対応する記憶媒体の記憶領域１６１に特殊データである旨のマジックナンバーを記録することで、ある論理アドレスに対して特殊データを対応付けるため、対応関係管理用の追加の記録媒体が不要であるとともに、記録部１６０内の記憶領域１６１を対応関係管理用の記憶領域として割り当てる必要もない。
【００６３】
ここで、実施の形態１と対比されるデータ記憶装置の一例について説明する。対比とするデータ記憶装置は、ホスト装置からある論理アドレスに対する読込み要求が発行されると、当該論理アドレスに所定の応答が設定されているか否かを判定するアドレス判定処理と、当該アドレスに対応付けられているユーザデータを記憶媒体から読み込むデータ読出処理とを並列実行する。そしてデータ記憶装置は、アドレス判定結果が真ならば、並行して読み込んだユーザデータを破棄し、代わりに所定の応答を実行する。一方、アドレス判定結果が偽ならば、データ記憶装置は、並行して読み込んだユーザデータをホストに応答する。
【００６４】
特殊データが設定されていた際にデータ記憶装置が実行する「所定の応答」としては、以下に示すパターンの機能が例示できる。
（１）所定の値を通常のユーザデータの応答と同じ形式で応答
（２）所定の状態を通常のユーザデータの応答とは異なる形式で応答
【００６５】
パターン（１）では、データ記憶装置は、たとえばホスト装置からある論理アドレスに記録されているデータの初期化を指示された後に、ホスト装置から当該論理アドレスに対して読込み要求が発行されると、所定の初期化済みの値を通常のユーザデータの応答と同じ形式でホスト装置に応答する。
【００６６】
パターン（２）では、データ記憶装置は、たとえばホスト装置からある論理アドレスに対する読み込みがエラーになるように指示された後に、ホスト装置から当該論理アドレスに対して読込み要求が発行されると、エラー状態を示す所定の値を通常のユーザデータの応答と異なる形式でホスト装置に応答する。
【００６７】
上記のパターン（１）および（２）で例示したような機能は、以下の手法を用いることでも実現することができる。すなわち、記憶媒体の欠陥個所（バッドセクタ）の情報を記録媒体中の所定の記憶領域に記憶し、あるアドレスに対する読込み要求を処理する際は、所定の記憶領域に記憶された情報に基づいて該当アドレスが欠陥個所であるか否かを判定し、欠陥個所である場合は所定の応答を実行する。この構成を利用し、ある論理アドレスに対する読込み要求に応じて所定の応答を実行するように設定する処理では、所定の記憶領域に該当論理アドレスと所定の応答との対応関係を示す情報を記憶する。ある論理アドレスへの読込み要求を処理する際は、所定の記憶領域に記憶された情報を参照して該当論理アドレスに所定の応答が設定されているか否かを判定する。所定の応答が設定されていた場合、記録装置は、情報に応じた所定の応答をする機能を実現することができる。
【００６８】
このように、読込み要求に対して所定の応答を実行するように設定された論理アドレスを別途管理することでも、上記例示のような機能を実現することができる。ただし、この例示のような手法では、特殊データの対応関係を上述のように別途管理すると、次のようなデメリットが生じる場合がある。すなわち、特殊データは論理アドレス毎に設定される。このため、データ記憶装置の大容量化に伴い、利用可能な論理アドレスの最大値が増大すると、管理する情報の容量が増大してしまう。
【００６９】
そこで、たとえば以下に例示するような２つのアプローチのうちいずれかを採用することが考えられる。
（１）特殊データを設定可能な論理アドレスの数に上限を設定する
（２）管理情報をテーブルのようなフラットなデータ構造で管理し、必要な個所を随時記憶媒体から読み込む
【００７０】
しかしながら、アプローチ（１）および（２）では、それぞれ以下に示すようなデメリットが考えられる。すなわち、アプローチ（１）では、特殊データを設定可能な論理アドレスの数に上限を設けることで、管理情報の容量を削減することが可能である。ただし、この方法では、特殊データの設定可能数に制約が出てしまう。また、この方法では、リストのようなデータ構造で管理情報を管理することが現実的である。ただし、ある論理アドレスに特殊データが設定されているか否かを判定するためにはリストに対する探索処理が必要になるため、結果として、処理に長い時間を要する場合がある。
【００７１】
また、アプローチ（２）では、管理情報を管理するテーブルが記憶媒体に記憶される。ホスト装置からの読込み要求に対しては、テーブルにおける必要な個所が随時記憶媒体から読み込まれる。この構成によれば、必要なメモリ容量を削減することが可能である。また、アプローチ（２）では、アプローチ（１）と異なりリストの探索処理は不要であるが、記憶媒体からの読込み処理に長い時間を要する場合がある。また、記憶媒体に管理情報を保存するための領域を別途確保しなければならない。
【００７２】
ここで、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）のように、記憶媒体からの読み込みに比較的時間がかかるデータ記憶装置では、上記アプローチ（１）を採用することで、通常時の応答速度がアドレス判定処理時間に影響されるなどの不具合が生じ難い。これは、記憶媒体からの読み込みに比較的時間がかかるＨＤＤなど、データ読出処理時間がアドレス判定処理時間よりも通常長いデータ記憶装置では、アドレス判定処理とデータ読出処理とを並列実行することで、アドレス判定処理時間をデータ読出処理時間に隠すことができるためである。
【００７３】
しかしながら、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）のように、記憶媒体からの読み込みに比較的時間がかからないデータ記憶装置では、アドレス判定処理時間がデータ読出処理時間に隠せない場合がある。この場合、特殊データの設定機能を有さないデータ記憶装置に比べて、通常の応答時間が長くなってしまう場合がある。
【００７４】
これに対し、実施の形態１では、特殊データが設定された論理アドレスの情報を、別途管理する必要がない。これにより、使用メモリ容量を削減できる。また、特殊データが設定されていない論理アドレスに対する読込み処理において、記憶部１６０に記憶されたデータに誤りが生じなかったものについては、通常必要な誤り検出処理のみで、ホスト装置に読込み応答を送信することができる。これにより、通常の読込み処理の高速化が図れる。
【００７５】
また、実施の形態１では、論理アドレスに対応する記憶媒体の記憶領域１６１に特殊データである旨のマジックナンバーを記録することで、ある論理アドレスに対して特殊データを対応付けるため、対応関係管理用の追加の記録媒体が不要であるとともに、記録部１６０内の記憶領域１６１を対応関係管理用の記憶領域として割り当てる必要もない。
【００７６】
＜実施の形態２＞
つぎに、実施の形態２にかかるコントローラ、データ記憶装置およびプログラムを例示する。なお、以下の説明において、実施の形態１と同様の構成には、同一の符号を付し、その重複する説明を省略する。
【００７７】
上述したように、実施の形態１では、一概に誤った動作であるとする必要はないものの、特殊データ３２として記憶部１６０に記憶されたデータのビット列に誤りが生じた結果、偶然、ビット列操作後の前記誤りが生じたビット列が、ビット列復元部１１２によるビット列復元操作後のビット列と同じになる場合、または前記誤りが生じたビット列の誤りが誤り訂正可能な範囲になってしまう場合や、通常のユーザデータとして記憶部１６０に記憶されたデータのビット列に誤りが生じた結果、偶然、前記誤りが生じたデータのビット列が、ビット列操作部１１１によるビット列操作後のビット列と同じになる場合、または、前記誤りが生じたビット列をビット列復元部１１２がビット列復元操作を実行し、そのビット列復元操作後のビット列の誤りが誤り訂正可能な範囲になる場合においては、正確でない応答がホスト装置に返る可能性があった。そこで実施の形態２では、このようなケースの発生を無くすために、誤り検出符号を２つ以上使用する場合を例に挙げる。
【００７８】
（構成）
図９は、実施の形態２にかかるデータ記憶装置２００の概略構成を示す。図９と図１とを比較すると明らかなように、データ記憶装置２００（図９）は、データ記憶装置１００（図１）と同様の構成を備える。ただし、データ記憶装置２００では、データ記憶装置１００におけるコントローラ１１０とホストインタフェース部１３０とが、それぞれコントローラ２１０とホストインタフェース部２３０に置き換えられている。また、データ記憶装置２００は、第２生成部２２１と、第２判定部２２２とをさらに備える。
【００７９】
コントローラ２１０は、図１に示すコントローラ１１０と同様の構成において、特殊データ設定部１１３と書込み部１１４と読込み部１１５とが、それぞれ特殊データ設定部２１３と書込み部２１４と読込み部２１５とに置き換えられている。このコントローラ２１０は、たとえばデータバス１４０を介してアクセス部１５０およびホストインタフェース部２３０と相互に接続されている。
【００８０】
ホストインタフェース部２３０は、連携先の機能部が、書込み部１１４ではなく書込み部２１４であり、特殊データ設定部１１３ではなく特殊データ設定部２１３であり、また、読込み部１１５ではなく読込み部２１５である以外はホストインタフェース部１３０と同様であるので、詳細な説明は省略する。
【００８１】
第２生成部２２１は、誤り検出符号の要求元から、誤り検出符号（便宜上、この誤り検出符号を第２誤り検出符号という）の生成のもとになるデータを受け付ける。第２生成部２２１は、予め定めておいた所定の方法に基づき、受け付けたデータデータから第２誤り検出符号を生成する。また、第２生成部２２１は、生成した第２誤り検出符号を要求元に送信する。なお、本開示において、誤り検出符号を誤り訂正符号と読み替えてもよい。また、第２誤り検出符号の生成方法を、第１生成部１２１による誤り検出符号（便宜上、この誤り検出符号を第１誤り検出符号という）の生成方法と同じにする場合、第１生成部１２１で第２生成部２２１の機能を代用してもよい。この場合、第２生成部２２１を省略できる。
【００８２】
第２判定部２２２は、誤り判定の要求元から、誤り検出対象データおよびこれに対応する第２誤り検出符号を受け付ける。第２判定部２２２は、予め定めておいた所定の方法に基づき、受け付けた誤り検出対象データおよび第２誤り検出符号に誤りが存在するか否かを判定する誤り判定処理を実行する。また、第２判定部２２２は、誤り判定処理の結果を要求元に送信する。なお、誤り検出符号を誤り訂正符号と読み替えた場合は、この誤り判定処理が、「予め定めておいた所定の方法に基づき、受け付けた誤り訂正対象データおよび誤り訂正符号の誤り訂正が可能であるか否かを判定する誤り判定処理」に置き換えられる。また、第２判定部２２２の誤り判定方法を、第１判定部１２２の誤り判定方法と同じにする場合、第１判定部１２２で第２判定部２２２の機能を代用してもよい。この場合、第２判定部２２２を省略できる。
【００８３】
書込み部２１４は、ホストインタフェース部２３０から書込み要求を受け付ける。書込み部２１４は、受け付けた書込み要求から書込み対象データを抽出する。また、書込み部２１４は、抽出した書込み対象データを第１生成部１２１に送信し、書込み対象データに対応する第１誤り検出符号を取得する。なお、第１生成部１２１に送信するデータには、書込み対象データ以外のデータがさらに含まれていてもよい。たとえば、受け付けた書込み要求から抽出した論理アドレス情報を示すビット列や、所定のビット列がさらに含まれていてもよい。
【００８４】
また、書込み部２１４は、抽出した書込み対象データと取得した第１誤り検出符号とを第２生成部２２１に送信し、これらのビット列に対応する第２誤り検出符号を取得する。なお、第２生成部２２１に送信するデータには、書込み対象データおよび第１誤り検出符号以外のデータがさらに含まれていてもよい。たとえば、受け付けた書込み要求から抽出した論理アドレス情報を示すビット列や、所定のビット列がさらに含まれていてもよい。
【００８５】
さらに、書込み部２１４は、受け付けた書込み要求から書込先の論理アドレス情報を抽出する。書込み部２１４は、抽出した論理アドレス情報に対応する記憶部１６０の記憶領域１６１に書込み対象データと第１および第２誤り検出符号とを書き込むように、アクセス部１５０に指示する。図１０に、記憶部１６０の記憶領域１６１に対するデータ配置の一例を示す。図１０に示すように、書込み対象データは、記憶部１６０の記憶領域１６１におけるユーザデータ記憶領域１６２に記憶される。また、第１誤り検出符号は、同記憶領域１６１における冗長領域１６３内の第１冗長領域１６３ａに記憶され、第２誤り検出符号は、同冗長領域１６３内の第２冗長領域１６３ｂに記憶される。ただし、各記憶領域１６１内のデータ配置は、図１０に示すものに限られない。
【００８６】
特殊データ設定部２１３は、ホストインタフェース部２３０から、特殊データ設定要求を受け付ける。特殊データ設定部２１３は、特殊データ設定要求から、所定の応答の種別を識別する特殊データ識別情報を抽出する。また、特殊データ設定部２１３は、抽出した所定の応答の種別に応じたビット列のマジックナンバーを含む特殊データ３２（図４Ａ参照）を生成する。特殊データ３２の生成方法は、実施の形態１における特殊データ設定部１１３と同様である。
【００８７】
また、特殊データ設定部２１３は、生成した特殊データ３２を第１生成部１２１に送信し、特殊データ３２のビット列に対応する第１誤り検出符号を取得する。第１生成部１２１に送信するデータには、特殊データ３２以外のデータがさらに含まれていてもよい。たとえば、受け付けた特殊データ設定要求から抽出した論理アドレス情報を示すビット列や、所定のビット列がさらに含まれていてもよい。
【００８８】
さらに、特殊データ設定部２１３は、特殊データ３２と第１誤り検出符号とをビット列操作部１１１に送信し、ビット列操作後の特殊データ３２および第１誤り検出符号を取得する。
【００８９】
さらにまた、特殊データ設定部２１３は、ビット列操作後の特殊データ３２および第１誤り検出符号を第２生成部２２１に送信し、これらのビット列に対応する第２誤り検出符号を取得する。第２生成部２２１に送信するデータには、ビット列操作後の特殊データ３２および第１誤り検出符号以外のデータがさらに含まれていてもよい。たとえば、受け付けた特殊データ設定要求から抽出した論理アドレス情報を示すビット列や、所定のビット列がさらに含まれていてもよい。
【００９０】
さらにまた、特殊データ設定部２１３は、受け付けた特殊データ設定要求から論理アドレス情報を抽出する。特殊データ設定部２１３は、抽出した論理アドレス情報に対応する記憶部１６０の記憶領域１６１に、ビット列操作後の特殊データ３２および第１誤り検出符号と、第２誤り検出符号とを書き込むように、アクセス部１５０に指示する。
【００９１】
なお、ビット列操作後の特殊データ３２は、図１０におけるユーザデータ記憶領域１６２に記憶される。また、ビット列操作後の第１誤り検出符号は、冗長領域１６３内の第１冗長領域１６３ａに記憶され、第２誤り検出符号は、同冗長領域１６３内の第２冗長領域１６３ｂに記憶される。ただし、各記憶領域１６１内のデータ配置は、図１０に示すものに限られない。
【００９２】
読込み部２１５は、ホストインタフェース部２３０から読込み要求を受け付ける。読込み部２１５は、受け付けた読込み要求から論理アドレス情報を抽出する。読込み部２１５は、抽出した論理アドレス情報が示す論理アドレスに対応する記憶部１６０の記憶領域１６１に記憶されているデータを読み込むように、アクセス部１５０に指示し、これによって読み込まれたデータを取得する。
【００９３】
ここで、読込み部２１５によって読み込まれたデータの配置は、たとえば図１０に示した配置など、予め定めておいた配置となっている。そこで以降の説明では、読込み部２１５が読み込んだデータのうち、ユーザデータ記憶領域１６２から読み込んだデータを第１データ、第１冗長領域１６３ａから読み込んだデータを第２データ、第２冗長領域１６３ｂから読み込んだデータを第３データと呼ぶ。なお、第１データは、ビット列操作されていない書込み対象データか、または、ビット列操作後の特殊データ３２である。第２データは、ビット列操作されていない第１誤り検出符号か、または、ビット列操作後の第１誤り検出符号である。第３データは、ビット列操作されていない第２誤り検出符号である。
【００９４】
読込み部２１５は、読み込んだデータのうち、第１データおよび第２データを誤り検出対象データとして、また、第３データを誤り検出対象データに対応する誤り検出符号として、第２判定部２２２に送信する。ここで、書込み部２１４および特殊データ設定部２１３が第２生成部２２１に送信するデータに第１および第２データ以外のデータをさらに含ませていた場合、そのさらに含ませていたデータについても第２判定部２２２に送信される。たとえば、書込み要求または特殊データ設定要求に含まれる論理アドレス情報を示すビット列をさらに含ませていた場合、読込み要求から抽出した論理アドレス情報を示すビット列をさらに第２判定部２２２に送信する。また、たとえば所定のビット列をさらに含ませていた場合、所定のビット列をさらに第２判定部２２２に送信する。その後、読込み部２１５は、第２判定部２２２から送信された第３判定結果を取得する。
【００９５】
第２判定部２２２から取得した第３判定結果が誤りが検出された旨または誤り訂正処理が不能である旨の結果であった場合、読込み部２１５は、読込みエラーを示す読込み状態情報を読込み応答として、ホストインタフェース部２３０に送信する。
【００９６】
一方、第２判定部２２２から取得した第３判定結果が誤りが検出されなかった旨の結果であった場合、読込み部２１５は、記憶領域１６１から読み込んだデータのうち、第１データを誤り検出対象データとして、また、第２データを誤り検出対象データに対応する誤り検出符号として、第１判定部１２２に送信する。なお、第２生成部２２１が生成する誤り検出符号に代えて誤り訂正符号を用いた場合、読込み部２１５は、第３判定結果が誤り訂正処理が可能である旨の結果であれば、読み込んだデータの誤りを訂正する。以降、誤りが訂正されたデータを第１誤り訂正済みデータと呼ぶ。また、読込み部２１５は、第１誤り訂正済みデータのうち、第１データを誤り検出対象データとして、また、第２データを誤り検出対象データに対応する誤り検出符号として、第１判定部１２２に送信する。ここで、書込み部２１４および特殊データ設定部２１３が第１生成部１２１に送信するデータに第１データ以外のデータをさらに含ませていた場合、そのさらに含ませていたデータについても第１判定部１２２に送信する。たとえば、書込み要求または特殊データ設定要求に含まれる論理アドレス情報を示すビット列をさらに含ませていた場合、読込み要求から抽出した論理アドレス情報を示すビット列をさらに第１判定部１２２に送信する。また、たとえば所定のビット列をさらに含ませていた場合、所定のビット列をさらに第１判定部１２２に送信する。読込み部２１５は、第１判定部１２２から送信された第４の判定結果を取得する。
【００９７】
また、読込み部２１５は、第１判定部１２２から取得した第４の判定結果が誤りが検出されなかった旨の結果であった場合、記憶領域１６１から読み込んだデータのうち第１データをホスト装置から要求されたデータとして含む読込み応答を、ホストインタフェース部２３０に送信する。なお、第２生成部２２１が生成する誤り検出符号に代えて誤り訂正符号を用いた場合、取得した第４の判定結果が誤り訂正処理が可能である旨の結果であれば、読込み部２１５は、第１誤り訂正済みデータのうち第１データをホスト装置から要求されたデータとして含む読込み応答を、ホストインタフェース部２３０に送信する。これは、記憶部１６０に記録されたデータに誤りが生じた場合、この誤りを訂正することで得られた第１誤り訂正済みデータには誤りがなくなっているからである。一方、ビット列を操作していた場合、第１判定部１２２からの第４判定結果により、誤り訂正処理が不能である旨の結果を必ず得られる。このため、誤り訂正処理が可能である旨の結果が得られた場合は、誤り訂正処理を実施する必要がない。
【００９８】
ただし、特殊データ３２として記憶部１６０に記憶されたデータのビット列に誤りが生じた結果、偶然、第１データ（ビット列操作後のマジックナンバーのビット列）と、第２データ（ビット列操作後の第１誤り検出符号）とが、ビット列復元部１１２によるビット列復元操作後のビット列と同じになる場合が考えられる。このような場合でも、第２判定部２２２からの第３判定結果で誤りが検出されるか誤り訂正不能であると判定され読み込みエラーがホスト装置に返されるか、または誤り訂正可能な範囲であると判定され上記誤りが訂正されるため、実施の形態１とは異なり、記憶領域１６１から読み込んだ第１データをデータとして含む読込み応答をホストインタフェース部２３０に返すことはない。このように、すなわち、特殊データ３２が対応付けられていない論理アドレスに対する読込み要求であって、誤りが生じなかったものについては、通常必要な誤り検出処理によってホスト装置に読込み応答を送信することができる。この結果、通常の読込み処理の高速化が図れる。
【００９９】
一方、第１判定部１２２から取得した第４の判定結果が誤りが検出された旨の結果であった場合、読込み部２１５は、記憶領域１６１から読み込んだデータのうち第１データおよび第２データをビット列復元部１１２に送信し、ビット列復元操作後のデータを取得する。なお、誤り検出符号に代えて誤り訂正符号を用いた場合、読込み部２１５は、第４の判定結果が誤り訂正処理が不能である旨の結果であれば、第１誤り訂正済みデータのうち第１データおよび第２データをビット列復元部１１２に送信し、ビット列復元操作後のデータを取得する。
【０１００】
また、読込み部２１５は、取得したビット列復元操作後のデータのうち第１データの配置個所に対応するデータを誤り検出対象データとして、また、取得したビット列復元操作後のデータのうち第２データの配置個所に対応するデータを誤り検出対象データに対応する誤り検出符号として、第１判定部１２２に送信する。ここで、書込み部２１４および特殊データ設定部２１３が第１生成部１２１に送信するデータに第１データ以外のデータをさらに含ませていた場合、そのさらに含ませていたデータについても第１判定部１２２に送信する。たとえば、書込み要求または特殊データ設定要求に含まれる論理アドレス情報を示すビット列をさらに含ませていた場合、読込み要求から抽出した論理アドレス情報を示すビット列をさらに第１判定部１２２に送信する。また、たとえば所定のビット列をさらに含ませていた場合、所定のビット列をさらに第１判定部１２２に送信する。読込み部２１５は、第１判定部１２２から送信された第５判定結果を取得する。
【０１０１】
読込み部２１５は、第１判定部１２２から取得した第５判定結果が誤りが検出されなかった旨の結果であることを確認する。なお、第１生成部１２１が生成する誤り検出符号に代えて誤り訂正符号を用いた場合、読込み部２１５は、第５判定結果が誤り訂正処理が可能である旨の結果であることを確認する。
【０１０２】
ただし、通常のユーザデータとして記憶部１６０に記憶されたデータのビット列に誤りが生じた結果、偶然、第１データ（書込み対象データ）と第２データ（第１誤り検出符号）とがビット列操作部１１１によるビット列操作後のビット列と同じになる場合が考えられる。このような場合でも、本実施の形態２では、第３判定結果で誤りが検出されるか誤り訂正不能であると判定され読み込みエラーがホスト装置に返されるか、または誤り訂正可能な範囲であると判定され上記誤りが訂正されるため、実施の形態１とは異なり、本確認処理において誤りが検出されることはない。また、ビット列操作部１１１によるビット列操作結果とは異なる形で記憶部１６０に記憶されたデータのビット列に誤りが生じた場合においても、第３判定結果で誤りが検出されるか誤り訂正不能であると判定され読み込みエラーがホスト装置に返されるか、または誤り訂正可能な範囲であると判定され上記誤りが訂正されるため、実施の形態１とは異なり、本確認処理において誤りが検出されることはない。なお、誤り検出符号に代えて誤り訂正符号を用いた場合、第５判定結果として誤り訂正処理が可能である旨の結果を確認するが、前述の理由により第５判定結果には誤りが存在しない。このため、第５判定結果後の誤り訂正処理を省略することができる。具体的には、第５判定結果を取得するために読込み部２１５が第１判定部１２２に所定のデータを送信する処理、および、第５判定結果の確認を読込み部２１５が行う処理を、省略してもよい。
【０１０３】
また、読込み部２１５は、第１判定部１２２から取得したビット列復元操作後のデータのうち第１データの配置個所に対応するデータをマジックナンバーとみなして、特殊データ識別情報を判別する。読込み部２１５は、判別した特殊データ識別情報に応じた所定の応答を読込み応答として、ホストインタフェース部２３０に送信する。
【０１０４】
（動作）
次に、実施の形態２における処理手順の一例について、図面を参照して詳細に説明する。図１１は、実施の形態２における書込み処理の一例を示す。図１２は、実施の形態２における特殊データ設定処理の一例を示す。図１３は、実施の形態２における読込み処理の一例を示す。
【０１０５】
・書込み処理
まず、実施の形態２における書込み処理の一例を、図１１を参照して詳細に説明する。図１１に示すように、書込み処理では、まず、ホスト装置からの書込み要求に対して、第１誤り検出符号を生成する（ステップＳ４０１）。より詳細には、ホストインタフェース部２３０は、ホスト装置から書込み要求を受け付ける。書込み要求には、論理アドレス情報と、書込み対象データとが含まれる。ホストインタフェース部２３０は、ホスト装置から書込み要求を受け付けると、受け付けた書込み要求を書込み部２１４に送信する。書込み部２１４は、ホストインタフェース部２３０から書込み要求を受け付けると、この受け付けた書込み要求から書込み対象データを抽出する。つづいて、書込み部２１４は、抽出した書込み対象データを、第１生成部１２１に送信する。なお、第１生成部１２１に送信するデータには、書込み対象データ以外のデータがさらに含まれていてもよい。たとえば、書込み要求から抽出した論理アドレス情報を示すビット列や、所定のビット列がさらに含まれていてもよい。第１生成部１２１は、要求元である書込み部２１４から、第１誤り検出符号の生成のもとになる書込み対象データを受け付けると、受け付けた書込み対象データから、所定の方法に基づき、誤り検出符号を生成する。生成された第１誤り検出符号は、第１生成部１２１から要求元である書込み部２１４に送信される。その後、書込み部２１４は、書込み対象データに対応する第１誤り検出符号を第１生成部１２１から取得する。なお、以降の説明を含め、誤り検出符号を誤り訂正符号と読み替えてもよい。
【０１０６】
つぎに、第２誤り検出符号を生成する（ステップＳ４０２）。より詳細には、書込み部２１４は、抽出した書込み対象データと取得した第１誤り検出符号とを、第２生成部２２１に送信する。なお、第２生成部２２１に送信するデータには、書込み対象データおよび第１誤り検出符号以外のデータがさらに含まれていてもよい。たとえば、書込み要求から抽出した論理アドレス情報を示すビット列や、所定のビット列がさらに含まれていてもよい。第２生成部２２１は、要求元である書込み部２１４から、第２誤り検出符号の生成のもとになる書込み対象データおよび第１誤り検出符号を受け付けると、これらのビット列から、所定の方法に基づき、第２誤り検出符号を生成する。生成された第２誤り検出符号は、第２生成部２２１から要求元である書込み部２１４に送信される。その後、書込み部２１４は、書込み対象データおよび第１誤り検出符号に対応する第２誤り検出符号を第２生成部２２１から取得する。なお、第２誤り検出符号の生成方法を第１誤り検出符号の生成方法と同じにする場合、第２生成部２２１の代わりに第１生成部１２１を用いて第２誤り検出符号を生成してもよい。この場合、第２生成部２２１は省略できる。
【０１０７】
つぎに、抽出した書込み対象データと、取得した第１および第２誤り検出符号とを、記憶部１６０内の記憶領域１６１に書き込み（ステップＳ４０３）、その後、書込み処理を終了する。より詳細には、書込み部２１４は、書込み要求から論理アドレス情報を抽出する。書込み部２１４は、抽出した論理アドレス情報に対応する記憶部１６０の記憶領域１６１に、同じく抽出した書込み対象データと取得した第１および第２誤り検出符号とを書き込むように、アクセス部１５０に指示する。アクセス部１５０は、書込み部２１４から入力された書込み対象データと第１および第２誤り検出符号とを、同じく書込み部２１４から入力された論理アドレス情報に対応する記憶部１６０の記憶領域１６１に書き込む。なお、図１０を用いて説明したように、書込み対象データは、記憶領域１６１内のユーザデータ記憶領域１６２に記憶される。また、第１誤り検出符号は、同記憶領域１６１内の冗長領域１６３における第１冗長領域１６３ａに記憶され、第２誤り検出符号は、同冗長領域１６３における第２冗長領域１６３ｂに記憶される。ただし、これに限るものではない。
【０１０８】
・特殊データ設定処理
次に、実施の形態２における特殊データ設定処理の一例を、図１２を参照して詳細に説明する。図１２に示すように、特殊データ設定処理では、まず、ホスト装置からの特殊データ設定要求に対して、マジックナンバーを含む特殊データ３２を生成する（ステップＳ５０１）。より詳細には、ホストインタフェース部２３０は、特殊データ設定要求を受け付ける。特殊データ設定要求には、書込み先の論理アドレス情報と、所定の応答の種別を識別する特殊データ識別情報とが含まれる。ホストインタフェース部２３０は、ホスト装置から特殊データ設定要求を受け付けると、受け付けた特殊データ設定要求を特殊データ設定部２１３に送信する。特殊データ設定部２１３は、ホストインタフェース部２３０から特殊データ設定要求を受け付けると、特殊データ設定要求から特殊データ識別情報を抽出する。つづいて、特殊データ設定部２１３は、抽出した特殊データ識別情報に応じたビット列のマジックナンバーを含む特殊データ３２を生成する。特殊データ３２の生成方法は、特殊データ設定部１１３と同様である。
【０１０９】
つぎに、生成した特殊データ３２を用いて、第１誤り検出符号を生成する（ステップＳ５０２）。より詳細には、特殊データ設定部２１３は、生成した特殊データ３２を第１生成部１２１に送信する。なお、第１生成部１２１に送信するデータには、特殊データ３２以外のデータがさらに含まれていてもよい。たとえば、特殊データ設定要求から抽出した論理アドレス情報を示すビット列や、所定のビット列がさらに含まれていてもよい。第１生成部１２１は、要求元である特殊データ設定部２１３から特殊データ３２を受け付けると、この受け付けた特殊データ３２から、所定の方法に基づき、第１誤り検出符号を生成する。生成された第１誤り検出符号は、第１生成部１２１から要求元である特殊データ設定部２１３に送信される。これにより、特殊データ設定部２１３は、生成した特殊データ３２のビット列に対応する第１誤り検出符号を取得する。
【０１１０】
つぎに、生成した特殊データ３２および取得した第１誤り検出符号よりなる操作対象データにおける所定のビットの値を操作する（ステップＳ５０３）。より詳細には、特殊データ設定部２１３は、生成した特殊データ３２と取得した第１誤り検出符号とを操作対象データとして、ビット列操作部１１１に送信する。ビット列操作部１１１は、要求元である特殊データ設定部２１３から、操作対象データを受け付けると、上述したように、所定の規則に従って、受け付けた操作対象データのビット列を操作する。その後、ビット列操作部１１１は、ビット列操作後の操作対象データを、要求元である特殊データ設定部２１３に送信する。これにより、特殊データ設定部２１３が、ビット列操作後の特殊データ３２および第１誤り検出符号を取得する。なお、上述したように、誤り検出符号を誤り訂正符号に置き換えてもよい。
【０１１１】
つぎに、ビット列操作後の特殊データ３２および第１誤り検出符号から、第２誤り検出符号を生成する（ステップＳ５０４）。より詳細には、特殊データ設定部２１３は、ビット列操作後の特殊データ３２および第１誤り検出符号を、第２生成部２２１に送信する。なお、第２生成部２２１に送信するデータには、取得したビット列操作後の特殊データ３２および第１誤り検出符号以外のデータがさらに含まれていてもよい。たとえば、特殊データ設定要求から抽出した論理アドレス情報を示すビット列や、所定のビット列がさらに含まれていてもよい。第２生成部２２１は、要求元である特殊データ設定部２１３から、ビット列操作後の特殊データ３２および第１誤り検出符号を受け付けると、この受け付けた特殊データ３２および第１誤り検出符号から、所定の方法に基づき、第２誤り検出符号を生成する。生成された第２誤り検出符号は、第２生成部２２１から要求元である特殊データ設定部２１３に送信される。これにより、特殊データ設定部２１３は、ビット列操作後の特殊データ３２および第１誤り検出符号に対応する第２誤り検出符号を取得する。なお、第２誤り検出符号の生成方法を、第１誤り検出符号の生成方法と同じにする場合、第１生成部１２１で、第２生成部２２１の機能を代用してもよい。
【０１１２】
つぎに、ビット列操作後の特殊データ３２および第１誤り検出符号と、取得した第２誤り検出符号とを、記憶部１６０内の記憶領域１６１に書き込み（ステップＳ５０５）、その後、書込み処理を終了する。より詳細には、特殊データ設定部２１３は、特殊データ設定要求から論理アドレス情報を抽出する。特殊データ設定部２１３は、抽出した論理アドレス情報に対応する記憶部１６０の記憶領域１６１に、ビット列操作後の特殊データ３２および第１誤り検出符号と、取得した第２誤り検出符号とを書き込むように、アクセス部１５０に指示する。アクセス部１５０は、ビット列操作後の特殊データ３２および第１誤り検出符号と、取得した第２誤り検出符号とを、抽出した論理アドレス情報に対応する記憶部１６０の記憶領域１６１に書き込む。なお、ビット列操作後の特殊データ３２は、ユーザデータ記憶領域１６２に記憶される。また、図１０に示すように、ビット列操作後の第１誤り検出符号は、冗長領域１６３における第１冗長領域１６３ａに記憶され、第２誤り検出符号は、同冗長領域１６３における第２冗長領域１６３ｂに記憶される。ただし、これに限定されるものではない。
【０１１３】
・読込み処理
次に、実施の形態２における読込み処理の一例を、図１３を参照して詳細に説明する。図１３に示すように、読込み処理では、まず、ホスト装置からの読込み要求に応じて、記憶部１６０からデータを読み込む（ステップＳ６０１）。より詳細には、ホストインタフェース部２３０は、ホスト装置から読込み要求を受け付ける。読込み要求には、読込み対象データの格納先を示す論理アドレス情報が含まれる。ホストインタフェース部２３０は、ホスト装置から読込み要求を受け付けると、受け付けた読込み要求を読込み部２１５に送信する。読込み部２１５は、ホストインタフェース部２３０から読込み要求を受け付けると、受け付けた読込み要求から論理アドレス情報を抽出する。その後、読込み部２１５は、抽出した論理アドレス情報が示す論理アドレスに対応する記憶部１６０の記憶領域１６１に記憶されているデータを読み込むように、アクセス部１５０に指示する。アクセス部１５０は、読込み部２１５から入力された論理アドレス情報が示す論理アドレスに対応する記憶部１６０の記憶領域１６１に記憶されているデータを読込み、これを読込み部２１５に返答する。これにより、読込み部２１５が読込み対象データを取得する。
【０１１４】
つぎに、読み込んだデータに対し、第２誤り検出符号を用いた誤り検出処理を実行する（ステップＳ６０２）。より詳細には、読込み部２１５は、読み込んだデータのうち、第１データおよび第２データを誤り検出対象データとして、また、第３データを第２誤り検出符号として、第２判定部２２２に送信する。ここで、書込み部２１４および特殊データ設定部２１３が第２生成部２２１に送信するデータに第１および第２データ以外のデータをさらに含ませていた場合、そのさらに含ませていたデータについても第２判定部２２２に送信する。たとえば、書込み要求または特殊データ設定要求に含まれる論理アドレス情報を示すビット列をさらに含ませていた場合、前記読込み要求から抽出した論理アドレス情報を示すビット列をさらに第２判定部２２２に送信する。また、たとえば所定のビット列をさらに含ませていた場合、所定のビット列をさらに第２判定部２２２に送信する。第２判定部２２２は、要求元である読込み部２１５から、第１および第２データを受け付けると、所定の方法に基づき、受け付けた第１および第２データに誤りが存在するか否かを判定する。その後、第２判定部２２２は、この判定結果（第３判定結果）を要求元である読込み部１２５に送信する。これにより、読込み部２１５が第２判定部２２２から送信された第３判定結果を取得する。なお、上述したように、誤り検出符号を誤り訂正符号と読み替えてもよい。
【０１１５】
つぎに、ステップＳ６０２による誤り判定処理の結果として誤りが検出されたか否かを判定する（ステップＳ６０３）。より詳細には、第２判定部２２２から取得した第３判定結果が誤りが検出された旨の結果であった場合（ステップＳ６０３のＹＥＳ）、ステップＳ６０４に進む。一方、取得した第３判定結果が誤りが検出されなかった旨の結果であった場合（ステップＳ６０３のＮＯ）、ステップＳ６０５に進む。なお、誤り検出符号に代えて誤り訂正符号を用いた場合、読込み部２１５は、第３判定結果が誤り訂正処理が不能である旨の結果であれば（ステップＳ６０３のＹＥＳ）、ステップＳ６０４に進み、第３判定結果が誤り訂正処理が可能である旨の結果であれば（ステップＳ６０３のＮＯ）、ステップＳ６０５に進む。
【０１１６】
ステップＳ６０４では、ホスト装置からの読込み要求に対して読込みエラーを送信する。より詳細には、読込み部２１５は、読込みエラーを示す読込み状態情報を読込み応答として、ホストインタフェース部２３０に送信する。ホストインタフェース部２３０は、読込み部２１５から読込み応答を受け付けると、ホスト装置に読込みエラーを送信し、その後、読込み処理を終了する。
【０１１７】
ステップＳ６０５では、読み込んだデータのうち第１データおよび第２データに対し、第２データである第１誤り検出符号を用いた誤り検出処理を実行する。より詳細には、読込み部２１５は、読み込まれたデータのうち、第１データを誤り検出対象データとして、また、第２データを第１誤り検出符号として、第１判定部１２２に送信する。なお、第２生成部２２１が生成する誤り検出符号に代えて誤り訂正符号を用いた場合、読込み部２１５は、第１および第２データの誤りを訂正する。以降、誤りが訂正された第１および第２データを第１誤り訂正済みデータと呼ぶ。また、読込み部２１５は、第１誤り訂正済みデータのうち、第１データを誤り検出対象データとして、また、第２データを第１誤り検出符号として、第１判定部１２２に送信する。ここで、書込み部２１４および特殊データ設定部２１３が第１生成部１２１に送信するデータに第１データ以外のデータをさらに含ませていた場合、そのさらに含ませていたデータについても第１判定部１２２に送信する。たとえば、書込み要求または特殊データ設定要求に含まれる論理アドレス情報を示すビット列をさらに含ませていた場合、読込み要求から抽出した論理アドレス情報を示すビット列をさらに第１判定部１２２に送信する。また、たとえば所定のビット列をさらに含ませていた場合、所定のビット列をさらに第１判定部１２２に送信する。第１判定部１２２は、要求元である読込み部２１５から、誤り検出対象データおよび第１誤り検出符号を受け付けると、所定の方法に基づき、受け付けた誤り検出対象データおよび第１誤り検出符号に誤りが存在するか否かを判定する。その後、第１判定部１２２は、この判定結果（第４判定結果）を要求元である読込み部２１５に送信する。なお、上述したように、誤り検出符号を誤り訂正符号と読み替えてもよい。
【０１１８】
つぎに、ステップＳ６０５による誤り判定処理の結果として誤りが検出されたか否かを判定する（ステップＳ６０６）。より詳細には、第１判定部１２２から取得した第４判定結果が誤りが検出されなかった旨の結果であった場合（ステップＳ６０６のＮＯ）、ステップＳ６０７に進む。一方、取得した第４判定結果が誤りが検出された旨の結果であった場合（ステップＳ６０６のＹＥＳ）、ステップＳ６０８に進む。なお、誤り検出符号に代えて誤り訂正符号を用いた場合、読込み部２１５は、第４判定結果が誤り訂正処理が可能である旨の結果であれば（ステップＳ６０６のＮＯ）、ステップＳ６０７に進み、第４判定結果が誤り訂正処理が不能である旨の結果であれば（ステップＳ６０６のＹＥＳ）、ステップＳ６０８に進む。
【０１１９】
ステップＳ６０７では、ステップＳ６０１で読み込んだデータを読込み応答としてホスト装置へ送信する。より詳細には、読込み部２１５は、ステップＳ６０１で読み込んだデータのうち第１データを読込み応答として、ホストインタフェース部２３０に送信する。なお、第２生成部２２１が生成する誤り検出符号に代えて誤り訂正符号を用いた場合、前述したように、読込み部２１５は、読み込んだデータの誤りを訂正して第１誤り訂正済みデータを得る。したがって、読込み部２１５は、第１誤り訂正済みデータのうち第１データを読込み応答として、ホストインタフェース部２３０に送信する。ホストインタフェース部２３０は、読込み部２１５から読込み応答を受け付けると、ホスト装置にこの読込み応答を送信し、その後、読込み処理を終了する。
【０１２０】
また、ステップＳ６０８では、ステップＳ６０１で読み込んだデータのビット列を復元操作する。より詳細には、読込み部２１５は、ステップＳ６０５で取得した第４判定結果が誤りが検出された旨の結果であった場合、ステップＳ６０１で読み込んだデータのうち第１および第２データを、ビット列復元部１１２に送信する。なお、第２生成部２２１が生成する誤り検出符号に代えて誤り訂正符号を用いた場合、読込み部２１５は、第４判定結果が誤り訂正処理が不能である旨の結果であれば、第１誤り訂正済みデータのうち第１および第２データを、ビット列復元部１１２に送信する。ビット列復元部１１２は、要求元である読込み部２１５から、復元操作対象の第１および第２データを受け付けると、上述したように、このデータのビット列の復元操作を実行する。その後、ビット列復元部１１２は、ビット列復元操作後のデータを、要求元である読込み部２１５に送信する。これにより、読込み部２１５が、ビット列復元操作後のデータを取得する。なお、上述したように、誤り検出符号を誤り訂正符号と読み替えることも可能である。
【０１２１】
つぎに、ビット列復元操作後のデータに対し、第１誤り検出符号を用いた誤り検出処理を実行する（ステップＳ６０９）。より詳細には、読込み部２１５は、ビット列復元部１１２から取得したビット列復元操作後のデータのうち第１データの配置個所に対応するデータを誤り検出対象データとして、また、第２データの配置個所に対応するデータを第１誤り検出符号として、第１判定部１２２に送信する。ここで、書込み部２１４および特殊データ設定部２１３が第１生成部１２１に送信するデータに第１データ以外のデータをさらに含ませていた場合、そのさらに含ませていたデータについても第１判定部１２２に送信する。たとえば、書込み要求または特殊データ設定要求に含まれる論理アドレス情報を示すビット列をさらに含ませていた場合、読込み要求から抽出した論理アドレス情報を示すビット列をさらに第１判定部１２２に送信する。また、たとえば所定のビット列をさらに含ませていた場合、所定のビット列をさらに第１判定部１２２に送信する。第１判定部１２２は、要求元である読込み部２１５から、誤り検出対象データおよび第１誤り検出符号を受け付けると、所定の方法に基づき、受け付けた誤り検出対象データおよび第１誤り検出符号に誤りが存在するか否かを判定する。その後、第１判定部１２２は、この判定結果（第５判定結果）を要求元である読込み部２１５に送信する。なお、上述したように、誤り検出符号を誤り訂正符号と読み替えてもよい。
【０１２２】
つぎに、ステップＳ６０９で取得した第５判定結果において誤りが検出されていないことを確認する（ステップＳ６１０）。より詳細には、読込み部２１５は、第１判定部１２２から取得した第５判定結果が誤りが検出されなかった旨の結果であることを確認する。なお、第１生成部１２１が生成する誤り検出符号に代えて誤り訂正符号を用いた場合、読込み部２１５は、第５判定結果が誤り訂正処理が可能である旨の結果であることを確認する。また、上述したように、第５判定結果を取得するために読込み部２１５が第１判定部１２２に送信する処理（ステップＳ６０９）、および、第５判定結果の確認を読込み部２１５が行う処理（ステップＳ６１０）は、省略してもよい。
【０１２３】
つぎに、ステップＳ６０８のビット列復元操作によって得られた特殊データ３２におけるマジックナンバー３２ａに従って所定の応答を実行する（ステップＳ６１１）。より詳細には、読込み部２１５は、ステップＳ６０８で取得したビット列復元操作後のデータのうち第１データの配置個所に対応するデータの所定ビットをマジックナンバー３２ａとみなして、特殊データ識別情報を判別する。つづいて、読込み部２１５は、判別した特殊データ識別情報に従って、所定の応答を読込み応答として、ホストインタフェース部２３０に送信する。ホストインタフェース部２３０は、読込み部２１５から読込み応答を受け付けると、ホスト装置に所定の応答を読込み応答として送信し、その後、読込み処理を終了する。
【０１２４】
以上のように、構成および動作することで、実施の形態２では、特殊データ３２および第１誤り検出符号に対して第２誤り検出符号が付与される。これにより、一概に誤った動作であるとする必要はないものの、特殊データ３２として記憶部１６０に記憶されたデータのビット列に誤りが生じた結果、偶然、ビット列操作後の前記誤りが生じたビット列が、ビット列復元部１１２によるビット列復元操作後のビット列と同じになる場合、または前記誤りが生じたビット列の誤りが誤り訂正可能な範囲になってしまう場合や、通常のユーザデータとして記憶部１６０に記憶されたデータのビット列に誤りが生じた結果、偶然、前記誤りが生じたデータのビット列が、ビット列操作部１１１によるビット列操作後のビット列と同じになる場合、または、前記誤りが生じたビット列をビット列復元部１１２がビット列復元操作を実行し、そのビット列復元操作後のビット列の誤りが誤り訂正可能な範囲になる場合においては、正確でない応答がホスト装置に返る可能性があることを防止できる。この他の構成、動作および効果は、実施の形態１と同様であるため、ここでは詳細な説明を省略する。
【０１２５】
なお、上述した実施の形態における各動作は、ソフトウエアで実現されても、ハードウエアで実現されてもよい。ソフトウエアで実現する場合、たとえば所定のプログラムをＣＰＵなどの情報処理装置が読み出して実行することで、コントローラ、データ記憶装置およびプログラムが実現される。所定のプログラムは、たとえばＣＤ−ＲＯＭやＤＶＤ−ＲＯＭやフラッシュメモリなどの記録媒体に記録されていてもよいし、ネットワークに接続された記録装置に記録されていてもよい。情報処理装置は、この所定のプログラムを読み出すか、ダウンロードして実行する。
【０１２６】
また、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。
【符号の説明】
【０１２７】
１１、２１  操作対象データ、  １２  特殊データ、  １３  誤り検出符号、  １３Ａ  誤りを含む誤り検出符号、  １３ａ  操作対象のビット、  ２３  誤り訂正符号、  ２３Ａ  誤りを含む誤り訂正符号、  ２３ａ  操作対象のビット群、  １００、２００  データ記憶装置、  １１０、２１０  コントローラ、  １１１  ビット列操作部、  １１２  ビット列復元部、  １１３、２１３  特殊データ設定部、  １１４、２１４  書込み部、  １１５、２１５  読込み部、  １２１  第１生成部、  １２２  第１判定部、  １３０、２３０  ホストインタフェース部、  １４０  データバス、  １５０  アクセス部、  １６０  記憶部、  １６１  記憶領域、  １６２  ユーザデータ記憶領域、  １６３  冗長領域、  １６３ａ  第１冗長領域、  １６３ｂ  第２冗長領域、  ２２１  第２生成部、  ２２２  第２判定部
【図１】
0005269932.tif 000002
【図２】
0005269932.tif 000003
【図３Ａ】
0005269932.tif 000004
【図３Ｂ】
0005269932.tif 000005
【図３Ｃ】
0005269932.tif 000006
【図４Ａ】
0005269932.tif 000007
【図４Ｂ】
0005269932.tif 000008
【図４Ｃ】
0005269932.tif 000009
【図５】
0005269932.tif 000010
【図６】
0005269932.tif 000011
【図７】
0005269932.tif 000012
【図８】
0005269932.tif 000013
【図９】
0005269932.tif 000014
【図１０】
0005269932.tif 000015
【図１１】
0005269932.tif 000016
【図１２】
0005269932.tif 000017
【図１３】
0005269932.tif 000018