JP5962260B2 - ストレージ装置および書込完了通知方法 - Google Patents

ストレージ装置および書込完了通知方法 Download PDF

Info

Publication number
JP5962260B2
JP5962260B2 JP2012147930A JP2012147930A JP5962260B2 JP 5962260 B2 JP5962260 B2 JP 5962260B2 JP 2012147930 A JP2012147930 A JP 2012147930A JP 2012147930 A JP2012147930 A JP 2012147930A JP 5962260 B2 JP5962260 B2 JP 5962260B2
Authority
JP
Japan
Prior art keywords
notification
control device
data
dma
write
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.)
Expired - Fee Related
Application number
JP2012147930A
Other languages
English (en)
Other versions
JP2014010713A (ja
Inventor
善之 徳光
善之 徳光
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 JP2012147930A priority Critical patent/JP5962260B2/ja
Priority to US13/926,434 priority patent/US20140006742A1/en
Publication of JP2014010713A publication Critical patent/JP2014010713A/ja
Application granted granted Critical
Publication of JP5962260B2 publication Critical patent/JP5962260B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • 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)
  • Debugging And Monitoring (AREA)

Description

本発明は、ストレージ装置などに関する。
近年、入出力の高性能化に対する需要が増大し、PCIExpress(以下、「PCIe」と記載する場合がある)などの高速な入出力インタフェースが利用されている。ストレージ装置でも、ディスクなどのストレージを制御するコントローラモジュール(以下、「CM」と記載)の内部でPCIe仕様のスイッチが設けられている。図6を用いて、PCIeスイッチを設けた従来技術に係るストレージ装置について説明する。
図6は、従来技術に係るストレージ装置の構成の一例を示す図である。図6に示すように、ストレージ装置900は、CM#0およびCM#1が冗長化され、CM#2およびCM#3が冗長化され、CM#0〜CM#3は、PCIeスイッチで接続されている。そして、CM#3がホストと接続されている。CM#0〜CM#3は、CPU910とDIMM(Dual Inline Memory Module)920とメモリコントローラ930とを有する。さらに、CM#0〜CM#3は、CA(Channel Adapter)940とDI(Disk Interface)950とDMA(Direct Memory Access)コントローラ960とPCIeスイッチ970とを有する。DIMM920は、メモリモジュールである。メモリコントローラ930は、DIMM920を制御するコントローラである。CA940は、ホストとのインタフェースである。DI950は、ディスクとのインタフェースである。DMAコントローラ960は、CM間のDMAにおけるコントローラである。DMAとは、CPU910を介さないで他のCMとDIMM920との間で直接データを転送するデータ転送方式である。DMAによるDIMM920へのデータの書き込みは、「DMAライト」と呼ばれる。
PCIeスイッチ970は、入出力デバイスとしてメモリコントローラ930、CA940、DI950およびDMAコントローラ960と接続する。そして、PCIeスイッチ970は、内部に入出力デバイス毎のキューを持ち、キューに蓄積されたパケットを順次処理する。そして、メモリコントローラ930側にも、PCIeスイッチ970から出力されるパケットを蓄積するキュー931を持ち、PCIeスイッチ970が、このキュー931が満杯になっているかどうかをキューにおける残クレジット数で判断する。
ここで、ホストからCM#0およびCM#1が管轄するディスク領域へのライト命令が発生した場合、処理の流れは以下のようになる。まず、ホストは、接続するCM#3のCA940へライト命令を出力する。次に、CM#3のCA940は、DIMM920へDMAライトを行う。そして、CM#3のDMAコントローラ960は、CM#0およびCM#1のメモリ空間へDMAライトを行う。
続いて、CM#0およびCM#1では、DMAコントローラ960が、PCIeスイッチ970を介してDIMM920へのDMAライトを試みる。このとき、PCIeスイッチ970は、メモリコントローラ930側のキュー931における残クレジット数がゼロでなければ、DMAライト命令のパケットを滞りなくメモリコントローラ930側へ送信する。そして、メモリコントローラ930は、受信したパケットが示すDMAライト命令に従いメモリ空間にライトする。
そして、CM#0およびCM#1では、DMAコントローラ960が、CPU910に対してDMAライトの完了割り込みを行い、CPU910がCM#3のCA940にDMAライトの完了を通知する。そして、CM#3では、CA940がホストに対してライト完了を通知する。なお、PCIeスイッチ970は、残クレジット数がゼロであれば、DMAライト命令のパケットをメモリコントローラ930に送信しないで、クレジットに空きがでるまで待つことになる。
特開2008−9980号公報
しかしながら、ホストから同じCMに対してライト命令が集中した場合、ホストのライト性能が低下するという問題がある。すなわち、ライト命令が集中したCMのPCIeスイッチは、残クレジット数がゼロになると、DMAライト命令のパケットをメモリコントローラに送信しないで、クレジットに空きができるまで待つ。この結果、ホストは、クレジットに空きが発生し、DMAライトが完了するまで、ライト命令の完了を受けることができない。したがって、ホストのライト性能が低下してしまう。
1つの側面では、本発明は、ホストから同じCMに対してライト命令が集中した場合であっても、ホストのライト性能の低下を抑制することを目的とする。
本願の開示するストレージ装置は、1つの態様において、第1の制御装置と第2の制御装置とを有する。第1の制御装置は、データの書き込みを制御するメモリコントローラと、前記メモリコントローラにより管理されているキューの状態を判定する第1の判定部と、前記第1の判定部によって前記メモリコントローラ内のキューが所定の状態であると判定された場合、前記所定の状態である旨を示す状態通知を出力する第1の通知部と、を有する。第2の制御装置は、上位装置から前記第1の制御装置が管轄するストレージへのデータの書込み命令を受信した場合、前記第1の制御装置から出力された前記状態通知が受信済みか否かを判定する第2の判定部と、前記第2の判定部によって前記第1の制御装置から出力された前記状態通知が受信済みであると判定された場合、前記書込み命令のデータを他の制御装置に退避する退避部と、前記退避部によって前記書込み命令のデータの退避が完了した後、前記上位装置へ書き込みが完了した旨を示す完了通知を出力する第2の通知部と、を有する。
本願の開示するストレージ装置の1つの態様によれば、ホストから同じCMに対してライト命令が集中した場合であっても、ホストのライト性能の低下を抑制できる。
図1は、実施例1に係るストレージ装置のハードウェア構成を示す図である。 図2は、実施例1に係るストレージ装置のCM間のシーケンスを示す図である。 図3は、実施例2に係るストレージ装置のハードウェア構成を示す図である。 図4は、実施例3に係るストレージ装置のハードウェア構成を示す図である。 図5Aは、実施例3に係るストレージ装置のCM間のシーケンスを示す図(1)である。 図5Bは、実施例3に係るストレージ装置のCM間のシーケンスを示す図(2)である。 図5Cは、実施例3に係るストレージ装置のCM間のシーケンスを示す図(3)である。 図6は、従来のストレージ装置の構成を示す図である。
以下に、本願の開示するストレージ装置および書込完了通知方法の実施例を図面に基づいて詳細に説明する。なお、本実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。以下では、ストレージ装置に本発明を適用した場合について説明する。
[ストレージ装置の構成]
図1は、実施例1に係るストレージ装置のハードウェア構成を示す図である。図1に示すように、ストレージ装置9は、複数のCM(Controller Module)1〜4とディスク5、6とPCIeスイッチ7とを有する。CM1〜4は、PCIeスイッチ7を介して互いに接続されている。CM1、2は、ディスク5と接続し、データを冗長化する。CM3、4は、ディスク6と接続し、データを冗長化する。さらに、CM4は、サーバなどのホストコンピュータを示すホスト8と接続する。以下では、CM4が、ホスト8からCM1、2が管轄するディスク5へのデータの書き込み命令を受け取る場合の動作を中心に説明する。なお、CM4が、「第2の制御装置」の一例であり、CM1、2が、「第1の制御装置」の一例である。
CM1は、DIMM11と、メモリコントローラ12と、CA13と、DI14と、DMAコントローラ15と、PCIeスイッチ16と、PCH(Platform Controller Hub)17と、CPU18とを有する。なお、CM2は、CM1と同様の構成であるため、その説明を省略する。
DIMM11は、メモリモジュールである。メモリコントローラ12は、キューを用いてDIMM11へのデータの書き込みを制御する。メモリコントローラ12は、内部にキュー12aを持ち、後述するPCIeスイッチ16から出力されるパケットを受け取り、キュー12aに蓄積する。そして、メモリコントローラ12は、キュー12aに蓄積されたパケットを順次DIMM11に書き込む。なお、メモリコントローラ12は、キュー12aが満杯になると、キュー12aに空きができるまでPCIeスイッチ16からのパケットを受け付けることができない。キュー12aが満杯になる例として、ホスト8からの書き込み命令が集中した場合が挙げられる。
CA13は、ホスト8とのインタフェースである。DI14は、ディスク5とのインタフェースである。
DMAコントローラ15は、CM間のDMAにおけるコントローラである。DMAとは、CPUを介さないで他のCMとDIMM11との間で直接データを転送するデータ転送方式のことである。ここで、DMAによるDIMM11へのデータの書き込みは、「DMAライト」という。例えば、DMAコントローラ15は、CM4からデータの書き込み命令としてDMAライト命令を受け取ると、PCIeスイッチ16を介してDIMM11へのDMAライトを試みる。そして、DMAコントローラ15は、DIMM11へのDMAライトが完了すると、後述するCPU18に対してDMAライトの完了割り込みを行う。
PCIeスイッチ16は、PCIe仕様の入出力インタフェースを示すスイッチである。PCIeスイッチ16は、入出力デバイスとしてメモリコントローラ12、CA13、DI14およびDMAコントローラ15と接続する。そして、PCIeスイッチ16は、内部に入出力デバイス毎のキューを持ち、キューに蓄積されたパケットを順次処理する。例えば、PCIeスイッチ16は、メモリコントローラ12へ出力するパケットを蓄積するキュー16aを持つ。また、PCIeスイッチ16は、CA13からのパケットを蓄積するキュー16bを持つ。また、PCIeスイッチ16は、DI14からのパケットを蓄積するキュー16cを持つ。さらに、PCIeスイッチ16は、DMA15からのパケットを蓄積するキュー16dを持つ。
また、PCIeスイッチ16は、メモリコントローラ12内のキュー12aが満杯であるか否かを判定する。そして、PCIeスイッチ16は、メモリコントローラ12内のキュー12aが満杯であると判定した場合、満杯である旨を示す信号(例えば「アラート信号」という)を他のCMへ直接出力する。これにより、PCIeスイッチ16は、DMAライトを行うCM4に対して、メモリコントローラ12内のキュー12aが満杯であることを容易に知らせることができる。このPCIeスイッチ16が、「第1の判定部」、「第1の通知部」の一例である。なお、PCIeスイッチ16は、メモリコントローラ12内のキュー12aが満杯であるか否かを、メモリコントローラ12内のキュー12aにおける空きのクレジット数で判定できる。
PCH17は、割り込みコントローラや周辺機器との接続インタフェースを有するチップである。
CPU18は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。また、CPU18は、割り込みを検出し、検出した割り込みに応じて種々の処理を実行する。例えば、CPU18は、DMAコントローラ15からのDMAライトの完了割り込みを検出すると、CM4に対してDMAライトが完了した旨を通知する。
CM4は、DIMM41と、メモリコントローラ42と、CA43と、DI44と、DMAコントローラ45と、PCIeスイッチ46と、PCH47と、CPU48とを有する。なお、CM3は、CM4と同様の構成であるため、その説明を省略する。
DIMM41は、メモリモジュールである。メモリコントローラ42は、キューを用いてDIMM41へのデータの書き込みを制御する。
CA43は、ホスト8とのインタフェースである。例えば、CA43は、ホスト8からCM1、2が管轄するディスク5へのデータの書き込み命令を受け取ると、メモリコントローラ42を介してDIMM41へデータをDMAライトする。すなわち、CA43は、DMAによるDIMM41へのデータの書き込みを行う。CA43がDIMM41へデータの書き込みをするのは、書き込み命令のデータを一時的に退避するためである。
DI44は、ディスク6とのインタフェースである。
DMAコントローラ45は、CM間のDMAにおけるコントローラである。例えば、DMAコントローラ45は、データの書き込み命令のあったCM1およびCM2のメモリ空間に対してDMAライトを行う。
PCIeスイッチ46は、入出力デバイスとしてメモリコントローラ42、CA43、DI44およびDMAコントローラ45と接続する。そして、PCIeスイッチ46は、図示しないが内部に入出力デバイス毎のキューを持ち、キューに蓄積されたパケットを順次処理する。
PCH47は、割り込みコントローラや周辺機器との接続インタフェースを有するチップである。PCH47は、他のCMからアラート信号を入力すると、後述するCPU48に対して、当該CMからアラート信号の入力があったことを示す割り込みを行う。
CPU48は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。また、CPU48は、割り込みを検出し、検出した割り込みに応じて種々の処理を実行する。例えば、CPU48は、ホスト8からCM1およびCM2へのデータの書き込み命令が受け取られた場合、CM1またはCM2からアラート信号が通知されたか否かを判定する。CM1またはCM2からアラート信号が通知されたか否かは、PCH47からの割り込みが検出されたか否かで判定される。そして、CPU48は、CM1またはCM2からアラート信号が通知されたと判定した場合、書き込み命令のデータを自CM4と冗長化されたCM3へ退避する。これは、自CMのDIMM41にデータを一時的に格納しているが、自CMの万一の故障に備えてさらにデータを退避しておくためである。そして、CPU48は、CM3からデータの退避が完了した旨を受け取ると、CA43を介してホスト8へデータの書き込みが完了したことを通知する。これにより、CM1またはCM2からアラート信号が通知されていても、CM4は、ホスト8に対してデータの書き込みが完了したことを通知できるので、ホスト8のライト性能の低下を抑制できる。なお、CPU48が、「第2の判定部」、「退避部」、「第2の通知部」の一例である。
また、CPU48は、CM3からデータの退避が完了した旨を受け取ると、CM1およびCM2からアラート信号が通知されないと判定した場合に、CM1およびCM2に対してDMAライトを行う。DMAライトは、DMAコントローラ45を介して行われる。そして、CPU48は、CM1およびCM2からDMAライトの完了の通知を受け取ると、退避したデータを破棄する。すなわち、CPU48は、自CMのDIMM41に記憶したデータおよびCM3に退避したデータを破棄する。
なお、上記説明では、CM4は、ホスト8からCM1およびCM2へのデータの書き込み命令を受け取った際、CM1またはCM2からアラート信号が入力された場合の動作について説明した。しかしながら、CM4は、CM1およびCM2からアラート信号が入力されない場合もある。かかる場合は、CM4では、CPU48が、データを退避しないで、CM1およびCM2に対してDMAライトを行う。そして、CM4では、CPU48が、CM1およびCM2からDMAライトの完了の通知を受け取ると、CA43を介してホスト8へデータの書き込みが完了したことを通知する。かかる場合には、CM4は、ホスト8に対してデータの書き込みが完了したことを即通知でき、ホスト8のライト性能を維持できる。
[ストレージ装置のCM間のシーケンス]
次に、実施例1に係るストレージ装置のCM間のシーケンスを、図2を参照して説明する。図2は、実施例1に係るストレージ装置のCM間のシーケンスを示す図である。なお、図2では、CM1をCM#0とし、CM2をCM#1とし、CM3をCM#2とし、CM4をCM#3として説明するものとする。なお、ホスト8は、CM#3と接続されているとする。また、図2で示すアラートとは、例えばアラート信号を意味する。
まず、ホスト8は、CM#0、CM#1が管轄するディスク5へのデータの書き込み(ライト)を行うべく、CM#3のCA43へライト命令を実行する(ステップS11)。すると、CM#3では、ライト命令を受け取ったCA43が、メモリコントローラ42を介してDIMM41へデータをDMAライトする(ステップS12)。すなわち、DIMM41は、データを一時的に記憶する。
続いて、CM#3のCPU48は、CM#0またはCM#1からアラートがあり、かつ自CMと冗長化されたCM#2からアラートがないか否かを判定する(ステップS13)。例えば、CMからアラートがあるか否かは、PCH47からの割り込みが検出されたか否かで判定される。CM#0またはCM#1からアラートがあり、かつCM#2からアラートがないと判定した場合(ステップS13;Yes)、DMAコントローラ45は、CM#2のメモリ空間に対してデータをDMAライトする(ステップS14)。つまり、DMAコントローラ45は、書き込み命令のデータを自CMと冗長化されたCM#2に退避する。
すると、CM#2では、DMAコントローラが、データをDIMMへDMAライトする。そして、DMAコントローラは、DIMMへのDMAライトが完了すると、CPUに対してDMAライトの完了割り込みを行う。さらに、DMAライトの完了割り込みを検出したCPUは、CM#3に対してDMAライトが完了した旨を通知し(ステップS15)、ステップS19およびステップS22に移行させる。
一方、CM#0およびCM#1のいずれからもアラートがないと判定した場合(ステップS13;No)、DMAコントローラ45は、CM#0およびCM#1のそれぞれのメモリ空間にデータをDMAライトする(ステップS16)。つまり、DMAコントローラ45は、データを退避しないで、CM#0およびCM#1にDMAライトを行う。
そして、CM#0では、DMAコントローラ15が、データをDIMM11へDMAライトする。そして、DMAコントローラ15は、DIMM11へのDMAライトが完了すると、CPU18に対してDMAライトの完了割り込みを行う。さらに、DMAライトの完了割り込みを検出したCPU18は、CM#3に対してDMAライトが完了した旨を通知し(ステップS17)、ステップS19に移行させる。
そして、CM#1では、DMAコントローラが、データをDIMMへDMAライトする。そして、DMAコントローラは、DIMMへのDMAライトが完了すると、CPUに対してDMAライトの完了割り込みを行う。さらに、DMAライトの完了割り込みを検出したCPUは、CM#3に対してDMAライトが完了した旨を通知し(ステップS18)、ステップS19に移行させる。
ステップS19では、CM#3のCPU48が、CM#2からDMAライトの完了通知または、CM#0かつCM#1からDMAライトの完了通知があったか否かを判定する(ステップS19)。CM#2からDMAライトの完了通知がなく、およびCM#0かつCM#1からDMAライトの完了通知がなかったと判定した場合(ステップS19;No)、CPU48は、判定処理を繰り返す。一方、CM#2からDMAライトの完了通知または、CM#0かつCM#1からDMAライトの完了通知があったと判定した場合(ステップS19;Yes)、CPU48は、CA43を介してホスト8へデータのライトが完了したことを通知する(ステップS20)。データのライトが完了したことを通知されたホスト8は、ライトの完了を検知する(ステップS21)。
ステップS22では、CM#3のCPU48は、CM#0またはCM#1からアラートがあるか否かを判定する(ステップS22)。CM#0またはCM#1からアラートがあると判定した場合(ステップS22;Yes)、CPU48は、判定処理を繰り返す。一方、CM#0およびCM#1からのいずれからもアラートがないと判定した場合(ステップS22;No)、DMAコントローラ45は、CM#0およびCM#1のそれぞれのメモリ空間にデータをDMAライトする(ステップS23)。つまり、DMAコントローラ45は、CM#0およびCM#1のいずれもアラートがなくなったので、CM#0およびCM#1にDMAライトを行う。
そして、CM#0では、DMAコントローラ15が、データをDIMM11へDMAライトする。そして、DMAコントローラ15は、DIMM11へのDMAライトが完了すると、CPU18に対してDMAライトの完了割り込みを行う。さらに、DMAライトの完了割り込みを検出したCPU18は、CM#3に対してDMAライトが完了した旨を通知し(ステップS24)、ステップS26に移行させる。
そして、CM#1では、DMAコントローラが、データをDIMMへDMAライトする。そして、DMAコントローラは、DIMMへのDMAライトが完了すると、CPUに対してDMAライトの完了割り込みを行う。さらに、DMAライトの完了割り込みを検出したCPUは、CM#3に対してDMAライトが完了した旨を通知し(ステップS25)、ステップS26に移行させる。
ステップS26では、CM#3のCPU48が、CM#0かつCM#1からDMAライトの完了通知があったか否かを判定する(ステップS26)。CM#0かつCM#1のどちらか一方からDMAライトの完了通知がなかったと判定した場合(ステップS26;No)、CPU48は、判定処理を繰り返す。
一方、CM#0かつCM#1からDMAライトの完了通知があったと判定した場合(ステップS26;Yes)、CPU48は、一時的に格納したデータを破棄する(ステップS27)。例えば、CPU48は、自CMのDIMM41に一時的に記憶したデータおよびCM#2に退避したデータを破棄する。
[実施例1の効果]
上記実施例1によれば、CM1では、メモリコントローラ12が、キュー12aを用いてDIMM11へのデータの書き込みを制御する。そして、PCIeスイッチ16が、メモリコントローラ12内のキュー12aが満杯であるか否かを判定し、メモリコントローラ12内のキュー12aが満杯であると判定した場合、満杯である旨をCM4へ通知する。CM4では、ホスト8からCM1が管轄するディスク5へのデータの書込み命令が受け付けられた場合、CPU48が、CM1からキュー12aが満杯である旨が通知されたか否かを判定する。そして、CM1から満杯である旨が通知されたと判定された場合、CPU48が、書き込み命令のデータを他のCMに退避する。さらに、退避が完了した後、CPU48が、CA43を介して、書き込みが完了したことをホスト8へ通知する。かかる構成によれば、CM4は、ホスト8からキュー12aが満杯であるCM1のデータの書き込み命令を受けても、データを退避したうえでホスト8にデータの書き込みが完了したことを通知するので、ホスト8のライト性能の低下を抑制できる。
また、上記実施例1によれば、CM1のPCIeスイッチ16は、メモリコントローラ12内のキュー12aが満杯である旨(アラート信号)をCM4へ直接出力する。そして、CM4では、CPU48が、CM1からキュー12aが満杯である旨が通知されたか否かを判定する。かかる構成によれば、CM4は、CM1のメモリコントローラ12内のキュー12aが枯渇していることを容易に知ることができる。
また、上記実施例1によれば、CM4のCPU48は、CM1からデータの書き込みが完了した旨の通知を受け取ると、退避されたデータを破棄するようにした。かかる構成によれば、CPU48は、CM1のデータの書き込みが完了すると、予め退避したデータを破棄することで、その後のメモリの使用効率を高めることができる。
ところで、実施例1に係るストレージ装置9では、PCIeスイッチ16が、メモリコントローラ12内のキュー12aが満杯である旨を、他のCMへ直接出力する場合を説明した。しかしながら、ストレージ装置9では、これに限定されず、CPU18が、PCIeスイッチ16と連携して、メモリコントローラ12内のキュー12aが満杯である旨を他のCMへ出力するようにしても良い。そこで、実施例2では、CPU18が、PCIeスイッチ16と連携して、メモリコントローラ12内のキュー12aが満杯である旨を他のCMへ出力するストレージ装置9Aについて説明する。
[実施例2に係るストレージ装置の構成]
図3は、実施例2に係るストレージ装置のハードウェア構成を示す図である。なお、図1に示すストレージ装置9と同一の構成については同一符号を示すことで、その重複する構成および動作の説明については省略する。実施例1と実施例2とが異なるところは、PCIeスイッチ16をPCIeスイッチ16Aに変更した点にある。また、実施例1と実施例2とが異なるところは、CPU18をCPU18Aに変更した点にある。さらに、実施例1と実施例2とが異なるところは、CPU48をCPU48Aに変更した点にある。
PCIeスイッチ16Aは、残クレジットレジスタ16eを持つ。残クレジットレジスタ16eとは、メモリコントローラ12内のキュー12aにおける残り(空き)のクレジット数を保持するレジスタである。PCIeスイッチ16Aは、残クレジットレジスタ16eを用いて、メモリコントローラ12内のキュー12aが満杯であるか否かを判定し、満杯であると判定した場合、後述するCPU18Aに対してキュー12aが満杯である旨のアラートを通知する。一例として、PCIeスイッチ16Aは、CPU18Aに対してキュー12aが満杯である旨の割り込みを行う。別の例として、PCIeスイッチ16Aは、CPU18Aからの問い合わせ(例えば、ポーリング)に応じて、キュー12aが満杯であれば満杯である旨のアラートを通知する。
CPU18Aは、メモリコントローラ12内のキュー12aが満杯である旨のアラートを検出すると、検出したアラートを、PCIeスイッチ7を介して、ホスト8と接続するCM4に通知する。一例として、CPU18Aは、PCIeスイッチ16Aからのキュー12aが満杯である旨の割り込みを検出すると、キュー12aが満杯である旨のアラートをCM4に対して通知する。別の例として、CPU18Aは、定期的にPCIeスイッチ16Aにメモリコントローラ12内のキュー12aが満杯であるか否かを問い合わせる。そして、CPU18Aは、問い合わせに対してPCIeスイッチ16Aからキュー12aが満杯である旨のアラートを検出すると、検出したアラートをCM4に対して通知する。なお、CPU18Aが「第1の通知部」の一例である。
CPU48Aは、ホスト8からCM1およびCM2へのデータの書き込み命令が受け付けられた場合、CM1またはCM2からキューが満杯である旨のアラートが通知されたか否かを判定する。CM1またはCM2からキューが満杯である旨のアラートが通知されたか否かは、PCIeスイッチ7を介したメッセージ転送が受け付けられたか否かによって判定される。そして、CPU48Aは、CM1またはCM2からアラートが通知されたと判定した場合、書き込み命令のデータを自CM4と冗長化されたCM3へ退避する。そして、CPU48Aは、CM3からデータの退避が完了した旨を受け取ると、CA43を介してホスト8へデータの書き込みが完了したことを通知する。これにより、CM1またはCM2からアラートが通知されていても、CM4は、ホスト8に対してデータの書き込みが完了したことを通知できるので、ホスト8のライト性能の低下を抑制できる。
また、CPU48Aは、CM3からデータの退避が完了した旨を受け取ると、CM1およびCM2からアラートが通知されないと判定した場合に、CM1およびCM2に対してDMAライトを行う。DMAライトは、DMAコントローラ45を介して行われる。そして、CPU48Aは、CM1およびCM2からDMAライトの完了の通知を受け取ると、退避したデータを破棄する。すなわち、CPU48Aは、自CMのDIMM41に記憶したデータおよびCM#2に退避したデータを破棄する。なお、CPU48Aが「破棄部」の一例である。
[ストレージ装置のCM間のシーケンス]
実施例2に係るストレージ装置のCM間のシーケンスについては、実施例1と同様であるので、その説明については省略する。
[実施例2の効果]
上記実施例2によれば、CM1では、CPU18Aが、メモリコントローラ12内のキュー12aが満杯である旨(アラート)をPCIeスイッチ16Aからの通知を受けて、PCIeスイッチ7を介してCM4へ通知する。そして、CM4では、CPU48Aが、CM1からキュー12aが満杯である旨が通知されたか否かを判定する。かかる構成によれば、CM4は、CM1のメモリコントローラ12内のキュー12aが枯渇していることを新たな装置を追加しないでも容易にCM1に知ることができる。この結果、ホスト8から同じCM1に対してライト命令が集中した場合であっても、ホスト8のライト性能の低下を抑制することが可能となる。
また、上記実施例2によれば、CM1では、CPU18Aが、メモリコントローラ12内のキュー12aが満杯である旨(アラート)をPCIeスイッチ16Aに問い合わせることによって検出する。そして、CPU18Aは、検出したアラートを、PCIeスイッチ7を介してCM4へ通知するようにした。かかる構成によれば、CM4は、CM1のメモリコントローラ12内のキュー12aが枯渇していることを新たな装置を追加しないでも容易に検知できる。この結果、ホスト8から同じCM1に対してライト命令が集中した場合であっても、ホスト8のライト性能の低下を抑制することが可能となる。
ところで、実施例1に係るストレージ装置9では、CM4のCPU48が、CM1からメモリコントローラ12内のキュー12aが満杯である旨が通知された場合、ディスクが冗長化されたCM3へ書き込み命令のデータを退避する場合を説明した。しかしながら、ストレージ装置9では、CPU48が、CM1からメモリコントローラ12内のキュー12aが満杯である旨が通知された場合、ディスクが冗長化されたCM3の縮退時に再冗長化されたCMへ書き込み命令のデータを退避しても良い。そこで、実施例3では、CPU48が、CM1からメモリコントローラ12内のキュー12aが満杯である旨が通知された場合、ディスクが冗長化されたCM3の縮退時に再冗長化されたCMへ書き込み命令のデータを退避するストレージ装置9Bについて説明する。
[実施例3に係るストレージ装置の構成]
図4は、実施例3に係るストレージ装置のハードウェア構成を示す図である。なお、図1に示すストレージ装置9と同一の構成については同一符号を示すことで、その重複する構成および動作の説明については省略する。実施例1と実施例3とが異なるところは、ストレージ装置9Bにバックエンドインタフェーススイッチ10を追加した点にある。また、実施例1と実施例3とが異なるところは、CPU48をCPU48Bに変更した点にある。
バックエンドインタフェーススイッチ10は、ディスクの冗長化の管轄を切り替えるスイッチである。例えば、CM3、CM4がディスク6と接続し、データが冗長化されている場合、CM3の縮退時に、バックエンドインタフェーススイッチ10は、CM3を異なるCMに切り替えて、切り替えたCMとCM4で再冗長化する。
CPU48Bは、ホスト8からCM1およびCM2へのデータの書き込み命令が受け取られた場合、CM1またはCM2からアラート信号が通知されたか否かを判定する。他のCMからアラート信号が通知されたか否かは、PCH47からの割り込みが検出されたか否かで判定される。そして、CPU48Bは、CM1またはCM2からアラート信号が通知されたと判定した場合、さらに、自CMと冗長化されたCM3からアラート信号が通知されたか否かを判定する。そして、CPU48Bは、自CMと冗長化されたCM3からアラート信号が通知されたと判定した場合、バックエンドインタフェーススイッチ10を利用して、アラート信号が通知されていないCMを自CMと再冗長化させる。なお、CPU48Bは、アラート信号が通知されていないCMにデータの書き込み命令先のCMが含まれていれば、当該CMを自CMと再冗長化させることが望ましい。これは、データの書き込み命令先のCMからのアラート信号がなくなったタイミングで、当該CMにもデータを書き込むことになるからである。
[ストレージ装置のCM間のシーケンス]
次に、実施例3に係るストレージ装置のCM間のシーケンスを、図5A〜図5Cを参照して説明する。図5A〜図5Cは、実施例3に係るストレージ装置のCM間のシーケンスを示す図である。なお、図5A〜図5Cでは、CM1をCM#0とし、CM2をCM#1とし、CM3をCM#2とし、CM4をCM#3として説明するものとする。なお、ホスト8は、CM#3と接続されているとする。また、図5A〜図5Cで示すアラートとは、例えばアラート信号を意味する。
まず、ホスト8は、CM#0、CM#1が管轄するディスク5へのデータの書き込み(ライト)を行うべく、CM#3のCA43へライト命令を実行する(ステップS31)。すると、CM#3では、ライト命令を受け取ったCA43が、メモリコントローラ42を介してDIMM41へデータをDMAライトする(ステップS32)。すなわち、DIMM41は、データを一時的に記憶する。
続いて、CM#3のCPU48Bは、CM#0またはCM#1からアラートがあるか否かを判定する(ステップS33)。例えば、CMからアラートがあるか否かは、PCH47からの割り込みが検出されたか否かで判定される。CM#0またはCM#1からアラートがあると判定した場合(ステップS33;Yes)、CPU48Bは、さらに自CMと冗長化されたCM#2からアラートがあるか否かを判定する(ステップS34)。
自CMと冗長化されたCM#2からアラートがあると判定した場合(ステップS34;Yes)、CM#3のCPU48Bは、ライト命令先の一方のCM#1からアラートがあるか否かを判定する(ステップS35)。ここで、ライト命令先の一方のCM#1からアラートがないと判定した場合(ステップS35;No)、DMAコントローラ45は、CM#1のメモリ空間に対してデータをDMAライトする(ステップS35A)。つまり、DMAコントローラ45は、自CMと冗長化されたCM#2からアラートがあり、CM#2に書き込み命令のデータを退避できないので、書き込み命令先のアラートがないCM#1に当該データを退避する。
すると、CM#1では、DMAコントローラが、データをDIMMへDMAライトする。そして、DMAコントローラは、DIMMへのDMAライトが完了すると、CPUに対してDMAライトの完了割り込みを行う。さらに、DMAライトの完了割り込みを検出したCPUは、CM#3に対してDMAライトが完了した旨を通知し(ステップS36)、ステップS37およびステップS39に移行させる。
ステップS37では、CM#3のCPU48Bが、CA43を介してホスト8へデータのライトが完了したことを通知する(ステップS37)。データのライトが完了したことを通知されたホスト8は、ライトの完了を検知する(ステップS38)。
ステップS39では、CM#3のCPU48Bは、CM#0からアラートがあるか否かを判定する(ステップS39)。CM#0からアラートがあると判定した場合(ステップS39;Yes)、CPU48Bは、判定処理を繰り返す。一方、CM#0からアラートがないと判定した場合(ステップS39;No)、DMAコントローラ45は、CM#0のメモリ空間にデータをDMAライトする(ステップS40)。つまり、DMAコントローラ45は、CM#0からアラートがなくなったので、CM#0にDMAライトを行う。
そして、CM#0では、DMAコントローラ15が、データをDIMM11へDMAライトする。そして、DMAコントローラ15は、DIMM11へのDMAライトが完了すると、CPU18に対してDMAライトの完了割り込みを行う。さらに、DMAライトの完了割り込みを検出したCPU18は、CM#3に対してDMAライトが完了した旨を通知する(ステップS41)。
CM#3では、CM#0からDMAライトの完了通知を受け取ったCPU48Bが、一時的に格納したデータを破棄する(ステップS42)。ここでは、CPU48Bは、CM#1に退避したデータをそのまま活用し、自CMのDIMM41に一時的に記憶したデータを破棄する。
ステップS35では、ライト命令先の一方のCM#1からアラートがあると判定した場合(ステップS35;Yes)、CM#3のCPU48Bは、ライト命令先の他方のCM#0からアラートがあるか否かを判定する(ステップS43)。ここで、ライト命令先の他方のCM#0からアラートがあると判定した場合(ステップS43;Yes)、CPU48Bは、判定処理を繰り返すべく、ステップS33に移行する。これは、ライト命令先のCM#0およびCM#1のいずれからもアラートがあるからである。
一方、ライト命令先の他方のCM#0からアラートがないと判定した場合(ステップS43;No)、DMAコントローラ45は、CM#0のメモリ空間に対してデータをDMAライトする(ステップS43A)。つまり、DMAコントローラ45は、自CMと冗長化されたCM#2からアラートがあり、CM#2に書き込み命令のデータを退避できないので、書き込み命令先のアラートがないCM#0に当該データを退避する。
すると、CM#0では、DMAコントローラ15が、データをDIMM11へDMAライトする。そして、DMAコントローラ15は、DIMM11へのDMAライトが完了すると、CPU18に対してDMAライトの完了割り込みを行う。さらに、DMAライトの完了割り込みを検出したCPU18は、CM#3に対してDMAライトが完了した旨を通知し(ステップS44)、ステップS45およびステップS47に移行させる。
ステップS45では、CM#3のCPU48Bが、CA43を介してホスト8へデータのライトが完了したことを通知する(ステップS45)。データのライトが完了したことを通知されたホスト8は、ライトの完了を検知する(ステップS46)。
ステップS47では、CM#3のCPU48Bは、CM#1からアラートがあるか否かを判定する(ステップS47)。CM#1からアラートがあると判定した場合(ステップS47;Yes)、CPU48Bは、判定処理を繰り返す。一方、CM#1からアラートがないと判定した場合(ステップS47;No)、DMAコントローラ45は、CM#1のメモリ空間にデータをDMAライトする(ステップS49)。つまり、DMAコントローラ45は、CM#1からアラートがなくなったので、CM#1にDMAライトを行う。
そして、CM#1では、DMAコントローラが、データをDIMMへDMAライトする。そして、DMAコントローラは、DIMMへのDMAライトが完了すると、CPUに対してDMAライトの完了割り込みを行う。さらに、DMAライトの完了割り込みを検出したCPUは、CM#3に対してDMAライトが完了した旨を通知する(ステップS50)。
CM#3では、CM#1からDMAライトの完了通知を受け取ったCPU48Bが、一時的に格納したデータを破棄する(ステップS51)。ここでは、CPU48Bは、CM#0に退避したデータをそのまま活用し、自CMのDIMM41に一時的に記憶したデータを破棄する。
なお、CM#0およびCM#1からのアラートがない場合(ステップS33;No)と、CM#0またはCM#1からアラートがあり、かつCM#2からアラートがない場合(ステップS34;No)の処理は、図2のS14〜S27で説明した。したがって、かかる処理は、以降、簡略して説明する。
ステップS34では、CM#0またはCM#1からアラートがあり、かつCM#2からアラートがない場合(ステップS34;No)、DMAコントローラ45は、CM#2のメモリ空間に対してデータをDMAライトする(ステップS34A)。DMAコントローラ45は、書き込み命令のデータを自CMと冗長化されたCM#2に退避する。
すると、CM#2では、DMAコントローラが、データをDIMMへDMAライトし、CPUに対してDMAライトの完了割り込みを行う。さらに、CPUは、CM#3に対してDMAライトが完了した旨を通知し(ステップS52)、ステップS56およびステップS59に移行させる。
ステップS33では、CM#0およびCM#1のいずれからもアラートがないと判定した場合(ステップS33;No)、DMAコントローラ45は、CM#0およびCM#1のそれぞれのメモリ空間にデータをDMAライトする(ステップS33A)。DMAコントローラ45は、データを退避しないで、そのままCM#0およびCM#1にDMAライトを行う。
そして、CM#0では、DMAコントローラ15が、データをDIMM11へDMAライトし、CPU18に対してDMAライトの完了割り込みを行う。さらに、CPU18は、CM#3に対してDMAライトが完了した旨を通知し(ステップS54)、ステップS56に移行させる。そして、CM#1では、DMAコントローラが、データをDIMMへDMAライトし、CPUに対してDMAライトの完了割り込みを行う。さらに、CPUは、CM#3に対してDMAライトが完了した旨を通知し(ステップS55)、ステップS56に移行させる。
ステップS56では、CM#3のCPU48Bが、CM#2からDMAライトの完了通知または、CM#0かつCM#1からDMAライトの完了通知があったか否かを判定する(ステップS56)。CM#2からDMAライトの完了通知または、CM#0かつCM#1からDMAライトの完了通知があったと判定した場合(ステップS56;Yes)、CPU48Bは、ホスト8へデータのライトが完了したことを通知する(ステップS57)。データのライトが完了したことを通知されたホスト8は、ライトの完了を検知する(ステップS58)。
ステップS59では、CM#3のCPU48Bは、CM#0またはCM#1からアラートがあるか否かを判定する(ステップS59)。CM#0またはCM#1からアラートがあると判定した場合(ステップS59;Yes)、CPU48Bは、判定処理を繰り返す。一方、CM#0およびCM#1からのいずれからもアラートがないと判定した場合(ステップS59;No)、DMAコントローラ45は、CM#0およびCM#1のそれぞれのメモリ空間にデータをDMAライトする(ステップS60)。DMAコントローラ45は、CM#0およびCM#1のいずれもアラートがなくなったので、CM#0およびCM#1にDMAライトを行う。
そして、CM#0では、DMAコントローラ15が、データをDIMM11へDMAライトし、CPU18に対してDMAライトの完了割り込みを行う。さらに、CPU18は、CM#3に対してDMAライトが完了した旨を通知し(ステップS61)、ステップS63に移行させる。そして、CM#1では、DMAコントローラが、データをDIMMへDMAライトし、CPUに対してDMAライトの完了割り込みを行う。さらに、CPUは、CM#3に対してDMAライトが完了した旨を通知し(ステップS62)、ステップS63に移行させる。
ステップS63では、CM#3のCPU48Bが、CM#0かつCM#1からDMAライトの完了通知があったか否かを判定する(ステップS63)。CM#0かつCM#1のどちらか一方からDMAライトの完了通知がなかったと判定した場合(ステップS63;No)、CPU48Bは、判定処理を繰り返す。
一方、CM#0かつCM#1からDMAライトの完了通知があったと判定した場合(ステップS63;Yes)、CPU48Bは、一時的に格納したデータを破棄する(ステップS64)。ここでは、CPU48Bは、自CMのDIMM41に一時的に記憶したデータおよびCM#2に退避したデータを破棄する。
[実施例3の効果]
上記実施例によれば、CM4では、CPU48Bが、CM1およびCM2が管轄するディスクへのデータの書き込み命令が受け付けられた場合、CM1またはCM2からメモリコントローラ内のキューが満杯である旨が通知されたか否かを判定する。そして、CM1またはCM2から満杯である旨が通知されたと判定された場合、CPU48Bが、さらに、自CMと冗長化されたCM3からメモリコントローラ内のキューが満杯である旨が通知されたか否かを判定する。そして、CM3から満杯である旨が通知されたと判定された場合、CPU48Bは、書き込み命令のデータを自CMと冗長化されたCM3と異なるCMであって満杯である旨が通知されなかったCMに退避する。かかる構成によれば、CM4は、自CMと冗長化されたCM3から満杯である旨が通知されても、満杯である旨が通知されなかった他のCMに書き込み命令のデータを退避できる。この結果、CM4は、自CMの万一の故障に備えてデータを退避することができ、データの喪失を確実に防ぐことができる。
また、上記実施例によれば、CM4では、CPU48Bが、自CMと冗長化されたCM3から満杯である旨が通知されたと判定された場合、データの書き込み命令先であるCM1と冗長化されたCM2に退避するようにした。かかる構成によれば、CM4は、CM1と冗長化されたCM2を用いてデータを退避する目的を達成できるとともに、CM1と冗長化されたCM2に冗長化されるべきデータを早期に書き込むことができる。
[その他]
なお、実施例1、3では、PCH47が、他のCMからアラート信号を入力するようにした。しかしながら、アラート信号を入力するデバイスは、PCH47に限定されず、他のCMからアラート信号を入力できるCM間の接続装置であれば良い。
また、ストレージ装置9、9A、9Bは、4台のCMを、2台ずつに冗長化するものと説明した。しかしながら、ストレージ装置9、9A、9Bは、これに限定されず、6台のCMを複数台ずつに冗長化しても良いし、8台のCMを複数台ずつに冗長化しても良いし、10台のCMを複数台ずつに冗長化しても良い。
以上説明した実施形態及びその変形例に関し、更に以下の付記を開示する。
(付記1)データの書き込みを制御するメモリコントローラと、
前記メモリコントローラにより管理されているキューの状態を判定する第1の判定部と、
前記第1の判定部によって前記メモリコントローラ内のキューが所定の状態であると判定された場合、前記所定の状態である旨を示す状態通知を出力する第1の通知部と、を有する第1の制御装置と、
上位装置から前記第1の制御装置が管轄するストレージへのデータの書込み命令を受信した場合、前記第1の制御装置から出力された前記状態通知が受信済みか否かを判定する第2の判定部と、
前記第2の判定部によって前記第1の制御装置から出力された前記状態通知が受信済みであると判定された場合、前記書込み命令のデータを他の制御装置に退避する退避部と、
前記退避部によって前記書込み命令のデータの退避が完了した後、前記上位装置へ書き込みが完了した旨を示す完了通知を出力する第2の通知部と、を有する第2の制御装置と、
を備えることを特徴とするストレージ装置。
(付記2)前記第1の通知部は、前記状態通知を前記第2の制御装置へ直接出力し、
前記第2の判定部は、前記第1の通知部から出力された前記状態通知が受信済みか否かを判定する
ことを特徴とする付記1に記載のストレージ装置。
(付記3)前記第1の通知部は、第1の判定部からの前記状態通知を受けて、前記状態通知を、前記入出力インタフェースを介して前記第2の制御装置へ出力し、
前記第2の判定部は、前記第1の通知部から出力された前記状態通知が受信済みか否かを判定する
ことを特徴とする付記1に記載のストレージ装置。
(付記4)前記第1の通知部は、前記状態通知を第1の判定部に問い合わせることによって検出し、検出した前記状態通知を、前記入出力インタフェースを介して前記第2の制御装置へ出力し、
前記第2の判定部は、前記第1の通知部から出力された前記状態通知が受信済みか否かを判定する
ことを特徴とする付記1に記載のストレージ装置。
(付記5)前記第2の判定部は、さらに、自制御装置と冗長化された制御装置から出力された前記状態通知が受信済みか否かを判定し、
前記退避部は、前記第2の判定部によって前記第1の制御装置から出力された前記状態通知が受信済みであると判定され、且つ自制御装置と冗長化された制御装置から出力された前記状態通知が受信済みであると判定された場合、前記書込み命令のデータを自制御装置と冗長化された制御装置と異なる制御装置であって前記状態通知が受信されなかった制御装置に退避する
ことを特徴とする付記1から付記4のいずれか1つに記載のストレージ装置。
(付記6)前記退避部は、前記第1の制御装置と冗長化された制御装置に退避する
ことを特徴とする付記5に記載のストレージ装置。
(付記7)前記第2の制御装置は、
前記第1の制御装置からデータの書き込みが完了した旨の通知を受け取ると、前記退避部によって退避されたデータを破棄する破棄部をさらに有する
ことを特徴とする付記1から付記6のいずれか1つに記載のストレージ装置。
(付記8)第1の制御装置と第2の制御装置を備えるストレージ装置の書込完了通知方法において、
前記第1の制御装置が、
データの書き込みを制御するメモリコントローラにより管理されているキューの状態を判定し、
当該判定する処理によって前記メモリコントローラ内のキューが所定の状態であると判定された場合、前記所定の状態である旨を示す状態通知を前記第2の制御装置へ出力し、
前記第2の制御装置が、
上位装置から前記第1の制御装置が管轄するストレージへのデータの書込み命令を受信した場合、前記第1の制御装置から出力された前記状態通知が受信済みか否かを判定し、
当該判定する処理によって前記第1の制御装置から出力された前記状態通知が受信済みであると判定された場合、前記書込み命令のデータを他の制御装置に退避し、
当該退避する処理によって前記書込み命令のデータの退避が完了した後、前記上位装置へ書き込みが完了した旨を示す完了通知を出力する
各処理を実行することを特徴とする書込完了通知方法。
1〜4、1A、4A CM
5、6 ディスク
7 PCIeスイッチ
8 ホスト
11、41 DIMM
12、42 メモリコントローラ
13、43 CA
14、44 DI
15、45 DMAコントローラ
16、16A、26、36、46 PCIeスイッチ
17、27、37、47 PCH
18、18A、48、48A、48B CPU
9、9A、9B ストレージ装置

Claims (7)

  1. データの書き込みを制御するメモリコントローラと、
    前記メモリコントローラにより管理されているキューの状態を判定する第1の判定部と、
    前記第1の判定部によって前記メモリコントローラ内のキューが、空きがない状態であると判定された場合、前記空きがない状態である旨を示す状態通知を出力する第1の通知部と、を有する第1の制御装置と、
    上位装置から前記第1の制御装置が管轄するストレージへのデータの書込み命令を受信した場合、前記第1の制御装置から出力された前記状態通知が、前記空きがない状態である旨の通知であるか否かを判定する第2の判定部と、
    前記第2の判定部によって前記第1の制御装置から出力された前記状態通知が、前記空きがない状態である旨の通知であると判定された場合、前記書込み命令のデータを前記第1の制御装置と異なる他の制御装置に退避する退避部と、
    前記退避部によって前記書込み命令のデータの退避が完了した後、前記上位装置へ書き込みが完了した旨を示す完了通知を出力する第2の通知部と、を有する第2の制御装置と、
    を備えることを特徴とするストレージ装置。
  2. 前記第1の通知部は、前記状態通知を前記第2の制御装置へ直接出力し、
    前記第2の判定部は、前記第1の通知部から出力された前記状態通知が、前記空きがない状態である旨の通知であるか否かを判定する
    ことを特徴とする請求項1に記載のストレージ装置。
  3. 前記第1の通知部は、第1の判定部からの前記状態通知を受けて、前記状態通知を、前記入出力インタフェースを介して前記第2の制御装置へ出力し、
    前記第2の判定部は、前記第1の通知部から出力された前記状態通知が、前記空きがない状態である旨の通知であるか否かを判定する
    ことを特徴とする請求項1に記載のストレージ装置。
  4. 前記第1の通知部は、前記状態通知を第1の判定部に問い合わせることによって検出し、検出した前記状態通知を、前記入出力インタフェースを介して前記第2の制御装置へ出力し、
    前記第2の判定部は、前記第1の通知部から出力された前記状態通知が、前記空きがない状態である旨の通知であるか否かを判定する
    ことを特徴とする請求項1に記載のストレージ装置。
  5. 前記第2の判定部は、さらに、自制御装置と冗長化された制御装置から出力された前記状態通知が、前記空きがない状態である旨の通知であるか否かを判定し、
    前記退避部は、前記第2の判定部によって前記第1の制御装置から出力された前記状態通知が、前記空きがない状態である旨の通知であると判定され、且つ自制御装置と冗長化された制御装置から出力された前記状態通知が、前記空きがない状態である旨の通知であると判定された場合、前記書込み命令のデータを自制御装置と冗長化された制御装置と異なる制御装置であって前記状態通知がされなかった制御装置に退避する
    ことを特徴とする請求項1から請求項4のいずれか1つに記載のストレージ装置。
  6. 前記退避部は、前記第1の制御装置と冗長化された制御装置に退避する
    ことを特徴とする請求項5に記載のストレージ装置。
  7. 第1の制御装置と第2の制御装置を備えるストレージ装置の書込完了通知方法において、
    前記第1の制御装置が、
    データの書き込みを制御するメモリコントローラにより管理されているキューの状態を判定し、
    当該判定する処理によって前記メモリコントローラ内のキューが、空きがない状態であると判定された場合、前記空きがない状態である旨を示す状態通知を前記第2の制御装置へ出力し、
    前記第2の制御装置が、
    上位装置から前記第1の制御装置が管轄するストレージへのデータの書込み命令を受信した場合、前記第1の制御装置から出力された前記状態通知が、前記空きがない状態である旨の通知であるか否かを判定し、
    当該判定する処理によって前記第1の制御装置から出力された前記状態通知が、前記空きがない状態である旨の通知であると判定された場合、前記書込み命令のデータを前記第1の制御装置と異なる他の制御装置に退避し、
    当該退避する処理によって前記書込み命令のデータの退避が完了した後、前記上位装置へ書き込みが完了した旨を示す完了通知を出力する
    各処理を実行することを特徴とする書込完了通知方法。
JP2012147930A 2012-06-29 2012-06-29 ストレージ装置および書込完了通知方法 Expired - Fee Related JP5962260B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012147930A JP5962260B2 (ja) 2012-06-29 2012-06-29 ストレージ装置および書込完了通知方法
US13/926,434 US20140006742A1 (en) 2012-06-29 2013-06-25 Storage device and write completion notification method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012147930A JP5962260B2 (ja) 2012-06-29 2012-06-29 ストレージ装置および書込完了通知方法

Publications (2)

Publication Number Publication Date
JP2014010713A JP2014010713A (ja) 2014-01-20
JP5962260B2 true JP5962260B2 (ja) 2016-08-03

Family

ID=49779466

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012147930A Expired - Fee Related JP5962260B2 (ja) 2012-06-29 2012-06-29 ストレージ装置および書込完了通知方法

Country Status (2)

Country Link
US (1) US20140006742A1 (ja)
JP (1) JP5962260B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9587605B2 (en) 2012-07-10 2017-03-07 Robert Bosch Gmbh Holding fixture for an injection device for injecting a medium into a combustion chamber of an internal combustion engine

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103377161A (zh) * 2012-04-24 2013-10-30 鸿富锦精密工业(深圳)有限公司 主板及应用于该主板的数据处理方法
US10083035B2 (en) * 2013-07-15 2018-09-25 Texas Instruments Incorporated Dual data streams sharing dual level two cache access ports to maximize bandwidth utilization
US10467157B2 (en) 2015-12-16 2019-11-05 Rambus Inc. Deterministic operation of storage class memory
US10445018B2 (en) * 2016-09-09 2019-10-15 Toshiba Memory Corporation Switch and memory device
CN108121496B (zh) * 2016-11-28 2021-01-29 成都华为技术有限公司 数据的存储方法、装置和系统
KR102392844B1 (ko) * 2017-03-10 2022-05-03 삼성전자주식회사 메모리 컨트롤러 및 그것을 포함하는 저장 장치
CN110073323B (zh) * 2017-03-24 2022-10-25 西部数据技术公司 使用控制器存储器缓冲区进行推测性执行命令的系统和方法
CN111433749B (zh) 2017-10-12 2023-12-08 拉姆伯斯公司 具有dram高速缓存的非易失性物理存储器

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6073205A (en) * 1997-07-10 2000-06-06 National Instruments Corporation System and method of write posting in a universal serial bus system
US5948081A (en) * 1997-12-22 1999-09-07 Compaq Computer Corporation System for flushing queued memory write request corresponding to a queued read request and all prior write requests with counter indicating requests to be flushed
EP1193962A1 (en) * 2000-09-21 2002-04-03 Siemens Aktiengesellschaft Transmission of real-time data from a network element to an application server with recovery method for link failure
US8706968B2 (en) * 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
JP5403665B2 (ja) * 2009-03-30 2014-01-29 エヌイーシーコンピュータテクノ株式会社 データ転送方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9587605B2 (en) 2012-07-10 2017-03-07 Robert Bosch Gmbh Holding fixture for an injection device for injecting a medium into a combustion chamber of an internal combustion engine

Also Published As

Publication number Publication date
JP2014010713A (ja) 2014-01-20
US20140006742A1 (en) 2014-01-02

Similar Documents

Publication Publication Date Title
JP5962260B2 (ja) ストレージ装置および書込完了通知方法
US7526592B2 (en) Interrupt control system and storage control system using the same
US8924606B2 (en) Storage system and data transfer control method
US8572342B2 (en) Data transfer device with confirmation of write completion and method of controlling the same
US7849235B2 (en) DMA controller, node, data transfer control method and storage medium
JP5204195B2 (ja) データ送信システムおよびデータ送信プログラム
JP2003208267A5 (ja)
US9128633B2 (en) Semiconductor memory device and method of operating the semiconductor memory device
JP2013020284A (ja) デバイスコントローラ、usbデバイスコントローラ及び電力制御方法
US20110289243A1 (en) Communication control device, data communication method and program
JP2009266119A (ja) ストレージ装置及びデータ転送方法
JP2013025692A (ja) ストレージ装置及びその負荷状態低減方法
JP2019095971A (ja) ストレージシステム、ストレージ制御装置およびプログラム
JP2013041403A (ja) 情報処理装置および情報処理方法
US7590765B2 (en) Bulk data transfer and buffer control device and electronic instrument
JP3988146B2 (ja) マルチノードシステム、ノード間クロスバスイッチ、ノード、スイッチプログラム及びノードプログラム
JP2012168635A (ja) 二重化制御装置
JP5316502B2 (ja) I/oブリッジ装置、応答通知方法、及びプログラム
JP2009237872A (ja) メモリ制御装置,メモリ制御方法および情報処理装置
US7757016B2 (en) Data transfer device, semiconductor integrated circuit, and processing status notification method
KR20160005646A (ko) 메모리 네트워크 메카니즘을 가지는 전자 시스템 및 그 동작 방법
WO1998028679A1 (en) Data transfer with mirroring
US20060129714A1 (en) Method and apparatus for transferring data
JP2013505616A (ja) エラー検出に応答するためのシステム及び方法
JP2006243890A (ja) バスブリッジおよびデータ転送方法およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150319

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160203

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160308

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160428

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160613

R150 Certificate of patent or registration of utility model

Ref document number: 5962260

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees