JP2022143762A - メモリシステム、制御方法およびメモリコントローラ - Google Patents
メモリシステム、制御方法およびメモリコントローラ Download PDFInfo
- Publication number
- JP2022143762A JP2022143762A JP2021044451A JP2021044451A JP2022143762A JP 2022143762 A JP2022143762 A JP 2022143762A JP 2021044451 A JP2021044451 A JP 2021044451A JP 2021044451 A JP2021044451 A JP 2021044451A JP 2022143762 A JP2022143762 A JP 2022143762A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- memory
- request
- information
- lut
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6032—Way prediction in set-associative cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】キャッシュメモリへのデータの格納を好適に制御するメモリシステム、制御方法及びメモリコントローラを提供する。【解決手段】メモリシステムにおいて、第1メモリ200は、論理アドレス空間内の複数の位置を示す複数の論理アドレス夫々を、第1メモリの物理アドレスの何れかに対応付ける第1情報201を格納する。第2メモリ130は、複数の論理アドレスに関する第1情報の一部である第2情報が格納されるキャッシュの領域を含む。コントローラ100は、第1メモリに対する第1情報のアクセスを制御する制御装置及び第2メモリに対するアクセスを制御する回路を含み、キャッシュミスであった場合、第2情報のキャッシュエントリを準備するための要求を制御装置に送信し、制御装置からキャッシュエントリの準備完了を示す通知を受領したことに応じて、回路に対してキャッシュエントリに関するリクエストを提供する処理を実行する。【選択図】図1
Description
本発明の実施形態は、メモリシステム、制御方法およびメモリコントローラに関する。
従来、不揮発性メモリを備えるメモリシステムが知られている。不揮発性メモリは、一例では、NAND型のフラッシュメモリである。
メモリシステムは、複数のアドレスに関するアドレス変換情報(Address Translation Information)をLUT(Lookup Table)として不揮発性メモリ内に保持する。アドレス変換情報は、論理アドレス空間内の位置を示す論理アドレスを不揮発性メモリ内の位置を示す物理アドレスに対応付ける情報である。
上述したように、メモリシステムは、ある論理アドレスを物理アドレスに変換する際などに、当該論理アドレスを物理アドレスに対応付けるアドレス変換情報を必要とする。しかしながら、不揮発性メモリに対するアクセススピードはあまり速くないため、不揮発性メモリからアドレス変換情報を取得しようとすると、アドレス変換処理に要する時間が増大する。そこで、アドレス変換情報をより高速に取得できるように、メモリシステムには、不揮発性メモリより高速にアクセス可能なキャッシュメモリが設けられる。メモリシステムの動作中、アドレス変換情報の群の一部が、キャッシュデータとしてキャッシュメモリに格納される。
メモリシステムにおいて、キャッシュメモリに格納するアドレス変換情報の一部を好適に制御することが求められる。
本発明の一実施形態では、メモリシステム、制御方法およびメモリコントローラにおいて、キャッシュメモリへのデータの格納を好適に制御することを達成する。
実施形態のメモリシステムは、データを記憶可能なメモリシステムであって、データを不揮発に記憶する不揮発性の第1メモリと、第2メモリと、コントローラと、を備える。第1メモリは、メモリシステムの論理アドレス空間内の複数の位置を示す複数の論理アドレスそれぞれを第1メモリの物理的な位置を示す物理アドレスの何れかに対応付ける第1情報を格納する。第2メモリは、複数の論理アドレスに関する前記第1情報の一部である第2情報が格納されるセットアソシアティブ方式のキャッシュの領域を含む。コントローラは、第1メモリに対する第1情報のアクセスを制御する制御装置および第2メモリに対するアクセスを制御する回路を含む。コントローラは、第2情報を格納したキャッシュの領域に対する第1の論理アドレスの検索結果がキャッシュミスであった場合、第2情報のキャッシュエントリを準備するための要求を制御装置に送信する第1処理と、制御装置からキャッシュエントリの準備完了を示す通知を受領したことに応じて回路に対してキャッシュエントリに関するリクエストを提供する第2処理と、を含む第3処理を実行する。
以下に添付図面を参照して、メモリシステム、制御方法およびメモリコントローラの実施の形態を詳細に説明する。
(第1の実施の形態)
[メモリシステムの構成]
図1は、本発明の第1の実施形態にかかるメモリシステムの構成の一例を示す模式的な図である。図1に示すように、メモリシステム1は、ホスト2と接続される。メモリシステム1とホスト2との間の接続の規格は、特定の規格に限定されない。ホスト2は、例えばパーソナルコンピュータ、携帯情報端末、車載端末またはサーバなどである。
[メモリシステムの構成]
図1は、本発明の第1の実施形態にかかるメモリシステムの構成の一例を示す模式的な図である。図1に示すように、メモリシステム1は、ホスト2と接続される。メモリシステム1とホスト2との間の接続の規格は、特定の規格に限定されない。ホスト2は、例えばパーソナルコンピュータ、携帯情報端末、車載端末またはサーバなどである。
ホスト2は、メモリシステム1にアクセスする際に、メモリシステム1にアクセスコマンド(例えばリードコマンドまたはライトコマンド)を送信する。各アクセスコマンドは、論理アドレスを伴う。論理アドレスは、メモリシステム1がホスト2に提供する論理アドレス空間内の位置を示す情報である。
なお、ホスト2は、ライトコマンドとともに書き込み対象のデータを送信する。ライトコマンドとともに送信される書き込み対象のデータおよびメモリシステム1に記憶された書き込み対象のデータを、ともにユーザデータと表記する。
メモリシステム1は、メモリコントローラ100と、不揮発性メモリ200と、を備える。不揮発性メモリ200は、データを不揮発に記憶する不揮発性メモリであり、例えば、NAND型フラッシュメモリ(以下、単にNANDメモリという)である。以下の説明では、不揮発性メモリ200としてNANDメモリが用いられた場合を例示するが、不揮発性メモリ200として3次元構造フラッシュメモリ、ReRAM(Resistive Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)、相変化型メモリ(Phase Change Memory:PCM)、磁気抵抗メモリ(Magnetoresistive Random Access Memory:MRAM)等のNANDメモリ以外の記憶装置を用いることも可能である。また、不揮発性メモリ200が半導体メモリであることは必須ではなく、半導体メモリ以外の種々の記憶媒体に対して本実施形態を適用することも可能である。
メモリシステム1は、SSD(Solid State Drive)、UFS(Universal Flash Storage)デバイス、メモリカード等、不揮発性メモリ200を備える種々のメモリシステムであってよい。
不揮発性メモリ200は、第1メモリの一例である。不揮発性メモリ200は、後述するLUT(Lookup Table)201が格納される。
不揮発性メモリ200がNANDメモリである場合、不揮発性メモリ200は、複数のブロックを有するメモリセルアレイを備える。各ブロックに格納されているデータは、一括してイレースされる。各ブロックは、複数のページを備える。メモリセルアレイへのデータの書き込みおよびメモリセルアレイからのデータの読み出しは、ページ単位で実行される。
不揮発性メモリ200には、LUT201と、ユーザデータ202と、が格納される。
LUT201は、複数の論理アドレスそれぞれを不揮発性メモリ200内の位置を示す物理アドレスの何れかに対応づけるアドレス変換情報(Address Translation Information)である。LUT201は、論理アドレスをエントリとし、各論理アドレスに対応する物理アドレスを論理アドレスの順で配列したデータ構造を有する。なお、アドレス変換情報群のデータ構造はこれに限定されない。
メモリコントローラ100は、ホストインタフェース110、メモリインタフェース120、RAM(Random Access Memory)130、制御装置140、LUTキャッシュ管理モジュール150、LUTキャッシュアクセス回路160を備える。
メモリコントローラ100が備える各構成要素のうちの一部は、コンピュータプログラムに基づいて動作することで実現される回路によって構成されてもよい。また、メモリコントローラ100が備える各構成要素のうちの一部または全部は、例えばFPGA(field-programmable gate array)やASIC(application specific integrated circuit)などの、ハードウェア回路によって構成されてもよい。これらのような回路の一例は、例えばCPU(Central Processing Unit)やMPU(Micro Processor Unit)などのプロセッサである。つまり、メモリコントローラ100は、ハードウェア、ソフトウェア、またはこれらの組み合わせによって構成され得る。なお、メモリコントローラ100は、例えばSoC(System-On-a-Chip)などの半導体装置として構成され得る。メモリコントローラ100は、複数のチップによって構成されてもよい。
本実施形態にかかるメモリコントローラ100で実行されるプログラムは、不揮発性メモリ200や不図示のROM等に予め格納されて提供される。
本実施形態にかかるメモリコントローラ100で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD-ROM(Compact Disc Read Only Memory)、フレキシブルディスク(FD)、CD-R(Compact Disc Recordable)、DVD(Digital Versatile Disc)等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供されるように構成してもよい。
さらに、本実施形態にかかるメモリコントローラ100で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納され、ネットワーク経由でダウンロードされることにより提供されるように構成してもよい。
ホストインタフェース110は、ホスト2とメモリコントローラ100の間でコマンドやユーザデータ202の送受信を実行するためのインタフェース装置である。メモリインタフェース120は、不揮発性メモリ200に対するアクセスを実行するためのインタフェース装置である。
RAM130は、不揮発性メモリ200よりも高速なアクセスが可能な種類のメモリによって構成される。RAM130は、揮発性のメモリであってもよいし、不揮発性のメモリであってもよい。RAM130は、例えば、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)によって構成される。なお、RAM130を構成するメモリの種類は、上記の種類のメモリに限定されない。RAM130は、メモリコントローラ100の外部に設けられてもよい。
RAM130は、複数のウェイ170を有するセットアソシアティブ方式のキャッシュメモリとして利用される記憶領域を備える。RAM130のキャッシュメモリは、複数のウェイ170を含む。各ウェイ170は、複数のLUTセグメント131を記憶する。複数のLUTセグメント131には、それぞれを識別するインデックス番号が付されている。RAM130は、第2メモリの一例である。
ここで図2を用いて、ウェイ170について説明する。図2は、RAM130が備えるキャッシュメモリにおけるウェイの一例を示す模式的な図である。図2に示す例では、ウェイ170は、m個のキャッシュライン171を備える。mは正の整数である。
m個のキャッシュライン171のそれぞれには、インデックスと称されるシリアル番号が与えられている。先頭のキャッシュライン171には、インデックスとして0番が与えられている。mが2以上の場合には、先頭のキャッシュライン171以外のキャッシュライン171のそれぞれのインデックスには、先頭のキャッシュライン171からの相対位置を示す、1から(m-1)までの範囲の何れかの値が与えられている。
各キャッシュライン171は、フラグ部172、タグ部173、およびデータ部174を備える。なお、フラグ部172およびタグ部173は、データ部174と1対1に対応付けられていればよい。例えば、フラグ部172およびタグ部173と、データ部174とは、RAM130内のそれぞれ異なる位置に格納されてもよい。フラグ部172およびタグ部173は、RAM130外に格納されてもよい。フラグ部172およびタグ部173は、管理情報と表記される場合がある。
データ部174には、キャッシュメモリに格納されるデータとしてのLUTセグメント131が格納される。LUTセグメント131は、LUT201の一部を複製して生成されたデータ(第1情報)である。LUTセグメント131は、連続した所定個の論理アドレスのそれぞれにかかるアドレス変換情報を含んでいる。つまり、LUTセグメント131は、連続した所定個の論理アドレスのそれぞれに対応した物理アドレスが、論理アドレス順に配列されたデータ構造を有している。
タグ部173には、タグと称される情報が格納される。フラグ部172には、キャッシュライン171の制御に使用される1以上のフラグ情報が格納される。
フラグ情報は、例えば、後述するキャッシュヒットまたはキャッシュミスを示す情報、などを含む。なお、フラグ情報の例はこれらに限定されない。
RAM130が備えるキャッシュメモリにおける複数のウェイ170のそれぞれは、図2に示されたウェイ170と同様の構成を有する。
図1に説明を戻す。
制御装置140は、コンピュータプログラムの一例であるファームウェア(FW)に従ってメモリコントローラ100の動作を統括的に制御する装置である。制御装置140は、特に、ホスト2からのコマンドを、ホストインタフェース110を介して受信して、受信したコマンドを解析する。そして、制御装置140は、メモリインタフェース120に、解析の結果に応じた不揮発性メモリ200への動作を指示する。例えば、制御装置140は、ホスト2からアクセスコマンドを受信した場合、受信したアクセスコマンドに対応したアクセスを不揮発性メモリ200に対して実行するよう、メモリインタフェース120に指示する。
制御装置140は、ホスト2から受信したアクセスコマンドがライトコマンドの場合、不揮発性メモリ200へのユーザデータ202の書き込みを制御し、当該ユーザデータ202にかかるアドレス変換情報を更新する。
制御装置140は、ホスト2から受信したアクセスコマンドがリードコマンドの場合、リードコマンドによって指定された論理アドレスにかかるアドレス変換情報を参照することによって、当該論理アドレスを物理アドレスに変換する。また、制御装置140は、不揮発性メモリ200からのユーザデータ202の読み出しを制御する。
制御装置140は、論理アドレスをLUTキャッシュ管理モジュール150に送信することによって、更新または参照の対象のアドレス変換情報を含むLUTセグメント131を使用することができる。
LUTキャッシュ管理モジュール150は、RAM130上のLUTセグメント131へのLUT201の一部の格納位置を管理するモジュールである。なお、LUTキャッシュ管理モジュール150は、ウェイ170のデータ部174にはアクセスしない。
ところで、LUT201のキャッシュメモリへの格納が出来ず、キャッシュエントリの入れ替えを行うリフィル処理が必要になることがある。この場合、LUT201のキャッシュメモリへの格納を管理するLUTキャッシュ管理モジュール150は、実行準備ができていないLUTアクセス(参照リクエスト、更新リクエスト)を、制御装置140のファームウェア(FW)に通知する。LUTアクセスを受け取ったファームウェアは、キャッシュエントリを入れ替えるリフィル処理を実行する。すなわち、LUT201がキャッシュメモリへ格納されていない場合、LUTキャッシュ管理モジュール150は、キャッシュエントリを入れ替えるリフィル処理が完了するまで、そのLUT201へのLUTアクセス処理を待たせることになる。
加えて、従来の制御装置は、キャッシュエントリを入れ替えるリフィル処理に加えて、LUTアクセス(リクエスト)を待ちキューに入れた後、待ちキュー内のリクエストを再提供する処理も行っている。
そこで、LUTキャッシュ管理モジュール150は、リフィル処理を管理する機能を実現する機能部としてキャッシュタグチェック部151と、出力待機バッファ152と、Lookupリクエストキュー153と、Updateリクエストキュー154と、を備える。
Lookupリクエストキュー153は、対象のアドレス変換情報の参照を要求する参照リクエストであるLookupリクエストを入れるキューである。Updateリクエストキュー154は、対象のアドレス変換情報の更新を要求する更新リクエストであるUpdateリクエストを入れるキューである。
キャッシュタグチェック部151は、Lookupリクエストキュー153やUpdateリクエストキュー154に入れたリクエスト(Lookupリクエスト、Updateリクエスト)にかかる論理アドレスを制御装置140から受信した場合、まず、RAM130に対する検索を実施する。キャッシュタグチェック部151は、検索の結果がキャッシュヒットであるかキャッシュミスであるかを判定する。キャッシュタグチェック部151は、検索の結果がキャッシュミスである場合、リフィル要求を制御装置140に送る。
出力待機バッファ152は、バッファ領域の終端の次が先頭になるRing Bufferである。
LUTキャッシュアクセス回路160は、RAM130(特にキャッシュメモリ)上のLUTセグメント131に対するアクセス(参照や更新など)を実行するための回路である。LUTキャッシュアクセス回路160は、アクセスエンジンとも称される。LUTキャッシュアクセス回路160は、入力に対して、LUTセグメント131をアクセスした結果(参照データ)を付加して出力する。具体的には、Read(参照)/Write(更新)要求は、制御装置140からLUTキャッシュ管理モジュール150を経由して、LUTキャッシュアクセス回路160に送られる。LUTキャッシュアクセス回路160は、RAM130上のLUTセグメント131にアクセスした結果を、LUTキャッシュ管理モジュール150を経由して、制御装置140に出力する。制御装置140は、Read時においてはその結果に基づいて、不揮発性メモリ200にReadを発行する。すなわち、LUTキャッシュアクセス回路160は、LUTキャッシュ管理モジュール150が指示するRAM130上のLUTセグメント131の格納位置に基づいて、RAM130上のLUTセグメント131を参照・更新する。
以下において、キャッシュタグチェック部151について詳述する。
具体的には、キャッシュタグチェック部151は、まず、制御装置140から受信した論理アドレスのビット列から、タグおよびインデックスを取得する。キャッシュタグチェック部151は、キャッシュメモリにおける各ウェイ170について、取得したインデックスが示すキャッシュライン171のタグ部173から、タグを読み出す。そして、キャッシュタグチェック部151は、各ウェイ170から読み出されたタグと、論理アドレスから取得されたタグと、を比較し、比較結果がキャッシュヒットであるかキャッシュミスであるかを判定する。
各ウェイ170から読み出されたタグのうちの何れかが、論理アドレスから取得されたタグと一致した場合、即ち検索の結果がキャッシュヒットである場合、キャッシュタグチェック部151は、論理アドレスから取得されたタグと一致したタグが読み出されたキャッシュライン171の、データ部174に格納されているLUTセグメント131をLUTキャッシュアクセス回路160に使用させる。
各ウェイ170から読み出されたタグのうちに、論理アドレスから取得されたタグと一致するタグが存在しなかった場合、即ち検索の結果がキャッシュミスである場合、キャッシュタグチェック部151は、リフィル処理(第3処理)を実施する。
リフィル処理は、不揮発性メモリ200に格納されたLUT201から、対象の論理アドレスを物理アドレスに対応付けるアドレス変換情報を含むLUTセグメント131を読み出して、読み出されたLUTセグメント131を何れかのウェイ170に格納する処理である。
ところで、比較例のLUTキャッシュ管理モジュールは、キャッシュヒットまたはキャッシュミスの判定と、LUTの一部を複製して生成されるLUTセグメント(キャッシュエントリとも称する)の状態遷移と、を行うものであった。このため、制御装置(ファームウェア)の処理負担が大きくなっている。
具体的には、制御装置は、キャッシュミスなどのために、待たされたリクエストを入れるための待ちキューを選択する処理、待たされたリクエストをこの待ちキューに入れる処理、キャッシュエントリのリフィル完了後に待ちキューからリクエストを取り出してLUTキャッシュ管理モジュールへ再提供する処理などを実行する。これらの処理それぞれは、単純な処理ではあるが、制御装置の処理負担が大きいものである。制御装置のこのような大きな処理負担は、キャッシュミスが発生した場合、アドレス変換情報の参照や更新の処理のボトルネックとなる。
そこで、本実施の形態においては、リフィル処理の際(キャッシュミスの際)に、LUTキャッシュ管理モジュール150は、LUT201の一部を複製して生成されたLUTセグメント131(キャッシュエントリとも称する)を準備する(すなわちリフィル要求を送信する)処理(第1処理)と、キャッシュエントリの準備完了を待ってLUTキャッシュアクセス回路160へリクエストを提供する処理(第2処理)と、を実行する。LUTキャッシュ管理モジュール150は、この2つの処理を2段の処理ステージのパイプライン処理で実行することにより、LUT201の一部をキャッシュメモリにキャッシュするLUTキャッシュを実行する。以下において、詳述する。
[LUTキャッシュ管理モジュール150のリフィル処理の際の機能構成]
ここで、図3はLUTキャッシュ管理モジュール150によるリフィル処理の動作を模式的に示す図である。なお、図3においては、便宜上、出力待機バッファ152を1つのみ示したが、実際には複数用意されている。
ここで、図3はLUTキャッシュ管理モジュール150によるリフィル処理の動作を模式的に示す図である。なお、図3においては、便宜上、出力待機バッファ152を1つのみ示したが、実際には複数用意されている。
キャッシュタグチェック部151は、キャッシュヒットまたはキャッシュミスに関わらず、Lookupリクエストキュー153やUpdateリクエストキュー154に入れたリクエスト(Lookupリクエスト、Updateリクエスト)を、出力待機バッファ152に入れる。キャッシュタグチェック部151は、出力待機バッファ152にリクエストを入れるときに、そのリクエストにキャッシュヒットまたはキャッシュミスを示すフラグを付ける。
出力待機バッファ152は、LookupリクエストやUpdateリクエストを入ってきた順に一列に並べ、先に入れたLookupリクエストやUpdateリクエストから順に取り出すという規則で出し入れを行う待ちキューとして機能する。出力待機バッファ152は、リプレイ範囲を示すポインタP1,P2と、出力待機バッファ152の待ちキューの先頭を示すポインタP3と、出力待機バッファ152の待ちキューの末尾を示すポインタP4と、により管理される。
キャッシュタグチェック部151は、キャッシュミスしたLUTセグメント131のリフィル処理の際に、対象のLUTセグメント131のリフィル用のバッファをRAM130に確保する。確保されたバッファは、キャッシュミスしたキャッシュエントリ(LUTセグメント131)の格納に用いられる。
図3は、出力待機バッファ152上のエントリ番号(Entry Index)が‘0’と‘6’のLUTセグメント131が、キャッシュミスしたLUTセグメント131であることを例示している。
また、LUTキャッシュ管理モジュール150のキャッシュタグチェック部151は、リフィル処理の際に、制御装置140に、対象のLUTセグメント131のリフィル処理を要求する。キャッシュタグチェック部151は、リフィル要求として、キャッシュミスしたLUTセグメント131のインデックス番号、確保したバッファのアドレス、キャッシュミスしたリクエストを格納した出力待機バッファ152のエントリ番号を、制御装置140に送信する。図3に示す例では、キャッシュミスしたリクエストを格納した出力待機バッファ152のエントリ番号‘6’が、リフィル要求に含まれる。
制御装置140は、キャッシュタグチェック部151から送信されたリフィル要求に従い、対象のLUTセグメント131のリフィル処理を行う。
制御装置140は、不揮発性メモリ200に格納されたLUT201から、リフィル要求により特定される対象の論理アドレスを物理アドレスに対応付けるアドレス変換情報を含むLUTセグメント131を読み出す。制御装置140は、読み出されたLUTセグメント131を、RAM130に確保したリフィル用のバッファに格納する。
そして、制御装置140は、リフィル処理の完了を示す通知として、送信されたリフィル要求に含まれる出力待機バッファ152のエントリ番号(図3に示す例では‘6’)をLUTキャッシュ管理モジュール150に通知する。
したがって、制御装置140は、リフィル処理として、リフィル要求の対象のLUTセグメント131をLUT201から読み出してリフィル用のバッファに格納する処理と、LUTセグメント131の読み出しが完了したことをLUTキャッシュ管理モジュール150へ通知する処理と、を実行する。これにより、制御装置140の処理の簡略化を達成することができる。
LUTキャッシュ管理モジュール150は、出力待機バッファ152上のリクエストを格納順にLUTキャッシュアクセス回路160に提供する。その際、LUTキャッシュ管理モジュール150は、一つの出力待機バッファ152上のリクエスト間の追い越しはしない。LUTキャッシュ管理モジュール150は、キャッシュヒットしたエントリ、およびキャッシュミスしたがリフィル処理が完了しているエントリをLUTキャッシュアクセス回路160に提供する。
しかし、LUTキャッシュ管理モジュール150は、リフィル処理が未完了のキャッシュミスしたエントリをLUTキャッシュアクセス回路160に提供しない。従って、LUTキャッシュ管理モジュール150は、リフィル処理が未完了のキャッシュミスしたエントリがある場合、出力待機バッファ152上のそのエントリ以降のエントリはLUTキャッシュアクセス回路160に提供しない。
[第1の実施の形態の効果]
このように本実施の形態によれば、キャッシュミスしたキャッシュエントリをLUT201から準備する処理(リフィル処理)と、キャッシュエントリの準備完了を待ってLUTキャッシュアクセス回路160へリクエストを提供する処理の、2段の処理ステージのパイプラインでLUTキャッシュを構成する。これにより、キャッシュミス時の性能劣化を抑えつつ、ハードウェア構成の単純化、制御装置140の処理の簡略化を達成することができる。より詳細には、本実施の形態によれば、制御装置140が実行する処理は、LUTセグメント131の準備(リフィル)と、その準備の完了をLUTキャッシュ管理モジュール150に通知するだけで済むことにより、制御装置140の処理の簡略化を達成することができる。
このように本実施の形態によれば、キャッシュミスしたキャッシュエントリをLUT201から準備する処理(リフィル処理)と、キャッシュエントリの準備完了を待ってLUTキャッシュアクセス回路160へリクエストを提供する処理の、2段の処理ステージのパイプラインでLUTキャッシュを構成する。これにより、キャッシュミス時の性能劣化を抑えつつ、ハードウェア構成の単純化、制御装置140の処理の簡略化を達成することができる。より詳細には、本実施の形態によれば、制御装置140が実行する処理は、LUTセグメント131の準備(リフィル)と、その準備の完了をLUTキャッシュ管理モジュール150に通知するだけで済むことにより、制御装置140の処理の簡略化を達成することができる。
また、例えばメモリシステム1としてSSDを適用した場合において、SSDに搭載するRAM130(作業用メモリ)が、LUT201を全て格納可能なサイズを持たない場合であっても、LUT201のキャッシュ管理を効率よく実現することができる。
なお、本実施の形態によれば、LUTキャッシュ管理モジュール150は、LUTセグメント131のリフィル用のフリーなバッファを用意しておき、キャッシュミス時には用意したバッファをリフィル処理に用いる。フルアソシアティブキャッシュ方式の場合、フリーなバッファの生成のために、事前にキャッシュ上のクリーンなエントリを無効にしておくことにより、フリーなバッファを確保してもよい。この場合、LUTキャッシュアクセス回路160は、出力待機バッファ152経由で、先行する他のリクエストを追い越さずにキャッシュの無効要求を処理し、キャッシュの無効の完了通知(対象のバッファへのリクエストが全て無くなったことを示す通知)をLUTキャッシュ管理モジュール150に返すようにしてもよい。
また、N wayキャッシュ方式(LUTセグメント131の格納用のバッファがキャッシュのIndex,Wayで固定)の場合、キャッシュミスしたリクエストの出力待機バッファ152のエントリの直前にコピーリクエストを挿入しておき、リフィル完了時に、LUTキャッシュ管理モジュール150が持っている一時バッファからIndex,Wayで指定されるキャッシュエントリのバッファにLUTセグメント131をコピーするようにしてもよい。
(第2の実施の形態)
次に、第2の実施の形態について説明する。第1の実施の形態では、キャッシュミスの場合にパイプラインで処理する構成としたが、第2の実施の形態では、キャッシュミスの場合に待ちキューからのリプレイで処理する構成とした点が、第1の実施の形態と異なる。以下、第2の実施の形態の説明では、第1の実施の形態と同一部分の説明については省略または簡略化し、第1の実施の形態と異なる箇所について説明する。
次に、第2の実施の形態について説明する。第1の実施の形態では、キャッシュミスの場合にパイプラインで処理する構成としたが、第2の実施の形態では、キャッシュミスの場合に待ちキューからのリプレイで処理する構成とした点が、第1の実施の形態と異なる。以下、第2の実施の形態の説明では、第1の実施の形態と同一部分の説明については省略または簡略化し、第1の実施の形態と異なる箇所について説明する。
[LUTキャッシュ管理モジュール150のリフィル処理の際の機能構成]
ここで、図4は本発明の第2の実施形態にかかるLUTキャッシュ管理モジュール150によるリフィル処理の機能構成を模式的に示す図である。図4において、キャッシュタグチェック部151は、制御装置140からLookupリクエストキュー153やUpdateリクエストキュー154に入れたリクエスト(Lookupリクエスト、Updateリクエスト)にかかる論理アドレスを受信した場合、まず、RAM130に対する検索を実施する。キャッシュタグチェック部151は、検索の結果がキャッシュヒットである場合、キャッシュヒットしたリクエストをLUTキャッシュアクセス回路160に提供する。また、キャッシュタグチェック部151は、検索の結果がキャッシュミスである場合、キャッシュミスしたリクエストを、出力待機バッファ152aに入れる。出力待機バッファ152aは、キャッシュミスのため直ちにLUTキャッシュアクセス回路160に提供できないリクエストを格納しておくための待ちキューとして機能する。キャッシュタグチェック部151は、出力待機バッファ152aにリクエストを入れるときに、出力待機バッファ152a内の各リクエストのリフィル発生有無を、LUTキャッシュ管理モジュール150の内部に記憶しておく。
ここで、図4は本発明の第2の実施形態にかかるLUTキャッシュ管理モジュール150によるリフィル処理の機能構成を模式的に示す図である。図4において、キャッシュタグチェック部151は、制御装置140からLookupリクエストキュー153やUpdateリクエストキュー154に入れたリクエスト(Lookupリクエスト、Updateリクエスト)にかかる論理アドレスを受信した場合、まず、RAM130に対する検索を実施する。キャッシュタグチェック部151は、検索の結果がキャッシュヒットである場合、キャッシュヒットしたリクエストをLUTキャッシュアクセス回路160に提供する。また、キャッシュタグチェック部151は、検索の結果がキャッシュミスである場合、キャッシュミスしたリクエストを、出力待機バッファ152aに入れる。出力待機バッファ152aは、キャッシュミスのため直ちにLUTキャッシュアクセス回路160に提供できないリクエストを格納しておくための待ちキューとして機能する。キャッシュタグチェック部151は、出力待機バッファ152aにリクエストを入れるときに、出力待機バッファ152a内の各リクエストのリフィル発生有無を、LUTキャッシュ管理モジュール150の内部に記憶しておく。
LUTキャッシュ管理モジュール150は、リフィル処理の際に、LUTセグメント131のリフィル用のバッファをRAM130に確保する。確保されたバッファは、キャッシュミスしたキャッシュエントリ(LUTセグメント131)の格納に用いられる。
また、キャッシュタグチェック部151は、リフィル処理の際に、制御装置140に、対象のLUTセグメント131のリフィル処理を要求する。キャッシュタグチェック部151は、リフィル要求として、キャッシュミスしたLUTセグメント131のインデックス番号、確保したバッファのアドレス、キャッシュミスしたリクエストを格納した出力待機バッファ152aのエントリ番号を、制御装置140に送信する。
キャッシュタグチェック部151は、出力待機バッファ152a上のリクエスト(Lookupリクエスト、Updateリクエスト)を、出力待機バッファ152aへの格納順にリプレイ(再提供)する。その際、キャッシュタグチェック部151は、キャッシュミスしたがリフィル処理が完了しているエントリ、またはリフィル処理中のキャッシュにヒットしたエントリをリプレイする。なお、追い越しはしないので、キャッシュミスしたが、リフィル処理が未完了のエントリがあれば、それ以降のエントリはリプレイ対象にならない。
キャッシュタグチェック部151は、Updateリクエストキュー154から1つのUpdateリクエストを出力待機バッファ152aに入れるごとに、出力待機バッファ152aに入れたUpdateリクエストの数をカウントする。このカウンタが非ゼロの場合、キャッシュタグチェック部151は、後続の新規のUpdateリクエストを全て一旦出力待機バッファ152aに入れる。これにより、LUTキャッシュ管理モジュール150は、UpdateリクエストのLUTキャッシュアクセス回路160への提供順序を保証する。つまり、LUTキャッシュ管理モジュール150は、キャッシュミスしたリクエストの追い越しを防ぐ。
図4に示す処理状態では、出力待機バッファ152aは空である。出力待機バッファ152aには、リプレイ範囲を示すポインタP1,P2と、出力待機バッファ152aの待ちキューの先頭を示すポインタP3と、出力待機バッファ152aの待ちキューの末尾を示すポインタP4と、がある。
また、図4に示すように、キャッシュタグチェック部151は、出力待機バッファ152aに入っているUpdateリクエストの数をカウントするカウンタ155を有する。
図5-1~図5-7は、LUTキャッシュ管理モジュール150によるリフィル処理の動作を模式的に示す図である。
図5-1に示すように、キャッシュタグチェック部151は、キャッシュタグをチェックして、キャッシュミスしたリクエストおよびリフィル中でLUTキャッシュアクセス回路160に提供できないリクエストを待ちキューである出力待機バッファ152aに入れる。図5-1に示す例は、キャッシュミスしたリクエスト番号が‘0’‘3’であることを示している。リクエスト番号が‘1’‘2’は‘0’と同じLUTセグメント131に対するリクエスト、リクエスト番号が‘4’は‘3’と同じLUTセグメント131に対するリクエストで、対象のLUTセグメント131がリフィル中であるためLUTキャッシュアクセス回路160に提供できない状態であることを示す。
なお、図5-1に示すように、出力待機バッファ152aに入っているリクエスト番号‘0’‘1’‘2’‘3’‘4’はLookupリクエストであるので、カウンタ155によって示される出力待機バッファ152aに入っているUpdateリクエストの数はゼロである。
図5-1に示すように、キャッシュミスしてリフィル処理が必要になった場合、キャッシュタグチェック部151は、制御装置140にLUT201からのリフィル処理を要求する。この場合、リフィル対象は、‘0’および‘3’である。
一方、図5-2に示すように、キャッシュタグチェック部151は、キャッシュヒットしたリクエストを、LUTキャッシュアクセス回路160に提供する。図5-2に示す例は、まず、キャッシュヒットしたリクエスト番号‘5’がLUTキャッシュアクセス回路160に提供されている。
次に、出力待機バッファ152aに待機中のUpdateリクエストが入っていなければ、キャッシュタグチェック部151は、キャッシュヒットした新規のUpdateリクエストを直接LUTキャッシュアクセス回路160に提供する。図5-2に示す例は、キャッシュヒットした新規のUpdateリクエスト番号‘9’がLUTキャッシュアクセス回路160に提供されている。キャッシュタグチェック部151は、Lookupリクエストについては、出力待機バッファ152aの状態に関わらず、キャッシュヒットしたリクエストをLUTキャッシュアクセス回路160に提供する。
なお、図5-2に示すように、出力待機バッファ152aに入っているリクエスト番号‘0’‘1’‘2’‘3’‘4’はLookupリクエストであるので、カウンタ155にカウントされる出力待機バッファ152aに入っているUpdateリクエストの数は0である。
図5-2に示すように、制御装置140は、リフィル処理を完了すると、LUTキャッシュ管理モジュール150にリフィル完了を通知する。
上述したように、キャッシュタグチェック部151は、リプレイ中もキャッシュヒットしたLookupリクエスト(処理順序を守る必要がないリクエスト)を、直接LUTキャッシュアクセス回路160に提供可能である。しかし、コマンドの処理のレイテンシーを考慮すると、基本的には、出力待機バッファ152aからのリプレイを優先することが好ましい。
図5-3~図5-5に示すように、リフィル処理が完了した場合、キャッシュタグチェック部151は、出力待機バッファ152a内のリクエストをリプレイする。
具体的には、図5-3に示すように、リクエスト番号‘0’のリフィル処理が完了した場合、リクエスト番号‘0’に続きキャッシュミスでないが出力待機バッファ152aで待っていたリクエスト番号‘1’‘2’がLUTキャッシュアクセス回路160に提供される。また、キャッシュヒットしたLookupリクエストのリクエスト番号‘6’‘7’もLUTキャッシュアクセス回路160に提供される。一方、キャッシュミスしたUpdateリクエストのリクエスト番号‘a’は、キャッシュミスしてリフィル処理が必要になったため、新たに出力待機バッファ152aに入れられる。更に、キャッシュミスしたUpdateリクエストのリクエスト番号‘a’に続くUpdateリクエストのリクエスト番号‘b’も出力待機バッファ152aに入れられる。
図5-3に示すように、キャッシュミスしてリフィル処理が必要になった場合、キャッシュタグチェック部151は、制御装置140にLUT201からのリフィル処理を要求する。この場合、リフィル対象は、‘3’および‘a’である。
図5-3に示すように、出力待機バッファ152aに入っているリクエスト番号‘3’‘4’‘a’‘b’のうち、リクエスト番号‘a’‘b’はUpdateリクエストであるので、カウンタ155にカウントされる出力待機バッファ152aに入っているUpdateリクエストの数は2である。
このように出力待機バッファ152aにUpdateリクエスト(処理順序を守る必要があるリクエスト)がある場合、キャッシュタグチェック部151は、新規のUpdateリクエストを直接LUTキャッシュアクセス回路160に提供することはない。
続いて、図5-4に示すように、リクエスト番号‘3’‘a’のリフィル処理が完了していない場合において、キャッシュヒットしたLookupリクエストのリクエスト番号‘8’はLUTキャッシュアクセス回路160に提供される。一方、Updateリクエストのリクエスト番号‘c’は、出力待機バッファ152aにUpdateリクエスト‘a’‘b’があるため、出力待機バッファ152aに入れられる。
図5-4に示すように、出力待機バッファ152aに入っているリクエスト番号‘3’‘4’‘a’‘b’‘c’のうち、リクエスト番号‘a’‘b’‘c’はUpdateリクエストであるので、カウンタ155にカウントされる出力待機バッファ152aに入っているUpdateリクエストの数は3である。
すなわち、図5-3および図5-4に示すように、キャッシュタグチェック部151は、キャッシュヒットした新規のUpdateリクエストも、出力待機バッファ152aにUpdateリクエストがある場合には、処理順序を守る必要があるため、一旦出力待機バッファ152aに入れる。
続いて、図5-5に示すように、リクエスト番号‘3’のリフィル処理が完了した場合、リクエスト番号‘3’に続きキャッシュミスでないが出力待機バッファ152aで待っていたリクエスト番号‘4’がLUTキャッシュアクセス回路160に提供される。
図5-5に示すように、出力待機バッファ152aに入っているリクエスト番号‘a’‘b’‘c’はUpdateリクエストであるので、カウンタ155にカウントされる出力待機バッファ152aに入っているUpdateリクエストの数は3である。
続いて、図5-6に示すように、リクエスト番号‘a’のリフィル処理が完了した場合、リクエスト番号‘a’に続きキャッシュミスでないが出力待機バッファ152aで待っていたリクエスト番号‘b’‘c’がLUTキャッシュアクセス回路160に提供される。
図5-6に示すように、出力待機バッファ152aにはUpdateリクエストが入っていないので、カウンタ155にカウントされる出力待機バッファ152aに入っているUpdateリクエストの数は0である。
図5-6~図5-7に示すように、出力待機バッファ152aに入っているUpdateリクエストの数がカウンタ155において0になった場合、キャッシュタグチェック部151は、キャッシュヒットした新規のUpdateリクエストを、再度直接LUTキャッシュアクセス回路160に提供可能になる。なお、新規のリクエスト処理とリプレイ処理では、リプレイ処理の優先度を高くする。
具体的には、図5-6~図5-7に示すように、カウンタ155にカウントされる出力待機バッファ152aに入っているUpdateリクエストの数は0であるので、キャッシュヒットした新規のUpdateリクエスト番号‘d’がLUTキャッシュアクセス回路160に提供される。
[第2の実施の形態の効果]
このように本実施の形態によれば、キャッシュミスなどのためにLUTキャッシュアクセス回路160へリクエストを提供できないときに、それらの提供できないリクエストを一時的に溜めておく出力待機バッファ152aをLUTキャッシュ管理モジュール150で管理する。リプレイ時は、LUTキャッシュ管理モジュール150が自ら出力待機バッファ152a内のリクエストをフェッチしてLUTキャッシュ管理モジュール150に再提供することで、制御装置140の処理負担を減らすことができる。
このように本実施の形態によれば、キャッシュミスなどのためにLUTキャッシュアクセス回路160へリクエストを提供できないときに、それらの提供できないリクエストを一時的に溜めておく出力待機バッファ152aをLUTキャッシュ管理モジュール150で管理する。リプレイ時は、LUTキャッシュ管理モジュール150が自ら出力待機バッファ152a内のリクエストをフェッチしてLUTキャッシュ管理モジュール150に再提供することで、制御装置140の処理負担を減らすことができる。
また、LUTキャッシュアクセス回路160へのリクエスト提供順序を保証する機構を、LUTキャッシュ管理モジュール150自身が備えることにより、制御装置140で順序保証を管理する必要が無くなる。より詳細には、順序保証が必要ないリクエストは、先行するリクエストを追い越せるようにしているため、順序保証に伴う性能への影響が軽減される。
また、例えばメモリシステム1としてSSDを適用した場合において、SSDに搭載するRAM130(作業用メモリ)が、LUT201を全て格納可能なサイズを持たない場合であっても、LUT201のキャッシュ管理を効率よく実現することができる。
なお、本実施の形態によれば、LUTキャッシュ管理モジュール150は、LUTセグメント131のリフィル用のフリーなバッファを用意しておき、キャッシュミス時にそこからバッファを割り当てる。フルアソシアティブキャッシュ方式の場合、フリーなバッファの生成にキャッシュ上のクリーンなエントリを無効にして、事前にフリーなバッファを確保しておく。そのために、キャッシュの無効要求は出力待機バッファ152aを経由して、LUTキャッシュアクセス回路160で先行する他のリクエストを追い越さずに処理し、キャッシュの無効の完了通知(対象のバッファへのリクエストが全て無くなったことを示す通知)をLUTキャッシュアクセス回路160からLUTキャッシュ管理モジュール150に返すようにしてもよい。
また、N wayキャッシュ方式(LUTセグメント131の格納用のバッファがキャッシュのIndex,Wayで固定)の場合、キャッシュミスしたリクエストの出力待機バッファ152aのエントリの直前にコピーリクエストを挿入しておき、リフィル完了時に、LUTキャッシュ管理モジュール150が持っている一時バッファからIndex,Wayで指定されるキャッシュエントリのバッファにLUTセグメント131をコピーするようにしてもよい。
なお、各実施形態のメモリコントローラ100は、SSD等の不揮発性メモリ200を備えるメモリシステム内のコントローラを想定したが、これに限るものではなく、第1メモリである不揮発性メモリ200および第2メモリであるRAM130とは別デバイスとして構成されたコントローラ装置であってもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム
2 ホスト
100 メモリコントローラ
130 第2メモリ
140 制御装置
151 リフィル手段
152、152a 出力待機バッファ
160 LUTキャッシュアクセス回路
200 第1メモリ
2 ホスト
100 メモリコントローラ
130 第2メモリ
140 制御装置
151 リフィル手段
152、152a 出力待機バッファ
160 LUTキャッシュアクセス回路
200 第1メモリ
Claims (11)
- データを記憶可能なメモリシステムであって、
前記データを不揮発に記憶する不揮発性の第1メモリと、前記第1メモリは、前記メモリシステムの論理アドレス空間内の複数の位置を示す複数の論理アドレスそれぞれを前記第1メモリの物理的な位置を示す物理アドレスの何れかに対応付ける第1情報を格納し、
前記複数の論理アドレスに関する前記第1情報の一部である第2情報が格納されるセットアソシアティブ方式のキャッシュの領域を含む第2メモリと、
前記第1メモリに対する前記第1情報のアクセスを制御する制御装置および前記第2メモリに対するアクセスを制御する回路を含み、前記第2情報を格納した前記キャッシュの領域に対する第1の論理アドレスの検索結果がキャッシュミスであった場合、前記第2情報のキャッシュエントリを準備するための要求を前記制御装置に送信する第1処理と、前記制御装置から前記キャッシュエントリの準備完了を示す通知を受領したことに応じて前記回路に対して前記キャッシュエントリに関するリクエストを提供する第2処理と、を含む第3処理を実行するコントローラと、
を備えるメモリシステム。 - 前記コントローラは、前記第2情報の前記キャッシュエントリを記憶するバッファを前記第2メモリに確保する、
請求項1に記載のメモリシステム。 - 前記コントローラは、前記要求として、前記キャッシュミスした前記第1の論理アドレスに関する番号、確保した前記バッファのアドレス、前記キャッシュミスしていたバッファ内の番号を、前記制御装置に送信する。
請求項2に記載のメモリシステム。 - 前記コントローラは、キャッシュヒットした第2の論理アドレスに関するキャッシュエントリに関するリクエスト、または前記キャッシュミスしたが前記第3処理が完了している第3の論理アドレスに関するキャッシュエントリに関するリクエストまでを前記回路に提供する、
請求項1に記載のメモリシステム。 - 前記コントローラは、前記回路への提供順序の保証が必要ないリクエストについては、先行するリクエストを追い越して前記回路に提供する、
請求項1に記載のメモリシステム。 - 前記コントローラは、前記キャッシュミスしたリクエストを格納するバッファを管理し、前記リクエストと、前記リクエストが前記第3処理が必要であることを示す情報と、を記憶する、
請求項5に記載のメモリシステム。 - 前記コントローラは、キャッシュミスしたが前記第3処理が完了しているエントリ、または前記第3処理中であってキャッシュにヒットしたエントリを前記回路へ提供する、
請求項5に記載のメモリシステム。 - 前記コントローラは、前記第1情報の更新が必要なリクエストの前記回路への提供順序を保証する、
請求項5に記載のメモリシステム。 - 前記第1処理と前記第2処理とは、パイプライン処理である、
請求項1に記載のメモリシステム。 - 第1メモリと第2メモリとを備えるメモリシステムの制御方法であって、
前記メモリシステムの論理アドレス空間内の複数の位置を示す複数の論理アドレスそれぞれを第1メモリの物理的な位置を示す物理アドレスの何れかに対応付ける第1情報を、前記第1メモリに格納することと、
前記複数の論理アドレスに関する前記第1情報の一部である第2情報を前記第2メモリが備えるセットアソシアティブ方式のキャッシュの領域に格納することと、
前記第2情報を格納した前記キャッシュの領域から第1の論理アドレスを検索した結果がキャッシュミスであった場合、前記第2情報のキャッシュエントリを準備するための要求を送信する第1処理と、前記キャッシュエントリの準備完了を示す通知を受領したことに応じて前記キャッシュエントリに関するリクエストを提供する第2処理と、を含む第3処理を実行することと、
を含む制御方法。 - データを不揮発に記憶する不揮発性の第1メモリと第2メモリとを制御可能なメモリコントローラであって、
前記第1メモリは、前記第1メモリによって提供されるメモリシステムの論理アドレス空間内の複数の位置を示す複数の論理アドレスそれぞれを当該第1メモリの物理的な位置を示す物理アドレスの何れかに対応付ける第1情報が格納され、
前記第2メモリは、前記複数の論理アドレスに関する前記第1情報の一部である第2情報が格納されるセットアソシアティブ方式のキャッシュの領域を含み、
前記第1メモリに対する前記第1情報のアクセスを制御する制御装置と、
前記第2メモリに対するアクセスを制御する回路と、
前記第2情報を格納した前記キャッシュの領域に対する第1の論理アドレスの検索結果がキャッシュミスであった場合、前記第2情報のキャッシュエントリを準備するための要求を前記制御装置に送信する第1処理と、前記制御装置から前記キャッシュエントリの準備完了を示す通知を受領したことに応じて前記回路に対して前記キャッシュエントリに関するリクエストを提供する第2処理と、を含む第3処理を実行する手段と、
を備えるメモリコントローラ。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021044451A JP2022143762A (ja) | 2021-03-18 | 2021-03-18 | メモリシステム、制御方法およびメモリコントローラ |
US17/472,402 US20220300424A1 (en) | 2021-03-18 | 2021-09-10 | Memory system, control method, and memory controller |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021044451A JP2022143762A (ja) | 2021-03-18 | 2021-03-18 | メモリシステム、制御方法およびメモリコントローラ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022143762A true JP2022143762A (ja) | 2022-10-03 |
Family
ID=83284863
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021044451A Pending JP2022143762A (ja) | 2021-03-18 | 2021-03-18 | メモリシステム、制御方法およびメモリコントローラ |
Country Status (2)
Country | Link |
---|---|
US (1) | US20220300424A1 (ja) |
JP (1) | JP2022143762A (ja) |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7050061B1 (en) * | 1999-06-09 | 2006-05-23 | 3Dlabs Inc., Ltd. | Autonomous address translation in graphic subsystem |
US20020169936A1 (en) * | 1999-12-06 | 2002-11-14 | Murphy Nicholas J.N. | Optimized page tables for address translation |
JP2002041452A (ja) * | 2000-07-27 | 2002-02-08 | Hitachi Ltd | マイクロプロセッサ、半導体モジュール及びデータ処理システム |
US20070165042A1 (en) * | 2005-12-26 | 2007-07-19 | Seitaro Yagi | Rendering apparatus which parallel-processes a plurality of pixels, and data transfer method |
US8769251B2 (en) * | 2006-12-13 | 2014-07-01 | Arm Limited | Data processing apparatus and method for converting data values between endian formats |
US20090013148A1 (en) * | 2007-07-03 | 2009-01-08 | Micron Technology, Inc. | Block addressing for parallel memory arrays |
US8402248B2 (en) * | 2010-12-31 | 2013-03-19 | Telefonaktiebolaget L M Ericsson (Publ) | Explicitly regioned memory organization in a network element |
US9672583B2 (en) * | 2011-12-21 | 2017-06-06 | Intel Corporation | GPU accelerated address translation for graphics virtualization |
US9032165B1 (en) * | 2013-04-30 | 2015-05-12 | Amazon Technologies, Inc. | Systems and methods for scheduling write requests for a solid state storage device |
US10824553B2 (en) * | 2015-04-24 | 2020-11-03 | Toshiba Memory Corporation | Memory device that controls timing of receiving write data from a host |
KR102402672B1 (ko) * | 2015-09-01 | 2022-05-26 | 삼성전자주식회사 | 컴퓨팅 시스템 및 컴퓨팅 시스템에서 연산들을 처리하는 방법 |
US10268399B2 (en) * | 2016-09-16 | 2019-04-23 | Toshiba Memory Corporation | Memory system using message monitoring and first and second namespaces |
JP2019008730A (ja) * | 2017-06-28 | 2019-01-17 | 東芝メモリ株式会社 | メモリシステム |
US10534718B2 (en) * | 2017-07-31 | 2020-01-14 | Micron Technology, Inc. | Variable-size table for address translation |
US20200379809A1 (en) * | 2019-05-28 | 2020-12-03 | Micron Technology, Inc. | Memory as a Service for Artificial Neural Network (ANN) Applications |
JP2022016899A (ja) * | 2020-07-13 | 2022-01-25 | キオクシア株式会社 | メモリシステム及び情報処理システム |
-
2021
- 2021-03-18 JP JP2021044451A patent/JP2022143762A/ja active Pending
- 2021-09-10 US US17/472,402 patent/US20220300424A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20220300424A1 (en) | 2022-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI673608B (zh) | 使用反向快取表的基於硬體之映射加速 | |
EP3673377B1 (en) | Logical to physical mapping | |
US8185692B2 (en) | Unified cache structure that facilitates accessing translation table entries | |
US11232037B2 (en) | Using a first-in-first-out (FIFO) wraparound address lookup table (ALT) to manage cached data | |
JP2022050016A (ja) | メモリシステム | |
US10642740B2 (en) | Methods for performing a memory resource retry | |
US11341042B2 (en) | Storage apparatus configured to manage a conversion table according to a request from a host | |
US11599483B2 (en) | Dedicated cache-related block transfer in a memory system | |
US11126573B1 (en) | Systems and methods for managing variable size load units | |
US20080301372A1 (en) | Memory access control apparatus and memory access control method | |
CN108228088B (zh) | 用于管理存储系统的方法和设备 | |
US10628048B2 (en) | Storage control device for controlling write access from host device to memory device | |
US11836092B2 (en) | Non-volatile storage controller with partial logical-to-physical (L2P) address translation table | |
JP2001195197A (ja) | 記憶されたレコードについてのフォーマット情報を効率的に提供するためのディレクトリを含むデジタル・データ・サブシステム | |
US11029892B2 (en) | Memory control apparatus and memory control method for swapping data based on data characteristics | |
US8356141B2 (en) | Identifying replacement memory pages from three page record lists | |
JP2022143762A (ja) | メモリシステム、制御方法およびメモリコントローラ | |
JP2016057763A (ja) | キャッシュ装置、及びプロセッサ | |
US7421536B2 (en) | Access control method, disk control unit and storage apparatus | |
US20140281157A1 (en) | Memory system, memory controller and method | |
EP4116829A1 (en) | Systems and methods for managing variable size load units | |
JP6640940B2 (ja) | メモリシステムの制御方法 | |
US20230185708A1 (en) | Memory system and method | |
US20200278925A1 (en) | Information processing apparatus, information processing method, and storage medium | |
US7840757B2 (en) | Method and apparatus for providing high speed memory for a processing unit |