(57)【特許請求の範囲】
【請求項１】
ハード・ディスク・デバイス（ＨＤＤ）のハード・ディスク・コントローラ（ＨＤＣ）であって、
ホストから受信したデータを符号化して、符号化データのＰ個のユニットを生成する、１つのエンコーダ・モジュールと、
前記Ｐ個のユニットをバッファに格納し、前記バッファから前記Ｐ個のユニットのうちのＮ個のデータ・ユニットを取り出して、前記Ｎ個のデータ・ユニットを並行して、同時に出力するバッファ・マネージャ・モジュールと、
前記バッファ・マネージャ・モジュールから並行して前記Ｎ個のユニットを受信するＮ個のファースト・イン・ファースト・アウト（ＦＩＦＯ）モジュールと、
前記Ｎ個のＦＩＦＯモジュールから並列にＮ個のデータ・ユニットをそれぞれ受信して、前記ＨＤＤの磁気媒体にＮ個のデータ・ユニットを出力するＮ個の読出チャネル・モジュールと
を備え、
前記バッファ・マネージャ・モジュールは、前記Ｎ個のデータ・ユニットが前記バッファに格納された後であって、前記Ｐ個のユニットの全てが前記バッファに格納される前に、前記バッファから前記Ｎ個のＦＩＦＯモジュールに、前記Ｎ個のデータ・ユニットの転送を開始し、
前記Ｐおよび前記Ｎは２以上の整数である、ＨＤＣ。
【請求項２】
前記エンコーダ・モジュールからＰ個のユニットを受信して、前記Ｐ個のユニットを前記バッファ・マネージャ・モジュールに出力するバッファＦＩＦＯモジュールと
をさらに備え、
前記バッファ・マネージャ・モジュールは、前記Ｐ個のユニットを前記バッファに格納する請求項１に記載のＨＤＣ。
【請求項３】
前記エンコーダ・モジュールは、エラー訂正コード（ＥＣＣ）を用いて前記データを符号化する請求項１または２に記載のＨＤＣ。
【請求項４】
前記ホストから前記データを受信するホスト・インターフェース・モジュールと、
前記ホスト・インターフェース・モジュールから前記データを受信して、前記データを前記エンコーダ・モジュールに出力するホストＦＩＦＯモジュールと
をさらに備える請求項１から３の何れか１項に記載のＨＤＣ。
【請求項５】
前記Ｐ個のユニットのＰ番目が前記バッファに格納されると前記ホストに制御信号を出力する制御モジュールをさらに備え、
前記制御信号は、前記Ｐ個のユニットが前記磁気媒体に出力される旨を示し、
前記エンコーダ・モジュールは、前記Ｐ個より少ないユニットが前記磁気媒体に出力されているときに、前記制御信号に基づいて、前記ホストからさらにデータを受信する請求項１から４の何れか１項に記載のＨＤＣ。
【請求項６】
前記Ｎ個の読出チャネル・モジュールは前記磁気媒体から第２の群のＮ個のデータ・ユニットを受信して、前記第２の群のＮ個のデータ・ユニットをそれぞれ、前記Ｎ個のＦＩＦＯモジュールに並行して出力し、
前記Ｎ個のＦＩＦＯモジュールは、前記Ｎ個のデータ・ユニットをそれぞれ、前記バッファ・マネージャ・モジュールに並行して出力し、
前記バッファ・マネージャ・モジュールは、前記第２の群のＮ個のデータ・ユニットを前記バッファに格納する請求項１から５の何れか１項に記載のＨＤＣ。
【請求項７】
前記バッファ・マネージャ・モジュールから前記Ｎ個のデータ・ユニットを受信して、前記Ｎ個のデータ・ユニットを出力するバッファＦＩＦＯモジュールと、
前記バッファＦＩＦＯモジュールから前記Ｎ個のデータ・ユニットを受信して、前記Ｎ個のデータ・ユニットを復号化して、復号化データを生成するデコーダ・モジュールと、
前記デコーダ・モジュールから前記復号化データを受信して、前記復号化データを出力するホストＦＩＦＯモジュールと、
前記ホストＦＩＦＯモジュールから前記復号化データを受信して、前記復号化データをホストに出力するホスト・インターフェース・モジュールと
をさらに備える請求項６に記載のＨＤＣ。
【請求項８】
前記デコーダ・モジュールは、エラー訂正コード（ＥＣＣ）を用いて前記Ｎ個のデータ・ユニットを復号化する請求項７に記載のＨＤＣ。
【請求項９】
ハード・ディスク・デバイス（ＨＤＤ）のハード・ディスク・コントローラ（ＨＤＣ）であって、
前記ＨＤＤの磁気媒体からＰ個のユニットのうちＮ個のデータ・ユニットを受信して、前記Ｎ個のデータ・ユニットをそれぞれ、並行して、同時に出力するＮ個の入出力（Ｉ／Ｏ）読出チャネル・モジュールと、
前記Ｎ個のデータ・ユニットをそれぞれ、前記Ｎ個の読出チャネル・モジュールから並列に受信して、前記Ｎ個のデータ・ユニットをそれぞれ、並列に、同時に出力するＮ個のファースト・イン・ファースト・アウト（ＦＩＦＯ）モジュールと、
前記Ｎ個のデータ・ユニットを前記Ｎ個のＦＩＦＯモジュールから受信して、前記Ｎ個のデータ・ユニットをバッファに格納し、前記Ｎ個のデータ・ユニットがバッファにより受信され、格納された後であって、前記Ｐ個のユニットの全てが前記バッファに格納される前に、前記Ｐ個のデータ・ユニットを出力するバッファ・マネージャ・モジュールと
を備え、
前記Ｐおよび前記Ｎは２以上の整数である、ＨＤＣ。
【請求項１０】
前記バッファ・マネージャ・モジュールから前記Ｐ個のデータ・ユニットを受信して、前記Ｐ個のデータ・ユニットを出力するバッファＦＩＦＯモジュールと、
前記バッファＦＩＦＯモジュールから前記Ｐ個のデータ・ユニットを受信して、前記Ｐ個のデータ・ユニットを復号化して、復号化データを生成するデコーダ・モジュールと、
前記デコーダ・モジュールから前記復号化データを受信して、前記復号化データを出力するホストＦＩＦＯモジュールと、
前記ホストＦＩＦＯモジュールから前記復号化データを受信して、前記復号化データをホストに出力するホスト・インターフェース・モジュールと
をさらに備える請求項９に記載のＨＤＣ。
【請求項１１】
ハードディスクドライブ（ＨＤＤ）を機能させる方法であって、
ホストからデータを受信する段階と、
符号化により符号化データのＰ個のユニットを生成する段階と、
バッファに前記Ｐ個のユニットを格納する段階と、
バッファ・マネージャ・モジュールを用いることにより、前記バッファから、前記Ｐ個のユニットのうちのＮ個のデータ・ユニットを取り出す段階と、
前記バッファ・マネージャ・モジュールから、前記Ｎ個のデータ・ユニットをそれぞれ、Ｎ個のファースト・イン・ファースト・アウト（ＦＩＦＯ）モジュールに並行して、同時に出力する段階と、
前記Ｎ個のユニットが前記バッファに格納された後であって、前記Ｐ個のユニットの全てが前記バッファに格納される前に、前記バッファから前記Ｎ個のＦＩＦＯモジュールへのデータ転送を開始する段階と、
前記Ｎ個のＦＩＦＯモジュールから前記Ｎ個のデータ・ユニットをそれぞれ、Ｎ個の読出チャネル・モジュールで並行して受信する段階と、
前記Ｎ個の読出チャネル・モジュールから前記ＨＤＤの磁気媒体へと前記Ｎ個のデータ・ユニットを出力する段階と
を備え、
前記Ｐおよび前記Ｎは２以上の整数である、方法。
【請求項１２】
前記Ｐ個のユニットをバッファＦＩＦＯモジュールで受信する段階と、
前記バッファＦＩＦＯモジュールから前記バッファ・マネージャ・モジュールへと前記Ｐ個のユニットを出力する段階と
をさらに備える請求項１１に記載の方法。
【請求項１３】
前記磁気媒体からＮ個のデータ・ユニットを前記Ｎ個の読出チャネル・モジュールで受信する段階と、
前記Ｎ個のデータ・ユニットをそれぞれ、前記Ｎ個の読出チャネル・モジュールから前記Ｎ個のＦＩＦＯモジュールへと並行して出力する段階と、
前記Ｎ個のデータ・ユニットをそれぞれ、前記Ｎ個のＦＩＦＯモジュールから前記バッファ・マネージャ・モジュールに並行して出力する段階と、
前記Ｎ個のデータ・ユニットを前記バッファに格納する段階と
をさらに備える請求項１１または１２に記載の方法。
【請求項１４】
前記バッファ・マネージャ・モジュールから前記Ｎ個のデータ・ユニットをバッファＦＩＦＯモジュールで受信する段階と、
バッファＦＩＦＯモジュールから前記Ｎ個のデータ・ユニットを出力する段階と、
前記Ｎ個のデータ・ユニットを復号化することによって復号化データを生成する段階と、
前記復号化データをホストＦＩＦＯモジュールにおいて受信する段階と、
前記ホストＦＩＦＯモジュールから前記復号化データを出力する段階と、
前記ホストＦＩＦＯモジュールから前記復号化データをホスト・インターフェース・モジュールで受信する段階と、
前記ホスト・インターフェース・モジュールからホストへ前記復号化データを出力する段階と
をさらに備える請求項１３に記載の方法。
【請求項１５】
ハードディスクドライブ（ＨＤＤ）を機能させる方法であって、
前記ＨＤＤの磁気媒体からＰ個のユニットのうちＮ個のデータ・ユニットをＮ個の読出チャネル・モジュールで受信する段階と、
前記Ｎ個のデータ・ユニットをそれぞれ、前記Ｎ個の読出チャネル・モジュールから並行して、同時に出力する段階と、
前記Ｎ個のデータ・ユニットを並行してＮ個のファースト・イン・ファースト・アウト（ＦＩＦＯ）モジュールで受信する段階と、
前記Ｎ個のデータ・ユニットをそれぞれ、前記Ｎ個のＦＩＦＯモジュールから並行して、同時に出力する段階と、
前記Ｎ個のデータ・ユニットをバッファ・マネージャ・モジュールで受信する段階と、
前記Ｎ個のデータ・ユニットをバッファに格納する段階と、
前記バッファにより前記Ｎ個のデータ・ユニットを受信し、格納した後であって、前記Ｐ個のユニットの全てを受信し、前記バッファに格納する前に、前記Ｐ個のデータ・ユニットを出力する段階と
を備え、
前記Ｐおよび前記Ｎは２以上の整数である
方法。
【請求項１６】
前記バッファ・マネージャ・モジュールから前記Ｐ個のデータ・ユニットをバッファＦＩＦＯモジュールで受信する段階と、
前記バッファＦＩＦＯモジュールから前記Ｐ個のデータ・ユニットを出力する段階と、
デコーダ・モジュールにより、前記Ｐ個のデータ・ユニットを復号化することによって復号化データを生成する段階と、
前記デコーダ・モジュールから前記復号化データをホストＦＩＦＯモジュールで受信する段階と、
前記ホストＦＩＦＯモジュールから前記復号化データを出力する段階と、
前記ホストＦＩＦＯモジュールから前記復号化データをホスト・インターフェース・モジュールで受信する段階と、
前記ホスト・インターフェース・モジュールから前記復号化データをホストに出力する段階と
をさらに備える請求項１５に記載の方法。
【発明の詳細な説明】
【関連出願】
【０００１】
本願は、米国特許仮出願第６１／１０５，５９２号（出願日：２００８年１０月１５日）による恩恵を主張する。当該仮出願の開示内容は全て、参照により本願に組み込まれる。
【技術分野】
【０００２】
本開示は、データ・ストレージ・システムに関する。特に、複数の読出／書込チャネルで並行にデータの読出および書込を行う技術に関する。
【背景技術】
【０００３】
本明細書に含まれる背景技術の説明は、本開示のどのような状況下で提案されているかの概略を説明するためのものである。本願の発明者として名前が挙げられている人物の業績は、この背景技術のセクションに記載されている限りにおいて、記載されていなければ出願時に先行技術と認められない態様と同様に、本開示に対して先行技術と明示的にも黙示的にも認められるものではない。
【０００４】
図１Ａを参照しつつ説明すると、データ・ストレージ・システム１０は、ホスト１２およびストレージ装置１４を備える。ストレージ装置１４は、コントローラ１６および格納媒体１８を有する。コントローラ１６は、格納媒体１８を制御すると共に、ストレージ装置１４とホスト１２との間のインターフェースとして機能する。ホスト１２は、格納媒体１８にデータを格納する。
【０００５】
図１Ｂおよび図１Ｃには、データ・ストレージ・システム１０の例が図示されている。図１Ｂの例によると、データ・ストレージ・システム２０は、ホスト２２およびハード・ディスク・ドライブ（ＨＤＤ）２４を備える。ＨＤＤ２４は、ハード・ディスク・コントローラ（ＨＤＣ）２６およびハード・ディスク・アセンブリ（ＨＤＡ）２８を有する。ＨＤＡ２８は、データを格納する磁気格納媒体（不図示）を含む。ＨＤＣ２６は、ＨＤＡ２８を制御すると共に、ＨＤＤ２４とホスト２２との間のインターフェースとして機能する。ホスト２２は、ＨＤＡ２８に含まれる磁気媒体にデータを格納する。
【０００６】
図１Ｃの例によると、データ・ストレージ・システム３０は、ホスト３２およびソリッド・ステート・ディスク（ＳＳＤ）３４を備える。ＳＳＤ３４は、ソリッド・ステート・ディスク（ＳＳＤ）コントローラ３６および不揮発性メモリ３８を有する。ＳＳＤコントローラ３６は、不揮発性メモリ３８を制御すると共に、ＳＳＤ３４とホスト３２との間のインターフェースとして機能する。ホスト３２は、不揮発性メモリ３８にデータを格納する。
【発明の概要】
【課題を解決するための手段】
【０００７】
Ｎ個のファースト・イン・ファースト・アウト（ＦＩＦＯ）モジュールと、バッファ・マネージャ・モジュールと、Ｎ個の入出力（Ｉ／Ｏ）モジュールとを備え、Ｎは、２以上の整数であるシステムを提供する。バッファ・マネージャ・モジュールは、バッファから一群のＮ個のデータ・ユニットを取り出して、一群のＮ個のデータ・ユニットをそれぞれ、Ｎ個のＦＩＦＯモジュールに並行にあるタイミングで出力する。Ｎ個の入出力（Ｉ／Ｏ）モジュールは、一群のＮ個のデータ・ユニットをそれぞれ、Ｎ個のＦＩＦＯモジュールから並行に受信して、Ｎ個のデータ・ユニットを媒体に出力する。
【０００８】
その他の特徴を挙げると、当該システムはさらに、エンコーダ・モジュールと、バッファＦＩＦＯモジュールとを備える。エンコーダ・モジュールは、ホストから受信したデータを符号化して、符号化データを生成する。バッファＦＩＦＯモジュールは、符号化データを受信して、符号化データをバッファ・マネージャ・モジュールに出力する。バッファ・マネージャ・モジュールは、符号化データをバッファに格納する。符号化データは、一群のＮ個のデータ・ユニットを含む。
【０００９】
その他の特徴を挙げると、一群のＮ個のデータ・ユニットは、第１の群である。タイミングは、第１のタイミングである。Ｎ個のＩ／Ｏモジュールは、媒体から第２の群のＮ個のデータ・ユニットを受信して、第２の群のＮ個のデータ・ユニットをそれぞれ、Ｎ個のＦＩＦＯモジュールに並行に出力する。Ｎ個のＦＩＦＯモジュールは、第２の群のＮ個のデータ・ユニットをそれぞれ、バッファ・マネージャ・モジュールに第２のタイミングで並行に出力する。バッファ・マネージャ・モジュールは、第２の群のＮ個のデータ・ユニットをバッファに格納する。
【００１０】
その他の特徴を挙げると、当該システムはさらに、バッファＦＩＦＯモジュールと、デコーダ・モジュールと、ホストＦＩＦＯモジュールと、ホスト・インターフェース・モジュールとを備える。バッファＦＩＦＯモジュールは、バッファ・マネージャ・モジュールから第２の群のＮ個のデータ・ユニットを受信して、第２の群のＮ個のデータ・ユニットを出力する。デコーダ・モジュールは、バッファＦＩＦＯモジュールから第２の群のＮ個のデータ・ユニットを受信して、第２の群のＮ個のデータ・ユニットを復号化して、復号化データを生成する。ホストＦＩＦＯモジュールは、デコーダ・モジュールから復号化データを受信して、復号化データを出力する。ホスト・インターフェース・モジュールは、ホストＦＩＦＯモジュールから復号化データを受信して、復号化データをホストに出力する。
【００１１】
さらにその他の特徴を挙げると、Ｎ個の入出力（Ｉ／Ｏ）モジュールと、Ｎ個のファースト・イン・ファースト・アウト（ＦＩＦＯ）モジュールと、バッファ・マネージャ・モジュールとを備え、Ｎは、２以上の整数であるシステムを提供する。Ｎ個の入出力（Ｉ／Ｏ）モジュールは、媒体から一群のＮ個のデータ・ユニットを受信して、一群のＮ個のデータ・ユニットをそれぞれ、並行に出力する。Ｎ個のファースト・イン・ファースト・アウト（ＦＩＦＯ）モジュールは、一群のＮ個のデータ・ユニットを並列に受信して、一群のＮ個のデータ・ユニットをそれぞれ、あるタイミングで並列に出力する。バッファ・マネージャ・モジュールは、一群のＮ個のデータ・ユニットを受信して、一群のＮ個のデータ・ユニットをバッファに格納する。
【００１２】
他の特徴を挙げると、当該システムはさらに、バッファＦＩＦＯモジュールと、デコーダ・モジュールと、ホストＦＩＦＯモジュールと、ホスト・インターフェース・モジュールとを備える。バッファＦＩＦＯモジュールは、バッファ・マネージャ・モジュールから一群のＮ個のデータ・ユニットを受信して、一群のＮ個のデータ・ユニットを出力する。デコーダ・モジュールは、バッファＦＩＦＯモジュールから一群のＮ個のデータ・ユニットを受信して、一群のＮ個のデータ・ユニットを復号化して、復号化データを生成する。ホストＦＩＦＯモジュールは、デコーダ・モジュールから復号化データを受信して、復号化データを出力する。ホスト・インターフェース・モジュールは、ホストＦＩＦＯモジュールから復号化データを受信して、復号化データをホストに出力する。
【００１３】
さらにその他の特徴を挙げると、バッファから一群のＮ個のデータ・ユニットを取り出す段階を備え、Ｎは、２以上の整数である方法が提供される。当該方法はさらに、一群のＮ個のデータ・ユニットをそれぞれ、Ｎ個のファースト・イン・ファースト・アウト（ＦＩＦＯ）モジュールに並行にあるタイミングで出力する段階を備える。当該方法はさらに、Ｎ個のＦＩＦＯモジュールから一群のＮ個のデータ・ユニットをそれぞれ、Ｎ個の入出力（Ｉ／Ｏ）モジュールで並行に受信する段階を備える。当該方法はさらに、Ｎ個のＩ／Ｏモジュールから媒体へとＮ個のデータ・ユニットを出力する段階を備える。
【００１４】
他の特徴を挙げると、当該方法はさらに、ホストからデータを受信する段階と、データを符号化することによって符号化データを生成する段階とを備える。符号化データは、一群のＮ個のデータ・ユニットを含む。当該方法はさらに、符号化データをバッファＦＩＦＯモジュールで受信する段階と、バッファＦＩＦＯモジュールからバッファ・マネージャ・モジュールへと符号化データを出力する段階とを備える。当該方法はさらに、符号化データをバッファに格納する段階を備える。
【００１５】
他の特徴を挙げると、一群のＮ個のデータ・ユニットは、第１の群であり、タイミングは、第１のタイミングである。当該方法はさらに、媒体から第２の群のＮ個のデータ・ユニットをＮ個のＩ／Ｏモジュールで受信する段階を備える。当該方法はさらに、第２の群のＮ個のデータ・ユニットをそれぞれ、Ｎ個のＩ／ＯモジュールからＮ個のＦＩＦＯモジュールへと並行に出力する段階を備える。当該方法はさらに、第２の群のＮ個のデータ・ユニットをそれぞれ、Ｎ個のＦＩＦＯモジュールからバッファ・マネージャ・モジュールに並行に第２のタイミングで出力する段階を備える。当該方法はさらに、第２の群のＮ個のデータ・ユニットをバッファに格納する段階を備える。
【００１６】
別の特徴を挙げると、当該方法はさらに、バッファ・マネージャ・モジュールから第２の群のＮ個のデータ・ユニットをバッファＦＩＦＯモジュールで受信する段階と、バッファＦＩＦＯモジュールから第２の群のＮ個のデータ・ユニットを出力する段階とを備える。当該方法はさらに、バッファＦＩＦＯモジュールから第２の群のＮ個のデータ・ユニットを受信する段階と、第２の群のＮ個のデータ・ユニットを復号化することによって復号化データを生成する段階とを備える。当該方法はさらに、復号化データをホストＦＩＦＯモジュールにおいて受信する段階と、ホストＦＩＦＯモジュールから復号化データを出力する段階とを備える。当該方法はさらに、ホストＦＩＦＯモジュールから復号化データをホスト・インターフェース・モジュールで受信する段階と、ホスト・インターフェース・モジュールからホストへ復号化データを出力する段階とを備える。
【００１７】
さらに別の特徴を挙げると、媒体から一群のＮ個のデータ・ユニットをＮ個の入出力（Ｉ／Ｏ）モジュールで受信する段階を備え、Ｎは、２以上の整数である方法が提供される。当該方法はさらに、一群のＮ個のデータ・ユニットをそれぞれ、Ｎ個のＩ／Ｏモジュールから並行に出力する段階を備える。当該方法はさらに、一群のＮ個のデータ・ユニットを並行にＮ個のファースト・イン・ファースト・アウト（ＦＩＦＯ）モジュールで受信する段階を備える。当該方法はさらに、一群のＮ個のデータ・ユニットをそれぞれ、Ｎ個のＦＩＦＯモジュールから並行にあるタイミングで出力する段階を備える。当該方法はさらに、一群のＮ個のデータ・ユニットをバッファ・マネージャ・モジュールで受信する段階と、一群のＮ個のデータ・ユニットをバッファに格納する段階とを備える。
【００１８】
他の特徴を挙げると、当該方法はさらに、バッファ・マネージャ・モジュールから一群のＮ個のデータ・ユニットをバッファＦＩＦＯモジュールで受信する段階と、バッファＦＩＦＯモジュールから一群のＮ個のデータ・ユニットを出力する段階とを備える。当該方法はさらに、バッファＦＩＦＯモジュールから一群のＮ個のデータ・ユニットを受信する段階と、一群のＮ個のデータ・ユニットを復号化することによって復号化データを生成する段階とを備える。当該方法はさらに、デコーダ・モジュールから復号化データをホストＦＩＦＯモジュールで受信する段階と、ホストＦＩＦＯモジュールから復号化データを出力する段階とを備える。当該方法はさらに、ホストＦＩＦＯモジュールから復号化データをホスト・インターフェース・モジュールで受信する段階と、ホスト・インターフェース・モジュールから復号化データをホストに出力する段階とをさらに備える。
【００１９】
さらに他の特徴を挙げると、上記のシステムおよび方法は、１以上のプロセッサによって実行されるコンピュータプログラムによって実施される。当該コンピュータプログラムは、これらに限定されないが、メモリ、不揮発性データ・ストレージ、および／または、その他の適切な有形の格納媒体等の有形のコンピュータ可読媒体に格納され得る。
【００２０】
本開示を利用可能なその他の領域は、以下の詳細な説明、請求項、および図面から明らかとなるであろう。詳細な説明および具体例は、本開示を説明することのみを目的とするものであって、本開示の範囲を限定するものではない。
【図面の簡単な説明】
【００２１】
本開示は、以下に記載する詳細な説明および添付図面を参照することによって、より深く理解されるであろう。図面は以下の通りである。
【００２２】
【図１Ａ】データ・ストレージ・システムを示す機能ブロック図である。
【００２３】
【図１Ｂ】ハード・ディスク・ドライブ（ＨＤＤ）を備えるデータ・ストレージ・システムを示す機能ブロック図である。
【００２４】
【図１Ｃ】ソリッド・ステート・ディスク（ＳＳＤ）を備えるデータ・ストレージ・システムを示す機能ブロック図である。
【００２５】
【図２Ａ】ハード・ディスク・コントローラ（ＨＤＣ）の機能ブロック図であり、１つの読出チャネル・モジュールを備える書込データ経路を示す。
【００２６】
【図２Ｂ】図２ＡのＨＤＣが実行する書込動作を説明するためのタイミングチャートである。
【００２７】
【図２Ｃ】図２ＡのＨＤＣの機能ブロック図であり、１つの読出チャネル・モジュールを備える読出データ経路を示す。
【００２８】
【図２Ｄ】図２ＣのＨＤＣが実行する読出動作を説明するためのタイミングチャートである。
【００２９】
【図３Ａ】ＨＤＣの機能ブロック図であり、多重化されている複数の読出チャネル・モジュールを備える書込データ経路を示す。
【００３０】
【図３Ｂ】図３ＡのＨＤＣが実行する書込動作を説明するためのタイミングチャートである。
【００３１】
【図３Ｃ】図３ＡのＨＤＣの機能ブロック図であり、多重化されている複数の読出チャネル・モジュールを備える読出データ経路を示す。
【００３２】
【図３Ｄ】図３ＣのＨＤＣが実行する読出動作を説明するためのタイミングチャートである。
【００３３】
【図４Ａ】ＨＤＣの機能ブロック図であり、複数の読出チャネル・モジュールを備える書込データ経路を示す。
【００３４】
【図４Ｂ】図４ＡのＨＤＣが実行する書込動作を説明するためのタイミングチャートである。
【００３５】
【図４Ｃ】図４ＡのＨＤＣの機能ブロック図であり、複数の読出チャネル・モジュールを備える読出データ経路を示す。
【００３６】
【図４Ｄ】図４ＣのＨＤＣが実行する読出動作を説明するためのタイミングチャートである。
【００３７】
【図４Ｅ】図４ＡのＨＤＣの機能ブロック図であり、書込データ経路および読出データ経路を示す。
【００３８】
【図５Ａ】媒体へのデータの書込／送信を行う方法を説明するためのフローチャートである。
【００３９】
【図５Ｂ】媒体からのデータの読出／受信を行う方法を説明するためのフローチャートである。
【発明を実施するための形態】
【００４０】
以下に記載する説明は、本質的に一例に過ぎず、開示内容、用途、または利用分野を限定するものでは決してない。分かりやすいよう、複数の図面にわたって同様の構成要素を示す際には同じ参照番号を用いる。「Ａ、Ｂ、および、Ｃのうち少なくとも１つ」という表現は、本明細書で用いる場合、論理（ＡまたはＢまたはＣ）で、非排他的論理和を意味するものと解釈されたい。方法を構成している段階は、本開示の原理を変更することなく実行する順序を変更し得るものと理解されたい。
【００４１】
「モジュール」という用語は、本明細書で用いられる場合、１以上のソフトウェア・プログラムあるいはファームウェア・プログラムを実行する特定用途向け集積回路（ＡＳＩＣ）、電子回路、プロセッサ（共有、専用、または、一群）および／あるいはメモリ（共有、専用、または、一群）、組み合わせ論理回路、ならびに／または、本明細書に記載する機能を実現するその他の適切なコンポーネントを意味するか、これらの一部であるか、または、これらを含むものであってよい。
【００４２】
多くのデータ・ストレージ・システムでは、ホストとストレージ装置のコントローラとの間でデータ転送を行う際には通常、１つの読出／書込チャネルを用いている。システム・スループットを大きくすることを目的として、ストレージ装置のコントローラとストレージ装置の格納媒体との間のデータ転送のために複数の読出／書込チャネルを用いる場合がある。
【００４３】
例えば、ハード・ディスク・ドライブ（ＨＤＤ）において、ハード・ディスク・コントローラ（ＨＤＣ）は、磁気媒体との間でデータ転送を行うために複数の読出／書込チャネル・モジュール（以下では、読出チャネル・モジュールと呼ぶ）を利用することがある。ソリッド・ステート・ディスク（ＳＳＤ）においては、メモリ・コントローラが、不揮発性メモリとの間でデータ転送を行うために複数の読出チャネル・モジュールを利用することがある。それぞれの読出チャネル・モジュールが読出／書込動作の際にデータの一部を転送するので、スループットが大きくなる。
【００４４】
このような複数の読出チャネル・モジュールは通常、多重化される。しかし、多重化を行うために読出／書込動作を完了するまでの時間が長くなり、スループットが低下してしまう。
【００４５】
本開示は、これに代えて、複数の読出チャネル・モジュールで並行にデータ転送を行うシステムを提供する。これにより、読出／書込動作を完了するまでの時間も短縮され、複数の読出チャネル・モジュールを多重化する場合に比べてスループットが高くなる。これに加えて、以下で詳細に説明するが、当該システムは、複数の読出チャネル・モジュールを多重化する場合には発生しないソフトエラーからデータ経路を保護するという特徴を持つ。
【００４６】
本開示は、以下のようにまとめられている。図２Ａから図２Ｄは、１つの読出チャネル・モジュールを用いて実行される書込動作および読出動作を説明するための図である。図３Ａから図３Ｄは、多重化された複数の読出チャネル・モジュールを用いて実行される書込動作および読出動作を説明するための図である。図４Ａから図４Ｅは、本開示の教示内容に応じて、複数の読出チャネルを並行に用いて実行される書込動作および読出動作を説明するための図である。
【００４７】
図２Ａから図２Ｄでは、単一チャネル型のデータ・ストレージ・システムが実行する書込動作および読出動作を示している。図２Ａおよび図２Ｃではそれぞれ、一例に過ぎないが、１つの読出チャネル・モジュールを備えるＨＤＣ３００の書込データ経路および読出データ経路が図示されている。図２Ｂおよび図２Ｄではそれぞれ、書込動作および読出動作のタイミングチャートが図示されている。
【００４８】
図２Ａおよび図２Ｃに示すように、ＨＤＣ３００は、ホスト・インターフェース・モジュール３０２と、ホスト・ファースト・イン・ファースト・アウト（ＦＩＦＯ）モジュール３０４と、バッファ・マネージャ・モジュール３０６と、バッファ３０８と、バッファＦＩＦＯモジュール３１０と、エンコーダ・モジュール３１２（図２Ａには図示されているが、図２Ｃにはなし）と、デコーダ・モジュール３１３（図２Ｃには図示されているが、図２Ａにはなし）と、チャネルＦＩＦＯモジュール３１４と、読出チャネル・モジュール３１６と、制御モジュール３１８とを備える。
【００４９】
図２Ａに示すように、ＨＤＣ３００の書込データ経路は、ホスト・インターフェース・モジュール３０２と、ホストＦＩＦＯモジュール３０４と、バッファ・マネージャ・モジュール３０６と、バッファ３０８と、バッファＦＩＦＯモジュール３１０と、エンコーダ・モジュール３１２と、チャネルＦＩＦＯモジュール３１４と、読出チャネル・モジュール３１６と、制御モジュール３１８とから構成される。
【００５０】
ホスト・インターフェース・モジュール３０２は、ＨＤＣ３００とホスト（不図示）との間のインターフェースとして機能する。ホスト・インターフェース・モジュール３０２は、媒体（不図示）に書き込むべきデータをホストから受信する。一例に過ぎないが、媒体は、ＨＤＤの磁気媒体を含むとしてよい。これに代えて、媒体は、ＳＳＤの不揮発性メモリを含むとしてもよい。ホストＦＩＦＯモジュール３０４は、ホスト・インターフェース・モジュール３０２からデータを受信して、受信したデータをバッファ・マネージャ・モジュール３０６にファースト・イン・ファースト・アウト方式で出力する。
【００５１】
バッファ・マネージャ・モジュール３０６は、ホストＦＩＦＯモジュール３０４と、バッファ３０８と、バッファＦＩＦＯモジュール３１０との間のデータ転送を制御する。バッファ・マネージャ・モジュール３０６は、バッファ３０８に一時的にデータを格納するとしてよい。バッファ３０８は、メモリを有するとしてよい。一例に過ぎないが、バッファ３０８は、ダブル・データ・レート・シンクロナス・ダイナミック・ランダム・アクセス（ＤＤＲ）メモリを有するとしてよい。
【００５２】
バッファ・マネージャ・モジュール３０６は時折、バッファ３０８に格納されているデータを並び替える（例えば、ソートする）としてもよい。バッファ・マネージャ・モジュール３０６は、バッファ３０８からデータを取り出して、当該データをバッファＦＩＦＯモジュール３１０に出力するとしてよい。バッファＦＩＦＯモジュール３１０は、このデータをファースト・イン・ファースト・アウト方式でエンコーダ・モジュール３１２に出力する。
【００５３】
エンコーダ・モジュール３１２は、データを符号化して、符号化データをチャネルＦＩＦＯモジュール３１４に出力する。エンコーダ・モジュール３１２は、コードを用いてデータを符号化するとしてよい。一例に過ぎないが、そのようなコードとしては、エラー修正コード（ＥＣＣ）が含まれるとしてよい。チャネルＦＩＦＯモジュール３１４は、符号化データをファースト・イン・ファースト・アウト方式で読出チャネル・モジュール３１６に出力する。読出チャネル・モジュール３１６は、符号化データを媒体に書き込む。
【００５４】
制御モジュール３１８は、書込動作において、ホスト・インターフェース・モジュール３０２、バッファ・マネージャ・モジュール３０６、エンコーダ・モジュール３１２、読出チャネル・モジュール３１６を制御する。例えば、制御モジュール３１８は、書込動作において、ホスト・インターフェース・モジュール３０２、バッファ・マネージャ・モジュール３０６、エンコーダ・モジュール３１２、読出チャネル・モジュール３１６を同期させるとしてよい。
【００５５】
これに加えて、制御モジュール３１８は、ホスト・インターフェース・モジュール３０２を介してホストとの間で制御信号をやり取りする。例えば、制御モジュール３１８は、ホストから読出／書込コマンド（例えば、Ｈｏｓｔ＿Ｒｅｑ）を受信する。制御モジュール３１８は、ホスト・インターフェース・モジュール３０２と媒体との間でのデータの流れを制御する制御信号を生成する。例えば、制御モジュール３１８は、読出／書込動作のステータスを示す制御信号（例えば、Ｒｅｑ＿Ｄｏｎｅ）をホストに出力する。制御モジュール３１８は、ハードウェア、ファームウェア、および／または、ソフトウェアによって実現されるとしてよい。例えば、一部の実施例によると、制御モジュール３１８は、ファームウェアおよび／またはソフトウェアを実行するマイクロプロセッサによって実現されるとしてよい。
【００５６】
図２Ｂには、書込データ経路を介してＨＤＣ３００が実行する書込動作のタイミングチャートが図示されている。一例に過ぎないが、このタイミングチャートは、２０個のセクタ（ＳＳＤでは２０個のブロック）から成るセクタ群がどのように媒体に書き込まれるかを示すタイミングチャートである。制御モジュール３１８は、媒体へデータ（例えば、２０個のセクタ）を書き込むことを要求する要求（Ｈｏｓｔ＿Ｒｅｑ）を受信する。ホスト・インターフェース・モジュール３０２は、ホストから２０個のセクタを受信する。ホストＦＩＦＯモジュール３０４（図２ＢではＨＦＩＦＯという参照符号で図示している）は、制御モジュール３１８がＨｏｓｔ＿Ｒｅｑを受信した後、２０単位時間で２０個のセクタを受信するとしてよい。
【００５７】
１単位時間は、「１セクタ時間」であり、１つのセクタをチャネルＦＩＦＯモジュール３１４に入れるのに必要な時間である。したがって、１単位時間でのクロック・サイクル数は、１つのセクタでのバイト数と等しいとしてよい。例えば、セクタサイズが１Ｋバイトの場合、１単位時間は１０００クロックサイクルに略等しいとしてよい。
【００５８】
バッファ・マネージャ・モジュール３０６は、バッファ３０８に２０個のセクタを格納して並び替えるとしてよい。バッファ・マネージャ・モジュール３０６は、バッファ３０８から２０個のセクタを取り出して、これら２０個のセクタをバッファＦＩＦＯモジュール３１０（図２ＢではＢＦＩＦＯという参照符号で図示）に出力するとしてよい。バッファＦＩＦＯモジュール３１０は、バッファ・マネージャ・モジュール３０６のレイテンシによって発生する時間だけ遅延して、２０単位時間で２０個のセクタを受信するとしてよい。例えば、バッファ・マネージャ・モジュール３０６のレイテンシは、図示しているように、１単位時間と略等しいとしてよい。
【００５９】
これに代えて、バッファＦＩＦＯモジュール３１０は、バッファＦＩＦＯモジュール３１０にデータが転送される前に所定時間だけ待機するように、制御モジュール３１８がバッファ・マネージャ・モジュール３０６をプログラミングするために、所定時間遅延して２０単位時間で２０個のセクタを受信するとしてよい。例えば、制御モジュール３１８は、２０個のセクタがバッファ３０８内で並び替えられている間待機するようにバッファ・マネージャ・モジュール３０６をプログラミングするとしてよい。したがって、バッファＦＩＦＯモジュール３１０は、制御モジュール３１８がＨｏｓｔ＿Ｒｅｑを受信してから約２１単位時間が経過した時点で２０個のセクタの受信を完了するとしてよい。
【００６０】
エンコーダ・モジュール３１２は、２０個のセクタを符号化して、２０個の符号化セクタをチャネルＦＩＦＯモジュール３１４に出力する。チャネルＦＩＦＯモジュール３１４は、エンコーダ・モジュール３１２のレイテンシによって発生する時間だけ遅延して、２０単位時間で２０個の符号化セクタを受信する。例えば、エンコーダ・モジュール３１２のレイテンシは、図示されているように、１単位時間と略等しいとしてよい。したがって、チャネルＦＩＦＯモジュール３１４（図２ＢではＣＦＩＦＯという参照符号で示す）は、Ｈｏｓｔ＿Ｒｅｑを受信した時点から約２２単位時間が経過した時点で２０個の符号化セクタの受信を完了するとしてよい。制御モジュール３１８は、チャネルＦＩＦＯモジュール３１４が２０個の符号化セクタを受信すると、要求完了（Ｒｅｑ＿Ｄｏｎｅ）信号をホストに出力する。
【００６１】
チャネルＦＩＦＯモジュール３１４は、２０個の符号化セクタを読出チャネル・モジュール３１６に出力する。読出チャネル・モジュール３１６は、２０個の符号化セクタを媒体に書き込む。このように、ＨＤＣ３００は、制御モジュール３１８がＨｏｓｔ＿Ｒｅｑを受信してかた約２２単位時間で、書込データ経路を介して２０個のセクタを媒体へ書き込むとしてよい。言い換えると、２０個のセクタの書込動作を完了するのに必要な完了時間は、約２２単位時間であるとしてよい。
【００６２】
図２Ｃに示すように、ＨＤＣ３００の読出データ経路は、ホスト・インターフェース・モジュール３０２と、ホストＦＩＦＯモジュール３０４と、バッファ・マネージャ・モジュール３０６と、バッファ３０８と、バッファＦＩＦＯモジュール３１０と、デコーダ・モジュール３１３と、チャネルＦＩＦＯモジュール３１４と、読出チャネル・モジュール３１６と、制御モジュール３１８とから構成される。
【００６３】
図２Ｄには、読出データ経路を介してＨＤＣ３００が実行する読出動作のタイミングチャートが図示されている。一例に過ぎないが、このタイミングチャートは、２０個のセクタ（ＳＳＤでは２０個のブロック）から成るセクタ群がどのように媒体から読み出されてホストに出力されるかを示すタイミングチャートである。制御モジュール３１８は、媒体からデータ（例えば、２０個のセクタ）を読み出すことを要求する要求（Ｈｏｓｔ＿Ｒｅｑ）を受信する。図２Ｄに示すタイミングチャートでは、媒体は、Ｈｏｓｔ＿Ｒｅｑの受信時点においてデータを読み出す準備が出来ている（媒体レディ状態）と仮定される。例えば、媒体が準備できている状態とは、２０個のセクタから構成されている媒体の１トラック上にＨＤＤの読出ヘッドが位置している状態であるとしてよい。
【００６４】
読出チャネル・モジュール３１６は、媒体から読み出された２０個のセクタを受信する。読出チャネル・モジュール３１６は、２０個のセクタをチャネルＦＩＦＯモジュール３１４（図２Ｄでは、ＣＦＩＦＯという参照符号で示す）へ出力するとしてよい。具体的には、読出チャネル・モジュール３１６は、ストリーミング方式で媒体からデータを受信する。読出チャネル・モジュール３１６は、２０個のセクタ全てを出力するまで、同様にストリーミング方式でデータをチャネルＦＩＦＯモジュール３１４に出力する。チャネルＦＩＦＯモジュール３１４は、制御モジュール３１８がＨｏｓｔ＿Ｒｅｑを受信してから、２０単位時間で２０個のセクタを受信するとしてよい。チャネルＦＩＦＯモジュール３１４は、ファースト・イン・ファースト・アウト方式で、２０個のセクタから成るデータをデコーダモジュール３１３に出力する。
【００６５】
デコーダ・モジュール３１３は、２０個のセクタから成るデータを復号化して、２０個の復号化セクタをバッファＦＩＦＯモジュール３１０（図２ＤではＢＦＩＦＯという参照符号で示している）に出力する。バッファＦＩＦＯモジュール３１０は、デコーダ・モジュール３１３のレイテンシによって発生する時間だけ遅延して、２０単位時間で２０個の復号化セクタを受信する。例えば、デコーダ・モジュール３１３のレイテンシは、図示しているように、１単位時間と略等しいとしてよい。したがって、バッファＦＩＦＯモジュール３１０は、制御モジュール３１８がＨｏｓｔ＿Ｒｅｑを受信してから約２１単位時間が経過した時点で２０個の復号化セクタの受信を完了するとしてよい。バッファＦＩＦＯモジュール３１０は、２０個の復号化セクタをバッファ・マネージャ・モジュール３０６にファースト・イン・ファースト・アウト方式で出力する。
【００６６】
バッファ・マネージャ・モジュール３０６は、２０個の復号化セクタをバッファ３０８に格納して並び替えるとしてよい。バッファ・マネージャ・モジュール３０６は、バッファ３０８から２０個の復号化セクタを取り出して、２０個の復号化セクタをホストＦＩＦＯモジュール３０４（図２ＤではＨＦＩＦＯという参照符号で示す）に出力するとしてよい。ホストＦＩＦＯモジュール３０４は、バッファ・マネージャ・モジュール３０６のレイテンシによって発生する時間だけ遅延して、２０単位時間で２０個の復号化セクタを受信するとしてよい。例えば、バッファ・マネージャ・モジュール３０６のレイテンシは、図示されているように、１つのクロックサイクルと略等しいとしてよい。したがって、ホストＦＩＦＯモジュール３０４）は、制御モジュール３１８がＨｏｓｔ＿Ｒｅｑを受信した時点から２２単位時間が経過した時点で２０個の復号化セクタの受信を完了するとしてよい。制御モジュール３１８は、ホストＦＩＦＯモジュール３０４が２０個の復号化セクタを受信すると、要求完了（Ｒｅｑ＿Ｄｏｎｅ）信号をホストに出力する。
【００６７】
ホストＦＩＦＯモジュール３０４は、２０個の復号化セクタをホスト・インターフェース・モジュール３０２に出力する。ホスト・インターフェース・モジュール３０２は、２０個の復号化セクタをホストに出力する。このように、ＨＤＣ３００は、制御モジュール３１８がＨｏｓｔ＿Ｒｅｑを受信してかた約２２単位時間で、読出データ経路を介して２０個のセクタを媒体から読み出して、２０個のセクタをホストに出力するとしてよい。言い換えると、２０個のセクタの読出動作を完了するのに必要な完了時間は、約２２単位時間であるとしてよい。
【００６８】
図３Ａから図３Ｄは、多チャネル型のデータ・ストレージ・システムが実行する書込動作および読出動作を説明するための図である。多チャネル型のデータ・ストレージ・システムでは、媒体に対するデータの読み書きに、複数の多重化された読出チャネル・モジュールを利用する。図３Ａおよび図３Ｃにはそれぞれ、一例に過ぎないが、ＨＤＣ４００が備える複数の書込データ経路および読出データ経路が図示されている。ＨＤＣ４００は、多重化されている複数の読出チャネル・モジュールを備える。図３Ｂおよび図３Ｄにはそれぞれ、書込動作および読出動作を説明するためのタイミングチャートを図示する。
【００６９】
図３Ａおよび図３Ｃに示すように、ＨＤＣ４００は、ホスト・インターフェース・モジュール３０２と、ホストＦＩＦＯモジュール３０４と、バッファ・マネージャ・モジュール３０６と、バッファ３０８と、バッファＦＩＦＯモジュール３１０と、エンコーダ・モジュール３１２（図３Ａには図示されているが、図３Ｃにはなし）と、デコーダ・モジュール３１３（図３Ｃには図示されているが、図３Ａにはなし）と、制御モジュール４０８とを備える。ＨＤＣ４００はさらに、１−Ｎデマルチプレクサ４０２（図３Ａには図示しているが、図３Ｃにはなし）、Ｎ−１マルチプレクサ４０３（図３Ｃには図示しているが、図３Ａにはなし）、Ｎ個のチャネルＦＩＦＯモジュール、および、Ｎ個の読出チャネル・モジュールを備える。尚、Ｎは２以上の整数である。
【００７０】
一例に過ぎないが、Ｎ＝４である。Ｎ＝４の場合、ＨＤＣ４００は、１−４デマルチプレクサ４０２（図３Ａには図示しているが、図３Ｃにはなし）および４−１マルチプレクサ４０３（図３Ｃには図示しているが、図３Ａにはなし）を備えるとしてよい。また、ＨＤＣ４００は、第１、第２、第３、および、第４のチャネルＦＩＦＯモジュール４０４−１、４０４−２、４０４−３、および、４０４−４（チャネルＦＩＦＯモジュール４０４と総称する）を備えるとしてよい。さらに、ＨＤＣ４００は、第１、第２、第３、および、第４の読出チャネル・モジュール４０６−１、４０６−２、４０６−３、および、４０６−４（読出チャネル・モジュール４０６と総称する）を備えるとしてよい。
【００７１】
図３Ａに示すように、ＨＤＣ４００の書込データ経路は、ホスト・インターフェース・モジュール３０２と、ホストＦＩＦＯモジュール３０４と、バッファ・マネージャ・モジュール３０６と、バッファ３０８と、バッファＦＩＦＯモジュール３１０と、エンコーダ・モジュール３１２と、デマルチプレクサ４０２と、チャネルＦＩＦＯモジュール４０４と、読出チャネル・モジュール４０６と、制御モジュール４０８とから構成される。
【００７２】
図３Ｂには、書込データ経路を介してＨＤＣ４００が実行する書込動作のタイミングチャートが図示されている。一例に過ぎないが、このタイミングチャートは、２０個のセクタ（ＳＳＤでは２０個のブロック）から成るセクタ群がどのように媒体に書き込まれるかを示すタイミングチャートである。制御モジュール４０８は、媒体へデータ（例えば、２０個のセクタ）を書き込むことを要求する要求（Ｈｏｓｔ＿Ｒｅｑ）を受信する。ホスト・インターフェース・モジュール３０２は、ホストから２０個のセクタを受信する。ホストＦＩＦＯモジュール３０４（図３ＢではＨＦＩＦＯという参照符号で図示している）は、制御モジュール４０８がＨｏｓｔ＿Ｒｅｑを受信した後、２０単位時間で２０個のセクタを受信するとしてよい。
【００７３】
バッファ・マネージャ・モジュール３０６は、バッファ３０８に２０個のセクタを格納して並び替えるとしてよい。バッファ・マネージャ・モジュール３０６は、バッファ３０８から２０個のセクタを取り出して、これら２０個のセクタをバッファＦＩＦＯモジュール３１０（図３ＢではＢＦＩＦＯという参照符号で図示）に出力するとしてよい。バッファＦＩＦＯモジュール３１０は、バッファ・マネージャ・モジュール３０６のレイテンシによって発生する時間だけ遅延して、２０単位時間で２０個のセクタを受信するとしてよい。例えば、バッファ・マネージャ・モジュール３０６のレイテンシは、図示しているように、１単位時間と略等しいとしてよい。したがって、バッファＦＩＦＯモジュール３１０は、制御モジュール４０８がＨｏｓｔ＿Ｒｅｑを受信してから約２１単位時間が経過した時点で２０個のセクタの受信を完了するとしてよい。
【００７４】
エンコーダ・モジュール３１２は、２０個のセクタを符号化して、２０個の符号化セクタをデマルチプレクサ４０２に出力する。デマルチプレクサ４０２は、エンコーダ・モジュール３１２のレイテンシによって発生する時間だけ遅延して、２０単位時間で２０個の符号化セクタのうちの１つである第１の符号化セクタを受信する。例えば、エンコーダ・モジュール３１２のレイテンシは、図示されているように、１単位時間と略等しいとしてよい。したがって、デマルチプレクサ４０２は、制御モジュール４０８がＨｏｓｔ＿Ｒｅｑを受信した時点から約２２単位時間が経過した時点で２０個の符号化セクタのうち第１の符号化セクタの受信を完了するとしてよい。
【００７５】
制御モジュール４０８は、デマルチプレクサ４０２を制御する。デマルチプレクサ４０２は、２０個の符号化セクタのうち第１、第２、第３、および、第４の符号化セクタをそれぞれ、チャネルＦＩＦＯモジュール４０４−１、４０４−２、４０４−３、および、４０４−４（図３Ｂでは、ＣＦＩＦＯという参照符号で示す）に出力する。デマルチプレクサ４０２からの出力は、図示されているように、４連続単位時間で順次実行されるとしてよい。
【００７６】
チャネルＦＩＦＯモジュール４０４−１、４０４−２、４０４−３、および、４０４−４は、２０個の符号化セクタのうち第１、第２、第３、および、第４の符号化セクタをそれぞれ、読出チャネル・モジュール４０６−１、４０６−２、４０６−３、および、４０６−４に出力する。読出チャネル・モジュール４０６は、２０個の符号化セクタのうち第１、第２、第３、および、第４の符号化セクタを媒体に書き込む。
【００７７】
デマルチプレクサ４０２は、２０個の符号化セクタのうち第４の符号化セクタを転送した後、２０個の符号化セクタのうち第５、第６、第７、および、第８の符号化セクタを出力する。チャネルＦＩＦＯモジュール４０４は、２０個の符号化セクタのうち第５、第６、第７、および、第８の符号化セクタを読出チャネル・モジュール４０６に出力する。読出チャネル・モジュール４０６は、２０個の符号化セクタのうち第５、第６、第７、および、第８の符号化セクタを媒体に書き込む。このようにして、２０個のセクタを媒体に書き込む。制御モジュール４０８は、チャネルＦＩＦＯモジュール４０４が２０番目の符号化セクタを受信すると、要求完了（Ｒｅｑ＿Ｄｏｎｅ）信号をホストに出力する。
【００７８】
このように、ＨＤＣ４００は、Ｈｏｓｔ＿Ｒｅｑの受信時点から約２５単位時間で、書込データ経路を介して媒体へ２０個のセクタを書込むとしてよい。言い換えると、２０個のセクタの書込動作を完了するのに必要な完了時間は、約２５単位時間であるとしてよい。ＨＤＣ４００は、複数のチャネルを備えているにも関わらず、逆多重化を実行するために、２０個のセクタを書き込むのに必要な時間がＨＤＣ３００よりも長くなってしまう。
【００７９】
図示した例によると、読出チャネル・モジュール４０６が媒体へデータを書き込んでいるビジー状態は約２３単位時間にわたる場合がある。また、読出チャネル・モジュール４０６は、黒く塗られた単位時間の間はアイドル状態のままであるとしてよい。読出チャネル・モジュール４０６がアイドル状態を維持するのは、エンコーダ・モジュール３１２からチャネルＦＩＦＯモジュール４０４へとデマルチプレクサ４０２を介して行われるデータ転送が順次行われるためであるとしてよい。また、制御モジュール４０８は、「ｓｙｓ−ｏｐｓ」と示されている単位時間の間は、システム動作（例えば、不良ブロック管理）を実行するとしてよい。したがって、制御モジュール４０８は、「ｓｙｓ−ｏｐｓ」と指定されている単位時間の間は、ホストに対して所定の処理を行うことができないとしてよい。このため、システム性能が低減する可能性がある。
【００８０】
図３Ｃに示すように、ＨＤＣ４００の読出データ経路は、ホスト・インターフェース・モジュール３０２と、ホストＦＩＦＯモジュール３０４と、バッファ・マネージャ・モジュール３０６と、バッファ３０８と、バッファＦＩＦＯモジュール３１０と、デコーダ・モジュール３１３と、マルチプレクサ４０３と、チャネルＦＩＦＯモジュール４０４と、読出チャネル・モジュール４０６と、制御モジュール４０８とから構成される。
【００８１】
図３Ｄには、読出データ経路を介してＨＤＣ４００が実行する読出動作のタイミングチャートが図示されている。一例に過ぎないが、このタイミングチャートは、２０個のセクタ（ＳＳＤでは２０個のブロック）から成るセクタ群がどのように媒体から読み出されてホストに出力されるかを示すタイミングチャートである。制御モジュール４０８は、媒体からデータ（例えば、２０個のセクタ）を読み出すことを要求する要求（Ｈｏｓｔ＿Ｒｅｑ）を受信する。図３Ｄに示すタイミングチャートでは、媒体は、Ｈｏｓｔ＿Ｒｅｑの受信時点においてデータを読み出す準備が出来ている（媒体レディ状態）と仮定される。例えば、媒体が準備できている状態とは、２０個のセクタから構成されている媒体の１トラック上にＨＤＤの読出ヘッドが位置している状態であるとしてよい。
【００８２】
読出チャネル・モジュール４０６は、媒体から読み出された２０個のセクタを受信する。読出チャネル・モジュール４０６は、２０個のセクタをチャネルＦＩＦＯモジュール４０４（図３Ｄでは、ＣＦＩＦＯという参照符号で示す）へ出力する。チャネルＦＩＦＯモジュール４０４は、２０個のセクタをマルチプレクサ４０３に出力する。制御モジュール４０８は、マルチプレクサ４０３を制御する。マルチプレクサ４０３は、デコーダモジュール３１３に２０個のセクタを出力する。
【００８３】
デコーダ・モジュール３１３は、２０個のセクタから成るデータを復号化して、２０個の復号化セクタをバッファＦＩＦＯモジュール３１０（図３ＤではＢＦＩＦＯという参照符号で示している）に出力する。バッファＦＩＦＯモジュール３１０は、多重化に起因する時間だけ遅延して、２０単位時間で２０個の復号化セクタを受信する。例えば、図示している例では、遅延時間は約４単位時間であるとしてよい。したがって、バッファＦＩＦＯモジュール３１０は、制御モジュール４０８がＨｏｓｔ＿Ｒｅｑを受信してから約２４単位時間が経過した時点で２０個の復号化セクタの受信を完了するとしてよい。バッファＦＩＦＯモジュール３１０は、２０個の復号化セクタをバッファ・マネージャ・モジュール３０６に出力する。
【００８４】
バッファ・マネージャ・モジュール３０６は、２０個の復号化セクタをバッファ３０８に格納して並び替えるとしてよい。バッファ・マネージャ・モジュール３０６は、バッファ３０８から２０個の復号化セクタを取り出して、２０個の復号化セクタをホストＦＩＦＯモジュール３０４（図３ＤではＨＦＩＦＯという参照符号で示す）に出力するとしてよい。ホストＦＩＦＯモジュール３０４は、バッファ・マネージャ・モジュール３０６のレイテンシによって発生する時間だけ遅延して、２０単位時間で２０個の復号化セクタを受信するとしてよい。例えば、バッファ・マネージャ・モジュール３０６のレイテンシは、図示されているように、１つのクロックサイクルと略等しいとしてよい。したがって、ホストＦＩＦＯモジュール３０４）は、制御モジュール４０８がＨｏｓｔ＿Ｒｅｑを受信した時点から２５単位時間が経過した時点で２０個の復号化セクタの受信を完了するとしてよい。制御モジュール４０８は、ホストＦＩＦＯモジュール３０４が２０個の復号化セクタを受信すると、要求完了（Ｒｅｑ＿Ｄｏｎｅ）信号をホストに出力する。
【００８５】
ホストＦＩＦＯモジュール３０４は、２０個の復号化セクタをホスト・インターフェース・モジュール３０２に出力する。ホスト・インターフェース・モジュール３０２は、２０個の復号化セクタをホストに出力する。このように、ＨＤＣ４００は、制御モジュール４０８がＨｏｓｔ＿Ｒｅｑを受信してかた約２５単位時間で、読出データ経路を介して２０個のセクタを媒体から読み出して、２０個のセクタをホストに出力するとしてよい。言い換えると、２０個のセクタの読出動作を完了するのに必要な完了時間は、約２５単位時間であるとしてよい。ＨＤＣ４００は、複数のチャネルを備えているにも関わらず、多重化を実行するために、２０個のセクタを読み出すのに必要な時間がＨＤＣ３００よりも長くなってしまう。
【００８６】
図示した例によると、読出チャネル・モジュール４０６が媒体からデータを読み込んでいるビジー状態は約２３単位時間にわたる場合がある。また、読出チャネル・モジュール４０６は、黒く塗られた単位時間の間はアイドル状態のままであるとしてよい。読出チャネル・モジュール４０６がアイドル状態を維持するのは、チャネルＦＩＦＯモジュール４０４からデコーダモジュール３１３へとマルチプレクサ４０３を介して行われるデータ転送が順次行われるためであるとしてよい。また、制御モジュール４０８は、「ｓｙｓ−ｏｐｓ」と示されている単位時間の間は、システム動作（例えば、不良ブロック管理）を実行するとしてよい。したがって、制御モジュール４０８は、「ｓｙｓ−ｏｐｓ」と指定されている単位時間の間は、ホストに対して所定の処理を行うことができないとしてよい。このため、システム性能が低減する可能性がある。
【００８７】
このように、読出チャネル・モジュール４０６の多重化によって、書込動作および読出動作の完了が遅くなってしまう可能性がある。多重化のために発生する遅延は、黒く塗りつぶした部分として図示されているが、それぞれは短時間の書込動作および読出動作を複数回実行する場合に特に顕著であるとしてよい。多重化のために発生する遅延は、書込動作および読出動作において複数の読出チャネル・モジュール４０６を並行に利用することによってなくなるとしてよい。
【００８８】
ホストは通常、バッファ・マネージャ・モジュール３０６およびバッファ３０８をキャッシュと考えるとしてよい。したがって、ホスト・エンドから見ると、書込動作および読出動作の実質的な完了時間は、以下のように測定されるとしてよい。書込動作の実質的な完了時間は、バッファ３０８から媒体までデータを転送するために必要な時間として測定されるとしてよい。また、読出動作の実質的な完了時間は、媒体からバッファ３０８までデータを転送するために必要な時間として測定されるとしてよい。書込動作および読出動作の実質的な完了時間は、書込データ経路および読出データ経路の一部分を以下のように構成することによって改善され得る。
【００８９】
図４Ａから図４Ｅは、多チャネル型のデータ・ストレージ・システムが実行する書込動作および読出動作を説明するための図である。多チャネル型のデータ・ストレージ・システムは、本開示の教示内容に応じて、複数の読出チャネル・モジュールを並行に用いてデータの読み書きを行う。図４Ａおよび図４Ｃではそれぞれ、一例に過ぎないが、ＨＤＣ５００の書込データ経路および読出データ経路を図示している。ＨＤＣ５００は、複数の読出チャネル・モジュールを備える。ＨＤＣ５００は、書込動作および読出動作を実行する際に、複数の読出チャネル・モジュールを並行に利用する。図４Ｂおよび図４Ｄではそれぞれ、書込動作および読出動作を説明するためのタイミングチャートを図示している。図４Ｅでは、書込データ経路および読出データ経路が併存しているＨＤＣ５００が図示されている。
【００９０】
図４Ａ、図４Ｃ、および図４Ｅによると、ＨＤＣ５００は、ホスト・インターフェース・モジュール３０２と、ホストＦＩＦＯモジュール３０４と、エンコーダ・モジュール３１２（図４Ａには図示されているが、図４Ｃにはなし）と、デコーダ・モジュール３１３（図４Ｃには図示されているが、図４Ａにはなし）と、バッファＦＩＦＯモジュール３１０と、バッファ・マネージャ・モジュール５０６と、バッファ３０８と、制御モジュール５０８とを備える。また、ＨＤＣ５００は、Ｎ個のチャネルＦＩＦＯモジュールおよびＮ個の読出チャネル・モジュールを備える。尚、Ｎは２以上の整数である。一例に過ぎないが、Ｎ＝４である。Ｎ＝４の場合、ＨＤＣ５００は、上述したチャネルＦＩＦＯモジュール４０４および読出チャネル・モジュール４０６を備えるとしてよい。
【００９１】
図４Ａに示すように、ＨＤＣ５００の書込データ経路は、ホスト・インターフェース・モジュール３０２と、ホストＦＩＦＯモジュール３０４と、エンコーダ・モジュール３１２と、バッファＦＩＦＯモジュール３１０と、バッファ・マネージャ・モジュール５０６と、バッファ３０８と、チャネルＦＩＦＯモジュール４０４と、読出チャネル・モジュール４０６と、制御モジュール５０８とから構成される。
【００９２】
制御モジュール５０８は、書込動作において、エンコーダ・モジュール３１２、バッファ・マネージャ・モジュール５０６、および、読出チャネル・モジュール４０６を制御する。制御モジュール５０８は、読出／書込動作が実行されている間、ホスト・インターフェース・モジュール３０２と媒体との間でのデータの流れを制御する制御信号を生成する。例えば、制御モジュール５０８は、読出／書込動作が実行されている間、エンコーダ・モジュール３１２、バッファ・マネージャ・モジュール５０６、読出チャネル・モジュール４０６を同期させる信号を出力するとしてよい。
【００９３】
また、制御モジュール５０８は、ホスト・インターフェース・モジュール３０２を介して、ホストとの間で制御信号をやり取りする。例えば、制御モジュール５０８は、ホストから読出／書込コマンド（例えば、Ｈｏｓｔ＿Ｒｅｑ）を受信する。また、制御モジュール５０８は、ホストに対して、読出／書込動作のステータスを示す制御信号（例えば、Ｒｅｑ＿Ｄｏｎｅ）を出力する。
【００９４】
図４Ｂには、書込データ経路を介してＨＤＣ５００が実行する書込動作のタイミングチャートが図示されている。一例に過ぎないが、このタイミングチャートは、２０個のセクタ（ＳＳＤでは２０個のブロック）から成るセクタ群がどのように媒体に書き込まれるかを示すタイミングチャートである。一例に過ぎないが、媒体は、ＨＤＤの磁気媒体またはＳＳＤの不揮発性媒体を含むとしてよい。制御モジュール５０８は、ホストから、媒体へデータ（例えば、２０個のセクタ）を書き込むことを要求する要求（Ｈｏｓｔ＿Ｒｅｑ）を受信する。
【００９５】
ホスト・インターフェース・モジュール３０２は、ＨＤＣ５００とホストとの間のインターフェースとして機能し、媒体に書き込むべき２０個のセクタをホストから受信する。ホストＦＩＦＯモジュール３０４（図４ＢではＨＦＩＦＯという参照符号で図示している）は、ホストからホスト・インターフェース・モジュール３０２を介して２０個のセクタを受信する。ホストＦＩＦＯモジュール３０４は、制御モジュール５０８がＨｏｓｔ＿Ｒｅｑを受信した後、２０単位時間で２０個のセクタを受信するとしてよい。ホストＦＩＦＯモジュール３０４は、ファースト・イン・ファースト・アウト方式で、２０個のセクタをエンコーダ・モジュール３１２に出力する。
【００９６】
エンコーダ・モジュール３１２は、２０個のセクタから成るデータを符号化して、２０個のセクタから成る符号化データをバッファＦＩＦＯモジュール３１０（図４ＢではＢＦＩＦＯという参照符号で図示）に出力する。エンコーダ・モジュール３１２は、コードを用いてデータを符号化するとしてよい。一例に過ぎないが、当該コードは、エラー修正コード（ＥＣＣ）を含むとしてよい。
【００９７】
バッファＦＩＦＯモジュール３１０は、エンコーダ・モジュール３１２のレイテンシによって発生する時間だけ遅延して、２０単位時間で２０個のセクタを受信するとしてよい。例えば、エンコーダ・モジュール３１２のレイテンシは、図示しているように、１単位時間と略等しいとしてよい。したがって、バッファＦＩＦＯモジュール３１０は、制御モジュール５０８がＨｏｓｔ＿Ｒｅｑを受信してから約２１単位時間が経過した時点で２０個のセクタの受信を完了するとしてよい。バッファＦＩＦＯモジュール３１０は、ファースト・イン・ファースト・アウト方式で、バッファ・マネージャ・モジュール５０６に２０個のセクタを出力する。
【００９８】
バッファ・マネージャ・モジュール５０６は、バッファ３０８に２０個のセクタを格納して並び替えるとしてよい。制御モジュール５０８は、バッファ・マネージャ・モジュール５０６がバッファ３０８に２０番目のセクタを格納すると、ホストに要求完了（Ｒｅｑ＿Ｄｏｎｅ）信号を出力する。したがって、ホストは、ＨＤＣ５００が実際に媒体に対する２０個のセクタの書込みを完了するまで待機する必要がなくなる。
【００９９】
ＨＤＣ５００は、以下のようにして、２０個のセクタを媒体に書き込む。バッファ・マネージャ・モジュール５０６は、バッファ３０８から２０個のセクタを取り出して、２０個のセクタをチャネルＦＩＦＯモジュール４０４に出力するとしてよい。図示されている例によると、バッファ・マネージャ・モジュール５０６は第１のタイミングにおいて、セクタ１からセクタ４を並行にチャネルＦＩＦＯモジュール４０４−１、４０４−２、４０４−３、および、４０４−４（図４Ｂではそれぞれ、ＣＦＩＦＯ１からＣＦＩＦＯ４という参照符号で図示している）へとそれぞれ出力する。
【０１００】
この後、バッファ・マネージャ・モジュール５０６は第２のタイミングにおいて、セクタ５からセクタ８を並行にチャネルＦＩＦＯモジュール４０４−１、４０４−２、４０４−３、および、４０４−４へとそれぞれ出力する。以降、同様の処理を行なう。このようにして、バッファ・マネージャ・モジュール５０６は、図示されているように、１回につき４個のセクタずつ出力して、約２０単位時間で２０個のセクタをチャネルＦＩＦＯモジュール４０４に出力する。
【０１０１】
バッファ・マネージャ・モジュール５０６は、バッファ３０８からチャネルＦＩＦＯモジュール４０４へのデータ転送を、２０個のセクタのうち最初の４個のセクタがバッファ３０８に格納されると開始するとしてよい。このため、バッファ・マネージャ・モジュール５０６は、制御モジュール５０８がＨｏｓｔ＿Ｒｅｑを受信してから、約２５単位時間が経過した時点で、バッファ３０８からチャネルＦＩＦＯモジュール４０４への２０個のセクタの転送を完了するとしてよい。
【０１０２】
チャネルＦＩＦＯモジュール４０４−１、４０４−２、４０４−３、および、４０４−４は第１のタイミングにおいて、セクタ１からセクタ４を並行に読出チャネル・モジュール４０６−１、４０６−２、４０６−３、および４０６−４へとそれぞれ出力するとしてよい。この後、チャネルＦＩＦＯモジュール４０４−１、４０４−２、４０４−３、および、４０４−４は第２のタイミングにおいて、セクタ５からセクタ８を並行に読出チャネル・モジュール４０６−１、４０６−２、４０６−３、および４０６−４へとそれぞれ出力するとしてよい。以降、同様の処理を行なう。
【０１０３】
チャネルＦＩＦＯモジュール４０４がセクタ１からセクタ４を受信するタイミングと、読出チャネル・モジュール４０６がセクタ１からセクタ４を受信するタイミングとの間のレイテンシは、存在しないか、または、無視できる程度に小さいとしてよい。したがって、読出チャネル・モジュール４０６は略第１のタイミングにおいて、セクタ１からセクタ４を媒体に書き込むとしてよい。その後、読出チャネル・モジュール４０６は略第２のタイミングにおいて、セクタ５からセクタ８を媒体に書き込むとしてよい。以降、同様に処理を行なう。
【０１０４】
このように、読出チャネル・モジュール４０６は、バッファ・マネージャ・モジュール５０６がバッファ３０８からチャネルＦＩＦＯモジュール４０４へのセクタの転送を開始してから約２０単位時間が経過した時点において、媒体への２０個のセクタの書込みを完了するとしてよい。したがって、ＨＤＣ５００が２０個のセクタを書き込むために必要な完了時間は実質的に、２０単位時間であり、ＨＤＣ４００およびＨＤＣ３００がそれぞれ必要とした２５単位時間および２２単位時間よりも短くなる。
【０１０５】
図示しているように、読出チャネル・モジュール４０６が媒体にデータを書き込んでおりビジー状態となっているのは約２０単位時間で、ＨＤＣ４００が必要とした２３単位時間よりも少ない。このように、ＨＤＣ５００は、ＨＤＣ４００よりも高速に、バッファ３０８から読出チャネル・モジュール４０６へデータを転送する。したがって、ＨＤＣ５００では、ＨＤＣ４００よりも、システム動作を実行するための単位時間が多くなるとしてよい。これに代えて、または、これに加えて、ＨＤＣ５００は、「ｓｙｓ−ｏｐｓ」と指し示されている単位時間の間、ホストに対して所定の処理を行なうとしてよい。このように、ＨＤＣ５００は、読出チャネル・モジュール４０６をより高効率に利用するので、ＨＤＣ４００およびＨＤＣ３００よりもスループットが高くなる。
【０１０６】
図４Ｃに示すように、ＨＤＣ５００の読出データ経路は、ホスト・インターフェース・モジュール３０２と、ホストＦＩＦＯモジュール３０４と、デコーダ・モジュール３１３と、バッファＦＩＦＯモジュール３１０と、バッファ・マネージャ・モジュール５０６と、バッファ３０８と、チャネルＦＩＦＯモジュール４０４と、読出チャネル・モジュール４０６と、制御モジュール５０８とから構成される。
【０１０７】
制御モジュール５０８は、読出動作において、デコーダ・モジュール３１３、バッファ・マネージャ・モジュール５０６、および、読出チャネル・モジュール４０６を制御する。制御モジュール５０８は、読出動作が実行されている間、ホスト・インターフェース・モジュール３０２と媒体との間でのデータの流れを制御する制御信号を生成する。例えば、制御モジュール５０８は、読出動作が実行されている間、デコーダ・モジュール３１３、バッファ・マネージャ・モジュール５０６、読出チャネル・モジュール４０６を同期させる信号を出力するとしてよい。
【０１０８】
図４Ｄには、読出データ経路を介してＨＤＣ５００が実行する読出動作のタイミングチャートが図示されている。一例に過ぎないが、このタイミングチャートは、２０個のセクタ（ＳＳＤでは２０個のブロック）から成るセクタ群がどのように媒体から読み出されてホストに出力されるかを示すタイミングチャートである。制御モジュール５０８は、ホストから、媒体からデータ（例えば、２０個のセクタ）を読み出すことを要求する要求（Ｈｏｓｔ＿Ｒｅｑ）を受信する。図４Ｄに示すタイミングチャートでは、媒体は、Ｈｏｓｔ＿Ｒｅｑの受信時点においてデータを読み出す準備が出来ている（媒体レディ状態）と仮定される。例えば、媒体が準備できている状態とは、２０個のセクタから構成されている媒体の１トラック上にＨＤＤの読出ヘッドが位置している状態であるとしてよい。
【０１０９】
読出チャネル・モジュール４０６は、媒体から２０個のセクタを受信する。読出チャネル・モジュール４０６は、２０個のセクタを並行にチャネルＦＩＦＯモジュール４０４（図４Ｄではそれぞれ、ＣＦＩＦＯ１からＣＦＩＦＯ４という参照符号で示されている）に出力する。チャネルＦＩＦＯモジュール４０４は、以下のようにして、２０個のセクタを並行にバッファ・マネージャ・モジュール５０６に出力する。
【０１１０】
読出チャネル・モジュール４０６−１、４０６−２、４０６−３、および４０６−４は第１のタイミングにおいて、セクタ１からセクタ４を並行にチャネルＦＩＦＯモジュール４０４−１、４０４−２、４０４−３、および、４０４−４へとそれぞれ出力する。第１のタイミングとは、制御モジュール５０８がＨｏｓｔ＿Ｒｅｑを受信したタイミングであってよい。この後、読出チャネル・モジュール４０６−１、４０６−２、４０６−３、および４０６−４は第２のタイミングにおいて、セクタ５からセクタ８を並行にチャネルＦＩＦＯモジュール４０４−１、４０４−２、４０４−３、および、４０４−４へとそれぞれ出力する。以降、同様の処理を行なう。このように、読出チャネル・モジュール４０６は、制御モジュール５０８がＨｏｓｔ＿Ｒｅｑを受信してから約２０単位時間で、２０個のセクタをチャネルＦＩＦＯモジュール４０４に出力するとしてよい。
【０１１１】
チャネルＦＩＦＯモジュール４０４−１、４０４−２、４０４−３、および、４０４−４は第１のタイミングにおいて、セクタ１からセクタ４を並行にバッファ・マネージャ・モジュール５０６に出力する。この後、チャネルＦＩＦＯモジュール４０４−１、４０４−２、４０４−３、および、４０４−４は第２のタイミングにおいて、セクタ５からセクタ８を並行にバッファ・マネージャ・モジュール５０６に出力する。以降、同様に処理を行なう。このように、チャネルＦＩＦＯモジュール４０４は、約２０単位時間で２０個のセクタをバッファ・マネージャ・モジュール５０６に出力する。
【０１１２】
チャネルＦＩＦＯモジュール４０４が１セクタ群を受信するタイミングと、バッファ・マネージャ・モジュール５０６が当該セクタ群を受信するタイミングとの間のレイテンシは、存在しないか、または、無視できる程度に小さいとしてよい。したがって、バッファ・マネージャ・モジュール５０６は、制御モジュール５０８がＨｏｓｔ＿Ｒｅｑを受信してから約２０単位時間後に２０番目のセクタを受信するとしてよい。言い換えると、ＨＤＣ５００で２０個のセクタを読み出す際に必要な完了時間は実質的に、２０単位時間であり、ＨＤＣ４００およびＨＤＣ３００のそれぞれで必要な時間よりも短い。
【０１１３】
バッファ・マネージャ・モジュール５０６は、バッファ３０８に２０個のセクタを格納して並び替えるとしてよい。この後、バッファ・マネージャ・モジュール５０６は、２０個のセクタを取り出してバッファＦＩＦＯモジュール３１０（図４ＤではＢＦＩＦＯという参照符号で示す）に出力するとしてよい。バッファＦＩＦＯモジュール３１０は、２０個のセクタをデコーダ・モジュール３１３に出力するとしてよい。デコーダ・モジュール３１３は、２０個のセクタを復号化して、２０個の復号化セクタをホストＦＩＦＯモジュール３０４に出力するとしてよい（図４Ｄに参照符号ＨＦＩＦＯとして示す）。
【０１１４】
ホストＦＩＦＯモジュール３０４は、デコーダ・モジュール３１３のレイテンシによって発生する時間だけ遅延して、２０単位時間で２０個の復号化セクタを受信するとしてよい。例えば、デコーダ・モジュール３１３のレイテンシは、図示しているように、１単位時間と略等しいとしてよい。したがって、ホストＦＩＦＯモジュール３０４は、制御モジュール５０８がＨｏｓｔ＿Ｒｅｑを受信してから約２５単位時間が経過した時点で２０個のセクタの受信を完了するとしてよい。
【０１１５】
ホストＦＩＦＯモジュール３０４は、ファースト・イン・ファースト・アウト方式でホスト・インターフェース・モジュール３０２に２０個のセクタを出力する。制御モジュール５０８は、ホストＦＩＦＯモジュール３０４が２０番目のセクタをホスト・インターフェース・モジュール３０２に出力すると、要求完了（Ｒｅｑ＿Ｄｏｎｅ）信号をホストに出力する。このように、ＨＤＣ５００は、制御モジュール５０８がＨｏｓｔ＿Ｒｅｑを受信してかた約２５単位時間で、読出データ経路を介して２０個のセクタを媒体から読み出して、２０個のセクタをホストに出力するとしてよい。
【０１１６】
図４Ｅでは、ＨＤＣ５００の書込データ経路および読出データ経路が併存している様子が図示されている。つまり、図４Ｅに示しているＨＤＣ５００は、図４Ａおよび図４Ｃそれぞれに図示されているＨＤＣ５００の書込データ経路および読出データ経路の構成要素を全て備えている。したがって、図４Ａおよび図４Ｃを参照しつつ説明した内容は、図４Ｅについて説明する際に省略する。
【０１１７】
同図に示す例では、読出チャネル・モジュール４０６は、ＨＤＣ４００およびＨＤＣ３００が必要とする単位時間よりも短い、約２０単位時間にわたって媒体からのデータの読み出しのためにビジー状態にあるとしてよい。このように、ＨＤＣ５００は、ＨＤＣ４００およびＨＤＣ３００よりも高速に、読出チャネル・モジュール４０６からバッファ３０８へとデータを転送する。したがって、ＨＤＣ５００は、ＨＤＣ４００よりも多くの単位時間をシステム動作を実行するために利用するとしてよい。ＨＤＣ５００は、「ｓｙｓ−ｏｐｓ」と指し示されている単位時間の間、システム動作を実行するとしてよい。このため、ＨＤＣ５００は、読出チャネル・モジュール４０６をより高効率で利用するので、ＨＤＣ４００およびＨＤＣ３００よりもスループットが高くなる。
【０１１８】
ＨＤＣ５００は、実質完了時間を改善することに加えて、書込データ経路および読出データ経路を保護するという効果を持つ。具体的には、ＨＤＣ５００は、書込データ経路および読出データ経路をソフトエラーから保護する。通常、バッファ３０８はダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）を利用する一方、ホストＦＩＦＯモジュール３０４、バッファＦＩＦＯモジュール３１０、および、チャネルＦＩＦＯモジュール４０４はスタティックＲＡＭ（ＳＲＡＭ）を利用する。ＤＲＡＭおよびＳＲＡＭは電気特性（例えば、アーキテクチャおよびタイミング）が異なるので、書込データ経路および読出データ経路に沿ってデータ転送が行なわれる際にはソフトエラーが発生する可能性がある。エンコーダ・モジュール３１２およびデコーダ・モジュール３１３はそれぞれ、書込データ経路および読出データ経路をソフトエラーから保護する。
【０１１９】
より具体的に説明すると、書込データ経路の場合、エンコーダ・モジュール３１２は、エラー訂正コードを用いて、ホストＦＩＦＯモジュール３０４を介してホストから受信するデータを符号化する。このように、エンコーダ・モジュール３１２は、当該データがバッファ３０８に格納される前に、データにもしソフトエラーが含まれていれば訂正する。また、読出データ経路の場合、デコーダ・モジュール３１３は、エラー訂正コードを用いて、バッファＦＩＦＯモジュール３１０を介してバッファ３０８から受信したデータを復号化する。このように、デコーダ・モジュール３１３は、当該データがホストに出力される前に、データにソフトエラーが含まれていれば訂正する。
【０１２０】
本開示では全般的にＨＤＤについて説明しているが、これは一例に過ぎない。本開示の教示内容は、ＳＳＤを含むその他の種類のデータ・ストレージ装置にも適用され得る。本開示の教示内容は概して、複数のチャネルを介して並行にデータの送受信を行なうシステムに適用され得る。
【０１２１】
例えば、本開示の教示内容は、複数の送受信器を介して媒体で通信を行う通信装置に適用され得る。複数の送受信器は、並行にデータを送受信するとしてよい。送受信器はそれぞれ、対応するアンテナを介して媒体と通信するとしてよい。媒体は、有線媒体または無線媒体を含むとしてよい。このように、通信装置では、ＨＤＣ５００の読出チャネル・モジュール４０６に代わるものとして送受信器を利用するとしてよい。
【０１２２】
また、本開示の教示内容は、多チャネル信号処理システムに適用されるとしてよい。各チャネルは、アナログ・デジタル・コンバータ（ＡＤＣ）またはデジタル・アナログ・コンバータ（ＤＡＣ）を含むとしてよい。複数のチャネルは、データを並行して処理するとしてよい。このように、信号処理システムでは、ＨＤＣ５００の読出チャネル・モジュール４０６に代わるものとしてＡＤＣまたはＤＡＣを利用するとしてよい。
【０１２３】
本開示の教示内容が広く利用可能であることを考慮すると、ＨＤＣ５００の読出チャネル・モジュール４０６は概して、入出力（Ｉ／Ｏ）モジュールと呼ばれるとしてよい。このため、ストレージ装置（例えば、ＨＤＤおよびＳＳＤ）の場合、Ｉ／Ｏモジュールはデータの読み書きを行なう読出チャネル・モジュール４０６を含むとしてよい。通信装置の場合、Ｉ／Ｏモジュールはデータの送受信を行なう送受信器を含むとしてよい。信号処理システムの場合、Ｉ／ＯモジュールはＡＤＣまたはＤＡＣを含むとしてよい。
【０１２４】
さらに、上述したシステムおよび装置は、システム・オン・チップ（ＳＯＣ）として実現されるとしてよい。例えば、ＨＤＣ５００は、ＳＯＣとして実現されるとしてよい。送受信器を備える通信装置は、ＳＯＣとして実現され得る。ＡＤＣまたはＤＡＣを備える信号処理システムは、ＳＯＣとして実現され得る。一般的に、Ｉ／Ｏモジュールを備えるシステムおよび装置は、ＳＯＣとして実現され得る。
【０１２５】
図５Ａには、本開示に従って媒体に対してデータの書込／送信を行なう方法６００を構成するステップの一例を示す。６０１において開始される。６０２において、ホストから書込／送信コマンドを受信する。６０４において、書込／送信の対象となるデータをホストから受信する。６０６において、データを符号化して符号化データを生成する。６０８において、バッファに符号化データを格納する。６１０において、書込／送信動作が完了した旨をホストに通知する。
【０１２６】
６１２において、符号化データのうちＮ個の部分データをバッファからＮ個のチャネルＦＩＦＯへと並行に出力する。尚、Ｎは２以上の整数である。例えば、Ｎ個の部分データは、Ｎ個のセクタまたはＮ個のブロックを含むとしてよい。６１４において、Ｎ個のチャネルＦＩＦＯからＮ個の部分データを受信して、Ｎ個の部分データを並行にＮ個の読出チャネル／送信器を介して書き込む／送信する。６１６において終了する。
【０１２７】
図５Ｂは、本開示に従って媒体からデータの読出／受信を行なう方法６５０を構成するステップの一例を示す。６５２において開始される。６５４において、ホストから読出コマンドを受信する。６５６において、Ｎ個の読出チャネル／受信器を介して並行して媒体から符号化データのうちＮ個の部分データを読み出す／受信する。尚、Ｎは２以上の整数である。６５８において、Ｎ個の部分データをＮ個のチャネルＦＩＦＯに並行に出力する。６６０において、Ｎ個の部分データをバッファリングする。６６２において、Ｎ個の部分データを復号化して、復号化データを生成する。６６４において、復号化データをホストに出力する。６６６において終了する。
【０１２８】
本明細書において開示した幅広い教示内容は、さまざまな態様で実施することができる。このため、本開示は具体例を含むものの、図面、明細書、および、特許請求の範囲を参照することによって上記以外の変形例に想到することが明らかであるので、本開示の真の範囲は上述した具体例に限定されるものではない。
【図１Ａ】
0005354816.tif 000002
【図１Ｂ】
0005354816.tif 000003
【図１Ｃ】
0005354816.tif 000004
【図２Ａ】
0005354816.tif 000005
【図２Ｂ】
0005354816.tif 000006
【図２Ｃ】
0005354816.tif 000007
【図２Ｄ】
0005354816.tif 000008
【図３Ａ】
0005354816.tif 000009
【図３Ｂ】
0005354816.tif 000010
【図３Ｃ】
0005354816.tif 000011
【図３Ｄ】
0005354816.tif 000012
【図４Ａ】
0005354816.tif 000013
【図４Ｂ】
0005354816.tif 000014
【図４Ｃ】
0005354816.tif 000015
【図４Ｄ】
0005354816.tif 000016
【図４Ｅ】
0005354816.tif 000017
【図５Ａ】
0005354816.tif 000018
【図５Ｂ】
0005354816.tif 000019