[go: up one dir, main page]

JP2022057869A - 制御装置及び情報処理システム - Google Patents

制御装置及び情報処理システム Download PDF

Info

Publication number
JP2022057869A
JP2022057869A JP2020166330A JP2020166330A JP2022057869A JP 2022057869 A JP2022057869 A JP 2022057869A JP 2020166330 A JP2020166330 A JP 2020166330A JP 2020166330 A JP2020166330 A JP 2020166330A JP 2022057869 A JP2022057869 A JP 2022057869A
Authority
JP
Japan
Prior art keywords
storage device
control
holding
storage
command
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
JP2020166330A
Other languages
English (en)
Inventor
和幸 横田
Kazuyuki Yokota
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 JP2020166330A priority Critical patent/JP2022057869A/ja
Publication of JP2022057869A publication Critical patent/JP2022057869A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Hardware Redundancy (AREA)

Abstract

【課題】1度の処理で複数のコマンドの処理を纏めて行う制御装置において、リビルド処理の処理速度の向上と中断アクションへの対応との両立を図った制御装置及び情報処理システムを提供する。【解決手段】制御手段は、所定の条件を満たすことによって、第1保持手段に保持させる複数の読み出し要求の数及び第2保持手段に保持させる複数の書き込み要求の数を、第1の数から記第1の数よりも多い第2の数にする。【選択図】図12

Description

本発明は、制御装置および情報処理システムに関する。
近年、パソコンなどの情報処理装置では、不揮発性メモリを利用したソリッドステートドライブ(SSD)がハードディスクドライブ(HDD)に取って代わってきており、より高速なデータ転送が可能となってきている。一方で、これら記憶装置に用いられるインターフェイスであるSerial ATA(SATA)は、転送時のデータ・エンコーディングに要する物理的なオーバヘッドが大きくレイテンシが大きいため、SSD本来の転送パフォーマンスを発揮できていなかった。
そこで、さらに近年では汎用バスのPCI-Express(PCIe)に直接接続でき、SSDの高速性を活かす新たなプロトコルであるNon-Volatile Memory Express(NVMe)プロトコルに対応したSSDが登場し始めている。
また、HDDやSSDなどの記憶装置の故障に対するデータ保護の仕組みとして、2つの記憶装置を用いてデータを二重化して保存するミラーリング技術が存在する。ミラーリングはブリッジ装置を用いて、ホストからのデータを同時に2つの記憶装置に記録するため、データや記憶装置自体が破損しても他方からのデータコピーで復旧が可能である(以降、この復旧処理をリビルド処理と称する)。ここで、情報処理システムにおいて、接続されている片方の記憶装置が故障する場合がある。この場合、故障した記憶装置を新しい記憶装置に置き換えて、正常な記憶装置から新しい記憶装置にデータのコピーを実行する。記憶装置全体をリビルド処理で修復している最中に、正常な記憶装置も故障してしまうと、正常なデータを読み取ることが出来なくなってしまう。
このような事態を避けるために、正常な記憶装置の全領域のデータを新しい記憶装置にコピーする全領域リビルドの処理は一刻も早く完了させる必要がある。そのために、ホストから記憶装置へのアクセスであるメイン処理と全領域リビルドの処理の優先付けを行う制御が必要となってくる。
特許文献1は、HDDコントローラ(ブリッジ装置)を用いた情報処理システムにおいて、PCから要求される記憶装置へのメイン処理の効率が、リビルド処理によって劣化しないように制御する方法について記載されている。特許文献1に記載のブリッジ装置はメイン処理が要求されないまま一定時間が経過すると、リビルド処理を開始する。このときリビルド処理では、コマンド1単位ごとにリビルド処理を実行する。リビルド処理の実行中にメイン処理が要求されると、コマンド1単位の処理が終了することで、リビルド処理を中断してメイン処理を実行する。一方、メイン処理が要求されないままリビルド処理が一定数継続された場合、リビルドの処理におけるコマンド1単位当たりのデータ処理量を大きくするといった細かな制御を実施することで、リビルド処理を高速化することが出来る。
特開2014-089757号公報
NVMeのような1度の処理で複数コマンドを扱うようなプロトコルでリビルド処理を行う場合には、1度の処理で複数のコマンドの処理を纏めて実行し、それを繰り返すことでリビルド処理を行う。そのため、リビルド処理において1度に処理する複数のコマンドのコマンド数が多いほど、繰り返す回数が減りリビルド処理が早く終わる。しかし、初めから1度に処理する複数のコマンドのコマンド数を多くすると、1度の処理を完了した際にリビルド処理を中断するアクションが発生しても、1度の処理の完了に時間がかかり、リビルド処理を中断するまで時間がかかった。
本発明は、1度の処理で複数のコマンドの処理を纏めて行う制御装置において、リビルド処理の処理速度の向上と中断アクションへの対応との両立を図った情報処理システムを提供することを目的としている。
本発明は、不揮発性の第1記憶手段および不揮発性の第2記憶手段と通信する制御装置であって、複数の読み出し要求を保持する第1保持手段と、前記複数の読み出し要求に対応する複数の書き込み要求を保持する第2保持手段と、前記第1保持手段に保持した複数の読み出し要求を前記第1記憶手段に送信する第1送信手段と、前記複数の読み出し要求に対応するデータを前記第1記憶手段から受信する第1受信手段と、前記第2保持手段に保持した複数の書き込み要求を前記第2記憶手段に送信し、前記複数の読み出し要求に対応するデータを前記第2記憶手段に送信する第2送信手段と、前記第1記憶手段に記憶された全てのデータを前記第2記憶手段に記憶させるまで、前記第1保持手段に前記複数の読み出し要求を保持させ且つ前記第2保持手段に前記複数の書き込み要求を保持させる制御を繰り返す制御手段と、を有し、前記制御手段は、所定の条件を満たすことによって、前記第1保持手段に保持させる前記複数の読み出し要求の数及び前記第2保持手段に保持させる前記複数の書き込み要求の数を、第1の数から前記第1の数よりも多い第2の数にすることを特徴とする。
本発明によって、1度の処理で複数のコマンドの処理を纏めて行う制御装置において、リビルド処理の処理速度の向上と中断アクションへの対応との両立を図った情報処理システムを提供することが可能である。
情報処理装置のシステム構成を示すブロック図である。 情報処理装置のホストコントローラの構成図である。 情報処理装置のブリッジ装置の構成図である。 情報処理装置の記憶装置の構成図である。 ホストコントローラ及びブリッジ装置のメモリマップの模式図である。 ブリッジ装置がホストコントローラからコマンド群を引き出す流れを示したフローチャートである。 コマンドのフォーマット図である。 ブリッジ装置が記憶装置への通知から、記憶装置からの完了通知をホストコントローラに通知する流れを示したフローチャートである。 リビルド管理テーブルである。 ブリッジ装置で実行されるリビルド処理の流れを示したフローチャートである。 リビルド制御テーブルである。 メイン処理とリビルド処理の制御を示したフローチャートである。
添付図面を参照して本発明の各実施例を詳しく説明する。なお、以下の実施例は特許請求の範囲に係る発明を限定するものではなく、また各実施例で説明されている特徴の組み合わせのすべてが本発明の解決手段に必須のものとは限らない。本実施形態では、情報処理装置の一例として画像処理装置を用いて説明する。
(実施例)
図1は、本実施形態に関わる情報処理システム(ミラーリングシステム)の構成を示すブロック図である。
情報処理システム1は、ホストコントローラ101と、ブリッジ装置(制御装置)102と、第1記憶装置103と第2記憶装置104を有する。
ホストコントローラ(以下、HCと称する)101は、ブリッジ装置102と接続されており、装置全体を制御するメインコントローラとして機能する。本実施例では、例えば、印刷機能やスキャン機能などの画像形成機能の制御を行うことが可能である。
ブリッジ装置102は、HC101と第1記憶装置103及び第2記憶装置104と接続されており、HC101から第1記憶装置103に記憶されるデータを二重化して、第2記憶装置104に記憶するミラーリングの機能を有する。
第1記憶装置103は、ブリッジ装置102と接続されており、SSDであり、HC101で扱うシステムソフトウェアやユーザデータ及びアプリケーションデータ等を格納する。さらに、後述するスキャナ207から読み取った画像データやネットワークを介して不図示の情報処理装置から受け付けた画像データ等を格納する。第2記憶装置104は、ブリッジ装置102と接続されており、SSDであり、第1記憶装置103のデータを二重化したバックアップデータを格納する。
<HC101のブロック構成の説明>
図2は、HC101の詳細ブロック図である。
HC101は、CPU201と、PCIe-IF202とROM203と、RAM204を有し、PCIe-IF202を介してブリッジ装置102と接続される。
CPU201は、ROM203に記憶された制御プログラム等に基づいて接続される各種デバイスとのアクセスを制御するとともに、HC101で実行される各種処理についても制御する。
PCIe-IF202は、PCI-Express規格のインターフェイスであり、ブリッジ装置102をEndpointとして、ブリッジ装置102との送信/受信するデータの通信と行う。
スキャナI/F205は、スキャナ207と通信するためのインターフェイスである。プリンタI/F206は、プリンタ208と通信するためのインターフェイスである。なお、スキャナ207は、原稿から光学的に画像を読み取り画像データを生成する。プリンタ部208は、電子写真方式に従って記録媒体(用紙)に画像を形成する。
ROM203は、不揮発性メモリであり、ブリッジ装置102のブートプログラムや制御プログラム等が格納される。
RAM204は、DRAM等のメモリであり、一時的にデータが格納され、ワークメモリとして働く。RAM204のメモリマップの一例を図5(A)に示す。RAM204のメモリ空間には、NVMeプロトコルで使用するSubmission Queue(SQと称する)501及びCompletion Queue(CQと称する)502が構成される。
SQ501は、RAM204上に生成されるリングバッファのキューであり、NVMeのコマンドを通信するためにCPU201で生成したNVMeコマンドが順々に格納される。SQ501に格納されるコマンドの先頭要素はHeadポインタ507(503)、SQ501に格納されるコマンドの末尾要素はTailポインタ508(504)で管理される。コマンドのフォーマットについては後述する。
CQ502は、RAM204上に生成されるリングバッファのキューであり、Endpointであるブリッジ装置102からのコマンド処理完了通知が順々に格納される。CQ502に格納される完了通知の先頭要素はHeadポインタ509(505)、CQ502に格納される完了通知の末尾要素はTailポインタ510(506)で管理される。
SQ501及びCQ502は、Headポインタ507及び509、Tailポインタ508及び510に各々挟まれたキューの位置にコマンドまたはコマンド処理完了通知が格納されている。HeadポインタとTailポインタが同じ位置にある場合、キューは空であることを示している。図5(A)の例では、斜線部にコマンドまたはコマンド処理完了通知が格納されていることを示している。
これらのSQ及びCQに割り当てるメモリ空間は静的に定まっているものとする。システム起動時にCPU201は、SQ及びCQのメモリ空間を確保し、SQ及びCQのメモリ空間の情報をアドミン・コマンドによりブリッジ装置102と共有する。ただし、これに限定するものではない。
<ブリッジ装置102のブロック構成の説明>
図3は、ブリッジ装置102の詳細ブロック図である。
ブリッジ装置102は、サブCPU301、PCIe-IF302、PCIe-IF303、PCIe-IF304、ROM305及びRAM306を有する。また、ブリッジ装置102は、PCIe-IF302を介してHC101と接続され、PCIe-IF303及び304を介して第1記憶装置103及び第2記憶装置104に接続される。
サブCPU301は、ROM305に記憶された制御プログラム等に基づいて接続されるHC101と第1記憶装置103及び第2記憶装置104とのアクセスを制御する。さらにサブCPU301は、HC101から受信したコマンド群を元に各記憶装置用のコマンド群を生成する。
PCIe-IF302は、HC101をRootComplexとして、HC101との送信/受信するデータの通信を行う。PCIe-IF302は内部にSubmission Queue Tail Doorbell(SQテイルドアベル)307と、Completion Queue Head Doorbell(CQヘッドドアベル)308のレジスタを備える。これらのレジスタは、HC101のSQ501のTailポインタ504の情報及びCQ502のHeadポインタ505の情報を格納するためのレジスタである。
PCIe-IF303及びPCIe-IF304は、第1記憶装置103及び第2記憶装置104を各々Endpointとして、各々記憶装置との送信/受信するデータの通信を行う。
ROM305は、不揮発性メモリであり、ブリッジ装置102のブートプログラムや制御プログラム等が格納される。
RAM306は、DRAM等のメモリであり、一時的にデータが格納され、ワークメモリとして働く。RAM306のメモリマップの一例を図5(B)に示す。RAM306のメモリ空間には、NVMeプロトコルで使用するSQとCQが2組ずつ構成される(SQ511、SQ513、CQ512、CQ514)。SQ511とCQ512は、第1記憶装置103に対するNVMe転送用に用いられる。SQ513とCQ514は、第2記憶装置104に対するNVMe転送用に用いられる。
SQ511は、RAM306上に生成されるリングバッファのキューであり、NVMeのコマンドを通信するために、サブCPU301によりSQ501のコマンドの内容に基づいてコマンドを順々に格納される。SQ511に格納されるコマンドの先頭要素はHeadポインタ523(515)、SQ511に格納されるコマンドの末尾要素はTailポインタ524(516)で管理される。
CQ512は、RAM306上に生成されるリングバッファのキューであり、Endpointである第1記憶装置103からのコマンド処理完了通知が順々に格納される。CQ512に格納される完了通知の先頭要素はHeadポインタ525(517)、CQ512に格納される完了通知の末尾要素はTailポインタ526(518)で管理される。
SQ513のHeadポインタ527(519)、SQ513のTailポインタ528(520)、CQ514のHeadポインタ529(521)及びCQ514のTailポインタ530(522)は、第2記憶装置に対するNVMe転送の用途である。その点を除いて、第1記憶装置103用のキューとポインタと同様の役割を持つため説明を省略する。
図5(B)の例では、斜線部にコマンドまたはコマンド処理完了通知が格納されていることを示している。
これらのSQ及びCQに割り当てるメモリ空間は静的に定まっているものとする。システム起動時にサブCPU301はSQ及びCQのメモリ空間を確保し、SQ及びCQのメモリ空間の情報をアドミン・コマンドにより第1記憶装置103及び第2記憶装置104と共有する。ただし、これに限定するものではない。
<第1記憶装置103及び第2記憶装置104のブロック構成の説明>
図4は、第1記憶装置103及び第2記憶装置104の詳細ブロック図である。ここでは例として第1記憶装置103の構成について説明する。
第1記憶装置103は、SSDコントローラ401と、PCIe-IF402と、DRAM403と、NAND FLASH(登録商標)404を有する。また、第1記憶装置103は、PCIe-IF402を介して、ブリッジ装置102に接続される。
SSDコントローラ401は、記憶装置内で実行されるファームウェアを処理するプロセッサや、DRAM403を制御するDRAMコントローラ、NAND FLASH404を制御するNAND FLASHコントローラが搭載されている。
PCIe-IF402は、ブリッジ装置102をRootComplexとして、ブリッジ装置102との送信/受信するデータの通信を行う。PCIe-IF402は内部にSQテイルドアベル405とCQヘッドドアベル406のレジスタを備える。これらのレジスタは、ブリッジ装置102のSQ511のTailポインタ516の情報及びCQ512のHeadポインタ517の情報を格納するためのレジスタである。
DRAM403は、キャッシュ用のメモリであり、NAND FLASH404に対してデータを書き込む前に、そのデータを一時的に保持する。
NAND FLASH404は、実際にデータを記録するデバイスであり、データの読み書きが行われる。ここで言うデータとは、例えばシステムソフトウェアプログラム、履歴データ、画像データ、テーブルなどである。
第2記憶装置104は、第1記憶装置103と同等の構成であるため、第2記憶装置104の構成要件である407~412の説明を省略する。
<NVMeコマンドのフォーマットの説明>
ここで、NVMeコマンドのフォーマットの説明をする。
図7に示すNVMeコマンド700は、Command Indentifer(以下、CIDと称する)701と、Opcode702(以下、OPCと称する)とPRP Entry703のフィールドを有する。
CID701は、コマンドに付加されるユニークな番号である。OPCODE702は、コマンドの種類を示す識別子であり、WriteやReadなどの識別子である。RPR Entry703は、転送元のアドレス又は転送先のアドレスを示す情報が格納される。
以下、実施形態の情報処理システムでのコマンドの授受について説明する。
<HC101のNVMe転送に関する概要処理動作の説明>
CPU201は、第1記憶装置103に対してNVMeプロトコルによるIOアクセスを行うために、NVMeコマンドを生成する。CPU201はNVMeコマンドを生成すると、RAM204上のSQ501に生成したコマンドを順々に格納する。
CPU201は、NVMeコマンドを格納する度にSQ501のTailポインタ508を更新することで、SQ501内に格納されているNVMeコマンドのTAILポインタ504を更新する。Tailポインタ508が更新されると、CPU201は新たにNVMeコマンドが格納されたことをブリッジ装置102に通知するために、ブリッジ装置102のSQテイルドアベル307にSQ501のTailポインタ508の値を書き込む。これにより、ブリッジ装置102のサブCPU301は、SQ501に格納されたNVMeコマンドを実行するための動作を開始する。ブリッジ装置102の動作について後述する。
CPU201は、ブリッジ装置102がコマンド実行をすべて完了したことを示す完了割り込みを受けると、CQ502に格納されているコマンド実行結果を参照して、正しくコマンドが実行されたかを知ることが出来る。以上のようなフローにより、記憶装置へのライト/リードの制御が行われる。
<ブリッジ装置102のNVMeコマンド授受に関する処理フローの説明>
サブCPU301がブリッジ装置102内のSQ511及びSQ513にNVMeコマンドを格納する処理を図6のフォローチャートを用いて詳細に説明する。
本実施例では、サブCPU301で2つのスレッドを同時に実行する実装構成として説明を行う。1つ目のスレッドは、図6のフローチャートの処理を担う。2つ目のスレッドは、図8のフローチャートの処理を担う。ただし、この実装に限定されるものではない。
S601において、サブCPU301はSQテイルドアベル307の値の更新により、HC101のSQ501に新たなNVMeコマンドが格納されたかどうかを確認する。上述したように、SQテイルドアベル307の値に更新があると、サブCPU301へ割り込み通知されるものとする。SQテイルドアベル307の値が更新されていればS602に進み、更新がなければS601にとどまる。ここで言う新たなNVMeコマンドとは、例えば、リードコマンドまたはライトコマンドである。HC101のSQ501に格納されるリードコマンドは、例えば、プリンタ208を用いて印刷する際に、記憶装置に記憶した画像データを読み出すための要求である。また、HC101のSQ501に格納されるライトコマンドは、例えば、スキャナ207で生成した画像データを記憶装置に記憶するための要求である。
S602において、サブCPU301はHC101上に準備されたNVMeコマンドをSQ501からリードして1コマンドずつ引き出す。サブCPU301は、SQ501のHeadポインタの指すメモリ空間からコマンドをリードする。SQ501のHeadポインタの初期値は、上述したようにシステム起動時にHC101から通知されており、一連のNVMe転送が完了すると、HeadポインタはTailポインタの値に更新される仕組みにより管理されるものである。
S603において、サブCPU301は引き出したコマンドを第1記憶装置103用のキューであるSQ511に書き込む。これはメモリコピーの処理である。サブCPU301は、SQ511のTailポインタの指すメモリ空間にコマンドを書き込む。SQ511のTailポインタの初期値はSQ511のHeadポインタの値となっている。コマンドを1つ書き込むことにより、Tailポインタの値をインクリメントされていくものである。同時にCQ512のTailポインタの値も合わせてインクリメントされる。
S604において、サブCPU301は引き出したコマンドを第2記憶装置104用のキューであるSQ513に書き込む。これはメモリコピーの処理である。サブCPU301は、SQ513のTailポインタの指すメモリ空間にコマンドを書き込む。SQ513のTailポインタの初期値はSQ513のHeadポインタの値となっている。コマンドを1つ書き込むことにより、Tailポインタの値をインクリメントされていくものである。同時にCQ514のTailポインタの値も合わせてインクリメントされる。
また、サブCPU301はSQ513に書き込むコマンドをコマンド種により選定しても構わない。具体的には、コマンドのOPCを確認してリードコマンドであれば第2記憶装置104用のSQ513に該当コマンドを書き込まず、第2記憶装置104では実行しないといった制御が可能である。
S605において、サブCPU301はHC101上のSQ501に準備されたNVMeコマンドをすべて引き出し切ったかを判断する。コマンドを引き出した際に参照したSQ501のポインタとSQテイルドアベル307の値を確認し、同一値であればSQ501に格納された最終コマンドを引き出したと判断できる。すべてのコマンドを引き出した場合はS606へ進み、まだコマンドが残っている場合S602に戻り、再度コマンドの引き出しを行う。
S606において、サブCPU301は、SQ511及びSQ513のTailポインタ524及び528の更新を通知する。これはサブCPU301で動作している別のスレッドに通知を行うものである。最も簡単な仕組みとしては、所定の変数によりスレッド間の同期をとる方法である。ただし、これに限定するものではない。
<ブリッジ装置102のNVMeコマンドの応答処理に関する処理フローの説明>
ブリッジ装置102のSQ511及びSQ513にNVMeコマンドが格納された後の処理フローについて図8を用いて説明する。
S801において、サブCPU301はTailポインタの更新の通知があったかを判定する。通知制御に関しては、S606に上述した通りである。サブCPU301が更新の通知を検知した場合、S802へ遷移する。
S802において、サブCPU301は第1記憶装置103が処理すべきNVMeコマンドがあるかを判定する。この判定方法の一例について説明する。サブCPU301は、SQ511のHeadポインタ523とTailポインタ524の差を確認し、ポインタ間での値に差があれば新たなNVMeコマンドを格納されたと判定を行う。新たなNVMeコマンドが格納されていればS803に進み、新たなNVMeコマンドが格納されていなければS804に進む。ただし、この方法に限定されるものではない。
S803において、サブCPU301はSQ511に新たなNVMeコマンドが格納されたことを第1記憶装置103に通知する。これは、サブCPU301がSQ511のTailポインタ524の値を第1記憶装置103のSQテイルドアベル405に書き込むDoorbell通知により実現される。Doorbell通知によって、第1記憶装置103のSSDコントローラ401主体でのNVMeコマンド引き出しが行われる。そして、引き出されたコマンドの内容に則って処理が行われる。第1記憶装置103で行う全コマンドの処理が完了すると、ブリッジ装置102に完了割り込みによって通知を行う。
S804において、サブCPU301は第2記憶装置が処理すべきNVMeコマンドがあるかを判定する。この判定方法の一例について説明する。サブCPU301は、SQ513のHeadポインタ527とTailポインタ528の差を確認し、ポインタ間での値に差があれば新たなNVMeコマンドを格納されたと判定を行う。新たなNVMeコマンドが格納されていればS805に進み、新たなNVMeコマンドが格納されていなければS806に進む。ただし、この方法に限定されるものではない。
S805において、サブCPU301はSQ513に新たなNVMeコマンドが格納されたことを第2記憶装置104に通知する。これは、サブCPU301がSQ513のTailポインタ528の値を第2記憶装置104のSQテイルドアベルに411書き込むDoorbell通知により実現される。Doorbell通知によって、第2記憶装置104のSSDコントローラ407主体でのNVMeコマンド引き出しが行われる。そして、引き出されたコマンドの内容に則って処理が行われる。そして、第2記憶装置104で行う全コマンドの処理が完了すると、ブリッジ装置102に完了割り込みによって通知を行う。
S806において、サブCPU301は第1記憶装置103に処理要求を行ったNVMeコマンドがあるかを判定する。本判定はS802と同じ方法によって判定可能であり、S802と同じ判定結果となる。S802のステップと重複しているが、必要に応じて第1記憶装置の処理完了を待つステップを組むために、ここに組み込んでいる。第1記憶装置103に処理要求を行ったコマンドがあれば、S807へ進む。そうでなければ、S808へ遷移する。
S807において、サブCPU301は第1記憶装置103からの完了割り込みが発行されているかどうかを確認する。完了割り込みが発行されていればS808に進む。完了割り込みが発行されていなければS807にとどまり、第1記憶装置103からの完了割り込みを待つ。
S808において、サブCPU301は第2記憶装置104に処理要求を行ったNVMeコマンドがあるかを判定する。本判定はS804と同じ方法によって判定可能であり、S804と同じ判定結果となる。S804のステップと重複しているが、必要に応じて第2記憶装置の処理完了を待つステップを組むために、ここに組み込んでいる。第2記憶装置104に処理要求を行ったコマンドがあれば、S809へ進む。そうでなければ、S810へ遷移する。
S809において、サブCPU301は第2記憶装置104からの完了割り込みが発行されているかどうかを確認する。完了割り込みが発行されていればS810に進む。完了割り込みが発行されていなければS809にとどまり、第2記憶装置104からの完了割り込みを待つ。
S810において、サブCPU301はCQ512およびCQ514に格納された各記憶装置からのコマンド処理完了通知に基づいて、HC101のCQ502にコマンド処理完了通知を格納する。この処理の一例について説明する。サブCPU301は、CQ512およびCQ514に格納されたコマンド処理完了通知を参照し、両記憶装置ともにコマンド処理が正常に終了している場合は、第1記憶装置のコマンド処理完了通知をHC101のCQ502に格納する。一方で、CQ512もしくはCQ514に格納されたコマンド処理通知から、コマンド処理が異常終了していると判断した場合は、異常終了しているコマンド処理完了通知をHC101のCQ502に格納する。この動作をコマンド処理完了通知単位で行う。ただし、この方法に限定されるものではない。
S811において、サブCPU301はコマンド処理が完了したことをHC101へ通知する。この通知により、サブCPU301がCQ502への全てのコマンド処理完了通知の書き込みが完了したことをHC101に対して保証する。サブCPU301はコマンド処理完了割り込みを使用して通知を行うものである。
S812において、サブCPU301はNVMeコマンド処理の終了処理を行う。終了処理として行うのは、次回のNVMe転送のための各種ポインタの値の更新である。更新は、ブリッジ装置102、第1記憶装置103及び第2記憶装置の各Headポインタ(523、525、527、529、406、412)の値を各々のTailポインタの値に書き換えることである。
以上、説明したようにブリッジ装置102を介して接続される各記憶装置に対して、NVMeプロトコルで情報処理システムを構築することが出来る。以降、ここまでで説明したHC101でNVMeコマンドを生成して、ブリッジ装置102を介して各記憶装置にNVMeコマンドを伝達するフローを本実施形態の“メイン処理”とする。
以下、実施形態の情報処理システムでのリビルド処理について説明する。
まず、図9を用いてリビルド管理テーブルの説明をする。リビルド管理テーブル900は、リビルド実行状態を管理するテーブルであり、リビルド領域のスタートアドレス、エンドアドレス、カレントアドレス、実行コマンド数Nを備えている。
リビルド処理は、サブCPU301が新たに記憶装置の接続を検知したことをトリガーとして実施される処理である。第1記憶装置103の全領域または指定した領域のみのデータを第2記憶装置104へコピーを行う。サブCPU301は第1記憶装置103へリードコマンドを複数個発行し、読み出したデータに基づいて第2記憶装置104へライトコマンドをリードコマンドと同数発行する。リビルド処理を実施してデータをコピーする領域のスタートアドレスとエンドアドレス、カレントアドレス、実行コマンド数Nについては図9に示すリビルド管理テーブル900で管理されているものとする。
図9に示された例では、スタートアドレスとなるLBA(Logical Block Address)値は0x0000であり、エンドアドレスとなるLBA値は0xA000である。カレントアドレスとなるLBA値は0x0008となっており、現在リビルドを実行しているアドレスを示している。また、カレントアドレスはスタートアドレスからエンドアドレスの間の領域内のアドレスを取り得る。実行コマンド数Nは5であり、リビルド処理を実行する際に生成するリードコマンドとライトコマンドのコマンド数が5個であることを示している。実行コマンド数Nが大きな値になるほど、一度のリビルド処理でリード又はライトするデータ量が増加することとなる。なお、実行コマンド数Nの値は、サブCPU301により、後述する第1リビルドコマンド数1103または第2リビルドコマンド数1104の値が設定される。システム起動時には、第1リビルドコマンド数1103の値が設定される。
<ブリッジ装置102のリビルド処理のNVMeコマンドの処理フローの説明>
サブCPU301がブリッジ装置102のSQ511及びSQ513にNVMeコマンドを格納して行うリビルド処理について、図10を用いて説明する。ここでは、第1記憶装置103からデータを読み出して、第2記憶装置にデータを書き込むリビルド処理を例に説明する。
S1001において、サブCPU301はリビルド処理を行うためのリードコマンドを生成し、第1記憶装置103用のキューであるSQ511に書き込む。リビルド処理は、メイン処理のバックグラウンドで行う必要があり、メイン処理が行われていない時に実行される。メイン処理が行われていないことの確認方法の一例として、サブCPU301はSQテイルドアベル307の確認を行い、HC101上に新しい準備されているコマンド群がないことを確認する方法である。
この時の初回リードコマンドのLBAは、リビルド管理テーブル900のスタートアドレスのLBAに設定される(カレントアドレスもスタートアドレスとLBAである)。また、リードコマンドは、リビルド管理テーブル900の実行コマンド数Nに格納された数値の個数分生成され、生成された各リードコマンドのLBAはカレントアドレスのLBAが設定される。このとき、カレントアドレスは1コマンドで処理するセクタ分ずつ順次インクリメントされる。例えば、1コマンドのリードで10セクタ分のデータ処理を行う場合、カレントアドレスのLBAの値は10セクタ分ずつインクリメントされる。
また、LBAの値のインクリメントはリビルド管理テーブル900のエンドアドレスのLBAの値まで実行され、エンドアドレスのLBAまで実行されるとリビルド領域指定した領域すべてのリビルド処理が完了したこととなる。また、リビルド処理時にデータの格納先となるバッファ領域を示すDataポインタには、リビルドバッファ531の先頭アドレスが設定される。
S1002において、サブCPU301はリビルド処理を行うためのS1001のリードコマンドに対応するライトコマンドを生成し、第2記憶装置104用のキューであるSQ513に書き込む。この時設定するLBA(カレントアドレス)、コマンドの個数、Dataポインタは、S1001で設定した値が使用される。
S1003において、S803と同様のフローで、ブリッジ装置102内のSQ511に新たなNVMeコマンドが格納されたことを第1記憶装置103に通知する。これにより、第1記憶装置103のSSDコントローラ401は、S1001で準備されたリードコマンドの引き出しを行う。そして、引き出されたコマンドの内容に伴い、SSDコントローラ401は、NAND FLASH404上のデータを受け付けてリビルドバッファ531に格納する。SSDコントローラ401がリードコマンド処理を完了することによってブリッジ装置102は、SSDコントローラ401からリードコマンド処理を完了した旨を示す完了割り込みを受け付ける。
S1004において、S807と同様のフローで、第1記憶装置103からの完了割り込みが発行されているかどうかを確認する。完了割り込みが発行されていなければS1004にとどまり、第1記憶装置103からの完了割り込みを待つ。
S1005において、S805と同様のフローで、ブリッジ装置102内のSQ513に新たなNVMeコマンドが格納されたことを第2記憶装置104に通知する。これにより、第2記憶装置104のSSDコントローラ407は、S1002で準備されたライトコマンドの引き出しを行う。そして、引き出されたコマンドの内容に伴い、SSDコントローラ407は、リビルドバッファ531のデータをNAND FLASH404に転送する。SSDコントローラ407がライトコマンド処理を完了することによってブリッジ装置102は、SSDコントローラ407からライトコマンド処理を完了した旨を示す完了割り込みを受け付ける。
S1006において、S809と同様のフローで、第2記憶装置104からの完了割り込みを受け付けているかどうかを確認する。完了割り込みを受け付けていなければS1006にとどまり、第2記憶装置104からの完了割り込みを待つ。
S1007において、サブCPU301はNVMeコマンド処理の終了処理を行う。終了処理として行うのは、次回のNVMe転送のための各種ポインタの値の更新である。更新は、ブリッジ装置102、第1記憶装置103及び第2記憶装置の各Headポインタ(523、525、527、529、406、412)の値を各々のTailポインタの値に書き換えることである。
以上、説明したようにブリッジ装置を介して接続される記憶装置に対して、NVMeプロトコルで情報処理システムにおけるリビルド処理の説明をした。このブリッジ装置102による各記憶装置にNVMeコマンドを伝達してリビルドを行うフローを本実施形態の“リビルド処理”とする。
<ブリッジ装置102のメイン処理とリビルド処理の処理順序制御フローの説明>
本実施形態における、サブCPU301がブリッジ装置102でのメイン処理とリビルド処理の切り替え制御を実施する際のSQ511及びSQ513にNVMeコマンドを格納する方法について、図11及び図12を用いて説明する。
本制御方法は、“リビルド処理”が“メイン処理”を阻害しないように制御する情報処理システムを提供するための制御方法である。本制御方法は、メイン処理を優先的に実行し、メイン処理がしばらく実行されていない場合にはリビルド処理を行うといった制御である。また、リビルド処理がメイン処理を挟まずに所定回数連続実行されると、リビルド用に生成されるコマンド数を増やし、リビルド処理をより高速に行うように制御される。
リビルド処理に切り替える閾値時間である閾値1102は、図9に示すリビルド制御テーブル1100で管理されていて、メイン処理実行後の経過時間を計測するハードタイマー(不図示)の値の比較対象となる。ハードタイマーは、ハードウェアクロックの値を数える機構を持ち、サブCPU301は時間を計時する際にはこの数値を基に実時間に変換する。また、サブCPU301は初期化時にこのカウント数を0に再設定する。コマンド数切り替え閾値1102は、同様にリビルド制御テーブル1100で管理されていて、リビルド処理が連続実行された回数を示すカウンタ1105と比較し、第1リビルドコマンド数1103と第2リビルドコマンド数1104を切り替える。カウンタ1105の値は、RAM306に保管され、リビルド処理が実行されるごとにサブCPU301によりインクリメントされ、値をリセットする際には0に戻される。
(“メイン処理”と“リビルド処理”切り替え判定)
S1201において、サブCPU301はSQテイルドアベル307の値に更新があるかを確認し、ホスト処理が要求されているか否かを判断する。SQテイルドアベル307の値が更新されていれば、ホスト処理の要求が来ていることを示すため、ホスト処理要求を実行するためにS1202に進み、更新がなければリビルド処理に移行するためにS1205に進む。
(“メイン処理”実行フロー)
S1202において、サブCPU301はカウンタ1105を初期値0に戻す。カウンタ1105は、ホスト処理を挟まずに実行されたリビルド処理の継続回数を示している。
S1203では、サブCPU301は“メイン処理”を実行する。具体的には、図8に示した“メイン処理”のフローで述べたHC101で準備されたNVMeコマンドを引き出す処理に始まり、各記憶装置から受けたコマンド処理完了通知をHC101に返答する処理を実行する。
S1204において、サブCPU301はハードタイマーの値を初期値0に戻しタイマカウント開始する。ハードタイマーは最後に実行されたメイン処理から経過した時間を示している。
ここまでで、メイン処理が1回終了し、再度メイン処理かリビルド処理を実行するかを判断するためにS1201に進む。
(“リビルド処理”実行フロー)
S1205において、サブCPU301は“リビルド処理”を実行する必要があるかを判断し、必要であればS1206に進み、必要なければ本フローチャートを終了する。判断の一例として、リビルド管理テーブル900のカレントアドレスがエンドアドレスに到達しているかを確認し、到達していればリビルド指定している全領域に対してリビルド処理が実施済みであると判断される。
S1206において、サブCPU301はホスト処理要求がどれくらいの時間発生していないかを確認する。サブCPU301は、ハードタイマーの値を確認し、リビルド制御テーブル1100のリビルド開始閾値1101の値と比較して超えている場合、S1207に進み、超えていない場合はS1201に戻る。ここで、S1207に進むことは、ホスト処理要求がしばらく来ない可能性が高い。
S1207において、サブCPU301はホスト処理を挟まず連続実行されたリビルド処理の回数をカウンタ1105の値より確認し、リビルド制御テーブル1100のコマンド数切り替え閾値1102の回数と比較する。比較の結果、カウンタ1105の値がコマンド数切り替え閾値1102の値を超えていない場合(閾値以下の場合)にはS1208に進み、超えている場合にはS1209に進む。
S1208において、サブCPU301はリビルド管理テーブル900の実行コマンド数Nに第1リビルドコマンド数1103の値を設定する。一方、S1209において、サブCPU301はリビルド管理テーブル900の実行コマンド数Nに第2リビルドコマンド数1104の値を設定する。なお、第2リビルドコマンド数1104は、第1リビルドコマンド数1103よりも大きい値となる。なお、第2リビルドコマンド数1104は、第1リビルドコマンド数1103よりもコマンド数を大きい値とし、且つ、第1リビルドコマンド数1103よりも1つのコマンドにおけるデータ処理量を増やしてもよい。
S1210では、サブCPU301は“リビルド処理”を実行する。具体的には、図10に示した“リビルド処理”のフローで述べたブリッジ装置102が準備したリビルド処理用のリード及びライトの処理を実行する。
S1211では、サブCPU301はカウンタ1105を加算して、リビルド処理の実行回数を更新する。なお、S1211の後、S1201において、SQテイルドアベル307が更新された場合には、ホストコントローラから要求を受信しているため、リビルド処理を中断し、中断箇所を記憶する。そして、ホストコントローラの要求に対応した後は、再びリビルド処理を中断した箇所からやり直す。なお、この時、リビルド処理をはじめからやり直してもよい。
上記フローで説明したような制御を行うことで、“メイン処理”を優先できるようにリビルド処理を実行し、条件を満たす場合には、“リビルド処理”を優先的に実行することが可能である。これにより、ホスト処理要求を阻害せずにブリッジ装置102でリビルド処理を実行することが可能となる。
このリビルド処理実行中に、メイン処理のコマンド群がHC101上に準備されると、SQテイルドアベル307に通知が発生するため、その通知を以って現在実行中のリビルド処理が終了後メイン処理の実行に移る制御が可能である。このような制御を行うことで、SQ511及びSQ513には、メイン処理のコマンド群またはリビルド処理のコマンド群のみしか入らず、メイン処理とリビルド処理が混同したコマンド群になることはない。また、“リビルド処理”に移行後、連続して処理が継続された際には、キューに格納するコマンドの個数を増やすことによりリビルド処理で扱うデータ量を増やすことが出来、リビルド指定領域の処理完了を早めることが可能となる。
(その他の実施形態)
以上、本発明の様々な例と実施形態を示して説明したが、本発明の趣旨と範囲は、本明細書内の特定の説明に限定されるものではない。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶装置を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
102 ブリッジ回路
103 第1記憶装置
104 第2記憶装置
301 サブCPU
303 PCIeIF
304 PCIeIF

Claims (14)

  1. 不揮発性の第1記憶手段および不揮発性の第2記憶手段と通信する制御装置であって、
    複数の読み出し要求を保持する第1保持手段と、
    前記複数の読み出し要求に対応する複数の書き込み要求を保持する第2保持手段と、
    前記第1保持手段に保持した複数の読み出し要求を前記第1記憶手段に送信する第1送信手段と、
    前記複数の読み出し要求に対応するデータを前記第1記憶手段から受信する第1受信手段と、
    前記第2保持手段に保持した複数の書き込み要求を前記第2記憶手段に送信し、前記複数の読み出し要求に対応するデータを前記第2記憶手段に送信する第2送信手段と、
    前記第1記憶手段に記憶された全てのデータを前記第2記憶手段に記憶させるまで、前記第1保持手段に前記複数の読み出し要求を保持させ且つ前記第2保持手段に前記複数の書き込み要求を保持させる制御を繰り返す制御手段と、を有し、
    前記制御手段は、所定の条件を満たすことによって、前記第1保持手段に保持させる前記複数の読み出し要求の数及び前記第2保持手段に保持させる前記複数の書き込み要求の数を、第1の数から前記第1の数よりも多い第2の数にすることを特徴とする制御装置。
  2. ホストコントローラから要求を受け付ける第3受信手段を有し、
    前記所定の条件は、前記第3受信手段が前記ホストコントローラから要求を受け付けていない状態で、前記第1送信手段が複数の読み出し要求を前記第1記憶手段に送信し、且つ、前記第2送信手段が複数の書き込み要求を前記第2記憶手段に送信する動作の実行回数が閾値よりも多いことを含むことを特徴とする請求項1に記載の制御装置。
  3. 前記動作の実行回数が閾値以下であることによって、前記制御手段は、前記第1の数の読み出し要求を前記第1保持手段に保持させ、前記第1の数の書き込み要求を前記第2保持手段に保持させることを特徴とする請求項2に記載の制御装置。
  4. 前記制御手段は、前記第2送信手段が、前記複数の読み出し要求に対応するデータを前記第2記憶手段に送信することによって、前記動作の実行回数を加算することを特徴とする請求項2または3に記載の制御装置。
  5. 前記所定の条件は、前記ホストコントローラから要求を受け付けていない状態で、前記ホストコントローラから最後に要求を受け付けてから所定の時間が経過することを含むことを特徴とする請求項2乃至4のいずれか1項に記載の制御装置。
  6. 前記制御手段は、前記第1記憶手段に記憶した全てのデータを読み出して前記第2記憶手段に記憶させる前に前記受信手段が前記ホストコントローラから要求を受け付けることによって、前記第1保持手段に前記複数の読み出し要求を保持させ且つ前記第2保持手段に前記複数の書き込み要求を保持させる制御を中断することを特徴とする請求項2乃至5のいずれか1項に記載の制御装置。
  7. 前記制御手段は、前記受信手段が前記ホストコントローラから要求を受け付けると、前記要求を前記第1保持手段および前記第2保持手段に保持させる制御を実行することを特徴とする請求項6に記載の制御装置。
  8. 前記制御手段は、前記第1記憶手段に記憶した全てのデータを読み出して前記第2記憶手段に記憶させることによって、前記第1保持手段に前記複数の読み出し要求を保持させ且つ前記第2保持手段に前記複数の書き込み要求を保持させる制御を終了することを特徴とする請求項1乃至7のいずれか1項に記載の制御装置。
  9. 前記制御手段は、前記第1記憶手段に記憶された全てのデータを前記第2記憶手段に記憶させるまで、リビルド制御を実行することを特徴とする請求項1乃至8のいずれか1項に記載の制御装置。
  10. 不揮発性の第1記憶装置と不揮発性の第2記憶装置と、前記第1記憶装置および前記第2記憶装置と通信する制御装置とを有する情報処理システムであって、
    前記制御装置は、
    複数の読み出し要求を保持する第1保持手段と、
    前記複数の読み出し要求に対応する複数の書き込み要求を保持する第2保持手段と、
    前記第1保持手段に保持した複数の読み出し要求を前記第1記憶装置に送信する第1送信手段と、
    前記複数の読み出し要求に対応するデータを前記第1記憶装置から受信する第1受信手段と、
    前記第2保持手段に保持した複数の書き込み要求を前記第2記憶装置に送信し、前記複数の読み出し要求に対応するデータを前記第2記憶装置に送信する第2送信手段と、
    前記第1記憶装置に記憶された全てのデータを前記第2記憶装置に記憶させるまで、前記第1保持手段に前記複数の読み出し要求を保持させ且つ前記第2保持手段に前記複数の書き込み要求を保持させる制御を繰り返す制御手段と、を有し、
    前記制御手段は、所定の条件を満たすことによって、前記第1保持手段に保持させる前記複数の読み出し要求の数及び前記第2保持手段に保持させる前記複数の書き込み要求の数を、第1の数から前記第1の数よりも多い第2の数にすることを特徴とする情報処理システム。
  11. 前記制御装置は、ホストコントローラから要求を受け付ける第3受信手段を有し、
    前記所定の条件は、前記第3受信手段が前記ホストコントローラから要求を受け付けていない状態で、前記第1送信手段が複数の読み出し要求を前記第1記憶装置に送信し、且つ、前記第2送信手段が複数の書き込み要求を前記第2記憶装置に送信する動作の実行回数が閾値よりも多いことを含むことを特徴とする請求項10に記載の情報処理システム。
  12. 前記動作の実行回数が閾値以下であることによって、前記制御手段は、前記第1の数の読み出し要求を前記第1保持手段に保持させ、前記第1の数の書き込み要求を前記第2保持手段に保持させることを特徴とする請求項11に記載の情報処理システム。
  13. 前記制御手段は、前記第2送信手段が、前記複数の読み出し要求に対応するデータを前記第2記憶装置に送信することによって、前記動作の実行回数を加算することを特徴とする請求項11または12に記載の情報処理システム。
  14. 前記所定の条件は、前記ホストコントローラから要求を受け付けていない状態で、前記ホストコントローラから最後に要求を受け付けてから所定の時間が経過することを含むことを特徴とする請求項11乃至13のいずれか1項に記載の情報処理システム。
JP2020166330A 2020-09-30 2020-09-30 制御装置及び情報処理システム Pending JP2022057869A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2020166330A JP2022057869A (ja) 2020-09-30 2020-09-30 制御装置及び情報処理システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020166330A JP2022057869A (ja) 2020-09-30 2020-09-30 制御装置及び情報処理システム

Publications (1)

Publication Number Publication Date
JP2022057869A true JP2022057869A (ja) 2022-04-11

Family

ID=81110326

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020166330A Pending JP2022057869A (ja) 2020-09-30 2020-09-30 制御装置及び情報処理システム

Country Status (1)

Country Link
JP (1) JP2022057869A (ja)

Similar Documents

Publication Publication Date Title
JP4800056B2 (ja) ストレージシステム及びその制御方法
US8839030B2 (en) Methods and structure for resuming background tasks in a clustered storage environment
US7975168B2 (en) Storage system executing parallel correction write
JP4464378B2 (ja) 同一データを纏める事で格納領域を節約する計算機システム、ストレージシステム及びそれらの制御方法
JP5409159B2 (ja) 情報処理装置、情報処理装置の制御方法及びプログラム
TW200846910A (en) Hints model for optimization of storage devices connected to host and write optimization schema for storage devices
JP2006268503A (ja) 計算機システム、ディスク装置およびデータ更新制御方法
JP2010123055A (ja) データ移行プログラム,データ移行方法及びデータ移行装置
US11669268B2 (en) Information processing apparatus and control method therefor
GB2446172A (en) Control of data transfer
JP6028415B2 (ja) 仮想サーバ環境のデータ移行制御装置、方法、システム
JP6069962B2 (ja) 情報処理装置、領域解放制御プログラム、および領域解放制御方法
TWI544401B (zh) 有效率釋出序列輸人輸出串流的方法、儲存控制器及系統
JP2022057869A (ja) 制御装置及び情報処理システム
US20050223180A1 (en) Accelerating the execution of I/O operations in a storage system
JP4936088B2 (ja) ディスクアレイ装置、ディスクアレイシステム、及びキャッシュ制御方法
US11687287B2 (en) Control apparatus and information processing system
JP2012022645A (ja) データ記憶システムおよび非同期レプリケーション方法
JP6782210B2 (ja) 計算機システム、データ管理方法、及びデータ管理プログラム
JP2007323377A (ja) 記録装置、管理データの書き込み方法および管理データの修復方法
US11954365B2 (en) Information processing apparatus that controls memory system, method of controlling same, and storage medium
JP2019101704A (ja) 情報処理システム及び情報処理方法
US12073089B2 (en) Storage device and data recovery method by storage device
JPH1031563A (ja) 記憶装置
TWI868358B (zh) 資料儲存系統、儲存元件以及操作儲存元件的方法