JP6018531B2 - 半導体メモリ装置 - Google Patents

半導体メモリ装置 Download PDF

Info

Publication number
JP6018531B2
JP6018531B2 JP2013072144A JP2013072144A JP6018531B2 JP 6018531 B2 JP6018531 B2 JP 6018531B2 JP 2013072144 A JP2013072144 A JP 2013072144A JP 2013072144 A JP2013072144 A JP 2013072144A JP 6018531 B2 JP6018531 B2 JP 6018531B2
Authority
JP
Japan
Prior art keywords
memory
cache
register
data
logical address
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.)
Active
Application number
JP2013072144A
Other languages
English (en)
Other versions
JP2014197285A (ja
Inventor
清 瀬川
瀬川  清
Original Assignee
東芝プラットフォームソリューション株式会社
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 東芝プラットフォームソリューション株式会社 filed Critical 東芝プラットフォームソリューション株式会社
Priority to JP2013072144A priority Critical patent/JP6018531B2/ja
Publication of JP2014197285A publication Critical patent/JP2014197285A/ja
Application granted granted Critical
Publication of JP6018531B2 publication Critical patent/JP6018531B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明の実施形態は、低速で大容量のフラッシュメモリを使用した半導体メモリ装置に関する。
現在、一般的に販売されているSSD(半導体ディスク)は、記憶媒体としてそのほとんどがNANDフラッシュメモリを使用している。また、その構造は、基板上にNANDフラッシュメモリチップとNANDフラッシュコントローラ(LSI)を実装している。こうした一般市場向けのSSD製品は大量生産され、メモリチップもチップメーカーから大量に購入することによりチップ単価を安く抑えることができ、製品一台当たりの価格も低く抑えることができる。また、メモリチップを直接制御することにより性能(スピード)を最大限に伸ばすことも可能となる。
しかし、特定用途または特定顧客向けの特殊仕様で少量生産品のような場合には、メモリチップの購入数も少量となり価格が割高になってしまう。また、メモリチップもたびたび新しい仕様(デザインルール)の製品に生まれ変わっていくため、そのたびに装置(=製品自体)も新しくしなければならなくなり、製品単価にしめる開発費の割合が大きくなり、さらに価格が高くなってしまうという欠点がある。
このような少量生産とならざるを得ないような製品の場合には、コンパクトフラッシュ(登録商標)メモリ(以下、CFメモリと略す)を代表とするフラッシュメモリカードが有効となる。フラッシュメモリカードのインターフェイスは、それぞれの規格で決まっており、内部で使用しているNANDフラッシュチップのメーカや容量等に関係しないので、容量が大きくなる場合もあるかもしれないが、それを除けば、ほぼ同じコンパチブル品として使用し続けることができる。カードメーカは、NANDメモリチップを大量に購入し生産するため、CFメモリカードを使用すればSSDに負けないくらいの低コストで半導体メモリ装置を作ることができる可能性がある。
CFメモリは、電力が遮断されても記憶した内容が保持される不揮発性であること、また繰り返しデータの書込みや消去ができること、振動や騒音がなく、消費電力が少ない等の特長を有することから、記憶装置として幅広く利用されている。そして、一般的にCFメモリやSD(Secure Digital)メモリには、NANDフラッシュメモリが使用されている。
NANDフラッシュメモリにおけるデータの書込み又は消去は、フラッシュメモリを構成しているブロック単位で行われている。また、フラッシュメモリに書込まれたデータを書換える場合は、前のデータをブロック単位で消去し、新しいデータを書込むという処理が行われる。しかし、NANDフラッシュメモリは特性上寿命があり、その書込み回数には上限がある。したがって、効率の悪い無駄な書込み又は消去は、フラッシュメモリの寿命を短くする一因となる。
また、フラッシュメモリカードはNANDコントローラを内蔵しており、NANDコントローラはNANDの制御をすべて行っている。一般的に、NANDコントローラは性能が遅く、フラッシュメモリカードを使用して記憶装置を構成した場合に、SSD並の性能を出すことは、よほどの工夫をしない限りほとんど不可能に近い。
例えばCFメモリを単体で使用するシステム、またはCFメモリを使用したフラッシュメモリ装置(SSD)では、図6に示すように、ホストまたはSSDシステム(SSD内でのCFメモリ制御部)AとCFメモリBはPATAインターフェイスCを介して接続されている。そして、CFメモリBはNANDコントローラB1とNANDチップB2から構成されている。このような構成において、ホストAからNANDチップB2に格納したデータをアクセスする場合、ホストAからNANDコントローラB1にアクセス指令を出し、NANDコントローラB1がNANDチップB2をアクセスして、その結果をホストAに出力する動作となる。このような構成では、NANDコントローラB1の処理速度がホストAに比べて極端に遅いという課題がある。
それは、単純にCFメモリBを必要な容量分だけ並べて、論理アドレスを固定してCFメモリBに割り当てた様なシステムでは、性能低下が顕著に現れる。特に、ホストAからCFメモリBに保存されたデータを書換える場合は、CFメモリBの内部でNANDチップB2からデータを一度読み出し、書換えデータがあるセクタのみを上書きし、消去済みのNANDチップB2に書き戻すという処理が行われる。この動作は、1セクタのみ書き換える場合でも、NANDチップB2の特性上1ブロック全体を書き換えなければならない。これにより、処理が遅いというだけではなく、ブロック消去が大量に発生することによるNANDチップB2の寿命低下という致命的な欠点にもつながっていた。
特開2012−64158号公報 特開2006−323739号公報
上述したように、CFメモリはリードの処理が遅い(=オーバヘッドが大きい)という欠点がある。この問題を解決する手段として、複数ページの容量を有する先読みバッファを設けて、CFメモリのデータを先読みバッファに先読みすることが要望される。
本発明が解決しようとする課題は、低速で大容量のフラッシュメモリを用いるシステムで、キャッシュメモリに設けた先読みバッファの先読み制御の実行により、特にシーケンシャルリードの実行時において性能の低下を抑えることのできる半導体メモリ装置を提供することを目的とする。
実施形態に係る半導体メモリ装置は、CPUと、低速で大容量のフラッシュメモリと、前記フラッシュメモリの一部のデータを記憶すると共に、前記フラッシュメモリから先読みした複数のページが格納される先読みバッファを有するキャッシュメモリと、前記CPUの制御により前記先読みバッファに格納された前記各ページの論理アドレスが格納される複数の先読みバッファ論理アドレスレジスタと、前記CPUの制御によりヒットしたライトキャッシュの論理アドレス及びキャッシュアドレス対を格納するライトキャッシュヒットレジスタペアレジスタと、外部のホストからのリード指令の論理アドレスと前記先読みバッファ論理アドレスレジスタおよび前記ライトキャッシュヒットレジスタペアレジスタに格納される前記論理アドレスとを比較する比較手段と、前記比較手段で一致した時に、前記ライトキャッシュ又は前記先読みバッファからデータを読み出して前記ホストへ転送する読出制御手段と、を有することを特徴とする。
本発明によれば、ホストからのリードコマンド時、主にシーケンシャルリードでの処理動作の速度を大幅に上げることができる。
実施形態に係る半導体メモリ装置並びにシステムブロックを示す図である。 実施形態に係るセクタ単位にDフラグを持つキャッシュメモリの構成を示す図である。 キャッシュメモリの各ページの情報を示す図である。 実施形態に係るCFメモリの先読み制御回路を示す図である。 図4の動作を示すフローチャート。 従来のホストとCFメモリの接続構成を示す図である。
以下、本発明の実施形態に係る半導体メモリ装置を、図面を参照して説明する。
本実施形態の半導体メモリ装置は、ホストからのリードコマンド時、主にシーケンシャルリードでの処理動作の速度を大幅に上げることを可能とする。
図1は、実施形態に係る半導体メモリ装置並びに同装置を用いたシステムブロックを示す図である。図2において、半導体メモリ装置100は、CPU110、CPUバス120、フラッシュメモリ(ここでは、CFメモリを用いているので、以下ではCFメモリと称する)130、CFコントローラ140、キャッシュメモリ(DRAM)150、キャッシュコントローラ160、ホストインターフェイス170、ローカルバス180、RAM190、ROM195を有している。半導体メモリ装置100のホストインターフェイス170は、外部のホスト200のホストバス210と接続されている。CFメモリ130は、メインメモリを構成するもので、低速・大容量のメモリである。キャッシュメモリ150は、CFメモリ130に格納されるデータの一部のデータの写しを記憶する高速・小容量のメモリである。
そして、半導体メモリ装置100のCPUバス120には、CPU110、CFコントローラ140、RAM190、ROM195などが接続されている。また、ローカルバス180には、キャッシュコントローラ160、ホストインターフェイス170、CFコントローラ140などが接続されている。CPUバス120とローカルバス180は、直接およびCFコントローラ140を経由して接続されている。CPU110は、CFコントローラ140を介してCFメモリ130をアクセスすることができる。また、CPU110は、キャッシュコントローラ160又はCFコントローラ140−キャッシュコントローラ160を介してキャッシュメモリ150をアクセスすることができる。RAM190、ROM195は、OS、ファームウェア、及びアプリケーション等のプログラムの格納領域、並びに実行時の作業領域となるメモリである。
ホスト200と半導体メモリ装置100のホストインターフェイス170とを接続するホストバス210は、例えばSCSIバスやSATAバスである。ホストインターフェイス170は、ホストバス210を介してホスト200との間のコマンド、データの転送を制御する。ホスト200からライトするデータ又はホスト200へのリードするデータは、一時的にキャッシュメモリ150に蓄えられる。つまり、ホスト200から半導体メモリ装置100に対するリード/ライトコマンド実行時には、ホストインターフェイス170、キャッシュコントローラ160を介してキャッシュメモリ150との間でデータがやりとりされる。
ホスト200からのライトコマンド実行時は、ホスト200から送られてきたライトデータをホストインターフェイス170で保持した後、キャッシュメモリ150に転送する。キャッシュメモリ150は、ページ単位で管理されている。例えば、1ページ=64セクタのサイズとする。その後、キャッシュメモリ150のライトデータは、CFメモリ130に転送される。キャッシュメモリ150とCFメモリ130との間の転送の最小サイズは、例えば1ページである。
ホスト200からのリードコマンド実行時は、キャッシュメモリ150がヒットしているかミスしているかによって、それ以前のライトキャッシュに対して実行されたライトコマンドによるライトデータか、またはCFメモリ130からキャッシュメモリ150に転送されたデータが、ホスト200に転送される。CFメモリ130の制御は、CFコントローラ140が行う。これらのCFコントローラ140、ホストインターフェイス170、及びキャッシュコントローラ160等の全体を制御するのがCPU110である。
(キャッシュメモリの構造)
次に、キャッシュメモリ150の構造について説明する。キャッシュメモリ150は、一般的に数MB(メガバイト)〜数十MBの容量がある。ここでは、図2に示すように、キャッシュメモリ150の容量を、例えば64MBとし、例えば1ページ=64セクタ=32KB(キロバイト)単位で管理することにする。したがって、キャッシュメモリ150は、64MB÷32KB=2048ページで構成される。
キャッシュメモリ150の各ページ情報として、図3に示すように、
(1)論理アドレス
(2)ヴァリッドフラグ(1ビット)
(3)Dフラグ(64ビット)
(4)LRU情報
という4種類の値を有する。これら4つの値を格納する場所は、どこでも構わないが、例えばCPU空間にあるRAM190上でも構わない。これら4つの値を1セット(1ページ分)として、2048ページ分保有しておく。
(1)論理アドレスは、ページに対応する論理アドレスであり、ホスト200からのリード/ライトコマンドで指定されるアドレスと同じ意味である。値としては、各64セクタの先頭のアドレス、例えば0x000000, 0x000040, 0x000080, …..という値を持つ。
(2)ヴァリッドフラグ「V」は、そのページが有効か否かを示すフラグである。有効ならばV=“1”、無効ならばV=“0”となる。
(3)Dフラグは、ページ内の各セクタに有効なデータが存在するかどうかを示すフラグであり、ここの例では1ページ=64セクタなので、各Dフラグは64ビットである。
(4)LRU−U/LRU−Dは、キャッシュメモリ150の空きページがなくなって、ページの追い出しの必要性が発生したときに、2048ページの内のどのページから追い出していくかを決めるための情報である。LRUとは、Least Recently Usedアルゴリズムである。このアルゴリズムは、「最も昔に使用された」ページから追い出しを行うという、追い出しの順番を決める方法の一つである。値としては0〜2047までの値、2つで1セットを構成している。例えば、あるページ(ページ番号M)について、現在N番目にアクセスされたページだとする。LRU情報はポインタ値となっていて、LRU−Uは、自分よりひとつ上(より新しくアクセスされた)ページのページ番号を示す。LRU−Dは、自分よりひとつ下のページを指す。このように各ページは上下2方向の数珠つなぎになっている。
ここで、キャッシュメモリ150のページ番号Mがアクセスされたとすると、このエントリは最も最近使用されたということで、最上位に移動される。最上位への移動処理は、現在つながっている数珠の位置から切り離して、一番上位の端に繋ぎ変える。切られたN−1番目とN+1番目をつなぎ直さなければならないが、それらが何ページ目かは2つのポインタ(LRU−U/LRU−D)を見ればわかる。
キャッシュメモリ150がヒットしているかミスしているかは、リード/ライトコマンドで指定されたアドレスと同じアドレスで、かつ、ヴァリッドフラグ「V」が“1”のページが存在するかどうかを調べればよい。
次に、ホスト200から半導体メモリ装置100へ書き込み動作について説明する。
ホスト200からライトコマンドが半導体メモリ装置100のホストインターフェイス170に発行されると、ホストインターフェイス170は、CPU110に割込みを掛けてライトコマンドが受信したこと、およびコマンド内容を知らせる。CPU110は、書き込みアドレスがキャッシュメモリ150でヒットしているかどうかを調べ、ヒットしていたならば該当するキャッシュメモリ150のアドレス位置にライトデータを転送するようホストインターフェイス170を設定して、ライトデータの書き込み動作を実行する。
もしも、キャッシュメモリ150に対するライトキャッシュがミス(キャッシュミス)であったならば、キャッシュメモリ150に1ページ分の新しい領域を割り当てて、このキャッシュメモリ150の新しい領域のアドレス位置にヒットするライトデータを転送するようホストインターフェイス170を設定して、ライトデータの書き込み動作を実行する。もしも、キャッシュメモリ150に空きページが無い場合には、キャッシュ追い出しアルゴリズム(こここでは、LRUアルゴリズム)により、最も過去にアクセスされたページをCFメモリ130に書き戻し(=ライトバック)、空きページを確保する。
(ライトバック)
キャッシュメモリ150からCFメモリ130へのライトバックは、ページ単位で行う。まず、図2に示すキャッシュメモリ150の各ページのDフラグに“0”となっているビット(セクタ)が存在するかどうかを調べる。もしも“0”のセクタがあったならば、CFメモリ130の対応するセクタからのデータをキャッシュメモリ150の当該セクタに読み込まなければならない。
CPU110は、CFメモリ130からデータを読み込む際に、キャッシュメモリ150のDフラグが“1”となっているセクタを避けてデータを転送しなければならない。つまり、キャッシュメモリ150のDフラグが“0”のセクタに対してのみリード動作を実行する。しかし、ヒットしているページならばライトデータがまばらに存在する、言い換えればDフラグに“1”と“0”がランダムに混在した状態となっている可能性は十分考えられる。そのような場合、いちいち“0”のセクタだけ選び出して、それに対応するCFメモリ130にリード動作を行うことは処理的に煩雑すぎるし、実際に動作を行った場合にCFメモリ130のオーバヘッドが大きすぎて実用的な性能を出すことができない。
そこで、キャッシュコントローラ160にDフラグを記憶するレジスタを設け、その出力端とキャッシュメモリ150を構成するDRAMのDM端子とを接続する構成とすることで、DM信号「H」=“1”が入力されると、ライトプロテクト(書き込み禁止)を掛けるようにする。即ち、Dフラグレジスタの値が“0”の有効なセクタのみに対してデータの書き換えが行える仕組みを実現する。一方、Dフラグレジスタの値が“1”の非有効なセクタに対しては、ライトプロテクトが掛かり、DRAMの内容がそのまま保持されるようにする。
(ライトバック)
キャッシュメモリ150からCFメモリ130へのライトバックは、ページ単位で行うが、一般的にCFメモリ130は物理ブロック単位でイレーズ/ライトを行うため、物理ブロック分をまとめてライトバックを行わなければならない。もしも、物理ブロックのサイズと異なるサイズでCFメモリ130に対してライトしたとすると、CFメモリ130の内部では書き換えないデータが発生するためリード・モディファイ・ライトを行わなければならなくなる。すると、CFメモリ130を構成するNANDメモリ間でのデータ読み出し/書き戻しが大量に発生し、オーバヘッドでCFメモリ130は大幅な性能低下に陥ってしまう。
また、キャッシュメモリの1ページも物理ブロックと同じサイズにすれば話が単純になるが、キャッシュメモリのページサイズを大きくしすぎると総ページ数が減り、ミスする確率が上がってしまう。これにより、逆に性能が低下してしまうため、サイズは十分検討して決める必要がある。
従って、ライトバック動作では、1物理ブロック(例えば、2048セクタ=32ページ)で行うために、CFメモリ130上で常に連続した1物理ブロック(ここでは、2048セクタ)分の領域を確保しなければならない。このため、CFメモリ130上のアドレスとライトバックされたキャッシュメモリ150に対応する以下の3種類のアドレス変換テーブルを用意する。
(a)論理−物理アドレス変換テーブル
(b)物理−論理アドレス変換テーブル
(c)ヴァリッドページフラグテーブル
(a)論理−物理アドレス変換テーブルは、通常のライトバックで必要となるテーブルで、ホスト200からリード/ライトコマンドが出力された際に、要求されたデータがCFメモリ130のどこに格納されているかを調べるためのテーブルである。リード/ライトコマンドで指定されたアドレスが論理アドレスであり、このテーブルによって対応する物理アドレスが求められる。
(b)物理−論理アドレス変換テーブルは、逆にCFメモリ130上のアドレス(物理アドレス)を入力すると論理アドレスが求まるテーブルである。これは、ガーベージコレクションと呼ばれる動作の時に必要となる。
(c)ヴァリッドページフラグテーブルは、CFメモリ130の64セクタ毎に1ビット、4バイト当たりCFメモリの2048セクタ分に相当する。
(ガーベージコレクション)
1物理ブロック(例えば、2048セクタ単位)でライトバックする場合、CFメモリ130に一度ライトしたデータは当然ながらいつかは書き換えられる。すると、CFメモリ130上でキャッシュメモリ150のページ(64セクタ)単位で古いデータ(ガーベージ:ゴミ)が残ることになる。この古いデータをそのままにしておくと、CFメモリ全体にゴミが散乱して連続した2048セクタが確保できなくなり、ライトバックができなくなる。これを防ぐために、ゴミを含む2048セクタのうちゴミではない有効なページ(64セクタ分)を読み出して、それらを2048セクタ分まとめてあらためてライトバックを行う。この作業は、一般的にガーベージコレクションと呼ばれ、有効なデータだけが一個所にまとめられ、ゴミしか含まない再生可能な2048セクタの領域が生成される。このゴミしか含まない2048セクタの領域には、次回のライトバック時に新しいデータを上書きすることができる。
(先読み制御)
次に、実施形態に係るCFメモリ130の先読み制御回路について説明する。図4は、CFコントローラ140に設けられる先読み制御回路の構成を示すブロック図である。
前述したように、CFメモリ130はリードの処理が遅い(=オーバヘッドが大きい)という欠点がある。ここでは、特にシーケンシャルリードの実行時において性能の低下を抑えるための方法について説明する。
図4に示すように、CFメモリ130のシーケンシャルリード性能を上げるために、キャッシュメモリ150に先読みバッファ400(例えば、4ページ分)を設ける。一方、CFコントローラ140内には、先読みバッファ400の各ページに対応して「先読みバッファ論理アドレスレジスタ」LUBLAR#0(410a)乃至LUBLAR#3(410d)が設けられる。このLUBLAR#0(410a)乃至LUBLAR#3(410d)には、CPU110がCFメモリ130から先読みバッファ400に1ページのデータを先読みした時に、CFメモリ130の対応する論理アドレスを登録する。なお、「先読みバッファ論理アドレスレジスタ」LUBLAR#0(410a)乃至LUBLAR#3(410d)に対応するキャッシュメモリ150のアドレスは、ハードウェア的に固定されているので、CPU110内部で保持している。
また、キャッシュメモリ150のライトキャッシュ側をリードする場合に、対応する4つの「ライトキャッシュヒットレジスタペア」WCHRが設けられる。この「ライトキャッシュヒットレジスタペア」WCHRは、「論理アドレス」を登録するWCHLAR#0(450a)乃至WCHLAR#3(450d)と、「キャッシュアドレス」を登録するWCHCAR#0(455a)乃至WCHCAR#3(455d)によって構成する。つまり、CPU110は、ホスト200からのリード指令に応じて、ヒットしたライトキャッシュの「論理アドレス」と「キャッシュアドレス」のペアを、ライトキャッシュヒットレジスタペアWCHRに設定する。
また、ホスト200からのリード指令と共に転送される論理アドレスが、CDBレジスタ460にセットされ、その論理アドレスが比較回路470に出力される。比較回路470は、CDBレジスタ460の論理アドレスとLUBLAR#0(410a)乃至LUBLAR#3(410d)、およびWCHLAR#0(450a)乃至WCHLAR#3(450d)とを比較して、一致(ヒット)するか否かを検出する。
例えば、WCHLAR#0(450a)乃至WCHLAR#3(450d)で一致した場合は、対応する「キャッシュアドレス」をWCHCAR#0(455a)乃至WCHCAR#3(455b)から取り出し、キャッシュヒットアドレスレジスタCHAR480にセットする。一方、LUBLAR#0(410a)乃至LUBLAR#3(410d)で一致した場合、CPU110は予め設定されている固定値のキャッシュアドレスをキャッシュヒットアドレスレジスタCHAR480にセットする。CHAR480のキャッシュアドレスは、ホストインターフェイス170の制御の元、キャッシュメモリ150に出力される。また、比較回路470は、論理アドレスの比較動作にて不一致を検出したときは、CPU110へ割り込み信号を送信する。
次に、図5のフローチャートを用いて、図4の動作を説明する。ホスト200からリードコマンドが送られて来ると、ホストインターフェイス170は送られてきたコマンド、例えば「アドレスAからMセクタ分リードしなさい」というコマンドに含まれるリード論理アドレスをCFコントローラ140のCDBレジスタ460にセットする(S200)。
CFコントローラ140の比較回路470は、CDBレジスタ460にセットした論理アドレスと「先読みバッファ論理アドレスレジスタ」LUBLAR#0(410a)乃至LUBLAR#3(410d)、および「ライトキャッシュヒットレジスタペアの論理アドレス」WCHLAR#0(450a)乃至WCHLAR#3(450d)とを比較し(S210)、一致(ヒット)するか否かを検出する。一致(ヒット)した場合(S220のYes)、先読みバッファ400でヒットしているか、ライトキャッシュがある場合(=ヒット)である。ライトキャッシュでヒットした場合、その対応するキャッシュメモリアドレスを「ライトキャッシュヒットレジスタペアのキャッシュアドレス」WCHCAR#0(455a)乃至WCHCAR#3(455d)から抽出し、「キャッシュヒットアドレスレジスタ」CHAR480にセットする(S230)。また、先読みバッファ400でヒットした場合、CPU110は予め設定されている固定値のキャッシュアドレスをキャッシュヒットアドレスレジスタCHAR480にセットする(S230)。
もしも、比較回路470で不一致が検出された場合(=ミス)には、比較回路470はCHAR480にオール“0”をセットする。同時に、比較回路470は、CPU110に対して割込み信号(ミス割込み)を出力する(S240)。
割込み信号を受信したCPU110は、CDBレジスタ460の論理アドレスを参照してキャッシュメモリ150のライトキャッシュ内にヒットするページがないか調べる。もしも、ヒットするページがあれば、その論理アドレスとキャッシュアドレスを「ライトキャッシュヒットレジスタペア」WCHRの置き換え位置にセットする。一方、ライトキャッシュではヒットするページがなければ、CPU110はCFメモリ130から先読みバッファ400に1ページ分のデータを読み出し、その論理アドレスを「先読みバッファ論理アドレスレジスタ」LUBLAR#0(410a)乃至LUBLAR#3(410d)の4つの内の一つにセットする(S250)。
それらのセットが行われる間、ホストインターフェイス170では、CHAR480の値がオール“0”でなくなるまで繰り返し読み出し続ける(S260のYes)。そして、CPU110が対応して、キャッシュメモリ150のライトキャッシュまたは先読みバッファ400にヒットする準備が整うと、ホストインターフェイス170はデータ転送を開始することができる。つまり、比較回路470は一致(ヒット)し、「キャッシュヒットアドレスレジスタ」CHAR480にセットする(S230)される。
ホストインターフェイス170は、キャッシュメモリ150から「キャッシュヒットアドレスレジスタ」CHAR480にセットした内容を読み出す。つまり、CHAR480にセットされるキャッシュヒットアドレスに従いライトキャッシュ又はキャッシュメモリ150の先読みバッファ400からデータを読み出し、ホストバス210を経由してホスト200に転送し(S270)、終了する。
(効果的な先読み動作)
ホストインターフェイス170は、ホスト200からのリードコマンドを受信したら、その後にシーケンシャルリードが続くことを予想して、現在データ転送しているページの次のページをライトキャッシュ又はCFメモリ130から検索する。もしも、次のページ見つかれば「先読みバッファ論理アドレスレジスタ」LUBLAR#0(410a)乃至LUBLAR#3(410d)または「ライトキャッシュヒットレジスタペア」WCHRの特定位置にセットする。
現在転送中のページが転送終了したら、終了したページ対応する「先読みバッファ論理アドレスレジスタ」(410a)乃至LUBLAR#3(410d)および「ライトキャッシュヒットレジスタペア」WCHRも削除が可能となる。削除されて空きレジスタができたら、引き続きその先のヒットしたページを登録し続ける。以上の動作をCPU110がバックグラウンドで行い続けることにより、特にシーケンシャルリードコマンド実行時の場合には常に4ページ分の先読みバッファ400が準備されていて、常に先読みバッファ400がヒットした状態でデータ転送を行うことができ、大幅な性能向上が期待できる。
特に、シーケンシャルライトのように広い領域に対して分割してライトコマンドが出された場合には、頻繁に発生するCFメモリからキャッシュメモリへの読み出し(コピー動作)が不要となり、CFメモリへのアクセスを最小限にできる。これによって、大容量のCFメモリに格納したデータを効率的に書換え処理することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更、組み合わせを行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
100‥半導体メモリ装置、110‥CPU、120‥CPUバス、130‥CFメモリ、140‥CFコントローラ、150‥キャッシュメモリ、160‥キャッシュコントローラ、170‥ホストインターフェイス、180‥ローカルバス、200‥ホスト、210‥ホストバス、400‥先読みバッファ
410a〜410d‥先読みバッファ論理アドレスレジスタ
450a〜450d‥ライトキャッシュヒットレジスタペアの論理アドレス
455a〜455d‥ライトキャッシュヒットレジスタペアのキャッシュアドレス
460‥CDRレジスタ、470‥比較回路、
480‥キャッシュヒットアドレスレジスタCHAR

Claims (6)

  1. CPUと、
    低速で大容量のフラッシュメモリと、
    前記フラッシュメモリの一部のデータを記憶すると共に、前記フラッシュメモリから先読みした複数のページが格納される先読みバッファを有するキャッシュメモリと、
    前記CPUの制御により前記先読みバッファに格納された前記各ページの論理アドレスが格納される複数の先読みバッファ論理アドレスレジスタと、
    前記CPUの制御によりヒットしたライトキャッシュの論理アドレス及びキャッシュアドレス対を格納するライトキャッシュヒットレジスタペアレジスタと、
    外部のホストからのリード指令の論理アドレスと前記先読みバッファ論理アドレスレジスタおよび前記ライトキャッシュヒットレジスタペアレジスタに格納される前記論理アドレスとを比較する比較手段と、
    前記比較手段で一致した時に、前記ライトキャッシュ又は前記先読みバッファからデータを読み出して前記ホストへ転送する読出制御手段と、
    を有することを特徴とする半導体メモリ装置。
  2. 前記CPUは、前記リード指令の論理アドレスと前記先読みバッファ論理アドレスレジスタで一致した場合、前記先読みバッファから前記ホストへ一致したページのデータを転送を行っている間に、次のページのデータを前記フラッシュメモリから前記先読みバッファに格納することを特徴とする請求項1に記載の半導体メモリ装置。
  3. 前記比較手段で一致しなかった時に、前記CPUに対して割込みを発生し、前記CPUによって前記ライトキャッシュ又は前記先読みバッファにヒットするデータを準備させることを特徴とする請求項1に記載の半導体メモリ装置。
  4. 前記論理アドレスに対応するキャッシュアドレスが設定されるレジスタを更に有し、前記レジスタには前記比較手段で一致しないことを示す特定の値が設定されることを特徴とする請求項3に記載の半導体メモリ装置。
  5. 前記比較手段で一致した時に、前記論理アドレスに対応するキャッシュアドレスが設定されるレジスタを更に有し、
    前記読出制御手段は前記レジスタに基づき前記キャッシュメモリ又は前記先読みバッファからデータを読み出すことを特徴とする請求項1に記載の半導体メモリ装置。
  6. 前記リード指令の後に、シーケンシャルリードの指令が続くことに応答して前記データ転送を行うことを特徴とする請求項1又は2に記載の半導体メモリ装置。
JP2013072144A 2013-03-29 2013-03-29 半導体メモリ装置 Active JP6018531B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013072144A JP6018531B2 (ja) 2013-03-29 2013-03-29 半導体メモリ装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013072144A JP6018531B2 (ja) 2013-03-29 2013-03-29 半導体メモリ装置

Publications (2)

Publication Number Publication Date
JP2014197285A JP2014197285A (ja) 2014-10-16
JP6018531B2 true JP6018531B2 (ja) 2016-11-02

Family

ID=52358028

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013072144A Active JP6018531B2 (ja) 2013-03-29 2013-03-29 半導体メモリ装置

Country Status (1)

Country Link
JP (1) JP6018531B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7357223B2 (ja) 2020-03-25 2023-10-06 パナソニックIpマネジメント株式会社 コンデンサ

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200073595A1 (en) * 2018-09-02 2020-03-05 Silicon Motion Inc. Flash memory controller capable of improving IOPS performance and corresponding method

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007241927A (ja) * 2006-03-13 2007-09-20 Toshiba Corp データ記憶装置及び方法
JP2009080926A (ja) * 2008-11-10 2009-04-16 Renesas Technology Corp 記憶装置
JP2012064158A (ja) * 2010-09-17 2012-03-29 Toshiba Corp メモリ管理装置及びメモリ管理方法
JP2012133416A (ja) * 2010-12-17 2012-07-12 Toshiba Corp メモリシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7357223B2 (ja) 2020-03-25 2023-10-06 パナソニックIpマネジメント株式会社 コンデンサ

Also Published As

Publication number Publication date
JP2014197285A (ja) 2014-10-16

Similar Documents

Publication Publication Date Title
US10949092B2 (en) Memory system with block rearrangement to secure a free block based on read valid first and second data
US11126544B2 (en) Method and apparatus for efficient garbage collection based on access probability of data
US8635407B2 (en) Direct memory address for solid-state drives
JP5907739B2 (ja) 不揮発性記憶装置
US20170206172A1 (en) Tehcniques with os- and application- transparent memory compression
KR102495910B1 (ko) 스토리지 장치 및 그 동작 방법
US8266385B2 (en) Technique and apparatus for identifying cache segments for caching data to be written to main memory
US20120317365A1 (en) System and method to buffer data
JP6306737B2 (ja) 半導体メモリデバイス、及び、半導体メモリデバイスを有するストレージ装置
US8069299B2 (en) Banded indirection for nonvolatile memory devices
KR20170087043A (ko) 저속 메모리를 이용하여 페이지 리맵핑 방식으로 바이트 어드레스 지정 능력 및 근-dram 성능을 달성하는 메커니즘
TW201942749A (zh) 記憶裝置及電腦系統
JP6018531B2 (ja) 半導体メモリ装置
CN114077555A (zh) 数据存储装置的逻辑到物理映射的方法和系统
JP6027479B2 (ja) 半導体メモリ装置
US12061556B2 (en) Hot/cold address/data determination using hash addresses for a data storage system
JP2020115275A (ja) 情報処理装置およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150615

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160428

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160531

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160722

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160906

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160930

R150 Certificate of patent or registration of utility model

Ref document number: 6018531

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250