特許第6106327号(P6106327)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マサチューセッツ インスティテュート オブ テクノロジーの特許一覧

特許6106327コード化シーキングを使用してデータ記憶デバイスにおけるアクセス時間を短縮する方法および装置
<>
  • 特許6106327-コード化シーキングを使用してデータ記憶デバイスにおけるアクセス時間を短縮する方法および装置 図000012
  • 特許6106327-コード化シーキングを使用してデータ記憶デバイスにおけるアクセス時間を短縮する方法および装置 図000013
  • 特許6106327-コード化シーキングを使用してデータ記憶デバイスにおけるアクセス時間を短縮する方法および装置 図000014
  • 特許6106327-コード化シーキングを使用してデータ記憶デバイスにおけるアクセス時間を短縮する方法および装置 図000015
  • 特許6106327-コード化シーキングを使用してデータ記憶デバイスにおけるアクセス時間を短縮する方法および装置 図000016
  • 特許6106327-コード化シーキングを使用してデータ記憶デバイスにおけるアクセス時間を短縮する方法および装置 図000017
  • 特許6106327-コード化シーキングを使用してデータ記憶デバイスにおけるアクセス時間を短縮する方法および装置 図000018
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6106327
(24)【登録日】2017年3月10日
(45)【発行日】2017年3月29日
(54)【発明の名称】コード化シーキングを使用してデータ記憶デバイスにおけるアクセス時間を短縮する方法および装置
(51)【国際特許分類】
   G06F 3/06 20060101AFI20170316BHJP
   G11B 20/10 20060101ALI20170316BHJP
   G11B 20/12 20060101ALI20170316BHJP
【FI】
   G06F3/06 302J
   G06F3/06 301J
   G11B20/10 311
   G11B20/12
【請求項の数】9
【全頁数】22
(21)【出願番号】特願2016-501509(P2016-501509)
(86)(22)【出願日】2014年3月12日
(65)【公表番号】特表2016-519354(P2016-519354A)
(43)【公表日】2016年6月30日
(86)【国際出願番号】US2014024368
(87)【国際公開番号】WO2014150837
(87)【国際公開日】20140925
【審査請求日】2015年11月13日
(31)【優先権主張番号】61/788,746
(32)【優先日】2013年3月15日
(33)【優先権主張国】US
(31)【優先権主張番号】13/965,645
(32)【優先日】2013年8月13日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】596060697
【氏名又は名称】マサチューセッツ インスティテュート オブ テクノロジー
(74)【代理人】
【識別番号】100140109
【弁理士】
【氏名又は名称】小野 新次郎
(74)【代理人】
【識別番号】100075270
【弁理士】
【氏名又は名称】小林 泰
(74)【代理人】
【識別番号】100101373
【弁理士】
【氏名又は名称】竹内 茂雄
(74)【代理人】
【識別番号】100118902
【弁理士】
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100120112
【弁理士】
【氏名又は名称】中西 基晴
(72)【発明者】
【氏名】メダード,ミューリエル
(72)【発明者】
【氏名】ファーナー,ウルリック・ジェイ
【審査官】 田上 隆一
(56)【参考文献】
【文献】 欧州特許出願公開第01612982(EP,A1)
【文献】 特開2006−031693(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06
(57)【特許請求の範囲】
【請求項1】
ディスク・ベース・データ記憶デバイスにデータを格納する方法であって、
納される前記データの1つ以上のブロック・ウィンドウを生成するステップであって、各ブロック・ウィンドウが、前記ディスク・ベース・データ記憶デバイスに格納される複数のデータ・ブロックを含み、前記ブロック・ウィンドウが各々N個のデータ・ブロックを有する、ステップと、
前記ブロック・ウィンドウの内1つ以上を使用して、ある数のネットワーク・コード化ブロックを生成するステップであって、各ネットワーク・コード化ブロックが、他のネットワーク・コード化ブロックとは異なる1組のランダム係数を使用して生成される、前記複数のデータ・ブロックの線形組み合わせを含む、ステップと、
対応するランダム係数と共に、前記ディスク・ベース・データ記憶デバイス内の個々のブロック位置に前記ネットワーク・コード化ブロックを書き込むステップであって、同じブロック・ウィンドウに関連するネットワーク・コード化ブロックが前記ディスク・ベース・データ記憶デバイスの1つ以上の連続ブロック位置に格納されるように、前記ネットワーク・コード化ブロックおよびブロック・ウィンドウに基づいて、前記ディスク・ベース・データ記憶デバイスにおける前記個々のブロック位置が決定される、ステップと、
を含
格納される前記データの1つ以上のブロック・ウィンドウを生成する前記ステップが、
前記ディスク・ベース・データ記憶デバイスに格納されるファイルを取得するステップと、
前記ファイルを、各々N個のデータ・ブロックを含む複数の等しいサイズのブロック・ウィンドウに分割するステップと、
前記複数の等しいサイズのブロック・ウィンドウから1つを選択するステップと、
を含む、方法。
【請求項2】
請求項1記載の方法において、
前記ディスク・ベース・データ記憶デバイスが、磁気ディスク・ドライブ、混成磁気およびソリッド・ステート・ディスク・ドライブ、ならびに光ディスク・ドライブの内少なくとも1つを含む、方法。
【請求項3】
請求項記載の方法であって、
生成するステップおよび書き込むステップを、前記複数の等しいサイズのブロック・ウィンドウにおけるブロック・ウィンドウ毎に繰り返すステップを含む、方法。
【請求項4】
ディスク・ドライブであって、
ドライブ・コントローラと、
前記ドライブ・コントローラの制御下で、ディジタル・データを格納する少なくとも1つのプラッタと、
を含み、
前記ドライブ・コントローラが、
前記少なくとも1つのプラッタに格納されるデータの1つ以上のブロック・ウィンドウを生成し、各ブロック・ウィンドウが、前記少なくとも1つのプラッタに格納される複数のデータ・ブロックを含み、前記ブロック・ウィンドウが各々N個のデータ・ブロックを有し、
各ブロック・ウィンドウを使用してある数のネットワーク・コード化ブロックを生成し、各ネットワーク・コード化ブロックが、他のネットワーク・コード化ブロックとは異なる1組のランダム係数を使用して生成された前記複数のデータ・ブロックの線形組み合わせを含み、
対応するランダム係数と共に、前記ネットワーク・コード化ブロックを前記少なくとも1つのプラッタにおける個々のブロック位置に書き込み、同じブロック・ウィンドウに関連するネットワーク・コード化ブロックが前記少なくとも1つのプラッタの1つ以上の連続ブロック位置に格納されるように、前記ネットワーク・コード化ブロックおよびブロック・ウィンドウに基づいて、前記少なくとも1つのプラッタにおける前記個々のブロック位置が決定される、
ように構成さ
格納される前記データの1つ以上のブロック・ウィンドウを生成することが、
前記少なくとも1つのプラッタに格納されるファイルを取得し、
前記ファイルを、各々N個のデータ・ブロックを含む複数の等しいサイズのブロック・ウィンドウに分割し、
前記複数の等しいサイズのブロック・ウィンドウから1つを選択すること、
を含む、ディスク・ドライブ。
【請求項5】
請求項記載のディスク・ドライブにおいて、前記ドライブ・コントローラが、更に、
複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの前記少なくとも1つのプラッタからの引き出しを要求するリード要求を受け、
前記リード要求に応答して、前記少なくとも1つのプラッタに格納された前記複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの内、前記少なくとも1つのプラッタのリード変換器の現在位置に最も近いものを識別し、
別した前記革新的コード化ブロックを前記少なくとも1つのプラッタから読み出すように構成され、
た前記革新的コード化ブロックが、前記複数のネーティブ・データ・ブロックの線形組み合わせと、前記線形組み合わせを生成するために使用された係数のリストとを含む、ディスク・ドライブ。
【請求項6】
請求項記載のディスク・ドライブにおいて、
前記ドライブ・コントローラが、更に、複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの引き出しを要求する前記リード要求を受け、前記リード要求に応答して、前記少なくとも1つのプラッタに格納された前記複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの内、前記少なくとも1つのプラッタのリード変換器の現在位置に最も近いものを識別し、前記リード変換器を使用して、前記識別した革新的コード化ブロックを読み出すように構成される、ディスク・ドライブ。
【請求項7】
請求項記載のディスク・ドライブにおいて、
前記ドライブ・コントローラが、格納されたコード化ブロックの内、アクセスするために最小量の時間を要するもの、および前記リード変換器に物理的に最も近いものの内少なくとも1つを選択することによって、前記リード変換器の現在位置に最も近い前記革新的コード化ブロックを識別するように構成される、ディスク・ドライブ。
【請求項8】
請求項記載のディスク・ドライブ において、
前記ドライブ・コントローラが、格納されたコード化ブロックの内、前記リード変換器に物理的に最も近いものを選択することによって、前記リード変換器の現在位置に最も近い前記革新的コード化ブロックを識別するように構成される、ディスク・ドライブ。
【請求項9】
請求項記載のディスク・ドライブ において、
前記ドライブ・コントローラが、前記リード変換器の現在位置に最も近い革新的コード化ブロックを識別するとき、最後に引き出された前記複数のネーティブ・データ・ブロックに関連するコード化ブロックを無視するように構成される、ディスク・ドライブ。
【発明の詳細な説明】
【技術分野】
【0001】
[0001] 本明細書において開示する主題は、一般には、データ格納に関し、更に特定すれば、コーディングを使用してデータ記憶デバイスにおけるデータ・アクセス速度を高める技法およびシステムに関する。
【背景技術】
【0002】
[0002] ハード・ディスク・ドライブは、あるときにはデータ・ストレージ・ネットワークの重要商品であった。過去20年において、ハード・ディスク・ドライブのコストは着実に減少する一方で、これらのドライブに格納されるデータの密度は、著しく上昇し、より安価で容量が多い記憶デバイスが生産された。また、ソリッド・ステート記憶デバイスも、特に、携帯用デバイスにおいて、ある種の性能上の利点のために、増々普及しつつある。例えば、ソリッド・ステート・ドライブにおいて動く部品がないことのため、データ読み取り時間がデバイスにわたって比較的一定となることが可能になる。加えて、ソリッド・ステート・ドライブには物理的なリード・ヘッド隘路がない。逆に、ハード・ディスク・ドライブにおけるアクチュエータ、リード/ライト・ヘッド、およびプラッタの物理的な動きにより、多くの場合、1つのデータ・ブロックのアクセス時間が、数ミリ秒から数十ミリ秒程度になる可能性がある。したがって、ハード・ディスク・ドライブは、最近の入力/出力(I/O)システムにおいて、隘路を作る可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【0003】
[0003] ハード・ディスク・ドライブに関連する隘路は、このようなデバイスのための数多くのI/Oレイテンシ低減アルゴリズムの開発を動機付けた。これらのアルゴリズムは、例えば、リード・アヘッド・アルゴリズム(read-ahead algorithm)、およびこれよりも複雑なその異形を含む。通例、これらのアルゴリズムは、共通のアクセス・パターンを予測し調査するスケジューリング方式に頼る。しかしながら、このようなアルゴリズムは、I/Oアクセス速度上昇に対する、増えつつある要求に追いつくことができない。
【0004】
[0004] ハード・ディスク・ドライブ、および動く機械的部品を有する他のデータ記憶デバイスにおいて平均アクセス時間を短縮することができる技法が、一般に求められている。
【課題を解決するための手段】
【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は、複数のネーティブ・データ・ブロック内部にあるネーティブ・データ・ブロックの数である。
【図面の簡単な説明】
【0041】
[0042] 以上の特徴は、以下の図面の説明から一層深く理解することができよう。
図1図1は、本明細書において説明する特徴を組み込むことができる計算システム例を示すブロック図である。
図2図2は、本明細書において説明する特徴を組み込むことができるディスク・ドライブ例の上面図である。
図3図3は、実施形態にしたがって、コード化ブロックのデータ・アクセス時間{E[T])の予想値が、どのようにwの異なる値に対してコード化ブロックを生成するために使用されるネーティブ・データ・ブロックの数rと共に変化し得るかを示すプロット例である。
図4図4は、実施形態にしたがって、コード化シーキングを実現するディスク・ドライブがブロック・ウィンドウの自由度に沿って動くに連れて、どのように E[T]/ E[T]が変化し得るかを示すプロット例である。
図5図5は、実施形態にしたがってコード化シーキングをサポートするように、ネットワーク・コーディングを使用してディスク・ドライブにデータを格納する方法を示す流れ図である。
図6図6は、実施形態にしたがって、コーディング・シーキングを使用してディスク・ドライブからデータを引き出すときに使用する方法を示す流れ図である。
図7図7は、実施形態にしたがって、コーディング・シーキングをサポートするディスク・ドライブからデータを引き出すときに使用する方法を示す流れ図である。
【発明を実施するための形態】
【0042】
[0050] コーディングは、単一ブロック内における誤り訂正のためにハード・ディスク・ドライブにおいて長い間使用されてきた。例えば、リード−ソロモン・コード、低密度パリティ・チェック(LDPC)コード、およびその他というようなコードは、ディスク・ドライブにおいて最も広く使用されるものの中にある。しかしながら、コーディングは、ハード・ドライブにおいてI/Oレイテンシを短縮するためには使用されたことがない。本明細書では、コーディングを使用して、ハード・ディスク・ドライブおよび動く機械的部品を有する他のデータ記憶デバイスにおいて平均アクセス時間を短縮する技法およびシステムについて説明する。これらの技法およびシステムは、リード・アヘッド・アルゴリズムおよび他のI/Oレイテンシ短縮アルゴリズムに加えて、またはその代わりに使用することができる。
【0043】
[0051] 図1は、本明細書において説明する特徴を組み込むことができる計算システム例10を示すブロック図である。図示のように、計算システム10は、例えば、ディジタル・プロセッサ12、メモリ14、およびディスク・ドライブ16を含むことができる。ディジタル・プロセッサ12は、ディスク・ドライブ16を使用して、例えば、プログラム・ファイルおよびデータ・ファイルを不揮発性形態で格納することができる。ディジタル・プロセッサ12は、メモリ14を使用して、例えば、現在プロセッサ12によって実行中であるプログラムを格納することができる。図示のように、ディジタル・プロセッサ12は、システム10の動作全体を制御するために、オペレーティング・システム18を実行することができる。また、ディジタル・プロセッサ12は1つ以上のアプリケーション・プログラム20も実行することができる。ディジタル・プロセッサ12は、コンピュータ命令を処理することができる任意のタイプのプロセッサを含むことができ、例えば、汎用マイクロプロセッサ、ディジタル信号プロセッサ(DSP)、縮小命令セット・コンピュータ(RISC)、マイクロコントローラ、および/または以上の組み合わせを含むその他を含む。
【0044】
[0052] 図1に示すように、ディスク・ドライブ16は、ドライブ・コントローラ22、ドライブ・キャッシュ(またはバッファ)24、および1つ以上のプラッタ26を含むことができる。ドライブ・コントローラ22は、ディスク・ドライブ16の動作を制御する。したがって、ドライブ・コントローラ22は1つ以上のディジタル処理デバイスを含む場合もある。プラッタ26は、ディジタル・データがディスク・ドライブ16内に格納される記憶媒体である。磁気ディスク・ドライブ(例えば、ハード・ディスク・ドライブ等)では、プラッタ26の各々に磁性体を塗布することができ、ディジタル・データを磁気形態でその上に格納することを可能にする(例えば、磁極反転または何らかの他の磁気的指標)。データは、通例、プラッタ26の表面上における同心円状トラック内に格納されるが、他の方式も存在する。データは、各プラッタ26の一面または両面に格納することができる。ディスク・ドライブは1つのプラッタのみを含む場合もあるが、通例では、複数のプラッタが中央スピンドル上に互いに重ね合わされており、中央スピンドルが、ディスク・ドライブ動作の間プラッタ26のために回転軸として役割を果たす。リードおよびライト・エレメントは、プラッタ26のトラックからデータを読み出し、データを書き込むための変換器として使用することができる。
【0045】
[0053] ドライブ・キャッシュ24は、リードおよびライト動作の間、プラッタ26と外部デバイス(例えば、プロセッサ12等)との間においてデータ・バッファとして使用することができる。つまり、ドライブ・キャッシュ24は、とりわけ、プラッタ26およびドライブ16の入力/出力ポートに関連するリード/ライト・チャネル間のデータ・レートの差を補償するために、リードおよび/またはライト・データの一時的データ・ストレージを提供するように動作することができる。ドライブ・キャッシュ24は、通例、任意の所与の時点において最大Cブロックを格納することができる。
【0046】
[0054] ディスク・ドライブ内部にある各アクティブ・プラッタ表面は、通例、1つのリード・エレメントおよび1つのライト・エレメントが関連付けられている。場合によっては、1つのエレメントが、プラッタ表面に対して読み出しおよび書き込みの双方を実行するために使用される場合もあるが、通例では、別個のリードおよびライト・エレメントが設けられる(しかし、これらは双方共同じリード/ライト・ヘッドの一部であってもよい)。リードおよびライト・エレメントは、通常、可動アクチュエータ・アームの端部に結合され、可動アクチュエータ・アームが、これらを対応するプラッタの表面に関して制御可能に位置付けることを可能にする。ドライブ・コントローラ22の制御下でアクチュエータ・アームを動かすために、ボイス・コイル・モータまたは他のタイプのモータを使用することができる。データは、通常、プラッタ表面上の既知の位置にある、固定長ブロックのディスク・ドライブ・プラッタに格納される(即ち、対応するトラックの既知の地点)。また、対応するアクセス動作の間にリードまたはライト・エレメントを位置付けるときに使用するために、ディスク・プラッタの表面上に、サーボ情報が提供されてもよい。
【0047】
[0055] ディスク・ドライブ動作の間、プラッタ26は所定の速度で中心軸の回りを回転させられる。通例、ドライブ・コントローラ22は、リードまたはライト要求を外部ソースから(例えば、プロセッサ12のオペレーティング・システム18等から)受けて、そのドライブからデータのブロックを読み出す(リード要求に対して)またはデータのブロックをドライブに書き込む(ライト要求に対して)ことによって、要求を実行する。リードおよびライト要求双方に対して、ドライブ・コントローラ22は最初に対応するリードまたはライト・エレメントに、該当するトラックをシークさせる。エレメントがトラックの中心に置かれた後、ドライブ・コントローラは、トラックの所望のブロック位置(またはセクタ)をリードまたはライト・エレメントの下に置くのに十分な量だけプラッタが回転するのを待ち、次いでデータをそのブロック位置から読み出させるかまたはそこに書き込ませる。
【0048】
[0056] ディスク・ドライブは、通例、ランダム・アクセス記憶デバイスである。即ち、任意の時点において、アクティブなプラッタ表面の内任意のものにおける任意のブロック位置またはセクタに対して、1つのデータ・ブロックを読み出すまたは書き込むことができる。 Advanced Format Standard(高度フォーマット規格)として知られる1つのディスク・ドライブ規格では、個々のデータ・ブロックはサイズが4096バイトである。他の規格では、他のサイズが使用される場合もある。一般的な書き込み技法では、ディスク・ドライブに格納されるデータ・ファイルは、複数のブロックに分割されてもよく、各ブロックは該当するブロック・サイズを有する。例えば、1つのファイルfは、1組の{fi=1データ・ブロックに分解されてもよい。次いで、ディスク・プラッタ上の利用可能なブロック位置に、個々のブロックを格納することができる。ディスク上のファイルに関連する種々のブロックの位置を追跡するレコードが維持される。多くの場合、プラッタ表面上で利用可能なブロック位置は、全てが一緒にグループ化されなくてもよい。つまり、ディスク表面上でブロックが格納される位置は、必ずしも互いに近いとは限らない。即ち、ファイルに関連するブロックは、場合によっては、1つ以上のプラッタの表面にわたって分散されることもある。
【0049】
[0057] 一般的なリードのシナリオでは、ドライブ・コントローラ22はその入力において、オペレーティング・システム18からブロック要求を受ける。ブロックfを求めるリード要求がコントローラ22に到達したとき、コントローラ22は最初にfが現在ドライブ・キャッシュ24内に配置されているか否かチェックすることができる。配置されている場合、コントローラ22は要求に応答してブロックfをキャッシュ24からオペレーティング・システム18に移させる。これは、典型的なディスク・リード動作と比較して、瞬時的な転送と見なすことができ、リード・プロセスを著しく高速化することができる。ブロックfがキャッシュ24内に配置されていない場合、ランダム・ブロック・アクセス時間Tでこのブロックをプラッタ26から読み出す。ブロック・アクセス時間Tは、次のように表すことができる。
【0050】
【数1】
【0051】
ここで、Rは、回転レイテンシであり、Rはシーク時間であり、w∈R(白抜き)は、プラッタの角回転速度とヘッドの回転運動との間の比率であり、eはコントローラ処理およびブロック読み出し時間である。この手法を使用すると、リード・プロセスをGI/G/1/Dキューとしてモデル化することができる。ここで、Dはキャッシュ・サイズの関数であり、平均サービス・レートは1/E[T]で与えられる。認めることができるように、ファイルに関連するブロックがディスク・ドライブのプラッタにわたってランダムに分散されている場合、ファイルに関連するブロックの全てをディスク・ドライブから個々に読み出すプロセスは、非常に時間を浪費する可能性がある。
【0052】
[0058] 本明細書において説明する種々の実施形態では、リード動作を一層高速で、一層効率的に実行することを可能にするように、データをディスク・ドライブのプラッタに格納するためにネットワーク・コーディングが使用される。このリード技法をコード化シーキング(coded seeking)と呼ぶこともできる。プラッタ表面上の対応する位置にファイルfに関連する生データ・ブロックfを格納する代わりに、そのファイルに関連するデータのネットワーク・コード化ブロックを格納する。ネットワーク・コーディングとは、データ・エレメントの線形組み合わせを生成することによってデータをエンコードする技法である。これらの線形組み合わせは、後に、デコードされて、元のデータ・エレメントを抽出することができる。デコーディング・プロセスは、通例、線形技法を使用して元のデータ・エレメントについて解くために、十分な数の線形組み合わせ(および/または元のデータ・エレメント)が「自由度」として利用可能であることを必要とする。
【0053】
[0059] ネットワーク・コーディングの良く知られている形態の1つに、ランダム線形ネットワーク・コーディング(RLNC)として知られるものがある。RLNCを使用すると、データ・エレメントは、ランダムに生成される係数を使用して、線形に組み合わせられる。同じデータ・エレメントの異なる線形組み合わせを生成するために、ランダムに生成された係数の異なる集合が使用される場合、結果的に得られる線形組み合わせは、通例互いに線形に独立であり(即ち、これらは革新的である(innovative))、つまり、各々が、デコーディングにおいて使用することができる自由度を表す。
【0054】
[0060] コード化格納のために可能な1つの技法では、ファイルfをL個の等しいサイズの「ブロック・ウィンドウ」またはジェネレーション(generation)に分離することができ、各々、r個のデータ・ブロックを含む。このファイルのl番目のブロック・ウィンドウを、Bと呼んでもよい。ブロック・ウィンドウBは、ファイルのブロック・インデックスの部分集合を含み、ファイルに関連する全ての他のブロック・ウィンドウからは素である(adjoint)ことができる。コード化ブロックcは、以下のように、ブロック・ウィンドウBに対して生成することができる。
【0055】
【数2】
【0056】
ここで、αはランダム係数であり、fはブロック・ウィンドウBに関連するデータ・ブロックである。ブロック・ウィンドウB毎に複数の異なるコード化ブロックcを生成することができる。係数αkは、ブロック・ウィンドウBに関連する個々のコード化ブロックcが、高い確率で、そして場合によっては確信をもって、互いに線形に独立となるように、サイズqの有限フィールドF(白抜き)から引き出すことができる。各コード化ブロックcは、つまり、対応するブロック・ウィンドウにおける全てのデータ・ブロックについて部分的な情報を提供する。ファイルfの各ブロック・ウィンドウに関連するコード化ブロックは、ディスク・ドライブのプラッタに格納される。ブロック・ウィンドウ毎に生成され格納されるコード化ブロックcの数は、少なくとも、ブロック・ウィンドウのデータ・ブロックの全てについて解くのに必要な数であるが、この数よりも多いことも可能である。各コード化ブロックを生成するために使用される係数αは、コード化ブロックと関連付けてディスク表面に格納することもできる(例えば、メタデータとして、または他の何らかの様態で)。
【0057】
[0061] オペレーティング・システム18が最終的にディスク・ドライブ16からファイルfを読み出すことを望む場合、全てのブロック・ウィンドウが復元され終えるまで、ブロック・ウィンドウの各々をディスク・ドライブ16から1つずつ読み出すことができる。ブロック・ウィンドウ毎に、オペレーティング・システム18はリード要求をドライブ・コントローラ22に送り、ブロック・ウィンドウに関連する革新的コード化ブロック(または自由度)を求める。リード要求毎に、ドライブ・コントローラ22は、1つのコード化ブロックを、このコード化ブロックに関連する係数と共に引き出すことができる。オペレーティング・システム18は、ブロック・ウィンドウのデータ・ブロックをデコードするのに十分な数の自由度が引き出され終えるまで、革新的コード化ブロックを求める要求を送り続けることができる。ネットワーク・コード化データ・ブロックをデコードするための任意の技法が、コード化ブロックをデコードするために使用されてもよい。少なくとも1つの実現例では、コード化ブロックが受け取られる毎にそれらをデコードするために、オペレーティング・システム18によって、ガウス−ジョーダン排除または同様の技法というような、累進デコーディング技法(progressive decoding technique)が使用されてもよい。他の技法が代わりに使用されてもよい。更に詳しく説明するが、コード化ブロック(または自由度)を引き出すためにドライブ・コントローラ22によって使用される技法は、ファイルfの全体的な引き出しを著しく高速化することができる。
【0058】
[0062] ドライブ・コントローラ22は、格納された各ファイルの各ブロック・ウィンドウに関連する全てのコード化ブロックのプラッタ上の位置のレコードを有することができる。特定のファイルの特定のブロック・ウィンドウに関連する革新的コード化ブロックを求めるリード要求を受けたとき、ドライブ・コントローラ22は、プラッタに格納された対応するコード化ブロックの内どれが、ディスク・ドライブ16のリード・ヘッドの現在位置に最も近いか判定することができる。次いで、ドライブ・コントローラ22は、対応するプラッタ表面上の対応するトラックをシークし、そのコード化ブロックを読み出すことができる。同じファイルの同じブロック・ウィンドウに関連する革新的コード化ブロックを求める次のリード要求を受けたとき、ドライブ・コントローラ22は、プラッタに格納された他の対応するコード化ブロックの内どれが、ディスク・ドライブ16のリード・ヘッドの現在位置に最も近いか判定することができる。次いで、新たな要求毎に、同じ手順を繰り返すことができる。このように、ある実現例では、ドライブ・コントローラ22は、同じファイル・リード動作中に所与のブロック・ウィンドウに関連する同じコード化ブロックをオペレーティング・システムに二度送らないように、最後に引き出されたデータを追跡し続けることができる(これは、2度目に読み出された同じコード化ブロックは、デコーディングにおいて使用するための新たな自由度を提供しないからである)。リード要求毎に「最も近い」コード化ブロックが使用されるので、ファイル・リード動作の間、大量のシークおよびレイテンシ時間を回避することができる。
【0059】
[0063] ある実現例では、ドライブ・コントローラ22は、最初に、識別されたブロック・ウィンドウに関連する革新的コード化ブロックが現在ドライブ・キャッシュ24内に格納されているか否か、コード化ブロックをプラッタから引き出す前に判定してもよい。ドライブ・キャッシュ24内に、識別されたブロック・ウィンドウに関連コード化ブロックがあり、このコード化ブロックが未だ現在のファイル・リード動作中にオペレーティング・システム18に送られていない場合、リード要求に応答して、このコード化ブロックをドライブ・キャッシュ24からオペレーティング・システム18に送ればよい。
【0060】
[0064] 典型的なシナリオでは、オペレーティング・システム18がブロック・ウィンドウBについて自由度を求める要求を送った場合、対応するディスク・ドライブのリード・ヘッドおよびプラッタは、互いに関してランダムな物理的定位(random physical orientation)となる。図2は、このような状況を示すディスク・ドライブ30の上面図である。図示のように、ドライブ30は、方向34に回転しているプラッタ32、アクチュエータ・アーム38の端部に結合されたリード・エレメント36、およびディスク・コントローラの制御下で軸を中心にアクチュエータ・アーム38を旋回させるボイス・コイル・モータ40を含む。リード要求を受けたとき、リード・エレメント36は、プラッタに格納された種々のコード化ブロックに関してランダムな位置にあってもよい。次いで、ドライブ・コントローラは、プラッタにおける種々のコード化ブロックの内どれが、リード・エレメント36の現在位置に最も近いか判定することができる。異なる実施形態では、「最も近い」という用語は、物理的に最も近い(即ち、コード化ブロックとリード・エレメントとの間の最短距離)、または時間的に最も近い(即ち、リード・エレメントを最も早く移動させることができるブロック)ことのいずれかを意味することができる。最も近いブロックを発見する技法は、リストにおける各ブロックまで移動するのに必要とされる距離または時間を計算し、そのリストから最小エレメントを発見することを含むこともできる。この距離または時間の計算は、ヘッドの現在位置、および各ブロックの物理位置に基づく。ウィンドウにおける全てのブロックに最適にアクセスする順序を計算するために、周知の巡回セールスマン問題(TSP)の解または近似解を求めても良い。更に具体的には、各ブロックを、無指向加重グラフにおけるエレメントと見なしてもよい。次いで、可能なヘッドおよびプラッタの動きをこのグラフにおける経路としてモデル化し、重みは移動する距離または時間の関数とする。
【0061】
[0065] 最も近いコード化ブロックcが識別された後、ドライブ・コントローラは、リード・エレメント36がコード化ブロックの上方に位置付けられ、このコード化ブロックに関連するトラック42を追従するまで、アクチュエータ・アーム38を旋回させることができる(これは、シーク動作として知られる)。ドライブ・コントローラは、このプロセスの間リード・エレメント36の現在位置を追跡するために、プラッタ32の表面から読み出したサーボ情報を使用してもよい。一旦リード・エレメント36が該当するトラック42上に来たなら、ドライブ・コントローラは、リード・エレメント36が所望のコード化ブロックcの上方に来る地点にプラッタ32が回転するまで待つ。トラック42に到達するリード・エレメントと、リード・エレメント36に到達する所望のコード化ブロックとの間の時間遅延は、回転レイテンシとして知られている。リード・エレメント36がトラック42上の所望のコード化ブロックに到達したとき、ドライブ・コントローラはプラッタ表面からコード化セクタ(および対応する係数情報)を読み出すことができる。次いで、読み取られる他のコード化ブロック毎に、このプロセスを繰り返すことができる。
【0062】
[0066] 既に説明したように、多くの場合、ブロック・ウィンドウに関連するコード化ブロックは、1つ以上のプラッタ表面上にランダムに広げられることが可能である。リード要求を受ける毎に、ディスク・コントローラは、ドライブに格納されている次に「最も近い」革新的コード化ブロックを選択して引き出すことができる。先の式(1)と同じ形態を使用すると、n番目のコード化ブロック(またはn番目の自由度)に対するランダム・アクセス時間Tnは、以下のように表すことができる。
【0063】
【数3】
【0064】
ここで、R1,nは、n番目のコード化ブロックの回転レイテンシであり、R2,nはn番目のコード化ブロックのシーク時間である。
[0067] 既に説明したように、リード要求を受けると、ドライブ・コントローラは、どのコード化ブロックがリード・エレメントに最も近いか判定し、次いでそのコード化ブロックを読み出すことができる。リード・エレメントをこのブロックの先頭まで移動させるのに要する時間は、リード・エレメントをコード化ブロックのトラックと整列させるためにアクチュエータ・アームが回転しなければならない角度、およびリード・エレメントが次にこのトラックに沿って対象のコード化ブロックの先頭まで移動しなければならない距離の双方に線形に関係する。1つの可能な手法では、パラメータθ2,n図2参照)は、n番目のコード化ブロックcに該当するトラック42の上方にリード・エレメントを位置付けるためにアクチュエータ・アーム38が回転しなければならない最大運動範囲の割合として表現することができ、パラメータθ1,nは、該当するトラック42においてn番目のコード・ブロックcを1回読み出すためにプラッタ32が回転しなければならない最大回転量の割合として表現することができる。
【0065】
[0068] RおよびRが同じコード化ブロックを指すと仮定し、更にブロック毎の回転レイテンシおよびシーク時間が統計的に独立であるとすると、ブロック・ウィンドウR1,1およびR2,1に関連する最初のコード化ブロックについて、アクセス時間T1は、次のように計算することができる。
【0066】
【数4】
【0067】
【数5】
【0068】
ここで、最小値が同じコード・ブロックに適用される。R1,1およびR2,1は双方共固定数の均一ランダム変数の最小値であるので、それらのPDFは以下の共通形態を有する。
【0069】
【数6】
【0070】
次いで、Tの予想値は、次のように与えられる。
【0071】
【数7】
【0072】
したがって、rが増大すると、ランダム自由度にアクセスするときのディスク・ドライブの速度も上昇する。尚、rが無限大に向かうに連れて、E[T]の値はE[e]に向かうことは注記してしかるべきである。最近のハード・ディスク・ドライブでは、シーク時間および回転レイテンシは、全リード時間の内約2/3を占める可能性がある。したがって、実用的なシステムでは、以上で説明した技法を使用すると、著しい速度利得を達成できることが可能である。図3は、wの複数の異なる値について、E[T]がどのようにrと共に変化するかを示すプロットである。
【0073】
[0069] 前述のように、ブロック・ウィンドウに関連するコード化ブロックは、ディスク・ドライブの1つのプラッタ表面、または複数のプラッタ表面に格納することができる。複数のプラッタ表面が使用される場合、リード・エレメントの現在位置に最も近いコード化ブロックを識別するために、同様の技法を使用すればよい。即ち、次のリード動作のためのアクセス時間を最小にするコード化ブロックを、この動作のために選択すればよい。
【0074】
[0070] コンテンツがr個のブロックに跨がってコード化された場合、対応するブロック・ウィンドウをデコードするためには、r個のブロック全てにアクセスする必要がある。一般に、コード化−シーキング利得は、アクセスされた最初の自由度に対して最大となり、後続の自由度に対して減少する。最後の自由度に対して、コード化シーキング・システムのアクセス時間は、非コード化方式と同等になることもある。nと共に減少する高速利得を測るために、比率E[T]/E[T]をメトリックとして使用することができる。近似として、パラメータrを上の式(7)におけるr−n+1と置き換えてもよい。図4は、ディスク・ドライブがブロック・ウィンドウの自由度に沿って動くに連れて、E[T]/E[T]がどのように変化し得るかを示すプロット例である。
【0075】
[0071] シーク時間の高速化には、ブロッキングの確率低減を含む、追加の利点を得ることができる。特に、ディスク・ドライブをGI/G/1/Dキューとしてモデル化する場合、非コード化システムに対して、
【0076】
【数8】
【0077】
に比例するブロッキング確率Pを有する。
ここで、λおよびμは、それぞれ、到達およびサービス率(service rate)に対するi番目のモーメントである。第1自由度に対する等価なコード化シーキング・ブロッキング確率ブロッキング確率Pは、
【0078】
【数9】
【0079】
に比例する。
E[e]が小さい場合、
【0080】
【数10】
【0081】
となる。
[0072] ハード・ディスク・ドライブの高速化、およびブロッキング確率の低下は、コード化シーキングの使用によって可能とされ、ディスク・ドライブ内における物理的に動く部品に対する依存度を低下させる傾向がある。種々の実施形態では、この技法は、オペレーティング・システムに、複数のコード化ブロックを格納し、十分な自由度が読み取られたときにブロックをデコードすることを要求する場合がある。本質的に、ディスク・ドライブによって本来行われる作業は、オペレーティング・システムまたはドライブ・コントローラに移され、こうして高速RAMまたは高速キャッシュをそれぞれ使用して実行することができる。コード化シーキングの利点は、要求が均一にランダムであるときに最も明白になる。要求に対してより多くの構造がある場合、コード化シーキングの利点よりも、コード化書き込みを実行しなければならない欠点が上回るおそれがある。コード化シーキングを実行するために使用されるブロック・ウィンドウのサイズは、本技法の利点全体に影響を及ぼす可能性がある。例えば、ブロック・ウィンドウが小さすぎる場合、コード化シーキングの利点は減少する。ブロック・ウィンドウが大きすぎる場合、デコーディング遅延が増大するおそれがある。特定のシステムにおいて使用すべき最良のブロック・ウィンドウ・サイズは、記憶ユニットのサイズ、ファイル・サイズ、ならびにオペレーティング・システムのタイミングおよび遅延保証要件に関係する。
【0082】
[0073] 図5図6、および図7は、実施形態にしたがってディスク・ドライブにおいてコード化シーキングを実現するための種々のプロセス例を示す流れ図である。
[0074] ここでは、流れ図における矩形エレメント(図5におけるエレメント52によって代表される)は「処理ブロック」を示し、コンピュータ・ソフトウェア命令または命令のグループを表すことができる。尚、図5図6、および図7の流れ図は、本明細書において説明した設計の一実施形態例を表し、概要を説明したプロセスに全体的に従うこのような図における変形(variations)は、本明細書において説明し特許請求する概念、システム、および技法の範囲内に該当すると見なすことは、注記してしかるべきである。
【0083】
[0075] あるいは、処理ブロックは、例えば、ディジタル信号プロセッサ回路、特定用途集積回路(ASIC)、またはフィールド・プログラマブル・ゲート・アレイ(FPGA)のような、機能的に等価な回路によって実行される動作を表すこともできる。この流れ図は、いずれの特定のプログラミング言語のシンタックスも示さない。むしろ、この流れ図は、当業者が回路を製作するためおよび/または対応する処理を実行するコンピュータ・ソフトウェアを生成するために必要とする機能的情報を示す。尚、ループおよび変数の初期化、ならびに一時的変数の使用というような、多くの決まり切ったプログラム・エレメントは示されない場合もあることは、注記してしかるべきである。本明細書において別段示されない限り、説明する特定のシーケンスは、例示に過ぎず、本明細書において説明および/または特許請求する概念の主旨から逸脱することなく変更できることは、当業者には認められよう。つまり、別段述べられない限り、以下で説明するプロセスは順不問であり、可能であれば、図5図6、および図7に示すシーケンスを任意の便利な順序または望ましい順序で実行できることを意味する。
【0084】
[0076] 図5は、実施形態にしたがってコード化シーキングをサポートするように、ネットワーク・コーディングを使用してディスク・ドライブにデータを格納する方法50を示す流れ図である。方法50は、例えば、オペレーティング・システム、ディスク・ドライブ・コントローラ、あるいはデータ記憶デバイス、システム、またはネットワークに関連する何らかの他のプロセッサまたはコントローラと関連付けて実現することができる。ある実施形態では、方法50に関連するアクトは、一緒に動作する複数のプロセッサおよび/またはコントローラを使用して実行されてもよい。最初に、ディスク・ドライブに格納されるファイルを受けるまたは識別することができる(ブロック52)。ファイルは、複数の等しい幅のブロック・ウィンドウ8に分割されてもよく、ブロック・ウィンドウ8は、各々、r個のデータ・ブロックを有する(ブロック54)。ブロック・ウィンドウの各々に対して、ネットワーク・コーディング技法を使用して、ある数の革新的コード化ブロックを生成することができる(ブロック56、58)。コード化ブロックの各々は、対応するr個のデータ・ブロックの線形組み合わせを含むことができる。r個のデータ・ブロックは、コード化ブロックが互いに線形に独立するように、ランダム係数を使用して作られる。一般に、r個以上のコード化ブロックが、ブロック・ウィンドウ毎に生成されればよい。次いで、ブロック・ウィンドウ毎に生成されたコード化ブロックは、ディスク・ドライブに格納することができる(ブロック60)。このプロセスは、元のファイルのブロック・ウィンドウの全てが処理され格納され終えるまで繰り返すことができる(ブロック62、64)。コード化シーキングをサポートしてコード化データをディスク・ドライブに書き込むための他の技法または変更技法を代わりに使用してもよい。例えば、このような手法の1つでは、最初にブロック・ウィンドウを形成せずに、ファイルを単にr個のデータ・ブロックに分割してもよい。次いで、格納のためにコード化ブロックを生成するために、R個のデータ・ブロックを使用してもよい。
【0085】
[0077] 図6は、実施形態にしたがって、コーディング・シーキングを使用してディスク・ドライブからデータを引き出すときに使用する方法70を示す流れ図である。方法70は、例えば、オペレーティング・システム、ディスク・ドライブ・コントローラ、あるいはデータ記憶デバイス、システム、またはネットワークに関連する何らかの他のプロセッサまたはコントローラと関連付けて実現することができる。ある実施形態では、方法50に関連するアクトは、一緒に動作する複数のプロセッサおよび/またはコントローラを使用して実行されてもよい。複数のネーティブ・データ・ブロックに関連する革新的コード化データブロック(または自由度)を要求するリード要求を最初に受ける(ブロック72)。複数のネーティブ・データ・ブロックは、例えば、データ・ファイルの特定のブロック・ウィンドウに関連する複数のブロック、またはネーティブ・データ・ブロックの何らかの他のグループを含むことができる。次に、複数のネーティブ・データ・ブロックに関連する革新的コード化データ・ブロックから、ディスク・ドライブのリード・ヘッドの現在位置に最も近いものを選択する(ブロック74)。複数のネーティブ・データ・ブロックに関連することが分かっているこのようなコード化ブロックのグループから、革新的コード化データ・ブロックを選択すればよい。次いで、ディスク・ドライブは、リード・エレメントを、選択したコード化データ・ブロックの位置に移動させ、コード化ブロックを読み出させることができる(ブロック76)。このプロセスは、複数のネーティブ・データ・ブロックに関連する革新的コード化データ・ブロックを求める新たなリード要求を受ける毎に、繰り返すことができる。ある実現例では、共通データ・リード・プロセスの間(例えば、特定のファイルのリード動作の間)に最後に読み出された複数のネーティブ・データ・ブロックに関連するコード化データ・ブロックは、選択プロセスの間無視され、現在のリード要求に応答してドライブから引き出されたコード化データ・ブロックが、以前に引き出されたコード化ブロックとは線形に独立であるようにする。
【0086】
[0078] 図7は、実施形態にしたがって、コーディング・シーキングをサポートするディスク・ドライブからデータを引き出すときに使用する方法80を示す流れ図である。方法80は、例えば、データを不揮発性形態で格納するためにディスク・ドライブをしようする計算システムのオペレーティング・システム、あるいはディスク・ドライブに関連する何らかの他のプロセッサまたはコントローラと関連付けて実現されてもよい。最初に、ネーティブ・データ・ブロックのグループをディスク・ドライブから引き出す必要があると判定する(ブロック82)。ある実現例では、ネーティブ・データ・ブロックのグループは、データ記憶デバイスに格納されたデータ・ファイルに関連するブロック・ウィンドウを表すこともできるが、他のデータ・ブロックのグループを代わりに使用してもよい。ある実施形態では、データ・ブロックのグループ内における1つのデータ・ブロックのみが対象になることもあるが、所望のブロックにアクセスするためには、ブロック全体を引き出してデコードする必要がある。次に、データ・ブロックのグループに関連する革新的コード化ブロック(または自由度)を読み出すことを要求するリード要求を、ディスク・ドライブに送ることができる(ブロック84)。この要求に応答してディスク・ドライブから読み出されたコード化ブロックは、続いてディスク・ドライブから受け取られ、一時的にメモリに格納される(ブロック86)。次に、コード化ブロックからネーティブ・データ・ブロックのグループを抽出するのに十分な革新的コード化ブロック(または自由度)がディスク・ドライブから引き出されたか否か判定を行うことができる(ブロック88)。否定である場合(ブロック88においてN)、データ・ブロックのグループに関連する革新的コード化ブロックを要求する他のリード要求をディスク・ドライブに送ることができ(ブロック84)、このプロセスを繰り返す。このプロセスは、デコーディングを可能にするだけの十分な数の革新的コード化ブロックが引き出され終えるまで、継続することができる(ブロック88においてY)。この時点において、革新的コード化ブロックをデコードすることができる(ブロック90)。ある実現例では、これは、引き出されたコード化ブロックの全てを使用する全デコーディング動作を含んでもよい。累進デコーディングが使用される実現例では、これは、デコーディング・プロセスの最後のステップを実行することを含めばよい。
【0087】
[0079] 以上では磁気ハード・ディスク・ドライブのコンテキストで説明したが、本明細書において説明した特徴の多くは、例えば、他のディスク・ベース記憶デバイス(例えば、CDROM、DVD、BluRay(登録商標)ディスク等)を含む、1つ以上の可動部品を含む他のデータ記憶デバイスと関連しても使用できることは認められてしかるべきである。
【0088】
[0080] 以上、本発明の実施形態例について説明したが、それらの概念を組み込んだ他の実施形態が使用されてもよいことは、今や当業者には明白であろう。本明細書に含まれる実施形態は、開示された実施形態に限定されるのではなく、添付した請求項の主旨および範囲のみによって限定されてしかるべきである。本明細書内において引用した全ての刊行物および引例は、本明細書において引用したことによってその内容全体が明示的に本願にも含まれるものとする。
図1
図2
図3
図4
図5
図6
図7