JP2016519354A - コード化シーキングを使用してデータ記憶デバイスにおけるアクセス時間を短縮する方法および装置 - Google Patents

コード化シーキングを使用してデータ記憶デバイスにおけるアクセス時間を短縮する方法および装置 Download PDF

Info

Publication number
JP2016519354A
JP2016519354A JP2016501509A JP2016501509A JP2016519354A JP 2016519354 A JP2016519354 A JP 2016519354A JP 2016501509 A JP2016501509 A JP 2016501509A JP 2016501509 A JP2016501509 A JP 2016501509A JP 2016519354 A JP2016519354 A JP 2016519354A
Authority
JP
Japan
Prior art keywords
blocks
block
disk
coded
data blocks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016501509A
Other languages
English (en)
Other versions
JP6106327B2 (ja
Inventor
メダード,ミューリエル
ファーナー,ウルリック・ジェイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Massachusetts Institute of Technology
Original Assignee
Massachusetts Institute of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Massachusetts Institute of Technology filed Critical Massachusetts Institute of Technology
Publication of JP2016519354A publication Critical patent/JP2016519354A/ja
Application granted granted Critical
Publication of JP6106327B2 publication Critical patent/JP6106327B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10009Improvement or modification of read or write signals
    • G11B20/10481Improvement or modification of read or write signals optimisation methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/12Formatting, e.g. arrangement of data block or words on the record carriers
    • G11B20/1217Formatting, e.g. arrangement of data block or words on the record carriers on discs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • G11B27/102Programmed access in sequence to addressed parts of tracks of operating record carriers
    • G11B27/105Programmed access in sequence to addressed parts of tracks of operating record carriers of operating discs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B2020/10916Seeking data on the record carrier for preparing an access to a specific address

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • General Engineering & Computer Science (AREA)

Abstract

ディスク・ベース・データ記憶デバイス(例えば、ハード・ディスク・ドライブ等)に格納されるデータ・ブロックが、一緒にコード化され、複数の線形に独立したネットワーク・コード化ブロックを形成する。次いで、ネットワーク・コード化ブロックは、データ記憶デバイスに格納される。次いで、時間効率的にデータ記憶デバイスから元のデータ・ブロックを引き出すために、コード化シーキングを使用することができる。元のデータ・ブロックに関連する革新的コード化パケットを要求するリード要求を、データ記憶デバイスに送ることができる。このリード要求に応答して、データ記憶デバイスは、このデバイスのリード・エレメントの現在位置に元も近い革新的コード化パケットをディスクから読み出すことができる。【選択図】図1

Description

[0001] 本明細書において開示する主題は、一般には、データ格納に関し、更に特定すれば、コーディングを使用してデータ記憶デバイスにおけるデータ・アクセス速度を高める技法およびシステムに関する。
[0002] ハード・ディスク・ドライブは、あるときにはデータ・ストレージ・ネットワークの重要商品であった。過去20年において、ハード・ディスク・ドライブのコストは着実に減少する一方で、これらのドライブに格納されるデータの密度は、著しく上昇し、より安価で容量が多い記憶デバイスが生産された。また、ソリッド・ステート記憶デバイスも、特に、携帯用デバイスにおいて、ある種の性能上の利点のために、増々普及しつつある。例えば、ソリッド・ステート・ドライブにおいて動く部品がないことのため、データ読み取り時間がデバイスにわたって比較的一定となることが可能になる。加えて、ソリッド・ステート・ドライブには物理的なリード・ヘッド隘路がない。逆に、ハード・ディスク・ドライブにおけるアクチュエータ、リード/ライト・ヘッド、およびプラッタの物理的な動きにより、多くの場合、1つのデータ・ブロックのアクセス時間が、数ミリ秒から数十ミリ秒程度になる可能性がある。したがって、ハード・ディスク・ドライブは、最近の入力/出力(I/O)システムにおいて、隘路を作る可能性がある。
[0003] ハード・ディスク・ドライブに関連する隘路は、このようなデバイスのための数多くのI/Oレイテンシ低減アルゴリズムの開発を動機付けた。これらのアルゴリズムは、例えば、リード・アヘッド・アルゴリズム(read-ahead algorithm)、およびこれよりも複雑なその異形を含む。通例、これらのアルゴリズムは、共通のアクセス・パターンを予測し調査するスケジューリング方式に頼る。しかしながら、このようなアルゴリズムは、I/Oアクセス速度上昇に対する、増えつつある要求に追いつくことができない。
[0004] ハード・ディスク・ドライブ、および動く機械的部品を有する他のデータ記憶デバイスにおいて平均アクセス時間を短縮することができる技法が、一般に求められている。
[0005] 本明細書において説明する種々の実施形態において、動く機械的部品を有するデータ記憶デバイス(例えば、ハード・ディスク・ドライブおよび他のディスク・ベース・データ記憶デバイス)において平均アクセス時間を短縮するためにコーディングを使用する技法およびシステムを提供する。少なくとも1つの実施形態では、平均ブロック・リード時間を短縮するためにドライブ・ブロックに跨がってコーディングを使用するディスク・ベース・データ記憶デバイスおよびシステムのために、単純な内部コーディング方式を提供する。次いで、データ記憶デバイスからデータを迅速かつ効率的に読み出すために、コード化シーキング(coded seeking)を採用することができる。
[0006] 従来のディスク・ドライブでは、ドライブ・コントローラが、通例、リード要求(例えば、ディスクにおける特定のセクタに格納されたデータ・ブロック)に応答して、ディスクまたはプラッタから個々のデータ・ブロックをシークして引き出す。
[0007] 本明細書において説明するようにコード化シーキングを使用すると、コントローラは、代わりに、リード要求に応答して、リード・ヘッドの位置に最も近い革新的コード化ブロック(innovative coded block)を識別して引き出すことができる。即ち、ディスク・コントローラに到達する要求毎に、コントローラは、平均物理ドライブ移動を減らすように、有用な情報を含む多くのコード化データ・ブロックから、現在のリード・ヘッド位置に最も近いものをシークすることができる。このように、個々のデータ・ブロックの平均シーク時間を短縮することができる。
[0008] 本明細書において説明する概念、システム、回路、および技法の一形態によれば、ドライブ・コントローラは、(i)ディジタル・データを格納するための少なくとも1つのプラッタからの、複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの引き出しを要求するリード要求を受け、(ii)リード要求に応答して、少なくとも1つのプラッタに格納された複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの内、ディスク・ドライブのリード変換器の現在位置に最も近いものを識別し、(iii)識別した革新的コード化ブロックを少なくとも1つのプラッタから読み出すように構成される。
[009] 一実施形態では、ドライブ・コントローラは、以下の特徴の1つ以上を含む、または以下の機能の1つ以上を実行することもできる。ドライブ・コントローラは、格納されたコード化ブロックの内、アクセスするために最小量の時間を要するものを選択することによって、リード変換器の現在位置に最も近い革新的コード化ブロックを識別するように構成されてもよい。ドライブ・コントローラは、格納されたコード化ブロックの内、リード変換器に物理的に最も近いものを選択することによって、リード変換器の現在位置に最も近い革新的コード化ブロックを識別するように構成されてもよい。および/またはドライブ・コントローラは、リード変換器の現在位置に最も近い革新的コード化ブロックを識別するとき、最後に引き出された複数のネーティブ・データ・ブロックに関連するコード化ブロックを無視するように構成されてもよい。
[0010] 本明細書において説明する概念、システム、回路、および技法の他の形態によれば、革新的コード化ブロックが、複数のネーティブ・データ・ブロックの線形組み合わせと、線形組み合わせを生成するために使用された係数のリストとを含む。このようなコード化ブロックは、少なくとも1つのプラッタから読み出されるとよい。
[0011] 一実施形態では、少なくともN個の線形独立コード化ブロックを1つ以上のプラッタに格納することができ、N個の線形独立コード化ブロックの内1つ以上が、複数のネーティブ・データ・ブロックに関連に関連付けられ、Nは、複数のネーティブ・データ・ブロック内におけるネーティブ・ブロックの数である。
[00012] 本明細書において説明する概念、システム、回路、および技法の更に他の形態によれば、複数のネーティブ・データ・ブロックに関連する複数のネットワーク・コード化・ブロックが格納されているディスク・ベース・データ記憶デバイスからデータを引き出すときに使用する方法を提供する。更に特定すれば、この方法は、複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの引き出しを要求するリード要求を受けるステップと、リード要求に応答して、ディスク・ベース・データ記憶デバイスに格納されている革新的コード化ブロックの内、ディスク・ベース・データ記憶デバイスのリード変換器の現在位置に最も近いものを識別するステップと、識別した革新的コード化ブロックを読み出すステップとを含む。
[00013] 一実施形態では、複数のネーティブ・データ・ブロックに関連し、ディスク・ベース・データ記憶デバイスに格納された複数のネットワーク・コード化ブロックは、各々、複数のネーティブ・データ・ブロックの線形組み合わせを含む。
[0014] 一実施形態では、ディスク・ベース・データ記憶デバイスに格納され、複数のネーティブ・データ・ブロックに関連する複数のネットワーク・コード化ブロックは、各々、対応する線形組み合わせを生成するために使用される係数のリストを含む。
[0015] 一実施形態では、革新的コード化ブロックの引き出しを要求するリード要求を受けるステップは、複数のネーティブ・データ・ブロックに関連する、以前に引き出されたコード化ブロックをデコードするときに有用である追加の自由度を提供するコード化ブロックの引き出しを要求するリード要求を受けるステップを含む。
[0016] 一実施形態では、受けるステップ、識別するステップ、および読み出すステップは、ディスク・ベース・データ記憶デバイスに関連するコントローラによって実行される。
[0017] 一実施形態では、ディスク・ベース・データ記憶デバイスは、少なくともN個の線形独立コード化ブロックをその内部に格納しており、Nが、複数のネーティブ・データ・ブロック内におけるネーティブ・ブロックの数である。
[0018] 一実施形態では、ディスク・ベース・データ記憶デバイスは磁気ディスク・ドライブである。
[0019] 本明細書において説明する概念、システム、回路、および技法の他の形態によれば、複数のネーティブ・データ・ブロックに関連付けられた複数のネットワーク・コード化ブロックが格納されているディスク・ベース・データ記憶デバイスからデータを引き出すときに使用する方法を提供する。更に特定すれば、この方法は、複数のネーティブ・データ・ブロックが、ディスク・ベース・データ記憶デバイスから引き出される必要があると判定するステップと、複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの引き出しを要求するリード要求をディスク・ベース・データ記憶デバイスに送るステップとを含む。
[0020] 一実施形態では、この方法は、更に、リード要求に応答して、複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックを受けるステップと、複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックを、メモリに一時的に格納するステップと、複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックが、複数のネーティブ・データ・ブロックを抽出するためのデコーディングを可能にする十分な数だけ、ディスク・ベース・データ記憶デバイスから引き出されたか否か判定するステップと、複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックが、デコーディングを可能にする十分な数だけディスク・ベース・データ記憶デバイスから引き出されていない場合、複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの引き出しを要求する他のリード要求をディスク・ベース・データ記憶デバイスに送るステップとを含む。
[0021] 一実施形態では、この方法は、更に、複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックが、デコーディングを可能にする十分な数だけディスク・ベース・データ記憶デバイスから引き出されるまで、受けるステップ、一時的に格納するステップ、判定するステップ、および他のリード要求を送るステップを繰り返すステップを含む。
[0022] 一実施形態では、この方法は、更に、十分な数の革新的コード化ブロックがディスク・ベース・データ記憶デバイスから引き出された後、ネーティブ・データ・ブロックを抽出するために革新的コード化ブロックをデコードするステップを含む。
[0023] 一実施形態では、 複数のネーティブ・データ・ブロックに関連付けられ、ディスク・ベース・データ記憶デバイスに格納されている複数のネットワーク・コード化ブロックは、各々、複数のネーティブ・データ・ブロックの線形組み合わせを含む。
[0024] 一実施形態では、複数のネーティブ・データ・ブロックに関連付けられ、ディスク・ベース・データ記憶デバイスに格納されている複数のネットワーク・コード化ブロックは、各々、対応する線形組み合わせを生成するために使用される係数のリストを含む。
[0025] 本明細書において説明する概念、システム、回路、および技法の他の形態によれば、ディスク・ベース・データ記憶デバイスにデータを格納する方法を提供する。更に特定すれば、この方法は、ディスク・ベース・データ記憶デバイスに格納される複数のデータ・ブロックを識別するステップであって、複数のデータ・ブロックがN個のデータ・ブロックを有する、ステップと、複数のデータ・ブロックを使用して、複数のネットワーク・コード化ブロックを生成するステップであって、各ネットワーク・コード化ブロックが、他のネットワーク・コード化ブロックからの異なる1組のランダム係数を使用して生成される、複数のデータ・ブロックの線形組み合わせを含む、ステップと、対応するランダム係数と共に、ディスク・ベース・データ記憶デバイス内の個々のブロック位置にネットワーク・コード化ブロックを書き込むステップとを含む。
[0026] 一実施形態では、ディスク・ベース・データ記憶デバイスに格納される複数のデータ・ブロックを識別するステップは、ディスク・ベース・データ記憶デバイスに格納されるファイルを取得するステップと、ファイルを、各々N個のデータ・ブロックを含む複数の等しいサイズのブロック・ウィンドウに分割するステップと、複数の等しいサイズのブロック・ウィンドウから1つの選択するステップとを含む。
[0027] 一実施形態では、この方法は、更に、生成するステップおよび格納するステップを、複数の等しいサイズのブロック・ウィンドウにおけるブロック・ウィンドウ毎に繰り返すステップを含む。
[0028] 本明細書において説明する概念、システム、回路、および技法の更に他の形態によれば、ディスク・ドライブは、ドライバ・コントローラと、このドライブ・コントローラの制御下で、ディジタル・データを格納する少なくとも1つのプラッタとを含み。
ドライブ・コントローラは、(i)複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの少なくとも1つのプラッタからの引き出しを要求するリード要求を受け、(ii)リード要求に応答して、少なくとも1つのプラッタに格納された複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの内、ディスク・ドライブのリード変換器の現在位置に最も近いものを識別し、(iii)識別した革新的コード化ブロックを少なくとも1つのプラッタから読み出すように構成される。
[0029] 一実施形態では、少なくとも1つのプラッタから読み出され特定された革新的コード化ブロックは、複数のネーティブ・データ・ブロックの線形組み合わせと、線形組み合わせを生成するために使用された係数のリストとを含む。
[0030] 一実施形態では、少なくとも1つのプラッタは、当該プラッタ上に格納され、複数のネーティブ・データ・ブロックに関連付けられた少なくともN個の線形独立コード化ブロックを有し、Nは複数のネーティブ・データ・ブロック内部にあるネーティブ・データ・ブロックの数である。
[0031] 本明細書において説明する概念、システム、回路、および技法の更にまた他の形態によれば、システムは、プロセッサと、このプロセッサによるアクセスのためにディジタル・データを格納するディスク・ドライブとを含む。このプロセッサは、ネーティブ・データ・パケットのグループに関連する革新的コード化ブロックの引き出しを要求するリード要求を、ディスク・ドライブに送るように構成される。
[0032] 一実施形態では、プロセッサは、デコーディングを可能にする十分な革新的コード化ブロックが引き出され終えるまで、ネーティブ・データ・パケットのグループに関連する革新的コード化ブロックの引き出しを要求するリード要求をディスク・ドライブに送り続けるように構成される。
[0033] 一実施形態では、ディスク・ドライブはドライブ・コントローラを含み、このドライブ・コントローラが、(i)複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの引き出しを要求するリード要求を受け、(ii)リード要求に応答して、ディスク・ドライブに格納された複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの内、ディスク・ドライブのリード変換器の現在位置に最も近いものを識別し、(iii)リード変換器を使用して、識別した革新的コード化ブロックを読み出すように構成される。
[0034] 一実施形態では、ドライブ・コントローラは、格納されたコード化ブロックの内、アクセスするために最小量の時間を要するものを選択することによって、リード変換器の現在位置に最も近い革新的コード化ブロックを識別するように構成される。
[0035] 一実施形態では、ドライブ・コントローラは、格納されたコード化ブロックの内、リード変換器に物理的に最も近いものを選択することによって、リード変換器の現在位置に最も近い革新的コード化ブロックを識別するように構成される。
[0036] 一実施形態では、ドライブ・コントローラは、リード変換器の現在位置に最も近い革新的コード化ブロックを識別するとき、最後に引き出された複数のネーティブ・データ・ブロックに関連するコード化ブロックを無視するように構成される。
[0037] 一実施形態では、ディスク・ドライブはドライブ・コントローラを含む。このドライブ・コントローラは、(i)ディスク・ドライブに格納される複数のデータ・ブロックを取得し、複数のデータ・ブロックがN個のデータ・ブロックを有し、(ii)複数のデータ・ブロックを使用してある数のネットワーク・コード化ブロックを生成し、各ネットワーク・コード化ブロックが、他のネットワーク・コード化ブロックとは異なる1組のランダム係数を使用して生成された複数のデータ・ブロックの線形組み合わせを含み、(iii)生成したネットワーク・コード化ブロックを、対応するランダム係数と共に、ディスク・ドライブの1つ以上のプラッタにおける個々のブロック位置に書き込むように構成される。
[00038] 本明細書において説明する概念、システム、回路、および技法の更にまた他の形態によれば、ドライブ・コントローラは、(i)ディジタル・データを格納するための少なくとも1つのプラッタからの、複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの引き出しを要求するリード要求を受け、(ii)リード要求に応答して、少なくとも1つのプラッタに格納された複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの内、ディスク・ドライブのリード変換器の現在位置に最も近いものを識別し、(iii)識別した革新的コード化ブロックを少なくとも1つのプラッタから読み出すように構成される。
[0039] 一実施形態では、ドライブ・コントローラは、以下の特徴の1つ以上を含む、または以下の機能の1つ以上を実行することもできる。ドライブ・コントローラは、格納されたコード化ブロックの内、アクセスするために最小量の時間を要するものを選択することによって、リード変換器の現在位置に最も近い革新的コード化ブロックを識別するように構成されてもよい。ドライブ・コントローラは、格納されたコード化ブロックの内、リード変換器に物理的に最も近いものを選択することによって、リード変換器の現在位置に最も近い革新的コード化ブロックを識別するように構成されてもよい。および/またはドライブ・コントローラは、リード変換器の現在位置に最も近い革新的コード化ブロックを識別するとき、最後に引き出された複数のネーティブ・データ・ブロックに関連するコード化ブロックを無視するように構成されてもよい。
[0040] 本明細書において説明する概念、システム、回路、および技法の更に他の形態によれば、革新的コード・ブロックは、複数のネーティブ・データ・ブロックの線形組み合わせと、この線形組み合わせを生成するために使用された係数のリストとを含む。このようなコード化ブロックは、少なくとも1つのプラッタから読み出されるとよい。
[0041] 一実施形態では、少なくともN個の線形独立コード化ブロックを1つ以上のプラッタに格納することができ、N個の線形独立コード化ブロックの1つ以上が複数のネーティブ・データ・ブロックに関連付けられ、Nは、複数のネーティブ・データ・ブロック内部にあるネーティブ・データ・ブロックの数である。
[0042] 以上の特徴は、以下の図面の説明から一層深く理解することができよう。
図1は、本明細書において説明する特徴を組み込むことができる計算システム例を示すブロック図である。 図2は、本明細書において説明する特徴を組み込むことができるディスク・ドライブ例の上面図である。 図3は、実施形態にしたがって、コード化ブロックのデータ・アクセス時間{E[T])の予想値が、どのようにwの異なる値に対してコード化ブロックを生成するために使用されるネーティブ・データ・ブロックの数rと共に変化し得るかを示すプロット例である。 図4は、実施形態にしたがって、コード化シーキングを実現するディスク・ドライブがブロック・ウィンドウの自由度に沿って動くに連れて、どのように E[T]/ E[T]が変化し得るかを示すプロット例である。 図5は、実施形態にしたがってコード化シーキングをサポートするように、ネットワーク・コーディングを使用してディスク・ドライブにデータを格納する方法を示す流れ図である。 図6は、実施形態にしたがって、コーディング・シーキングを使用してディスク・ドライブからデータを引き出すときに使用する方法を示す流れ図である。 図7は、実施形態にしたがって、コーディング・シーキングをサポートするディスク・ドライブからデータを引き出すときに使用する方法を示す流れ図である。
[0050] コーディングは、単一ブロック内における誤り訂正のためにハード・ディスク・ドライブにおいて長い間使用されてきた。例えば、リード−ソロモン・コード、低密度パリティ・チェック(LDPC)コード、およびその他というようなコードは、ディスク・ドライブにおいて最も広く使用されるものの中にある。しかしながら、コーディングは、ハード・ドライブにおいてI/Oレイテンシを短縮するためには使用されたことがない。本明細書では、コーディングを使用して、ハード・ディスク・ドライブおよび動く機械的部品を有する他のデータ記憶デバイスにおいて平均アクセス時間を短縮する技法およびシステムについて説明する。これらの技法およびシステムは、リード・アヘッド・アルゴリズムおよび他のI/Oレイテンシ短縮アルゴリズムに加えて、またはその代わりに使用することができる。
[0051] 図1は、本明細書において説明する特徴を組み込むことができる計算システム例10を示すブロック図である。図示のように、計算システム10は、例えば、ディジタル・プロセッサ12、メモリ14、およびディスク・ドライブ16を含むことができる。ディジタル・プロセッサ12は、ディスク・ドライブ16を使用して、例えば、プログラム・ファイルおよびデータ・ファイルを不揮発性形態で格納することができる。ディジタル・プロセッサ12は、メモリ14を使用して、例えば、現在プロセッサ12によって実行中であるプログラムを格納することができる。図示のように、ディジタル・プロセッサ12は、システム10の動作全体を制御するために、オペレーティング・システム18を実行することができる。また、ディジタル・プロセッサ12は1つ以上のアプリケーション・プログラム20も実行することができる。ディジタル・プロセッサ12は、コンピュータ命令を処理することができる任意のタイプのプロセッサを含むことができ、例えば、汎用マイクロプロセッサ、ディジタル信号プロセッサ(DSP)、縮小命令セット・コンピュータ(RISC)、マイクロコントローラ、および/または以上の組み合わせを含むその他を含む。
[0052] 図1に示すように、ディスク・ドライブ16は、ドライブ・コントローラ22、ドライブ・キャッシュ(またはバッファ)24、および1つ以上のプラッタ26を含むことができる。ドライブ・コントローラ22は、ディスク・ドライブ16の動作を制御する。したがって、ドライブ・コントローラ22は1つ以上のディジタル処理デバイスを含む場合もある。プラッタ26は、ディジタル・データがディスク・ドライブ16内に格納される記憶媒体である。磁気ディスク・ドライブ(例えば、ハード・ディスク・ドライブ等)では、プラッタ26の各々に磁性体を塗布することができ、ディジタル・データを磁気形態でその上に格納することを可能にする(例えば、磁極反転または何らかの他の磁気的指標)。データは、通例、プラッタ26の表面上における同心円状トラック内に格納されるが、他の方式も存在する。データは、各プラッタ26の一面または両面に格納することができる。ディスク・ドライブは1つのプラッタのみを含む場合もあるが、通例では、複数のプラッタが中央スピンドル上に互いに重ね合わされており、中央スピンドルが、ディスク・ドライブ動作の間プラッタ26のために回転軸として役割を果たす。リードおよびライト・エレメントは、プラッタ26のトラックからデータを読み出し、データを書き込むための変換器として使用することができる。
[0053] ドライブ・キャッシュ24は、リードおよびライト動作の間、プラッタ26と外部デバイス(例えば、プロセッサ12等)との間においてデータ・バッファとして使用することができる。つまり、ドライブ・キャッシュ24は、とりわけ、プラッタ26およびドライブ16の入力/出力ポートに関連するリード/ライト・チャネル間のデータ・レートの差を補償するために、リードおよび/またはライト・データの一時的データ・ストレージを提供するように動作することができる。ドライブ・キャッシュ24は、通例、任意の所与の時点において最大Cブロックを格納することができる。
[0054] ディスク・ドライブ内部にある各アクティブ・プラッタ表面は、通例、1つのリード・エレメントおよび1つのライト・エレメントが関連付けられている。場合によっては、1つのエレメントが、プラッタ表面に対して読み出しおよび書き込みの双方を実行するために使用される場合もあるが、通例では、別個のリードおよびライト・エレメントが設けられる(しかし、これらは双方共同じリード/ライト・ヘッドの一部であってもよい)。リードおよびライト・エレメントは、通常、可動アクチュエータ・アームの端部に結合され、可動アクチュエータ・アームが、これらを対応するプラッタの表面に関して制御可能に位置付けることを可能にする。ドライブ・コントローラ22の制御下でアクチュエータ・アームを動かすために、ボイス・コイル・モータまたは他のタイプのモータを使用することができる。データは、通常、プラッタ表面上の既知の位置にある、固定長ブロックのディスク・ドライブ・プラッタに格納される(即ち、対応するトラックの既知の地点)。また、対応するアクセス動作の間にリードまたはライト・エレメントを位置付けるときに使用するために、ディスク・プラッタの表面上に、サーボ情報が提供されてもよい。
[0055] ディスク・ドライブ動作の間、プラッタ26は所定の速度で中心軸の回りを回転させられる。通例、ドライブ・コントローラ22は、リードまたはライト要求を外部ソースから(例えば、プロセッサ12のオペレーティング・システム18等から)受けて、そのドライブからデータのブロックを読み出す(リード要求に対して)またはデータのブロックをドライブに書き込む(ライト要求に対して)ことによって、要求を実行する。リードおよびライト要求双方に対して、ドライブ・コントローラ22は最初に対応するリードまたはライト・エレメントに、該当するトラックをシークさせる。エレメントがトラックの中心に置かれた後、ドライブ・コントローラは、トラックの所望のブロック位置(またはセクタ)をリードまたはライト・エレメントの下に置くのに十分な量だけプラッタが回転するのを待ち、次いでデータをそのブロック位置から読み出させるかまたはそこに書き込ませる。
[0056] ディスク・ドライブは、通例、ランダム・アクセス記憶デバイスである。即ち、任意の時点において、アクティブなプラッタ表面の内任意のものにおける任意のブロック位置またはセクタに対して、1つのデータ・ブロックを読み出すまたは書き込むことができる。 Advanced Format Standard(高度フォーマット規格)として知られる1つのディスク・ドライブ規格では、個々のデータ・ブロックはサイズが4096バイトである。他の規格では、他のサイズが使用される場合もある。一般的な書き込み技法では、ディスク・ドライブに格納されるデータ・ファイルは、複数のブロックに分割されてもよく、各ブロックは該当するブロック・サイズを有する。例えば、1つのファイルfは、1組の{f i=1データ・ブロックに分解されてもよい。次いで、ディスク・プラッタ上の利用可能なブロック位置に、個々のブロックを格納することができる。ディスク上のファイルに関連する種々のブロックの位置を追跡するレコードが維持される。多くの場合、プラッタ表面上で利用可能なブロック位置は、全てが一緒にグループ化されなくてもよい。つまり、ディスク表面上でブロックが格納される位置は、必ずしも互いに近いとは限らない。即ち、ファイルに関連するブロックは、場合によっては、1つ以上のプラッタの表面にわたって分散されることもある。
[0057] 一般的なリードのシナリオでは、ドライブ・コントローラ22はその入力において、オペレーティング・システム18からブロック要求を受ける。ブロックfを求めるリード要求がコントローラ22に到達したとき、コントローラ22は最初にfが現在ドライブ・キャッシュ24内に配置されているか否かチェックすることができる。配置されている場合、コントローラ22は要求に応答してブロックfをキャッシュ24からオペレーティング・システム18に移させる。これは、典型的なディスク・リード動作と比較して、瞬時的な転送と見なすことができ、リード・プロセスを著しく高速化することができる。ブロックfがキャッシュ24内に配置されていない場合、ランダム・ブロック・アクセス時間Tでこのブロックをプラッタ26から読み出す。ブロック・アクセス時間Tは、次のように表すことができる。
Figure 2016519354
ここで、Rは、回転レイテンシであり、Rはシーク時間であり、w∈R(白抜き)は、プラッタの角回転速度とヘッドの回転運動との間の比率であり、eはコントローラ処理およびブロック読み出し時間である。この手法を使用すると、リード・プロセスをGI/G/1/Dキューとしてモデル化することができる。ここで、Dはキャッシュ・サイズの関数であり、平均サービス・レートは1/E[T]で与えられる。認めることができるように、ファイルに関連するブロックがディスク・ドライブのプラッタにわたってランダムに分散されている場合、ファイルに関連するブロックの全てをディスク・ドライブから個々に読み出すプロセスは、非常に時間を浪費する可能性がある。
[0058] 本明細書において説明する種々の実施形態では、リード動作を一層高速で、一層効率的に実行することを可能にするように、データをディスク・ドライブのプラッタに格納するためにネットワーク・コーディングが使用される。このリード技法をコード化シーキング(coded seeking)と呼ぶこともできる。プラッタ表面上の対応する位置にファイルfに関連する生データ・ブロックfを格納する代わりに、そのファイルに関連するデータのネットワーク・コード化ブロックを格納する。ネットワーク・コーディングとは、データ・エレメントの線形組み合わせを生成することによってデータをエンコードする技法である。これらの線形組み合わせは、後に、デコードされて、元のデータ・エレメントを抽出することができる。デコーディング・プロセスは、通例、線形技法を使用して元のデータ・エレメントについて解くために、十分な数の線形組み合わせ(および/または元のデータ・エレメント)が「自由度」として利用可能であることを必要とする。
[0059] ネットワーク・コーディングの良く知られている形態の1つに、ランダム線形ネットワーク・コーディング(RLNC)として知られるものがある。RLNCを使用すると、データ・エレメントは、ランダムに生成される係数を使用して、線形に組み合わせられる。同じデータ・エレメントの異なる線形組み合わせを生成するために、ランダムに生成された係数の異なる集合が使用される場合、結果的に得られる線形組み合わせは、通例互いに線形に独立であり(即ち、これらは革新的である(innovative))、つまり、各々が、デコーディングにおいて使用することができる自由度を表す。
[0060] コード化格納のために可能な1つの技法では、ファイルfをL個の等しいサイズの「ブロック・ウィンドウ」またはジェネレーション(generation)に分離することができ、各々、r個のデータ・ブロックを含む。このファイルのl番目のブロック・ウィンドウを、Bと呼んでもよい。ブロック・ウィンドウBは、ファイルのブロック・インデックスの部分集合を含み、ファイルに関連する全ての他のブロック・ウィンドウからは素である(adjoint)ことができる。コード化ブロックcは、以下のように、ブロック・ウィンドウBに対して生成することができる。
Figure 2016519354
ここで、αはランダム係数であり、fはブロック・ウィンドウBに関連するデータ・ブロックである。ブロック・ウィンドウB毎に複数の異なるコード化ブロックcを生成することができる。係数αkは、ブロック・ウィンドウBに関連する個々のコード化ブロックcが、高い確率で、そして場合によっては確信をもって、互いに線形に独立となるように、サイズqの有限フィールドF(白抜き)から引き出すことができる。各コード化ブロックcは、つまり、対応するブロック・ウィンドウにおける全てのデータ・ブロックについて部分的な情報を提供する。ファイルfの各ブロック・ウィンドウに関連するコード化ブロックは、ディスク・ドライブのプラッタに格納される。ブロック・ウィンドウ毎に生成され格納されるコード化ブロックcの数は、少なくとも、ブロック・ウィンドウのデータ・ブロックの全てについて解くのに必要な数であるが、この数よりも多いことも可能である。各コード化ブロックを生成するために使用される係数αは、コード化ブロックと関連付けてディスク表面に格納することもできる(例えば、メタデータとして、または他の何らかの様態で)。
[0061] オペレーティング・システム18が最終的にディスク・ドライブ16からファイルfを読み出すことを望む場合、全てのブロック・ウィンドウが復元され終えるまで、ブロック・ウィンドウの各々をディスク・ドライブ16から1つずつ読み出すことができる。ブロック・ウィンドウ毎に、オペレーティング・システム18はリード要求をドライブ・コントローラ22に送り、ブロック・ウィンドウに関連する革新的コード化ブロック(または自由度)を求める。リード要求毎に、ドライブ・コントローラ22は、1つのコード化ブロックを、このコード化ブロックに関連する係数と共に引き出すことができる。オペレーティング・システム18は、ブロック・ウィンドウのデータ・ブロックをデコードするのに十分な数の自由度が引き出され終えるまで、革新的コード化ブロックを求める要求を送り続けることができる。ネットワーク・コード化データ・ブロックをデコードするための任意の技法が、コード化ブロックをデコードするために使用されてもよい。少なくとも1つの実現例では、コード化ブロックが受け取られる毎にそれらをデコードするために、オペレーティング・システム18によって、ガウス−ジョーダン排除または同様の技法というような、累進デコーディング技法(progressive decoding technique)が使用されてもよい。他の技法が代わりに使用されてもよい。更に詳しく説明するが、コード化ブロック(または自由度)を引き出すためにドライブ・コントローラ22によって使用される技法は、ファイルfの全体的な引き出しを著しく高速化することができる。
[0062] ドライブ・コントローラ22は、格納された各ファイルの各ブロック・ウィンドウに関連する全てのコード化ブロックのプラッタ上の位置のレコードを有することができる。特定のファイルの特定のブロック・ウィンドウに関連する革新的コード化ブロックを求めるリード要求を受けたとき、ドライブ・コントローラ22は、プラッタに格納された対応するコード化ブロックの内どれが、ディスク・ドライブ16のリード・ヘッドの現在位置に最も近いか判定することができる。次いで、ドライブ・コントローラ22は、対応するプラッタ表面上の対応するトラックをシークし、そのコード化ブロックを読み出すことができる。同じファイルの同じブロック・ウィンドウに関連する革新的コード化ブロックを求める次のリード要求を受けたとき、ドライブ・コントローラ22は、プラッタに格納された他の対応するコード化ブロックの内どれが、ディスク・ドライブ16のリード・ヘッドの現在位置に最も近いか判定することができる。次いで、新たな要求毎に、同じ手順を繰り返すことができる。このように、ある実現例では、ドライブ・コントローラ22は、同じファイル・リード動作中に所与のブロック・ウィンドウに関連する同じコード化ブロックをオペレーティング・システムに二度送らないように、最後に引き出されたデータを追跡し続けることができる(これは、2度目に読み出された同じコード化ブロックは、デコーディングにおいて使用するための新たな自由度を提供しないからである)。リード要求毎に「最も近い」コード化ブロックが使用されるので、ファイル・リード動作の間、大量のシークおよびレイテンシ時間を回避することができる。
[0063] ある実現例では、ドライブ・コントローラ22は、最初に、識別されたブロック・ウィンドウに関連する革新的コード化ブロックが現在ドライブ・キャッシュ24内に格納されているか否か、コード化ブロックをプラッタから引き出す前に判定してもよい。ドライブ・キャッシュ24内に、識別されたブロック・ウィンドウに関連コード化ブロックがあり、このコード化ブロックが未だ現在のファイル・リード動作中にオペレーティング・システム18に送られていない場合、リード要求に応答して、このコード化ブロックをドライブ・キャッシュ24からオペレーティング・システム18に送ればよい。
[0064] 典型的なシナリオでは、オペレーティング・システム18がブロック・ウィンドウBについて自由度を求める要求を送った場合、対応するディスク・ドライブのリード・ヘッドおよびプラッタは、互いに関してランダムな物理的定位(random physical orientation)となる。図2は、このような状況を示すディスク・ドライブ30の上面図である。図示のように、ドライブ30は、方向34に回転しているプラッタ32、アクチュエータ・アーム38の端部に結合されたリード・エレメント36、およびディスク・コントローラの制御下で軸を中心にアクチュエータ・アーム38を旋回させるボイス・コイル・モータ40を含む。リード要求を受けたとき、リード・エレメント36は、プラッタに格納された種々のコード化ブロックに関してランダムな位置にあってもよい。次いで、ドライブ・コントローラは、プラッタにおける種々のコード化ブロックの内どれが、リード・エレメント36の現在位置に最も近いか判定することができる。異なる実施形態では、「最も近い」という用語は、物理的に最も近い(即ち、コード化ブロックとリード・エレメントとの間の最短距離)、または時間的に最も近い(即ち、リード・エレメントを最も早く移動させることができるブロック)ことのいずれかを意味することができる。最も近いブロックを発見する技法は、リストにおける各ブロックまで移動するのに必要とされる距離または時間を計算し、そのリストから最小エレメントを発見することを含むこともできる。この距離または時間の計算は、ヘッドの現在位置、および各ブロックの物理位置に基づく。ウィンドウにおける全てのブロックに最適にアクセスする順序を計算するために、周知の巡回セールスマン問題(TSP)の解または近似解を求めても良い。更に具体的には、各ブロックを、無指向加重グラフにおけるエレメントと見なしてもよい。次いで、可能なヘッドおよびプラッタの動きをこのグラフにおける経路としてモデル化し、重みは移動する距離または時間の関数とする。
[0065] 最も近いコード化ブロックcが識別された後、ドライブ・コントローラは、リード・エレメント36がコード化ブロックの上方に位置付けられ、このコード化ブロックに関連するトラック42を追従するまで、アクチュエータ・アーム38を旋回させることができる(これは、シーク動作として知られる)。ドライブ・コントローラは、このプロセスの間リード・エレメント36の現在位置を追跡するために、プラッタ32の表面から読み出したサーボ情報を使用してもよい。一旦リード・エレメント36が該当するトラック42上に来たなら、ドライブ・コントローラは、リード・エレメント36が所望のコード化ブロックcの上方に来る地点にプラッタ32が回転するまで待つ。トラック42に到達するリード・エレメントと、リード・エレメント36に到達する所望のコード化ブロックとの間の時間遅延は、回転レイテンシとして知られている。リード・エレメント36がトラック42上の所望のコード化ブロックに到達したとき、ドライブ・コントローラはプラッタ表面からコード化セクタ(および対応する係数情報)を読み出すことができる。次いで、読み取られる他のコード化ブロック毎に、このプロセスを繰り返すことができる。
[0066] 既に説明したように、多くの場合、ブロック・ウィンドウに関連するコード化ブロックは、1つ以上のプラッタ表面上にランダムに広げられることが可能である。リード要求を受ける毎に、ディスク・コントローラは、ドライブに格納されている次に「最も近い」革新的コード化ブロックを選択して引き出すことができる。先の式(1)と同じ形態を使用すると、n番目のコード化ブロック(またはn番目の自由度)に対するランダム・アクセス時間Tnは、以下のように表すことができる。
Figure 2016519354
ここで、R1,nは、n番目のコード化ブロックの回転レイテンシであり、R2,nはn番目のコード化ブロックのシーク時間である。
[0067] 既に説明したように、リード要求を受けると、ドライブ・コントローラは、どのコード化ブロックがリード・エレメントに最も近いか判定し、次いでそのコード化ブロックを読み出すことができる。リード・エレメントをこのブロックの先頭まで移動させるのに要する時間は、リード・エレメントをコード化ブロックのトラックと整列させるためにアクチュエータ・アームが回転しなければならない角度、およびリード・エレメントが次にこのトラックに沿って対象のコード化ブロックの先頭まで移動しなければならない距離の双方に線形に関係する。1つの可能な手法では、パラメータθ2,n(図2参照)は、n番目のコード化ブロックcに該当するトラック42の上方にリード・エレメントを位置付けるためにアクチュエータ・アーム38が回転しなければならない最大運動範囲の割合として表現することができ、パラメータθ1,nは、該当するトラック42においてn番目のコード・ブロックcを1回読み出すためにプラッタ32が回転しなければならない最大回転量の割合として表現することができる。
[0068] RおよびRが同じコード化ブロックを指すと仮定し、更にブロック毎の回転レイテンシおよびシーク時間が統計的に独立であるとすると、ブロック・ウィンドウR1,1およびR2,1に関連する最初のコード化ブロックについて、アクセス時間T1は、次のように計算することができる。
Figure 2016519354
Figure 2016519354
ここで、最小値が同じコード・ブロックに適用される。R1,1およびR2,1は双方共固定数の均一ランダム変数の最小値であるので、それらのPDFは以下の共通形態を有する。
Figure 2016519354
次いで、Tの予想値は、次のように与えられる。
Figure 2016519354
したがって、rが増大すると、ランダム自由度にアクセスするときのディスク・ドライブの速度も上昇する。尚、rが無限大に向かうに連れて、E[T]の値はE[e]に向かうことは注記してしかるべきである。最近のハード・ディスク・ドライブでは、シーク時間および回転レイテンシは、全リード時間の内約2/3を占める可能性がある。したがって、実用的なシステムでは、以上で説明した技法を使用すると、著しい速度利得を達成できることが可能である。図3は、wの複数の異なる値について、E[T]がどのようにrと共に変化するかを示すプロットである。
[0069] 前述のように、ブロック・ウィンドウに関連するコード化ブロックは、ディスク・ドライブの1つのプラッタ表面、または複数のプラッタ表面に格納することができる。複数のプラッタ表面が使用される場合、リード・エレメントの現在位置に最も近いコード化ブロックを識別するために、同様の技法を使用すればよい。即ち、次のリード動作のためのアクセス時間を最小にするコード化ブロックを、この動作のために選択すればよい。
[0070] コンテンツがr個のブロックに跨がってコード化された場合、対応するブロック・ウィンドウをデコードするためには、r個のブロック全てにアクセスする必要がある。一般に、コード化−シーキング利得は、アクセスされた最初の自由度に対して最大となり、後続の自由度に対して減少する。最後の自由度に対して、コード化シーキング・システムのアクセス時間は、非コード化方式と同等になることもある。nと共に減少する高速利得を測るために、比率E[T]/E[T]をメトリックとして使用することができる。近似として、パラメータrを上の式(7)におけるr−n+1と置き換えてもよい。図4は、ディスク・ドライブがブロック・ウィンドウの自由度に沿って動くに連れて、E[T]/E[T]がどのように変化し得るかを示すプロット例である。
[0071] シーク時間の高速化には、ブロッキングの確率低減を含む、追加の利点を得ることができる。特に、ディスク・ドライブをGI/G/1/Dキューとしてモデル化する場合、非コード化システムに対して、
Figure 2016519354
に比例するブロッキング確率P を有する。
ここで、λおよびμは、それぞれ、到達およびサービス率(service rate)に対するi番目のモーメントである。第1自由度に対する等価なコード化シーキング・ブロッキング確率ブロッキング確率P は、
Figure 2016519354
に比例する。
E[e]が小さい場合、
Figure 2016519354
となる。
[0072] ハード・ディスク・ドライブの高速化、およびブロッキング確率の低下は、コード化シーキングの使用によって可能とされ、ディスク・ドライブ内における物理的に動く部品に対する依存度を低下させる傾向がある。種々の実施形態では、この技法は、オペレーティング・システムに、複数のコード化ブロックを格納し、十分な自由度が読み取られたときにブロックをデコードすることを要求する場合がある。本質的に、ディスク・ドライブによって本来行われる作業は、オペレーティング・システムまたはドライブ・コントローラに移され、こうして高速RAMまたは高速キャッシュをそれぞれ使用して実行することができる。コード化シーキングの利点は、要求が均一にランダムであるときに最も明白になる。要求に対してより多くの構造がある場合、コード化シーキングの利点よりも、コード化書き込みを実行しなければならない欠点が上回るおそれがある。コード化シーキングを実行するために使用されるブロック・ウィンドウのサイズは、本技法の利点全体に影響を及ぼす可能性がある。例えば、ブロック・ウィンドウが小さすぎる場合、コード化シーキングの利点は減少する。ブロック・ウィンドウが大きすぎる場合、デコーディング遅延が増大するおそれがある。特定のシステムにおいて使用すべき最良のブロック・ウィンドウ・サイズは、記憶ユニットのサイズ、ファイル・サイズ、ならびにオペレーティング・システムのタイミングおよび遅延保証要件に関係する。
[0073] 図5、図6、および図7は、実施形態にしたがってディスク・ドライブにおいてコード化シーキングを実現するための種々のプロセス例を示す流れ図である。
[0074] ここでは、流れ図における矩形エレメント(図5におけるエレメント52によって代表される)は「処理ブロック」を示し、コンピュータ・ソフトウェア命令または命令のグループを表すことができる。尚、図5、図6、および図7の流れ図は、本明細書において説明した設計の一実施形態例を表し、概要を説明したプロセスに全体的に従うこのような図における変形(variations)は、本明細書において説明し特許請求する概念、システム、および技法の範囲内に該当すると見なすことは、注記してしかるべきである。
[0075] あるいは、処理ブロックは、例えば、ディジタル信号プロセッサ回路、特定用途集積回路(ASIC)、またはフィールド・プログラマブル・ゲート・アレイ(FPGA)のような、機能的に等価な回路によって実行される動作を表すこともできる。この流れ図は、いずれの特定のプログラミング言語のシンタックスも示さない。むしろ、この流れ図は、当業者が回路を製作するためおよび/または対応する処理を実行するコンピュータ・ソフトウェアを生成するために必要とする機能的情報を示す。尚、ループおよび変数の初期化、ならびに一時的変数の使用というような、多くの決まり切ったプログラム・エレメントは示されない場合もあることは、注記してしかるべきである。本明細書において別段示されない限り、説明する特定のシーケンスは、例示に過ぎず、本明細書において説明および/または特許請求する概念の主旨から逸脱することなく変更できることは、当業者には認められよう。つまり、別段述べられない限り、以下で説明するプロセスは順不問であり、可能であれば、図5、図6、および図7に示すシーケンスを任意の便利な順序または望ましい順序で実行できることを意味する。
[0076] 図5は、実施形態にしたがってコード化シーキングをサポートするように、ネットワーク・コーディングを使用してディスク・ドライブにデータを格納する方法50を示す流れ図である。方法50は、例えば、オペレーティング・システム、ディスク・ドライブ・コントローラ、あるいはデータ記憶デバイス、システム、またはネットワークに関連する何らかの他のプロセッサまたはコントローラと関連付けて実現することができる。ある実施形態では、方法50に関連するアクトは、一緒に動作する複数のプロセッサおよび/またはコントローラを使用して実行されてもよい。最初に、ディスク・ドライブに格納されるファイルを受けるまたは識別することができる(ブロック52)。ファイルは、複数の等しい幅のブロック・ウィンドウ8に分割されてもよく、ブロック・ウィンドウ8は、各々、r個のデータ・ブロックを有する(ブロック54)。ブロック・ウィンドウの各々に対して、ネットワーク・コーディング技法を使用して、ある数の革新的コード化ブロックを生成することができる(ブロック56、58)。コード化ブロックの各々は、対応するr個のデータ・ブロックの線形組み合わせを含むことができる。r個のデータ・ブロックは、コード化ブロックが互いに線形に独立するように、ランダム係数を使用して作られる。一般に、r個以上のコード化ブロックが、ブロック・ウィンドウ毎に生成されればよい。次いで、ブロック・ウィンドウ毎に生成されたコード化ブロックは、ディスク・ドライブに格納することができる(ブロック60)。このプロセスは、元のファイルのブロック・ウィンドウの全てが処理され格納され終えるまで繰り返すことができる(ブロック62、64)。コード化シーキングをサポートしてコード化データをディスク・ドライブに書き込むための他の技法または変更技法を代わりに使用してもよい。例えば、このような手法の1つでは、最初にブロック・ウィンドウを形成せずに、ファイルを単にr個のデータ・ブロックに分割してもよい。次いで、格納のためにコード化ブロックを生成するために、R個のデータ・ブロックを使用してもよい。
[0077] 図6は、実施形態にしたがって、コーディング・シーキングを使用してディスク・ドライブからデータを引き出すときに使用する方法70を示す流れ図である。方法70は、例えば、オペレーティング・システム、ディスク・ドライブ・コントローラ、あるいはデータ記憶デバイス、システム、またはネットワークに関連する何らかの他のプロセッサまたはコントローラと関連付けて実現することができる。ある実施形態では、方法50に関連するアクトは、一緒に動作する複数のプロセッサおよび/またはコントローラを使用して実行されてもよい。複数のネーティブ・データ・ブロックに関連する革新的コード化データブロック(または自由度)を要求するリード要求を最初に受ける(ブロック72)。複数のネーティブ・データ・ブロックは、例えば、データ・ファイルの特定のブロック・ウィンドウに関連する複数のブロック、またはネーティブ・データ・ブロックの何らかの他のグループを含むことができる。次に、複数のネーティブ・データ・ブロックに関連する革新的コード化データ・ブロックから、ディスク・ドライブのリード・ヘッドの現在位置に最も近いものを選択する(ブロック74)。複数のネーティブ・データ・ブロックに関連することが分かっているこのようなコード化ブロックのグループから、革新的コード化データ・ブロックを選択すればよい。次いで、ディスク・ドライブは、リード・エレメントを、選択したコード化データ・ブロックの位置に移動させ、コード化ブロックを読み出させることができる(ブロック76)。このプロセスは、複数のネーティブ・データ・ブロックに関連する革新的コード化データ・ブロックを求める新たなリード要求を受ける毎に、繰り返すことができる。ある実現例では、共通データ・リード・プロセスの間(例えば、特定のファイルのリード動作の間)に最後に読み出された複数のネーティブ・データ・ブロックに関連するコード化データ・ブロックは、選択プロセスの間無視され、現在のリード要求に応答してドライブから引き出されたコード化データ・ブロックが、以前に引き出されたコード化ブロックとは線形に独立であるようにする。
[0078] 図7は、実施形態にしたがって、コーディング・シーキングをサポートするディスク・ドライブからデータを引き出すときに使用する方法80を示す流れ図である。方法80は、例えば、データを不揮発性形態で格納するためにディスク・ドライブをしようする計算システムのオペレーティング・システム、あるいはディスク・ドライブに関連する何らかの他のプロセッサまたはコントローラと関連付けて実現されてもよい。最初に、ネーティブ・データ・ブロックのグループをディスク・ドライブから引き出す必要があると判定する(ブロック82)。ある実現例では、ネーティブ・データ・ブロックのグループは、データ記憶デバイスに格納されたデータ・ファイルに関連するブロック・ウィンドウを表すこともできるが、他のデータ・ブロックのグループを代わりに使用してもよい。ある実施形態では、データ・ブロックのグループ内における1つのデータ・ブロックのみが対象になることもあるが、所望のブロックにアクセスするためには、ブロック全体を引き出してデコードする必要がある。次に、データ・ブロックのグループに関連する革新的コード化ブロック(または自由度)を読み出すことを要求するリード要求を、ディスク・ドライブに送ることができる(ブロック84)。この要求に応答してディスク・ドライブから読み出されたコード化ブロックは、続いてディスク・ドライブから受け取られ、一時的にメモリに格納される(ブロック86)。次に、コード化ブロックからネーティブ・データ・ブロックのグループを抽出するのに十分な革新的コード化ブロック(または自由度)がディスク・ドライブから引き出されたか否か判定を行うことができる(ブロック88)。否定である場合(ブロック88においてN)、データ・ブロックのグループに関連する革新的コード化ブロックを要求する他のリード要求をディスク・ドライブに送ることができ(ブロック84)、このプロセスを繰り返す。このプロセスは、デコーディングを可能にするだけの十分な数の革新的コード化ブロックが引き出され終えるまで、継続することができる(ブロック88においてY)。この時点において、革新的コード化ブロックをデコードすることができる(ブロック90)。ある実現例では、これは、引き出されたコード化ブロックの全てを使用する全デコーディング動作を含んでもよい。累進デコーディングが使用される実現例では、これは、デコーディング・プロセスの最後のステップを実行することを含めばよい。
[0079] 以上では磁気ハード・ディスク・ドライブのコンテキストで説明したが、本明細書において説明した特徴の多くは、例えば、他のディスク・ベース記憶デバイス(例えば、CDROM、DVD、BluRay(登録商標)ディスク等)を含む、1つ以上の可動部品を含む他のデータ記憶デバイスと関連しても使用できることは認められてしかるべきである。
[0080] 以上、本発明の実施形態例について説明したが、それらの概念を組み込んだ他の実施形態が使用されてもよいことは、今や当業者には明白であろう。本明細書に含まれる実施形態は、開示された実施形態に限定されるのではなく、添付した請求項の主旨および範囲のみによって限定されてしかるべきである。本明細書内において引用した全ての刊行物および引例は、本明細書において引用したことによってその内容全体が明示的に本願にも含まれるものとする。

Claims (26)

  1. 複数のネーティブ・データ・ブロックに関連する複数のネットワーク・コード化ブロックが格納されたディスク・ベース・データ記憶デバイスからデータを引き出すときに使用する方法であって、
    前記複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの引き出しを要求するリード要求を受けるステップと、
    前記リード要求に応答して、前記ディスク・ベース・データ記憶デバイスに格納されている革新的コード化ブロックの内、前記ディスク・ベース・データ記憶デバイスのリード変換器の現在位置に最も近いものを識別するステップと、
    前記識別した革新的コード化ブロックを読み出すステップと、
    を含む、方法。
  2. 請求項1記載の方法において、前記複数のネーティブ・データ・ブロックに関連し、前記ディスク・ベース・データ記憶デバイスに格納された前記複数のネットワーク・コード化ブロックが、各々、前記複数のネーティブ・データ・ブロックの線形組み合わせを含む、方法。
  3. 請求項2記載の方法において、前記ディスク・ベース・データ記憶デバイスに格納され、前記複数のネーティブ・データ・ブロックに関連する前記複数のネットワーク・コード化ブロックが、各々、前記対応する線形組み合わせを生成するために使用される係数のリストを含む、方法。
  4. 請求項1記載の方法において、革新的コード化ブロックの引き出しを要求するリード要求を受けるステップが、前記複数のネーティブ・データ・ブロックに関連する、以前に引き出されたコード化ブロックをデコードするときに有用である追加の自由度を提供するコード化ブロックの引き出しを要求するリード要求を受けるステップを含む、方法。
  5. 請求項1記載の方法において、受けるステップ、識別するステップ、および読み出すステップが、前記ディスク・ベース・データ記憶デバイスに関連するコントローラによって実行される、方法。
  6. 請求項1記載の方法において、
    前記ディスク・ベース・データ記憶デバイスが、少なくともN個の線形独立コード化ブロックをその内部に格納しており、Nが、前記複数のネーティブ・データ・ブロック内におけるネーティブ・ブロックの数である、方法。
  7. 請求項1記載の方法において、
    前記ディスク・ベース・データ記憶デバイスが、磁気ディスク・ドライブである、方法。
  8. 複数のネーティブ・データ・ブロックに関連する複数のネットワーク・コード化ブロックが格納されたディスク・ベース・データ記憶デバイスからデータを引き出すときに使用する方法であって、
    前記複数のネーティブ・データ・ブロックが、前記ディスク・ベース・データ記憶デバイスから引き出される必要があると判定するステップと、
    前記複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの引き出しを要求するリード要求を、前記ディスク・ベース・データ記憶デバイスに送るステップと、
    を含む、方法。
  9. 請求項8記載の方法であって、更に、
    前記リード要求に応答して、前記複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックを受けるステップと、
    前記複数のネーティブ・データ・ブロックに関連する前記革新的コード化ブロックを、メモリに一時的に格納するステップと、
    前記複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックが、前記複数のネーティブ・データ・ブロックを抽出するためのデコーディングを可能にするのに十分な数だけ、前記ディスク・ベース・データ記憶デバイスから引き出されたか否か判定するステップと、
    前記複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックが、デコーディングを可能にするのに十分な数だけ前記ディスク・ベース・データ記憶デバイスから引き出されていない場合、前記複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの引き出しを要求する他のリード要求を前記ディスク・ベース・データ記憶デバイスに送るステップと、
    を含む、方法。
  10. 請求項9記載の方法であって、更に、
    前記複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックが、デコーディングを可能にするのに十分な数だけ前記ディスク・ベース・データ記憶デバイスから引き出されるまで、受けるステップ、一時的に格納するステップ、判定するステップ、および他のリード要求を送るステップを繰り返すステップを含む、方法。
  11. 請求項10記載の方法であって、更に、
    十分な数の革新的コード化ブロックが前記ディスク・ベース・データ記憶デバイスから引き出された後、ネーティブ・データ・ブロックを抽出するために革新的コード化ブロックをデコードするステップを含む、方法。
  12. 請求項8記載の方法において、前記複数のネーティブ・データ・ブロックに関連付けられ前記ディスク・ベース・データ記憶デバイスに格納された前記複数のネットワーク・コード化ブロックが、各々、前記複数のネーティブ・データ・ブロックの線形組み合わせを含む、方法。
  13. 請求項12記載の方法において、
    前記複数のネーティブ・データ・ブロックに関連付けられ前記ディスク・ベース・データ記憶デバイスに格納された前記複数のネットワーク・コード化ブロックが、各々、前記対応する線形組み合わせを生成するために使用される係数のリストを含む、方法。
  14. ディスク・ベース・データ記憶デバイスにデータを格納する方法であって、
    前記ディスク・ベース・データ記憶デバイスに格納される複数のデータ・ブロックを識別するステップであって、前記複数のデータ・ブロックがN個のデータ・ブロックを有する、ステップと、
    前記複数のデータ・ブロックを使用して、ある数のネットワーク・コード化ブロックを生成するステップであって、各ネットワーク・コード化ブロックが、他のネットワーク・コード化ブロックとは異なる1組のランダム係数を使用して生成される、前記複数のデータ・ブロックの線形組み合わせを含む、ステップと、
    対応するランダム係数と共に、前記ディスク・ベース・データ記憶デバイス内の個々のブロック位置に前記ネットワーク・コード化ブロックを書き込むステップと、
    を含む、方法。
  15. 請求項14記載の方法において、
    前記ディスク・ベース・データ記憶デバイスに格納される複数のデータ・ブロックを識別するステップが、
    前記ディスク・ベース・データ記憶デバイスに格納されるファイルを取得するステップと、
    前記ファイルを、各々N個のデータ・ブロックを含む複数の等しいサイズのブロック・ウィンドウに分割するステップと、
    前記複数の等しいサイズのブロック・ウィンドウから1つの選択するステップと、
    を含む、方法。
  16. 請求項15記載の方法であって、
    生成するステップおよび格納するステップを、前記複数の等しいサイズのブロック・ウィンドウにおけるブロック・ウィンドウ毎に繰り返すステップを含む、方法。
  17. ディスク・ドライブであって、
    ドライブ・コントローラと、
    前記ドライブ・コントローラの制御下で、ディジタル・データを格納する少なくとも1つのプラッタと、
    を含み、
    前記ドライブ・コントローラが、
    複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの前記少なくとも1つのプラッタからの引き出しを要求するリード要求を受け、
    前記リード要求に応答して、前記少なくとも1つのプラッタに格納された前記複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの内、前記ディスク・ドライブのリード変換器の現在位置に最も近いものを識別し、
    前記識別した革新的コード化ブロックを前記少なくとも1つのプラッタから読み出すように構成される、ディスク・ドライブ。
  18. 請求項17記載のディスク・ドライブにおいて、
    前記少なくとも1つのプラッタから読み出された前記識別された前記革新的コード化ブロックが、前記複数のネーティブ・データ・ブロックの線形組み合わせと、前記線形組み合わせを生成するために使用された係数のリストとを含む、ディスク・ドライブ。
  19. 請求項17記載のディスク・ドライブにおいて、
    前記少なくとも1つのプラッタが、該プラッタ上に格納され、前記複数のネーティブ・データ・ブロックに関連した少なくともN個の線形独立コード化ブロックを有し、Nが、前記複数のネーティブ・データ・ブロック内にあるネーティブ・データ・ブロックの数である、ディスク・ドライブ。
  20. システムであって、
    プロセッサと、
    前記プロセッサによるアクセスのためにディジタル・データを格納するディスク・ドライブと、
    を含み、前記プロセッサが、ネーティブ・データ・パケットのグループに関連する革新的コード化ブロックの引き出しを要求するリード要求を、前記ディスク・ドライブに送るように構成される、システム。
  21. 請求項20記載のシステムにおいて、
    前記プロセッサが、デコーディングを可能にするのに十分な革新的コード化ブロックが引き出され終えるまで、前記ネーティブ・データ・パケットのグループに関連する革新的コード化ブロックの引き出しを要求するリード要求を前記ディスク・ドライブに送り続けるように構成される、システム。
  22. 請求項20記載のシステムにおいて、前記ディスク・ドライブが、
    ドライブ・コントローラを含み、
    前記ドライブ・コントローラが、複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの引き出しを要求する前記リード要求を受け、前記リード要求に応答して、前記ディスク・ドライブに格納された前記複数のネーティブ・データ・ブロックに関連する革新的コード化ブロックの内、前記ディスク・ドライブのリード変換器の現在位置に最も近いものを識別し、前記リード変換器を使用して、前記識別した革新的コード化ブロックを読み出すように構成される、システム。
  23. 請求項22記載のシステムにおいて、
    前記ドライブ・コントローラが、格納されたコード化ブロックの内、アクセスするために最小量の時間を要するものを選択することによって、前記リード変換器の現在位置に最も近い前記革新的コード化ブロックを識別するように構成される、システム。
  24. 請求項22記載のシステムにおいて、
    前記ドライブ・コントローラが、格納されたコード化ブロックの内、前記リード変換器に物理的に最も近いものを選択することによって、前記リード変換器の現在位置に最も近い前記革新的コード化ブロックを識別するように構成される、システム。
  25. 請求項22記載のシステムにおいて、
    前記ドライブ・コントローラが、前記リード変換器の現在位置に最も近い革新的コード化ブロックを識別するとき、最後に引き出された前記複数のネーティブ・データ・ブロックに関連するコード化ブロックを無視するように構成される、システム。
  26. 請求項20記載のシステムにおいて、前記ディスク・ドライブが、ドライブ・コントローラを含み、
    前記ドライブ・コントローラが、前記ディスク・ドライブに格納される複数のデータ・ブロックを取得し、前記複数のデータ・ブロックがN個のデータ・ブロックを有し、前記複数のデータ・ブロックを使用してある数のネットワーク・コード化ブロックを生成し、各ネットワーク・コード化ブロックが、前記他のネットワーク・コード化ブロックとは異なる1組のランダム係数を使用して生成された前記複数のデータ・ブロックの線形組み合わせを含み、前記生成したネットワーク・コード化ブロックを、対応するランダム係数と共に、前記ディスク・ドライブの1つ以上のプラッタにおける個々のブロック位置に書き込むように構成される、システム。
JP2016501509A 2013-03-15 2014-03-12 コード化シーキングを使用してデータ記憶デバイスにおけるアクセス時間を短縮する方法および装置 Active JP6106327B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361788746P 2013-03-15 2013-03-15
US61/788,746 2013-03-15
US13/965,645 US9019643B2 (en) 2013-03-15 2013-08-13 Method and apparatus to reduce access time in a data storage device using coded seeking
US13/965,645 2013-08-13
PCT/US2014/024368 WO2014150837A1 (en) 2013-03-15 2014-03-12 Method and apparatus to reduce access time in a data storage device using coded seeking

Publications (2)

Publication Number Publication Date
JP2016519354A true JP2016519354A (ja) 2016-06-30
JP6106327B2 JP6106327B2 (ja) 2017-03-29

Family

ID=51526065

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016501509A Active JP6106327B2 (ja) 2013-03-15 2014-03-12 コード化シーキングを使用してデータ記憶デバイスにおけるアクセス時間を短縮する方法および装置

Country Status (7)

Country Link
US (2) US9019643B2 (ja)
EP (1) EP2972751B1 (ja)
JP (1) JP6106327B2 (ja)
KR (1) KR101777032B1 (ja)
CN (1) CN105144075B (ja)
PL (1) PL2972751T3 (ja)
WO (1) WO2014150837A1 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2742286T3 (es) 2010-03-25 2020-02-13 Massachusetts Inst Technology Codificación de red segura para transmisión por secuencias de vídeo, inalámbrica de multirresolución
US10530574B2 (en) 2010-03-25 2020-01-07 Massachusetts Institute Of Technology Secure network coding for multi-description wireless transmission
WO2013006697A2 (en) 2011-07-05 2013-01-10 Massachusetts Institute Of Technology Energy-efficient time-stampless adaptive nonuniform sampling
US9143274B2 (en) 2011-10-31 2015-09-22 Massachusetts Institute Of Technology Traffic backfilling via network coding in a multi-packet reception network
US9025607B2 (en) 2011-11-05 2015-05-05 Massachusetts Institute Of Technology Method and apparatus for efficient transmission of information to multiple nodes
US8780693B2 (en) 2011-11-08 2014-07-15 Massachusetts Institute Of Technology Coding approach for a robust and flexible communication protocol
US9537759B2 (en) 2012-01-31 2017-01-03 Massachusetts Institute Of Technology Multi-path data transfer using network coding
US9160687B2 (en) 2012-02-15 2015-10-13 Massachusetts Institute Of Technology Method and apparatus for performing finite memory network coding in an arbitrary network
US9369255B2 (en) 2012-10-18 2016-06-14 Massachusetts Institute Of Technology Method and apparatus for reducing feedback and enhancing message dissemination efficiency in a multicast network
WO2014160194A2 (en) 2013-03-14 2014-10-02 Massachusetts Institute Of Technology Method and apparatus for secure communication
US9369541B2 (en) 2013-03-14 2016-06-14 Massachusetts Institute Of Technology Method and apparatus for implementing distributed content caching in a content delivery network
US9607003B2 (en) 2013-03-14 2017-03-28 Massachusetts Institute Of Technology Network coded storage with multi-resolution codes
US9185529B2 (en) 2013-03-15 2015-11-10 Massachusetts Institute Of Technology Wireless reliability architecture and methods using network coding
US9019643B2 (en) 2013-03-15 2015-04-28 Massachusetts Institute Of Technology Method and apparatus to reduce access time in a data storage device using coded seeking
US11424861B2 (en) 2017-03-29 2022-08-23 Massachusetts Institute Of Technology System and technique for sliding window network coding-based packet generation
EP3794755B1 (en) 2018-05-16 2023-07-05 Code on Technologies Inc. Multipath coding apparatus and related techniques
US11563644B2 (en) 2019-01-04 2023-01-24 GoTenna, Inc. Method and apparatus for modeling mobility and dynamic connectivity on a stationary wireless testbed
US10985951B2 (en) 2019-03-15 2021-04-20 The Research Foundation for the State University Integrating Volterra series model and deep neural networks to equalize nonlinear power amplifiers
US11526375B2 (en) 2019-06-17 2022-12-13 Bank Of America Corporation Systems and methods for pre-executing idiosyncratic computation through the application of algorithmic prediction of user behavior patterns

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1612982A2 (en) * 2004-07-02 2006-01-04 Microsoft Corporation Content distribution using network coding

Family Cites Families (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5577056A (en) 1995-02-24 1996-11-19 Hughes Aircraft Co. Method and apparatus for adjusting the postamble false detection probability threshold for a burst transmission
US6359923B1 (en) 1997-12-18 2002-03-19 At&T Wireless Services, Inc. Highly bandwidth efficient communications
US6128773A (en) 1997-10-01 2000-10-03 Hewlett-Packard Company Automatically measuring software complexity
US20080043675A1 (en) 1998-05-29 2008-02-21 Research In Motion Limited System and Method for Redirecting Data to a Wireless Device Over a Plurality of Communication Paths
CN1411633A (zh) 2000-01-17 2003-04-16 三星电子株式会社 在宽带码分多址通信系统中利用用于上行链路同步方案的正交可变扩展因子码分配信道的设备和方法
US7432935B2 (en) 2002-11-19 2008-10-07 Mental Images Gmbh Image synthesis methods and systems for generating sample points in a graphics scene
US20110238855A1 (en) 2000-09-25 2011-09-29 Yevgeny Korsunsky Processing data flows with a data flow processor
GB2367459A (en) 2000-09-28 2002-04-03 Roke Manor Research Method of compressing data packets
EP1320833B1 (en) 2000-09-28 2008-12-03 Roke Manor Research Limited Improved huffman data compression method
US7047169B2 (en) 2001-01-18 2006-05-16 The Board Of Trustees Of The University Of Illinois Method for optimizing a solution set
US20030028719A1 (en) 2001-08-06 2003-02-06 Rege Satish L. Disc drives divided into multiple logical containers
US7095343B2 (en) 2001-10-09 2006-08-22 Trustees Of Princeton University code compression algorithms and architectures for embedded systems
US7502317B2 (en) 2002-05-17 2009-03-10 Alcatel-Lucent Usa Inc. Method for differentiating services and users in communication networks
US7283564B2 (en) 2002-06-26 2007-10-16 Standard Microsystems Corp. Communication system and method for sending asynchronous data and/or isochronous streaming data across a synchronous network within a frame segment using a coding violation to signify at least the beginning of a data transfer
US7164691B2 (en) 2002-06-26 2007-01-16 Standard Microsystems Corporation Communication system and method for sending isochronous streaming data across a synchronous network within a frame segment using a coding violation to signify invalid or empty bytes within the frame segment
US20040203752A1 (en) 2002-11-18 2004-10-14 Toshiba America Information Systems, Inc. Mobility communications system
US7574518B2 (en) 2003-06-23 2009-08-11 Microsoft Corporation System and method for computing low complexity algebraic network codes for a multicast network
CN101566931B (zh) * 2003-08-14 2011-05-18 克姆佩棱特科技公司 虚拟磁盘驱动系统和方法
US7773506B2 (en) 2003-10-14 2010-08-10 Qualcomm Incorporated Method and apparatus for data communications over multiple channels
US7349440B1 (en) 2003-10-15 2008-03-25 Microsoft Corporation System and method for broadcasting information over a network
US7408938B1 (en) 2003-10-15 2008-08-05 Microsoft Coporation System and method for efficient broadcast of information over a network
US7706365B2 (en) 2003-11-25 2010-04-27 California Institute Of Technology Randomized distributed network coding
US7225382B2 (en) 2004-05-04 2007-05-29 Telefonakiebolaget Lm Ericsson (Publ) Incremental redundancy operation in a wireless communication network
EP1638239A1 (en) 2004-09-20 2006-03-22 Alcatel Extended repeat request scheme for mobile communication networks
US7414978B2 (en) 2004-12-30 2008-08-19 Massachusetts Institute Of Technology Minimum-cost routing with network coding
US8102837B2 (en) 2004-12-30 2012-01-24 Massachusetts Institute Of Technology Network coding approach to rapid information dissemination
US20060224760A1 (en) 2005-03-15 2006-10-05 1000 Oaks Hu Lian Technology Development (Beijing) Co., Ltd. Method and system for providing streaming content in a peer-to-peer network with network coding
US7529198B2 (en) 2005-04-07 2009-05-05 Microsoft Corporation Scalable overlay network
US7599873B2 (en) 2005-07-19 2009-10-06 Etf Labs, Llc System and method for ETF investing
EP1780924A1 (en) 2005-10-31 2007-05-02 Siemens Aktiengesellschaft Method to determine the number of data streams to be used in a MIMO system
FR2893798B1 (fr) 2005-11-21 2008-01-04 Alcatel Sa Dispositif et procede de generation de rafales composites a preservation de priorite, pour un equipement d'un reseau de communication a commutation de rafales
ATE470993T1 (de) 2005-12-22 2010-06-15 Microsoft Corp Optimierungen für netzwerkkodierung und netzwerkdekodierung
US7664198B2 (en) 2006-03-21 2010-02-16 Kyocera Corporation System and method for broadcasting data over a wireless network using rateless codes
US8040836B2 (en) 2006-05-26 2011-10-18 Microsoft Corporation Local network coding for wireless networks
US8233558B2 (en) 2006-05-31 2012-07-31 Cornell University Methods and systems for space-time coding for distributed cooperative communicaton
EP2041911A2 (en) 2006-07-13 2009-04-01 Dolby Laboratories Licensing Corporation Codec-independent encryption of material that represents stimuli intended for human perception
US7821980B2 (en) 2006-08-03 2010-10-26 Nokia Corporation Variable rate soft information forwarding
US7843831B2 (en) 2006-08-22 2010-11-30 Embarq Holdings Company Llc System and method for routing data on a packet network
US8027284B2 (en) 2006-11-27 2011-09-27 Ntt Docomo, Inc. Method and apparatus for reliable multicasting in wireless relay networks
EP2098005B1 (en) 2006-11-29 2013-05-29 Telefonaktiebolaget LM Ericsson (publ) Reliable multicast with linearly independent data packet coding
US7876677B2 (en) 2007-05-22 2011-01-25 Apple Inc. Transmission control protocol queue sorting
US7945842B2 (en) 2007-06-19 2011-05-17 International Business Machines Corporation Method and apparatus for rateless source coding with/without decoder side information
US7912003B2 (en) 2007-06-27 2011-03-22 Microsoft Corporation Multipath forwarding algorithms using network coding
US7873878B2 (en) * 2007-09-24 2011-01-18 International Business Machines Corporation Data integrity validation in storage systems
US8705345B2 (en) 2007-11-26 2014-04-22 Iowa State University Research Foundation, Inc. Network protection using network coding
US8260952B2 (en) 2008-01-31 2012-09-04 Microsoft Corporation Multi-rate peer-assisted data streaming
US7962706B2 (en) 2008-02-14 2011-06-14 Quantum Corporation Methods and systems for improving read performance in data de-duplication storage
US7916665B2 (en) 2008-03-18 2011-03-29 Canon Kabushiki Kaisha Method and device for building of a network coding scheme for data transmission, corresponding computer program product and storage means
US20080259796A1 (en) 2008-04-17 2008-10-23 Glen Patrick Abousleman Method and apparatus for network-adaptive video coding
WO2009140625A1 (en) 2008-05-15 2009-11-19 Harris Stratex Networks Operating Corporation Systems and methods for distributed data routing in a wireless network
US8204086B2 (en) 2008-05-19 2012-06-19 Microsoft Corporation Natural network coding for multi-hop wireless network
US8068426B2 (en) 2008-05-29 2011-11-29 Massachusetts Institute Of Technology Feedback-based online network coding
US8509288B2 (en) 2008-06-04 2013-08-13 Polytechnic Institute Of New York University Spatial multiplexing gain for a distributed cooperative communications system using randomized coding
US8130228B2 (en) 2008-06-13 2012-03-06 International Business Machines Corporation System and method for processing low density parity check codes using a deterministic caching apparatus
WO2010005181A2 (en) 2008-06-16 2010-01-14 Lg Electronics Inc. Cooperative symbol level network coding in multi-channel wireless networks
WO2010025362A2 (en) 2008-08-28 2010-03-04 Massachusetts Institute Of Technology Random linear network coding for time division duplexing
US8504504B2 (en) 2008-09-26 2013-08-06 Oracle America, Inc. System and method for distributed denial of service identification and prevention
KR100970388B1 (ko) 2008-10-31 2010-07-15 한국전자통신연구원 네트워크 흐름기반 스케일러블 비디오 코딩 적응 장치 및 그 방법
US8130776B1 (en) 2009-08-28 2012-03-06 Massachusetts Institute Of Technology Method and apparatus providing network coding based flow control
EP2486696B1 (en) 2009-10-06 2014-04-02 Thomson Licensing A method and apparatus for hop-by-hop reliable multicast in wireless networks
CN102907169B (zh) 2009-10-22 2015-11-25 交互数字专利控股公司 用于采用物理层网络编码的双向中继方案的方法和装置
ES2742286T3 (es) 2010-03-25 2020-02-13 Massachusetts Inst Technology Codificación de red segura para transmisión por secuencias de vídeo, inalámbrica de multirresolución
US8014097B1 (en) * 2010-05-07 2011-09-06 Hitachi Global Storage Technologies Netherlands B.V. Disk drive with adaptive counting of writes to the data tracks for minimizing the effect of adjacent track encroachment
US8599934B2 (en) 2010-09-08 2013-12-03 Cisco Technology, Inc. System and method for skip coding during video conferencing in a network environment
US8482441B2 (en) 2011-06-03 2013-07-09 Massachusetts Institute Of Technology Method and apparatus to perform functional compression
WO2013006697A2 (en) 2011-07-05 2013-01-10 Massachusetts Institute Of Technology Energy-efficient time-stampless adaptive nonuniform sampling
US9143274B2 (en) 2011-10-31 2015-09-22 Massachusetts Institute Of Technology Traffic backfilling via network coding in a multi-packet reception network
US9025607B2 (en) 2011-11-05 2015-05-05 Massachusetts Institute Of Technology Method and apparatus for efficient transmission of information to multiple nodes
US8780693B2 (en) 2011-11-08 2014-07-15 Massachusetts Institute Of Technology Coding approach for a robust and flexible communication protocol
US9537759B2 (en) 2012-01-31 2017-01-03 Massachusetts Institute Of Technology Multi-path data transfer using network coding
US9160687B2 (en) 2012-02-15 2015-10-13 Massachusetts Institute Of Technology Method and apparatus for performing finite memory network coding in an arbitrary network
US9369541B2 (en) 2013-03-14 2016-06-14 Massachusetts Institute Of Technology Method and apparatus for implementing distributed content caching in a content delivery network
WO2014160194A2 (en) 2013-03-14 2014-10-02 Massachusetts Institute Of Technology Method and apparatus for secure communication
US9607003B2 (en) 2013-03-14 2017-03-28 Massachusetts Institute Of Technology Network coded storage with multi-resolution codes
US9185529B2 (en) 2013-03-15 2015-11-10 Massachusetts Institute Of Technology Wireless reliability architecture and methods using network coding
US9019643B2 (en) 2013-03-15 2015-04-28 Massachusetts Institute Of Technology Method and apparatus to reduce access time in a data storage device using coded seeking

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1612982A2 (en) * 2004-07-02 2006-01-04 Microsoft Corporation Content distribution using network coding
JP2006031693A (ja) * 2004-07-02 2006-02-02 Microsoft Corp ネットワークコーディングを使用したコンテンツ配信

Also Published As

Publication number Publication date
EP2972751A4 (en) 2016-11-16
EP2972751A1 (en) 2016-01-20
WO2014150837A1 (en) 2014-09-25
KR20150129856A (ko) 2015-11-20
US20150348584A1 (en) 2015-12-03
EP2972751B1 (en) 2018-11-28
PL2972751T3 (pl) 2019-04-30
JP6106327B2 (ja) 2017-03-29
CN105144075A (zh) 2015-12-09
CN105144075B (zh) 2018-09-25
US9019643B2 (en) 2015-04-28
KR101777032B1 (ko) 2017-09-08
US9361936B2 (en) 2016-06-07
US20140268398A1 (en) 2014-09-18

Similar Documents

Publication Publication Date Title
JP6106327B2 (ja) コード化シーキングを使用してデータ記憶デバイスにおけるアクセス時間を短縮する方法および装置
US6272565B1 (en) Method, system, and program for reordering a queue of input/output (I/O) commands into buckets defining ranges of consecutive sector numbers in a storage medium and performing iterations of a selection routine to select and I/O command to execute
JP5263561B2 (ja) ソリッドステート大容量記憶装置のためのデータストリーミング
US8996799B2 (en) Content storage system with modified cache write policies
US9921774B2 (en) Data storage management in a memory device
US7225293B2 (en) Method, system, and program for executing input/output requests
CN111508532A (zh) 用于磁存储介质的健康管理
US20190035427A1 (en) Apparatus and method for dynamic multiple actuator drive data access
US8437098B2 (en) Magnetic disk drive using a non-volatile storage device as cache for modified tracks
US9146680B2 (en) Utilization of disk buffer for background replication processes
TW201407968A (zh) 具有保留區段再處理的資料處理系統
US8797675B2 (en) Adaptive seek latency
US10372375B2 (en) Magnetic disk device and command reordering method thereof
US9804781B2 (en) Storage media performance management
US9588898B1 (en) Fullness control for media-based cache operating in a steady state
US8055840B2 (en) Storage device including a controller for rearranging writing commands
US9047311B2 (en) Deadline-based scheduling in a distributed file system
JP2009237902A (ja) 記録装置及びその制御方法
US11232024B2 (en) Predictive caching in device for media seek in playback or scrolling
JP7327775B2 (ja) ディスク状記録媒体管理装置、ディスク状記録媒体管理方法、及びプログラム
US10540110B2 (en) Multi-channel data storage for accelerated single-channel read throughput
JP5392580B2 (ja) ディスクアレイ装置及びその制御方法
JP2012038330A (ja) ハードディスクドライブ

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161019

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161024

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170124

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170203

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170303

R150 Certificate of patent or registration of utility model

Ref document number: 6106327

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250