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

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

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

特開2025-16066ストレージ装置、ホスト装置、情報処理システム
<>
  • 特開-ストレージ装置、ホスト装置、情報処理システム 図1
  • 特開-ストレージ装置、ホスト装置、情報処理システム 図2
  • 特開-ストレージ装置、ホスト装置、情報処理システム 図3
  • 特開-ストレージ装置、ホスト装置、情報処理システム 図4
  • 特開-ストレージ装置、ホスト装置、情報処理システム 図5
  • 特開-ストレージ装置、ホスト装置、情報処理システム 図6
  • 特開-ストレージ装置、ホスト装置、情報処理システム 図7
  • 特開-ストレージ装置、ホスト装置、情報処理システム 図8
  • 特開-ストレージ装置、ホスト装置、情報処理システム 図9
  • 特開-ストレージ装置、ホスト装置、情報処理システム 図10
  • 特開-ストレージ装置、ホスト装置、情報処理システム 図11
  • 特開-ストレージ装置、ホスト装置、情報処理システム 図12
  • 特開-ストレージ装置、ホスト装置、情報処理システム 図13
  • 特開-ストレージ装置、ホスト装置、情報処理システム 図14
  • 特開-ストレージ装置、ホスト装置、情報処理システム 図15
  • 特開-ストレージ装置、ホスト装置、情報処理システム 図16
  • 特開-ストレージ装置、ホスト装置、情報処理システム 図17
  • 特開-ストレージ装置、ホスト装置、情報処理システム 図18
  • 特開-ストレージ装置、ホスト装置、情報処理システム 図19
  • 特開-ストレージ装置、ホスト装置、情報処理システム 図20
  • 特開-ストレージ装置、ホスト装置、情報処理システム 図21
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025016066
(43)【公開日】2025-01-31
(54)【発明の名称】ストレージ装置、ホスト装置、情報処理システム
(51)【国際特許分類】
   G06F 12/02 20060101AFI20250124BHJP
   G06F 12/00 20060101ALI20250124BHJP
   G11C 11/56 20060101ALI20250124BHJP
【FI】
G06F12/02 510A
G06F12/00 597U
G11C11/56 220
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023119086
(22)【出願日】2023-07-21
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001092
【氏名又は名称】弁理士法人サクラ国際特許事務所
(72)【発明者】
【氏名】本多 慶伍
【テーマコード(参考)】
5B160
5B225
【Fターム(参考)】
5B160AA06
5B160AA14
5B160AA20
5B225BA19
5B225CA27
5B225DA03
5B225DE15
5B225EA05
5B225EA08
5B225EF17
5B225FA02
(57)【要約】
【課題】平均レイテンシとスループットを改善可能とするストレージ装置、ホスト装置、情報処理システムを提供する。
【解決手段】本発明の実施形態によれば、不揮発メモリとコントローラとを備えたストレージ装置であって、不揮発メモリは、電圧印加回数が1回又は2回でデータ読み出し可能な第1の領域と、電圧印加回数が3回以上でデータ読み出し可能な第2の領域と、を有し、コントローラは、読出し要求単位のセグメントごとのリードコマンドの発行回数を示す情報を含む読出し頻度情報を有し、コントローラは、読出し頻度情報に基づいて、発行回数が所定の基準値以上の第1のセグメントを第1の領域又は第2の領域に書込み制御し、発行回数が所定の基準値未満の第2のセグメントを第2の領域に書込み制御する。
【選択図】図5
【特許請求の範囲】
【請求項1】
不揮発メモリとコントローラとを備えたストレージ装置であって、
前記不揮発メモリは、
電圧印加回数が1回又は2回でデータ読み出し可能な第1の領域と、
電圧印加回数が3回以上でデータ読み出し可能な第2の領域と、を有し、
前記コントローラは、
読出し要求単位のセグメントごとのリードコマンドの発行回数を示す情報を含む読出し頻度情報を有し、
前記コントローラは、前記読出し頻度情報に基づいて、
前記発行回数が所定の基準値以上の第1のセグメントを前記第1の領域又は前記第2の領域に書込み制御し、
前記発行回数が所定の基準値未満の第2のセグメントを前記第2の領域に書込み制御する、
ストレージ装置。
【請求項2】
前記コントローラは、
前記セグメントごとに前記読出し頻度情報を生成可能に構成され、
前記読出し頻度情報に基づいて、前記第1の領域および前記第2の領域とは異なる第3の領域に格納され前記発行回数が所定の基準値以上の第3のセグメントを前記第1の領域又は前記第2の領域に移動させ、前記第1ないし第3の領域とは異なる第4の領域に格納され前記発行回数が所定の基準値未満の第4のセグメントを前記第2の領域に移動させるか否かを判定し、
前記第1の領域又は前記第2の領域に前記第3のセグメントの有効データを書込み制御し、前記第2の領域に前記第4のセグメントの有効データを書込み制御する
請求項1に記載のストレージ装置。
【請求項3】
前記コントローラは、
データの書込みコマンドに含まれる前記読出し頻度情報を保持可能に構成され、
保持された前記読出し頻度情報に基づいてガベージコレクション又はウェアレベリングを実行可能に構成された
請求項2に記載のストレージ装置。
【請求項4】
前記コントローラは、
受信したコマンドに含まれる前記読出し頻度情報を解釈可能に構成され、
前記第1のセグメントを受信した場合に前記第4の領域から前記第4のセグメントを読み出し、前記第1の領域又は前記第2の領域に前記第1のセグメントを書込み制御し、前記第2の領域に前記第4のセグメントを書込み制御する、
請求項2に記載のストレージ装置。
【請求項5】
前記コントローラは、
受信したコマンドに含まれる前記読出し頻度情報を解釈可能に構成され、
前記第2のセグメントを受信した場合に前記第3の領域から前記第3のセグメントを読み出し、前記第1の領域又は前記第2の領域に前記第3のセグメントを書込み制御し、前記第2の領域に前記第2のセグメントを書込み制御する、
請求項2に記載のストレージ装置。
【請求項6】
前記不揮発メモリは、
第1のセルと、
第2のセルと、を有し、
前記第1のセルは、
前記第1の領域及び前記第2の領域を有し、
前記第2のセルは、
前記第1の領域及び前記第2の領域のうち前記第2の領域を有し、
前記コントローラは、
前記第1のセル及び前記第2のセルの割当情報を含むネームスペースの設定コマンドを受信可能に構成され、
前記設定コマンドに基づいて前記不揮発メモリに前記第1のセルと前記第2のセルを割当可能に構成された
請求項1に記載のストレージ装置。
【請求項7】
請求項1記載のストレージ装置と接続可能なホスト装置であって、
前記読出し頻度情報を生成可能なモジュールと、
前記読出し頻度情報を含むコマンドを前記ストレージ装置に送信可能で、前記ストレージ装置のネームスペースの設定コマンドを送信可能なホストコントローラと、
を備えたホスト装置。
【請求項8】
前記ホストコントローラは、
前記読出し頻度情報を含むコマンドを前記ストレージ装置に送信し、前記第1のセグメントの有効データを前記第1の領域に書込みさせる
請求項7に記載のホスト装置。
【請求項9】
前記ホストコントローラは、
前記読出し頻度情報を含むコマンドを前記ストレージ装置に送信し、前記第2のセグメントの有効データを前記第2の領域に書込みさせる
請求項7に記載のホスト装置。
【請求項10】
請求項1記載のストレージ装置と、
請求項7記載のホスト装置と、
を備えた情報処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、ストレージ装置、ホスト装置、情報処理システムに関する。
【背景技術】
【0002】
マス・メディアの発達、とくにインターネットの普及により、人々の前に表出する情報は加速度的に増大している。IoTを活用したセンシング技術の発達や、深層学習を代表とした大規模データの活用も活発化しており、日々蓄積される情報はますます膨大な量となっている。こうしたデータを更新頻度によって階層化管理することにより、ファイルシステムやデータベースにおいてデータ書込みのパフォーマンスが大きく向上してきた。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許出願公開第2022/0076753号明細書
【特許文献2】米国特許出願公開第2012/0297121号明細書
【特許文献3】米国特許第7859932号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の実施形態は、平均レイテンシとスループットを改善可能とするストレージ装置、ホスト装置、情報処理システムを提供する。
【課題を解決するための手段】
【0005】
本発明の実施形態によれば、不揮発メモリとコントローラとを備えたストレージ装置であって、不揮発メモリは、電圧印加回数が1回又は2回でデータ読み出し可能な第1の領域と、電圧印加回数が3回以上でデータ読み出し可能な第2の領域と、を有し、コントローラは、読出し要求単位のセグメントごとのリードコマンドの発行回数を示す情報を含む読出し頻度情報を有し、コントローラは、読出し頻度情報に基づいて、発行回数が所定の基準値以上の第1のセグメントを第1の領域又は第2の領域に書込み制御し、発行回数が所定の基準値未満の第2のセグメントを第2の領域に書込み制御する。
【図面の簡単な説明】
【0006】
図1】本発明の第1実施形態に係る情報処理システムのハードウェア構成を示すブロック図である。
図2】本発明の第1実施形態に係る情報処理システムの機能構成を示すブロック図である。
図3】本発明の第1実施形態に係る情報処理システムの機能構成の変形例を示すブロック図である。
図4】本発明の第1実施形態に係る情報処理システムのホストメモリの構成を示すブロック図である。
図5】本発明の第1実施形態に係る情報処理システムのリードカウントマップのデータ構造を示す図である。
図6】本発明の第1実施形態に係る情報処理システムの不揮発メモリにおける書込み領域の分割の概要を示す図である。
図7】本発明の第1実施形態に係る情報処理システムの不揮発メモリにおける4-4-3-4グレイコーディングのビット配置の例を示す図である。
図8】本発明の第1実施形態に係る情報処理システムの不揮発メモリにおける1-4-5-5グレイコーディングのビット配置の例を示す図である。
図9】本発明の第1実施形態に係る不揮発メモリにおけるデータプログラム後のしきい値領域を示す図である。
図10】不揮発メモリにおける4-4-3-4グレイコーディングで書き込まれたセルにおけるLowerページのデータリードの際にワードラインに印加される電圧波形の例を示す図である。
図11】不揮発メモリにおける1-4-5-5グレイコーディングで書き込まれたセルにおけるLowerページのデータリードの際にワードラインに印加される電圧波形の例を示す図である。
図12】本発明の第1実施形態に係る情報システムのコマンド処理動作を示すフローチャートである。
図13】本発明の第1実施形態に係るストレージデバイスの初期化動作の例を示すフローチャートである。
図14】本発明の第1実施形態に係るRead Coldデータのガベージコレクション候補セグメントリストへの登録動作の例を示すフローチャートである。
図15】本発明の第1実施形態に係るストレージデバイスのRead Hotデータを含むコピーコマンド受信の動作例を示すフローチャートである。
図16】本発明の第1実施形態に係るストレージデバイスのRead Coldデータを含むコピーコマンド受信の動作例を示すフローチャートである。
図17】本発明の第1実施形態に係るCPUのガベージコレクションの動作例を示すフローチャートである。
図18】本発明の第2実施形態に係るガベージコレクションの動作例を示すフローチャートである。
図19】本発明の第2実施形態に係るCleaning処理におけるRead Coldデータの移動動作例を示すフローチャートである。
図20】本発明の第3実施形態に係るRead Hotデータのコピー動作例を示すフローチャートである。
図21】本発明の第3実施形態に係るRead Coldデータのコピー動作例を示すフローチャートである。
【発明を実施するための形態】
【0007】
以下の説明において、リード頻度の高いデータを「Read Hot」、リード頻度の低いデータを「Read Cold」のように呼ぶ。また、「Read Hot」「Read Cold」の分類をHot Coldセパレーションと称する。実施形態の情報処理システムは、リード頻度の高いデータを、QLC(Quad Level Cell)や、QLCよりも多値化されたNANDのグレイコーディングにおけるデータリード時の電圧印加回数が少ないページ(電圧印加回数が1回又は2回の領域)に配置する。同様に、実施形態の情報処理システムは、リード頻度の低いデータを、QLCや、QLCよりも多値化されたNANDのグレイコーディングにおけるデータリード時の電圧印加回数が多いページ(電圧印加回数が3回以上の領域)に配置する。ここで、グレイコーディングは、前後に隣接する符号間のハミング距離が必ず1となるように符号化する符号化方法である。グレイコーディングされた符号は、ある値から隣接した値に変化する際に、常に1ビットしか変化しない。
【0008】
また、実施形態の情報処理システムにおけるストレージデバイスは、データがRead Hotであることを示す情報をホストから受け取るインタフェースを具備する。さらに、実施形態のストレージデバイスは、Read Hotデータを配置する領域のサイズをホストが指定するインタフェースを具備する。
【0009】
(第1実施形態)
第1実施形態の情報処理システムは、セグメントのリード頻度に基づくHot Coldセパレーションを実施する。Hot Coldセパレーションの結果に基づき、情報処理システムは、リード頻度が高いデータをストレージデバイスの読出しが高速な領域(SLC領域)に格納し、リード頻度が低いデータはストレージデバイスの読出しが低速な領域(QLC領域)に格納する。
【0010】
図1は、第1実施形態の情報処理システム101の構成を示す。第1実施形態の情報処理システム101は、ホスト102及びストレージデバイス105を有する。
【0011】
ホスト102は、例えば、サーバ、パーソナルコンピュータ、車載デバイス、又はモバイル機器に例示される情報処理装置である。ホスト102は、所定のコマンドを発行してストレージデバイス105に送信する。
【0012】
ストレージデバイス105は、不揮発メモリを用いてデータを永続的に記憶する装置である。ストレージデバイス105は、UFS規格やeMMC規格、NVMe規格などに準拠した組み込み用途のフラッシュメモリやSSDである。ストレージデバイス105は、ホスト102と通信可能に接続される。ストレージデバイス105は、ホスト102に対する外部記憶装置として機能する。ストレージデバイス105は、受信したコマンドに応じてデータの書込み(ライト)、読出し(リード)、消去(イレース)、コピーなどを実行する。
【0013】
ホスト102は、ホストコントローラ103とホストメモリ104を有する。
【0014】
ホストコントローラ103は、ストレージデバイス105と接続するハードウェアである。ホストコントローラ103は、例えば、SoCとして実装され得る。ホストコントローラ103は、CPUを有し(図示せず)、ストレージデバイス105にコマンドを発行するための処理を行う。
【0015】
ホストメモリ104は、例えば、DRAMなどに例示される揮発性メモリである。ホストメモリ104は、ホストコントローラ103の処理に用いるデータを記憶する。
【0016】
ストレージデバイス105は、コントローラ106、バッファメモリ111および不揮発メモリ112を有する。
【0017】
コントローラ106は、不揮発メモリ112へのアクセスを実現するハードウェアである。コントローラ106は、ホスト102からのコマンドを受けてデータ処理を実行する。コントローラ106は、ホスト102からライト(Write)処理を要求するコマンド(以下「ライトコマンド」と称する。)を受けることがある。
【0018】
バッファメモリ111は、例えば、SRAMやDRAMなどに例示される揮発性メモリである。バッファメモリ111は、ホスト102から入力される書込みデータを一時的に保持するメモリとして機能する。また、バッファメモリ111は、不揮発メモリ112から読み出された読み出しデータをホスト102に転送する前に一時的に保持するメモリとして機能する。
【0019】
不揮発メモリ112は、外部からの給電がなくても記憶内容を維持可能なメモリ素子である。不揮発メモリ112は、例えば、NAND型フラッシュメモリにより構成され得る。不揮発メモリ112は、フラッシュコントローラと複数のフラッシュメモリチップを有する(図示せず)。フラッシュコントローラは、フラッシュメモリチップに対するデータの書込み、読出し、及び消去を制御する機能部である。フラッシュメモリチップは、チップ内に配列された多数のメモリセルにビットデータを書き込み、又は、書込まれたデータを読み出し、又は、書込まれたデータをブロック単位で消去したりできるように構成された素子である。
【0020】
コントローラ106は、ホストインタフェース107、バッファインタフェース108、メモリインタフェース109、CPU110を有する。
【0021】
ホストインタフェース107は、ホスト102との通信を制御するコントローラである。ホストインタフェース107は、ホスト102と接続するインタフェースとして機能する。
【0022】
バッファインタフェース108は、コントローラ106のバッファメモリ111へのアクセスを制御するコントローラである。
【0023】
メモリインタフェース109は、不揮発メモリ112との通信を制御するコントローラである。メモリインタフェース109は、バスを介して不揮発メモリ112と接続される。
【0024】
CPU110は、演算装置(Central Processing Unit)である。CPU110は、ホストインタフェース107が受けたコマンドを解釈し実行する。
【0025】
(機能構成)
図2を参照して、実施形態の情報処理システム101の機能構成を説明する。図2は、情報処理システムの機能構成を示すブロック図である。先に説明した通り、第1実施形態の情報処理システム101は、ホスト102及びストレージデバイス105を有する。
【0026】
まず、ホスト102の機能について説明する。ホスト102は、機能として、アプリケーション201およびOS202を有する。
【0027】
アプリケーション201は、ストレージデバイス105にデータアクセスする機能部である。アプリケーション201は、データアクセスを実行するためVFSコールをOS202に発行する。VFSコールは、OS202の一機能である後述する仮想ファイルシステム(Virtual File System: VFS)に対してリードやライトなどの実行を依頼する通信である。
【0028】
OS202は、ホスト102の基幹システムをなす機能部である。OS202は、デバイス操作やプロセス操作を管理する。OS202は、その機能の一つとしてVFS203を有する。
【0029】
VFS203は、アプリケーション201と実体のファイルシステムの間を仲介する仮想ファイルシステムをなす機能部である。VFS203は、アプリケーション201が発行したVFSコールを受信する。
【0030】
VFS203は、VFSコール処理部204、I/O送信部205、書込領域管理部206a、I/O完了処理部209を具備する。
【0031】
VFSコール処理部204は、アプリケーション201が発行したVFSコールを処理する機能部である。VFSコールは、例えば、リード(read)やライト(write)などのコマンドを含んでいる。
【0032】
I/O送信部205は、VFSコール処理部204が処理したVFSコールに基づいて送信コマンドを生成する機能部である。I/O送信部205は、生成した送信コマンドをストレージデバイス105に送信する。
【0033】
書込み領域管理部206aは、ストレージデバイス105のLBA(Logical Block Addressing)、Stream、Zoneなどの領域に格納されたデータを、書込み、読出し、又はデータ消去単位のセグメントで管理する機能部である。LBAが指し示すデータとセグメントのデータサイズとが同じとなり得る。図2に示す例では、書込み領域管理部206aはOS202における機能として例示するが、これには限定されない。データベース等のアプリケーション201の機能部としても実装し得る。
【0034】
I/O完了処理部209は、ストレージデバイス105から送られるコマンド処理完了通知を受け、VFSコールの完了をアプリケーション201に通知する機能部である。
【0035】
書込み領域管理部206aは、リードカウントマップ207aおよびビットマップ208aを具備する。
【0036】
リードカウントマップ207aは、セグメントに対してリードコマンドを実行した回数のカウント値を保持する機能部である。リードカウントマップ207aは、ガベージコレクションやウェアレベリングによってデータの移動が発生するときに参照され、リード頻度に基づいてデータを分類するために使用され得る。
【0037】
ビットマップ208aは、セグメントに含まれる有効なデータを管理する機能部である。ビットマップ208aは、ガベージコレクションやウェアレベリングでデータを移動させる領域の選択に使用され得る。
【0038】
次に、ストレージデバイス105の機能について説明する。ストレージデバイス105は、機能として、ホストインタフェース部210、メモリ変換層211、メモリインタフェース部212、不揮発メモリ部213を有する。
【0039】
ホストインタフェース部210は、I/O送信部205が送信した送信コマンドを解釈し、不揮発メモリ部213についてデータの格納や取得を実行する機能部である。ホストインタフェース部210は、送信コマンドの内容を実行すると、コマンド処理完了の通知を発行する。
【0040】
CPU110のメモリ変換層211は、論理アドレスと物理アドレスの変換を行う機能部である。
【0041】
メモリインタフェース部212は、メモリ変換層211が変換した物理アドレスに基づいて不揮発メモリ部213へのアクセスを実行する機能部である。
【0042】
不揮発メモリ部213は、データを格納する機能部である。
【0043】
(情報処理システムの変形例)
ここで、図3を参照して、実施形態の情報処理システム101の変形例の機能構成を説明する。図3は、情報処理システムの機能構成の変形例を示すブロック図である。この変形例の情報処理システム101aは、ホスト102におけるVFS203の書込み領域管理部206aに代えて、ストレージデバイス105におけるCPU110の機能として書込み領域管理部206bを備えたものである。以下の説明において、情報処理システム101と共通する要素については同一の符号を付して示し、重複する説明を省略する。
【0044】
図3に示すように、実施形態の変形例の情報処理システム101aでは、ストレージデバイス105のCPU110が書込み領域管理部206bを具備する。
【0045】
書込み領域管理部206bは、図2における書込み領域管理部206aに対応し、共通の機能を有する機能部である。書込み領域管理部206bは、LBA、Stream、Zoneなどの領域に格納されたデータを、書込み、読出し、又はデータ消去単位のセグメントで管理する。
【0046】
書込み領域管理部206bは、リードカウントマップ207b及びビットマップ208b具備する。リードカウントマップ207b及びビットマップ208bは、リードカウントマップ207a及びビットマップ208aと対応し、それぞれ共通する機能を有する。
【0047】
情報処理システム101aは、VFS203上の書込み領域管理部206aおよびCPU110上の206bの両者を具備し得る。この場合、採用するインタフェース(例えば、PCIe)によっては、ホスト102とストレージデバイス105のどちらがマスターとして機能し得る。
【0048】
図4を参照して、ホスト102のホストメモリ104の機能構成の一例について詳細に説明する。図4は、実施形態の情報処理システムのホストメモリ104の構成を示すブロック図である。ホストメモリ104は、I/Oコマンド送信キュー301、I/Oコマンド完了キュー302、データバッファ領域303を有する。図4に示すホストメモリ104の機能構成は一例であり、I/Oコマンド送信キュー301やI/Oコマンド完了キュー302は、ホストメモリ104から独立したハードウェアで実装され得る。
【0049】
I/Oコマンド送信キュー301は、I/O送信部205が送信するコマンドを一時的に記憶する。I/Oコマンド送信キュー301は、例えば、リングバッファにより実現されるメモリである。I/Oコマンド送信キュー301は、発行されたコマンドをエンキューする。I/Oコマンド送信キュー301は、エントリを備える。エントリは、ヘッド(Head)とテール(Tail)という2つの変数によって管理され得る。ストレージデバイス105は、ヘッドポインタおよびテールポインタに基づいて、各キューの参照箇所を特定することができる。例えば、新たにエンキューされたコマンド情報の場所を特定することができる。
【0050】
I/Oコマンド完了キュー302は、I/O完了処理部209が通知するVFSコールの完了通知を一時的に記憶する。I/Oコマンド完了キュー302は、例えば、リングバッファにより実現されるメモリである。I/Oコマンド完了キュー302は、通知するVFS完了通知をエンキューする。I/Oコマンド完了キュー302は、エントリを備える。エントリは、ヘッド(Head)とテール(Tail)という2つの変数によって管理され得る。ホスト102は、ヘッドポインタおよびテールポインタに基づいて、各キューの参照箇所を特定することができる。例えば、新たにエンキューされたVFS完了通知の場所を特定することができる。
【0051】
データバッファ303は、ストレージデバイス105に書込むデータやストレージデバイス105から読み出すデータを一時的に記憶する。
【0052】
図5は、書込み領域管理部206aが備えるリードカウントマップ207aのデータ構造の具体例を示す。リードカウントマップ207aは、セグメント番号(Segment Number)401、リードカウント(Read Count)402、リードフラグ(Read Flag)403を対応付ける情報(読出し頻度情報)である。リードカウントマップ207aは、二次元的なデータ構造を有し得る。例えば、リードカウントマップ207aは、リードカウント402のデータ列とリードフラグ403のデータ列を有し得る。
【0053】
同様に、書込み領域管理部206bは、リードカウントマップ207bを有する。リードカウントマップ207bは、リードカウントマップ207aと共通の構成を有する。
【0054】
セグメント番号401は、セグメントを特定するエントリである。図5に示す例では、セグメント番号401は、筆頭のエントリ404aとして「1」、続くエントリ404b~404dとして「2」~「4」を有する。すなわち、セグメント番号401は、エントリ毎に固有の値を有する。
【0055】
リードカウント402は、セグメントごとにリードコマンドを発行した回数のカウント結果を保持するエントリである。図5に示す例では、リードカウント402は、筆頭のエントリ404aとして「100」、続くエントリ404b~404dとして「2」「5」「10」の値を有する。
【0056】
リードフラグ403は、書込み領域管理部206aまたは206bがリードカウント402の列に保持されたデータをもとに判定した判定結果を保持するエントリである。図5に示す例では、判定結果として、エントリ404aにおいてHotデータを示す「Hot」がエントリされ、エントリ404bにおいてColdデータを示す「Cold」がエントリされている。
【0057】
すなわち、読出し頻度情報をなすリードカウントマップ207a,207bは、セグメントごとにリードコマンドを発行した回数を示す情報と、当該リードコマンドを発行した回数に対応しHotデータ又はColdデータのいずれかを示す情報(読出し頻度を示す情報)が含まれ得る。
【0058】
図5に示す例において、エントリ404dでは、リード回数を示すリードカウント402が10回である。HotデータとColdデータを判定する基準値の設定が、例えば、8であれば、エントリ404dのセグメントに格納されたデータはRead Hotデータであると判定され得る。エントリ404dがRead Hotデータと判定されると、ガベージコレクションやウェアレベリングによりデータの移動が発生する場合、当該セグメントのデータは、Read Hotデータとしてストレージデバイス105に格納される。併せて、エントリ404dのリードフラグ403のエントリとして「Hot」のフラグがリードカウントマップ207aまたは207bに格納される。
【0059】
(不揮発メモリの書込み領域)
図6を参照して、不揮発メモリ112の書込み領域の分割と対応するデータ属性について説明する。図6は、不揮発メモリ112の書込み領域の分割の概要を示す図である。図6に示すように、不揮発メモリ112は、SLC領域501とQLC領域504が含まれ得るNAND型フラッシュメモリである。すなわち、不揮発メモリ112は、1セル当たりに書き込むビット数が異なる領域が含まれ得る。SLC領域501は、1セルに1ビットを格納するSLC方式の領域である。多値化されたセル領域としてのQLC領域は、1セルに4ビットを格納するQLC方式の領域である。
【0060】
図6に示すように、SLC領域501は、リード頻度の高いRead Hotデータ502aと上書き頻度の高いWrite Hotデータ503が格納され得る。これらのデータをSLC領域に書き込むことで、SLC領域に空き容量がある間はライト性能を向上させるほか、データのリード性能が向上する。一方、SLC領域501からQLC領域504へのデータ移動が頻繁に発生すると、I/O性能が下がるほかにNAND型フラッシュメモリの書込み/消去サイクルを早めてしまう。これは、データの誤り率が高いセルを増加させる要因になる。
【0061】
図6に示すように、QLC領域504は、上書き頻度の低いWrite Coldデータ505が格納され得る。さらに、Write Coldデータ505は、Read Hotデータ502bとRead Coldデータ506に分類可能である。Read Hotデータ502bは、Read Hotデータ格納領域507に格納される。
【0062】
すなわち、セグメントごとのリードコマンド発行回数が所定の基準値以上の(リード頻度の高い)第1のセグメントに係るRead Hotデータ502aおよび502bは、SLC領域501(第1の領域)およびQLC領域504(第2の領域)のセル(第1のセル)に書込まれる。セグメントごとのリードコマンド発行回数が所定の基準値未満の(Read Hotデータ502a,502bよりもリード頻度の低い)第2のセグメントに係るRead Coldデータ506は、QLC領域504(第2の領域)のセル(第2のセル)に書込まれる。
【0063】
(データの書込みとコーディング方式の選択)
NAND型フラッシュメモリの1セルに多値のデータを書き込む場合、リード時のエラー率やリード速度によって適切なグレイコーディングが選択される。QLC方式を例に説明をすると、ストレージデバイス105のQoSを担保するため、QLC方式の各ページのリードレイテンシは差がないことが望ましい。
【0064】
図7は、4-4-3-4コーディングを採用した場合のビット配置の例を示す図である。図7において、S0~S15は、しきい値領域内のしきい値分布である。セルに書込みを行った後のビット配置は、そのしきい値分布の状態によってS0からS15まで16通りに表すことができる。4-4-3-4コーディングは、16個のしきい値領域間の15個の境界を4つのページに分配する際に、Lowerページに4つ、Middleページに4つ、Upperページに3つ、Topページに4つの境界を分配するコーディングである。このコーディングは、ページ間の境界数の偏りを小さく分配したものである。
【0065】
図7に示すように、それぞれのしきい値分布に対してTop、Upper、Middle、Lowerページのときのビットが割り当てられる。Lowerページのみデータを読み出す場合を例にとると、しきい値分布のS0とS1、S3とS4、S5とS6、S10とS11の間でビットの反転が発生するため、ビットの状態を確定するには少なくとも4回の判定を行う必要がある。
【0066】
一方、図8は、1-4-5-5コーディングを採用した場合のビット配置の例を示す図である。1-4-5-5コーディングは、16個のしきい値領域間の15個の境界を4つのページに分配する際に、Lowerページに1つ、Middleページに4つ、Upperページに5つ、Topページに5つの境界を分配するコーディングである。
【0067】
Lowerページのみデータを読み出す場合を例にとると、しきい値分布のS7とS8の間でのみビット反転が発生するため、ビットの状態を確定するには少なくとも1回の判定を行えばよい。1-4-5-5コーディングの採用により、ビットを確定させるための判定回数を大幅に減少させることが可能になる。Read Hotデータ502bをLowerページに書き込むことで高速なデータ読み出し・書き込みを実現する。一方、Read Coldデータ506をTopページ、Upperページ、Middleページに書き込むことで、システム全体のパフォーマンスが微増する読み出し時間の影響を受けにくくする。
【0068】
また、Lowerページに対してはSLCのランダマイズが行われ、それ以外のページではS0からS7とS8からS15とでTLCのランダマイズが行われることで、特定のしきい値分布に集中した書込みを防ぎ、NANDセルの寿命を均一化することができる。
【0069】
この実施形態の説明では1-4-5-5コーディングを例示したが、これには限定されない。判定回数(電圧印加回数)が1回又は2回でデータ読み出し可能なコーディングであれば、同様の効果を奏することができる。
【0070】
図9は、NAND型フラッシュメモリにQLC方式のデータを書き込む場合のしきい値領域の例を示す図である。図9において、「(T1)」は、イレース状態を示し、「(T2)」は、QLCデータが書き込まれた状態を示す。図9のS0からS15のしきい値分布は、図7及び図8に示すS0からS15に対応する。
【0071】
それぞれの分布の間にしきい値電圧Vread1~Vread15を設定し、しきい値分布を判定することにより、図7及び図8のコーディングによるビット割り当てと合わせてページに書き込まれた値を確定する。例えば、しきい値電圧Vread8を印加し、ビットラインに電流が流れればS0からS7の分布、ビットラインに電流が流れなければS8からS15の分布であると判定する。図8の1-4-5-5コーディングを採用した場合、しきい値電圧Vread8の電圧印加1回でLowerページのデータ読み出しを完了させることが可能になる。
【0072】
図10は、図7に示す4-4-3-4コーディングを用いる場合にLowerページのデータを読み出す際にワードラインに印加される電圧波形の例を示す図である。図10では、コマンドをストレージデバイス105が受信した時刻tが0である。図10において、コマンドを受信してから電圧が印加されるまでの時間は、アドレスの転送などのセットアップ時間である(図中「setup」)。その後、図7のLowerページにおいてビットが反転する境界にあたるしきい値の電圧を、Vread1、Vread4、Vread6、Vread11と順番に印加してデータを読み出す。
【0073】
図11は、図8に示す1-4-5-5コーディングを用いる場合にLowerページのデータを読み出す際にワードラインに印加される電圧波形の例を示す図である。図11においても、コマンドをストレージデバイス105が受信した時刻tが0である。セットアップ後(図中「setup」)、図8のLowerページにおいてビットが反転する境界にあたるしきい値の電圧Vread8を印加してデータを読み出す。すなわち、図10に示す例と比較して、リード時に電圧を印加する時間が大幅に削減され、Read Hotデータ502bの高速な読み出しを可能にする。
【0074】
(コマンド処理動作)
次に、図12を参照して、実施形態の情報システムのコマンド処理動作を説明する。図12は、情報システムのコマンド処理動作を示すフローチャートである。
【0075】
アプリケーション201は、VFSコールを発行する(S800)。VFSコールは、リード、ライト、デリート、コピーなどのコマンド要求を含み得る。
【0076】
VFSコール処理部204は、VFSコールを受信すると、対応するコマンドを発行する(S801)。
【0077】
発行されたコマンドは、I/Oコマンド送信キュー301にエンキューされる(S802)。
【0078】
I/O送信部205は、ストレージデバイス105にコマンド発行を通知する(S803)。
【0079】
通知を受けると、ホストインタフェース部210は、I/Oコマンド送信キュー301にアクセスしてコマンドを取得する(S804)。
【0080】
ホストインタフェース部210は、受信したコマンドを解釈する(S805)。
【0081】
ホストインタフェース部210は、データの書込み領域情報を取得する(S806)。書込み領域情報は、リードコマンドやデリートコマンドであればデータが書き込まれている不揮発メモリ112の領域の情報である。ライトコマンドやコピーコマンドの場合、コマンドの書込み先情報に書込み領域情報が含まれる。
【0082】
ホストインタフェース部210は、書込み領域情報に基づきコマンド処理を駆動する(S807)。
【0083】
メモリ変換層211は、ホストインタフェース部210のコマンド処理に係るアドレスを変換する(S808)。
【0084】
メモリインタフェース部212は、不揮発メモリ112に対してデータのリード、ライト、デリートを実施する(S809)。メモリインタフェース部212は、コマンドがリードの場合はデータバッファ領域303にデータを送信する。メモリインタフェース部212は、コマンドがライトの場合は、データバッファ領域303からデータを取得する。
【0085】
ホストインタフェース部210は、コマンドの実行が完了すると、書込み領域情報を含むCQEを作成する(S810)。
【0086】
ホストインタフェース部210は、I/Oコマンド完了キュー302にアクセスし、CQEをエンキューする(S811)。ホストインタフェース部210は、コマンドの終了をI/O完了処理部209に通知する。
【0087】
I/O完了処理部209は、受け付けた通知に基づいてVFSコールの完了をアプリケーション201に通知する。アプリケーション201は、I/Oコマンド完了キュー302を確認することでコマンドの実行完了を取得することができる(S812)。
【0088】
(初期化動作)
次に、図13を参照して、ストレージデバイス105の初期化動作を説明する。図13は、ストレージデバイス105の初期化動作の例を示すフローチャートである。初期化動作において、Read Hotデータ格納領域507のサイズも設定され得る。
【0089】
ホスト102は、ストレージデバイス105のデバイスハンドルを取得する(S901)。
【0090】
デバイスハンドルを取得すると、ホスト102は、Read Hot用のQLC領域の割当情報を含むnamespace管理コマンドを生成する(S902)。
【0091】
ホスト102は、ストレージデバイス105に対して生成したnamespace管理コマンドを送信する(S903)。namesupace管理コマンドを受信したストレージデバイス105は、Read Hot用のQLCデータ領域を設定する。
【0092】
(Read Coldデータの登録)
次に、図14を参照して、書込み領域管理部206aがRead Coldデータをガベージコレクション(GC)候補セグメントリストに登録する動作について説明する。図14は、Read Coldデータのガベージコレクション候補セグメントリストへの登録動作の例を示すフローチャートである。
【0093】
書込み領域管理部206aは、不揮発メモリ112にデータが書き込まれた時刻とビットマップ208aをもとにGC候補セグメントを決定する。ガベージコレクションは大きく分けると2通りの目的があり、一つはホスト102のI/O処理を止めてフォアグラウンドで実施し空き容量を確保する場合、もう一つはI/O要求が少ないタイミングにおいてバックグラウンドで実施しストレージデバイス105のパフォーマンスを向上させる場合である。GC候補セグメントリストに登録されたセグメントは、後者のガベージコレクションに使用されることによりストレージデバイスのパフォーマンスを向上させることができる。ただし、前者のガベージコレクションに使用され得る。
【0094】
書込み領域管理部206aは、リードカウントマップ207aをもとにGC候補セグメントリストを作成する。書込み領域管理部206aは、リードカウントマップ207aを参照し、Coldのフラグが立っている静的なRead Coldデータを含むセグメントを抽出する(S1001)。
【0095】
書込み領域管理部206aは、リードカウントマップ207aを参照し、Coldフラグが立っていないセグメントのうち読み出し回数が基準値よりも少ないセグメントを動的なRead Coldデータを含むセグメントと判定する(S1002)。
【0096】
書込み領域管理部206aは、ファイルの作成時刻またはストレージデバイスのメタデータ領域に含まれる不揮発メモリ112への書込み時刻情報をもとに、書込みから所定の時間が経っているセグメントを抽出する(S1003)。
【0097】
抽出されたセグメント中の有効データが所定の基準値よりも多い場合(S1004でno)、処理を終了する。抽出されたセグメント中の有効データが所定の基準値よりも少なければ(S1004でyes)、当該セグメントをRead ColdデータのGC候補セグメントリストに登録する(S1005)。
【0098】
なお、書込み領域管理部206aに代えて、又は、書込み領域管理部206aに加えて、書込み領域管理部206bを備える場合も同様の動作をする。書き込み領域管理部206bは、リードカウントマップ207bとビットマップ208bを参照し、同様の処理を実施する。
【0099】
(Read Hotデータライトコマンドの受信動作)
次に、図15を参照して、ホストインタフェース107がRead Hotデータのライトまたはコピーコマンドを受信したときの動作について説明する。図15は、ストレージデバイス105におけるRead Hotデータを含むコピーコマンド受信の動作例を示すフローチャートである。
【0100】
ホストインタフェース107は、I/Oコマンド送信キュー301にアクセスし、Read Hotデータを示すフラグを含むコマンドを受信する(S1101)。図5に示す例では、セグメント番号1番のデータ(第1のセグメント)が該当する。
【0101】
ホストインタフェース107は、コマンドを解釈し、コピーコマンドであるか否かを判定する(S1102)。
【0102】
コマンドがコピーコマンドの場合(S1102でyes)、メモリインタフェース109は、コマンドに含まれる移動元情報をもとにRead Hotデータを不揮発メモリ112から読み出す(S1103)。
【0103】
コマンドがコピーコマンドではない場合(S1102でno)、ホストインタフェース107は、ホストメモリ104にアクセスし、ホストからRead Hotデータを受信する(S1104)。
【0104】
CPU110は、Read ColdデータのGC候補セグメントリストにRead ColdデータのGC候補セグメント(第4のセグメント)が登録されているか否か判定する(S1105)。
【0105】
Read ColdデータのGC候補セグメントリストに登録されている場合(S1105でyes)、メモリインタフェース109は、Read ColdデータのGC候補セグメントからデータを読み出す(S1106)。
【0106】
CPU110は、Read HotデータとRead Coldデータで不揮発化するデータブロックを構成する(S1107)。
【0107】
メモリインタフェース109は、QLC領域504(第2の領域)に図8に示した不均衡コーディングでデータを書き込む(S1108)。
【0108】
Read ColdデータのGC候補セグメントリストに登録されていない場合(S1105でno)、CPU110は、Read HotデータをSLC領域501(第1の領域)に書き込む(S1109)。
【0109】
データの書込みが完了したら、CPU110は、メモリ変換層211に含まれるアドレス管理マップと、書込み領域管理部206に含まれるリードカウントマップ207を更新する(S1110)。CPU110は、新たに書き込んだデータのアドレス情報を登録してからガベージコレクションにより移動した元データの無効化を行い、Hot Coldデータのフラグ設定を行う。
【0110】
実施形態の情報処理システム101によれば、ブロックを構成するために必要なRead Coldデータをホストがライトするまで待つ必要がなくなる。
【0111】
(Read Coldデータのライトコマンドの受信動作)
次に、図16を参照して、ホストインタフェース107がRead Coldデータのライトまたはコピーコマンドを受信したときの動作を説明する。図16は、ストレージデバイスにおけるRead Coldデータを含むコピーコマンド受信の動作例を示すフローチャートである。
【0112】
ホストインタフェース107は、I/Oコマンド送信キュー301にアクセスし、Read Coldデータを示すフラグを含むコマンドを受信する(S1201)。図5に示す例では、セグメント番号2番のデータ(第2のセグメント)が該当する。
【0113】
ホストインタフェース107は、コマンドを解釈し、コピーコマンドであるか否かを判定する(S1202)。
【0114】
コマンドがコピーコマンドの場合(S1202でyes)、メモリインタフェース109は、コマンドの移動元情報をもとにRead Coldデータを不揮発メモリ112から読み出す(S1203)。
【0115】
コマンドがコピーコマンドではない場合(S1202でno)、ホストインタフェース107は、ホストメモリ104にアクセスし、ホストからRead Coldデータを受信する(S1204)。
【0116】
CPU110は、Write ColdでRead Hotなデータ(第3のセグメント)がSLC領域501に存在するか判定する(S1205)。
【0117】
存在する場合(S1205でyes)、SLC領域501のRead Hotデータを読み出す(S1206)。
【0118】
CPU110は、Read HotデータとRead Coldデータで不揮発化するデータブロックを構成する(S1207)。
【0119】
メモリインタフェース109は、QLC領域504(第2の領域)に図8に示した不均衡コーディングでデータを書き込む(S1208)。
【0120】
存在しない場合(S1205でno)、Read ColdデータをQLC領域504(第2の領域)に書き込む(S1209)。
【0121】
データの書込みが完了したら、メモリ変換層211に含まれるアドレス管理マップと、書込み領域管理部206に含まれるリードカウントマップ207を更新し(S1210)、新たに書き込んだデータのアドレス情報の登録をしてからガベージコレクションにより移動した元データの無効化を行い、Hot Coldのフラグ設定を行う。
【0122】
実施形態の情報処理システム101によれば、ブロックを構成するために必要なRead Hotデータをホストがライトするまで待つ必要がなくなる。
【0123】
(リード頻度に基づくセパレーション動作)
図17を参照して、CPU110によるリード頻度に基づくHot Coldセパレーションを実現するガベージコレクションの動作を説明する。図17は、CPU110におけるガベージコレクションの動作例を示すフローチャートである。
【0124】
CPU110は、リードカウントマップ207を参照し、Read Hotなセグメントを抽出する(S1301)。
【0125】
また、CPU110は、Read Hotなセグメントのうち、Hot Coldセパレーションを実施されていないセグメントをRead HotのGC候補セグメントとして抽出する(S1302)。
【0126】
CPU110は、Read HotのGC候補セグメントが書込みから時間が経過しているか否か、あるいは有効データが少ないか否かを判定する(S1303)。
【0127】
条件を満たさない場合(S1303でno)、処理を終了する。条件を満たす場合(S1303でyes)、CPU110は、Read ColdのGC候補セグメントが存在するか判定する(S1304)。
【0128】
存在しない場合(S1304でno)、処理を終了する。存在する場合(S1304でyes)、CPU110は、ガベージコレクションのフローを実施する。
【0129】
メモリインタフェース109は、Read HotのGC候補セグメントからデータを読み出す(S1305)。
【0130】
また、CPU110は、Read ColdデータをRead ColdのGC候補セグメントから読み出す(S1306)。
【0131】
CPU110は、Read HotデータとRead Coldデータで不揮発化するデータブロックを構成する(S1307)。
【0132】
メモリインタフェース109は、QLC領域504に図8に示した不均衡コーディングでデータを書き込む(S1308)。
【0133】
データの書込みが完了したら、CPU110は、メモリ変換層211に含まれるアドレス管理マップと、書込み領域管理部206に含まれるリードカウントマップ207を更新し(S1309)、新たに書き込んだデータのアドレス情報の登録をしてからガベージコレクションにより移動した元データの無効化を行い、Hot Coldのフラグ設定を行う。
【0134】
本発明の実施形態の情報処理システムにより、NANDの書込/消去サイクルを縮めることなく、高速なReadを実現することができる。
【0135】
また、本発明の実施形態の情報処理システムにおけるストレージデバイスにより、ホストとストレージデバイスとが協調したRead頻度に基づくHot Coldセパレーションを実現する。
【0136】
本発明の実施形態の情報処理システムにより、平均レイテンシとスループットを改善することができる。この実施形態の情報処理システムは、不揮発メモリの同一のセルに読み出し速度が高速な領域と低速な領域を持つ。
【0137】
本発明の実施形態における書込み領域管理部によれば、ホストが明示的にデータのリード頻度を指示しなくとも、ストレージデバイスがHot Coldを判定し、ガベージコレクションやウェアレベリングによりセパレーションを実現することができる。
【0138】
実施形態の情報処理システム101によれば、Hotデータはリードレイテンシが小さい領域に配置される。Hotデータは、QLC領域に書き込まれているものの、多値NANDをSLCとして利用する疑似SLCと同程度のリードレイテンシを実現することができる。
【0139】
実施形態の情報処理システム101によれば、コマンド受信およびバックグラウンドで処理されるガベージコレクションにおけるデータブロックの作成に要する処理時間を短縮することができる。
【0140】
実施形態の情報処理システム101によれば、バックグラウンドのガベージコレクション完了後のリードコマンドに対する平均レイテンシやスループットを改善することができる。
【0141】
実施形態の情報処理システム101によれば、不均衡コーディングを採用したページに対してRead Coldデータを配置することで平均レイテンシとスループットの悪化を抑えることができる。また、実施形態の情報処理システム101によれば、不均衡コーディングとして1-4-5-5コーディングなどを採用することで、極端なテールレイテンシの増加を防ぐことができる。
【0142】
(第2実施形態)
続いて、図18を参照して第2実施形態の動作を詳細に説明する。図18は、第2実施形態に係るガベージコレクションの動作例を示すフローチャートである。第2実施形態では、ガベージコレクションがホスト側で実施され得る。例えば、LSF(Log Structured Filesystem)では、ホストで実施されるガベージコレクションをCleaningと呼んでいる。以下、ホストで実施されるガベージコレクション処理をクリーニング処理と称する。また、以下の説明において、第1実施形態と共通する要素については共通の符号を付して示し、重複する説明を省略する。
【0143】
ホスト102の書込み領域管理部206aは、リードカウントマップ207aを参照し、Read Hotなセグメントを抽出する(S1401)。
【0144】
書込み領域管理部206aは、Read Hotなセグメントのうち、Hot Coldセパレーションを実施されていないセグメントをRead HotのGC候補セグメントとして抽出する(S1402)。
【0145】
書込み領域管理部206aは、Read HotのGC候補セグメントが書込みから所定の時間が経過しているか否か、有効データが少ないか否かを判定する(S1403)。
【0146】
条件を満たさない場合(S1403でno)、書込み領域管理部206aは処理を終了する。条件を満たす場合(S1403でyes)、ホスト102は、Cleaningのフローを実施する。ホスト102はI/Oを発行し、ストレージデバイス105からRead HotのGC候補セグメントを読み出す(S1404)。
【0147】
ホスト102は、読み出したRead Hotデータから不揮発化するデータブロックを構成する(S1405)。
【0148】
ホスト102は、Read Hotデータを示すフラグを立て、ストレージデバイス105に対してライトコマンドを生成してデータを送信する(S1406)。
【0149】
ホスト102は、データの移動に伴い新たに書き込んだデータのアドレス情報の登録を行い、アドレス管理マップおよびリードカウントマップ207aを更新して、Read Hotのフラグを設定する(S1407)。
【0150】
アドレス管理マップの更新後、ホスト102は、Read HotのGC候補セグメントのデリートコマンドをストレージデバイス105に送信し、使用されていた領域を解放する(S1408)。
【0151】
続いて、図19を参照して、Cleaning処理におけるRead Coldデータの移動について説明する。図19は、第2実施形態に係るCleaning処理におけるRead Coldデータの移動動作例を示すフローチャートである。
【0152】
ホスト102は、ストレージデバイス105に対してI/Oを発行し、Read ColdのGC候補セグメントを読み出す(S1501)。
【0153】
ホスト102は、読み出したRead Hotデータから不揮発化するデータブロックを構成する(S1502)。
【0154】
ホスト102は、Read Coldデータを示すフラグをたて、ストレージデバイス105に対してライトコマンドを発行してデータを送信する(S1503)。
【0155】
ホスト102は、データの移動に伴い新たに書き込んだデータのアドレス情報の登録を行い、アドレス管理マップおよびリードカウントマップ207を更新して、Read Coldのフラグを設定する(S1504)。
【0156】
アドレス管理マップの更新後、ホスト102は、Read ColdのGC候補セグメントのデリートコマンドをストレージデバイス105に送信し、使用されていた領域を解放する。(S1505)。
【0157】
実施形態の情報処理システム101によれば、Zoned Storageのような追記型のストレージを使用する場合やLSFのようにホストが主体となってGCを行う情報処理システムにおいても、リードのHot Coldセパレーションが可能となり、リードの平均レイテンシやスループットを改善することができる。
【0158】
(第3実施形態)
続いて、図20を参照して第3実施形態の動作を詳細に説明する。図20は、第3実施形態に係るRead Hotデータのコピー動作例を示すフローチャートである。第3実施形態では、ガベージコレクションがホストで実施される情報処理システム101において、データのコピーコマンドが実装される例である。また、以下の説明において、第1及び第2実施形態と共通する要素については共通の符号を付して示し、重複する説明を省略する。
【0159】
図20は、コピーコマンドの発行によりRead Hotデータを移動する動作を示す。ホスト102の書込み領域管理部206aは、リードカウントマップ207を参照し、Read Hotなセグメントを抽出する(S1601)。
【0160】
また、書込み領域管理部206aは、Read Hotなセグメントのうち、Hot Coldセパレーションが実施されていないセグメントをRead HotのGC候補セグメントとして抽出する(S1602)。
【0161】
ホスト102は、Read HotのGC候補セグメントが書込みから所定の時間が経過しているか否か、有効データが少ないか否かを判定する(S1603)。
【0162】
条件を満たさない場合(S1603でno)、処理を終了する。条件を満たす場合(S1603でyes)、ホスト102は、コピーコマンドを用いたCleaningのフローを実施する。ホスト102は、Read Hotデータを示すフラグを立て、移動元セグメントの有効データのビットマップと移動先セグメント情報を含むコピーコマンドを生成しストレージデバイス105に送信する(S1604)。
【0163】
ホスト102は、データの移動に伴い新たに書き込んだデータのアドレス情報の登録を行い、アドレス管理マップおよびリードカウントマップ207を更新して、Read Hotのフラグを設定する(S1605)。
【0164】
アドレス管理マップの更新後、ホスト102は、Read HotのGC候補セグメントのデリートコマンドをストレージデバイス105に送信し、使用されていた領域を解放する(S1606)。
【0165】
続いて、図21を参照して、コピーコマンドの発行によりRead Coldデータを移動する動作について説明する。図21は、第3実施形態に係るRead Coldデータのコピー動作例を示すフローチャートである。
【0166】
ホスト102は、Read Coldデータを示すフラグを立て、移動元セグメントの有効データのビットマップと移動先セグメント情報を含むコピーコマンドを生成し、ストレージデバイス105に送信する(S1701)。
【0167】
ホスト102は、データの移動に伴い新たに書き込んだデータのアドレス情報の登録を行い、アドレス管理マップおよびリードカウントマップ207を更新して、Read Coldのフラグを設定する(S1702)。
【0168】
アドレス管理マップの更新後、ホスト102は、Read ColdのGC候補セグメントのデリートコマンドをストレージデバイス105に送信し、使用されていた領域を解放する(S1703)。
【0169】
実施形態の情報処理システム101によれば、GC処理のI/Oにおけるデータ転送量の削減、ホストのメモリ使用量の削減、処理時間の短縮を実現することができる。
【0170】
実施形態は例示であり、発明の範囲はそれらに限定されない。
【符号の説明】
【0171】
101,101a…情報処理システム
102…ホスト
103…ホストコントローラ
104…ホストメモリ
105…ストレージデバイス
106…コントローラ
107…ホストインタフェース
108…バッファインタフェース
109…メモリインタフェース
110…CPU
111…バッファメモリ
112…不揮発メモリ
201…アプリケーション
202…オペレーティングシステム(OS)
203…仮想ファイルシステム(VFS)
204…VFSコール処理部
205…I/O送信部
206a,206b…書込み領域管理部
207a,207b…リードカウントマップ
208a,208b…ビットマップ
209…I/O完了処理部
210…ホストインタフェース部
211…メモリ変換層
212…メモリインタフェース部
213…不揮発メモリ部
301…I/Oコマンド送信キュー
302…I/Oコマンド完了キュー
303…データバッファ領域
401…セグメント番号を記録した列
402…Read回数を記録した列
403…Read HotまたはColdを示すフラグを記録した列
404…リードカウントマップのエントリ
501…SLC領域
502a…SLC領域に格納されたRead Hot データ
502b…QLC領域に格納されたRead Hot データ
503…SLC領域に格納されたWrite Hot データ
504…QLC領域
505…QLC領域に格納されたWrite Cold データ
506…QLC領域に格納されたRead Cold データ
507…Read Hot データを配置する領域
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21