JP2015018314A - ストレージ制御装置、制御プログラムおよび制御方法 - Google Patents

ストレージ制御装置、制御プログラムおよび制御方法 Download PDF

Info

Publication number
JP2015018314A
JP2015018314A JP2013143487A JP2013143487A JP2015018314A JP 2015018314 A JP2015018314 A JP 2015018314A JP 2013143487 A JP2013143487 A JP 2013143487A JP 2013143487 A JP2013143487 A JP 2013143487A JP 2015018314 A JP2015018314 A JP 2015018314A
Authority
JP
Japan
Prior art keywords
memory
switch
transfer
progress
status
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013143487A
Other languages
English (en)
Other versions
JP6217192B2 (ja
Inventor
貴志 堀
Takashi Hori
貴志 堀
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013143487A priority Critical patent/JP6217192B2/ja
Priority to US14/305,088 priority patent/US9323472B2/en
Publication of JP2015018314A publication Critical patent/JP2015018314A/ja
Application granted granted Critical
Publication of JP6217192B2 publication Critical patent/JP6217192B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk 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)
  • Bus Control (AREA)

Abstract

【課題】他のCMのメモリへの書き込み転送を実施する際、CM内の全体性能が向上する。
【解決手段】CM1は、ストレージに書き込まれるデータを一時的に記憶するメモリ11と、他のCM2と接続するスイッチ12と、スイッチ12を介してメモリ11上のデータを他のCM2へ転送するDMAコントローラ13とを有する。DMAコントローラ13は、転送されたデータの転送状況をスイッチ12から読み出し、読み出した転送状況をメモリ11に書き込む。
【選択図】図1

Description

本発明は、ストレージ制御装置などに関する。
ストレージ装置は、複数のCM(Controller Module)をPCI Expressバスで接続する。複数のCM間では、データの2重化や制御情報の受け渡しのため、CM間通信が行われる。CM間通信は、通信経路の状態によって失敗することがある。その際、通信起動側のCMは、適切なリカバリ処理を行うために、通信が正常に実施できたか否かをコマンド単位で正しく把握する必要がある。通信が正常に実施できたことは、自CMのDMAコントローラによって正常に終了されていること、自CMのスイッチから外に対して正しく転送されたことで把握される。
ここで、CM間の通信経路の異常検出を、図8を参照して説明する。図8は、CM間の通信経路の異常検出を説明する図である。なお、図8の例では、CM0が通信起動側のCMであるとする。CM0は、メモリと、DMA(Direct Memory Access)コントローラと、CPU(Central Processing Unit)と、スイッチとを有する。スイッチは、例えば、PCI Expressスイッチである。
まず、DMAコントローラは、メモリに記憶されるデータに関し、他のCMのメモリへの書き込み転送をスイッチに指示する(ステップS101)。メモリへの書き込み転送の指示を受けたスイッチは、メモリへの書き込み転送に対して正常応答する(ステップS102)。この正常応答は、他のCMに対する要求の受信を保証するものに過ぎず、他のCMがメモリの書き込み処理を完了したことを保障するものではない。この正常応答を受けたDMAコントローラは、正常終了の割り込みをCPUに通知する(ステップS103)。
メモリへの書き込み転送の指示を受けたスイッチでは、他のCMのメモリへ書き込み転送を実施する(ステップS104)。ここで、スイッチは、書き込み転送が失敗したとする。すると、スイッチは、書き込み転送が異常であることを応答する(ステップS105)。しかし、DMAコントローラは、書き込み転送が異常であることを認識できない。
正常終了の割り込みが通知されたCPUは、スイッチ上の経路の各デバイスに対して、CM間経路の異常の有無を読み出す(ステップS106)。なお、仮に、CPUからの読み出し処理のタイミングが、他のCMのメモリへの書き込み転送が完了していない時点であっても、CPUは、メモリへの書き込み転送が完了した結果を示すCM間経路の異常の有無を読み出すことができる。PCI Expressスイッチでは、メモリへの書き込み処理が実施された後に、読み出し処理を実施するからである。
特開2012−133405号公報 特開2012−48712号公報
しかしながら、他のCMのメモリへの書き込み転送を実施する際、CM内の全体性能が劣化するという問題がある。例えば、CPUが、スイッチ上の経路の異常の有無を読み出すので、読み出す間使用状態となり、他のプロセスを処理できない。したがって、CM内の全体性能が劣化してしまう。
1つの側面では、本発明は、他のCMのメモリへの書き込み転送を実施する際、CM内の全体性能が向上することを目的とする。
本願の開示するストレージ制御装置は、1つの態様において、ストレージに書き込まれるデータを一時的に記憶するメモリと、他のストレージ制御装置と接続するスイッチと、
前記スイッチを介して前記メモリ上のデータを前記他のストレージ制御装置へ転送するデータ転送部と、前記データ転送部によって転送されたデータの転送状況を前記スイッチから読み出し、読み出した転送状況を前記メモリに書き込む転送状況検出部と、を有する。
本願の開示するシステムの1つの態様によれば、他のCMのメモリへの書き込み転送を実施する際、CM内の全体性能を向上できる。
図1は、実施例1に係るRAID装置のハードウェア構成を示す図である。 図2は、実施例1に係るCMのシーケンスを示す図である。 図3は、DMAの完了状態の読み出しにおける問題を説明する図である。 図4は、実施例2に係るRAID装置のハードウェア構成を示す図である。 図5は、実施例2に係るCMのシーケンスを示す図である。 図6は、未完了のDMAコマンドの完了処理を誤って行ってしまう場合を説明する図である。 図7は、実施例3に係るCMのシーケンスを示す図である。 図8は、CM間の通信経路の異常検出を説明する図である。
以下に、本願の開示するストレージ制御装置、制御プログラムおよび制御方法の実施例を図面に基づいて詳細に説明する。なお、実施例によりこの発明が限定されるものではない。以下では、RAID(Redundant Arrays of Inexpensive Disks)装置に本発明を適用した場合について説明する。
[RAID装置の構成]
図1は、実施例1に係るRAID装置のハードウェア構成を示す図である。図1に示すように、RAID装置9は、複数のコントローラモジュール(CM)1,2と、PCIバス3と、ディスク4とを有する。CM1,2は、冗長化されている。ここでは0系のCM1と1系のCM2とが、PCIバス3を介してCM間通信を行う。PCIバス3には、例えば、PCI Expressバスである。
CM1,2は、ディスク4などのストレージと接続し、データを記憶するディスク4を制御する。なお、CM1が、通信起動側のCMであり、「ストレージ制御装置」の一例である。CM2が、「他のストレージ制御装置」の一例である。
CM1は、メモリ11と、スイッチ12と、DMAコントローラ13と、CPU14とを有する。CM2は、メモリ21と、スイッチ22と、DMAコントローラ23と、CPU24とを有する。なお、CM2は、CM1と同じデバイスを備えているので、CM2の説明を省略する。
メモリ11は、ディスク4に書き込まれるデータを一時的に記憶する。
スイッチ12は、例えば、PCI Expressスイッチであり、他のCM2のスイッチ22との間のデータ転送と、CM1内の各デバイス間でのデータ転送を行う。スイッチ12には、DMAコントローラ13側のデバイス(以降、「UP」という)121と、他のCM2側のデバイス(以降、「DW」という)122とが含まれる。UP121には、例えば、書き込み転送指示を正常に受け付けたか否かの状態が格納される。DW122には、例えば、他のCM2への書き込み転送が正常に完了したか否かの状態が格納される。
例えば、スイッチ12は、後述するDMAコントローラ13からの、他のCM2のメモリ21への書き込み転送指示により、DMAコントローラ13に対して正常に受け付けた旨の応答をする。加えて、スイッチ12は、PCIバス3を介して、他のCM2に対してメモリ21への書き込み転送を指示する。ここで、スイッチ12は、書き込み転送が失敗した場合、書き込み転送が異常であることをUP121に対して応答する。一例として、UP121およびDW122間での転送異常、DW122からの転送異常の場合が挙げられる。ここでいう書き込み転送の異常は、アンコレクタブルエラー(以降、「UE」)という。一方、スイッチ12は、書き込み転送が成功した場合、書き込み転送が正常であることをUP121に対して応答する。但し、スイッチ12は、DMAコントローラ13に対して、書き込み転送の正常/異常を通知しない。
また、スイッチ12は、DMAコントローラ13からの、データの転送状況の読み出し指示により、UP121およびDW122から転送状況を読み出し、読み出した転送状況についてDMAコントローラ13に応答する。
DMAコントローラ13は、CPU14を介さないでメモリ11と各デバイスとの間で直接データの転送を行う方式(DMA:Direct Memory Access)のコントローラである。なお、DMAコントローラ13は、データ転送部、転送状況検出部の一例である。
例えば、DMAコントローラ13は、メモリ11に記憶されたデータに関し、他のCM2のメモリ21への書き込み転送をスイッチ12に指示する。DMAコントローラ13は、メモリ21への書き込み転送指示に対する正常応答をスイッチ21から受け取ると、正常終了の割り込みをCPU14に通知する。但し、この正常応答は、他のCM2に対する要求の受け取りを保証するものに過ぎず、他のCM2への書き込み転送が完了したことを保障するものではない。
また、DMAコントローラ13は、データの転送状況の読み出しをスイッチ12のUP121に指示する。DMAコントローラ13は、データの転送状況をスイッチ12のUP121から受け取ると、受け取った転送状況をメモリ11に書き込む。また、DMAコントローラ13は、データの転送状況の読み出しをスイッチ12のDW122に指示する。DMAコントローラ13は、データの転送状況をスイッチ12のDW122から受け取ると、受け取った転送状況をメモリ11に書き込む。これにより、DMAコントローラ13は、CPU14を介さないで、直接スイッチ12からデータの転送状況を読み出すので、CPU14による処理がそのまま不要となり、CM1内の全体性能を向上できる。
CPU14は、メモリ11に書き込まれた転送状況を読み出す。例えば、CPU14は、DMAコントローラ13:によってメモリ11に書き込まれた転送状況に対応する応答を受け取ったタイミングで、当該転送状況を読み出す。これにより、CPU14は、スイッチ12からではなくメモリ11から読み出すので、高速にCM間の経路上の異常を検出できる。なお、CPU14は、制御部の一例である。
[CMのシーケンス]
次に、実施例1に係るCMのシーケンスを、図2を参照して説明する。図2は、CMのシーケンスを示す図である。なお、CM1が、通信起動側のCMであるとする。
図2に示すように、DMAコントローラ13は、メモリ11に記憶されたデータに関し、他のCM2のメモリ21への書き込み転送(Memory write)をスイッチ12のUP121に指示する(ステップS11)。
スイッチ12では、Memory writeの指示を受け付けたスイッチ12のUP121は、DMAコントローラ13に対して正常に受信した旨の応答を送信する(ステップS12)。このとき、UP121は、正常の転送状況を保持する。加えて、UP121は、DW122に対して、他のCM2のメモリ21へのMemory writeを指示する(ステップS13)。すると、DW122は、UP121からの指示に対する書き込み転送の正常/異常をUP121に応答する(ステップS14)。このとき、DW122は、正常/異常の転送状況を保持する。例えば、DW122は、他のCM2に対する書き込み転送が成功した場合、UP121に対して、正常である旨の応答を送信する。一方、DW122は、他のCM2に対する書き込み転送が失敗した場合、UP121に対して、異常である旨の応答を送信する。但し、UP121は、DMAコントローラ13に対して、書き込み転送の正常/異常を通知しない。
DMAコントローラ13では、Memory writeの指示に対する正常に受信した旨の応答を受信すると、データの転送状況の読み出し(Device Read)を、スイッチ12のUP121に指示する(ステップS15)。
スイッチ12では、Device Readの指示を受け付けたスイッチ12のUP121は、転送状況を読み出し、読み出した転送状況についてDMAコントローラ13に応答する(ステップS16)。
すると、DMAコントローラ13は、UP121から受信した転送状況をメモリ11に書き込む(ステップS17)。そして、DMAコントローラ13は、メモリ11から転送完了の応答を受信すると、データの転送状況の読み出し(Device Read)を、スイッチ12のDW122に指示する(ステップS19)。
スイッチ12では、Device Readの指示を受け付けたスイッチ12のDW122は、転送状況を読み出し、読み出した転送状況についてDMAコントローラ13に応答する(ステップS20)。
すると、DMAコントローラ13は、DW122から受信した転送状況をメモリ11に書き込む(ステップS21)。そして、DMAコントローラ13は、メモリ11から転送完了の応答を受信すると(ステップS22)、CPU14に対して、正常終了した旨の応答を通知する(ステップS23)。正常終了した旨の応答を受信したCPU14は、UEの有無を確認する(ステップS24)。すなわち、CPU14は、メモリ11に書き込まれた転送状況を読み出す。
[実施例1の効果]
上記実施例1によれば、DMAコントローラ13は、メモリ11上のデータを、スイッチ12を介して他のCM2へ転送する。そして、DMAコントローラ13は、転送状況をスイッチ12から読み出し、読み出した転送状況をメモリ11に書き込む。かかる構成によれば、DMAコントローラ13が、CPU14に代わってスイッチ12から転送状況を読み出すので、CPU14による読み出し処理が不要となり、CM1内の全体性能を向上できる。すなわち、CPU14は、読み出し処理の間、他の処理を並行して行うことができ、CM1内の全体性能を向上できる。
また、上記実施例1によれば、CPU14は、DMAコントローラ13によって書き込まれた転送状況をメモリ11から読み出す。かかる構成によれば、CPU14は、メモリ11から転送状況を読み出すので、高速にCM間の経路上の異常を検出できる。
ところで、実施例1では、DMAコントローラ13は、メモリ11上のデータを、スイッチ12を介して他のCM2へ転送し、転送状況をスイッチ12から読み出すことにより、CM1内の全体性能を向上する場合を説明した。しかしながら、DMAコントローラ13は、これに限定されず、さらに、転送状況が正常である場合のDMAの進捗状況の読み出しについて、CM1内の性能を向上するようにしても良い。
ここで、DMAの進捗状況を含む完了状態の読み出しにおける問題を、図3を参照して説明する。図3は、DMAの完了状態の読み出しにおける問題を説明する図である。図3に示すように、DMAコントローラ13は、メモリ11に記憶されるデータに関し、他のCM2のメモリ21への書き込み転送をスイッチ12に指示する(ステップS201)。メモリ21への書き込み転送の指示を受けたスイッチ12は、メモリ21への書き込み転送に対して正常応答する(ステップS202)。この正常応答は、他のCM2に対する要求の受信を保証するものに過ぎず、他のCM2がメモリ21の書き込み処理を完了したことを保障するものではない。この正常応答を受けたDMAコントローラ13は、正常終了の割り込みをCPU14に通知する(ステップS203)。
メモリ21への書き込み転送の指示を受けたスイッチ12では、他のCM2のメモリ21へ書き込み転送を実施する(ステップS204)。ここで、スイッチ12は、書き込み転送が成功したとする。すると、スイッチ12は、書き込み転送が正常であることを応答する(ステップS205)。ここでは、DMAコントローラ13は、書き込み転送が正常であることを認識できない。
正常終了の割り込みが通知されたCPU14は、DMAコントローラ13内の進捗レジスタおよびステータスレジスタからDMAの完了状態を読み出す(ステップS206)。ここで、進捗レジスタには、DMAが正常終了した場合に、DMAが正常終了したことに加えて、どこまでDMAが完了したかを示す進捗状況が保持されている。ステータスレジスタには、DMAが異常終了した場合に、DMAが異常終了したことに加えて、どのような異常であるかが保持されている。
このように、CPU14が、DMAコントローラ13内の進捗レジスタおよびステータスレジスタからDMAの進捗状況を含む完了状態を読み出すので、読み出しに時間を要し、CM1内の性能を劣化するという問題がある。
そこで、実施例2では、DMAコントローラ13が、DMAにおいて、他のCM2への転送状況をスイッチ12から読み出すとともに、転送状況が正常である場合に、DMAの進捗状況の読み出し性能を向上する場合について説明する。
[実施例2に係るRAID装置の構成]
図4は、実施例2に係るRAID装置のハードウェア構成を示す図である。なお、図1に示すRAID装置9と同一の構成については同一符号を示すことで、その重複する構成および動作の説明については省略する。実施例1と実施例2とが異なるところは、DMAコントローラ13をDMAコントローラ13Aに変更し、スイッチ12をスイッチ12Aに変更し、CPU14をCPU14Aに変更した点にある。
スイッチ12Aは、例えば、PCI Expressスイッチであり、他のCM2のスイッチ22との間のデータ転送と、CM1内の各デバイス間でのデータ転送を行う。スイッチ12Aは、自スイッチのデバイスに正常に書き込まれた場合に、CPU14Aに対して割り込みを通知するドアベル(Doorbell)機能を搭載する。例えば、スイッチ12Aは、後述するDMAコントローラ13Aからの、Doorbell書き込み転送指示により、UP121およびDW122に対してデータが書き込まれる。そして、スイッチ12Aは、正常に書き込まれた場合に、CPU14Aに対してDoorbell割り込みを通知する。つまり、Doorbell割り込みが通知されれば、他のCM2への書き込み転送が完了したことが保障される。
DMAコントローラ13Aは、CPU14を介さないでメモリ11と各デバイスとの間で直接データの転送を行う方式のコントローラである。なお、DMAコントローラ13Aは、メモリ11に記憶されたデータに関し、他のCM2のメモリ21への書き込み転送をスイッチ12Aに指示する。そして、DMAコントローラ13Aは、データの転送状況の読み出しをスイッチ12Aに指示し、メモリ11に書き込む。これらの処理は、実施例1と同様であるので、動作の説明を省略する。また、DMAコントローラ13は、データ転送部、転送状況検出部および進捗状況検出部の一例である。
例えば、DMAコントローラ13Aは、他のCM2のメモリ21への書き込み転送指示に対する正常応答をスイッチ21から受け取ると、進捗レジスタ相当の進捗状況をメモリ11に書き込む。そして、DMAコントローラ13Aは、Doorbell書き込み転送をスイッチ12Aに指示する。
CPU14Aは、メモリ11に書き込まれた進捗状況を読み出す。なお、CPU14Aは、メモリ11に書き込まれた転送状況を読み出すが、この処理は、実施例1と同様であるので、動作の説明を省略する。
例えば、CPU14Aは、スイッチ12AからDoorbell割り込みを受け取ると、メモリ11に書き込まれた進捗状況を読み出す。これにより、CPU14Aは、DMAコントローラ13Aのレジスタからではなくメモリ11から読み出すので、高速にDMAの進捗状況を検出できる。
[CMのシーケンス]
次に、実施例2に係るCMのシーケンスを、図5を参照して説明する。図5は、実施例2に係るCMのシーケンスを示す図である。なお、CM1が、通信起動側のCMであるとする。また、DMAの転送状況が正常であるとする。
図5に示すように、DMAコントローラ13Aは、メモリ11に記憶されたデータに関し、他のCM2のメモリ21への書き込み転送(Memory write)をスイッチ12AのUP121に指示する(ステップS31)。
スイッチ12Aでは、Memory writeの指示を受け付けたスイッチ12AのUP121は、DMAコントローラ13Aに対して正常に受信した旨の応答を送信する(ステップS32)。加えて、UP121は、DW122に対して、他のCM2のメモリ21へのMemory writeを指示する(ステップS34)。すると、DW122は、DMAの転送状況が正常である場合であるので、UP121からの指示に対する書き込み転送の正常をUP121に応答する(ステップS35)。
DMAコントローラ13Aでは、Memory writeの指示に対する正常に受信した旨の応答を受信すると、CPU14に対して、正常終了した旨の応答を通知する(ステップS33)。なお、CPU14は、この通知に対して何も処理しない。そして、DMAコントローラ13は、進捗レジスタ相当の進捗状況をメモリ11に書き込む(ステップS36)。続いて、DMAコントローラ13Aは、Doorbell書き込み転送(Doorbell write)をスイッチ12AのUP121に指示する(ステップS37)。
スイッチ12Aでは、Doorbell writeの指示を受け付けたスイッチ12AのUP121は、DMAコントローラ13Aに対して正常に受信した旨の応答を送信する(ステップS38)。加えて、UP121は、DW122に対して、Doorbell writeを指示する(ステップS39)。すると、DW122は、DMAの転送状況が正常である場合であるので、UP121からの指示に対する書き込み転送の正常をUP121に応答する(ステップS40)。そして、DW122は、書き込み転送が正常であったので、CPU14に対して、Doorbell割り込みを通知する(ステップS41)。
Doorbell割り込みを受け付けたCPU14は、メモリ11から、進捗レジスタ相当を読み出す(ステップS42)。すなわち、CPU14は、メモリ11に書き込まれたDMAの進捗状況を読み出す。
[実施例2の効果]
上記実施例2によれば、DMAコントローラ13Aは、データの転送に対応する応答をスイッチ12Aから受け取ると、データの転送に対応する進捗状況をメモリ11に書き込む。さらに、DMAコントローラ13Aは、スイッチ12A内のデバイスに正常に書き込まれた際に発行される割り込みをCPU14Aに対して通知させる。かかる構成によれば、DMAコントローラ13Aは、スイッチ12Aに、スイッチ12A内のデバイスに正常に書き込まれた際に発行される割り込みをCPU14Aに通知させることで、当該デバイスまでの書き込みが成功したことを知らせることができる。
また、上記実施例2によれば、CPU14Aは、スイッチ12Aからの割り込みを受け取ったタイミングで、メモリ11に書き込まれた進捗状況を読み出す。かかる構成によれば、CPU14Aは、進捗状況をDMAコントローラ13Aのレジスタからでなく、メモリ11から読み出すので、高速に進捗状況を検出できる。
ところで、実施例1では、DMAコントローラ13が、DMAにおいて、他のCM2への転送状況をスイッチ12から読み出すとともに、転送状況が正常である場合に、DMAの進捗状況の読み出し性能を向上する場合について説明した。すなわち、DMAコントローラ13は、転送状況が正常である場合のDMAの進捗レジスタ相当の進捗状況を、スイッチ12AのDoorbell機能を利用して、CPU14Aに読み出させる。しかしながら、複数のDMAコマンドが動作する場合に、未完了のDMAコマンドの完了処理を誤って行ってしまうおそれがあるという問題がある。
ここで、かかる問題について、図6を参照して説明する。図6は、未完了のDMAコマンドの完了処理を誤って行ってしまう場合を説明する図である。なお、DMAコマンドは、例えば、他のCM2のメモリ21への書き込み転送(Memory Write)コマンドであり、コマンド1とコマンド2とが動作中であるとする。メモリ11には、進捗A相当の進捗状況が書き込まれる進捗A領域が予め割り当てられているとする。また、図6では、図5のシーケンス内の処理を参照し、[ ]内の数字は、コマンド1の場合「1」とし、コマンド2の場合「2」とする。
このような状況の下、スイッチ12Aからコマンド1の指示に対する正常に受信した旨の応答を受信したDMAコントローラ13Aは、進捗A相当の進捗状況をメモリ11の進捗A領域に書き込む(ステップS36[1])。一例として、「コマンド1完了」が進捗A領域に書き込まれる。
続いて、スイッチ12Aからコマンド2の指示に対する正常に受信した旨の応答を受信したDMAコントローラ13Aは、進捗A相当の進捗状況をメモリ11の進捗A領域に書き込む(ステップS36[2])。一例として、「コマンド2完了」が進捗A領域に書き込まれる。
その後、CPU14Aは、コマンド1に対するDoorbell割り込みを受け付けると(ステップS41[1])、コマンド1は完了となる。そして、CPU14Aは、メモリ11から、進捗A相当を進捗A領域から読み出す(ステップS42[1])。ここでは、CPU14Aは、「コマンド2完了」を読み出してしまう。つまり、コマンド2は未完了であるにもかかわらず、未完了のコマンド2の完了処理が誤って行われてしまう。
そこで、実施例3では、複数のDMAコマンドが動作する場合であっても、未完了のDMAコマンドの完了処理を誤って行わないCM1について説明する。
[実施例3に係るRAID装置の構成]
実施例3に係るRAID装置のハードウェア構成は、実施例2に係るRAID装置のハードウェア構成(図4参照)と同様であるので、その重複する構成および動作の説明については省略する。
DMAコントローラ13Aは、進捗レジスタ相当の進捗領域を2つ分メモリ11に割り当て、2つの進捗領域にそれぞれ進捗状況を書き込む。例えば、DMAコントローラ13Aは、他のCM2のメモリ21への書き込み転送指示に対する正常応答をスイッチ11AのUP121から受け取ると、進捗レジスタ相当の進捗状況として、一例として現に動作中のDMAコマンドの識別子をメモリ11の1つ目の進捗領域に書き込む。そして、DMAコントローラ13Aは、Doorbell書き込み転送をスイッチ12Aに指示する。また、DMAコントローラ13Aは、データの転送状況をスイッチ12AのDW122から受け取ると、進捗レジスタ相当の進捗状況として、一例として現に動作中のDMAコマンドの識別子をメモリ11の2つ目の進捗領域に書き込む。これにより、DMAコントローラ13Aは、DMAの進捗として、UP121までの進捗とDW122までの進捗とをメモリ11に保持することができる。この結果、後述するCPU14Aは、複数の進捗状況を把握することができる。
CPU14Aは、メモリ11に書き込まれた進捗状況を読み出す。例えば、CPU14Aは、スイッチ12AからDoorbell割り込みを受け取ると、メモリ11の2つの進捗領域に書き込まれたそれぞれの進捗状況を読み出す。そして、CPU14Aは、読み出した2つの進捗状況が一致しているか否かを判定する。CPU14Aは、一致していると判定する場合、2つの進捗領域に対応するデバイスまで完了処理が実施されたと判断する。一方、CPU14Aは、一致していないと判定する場合、どちらか一方の進捗領域に対応するデバイスまで完了処理が実施されたと判断する。そして、CPU14Aは、一致していないと判定する場合、一例として、所定期間後に2つの進捗領域が一致することを確認すべく、判定処理を実行する。
なお、DMAコントローラ13Aは、Doorbell書き込み転送をスイッチ12Aに指示した後に、スイッチ12AのUP121およびDW122にそれぞれデータの転送状況の読み出しを指示するようにする。この結果、複数のDMAコマンドが動作する場合に、未完了の(次の)DMAコマンドの完了処理を誤って行ってしまうという問題は解決できる。スイッチ12Aは、現在のDMAコマンドの転送状況の読み出しが完了するまで、次のDMAコマンドを実行しない。したがって、DMAコントローラ13Aは、現在のDMAコマンドの転送状況の読み出しが完了した後にしか、次のDMAコマンドを処理できないことになる。さらに、スイッチ12Aは、現在のDMAコマンドの読み出し前に指示されたDoorbell書き込み転送を必ず先に実施し、Doorbell割り込みを先にCPU14Aに通知する。そうすると、CPU14Aは、次のDMAコマンドが処理される前に、Doorbell割り込みを受け付けるので、この段階で次のDMAコマンドの進捗状況を読み出すことはない。すなわち、複数のDMAコマンドが動作する場合であっても、未完了の(次の)DMAコマンドの完了処理を誤って行うことを防止できる。
[CMのシーケンス]
次に、実施例3に係るCMのシーケンスを、図7を参照して説明する。図7は、CMのシーケンスを示す図である。なお、コマンド1とコマンド2とが動作中であるとする。また、メモリ11には、進捗A相当の進捗状況が書き込まれる進捗A領域と、進捗B相当の進捗状況が書き込まれる進捗B領域とが予め割り当てられているとする。
図7に示すように、スイッチ12Aからコマンド1の指示に対する正常に受信した旨の応答を受信したDMAコントローラ13Aは、進捗A相当の進捗状況をメモリ11の進捗A領域に書き込む(ステップS51)。一例として、「コマンド1完了」が進捗A領域に書き込まれる。続いて、DMAコントローラ13Aは、Doorbell書き込み転送(Doorbell write)をスイッチ12AのUP121に指示する(ステップS52)。
続いて、スイッチ12AのDW122から転送状況を受信したDMAコントローラ13Aは、進捗B相当の進捗状況をメモリ11の進捗B領域に書き込む(ステップS53)。一例として、「コマンド1完了」が進捗B領域に書き込まれる。
その後、CPU14Aは、コマンド1に対するDoorbell割り込みをスイッチ12Aから受け付けると(ステップS54)、コマンド1は完了となる。そして、CPU14Aは、メモリ11から、進捗A相当を進捗A領域から読み出す(ステップS55)。そして、CPU14Aは、メモリ11から、進捗B相当を進捗B領域から読み出す(ステップS56)。ここでは、CPU14Aは、進捗A領域と進捗B領域がコマンド1であり一致しているので、コマンド1は、2つの進捗領域に対応するデバイスまで完了処理が実施されたと判断できる。
続いて、スイッチ12Aからコマンド2の指示に対する正常に受信した旨の応答を受信したDMAコントローラ13Aは、進捗A相当の進捗状況をメモリ11の進捗A領域に書き込む(ステップS57)。一例として、「コマンド2完了」が進捗A領域に書き込まれる。続いて、DMAコントローラ13Aは、Doorbell書き込み転送(Doorbell write)をスイッチ12AのUP121に指示する(ステップS58)。
続いて、スイッチ12AのDW122から転送状況を受信したDMAコントローラ13Aは、進捗B相当の進捗状況をメモリ11の進捗B領域に書き込む(ステップS59)。一例として、「コマンド2完了」が進捗B領域に書き込まれる。
その後、CPU14Aは、コマンド2に対するDoorbell割り込みをスイッチ12Aから受け付けると(ステップS60)、コマンド2は完了となる。そして、CPU14Aは、メモリ11から、進捗A相当を進捗A領域から読み出す(ステップS61)。そして、CPU14Aは、メモリ11から、進捗B相当を進捗B領域から読み出す(ステップS62)。ここでは、CPU14Aは、進捗A領域と進捗B領域がコマンド2であり一致しているので、コマンド2は、2つの進捗領域に対応するデバイスまで完了処理が実施されたと判断できる。
[実施例3の効果]
上記実施例3によれば、DMAコントローラ13Aは、データの転送に対応する応答をスイッチ12Aから受け取ると、データの転送に対応する進捗状況をメモリ11の第1の領域に書き込む。そして、DMAコントローラ13Aは、転送状況をスイッチ12AのDW122から読み出すと、データの転送に対応する進捗状況をメモリ11の第2の領域に書き込む。さらに、DMAコントローラ13Aは、スイッチ12A内のデバイスに正常に書き込まれた際に発行される割り込みをCPU14Aに対して通知させる。そして、CPU14Aは、割り込みを受け取ったタイミングで、第1の領域および第2の領域に書き込まれた進捗状況を読み出す。かかる構成によれば、DMAコントローラ13Aは、メモリ11の第1の領域および第2の領域に、データの転送に対応する進捗状況を書き込むので、データの転送に関わる進捗状況を保持できる。この結果、CPU14Aは、データの転送に関わる複数の進捗を把握することができる。
[その他]
なお、実施例3では、DMAコントローラ13Aは、進捗レジスタ相当の進捗領域を2つ分メモリ11に割り当て、2つの進捗領域にそれぞれ進捗状況を書き込む。しかしながら、DMAコントローラ13Aは、これに限定されず、進捗レジスタ相当の進捗領域を2つ以上メモリ11に割り当て、割り当てた複数の進捗領域にそれぞれ進捗状況を書き込むようにしても良い。これにより、DMAコントローラ13Aは、DMAの進捗として、さらに複数の進捗状況をメモリ11に保持することができる。
以上説明した実施形態及びその変形例に関し、更に以下の付記を開示する。
(付記1)ストレージに書き込まれるデータを一時的に記憶するメモリと、
他のストレージ制御装置と接続するスイッチと、
前記スイッチを介して前記メモリ上のデータを前記他のストレージ制御装置へ転送するデータ転送部と、
前記データ転送部によって転送されたデータの転送状況を前記スイッチから読み出し、読み出した転送状況を前記メモリに書き込む転送状況検出部と、
を有することを特徴とするストレージ制御装置。
(付記2)前記転送状況検出部によって書き込まれた転送状況を、前記メモリから読み出す制御部
を有することを特徴とする付記1に記載のストレージ制御装置。
(付記3)前記データ転送部によるデータの転送に対応する応答を前記スイッチから受け取ると、前記データの転送に対応する進捗状況を前記メモリに書き込み、さらに、前記スイッチ内のデバイスに正常に書き込まれた際に発行される割り込みを前記制御部に対して通知させる進捗状況検出部
を有することを特徴とする付記2に記載のストレージ制御装置。
(付記4)前記制御部は、前記割り込みを受け取ったタイミングで、前記メモリに書き込まれた進捗状況を読み出す
ことを特徴とする付記3に記載のストレージ制御装置。
(付記5)前記進捗状況検出部は、前記データ転送部によるデータの転送に対応する応答を前記スイッチから受け取ると、前記データの転送に対応する進捗状況を前記メモリの第1の領域に書き込み、前記転送状況検出部によって前記転送状況を前記スイッチから読み出すと、前記データの転送に対応する進捗状況を前記メモリの第2の領域に書き込み、さらに、前記スイッチ内のデバイスに正常に書き込まれた際に発行される割り込みを前記制御部に対して通知させ
前記制御部は、前記割り込みを受け取ったタイミングで、前記第1の領域および前記第2の領域に書き込まれた進捗状況を読み出す
ことを特徴とする付記4に記載のストレージ制御装置。
(付記6)コンピュータに、
他のストレージ制御装置と接続するスイッチを介してストレージに書き込まれるデータを一時的に記憶するメモリ上のデータを前記他のストレージ制御装置へ転送し、
前記転送する処理によって転送されたデータの転送状況を前記スイッチから読み出し、読み出した転送状況を前記メモリに書き込む
処理を実行させることを特徴とする制御プログラム。
(付記7)ストレージ制御装置が、
他のストレージ制御装置と接続するスイッチを介してストレージに書き込まれるデータを一時的に記憶するメモリ上のデータを前記他のストレージ制御装置へ転送し、
前記転送する処理によって転送されたデータの転送状況を前記スイッチから読み出し、読み出した転送状況を前記メモリに書き込む
処理を実行することを特徴とする制御方法。
1,2 CM
3 PCIバス
4 ディスク
11,21 メモリ
12,12A,22 スイッチ
13,13A,23 DMAコントローラ
14,14A,24 CPU
121 UP
122 DW

Claims (6)

  1. ストレージに書き込まれるデータを一時的に記憶するメモリと、
    他のストレージ制御装置と接続するスイッチと、
    前記スイッチを介して前記メモリ上のデータを前記他のストレージ制御装置へ転送するデータ転送部と、
    前記データ転送部によって転送されたデータの転送状況を前記スイッチから読み出し、読み出した転送状況を前記メモリに書き込む転送状況検出部と、
    を有することを特徴とするストレージ制御装置。
  2. 前記転送状況検出部によって書き込まれた転送状況を、前記メモリから読み出す制御部
    を有することを特徴とする請求項1に記載のストレージ制御装置。
  3. 前記データ転送部によるデータの転送に対応する応答を前記スイッチから受け取ると、前記データの転送に対応する進捗状況を前記メモリに書き込み、さらに、前記スイッチ内のデバイスに正常に書き込まれた際に発行される割り込みを前記制御部に対して通知させる進捗状況検出部
    を有することを特徴とする請求項2に記載のストレージ制御装置。
  4. 前記制御部は、前記割り込みを受け取ったタイミングで、前記メモリに書き込まれた進捗状況を読み出す
    ことを特徴とする請求項3に記載のストレージ制御装置。
  5. コンピュータに、
    他のストレージ制御装置と接続するスイッチを介してストレージに書き込まれるデータを一時的に記憶するメモリ上のデータを前記他のストレージ制御装置へ転送し、
    前記転送する処理によって転送されたデータの転送状況を前記スイッチから読み出し、読み出した転送状況を前記メモリに書き込む
    処理を実行させることを特徴とする制御プログラム。
  6. ストレージ制御装置が、
    他のストレージ制御装置と接続するスイッチを介してストレージに書き込まれるデータを一時的に記憶するメモリ上のデータを前記他のストレージ制御装置へ転送し、
    前記転送する処理によって転送されたデータの転送状況を前記スイッチから読み出し、読み出した転送状況を前記メモリに書き込む
    処理を実行することを特徴とする制御方法。
JP2013143487A 2013-07-09 2013-07-09 ストレージ制御装置、制御プログラムおよび制御方法 Active JP6217192B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013143487A JP6217192B2 (ja) 2013-07-09 2013-07-09 ストレージ制御装置、制御プログラムおよび制御方法
US14/305,088 US9323472B2 (en) 2013-07-09 2014-06-16 Storage controlling device and controlling method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013143487A JP6217192B2 (ja) 2013-07-09 2013-07-09 ストレージ制御装置、制御プログラムおよび制御方法

Publications (2)

Publication Number Publication Date
JP2015018314A true JP2015018314A (ja) 2015-01-29
JP6217192B2 JP6217192B2 (ja) 2017-10-25

Family

ID=52278102

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013143487A Active JP6217192B2 (ja) 2013-07-09 2013-07-09 ストレージ制御装置、制御プログラムおよび制御方法

Country Status (2)

Country Link
US (1) US9323472B2 (ja)
JP (1) JP6217192B2 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012133405A (ja) * 2009-07-24 2012-07-12 Hitachi Ltd ストレージ装置及びそのデータ転送制御方法
JP2012212360A (ja) * 2011-03-31 2012-11-01 Nec Corp 入出力制御装置、コンピュータ、及び制御方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8589603B2 (en) 2010-08-30 2013-11-19 International Business Machines Corporation Delaying acknowledgment of an operation until operation completion confirmed by local adapter read operation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012133405A (ja) * 2009-07-24 2012-07-12 Hitachi Ltd ストレージ装置及びそのデータ転送制御方法
JP2012212360A (ja) * 2011-03-31 2012-11-01 Nec Corp 入出力制御装置、コンピュータ、及び制御方法

Also Published As

Publication number Publication date
US20150019826A1 (en) 2015-01-15
US9323472B2 (en) 2016-04-26
JP6217192B2 (ja) 2017-10-25

Similar Documents

Publication Publication Date Title
JP7002346B2 (ja) ストレージシステム及びその動作方法
JP5427360B2 (ja) フラッシュメモリに基づくメモリシステム
KR100640037B1 (ko) 파일 제어 시스템 및 파일 제어 장치
JP4658122B2 (ja) Dmaコントローラ、ノード、データ転送制御方法、及びプログラム
JP5910444B2 (ja) 情報処理装置、起動プログラム、および起動方法
US9092398B2 (en) Restoring expander operations in a data storage switch
US9501372B2 (en) Cluster system including closing a bus using an uncorrectable fault upon a fault detection in an active server
JP2014032516A (ja) ストレージ装置、制御装置およびデータ保護方法
CN114868117A (zh) 通过控制总线进行的对等存储设备消息传送
JP4535371B2 (ja) ディスクアレイ制御プログラム、方法及び装置
JP5034979B2 (ja) 起動装置、起動方法、及び、起動プログラム
CN116724297A (zh) 一种故障处理方法、装置及系统
JP6217192B2 (ja) ストレージ制御装置、制御プログラムおよび制御方法
JP2016059012A (ja) 受信装置、送信装置およびデータ転送システム
JP2010536112A (ja) 中断された書込みの回復のためのデータ記憶方法、機器およびシステム
US20170109099A1 (en) Storage device, storage system, and method of controlling storage device
JP5748214B2 (ja) 二重化情報処理システム
JP5223612B2 (ja) ディスク制御装置およびファームウェアの更新方法
JP2015106372A (ja) ストレージ制御装置、ストレージ制御装置の制御プログラム、およびストレージ制御装置の制御方法
US20070174722A1 (en) Input/output control method, computer product, and disk control apparatus
WO2023208228A1 (zh) 存储装置及数据处理方法
JP4432975B2 (ja) パケット通信デバイス、パケット通信方法、およびパケット通信プログラム
JP2017151511A (ja) 情報処理装置、動作ログ取得方法および動作ログ取得プログラム
JP5907105B2 (ja) ストレージ装置、方法、及び、プログラム。
JP5888419B2 (ja) データ処理装置、プロセッサ、及び動作履歴記録方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160405

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170407

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170829

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170911

R150 Certificate of patent or registration of utility model

Ref document number: 6217192

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150