JP2021105843A - Information processing apparatus and method for controlling information processing apparatus - Google Patents
Information processing apparatus and method for controlling information processing apparatus Download PDFInfo
- Publication number
- JP2021105843A JP2021105843A JP2019236839A JP2019236839A JP2021105843A JP 2021105843 A JP2021105843 A JP 2021105843A JP 2019236839 A JP2019236839 A JP 2019236839A JP 2019236839 A JP2019236839 A JP 2019236839A JP 2021105843 A JP2021105843 A JP 2021105843A
- Authority
- JP
- Japan
- Prior art keywords
- response
- request
- error
- address
- storage means
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
Description
本発明は、情報処理装置および情報処理装置の制御方法に関する。 The present invention relates to an information processing device and a control method for the information processing device.
近年、PCなどの情報処理装置では、不揮発性メモリを利用したソリッドステートドライブ(SSD)を用いることでハードディスドライブ(HDD)を用いるよりも高速なデータ転送を可能としている。一方で、これら記憶装置に用いられるインタフェースであるSerial ATA(SATA)は、転送時のデータ・エンコーディングに要する処理時間が増えてレイテンシが大きくなるため、SSD本来の転送パフォーマンスを発揮できていなかった。 In recent years, in information processing devices such as PCs, by using a solid state drive (SSD) using a non-volatile memory, it is possible to transfer data at a higher speed than using a hard disk drive (HDD). On the other hand, Serial ATA (SATA), which is an interface used for these storage devices, has not been able to exhibit the original transfer performance of SSD because the processing time required for data encoding at the time of transfer increases and the latency increases.
そこで、さらに近年では汎用バスのPCI−Express(PCIe)に直接接続でき、SSDの高速性を活かす新たなプロトコルであるNon−Volatile Memory Express(NVMe)プロトコルに対応したSSDが登場し始めている。 Therefore, in recent years, SSDs that can be directly connected to the PCI-Express (PCIe) of general-purpose buses and that support the Non-Volateile Memory Express (NVMe) protocol, which is a new protocol that takes advantage of the high speed of SSDs, have begun to appear.
また、HDDやSSDなどの記憶媒体の故障に対するデータ保護の仕組みとして、2つの記憶装置を用いてデータを二重化して保存するミラーリング技術が存在する。ミラーリングはブリッジ装置を用いて、ホストからのデータを同時に2つの記憶装置に記録するため、データや記憶装置自体が破損しても他方からのデータコピーで復旧が可能である。 Further, as a mechanism for protecting data against a failure of a storage medium such as an HDD or SSD, there is a mirroring technique for duplicating and storing data using two storage devices. Since mirroring uses a bridge device to record data from the host in two storage devices at the same time, even if the data or the storage device itself is damaged, it can be recovered by copying the data from the other.
図1に示すように、記憶装置1側の書き込み処理(コマンドB)が書き込みエラーした際に、記憶装置2側の書き込み処理(コマンドB)で書き込まれたデータをブリッジ装置が読取り、記憶装置1へ書き込み直す。また、図2に示すように、記憶装置1と記憶装置2の書き込み処理が共に書き込みエラーとなった際には、正しいデータを持ち合わせていないため、ブリッジ装置での修復が不可能となる。
As shown in FIG. 1, when the write process (command B) on the
特許文献1は、2台のHDDに同じデータを書き込むRAID1の情報処理装置である。2台のHDDに単一のコマンドでデータの書き込み後に、書き込みエラーがあった否かを確認することで、データ書き込み修復を行うかどうかを判断している。特許文献1に記載の情報処理装置は、2台のHDDの各々に対してデータの書き込みエラーの有無を確認することで、データ書き込み修復が可能か否かを判断している。
しかし、NVMeプロトコルでは、1度の処理で複数のコマンドを扱うため、異なるデータの書き込みでエラーが発生することがあり得る。例えば、図3では、記憶装置1側のコマンドBと記憶装置2側のコマンドCが異なるデータの書き込みでのエラーに該当する。その際に、両記憶装置に書き込みエラーがあるという判断で、修復の可否を判定してしまうと、データ修復可能であるにもかかわらずデータ修復不能となる。
However, in the NVMe protocol, since a plurality of commands are handled in one process, an error may occur in writing different data. For example, in FIG. 3, the command B on the
本発明は、複数のコマンドを一度に扱うプロトコルを用いた際に、複数の記憶装置の異なるキュー位置において書き込みエラーが発生してもデータの修復を行うことが可能なミラーリングシステムを提供することを目的としている。 The present invention provides a mirroring system capable of repairing data even if a write error occurs at different queue positions of a plurality of storage devices when using a protocol that handles a plurality of commands at once. I am aiming.
本発明は、不揮発性の第1記憶手段および不揮発性の第2記憶手段を有する情報処理装置であって、第1アドレスにデータを記憶させる第1要求および第2アドレスにデータを記憶させる第2要求が順番に配された少なくとも2つの要求を前記第1記憶手段に送信する第1送信手段と、前記少なくとも2つの要求を前記第2記憶手段に送信する第2送信手段と、少なくとも前記第1要求に対する第1応答および前記第2要求に対する第2応答を、前記第1記憶手段から順番に受信する第1受信手段と、少なくとも前記第1要求に対する第3応答および前記第2要求に対する第4応答を、前記第2記憶手段から順番に受信する第2受信手段と、少なくとも前記第1応答および前記第2応答を受信した順番に保持する第1保持手段と、少なくとも前記第3応答および前記第4応答を受信した順番に保持する第2保持手段と、前記第1保持手段が保持した応答および前記第2保持手段が保持した応答にエラーを示す情報が含まれるかを確認する確認手段と、前記第1応答がエラーを示す情報を含まず且つ前記第3応答がエラーを示す情報を含むことに従って、前記第1要求に対応する前記第1記憶手段の第1アドレスからデータの読み出しを行い、前記第1要求に対応する前記第2記憶手段の第1アドレスに前記第1記憶手段の第1アドレスから読み出したデータを書き込ませ、前記第4応答がエラーを示す情報を含まず且つ前記第2応答がエラーを示す情報を含むことに従って、前記第2要求に対応する前記第2記憶手段の第2アドレスからデータの読み出しを行い、前記第2要求に対応する前記第1記憶手段の第2アドレスに前記第2記憶手段の第2アドレスから読み出したデータを書き込ませる制御手段と、を有することを特徴とする。 The present invention is an information processing apparatus having a non-volatile first storage means and a non-volatile second storage means, the first request for storing data at a first address and the second for storing data at a second address. A first transmission means for transmitting at least two requests in which requests are arranged in order to the first storage means, a second transmission means for transmitting the at least two requests to the second storage means, and at least the first transmission means. A first receiving means that receives a first response to a request and a second response to the second request in order from the first storage means, and at least a third response to the first request and a fourth response to the second request. A second receiving means that sequentially receives the first response from the second storage means, a first holding means that holds at least the first response and the second response in the order in which they are received, and at least the third response and the fourth response. A second holding means that holds the responses in the order in which they are received, a confirmation means that confirms whether the response held by the first holding means and the response held by the second holding means include information indicating an error, and the above. According to the fact that the first response does not include the information indicating the error and the third response contains the information indicating the error, data is read from the first address of the first storage means corresponding to the first request, and the data is read. The data read from the first address of the first storage means is written to the first address of the second storage means corresponding to the first request, and the fourth response does not include information indicating an error and the second response. Reads data from the second address of the second storage means corresponding to the second request according to the inclusion of information indicating an error, and sets the second address of the first storage means corresponding to the second request. It is characterized by having a control means for writing data read from the second address of the second storage means.
本発明は、複数のコマンドを一度に扱うプロトコルを用いた際に、複数の記憶装置が異なるキュー位置において書き込みエラーが発生してもデータの修復を行うことが可能なミラーリングシステムを提供することが可能となる。 The present invention can provide a mirroring system capable of repairing data even if a write error occurs in different queue positions of a plurality of storage devices when using a protocol that handles a plurality of commands at once. It will be possible.
添付図面を参照して本発明の実施例を詳しく説明する。なお、以下の実施例は特許請求の範囲に係る発明を限定するものではなく、また実施例で説明されている特徴の組み合わせのすべてが本発明の解決手段に必須のものとは限らない。 Examples of the present invention will be described in detail with reference to the accompanying drawings. It should be noted that the following examples do not limit the invention according to the claims, and not all combinations of features described in the examples are essential for the means for solving the present invention.
(実施例1)
図4は、本実施例に関わる情報処理装置のミラーリングシステムの構成を示すブロック図である。
(Example 1)
FIG. 4 is a block diagram showing a configuration of a mirroring system of the information processing apparatus according to the present embodiment.
本実施例の情報処理装置400は、ミラーリングシステム4を有する。ミラーリングシステム4は、コントローラユニット(以下、CU401)と、ブリッジ装置402と、第1記憶装置403と第2記憶装置404を有する。
The
CU401は、ブリッジ装置402と接続されており、情報処理装置400の制御コントローラとしての機能を有している。
The CU 401 is connected to the
ブリッジ装置402は、CU401と第1記憶装置403及び第2記憶装置404と接続されており、CU401から第1記憶装置403に記憶されるデータを二重化して、第2記憶装置404に記憶するミラーリングの機能を有する。
The
第1記憶装置403は、ブリッジ装置402と接続されており、CU401で扱うシステムソフトウェアやユーザデータ及びアプリケーションデータ等を格納する。第2記憶装置404は、ブリッジ装置402と接続されており、第1記憶装置403のデータを二重化したバックアップデータを格納する。第1記憶装置403と第2記憶装置404は、不揮発性の半導体記憶装置であり、例えばSSDである。
The
図5は、CU401の詳細ブロック図である。情報処理装置400のコントローラユニットのハードウェア構成を示すブロック図である。本実施例では、情報処理装置400の例として画像形成装置を示す。画像形成装置は例えばスキャン機能やプリント機能等、複数の機能が一体化された、いわゆるMFP(多機能型周辺装置)として実現される。情報処理装置400は、装置全体を制御するCU401、操作部516、スキャナ512、プリンタ514を含む。
FIG. 5 is a detailed block diagram of the
操作部516は、ユーザからのジョブ実行等の指示の入力を受け付けるためのテンキーや各種ハードキー等を含み、また、ユーザへ装置情報やジョブ進捗情報等、または、情報処理装置が実行可能な機能の設定画面を表示する表示パネルを含む。スキャナ512は、セットされた原稿上の画像を光学的に読み取る画像入力デバイスである。プリンタ514は、画像データに基づいて、印刷用紙等の記録媒体に画像を印刷する画像出力デバイスである。
The
操作部516は、CU401に含まれる操作部インタフェース(I/F)515に接続される。スキャナ512、プリンタ514はそれぞれ、コントローラユニット401に含まれるスキャナ処理部511、プリンタ処理部513に接続される。このような構成により、操作部516、スキャナ512、プリンタ514はそれぞれ、CU401から制御されて動作する。
The
ブリッジ装置402、第1記憶装置403と第2記憶装置404は、後述の図6および図7で詳細を説明する。CU401は、CU401の各ブロックを統括的に制御するCPU501を含む。CPU501は、システムバス417を介して、MEM504、ROM503、操作部I/F515、ネットワークI/F507、ファクスI/F517、画像処理部509、デバイスI/F510、PCIeI/F502と接続される。CPU501は、ROM503に記憶された制御プログラム等に基づいて接続される各種デバイスとのアクセスを統括的に制御するとともに、CU401で実行される各種処理についても統括的に制御する。
The
PCIe−IF502は、PCI−Express規格のインタフェースであり、CPU501からの要求に応じてブリッジ装置402をEndpointとして、ブリッジ装置402との送受信するデータのやり取りと行う。
The PCIe-IF502 is an interface of the PCI-Express standard, and the
ROM503は、不揮発性メモリであり、ブリッジ装置402のブートプログラムや制御プログラム等が格納される。
The
MEM504は、汎用的な揮発性のRAM(DRAM等のメモリ)であり、一時的にデータが格納され、CPU501のワークメモリとして働く。MEM504には、Non−Volatile Memory Express(NVMe)プロトコルで使用するSubmission Queue(SQ)505及びCompletion Queue(CQ)506が構成される。
The
SQ505は、MEM504上に生成されるリングバッファのキューであり、NVMeのコマンドをやり取りするためにCPU501で生成したNVMeコマンド(要求)が順々に格納される。
The SQ505 is a queue of the ring buffer generated on the MEM504, and NVMe commands (requests) generated by the
CQ506は、MEM504上に生成されるリングバッファのキューであり、Endpointであるブリッジ装置402からのコマンド処理完了通知が順々に格納される。
The CQ506 is a queue of the ring buffer generated on the MEM504, and the command processing completion notification from the
操作部I/F515は、操作部516との間で情報の入出力を行うためのインタフェースである。操作部I/F515は、CPU501からの指示により、表示用データを操作部516へ出力し、また、ユーザが操作部516上で入力した情報を、CPU501へ伝送する。
The operation unit I /
ネットワークI/F507は、有線や無線媒体のLANと接続され、情報処理装置とLANで接続された機器との間の情報の入出力を可能にする。ネットワークI/F507は、入力された情報を一時的に記憶するメモリに保持する。ネットワークI/F507は、LANに対応した構成を有し、例えば、無線距離が数十cm程度の近距離無線通信(NearFieldCommunication)に対応した構成を有する場合もある。その場合には、携帯無線端末との間で相互に通信が行われる。
The network I /
ファックスI/F517は、回線と接続され、情報処理装置と回線で接続された機器との間の情報の入出力を可能にする。ファックスI/F507は、入力された情報を一時的に記憶するメモリに保持する。
The fax I /
画像処理部509は、汎用的な画像処理を実行する。例えば、LANを介して外部から取得した画像データに対して、拡大/縮小、回転、変換等の処理を実行する。また、画像処理部509は、LANを介して受信したPDLコードをビットマップ画像へ展開する処理を実行する。また、画像処理部509は、プリンタ処理部513を介してプリンタ514で出力する場合に、第1記憶装置403に圧縮・符号化されて記憶されている画像データをプリンタ処理部513で処理可能な形式にするための処理を実行する。
The
デバイスI/F510は、スキャナ処理部511およびプリンタ処理部513を介してスキャナ512やプリンタ514に接続され、画像データの同期系/非同期系の変換や、設定値、調整値等を伝送する。また、デバイスI/F510は、スキャナ512やプリンタ514での状態情報をCPU501へ伝送する。その状態情報は、例えば、スキャナ512やプリンタ514で発生したジャムなどのエラー情報を含む。
The device I /
スキャナ処理部511は、スキャナ512で読み取られて入力した読取データに対して、補正、加工、像域分離、変倍、2値化処理などのスキャン機能に対応した各種処理を行う。
The
スキャナ512は、不図示の自動連続原稿給送装置と圧板読取装置を含み、原稿ガラス台に設置された原稿の読取りや、複数枚の原稿の両面読取りなども実行可能である。また、不図示の給送装置カバーの開閉、不図示の原稿カバーの開閉、原稿の有無、原稿サイズ検知等を行うセンサがスキャナ512に設けられている。それらのセンサの検知信号やスキャナ512の状態情報は、スキャナ処理部511とデバイスI/F510を介してCPU501へ送信され、CPU501は、スキャナ512でのエラー発生やエラー解除等の状態を認識する。
The
プリンタ処理部513は、プリント出力する画像データに対して、プリンタ514の出力特性に対応した出力補正、解像度変換、画像の印刷位置の調整などのプリント機能に対応した処理を行う。プリンタ514は、印刷用紙を収納するための1つ以上の不図示の給紙カセットと、トナーを収納するための1つ以上の不図示のトナートレイと、給紙カセットから紙を1枚ずつ逐次給紙可能な不図示の給紙ユニットとを含む。且つ、プリンタ514は、給紙した紙にトナーを印字するための不図示のマーキングユニットと、マーキングユニットにより印字されたトナーを熱と圧力により定着させるための不図示の定着ユニットを含む。各給紙カセットの開閉状況や用紙残量、トナートレイの開閉状況、不図示の給紙ユニットカバーの開閉、トナーの有無、給紙中の紙の位置などを検知するセンサがプリンタ514に設けられている。センサからの検知信号やプリンタ514の状態情報は、プリンタ処理部513とデバイスI/F510を介してCPU501へ送信され、CPU501は、プリンタ514でのエラー発生やエラー解除等の状態を認識する。
The
図6は、ブリッジ装置402の詳細ブロック図である。
FIG. 6 is a detailed block diagram of the
ブリッジ装置402は、サブCPU601と、PCIe−IF602、603、604とROM605、MEM606を有する。また、ブリッジ装置402は、PCIe−IF602を介してCU401と接続され、PCIe−IF603及び604を介して第1記憶装置403及び第2記憶装置404に接続される。
The
サブCPU601は、ROM605に記憶された制御プログラム等に基づいて接続されるCU401と第1記憶装置403及び第2記憶装置404とのアクセスを制御する。さらにサブCPU601は、CU401から受信したコマンド群(要求群)を元に各記憶装置用のコマンド群(要求群)を生成する。
The
PCIe−IF(Device)602は、CU401をRootComplexとして、CU401との送受信するデータのやり取りを行う。PCIe−IF(Host1)603は、第1記憶装置403をEndpointとして、記憶装置との送受信するデータのやり取りを行う。PCIe−IF(Host2)604は、第2記憶装置404をEndpointとして、記憶装置との送受信するデータのやり取りを行う。
The PCIe-IF (Device) 602 exchanges data to be transmitted and received to and from the
ROM605は、不揮発性メモリであり、ブリッジ装置402のブートプログラムや制御プログラム等が格納される。
The
MEM606は、汎用的な揮発性のRAM(DRAM等のメモリ)であり、一時的にデータが格納され、サブCPU601のワークメモリとして働く。また、MEM606には、NVMeプロトコルで使用するSQとCQが2組ずつ構成される(SQ607、609とCQ608、610)。
The
SQ607は、MEM606上に生成されるリングバッファのキューであり、NVMeのコマンドをやり取りするためにブリッジ装置402で生成したNVMeコマンドを順々に格納していく。
The SQ607 is a queue of the ring buffer generated on the MEM606, and sequentially stores the NVMe commands generated by the
CQ608は、MEM606上に生成されるリングバッファのキューであり、Endpointである記憶装置からのコマンド完了通知を順々に格納する。 The CQ608 is a queue of the ring buffer generated on the MEM606, and sequentially stores the command completion notification from the storage device which is the Endpoint.
SQ609及びCQ610はSQ607及びCQ608と各々同様である。 SQ609 and CQ610 are similar to SQ607 and CQ608, respectively.
図7は、第1記憶装置403及び第2記憶装置404の詳細ブロック図である。
FIG. 7 is a detailed block diagram of the
第1記憶装置403は、SSDコントローラ701と、PCIe−IF702と、DRAM703と、NAND FLASH704を有する。また、第1記憶装置403は、PCIe−IF702を介して、ブリッジ装置402に接続される。また、第2記憶装置404は、第1記憶装置403と同等の構成であるため第2記憶装置404の構成要件である705〜708の説明を省略する。
The
SSDコントローラ701は、記憶装置内で実行されるファームウェアを処理するプロセッサや、DRAM703を制御するDRAMコントローラや、NAND FLASH704を制御するNAND FLASHコントローラが搭載されている。
The
PCIe−IF702は、ブリッジ装置402をRootComplexとして、ブリッジ装置402との送受信するデータのやり取りを行う。
The PCIe-IF702 uses the
DRAM703は、キャッシュ用のメモリであり、NAND FLASH704に対してデータを書き込む前に、そのデータを一時的に保持する。
The
NAND FLASH704は、実際にデータを記録するデバイスであり、データの読み書きが行われる。ここで言うデータとは、例えばシステムソフトウェアプログラム、履歴データ、画像データ、テーブルなどである。 The NAND FLASH704 is a device that actually records data, and reads and writes data. The data referred to here is, for example, a system software program, history data, image data, a table, or the like.
なお、第1記憶装置403と第2記憶装置404には、データの書き込み時には同じデータが両方の記憶装置に記憶されるが、データの読み出し時には、片方の記憶装置から読み出せばよい。以下の説明では、第1記憶装置403をマスタの記憶装置、第2記憶装置404をスレーブの記憶装置として扱い、マスタの記憶装置からデータの読み出し処理を行う構成とする。
In the
図8のミラーリングシステムの動作説明図を用いて、ミラーリングシステム4の動作を詳細に説明する。 The operation of the mirroring system 4 will be described in detail with reference to the operation explanatory diagram of the mirroring system of FIG.
まずCU401のMEM504の構成について説明する。SQ505は、キューの先頭要素としてHeadポインタ801、キューの末尾要素としてTailポインタ802を用いてコマンドを管理する。CQ506は、キューの先頭要素としてHeadポインタ803、キューの末尾要素はTailポインタ804を用いてコマンド応答(応答群)を管理する。なお、SQ505及びCQ506には、Headポインタ801(803)とTailポインタ802(804)に挟まれたキューにコマンドが格納される。つまり、HeadポインタとTailポインタが同じ位置にある場合、キューは空であることを示す。
First, the configuration of MEM504 of CU401 will be described. The SQ505 manages commands by using the
次にブリッジ装置402の構成について説明する。ブリッジ装置402のSQTD813は、Submission Queue Tail Doorbellの略である。CQHD814は、Completion Queue Head Doorbellの略である。
Next, the configuration of the
SQTD813は、CU401から受け付けたSQ505のTailポインタ802の位置情報を記憶し、記憶した位置情報をサブCPU601に通知するためのレジスタである。CQHD814は、CU401内のCPU501がブリッジ装置402からのコマンド処理完了通知を受けてCQ506に格納された情報の内容を確認したことをCQ506のHeadポインタ803の位置情報を更新して通知するレジスタである。なお、SQTD813とCQHD814は、図6に示すPCIeIF602に含まれてもよいし、ブリッジ装置402の内部にSQTD813とCQHD814を構成するレジスタとして有してもよい。
The SQTD813 is a register for storing the position information of the
MEM606のSQ607は、CU401のSQ505からTailポインタ802の情報を受け付けて、SQ505に格納されたコマンドを取得し格納する。そして、SQ607は、受け付けた情報をキューの先頭要素としてHeadポインタ805、キューの末尾要素としてTailポインタ806として管理する。
The SQ607 of the MEM606 receives the information of the
コマンド格納後、SQ607は、第1記憶装置403のSQTD815にTailポインタ806の情報を通知する。
After storing the command, the SQ607 notifies the SQTD815 of the
また、CQ608は、キューの先頭要素としてHeadポインタ807、キューの末尾要素はTailポインタ808を用いて管理される。そして、CQ608は、第1記憶装置403からのコマンド処理完了通知(応答群)を格納する。そして、CQ608に格納されたコマンド処理完了通知をブリッジ装置402にて処理し終えると、CQ608のHeadポインタ807の位置情報を更新してCQHD816に通知する。
Further, the CQ608 is managed by using the
MEM606のSQ609は、CU401のSQ505からTailポインタ802の情報を受け付けて、SQ505に格納されたコマンドを取得し格納する。そして、SQ609は、受け付けた情報をキューの先頭要素としてHeadポインタ809、キューの末尾要素としてTailポインタ810として管理する。
The SQ609 of the MEM606 receives the information of the
コマンド格納後、SQ609は、第2記憶装置404のSQTD817にTailポインタ810の情報を通知する。
After storing the command, the SQ609 notifies the SQTD817 of the
また、CQ610は、キューの先頭要素としてHeadポインタ811、キューの末尾要素はTailポインタ812を用いて管理される。そして、CQ610は、第2記憶装置404からのコマンド処理完了通知(応答群)を格納する。そして、CQ610に格納されたコマンド処理完了通知をブリッジ装置402にて修理し終えると、CQ610のHeadポインタ811の位置情報を更新してCQHD818に通知する。
Further, the CQ610 is managed by using the
さらに、第1記憶装置403からのコマンド処理完了通知と第2記憶装置404からのコマンド処理完了通知をブリッジ装置402が共に処理し終えたら、そのコマンド処理完了通知をCQ506に通知し格納する。
Further, when the
次に第1記憶装置403の構成について説明する。
Next, the configuration of the
SQTD815とCQHD816は、第1記憶装置403内のレジスタである。SQTD815は、MEM606のSQ607からTailポインタ806の情報を受け付ける。
The SQTD815 and the CQHD816 are registers in the
SSDコントローラ701は、受け付けたTailポインタ806の情報を用いて、SQ607のHeadポインタ805からTailポインタ806まで、コマンドを取得して、それらコマンド処理を順に実行する。SSDコントローラ701は、コマンド処理を実行すると、コマンド処理結果を応答としてCQ608に送信し、格納される。
The
そして、CQ608内に格納されたコマンド処理結果応答をブリッジ装置402で結果内容を確認し終えると、CQ608のHeadポインタ807の位置情報を更新してCQHD816へ通知される。
Then, when the
次に第2記憶装置404の構成について説明する。
Next, the configuration of the
SQTD817とCQHD818は、第2記憶装置404内のレジスタである。SQTD817は、MEM606のSQ609からTailポインタ810の情報を受け付ける。
The SQTD817 and CQHD818 are registers in the
SSDコントローラ705は、受け付けたTailポインタ810の情報を用いて、SQ609のHeadポインタ809からTailポインタ810まで、コマンドを取得して、それらコマンド処理を順に実行する。SSDコントローラ705は、コマンド処理を実行すると、コマンド処理結果を応答としてCQ610に送信し、格納される。
The
そして、CQ610内に格納されたコマンド処理結果応答をブリッジ装置402で結果内容を確認し終えると、CQ610のHeadポインタ811の位置情報を更新してCQHD818へ通知される。
Then, when the
図8に示すミラーリングシステム4でのコマンドの授受について具体例を用いて説明する。 The giving and receiving of commands in the mirroring system 4 shown in FIG. 8 will be described with reference to specific examples.
CU401のCPU501は、第1記憶装置403に対してNVMeプロトコルによるIOアクセスを行うために、NVMeコマンドを作成する。
The
なお、CPU501が、IOアクセスを行う状況は、例えば、スキャナ512が原稿を読み込むことで生成したデータを第1記憶装置403に記憶させる場合や、記憶したデータを読み出して印刷処理を実行する場合がある。また、例えば、ネットワークIFを介してPDLデータを受け付けて第1記憶装置403にデータを記憶させ、記憶させたデータの読み出し、印刷処理を実行する場合である。さらに、例えば、ファックスIFを介してファクシミリデータを受け付けて第1記憶装置403にデータを記憶させ、記憶させたデータの読み出し、印刷処理を実行する場合である。これらのような場合には、データを記憶装置に書き込む、またはデータを記憶装置から読み出す必要があるためCPU501が、第1記憶装置403に対してNVMeプロトコルによるIOアクセスを実行する。なお、本実施形態において、これらの例に限定はされない。
The situation in which the
CPU501はNVMeコマンドを作成すると、MEM504上のSQ505に順々に格納していく。NVMeコマンドを格納する度にSQ505のTailポインタ802を更新し、SQ505内に格納されているNVMeコマンドの末尾位置情報を更新していく。
When the
Tailポインタ802が更新されると、CU401は新たにNVMeコマンドが格納されたことをブリッジ装置402に通知する。そのため、通知を受け取ったブリッジ装置402内のSQTD813は、SQ505の最終Tailポイント802の値を書き込む。
When the
ブリッジ装置402は、CU401上で新たにNVMeコマンドが格納されたことをSQTD813の値が更新されたことにより判断する。
The
ブリッジ装置402は、SQTD813の値が更新されると、SQ505内のHeadポインタ801位置からTailポインタ802位置まで、順に各々のポインタの位置に配置されたNVMeコマンドを引き出す。具体的には、NVMeコマンドの読み出しを行うコマンドを送ることで、CU401にNVMeコマンドを送信させる。
When the value of the
引き出したNVMeコマンドは、ブリッジ装置402内のMEM606のSQ607(Host1)とSQ609(Host2)に格納される。
The extracted NVMe command is stored in SQ607 (Host1) and SQ609 (Host2) of MEM606 in the
以下、ブリッジ装置402内のSQ607及びSQ609にNVMeコマンドを格納するコマンド処理を図9のフローチャートを用いて詳細に説明する。
Hereinafter, the command processing for storing the NVMe command in the SQ607 and SQ609 in the
ブリッジ装置402のSQTD813がCU401からSQ505のTailポインタ802の位置情報通知(以下、Doorbell通知と称する)を受け付けることにより、位置情報が更新される。
The position information is updated when the
位置情報の更新後、ブリッジ装置402はNVMeコマンドの取得を開始し、ブリッジ装置402内のSQ607及びSQ609に新たなNVMeコマンドを格納する。図9は、これら流れを示したフローチャートである。
After updating the position information, the
図9は、サブCPU601によって実行され、ブリッジ装置402のSQTD813がCU401からのSQ505のDoorbell通知を受け付けることにより開始する。
FIG. 9 is executed by the
S901においてサブCPU601は、SQTD813の値が更新されたかを確認する。これによって、CU401のSQ505に新たなNVMeコマンドが格納されたかどうかを確認する。SQTD813の値が更新していればS902に進み、更新がなければS901にとどまる。
In S901, the
S902において、サブCPU601は、CU401上に準備されたNVMeコマンドをSQ505からリードすることで1コマンドを引き出し、S903に進む。
In S902, the
S903において、サブCPU601が引き出したNVMeコマンドを第1記憶装置403側のSQ607に書き込み、S904に進む。S904において、サブCPU601が引き出したNVMeコマンドを第2記憶装置404側のSQ309に書き込み、S905に進む。
In S903, the NVMe command extracted by the
S905は、ブリッジ装置402がCU401上のSQ505に準備されたNVMeコマンドをすべて引き出し切ったかを判断する。コマンドを引き出した際の参照したSQ505のポインタとSQT8D13の値を確認し、同一値であればSQ505に格納された最終コマンドを引き出したと判断できる。すべてのコマンドを引き出した場合終了となり、まだコマンドが残っている場合はS902に戻り、再度コマンドの引き出しを行う。
S905 determines whether the
なお、ステップS902において、1コマンドずつ複数回に分けて引き出す構成を示したが、すべてのコマンドを1度に引き出して処理を行ってもよいし、複数のコマンドを複数回に分けて引き出す構成でもよい。 In step S902, the configuration in which one command is extracted in a plurality of times is shown, but all the commands may be extracted at one time for processing, or a plurality of commands may be extracted in a plurality of times. good.
図10のフローチャートを用いて、ブリッジ装置402のSQ607及びSQ609にNVMeコマンドが格納された後のコマンド処理を説明する。
The command processing after the NVMe command is stored in the SQ607 and SQ609 of the
S1001においてサブCPU601は、ブリッジ装置402内のSQ(Host1)607に、新たなNVMeコマンドが格納されたかどうかの確認を行う。
In S1001, the
具体的にはサブCPU601が、SQ(Host1)607のHeadポインタ805とTailポインタ806の差を確認する。差がある場合には、新たにNVMeコマンドを格納されたことになり、S1002に進む。差がない場合には、新たなNVMeコマンドが格納されていないことになり、S1005に進む。
Specifically, the
S1002においてサブCPU601は、ブリッジ装置402内のSQ(Host1)607に新たなNVMeコマンドが格納されたことを第1記憶装置403に通知する。サブCPU601は、Doorbell通知を使い、SQ(Host1)607のTailポインタ806の位置情報を第1記憶装置403のSQTD815に書き込む。また、サブCPU601は、第1記憶装置403にNVMeコマンド処理依頼をしたことを記憶するために図11に示すコマンド処理リスト1100の第1記憶装置通知フラグ1103をON(1とする)にする。
In S1002, the
ここで、コマンド処理リスト1100の説明をする。図11に示すコマンド処理リストは、各記憶装置を示す記憶装置名称1101とコマンド通知の関係を示す1102で構成される。
Here, the
例えば、第2記憶装置に対してコマンド処理の通知を行っている場合、コマンド通知フラグの値1104はON(1)となり、コマンド処理通知を行っていない場合、コマンド通知フラグの値1104はOFF(0)となる。
For example, when the command processing is notified to the second storage device, the
S1003において、第1記憶装置403のSQTD815の値が更新したことで、第1記憶装置403のSSDコントローラ701により、SQ607からNVMeコマンドの引き出しが行われる。このとき、サブCPU601は、第1記憶装置403からコマンドの送信要求を受け、SQ607に保持されたNVMeコマンドを送信する(送信処理)。このときサブCPU601は、複数のコマンドを1度に送信してもよいし、コマンドを1つずつ送信してもよい。そして、SSDコントローラ701は、引き出されたコマンドの内容に則って処理を行い、コマンド処理が終わるごとに、ブリッジ装置402内の第1記憶装置403側のCQ(Host1)608にコマンド処理完了の書きこみを行う。そして、第1記憶装置403は、全コマンドの処理が完了するとブリッジ装置402に割り込みによる通知を行う。
Since the value of SQTD815 of the
S1004においてサブCPU601は、第1記憶装置403でのNVMeコマンド処理が完了したかどうかの判断を行っている。サブCPU601は、第1記憶装置403からのNVMeコマンド処理完了割り込みが発行されているかどうかを確認する。割り込みで完了割り込みが発行されていればコマンド処理リストの第1記憶装置通知フラグをOFFにしてS1005に進み、完了割り込みが発行されていなければS1004にとどまり、第1記憶装置403でのコマンド処理の完了を待つ。
In S1004, the
S1005においてサブCPU601は、ブリッジ装置402内のSQ(Host2)609に、新たなNVMeコマンドが格納されたかどうかの確認を行う。サブCPU601は、SQ(Host2)609のHeadポインタ809とTailポインタ810の差を確認し、差があれば新たにNVMeコマンドを格納されたことになる。新たなNVMeコマンドが格納されていればS1006に進み、新たなNVMeコマンドが格納されていなければ終了となる。
In S1005, the
S1006においてサブCPU601は、ブリッジ装置402内のSQ(Host2)609に新たなNVMeコマンドが格納されたことを第2記憶装置404に通知する。サブCPU601は、Doorbell通知を使い、SQ(Host2)609のTailポインタ810の位置情報を第2記憶装置404のSQTD817に書き込む。また、サブCPU601は、第2記憶装置404にNVMeコマンド処理依頼をしたことを記憶するためにコマンド処理リスト1100の第2記憶装置通知フラグ1104をON(1とする)にする。
In S1006, the
S1007において、第2記憶装置404のSQTD817の値が更新したことで、第2記憶装置404のSSDコントローラ705により、SQ609からNVMeコマンドの引き出しが行われる。このとき、サブCPU601は、第2記憶装置404からコマンドの送信要求を受け、SQ609に保持されたNVMeコマンドを送信(送信処理)する。このとき、サブCPU601は、複数のコマンドを1度に送信してもよいし、コマンドを1つずつ送信してもよい。
Since the value of SQTD817 of the
そして、SSDコントローラ705によって、引き出したコマンドの内容に則って処理を行い、コマンド処理が終わるごとに、ブリッジ装置402内の第2記憶装置404側のCQ(Host2)610にコマンド処理完了の書きこみが行われる。そして、第1記憶装置404は、全コマンドの処理が完了するとブリッジ装置402に割り込みによる通知を行う。
Then, the
S1008において、サブCPU601は、第2記憶装置404でのNVMeコマンド処理が完了したかどうかの判断を行っている。サブCPU601は、第2記憶装置404からのNVMeコマンド処理完了割り込みが発行されているかどうかを確認する。割り込みで完了割り込みが発行されていればコマンド処理リストの第2記憶装置通知フラグをOFFにして終了となり、完了割り込みが発行されていなければS1008にとどまり、第2記憶装置404でのコマンド処理の完了を待つ。
In S1008, the
S1008までの処理が完了すると、第1記憶装置403と第2記憶装置404共にNVMeコマンドが処理され、そのコマンド結果が各々CQ608とCQ610に格納されたこととなる。
When the processing up to S1008 is completed, the NVMe command is processed in both the
図12のフローチャートを用いて、ブリッジ装置402のCQ608及びCQ610にNVMeコマンドのコマンド処理完了情報が書き込まれた後の処理を説明する。図12は、記憶装置が複数のコマンドにおける記憶処理(データの書き込み処理)を完了すると開始する。
Using the flowchart of FIG. 12, processing after the command processing completion information of the NVMe command is written to CQ608 and CQ610 of the
S1201からS1203にて、CQ608及びCQ610に書込まれたコマンド処理完了情報にエラー処理情報が含まれているかを順々に確認していく。確認した情報は図13のリビルドリスト1300で管理される。リビルドリスト1300は、記憶装置でのエラー処理情報の有無とそれに伴う記憶装置のデータ修復及びCU401への通知手段を示す情報が格納される。
In S1201 to S1203, it is confirmed in order whether the command processing completion information written in CQ608 and CQ610 includes the error processing information. The confirmed information is managed by the
CQ1キュー位置1301の列は、CQ608のポインタ情報を格納する。最初の行にはCQ608のHeadポインタ807に一致した情報が格納され、最終行のCQ608のTailポインタ808の情報まで順々に格納される。
The column at the
CQ2キュー位置1302の列は、CQ610のポインタ情報を格納する。最初の行にはCQ610のHeadポインタ811に一致した情報が格納され、最終行のCQ610のTailポインタ812の情報まで順々に格納される。
The column at the
CQ1エラー情報1303の列は、CQ1キュー位置1301に格納されている位置情報の箇所のコマンド処理完了情報にエラー処理情報が含まれているかどうかを示す。エラー処理情報がある場合には“1”が書き込まれ、ない場合には“0”が書き込まれる。
The column of
CQ2エラー情報1304の列は、CQ2キュー位置1302に格納されている位置情報の箇所のコマンド処理完了情報にエラー処理情報が含まれているかどうかを示す。エラー処理情報がある場合には“1”が書き込まれ、ない場合には“0”が書き込まれる。
The column of
修復処理および通知1305の列は、データの修復処理の有無とCU401への通知の方法を示す。CQ1エラー情報1303とCQ2エラー情報1304共にエラー処理情報がない場合は、修復処理を行わずCU401にマスタ記憶装置であるCQ(Host1)608のコマンド処理完了情報を通知することを示す“0”が書き込まれる。(リビルドリスト1300内のアドレス1310で示されている行を参照)
The column of repair processing and
CQ1エラー情報1303もしくはCQ2エラー情報1304の一方にエラー処理情報がある場合には修復処理を行いCU401に正常な記憶装置のCQのコマンド処理完了情報を通知することを示す“1”が書き込まれる。(リビルドリスト1300内のアドレス1311で示されている行を参照)
If there is error processing information in either the
CQ1エラー情報1303とCQ2エラー情報1304共にエラー処理情報がある場合は、修復処理を行わずCU401にマスタ記憶装置であるCQ608のコマンド処理完了情報を通知することを示す“2”が書き込まれる。(リビルドリスト1300内の1312で示されている行を参照)
When both the
記憶装置アドレス1306の列は、コマンドが処理を実施した記憶装置のアドレス情報が書き込まれる。
The address information of the storage device processed by the command is written in the column of the
図12の説明に戻る。S1201において、サブCPU601は、ブリッジ装置402内のCQ608に格納されているコマンド処理完了情報にエラー処理情報が含まれているか確認する。
Returning to the description of FIG. In S1201, the
確認を行ったCQ608のポインタ情報をCQ1キュー位置1301に格納する。当該のコマンド処理完了情報にエラー処理情報が含まれている場合には、CQ1エラー情報1303にエラーあり(1)を格納し、エラー処理情報が含まれない場合には、エラーなし(0)を格納する。また、コマンドが処理を行った記憶装置のアドレスを記憶装置アドレス1306に格納する。
The confirmed pointer information of the CQ608 is stored in the
S1202において、サブCPU601は、ブリッジ装置402内のCQ610に格納されているコマンド処理完了情報にエラー処理情報が含まれているか確認する。確認を行ったCQ610のポインタ情報をCQ2キュー位置1302に格納する。そして、当該のコマンド処理完了情報にエラー処理情報が含まれている場合には、CQ2エラー情報1304にエラーあり(1)を格納し、エラー処理情報が含まれない場合には、エラーなし(0)を格納する。
In S1202, the
S1203において、サブCPU601は、CQ608とCQ610のコマンド処理完了情報を全て確認し終えたかを判断するために、確認し終えたコマンド処理完了情報のキューの位置情報とCQのTailポインタが一致しているか確認する。確認し終えたコマンド処理完了情報のキューの位置情報とCQのTailポインタが一致している場合は、すべて情報を確認し終えているため、S1204に進む。一致していない場合には、次のコマンド処理完了情報を確認するために、S1201に進む。
In S1203, in order to determine whether the
S1201からS1203で、各CQのコマンド処理完了情報にエラー情報を含んでいるかの確認が終わり、その結果からリビルドリスト1300が作成される。
In S1201 to S1203, confirmation of whether the command processing completion information of each CQ includes error information is completed, and the
S1204において、サブCPU601は、作成されたリビルドリスト1300の修復処理および通知1305を参照して、“1”が書き込まれているか否かを確認し、確認結果に応じて遷移する。言い換えると、CQ608とCQ610の同一のキュー位置において、1つの記憶装置のみでエラーが発生したかを確認する。
In S1204, the
修復処理および通知1305において“1”が書き込まれていない場合、すなわち修復処理および通知1305に“0”または“2”が書き込まれている場合は、S1207に進む。言い換えると、CQ1エラー情報1303とCQ2エラー情報1304の両方が“0”である場合と、両方が“1”である場合は、S1207に進む。さらに言い換えると、1つの記憶装置のみでエラーが発生している状況ではない場合はS1207に進む。
If "1" is not written in the repair process and
修復処理および通知1305において“1”が書き込まれている場合、すなわち修復処理および通知1305に“0”または“2”が書き込まれていない場合は、修復処理を実行するためにS1205に進む。言い換えると、CQ1エラー情報1303とCQ2エラー情報1304のどちらか一方が“0”、他方が“1”である場合に、S1205に進む。さらに言い換えると、1つの記憶装置のみでエラーが発生している場合には、S1205に進む。
If "1" is written in the repair process and
S1205において、サブCPU601は、ミラーリングシステムにおいて記憶装置404および記憶装置403の両方に同じコマンドを送信するミラー状態を解除する。そして、サブCPU601は、CQ608とCQ610の同一のキュー列においてエラーが発生していないCQに対応する記憶装置からデータを読み出す。例えば、リビルドリスト1300のアドレス1311の行において、コマンド処理完了情報にエラー処理情報を含まないことを示す“0”が書き込まれたCQ610に対応する記憶装置404のアドレスBからデータを読み出す。読み出したデータはブリッジ装置402内のMEM606を用いて一時保存してもよいし、ブリッジ装置402内にリビルド専用のバッファメモリを用意して一時保存してもよい。S1205を終えるとS1206に遷移する。
In S1205, the
S1206において、サブCPU601は、CQ608とCQ610の同一のキュー列においてエラーが発生したCQに対応する記憶装置にS1205にて読み出したデータを書き込む。例えば、リビルドリスト1300のアドレス1311の行において、コマンド処理完了情報にエラー処理情報を含むことを示す“1”が書き込まれたCQ608に対応する記憶装置403のアドレスBに、S1205の例で読み出したデータを書き込む。S1206を終えるとS1207に遷移する。
In S1206, the
S1207において、サブCPU601は、リビルドリスト1300の最終行まで修復処理の判定が行われたかを確認する。すべて修復処理の判定が完了している場合には、S1208に進む。判定がすべて完了していない場合には、S1204に進む。
In S1207, the
最終行までの修復処理の例を、図13を用いて説明する。図13であれば、前述したアドレス1311の行において修復処理を行い、アドレス1313の行で修復処理を行う。アドレス1313の行では、まずコマンド処理完了情報にエラー処理情報を含まないことを示す“0”が書き込まれたCQ608に対応する記憶装置403のアドレスDからデータを読み出す。そして、コマンド処理完了情報にエラー処理情報を含むことを示す“1”が書き込まれたCQ610に対応する記憶装置403のアドレスDに、読み出したデータを書き込む。
An example of the repair process up to the last line will be described with reference to FIG. In FIG. 13, the repair process is performed at the line at
S1208において、サブCPU601は、ブリッジ装置402で持っているコマンド処理完了情報をCU401に格納する。CQ608またはCQ610のどちらのコマンド処理完了情報をCU401に格納するか判断するために、リビルドリスト1300の修復処理および通知1305を参照する。
In S1208, the
リビルドリスト1300の修復処理および通知1305に“0”が書き込まれている場合、CU401のCQ506にマスタ記憶装置であるCQ608のコマンド処理完了情報を書き込む。修復処理および通知1305に“1”が書き込まれている場合、CU401のCQ506に正常であることを示す記憶装置のCQのコマンド処理完了情報を書き込む。ここで“1”を書き込まない理由は、修復処理によって、記憶装置403と記憶装置404にデータを正常に記憶することが出来たからである。
When "0" is written in the repair process and
修復処理および通知1305に“2”が書き込まれている場合、CU401のCQ506にマスタ記憶装置であるCQ608のコマンド処理完了情報を書き込む。このとき、マスタ記憶装置のコマンド処理エラー情報を書き込む理由は、記憶装置403と記憶装置404のどちらもエラーとなっているため、修復処理できないからである。
When "2" is written in the repair process and
S1209においてサブCPU601は、記憶装置に対するコマンド処理が完了して、その処理完了通知をすべてCU401のCQ506に書き込み終えたことをCU401に通知する。サブCPU601は、割り込みを使用してCU401に終了したコマンド処理のコマンド完了情報がCQ506にすべて書き終えたことを通知する。
In S1209, the
S1208のCU401のCQ506への通知の仕方について具体的な説明を図17(a)(b)を用いて行う。図17は、ミラーリングシステムの応答構成を示すブロック図である。図17において“×”は、エラーとなるコマンド(応答)を示している。“×”がついていないものは、正常となるコマンド(応答)を示している。図17では、アドレス1310に対応するキューをコマンドA、アドレス1311に対応するキューをコマンドB、アドレス1312に対応するキューをコマンドC、アドレス1313に対応するキューをコマンドDとする。また各コマンドに対応する応答を応答A〜応答Dとする。なお、従来との通知の差分を説明するために、アドレス1312については、正常となるコマンドであるものとする。その他のコマンドは省略する。
A specific description of how to notify CQ506 of CU401 of S1208 will be given with reference to FIGS. 17 (a) and 17 (b). FIG. 17 is a block diagram showing a response configuration of the mirroring system. In FIG. 17, “x” indicates a command (response) that causes an error. Those without "x" indicate normal commands (responses). In FIG. 17, the queue corresponding to address 1310 is command A, the queue corresponding to address 1311 is command B, the queue corresponding to address 1312 is command C, and the queue corresponding to address 1313 is command D. The responses corresponding to each command are referred to as response A to response D. In order to explain the difference between the notification and the conventional one, it is assumed that the
従来の通知の仕方を図17(a)に示す。従来の通知では、1度の書き込み処理に対して応答を行う。そのため従来の通知の仕方を適用すると、次のようになる。サブCPU601は、記憶装置403の応答として、応答Bにおいてエラーを受ける。また、記憶装置404の応答として、応答Dにおいてエラーを受ける。そのため、サブCPU601は、CU401に、エラーが生じた旨の応答を1つの応答で返す。そして、CU401は、コマンドA、コマンドB、コマンドC、コマンドDのリトライを実行する。
A conventional method of notification is shown in FIG. 17 (a). In the conventional notification, a response is made to one writing process. Therefore, if the conventional notification method is applied, it will be as follows. The
一方、本実施例では、図17(b)に示すようにサブCPU601は、CU401から受信した各コマンドの各々に対して応答を返す。これにより、CU401は、各コマンドの各々に対してエラーか正常かを判断することが可能となる。さらに、本実施例では、図17(b)に示すようにアドレス1311とアドレス1313に修復処理を実行し、アドレス1311とアドレス1313のキュー位置において正常である旨の通知をすることが出来る。そのため、サブCPU601は、CU401に、応答Aから応答Dにおいて正常である旨の通知を返す。
On the other hand, in this embodiment, as shown in FIG. 17B, the
つまり、従来の構成を適用すると、複数のコマンドを1度の書き込み処理として扱ってしまう。さらに一方の記憶装置への書き込みが成功しており、データ修復可能であるにも関わらずホストシステムに当該書き込み処理に対して書き込みエラーを通知してしまうおそれがある。 That is, if the conventional configuration is applied, a plurality of commands are treated as one writing process. Furthermore, writing to one of the storage devices has been successful, and there is a risk that the host system will be notified of a write error for the write process even though the data can be recovered.
しかし、本実施例の構成によれば、サブCPUは、両記憶装置の応答を確認した上でCU401に各コマンドに対する応答を送信することが可能となる。そして、データ修復可能なものはデータ修復するためコマンドのリトライを削減することが可能となる。
However, according to the configuration of this embodiment, the sub CPU can transmit the response to each command to the
以上の本実施例の構成によれば、複数のコマンドを一度に扱うプロトコルを用いた際に、複数の記憶装置が異なるキュー位置において書き込みエラーが発生してもデータの修復を行うことが可能となる。 According to the above configuration of this embodiment, when a protocol that handles a plurality of commands at once is used, it is possible to repair data even if a write error occurs in different queue positions of a plurality of storage devices. Become.
(実施例2)
実施例1では、ブリッジ装置402に格納されたコマンド処理完了情報のエラー処理情報を基に、リビルドリスト1300を作成し、1つ1つのコマンド単位で修復を行うか判定していく構成のミラーリングシステムの説明をした。
(Example 2)
In the first embodiment, a mirroring system having a configuration in which a
実施例2では、1度に扱う複数コマンドの中で、同アドレスへの書き込みアクセスが複数あり、その際の書き込みデータが異なる場合の修復方法に関して図14〜図16を用いて説明する。図4〜図11までは実施例1と同様であるため説明を省略する。 In the second embodiment, a repair method when there are a plurality of write accesses to the same address among the plurality of commands handled at one time and the write data at that time is different will be described with reference to FIGS. 14 to 16. Since FIGS. 4 to 11 are the same as those in the first embodiment, the description thereof will be omitted.
図14に本実施例2の具体的な状況図を示す。コマンドAからコマンドEはNVMeプロトコルで1度に扱う1つのコマンド群であり、コマンドBとコマンドEは同アドレスへのデータ書き込みであるが、書き込みを行う順番と書き込むデータが異なる。 FIG. 14 shows a specific situation diagram of the second embodiment. Command A to Command E are one command group handled at one time by the NVMe protocol, and Command B and Command E are data writing to the same address, but the writing order and the writing data are different.
このような状況下で、ブリッジ装置を介して第1記憶装置と第2記憶装置にコマンド処理を実施する。その結果、第1記憶装置側ではコマンドBがエラーを起こし、第2記憶装置側ではコマンドEがエラーを起こした状況を示している。 Under such a situation, command processing is performed on the first storage device and the second storage device via the bridge device. As a result, the command B causes an error on the first storage device side, and the command E causes an error on the second storage device side.
図14で示す状況では、コマンドBで書き込んだデータは、最終的な書き込みを行ったコマンドEで書き込んだデータで上書きされているので、修復処理ではコマンドEの修復処理のみを行うように制御する。すなわち、コマンドBの修復処理はスキップし、コマンドEの修復処理のみを行う。以下で具体的な方法を説明する。 In the situation shown in FIG. 14, since the data written by the command B is overwritten by the data written by the command E that was finally written, the repair process is controlled so that only the repair process of the command E is performed. .. That is, the repair process of command B is skipped, and only the repair process of command E is performed. A specific method will be described below.
実施例2において、ブリッジ装置402のCQ608およびCQ610に各記憶装置のコマンド処理完了情報が書き込まれた後、ブリッジ装置402でのデータの修復処理を説明する。本実施例では、図15を用いて実施例1の図12との差分を説明する。同様の構成には同様の番号を付して説明を省略する。
In the second embodiment, after the command processing completion information of each storage device is written in the
S1501において、サブCPU601は、例として図16(a)に示すリビルドリスト1600aの修復処理および通知1305を参照して、修復処理を実行するものか否かを確認する。具体的には、修復処理および通知1305が“1”であるか否かを確認する。なお、実施例1の図12のように言い換えてもよい。
In S1501, the
リビルドリスト1600aの確認は、リビルドリスト1600aの末尾から確認を行っていく。なお、図16(a)は図13で説明したリビルドリスト1300と同じ構成である。
Confirmation of the
サブCPU601は、リビルドリスト1600aの修復処理および通知1305を参照し、修復処理を実行することを示す“1”が書き込まれているかを確認する。そして修復処理を実行するもの(“1”が書き込まれているもの)でリビルドリスト内に記憶装置アドレス1306が同一アドレスになっているものがあるか否かを判断する。同一アドレスが存在すれば、S1502に進む。同一アドレスが存在しなければ、S1503に進む。言い換えると、CQ608とCQ610の同一のキュー位置で、一方が“1”、他方が“0”の構成が、複数のキュー位置にあり、且つ、複数のキュー位置の中に書き込み先が同一アドレスのキュー位置が有る否かを判断する。
The
S1502において、サブCPU601は、同一アドレスの修復処理のキュー位置の中で、コマンド処理順が最新以外の物の修復処理および通知1305の“1”を“3”に書き換える。言い換えると、同一のアドレスに最後に書き込みを行ったキュー位置に対応する修復および通知1305を1として残し、それ以外のキュー位置に対応する修復および通知1305を3に書き換える。修復処理および通知1305に“3”が書き込まれた場合、修復処理を行わず、CU401に通知するCQの情報は正常な記憶装置のCQのコマンド処理完了情報(“0”)を通知することを示す。
In S1502, the
図16を用いて具体的に説明する。図16(a)のリビルドリスト1600aの末尾から、修復処理を実行することを示す“1”が書き込まれているコマンド処理を確認する。
This will be specifically described with reference to FIG. From the end of the
ここで修復処理および通知に“1”が書き込まれているキュー位置の記憶装置アドレス1306を確認する。ここでは、アドレス1602がアドレスBであることを確認する。そして、修復処理および通知に“1”が書き込まれている他のキュー位置を確認し、アドレスBの有無を確認する。
Here, the
ここでは、アドレス1601がアドレスBとなっている。これより以前のコマンド処理の中で修復処理を実行するキュー位置で同一アドレスの物があるか確認する。そして、アドレス1601は、アドレス1602よりも前に書き込みを行っているため、1601の行の記憶装置アドレス1306に対応する修復処理および通知1305の“1”の情報を“3”に書き換える。置き換えた構成を図6(b)に示す。図6(b)では、通知処理及び通知1603が“3”に置き換えられている。
Here, the address 1601 is the address B. Check if there is a thing with the same address at the queue position where the repair process is executed in the command process before this. Since the address 1601 is written before the
S1503において、サブCPU601は、リビルドリスト1600の最終行から1行目まで同一アドレスの修復処理の物があるかを確認し終えたかを確認する。すべての確認が完了している場合には、S1504に進む。確認がすべて完了していない場合には、S1501に進む。
In S1503, the
S1504において、サブCPU601は、作成されたリビルドリスト1600bの修復処理および通知1305を参照して、“1”が書き込まれているか否かを確認する。言い換えると、CQ608とCQ610の同一のキュー位置において、1つの記憶装置のみでエラーが発生したかを確認する。
In S1504, the
修復処理および通知1305において“1”が書き込まれていない場合には、(1つの記憶装置のみでエラーが発生していない場合)、すなわち修復処理および通知1305に“0”、“2”または“3”が書き込まれている場合は、S1207に進む。言い換えると、CQ1エラー情報1303とCQ2エラー情報1304の両方が“0”である場合と、両方が“1”である場合には、S1207に進む。さらに、CQ1エラー情報1303とCQ2エラー情報1304の一方が“1”で他方が“0”であり、且つ、対応する記憶装置アドレス1306が同じ場合には、S1207に進む。
If "1" is not written in the repair process and notification 1305 (if no error has occurred in only one storage device), that is, "0", "2" or "" in the repair process and
修復処理および通知1605において“1”が書き込まれている場合には、すなわち修復処理および通知1605に“0”、“2”または“3”が書き込まれていない場合は、修復処理を実行するためにS1205に進む。言い換えると、CQ1エラー情報1303とCQ2エラー情報1304の一方が“1”で他方が“0”であり、且つ、対応する記憶装置アドレス1306が違う場合には、S1205に進む。さらに言い換えると、1つの記憶装置のみでエラーが発生している場合にS1205に進む。
If "1" is written in the repair process and notification 1605, that is, if "0", "2" or "3" is not written in the repair process and notification 1605, the repair process is executed. Proceed to S1205. In other words, if one of the
S1509は、S1209と同様であるが、スキップしたアドレスBへの書き込みを指示するコマンドへの応答に対して、サブCPU601が正常に処理した旨のコマンドをCU401に返す点で異なる。
S1509 is the same as S1209, except that the
本実施例の構成によれば、修復処理を実行する前にリビルドリスト1600の修復処理および通知1305の情報を書き換えることで、同一アドレスに対する修復処理をスキップすることが可能となる。
According to the configuration of this embodiment, the repair process for the same address can be skipped by rewriting the information of the repair process and the
(その他の実施形態)
以上、本発明の様々な例と実施形態を示して説明したが、本発明の趣旨と範囲は、本明細書内の特定の説明に限定されるものではない。
(Other embodiments)
Although various examples and embodiments of the present invention have been described above, the gist and scope of the present invention are not limited to the specific description in the present specification.
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。 The present invention supplies a program that realizes one or more functions of the above-described embodiment to a system or device via a network or storage medium, and one or more processors in the computer of the system or device reads and executes the program. It can also be realized by the processing to be performed. It can also be realized by a circuit (for example, ASIC) that realizes one or more functions.
401 CU
402 ブリッジ装置
403 第1記憶装置
404 第2記憶装置
401 CU
402
Claims (16)
第1アドレスにデータを記憶させる第1要求および第2アドレスにデータを記憶させる第2要求が順番に配された少なくとも2つの要求を前記第1記憶手段に送信する第1送信手段と、
前記少なくとも2つの要求を前記第2記憶手段に送信する第2送信手段と、
少なくとも前記第1要求に対する第1応答および前記第2要求に対する第2応答を、前記第1記憶手段から順番に受信する第1受信手段と、
少なくとも前記第1要求に対する第3応答および前記第2要求に対する第4応答を、前記第2記憶手段から順番に受信する第2受信手段と、
少なくとも前記第1応答および前記第2応答を受信した順番に保持する第1保持手段と、
少なくとも前記第3応答および前記第4応答を受信した順番に保持する第2保持手段と、
前記第1保持手段が保持した応答および前記第2保持手段が保持した応答にエラーを示す情報が含まれるかを確認する確認手段と、
前記第1応答がエラーを示す情報を含まず且つ前記第3応答がエラーを示す情報を含むことに従って、前記第1要求に対応する前記第1記憶手段の第1アドレスからデータの読み出しを行い、前記第1要求に対応する前記第2記憶手段の第1アドレスに前記第1記憶手段の第1アドレスから読み出したデータを書き込ませ、前記第4応答がエラーを示す情報を含まず且つ前記第2応答がエラーを示す情報を含むことに従って、前記第2要求に対応する前記第2記憶手段の第2アドレスからデータの読み出しを行い、前記第2要求に対応する前記第1記憶手段の第2アドレスに前記第2記憶手段の第2アドレスから読み出したデータを書き込ませる制御手段と、
を有することを特徴とする情報処理装置。 An information processing device having a non-volatile first storage means and a non-volatile second storage means.
A first transmission means for transmitting at least two requests in which a first request for storing data in the first address and a second request for storing data in the second address are arranged in order to the first storage means, and a first transmission means.
A second transmitting means for transmitting the at least two requests to the second storage means, and
A first receiving means that receives at least a first response to the first request and a second response to the second request in order from the first storage means.
A second receiving means that receives at least a third response to the first request and a fourth response to the second request in order from the second storage means.
A first holding means that holds at least the first response and the second response in the order in which they are received,
A second holding means that holds at least the third response and the fourth response in the order in which they are received,
A confirmation means for confirming whether the response held by the first holding means and the response held by the second holding means contain information indicating an error.
According to the fact that the first response does not contain the information indicating the error and the third response contains the information indicating the error, data is read from the first address of the first storage means corresponding to the first request. The data read from the first address of the first storage means is written to the first address of the second storage means corresponding to the first request, and the fourth response does not include information indicating an error and the second response. As the response contains information indicating an error, data is read from the second address of the second storage means corresponding to the second request, and the second address of the first storage means corresponding to the second request is read. A control means for writing the data read from the second address of the second storage means, and
An information processing device characterized by having.
前記第1応答がエラーを示す情報でなく且つ前記第3応答がエラーを示す情報であることに従って、前記判断手段は、前記第1アドレスにデータを記憶させる記憶処理として、前記第1要求に対応する前記第1記憶手段の第1アドレスからデータの読み出しを行い、前記第1要求に対応する前記第2記憶手段の第1アドレスに前記第1記憶手段の第1アドレスから読み出したデータを書き込ませる処理が必要と判断することを特徴とする請求項1または2に記載の情報処理装置。 It has a judgment means for judging the result of the response to each request of the at least two requests from the confirmation result by the confirmation means.
According to the fact that the first response is not information indicating an error and the third response is information indicating an error, the determination means responds to the first request as a storage process for storing data in the first address. Data is read from the first address of the first storage means, and the data read from the first address of the first storage means is written to the first address of the second storage means corresponding to the first request. The information processing apparatus according to claim 1 or 2, wherein processing is determined to be necessary.
前記第1受信手段は、前記第1応答および前記第2応答よりも後に前記第3要求に対応する第5応答を受信し、
前記第2受信手段は、前記第3応答および前記第4応答よりも後に前記第3要求に対応する第6応答を受信し、
前記第1保持手段は、前記第1応答および前記第2応答よりも後に第5応答を保持し、
前記第2保持手段は、前記第1応答および前記第2応答よりも後に第6応答を保持することを特徴とする請求項1乃至6のいずれか1項に記載の情報処理装置。 The first transmission means and the second transmission means transmit, as at least two requests, a third request for storing data in the first address after the first request and the second request.
The first receiving means receives the first response and the fifth response corresponding to the third request after the second response, and receives the fifth response.
The second receiving means receives the third response and the sixth response corresponding to the third request after the fourth response, and receives the third response.
The first holding means holds the fifth response after the first response and the second response.
The information processing apparatus according to any one of claims 1 to 6, wherein the second holding means holds the first response and the sixth response after the second response.
前記コントローラユニットから複数の要求を受信する受信手段と、
前記受信手段が受信した複数の要求を受信した順番に保持する第3保持手段と、を有することを特徴とする請求項1乃至9のいずれか1項に記載の情報処理装置。 With the controller unit
A receiving means for receiving a plurality of requests from the controller unit, and
The information processing apparatus according to any one of claims 1 to 9, further comprising a third holding means that holds a plurality of requests received by the receiving means in the order in which they are received.
前記第1保持手段が保持した応答および前記第2保持手段が保持した応答にエラーを示す情報が含まれるかを確認するステップと、
前記第1応答がエラーを示す情報を含まず且つ前記第3応答がエラーを示す情報を含むことに従って、前記第1要求に対応する前記第1記憶手段の第1アドレスからデータの読み出しを行い、前記第1要求に対応する前記第2記憶手段の第1アドレスに前記第1記憶手段の第1アドレスから読み出したデータを書き込ませるステップと、
前記第4応答がエラーを示す情報を含まず且つ前記第2応答がエラーを示す情報を含むことに従って、前記第2要求に対応する前記第2記憶手段の第2アドレスからデータの読み出しを行い、前記第2要求に対応する前記第1記憶手段の第2アドレスに前記第2記憶手段の第2アドレスから読み出したデータを書き込ませるステップと、を有することを特徴とする情報処理装置の制御方法。 At least two non-volatile first storage means, a non-volatile second storage means, a first request for storing data at the first address, and a second request for storing data at the second address are arranged in order. A first transmitting means for transmitting a request to the first storage means, a second transmitting means for transmitting the at least two requests to the second storage means, a first response to at least the first request, and the second request. The first receiving means for receiving the second response to the first request in order from the first storage means, and at least the third response to the first request and the fourth response to the second request are sequentially received from the second storage means. A second receiving means for receiving, a first holding means for holding at least the first response and the second response in the order in which they are received, and a second holding means for holding at least the third response and the fourth response in the order in which they are received. A method for controlling an information processing device having a holding means.
A step of confirming whether the response held by the first holding means and the response held by the second holding means include information indicating an error, and
According to the fact that the first response does not contain the information indicating the error and the third response contains the information indicating the error, data is read from the first address of the first storage means corresponding to the first request. A step of writing the data read from the first address of the first storage means to the first address of the second storage means corresponding to the first request, and
According to the fact that the fourth response does not contain the information indicating the error and the second response contains the information indicating the error, data is read from the second address of the second storage means corresponding to the second request. A control method for an information processing apparatus, which comprises a step of writing data read from a second address of the second storage means to a second address of the first storage means corresponding to the second request.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019236839A JP2021105843A (en) | 2019-12-26 | 2019-12-26 | Information processing apparatus and method for controlling information processing apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019236839A JP2021105843A (en) | 2019-12-26 | 2019-12-26 | Information processing apparatus and method for controlling information processing apparatus |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021105843A true JP2021105843A (en) | 2021-07-26 |
Family
ID=76918886
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019236839A Pending JP2021105843A (en) | 2019-12-26 | 2019-12-26 | Information processing apparatus and method for controlling information processing apparatus |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2021105843A (en) |
-
2019
- 2019-12-26 JP JP2019236839A patent/JP2021105843A/en active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5126595B2 (en) | Image processing apparatus and image processing system | |
JP2005309550A (en) | Remote copying method and system | |
JP5506568B2 (en) | Data processing apparatus, data processing method for data processing apparatus, and program | |
JP6875808B2 (en) | Information processing device | |
US8643888B2 (en) | Image forming apparatus and method for controlling the same | |
JP2012226519A (en) | Image forming method and image forming apparatus | |
JP6981096B2 (en) | Information processing equipment | |
JP2021105843A (en) | Information processing apparatus and method for controlling information processing apparatus | |
JP2021105844A (en) | Information processing apparatus and method for controlling information processing apparatus | |
JP2018063676A (en) | Information processing device, control method thereof, and program | |
JP6406219B2 (en) | Communication apparatus and image forming apparatus | |
JP2021086583A (en) | Information processor, controller, and control method of controller | |
JP2012103873A (en) | Image processing device and mirroring determination method | |
JP7214381B2 (en) | IMAGE FORMING APPARATUS, IMAGE FORMING APPARATUS CONTROL METHOD AND PROGRAM | |
US10168958B2 (en) | Information processing system, method in information processing system, and storage medium | |
JP2020154376A (en) | Information processing system, information processing device and information processing program | |
JP2014138265A (en) | Image forming apparatus | |
JP4589768B2 (en) | Information processing device | |
JP2020060869A (en) | Information processing device, control method of information processing device, and program | |
US11669268B2 (en) | Information processing apparatus and control method therefor | |
US11842066B2 (en) | Control apparatus and information processing system for providing a bridge apparatus between a host controller and a non-volatile storage medium to encrypt and decrypt data | |
JP2006222581A (en) | Image forming apparatus and control method thereof, computer program, and storage medium | |
US11687287B2 (en) | Control apparatus and information processing system | |
JP2021179730A (en) | Information processing apparatus, control method thereof, and program | |
JP2021072016A (en) | Image forming apparatus, method for controlling the same, and program |