(57)【特許請求の範囲】
【請求項１】
主データである第１のデータと、前記第１のデータとは異なり前記主データと関連する付加データである第２のデータとを組み合わせたデータの統合パリティデータを生成するエンコーダと、
前記統合パリティデータを使用して、前記第１及び第２のデータのそれぞれのエラーを検出するデコーダとを具備し、
前記エンコーダは、
所定の規則性を有するパリティ生成用の第１の行列を使用して前記第１のデータのパリティデータを生成する第１の生成手段と、
前記第１の行列とは排他的で異なる規則性を有するパリティ生成用の第２の行列を使用して、前記第２のデータのパリティデータを生成する第２の生成手段と、
前記第１及び第２の生成手段により生成される各パリティデータを入力とする排他的論理和演算により算出される前記統合パリティデータを生成する第３の生成手段と
を含む符号化・復号化装置。
【請求項２】
前記デコーダは、
前記統合パリティデータを使用して前記第１の行列に対応する第１の検査行列に基づいて前記第１のデータからエラーを検出し、
前記統合パリティデータを使用して前記第２の行列に対応する第２の検査行列に基づいて前記第２のデータからエラーを検出する請求項１に記載の符号化・復号化装置。
【請求項３】
請求項１に記載の符号化・復号化装置を有するデータ記憶装置であって、
前記第１のデータであるユーザデータ、前記第２のデータであるエキストラデータ、及び前記統合パリティデータを記憶する記憶デバイスと、
前記記憶デバイスから読み出した前記ユーザデータまたは前記エキストラデータを外部に出力するインターフェースと
を具備するデータ記憶装置。
【請求項４】
前記デコーダは、前記記憶デバイスから読み出された前記ユーザデータ及び前記エキストラデータのそれぞれのエラーを検出し、
前記デコーダにより検出される各エラーを訂正するエラー訂正手段を有する請求項３に記載のデータ記憶装置。
【請求項５】
前記記憶デバイスに対して、前記ユーザデータに前記統合パリティデータを付加したデータを記憶し、
前記記憶デバイスに対して、前記エキストラデータを前記ユーザデータとは管理の異なる記憶領域に記憶するように制御する制御手段を含む請求項３に記載のデータ記憶装置。
【請求項６】
所定の規則性を有するパリティ生成用の第１の行列を使用して、主データである第１のデータのパリティデータを生成し、
前記第１の行列とは排他的で異なる規則性を有するパリティ生成用の第２の行列を使用して、前記第１のデータとは異なり前記主データと関連する付加データである第２のデータのパリティデータを生成し、
生成される第１及び第２のパリティデータを入力とする排他的論理和演算により算出される統合パリティデータを生成し、
前記統合パリティデータを使用して、前記第１及び第２のデータのそれぞれのエラーを検出する符号化・復号化方法。
【請求項７】
前記統合パリティデータを使用して、前記第１及び第２のデータのそれぞれのエラーを検出する場合に、
前記第１の行列に対応する第１の検査行列に基づいて前記第１のデータからエラーを検出し、
前記第２の行列に対応する第２の検査行列に基づいて前記第２のデータからエラーを検出する請求項６に記載の符号化・復号化方法。
【請求項８】
前記第１のデータはデータ記憶装置の記憶デバイスに記憶されるユーザデータであり、
前記第２のデータは前記ユーザデータと共に前記記憶デバイスに記憶されるエキストラデータである請求項６に記載の符号化・復号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データ記憶装置に適用可能な符号化・復号化装置に関する。
【背景技術】
【０００２】
一般的に、データ記憶装置や通信装置では、データの誤り検出・訂正を行なう誤り訂正機能が組み込まれている。この誤り訂正機能を実現する代表的な方法として、ハミング符号を使用する符号化・復号化方法が周知である。
【０００３】
符号化・復号化方法は、例えばデータ記憶装置に記憶されるユーザデータ（情報ビット列）のパリティデータを生成する符号化（encoding）と、パリティデータを使用してユーザデータからエラーを検出する復号化（decoding）とからなる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１４１４１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
符号化・復号化方法を採用する符号化・復号化装置により、データ記憶装置に記憶されるユーザデータに発生するエラーを検出し、かつエラーを訂正することが可能である。ところで、データ記憶装置では、記憶媒体に記憶するデータとして、主データであるユーザデータだけでなく、例えばアドレスデータや各種の管理データなどのユーザデータ以外の関連データ（以下、エキストラデータ：extra dataと表記する）が取り扱われる。
【０００６】
エキストラデータについても、符号化・復号化装置によりエラー検出訂正処理が行なわれることが望ましい。しかしながら、エキストラデータについて、ユーザデータとは独立に符号化・復号化を行なう場合に、符号化・復号化装置の処理効率の低下や構成の複雑化を招く可能性が高い。
【０００７】
そこで、本発明の目的は、主データと共にエキストラデータについても符号化・復号化を実現できる符号化・復号化装置を提供することにある。
【課題を解決するための手段】
【０００８】
実施形態によれば、符号化・復号化装置は、主データである第１のデータと、前記第１のデータとは異なり前記主データと関連する付加データである第２のデータとを組み合わせたデータの統合パリティデータを生成するエンコーダと、前記統合パリティデータを使用して、前記第１及び第２のデータのそれぞれのエラーを検出するデコーダとを具備する。前記エンコーダは、第１の生成手段と、第２の生成手段と、第３の生成手段とを含む。前記第１の生成手段は、所定の規則性を有するパリティ生成用の第１の行列を使用して前記第１のデータのパリティデータを生成する。前記第２の生成手段は、前記第１の行列とは排他的で異なる規則性を有するパリティ生成用の第２の行列を使用して、前記第２のデータのパリティデータを生成する。前記第３の生成手段は、前記第１及び第２の生成手段により生成される各パリティデータを入力とする排他的論理和演算により算出される前記統合パリティデータを生成する。
【図面の簡単な説明】
【０００９】
【図１】実施形態に関する符号化・復号化装置の構成を説明するためのブロック図。
【図２】実施形態に関するディスクドライブの要部を示すブロック図。
【図３】実施形態に関するＳＳＤの要部を示すブロック図。
【図４】実施形態に関する検査行列の構成を説明するための図。
【図５】実施形態に関するロジックモジュールの構成を説明するためのブロック図。
【図６】実施形態に関するエンコーダの動作を説明するためのフローチャート。
【図７】実施形態に関するデコーダの動作を説明するためのフローチャート。
【発明を実施するための形態】
【００１０】
以下図面を参照して、実施形態を説明する。
【００１１】
［符号化・復号化装置の構成］
図１は本実施形態の符号化・復号化装置の構成を説明するためのブロック図である。
【００１２】
図１に示すように、符号化・復号化装置１０は、エンコーダ１１と、デコーダ１５と、エラー訂正モジュール１６とを有し、例えば１チップの集積回路により構成されている。本実施形態では、符号化・復号化装置１０は、後述するように、ハードディスクドライブやＳＳＤ（solid state drive）などのデータ記憶装置に適用する場合について説明する。
【００１３】
エンコーダ１１は、入力データとして、ユーザデータ１００及びエキストラデータ（extra data）２００を入力し、ハミング（Hamming）符号化方法による符号化処理を実行する。エンコーダ１１は、ユーザデータ用パリティ演算モジュール（第１のパリティ演算モジュール）１２と、エキストラデータ用パリティ演算モジュール（第２のパリティ演算モジュール）１３と、排他的オアゲート（exclusive OR gate、ＸＯＲゲートと表記する）１４とを有する。
【００１４】
図６のフローチャートを参照して、エンコーダ１１の符号化処理を説明する。エンコーダ１１は、入力データとして、ユーザデータ１００及びエキストラデータ２００を入力する（ブロック６００）。ここで、ユーザデータ１００は、例えばホストシステムから転送されて、ストレージモジュール２０の記憶媒体に保存される主データである。エキストラデータ２００は、ユーザデータ１００と関連する付加データであり、例えば論理ブロックアドレス（ＬＢＡ）データや、データ記憶装置のシステム上の管理データなどである。
【００１５】
第１のパリティ演算モジュール１２は、所定の生成行列（generator matrix）を使用して、ユーザデータ１００のパリティデータを生成する（ブロック６０１）。第２のパリティ演算モジュール１３は、第１のパリティ演算モジュール１２の生成行列とは異なる生成行列を使用して、エキストラデータ２００のパリティデータを生成する（ブロック６０２）。
【００１６】
ＸＯＲゲート１４は、第１及び第２のパリティ演算モジュール１３，１４から出力される各パリティデータを入力とする排他的論理和演算を実行し、統合パリティデータ３００を算出する（ブロック６０３）。即ち、統合パリティデータ３００は、ユーザデータ１００とエキストラデータ２００とを組み合わせたデータのパリティデータである。
【００１７】
ストレージモジュール２０は、データ記憶装置のメイン要素であり、ユーザデータ１００、エキストラデータ２００及び統合パリティデータ３００を記憶媒体に格納する（ブロック６０４）。この場合、ストレージモジュール２０では、ユーザデータ１００の記憶媒体のユーザエリアに格納される。エキストラデータ２００は、記憶媒体のシステムエリアに格納される。また、統合パリティデータ３００は、ユーザデータ１００と共にユーザエリアに格納される。
【００１８】
デコーダ１５は、ストレージモジュール２０からユーザデータ１００、エキストラデータ２００及び統合パリティデータ３００を入力し、生成行列に対応する所定の検査行列（check matrix）またはその転置行列（transposed matrix）を使用して、エラー検出処理を実行する。
【００１９】
図７のフローチャートを参照して、デコーダ１５の復号化処理およびエラー訂正処理を説明する。
【００２０】
デコーダ１５は、ストレージモジュール２０からユーザデータ１００、エキストラデータ２００及び統合パリティデータ３００を入力する（ブロック７００）。デコーダ１５は、統合パリティデータ３００を使用し、後述する検査行列４００に基づいて、ユーザデータ１００及びエキストラデータ２００のエラーの有無を判定し、エラーを検出する（ブロック７０１）。デコーダ１５は、エラー判定によりエラー検出を示すフラグ１５１を出力する。さらに、デコーダ１５は、シンドローム（syndrome）演算を実行する。デコーダ１５は、シンドローム演算により、ユーザデータ１００及びエキストラデータ２００のそれぞれのエラー位置（エラーアドレス）を示すシンドローム１５０を生成する（ブロック７０２）。
【００２１】
エラー訂正モジュール１６は、デコーダ１５からのフラグ１５１に応じて、デコーダ１５からのシンドローム１５０に基づいてユーザデータ１００及びエキストラデータ２００に存在するエラーを訂正して出力する（ブロック７０３，７０４）。
【００２２】
なお、本実施形態では、前記生成行列、それに対応する検査行列、及び検査行列の転置行列のいずれも便宜的に検査行列と呼ぶ。
【００２３】
さらに、符号化・復号化装置１０において、エキストラデータ２００の受け渡し処理は、ユーザデータ１００と同じデータバスを使用してもよい。この場合、エキストラデータ２００を示す信号または内部カウンタを利用することにより、ユーザデータ１００とエキストラデータ２００とを判別することが必要である。また、エキストラデータ２００がユーザデータ１００とは異なるデータバスで伝送する場合、第１及び第２のパリティ演算モジュール１３，１４の並列動作が可能である。また、ユーザデータ１００を全て受け渡す前にエキストラデータ２００が確定されていれば、ユーザデータ１００のパリティ演算中にエキストラデータ２００のパリティ計算を完了できる。これにより、ユーザデータ１００のパリティ演算終了と共にエキストラデータ２００のパリティデータを出力できるため、エキストラデータ２００のパリティ演算サイクルは必要ない。
【００２４】
（データ記憶装置の構成）
図２及び図３は、本実施形態の符号化・復号化装置１０を適用し、ストレージモジュール２０を含むデータ記憶装置の具体例を説明するための図である。図２は、データ記憶装置としてハードディスクドライブ（ＨＤＤ）の要部を示すブロック図である。図３は、データ記憶装置としてＳＳＤ（solid state drive）の要部を示すブロック図である。
【００２５】
図２に示すように、ＨＤＤは大別して、ヘッド・ディスクアセンブリ（head-disk assembly：ＨＤＡ）、ヘッドアンプ集積回路（以下、ヘッドアンプＩＣ）２５と、回路基板２６とから構成されている。ＨＤＡは、記憶媒体であるディスク２１と、ヘッド２２を搭載しているアーム２３と、ボイスコイルモータ（ＶＣＭ）２４とを有する。
【００２６】
ディスク２０は、スピンドルモータ（ＳＰＭ）より回転する。アーム２３とＶＣＭ２４は、アクチュエータを構成している。アクチュエータは、ＶＣＭ２４の駆動により、アーム２３に搭載されているヘッド２２をディスク２０上の指定の位置まで移動制御する。ヘッド２２は、リードヘッド素子及びライトヘッド素子を有する。リードヘッド素子は、ディスク２０上に記録されているデータを読み出す。ライトヘッド素子は、ディスク２０上にデータを書き込む。
【００２７】
ヘッドアンプＩＣ２５は、リードアンプ及びライトドライバを有する。リードアンプは、リードヘッド素子により読み出されたリード信号を増幅して、リード／ライト（Ｒ／Ｗ）チャネル２７に伝送する。一方、ライトドライバは、Ｒ／Ｗチャネル２７から出力されるライトデータに応じたライト電流をライトヘッド素子に伝送する。
【００２８】
回路基板２６は、Ｒ／Ｗチャネル２７と、ディスクコントローラ２８と、マイクロプロセッサ（ＣＰＵ）２９とを含む。Ｒ／Ｗチャネル２７は、リードデータの信号処理を実行するリードチャネルと、ライトデータの信号処理を実行するライトチャネルとを含む。ＣＰＵ２９は、ドライブのメインコントローラであり、ヘッド２２の位置決めを行なうサーボ制御及びデータのリード／ライト制御を実行する。
【００２９】
ディスクコントローラ２８は、ホストシステムとＲ／Ｗチャネル２７との間のデータ転送を制御するインターフェース制御を実行する。ディスクコントローラ２８は、本実施形態の符号化・復号化装置１０であるモジュールを含む。なお、図１に示すストレージモジュール２０は、記憶媒体としてディスク２０以外にＤＲＡＭからなるバッファメモリも含む。
【００３０】
図３に示すように、ＳＳＤは大別して、ＳＳＤコントローラ３０と、フラッシュメモリモジュール３１とから構成されている。ＳＳＤコントローラ３０は、ホストシステムに含まれるホストデバイス（インターフェースコントローラ）３２との間のデータ転送を制御し、かつフラッシュメモリモジュール３１に対するデータのリード／ライト制御を実行する。なお、図１に示すストレージモジュール２０は、記憶媒体としてフラッシュメモリモジュール３１以外にＤＲＡＭからなるバッファメモリも含む。
【００３１】
［符号化・復号化処理］
以下、図４から図７を参照して、本実施形態の符号化・復号処理を具体的に説明する。
【００３２】
図４は、符号化・復号化装置１０の符号化・復号化処理で使用される検査行列（転置行列ＨＴ）４００の具体的構成例を示す図である。
【００３３】
図４に示すように、本実施形態の検査行列４００は、ユーザデータ１００に対応する検査行列（検査行列Ａ）４１０と、エキストラデータに対応する検査行列（検査行列Ｂ）４２０と、組織符号の単位行列（（ｍ＋１）＋ｎビット）４３０とから構成されている。これらの検査行列４１０，４２０，４３０は、行列の行成分の全てが排他的であり、１ビット訂正可能なハミング符号の検査行列として構成されている。
【００３４】
検査行列（Ａ）４１０は、第１のパリティ演算モジュール１２により生成されるパリティデータのビット数がｐビットとすると、まず行列の右からｍ列を使って“α＝２”のｍ乗個の組み合わせ（２ｍ＝αビット）が昇順または降順に配置される。次に、行列の右からｍ＋１列目からｐ列目までのビットの組み合わせが、行の中の“１”の数が２個以上となるように設定される。これにより、αビット（＝２ｍ）のユーザデータ１００に対する検査行列（Ａ）４１０が構成される。
【００３５】
一方、検査行列（Ｂ）４２０は、検査行列（Ａ）４１０の規則とは異なり、排他的な構成であり、エキストラデータ２００に存在するエラー（１ビットのエラー）の位置を検出できるように構成されている。即ち、検査行列（Ｂ）４２０は、αビットのユーザデータ１００とは異なるβビットのエキストラデータ２００に対応する検査行列である。検査行列（Ｂ）４２０は、行列の任意の位置にβ個の組み合わせが昇順または降順に配置される。残りの位置には、検査行列（Ａ）４１０で設定される行列の行と重複しないように、ビットの組み合わせが配置される。
【００３６】
図５は、図４に示す検査行列４００を使用してハミング符号化・復号化処理を行なう符号化・復号化装置１０を具体的に実現するためのロジックモジュールの構成を示すブロック図である。
【００３７】
図５に示すように、ロジックモジュールは、排他的オアゲート（exclusive OR gate、ＸＯＲ）５０、アンドゲート（AND gate）５１、フリップフロップ５２及びノアゲート（NOR gate）５３から構成されている。
【００３８】
アンドゲート５１は、符号化処理（encoding）と復号化処理（decoding）とを切り替えるロジックを構成する。即ち、アンドゲート５１は、入力の一方に統合パリティデータ３００が入力されて、他方に符号化・復号化の一方を指示する信号５００が入力される。ロジックモジュールには、入力データとして例えば１クロックにつき６４ビットのユーザデータ１００及び３６ビットのエキストラデータ２００が入力される。
【００３９】
符号化処理では、アンドゲート５１の他方の入力として、エンコード（encoding）を指示する信号５００（“０”）が入力される。符号化処理では、複数の３３入力ＸＯＲ及び６４入力ＸＯＲを有する入力側回路の構成が、６４ビットのユーザデータ１００と検査行列（Ａ）４１０とのパリティ演算に相当する。また、複数の１８入力ＸＯＲ、１０入力ＸＯＲ、４入力ＸＯＲ、及び３６入力ＸＯＲを有する入力側回路の構成が、３６ビットのエキストラデータ２００と検査行列（Ｂ）４２０とのパリティ演算に相当する。この符号化処理により、例えば１４ビットの統合パリティデータ３００が生成される。
【００４０】
一方、復号化処理では、アンドゲート５１の一方の入力として統合パリティデータ３００が入力されて、他方の入力としてデコード（decoding）を指示する信号５００（“１”）が入力される。この復号化処理により、前述のデコーダ１５によるシンドローム演算が実行されて、ユーザデータ１００及びエキストラデータ２００のそれぞれのエラー位置を示すエラーアドレス（即ちシンドローム）１５０が生成される。また、ノアゲート５３からは、エラー検出を示すフラグ１５１が出力される。
【００４１】
ここで、図４に示すように、本実施形態の検査行列４００において、ユーザデータ１００に対応する検査行列（Ａ）４１０は、行列の右の１ビット目から１２ビット目を使って、２のｍ乗個の組み合わせ（２ｍ＝αビット）が昇順または降順に配置される。また、行列の左からの１ビット目と２ビット目は、行列の右から１ビット目と２ビット目の組み合わせパターンとを合わせて、その４ビット内における“１”の数が２個となるように配置されている。
【００４２】
一方で、エキストラデータ２００に対応する検査行列（Ｂ）４２０は、エキストラデータ２００が３６ビットの場合に、行列の右からの３ビット目から１２ビット目を使って、３６個の組み合わせが昇順または降順に配置される。また、行列の左から１ビット目と２ビット目、及び行列の右から１ビット目と２ビット目の組み合わせは、“１１１１”のパターンになるように、“１”の数が４個となるように配置されている。
【００４３】
要するに、ユーザデータ１００に対応する検査行列（Ａ）４１０とエキストラデータ２００に対応する検査行列（Ｂ）４２０とでは、同じ位置の４ビットは異なる組み合わせ（ビットパターン）となるように設定されている。従って、検査行列（Ｂ）４２０の前記の４ビットの組み合わせは、“１１１１”のパターンではなく、“１”の数が３個となる“１１１０”のパターンでもよい。
【００４４】
以上のように復号化処理おいて、ユーザデータ１００とエキストラデータ２００とでは、それぞれで使用される検査行列の４ビットの組み合わせパターンが明確に異なる。従って、シンドローム演算により、ユーザデータ１００とエキストラデータ２００のいずれかに１ビットのエラーが発生した場合に、当該４ビットの組み合わせパターンに基づいて、いずれのデータのエラーであるかを区別できる。
【００４５】
さらに、デコーダ１５は、算出したシンドローム１５０がエラー位置をそのまま示す。従って、ユーザデータ１００とエキストラデータ２００のどちらにエラーがあっても、シンドローム１５０からエラー位置（エラーアドレス）を算出するための演算は必要ない。例えば、エキストラデータ２００が３６ビットであり、エキストラデータ内に１ビットエラーが発生した場合に、エラーアドレス[7:2]の値がそのままエキストラデータ内のエラー位置を示すことになる。
【００４６】
以上のように本実施形態の符号化・復号化装置であれば、特にデータ記憶装置で取り扱われるユーザデータ１００及びエキストラデータ（関連データ）２００のいずれに対しても、符号化・復号化処理をほぼ同時に実行することができる。具体的には、符号化処理では、ユーザデータ１００及びエキストラデータ２００を統合したデータに対応する統合パリティデータを生成することができる。また、復号化処理では、その統合したデータに対するデコードを実行して、ユーザデータ１００及びエキストラデータ２００のそれぞれに対してエラー検出訂正を行なうことができる。
【００４７】
従って、統合したデータに対する１ビット訂正可能なハミング符号化・復号化処理を高速に行なうことが可能である。また、ユーザデータ１００及びエキストラデータ２００のそれぞれに対応するパリティ演算構成を、小規模で簡単なロジックモジュールにより実現できる。これにより、特に１ビット訂正可能なハミング符号化・復号化装置として、ＨＤＤやＳＳＤなどのデータ記憶装置に組み込み、ユーザデータだけでなく、その関連データであるエキストラデータも同時に保護することが可能となる。
【００４８】
なお、本実施形態の符号化・復号化装置は、データ記憶装置に適用する場合について説明したが、これに限ることなく例えば無線通信装置などの通信装置にも適用可能である。
【００４９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５０】
１０…符号化・復号化装置、１１…エンコーダ、
１２…ユーザデータ用パリティ演算モジュール、
１３…エキストラデータ用パリティ演算モジュール、
１４…排他的オアゲート（ＸＯＲゲート）、１５…デコーダ、
１６…エラー訂正モジュール、２０…ストレージモジュール、
２１…ディスク、２２…ヘッド、２７…リード／ライトチャネル、
２８…ディスクコントローラ、２９…マイクロプロセッサ（ＣＰＵ）、
３０…ＳＳＤコントローラ、３１…フラッシュメモリモジュール。
【図１】
0005117593.tif 000002
【図２】
0005117593.tif 000003
【図３】
0005117593.tif 000004
【図４】
0005117593.tif 000005
【図５】
0005117593.tif 000006
【図６】
0005117593.tif 000007
【図７】
0005117593.tif 000008