【課題を解決するための手段】
【0005】
[0005] 本明細書において説明する種々の実施形態において、動く機械的部品を有するデータ記憶デバイス(例えば、ハード・ディスク・ドライブおよび他のディスク・ベース・データ記憶デバイス)において平均アクセス時間を短縮するためにコーディングを使用する技法およびシステムを提供する。少なくとも1つの実施形態では、平均ブロック・リード時間を短縮するためにドライブ・ブロックに跨がってコーディングを使用するディスク・ベース・データ記憶デバイスおよびシステムのために、単純な内部コーディング方式を提供する。次いで、データ記憶デバイスからデータを迅速かつ効率的に読み出すために、コード化シーキング(coded seeking)を採用することができる。
【0006】
[0006] 従来のディスク・ドライブでは、ドライブ・コントローラが、通例、リード要求(例えば、ディスクにおける特定のセクタに格納されたデータ・ブロック)に応答して、ディスクまたはプラッタから個々のデータ・ブロックをシークして引き出す。
【0007】
[0007] 本明細書において説明するようにコード化シーキングを使用すると、コントローラは、代わりに、リード要求に応答して、リード・ヘッドの位置に最も近い革新的コード化ブロック(innovative coded block)を識別して引き出すことができる。即ち、ディスク・コントローラに到達する要求毎に、コントローラは、平均物理ドライブ移動を減らすように、有用な情報を含む多くのコード化データ・ブロックから、現在のリード・ヘッド位置に最も近いものをシークすることができる。このように、個々のデータ・ブロックの平均シーク時間を短縮することができる。
【0008】
[0008] 本明細書において説明する概念、システム、回路、および技法の一形態によれば、ドライブ・コントローラは、(i)ディジタル・データを格納するための少なくとも1つのプラッタからの、複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの引き出しを要求するリード要求を受け、(ii)リード要求に応答して、少なくとも1つのプラッタに格納された複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの内、ディスク・ドライブのリード変換器の現在位置に最も近いものを識別し、(iii)識別した革新的コード化ブロックを少なくとも1つのプラッタから読み出すように構成される。
【0009】
[009] 一実施形態では、ドライブ・コントローラは、以下の特徴の1つ以上を含む、または以下の機能の1つ以上を実行することもできる。ドライブ・コントローラは、格納されたコード化ブロックの内、アクセスするために最小量の時間を要するものを選択することによって、リード変換器の現在位置に最も近い革新的コード化ブロックを識別するように構成されてもよい。ドライブ・コントローラは、格納されたコード化ブロックの内、リード変換器に物理的に最も近いものを選択することによって、リード変換器の現在位置に最も近い革新的コード化ブロックを識別するように構成されてもよい。および/またはドライブ・コントローラは、リード変換器の現在位置に最も近い革新的コード化ブロックを識別するとき、最後に引き出された複数のネーティブ・データ・ブロックに関連するコード化ブロックを無視するように構成されてもよい。
【0010】
[0010] 本明細書において説明する概念、システム、回路、および技法の他の形態によれば、革新的コード化ブロックが、複数のネーティブ・データ・ブロックの線形組み合わせと、線形組み合わせを生成するために使用された係数のリストとを含む。このようなコード化ブロックは、少なくとも1つのプラッタから読み出されるとよい。
【0011】
[0011] 一実施形態では、少なくともN個の線形独立コード化ブロックを1つ以上のプラッタに格納することができ、N個の線形独立コード化ブロックの内1つ以上が、複数のネーティブ・データ・ブロックに関連に関連付けられ、Nは、複数のネーティブ・データ・ブロック内におけるネーティブ・ブロックの数である。
【0012】
[00012] 本明細書において説明する概念、システム、回路、および技法の更に他の形態によれば、複数のネーティブ・データ・ブロックに関連する複数のネットワーク・コード化・ブロックが格納されているディスク・ベース・データ記憶デバイスからデータを引き出すときに使用する方法を提供する。更に特定すれば、この方法は、複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの引き出しを要求するリード要求を受けるステップと、リード要求に応答して、ディスク・ベース・データ記憶デバイスに格納されている革新的コード化ブロックの内、ディスク・ベース・データ記憶デバイスのリード変換器の現在位置に最も近いものを識別するステップと、識別した革新的コード化ブロックを読み出すステップとを含む。
【0013】
[00013] 一実施形態では、複数のネーティブ・データ・ブロックに関連し、ディスク・ベース・データ記憶デバイスに格納された複数のネットワーク・コード化ブロックは、各々、複数のネーティブ・データ・ブロックの線形組み合わせを含む。
【0014】
[0014] 一実施形態では、ディスク・ベース・データ記憶デバイスに格納され、複数のネーティブ・データ・ブロックに関連する複数のネットワーク・コード化ブロックは、各々、対応する線形組み合わせを生成するために使用される係数のリストを含む。
【0015】
[0015] 一実施形態では、革新的コード化ブロックの引き出しを要求するリード要求を受けるステップは、複数のネーティブ・データ・ブロックに関連する、以前に引き出されたコード化ブロックをデコードするときに有用である追加の自由度を提供するコード化ブロックの引き出しを要求するリード要求を受けるステップを含む。
【0016】
[0016] 一実施形態では、受けるステップ、識別するステップ、および読み出すステップは、ディスク・ベース・データ記憶デバイスに関連するコントローラによって実行される。
【0017】
[0017] 一実施形態では、ディスク・ベース・データ記憶デバイスは、少なくともN個の線形独立コード化ブロックをその内部に格納しており、Nが、複数のネーティブ・データ・ブロック内におけるネーティブ・ブロックの数である。
【0018】
[0018] 一実施形態では、ディスク・ベース・データ記憶デバイスは磁気ディスク・ドライブである。
[0019] 本明細書において説明する概念、システム、回路、および技法の他の形態によれば、複数のネーティブ・データ・ブロックに関連付けられた複数のネットワーク・コード化ブロックが格納されているディスク・ベース・データ記憶デバイスからデータを引き出すときに使用する方法を提供する。更に特定すれば、この方法は、複数のネーティブ・データ・ブロックが、ディスク・ベース・データ記憶デバイスから引き出される必要があると判定するステップと、複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの引き出しを要求するリード要求をディスク・ベース・データ記憶デバイスに送るステップとを含む。
【0019】
[0020] 一実施形態では、この方法は、更に、リード要求に応答して、複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックを受けるステップと、複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックを、メモリに一時的に格納するステップと、複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックが、複数のネーティブ・データ・ブロックを抽出するためのデコーディングを可能にする十分な数だけ、ディスク・ベース・データ記憶デバイスから引き出されたか否か判定するステップと、複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックが、デコーディングを可能にする十分な数だけディスク・ベース・データ記憶デバイスから引き出されていない場合、複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの引き出しを要求する他のリード要求をディスク・ベース・データ記憶デバイスに送るステップとを含む。
【0020】
[0021] 一実施形態では、この方法は、更に、複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックが、デコーディングを可能にする十分な数だけディスク・ベース・データ記憶デバイスから引き出されるまで、受けるステップ、一時的に格納するステップ、判定するステップ、および他のリード要求を送るステップを繰り返すステップを含む。
【0021】
[0022] 一実施形態では、この方法は、更に、十分な数の革新的コード化ブロックがディスク・ベース・データ記憶デバイスから引き出された後、ネーティブ・データ・ブロックを抽出するために革新的コード化ブロックをデコードするステップを含む。
【0022】
[0023] 一実施形態では、 複数のネーティブ・データ・ブロックに関連付けられ、ディスク・ベース・データ記憶デバイスに格納されている複数のネットワーク・コード化ブロックは、各々、複数のネーティブ・データ・ブロックの線形組み合わせを含む。
【0023】
[0024] 一実施形態では、複数のネーティブ・データ・ブロックに関連付けられ、ディスク・ベース・データ記憶デバイスに格納されている複数のネットワーク・コード化ブロックは、各々、対応する線形組み合わせを生成するために使用される係数のリストを含む。
【0024】
[0025] 本明細書において説明する概念、システム、回路、および技法の他の形態によれば、ディスク・ベース・データ記憶デバイスにデータを格納する方法を提供する。更に特定すれば、この方法は、ディスク・ベース・データ記憶デバイスに格納される複数のデータ・ブロックを識別するステップであって、複数のデータ・ブロックがN個のデータ・ブロックを有する、ステップと、複数のデータ・ブロックを使用して、複数のネットワーク・コード化ブロックを生成するステップであって、各ネットワーク・コード化ブロックが、他のネットワーク・コード化ブロックからの異なる1組のランダム係数を使用して生成される、複数のデータ・ブロックの線形組み合わせを含む、ステップと、対応するランダム係数と共に、ディスク・ベース・データ記憶デバイス内の個々のブロック位置にネットワーク・コード化ブロックを書き込むステップとを含む。
【0025】
[0026] 一実施形態では、ディスク・ベース・データ記憶デバイスに格納される複数のデータ・ブロックを識別するステップは、ディスク・ベース・データ記憶デバイスに格納されるファイルを取得するステップと、ファイルを、各々N個のデータ・ブロックを含む複数の等しいサイズのブロック・ウィンドウに分割するステップと、複数の等しいサイズのブロック・ウィンドウから1つの選択するステップとを含む。
【0026】
[0027] 一実施形態では、この方法は、更に、生成するステップおよび格納するステップを、複数の等しいサイズのブロック・ウィンドウにおけるブロック・ウィンドウ毎に繰り返すステップを含む。
【0027】
[0028] 本明細書において説明する概念、システム、回路、および技法の更に他の形態によれば、ディスク・ドライブは、ドライバ・コントローラと、このドライブ・コントローラの制御下で、ディジタル・データを格納する少なくとも1つのプラッタとを含み。
ドライブ・コントローラは、(i)複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの少なくとも1つのプラッタからの引き出しを要求するリード要求を受け、(ii)リード要求に応答して、少なくとも1つのプラッタに格納された複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの内、ディスク・ドライブのリード変換器の現在位置に最も近いものを識別し、(iii)識別した革新的コード化ブロックを少なくとも1つのプラッタから読み出すように構成される。
【0028】
[0029] 一実施形態では、少なくとも1つのプラッタから読み出され特定された革新的コード化ブロックは、複数のネーティブ・データ・ブロックの線形組み合わせと、線形組み合わせを生成するために使用された係数のリストとを含む。
【0029】
[0030] 一実施形態では、少なくとも1つのプラッタは、当該プラッタ上に格納され、複数のネーティブ・データ・ブロックに関連付けられた少なくともN個の線形独立コード化ブロックを有し、Nは複数のネーティブ・データ・ブロック内部にあるネーティブ・データ・ブロックの数である。
【0030】
[0031] 本明細書において説明する概念、システム、回路、および技法の更にまた他の形態によれば、システムは、プロセッサと、このプロセッサによるアクセスのためにディジタル・データを格納するディスク・ドライブとを含む。このプロセッサは、ネーティブ・データ・パケットのグループに関連する革新的コード化ブロックの引き出しを要求するリード要求を、ディスク・ドライブに送るように構成される。
【0031】
[0032] 一実施形態では、プロセッサは、デコーディングを可能にする十分な革新的コード化ブロックが引き出され終えるまで、ネーティブ・データ・パケットのグループに関連する革新的コード化ブロックの引き出しを要求するリード要求をディスク・ドライブに送り続けるように構成される。
【0032】
[0033] 一実施形態では、ディスク・ドライブはドライブ・コントローラを含み、このドライブ・コントローラが、(i)複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの引き出しを要求するリード要求を受け、(ii)リード要求に応答して、ディスク・ドライブに格納された複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの内、ディスク・ドライブのリード変換器の現在位置に最も近いものを識別し、(iii)リード変換器を使用して、識別した革新的コード化ブロックを読み出すように構成される。
【0033】
[0034] 一実施形態では、ドライブ・コントローラは、格納されたコード化ブロックの内、アクセスするために最小量の時間を要するものを選択することによって、リード変換器の現在位置に最も近い革新的コード化ブロックを識別するように構成される。
【0034】
[0035] 一実施形態では、ドライブ・コントローラは、格納されたコード化ブロックの内、リード変換器に物理的に最も近いものを選択することによって、リード変換器の現在位置に最も近い革新的コード化ブロックを識別するように構成される。
【0035】
[0036] 一実施形態では、ドライブ・コントローラは、リード変換器の現在位置に最も近い革新的コード化ブロックを識別するとき、最後に引き出された複数のネーティブ・データ・ブロックに関連するコード化ブロックを無視するように構成される。
【0036】
[0037] 一実施形態では、ディスク・ドライブはドライブ・コントローラを含む。このドライブ・コントローラは、(i)ディスク・ドライブに格納される複数のデータ・ブロックを取得し、複数のデータ・ブロックがN個のデータ・ブロックを有し、(ii)複数のデータ・ブロックを使用してある数のネットワーク・コード化ブロックを生成し、各ネットワーク・コード化ブロックが、他のネットワーク・コード化ブロックとは異なる1組のランダム係数を使用して生成された複数のデータ・ブロックの線形組み合わせを含み、(iii)生成したネットワーク・コード化ブロックを、対応するランダム係数と共に、ディスク・ドライブの1つ以上のプラッタにおける個々のブロック位置に書き込むように構成される。
【0037】
[00038] 本明細書において説明する概念、システム、回路、および技法の更にまた他の形態によれば、ドライブ・コントローラは、(i)ディジタル・データを格納するための少なくとも1つのプラッタからの、複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの引き出しを要求するリード要求を受け、(ii)リード要求に応答して、少なくとも1つのプラッタに格納された複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの内、ディスク・ドライブのリード変換器の現在位置に最も近いものを識別し、(iii)識別した革新的コード化ブロックを少なくとも1つのプラッタから読み出すように構成される。
【0038】
[0039] 一実施形態では、ドライブ・コントローラは、以下の特徴の1つ以上を含む、または以下の機能の1つ以上を実行することもできる。ドライブ・コントローラは、格納されたコード化ブロックの内、アクセスするために最小量の時間を要するものを選択することによって、リード変換器の現在位置に最も近い革新的コード化ブロックを識別するように構成されてもよい。ドライブ・コントローラは、格納されたコード化ブロックの内、リード変換器に物理的に最も近いものを選択することによって、リード変換器の現在位置に最も近い革新的コード化ブロックを識別するように構成されてもよい。および/またはドライブ・コントローラは、リード変換器の現在位置に最も近い革新的コード化ブロックを識別するとき、最後に引き出された複数のネーティブ・データ・ブロックに関連するコード化ブロックを無視するように構成されてもよい。
【0039】
[0040] 本明細書において説明する概念、システム、回路、および技法の更に他の形態によれば、革新的コード・ブロックは、複数のネーティブ・データ・ブロックの線形組み合わせと、この線形組み合わせを生成するために使用された係数のリストとを含む。このようなコード化ブロックは、少なくとも1つのプラッタから読み出されるとよい。
【0040】
[0041] 一実施形態では、少なくともN個の線形独立コード化ブロックを1つ以上のプラッタに格納することができ、N個の線形独立コード化ブロックの1つ以上が複数のネーティブ・データ・ブロックに関連付けられ、Nは、複数のネーティブ・データ・ブロック内部にあるネーティブ・データ・ブロックの数である。