JP2022067916A - Controller and control method for controller - Google Patents
Controller and control method for controller Download PDFInfo
- Publication number
- JP2022067916A JP2022067916A JP2020176782A JP2020176782A JP2022067916A JP 2022067916 A JP2022067916 A JP 2022067916A JP 2020176782 A JP2020176782 A JP 2020176782A JP 2020176782 A JP2020176782 A JP 2020176782A JP 2022067916 A JP2022067916 A JP 2022067916A
- Authority
- JP
- Japan
- Prior art keywords
- storage device
- command
- semiconductor storage
- type
- read
- 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
- 238000000034 method Methods 0.000 title claims description 11
- 239000004065 semiconductor Substances 0.000 claims abstract description 47
- 230000015654 memory Effects 0.000 claims description 32
- 238000013403 standard screening design Methods 0.000 claims 1
- 230000010365 information processing Effects 0.000 abstract description 10
- 230000015556 catabolic process Effects 0.000 abstract 1
- 238000006731 degradation reaction Methods 0.000 abstract 1
- 238000006243 chemical reaction Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 4
- KNMAVSAGTYIFJF-UHFFFAOYSA-N 1-[2-[(2-hydroxy-3-phenoxypropyl)amino]ethylamino]-3-phenoxypropan-2-ol;dihydrochloride Chemical compound Cl.Cl.C=1C=CC=CC=1OCC(O)CNCCNCC(O)COC1=CC=CC=C1 KNMAVSAGTYIFJF-UHFFFAOYSA-N 0.000 description 3
- IPCCFHHXDRGUOQ-QGZVFWFLSA-N (3R)-4-[2-[4-[1-(3-chloro-[1,2,4]triazolo[4,3-b]pyridazin-6-yl)piperidin-4-yl]phenoxy]ethyl]-1,3-dimethylpiperazin-2-one Chemical compound ClC1=NN=C2N1N=C(C=C2)N1CCC(CC1)C1=CC=C(OCCN2[C@@H](C(N(CC2)C)=O)C)C=C1 IPCCFHHXDRGUOQ-QGZVFWFLSA-N 0.000 description 1
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- FNENWZWNOPCZGK-UHFFFAOYSA-N ethyl 2-methyl-3-oxobutanoate Chemical compound CCOC(=O)C(C)C(C)=O FNENWZWNOPCZGK-UHFFFAOYSA-N 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Landscapes
- Hardware Redundancy (AREA)
Abstract
Description
本発明は制御装置および制御装置の制御方法に関する。 The present invention relates to a control device and a control method for the control device.
近年、PCなどの情報処理装置では、不揮発性メモリを利用したソリッドステートドライブ(SSD)がハードディスドライブ(HDD)に取って代わってきており、より高速なデータ転送が可能となってきている。一方で、これら記憶装置に用いられるインターフェイスであるSerial ATA(SATA)は、転送時のデータ・エンコーディングに要する物理的なオーバヘッドが大きくレイテンシが大きいため、SSD本来の転送パフォーマンスを発揮できていなかった。そこで、さらに近年では汎用バスのPCI-Express(PCIe)に直接接続でき、SSDの高速性を活かす新たなプロトコルであるNon-Volatile Memory Express(NVMe)プロトコルに対応したSSDが登場し始めている。 In recent years, in information processing devices such as PCs, solid state drives (SSDs) using non-volatile memories have replaced hard disk drives (HDDs), and higher-speed data transfer has become possible. On the other hand, Serial ATA (SATA), which is an interface used for these storage devices, cannot exhibit the original transfer performance of SSD because the physical overhead required for data encoding at the time of transfer is large and the latency is large. Therefore, in recent years, SSDs compatible with the Non-volatile Memory Express (NVMe) protocol, which is a new protocol that can be directly connected to the general-purpose bus PCI-Express (PCIe) and take 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 device 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命令群をNVMe-Of(またはNVMe)プロトコルを用いて第1インターフェイスで受信する。その後、ブリッジ装置は、第1命令群に基づいて第2命令群を生成し、第2NVMeプロトコルを用いて第2インターフェイスで生成した第2命令群を送信する。
The bridge device of
特許文献1に記載のブリッジ装置は、ホストコンピュータからの命令群を受信して、受信内容から記憶装置に送信する命令群を生成することを行っている。
The bridge device described in
しかし、このブリッジ装置の構成では受信した1つの命令群から送信する1つの命令群を生成する構成であるので、ミラーリングシステムのような1入力2出力のブリッジ装置に対応させると、2つの記憶装置に対して同一の命令が実行されることになる。 However, since this bridge device is configured to generate one instruction group to be transmitted from one received instruction group, if it corresponds to a one-input two-output bridge device such as a mirroring system, two storage devices are used. The same instruction will be executed for.
そのため、記憶装置ごとに別の処理を行うことが出来ない。その結果、1つの記憶装置のみで実行すれば良いコマンド、例えば、記憶装置に対するリード命令が2つの記憶装置で発生してしまう。その結果、ミラーリングシステムとして不必要なリード処理が発生してしまい、パフォーマンスを低下させてしまう可能性がある。 Therefore, it is not possible to perform different processing for each storage device. As a result, a command that needs to be executed by only one storage device, for example, a read command to the storage device is generated in the two storage devices. As a result, unnecessary read processing occurs as a mirroring system, which may reduce performance.
本発明は記憶装置ごとに必要な命令を実行できるミラーリングシステムを提供することを目的としている。 An object of the present invention is to provide a mirroring system capable of executing necessary instructions for each storage device.
本発明は、ホスト装置と通信し、且つ、不揮発性の第1半導体記憶装置と不揮発性の第2半導体記憶装置と通信する制御装置であって、前記ホスト装置から受け付けた第1種類のコマンドおよび第2種類のコマンドを含む第1コマンド群を保持する保持手段と、前記第1半導体記憶装置と前記第2半導体記憶装置をミラー制御する制御手段と、を有し、前記制御手段は、前記第1半導体記憶装置からコマンド群の読み出し要求を受け付けると、前記第1コマンド群を前記第1半導体記憶装置に読み出させ、前記第2半導体記憶装置からコマンド群の読み出し要求を受け付けると前記第1コマンド群のうち前記第1種類のコマンドを前記第2半導体記憶装置に読み出させず、前記第2種類のコマンドを前記第2半導体記憶装置に読み出させることを特徴とする。 The present invention is a control device that communicates with a host device and communicates with a non-volatile first semiconductor storage device and a non-volatile second semiconductor storage device, and is a first type of command received from the host device. It has a holding means for holding a first command group including a second type of command, and a control means for mirror-controlling the first semiconductor storage device and the second semiconductor storage device, and the control means is the first. 1 When a read request for a command group is received from a semiconductor storage device, the first command group is read by the first semiconductor storage device, and when a read request for a command group is received from the second semiconductor storage device, the first command is read. It is characterized in that the first type of command in the group is not read by the second semiconductor storage device, and the second type of command is read by the second semiconductor storage device.
本発明によれば記憶装置ごとに必要な命令を実行できるミラーリングシステムを提供することが可能である。 According to the present invention, it is possible to provide a mirroring system capable of executing necessary instructions for each storage device.
添付図面を参照して本発明の各実施例を詳しく説明する。なお、以下の実施例は特許請求の範囲に係る発明を限定するものではなく、また各実施例で説明されている特徴の組み合わせのすべてが本発明の解決手段に必須のものとは限らない。本実施形態では、情報処理装置の一例として画像処理装置を用いて説明する。 Each embodiment 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. In this embodiment, an image processing device will be described as an example of the information processing device.
(実施例1)
図1は、本実施形態に関わる情報処理システム(ミラーリングシステム)の構成を示すブロック図である。
(Example 1)
FIG. 1 is a block diagram showing a configuration of an information processing system (mirroring system) according to the present embodiment.
情報処理システム1は、ホストコントローラ101と、ブリッジ装置(制御装置)102と、第1記憶装置103と第2記憶装置104を有する。
The
ホストコントローラ(以下、HCと称する)101は、ブリッジ装置102と接続されており、装置全体を制御するメインコントローラとして機能する。本実施例では、例えば、印刷機能やスキャン機能などの画像形成機能の制御を行うことが可能である。
The host controller (hereinafter referred to as HC) 101 is connected to the
ブリッジ装置102は、HC101と第1記憶装置103及び第2記憶装置104と接続されており、HC101から第1記憶装置103に記憶されるデータを二重化して、第2記憶装置104に記憶するミラーリングの機能を有する。
The
第1記憶装置103は、ブリッジ装置102と接続されており、SSD(半導体記憶装置)であり、HC101で扱うシステムソフトウェアやユーザデータ及びアプリケーションデータ等を格納する。さらに、後述するスキャナ207から読み取った画像データやネットワークを介して不図示の情報処理装置から受け付けた画像データ等を格納する。第2記憶装置104は、ブリッジ装置102と接続されており、SSDであり、第1記憶装置103のデータを二重化したバックアップデータを格納する。
The
<HC101のブロック構成の説明>
図2は、HC101の詳細ブロック図である。
<Explanation of block configuration of HC101>
FIG. 2 is a detailed block diagram of the HC101.
HC101は、CPU201と、PCIe-IF202とROM203と、RAM204を有し、PCIe-IF202を介してブリッジ装置102と接続される。
The
CPU201は、ROM203に記憶された制御プログラム等に基づいて接続される各種デバイスとのアクセスを制御するとともに、HC101で実行される各種処理についても制御する。
The
PCIe-IF202は、PCI-Express規格のインターフェイスであり、ブリッジ装置102をEndpointとして、ブリッジ装置102との送信/受信するデータの通信と行う。
The PCIe-IF202 is an interface of the PCI-Express standard, and the
スキャナI/F205は、スキャナ207と通信するためのインターフェイスである。プリンタI/F206は、プリンタ208と通信するためのインターフェイスである。なお、スキャナ207は、原稿から光学的に画像を読み取り画像データを生成する。プリンタ部208は、電子写真方式に従って記録媒体(用紙)に画像を形成する。
The scanner I / F 205 is an interface for communicating with the
ROM203は、不揮発性メモリであり、ブリッジ装置102のブートプログラムや制御プログラム等が格納される。
The
RAM204は、DRAM等のメモリであり、一時的にデータが格納され、ワークメモリとして働く。RAM204のメモリマップの一例を図5(A)に示す。RAM204のメモリ空間には、NVMeプロトコルで使用するSubmission Queue(SQと称する)501及びCompletion Queue(CQと称する)502が構成される。
The
SQ501は、RAM204上に生成されるリングバッファのキューであり、NVMeのコマンドを通信するためにCPU201で生成したNVMeコマンドが順々に格納される。SQ501に格納されるコマンドの先頭要素はHeadポインタ503、SQ501に格納されるコマンドの末尾要素はTailポインタ504で管理される。コマンドのフォーマットについては後述する。
The SQ501 is a queue of the ring buffer generated on the
CQ502は、RAM204上に生成されるリングバッファのキューであり、Endpointであるブリッジ装置102からのコマンド処理完了通知が順々に格納される。CQ502に格納される完了通知の先頭要素はHeadポインタ505、CQ502に格納される完了通知の末尾要素はTailポインタ506で管理される。
The CQ502 is a queue of the ring buffer generated on the
SQ501及びCQ502は、Headポインタ503及び505、Tailポインタ504及び506に各々挟まれたキューの位置にコマンドまたはコマンド処理完了通知が格納されている。HeadポインタとTailポインタが同じ位置にある場合、キューは空であることを示している。図5(A)の例では、斜線部にコマンドまたはコマンド処理完了通知が格納されていることを示している。
In SQ501 and CQ502, a command or a command processing completion notification is stored at the position of the queue sandwiched between the
これらのSQ及びCQに割り当てるメモリ空間は静的に定まっているものとする。システム起動時にCPU201は、SQ及びCQのメモリ空間を確保し、SQ及びCQのメモリ空間の情報をアドミン・コマンドによりブリッジ装置102と共有する。ただし、これに限定するものではない。
It is assumed that the memory space allocated to these SQs and CQs is statically determined. When the system is started, the
<ブリッジ装置102のブロック構成の説明>
図3は、ブリッジ装置102の詳細ブロック図である。
<Explanation of block configuration of
FIG. 3 is a detailed block diagram of the
ブリッジ装置102は、サブCPU301、PCIe-IF302、PCIe-IF303、PCIe-IF304、ROM305、メモリマップ変換手段309を有する。各モジュールは、AIC(AXI Interconnect)321で接続される。さらに、RAM306は、メモリマップ変換手段309を介して例えばAPB(AMBA Peripheral Bus)322で接続される。
The
ブリッジ装置102は、PCIe-IF302を介してHC101と接続され、PCIe-IF303及び304を介して第1記憶装置103及び第2記憶装置104に接続される。
The
サブCPU301は、ROM305に記憶された制御プログラム等に基づいて接続されるHC101と第1記憶装置103及び第2記憶装置104とのアクセスを制御する。さらにサブCPU301は、HC101から受信したコマンド群を元に各記憶装置用のコマンド群を生成する。
The
PCIe-IF302は、HC101をRootComplexとして、HC101との送信/受信するデータの通信を行う。PCIe-IF302は内部にSubmission Queue Tail Doorbell(SQTD)307と、Completion Queue Head Doorbell(CQHD)308のレジスタを備える。これらのレジスタは、HC101のSQ501のTailポインタ504の情報及びCQ502のHeadポインタ505の情報を格納するためのレジスタである。
The PCIe-IF302 uses the HC101 as a RootComplex and communicates data to be transmitted / received with the HC101. The PCIe-IF302 is internally provided with a Submission Queue Tail Doorbell (SQTD) 307 and a Completion Queue Head Doorbell (CQHD) 308 register. These registers are registers for storing the information of the
SQDT307は次のNVMeコマンドの位置を示す。例えば図5(A)のSQ501の先頭アドレスであるCurrent Tail503がSQDT307に格納されている場合、次のNVMeコマンドはSQ501の先頭から存在することを示す。
SQDT307 indicates the position of the next NVMe command. For example, when
そしてCPU201は図5(A)のようにNVMeコマンドを5つ格納した後にSQTD307へNew Tailポインタ504で書き換える。これにより、先頭からNew Tailポインタ504までの5つのNVMeコマンドが実行対象としてブリッジ装置102へ伝えられる。これをDoorbell通知と称する。
Then, the
CQHD308はCPU201がブリッジ装置102にNVMeコマンド実行結果を通知させるポインタを示す。例えば図5(A)の場合CPU102はCQHD308へHeadポインタ505の値を格納した状態でDoorbell通知を行う。
The
サブCPU301は、ROM305に記憶された制御プログラム等に基づいて接続されるHC101と第1記憶装置103及び第2記憶装置104とのアクセスを制御する。さらに、HC101から受信したNVMeコマンド群を元に各記憶装置用のNVMeコマンド群を生成する。
The
PCIe-IF302は、HC101をRootComplexとして、HC101との送受信するデータのやり取りを行う。 The PCIe-IF302 uses the HC101 as a RootComplex to exchange data to be transmitted and received to and from the HC101.
PCIe-IF303及びPCIe-IF304は、第1記憶装置103及び第2記憶装置104を各々Endpointとして、各々記憶装置との送受信するデータのやり取りを行う。
The PCIe-IF303 and the PCIe-IF304 use the
ROM305は、不揮発性メモリであり、ブリッジ装置102のブートプログラムや制御プログラム等が格納される。
The
RAM306は、DRAM等のメモリであり、一時的にデータが格納され、ワークメモリとして働く。
The
また、RAM306の使用例を図5(B)に示す。NVMeプロトコルで使用する一つのSQ507と二つのCQ508とCQ510がRAM306内に構成される。図5(B)はRAM306を第1記憶装置103のSSDコントローラ401からリード(コマンド群の通知要求)したときに見えるメモリマップである。
Further, an example of using the
SQ507は、RAM306上に生成されるリングバッファのキューであり、NVMeのコマンドをやり取りするためにブリッジ装置102で生成したNVMeコマンドを格納する。SQ507の先頭位置とサイズは、サブCPU301がSQ507の初期化時に発行するadmin commandによって第1記憶装置103と第2記憶装置104へ通知され共有される。
The SQ507 is a queue of the ring buffer generated on the
CQ508は、RAM306上に生成されるリングバッファのキューであり、Endpointである第1記憶装置103がNVMeコマンド実行結果を順々に格納する。CQ508の先頭位置とサイズは、サブCPU301がCQ508の初期化時に発行するadmin commandによって第1記憶装置103へ通知され共有される。
The CQ508 is a queue of the ring buffer generated on the
CQ510は、RAM306上に生成されるリングバッファのキューであり、Endpointである第2記憶装置104がNVMeコマンド実行結果通知を順々に格納する。CQ510の先頭位置とサイズは、サブCPU301がCQ510の初期化時に発行するadmin commandによって第2記憶装置104へ通知され共有される。
The
メモリマップ変換手段309は第2記憶装置104内のSSDコントローラ408がSQ507を参照する際に、SQ507内のリードコマンドの領域が仮想的に省かれたように見えるようにするメモリマップ変換手段である。
The memory map conversion means 309 is a memory map conversion means that makes it appear that the area of the read command in the SQ507 is virtually omitted when the
図5(C)はRAM306を第2記憶装置104のSSDコントローラ408からリード(コマンド群の通知要求)したときに見えるメモリマップである。SQ517はSQ507をSSDコントローラ408からリード(コマンド群の通知要求)したときだけ見える仮想的なメモリマップである。
FIG. 5C is a memory map that can be seen when the
図4は、第1記憶装置103及び第2記憶装置104の詳細ブロック図である。
FIG. 4 is a detailed block diagram of the
第1記憶装置103は、SSDコントローラ401と、PCIe-IF402と、DRAM403と、NAND FLASH404を有する。また、第1記憶装置103は、PCIe-IF402を介して、ブリッジ回路102に接続される。また、第2記憶装置も第1記憶装置と同等の構成である。
The
SSDコントローラ401は、第1記憶装置内で実行されるファームウェアを処理するプロセッサや、DRAM403を制御するDRAMコントローラや、NAND FLASH404を制御するNAND FLASHコントローラが搭載されている。
The
PCIe-IF402は、ブリッジ装置102をRootComplexとして、ブリッジ装置102との送受信するデータのやり取りを行う。SQTD405とCQHD406はサブCPU301からアクセス可能に構成されたレジスタであり、本例ではPCIe IF402内に構成される。
The PCIe-IF402 uses the
SQTD405はブリッジ装置102のサブCPU301が第1記憶装置103へDoorbell通知を行う際に使用される。CQHD406は第1記憶装置103のSSDコントローラ408がNVMeコマンドの実行結果を格納する際に参照される。
The
DRAM403は、キャッシュ用のメモリであり、NAND FLASH(登録商標)404に対してデータを書き込む前に、そのデータを一時的に保持する。
The
NAND FLASH404は、実際にデータを記録するデバイスであり、データの読み書きが行われる。
The
SSDコントローラ408は、第2記憶装置内で実行されるファームウェアを処理するプロセッサや、DRAM409を制御するDRAMコントローラや、NAND FLASH410を制御するNAND FLASHコントローラが搭載されている。
The
PCIe-IF407は、ブリッジ装置102をRootComplexとして、ブリッジ装置102との送受信するデータのやり取りを行う。SQTD411とCQHD412はサブCPU301からアクセス可能に構成されたレジスタであり、本例ではPCIe IF402内に構成される。
The PCIe-IF407 uses the
SQTD411はブリッジ装置102のサブCPU301が第2記憶装置104へDoorbell通知を行う際に使用される。CQHD412は第2記憶装置104のSSDコントローラ408がNVMeコマンドの実行結果を格納する際に参照される。
The
DRAM409は、キャッシュ用のメモリであり、NAND FLASH410に対してデータを書き込む前に、そのデータを一時的に保持する。
The
NAND FLASH410は、実際にデータを記録するデバイスであり、データの読み書きが行われる。
The
図6はメモリマップ変換手段309の機能を説明するためのブリッジ装置102の詳細図である。同図ではSQ507がリードされる動作(コマンド群の通知要求)を説明するのでROM305は省いている。
FIG. 6 is a detailed view of the
PCIe-IF304はSSDコントローラ408からコマンド群の通知要求を受けてAXIプロトコルのリードアドレスフェーズを開始する。
The PCIe-IF304 starts the read address phase of the AXI protocol in response to the notification request of the command group from the
ここでは例としてAXIマスタを特定するARIDとアドレスを示すARADDRの信号のみを示す。AICはPCIe-IF304からのARID、ARADDRをメモリマップ変換手段309へ出力する。 Here, as an example, only the ARADDR signal indicating the ARID and the address that identifies the AXI master is shown. The AIC outputs the ARID and ARADDR from the PCIe-IF304 to the memory map conversion means 309.
シーケンサが行う処理を図8のフローチャートに示す。ここでは、例として第2記憶装置104からSQ517へのコマンド群の通知要求に関するシーケンサとして説明する。
The processing performed by the sequencer is shown in the flowchart of FIG. Here, as an example, a sequencer relating to a notification request of a command group from the
なお、サブCPU301がSQ507へNVMeコマンドを格納する際のアクセス、SSDコントローラ401からSQ507のNVMeコマンドを読み出す際のアクセス等のアクセス時には、スイッチ604はARADDRをそのまま選択する。すなわちアドレスマップ変換手段は第2記憶装置104のSSDコントローラ408がSQ507へのコマンド群の通知要求したときのみ機能する。
The
従ってSSDコントローラ408からSQ507へのコマンド群の通知要求をシーケンサ601が検知したときの動作のみを図8のフローチャートで説明する。ARIDとARADDRを受信したシーケンサ601は、ARIDとARADDRからSSDコントローラ408によるSQ507へのコマンド群の通知要求であることを検出しスイッチ604をアダー603の出力側に倒す。
Therefore, only the operation when the
ステップS801において、スイッチ604はアダー603の出力をRAM306へAPBバスのアドレス信号addrとして出力し、シーケンサ601はAPBリードアクセス(あるコマンドの通知要求)を指示する。S802において、RAM306はaddrに格納されたデータをAPBバスのリードデータ信号rdata(AXIと区別のため小文字表記する)として返送する。
In step S801, the
S803においてシーケンサ601は返送されたrdataを受信しOpcode702(コードデータ)を検出する。
In S803, the
S804において、NVMeコマンドの種類を判定する。NVMeコマンドの種類がリードである場合には、S806に進み、オフセットレジスタ602をNVMeコマンドの一つのサイズ分だけ加算する。そしてS801に戻り、RAM306へAPBリードアクセス(次のコマンドの通知要求)を指示する。
In S804, the type of NVMe command is determined. If the type of NVMe command is read, the process proceeds to S806, and the offset
ここでOpcode702は図7のNVMeコマンドのフォーマット700に示すようにNVMeコマンド内の所定の位置に配置されている。図7に示すNVMeコマンド700は、Command Indentifer(以下、CIDと称する)701と、Opecode702(以下、OPCと称する)とPRP Entry703のフィールドを有する。CID701は、NVMeコマンドに付加されるユニークな番号である。
Here, the
OPC702は、NVMeコマンドの種類を示す識別子であり、WriteやReadなどの識別子である。RPR Entry703は、転送元のアドレス又は転送先のアドレスを示す情報が格納される。
OPC702 is an identifier indicating the type of NVMe command, and is an identifier such as Write or Read. The
図8の説明に戻る。ステップS805において、NVMeコマンドの種類がライトの場合リードデータをAIC321へ返してAXIリードを終了する。 Returning to the description of FIG. In step S805, when the type of NVMe command is write, the read data is returned to AIC321 and the AXI read is terminated.
図9をもとにメモリマップ変換手段の機能を説明する。ここでは、例としてSSDコントローラ408からSQ507をリード(コマンド群の通知要求)したとき仮想的にSQ517のように見える様子を説明する。 The function of the memory map conversion means will be described with reference to FIG. Here, as an example, when the SQ507 is read from the SSD controller 408 (notification request of the command group), the appearance of the SQ517 virtually will be described.
図9のS901からS905の各行は各ステップにおける信号またはレジスタの値を示す。ARDRはAIC321が出力するリードアドレスであるが簡単のためSQ507の先頭を0、NVMeコマンドのサイズを単位とした値を示す。また図9ではスイッチ604はアダー603の出力側に常に倒れる。
Each line from S901 to S905 in FIG. 9 shows the value of the signal or the register in each step. ARDR is a read address output by AIC321, but for simplicity, it indicates a value in which the beginning of SQ507 is 0 and the size of the NVMe command is a unit. Further, in FIG. 9, the
S901として第2記憶装置104のSSDコントローラ408はSQ507の先頭をリードする(ARADDR=0)。ここで後述のようにオフセットレジスタ値は0に初期化されているのでSQ507の先頭を実際にリードする(addr=0)。返されるデータはOpcode702を含み、addr=0のNVMeコマンドはライトなのでrdataは最初のライトコマンド(W0)の内容を返す。ライトの場合シーケンサ601はrdataをRDATAとしてAIC321へ返送しAXIのリード転送を終了する。
As S901, the
次にS902として第2記憶装置104のSSDコントローラ408はSQ507の次のNVMeコマンドをリードする(ARADDR=1)。ここでオフセットレジスタ値は0なのでSQ507の2番目のNVMeコマンドをリードする(addr=1+0=1)。
Next, as S902, the
2番目のNVMeコマンドはR0なのでrdataはR0の内容を返す。リードの場合シーケンサ601はオフセットレジスタ602の値を1へ加算し、S902としてRAM306へ通知要求を指示する。この際addr=1+1=2となるからRAM306はSQ507の3番目のNVMeコマンドをrdataとして返送する。3番目のNVMeコマンドはW1なのでrdataはW1の内容を返す。ライトの場合シーケンサ601はrdataをRDATAとしてAIC321へ返送しAXIのリード転送を終了する。
Since the second NVMe command is R0, rdata returns the contents of R0. In the case of reading, the
次にS904として第2記憶装置104のSSDコントローラ408はSQ507の次のNVMeコマンドをリードする(ARADDR=2)。ここでオフセットレジスタ値は1なのでSQ507の4番目のNVMeコマンドをリードする(addr=2+1=3)。4番目のNVMeコマンドはR1なのでrdataはR1の内容を返す。リードの場合シーケンサ601はオフセットレジスタ602の値を2へ加算する。
Next, as S904, the
S905としてRAM306へ通知要求を指示する。この際addr=2+2=4となるからRAM306はSQ507の5番目のNVMeコマンドをrdataとして返送する。5番目のNVMeコマンドはW2なのでrdataはW2の内容を返す。ライトの場合シーケンサ601はrdataをRDATAとしてAIC321へ返送しAXIのリード転送を終了する。
Instruct
S901からS904をまとめると第2記憶装置104のSSDコントローラ408はSQ507の先頭からNVMeコマンドを3個読み取り、W0,W1,W2に相当するNVMeコマンドが読めた。すなわち図5のSQ517に示すNVMeコマンドの並びが見えたことになる。
Summarizing S901 to S904, the
次に、実施形態のミラーリングシステムでの動作について説明する。図10はミラーリングシステムが動作する中でブリッジ装置102のサブCPU301が実行するフローを説明するフローチャート図である。
Next, the operation in the mirroring system of the embodiment will be described. FIG. 10 is a flowchart illustrating a flow executed by the
S1000において、HC101は、admin commandをブリッジ装置102へ対して発行することでSQ501、CQ502を初期化する。さらに、ブリッジ装置102のサブCPU301はadmin commandを受け、第1記憶装置103と第2記憶装置104の両方に対してadmin commandを発行することによりSQ501、CQ508、CQ510を初期化する。ここでSQ507は第1記憶装置103と第2記憶装置104の両方に対して共通のSQ領域として初期化する。CQ508は第1記憶装置103のためのNVMeコマンド実行結果通知領域、CQ510は第2記憶装置104のためのNVMeコマンド実行結果通知領域として初期化する。またサブCPU301はS1000としてオフセットレジスタ602を0に初期化する。
In S1000, HC101 initializes SQ501 and CQ502 by issuing an admin command to the
次にHC101は記憶装置に行わせたいNVMeコマンド群をSQ501へ格納する。そしてNVMeコマンドが格納されたことをブリッジ装置102に通知するために、ブリッジ装置102内のSQTD307にSQ205のNew Tailポイント504の値を書き込む。
Next, the HC101 stores the NVMe command group to be executed by the storage device in the SQ501. Then, in order to notify the
S1001において、サブCPU301はS1001でSQDT307の更新を待つ。サブCPU301がDoorbell通知を受けるとS1002へ遷移する。
In S1001, the
S1002において、RAM204のSQ501を読み出しRAM306のSQ507へ格納する。次にS1003でサブCPU301はSQTD405とSQTD411へライトする値を算出する。第1記憶装置103に対しては全NVMeコマンドを実行させるからSQ507の先頭に対し5個のNVMeコマンドのサイズを加算した値がNew Tail514となる。また、SQ507またはSQ517の先頭に対し3個のNVMeコマンドのサイズを加算した値がNew Tail522となる。
In S1002, the SQ501 of the
次にS1004でサブCPU301はSQTD405にNew Tail512の値で上書きしてDoorbell通知を行う。これにより第1記憶装置103のSSDコントローラ401はSQ507のNVMeコマンド群を処理開始する。
Next, in S1004, the
次にS1005でサブCPU301はSQTD411にNew Tail522の値で上書きしてDoorbell通知を行う。これにより第2記憶装置104のSSDコントローラ408はSQ517のNVMeコマンド群を処理開始する。
Next, in S1005, the
以降、サブCPU301は、S1006とS1007で第1記憶装置104と第2記憶装置104からのNVMeコマンド処理完了割込みを待機する。
After that, the
両記憶装置からPCIe-IFを介して完了割込みを受けたらRAM306内のCQ508とCQ510の所定領域を検査し、CQ308にNVMeコマンド実行結果を書き込む。
When a completion interrupt is received from both storage devices via the PCIe-IF, the predetermined areas of CQ508 and CQ510 in the
次にS1009でPCIe-IF302NVMeコマンド実行完了通知割込みを発行する。 Next, S1009 issues a PCIe-IF302NVMe command execution completion notification interrupt.
本実施例では、図1から10で示した方法により、HC101上のNVMeコマンド群を、ブリッジ装置102を介して、第1記憶装置103と第2記憶装置104で使用する新たなNVMeコマンド群として生成して各記憶装置に通知する。これにより、記憶装置毎に必要な命令を実行できるミラーリングシステムを可能としている。
In this embodiment, the NVMe command group on the
なお、本実施例でいうミラーリングとは、複数の記憶装置に同じデータを記憶させるミラー制御を示す。具体的には、メモリマップ変換手段309を実装することで、リードコマンドをミラーリングシステムの第1記憶装置103のみで行わせることを可能としている。
Note that the mirroring referred to in this embodiment indicates a mirror control in which the same data is stored in a plurality of storage devices. Specifically, by implementing the memory map conversion means 309, it is possible to make the read command performed only by the
また、本実施例において、コマンドの種類がリードである場合とライトである場合を示したが、これに限らない。例えば、複数の記憶装置で同じ処理をするコマンドを実施例中のライトと同様の処理をし、1つの記憶装置のみで処理すればよいコマンドを実施例中のリードと同様の処理をしてもよい。 Further, in this embodiment, the case where the command type is read and the case where the command type is write are shown, but the present invention is not limited to this. For example, a command that performs the same processing in a plurality of storage devices may be processed in the same manner as a write in the embodiment, and a command that may be processed in only one storage device may be processed in the same manner as the read in the embodiment. good.
(その他の実施形態)
以上、本発明の様々な例と実施形態を示して説明したが、本発明の趣旨と範囲は、本明細書内の特定の説明に限定されるものではない。
(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.
101 HC
103 第1記憶装置
104 第2記憶装置
301 サブCPU
306 RAM
306 メモリマップ変換手段
101 HC
103
306 RAM
306 Memory map conversion means
Claims (12)
前記ホスト装置から受け付けた第1種類のコマンドおよび第2種類のコマンドを含む第1コマンド群を保持する保持手段と、
前記第1半導体記憶装置と前記第2半導体記憶装置をミラー制御する制御手段と、を有し、
前記制御手段は、前記第1半導体記憶装置からコマンド群の読み出し要求を受け付けると、前記第1コマンド群を前記第1半導体記憶装置に読み出させ、前記第2半導体記憶装置からコマンド群の読み出し要求を受け付けると前記第1コマンド群のうち前記第1種類のコマンドを前記第2半導体記憶装置に読み出させず、前記第2種類のコマンドを前記第2半導体記憶装置に読み出させることを特徴とする制御装置。 A control device that communicates with the host device and communicates with the non-volatile first semiconductor storage device and the non-volatile second semiconductor storage device.
A holding means for holding a first type command group including a first type command and a second type command received from the host device, and a holding means.
It has a first semiconductor storage device and a control means for mirror-controlling the second semiconductor storage device.
When the control means receives a command group read request from the first semiconductor storage device, the control means causes the first semiconductor storage device to read the first command group, and the command group read request from the second semiconductor storage device. Is received, the first type of command in the first command group is not read by the second semiconductor storage device, and the second type of command is read by the second semiconductor storage device. Control device.
ことを特徴とする請求項1に記載の制御装置。 When the control means receives the notification request of the command group from the second semiconductor storage device, the control means notifies the second semiconductor storage device of the second type of command, and the first type of command is the second semiconductor storage. The control device according to claim 1, wherein the device is not notified.
ことを特徴とする請求項1または2に記載の制御装置。 The claim characterized in that, when the control means receives a notification request of a command group from the first semiconductor storage device, the second type of command and the first type of command are notified to the second semiconductor storage device. Item 2. The control device according to Item 1 or 2.
前記判定手段は、前記保持手段から前記第1コマンド群に含まれるコマンドを読み出し、前記読み出したコマンドに含まれるコードデータに基づいて、前記読み出したコマンドの種類を判定する
ことを特徴とする請求項1乃至3のいずれか1項に記載の制御装置。 Further, it has a determination means for determining the type of the command included in the first command group.
The claim means that the determination means reads a command included in the first command group from the holding means, and determines the type of the read command based on the code data included in the read command. The control device according to any one of 1 to 3.
前記第1半導体記憶装置および前記第2半導体記憶装置からコマンド群の読み出し要求を受け付けるステップと、
前記第1半導体記憶装置からコマンド群の読み出し要求を受け付けると、前記第1コマンド群を前記第1半導体記憶装置に読み出させ、前記第2半導体記憶装置からコマンド群の読み出し要求を受け付けると前記第1コマンド群のうち前記第1種類のコマンドを前記第2半導体記憶装置に読み出させず、前記第2種類のコマンドを前記第2半導体記憶装置に読み出させるステップと、を有することを特徴とする制御装置。 A first type of command including a first type command and a second type command received from the host device, communicating with the host device and communicating with the non-volatile first semiconductor storage device and the non-volatile second semiconductor storage device. It is a control method of a control device having a memory for holding a command group and having the first semiconductor storage device and the second semiconductor storage device mirror-controlled.
A step of receiving a command group read request from the first semiconductor storage device and the second semiconductor storage device, and
When the read request of the command group is received from the first semiconductor storage device, the first command group is read by the first semiconductor storage device, and when the read request of the command group is received from the second semiconductor storage device, the first command group is read. It is characterized by having a step of causing the second semiconductor storage device to read the second type of command without causing the second semiconductor storage device to read the first type of command in one command group. Control device to do.
A computer-readable storage medium containing the program according to claim 11.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020176782A JP2022067916A (en) | 2020-10-21 | 2020-10-21 | Controller and control method for controller |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020176782A JP2022067916A (en) | 2020-10-21 | 2020-10-21 | Controller and control method for controller |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022067916A true JP2022067916A (en) | 2022-05-09 |
Family
ID=81455906
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020176782A Pending JP2022067916A (en) | 2020-10-21 | 2020-10-21 | Controller and control method for controller |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2022067916A (en) |
-
2020
- 2020-10-21 JP JP2020176782A patent/JP2022067916A/en active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10909012B2 (en) | System having persistent memory | |
Marks | An nvm express tutorial | |
JP2008090375A (en) | Interrupt control system and storage control system using the same | |
TWI873352B (en) | Methods for processing copy commands and storage device | |
US11669268B2 (en) | Information processing apparatus and control method therefor | |
JP5448496B2 (en) | Information processing apparatus and control method thereof | |
CN113093989A (en) | Memory controller for managing completion time and operating method thereof | |
JP6843508B2 (en) | Information processing device and control method of information processing device | |
JP2022067916A (en) | Controller and control method for controller | |
CN112486410A (en) | Method, system, device and storage medium for reading and writing persistent memory file | |
CN118503181A (en) | Computing system with congestion monitor and method of controlling operation thereof | |
CN111917623A (en) | Information processing system and platform | |
JP2018106573A (en) | Storage control device and control program | |
US7042582B1 (en) | Printer and printer data processing method | |
US11687287B2 (en) | Control apparatus and information processing system | |
JP4148834B2 (en) | Data transfer apparatus, image forming apparatus, data transfer control method, computer program, and recording medium | |
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 | |
JP6825263B2 (en) | Storage controller and storage system | |
JP2022057869A (en) | Control device and information processing system | |
JP6992616B2 (en) | Data transfer device, data transfer method, program | |
JP7003752B2 (en) | Data transfer device, data transfer method, program | |
JP2022122677A (en) | Information processor and method for controlling information processor | |
JP7078380B2 (en) | Instruction control device, instruction control method and program | |
JP6428347B2 (en) | Transfer device and program | |
JP2021074974A (en) | Image formation device and control method for image formation device |