JP2022071543A - 制御装置および制御装置の制御方法 - Google Patents

制御装置および制御装置の制御方法 Download PDF

Info

Publication number
JP2022071543A
JP2022071543A JP2020180571A JP2020180571A JP2022071543A JP 2022071543 A JP2022071543 A JP 2022071543A JP 2020180571 A JP2020180571 A JP 2020180571A JP 2020180571 A JP2020180571 A JP 2020180571A JP 2022071543 A JP2022071543 A JP 2022071543A
Authority
JP
Japan
Prior art keywords
requests
request
holding
control device
receiving
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
JP2020180571A
Other languages
English (en)
Inventor
貴幸 宮本
Takayuki Miyamoto
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 JP2020180571A priority Critical patent/JP2022071543A/ja
Priority to US17/510,109 priority patent/US11842066B2/en
Publication of JP2022071543A publication Critical patent/JP2022071543A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)

Abstract

【課題】 HDDとホストコントローラ間のデータ転送において、伝送装置内の伝送路上に発生するノイズ等が原因でエラーが発生する。ブリッジ装置の場合、ホストコントローラから記憶装置までの経路が長くなることや、ブリッジ装置で行われる処理が入ることにより、エラー再送処理に要する時間が長くなるおそれがある。【解決手段】 記憶手段から複数の要求の送信要求を受け付けることによって、記憶手段に複数の要求を送信する送信手段と、複数の要求を受け付け、複数の要求の各々に対応する応答を記憶手段から受け付ける第2受け付け手段と、複数の要求を保持し、且つ、第2受け付け手段によって受け付けた複数の要求の各々に対応する応答を保持する保持手段と、第2受け付け手段が複数の要求のうち第1要求に対応する応答としてエラーを受け付けることによって、第1要求と同一の要求を保持手段に保持させる制御手段と、を有することを特徴とする。【選択図】 図8

Description

本発明は、制御装置および制御装置の制御方法に関する。
近年、PCなどの情報処理装置では、不揮発性の半導体記憶装置であるソリッドステートドライブ(SSD)がハードディスドライブ(HDD)に取って代わってきており、より高速なデータ転送が可能となってきている。一方で、これら記憶装置に用いられるインターフェイスであるSerial ATA(SATA)は、転送時のデータ・エンコーディングに要する物理的なオーバヘッドが大きくレイテンシが大きいため、SSD本来の転送パフォーマンスを発揮できていなかった。そこで、近年では汎用バスのPCI-Express(PCIe)に直接接続でき、SSDの高速性を活かす新たなプロトコルであるNon-Volatile Memory Express(NVMe)プロトコルに対応したSSDが登場し始めている。
また、HDDやSSDなどの記憶媒体を解析することによるデータの漏洩を防ぐため、ホストと記憶媒体の間にブリッジ装置を挿入し、データの暗号化/複合化を行う技術が存在する。
特許文献1は、HDDとホストコントローラの間にブリッジ装置を設け、暗号化/複合化を行う手法が開示されている。
特開2012-168960号公報
HDDとホストコントローラ間のデータ転送において、伝送装置内の伝送路上に発生するノイズ等が原因でエラーが発生する。通常、このようなエラーが発生すると、ホストコントローラがエラー再送処理を行うのが一般的である。しかし、ブリッジ装置のある構成の場合、ホストコントローラから記憶装置までの経路が長くなることや、ブリッジ装置で行われる処理が入ることにより、エラー再送処理に要する時間が長くなるおそれがある。
本発明は、エラー処理に要する時間を最小限にする制御装置を提供することを目的とする。
本発明は、不揮発性の記憶手段およびホストコントローラと通信する制御装置であって、前記ホストコントローラから複数の要求を受け付ける第1受け付け手段と、前記記憶手段から前記複数の要求の送信要求を受け付けることによって、前記記憶手段に前記複数の要求を送信する送信手段と、前記複数の要求を受け付け、前記複数の要求の各々に対応する応答を前記記憶手段から受け付ける第2受け付け手段と、前記複数の要求を保持し、且つ、前記第2受け付け手段によって受け付けた前記複数の要求の各々に対応する応答を保持する保持手段と、前記第2受け付け手段が前記複数の要求のうち第1要求に対応する応答としてエラーを受け付けることによって、前記第1要求と同一の要求を前記保持手段に保持させる制御手段と、を有することを特徴とする。
本発明によれば、エラー処理に要する時間を最小限にする制御装置を提供することが可能となる。
情報処理装置のシステム構成を示すブロック図である。 情報処理装置のホストPCの構成図である。 情報処理装置のブリッジ装置の構成図である。 情報処理装置の記憶装置の構成図である。 ブリッジ装置のメモリ詳細図である。 ブリッジ装置がホストコントローラからコマンド群を引き出す流れを示したフローチャートである。 コマンドのフォーマット図である。 ブリッジ装置が記憶装置に通知を行った後に、記憶装置からの完了通知をホストPCに通知する流れを示したフローチャートである。 ブリッジ装置内のメモリ詳細図である。 ブリッジ装置がホストコントローラからコマンド群を引き出す流れを示したフローチャートである。
添付図面を参照して本発明の各実施例を詳しく説明する。なお、以下の実施例は特許請求の範囲に係る発明を限定するものではなく、また各実施例で説明されている特徴の組み合わせのすべてが本発明の解決手段に必須のものとは限らない。本実施形態では、情報処理装置の一例として画像処理装置を用いて説明する。
(実施例1)
図1は、本実施形態に関わるブリッジ装置(制御装置)を用いたシステムの構成を示すブロック図である。
ホストコントローラ(以下、HCと称する)101と、ブリッジ装置102と、記憶装置103を有する。
HC101は、ブリッジ装置102と接続されており、装置全体を制御するメインコントローラとして機能する。本実施例では、例えば、印刷機能やスキャン機能などの画像形成機能の制御を行うことが可能である。
ブリッジ装置102は、HC101と記憶装置103と接続されており、HC101から記憶装置103へのデータ転送時にデータを暗号・複合化する。また、データ転送時にエラーがあった場合、HC101に代わって再送処理を行う。データの暗号・複合化についての動作は参考文献1と同様であるため、説明は省く。なお、例えば、さらに、後述するスキャナ207から読み取った画像データやネットワークを介して不図示の情報処理装置から受け付けた画像データ等を暗号化/復号化する。
記憶装置103は、ブリッジ装置102と接続されており、SSDであり、HC101で扱うシステムソフトウェアやユーザデータ及びアプリケーションデータ等を格納する。さらに、後述するスキャナ207から読み取った画像データやネットワークを介して不図示の情報処理装置から受け付けた画像データ等が、ブリッジ装置102で暗号化され、暗号化された画像データが記憶装置に格納される。
図2は、HC101の詳細ブロック図である。
HC101は、CPU201と、PCIe-IF202とROM203と、RAM204を有し、PCIe-IF202を介してブリッジ装置102と接続される。
CPU201は、ROM203に記憶された制御プログラム等に基づいて接続される各種デバイスとのアクセスを統括的に制御するとともに、HC101で実行される各種処理についても統括的に制御する。
PCIe-IF202は、PCI-Express規格のインターフェイスであり、ブリッジ装置102をEndpointとして、ブリッジ装置102との送受信するデータのやり取りと行う。
ROM203は、不揮発性メモリであり、ブリッジ装置102のブートプログラムや制御プログラム等が格納される。
RAM204は、DRAM等のメモリであり、一時的にデータが格納され、ワークメモリとして働く。RAM204のメモリマップの一例を図5(A)に示す。
RAM204のメモリ空間には、Submission Queue(SQと称する)501及びCompletion Queue(CQと称する)502が構成される。SQとCQは、Non-Volatile Memory Express(NVMe)プロトコルで使用される。
スキャナI/F205は、スキャナ207と通信するためのインターフェイスである。プリンタI/F206は、プリンタ208と通信するためのインターフェイスである。なお、スキャナ207は、原稿から光学的に画像を読み取り画像データを生成する。プリンタ208は、電子写真方式に従って記録媒体(用紙)に画像を形成する。
SQ501は、RAM204上に生成されるリングバッファのキューであり、NVMeのコマンドをやり取りするためにCPU201で生成したNVMeコマンドが順々に格納される。キューの先頭要素はHeadポインタ507、509、キューの末尾要素はTailポインタ508、510で管理される。
SQ501、CQ502にコマンドが格納されるごとに更新されるSQ501、CQ502は、Headポインタ507(509)とTailポインタ508(510)に挟まれたキューにコマンドが格納されている。HeadポインタとTailポインタが同じ位置にある場合、キューは空であることを示している。
例えば、図5(A)の例では、斜線部にコマンドまたはコマンド処理完了通知が格納されていることを示している。これらのSQ501及びCQ502に割り当てるメモリ空間は静的に定まっているものとする。システム起動時にCPU201はSQ501及びCQ502のメモリ空間を確保し、SQ501及びCQ502のメモリ空間の情報をアドミンコマンドによりブリッジ装置と共有する。ただし、これに限定するものではない。
図3は、ブリッジ装置102の詳細ブロック図である。
ブリッジ装置102は、サブCPU301と、PCIe-IF302、303とROM304、RAM305、そして暗号・複合部306を有する。また、ブリッジ装置102は、PCIe-IF302を介してHC101と接続され、PCI-IF303を介して記憶装置103に接続される。
サブCPU301は、ROM304に記憶された制御プログラム等に基づいて接続されるHC101と記憶装置103とのアクセスを制御するとともに、HC101から受信したコマンド群を元に記憶装置用のコマンド群を生成する。
PCIe-IF302は、HC101をRootComplexとして、HC101との送受信するデータのやり取りを行う。PCIe-IF302内にはSubmission Queue Tail Doorbell(以下、SQTDと称する)307とCompletion Queue Head Doorbell(以下、CQHDと称する)308を有する。これらはPCIe-IF302内のレジスタであり、HC101のSQ Tailポインタ508及びCQ Headポインタ510の情報をHC101側が通知するためのものである。
PCIe-IF303は、記憶装置103をEndpointとして、各々記憶装置との送受信するデータのやり取りを行う。ROM304は、不揮発性メモリであり、ブリッジ装置102のブートプログラムや制御プログラム等が格納される。RAM305は、DRAM等のメモリであり、一時的にデータが格納され、ワークメモリとして働く。RAM305のメモリマップの一例はHC101内のRAM204と同様である。(図5(B))
暗号・複合部306は、PCIe-IF302から受信するデータを暗号化、またPCIe-IF303から受信するデータを複合化する回路である。
図4は、記憶装置103の詳細ブロック図である。
記憶装置103は、SSDコントローラ401と、PCIe-IF402と、DRAM403と、NAND FLASH(登録商標)404を有する。また、記憶装置103は、PCIe-IF402を介して、ブリッジ装置102に接続される。
SSDコントローラ401は、記憶装置内で実行されるファームウェアを処理するプロセッサや、DRAM403を制御するDRAMコントローラや、NAND FLASH404を制御するNAND FLASHコントローラが搭載されている。
PCIe-IF402は、ブリッジ装置102をRootComplexとして、ブリッジ装置102との送受信するデータのやり取りを行う。PCIe―IF402内にもブリッジ側のPCIe-IF302と同様、SQTD405とCQHD406を有する。
これらはPCIe-IF402内のレジスタであり、ブリッジ装置102のSQ Tailポインタ518及びCQ Headポインタ520の情報を通知するレジスタである。
DRAM403は、キャッシュ用のメモリであり、NAND FLASH404に対してデータを書き込む前に、そのデータを一時的に保持する。
NAND FLASH404は、実際にデータを記録するデバイスであり、データの読み書きが行われる。
<本実施形態におけるHC101の詳細な動作>
実施形態におけるHC101の詳細な動作について図2と図5(A)を用いて説明する。
HC101内のCPU201は、記憶装置103に対してNVMeプロトコルによるIOアクセスを行うために、NVMeコマンドを作成する。HC101内のCPU201はNVMeコマンドを作成すると、RAM204上のSQ501に順々に格納する。なお、SQに格納されるコマンドは要求であり、CQに格納されるコマンドは要求に対応する応答である。
NVMeコマンドを格納する度にSQ501のTailポインタ508を更新し、SQ501内に格納されているNVMeコマンドの末尾位置504を更新する。Tailポインタ508が更新されると、ブリッジ装置102内のSQTD307にSQ501のTailポインタ508の値を書き込む。そしてHC101は新たにNVMeコマンドが格納されたことをブリッジ装置102に通知(以降、DoorBell通知と称す)する。これにより、ブリッジ装置102内のサブCPU301は、SQ501に格納されたNVMeコマンドを実行するための動作を開始する。ブリッジ装置102の動作については後述する。
HC101内のCPU201はブリッジ装置102がコマンド実行をすべて完了すると通知する割り込みを受けると、HC101内のCQ502に格納されているコマンド実行結果を参照し、正しくコマンド実行されているかを知ることができる。以上のようなフローにより記憶装置へのライト/リードの制御が行われる。
<本実施形態におけるブリッジ装置102の詳細な動作>
次に、本実施形態における特徴である、ブリッジ装置102の詳細な動作について説明する。都合上、ここで記憶装置103の動作についても併せて記述する。まず、NVMeコマンドのフォーマット700の説明をする。
図7に示すNVMeコマンドは、Command Indentifer(以下、CIDと称する)701と、Opecode(以下、OPCと称する)702とPRP Entry703のフィールドを有する。
CID701は、コマンドに付加されるユニークな番号である。OPC702は、コマンドの種類を示す識別子であり、WriteやReadなどの識別子である。RPR Entry703は、転送元のアドレス又は転送先のアドレスを示す情報が格納される。
次に、ブリッジ装置102内のSQ511にNVMeコマンドを格納するまでの流れを図6のフローチャートを用いて説明する。このフローチャートはブリッジ装置102内のサブCPU301が実行するものである。
S601においてサブCPU301がDoorBell通知により発生するPCIe―IF302からの割り込みを受ける。そして、サブCPU301は、HC101のSQ501に新たなNVMeコマンドが格納されたかどうかを確認するため、SQDT307の値が更新されているか確認する。SQDT307の値が更新していればS602に進み、更新がなければS601にとどまる。
S602においてサブCPU301はHC101上に準備されたNVMeコマンドをSQ501からリードして(送信要求を送って)1コマンドずつ引き出す。サブCPU301は、SQ501のHEADポインタの指すメモリ空間からコマンドをリードする。SQ501のHEADポインタの初期値は、上述したようにシステム起動時にHC101から通知されており、一連のNVMe転送が完了すると、HEADポインタはTAILポインタの値に更新される仕組みにより管理されるものである。
S603においてサブCPU301は引き出したライトコマンドを記憶装置103用のキューであるSQ511に書き込む。これはメモリコピーの処理である。サブCPU301は、SQ511のTAILポインタの指すメモリ空間にコマンドを書き込む。SQ511のTAILポインタの初期値はSQ511のHEADポインタの値となっている。コマンドを1つ書き込むことにより、SQ511とCQ512のTAILポインタの値をインクリメントされていくものである。CQ512のTAILポインタはコマンドの実行結果を格納する領域をあらかじめ確保しておくために行う。
S604においてサブCPU301は、ブリッジ装置102がHC101上のSQ501に準備されたNVMeコマンドをすべて引き出し切ったかを判断する。コマンドを引き出した際の参照したSQ501のポインタとSQDT307の値を確認し、同一値であればSQ501に格納された最終コマンドを引き出したと判断できる。
すべてのコマンドを引き出した場合終了となり、まだコマンドが残っている場合はS602に戻り、再度コマンドの引き出しを行う。
つづいて、ブリッジ装置102のSQ511にNVMeコマンドが格納されてから、格納されたことを記憶装置に通知し、記憶装置からコマンド処理の完了通知がブリッジ装置102を介してHC101に通知されるまでを図8のフローチャートを用いて説明する。
図8に示すフローチャートは、情報処理装置のサブCPU301がROM304から読み出してRAM305に保持したプログラムを用いて実行する。
S801においてサブCPU301はブリッジ装置102内のSQ511に、新たなNVMeコマンドが格納されたかどうかの確認を行う。確認方法はSQ511のHeadポインタ517とTailポインタ518の差を確認する方法や、図6で示したフローチャートの処理が完了した通知を受け取ることで確認する方法がある。新たなNVMeコマンドが格納されていればS802に進み、新たなNVMeコマンドが格納されていなければS803に進む。
S802においてブリッジ装置102内のSQ511に新たなNVMeコマンドが格納されたことを記憶装置103に通知する。具体的にはサブCPU301は、Doorbell通知を使い、SQ511のTailポインタ518の位置情報を記憶装置103のSQDT405に書き込む。
Doorbell通知でSQ511のTailポインタ518の位置情報を通知して記憶装置103内のSQTD405の値が更新したことで、記憶装置103のSSDコントローラ401主体でのNVMeコマンド引き出しが行われる。
そして、引き出されたコマンドの内容に則って処理が行われ、コマンド処理が終わるごとに、ブリッジ装置102内のCQ512にコマンド実行結果の書き込みが行われる。そして、記憶装置103で行う全コマンドの処理が完了するとブリッジ装置102にコマンド処理完了割り込みを以って通知を行う。
S803においてサブCPU301は、記憶装置103からのコマンド処理完了割り込みが発行されているかどうかを確認する。コマンド処理完了割り込みが発行されていればS804に進み、コマンド処理完了割り込みが発行されていなければS803にとどまり、記憶装置103でのコマンド処理の完了を待つ。
S804においてサブCPU301は、記憶装置103でのコマンド処理完了情報を参照し、コマンド実行結果にNGがないか判断する。ブリッジ装置102のCQ512に格納された処理完了情報にエラーとなっているものがあればS805へ進み再送処理に入る。NGとなっているものがなければS808に進む。
S805においてサブCPU301は、リトライ回数をインクリメントし、S806に進む。S806においてサブCPU301はリトライ回数とリトライ回数上限(閾値)とを比較する。リトライ回数上限よりも小さければ再送処理を行うため、S807へ進む。リトライ回数上限以上であれば、再送処理を行わずS808に進む。この時、リトライ回数上限はシステム起動時にHC101のCPU201が設定可能な値である。なお、ここでは、閾値に対する所定の条件として、リトライ回数上限以上を示したが、これに限られない。リトライ回数上限よりも回数が多い場合や、リトライ回数のカウントダウンなどでもよい。
S807においてサブCPU301は、SQ511に格納されているコマンドから、コマンド実行結果がNGとなったコマンドのみを再度SQ512に格納する。その後、S802に戻る。
S808においてサブCPU301は、記憶装置103でのコマンド処理完了情報をHC101に格納する。サブCPU301は、ブリッジ装置102のCQ512に格納されたコマンド処理完了情報をHC101のCQ502に順々に書き込む。この時、再送によって複数回実行されたコマンドに関しては、正常にコマンド処理が完了した時の結果のみをHC101内のCQ502に書き込む。リトライ回数上限に達しても結果がエラーとなったコマンドについては、最後に実行した結果を参照しHC101のCQ512に書き込む。
S809においてサブCPU301はブリッジ装置内のSQ511およびCQ512のHeadポインタ517、519の値を更新することで、新しいコマンドが格納されたことを検知できるようにしておく。
S810においてサブCPU301は更新したCQ512のHeadポインタを記憶装置103内のCQHD406に格納することで、次の転送を開始できる状態にする。
S811においてサブCPU301は記憶装置103に対するコマンド処理が完了して、その完了通知をすべてHC101のCQ502に書き込み終えたことをHC101に通知する。サブCPU301は、前コマンドの処理が完了したことを通知する割り込みでHC101に終了したコマンド処理のコマンド完了情報がCQ502にすべて書き終えたことを通知する。
本実施例の構成によれば、HC101上のコマンド群を、ブリッジ装置102を介して、記憶装置103に接続するシステムにおいて、HC101側の処理なしで再送処理を実現することが可能とである。そして、ホストコンピュータとブリッジ装置との間のエラー処理に要する時間を最小限にすることが可能となる。
(実施例2)
第1実施例では、再送時にブリッジ装置102内のCQ512を参照し、コマンド実行結果がエラーとなったものをSQ511から再度SQ512に格納する手法を説明した。
第2実施例では、SQ511と同領域の一時記憶手段(Temporary Buffer 以下TB901と称す)を別途設けて再送処理を行う。実施例2の構成について、第1実施例との差分を主に説明する。
本実施例におけるブリッジ装置102のブリッジ装置内のメモリ詳細図を図9に示す。本実施例においてRAM305は、内部にTB901を搭載している。本実施例ではTB901を再送処理時に参照するため、HC101からコマンド群をSQ511に格納する際、同時にTB901にも格納することで、コマンド群を参照できるようにする。以下より詳細な動作を説明する。
本実施例でもHC101上でNVMeコマンドを準備した後、ブリッジ装置102に通知してブリッジ装置102でコマンドを引き出す。この時のフローを図10に示す。実施例1との差はS1001にある。S602の処理にて、サブCPU301はHC101からコマンドを引き出し、S1001に移動する。S1001において、引き出したコマンドをブリッジ装置内のTB901に格納し、S603に移動する。S603において記憶装置側のSQ511に格納する。これらの実施例1と差分の構成によれば、エラー再送時にSQ511を参照することなく、再送処理を行うことができる。
なお、ブリッジ装置102のSQ511にNVMeコマンドが格納されてから、格納されたことを記憶装置に通知し、記憶装置からコマンド処理の完了通知がブリッジ装置102を介してHC101に通知されるまでのフローチャートは図8と同様である。ただし、S807において、NGとなったコマンドを再度SQ511に格納する際、実施例1ではSQ511だったが、実施2ではTB901となる。
本実施例の構成においても、方法により、HC101側の処理なしで再送処理を実現することが可能とである。そして、ホストコンピュータとブリッジ装置との間のエラー処理に要する時間を最小限にすることが可能となる。
なお、実施例1および実施例2では、記憶装置が1つの場合を説明したが、複数あってもよい。その場合にも実施例1および実施例2で説明した構成を実施することで同様の効果を得ることが出来る。また、本実施例におけるSQ511を複数の記憶装置の各々に持たせてもよいし、共通であってもよい。さらに、SQ511とTB901を複数の記憶装置の各々に持たせてもよいし、共通であってもよい。
(その他の実施形態)
以上、本発明の様々な例と実施形態を示して説明したが、本発明の趣旨と範囲は、本明細書内の特定の説明に限定されるものではない。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
101 HC
102 ブリッジ装置
103 記憶装置
301 サブCPU
305 RAM

Claims (13)

  1. 不揮発性の記憶手段およびホストコントローラと通信する制御装置であって、
    前記ホストコントローラから複数の要求を受け付ける第1受け付け手段と、
    前記記憶手段から前記複数の要求の送信要求を受け付けることによって、前記記憶手段に前記複数の要求を送信する送信手段と、
    前記複数の要求を受け付け、前記複数の要求の各々に対応する応答を前記記憶手段から受け付ける第2受け付け手段と、
    前記複数の要求を保持し、且つ、前記第2受け付け手段によって受け付けた前記複数の要求の各々に対応する応答を保持する保持手段と、
    前記第2受け付け手段が前記複数の要求のうち第1要求に対応する応答としてエラーを受け付けることによって、前記第1要求と同一の要求を前記保持手段に保持させる制御手段と、を有することを特徴とする制御装置。
  2. 前記同一の要求は、前記制御手段が前記保持手段から前記第1要求を読み出すことによって前記保持手段に保持されることを特徴とする請求項1に記載の制御装置。
  3. 記第1受け付け手段によって受け付けた前記複数の要求を保持する前記保持手段と異なる保持手段を有し、
    前記同一の要求は、前記制御手段が前記異なる保持手段から前記第1要求に対応する要求を読み出すことによって前記保持手段に保持されることを特徴とする請求項1に記載の制御装置。
  4. 前記ホストコントローラに前記複数の要求の各々に対応する応答を送信する前記送信手段と異なる送信手段を有し、
    前記第2受け付け手段が前記同一の要求に対応する応答として正常である通知を受け付けることによって、前記異なる送信手段は、前記ホストコントローラに前記第1要求に対応する応答として正常である通知を送信することを特徴とする請求項1に記載の制御装置。
  5. 前記第2受け付け手段が前記複数の要求のうち前記第1要求を除く要求に対応する応答として正常である通知を受け付けることによって、前記異なる送信手段は、前記ホストコントローラに前記第1要求を除く要求に対する応答として正常である通知を送信することを特徴とする請求項4に記載の制御装置。
  6. 前記第1要求と同一の要求を前記保持手段に保持させるリトライの回数が、閾値に対して所定の条件を満たすことによって、前記リトライを停止することを特徴とする請求項1乃至5のいずれか1項に記載の制御装置。
  7. 前記閾値は、前記ホストコントローラによって設定されることを特徴とする請求項6に記載の制御装置。
  8. 前記複数の要求の各々に対応する応答を保持することに基づいて、前記ホストコントローラに前記複数の要求の各々の処理完了通知を送信することを特徴とする請求項1乃至7のいずれか1項に記載の制御装置。
  9. 前記不揮発性の記憶装置は、不揮発性の半導体記憶装置であることを特徴とする請求項2に記載の制御装置。
  10. 前記記憶手段に記憶されたデータは、画像データを含むことを特徴とする請求項1乃至9のいずれか1項に記載の制御装置。
  11. 不揮発性の記憶手段およびホストコントローラと通信する制御装置の制御方法であって、
    前記ホストコントローラから複数の要求を受け付ける第1ステップと、
    前記記憶手段から前記複数の要求の送信要求を受け付けることによって、前記記憶手段に前記複数の要求を送信する第2ステップと、
    前記複数の要求を受け付け、前記複数の要求の各々に対応する応答を前記記憶手段から受け付ける第3ステップと、
    前記複数の要求を保持し、且つ、第2受け付け手段によって受け付けた前記複数の要求の各々に対応する応答を保持する第4ステップと、
    前記第2受け付け手段が前記複数の要求のうち第1要求に対応する応答としてエラーを受け付けることによって、前記第1要求と同一の要求を保持させる第3ステップと、を有することを特徴とする制御装置の制御方法。
  12. 請求項11に記載の制御方法を、コンピュータに実行させるためのプログラム。
  13. 請求項12に記載のプログラムを格納したコンピュータで読み取り可能な記憶媒体。
JP2020180571A 2020-10-28 2020-10-28 制御装置および制御装置の制御方法 Pending JP2022071543A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020180571A JP2022071543A (ja) 2020-10-28 2020-10-28 制御装置および制御装置の制御方法
US17/510,109 US11842066B2 (en) 2020-10-28 2021-10-25 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

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020180571A JP2022071543A (ja) 2020-10-28 2020-10-28 制御装置および制御装置の制御方法

Publications (1)

Publication Number Publication Date
JP2022071543A true JP2022071543A (ja) 2022-05-16

Family

ID=81258389

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020180571A Pending JP2022071543A (ja) 2020-10-28 2020-10-28 制御装置および制御装置の制御方法

Country Status (2)

Country Link
US (1) US11842066B2 (ja)
JP (1) JP2022071543A (ja)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5127989B2 (ja) 2012-03-30 2013-01-23 キヤノン株式会社 データ処理装置およびデータ処理方法
US11003396B2 (en) * 2019-03-01 2021-05-11 Micron Technology, Inc. Dual speed memory
US11061787B2 (en) * 2019-04-23 2021-07-13 Micron Technology, Inc. Custom error recovery in selected regions of a data storage device
US11500589B2 (en) * 2020-10-05 2022-11-15 Western Digital Technologies, Inc. Command draining using host memory buffer

Also Published As

Publication number Publication date
US11842066B2 (en) 2023-12-12
US20220129188A1 (en) 2022-04-28

Similar Documents

Publication Publication Date Title
JP4658122B2 (ja) Dmaコントローラ、ノード、データ転送制御方法、及びプログラム
JP2007011522A (ja) データの消去方法、ストレージ・デバイス及び計算機システム
JP5078671B2 (ja) 情報処理装置、情報処理システム及び情報処理方法
JP6876235B2 (ja) 電子装置及び画像処理装置
JP2022071543A (ja) 制御装置および制御装置の制御方法
US8560789B2 (en) Disk apparatus, data replicating method onto disk apparatus and program recording medium
JP6406219B2 (ja) 通信装置及び画像形成装置
US10168958B2 (en) Information processing system, method in information processing system, and storage medium
JP2008015918A (ja) ディスク装置及びディスクコントローラ
JP2013137624A (ja) データ記憶装置、メモリ制御装置及び方法
JP4936088B2 (ja) ディスクアレイ装置、ディスクアレイシステム、及びキャッシュ制御方法
JP7179489B2 (ja) ストレージシステム及びその制御方法、プログラム、並びに記憶制御システム
JP2012252653A (ja) 情報処理装置及びその制御方法
US11687287B2 (en) Control apparatus and information processing system
US11669268B2 (en) Information processing apparatus and control method therefor
JP2007264751A (ja) データ転送制御装置
US11842064B2 (en) Information processing apparatus, control device, and control method of control device
JP2022067916A (ja) 制御装置および制御装置の制御方法
JP2022057869A (ja) 制御装置及び情報処理システム
JP2012068808A (ja) 可搬記憶装置
JP4422298B2 (ja) 多重化記憶制御装置
JP2022122677A (ja) 情報処理装置および情報処理装置の制御方法
JP2004342037A (ja) データ転送装置、画像形成装置、データ転送制御方法、コンピュータプログラム及び記録媒体
JP2021105843A (ja) 情報処理装置および情報処理装置の制御方法
JP2021105844A (ja) 情報処理装置および情報処理装置の制御方法