JP2020144534A - メモリ装置およびキャッシュ制御方法 - Google Patents

メモリ装置およびキャッシュ制御方法 Download PDF

Info

Publication number
JP2020144534A
JP2020144534A JP2019039727A JP2019039727A JP2020144534A JP 2020144534 A JP2020144534 A JP 2020144534A JP 2019039727 A JP2019039727 A JP 2019039727A JP 2019039727 A JP2019039727 A JP 2019039727A JP 2020144534 A JP2020144534 A JP 2020144534A
Authority
JP
Japan
Prior art keywords
extended address
entry
data
region data
cache
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
JP2019039727A
Other languages
English (en)
Inventor
及川 恒平
Kohei Oikawa
恒平 及川
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 JP2019039727A priority Critical patent/JP2020144534A/ja
Priority to US16/556,050 priority patent/US10915454B2/en
Publication of JP2020144534A publication Critical patent/JP2020144534A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】キャッシュ制御のオーバヘッドを削減することができるメモリ装置を提供する。【解決手段】メモリ装置は、キャッシュメモリ12内のキャッシュデータ領域121を仮想的にM(Mは2以上の整数)世代分拡張した拡張アドレス空間を定義し、拡張アドレス空間を巡回するポインタが示す位置を最新としてキャッシュデータ領域の物理的なサイズに相当する範囲を拡張アドレス空間内における有効領域とする。また、N(Nは2以上の整数)分割したリージョンデータ毎にデータをキャッシュデータ領域に格納し、かつ、リージョンデータと一対に設けられるN個のエントリを有し、M個の世代の中のいずれかの世代を示す世代番号とキャッシュデータ領域上の位置に対応するアドレスとで構成される拡張アドレス空間上の位置を示す拡張アドレスと、リージョンデータのサイズとを保持する拡張アドレステーブル100Aを用いて、リージョンデータの格納位置を管理する。【選択図】図3

Description

本発明の実施形態は、メモリ装置およびキャッシュ制御方法に関する。
たとえばSSD(Solid State Drive)などのメモリ装置では、たとえばNANDフラッシュメモリから読み出され、かつ、NANDフラッシュメモリへ書き込まれるデータの一部を、たとえばDRAMに一時的に格納するといったキャッシングを行っている。
米国特許出願公開第2004/0128470号明細書 特開2018−018363号公報 米国特許出願公開第2012/0215970号明細書
キャッシュ用のデータ領域のサイズを抑えるための手法が種々考えられている。一方で、キャッシュ制御のオーバヘッドは、メモリ装置のレイテンシを悪化させる。
本発明が解決しようとする課題は、キャッシュ制御のオーバヘッドを削減することができるメモリ装置およびキャッシュ制御方法を提供することである。
実施形態によれば、メモリ装置は、不揮発性の第1メモリと、第2メモリと、第1メモリおよび第2メモリを制御するコントローラとを具備する。コントローラは、第1メモリから読み出され、かつ、第1メモリへ書き込まれる第1データの一部を第2メモリに一時的に格納するキャッシュ制御部を具備する。キャッシュ制御部は、第1データの一部を格納するために第2メモリ上に確保されるキャッシュデータ領域を仮想的にM(Mは2以上の整数)世代分拡張した拡張アドレス空間を定義し、拡張アドレス空間を巡回するポインタが示す位置を最新としてキャッシュデータ領域の物理的なサイズに相当する範囲を拡張アドレス空間内における有効領域とする。キャッシュ制御部は、第1データをN(Nは2以上の整数)分割したリージョンデータ毎に第1データをキャッシュデータ領域に格納し、かつ、リージョンデータと一対に設けられるN個のエントリを有し、M世代の中のいずれかの世代を示す世代番号とキャッシュデータ領域上の位置に対応するアドレスとで構成される拡張アドレス空間上の位置を示す拡張アドレスと、リージョンデータのサイズとを保持する拡張アドレステーブルを用いて、リージョンデータの格納位置を管理する。キャッシュ制御部は、ポインタが示す拡張アドレス空間の位置に対応するキャッシュデータ領域上の位置にリージョンデータを格納し、拡張アドレス空間の位置を示す拡張アドレスとリージョンデータのサイズとを拡張アドレステーブルのリージョンデータに対応するエントリに格納し、リージョンデータのサイズ分だけポインタを進めるリージョンデータ追加処理を実行する。キャッシュ制御部は、拡張アドレステーブルの対応するエントリが有効状態であり、かつ、そのエントリに格納される拡張アドレスが拡張アドレス空間内における有効領域を示している場合、参照対象のリージョンデータはキャッシュデータ領域に存在すると判定し、そのエントリが無効状態である場合、または、そのエントリが有効状態であり、かつ、そのエントリに格納される拡張アドレスが無効領域を示している場合、参照対象のリージョンデータはキャッシュデータ領域には存在しないと判定する参照処理を実行する。キャッシュ制御部は、ポインタが所定量進むごとに拡張アドレステーブルのN個のエントリの中から所定数のエントリが巡回的に選択されて実行される処理であって、各エントリに格納される拡張アドレスが拡張アドレス空間内における無効領域を示していないかを判定し、無効領域を示しているエントリを無効状態に設定するクリーンナップ処理を実行する。
第1実施形態のメモリ装置の一構成例および一接続例を示す図。 論物(論理アドレス−物理アドレス)変換テーブルと、論物変換テーブルによる論理アドレス空間と物理アドレス空間との対応づけとを示す概念図。 第1実施形態のメモリ装置において論物変換テーブルのキャッシングのためにキャッシュメモリ上で管理されるデータの構造を示す図。 第1実施形態のメモリ装置における拡張アドレスの概念および当該拡張アドレスを用いたキャッシュ制御を説明するための図。 第1実施形態のメモリ装置におけるリージョンデータ追加処理の流れを示すフローチャート。 第1実施形態のメモリ装置における参照処理の流れを示すフローチャート。 第1実施形態のメモリ装置におけるクリーンナップ処理を説明するための図。 第1実施形態のメモリ装置におけるクリーンナップ処理の流れを示すフローチャート。 第2実施形態のメモリ装置が解決する、第1実施形態のメモリ装置1に残存する課題を説明するための図。 第2実施形態のメモリ装置におけるリージョンデータ追加処理の流れを示すフローチャート。
(第1実施形態)
まず、第1実施形態について説明する。
図1は、本実施形態のメモリ装置1の一構成例および一接続例を示す図である。
メモリ装置1は、たとえばPCIe(登録商標)などのインタフェースを介してホスト2と接続される。メモリ装置1は、ホスト2からコマンドを受信し、そのコマンドに対応する処理を実行して、その処理結果をホスト2へ送信する。メモリ装置1が受信するコマンドには、データの書き込みを要求するライトコマンドと、データの読み出しを要求するリードコマンドとが少なくとも存在する。
メモリ装置1は、たとえばSoC(System on a Chip)などとして構成されるコントローラ11と、たとえばDRAMなどであるキャッシュメモリ12と、たとえばNAND型フラッシュメモリなどであるストレージ13とを有する。コントローラ11は、キャッシュメモリ12をデータの一時的な格納領域として利用しながらストレージ13へのデータの書き込み処理およびストレージ13からのデータの読み出し処理を実行する。コントローラ11は、論物(論理アドレス−物理アドレス)変換テーブルキャッシュ制御部111を有する。論物変換テーブルキャッシュ制御部111は、たとえばコントローラ11に内蔵されるプロセッサがたとえばコントローラ11に内蔵されるメモリに格納されるプログラムを実行することによって実現されるものであってもよい。あるいは、論物変換テーブルキャッシュ制御部111は、電気回路として実現されてもよい。つまり、論物変換テーブルキャッシュ制御部111は、ソフトウェアによっても実現し得るし、ハードウェアによっても実現し得る。論物変換テーブルキャッシュ制御部111については後述する。
メモリ装置1に対してライトコマンドやリードコマンドを発行するホスト2は、ストレージ13の領域上の位置を、ストレージ13の領域が仮想的にマッピングされる仮想領域上の位置を表す論理アドレスで指定する。コントローラ11は、ホスト2が指定する論理アドレスと、論理アドレスに対応するデータがストレージ13の領域上で保存される位置を表す物理アドレスとを管理する。論理アドレスで表される領域は論理アドレス空間などと称され、一方、物理アドレスで表される領域は物理アドレス空間などと称される。コントローラ11の制御の下、論理アドレス空間と物理アドレス空間とが対応づけられることによって、ホスト2は、たとえばライトコマンドによってメモリ装置1に対してデータの書き込みを要求する場合、メモリ装置1がそのデータをストレージ13の領域上のどの位置に書き込むかを意識する必要がない。同様に、たとえばリードコマンドによってメモリ装置1に対してデータの読み出しを要求する場合においても、ホスト2は、このデータがストレージ13の領域上のどの位置に保存されているかを意識する必要がない。つまり、ホスト2は、たとえばメモリ装置1によって提供される記憶領域がどのように構成されているか等を意識する必要がない。
コントローラ11は、論理アドレス空間と物理アドレス空間とを対応づけるために、より具体的には、論理アドレスと物理アドレスとの2つのアドレスを管理するために、論理アドレスを物理アドレスへ変換し、また、物理アドレスを論理アドレスへ変換するための論物変換テーブルを作成する。図2は、論物変換テーブル100と、論物変換テーブル100による論理アドレス空間110と物理アドレス空間120との対応づけとを示す概念図である。図2に示すように、論物変換テーブル100は、論理アドレスと物理アドレスとの対応関係を保持する。図2の例でいうと、ストレージ13の領域は4KByte単位に分割されて各々アドレスが割り当てられ、論理アドレス空間110側から物理アドレス空間120側へ引かれる矢印は、その矢印の始端の位置の論理アドレスと終端の位置の物理アドレスとが対応づけられていることを示し、論物変換テーブル100には、これら2つのアドレスの対応づけが保持される。コントローラ11は、この論物変換テーブル100を用いて、論理アドレス−物理アドレス間の変換を行う。
コントローラ11は、論物変換テーブル100をストレージ13に格納する。また、コントローラ11は、論物変換テーブル100の一部をたとえばキャッシュメモリ12に一時的に格納するキャッシングを実施する。論物変換テーブル100のキャッシングに用いる領域は、キャッシュメモリ12に限らず、たとえばコントローラ11に内蔵されるメモリなどであってもよい。以下、論物変換テーブル100のキャッシングに用いる領域を、単に、キャッシュと称することがある。論物変換テーブルキャッシュ制御部111は、この論物変換テーブル100のキャッシングを制御するモジュールである。なお、ここでは、キャッシュ上の論物変換テーブル100の内容とストレージ13上の論物変換テーブル100の内容とは一致していることを想定する。キャッシュされている論物変換テーブル100の一部の内容が変更される場合、ストレージ13上の論物変換テーブル100が更新されて、更新後の当該論物変換テーブル100の一部が改めてキャッシュ上に格納される。
論物変換テーブル100は、ストレージ13の大容量化に比例してテーブルサイズが大きくなる傾向がある。ストレージ13の大容量化に伴い、論物変換テーブル100のテーブルサイズが大きくなり、論物変換テーブル100をキャッシングするためのキャッシュメモリ12のサイズが大きくなると、メモリ装置1の消費電力や価格が上がってしまうという問題が生じる。この問題を解決する方法として、たとえば論物変換テーブル100を細かく分割したリージョン単位でキャッシュメモリ12にキャッシュする方式が考えられる。さらに、キャッシュを圧縮して管理する方法も考えられる。しかし、圧縮によってリージョンデータは可変長になるので、一般に使われる固定長キャッシュ制御とは異なる制御が必要になる。さらに、メモリ装置1には短い応答時間が求められるので、キャッシュ制御のオーバヘッドは常に少ないことが望ましい。
そこで、論物変換テーブルキャッシュ制御部111は、キャッシュ制御のオーバヘッドを削減する仕組みを備えたものであり、以下、この点について詳述する。
なお、ここでは、論物変換テーブル100のキャッシングを一例としてキャッシュ制御の説明を行うが、ここで説明するキャッシュ制御の手法は、論物変換テーブルに限定されず、様々なデータのキャッシングに適用することが可能である。このキャッシュ制御の手法は、特に、可変長データのキャッシングに好適である。
図3は、論物変換テーブルキャッシュ制御部111が論物変換テーブル100のキャッシングのためにキャッシュメモリ12上で管理するデータの構造を示す図である。なお、図3に示すデータの構成は、論物変換テーブルキャッシュ制御部111が、論物変換テーブル100をN個のリージョンデータに分割してキャッシュ管理することを想定した場合の例である。各リージョンデータは、論理アドレスと物理アドレスとの対応関係をM個分ずつ含んでいる。つまり、論物変換テーブル100は、N×M個の論理アドレスと、N×M個の物理アドレスとの対応関係を保持している。
図3に示すように、論物変換テーブルキャッシュ制御部111は、拡張アドレステーブル100Aと、キャッシュデータ領域121とを、キャッシュメモリ12上で管理する。
キャッシュデータ領域121には、論物変換テーブル100がN個に分割された各リージョンデータが、キャッシュに追加された順に書き込まれる。リージョンデータが書き込まれたキャッシュデータ領域121上の位置は、拡張アドレステーブル100Aによって管理される。
拡張アドレステーブル100Aは、リージョン数、つまりリージョンデータの数と同数のN個のエントリで構成され、各エントリは、対応するリージョンデータの拡張アドレスとサイズの情報を持つ。なお、リージョンデータは可変長であっても良い。
図4は、本実施形態のメモリ装置1における拡張アドレスの概念および当該拡張アドレスを用いたキャッシュ制御を説明するための図である。
拡張アドレスは、キャッシュメモリ12の領域(キャッシュデータ領域121)上の位置に対応するアドレスと、その上位ビット側に連接した世代番号とで構成される。図4において符号130で示される拡張アドレス空間の1世代分のサイズが、物理的にキャッシュメモリ12に割り当てられたキャッシュデータ領域121のサイズになる。つまり、拡張アドレス空間130は、キャッシュデータ領域121のアドレスについて世代番号を拡張した仮想的なキャッシュデータ領域である。
本実施形態のメモリ装置1におけるキャッシュ制御では、拡張アドレス空間130を巡回するライトポインタを使って、リージョンデータの書き込み位置を制御する。拡張アドレス空間130上におけるライトポインタの巡回についてより詳しく説明すると、ライトポインタは、ある世代においてキャッシュデータ領域121の先頭アドレスから最終アドレス方向へと移動し、最終アドレスに到達したら、次の世代(世代番号:+1)の先頭アドレスへ移動する。また、ライトポインタは、最終の世代(世代番号=max)の最終アドレスに到達したら、先頭の世代(世代番号=0)の先頭アドレスへ移動する。
また、本実施形態のメモリ装置1におけるキャッシュ制御では、この拡張アドレス空間130の全領域のうち、図4に示すように、ライトポインタが指す位置を最新として、キャッシュデータ領域121の物理的なサイズに相当する範囲が有効領域になるものとする(符号a1で示されるハッチングの施された、世代番号=4の後半部分と、世代番号=5の前半部分)。
次に、論物変換テーブルキャッシュ制御部111によって実行される、本実施形態のメモリ装置1における(1)リージョンデータ追加処理、(2)参照処理および(3)クリーンナップ処理について説明する。
(1)リージョンデータ追加処理
まず、図4と併せて図5を参照して、リージョンデータ追加処理について説明する。
論物変換テーブルキャッシュ制御部111は、キャッシュデータ領域121に追加するリージョンデータのサイズ分だけ、ライトポインタを加算する(ステップA1)。リージョンデータを圧縮してキャッシュに追加する場合は、あらかじめリージョンデータを圧縮して、圧縮後のリージョンデータのサイズをライトポインタに加算する。リージョンデータを圧縮してキャッシュに追加する場合、仮に、圧縮前のリージョンデータが固定長の場合であっても、キャッシュ上のリージョンデータは可変長となる。
次に、論物変換テーブルキャッシュ制御部111は、ステップA1での加算前にライトポインタが指していた位置にリージョンデータをライトする(ステップA2)。次に、論物変換テーブルキャッシュ制御部111は、拡張アドレステーブル100Aの該当エントリに、ライトしたリージョンデータの拡張アドレス(加算前のライトポインタの値)とサイズを格納する(ステップA3)。
このリージョンデータ追加処理では、ライトポインタを動かすので、拡張アドレス空間130上の有効領域a1がスライドする。そのため、有効領域a1がスライドする前に追加されたリージョンのうち、どれかが無効領域に入る可能性がある。
(2)参照処理
次に、図4と併せて図6を参照して、参照処理について説明する。
論物変換テーブルキャッシュ制御部111は、拡張アドレステーブル100Aから該当のエントリを読み出す(ステップB1)。読み出したエントリが指す位置が無効領域の場合(ステップB2:YES)、論物変換テーブルキャッシュ制御部111は、この参照処理はmiss(キャッシュには指定したリージョンデータがない)と判定する。なお、ステップB2の処理は必須ではないが、実施することで、missの判定を早く確定させることができる。
読み出したエントリが指す位置が有効領域a1の場合(ステップB2:NO)、論物変換テーブルキャッシュ制御部111は、エントリが指す位置からリージョンデータをリードする(ステップB3)。リードした後、論物変換テーブルキャッシュ制御部111は、エントリが指す位置(拡張アドレス)が無効領域に入っているかどうかを再度判定する(ステップB4)。無効領域に入っている場合(ステップB4:YES)、論物変換テーブルキャッシュ制御部111は、missと判定し、一方、有効領域a1の場合(ステップB4:NO)、hit(キャッシュに指定したリージョンデータがある)と判定する。
ステップB3の後にステップB4の判定処理を行う理由は、参照処理とリージョンデータ追加処理とを並列実行する場合に一貫性を維持するためである。つまり、リージョンデータを読み出している間に、ライトポインタが進んで有効領域a1がスライドする可能性があるので、リードした後でも有効領域a1に含まれている場合に限りhitと判定することで一貫性を保つ。論物変換テーブルキャッシュ制御部111は、参照処理とリージョンデータ追加処理とを並列実行しない場合は、ステップB3の後にステップB4を実行しなくても良い。
(3)クリーンナップ処理
次に、図7および図8を参照して、クリーンナップ処理について説明する。
図7に示すように、ライトポインタが進むと、拡張アドレステーブル100A内に無効領域を指すエントリが増える。ライトポインタがさらに進んで拡張アドレス空間130を1周すると、無効領域だった領域がまた有効領域a1になる。ここで、無効領域を指していたエントリがそのままの状態だったとすると、このエントリは、別のリージョンデータで上書きされた領域(符号b1で示されるハッチングの施された領域)を指した状態にも関わらず、参照処理でhitと判定されてしまう。この状況を防ぐには、無効領域を指すようになったエントリが、ライトポインタが拡張アドレス空間130を1周するまでの間に無効化されれば良い。具体的には、ライトポインタが所定量進む度に、拡張アドレステーブル100Aの1エントリ(または所定のエントリ数)を順番にチェックする。この処理がクリーンナップ処理である。
図8は、ライトポインタが所定量進む度に拡張アドレステーブル100Aの1エントリを順番にチェックする場合におけるクリーンナップ処理の流れを示している。
論物変換テーブルキャッシュ制御部111は、クリーンナップ処理のために、クリーンナップカウンタを持つ。論物変換テーブルキャッシュ制御部111は、拡張アドレステーブル100Aからクリーンナップカウンタが指すエントリをリードし(ステップC1)、リードしたエントリの内容をチェックする(ステップC2)。
エントリが指す拡張アドレスが無効領域に含まれる場合(ステップC2:YES)、論物変換テーブルキャッシュ制御部111は、そのエントリに、無効状態を表す値をライトする(ステップC3)。エントリに無効状態を設定するには、たとえばサイズをゼロにしてもよいし、存在しないアドレスにしてもよいし、別途フラグを設けてもよい。ステップC2の判定結果がNoの場合、または、ステップC3の処理が終了したら、論物変換テーブルキャッシュ制御部111は、クリーンナップカウンタを1進める(ステップC4)。
クリーンナップ処理は、ライトポインタが拡張アドレス空間130を1周する間に拡張アドレステーブル100Aを1周する必要があるので、ライトポインタが、
(データ領域の物理サイズ)×(世代数−1)/(リージョン数)
だけ進むたびに少なくとも1エントリ処理する必要がある。世代番号が1ビット(2世代)の場合は、頻繁にクリーンナップ処理を実行する必要があり、拡張アドレステーブル100Aを格納するキャッシュメモリ12のバンド幅が大きくなる。世代番号を増やしてたとえば10ビット(1024世代)にすることで、クリーンナップ処理に必要なバンド幅を、1ビットの場合と比べて1/512程度に減らすことができる。
クリーンナップ処理は、ライトポインタが拡張アドレス空間130を1周する間に拡張アドレステーブル100Aを1周する必要があるので、ライトポインタが、
(データ領域の物理サイズ)×(世代数−1)/(リージョン数)
だけ進むたびに少なくとも1エントリ処理する必要がある。世代番号が1ビット(2世代)の場合は、頻繁にクリーンナップ処理を実行する必要があり、拡張アドレステーブル100Aを格納するキャッシュメモリ12のバンド幅が大きくなる。世代番号を増やしてたとえば10ビット(1024世代)にすることで、クリーンナップ処理に必要なバンド幅を、1ビットの場合と比べて1/512程度に減らすことができる。世代番号のビット数は任意であるものの、世代番号のビット数を増加させると、拡張アドレステーブル100Aのサイズが大きくなり、メモリ装置1のキャッシュメモリ12に配置できるキャッシュデータ領域121のサイズが拡張アドレステーブル100Aのサイズに対して小さくなるため、キャッシュヒット率が低下する可能性がある。そのため、世代番号のビット数の上限は、キャッシュヒット率低下による性能低下とクリーンナップが減ることによる性能向上との関係に基づいて決定されてもよい。
本実施形態のメモリ装置1においては、リージョンデータ追加処理と参照処理のどちらも、拡張アドレステーブル100Aとキャッシュデータ領域121を1回ずつアクセスすることで実現可能であり、また、追加のクリーンナップ処理については世代番号を調節することで、キャッシュ制御のためのオーバヘッドを大幅に削減できる。
このように、本実施形態のメモリ装置1は、キャッシュ制御のオーバヘッドを削減することができる。
(第2実施形態)
次に、第2実施形態について説明する。第1実施形態と同様、本実施形態においても、コントローラ11、キャッシュメモリ12およびストレージ13を有するメモリ装置1を想定する。ここでは、第1実施形態と同一の構成要素については同一の符号を用い、それらについての重複する説明を省略する。
図9は、第1実施形態のメモリ装置1に残存する課題であって、本実施形態のメモリ装置1が解決する課題を説明するための図である。
図9には、第1実施形態のメモリ装置1において、拡張アドレス空間130の有効領域a1にリージョンデータが存在する、つまり、キャッシュにリージョンデータが存在するリージョン番号について、新たにリージョンデータ追加処理を実行した時の状況が示されている。新しいリージョンデータはライトポインタが指す位置(領域c1)に書き込まれるが、古いリージョンデータは有効領域a1内の無駄な領域(領域c2)として残ってしまう。この場合、実質的にキャッシュの有効領域a1が減った状態になるため、キャッシュヒット率が低下する問題がある。
そこで、本実施形態のメモリ装置1においては、この課題を解決するため、発生した無駄領域の情報をテーブルに記録して、古いリージョンデータが書き込まれている領域を再利用する。常にすべての再利用情報を管理しようとすると、テーブルサイズが大きくなるので、エントリ数を固定(たとえば4、8)にしたテーブルで管理する。ここでは、この新たなテーブルをフラグメントテーブル100Bと称することにする。フラグメントテーブル100Bの構造は拡張アドレステーブル100Aと同じだが、エントリ数は固定の大きくない値(たとえば4エントリ、8エントリ)である。論物変換テーブルキャッシュ制御部111は、このフラグメントテーブル100Bを、拡張アドレステーブル100Aと同様、キャッシュメモリ12に格納してもよいが、コントローラ11に内蔵されるメモリに格納することで、制御オーバヘッドを小さく抑えることができる。拡張アドレステーブル100Aと異なり、フラグメントテーブル100Bはテーブルサイズが小さいため、コントローラ11に内蔵されるメモリに格納することが可能である。
図10は、フラグメントテーブル100Bを追加する本実施形態のメモリ装置1におけるリージョンデータ追加処理の流れを示す図である。
論物変換テーブルキャッシュ制御部111は、追加するリージョンデータのサイズ以上のエントリがフラグメントテーブル100Bにあるかをチェックする(ステップD1)。条件に合うエントリがない場合(ステップD1:NO)、論物変換テーブルキャッシュ制御部111は、ライトポインタを更新する(ステップD2)。このステップD2の処理は、第1実施形態で示した図5のステップA1の処理と同じである。ライトポインタの更新に伴って有効領域a1がスライドしたので、論物変換テーブルキャッシュ制御部111は、フラグメントテーブル100Bに記録されているエントリのうち、無効領域に入ったエントリを全て削除する(ステップD3)。
そして、論物変換テーブルキャッシュ制御部111は、リージョンデータをライトする(ステップD4)。このステップD6の処理は、第1実施形態で示した図5のステップA2の処理と同じである。
一方、ステップD1で条件に合うエントリが見つかった場合(ステップD1:YES)、論物変換テーブルキャッシュ制御部111は、それらの中からエントリを1個選択する(ステップD5)。論物変換テーブルキャッシュ制御部111は、そのエントリが指す位置にリージョンデータをライトし(ステップD6)、フラグメントテーブル100Bのエントリを更新する(ステップD7)。たとえば、エントリの拡張アドレスを、リージョンデータのサイズ分だけ足した値に変更し、かつ、エントリのサイズを、リージョンデータのサイズ分だけ引いた値にする。
そして、ステップD4の処理またはステップD7の処理が終了したら、論物変換テーブルキャッシュ制御部111は、ライトしたリージョンデータの拡張アドレスとサイズを、拡張アドレステーブル100Aに格納する(ステップD8)。このステップD8の処理は、第1実施形態で示した図5のステップA3の処理と同じである。
続いて、論物変換テーブルキャッシュ制御部111は、拡張アドレステーブル100Aの処理対象エントリに記録されている拡張アドレス(古いリージョンデータの場所)が有効領域a1に含まれているかを調べ(ステップD9)、含まれている場合(ステップD9:YES)、フラグメントテーブル100Bにその拡張アドレスのサイズ情報を記録する(ステップD10)。
以上の制御によって、キャッシュのデータ領域に無駄な領域が発生する問題を軽減することができる。また、フラグメントテーブル100Bのサイズを抑えることで、キャッシュメモリ12へのアクセス等のオーバヘッドの増加を抑えることができる。
つまり、本実施形態のメモリ装置1は、キャッシュ制御のオーバヘッドを削減することができることに加えて、キャッシュヒット率の低下を抑えることができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…メモリ装置、2…ホスト、11…コントローラ、12…キャッシュメモリ、13…ストレージ、100…論物変換テーブル、100A…拡張アドレステーブル、100B…フラグメントテーブル、110…論理アドレス空間、111…論物変換テーブルキャッシュ制御部、120…物理アドレス空間、121…キャッシュデータ領域、130…拡張アドレス空間。

Claims (11)

  1. 不揮発性の第1メモリと、
    第2メモリと、
    前記第1メモリおよび前記第2メモリを制御するコントローラと、
    を具備し、
    前記コントローラは、前記第1メモリから読み出され、かつ、前記第1メモリへ書き込まれる第1データの一部を前記第2メモリに一時的に格納するキャッシュ制御部を具備し、
    前記キャッシュ制御部は、
    前記第1データの一部を格納するために前記第2メモリ上に確保されるキャッシュデータ領域を仮想的にM(Mは2以上の整数)世代分拡張した拡張アドレス空間を定義し、前記拡張アドレス空間を巡回するポインタが示す位置を最新として、前記キャッシュデータ領域の物理的なサイズに相当する範囲を前記拡張アドレス空間内における有効領域とし、
    前記第1データをN(Nは2以上の整数)分割したリージョンデータ毎に前記第1データを前記キャッシュデータ領域に格納し、かつ、前記リージョンデータと一対に設けられるN個のエントリを有し、前記M世代の中のいずれかの世代を示す世代番号と前記キャッシュデータ領域上の位置に対応するアドレスとで構成される前記拡張アドレス空間上の位置を示す拡張アドレスと、前記リージョンデータのサイズとを保持する拡張アドレステーブルを用いて、前記リージョンデータの格納位置を管理し、
    前記ポインタが示す前記拡張アドレス空間の位置に対応する前記キャッシュデータ領域上の位置に前記リージョンデータを格納し、前記拡張アドレス空間の位置を示す拡張アドレスと前記リージョンデータのサイズとを前記拡張アドレステーブルの前記リージョンデータに対応するエントリに格納し、前記リージョンデータのサイズ分だけ前記ポインタを進めるリージョンデータ追加処理を実行し、
    前記拡張アドレステーブルの対応するエントリが有効状態であり、かつ、そのエントリに格納される拡張アドレスが前記拡張アドレス空間内における有効領域を示している場合、参照対象のリージョンデータは前記キャッシュデータ領域に存在すると判定し、そのエントリが無効状態である場合、または、そのエントリが有効状態であり、かつ、そのエントリに格納される拡張アドレスが前記拡張アドレス空間内における無効領域を示している場合、参照対象のリージョンデータは前記キャッシュデータ領域には存在しないと判定する参照処理を実行し、
    前記ポインタが所定量進むごとに前記拡張アドレステーブルのN個のエントリの中から所定数のエントリが巡回的に選択されて実行される処理であって、各エントリに格納される拡張アドレスが前記拡張アドレス空間内における無効領域を示していないかを判定し、無効領域を示しているエントリを無効状態に設定するクリーンナップ処理を実行する、
    メモリ装置。
  2. 前記第1データは、前記第1メモリの論理アドレス空間と物理アドレス空間とを対応づけるアドレス変換テーブルである、
    請求項1に記載のメモリ装置。
  3. 前記キャッシュ制御部は、
    格納されている拡張アドレスが前記拡張アドレス空間内における有効領域を示しているエントリに対応するリージョンデータが更新された場合、更新前に当該エントリに格納されていた拡張アドレスとサイズとを、前記Nよりも小さい数のエントリを有するフラグメントテーブルの空きエントリに格納し、
    前記キャッシュデータ領域に格納しようとしているリージョンデータのサイズ以上のサイズが格納されている前記フラグメントテーブルのエントリが存在する場合、そのエントリに格納される拡張アドレスが示す前記拡張アドレス空間の位置に対応する前記キャッシュデータ領域上の位置に前記リージョンデータを格納し、前記拡張アドレス空間の位置を示す拡張アドレスと前記リージョンデータのサイズとを前記拡張アドレステーブルの前記リージョンデータに対応するエントリに格納する、
    請求項1または2に記載のメモリ装置。
  4. 前記キャッシュ制御部は、前記フラグメントテーブルのエントリに格納される拡張アドレスが示す前記拡張アドレス空間の位置に対応する前記キャッシュデータ領域上の位置に前記リージョンデータを格納した場合、そのエントリに格納される拡張アドレスを前記リージョンデータのサイズ分だけ加算した値に変更し、かつ、そのエントリに格納されるサイズを前記リージョンデータのサイズ分だけ減算した値に変更する請求項3に記載のメモリ装置。
  5. 前記キャッシュ制御部は、前記ポインタの移動によって前記拡張アドレス空間内における無効領域を示すこととなった拡張アドレスが格納されている前記フラグメントテーブルのエントリが存在する場合、そのエントリを削除する請求項3または4に記載のメモリ装置。
  6. 前記リージョンデータは、可変長データである請求項1から5のいずれか1項に記載のメモリ装置。
  7. 前記リージョンデータは、圧縮されて前記キャッシュデータ領域に格納される請求項1から5のいずれか1項に記載のメモリ装置。
  8. 不揮発性の第1メモリと、第2メモリとを具備するメモリ装置におけるキャッシュ制御方法であって、
    前記第1メモリから読み出され、かつ、前記第1メモリへ書き込まれる第1データの一部を一時的に格納するために前記第2メモリ上に確保されるキャッシュデータ領域を仮想的にM(Mは2以上の整数)世代分拡張した拡張アドレス空間を定義し、前記拡張アドレス空間を巡回するポインタが示す位置を最新として前記キャッシュデータ領域の物理的なサイズに相当する範囲を前記拡張アドレス空間内における有効領域とすることと、
    前記第1データをN(Nは2以上の整数)分割したリージョンデータ毎に前記第1データを前記キャッシュデータ領域に格納し、かつ、前記リージョンデータと一対に設けられるN個のエントリを有し、前記M世代の中のいずれかの世代を示す世代番号と前記キャッシュデータ領域上の位置に対応するアドレスとで構成される前記拡張アドレス空間上の位置を示す拡張アドレスと、前記リージョンデータのサイズとを保持する拡張アドレステーブルを用いて、前記リージョンデータの格納位置を管理することと、
    前記ポインタが示す前記拡張アドレス空間の位置に対応する前記キャッシュデータ領域上の位置に前記リージョンデータを格納し、前記拡張アドレス空間の位置を示す拡張アドレスと前記リージョンデータのサイズとを前記拡張アドレステーブルの前記リージョンデータに対応するエントリに格納し、前記リージョンデータのサイズ分だけ前記ポインタを進めるリージョンデータ追加処理を実行することと、
    前記拡張アドレステーブルの対応するエントリが有効状態であり、かつ、そのエントリに格納される拡張アドレスが前記拡張アドレス空間内における有効領域を示している場合、参照対象のリージョンデータは前記キャッシュデータ領域に存在すると判定し、そのエントリが無効状態である場合、または、そのエントリが有効状態であり、かつ、そのエントリに格納される拡張アドレスが前記拡張アドレス空間内における無効領域を示している場合、参照対象のリージョンデータは前記キャッシュデータ領域には存在しないと判定する参照処理を実行することと、
    前記ポインタが所定量進むごとに前記拡張アドレステーブルのN個のエントリの中から所定数のエントリが巡回的に選択されて実行される処理であって、各エントリに格納される拡張アドレスが前記拡張アドレス空間内における無効領域を示していないかを判定し、無効領域を示しているエントリを無効状態に設定するクリーンナップ処理を実行することと、
    を具備するキャッシュ制御方法。
  9. 格納されている拡張アドレスが前記拡張アドレス空間内における有効領域を示しているエントリに対応するリージョンデータが更新された場合、更新前に当該エントリに格納されていた拡張アドレスとサイズとを、前記Nよりも小さい数のエントリを有するフラグメントテーブルの空きエントリに格納することと、
    前記キャッシュデータ領域に格納しようとしているリージョンデータのサイズ以上のサイズが格納されている前記フラグメントテーブルのエントリが存在する場合、そのエントリに格納される拡張アドレスが示す前記拡張アドレス空間の位置に対応する前記キャッシュデータ領域上の位置に前記リージョンデータを格納し、前記拡張アドレス空間の位置を示す拡張アドレスと前記リージョンデータのサイズとを前記拡張アドレステーブルの前記リージョンデータに対応するエントリに格納することと、
    をさらに具備する請求項8に記載のキャッシュ制御方法。
  10. 前記フラグメントテーブルのエントリに格納される拡張アドレスが示す前記拡張アドレス空間の位置に対応する前記キャッシュデータ領域上の位置に前記リージョンデータを格納した場合、そのエントリに格納される拡張アドレスを前記リージョンデータのサイズ分だけ加算した値に変更し、かつ、そのエントリに格納されるサイズを前記リージョンデータのサイズ分だけ減算した値に変更することをさらに具備する請求項9に記載のキャッシュ制御方法。
  11. 前記ポインタの移動によって前記拡張アドレス空間内における無効領域を示すこととなった拡張アドレスが格納されている前記フラグメントテーブルのエントリが存在する場合、そのエントリを削除することをさらに具備する請求項9または10に記載のキャッシュ制御方法。
JP2019039727A 2019-03-05 2019-03-05 メモリ装置およびキャッシュ制御方法 Pending JP2020144534A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019039727A JP2020144534A (ja) 2019-03-05 2019-03-05 メモリ装置およびキャッシュ制御方法
US16/556,050 US10915454B2 (en) 2019-03-05 2019-08-29 Memory device and cache control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019039727A JP2020144534A (ja) 2019-03-05 2019-03-05 メモリ装置およびキャッシュ制御方法

Publications (1)

Publication Number Publication Date
JP2020144534A true JP2020144534A (ja) 2020-09-10

Family

ID=72335249

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019039727A Pending JP2020144534A (ja) 2019-03-05 2019-03-05 メモリ装置およびキャッシュ制御方法

Country Status (2)

Country Link
US (1) US10915454B2 (ja)
JP (1) JP2020144534A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023024008A (ja) 2021-08-06 2023-02-16 キオクシア株式会社 メモリシステム
US20230289297A1 (en) * 2022-03-14 2023-09-14 Samsung Electronics Co., Ltd. Systems and methods for managing memory utilization

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7010645B2 (en) 2002-12-27 2006-03-07 International Business Machines Corporation System and method for sequentially staging received data to a write cache in advance of storing the received data
JP2012113343A (ja) 2010-11-19 2012-06-14 Toshiba Corp 記憶装置
US20120215970A1 (en) 2011-02-22 2012-08-23 Serge Shats Storage Management and Acceleration of Storage Media in Clusters
CN103885892A (zh) * 2012-12-20 2014-06-25 株式会社东芝 存储器控制器
US9423979B2 (en) 2014-03-10 2016-08-23 Kabushiki Kaisha Toshiba Memory system and memory controller for determining whether one or plurality of pointers can be stored in a second buffer and for executing data transfer between data buffer and host using the pointers
US20160147594A1 (en) * 2014-11-26 2016-05-26 Qualcomm Technologies International, Ltd. Method and apparatus for preventing and managing corruption of flash memory contents
US20170177497A1 (en) 2015-12-21 2017-06-22 Qualcomm Incorporated Compressed caching of a logical-to-physical address table for nand-type flash memory
JP6734536B2 (ja) 2016-07-29 2020-08-05 富士通株式会社 情報処理装置及びメモリコントローラ
US10346324B2 (en) * 2017-02-13 2019-07-09 Microchip Technology Incorporated Devices and methods for autonomous hardware management of circular buffers
US10754579B2 (en) * 2017-09-25 2020-08-25 Silicon Laboratories Inc. Reliable non-volatile memory programming interface and method therefor
GB2567465B (en) * 2017-10-12 2020-09-02 Advanced Risc Mach Ltd Message passing in a data processing system
KR20200074464A (ko) * 2018-12-17 2020-06-25 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템

Also Published As

Publication number Publication date
US10915454B2 (en) 2021-02-09
US20200285585A1 (en) 2020-09-10

Similar Documents

Publication Publication Date Title
CN109240938B (zh) 存储系统以及控制非易失性存储器的控制方法
CN105740164B (zh) 支持缓存一致性的多核处理器、读写方法、装置及设备
CN107066397B (zh) 用于管理数据迁移的方法、系统和存储介质
US20170235681A1 (en) Memory system and control method of the same
US8914570B2 (en) Selective write-once-memory encoding in a flash based disk cache memory
CN107818052B (zh) 内存访问方法及装置
JP2017138852A (ja) 情報処理装置、記憶装置およびプログラム
US11861197B2 (en) Memory system and information processing system
US10310984B2 (en) Storage apparatus and storage control method
US11263147B2 (en) Memory system including logical-to-physical address translation table in a first cache and a compressed logical-to-physical address translation table in a second cache
US11669264B2 (en) Method for improving trim command response time
US11341042B2 (en) Storage apparatus configured to manage a conversion table according to a request from a host
US20230401149A1 (en) Memory system and information processing system
JP2020144534A (ja) メモリ装置およびキャッシュ制御方法
US20170249245A1 (en) Control device, storage device, and storage control method
US11256630B2 (en) Cache address mapping method and related device
CN110347614B (zh) 存储空间映射算法、缓存状态机、存储装置、存储介质
US11977767B2 (en) Method and apparatus for caching address mapping information in flash memory based storage device
US11704238B1 (en) Method and apparatus for accessing L2P address without searching group-to-flash mapping table
US20230138215A1 (en) Memory system controlling nonvolatile memory
JP7337228B2 (ja) メモリシステムおよび制御方法
US11321243B2 (en) Data storage device including a semiconductor device managing address mapping of a semiconductor memory device
US11809320B2 (en) Memory system caching mapping information
US20220374360A1 (en) Memory device and method for accessing memory device
JP2024043007A (ja) メモリシステムおよび制御方法