JP2020149222A - メモリシステム - Google Patents

メモリシステム Download PDF

Info

Publication number
JP2020149222A
JP2020149222A JP2019044960A JP2019044960A JP2020149222A JP 2020149222 A JP2020149222 A JP 2020149222A JP 2019044960 A JP2019044960 A JP 2019044960A JP 2019044960 A JP2019044960 A JP 2019044960A JP 2020149222 A JP2020149222 A JP 2020149222A
Authority
JP
Japan
Prior art keywords
data
hmb
parity
controller
key value
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
JP2019044960A
Other languages
English (en)
Inventor
圭吾 原
Keigo Hara
圭吾 原
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.)
Kioxia Corp
Original Assignee
Kioxia Corp
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 Kioxia Corp filed Critical Kioxia Corp
Priority to JP2019044960A priority Critical patent/JP2020149222A/ja
Priority to US16/549,506 priority patent/US11568074B2/en
Publication of JP2020149222A publication Critical patent/JP2020149222A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • 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/0656Data buffering arrangements
    • 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]

Abstract

【課題】 ホストメモリバッファ(HMB)が用いられる際のセキュリティを強化できるメモリシステムを実現する。【解決手段】 実施形態によれば、メモリシステムは、第1揮発性メモリを備えるホストと接続可能であって、不揮発性メモリと、コントローラとを具備する。前記コントローラは、前記第1揮発性メモリの第1領域を前記不揮発性メモリに格納されるデータの一時記憶用メモリとして使用でき、前記不揮発性メモリを制御する。前記コントローラは、前記不揮発性メモリに格納された第1データとキー値とを使用して第1パリティを生成し、前記第1データと前記生成された第1パリティとを前記第1領域へ格納する。前記コントローラは、前記第1領域に格納された前記第1データを読み出す場合に、前記第1データと前記第1パリティとを読み出して、前記読み出された第1パリティと前記キー値とを使用して前記読み出した第1データを検証する。【選択図】 図1

Description

本発明の実施形態は、不揮発性メモリを備えるメモリシステムに関する。
近年、不揮発性メモリを備えるメモリシステムが広く普及している。
このようなメモリシステムの1つとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。SSDは、様々なコンピューティングデバイスのメインストレージとして使用されている。
SSDは、ホストに設けられたランダムアクセスメモリ(RAM)の一部を一時記憶領域として用いるためのホストメモリバッファ(HMB)機能をサポートしていることがある。一時記憶領域として用いられる、ホスト内のRAMの領域は、HMBとも称される。SSDの内部に設けられるRAMだけでなくHMBも一時記憶領域として用いられることにより、SSDの処理を高速化できる。
米国特許出願公開第2016/0231803号明細書
本発明が解決しようとする課題は、HMBが用いられる際のセキュリティを強化できるメモリシステムを提供することである。
実施形態によれば、メモリシステムは、第1揮発性メモリを備えるホストと接続可能であって、不揮発性メモリと、コントローラとを具備する。前記コントローラは、前記第1揮発性メモリの第1領域を前記不揮発性メモリに格納されるデータの一時記憶用メモリとして使用でき、前記不揮発性メモリを制御する。前記コントローラは、前記不揮発性メモリに格納された第1データとキー値とを使用して第1パリティを生成し、前記第1データと前記生成された第1パリティとを前記第1領域へ格納する。前記コントローラは、前記第1領域に格納された前記第1データを読み出す場合に、前記第1データと前記第1パリティとを読み出して、前記読み出された第1パリティと前記キー値とを使用して前記読み出した第1データを検証する。
実施形態に係るメモリシステムを含む情報処理システムの構成例を示すブロック図。 同実施形態のメモリシステムによって、メモリシステム内のRAM(内部RAM)と、ホスト内のRAM(ホストRAM)に設けられるホストメモリバッファ(HMB)とが、キャッシュ領域として用いられる例を示す図。 同実施形態のメモリシステムによって内部RAMだけがキャッシュ領域として用いられる例を示す図。 同実施形態のメモリシステムによって用いられるHMBが不正にアクセスされる例を示す図。 同実施形態のメモリシステムによって、内部RAMにキャッシュされるデータとHMBにキャッシュされるデータとが判別される例を示す図。 図5の判別に用いられる条件の一例を示す図。 同実施形態のメモリシステムによって用いられるHMBと、別のメモリシステムによって用いられるHMBとが、ホストRAM内の重複した領域に設けられる例を示す図。 同実施形態のメモリシステムによって、HMBにキャッシュされるデータにキー値を用いてパリティが付加される例を示す図。 同実施形態のメモリシステムによって生成されるパリティの例を示す図。 同実施形態のメモリシステムによってHMBにキャッシュされるデータの例を示す図。 同実施形態のメモリシステムによって、HMBから読み出されたデータがパリティとキー値とを用いて検証される例を示す図。 同実施形態のメモリシステムによって実行される、メモリリターン(MR)機能の無効が指定される場合のHMB有効化処理のシーケンスを示す図。 同実施形態のメモリシステムによって実行される、MR機能の有効が指定される場合のHMB有効化処理のシーケンスを示す図。 同実施形態のメモリシステムによって実行されるHMB有効化処理の手順の例を示すフローチャート。 同実施形態のメモリシステムによって実行されるキャッシュ制御処理の手順の例を示すフローチャート。 同実施形態のメモリシステムによって実行されるキャッシュ制御処理の手順の別の例を示すフローチャート。 同実施形態のメモリシステムによって実行されるHMBキャッシュ可否判定処理の手順の例を示すフローチャート。 同実施形態のメモリシステムによって実行されるパリティ検証処理の手順の例を示すフローチャート。
以下、実施の形態について図面を参照して説明する。
まず、図1を参照して、一実施形態に係るメモリシステムを含む情報処理システム1の構成を説明する。
このメモリシステムは、NAND型フラッシュメモリ5のような不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスであり、単にストレージデバイスとも称される。このメモリシステムは、例えば、NAND型フラッシュメモリ5を備えるソリッドステートドライブ(SSD)3として実現されている。以下では、メモリシステム(すなわちストレージデバイス)がSSD3として実現される場合について例示するが、ハードディスクドライブ(HDD)として実現されてもよい。あるいはメモリシステムは、コントローラとNAND型フラッシュメモリ5とが1つのパッケージとして構成されるストレージデバイスであってもよい。
情報処理システム1は、ホストデバイス2(以下、ホストとも称する)とSSD3とを含む。ホスト2は、大量且つ多様なデータをSSD3に保存するストレージサーバであってもよいし、パーソナルコンピュータであってもよい。
SSD3は、ホスト2として機能する情報処理装置のストレージとして使用され得る。SSD3は、この情報処理装置に内蔵されてもよいし、この情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
ホスト2とSSD3とを相互接続するためのインタフェースとしては、NVM Express(NVMe)(登録商標)、Universal Flash Storage(UFS)等が使用され得る。
ホスト2は、CPU21、ランダムアクセスメモリ(RAM)22、ストレージインタフェース23等を備える。これらCPU21、RAM22、およびストレージインタフェース23は、バス20を介して相互接続されていてもよい。ホスト2は、上述したホスト2とSSD3とを相互接続するためのインタフェース規格に対応するストレージインタフェース23を介して、SSD3に接続されている。
CPU21は、ホスト2内の各部を制御するように構成されたプロセッサである。CPU12は、図示しないROM等に格納されている基本入出力システム(BIOS)、オペレーティングシステム(OS)等を実行することによって様々な処理を行う。
RAM22は、CPU12によって用いられる各種のデータを一時的に記憶するための一時記憶領域(作業用領域とも称する)である。RAM22は、ダイナミックRAM(DRAM)であってもよいし、スタティックRAM(SRAM)であってもよい。以下では、このホスト2内のRAM22をホストRAM22とも称する。
SSD3は、コントローラ4およびNAND型フラッシュメモリ5を備える。コントローラ4は、System−on−a−chip(SoC)のような回路によって実現され得る。
コントローラ4はRAM14を備える。RAM14は、コントローラ4によって用いられるデータを一時的に記憶するための一時記憶領域である。RAM14は、DRAMであってもよいし、SRAMであってもよい。なお、RAM14はコントローラ4の外部に設けられてもよい。その場合、コントローラ4は、コントローラ4内に設けられるインタフェースを介してRAM14にアクセスする。
RAM14は、NAND型フラッシュメモリ5に書き込まれるデータや、NAND型フラッシュメモリ5から読み出されたデータを一時的に格納するためのバッファ領域や、論理物理アドレス変換テーブルとして機能するルックアップテーブル(LUT)のキャッシュ領域を備え得る。LUTは、論理アドレス(例えば論理ブロックアドレス(LBA))それぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間のマッピングを管理する。さらに、RAM14は、セキュリティキー(例えばユーザデータを暗号化および復号するための暗号化/復号キー)、CPU12によって実行される制御プログラムであるファームウェア(FW)、SSD3の動作ログ等の、SSD3による処理に用いられる各種のデータの格納領域を備えていてもよい。以下では、このSSD3内のRAM14を内部RAM14とも称する。なお、ユーザデータは、ホスト2からSSD3へ書き込みが指示されたデータであり、ホスト2からの書き込み要求(例えばライトコマンド)で指定されたデータである。SSD3は、ホスト2からの書き込み要求を受け付けたことに伴って、当該ホスト2から、その書き込み要求に関連付けられたユーザデータを受信する。
コントローラ4はさらに、ホストメモリバッファ(HMB)機能をサポートしていることがある。例えば、NVMe規格に準拠したSSD3はHMB機能をサポートし得る。HMB機能は、コントローラ4が、ホストRAM22内の割り当てられた少なくとも一部の領域を、一時記憶領域として排他的に使用するための機能である。コントローラ4は、HMB機能により、ホストRAM22内の一部の領域を排他的に使用することができる。
なお、HMB機能として、メモリアーキテクチャであるUnified Memory Architecture(UMA)が適用されてもよい。この場合、SSD3は、ホスト2とUFS規格に準拠して通信し、UFS規格の周辺規格であるUnified Memory Extension(UME)に基づいてホストRAM22内の一部領域に対してHMB機能を実行することができる。
このように、コントローラ4がHMB機能をサポートする場合、ホスト2とSSD3とを相互接続するためのインタフェースとして、HMB機能を備えるNVMe、またはUMEによりHMB機能を備えるUFSが使用され得る。しかしながら、HMB機能を備えるように規格化されたならば、ホスト2とSSD3とを相互接続するためのインタフェースとして、SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCI Express(PCIe)(登録商標)、Ethernet(登録商標)、Fibre channel等が用いられてもよい。
ホストRAM22内の、コントローラ4に対して割り当てられた領域は、ホストメモリバッファ(HMB)221とも称される。コントローラ4は、HMB機能が有効化(イネーブル)されてから無効化(ディセーブル)されるまでの間、ホストRAM22内のHMB221を、上述した内部RAM14と同様に、バッファ領域、キャッシュ領域、各種のデータの格納領域等が設けられた一時記憶領域として利用できる。なお、例えば、SSD3が起動された時点では、HMB機能は無効化されており、ホスト2からの要求に応じて有効化される。
コントローラ4は、ホスト2から、HMB機能の有効化を要求するコマンドと共に、ホストRAM22内の1つ以上のアドレス範囲を示すリストのアドレス情報を受信し得る。コントローラ4は、コマンドに応じてHMB機能が有効化されてから無効化されるまでの間、その1つ以上のアドレス範囲にそれぞれ対応する1つ以上の領域をHMB221として利用し得る。
なお以下では、説明を分かりやすくするために、内部RAM14またはHMB221へのデータの格納(すなわち一時記憶)を、キャッシュ、バッファ等のその用途に関わらず、「キャッシュする」と称することがある。また、内部RAM14およびHMB221内の領域を、その用途に関わらず、「キャッシュ領域」として説明することがある。
NAND型フラッシュメモリ5は複数のブロックを含む。各ブロックは複数のページを含む。1つのブロックは最小の消去単位として機能する。ブロックは、「消去ブロック」、または「物理ブロック」と称されることもある。各ページは、同一ワード線に接続された複数のメモリセルを含む。1つのページは、データ書き込み動作およびデータ読み出し動作の単位である。なお、ワード線をデータ書き込み動作およびデータ読み出し動作の単位としてもよい。
各ブロックに対するプログラム/イレーズサイクル数(P/Eサイクル数)には上限があり、最大P/Eサイクル数と称される。あるブロックの1回のP/Eサイクルは、このブロック内のすべてのメモリセルを消去状態にするための消去動作と、このブロックのページそれぞれにデータを書き込む書き込み動作とを含む。
また、コントローラ4は、Toggle DDR、Open NAND Flash Interface(ONFI)等のインタフェース規格に対応するNANDインタフェース13を介して、NAND型フラッシュメモリ5に電気的に接続されている。NANDインタフェース13は、NAND型フラッシュメモリ5を制御するように構成されたNAND制御回路として機能する。NANDインタフェース13は、例えばNAND信号の制御やコマンドの発行を行う。
NANDインタフェース13は、複数のチャネル(Ch)を介して、NAND型フラッシュメモリ5内の複数のNAND型フラッシュメモリチップにそれぞれ接続されていてもよい。複数のNAND型フラッシュメモリチップが並列に駆動されることにより、NAND型フラッシュメモリ5に対するアクセスを広帯域化することができる。
コントローラ4は、NAND型フラッシュメモリ5を制御するように構成されたメモリコントローラとして機能する。
コントローラ4は、NAND型フラッシュメモリ5のデータ管理およびブロック管理を実行するように構成されたフラッシュトランスレーション層(FTL)として機能してもよい。このFTLによって実行されるデータ管理は、(1)論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、(2)ページ単位のリード/ライトとブロック単位の消去(イレーズ)動作とを隠蔽するための処理、等を含む。論理アドレスは、SSD3をアドレス指定するためにホスト2によって使用されるアドレスである。以下では、この論理アドレスとして、論理ブロックアドレス(LBA)が使用されることを想定する。
コントローラ4は、LBAそれぞれと物理アドレスそれぞれとの間のマッピングの管理を、論理物理アドレス変換テーブルを用いて実行する。コントローラ4は、論理物理アドレス変換テーブルを使用して、LBAそれぞれと物理アドレスそれぞれとの間のマッピングを特定の管理サイズ単位で管理する。あるLBAに対応する物理アドレスは、このLBAのデータが書き込まれたNAND型フラッシュメモリ5内の物理記憶位置を示す。コントローラ4は、論理物理アドレス変換テーブルを、SSD3の電源オン時にNAND型フラッシュメモリ5から、内部RAM14に、あるいはホストRAM22内のHMB221に、ロードしてもよい。
1つのページへのデータ書き込みは、1回のP/Eサイクル当たり1回のみ可能である。コントローラ4は、あるLBAに対応するデータを更新する場合、このLBAに対応するデータが現在格納されている第1物理記憶位置ではなく、第1物理記憶位置とは別の第2物理記憶位置に更新データを書き込む。そして、コントローラ4は、このLBAをこの第2物理記憶位置に関連付けるように論理物理アドレス変換テーブルを更新することにより、第1物理記憶位置に格納されている更新前のデータを無効化する。
ブロック管理は、バッドブロックの管理、ウェアレベリング、ガベージコレクション(GC)、等を含む。
FTLとして機能するコントローラ4は、上述したようなアドレス変換、ウェアレベリング、GC等の機能を実現するための処理を実行するために、論理物理アドレス変換テーブル、コントローラ4の内部情報を含むシステムデータ、断片化したユーザデータ等の大量のデータを、NAND型フラッシュメモリ5に対してリードおよびライトする処理を行う必要がある。これらのデータを効率的に扱うための方法として、データをNAND型フラッシュメモリ5からより高速な一次メモリ(SRAM、DRAM等)に読み出す方法がある。しかし、大容量の一次メモリを内部RAM14として搭載することは、コントローラ4のコストやサイズを増大させる要因となる。
内部RAM14の容量の増大を抑制するための方法として、上述のHMB機能が用いられ得る。HMB機能により、コントローラ4はホストRAM22の一部を一時記憶領域として利用し、内部RAM14の容量を増大させることなく、FTL等の処理を高速化できる。
コントローラ4は、ホストインタフェース11、CPU12、NANDインタフェース13、内部RAM14、エンコーダ/デコーダ15、周辺回路群16等を含んでもよい。これらホストインタフェース11、CPU12、NANDインタフェース13、内部RAM14、エンコーダ/デコーダ15、および周辺回路群16は、バス10を介して相互接続されていてもよい。
ホストインタフェース11は、ホスト2との間の信号制御やコマンドの発行を行う回路として機能する。ホストインタフェース11は、インタフェース処理部111、パリティジェネレータ112、パリティチェッカ113等を備える。インタフェース処理部111は、SSD3とホスト2とを接続するためのインタフェースで規定されたプロトコル(例えばNVMeのプロトコル)に従った処理を行う。インタフェース処理部111は、ホスト2から様々なコマンド、例えば、各種制御コマンド、I/Oコマンド等を受信する。制御コマンドは、HMB機能の有効化/無効化を要求するためのコマンド(例えばSet Featuresコマンド)を含み得る。I/Oコマンドは、ライトコマンド、リードコマンド等を含み得る。なお、各コマンドは指令とも称される。
ホスト2は、例えばホスト2を使用するユーザが切り替えられたことに応じて、ホスト2が電源オンされたことに応じて、あるいはSSD3が省電力モードから通常モードに移行したことに応じて、HMB機能の有効化を要求するコマンドをSSD3に送信する。このコマンドは、例えばHMB機能の有効化を示すSet Featuresコマンドである。ホスト2は、HMB221として使用されるべき領域を指定するために、このコマンドと共に、例えばホストRAM22内の1つ以上のアドレス範囲を示すリストのアドレス情報をSSD3に送信し得る。
またホスト2は、例えばホスト2を使用するユーザが切り替えられる前に、ホスト2が電源オフされる前に、あるいはSSD3が通常モードから省電力モードに移行する前に、HMB機能の無効化を要求するコマンドをSSD3に送信する。このコマンドは、例えばHMB機能の無効化を示すSet Featuresコマンドである。SSD3は、消費電力を低減するために通常モードから省電力モードに移行する。SSD3は、例えば、省電力モードに移行する前に、内部RAM14等の揮発性メモリに格納されたデータをNAND型フラッシュメモリ5に書き込んだ後、揮発性メモリおよびNAND型フラッシュメモリ5への電力供給を停止する。省電力モードに移行したSSD3は、一部の素子を除く各部に電力を供給しないので、消費電力を低減できる。
インタフェース処理部111は、HMB機能の有効化を要求するコマンドに応じて、HMB機能の有効化を示すリクエストをCPU12に送出する。また、インタフェース処理部111は、HMB221として使用されるべきホストRAM22内の領域を指定したアドレス情報をCPU12に送出する。これにより、CPU12によってHMB機能が有効化され、指定された領域がHMB221として用いられる。
また、インタフェース処理部111は、HMB機能の無効化を要求するコマンドに応じて、HMB機能の無効化を示すリクエストをCPU12に送出する。これにより、CPU12によってHMB機能が無効化される。
インタフェース処理部111はさらに、HMB機能が有効化されてから無効化されるまでの間、HMB221にキャッシュされるべきデータをホスト2に送信し、またHMB221にキャッシュされているデータをホスト2から受信し得る。換言すると、インタフェース処理部111は、HMB機能が有効化されてから無効化されるまでの間、データをHMB221にキャッシュするための処理と、HMB221からデータを読み出すための処理とを行い得る。なお、キャッシュされるべきデータとは、コントローラ4がHMB221(あるいは内部RAM14)にキャッシュしようとしているデータであって、実際にはまだキャッシュされていないデータである。
パリティジェネレータ112は、キー値を用いて、HMB221にキャッシュされるべきデータに付加されるパリティを生成する。インタフェース処理部111は、生成されたパリティとデータとをHMB221にキャッシュする。キー値は、CPU12によって、例えばHMB機能が有効化される毎に生成(更新)されるランダムな値である。キー値は、HMB機能が有効化されてから無効化されるまでの期間毎にユニークな値である。例えば、HMB機能が有効化されてから無効化されるまでの第1期間に用いられるキー値は、その第1期間の後にHMB機能が有効化されてから無効化されるまでの期間に用いられるキー値とは異なる。なお、以下では、HMB機能が有効化されてから無効化されるまでの期間を、有効化期間とも称する。
パリティチェッカ113は、HMB221からデータおよびパリティが読み出された場合、キー値と読み出されたパリティとを用いて、読み出されたデータにエラーが発生しているか否かを検証する。パリティジェネレータ112およびパリティチェッカ113は、CPU12によって生成されたキー値を保存している。キー値を用いたパリティの生成と、キー値およびパリティを用いたデータの検証とについては、図8から図11を参照して後述する。
エンコーダ/デコーダ15はユーザデータの暗号化および復号を行う。エンコーダ/デコーダ15は、例えば、NANDインタフェース13を介してNAND型フラッシュメモリ5に書き込まれるユーザデータを暗号化し、NANDインタフェース13を介してNAND型フラッシュメモリ5から読み出されるユーザデータを復号し得る。エンコーダ/デコーダ15は、例えばセキュリティキー(暗号化/復号キー)を用いて、ユーザデータの暗号化および復号を行う。セキュリティキーは、内部RAM14等のRAMに保存されていてもよい。
周辺回路群16はCPU12による処理を補佐するための回路を含む。周辺回路群16は、例えばダイレクトメモリアクセスコントローラ(DMAC)を含む。ホストインタフェース11内のインタフェース処理部111は、DMACからの指示に従い、HMB221にデータをキャッシュするための処理や、HMB221にキャッシュされているデータを読み出すための処理を行い得る。
CPU12は、ホストインタフェース11およびNANDインタフェース13を制御するように構成されたプロセッサである。CPU12は、図示しないROM等に格納されているFWを実行することによって様々な処理を行う。CPU12は、上述のFTLの処理に加え、ホスト2からの様々なコマンドを処理するためのコマンド処理等を実行することができる。CPU12によって実行される上述のFWは、CPU12の動作を制御する。なお、コントローラ4内の専用ハードウェアが、FTL処理およびコマンド処理の一部または全部を実行してもよい。
CPU12は、例えば、リード制御部121、ライト制御部122、GC制御部123、HMB機能制御部124、キー生成部125、およびキャッシュ先判定部126として機能し得る。
リード制御部121は、NAND型フラッシュメモリ5からリードコマンドに応じたユーザデータを読み出す。リード制御部121は、読み出したユーザデータが内部RAM14またはHMB221にキャッシュされるように、コントローラ4内の各部を制御し得る。つまり、リード制御部121は、内部RAM14およびHMB221を、読み出したユーザデータを蓄積するリードバッファとして使用し得る。
ライト制御部122は、ライトコマンドを受け付けたことに伴ってホスト2から受信されたユーザデータを、NAND型フラッシュメモリ5に書き込む。ライト制御部122は、NAND型フラッシュメモリ5に書き込むべきユーザデータが内部RAM14またはHMB221にキャッシュされるように、コントローラ4内の各部を制御し得る。つまり、ライト制御部122は、内部RAM14およびHMB221を、書き込むべきユーザデータを蓄積するライトバッファとして使用し得る。
GC制御部123も、ライト制御部122と同様にして、NAND型フラッシュメモリ5への書き込みを行い得る。上述したように、NAND型フラッシュメモリ5は複数のブロックを含んでいる。ブロックは、有効データを格納しているブロック(アクティブブロック)と、有効データを格納しておらず、イレーズ処理を経ることで新たなデータの書き込みに利用可能なブロック(フリーブロック)とに大別される。GC制御部123は、1つ以上のフリーブロックから1つのブロックを選択し、その1つのブロックに対してイレーズ処理を行う。そして、GC制御部123は当該ブロックを書き込み先ブロックとして割り当てる。書き込み先ブロックは有効データを格納し得る。
GC制御部123は、有効データを格納しているアクティブブロック群からガベージコレクションソースブロック(GCソースブロック)を選択する。そして、GC制御部123は、このGCソースブロック内の有効データを、フリーブロック群から書き込み先ブロックとして確保されたガベージコレクションデスティネーションブロック(GCデスティネーションブロック)に書き込む。その際、GC制御部123は、GCソースブロック内の有効データが内部RAM14またはHMB221にキャッシュされるように、コントローラ4内の各部を制御し得る。つまり、GC制御部123は内部RAM14およびHMB221を、有効データを蓄積するGCバッファとして使用し得る。
HMB機能制御部124はHMB機能の有効化/無効化を制御する。上述したように、インタフェース処理部111は、HMB機能の有効化を示すリクエストと、HMB221として使用されるべき領域を指定したアドレス情報とを、CPU12に送出する。このアドレス情報は、ホストRAM22内の1つ以上のアドレス範囲を示すリストを含む。
HMB機能制御部124は、HMB機能の有効化を示すリクエストに応じてHMB機能を有効化する。そして、HMB機能制御部124は、ホストRAM22内の1つ以上のアドレス範囲を示すリストのアドレス情報を用いて、HMB機能が有効化されてから無効化されるまでの間、その1つ以上のアドレス範囲にそれぞれ対応する1つ以上の領域をHMB221として管理する。
HMB機能制御部124はHMB221を管理するために、例えばHMB領域管理情報を用いる。HMB領域管理情報は、例えば内部RAM14にキャッシュされる。また、HMB領域管理情報は、HMB221内にキャッシュされているデータを識別するための情報(例えば論理アドレス)と、当該データがキャッシュされているHMB221内の位置(領域)を示す情報とを含み得る。
また上述したように、インタフェース処理部111はHMB機能の無効化を示すリクエストをCPU12に送出する。HMB機能制御部124は、HMB機能の無効化を示すリクエストに応じてHMB機能を無効化する。
キー生成部125は、HMB221にキャッシュされるべきデータにパリティを付加し、HMB221から読み出されたデータを付加されたパリティで検証するためのキー値を生成する。キー生成部125は、例えばHMB機能が有効化される毎にキー値を生成し、これまで使用されていたキー値を新たに生成されたキー値で更新する。更新前のキー値と更新後のキー値とは異なる値であり、各々が例えば乱数を含む。キー生成部125は、生成されたキー値を、ホストインタフェース11内のパリティジェネレータ112とパリティチェッカ113とに通知することにより、パリティの付加と、パリティによるデータの検証とに用いられるキー値を更新する。
キャッシュ先判定部126は、あるデータがキャッシュされるべきRAMを決定する。より具体的には、キャッシュ先判定部126は、あるデータがホストRAM22(すなわちSSD3の外部)にキャッシュ可能であるか否かを判定する。キャッシュ先判定部126は、例えば、GCやシステムデータ更新処理等のSSD3の内部処理のためにNAND型フラッシュメモリ5からデータが読み出されたときに、読み出されたデータがホストRAM22にキャッシュ可能であるか否かを判定し、キャッシュ先(ここではHMB221と内部RAM14のいずれか)を選択する。なお、キャッシュ可能なデータとは、あるRAMにキャッシュすることが許可されたデータである。
キャッシュ先判定部126は、あるデータがホストRAM22にキャッシュ可能なデータであるならば、当該データのキャッシュ先をホストRAM22内のHMB221に決定する。一方、キャッシュ先判定部126は、あるデータがホストRAM22にキャッシュ可能なデータでないならば、当該データのキャッシュ先を内部RAM14に決定する。キャッシュ先判定部126は、あるデータがホストRAM22にキャッシュ可能なデータであるか否かを、データの種別や内容等に基づく特定の条件に従って判定し得る。この特定の条件については図6を参照して後述する。
キャッシュ先判定部126は、キャッシュ先が内部RAM14に決定されたデータ(すなわちホストRAM22にキャッシュ可能でないデータ)が内部RAM14にキャッシュされるように、コントローラ4内の各部を制御する。キャッシュ先判定部126は、キャッシュ先がHMB221に決定されたデータ(すなわちホストRAM22にキャッシュ可能であるデータ)が、ホストインタフェース11を介してHMB221にキャッシュされるように、コントローラ4内の各部を制御する。
図2は、HMB機能を有するSSD3によって、内部RAM14とホストRAM22に設けられるHMB221とがキャッシュ領域として用いられる例を示す。図2に示す例では、SSD3は、NAND型フラッシュメモリ5から読み出したデータを、内部RAM14と、ホストRAM22に設けられるHMB221とにキャッシュしている。内部RAM14だけでなく、ホストRAM22内のHMB221もキャッシュ領域(すなわち作業用RAM)として利用できるので、SSD3は、内部RAM14の容量を大きくすることなく処理を高速化できる。
図3は、SSD3内のNAND型フラッシュメモリ5に、SSD3のシステムデータと、ホスト2を使用する複数のユーザそれぞれのユーザデータとが書き込まれる例を示す。システムデータは、管理データ、暗号化/復号等に用いられるセキュリティキー、FW、論理物理アドレス変換テーブル、動作ログ等のデータを含む。ユーザデータは、例えば、ホスト2を使用する2人のユーザAおよびBのそれぞれのユーザデータである。
図3に示す例のように、NAND型フラッシュメモリ5から読み出されたデータが内部RAM14だけにキャッシュされるケースでは、ホスト2は内部RAM14に直接アクセスできない。したがって、内部RAM14にキャッシュされたデータに対して、ホスト2が不正にアクセスすることは困難であり、データが漏洩する可能性は低い。
これに対して、図4は、NAND型フラッシュメモリ5から読み出されたデータが内部RAM14だけでなく、ホストRAM22内のHMB221にもキャッシュされるケースを示す。このケースでは、HMB221がコントローラ4の外部のRAM領域であるので、ホスト2は内部RAM14にアクセスするより容易に、HMB221にアクセスできる。そのため、HMB221にキャッシュされたデータが不正にアクセスされ、外部へ漏洩する可能性がHMB221を使用しない場合と比べて高くなる。
また、例えばGCソースブロック内の有効データがHMB221にキャッシュされるならば、あるユーザがホスト2を使用している間に、GCソースブロック内の有効データとして別のユーザのユーザデータがHMB221にキャッシュされる可能性がある。つまり、HMB221の利用が、その別のユーザのユーザデータの漏洩を招く脆弱性となり得る。
例えば、ユーザAはHMB221にキャッシュされたデータにアクセスするための操作を行うことにより、ユーザAのユーザデータだけでなく、SSD3のシステムデータやユーザBのユーザデータも取得できる可能性がある。この場合、ユーザAは、アクセス権限のないSSD3のシステムデータやユーザBのユーザデータに不正にアクセスできることになる。同様に、ユーザBも、アクセス権限のないSSD3のシステムデータやユーザAのユーザデータに不正にアクセスできる可能性がある。
図5は、コントローラ4が、NAND型フラッシュメモリ5から読み出されたデータを外部にキャッシュ可能であるかどうかを判定する外部キャッシュ可否判定を行う例を示す。
本実施形態では、コントローラ4は、図5に示すように、NAND型フラッシュメモリ5から読み出されたデータがSSD3の外部(例えばHMB221)にキャッシュ可能なデータであるかどうかを判定する。そして、コントローラ4は、外部にキャッシュ可能であると判定したデータをHMB221にキャッシュする一方、外部にキャッシュ可能でないと判定したデータを内部RAM14にキャッシュする。これによりコントローラ4は、例えばセキュリティの観点から優先順位(あるいは優先度)が低いと判断したデータをHMB221にキャッシュし、優先順位が高いと判断したデータを内部RAM14にキャッシュする。したがって、コントローラ4は、HMB221を利用する場合に、セキュリティの観点から判断した優先順位に応じてデータのキャッシュ先を切り替えることができる。
図6は、NAND型フラッシュメモリ5から読み出されたデータがSSD3の外部にキャッシュ可能なデータであるかどうかを判定するための条件の一例を示す。条件は、データの種別や、暗号化の有無、セキュリティ上の優先順位等のようなデータの内容に基づいて規定される。図6に示す条件の一例では、読み出されたデータの種別と内容とに基づいて以下のように規定されている。
(1)種別がユーザデータであって、内容が暗号化されているデータは、外部キャッシュ可である。
(2)種別がユーザデータであって、内容が暗号化されていないデータは、外部キャッシュ不可である。
(3)種別がシステムデータであって、内容がセキュリティキーであるデータは、外部キャッシュ不可である。
(4)種別がシステムデータであって、内容がFWであるデータは、外部キャッシュ不可である。
(5)種別がシステムデータであって、内容が論理物理アドレス変換テーブルであるデータは、外部キャッシュ可である。
(6)種別がシステムデータであって、内容がSSD3の動作ログであるデータは、外部キャッシュ可である。
上記の条件は、NAND型フラッシュメモリ5から読み出されたデータの内、暗号化されていないユーザデータ、セキュリティキーを含むデータ、およびCPU12による動作を制御するFWのデータを、セキュリティ上の優先順位が高いデータであるとするポリシーに基づき、これらデータが外部キャッシュ不可と判定されることを規定している。上記の条件はさらに、暗号化されたユーザデータ、およびSSD3の内部ログのデータを、セキュリティ上の優先順位が低いデータであるとするポリシーに基づき、これらデータが外部キャッシュ可と判定されることを規定している。
キャッシュ先判定部126は、例えばNAND型フラッシュメモリ5からデータが読み出されたとき、上記のような条件に従って、そのデータの外部キャッシュの可否を判定する。これにより、セキュリティ上の優先順位が高いデータがSSD3の外部(ここではHMB221)にキャッシュされないので、そのようなデータの漏洩を防止できると共に、HMB221が利用されることによる処理の高速化も実現できる。
上記の条件は一例であって、情報処理システム1の用途や管理者およびユーザの指示等に応じて種々の条件が設定され得る。例えば、種別がユーザデータであるデータは、暗号化されているか否かに関わらず、外部キャッシュ不可としてもよい。
また、HMB221にキャッシュされたデータは内部RAM14にキャッシュされたデータよりも破損や改竄の可能性が大きい。HMB221にキャッシュされたデータが破損または改竄された場合、そのデータを利用するSSD3では、誤動作、データの消失、起動不良等の不具合が発生し得る。
このようなデータの破損や改竄に対処するために、SSD3は、例えばデータにパリティを付加する方法を用いる。データとパリティとをHMB221にキャッシュしておくことにより、SSD3は、パリティを用いてデータにエラーが発生しているかどうかを判別できる。
しかし、固定の計算方法で生成されたパリティが用いられるならば、(1)あるSSDが、当該SSDと同様の構成を備える別のSSDによってHMB221にキャッシュされたデータを読み出した場合に、あるいは(2)あるSSDが、当該SSDによってHMB221に過去にキャッシュされ、既に無効であるデータを読み出した場合に、そのデータを、エラーが発生しているデータとして判別できない。別のSSDによってキャッシュされたデータや既に無効であるデータは、当該データを読み出したSSDに不具合を発生させ得るので、エラーが発生しているデータとして判別される。
図7を参照して、エラーが発生しているデータを、固定の計算方法で生成されたパリティで判別できない具体的なケースを例示する。図7は、情報処理システム1が第1SSD3Aと第2SSD3Bとを使用してRAIDを構築するケースを示している。
このケースでは、同様の構成を有する第1SSD3Aと第2SSD3Bとを用いてRAIDが構築された場合に、図示しないRAIDコントローラの不具合によって、第1SSD3Aが使用するHMB221Aと第2SSD3Bが使用するHMB221Bとが、ホストRAM22内の重複した領域に設けられている。
本来、HMB221A,221Bは、各SSD3A,3Bが排他的に使用する領域であるため、第1SSD3Aが使用するHMB221Aと第2SSD3Bが使用するHMB221Bとは、それぞれ独立した領域として割り当てられなければならない。図7に示すように、誤って、第1SSD3Aが使用するHMB221Aと第2SSD3Bが使用するHMB221Bとが重なって配置された場合、例えば第1SSD3AがHMB221Aにキャッシュしたデータ81を、第2SSD3Bが別のデータ82で上書きしてしまう可能性がある。したがって、第1SSD3Aによってキャッシュされたデータが破損し得る。
そして、第1SSD3Aが、第2SSD3Bによって上書きされたデータ82を読み出した場合、第1SSD3Aは、読み出されたデータ82が第1SSD3Aによってキャッシュされたデータ81とは異なっているとしても、データ82に付加されたパリティを用いたデータ82の検証では、このデータ82をエラーが発生しているデータとして判別することはできない。これは、2つのSSD3A,3Bが同一の計算方法でパリティを生成していて、データ82に正当なパリティが付加されているためである。
図8は、本実施形態において、SSD3内のコントローラ4がキー値64を利用したパリティの付加と検証とを行う例を示す。コントローラ4は、パリティジェネレータ112を用いて、HMB221にキャッシュするべきデータに対して、キー値64を用いてパリティを付加する。そして、コントローラ4は、パリティが付加されたデータをHMB221にキャッシュする。キー値64は、例えば、乱数を含むユニークな値である。コントローラ4は、SSD3のHMB機能が有効化される毎にキー値64を更新する。
なお、パリティが付加される対象のデータは、NAND型フラッシュメモリ5から読み出され、HMB221にキャッシュ可能と判断されたリードデータに限らず、ホストインタフェース11を介してHMB221にキャッシュされるデータであれば、いずれのデータであってもよい。コントローラ4は、例えば、ホスト2からのライトコマンドを受け付けたことに伴って受信されたユーザデータ(すなわちNAND型フラッシュメモリ5に書き込むべきユーザデータ)に対して、キー値64を用いてパリティを付加し、パリティが付加されたユーザデータをHMB221にキャッシュしてもよい。
また、HMB221にキャッシュされたデータを読み出した場合、コントローラ4は、パリティチェッカ113で、キー値64と読み出したデータに付加されたパリティとを用いて、読み出したデータにエラーが発生しているか否かを検証する。検証の結果、読み出したデータにエラーが発生していなければ、コントローラ4はそのデータを用いた処理を続行する。一方、読み出されたデータにエラーが発生していたならば、コントローラ4は当該データを破棄する。
図9は、データに付加されるパリティの生成方法の一例を示す。データは、HMB221にキャッシュされるべきデータであり、パリティで保護されるべきデータである。以下では、このデータを保護データとも称する。
図9では、4バイトのキー値64を用いて、128バイトの保護データ60に対して4バイトのパリティ65が生成される場合について例示する。キー値64、保護データ60、およびパリティ65のデータサイズは一例であって、SSD3の構成、用途等に応じて適宜変更可能である。
パリティジェネレータ112は、保護データ60を4バイト単位で分割することにより得られた32個の保護データ部601〜632と、キー値64とを用いてパリティ65を生成する。キー値64は、例えばCPU12(より詳しくはキー生成部125)によって生成され、パリティジェネレータ112およびパリティチェッカ113に保存されている。パリティジェネレータ112は、32個の保護データ部601〜632とキー値64の排他的論理和(XOR)演算結果をパリティ65として生成する。
図10は、HMB221にキャッシュされる保護データ60とパリティ65との例を示す。コントローラ4は、ストレージインタフェース23を介して、保護データ60と生成されたパリティ65とをHMB221にキャッシュする。
また図11は、HMB221から128バイトの保護データ70と4バイトのパリティ75とが読み出された場合に、保護データ70にエラーが発生しているか否かの検証が行われる例を示す。パリティチェッカ113は、読み出された保護データ70を4バイト単位で分割することにより得られた32個の保護データ部701〜732と、読み出されたパリティ75と、キー値64とを用いて、保護データ70にエラーが発生しているか否かを検証する。
パリティチェッカ113は、32個の保護データ部701〜732とパリティ75とキー値64のXOR演算結果を検証値とする。検証値が0であるならば、パリティチェッカ113は保護データにエラーが発生していないと判断する。一方、検証値が0でないならば、パリティチェッカ113は保護データにエラーが発生していると判断する。
以上により、本実施形態に係るSSD3は、キー値64とパリティ75とを用いて、HMB221から読み出された保護データ70に破損や改竄のようなエラーが発生しているか否かを検証できる。読み出された保護データ70にエラーが発生している場合、例えば、その保護データ70がNAND型フラッシュメモリ5から読み出され、HMB221にキャッシュされたデータであるならば、SSD3は、対応するオリジナルのデータをNAND型フラッシュメモリ5から再度読み出す。これにより、エラーが発生している保護データ70を用いた処理が行われることによるSSD3の誤動作等を回避できる。
なお、SSD3は、保護データにパリティを付加し、パリティを用いて保護データを検証するための方法として、上述したXOR演算を用いる方法に限らず、HMB機能が有効化される毎に更新される値(例えばキー値64)が反映されたパリティを用いる方法であれば、いずれの方法を用いてもよい。
上述したように、CPU12は、キー値64を、例えばHMB機能が有効化される毎に更新し、パリティジェネレータ112およびパリティチェッカ113に通知する。
より具体的には、ホストRAM22内の第1HMB(すなわち第1HMBを示すホストRAM22内のアドレス範囲)を指定してHMB機能が有効化されるとき、CPU12は第1キー値を生成する。そして、HMB機能が有効化されてから無効化されるまでの第1有効化期間において、パリティジェネレータ112は、第1キー値を用いて第1HMBにキャッシュされるべき第1データに第1パリティを付加する。また、この第1有効化期間において第1HMBから第1データと第1パリティとが読み出された場合、パリティチェッカ113は、第1キー値と読み出された第1パリティとを用いて、読み出された第1データを検証する。
第1有効化期間が終了した後、ホストRAM22内の第2HMBを指定してHMB機能が有効化されるとき、CPU12は第1キー値とは異なる第2キー値を生成する。つまり、CPU12はSSD3で用いられるキー値を第1キー値から第2キー値に更新する。そして、第1有効化期間が終了した後にHMB機能が有効化されてから無効化されるまでの第2有効化期間において、パリティジェネレータ112は、第2キー値を用いて第2HMBにキャッシュされるべき第2データに第2パリティを付加する。また、この第2有効化期間において第2HMBから第2データと第2パリティとが読み出された場合、パリティチェッカ113は、第2キー値と読み出された第2パリティとを用いて、読み出された第2データを検証する。
なお、第2HMBとして用いられるホストRAM22内の領域は、第1HMBと同一の領域であってもよいし、異なる領域であってもよい。また、第2HMBとして用いられるホストRAM22内の領域が、第1HMBと同一の領域であっても、SSD3が当該領域にキャッシュされていたデータを継続して利用することはない。
同様に、第2有効化期間が終了した後、ホストRAM22内の第3HMBを指定してHMB機能が有効化されるとき、CPU12は第1キー値および第2キー値とは異なる第3キー値を生成する。つまり、CPU12はSSD3で用いられるキー値を第2キー値から第3キー値に更新する。そして、第2有効化期間が終了した後にHMB機能が有効化されてから無効化されるまでの第3有効化期間において、パリティジェネレータ112は、第3キー値を用いて第3HMBにキャッシュされるべき第3データに第3パリティを付加する。また、この第3有効化期間において第3HMBから第3データと第3パリティとが読み出された場合、パリティチェッカ113は、第3キー値と読み出された第3パリティとを用いて、読み出された第3データを検証する。
なお、第3HMBとして用いられるホストRAM22内の領域は、第2HMBと同一の領域であってもよいし、異なる領域であってもよい。また、第3HMBとして用いられるホストRAM22内の領域が、第2HMBと同一の領域であっても、SSD3が当該領域にキャッシュされていたデータを継続して利用することはない。
このように、SSD3は、キー値64として、HMB機能が有効化されてから無効化されるまでの有効化期間毎にユニークな値を用いる。これにより、パリティ付加のための同様の構成を有する別のSSDによってキャッシュされたデータや、このSSD3が過去にキャッシュし、既に無効であるデータ(すなわち現在の有効化期間よりも前の有効化期間にキャッシュしたデータ)をHMB221から読み出した場合に、SSD3はそのデータをエラーが発生しているデータとして判別できる。これは、読み出されたデータに、現在のキー値とは異なるキー値を用いてパリティが付加されているためである。したがって、上記構成を有するSSD3は、HMB221が用いられる際のセキュリティを強化できる。
HMB機能の有効化が、すなわちキー値の更新が、ホスト2を使用するユーザの切り替え、電源オン、省電力モードから通常モードへの移行等のタイミングで行われることにより、古い無効なデータのような誤ったデータが読み込まれることによるSSD3の不具合を防止できる。さらに、キー値がランダムに生成されることにより、複数のSSDにHMBとしてそれぞれ割り当てられた複数の領域がホストRAM22内で重複していたとしても、それぞれのSSDで異なるキー値が使用されているので、別のSSDによってキャッシュされたデータのような誤ったデータが読み込まれることも防止できる。
なお、SSD3はメモリリターン(MR)機能を有していてもよい。MR機能は、例えばNVMe規格で定められたHMB機能の1つであり、HMB機能が無効化された後にHMB機能が有効化された場合、その無効化された時のHMB221を継続して使用するための機能である。つまり、MR機能により、SSD3は、その無効化された時にHMB221にキャッシュされていたデータを継続して使用できる。例えばホスト2が電源オン状態である間に、電源オン状態であったSSD3が省電力等のために電源オフされた場合に、再び電源オンされたSSD3は、MR機能を利用して、電源オフされる前に使用していたHMB221を継続して使用できる。SSD3がMR機能を有している場合、HMB機能が有効化されるときに、MR機能の有効または無効がさらに指定され得る。
MR機能の有効は、有効化期間(すなわちHMB機能が有効化されてから無効化されるまでの期間)のうち直近の有効化期間が終了した時のHMB221の内容が継続して使用されることを示す。MR機能の有効が指定された場合には、直近の有効化期間が終了した時点のHMB221にキャッシュされていたデータが継続して使用できるように、CPU12は、直近の有効化期間に用いられていたキー値64を更新せず、そのまま使用する。またこの場合、直近の有効化期間に使用されていたHMB221と、後続する新たな有効化期間に使用されるHMB221とは、例えばホストRAM22内の同一の領域(すなわちホストRAM22内の同一のアドレス範囲の領域)である。
一方、MR機能の無効は、直近の有効化期間が終了した時のHMB221が使用されないことを示す。MR機能の無効が指定された場合には、CPU12はキー値64を更新する。これにより、例えば直近の有効化期間のHMB221にキャッシュされていたデータが誤って読み出されたとしても、パリティチェッカ113は、そのデータを、エラーが発生しているデータとして判別できる。またこの場合、直近の有効化期間に使用されていたHMB221と、後続する新たな有効化期間に使用されるHMB221とは、例えばホストRAM22内の同一の領域であってもよいし、異なる領域であってもよい。
より具体的には、CPU12は、ホストRAM22内の第1HMBとMR機能の無効とを指定してHMB機能が有効化されるとき、第1キー値を生成し、パリティジェネレータ112およびパリティチェッカ113に保存する。そして、HMB機能が有効化されてから無効化されるまでの第1有効化期間において、パリティジェネレータ112は、第1キー値を用いて、第1HMBにキャッシュされるべき第1データに第1パリティを付加する。また、この第1有効化期間において、第1HMBから第1データと第1パリティとが読み出された場合、パリティチェッカ113は、第1キー値と読み出された第1パリティとを用いて、読み出された第1データを検証する。
第1有効化期間が終了した後、ホストRAM22内の第1HMBとMR機能の有効とを指定してHMB機能が有効化されるとき、CPU12は第1キー値を更新せず、コントローラ4内の各部は第1有効化期間が終了した時の第1HMBを継続して使用する。そして、第1有効化期間が終了した後にHMB機能が有効化されてから無効化されるまでの第2有効化期間において、パリティジェネレータ112は、第1キー値を用いて、第1HMBに新たにキャッシュされるべき第2データに第2パリティを付加する。また、第2有効化期間において第1HMBから第2データと第2パリティとが読み出された場合、パリティチェッカ113は、第1キー値と読み出された第2パリティとを用いて、読み出された第2データを検証する。さらに、第2有効化期間において第1HMBから第1データと第1パリティとが読み出された場合(すなわち第1有効化期間に第1HMBにキャッシュされた第1データと第1パリティとが読み出された場合)、パリティチェッカ113は、第1キー値と読み出された第1パリティとを用いて、読み出された第1データを検証する。第1キー値が用いられるので、第1有効化期間内に第1HMBにキャッシュされていた第1データは、エラーが発生しているデータとして判別されることなく、継続して利用される。
次いで、第2有効化期間が終了した後、ホストRAM22内の第2HMBとMR機能の無効とを指定してHMB機能が有効化されるとき、CPU12は第1キー値とは異なる第2キー値を生成する。つまり、CPU12はSSD3で用いられるキー値を第1キー値から第2キー値に更新する。そして、第2有効化期間が終了した後にHMB機能が有効化されてから無効化されるまでの第3有効化期間において、パリティジェネレータ112は、第2キー値を用いて第2HMBにキャッシュされるべき第3データに第3パリティを付加する。また、第3有効化期間において第2HMBから第3データと第3パリティとが読み出された場合、パリティチェッカ113は、第2キー値と読み出された第3パリティとを用いて、読み出された第3データを検証する。
なお、第2HMBとして用いられるホストRAM22内の領域は、第1HMBと同一の領域であってもよいし、異なる領域であってもよい。また、第2HMBとして用いられるホストRAM22内の領域が、第1HMBと同一の領域であっても、SSD3が当該領域にキャッシュされていたデータを継続して利用することはない。
このように、MR機能の有効を指定してHMB機能が有効化される場合には、SSD3は、キー値64を更新せずに、直近の有効化期間の終了時におけるHMB221を継続して利用することもできる。MR機能が有効である場合には、直近の有効化期間の終了時においてHMB221にキャッシュされていたデータを、新たなHMB221に再度キャッシュするための動作が不要になる。
図12および図13を参照して、HMB機能を有効化する処理シーケンスの例について説明する。ホスト2がSSD3に対してHMB機能の有効化を要求する際に用いられるSet Featuresコマンドは、HMB機能の有効化を示す値(Enable Host Memory(EHM)=1)と、MR機能の無効を示す値(MR=0)または有効を示す値(MR=1)とを含む。ホスト2は、Set Featuresコマンドと共に、ホストRAM22内の、HMB221として用いられる1つ以上の領域を示すリストのアドレス情報も、SSD3に提供し得る。
まず、図12はSet FeaturesコマンドにMR機能の無効を示す値が含まれる場合の例を示す。
ホスト2は、HMB機能の有効化を示す値とMR機能の無効を示す値とを含むSet FeaturesコマンドをSSD3に送信する(A1)。
SSD3のホストインタフェース11は、Set Featuresコマンドに応じてHMB機能を有効化するリクエストをCPU12に送出する(A2)。リクエストにはMR機能の無効が示されている。
CPU12は、MR機能の無効が示されたリクエストに応じてキー値を生成し(A3)、生成されたキー値をホストインタフェース11に通知する(A4)。ホストインタフェース11では、パリティジェネレータ112およびパリティチェッカ113が通知されたキー値を保存する(A5)。なお、パリティジェネレータ112およびパリティチェッカ113に既にキー値が保存されている場合、パリティジェネレータ112およびパリティチェッカ113は、そのキー値を、通知されたキー値で更新する。
次いで、CPU12はHMB機能を有効化する(A6)。そして、CPU12はHMB機能の有効化が完了したことをホストインタフェース11に通知する(A7)。ホストインタフェース11は、この通知に応じて、ホスト2にSet Featuresコマンドに基づく処理の完了を通知してもよい(A8)。
以上のように、HMB機能の有効化とMR機能の無効とが指定されたSet Featuresコマンドに応じて、SSD3はキー値を生成し、HMB機能を有効化する。なお、SSD3がMR機能を有していない場合には、MR機能に関するパラメータを含まないSet Featuresコマンドに応じて、SSD3は、キー値を生成し、HMB機能を有効化する上述の処理シーケンスを行ってもよい。
一方、図13はSet FeaturesコマンドにMR機能の有効を示す値が含まれる場合の例を示す。
ホスト2は、HMB機能の有効化を示す値とMR機能の有効を示す値とを含むSet FeaturesコマンドをSSD3に送信する(B1)。
SSD3のホストインタフェース11は、Set Featuresコマンドに応じてHMB機能を有効化するリクエストをCPU12に送出する(B2)。リクエストにはMR機能の有効が示されている。
CPU12は、MR機能の有効が示されたリクエストに応じてHMB機能を有効化する(B3)。CPU12は、MR機能の有効が示されたリクエストを受けた場合にはキー値を生成せず、したがって、ホストインタフェース11内のパリティジェネレータ112およびパリティチェッカ113は保存されているキー値を更新しない。CPU12はHMB機能の有効化が完了したことをホストインタフェース11に通知する(B4)。
ホストインタフェース11は、この通知に応じて、ホスト2にSet Featuresコマンドに基づく処理の完了を通知してもよい(B5)。
以上のように、SSD3は、HMB機能の有効化とMR機能の有効とが指定されたSet Featuresコマンドに応じて、キー値を生成することなくHMB機能を有効化する。
図14のフローチャートを参照して、コントローラ4によって実行されるHMB有効化処理の手順の例を説明する。ここでは、HMB有効化処理が開始される時点において、SSD3のHMB機能が無効化されていることを前提とする。
まず、コントローラ4は、ホスト2からHMB機能の有効化が要求されたか否かを判定する(ステップS11)。HMB機能の有効化が要求されていない場合(ステップS11のNO)、ステップS11に戻り、HMB機能の有効化が要求されたか否かが再度判定される。
HMB機能の有効化が要求された場合(ステップS11のYES)、コントローラ4は、当該要求においてMR機能の有効と無効のいずれが指定されているかを判定する(ステップS12)。MR機能の有効が指定されている場合(ステップS12の有効)、コントローラ4はHMB機能を有効化し(ステップS16)、処理を終了する。
一方、MR機能の無効が指定されている場合(ステップS12の無効)、コントローラ4は、HMB221を管理するためのHMB領域管理情報を初期化し(ステップS13)、キー値を生成する(ステップS14)。キー値は、HMB221にキャッシュされるデータにパリティを付加するために用いられる。そして、コントローラ4は、パリティジェネレータ112に保存されているキー値を、生成されたキー値で更新し(ステップS15)、パリティチェッカ113に保存されているキー値を、生成されたキー値で更新する(ステップS16)。そして、コントローラ4はHMB機能を有効化し(ステップS17)、処理を終了する。
以上の処理により、コントローラ4は、ホスト2による要求に応じてHMB機能を有効化できる。その際、MR機能の無効が指定されている場合には、コントローラ4はHMB機能が有効化される毎に、HMB領域管理情報を初期化し、且つ新たなキー値を生成する。したがって、コントローラ4は、初期化された状態のHMB221にキャッシュすべきデータに対して、新たなキー値を用いてパリティを付加できる。
また、MR機能の有効が指定される場合には、コントローラ4は、HMB領域管理情報を初期化することなく、且つ新たなキー値を生成することなく、HMB機能を有効化できる。パリティジェネレータ112およびパリティチェッカ113に保存されているキー値が更新されないので、コントローラ4は、このHMB有効化処理が開始される前に使用されていたHMB221内のデータを継続して使用できる。
なお、MR機能の有効/無効が指定されない場合には、ステップS12が省略され、コントローラ4は、ステップS13、ステップS14、ステップS15、ステップS16、ステップS17を順に実行し、処理を終了する。
図15のフローチャートを参照して、コントローラ4によって実行されるキャッシュ制御処理の手順の例を説明する。ここでは、図14を参照して上述したHMB有効化処理によってHMB機能が既に有効化されていることを前提とする。
まず、コントローラ4はHMB221にキャッシュすべきデータがあるか否かを判定する(ステップS21)。キャッシュすべきデータは、パリティによって保護されるべき保護データである。コントローラ4は、HMB221にキャッシュすべきデータが無い場合(ステップS21のNO)、ステップS21に戻り、HMB221にキャッシュすべきデータがあるか否かを再度判定する。つまり、ステップS21に戻ることにより、コントローラ4は、キャッシュすべきデータが無い状態となった後に、新たに、キャッシュすべきデータが発生したか否かを判定する。
HMB221にキャッシュすべきデータがある場合(ステップS21のYES)、コントローラ4は、HMB221内に、データをキャッシュするための空き領域があるか否かを判定する(ステップS22)。コントローラ4は、空き領域の有無の判定に、例えばHMB領域管理情報を用いる。空き領域がない場合(ステップS22のNO)、コントローラ4は、特定の規則に従って、HMB221内に空き領域を作成する(ステップS23)。この特定の規則は、例えばleast recently used(LRU)方式である。コントローラ4はLRU方式に従う場合、最後にアクセスされてからの経過時間が最も長いデータを追い出し対象として選択する。空き領域がある場合には(ステップS22のYES)、コントローラ4はステップS23をスキップする。
次いで、コントローラ4は、キー値64を用いて、キャッシュすべきデータに付加されるパリティを生成する(ステップS24)。そして、コントローラ4は、パリティが付加されたデータをHMB221内の空き領域にキャッシュし(ステップS25)、HMB領域管理情報を更新し、処理を終了する。
以上により、コントローラ4は、パリティが付加されたデータをHMB221にキャッシュできる。
また図16および図17のフローチャートを参照して、キャッシュ制御処理の手順の別の例を示す。このキャッシュ制御処理は、NAND型フラッシュメモリ5から読み出されたデータを、内部RAM14とホストRAM22内のHMB221のいずれにキャッシュするかを選択するためのHMBキャッシュ可否判定の手順をさらに含んでいる。
図16に示すように、コントローラ4は、NAND型フラッシュメモリ5からデータが読み出されたか否かを判定する(ステップS301)。読み出されるデータは、ホスト2からのリードコマンドで指定されたLBAに対応するユーザデータ、GCソースブロック内の有効データ(すなわちユーザデータ)、各種のシステムデータ等である。NAND型フラッシュメモリ5からデータが読み出されていない場合(ステップS301のNO)、ステップS301に戻り、NAND型フラッシュメモリ5からデータが読み出されたか否かが再度判定される。
NAND型フラッシュメモリ5からデータが読み出された場合(ステップS301のYES)、コントローラ4はHMB機能が有効化されている状態であるか否かを判定する(ステップS302)。HMB機能が有効化されている状態である場合(ステップS302のYES)、コントローラ4は、読み出されたデータ(以下、リードデータとも称する)がHMB221にキャッシュ可能なデータであるか否かを判定するHMBキャッシュ可否判定処理を行う(ステップS303)。HMBキャッシュ可否判定処理の具体的な手順については、図17のフローチャートを参照して後述する。
HMBキャッシュ可否判定処理の結果に基づいて、リードデータがHMB221にキャッシュ可能である場合(ステップS304のYES)に行われるステップS305からステップS308までの手順は、図15のフローチャートを参照して上述したステップS22からステップS25までの手順と同様である。
一方、HMB機能が有効化されていない場合(ステップS302のNO)、またはリードデータがHMB221にキャッシュ可能なデータではない場合(ステップS304のNO)、コントローラ4は、内部RAM14内にリードデータをキャッシュするための空き領域があるか否かを判定する(ステップS309)。空き領域がない場合(ステップS309のNO)、コントローラ4は、特定の規則(例えばLRU方式)に従って、内部RAM14内に空き領域を作成する(ステップS310)。そして、コントローラ4はリードデータを内部RAM14内の空き領域にキャッシュし(ステップS311)、処理を終了する。
以上により、コントローラ4は、HMB221にキャッシュ可能なリードデータがHMB221にキャッシュされ、HMB221にキャッシュ不可能なリードデータが内部RAM14にキャッシュされるように制御できる。
図17のフローチャートは、コントローラ4によって実行されるHMBキャッシュ可否判定処理の手順の一例を示す。HMBキャッシュ可否判定処理は、図16のフローチャートを参照して上述したステップS303に相当する。ここでは、図6に示したHMBキャッシュ可否の判定条件に基づくHMBキャッシュ可否判定処理を例示する。
まず、コントローラ4は、NAND型フラッシュメモリ5から読み出されたデータ(リードデータ)の種別が、ユーザデータとSSD3のシステムデータのいずれであるかを判別する(ステップS41)。リードデータがユーザデータである場合(ステップS41のユーザデータ)、コントローラ4は、リードデータが暗号化されているか否かを判定する(ステップS42)。
リードデータが暗号化されている場合(ステップS42のYES)、コントローラ4は、リードデータをHMB221にキャッシュ可能なデータであると判断し(ステップS43)、処理を終了する。一方、リードデータが暗号化されていない場合(ステップS42のNO)、コントローラ4は、リードデータをHMB221にキャッシュ不可能なデータであると判断し(ステップS45)、処理を終了する。
また、リードデータがSSD3のシステムデータである場合(ステップS41のSSDのシステムデータ)、コントローラ4は、リードデータがセキュリティ上の優先順位が高いデータであるか否かを判定する(ステップS44)。セキュリティ上の優先順位が高いデータは、例えばセキュリティキーやFWである。また、セキュリティ上の優先順位が低いデータは、例えば論理物理アドレス変換テーブルや内部ログである。
リードデータがセキュリティ上の優先順位が低いデータである場合(ステップS44のNO)、コントローラ4は、リードデータをHMB221にキャッシュ可能なデータであると判断し(ステップS43)、処理を終了する。一方、リードデータがセキュリティ上の優先順位が高いデータである場合(ステップS44のYES)、コントローラ4は、リードデータをHMB221にキャッシュ不可能なデータであると判断し(ステップS45)、処理を終了する。
以上により、コントローラ4は、リードデータがHMB221にキャッシュ可能なデータであるか否かを判別できる。
図18のフローチャートは、コントローラ4によって実行されるパリティ検証処理の手順の例を示す。
まず、コントローラ4は、HMB221から保護データおよびパリティが読み出されたか否かを判定する(ステップS51)。コントローラ4は、例えばHMB221からストレージインタフェース23を介してホストインタフェース11に保護データおよびパリティが転送された場合に、HMB221から保護データおよびパリティが読み出されたと判断する。HMB221から保護データおよびパリティが読み出されていない場合(ステップS51のNO)、ステップS51に戻り、HMB221から保護データおよびパリティが読み出されたか否かが再度判定される。
HMB221から保護データおよびパリティが読み出された場合(ステップS51のYES)、コントローラ4は、パリティチェッカ113に保存されているキー値と、読み出されたパリティとを用いて、読み出された保護データにエラーが発生しているか否かを検証する(ステップS52)。保護データにエラーが発生しているか否かの検証方法については、図11を参照して上述した通りである。
この検証結果に基づいて、保護データにエラーが発生していない場合(ステップS53のNO)、コントローラ4は、保護データを、ホストインタフェース11を介してコントローラ4内の各部(例えばCPU12)に送出する(ステップS54)。コントローラ4内の各部は、送出された保護データを用いた各種の処理を実行する。
一方、保護データにエラーが発生している場合(ステップS53のYES)、コントローラ4は、コントローラ4内の各部にエラーを通知する(ステップS55)。コントローラ4はこの保護データを破棄する。また、コントローラ4は、この通知に応じて、例えばエラーが発生している保護データに対応するデータをNAND型フラッシュメモリ5から再度読み出し、HMB221または内部RAM14内にキャッシュしてもよい。
以上により、コントローラ4は、HMB221に格納されている保護データを、キー値と、保護データに付加されたパリティとを用いて検証できる。
以上説明したように、本実施形態によれば、HMBが用いられる際のセキュリティを強化できる。SSD3のコントローラ4は、ホスト2に設けられたホストRAM22の第1領域をNAND型フラッシュメモリ5に格納されるデータの一時記憶用メモリとして使用でき、NAND型フラッシュメモリ5を制御する。コントローラ4は、NAND型フラッシュメモリ5に格納された第1データとキー値とを使用して第1パリティを生成し、第1データと生成された第1パリティとを第1領域へ格納する。コントローラ4は、第1領域に格納された第1データを読み出す場合に、第1データと第1パリティとを読み出して、読み出した第1パリティとキー値とを使用して読み出した第1データを検証する。
以上により、コントローラ4は、ホストRAM22内の第1領域に格納する第1データに、キー値を用いてパリティを付加する。そのため、第1領域(すなわちHMB)に格納した第1データに破損や改竄等が生じた場合に、コントローラ4は、第1データにエラーが発生したことを、キー値および第1パリティを用いて検出できる。したがって、このような構成を有するコントローラ4は、HMBが用いられる際のSSD3のセキュリティを強化できる。
本実施形態に記載された様々な機能の各々は、回路(処理回路)によって実現されてもよい。処理回路の例には、中央処理装置(CPU)のような、プログラムされたプロセッサが含まれる。このプロセッサは、メモリに格納されたコンピュータプログラム(命令群)を実行することによって、記載された機能それぞれを実行する。このプロセッサは、電気回路を含むマイクロプロセッサであってもよい。処理回路の例には、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、マイクロコントローラ、コントローラ、他の電気回路部品も含まれる。本実施形態に記載されたCPU以外の他のコンポーネントの各々もまた処理回路によって実現されてもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…情報処理システム、2…ホスト、3…SSD、4…コントローラ、5…NAND型フラッシュメモリ、11…ホストインタフェース、12…CPU、13…NANDインタフェース、14…内部RAM、15…エンコーダ/デコーダ、16…周辺回路群、111…インタフェース処理部、112…パリティジェネレータ、113…パリティチェッカ、121…リード制御部、122…ライト制御部、123…GC制御部、124…HMB機能制御部、125…キー生成部、126…キャッシュ先判定部、21…CPU、22…ホストRAM、23…ストレージインタフェース、221…ホストメモリバッファ。

Claims (13)

  1. 第1揮発性メモリを備えるホストと接続可能であって、
    不揮発性メモリと、
    前記第1揮発性メモリの第1領域を前記不揮発性メモリに格納されるデータの一時記憶用メモリとして使用でき、前記不揮発性メモリを制御するコントローラと、
    を具備し、
    前記コントローラは、
    前記不揮発性メモリに格納された第1データとキー値とを使用して第1パリティを生成し、前記第1データと前記生成された第1パリティとを前記第1領域へ格納し、
    前記第1領域に格納された前記第1データを読み出す場合に、前記第1データと前記第1パリティとを読み出して、前記読み出された第1パリティと前記キー値とを使用して前記読み出した第1データを検証するように構成されるメモリシステム。
  2. 前記コントローラは、前記ホストから受信した前記第1領域を前記コントローラが使用することを有効化する指令に対して前記キー値として第1キー値を生成するように構成される請求項1に記載のメモリシステム。
  3. 前記コントローラは、前記第1領域を前記コントローラが使用することを無効化した後に、前記ホストから受信した前記第1揮発性メモリに含まれる第2領域を前記コントローラが使用することを有効化する指令に対して前記キー値として前記第1キー値と異なる第2キー値を生成する請求項2に記載のメモリシステム。
  4. 前記コントローラは、第2データと前記第2キー値を使用して第2パリティを生成し、前記第2データと前記生成された第2パリティとを前記第2領域へ格納し、前記第2領域に格納された前記第2データを読み出す場合に、前記第2データと前記第2パリティとを読み出して、前記読み出された第2パリティと前記第2キー値とを使用して前記読み出した第2データを検証する請求項3に記載のメモリシステム。
  5. 前記コントローラは、前記第1領域を前記コントローラが使用することを無効化した後に、前記ホストから受信した前記第1領域と前記第1領域に格納されているデータとを継続して使用することとを指定して前記第1領域を前記コントローラが使用することを有効化する指令に対して前記キー値として前記第1キー値を使用する請求項2に記載のメモリシステム。
  6. 前記コントローラは、第3データと前記第1キー値を使用して第3パリティを生成し、前記第3データと前記生成された第3パリティとを前記第1領域へ格納し、前記第1領域に格納された前記第3データを読み出す場合に、前記第3データと前記第3パリティとを読み出して、前記読み出された第3パリティと前記第1キー値とを使用して前記読み出した第3データを検証する請求項5に記載のメモリシステム。
  7. 前記コントローラは、前記読み出された第1データにエラーが発生している場合、前記第1データを破棄するように構成される請求項2に記載のメモリシステム。
  8. 前記第1キー値と前記第2キー値の各々は乱数を含む請求項3または請求項4に記載のメモリシステム。
  9. 前記第1キー値は乱数を含む請求項2、請求項5、および請求項6のいずれか1つに記載のメモリシステム。
  10. 第2揮発性メモリをさらに備え、
    前記コントローラは、
    前記不揮発性メモリから読み出した第4データを前記第1揮発性メモリに格納可能でないと判定する場合、前記第4データを前記第2揮発性メモリに格納する請求項1に記載のメモリシステム。
  11. 前記第4データは、暗号化されていないユーザデータ、前記メモリシステムで用いられるセキュリティキーのデータ、または前記メモリシステムで用いられるファームウェアのデータの少なくとも1つを含む請求項10に記載のメモリシステム。
  12. 前記第1領域を前記コントローラが使用することを有効化する指令は、NVM Express規格に準拠する指令である請求項2乃至請求項8のいずれか1つに記載のメモリシステム。
  13. 前記第1領域を前記コントローラが使用することを有効化する指令は、UFS規格に準拠する指令である請求項2乃至請求項8のいずれか1つに記載のメモリシステム。
JP2019044960A 2019-03-12 2019-03-12 メモリシステム Pending JP2020149222A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019044960A JP2020149222A (ja) 2019-03-12 2019-03-12 メモリシステム
US16/549,506 US11568074B2 (en) 2019-03-12 2019-08-23 Memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019044960A JP2020149222A (ja) 2019-03-12 2019-03-12 メモリシステム

Publications (1)

Publication Number Publication Date
JP2020149222A true JP2020149222A (ja) 2020-09-17

Family

ID=72423634

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019044960A Pending JP2020149222A (ja) 2019-03-12 2019-03-12 メモリシステム

Country Status (2)

Country Link
US (1) US11568074B2 (ja)
JP (1) JP2020149222A (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021043708A (ja) * 2019-09-11 2021-03-18 キオクシア株式会社 メモリシステム
CN112379830B (zh) * 2020-11-03 2022-07-26 成都佰维存储科技有限公司 有效数据位图的创建方法、装置、存储介质及电子设备
CN114117484B (zh) * 2021-11-22 2023-03-17 绿晶半导体科技(北京)有限公司 提高主机缓存数据安全的装置和缓存数据读取和写入方法及装置
CN117348821B (zh) * 2023-12-04 2024-03-22 合肥康芯威存储技术有限公司 一种存储器、电子设备及开机数据读取方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9507722B2 (en) 2014-06-05 2016-11-29 Sandisk Technologies Llc Methods, systems, and computer readable media for solid state drive caching across a host bus
US10061377B2 (en) 2015-02-06 2018-08-28 Toshiba Memory Corporation Memory device and information processing device
KR102430561B1 (ko) * 2015-09-11 2022-08-09 삼성전자주식회사 듀얼 포트 디램을 포함하는 메모리 모듈
US10073732B2 (en) * 2016-03-04 2018-09-11 Samsung Electronics Co., Ltd. Object storage system managing error-correction-code-related data in key-value mapping information
US10567006B2 (en) * 2016-08-05 2020-02-18 Sandisk Technologies Llc Data relocation
KR20180043451A (ko) 2016-10-19 2018-04-30 삼성전자주식회사 컴퓨팅 시스템 및 그것의 동작 방법
KR20180054394A (ko) 2016-11-15 2018-05-24 삼성전자주식회사 호스트 메모리 버퍼(Host Memory Buffer)를 관리하기 위한 NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하는 솔리드 스테이트 저장 장치(solid state storage device), 이를 포함하는 시스템 및 호스트의 호스트 메모리 버퍼를 관리하는 방법

Also Published As

Publication number Publication date
US11568074B2 (en) 2023-01-31
US20200293676A1 (en) 2020-09-17

Similar Documents

Publication Publication Date Title
US11847243B2 (en) Memory system
US9753868B2 (en) Memory management device and non-transitory computer readable storage medium
US9753867B2 (en) Memory management device and non-transitory computer readable storage medium
US11568074B2 (en) Memory system
US10191688B2 (en) Memory system and information processing system
US11362830B2 (en) Memory system
JP6298268B2 (ja) セキュリティ管理ユニットとそれを含むホストコントローラインターフェース及びその動作方法、並びにホストコントローラインターフェースを含むコンピュータシステム
US8589669B2 (en) Data protecting method, memory controller and memory storage device
US11100011B2 (en) Flash translation layer with hierarchical security
US20140129761A1 (en) Non-volatile memory device and host device configured to communication with the same
US20150370726A1 (en) Memory management device and non-transitory computer readable storage medium
TWI773858B (zh) 利用儲存寫入命令中之寫入串流屬性
JP6460940B2 (ja) 記憶装置およびデータ退避方法
US20180260151A1 (en) Data Storage Device and Operating Method Therefor
JP2021118370A (ja) メモリシステム、情報処理装置、および情報処理システム
KR20200140534A (ko) 비휘발성 랜덤 액세스 메모리를 이용한 세그먼트 클리닝 방법 및 이를 구현하기 위한 메모리 관리 장치
US20220171715A1 (en) Electronic device
US11726924B2 (en) Memory system for data encryption
JP2019023936A (ja) 記憶装置及びメモリシステム
TWI775284B (zh) 記憶系統、其控制方法及資訊處理系統
Cui et al. Towards trustable storage using SSDs with proprietary FTL
US20230418760A1 (en) Memory system and method for controlling the same
US20240086336A1 (en) Storage device deleting encryption key, method of operating the same, and method of operating electronic device including the same