JP2006185000A - ストレージ装置 - Google Patents
ストレージ装置 Download PDFInfo
- Publication number
- JP2006185000A JP2006185000A JP2004375453A JP2004375453A JP2006185000A JP 2006185000 A JP2006185000 A JP 2006185000A JP 2004375453 A JP2004375453 A JP 2004375453A JP 2004375453 A JP2004375453 A JP 2004375453A JP 2006185000 A JP2006185000 A JP 2006185000A
- Authority
- JP
- Japan
- Prior art keywords
- data
- data transfer
- memory
- unit
- dma
- 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
Classifications
-
- 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
- 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
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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/0656—Data buffering arrangements
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Abstract
【課題】 他装置とのデータ入出力において、ストレージ制御装置のデータ転送制御部(DTC)は、他装置とのデータ転送を、メモリ間での退避/回復動作を利用して多重に処理し、かつその負荷を抑えて性能を向上する。
【解決手段】 第1のストレージ装置601は、DTCのデータ転送LSI114で2つのDMA部800を備え、これらを用いて1つ以上のデータ転送を並行的に処理し、1つのDMA部800でもメモリ#3(115)への退避や回復の動作を用いてデータ転送を切り替えながら処理させ、複数のデータ転送を多重に処理する。DTCは、IOCからの指示に基づき、一方のDMA部800で、そのメモリに、必要なデータ転送情報とデータをメモリ#3(115)から回復してデータ転送を行わせ、並行して、処理中でない他方のDMA部800で、そのメモリに記憶されているデータ転送情報やデータを、先行してメモリ#3(115)へ退避させる。
【選択図】 図3
【解決手段】 第1のストレージ装置601は、DTCのデータ転送LSI114で2つのDMA部800を備え、これらを用いて1つ以上のデータ転送を並行的に処理し、1つのDMA部800でもメモリ#3(115)への退避や回復の動作を用いてデータ転送を切り替えながら処理させ、複数のデータ転送を多重に処理する。DTCは、IOCからの指示に基づき、一方のDMA部800で、そのメモリに、必要なデータ転送情報とデータをメモリ#3(115)から回復してデータ転送を行わせ、並行して、処理中でない他方のDMA部800で、そのメモリに記憶されているデータ転送情報やデータを、先行してメモリ#3(115)へ退避させる。
【選択図】 図3
Description
本発明は、ストレージ装置(ディスクアレイ装置ともいう)に関し、特に、ホストとなる情報処理装置や他のストレージ装置などの他装置との間でのデータ転送を制御する技術に関する。
近年、ストレージ装置の技術において、複数のストレージ装置を通信可能に接続した構成において、情報処理装置からデータ入出力要求を受信した第1のストレージ装置が、これに通信接続される他の第2のストレージ装置に記憶されるデータをアクセスするような運用が行われるようになっている。このような運用の例としては、ディザスタリカバリを実現するためのストレージ装置間のリモートコピー機能や、ストレージ・コンソリデーションなどが挙げられる。
特許文献1には、上記のような運用が行われるストレージ装置の技術例について記載されている。
米国特許第5742792号明細書
しかしながら、前記運用のような場合では、第1のストレージ装置と、情報処理装置や第2のストレージ装置などの他装置との間でのデータ入出力の性能は、他装置との間で行われる通信により制約される。特に、前記他装置との間の通信においてストレージ制御装置(制御装置と略称する)のデータ転送制御部(DTCと略称する)でデータ転送を多重に処理することを考えた場合、この処理の性能に応じて前記データ入出力の性能が左右されることとなる。
本発明は以上のような問題に鑑みてなされたものであり、その目的は、ストレージ装置と他装置との間でデータ入出力が行われる場合に、制御装置のデータ転送制御部で、他装置とのデータ転送を、メモリ間でのデータ転送情報やデータの退避/回復動作を利用して多重に処理し、なおかつ前記退避/回復による負荷を抑えてデータ入出力性能を向上できる技術を提供することにある。
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。前記目的を達成するために、本発明のストレージ装置は、ハードディスクドライブ(HDD)等の記憶装置と、記憶装置に対するデータの記憶を制御する制御装置とを備え、RAID制御機能を持つ装置であって、以下に示す技術的手段を有することを特徴とする。
本発明のストレージ装置は、ホストとなる情報処理装置や他のストレージ装置などの他装置と、通信手段を通じて通信接続されて、ストレージシステムを構成する。このストレージシステムにおいて、情報処理装置からストレージ装置に対するデータ入出力や、複数のストレージ装置の間でのデータ入出力などが行われる。本発明のストレージ装置(第1のストレージ装置とする)は、他装置である前記情報処理装置または第2のストレージ装置との間でのデータ入出力に係わり、制御装置において、他装置との間でのデータ転送を多重に処理する。前記データ入出力は、第1や第2のストレージ装置の記憶装置上に設けられた記憶ボリュームに対するデータの書き込みや読み出し等である。前記データ転送は、他装置のメモリと制御装置のメモリとの間でのデータ転送である。
制御装置において、データ入出力を制御する入出力制御部(IOCと略称する)と、データ転送を制御するデータ転送制御部(DTC)と、データ転送先や転送元となるメモリ部(第1のメモリ部とする)とを有する。DTCは、例えば、DMA(ダイレクトメモリアクセス)データ転送制御を行う集積回路(データ転送回路)と、他装置との前記通信手段を通じた通信を処理する通信インタフェース部とを有する。またDTCは、データ転送制御のために使用するメモリ部(第2のメモリ部とする)にも接続される。通信インタフェース部は、通信に使用するメモリ部(第3のメモリ部とする)を有する。他装置は、データ転送先や転送元となるメモリ部(第4のメモリ部とする)を有する。制御装置は、他装置とのデータ入出力において、前記第1のメモリ部と第4のメモリ部との間で、DTCによって、転送元のメモリ部におけるデータ記憶位置から、転送先のメモリ部のデータ記憶位置へのデータ転送を制御する。前記第1のメモリ部は、例えば、第1のストレージ装置の制御装置内に有するキャッシュメモリである。また前記第4のメモリ部は、情報処理装置のメモリや第2のストレージ装置の制御装置内に有するメモリなどである。なお第1〜第4の「メモリ部」を論理的なメモリ資源とし、第1〜第3の「メモリ」(メモリ#1〜#3)を独立した物理的なメモリ資源とすることに注意しておく。
前記データ転送回路は、DMA制御部(DMAC)と、データ転送制御に用いるメモリとを備えたDMA部を、少なくとも2つ以上備える。前記DMA部の備えるメモリは、データ転送情報を記憶するレジスタと、データを記憶するバッファとを有する。以下、DTCで扱う「データ」とは、データ転送における転送データに対応している。
制御装置において、データ転送回路は、IOCからの指示をもとにレジスタへデータ転送情報を構成する。例えばIOCが作成したスクリプトに従ってデータ転送情報を作成する。DMA部は、DMACによって、レジスタのデータ転送情報に従って、バッファにデータをストア・アンド・フォワードしながら、第1のメモリ部方向や第3のメモリ部方向に対するデータ転送を制御する。また、データ転送回路は、データ転送情報やデータの退避/回復用のメモリに接続される。前記第2のメモリ部の一部が前記退避/回復用のメモリに対応する。
DMA部は、自身のメモリに記憶されるデータ転送情報とデータについて、第2のメモリ部に対して、データ転送情報又はデータ又はその組を、退避すなわち書き出したり、回復すなわち読み出したりといった動作を行いながら、データ転送を制御する。
データ転送回路は、複数のDMA部を用いて1つ以上のデータ転送を並行的に処理すると共に、1つのDMA部においても前記退避/回復の動作を用いてデータ転送を切り替えながら処理することで、複数のデータ転送を多重に処理する。DTCは、複数のDMA部のいずれでデータ転送を担当させるかを決定する。例えばデータ転送回路は、IOCからの指示に基づき、複数のDMA部のいずれでデータ転送を処理させるかを決定する。
前記IOCは、例えば第1のプロセッサで構成される。前記通信インタフェース部は、例えば第2のメモリコントローラと、第2のメモリコントローラに接続される第2のプロセッサ及び第2のメモリとで構成される。前記第2のメモリ部は、第1のメモリコントローラと、第1のメモリコントローラに接続される第1のメモリと、データ転送回路に接続される第3のメモリとで構成される。
制御装置は、例えば、他装置との通信インタフェースを備えたチャネル制御部、記憶装置との通信インタフェースを備えたディスク制御部、データを記憶するキャッシュメモリ、制御情報を記憶する共有メモリ、これら各部を相互接続する接続部などにより構成される。例えば、チャネル制御部が、前記IOCと、前記DTCと、前記第2のメモリ部とを備える構成である。チャネル制御部は、他装置との間で通信を行い、キャッシュメモリに対してデータを読み書きする。ディスク制御部は、キャッシュメモリや記憶ボリュームに対してデータを読み書きする。
また他のチャネル制御部の構成として、前記通信インタフェース部が、他装置との通信を処理する1つのプロトコルLSIで構成される。プロトコルLSIの持つメモリと他装置のメモリとの間でのデータ転送を含んだ通信処理が行われる。
本発明のストレージ装置は、前記制御装置において、データ転送制御に関する、以下のような第1〜第4の制御を行う。ストレージ装置のハードウェア構成に応じて各制御が行われる構成である。また複数の制御を選択的に実行する構成とすることもできる。また処理状況などに応じて各制御を選択的に実行可能な構成とすることもできる。
(1) 本発明のストレージ装置は、第1の制御として、DTCは、データ転送処理中でないDMA部で、メモリに記憶されているデータ転送情報又はデータ又はその組を、今後のデータ転送のために、あらかじめ時間的に先行して第2のメモリ部へと退避しておく制御を行う。例えば、或るDMA部でデータ転送を行わせるのと並行して、他のDMA部でメモリに記憶されているデータ転送情報とデータを、先行して第2のメモリ部へと退避しておく。例えば、DTCは、第1のDMA部で第1のデータ転送を担当させ、第2のメモリ部から必要なデータ転送情報やデータを回復させて、回復したデータ転送情報とデータを用いて第1のデータ転送を行わせる。そしてDTCは、前記第1のデータ転送を契機として、第2のDMA部でメモリに記憶されているデータ転送情報やデータを第2のメモリ部へと退避させる。また同様に、DTCは、前記第2のDMA部で第2のデータ転送を行わせるのと並行して、前記第1のDMA部で先行して退避を行わせる。
(2) また本発明の他のストレージ装置は、第2の制御として、DTCは、前記第1の制御における先行退避を行うのに加えて、或るDMA部でデータ転送を行わせる際、DMA部の退避済みのメモリに、回復すべきデータ転送情報やデータが残っている場合は、その残っているデータ転送情報やデータを利用して、回復動作を行わずにデータ転送を行わせる。DTCは、或るDMA部で第1、第2のデータ転送を順に行わせる際に、第2のデータ転送が第1のデータ転送に関連するデータ入出力である場合に、DMA部のメモリに記憶されているデータ転送情報とデータを利用して回復動作無しでデータ転送を行わせる。例えば、DTCは、順次データである複数のデータブロックの連続的な転送の場合などに、或るDMA部でそれらデータ転送を続けて担当させ、DMA部のメモリに残っているデータ転送情報とデータを利用して回復動作無しでそれらデータ転送を行わせる。なお前記退避動作が第2のメモリ部へのコピーであることが条件である。
(3) また本発明の他のストレージ装置は、第3の制御として、キャッシュライト処理など、DMA部のバッファから前記第1のメモリ部へ、データ入出力において関連する複数のデータをまとめて書き込む処理を行う場合などにおいて以下の制御を行う。DTCは、他装置側からDMA部のバッファへと前記複数のデータにおける各データを蓄積するごとに、前記第2のメモリ部に対する退避と回復の動作無しで、前記第1のメモリ部へ書き込みすなわちデータ掃き出しする制御を行う。
(4) また本発明の他のストレージ装置は、第4の制御として、キャッシュリード処理など、前記第1のメモリ部からDMA部のバッファへ、データ入出力において関連する複数のデータをまとめて読み出す処理を行う場合などにおいて以下の制御を行う。DTCは、前記複数のデータについて、その各データをDMA部のバッファから他装置側へと転送するごとに、前記第2のメモリ部に対する退避と回復の動作無しで、前記第1のメモリ部から再読み出ししたデータを用いて他装置側へデータ転送する制御を行う。
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。本発明によれば、ストレージ装置と他装置との間でデータ入出力が行われる場合に、制御装置のデータ転送制御部で、他装置とのデータ転送を、メモリ間でのデータ転送情報やデータの退避/回復動作を利用して多重に処理し、なおかつ前記退避/回復による負荷を抑えてデータ入出力性能を向上できる。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一符号を付し、その繰り返しの説明は省略する。図1〜18は、本発明の各実施の形態におけるストレージ装置600を説明するための図である。まず、各実施の形態で共通となる構成について説明する。各実施の形態は、基本となるハードウェア構成は同様であり、制御装置における制御論理が異なる。
<ハードウェア構成>
図1は、ストレージ装置600の全体のハードウェア外観構成を示す斜視図である。ストレージ装置600は、例えば、基本筐体11と複数の増設筐体12とから構成することができる。基本筐体11は、ストレージ装置600の最小構成単位であり、後述する制御装置100などが担う制御機能及び記憶装置30が担う記憶機能の両方を備えている。制御機能は、上位装置などからの命令や要求に応じて記憶装置30の記憶領域に対するデータの記憶を制御する機能である。制御装置100は、例えば、機能ごとの制御パッケージ13が相互接続されることにより構成される。記憶機能は、ユーザデータ等のデータを記憶領域に記憶する機能である。本実施の形態では、記憶装置30としてHDDが記憶領域を提供する。増設筐体12は、ストレージ装置600のオプション単位であり、記憶機能を備える。増設筐体12は、基本筐体11の有する制御機能により制御される。例えば、基本筐体11に対して4つの増設筐体12を接続した構成が可能である。各筐体間が通信ケーブルで接続される。
図1は、ストレージ装置600の全体のハードウェア外観構成を示す斜視図である。ストレージ装置600は、例えば、基本筐体11と複数の増設筐体12とから構成することができる。基本筐体11は、ストレージ装置600の最小構成単位であり、後述する制御装置100などが担う制御機能及び記憶装置30が担う記憶機能の両方を備えている。制御機能は、上位装置などからの命令や要求に応じて記憶装置30の記憶領域に対するデータの記憶を制御する機能である。制御装置100は、例えば、機能ごとの制御パッケージ13が相互接続されることにより構成される。記憶機能は、ユーザデータ等のデータを記憶領域に記憶する機能である。本実施の形態では、記憶装置30としてHDDが記憶領域を提供する。増設筐体12は、ストレージ装置600のオプション単位であり、記憶機能を備える。増設筐体12は、基本筐体11の有する制御機能により制御される。例えば、基本筐体11に対して4つの増設筐体12を接続した構成が可能である。各筐体間が通信ケーブルで接続される。
基本筐体11には、複数の制御パッケージ13と、複数の電源ユニット14と、複数のバッテリユニット15と、複数の記憶装置30とがそれぞれ着脱可能に設けられている。筐体の上部などには、複数の冷却ファン16もそれぞれ設けられている。電源ユニット14は筐体内各部に対する電源を供給する。バッテリユニット15はバックアップ電源として機能する。冷却ファン16は筐体内の冷却を行う。記憶装置30はディスク領域にデータを記憶する装置であり、筐体装着のための機械的構造も備えている。増設筐体12では、多数の記憶装置30を並列的に装着可能である。
制御パッケージ13は、後述のチャネル制御部110などの各機能をそれぞれ実現するモジュールである。制御パッケージ13は、機能を実装したボードに筐体装着のための機械的構造を備えたユニットである。基本筐体11には、制御パッケージ13として、複数のCHAパッケージ、複数のDKAパッケージ及び1つ以上のメモリパッケージ等がそれぞれ着脱可能に設けられ、制御パッケージ13単位で交換可能となっている。各制御パッケージ13は、筐体に設けられているスロットに挿入され、スロット内部で各部相互接続のためのバックプレーンボードに接続される。
<ストレージシステム構成>
図2は、ストレージ装置600を含んで構成されるストレージシステムの全体の構成を示すブロック図である。本ストレージシステムは、ストレージ装置600として、第1のストレージ装置(A)601と、第2のストレージ装置(B)602を有し、SAN500を介して、第1のストレージ装置601と情報処理装置200が通信接続される。また、SAN500を介して、第1のストレージ装置601と第2のストレージ装置602が通信接続される。
図2は、ストレージ装置600を含んで構成されるストレージシステムの全体の構成を示すブロック図である。本ストレージシステムは、ストレージ装置600として、第1のストレージ装置(A)601と、第2のストレージ装置(B)602を有し、SAN500を介して、第1のストレージ装置601と情報処理装置200が通信接続される。また、SAN500を介して、第1のストレージ装置601と第2のストレージ装置602が通信接続される。
第1のストレージ装置601は、第1のストレージ制御装置(制御装置)(A)101と、第1のストレージ駆動装置(以下、駆動装置と称する)(A)301とを有して構成される。第2のストレージ装置(B)602は、第2の制御装置(B)102と、第2の駆動装置(B)302とを有して構成される。各制御装置及び駆動装置については、同じ機能としても異なる機能としてもよいが、本例では同じ機能とする。以下、第1、第2のストレージ装置601,602、制御装置101,102、駆動装置301,302を区別しない場合は、それぞれ、ストレージ装置600、制御装置100、駆動装置300と称する。
情報処理装置200は、CPUやメモリを備えたコンピュータ等の機器であり、第1のストレージ装置601に対するデータ入出力のアクセスを行うホストコンピュータである。情報処理装置200は、例えばPC、ワークステーション、サーバ、メインフレームコンピュータといった形態のホストコンピュータである。情報処理装置200は、CPUにより各種プログラムが実行されることにより、ホストコンピュータとしての様々な機能が実現される。情報処理装置200は、第1のストレージ装置601に対するデータ入出力のアクセスを行うためのソフトウェア(管理プログラムと称する)と、第1のストレージ装置601に対するアクセスを利用して情報処理サービスを行うためのアプリケーションプログラム等とを備える。情報処理装置200からの入出力データは、第1のストレージ装置601や第2のストレージ装置602内の記憶ボリューム310に格納される。
制御装置101は、情報処理装置200からデータ入出力要求を受信し、駆動装置301が備える、データを記憶するための第1の記憶ボリューム311に対して、データ入出力処理を行う。制御装置102は、制御装置101と通信可能に接続され、駆動装置302が備える、データを記憶するための第2の記憶ボリューム311に対して、データ入出力処理を行う。第1、第2の記憶ボリューム311,312を区別しない場合は単に記憶ボリュームを310と称する。
記憶ボリューム310は、例えばHDD等の記憶装置30により提供される物理的な記憶領域である物理ボリュームと、物理ボリューム上に論理的に設定される記憶領域である論理ボリュームとを含む、データを記憶するための記憶リソースをいう。以下、論理ボリュームをLU(論理ユニット)とも称する。
制御装置101は、SAN500を介して情報処理装置200に通信接続される。SAN500を介して行われる通信は、例えばファイバチャネル(FC)・プロトコルに従って行われる。情報処理装置200と制御装置601はSAN500上でFCプロトコルに従った通信を行う機能を備えている。情報処理装置200からは、第1のストレージ装置601に対して、FCプロトコルに従ってデータ入出力要求が送信される。
また、制御装置101は、SAN500を介して制御装置102に通信接続される。こちらも同様に、SAN500を介して例えばFC・プロトコルに従って通信が行われる。制御装置601と制御装置602はSAN500上でFCプロトコルに従った通信を行う機能を備えており、制御装置100間で、FCプロトコルに従ってデータ入出力要求が送信される。
SAN500は、例えば、FCプロトコルに準拠した少なくとも1つ以上のスイッチ等の通信機器により構成される。また、FCプロトコルに従って通信が行われる場合には、送受信されるデータは、所定のデータ長(例えば2kb)ごとに1つ以上のデータブロックに分割され、データブロックを単位として通信が制御される。また、情報処理装置200と制御装置101を接続するSAN500は、制御装置101と制御装置102を接続するSAN500と、通信可能に接続された同一ネットワークとしてもよいし、通信可能に接続されていない別ネットワークとしてもよい。また、SAN500及びFCプロトコル以外の通信手段を用いて通信接続してもよい。例えば、情報処理装置200と制御装置101の間の通信は、FICON(Fibre Connection)(登録商標)やESCON(Enterprise System Connection)(登録商標)等のメインフレーム系のプロトコルを用いてもよいし、インターネット等で用いられるTCP/IPなどのプロトコルを用いてもよい。また、複数の異なる通信手段を用いてそれぞれ独立して通信接続してもよい。
第2のストレージ装置602は、第1のストレージ装置601とは遠隔したサイトに設置されるようにすることができる。この場合、第1、第2のストレージ装置601,602の間でリモートコピーの実行が可能な構成とすることにより、災害などで第1のストレージ装置601に記憶されているデータが消失あるいは読み書き不能となった場合でも、第2のストレージ装置602に記憶されているデータを用いて、情報処理装置200による情報処理サービスの提供を継続可能とするようにすることができる。リモートコピーとは、記憶ボリューム310のコピーペアの制御を行って、第1のストレージ装置601に記憶されるデータの複製を、第2のストレージ装置602に記憶すること又はその技術をいう。この場合、第1、第2のストレージ装置601,602に記憶されるデータを一致させておくために、情報処理装置200によって第1のストレージ装置601の記憶ボリューム310に対してデータが書き込まれると、その書き込みデータの複製が第1のストレージ装置601から第2のストレージ装置602へ送信される。そして、第2のストレージ装置602が、前記書き込みデータの複製を駆動装置302内の複製用の記憶ボリューム310に記憶する。前記コピーペアの制御は公知技術である。
また、第1、第2のストレージ装置601,602を通信接続することにより、ストレージ・コンソリデーションを実現可能である。ストレージ・コンソリデーションとは、複数のストレージ装置600に分散して蓄積されている大量のデータを有効に活用するために、各ストレージ装置600にばらばらに記憶されているデータを統合管理する技術である。これにより、例えば、第1のストレージ装置601を新たにシステムに導入する場合に、それまで使用してきた古い第2のストレージ装置602をそのまま使用して、過去からの大量のデータの蓄積を有効に活用できる。また、異なるメーカのストレージ装置600にそれぞれ記憶されているデータを統合管理可能である。この場合、情報処理装置200は、第1のストレージ装置601に対してデータ入出力要求を送信することにより、第1のストレージ装置601のみならず、第2のストレージ装置602に記憶されるデータに対してもアクセス可能となる。
なお、本例に示すストレージシステムは、第1のストレージ装置601と第2のストレージ装置602とを1台ずつ有する構成であるが、それぞれを複数台とした構成も可能である。
駆動装置300は、多数の記憶装置30を備えている。これにより、ストレージ装置600は、情報処理装置200に対して大容量の記憶領域を提供する。駆動装置300は、記憶装置30として例えば複数のディスクドライブにより、ディスクアレイを構成可能である。この場合、情報処理装置200に対して提供される記憶領域は、RAIDにより管理されたディスクアレイ(RAIDグループともいう)により提供されるようにすることが可能である。
各記憶ボリューム310には、それぞれ固有の識別子(LUN(LU番号)とも称する)が付与されている。情報処理装置200から第1のストレージ装置601に対するデータ入出力要求には、データ記憶領域を指定するためのLUNが記述されている。第1のストレージ装置601は、情報処理装置200に対して、LUN指定による記憶領域を提供する機能を備える。
制御装置100と駆動装置300の間は、図2に示すように直接に接続される形態とすることもできるし、ネットワークを介して接続される形態とすることもできる。更に、駆動装置300が制御装置100と一体として構成される形態とすることもできる。
<制御装置>
制御装置100は、チャネル制御部(CHAと略称する)110、共有メモリ(SMと略称する)120、キャッシュメモリ(CMと略称する)130、ディスク制御部(DKAと略称する)140、接続部150、管理端末(SVP)160を備えて構成される。各部は、例えばユニット化された1つ以上の回路基板により実現される。
制御装置100は、チャネル制御部(CHAと略称する)110、共有メモリ(SMと略称する)120、キャッシュメモリ(CMと略称する)130、ディスク制御部(DKAと略称する)140、接続部150、管理端末(SVP)160を備えて構成される。各部は、例えばユニット化された1つ以上の回路基板により実現される。
CHA110は、情報処理装置200や他のストレージ装置600等の他装置との間で通信を行うための通信インタフェースを備え、他装置と制御装置100内の処理部との間でデータ入出力要求やデータを授受する機能を備える。CHA110としては、通信インタフェースに応じたものを1つ以上用意して使用可能である。第1のストレージ装置601に対して、情報処理装置200や第2のストレージ装置602を、他装置700と称する。
DKA140は、駆動装置300が備える記憶ボリューム310に記憶されるデータの読み書きを行う。DKA140は、例えば、CHA110が情報処理装置200から受信したデータ書き込み要求に従って、駆動装置300へデータの書き込みを行う。DKA140としては同機能のものを1つ以上用意して使用可能である。
各CHA110と各DKA140は、管理端末160と共に内部LAN151で接続されている。これにより、各CHA110や各DKA140で実行されるプログラム等を管理端末160から送信してインストール可能となっている。
接続部150は、CHA110、SM120、CM130、DKA140を相互に接続し、例えば高速クロスバースイッチで構成される。CHA110、SM120、CM130、DKA140の間でのデータやコマンドの授受は、接続部150を介して行われる。
SM120とCM130は、CHA110とDKA140により共有して使用されるメモリである。SM120は、主に制御情報やコマンド等を記憶するために使用される。CM130は、主にデータ(情報処理装置200から入出力されるデータを含む)を記憶するために使用される。SM120とCM130は、例えば、データ・情報を記憶するためのメモリが形成された回路基板を備えて構成される。
ストレージ装置600でのデータ入出力処理は例えば以下のような流れになる。或るCHA110が情報処理装置200から受信したデータ入出力要求がデータ書き込み要求であった場合、当該CHA110は、データ書き込み要求をSM120に書き込むと共に、情報処理装置200から受信した書き込みデータをCM130に書き込む。一方、DKA140は、SM120を監視しており、SM120にデータ書き込み要求が書き込まれたことを検出すると、当該データ書き込み要求に従ってCM130から書き込みデータを読み出して、駆動装置300に書き込む。また、或るCHA110が情報処理装置200から受信したデータ入出力要求がデータ読み出し要求であった場合、読み出し対象となるデータがCM130に存在するかどうかを調べる。ここでCM130に前記データが存在する場合、CHA110はそのデータを情報処理装置200に送信する。一方、CM130に前記データが存在しない場合、CHA110はデータ読み出し要求をSM120に書き込むと共に、SM120を監視する。データ読み出し要求がSM120に書き込まれたことを検出したDKA140は、駆動装置300から読み出し対象となるデータを読み出してCM130に書き込むと共に、その旨をSM120に書き込む。そしてCHA110は、読み出し対象となるデータがCM130に書き込まれたことを検出すると、そのデータを情報処理装置200へ送信する。このように、CHA110とDKA140の間では、CM130を介してデータの授受が行われる。なお、CM130とSM120とを一体的に形成された構成とすることもできる。
CM130には、第1の制御装置101と、情報処理装置200または第2の制御装置102の少なくともいずれかとの間で送受信されるデータが記憶される。例えば、第1のストレージ装置601が、情報処理装置200から、第2のストレージ装置602に対するデータ書き込み要求と書き込みデータを受信した場合には、制御装置101のCHA110は、当該データ書き込み要求と書き込みデータを、CM130に記憶し、第2の制御装置102に送信する。そして第2の制御装置102は、受信したデータ書き込み要求に従って書き込みデータを第2の駆動装置302に書き込む。また、第1のストレージ装置601が情報処理装置200から第1の駆動装置301に対するデータ書き込み要求と書き込みデータを受信した場合に、その書き込みデータを第2のストレージ装置602へリモートコピーする場合には、第1の制御装置101のCHA110は、CM130に記憶された書き込みデータを、第2の制御装置102に送信する。そして、第2の制御102は、受信した書き込みデータを第2の駆動装置302に書き込む。
なお、CHA110からDKA140に対するデータの書き込みや読み出しの指示を、SM120を介在させて間接的に行う構成の他、例えばSM120を介在させずに直接的に行う構成とすることもできる。また、CHA110にDKA140の機能を持たせることにより、CHA110が駆動装置300に記憶されたデータの読み書きを行うようにすることもできる。
また、本実施の形態では、SM120とCM130がCHA110とDKA140に対して独立に設けられている構成であるが、これに限らず、SM120またはCM130がCHA110とDKA140の各々に分散されて設けられた構成も好ましい。この場合、接続部150は、分散されたSM120またはCM130を有するCHA110及びDKA140を相互に接続させることになる。
<情報処理装置>
情報処理装置200は、CPU、メモリ、ポート、記録媒体読み取り装置、入力装置、出力装置、記憶装置などを備える。前記CPUが全体の制御を行い、前記メモリに記憶されるプログラムを実行して各種機能を実現する。CPUがアプリケーションプログラムを実行することにより、例えば銀行の自動預金預け払いサービスなどの各種情報処理サービスの提供が行われる。またCPUが管理プログラムを実行することにより、ストレージ装置600で扱う記憶ボリューム310についての管理が行われる。例えば、第1の駆動装置301が備える第1の記憶ボリューム311と、第2の駆動装置302が備える第2の記憶ボリューム311とを対応付け、前記第1の記憶ボリューム311にデータが書き込まれると前記第2の記憶ボリューム311へそのデータの複製が書き込まれるようにするためのコマンドを、制御装置101に送信可能である。また、記憶ボリューム310のLUNの設定なども可能である。
情報処理装置200は、CPU、メモリ、ポート、記録媒体読み取り装置、入力装置、出力装置、記憶装置などを備える。前記CPUが全体の制御を行い、前記メモリに記憶されるプログラムを実行して各種機能を実現する。CPUがアプリケーションプログラムを実行することにより、例えば銀行の自動預金預け払いサービスなどの各種情報処理サービスの提供が行われる。またCPUが管理プログラムを実行することにより、ストレージ装置600で扱う記憶ボリューム310についての管理が行われる。例えば、第1の駆動装置301が備える第1の記憶ボリューム311と、第2の駆動装置302が備える第2の記憶ボリューム311とを対応付け、前記第1の記憶ボリューム311にデータが書き込まれると前記第2の記憶ボリューム311へそのデータの複製が書き込まれるようにするためのコマンドを、制御装置101に送信可能である。また、記憶ボリューム310のLUNの設定なども可能である。
前記記録媒体読み取り装置は、情報処理装置200に内蔵あるいは外付けされ、記録媒体に記録されているプログラムやデータを読み取る。読み取られたプログラムやデータは、前記メモリや前記記憶装置に格納される。例えば、前記記録媒体読み取り装置によって、記録媒体に記録されている管理プログラムやアプリケーションプログラムを読み取り、メモリに格納することができる。また、前記ポートを介して他の情報処理装置200からプログラムを受信してメモリに格納することもできる。記録媒体は、フレキシブルディスク、CD、半導体メモリなどである。前記記憶装置は、例えばHDDや半導体記憶装置である。前記入力装置は、例えばオペレータ等によるデータ入力のためのキーボードやマウス等である。前記出力装置は、例えばデータを外部に出力するためのディスプレイやプリンタ等である。前記ポートは、ストレージ装置600や他の情報処理装置200などと通信を行うためのもので、本例ではSAN500に接続される。これにより制御装置101と通信可能である。なお、FCにおいては、周知技術として、ポートにはSAN500上の機器を特定する識別子であるWWN(World Wide Name)が付与されている。
<管理端末(SVP)>
管理端末160は、ストレージ装置600を保守・管理するためのコンピュータである。管理端末160を操作することにより、例えば駆動装置300が備える物理ディスク構成の設定や、LUの設定、CHA110やDKA140において実行されるプログラムのインストール等が可能である。管理端末160は、制御装置100に内蔵された形態や、外付けされた形態が可能である。また、管理端末160は、制御装置100と駆動装置300の保守・管理を専用に行うコンピュータの形態や、汎用コンピュータに保守・管理機能を持たせた形態などが可能である。管理端末160は、情報処理装置200と同様に、CPU、メモリ、ポート、記録媒体読み取り装置、入力装置、出力装置、記憶装置などを備える。前記CPUが全体の制御を行い、前記メモリに記憶されるプログラムを実行して保守・管理機能を実現する。前記ポートは内部LAN151に接続され、これによりCHA110やDKA140と通信可能である。
管理端末160は、ストレージ装置600を保守・管理するためのコンピュータである。管理端末160を操作することにより、例えば駆動装置300が備える物理ディスク構成の設定や、LUの設定、CHA110やDKA140において実行されるプログラムのインストール等が可能である。管理端末160は、制御装置100に内蔵された形態や、外付けされた形態が可能である。また、管理端末160は、制御装置100と駆動装置300の保守・管理を専用に行うコンピュータの形態や、汎用コンピュータに保守・管理機能を持たせた形態などが可能である。管理端末160は、情報処理装置200と同様に、CPU、メモリ、ポート、記録媒体読み取り装置、入力装置、出力装置、記憶装置などを備える。前記CPUが全体の制御を行い、前記メモリに記憶されるプログラムを実行して保守・管理機能を実現する。前記ポートは内部LAN151に接続され、これによりCHA110やDKA140と通信可能である。
<DKA>
DKA140は、従来の構成に従うものであり、簡単に説明する。DKA140は、インタフェース部、メモリ、CPU、NVRAM(不揮発性RAM)、コネクタ等を備え、これらが、CHA110と同様に一枚もしくは複数枚の回路基板に一体的なユニットとして形成される。前記インタフェース部は、接続部150を介してCHA110等との間で通信を行うための通信インタフェースや、駆動装置300との間で通信を行うための通信インタフェースを備える。前記CPUは、DKA140を構成する回路基板の全体の制御を行うと共に、CHA110や駆動装置300、管理端末160との間の通信を行う。前記CPUにより前記メモリや前記NVRAMに格納された各種プログラムが実行されることにより、DKA140としての機能が実現される。DKA140の機能としては、駆動装置300に記憶されるデータの読み書きの制御や、RAIDグループに対するRAID制御などがある。前記NVRAMは、制御プログラムなどを格納し、管理端末160から書き込みや書き替えが可能である。
DKA140は、従来の構成に従うものであり、簡単に説明する。DKA140は、インタフェース部、メモリ、CPU、NVRAM(不揮発性RAM)、コネクタ等を備え、これらが、CHA110と同様に一枚もしくは複数枚の回路基板に一体的なユニットとして形成される。前記インタフェース部は、接続部150を介してCHA110等との間で通信を行うための通信インタフェースや、駆動装置300との間で通信を行うための通信インタフェースを備える。前記CPUは、DKA140を構成する回路基板の全体の制御を行うと共に、CHA110や駆動装置300、管理端末160との間の通信を行う。前記CPUにより前記メモリや前記NVRAMに格納された各種プログラムが実行されることにより、DKA140としての機能が実現される。DKA140の機能としては、駆動装置300に記憶されるデータの読み書きの制御や、RAIDグループに対するRAID制御などがある。前記NVRAMは、制御プログラムなどを格納し、管理端末160から書き込みや書き替えが可能である。
<データ入出力に係わる構成>
図3は、第1のストレージ装置601と他装置700との間でのデータ入出力に係わる構成の概要を示し、主にデータ転送に係わる処理部とメモリ部についてまとめた図である。1つの論理的な接続パスについて示している。データ入出力として、他装置700から第1のストレージ装置601の記憶ボリューム310に対するデータ書き込みとデータ読み出しがある。データ書き込み処理において、他装置700のメモリを転送元、制御装置100のCM130を転送先としたデータ転送が行われ、データ読み出し処理において、CM130を転送元、他装置700のメモリを転送先としたデータ転送が行われる。記憶ボリューム310はLU等に対応する。
図3は、第1のストレージ装置601と他装置700との間でのデータ入出力に係わる構成の概要を示し、主にデータ転送に係わる処理部とメモリ部についてまとめた図である。1つの論理的な接続パスについて示している。データ入出力として、他装置700から第1のストレージ装置601の記憶ボリューム310に対するデータ書き込みとデータ読み出しがある。データ書き込み処理において、他装置700のメモリを転送元、制御装置100のCM130を転送先としたデータ転送が行われ、データ読み出し処理において、CM130を転送元、他装置700のメモリを転送先としたデータ転送が行われる。記憶ボリューム310はLU等に対応する。
CHA110において、データ入出力を制御するIOCと、データ転送LSI114と通信インタフェース部を有しCM130と他装置700の間のデータ転送を制御するDTCと、メモリ#1(117)とメモリ#3(115)などとを有する。通信インタフェース部は、メモリ#2(113)を有する。CM130と駆動装置300の記憶ボリューム310の間では、DKA140によってデータ転送が行われる。通信インタフェース部と他装置700の間で、SAN500を介してデータ転送が行われる。データ転送LSI114は、少なくとも2つのDMA部#1(800A),#2(800B)を備える。区別しない場合は、DMA部800と称する。データ転送LSI114は、DMA部800によりCM130と通信インタフェース部のメモリ#2(113)との間のDMAデータ転送を制御する。
また、本実施の形態においてデータ転送に係わり使用される複数のメモリ部がある。制御装置100において、CM130を第1のメモリ部、データ転送LSI114が使用するメモリ#1(117)とメモリ#3(115)を第2のメモリ部、通信インタフェース部が使用するメモリ#2(113)を第3のメモリ部と称し、また他装置700のメモリを第4のメモリ部と称することとする。
DTCは、第1のメモリ部と第3のメモリ部との間で、データ転送LSI及び第2のメモリ部を用いて、DMAデータ転送を行う。通信インタフェース部は、第3のメモリ部と第4のメモリ部との間で、通信処理を行う。DKA140は、第1のメモリ部からLUに対するディスクライトやディスクリードを行う。
<第1のCHA>
図4は、CHA110の構成(第1のCHA)の例を示す。CHA110は、回路基板110Aを備えた1つのユニット化されたボードとして構成される。CHA110は、一枚もしくは複数枚の回路基板110Aを含んで構成される。回路基板110Aには、第1のプロセッサ(プロセッサ#1)119、第2のプロセッサ(プロセッサ#2)112、データ転送LSI114、第1のメモリ(メモリ#1)117、第2のメモリ(メモリ#2)113、第1のメモリコントローラ(メモリコントローラ#1)116、第2のメモリコントローラ(メモリコントローラ#2)111、第3のメモリ(メモリ#3)115、及び各コネクタ118が形成されている。
図4は、CHA110の構成(第1のCHA)の例を示す。CHA110は、回路基板110Aを備えた1つのユニット化されたボードとして構成される。CHA110は、一枚もしくは複数枚の回路基板110Aを含んで構成される。回路基板110Aには、第1のプロセッサ(プロセッサ#1)119、第2のプロセッサ(プロセッサ#2)112、データ転送LSI114、第1のメモリ(メモリ#1)117、第2のメモリ(メモリ#2)113、第1のメモリコントローラ(メモリコントローラ#1)116、第2のメモリコントローラ(メモリコントローラ#2)111、第3のメモリ(メモリ#3)115、及び各コネクタ118が形成されている。
プロセッサ#1(119),#2(112)、データ転送LSI114、メモリコントローラ#1(116),#2(111)、メモリ#3(115)は、それぞれ、PCIバスで通信可能に接続されている。なおPCIバスでの接続に限らず、その一部またはすべての接続を他の規格に準拠した構成とすることができる。
回路基板110Aにおいて、大別すると、プロセッサ#1(119)により入出力制御部(IOC)が構成される。また、データ転送LSI114とプロセッサ#2(112)とメモリコントローラ#2(111)とメモリ#2(113)により、データ転送制御部(DTC)が構成される。また、DTCは、メモリコントローラ#1(116)とメモリ#1(117)とメモリ#3(115)とにより構成される第2のメモリ部を有している。プロセッサ#2(112)とメモリコントローラ#2(111)とメモリ#2(113)から成る部分は、他装置700との間での通信を行うための通信インタフェース機能を提供する通信インタフェース部を構成する。通信インタフェース部は、メモリコントローラ#2(111)とメモリ#2(113)で構成される第3のメモリ部を有している。
メモリコントローラ#2(111)と接続されるコネクタ118は、他装置700と通信を行うためのコネクタである。データ転送LSI114と接続されるコネクタ118は、接続部150を介してCM130側と通信を行うためのコネクタである。
IOCは、データ入出力制御のためにメモリ#1(117)に対して読み書きし、DTCを制御する。DTCは、データ転送制御のために第2のメモリ部に対して読み書きし、データ入出力に係わる、CM130とメモリ#2(113)との間でのデータ転送を制御する。通信インタフェース部は、第3のメモリ部を読み書きして他装置700との通信を行う。通信インタフェース部は、例えば、他装置700に送信するデータをFCプロトコルに従ったデータ形式に変換して送信し、他装置700から受信するデータを元の形式に変換する処理を行う。
プロセッサ#1(119)は、メモリ#1(117)に記憶される制御プログラムを実行することにより、CHA110を構成する回路基板110Aの全体の制御を行う。例えば、情報処理装置200から送信されたデータ入出力要求を解析して、その要求が第1の駆動装置301に対するものなのか、第2の駆動装置302に対するものなのか、第1の駆動装置301に対するものである場合にはリモートコピーを行う必要があるのか/ないのか等を判断し、それらに応じて、データ転送LSI114にデータ転送の指示を行う。プロセッサ#1(119)は、データ転送の指示のために、メモリ#1(117)に、CM130と他装置700との間でのデータ転送制御のためのデータ転送情報を、スクリプトの形式で書き込む。
通信インタフェース部において、プロセッサ#2(112)は、メモリ#2(113)に記憶された様々なプログラムを実行することにより、前記通信インタフェース機能を実現するための制御を行う。また、他装置700との間で授受されるデータは、メモリ#2(113)に記憶される。メモリコントローラ#2(111)は、メモリ#2(113)に対する制御を行う。プロセッサ#2(112)は、メモリ#2(113)に記憶される転送データを他装置700に送信し、また他装置700から受信した転送データをメモリ#2(113)に記憶する。通信インタフェース部とコネクタ118から成る部分は、SAN500を構成するFCスイッチのポートに接続されるポートとしても機能する。ポートにはWWNが付与されている。
データ転送LSI114は、プロセッサ#1(119)からの指示により、PCIバスのマスタとして、CM130すなわち第1のメモリ部と、メモリ#2(113)すなわち第3のメモリ部との間のデータ転送を制御する。具体的には、データ転送LSI114は、プロセッサ#1(119)からの指示に従って、メモリ#1(117)に書き込まれているデータ転送情報を読み出して、読み出したデータ転送情報あるいはそれをもとに作成したデータ転送情報に従って、CM130とメモリ#2(113)との間でのデータ転送を制御する。前記データ転送情報は、CM130におけるデータの記憶位置と他装置700におけるデータの記憶位置、すなわち転送元アドレスと転送先アドレスを少なくとも含む情報である。メモリコントローラ#1(116)は、メモリ#1(117)に対する制御を行う。第2のメモリ部において、メモリ#3(115)は、特に、データ転送LSI114がデータ転送情報とデータの退避用の領域として使用する。
<メモリ構成>
図5は、データ転送に係わる各メモリの構成と関連を示す。メモリ#1(117)は、プロセッサ#1(119),#2(112)用のそれぞれのスクリプト領域#1,#2と、図示しない制御プログラムの領域を有する。メモリ#2(113)は、データ領域を有する。CM130は、データ領域を有する。スクリプト領域には、データ入出力制御のためのスクリプトが記憶される。スクリプトをもとにデータ転送情報が構成される。スクリプト領域#1には、「プロセッサ#1用スクリプト(以下、S1と略称する)」が記憶される。スクリプト領域#2には、「プロセッサ#2用スクリプト(以下、S2と略称する)」が記憶される。各データ領域には、スクリプトに対応して処理される転送データである「スクリプトデータ」が記憶される。
図5は、データ転送に係わる各メモリの構成と関連を示す。メモリ#1(117)は、プロセッサ#1(119),#2(112)用のそれぞれのスクリプト領域#1,#2と、図示しない制御プログラムの領域を有する。メモリ#2(113)は、データ領域を有する。CM130は、データ領域を有する。スクリプト領域には、データ入出力制御のためのスクリプトが記憶される。スクリプトをもとにデータ転送情報が構成される。スクリプト領域#1には、「プロセッサ#1用スクリプト(以下、S1と略称する)」が記憶される。スクリプト領域#2には、「プロセッサ#2用スクリプト(以下、S2と略称する)」が記憶される。各データ領域には、スクリプトに対応して処理される転送データである「スクリプトデータ」が記憶される。
メモリ#2(113)のデータ領域には、CM130に転送されるデータ、あるいは、CM130から転送されたデータが記憶される。メモリ#2(113)のデータ領域に記憶される各データの記憶位置や記憶領域サイズ(エリア長)などのデータ転送情報は、各データに対応してP2として、メモリ#1(117)のスクリプト領域#2に記憶される。
前記P2やP1は、「スクリプト識別子」、「領域先頭アドレス」、「エリア長」、「連続フラグ」等の各欄を備える。「スクリプト識別子」は、スクリプトごとに付与されるID番号である。「領域先頭アドレス」は、メモリ#2(113)やCM130におけるデータ領域に記憶されるデータの記憶アドレスを示す。「エリア長」は、データの記憶領域サイズを示す。「連続フラグ」は、データ領域に記憶される複数のデータ(例えば複数のデータブロック)を1つのまとまりとして連続的に転送したい場合に設定されるフラグである。
一方、CM130のデータ領域には、メモリ#2(113)に転送されるデータ、あるいは、メモリ#2(113)から転送されたデータが記憶される。CM130のデータ領域に記憶される各データの記憶位置や記憶領域サイズなどのデータ転送情報は、各データに対応してS1として、メモリ#1(117)のスクリプト領域#1に記憶される。S1は、S2と同様の構成である。
S2、S1は、プロセッサ#1(119)により設定され、それぞれ、メモリ#1(117)のスクリプト領域#2、スクリプト領域#1に書き込まれる。
データ転送LSI114は、メモリ#1に書き込まれたスクリプトをもとに、データ転送情報をレジスタに書き込む。また、CM130やメモリ#2(113)との間で転送するデータをバッファに記憶する。また、データ転送LSI114は、メモリ#3(115)との間で、レジスタのデータ転送情報やバッファのデータを、退避/回復する。
<データ転送LSIの構成>
次に、図6は、データ転送LSI114の構成と他処理部との接続構成を示す。データ転送LSI114は、前記各スクリプト(S1,S2)に基づいて、CM130とメモリ#2(113)との間のデータ転送を制御する。本実施の形態に係わるデータ転送LSI114は、少なくとも2つのDMA部800である、第1のDMA部(DMA部#1)800Aと第2のDMA部(DMA部#2)800Bを備える。
次に、図6は、データ転送LSI114の構成と他処理部との接続構成を示す。データ転送LSI114は、前記各スクリプト(S1,S2)に基づいて、CM130とメモリ#2(113)との間のデータ転送を制御する。本実施の形態に係わるデータ転送LSI114は、少なくとも2つのDMA部800である、第1のDMA部(DMA部#1)800Aと第2のDMA部(DMA部#2)800Bを備える。
データ転送LSI114は、例えばPCIインタフェースによって、DMA部800と、他の各部、すなわちプロセッサ#2(112)、プロセッサ#1(119)、メモリ#3(115)、CM130等とが接続される。PCIインタフェースは、PCIバスを介して各部と通信を行うためのインタフェースである。本図6では、論理的な構成を示しており、2つのDMA部800が各プロセッサ112,119に対して接続されるものとして示している。
データ転送LSI114は、或るデータ転送の制御にあたり、2つのDMA部{801,802}のいずれで制御させるかを決定する。例えばプロセッサ#1(119)と2つのDMA部800との間で、或るデータについての転送処理をいずれのDMA部800で処理させるかが決定される。
DMA部800は、DMA制御部(DMAC)801と、レジスタ807と、転送データバッファ(バッファ)810とから成り、DMA部800が二重化された形態である。すなわち、データ転送LSI114は、第1のDMAC(DMAC#1)801Aと、第1のレジスタ(レジスタ#1)807Aと、第1のバッファ(バッファ#1)810Aと、第2のDMAC(DMAC#2)801Bと、第2のレジスタ(レジスタ#2)807Bと、第2のバッファ(バッファ#2)810Bとを有する。二重化されている各部は機能的に同等であるものとする。
DMAC801は、DMA部800におけるDMAデータ転送処理を制御する論理を含む回路である。DMAC801は、ハードウェアのみでの構成でもよいし、ハードウェアとソフトウェアの組み合わせでの構成でもよい。レジスタ807は、スクリプトに基づいたデータ転送情報が格納される。バッファ810は、転送データが格納される。データ転送LSI114では、2系統のDMA部800を利用して、2つのデータ転送を同時並行的に実行可能である。またこれに伴って後述する退避/回復処理を行うことで、複数のデータ転送を切り替えながら多重に実行可能である。
DMAC801は、例えば、メモリ#1(117)に記憶された前記スクリプトについて、レジスタ807へのデータ転送情報の読み込みや、読み込んだデータ転送情報に基づいてバッファ810を介して行うデータ転送の制御や、データ転送終了ステータスの出力などを行う。またDMAC801は、メモリ#3(115)に対する制御を行う。従って、DMAC801により、レジスタ807に記憶されるデータ転送情報やバッファ810に記憶されるデータを、メモリ#3(115)の制御領域に書き出すこと(退避とも称する)、あるいは逆に、メモリ#3(115)の制御領域から、退避しておいたデータ転送情報やデータをレジスタ807やバッファ810に読み込むこと(回復とも称する)が可能となっている。DMA部800Aのデータ転送情報やデータは、メモリ#3(115)の制御領域#1に対して退避/回復される。DMA部800Bのデータ転送情報やデータは、メモリ#3(115)の制御領域#2に対して退避/回復される。なおメモリ#3(115)に退避される情報は、スクリプト形式でもよいし、その一部のデータ転送情報(パラメータ)でもよい。
また拡張形態として、データ転送LSI114で、2つのDMA部800を備えた部分を更に複数備えた構成としてもよい。また、DMA部800とCM130との接続バスを、通信インタフェース部側との接続バスよりも多重の構成としてもよい。例えば、バッファ810とメモリコントローラ#2(111)との間の通信路が、バッファ#1(810A)とバッファ#2(810B)とで共用され、バッファ810とCM130との間の通信路が、バッファ#1(810A)とバッファ#2(810B)とで個別に設けられた構成としてもよい。これは、メモリコントローラ#2(111)側との通信は同一回路基板上のため比較的高速となるのに対し、CM130側との通信は、異なる回路基板を介するために比較的低速になるためである。
<レジスタ構成>
図7は、DMA部800内のレジスタ807の詳細構成例を示す。レジスタ807は、転送起動レジスタ803、転送レジスタ804、初期設定レジスタ805、スクリプトレジスタ806を有する。
図7は、DMA部800内のレジスタ807の詳細構成例を示す。レジスタ807は、転送起動レジスタ803、転送レジスタ804、初期設定レジスタ805、スクリプトレジスタ806を有する。
転送起動レジスタ803は、「要求転送長」、「転送方向」、「プロセッサ#2開始スクリプト番号」、「プロセッサ#1開始スクリプト番号」の各レジスタを備える。
「要求転送長」レジスタは、CM130と他装置700との間で転送されるデータの総データ長が記憶される。「要求転送長」は、情報処理装置200から受信したデータ入出力要求に基づいて決定される。例えば8kbサイズのデータ書き込み要求を受信した場合には、8kbを示す情報が記憶される。
「転送方向」レジスタは、他装置700からCM130への方向のデータ転送か、CM130から他装置700への方向のデータ転送かを示す情報が記憶される。「転送方向」は、プロセッサ#1(119)が情報処理装置200から受信したデータ入出力要求に基づいて決定される。例えば、プロセッサ#1(119)が、情報処理装置200から、第1の駆動装置301へのデータ書き込み要求を受信した場合には、「転送方向」は、メモリコントローラ#2(111)からCM130への方向となる。またプロセッサ#1(119)が、情報処理装置200から、第1の駆動装置301に記憶されているデータのデータ読み出し要求を受信した場合は、「転送方向」は、CM130からメモリコントローラ#2(111)への方向となる。また、第2の制御装置102から第1の制御装置101へとデータを受信する場合には、「転送方向」は、メモリコントローラ#2(111)からCM130への方向となる。
前記「要求転送長」や「転送方向」は、プロセッサ#1(119)がDMA部800にデータの転送を開始させる際に、プロセッサ#1(119)によりDMA部800の転送起動レジスタ803に書き込まれる。
「プロセッサ#2−開始スクリプト番号」レジスタは、メモリ#1(117)に記憶されたP2の識別子が記憶される。DMAC801は、本レジスタが示すP2をメモリ#1(117)から読み出して、データの転送を開始する。「プロセッサ#2−開始スクリプト番号」は、プロセッサ#1(119)がDMA部800にデータの転送を開始させる際に、プロセッサ#1(119)により転送起動レジスタ803に書き込まれる。あるいは、P2に前記連続フラグが設定されている場合は、DMAC801により、「プロセッサ#2−開始スクリプト番号」が更新される。
「プロセッサ#1−開始スクリプト番号」レジスタは、メモリ#1(117)に記憶されたP1の識別子が記憶されるもので、役割は「プロセッサ#2−開始スクリプト番号」レジスタと同様である。
転送レジスタ804は、「転送単位」、「転送元アドレス」、「転送先アドレス」、「残転送長」の各レジスタを備える。
「転送単位」レジスタは、1回のデータ転送におけるデータ転送長が記憶される。1回のデータ転送におけるデータ転送長は、DMAC801により算出される。
「転送元アドレス」レジスタは、転送前のデータの記憶位置を示す。また「転送先アドレス」レジスタは、転送後のデータの記憶位置を示す。「転送元アドレス」や「転送先アドレス」は、CM130または情報処理装置200または第2のストレージ装置602におけるデータの記憶位置である。「転送元アドレス」や「転送先アドレス」は、「転送方向」と、P1あるいはP2の記載に基づいて決定される。データ転送中は、転送の進捗と共にDMAC801によって本レジスタの値が適宜インクリメントあるいはデクリメントされる。
「残転送長」レジスタは、「要求転送長」から、転送済みのデータ転送長を減じた値を示す。「残転送長」は、データ転送の進捗と共に、DMAC801によって適宜更新される。
初期設定レジスタ805は、「プロセッサ#2−スクリプト領域先頭アドレス」、「プロセッサ#2−スクリプト数」、「プロセッサ#2−スクリプトサイズ」、「プロセッサ#1−スクリプト領域先頭アドレス」、「プロセッサ#1−スクリプト数」、「プロセッサ#1−スクリプトサイズ」の各レジスタを備える。本レジスタのこれらの設定値は、例えばCHA110のパワーオンリセット時に、DMAC801によりCHA110が備える図示しないNVRAMから読み込まれるようにすることができる。
「プロセッサ#2−スクリプト領域先頭アドレス」レジスタは、メモリ#1(117)におけるスクリプトレジスタの先頭アドレスを示す。つまり、P2#0が記憶されるアドレスを示す。
「プロセッサ#2−スクリプト数」レジスタは、P2の数を示す。
「プロセッサ#2−スクリプトサイズ」レジスタは、P2のサイズを示す。P2のサイズを固定とすることにより、P2の識別子を特定することによって、スクリプト領域の先頭アドレスを基準とした、目的のP2の記憶アドレスを算出できる。
「プロセッサ#1−スクリプト領域先頭アドレス」、「プロセッサ#1−スクリプト数」、「プロセッサ#1−スクリプトサイズ」の各レジスタは、プロセッサ#1用の情報が記憶されるもので、役割は前記プロセッサ#2用の各レジスタと同様である。
スクリプトレジスタ806は、「プロセッサ#2−実行スクリプト番号」、「プロセッサ#2−有効エリア長」、「プロセッサ#1−実行スクリプト番号」、「プロセッサ#1−有効エリア長」の各レジスタを備える。
「プロセッサ#2−実行スクリプト番号」レジスタは、現在実行中のP2の識別子を示す。「プロセッサ#2−実行スクリプト番号」は、DMAC801によって設定される。
「プロセッサ#2−有効エリア長」レジスタは、P2における前記エリア長の欄に記載されたエリア長から、転送済みのデータサイズを減じた値である。この値は、データ転送の進捗と共にDMAC801によって適宜デクリメントされる。
「プロセッサ#1−実行スクリプト番号」、「プロセッサ#1−有効エリア長」の各レジスタは、プロセッサ#1用の情報が記憶されるもので、役割は前記プロセッサ#2用の各レジスタと同様である。
バッファ810は、CM130とメモリ#2(113)との間でデータを転送する際に転送データが記憶される。すなわち、DMAC801は、CM130とメモリ#2(113)との間でデータを転送する際には、バッファ810を介してストア・アンド・フォワード方式で転送を行う。例えば、CM130からメモリ#2(113)へデータを転送する場合は、DMAC801は、CM130から読み出したデータをバッファ810に一旦書き込み、そして転送のタイミングでバッファ810からデータを読み出してメモリ#2(113)に書き込む。
<データ入出力処理>
次に、前記図2に示すストレージシステムにおけるデータ入出力処理の全体について説明する。情報処理装置200からデータ入出力要求が送信されると、プロセッサ#1(119)は、受信されたデータ入出力要求を解析して、その要求での入出力先となる駆動装置300やリモートコピーの必要性などを判断する。そして、プロセッサ#1(119)は、その判断に応じて、データ転送LSI114に対し、前記スクリプトを介して、データ転送の指示を行う。その判断は、SM120に記憶されるペア管理テーブル及び構成情報管理テーブルを参照することにより行われる。ペア管理及び構成情報管理は周知技術である。
次に、前記図2に示すストレージシステムにおけるデータ入出力処理の全体について説明する。情報処理装置200からデータ入出力要求が送信されると、プロセッサ#1(119)は、受信されたデータ入出力要求を解析して、その要求での入出力先となる駆動装置300やリモートコピーの必要性などを判断する。そして、プロセッサ#1(119)は、その判断に応じて、データ転送LSI114に対し、前記スクリプトを介して、データ転送の指示を行う。その判断は、SM120に記憶されるペア管理テーブル及び構成情報管理テーブルを参照することにより行われる。ペア管理及び構成情報管理は周知技術である。
構成情報管理テーブルは、第1のストレージ装置601が、情報処理装置200に対して、第2のストレージ装置602の記憶ボリューム310を第1のストレージ装置601の記憶ボリューム310として提供する機能を可能にする管理情報である。構成情報管理テーブルには、第1、第2のストレージ装置601,602が備える各記憶ボリューム310についての情報が記述されている。構成情報管理テーブルは、ポートID、WWN、LUN、容量、マッピングLUNといった欄を有する。ポートIDの欄は、記憶ボリューム310に対応付けられるCHA110のポートIDが記述される。WWNの欄は、ポートIDに対応するWWNが記述される。LUNの欄は、各記憶ボリューム310に対応するLUNが記述される。容量の欄は、各記憶ボリュームにより提供される記憶容量が記述される。マッピングLUNの欄には、ポートID及びLUNに対応付けられている第2のストレージ装置602が備える記憶ボリューム310のLUNが記述される。
第1のストレージ装置601は、構成情報管理テーブルを用いて、第2のストレージ装置602の記憶ボリューム310を、第1のストレージ装置601の記憶ボリューム310であるかのように、すなわち仮想的な記憶ボリュームとして提供可能である。つまり、情報処理装置200は、第2のストレージ装置602の記憶ボリューム310に対するデータ入出力要求を、第1のストレージ装置601に対して行ってデータ読み書きが可能である。第1のストレージ装置601は、情報処理装置200から前記仮想的な記憶ボリュームに対するデータ入出力要求を受信すると、第2のストレージ装置602との間でデータ転送を行って、仮想的な記憶ボリュームに対応する実記憶ボリュームにアクセスする。
次に、情報処理装置200から第1のストレージ装置601に対して、第1のストレージ装置601の記憶ボリューム311もしくは第2のストレージ装置602の記憶ボリューム312に対するデータ入出力要求が行われた場合の処理について説明する。
情報処理装置200から発行されるデータ入出力要求は、一例として、ホストID、ポートID、LUN、アドレス、データ長といった情報を有する形式である。ホストIDは、そのデータ入出力要求を送信した情報処理装置200の識別子であり、例えば情報処理装置200のポートのWWNが記述される。ポートIDは、そのデータ入出力要求の対象となる記憶ボリューム310に対応付けられているCHA110のポートIDである。LUNは、そのデータ入出力要求の対象となる記憶ボリューム310のLUNである。アドレスは、データ入出力対象データの記憶アドレスである。データ長は、データ入出力対象データのデータ長である。
情報処理装置200から送信されたデータ入出力要求が、第2のストレージ装置602の記憶ボリューム312へのデータ書き込み要求であった場合を例に説明する。まず、第1のストレージ装置601で制御装置101のCHA110でデータ書き込み要求が受信される。プロセッサ#1(119)は、このデータ書き込み要求と共に受信した書き込みデータを、CM130に記憶する処理を行う。
次に、プロセッサ#1(119)は、構成情報管理テーブルを参照し、このデータ書き込み要求を実行可能かどうか判断する。ここで、実行不可能な場合とは、例えば、データ書き込み要求の処理対象となる記憶ボリューム310が存在しない、あるいは存在しても書き込みデータのサイズが記憶ボリューム310の容量を超えている等の場合である。このようにデータ入出力要求を実行できない場合は、情報処理装置200に対してその旨のメッセージを送信して当該データ入出力要求に対応する処理を終了する。
一方、前記データ書き込み要求を実行可能な場合は、プロセッサ#1(119)は、第2のストレージ装置602に対し、データ書き込み要求と書き込みデータを送信する。この送信は、まず、プロセッサ#1(119)がデータ転送のためのスクリプトをメモリ#1(117)に書き込み、次に、データ転送LSI114が、メモリ#1(117)からレジスタ807に前記スクリプトを読み出し、読み出したスクリプトに基づいたデータ転送情報に従ってメモリ#1(117)と第2の制御装置102との間のデータ転送を制御することにより行われる。そして、第2のストレージ装置602は、このデータ書き込み要求を受信して、書き込みデータを第2の駆動装置302の記憶ボリューム312に書き込む。データ読み出しの場合も同様である。
なお、第1のストレージ装置601から第2のストレージ装置602へ送信されるデータ書き込み要求は、情報処理装置200から受信するデータ書き込み要求と同一プロトコルに従ったものであり、例えばそのデータ形式が同一である。従って、第2のストレージ装置602が第1のストレージ装置601に対して記憶ボリューム310を提供する装置として機能するように運用される場合は、第2のストレージ装置602の構成や仕様について特に変更などを行う必要がなく第2のストレージ装置602の有効利用が可能となる。
次に、ペア管理テーブルについて説明する。ペア管理テーブルは、「ペア種類」、「複製方式」、「複製元装置」、「複製先装置」、「複製元ボリューム」、「複製先ボリューム」、「ペア状態」といった欄を有する。
ペアとは2つの記憶ボリューム310により形成される組み合わせをいう。またペアを形成する2つの記憶ボリューム310が同一のストレージ装置600にある場合を「ローカルペア」、異なるストレージ装置600にある場合を「リモートペア」と表現する。ペアを形成する記憶ボリューム310は、一方を「主記憶ボリューム」、他方を「副記憶ボリューム」として管理される。1つの主記憶ボリュームに対して複数の副記憶ボリュームを組み合わせことも可能である。
情報処理装置200が、データの複製元となる第1のストレージ装置601にリモートペアの形成を指示すると、ストレージ装置601は、SM120のペア管理テーブルを更新する。その後、ストレージ装置601は、データの複製先となる第2のストレージ装置602に、リモートペアの形成を指示する。そして第2のストレージ装置602は、ストレージ装置602内のSM120のペア管理テーブルを更新する。
ペア管理テーブルの「ペア種類」欄は、当該ペアがローカルペアであるかリモートペアであるかを示す。「複製方式」欄は、当該ペアがリモートペアである場合に、リモートコピーの方式が同期方式か非同期方式かを示す。「複製元装置」欄と「複製先装置」欄は、当該ペアがリモートペアである場合に、それぞれ複製元と複製先のストレージ装置600を示す。「複製元ボリューム」欄は、当該ペアの主記憶ボリュームのLUNを、「複製先ボリューム」欄は、当該ペアの副記憶ボリュームのLUNを示す。
「ペア状態」欄は、当該ペアの状態を示す。状態としては、「ペア中」、「スプリット中」、「リシンク中」といったものがある。「ペア中」状態は、情報処理装置200から主記憶ボリュームに書き込まれたデータの複製が、副記憶ボリュームにも反映される。主記憶ボリュームと副記憶ボリュームとの対応付けにより、主記憶ボリュームに記憶されている内容と副記憶ボリュームに記憶されている内容との同一性を確保できる。「スプリット中」状態は、情報処理装置200から主記憶ボリュームにデータが書き込まれても副記憶ボリュームには反映されない。「リシンク中」状態は、「スプリット中」から「ペア中」の状態へ移行する途中の状態である。すなわち、「スプリット中」に主記憶ボリュームになされたデータの更新を、副記憶ボリュームに反映している状態である。反映の完了により「ペア中」状態となる。
前記ペアの形成、ペアのスプリット、ペアのリシンクは、管理プログラムが実行されている情報処理装置200に対して入力装置からオペレータが指示入力を与えることにより実行可能とすることができる。前記指示入力はストレージ装置600のCHA110に送信され、CHA110は、制御プログラムを実行して、前記指示に従って、ペアの形成やペア状態の変更等を行う。CHA110は、形成したペアのペア状態に応じて、例えば、「ペア中」状態の主記憶ボリューム(311)に対するデータ書き込み要求を受信した場合は、書き込みデータの複製を、第2のストレージ装置602に送信して副記憶ボリューム(312)に反映させる。
具体的には、まず第1のストレージ装置601は、情報処理装置200から、データ記憶要求を受信すると、プロセッサ#1(119)は、このデータ書き込み要求と共に受信した書き込みデータを、CM130に記憶する。そしてプロセッサ#1(119)は、DKA140に対して、第1の記憶ボリューム(主記憶ボリューム)311へのデータの書き込みを指示すると共に、ペア管理テーブルを参照して、データの複製が書き込まれる第2の記憶ボリューム(副記憶ボリューム)312を特定する。そしてプロセッサ#1(119)は、書き込みデータの複製を、記憶ボリューム312にも書き込むべく、データ転送制御のためのスクリプトをメモリ#1(117)に書き込み、次にデータ転送LSI114が、メモリ#1(117)から読み出したスクリプトに基づいて第2の制御装置102への書き込みデータの送信を制御することにより行われる。そして第2のストレージ装置602は、データ書き込み要求を受信して、書き込みデータを記憶ボリューム312に書き込む。
このように、ストレージシステムにおいて、第1のストレージ装置601が情報処理装置200から受信したデータ入出力要求に応じて、第1のストレージ装置601と第2のストレージ装置602との間でデータ転送が行われる。このデータ転送は、前記プロセッサ#1(119)を含むIOC、データ転送LSI114を含むDTCにより行われるが、従来構成では、第1、第2のストレージ装置601,602の間で第1のデータ転送が行われている間は、第2のデータ転送は、前記第1のデータ転送が終了するまで実行されることはない。例えば、或る系列のデータAについての1つ以上のデータブロックの転送が行われている間は、それが終了するまで、他の系列のデータBについての1つ以上のデータブロックの転送が実行されることはない。すなわち従来構成では、DTCで複数のデータ転送を多重に実行可能には構成されていなかった。
図8は、従来構成における複数のデータ入出力の処理例を示すシーケンス図である。特にデータ読み出し処理の場合を示す。なお、1つのリードコマンドに対応した応答処理で複数のリードデータが送受信されることを示しているが、これはデータ転送がデータブロック単位に制御されることに対応している。まず、情報処理装置200から第1のストレージ装置(A)601に対してリードコマンド#1が発行・送信される(S1000)。第1のストレージ装置601から第2のストレージ装置(B)602に対して対応したリードコマンド#1が発行・送信される(S1001)。第2のストレージ装置602は、受信したリードコマンド#1に応じたリードデータ#1応答処理を行う(S1002)。この応答処理によって、リードデータ#1が第1のストレージ装置601に送信される(S1002)。そして、第1のストレージ装置601から情報処理装置200に対してリードデータ#1が送信される。転送処理#1は、リードコマンド#1に対応した処理を示している。また、情報処理装置200からリードコマンド#2が発行され、転送処理#1と同様に転送処理#2が行われる(S1005〜S1009)。従来構成では、ストレージ装置601のDTCでのデータ転送の多重処理が不可能なので、転送処理#1,#2が順次に処理される。
一方、図9(a),(b)は、ストレージ装置600での複数のデータ入出力の処理例を示すシーケンス図である。第1の制御装置101では、DTCで、転送処理#1が終了するまで待つことなく、第1と第2の転送処理#1,#2を多重に実行できる。情報処理装置200からのリードコマンド#1の発行に応じて第2のストレージ装置602へリードコマンド#1が送信され、第2のストレージ装置602でリードデータ#1応答処理が行われる。第1のストレージ装置601では、第2のストレージ装置602からのリードデータ#1の受信が開始される前に、情報処理装置200から次のリードコマンド#2を受信した場合に、リードコマンド#2を第2のストレージ装置602に送信することができる。
図9(a)に示す処理例では、第1のストレージ装置601で第2のストレージ装置602からリードデータ#1を受信する前にリードコマンド#2を第2のストレージ装置602に送信し(S2003)、第2のストレージ装置602からリードデータ#1の受信(S2006)が終了した後に、リードデータ#2の受信(S2007)が行われる場合である。
図9(b)に示す処理例は、第1のストレージ装置601で第2のストレージ装置602からリードデータ#1を受信する前にリードコマンド#2を第2のストレージ装置602に送信し(S3003)、第2のストレージ装置602からリードデータ#1の受信(S3006及びS3008)が終了する前に、リードデータ#2の受信(S3007)が行われる場合である。
第1のストレージ装置601のデータ転送LSI114において、2つのDMA部800を利用して退避/回復の制御も行いながら、前記転送処理#1,#2を多重に制御可能である。すなわち、DMA部800でリードデータ#1についての第1のデータ転送を開始して、その処理途中においてリードデータ#2についての第2のデータ転送を開始可能であり、また第2のデータ転送の処理途中で第1のデータ転送を再開して処理可能である。
<データ転送のフロー>
次に、図10は、ストレージ装置600のCHA110(第1のCHA)でのデータ転送処理を示すフロー図である。プロセッサ#2(112)、プロセッサ#1(119)、データ転送LSI114の各部間での処理の関係を示している。まず、第1の制御装置101が、情報処理装置200からデータ入出力要求を受信すると、プロセッサ#2(112)は、メモリ#2(113)にデータ領域を確保する(S4000)。データ領域の確保とは、情報処理装置200から送信されたデータ入出力要求が書き込み要求の場合は、書き込みデータをメモリ#2(113)に記憶することであり、また読み出し要求の場合は、読み出しデータを記憶するための記憶領域をメモリ#2(113)に確保することである。ここで確保されるデータ領域は1つとは限らない。メモリ#2(113)におけるデータの記憶可能領域の分布状況などによっては、1つのデータ入出力要求に係わるデータを複数に分割してメモリ#2(113)に記憶する場合もあるからである。
次に、図10は、ストレージ装置600のCHA110(第1のCHA)でのデータ転送処理を示すフロー図である。プロセッサ#2(112)、プロセッサ#1(119)、データ転送LSI114の各部間での処理の関係を示している。まず、第1の制御装置101が、情報処理装置200からデータ入出力要求を受信すると、プロセッサ#2(112)は、メモリ#2(113)にデータ領域を確保する(S4000)。データ領域の確保とは、情報処理装置200から送信されたデータ入出力要求が書き込み要求の場合は、書き込みデータをメモリ#2(113)に記憶することであり、また読み出し要求の場合は、読み出しデータを記憶するための記憶領域をメモリ#2(113)に確保することである。ここで確保されるデータ領域は1つとは限らない。メモリ#2(113)におけるデータの記憶可能領域の分布状況などによっては、1つのデータ入出力要求に係わるデータを複数に分割してメモリ#2(113)に記憶する場合もあるからである。
続いて、プロセッサ#2(112)は、情報処理装置200から受信したデータ入出力要求とメモリ#2(113)に確保したデータ領域に関する情報とを、データ転送要求として、プロセッサ#1(119)に送信する(S4001)。本データ転送要求において領域先頭アドレスが通知される。
そうするとプロセッサ#1(119)は、プロセッサ#2(112)から送信されたデータ入出力要求を解析する(S4002)。これにより、プロセッサ#1(119)は、要求転送長と転送方向とを認識し、また領域先頭アドレスが認識する。続いて、プロセッサ#18119)は、要求転送長で指定されたサイズのデータ領域を、CM130に確保する(S4003)。ここでもCM130における状況などによっては、複数のデータ領域が確保される場合がある。そしてプロセッサ#1(119)は、CM130に確保した各データ領域に対応して、P1を作成する。同様に、プロセッサ#2(112)から送信されたデータ転送要求から、メモリ#2(113)に確保された各データ領域に対応したP2を作成する(S4004)。複数のデータ領域が確保された場合には、各P1及びP2を一まとまりで管理するために、前記連続フラグが設定される。これにより、CM130におけるデータ記憶位置情報を含むP1と、他装置700におけるデータ記憶位置情報を含むP2とが、メモリ#1(117)に書き込まれる。
その後、プロセッサ#1(119)は、データ転送LSI114が備えるDMA部800内のレジスタ807に、要求転送長、転送方向、P2の識別子、及びP1の識別子を含む転送起動情報を送信し、転送起動レジスタ803にこれら情報を書き込む。これにより、プロセッサ#1(119)はデータ転送LSI114を起動する(S4005)。転送起動情報によりデータ転送LSI114がいずれかのDMA部800を起動し、DMA部800がDMA転送処理(S4006)を開始する。
DMA転送処理において、まず、DMAC801は、転送起動情報に基づいて、プロセッサ#1(119)からの転送起動情報に記載されたP1の識別子とP2の識別子とにより、メモリ#1(117)からP1とP2とをそれぞれ取得する。スクリプトの取得において、まずDMAC801は、転送起動情報に基づいて、プロセッサ#1(119)から送信された転送起動情報に記載されたP1の識別子と、初期設定レジスタ805に記憶されたプロセッサ#1−スクリプトサイズとから、メモリ#1(117)におけるP1の記憶アドレスを算出する。P1の記憶アドレスが算出できたら、続いて、メモリ#1(117)のその記憶アドレスからP1を読み出す。ここで、DMAC801は、P1に記載された領域先頭アドレスを、転送方向に応じて転送レジスタ804の転送先アドレスまたは転送元アドレスの欄に記載する。そして、スクリプトレジスタ806のプロセッサ#1−実行スクリプト番号、プロセッサ#1−有効エリア長の欄に、それぞれP1に記載されたスクリプト識別子、エリア長欄に記載されたエリア長を書き込む。またこのようなP1についての処理と同様に、DMAC801は、転送起動情報に基づいて、P2についての処理を行う。
続いて、DMAC801は、転送単位を決定する。転送単位の決定において、まずDMAC801は、転送レジスタ804の残転送長の欄に、残転送長を書き込む。転送開始時は、要求転送長を書き込む。そして、プロセッサ#1(119)の有効エリア長とプロセッサ#2(112)の有効エリア長と、残転送長のうちの最小のものを、転送単位とする。そして、DMAC801は、転送レジスタ804に記憶された転送元アドレスに記憶されたデータを、転送先アドレスに、転送単位のデータサイズだけ転送する。転送はバッファ810を介して行われる。
転送実行中は、転送レジスタ804の転送元アドレス、転送先アドレス、及び残転送長が順次更新されると共に、スクリプトレジスタ806のプロセッサ#2−有効エリア長及びプロセッサ#1−有効エリア長が、順次、転送済みデータのサイズの分ずつ減少される。
スクリプトレジスタ806のプロセッサ#2−有効エリア長及びプロセッサ#1−有効エリア長、または残転送長のいずれかの値が0になったら、DMAC801は、転送終了判定処理を行う。転送終了判定処理において、まずDMAC801は、転送レジスタ804の残転送長を確認する。残転送長が0の場合は、要求転送長に対応した全データの転送が完了しているので、処理を終了する。一方、残転送長が0でない場合は、プロセッサ#1−有効エリア長あるいはプロセッサ#2−有効エリア長の少なくともいずれか一方が0である。この場合、有効エリア長が0となった方のスクリプトには、連続フラグで連結された、次に実行すべきスクリプトが存在する。従って、次に実行すべきスクリプトがP1であるかP2であるかを決定する。
次に実行すべきスクリプトの決定の処理において、まずDMAC801は、スクリプトレジスタ806のプロセッサ#1−有効エリア長が0であるか否かを確認する。0であればプロセッサ#1−開始スクリプト番号を更新(インクリメント)する。0でなければ、続いて、スクリプトレジスタ806のプロセッサ#2−有効エリア長が0であるか否かを確認する。0であればプロセッサ#2−開始スクリプト番号を更新(インクリメント)する。0でなければ終了する。
続いて、DMAC801は、前記スクリプト取得の処理を再び実行する。この際、DMAC801は、前記処理で更新された転送起動レジスタ803のプロセッサ#1−開始スクリプト番号またはプロセッサ#2−開始スクリプト番号を指定されるスクリプトを読み出す。そして、DMAC801は、新たに読み出したスクリプトに従ってDMA転送を行う。
最終的に、前記転送終了判定処理における転送レジスタ804の残転送長が0になったら、DMAC801は転送処理を終了する。そして、DMAC801は、転送処理の結果が記載された終了ステータスをメモリ#1(117)に書き込み(S4007)、プロセッサ#1(119)に対し終了通知を行う(S4008)。この終了通知は、例えば割り込み信号の送信により行うことができる。
プロセッサ#1(119)は、メモリ#1(117)から終了ステータスを読み出し、その内容に応じた処理を実行する(S4009)。そして、プロセッサ#1(119)は、プロセッサ#2(112)に終了通知を送信する(S4010)。プロセッサ#2(112)は、終了通知を受信すると、データ入出力要求に応じた処理を行う。データ入出力要求がデータ読み出し要求であった場合には、メモリ#2(113)のデータ領域に転送された読み出しデータを読み出して、情報処理装置200に送信することができる。またデータ入出力要求が書き込み要求であった場合には、書き込み終了報告を情報処理装置200に送信する。
ここで、前記したように、DMA部800は、DMAデータ転送処理に伴って、メモリ#3(115)の制御が可能である。従って、DMA部800は、必要に応じて、レジスタ807に記憶されるデータ転送情報とバッファ810に記憶されているデータとを、メモリ#3(115)の制御領域へ書き出したり(退避)、メモリ#3(115)の制御領域から読み出したり(回復)することができる。
前記図6に示すように、DMA部800内のメモリと、メモリ#3(115)との間で、データ転送情報及びデータについての退避/回復がDMAC801の制御により行われる。レジスタ807上のデータ転送情報あるいはその一部であるパラメータは、前記スクリプトに対応している。バッファ810上のデータは、前記スクリプトデータに対応している。メモリ#3(115)に、2つのDMA部800と対応して、それぞれのスクリプトとスクリプトデータを保持する制御領域#1,#2が確保されている。退避動作において、例えばDMA部#1(800A)のレジスタ#1(807A)に記憶されているデータ転送情報あるいはパラメータが、メモリ#3(115)の制御領域#1のスクリプト#0の領域へ書き出される。また、バッファ#1(810A)に記憶されているデータが、メモリ#3(115)の制御領域#1のスクリプト#0データの領域へ書き出される。また、回復動作の場合も、例えばメモリ#3(115)の制御領域#1から、スクリプトやスクリプトデータが、DMA部800内のメモリへ読み出される。
CHA110では、退避/回復の制御を行うことにより、1つのDMA部800で第1のデータ転送情報に基づく第1のデータ転送を制御している途中で、第2のデータ転送情報に基づく第2のデータ転送を制御可能である。つまり、DMA部800においてレジスタ807に記憶されている第1のデータ転送情報とバッファ810に記憶されているデータ(例えばデータAを構成するデータブロック)とをメモリ#3(115)に退避して、メモリ#3(115)からレジスタ807に第2のデータ転送情報とバッファ810に転送処理中のデータとを回復することにより制御可能である。
また、メモリ#3(115)に退避されるデータ転送情報及びデータは、1つのスクリプトに対応したものに限られず、複数とすることが可能である。従って、メモリ#3(115)への退避/回復を用いることにより、データ転送LSI114で複数のデータ転送を多重に処理可能である。
メモリ#3(115)の制御領域には、1つのデータ転送に対応したパラメータとして、例えば、転送元アドレスと転送先アドレス、転送長、転送コマンド、制御情報、チェックコードといった情報が退避される。前記転送元アドレスと転送先アドレスは、前記転送レジスタ804に記憶される各アドレスに対応する。また、前記転送長は、前記転送レジスタ804に記憶される残転送長や、前記転送起動レジスタ803に記憶される要求転送長から残転送長を減じた値などとすることができる。また、前記転送コマンドは、転送起動レジスタ803に記憶される転送方向や、情報処理装置200から制御装置100に送信されたデータ入出力要求などとすることができる。後者の場合には、DMA部800にはデータ入出力要求を記憶するレジスタが設けられ、そのレジスタに記憶されるデータ入出力要求がメモリ#3(115)に書き出される。また、前記制御情報は、DMAC801がデータ転送制御の際に記憶しておく各種ステータス情報などとすることができる。また、前記チェックコードは、例えばチェックサムやCRC(Cyclic Redundancy Check)とすることができる。
<第2のCHA>
図11は、ストレージ装置600におけるCHA110の別の構成(第2のCHA)の例を示す。前記図4に示す第1のCHA110における通信インタフェース機能は、前記プロセッサ#2(112)とメモリコントローラ#2(111)とメモリ#2(113)とによる通信インタフェース部の構成に限らず、本図11に示すようにプロトコルLSI112Bによって実現した形態とすることが可能である。プロトコルLSI112Bを有する回路基板110Bの構成において、前記第1のCHA110と同様にデータ転送処理の制御を行う。
図11は、ストレージ装置600におけるCHA110の別の構成(第2のCHA)の例を示す。前記図4に示す第1のCHA110における通信インタフェース機能は、前記プロセッサ#2(112)とメモリコントローラ#2(111)とメモリ#2(113)とによる通信インタフェース部の構成に限らず、本図11に示すようにプロトコルLSI112Bによって実現した形態とすることが可能である。プロトコルLSI112Bを有する回路基板110Bの構成において、前記第1のCHA110と同様にデータ転送処理の制御を行う。
第2のCHA110で、プロトコルLSI112B以外は前記第1のCHAと同様である。データ転送LSI114とプロトコルLSI112Bとにより、DTCが構成される。プロセッサ#1(119)、プロトコルLSI112B、データ転送LSI114、メモリコントローラ#1(116)、メモリ#1(117)、メモリ#3(115)は、第1のCHAと同様に、それぞれPCIバスで通信可能に接続されている。第2のCHA110の構成でも、第1のCHA110と同様に、後述する第1〜第4の制御が可能である。
プロトコルLSI112Bは、他装置700との通信を行うための通信インタフェース機能を提供し、通信インタフェース部を構成する。例えば、他のストレージ装置600に送信されるデータをFCプロトコルに従ったデータ形式に変換する。プロトコルLSI112Bとこれに接続されるコネクタ118は、SAN500を構成するFCスイッチのポートに接続されるポートとしても機能する。また、他装置700との間でのデータの授受は、プロトコルLSI112Bが備えるバッファメモリを介して行われる。プロトコルLSI112Bが備えるバッファメモリが前記第2のメモリ部に相当する。
データ転送LSI114は、プロセッサ#1(119)からの指示に従って、PCIバスのターゲットとして、PCIバスからの動作要求により、CM130と他装置700との間のデータ転送を制御する。具体的には、データ転送LSI114は、プロセッサ#1(119)がメモリ#1(117)に書き込んだ、CM130におけるデータ記憶位置と他装置700におけるデータ記憶位置とを含むデータ転送情報を、メモリ#1(117)から読み出して、PCIバスからのアクセスによりデータ転送を行う。
プロトコルLSI112BからみたPCIバス空間すなわちプロトコルLSIメモリ空間において、データ空間と制御空間を有する。データ空間は、前記図5に示したデータ領域に対応し、P2に対応したスクリプトデータが記憶される。制御空間は、前記メモリ#1(117)におけるP2を記憶するスクリプト領域#2に対応し、前記P2が記憶される。
前記PCIバス空間におけるデータ空間には、CM130に転送されるデータやCM130から転送されたデータが記憶される。また制御空間には、データ空間に記憶される各データの記憶位置や記憶領域サイズ等のデータ転送情報が、各データに対応したP2として記憶される。同様に、CM130のデータ領域には、前記PCIバス空間におけるデータ空間に転送されるデータや前記データ空間から転送されたデータが記憶される。またメモリ#1(117)のスクリプト領域#1に、データ領域に記憶される各データについてのデータ転送情報が、各データに対応したP1として記憶される。
図12は、第2のCHA110でのデータ転送処理を示すフロー図である。第1のストレージ装置601が、情報処理装置200から、第2のストレージ装置602に記憶されるデータの読み出し要求を受信した場合の処理を例に説明する。まず、第1の制御装置101で情報処理装置200からデータ読み出し要求を受信すると、プロセッサ#1(119)は、メモリ#1(117)とCM130とにデータ領域を確保する(S9000)。ここでメモリ#1(117)にデータ領域を確保するとは、P1及びP2を記憶するための記憶領域を確保することである。また、CM130にデータ領域を確保するとは、読み出しデータを記憶するための記憶領域を確保することである。ここで確保されるデータ領域は1つとは限らない。
続いて、プロセッサ#1(119)は、P1を作成し、作成したP1をメモリ#1(117)に記憶する(S9001)。P1には、CM130のアドレスがデータの送信先アドレスとして記憶されている。次にプロセッサ#1は、P2を作成し、作成したP2をメモリ#1(117)に記憶する(S9002)。P2には、PCIアドレスがデータの送信元アドレスとして記憶されている。
そしてプロセッサ#1(119)は、プロトコルLSI112Bに対してP2の番号を送信することによりデータ転送要求を行う(S9003)。前記データ転送要求に従って、プロトコルLSI112Bは、メモリ#1(117)からP2を読み出して取得し(S9004)、P2に従って、第2のストレージ装置602との間でSAN500を介して通信を行う(S9005)。この通信により、プロトコルLSI112Bは、第2のストレージ装置602に対してデータ読み出し要求を送信する。そして第2のストレージ装置602から読み出しデータが送信されてきたら、プロトコルLSI112Bは、PCIアドレスを送信先として読み出しデータを送信することで、データ転送を開始する(S9006)。
一方、プロセッサ#1(119)は、データ転送LSI114に対してP1の番号を送信する。そうするとデータ転送LSI114は、P1の番号に基づいて、メモリ#1(117)からP1を読み出して取得する(S9007)。そしてデータ転送LSI114は、ターゲットとして、PCIバスの動作に応じて、P1に従ってCM130へのDMA転送処理(S9008)を開始する。DMA転送処理(S9008)は、前記第1のCHAについて説明した処理と同様である。
DMA転送処理(S9008)が終了したら、DMAC801は、転送処理の結果が記載された終了ステータスをメモリ#1(117)に書き込み(S9009)、プロセッサ#1(119)に対し終了通知を行う(S9010)。そしてプロセッサ#1(119)は、メモリ#1(117)から終了ステータスを読み出し、その内容に応じた処理を実行する(S9011)。
ここで、第2のCHA110におけるDMA部800も、第1のCHAのDMA部800と同様に、メモリ#3(115)の制御すなわちデータ転送情報とデータの退避や回復を用いたデータ転送制御が可能であり、複数のデータ転送を多重に処理可能である。従って、第1のCHAの場合と同様の効果を得られる。例えば、前記S9005におけるプロトコルLSI112Bから第2のストレージ装置602へのアクセスは、比較的長時間を要するので、この間に複数のデータ読み出し要求を第2のストレージ装置602へ送信することが可能である。また各データ読み出し要求に応じて送信されてくる複数の読み出しデータを受信可能である。このとき1つのデータ読み出し要求に対して複数の分割されたデータ(データブロック)を受信可能である。
<データ転送の多重処理−基本動作>
次に、以上のようなストレージ装置600の構成を踏まえて、データ転送の詳細について説明する。図13は、各実施の形態のストレージ装置600において、データ転送LSI114におけるデータ転送の多重処理に係わる基本動作の例を示すタイミングチャートである。本例では、2つのDMA部800{800A,800B}を有する構成で双方のDMA部800を使用して並行的にデータ転送を制御し、かつ、退避/回復の動作を用いてデータ転送を切り替えながら複数のデータ転送を多重処理する場合について示す。特にCHA110における他装置700からのデータ受信に応じてCM130へデータ転送する場合を示す。「DMA−A」は、DMA部#1(800A)を示し、「DMA−B」は、他方側のDMA部#2(800B)を示す。「メモリ#3」は、データ転送LSI114内のメモリ、すなわちレジスタ807やバッファ810から、メモリ#3(115)の制御領域に対する退避/回復の動作を示す。「退」は退避動作を、「回」は回復動作を示す。DMA−AとDMA−Bは、1:起動(データ受信)、2:データ(D)/パラメータ(P)退避、3:パラメータ(P)/データ(D)回復、及び4:データ転送の各処理を行う。データ受信によってDMA部800のDMAデータ転送処理が起動される。前記データ(D)は転送データ、前記パラメータ(P)はデータ転送情報に対応する。また、A1,B1,C1,D1,X,Y等は、1つのデータ転送単位となるデータ、又はそのデータ転送のためのデータ転送情報、又はそれらデータ転送情報とデータの組(以下、単に組とも称する)を示し、例えば前記データブロックに対応する。なお退避動作においては、状況に応じてデータ転送情報のみが退避される場合などもある。A0,A1等は、同系列の順次データを示し、例えば或るデータAが複数のデータブロックに分割されたものである。本例は、CHA110で、データを、A1,B1,C1,D1の順で受信した場合に対応した第1〜第4のデータ転送の例を示している。「t1」等は処理タイミングを示す。
次に、以上のようなストレージ装置600の構成を踏まえて、データ転送の詳細について説明する。図13は、各実施の形態のストレージ装置600において、データ転送LSI114におけるデータ転送の多重処理に係わる基本動作の例を示すタイミングチャートである。本例では、2つのDMA部800{800A,800B}を有する構成で双方のDMA部800を使用して並行的にデータ転送を制御し、かつ、退避/回復の動作を用いてデータ転送を切り替えながら複数のデータ転送を多重処理する場合について示す。特にCHA110における他装置700からのデータ受信に応じてCM130へデータ転送する場合を示す。「DMA−A」は、DMA部#1(800A)を示し、「DMA−B」は、他方側のDMA部#2(800B)を示す。「メモリ#3」は、データ転送LSI114内のメモリ、すなわちレジスタ807やバッファ810から、メモリ#3(115)の制御領域に対する退避/回復の動作を示す。「退」は退避動作を、「回」は回復動作を示す。DMA−AとDMA−Bは、1:起動(データ受信)、2:データ(D)/パラメータ(P)退避、3:パラメータ(P)/データ(D)回復、及び4:データ転送の各処理を行う。データ受信によってDMA部800のDMAデータ転送処理が起動される。前記データ(D)は転送データ、前記パラメータ(P)はデータ転送情報に対応する。また、A1,B1,C1,D1,X,Y等は、1つのデータ転送単位となるデータ、又はそのデータ転送のためのデータ転送情報、又はそれらデータ転送情報とデータの組(以下、単に組とも称する)を示し、例えば前記データブロックに対応する。なお退避動作においては、状況に応じてデータ転送情報のみが退避される場合などもある。A0,A1等は、同系列の順次データを示し、例えば或るデータAが複数のデータブロックに分割されたものである。本例は、CHA110で、データを、A1,B1,C1,D1の順で受信した場合に対応した第1〜第4のデータ転送の例を示している。「t1」等は処理タイミングを示す。
まず、第1のデータ転送が行われる。プロセッサ#1(119)は、データA1の受信に応じて、データ転送LSI114に対しデータ転送の開始を指示し、一方のDMA部800を起動させる(t1)。ここでは、指示に応じてデータ転送LSI114がDMA−A側を起動する場合を示す。起動されたDMA−AのDMAC801Aは、過去の1つ前のデータ転送処理で使用していた、レジスタ807とバッファ810に残っているパラメータとデータの組(X)を、メモリ#3(115)の制御領域#1に退避する(t2)。例えばデータ、パラメータの順で退避する。退避後、DMAC801Aは、メモリ#3(115)から、データA1の転送に必要な、過去に退避しておいたパラメータとデータの組(A0)を、それぞれレジスタ807Aとバッファ810Aへ回復する(t3)。例えばパラメータ、データの順に回復する。そして、DMAC801Aは、回復された組(A0)を用いつつ、バッファ810Aを介してデータA1についてのデータ転送を行う。例えば、他装置700からのデータ書き込みの場合に、DMA部800は、プロセッサ#2(112)のメモリ#2(113)側から、CM130側へと書き込みデータを転送する。本例では、DMAC801Aは、メモリ#2(113)からデータA1をバッファ810Aへと転送する。DMA部800は、データ転送が終了したら、プロセッサ#1(119)に終了報告を行う。なお、実行すべきデータ転送が、或る系列のデータの転送における最初のデータ(例えばデータブロック)の転送などの場合には、回復ではなくスクリプトに基づくデータ転送情報の新規作成が行われる。
次に、第2のデータ転送が行われる。2つのDMA部800を有するので、一方のDMA部800を用いて第1のデータ転送を行うのと並行して、他方のDMA部800を用いて第2のデータ転送が可能である。DMA−Aで前記第1のデータ転送を処理中に、データB1を受信した場合(t3)、第2のデータ転送を開始させる場合に、DMA−Bを起動して、前記第1のデータ転送と同様に、DMA−Bのメモリに残っている組(Y)をメモリ#3(115)へ退避し(t5)、第2のデータ転送のために必要な組(B0)を回復して(t6)、データB1についての転送を行う(t7)。
更に、第3のデータ転送が行われる。前記第1と第2のデータ転送の処理中に、データC1を受信した場合(t7)、第3のデータ転送を行わせるために、一方のDMA部800ここではDMA−Aを起動し、同様にデータ転送を行う。DMA−Aで、処理中のためにメモリに残っている前記第1のデータ転送についての組(A1)をメモリ#3(115)に退避して(t8)、第3のデータ転送に必要となる組(C0)を回復し(t9)、データC1のデータ転送を行う(t10)。
また更に、第4のデータ転送が行われる。データD1を受信した場合(t10)、前記第3のデータ転送を処理中のDMA−Aの他方側のDMA−Bを起動して、そこで処理中の組(B1)を退避し(t11)、第4のデータ転送に必要な組(D0)を回復して(t12)、データD1の転送を行う(t13)。
このように、退避/回復動作を用いて、DMA−Aで第1、第3のデータ転送が順に行われ、DMA−Bで第2、第4のデータ転送が順に行われる。これらの各データ転送は、同系列のデータの処理でも異なる系列のデータの処理でもよい。例えば、転送データの内容に係わらず、転送要求の都度に、空いているDMA部800を使用する処理が可能である。また、データ転送LSI114で、DMA−Aでは第1の系列のデータAについて処理するように決め、DMA−Bでは第2の系列のデータBについて処理するように決めて、複数のデータ転送を制御すること等が可能である。また同様に、メモリ#3(115)に複数のデータ転送に係わるデータ転送情報とデータの組を退避/回復により保持することで、更に多重度を上げたデータ転送処理が可能である。また、第1、第2のストレージ装置601,602の間での通信がFCプロトコルに従って行われる場合など、データ転送がデータブロック単位で行われる場合には、複数の異なる系列のデータの転送における各データブロックが混在してデータ転送が処理されることとなる。複数のストレージ装置600を備えたシステムにおいては、更に多くのデータブロックが混在することになる。このような場合でも、各データ転送に対応してメモリ#3(115)に対する退避/回復を行うことで、多重にデータ転送処理が可能である。
このような基本動作によって、前記図9のシーケンスに示すように、1つのDMA部800において、第1のデータ転送が終了するまで待たずに別のデータ転送を開始可能である。例えば、第1のストレージ装置601から、第2のストレージ装置602の記憶ボリューム310に記憶されているデータの読み出しを複数回行う場合に、第1の制御装置101から第2の制御装置102に送信された第1のデータ読み出し要求に応じて読み出されるデータが制御装置101に送信されてくる前に、あるいは、制御装置101に前記読み出されるデータが送信されてきた後でも、すべてのデータブロックの送信が終了する前に、第2のデータ読み出し要求を制御装置102に送信してしまうことが可能である。この場合、第2のデータ読み出し要求を送信する際には、データ転送LSI114のレジスタ807には第1のデータ読み出し要求に対応した第1のデータ転送情報が記憶されているが、前記メモリ#3(115)への退避を行うことにより、第2のデータ読み出し要求に対応するデータ転送情報をレジスタ807に読み出して第2のデータ転送を行うことが可能である。そして、第1のデータ読み出し要求に応じて第2のストレージ装置602の記憶ボリューム310から読み出されたデータを受信する際には、レジスタ807に記憶されている第2のデータ転送情報をメモリ#3(115)に退避して、前記メモリ#3(115)に退避されていた第1のデータ転送情報を再びレジスタ807に読み出して、前記第1のデータ読み出しに係わるデータを受信すればよい。
また例えば第1の制御装置101と第2の制御装置102の間でデータ転送を行う場合の転送待ち時間に、他のデータ転送を行うことが可能である。また例えば、前記データ読み出しにおいて、第2の制御装置102のCM130に読み出しデータが記憶されていない場合、すなわちキャッシュ・ミスヒットの場合でも、記憶ボリューム310からデータを読み出している間に、他のデータ転送を行うことが可能となる。このように、データ転送の多重処理によってスループットを向上できるので、データ入出力性能が向上される。
上記基本動作において、DTCは、自身が持つメモリにデータ転送情報やデータを記憶しながらデータ転送を制御し、また別のメモリ#3(115)に対してデータ転送情報やデータの退避/回復動作を行うことで、複数のデータ転送についての多重処理が可能であるが、前記退避/回復動作の負荷は、データ入出力性能を左右する。
<キャッシュライト時の基本動作>
図14(a),(b)は、データ転送の多重処理に係わる、キャッシュライト時とキャッシュリード時とにおける基本動作の処理例を示すタイミングチャートである。制御装置100における接続部150を含む構成を考慮して、CHA110からCM130に対するデータ書き込みとデータ読み出しの処理において、複数のデータ転送をまとめて処理することが効果的となる。例えば、複数のデータブロックを単位としてCM130に対する読み書きを行う。例えば1つのデータブロックが2kbのサイズであり、合計で8kbのサイズのデータを単位としてCM130に対する読み書きを行う。
図14(a),(b)は、データ転送の多重処理に係わる、キャッシュライト時とキャッシュリード時とにおける基本動作の処理例を示すタイミングチャートである。制御装置100における接続部150を含む構成を考慮して、CHA110からCM130に対するデータ書き込みとデータ読み出しの処理において、複数のデータ転送をまとめて処理することが効果的となる。例えば、複数のデータブロックを単位としてCM130に対する読み書きを行う。例えば1つのデータブロックが2kbのサイズであり、合計で8kbのサイズのデータを単位としてCM130に対する読み書きを行う。
図14(a)は、キャッシュライト時の基本動作の処理例を示す。本例は、DMA−AとDMA−Bで、それぞれ、データA1〜A4とデータB1〜B4とについてのデータ転送を行う場合を示し、4つのデータブロックをまとめてCM130へ書き込む場合について示している。CHA110で、データを、{A1,B1,A2,B2,A3,B3,A4,B4}の順で受信した場合を示す。データA1,B1は、それぞれ同系列のデータA,Bにおける最初のデータブロックとする。
CM130へのデータ書き込みのために、DMA部800のバッファ810に4つのデータA1〜A4を蓄積してからCM130に対する書き込みが行われる。しかしながら、その間の退避と回復の処理による負荷が大きくなってしまう。
まず、データA1の受信に応じてDMA−Aでの第1のデータ転送が起動される(t1)。データA1についてメモリ#2(113)からバッファ810Aへの転送を行う(t2)。同様に、データB1の受信に応じてDMA−Bが起動され(t2)、DMAC801BによりデータB1についてメモリ#2(113)からバッファ810Bへの転送を行う(t3)。
次に、データA2の受信で(t3)、前記基本動作の場合では、DMA部800のメモリから前記データA1についてのデータ転送情報とデータの組のメモリ#3(115)への退避と、メモリ#3(115)からの前記データA1についてのデータ転送情報とデータの組についてのDMA部800のメモリへの回復とが行われ、その後データA2についての転送が行われることとなる(t3〜t6)。次のデータB2についてもDMA−Bで同様に退避と回復を含む処理が行われることとなる(t5〜t9)。また、次のデータA3,B3についても同様に、それぞれDMA−A,DMA−Bで退避と回復を含む処理が行われる(t7〜t12及びt11〜t16)。
次に、データA4の受信で(t15)、DMA−Aにおいて、前記データA1〜A3についてのデータ転送情報とデータの組についての、DMA−Aのメモリからメモリ#3(115)への退避と、メモリ#3(115)からDMA−Aのメモリへの回復とが行われ、その後データA4についての転送が行われることとなる(t15〜t22)。そして、バッファ810AにデータA1〜A4の4つのデータブロックが蓄積されたら、DMA−AのDMAC801Aは、バッファ810Aから、CM130における転送先となるデータ領域へ、前記データA1〜A4を書き込む(t23〜t26)。次のデータB4についてもDMA−Bで同様にCM130への書き込みまでの処理が行われることとなる(t21〜t32)。
上記のように、キャッシュライト時に、DMA部800で同系列のデータ(例えばデータA,B)の連続的なデータ転送、例えば順次データを構成する複数のデータブロックの転送が行われる場合に、前記基本動作を行うと、退避と回復の動作分の負荷が大きくなる。従って、第3の制御では、前記キャッシュライト時の負荷を削減するために、以下に示すように、同系列の連続的なデータなどの複数のデータをCM130へ書き込む際には、その各データの転送についての退避と回復を1つのデータ転送の都度に行わずにCM130へデータ書き込みする。
<キャッシュリード時の基本動作>
図14(b)は、キャッシュリード時の基本動作の処理例を示す。本例は、DMA−AとDMA−Bで、それぞれ、データA1〜A4とデータB1〜B4とについてのデータ転送を行う場合を示し、4つのデータブロックをまとめてCM130から読み出して、他装置700に対して転送する場合について示している。CHA110で、前記キャッシュライト時と同様のデータを送出する場合を示す。
図14(b)は、キャッシュリード時の基本動作の処理例を示す。本例は、DMA−AとDMA−Bで、それぞれ、データA1〜A4とデータB1〜B4とについてのデータ転送を行う場合を示し、4つのデータブロックをまとめてCM130から読み出して、他装置700に対して転送する場合について示している。CHA110で、前記キャッシュライト時と同様のデータを送出する場合を示す。
データ転送LSI114は、CM130からのデータ読み出しにおいて、DMA部800のバッファ810にデータA1〜A4を1回でまとめて読み出して蓄積し、読み出した各データを個別にメモリ#2(113)への転送を行う。しかしながら、その間の退避と回復の処理による負荷が大きくなってしまう。
まず、データA1の転送のためのコマンド(C)の受信に応じて、DMA−Aでの第1のデータ転送が起動される(t1)。DMA−AのDMAC801Aで、データA1〜A4についてCM130から続けて読み出してバッファ810Aへ蓄積する(t2〜t5)。そしてDMAC801Aは、バッファ810AからデータA1をメモリ#2(113)へ転送する(t3)。同様に、データB1の転送のためにDMA−Bが起動され(t3)、データB1〜B4についてCM130から読み出してバッファ810Bへ蓄積され(t4〜t7)、データB1がメモリ#2(113)へ転送される(t5)。
次に、データA2の転送でDMA−Aが起動され(t5)、前記データA2〜A4についてのデータ転送情報とデータの組について、DMA−Aのメモリからメモリ#3(115)への退避と、メモリ#3(115)からDMA−Aのメモリへの回復とが行われ、その後データA2についての転送が行われることとなる(t5〜t12)。次のデータB2についてもDMA−Bで同様に退避と回復を含む処理が行われることとなる(t11〜t18)。また、次のデータA3,B3についても同様に、それぞれDMA−A,DMA−Bで退避と回復を含む処理が行われる(t17〜t22及びt21〜t26)。
次に、データA4の転送で(t25)、DMA−Aにおいて、前記データA4についてのデータ転送情報とデータの組について、メモリ#3(115)への退避と、メモリ#3(115)からの回復とが行われ、その後データA4についての転送が行われることとなる(t25〜t28)。これにより、前記バッファ810Aに蓄積されていたデータA1〜A4の4つのデータブロックについて、メモリ#2(113)への転送が完了し、転送先となる他装置700のメモリのデータ領域への転送も行われる。次のデータB4についてもDMA−Bで同様に処理が行われることとなる(t27〜30)。
上記のように、キャッシュリード時に、DMA部800で同系列のデータ(例えばデータA,B)の連続的なデータ転送、例えば順次データを構成する複数のデータブロックの転送が行われる場合に、前記基本動作を行うと、退避と回復の動作分の負荷が大きくなる。従って、第4の制御では、前記キャッシュリード時の負荷を削減するために、同系列の連続的なデータなどの複数のデータをCM130から読み出す場合に、退避と回復を1つのデータ転送の都度に行わずに、CM130からバッファ310へ再読み込みしてデータ転送を行う。
(実施の形態1)
次に、実施の形態1のストレージ装置600について説明する。前記基本動作は、データ転送の都度にデータ転送情報及びデータの退避と回復の動作を行う制御を示しているが、退避と回復が頻繁に行われる場合には、その分の負荷が大きい。各実施の形態のストレージ装置600では、前記基本動作が可能であるのに加えて、データ転送LSI114でのDMA部800のメモリの効率的な使用と、退避/回復動作のタイミングの制御により、前記退避や回復に要する負荷を減少させたデータ転送の制御を可能とする。また、状況などに応じて複数の制御を選択的に実行可能である。以下、退避や回復に要する負荷を減少させた第1から第4の制御について説明する。
次に、実施の形態1のストレージ装置600について説明する。前記基本動作は、データ転送の都度にデータ転送情報及びデータの退避と回復の動作を行う制御を示しているが、退避と回復が頻繁に行われる場合には、その分の負荷が大きい。各実施の形態のストレージ装置600では、前記基本動作が可能であるのに加えて、データ転送LSI114でのDMA部800のメモリの効率的な使用と、退避/回復動作のタイミングの制御により、前記退避や回復に要する負荷を減少させたデータ転送の制御を可能とする。また、状況などに応じて複数の制御を選択的に実行可能である。以下、退避や回復に要する負荷を減少させた第1から第4の制御について説明する。
まず、実施の形態1のストレージ装置600では、制御装置100においてDTCで2つのDMA部800を有する構成で、第1の制御として、DMA部800に記憶されるデータ転送情報及びデータについて、他のメモリ#3(115)への先行退避を行うデータ転送制御を行う。
<1:先行退避の制御>
第1の制御として、先行退避を行うデータ転送制御について説明する。第1の制御として、データ転送LSIにおいて、片側のDMA部800のメモリ、すなわちレジスタ807とバッファ810を、今後のデータ転送のために、常にあるいは可能な限り、空けておく制御を行う。そのために、データ受信などのタイミングではなく、時間的に先行してメモリ#3(115)へデータ転送情報やデータを退避しておく制御を行う。これにより、データ転送の起動からデータ転送終了までに要する時間を短縮する。プロセッサ#1(119)とデータ転送LSI114とにより、データ転送の起動を契機として、一方のDMA部800で回復とデータ転送を行わせるのと並行して、他方のDMA部800で退避を先行して行わせる。
第1の制御として、先行退避を行うデータ転送制御について説明する。第1の制御として、データ転送LSIにおいて、片側のDMA部800のメモリ、すなわちレジスタ807とバッファ810を、今後のデータ転送のために、常にあるいは可能な限り、空けておく制御を行う。そのために、データ受信などのタイミングではなく、時間的に先行してメモリ#3(115)へデータ転送情報やデータを退避しておく制御を行う。これにより、データ転送の起動からデータ転送終了までに要する時間を短縮する。プロセッサ#1(119)とデータ転送LSI114とにより、データ転送の起動を契機として、一方のDMA部800で回復とデータ転送を行わせるのと並行して、他方のDMA部800で退避を先行して行わせる。
本例では、一方のDMA部800のメモリ、例えばDMA部#1(800A)のレジスタ#1(807A)とバッファ#1(810A)を、データ転送のために使用している状況において、他方のDMA部800のメモリ、すなわちDMA部#2(800B)のレジスタ#2(807B)とバッファ#2(810B)について、あらかじめ退避を行っておく。すなわち、DMA部#2(800B)で次のデータ転送を開始させる事前に、そのメモリに残っているデータ転送情報とデータの組をメモリ#3(115)へ退避しておく。例えば、DMA部#1(800A)で第1のデータ転送を、DMA部#2(800B)で第2のデータ転送をそれぞれ行っていた状況において、DMA部#1(800A)で第3のデータ転送を起動して開始させたことを契機として、DMA部#2(800B)のメモリから前記第2のデータ転送についての組の退避を行って、今後の第4のデータ転送に備えておく。
図15(a),(b)は、第1の制御と第2の制御について示す。図15(a)は、第1の制御の例を示すタイミングチャートである。本例では、2つのDMA部800を有する構成で、前記基本動作を改良した先行退避の制御を行う場合を示す。特にCHA110でのデータ受信の場合を示す。DMA−AとDMA−Bは、起動(データ受信)、D/P退避、P/D回復、及びデータ転送の各処理を行う。本例は、CHA110でデータをA1,B1,C1,D1の順で受信した場合に対応した第1〜第4のデータ転送の例を示している。矢印は、或る処理を契機として他の処理が起動されることを示している。
まず、第1のデータ転送を行う。プロセッサ#1(119)は、データA1の受信に応じて、データ転送LSI114に対しデータ転送の開始を指示し、一方のDMA部800、ここではDMA−Aを起動する(t1)。起動されたDMA−AのDMAC801Aは、データA1の転送に必要なデータ転送情報とデータの組(A0)をメモリ#3(115)の制御領域#1から回復して(t2)、データ転送を行う(t3)。そしてデータ転送LSI114では、データA1の受信を契機として、DMA−Aでのデータ転送の実行と共に、他方のDMA−B側についての退避を行わせる。DMA−BのDMAC801Bは、レジスタ807Bとバッファ810Bに記憶されている過去の1つ前のデータ転送処理で使用していたデータ転送情報とデータの組(Y)を、メモリ#3(115)の制御領域#2に退避する。データ転送LSI114で、一方のDMA−Aで組(A0)の回復とデータA1の転送、他方のDMA−Bで組(Y)の退避を、並行的に処理させることになる。本例では特に、t2のタイミングでDMA−Aでの組(A0)の回復が行われ、次にt3のタイミングで、DMA−AでのデータA1の転送と、同時にDMA−Bでの組(Y)の退避とが行われる場合を示している。メモリ#3(115)では、退避、回復の順に処理されている。なお、本例では並行的に処理された場合を示しているが、先に行うべき処理がある場合など、状況によって、回復、データ転送、退避の各タイミングが前後し得る。
次に、第2のデータ転送が行われる。前記データA1の転送後、データB1を受信している。これに応じて、他方側のDMA−Bが起動される(t4)。DMA−BのDMAC801Bは、前記第1のデータ転送と同様に、データB1の転送に必要な組(B0)をメモリ#3から回復し(t5)、データB1の転送を行う(t6)。DMA−BでデータB1の転送を行わせる際、既に退避が先行して行われているので、退避を行う必要がない。そしてデータB1の転送と並行して、DMA−Aで退避を行わせる。DMA−Aは、メモリに記憶されている、前記データA1の転送についての組(A1)をメモリ#3へ退避する(t6)。
次に、第3のデータ転送が行われる。前記データB1の転送後、データC1を受信している。これに応じて、DMA−Aが起動される(t7)。前記第1のデータ転送と同様に、DMA−AのDMAC801Aは、データC1について回復(t8)とデータ転送(t9)を行い、並行して、DMA−Bで、データB1の転送についての退避を行わせる(t9)。その後、同様に、第4のデータ転送が行われる。
このように、第1の制御により、一方のDMA部800でデータ転送を行うと共に他方のDMA部800で先行して退避を行わせるので、次のデータ転送を開始させる際に既に退避が済んでいる分、処理全体に要する時間が短縮される。第1の制御は、3つ以上のDMA部を有する場合等でも同様に可能である。
<キャッシュライト時の第1の制御>
図16(a),(b)は、キャッシュライト時とキャッシュリード時に第1の制御を行う場合を示す。図16(a)は、キャッシュライト時に第1の制御を行う処理例を示すタイミングチャートである。データ転送LSI114のDMA部800のバッファ810からCM130に対して4つのデータブロックをまとめて書き込む場合を示す。
図16(a),(b)は、キャッシュライト時とキャッシュリード時に第1の制御を行う場合を示す。図16(a)は、キャッシュライト時に第1の制御を行う処理例を示すタイミングチャートである。データ転送LSI114のDMA部800のバッファ810からCM130に対して4つのデータブロックをまとめて書き込む場合を示す。
データA1の受信でDMA−Aが起動され(t1)、DMAC800Aにより、データA1がバッファ810Aへ転送される(t2)。次に、データB1の受信でDMA−Bが起動され(t2)、DMAC801Bより、データB1がバッファ810Bへ転送される(t3)。それに応じて、DMA−Aで、メモリに記憶されている組(A1)をメモリ#3(115)へ退避させる(t3)。
次に、データA2の受信でDMA−Aが起動され(t3)、DMAC801Aにより、データA2の転送に必要な組(A1)がメモリ#3(115)から回復される(t4)。そしてデータA2の転送が行われる(t5)。それと並行して、DMA−Bで、メモリに記憶されている組(B1)がメモリ#3(115)へ退避される(t5)。
次に、データB2の受信で(t5)、同様に、DMA−Bで組(B1)の回復(t6)とデータB2の転送(t7)が行われ、並行してDMA−Aで、組(A1〜A2)の退避(t7〜t8)が行われる。次に、データA3の受信で(t7)、同様に、DMA−Aで組(A1〜A2)の回復(t9〜t10)とデータA3の転送(t11)が行われ、並行してDMA−Bで、組(B1〜B2)の退避(t11〜t12)が行われる。次に、データB3の受信で(t11)、同様に、DMA−Bで組(B1〜B2)の回復(t13〜t14)とデータB3の転送(t15)が行われ、並行してDMA−Aで、組(A1〜A3)の退避(t15〜t17)が行われる。次に、データA4の受信で(t15)、同様に、DMA−Aで組(A1〜A3)の回復(t18〜t20)とデータA4の転送(t21)が行われ、並行してDMA−Bで組(B1〜B3)の退避(t21〜t23)が行われる。そして更に、DMA−AでデータA1〜A4がバッファ810Aに蓄積されたので、DMAC801Aにより、バッファ810AからCM130のデータ領域へ、データA1〜A4が続けて書き込まれる(t22〜t25)。次に、データB4の受信で(t21)、同様に、DMA−Aで組(B1〜B3)の回復(t24〜t26)とデータB4の転送(t27)が行われる。そして更に、DMA−BでデータB1〜B4がバッファ810Bに蓄積されたので、DMAC801Bにより、バッファ810BからCM130のデータ領域へ、データB1〜B4が続けて書き込まれる(t22〜t25)。このように、DMA部800でデータ転送情報とデータの先行退避を行いながら、CM130に対するキャッシュライト処理を実行可能であり、基本動作に比べて処理時間が短縮される。
CM130に対してデータをまとめて書き込む処理を行う場合、クロスバースイッチなどの接続部150における処理効率がよいという効果がある。それにより、例えば、情報処理装置200から記憶ボリューム310へとデータ書き込みを行う場合の処理効率がよいという効果がある。
<キャッシュリード時の第1の制御>
図16(b)は、キャッシュリード時に第1の制御を行う処理例を示すタイミングチャートである。データ転送LSI114のDMA部800で、CM130からバッファ810に対して4つのデータブロックをまとめて読み出す場合を示す。
図16(b)は、キャッシュリード時に第1の制御を行う処理例を示すタイミングチャートである。データ転送LSI114のDMA部800で、CM130からバッファ810に対して4つのデータブロックをまとめて読み出す場合を示す。
データA1の転送のためにDMA−Aが起動され(t1)、DMAC801Aにより、CM130からデータA1〜A4が続けてバッファ810Aへ読み出される(t2〜t5)。そして、バッファ810Aからメモリ#2(113)へデータA1が転送される(t3)。次に、データB1の転送でDMA−Bが起動され(t3)、DMAC801Bにより、CM130からデータB1〜B4がバッファ810Bへ読み出される(t4〜t7)。そして、バッファ810Bからメモリ#2(113)へデータB1が転送される(t5)。また前記データB1の転送に応じて、並行してDMA−Aで、メモリに記憶されている組(A2〜A4)をメモリ#3(115)へ退避させる(t6〜t8)。
次に、データA2の転送でDMA−Aが起動され(t5)、DMAC801Aにより、データA2の転送に必要な組(A2〜A4)がメモリ#3(115)から回復される(t9〜t11)。そしてデータA2の転送が行われる(t12)。それと並行してDMA−Bで、メモリに記憶されている組(B2〜B4)がメモリ#3(115)へ退避される(t12〜t14)。
次に、データB2の転送で(t11)、同様に、DMA−Bで組(B2〜B4)の回復(t15〜t17)とデータB2の転送(t18)が行われ、並行してDMA−Aで組(A3〜A4)の退避(t18〜t19)が行われる。次に、データA3の転送で(t17)、同様に、DMA−Aで組(A3〜A4)の回復(t20〜t21)とデータA3の転送(t22)が行われ、並行してDMA−Bで組(B3〜B4)の退避(t22〜t23)が行われる。次に、データB3の転送で(t21)、同様に、DMA−Bで組(B3〜B4)の回復(t24〜t25)とデータB3の転送(t26)が行われ、並行してDMA−Aで組(A4)の退避(t26)が行われる。次に、データA4の転送で(t25)、同様に、DMA−Aで組(A4)の回復(t27)とデータA4の転送(t28)が行われ、並行してDMA−Bで組(B4)の退避(t28)が行われる。これにより、バッファ810Aに蓄積されていたデータA1〜A4のメモリ#2(113)への転送が完了する。次に、データB4の転送で(t27)、同様に、DMA−Bで組(B4)の回復(t29)とデータB4の転送(t30)が行われ、データB1〜B4のメモリ#2(113)への転送が完了する。このように、DMA部800でデータ転送情報とデータの先行退避を行いながら、CM130に対するキャッシュリード処理を実行可能であり、基本動作に比べて処理時間が短縮される。
CM130からデータをまとめて読み出す処理を行う場合、(a)の書き込み処理を行う場合と同様に、接続部150における処理効率がよいという効果がある。それにより、例えば、情報処理装置200が記憶ボリューム310からデータ読み出しを行う場合の処理効率がよいという効果がある。
(実施の形態2)
次に、実施の形態2のストレージ装置600について説明する。実施の形態2のストレージ装置600は、データ転送に関する第2の制御を行う。
次に、実施の形態2のストレージ装置600について説明する。実施の形態2のストレージ装置600は、データ転送に関する第2の制御を行う。
<2:回復短縮の制御>
第2の制御として、回復短縮を行うデータ転送制御について説明する。第2の制御として、データ転送LSI114において、DMA部800のメモリに残っているデータ転送情報とデータを利用することで、回復動作を削減する制御を行う。すなわち、或るDMA部800において、第1のデータ転送を行って退避を行った後、第2のデータ転送が、前記第1のデータ転送に関連するデータ入出力である場合、第2のデータ転送に必要なデータ転送情報とデータが当該DMA部800のレジスタ807とバッファ810に残っている場合は、それを利用して回復の動作を省略して第2のデータ転送を行う。これにより、データ転送の起動からデータ転送終了までに要する時間を短縮する。なお、退避動作でメモリ#3(115)に対してデータ転送情報やデータをコピーして、レジスタ807やバッファ810に同じデータ転送情報やデータが残されることが条件となる。DMA部800のメモリに残されたデータ転送情報やデータが、上書きで消去されない限り利用できる。第2の制御は、独立して使用することも可能であるが、本例では第1の制御と組み合わせた場合を示す。
第2の制御として、回復短縮を行うデータ転送制御について説明する。第2の制御として、データ転送LSI114において、DMA部800のメモリに残っているデータ転送情報とデータを利用することで、回復動作を削減する制御を行う。すなわち、或るDMA部800において、第1のデータ転送を行って退避を行った後、第2のデータ転送が、前記第1のデータ転送に関連するデータ入出力である場合、第2のデータ転送に必要なデータ転送情報とデータが当該DMA部800のレジスタ807とバッファ810に残っている場合は、それを利用して回復の動作を省略して第2のデータ転送を行う。これにより、データ転送の起動からデータ転送終了までに要する時間を短縮する。なお、退避動作でメモリ#3(115)に対してデータ転送情報やデータをコピーして、レジスタ807やバッファ810に同じデータ転送情報やデータが残されることが条件となる。DMA部800のメモリに残されたデータ転送情報やデータが、上書きで消去されない限り利用できる。第2の制御は、独立して使用することも可能であるが、本例では第1の制御と組み合わせた場合を示す。
図15(b)は、第2の制御の例を示すタイミングチャートである。本例では、2つのDMA部800を有する構成で、前記先行退避の動作に加えて回復短縮を行う制御を示す。特にデータ受信の場合を示す。本例は、CHA110でデータを、{A1,B1,A2,B2}の順で受信した場合に対応した第1〜第4のデータ転送の例を示している。
まず、第1のデータ転送が行われる。データA1の受信に応じて、(a)に示す第1の制御と同様に、データ転送と先行退避の制御が行われる(t1〜t3)。同様に、第2のデータ転送が行われる(t4〜t6)。
次に、第3のデータ転送が行われる。データB1の転送後、データA2を受信している(t7)。これに応じて、DMA−Aが起動される。ここで、前記第1の制御であればデータA2についての転送に必要なデータ転送情報とデータの組(A1)の回復を行うが、第2の制御では、必要な組(A1)がDMA部#1(800A)のレジスタ807Aとバッファ810Aに残っているので回復する必要が無く、そのままそのメモリに記憶されている組(A1)を利用して、データA2についての転送を行う(t8)。また、第1の制御に従って他方側のDMA−BでデータB1についての退避を行わせる(t8)。データ転送LSI114では、t8のタイミングで、DMA−AでデータA2の転送を行わせ、並行してDMA−BでデータB1についての退避を行わせることとなる。データ転送LSI114は、受信データA2がデータA1に続く順次データであるので、メモリに組(A1)が残っているDMA−A側を起動する。その後、データB2を受信しており(t10)、DMA−BのメモリでデータB1についての組(B1)が残っているので、同様に、DMA−Bにおいて回復無しでそのままデータB2について転送が行われる(t11)。
このように、第2の制御では、データ転送LSI114において、関連する連続的なデータ転送を行う場合、例えば同じ系列の順次データを転送する場合などにおいて、DMA部800のメモリに保持されているデータ転送情報とデータをそのまま利用することで回復動作を省略し、処理全体に要する時間が短縮される。第2の制御は、3つ以上のDMA部を有する場合でも同様に可能である。
<キャッシュライト時の第2の制御>
図17(a),(b)は、キャッシュライト時とキャッシュリード時に第2の制御を行う場合を示す。図17(a)は、キャッシュライト時に第2の制御を行う処理例を示すタイミングチャートである。データ転送LSI114のDMA部800のバッファ810からCM130に対して4つのデータブロックをまとめて書き込む場合を示す。
図17(a),(b)は、キャッシュライト時とキャッシュリード時に第2の制御を行う場合を示す。図17(a)は、キャッシュライト時に第2の制御を行う処理例を示すタイミングチャートである。データ転送LSI114のDMA部800のバッファ810からCM130に対して4つのデータブロックをまとめて書き込む場合を示す。
データA1の受信でDMA−Aが起動され(t1)、DMAC801Aにより、データA1がバッファ810Aへ転送される(t2)。次に、データB1の受信でDMA−Bが起動され(t2)、DMAC801Bにより、データB1がバッファ810Bへ転送される(t3)。それに応じて、DMA−Aで、メモリに記憶されている組(A1)をメモリ#3(115)へ退避させる(t3)。
次に、データA2の受信でDMA−Aが起動され(t3)、DMAC801Aにより、データA2の転送に必要な組(A1)がメモリに記憶されているので、回復無しでデータA2の転送が行われる(t4)。それと並行してDMA−Bで、メモリに記憶されている組(B1)がメモリ#3(115)へ退避される(t4)。
次に、データB2の受信で(t4)、同様に、DMA−Bで組(B1)の回復無しでデータB2の転送(t5)が行われ、並行してDMA−Aで組(A1〜A2)の退避(t5〜t6)が行われる。次に、データA3の受信で(t5)、同様に、DMA−Aで組(A1〜A2)の回復無しでデータA3の転送(t7)が行われ、並行してDMA−Bで組(B1〜B2)の退避(t7〜t8)が行われる。次に、データB3の受信で(t7)、同様に、DMA−Bで組(B1〜B2)の回復無しでデータB3の転送(t9)が行われ、並行してDMA−Aで組(A1〜A3)の退避(t9〜t11)が行われる。次に、データA4の受信で(t9)、同様に、DMA−Aで組(A1〜A3)の回復無しでデータA4の転送(t12)が行われ、並行してDMA−Bで組(B1〜B3)の退避(t12〜t14)が行われる。そして更に、DMA−Aで、データA1〜A4がバッファに蓄積されたので、DMAC801Aにより、バッファ810AからCM130のデータ領域へ、データA1〜A4が続けて書き込まれる(t13〜t16)。次に、データB4の受信で(t12)、同様に、DMA−Aで組(B1〜B3)の回復無しでデータB4の転送(t15)が行われる。そして更に、DMA−Bで、データB1〜B4がバッファ810Bに蓄積されたので、DMAC801Bにより、バッファ810BからCM130のデータ領域へ、データB1〜B4が続けて書き込まれる(t16〜t19)。このように、DMA部800でデータ転送情報とデータの先行退避と回復短縮を行いながら、CM130に対するキャッシュライト処理を実行可能であり、基本動作に比べて処理時間が短縮される。
<キャッシュリード時の第2の制御>
図17(b)は、キャッシュリード時に第2の制御を行う処理例を示すタイミングチャートである。データ転送LSI114のDMA部800で、CM130からバッファ810に対して4つのデータブロックをまとめて読み出す場合を示す。
図17(b)は、キャッシュリード時に第2の制御を行う処理例を示すタイミングチャートである。データ転送LSI114のDMA部800で、CM130からバッファ810に対して4つのデータブロックをまとめて読み出す場合を示す。
データA1の転送のためにDMA−Aが起動され(t1)、DMAC801Aにより、CM130からデータA1〜A4が続けてバッファ810Aへ読み出される(t2〜t5)。そして、バッファ810Aからメモリ#2(113)へデータA1が転送される(t3)。次に、データB1の転送でDMA−Bが起動され(t3)、DMAC801Bにより、CM130からデータB1〜B4がバッファ810Bへ読み出される(t4〜t7)。そして、バッファ810Bからメモリ#2(113)へデータB1が転送される(t5)。また前記データB1の受信に応じて、並行してDMA−Aで、メモリに記憶されている組(A2〜A4)をメモリ#3(115)へ退避させる(t6〜t8)。
次に、データA2の転送でDMA−Aが起動され(t5)、DMAC801Aにより、データA2の転送に必要な組(A2〜A4)の回復無しでメモリに記憶されている組(A2〜A4)をそのまま利用してデータA2の転送が行われる(t9)。それと並行してDMA−Bで、メモリに記憶されている組(B2〜B4)がメモリ#3(115)へ退避される(t9〜t11)。
次に、データB2の転送で(t8)、同様に、DMA−Bで組(B2〜B4)の回復無しでデータB2の転送(t12)が行われ、並行してDMA−Aで組(A3〜A4)の退避(t12〜t13)が行われる。次に、データA3の転送で(t11)、同様に、DMA−Bで組(A3〜A4)の回復無しでデータA3の転送(t14)が行われ、並行してDMA−Bで組(B3〜B4)の退避(t14〜t15)が行われる。次に、データB3の転送で(t13)、同様に、DMA−Bで組(B3〜B4)の回復無しでデータB3の転送(t16)が行われ、並行してDMA−Aで組(A4)の退避(t16)が行われる。次に、データA4の転送で(t15)、同様に、DMA−Aで組(A4)の回復無しでデータA4の転送(t17)が行われ、並行してDMA−Bで組(B4)の退避(t17)が行われる。これにより、バッファ810Aに蓄積されていたデータA1〜A4のメモリ#2(113)への転送が完了する。次に、データB4の受信で(t16)、同様に、DMA−Bで組(B4)の回復無しでデータB4の転送(t18)が行われ、データB1〜B4のメモリ#2(113)への転送が完了する。このように、DMA部800でデータ転送情報とデータの先行退避と回復短縮を行いながら、CM130に対するキャッシュリード処理を実行可能であり、基本動作に比べて処理時間が短縮される。
(実施の形態3)
次に、実施の形態3のストレージ装置600について説明する。実施の形態3のストレージ装置600は、データ転送に関する第3の制御を行う。
次に、実施の形態3のストレージ装置600について説明する。実施の形態3のストレージ装置600は、データ転送に関する第3の制御を行う。
<3:キャッシュライト時の第3の制御>
第3の制御として、キャッシュライト時に退避・回復の短縮を行うデータ転送制御について説明する。第3の制御として、データ転送LSI114において、DMA部800でデータ転送を行う際に、メモリ#2(113)からCM130に対して複数のデータを転送して書き込む処理を行う場合に、その各データの転送ではメモリ#3(115)に対する退避や回復を行わずに、バッファ810からCM130へ転送データの書き込み(掃き出し)を行ってしまう。これにより、退避と回復の動作を短縮する。データ転送LSI114では、一方のDMA部800でのデータ転送を契機として、他方のDMA部800でバッファ810からCM130に対するデータ掃き出しを行わせる。
第3の制御として、キャッシュライト時に退避・回復の短縮を行うデータ転送制御について説明する。第3の制御として、データ転送LSI114において、DMA部800でデータ転送を行う際に、メモリ#2(113)からCM130に対して複数のデータを転送して書き込む処理を行う場合に、その各データの転送ではメモリ#3(115)に対する退避や回復を行わずに、バッファ810からCM130へ転送データの書き込み(掃き出し)を行ってしまう。これにより、退避と回復の動作を短縮する。データ転送LSI114では、一方のDMA部800でのデータ転送を契機として、他方のDMA部800でバッファ810からCM130に対するデータ掃き出しを行わせる。
図18(a),(b)は、第3の制御と第4の制御を示す。図18(a)は、第3の制御の処理例を示すタイミングチャートである。なお、図18(a)では、前記データ{A1,B1,A2,B2,……}が時間的に最短のタイミングで受信された場合を示している。
データA1の受信に応じてDMA−Aが起動され(t1)、DMAC801Aにより、データA1について、メモリ#2(113)からバッファ810Aへの転送が行われる。次に、データB1の受信でDMA−Bが起動され(t2)、同様に、DMAC801Bにより、データB1について、メモリ#2(113)からバッファ810Bへの転送が行われる。次に、データA2の受信でDMA−Aが起動され(t3)、ここで前記基本動作の場合なら、メモリに記憶されている組(A1)の退避と、データA2の転送に必要な組(A1)の回復を行うが、第3の制御の場合では行わない。第3の制御では、前記DMA−BでのデータB1の受信及びデータ転送の起動に応じて、他方のDMA−Aで、データA1について、退避の代わりにバッファ810AからCM130へデータA1の書き込みを行わせる(t3)。この際、DMA−Aのメモリには、前記データA1の転送で使用していたデータ転送情報とデータの組(A1)が残っているので、それをそのまま利用してデータA2の転送が制御可能である。そして同様に、前記データB2の受信に応じて(t3)、DMA−Bで、データB1について、退避の代わりにバッファ810BからCM130へデータB1の書き込みを行わせる(t4)。データA3,B3以後の制御についても同様である。
このように、基本動作ではCM130へ4つのデータブロックをまとめて書き込みしたが、第3の制御では、前記データ掃き出しの動作により、退避と回復無しでCM130へ個別にデータブロックを書き込むこととなる。これにより、前記基本動作で行っていた退避と回復の動作分が削減されるので、処理全体に要する時間が短縮される。
第3の制御は、前記第1、第2の制御と独立しても、組み合わせても実行可能である。なお、前記キャッシュライトの処理では、CHA110のデータ転送LSI114から、接続部150を介して、CM130へデータ書き込みが行われる。従って、制御装置100の構成において、接続部150の構成との整合が問題にならない場合では、第3の制御を行うことが有利である。
(実施の形態4)
次に、実施の形態4のストレージ装置600について説明する。実施の形態4のストレージ装置600は、データ転送に関する第4の制御を行う。
次に、実施の形態4のストレージ装置600について説明する。実施の形態4のストレージ装置600は、データ転送に関する第4の制御を行う。
<4:キャッシュリード時の第4の制御>
第4の制御として、キャッシュリード時に退避・回復の短縮を行うデータ転送制御について説明する。第4の制御として、データ転送LSI114において、DMA部800でデータ転送を行う際に、CM130からメモリ#2(113)に対して複数のデータを転送して読み出す処理を行う場合に、CM130からバッファ801へまとめて読み出した各データの転送の際に、メモリ#3(115)に対する退避や回復は行わずに一旦レジスタ807やバッファ810に記憶されているデータ転送情報とデータの組については廃棄してしまい、次のデータ転送においてCM130からバッファ810への転送データの再読み込みを行って、メモリ#2(113)へのデータ転送を行う。なお前記廃棄とは、バッファ810上の当該データ転送情報とデータの組についてそのまま何も動作が行われないこと、あるいは他の組によって上書きされることである。
第4の制御として、キャッシュリード時に退避・回復の短縮を行うデータ転送制御について説明する。第4の制御として、データ転送LSI114において、DMA部800でデータ転送を行う際に、CM130からメモリ#2(113)に対して複数のデータを転送して読み出す処理を行う場合に、CM130からバッファ801へまとめて読み出した各データの転送の際に、メモリ#3(115)に対する退避や回復は行わずに一旦レジスタ807やバッファ810に記憶されているデータ転送情報とデータの組については廃棄してしまい、次のデータ転送においてCM130からバッファ810への転送データの再読み込みを行って、メモリ#2(113)へのデータ転送を行う。なお前記廃棄とは、バッファ810上の当該データ転送情報とデータの組についてそのまま何も動作が行われないこと、あるいは他の組によって上書きされることである。
図18(b)は、第4の制御の処理例を示すタイミングチャートである。なお図18(b)では、前記データ{A1,B1,A2,B2,……}が時間的に最短のタイミングで転送される場合を示している。
データA1の転送のためにDMA−Aが起動され(t1)、DMAC801Aにより、データA1〜A4についてCM130からバッファ810Aへ続けて読み出しが行われる(t2〜t5)。そして、バッファ810Aからメモリ#2(113)へデータA1が転送される(t3)。次に、データB1の転送でDMA−Bが起動され(t3)、同様に、データB1〜B4についてCM130からバッファ310Bへ転送が行われ(t4〜t7)、バッファ310Bからメモリ#2(113)へデータB1が転送される(t5)。次に、データA2の転送でDMA−Aが起動され(t5)、ここで、前記基本動作の場合なら、メモリに記憶されている組の退避と、データA2の転送に必要なデータ転送情報とデータの組(A2〜A4)の回復を行うが、第4の制御の場合では、DMA−Aで、前記組(A2〜A4)についてメモリ#3(115)からの回復ではなく、CM130からバッファ310Aへと前記データA2〜A4を再読み込みさせ(t6〜t8)、そしてバッファ810Aからメモリ#2(113)へとデータA2の転送を行わせる(t7)。CM130から再読み込みされたデータ(A2〜A4)を用いてデータA2の転送が制御可能である。同様に、データB2の転送に応じて(t7)、DMA−Bで、データB2〜B4について、CM130から再読み込みを行わせ(t8〜t10)、データB2をメモリ#2(113)へ転送する(t9)。データA3,B3以後の転送についても同様である(t9〜t11、t11〜t13、t13〜t15、及びt15〜t17)。
このように、前記基本動作ではCM130からメモリ#2(113)へのデータ転送で退避と回復を行ったが、第4の制御では、前記DMA部800のメモリに記憶された組の廃棄とCM130からの転送データ再読み込みの動作により、各データ転送の都度の退避と回復無しで各データブロックをメモリ#2(113)へ転送することとなる。これにより、前記基本動作で行っていた退避と回復の動作分が削減されるので、処理全体に要する時間が短縮される。
第4の制御は、前記第1、第2、第3の制御と独立しても、組み合わせても実行可能である。なお、前記キャッシュリードの処理では、CHA110のデータ転送LSI114から、接続部150を介して、CM130からのデータ読み出しが行われる。従って、第3の制御と同様に、制御装置100の構成において、接続部150の構成との整合が問題にならない場合では、第4の制御を行うことが有利である。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
本発明は、複数のデータ転送を多重に処理する装置や情報処理システムなどに利用可能である。
11…基本筐体、12…増設筐体、13…制御パッケージ、14…電源ユニット、15…バッテリ、16…ファン、30…記憶装置、100,101,102…ストレージ制御装置、110…チャネル制御部、110A,110B…回路基板、111…メモリコントローラ#2、112…プロセッサ#2、112B…プロトコルLSI、113…メモリ#2、114…データ転送LSI、115…メモリ#3、116…メモリコントローラ#1、117…メモリ#1、118…コネクタ、119…プロセッサ#1、120…共有メモリ、130…キャッシュメモリ、140…ディスク制御部、150…接続部、151…内部LAN、200…情報処理装置、300,301,302…ストレージ駆動装置、310…記憶ボリューム、500…SAN、600,601,602…ストレージ装置、700…他装置、800,800A,800B…DMA部、801,801A,801B…DMA制御部、803…転送起動レジスタ、804…転送レジスタ、805…初期設定レジスタ、806…スクリプトレジスタ、807,807A,807B…レジスタ、810,810A,810B…転送データバッファ。
Claims (19)
- 他装置からデータ入出力要求を受信して、記憶装置上の記憶ボリュームに対してデータ入出力処理する制御装置を備えるストレージ装置であって、
前記制御装置は、
前記データ入出力処理のために前記他装置との間でのデータ転送を制御するものであり、
前記データ入出力処理を制御する入出力制御部と、
前記入出力制御部の指示に基づいて前記データ転送を制御するデータ転送制御部と、
前記データ転送における転送先または転送元となる第1のメモリ部と、
前記データ転送を制御するためのデータ転送情報を記憶する第2のメモリ部とを有し、
前記データ転送制御部は、
DMAデータ転送制御を行うデータ転送回路と、
前記他装置との通信インタフェースを備え通信処理を行う通信インタフェース部とを有し、
前記データ転送回路は、
DMA制御部と、前記データ転送情報を記憶するレジスタと、転送されるデータを記憶するバッファとを備えたDMA部を複数有し、前記DMA部の前記レジスタに記憶されるデータ転送情報と前記バッファに記憶されるデータとを前記第2のメモリ部へ退避する動作と、前記第2のメモリ部に退避されているデータ転送情報とデータとを前記DMA部の前記レジスタと前記バッファに回復する動作とを行わせ、前記複数のDMA部を用いて1つ以上のデータ転送を並行的に処理し、1つのDMA部においても前記退避や回復の動作を用いて前記データ転送を切り替えながら処理させて、複数のデータ転送を多重に処理し、前記データ転送処理中でないDMA部で、前記レジスタに記憶されているデータ転送情報と前記バッファに記憶されているデータとを、先行して前記第2のメモリ部へと退避させる制御を行うことを特徴とするストレージ装置。 - 請求項1記載のストレージ装置において、
前記制御装置のデータ入出力処理において、
前記入出力制御部は、前記他装置からのデータの受信や前記制御装置内からのコマンドに応じて、前記第1のメモリ部におけるデータ記憶位置と前記他装置におけるデータ記憶位置とを含むデータ転送情報を前記第2のメモリ部に書き込んで前記データ転送制御部を起動し、
前記起動されたデータ転送制御部は、前記複数のDMA部のいずれかを起動し、
前記起動されたDMA部は、前記第2のメモリ部から前記レジスタに読み出した前記データ転送情報に基づいて、前記バッファを介して、前記退避や回復の動作を用いながら、前記第1のメモリ部と前記通信インタフェース部の第3のメモリ部との間のデータ転送を制御することを特徴とするストレージ装置。 - 請求項1記載のストレージ装置において、
前記データ転送制御部によるデータ転送は、前記他装置との間で送受信される対象のデータを1つ以上に分割してなる各データブロックを単位として制御されることを特徴とするストレージ装置。 - 請求項1記載のストレージ装置において、
前記制御装置と前記他装置との間は、1つ以上のスイッチを介して通信可能に接続されており、
前記通信インタフェース部により、前記スイッチを介して、前記他装置との間で送受信される対象のデータを1つ以上に分割してなる各データブロックを単位として、データ転送を行うことを特徴とするストレージ装置。 - 請求項1記載のストレージ装置において、
前記通信インタフェース部は、前記他装置との通信処理で使用する第3のメモリ部を有し、
前記DMA部は、前記データ転送において、前記第1のメモリ部と前記第3のメモリ部との間でのデータ転送を行うことを特徴とするストレージ装置。 - 請求項1記載のストレージ装置において、
前記制御装置は、前記DMA部ごとに前記レジスタに記憶されるデータ転送情報と前記バッファに記憶されるデータとの組を、前記退避及び回復させるための個別の制御領域が設けられた第3のメモリが前記データ転送回路に接続された構成であり、
前記DMA部のそれぞれは、前記第3のメモリの制御領域に対して前記退避や回復の動作を行うことを特徴とするストレージ装置。 - 請求項1記載のストレージ装置において、
前記データ転送回路が、第1のDMA部で第1のデータ転送情報に基づく第1のデータ転送を行わせることを契機として、
前記第1のDMA部は、前記第2のメモリ部から前記第1のデータ転送情報とデータとを回復し、これを用いて前記第1のデータ転送を行い、
前記第1のデータ転送と並行して、第2のDMA部は、前記レジスタとバッファに記憶されている第2のデータ転送情報とデータとを、先行して前記第2のメモリ部へと退避することを特徴とするストレージ装置。 - 請求項1記載のストレージ装置において、
前記データ転送回路は、前記入出力制御部からの指示に応じて、前記データ入出力要求とデータ転送処理状況とを考慮しつつ、前記複数のDMA部のうちで、処理途中でないDMA部を優先して選択するように、前記データ転送を担当させるDMA部を決定し、前記決定したDMA部でのデータ転送を起動することを特徴とするストレージ装置。 - 請求項1記載のストレージ装置において、
前記制御装置は、
前記入出力制御部と、前記データ転送制御部と、前記第2のメモリ部とが形成された回路基板を備えるチャネル制御部と、
前記第1のメモリ部が形成された回路基板を備えるキャッシュメモリと、
前記キャッシュメモリから前記記憶装置上の記憶ボリュームの記憶領域に対するデータの読み書きを行う回路が形成された回路基板を備えるディスク制御部と、
前記チャネル制御部、キャッシュメモリ、及びディスク制御部を相互接続する接続部とを有して構成され、
前記データ転送回路は、前記バッファを介して、前記キャッシュメモリと前記通信インタフェース部の第3のメモリ部との間のデータ転送を制御することを特徴とするストレージ装置。 - 請求項1記載のストレージ装置において、
前記入出力制御部は、第1のプロセッサを有し、
前記第2のメモリ部は、前記第1のプロセッサにより前記データ転送情報が書き込まれる第1のメモリと、前記DMA部により使用される第3のメモリを有し、
前記通信インタフェース部は、前記他装置との間での通信を制御する第2のプロセッサと、前記他装置との間で転送されるデータを記憶する第2のメモリとを有して構成され、
前記DMA部は、前記データ転送において、前記第1のメモリから読み出したデータ転送情報を用い、前記第3のメモリに対する前記退避と回復を用いて、前記第1のメモリ部と前記第2のメモリとの間でのデータ転送を行うことを特徴とするストレージ装置。 - 請求項1記載のストレージ装置において、
前記入出力制御部は、第1のプロセッサを有し、
前記第2のメモリ部は、前記第1のプロセッサにより前記データ転送情報が書き込まれる第1のメモリと、前記DMA部により前記退避及び回復のために使用される第3のメモリを有し、
前記通信インタフェース部は、内部メモリにデータを記憶しながら前記他装置との間での通信を制御するプロトコルLSIで構成され、
前記DMA部は、前記データ転送において、前記第1のメモリから読み出したデータ転送情報を用い、前記第3のメモリに対する前記退避と回復を用いて、前記第1のメモリ部と前記プロトコルLSIの内部メモリとの間でのデータ転送を行うことを特徴とするストレージ装置。 - 請求項1記載のストレージ装置において、
前記データ転送制御部は、前記DMA部で第2のデータ転送を行わせる際、その第2のデータ転送が、そのDMA部での過去の第1のデータ転送に関連するデータ入出力であり、前記退避済みのレジスタとバッファにその第2のデータ転送に必要なデータ転送情報やデータが記憶されている場合は、それを利用して前記回復動作無しで前記第2のデータ転送を行わせることを特徴とするストレージ装置。 - 請求項12記載のストレージ装置において、
前記データ転送制御部は、前記他装置からのデータの受信や前記制御装置内からのコマンドに応じて、前記データ入出力で関連する複数のデータ転送である場合には、それら複数のデータ転送を、できる限り同じDMA部に連続して担当させ、前記回復動作無しで前記複数のデータ転送を行わせることを特徴とするストレージ装置。 - 請求項9記載のストレージ装置において、
前記制御装置は、前記データ入出力処理において、
通常時には、前記退避や回復の動作を用いてデータ転送を処理し、
前記DMA部のバッファから前記キャッシュメモリへ、関連する複数のデータをまとめて書き込む処理の時には、前記データ転送制御部は、前記他装置側から前記DMA部のバッファへと前記複数のデータにおける各データを蓄積するごとに、前記第2のメモリ部に対する退避と回復の動作無しで前記キャッシュメモリへ書き込みする制御を行うことを特徴とするストレージ装置。 - 請求項9記載のストレージ装置において、
前記制御装置は、前記データ入出力処理において、
通常時には、前記退避や回復の動作を用いてデータ転送を処理し、
前記キャッシュメモリから前記DMA部のバッファへ、関連する複数のデータをまとめて読み出す処理の時には、前記データ転送制御部は、前記複数のデータについて、その各データを前記DMA部のバッファから前記他装置側へと転送するごとに、前記第2のメモリ部に対する退避と回復の動作無しで前記キャッシュメモリから再読み出ししたデータを用いて前記他装置側へデータ転送する制御を行うことを特徴とするストレージ装置。 - 他装置からデータ入出力要求を受信して、記憶装置上の記憶ボリュームに対してデータ入出力処理する制御装置を備えるストレージ装置であって、
前記制御装置は、前記データ入出力処理のために前記他装置との間でのデータ転送を制御するもので、前記データ入出力処理を制御する第1のプロセッサと、前記第1のプロセッサの指示に基づいて前記データ転送を制御するデータ転送制御部と、前記データ転送における転送先または転送元となるキャッシュメモリと、前記第1のプロセッサにより書き込まれる前記データ転送を制御するためのデータ転送情報を記憶する第1のメモリと前記データ転送制御部により使用される第3のメモリとを有し、
前記データ転送制御部は、DMAデータ転送制御を行うデータ転送回路と、前記他装置との通信インタフェースを備え通信処理を行う通信インタフェース部とを有し、
前記通信インタフェース部は、前記他装置との間での通信を制御する第2のプロセッサと、前記他装置との間で転送されるデータを記憶する第2のメモリとを有し、
前記データ転送回路は、DMA制御部と、前記データ転送情報を記憶するレジスタと、転送されるデータを記憶するバッファとを備えたDMA部を複数有し、
前記DMA部は、前記データ転送の制御において、前記第1のメモリから読み出したデータ転送情報に従って、前記レジスタに記憶されるデータ転送情報と前記バッファに記憶されるデータとを前記第3のメモリへ退避する動作と、前記第3のメモリに退避されているデータ転送情報とデータとを前記レジスタと前記バッファに回復する動作とを用いて、前記キャッシュメモリと前記第2のメモリとの間でのデータ転送を行い、
前記データ転送制御部は、前記複数のDMA部を用いて1つ以上のデータ転送を並行的に処理し、1つのDMA部においても前記退避や回復の動作を用いて前記データ転送を切り替えながら処理させて、複数のデータ転送を多重に処理し、前記データ転送処理中でないDMA部で前記レジスタに記憶されているデータ転送情報と前記バッファに記憶されているデータとを、先行して前記第3のメモリへと退避させる制御を行うことを特徴とするストレージ装置。 - 情報処理装置からデータ入出力要求を受信して、記憶装置上の第1の記憶ボリュームに対してデータ入出力処理を行う第1の制御装置を備えた第1のストレージ装置と、
前記第1の制御装置と通信可能に接続され、記憶装置上の第2の記憶ボリュームに対してデータ入出力処理を行う第2の制御装置を備えた第2のストレージ装置とを有するストレージシステムを構成する、前記第1のストレージ装置であって、
前記第1の制御装置は、
前記第1または第2の記憶ボリュームに対するデータ入出力処理のために、他装置である前記情報処理装置または前記第2の制御装置との間でのデータ転送を制御するものであり、
前記データ入出力処理を制御する入出力制御部と、
前記入出力制御部の指示に基づいて前記データ転送を制御するデータ転送制御部と、
前記データ転送における転送先または転送元となる第1のメモリ部と、
前記データ転送を制御するためのデータ転送情報を記憶する第2のメモリ部とを有し、
前記データ転送制御部は、
DMAデータ転送制御を行うデータ転送回路と、
前記他装置との通信インタフェースを備え通信処理を行う通信インタフェース部とを有し、
前記データ転送回路は、
DMA制御部と、前記データ転送情報を記憶するレジスタと、転送されるデータを記憶するバッファとを備えたDMA部を複数有し、前記DMA部の前記レジスタに記憶されるデータ転送情報と前記バッファに記憶されるデータとを前記第2のメモリ部へ退避する動作と、前記第2のメモリ部に退避されているデータ転送情報とデータとを前記DMA部の前記レジスタと前記バッファに回復する動作とを行わせ、前記複数のDMA部を用いて1つ以上のデータ転送を並行的に処理し、1つのDMA部においても前記退避や回復の動作を用いて前記データ転送を切り替えながら処理させて、複数のデータ転送を多重に処理し、前記データ転送処理中でないDMA部で、前記レジスタに記憶されているデータ転送情報と前記バッファに記憶されているデータとを、先行して前記第2のメモリ部へと退避させる制御を行うことを特徴とするストレージ装置。 - 請求項17記載のストレージ装置において、
前記入出力制御部は、
前記他装置である情報処理装置から、前記第2のストレージ装置内にある第2の記憶ボリュームに対するデータ入出力要求を受信すると、それに対応した前記第2のストレージ装置に対するデータ入出力処理のためのデータ転送を制御するためのデータ転送情報を、前記第2のメモリ部に書き込み、
前記データ転送制御部は、前記第2のメモリ部から前記レジスタに読み出した前記データ転送情報に基づいて、前記第1のメモリ部と前記第2の制御装置との間のデータ転送を制御することを特徴とするストレージ装置。 - 請求項17記載のストレージ装置において、
前記入出力制御部は、
前記他装置である情報処理装置から、前記第1の記憶ボリュームに対するデータ書き込み要求及び書き込みデータを受信すると、それに対応して、前記第1の記憶ボリュームに対するデータ書き込み処理と、前記書き込みデータの複製を前記第2のストレージ装置内にある第2の記憶ボリュームにも書き込む処理とのためのデータ転送を制御するためのデータ転送情報を、前記第2のメモリ部に書き込み、
前記データ転送制御部は、前記第2のメモリ部から前記レジスタに読み出した前記データ転送情報に基づいて、前記第1のメモリ部と前記第2の制御装置との間の前記書き込みデータの転送を含むデータ転送を制御することを特徴とするストレージ装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004375453A JP2006185000A (ja) | 2004-12-27 | 2004-12-27 | ストレージ装置 |
US11/136,577 US7426588B2 (en) | 2004-12-27 | 2005-05-25 | Storage apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004375453A JP2006185000A (ja) | 2004-12-27 | 2004-12-27 | ストレージ装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006185000A true JP2006185000A (ja) | 2006-07-13 |
Family
ID=36611306
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004375453A Pending JP2006185000A (ja) | 2004-12-27 | 2004-12-27 | ストレージ装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7426588B2 (ja) |
JP (1) | JP2006185000A (ja) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008071209A (ja) * | 2006-09-15 | 2008-03-27 | Fujitsu Ltd | ストレージ管理プログラム、ストレージ管理装置、およびストレージ管理方法 |
JP2008257596A (ja) * | 2007-04-06 | 2008-10-23 | Nec Corp | データプリフェッチデバイス、データプリフェッチ方法およびデータプリフェッチプログラム |
JP2008299425A (ja) * | 2007-05-29 | 2008-12-11 | Toshiba Corp | データ転送装置及びデータ転送方法 |
JP2010186303A (ja) * | 2009-02-12 | 2010-08-26 | Nec Corp | 情報処理システム及びその処理方法 |
JP2011164750A (ja) * | 2010-02-05 | 2011-08-25 | Fujitsu Ltd | ストレージ装置、ストレージ装置制御プログラムおよびストレージ装置制御方法 |
JP2014504749A (ja) * | 2011-06-24 | 2014-02-24 | 株式会社日立製作所 | ストレージシステム |
JP2017054321A (ja) * | 2015-09-10 | 2017-03-16 | 三菱電機株式会社 | 二重化システム |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102004038213A1 (de) * | 2004-08-05 | 2006-03-16 | Robert Bosch Gmbh | Verfahren und Vorrichtung zum Zugriff auf Daten eines Botschaftsspeichers eines Kommunikationsbausteins |
JP2008084057A (ja) * | 2006-09-28 | 2008-04-10 | Brother Ind Ltd | コンテンツ管理装置及びコンテンツ管理プログラム |
KR100826499B1 (ko) * | 2006-10-02 | 2008-05-02 | 삼성전자주식회사 | 차지펌프를 구비하는 반도체 메모리 장치 및 상기 차지펌프제어방법 |
JP4408126B2 (ja) * | 2006-12-13 | 2010-02-03 | 富士通株式会社 | 監視装置、半導体集積回路、および監視方法 |
JP2008287405A (ja) * | 2007-05-16 | 2008-11-27 | Hitachi Ltd | パス管理方法、ホスト計算機及びパス管理プログラム |
JP2012133405A (ja) * | 2009-07-24 | 2012-07-12 | Hitachi Ltd | ストレージ装置及びそのデータ転送制御方法 |
US9645738B2 (en) * | 2012-08-09 | 2017-05-09 | Spectra Logic Corporation | Direct memory access of remote data |
JP6288467B2 (ja) * | 2015-04-17 | 2018-03-07 | 京セラドキュメントソリューションズ株式会社 | 電子機器 |
KR20210046348A (ko) * | 2019-10-18 | 2021-04-28 | 삼성전자주식회사 | 복수의 프로세서들에 유연하게 메모리를 할당하기 위한 메모리 시스템 및 그것의 동작 방법 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5544347A (en) * | 1990-09-24 | 1996-08-06 | Emc Corporation | Data storage system controlled remote data mirroring with respectively maintained data indices |
US5805927A (en) * | 1994-01-28 | 1998-09-08 | Apple Computer, Inc. | Direct memory access channel architecture and method for reception of network information |
US6496878B1 (en) * | 1999-11-03 | 2002-12-17 | International Business Machines Corporation | Transfer progress alert module |
US6718481B1 (en) * | 2000-05-26 | 2004-04-06 | Emc Corporation | Multiple hierarichal/peer domain file server with domain based, cross domain cooperative fault handling mechanisms |
US20030191863A1 (en) * | 2001-07-02 | 2003-10-09 | Globespanvirata Incorporated | Communications system using rings architecture |
US7027821B2 (en) * | 2002-01-28 | 2006-04-11 | Bellsouth Intellectual Property Corporation | System and method for accessing computer services via a wireless network |
US7664909B2 (en) * | 2003-04-18 | 2010-02-16 | Nextio, Inc. | Method and apparatus for a shared I/O serial ATA controller |
US7058764B2 (en) * | 2003-04-14 | 2006-06-06 | Hewlett-Packard Development Company, L.P. | Method of adaptive cache partitioning to increase host I/O performance |
JP2005078596A (ja) * | 2003-09-03 | 2005-03-24 | Hitachi Ltd | データ転送装置の制御方法、データ転送装置、チャネル制御装置、及び記憶デバイス制御装置 |
US20060010260A1 (en) * | 2004-07-07 | 2006-01-12 | Fung Hon C | Direct memory access (DMA) controller and bus structure in a master/slave system |
-
2004
- 2004-12-27 JP JP2004375453A patent/JP2006185000A/ja active Pending
-
2005
- 2005-05-25 US US11/136,577 patent/US7426588B2/en active Active
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008071209A (ja) * | 2006-09-15 | 2008-03-27 | Fujitsu Ltd | ストレージ管理プログラム、ストレージ管理装置、およびストレージ管理方法 |
JP2008257596A (ja) * | 2007-04-06 | 2008-10-23 | Nec Corp | データプリフェッチデバイス、データプリフェッチ方法およびデータプリフェッチプログラム |
JP2008299425A (ja) * | 2007-05-29 | 2008-12-11 | Toshiba Corp | データ転送装置及びデータ転送方法 |
JP2010186303A (ja) * | 2009-02-12 | 2010-08-26 | Nec Corp | 情報処理システム及びその処理方法 |
JP2011164750A (ja) * | 2010-02-05 | 2011-08-25 | Fujitsu Ltd | ストレージ装置、ストレージ装置制御プログラムおよびストレージ装置制御方法 |
US8769195B2 (en) | 2010-02-05 | 2014-07-01 | Fujitsu Limited | Storage apparatus and storage apparatus control method |
JP2014504749A (ja) * | 2011-06-24 | 2014-02-24 | 株式会社日立製作所 | ストレージシステム |
JP2017054321A (ja) * | 2015-09-10 | 2017-03-16 | 三菱電機株式会社 | 二重化システム |
Also Published As
Publication number | Publication date |
---|---|
US20060140008A1 (en) | 2006-06-29 |
US7426588B2 (en) | 2008-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7426588B2 (en) | Storage apparatus | |
US6985994B2 (en) | Storage control apparatus and method thereof | |
US7577812B2 (en) | Storage controlling unit | |
JP4634157B2 (ja) | ストレージシステム | |
US7191287B2 (en) | Storage system having a plurality of interfaces | |
US7631218B2 (en) | RAID system and Rebuild/Copy back processing method thereof | |
US7272687B2 (en) | Cache redundancy for LSI raid controllers | |
JP4646526B2 (ja) | 記憶制御システム及び同システムの制御方法 | |
JP6009095B2 (ja) | ストレージシステム及び記憶制御方法 | |
JP7135162B2 (ja) | 情報処理システム、ストレージシステム及びデータ転送方法 | |
JP4786255B2 (ja) | ストレージシステム及び記憶制御方法 | |
US20060155883A1 (en) | Redundant storage virtualization computer system | |
US9003119B2 (en) | Control apparatus and method, and storage apparatus | |
US8868865B1 (en) | Computer system, server module, and storage module | |
JP2005258918A (ja) | ストレージシステムおよびストレージシステムのキャッシュメモリ制御方法 | |
WO1996018141A1 (fr) | Systeme informatique | |
US8473699B2 (en) | Facilitating data compression during replication using a compressible configuration bit | |
US8266342B1 (en) | Storage system | |
JP2005301419A (ja) | ディスクアレイ装置およびそのデータ処理方法 | |
US20110154165A1 (en) | Storage apparatus and data transfer method | |
JPH10105347A (ja) | ディスクアレイ制御システム | |
US20050223180A1 (en) | Accelerating the execution of I/O operations in a storage system | |
JP3793544B2 (ja) | ディスクアレイ装置及びその制御方法 | |
US10713171B2 (en) | Computer system | |
JP2005346426A (ja) | データ共有ディスク装置 |