JP2012533800A - ドライブからホスト装置に送信される情報にギャップを挿入する方法 - Google Patents

ドライブからホスト装置に送信される情報にギャップを挿入する方法 Download PDF

Info

Publication number
JP2012533800A
JP2012533800A JP2012520784A JP2012520784A JP2012533800A JP 2012533800 A JP2012533800 A JP 2012533800A JP 2012520784 A JP2012520784 A JP 2012520784A JP 2012520784 A JP2012520784 A JP 2012520784A JP 2012533800 A JP2012533800 A JP 2012533800A
Authority
JP
Japan
Prior art keywords
drive
information
host device
time delay
command
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
JP2012520784A
Other languages
English (en)
Other versions
JP2012533800A5 (ja
JP5658250B2 (ja
Inventor
ステンフォート、ロス
Original Assignee
サンドフォース インク.
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 サンドフォース インク. filed Critical サンドフォース インク.
Publication of JP2012533800A publication Critical patent/JP2012533800A/ja
Publication of JP2012533800A5 publication Critical patent/JP2012533800A5/ja
Application granted granted Critical
Publication of JP5658250B2 publication Critical patent/JP5658250B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/126Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system

Abstract

【解決手段】 ドライブからホスト装置に送信される情報にギャップを挿入するシステム、方法、およびコンピュータプログラム製品が提供されている。動作中、ドライブは1若しくはそれ以上のコマンドをホスト装置から受信する。さらに、前記ホスト装置に送信される情報がキュー(待ち行列)に入れられる。さらにまた、ギャップが前記ホスト装置に送信される前記情報に挿入されることにより、前記ホスト装置が前記ドライブに追加コマンドを送信することができるようになる。
【選択図】 図1

Description

本発明はメモリシステムに関し、より具体的には、ドライブがデータ転送を開始した後、ホスト装置から当該ドライブがコマンドを受信する方法に関する。
多くのストレージシステムにおいて、ターゲット装置は、フレームをホストに転送しているときにコリジョンが発生した場合の優先順位を有する。これらの場合、コマンドがキュー(待ち行列)に入っているとき(例えば、ファーストパーティ直接メモリアクセス(First Party Direct Memory Access)などを使用して)、いったん前記ターゲットが直接メモリアクセス(party direct memory access:DMA)セットアップフレーム情報構造(frame information structure:FIS)を送信してデータフェーズに入ると、前記ホストは通常いかなるコマンドも前記ターゲット装置に送信できなくなる。
前記ドライブが速くデータをフェッチ(取得)することができる場合、次に前記ホストは最大キュー長と同等の数のいくつかのコマンドを前記ドライブに送信することができ得る。前記ドライブは、次にDMAセットアップ、データ、DMAセットアップ、データなどを前記フレーム間に全くブレークを入れずに戻す。これにより、前記ホストはこれ以上のコマンドを送信することができなくなる。
これらの場合、前記ドライブのキュー長は、最大キュー長からゼロへ、ゼロから最大キュー長に戻り、そして再びゼロへと振動する。これはパフォーマンスに悪影響を及ぼすs。このように、従来技術に関連するこれらおよび/またはその他の問題に対処する必要性が存在する。
ドライブからホスト装置に送信される情報にギャップを挿入するシステム、方法、およびコンピュータプログラム製品が提供されている。動作中、ドライブは1若しくはそれ以上のコマンドをホスト装置から受信する。さらに、前記ホスト装置に送信される情報がキュー(待ち行列)に入れられる。さらにまた、ギャップが前記ホスト装置に送信される前記情報に挿入されることにより、前記ホスト装置が前記ドライブに追加コマンドを送信することができるようになる。
図1は、1つの実施形態に従った、ドライブからホスト装置に送信される情報にギャップを挿入する方法を示す。 図2は、1つの実施形態に従った、ドライブからホスト装置に送信される情報にギャップを挿入するシステムを示す。 図3は、別つの実施形態に従った、ドライブからホスト装置に送信される情報にギャップを挿入する方法を示す。 図4は、例示した様々な実施形態の様々なアーキテクチャおよび/または機能性が実行される例示的なシステムを図示する。
本発明の1若しくはそれ以上の実施形態の詳細な説明を、本発明の選り抜かれた、詳細を図示する添付の図面とともに以下に提供する。前記実施形態と関連させて本発明を説明する。本発明の実施形態は単に例示的なもであることが理解され、本発明が本明細書の実施形態にまたは任意の若しくは全ての実施形態によって明確に限定されるものではなく、本発明は多数の変更、修正、および均等物を包含する。説明における単調さを避けるため、様々な単語ラベル(これに限定されるものではないが、第1に、最後の、特定の、様々な、更に、他の、特別な、選択の、幾つかの、および著しい)が個別のセットの実施形態に適用されており、このように本明細書で使用されるラベルは、質または好適な若しくは不利益なあらゆる形態を伝達することを明示的に意味しているのではなく、単に個別のセットを便利なように識別することを目的としている。記載の方法における幾つかの工程の順序は本発明の範囲内において変更可能である。本発明への十分な理解を助けるため、以下の記載において多数の具体的詳細が示されている。この詳細は実施例の目的のために提供され、本発明は一部あるいは全ての詳細に関係なく特許請求の範囲に従って実行されるものである。明確さのため、本発明に関する技術分野で知られている技工物については、本発明が不必要に曖昧にならないように、詳細に記載していない。
前書き
この前書を含める目的は、発明の詳細な説明のより迅速な理解を促すためであり、本発明は前書きで提供されている概念に限定されるものではなく(例えあったとしても明示的な実施例を含むのみ)、全ての前書きの段落は、必ずしも全体の発明の内容を簡略したものではなく、また包括的または限定的に説明することを目的とするものでもない。例えば、以下の前書きは、空間的または組織的にいくつかの実施形態にのみ限定される概括的情報を提供する。特許請求の範囲から最終的に引き出されるものを含み、明細書の部分を通して検討されるその他多くの実施形態がある。
ドライブからホスト装置に送信される情報にギャップを挿入するシステム、方法、およびコンピュータプログラム製品が提供されている。動作中、ドライブは1若しくはそれ以上のコマンドをホスト装置から受信する。さらに、前記ホスト装置に送信される情報がキュー(待ち行列)に入れられる。さらにまた、ギャップが前記ホスト装置に送信される前記情報に挿入されることにより、前記ホスト装置が前記ドライブに追加コマンドを送信することができるようになる。
例示的な実施形態
詳細な説明に対する前書きの結論として、以下は例示的な実施形態の収集物であって、「EC」(例示的組み合わせ(Example Combinations))として明示的に列挙した少なくとも幾つかのものを含み、本明細書に記載された概念に従った様々な実施形態のタイプの追加的説明を提供し、これらの実施例は相互排他的、包括的、または限定的なことを意味するものではなく、本発明はこれらの例示的な実施形態に限定されるものでもなく、むしろ添付の特許請求の範囲の範囲内で可能な全ての修正および変更を包含するものである。
EC1. 方法であって、
ドライブが、1若しくはそれ以上のコマンドをホスト装置から受信する工程と、
前記ホスト装置に送信する情報をキュー(待ち行列)に入れる工程と、
前記ホスト装置に送信する前記情報にギャップを挿入する工程であって、これにより前記ホスト装置は追加のコマンドを前記ドライブに送信することができるものである、前記挿入する工程と
を有する方法。
EC2. EC1記載の方法において、前記ギャップを挿入する工程は、時間遅延を挿入する工程を含むものである方法。
EC3. EC2記載の方法において、前記情報は、セットアップ情報および前記1若しくはそれ以上のコマンドのうちの少なくとも1つに関連付けられたデータを含むものである方法。
EC4. EC3記載の方法において、前記セットアップ情報は、直接メモリアクセス(direct memory access:DMA)フレーム情報構造(frame information structure:FIS)を含むものである方法。
EC5. EC3記載の方法において、前記セットアップ情報は、セット・デバイス・ビットFISを含むものである方法。
EC6. EC3記載の方法において、前記時間遅延は、前記セットアップ情報を送信する前に挿入されるものである方法。
EC7. EC3記載の方法において、前記時間遅延は、前記セットアップ情報を送信した後に挿入されるものである方法。
EC8. EC2記載の方法において、さらに、
前記ドライブが、前記時間遅延の間に前記追加のコマンドを前記ホスト装置から受信する工程を有するものである方法。
EC9. EC2記載の方法において、前記時間遅延を挿入する工程は、前記情報が前記ホスト装置に送信されている間に前記時間遅延を挿入する工程を含むものである方法。
EC10. EC9記載の方法において、前記時間遅延は、前記ドライブの現在のキュー(待ち行列)長に基づいて挿入される工程を含むものである方法。
EC11. EC9記載の方法において、前記時間遅延は、前のコマンドを受信してからの経過時間に基づいて挿入される工程を含むものである方法。
EC12. EC9記載の方法において、前記時間遅延の時間長は、前記ドライブのキュー長に基づくものである方法。
EC13. EC9記載の方法において、前記時間遅延の時間長は、前記ドライブが前のコマンドを受信してからの経過時間に基づくものである方法。
EC14. EC2記載の方法において、前記時間遅延の時間長または前記時間遅延が挿入される時点のうちの少なくとも1つは、リアルタイムで決定されるものである方法。
EC15. EC2記載の方法において、前記時間遅延の時間長または前記時間遅延が挿入される時点のうちの少なくとも1つは、所定値である方法。
EC16. EC2記載の方法において、前記情報はセットアップ情報を含み、このセットアップ情報は前記時間遅延が当該セットアップ情報に後続することを示す情報を含むものである方法。
EC17. EC2記載の方法において、前記情報はステータス情報を含み、前記時間遅延は当該ステータス情報を送信する前に挿入されるものである方法。
EC18. EC1記載の方法において、前記ギャップを挿入する工程は、追加情報を挿入する工程を含むものである方法。
EC19. EC1記載の方法において、前記ホスト装置は、前記ギャップに先立って前記ギャップについて通知されるものである方法。
EC20. EC1記載の方法において、前記ドライブはシリアルATA(Serial ATA:SATA)ドライブを含むものである方法。
EC21. コンピュータ可読媒体に組み込まれたコンピュータプログラム製品であって、
ドライブが、1若しくはそれ以上のコマンドをホスト装置から受信するコンピュータコードと、
前記ホスト装置に送る情報をキュー(待ち行列)に入れるコンピュータコードと、
前記ホスト装置に送る前記情報にギャップを挿入するコンピュータコードであって、これにより前記ホスト装置は前記ドライブに追加のコマンドを送信することができるものである、前記ギャップを挿入するコンピュータコードと
を有するコンピュータプログラム製品。
EC22. 装置であって、
1若しくはそれ以上のコマンドをホスト装置から受信するドライブと、
前記ホスト装置に送る情報をキュー(待ち行列)に入れるバッファーと、
前記ホスト装置に送る前記情報にギャップを挿入するコントローラであって、これにより前記ホスト装置は前記ドライブに追加のコマンドを送信することができるものである、前記コントローラと
を有する装置。
EC23. システムであって、
コマンドをホスト装置から受信することが可能なドライブであって、当該ホスト装置は、当該ドライブが前記ホストによる追加のコマンドの送信を阻止することを可能とするストレージプロトコルを使用して当該ドライブと通信可能であり、前記ドライブは、
コントローラと、
バッファーと
を有し、
前記ドライブは、コリジョンが発生したとき前記ホスト装置より優先され、
前記バッファーは、前記ホスト装置に送信する情報をキュー(待ち行列)に入れることが可能であり、
前記コントローラは前記情報にギャップを挿入することが可能であり、これにより、前記ホスト装置が前記追加のコマンドを前記ドライブに送信することを可能にするものである
システム。
EC24. EC23記載のシステムにおいて、前記コントローラはさらに、少なくとも部分的にセットアップ情報を前記ホスト装置へ送信する工程によって、前記情報を前記ホスト装置へ送信する工程を開始した後においても、前記ギャップを挿入することが可能であり、これにより、前記ホスト装置が前記追加のコマンドを前記ドライブに送信することを可能にするものであるシステム。
EC25. EC24記載のシステムにおいて、前記セットアップ情報は直接メモリアクセス(DMA)セットアップを有するものであるシステム。
EC26. EC23記載のシステムにおいて、前記ドライブは、
シリアルATA(SATA)ドライブ、
シリアル接続SCSI(Serial Attached SCSI:SAS)ドライブ、
ファイバーチャンネル(Fibre Channel:FC)ドライブ、および
ユニバーサル・シリアル・バス(Universal Serial Bus:USB)ドライブ
のうちの少なくとも1つを有するものであるシステム。
EC27. EC23記載のシステムにおいて、前記コマンドは、
転送要求、
データ転送コマンド、
前記ドライブに関連付けられたメモリの一部にアクセスするコマンド、および
データ検索コマンド、
のうちの少なくとも1つを有するものであるシステム。
EC28. EC23記載のシステムにおいて、前記情報は、
データ情報、
データ構造情報、
直接メモリアクセス(DMA)フレーム情報構造(FIS)、
セット・デバイス・ビットFIS、および
前記コマンドの少なくとも1つに関連付けられたデータ
のうちの少なくとも1つを有するものであるシステム。
EC29. EC23記載のシステムにおいて、前記ギャップは、
ブレーク、
割込み、および
遅延
のうちの少なくとも1つを有するものであるシステム。
EC30. EC23記載のシステムにおいて、前記ギャップは、
時間遅延、
追加情報、
前記ギャップの長さ、
ベンダー固有の情報、および
前記ギャップに関連付けられた情報
のうちの少なくとも1つを有するものであるシステム。
EC31. EC23記載のシステムにおいて、前記コントローラはさらに、前記ドライブの現在のコマンドのキュー長に少なくとも部分的に基づいて前記ギャップを挿入することが可能であるシステム。
EC32. EC23記載のシステムにおいて、前記コントローラはさらに、前のコマンドが受信されてからの時間に少なくとも部分的に基づいて前記ギャップを挿入することが可能であるシステム。
EC33. EC23記載のシステムにおいて、前記ギャップは時間遅延を有し、前記コントローラはリアルタイムで当該時間遅延の長さを決定することができるものであるシステム。
EC34. EC23記載のシステムにおいて、前記ギャップは時間遅延を有し、前記コントローラはリアルタイムで当該時間遅延が挿入される時点を決定することができるものであるシステム。
EC35. 方法であって、
ドライブが、1若しくはそれ以上のコマンドをホスト装置から受信する工程であって、当該ホスト装置は、当該ドライブが前記ホストによる追加のコマンドの送信を阻止することを可能とするストレージプロトコルを使用して当該ドライブと通信可能なものである、前記受信する工程と、
前記ホスト装置に送信する情報をキュー(待ち行列)に入れる工程であって、前記ホスト装置への送信は少なくとも部分的にセットアップ情報を介して行われるものである、前記キューに入れる工程と、
時間遅延を挿入するかを決定する工程と、
前記決定する工程に基づいて、条件付きで前記時間遅延を挿入し、前記ホスト装置が前記追加のコマンドを前記ドライブに送信することを可能にする工程と
を有する方法。
EC36. EC35記載の方法において、前記セットアップ情報は、直接メモリアクセス(DMA)セットアップを有するものである方法。
EC37. EC35記載の方法において、さらに、
前記ドライブに関連付けられたバッファーを検査して、アクティブな待機コマンドが存在するかを決定し、存在する場合は、次に前記決定する工程を実行する工程を有するものである方法。
EC38. EC35記載の方法において、前記ドライブは、
シリアルATA(SATA)ドライブ、
シリアル接続SCSI(SAS)ドライブ、
ファイバーチャンネル(FC)ドライブ、および
ユニバーサル・シリアル・バス(USB)ドライブ
のうちの少なくとも1つを有するものである方法。
EC39. EC35記載の方法において、前記コマンドは、
転送要求、
データ転送コマンド、
前記ドライブに関連付けられたメモリの一部にアクセスするコマンド、および
データ検索コマンド、
のうちの少なくとも1つを有するものである方法。
EC40. EC35記載の方法において、前記情報は、
データ情報、
データ構造情報、
直接メモリアクセス(DMA)フレーム情報構造(FIS)、
セット・デバイス・ビットFIS、および
前記コマンドの少なくとも1つに関連付けられたデータ
のうちの少なくとも1つを有するものである方法。
EC41. EC35記載の方法において、前記決定する工程は、前記ドライブの現在のコマンドのキュー長に少なくとも部分的に基づくものである方法。
EC42. EC35記載の方法において、前記決定する工程は、前のコマンドが受信されてからの時間に少なくとも部分的に基づくものである方法。
EC43. EC35記載の方法において、さらに、
リアルタイムで前記時間遅延の長さを決定する工程を有するものである方法。
EC44. EC35記載の方法において、さらに、
リアルタイムで前記時間遅延が挿入される時点を決定する工程を有するものである方法。
EC45. システムであって、
ドライブが、1若しくはそれ以上のコマンドをホスト装置から受信する手段であって、当該ホスト装置は、当該ドライブが前記ホスト装置による追加のコマンドの送信を阻止することを可能とするストレージプロトコルを使用して当該ドライブと通信可能なものである、前記受信する手段と、
前記ホスト装置に送信する情報をキュー(待ち行列)に入れる手段であって、前記ホスト装置への送信は少なくとも部分的にセットアップ情報を介して行われるものである、前記キューに入れる手段と、
時間遅延を挿入するかを決定する手段と、
前記決定する手段に基づいて、条件付きで前記時間遅延を挿入し、前記ホスト装置が前記追加のコマンドを前記ドライブに送信することを可能にする手段と
を有するシステム。
EC46. EC45記載のシステムにおいて、前記セットアップ情報は、直接メモリアクセス(DMA)セットアップを有するものであるシステム。
EC47. EC45記載のシステムにおいて、さらに、
前記ドライブに関連付けられたバッファーを検査して、アクティブな待機コマンドが存在するかを決定する手段を有し、前記決定する手段は当該検査する手段の結果に基づく条件付のものであるシステム。
EC48. EC45記載のシステムにおいて、前記ドライブは、
シリアルATA(SATA)ドライブ、
シリアル接続SCSI(SAS)ドライブ、
ファイバーチャンネル(FC)ドライブ、および
ユニバーサル・シリアル・バス(USB)ドライブ
のうちの少なくとも1つを有するものであるシステム。
EC49. EC45記載のシステムにおいて、前記コマンドは、
転送要求、
データ転送コマンド、
前記ドライブに関連付けられたメモリの一部にアクセスするコマンド、および
データ検索コマンド、
のうちの少なくとも1つを有するものであるシステム。
EC50. EC45記載のシステムにおいて、前記情報は、
データ情報、
データ構造情報、
直接メモリアクセス(DMA)フレーム情報構造(FIS)、
セット・デバイス・ビットFIS、および
前記コマンドの少なくとも1つに関連付けられたデータ
のうちの少なくとも1つを有するものであるシステム。
EC51. EC45記載のシステムにおいて、前記決定する手段は、前記ドライブの現在のコマンドのキュー長に少なくとも部分的に基づくものであるシステム。
EC52. EC45記載のシステムにおいて、前記決定する手段は、前のコマンドが受信されてからの時間に少なくとも部分的に基づくものであるシステム。
EC53. EC45記載のシステムにおいて、さらに、
リアルタイムで前記時間遅延の長さを決定する工程を有するものであるシステム。
EC54. EC45記載のシステムにおいて、さらに、
リアルタイムで前記時間遅延が挿入される時点を決定する工程を有するものであるシステム。
EC55. 命令セットを格納する有形コンピュータ可読媒体であって、コンピュータによって当該命令が実行されると、当該コンピュータにより、
ドライブが、1若しくはそれ以上のコマンドをホスト装置から受信する工程であって、当該ホスト装置は、当該ドライブが前記ホスト装置による追加のコマンドの送信を阻止することを可能とするストレージプロトコルを使用して当該ドライブと通信可能なものである、前記受信する工程と、
前記ホスト装置に送信する情報をキュー(待ち行列)に入れる工程であって、前記ホスト装置への送信は少なくとも部分的にセットアップ情報を介して行われるものである、前記キューに入れる工程と、
前記決定する工程に基づいて、条件付きで前記時間遅延を挿入し、前記ホスト装置が前記追加のコマンドを前記ドライブに送信することを可能にする工程と
を有する機能を実行させるものである
有形コンピュータ可読媒体。
EC56. EC55記載の有形コンピュータ可読媒体において、前記条件付きで挿入する工程は、前記時間遅延を挿入するかを決定する工程に少なくとも部分的に基づくものである有形コンピュータ可読媒体。
EC57. EC56記載の有形コンピュータ可読媒体において、前記決定する工程は、前記ドライブの現在のコマンドのキュー長に少なくとも部分的に基づくものである有形コンピュータ可読媒体。
EC58. EC56記載の有形コンピュータ可読媒体において、前記決定する工程は、前のコマンドが受信されてからの時間に少なくとも部分的に基づくものである有形コンピュータ可読媒体。
EC59. EC55記載の有形コンピュータ可読媒体において、前記機能はさらに、リアルタイムで前記時間遅延を決定する工程を有するものである有形コンピュータ可読媒体。
EC60. EC55記載の有形コンピュータ可読媒体において、前記機能はさらに、リアルタイムで前記時間遅延が挿入される時点を決定する工程有するものである有形コンピュータ可読媒体。
EC61. EC55記載の有形コンピュータ可読媒体において、前記ドライブは、
シリアルATA(SATA)ドライブ、
シリアル接続SCSI(SAS)ドライブ、
ファイバーチャンネル(FC)ドライブ、および
ユニバーサル・シリアル・バス(USB)ドライブ
のうちの少なくとも1つを有するものである有形コンピュータ可読媒体。
EC62. EC55記載の有形コンピュータ可読媒体において、前記コマンドは、
転送要求、
データ転送コマンド、
前記ドライブに関連付けられたメモリの一部にアクセスするコマンド、および
データ検索コマンド、
のうちの少なくとも1つを有するものである有形コンピュータ可読媒体。
EC63. EC55記載の有形コンピュータ可読媒体において、前記情報は、
データ情報、
データ構造情報、
直接メモリアクセス(DMA)フレーム情報構造(FIS)、
セット・デバイス・ビットFIS、および
前記コマンドの少なくとも1つに関連付けられたデータ
のうちの少なくとも1つを有するものである有形コンピュータ可読媒体。
様々な実施形態の説明
1つの実施形態に従った、ドライブからホスト装置に送信される情報にギャップを挿入する方法100を示す。図示するように、ドライブが1若しくはそれ以上のコマンドをホスト装置から受信する。工程102を参照。
前記コマンドは、前記ホスト装置から前記ドライブへの送信を可能にするあらゆるコマンドまたは命令を含む。例えば、1つの実施形態において、前記コマンドはデータを転送する(例えば、転送要求など)コマンドを含む。別の実施形態において、前記コマンドは、前記ドライブに関連付けられたメモリの一部にアクセスするコマンドを含む。
前記ドライブは、データを格納することが可能な任意のドライブを含む。例えば、1つの実施形態において、前記ドライブは、シリアルATA(SATA)を含む。様々な他の実施形態において、前記ドライブは、これに限定されるものではないが、シリアル接続SCSI(SAS)ドライブ、ファイバーチャンネル(FC)、またはユニバーサル・シリアル・バス(USB)、および/または他のあらゆるストレージデバイス若しくはドライブを含む。
さらに、前記ホスト装置は、コマンドをドライブに送信できる任意の装置を含む。例えば、様々な実施形態において、前記ホスト装置は、デスクトップコンピュータ、ラップトップコンピュータ、および/または他のあらゆるタイプの論理回路を含むものである。またさらに、前記ホスト装置は、これに限定されるものではないが、携帯情報端末(personal digital assistant:PDA)装置、携帯電話装置などを含む。
図1にさらに示すように、前記ホスト装置に送る情報がキューに入れられる。工程104を参照。1つの実施形態において、前記情報は、データをキューに入れることが可能なバッファーまたはデバイスによってキューに入れられる。
前記情報は、前記データに関連付けられたあらゆるデータまたは情報(例えば、データタイプ情報、データ構造情報など)を含む。1つの実施形態において、前記情報は、セットアップ情報および前記コマンドのうちの少なくとも1つに関連付けられたデータを含む。例えば、前記ホスト装置が送信して前記ドライブで受信されるコマンドは、データを検索するコマンドを含む。
前記ドライブは、次に前記データおよびセットアップ情報をキューに入れる。1つの実施形態において、前記セットアップ情報は、直接メモリアクセス(DMA)フレーム情報構造(FIS)を含む。別の実施形態において、前記セットアップ情報は、セット・デバイス・ビットFISを含む。様々な実施において、前記ギャップは時間ベースまたはコマンド閾値ベースまたはこれら両方の組み合わせであることに注意すべきである。前記閾値はまた、コマンドの数およびキュー長または他のパラメータに基づく。
さらに、前記ホスト装置に送信する情報の中にギャップが挿入され、これにより前記ホスト装置は追加のコマンドを前記ドライブに送信することが可能となる。工程106を参照。本発明の記載の内容において、ギャップは前記ホスト装置がコマンドを前記ドライブに送信できる中断、割込み、または遅延について言及する。
様々な実施形態において、前記ギャップは時間遅延(または追加情報など)を含む。例えば、1つの実施形態において、前記ギャップを挿入することは、時間遅延を挿入することを含む。別の実施形態において、前記ギャップは追加情報を挿入することを含む。
前記追加情報はあらゆるタイプの情報を含む。例えば、1つの実施形態において、前記前記追加情報は前記ギャップの長さを示す情報を含む。別の実施形態において、前記追加情報は、ベンダー固有の情報を含む。さらに別の実施形態において、前記追加情報は前記ギャップに関連付けられた情報を含む。
さらに別の実施形態において、前記情報はセットアップ情報を含み、これは前記時間遅延が当該セットアップ情報の後に起こることを示す情報を含む。この場合前記情報は、ステータス情報を含み、前記時間遅延が前記ステータス情報を送信する前にまたは前記ステータス情報の送信後に挿入される。
前記ギャップは前記情報を送信するどの時点であっても挿入されることに、注意すべきである。例えば、前記ギャップが時間遅延を含む場合、当該時間遅延は前記セットアップ情報を送信する前に挿入される。別の実施形態において、前記時間遅延は、前記セットアップ情報を送信した後に挿入される。
いずれの場合も、前記時間遅延の期間の間前記ドライブは前記追加情報を前記ホスト装置から受信する。1つの実施形態において、前記ギャップを挿入する工程は、前記情報が前記ホスト装置に送信されている期間の時点で当該ギャップを挿入する工程を含む。
前記ギャップが挿入される時点は様々なパラメータに基づくことに、注意すべきである。例えば、1つの実施形態において、前記ギャップは、前記ドライブの現在のキュー長に基づいて挿入される。別の実施形態において、前記ギャップは、前のコマンドが受信されてからの経過時間に基づいて挿入される。
さらにまた、前記ギャップの長さまたはサイズは様々なパラメータに基づいている。例えば、1つの実施形態において、前記時間遅延の時間の長さは、前記ドライブの現在のキュー長に基づく。別の実施形態において、前記時間遅延の時間の長さは、前のコマンドが受信されてからの経過時間に基づく。
いずれかの場合において、任意選択的に、前記時間遅延の時間の長さまたは前記時間遅延が挿入される時点のいずれか1つがリアルタイムで決定される。別の任意選択として、前記時間遅延の時間の長さまたは前記時間遅延が挿入される時点のいずれか1つは、所定値である。この場合、前記所定値は、ハードフェアまたはソフトフェアで設定される値である。
ユーザーの望みによって前述のフレームワークが共に実装される若しくは実装されない様々な任意のアーキテクチャおよび特性に関するより例示的な情報について、これから説明する。以下の情報は例証目的のために説明するものであり、いかなる方法においても限定されるものとして解釈すべきでないことに、特に注意すべきである。以下の特性のいずれかが、記載の他の特性を除いてまたは除かないで随意に組み込まれる。
図2はドライブからホスト装置に送信される情報にギャップを挿入するシステム200を示す。任意選択として、前記システム200は、図1の方法100を実行するために実装される。しかし、当然のことながら、前記システム200は、望ましいあらゆる環境で実装される。前述の定義は、本明細書の説明のすべてにおいて適用されることにも、注意すべきである。
図示するように、前記システム200は、ホスト装置204から1若しくはそれ以上のコマンドを受信するドライブ202を含む。さらに、前記システム200は、前記ホスト装置204に送信する情報をキューに入れるバッファー206を含む。さらにまた、前記システム200は、前記ホスト装置204に送信する前記情報にギャップを挿入するコントローラ208を含む、これにより前記ホスト装置204は、前記ドライブ202が前記ホスト装置204へ前記情報の送信を開始した後、追加情報を前記ドライブ202に送信することができる。
前記ドライブ202は、例えばSATAドライブ、SASドライブ、FCドライブおよび/または他のストレージデバイス若しくはドライブなどの様々なタイプのドライブを含むことに注意すべきである。非常に速くデータをフェッチするドライブは、前記情報にギャップを挿入することによって当該ドライブがデータ転送を開始するとき最大キュー長からゼロまで振動しないように構成される。
例えば、SATAにおいて、前記ターゲットは通常、フレームを前記ホストに転送しているときにコリジョンが発生した場合の優先順位を有する。また、SATAは通常、コマンドがキューに入っているとき(例えば、ファーストパーティ直接メモリアクセスなどを使用して)、いったん前記ターゲットがDMAセットアップFISを送信して前記データフェーズに入ると、前記ホストは前記ターゲットにいかなるコマンドも送信できなくなる。
前記ドライブが非常に速くフェッチできる場合、次にホストは最大キュー長(例えば、32など)と同等の数のいくつかのコマンドを前記ドライブに送信することができ得る。通常、前記ドライブはDMAセットアップ、データ、DMAセットアップ、データなどを前記フレーム間のギャップなしに戻す。これにより、前記ホストはこれ以上のコマンドを送信することができなくなる。
前記ドライブのキュー長は、最大キュー長(例えば、32など)からゼロにおよびゼロから最大キュー長(例えば、32など)に戻ったりというように振動する。これはパフォーマンスに悪影響を及ぼす。一部の例では、ハードディスクドライブ(hard disk drives:HDDs)がとても遅いために前記データにギャップが生じる場合、この振動は発生しない。しかしながら、より速いドライブでは、前記振動が発生する。
このように、1つの実施形態において、DMAセットアップを前記ホスト装置204に発信する前に1若しくはそれ以上のギャップが挿入されることによって、前記ホスト装置204はさらにコマンドを前記ドライブ202に送信することができる。前記ギャップが挿入される時点は、前記ドライブ202の現在のキュー長または最後のコマンドからの経過時間を含む様々なパラメータに基づく。1つの実施形態において、前記ギャップが挿入される時点は、前記ドライブ202の現在のキュー長、最後のコマンドからの経過時間、またはこれらの若しくは他のパラメータの組み合わせに基づく。
さらに、コマンドが前記ホスト装置204から送信されるのを許可する前記ギャップの長さはまた、様々なパラメータに基づく。例えば、前記ギャップの長さは、前記キュー長、時間、または他のパラメータに基づく。様々な実施形態において、これらのパラメータは、リアルタイムで前記ホスト装置204または前記ドライブ202のいずれかによって調整される。任意選択として、前記パラメータはまた、固定値で設定される。
1つの実施形態において、前記ドライブ202は、DMAセットアップにこのDMAセットアップの後にギャップあることを示す情報を追加することによって、前記ホスト装置204に信号を送る。任意選択として、前記ホスト装置204は、前記コマンドに情報を追加することによってコマンド送信の終了を信号で伝える。また、1つの実施形態において、前記ギャップがまた、ステータスを送信する前に挿入されることに注意するべきである。これは、前記DMAセットアップFISの前に前記ギャップを挿入する代わりにまたは前記DMAセットアップFISの前に前記ギャップを挿入するのに加えて実行される。
図3は、別の実施形態に従った、ドライブからホスト装置に送信される情報にギャップを挿入する方法300を示す。任意選択として、この方法300は、図1〜2の機能性およびアーキテクチャとの関連で実行することもできる。しかし、当然のことながら、前記方法300は、望ましいあらゆる環境で実行される。再び、前述の定義は、本明細書の説明すべてに適用される。
図に示すように、アクティブな待機コマンドが存在するかが決定される。工程302を参照。この場合、前記アクティブな待機コマンドは、ドライブに関連付けられたバッファー内のアクティブな待機コマンドである。
アクティブな待機コマンドが存在する場合、時間遅延を挿入するかが決定される。1つの実施形態において、前記時間遅延を挿入するために、タイマーが使用される。
前記時間遅延の挿入が決定された場合、前記時間遅延が挿入される。工程306を参照。次に、前記システムがデータ転送可能な状態かが決定される。工程308を参照。
前記システムがデータ転送可能な状態の場合、DMAセットアップFISが送信される。工程310を参照。いったん前記DMAセットアップFISが送信されると、前記データ転送は完了する。工程312を参照。前記DMAセットアップは、コマンドに関連付けられたたった一片のデータであることに注意すべきである。いったんこの一片のデータが転送を完了すると、その後ギャップが挿入される。
こうして、次に再び、時間遅延を挿入するかが決定される。工程314を参照。前記時間遅延の挿入が決定されると、前記時間遅延が挿入される。工程316を参照。
さらに図に示すように、セット・デバイス・ビットFISを送信するかが決定される。前記セット・デバイス・ビットFISの送信が決定されると、前記セット・デバイス・ビットFISが送信される。工程320を参照。
このような方法で、前記ホスト装置は、たとえ前記ドライブがデータ送信を開始していても、前記ドライブにコマンドを送信することができる。図3に図示されていないが、前記時間遅延の期間の間、情報は前記ホスト装置へ送信される。例えば、前記時間遅延の期間に関する情報またはベンダー固有の情報が挿入される。
図4は、上述の様々な実施形態の様々なアーキテクチャおよび/または機能性が実行される例示的なシステム400を図示する。図示するように、システム400はコミュニケーションバス402に接続される少なくとも1つのホスト処理装置401を含むように提供される。前記システム400はまた、主記憶装置404を含む。制御論理(ソフトウェア)およびデータは、ランダム・アクセス・メモリ(random access memory:RAM)の形態を取る前記主記憶装置404に格納される。
前記システム400はまた、グラフィックプロセッサ406と表示装置408(例えば、コンピュータモニタ)とを含む。1つの実施形態において、前記グラフィックプロセッサ406は複数のシェーダモジュール、ラスタライゼーションモジュールなどを含む。前述のモジュールの各々は、実に単一半導体プラットフォーム上に配置され、グラフックス・プロセッシング・ユニット(graphics processing unit:GPU)を形成する。
本明細書の記載において、単一半導体プラットフォームはたった一つの単一半導体ベースの集積回路またはチップについて言及している。前記用語の単一半導体プラットフォームはまた、増大した接続性を備えたマルチチップモジュールについて言及し、オンチップ動作をシミュレーションし、且つ従来の中央処理装置(central processing unit:CPU)およびバス導入の利用を実質的に改善する。言うまでもなく、様々なモジュールはまた、ユーザーの望みに応じて別々に或いは半導体プラットフォームの様々な組み合わせで据えられる。
前記システム400はまた、二次記憶装置410を含む。前記二次記憶装置410は、ハードディスクドライブおよび/または例えばフロッピー(登録商標)ディスクドライブ、磁気テープ装置、コンパクトディスクドライブなどを代表とする着脱可能なストレージデバイスを含む。前記着脱可能なストレージデバイスは、周知の方法で着脱可能なストレージユニットから読み出すおよび/またはに書き込む。
コンピュータプログラム(またはコンピュータ制御論理アルゴリズム)が前記主記憶装置404および/または前記二次記憶装置410に格納される。このようなコンピュータプログラムは、実行時に前記システム400に様々機能を実行させることができる。記憶装置(メモリ)404、記憶装置(ストレージ)410および/または他のあらゆるストレージがコンピュータ可読媒体の可能な実施例である。
1つの実施形態において、前出の様々な図面のアーキテクチャおよび/または機能性は、前記ホスト処理装置401、グラフィックプロセッサ406、前記ホスト処理装置401および前記グラフィックプロセッサ406の両方の能力の少なくとも一部の能力を持つ集積回路(図示せず)、チップセット(例えば、関連付けられた機能を実行するためのユニットとして動作するように設計され且つ販売される一群の集積回路)、および/またはその点に関する他のあらゆる集積回路において実施される。
さらにまた、前出の前記様々な図面のアーキテクチャおよび/または機能性は、一般的なコンピュータシステム、回路基板システム、娯楽としての用途専用のゲーム機システム、特定用途向けシステム、および/または他のあらゆる望ましいシステムにおいて実施される。例えば、前記システム400は、デスクトップコンピュータ、ラップトップコンピュータ、および/または他のあらゆるタイプの論理回路の形を取る。また更に、前記システム400は、これに限定されるものではないが、携帯情報端末(personal digital assistant:PDA)装置、携帯電話装置、テレビなどを含む他の様々なデバイスの形を取る。
さらに、図示していないが、前記システム400は通信目的のためにネットワーク[例えば、電気通信網、ローカルエリア・ネットワーク、(local area network:LAN)、ワイヤレス・ネットワーク、および例えばインターネット、ピアツーピアネットワーク、ケーブルネットワークなどの広域ネットワーク(wide area network:WAN)]につながれる。
様々な実施形態を上記で説明してきたが、これらはほんの一例として記載したに過ぎず、これらに限定されるものでないことは理解されるべきでる。このように、好ましい実施形態の広さおよび範囲は上記の例示的な実施形態のいずれによっても限定されるべきではなく、以下の特許請求の範囲およびこの均等物によってのみ定義されるべきものである。
結論
前記記載において、文章および図面を準備するに当たって単に便宜上特定の選択がなされたものであり、そして、それと反対のことが示されていない限り、前記選択は、記載の実施形態の構成および動作に関する追加情報を伝達するものとしてそれ自体解釈されるべきではない。前記選択の例としては、前記図の番号付けの使用に指定される特定の組織または割当と、前記実施形態の特徴および要素を特定および参照するのに使用される要素識別子(例えば、付記または数の指示子)の特定の組織または割当とを含む。
単語「含む(includes)」または「含んでいる(including)」は、無制限の範囲の論理的組み合わせを説明する抽象的概念として解釈されることを特に意図しており、その後に「の中で(に)(within)」が明確に続かない限り物理的束縛を伝えることを意味するものではない。
前述の実施形態を説明の明確さと理解のために少し詳しく説明してきたが、本発明は記載の詳細に限定されるものではない。本発明には多くの実施形態が存在する。記載の実施形態は例示的なものであり、これに限定されるものではない。
構成、配置、および使用における様々な変化が、本明細書とできるだけ一致し、且つ交付済み特許の特許請求の範囲の範囲内であることは理解されるであろう。例えば、相互接続および機能ユニットビット幅、クロック速度、並びに使用される技術タイプは、各コンポーネントブロックの様々な実施形態に従って変化する。相互接続およぼ論理回路に与えられる名称は単に例示的なものであり、記載の概念を限定するものと解釈されるべきではない。フローチャートおよびフローダイヤグラムプロセスの順序および配置、動作、並びに機能要素は、様々な実施形態に従って変化する。また、その反対のことが特に述べられていない限り、特定の値範囲、使用される最大値および最小値、または記載の実施形態に単に存在する他の特定の仕様(例えば、フラッシュメモリ技術タイプのような、レジスタおよびバッファーの入力またはステージの数)は、導入技術の改善および変化を追うことが期待され、それは限定として解釈されるべきではない。
本技術分野で知られている機能的に等価な技術は、様々なコンポーネント、サブシステム、動作、機能、ルーティン、サブルーティン、インラインルーティン、手順、マクロ、またはそれらの一部を実行するように記載されたものを除いて、使用可能である。実施形態の多くの機能面は、設計制約と、より速い処理手続き(以前はハードウェアであった機能をソフトウェアに移行するのを促進する)およびより高い集積密度(以前はソフトウェアにあった機能をハードウェアに移行するのを促進する)の技術動向とに依存する実施形態の機能として、ハードウェア(すなわち、一般の専用回路)またはソフトウェア(すなわち、プログラムされたコントローラまたはプロセッサのある方法を介し)のいずれかで選択的に実現可能である。様々な実施形態の特定の変化は、これに限定されるものではないが:パーティション分割の相違の程度;異なるフォームファクタおよび機器構成;異なるオペレーティングシステムおよび他のシステムソフトウェアの使用;異なるインターフェース規格、ネットワークプロトコル、または通信リンクの使用;および、特定の用途に限定される特有の工学およびビジネスに従った、本明細書に記載される概念を実行するとき予測されるその他の変化を含む。
前記実施形態を詳細に、および記載の実施形態の多くの態様の最小限の実施に必要とされるのをはるかに超える環境状況で説明してきた。当業者であれば、幾つかの実施形態で開示の構成要素または特徴が残りの要素との間の基本的な協働を変えないで省略されていることを理解するであろう。このようにして、記載された詳細の多くが記載の実施形態の様々な態様を実施するのに必要とされていないことは、理解されるであろう。残りの要素が従来技術と見分けられる限りにおいて、省略される構成要素および特徴は本明細書に記載の概念を制限しない。
このような全ての設計上の変更は、前記記載の実施形態によって伝達される技術に関するごくわずかな変更である。本明細書に記載の実施形態は、他のコンピューティングアプリケーションおよびネットワーキングアプリケーションに対する幅広い適用性があり、記載の実施形態の特定の用途または産業に限定されるものではない。このようにして、本発明は交付済み特許の特許請求の範囲の範囲内に包含される全ての可能な修正および変更を含むと解釈されるものである。

Claims (63)

  1. 方法であって、
    ドライブが、1若しくはそれ以上のコマンドをホスト装置から受信する工程と、
    前記ホスト装置に送信する情報をキュー(待ち行列)に入れる工程と、
    前記ホスト装置に送信する前記情報にギャップを挿入する工程であって、これにより前記ホスト装置は追加のコマンドを前記ドライブに送信することができるものである、前記挿入する工程と
    を有する方法。
  2. 請求項1記載の方法において、前記ギャップを挿入する工程は、時間遅延を挿入する工程を含むものである方法。
  3. 請求項2記載の方法において、前記情報は、セットアップ情報および前記1若しくはそれ以上のコマンドのうちの少なくとも1つに関連付けられたデータを含むものである方法。
  4. 請求項3記載の方法において、前記セットアップ情報は、直接メモリアクセス(direct memory access:DMA)フレーム情報構造(frame information structure:FIS)を含むものである方法。
  5. 請求項3記載の方法において、前記セットアップ情報は、セット・デバイス・ビットFISを含むものである方法。
  6. 請求項3記載の方法において、前記時間遅延は、前記セットアップ情報を送信する前に挿入されるものである方法。
  7. 請求項3記載の方法において、前記時間遅延は、前記セットアップ情報を送信した後に挿入されるものである方法。
  8. 請求項2記載の方法において、さらに、
    前記ドライブが、前記時間遅延の期間の間に前記追加のコマンドを前記ホスト装置から受信する工程を有するものである方法。
  9. 請求項2記載の方法において、前記時間遅延を挿入する工程は、前記情報が前記ホスト装置に送信されている間に前記時間遅延を挿入する工程を含むものである方法。
  10. 請求項9記載の方法において、前記時間遅延は、前記ドライブの現在のキュー(待ち行列)長に基づいて挿入される工程を含むものである方法。
  11. 請求項9記載の方法において、前記時間遅延は、前のコマンドを受信してからの経過時間に基づいて挿入される工程を含むものである方法。
  12. 請求項9記載の方法において、前記時間遅延の時間長は、前記ドライブのキュー長に基づくものである方法。
  13. 請求項9記載の方法において、前記時間遅延の時間長は、前記ドライブが前のコマンドを受信してからの経過時間に基づくものである方法。
  14. 請求項2記載の方法において、前記時間遅延の時間長または前記時間遅延が挿入される時点のうちの少なくとも1つは、リアルタイムで決定されるものである方法。
  15. 請求項2記載の方法において、前記時間遅延の時間長または前記時間遅延が挿入される時点のうちの少なくとも1つは、所定値である方法。
  16. 請求項2記載の方法において、前記情報はセットアップ情報を含み、このセットアップ情報は前記時間遅延が当該セットアップ情報に後続することを示す情報を含むものである方法。
  17. 請求項2記載の方法において、前記情報はステータス情報を含み、前記時間遅延は当該ステータス情報を送信する前に挿入されるものである方法。
  18. 請求項1記載の方法において、前記ギャップを挿入する工程は、追加情報を挿入する工程を含むものである方法。
  19. 請求項1記載の方法において、前記ホスト装置は、前記ギャップに先立って前記ギャップについて通知されるものである方法。
  20. 請求項1記載の方法において、前記ドライブはシリアルATA(Serial ATA:SATA)ドライブを含むものである方法。
  21. コンピュータ可読媒体に組み込まれたコンピュータプログラム製品であって、
    ドライブが、1若しくはそれ以上のコマンドをホスト装置から受信するコンピュータコードと、
    前記ホスト装置に送る情報をキュー(待ち行列)に入れるコンピュータコードと、
    前記ホスト装置に送る前記情報にギャップを挿入するコンピュータコードであって、これにより前記ホスト装置は前記ドライブに追加のコマンドを送信することができるものである、前記ギャップを挿入するコンピュータコードと
    を有するコンピュータプログラム製品。
  22. 装置であって、
    1若しくはそれ以上のコマンドをホスト装置から受信するドライブと、
    前記ホスト装置に送る情報をキュー(待ち行列)に入れるバッファーと、
    前記ホスト装置に送る前記情報にギャップを挿入するコントローラであって、これにより前記ホスト装置は前記ドライブに追加のコマンドを送信することができるものである、前記コントローラと
    を有する装置。
  23. システムであって、
    コマンドをホスト装置から受信することが可能なドライブであって、当該ホスト装置は、当該ドライブが前記ホストによる追加のコマンドの送信を阻止することを可能とするストレージプロトコルを使用して当該ドライブと通信可能であり、前記ドライブは、
    コントローラと、
    バッファーと
    を有し
    前記ドライブは、コリジョンが発生したとき前記ホスト装置より優先され、
    前記バッファーは、前記ホスト装置に送信する情報をキュー(待ち行列)に入れることが可能であり、
    前記コントローラは前記情報にギャップを挿入することが可能であり、これにより、前記ホスト装置が前記追加のコマンドを前記ドライブに送信することが可能にするものである
    システム。
  24. 請求項23記載のシステムにおいて、前記コントローラはさらに、少なくとも部分的にセットアップ情報を前記ホスト装置へ送信する工程によって、前記情報を前記ホスト装置へ送信する工程を開始した後においても、前記ギャップを挿入することが可能であり、これにより、前記ホスト装置が前記追加のコマンドを前記ドライブに送信することを可能にするものであるシステム。
  25. 請求項24記載のシステムにおいて、前記セットアップ情報は直接メモリアクセス(DMA)セットアップを有するものであるシステム。
  26. 請求項23記載のシステムにおいて、前記ドライブは、
    シリアルATA(SATA)ドライブ、
    シリアル接続SCSI(Serial Attached SCSI:SAS)ドライブ、
    ファイバーチャンネル(Fibre Channel:FC)ドライブ、および
    ユニバーサル・シリアル・バス(Universal Serial Bus:USB)ドライブ
    のうちの少なくとも1つを有するものであるシステム。
  27. 請求項23記載のシステムにおいて、前記コマンドは、
    転送要求、
    データ転送コマンド、
    前記ドライブに関連付けられたメモリの一部にアクセスするコマンド、および
    データ検索コマンド、
    のうちの少なくとも1つを有するものであるシステム。
  28. 請求項23記載のシステムにおいて、前記情報は、
    データ情報、
    データ構造情報、
    直接メモリアクセス(DMA)フレーム情報構造(FIS)、
    セット・デバイス・ビットFIS、および
    前記コマンドの少なくとも1つに関連付けられたデータ
    のうちの少なくとも1つを有するものであるシステム。
  29. 請求項23記載のシステムにおいて、前記ギャップは、
    ブレーク、
    割込み、および
    遅延
    のうちの少なくとも1つを有するものであるシステム。
  30. 請求項23記載のシステムにおいて、前記ギャップは、
    時間遅延、
    追加情報、
    前記ギャップの長さ、
    ベンダー固有の情報、および
    前記ギャップに関連付けられた情報
    のうちの少なくとも1つを有するものであるシステム。
  31. 請求項23記載のシステムにおいて、前記コントローラはさらに、前記ドライブの現在のコマンドのキュー長に少なくとも部分的に基づいて前記ギャップを挿入することが可能であるシステム。
  32. 請求項23記載のシステムにおいて、前記コントローラはさらに、前のコマンドが受信されてからの時間に少なくとも部分的に基づいて前記ギャップを挿入することが可能であるシステム。
  33. 請求項23記載のシステムにおいて、前記ギャップは時間遅延を有し、前記コントローラはリアルタイムで当該時間遅延の長さを決定することができるものであるシステム。
  34. 請求項23記載のシステムにおいて、前記ギャップは時間遅延を有し、前記コントローラはリアルタイムで当該時間遅延が挿入される時点を決定することができるものであるシステム。
  35. 方法であって、
    ドライブが、1若しくはそれ以上のコマンドをホスト装置から受信する工程であって、当該ホスト装置は、当該ドライブが前記ホスト装置による追加のコマンドの送信を阻止することを可能とするストレージプロトコルを使用して当該ドライブと通信可能なものである、前記受信する工程と、
    前記ホスト装置に送信する情報をキュー(待ち行列)に入れる工程であって、前記ホスト装置への送信は少なくとも部分的にセットアップ情報を介して行われるものである、前記キューに入れる工程と、
    時間遅延を挿入するかを決定する工程と、
    前記決定する工程に基づいて、条件付きで前記時間遅延を挿入し、前記ホスト装置が前記追加のコマンドを前記ドライブに送信することを可能にする工程と
    を有する方法。
  36. 請求項35記載の方法において、前記セットアップ情報は、直接メモリアクセス(DMA)セットアップを有するものである方法。
  37. 請求項35記載の方法において、さらに、
    前記ドライブに関連付けられたバッファーを検査して、アクティブな待機コマンドが存在するかを決定し、存在する場合は、次に前記決定する工程を実行する工程を有するものである方法。
  38. 請求項35記載の方法において、前記ドライブは、
    シリアルATA(SATA)ドライブ、
    シリアル接続SCSI(SAS)ドライブ、
    ファイバーチャンネル(FC)ドライブ、および
    ユニバーサル・シリアル・バス(USB)ドライブ
    のうちの少なくとも1つを有するものである方法。
  39. 請求項35記載の方法において、前記コマンドは、
    転送要求、
    データ転送コマンド、
    前記ドライブに関連付けられたメモリの一部にアクセスするコマンド、および
    データ検索コマンド、
    のうちの少なくとも1つを有するものである方法。
  40. 請求項35記載の方法において、前記情報は、
    データ情報、
    データ構造情報、
    直接メモリアクセス(DMA)フレーム情報構造(FIS)、
    セット・デバイス・ビットFIS、および
    前記コマンドの少なくとも1つに関連付けられたデータ
    のうちの少なくとも1つを有するものである方法。
  41. 請求項35記載の方法において、前記決定する工程は、前記ドライブの現在のコマンドのキュー長に少なくとも部分的に基づくものである方法。
  42. 請求項35記載の方法において、前記決定する工程は、前のコマンドが受信されてからの時間に少なくとも部分的に基づくものである方法。
  43. 請求項35記載の方法において、さらに、
    リアルタイムで前記時間遅延の長さを決定する工程を有するものである方法。
  44. 請求項35記載の方法において、さらに、
    リアルタイムで前記時間遅延が挿入される時点を決定する工程を有するものである方法。
  45. システムであって、
    ドライブが、1若しくはそれ以上のコマンドをホスト装置から受信する手段であって、当該ホスト装置は、当該ドライブが前記ホスト装置による追加のコマンドの送信を阻止することを可能とするストレージプロトコルを使用して当該ドライブと通信可能なものである、前記受信する手段と、
    前記ホスト装置に送信する情報をキュー(待ち行列)に入れる手段であって、前記ホスト装置への送信は少なくとも部分的にセットアップ情報を介して行われるものである、前記キューに入れる手段と、
    時間遅延を挿入するかを決定する手段と、
    前記決定する手段に基づいて、条件付きで前記時間遅延を挿入し、前記ホスト装置が前記追加のコマンドを前記ドライブに送信することを可能にする手段と
    を有するシステム。
  46. 請求項45記載のシステムにおいて、前記セットアップ情報は、直接メモリアクセス(DMA)セットアップを有するものであるシステム。
  47. 請求項45記載のシステムにおいて、さらに、
    前記ドライブに関連付けられたバッファーを検査して、アクティブな待機コマンドが存在するかを決定する手段を有し、前記決定する手段は当該検査する手段の結果に基づく条件付きのものであるシステム。
  48. 請求項45記載のシステムにおいて、前記ドライブは、
    シリアルATA(SATA)ドライブ、
    シリアル接続SCSI(SAS)ドライブ、
    ファイバーチャンネル(FC)ドライブ、および
    ユニバーサル・シリアル・バス(USB)ドライブ
    のうちの少なくとも1つを有するものであるシステム。
  49. 請求項45記載のシステムにおいて、前記コマンドは、
    転送要求、
    データ転送コマンド、
    前記ドライブに関連付けられたメモリの一部にアクセスするコマンド、および
    データ検索コマンド、
    のうちの少なくとも1つを有するものであるシステム。
  50. 請求項45記載のシステムにおいて、前記情報は、
    データ情報、
    データ構造情報、
    直接メモリアクセス(DMA)フレーム情報構造(FIS)、
    セット・デバイス・ビットFIS、および
    前記コマンドの少なくとも1つに関連付けられたデータ
    のうちの少なくとも1つを有するものであるシステム。
  51. 請求項45記載のシステムにおいて、前記決定する手段は、前記ドライブの現在のコマンドのキュー長に少なくとも部分的に基づくものであるシステム。
  52. 請求項45記載のシステムにおいて、前記決定する手段は、前のコマンドが受信されてからの時間に少なくとも部分的に基づくものであるシステム。
  53. 請求項45記載のシステムにおいて、さらに、
    リアルタイムで前記時間遅延の長さを決定する工程を有するものであるシステム。
  54. 請求項45記載のシステムにおいて、さらに、
    リアルタイムで前記時間遅延が挿入される時点を決定する工程を有するものであるシステム。
  55. 命令セットを格納する有形コンピュータ可読媒体であって、コンピュータによって当該命令が実行されると、当該コンピュータにより、
    ドライブが、1若しくはそれ以上のコマンドをホスト装置から受信する工程であって、当該ホスト装置は、当該ドライブが前記ホスト装置による追加のコマンドの送信を阻止することを可能とするストレージプロトコルを使用して当該ドライブと通信可能なものである、前記受信する工程と、
    前記ホスト装置に送信する情報をキュー(待ち行列)に入れる工程であって、前記ホスト装置への送信は少なくとも部分的にセットアップ情報を介して行われるものである、前記キューに入れる工程と、
    前記決定する工程に基づいて、条件付きで前記時間遅延を挿入し、前記ホスト装置が前記追加のコマンドを前記ドライブに送信することを可能にする工程と
    を有する機能を実行させるものである
    有形コンピュータ可読媒体。
  56. 請求項55記載の有形コンピュータ可読媒体において、前記条件付きで挿入する工程は、前記時間遅延を挿入するかを決定する工程に少なくとも部分的に基づくものである有形コンピュータ可読媒体。
  57. 請求項56記載の有形コンピュータ可読媒体において、前記決定する工程は、前記ドライブの現在のコマンドのキュー長に少なくとも部分的に基づくものである有形コンピュータ可読媒体。
  58. 請求項56記載の有形コンピュータ可読媒体において、前記決定する工程は、前のコマンドが受信されてからの時間に少なくとも部分的に基づくものである有形コンピュータ可読媒体。
  59. 請求項55記載の有形コンピュータ可読媒体において、前記機能はさらに、リアルタイムで前記時間遅延を決定する工程を有するものである有形コンピュータ可読媒体。
  60. 請求項55記載の有形コンピュータ可読媒体において、前記機能はさらに、リアルタイムで前記時間遅延が挿入される時点を決定する工程有するものである有形コンピュータ可読媒体。
  61. 請求項55記載の有形コンピュータ可読媒体において、前記ドライブは、
    シリアルATA(SATA)ドライブ、
    シリアル接続SCSI(SAS)ドライブ、
    ファイバーチャンネル(FC)ドライブ、および
    ユニバーサル・シリアル・バス(USB)ドライブ
    のうちの少なくとも1つを有するものである有形コンピュータ可読媒体。
  62. 請求項55記載の有形コンピュータ可読媒体において、前記コマンドは、
    転送要求、
    データ転送コマンド、
    前記ドライブに関連付けられたメモリの一部にアクセスするコマンド、および
    データ検索コマンド、
    のうちの少なくとも1つを有するものである有形コンピュータ可読媒体。
  63. 請求項55記載の有形コンピュータ可読媒体において、前記情報は、
    データ情報、
    データ構造情報、
    直接メモリアクセス(DMA)フレーム情報構造(FIS)、
    セット・デバイス・ビットFIS、および
    前記コマンドの少なくとも1つに関連付けられたデータ
    のうちの少なくとも1つを有するものである有形コンピュータ可読媒体。
JP2012520784A 2009-07-17 2010-07-15 ドライブからホスト装置に送信される情報にギャップを挿入する方法 Expired - Fee Related JP5658250B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/505,333 US8140712B2 (en) 2009-07-17 2009-07-17 System, method, and computer program product for inserting a gap in information sent from a drive to a host device
US12/505,333 2009-07-17
PCT/US2010/042147 WO2011008963A2 (en) 2009-07-17 2010-07-15 Inserting a gap in information sent from a drive to a host device

Publications (3)

Publication Number Publication Date
JP2012533800A true JP2012533800A (ja) 2012-12-27
JP2012533800A5 JP2012533800A5 (ja) 2013-08-29
JP5658250B2 JP5658250B2 (ja) 2015-01-21

Family

ID=43450212

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012520784A Expired - Fee Related JP5658250B2 (ja) 2009-07-17 2010-07-15 ドライブからホスト装置に送信される情報にギャップを挿入する方法

Country Status (7)

Country Link
US (4) US8140712B2 (ja)
EP (1) EP2454671A4 (ja)
JP (1) JP5658250B2 (ja)
KR (1) KR101281480B1 (ja)
CN (1) CN102713873B (ja)
TW (2) TWI447586B (ja)
WO (1) WO2011008963A2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110004718A1 (en) 2009-07-02 2011-01-06 Ross John Stenfort System, method, and computer program product for ordering a plurality of write commands associated with a storage device
US8140712B2 (en) 2009-07-17 2012-03-20 Sandforce, Inc. System, method, and computer program product for inserting a gap in information sent from a drive to a host device
US8516166B2 (en) 2009-07-20 2013-08-20 Lsi Corporation System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory
KR102238650B1 (ko) 2014-04-30 2021-04-09 삼성전자주식회사 저장 장치, 상기 저장 장치를 포함하는 컴퓨팅 시스템 및 상기 저장 장치의 동작 방법
US9817777B2 (en) * 2015-03-31 2017-11-14 Toshiba Memory Corporation Multi-operating state serial ATA devices and methods of operation therefor
US11568073B2 (en) 2016-12-02 2023-01-31 Nutanix, Inc. Handling permissions for virtualized file servers

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001100935A (ja) * 1999-09-28 2001-04-13 Internatl Business Mach Corp <Ibm> ディスク装置およびその制御方法
JP2005100230A (ja) * 2003-09-26 2005-04-14 Fujitsu Ltd インターフェース装置及びパケット転送方法
JP2005215729A (ja) * 2004-01-27 2005-08-11 Hitachi Global Storage Technologies Netherlands Bv データ伝送制御方法及び記憶装置
JP2008226040A (ja) * 2007-03-14 2008-09-25 Hitachi Ltd 情報処理装置及びコマンド多重度制御方法

Family Cites Families (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03250499A (ja) * 1990-02-27 1991-11-08 Nec Corp データ記憶回路
GB2251324B (en) * 1990-12-31 1995-05-10 Intel Corp File structure for a non-volatile semiconductor memory
US6230233B1 (en) * 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
US5485595A (en) * 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
JPH08124393A (ja) * 1994-10-20 1996-05-17 Fujitsu Ltd データ消去回数に制限のあるメモリの制御方法及びこの方法を用いた装置
US5568423A (en) * 1995-04-14 1996-10-22 Unisys Corporation Flash memory wear leveling system providing immediate direct access to microprocessor
US5805809A (en) 1995-04-26 1998-09-08 Shiva Corporation Installable performance accelerator for maintaining a local cache storing data residing on a server computer
US5621687A (en) * 1995-05-31 1997-04-15 Intel Corporation Programmable erasure and programming time for a flash memory
US6728851B1 (en) * 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5835935A (en) * 1995-09-13 1998-11-10 Lexar Media, Inc. Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory
US5956473A (en) * 1996-11-25 1999-09-21 Macronix International Co., Ltd. Method and system for managing a flash memory mass storage system
US5963970A (en) * 1996-12-20 1999-10-05 Intel Corporation Method and apparatus for tracking erase cycles utilizing active and inactive wear bar blocks having first and second count fields
US6085248A (en) * 1997-02-11 2000-07-04 Xaqtu Corporation Media access control transmitter and parallel network management system
US6000006A (en) * 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
JP3898305B2 (ja) * 1997-10-31 2007-03-28 富士通株式会社 半導体記憶装置、半導体記憶装置の制御装置及び制御方法
US5924120A (en) * 1998-02-03 1999-07-13 Digital Equipment Corporation Method and apparatus for maximizing utilization of an internal processor bus in the context of external transactions running at speeds fractionally greater than internal transaction times
EP1027653B1 (de) * 1998-09-04 2004-09-15 Hyperstone AG Zugriffssteuerung eines speichers beschränkter löschhäufigkeit
FR2787601A1 (fr) * 1998-12-22 2000-06-23 Gemplus Card Int Systeme de memorisation comprenant des moyens de gestion d'une memoire avec anti-usure et procede de gestion anti-usure d'une memoire
US6301639B1 (en) * 1999-07-26 2001-10-09 International Business Machines Corporation Method and system for ordering priority commands on a commodity disk drive
US7628622B2 (en) * 1999-08-04 2009-12-08 Super Talent Electronics, Inc. Multi-level cell (MLC) slide flash memory
US6405295B1 (en) * 1999-09-07 2002-06-11 Oki Electric Industry, Co., Ltd. Data storage apparatus for efficient utilization of limited cycle memory material
US6928494B1 (en) * 2000-03-29 2005-08-09 Intel Corporation Method and apparatus for timing-dependant transfers using FIFOs
CN1466760A (zh) * 2000-09-28 2004-01-07 �����ι�˾ 磁盘驱动器的关键事件记录
US6732221B2 (en) * 2001-06-01 2004-05-04 M-Systems Flash Disk Pioneers Ltd Wear leveling of static areas in flash memory
EP1280063A3 (en) * 2001-07-27 2005-03-30 Fujitsu Limited Cache control methods and apparatus for hard disk drives
US6948026B2 (en) * 2001-08-24 2005-09-20 Micron Technology, Inc. Erase block management
US20030058681A1 (en) * 2001-09-27 2003-03-27 Intel Corporation Mechanism for efficient wearout counters in destructive readout memory
US7000063B2 (en) * 2001-10-05 2006-02-14 Matrix Semiconductor, Inc. Write-many memory device and method for limiting a number of writes to the write-many memory device
US7130933B2 (en) * 2002-07-24 2006-10-31 Intel Corporation Method, system, and program for handling input/output commands
US7103732B1 (en) * 2002-10-28 2006-09-05 Sandisk Corporation Method and apparatus for managing an erase count block
KR101122511B1 (ko) * 2002-10-28 2012-03-15 쌘디스크 코포레이션 비휘발성 저장 시스템들에서 자동 웨어 레벨링
US7096313B1 (en) * 2002-10-28 2006-08-22 Sandisk Corporation Tracking the least frequently erased blocks in non-volatile memory systems
US6985992B1 (en) * 2002-10-28 2006-01-10 Sandisk Corporation Wear-leveling in non-volatile storage systems
US7035967B2 (en) * 2002-10-28 2006-04-25 Sandisk Corporation Maintaining an average erase count in a non-volatile storage system
US6973531B1 (en) * 2002-10-28 2005-12-06 Sandisk Corporation Tracking the most frequently erased blocks in non-volatile memory systems
US6831865B2 (en) * 2002-10-28 2004-12-14 Sandisk Corporation Maintaining erase counts in non-volatile storage systems
TW555100U (en) * 2002-11-27 2003-09-21 Power Quotient Int Co Ltd High speed of data transfer of solid state disk on module
JP4550439B2 (ja) * 2003-02-28 2010-09-22 東芝メモリシステムズ株式会社 Ecc制御装置
US6925523B2 (en) * 2003-03-03 2005-08-02 Agilent Technologies, Inc. Managing monotonically increasing counter values to minimize impact on non-volatile storage
US7032087B1 (en) * 2003-10-28 2006-04-18 Sandisk Corporation Erase count differential table within a non-volatile memory system
WO2005094281A2 (en) * 2004-03-25 2005-10-13 Riverstone Networks, Inc. Device-level address translation within a programmable non-volatile memory device
JP2006164012A (ja) * 2004-12-09 2006-06-22 Hitachi Global Storage Technologies Netherlands Bv データ記憶装置及びそのパワー・セーブ・モードの制御方法
US7318962B2 (en) * 2005-01-28 2008-01-15 The United States Of America As Represented By The Secretary Of The Navy Magnetically directed self-assembly of molecular electronic junctions comprising conductively coated ferromagnetic microparticles
US20060209684A1 (en) * 2005-03-18 2006-09-21 Via Technologies, Inc. Data rate controller, and method of control thereof
JP4679943B2 (ja) * 2005-03-23 2011-05-11 ヒタチグローバルストレージテクノロジーズネザーランドビーブイ データ記憶装置及びその不揮発性メモリ内データ書き換え処理方法
US7620747B1 (en) * 2005-10-12 2009-11-17 Nvidia Corporation Software based native command queuing
US20070260756A1 (en) * 2006-01-05 2007-11-08 Pao-Ching Tseng Method for Processing Command via SATA Interface
US7694026B2 (en) * 2006-03-31 2010-04-06 Intel Corporation Methods and arrangements to handle non-queued commands for data storage devices
US7739470B1 (en) * 2006-10-20 2010-06-15 Emc Corporation Limit algorithm using queue depth to control application performance
US7904619B2 (en) * 2006-11-24 2011-03-08 Sandforce, Inc. System, method, and computer program product for reducing memory write operations using difference information
US7904764B2 (en) * 2006-11-24 2011-03-08 Sandforce, Inc. Memory lifetime gauging system, method and computer program product
US7809900B2 (en) * 2006-11-24 2010-10-05 Sandforce, Inc. System, method, and computer program product for delaying an operation that reduces a lifetime of memory
US7747813B2 (en) * 2006-11-24 2010-06-29 Sandforce, Inc. Multi-memory device system and method for managing a lifetime thereof
US8090980B2 (en) * 2006-12-08 2012-01-03 Sandforce, Inc. System, method, and computer program product for providing data redundancy in a plurality of storage devices
US7904672B2 (en) * 2006-12-08 2011-03-08 Sandforce, Inc. System and method for providing data redundancy after reducing memory writes
US7861139B2 (en) * 2007-01-26 2010-12-28 Micron Technology, Inc. Programming management data for NAND memories
JP2008250961A (ja) * 2007-03-30 2008-10-16 Nec Corp 記憶媒体の制御装置、データ記憶装置、データ記憶システム、方法、及び制御プログラム
KR20080090021A (ko) 2007-04-03 2008-10-08 삼성테크윈 주식회사 데이터 전송 속도가 다른 인터페이스들을 갖는 데이터 저장모듈 및 이의 데이터 전송방법
JP4400650B2 (ja) * 2007-05-23 2010-01-20 セイコーエプソン株式会社 データ転送制御装置及び電子機器
US20080294813A1 (en) * 2007-05-24 2008-11-27 Sergey Anatolievich Gorobets Managing Housekeeping Operations in Flash Memory
US7631128B1 (en) * 2007-06-28 2009-12-08 Emc Corporation Protocol controller for a data storage system
US7840751B2 (en) * 2007-06-29 2010-11-23 Seagate Technology Llc Command queue management of back watered requests
US7945727B2 (en) * 2007-07-27 2011-05-17 Western Digital Technologies, Inc. Disk drive refreshing zones in segments to sustain target throughput of host commands
TWI373772B (en) * 2007-10-04 2012-10-01 Phison Electronics Corp Wear leveling method and controller using the same
US8209465B2 (en) * 2007-10-30 2012-06-26 Hagiwara Sys-Com Co., Ltd. Data writing method
US20090125645A1 (en) * 2007-11-12 2009-05-14 Gemalto Inc System and method for supporting multiple tokens having a smart card to control parameters of a flash memory device
US7849275B2 (en) * 2007-11-19 2010-12-07 Sandforce, Inc. System, method and a computer program product for writing data to different storage devices based on write frequency
US7903486B2 (en) * 2007-11-19 2011-03-08 Sandforce, Inc. System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory
US9183133B2 (en) * 2007-11-28 2015-11-10 Seagate Technology Llc System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory
WO2009072104A2 (en) * 2007-12-05 2009-06-11 Densbits Technologies Ltd. Flash memory device with physical cell value deterioration accommodation and methods useful in conjunction therewith
US7827320B1 (en) * 2008-03-28 2010-11-02 Western Digital Technologies, Inc. Serial ATA device implementing intra-command processing by detecting XRDY primitive while in the XRDY state
US7970978B2 (en) * 2008-05-27 2011-06-28 Initio Corporation SSD with SATA and USB interfaces
US20100017807A1 (en) * 2008-07-15 2010-01-21 Radoslav Danilak System, method, and computer program product for transparent communication between a storage device and an application
US20100017566A1 (en) * 2008-07-15 2010-01-21 Radoslav Danilak System, method, and computer program product for interfacing computing device hardware of a computing device and an operating system utilizing a virtualization layer
US20100017588A1 (en) * 2008-07-15 2010-01-21 Radoslav Danilak System, method, and computer program product for providing an extended capability to a system
US20100017650A1 (en) * 2008-07-19 2010-01-21 Nanostar Corporation, U.S.A Non-volatile memory data storage system with reliability management
US8140739B2 (en) * 2008-08-08 2012-03-20 Imation Corp. Flash memory based storage devices utilizing magnetoresistive random access memory (MRAM) to store files having logical block addresses stored in a write frequency file buffer table
US20100064093A1 (en) * 2008-09-09 2010-03-11 Radoslav Danilak System, method, and computer program product for converting data in a binary representation to a non-power of two representation
US8131921B2 (en) * 2008-09-17 2012-03-06 Intel Corporation Command suspension in response, at least in part, to detected acceleration and/or orientation change
JP4399021B1 (ja) * 2008-10-29 2010-01-13 株式会社東芝 ディスクアレイ制御装置および記憶装置
US8285970B2 (en) * 2008-11-06 2012-10-09 Silicon Motion Inc. Method for managing a memory apparatus, and associated memory apparatus thereof
US20100146236A1 (en) * 2008-12-08 2010-06-10 Radoslav Danilak System, method, and computer program product for rendering at least a portion of data useless in immediate response to a delete command
US20100250830A1 (en) * 2009-03-27 2010-09-30 Ross John Stenfort System, method, and computer program product for hardening data stored on a solid state disk
US8230159B2 (en) * 2009-03-27 2012-07-24 Lsi Corporation System, method, and computer program product for sending logical block address de-allocation status information
US8090905B2 (en) * 2009-03-27 2012-01-03 Sandforce, Inc. System, method, and computer program product for converting logical block address de-allocation information in a first format to a second format
US8291131B2 (en) * 2009-07-06 2012-10-16 Micron Technology, Inc. Data transfer management
US8140712B2 (en) 2009-07-17 2012-03-20 Sandforce, Inc. System, method, and computer program product for inserting a gap in information sent from a drive to a host device
US8516166B2 (en) * 2009-07-20 2013-08-20 Lsi Corporation System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory
US20110022765A1 (en) * 2009-07-23 2011-01-27 Ross John Stenfort System, method, and computer program product for maintaining a direct connection between an initiator and a drive
US20110041039A1 (en) * 2009-08-11 2011-02-17 Eliyahou Harari Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device
US20110041005A1 (en) * 2009-08-11 2011-02-17 Selinger Robert D Controller and Method for Providing Read Status and Spare Block Management Information in a Flash Memory System
US8108737B2 (en) * 2009-10-05 2012-01-31 Sandforce, Inc. System, method, and computer program product for sending failure information from a serial ATA (SATA) solid state drive (SSD) to a host device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001100935A (ja) * 1999-09-28 2001-04-13 Internatl Business Mach Corp <Ibm> ディスク装置およびその制御方法
JP2005100230A (ja) * 2003-09-26 2005-04-14 Fujitsu Ltd インターフェース装置及びパケット転送方法
JP2005215729A (ja) * 2004-01-27 2005-08-11 Hitachi Global Storage Technologies Netherlands Bv データ伝送制御方法及び記憶装置
JP2008226040A (ja) * 2007-03-14 2008-09-25 Hitachi Ltd 情報処理装置及びコマンド多重度制御方法

Also Published As

Publication number Publication date
US9330033B2 (en) 2016-05-03
TWI447586B (zh) 2014-08-01
US20140173139A1 (en) 2014-06-19
US20130227174A1 (en) 2013-08-29
US8423680B2 (en) 2013-04-16
CN102713873A (zh) 2012-10-03
KR101281480B1 (ko) 2013-07-02
US8615609B2 (en) 2013-12-24
TWI467386B (zh) 2015-01-01
TW201437813A (zh) 2014-10-01
TW201120641A (en) 2011-06-16
KR20120046259A (ko) 2012-05-09
JP5658250B2 (ja) 2015-01-21
US8140712B2 (en) 2012-03-20
WO2011008963A3 (en) 2011-05-12
WO2011008963A2 (en) 2011-01-20
US20110016233A1 (en) 2011-01-20
EP2454671A4 (en) 2014-06-04
US20130019031A1 (en) 2013-01-17
EP2454671A2 (en) 2012-05-23
CN102713873B (zh) 2016-10-19

Similar Documents

Publication Publication Date Title
JP2012532397A (ja) ストレージデバイスに関連付けられた複数の書き込みコマンドの順序付け
US10540196B2 (en) Techniques to enable live migration of virtual environments
CN109690512B (zh) 具有触发操作的gpu远程通信
JP5658250B2 (ja) ドライブからホスト装置に送信される情報にギャップを挿入する方法
US20140068134A1 (en) Data transmission apparatus, system, and method
WO2011011295A2 (en) Reducing a rate of data transfer to at least a portion of memory
KR102427550B1 (ko) 재구성 가능한 멀티 포트들을 구비한 PCIe 스토리지 시스템을 위한 서비스 품질을 인식하는 입출력 관리
CN108023829B (zh) 报文处理方法及装置、存储介质、电子设备
CN105743690B (zh) 用于管理网络设备的功率和性能的技术
CN113138802B (zh) 命令分发装置、方法、芯片、计算机设备及存储介质
WO2022227614A1 (zh) 用于命令分发的装置、方法、芯片、计算机设备及存储介质
US8832499B2 (en) Methods and structure for trapping requests directed to hardware registers of an electronic circuit
US10862814B2 (en) Exception handling in a multi-user wireless communication device based on user tag values
WO2011011562A2 (en) Maintaining a direct connection between an initiator and a drive
US10042682B2 (en) Copy message from application buffer to send buffer within kernel
KR102503579B1 (ko) 송신 큐에 기초하여 인터럽트를 제어하는 전자 장치 및 이의 제어 방법
US20150188845A1 (en) Mitigating bandwidth degradation in a switching device

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130712

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130712

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20131118

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131226

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140304

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140604

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140611

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140704

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140711

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140802

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140811

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140830

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: 20141104

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141127

R150 Certificate of patent or registration of utility model

Ref document number: 5658250

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees