[go: up one dir, main page]

JP2022067916A - Controller and control method for controller - Google Patents

Controller and control method for controller Download PDF

Info

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
Application number
JP2020176782A
Other languages
Japanese (ja)
Inventor
実 神戸川
Minoru Kobegawa
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2020176782A priority Critical patent/JP2022067916A/en
Publication of JP2022067916A publication Critical patent/JP2022067916A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Hardware Redundancy (AREA)

Abstract

To provide a mirroring system capable of executing necessary instructions for each storage device without generating unnecessary read processing as a mirroring system, thus not causing performance degradation because application to a bridge device of one-input and two-outputs like the mirroring system causes execution of the same instructions for two storage devices.SOLUTION: In an information processing system, host controller control means, upon receiving a reading request of a command group from a first semiconductor storage device, makes the first semiconductor storage device read a first command group and upon receiving a reading request of a command group from a second semiconductor storage device, makes the second semiconductor storage device read commands of a second type without making the second semiconductor storage device read commands of a first type of the first command group.SELECTED DRAWING: Figure 8

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 Patent Document 1 receives a first instruction group from an application executed by a host computer on the first interface using an NVMe-Of (or NVMe) protocol. The bridge device then generates a second instruction group based on the first instruction group and transmits the second instruction group generated on the second interface using the second NVMe protocol.

特開2019-75104号公報Japanese Unexamined Patent Publication No. 2019-75104

特許文献1に記載のブリッジ装置は、ホストコンピュータからの命令群を受信して、受信内容から記憶装置に送信する命令群を生成することを行っている。 The bridge device described in Patent Document 1 receives an instruction group from a host computer and generates an instruction group to be transmitted to a storage device from the received contents.

しかし、このブリッジ装置の構成では受信した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.

情報処理装置のシステム構成を示すブロック図である。It is a block diagram which shows the system configuration of an information processing apparatus. 情報処理装置のHCの構成図である。It is a block diagram of HC of an information processing apparatus. 情報処理装置のブリッジ装置の構成図である。It is a block diagram of the bridge device of an information processing apparatus. 情報処理装置の記憶装置の構成図である。It is a block diagram of the storage device of an information processing apparatus. ブリッジ装置のメモリ詳細図である。It is a detailed memory diagram of a bridge device. メモリマップ変換手段を説明するためのブリッジ装置の構成図である。It is a block diagram of the bridge apparatus for demonstrating the memory map conversion means. コマンドのフォーマット図である。It is a format diagram of a command. メモリマップ変換手段のシーケンサのフローチャートである。It is a flowchart of the sequencer of the memory map conversion means. メモリマップ変換手段の機能を説明する表である。It is a table explaining the function of the memory map conversion means. ブリッジ装置のフローチャートである。It is a flowchart of a bridge 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 information processing system 1 includes a host controller 101, a bridge device (control device) 102, a first storage device 103, and a second storage device 104.

ホストコントローラ(以下、HCと称する)101は、ブリッジ装置102と接続されており、装置全体を制御するメインコントローラとして機能する。本実施例では、例えば、印刷機能やスキャン機能などの画像形成機能の制御を行うことが可能である。 The host controller (hereinafter referred to as HC) 101 is connected to the bridge device 102 and functions as a main controller that controls the entire device. In this embodiment, for example, it is possible to control an image forming function such as a printing function and a scanning function.

ブリッジ装置102は、HC101と第1記憶装置103及び第2記憶装置104と接続されており、HC101から第1記憶装置103に記憶されるデータを二重化して、第2記憶装置104に記憶するミラーリングの機能を有する。 The bridge device 102 is connected to the HC 101, the first storage device 103, and the second storage device 104, and mirroring in which the data stored in the first storage device 103 from the HC 101 is duplicated and stored in the second storage device 104. Has the function of.

第1記憶装置103は、ブリッジ装置102と接続されており、SSD(半導体記憶装置)であり、HC101で扱うシステムソフトウェアやユーザデータ及びアプリケーションデータ等を格納する。さらに、後述するスキャナ207から読み取った画像データやネットワークを介して不図示の情報処理装置から受け付けた画像データ等を格納する。第2記憶装置104は、ブリッジ装置102と接続されており、SSDであり、第1記憶装置103のデータを二重化したバックアップデータを格納する。 The first storage device 103 is connected to the bridge device 102 and is an SSD (semiconductor storage device), and stores system software, user data, application data, and the like handled by the HC 101. Further, the image data read from the scanner 207, which will be described later, and the image data received from the information processing apparatus (not shown) via the network are stored. The second storage device 104 is connected to the bridge device 102 and is an SSD, and stores backup data in which the data of the first storage device 103 is duplicated.

<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 HC 101 has a CPU 201, a PCIe-IF202, a ROM 203, and a RAM 204, and is connected to the bridge device 102 via the PCIe-IF202.

CPU201は、ROM203に記憶された制御プログラム等に基づいて接続される各種デバイスとのアクセスを制御するとともに、HC101で実行される各種処理についても制御する。 The CPU 201 controls access to various devices connected based on a control program or the like stored in the ROM 203, and also controls various processes executed by the HC 101.

PCIe-IF202は、PCI-Express規格のインターフェイスであり、ブリッジ装置102をEndpointとして、ブリッジ装置102との送信/受信するデータの通信と行う。 The PCIe-IF202 is an interface of the PCI-Express standard, and the bridge device 102 is used as an Endpoint to communicate data to be transmitted / received with the bridge device 102.

スキャナI/F205は、スキャナ207と通信するためのインターフェイスである。プリンタI/F206は、プリンタ208と通信するためのインターフェイスである。なお、スキャナ207は、原稿から光学的に画像を読み取り画像データを生成する。プリンタ部208は、電子写真方式に従って記録媒体(用紙)に画像を形成する。 The scanner I / F 205 is an interface for communicating with the scanner 207. The printer I / F 206 is an interface for communicating with the printer 208. The scanner 207 optically reads an image from the original and generates image data. The printer unit 208 forms an image on a recording medium (paper) according to an electrophotographic method.

ROM203は、不揮発性メモリであり、ブリッジ装置102のブートプログラムや制御プログラム等が格納される。 The ROM 203 is a non-volatile memory, and stores a boot program, a control program, and the like of the bridge device 102.

RAM204は、DRAM等のメモリであり、一時的にデータが格納され、ワークメモリとして働く。RAM204のメモリマップの一例を図5(A)に示す。RAM204のメモリ空間には、NVMeプロトコルで使用するSubmission Queue(SQと称する)501及びCompletion Queue(CQと称する)502が構成される。 The RAM 204 is a memory such as a DRAM, in which data is temporarily stored and works as a work memory. An example of the memory map of the RAM 204 is shown in FIG. 5 (A). In the memory space of the RAM 204, a Submission Queue (referred to as SQ) 501 and a Completion Queue (referred to as CQ) 502 used in the NVMe protocol are configured.

SQ501は、RAM204上に生成されるリングバッファのキューであり、NVMeのコマンドを通信するためにCPU201で生成したNVMeコマンドが順々に格納される。SQ501に格納されるコマンドの先頭要素はHeadポインタ503、SQ501に格納されるコマンドの末尾要素はTailポインタ504で管理される。コマンドのフォーマットについては後述する。 The SQ501 is a queue of the ring buffer generated on the RAM 204, and the NVMe commands generated by the CPU 201 in order to communicate the NVMe commands are sequentially stored. The first element of the command stored in SQ501 is managed by the Head pointer 503, and the last element of the command stored in SQ501 is managed by the Tail pointer 504. The command format will be described later.

CQ502は、RAM204上に生成されるリングバッファのキューであり、Endpointであるブリッジ装置102からのコマンド処理完了通知が順々に格納される。CQ502に格納される完了通知の先頭要素はHeadポインタ505、CQ502に格納される完了通知の末尾要素はTailポインタ506で管理される。 The CQ502 is a queue of the ring buffer generated on the RAM 204, and the command processing completion notification from the bridge device 102, which is an Endpoint, is sequentially stored. The first element of the completion notification stored in the CQ502 is managed by the Head pointer 505, and the last element of the completion notification stored in the CQ502 is managed by the Tail pointer 506.

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 Head pointers 503 and 505 and the Tail pointers 504 and 506, respectively. If the Head and Tail pointers are in the same position, it indicates that the queue is empty. In the example of FIG. 5A, it is shown that the command or the command processing completion notification is stored in the shaded area.

これらの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 CPU 201 secures the memory space of the SQ and the CQ, and shares the information of the memory space of the SQ and the CQ with the bridge device 102 by the admin command. However, the present invention is not limited to this.

<ブリッジ装置102のブロック構成の説明>
図3は、ブリッジ装置102の詳細ブロック図である。
<Explanation of block configuration of bridge device 102>
FIG. 3 is a detailed block diagram of the bridge device 102.

ブリッジ装置102は、サブCPU301、PCIe-IF302、PCIe-IF303、PCIe-IF304、ROM305、メモリマップ変換手段309を有する。各モジュールは、AIC(AXI Interconnect)321で接続される。さらに、RAM306は、メモリマップ変換手段309を介して例えばAPB(AMBA Peripheral Bus)322で接続される。 The bridge device 102 includes a sub CPU 301, a PCIe-IF302, a PCIe-IF303, a PCIe-IF304, a ROM 305, and a memory map conversion means 309. Each module is connected by an AIC (AXI Interconnect) 321. Further, the RAM 306 is connected via, for example, an APB (AMBA Peripheral Bus) 322 via the memory map conversion means 309.

ブリッジ装置102は、PCIe-IF302を介してHC101と接続され、PCIe-IF303及び304を介して第1記憶装置103及び第2記憶装置104に接続される。 The bridge device 102 is connected to the HC 101 via the PCIe-IF 302 and is connected to the first storage device 103 and the second storage device 104 via the PCIe-IF 303 and 304.

サブCPU301は、ROM305に記憶された制御プログラム等に基づいて接続されるHC101と第1記憶装置103及び第2記憶装置104とのアクセスを制御する。さらにサブCPU301は、HC101から受信したコマンド群を元に各記憶装置用のコマンド群を生成する。 The sub CPU 301 controls access between the HC 101 and the first storage device 103 and the second storage device 104, which are connected based on the control program or the like stored in the ROM 305. Further, the sub CPU 301 generates a command group for each storage device based on the command group received from the HC 101.

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 Tail pointer 504 of the SQ501 of the HC101 and the information of the Head pointer 505 of the CQ502.

SQDT307は次のNVMeコマンドの位置を示す。例えば図5(A)のSQ501の先頭アドレスであるCurrent Tail503がSQDT307に格納されている場合、次のNVMeコマンドはSQ501の先頭から存在することを示す。 SQDT307 indicates the position of the next NVMe command. For example, when Current Tail 503, which is the start address of SQ501 in FIG. 5A, is stored in SQDT307, the next NVMe command indicates that it exists from the beginning of SQ501.

そしてCPU201は図5(A)のようにNVMeコマンドを5つ格納した後にSQTD307へNew Tailポインタ504で書き換える。これにより、先頭からNew Tailポインタ504までの5つのNVMeコマンドが実行対象としてブリッジ装置102へ伝えられる。これをDoorbell通知と称する。 Then, the CPU 201 stores five NVMe commands as shown in FIG. 5A, and then rewrites the SQTD 307 with the New Tail pointer 504. As a result, the five NVMe commands from the beginning to the New Tail pointer 504 are transmitted to the bridge device 102 as execution targets. This is called a Doorbell notification.

CQHD308はCPU201がブリッジ装置102にNVMeコマンド実行結果を通知させるポインタを示す。例えば図5(A)の場合CPU102はCQHD308へHeadポインタ505の値を格納した状態でDoorbell通知を行う。 The CQHD 308 indicates a pointer to which the CPU 201 notifies the bridge device 102 of the NVMe command execution result. For example, in the case of FIG. 5A, the CPU 102 performs a Doorbell notification in the CQHD 308 with the value of the Head pointer 505 stored in the CQHD 308.

サブCPU301は、ROM305に記憶された制御プログラム等に基づいて接続されるHC101と第1記憶装置103及び第2記憶装置104とのアクセスを制御する。さらに、HC101から受信したNVMeコマンド群を元に各記憶装置用のNVMeコマンド群を生成する。 The sub CPU 301 controls access between the HC 101 and the first storage device 103 and the second storage device 104, which are connected based on the control program or the like stored in the ROM 305. Further, an NVMe command group for each storage device is generated based on the NVMe command group received from the HC101.

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 first storage device 103 and the second storage device 104 as Endpoints, respectively, and exchange data with and from the storage device.

ROM305は、不揮発性メモリであり、ブリッジ装置102のブートプログラムや制御プログラム等が格納される。 The ROM 305 is a non-volatile memory, and stores a boot program, a control program, and the like of the bridge device 102.

RAM306は、DRAM等のメモリであり、一時的にデータが格納され、ワークメモリとして働く。 The RAM 306 is a memory such as a DRAM, in which data is temporarily stored and works as a work memory.

また、RAM306の使用例を図5(B)に示す。NVMeプロトコルで使用する一つのSQ507と二つのCQ508とCQ510がRAM306内に構成される。図5(B)はRAM306を第1記憶装置103のSSDコントローラ401からリード(コマンド群の通知要求)したときに見えるメモリマップである。 Further, an example of using the RAM 306 is shown in FIG. 5 (B). One SQ507 and two CQ508s and CQ510s used in the NVMe protocol are configured in RAM 306. FIG. 5B is a memory map that can be seen when the RAM 306 is read (notification request of a command group) from the SSD controller 401 of the first storage device 103.

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 RAM 306, and stores the NVMe command generated by the bridge device 102 for exchanging NVMe commands. The head position and size of the SQ507 are notified and shared to the first storage device 103 and the second storage device 104 by the admin command issued by the sub CPU 301 at the time of initializing the SQ507.

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 RAM 306, and the first storage device 103, which is an Endpoint, sequentially stores the NVMe command execution results. The head position and size of the CQ508 are notified to the first storage device 103 by the admin command issued by the sub CPU 301 at the time of initialization of the CQ508 and shared.

CQ510は、RAM306上に生成されるリングバッファのキューであり、Endpointである第2記憶装置104がNVMeコマンド実行結果通知を順々に格納する。CQ510の先頭位置とサイズは、サブCPU301がCQ510の初期化時に発行するadmin commandによって第2記憶装置104へ通知され共有される。 The CQ 510 is a queue of a ring buffer generated on the RAM 306, and the second storage device 104, which is an Endpoint, sequentially stores NVMe command execution result notifications. The head position and size of the CQ 510 are notified and shared to the second storage device 104 by the admin command issued by the sub CPU 301 at the time of initializing the CQ 510.

メモリマップ変換手段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 SSD controller 408 in the second storage device 104 refers to the SQ507. ..

図5(C)はRAM306を第2記憶装置104のSSDコントローラ408からリード(コマンド群の通知要求)したときに見えるメモリマップである。SQ517はSQ507をSSDコントローラ408からリード(コマンド群の通知要求)したときだけ見える仮想的なメモリマップである。 FIG. 5C is a memory map that can be seen when the RAM 306 is read from the SSD controller 408 of the second storage device 104 (notification request of the command group). SQ517 is a virtual memory map that can be seen only when SQ507 is read from SSD controller 408 (notification request of command group).

図4は、第1記憶装置103及び第2記憶装置104の詳細ブロック図である。 FIG. 4 is a detailed block diagram of the first storage device 103 and the second storage device 104.

第1記憶装置103は、SSDコントローラ401と、PCIe-IF402と、DRAM403と、NAND FLASH404を有する。また、第1記憶装置103は、PCIe-IF402を介して、ブリッジ回路102に接続される。また、第2記憶装置も第1記憶装置と同等の構成である。 The first storage device 103 includes an SSD controller 401, a PCIe-IF402, a DRAM 403, and a NAND FLASH 404. Further, the first storage device 103 is connected to the bridge circuit 102 via the PCIe-IF402. Further, the second storage device also has the same configuration as the first storage device.

SSDコントローラ401は、第1記憶装置内で実行されるファームウェアを処理するプロセッサや、DRAM403を制御するDRAMコントローラや、NAND FLASH404を制御するNAND FLASHコントローラが搭載されている。 The SSD controller 401 is equipped with a processor that processes firmware executed in the first storage device, a DRAM controller that controls DRAM 403, and a NAND FLASH controller that controls NAND FLASH 404.

PCIe-IF402は、ブリッジ装置102をRootComplexとして、ブリッジ装置102との送受信するデータのやり取りを行う。SQTD405とCQHD406はサブCPU301からアクセス可能に構成されたレジスタであり、本例ではPCIe IF402内に構成される。 The PCIe-IF402 uses the bridge device 102 as a RootComplex to exchange data to be transmitted and received to and from the bridge device 102. The SQTD 405 and CQHD 406 are registers configured to be accessible from the sub CPU 301, and are configured in the PCIe IF 402 in this example.

SQTD405はブリッジ装置102のサブCPU301が第1記憶装置103へDoorbell通知を行う際に使用される。CQHD406は第1記憶装置103のSSDコントローラ408がNVMeコマンドの実行結果を格納する際に参照される。 The SQTD 405 is used when the sub CPU 301 of the bridge device 102 notifies the first storage device 103 of the Doorbell. The CQHD 406 is referred to when the SSD controller 408 of the first storage device 103 stores the execution result of the NVMe command.

DRAM403は、キャッシュ用のメモリであり、NAND FLASH(登録商標)404に対してデータを書き込む前に、そのデータを一時的に保持する。 The DRAM 403 is a memory for caching, and temporarily holds the data before writing the data to the NAND FLASH (registered trademark) 404.

NAND FLASH404は、実際にデータを記録するデバイスであり、データの読み書きが行われる。 The NAND FLASH 404 is a device that actually records data, and data is read and written.

SSDコントローラ408は、第2記憶装置内で実行されるファームウェアを処理するプロセッサや、DRAM409を制御するDRAMコントローラや、NAND FLASH410を制御するNAND FLASHコントローラが搭載されている。 The SSD controller 408 is equipped with a processor that processes firmware executed in the second storage device, a DRAM controller that controls DRAM 409, and a NAND FLASH controller that controls NAND FLASH 410.

PCIe-IF407は、ブリッジ装置102をRootComplexとして、ブリッジ装置102との送受信するデータのやり取りを行う。SQTD411とCQHD412はサブCPU301からアクセス可能に構成されたレジスタであり、本例ではPCIe IF402内に構成される。 The PCIe-IF407 uses the bridge device 102 as a RootComplex to exchange data to be transmitted and received to and from the bridge device 102. The SQTD411 and the CQHD412 are registers configured to be accessible from the sub CPU 301, and in this example, they are configured in the PCIe IF 402.

SQTD411はブリッジ装置102のサブCPU301が第2記憶装置104へDoorbell通知を行う際に使用される。CQHD412は第2記憶装置104のSSDコントローラ408がNVMeコマンドの実行結果を格納する際に参照される。 The SQTD 411 is used when the sub CPU 301 of the bridge device 102 notifies the second storage device 104 of the Doorbell. The CQHD412 is referred to when the SSD controller 408 of the second storage device 104 stores the execution result of the NVMe command.

DRAM409は、キャッシュ用のメモリであり、NAND FLASH410に対してデータを書き込む前に、そのデータを一時的に保持する。 The DRAM 409 is a memory for caching, and temporarily holds the data before writing the data to the NAND FLASH 410.

NAND FLASH410は、実際にデータを記録するデバイスであり、データの読み書きが行われる。 The NAND FLASH 410 is a device that actually records data, and data is read and written.

図6はメモリマップ変換手段309の機能を説明するためのブリッジ装置102の詳細図である。同図ではSQ507がリードされる動作(コマンド群の通知要求)を説明するのでROM305は省いている。 FIG. 6 is a detailed view of the bridge device 102 for explaining the function of the memory map conversion means 309. Since the operation in which the SQ507 is read (command group notification request) is described in the figure, the ROM 305 is omitted.

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 SSD controller 408.

ここでは例として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 second storage device 104 to the SQ517 will be described.

なお、サブCPU301がSQ507へNVMeコマンドを格納する際のアクセス、SSDコントローラ401からSQ507のNVMeコマンドを読み出す際のアクセス等のアクセス時には、スイッチ604はARADDRをそのまま選択する。すなわちアドレスマップ変換手段は第2記憶装置104のSSDコントローラ408がSQ507へのコマンド群の通知要求したときのみ機能する。 The switch 604 selects ARADDR as it is at the time of access such as when the sub CPU 301 stores the NVMe command in the SQ507 and when the sub CPU 301 reads the NVMe command of the SQ507 from the SSD controller 401. That is, the address map conversion means functions only when the SSD controller 408 of the second storage device 104 requests the notification of the command group to the SQ507.

従ってSSDコントローラ408からSQ507へのコマンド群の通知要求をシーケンサ601が検知したときの動作のみを図8のフローチャートで説明する。ARIDとARADDRを受信したシーケンサ601は、ARIDとARADDRからSSDコントローラ408によるSQ507へのコマンド群の通知要求であることを検出しスイッチ604をアダー603の出力側に倒す。 Therefore, only the operation when the sequencer 601 detects the notification request of the command group from the SSD controller 408 to the SQ507 will be described with the flowchart of FIG. The sequencer 601 that has received the ARID and ARADDR detects that the command group is a notification request from the ARID and ARADDR to the SQ507 by the SSD controller 408, and pushes the switch 604 to the output side of the adder 603.

ステップS801において、スイッチ604はアダー603の出力をRAM306へAPBバスのアドレス信号addrとして出力し、シーケンサ601はAPBリードアクセス(あるコマンドの通知要求)を指示する。S802において、RAM306はaddrに格納されたデータをAPBバスのリードデータ信号rdata(AXIと区別のため小文字表記する)として返送する。 In step S801, the switch 604 outputs the output of the adder 603 to the RAM 306 as the address signal addr of the APB bus, and the sequencer 601 instructs the APB read access (notification request of a certain command). In S802, the RAM 306 returns the data stored in the addr as the read data signal rdata of the APB bus (indicated in lowercase to distinguish it from AXI).

S803においてシーケンサ601は返送されたrdataを受信しOpcode702(コードデータ)を検出する。 In S803, the sequencer 601 receives the returned rdata and detects the Opcode 702 (code data).

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 register 602 is added by the size of one NVMe command. Then, it returns to S801 and instructs RAM306 of APB read access (notification request of the next command).

ここでOpcode702は図7のNVMeコマンドのフォーマット700に示すようにNVMeコマンド内の所定の位置に配置されている。図7に示すNVMeコマンド700は、Command Indentifer(以下、CIDと称する)701と、Opecode702(以下、OPCと称する)とPRP Entry703のフィールドを有する。CID701は、NVMeコマンドに付加されるユニークな番号である。 Here, the Opcode 702 is arranged at a predetermined position in the NVMe command as shown in the format 700 of the NVMe command in FIG. The NVMe command 700 shown in FIG. 7 has fields for Command Indicator (hereinafter referred to as CID) 701, Opcode 702 (hereinafter referred to as OPC), and PRP Entry 703. CID701 is a unique number added to the NVMe command.

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 RPR Entry 703 stores information indicating a transfer source address or a transfer destination address.

図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 switch 604 always falls to the output side of the adder 603.

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 SSD controller 408 of the second storage device 104 leads the head of the SQ507 (ARADDR = 0). Here, since the offset register value is initialized to 0 as described later, the head of SQ507 is actually read (addr = 0). The returned data includes Opcode702, and since the NVMe command with addr = 0 is a write, rdata returns the contents of the first write command (W0). In the case of write, the sequencer 601 returns rdata as RDATA to AIC321 and ends the read transfer of AXI.

次にS902として第2記憶装置104のSSDコントローラ408はSQ507の次のNVMeコマンドをリードする(ARADDR=1)。ここでオフセットレジスタ値は0なのでSQ507の2番目のNVMeコマンドをリードする(addr=1+0=1)。 Next, as S902, the SSD controller 408 of the second storage device 104 reads the next NVMe command of SQ507 (ARADDR = 1). Since the offset register value is 0 here, the second NVMe command of SQ507 is read (addr = 1 + 0 = 1).

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 sequencer 601 adds the value of the offset register 602 to 1, and instructs the RAM 306 as S902 for a notification request. At this time, since addr = 1 + 1 = 2, RAM 306 returns the third NVMe command of SQ507 as rdata. Since the third NVMe command is W1, rdata returns the contents of W1. In the case of write, the sequencer 601 returns rdata as RDATA to AIC321 and ends the read transfer of AXI.

次に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 SSD controller 408 of the second storage device 104 reads the next NVMe command of SQ507 (ARADDR = 2). Since the offset register value is 1, the fourth NVMe command of SQ507 is read (addr = 2 + 1 = 3). Since the fourth NVMe command is R1, rdata returns the contents of R1. In the case of read, the sequencer 601 adds the value of the offset register 602 to 2.

S905としてRAM306へ通知要求を指示する。この際addr=2+2=4となるからRAM306はSQ507の5番目のNVMeコマンドをrdataとして返送する。5番目のNVMeコマンドはW2なのでrdataはW2の内容を返す。ライトの場合シーケンサ601はrdataをRDATAとしてAIC321へ返送しAXIのリード転送を終了する。 Instruct RAM 306 to request notification as S905. At this time, since addr = 2 + 2 = 4, the RAM 306 returns the fifth NVMe command of SQ507 as rdata. Since the fifth NVMe command is W2, rdata returns the contents of W2. In the case of write, the sequencer 601 returns rdata as RDATA to AIC321 and ends the read transfer of AXI.

S901からS904をまとめると第2記憶装置104のSSDコントローラ408はSQ507の先頭からNVMeコマンドを3個読み取り、W0,W1,W2に相当するNVMeコマンドが読めた。すなわち図5のSQ517に示すNVMeコマンドの並びが見えたことになる。 Summarizing S901 to S904, the SSD controller 408 of the second storage device 104 read three NVMe commands from the beginning of SQ507, and could read NVMe commands corresponding to W0, W1, and W2. That is, the sequence of NVMe commands shown in SQ517 of FIG. 5 can be seen.

次に、実施形態のミラーリングシステムでの動作について説明する。図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 sub CPU 301 of the bridge device 102 while the mirroring system is operating.

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 bridge device 102. Further, the sub CPU 301 of the bridge device 102 receives an admin command and issues an admin command to both the first storage device 103 and the second storage device 104 to initialize the SQ501, CQ508, and CQ510. Here, the SQ507 is initialized as a common SQ area for both the first storage device 103 and the second storage device 104. CQ508 is initialized as an NVMe command execution result notification area for the first storage device 103, and CQ510 is initialized as an NVMe command execution result notification area for the second storage device 104. Further, the sub CPU 301 initializes the offset register 602 to 0 as S1000.

次に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 bridge device 102 that the NVMe command has been stored, the value of the New Tail point 504 of the SQ 205 is written in the SQTD 307 in the bridge device 102.

S1001において、サブCPU301はS1001でSQDT307の更新を待つ。サブCPU301がDoorbell通知を受けるとS1002へ遷移する。 In S1001, the sub CPU 301 waits for the update of SQDT307 in S1001. When the sub CPU 301 receives the Doorbell notification, it transitions to S1002.

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 RAM 204 is read out and stored in the SQ507 of the RAM 306. Next, in S1003, the sub CPU 301 calculates a value to be written to SQTD405 and SQTD411. Since all NVMe commands are executed for the first storage device 103, the value obtained by adding the sizes of five NVMe commands to the beginning of SQ507 is the New Tail 514. Further, the value obtained by adding the sizes of three NVMe commands to the beginning of SQ507 or SQ517 is the New Tail 522.

次にS1004でサブCPU301はSQTD405にNew Tail512の値で上書きしてDoorbell通知を行う。これにより第1記憶装置103のSSDコントローラ401はSQ507のNVMeコマンド群を処理開始する。 Next, in S1004, the sub CPU 301 overwrites the SQTD 405 with the value of New Tail 512 to perform the Doorbell notification. As a result, the SSD controller 401 of the first storage device 103 starts processing the NVMe command group of the SQ507.

次にS1005でサブCPU301はSQTD411にNew Tail522の値で上書きしてDoorbell通知を行う。これにより第2記憶装置104のSSDコントローラ408はSQ517のNVMeコマンド群を処理開始する。 Next, in S1005, the sub CPU 301 overwrites the SQTD411 with the value of New Tail 522 and performs a Doorbell notification. As a result, the SSD controller 408 of the second storage device 104 starts processing the NVMe command group of the SQ517.

以降、サブCPU301は、S1006とS1007で第1記憶装置104と第2記憶装置104からのNVMeコマンド処理完了割込みを待機する。 After that, the sub CPU 301 waits for an NVMe command processing completion interrupt from the first storage device 104 and the second storage device 104 in S1006 and S1007.

両記憶装置から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 RAM 306 are inspected, and the NVMe command execution result is written in the CQ 308.

次に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 HC 101 is used as a new NVMe command group used in the first storage device 103 and the second storage device 104 via the bridge device 102 by the method shown in FIGS. 1 to 10. Generate and notify each storage device. This enables a mirroring system that can execute necessary instructions for each storage device.

なお、本実施例でいうミラーリングとは、複数の記憶装置に同じデータを記憶させるミラー制御を示す。具体的には、メモリマップ変換手段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 first storage device 103 of the mirroring system.

また、本実施例において、コマンドの種類がリードである場合とライトである場合を示したが、これに限らない。例えば、複数の記憶装置で同じ処理をするコマンドを実施例中のライトと同様の処理をし、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 1st storage device 104 2nd storage device 301 Sub CPU
306 RAM
306 Memory map conversion means

Claims (12)

ホスト装置と通信し、且つ、不揮発性の第1半導体記憶装置と不揮発性の第2半導体記憶装置と通信する制御装置であって、
前記ホスト装置から受け付けた第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.
前記制御手段は、前記第2半導体記憶装置からコマンド群の通知要求を受け付けると、前記第2種類のコマンドを前記第2半導体記憶装置に通知し、前記第1種類のコマンドを前記第2半導体記憶装置に通知しない
ことを特徴とする請求項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種類のコマンド及び前記第1種類のコマンドを前記第2半導体記憶装置に通知する
ことを特徴とする請求項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コマンド群に含まれるコマンドを読み出し、前記読み出したコマンドに含まれるコードデータに基づいて、前記読み出したコマンドの種類を判定する
ことを特徴とする請求項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乃至4のいずれか1項に記載の制御装置。 One of claims 1 to 4, wherein the control means notifies the first semiconductor storage device and the second semiconductor storage device of a command stored in a queue held by the holding means. The control device described in. 前記保持手段に保持されたキューに格納されたコマンドを前記第2半導体記憶装置に通知する際に、前記第1種類のコマンドが格納されたキューを除いて通知を行うことを特徴とする請求項5に記載の制御装置。 The claim is characterized in that when a command stored in a queue held in the holding means is notified to the second semiconductor storage device, the notification is performed except for the queue in which the first type of command is stored. 5. The control device according to 5. 前記第1種類のコマンドは、半導体記憶装置からデータを読み出すリードコマンドであることを特徴とする請求項1乃至6のいずれか1項に記載の制御装置。 The control device according to any one of claims 1 to 6, wherein the first type of command is a read command for reading data from a semiconductor storage device. 前記第2種類のコマンドは、半導体記憶装置にデータを書きこむライトコマンドであることを特徴とする請求項1乃至7のいずれか1項に記載の制御装置。 The control device according to any one of claims 1 to 7, wherein the second type of command is a write command for writing data to a semiconductor storage device. 前記第1半導体記憶装置および前記第2半導体記憶装置は、NVMeに対応するSSDであることを特徴とする請求項1乃至8のいずれか1項に記載の制御装置。 The control device according to any one of claims 1 to 8, wherein the first semiconductor storage device and the second semiconductor storage device are SSDs corresponding to NVMe. ホスト装置と通信し、且つ、不揮発性の第1半導体記憶装置と不揮発性の第2半導体記憶装置と通信し、前記ホスト装置から受け付けた第1種類のコマンドおよび第2種類のコマンドを含む第1コマンド群を保持するメモリを有し、前記第1半導体記憶装置と前記第2半導体記憶装置がミラー制御された制御装置の制御方法であって、
前記第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.
請求項10に記載の制御方法を、コンピュータに実行させるためのプログラム。 A program for causing a computer to execute the control method according to claim 10. 請求項11に記載のプログラムを格納したコンピュータで読み取り可能な記憶媒体。
A computer-readable storage medium containing the program according to claim 11.
JP2020176782A 2020-10-21 2020-10-21 Controller and control method for controller Pending JP2022067916A (en)

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)

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