JP2020086483A - 計算機システム及び記憶デバイスの制御方法 - Google Patents

計算機システム及び記憶デバイスの制御方法 Download PDF

Info

Publication number
JP2020086483A
JP2020086483A JP2018214314A JP2018214314A JP2020086483A JP 2020086483 A JP2020086483 A JP 2020086483A JP 2018214314 A JP2018214314 A JP 2018214314A JP 2018214314 A JP2018214314 A JP 2018214314A JP 2020086483 A JP2020086483 A JP 2020086483A
Authority
JP
Japan
Prior art keywords
data
storage device
area
command
write
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
JP2018214314A
Other languages
English (en)
Inventor
健太郎 島田
Kentaro Shimada
健太郎 島田
真喜夫 水野
Makio Mizuno
真喜夫 水野
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 JP2018214314A priority Critical patent/JP2020086483A/ja
Priority to US16/560,308 priority patent/US11269703B2/en
Publication of JP2020086483A publication Critical patent/JP2020086483A/ja
Pending legal-status Critical Current

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
    • 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]
    • 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
    • G06F11/0763Error or fault detection not based on redundancy by bit configuration check, e.g. of formats or tags
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1443Transmit or communication errors
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle 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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】プロセッサに記憶デバイスを直接接続するプロトコルにおいて、書込みデータが正しく記憶デバイスに送付されたかどうかを検出する。【解決手段】プロセッサと、メモリと、記憶デバイスと、を有する計算機システムであって、プロセッサは、書込みコマンドによる書込み対象のデータ領域のデータを無効化するためのコマンドを記憶デバイスに送信し、記憶デバイスは、書込み対象のデータ領域のデータを無効化し、プロセッサは、書込み対象のデータ領域にデータを書込むための書込みコマンドを記憶デバイスに送信し、記憶デバイスは、書込みコマンドに従って書込み対象のデータ領域にデータを書き込み、データの書き込みに成功した領域のデータを有効化し、データの書き込みに失敗した領域のデータの無効化を維持する。【選択図】図1

Description

本発明はストレージシステム等の計算機システムにおける、記憶デバイスの書込み障害に関する。
ストレージシステムでは、コントローラと、不揮発の記憶デバイスを備え、コントローラ内には、システム制御を行うプロセッサと、データを蓄える揮発性のメモリを備える構成を採る。例えば特許文献1には、その一例が開示されている。このようなストレージシステムでは、コントローラのメモリ内に一端格納したユーザデータを、記憶デバイスに書込むことによって、データ保持を行う。
このような記憶デバイスは、コントローラとの間のユーザデータの送受信を確実に行うため、特定の通信プロトコルを用いる。このプロトコルの例は、例えばSCSI(Small Computer System Interface)、Fibre Channel及びSAS(Serial Attached SCSI)である。このようなプロトコルは、コントローラにプロセッサの他に専用のプロトコル制御部を備え、プロトコル制御部には送受するデータの正当性を高めるため、データ保護コードを付与したり、付与されたデータ保護コードをチェックしたりする機能を持つ。
またこのような、データ保護コードの付与を利用して、記憶デバイスへのデータ書込み時に新しいデータが書込めたことを、データ毎に識別番号を付与して保証する技術も、特許文献1にて開示されている。データ毎に異なる識別番号を付与すると、新しいデータの書込みに失敗した場合、データを読み出したときに古い識別番号が付与された古いデータが読み出される。このため、識別番号を調べることで、書込みが失敗したために古いデータが読みだされたことが識別される。
これに対し、近年では、記憶デバイスをプロトコル制御部なしにコントローラのプロセッサに直接接続するNVM Express(登録商標)などの新しいプロトコルも作られている。このようなプロトコルを用いる場合、プロトコル制御部がないので、データ保護コード及び識別番号の付与・チェックはコントローラのプロセッサで行う必要がある。
またこのような記憶デバイスへの通信プロトコルでは、記憶デバイスの障害発生をテストするために、記憶デバイス上の指定したデータを意図的に訂正不可誤り(Uncorrectable Error)状態にするコマンド(データ無効化コマンド)が定義されている。例えばSCSIでは非特許文献1にてWrite Longコマンドが定義されている。またNVM Expressでは非特許文献2にて、Write Uncorrectableコマンドが定義されている。これらのコマンドは各プロトコルにおいて、例えばオプショナルのコマンドである。これらのデータ無効化コマンドを使うと、記憶デバイスの特定のデータをUncorrectable Error状態にすることができ、記憶デバイスの障害発生のテストや、記憶デバイスに障害が発生した時のストレージシステムの障害処理の動作テストを行うことができる。
特開2009−64363号公報
Information technology - SCSI Block Commands - 4 (SBC-4) : Revision 13 17 February 2017 : Project T10/BSR INCITS 506 : International Committee for Information Technology Standards (INCITS) T10 Technical Committee NVM Express Revision 1.3:May 1, 2017:NVM Express, Inc.
NVM Expressなど、プロセッサに記憶デバイスを直接接続するプロトコルにおいて、データ保護や識別番号の付与・チェックはプロセッサで実行する必要がある。このためプロセッサの負荷が高まり、ストレージシステムとして、性能低下が発生する。
しかし、このような記憶デバイスを直接プロセッサに接続するプロトコルを用いる場合、このようなデータ保護コード及び識別番号の付与・チェックを行わないと、プロトコル制御部がないので、書込みデータが正しく記憶デバイスに送付されたかどうか、及び正しく書込まれたかどうかは、記憶デバイス自身でチェックするしかなく、記憶デバイスにおける一時故障で書込みデータが失われても、検出することができない。
記憶デバイスへのデータ書込みが正しく行われたかどうかをチェックする別の方法としては、一旦データを書込んだ後で、再度データを読み出してチェックする方法もあるが、再度のデータ読出しを伴うので、オーバーヘッドが高い。
本発明は以上の問題に鑑みてなされたものであり、その主な目的は、NVM Expressなど、プロセッサに記憶デバイスを直接接続するプロトコルにおいて、記憶デバイスへのデータ書込みが正しく行われたかどうかを、低いオーバーヘッドでチェックすることである。
本発明の目的は、更に、これまで記憶デバイスの障害発生のテストに用いられてきた記憶デバイス上の指定したデータを意図的に訂正不可誤り(Uncorrectable Error)状態にするデータ無効化コマンドを、障害発生のテストではなく、記憶デバイスのデータ書込みにおいてデータが障害なく正しく書けたかどうかをチェックすることに使って、データ書込みのチェックのオーバーヘッドを低減することである。
上記の課題の少なくとも一つを解決するために、本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、以下の通りである。すなわち、プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサに接続される記憶デバイスと、を有する計算機システムであって、前記プロセッサは、前記記憶デバイスに書込みコマンドを送信する前に、前記書込みコマンドによる書込み対象のデータ領域のデータを無効化するためのコマンドを前記記憶デバイスに送信し、前記記憶デバイスは、前記書込み対象のデータ領域のデータを無効化するためのコマンドに従って前記書込み対象のデータ領域のデータを無効化し、前記プロセッサは、前記書込み対象のデータ領域にデータを書込むための書込みコマンドを前記記憶デバイスに送信し、前記記憶デバイスは、前記書込みコマンドに従って前記書込み対象のデータ領域にデータを書き込み、前記書込み対象のデータ領域の少なくとも一部へのデータの書込みに成功した場合、当該データの書き込みに成功した領域のデータを有効化し、前記書込み対象のデータ領域の少なくとも一部へのデータの書込みに失敗した場合、当該データの書き込みに失敗した領域のデータの無効化を維持することを特徴とする。
本発明の一態様によれば、記憶デバイスをプロセッサに直結するNVM Expressのようなプロトコルにおいて、記憶デバイスへのデータ書込みが正しく行われたかどうかのチェックのオーバーヘッドを低減することができる。
上記した以外の課題、構成及び効果は、以下の実施形態の説明によって明らかにされる。
本発明の実施例による、記憶デバイスの接続例を示すブロック図及び処理の流れの例を示すシーケンス図である。 本発明の実施例による、データの読出しまでを含めた処理の流れの例を示すシーケンス図である。 本発明の実施例による、記憶デバイスで動作する、記憶デバイスの制御プログラムのデータ書込み処理の例を示すフローチャートである。 本発明の実施例による、記憶デバイスで動作する、記憶デバイスの制御プログラムのデータ読出し処理の例を示すフローチャートである。 本発明の実施例による、記憶デバイスで動作する、記憶デバイスの制御プログラムのデータ書込み処理の別の例を示すフローチャートである。 本発明の実施例による、記憶デバイスで動作する、記憶デバイスの制御プログラムのデータ読出し処理の別の例を示すフローチャートである。 本発明の実施例による、プロセッサで動作する、制御プログラムのデータ読出し処理の例を示すフローチャートである。 本発明の実施例による、プロセッサと記憶デバイスでやり取りされるコマンド及び応答報告の例を示す説明図である。 本発明の実施例による、プロセッサと記憶デバイスでやり取りされるデータ及びメタデータの例を示す説明図である。 本発明の実施例による、データの読出しまでを含めた処理の流れの別の例を示すシーケンス図である。 本発明の実施例による、記憶デバイスで動作する、記憶デバイスの制御プログラムのデータ読出し処理の更に別の例を示すフローチャートである。
以下、図面を参照しながら、本発明の幾つかの実施例を説明する。
図1及び図8を用いて、本発明の実施例1を説明する。
図1(a)は、本発明の実施例に関わる記憶デバイスとプロセッサの接続の構成の例を示すブロック図である。プロセッサ101は、メモリ102に接続され、メモリ102上に置かれた命令コード(制御プログラム)を実行し、メモリ102上の命令コードとは異なる場所におかれたデータを読み書きして、処理を行う。すなわち、以下の説明においてプロセッサ101が実行する処理は、メモリ102上の制御プログラムに従って実行される。
またプロセッサ101は、記憶デバイス103に接続されている。記憶デバイス103は、不揮発記憶デバイスであり、例えば、不揮発半導体記憶デバイスである。プロセッサ101と記憶デバイス103はプロセッサ101が備えるIOバス104で接続される。IOバスの代表的な例は、PCI Expressである。プロセッサ101、メモリ102及び記憶デバイス103が計算機システムを構成する。
なお、図1(a)では省略されているが、記憶デバイス103もプロセッサ及びメモリを内蔵しており、プロセッサがメモリ上の制御プログラムを実行することで、種々の処理が実現される。すなわち、以下の説明において記憶デバイス103が実行する処理は、記憶デバイス103に内蔵されたプロセッサが、記憶デバイス103に内蔵されたメモリ上のプログラムに従って実行する。
また記憶デバイス103は、データをある程度の大きさのブロック単位で読み書きされる。プロセッサ101は、ブロック単位でデータを読み書きするコマンドを記憶デバイス103に送信する。このようなコマンドのうち、データを書込むWriteコマンドの例を図8(b)に、データを読み出すReadコマンドの例を図8(c)に示す。
Writeコマンドは、当該コマンドがWriteコマンドであることを示すコマンドコード、複数のWriteコマンドどうしを識別するタグ、記憶デバイス103上のデータブロックを指定するブロックアドレス、書込むブロック数、及び、書込みデータのメモリ102上の場所を指定する書込みデータメモリアドレスを持つ。
Readコマンドは、当該コマンドがReadコマンドであることを示すコマンドコード、複数のReadコマンドどうしを識別するタグ、記憶デバイス103上のデータブロックを指定するブロックアドレス、読出すブロック数、及び、読出しデータのメモリ102上の場所を指定する読出しデータメモリアドレスを持つ。
このようにReadコマンド及びWriteコマンドにメモリ102上のデータのアドレスを付与することで、プロセッサ101に直接接続された記憶デバイス103が、メモリ102上に直接書込みデータを格納し、あるいはメモリ102上から直接読み出しデータを取得することができる。
また、本実施例においては、データを記憶デバイス103に書き込む前にデータ無効化コマンドを記憶デバイス103に送付し、データ無効化処理を実施する。データ無効化コマンドの例を図8(a)に示す。データ無効化コマンドは、データそのものは必要としないので、当該コマンドがデータ無効化コマンドであることを示すコマンドコード、複数のデータ無効化コマンドを識別するタグ、無効化する記憶デバイス103上のデータブロックを指定するブロックアドレス、及び、無効化するブロック数からなり、メモリ102上のアドレスは付与されない。
次に図1(b)を用いて、このデータ書込み動作を詳しく説明する。
図1(b)の処理において、データを記憶デバイス103に書き込む時には、まずプロセッサ101からデータ無効化コマンドを記憶デバイス103に手順110で送付する。記憶デバイス103は受信したデータ無効化コマンドに指定されたデータブロックに対し、データ無効化処理を手順111で実施する。ここで指定されるデータブロックは、その後に送付されるWriteコマンドによって指定されるデータブロックと同一である。これによって、後のWriteコマンドによる書込み対象の領域が無効化される。図1(b)では省略されているが、記憶デバイス103は、手順111のデータ無効化処理が終了すると、データ無効化コマンド完了報告をプロセッサ101に送信する。
次に、プロセッサ101からWriteコマンドを手順112で記憶デバイス103に送付する。記憶デバイス103はWriteコマンドを受信すると、指定された書込みデータのメモリアドレスに従って、プロセッサ101を経由してメモリ102上の書込みデータを取得するデータ取得要求を手順113で送付する。
プロセッサ101は送付されたデータ取得要求に従って、メモリ102上のWriteデータを手順114で取得する。その後手順115で、プロセッサ101はメモリ102から取得したデータを記憶デバイス103に送付する。記憶デバイス103は手順115で送付された書込みデータを手順116でデバイス内のWriteコマンドで指定されたブロックアドレスに書込む。
なお、この手順114及び手順115におけるプロセッサ101の動作は、手順113で記憶デバイス103から送付されるデータ取得要求に従って動作するハードウェアを、プロセッサ101上に設けて実現しても良いし、プロセッサ101上で動作するソフトウェアで実現しても良い。
以上の動作によって、手順111で書込み前に書込みブロックアドレスのブロックはすべて無効化されているので、もし手順114のメモリ102上のWriteデータの取得、手順115のWriteデータの送付、又は手順116の記憶デバイス内のWriteデータ書込みのいずれかにおける何らかの誤動作ないし障害によってデータを正しく記憶デバイス103内に書込めなかった場合、当該ブロックのデータは無効化されたままとなり、その後の読出しで検出することができる。
次に図1(a)、図2、図3、図4、図8を用いて、本発明の実施例2を説明する。以下に説明する相違点を除き、実施例2の各部は、図1、図8(a)〜図8(c)等に示された実施例1の同一の符号を付された各部と同一であるため、それらの説明は省略する。
本発明の実施例2では、記憶デバイス103は、データ無効化コマンド、WriteコマンドまたはReadコマンドを受信し、それぞれデータ無効化処理、Write処理またはRead処理を完了したら、プロセッサ101へそれぞれデータ無効化コマンド完了報告、Writeコマンド完了報告、Readコマンド完了報告または無効データ報告を行う。データ無効化コマンド完了報告の例を図8(d)に、Writeコマンド完了報告の例を図8(e)に、Readコマンド完了報告の例を図8(f)に、無効データ報告の例を図8(g)に示す。
本実施例においても、実施例1と同じく、図1(a)に示す通り、プロセッサ101とメモリ102と、記憶デバイス103があり、メモリ102はプロセッサ101に接続され、記憶デバイス103はプロセッサ101とIOバス104で接続されるものとする。
本実施例では、図2を用いて、記憶デバイス103に対するデータ書込みと、その後の記憶デバイス103からのデータ読出しの動作を説明する。
図2において、初めに記憶デバイス103にデータを書込む前に、プロセッサ101から当該領域のデータを無効化するデータ無効化コマンドを手順201で記憶デバイス103に送付する。このデータ無効化コマンドの例は、図8(a)に示した通りである。
データ無効化コマンドを受信した記憶デバイス103は、手順202で指定されたデータ無効化の処理を実施する。実施例1の場合と同様に、ここで指定されるデータブロックは、その後に送付されるWriteコマンドによって指定されるデータブロックと同一である。これによって、後のWriteコマンドによる書込み対象の領域が無効化される。データ無効化処理が完了すると、手順203にて記憶デバイス103は、プロセッサ101にデータ無効化コマンドの完了を報告する。
プロセッサ101は、次に、当該領域へデータを書込むWriteコマンドを、手順204にて記憶デバイス103に送付する。このWriteコマンドの例は図8(b)に示した通りである。
記憶デバイス103は、Writeコマンドの送付を手順204で受けると、指定された書込みデータのメモリアドレスに従って、プロセッサ101を経由してメモリ102上の書込みデータを取得するデータ取得要求を手順205で送付する。
プロセッサ101は送付されたデータ取得要求に従って、メモリ102上のWriteデータを手順206で取得する。その後手順207で、プロセッサ101は、メモリ102から取得したデータを記憶デバイス103に送付する。
記憶デバイス103は、手順207で送付された書込みデータを手順208でデバイス内のWriteコマンドで指定されたブロックアドレスに書込む。なお、この手順206及び手順207におけるプロセッサ101の動作は、手順205で記憶デバイス103より送付されるデータ取得要求に従って動作するハードウェアを、プロセッサ101上に設けて実現しても良いし、プロセッサ101上で動作するソフトウェアで実現しても良い。
記憶デバイス103は、手順208のデバイス内への書込みが完了すると、手順209にてWriteコマンド完了報告をプロセッサ101に報告する。
プロセッサ101は、次に手順210にて、Readコマンドを記憶デバイス103に送付する。このReadコマンドの例は、図8(c)に示す通りである。記憶デバイス103はReadコマンドを受信すると、手順211にてデバイス内の指定されたブロックアドレスから、当該データを読み出す。次に手順212で、読出したデータをプロセッサ101に送付する。
プロセッサ101は、送付されたデータを手順213でメモリ102に格納する。このメモリ102へのデータの格納は、手順212で記憶デバイス103から送付されるデータに従って動作するハードウェアを、プロセッサ101上に設けて実現しても良いし、プロセッサ101上で動作するソフトウェアで実現しても良い。
記憶デバイス103は、最後に手順211のデータ読出しにおいて正しくデータが読み出せた場合はReadコマンド完了報告を、手順211にて無効化されたデータを読み出そうとした場合には、無効データ報告を、手順214にてプロセッサ101に報告する。
本実施例の記憶デバイス103の動作を、図3及び図4を用いて更に詳しく説明する。
図3は、図2の手順201から手順209における、記憶デバイス103がデータ無効化コマンド及びWriteコマンドを受信した時の動作のフローチャートの例である。
図3において、記憶デバイス103は、ステップ300にてデータ無効化コマンドを受信する。これは図2の手順201に相当する。記憶デバイス103は、次にステップ301に進み、受信したデータ無効化コマンドの指示に従って、データ無効化処理を実施する。そしてステップ302にて、記憶デバイス103は、指定された領域の無効化処理が完了したかどうか判定し、完了するまでステップ301に戻ってデータ無効化処理を実施する。このステップ301及び302の処理は、図2の手順202に相当する。
なお、ステップ301において、記憶デバイス103は、データ無効化コマンドによって指定されたデータブロックに実際に何らかの(例えば所定のパターンの)無効であることを示すようなデータを書き込んでもよいが、そのようなデータを書き込むことなく(又は書き込んだ上で)、それらのブロックに対するReadコマンドを受けた場合に読出しエラーを返すことを示すマークを付与してもよい。この場合、ステップ310では書込みに成功した場合には、当該データに対応するマークが削除される。実際にデータを書き込まずに所定のマークを付与することによって、記憶デバイスの処理の負荷が軽減される。
ステップ302にて、指定された領域の無効化処理が完了したと判定されると、ステップ303に進み、記憶デバイス103は、プロセッサ101にデータ無効化完了報告を行う。これは図2の手順203に相当する。
ステップ304にて、記憶デバイス103はWriteコマンドを受信する。これは図2の手順204に相当する。図3においては、記憶デバイス103は次に受信したWriteコマンドに従って、ステップ305にてWriteデータ取得要求をプロセッサ101に送付する。その後ステップ306にて、記憶デバイス103は要求したWriteデータを受信する。
ステップ307にて、記憶デバイス103はWriteデータを正常に受信したかどうか判定する。判定の結果正常なデータ受信に成功していたら、ステップ308にて、記憶デバイス103は記憶デバイス103内の内部記憶メディアにデータを書込む。記憶デバイス103が半導体ドライブ(Solid State Drive)、すなわち不揮発半導体記憶デバイスであれば、内部記憶メディアは例えば、半導体ドライブに内蔵されるフラッシュメモリチップである。
ステップ309にて、記憶デバイス103は内部記憶メディアに対してデータの書込みが成功したかどうかを判定する。成功したと判定した場合には、ステップ310にて記憶デバイス103は当該データを有効化する処理を行う。
ステップ307でWriteデータの受信に成功していなかった時、及びステップ309で内部記憶メディアへのデータ書込みが成功しなかった時には、ステップ311に達し、記憶デバイス103は当該データに対し無効化した状態を維持する。
ステップ312にて、記憶デバイス103は受信したWriteコマンドに指定された領域をすべて処理したかどうかを判定し、処理が完了していなければ、ステップ305に戻ってその後の処理を繰り返す。
処理が完了した場合には、ステップ313に進み、記憶デバイス103はプロセッサ101にWrite完了報告を実施して、処理を終了する。
図4は、図2の手順210から214における、記憶デバイス103がReadコマンドを受信した時の動作のフローチャートの例である。
図4において、記憶デバイス103は、ステップ400にて、Readコマンドを受信する。記憶デバイス103は、次にステップ401に進み、指定されたデータを内部記憶メディアから読み出す。ここで、図3と同じく、記憶デバイス103が半導体ドライブであれば、内部記憶メディアは例えば、半導体ドライブに内蔵されるフラッシュメモリチップである。
記憶デバイス103は、次にステップ402において、内部記憶メディアから読み出したデータが有効なデータであるかどうか、判定する。判定した結果有効なデータであれば、ステップ403にて記憶デバイス103は当該データをプロセッサ101に送信する。そして、次にステップ404に進み、記憶デバイス103はReadコマンドで指定された全領域について読出しを行ったか判定する。判定の結果まだ読出しを行っていない領域があれば、ステップ401に戻って、記憶デバイス103はその後の処理を繰り返す。
ステップ404の判定の結果、指定されたすべての領域の読出しが完了したのであれば、ステップ405にて記憶デバイス103はRead完了報告をプロセッサ101に送付し、処理を終了する。
ステップ402にて、内部記憶メディアから読み出したデータが有効でないと判定された場合には、ステップ406に進み、記憶デバイス103はプロセッサ101に無効データ報告を行って処理を終了する。例えば、図3のステップ301において、無効化されたままのブロックに対するReadコマンドを受けた場合には、ステップ402において、読出しエラーを返すことを示すマークが付与されているので、それにより読み出したデータが有効でないと判定され、ステップ406において、無効データ報告として読出しエラーが送付される。
本実施例では、以上の処理を実行することによって、記憶デバイス103からのデータ読出し時に、データ書込みが成功していなかった場合、プロセッサ101に無効なデータであることが報告され、プロセッサ101が判定することができる。また無効データであるかどうかは、記憶デバイス103からプロセッサ101に報告されるため、プロセッサ101で改めて読み出したデータを検査する必要はなく、プロセッサ101におけるオーバーヘッドが低減可能である。
次に図1(a)、図5、図6、図9、図10を用いて、本発明の実施例3を説明する。以下に説明する相違点を除き、実施例3の各部は、図1〜図4、図8等に示された実施例1〜2の同一の符号を付された各部と同一であるため、それらの説明は省略する。
本発明の実施例3では、記憶デバイス103には、図9(a)に示す1ブロックずつのデータに対して、図9(b)または(c)に示すようにメタデータを付与したデータを格納するものとする。このうち図9(b)は、データの1ブロックに対しメタデータをそれぞれ付与した形式の例、図9(c)は、データのすべてのブロックに対するメタデータをデータのブロックとは別にまとめて付与する形式の例を示す。
また、実施例1及び2ではデータ無効化コマンドが使用されたが、これは書込み対象の領域を無効化するためのコマンドの一例であり、他のコマンドが使用されてもよい。実施例3では、記憶デバイス103の書込み対象の領域を無効化するためのコマンドとして、データ無効化コマンドの替わりにゼロデータWriteコマンドを用いる例を示す。ゼロデータWriteコマンドの例を図9(d)に示す。書込むデータがゼロデータと定まっているので、ゼロデータWriteコマンドは、図8(a)のデータ無効化コマンドと同じく、コマンドコード、複数のゼロデータWriteコマンドを識別するタグ、ゼロデータを書込む記憶デバイス103上のデータブロックを指定するブロックアドレス、及びゼロデータを書込むブロック数からなり、メモリ102上のアドレスは付与されない。
更に本実施例において、ゼロデータWriteコマンドを受けた記憶デバイス103は、データとしてゼロデータを書込むが、メタデータとしてはすべて’1’を書込む。これに対して、通常のWriteコマンドを受けた場合、記憶デバイス103は、データとして当該Writeコマンドに応じて(すなわち後述する図10の手順257で送付された)Writeデータを書込み、メタデータとしては’0’を書込む。
本実施例においても、実施例1及び実施例2と同じく、図1(a)に示す通り、プロセッサ101とメモリ102と、記憶デバイス103があり、メモリ102はプロセッサ101に接続され、記憶デバイス103はプロセッサ101とIOバス104で接続される。
本実施例では、図10を参照して、記憶デバイス103に対するデータ書込みと、その後の記憶デバイス103からのデータ読出しの動作を説明する。
図10では、初めに手順251にて、プロセッサ101から記憶デバイス103に対し、ゼロデータWriteコマンドを送付する。次に手順252にて、記憶デバイス103は送付されたゼロデータWriteコマンドに従って、ゼロデータ書込み処理を実施する。その後、手順253にて、実施例2の図2における手順203と同じように、ゼロデータのWriteコマンド完了報告をプロセッサ101に送付する。その後の手順254から手順264までは、図5及び図6を参照して説明する相違点を除いて、図2の手順204から214までの動作と同じである。
次に、本実施例3における記憶デバイス103の動作を、図5及び図6を参照して更に詳しく説明する。
図5は、図10の手順251から259における、記憶デバイス103がゼロデータWriteコマンド及びWriteコマンドを受信した時の動作のフローチャートの例である。
図5において、記憶デバイス103は、ステップ500にてゼロデータWriteコマンドを受信する。これは図10の手順251に相当する。記憶デバイス103は、次にステップ501に進み、受信したゼロデータWriteコマンドの指示に従って、内部記憶メディアにゼロデータを書込む。但しその際、メタデータは’1’として書込みを行う。ここで、実施例2の図3、図4と同じく、記憶デバイス103が半導体ドライブであれば、内部記憶メディアは例えば、半導体ドライブに内蔵されるフラッシュメモリチップである。
そしてステップ502にて、記憶デバイス103は指定された領域のゼロデータ書込みが完了したかどうか判定し、完了するまでステップ501に戻ってゼロデータの書込みを実施する。このステップ501、502の処理は、図10の手順252に相当する。
ステップ502にて、指定された領域のゼロデータ書込み処理が完了したと判定されると、ステップ503に進み、記憶デバイス103は、プロセッサ101にゼロデータ書込みの完了報告を行う。これは図10の手順253に相当する。
ステップ504にて、記憶デバイス103はWriteコマンドを受信する。これは図10の手順254に相当する。次に、ステップ505にて記憶デバイス103は、受信したWriteコマンドに従って、Writeデータ取得要求をプロセッサ101に送付する。その後ステップ506にて、記憶デバイス103は要求したWriteデータを受信する。ステップ507にて、記憶デバイス103はWriteデータを正常に受信したかどうか判定する。判定の結果正常なデータ受信に成功していたら、ステップ508にて、記憶デバイス103は内部記憶メディアにデータを書込む。
ステップ509にて、記憶デバイス103は内部記憶メディアに対してデータの書込みが成功したかどうかを判定する。成功したと判定した場合には、ステップ510にて、メタデータに’0’を書込む。
ステップ507でWriteデータの受信に成功していなかった時、及びステップ509で内部記憶メディアへのデータ書込みが成功しなかった時には、ステップ511に達し、記憶デバイス103は当該データとしてメタデータを’1’としたゼロデータを維持する。
ステップ512にて、受信したWriteコマンドに指定された領域をすべて処理したかどうかを判定し、処理が完了していなければ、ステップ505に戻ってその後の処理を繰り返す。
完了した場合には、ステップ513に進み、記憶デバイス103はプロセッサ101にWrite完了報告を実施して、処理を終了する。
図6は、図10の手順260から264における、記憶デバイス103がReadコマンドを受信した時の動作のフローチャートの例である。
図6において、記憶デバイス103は、ステップ601にて、Readコマンドを受信する。記憶デバイス103は、次にステップ602に進み、指定されたデータを内部記憶メディアから読み出す。ここで、図5と同じく、記憶デバイス103が半導体ドライブであれば、内部記憶メディアは例えば、半導体ドライブに内蔵されるフラッシュメモリチップである。
記憶デバイス103は、次にステップ603において、内部記憶メディアから読み出したデータのメタデータが’1’であるかどうかを判定する。判定した結果メタデータが’1’でなければ正常に書込まれたデータと判断し、ステップ604にて記憶デバイス103は当該データをプロセッサ101に送信する。この際、‘1’でないメタデータも、当該データに付与して送信される。
ステップ603にて、内部記憶メディアから読み出したデータのメタデータが’1’であると判定された場合には、正常に書込まれたデータでないと判断し、ステップ605に進み、記憶デバイス103はプロセッサ101に、値が’1’のメタデータを付与したゼロデータを送信する。
ステップ604及びステップ605のいずれの場合にも、次にステップ606に進み、記憶デバイス103はReadコマンドで指定された全領域について読出しを行ったか判定する。判定の結果まだ読出しを行っていない領域があれば、ステップ602に戻って、その後の処理を繰り返す。
ステップ606で判定の結果、指定されたすべての領域の読出しが完了したのであれば、ステップ607にて記憶デバイス103はRead完了報告をプロセッサ101に送付し、処理を終了する。
図7は、Readコマンドを記憶デバイス103に送信して記憶デバイス103からデータを読み出す際のプロセッサ101における処理のフローチャートの例である。
図7において、プロセッサ101はステップ700にてReadコマンドを送信する。そしてステップ701にてプロセッサ101はReadデータを受信する。受信したデータは、メタデータと共にメモリ102に格納される。次にステップ702にてプロセッサ101はRead完了報告を受信する。
その後、ステップ703にて、プロセッサ101はメモリ102に格納したデータのメタデータを順に調べて、メタデータが’1’であるかどうか判定する。メタデータが’1’でないと判定された場合には、正常なデータを受信したと判断して、ステップ704に進み、プロセッサ101は正常なデータを受信した時の処理を行う。
次にステップ705で、プロセッサ101は受信したReadデータすべてに対して処理が完了したかどうか判定し、完了していない場合には、ステップ703に戻って処理を繰り返す。
またステップ703にてメタデータが’1’であると判定された場合にはステップ706に進み、プロセッサ101はデータ異常時の処理を行う。
以上の処理を実行することによって、記憶デバイス103からのデータ読出し時に、データ書込みが成功していなかった場合、プロセッサ101にメタデータが’1’であるデータが読み出されるので、データ書込みが成功していなかったことを検出することができる。また、データ無効化コマンドではなく、メタデータを’1’とするゼロデータWriteコマンドを用いることによって、上記の効果を得ることができる。
なお、上記のゼロデータWriteコマンドは、所定のパターンのデータと、メタデータとを書き込むためのコマンドの一例であり、ゼロデータ以外のパターンのデータを書き込むためのコマンドが利用できる場合には、そのコマンドを使用してもよい。また、そのコマンドによって書き込まれたデータのパターンによって、当該データが通常のWriteコマンドによって書き込まれたものでない(すなわち無効なデータである)ことが識別できる場合には、プロセッサ101は、ステップ703において、メタデータによらずに、受信したReadデータのパターンに基づいて、正常なデータを受信したか否かを判定してもよい。この場合、記憶デバイス103は、ステップ501において、ゼロデータWriteコマンドに応じてメタデータを付与しなくてよいし、ステップ604及び605においてメタデータを送信しなくてよい。
次に図1(a)、図5、図9、図10、図11を用いて、本発明の実施例4を説明する。以下に説明する相違点を除き、実施例4の各部は、図1〜図10等に示された実施例1〜3の同一の符号を付された各部と同一であるため、それらの説明は省略する。
本発明の実施例4では、記憶デバイス103には、実施例3と同じく、図9(a)に示す1ブロックずつのデータに対して、図9(b)または(c)に示すようにメタデータを付与したデータが格納される。
また本実施例4においても、記憶デバイス103に対してデータ無効化コマンドの替わりに、ゼロデータWriteコマンドを用いる。ゼロデータWriteコマンドについては、実施例3と同じく図9(d)に例を示す。更に本実施例においても、ゼロデータWriteコマンドは、データにはゼロデータを書込むが、メタデータはすべて’1’を書込む。これに対して、通常のWriteコマンドでデータを書込んだ場合は、メタデータは’0’とする。
本実施例においても、実施例1〜3と同じく、図1(a)に示す通り、プロセッサ101とメモリ102と、記憶デバイス103があり、メモリ102はプロセッサ101に接続され、記憶デバイス103はプロセッサ101とIOバス104で接続されるものとする。
本実施例における、記憶デバイス103に対するデータ書込みと、その後の記憶デバイス103からのデータ読出しの動作の例は、実施例3において、図10に示したものと同じである。説明も実施例3における図10の説明と同じである。
本実施例では、図10の手順260から264における、記憶デバイス103がReadコマンドを受信した時の動作のフローチャートの例として、図6に替えて、図11を用いる。
図11において、記憶デバイス103は、ステップ650にて、Readコマンドを受信する。記憶デバイス103は、次にステップ651に進み、指定されたデータを内部記憶メディアから読み出す。ここで、図5と同じく、記憶デバイス103が半導体ドライブであれば、内部記憶メディアは例えば、半導体ドライブに内蔵されるフラッシュメモリチップである。
記憶デバイス103は、次にステップ652において、内部記憶メディアから読み出したデータのメタデータが’1’であるかどうかを判定する。判定した結果メタデータが’1’でなければ正常に書込まれたデータと判断し、ステップ653にて記憶デバイス103は当該データをプロセッサ101に送信する。ステップ653においては、記憶デバイス103は、当該データにメタデータを付与してプロセッサ101に送信しても良いし、メタデータを取り除いて送信してもよい。これは予めプロセッサ101と記憶デバイス103の間で取決めておくものとする。
次にステップ654に進み、記憶デバイス103はReadコマンドで指定された全領域について読出しを行ったか判定する。判定の結果まだ読出しを行っていない領域があれば、ステップ651に戻って、その後の処理を繰り返す。
ステップ654で判定の結果、指定されたすべての領域の読出しが完了したのであれば、ステップ655にて記憶デバイス103はRead完了報告をプロセッサ101に送付し、処理を終了する。
ステップ652において、内部記憶メディアから読み出したデータのメタデータが’1’であると判定された場合には、正常に書込まれたデータでないと判断し、ステップ656に進み、記憶デバイス103はプロセッサ101に無効データ報告を行って、処理を終了する。
以上の処理を実行することによって、記憶デバイス103からのデータ読出し時に、データ書込みが成功していなかった場合、プロセッサ101に無効データ報告が行われることによって、書込みの失敗を検出することができる。
更に、正常なデータ書込みが行われていなかった場合、記憶デバイス103から無効データ報告が行われるので、プロセッサ101にてメタデータが‘1’であるかどうかを判定しなくとも、記憶デバイス103からの報告が正常なRead完了報告か、無効データ報告かに基づいて、正常なデータ書込みが行われていなかったことを判定することができる。これによって、判定に関するプロセッサ101の処理を軽減することができる。
なお、実施例3と同様に、実施例4でも、ゼロデータWriteコマンドの代わりに、ゼロデータ以外のパターンのデータを書き込むためのコマンドが使用されてもよい。また、そのコマンドによって書き込まれたデータのパターンによって、当該データが無効か否かを識別できる場合には、記憶デバイス103は、ステップ652において、メタデータによらずに、読み出したデータのパターンに基づいて、そのデータが正常に書き込まれたものであるかを判定してもよい。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明のより良い理解のために詳細に説明したのであり、必ずしも説明の全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることが可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によってハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによってソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、不揮発性半導体メモリ、ハードディスクドライブ、SSD(Solid State Drive)等の記憶デバイス、または、ICカード、SDカード、DVD等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
また、制御線及び情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線及び情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えてもよい。
101…プロセッサ
102…メモリ
103…記憶デバイス

Claims (14)

  1. プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサに接続される記憶デバイスと、を有する計算機システムであって、
    前記プロセッサは、前記記憶デバイスに書込みコマンドを送信する前に、前記書込みコマンドによる書込み対象のデータ領域のデータを無効化するためのコマンドを前記記憶デバイスに送信し、
    前記記憶デバイスは、前記書込み対象のデータ領域のデータを無効化するためのコマンドに従って前記書込み対象のデータ領域のデータを無効化し、
    前記プロセッサは、前記書込み対象のデータ領域にデータを書込むための書込みコマンドを前記記憶デバイスに送信し、
    前記記憶デバイスは、
    前記書込みコマンドに従って前記書込み対象のデータ領域にデータを書き込み、
    前記書込み対象のデータ領域の少なくとも一部へのデータの書込みに成功した場合、当該データの書き込みに成功した領域のデータを有効化し、
    前記書込み対象のデータ領域の少なくとも一部へのデータの書込みに失敗した場合、当該データの書き込みに失敗した領域のデータの無効化を維持することを特徴とする計算機システム。
  2. 請求項1に記載の計算機システムであって、
    前記記憶デバイスは、前記プロセッサから、データが無効化されている領域を対象とする読出しコマンドを受信すると、前記データが無効化されていることを示す情報を前記プロセッサに送信することを特徴とする計算機システム。
  3. 請求項2に記載の計算機システムであって、
    前記記憶デバイスは、
    前記書込み対象のデータ領域のデータを無効化するためのコマンドに従って、前記書込み対象のデータ領域に対する読出しコマンドを受信した場合に読出しエラーを返すことを示すマークを前記書込み対象のデータ領域に付与することで、前記書込み対象のデータ領域のデータを無効化し、
    前記書込み対象のデータ領域のうち前記書込みコマンドに従ってデータの書込みに成功した領域の前記マークを削除し、
    前記読出しコマンドの対象の領域の少なくとも一部に前記マークが付与されている場合に、読出しエラーを前記プロセッサに送信することを特徴とする計算機システム。
  4. 請求項1に記載の計算機システムであって、
    前記書込み対象のデータ領域のデータを無効化するためのコマンドは、前記書込み対象のデータ領域への所定のパターンのデータの書込みを伴うコマンドであり、
    前記記憶デバイスは、前記所定のパターンのデータを前記書込み対象の領域に書き込み、
    読出しコマンドに従って前記所定のパターンのデータを読み出した場合、読み出した前記所定のパターンのデータを前記プロセッサに送信することを特徴とする計算機システム。
  5. 請求項4に記載の計算機システムであって、
    前記記憶デバイスは、
    前記書込み対象のデータ領域への所定のパターンのデータの書込みを伴う無効化のためのコマンドを受信すると、前記書込み対象のデータ領域のデータが無効であることを示す付加データをさらに書き込み、
    前記書込み対象のデータ領域のうち前記書込みコマンドによる書込みに成功した領域に対応する前記付加データを、当該領域のデータが有効であることを示す付加データに更新し、
    前記読出しコマンドの対象の領域から読み出したデータと、前記読出しコマンドの対象の領域に対応する前記付加データとを前記プロセッサに送信することを特徴とする計算機システム。
  6. 請求項4に記載の計算機システムであって、
    前記記憶デバイスは、
    前記書込み対象のデータ領域への所定のパターンのデータの書込みを伴う無効化のためのコマンドを受信すると、前記書込み対象のデータ領域のデータが無効であることを示す付加データをさらに書き込み、
    前記書込み対象のデータ領域のうち前記書込みコマンドによる書込みに成功した領域に対応する前記付加データを、当該領域のデータが有効であることを示す付加データに更新し、
    前記読出しコマンドの対象の領域に対応する前記付加データが前記読出しコマンドの対象の領域のデータが無効であることを示す付加データであった場合には、前記データが無効化されていることを示す情報を前記プロセッサに送信することを特徴とする計算機システム。
  7. 請求項1に記載の計算機システムであって、
    前記記憶デバイスは、前記書込みコマンドを受信すると、前記書込みコマンドによる書き込み対象のデータの取得要求を前記プロセッサに送信し、
    前記プロセッサは、前記取得要求に従って、前記メモリからデータを読み出して前記記憶デバイスに送信し、
    前記記憶デバイスは、前記プロセッサから受信したデータを前記書込み対象のデータ領域に書き込むことを特徴とする計算機システム。
  8. プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサに接続される記憶デバイスと、を有する計算機システムにおける記憶デバイスの制御方法であって、
    前記プロセッサが、前記記憶デバイスに書込みコマンドを送信する前に、前記書込みコマンドによる書込み対象のデータ領域のデータを無効化するためのコマンドを前記記憶デバイスに送信する第1手順と、
    前記記憶デバイスが、前記書込み対象のデータ領域のデータを無効化するためのコマンドに従って前記書込み対象のデータ領域のデータを無効化する第2手順と、
    前記プロセッサが、前記書込み対象のデータ領域にデータを書込むための書込みコマンドを前記記憶デバイスに送信する第3手順と、
    前記記憶デバイスが、前記書込みコマンドに従って前記書込み対象のデータ領域にデータを書き込む第4手順と、を含み、
    前記第4手順において、前記記憶デバイスは、前記書込み対象のデータ領域の少なくとも一部へのデータの書込みに成功した場合、当該データの書き込みに成功した領域のデータを有効化し、前記書込み対象のデータ領域の少なくとも一部へのデータの書込みに失敗した場合、当該データの書き込みに失敗した領域のデータの無効化を維持することを特徴とする記憶デバイスの制御方法。
  9. 請求項8に記載の記憶デバイスの制御方法であって、
    前記記憶デバイスが、前記プロセッサから、データが無効化されている領域を対象とする読出しコマンドを受信すると、前記データが無効化されていることを示す情報を前記プロセッサに送信する第5手順をさらに含むことを特徴とする記憶デバイスの制御方法。
  10. 請求項9に記載の記憶デバイスの制御方法であって、
    前記第2手順において、前記記憶デバイスは、前記書込み対象のデータ領域のデータを無効化するためのコマンドに従って、前記書込み対象のデータ領域に対する読出しコマンドを受信した場合に読出しエラーを返すことを示すマークを前記書込み対象のデータ領域に付与することで、前記書込み対象のデータ領域を無効化し、
    前記第4手順において、前記記憶デバイスは、前記書込み対象のデータ領域のうち前記書込みコマンドに従ってデータの書込みに成功した領域の前記マークを削除し、
    前記第5手順において、前記記憶デバイスは、前記読出しコマンドの対象の領域の少なくとも一部に前記マークが付与されている場合に、読出しエラーを前記プロセッサに送信することを特徴とする記憶デバイスの制御方法。
  11. 請求項8に記載の記憶デバイスの制御方法であって、
    前記書込み対象のデータ領域のデータを無効化するためのコマンドは、前記書込み対象のデータ領域に所定のパターンのデータの書込みを伴うコマンドであり、
    前記第2手順において、前記記憶デバイスは、前記所定のパターンのデータを前記書込み対象の領域に書き込み、
    前記記憶デバイスの制御方法は、前記記憶デバイスが、読出しコマンドに従って前記所定のパターンのデータを読み出した場合、読み出した前記所定のパターンのデータを前記プロセッサに送信する第6手順をさらに含むことを特徴とする記憶デバイスの制御方法。
  12. 請求項11に記載の記憶デバイスの制御方法であって、
    前記第2手順において、前記記憶デバイスは、前記書込み対象のデータ領域のデータが無効であることを示す付加データをさらに書き込み、
    前記第4手順において、前記記憶デバイスは、前記書込み対象のデータ領域のうち書込みに成功した領域に対応する前記付加データを、当該領域のデータが有効であることを示す付加データに更新し、
    前記第6手順において、前記記憶デバイスは、前記読出しコマンドの対象の領域から読み出したデータと、前記読出しコマンドの対象の領域に対応する前記付加データとを前記プロセッサに送信することを特徴とする記憶デバイスの制御方法。
  13. 請求項11に記載の記憶デバイスの制御方法であって、
    前記第2手順において、前記記憶デバイスは、前記書込み対象のデータ領域のデータが無効であることを示す付加データをさらに書き込み、
    前記第4手順において、前記記憶デバイスは、前記書込み対象のデータ領域のうち書込みに成功した領域に対応する前記付加データを、当該領域のデータが有効であることを示す付加データに更新し、
    前記第6手順において、前記記憶デバイスは、前記読出しコマンドの対象の領域に対応する前記付加データが前記読出しコマンドの対象の領域のデータが無効であることを示す付加データであった場合には、前記データが無効化されていることを示す情報を前記プロセッサに送信することを特徴とする記憶デバイスの制御方法。
  14. 請求項8に記載の記憶デバイスの制御方法であって、
    前記記憶デバイスが、前記書込みコマンドを受信すると、前記書込みコマンドによる書き込み対象のデータの取得要求を前記プロセッサに送信する手順と、
    前記プロセッサが、前記取得要求に従って、前記メモリからデータを読み出して前記記憶デバイスに送信する手順と、をさらに含み、
    前記第4手順において、前記記憶デバイスは、前記プロセッサから受信したデータを前記書込み対象のデータ領域に書き込むことを特徴とする記憶デバイスの制御方法。
JP2018214314A 2018-11-15 2018-11-15 計算機システム及び記憶デバイスの制御方法 Pending JP2020086483A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018214314A JP2020086483A (ja) 2018-11-15 2018-11-15 計算機システム及び記憶デバイスの制御方法
US16/560,308 US11269703B2 (en) 2018-11-15 2019-09-04 Information processing system and storage device control method to determine whether data has been correctly written into a storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018214314A JP2020086483A (ja) 2018-11-15 2018-11-15 計算機システム及び記憶デバイスの制御方法

Publications (1)

Publication Number Publication Date
JP2020086483A true JP2020086483A (ja) 2020-06-04

Family

ID=70727641

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018214314A Pending JP2020086483A (ja) 2018-11-15 2018-11-15 計算機システム及び記憶デバイスの制御方法

Country Status (2)

Country Link
US (1) US11269703B2 (ja)
JP (1) JP2020086483A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210064745A1 (en) * 2019-08-29 2021-03-04 Flexxon Pte Ltd Methods and systems using an ai co-processor to detect anomolies caused by malware in storage devices

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1993018461A1 (en) * 1992-03-09 1993-09-16 Auspex Systems, Inc. High-performance non-volatile ram protected write cache accelerator system
US5369616A (en) * 1992-10-30 1994-11-29 Intel Corporation Method for assuring that an erase process for a memory array has been properly completed
US5964835A (en) * 1992-12-17 1999-10-12 Tandem Computers Incorporated Storage access validation to data messages using partial storage address data indexed entries containing permissible address range validation for message source
US5930815A (en) * 1995-07-31 1999-07-27 Lexar Media, Inc. Moving sequential sectors within a block of information in a flash memory mass storage architecture
US6598135B1 (en) * 2000-05-03 2003-07-22 Plasmon Ide System and method for defining rewriteable data storage media as write once data storage media
JP4037605B2 (ja) * 2000-12-04 2008-01-23 株式会社東芝 不揮発性メモリユニットのコントローラ、同コントローラを有するメモリシステム及び不揮発性メモリユニットの制御方法
JP5102915B2 (ja) 2007-09-07 2012-12-19 株式会社日立製作所 ストレージ装置及びそのデータ検証方法
EP2598996B1 (en) * 2010-07-28 2019-07-10 SanDisk Technologies LLC Apparatus, system, and method for conditional and atomic storage operations
US9003103B2 (en) * 2011-09-12 2015-04-07 Microsoft Technology Licensing, Llc Nonvolatile media dirty region tracking
US10133662B2 (en) * 2012-06-29 2018-11-20 Sandisk Technologies Llc Systems, methods, and interfaces for managing persistent data of atomic storage operations

Also Published As

Publication number Publication date
US11269703B2 (en) 2022-03-08
US20200159605A1 (en) 2020-05-21

Similar Documents

Publication Publication Date Title
US8504768B2 (en) Storage apparatus, recording medium and method for controlling storage apparatus
US8799745B2 (en) Storage control apparatus and error correction method
TWI447580B (zh) 管理記憶體空間的方法、記憶體控制器與記憶體儲存裝置
WO2019174205A1 (zh) 一种垃圾回收的方法、装置及存储设备
CN103577275B (zh) 一种数据校验的方法、设备和系统
JP4884721B2 (ja) 記憶装置のフォーマットを不要としたストレージシステム及び記憶制御方法
TW201308080A (zh) 記憶體儲存裝置、記憶體控制器與資料寫入方法
US20140304487A1 (en) Information processing apparatus, memory control device, and data transfer control method
US7996712B2 (en) Data transfer controller, data consistency determination method and storage controller
CN106528322B (zh) 检测数据的无记载损坏的方法和设备
US7921265B2 (en) Data access method, channel adapter, and data access control device
US8533560B2 (en) Controller, data storage device and program product
TWI521345B (zh) 回應讀取方法及資料傳輸系統
JP2020086483A (ja) 計算機システム及び記憶デバイスの制御方法
CN112558884A (zh) 数据保护方法以及基于NVMe的存储设备
US9367393B2 (en) Storage control apparatus and storage control method
CN109445686B (zh) 一种存储磁盘以及存取数据的方法
CN112579329A (zh) 快速处理uecc的方法及其存储设备
CN111625477A (zh) 访问擦除块的读请求的处理方法与装置
JP6946027B2 (ja) Icカード、携帯可能電子装置、プログラム、処理装置及び処理システム
US20050204185A1 (en) Detecting and identifying data loss
KR101660180B1 (ko) Ic 카드, 휴대 가능 전자 장치 및 ic 카드 처리 장치
US9639417B2 (en) Storage control apparatus and control method
CN112579328A (zh) 处理编程出错的方法与存储设备
CN116737181B (zh) 通用闪存存储芯片及烧录方法