JP6812332B2 - 情報処理システム及び情報処理方法 - Google Patents

情報処理システム及び情報処理方法 Download PDF

Info

Publication number
JP6812332B2
JP6812332B2 JP2017231221A JP2017231221A JP6812332B2 JP 6812332 B2 JP6812332 B2 JP 6812332B2 JP 2017231221 A JP2017231221 A JP 2017231221A JP 2017231221 A JP2017231221 A JP 2017231221A JP 6812332 B2 JP6812332 B2 JP 6812332B2
Authority
JP
Japan
Prior art keywords
command
fetched
controller
value
fetch
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.)
Active
Application number
JP2017231221A
Other languages
English (en)
Other versions
JP2019101704A (ja
Inventor
崇志 岡田
崇志 岡田
上原 剛
剛 上原
雄策 清田
雄策 清田
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2017231221A priority Critical patent/JP6812332B2/ja
Priority to US16/122,909 priority patent/US20190163399A1/en
Publication of JP2019101704A publication Critical patent/JP2019101704A/ja
Application granted granted Critical
Publication of JP6812332B2 publication Critical patent/JP6812332B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • 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
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Description

本発明は、情報処理システム及び情報処理方法に関し、例えば、ストレージ装置に適用して好適なものである。
一般的に、コマンドを処理するデバイスは、与えられたコマンドのフォーマットが規定通りであるか否かをその実行時に判定し、規定通りのフォーマットでなかった場合には、そのコマンドの実行を取りやめて、コマンドの発行元であるデバイスドライバ(以下、これを単にドライバと呼ぶ)にエラー通知を送信するなどの所定エラー処理を実行する。
ところで、ドライバがメモリ上に定義されたコマンドキューにコマンドを書き込み、このコマンドをデバイスがフェッチして実行する構成のシステムについて考える。
このようなシステムでは、ドライバ又はデバイスの不良やメモリの故障などに起因して、デバイスが次にフェッチすべきコマンドキュー内のコマンドの位置を表すポインタが正しいコマンドを指し示しておらず、デバイスがコマンドキュー内の既に実行済みのコマンドを再度フェッチしてしまうことがある。
この場合において、そのときフェッチされるコマンドのフォーマットは規定通りであるため、デバイス側においてそのコマンドが不正なものであると判別することができず、そのままそのコマンドが再実行される。
ところが、例えば、かかる再実行されるコマンドがストレージ装置内においてストレージコントローラから記憶デバイスに発行されたライトコマンドであった場合、既に記憶デバイスに書き込まれているデータ上に新たにデータが上書きされる結果となる。
そして、このときそのコマンドが最初に実行された状態から再度そのコマンドが再実行されるまでの間に異なるライトコマンドに基づいて同じ領域に異なるデータが上書きされていた場合、このデータが誤実行されたライトコマンドによって元のデータに書き換えられてしまい、その結果として正しいデータが消失するといった事態が発生するおそれがある。
このようなコマンドの重複実行を抑制するための方法として、例えば、特許文献1には、リクエストの送信元がリクエストを発行する際、そのリクエストに順序情報を付加し、リクエストを処理する処理装置側において、各リクエストに付加された順序情報に基づいて受信したリクエストが処理済みであるか否かを判定する方法が開示されている。
特開2013−191187号公報
しかしながら特許文献1に開示された方法によると、リクエストが処理済みであるか否かを判定するために必要な順序情報をリクエストの送信先のデバイス側において管理する必要があるため、デバイスが交換された場合に交換後の新たなデバイスが、どのリクエストまで処理済みで、どのリクエストから処理を開始すべきかを判断できない問題があった。
従って、リクエストの重複実行に起因するデータの消失等を有効かつ確実に防止するためには、リクエストの送信先となるデバイスの交換が行われた場合においても、交換後の新たなデバイスがどのコマンドから処理を開始すべきかを容易に判断できる仕組みが必要となる。
本発明は以上の点を考慮してなされたもので、コマンドの重複実行に起因するデータの消失等を有効に防止できる信頼性の高い情報処理システム及び情報処理方法を提案しようとするものである。
かかる課題を解決するため本発明においては、情報処理システムにおいて、所定の処理を実行する1又は複数のデバイスと、前記デバイスを制御するコントローラと、前記コントローラに設けられ、デバイスごとのコマンドキューがそれぞれ定義されるメモリとを設け、前記コントローラは、前記デバイスに対するコマンドを対応する前記コマンドキューに順次書き込み、前記デバイスは、前記コマンドキューから前記コマンドをフェッチして実行し、前記コマンドには、当該コマンドがフェッチ済みであるか否かを表すフェッチ情報を格納するためのフィールドが設けられ、前記デバイスが、フェッチした前記コマンドの前記フェッチ情報の値を判定し、当該フェッチ情報の値がフェッチ済みでないことを表す第1の値であった場合には、前記コマンドキューに格納されている当該コマンドの当該フェッチ情報の値をフェッチ済みであることを表す第2の値に更新した上で当該コマンドを実行する一方、当該フェッチ情報の値が前記第2の値であった場合には、当該コマンドを実行せずに所定のエラー処理を実行するようにした。
また本発明においては、所定の処理を実行する1又は複数のデバイスと、前記デバイスを制御するコントローラと、前記コントローラに設けられ、デバイスごとのコマンドキューがそれぞれ定義されるメモリとを有する情報処理システムにおいて実行される情報処理方法であって、前記コントローラは、前記デバイスに対するコマンドを対応する前記コマンドキューに順次書き込み、前記デバイスは、前記コマンドキューから前記コマンドをフェッチして実行し、前記コマンドには、当該コマンドがフェッチ済みであるか否かを表すフェッチ情報を格納するためのフィールドが設けられ、前記デバイスが、フェッチした前記コマンドの前記フェッチ情報の値を判定する第1のステップと、前記デバイスが、当該フェッチ情報の値がフェッチ済みでないことを表す第1の値であった場合には、前記コマンドキューに格納されている当該コマンドの当該フェッチ情報の値をフェッチ済みであることを表す第2の値に更新した上で当該コマンドを実行する一方、当該フェッチ情報の値が前記第2の値であった場合には、当該コマンドを実行せずに所定のエラー処理を実行する第2のステップとを設けるようにした。
本情報処理システム及び情報処理方法によれば、コマンドがフェッチ済みであるか否かを判断するために必要なフェッチ情報がコントローラ側において一括管理されるため、デバイスが交換された場合においても交換後の新たなデバイスがコマンドキューに格納されたコマンドのうちのどのコマンドからフェッチを開始して実行すべきかを容易かつ確実に認識することができる。
本発明によれば、コマンドの重複実行に起因するデータの消失等を有効に防止できる信頼性の高い情報処理システム及び情報処理方法を実現できる。
第1の実施の形態によるストレージ装置の全体構成を示すブロック図である。 第1の実施の形態によるストレージ装置におけるI/O処理の流れを示すブロック図である。 サブミッションキュー及びコマンドの説明に供する概念図である。 本実施の形態によるコマンドフォーマットを示す概念図である。 第1の実施の形態によるストレージ装置において、フェッチ済みフラグ判定において肯定結果を得る場合の処理の流れを示すラダーチャートである。 第1の実施の形態によるストレージ装置において、フェッチ済みフラグ判定において否定結果を得る場合の処理の流れを示すラダーチャートである。 ドライバ側コマンド処理の処理手順を示すフローチャートである。 フラッシュコントローラ側コマンド処理の処理手順を示すフローチャートである。 第2の実施の形態によるストレージ装置の全体構成を示すブロック図である。 第2の実施の形態によるストレージ装置におけるライト処理の流れを示すブロック図である。
以下図面について、本発明の一実施の形態を詳述する。
(1)第1の実施の形態
(1−1)本実施の形態によるストレージ装置の構成
図1において、1は全体として本実施の形態によるストレージ装置を示す。このストレージ装置1は、1又は複数のSSD(Solid State Device)2と、これらSSD2に対するデータの読み書きを制御するストレージコントローラ3とを備えて構成される。
ストレージコントローラ3は、CPU(Central Processing Unit)10、メモリ11及びI/O(Input/Output)ハブ12を備えて構成される。CPU10は、ストレージ装置1全体の動作制御を司るプロセッサであり、メモリ11は、各種プログラムを保持するために利用される半導体メモリである。
メモリ11には、SSDドライバ(以下、これを単にドライバと呼ぶ)13が格納される。ドライバ13は、ストレージコントローラ3がSSD2を制御するためのプログラムである。CPU10がこのドライバ13を実行することにより、ストレージコントローラ3によるSSD2に対する各種制御が行われる。ただし、以下においては、CPU10がドライバ13に基づいて実行する各種処理の処理主体をドライバ13として説明する。
またメモリ11上には、SSD2ごとに1又は複数のサブミッションキュー14がそれぞれ定義される。サブミッションキュー14は、ドライバ13が、対応するSSD2に対するコマンドを書き込むためのコマンドキューである。このサブミッションキュー14に対するコマンドの書込みは、コマンドをその先頭から順番に書き込み、当該サブミッションキューが満杯となったら再び先頭に戻ってコマンドを上書きしていくという方式で行われる。
I/Oハブ12は、CPU10の制御に従ってCPU10及びメモリ11と、SSD2との間の接続を切り替える分配器である。I/Oハブ12は、PCIe(Peripheral Component Interconnect express)バス15を介して各SSD2と接続される。
SSD2は、それぞれ例えばNAND型フラッシュチップが複数搭載された1又は複数のフラッシュメモリ20と、ストレージコントローラ3から与えられるコマンドに応じて対応するフラッシュメモリ20にデータを読み書きするフラッシュコントローラ21とを備えて構成される。
フラッシュコントローラ21は、SSD2全体の動作制御を司るプロセッサであるCPU22と、主としてプログラムを保持するために利用されるメモリ23とを備える。そしてメモリ23には、プログラムとしてコマンドフェッチ制御部24、コマンド実行部25及びコマンド実行結果応答部26が格納される。またメモリ11上には、テイルドアベル(Tail Doorbell)レジスタ領域27が確保される。
テイルドアベルレジスタ領域27は、ストレージコントローラ3のドライバ13が対応するサブミッションキュー14にコマンドを書き込んだ際に、そのサブミッションキュー14に最後に書き込んだコマンドの位置を表すテイルポインタ(図3の「Tail Pointer」)を書き込むためのレジスタ領域である。
またコマンドフェッチ制御部24は、ドライバ13が対応するサブミッションキュー14にコマンドを書き込んだ際に当該ドライバ13から与えられるその通知(以下、これをコマンド書込み通知と呼ぶ)に応じて、テイルドアベルレジスタ領域27に格納されたテイルポインタを利用して、PCIeバス15を介してストレージコントローラ3内のメモリ11上に定義された対応するサブミッションキュー14からコマンドを読み出す機能を有するプログラムである。
コマンド実行部25は、コマンドフェッチ制御部24により対応するサブミッションキュー14から読み出されたコマンドを実行する機能を有するプログラムである。またコマンド実行結果応答部26は、コマンド実行部25により実行されたコマンドの実行結果をストレージコントローラ3に通知する機能を有するプログラムである。
以上の構成を有するストレージ装置1では、図示しない上位装置からリード要求やライト要求などのI/O要求が与えられると、図2に示すように、ストレージコントローラ3のドライバ13がそのI/O要求に応じた対応するSSD2ごとの所定フォーマットのコマンドをそれぞれ生成し、生成したコマンドをそれらのSSD2に対応するサブミッションキュー14にそれぞれ書き込む(S1)。
またドライバ13は、この後、上述のコマンド書込み通知を対応するSSD2に送信する(S2)。なお、このコマンド書込み通知には、そのとき対応するサブミッションキュー14に最後に書き込まれたコマンドの位置(そのサブミッションキュー14の先頭からの位置)を表す上述のテイルポインタが含まれており、このテイルポインタがコマンドフェッチ制御部24(図1)によりテイルドアベルレジスタ領域27(図1)に格納される。
一方、SSD2のフラッシュコントローラ21のコマンドフェッチ制御部24は、対応するサブミッションキュー14に書き込まれたコマンドのうち、最も古い未実行のコマンドの位置をヘッドポインタ(図3のHead Point)として記憶している。
そしてコマンドフェッチ制御部24は、かかるコマンド書込み通知が与えられた場合、PCIeバス15を介してストレージコントローラ3内のメモリ11上に定義された対応するサブミッションキュー14にアクセスし、そのサブミッションキュー14に格納されているコマンドのうち、上述のヘッドポインタからテイルドアベルレジスタ領域27に格納されているテイルポインタまでのコマンドの中からそのとき処理可能な数のコマンドを、サブミッションキュー14に書き込まれたのが古いものから順番にフェッチし、フェッチしたこれらコマンドをコマンド実行部25(図1)に引き渡す(S3)。
そしてコマンド実行部25は、コマンドフェッチ制御部24から引き渡された各コマンドを順番に実行し(S6)、その実行結果をコマンド実行結果応答部26(図1)に順次引き渡す。かくして、かかるコマンドの実行結果が引き渡されたコマンド実行結果応答部26は、そのコマンドがリードコマンドであった場合には、要求されたリードデータをストレージコントローラ3のメモリ11に書き込み、その後、そのコマンドの実行結果をコマンド実行結果応答としてドライバ13に送信する(S7)。
この後、ストレージコントローラ3は、例えば、上位装置からのI/O要求がライト要求であった場合には、ライト処理が完了した旨の通知(ライト完了通知)をその上位装置に送信する。またストレージコントローラ3は、上位装置からのI/O要求がリード要求であった場合には、メモリ11に格納されているリードデータと共に、リード処理が完了した旨の通知(リード完了通知)をその上位装置に送信する。以上により上位装置からのI/O要求に応じた一連の処理が完了する。
(1−2)フェッチ済み判定機能
ところで、このような構成を有するストレージ装置1では、コマンドフェッチ制御部24(図1)のバグや、ストレージコントローラ3のメモリ23の障害等により、対応するサブミッションキュー14に書き込まれた同じコマンドが何度もコマンドフェッチ制御部24にフェッチされてSSD2において実行されるおそれがある。そして、このようにコマンドが重複して実行された場合、上述のようにデータロストが発生するおそれがある。
そこで、本実施の形態では、図3に示すように、ドライバ13がサブミッションキュー14に書き込むコマンドに、そのコマンドをフェッチ済みであるか否かを管理するためのフラグ(以下、これをフェッチ済みフラグと呼ぶ)を格納するためのフィールド(以下、これをフェッチ済みフラグフィールドと呼ぶ)30が設けられている。
このフェッチ済みフラグは、当初、ドライバにより「0」に初期化される。そしてSSD2のフラッシュコントローラ21のコマンドフェッチ制御部24(図1)は、図2のステップS5に示すように、対応するサブミッションキュー14からコマンドをフェッチする度に、サブミッションキューに格納されているそのコマンドのフェッチ済みフラグを「1」に更新する。
またコマンドフェッチ制御部24は、図2のステップS4に示すように、対応するサブミッションキュー14からコマンドをフェッチする度に、フェッチしたコマンドのフェッチ済みフラグの値を判定し、その値が「0」であった場合にはそのコマンドをコマンド実行部25に引き渡して当該コマンドを実行させる一方、その値が「1」であった場合にはそのコマンドをコマンド実行部25に引き渡すことなく、エラーをストレージコントローラ3に通知する。
このような機能(以下、これをフェッチ済み判定機能と呼ぶ)を実現するための手段として、図1に示すように、コマンドフェッチ制御部24は、フェッチ済みフラグ判定部28及びフェッチ済みフラグ書込み制御部29をその一部の機能として備えている。
フェッチ済みフラグ判定部28は、コマンドフェッチ制御部24がフェッチしたコマンドのフェッチ済みフラグの値が「0」及び「1」のいずれであるかを判定する機能部である。
またフェッチ済みフラグ書込み制御部29は、フェッチ済みフラグ判定部28によりフェッチ済みフラグの値が「0」であると判定されたコマンドについて、対応するサブミッションキュー14内のそのコマンドのフェッチ済みフラグを「1」に更新する機能部である。
そしてコマンドフェッチ制御部24は、これらフェッチ済みフラグ判定部28及びフェッチ済みフラグ書込み制御部29の機能により、対応するサブミッションキュー14からコマンドをフェッチしたときにコマンドが既に実行済みのものであるかを判定したり、対応するサブミッションキュー14内のそのコマンドのフェッチ済みフラグを「1」に変更する。
なお、本実施の形態によるコマンドの具体的な構成例を図4に示す。この図4に示すように、本実施の形態の場合、コマンドCOMは、フェッチ済みフラグフィールド30、コマンド種別フィールド31、コマンドIDフィールド32、ソースアドレスフィールド33、デスティネーションアドレスフィールド34及びパリティコードフィールド35を備えて構成される。
フェッチ済みフラグフィールド30は、上述のようにフェッチ済みフラグが格納される1ビットのフィールドである。またコマンド種別フィールド31には、「リード」、「ライト」又は「コピー」などのそのコマンドCOMの種別が格納され、コマンドIDフィールド32には、そのコマンドCOMに付与された固有のIDが格納され、パリティコードフィールド35には、そのコマンドCOMのパリティコードが格納される。
さらにソースアドレスフィールド33には、処理対象のデータが格納されているSSD2上、もしくはメモリ11上のアドレスが格納され、デスティネーションアドレスフィールド34には、そのデータの処理結果を格納すべきSSD2上、もしくはメモリ11上のアドレスが格納される。従って、例えばコマンド種別が「コピー」であった場合、SSD2におけるコピー対象のデータが格納されているコピー元領域のアドレスがソースアドレスフィールド33に格納され、SSD2におけるこのデータのコピー先領域のアドレスがデスティネーションアドレスフィールド34に格納されることになる。
図5Aは、図2のステップS4における判定でフェッチ済みフラグの値が「0」と判定される場合の一連の処理の流れを示す。この場合におけるステップS10〜ステップS11は、図2のステップS1〜ステップS7と処理内容がすべて同じであるため、ここでの説明は省略する。
一方、図5Bは、図2のステップS4における判定でフェッチ済みフラグの値が「1」と判定される場合の一連の処理の流れを示す。この場合におけるステップS20〜ステップS23は、図2のステップS1〜ステップS4と処理内容が同じであるため、ここでの説明は省略する。
そしてSSD2のフラッシュコントローラ21のフェッチ済みフラグ判定部28(図1)は、ステップS23の判定において、コマンドフェッチ制御部24(図1)が対応するサブミッションキュー14からフェッチした少なくとも1つのコマンドのフェッチ済みフラグの値が「1」であると判定した場合、これらコマンドをコマンド実行部25に引き渡すことなく、エラー通知をストレージコントローラ3(図1)のドライバ13(図1)に送信する(S24)。
一方、ストレージコントローラ3(図1)のドライバ13は、かかるエラー通知を受信すると、そのSSD2のフラッシュコントローラ21にリセット指示を与えることにより、フラッシュコントローラ21が保持するすべての情報を破棄させる(S25)。ただし、そのSSD2に格納されているユーザデータは消去されない。
またドライバ13は、メモリ11上に定義されたそのSSD2に対応付けられたサブミッションキュー14を初期化することにより、そのときそのサブミッションキュー14に書き込まれていたすべてのコマンドを消去する(S26)。
さらにドライバ13は、ステップS26で初期化するまでそのサブミッションキュー14に格納されていた未実行のすべてのコマンドをそのサブミッションキュー14に再度書込み(S27)、この後、これに応じたコマンド書込み通知をそのSSD2のフラッシュコントローラ21に送信する(S28)。これにより、そのSSD2においてステップS22以降の処理が再度実行される。
(1−3)フェッチ済み判定機能に関連するドライバ及びフラッシュコントローラの処理
次に、上述のようなフェッチ済み判定機能に関連してドライバ13及びフラッシュコントローラ21により実行される一連の処理の処理内容について説明する。
(1−3−1)ドライバ側コマンド処理
図6は、かかるフェッチ済み判定機能に関連してストレージコントローラ3のドライバ13により実行されるドライバ側コマンド処理の処理手順を示す。
ドライバ13は、上位装置からのI/O要求を受信すると、この図6に示すドライバ側コマンド処理を開始し、まず、受信したI/O要求に応じた所定フォーマットのコマンドを生成する(S30)。この際、ドライバ13は、フェッチ済みフラグフィールド30(図4)に格納されているフェッチ済みフラグの値を「0」に設定する。
続いて、ドライバ13は、ステップS30で生成したコマンドを、対応するSSD2と対応付けられたサブミッションキュー14に書き込み(S31)、この後、そのSSD2に対して上述のテイルポインタを含むコマンド書込み通知を送信する(S32)。
この後、ドライバ13は、そのコマンド書込み通知に対するかかるSSD2からのコマンド実行結果応答が返信されてくるのを待ち受け(S33)、やがて、かかるコマンド実行結果応答を受信すると、受信したコマンド実行結果応答の内容が正常終了であるか否かを判断する(S34)。
ドライバ13は、この判断で肯定結果を得ると、今回受信した上位装置からのI/O要求がリード要求であった場合には、そのときSSD2から読み出された対応するデータ(リードデータ)をその上位装置に返信し、当該I/O要求がライト要求であった場合には、対応するデータのライトが正常に完了した旨の完了通知をその上位装置に送信した後(S35)、このドライバ側コマンド処理を終了する。
これに対して、ドライバ13は、ステップSの判断で否定結果を得ると、今回受信したかかるI/O要求の送信元の上位装置にエラーを通知したり、そのSSD2の初期化やコマンドの再実行などの所定の異常終了処理を実行し(S36)、この後、このドライバ側コマンド処理を終了する。
(1−3−2)フラッシュコントローラ側コマンド処理
一方、図7は、かかるフェッチ済み判定機能に関連してSSD2のフラッシュコントローラ21において実行されるフラッシュコントローラ側コマンド処理の処理手順を示す。
フラッシュコントローラ21側では、図6について上述したドライバ側コマンド処理のステップS32でドライバから発行されたコマンド書込み通知を受信すると、この図7に示すフラッシュコントローラ側コマンド処理が開始される。
そして、まず、フラッシュコントローラ21のコマンドフェッチ制御部24(図1)が、PCIeバス15(図1)を介してストレージコントローラ3(図1)のメモリ11(図1)内の自己に割り当てられたサブミッションキュー14にアクセスし、そのサブミッションキュー14に格納されているコマンドのうち、自己で管理しているヘッドポインタからかかるコマンド書込み通知により通知されたテイルポインタまでのすべてのコマンドをフェッチする(S40)。
続いて、コマンドフェッチ制御部24のフェッチ済みフラグ判定部28(図1)が、ステップS40でコマンドフェッチ制御部24がフェッチした各コマンドについて、これらコマンドのフェッチ済みフラグの値がいずれも「0」であるか否かを判断する(S41)。
そしてフェッチ済みフラグ判定部28は、この判断で否定結果を得ると、ステップS47に進んでコマンド実行結果応答部26(図1)を呼び出す。
これに対して、フェッチ済みフラグ判定部28は、ステップS41の判断で肯定結果を得ると、フェッチ済みフラグ書込み制御部29(図1)を呼び出す。またフェッチ済みフラグ書込み制御部29は、フェッチ済みフラグ判定部28により呼び出されると、PCIeバス15を介してストレージコントローラ3のメモリ11内の自己に割り当てられたサブミッションキュー14にアクセスし、そのサブミッションキュー14に格納されているコマンドのうち、ステップS40でフェッチしたすべてのコマンドについて、フェッチ済みフラグをそれぞれ「1」に更新する(S42)。
この後、フェッチ済みフラグ書込み制御部29によりコマンド実行部25(図1)が呼び出され、ステップS40でコマンドフェッチ制御部24によりフェッチされた各コマンドがコマンド実行部25により順次実行される(S43)。
また、かかるコマンド実行部25による各コマンドの実行が完了すると、コマンド実行部25によりコマンド実行結果応答部26(図1)が呼び出される。この際、コマンド実行部25は、各コマンドが正常に完了したか否かをコマンド実行結果応答部26に通知する。
そしてコマンド実行結果応答部26は、コマンド実行部25により呼び出されると、そのときコマンド実行部25から通知されたコマンドごとの実行結果に基づいて、ステップS40でフェッチされたすべてのコマンドについて、コマンド実行部25が正常に実行できたか否かを判断する(S44)。
コマンド実行結果応答部26は、この判断で肯定結果を得ると、その旨のコマンド実行結果応答をストレージコントローラ3に通知する(S45)。またコマンド実行結果応答部26は、ステップS40でフェッチしたコマンドにリードコマンドが含まれていた場合には、そのコマンドに従って読み出したデータをストレージコントローラ3のメモリ11に格納するなどの所定の正常終了処理を実行する(S46)。以上により、このフラッシュコントローラ側コマンド処理が終了する。
これに対して、コマンド実行結果応答部26は、ステップS44の判断で否定結果を得ると、ステップS47に進んで、その旨のコマンド実行結果応答をストレージコントローラ3に通知する(S47)。またコマンド実行結果応答部36は、この後、ストレージコントローラ3のドライバ13から与えられるリセット指示に応じてステップS40でフェッチしたコマンドをすべて破棄するなどの所定の異常終了処理を実行する(S48)。以上により、このフラッシュコントローラ側コマンド処理が終了する。
(1−4)本実施の形態の効果
以上のように本実施の形態のストレージ装置で1は、ドライバ13がSSD2に発行するコマンドにフェッチ済みか否かを表すフェッチ済みフラグを追加し、ドライバ13がサブミッションキュー14にコマンドを書き込む際にはフェッチ済みフラグを初期化(「0」に設定)しておき、SSD2が対応するサブミッションキュー14からコマンドをフェッチするごとに、サブミッションキュー14におけるそのコマンドのフェッチ済みフラグを「1」に更新する。
従って、本ストレージ装置1では、SSD2ごとに、そのSSD2が対応するサブミッションキュー14からどのコマンドまでをフェッチしたかをストレージコントローラ3側で一括管理できるため、例えば、SSD2が交換された場合においても、交換後の新たなSSD2が、対応するサブミッションキュー14に格納されたコマンドのうち、どのコマンドから処理を開始すれば良いかを容易に認識することができる。
よって、本ストレージ装置1によれば、SSD2の交換があった場合においても交換後の新たなSSD2がコマンドを重複実行することを有効かつ未然に防止することができ、かくしてコマンドの重複実行に起因するデータの消失等を有効に防止し得る信頼性の高いストレージ装置1を実現できる。
(2)第2の実施の形態
図8は、第2の実施の形態によるストレージ装置40を示す。このストレージ装置40は、1又は複数のSSD41と、これらSSD41に対するデータの読み書きを制御するストレージコントローラ42とを備えて構成される。
ストレージコントローラ42は、CPU50及びメモリ51を備えて構成される。CPU50は、ストレージ装置40全体の動作制御を司るプロセッサであり、メモリ51は、各種プログラムを保持するために利用される半導体メモリである。ストレージコントローラ42は、例えば、SAS(Serial Attached SCSI(Small Computer System Interface))規格に準拠したバス43を介して各SSD41とそれぞれ接続される。
SSD41は、それぞれ例えばNAND型フラッシュチップが複数搭載された1又は複数のフラッシュメモリ60と、ストレージコントローラ42から与えられるコマンドに応じて対応するフラッシュメモリ60にデータを読み書きするフラッシュコントローラ61と、フラッシュコントローラ61の一部処理を代行する1又は複数のASIC(Application Specific Integrated Circuit)62とを備えて構成される。
本実施の形態の場合、SSD41に格納されたASIC62は、例えば、ライトデータを圧縮する処理や、ライトデータ内の重複するデータ部分を排除する重複排除処理などのデータ加工処理を代行する機能を有するものとする。
フラッシュコントローラ61は、SSD41全体の動作制御を司るプロセッサであるCPU70と、主としてプログラムを保持するために利用されるメモリ71とを備える。そしてメモリ71には、ASIC62を制御するためのドライバ72が格納される。またメモリ71上には、そのSSD41内に設けられた各ASIC62とそれぞれ対応させて、第1の実施の形態のサブミッションキュー14と同じ構成を有する1又は複数のサブミッションキュー73がそれぞれ定義される。
またASIC62には、それぞれ第1の実施の形態のコマンドフェッチ制御部24、コマンド実行結果応答部26及びテイルドアベルレジスタ領域27と同様の機能又は用途を有するコマンドフェッチ制御部74、コマンド実行結果応答部76及びテイルドアベルレジスタ領域77が設けられている。またASIC62には、上述のように内部コマンドに応じて必要なデータ加工処理を実行可能なコマンド実行部75も設けられている。なお、これらコマンドフェッチ制御部74、コマンド実行部75及びコマンド実行結果応答部76は、ハードウェア構成及びソフトウェア構成のいずれであってもよい。
図9は、上位装置からライト要求が与えられたときに、本実施の形態によるストレージ装置40において実行される一連のライト処理の流れを示す。
この場合、かかるライト要求を受信したストレージ装置40のストレージコントローラ42は、受信したライト要求に応じたライトコマンドを生成する。そしてストレージコントローラ42は、生成したライトコマンドをバス43を介して対応するSSD41に送信する(S50)。
さらにストレージコントローラ42は、かかるライトコマンドと併せて、上述のライト要求と共に上位装置から送信されてきたライト対象のデータ(ライトデータ)もバス43を介してそのSSD41に送信する。かくして、このライトデータがそのSSD41のフラッシュコントローラ61のメモリ71に格納される(S50)。
一方、かかるライトコマンドを受信したSSD41のフラッシュコントローラ61のドライバ72は、受信したライトコマンドに基づくSSD41内部用のライトデータの加工処理を実行するコマンド(以下、これを内部コマンドと呼ぶ)を生成し、これをメモリ71上に定義された対応するサブミッションキュー73に書き込む(S51)。なお、このとき生成される内部コマンドのコマンドフォーマットは、図4について上述したコマンドフォーマットと同様である。また、かかる内部コマンドにおけるフェッチ済みフラグフィールド30(図4)に格納されたフェッチ済みフラグの値は、初期時には「0」に設定される。
またドライバ72は、この後、対応するASIC62に対して、メモリ71上の対応するサブミッションキュー73に内部コマンドを書き込んだ旨のコマンド書込み通知を送信する(S52)。なお、このコマンド書込み通知には、そのとき対応するサブミッションキュー73に最後に書き込んだ内部コマンドの位置(そのサブミッションキュー73の先頭からの位置)を表すテイルポインタが含まれている。そして、このテイルポインタがそのASIC62のテイルドアベルレジスタ領域77(図8)に格納される。
他方、ASIC62のコマンドフェッチ制御部74(図8)は、対応するサブミッションキュー73に書き込まれた内部コマンドのうち、未実行の最も古い内部コマンドの位置をヘッドポインタ(Head Point)として記憶している(図3を参照)。
そしてコマンドフェッチ制御部74は、かかるコマンド書込み通知が与えられた場合、フラッシュコントローラ61のメモリ71上に定義された対応するサブミッションキュー73にアクセスし、そのサブミッションキュー73に格納されている内部コマンドのうち、上述のヘッドポインタからテイルドアベルレジスタ領域77に格納されているテイルポインタまでの内部コマンドをすべてフェッチする(S53)。
またコマンドフェッチ制御部74は、この後、このときフェッチしたこれら内部コマンドのフェッチ済みフラグの値をそれぞれ確認し、これら内部コマンドのフェッチ済みフラグの値がいずれも「0」であるか否かを判定する(S54)。
そしてコマンドフェッチ制御部74は、これら内部コマンドのフェッチ済みフラグの値がすべて「0」であった場合には、フラッシュコントローラ61のメモリ71上の対応するサブミッションキュー73にアクセスして、そのときフェッチした各内部コマンドのフェッチ済みフラグをそれぞれ「1」に更新する(S55)。
この後、コマンドフェッチ制御部74は、ステップS53でフェッチした内部コマンドを順番に(対応するサブミッションキュー73に書き込まれた順番に)コマンド実行部75(図8)に引き渡す。またコマンド実行部75は、フラッシュコントローラ61のメモリ71に格納されているライトデータに対して、そのときコマンドフェッチ制御部74から引き渡された内部コマンドに基づく処理を順次実行する(S56)。
そしてコマンド実行部75は、これら内部コマンドに従ったデータ加工処理をライトデータに施すことにより得られた加工済みライトデータをフラッシュコントローラ61のメモリ71に書き戻す(S57)。
またコマンド実行部75は、ステップS53でフェッチされたすべての内部コマンドの実行が完了すると、コマンド実行結果応答部76(図8)を呼び出す。この際、コマンド実行部75は、各内部コマンドの実行結果をコマンド実行結果応答部76に通知する。そしてコマンド実行結果応答部76は、コマンド実行部75により呼び出されると、コマンド実行部75から通知された各内部コマンドの実行結果をフラッシュコントローラ61のドライバ72に通知する(S58)。
かくして、この通知を受けたフラッシュコントローラ61のドライバ72は、ステップS53でフェッチされた各内部コマンドに従ってASIC62においてデータ加工処理されたライトデータである加工済みライトデータをメモリ71から読み出し、読み出した加工済みライトデータを対応するフラッシュメモリ60に格納する(S59)。
なおドライバ72は、この後、かかるライトデータのライトが完了した旨のライト完了通知をバス43を介してストレージコントローラ42に送信する(S60)。また、このライト完了通知を受信したストレージコントローラ42は、このライト完了通知に応じたライト処理完了通知を上述のライト要求の送信元の上位装置に送信する。以上により、かかる上位装置からのライト要求に応じたストレージ装置40のライト処理が完了する。
以上のように本実施の形態のストレージ装置40においても、ドライバ72からASIC62に発行するコマンドにフェッチ済みか否かを表すフェッチ済みフラグを追加し、ドライバ72がサブミッションキュー73にコマンドを書き込む際にはフェッチ済みフラグを初期化(「0」に設定)しておき、ASIC62が対応するサブミッションキュー73からコマンドをフェッチするごとに、サブミッションキュー73におけるそのコマンドのフェッチ済みフラグを「1」に更新する。
従って、本実施の形態のストレージ装置40においても、第1の実施の形態によるストレージ装置1と同様に、ASIC62が交換された場合においても交換後の新たなASIC62がコマンドを重複実行することを有効かつ未然に防止することができ、かくしてコマンドの重複実行に起因するデータの消失等を有効に防止し得る信頼性の高いストレージ装置40を実現できる。
(3)他の実施の形態
なお上述の第1及び第2の実施の形態においては、本発明をストレージ装置1,40に適用するようにした場合について述べたが、本発明はこれに限らず、所定の処理を実行する1又は複数のデバイスと、デバイスを制御するコントローラと、コントローラに設けられ、デバイスごとのコマンドキューがそれぞれ定義されるメモリとを有する、サーバ装置やこれ以外のコンピュータ装置などの種々の情報処理システムに広く適用することができる。
また上述の第1及び第2の実施の形態においては、所定の処理を実行する1又は複数のデバイスがSSD2,41である場合について述べたが、本発明はこれに限らず、SSD2,41以外のハードディスク装置などの記憶装置を広く適用することができる。
さらに上述の第1及び第2の実施の形態においては、フェッチ済みフラグフィールド30(図4)をコマンドの先頭に設けるようにした場合について述べたが、本発明はこれに限らず、フェッチ済みフラグフィールド30の位置とは、コマンドの先頭以外の場所に設定するようにしてもよい。
さらに上述の第1及び第2の実施の形態においては、コマンドがフェッチ済みであるか否かを表すフェッチ情報としてフラグ(フェッチ済みフラグ)を適用するようにした場合について述べたが、本発明はこれに限らず、この他種々の形態の情報を広く適用することができる。ただし、かかるフェッチ情報としてフラグを適用することにより、コマンドがフェッチ済みであるか否かを1ビットで表現することができるため、コマンドを格納するサブミッションキュー14,73の容量の増大化等を効率良く防止することができる。
本発明は、所定の処理を実行する1又は複数のデバイスと、デバイスを制御するコントローラと、コントローラに設けられ、デバイスごとのコマンドキューがそれぞれ定義されるメモリとを有する種々の情報処理システムに広く適用することができる。
1,40……ストレージ装置、2,41……SSD、3,42……ストレージコントローラ、10,22,50,70……CPU、11,23,51,71……メモリ、13,72……ドライバ、14,73……サブミッションキュー、20,60……フラッシュメモリ、24,74……コマンドフェッチ制御部、25,75……コマンド実行部、26,76……コマンド実行結果応答部、27,77……テイルドアベルレジスタ領域、30……フェッチ済みフラグフィールド、COM……コマンド。

Claims (6)

  1. 情報処理システムにおいて、
    所定の処理を実行する1又は複数のデバイスと、
    前記デバイスを制御するコントローラと、
    前記コントローラに設けられ、前記デバイスごとのコマンドキューがそれぞれ定義されるメモリ
    を備え、
    前記コントローラは、前記デバイスに対するコマンドを対応する前記コマンドキューに順次書き込み、前記デバイスのコマンドフェッチ制御部は、前記コマンドキューに書き込まれたコマンドのうち、最も古い未実行のコマンドの位置を、前記コントローラがフェッチすべきコマンドの位置としてのヘッドポインタとして保存し、
    前記デバイスは、前記ヘッドポインタに基づいて前記コマンドをフェッチして実行し、
    前記コマンドには、当該コマンドがフェッチ済みであるか否かを表すフェッチ情報を格納するためのフィールドが設けられ、
    前記デバイスは、
    フェッチした前記コマンドの前記フェッチ情報の値を判定し、
    当該フェッチ情報の値がフェッチ済みでないことを表す第1の値であった場合には、前記コマンドキューに格納されている当該コマンドの当該フェッチ情報の値をフェッチ済みであることを表す第2の値に更新した上で当該コマンドを実行する一方、当該フェッチ情報の値が前記第2の値であった場合には、当該コマンドを実行せずに所定のエラー処理を実行し、
    前記エラー処理は、前記コントローラへのエラーの通知であり、
    前記コントローラは、
    前記デバイスからエラーが通知された場合には、保持している前記コマンドをすべて破棄するよう前記デバイスに指示を与えると共に、前記コマンドキューを初期化し、
    初期化前に当該コマンドキューに書き込まれていた未実行の前記コマンドを当該コマンドキューに再度書き込み、
    前記コマンドキューに前記コマンドを書き込んだ旨のコマンド書込み通知を前記デバイスに与え、
    前記デバイスは、
    前記コマンド書込み通知に応じて、前記コマンドキューから前記コマンドをフェッチする、
    情報処理システム。
  2. 前記フェッチ情報はフラグである、
    請求項1に記載の情報処理システム。
  3. 前記デバイスは、ストレージ装置に搭載された記憶装置であり、
    前記コントローラは、前記ストレージ装置に実装され、前記デバイスを制御するストレージコントローラである、
    請求項1に記載の情報処理システム。
  4. 所定の処理を実行する1又は複数のデバイスと、前記デバイスを制御するコントローラと、前記コントローラに設けられ、前記デバイスごとのコマンドキューがそれぞれ定義されるメモリとを有する情報処理システムにおいて実行される情報処理方法であって
    前記コントローラは、前記デバイスに対するコマンドを対応する前記コマンドキューに順次書き込み、前記デバイスのコマンドフェッチ制御部は、前記コマンドキューに書き込まれたコマンドのうち、最も古い未実行のコマンドの位置を、前記コントローラがフェッチすべきコマンドの位置としてのヘッドポインタとして保存し、
    前記デバイスは、前記ヘッドポインタに基づいて前記コマンドをフェッチして実行し、
    前記コマンドには、当該コマンドがフェッチ済みであるか否かを表すフェッチ情報を格納するためのフィールドが設けられ、
    前記デバイスが、フェッチした前記コマンドの前記フェッチ情報の値を判定する第1のステップと、
    前記デバイスが、当該フェッチ情報の値がフェッチ済みでないことを表す第1の値であった場合には、前記コマンドキューに格納されている当該コマンドの当該フェッチ情報の値をフェッチ済みであることを表す第2の値に更新した上で当該コマンドを実行する一方、当該フェッチ情報の値が前記第2の値であった場合には、当該コマンドを実行せずに所定のエラー処理を実行する第2のステップと、
    を備え、
    前記エラー処理は、前記コントローラへのエラーの通知であり、
    前記コントローラが、前記デバイスからエラーが通知された場合には、保持している前記コマンドをすべて破棄するよう前記デバイスに指示を与えると共に、前記コマンドキューを初期化し、初期化前に当該コマンドキューに書き込まれていた未実行の前記コマンドを当該コマンドキューに再度書き込み、前記コマンドキューに前記コマンドを書き込んだ旨のコマンド書込み通知を前記デバイスに与える第3のステップと、
    前記デバイスが、前記コマンド書込み通知に応じて、前記コマンドキューから前記コマンドをフェッチする第4のステップと、
    を備える情報処理方法。
  5. 前記フェッチ情報はフラグである、
    請求項4に記載の情報処理方法。
  6. 前記デバイスは、ストレージ装置に搭載された記憶装置であり、
    前記コントローラは、前記ストレージ装置に実装され、前記デバイスを制御するストレージコントローラである、
    請求項4に記載の情報処理方法。
JP2017231221A 2017-11-30 2017-11-30 情報処理システム及び情報処理方法 Active JP6812332B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017231221A JP6812332B2 (ja) 2017-11-30 2017-11-30 情報処理システム及び情報処理方法
US16/122,909 US20190163399A1 (en) 2017-11-30 2018-09-06 Information processing system and information processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017231221A JP6812332B2 (ja) 2017-11-30 2017-11-30 情報処理システム及び情報処理方法

Publications (2)

Publication Number Publication Date
JP2019101704A JP2019101704A (ja) 2019-06-24
JP6812332B2 true JP6812332B2 (ja) 2021-01-13

Family

ID=66634038

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017231221A Active JP6812332B2 (ja) 2017-11-30 2017-11-30 情報処理システム及び情報処理方法

Country Status (2)

Country Link
US (1) US20190163399A1 (ja)
JP (1) JP6812332B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7408357B2 (ja) 2019-11-15 2024-01-05 キオクシア株式会社 メモリシステム及びその制御方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150067291A1 (en) * 2013-08-30 2015-03-05 Kabushiki Kaisha Toshiba Controller, memory system, and method
US9489173B2 (en) * 2014-06-04 2016-11-08 Advanced Micro Devices, Inc. Resizable and relocatable queue
WO2017158799A1 (ja) * 2016-03-17 2017-09-21 株式会社日立製作所 ストレージ装置および情報処理方法

Also Published As

Publication number Publication date
US20190163399A1 (en) 2019-05-30
JP2019101704A (ja) 2019-06-24

Similar Documents

Publication Publication Date Title
CN107949842B (zh) 支持多层存储器的虚拟文件系统
JP5575338B2 (ja) 情報処理装置、情報処理方法、およびコンピュータプログラム
CN110770710A (zh) 用于控制数据加速的装置和方法
US11509716B2 (en) Method and apparatus for performing simple storage service seamless migration using index objects
JP4080227B2 (ja) データ検証方法およびディスクアレイ装置
US7734842B2 (en) Computer-implemented method, apparatus, and computer program product for managing DMA write page faults using a pool of substitute pages
WO2007122063A1 (en) Migrating data that is subject to access by input/output devices
US20100169546A1 (en) Flash memory access circuit
US8555050B2 (en) Apparatus and method thereof for reliable booting from NAND flash memory
US20190155765A1 (en) Operation method of host system including storage device and operation method of storage device controller
JP2007058286A (ja) 記憶装置のフォーマットを不要としたストレージシステム及び記憶制御方法
JP2006190257A (ja) データ転送装置およびデータ転送方法
US6490668B2 (en) System and method for dynamically moving checksums to different memory locations
JP5286796B2 (ja) メモリ制御装置
JP6812332B2 (ja) 情報処理システム及び情報処理方法
JP6447469B2 (ja) 書換システム
US20230221899A1 (en) Direct memory access data path for raid storage
US10761892B2 (en) Method and electronic device for executing data reading/writing in volume migration
JP5846016B2 (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
JP2008217202A (ja) ディスクアレイ装置及びファームウェア更新方法
JP4062429B2 (ja) メモリ書き換え制御方法及びメモリ書き換え制御方法の各工程を実行させるプログラム
US20220100429A1 (en) Control apparatus and information processing system
EP3945407A1 (en) Systems and methods for processing copy commands
JP4164473B2 (ja) 機能メモリアクセス制御システム、機能メモリ装置及びその制御方法、プログラム
JP6613874B2 (ja) 情報処理装置、演算処理装置および情報処理装置の制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180822

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191001

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200519

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200717

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200908

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201104

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20201201

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201216

R150 Certificate of patent or registration of utility model

Ref document number: 6812332

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150