IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝メモリ株式会社の特許一覧

<>
  • 特開-メモリシステム及びストレージ装置 図1
  • 特開-メモリシステム及びストレージ装置 図2
  • 特開-メモリシステム及びストレージ装置 図3
  • 特開-メモリシステム及びストレージ装置 図4
  • 特開-メモリシステム及びストレージ装置 図5
  • 特開-メモリシステム及びストレージ装置 図6
  • 特開-メモリシステム及びストレージ装置 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022144314
(43)【公開日】2022-10-03
(54)【発明の名称】メモリシステム及びストレージ装置
(51)【国際特許分類】
   G06F 12/0868 20160101AFI20220926BHJP
   G06F 12/02 20060101ALI20220926BHJP
   G06F 12/00 20060101ALI20220926BHJP
   G06F 12/0866 20160101ALI20220926BHJP
   G06F 12/0897 20160101ALI20220926BHJP
   G06F 12/123 20160101ALI20220926BHJP
   G06F 12/1027 20160101ALI20220926BHJP
【FI】
G06F12/0868
G06F12/02 570A
G06F12/00 591
G06F12/02 530E
G06F12/0866 100
G06F12/0897 105
G06F12/123
G06F12/1027
G06F12/00 597U
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2021045256
(22)【出願日】2021-03-18
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110002907
【氏名又は名称】特許業務法人イトーシン国際特許事務所
(72)【発明者】
【氏名】落合 祥吾
(72)【発明者】
【氏名】東條 信明
【テーマコード(参考)】
5B160
5B205
【Fターム(参考)】
5B160AA06
5B160AA08
5B160AA10
5B160AB26
5B205MM04
5B205MM11
5B205MM54
5B205QQ02
5B205RR02
5B205UU31
5B205UU38
(57)【要約】      (修正有)
【課題】キャッシュメモリのキャッシュヒット率の向上を図るメモリシステム及びストレージ装置を提供する。
【解決手段】メストレージ装置1において、モリシステム2は、不揮発性メモリ100と、一次キャッシュメモリLUTc1、二次キャッシュメモリLUTc2及びプロセッサ230を有するコントローラ200と、を備える。プロセッサ230は、不揮発性メモリ100のデータに関する論物アドレス変換情報を用いてアドレス変換を行う。プロセッサ230は、不揮発性メモリ100に対して第1の処理を実行するか、第2の処理を実行するかに基づいて、第1の処理に関わる論物アドレス変換情報を一次キャッシュメモリLUTc1にキャッシュデータとして格納するか、第2の処理に関わる論物アドレス変換情報をホスト機器300の二次キャッシュメモリLUTc2にキャッシュデータとして格納するかを制御する。
【選択図】図1
【特許請求の範囲】
【請求項1】
不揮発性メモリと、
第1キャッシュメモリと、
第2キャッシュメモリと、
前記不揮発性メモリのデータに関する論物アドレス変換情報を用いてアドレス変換を行う制御回路と、
を含み、
前記制御回路は、前記不揮発性メモリに対して第1の処理を実行するか、前記第1の処理とは異なる第2の処理を実行するかに基づいて、前記第1の処理に関わる論物アドレス変換情報を前記第1キャッシュメモリに第1キャッシュデータとして格納するか、前記第2の処理に関わる論物アドレス変換情報を前記第2キャッシュメモリに第1キャッシュデータとして格納するかを制御する、メモリシステム。
【請求項2】
前記制御回路は、前記第1キャッシュメモリ中の前記第1キャッシュデータが一杯になると、LRUに基づいて前記第1キャッシュメモリから追い出すべき前記第1キャッシュデータを、前記第2キャッシュメモリに移動させ、前記第2キャッシュメモリに格納する、請求項1に記載のメモリシステム。
【請求項3】
前記制御回路は、前記第2キャッシュメモリ中の前記第2キャッシュデータが一杯になると、前記LRUに基づいて前記第2キャッシュメモリから消去すべき前記第2キャッシュデータを消去する、請求項2に記載のメモリシステム。
【請求項4】
前記制御回路は、前記第2キャッシュメモリに格納されている前記第2キャッシュデータを更新するとき、前記第2キャッシュデータを前記第1キャッシュメモリに移動させ、前記第1キャッシュメモリに格納し、前記第1キャッシュメモリ上で更新する、請求項1に記載のメモリシステム。
【請求項5】
前記第1キャッシュメモリに格納される前記第1キャッシュデータと、前記第2キャッシュメモリに格納される前記第2キャッシュデータは、相互に重複しない、請求項1に記載のメモリシステム。
【請求項6】
前記第2のキャッシュメモリは、前記不揮発性メモリに対する前記データの書き込み、及び、読み出しの要求を行う機器に含まれるメモリ中の所定の記憶領域である、請求項1に記載のメモリシステム。
【請求項7】
前記第2のキャッシュメモリの記憶容量は、前記機器により設定される、請求項6に記載のメモリシステム。
【請求項8】
前記第1の処理は、前記機器からの前記不揮発性メモリに対する前記データの読み出し、又は、書き込み要求に応じた処理であり、
前記第2の処理は、前記不揮発性メモリに対するガベージコレクションである、請求項6に記載のメモリシステム。
【請求項9】
前記メモリシステムは、前記不揮発性メモリへの前記データの読み出し、及び、書き込みを制御するプロセッサを含むメモリコントローラを有し、
前記制御回路は、前記プロセッサである、請求項1に記載のメモリシステム。
【請求項10】
前記メモリシステムは、前記不揮発性メモリへの前記データの読み出し、及び、書き込みを制御するプロセッサを含むメモリコントローラを有し、
前記制御回路は、前記プロセッサとは別のプロセッサである、請求項1に記載のメモリシステム。
【請求項11】
前記メモリシステムは、前記不揮発性メモリへの前記データの読み出し、及び、書き込みを制御するメモリコントローラを有し、
前記第1キャッシュメモリは、前記メモリコントローラに含まれる、請求項1に記載のメモリシステム。
【請求項12】
不揮発性メモリと、
前記不揮発性メモリを制御するメモリコントローラと、
前記メモリコントローラへ前記不揮発性メモリへのアクセス要求を送信するホスト機器と、
第1キャッシュメモリと、
第2キャッシュメモリと、
前記不揮発性メモリのデータに関する論物アドレス変換情報を用いてアドレス変換を行う制御回路と、
を含み、
前記制御回路は、前記不揮発性メモリに対して第1の処理を実行するか、前記第1の処理とは異なる第2の処理を実行するかに基づいて、前記第1の処理に関わる論物アドレス変換情報を前記第1キャッシュメモリに第1キャッシュデータとして格納するか、前記第2の処理に関わる論物アドレス変換情報を前記第2キャッシュメモリに第2キャッシュデータとして格納するかを制御する、
ストレージ装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステム及びストレージ装置に関する。
【背景技術】
【0002】
メモリシステムにおいては、ホストへの高速応答を実現するためにキャッシュメモリの高いキャッシュヒット率が求められている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2000-347941号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
実施形態は、キャッシュメモリのキャッシュヒット率の向上を図るメモリシステム及びストレージ装置を提供することを目的とする。
【課題を解決するための手段】
【0005】
実施形態のメモリシステムは、不揮発性メモリと、第1キャッシュメモリと、第2キャッシュメモリと、前記不揮発性メモリのデータに関する論物アドレス変換情報を用いてアドレス変換を行う制御回路と、を含み、前記制御回路は、前記不揮発性メモリに対して第1の処理を実行するか、前記第1の処理とは異なる第2の処理を実行するかに基づいて、前記第1の処理に関わる論物アドレス変換情報を前記第1キャッシュメモリに第1キャッシュデータとして格納するか、前記第2の処理に関わる論物アドレス変換情報を前記第2キャッシュメモリに第1キャッシュデータとして格納するかを制御する。
【図面の簡単な説明】
【0006】
図1】実施形態のストレージ装置の構成を説明するためのブロック図である。
図2】実施形態のキャッシュメモリのキャッシュデータの読み出し及び書き込み処理のフローチャートである。
図3】実施形態のキャッシュデータの一例を示す図である。
図4】実施形態の一次キャッシュメモリ及び二次キャッシュメモリに関わるデータの流れを説明するための図である。
図5】比較例を説明するための図である。
図6】比較例を説明するための図である。
図7】比較例を説明するための図である。
【発明を実施するための形態】
【0007】
以下、図面を参照して実施形態を説明する。
1.構成
[ストレージ装置の全体構成]
【0008】
本実施形態に係るストレージ装置の全体構成について、図1を用いて説明する。ここでは、NAND型フラッシュメモリを備えたストレージ装置を例に挙げて説明する。
【0009】
図1は、本実施形態に関わるストレージ装置1の構成を説明するためのブロック図である。図示するように、ストレージ装置1は、不揮発性メモリ100と、メモリコントローラ(以下、単にコントローラともいう)200と、ホスト機器300とを含む。
【0010】
不揮発性メモリ100は、例えば、ここではNAND型フラッシュメモリであるが、他のフラッシュメモリや、MRAM等の不揮発性メモリであってもよい。メモリシステム2は、不揮発性メモリ100とメモリコントローラ200とを含む。メモリシステム2は、例えば、SDカードのようなメモリカードや、SSD(ソリッドステートドライブ)等のストレージデバイスである。
【0011】
不揮発性メモリ100は複数のメモリセルを備え、複数のメモリセルはデータを不揮発に記憶することが可能である。コントローラ200は、NANDバスを介して不揮発性メモリ100に接続され、ホストバスを介してホスト機器300に接続される。
【0012】
コントローラ200は、不揮発性メモリ100へのデータの読み出し及び書き込みを制御する。ホスト機器300は、コントローラ200へ不揮発性メモリ100へのアクセス要求を送信する。コントローラ200は、ホスト機器300から受信した要求に応答して、不揮発性メモリ100にアクセスする。ホスト機器300は、例えばデジタルカメラやパーソナルコンピュータ等である。ホストバスは、例えば、SDTMインターフェース、PCIeTM(Peripheral component interconnect express)、又はNVMeTM(Non‐volatile memory express)等に従う。NANDバスは、NANDインターフェースに従う。
【0013】
NANDインターフェース(I/F)回路250を介して、不揮発性メモリ100とコントローラ200間で各種信号が送受信される。チップイネーブル信号CEn、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号WEn、及びリードイネーブル信号REnが、コントローラ200から不揮発性メモリ100へ供給される。レディ/ビジー信号RBnは、不揮発性メモリ100からコントローラ200へ供給される。入出力信号I/Oは、コントローラ200から不揮発性メモリ100間で送受信される。入出力信号I/Oは、不揮発性メモリ100とコントローラ200との間で送受信されるデータの実体であり、コマンド、アドレス、書き込みデータ、及び読み出しデータ等である。
【0014】
チップイネーブル信号CEnは、不揮発性メモリ100をイネーブルにするための信号であり、lowレベルでアサートされる。コマンドラッチイネーブル信号CLE及びアドレスラッチイネーブル信号ALEは、入出力信号I/Oがそれぞれコマンド及びアドレスであることを不揮発性メモリ100に通知する信号である。ライトイネーブル信号WEnは、lowレベルでアサートされ、入出力信号I/Oを書込みデータとして不揮発性メモリ100に書き込むことを不揮発性メモリ100に通知する信号である。リードイネーブル信号REnも、lowレベルでアサートされ、不揮発性メモリ100からの読み出しデータを入出力信号I/Oに出力させるための信号である。レディ/ビジー信号RBnは、不揮発性メモリ100がレディ状態(コントローラ200からの命令を受信出来る状態)であるか、それともビジー状態(コントローラ200からの命令を受信出来ない状態)であるかを示す信号であり、lowレベルがビジー状態を示す。入出力信号I/Oは、例えば8ビットの信号である。
[コントローラの構成]
【0015】
次に、コントローラ200の構成の詳細について説明する。図1に示すようにコントローラ200は、ホストインターフェース(I/F)回路210、内蔵メモリであるランダムアクセスメモリ(以下、RAMという)220、中央処理装置(CPU)を有するプロセッサ230、バッファメモリ240、NANDインターフェース回路250、及びECC(Error Checking and Correcting)回路260を備えた回路である。これらの回路は、互いにバス270を介して接続されている。
【0016】
ホストインターフェース回路210は、ホストバスを介してホスト機器300と接続される。ホストインターフェース回路210は、ホスト機器300から受信した要求及びデータを、それぞれプロセッサ230及びバッファメモリ240に転送する。また、ホストインターフェース回路210は、プロセッサ230からのコマンドに応答して、バッファメモリ240内のデータをホスト機器300へ転送する。
【0017】
RAM220は、例えばDRAMやSRAM等の半導体メモリであり、プロセッサ230の作業領域として使用される。そしてRAM220は、不揮発性メモリ100を管理するためのファームウェアや、管理情報MIの一部を保持する。管理情報MIは、論物アドレス変換テーブルLUT、シフトテーブル情報等である。
【0018】
論物アドレス変換情報は、メモリセルアレイ110の記憶領域の一部に設けられた論物アドレス変換テーブルLUTに不揮発に記憶される。論物アドレス変換テーブルLUT(ルックアップテーブルとも呼ぶ)は、アドレス変換情報を格納する。論物アドレス変換情報は、論理アドレス空間内の位置を示す論理アドレスを、不揮発性メモリ100内の位置を示す物理アドレスに対応付ける情報である。
【0019】
論物アドレス変換情報の一部は、RAM220の一部にキャッシュデータとして格納される。RAM220の所定の記憶領域は、一次キャッシュメモリLUTc1として使用される。すなわち、一次キャッシュメモリLUTc1は、コントローラ200に含まれる。なお、一次キャッシュメモリLUTc1は、RAM220とは別の専用のメモリでもよい。
【0020】
また、本実施形態では、ホスト機器300の有するメモリの一部の記憶領域が、二次キャッシュメモリLUTc2として使用される。
【0021】
ここでは、二次キャッシュメモリLUTc2は、HMB(ホストメモリバッファ)の一部である。HMBの記憶容量は、ホスト機器300により設定される。なお、二次キャッシュメモリLUTc2は、本実施形態と同等のキャッシュメモリの機能を有する機器であれば、ホスト機器300及びコントローラ200とは別に設けられていてもよい。
【0022】
以上のように、本実施形態では、論物アドレス変換テーブルLUT用のキャッシュメモリとして、第1キャッシュメモリとしての一次キャッシュメモリLUTc1と第2キャッシュメモリとしての二次キャッシュメモリLUTc2を有している。
【0023】
本実施形態では、二次キャッシュメモリLUTc2へのアクセス(データを要求してから取得するまでの時間)は、ホストバスによりメモリシステム2と接続されているため、一次キャッシュメモリLUTc1へのアクセスよりは遅いが、不揮発性メモリ100へのアクセスよりは、速い。しかし、二次キャッシュメモリLUTc2の記憶容量は、ホスト機器300の記憶領域であるため、一次キャッシュメモリLUTc1の記憶容量より大きい。
【0024】
プロセッサ230は、一次キャッシュメモリLUTc1と二次キャッシュメモリLUTc2(以下、2つのキャッシュメモリを纏めて指すときはキャッシュメモリという)を参照して、論物アドレス変換情報を取得して、ホスト機器300からの論理アドレスを物理アドレスに変換する。
【0025】
すなわち、プロセッサ230は、不揮発性メモリ100のデータに関する論物アドレス変換情報を用いてアドレス変換を行う制御回路を構成する。プロセッサ230は、論物アドレス変換テーブルLUTに所定の管理単位で論物アドレス変換情報を記憶して管理する。
【0026】
なお、ここでは、プロセッサ230が論物アドレス変換テーブルLUTの管理を行っているが、プロセッサ230とは別のプロセッサが、論物アドレス変換テーブルLUTの論物アドレス変換情報の管理を行うようにしてもよい。その場合、図1において、点線で示すようなLUT専用のプロセッサ230aがバス270に接続される。専用プロセッサ230aは、プロセッサ230からの論物アドレス変換情報の検索要求を受けると、検索結果をプロセッサ230に返す。
【0027】
プロセッサ230は、コントローラ200全体の動作を制御する。例えばプロセッサ230は、ホスト機器300からデータ要求を受信した際には、そのデータ要求に応答して、論物アドレス変換を行って、NANDインターフェース回路250に対して読み出しコマンドを発行する。ホスト機器300からのデータ書き込み要求及びデータ消去要求を受信した際も、プロセッサ230は、論物アドレス変換を行って、受信した要求に対応するコマンドをNANDインターフェース回路250に対して同様に発行する。また、プロセッサ230は、ガベージコレクション(コンパクションと呼ぶ場合もある)、ウェアレベリング(平準化処理と呼ぶ場合もある)等の、不揮発性メモリ100を管理するための様々な処理を実行する。
【0028】
ウェアレベリングは、データの書き換えが特定のメモリセルやブロックに集中しないように不揮発性メモリ100全体に均等に分散させる処理である。
【0029】
ガベージコレクションは、データ書き込み量の増加に伴い空きブロック数が減少したときに行う処理で、不揮発性メモリ100上の複数ブロックに離散して記憶されたデータを特定のブロックにコピーすることにより空きブロックを作り、その空きブロックに新たなデータを書き込めるようにするものである。このガベージコレクション処理においてプロセッサ230は、不揮発性メモリ100に記憶されたデータのアドレス位置変更に伴う論物アドレス変換情報の更新処理を行う。
【0030】
バッファメモリ240は、書き込みデータや読み出しデータを一時的に保持する。
【0031】
NANDインターフェース回路250は、NANDバスを介して不揮発性メモリ100と接続され、不揮発性メモリ100との通信を司る。そしてNANDインターフェース回路250は、プロセッサ230から受信したコマンドに基づき、コマンド、データなどを含む種々の信号を、不揮発性メモリ100へ送信し、また不揮発性メモリ100から各種信号及びデータを受信する。
【0032】
NANDインターフェース回路250は、プロセッサ230から受信したコマンドに基づき、チップイネーブル信号CEn、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号WEn、及びリードイネーブル信号REnを不揮発性メモリ100へ出力する。データの書き込み時には、NANDインターフェース回路250は、プロセッサ230で発行された書き込みコマンド、アドレス(物理アドレス)及びバッファメモリ240内の書き込みデータを、入出力信号I/Oとして不揮発性メモリ100へ転送する。データの読み出し時には、NANDインターフェース回路250は、プロセッサ230で発行された読み出しコマンドとアドレス(物理アドレス)を、入出力信号I/Oとして不揮発性メモリ100へ転送し、更に不揮発性メモリ100から読み出されたデータを入出力信号I/Oとして受信し、バッファメモリ240へ転送する。
【0033】
ECC回路260は、不揮発性メモリ100に記憶されたデータに対するエラー検出及びエラー訂正処理を行う。すなわちECC回路260は、データの書き込み時にはエラー訂正符号を生成して、これを書き込みデータに付与し、データの読み出し時には、エラー訂正をしながらデータを復号する。
[不揮発性メモリの構成]
【0034】
次に、不揮発性メモリ100の構成について説明する。図1に示すように不揮発性メモリ100は、メモリセルアレイ110、ロウデコーダ120、ドライバ130、カラムデコーダ140、アドレスレジスタ150、コマンドレジスタ160、シーケンサ170及び入出力回路180を備える。
【0035】
メモリセルアレイ110は、例えば、複数のブロックBLKを備えたNAND型フラッシュメモリである。各ブロックBLKは、ロウ及びカラムに対応付けられた複数の不揮発性のメモリセルを含む。図1では一例として4つのブロックBLK0~BLK3が図示されている。そしてメモリセルアレイ110は、コントローラ200から与えられたデータを不揮発に記憶することができる。
【0036】
ロウデコーダ120は、アドレスレジスタ150内のアドレスADD(物理アドレス)に基づいてブロックBLK0~BLK3のいずれかを選択し、更に選択したブロックBLKにおけるワード線WLを選択する。
【0037】
ドライバ130は、アドレスレジスタ150内のブロックアドレスBA及びページアドレスPAに基づいて、選択されたブロックBLKに対して、各種電圧信号を生成して、ロウデコーダ120を介して電圧を供給する。
【0038】
入出力回路180は、NANDバスを介してコントローラ200との間で上述した各種信号の送受信を行う回路である。入出力回路180は、アドレスレジスタ150にアドレスADDを出力し、コマンドレジスタ160にコマンド信号CMDを出力し、カラムデコーダ140との間でデータDATの送受信を行う。
【0039】
カラムデコーダ140は、複数のデータラッチ回路及び複数のセンスアンプを含む。各センスアンプは、データの読み出し時には、メモリセルアレイ110から読み出されたデータをセンスし、必要な演算を行う。そして、カラムデコーダ140は、データラッチ回路を介してこのデータDATをコントローラ200に出力する。カラムデコーダ140は、データの書き込み時には、コントローラ200から受信した書き込みデータDATを、データラッチ回路において受けた後に、メモリセルアレイ110に対する書き込み動作を実行する。
【0040】
アドレスレジスタ150は、コントローラ200から受信したアドレスADDを保持する。このアドレスADDには、前述のブロックアドレスBAとページアドレスPAとが含まれる。コマンドレジスタ160は、コントローラ200から受信したコマンドCMDを保持する。
【0041】
シーケンサ170は、コマンドレジスタ160に保持されたコマンドCMDに基づき、不揮発性メモリ100全体の動作を制御する。
2.動作
(データの書き込みと読み出し)
【0042】
ストレージ装置1は、ユーザデータを保存し、保存されたユーザデータを読み出して各種処理を施すことができる。そのため、メモリシステム2は、ホスト機器300からのユーザデータを不揮発性メモリ100へ書き込み処理と、不揮発性メモリ100からのユーザデータの読み出し処理を行う。
【0043】
ユーザデータの書き込み処理においては、プロセッサ230は、ページ単位のユーザデータ(ページデータ)を生成して、ECC260を介して、書き込みコマンドと物理アドレスとページデータとをNANDインターフェース回路250へ出力する。NANDインターフェース回路250は、書き込みコマンドと物理アドレスを不揮発性メモリ100へ出力する。書き込み処理が実行されると、プロセッサ230は、一次キャッシュメモリLUTc1上でキャッシュデータの更新後、論物アドレス変換テーブルLUTに格納された論物アドレス変換情報を更新する。
【0044】
論物アドレス変換情報は、ユーザデータの論理アドレスと物理アドレスの対応情報である。ユーザデータの論理アドレスは、ホスト機器300におけるユーザデータの論理アドレス空間におけるアドレスである。
【0045】
新たなユーザデータが不揮発性メモリ100に書き込まれるとき、新たな論物アドレス変換情報が生成され、プロセッサ230は、新たな論物アドレス変換情報を、一次キャッシュメモリLUTc1上にキャッシュデータとして書き込んだ後、論物アドレス変換テーブルLUTに登録する。
【0046】
不揮発性メモリ100中のユーザデータ更新の場合、プロセッサ230は、更新ユーザデータの論理アドレスに関連付けられていたユーザデータ(不揮発性メモリ100に以前に書き込まれていたデータ)の無効化を行う。そして、プロセッサ230は、そのユーザデータに対応するキャッシュデータの更新も行い、論物アドレス変換テーブルLUTのデータ更新を行う。
【0047】
ユーザデータの読み出し処理においては、プロセッサ230は、キャッシュメモリ(一次キャッシュメモリLUTc1と二次キャッシュメモリLUTc2)を利用して論物アドレス変換情報を得て、読み出し要求に係るユーザデータを含むページの物理アドレスを得る。プロセッサ230は、読み出しコマンドと得られた物理アドレスとをNANDインターフェース回路250へ出力する。NANDインターフェース回路250は、読み出しコマンドと物理アドレスを不揮発性メモリ100へ出力する。プロセッサ230は、ECC260を介して不揮発性メモリ100から読み出されたページデータを受信し、ページデータから読み出し要求に係るデータを抽出して、ホスト機器300へ送信する。このときも、プロセッサ230は、キャッシュデータの更新も行い、論物アドレス変換テーブルLUTのデータ更新を行う。
【0048】
以上のように、プロセッサ230は、ホスト機器300からのアクセスを受けると、ホストからの論理アドレスの一部(タグなど)を用いてキャッシュメモリを検索して、アクセスに係る論理アドレスの論物アドレス変換情報を検索して、取得する。すなわち、ホスト機器300からのアクセス要求があると、キャッシュメモリにアクセス対象データのキャッシュデータ(論物アドレス変換情報を含む)があれば、プロセッサ230は、キャッシュメモリから論物アドレス変換情報を読み出してアクセス要求に基づく読み出し処理あるいは書き込み処理を実行する。
【0049】
さらに、プロセッサ230は、ホスト機器300からのアクセス要求があると、キャッシュメモリのデータ更新を行う。データ更新は、優先度情報の更新、論物アドレス変換情報の必要な更新である。
(キャッシュメモリの管理)
【0050】
一次キャッシュメモリLUTc1及び二次キャッシュメモリLUTc2のキャッシュデータは、LRU(Least Recently Used)方式に則り保持される。
【0051】
LRU方式は、最も古いキャッシュデータ(すなわち、最も長い間使用されていないキャッシュデータ)の優先度を最も低くして、優先度の低いキャッシュデータをキャッシュメモリ(一次キャッシュメモリLUTc1及び二次キャッシュメモリLUTc2)から追い出すようにして、キャッシュメモリ(一次キャッシュメモリLUTc1及び二次キャッシュメモリLUTc2)に新たなキャッシュデータを格納する。
【0052】
プロセッサ230は、ホスト機器300からのアクセス要求を受けると、アクセス要求に関わる論物アドレス変換情報が一次キャッシュメモリLUTc1又は二次キャッシュメモリLUTc2にあれば、その論物アドレス変換情報のキャッシュデータを用いて、アクセス要求に関わる処理を実行する。
【0053】
プロセッサ230は、ホスト機器300からのアクセス要求を受けたときに、アクセス要求に関わる論物アドレス変換情報が一次キャッシュメモリLUTc1又は二次キャッシュメモリLUTc2になければ、不揮発性メモリ100の論物アドレス変換テーブルLUTから、論物アドレス変換情報を得て、アクセス要求に関わる処理を実行する。
【0054】
ユーザデータの書き込みあるいは書き替えの場合、その書き込みあるいは書き替えに関わるデータデータの論物アドレス変換情報は、キャッシュデータとして、一次キャッシュメモリLUTc1上で更新される。
【0055】
各キャッシュデータは、上述した優先度情報を含む。優先度情報は、ホスト機器300からのアクセス要求がある度に更新される。
【0056】
一次及び二次キャッシュメモリLUTc1,LUTc2に、時間的あるいは空間的に局所性のあるデータ(狭域アクセスデータ)が格納され、ホスト機器300からのアクセス要求が狭域アクセスの場合、プロセッサ230は、ホスト機器300からのアクセス要求に対して速い応答が可能となる。
【0057】
一方、一次及び二次キャッシュメモリLUTc1,LUTc2に、時間的あるいは空間的に局所性のないデータ(広域アクセスデータ)が格納されている場合、プロセッサ230は、ホスト機器300からのアクセス要求に対して速い応答を返すことができない。これは、アクセス要求に係るアドレス変換情報がキャッシュヒットする確率(キャッシュヒット率)が低くなるため、アクセス要求に係るアドレス変換情報を不揮発性メモリ100から読み出す回数が多くなるためである。
【0058】
さらに、プロセッサ230は、例えば、ホスト機器300からのアクセス要求とは無関係にバックグラウンドでガベージコレクションなどの処理を実行するとき、一次キャッシュメモリLUTc1及び二次キャッシュメモリLUTc2のキャッシュデータの更新を行う。
【0059】
このようなガベージコレクションの処理などでは、広域アクセスデータが処理対象であるため、コールドデータ(アクセス頻度の低いデータ)も処理対象となる可能性が高い。
【0060】
そのため、一次及び二次キャッシュメモリLUTc1,LUTc2に狭域アクセスデータが格納されているときに、ガベージコレクションが実行されると、キャッシュデータは、時間的あるいは空間的に局所性のないデータで置き換えられてしまう。その結果、ホスト機器300からのアクセス要求があったときのキャッシュミスの発生確率が増えてしまう。
【0061】
そこで、本実施形態では、ホスト機器300から不揮発性メモリ100へのデータ書き込み等のアクセス要求の伴う処理実行時の論物アドレス変換情報は、一次キャッシュメモリLUTc1にキャッシュデータとして格納する。ガベージコレクションなどホスト機器300からのアクセス要求の伴わない処理実行時の論物アドレス変換情報は、二次キャッシュメモリLUTc2にキャッシュデータとして格納する。
【0062】
論物アドレス変換情報を二次キャッシュに格納するのは、広域アクセスデータを処理対象とするガベージコレクションなどの処理においてキャッシュデータを一次キャッシュメモリLUTc1に格納してしまうと、その後のホスト機器300からのアクセス時にキャッシュヒットする可能性は低くなるからである。
(キャッシュデータの読み出し及び書き込み処理)
【0063】
プロセッサ230は、ガベージコレクションや、ホスト機器300からのアクセス要求に対する処理を実行するとき、それらの実行に伴うキャッシュデータの読み出し、及び、書き込み処理を実行する。
【0064】
ここでは、広域アクセスデータが処理される例として、ガベージコレクションを例として、以下、キャッシュデータの読み出し及び書き込みについて説明する。
【0065】
図2は、キャッシュメモリのキャッシュデータの読み出し、及び、書き込み処理のフローチャートである。図3は、キャッシュデータの一例を示す図である。図3に示すように、キャッシュデータは、論物アドレス変換情報と優先度情報を含む。キャッシュデータは、フラグ情報等もさらに含む。
【0066】
キャッシュメモリの読み出し及び書き込み処理が発生すると、プロセッサ230は、処理対象データの論物アドレス変換情報が一次又は二次キャッシュメモリLUTc1、LUTc2にあるかを判定する(ステップS1)。ステップS1では、プロセッサ230は、まず、処理対象データの論物アドレス変換情報が一次キャッシュメモリLUTc1にあるかを判定し、一次キャッシュメモリLUTc1にないとき、二次キャッシュメモリLUTc2にあるかを判定する。
【0067】
処理対象データの論物アドレス変換情報が一次又は二次キャッシュメモリLUTc1,LUTc2にあるとき(S1:YES)、プロセッサ230は、一次又は二次キャッシュメモリLUTc1,LUTc2のキャッシュデータの優先度情報などを変更して、論物アドレス変換情報を論物アドレス変換テーブルLUTに格納する(ステップS2)。ステップS2の後、プロセッサ230は、図2の処理を終了するが、格納したキャッシュデータを用いて、ユーザデータのアクセス要求に対する処理又はガベージコレクションの処理を実行する。
【0068】
処理対象データの論物アドレス変換情報が一次又は二次キャッシュメモリLUTc1,LUTc2にないとき(S1:NO)、プロセッサ230は、不揮発性メモリ100の論物アドレス変換テーブルLUTから処理対象データの論物アドレス変換情報を読み出す(ステップS3)。
【0069】
プロセッサ230は、論物アドレス変換情報が一次キャッシュメモリLUTc1に格納すべきデータであるかを判定する(ステップS4)。論物アドレス変換情報が一次キャッシュメモリLUTc1に格納すべきデータであるかは、現在実行している処理が、ホスト機器300からのアクセスによるものであるか、ガベージコレクションの処理によるものであるかに基づき、判定される。
【0070】
現在実行している処理がホスト機器300からのアクセス要求によるものである場合、処理対象データの論物アドレス変換情報は一次キャッシュメモリLUTc1に格納すべきデータであると判定される。現在実行している処理がガベージコレクションよるものである場合、処理対象データの論物アドレス変換情報は二次ャッシュメモリLUTc2に格納すべきデータであると判定される。
【0071】
処理対象データの論物アドレス変換情報が一次キャッシュメモリLUTc1に格納すべきデータであると判定されたとき(S4:YES)、プロセッサ230は、不揮発性メモリ100から読み出した処理対象データの論物アドレス変換情報を、キャッシュデータに含めて一次キャッシュメモリLUTc1に格納する(ステップS5)。
【0072】
なお、一次キャッシュメモリLUTc1がキャッシュデータで一杯であるときは、プロセッサ230は、一次キャッシュメモリLUTc1のキャッシュデータの中から優先度の低いデータを一次キャッシュメモリLUTc1から追い出し、二次キャッシュメモリLUTc2に書き込む処理を実行する。
【0073】
すなわち、プロセッサ230は、一次キャッシュメモリLUTc1中のキャッシュデータが一杯になると、LRUに基づいて一次キャッシュメモリLUTc1から追い出すべきキャッシュデータを、二次キャッシュメモリLUTc2に移動させ、二次キャッシュメモリLUTc2へ格納する。この処理は、一次キャッシュメモリLUTc1のキャッシュデータが、二次キャッシュメモリLUTc2に格納されるので、キャッシュヒット率を高めることに繋がる。
【0074】
処理対象データの論物アドレス変換情報が一次キャッシュメモリLUTc1に格納すべきデータでないと判定されたとき(S4:NO)、プロセッサ230は、不揮発性メモリ100から読み出した処理対象データの論物アドレス変換情報を、キャッシュデータに含めて二次キャッシュメモリLUTc2に格納する(ステップS6)。
【0075】
すなわち、プロセッサ230は、不揮発性メモリ100に対して第1の処理を実行するか、第2の処理を実行するかに基づいて、第1の処理に関わる論物アドレス変換情報を第1キャッシュメモリ(一次キャッシュメモリLUTc1)にキャッシュデータとして格納し、第2の処理に関わる論物アドレス変換情報を第2キャッシュメモリ(二次キャッシュメモリLUTc2)にキャッシュデータとして格納する。
【0076】
ここでは、第1の処理は、ホスト機器300からの不揮発性メモリ100に対するデータの読み出し要求、又は、データの書き込み要求に応じた処理の例である。第2の処理は、プロセッサ230による不揮発性メモリ100に対するガベージコレクションの処理の例である。
【0077】
なお、ステップS6において、二次キャッシュメモリLUTc2が既に一杯で論物アドレス変換情報を格納できない場合、プロセッサ230は、LRUに基づき、二次キャッシュメモリLUTc2上の優先度の最も低いデータを二次キャッシュメモリLUTc2から追い出す処理(消去処理)を実行する。
【0078】
以上のように、ガベージコレクションの処理において不揮発性メモリ100から読み出された論物アドレス変換情報は、二次キャッシュメモリLUTc2に格納され、ホスト機器300からのアクセス要求において読み出された論物アドレス変換情報は、一次キャッシュメモリLUTc1に格納される。一次キャッシュメモリLUTc1のキャッシュデータと二次キャッシュメモリLUTc2のキャッシュデータは、互いに排他的であり、重複しない。
【0079】
ステップS5、又は、S6の後、プロセッサ230は、図2のキャッシュデータの読み出し、及び、書き込みの処理を終了するが、格納したキャッシュデータ(処理対象データの論物アドレス変換情報)を用いてユーザデータのアクセス要求に係る処理又はガベージコレクションの処理を実行する。
【0080】
図4は、プロセッサ230、不揮発性メモリ100、一次キャッシュメモリLUTc1及び二次キャッシュメモリLUTc2間のデータの要求と取得の関係、すなわちデータの流れを説明するための図である。
【0081】
A1は、ステップS1におけるプロセッサ230からの一次キャッシュメモリLUTc1へのキャッシュデータ要求(論物アドレス変換情報の要求)(a11)、ステップS5におけるプロセッサ230からの一次キャッシュメモリLUTc1への論物アドレス変換情報の格納(a12)、及び一次キャッシュメモリLUTc1のキャッシュデータの更新(a13)を示す。a13は、例えば、ホスト機器300からのアクセス要求があったときの、キャッシュデータの物理アドレスの更新、優先度情報の更新である。
【0082】
A2は、一次キャッシュメモリLUTc1からの応答(論物アドレス変換情報)を示す。例えば、ホスト機器300からのユーザデータの読み出し要求を受けたときに、プロセッサ230は、読み出し要求に関わる論物アドレス変換情報を、一次キャッシュメモリLUTc1を検索して取得する。A2は、その検索結果の応答である。
【0083】
A3は、プロセッサ230から二次キャッシュメモリLUTc2へのキャッシュデータ要求(論物アドレス変換情報の要求)を示す。
【0084】
例えば、ホスト機器300からのユーザデータの読み出し要求を受け、プロセッサ230は、ステップS1において、要求に係る論物アドレス変換情報が一次キャッシュメモリLUTc1にないときに、二次キャッシュメモリLUTc2へのキャッシュデータ要求を出す(A3)。
【0085】
A4は、二次キャッシュメモリLUTc2からの応答(論物アドレス変換情報)を示す。
【0086】
B1は、一次キャッシュメモリLUTc1からデータが溢れたときに、その溢れたデータを追い出し、二次キャッシュメモリLUTc2へ格納することを示す。
【0087】
例えば、プロセッサ230は、ステップS5において一次キャッシュメモリLUTc1に論物アドレス変換情報を格納するが、一次キャッシュメモリLUTc1が一杯であるとき、プロセッサ230は、一次キャッシュメモリLUTc1中の優先度の最も低いキャッシュデータを一次キャッシュメモリLUTc1から追い出し、二次キャッシュメモリLUTc2に格納する(移動する)(B1)。
【0088】
B2は、二次キャッシュメモリLUTc2にあった論物アドレス変換情報の更新に伴うデータの移動、を示す。
【0089】
要求に係る論物アドレス変換情報のキャッシュデータが二次キャッシュメモリLUTc2にあった場合、プロセッサ230は、そのキャッシュデータを一次キャッシュメモリLUTc1に移動させ、一次キャッシュメモリLUTc1に格納した後に、一次キャッシュメモリLUTc1上で更新する。
【0090】
これは、ホスト機器300の電源が突然オフされた場合、二次キャッシュメモリLUTc2のキャッシュデータの最新の状態が保証できなくなるのを防ぐためである。
【0091】
C1は、キャッシュミスがあったときの論物アドレス変換テーブルLUTへのアクセス(c11)、一次キャッシュメモリLUTc1から論物アドレス変換テーブルLUTへの論物アドレス変換情報の書き込み(c12)、を示す。
【0092】
C2は、キャッシュミスがあったときの論物アドレス変換情報を応答、を示す。
【0093】
論物アドレス変換情報のキャッシュミスがあったとき、ステップS3において、プロセッサ230は、論物アドレス変換テーブルLUTへアクセスして論物アドレス変換情報を取得する(C2)。
【0094】
C3は、二次キャッシュメモリLUTc2への論物アドレス変換情報の格納を示す。ステップS6において、プロセッサ230は、ガベージコレクションの実行時の論物アドレス変換情報を、キャッシュデータに含めて二次キャッシュメモリLUTc2へ直接格納する(C3)。
【0095】
Dは、プロセッサ230が、二次キャッシュメモリLUTc2が一杯だったときのデータの追い出し(データ消去)を示す。
【0096】
例えば、ステップS6において、二次キャッシュメモリLUTc2に論物アドレス変換情報を書き込むときに、二次キャッシュメモリLUTc2が一杯である場合、プロセッサ230は、二次キャッシュメモリLUTc2上の優先度の最も低いデータを追い出す、すなわち消去する(D)。
【0097】
上述したように、一次キャッシュメモリLUTc1に格納されるキャッシュデータと、二次キャッシュメモリLUTc2に格納されるキャッシュデータとは排他的である。すなわち、一次キャッシュメモリLUTc1に格納されているキャッシュデータは、二次キャッシュメモリLUTc2に格納されておらず、二次キャッシュメモリLUTc2に格納されているキャッシュデータは、一次キャッシュメモリLUTc1に格納されていない。言い換えれば、一次キャッシュメモリLUTc1に格納されるキャッシュデータと、二次キャッシュメモリLUTc2に格納されるキャッシュデータは、相互に重複しない。
【0098】
従って、二次キャッシュメモリLUTc2は、一次キャッシュメモリLUTc1から追い出されたキャッシュデータを格納して、データの読み出し要求に対するキャッシュヒット率を高くするためのメモリとして機能する。
【0099】
また、前述したように、ガベージコレクションのように広域アクセスデータが対象となるような処理においては、その後のデータアクセスでキャッシュヒットする可能性が低いので、論物アドレス変換情報は、二次キャッシュメモリLUTc2に格納される。その他の論物アドレス変換情報は、一次キャッシュメモリLUTc1に格納される。よって、狭域アクセスのデータが一次キャッシュメモリLUTc1に格納されるので、ホスト機器300からの読み出し要求に対するキャッシュヒット率は高まる。
【0100】
以上のように、ガベージコレクションがバックグラウンドで実行されても、一次キャッシュメモリには、LRUに基づきキャッシュデータが格納されるので、キャッシュミスの発生を低く抑えることができる。
【0101】
また、一次キャッシュメモリLUTc1のキャッシュデータが一杯で溢れたときは、溢れたキャッシュデータを二次キャッシュメモリLUTc2に格納することにより、データのリード時のキャッシュヒット率を高くしている。
【0102】
図5図6、及び、図7は、本実施形態の比較例を説明するための図である。ホスト機器300からのアクセス要求が狭域アクセスの場合、キャッシュデータの更新対象がキャッシュメモリ上のキャッシュデータだけである場合は多い。図5に示すように不揮発性メモリ100から読み出された論物アドレス変換情報A,B,C,D,E,Fがキャッシュメモリあるとき、これらのデータがキャッシュヒットする。キャッシュデータは、論物アドレス変換情報A,B,C,D,E,Fの順に古い。論物アドレス変換情報Aのキャッシュデータが最も古く、論物アドレス変換情報Fのキャッシュデータが最も新しい。
【0103】
しかし、ガベージコレクションが実行されると、図6に示すように、キャッシュデータは、古い順に追い出されて、ガベージコレクションにより取得された論物アドレス変換情報X,Y,Zに置き換わる。
【0104】
その後、ホスト機器300から論物アドレス変換情報A,B,C,D,E,Fのアクセス要求があると、図7に示すように、LRUに則って、D,E,F,X,Y,Zの古い順に、不揮発性メモリ100への書き戻しと、論物アドレス変換情報A,B,C,D,E,Fの順のキャッシュデータのキャッシュメモリへの上書きが行われる。
【0105】
そのため、比較例の場合、ガベージコレクションが実行されると、不揮発性メモリ100へのアクセス回数が増えるため、メモリシステムのアクセス性能が悪化する。
【0106】
すなわち、LRU方式で格納されたキャッシュデータが、キャッシュメモリから追い出されて、ガベージコレクションに関わる論物アドレス変換情報(コールドデータを含む)がキャッシュメモリに格納されるため、その後のキャッシュヒット率が低下する。
【0107】
これに対して、上述した本実施形態によれば、図2のキャッシュメモリのキャッシュデータの読み出し、及び、書き込み処理のフローチャートで説明したように、ユーザデータの読み出し又は書き込みの場合は、キャッシュデータは、一次キャッシュメモリLUTc1に格納される。また、ガベージコレクションの場合は、キャッシュデータは、二次キャッシュメモリLUTc2に格納される。一次キャッシュメモリLUTc1にはホスト機器300からのアクセス要求に論物アドレス変換情報がLRUに則ったキャッシュデータとして格納されるので、キャッシュヒットする可能性の高いキャッシュデータの追い出しを防ぐことができる。その結果メモリシステムの読み出し性能の低下が防止される。
【0108】
以上のように、上述した実施形態によれば、キャッシュメモリのキャッシュヒット率の向上を図るメモリシステム及びストレージ装置を提供することができる。
【0109】
なお、上述した実施形態では、広域アクセスがされる例としてガベージコレクションを挙げたが、上述した実施形態は、広域アクセスがされる他の処理の場合にも、適用可能である。
【0110】
実施形態を説明したが、実施形態は、例として例示したものであり、発明の範囲を限定することは意図していない。実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0111】
1 ストレージ装置、
2 メモリシステム、
100 不揮発性メモリ、
110 メモリセルアレイ、
120 ロウデコーダ、
130 ドライバ、
140 カラムデコーダ、
150 アドレスレジスタ、
160 コマンドレジスタ、
170 シーケンサ、
180 入出力回路、
200 メモリコントローラ、
210 ホストインターフェース回路、
230 プロセッサ、
230a 専用プロセッサ、
240 バッファメモリ、
250 NANDインターフェース回路、
260 ECC回路、
270 バス、
300 ホスト機器。
図1
図2
図3
図4
図5
図6
図7