(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024029438
(43)【公開日】2024-03-06
(54)【発明の名称】メモリデバイス及びメモリシステム
(51)【国際特許分類】
G06F 12/0862 20160101AFI20240228BHJP
【FI】
G06F12/0862 105
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022131698
(22)【出願日】2022-08-22
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】鈴木 智哉
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205JJ11
5B205NN92
(57)【要約】
【課題】読み出し性能を向上させることが可能なメモリデバイス及びメモリシステムを提供することにある。
【解決手段】実施形態に係るメモリデバイスは、コントローラと、不揮発性メモリと、キャッシュメモリとを具備する。コントローラは、不揮発性メモリに格納されているデータを読み出すために順次アクセスされる複数の第1アドレスを記録し、記録された複数の第1アドレスのうちの第2アドレスと、第2アドレスがアクセスされた後にアクセスされると推定される複数の第1アドレスのうちの第3アドレスとを含むアドレスリストを取得し、アドレスリストに含まれる第2アドレスがアクセスされた場合に、アドレスリストに含まれる第3アドレスに基づいて不揮発性メモリからデータを読み出し、読み出されたデータをキャッシュメモリに格納する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
コントローラと、
不揮発性メモリと、
キャッシュメモリと
を具備し、
前記コントローラは、
前記不揮発性メモリに格納されているデータを読み出すために順次アクセスされる複数の第1アドレスを記録し、
前記記録された複数の第1アドレスのうちの第2アドレスと、前記第2アドレスがアクセスされた後にアクセスされると推定される前記複数の第1アドレスのうちの第3アドレスとを含むアドレスリストを取得し、
前記アドレスリストに含まれる第2アドレスがアクセスされた場合に、前記アドレスリストに含まれる第3アドレスに基づいて前記不揮発性メモリからデータを読み出し、
前記読み出されたデータを前記キャッシュメモリに格納する
メモリデバイス。
【請求項2】
前記不揮発性メモリは、データ読み出し動作の単位であるページを複数含み、
前記コントローラは、前記アドレスリストに含まれる第3アドレスに基づいて読み出されるデータのうちの2つ以上のデータが前記複数のページのうちの1つのページに配置されている場合には、前記ページから1回の読み出し動作で前記2つ以上のデータを読み出して前記キャッシュメモリに格納する
請求項1記載のメモリデバイス。
【請求項3】
前記不揮発性メモリは、データ読み出し動作の単位であるページを複数含み、
前記アドレスリストは、複数の第3アドレスを含み、
前記コントローラは、前記アドレスリストに含まれる第2アドレスがアクセスされる前に、前記複数の第3アドレスの各々に基づいて読み出されるデータを前記不揮発性メモリに含まれる同一のページ内に配置する
請求項1記載のメモリデバイス。
【請求項4】
前記コントローラは、
前記複数の第3アドレスの各々に基づいて読み出されるデータが前記不揮発性メモリに含まれる同一のページ内に配置された場合、前記第2アドレスと前記ページを識別するためのページ番号を含む第4アドレスとを含むアクセス再生用データを生成し、
前記アクセス再生用データに含まれる第2アドレスがアクセスされた場合、前記アクセス再生用データに含まれる第4アドレスに基づいて前記不揮発性メモリからデータを読み出す
請求項3記載のメモリデバイス。
【請求項5】
前記複数の第3アドレスは、優先度が高い第5アドレスと優先度が低い第6アドレスとを含み、
前記コントローラは、
前記第5アドレスに基づいて読み出されるデータを前記不揮発性メモリに含まれる第1ページ内に配置し、前記第2アドレスと前記第1ページを識別するためのページ番号を含む第4アドレスとを含む第1アクセス再生用データを生成し、
前記第6アドレスに基づいて読み出されるデータを前記不揮発性メモリに含まれる前記第1ページとは異なる第2ページ内に配置し、前記第2アドレスと前記第2ページを識別するためのページ番号を含む第4アドレスとを含む第2アクセス再生用データを生成し、
前記データを前記キャッシュメモリに格納するために、前記第2アクセス再生用データよりも優先的に前記第1アクセス再生用データを参照する
請求項4記載のメモリデバイス。
【請求項6】
前記コントローラは、前記複数の第1アドレスを複数回記録し、
前記第5及び第6アドレスは、前記複数回記録された複数の第1アドレスにおける出現回数に基づいて決定される
請求項5記載のメモリデバイス。
【請求項7】
前記コントローラは、複数の第2アドレス及び前記複数の第2アドレスの各々がアクセスされた後にアクセスされると推定される複数の第3アドレスを含むアドレスリストを取得し、
前記アドレスリストに含まれる複数の第2アドレスの各々に対応する複数のアクセス再生用データを生成し、
前記第2アドレスがアクセスされた場合、前記データを前記キャッシュメモリに格納するために参照するアクセス再生用データを、別の第2アドレスに対応するアクセス再生用データに入れ替える
請求項4記載のメモリデバイス。
【請求項8】
複数のプログラムを実行するように構成されたプロセッサに接続され、
前記コントローラは、
前記プログラム毎のアクセス再生用データを生成し、
前記第2アドレスがアクセスされた場合に、前記第2アドレスに基づいて特定のプログラムの実行の開始を検出し、
前記検出結果に基づいて、前記データを前記キャッシュメモリに格納するために参照されるアクセス再生用データを入れ替える
請求項4記載のメモリデバイス。
【請求項9】
前記アドレスリストに含まれる第2アドレス及び第3アドレスに基づいて読み出されるデータのうち、前記第2アドレスがアクセスされることによって前記キャッシュメモリに格納されないデータは、前記不揮発性メモリよりもデータを高速に読み出すことが可能な記憶領域に予め配置されている請求項1~8のいずれか一項に記載のメモリデバイス。
【請求項10】
メモリデバイスと、
前記メモリデバイスに接続されるプロセッサと
を具備し、
前記メモリデバイスは、コントローラと、不揮発性メモリと、キャッシュメモリとを備え、
前記コントローラは、
前記不揮発性メモリに格納されているデータを読み出すために順次アクセスされる複数の第1アドレスを記録し、
前記記録された複数の第1アドレスのうちの第2アドレスと、前記第2アドレスがアクセスされた後にアクセスされると推定される前記複数の第1アドレスのうちの第3アドレスとを含むアドレスリストを取得し、
前記アドレスリストに含まれる第2アドレスがアクセスされた場合に、前記アドレスリストに含まれる第3アドレスに基づいて前記不揮発性メモリからデータを読み出し、
前記読み出されたデータを前記キャッシュメモリに格納し、
前記プロセッサは、前記記録された複数の第1アドレスに基づいて前記アドレスリストを作成する
メモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリデバイス及びメモリシステムに関する。
【背景技術】
【0002】
近年では、不揮発性メモリ(例えば、NAND型フラッシュメモリ)を備えるメモリデバイスが知られており、このようなメモリデバイスを従来DRAM(Dynamic Random Access Memory)等で構成されるメインメモリ(主記憶装置)の一部として用いることが検討されている。
【0003】
しかしながら、上記したメモリデバイスはDRAMよりも低コストであるという利点がある一方で、当該DRAMよりもデータの読み出しレイテンシが長い。したがって、メモリデバイスの読み出し性能を向上させることが求められている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
そこで、本発明が解決しようとする課題は、読み出し性能を向上させることが可能なメモリデバイス及びメモリシステムを提供することにある。
【課題を解決するための手段】
【0006】
実施形態に係るメモリデバイスは、コントローラと、不揮発性メモリと、キャッシュメモリとを具備する。前記コントローラは、前記不揮発性メモリに格納されているデータを読み出すために順次アクセスされる複数の第1アドレスを記録し、前記記録された複数の第1アドレスのうちの第2アドレスと、前記第2アドレスがアクセスされた後にアクセスされると推定される前記複数の第1アドレスのうちの第3アドレスとを含むアドレスリストを取得し、前記アドレスリストに含まれる第2アドレスがアクセスされた場合に、前記アドレスリストに含まれる第3アドレスに基づいて前記不揮発性メモリからデータを読み出し、前記読み出されたデータを前記キャッシュメモリに格納する。
【図面の簡単な説明】
【0007】
【
図1】第1実施形態に係るメモリデバイスの構成の一例を示すブロック図。
【
図2】第1実施形態におけるアクセス記録処理の一例について説明するための図。
【
図3】第1実施形態におけるアクセス履歴解析部の動作の概要について説明するための図。
【
図4】第1実施形態におけるアクセスパターンの一例を示す図。
【
図5】第1実施形態におけるアクセスパターンから作成されたアドレスリストの一例を示す図。
【
図6】第1実施形態におけるデータ配置処理の一例について説明するための図。
【
図7】第1実施形態におけるアクセス再生用データの一例を示す図。
【
図8】第1実施形態におけるアクセス再生処理の一例について説明するための図。
【
図9】第2実施形態においてアクセスパターンを構成する論理アドレスに割り当てられる優先度の一例について説明するための図。
【
図10】第2実施形態におけるデータ配置処理の一例について説明するための図。
【
図11】第2実施形態におけるアクセス再生処理の処理手順の一例を示すフローチャート。
【
図12】第2実施形態において条件分岐によりアクセスパターンが変化する例を示す図。
【
図13】第3実施形態に係るメモリデバイスの構成の一例を示すブロック図。
【
図14】第3実施形態におけるアクセス再生用データの一例を示す図。
【
図15】第3実施形態におけるアクセス再生処理の処理手順の一例を示すフローチャート。
【
図16】第4実施形態に係るメモリデバイスの構成の一例を示すブロック図。
【発明を実施するための形態】
【0008】
以下、図面を参照して、各実施形態について説明する。
(第1実施形態)
まず、第1実施形態について説明する。
図1は、本実施形態に係るメモリデバイスの構成の一例を示すブロック図である。
【0009】
本実施形態に係るメモリデバイス10は例えばCPU20等のプロセッサと接続可能に構成されており、当該メモリデバイス10及びCPU20は、メモリシステム30を構成する。
【0010】
ここで、本実施形態におけるメモリシステム30は、例えばサーバの構築や保守等を行うことなく当該サーバ上で各種プログラム(アプリケーションプログラム)を実行することが可能なサーバレスコンピューティングを実現するために用いられるものとする。サーバレスコンピューティングにおいては、例えば所定の時刻(つまり、定時)、ファイルのアップロードまたはメッセージの受信といったイベントの発生(トリガ)に応じて事前に登録されたプログラムを実行するようなことが可能である。
【0011】
ところで、上記したサーバレスコンピューティングにおいては短時間でプログラムが実行されることがあり、その場合、当該プログラムの起動部分を高速化することが好ましい。
【0012】
この場合、起動部分のオーバーヘッドをなくすために、起動済み状態でメモリの状態を維持する場合、大容量のメモリが必要となる。
【0013】
メモリシステム30においてはメインメモリとして例えばDRAM(図示せず)が使用されるが、当該DRAMの大容量化はコストがかかる。
【0014】
そこで、本実施形態においては、上記したサーバレスコンピューティングを実現するためのサーバとして用いられるメモリシステム30を構成するメモリデバイス10を、CPU20に接続されているメインメモリとして動作させるものとする。なお、メモリデバイス10は、不揮発性メモリを有し、DRAMとストレージ装置(例えば、SSD等)との中間的な性能を有する。具体的には、メモリデバイス10の記憶容量はメインメモリ(DRAM)よりも大きく、メモリデバイス10に対するアクセス速度はストレージ装置よりも高速である。本実施形態においては、このようなメモリデバイス10を用いることによって、実質的にメインメモリの大容量化を実現する。
【0015】
しかしながら、メモリデバイス10はDRAMと比較してデータの読み出しレイテンシが長く、上記したようにサーバにおいて実行されるプログラムの性能(アプリケーション性能)が低下する。
【0016】
本実施形態においては、このようなアプリケーション性能の低下を抑制する(つまり、読み出し性能を向上させる)メモリデバイス10(及びメモリシステム30)を提供する。なお、本実施形態に係るメモリデバイス10は、上記したようにメインメモリの一部として動作するため、不揮発性の記憶装置でありながら、揮発性のメモリデバイスとして扱われる。
【0017】
メモリデバイス10は、例えばメモリバスを介してCPU20と接続される。なお、メモリデバイス10とCPU20とを接続するメモリバスは、例えばCompute Express LinkTM(CXLTM)規格に準拠したCXLTMバスを含むが、他の規格に準拠したバスであってもよい。
【0018】
ここで、本実施形態におけるCPU20は、例えばマルチコアプロセッサであり、メモリバスを介してメモリデバイス10にアクセスする。具体的には、CPU20は、データを書き込むためのライトアクセス要求であるストアコマンドをメモリデバイス10に送信する。また、CPU20は、データを読み出すためのリードアクセス要求であるロードコマンドをメモリデバイス10に送信する。
【0019】
なお、CPU20がメモリデバイス10にアクセスする場合には、プログラム(アプリケーションンプログラム)によって使用される仮想メモリアドレスから変換された物理メモリアドレスが使用される。すなわち、上記したライトアクセス要求(ストアコマンド)及びリードアクセス要求(ロードコマンド)においては仮想メモリアドレスから変換された物理メモリアドレスが指定されており、CPU20がメモリデバイス10にアクセスする場合には、当該物理メモリアドレスがCPU20からメモリデバイス10に送信される。以下の説明においては、CPU20がメモリデバイス10にアクセスする際にCPU20において指定される物理メモリアドレス(当該CPU20からメモリデバイス10に送信される物理メモリアドレス)を、便宜的に、論理アドレスと称する。
【0020】
また、メモリバスを介したメモリデバイス10へのリード/ライトアクセスは、予め規定されたデータの粒度で実行される。データの粒度は、例えば64バイト(64B)であるが、128バイト(128B)及び256バイト(256B)等であってもよい。なお、データの粒度が例えば64バイトである場合には、CPU20は、当該CPU20からメモリデバイス10に論理アドレスを送信することによって、当該64バイトのデータにアクセスすることができる。
【0021】
メモリデバイス10は、NAND型フラッシュメモリ11、キャッシュメモリ12及びコントローラ13を備える。
【0022】
NAND型フラッシュメモリ11は、不揮発性メモリである。具体的には、NAND型フラッシュメモリ11は、例えば3次元構造のフラッシュメモリである。NAND型フラッシュメモリ11は、複数のブロックを有する。複数のブロックの各々は、データ消去動作の単位である。また、複数のブロックの各々は、複数の物理ページを含む。複数の物理ページの各々は、同一ワード線に接続された複数のメモリセルを含む。複数の物理ページの各々は、データプログラム動作及びデータ読み出し動作の単位である。なお、複数の物理ページの各々のサイズは、データアクセス単位よりも大きい。ページ内に配置されたデータを読み出す場合、NAND型フラッシュメモリ11は、1つの物理ページから読み出されたデータ(1つの物理ページサイズ分のデータ)のうちの一部のデータだけを出力することができる。
【0023】
上記したように論理アドレスが当該CPU20からメモリデバイス10に送信された場合(つまり、CPU20によって当該論理アドレスがアクセスされた場合)、当該論理アドレスは、アドレス変換テーブルに基づいて、NAND型フラッシュメモリ11内の物理的な位置を示すアドレス(以下、物理アドレスと表記)に変換される。すなわち、
図1に示されるNAND型フラッシュメモリ11にデータを書き込むまたは当該NAND型フラッシュメモリ11からデータを読み出す場合には、物理アドレスが使用される。このようなアドレス変換を行うコントローラ(NAND型フラッシュメモリ11を制御するコントローラ)は、
図1に示すNAND型フラッシュメモリ11に含まれているものとする。なお、上記したアドレス変換テーブルは、NAND型フラッシュメモリ11に格納されていてもよいし、DRAM(図示せず)に保持されていてもよい。
【0024】
キャッシュメモリ12は、NAND型フラッシュメモリ11に対してキャッシュメモリとして動作する揮発性メモリであり、当該NAND型フラッシュメモリ11から読み出されるデータをキャッシュするように動作する。キャッシュメモリ12は、例えばメモリデバイス10に備えられるDRAMまたはSRAM(Static Random Access Memory)によって実現される。また、
図1には示されていないが、キャッシュメモリ12を制御するコントローラは、
図1に示すキャッシュメモリ12に含まれているものとする。
【0025】
ここで、上記したNAND型フラッシュメモリ11及びキャッシュメモリ12の動作について簡単に説明する。
【0026】
例えばCPU20がメモリデバイス10からデータを読み出す場合には、当該CPU20によってアクセスされる論理アドレスが当該CPU20からメモリデバイス10に送信される。このようにCPU20から送信された論理アドレスに基づいて読み出されるデータ(以下、読み出し対象データと表記)がキャッシュメモリ12に格納されている場合には、メモリデバイス10は、当該読み出し対象データをキャッシュメモリ12から読み出し、当該読み出し対象データをCPU20に返す。
【0027】
一方、読み出し対象データがキャッシュメモリ12に格納されていない場合には、メモリデバイス10は、当該読み出し対象データをNAND型フラッシュメモリ11から読み出し、当該読み出し対象データをCPU20に返す。
【0028】
キャッシュメモリ12(例えば、DRAM)はNAND型フラッシュメモリ11よりも高速にデータを読み出すことが可能であるため、読み出し対象データがキャッシュメモリ12に格納されている場合には、メモリデバイス10の読み出し性能を向上させることができる。一方、読み出し対象データがキャッシュメモリ12に格納されていない場合には、メモリデバイス10の読み出し性能を向上させることができない。
【0029】
ここで、例えば上記したように読み出し対象データがNAND型フラッシュメモリ11から読み出された場合には、当該読み出し対象データはキャッシュメモリ12に格納される。このため、読み出し対象データがキャッシュメモリ12に格納されている間に当該読み出し対象データを読み出すための論理アドレスがCPU20から再度送信された場合には、当該読み出し対象データをキャッシュメモリ12から高速に読み出すことが可能である。
【0030】
しかしながら、キャッシュメモリ12の容量は有限であり、当該キャッシュメモリ12に格納されたデータは、時間の経過とともに当該キャッシュメモリ12から消去される場合がある。本実施形態に係るメモリシステム30が上記したようにサーバレスコンピューティングを実現するためのサーバとして用いられる場合、当該サーバにおいては同一のプログラムが繰り返し実行されると考えられるが、当該プログラムは例えばイベントの発生に応じて実行されるため、当該プログラムが実行されるタイミングは不明である。このため、一度プログラムが実行されることによってデータがキャッシュメモリ12に格納されたとしても、当該プログラムが再度実行される時点では、当該データが既にキャッシュメモリ12から消去されている可能性がある。
【0031】
そこで、本実施形態において、コントローラ13は、同一のプログラムが実行される際には前回の実行時と同一のデータが読み出される(同一のデータにアクセスされる)ことが多い性質を利用し、CPU20からメモリデバイス10へのアクセスパターン(データの読み出しパターン)に基づいてデータをプリフェッチするように動作する。なお、本実施形態において「データをプリフェッチする」とは、NAND型フラッシュメモリ11に格納されているデータを予め読み出して、当該読み出されたデータをキャッシュメモリ12に格納しておくことをいう。
【0032】
コントローラ13は、アクセス記録部131、配置部132及びアクセス再生部133を含む。
【0033】
アクセス記録部131は、CPU20のメモリデバイス10に対するアクセスを記録する。具体的には、アクセス記録部131は、CPU20からメモリデバイス10に送信される論理アドレス(つまり、NAND型フラッシュメモリ11に格納されているデータを読み出すためにCPU20によって順次アクセスされる複数の論理アドレス)のシーケンス(以下、アドレスシーケンスと表記)を記憶する。なお、アクセス記録部131によって記録されたアドレスシーケンス(記録シーケンス)は、例えばメモリデバイス10の外部に配置されているアクセス履歴解析部40に送信される。
【0034】
アクセス履歴解析部40は、アクセス記録部131から送信されたアドレスシーケンス(CPU20によって順次アクセスされた論理アドレスの履歴)を解析する。これにより、アクセス履歴解析部40は、上記したプリフェッチのトリガとなる論理アドレス(以下、トリガアドレスと表記)と、当該トリガアドレスがアクセスされた後にアクセスされる(つまり、トリガアドレスと近い時刻にアクセスされる)と推定される論理アドレス(以下、再生対象論理アドレスと表記)とを、アドレスシーケンスから特定する。アクセス履歴解析部40によって特定されたトリガアドレスと再生対象論理アドレスとを含むリスト(以下、アドレスリストと表記)は、配置部132に送信される。
【0035】
なお、アクセス履歴解析部40は、例えばCPU20によって実現されることを想定しているが、当該CPU20以外のプロセッサ(またはコントローラ)等によって実現されてもよい。
【0036】
配置部132は、アクセス履歴解析部40から送信されたアドレスリストに含まれる再生対象論理アドレスに基づいてNAND型フラッシュメモリ11からデータ(以下、再生対象データと表記)を読み出すとともに、当該再生対象データをNAND型フラッシュメモリ11に含まれる複数のページのうちの同一のページ(以下、再生対象ページと表記)内に配置する(書き込む)。
【0037】
配置部132は、アクセス履歴解析部40から出力されたアドレスリストに含まれるトリガアドレスと、再生対象ページを識別するためのページ番号(当該ページに割り当てられているページ番号)を含む物理アドレス(以下、再生対象物理アドレスと表記)とを含むアクセス再生用データをアクセス再生部133に出力する。
【0038】
アクセス再生部133は、配置部132から出力されたアクセス再生用データを参照して、CPU20からメモリデバイス10に送信される論理アドレス(NAND型フラッシュメモリ11に格納されているデータを読み出すためにCPU20によってアクセスされる論理アドレス)を監視する。アクセス再生部133は、アクセス再生用データに含まれるトリガアドレスがCPU20によってアクセスされた場合に、NAND型フラッシュメモリ11に対してプリフェッチを指示する。この場合、アクセス再生用データに含まれる再生対象物理アドレス(に含まれるページ番号)に基づいて再生対象ページ内に配置された再生対象データがNAND型フラッシュメモリ11から読み出され、当該再生対象データがキャッシュメモリ12に格納される。
【0039】
以下、本実施形態に係るメモリデバイス10の動作について説明する。ここでは、アクセス記録部131によって実行される処理(以下、アクセス記録処理と表記)、配置部132によって実行される処理(以下、データ配置処理と表記)及びアクセス再生部133によって実行される処理(以下、アクセス再生処理と表記)について主に説明する。
【0040】
まず、
図2を参照して、アクセス記録処理について説明する。なお、
図2においては、コントローラ13に含まれる配置部132及びアクセス再生部133については省略されている。
【0041】
上記したように本実施形態にアクセス記録部131はCPU20によって順次アクセスされる複数の論理アドレスのシーケンス(アドレスシーケンス)を記録するが、当該アドレスシーケンスを記録する期間(アドレスシーケンスの記録を開始するタイミング及び終了するタイミング)は、例えばメモリデバイス10の外部(例えば、CPU20)から指示される。
【0042】
具体的には、アドレスシーケンスの記録を開始するタイミング(以下、単に記録開始タイミングと表記)の指示をrecord_startとすると、当該record_startは、メモリシステム30(サーバレスコンピューティングにおけるサーバ)上で所定のプログラムの実行が開始されるタイミングでアクセス記録部131に送信される(ステップS1)。このステップS1において送信されたrecord_startは、例えばコントローラ13内に設けられているレジスタに格納される。これにより、アクセス記録部131は、アドレスシーケンスの記録を開始する。
【0043】
次に、CPU20がプログラムの実行中にメモリデバイス10(NAND型フラッシュメモリ11)からデータを読み出す場合には、当該CPU20によってアクセスされる論理アドレスが当該CPU20からメモリデバイス10に送信される(ステップS2)。
【0044】
この場合、アクセス記録部131は、ステップS2においてCPU20から送信された論理アドレスを取得する(ステップS3)。ステップS3において取得された論理アドレスは、アクセス記録部131において一時的に記録される。
【0045】
ここで、記録開始タイミングは上記したrecord_startによって指示されるが、当該アドレスシーケンスの記録を終了するタイミング(以下、単に記録終了タイミングと表記)は、record_endによって指示される。
【0046】
上記したrecord_startが所定のプログラムの実行が開始するタイミングでアクセス記録部131に送信されたものとすると、record_endは、当該プログラムの実行が終了されるタイミングでアクセス記録部131に送信される(ステップS4)。このステップS4において送信されたrecord_endは、例えばコントローラ13内に設けられているレジスタに格納される。これにより、アクセス記録部131は、アドレスシーケンスの記録を終了する。
【0047】
本実施形態において、上記したステップS2及びS3の処理は、記録開始タイミング(record_startがレジスタに格納されたタイミング)から記録終了タイミング(record_endがレジスタに格納されたタイミング)までの間に繰り返し実行される。これにより、アクセス記録部131は、上記したアドレスシーケンス(複数の論理アドレスのシーケンス)を記録することができる。
【0048】
アクセス記録部131によって記録されたアドレスシーケンスは、当該アクセス記録部131からアクセス履歴解析部40に送信される(ステップS5)。ここでは、上記した記録開始タイミングから記録終了タイミングまでの間に記録された複数の論理アドレスをまとめてアクセス記録部131からアクセス履歴解析部40に送信する場合を想定しているが、当該論理アドレスは、CPU20から送信される都度、個別にアクセス記録部131からアクセス履歴解析部40に送信されてもよい。
【0049】
なお、ここではrecord_startがレジスタに格納されたタイミングでアドレスシーケンスの記録が開始され、record_endがレジスタに格納されたタイミングでアドレスシーケンスの記録が終了される(つまり、記録の開始及び終了に関する明示的な指示が存在する)ものとして説明したが、例えばCPU20からメモリデバイス10に特定の論理アドレスが送信された(当該CPU20によって特定の論理アドレスがアクセスされた)タイミングでアドレスシーケンスの記録が開始され、CPU20からメモリデバイス10に他の特定の論理アドレスが送信された(当該CPU20によって特定の論理アドレスがアクセスされた)タイミングでアドレスシーケンスの記録が終了されてもよい。この場合、特定の論理アドレスは、別途、事前にメモリデバイス10に設定されているものとする。また、アドレスシーケンスの記録が終了されるタイミングは、予め定められた数の論理アドレスが記録(取得)されたタイミングであっても構わない。
【0050】
また、
図2においてはアクセス記録部131によって実行される処理について主に説明したが、アクセス記録処理においてCPU20からメモリデバイス10に送信された論理アドレスに基づいて読み出されるデータ(読み出し対象データ)は、例えばNAND型フラッシュメモリ11からCPU20に返される。
【0051】
ところで、上記したアクセス記録処理が実行されることによってアクセス記録部131からアクセス履歴解析部40にアドレスシーケンス(つまり、アクセス履歴)が送信された場合、アクセス履歴解析部40は、当該アドレスシーケンスを解析する。
【0052】
以下、
図3を参照して、アクセス履歴解析部40の動作(処理)の概要について簡単に説明する。
【0053】
まず、本実施形態においてメモリシステム30が備えるCPU20は、例えばマルチコアプロセッサであり、複数のプログラム(アプリケーションプログラム)を並列に実行するように構成されているものとする。
【0054】
この場合、上記したようにアクセス記録部131がrecord_start及びrecord_endに基づいてアドレスシーケンスを記録したとしても、当該記録されたアドレスシーケンスには、例えばプログラムAを実行するためにCPU20によってアクセスされた(つまり、CPU20から送信された)論理アドレス及び当該プログラムAとは異なるプログラムBを実行するためにCPU20によってアクセスされた論理アドレスが混在している場合がある。
【0055】
このため、アクセス履歴解析部40は、アクセス記録部131から送信されたアドレスシーケンスから、所定のプログラム(例えば、プログラムA)を実行する際にCPU20によってアクセスされた論理アドレスのシーケンス(以下、アクセスパターンと表記)を抽出する。
【0056】
ここで、
図3に示すように、アクセス記録部131からアクセス履歴解析部40に送信されたアドレスシーケンス100が「A0,B0,A1,A2,B1,A3,B2,・・・」である場合を想定する。なお、
図3に示すアドレスシーケンス100を構成する「A0」、「A1」及び「A2」等はプログラムAを実行するためにCPU20によってアクセスされた論理アドレスを示しており、当該アドレスシーケンス100を構成する「B0」、「B1」及び「B2」等はプログラムBを実行するためにCPU20によってアクセスされた論理アドレスを示している。すなわち、アドレスシーケンス100は、CPU20においてプログラムA及びBが並列に実行された場合のアドレスシーケンスである。
【0057】
この場合、アクセス履歴解析部40は、例えばプログラムAの実行時に使用する可能性がある仮想メモリアドレス及び物理メモリアドレス(論理アドレス)の範囲(以下、アドレス範囲と表記)を予め保持しているものとする。
【0058】
アクセス履歴解析部40は、アクセス記録部131から送信されたアドレスシーケンス100(を構成する複数の論理アドレス)と、プログラムAの実行時に使用する可能性があるアドレス範囲(に含まれる論理アドレス)とを照合することにより、当該アドレスシーケンスから当該プログラムAのみに関連するアクセスパターン(つまり、プログラムAを実行する際にCPU20によってアクセスされた論理アドレスのシーケンス)を抽出することができる。これによれば、上記したアドレスシーケンス100からアクセスパターン200(A0,A1,A2,A3,A4,…)が抽出される。
【0059】
なお、ここではアクセスパターン200がプログラムAの実行時に使用する可能性があるアドレス範囲に基づいて抽出されるものとして説明したが、例えばプログラムAの実行時に使用する可能性があるアドレス範囲が簡単な条件比較等で分離することができる場合には、当該アクセスパターン200は、当該範囲に基づいてより簡易な処理によって抽出されても構わない。具体的には、例えばプログラムAの実行時に使用する可能性がある論理アドレスの範囲と、プログラムBの実行時に使用する可能性がある論理アドレスの範囲とが所定の論理アドレスに対する大小比較で簡単に判定することができる(つまり、アドレス空間が明確に分離されている)場合には、当該比較結果に基づいてアクセスパターンを抽出してもよい。
【0060】
更に、ここではアクセス記録部131からアクセス履歴解析部40に送信されたアドレスシーケンスからアクセスパターンが抽出されるものとして説明したが、例えば上記したアドレス空間が明確に分離されていることにより、特定のプログラムの実行時に使用する可能性がある論理アドレスを容易に判定することが可能である場合には、例えばアクセス記録部131内で入力される論理アドレスに対して比較判定処理を行うことによってアクセス記録部131が当該特定のプログラムの実行時に使用する可能性がある論理アドレス(のシーケンス)のみを記録し、アクセス記録部131における記録容量及びアクセス履歴解析部40の処理量を低減するようにしてもよい。
【0061】
アクセス履歴解析部40は、上記したアクセスパターン200に基づいてアドレスリスト(プログラムAのアドレスリスト)を作成する。なお、アドレスリストは、アクセスパターン200のみに基づいて作成されてもよいし、例えばアクセス履歴解析部40において管理されている過去のアクセスパターンを更に考慮して(つまり、複数回記録されたアドレスシーケンスから抽出された複数のアクセスパターンに基づいて)作成されてもよい。
【0062】
以下、
図4及び
図5を参照して、アクセス履歴解析部40によって作成されるアドレスリストについて説明する。
【0063】
図4は、アクセスパターン200(プログラムAを実行する際にCPU20によってアクセスされた論理アドレスのシーケンス)の一例を示す。
図4に示す例では、プログラムAを実行する際にCPU20において論理アドレスA0~A15が順にアクセスされたことが示されている。
【0064】
ここで、上記したようにアクセス履歴解析部40によって作成されるアドレスリストには、トリガアドレス及び再生対象論理アドレスが対応づけて含まれる。
【0065】
図4に示すアクセスパターン200の場合、アクセス履歴解析部40は、例えば当該アクセスパターン200を構成する複数の論理アドレスのシーケンス(配列)において先頭に配置されている論理アドレスA0を第1トリガアドレスとして決定する。また、アクセス履歴解析部40は、例えばアクセスパターン200を構成する複数の論理アドレスのうちの論理アドレスA8~A11をトリガアドレスA0に対応する第1再生対象論理アドレスとして決定する。
【0066】
ここではアクセスパターン200において先頭に配置されている論理アドレスA0を第1トリガアドレスとして決定し、当該アクセスパターン200においてトリガアドレスA0との間に予め定められた数(ここでは、7つ)の論理アドレスが配置されるような論理アドレスA8~A11を第1再生対象論理アドレスとして決定するものとして説明したが、当該第1トリガアドレス及び第1再生対象論理アドレスは、アクセス履歴解析部40において予め定められているルール等に従って決定されればよい。
【0067】
ただし、後述するように第1再生対象論理アドレスに基づいて読み出されるデータ(再生対象データ)は、トリガアドレスがCPU20によってアクセスされた場合にキャッシュメモリ12に格納される。このため、プログラムAが実行される際にアクセスパターン200のように論理アドレスが順次アクセスされるものとすると、第1トリガアドレスと当該第1トリガアドレスに対応する第1再生対象論理アドレスとの間に配置される論理アドレスの数が少ない場合には、再生対象データがキャッシュメモリ12に格納される前に第1再生対象論理アドレスがCPU20によってアクセスされる可能性がある。一方、第1トリガアドレスと当該第1トリガアドレスに対応する第1再生対象論理アドレスとの間に配置される論理アドレスの数が多い場合には、CPU20において第1トリガアドレスがアクセスされた後に第1再生対象論理アドレスがアクセスされた際に、再生対象データが既にキャッシュメモリ12から消去されている可能性がある。すなわち、本実施形態においては、CPU20において第1トリガアドレスがアクセスされた後に第1再生対象論理アドレスがアクセスされるタイミングによっては、キャッシュメモリ12を有効に活用することができない場合がある。このため、本実施形態において、上記した第1トリガアドレス及び第1再生対象論理アドレスは、キャッシュメモリ12を適切に活用することができるように決定されるものとする。
【0068】
また、ここでは1つのトリガアドレスA0(及び当該トリガアドレスA0に対する再生対象論理アドレスA8~A11)についてのみ説明したが、アクセスパターン200から決定されるトリガアドレスは、複数であってもよい。具体的には、アクセス履歴解析部40は、アクセスパターン200を構成する複数の論理アドレスのうちの論理アドレスA4を第2トリガアドレスとして更に決定し、論理アドレスA12~A15を当該トリガアドレスA4に対応する第2再生対象論理アドレスとして更に決定してもよい。
【0069】
なお、
図5は、上記したアクセスパターン200から作成されたアドレスリストの一例を示す。
図5に示す例では、アドレスリストは、トリガアドレス「A0」及び再生対象論理アドレス「A8,A9,A10,A11」を対応づけて含む。また、アドレスリストは、トリガアドレス「A4」及び再生対象論理アドレス「A12,A13,A14,A15」を対応づけて含む。
【0070】
なお、本実施形態においてはアドレスリストに1つのトリガアドレスに対応する複数の再生対象論理アドレスが含まれる場合を想定しているが、当該1つのトリガアドレスに対応する再生対象論理アドレスの数は1つであってもよい。
【0071】
更に、特定の再生対象論理アドレスは、複数のトリガアドレスに対応していてもよい。具体的には、トリガアドレス「A0」に対して再生対象論理アドレス「A8,A9,A10,A11,A12,A13,A14,A15」が対応づけられており、トリガアドレス「A4」に対して再生対象論理アドレス「A12,A13,A14,A15,A16,A17,A18,A19」に対応づけられていてもよい。この場合、再生対象論理アドレス「A12,A13,A14,A15」はトリガアドレス「A0」及び「A4」の両方に対応する再生対象論理アドレスである。実際にプログラムAが実行される際には、トリガアドレス「A0」がアクセスされた場合に再生対象論理アドレス「A8,A9,A10,A11,A12,A13,A14,A15」を再生し、トリガアドレス「A4」がアクセスされた場合に再生対象論理アドレス「A12,A13,A14,A15,A16,A17,A18,A19」を再生することになるが、再生対象論理アドレス「A12,A13,A14,A15」は重複していてもよい。この場合、トリガアドレス「A0」がアクセスされることによって再生対象論理アドレス「A8,A9,A10,A11,A12,A13,A14,A15」は既に再生されているため、トリガアドレス「A4」がアクセスされた場合には再生対象論理アドレス「A16,A17,A18,A19」のみを再生し、重複する再生対象論理アドレス「A12,A13,A14,A15」については処理しないようにしてもよい。
【0072】
ここでは上記したアドレスシーケンス100からアクセスパターン200が抽出され、当該アクセスパターン200からアドレスリスト(プログラムAのアドレスリスト)が作成されるものとして説明したが、当該アドレスシーケンス100からプログラムBが実行された際にCPU20によってアクセスされた論理アドレスのシーケンスがアクセスパターンとして抽出され、当該アクセスパターンからアドレスリスト(プログラムBのアドレスリスト)が作成されても構わない。
【0073】
上記したようにアクセス履歴解析部40によって作成されたアドレスリストは、コントローラ13に含まれる配置部132に送信される。
【0074】
次に、
図6を参照して、データ配置処理について説明する。なお、
図6においては、コントローラ13に含まれるアクセス記録部131については省略されている。
【0075】
まず、配置部132は、上記したようにアクセス履歴解析部40から送信されたアドレスリストを取得する(ステップS11)。
【0076】
次に、配置部132は、ステップS11において取得されたアドレスリストに含まれている複数の再生対象論理アドレスを、当該アドレスリストから取得する。
【0077】
ここで、再生対象論理アドレスは上記したように当該再生対象論理アドレスに対応づけてアドレスリストに含まれているトリガアドレスがCPU20によってアクセスされた後にアクセスされると推定される論理アドレス(つまり、トリガアドレスと近い時刻にアクセスされる論理アドレス)に相当し、当該再生対象論理アドレスに基づいて読み出される再生対象データは、後述するようにトリガアドレスがCPU20によってアクセスされた場合におけるプリフェッチの対象となるデータである。
【0078】
しかしながら、複数の再生対象論理アドレスの各々に基づいて読み出される再生対象データは例えばNAND型フラッシュメモリ11に含まれる複数のページ(物理ページ)に分散して格納されている(書き込まれている)場合が多く、このような再生対象データをプリフェッチの際に複数のページの各々から読み出すことはメモリデバイス10の性能劣化の要因となる。
【0079】
そこで、配置部132は、例えばNAND型フラッシュメモリ11を制御するコントローラを介して、アドレスリストから取得された複数の再生対象論理アドレスの各々に基づいてNAND型フラッシュメモリ11から再生対象データを取得する(ステップS12)。
【0080】
なお、ステップS12において、NAND型フラッシュメモリ11を制御するコントローラは、上記したアドレス変換テーブルを参照して複数の再生対象論理アドレスの各々を物理アドレスに変換することにより、当該物理アドレスに基づいて再生対象データをNAND型フラッシュメモリ11から読み出すことができる。
【0081】
ステップS12の処理が実行されると、配置部132は、NAND型フラッシュメモリ11を制御するコントローラを介して、当該ステップS12において取得された再生対象データをNAND型フラッシュメモリ11に含まれる同一のページ(再生対象ページ)内に配置する(ステップS13)。ステップS13の処理は、例えば複数のページに分散して配置されている再生対象データを1つのページにパッキングする処理に相当する。
【0082】
なお、ステップS13の処理が実行された場合、上記した再生対象論理アドレスと再生対象データが配置(格納)されたNAND型アドレス内の物理的な位置を示すアドレス(物理アドレス)との対応関係を格納(管理)するようにアドレス変換テーブルが更新される。このアドレス変換テーブルを更新する処理は例えばアドレス変換テーブルを管理する管理部によって実行されるが、配置部132が当該アドレス変換テーブルにアクセスすることができるように構成されている場合には、当該配置部132がアドレス変換テーブルを更新してもよい。
【0083】
次に、配置部132は、アドレスリストに含まれるトリガアドレスと再生対象データが配置された再生対象ページを識別するためのページ番号を含む再生対象物理アドレスとを対応づけて含むアクセス再生用データを生成する。なお、本実施形態においては、便宜的に、再生対象物理アドレスが少なくともページ番号を含むものとして説明するが、当該再生対象物理アドレスは、当該ページ番号以外に、ブロック番号及び当該ページ番号によって識別されるページ内の位置を示す情報(ページ内オフセット)等を含んでいてもよい。
【0084】
このように配置部132によって生成されたアクセス再生用データは、アクセス再生部133に出力される(ステップS14)。
【0085】
なお、上記したステップS12~S14の処理は、例えばステップS11において取得されたアドレスリストに含まれるトリガアドレス(及び再生対象論理アドレスの組)毎に実行される。すなわち、例えばステップS11において
図5に示すアドレスリストが取得された場合には、ステップS14においては、
図7に示すアクセス再生用データが配置部132からアクセス再生部133に出力される。
【0086】
図7においては、アクセス再生用データ132a及び132bを含む複数のアクセス再生用データが示されている。具体的には、アクセス再生用データ132aは、トリガアドレス「A0」及び再生対象物理アドレス「P2」を対応づけて含む。このアクセス再生用データ132aによれば、トリガアドレスA0に対応づけてアドレスリストに含まれている再生対象論理アドレスA8~A11に基づいてNAND型フラッシュメモリ11から読み出された再生対象データが、再生対象物理アドレスP2に含まれるページ番号によって識別される再生対象ページ内に配置されたことが示されている。
【0087】
更に、アクセス再生用データ132bは、トリガアドレス「A4」及び再生対象物理アドレス「P3」を対応づけて含む。このアクセス再生用データ132bによれば、トリガアドレスA4に対応づけてアドレスリストに含まれている再生対象論理アドレスA12~A15に基づいてNAND型フラッシュメモリ11から読み出された再生対象データが、再生対象物理アドレスP3に含まれるページ番号によって識別される再生対象ページ内に配置されたことが示されている。
【0088】
なお、ここではアクセス再生用データが1つのページ番号のみを含む場合を想定して説明したが、再生対象データが複数のページに跨って配置されている場合には、再生対象物理アドレスに含まれるページ番号の数は複数であっても構わない。この場合、再生対象物理アドレスは、複数のページ番号が並べられたものであってもよいし、最初のページ番号とページ数との組であってもよい。
【0089】
また、再生対象データが再生対象ページの先頭に配置されている場合には再生対象物理アドレスに含まれるページ番号のみで当該再生対象データを読み出すことができるが、当該再生対象データが再生対象ページの先頭以外の位置に配置されている場合には、当該再生対象物理アドレスに含まれるページ番号及びページ内オフセットに基づいて当該再生対象データを読み出すことができる。また、再生対象データは、当該再生対象データの長さを示す長さ情報を用いて読み出されてもよい。これによれば、特定のべージ番号のページ内オフセットの位置から長さ情報分の再生対象データを読み出すようなことが可能となる。なお、長さ情報はNAND型フラッシュメモリ11側に格納されていてもよい。これによれば、トリガアドレスがアクセスされた場合には特定のページ番号のページ内オフセットの位置からデータを読み出し、当該読み出されたデータのうちの長さ情報分の再生対象データを読み出して処理するような構成とすることができる。
【0090】
次に、
図8を参照して、アクセス再生処理について説明する。なお、
図8においては、コントローラ13に含まれるアクセス記録部131及び配置部132と、アクセス履歴解析部40とについては省略されている。
【0091】
まず、CPU20がメモリデバイス10(NAND型フラッシュメモリ11)からデータを読み出す場合には、当該CPU20によってアクセスされた論理アドレスが当該CPU20からメモリデバイス10に送信される(ステップS21)。
【0092】
この場合、アクセス再生部133は、再生対象データをプリフェッチする(つまり、キャッシュメモリ12に格納する)ために上記したアクセス再生用データを参照して、CPU20からメモリデバイス10に送信される論理アドレスを監視する(ステップS22)。具体的には、ステップS22においては、ステップS21においてCPU20から送信された論理アドレスに基づいて、アクセス再生用データに含まれるトリガアドレスがCPU20によってアクセスされたか否かを判定する処理が実行される。
【0093】
アクセス再生用データに含まれるトリガアドレスがCPU20によってアクセスされたと判定された場合、アクセス再生部133は、当該トリガアドレスに対応づけてアクセス再生用データに含まれている再生対象物理アドレスを取得する。なお、ここでは単にトリガアドレスがアクセスされたと判定された場合に再生対象物理アドレスを取得するものとして説明したが、他の処理を実行してもよい。具体的には、トリガアドレスがアクセスされたと判定されたとしても、当該トリガアドレスに対応づけられている再生対象物理アドレスに基づくプリフェッチが既に行われている場合には、当該再生対象物理アドレスは取得しないようにしてもよい。
【0094】
アクセス再生部133は、取得された再生対象物理アドレスに基づいて、NAND型フラッシュメモリ11及びキャッシュメモリ12にプリフェッチを指示する(ステップS23)。
【0095】
ステップS23の処理が実行されると、NAND型フラッシュメモリ11を制御するコントローラは、アクセス再生部133から指示された再生対象物理アドレスに基づいて再生対象データをNAND型フラッシュメモリ11から読み出し、当該再生対象データを一旦バッファ(図示せず)に格納する。このようにバッファに格納された再生対象データは、キャッシュメモリ12を制御するコントローラによって読み出され、キャッシュメモリ12に格納される。
【0096】
上記したアクセス再生処理によれば、CPU20によってトリガアドレスがアクセスされることに応じて、当該トリガアドレスの後にアクセスされると推定される再生対象論理アドレスに基づいてアクセスされる(読み出される)データをキャッシュメモリ12上に再生(再現)することができる。
【0097】
ここではCPU20によってトリガアドレスがアクセスされた際にプリフェッチが指示されるものとして説明したが、例えばサイドバンド信号等を利用して当該プリフェッチのタイミングをCPU20からメモリデバイス10に通知するような構成とすることも可能である。
【0098】
また、上記したサイドバンド信号を利用して特定のプログラム(例えば、プログラムA)の開始がメモリデバイス10に通知されてもよい。これによれば、例えばCPU20において多数のプログラムが並列に実行される場合であっても、サイドバンド信号によって開始が通知された特定のプログラムの実行時に使用する可能性があるトリガアドレスのみを監視すればよく、アクセス再生部133の処理量を軽減することができる可能性がある。
【0099】
なお、アクセス再生処理においてCPU20からメモリデバイス10に送信された論理アドレス(トリガアドレス)に基づいて読み出されるデータは、例えばNAND型フラッシュメモリ11からCPU20に返される。
【0100】
次に、上記した
図7に示すアクセス再生用データを用いて、アクセス再生処理について具体的に説明する。
【0101】
まず、アクセス再生部133は、上記したようにCPU20からメモリデバイス10に送信される論理アドレスを監視する。
【0102】
ここでCPU20からメモリデバイス10に論理アドレスA0が送信されたものとする。この場合、
図7に示すアクセス再生用データ132aにはトリガアドレスA0が含まれているため、アクセス再生部133は、CPU20によってトリガアドレスがアクセスされたと判定する。
【0103】
次に、アクセス再生部133は、トリガアドレス(論理アドレスA0)に対応づけてアクセス再生用データ132aに含まれている再生対象物理アドレスP2を取得する。
【0104】
アクセス再生部133は、取得された再生対象物理アドレスP2に基づいてプリフェッチを指示する。この場合、例えば再生対象物理アドレスP2に含まれるページ番号によって識別される再生対象ページの先頭から4つの論理アドレスに基づいて読み出されるデータに相当する再生対象データ(ここでは、再生対象論理アドレスA8~A11に基づいて読み出される64バイト×4のデータ)が読み出される。
【0105】
なお、ここでは再生対象データが再生対象物理アドレスP2に含まれるページ番号によって識別される再生対象ページの先頭に配置されている場合を想定しているが、当該再生対象データが当該再生対象ページの先頭に配置されていない場合には、再生対象物理アドレスに含まれるページ番号及びページ内オフセットに基づいて再生対象データを読み出すことができる。
【0106】
上記したようにNAND型フラッシュメモリ11から読み出された再生対象データは、バッファに格納された後、キャッシュメモリ12に格納される。なお、キャッシュメモリ12に格納された再生対象データが再生対象論理アドレスA8~A11に基づいて読み出されるデータであること(つまり、再生対象データと再生対象論理アドレスとの対応関係を示すリスト)はメモリデバイス10内(例えば、NAND型フラッシュメモリ11等)において管理されているものとする。
【0107】
例えば
図4に示すアクセスパターン200によれば、論理アドレスA0の後には論理アドレスA1~A15が順次CPU20によってアクセスされる可能性が高いと考えられるところ、上記したアクセス再生処理が実行された(つまり、CPU20によってトリガアドレスA0がアクセスされた)後に当該CPU20によって論理アドレスA8~A11がアクセスされた場合には、当該論理アドレスA8~A11に基づいて読み出されるデータは、キャッシュメモリ12からCPU20に返される。
【0108】
なお、以下同様の動作になるため詳しい説明は省略するが、CPU20からメモリデバイス10に論理アドレスA4が送信された場合には、再生対象物理アドレスP3に含まれるページ番号によって識別される再生対象ページの先頭から4つの論理アドレスに基づいて読み出されるデータに相当する再生対象データ(ここでは、再生対象論理アドレスA12~A15に基づいて読み出される64バイト×4のデータ)が読み出され、当該再生対象データがキャッシュメモリ12に格納される。これによれば、CPU20によってトリガアドレスA4がアクセスされた後に当該CPU20によって論理アドレスA12~A15がアクセスされた場合には、当該論理アドレスA12~A15に基づいて読み出されるデータは、キャッシュメモリ12からCPU20に返される。
【0109】
上記したように本実施形態において、メモリデバイス10に備えられるコントローラ13は、NAND型フラッシュメモリ11(不揮発性メモリ)に格納されているデータを読み出すために順次アクセスされる複数の論理アドレス(第1アドレス)を記録し、当該記録された複数の論理アドレスのうちのトリガアドレス(第2アドレス)と、当該トリガアドレスがアクセスされた後にアクセスされると推定される当該複数の論理アドレスのうちの再生対象論理アドレス(第3アドレス)とを含むアドレスリストを取得し、当該アドレスリストに含まれるトリガアドレスがアクセスされた場合に当該アドレスリストに含まれる再生対象論理アドレスに基づいて再生対象データをNAND型フラッシュメモリ11から読み出し、当該読み出された再生対象データをキャッシュメモリ12に格納する。
【0110】
すなわち、本実施形態においては、例えばサーバレスコンピューティングにおけるサーバとしてメモリシステム30が使用される場合には予め登録されたプログラムが繰り返し実行される(つまり、メモリデバイス10への同一のアクセスが繰り返し行われる)ことを利用し、CPU20のメモリデバイス10へのアクセスパターン(CPU20によってアクセスされる論理アドレスのシーケンス)に基づいてデータをプリフェッチする。
【0111】
本実施形態においては、このような構成により、トリガアドレスの後に再生対象論理アドレスがアクセスされた際には当該再生対象論理アドレスに基づいて読み出されるデータが既にキャッシュメモリ12に格納されている(つまり、NAND型フラッシュメモリ11よりも高速なキャッシュメモリ12から当該データを読み出すことができる)状態を実現することができるため、メモリデバイス10(NAND型フラッシュメモリ11)からデータを読み出すことによるレイテンシを隠蔽することができ、当該メモリデバイス10の読み出し性能を向上させることができる。
【0112】
また、本実施形態において、NAND型フラッシュメモリ11はデータ読み出し動作の単位であるページを複数含み、アドレスリストは複数の再生対象論理アドレスを含み、コントローラ13は、アドレスリストに含まれるトリガアドレスがアクセスされる前に、複数の再生対象論理アドレスの各々に基づいて読み出されるデータ(再生対象データ)を同一のページ内に配置する。
【0113】
ここで、例えば
図5に示すアドレスリストがアクセス履歴解析部40から取得された場合には、論理アドレス(トリガアドレス)A0がアクセスされると、論理アドレス(再生対象論理アドレス)A8~A11に基づいて読み出される再生対象データがNAND型フラッシュメモリ11から読み出され、キャッシュメモリ12に格納される。
【0114】
この場合において、論理アドレスA8~A11に基づいて読み出される再生対象データがそれぞれ異なるページに格納されている(書き込まれている)場合には、当該異なるページの各々から再生対象データを読み出す必要があり、非効率である。
【0115】
これに対して、本実施形態においては、上記したように複数の再生対象論理アドレスに基づいて読み出される再生対象データを1つのページ内に配置する(パッキングする)ことにより、プリフェッチ時におけるNAND型フラッシュメモリ11に対する非効率なアクセス(データ読み出し動作)を回避し、当該プリフェッチに関する必要IOPS(Input/Output Per Second)を低減することが可能となる。
【0116】
なお、本実施形態においてはNAND型フラッシュメモリ11に含まれるコントローラが論理アドレスを物理アドレスに変換する場合を想定しているが、このようなアドレス変換は、例えばキャッシュメモリ12を制御するコントローラによって行われても構わない。
【0117】
更に、本実施形態においては、論理アドレスでプリフェッチするように動作する場合を想定しているが、上記したようにキャッシュメモリ12を制御するコントローラでアドレス変換を行う構成の場合には、キャッシュデータの管理を論理アドレスベースではなく物理アドレスベースで行っても良い。その場合、NAND型フラッシュメモリ11からのプリフェッチにおいて、論理アドレスは用いず、物理アドレスのみを用いてプリフェッチ可能である。このような構成の場合には、再生(プリフェッチ)対象データと論理アドレスとの対応関係を示すリストを管理しておく必要がない点で利点がある。
【0118】
本実施形態においては複数の再生対象データを1つのページ内に配置するものとして説明したが、当該再生対象論理アドレスがアクセスされる前に再生対象データをプリフェッチすることができればメモリデバイス10の読み出し性能は向上するため、当該複数の再生対象データを1つのページ内に配置する処理を省略する構成を採用することも可能である。また、複数の再生対象データを1つのページ内に配置する処理を省略する構成であっても、当該複数の再生対象データ(のうちの2つ以上の再生対象データ)が同一のページ内に配置されている場合には、当該ページから当該再生対象データを読み出す(つまり、1回のページ読み出し動作で複数の再生対象データを読み出す)ことにより読み出し性能を更に向上させることができる。
【0119】
なお、上記したように複数の再生対象論理アドレスの各々に基づいて読み出される再生対象データが同一のページ内に配置された場合には、トリガアドレスと当該ページを識別するためのページ番号を含む再生対象物理アドレス(第4アドレス)とを含むアクセス再生用データが生成され、当該アクセス再生用データに含まれるトリガアドレスがアクセスされた場合に、当該アクセス再生用データに含まれる再生対象物理アドレスに基づいてNAND型フラッシュメモリ11から再生対象データが読み出される。このような構成によれば、同一のページ(再生対象ページ)内に配置された複数の再生対象データを適切にNAND型フラッシュメモリ11から読み出し、キャッシュメモリ12に格納する(つまり、プリフェッチする)ことができる。
【0120】
ところで、上記した
図5に示すアドレスリスト及び
図7に示すアクセス再生用データによれば、論理アドレスA8以降の論理アドレスに基づいて読み出されるデータは、プリフェッチによりキャッシュメモリ12から高速に読み出されることが可能である。しかしながら、論理アドレスA0~A7に基づいて読み出されるデータは、キャッシュメモリ12に格納されておらず、高速に読み出すことができない。このため、例えば上記したデータ配置処理等において、論理アドレスA0~A7に基づいて読み出されるデータを例えばキャッシュメモリ12に予め格納しておく処理が更に実行されても構わない。これによれば、論理アドレスA0~A7がCPU20によってアクセスされた場合においても当該論理アドレスに基づいて読み出されるデータをキャッシュメモリ12からCPU20に高速に返すことが可能となる。ここでは論理アドレスA0~A7に基づいて読み出されるデータがキャッシュメモリ12に格納されるものとして説明したが、当該データは、少なくともNAND型フラッシュメモリ11よりもデータを高速に読み出すことが可能な記憶領域(例えば、メモリシステム30においてメインメモリとして使用されるDRAMまたはメモリデバイス10内の他のメモリ等)に格納されればよい。すなわち、本実施形態においては、プリフェッチすることができないアクセスパターンにおける開始部分(に相当する論理アドレスに基づいて読み出されるデータ)は、高速な記録領域にpinしておく構成としてもよい。
【0121】
更に、本実施形態においては特定のプログラム(例えば、プログラムA)の1回目の実行時にアドレスシーケンスを記録し、当該特定のプログラムの2回目以降の実行時にプリフェッチする構成であるが、当該特定のプログラムの1回目の実行時には全てのデータをNAND型フラッシュメモリ11から読み出す必要があり、レイテンシが長くなる。このため、アクセス再生用データデータが生成されていない特定のプログラムの実行時にアクセスされる論理アドレス(のシーケンス)に基づいて読み出されるデータについては、NAND型フラッシュメモリ11ではなく、メインメモリとして使用されるDRAM等を使うように割り当てておいてもよい。このような構成によれば、特定のプログラムの1回目の実行時においてもデータを高速に読み出すことが可能となる。ただし、上記したようにDRAMを使う場合であっても、CPU20は、メモリデバイス10を経由して当該DRAMにアクセスするものとする。換言すれば、DRAMからデータが読み出される場合であっても、CPU20の動作は、メモリデバイス10にアクセスする場合と変わらない。すなわち、NAND型フラッシュメモリ11であってもDRAMであっても同一の論理でアドレスを用いてアクセスされる。その論理アドレスに対応する、メモリデバイス10内部で変換される物理アドレスがNAND型フラッシュメモリ11を指しているかDRAM(メインメモリ)を指しているかが異なる。
【0122】
なお、特定のプログラムの2回目の実行時にはプリフェッチする構成であるため、当該特定のプログラムの1回目の実行が終了した場合には、上記したキャッシュメモリ12またはメモリシステム30においてメインメモリとして使用されるDRAM等に格納されたデータは削除してよい。ただし、NAND型フラッシュメモリ11に格納されているデータがDRAMにコピーされているのではなく、当該データがDRAM内にのみ存在する場合には、当該データをDRAMからNAND型フラッシュメモリ11に移動する処理が必要となる。
【0123】
また、本実施形態においては同一のプログラムが繰り返し実行されるところ、上記したように生成されたアクセス再生用データは当該プログラムが実行される度に繰り返し用いることができるが、当該アクセス再生用データは、プログラムが実行される度に記録されたアドレスシーケンスに基づいて定期的に修正(更新)されても構わない。
【0124】
なお、アクセス再生用データの修正は、例えばプリフェッチされたデータのキャッシュヒット率が低い場合に(つまり、キャッシュヒット率が低いことをトリガにして)行われてもよいし、当該アクセス再生用データに含まれるトリガアドレスがCPU20によってアクセスされない場合に(つまり、トリガアドレスの追跡の失敗をトリガにして)行われてもよい。
【0125】
更に、アクセス再生用データの修正は、プリフェッチのタイミングに基づいて行われてもよい。具体的には、例えば再生対象データのキャッシュメモリ12への格納(refill)及び当該キャッシュメモリ12からの消去(evict)のタイミングを記録(ダンプ)しておき、キャッシュメモリ12に格納された再生対象データにアクセスされる前に当該再生対象データがキャッシュメモリ12から消去された(つまり、プリフェッチのタイミングが早すぎる)ような場合には、当該プリフェッチのタイミングが遅くなるようにアクセス再生用データを修正する。一方、再生対象データにアクセスされた後に当該再生対象データがキャッシュメモリ12に格納された(つまり、プリフェッチのタイミングが遅すぎる)ような場合には、当該プリフェッチのタイミングが早くなるようにアクセス再生用データを修正する。すなわち、本実施形態においては、適切にプリフェッチされている(つまり、キャッシュメモリ12に格納された再生対象データが適切に利用されている)か否かの計測結果に基づいてアクセス再生用データを修正するようにしてもよい。なお、プリフェッチのタイミングは、例えばアクセスパターンにおいてトリガアドレスと再生対象論理アドレスとの間に配置される論理アドレスの数によって調整される。
【0126】
(第2実施形態)
次に、第2実施形態について説明する。なお、本実施形態においては、前述した第1実施形態と同様の部分についての詳しい説明を省略し、当該第1実施形態とは異なる部分について説明する。また、本実施形態に係るメモリデバイスの構成については前述した第1実施形態と同様であるため、適宜、
図1を用いて説明する。
【0127】
前述した第1実施形態においては例えば
図4に示すアクセスパターンを構成する論理アドレスA0~A15が全て同様の優先度である場合を想定しているが、本実施形態は、当該論理アドレスA0~A15に異なる優先度が割り当てられている点で、当該第1実施形態とは異なる。
【0128】
ここで、
図9を参照して、本実施形態においてアクセスパターンを構成する論理アドレスに割り当てられる優先度の一例について説明する。
【0129】
ここでは、上記したアドレスシーケンスが3回記録され、当該3回記録されたアドレスシーケンス(以下、1回目~3回目のアドレスシーケンスと表記)の各々からアクセスパターン(例えばプログラムAが実行された際にCPU20によってアクセスされた論理アドレスのシーケンス)が抽出された場合を想定する。この場合、1回目のアドレスシーケンスから抽出されたアクセスパターンは論理アドレスA0,A1,A2,A3,A4,A5,A6というパターンであり、2回目のアドレスシーケンスから抽出されたアクセスパターンは論理アドレスA2,A5,A6,A3,A4というパターンであり、3回目のアドレスシーケンスから抽出されたアクセスパターンは論理アドレスA2,A3,A5,A4,A6,A7というパターンであるものとする。
【0130】
本実施形態においては、このような複数のアクセスパターンにおいて、例えば出現回数が多い(出現頻度が高い)論理アドレスには高い優先度を割り当て、当該出現回数が少ない(出現頻度が低い)論理アドレスには低い優先度を割り当てる。
【0131】
図9に示す例では、全てのアクセスパターンにおいて出現する論理アドレスA2,A3,A4,A5,A6には高い優先度が割り当てられ、他の論理アドレスA0,A1,A7には低い優先度が割り当てられる。
【0132】
なお、ここで説明した優先度は一例であり、本実施形態においては、確実にプリフェッチしたいデータを読み出すための論理アドレスには高い優先度を割り当て、余裕があればプリフェッチしたいデータを読み出すための論理アドレスには低い優先度を割り当てるようにすればよい。
【0133】
この場合、アクセス履歴解析部40は、トリガアドレス及びそれぞれ優先度が割り当てられた再生対象論理アドレスを含むアドレスリストを作成し、当該アドレスリストを配置部132に送信する。
【0134】
以下、本実施形態に係るメモリデバイス10の動作について説明する。なお、アクセス記録処理については前述した第1実施形態と同様であるため、ここではその詳しい説明を省略する。ここではデータ配置処理及びアクセス再生処理について説明する。
【0135】
まず、
図10を参照して、データ配置処理について説明する。なお、
図10においては、コントローラ13に含まれるアクセス記録部131については省略されている。
【0136】
配置部132は、アクセス履歴解析部40から送信されたアドレスリストを取得する(ステップS31)。なお、ステップS31において取得されるアドレスリストに含まれる再生対象論理アドレスの各々には上記した優先度が割り当てられているものとする。
【0137】
次に、配置部132は、ステップS31において取得されたアドレスリストに含まれている複数の再生対象論理アドレスを、当該アドレスリストから取得する。
【0138】
配置部132は、例えばNAND型フラッシュメモリ11を制御するコントローラを介して、アドレスリストから取得された複数の再生対象論理アドレスの各々に基づいて当該NAND型フラッシュメモリ11からデータ(再生対象データ)を取得する(ステップS32)。なお、ステップS32の処理は、前述した
図6に示すステップS12の処理に相当する処理である。
【0139】
ステップS32の処理が実行されると、配置部132は、NAND型フラッシュメモリ11を制御するコントローラを介して、当該ステップS32において取得された再生対象データをNAND型フラッシュメモリ11に含まれる同一のページ(再生対象ページ)内に配置する(ステップS33)。
【0140】
なお、ステップS33の処理は、前述した
図6に示すステップS13の処理と同様に、複数のページに分散している再生対象データを1つの再生対象ページにパッキングする処理である。ただし、ステップS33においては、例えばトリガアドレスに対応づけてアドレスリストに含まれている複数の再生対象論理アドレスのうち、優先度が高い再生対象論理アドレスに基づいて読み出される再生対象データを1つの再生対象ページにパッキングするとともに、優先度が低い再生対象論理アドレスに基づいて読み出される再生対象データを当該再生対象ページとは異なる再生対象ページにパッキングするものとする。なお、優先度が高い再生対象論理アドレスに基づいて読み出される再生対象データと優先度が低い再生対象論理アドレスに基づいて読み出される再生対象データとが同一ページに収まる量であれば、当該同一ページ内にパッキングされてもよい。
【0141】
次に、配置部132は、アドレスリストに含まれるトリガアドレスと再生対象データが配置された再生対象ページを識別するためのページ番号を含む再生対象物理アドレスとを対応づけて含むアクセス再生用データを生成する。このように配置部132によって生成されたアクセス再生用データは、アクセス再生部133に出力される(ステップS34)。
【0142】
ここで、上記したステップS33及びS34の処理について具体的に説明する。ここでは、ステップS31において前述した
図5に示すアドレスリストが取得され、トリガアドレス「A0」に対応づけて当該アドレスリストに含まれている再生対象論理アドレス「A8,A9,A10,A11」のうちの再生対象論理アドレスA8及びA9には高い優先度が割り当てられており、再生対象論理アドレスA10及びA11には低い優先度が割り当てられているものとする。
【0143】
これによれば、ステップS33において高い優先度が割り当てられている再生対象論理アドレスA8及びA9に基づいてNAND型フラッシュメモリ11から読み出された再生対象データが1つの再生対象ページに配置されたものとすると、ステップS34においては、トリガアドレスA0と当該再生対象ページを識別するためのページ番号を含む再生対象物理アドレスとを含むアクセス再生用データ(つまり、優先度が高い再生対象論理アドレスから生成されたアクセス再生用データ)がアクセス再生部133に出力される。
【0144】
また、ステップS33において低い優先度が割り当てられている再生対象論理アドレスA10及びA11に基づいてNAND型フラッシュメモリ11から読み出された再生対象データが1つの再生対象ページに配置されたものとすると、ステップS34においては、トリガアドレスA0と当該再生対象ページを識別するためのページ番号を含む再生対象物理アドレスとを含むアクセス再生用データ(つまり、優先度が低い再生対象論理アドレスから生成されたアクセス再生用データ)がアクセス再生部133に出力される。
【0145】
なお、ここではトリガアドレスA0(及び当該トリガアドレスA0に対応づけてアドレスリストに含まれている再生対象論理アドレスA8~A11)について説明したが、トリガアドレスA4を含む他のトリガアドレスについても同様の処理が実行される。
【0146】
以下の説明においては、便宜的に、上記したように優先度が高い再生対象論理アドレスから生成されたアクセス再生用データを第1アクセス再生用データ、優先度が低い再生対象論理アドレスから生成されえたアクセス再生用データを第2アクセス再生用データとする。
【0147】
次に、
図11のフローチャートを参照して、本実施形態におけるアクセス再生処理について説明する。なお、本実施形態におけるアクセス再生処理は前述した第1実施形態と概ね同様であるが、当該アクセス再生処理においては、前述した第1実施形態において説明したようにアクセス再生用データに含まれるトリガアドレスがCPU20によってアクセスされたと判定された場合、当該トリガアドレス含む第1アクセス再生用データが高い優先度に対応するキュー(以下、第1キューと表記)133aに格納され、当該トリガアドレスを含む第2アクセス再生用データが低い優先度に対応するキュー(以下、第2キューと表記)133bに格納される。なお、第1実施形態においては説明を省略したが、当該第1実施形態においてもアクセス再生部133はアクセス再生用データを格納するキューを利用していてもよい。
【0148】
この場合、アクセス再生部133は、第1アクセス再生用データが上記した第1キュー133aに格納されているか否かを判定する(ステップS41)。
【0149】
第1アクセス再生用データが第1キュー133aに格納されていると判定された場合(ステップS41のYES)、アクセス再生部133は、当該第1アクセス再生用データを当該第1キュー133aから取り出し、当該第1アクセス再生用データを用いてプリフェッチを指示する(ステップS42)。ステップS42の処理は前述した
図8に示すステップS23の処理に相当するため、ここではその詳しい説明を省略する。
【0150】
一方、第1アクセス再生用データが第1キュー133aに格納されていないと判定された場合(ステップS41のNO)、アクセス再生部133は、第2キュー133bを参照し、当該第2キュー133bの先頭に配置されている第2アクセス再生用データが古いか否かを判定する(ステップS43)。
【0151】
なお、上記した第2キュー133bに格納されている第2アクセス再生用データには当該第2アクセス再生用データが当該第2キュー133bに格納された日時が付与されており、上記したステップS43の処理は、第2キュー133bの先頭に配置されている第2アクセス再生用データに付与されている日時から現在の日時までに経過した時間に基づいて判定される。
【0152】
第2キュー133bの先頭に配置されている第2アクセス再生用データが古いと判定された場合(ステップS43のYES)、アクセス再生部133は、当該第2アクセス再生用データを破棄する(ステップS44)。
【0153】
一方、第2キュー133bの先頭に配置されている第2アクセス再生用データが古くないと判定された場合(ステップS43のNO)、アクセス再生部133は、NAND型フラッシュメモリ11に対する読み出し数(Outstanding request数)が閾値未満であるか否かを判定する(ステップS45)。なお、メモリデバイス10内でNAND型フラッシュメモリ11に対する現在の読み出し数はカウントされており、アクセス再生部133は、NAND型フラッシュメモリ11に対する読み出し数を把握することが可能なものとする。
【0154】
NAND型フラッシュメモリ11に対する読み出し数が閾値未満であると判定された場合(ステップS45のYES)、アクセス再生部133は、第2キュー133bの先頭に配置されている第2アクセス再生用データ(CPU20によってアクセスされたトリガアドレスを含むアクセス再生用データ)を取り出し、当該第2アクセス再生用データを用いてプリフェッチを指示する(ステップS46)。ステップS46の処理は前述した
図8に示すステップS23の処理に相当するため、ここではその詳しい説明を省略する。
【0155】
一方、NAND型フラッシュメモリ11に対する読み出し数が閾値未満でないと判定された場合(ステップS45のNO)、
図11に示す処理は終了される。
【0156】
なお、上記した
図11に示す処理は、第1キュー133a及び第2キュー133bにアクセス再生用データが格納されている場合に繰り返し実行される。
【0157】
なお、
図11に示す例ではNAND型フラッシュメモリ11に対する読み出し数が閾値未満である場合に第2アクセス再生用データを用いてプリフェッチを指示するものとして説明したが、当該第2アクセス再生用データを用いてプリフェッチを指示する条件は、当該NAND型フラッシュメモリ11に対する読み出し数が閾値未満であること以外であってもよい。また、本実施形態においては、第2アクセス再生用データよりも第1アクセス再生用データを優先的に参照してプリフェッチするような構成であればよい。
【0158】
また、ここでは第1及び第2アクセス再生用データが第1キュー133a及び第2キュー133bに格納されるものとして説明したが、当該第1及び第2アクセス再生用データは、他のデータ構造において管理される構成であってもよい。
【0159】
上記したように本実施形態においては、優先度が高い再生対象論理アドレス(第5アドレス)に基づいて読み出される再生対象データを1つの再生対象ページ内に配置し、トリガアドレスと当該再生対象ページを識別するためのページ番号を含む再生対象物理アドレスとを含む第1アクセス再生用データが生成され、優先度が低い再生対象論理アドレス(第6アドレス)に基づいて読み出される再生対象データを他の再生対象ページ内に配置し、トリガアドレスと当該再生対象ページを識別するためのページ番号を含む再生対象物理アドレスとを含む第2アクセス再生用データが生成される。また、本実施形態においては、再生対象データをキャッシュメモリ12に格納する(つまり、プリフェッチする)ために、第2アクセス再生用データよりも優先的に第1アクセス再生用データを参照する(つまり、第2アクセス再生用データを用いたプリフェッチよりも第1アクセス再生用データを用いたプリフェッチを優先する)。
【0160】
ここで、前述した第1実施形態が優先度の高い再生対象論理アドレス及び優先度の低い再生対象論理アドレスに基づいて読み出されるデータの全てを必ずプリフェッチする構成であるものとすると、出現回数の少ない(つまり、優先度の低い)再生対象論理アドレスに基づいて読み出されるデータまでもキャッシュメモリ12に格納することになり、当該プリフェッチに関する処理量及びキャッシュメモリ12に格納されるデータ量が増加する。
【0161】
一方、前述した第1実施形態が優先度の高い再生対象論理アドレスに基づいて読み出されるデータのみをプリフェッチする構成であるものとすると、出現回数の少ない(つまり、優先度の低い)再生対象論理アドレスがCPU20によってアクセスされた場合に、当該再生対象論理アドレスに基づいてNAND型フラッシュメモリ11からデータを読み出す必要があり、キャッシュメモリ12がレイテンシの隠蔽に寄与しない。
【0162】
これに対して、本実施形態においては、上記したように優先度の高い再生対象論理アドレスに基づいて読み出されるデータは優先的にプリフェッチされるとともに、優先度の低い再生対象論理アドレスに基づいて読み出されるデータについては例えばNAND型フラッシュメモリ11に対する読み出し数等のメモリデバイス10の状況に応じてプリフェッチされる構成であるため、当該優先度を考慮して効率的にメモリデバイス10の読み出し性能を向上させる(レイテンシを隠蔽する)ことができると考えられる。
【0163】
なお、本実施形態においては、複数回記録されたアドレスシーケンス(から抽出されたアクセスパターン)における出現回数(出現頻度)に基づいて再生対象論理アドレスの優先度を決定するものとして説明したが、当該優先度は他の観点に基づいて決定されてもよい。
【0164】
ところで、メモリシステム30において実行されるプログラムによっては、例えば条件分岐によりアクセスパターンが変化する場合がある。
【0165】
ここで、
図12は、上記した条件分岐によりアクセスパターンが変化する例を示している。具体的には、
図12に示す例では、プログラムの1回目の実行時に記録されたアドレスシーケンスから抽出されたアクセスパターン201及びプログラムの2回目の実行時に記録されたアドレスシーケンスから抽出されたアクセスパターン202が示されている。なお、このアクセスパターン201及び202は、例えば論理アドレスA0~A7に基づいてデータが読み出された後は、条件分岐により、論理アドレスA8~A15に基づいてデータが読み出される場合と、論理アドレスA8´~A15´に基づいてデータが読み出される場合とがあることを想定している。
【0166】
ここで、プログラムの1回目の実行時に記録されたアドレスシーケンスからアクセスパターン201が抽出され、プログラムの2回目の実行時に記録されたアドレスシーケンスからアクセスパターン202が抽出され、プログラムの3回目の実行時に記録されたアドレスシーケンスからアクセスパターン201が抽出されたものし、このようなアクセスパターンにおける出現回数に基づいて各論理アドレス(再生対象論理アドレス)の優先度が決定される場合を想定する。この場合、条件分岐時に再生対象論理アドレスA8~A15がアクセスされるパターンの方が多く、再生対象論理アドレスA8´~A15´がアクセスされるパターンの発生頻度は低いため、再生対象論理アドレスA8~A15には高い優先度が割り当てられ、再生対象論理アドレスA8´~A15´には低い優先度が割り当てられることになる。
【0167】
この場合、トリガアドレス「A0」及び「A4」がアクセスされた場合には、再生対象論理アドレスA8~A15を高い優先度でプリフェッチし、再生対象論理アドレスA8´~A15´を低い優先度でプリフェッチすることになる。
【0168】
ここで、例えばトリガアドレスA8´がアクセスされた場合には再生対象論理アドレスA16´~A19´をプリフェッチするが、プログラムが複数回実行された結果、当該再生対象論理アドレスA16´~A19´がアクセスされるパターンの発生頻度は全体として低いものの、トリアドレスA8´がアクセスされた後は確実に再生対象論理アドレスA16´~A19´がアクセスされるものとする。このような場合には、トリガアドレスA8´がアクセスされた場合には、再生対象論理アドレスA16´~A19´を高い優先度でプリフェッチするようにしてもよい。
【0169】
すなわち、本実施形態においては、上記した条件分岐を考慮して優先度を決定する構成としてもよい。
【0170】
(第3実施形態)
次に、第3実施形態について説明する。なお、本実施形態においては、前述した第1実施形態と同様の部分についての詳しい説明を省略し、当該第1実施形態とは異なる部分について説明する。
【0171】
図13は、本実施形態に係るメモリデバイス10の構成の一例を示すブロック図である。
図13においては、前述した
図1と同様の部分には同一参照符号を付して、その詳しい説明を省略する。ここでは、
図1と異なる部分について述べる。
【0172】
図13に示すように、本実施形態に係るメモリデバイス10は、コントローラ13がアクセス再生用データ保存部134を更に含む点で、前述した第1実施形態とは異なる。
【0173】
アクセス再生用データ保存部134は、配置部132によって生成されたアクセス再生用データを保存する。なお、アクセス再生用データ保存部134は、例えばNAND型フラッシュメモリ11及びキャッシュメモリ12以外のメモリデバイス10に備えられるメモリ等によって実現される。
【0174】
本実施形態において、アクセス再生部133は、再生対象データをキャッシュメモリ12に格納する(つまり、プリフェッチする)ために参照するアクセス再生用データをアクセス再生用データ保存部134から取得する。
【0175】
以下、本実施形態におけるメモリデバイス10の動作の概要について説明する。
図14は、配置部132において生成されたアクセス再生用データの一例を示す。
図14においては、配置部132によってアクセス再生用データ132a~132fを含む複数のアクセス再生用データが生成された場合を想定している。アクセス再生用データ132a~132fは、アクセス履歴解析部40から出力されたアドレスリストに含まれるトリガアドレスA0,A4,A8,A12,A16,A20毎に生成されたアクセス再生用データ(つまり、当該複数のトリガアドレスの各々に対応する複数のアクセス再生用データ)である。なお、
図14に示すアクセス再生用データ132a~132fは前述した
図7において説明したアクセス再生用データ132a及び132bと同様であるため、ここではその詳しい説明を省略する。
【0176】
ここで、再生対象データをプリフェッチするためには、アクセス再生用データを参照してCPU20からメモリデバイス10に送信される論理アドレスを監視する必要があるが、例えば上記した
図14に示すアクセス再生用データ132a~132fをアクセス再生部133が参照する場合、当該アクセス再生部133は、CPU20からメモリデバイス10に論理アドレスが送信される度に、当該論理アドレスが当該アクセス再生用データ132a~132fの各々に含まれるトリガアドレスであるか否かを判定する処理(以下、アドレス一致判定処理と表記)を実行する必要がある。
【0177】
ここではアクセス再生用データ132a~132fについて説明したが、実際にはより多くのアクセス再生用データを参照する必要があり、上記したアドレス一致判定処理を高速に実行するためのハードウェア(回路)規模が大きくなる。
【0178】
そこで、本実施形態においては、配置部132によって生成された複数のアクセス再生用データのうち、再生対象データをプリフェッチするために参照するアクセス再生用データの数を制限することにより、上記したハードウェア規模(ハードウェア資源)を削減するものとする。
【0179】
以下、本実施形態に係るメモリデバイス10の動作について説明する。なお、アクセス記録処理については前述した第1実施形態と同様であるため、ここではその詳しい説明を省略する。また、データ配置処理については配置部132によって生成されたアクセス再生用データの出力先がアクセス再生部133ではなくアクセス再生用データ保存部134である点以外は前述した第1実施形態と同様であるため、ここではその詳しい説明を省略する。
【0180】
本実施形態におけるアクセス再生処理は前述した第1実施形態と概ね同様であるが、上記したアクセス再生用データをアクセス再生用データ保存部134から取得する点が異なる。
【0181】
図15のフローチャートを参照して、アクセス再生処理の詳細について説明する。ここでは、上記した
図14に示すアクセス再生用データ132a~132fのような複数のアクセス再生用データがアクセス再生用データ保存部134に保存されているものとする。
【0182】
まず、アクセス再生部133は、予め定められた数のアクセス再生用データをアクセス再生用データ保存部134から取得する(ステップS51)。
【0183】
なお、上記したようにアクセス再生用データ保存部134に保存されている複数のアクセス再生用データはアドレスリストに含まれるトリガアドレス毎に生成されているが、ステップS51においては、前述したアドレスシーケンスから抽出されたアクセスパターンにおいてトリガアドレスが出現する(つまり、配列されている)順番が早い順に予め定められた数のアクセス再生用データが取得される。
【0184】
具体的には、アクセスパターンにおいてトリガアドレスがA0,A4,A8,A12,A16,A20の順に出現しており、アクセス再生用データ保存部134から取得されるアクセス再生用データの数が4であるものとすると、アクセス再生部133は、
図14に示す複数のアクセス再生用データ132a~132fのうちのアクセス再生用データ132a~132dを取得する。
【0185】
ステップS51の処理が実行されると、アクセス再生部133は、当該ステップS51において取得されたアクセス再生用データ132a~132dの各々に含まれるトリガアドレスA0,A4,A8,A12を監視対象となるトリガアドレスとして設定する。
【0186】
次に、アクセス再生部133は、CPU20からメモリデバイス10に送信された論理アドレスが上記した監視対象となるトリガアドレスであるか否かを判定する(ステップS52)。
【0187】
監視対象となるトリガアドレスでないと判定された場合(ステップS52のNO)、次の論理アドレスがCPU20から送信されるまで待機し、ステップS52の処理が繰り返される。
【0188】
一方、監視対象となるトリガアドレスであると判定された場合(ステップS52のYES)、アクセス再生部133は、当該トリガアドレスを含むアクセス再生用データを用いてプリフェッチを指示する(ステップS53)。なお、ステップS53の処理は前述した
図8に示すステップS23の処理に相当するため、ここではその詳しい説明を省略する。
【0189】
ステップS53の処理が実行されると、アクセス再生部133は、プリフェッチ位置(詳細については後述)を更新し、次のアクセス再生用データをアクセス再生用データ保存部134から取得する(ステップS54)。
【0190】
次に、アクセス再生部133は、ステップS54において取得されたアクセス再生用データに基づいて、監視対象となるトリガアドレスを再設定(更新)する(ステップS55)。
【0191】
具体的には、上記したようにステップS51においてアクセス再生用データ132a~132dが取得されており、ステップS53においてアクセス再生用データ132aを用いてプリフェッチが指示された場合、ステップS54においては、プリフェッチ位置がトリガアドレスA0に更新され、次の監視対象となるトリガアドレスを含むアクセス再生用データとしてアクセス再生用データ132eがアクセス再生用データ保存部134から取得される。この場合、ステップS55においては、アクセス再生用データ132b~132eの各々に含まれるトリガアドレスA4,A8,A12,A16が監視対象となるトリガアドレスとして再設定される。なお、ステップS53においてプリフェッチを指示するために用いられたアクセス再生用データ132aに含まれるトリガアドレスA0は監視対象となるトリガアドレスからは除外される。
【0192】
なお、
図15においては、便宜的に、ステップS55の処理が実行された場合にアクセス再生処理が終了されるものとして示されているが、当該ステップS55の処理が実行された後はステップS52以降の処理が繰り返される。
【0193】
具体的には、このように繰り返されるステップS53において例えばアクセス再生用データ132bを用いてプリフェッチが指示された(つまり、トリガアドレスA4がCPU20から送信された)場合、ステップS54においては、プリフェッチ位置がトリガアドレスA4に更新され、アクセス再生用データ132fがアクセス再生用データ保存部134から更に取得される。この場合、ステップS55においては、アクセス再生用データ132c~132fの各々に含まれるトリガアドレスA8,A12,A16,A20が監視対象となるトリガアドレスとして再設定される。なお、ステップS53においてプリフェッチを指示するために用いられたアクセス再生用データ132bに含まれるトリガアドレスA4は監視対象となるトリガアドレスからは除外される。
【0194】
すなわち、本実施形態においては、監視対象となるトリガアドレスの数が常に一定数以下(例えば、4つ)となるように参照するアクセス再生用データが入れ替えられる。
【0195】
上記したように本実施形態においては、アドレスリストに含まれる複数のトリガアドレスの各々に対応する複数のアクセス再生用データが生成され、当該複数のアクセス再生用データはアクセス再生用データ保存部134に保存される。本実施形態においては、再生対象データをキャッシュメモリ12に格納する(つまり、プリフェッチする)ために、このようにアクセス再生用データ保存部134に保存された複数のアクセス再生用データのうちの予め定められた数のアクセス再生用データが参照される(つまり、当該予め定められた数のアクセス再生用データに含まれるトリガアドレスが監視される)。
【0196】
本実施形態においては、このような構成により、配置部132によって生成された複数のアクセス再生用データの各々に含まれる全てのトリガアドレスを監視する(当該複数のアクセス再生用データの全てを参照する)必要がないため、本実施形態におけるプリフェッチを実現するためのハードウェア規模を削減することが可能となる。すなわち、本実施形態においては、読み出し性能の向上とハードウェア規模の削減を両立することができる。
【0197】
なお、詳しい説明については省略するが、本実施形態において説明した構成に対して、前述した第2実施形態において説明した優先度に関する構成を更に適用しても構わない。
【0198】
(第4実施形態)
次に、第4実施形態について説明する。なお、本実施形態においては、前述した第1及び第3実施形態と同様の部分についての詳しい説明を省略し、当該第1及び第3実施形態とは異なる部分について説明する。
【0199】
図16は、本実施形態に係るメモリデバイス10の構成の一例を示すブロック図である。
図16においては、前述した
図1及び
図13と同様の部分には同一参照符号を付して、その詳しい説明を省略する。ここでは、
図1及び
図13と異なる部分について述べる。
【0200】
図16に示すように、本実施形態に係るメモリデバイス10は、コントローラ13に含まれるアクセス再生部133が検出部133c及び監視部133dを含む点で、前述した第1及び第3実施形態とは異なる。
【0201】
検出部133cは、CPU20によってアクセスされたトリガアドレスに基づいて特定のプログラムの実行の開始を検出する。
【0202】
監視部133dは、再生対象データをキャッシュメモリ12に格納する(つまり、プリフェッチする)ために、検出部133cによって実行の開始が検出されたプログラムについて生成されたアクセス再生用データを参照する。
【0203】
以下、本実施形態に係るメモリデバイス10の動作について説明する。なお、アクセス記録処理については前述した第1実施形態と同様であるため、ここではその詳しい説明を省略する。
【0204】
まず、本実施形態におけるデータ配置処理について簡単に説明する。前述した第1及び第3実施形態においては1つのプログラム(例えば、プログラムA)が実行される際にCPU20によってアクセスされた論理アドレスのシーケンス(アクセスパターン)からアドレスリストが作成される場合について主に説明したが、本実施形態において、アクセス履歴解析部40は、メモリシステム30において実行される複数のプログラムの各々のアドレスリストを作成する(つまり、プログラム毎にアドレスリストを作成する)ものとする。すなわち、前述した
図5はプログラムAについて作成されたアドレスリストを示しているが、例えばプログラムA以外のプログラムB及びCのような他のプログラムにもついても同様にアドレスリストが作成される。このようにアクセス履歴解析部40によってプログラム毎に作成された複数のアドレスリストは、配置部132に送信される。
【0205】
配置部132は、アクセス履歴解析部40から送信された複数のアドレスリストに基づいてアクセス再生用データを生成する。なお、前述した第1及び第3実施形態においては1つのアドレスリストから当該アドレスリストに含まれる複数のトリガアドレスの各々に対応する複数のアクセス再生用データが生成されることについて説明したが、本実施形態においては、複数のアドレスリストの各々について(つまり、アドレスリスト毎に)、複数のアクセス再生用データが生成される。
【0206】
本実施形態においては、上記したように配置部132によってアドレスリスト毎に生成された複数のアクセス再生用データがアクセス再生用データ保存部134に保存される。
【0207】
次に、本実施形態におけるアクセス再生処理について説明する。ここで、メモリシステム30においては多数のプログラムが実行されるが、当該プログラムの数が1024であるものとすると、アクセス再生用データ保存部134には、当該1024のプログラムのアドレスリストの各々から生成された複数のアクセス再生用データが保存される。この場合において、前述した第3実施形態において説明したようにアクセス再生部133がメモリシステム30において実行される1つのプログラムについて4つのアクセス再生用データを参照する(つまり、当該4つのアクセス再生用データに含まれるトリガアドレスを監視する)ものとすると、当該アクセス再生部133は、CPU20からメモリデバイス10に論理アドレスが送信される(当該CPU20によって論理アドレスがアクセスされる)度に、1024×4回のアドレス一致判定処理(当該論理アドレスと当該トリガアドレスとが一致しているか否かを判定する処理)を実行する必要があり、ハードウェア規模が大きくなる。
【0208】
これに対して、本実施形態において、アクセス再生部133に含まれる検出部133cは、アクセス再生用データ保存部134に保存されている複数のアクセス再生用データの中からプログラム毎に1つのアクセス再生用データを参照する。なお、検出部133cによってプログラム毎に参照される1つのアクセス再生用データとは、当該プログラムのアドレスリストから生成された複数のアクセス再生用データのうち、当該プログラムのアクセスパターンにおいて1番最初に出現するトリガアドレスを含むアクセス再生用データである。検出部133cによってプログラム毎に参照されるアクセス再生用データの数は、1つでなくてもよく、少数であればよい。
【0209】
ここで、上記したようにプログラム毎に参照されたアクセス再生用データのうち、特定のプログラム(以下、対象プログラムと表記)のアドレスリストから生成されたアクセス再生用データに含まれるトリガアドレスとCPU20からメモリデバイス10に送信された論理アドレスとが一致した場合を想定する。この場合、検出部133cは、対象プログラムの実行の開始を検出する。
【0210】
次に、監視部133dは、検出部133cによって実行の開始が検出された対象プログラムのアドレスリストから生成された複数のアクセス再生用データ(当該アドレスリストに含まれる複数のトリガアドレスの各々に対応する複数のアクセス再生用データ)をアクセス再生用データ保存部134から取得する。なお、監視部133dは、前述した第3実施形態と同様に、対象プログラムのアドレスリストから生成された複数のアクセス再生用データのうちの予め定められた数(例えば、4つ)のアクセス再生用データを取得してもよい。
【0211】
以下、監視部133dは、前述した第3実施形態において説明したアクセス再生処理と同様の処理を実行すればよい。
【0212】
上記したように本実施形態においては、メモリシステム30において実行されるプログラム毎にアドレスリストが取得され、当該アドレスリスト毎に当該アドレスリストに含まれる複数のトリガアドレスの各々に対応する複数のアクセス再生用データ(つまり、プログラム毎のアクセス再生用データ)が生成される。また、本実施形態においては、CPU20によってトリガアドレスがアクセスされた際に、当該トリガアドレスに基づいて対象プログラム(特定のプログラム)の実行の開始が検出され、再生対象データをキャッシュメモリ12に格納する(つまり、プリフェッチする)ために、当該実行の開始が検出された対象プログラムのアドレスリストに含まれる複数のトリガアドレスの各々に対応する複数のアクセス再生用データが参照される(つまり、当該複数のアクセス再生用データに含まれるトリガアドレスが監視される)。換言すれば、本実施形態においては、特定のプログラムの実行の開始の検出結果に基づいて、再生対象データをキャッシュメモリ12に格納するために参照されるアクセス再生用データを入れ替える。
【0213】
ここで、上記したようにプログラム毎にアドレスリストが作成される場合、前述した第3実施形態の構成においては、CPU20によって論理アドレスがアクセスされる度に1024×4回のアドレス一致判定処理を実行することが可能な規模のハードウェアが必要であるが、本実施形態によれば、検出部133cでは1024×1回のアドレス一致判定処理を実行し、監視部133dでは対象プログラムに基づいてアクセス再生用データ保存部134から取得されたアクセス再生用データの数(例えば、4)と同じ回数のアドレス一致判定処理を実行すればよいため、ハードウェア規模を削減することができる。すなわち、本実施形態においては、読み出し性能の向上させることができるとともに、前述した第3実施形態と比較してよりハードウェア規模を削減することができる。
【0214】
なお、詳しい説明については省略するが、本実施形態において説明した構成に対して、前述した第2実施形態において説明した優先度に関する構成を更に適用しても構わない。
【0215】
以上述べた少なくとも1つの実施形態によれば、読み出し性能を向上させることが可能なメモリデバイス及びメモリシステムを提供することができる。
【0216】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0217】
10…メモリデバイス、11…NAND型フラッシュメモリ(不揮発性メモリ)、12…キャッシュメモリ、13…コントローラ、20…CPU、30…メモリシステム、40…アクセス履歴解析部、131…アクセス記録部、132…配置部、133…アクセス再生部、133a…第1キュー、133b…第2キュー、133c…検出部、133d…監視部、134…アクセス再生用データ保存部。