JP2008527496A - 低減されたローカルバストラフィックでのディスクドライブ動作のためのインテリジェントストレージエンジン - Google Patents
低減されたローカルバストラフィックでのディスクドライブ動作のためのインテリジェントストレージエンジン Download PDFInfo
- Publication number
- JP2008527496A JP2008527496A JP2007549528A JP2007549528A JP2008527496A JP 2008527496 A JP2008527496 A JP 2008527496A JP 2007549528 A JP2007549528 A JP 2007549528A JP 2007549528 A JP2007549528 A JP 2007549528A JP 2008527496 A JP2008527496 A JP 2008527496A
- Authority
- JP
- Japan
- Prior art keywords
- storage engine
- host
- disk drive
- data
- local bus
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1092—Rebuilding, e.g. when physically replacing a failing disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
ファイルのコピーおよび移動などのアタッチされたディスクドライブ動作、ならびに検索、ウイルススキャニング、およびボリュームマージなどのより複雑なプロセスについて、新規性のあるインテリジェントストレージエンジンのコンセプトが開示される。一実施形態において、ストレージエンジン(40)は、ローカルプロセッサインテリジェンスを利用して、適切なドライバ(60)およびAPI(App.B)を介してアクセスされて、適切な場合において結果データを戻すことを除いて、ホストCPU(22)に負荷をかけることなしに、かつローカルCPUバス(34)にデータトラフィックを課することなしに、ディスクアクセス動作を実行する。
Description
(関連出願)
本出願は、2004年12月29日に出願された米国仮特許出願第60/640,634号に対して優先権を主張し、その全体がこの参照によって本明細書中に援用されている。
本出願は、2004年12月29日に出願された米国仮特許出願第60/640,634号に対して優先権を主張し、その全体がこの参照によって本明細書中に援用されている。
(技術分野)
本発明は、デジタルコンピューティングシステムに関連し、特に、選択されたディスクドライブ動作に関するローカルバストラフィックを低減する方法および装置に関する。
本発明は、デジタルコンピューティングシステムに関連し、特に、選択されたディスクドライブ動作に関するローカルバストラフィックを低減する方法および装置に関する。
(本発明の背景)
たとえばデスクトップまたはラップトップパーソナルコンピュータを含む多くの最新のコンピューティングマシンは、オペレーティングシステム、アプリケーションプログラム、およびデータファイルを格納するために、一つ以上のハードディスクドライブを使用する。一部の場合は、オペレーティングシステムを専用オーディオビデオディスクファイルとしてデータファイルから分離する手段として複数のディスクドライブが単一のPCに接続され得、または性能および信頼性を向上させるためにRAID構成においてともに結合され得る。ディスクドライブは、マシンの内部に、外部に、または取り外し可能デバイスとしてなど、多様な構成で装備され得る。このアプリケーションの目的のために、すべてのそのような構成は、「アタッチされた」ドライブであると考えられる。換言すると、我々は、本明細書において「アタッチされた」という用語を使用する場合に、データがネットワークを通過することなく、データがローカルバスとアタッチされたドライブとの間で転送され得るということを意味する。取り外し可能ドライブは、本目的のために、やはり「アタッチされた」と考えられる。さらに、このアプリケーションにおいて、IEEE1394、USB、SATA、または他の種類の接続によってホストに結合されるディスクドライブなどのストレージデバイスは、ネットワークアタッチされたものとは区別されるとして、やはり直接的に「アタッチされた」と考えられる。
たとえばデスクトップまたはラップトップパーソナルコンピュータを含む多くの最新のコンピューティングマシンは、オペレーティングシステム、アプリケーションプログラム、およびデータファイルを格納するために、一つ以上のハードディスクドライブを使用する。一部の場合は、オペレーティングシステムを専用オーディオビデオディスクファイルとしてデータファイルから分離する手段として複数のディスクドライブが単一のPCに接続され得、または性能および信頼性を向上させるためにRAID構成においてともに結合され得る。ディスクドライブは、マシンの内部に、外部に、または取り外し可能デバイスとしてなど、多様な構成で装備され得る。このアプリケーションの目的のために、すべてのそのような構成は、「アタッチされた」ドライブであると考えられる。換言すると、我々は、本明細書において「アタッチされた」という用語を使用する場合に、データがネットワークを通過することなく、データがローカルバスとアタッチされたドライブとの間で転送され得るということを意味する。取り外し可能ドライブは、本目的のために、やはり「アタッチされた」と考えられる。さらに、このアプリケーションにおいて、IEEE1394、USB、SATA、または他の種類の接続によってホストに結合されるディスクドライブなどのストレージデバイスは、ネットワークアタッチされたものとは区別されるとして、やはり直接的に「アタッチされた」と考えられる。
アタッチされたディスクドライブストレージシステムの数、種類、および配置には関わりなく、データ(またはコピー)を、一つのディスクドライブ上の一つの場所から、同一のディスクドライブ上の別の場所に、別の論理パーティションに、または物理的に分離したディスクドライブに移動させることを伴う、多くのホストアプリケーションまたは動作がある。他の一般的な動作は、ハードドライブ上に格納されたファイル内の特定のデータを検索すること、またはバックアップアプリケーションにおいてファイルを同期化することを含む。そのような動作またはアプリケーションの例は、ファイルのコピー、移動、ディスクドライブのデフラグメンテーション、アンチウイルススキャン、データのスキャン(検索)、およびデータのマイグレーション/変換を含む。
上述のアプリケーションの公知のインプリメンテーションは、ホストCPUの関与を必要とし、一つまたは複数のディスクドライブがアタッチされたホストバスに著しく負荷をかけ得る。(我々は、このアプリケーションにおいて「ホストバス」および「ローカルバス」という用語を互換的に使用する。多くのそのようなバスがあり、なかでもPCIバスは周知の例である)。CPUに負荷をかけ、かつローカルバスに重いトラフィックを強いるディスク動作は、結果的に、ファイル移動動作に関連しない他のアプリケーションの速度を遅くする。なぜなら、これらのバックグラウンド動作を実行するために使用される同一のホストデータバスは、他のアプリケーションによっても使用されるからである。たとえば、現在存在するものとしてのバックアップおよびアンチウイルスアプリケーションに関する最も一般的な苦情の一つは、それらのアプリケーションがしばしばおしつけがましいとうことである。すなわち、それらのアプリケーションは、システムバスを横切って前後に送信される必要のあるデータの量のために、使用中のアプリケーションに割り込み、しばしば高速コンピュータの性能を低下させる。さらに最悪なことに、スキャンまたはバックアップのプロセスが実行し始めるときにシステムメモリが満杯に近い場合に、これらの基本的な動作は過剰なディスクスワッピング(disk swapping)を生じさせ得る。
説明するために、図1は、簡略化された概念図10でコンピュータおよびアタッチされたディスクドライブを示す。この図は、ディスクドライブ16との間の、一対のデータストリーム14によって明示される、進行中のファイルコピー動作12を示す。さらに、アプリケーション20が実行中であり、そのことは、ドライブ26および28上にさまざまに格納された他のデータの読み出し、書き込み、および処理をCPU22に実行させる。これらのドライブに関与する読み出しおよび書き込みの動作は、30および32として図示される追加のデータストリームを生じさせる。この図におけるすべての4つのデータストリームは、ローカルバス34上のトラフィックに寄与する。
利用可能なリソースをより良く利用するために、ハードウェアおよびソフトウェアのインテリジェント(intelligent)アプリケーションによってコンピュータシステム性能を向上させるニーズがある。一定の共通のアプリケーションおよび動作、特にアタッチされたストレージデバイスとの間のデータ転送を伴うものによってCPUおよびそのローカルバスに課せられる負荷が緩和されるならば、全体的なシステム性能は著しく向上させられる。
追加の局面および利点は、以下の好ましい実施形態の詳細な説明から明らかであり、説明は添付の図面を参照して進められる。
(好ましい実施形態の詳細な説明)
従来技術の欠点および限界は、新規性のあるインテリジェントストレージエンジンのコンセプトの種々の実施形態によって対処され得る。ローカルプロセッサインテリジェンスを利用し、適切なAPIを介してアクセスされる、ストレージエンジンは、適切な場合における結果データを除いて、CPUに負荷をかけることなく、かつローカルCPUバスにデータトラフィックを課することなく、ディスクアクセス動作を実行する。
従来技術の欠点および限界は、新規性のあるインテリジェントストレージエンジンのコンセプトの種々の実施形態によって対処され得る。ローカルプロセッサインテリジェンスを利用し、適切なAPIを介してアクセスされる、ストレージエンジンは、適切な場合における結果データを除いて、CPUに負荷をかけることなく、かつローカルCPUバスにデータトラフィックを課することなく、ディスクアクセス動作を実行する。
本発明は、PCベースのストレージなどに適用され、そこでは、ハードドライブが、ホストCPUの内部ローカルバス、または「直接アタッチされたストレージ(direct attached storage)」すなわちDASと呼ばれる外部の直接接続ストレージをサポートする外部拡張ポートに、密接に結合または直接的に接続される。そのようなCPU内部バスは、たとえばバス仕様のPCIファミリーの一つであり得る。外部ポートは、たとえばUSB2、1394、または外部シリアルATAポートであり得る。
概念的には、本発明は図2によって図示され得る。同図は、図1と同一のホストを示し、上述したのと同一のファイルコピー動作およびアプリケーションが実行中である。基本的な相違は、ISE(インテリジェントストレージエンジン)(Intelligent Storage Engine)40に関し、この例においてはローカルバス34とディスクドライブ16、26、28との間に論理的に展開されるハードウェアとソフトウェアとの組み合わせである。図1のファイルコピープロセス12は、ローカルバス34を通して前後にデータを流してCPUによってもはや実行されない。ここでは、新しいISEプロセス42が代わりにファイルコピー動作を実行し、データストリームはもはやローカルバス34を通過せず、したがってローカルバスおよびCPUの負荷が低減される。コピーはISEによって実行され、ローカルバス上にはごく少数のハイレベルコマンド44があるだけである。ISEからの単純な応答は、動作の完了に信号を送り得る。この例において、ユーザデータは、コピー動作12を実行するのにローカルバスを通過しない。
このように、一つの局面において、本発明は、一定のディスク関連の機能をホストCPUからオフロード(offload)し得る専用の独立したプロセッサまたは「ストレージエンジン」を使用してインプリメントされ得、それによって、ドライブが通常に接続されるCPUおよびホストバスへのオーバーヘッドおよび負荷を低減する。
本発明の別の局面において、ストレージエンジンは、アプリケーションにとって透明であるようにサポートされる。本発明のさらなる局面において、PCの全体的性能を向上させるために、ストレージエンジンは、アプリケーションプログラミングインタフェースを介して拡張機能を実行し得る。ホストアプリケーション、ライブラリ機能、デバイスドライバなどは、好ましくは適切なAPIを介して、ISEを利用し得る。
たとえば、単一のコマンド「DS_DiskdataBlockCopy」は、CPUがISEにデータのブロックをソースからドライブ16(または別のドライブ)上の宛先の場所にコピーするように命令するために使用され得る。(例示的なAPI機能および可能な構文については以下を参照)。
本発明に一致したISEは、一般的に、ホストCPUバスまたは「ローカルバス」への接続のためのホストインタフェースと、一つ以上のディスクドライブへの接続のためのドライブインタフェースと、ISEに対してローカルなプロセッサとを備える。図3を参照されたい。換言すると、ISEプロセッサは、ホストCPUまたはホストプロセッサとまったく異なる。ISEは、一部の実施形態においてローカルキャッシュメモリをも含み得る。さらにISEは、例としてFLASHメモリなどの、ソフトウェアを格納する他のメモリを含み得る。
一実施形態において、ホストインタフェースは、ストレージデバイスのための周知のインタフェースであるATA、fastATA、ATAPIなどの標準的インタフェースをインプリメントする。一つの代替の実施形態によると、ホストインタフェースはシリアルリンクインタフェース(たとえばSATAインタフェース)をインプリメントする。
一般的に、以下にさらに詳細に説明されるように、ISEは、直接ストレージアタッチされたアプリケーションについて、一定のタスクをホストからオフロードする。このことは、ホストCPUへの負荷を軽減し、ホストローカルバス(たとえばPCIバス)上のトラフィックを低減することによって、システム性能を向上させる。
一つの現在好ましい実施形態において、ホストアプリケーションまたはホストオペレーティングシステムは、ISEに対して直接的な呼び出しを行い得る。種々のカスタムアプリケーションおよびプロセスが、やはりホストへの負荷がほとんどまたはまったくなしに、展開され得る。例は、ウイルススキャニング、バックアップ同期化サポート、マイグレーション、索引付け、デフラグメンテーションなどを含む。CPUとアタッチされたディスクドライブストレージとの間のCPUローカルバスに重いトラフィックを課す実質的にいかなる動作も、全体的または部分的にISEにオフロードされ得ることによって、全体的なシステム性能を向上させる。
ドライブ側においては、いつでも使えるディスクコントローラの能力に依存して、一つ以上のディスクドライブのほとんどいかなる構成も展開され得る。
RAID機能は、同じくISE機能をインプリメントするコントローラデバイス(集積回路、ASIC、SOC、PCBなど)において有利にインプリメントされ得る。
本発明の利点は以下を含む:
−大きなギガバイトのビデオファイルのコピーまたはバックアップは、もはやホストバスまたはCPUを支配しない。
−低減されたホストCPU介入を伴うストリーミングデータサポート
−アンチウイルスプログラムは、アプリケーションに割り込むことなしにバックグラウンドで実行され得る。
−データがインタフェースからドライブへ通過するときのデータのアクティブスキャニング(アンチウイルス)。
−バックグラウンドのデフラグメンテーションがより頻繁に生じ得る。
−大きなギガバイトのビデオファイルのコピーまたはバックアップは、もはやホストバスまたはCPUを支配しない。
−低減されたホストCPU介入を伴うストリーミングデータサポート
−アンチウイルスプログラムは、アプリケーションに割り込むことなしにバックグラウンドで実行され得る。
−データがインタフェースからドライブへ通過するときのデータのアクティブスキャニング(アンチウイルス)。
−バックグラウンドのデフラグメンテーションがより頻繁に生じ得る。
図3は、ISE76の一実施形態を図示する簡略化されたハードウェアのブロック図である。現在好ましい実施形態において、ISEは、たとえば66MHzまたは100MHzのIPコアプロセッサを備え得るISEプロセッサコア80を含む。エンジンは、パーソナルコンピュータおよび他のマイクロプロセッサベースのシステムにおいて一般的に使用されるPCIバスなどのホストローカルバス84に対してインタフェースするホストインタフェース78を有する。ホストDMAブロック82は、ローカルバス(または本明細書中で同義的に使用される「CPUバス」)を用いてDMA動作をインプリメントする。ローカルキャッシュメモリ86は、データバッファリングのためのストレージエンジンにアクセス可能であり得るか、またはその中に備えられ得ることによって、全体的なシステム性能を最適化する。SDRAMなどは、ホストインタフェースとドライブインタフェースとの間のデータ経路におけるデータバッファリングのために使用され得る。現在のテクノロジーにとって、およそ512MB程度のキャッシュは十分であるが、ストレージおよび関連インタフェースが進化するにつれて、これは変化することが予想され得る。さらに、ローカルソフトウェアストア(store)(たとえばFLASHメモリ88を使用して)は、好ましくは、ISEプロセッサ80によって実行可能なソフトウェアを格納およびアップデートするようにインプリメントされる。種々の形態のROMも使用され得る。
タイトルが「RAID Controller System and Method with ATA Emulation Host Interface」で、この参照によって本明細書中で援用されている、同一人に譲渡される米国特許第6,772,108B1号に記述されているように、望まれる場合には、ホストインタフェース78はATAエミュレーションをインプリメントし得る。
一実施形態において、データ経路帯域幅は、800MB/sキャッシュ、533MB/sホスト、および400MB/sドライブであり得る。「RAID XOR」と名付けられたブロック90は、好ましくはデータ経路において「オンザフライ(on the fly)」でRAID動作をインプリメントするための手段を指す。ディスクドライブストレージシステムのためのオンザフライXOR冗長動作は、その参照によって本明細書中に援用されている米国特許第6,018,778号に記載されている。
ディスクドライブインタフェース92は、種々の形態を取り得る。単純な例において、それは最大4つのIDEディスクドライブへの接続のための標準的なATAインタフェースを備える。それは、一つ以上のUDMAインタフェース、または一つ以上のSATAインタフェース、または他のテクノロジーを備え得る。本発明のISEコンセプトは、DASシステムにおいて有用な任意の所望のディスクドライブ/ドライブインタフェーステクノロジーに適用され得る。
ドライブスイッチ94と名付けられたブロックは、基本的に、出願人のPCT国際公開第2004/095255 A2号パンフレット、およびそれに対応する米国特許出願公開第2004−0264309 A1号(両方とも参照によって本明細書中で援用されている)に記載されているような、データ経路スイッチングおよびマッピング機能を備える。現在好ましい商業的な実施形態において、RAID XORエンジンは、このドライブスイッチ94に含まれるが、図3においては分離したブロックとして示されている。
図4は、ストレージエンジンの別の実施形態の簡略化されたブロック図である。図3または4の実施形態に類似した実施形態は、ディスクコントローラユニットの一部として(たとえばマザーボードまたはドーターボード上で)好都合にインプリメントされ得る。この場合には、100MHz専用ストレージプロセッサが提供されるが、これらは、サポートされるべき所望の機能および性能要件に依存して、実質的により高いかまたはより低い周波数であり得る。キャッシュは、アプリケーション要件に依存して、1Gバイト以上までを含み得る。
図4の例において、データ経路帯域幅は、2GB/sキャッシュ、250MB/s(1x)または1GB/s(4x)PCIエクスプレスホストインタフェース、および1.2GB/sドライブであり得る。別の実施形態は、ウイルス署名スキャニングなどのアプリケーションのために、たとえば512 64ビットワードまでのデータのアクティブスキャニングおよびマッチングをインプリメントする。RAIDレベル0、1、XL、5が含まれ得る。データストリームおよびデータストリームキューの管理もまた、ホストバスとの間でデータを転送する前に可能である。
(動作)
動作においては、2つの一般的な種類の動作がある。第1のモードによると、ファイルコピーおよびファイル移動などの標準的なファイル動作は、ファイルシステムフィルタによってインタセプトされ、ISEに直接的に送信されることによって、ドライブ間でデータブロックを移動させる。第2のモードにおいて、APIは、アンチウイルスソフトウェア、バックアップソフトウェア、ディスクイメージング、ディスクデフラグメンテーションユーティリティなどのようなサードパーティアプリケーションのために定義される。これらの各々が次に説明される。
動作においては、2つの一般的な種類の動作がある。第1のモードによると、ファイルコピーおよびファイル移動などの標準的なファイル動作は、ファイルシステムフィルタによってインタセプトされ、ISEに直接的に送信されることによって、ドライブ間でデータブロックを移動させる。第2のモードにおいて、APIは、アンチウイルスソフトウェア、バックアップソフトウェア、ディスクイメージング、ディスクデフラグメンテーションユーティリティなどのようなサードパーティアプリケーションのために定義される。これらの各々が次に説明される。
ここで図5を参照すると、この簡略化されたコマンドおよびデータフロー図は、DirectStor APIコマンドを使用し得るかまたは使用しないことがあり得るアプリケーションプログラム50を示す。ファイルシステムフィルタモジュール54は、OSファイルシステム56に対するコマンドを監視する。それは、所与のコマンドが、ストレージエンジン66に関連するコントローラに現在接続されているディスクドライブに向けられているかどうかをチェックする。コマンドがそのようなドライブ(たとえば図5におけるドライブB(72))に向けられており、かつコマンドがフィルタ54によってそれが処理し得るコマンドの所定のセットの一つとして認識される場合には、フィルタ54はコマンドをインタセプトし、その結果、コマンドは、カーネル内にインプリメントされた標準的なOSファイルシステム56および標準的なディスクドライバコード58に到達しない。代わりに、フィルタ54は、DirectStor APIを使用して、一つ以上のコマンドを、そのAPIをインプリメントするために備えられた特殊なドライバ60に直接的に送信する。ドライバ60は、DirectStor APIコマンドを認識し、かつそれらを実行のためにストレージエンジン66に直接的に転送するように構成される。
別の実施形態において、サードパーティアプリケーション50そのものが、そのコードにおいてDS API52を利用する。したがって、アプリケーションはコマンドをドライバ60に直接的に送信し、ドライバ60は次にそれらをストレージエンジン66に転送する。ストレージエンジンは、DS APIに応答してコードを実行することによって、移動およびコピーなどのディスクドライブ動作をローカルに実行し、これはPCIバス62にいかなるデータも置かないことを意味する。エンジンに対する各呼び出しは、以下にさらに説明されるように、識別のためのタグを割当てられる。
エンジン66は、動作が完了するまで、PCIローカルバスを通過することなく、かつホストCPUサイクルを使用することなく、アタッチされたドライブA(70)および/またはB(72)との間のデータ転送をバッファリングするための、キャッシュメモリ68をオプションとして含み得る。上述のように、DRAMまたはSDRAMなどのキャッシュをインプリメントするために、任意の適切なランダムアクセスメモリが使用され得る。一実施形態において、ディスクコントローラPCBは、ホストインタフェースおよびドライブインタフェースとともに、オンボードのストレージエンジンおよびキャッシュを含む。
これらのAPIは、アンチウイルス、ゲーム、ストリーミングデジタルメディア集約的アプリケーション、非公式で安全で隠されたストレージスペースを必要とし得るアプリケーション、バックアップおよびデフラグメンテーションソフトウェアなどの、ISVについて定義される。これらのAPIを呼び出すことによって、アプリケーションはコマンドをNetCell ISEに直接的に送信し得る。
APIは、制限なしに以下を含む種々の形態のうちのいずれかにおいてインプリメント/解除され得る:
−ダイナミックリンクライブラリ(DLL)。
−Windows(登録商標)サービス。
−COMオブジェクト。
−ダイナミックリンクライブラリ(DLL)。
−Windows(登録商標)サービス。
−COMオブジェクト。
以下は、本発明の一実施形態に従った、ISE使用可能にされたホストアプリケーション/ライブラリ/デバイスドライバとISEとの間の、ISE ATAコマンドインタフェースの説明的な例である。この実施形態は、インテリジェントストレージエンジンのための簡潔な言い方として登録商標「DirectStor」と呼ばれる。
(DirectStorの例示的なコマンド特徴のセット)
(ブロックコピー/移動コマンド)
1.説明
これらのコマンド/サブコマンドは、2つのアレイの間でデータのブロックをコピーまたは移動するか、または同一のアレイ内でデータを移動するように定義される。第2のアレイは、第1のアレイと同じカードにアタッチされた内部アレイ、またはeSATAポートにアタッチされた外部アレイのいずれかであり得る。
(ブロックコピー/移動コマンド)
1.説明
これらのコマンド/サブコマンドは、2つのアレイの間でデータのブロックをコピーまたは移動するか、または同一のアレイ内でデータを移動するように定義される。第2のアレイは、第1のアレイと同じカードにアタッチされた内部アレイ、またはeSATAポートにアタッチされた外部アレイのいずれかであり得る。
2.コマンドコード:83h
3.サブコマンド
前述のフィーチャレジスタ(Feature Register)のコンテンツは、サブコマンドを指定する。
−MOVE_SET_SRC_LBA
−MOVE_SET_LAST_LBA
−MOVE_SET_DEST_LBA
−MOVE_PROCEED
−MOVE_SUSPEND
−MOVE_ABORT
−MOVE_STATUS
(MOVE_SET_SRC_LBA)
ソースアレイの開始LBAを設定するサブコマンド。
インプット
3.サブコマンド
前述のフィーチャレジスタ(Feature Register)のコンテンツは、サブコマンドを指定する。
−MOVE_SET_SRC_LBA
−MOVE_SET_LAST_LBA
−MOVE_SET_DEST_LBA
−MOVE_PROCEED
−MOVE_SUSPEND
−MOVE_ABORT
−MOVE_STATUS
(MOVE_SET_SRC_LBA)
ソースアレイの開始LBAを設定するサブコマンド。
インプット
(早いブロック移動API)
(DS_DiskdataBlockCopy)
この機能は、データのブロックを、一つの場所から、同一のディスクボリューム上の別の場所へ、またはISEにアタッチされた別のディスクボリュームに、コピーする。
(DS_DiskdataBlockCopy)
この機能は、データのブロックを、一つの場所から、同一のディスクボリューム上の別の場所へ、またはISEにアタッチされた別のディスクボリュームに、コピーする。
Dsr
[in]DirectStorはパラメータをリクエストする。各リクエストはタグ値に関連づけられる。発呼者(caller)は、このタグ値を有するコールバック機能を通して通知される。APIの発呼者は、同じタグを用いてAbort APIを呼び出すことによって動作を打ち切り得る。
DestBlockLocation
[in]宛先ボリュームブロックの場所情報を含む。
SrcBlockLocation
[in]ソースボリュームブロックの場所情報を含む。
ProgressCallback
[in]特定の間隔で呼び出されることによって、発行されたコマンドの進捗を発呼者に通知するコールバック機能に対する、ポインタ。
戻り値
成功した場合にゼロを返し、エラーがある場合に非ゼロを返す。エラーコードの説明についてはセクション5.5を参照されたい。
(DS_DiskdataBlockMove)
この機能は、データのブロックを、一つの場所から、同一のディスクボリューム上の別の場所へ、またはISEにアタッチされた別のディスクボリュームに、移動する。
この機能は、データのブロックを、一つの場所から、同一のディスクボリューム上の別の場所へ、またはISEにアタッチされた別のディスクボリュームに、移動する。
Dsr
[in]DirectStorはパラメータをリクエストする。各リクエストはタグ値に関連づけられる。発呼者は、このタグ値を有するコールバック機能を通して通知される。APIの発呼者は、同じタグを用いてAbort APIを呼び出すことによって動作を打ち切り得る。
DestBlockLocation
[in]宛先ボリュームブロックの場所情報を含む。
SrcBlockLocation
[in]ソースボリュームブロックの場所情報を含む。
ProgressCallback
[in]特定の間隔で呼び出されることによって、発行されたコマンドの進捗を発呼者に通知するコールバック機能に対する、ポインタ。
戻り値
成功した場合にゼロを返し、エラーがある場合に非ゼロを返す。エラーコードの説明についてはセクション5.5を参照されたい。
(DS_DiskdataBlockErase)
この機能は、ディスクボリュームからデータのブロックを消去する。
この機能は、ディスクボリュームからデータのブロックを消去する。
Dsr
[in]DirectStorはパラメータをリクエストする。各リクエストはタグ値に関連づけられる。発呼者は、このタグ値を有するコールバック機能を通して通知される。APIの発呼者は、同じタグを用いてAbort APIを呼び出すことによって動作を打ち切り得る。
BlockLocation
[in]ボリュームブロックの場所情報を含む。
ProgressCallback
[in]特定の間隔で呼び出されることによって、発行されたコマンドの進捗を発呼者に通知するコールバック機能に対する、ポインタ。
戻り値
成功した場合にゼロを返し、エラーがある場合に非ゼロを返す。エラーコードの説明についてはセクション5.5を参照されたい。
(DS DiskdataBlockFill)
この機能は、ディスクボリュームのブロックを所与のデータパターンで満たす。
この機能は、ディスクボリュームのブロックを所与のデータパターンで満たす。
Dsr
[in]DirectStorはパラメータをリクエストする。各リクエストはタグ値に関連づけられる。発呼者は、このタグ値を有するコールバック機能を通して通知される。APIの発呼者は、同じタグを用いてAbort APIを呼び出すことによって動作を打ち切り得る。
BlockLocation
[in]ボリュームブロックの場所情報を含む。
Pattern
[in]データパターンを含む。
ProgressCallback
[in]特定の間隔で呼び出されることによって、発行されたコマンドの進捗を発呼者に通知するコールバック機能に対する、ポインタ。
戻り値
成功した場合にゼロを返し、エラーがある場合に非ゼロを返す。エラーコードの説明についてはセクション5.5を参照されたい。
(DS_CreateDisklmage)
この機能は、ボリュームの完全なディスクイメージをターゲットボリューム上に作成する。
この機能は、ボリュームの完全なディスクイメージをターゲットボリューム上に作成する。
Volume
[in]OSによって割当てられる宛先ボリュームの文字。
Volume
[in]OSによって割当てられるソースボリュームの文字。
CommandTag
[in]各DirectStor APIは、コマンドタグによってタグ付けされる。このタグは、コールバック機能を提供される発呼者に渡される。このことは、発呼者がAPIのすべてまたはグループについて単一のコールバック機能を有することを援助する。また、APIの発呼者は、同じタグを打ち切りコマンドAPIに渡すことによって動作を打ち切り得る。
ProgressCallback
[in]特定の間隔で呼び出されることによって、発行されたコマンドの進捗を発呼者に通知するコールバック機能に対する、ポインタ。
戻り値
成功した場合にゼロを返し、エラーがある場合に非ゼロを返す。エラーコードの説明についてはセクション5.5を参照されたい。
(DS_DiskdataBlockRead)
アプリケーションは、この機能を呼び出すことによって、ディスクボリュームからデータのブロックを読み出す。
アプリケーションは、この機能を呼び出すことによって、ディスクボリュームからデータのブロックを読み出す。
Dsr
[in]DirectStorはパラメータをリクエストする。各リクエストはタグ値に関連づけられる。発呼者は、このタグ値を有するコールバック機能を通して通知される。APIの発呼者は、同じタグを用いてAbort APIを呼び出すことによって動作を打ち切り得る。
BlockLocation
[in]ボリュームブロックの場所情報を含む。
DataBuffer
[in]インプットデータバッファに対するポインタ。
戻り値
成功した場合にゼロを返し、エラーがある場合に非ゼロを返す。エラーコードの説明についてはセクション5.5を参照されたい。
(DS_DiskdataBlockWrite)
アプリケーションは、この機能を呼び出すことによって、データのブロックをディスクボリュームに書き込む。
アプリケーションは、この機能を呼び出すことによって、データのブロックをディスクボリュームに書き込む。
Dsr
[in]DirectStorはパラメータをリクエストする。各リクエストはタグ値に関連づけられる。発呼者は、このタグ値を有するコールバック機能を通して通知される。APIの発呼者は、同じタグを用いてAbort APIを呼び出すことによって動作を打ち切り得る。
BlockLocation
[in]ボリュームブロックの場所情報を含む。
DataBuffer
[in]アウトプットデータバッファに対するポインタ。
戻り値
成功した場合にゼロを返し、エラーがある場合に非ゼロを返す。エラーコードの説明についてはセクション5.5を参照されたい。
(DS_Abort)
この機能を使用することによって、ISEに対して発行されたコマンドを打ち切る。
この機能を使用することによって、ISEに対して発行されたコマンドを打ち切る。
Dsr
[in]DirectStorはパラメータをリクエストする。各リクエストはタグ値に関連づけられる。発呼者は、このタグ値を有するコールバック機能を通して通知される。APIの発呼者は、同じタグを用いてAbort APIを呼び出すことによって動作を打ち切り得る。
戻り値
成功した場合にゼロを返し、エラーがある場合に非ゼロを返す。
(例示的なアンチウイルスAPI)
(DS_ScanVolumeforSignature)
この機能は、指定された署名についてボリュームをスキャンする。アプリケーションは、実際のウイルス署名、または安全なディスク領域上に格納された署名を指し示すタグを渡し得る。渡されたコールバック機能は、指定された間隔において呼び出されることによって、進捗を通知する。
(DS_ScanVolumeforSignature)
この機能は、指定された署名についてボリュームをスキャンする。アプリケーションは、実際のウイルス署名、または安全なディスク領域上に格納された署名を指し示すタグを渡し得る。渡されたコールバック機能は、指定された間隔において呼び出されることによって、進捗を通知する。
Volume
[in]OSによって割当てられるターゲットボリュームの文字。
CommandTag
[in]各DirectStor APIは、コマンドタグによってタグ付けされる。このタグは、コールバック機能を提供される発呼者に渡される。このことは、発呼者がAPIのすべてまたはグループについて単一のコールバック機能を有することを援助する。また、APIの発呼者は、同じタグを打ち切りコマンドAPIに渡すことによって動作を打ち切り得る。
pSignature
[in]ウイルス署名。これは実際のウイルス署名であり得るか、または安全な領域上に格納された署名を指し示すタグであり得る。さらなる情報については、データ構造のセクションを参照されたい。
戻り値
成功した場合にゼロを返し、エラーがある場合に非ゼロを返す。エラーコードの説明についてはセクション5.5を参照されたい。
他の例示的な機能は、以下を含み得る。
DS_AbortScan
DS_ScanVolumeBlock
DS_StoreSignature
DS_WriteToSecureDiskZone
DS_ReadFromSecureDiskZone
DS_SavePassword
DS_VerifyPassword
(データ構造)
(DS_REQUEST)
一実施形態において、ISEに対する各リクエストは、タグ値に関連づけられる。このタグは、発呼者のコールバック機能において、発呼者に渡し戻される。これは、発呼者がAPIのすべてまたはグループについて単一のコールバック機能を有することを援助する。APIの発呼者は、同じタグを用いてAbort APIを呼び出すことによって、動作を打ち切り得る。
DS_AbortScan
DS_ScanVolumeBlock
DS_StoreSignature
DS_WriteToSecureDiskZone
DS_ReadFromSecureDiskZone
DS_SavePassword
DS_VerifyPassword
(データ構造)
(DS_REQUEST)
一実施形態において、ISEに対する各リクエストは、タグ値に関連づけられる。このタグは、発呼者のコールバック機能において、発呼者に渡し戻される。これは、発呼者がAPIのすべてまたはグループについて単一のコールバック機能を有することを援助する。APIの発呼者は、同じタグを用いてAbort APIを呼び出すことによって、動作を打ち切り得る。
ストレージエンジンを使用するコマンドは、ホストプロセッサからオペレーティングシステムへのコマンドをインタセプトすることによって、または所定のアプリケーションプログラミングインタフェース(API)を介して、生じ得る。このことは、ホストCPUおよび/またはローカルバスに負荷をかけることなしに、特殊なデータ動作を、アンチウイルスプログラムなどのアプリケーションプログラムにとって利用可能にする。そのような命令は、論理アドレスブロック(LBA)ソースおよび宛先情報に基づいて、ターゲットデータを特定し得る。
本明細書中に開示される種類のストレージエンジンは、種々の態様でインプリメントおよび使用され、たとえば実質的に単一の集積回路内に;実質的に単一の回路基板内に;PC内に組み込まれ;デジタルビデオレコーダシステムにインプリメントされ;デジタルビデオシステムにインプリメントされ;または当業者が前述を鑑みて理解するような多数の他の方法においてインプリメントされることができる。
本発明の基礎をなす原理から逸脱することなく、上述の実施形態の詳細に多くの変更がなされ得ることが当業者にとって自明である。したがって、本発明の範囲は、添付の特許請求の範囲のみによって決定されるべきである。
Claims (20)
- アタッチされたストレージ動作に関連してホストバストラフィックを低減するインテリジェントストレージエンジン装置であって、該ストレージエンジン装置は、
ホストアプリケーションから所定の命令または機能呼び出しを受信するホストインタフェースと、
該エンジンを、データ転送のために少なくとも一つのアタッチされたディスクドライブに結合するドライブインタフェースと、
該受信された命令に応答して、該アタッチされたストレージデバイスを用いてデータ転送を実行する、該ストレージエンジンにオンボードのプロセッサと
を備え、該ストレージエンジンは、ユーザデータを該ホストバスまたはホストシリアルリンクに置くことなしに、該アタッチされたストレージデバイスを用いて、該データ転送を実行するように構成されている、ストレージエンジン装置。 - 前記ドライブインタフェースは、多数のディスクドライブへの接続を構成可能なドライブスイッチを備える、請求項1に記載のストレージエンジン装置。
- 前記アタッチされたホストを用いたDMA転送のためのDMAコンポーネントを含む、請求項1に記載のストレージエンジン装置。
- 所定のアプリケーションプログラミングインタフェース(API)を介して、ホストCPUからデータ移動または処理の命令を受信するように構成されている、請求項1に記載のストレージエンジン装置。
- ユーザデータを一時的に格納するためのローカルキャッシュメモリを含む、請求項1に記載のストレージエンジン装置。
- 選択されたファイルストリームのデータをオンザフライでスキャンし、そのスキャニングデータを所定の参照シーケンスにマッチングさせる手段を含む、請求項1に記載のストレージエンジン装置。
- 低減されたローカルバストラフィックでディスクドライブ動作を実行する方法であって、該方法は、
少なくとも一つのディスクドライブへのアクセスを要求する少なくとも一つのホストアプリケーション機能を定義し、対応する機能呼び出しを有することと、
ストレージエンジン装置において該機能呼び出しをインプリメントすることと、
ホストローカルバスおよび少なくとも一つのアタッチされたディスクドライブに対して、該ストレージエンジン装置をインタフェースすることと、
該機能呼び出しが表明されたときに該機能呼び出しを検出するように、該ローカルバスを監視することと、
該検出された機能呼び出しに応答して、ユーザデータを該ローカルバスに置くことなしに、該ストレージエンジン装置の対応する機能を実行することと、
完了後に、該実行された機能の結果を該ローカルバスを介して戻すことと
を包含する、方法。 - 前記ストレージエンジンにインプリメントされている前記ホストアプリケーション機能は、ファイルコピーおよびファイル移動の動作を含む、請求項7に記載のディスクドライブ動作を実行する方法。
- ソフトウェアレイヤおよびハードウェアインタフェース機能呼び出しをキャッシュする標準的な組込みのオペレーティングカーネルシステムファイルを回避し、代わりに、少なくとも一つの対応するコマンドを前記ストレージエンジンに直接的に送信することによって、OS呼び出し動作を完了するようにホストソフトウェア内の動作を実行することを含む、請求項7に記載のディスクドライブ動作を実行する方法。
- 前記ホストローカルバスまたはシリアル接続に負荷をかけることなしに、2つのディスクドライブの間でデータを移動させることを含む、請求項7に記載の方法。
- コマンドを監視するファイルシステムフィルタモジュールを、オペレーティングシステムファイルシステムに提供することと、
該ファイルシステムフィルタモジュールにおいて、所与のコマンドが前記ストレージエンジンに現在アタッチされているディスクドライブに向けられているかどうかをチェックすることと、
コマンドがアタッチされたディスクドライブに向けられており、かつ該コマンドが該フィルタモジュールによってそれが処理し得るコマンドの所定のセットの一つとして認識される場合に、該ストレージエンジンにおいて処理するために該コマンドをインタセプトすることと
を含む、請求項7に記載のディスクドライブ動作を実行する方法。 - 前記動作の状態の前記ホストに定期的な情報を提供することと、リクエストされた動作の状態をキューイングすることと、該動作が完了したときに全体的な結果を提供することとを含む、請求項11に記載の方法。
- 前記最終結果は、前記リクエストされた動作が完了しなかったこと、または該動作が首尾良く完了したことを示す前記ホストへの指示を含む、請求項11に記載の方法。
- 前記最終結果は、リクエストされた結果データの引き渡しを含む、請求項11に記載の方法。
- 前記動作は、第1のディスクドライブから第2のディスクドライブへのファイル移動、ファイルコピー動作、ディスクボリュームマージ、ウイルススキャン、RAIDドライブアレイ再構築のうちの一つを含む、請求項11に記載の方法。
- 前記動作は、格納されたユーザデータの検索を含む、請求項11に記載の方法。
- 低減されたローカルバストラフィックでディスクドライブ動作を実行する方法であって、該方法は、
少なくとも一つのディスクドライブへのアクセスを要求する、少なくとも一つのアプリケーション機能を定義することと、
ローカルプロセッサとローカルメモリとを有するストレージエンジン装置に該機能をインプリメントすることと、
ホストローカルバスおよび少なくとも一つのアタッチされたディスクドライブに対して、該ストレージエンジン装置をインタフェースすることと、
所定のAPIを介してアプリケーションプログラムから機能呼び出しを受信することと、
該受信された機能呼び出しに応答して、ユーザデータを該ローカルバスに置くことなしに、該ストレージエンジン装置の対応する機能を実行することであって、該実行は該少なくとも一つのアタッチされたディスクドライブにアクセスすることを含むことと、
完了後に、該実行された機能の結果を該アプリケーションプログラムに戻すことと
を包含する、方法。 - 前記アプリケーションプログラムは、アンチウイルスアプリケーションである、請求項17に記載の方法。
- 前記APIは、ディスクブロック動作を含む、請求項17に記載の方法。
- 前記APIは、検索動作を含む、請求項17に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US64063404P | 2004-12-29 | 2004-12-29 | |
PCT/US2005/046931 WO2006071817A2 (en) | 2004-12-29 | 2005-12-22 | Intelligent storage engine for disk drive operations with reduced local bus traffic |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008527496A true JP2008527496A (ja) | 2008-07-24 |
Family
ID=36615465
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007549528A Pending JP2008527496A (ja) | 2004-12-29 | 2005-12-22 | 低減されたローカルバストラフィックでのディスクドライブ動作のためのインテリジェントストレージエンジン |
Country Status (6)
Country | Link |
---|---|
US (1) | US7395358B2 (ja) |
JP (1) | JP2008527496A (ja) |
KR (1) | KR100919920B1 (ja) |
CN (1) | CN101305334B (ja) |
TW (1) | TWI366764B (ja) |
WO (1) | WO2006071817A2 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008159045A (ja) * | 2006-12-20 | 2008-07-10 | Internatl Business Mach Corp <Ibm> | サポート・プロセッサによる最適化されたデータ・マイグレーションのための方法、システム、およびプログラム |
JP2009064118A (ja) * | 2007-09-05 | 2009-03-26 | Nec Access Technica Ltd | Usbデバイスバックアップ装置及びそれに用いるusbデバイスバックアップ方法並びにそのプログラム |
WO2012140813A1 (ja) * | 2011-04-14 | 2012-10-18 | パナソニック株式会社 | データ転送装置 |
JP2014048835A (ja) * | 2012-08-30 | 2014-03-17 | Fujitsu Ltd | 情報処理装置、領域解放制御プログラム、および領域解放制御方法 |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI285313B (en) * | 2005-06-22 | 2007-08-11 | Accusys Inc | XOR circuit, RAID device capable of recover a plurality of failures and method thereof |
US7613840B2 (en) * | 2006-08-17 | 2009-11-03 | General Electric Company | Methods and apparatus for dynamic data acquisition configuration parameters |
US8341428B2 (en) * | 2007-06-25 | 2012-12-25 | International Business Machines Corporation | System and method to protect computing systems |
US20080320423A1 (en) * | 2007-06-25 | 2008-12-25 | International Business Machines Corporation | System and method to protect computing systems |
US20100071064A1 (en) * | 2008-09-17 | 2010-03-18 | Weber Bret S | Apparatus, systems, and methods for content selfscanning in a storage system |
US9079562B2 (en) * | 2008-11-13 | 2015-07-14 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Active-active failover for a direct-attached storage system |
US7870308B2 (en) * | 2008-12-23 | 2011-01-11 | International Business Machines Corporation | Programmable direct memory access engine |
US8843449B2 (en) | 2009-06-16 | 2014-09-23 | Bmc Software, Inc. | Unobtrusive copies of actively used compressed indices |
KR101740679B1 (ko) | 2010-08-03 | 2017-05-26 | 삼성전자주식회사 | 양방향 통신 기법을 갖는 저장 장치 그리고 그것을 포함한 시스템 |
CN102566936B (zh) * | 2010-12-28 | 2015-04-29 | 联想(北京)有限公司 | 一种磁盘数据读取方法、装置及磁盘驱动装置 |
US9519782B2 (en) | 2012-02-24 | 2016-12-13 | Fireeye, Inc. | Detecting malicious network content |
US9785350B2 (en) | 2013-02-21 | 2017-10-10 | Seagate Technology Llc | Data storage device having a virtual machine |
US20140278328A1 (en) | 2013-03-15 | 2014-09-18 | Nvidia Corporation | System, method, and computer program product for constructing a data flow and identifying a construct |
US9015643B2 (en) * | 2013-03-15 | 2015-04-21 | Nvidia Corporation | System, method, and computer program product for applying a callback function to data values |
US9323502B2 (en) | 2013-03-15 | 2016-04-26 | Nvidia Corporation | System, method, and computer program product for altering a line of code |
US9171115B2 (en) | 2013-04-10 | 2015-10-27 | Nvidia Corporation | System, method, and computer program product for translating a common hardware database into a logic code model |
US9021408B2 (en) | 2013-04-10 | 2015-04-28 | Nvidia Corporation | System, method, and computer program product for translating a source database into a common hardware database |
US9015646B2 (en) | 2013-04-10 | 2015-04-21 | Nvidia Corporation | System, method, and computer program product for translating a hardware language into a source database |
CN104598336B (zh) * | 2015-02-04 | 2018-04-24 | 深圳神州数码云科数据技术有限公司 | 基于raid算法的重建方法及装置 |
CN106775456B (zh) * | 2016-11-22 | 2019-11-26 | 华为技术有限公司 | 一种数据处理方法、装置及*** |
US20180150256A1 (en) * | 2016-11-29 | 2018-05-31 | Intel Corporation | Technologies for data deduplication in disaggregated architectures |
KR102276912B1 (ko) * | 2017-06-07 | 2021-07-13 | 삼성전자주식회사 | 스토리지 시스템 및 이의 동작 방법 |
CN110825530B (zh) * | 2018-08-10 | 2022-12-23 | 昆仑芯(北京)科技有限公司 | 用于人工智能芯片的指令执行方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04123160A (ja) * | 1990-09-13 | 1992-04-23 | Nec Corp | 受信データ処理システム |
JPH0822379A (ja) * | 1994-07-08 | 1996-01-23 | Hitachi Ltd | ディスクアレイ装置 |
JPH10105347A (ja) * | 1996-10-02 | 1998-04-24 | Hitachi Ltd | ディスクアレイ制御システム |
JP2002023960A (ja) * | 2000-06-30 | 2002-01-25 | Toshiba Corp | ディスク装置及び同装置を複数備えた計算機システム |
JP2003316525A (ja) * | 2002-04-26 | 2003-11-07 | Seiko Epson Corp | ディスクアレイ制御装置 |
JP2004030380A (ja) * | 2002-06-27 | 2004-01-29 | Sony Corp | データ記憶装置、データ処理装置、データ記憶装置の制御方法、データ記憶装置の制御プログラム、データ処理装置の制御プログラム、データ記憶装置の制御プログラムを記録した記録媒体及びデータ処理装置の制御プログラムを記録した記録媒体 |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4868734A (en) | 1984-04-30 | 1989-09-19 | Unisys Corp. | Variable rate improvement of disc cache subsystem |
US4942579A (en) * | 1987-06-02 | 1990-07-17 | Cab-Tek, Inc. | High-speed, high-capacity, fault-tolerant error-correcting storage system |
US5522058A (en) * | 1992-08-11 | 1996-05-28 | Kabushiki Kaisha Toshiba | Distributed shared-memory multiprocessor system with reduced traffic on shared bus |
US5884093A (en) * | 1994-09-02 | 1999-03-16 | Rock Solid Systems, Inc. | Hard disk cache for CD-ROM and other slow access time devices |
US5892969A (en) * | 1996-03-15 | 1999-04-06 | Adaptec, Inc. | Method for concurrently executing a configured string of concurrent I/O command blocks within a chain to perform a raid 5 I/O operation |
US6018778A (en) * | 1996-05-03 | 2000-01-25 | Netcell Corporation | Disk array controller for reading/writing striped data using a single address counter for synchronously transferring data between data ports and buffer memory |
US5806086A (en) * | 1996-06-11 | 1998-09-08 | Data General Corporation | Multiprocessor memory controlling system associating a write history bit (WHB) with one or more memory locations in controlling and reducing invalidation cycles over the system bus |
US6108697A (en) * | 1997-10-06 | 2000-08-22 | Powerquest Corporation | One-to-many disk imaging transfer over a network |
US6098114A (en) * | 1997-11-14 | 2000-08-01 | 3Ware | Disk array system for processing and tracking the completion of I/O requests |
US6185639B1 (en) * | 1998-06-05 | 2001-02-06 | International Business Machines Corporation | System and method to reduce a computer system's interrupt processing overhead |
US6065083A (en) * | 1998-08-21 | 2000-05-16 | International Business Machines, Inc. | Increasing I/O performance through storage of packetized operational information in local memory |
US6987927B1 (en) * | 1998-09-09 | 2006-01-17 | Smartdisk Corporation | Enhanced digital data collector for removable memory modules |
US6920537B2 (en) * | 1998-12-31 | 2005-07-19 | Emc Corporation | Apparatus and methods for copying, backing up and restoring logical objects in a computer storage system by transferring blocks out of order or in parallel |
US20030191957A1 (en) * | 1999-02-19 | 2003-10-09 | Ari Hypponen | Distributed computer virus detection and scanning |
US6385683B1 (en) * | 1999-08-13 | 2002-05-07 | Lsi Logic Corporation | Methods and apparatus for raid hardware sequencing to achieve a higher performance raid architecture |
US6772108B1 (en) | 1999-09-22 | 2004-08-03 | Netcell Corp. | Raid controller system and method with ATA emulation host interface |
US8019901B2 (en) * | 2000-09-29 | 2011-09-13 | Alacritech, Inc. | Intelligent network storage interface system |
GB2378783B (en) * | 2001-08-17 | 2004-12-29 | F Secure Oyj | Preventing virus infection in a computer system |
US7624439B2 (en) * | 2001-10-29 | 2009-11-24 | Seventh Knight | Authenticating resource requests in a computer system |
EP1546926A4 (en) | 2002-09-18 | 2008-07-02 | Netezza Corp | RECORDING PROCESSOR, METHOD AND DEVICE FOR ASYMMETRIC STREAMING |
US6904498B2 (en) | 2002-10-08 | 2005-06-07 | Netcell Corp. | Raid controller disk write mask |
KR20060025135A (ko) | 2003-04-21 | 2006-03-20 | 네트셀 코포레이션 | 재구성 가능한 데이터 경로를 갖는 디스크 어레이 제어기 |
DE20313678U1 (de) * | 2003-09-01 | 2004-02-19 | Leica Microsystems Wetzlar Gmbh | Mikroskop |
EP1690185A4 (en) * | 2003-10-20 | 2007-04-04 | Rhode Island Education | UPPER MEMORY MEMORY STRUCTURE FOR STORAGE SERVERS |
JP2005135065A (ja) * | 2003-10-29 | 2005-05-26 | Hitachi Ltd | 記憶デバイス制御装置、及び記憶デバイス制御装置の制御方法 |
JP2005309793A (ja) * | 2004-04-22 | 2005-11-04 | Hitachi Ltd | データ処理システム |
US20060095705A1 (en) * | 2004-10-30 | 2006-05-04 | James Wichelman | Systems and methods for data storage management |
-
2005
- 2005-12-22 KR KR1020077017657A patent/KR100919920B1/ko active IP Right Grant
- 2005-12-22 JP JP2007549528A patent/JP2008527496A/ja active Pending
- 2005-12-22 WO PCT/US2005/046931 patent/WO2006071817A2/en active Application Filing
- 2005-12-22 US US11/316,436 patent/US7395358B2/en active Active
- 2005-12-22 CN CN2005800488353A patent/CN101305334B/zh active Active
- 2005-12-27 TW TW094146601A patent/TWI366764B/zh active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04123160A (ja) * | 1990-09-13 | 1992-04-23 | Nec Corp | 受信データ処理システム |
JPH0822379A (ja) * | 1994-07-08 | 1996-01-23 | Hitachi Ltd | ディスクアレイ装置 |
JPH10105347A (ja) * | 1996-10-02 | 1998-04-24 | Hitachi Ltd | ディスクアレイ制御システム |
JP2002023960A (ja) * | 2000-06-30 | 2002-01-25 | Toshiba Corp | ディスク装置及び同装置を複数備えた計算機システム |
JP2003316525A (ja) * | 2002-04-26 | 2003-11-07 | Seiko Epson Corp | ディスクアレイ制御装置 |
JP2004030380A (ja) * | 2002-06-27 | 2004-01-29 | Sony Corp | データ記憶装置、データ処理装置、データ記憶装置の制御方法、データ記憶装置の制御プログラム、データ処理装置の制御プログラム、データ記憶装置の制御プログラムを記録した記録媒体及びデータ処理装置の制御プログラムを記録した記録媒体 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008159045A (ja) * | 2006-12-20 | 2008-07-10 | Internatl Business Mach Corp <Ibm> | サポート・プロセッサによる最適化されたデータ・マイグレーションのための方法、システム、およびプログラム |
JP2009064118A (ja) * | 2007-09-05 | 2009-03-26 | Nec Access Technica Ltd | Usbデバイスバックアップ装置及びそれに用いるusbデバイスバックアップ方法並びにそのプログラム |
WO2012140813A1 (ja) * | 2011-04-14 | 2012-10-18 | パナソニック株式会社 | データ転送装置 |
JP2014048835A (ja) * | 2012-08-30 | 2014-03-17 | Fujitsu Ltd | 情報処理装置、領域解放制御プログラム、および領域解放制御方法 |
Also Published As
Publication number | Publication date |
---|---|
KR100919920B1 (ko) | 2009-10-07 |
CN101305334B (zh) | 2012-01-11 |
US20060143316A1 (en) | 2006-06-29 |
US7395358B2 (en) | 2008-07-01 |
CN101305334A (zh) | 2008-11-12 |
WO2006071817A2 (en) | 2006-07-06 |
TWI366764B (en) | 2012-06-21 |
TW200636483A (en) | 2006-10-16 |
WO2006071817A3 (en) | 2007-04-19 |
KR20080031150A (ko) | 2008-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2008527496A (ja) | 低減されたローカルバストラフィックでのディスクドライブ動作のためのインテリジェントストレージエンジン | |
KR100909119B1 (ko) | 집적 dma 엔진을 사용하는 고성능 휘발성 디스크드라이브 메모리 액세스 장치 및 방법 | |
US9760386B2 (en) | Accelerator functionality management in a coherent computing system | |
US8433770B2 (en) | Combined local and network storage interface | |
KR101517258B1 (ko) | 크로스-시스템의 프록시-기반 태스크 오프로딩을 위한 장치, 시스템 및 방법 | |
US20180300230A1 (en) | Computing device, data transfer method between coprocessor and non-volatile memory, and computer-readable recording medium | |
CN112422606A (zh) | 云游戏数据存储和检索的高速数据通信架构的***和方法 | |
TWI793654B (zh) | 雲端遊戲系統及操作雲端遊戲系統之方法 | |
US9189166B2 (en) | Multi-host SATA controller | |
US20160179432A1 (en) | Information processing apparatus and memory management method | |
US7080128B2 (en) | Inter-processor communication method using a disk cache in a network storage system | |
JP2004258840A (ja) | 仮想化されたi/oデバイスをもつ計算機システム | |
US7409486B2 (en) | Storage system, and storage control method | |
US9047264B2 (en) | Low pin count controller | |
KR102000721B1 (ko) | 컴퓨팅 디바이스, 코프로세서와 비휘발성 메모리 사이의 데이터 이동 방법 및 이를 포함하는 프로그램 | |
KR100576721B1 (ko) | 제로카피(zero-copy) 전송 기능을 구비한네트워크 카드와 서버 및 그 전송 방법 | |
WO2010088864A1 (zh) | 存储数据读取装置和方法以及计算机装置 | |
TWI845935B (zh) | 實施用於雲端遊戲資料儲存及擷取之高速資料通信組構之系統及方法 | |
JP2006085393A (ja) | デバイスからの高速データ転送方法及びデータ処理装置 | |
JP2015215641A (ja) | 情報処理装置,エミュレーションプログラム,及びエミュレーション方法 | |
JP2021082182A (ja) | 情報処理システム、ストレージ制御プログラム、及び、ストレージ制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100726 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100730 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110104 |