JP2022039501A - Storage control device, transmission state determination program and storage system - Google Patents

Storage control device, transmission state determination program and storage system Download PDF

Info

Publication number
JP2022039501A
JP2022039501A JP2020144566A JP2020144566A JP2022039501A JP 2022039501 A JP2022039501 A JP 2022039501A JP 2020144566 A JP2020144566 A JP 2020144566A JP 2020144566 A JP2020144566 A JP 2020144566A JP 2022039501 A JP2022039501 A JP 2022039501A
Authority
JP
Japan
Prior art keywords
identifier
control device
data
storage control
storage
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
Application number
JP2020144566A
Other languages
Japanese (ja)
Inventor
啓介 山▲崎▼
Keisuke Yamazaki
克矢 新潟
Katsuya Niigata
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 JP2020144566A priority Critical patent/JP2022039501A/en
Publication of JP2022039501A publication Critical patent/JP2022039501A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Transfer Systems (AREA)

Abstract

To make it possible to determine a transmission state of data.SOLUTION: A CM#0 in charge is configured to designate a SQ-ID, and transmit an execution request of a read command requesting a NVMe SSD$0 to transfer read data to a memory #0 to a DCM#1. The DCM#1 is configured to, in response to the execution request, add a transfer request of prescribed data (data by one block) to a Doorbell register corresponding to a SQ-ID in an FPGA#0 to the read command, and transmit the transfer request thereof to a NVMe SSD$0. The FPGA#0 is configured to issue an interruption designating a MSI-X ID related to a Doorbell ID of the Doorbell register having writing completed to a CPU#0. The CPU#0 is configured to, when receiving a transfer completion reply designating the SQ-ID from the DCM#1, determine a transmission state of the read data with reference to an interruption flag corresponding to the designated SQ-ID in an ID corresponding table.SELECTED DRAWING: Figure 7

Description

本発明は、ストレージ制御装置、送達状況判定プログラムおよびストレージシステムに関する。 The present invention relates to a storage control device, a delivery status determination program, and a storage system.

近年、NVMe(Non-Volatile Memory Express) SSD(Solid State Drive)をストレージデバイスとして採用したストレージシステムが開発されている。NVMeは、不揮発性メモリを使用したフラッシュストレージでの通信を最適化するための通信プロトコルである。 In recent years, a storage system that employs NVMe (Non-Voltile Memory Express) SSD (Solid State Drive) as a storage device has been developed. NVMe is a communication protocol for optimizing communication in flash storage using non-volatile memory.

先行技術としては、ストレージ装置において、コントローラが、それぞれ異なる優先度が設定された複数のコマンドキューを含むキュー群を自コントローラ内または記憶デバイス内に生成し、記憶デバイスに対するコマンドのうち、より迅速な処理が求められるコマンドをより優先度が高いコマンドキューにポストするものがある。また、DMA(Direct Memory Access)コントローラが、スイッチを介して他のCM(Controller Module)へ転送されたデータの転送状況をスイッチから読み出し、読み出した転送状況をメモリに書き込む技術がある。 Prior art, in a storage device, a controller creates a queue group containing multiple command queues with different priorities in its own controller or in a storage device, and among the commands to the storage device, it is faster. Some commands that need to be processed are posted to a higher priority command queue. Further, there is a technique in which a DMA (Direct Memory Access) controller reads the transfer status of data transferred to another CM (Controller Model) via a switch from the switch, and writes the read transfer status to a memory.

国際公開第2017/158799号International Publication No. 2017/158799 特開2015-18314号公報Japanese Unexamined Patent Publication No. 2015-18314

しかしながら、従来技術では、他のストレージ制御装置を介して、NVMe SSDなどのストレージデバイスにアクセスする場合、ストレージデバイスから転送されたデータの送達保証を確保することができないという問題がある。 However, in the prior art, when accessing a storage device such as an NVMe SSD via another storage control device, there is a problem that the delivery guarantee of the data transferred from the storage device cannot be ensured.

一つの側面では、本発明は、データの送達状況を判別可能にすることを目的とする。 In one aspect, it is an object of the present invention to make it possible to determine the delivery status of data.

1つの実施態様では、データ転送用のバッファ領域を含み、前記バッファ領域への書き込みが行われた場合に当該バッファ領域に対応する識別子を指定した割り込みを発行する、内部の回路を再構成可能な集積回路または専用の集積回路を備え、他のストレージ制御装置を経由して、レスポンスを要求しないデータ転送を行うストレージデバイスにアクセスする場合、自メモリへのリードデータの転送を要求するとともに、前記集積回路内の指定した第1の識別子に対応するバッファ領域への所定のデータの転送を要求するリードコマンドの実行依頼を、前記他のストレージ制御装置に送信し、前記集積回路から前記第1の識別子を指定した割り込みを受け付けた場合、前記第1の識別子に対応する割り込みフラグを有効にし、前記実行依頼に応じて前記他のストレージ制御装置から前記ストレージデバイスに発行される前記リードコマンドの実行が完了した場合に、前記第1の識別子を指定した完了応答を前記他のストレージ制御装置から受け付け、前記完了応答を受け付けた場合、前記第1の識別子に対応する割り込みフラグを参照して、前記リードデータの送達状況を判定する、制御部を有するストレージ制御装置が提供される。 In one embodiment, an internal circuit can be reconfigured that includes a buffer area for data transfer and issues an interrupt with an identifier corresponding to the buffer area when a write is made to the buffer area. When accessing a storage device that has an integrated circuit or a dedicated integrated circuit and performs data transfer that does not require a response via another storage control device, the transfer of read data to its own memory is requested and the integration is performed. A read command execution request requesting the transfer of a predetermined data to the buffer area corresponding to the specified first identifier in the circuit is transmitted to the other storage control device, and the first identifier is transmitted from the integrated circuit. When the interrupt for which is specified is received, the interrupt flag corresponding to the first identifier is enabled, and the execution of the read command issued from the other storage control device to the storage device in response to the execution request is completed. When the completion response with the specified first identifier is received from the other storage control device and the completion response is received, the read data is referred to with reference to the interrupt flag corresponding to the first identifier. A storage control device having a control unit for determining the delivery status of the data is provided.

本発明の一側面によれば、データの送達状況を判別可能にすることができるという効果を奏する。 According to one aspect of the present invention, there is an effect that the delivery status of data can be discriminated.

図1は、実施の形態にかかるストレージシステムのシステム構成例を示す説明図である。FIG. 1 is an explanatory diagram showing an example of a system configuration of a storage system according to an embodiment. 図2は、ストレージシステム100の一実施例を示す説明図である。FIG. 2 is an explanatory diagram showing an embodiment of the storage system 100. 図3は、NVMeコマンドのデータ構造例を示す説明図である。FIG. 3 is an explanatory diagram showing an example of a data structure of an NVMe command. 図4は、ID対応表の記憶内容の一例を示す説明図である。FIG. 4 is an explanatory diagram showing an example of the stored contents of the ID correspondence table. 図5は、担当CM#iの機能的構成例を示すブロック図である。FIG. 5 is a block diagram showing a functional configuration example of the CM # i in charge. 図6は、DCM#iの機能的構成例を示すブロック図である。FIG. 6 is a block diagram showing a functional configuration example of DCM # i. 図7は、ストレージシステム100の動作例を示す説明図である。FIG. 7 is an explanatory diagram showing an operation example of the storage system 100. 図8は、ストレージシステム100の正常時の処理手順の一例を示すシーケンス図である。FIG. 8 is a sequence diagram showing an example of a normal processing procedure of the storage system 100. 図9は、ID対応表400の更新例を示す説明図(その1)である。FIG. 9 is an explanatory diagram (No. 1) showing an example of updating the ID correspondence table 400. 図10は、ストレージシステム100の異常発生時の処理手順の一例を示すシーケンス図である。FIG. 10 is a sequence diagram showing an example of a processing procedure when an abnormality occurs in the storage system 100. 図11は、ID対応表400の更新例を示す説明図(その2)である。FIG. 11 is an explanatory diagram (No. 2) showing an example of updating the ID correspondence table 400. 図12は、ストレージシステム100のその他の実施例を示す説明図(その1)である。FIG. 12 is an explanatory diagram (No. 1) showing another embodiment of the storage system 100. 図13は、ストレージシステム100のその他の実施例を示す説明図(その2)である。FIG. 13 is an explanatory diagram (No. 2) showing another embodiment of the storage system 100.

以下に図面を参照して、本発明にかかるストレージ制御装置、送達状況判定プログラムおよびストレージシステムの実施の形態を詳細に説明する。 Hereinafter, embodiments of the storage control device, the delivery status determination program, and the storage system according to the present invention will be described in detail with reference to the drawings.

(実施の形態)
図1は、実施の形態にかかるストレージシステムのシステム構成例を示す説明図である。図1において、ストレージシステム100は、CM#0と、CM#1と、ストレージデバイス$0と、を含む。CM#0,#1およびストレージデバイス$0は、CE(Controller Enclosure)$0に設けられている。CEは、CM等を収容するためのケース(箱)である。
(Embodiment)
FIG. 1 is an explanatory diagram showing an example of a system configuration of a storage system according to an embodiment. In FIG. 1, the storage system 100 includes CM # 0, CM # 1, and a storage device $ 0. CM # 0, # 1 and the storage device $ 0 are provided in CE (Control Rule Enclosure) $ 0. The CE is a case (box) for accommodating a commercial or the like.

CM#0,#1は、自配下のストレージデバイス$0に対するアクセスを制御するストレージ制御装置の一例である。同一のCE$0内のCM#0,#1は、相互に通信可能に直接接続されている。CE$0は、例えば、1つのストレージ装置として実現される。 CM # 0 and # 1 are examples of storage control devices that control access to the storage device $ 0 under their own control. CMs # 0 and # 1 in the same CE $ 0 are directly connected to each other so as to be able to communicate with each other. CE $ 0 is realized as, for example, one storage device.

ストレージデバイス$0は、レスポンスを要求しないデータ転送を行うストレージデバイスである。例えば、ストレージデバイス$0は、NVMe SSDである。NVMeでは、SSDの接続規格としてPCIe(Peripheral Component Interconnect-Express)が用いられる。PCIeでは、ポステッド・ライト(Posted write)のため、レスポンスを必要としない書き込み転送が行われる。 The storage device $ 0 is a storage device that transfers data without requesting a response. For example, the storage device $ 0 is an NVMe SSD. In NVMe, PCIe (Peripheral Component Interconnect-Express) is used as the SSD connection standard. In PCIe, since it is a posted write, write transfer that does not require a response is performed.

以下の説明では、ストレージデバイス$0として、「NVMe SSD$0」を例に挙げて説明する。NVMe SSD$0は、NVMeの通信プロトコルを用いるSSDである。ただし、ストレージデバイス$0として、レスポンスを要求しないデータ転送を行う他のストレージデバイスを用いることにしてもよい。 In the following description, "NVMe SSD $ 0" will be described as an example of the storage device $ 0. NVMe SSD $ 0 is an SSD that uses the NVMe communication protocol. However, as the storage device $ 0, another storage device that transfers data without requesting a response may be used.

CM#0,#1には、ホスト装置110が接続される。ホスト装置110は、例えば、業務アプリなどを実行するサーバである。CM#0,#1とホスト装置110は、例えば、FC(Fibre Channel)やiSCSI(Internet Small Computer System Interface)などを用いたSAN(Storage Area Network)を介して接続される。 The host device 110 is connected to CM # 0 and # 1. The host device 110 is, for example, a server that executes a business application or the like. CM # 0, # 1 and the host device 110 are connected via a SAN (Storage Area Network) using, for example, FC (Fibre Channel) or iSCSI (Internet Small Computer System Interface).

以下の説明では、ストレージシステム100内のCM#0,#1のうちの任意のCMを「CM#i」と表記する場合がある(i=0,1)。また、ホスト装置110からのリクエスト(I/O要求)を受け付けたCM#iを「担当CM」と表記する場合がある。 In the following description, any CM among CM # 0 and # 1 in the storage system 100 may be referred to as “CM # i” (i = 0, 1). Further, the CM # i that has received the request (I / O request) from the host device 110 may be referred to as "the CM in charge".

CM#iは、例えば、CPU(Central Processing Unit)#iと、メモリ#iと、CA(Channel Adapter)#iと、FPGA(Field Programmable Gate Array)#iと、PCIe SW(switch)#iと、を含む。各構成部は、バスによってそれぞれ接続される。 The CM # i includes, for example, a CPU (Central Processing Unit) # i, a memory # i, a CA (Channel Adapter) # i, an FPGA (Field Programmable Gate Array) # i, and a PCIe SW (switch) # i. ,including. Each component is connected by a bus.

CPU#iは、CM#iの全体の制御を司る。CPU♯iは、複数のコアを有していてもよい。メモリ#iは、データやプログラムを格納する。メモリ#iは、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU#iのワークエリアとして使用される。メモリ#iに記憶されるプログラムは、CPU#iにロードされることで、コーディングされている処理をCPU#iに実行させる。メモリ#iは、データやプログラムを一時的に記憶するキャッシュメモリとしても用いられてもよい。 CPU # i controls the entire CM # i. CPU #i may have a plurality of cores. Memory #i stores data and programs. The memory #i includes, for example, a ROM (Read Only Memory), a RAM (Random Access Memory), a flash ROM, and the like. Specifically, for example, a flash ROM or ROM stores various programs, and RAM is used as a work area of CPU # i. The program stored in the memory # i is loaded into the CPU # i to cause the CPU # i to execute the coded process. Memory #i may also be used as a cache memory for temporarily storing data and programs.

CA#iは、ホスト装置110と通信するためのインターフェースである。CA#iは、例えば、LAN、SAN、FC等に準拠したアダプタを有する。FPGA#iは、プログラマブルロジックデバイスであり、内部の回路を再構成可能な集積回路である。PCIe SW#iは、他のデバイス(CM、ストレージデバイス)と通信するためのインターフェースである。CM#iは、例えば、NVMe SSD$0へのアクセスを制御するIOC(Input/Output Controller)を有していてもよい。 CA # i is an interface for communicating with the host device 110. CA # i has, for example, an adapter compliant with LAN, SAN, FC and the like. FPGA # i is a programmable logic device, which is an integrated circuit in which an internal circuit can be reconfigured. The PCIe SW # i is an interface for communicating with other devices (CM, storage device). CM # i may have, for example, an IOC (Input / Output Controller) that controls access to NVMe SSD $ 0.

なお、ストレージシステム100に含まれるCEの数は1台に限定されるものではなく、また、CEに含まれるCMの数も2台に限定されるものではない。例えば、ストレージシステム100には、複数のCEが含まれていてもよい(例えば、後述の図12参照)。 The number of CEs included in the storage system 100 is not limited to one, and the number of CMs included in the CE is not limited to two. For example, the storage system 100 may include a plurality of CEs (see, for example, FIG. 12 described later).

また、図1では、1台のホスト装置110がCM#0,#1に接続される場合を例に挙げて説明したが、これに限らない。例えば、複数台のホスト装置のそれぞれが、CM#0,#1のうちの1以上のCMに接続されることにしてもよい。 Further, in FIG. 1, the case where one host device 110 is connected to CM # 0 and # 1 has been described as an example, but the present invention is not limited to this. For example, each of the plurality of host devices may be connected to one or more of CMs # 0 and # 1.

また、図1の例では、CM#iがFPGA#iを有することにしたが、これに限らない。例えば、CM#iにおいてFPGA#iが行う処理を、専用の集積回路(例えば、LSI:Large Scale Integration)により実現することにしてもよい。すなわち、CM#iは、FPGA#iの換わりに、FPGA#iと同様の機能を持つ専用の集積回路を有することにしてもよい。 Further, in the example of FIG. 1, CM # i is determined to have FPGA # i, but the present invention is not limited to this. For example, the processing performed by FPGA # i in CM # i may be realized by a dedicated integrated circuit (for example, LSI: Large Scale Integration). That is, the CM # i may have a dedicated integrated circuit having the same function as the FPGA # i instead of the FPGA # i.

ここで、SAS(Serial Attached SCSI) SSDの場合、担当CMは、自系IOCから他系EXPへのパスがあるため、自系EXPと他系EXPの両系でSSDにアクセスできる。EXP(expander)は、SAS EXPであり、コントローラと複数のSASディスクドライブを接続するための中継デバイスである。 Here, in the case of a SAS (Serial Attached SCSI) SSD, the CM in charge can access the SSD in both the own EXP and the other EXP because there is a path from the own IOC to the other EXP. The EXP (expander) is a SAS EXP, which is a relay device for connecting a controller and a plurality of SAS disk drives.

一方、SAS SSDに換えて、NVMe SSDをストレージデバイスとして採用するにあたり、SAS EXPをPCIe SWへ置き換えた場合、自系IOCから他系EXPへのパスがなくなるため、担当CMがSSDの片系しかアクセスできない。したがって、例えば、他CM配下のNVMe SSDとデータのやりとりをするには、他CM経由でアクセスすることになる。この際、例えば、他CMのバッファ経由でアクセスすると、レスポンスが遅いため、担当CMとSSDとの間で直接データ(リードデータ)のやりとりを行うことが望ましい。 On the other hand, when using NVMe SSD as a storage device instead of SAS SSD, if SAS EXP is replaced with PCIe SW, there will be no path from the own IOC to another EXP, so the CM in charge is only one SSD. I can't access it. Therefore, for example, in order to exchange data with an NVMe SSD under another CM, it is accessed via another CM. At this time, for example, if the access is made via the buffer of another CM, the response is slow, so it is desirable to directly exchange data (read data) between the CM in charge and the SSD.

しかしながら、NVMe SSDをストレージデバイスとする従来のストレージシステムでは、異なるPCIeドメインにあるNVMe SSDにアクセスする場合、データの送達保証がとれないという問題がある。例えば、担当CMのPCIe SWとNVMe SSDとの間に障害が発生した場合を想定する。 However, in a conventional storage system using an NVMe SSD as a storage device, there is a problem that data delivery cannot be guaranteed when accessing an NVMe SSD in a different PCIe domain. For example, assume a case where a failure occurs between the PCIe SW of the CM in charge and the NVMe SSD.

この場合、担当CMが、他CMにNVMe SSDへのアクセスを依頼する。他CMは、担当CMが読み出したいデータが格納されたSSDへアクセス可能なCMである。以下の説明では、担当CMが読み出したいデータが格納されたSSDへアクセス可能なCMを「DCM(Drive CM)」と表記する場合がある。 In this case, the CM in charge requests another CM to access the NVMe SSD. The other CM is a CM that can access the SSD in which the data that the responsible CM wants to read is stored. In the following description, a CM that can access the SSD in which the data to be read by the CM in charge is stored may be referred to as "DCM (Drive CM)".

DCMは、担当CMからの依頼に応じて、NVMe SSDへリードコマンドを発行する。NVMe SSDは、DCMからのリードコマンドに応じて、担当CMのメモリへリードデータをDMA転送する。このとき、PCIeのポステッド・ライトのため、担当CMのメモリへ転送されたリードデータの送達保証がとれない。 DCM issues a read command to NVMe SSD in response to a request from the CM in charge. The NVMe SSD transfers the read data to the memory of the CM in charge by DMA in response to the read command from the DCM. At this time, due to the posted write of PCIe, the delivery of the read data transferred to the memory of the CM in charge cannot be guaranteed.

すなわち、一時的にPCIe SW間のリンクが切れるなどの障害が発生しても、NVMe SSDから担当CMのメモリへのリードデータの転送が正常に行われたか否かを判断することができない。データの送達保証が確保できないと、データ抜けが検出できず、ホスト装置においてデータ化けを引き起こすおそれがある。 That is, even if a failure such as a temporary disconnection of the link between the PCIe SWs occurs, it is not possible to determine whether or not the read data has been normally transferred from the NVMe SSD to the memory of the CM in charge. If data delivery guarantee cannot be ensured, data omission cannot be detected and data may be garbled in the host device.

具体的には、例えば、NVMe SSDは、担当CMのメモリへのリードデータの転送処理が完了すると、DCMへMSI(Message Signaled Interrupts)-X割り込みを発行する。DCMは、NVMe SSDからのMSI-X割り込みにより、リードデータの転送処理が完了したと判断すると、担当CMへコマンドの完了応答を送信する。 Specifically, for example, the NVMe SSD issues an MSI (Message Signaled Interrupts) -X interrupt to the DCM when the transfer processing of the read data to the memory of the CM in charge is completed. When the DCM determines that the read data transfer process is completed by the MSI-X interrupt from the NVMe SSD, the DCM sends a command completion response to the CM in charge.

しかし、DCMから担当CMへ完了応答が送信されても、担当CMは、データ転送が正常に行われたか否かは判断できない。すなわち、データ転送にともなう担当CMのメモリからの応答はないため(ポステッド・ライト)、データが正常に転送されなかった場合に、担当CMは認識することができない。この場合でも、DCMから担当CMへ完了応答が送信され、ホスト装置においてデータ化けが発生する。 However, even if the completion response is transmitted from the DCM to the CM in charge, the CM in charge cannot determine whether or not the data transfer has been performed normally. That is, since there is no response from the memory of the CM in charge due to the data transfer (posted write), the CM in charge cannot recognize when the data is not transferred normally. Even in this case, the completion response is transmitted from the DCM to the CM in charge, and data garbled occurs in the host device.

そこで、本実施の形態では、CM#i(担当CM)が他CM#j(DCM)を経由して、NVMe SSD$kにアクセスする場合であっても、データの送達保証を確保することができるストレージシステム100について説明する。具体的には、例えば、CM#i(担当CM)に、データ転送用のバッファ領域を含み、バッファ領域への書き込みが行われた場合に当該バッファ領域に対応する識別子を指定した割り込みを発行するFPGA#iを設ける。そして、CM#i(担当CM)は、NVMe SSD$kからメモリ#iへのデータ転送と同一の経路を使用して行われるFPGA#i内のバッファ領域への書き込み状況から、メモリ#iへのリードデータの送達状況を判別する。 Therefore, in the present embodiment, even when CM # i (CM in charge) accesses NVMe SSD $ k via another CM # j (DCM), it is possible to secure the guarantee of data delivery. The storage system 100 that can be described will be described. Specifically, for example, CM # i (CM in charge) includes a buffer area for data transfer, and when writing to the buffer area is performed, an interrupt is issued by designating an identifier corresponding to the buffer area. FPGA # i is provided. Then, CM # i (CM in charge) changes from the write status to the buffer area in FPGA # i, which is performed using the same route as the data transfer from NVMe SSD $ k to memory # i, to memory # i. Determine the delivery status of the read data of.

図2は、ストレージシステム100の一実施例を示す説明図である。ここでは、CM#0を担当CMとし、CM#1をDCMとする。また、担当CM#0のPCIe SW#0とNVMe SSD$0との間に障害が発生した場合を想定する。この場合、担当CM#0は、DCM#1を経由して、NVMe SSD$0にアクセスする。なお、図2では、各CM#0,#1のハードウェア構成の一部を抜粋して表示している。 FIG. 2 is an explanatory diagram showing an embodiment of the storage system 100. Here, CM # 0 is the responsible CM, and CM # 1 is the DCM. Further, it is assumed that a failure occurs between PCIe SW # 0 of the CM # 0 in charge and NVMe SSD $ 0. In this case, CM # 0 in charge accesses NVMe SSD $ 0 via DCM # 1. Note that FIG. 2 shows an excerpt of a part of the hardware configuration of each CM # 0 and # 1.

担当CM#0は、FPGA#0に、SQ IDに対応したDoorbellレジスタ(DBL0,1,…,N)を設ける。Doorbellレジスタ(DBR)は、データ転送用のバッファ領域の一例である。SQ IDは、後述するSQ(Submission Queue)を一意に識別する識別子である。担当CM#0は、FPGA#0のDoorbellレジスタ領域をメモリ#0にマッピングする。例えば、メモリ#0内のDoorbell0は、FPGA#0内のDBL0に対応する。 The CM # 0 in charge provides the FPGA # 0 with a Doorbell register (DBL0, 1, ..., N) corresponding to the SQ ID. The Doorbell register (DBR) is an example of a buffer area for data transfer. The SQ ID is an identifier that uniquely identifies the SQ (Submission Queue) described later. The responsible CM # 0 maps the Doorbell register area of FPGA # 0 to the memory # 0. For example, Doorbell0 in memory # 0 corresponds to DBL0 in FPGA # 0.

また、担当CM#0は、メモリ#0内にFPGA#0からの割り込みを設定するMSI-X0,1,…,Nを設ける。FPGA#0は、DoorbellレジスタへのWriteが行われた場合、DoorbellレジスタのIDに対応したMSI-X割り込みを、CM#0のCPU#0へ発行する。 Further, the CM # 0 in charge provides MSI-X0, 1, ..., N for setting an interrupt from the FPGA # 0 in the memory # 0. When the Doorbell register is written, FPGA # 0 issues an MSI-X interrupt corresponding to the ID of the Doorbell register to CPU # 0 of CM # 0.

DCM#1は、メモリ#1内にSQとCQ(Completion Queue)のペアをN個作成する。Nは、任意に設定可能であり、例えば、CPU#1のコア数に応じた値が設定される。SQ、CQは、NVMeのコマンドごとに、DCM#1のCPU#1からNVMe SSD$0へのアクセスに用いられる。 DCM # 1 creates N pairs of SQ and CQ (Completion Queue) in memory # 1. N can be arbitrarily set, and for example, a value corresponding to the number of cores of CPU # 1 is set. SQ and CQ are used to access NVMe SSD $ 0 from CPU # 1 of DCM # 1 for each NVMe command.

SQは、コマンドを格納するキューである。CQは、コマンドの完了状態を示す情報を格納するキューである。具体的には、例えば、DCM#1は、SQ ID(0,1,…,N)ごとに、SQとCQとのペアをメモリ#1内に作成する。例えば、メモリ#1内の「SQ 0」と「CQ 0」は、SQ ID「0」に対応するSQとCQとのペアを示している。 SQ is a queue for storing commands. The CQ is a queue that stores information indicating the completion status of the command. Specifically, for example, DCM # 1 creates a pair of SQ and CQ in memory # 1 for each SQ ID (0, 1, ..., N). For example, "SQ 0" and "CQ 0" in the memory # 1 indicate a pair of SQ and CQ corresponding to the SQ ID "0".

ここで、NVMeのコマンドのデータ構造例について説明する。 Here, an example of the data structure of the NVMe command will be described.

図3は、NVMeコマンドのデータ構造例を示す説明図である。図3において、NVMeコマンドcmdは、Opcode、データアドレス1、データアドレス2、Starting LBA(Logical Block Addressing)およびNumber of Logical Blocksを含む。 FIG. 3 is an explanatory diagram showing an example of a data structure of an NVMe command. In FIG. 3, the NVMe command cmd includes Opcode, data address 1, data address 2, Starting LBA (Logical Block Addressing) and Number of Logical Blocks.

ここで、Opcodeは、コマンドの種類を示す。例えば、リードコマンドの場合、OpcodeはReadとなる。データアドレス1は、担当CMのメモリ内のデータ領域の転送先アドレスを示す。データアドレス2は、担当CMのFPGA内のDoorbellレジスタのアドレスを示す。 Here, Opcode indicates the type of command. For example, in the case of a read command, Opcode is Read. The data address 1 indicates a transfer destination address of a data area in the memory of the CM in charge. The data address 2 indicates the address of the Doorbell register in the FPGA of the CM in charge.

Starting LBAは、NVMe SSDからリードするブロックの最初のアドレスを示す。Number of Logical Blocksは、NVMe SSDからリードするブロック数を示す。1ブロックは、例えば、512[byte]である。例えば、担当CMのメモリ内のデータ領域に転送するデータのブロック数をLブロックとする。 The Starting LBA indicates the first address of the block to read from the NVMe SSD. Number of Logical Blocks indicates the number of blocks to be read from the NVMe SSD. One block is, for example, 512 [byte]. For example, the number of blocks of data to be transferred to the data area in the memory of the CM in charge is L block.

この場合、Number of Logical Blocksは、Doorbellレジスタへのデータ転送を追加するため、例えば、(L+α)ブロックとする。αブロックは、Doorbellレジスタへの転送分に割り当てられる。αは、任意に設定可能であり、例えば、1に設定される。 In this case, the Number of Logical Blocks is, for example, a (L + α) block in order to add data transfer to the Doorbell register. The α block is allocated to the transfer to the Doorbell register. α can be arbitrarily set, and is set to 1, for example.

ストレージシステム100において、担当CM#0は、図4に示すようなID対応表400を用いて、DCM#1のSQ、CQ、FPGA#0のDoorbellレジスタ、MSI-XのIDによる関連付けを行う。ID対応表400は、例えば、担当CM#0のメモリ#0に記憶される。 In the storage system 100, the responsible CM # 0 associates the SQ and CQ of DCM # 1, the Doorbell register of FPGA # 0, and the ID of MSI-X by using the ID correspondence table 400 as shown in FIG. The ID correspondence table 400 is stored in, for example, the memory # 0 of the CM # 0 in charge.

図4は、ID対応表の記憶内容の一例を示す説明図である。図4において、ID対応表400は、コマンドID、SQ ID、CQ ID、Doorbell ID、MSI-X IDおよび割り込みフラグのフィールドを有する。各フィールドに情報を設定することで、ID対応情報(例えば、ID対応情報400-1)がレコードとして記憶される。 FIG. 4 is an explanatory diagram showing an example of the stored contents of the ID correspondence table. In FIG. 4, the ID correspondence table 400 has fields for command ID, SQ ID, CQ ID, Doorbell ID, MSI-X ID, and interrupt flag. By setting information in each field, ID correspondence information (for example, ID correspondence information 400-1) is stored as a record.

コマンドIDは、コマンドを一意に識別する識別子である。SQ IDは、DCM#1のメモリ#1内のSQを一意に識別する識別子である。CQ IDは、DCM#1のメモリ#1内のCQを一意に識別する識別子である。Doorbell IDは、担当CM#0のFPGA#0内のDoorbellレジスタを一意に識別する識別子である。 The command ID is an identifier that uniquely identifies the command. The SQ ID is an identifier that uniquely identifies the SQ in the memory # 1 of the DCM # 1. The CQ ID is an identifier that uniquely identifies the CQ in the memory # 1 of the DCM # 1. The Doorbell ID is an identifier that uniquely identifies the Doorbell register in FPGA # 0 of the CM # 0 in charge.

MSI-X IDは、FPGA#0からのMSI-X割り込みを一意に識別する識別子である。各IDは、0~Nのいずれかの値である。Nは、DCMのメモリ内に作成されるSQとCQとのペアの個数に相当する。割り込みフラグは、FPGA#0からのMSI-X割り込み状態を示す。割り込みフラグ「0」は、割り込みが発生していない状態(無効)を示す。割り込みフラグ「1」は、割り込みが発生した状態(有効)を示す。初期状態では、割り込みフラグは「0」である。 The MSI-X ID is an identifier that uniquely identifies the MSI-X interrupt from FPGA # 0. Each ID is a value from 0 to N. N corresponds to the number of pairs of SQ and CQ created in the memory of the DCM. The interrupt flag indicates the MSI-X interrupt state from FPGA # 0. The interrupt flag "0" indicates a state (invalid) in which an interrupt has not occurred. The interrupt flag "1" indicates a state (valid) in which an interrupt has occurred. In the initial state, the interrupt flag is "0".

ストレージシステム100では、各リードコマンドに関する一連の流れの中で、SQ、CQ、Doorbellレジスタ、MSI-X割り込みに対して、同じIDを使用する。これにより、担当CM#0のCPU#0が、FPGA#0から受け取ったMSI-X割り込みのIDを確認することで、どのSQ IDのコマンドが完了したか(送達状況)を判別可能にする。 In the storage system 100, the same ID is used for the SQ, CQ, Doorbell register, and MSI-X interrupt in a series of flows related to each read command. As a result, CPU # 0 of the CM # 0 in charge can determine which SQ ID command is completed (delivery status) by confirming the ID of the MSI-X interrupt received from FPGA # 0.

(CM#iの機能的構成例)
つぎに、CM#iの機能的構成例について説明する。まず、図5を用いて、CM#iが担当CMとして動作する場合の機能的構成例について説明する。ここでは、CM#iが担当CMの場合のDCMを「DCM#j」と表記する場合がある(j≠i)。例えば、CM#0が担当CMの場合(i=0)、CM#1がDCMとなる(j=1)。また、リードデータを有するアクセス先のNVMe SSDを「NVMe SSD$k」と表記する場合がある。
(Example of functional configuration of CM # i)
Next, an example of a functional configuration of CM # i will be described. First, with reference to FIG. 5, a functional configuration example in which CM # i operates as the CM in charge will be described. Here, the DCM when CM # i is the responsible CM may be expressed as "DCM # j" (j ≠ i). For example, when CM # 0 is the responsible CM (i = 0), CM # 1 is DCM (j = 1). Further, the NVMe SSD of the access destination having the read data may be expressed as "NVMe SSD $ k".

図5は、担当CM#iの機能的構成例を示すブロック図である。図5において、担当CM#iは、第1の受付部501と、第1の要求処理部502と、判定部503と、復旧部504と、を含む。第1の受付部501~復旧部504は制御部となる機能であり、具体的には、例えば、メモリ♯iに記憶されたプログラムをCPU♯iに実行させることにより、または、CA#i、PCIe SW#iにより、その機能を実現する。各機能部の処理結果は、例えば、メモリ♯iに記憶される。 FIG. 5 is a block diagram showing a functional configuration example of the CM # i in charge. In FIG. 5, the CM # i in charge includes a first reception unit 501, a first request processing unit 502, a determination unit 503, and a restoration unit 504. The first reception unit 501 to the recovery unit 504 are functions that serve as control units. Specifically, for example, by causing the CPU #i to execute a program stored in the memory #i, or by using CA # i, The function is realized by PCIe SW # i. The processing result of each functional unit is stored in, for example, the memory #i.

第1の受付部501は、ホスト装置110からのリクエストを受け付ける。ここで、リクエストは、例えば、NVMe SSD$kに対するリードリクエスト(読出要求)である。リクエストには、例えば、アクセス先の情報やリードデータのデータサイズなどが含まれる。具体的には、例えば、第1の受付部501は、CA#iを介して、ホスト装置110からのリードリクエストを受け付ける。 The first reception unit 501 receives a request from the host device 110. Here, the request is, for example, a read request (read request) for NVMe SSD $ k. The request includes, for example, access destination information and data size of read data. Specifically, for example, the first reception unit 501 receives a read request from the host device 110 via CA # i.

第1の要求処理部502は、DCM#j(他のストレージ制御装置)を経由して、NVMe SSD$kにアクセスする場合、NVMe SSD$kに対して自メモリ#iへのリードデータの転送を要求するリードコマンドの実行依頼を、当該リードコマンドに対応する識別子(第1の識別子)を指定して、DCM#jに送信する。 When the first request processing unit 502 accesses the NVMe SSD $ k via DCM # j (another storage control device), the first request processing unit 502 transfers the read data to the own memory #i to the NVMe SSD $ k. Is sent to DCM # j by designating the identifier (first identifier) corresponding to the read command.

ここで、DCM#jを経由して、NVMe SSD$kにアクセスする場合は、例えば、担当CM#iのPCIe SW#iとNVMe SSD$kとの間に障害が発生した場合である。また、DCM#jを経由して、NVMe SSD$kにアクセスする場合は、NVMe SSD$kが、担当CM#iとは異なるCEに配置されている場合である。 Here, when accessing NVMe SSD $ k via DCM # j, for example, there is a case where a failure occurs between PCIe SW # i and NVMe SSD $ k of the CM # i in charge. Further, when accessing NVMe SSD $ k via DCM # j, it is a case where NVMe SSD $ k is located in a CE different from the CM # i in charge.

リードコマンドは、例えば、図3に示したNVMeコマンドcmdである。リードデータは、NVMe SSD$kのStarting LBAから読み出されるLブロック分のデータであり、担当CM#iのメモリ#i内のデータ領域に転送される。 The read command is, for example, the NVMe command cmd shown in FIG. The read data is data for L blocks read from the Starting LBA of NVMe SSD $ k, and is transferred to the data area in the memory #i of the CM # i in charge.

リードコマンドに対応する第1の識別子は、例えば、リードコマンドに割り振られるSQ IDである。例えば、各リードコマンドには、0~NのSQ IDのうち、空きのIDであって、もっと値の小さいSQ IDが割り振られる。空きのIDは、他のリードコマンドに対応していないID、例えば、図4に示したID対応表400に登録されていないIDである。 The first identifier corresponding to the read command is, for example, the SQ ID assigned to the read command. For example, among the SQ IDs from 0 to N, an empty ID with a smaller value is assigned to each read command. The empty ID is an ID that does not correspond to another read command, for example, an ID that is not registered in the ID correspondence table 400 shown in FIG.

DCM#jへ第1の識別子を指定したリードコマンドの実行依頼が送信されると、DCM#jからNVMe SSD$kに対して、FPGA#i内の第1の識別子に対応するバッファ領域への所定のデータの転送要求が追加されたリードコマンドが発行される。第1の識別子に対応するバッファ領域は、例えば、SQ IDに対応したDoorbellレジスタである。 When a read command execution request with the first identifier specified is sent to DCM # j, DCM # j sends NVMe SSD $ k to the buffer area corresponding to the first identifier in FPGA # i. A read command is issued with a request to transfer the specified data added. The buffer area corresponding to the first identifier is, for example, the Doorbell register corresponding to the SQ ID.

すなわち、第1の識別子を指定したリードコマンドの実行依頼は、自メモリ#iへのリードデータの転送を要求するとともに、自FPGA#i内の第1の識別子に対応するバッファ領域への所定のデータの転送を要求するリードコマンドの実行依頼に相当する。 That is, the execution request of the read command in which the first identifier is specified requests the transfer of the read data to the own memory #i, and is predetermined to the buffer area corresponding to the first identifier in the own FPGA # i. Corresponds to the execution request of the read command that requests the transfer of data.

所定のデータは、任意に設定可能であり、例えば、ホスト装置110から要求されるリードデータよりもデータ量が少ないデータである。所定のデータは、リードデータに続く1ブロック分のデータであってもよい。また、所定のデータは、例えば、NVMe SSD$kからメモリ#iへのリードデータの転送が完了した後、FPGA#i内の第1の識別子に対応するバッファ領域へ転送されるように要求される。なお、DCM側の具体的な処理内容については、図6を用いて後述する。 The predetermined data can be arbitrarily set, and is, for example, data having a smaller amount of data than the read data requested from the host device 110. The predetermined data may be one block of data following the read data. Further, the predetermined data is requested to be transferred to the buffer area corresponding to the first identifier in the FPGA # i, for example, after the transfer of the read data from the NVMe SSD $ k to the memory #i is completed. To. The specific processing content on the DCM side will be described later with reference to FIG.

具体的には、例えば、第1の要求処理部502は、ホスト装置110からのリードリクエストに応じて、DCM#jを経由して、NVMe SSD$kにアクセスする場合、ID対応表400を参照して、リードコマンドに割り振るSQ IDを特定する。例えば、ID対応表400にID対応情報が未登録の場合、SQ0(ID:0)が特定される。 Specifically, for example, when the first request processing unit 502 accesses NVMe SSD $ k via DCM # j in response to a read request from the host device 110, refer to the ID correspondence table 400. Then, specify the SQ ID to be assigned to the read command. For example, when the ID correspondence information is not registered in the ID correspondence table 400, SQ0 (ID: 0) is specified.

第1の要求処理部502は、特定したSQ0に対応するID対応情報(例えば、図4に示したID対応情報400-1)を作成して、ID対応表400に登録する。そして、第1の要求処理部502は、特定したSQ0(ID:0)を指定して、NVMe SSD$kに対するリードコマンドの実行依頼をDCM#jに送信する。アクセス先の情報やリードデータのデータサイズは、リードリクエストから特定される。 The first request processing unit 502 creates ID correspondence information (for example, ID correspondence information 400-1 shown in FIG. 4) corresponding to the specified SQ0 and registers it in the ID correspondence table 400. Then, the first request processing unit 502 specifies the specified SQ0 (ID: 0) and transmits a read command execution request to the NVMe SSD $ k to DCM # j. The access destination information and the data size of the read data are specified from the read request.

また、第1の要求処理部502は、FPGA#iから発行される、第1の識別子を指定した割り込みを受け付けた場合、第1の識別子に対応する割り込みフラグを有効にする。第1の識別子を指定した割り込みは、FPGA#iに設けられた第1の識別子に対応するバッファ領域への書き込みが行われた場合にFPGA#iから発行される。 Further, when the first request processing unit 502 receives an interrupt with the first identifier specified, which is issued from FPGA # i, the first request processing unit 502 enables the interrupt flag corresponding to the first identifier. The interrupt specifying the first identifier is issued from FPGA # i when the buffer area corresponding to the first identifier provided in FPGA # i is written.

具体的には、例えば、FPGA#iは、Doorbell0(ID:0)のDoorbellレジスタへのWriteが行われた場合、Doorbell0(ID:0)を指定したMSI-X割り込みを、CPU#0へ発行する。Doorbell0(ID:0)を指定したMSI-X割り込みは、Doorbell0(ID:0)と関連付けられたMSI-X0(ID:0)のMSI-X割り込みである。この場合、第1の要求処理部502は、ID対応表400を参照して、MSI-X0(ID:0)に対応するID対応情報400-1の割り込みフラグを「1」に設定する。 Specifically, for example, FPGA # i issues an MSI-X interrupt specifying Doorbell 0 (ID: 0) to CPU # 0 when the Doorbell 0 (ID: 0) is written to the Doorbell register. do. The MSI-X interrupt with Doorbell0 (ID: 0) is the MSI-X interrupt with MSI-X0 (ID: 0) associated with Doorbell0 (ID: 0). In this case, the first request processing unit 502 sets the interrupt flag of the ID correspondence information 400-1 corresponding to MSI-X0 (ID: 0) to "1" with reference to the ID correspondence table 400.

判定部503は、第1の要求処理部502によって送信された実行依頼に応じてDCM#jからNVMe SSD$kに発行されるリードコマンドの実行が完了した場合、第1の識別子を指定した完了応答をDCM#jから受け付ける。 When the execution of the read command issued from DCM # j to NVMe SSD $ k in response to the execution request transmitted by the first request processing unit 502 is completed, the determination unit 503 specifies the first identifier. Accept the response from DCM # j.

発行されるリードコマンドは、メモリ#iへのリードデータの転送を要求するとともに、FPGA#i内の第1の識別子に対応するバッファ領域への所定のデータの転送を要求するリードコマンドである。FPGA#i内の第1の識別子に対応するバッファ領域への所定のデータの転送要求は、例えば、DCM#jにおいて、メモリ#iへのリードデータの転送を要求するリードコマンドを操作して追加される。 The read command issued is a read command that requests transfer of read data to memory # i and also requests transfer of predetermined data to the buffer area corresponding to the first identifier in FPGA # i. A request for transferring predetermined data to the buffer area corresponding to the first identifier in FPGA # i is added, for example, by operating a read command in DCM # j requesting transfer of read data to memory # i. Will be done.

また、判定部503は、第1の識別子を指定した完了応答を受け付けた場合、第1の識別子に対応する割り込みフラグを参照して、リードデータの送達状況を判定する。具体的には、例えば、判定部503は、SQ IDを指定した完了応答をDCM#jから受け付けた場合に、ID対応表400を参照して、指定されたSQ IDに対応する割り込みフラグの値を確認する。 Further, when the determination unit 503 receives the completion response in which the first identifier is specified, the determination unit 503 determines the delivery status of the read data with reference to the interrupt flag corresponding to the first identifier. Specifically, for example, when the determination unit 503 receives the completion response with the SQ ID specified from DCM # j, the determination unit 503 refers to the ID correspondence table 400 and the value of the interrupt flag corresponding to the specified SQ ID. To confirm.

ここで、割り込みフラグが「1(有効)」の場合、判定部503は、リードデータが送達されたと判定する。すなわち、判定部503は、メモリ#iへのリードデータの転送が正常に行われたと判定する。リードデータは、例えば、ホスト装置110から要求されたLブロック分のデータである。 Here, when the interrupt flag is "1 (valid)", the determination unit 503 determines that the read data has been delivered. That is, the determination unit 503 determines that the read data has been normally transferred to the memory #i. The read data is, for example, data for L blocks requested by the host device 110.

一方、割り込みフラグが「0(無効)」の場合、判定部503は、リードデータが送達されなかったと判定する。すなわち、判定部503は、メモリ#iへのリードデータの転送が正常に行われなかったと判定する。なお、判定部503は、例えば、SQ IDを指定したエラー応答をDCM#jから受け付けた場合も、リードデータが送達されなかったと判定する。 On the other hand, when the interrupt flag is "0 (invalid)", the determination unit 503 determines that the read data has not been delivered. That is, the determination unit 503 determines that the read data has not been normally transferred to the memory #i. The determination unit 503 determines that the read data has not been delivered even when the error response with the SQ ID specified is received from DCM # j, for example.

復旧部504は、リードデータが送達されなかったと判定された場合、所定のリカバリ処理を実行する。所定のリカバリ処理は、例えば、メモリ#iとNVMe SSD$kとの間の経路(リンク)を再構築する処理である。すなわち、一時的なハードウェア障害が発生して、リンクが不安定であったり、通信速度が規定の速度でリンクされていなかったりする可能性があるため、リカバリ処理を実施する。 When it is determined that the read data has not been delivered, the recovery unit 504 executes a predetermined recovery process. The predetermined recovery process is, for example, a process of reconstructing a route (link) between the memory #i and the NVMe SSD $ k. That is, a temporary hardware failure may occur and the link may be unstable, or the communication speed may not be linked at a specified speed. Therefore, the recovery process is performed.

また、第1の要求処理部502は、所定のリカバリ処理が完了した場合、NVMe SSD$kに対して自メモリ#iへのリードデータの転送を要求するリードコマンドの実行依頼を、当該リードコマンドに対応する第1の識別子を指定して、DCM#jに再度送信することにしてもよい。 Further, when the predetermined recovery process is completed, the first request processing unit 502 requests the NVMe SSD $ k to execute a read command requesting the transfer of the read data to the own memory #i. You may specify the first identifier corresponding to and send it to DCM # j again.

なお、リカバリ処理を実行後にリードコマンドの実行依頼を再実施しても、リードデータが送達されなかった場合、復旧部504は、その旨をホスト装置110に通知することにしてもよい。また、メモリ#iへ正常に転送されたリードデータは、ホスト装置110に転送される。 If the read data is not delivered even if the read command execution request is re-executed after the recovery process is executed, the recovery unit 504 may notify the host device 110 to that effect. Further, the read data normally transferred to the memory #i is transferred to the host device 110.

つぎに、図6を用いて、CM#iがDCMとして動作する場合の機能的構成例について説明する。ここでは、CM#iがDCMの場合の担当CMを「担当CM#j」と表記する場合がある(j≠i)。また、DCM#iの配下のNVMe SSDを「NVMe SSD$k」と表記する場合がある。 Next, with reference to FIG. 6, a functional configuration example in which CM # i operates as a DCM will be described. Here, the CM in charge when CM # i is DCM may be expressed as "CM # j in charge" (j ≠ i). In addition, NVMe SSD under DCM # i may be referred to as "NVMe SSD $ k".

図6は、DCM#iの機能的構成例を示すブロック図である。図6において、DCM#iは、第2の受付部601と、第2の要求処理部602と、を含む。第2の受付部601および第2の要求処理部602は制御部となる機能であり、具体的には、例えば、メモリ♯iに記憶されたプログラムをCPU♯iに実行させることにより、または、CA#i、PCIe SW#iにより、その機能を実現する。各機能部の処理結果は、例えば、メモリ♯iに記憶される。 FIG. 6 is a block diagram showing a functional configuration example of DCM # i. In FIG. 6, DCM # i includes a second reception unit 601 and a second request processing unit 602. The second reception unit 601 and the second request processing unit 602 are functions that serve as control units, and specifically, for example, by causing the CPU #i to execute a program stored in the memory #i, or. The function is realized by CA # i and PCIe SW # i. The processing result of each functional unit is stored in, for example, the memory #i.

第2の受付部601は、担当CM#j(他のストレージ制御装置)から、NVMe SSD$kに対して担当CM#jのメモリ#jへのリードデータの転送を要求するリードコマンドに対応する識別子(第2の識別子)を指定した当該リードコマンドの実行依頼を受け付ける。指定される第2の識別子は、例えば、リードコマンドに割り振られるSQ IDである。 The second reception unit 601 corresponds to a read command requesting NVMe SSD $ k to transfer read data from the responsible CM # j (another storage control device) to the memory # j of the responsible CM # j. Accepts the execution request of the read command for which the identifier (second identifier) is specified. The second identifier specified is, for example, the SQ ID assigned to the read command.

第2の要求処理部602は、第2の識別子を指定したリードコマンドの実行依頼を受け付けた場合、他メモリ#jへのリードデータの転送を要求するとともに、他FPGA#j内の指定された第2の識別子に対応するバッファ領域への所定のデータの転送を要求するリードコマンドをNVMe SSD$kに発行する。 When the second request processing unit 602 receives the execution request of the read command in which the second identifier is specified, the second request processing unit 602 requests the transfer of the read data to the other memory # j and is designated in the other FPGA # j. Issue a read command to NVMe SSD $ k requesting the transfer of predetermined data to the buffer area corresponding to the second identifier.

すなわち、第2の識別子を指定したリードコマンドの実行依頼は、他メモリ#jへのリードデータの転送を要求するとともに、他FPGA#j内の第2の識別子に対応するバッファ領域への所定のデータの転送を要求するリードコマンドの実行依頼に相当する。他FPGA#j内の第2の識別子に対応するバッファ領域のアドレスは、例えば、担当CM#jからの実行依頼に含まれていてもよく、また、担当CM#jに問い合わせることにしてもよい。 That is, the execution request of the read command in which the second identifier is specified requests the transfer of the read data to the other memory # j, and at the same time, the predetermined read command to the buffer area corresponding to the second identifier in the other FPGA # j is specified. Corresponds to the execution request of the read command that requests the transfer of data. The address of the buffer area corresponding to the second identifier in the other FPGA # j may be included in the execution request from the responsible CM # j, or may be inquired to the responsible CM # j. ..

第2の要求処理部602は、NVMe SSD$kからリードコマンドで要求されたデータの転送完了通知があった場合、第2の識別子を指定した完了応答を担当CM#jに送信する。完了応答は、リードコマンドが完了したことを示す。また、第2の要求処理部602は、NVMe SSD$kからリードコマンドで要求されたデータの転送エラー通知があった場合、第2の識別子を指定したエラー応答を担当CM#jに送信する。エラー応答は、リードコマンドが正常に完了しなかったことを示す。 When the NVMe SSD $ k notifies the transfer completion of the data requested by the read command, the second request processing unit 602 sends a completion response specifying the second identifier to the CM # j in charge. The completion response indicates that the read command has completed. Further, when the NVMe SSD $ k notifies the transfer error of the data requested by the read command, the second request processing unit 602 transmits an error response specifying the second identifier to the CM # j in charge. The error response indicates that the read command did not complete successfully.

具体的には、例えば、第2の要求処理部602は、他メモリ#jへのリードデータの転送を要求するリードコマンドに、他FPGA#j内の第2の識別子に対応するバッファ領域への所定のデータの転送要求を追加する。そして、第2の要求処理部602は、当該転送要求を追加したリードコマンドを、自メモリ#i内の第2の識別子に対応する第1キューに格納する。第1キューは、コマンドを格納するキューであり、例えば、SQである。 Specifically, for example, the second request processing unit 602 sends a read command requesting the transfer of read data to the other memory # j to the buffer area corresponding to the second identifier in the other FPGA # j. Add a transfer request for the specified data. Then, the second request processing unit 602 stores the read command to which the transfer request is added in the first queue corresponding to the second identifier in the own memory #i. The first queue is a queue for storing commands, for example, SQ.

つぎに、第2の要求処理部602は、NVMe SSD$kによってリードコマンドの完了を示す情報が、自メモリ#i内の第2の識別子に対応する第2キューに書き込まれた場合、第2の識別子を指定した転送完了応答を担当CM#jに送信する。第2キューは、コマンドの完了状態を示す情報を格納するキューであり、例えば、CQである。 Next, when the information indicating the completion of the read command is written by the NVMe SSD $ k to the second queue corresponding to the second identifier in the own memory #i, the second request processing unit 602 is second. The transfer completion response specifying the identifier of is sent to the responsible CM # j. The second queue is a queue that stores information indicating the completion status of the command, and is, for example, a CQ.

なお、NVMe SSD$kにアクセスする際のより詳細な動作例については、例えば、図8および図10を用いて後述する。 A more detailed operation example when accessing NVMe SSD $ k will be described later with reference to, for example, FIGS. 8 and 10.

(ストレージシステム100の動作例)
つぎに、図7を用いて、ストレージシステム100の動作例について説明する。ただし、CM#0を担当CMとし、CM#1をDCMとする。また、担当CM#0のPCIe SW#0とNVMe SSD$0との間に障害が発生し、担当CM#0からNVMe SSD$0へ直接アクセスできない場合を想定する。
(Operation example of storage system 100)
Next, an operation example of the storage system 100 will be described with reference to FIG. 7. However, CM # 0 is the responsible CM, and CM # 1 is the DCM. Further, it is assumed that a failure occurs between PCIe SW # 0 of the responsible CM # 0 and NVMe SSD $ 0, and the responsible CM # 0 cannot directly access the NVMe SSD $ 0.

図7は、ストレージシステム100の動作例を示す説明図である。図7において、(1)各CM#0,#1は、構成デバイスの初期化を行い、各メモリ#0,#1のメモリマッピングを行う。(2)担当CM#0は、SQ-IDを指定して、リードコマンドの実行依頼をDCM#1に送信する。リードコマンドは、NVMe SSD$0に対してメモリ#0へのリードデータの転送を要求するリードコマンドである。 FIG. 7 is an explanatory diagram showing an operation example of the storage system 100. In FIG. 7, (1) each CM # 0 and # 1 initializes the constituent device and performs memory mapping of each memory # 0 and # 1. (2) The CM # 0 in charge specifies the SQ-ID and sends a read command execution request to the DCM # 1. The read command is a read command that requests NVMe SSD $ 0 to transfer read data to memory # 0.

(3)DCM#1は、図3に示したようなコマンドフォーマットで、担当CM#0のFPGA#0内のSQ-IDに対応するDoorbellレジスタへの所定のデータ(1ブロック分のデータ)の転送要求をリードコマンドに追加する。そして、DCM#1は、当該リードコマンドをNVMe SSD$0に送信する。 (3) DCM # 1 has a command format as shown in FIG. 3, and is a predetermined data (data for one block) in the Doorbell register corresponding to the SQ-ID in FPGA # 0 of the CM # 0 in charge. Add the transfer request to the read command. Then, DCM # 1 transmits the read command to NVMe SSD $ 0.

具体的には、例えば、DCM#1は、リードコマンドのデータアドレス1に、担当CM#0のメモリ#0内のデータ領域の転送先アドレスを設定する。また、DCM#1は、データアドレス2に、担当CM#0のFPGA#0内のSQ-IDに対応するDoorbellレジスタのアドレスを設定する。また、DCM#1は、Number of Logical Blocksを「L+1」として設定する。 Specifically, for example, DCM # 1 sets the transfer destination address of the data area in the memory # 0 of the CM # 0 in charge to the data address 1 of the read command. Further, DCM # 1 sets the address of the Doorbell register corresponding to the SQ-ID in FPGA # 0 of the CM # 0 in charge to the data address 2. Further, DCM # 1 sets the Number of Logical Blocks as "L + 1".

(4)NVMe SSD$0は、リードコマンドに応じて、担当CM#0のメモリ#0のデータ領域(リードコマンドのデータアドレス1に格納されているアドレス)に、Starting LBAからLブロック分のリードデータを書き込む。 (4) NVMe SSD $ 0 reads L blocks from Starting LBA to the data area of memory # 0 of CM # 0 in charge (the address stored in the data address 1 of the read command) in response to the read command. Write data.

(5)NVMe SSD$0は、担当CM#0のFPGA#0内のDoorbellレジスタ領域(データアドレス2に格納されているアドレス)に、リードデータに続く1ブロック分のデータを書き込む。 (5) NVMe SSD $ 0 writes data for one block following the read data to the Doorbell register area (address stored in the data address 2) in FPGA # 0 of the responsible CM # 0.

(6)FPGA#0は、担当CM#0のCPU#0へ、書き込みの完了したDoorbellレジスタのDoorbell IDと関連付けられたMSI-X IDを指定した割り込みを発行する。例えば、Doorbell ID「0」のDoorbellレジスタへの書き込みが完了した場合、MSI-X ID「0」を指定した割り込みがCPU#0に発行される。この場合、CPU#0は、ID対応表400内のMSI-X ID「0」に対応する割り込みフラグを「1」に設定する。 (6) FPGA # 0 issues an interrupt to CPU # 0 of the responsible CM # 0 by specifying the MSI-X ID associated with the Doorbell ID of the Doorbell register for which writing has been completed. For example, when the writing to the Doorbell register of Doorbell ID "0" is completed, an interrupt specifying MSI-X ID "0" is issued to CPU # 0. In this case, CPU # 0 sets the interrupt flag corresponding to the MSI-X ID "0" in the ID correspondence table 400 to "1".

(7)CPU#0は、SQ-IDを指定した転送完了応答をDCM#1から受け付けた場合、ID対応表400内の指定されたSQ-IDに対応する割り込みフラグを参照して、リードデータの送達状況を判定する。 (7) When CPU # 0 receives a transfer completion response with SQ-ID specified from DCM # 1, it refers to the interrupt flag corresponding to the specified SQ-ID in the ID correspondence table 400 and reads data. Determining the delivery status of.

これにより、担当CM#0は、DCM#1を介して、NVMe SSD$0にアクセスした際に、リードデータの転送が正常に行われたか否かを判別することができる。 Thereby, the CM # 0 in charge can determine whether or not the transfer of the read data is normally performed when the NVMe SSD $ 0 is accessed via the DCM # 1.

(ストレージシステム100の処理手順)
つぎに、ストレージシステム100の処理手順について説明する。まず、図8を用いて、ストレージシステム100の正常時の処理手順について説明する。ただし、CM#0を担当CMとし、CM#1をDCMとする。また、担当CM#0のPCIe SW#0とNVMe SSD$0との間に障害が発生し、担当CM#0からNVMe SSD$0へ直接アクセスできない場合を想定する。
(Processing procedure of storage system 100)
Next, the processing procedure of the storage system 100 will be described. First, the processing procedure in the normal state of the storage system 100 will be described with reference to FIG. However, CM # 0 is the responsible CM, and CM # 1 is the DCM. Further, it is assumed that a failure occurs between PCIe SW # 0 of the responsible CM # 0 and NVMe SSD $ 0, and the responsible CM # 0 cannot directly access the NVMe SSD $ 0.

図8は、ストレージシステム100の正常時の処理手順の一例を示すシーケンス図である。図9は、ID対応表400の更新例を示す説明図(その1)である。図8のシーケンス図において、まず、担当CM#0のCPU#0は、ID対応表400にID対応情報を作成する(ステップS801)。 FIG. 8 is a sequence diagram showing an example of a normal processing procedure of the storage system 100. FIG. 9 is an explanatory diagram (No. 1) showing an example of updating the ID correspondence table 400. In the sequence diagram of FIG. 8, first, CPU # 0 of the CM # 0 in charge creates ID correspondence information in the ID correspondence table 400 (step S801).

ここでは、新規発行コマンドに割り振るSQ IDを「1」とする。この場合、図9の(A)に示すように、SQ ID「1」に対応するID対応情報400-2が作成され、ID対応表400に新規登録される。なお、ID対応表400には、実行依頼中のリードコマンドに割り振られたSQ ID「0」に対応するID対応情報400-1が登録されている。 Here, the SQ ID assigned to the newly issued command is set to "1". In this case, as shown in FIG. 9A, the ID correspondence information 400-2 corresponding to the SQ ID “1” is created and newly registered in the ID correspondence table 400. In the ID correspondence table 400, the ID correspondence information 400-1 corresponding to the SQ ID "0" assigned to the read command being executed is registered.

つぎに、担当CM#0のCPU#0は、特定したSQ ID「1」を指定して、NVMe SSD$kに対してメモリ#iへのリードデータの転送を要求するリードコマンドの実行依頼をDCM#jに送信する(ステップS802)。 Next, CPU # 0 of CM # 0 in charge specifies the specified SQ ID "1" and requests NVMe SSD $ k to execute a read command requesting transfer of read data to memory # i. It is transmitted to DCM # j (step S802).

DCM#1のCPU#1は、SQ ID「1」を指定したリードコマンドの実行依頼を受け付けると、担当CM#0のFPGA#0内のSQ ID「1」に対応するDoorbellレジスタへの所定のデータの転送要求を追加したリードコマンドを、メモリ#1上のSQ ID「1」に対応するSQに書き込む(ステップS803)。 When the CPU # 1 of the DCM # 1 receives the execution request of the read command with the SQ ID "1" specified, the CPU # 1 of the DCM # 1 receives a predetermined command to the Doorbell register corresponding to the SQ ID "1" in the FPGA # 0 of the CM # 0 in charge. The read command to which the data transfer request is added is written to the SQ corresponding to the SQ ID “1” on the memory # 1 (step S803).

例えば、図3に示したようなフォーマットのリードコマンドがSQに書き込まれる。なお、リードコマンドのOpcode、データアドレス1、データアドレス2、Starting LBAおよびNumber of Logical Blocksを特定する情報は、例えば、担当CM#0からの実行依頼に含まれる。より詳細に説明すると、例えば、DCM#1のCPU#1は、SQ ID「1」に対応するDoorbellレジスタへの転送先アドレスをデータアドレス2へ設定し、Number of Logical Blocksを「L+1」として設定する。 For example, a read command in the format shown in FIG. 3 is written to the SQ. Information for specifying the read command Opcode, data address 1, data address 2, Starting LBA, and Number of Logical Blocks is included in, for example, the execution request from the CM # 0 in charge. More specifically, for example, CPU # 1 of DCM # 1 sets the transfer destination address to the Doorbell register corresponding to SQ ID "1" to data address 2, and sets Number of Logical Blocks as "L + 1". do.

つぎに、DCM#1のCPU#1は、NVMe SSD$0のSubmission Queue Doorbellレジスタに、SQのTail値を書き込む(ステップS804)。Tail値は、新しいコマンドが処理のために送信されたことを、NVMe SSD$0に示すためのものである。 Next, CPU # 1 of DCM # 1 writes the tail value of SQ to the Submission Queue Doorbell register of NVMe SSD $ 0 (step S804). The Tail value is to indicate to NVMe SSD $ 0 that a new command has been sent for processing.

つぎに、NVMe SSD$0は、DCM#1のメモリ#1上のSQから、リードコマンドを取得する(ステップS805)。そして、NVMe SSD$0は、リードコマンドのデータアドレス1に基づいて、Starting LBAから読み出したLブロック分のリードデータを、担当CM#0のメモリ#0へ転送する(ステップS806)。 Next, the NVMe SSD $ 0 acquires a read command from the SQ on the memory # 1 of the DCM # 1 (step S805). Then, the NVMe SSD $ 0 transfers the read data for the L block read from the Starting LBA to the memory # 0 of the responsible CM # 0 based on the data address 1 of the read command (step S806).

つぎに、NVMe SSD$0は、リードコマンドのデータアドレス2に基づいて、Lブロック分のリードデータに続く1ブロック分のデータを読み出して、読み出した1ブロック分のデータを、担当CM#0のFPGA#0のDoorbellレジスタへ転送する(ステップS807)。 Next, NVMe SSD $ 0 reads the data for one block following the read data for the L block based on the data address 2 of the read command, and the read data for one block is used by the CM # 0 in charge. Transfer to the Doorbell register of FPGA # 0 (step S807).

担当CM#0のFPGA#0は、書き込みの完了したDoorbellレジスタのDoorbell IDと関連付けられたMSI-X IDを指定した割り込みを発行する(ステップS808)。担当CM#0のCPU#0は、ID対応表400内のMSI-X IDに対応する割り込みフラグを「1」に設定する(ステップS809)。 FPGA # 0 of the responsible CM # 0 issues an interrupt specifying the MSI-X ID associated with the Doorbell ID of the Doorbell register for which writing has been completed (step S808). CPU # 0 of the CM # 0 in charge sets the interrupt flag corresponding to the MSI-X ID in the ID correspondence table 400 to “1” (step S809).

ここでは、Doorbell ID「1」のDoorbellレジスタへの書き込みが完了し、MSI-X ID「1」を指定した割り込みが発行されたとする。この場合、図9の(B)に示すように、MSI-X ID「1」に対応するID対応情報400-2の割り込みフラグが「1」に設定される。なお、SQ ID「0」を指定したリードコマンドが正常に完了したため、ID対応情報400-1が削除されている。また、新たに発行されるリードコマンドに割り振られたSQ ID「2」に対応するID対応情報400-3が登録されている。 Here, it is assumed that the writing to the Doorbell register of Doorbell ID "1" is completed and the interrupt specifying MSI-X ID "1" is issued. In this case, as shown in FIG. 9B, the interrupt flag of the ID correspondence information 400-2 corresponding to the MSI-X ID "1" is set to "1". Since the read command with the SQ ID "0" completed normally, the ID correspondence information 400-1 has been deleted. Further, the ID correspondence information 400-3 corresponding to the SQ ID "2" assigned to the newly issued read command is registered.

NVMe SSD$0は、リードコマンドで要求されたデータの転送が完了した場合、DCM#1のメモリ#1上のCQ ID「1」に対応するCQに転送完了通知を書き込む(ステップS810)。そして、NVMe SSD$0は、DCM#1のCPU#1へMSI-X割り込みを発行する(ステップS811)。 When the transfer of the data requested by the read command is completed, the NVMe SSD $ 0 writes a transfer completion notification in the CQ corresponding to the CQ ID "1" on the memory # 1 of the DCM # 1 (step S810). Then, NVMe SSD $ 0 issues an MSI-X interrupt to CPU # 1 of DCM # 1 (step S811).

DCM#1のCPU#1は、MSI-X割り込みを受けると、CQ ID「1」に対応するCQを確認して処理を完了する(ステップS812)。つぎに、DCM#1のCPU#1は、NVMe SSD$0のCompletion Queue Doorbellレジスタに、CQのHead値を書き込む(ステップS813)。Head値は、処理が完了したことを、NVMe SSD$0に示すためのものである。 Upon receiving the MSI-X interrupt, the CPU # 1 of the DCM # 1 confirms the CQ corresponding to the CQ ID "1" and completes the process (step S812). Next, CPU # 1 of DCM # 1 writes the Head value of CQ to the Complex Queue Doorbell register of NVMe SSD $ 0 (step S813). The Head value is for indicating to NVMe SSD $ 0 that the processing is completed.

そして、DCM#1のCPU#1は、SQ-ID「1」を指定した完了応答(Good)を担当CM#0のCPU#0に送信する(ステップS814)。担当CM#0のCPU#0は、SQ-ID「1」を指定した完了応答を受け付けた場合、ID対応表400内のSQ-ID「1」に対応する割り込みフラグを確認して、リードデータの送達状況を判定する(ステップS815)。 Then, CPU # 1 of DCM # 1 transmits a completion response (Good) for which SQ-ID "1" is specified to CPU # 0 of CM # 0 in charge (step S814). When CPU # 0 of the CM # 0 in charge receives the completion response with SQ-ID "1" specified, it confirms the interrupt flag corresponding to SQ-ID "1" in the ID correspondence table 400 and reads data. (Step S815).

ここでは、SQ-ID「1」に対応する割り込みフラグが「1」のため、リードデータが送達され、SQ ID「1」を指定したリードコマンドが正常に完了したと判定される。そして、担当CM#0のCPU#0は、完了したリードコマンドに対応するエントリをID対応表400から削除する(ステップS816)。 Here, since the interrupt flag corresponding to the SQ-ID "1" is "1", the read data is delivered, and it is determined that the read command with the specified SQ ID "1" completed normally. Then, CPU # 0 of the CM # 0 in charge deletes the entry corresponding to the completed read command from the ID correspondence table 400 (step S816).

ここでは、図9の(C)に示すように、SQ-ID「1」に対応するID対応情報400-2(エントリ)がID対応表400から削除される。 Here, as shown in (C) of FIG. 9, the ID correspondence information 400-2 (entry) corresponding to the SQ-ID "1" is deleted from the ID correspondence table 400.

これにより、担当CM#0からDCM#1を介してNVMe SSD$0へアクセスする場合であっても、リードデータの送達保証を確保することが可能となる。 As a result, even when the NVMe SSD $ 0 is accessed from the responsible CM # 0 via the DCM # 1, it is possible to secure the delivery guarantee of the read data.

つぎに、図10を用いて、ストレージシステム100の異常発生時の処理手順について説明する。 Next, a processing procedure when an abnormality occurs in the storage system 100 will be described with reference to FIG.

図10は、ストレージシステム100の異常発生時の処理手順の一例を示すシーケンス図である。図11は、ID対応表400の更新例を示す説明図(その2)である。図10のシーケンス図において、まず、担当CM#0のCPU#0は、ID対応表400にID対応情報を作成する(ステップS1001)。 FIG. 10 is a sequence diagram showing an example of a processing procedure when an abnormality occurs in the storage system 100. FIG. 11 is an explanatory diagram (No. 2) showing an example of updating the ID correspondence table 400. In the sequence diagram of FIG. 10, first, CPU # 0 of the CM # 0 in charge creates ID correspondence information in the ID correspondence table 400 (step S1001).

ここでは、新規発行コマンドに割り振るSQ IDを「1」とする。この場合、図11の(D)に示すように、SQ ID「1」に対応するID対応情報400-2が作成され、ID対応表400に新規登録される。なお、ID対応表400には、実行依頼中のリードコマンドに割り振られたSQ ID「0」に対応するID対応情報400-1が登録されている。 Here, the SQ ID assigned to the newly issued command is set to "1". In this case, as shown in FIG. 11D, the ID correspondence information 400-2 corresponding to the SQ ID "1" is created and newly registered in the ID correspondence table 400. In the ID correspondence table 400, the ID correspondence information 400-1 corresponding to the SQ ID "0" assigned to the read command being executed is registered.

つぎに、担当CM#0のCPU#0は、特定したSQ ID「1」を指定して、NVMe SSD$kに対してメモリ#iへのリードデータの転送を要求するリードコマンドの実行依頼をDCM#jに送信する(ステップS1002)。 Next, CPU # 0 of CM # 0 in charge specifies the specified SQ ID "1" and requests NVMe SSD $ k to execute a read command requesting transfer of read data to memory # i. It is transmitted to DCM # j (step S1002).

DCM#1のCPU#1は、SQ ID「1」を指定したリードコマンドの実行依頼を受け付けると、担当CM#0のFPGA#0内のSQ ID「1」に対応するDoorbellレジスタへの所定のデータの転送要求を追加したリードコマンドを、メモリ#1上のSQ ID「1」に対応するSQに書き込む(ステップS1003)。 When the CPU # 1 of the DCM # 1 receives the execution request of the read command specifying the SQ ID "1", the CPU # 1 of the DCM # 1 receives a predetermined command to the Doorbell register corresponding to the SQ ID "1" in the FPGA # 0 of the CM # 0 in charge. The read command to which the data transfer request is added is written to the SQ corresponding to the SQ ID “1” on the memory # 1 (step S1003).

つぎに、DCM#1のCPU#1は、NVMe SSD$0のSubmission Queue Doorbellレジスタに、SQのTail値を書き込む(ステップS1004)。つぎに、NVMe SSD$0は、DCM#1のメモリ#1上のSQから、リードコマンドを取得する(ステップS1005)。 Next, CPU # 1 of DCM # 1 writes the tail value of SQ to the Submission Queue Doorbell register of NVMe SSD $ 0 (step S1004). Next, the NVMe SSD $ 0 acquires a read command from the SQ on the memory # 1 of the DCM # 1 (step S1005).

そして、NVMe SSD$0は、リードコマンドのデータアドレス1に基づいて、Starting LBAから読み出したLブロック分のリードデータを、担当CM#0のメモリ#0へ転送する(ステップS1006)。つぎに、NVMe SSD$0は、リードコマンドのデータアドレス2に基づいて、Lブロック分のリードデータに続く1ブロック分のデータを読み出して、読み出した1ブロック分のデータを、担当CM#0のFPGA#0のDoorbellレジスタへ転送する(ステップS1007)。 Then, the NVMe SSD $ 0 transfers the read data for the L block read from the Starting LBA to the memory # 0 of the responsible CM # 0 based on the data address 1 of the read command (step S1006). Next, NVMe SSD $ 0 reads the data for one block following the read data for the L block based on the data address 2 of the read command, and the read data for one block is used by the CM # 0 in charge. Transfer to the Doorbell register of FPGA # 0 (step S1007).

ここでは、ハードウェアの一時不良などにより、担当CM#0のPCIe SW#0とDCM#1のPCIe SW#1との間のリンクが切れて、メモリ#0へのデータ転送とDoorbellレジスタへのデータ転送が失敗した場合を想定する。この場合、Doorbell ID「1」のDoorbellレジスタへの書き込みは実行されないため、MSI-X割り込みは発行されない。このため、図11の(E)に示すように、SQ ID「1」に対応するID対応情報400-2の割り込みフラグは「0」のままである。 Here, due to a temporary hardware failure or the like, the link between PCIe SW # 0 of CM # 0 in charge and PCIe SW # 1 of DCM # 1 is broken, and data transfer to memory # 0 and to the Doorbell register are performed. Suppose the data transfer fails. In this case, since the writing to the Doorbell register of Doorbell ID "1" is not executed, the MSI-X interrupt is not issued. Therefore, as shown in FIG. 11 (E), the interrupt flag of the ID correspondence information 400-2 corresponding to the SQ ID “1” remains “0”.

NVMe SSD$0は、リードコマンドで要求されたデータの転送が完了した場合、DCM#1のメモリ#1上のCQ ID「1」に対応するCQに転送完了通知を書き込む(ステップS1008)。そして、NVMe SSD$0は、DCM#1のCPU#1へMSI-X割り込みを発行する(ステップS1009)。 When the transfer of the data requested by the read command is completed, the NVMe SSD $ 0 writes the transfer completion notification to the CQ corresponding to the CQ ID "1" on the memory # 1 of the DCM # 1 (step S1008). Then, NVMe SSD $ 0 issues an MSI-X interrupt to CPU # 1 of DCM # 1 (step S1009).

DCM#1のCPU#1は、MSI-X割り込みを受けると、CQ ID「1」に対応するCQを確認して処理を完了する(ステップS1010)。つぎに、DCM#1のCPU#1は、NVMe SSD$0のCompletion Queue Doorbellレジスタに、CQのHead値を書き込む(ステップS1011)。 Upon receiving the MSI-X interrupt, the CPU # 1 of the DCM # 1 confirms the CQ corresponding to the CQ ID "1" and completes the process (step S1010). Next, CPU # 1 of DCM # 1 writes the Head value of CQ to the Complex Queue Doorbell register of NVMe SSD $ 0 (step S1011).

そして、DCM#1のCPU#1は、SQ-ID「1」を指定した完了応答(Good)を担当CM#0のCPU#0に送信する(ステップS1012)。担当CM#0のCPU#0は、SQ-ID「1」を指定した完了応答を受け付けた場合、ID対応表400内のSQ-ID「1」に対応する割り込みフラグを確認して、リードデータの送達状況を判定する(ステップS1013)。 Then, CPU # 1 of DCM # 1 transmits a completion response (Good) for which SQ-ID "1" is specified to CPU # 0 of CM # 0 in charge (step S1012). When CPU # 0 of the CM # 0 in charge receives the completion response with SQ-ID "1" specified, it confirms the interrupt flag corresponding to SQ-ID "1" in the ID correspondence table 400 and reads data. (Step S1013).

ここでは、図11の(F)に示すように、SQ-ID「1」に対応する割り込みフラグが「0」のため、リードデータが送達されておらず、SQ ID「1」を指定したリードコマンドが正常に完了していないと判定される。そして、担当CM#0のCPU#0は、所定のリカバリ処理を実施した後、SQ ID「1」を指定したリードコマンドの実行依頼をDCM#jに再度送信する(ステップS1014)。 Here, as shown in FIG. 11 (F), since the interrupt flag corresponding to the SQ-ID "1" is "0", the read data is not delivered and the read with the SQ ID "1" specified. It is determined that the command has not completed normally. Then, the CPU # 0 of the CM # 0 in charge retransmits the execution request of the read command specifying the SQ ID “1” to the DCM # j after performing the predetermined recovery process (step S1014).

これにより、ハードウェアの一時不良などによりデータ転送が失敗したことを検知することができる。また、経路(リンク)を再構築するなどのリカバリ処理を実施して、DCM#jにリードコマンドを再依頼することができる。 As a result, it is possible to detect that the data transfer has failed due to a temporary failure of the hardware or the like. In addition, the read command can be re-requested from DCM # j by performing recovery processing such as reconstructing the route (link).

(ストレージシステム100のその他の実施例)
つぎに、図12および図13を用いて、ストレージシステム100のその他の実施例について説明する。ここでは、ストレージシステム100に複数のCE(12CM構成)が含まれる場合について説明する。
(Other Examples of Storage System 100)
Next, another embodiment of the storage system 100 will be described with reference to FIGS. 12 and 13. Here, a case where a plurality of CEs (12CM configurations) are included in the storage system 100 will be described.

図12は、ストレージシステム100のその他の実施例を示す説明図(その1)である。図12において、ストレージシステム100は、CE$0~$5を含む。各CE$0~$5は、2つのCMとNVMe SSDとをそれぞれ有する。なお、図12では、各CM#iのハードウェア構成の一部を抜粋して表示している。 FIG. 12 is an explanatory diagram (No. 1) showing another embodiment of the storage system 100. In FIG. 12, the storage system 100 includes CE $ 0 to $ 5. Each CE $ 0- $ 5 has two CMs and an NVMe SSD, respectively. In FIG. 12, a part of the hardware configuration of each CM # i is excerpted and displayed.

ストレージシステム100において、CM間は、FRT(Front End Router)1200を介して、互いに通信可能に接続される。FRT1200は、PCIe SWを有し、CM間を互いに通信可能に接続する。なお、CM間を接続するFRTとして、FRT1200のみ表記したが、2以上のFRTにより冗長化されていてもよい。 In the storage system 100, the CMs are communicably connected to each other via an FRT (Front End Router) 1200. The FRT 1200 has a PCIe SW and connects CMs to each other so as to be communicable. Although only the FRT1200 is described as the FRT connecting the CMs, it may be made redundant by two or more FRTs.

ここで、CM#0を担当CMとし、CM#1をDCMとする。また、担当CM#0のPCIe SW#0とNVMe SSD$0との間に障害が発生し、担当CM#0からNVMe SSD$0へ直接アクセスできない場合を想定する。この場合、担当CM#0からDCM#1へのリードコマンドの実行依頼は、FRT1200を介して行われる。 Here, CM # 0 is the responsible CM, and CM # 1 is the DCM. Further, it is assumed that a failure occurs between PCIe SW # 0 of the responsible CM # 0 and NVMe SSD $ 0, and the responsible CM # 0 cannot directly access the NVMe SSD $ 0. In this case, the execution request of the read command from the responsible CM # 0 to the DCM # 1 is made via the FRT1200.

また、NVMe SSD$0から担当CM#0へのデータ転送も、FRT1200を介して行われる。なお、図12中、太線矢印は、ホスト装置110から要求されたリードデータが、NVMe SSD#0から読み出されて、ホスト装置110に到達するまでの経路を示している。 In addition, data transfer from NVMe SSD $ 0 to CM # 0 in charge is also performed via FRT1200. In FIG. 12, the thick arrow indicates the route from the read data requested from the host device 110 to the NVMe SSD # 0 to reach the host device 110.

つぎに、図13を用いて、担当CMとリードデータを有するNVMe SSDとが異なるCEに配置されている場合について説明する。ただし、ストレージシステム100のシステム構成は、図12に示したシステム構成と同一とする。また、図13では、各CM#iのハードウェア構成の一部を抜粋して表示している。 Next, a case where the CM in charge and the NVMe SSD having the read data are arranged in different CEs will be described with reference to FIG. However, the system configuration of the storage system 100 is the same as the system configuration shown in FIG. Further, in FIG. 13, a part of the hardware configuration of each CM # i is excerpted and displayed.

図13は、ストレージシステム100のその他の実施例を示す説明図(その2)である。ここで、CM#11を担当CMとし、CM#1(または、CM#0)をDCMとする。すなわち、リードデータを有するNVMe SSDを、CE$0内のNVMe SSD$0とする。 FIG. 13 is an explanatory diagram (No. 2) showing another embodiment of the storage system 100. Here, CM # 11 is the responsible CM, and CM # 1 (or CM # 0) is the DCM. That is, the NVMe SSD having the read data is set to NVMe SSD $ 0 in CE $ 0.

この場合、担当CM#11からDCM#1へのリードコマンドの実行依頼は、FRT1200を介して行われる。また、NVMe SSD$0から担当CM#11へのデータ転送も、FRT1200を介して行われる。なお、図13中、太線矢印は、ホスト装置110から要求されたリードデータが、NVMe SSD#0から読み出されて、ホスト装置110に到達するまでの経路を示している。 In this case, the execution request of the read command from the responsible CM # 11 to the DCM # 1 is made via the FRT1200. Data transfer from NVMe SSD $ 0 to CM # 11 in charge is also performed via FRT1200. In FIG. 13, the thick arrow indicates the route from the read data requested from the host device 110 to the NVMe SSD # 0 to reach the host device 110.

以上説明したように、実施の形態にかかるCM#i(担当CM)によれば、DCM#jを経由して、NVMe SSD$kにアクセスする場合、NVMe SSD$kに対して自メモリ#iへのリードデータの転送を要求するとともに、自FPGA#i内の指定したID(SQ ID)に対応するDoorbellレジスタへの所定のデータの転送を要求するリードコマンドの実行依頼を、DCM#jに送信することができる。 As described above, according to the CM # i (CM in charge) according to the embodiment, when the NVMe SSD $ k is accessed via the DCM # j, the own memory #i is used for the NVMe SSD $ k. Requests the transfer of read data to DCM # j and the execution request of the read command to request the transfer of the predetermined data to the Doorbell register corresponding to the specified ID (SQ ID) in the own FPGA # i. Can be sent.

これにより、NVMe SSD$kに直接アクセスできない場合、自メモリ#iへのリードデータの転送を要求するとともに、自FPGA#i内の指定したSQ IDに対応するDoorbellレジスタへの所定のデータの転送を要求するリードコマンドの実行を依頼することができる。 As a result, when the NVMe SSD $ k cannot be directly accessed, the transfer of the read data to the own memory #i is requested, and the predetermined data is transferred to the Doorbell register corresponding to the specified SQ ID in the own FPGA # i. You can request the execution of the requested read command.

また、CM#i(担当CM)によれば、FPGA#iからID(SQ IDに関連するMSI-X ID)を指定した割り込みを受け付けた場合、当該IDに対応する割り込みフラグを有効にすることができる。FPGA#iは、CM#iが備える集積回路であり、データ転送用のDoorbellレジスタを含み、Doorbellレジスタへの書き込みが行われた場合に当該Doorbellレジスタに対応するID(MSI-X ID)を指定した割り込みをCPU#iへ発行する。 Further, according to CM # i (CM in charge), when an interrupt for which an ID (MSI-X ID related to SQ ID) is specified is received from FPGA # i, the interrupt flag corresponding to the ID is enabled. Can be done. FPGA # i is an integrated circuit included in CM # i, includes a Doorbell register for data transfer, and specifies an ID (MSI-X ID) corresponding to the Doorbell register when writing to the Doorbell register is performed. Issue the interrupt to CPU # i.

これにより、FPGA#i内のDoorbellレジスタへの書き込み状況を判別することができる。 This makes it possible to determine the writing status to the Doorbell register in FPGA # i.

また、CM#i(担当CM)によれば、実行依頼に応じてDCM#jからNVMe SSD$kに発行される、自メモリ#iへのリードデータの転送を要求するとともに、指定したID(SQ ID)に対応するDoorbellレジスタへの所定のデータの転送を要求するリードコマンドの実行が完了した場合に、当該ID(SQ ID)を指定した完了応答をDCM#jから受け付けることができる。 Further, according to CM # i (CM in charge), the transfer of the read data to the own memory #i issued from DCM # j to NVMe SSD $ k in response to the execution request is requested, and the specified ID ( When the execution of the read command requesting the transfer of the predetermined data to the Doorbell register corresponding to the SQ ID) is completed, the completion response specifying the ID (SQ ID) can be received from DCM # j.

これにより、DCM#jに実行依頼したリードコマンドの実行が完了したことを把握することができる。ただし、PCIeのポステッド・ライトのため、DCM#jからの完了応答だけでは、メモリ#iへのリードデータの転送が正常に行われたかどうかはわからない。 This makes it possible to know that the execution of the read command submitted to DCM # j has been completed. However, because of the PCIe posted write, it is not possible to know whether or not the read data has been normally transferred to the memory #i only by the completion response from the DCM # j.

また、CM#i(担当CM)によれば、DCM#jからID(SQ ID)を指定した完了応答を受け付けた場合、当該IDに対応する割り込みフラグを参照して、自メモリ#iへのリードデータの送達状況を判定することができる。 Further, according to CM # i (CM in charge), when a completion response in which an ID (SQ ID) is specified is received from DCM # j, the interrupt flag corresponding to the ID is referred to and the memory # i is sent to the own memory # i. The delivery status of read data can be determined.

これにより、NVMe SSD$kからメモリ#iへのデータ転送と同一の経路を使用して行われるFPGA#i内のDoorbellレジスタへの書き込み状況(データの送達状況)から、メモリ#iへのリードデータの送達状況を判定することができる。 As a result, the read status to the memory # i from the write status (data delivery status) to the Doorbell register in the FPGA # i, which is performed using the same route as the data transfer from the NVMe SSD $ k to the memory # i. The delivery status of the data can be determined.

また、CM#i(担当CM)によれば、複数のID(0~N)のそれぞれのID(Doorbell ID)に対応するDoorbellレジスタを含み、Doorbellレジスタへの書き込みが行われた場合に当該Doorbellレジスタに対応するIDを指定した割り込みを発行するFPGA#iを備え、リードコマンドの実行依頼を、複数のIDのうち他のリードコマンドに対応していないID(SQ ID)を指定して、DCM#jに送信することができる。 Further, according to CM # i (CM in charge), a Doorbell register corresponding to each ID (Doorbell ID) of a plurality of IDs (0 to N) is included, and when writing to the Doorbell register is performed, the Doorbell It is equipped with FPGA # i that issues an interrupt that specifies the ID corresponding to the register, and specifies the ID (SQ ID) that does not correspond to the other read commands among multiple IDs for the execution request of the read command, and DCM. It can be sent to # j.

これにより、各リードコマンドに関する一連の流れの中で、SQ、CQ、Doorbellレジスタ、MSI-X割り込みに、他のリードコマンドに非対応の同じIDを使用して、SQ、CQ、Doorbellレジスタ、MSI-XのIDによる関連付けを行うことができる。このため、複数のリードコマンドを実行した場合であっても、CPU#iがFPGA#iから受け取ったMSI-XのIDを確認することで、どのSQ IDのリードコマンドが正常に完了したのかを判別可能となる。 This allows the SQ, CQ, Doorbell register, MSI to use the same ID that does not support other read commands for the SQ, CQ, Doorbell register, MSI-X interrupt in a series of flows for each read command. -Association by X ID can be performed. Therefore, even when a plurality of read commands are executed, by checking the MSI-X ID received from the FPGA # i by the CPU # i, it is possible to determine which SQ ID read command was completed normally. It becomes possible to distinguish.

また、CM#i(担当CM)によれば、ID(SQ ID)を指定した完了応答をDCM#jから受け付けた場合に、当該IDに対応する割り込みフラグが有効であれば、自メモリ#iへリードデータが送達されたと判定することができる。また、CM#i(担当CM)によれば、当該IDに対応する割り込みフラグが無効であれば、自メモリ#iへリードデータが送達されなかったと判定することができる。 Further, according to CM # i (CM in charge), when a completion response with an ID (SQ ID) is received from DCM # j and the interrupt flag corresponding to the ID is valid, the own memory # i It can be determined that the interrupt data has been delivered. Further, according to CM # i (CM in charge), if the interrupt flag corresponding to the ID is invalid, it can be determined that the read data has not been delivered to the own memory #i.

これにより、一時的なハードウェア障害などが発生して、FPGA#i内のDoorbellレジスタへの書き込みが行われなかった場合は、自メモリ#iへのデータ転送も正常に行われなかったと判断することができる。一方、FPGA#i内のDoorbellレジスタへの書き込みが行われた場合は、自メモリ#iへのデータ転送も正常に行われたと判断することができる。 As a result, if a temporary hardware failure occurs and the writing to the Doorbell register in FPGA # i is not performed, it is determined that the data transfer to the own memory # i is not performed normally. be able to. On the other hand, when the writing is performed to the Doorbell register in FPGA # i, it can be determined that the data transfer to the own memory #i is also performed normally.

また、CM#i(DCM)によれば、自CMを経由して、他CM#j(担当CM)がNVMe SSD$kにアクセスする場合、他CM#jから、NVMe SSD$kに対して他CM#jのメモリ#jへのリードデータの転送を要求するとともに、他CM#jのFPGA#j内の指定されたIDに対応するDoorbellレジスタへの所定のデータの転送を要求するリードコマンドの実行依頼を受け付けることができる。そして、CM#i(DCM)によれば、他CM#jからの実行依頼に応じてリードコマンドをNVMe SSD$kに発行することができる。また、CM#i(DCM)によれば、NVMe SSD$kからリードコマンドで要求されたデータの転送完了通知があった場合、当該IDを指定した完了応答を他CM#jに送信することができる。 Further, according to CM # i (DCM), when another CM # j (in charge CM) accesses NVMe SSD $ k via the own CM, the other CM # j to NVMe SSD $ k. A read command that requests the transfer of read data to the memory # j of another CM # j and also requests the transfer of predetermined data to the Doorbell register corresponding to the specified ID in the FPGA # j of the other CM # j. Can accept execution requests. Then, according to CM # i (DCM), a read command can be issued to NVMe SSD $ k in response to an execution request from another CM # j. Further, according to CM # i (DCM), when NVMe SSD $ k notifies the transfer completion of the data requested by the read command, the completion response specifying the ID can be transmitted to another CM # j. can.

これにより、担当CM#jからの実行依頼に応じて、他メモリ#jへのリードデータの転送を要求するリードコマンドに、当該リードコマンドに対応するSQ IDに関連付けられたDoorbell IDのDoorbellレジスタへの所定のデータの転送要求を追加して、NVMe SSD$kへ発行することができる。また、リードコマンドで要求されたデータのNVMe SSD$kによる転送が完了した場合に、リードコマンドの実行が完了したことを示す完了応答を他CM#jに通知することができる。 As a result, in response to the execution request from the CM # j in charge, the read command requesting the transfer of read data to another memory # j is sent to the Doorbell register of the Doorbell ID associated with the SQ ID corresponding to the read command. A transfer request for predetermined data can be added and issued to NVMe SSD $ k. Further, when the transfer of the data requested by the read command by NVMe SSD $ k is completed, the completion response indicating that the execution of the read command is completed can be notified to other CM # j.

具体的には、例えば、DCM#iは、リードコマンドのデータアドレス1に、担当CM#jのメモリ#j内のデータ領域の転送先アドレスを設定する。また、DCM#iは、データアドレス2に、担当CM#jのFPGA#j内の指定されたSQ-IDに対応するDoorbellレジスタのアドレスを設定する。また、DCM#iは、Number of Logical Blocksを「L+1」として設定する。これにより、メモリ#jへのリードデータの転送が完了した後、Doorbellレジスタへ1ブロック分のデータを転送するよう要求することができ、通信量の増加を抑えつつ、リードデータの送達状況を効果的に判別することが可能となる。 Specifically, for example, DCM # i sets the transfer destination address of the data area in the memory # j of the responsible CM # j to the data address 1 of the read command. Further, DCM # i sets the address of the Doorbell register corresponding to the specified SQ-ID in FPGA # j of the CM # j in charge to the data address 2. Further, DCM # i sets the Number of Logical Blocks as "L + 1". As a result, after the transfer of the read data to the memory # j is completed, it is possible to request that the data for one block be transferred to the Doorbell register, and the read data delivery status is effectively suppressed while suppressing the increase in the communication volume. It is possible to make a distinction.

また、CM#i(DCM)によれば、自CMを経由して、他CM#j(担当CM)がNVMe SSD$kにアクセスする場合、複数のID(0~N)のそれぞれのIDごとに、当該IDに対応するコマンドが格納されるSQと、当該コマンドの完了状態を示す情報が格納されるCQとを自メモリ#i内に作成することができる。そして、CM#i(DCM)によれば、他CM#jから実行依頼を受け付けた場合、自メモリ#i内の指定されたID(SQ ID)に対応するSQにリードコマンドを格納することができる。また、CM#i(DCM)によれば、NVMe SSD$kによって、リードコマンドの完了を示す情報が自メモリ#i内の当該IDに対応するCQに書き込まれた場合、当該IDを指定した完了応答を他CM#jに送信することができる。 Further, according to CM # i (DCM), when another CM # j (in charge CM) accesses NVMe SSD $ k via the own CM, each ID of a plurality of IDs (0 to N) is used. In the own memory # i, an SQ in which the command corresponding to the ID is stored and a CQ in which the information indicating the completion status of the command is stored can be created. Then, according to CM # i (DCM), when an execution request is received from another CM # j, the read command can be stored in the SQ corresponding to the specified ID (SQ ID) in the own memory #i. can. Further, according to CM # i (DCM), when the information indicating the completion of the read command is written in the CQ corresponding to the ID in the own memory #i by NVMe SSD $ k, the completion specifying the ID is completed. The response can be sent to another CM # j.

これにより、複数のリードコマンドの実行を依頼された場合であっても、各リードコマンドの完了状態を区別することが可能となる。 This makes it possible to distinguish the completion status of each read command even when the execution of a plurality of read commands is requested.

これらのことから、実施の形態にかかるストレージシステム100およびCM#iによれば、担当CM#iが他CM#j(DCM)を経由して、NVMe SSD$kにアクセスする場合であっても、データの送達保証を確保することが可能となり、データ抜け(不達)にともなうホスト装置110におけるデータ化けを防ぐことができる。 From these facts, according to the storage system 100 and CM # i according to the embodiment, even when the responsible CM # i accesses NVMe SSD $ k via another CM # j (DCM). It is possible to secure the guarantee of data delivery, and it is possible to prevent data garbled in the host device 110 due to data omission (non-delivery).

なお、本実施の形態で説明した送達状況判定方法は、予め用意されたプログラムをストレージ制御装置等のコンピュータで実行することにより実現することができる。本送達状況判定プログラムは、ハードディスク、フレキシブルディスク、CD(Compact Disc)-ROM、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本送達状況判定プログラムは、インターネット等のネットワークを介して配布してもよい。 The delivery status determination method described in the present embodiment can be realized by executing a program prepared in advance on a computer such as a storage control device. This delivery status determination program is recorded on a computer-readable recording medium such as a hard disk, a flexible disk, a CD (Compact Disc) -ROM, a DVD (Digital Versaille Disk), or a USB (Universal Serial Bus) memory, and is recorded by the computer. It is executed by reading from the medium. Further, the delivery status determination program may be distributed via a network such as the Internet.

上述した実施の形態に関し、さらに以下の付記を開示する。 The following additional notes are further disclosed with respect to the above-described embodiment.

(付記1)データ転送用のバッファ領域を含み、前記バッファ領域への書き込みが行われた場合に当該バッファ領域に対応する識別子を指定した割り込みを発行する、内部の回路を再構成可能な集積回路または専用の集積回路を備え、
他のストレージ制御装置を経由して、レスポンスを要求しないデータ転送を行うストレージデバイスにアクセスする場合、自メモリへのリードデータの転送を要求するとともに、前記集積回路内の指定した第1の識別子に対応するバッファ領域への所定のデータの転送を要求するリードコマンドの実行依頼を、前記他のストレージ制御装置に送信し、
前記集積回路から前記第1の識別子を指定した割り込みを受け付けた場合、前記第1の識別子に対応する割り込みフラグを有効にし、
前記実行依頼に応じて前記他のストレージ制御装置から前記ストレージデバイスに発行される前記リードコマンドの実行が完了した場合に、前記第1の識別子を指定した完了応答を前記他のストレージ制御装置から受け付け、
前記完了応答を受け付けた場合、前記第1の識別子に対応する割り込みフラグを参照して、前記リードデータの送達状況を判定する、
制御部を有することを特徴とするストレージ制御装置。
(Appendix 1) An integrated circuit that includes a buffer area for data transfer and can reconfigure an internal circuit that issues an interrupt that specifies an identifier corresponding to the buffer area when writing to the buffer area is performed. Or with a dedicated integrated circuit
When accessing a storage device that transfers data without requesting a response via another storage control device, the transfer of read data to its own memory is requested and the specified first identifier in the integrated circuit is used. A read command execution request requesting the transfer of predetermined data to the corresponding buffer area is transmitted to the other storage control device.
When an interrupt with the specified first identifier is received from the integrated circuit, the interrupt flag corresponding to the first identifier is enabled and the interrupt flag is enabled.
When the execution of the read command issued from the other storage control device to the storage device is completed in response to the execution request, a completion response specifying the first identifier is received from the other storage control device. ,
When the completion response is received, the delivery status of the read data is determined with reference to the interrupt flag corresponding to the first identifier.
A storage control device characterized by having a control unit.

(付記2)前記集積回路は、
複数の識別子のそれぞれの識別子に対応するバッファ領域を含み、前記バッファ領域への書き込みが行われた場合に当該バッファ領域に対応する識別子を指定した割り込みを発行し、
前記制御部は、
前記複数の識別子のうち他のリードコマンドに対応していない第1の識別子を指定して、前記リードコマンドの実行依頼を前記他のストレージ制御装置に送信する、
ことを特徴とする付記1に記載のストレージ制御装置。
(Appendix 2) The integrated circuit is
A buffer area corresponding to each of the identifiers of the plurality of identifiers is included, and when writing to the buffer area is performed, an interrupt specifying the identifier corresponding to the buffer area is issued.
The control unit
The execution request of the read command is transmitted to the other storage control device by designating the first identifier corresponding to the other read command among the plurality of identifiers.
The storage control device according to Appendix 1, wherein the storage control device is characterized by the above.

(付記3)前記制御部は、
前記第1の識別子を指定した完了応答を前記他のストレージ制御装置から受け付けた場合に、前記第1の識別子に対応する割り込みフラグが有効であれば、前記リードデータが送達されたと判定し、前記第1の識別子に対応する割り込みフラグが無効であれば、前記リードデータが送達されなかったと判定する、
ことを特徴とする付記1または2に記載のストレージ制御装置。
(Appendix 3) The control unit is
When the completion response specifying the first identifier is received from the other storage control device, if the interrupt flag corresponding to the first identifier is valid, it is determined that the read data has been delivered, and the read data is determined. If the interrupt flag corresponding to the first identifier is invalid, it is determined that the read data has not been delivered.
The storage control device according to Appendix 1 or 2, wherein the storage control device is described.

(付記4)前記制御部は、
自装置を経由して、他のストレージ制御装置が前記ストレージデバイスにアクセスする場合、前記他のストレージ制御装置から、前記他のストレージ制御装置のメモリへのリードデータの転送を要求するとともに、前記他のストレージ制御装置の集積回路内の指定された第2の識別子に対応するバッファ領域への所定のデータの転送を要求するリードコマンドの実行依頼を受け付け、
前記実行依頼を受け付けた場合、前記リードコマンドを前記ストレージデバイスに発行し、
前記ストレージデバイスから前記リードコマンドで要求されたデータの転送完了通知があった場合、前記第2の識別子を指定した完了応答を前記他のストレージ制御装置に送信する、
ことを特徴とする付記1~3のいずれか一つに記載のストレージ制御装置。
(Appendix 4) The control unit is
When another storage control device accesses the storage device via its own device, the other storage control device requests transfer of read data from the other storage control device to the memory of the other storage control device, and the other Accepts a read command execution request requesting the transfer of predetermined data to the buffer area corresponding to the specified second identifier in the integrated circuit of the storage controller of
When the execution request is received, the read command is issued to the storage device.
When the storage device notifies the transfer completion of the data requested by the read command, a completion response specifying the second identifier is transmitted to the other storage control device.
The storage control device according to any one of Supplementary note 1 to 3, wherein the storage control device is characterized by the above.

(付記5)前記制御部は、
自装置を経由して、他のストレージ制御装置が前記ストレージデバイスにアクセスする場合、複数の識別子のそれぞれの識別子ごとに、当該識別子に対応するコマンドが格納される第1キューと、当該コマンドの完了状態を示す情報が格納される第2キューとを自メモリ内に作成し、
前記実行依頼を受け付けた場合、自メモリ内の前記第2の識別子に対応する第1キューに前記リードコマンドを格納し、
前記ストレージデバイスによって、前記リードコマンドの完了を示す情報が自メモリ内の前記第2の識別子に対応する第2キューに書き込まれた場合、前記第2の識別子を指定した完了応答を前記他のストレージ制御装置に送信する、
ことを特徴とする付記4に記載のストレージ制御装置。
(Appendix 5) The control unit is
When another storage control device accesses the storage device via its own device, the first queue in which the command corresponding to the identifier is stored for each identifier of the plurality of identifiers and the completion of the command are completed. Create a second queue in the own memory that stores the information indicating the status,
When the execution request is received, the read command is stored in the first queue corresponding to the second identifier in the own memory.
When the storage device writes the information indicating the completion of the read command to the second queue corresponding to the second identifier in its own memory, the completion response specifying the second identifier is sent to the other storage. Send to the controller,
The storage control device according to Appendix 4, wherein the storage control device is characterized by the above.

(付記6)前記集積回路は、FPGA(Field Programmable Gate Array)である、ことを特徴とする付記1~5のいずれか一つに記載のストレージ制御装置。 (Supplementary Note 6) The storage control device according to any one of Supplementary note 1 to 5, wherein the integrated circuit is an FPGA (Field Programmable Gate Array).

(付記7)前記ストレージデバイスは、NVMe(Non-Volatile Memory Express) SSD(Solid State Drive)である、ことを特徴とする付記1~6のいずれか一つに記載のストレージ制御装置。 (Supplementary Note 7) The storage control device according to any one of Supplementary note 1 to 6, wherein the storage device is an NVMe (Non-Voltile Memory Express) SSD (Solid State Drive).

(付記8)前記所定のデータは、前記ストレージデバイスから自メモリへの前記リードデータの転送が完了した後、前記第1の識別子に対応するバッファ領域へ転送される、ことを特徴とする付記1に記載のストレージ制御装置。 (Supplementary Note 8) The predetermined data is transferred to the buffer area corresponding to the first identifier after the transfer of the read data from the storage device to the own memory is completed. The storage control device described in.

(付記9)データ転送用のバッファ領域を含み、前記バッファ領域への書き込みが行われた場合に当該バッファ領域に対応する識別子を指定した割り込みを発行する、内部の回路を再構成可能な集積回路または専用の集積回路を備えたストレージ制御装置に、
他のストレージ制御装置を経由して、レスポンスを要求しないデータ転送を行うストレージデバイスにアクセスする場合、自メモリへのリードデータの転送を要求するとともに、前記集積回路内の指定した第1の識別子に対応するバッファ領域への所定のデータの転送を要求するリードコマンドの実行依頼を、前記他のストレージ制御装置に送信し、
前記集積回路から前記第1の識別子を指定した割り込みを受け付けた場合、前記第1の識別子に対応する割り込みフラグを有効にし、
前記実行依頼に応じて前記他のストレージ制御装置から前記ストレージデバイスに発行される前記リードコマンドの実行が完了した場合に、前記第1の識別子を指定した完了応答を前記他のストレージ制御装置から受け付け、
前記完了応答を受け付けた場合、前記第1の識別子に対応する割り込みフラグを参照して、前記リードデータの送達状況を判定する、
処理を実行させることを特徴とする送達状況判定プログラム。
(Appendix 9) An integrated circuit that includes a buffer area for data transfer and is capable of reconfiguring an internal circuit that issues an interrupt that specifies an identifier corresponding to the buffer area when writing to the buffer area is performed. Or for a storage control device with a dedicated integrated circuit,
When accessing a storage device that transfers data without requesting a response via another storage control device, the transfer of read data to its own memory is requested and the specified first identifier in the integrated circuit is used. A read command execution request requesting the transfer of predetermined data to the corresponding buffer area is transmitted to the other storage control device.
When an interrupt with the specified first identifier is received from the integrated circuit, the interrupt flag corresponding to the first identifier is enabled and the interrupt flag is enabled.
When the execution of the read command issued from the other storage control device to the storage device is completed in response to the execution request, a completion response specifying the first identifier is received from the other storage control device. ,
When the completion response is received, the delivery status of the read data is determined with reference to the interrupt flag corresponding to the first identifier.
A delivery status determination program characterized by executing a process.

(付記10)複数のストレージ制御装置と、レスポンスを要求しないデータ転送を行うストレージデバイスとを含むストレージシステムであって、
前記複数のストレージ制御装置のいずれかのストレージ制御装置は、
データ転送用のバッファ領域を含み、前記バッファ領域への書き込みが行われた場合に当該バッファ領域に対応する識別子を指定した割り込みを発行する、内部の回路を再構成可能な集積回路または専用の集積回路を備え、
他のストレージ制御装置を経由して、レスポンスを要求しないデータ転送を行うストレージデバイスにアクセスする場合、自メモリへのリードデータの転送を要求するとともに、前記集積回路内の指定した第1の識別子に対応するバッファ領域への所定のデータの転送を要求するリードコマンドの実行依頼を、前記他のストレージ制御装置に送信し、
前記他のストレージ制御装置は、
前記実行依頼を受け付けた場合、前記リードコマンドを前記ストレージデバイスに発行し、
前記ストレージ制御装置は、
前記集積回路から前記第1の識別子を指定した割り込みを受け付けた場合、前記第1の識別子に対応する割り込みフラグを有効にし、
前記実行依頼に応じて前記他のストレージ制御装置から前記ストレージデバイスに発行された前記リードコマンドの実行が完了した場合に、前記第1の識別子を指定した完了応答を前記他のストレージ制御装置から受け付け、
前記完了応答を受け付けた場合、前記第1の識別子に対応する割り込みフラグを参照して、前記リードデータの送達状況を判定する、
ことを特徴とするストレージシステム。
(Appendix 10) A storage system including a plurality of storage control devices and a storage device for data transfer that does not require a response.
The storage control device of any of the plurality of storage control devices is
An integrated circuit that can reconfigure an internal circuit or a dedicated integrated circuit that includes a buffer area for data transfer and issues an interrupt that specifies an identifier corresponding to the buffer area when writing to the buffer area is performed. Equipped with a circuit
When accessing a storage device that transfers data without requesting a response via another storage control device, the transfer of read data to its own memory is requested and the specified first identifier in the integrated circuit is used. A read command execution request requesting the transfer of predetermined data to the corresponding buffer area is transmitted to the other storage control device.
The other storage control device is
When the execution request is received, the read command is issued to the storage device.
The storage control device is
When an interrupt with the specified first identifier is received from the integrated circuit, the interrupt flag corresponding to the first identifier is enabled and the interrupt flag is enabled.
When the execution of the read command issued from the other storage control device to the storage device is completed in response to the execution request, a completion response specifying the first identifier is received from the other storage control device. ,
When the completion response is received, the delivery status of the read data is determined with reference to the interrupt flag corresponding to the first identifier.
A storage system that features that.

(付記11)前記他のストレージ制御装置は、
複数の識別子のそれぞれの識別子ごとに、当該識別子に対応するコマンドが格納される第1キューと、当該コマンドの完了状態を示す情報が格納される第2キューとを自メモリ内に作成し、
前記実行依頼を受け付けた場合、自メモリ内の前記第1の識別子に対応する第1キューに前記リードコマンドを格納し、
前記ストレージデバイスによって、前記リードコマンドの完了を示す情報が自メモリ内の前記第1の識別子に対応する第2キューに書き込まれた場合、前記第1の識別子を指定した完了応答を前記ストレージ制御装置に送信する、
ことを特徴とする付記10に記載のストレージシステム。
(Appendix 11) The other storage control device is
For each of the plurality of identifiers, a first queue in which the command corresponding to the identifier is stored and a second queue in which the information indicating the completion status of the command is stored are created in the own memory.
When the execution request is received, the read command is stored in the first queue corresponding to the first identifier in the own memory.
When the storage device writes information indicating the completion of the read command to the second queue corresponding to the first identifier in its own memory, the storage control device sends a completion response specifying the first identifier. Send to,
The storage system according to Appendix 10, wherein the storage system is characterized in that.

100 ストレージシステム
110 ホスト装置
400 ID対応表
501 第1の受付部
502 第1の要求処理部
503 判定部
504 復旧部
601 第2の受付部
602 第2の要求処理部
1200 FRT
cmd NVMeコマンド
#0,#1,#i,#j CM、CPU、メモリ、CA、FPGA、PCIe SW
$0~$5 CE、NVMe SSD
100 Storage system 110 Host device 400 ID correspondence table 501 First reception unit 502 First request processing unit 503 Judgment unit 504 Recovery unit 601 Second reception unit 602 Second request processing unit 1200 FRT
cmd NVMe command # 0, # 1, # i, # j CM, CPU, memory, CA, FPGA, PCIe SW
$ 0- $ 5 CE, NVMe SSD

Claims (9)

データ転送用のバッファ領域を含み、前記バッファ領域への書き込みが行われた場合に当該バッファ領域に対応する識別子を指定した割り込みを発行する、内部の回路を再構成可能な集積回路または専用の集積回路を備え、
他のストレージ制御装置を経由して、レスポンスを要求しないデータ転送を行うストレージデバイスにアクセスする場合、自メモリへのリードデータの転送を要求するとともに、前記集積回路内の指定した第1の識別子に対応するバッファ領域への所定のデータの転送を要求するリードコマンドの実行依頼を、前記他のストレージ制御装置に送信し、
前記集積回路から前記第1の識別子を指定した割り込みを受け付けた場合、前記第1の識別子に対応する割り込みフラグを有効にし、
前記実行依頼に応じて前記他のストレージ制御装置から前記ストレージデバイスに発行される前記リードコマンドの実行が完了した場合に、前記第1の識別子を指定した完了応答を前記他のストレージ制御装置から受け付け、
前記完了応答を受け付けた場合、前記第1の識別子に対応する割り込みフラグを参照して、前記リードデータの送達状況を判定する、
制御部を有することを特徴とするストレージ制御装置。
An integrated circuit that can reconfigure an internal circuit or a dedicated integrated circuit that includes a buffer area for data transfer and issues an interrupt that specifies an identifier corresponding to the buffer area when writing to the buffer area is performed. Equipped with a circuit
When accessing a storage device that transfers data without requesting a response via another storage control device, the transfer of read data to its own memory is requested and the specified first identifier in the integrated circuit is used. A read command execution request requesting the transfer of predetermined data to the corresponding buffer area is transmitted to the other storage control device.
When an interrupt with the specified first identifier is received from the integrated circuit, the interrupt flag corresponding to the first identifier is enabled and the interrupt flag is enabled.
When the execution of the read command issued from the other storage control device to the storage device is completed in response to the execution request, a completion response specifying the first identifier is received from the other storage control device. ,
When the completion response is received, the delivery status of the read data is determined with reference to the interrupt flag corresponding to the first identifier.
A storage control device characterized by having a control unit.
前記集積回路は、
複数の識別子のそれぞれの識別子に対応するバッファ領域を含み、前記バッファ領域への書き込みが行われた場合に当該バッファ領域に対応する識別子を指定した割り込みを発行し、
前記制御部は、
前記複数の識別子のうち他のリードコマンドに対応していない第1の識別子を指定して、前記リードコマンドの実行依頼を前記他のストレージ制御装置に送信する、
ことを特徴とする請求項1に記載のストレージ制御装置。
The integrated circuit is
A buffer area corresponding to each of the identifiers of the plurality of identifiers is included, and when writing to the buffer area is performed, an interrupt specifying the identifier corresponding to the buffer area is issued.
The control unit
The execution request of the read command is transmitted to the other storage control device by designating the first identifier corresponding to the other read command among the plurality of identifiers.
The storage control device according to claim 1.
前記制御部は、
前記第1の識別子を指定した完了応答を前記他のストレージ制御装置から受け付けた場合に、前記第1の識別子に対応する割り込みフラグが有効であれば、前記リードデータが送達されたと判定し、前記第1の識別子に対応する割り込みフラグが無効であれば、前記リードデータが送達されなかったと判定する、
ことを特徴とする請求項1または2に記載のストレージ制御装置。
The control unit
When the completion response specifying the first identifier is received from the other storage control device, if the interrupt flag corresponding to the first identifier is valid, it is determined that the read data has been delivered, and the read data is determined. If the interrupt flag corresponding to the first identifier is invalid, it is determined that the read data has not been delivered.
The storage control device according to claim 1 or 2.
前記制御部は、
自装置を経由して、他のストレージ制御装置が前記ストレージデバイスにアクセスする場合、前記他のストレージ制御装置から、前記他のストレージ制御装置のメモリへのリードデータの転送を要求するとともに、前記他のストレージ制御装置の集積回路内の指定された第2の識別子に対応するバッファ領域への所定のデータの転送を要求するリードコマンドの実行依頼を受け付け、
前記実行依頼を受け付けた場合、前記リードコマンドを前記ストレージデバイスに発行し、
前記ストレージデバイスから前記リードコマンドで要求されたデータの転送完了通知があった場合、前記第2の識別子を指定した完了応答を前記他のストレージ制御装置に送信する、
ことを特徴とする請求項1~3のいずれか一つに記載のストレージ制御装置。
The control unit
When another storage control device accesses the storage device via its own device, the other storage control device requests transfer of read data from the other storage control device to the memory of the other storage control device, and the other Accepts a read command execution request requesting the transfer of predetermined data to the buffer area corresponding to the specified second identifier in the integrated circuit of the storage controller of
When the execution request is received, the read command is issued to the storage device.
When the storage device notifies the transfer completion of the data requested by the read command, a completion response specifying the second identifier is transmitted to the other storage control device.
The storage control device according to any one of claims 1 to 3.
前記制御部は、
自装置を経由して、他のストレージ制御装置が前記ストレージデバイスにアクセスする場合、複数の識別子のそれぞれの識別子ごとに、当該識別子に対応するコマンドが格納される第1キューと、当該コマンドの完了状態を示す情報が格納される第2キューとを自メモリ内に作成し、
前記実行依頼を受け付けた場合、自メモリ内の前記第2の識別子に対応する第1キューに前記リードコマンドを格納し、
前記ストレージデバイスによって、前記リードコマンドの完了を示す情報が自メモリ内の前記第2の識別子に対応する第2キューに書き込まれた場合、前記第2の識別子を指定した完了応答を前記他のストレージ制御装置に送信する、
ことを特徴とする請求項4に記載のストレージ制御装置。
The control unit
When another storage control device accesses the storage device via its own device, the first queue in which the command corresponding to the identifier is stored for each identifier of the plurality of identifiers and the completion of the command are completed. Create a second queue in the own memory that stores the information indicating the status,
When the execution request is received, the read command is stored in the first queue corresponding to the second identifier in the own memory.
When the storage device writes the information indicating the completion of the read command to the second queue corresponding to the second identifier in its own memory, the completion response specifying the second identifier is sent to the other storage. Send to the controller,
The storage control device according to claim 4.
前記集積回路は、FPGA(Field Programmable Gate Array)である、ことを特徴とする請求項1~5のいずれか一つに記載のストレージ制御装置。 The storage control device according to any one of claims 1 to 5, wherein the integrated circuit is an FPGA (Field Programmable Gate Array). 前記ストレージデバイスは、NVMe(Non-Volatile Memory Express) SSD(Solid State Drive)である、ことを特徴とする請求項1~6のいずれか一つに記載のストレージ制御装置。 The storage control device according to any one of claims 1 to 6, wherein the storage device is an NVMe (Non-Voltile Memory Express) SSD (Solid State Drive). データ転送用のバッファ領域を含み、前記バッファ領域への書き込みが行われた場合に当該バッファ領域に対応する識別子を指定した割り込みを発行する、内部の回路を再構成可能な集積回路または専用の集積回路を備えたストレージ制御装置に、
他のストレージ制御装置を経由して、レスポンスを要求しないデータ転送を行うストレージデバイスにアクセスする場合、自メモリへのリードデータの転送を要求するとともに、前記集積回路内の指定した第1の識別子に対応するバッファ領域への所定のデータの転送を要求するリードコマンドの実行依頼を、前記他のストレージ制御装置に送信し、
前記集積回路から前記第1の識別子を指定した割り込みを受け付けた場合、前記第1の識別子に対応する割り込みフラグを有効にし、
前記実行依頼に応じて前記他のストレージ制御装置から前記ストレージデバイスに発行される前記リードコマンドの実行が完了した場合に、前記第1の識別子を指定した完了応答を前記他のストレージ制御装置から受け付け、
前記完了応答を受け付けた場合、前記第1の識別子に対応する割り込みフラグを参照して、前記リードデータの送達状況を判定する、
処理を実行させることを特徴とする送達状況判定プログラム。
An integrated circuit that can reconfigure an internal circuit or a dedicated integrated circuit that includes a buffer area for data transfer and issues an interrupt with an identifier corresponding to the buffer area when writing to the buffer area is performed. For storage control devices equipped with circuits,
When accessing a storage device that transfers data without requesting a response via another storage control device, the transfer of read data to its own memory is requested and the specified first identifier in the integrated circuit is used. A read command execution request requesting the transfer of predetermined data to the corresponding buffer area is transmitted to the other storage control device.
When an interrupt with the specified first identifier is received from the integrated circuit, the interrupt flag corresponding to the first identifier is enabled and the interrupt flag is enabled.
When the execution of the read command issued from the other storage control device to the storage device is completed in response to the execution request, a completion response specifying the first identifier is received from the other storage control device. ,
When the completion response is received, the delivery status of the read data is determined with reference to the interrupt flag corresponding to the first identifier.
A delivery status determination program characterized by executing a process.
複数のストレージ制御装置と、レスポンスを要求しないデータ転送を行うストレージデバイスとを含むストレージシステムであって、
前記複数のストレージ制御装置のいずれかのストレージ制御装置は、
データ転送用のバッファ領域を含み、前記バッファ領域への書き込みが行われた場合に当該バッファ領域に対応する識別子を指定した割り込みを発行する、内部の回路を再構成可能な集積回路または専用の集積回路を備え、
他のストレージ制御装置を経由して、レスポンスを要求しないデータ転送を行うストレージデバイスにアクセスする場合、自メモリへのリードデータの転送を要求するとともに、前記集積回路内の指定した第1の識別子に対応するバッファ領域への所定のデータの転送を要求するリードコマンドの実行依頼を、前記他のストレージ制御装置に送信し、
前記他のストレージ制御装置は、
前記実行依頼を受け付けた場合、前記リードコマンドを前記ストレージデバイスに発行し、
前記ストレージ制御装置は、
前記集積回路から前記第1の識別子を指定した割り込みを受け付けた場合、前記第1の識別子に対応する割り込みフラグを有効にし、
前記実行依頼に応じて前記他のストレージ制御装置から前記ストレージデバイスに発行された前記リードコマンドの実行が完了した場合に、前記第1の識別子を指定した完了応答を前記他のストレージ制御装置から受け付け、
前記完了応答を受け付けた場合、前記第1の識別子に対応する割り込みフラグを参照して、前記リードデータの送達状況を判定する、
ことを特徴とするストレージシステム。
A storage system that includes multiple storage control devices and storage devices that perform data transfers that do not require a response.
The storage control device of any of the plurality of storage control devices is
An integrated circuit that can reconfigure an internal circuit or a dedicated integrated circuit that includes a buffer area for data transfer and issues an interrupt that specifies an identifier corresponding to the buffer area when writing to the buffer area is performed. Equipped with a circuit
When accessing a storage device that transfers data without requesting a response via another storage control device, the transfer of read data to its own memory is requested and the specified first identifier in the integrated circuit is used. A read command execution request requesting the transfer of predetermined data to the corresponding buffer area is transmitted to the other storage control device.
The other storage control device is
When the execution request is received, the read command is issued to the storage device.
The storage control device is
When an interrupt with the specified first identifier is received from the integrated circuit, the interrupt flag corresponding to the first identifier is enabled and the interrupt flag is enabled.
When the execution of the read command issued from the other storage control device to the storage device is completed in response to the execution request, a completion response specifying the first identifier is received from the other storage control device. ,
When the completion response is received, the delivery status of the read data is determined with reference to the interrupt flag corresponding to the first identifier.
A storage system that features that.
JP2020144566A 2020-08-28 2020-08-28 Storage control device, transmission state determination program and storage system Pending JP2022039501A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2020144566A JP2022039501A (en) 2020-08-28 2020-08-28 Storage control device, transmission state determination program and storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020144566A JP2022039501A (en) 2020-08-28 2020-08-28 Storage control device, transmission state determination program and storage system

Publications (1)

Publication Number Publication Date
JP2022039501A true JP2022039501A (en) 2022-03-10

Family

ID=80498504

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020144566A Pending JP2022039501A (en) 2020-08-28 2020-08-28 Storage control device, transmission state determination program and storage system

Country Status (1)

Country Link
JP (1) JP2022039501A (en)

Similar Documents

Publication Publication Date Title
KR101455016B1 (en) Method and apparatus to provide a high availability solid state drive
US10789196B2 (en) Storage system
US20110072209A1 (en) Processing Diagnostic Requests for Direct Block Access Storage Devices
JP2012133405A (en) Storage device and data transfer control method thereof
US10191685B2 (en) Storage system, storage device, and data transfer method
US10901626B1 (en) Storage device
JP4100256B2 (en) Communication method and information processing apparatus
US20110282963A1 (en) Storage device and method of controlling storage device
US20120221809A1 (en) Storage apparatus and data processing method of the same
CN110609659A (en) NVMeoF RAID implementation method for executing read command
US11507307B2 (en) Storage system including a memory controller that enables each storage controller of a plurality of storage controllers to exclusively read and write control information of the memory
JP6773974B2 (en) Storage controller and storage device
JP6649989B2 (en) Storage system and control method thereof
JP2022039501A (en) Storage control device, transmission state determination program and storage system
JP4936088B2 (en) Disk array device, disk array system, and cache control method
US10719391B2 (en) Storage system and storage control apparatus
JP6825263B2 (en) Storage controller and storage system
JP5076400B2 (en) Data processing system and information processing apparatus
JP2023010314A (en) Storage system, data write control method, and data write control program
JP6944117B2 (en) Information processing device, transfer control method and transfer control program
US11940938B2 (en) Hypervisor bridging of different versions of an IO protocol
JP6704127B2 (en) Information processing equipment
JP7201775B2 (en) Storage system, data management method, and data management program
US9639417B2 (en) Storage control apparatus and control method
US11922073B2 (en) Non-disruptive updating of virtual tape emulation applications

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230511

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240229

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240402

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240509