(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024001761
(43)【公開日】2024-01-10
(54)【発明の名称】メモリシステムおよび制御方法
(51)【国際特許分類】
G06F 12/00 20060101AFI20231227BHJP
G06F 12/02 20060101ALI20231227BHJP
G06F 3/06 20060101ALI20231227BHJP
【FI】
G06F12/00 560B
G06F12/00 597U
G06F12/02 570A
G06F3/06 306K
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022100631
(22)【出願日】2022-06-22
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】原 郁夫
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA12
5B160AA14
5B160AA20
5B160AB26
5B160CB01
(57)【要約】 (修正有)
【課題】ホストとメモリシステムとの間の通信が途絶した場合でも、正常な動作を継続するメモリシステムを提供する。
【解決手段】ホストデバイス2とメモリシステム3を含む情報処理システム1において、コントローラ4は、第1メモリであるNANDメモリ5に対してデータを書き込むことに応じて管理情報の一部を更新し、更新した一部に対応する、管理情報の更新差分を第2メモリであるRAM14に記憶し、第2メモリに記憶された更新差分がある量になると、第2メモリに記憶された更新差分を、ホストメモリバッファの管理情報に反映すると共に第2メモリで維持し、ホストとメモリシステムとの間の通信途絶が発生した場合、第2メモリに記憶された更新差分及び第1メモリに記憶された管理情報を用いて、第1メモリに記憶されたデータを読み出す。
【選択図】
図5
【特許請求の範囲】
【請求項1】
ホストメモリバッファを有しているホストに接続可能なメモリシステムにおいて、
不揮発性の第1メモリと、
第2メモリと、
前記第1メモリ及び前記第2メモリと接続されるコントローラと、
を備え、
前記コントローラは、
前記ホストから指定される論理アドレスと前記第1メモリの記憶位置に対応する物理アドレスとを対応付けて管理する管理情報を前記第1メモリに記憶し、
前記第1メモリが記憶するデータを読み出す際に前記第1メモリから前記管理情報のうち前記読み出すデータに関する情報を読み出して前記ホストメモリバッファに記憶し、
前記第1メモリに対してデータを書き込むことに応じて前記管理情報の一部を更新し、
前記更新した一部に対応する、前記管理情報の更新差分を前記第2メモリに記憶し、
前記第2メモリに記憶された前記更新差分がある量になると、前記第2メモリに記憶された前記更新差分を、前記ホストメモリバッファの前記管理情報に反映すると共に前記第2メモリで維持し、
前記ホストと前記メモリシステムとの間の通信途絶が発生した場合、前記第2メモリに記憶された前記更新差分及び前記第1メモリに記憶された前記管理情報を用いて、前記第1メモリに記憶されたデータを読み出す、
メモリシステム。
【請求項2】
第3メモリを更に備え、
前記コントローラは、
前記第2メモリに前記更新差分を記憶するのに必要な領域がない場合、前記更新差分を、前記第3メモリに記憶し、
前記第2メモリ及び前記第3メモリに前記更新差分を記憶するのに必要な領域がない場合、前記第1メモリに記憶されている前記管理情報に、前記第2メモリ及び前記第3メモリに記憶されている前記管理情報の更新差分を反映する、
請求項1に記載のメモリシステム。
【請求項3】
前記コントローラは、
前記第2メモリに前記更新差分を記憶するのに必要な領域がない場合、前記第2メモリに記憶されている前記更新差分を、前記第1メモリに記憶するとともに、前記第2メモリに記憶された前記更新差分を無効化する、
請求項1に記載のメモリシステム。
【請求項4】
前記コントローラは、
前記ホストメモリバッファに記憶された前記管理情報に対して未反映の前記更新差分が前記ある量になると、前記第1メモリに記憶されている前記管理情報のうち、前記未反映の前記更新差分に対応する前記管理情報を前記ホストメモリバッファに転送し、
前記未反映の前記更新差分を前記ホストメモリバッファに転送して、前記ホストメモリバッファに転送した前記管理情報に書き込む、
請求項2または3に記載のメモリシステム。
【請求項5】
前記コントローラは、前記ホストメモリバッファの前記管理情報を更新後、かつ、前記第1メモリに前記管理情報を記憶した後に、前記第2メモリの前記更新差分を無効化する、
請求項1に記載のメモリシステム。
【請求項6】
前記コントローラは、
前記通信途絶が発生した場合、前記ホストメモリバッファの前記管理情報を破棄する、
請求項1に記載のメモリシステム。
【請求項7】
前記コントローラは、
前記通信途絶が発生した場合、前記ホストメモリバッファの前記管理情報を破棄し、
前記通信途絶が解消した後、前記第1メモリからリードした前記管理情報の更新差分を前記第2メモリに記憶し、
前記第1メモリからリードした前記更新差分に対応する、前記第1メモリからリードした前記管理情報を前記ホストメモリバッファに記憶し、
前記ホストメモリバッファに記憶した前記管理情報に、前記第2メモリに記憶した前記更新差分を反映した管理情報を、前記第1メモリに記憶する、
請求項3に記載のメモリシステム。
【請求項8】
不揮発性の第1メモリと、
第2メモリと、
を備え、ホストメモリバッファを有しているホストに接続可能なメモリシステムにおける制御方法であって、
前記ホストから指定される論理アドレスと前記第1メモリの記憶位置に対応する物理アドレスとを対応付けて管理する管理情報を前記第1メモリに記憶し、
前記第1メモリが記憶するデータを読み出す際に前記第1メモリから前記管理情報のうち前記読み出すデータに関する情報を読み出して前記ホストメモリバッファに記憶し、
前記第1メモリに対してデータを書き込むことに応じて前記管理情報の一部を更新し、
前記更新した一部に対応する、前記管理情報の更新差分を前記第2メモリに記憶し、
前記第2メモリに記憶された前記更新差分がある量になると、前記第2メモリに記憶された前記更新差分を、前記ホストメモリバッファの前記管理情報に反映すると共に前記第2メモリで維持し、
前記ホストと前記メモリシステムとの間の通信途絶が発生した場合、前記第2メモリに記憶された前記更新差分及び前記第1メモリに記憶された前記管理情報を用いて、前記第1メモリに記憶されたデータを読み出す、
制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステムおよび制御方法に関する。
【背景技術】
【0002】
従来、不揮発性メモリを有するSSD(Solid State Drive)などのメモリシステムが知られている。SSDに搭載される不揮発性メモリの一例としては、NAND型フラッシュメモリ(以下、NANDメモリという)が知られている。メモリシステムは、ホストに接続可能に構成される。
【0003】
メモリシステムは、管理情報の一部である論理物理アドレス変換情報として機能するルックアップテーブル(LUT)を管理する。LUTは、不揮発性メモリにデータをライトすることに応じて更新される。メモリシステムは、ホストが備えるホストメモリバッファ(HMB)を用いてLUTを更新することがある。ホストとメモリシステムとが接続された状態でホストとメモリシステムとの間の通信が途絶した場合、メモリシステムは、HMBにアクセスできなくなる。HMBのLUTにアクセスできなくなると、メモリシステムは、HMBのLUTを不揮発性メモリに保存することができなくなる。これにより、HMBのLUTが失われる可能性がある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許出願公開第2017/0220253号明細書
【特許文献2】米国特許出願公開第2020/0034298号明細書
【特許文献3】米国特許出願公開第2019/0056886号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
一つの実施形態は、ホストとメモリシステムとの間の通信が途絶した場合でも、正常な動作を継続することができるメモリシステムおよび制御方法を提供する。
【課題を解決するための手段】
【0006】
一つの実施形態は、ホストメモリバッファを有しているホストに接続可能なメモリシステムにおいて、不揮発性の第1メモリと、第2メモリと、前記第1メモリ及び前記第2メモリと接続されるコントローラと、を備える。前記コントローラは、前記ホストから指定される論理アドレスと前記第1メモリの記憶位置に対応する物理アドレスとを対応付けて管理する管理情報を前記第1メモリに記憶し、前記第1メモリが記憶するデータを読み出す際に前記第1メモリから前記管理情報のうち前記読み出すデータに関する情報を読み出して前記ホストメモリバッファに記憶する。前記コントローラは、前記第1メモリに対してデータを書き込むことに応じて前記管理情報の一部を更新し、前記更新した一部に対応する、前記管理情報の更新差分を前記第2メモリに記憶する。前記コントローラは、前記第2メモリに記憶された前記更新差分がある量になると、前記第2メモリに記憶された前記更新差分を、前記ホストメモリバッファの前記管理情報に反映すると共に前記第2メモリで維持する。前記コントローラは、前記ホストと前記メモリシステムとの間の通信途絶が発生した場合、前記第2メモリに記憶された前記更新差分及び前記第1メモリに記憶された前記管理情報を用いて、前記第1メモリに記憶されたデータを読み出す。
【図面の簡単な説明】
【0007】
【
図1】第1の実施形態にかかるメモリシステムを含む情報処理システムの構成を示すブロック図。
【
図5】第1の実施形態にかかるメモリシステムおよびホストにおけるLUTおよびLUT更新差分の記憶例を示す説明図。
【
図6】コントローラのCPUが発揮する機能を示す機能ブロック図。
【
図7】第1の実施形態にかかるメモリシステムにおけるWrite処理の際に通信途絶が発生した場合を含むデータ管理の一例を示す図。
【
図8】第1の実施形態にかかるメモリシステムにおけるWrite処理の流れを示すフローチャート。
【
図9】第1の実施形態にかかるメモリシステムにおけるHMBアクセス処理の流れを示すフローチャート。
【
図10】第2の実施形態にかかるメモリシステムおよびホストにおけるLUTおよびLUT更新差分の記憶例を示す説明図。
【
図11】NANDメモリに不揮発化されたLUT更新差分を示す図。
【
図12】第2の実施形態にかかるメモリシステムにおけるWrite処理の際に通信途絶が発生した場合を含むデータ管理の一例を示す図。
【
図13】第2の実施形態にかかるメモリシステムにおけるWrite処理の流れを示すフローチャート。
【
図14】第2の実施形態にかかるメモリシステムにおけるHMBアクセス処理の流れを示すフローチャート。
【発明を実施するための形態】
【0008】
以下に添付図面を参照して、実施形態にかかるメモリシステムおよび制御方法を詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
【0009】
(第1の実施形態)
図1は、第1の実施形態にかかるメモリシステム3を含む情報処理システム1の構成を示すブロック図である。
【0010】
情報処理システム1は、ホストデバイス2(以下、ホストとも称する)とメモリシステム3とを含む。ホスト2は、例えば情報処理装置である。ホスト2は、大量且つ多様なデータをメモリシステム3に保存するストレージサーバであってもよいし、パーソナルコンピュータであってもよい。
【0011】
図1に示すように、記憶装置であるメモリシステム3は、第1メモリであるNAND型フラッシュメモリ(以下、NANDメモリという)5のような不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。メモリシステム3は、単にストレージデバイスとも称される。
【0012】
図1に示すように、本実施形態のメモリシステム3は、例えば、コントローラ4およびNANDメモリ5を備えるソリッドステートドライブ(SSD)として実現されている。以下では、メモリシステム(すなわちストレージデバイス)3がSSDとして実現される場合について例示するが、ハードディスクドライブ(HDD)として実現されてもよい。あるいは、メモリシステム3は、コントローラ4とNANDメモリ5とが1つのパッケージとして構成されるストレージデバイスであってもよい。
【0013】
メモリシステム3は、ホスト2として機能する情報処理装置の記憶装置として使用される。メモリシステム3は、ホスト2に内蔵されてもよいし、ホスト2にケーブルまたはネットワークを介して接続されてもよい。
【0014】
ホスト2とメモリシステム3とを相互接続するためのインタフェースとしては、SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCI Express(PCIe)TM、EthernetTM、Fibre channel、Universal Flash Storage(UFS)等が使用される。
【0015】
ホスト2は、ホストRAM22を有している。ホストRAM22の一例は、ダイナミックRAM(DRAM)である。DRAMは、NANDメモリ5と比較して、高速にアクセスできるメモリである。
【0016】
メモリシステム3のコントローラ4は、System-on-a-CHIP(SoC)のような回路によって実現される。コントローラ4は、NANDメモリ5を制御する。
【0017】
コントローラ4は、第2メモリであるRAM14、第3メモリであるRAM15を備える。RAM14,15は、概略的には、コントローラ4によって用いられるデータを一時的に記憶するための一時記憶領域である。なお、本実施形態においては、RAM14,15は、SRAMであるが、DRAMであってもよい。なお、RAM14,15は、コントローラ4の外部に設けられてもよい。その場合、コントローラ4は、コントローラ4内に設けられるインタフェースを介してRAM14,15にアクセスする。
【0018】
コントローラ4は、RAM14にバッファ領域202を確保する。バッファ領域202は、NANDメモリ5に書き込まれるデータや、NANDメモリ5から読み出されたデータを一時的に格納するための領域である。また、コントローラ4は、RAM15に、キャッシュ領域201を確保する。キャッシュ領域201は、例えば、セットアソシアティブ方式(N-way)のキャッシュ領域として確保される。キャッシュ領域201は、論理物理アドレス変換テーブルとして機能するルックアップテーブル(LUT)を一時的に記憶するための領域である。LUTは、論理アドレス(例えば論理ブロックアドレス(LBA))それぞれとNANDメモリ5の物理アドレス(PBA)それぞれとの間のマッピングを管理する。コントローラ4は、NANDメモリ5に対するアクセス(例えば、書き込みや消去)に応じて、LUTを更新する。コントローラ4は、LUTの更新に伴って、後述するLUT更新差分を生成する。コントローラ4は、キャッシュ領域201及びバッファ領域202に、上述のデータとは異なる他のデータを記憶することがある。他のデータは、例えばLUT更新差分を含む。
【0019】
RAM14,15は、バッファ領域202やキャッシュ領域201に加えて、セキュリティキー(例えばユーザデータを暗号化および復号するための暗号化/復号キー)、CPU12によって実行される制御プログラムであるファームウェア(FW)、メモリシステム3の動作ログ等の、メモリシステム3による処理に用いられる各種のデータの格納領域を備えていてもよい。なお、ユーザデータは、ホスト2からメモリシステム3へ書き込みが指示されたデータであり、ホスト2からの書き込み要求(例えばライトコマンド)で指定されたデータである。メモリシステム3は、ホスト2からの書き込み要求を受け付けたことに伴って、ホスト2から、その書き込み要求に関連付けられたユーザデータを受信する。
【0020】
なお、RAM14,15は、必ずしも別体である必要はなく、キャッシュ領域201とバッファ領域202とが管理上分かれていれば一体であってもよい。
【0021】
コントローラ4はさらに、ホストメモリバッファ(HMB:Host Memory Buffer)機能をサポートしている。例えば、メモリシステム3は、NVM Express(NVMe)TM規格に準拠したHMB機能をサポートする。HMB機能は、コントローラ4が、ホストRAM22に割り当てられた少なくとも一部の領域を、例えばLUTを記憶する一時記憶領域として排他的に使用するための機能である。コントローラ4は、HMB機能により、ホストRAM22の一部の領域を排他的に使用することができる。
【0022】
なお、HMB機能として、メモリアーキテクチャであるUnified Memory Architecture(UMA)が適用されてもよい。この場合、メモリシステム3は、ホスト2とUFS規格に準拠して通信し、UFS規格の周辺規格であるUnified Memory Extension(UME)に基づいてホストRAM22内の一部領域に対してHMB機能を実行することができる。
【0023】
このように、コントローラ4がHMB機能をサポートする場合、ホスト2とメモリシステム3とを相互接続するためのインタフェースとして、HMB機能を備えるNVMe、またはUMEによりHMB機能を備えるUFSが使用される。しかしながら、HMB機能を備えることが許容されるのであれば、ホスト2とメモリシステム3とを相互接続するためのインタフェースとして、SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCI Express(PCIe)TM、EthernetTM、Fibre channel等が用いられてもよい。
【0024】
コントローラ4に対して割り当てられた、ホストRAM22の領域は、ホストメモリバッファ(HMB)221とも称される。コントローラ4は、HMB機能が有効化(イネーブル)されてから無効化(ディセーブル)されるまでの間、ホストRAM22のHMB221を、上述したRAM14,15と同様に、バッファ領域、キャッシュ領域、各種のデータの格納領域等が設けられた一時記憶領域として利用できる。例えば、コントローラ4は、NANDメモリ5から読み出すデータに対応するLUTをNANDメモリ5から読み出し、このLUTをHMB221に記憶させる。なお、例えば、メモリシステム3が起動された時点では、HMB機能は無効化されており、ホスト2からの要求に応じて有効化される。
【0025】
コントローラ4は、ホスト2から、HMB機能の有効化を要求するコマンドと共に、ホストRAM22内の1つ以上のアドレス範囲を示すアドレス情報を受信する。コントローラ4は、コマンド及びアドレス情報に応じてHMB機能が有効化されてから無効化されるまでの間、その1つ以上のアドレス範囲にそれぞれ対応する1つ以上の領域をHMB221として利用する。
【0026】
なお以下では、説明を分かりやすくするために、RAM14,15またはHMB221へのデータの格納(すなわち一時記憶)を、キャッシュ、バッファ等のその用途に関わらず、「キャッシュする」と称することがある。また、RAM14,15およびHMB221内の領域を、その用途に関わらず、「キャッシュ領域」として説明することがある。
【0027】
NANDメモリ5は、複数のブロックを含む。各ブロックは、複数のページを含む。1つのブロックは、最小の消去単位として機能する。ブロックは、「消去ブロック」、または「物理ブロック」と称されることもある。各ページは、同一ワード線に接続された複数のメモリセルを含む。1つのページは、データ書き込み動作およびデータ読み出し動作の単位である。なお、ワード線をデータ書き込み動作およびデータ読み出し動作の単位としてもよい。
【0028】
また、コントローラ4は、Toggle DDR、Open NAND Flash Interface(ONFI)等のインタフェース規格に対応するNANDインタフェース13を介して、NANDメモリ5に電気的に接続されている。NANDインタフェース13は、NANDメモリ5を制御するように構成されたNAND制御回路として機能する。NANDインタフェース13は、例えばNAND信号の制御やコマンドの発行を行う。
【0029】
NANDインタフェース13は、複数のチャネル(Ch)を介して、NANDメモリ5内の複数のNANDメモリチップにそれぞれ接続されていてもよい。複数のNANDメモリチップが並列に駆動されることにより、NANDメモリ5に対するアクセスを広帯域化することができる。
【0030】
コントローラ4は、NANDメモリ5を制御するように構成されたメモリコントローラとして機能する。
【0031】
コントローラ4は、NANDメモリ5のデータ管理およびブロック管理を実行するように構成されたフラッシュトランスレーション層(FTL)として機能してもよい。このFTLによって実行されるデータ管理は、(1)論理アドレスそれぞれとNANDメモリ5の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、(2)ページ単位のリード/ライトとブロック単位の消去(イレーズ)動作とを隠蔽するための処理、等を含む。論理アドレスは、メモリシステム3をアドレス指定するためにホスト2によって使用されるアドレスである。以下では、この論理アドレスとして、論理ブロックアドレス(LBA)が使用されることを想定する。
【0032】
コントローラ4は、LBAそれぞれと物理アドレスそれぞれとの間のマッピングの管理を、管理情報であるLUTを用いて実行する。コントローラ4は、LUTを使用して、LBAそれぞれと物理アドレスそれぞれとの間のマッピングをあるサイズの管理単位で管理する。あるLBAに対応する物理アドレスは、このLBAのデータが書き込まれたNANDメモリ5内の物理記憶位置を示す。コントローラ4は、LUTを、メモリシステム3の電源オン時にNANDメモリ5から、RAM14,15に、あるいはホストRAM22のHMB221に、ロードしてもよい。
【0033】
1つのページへのデータ書き込みは、1回のプログラム/イレーズサイクル当たり1回のみ可能である。コントローラ4は、あるLBAに対応するデータを更新する場合、このLBAに対応するデータが現在格納されている第1物理記憶位置ではなく、第1物理記憶位置とは別の第2物理記憶位置に更新データを書き込む。そして、コントローラ4は、このLBAをこの第2物理記憶位置に関連付けるようにLUTを更新することにより、第1物理記憶位置に格納されている更新前のデータを無効化する。
【0034】
ブロック管理は、バッドブロックの管理、ウェアレベリング、ガベージコレクション(GC)、等を含む。
【0035】
FTLとして機能するコントローラ4は、上述したようなアドレス変換、ウェアレベリング、GC等の機能を実現するための処理を実行する。このために、コントローラ4は、LUT、コントローラ4の内部情報を含むシステムデータ、断片化したユーザデータ等の大量のデータを、NANDメモリ5に対してリードおよびライトする処理を行う必要がある。これらのデータを効率的に扱うための方法として、データをNANDメモリ5からより高速な一次メモリ(SRAM、DRAM等)に読み出す方法がある。しかし、大容量の一次メモリをRAM14,15として搭載することは、コントローラ4のコストやサイズを増大させる要因となる。
【0036】
RAM14,15の容量の増大を抑制するための方法として、上述のHMB機能が用いられる。HMB機能により、コントローラ4はホストRAM22の一部を一時記憶領域として利用し、RAM14,15の容量を増大させることなく、FTL等の処理を高速化できる。
【0037】
コントローラ4は、NANDインタフェース13、RAM14,15の他、ホストインタフェース11、CPU12等を備える。これらホストインタフェース11、CPU12、NANDインタフェース13、およびRAM14,15は、バス10を介して相互接続されていてもよい。
【0038】
ホストインタフェース11は、ホスト2との間の信号制御やコマンドの発行を行う回路として機能する。ホストインタフェース11は、NVM Express(NVMe)TMに準拠して動作する。
【0039】
ホスト2は、例えば、ホスト2を使用するユーザが切り替えられたことに応じて、ホスト2が電源オンされたことに応じて、あるいはメモリシステム3が省電力モードから通常モードに移行したことに応じて、HMB機能の有効化を要求するコマンドをメモリシステム3に送信する。このコマンドは、例えばHMB機能の有効化を示すSet Featuresコマンドである。ホスト2は、HMB221として使用される領域を指定するために、このコマンドと共に、例えばホストRAM22の1つ以上のアドレス範囲を示すアドレス情報をメモリシステム3に送信する。
【0040】
またホスト2は、例えば、ホスト2を使用するユーザが切り替えられる前に、ホスト2が電源オフされる前に、あるいはメモリシステム3が通常モードから省電力モードに移行する前に、HMB機能の無効化を要求するコマンドをメモリシステム3に送信する。このコマンドは、例えばHMB機能の無効化を示すSet Featuresコマンドである。メモリシステム3は、消費電力を低減するために通常モードから省電力モードに移行する。メモリシステム3は、例えば、省電力モードに移行する前に、RAM14,15等の揮発性メモリに格納されたデータをNANDメモリ5に書き込んだ後、揮発性メモリおよびNANDメモリ5への電力供給を停止する。省電力モードに移行したメモリシステム3は、一部の素子を除く各部に電力を供給しないので、消費電力を低減できる。
【0041】
ホストインタフェース11は、HMB機能の有効化を要求するコマンドに応じて、HMB機能の有効化を示すリクエストをCPU12に送出する。また、ホストインタフェース11は、HMB221として使用されるホストRAM22の領域を指定したアドレス情報をCPU12に送出する。これにより、CPU12によってHMB機能が有効化され、指定された領域がHMB221として用いられる。
【0042】
また、ホストインタフェース11は、HMB機能の無効化を要求するコマンドに応じて、HMB機能の無効化を示すリクエストをCPU12に送出する。これにより、CPU12によってHMB機能が無効化される。
【0043】
ホストインタフェース11はさらに、HMB機能が有効化されてから無効化されるまでの間、HMB221にキャッシュされるデータをホスト2に送信し、またHMB221にキャッシュされているデータをホスト2から受信する。換言すると、ホストインタフェース11は、HMB機能が有効化されてから無効化されるまでの間、データをHMB221にキャッシュするための処理と、HMB221からデータを読み出すための処理とを行う。なお、キャッシュされるデータとは、コントローラ4がHMB221(あるいはRAM14,15)にキャッシュしようとしているデータであって、実際にはまだキャッシュされていないデータである。
【0044】
CPU12は、ホストインタフェース11およびNANDインタフェース13を制御するように構成されたプロセッサである。CPU12は、図示しないROM等に格納されているFWを実行することによって様々な処理を行う。CPU12は、上述のFTLの処理に加え、ホスト2からの様々なコマンドを処理するためのコマンド処理等を実行することができる。CPU12によって実行される上述のFWは、CPU12の動作を制御する。なお、コントローラ4内の専用ハードウェアが、FTL処理およびコマンド処理の一部または全部を実行してもよい。
【0045】
図2は、LUTの管理単位の構成を示す図である。
図2に示すように、LUTは、NANDメモリ5の物理アドレス(PBA)を格納している。LUTは、論理ブロックアドレス(LBA)とPBAとを対応付けるテーブルである。LBAは、ホスト2からのWriteコマンドやReadコマンド等で指定されるアドレスである。LUTの管理単位のサイズは、例えば512byteである。
図2に示すように、例えば、LBA-0にはPBA#0が対応付けられている。この対応付けには4Byte(0~3Byte)が使用される。従って、128のLBA(LBA-0~LBA-127)を管理するために4Byte×128=512Byteが使用される。コントローラ4は、512Byteのサイズの管理単位で、LUTを管理(例えば更新や複製)する。このように構成されたLUTは、NANDメモリ5、RAM14,15、又はHMB221に記憶される。
【0046】
図3は、LUT更新差分の概略構成を示す図である。
図3に示すように、LUT更新差分は、LBA、PBA、TAGの3つの情報により、論物変換の更新内容を示す情報である。LBAは、ホスト2から指定される論理アドレスである。PBAは、メモリシステム3内の書き込み先の物理アドレスである。TAGは、LBAとPBAとの対応に関する管理情報である。1つのLUT更新差分は、512Byteの管理単位で管理されるLUTと比べて、十分に小さいサイズを有する。このように構成されたLUT更新差分は、RAM14,15に記憶される。
【0047】
図4は、LUT更新差分の詳細構成を示す図である。
図4に示すように、TAGは、SIZE、SEQ、VFの情報を有する。SEQが1の場合、LUT更新差分がある範囲のEntryであることを示し、SEQが0の場合、LUT更新差分が1Entryであることを示す。VFが1の場合、LUT更新差分が有効なEntryであることを示し、VFが0の場合、LUT更新差分が無効なEntryであることを示す。SIZEは、SEQ=1の場合、LUT更新差分の範囲のサイズ(Entry数)を示し、SEQ=0の場合は無効となる。
【0048】
LBAは、LUT更新差分の先頭LBAを示すものである。
【0049】
PBAは、LUT更新差分の先頭PBAを示すものである。PBAは、OFFSET、PL、CHIP、WL、ブロックの情報を有する。OFFSETは、NANDメモリ5のPAGE内の位置を示す。PLは、NANDメモリ5のPlain番号を示す。CHIPは、NANDメモリ5のChip番号を示す。WLは、NANDメモリ5のWord Line番号を示す。BLOCKは、NANDメモリ5のblock番号を示す。
【0050】
図5は、メモリシステム3およびホスト2におけるLUTおよびLUT更新差分の記憶例を示す説明図である。
図5は、RAM14のバッファ領域202およびRAM15のキャッシュ領域201にLUT更新差分が記憶されている状態を示す。
図5に示すように、HMB221は、LUTのキャッシュ領域を含む。このようにHMB221にLUTのキャッシュ領域を設けることで、RAM15のキャッシュ領域201はLUTだけでなくLUT更新差分を格納するために使うことができる。すなわち、LUT更新差分は、RAM14のバッファ領域202に加えてRAM15のキャッシュ領域201を使用して格納される。ここで、HMB221のDirtyLUTは、HMB221のキャッシュ領域において、バッファ領域202およびキャッシュ領域201のLUT更新差分が反映されているがNANDメモリ5に記憶されていないLUTである。また、HMB221のCleanLUTは、HMB221のキャッシュ領域において、バッファ領域202およびキャッシュ領域201LUT更新差分が反映され、且つNANDメモリ5に記憶されたLUTである。すなわち、バッファ領域202およびキャッシュ領域201に記憶されたLUT更新差分は、HMB221のLUT又はNANDメモリ5のLUTに反映され得る。
【0051】
次に、CPU12がFWを実行することによって発揮する機能について説明する。
図6は、コントローラ4のCPU12が発揮する機能を示す機能ブロック図である。
【0052】
CPU12は、例えば、リード制御部121、ライト制御部122、HMB機能制御部123として機能する。
【0053】
リード制御部121は、例えば、NANDメモリ5からリードコマンドに応じたユーザデータを読み出す。リード制御部121は、読み出したユーザデータがRAM14,15またはHMB221にキャッシュされるように、コントローラ4内の各部を制御する。つまり、リード制御部121は、RAM14,15およびHMB221を、読み出したユーザデータを蓄積するリードバッファとして使用する。
【0054】
ライト制御部122は、例えば、ライトコマンドを受け付けたことに伴ってホスト2から受信されたユーザデータを、NANDメモリ5に書き込む。ライト制御部122は、NANDメモリ5に書き込むユーザデータがRAM14,15またはHMB221にキャッシュされるように、コントローラ4内の各部を制御する。つまり、ライト制御部122は、RAM14,15およびHMB221を、書き込むユーザデータを蓄積するライトバッファとして使用する。
【0055】
HMB機能制御部123は、HMB機能の有効化/無効化を制御する。上述したように、ホストインタフェース11は、HMB機能の有効化を示すリクエストと、HMB221として使用される領域を指定したアドレス情報とを、CPU12に送出する。このアドレス情報は、ホストRAM22の1つ以上のアドレス範囲を示すリストを含む。
【0056】
HMB機能制御部123は、HMB機能の有効化を示すリクエストに応じてHMB機能を有効化する。そして、HMB機能制御部123は、ホストRAM22の1つ以上のアドレス範囲を示すアドレス情報を用いて、HMB機能が有効化されてから無効化されるまでの間、その1つ以上のアドレス範囲にそれぞれ対応する1つ以上の領域をHMB221として管理する。
【0057】
HMB機能制御部123は、HMB221を管理するために、例えばHMB領域管理情報を用いる。HMB領域管理情報は、例えばRAM14,15にキャッシュされる。また、HMB領域管理情報は、HMB221内にキャッシュされているデータを識別するための情報(例えば論理アドレス)と、当該データがキャッシュされているHMB221内の位置(領域)を示す情報(例えば物理アドレス)とを含む。
【0058】
また上述したように、ホストインタフェース11は、HMB機能の無効化を示すリクエストをCPU12に送出する。HMB機能制御部123は、HMB機能の無効化を示すリクエストに応じてHMB機能を無効化する。
【0059】
次に、メモリシステム3のコントローラ4による特徴的な処理について説明する。
【0060】
ここで、
図7はWrite処理の際に通信途絶が発生した場合を含むデータ管理の一例を示す図、
図8はWrite処理の流れを示すフローチャートである。
【0061】
まず、Write処理について説明する。Write処理は、主にCPU12によるライト制御部122によって制御される。
【0062】
CPU12は、ホスト2からwriteコマンドを受信するとともに(S1)、ホスト2から受信されたユーザデータである書き込むデータ(Hostデータ)を受信する(S2)。CPU12は、書き込むデータ(Hostデータ)をNANDメモリ5に書き込んで不揮発化する(S3)。これに応じて、CPU12は、LUTを更新する。
【0063】
次に、CPU12は、LUTの更新内容に対応するLUT更新差分をSRAMであるRAM14,15に配置する(S4)。ここで、LUT更新差分をRAM14,15に配置することは、LUT更新差分を、RAM14のバッファ領域202又はRAM15のキャッシュ領域201に記憶することを示す。これ以降の説明でも同様である。
【0064】
ここで、CPU12は、バッファ領域202及びキャッシュ領域201の何れかに空きがあるかを判断する(S5)。ここで、バッファ領域202及びキャッシュ領域201の何れかに空きがあることは、何れかにLUT更新差分を記憶するのに必要な領域があることを示す。
【0065】
CPU12は、バッファ領域202にもキャッシュ領域201にも空きがないと判断した場合(S5のNo)、S9に進み、バッファ領域202及び/又はキャッシュ領域201に記憶されているLUT更新差分を反映したLUTを、NANDメモリ5に不揮発化する。その後、CPU12は、S13に進む。
【0066】
すなわち、本実施形態においては、CPU12は、RAM14のバッファ領域202及びRAM15のキャッシュ領域201がFULL(満杯)になった場合、NANDメモリ5に、バッファ領域202及び/又はキャッシュ領域201に記憶されているLUT更新差分を不揮発化する。具体的には、CPU12は、HMB221に記憶されているLUTに、バッファ領域202及び/又はキャッシュ領域201に記憶されているLUT更新差分を反映し、このLUTをNANDメモリ5に記憶することで、LUT更新差分を不揮発化する。LUTに反映されてNANDメモリ5に不揮発化されたLUT更新差分は、バッファ領域202及び/又はキャッシュ領域201において無効化される。これにより、バッファ領域202及び/又はキャッシュ領域201に空きができる。
【0067】
一方、CPU12は、バッファ領域202及びキャッシュ領域201に空きがあると判断した場合(S5のYes)、S6に進み、RAM14のバッファ領域202に空きがあるかを判断する。
【0068】
CPU12は、RAM14のバッファ領域202に空きがないと判断した場合(S6のNo)、S8に進み、RAM15のキャッシュ領域201にLUT更新差分を配置する。その後、CPU12は、S10に進む。
【0069】
すなわち、本実施形態においては、CPU12は、RAM14におけるバッファ領域202がFULL(満杯)になった場合、RAM15のキャッシュ領域201にLUT更新差分を配置する。
【0070】
一方、CPU12は、RAM14のバッファ領域202に空きがあると判断した場合(S6のYes)、S7に進み、RAM14のバッファ領域202にLUT更新差分を配置する。その後、CPU12は、S10に進む。
【0071】
続いて、CPU12は、S10において、RAM14,15のLUT更新差分のうち、HMB221のLUTに対して未反映のLUT更新差分が一定量未満であるかを判断する。HMB221のLUTに対してRAM14,15のLUT更新差分が未反映とは、HMB221のLUTをRAM14,15のLUT更新差分で更新していないことである。
【0072】
CPU12は、HMB221のLUTに対して未反映のRAM14,15のLUT更新差分が一定量未満である場合(S10のYes)、S13に進む。
【0073】
一方、CPU12は、HMB221のLUTに対して未反映のRAM14,15のLUT更新差分が一定量未満でない場合(S10のNo)、RAM14,15のLUT更新差分に対応し、NANDメモリ5に記憶されているLUTをHMB221に転送する(S11)。加えて、CPU12は、RAM14,15のLUT更新差分をHMB221に転送して、HMB221のLUTにLUT更新差分を書き込む(S12)。これにより、HMB221のLUTに、RAM14,15のLUT更新差分が反映(更新)される。このとき、RAM14,15は、HMB221に転送したLUT更新差分を記憶し続ける。その後、CPU12は、S13に進む。
【0074】
CPU12は、上述したS2~S13について、新たに受信する書き込むデータ(Hostデータ)が無くなるまで(S13のNo)、繰り返す。
【0075】
すなわち、
図7,8に示すように、CPU12は、HMB221のLUTを更新後もRAM14のバッファ領域202およびRAM15のキャッシュ領域201の何れかに空きがある間は、RAM14,15のLUT更新差分を無効化せずに記憶し続ける。
【0076】
次に、上述のWrite処理の際に、通信途絶が発生した場合の処理について、
図7及び
図9を用いて説明する。
【0077】
上述のS11におけるHMB221へのアクセス時に、バスエラー(HMB Bus Error)を検出したものとする。
【0078】
ここで、
図9はHMBアクセス処理の流れを示すフローチャートである。HMBアクセス処理は、主にCPU12によるライト制御部122によって制御される。
【0079】
CPU12は、HMB Bus Error発生後のある時点において、HMB Bus Error発生があったかを確認する(S21)。HMB Bus Error発生があった場合(S21のYes)、HMB221へのアクセスを諦め、LUT更新差分の復元処理を実行する。
【0080】
具体的には、HMB Bus Error発生があった場合(S21のYes)、CPU12は、HMB221上のLUTを破棄する(S22)。その後、HMB Bus Errorが解消し、例えば再Linkup処理が行われた後に、CPU12は、RAM14,15のLUT更新差分とNANDメモリ5のLUTとを用いて論物変換を行う。例えば、CPU12は、RAM14,15のLUT更新差分とNANDメモリ5のLUTとを用いて、NANDメモリ5に記憶されたデータを読み出す処理を実行する。
【0081】
HMB Bus Errorが発生しなかった場合(S21のNo)、CPU12は、
図8で説明したWrite処理を継続する。
【0082】
上述したように、本実施形態においては、HMB221へのアクセス処理の際にHMB Bus Error発生により通信途絶が発生した場合、HMB221へのアクセスを諦め、HMB221のLUTは破棄される。HMB221のLUTを破棄することで、HMB221に記憶されているDirtyLUTが失われ得る。ここで、Dirtyとは、HMB221に記憶されているLUTが、新規Writeコマンドの更新分を反映しているがNANDメモリ5に記憶されていない状態をいう。DirtyLUTであるHMB221のLUTは、NANDメモリ5に記憶されているLUTと、RAM14,15のLUT更新差分とによって復元可能である。従って、DirtyLUTは、ホスト2からのWriteコマンドの受信などに応じた必要なタイミングで復元すれば良い。
【0083】
なお、RAM14,15のLUT更新差分の不揮発化は、HMB Bus Errorの発生時点では必須ではない。例えば、RAM14,15のLUT更新差分は、省電力モードへの移行に伴い、RAM14,15の電源を落とすタイミングでNANDメモリ5に不揮発化されればよい。
【0084】
以上により、第1の実施形態によれば、メモリシステム3の制御上のLUTの最新情報(LUT更新差分)がHMB221上にしかない期間をなくすことができる。HMB221にLUTのキャッシュ領域を設けることで、RAM15のキャッシュ領域201をLUTだけでなくLUT更新差分を格納するために使うことができる。RAM14のバッファ領域202に加えてRAM15のキャッシュ領域201の使用により格納可能なLUT更新差分は大きく増える。
【0085】
このように、第1の実施形態のメモリシステムによれば、ホストメモリバッファにLUTを書き込むとともに、メモリシステムが備えるバッファ領域及び/又はキャッシュ領域のLUT更新差分でホストメモリバッファのLUTを更新した後も、バッファ領域及び/又はキャッシュ領域のLUT更新差分を記憶し続ける。従って、ホストとメモリシステムとの間の通信途絶が発生しても、メモリシステムが備えるバッファ領域及び/又はキャッシュ領域のLUT更新差分とNANDメモリのLUTとによってホストメモリバッファのLUTを復元することができる。これにより、ホストとメモリシステムとの間の通信が途絶した場合でも、故障モードに遷移せずに継続動作が可能になる。また、ホストとメモリシステムとの間の通信途絶が発生してもホストメモリバッファのLUTを復元することができるので、相対的に大容量のホストメモリバッファをLUTのキャッシュとして用いることによるランダムアクセス処理の高速化を図ることができる。
【0086】
(第2の実施形態)
次に、第2の実施形態について説明する。
【0087】
第2の実施形態は、LUT更新差分をNANDメモリ5に不揮発化する点が、第1の実施形態と異なる。以下、第2の実施形態の説明では、第1の実施形態と同一部分の説明については省略又は簡略化し、第1の実施形態と異なる箇所について説明する。
【0088】
図10は、第2の実施形態にかかるメモリシステム3およびホスト2におけるLUTおよびLUT更新差分の記憶例を示す説明図である。
図10に示すように、本実施形態では、RAM14のLUT更新差分の一部は、NANDメモリ5に不揮発化されるとともに、HMB221のLUTに反映される。
図10には、RAM14のLUT更新差分が反映されたHMB221のLUTは、DirtyLUTとして示されている。DirtyLUTは、ある条件に従って、NANDメモリ5に不揮発化される。RAM14において、NANDメモリ5に不揮発化されるとともにHMB221のLUTに反映されたLUT更新差分は、その後に無効化され得る。
図10には、NANDメモリ5に不揮発化され、且つHMB221のLUTに反映されたLUT更新差分は、無効なLUT更新差分として示されている。また、RAM14のLUT更新差分の他の一部は、対応するLUTに反映されずにNANDメモリ5に不揮発化される。
図10において、このLUT更新差分は、有効なLUT更新差分として示されている。
【0089】
図11は、NANDメモリ5に不揮発化されたLUT更新差分を示す図である。
図11に示すように、NANDメモリ5に不揮発化されたLUT更新差分は、LBAとPBAとを対応付けた情報である。LBAは、ホスト2の指定の書き込み先の論理アドレスである。PBAは、メモリシステム3内の書き込み先の物理アドレスである。
図11に示したNANDメモリ5に不揮発化されたLUT更新差分は、
図3に示したRAM14のLUT更新差分に対してTAGを不要とする。
【0090】
次に、メモリシステム3のコントローラ4による特徴的な処理について説明する。
【0091】
ここで、
図12はWrite処理の際に通信途絶が発生した場合を含むデータ管理の一例を示す図、
図13はWrite処理の流れを示すフローチャートである。
【0092】
まず、Write処理について説明する。Write処理は、主にCPU12によるライト制御部122によって制御される。
図13では、
図8で説明した第1の実施形態にかかるWrite処理と同じ処理には同じ符号を付しているので、説明を省略又は簡略化する。
【0093】
CPU12は、ホスト2からwriteコマンドを受信するとともに(S1)、書き込むデータ(Hostデータ)を受信する(S2)。CPU12は、書き込むデータ(Hostデータ)を不揮発化する(S3)。
【0094】
次に、CPU12は、LUT更新差分をRAM14のバッファ領域202に配置する(S4)。ここで、LUT更新差分をバッファ領域202に配置することは、LUT更新差分をバッファ領域202に記憶することを示す。これ以降の説明でも同様である。
【0095】
ここで、CPU12は、RAM14のバッファ領域202に空きがあるかを判断する(S6)。ここで、バッファ領域202に空きがあることは、バッファ領域202にLUT更新差分を記憶するのに必要な領域があることを示す。
【0096】
CPU12は、RAM14のバッファ領域202に空きがないと判断した場合(S6のNo)、HMB221のLUTのうちバッファ領域202の一部のLUT更新差分が反映されたLUTを、NANDメモリ5に不揮発化する(S9)。加えて、CPU12は、バッファ領域202のLUT更新差分のうちHMB221のLUTに反映したLUT更新差分を、NANDメモリ5に不揮発化する(S14)。その後、CPU12は、S13に進む。HMB221のLUTに反映され、且つNANDメモリ5に不揮発化されたLUT更新差分は、バッファ領域202において無効化される。これにより、バッファ領域202に空きができる。
【0097】
すなわち、本実施形態においては、CPU12は、RAM14におけるバッファ領域202がFULLの場合、NANDメモリ5に、バッファ領域202に記憶されているLUT更新差分を不揮発化する。具体的には、CPU12は、HMB221に記憶されているLUTにバッファ領域202に記憶されているLUT更新差分を反映し、このLUTをNANDメモリ5に不揮発化する。また、CPU12は、HMB221のLUTに更新したLUT更新差分を、NANDメモリ5に不揮発化する。なお、CPU12は、HMB221のLUTに更新しなかったLUT更新差分も、NANDメモリ5に不揮発化してもよい。
【0098】
一方、CPU12は、RAM14のバッファ領域202に空きがあると判断した場合(S6のYes)、バッファ領域202にLUT更新差分を配置する(S7)。その後、CPU12は、S10に進む。
図13のS10~S13の処理は、
図8のS10~13の処理と同じである。
【0099】
次に、上述のWrite処理の際に、通信途絶が発生した場合の処理について、
図12及び
図14を用いて説明する。
【0100】
上述のS11におけるHMBアクセス時に、バスエラーを検出したものとする。
【0101】
ここで、
図14はHMBアクセス処理の流れを示すフローチャートである。HMBアクセス処理は、主にCPU12によるライト制御部122によって制御される。
【0102】
CPU12は、HMB Bus Error発生後のある時点において、HMB Bus Error発生があったかを確認する(S21)。HMB Bus Error発生があった場合(S21のYes)、HMB221へのアクセスを諦め、LUT更新差分の復元処理を実行する。
【0103】
具体的には、HMB Bus Error発生があった場合(S21のYes)、CPU12は、HMB221上のLUTを破棄する(S22)。以降においては、HMB Bus Errorが解消した後、例えば再Linkup処理が行われることに応じて、CPU12は、LUT更新差分の復元処理を行う。
【0104】
続いて、CPU12は、NANDメモリ5からRAM14のバッファ領域202にLUT更新差分をリードする(S23)。NANDメモリ5からバッファ領域202にLUT更新差分をリードすることは、NANDメモリ5からリードしたLUT更新差分をバッファ領域202に記憶することと同義である。
【0105】
続いて、CPU12は、NANDメモリ5にLUT更新差分の残りがあるかを確認する(S24)。NANDメモリ5にLUT更新差分の残りがあることは、バッファ領域202にまだ記憶していないLUT更新差分が、NANDメモリ5にまだ残っていることを示す。例えば、NANDメモリ5に記憶されたLUT更新差分を記憶する領域がバッファ領域202にない場合に、NANDメモリ5にLUT更新差分の残りがあり得る。
【0106】
CPU12は、NANDメモリ5にLUT更新差分の残りがない場合(S24のNo)、処理を終了する。
【0107】
一方、CPU12は、NANDメモリ5にLUT更新差分の残りがある場合(S24のYes)、NANDメモリ5からHMB221にLUTをリードする(S25)。NANDメモリ5からHMB221にLUTをリードすることは、NANDメモリ5からリードしたLUTをHMB221に記憶することと同義である。次いで、CPU12は、HMB221のLUTをRAM14のバッファ領域202のLUT更新差分で更新するとともに(S26)、更新したLUTをNANDメモリ5に不揮発化し(S27)、S23に戻る。
【0108】
CPU12は、上述したS23~S27を、LUT更新差分の残りが無くなるまで(S24のNo)繰り返す。なお、S26~S27は、LUTに対して更新するLUT更新差分の数が一定数となった場合に一括して実行してもよい。
【0109】
HMB Bus Errorが発生しなかった場合(S21のNo)、CPU12は、
図13で説明したWrite処理を継続する。
【0110】
上述したように、本実施形態においては、HMB221へのアクセス処理の際にHMB221のLUTを破棄する点は、第1の実施形態と同様である。本実施形態においては、さらに、NANDメモリ5に不揮発化したLUT更新差分がRAM14上に配置しきれないサイズとなる場合、NANDメモリ5のLUTとLUT更新差分とによって、HMB221のDirty LUTを復元してNANDメモリ5に不揮発化する。これにより、LUT更新差分の量を削減することができる。
【0111】
なお、RAM14のバッファ領域202のLUT差分の不揮発化タイミングはメモリシステム3の性能最適化で決めれば良く、RAM14上のLUT更新差分をまとめて不揮発化すれば良い。
【0112】
本実施形態に記載された様々な機能の各々は、回路(処理回路)によって実現されてもよい。処理回路の例には、中央処理装置(CPU)のような、プログラムされたプロセッサが含まれる。このプロセッサは、メモリに格納されたコンピュータプログラム(命令群)を実行することによって、記載された機能それぞれを実行する。このプロセッサは、電気回路を含むマイクロプロセッサであってもよい。処理回路の例には、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、マイクロコントローラ、コントローラ、他の電気回路部品も含まれる。本実施形態に記載されたCPU以外の他のコンポーネントの各々もまた処理回路によって実現されてもよい。
【0113】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0114】
2 ホスト
3 メモリシステム
4 コントローラ
5 不揮発性メモリ
14 SRAM
15 SRAM
22 メモリ
123 HMB機能制御部
201 キャッシュ領域
202 バッファ領域
221 ホストメモリバッファ(HMB)