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

半導体メモリ装置 Download PDF

Info

Publication number
JP6027479B2
JP6027479B2 JP2013071894A JP2013071894A JP6027479B2 JP 6027479 B2 JP6027479 B2 JP 6027479B2 JP 2013071894 A JP2013071894 A JP 2013071894A JP 2013071894 A JP2013071894 A JP 2013071894A JP 6027479 B2 JP6027479 B2 JP 6027479B2
Authority
JP
Japan
Prior art keywords
memory
data
cache memory
flag
cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013071894A
Other languages
English (en)
Other versions
JP2014197265A (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 JP2013071894A priority Critical patent/JP6027479B2/ja
Publication of JP2014197265A publication Critical patent/JP2014197265A/ja
Application granted granted Critical
Publication of JP6027479B2 publication Critical patent/JP6027479B2/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)では、図9に示すように、ホストまたは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の寿命低下という致命的な欠点にもつながっていた。
一方、キャッシュメモリの技術分野においては、1バイト単位でのデータの書換えを行う場合には、物理ブロック単位に消去を行ってから書換えるようにしていることから、書換えの必要のない部分まで書換えを行い、書換え回数が増えてしまう欠点がある。その技術的課題に着目して、書換えデータを書込む際、その書換えデータと1番目エリアの書換え対象位置のデータとの排他的論理和をとり、さらに、この排他的論理和のデータと2番目エリアの前記位置のデータとの排他的論理和をとる処理を順次繰り返し、その過程で当該エリアの前記位置のデータが初期値であったとき、そのエリアの前記位置にそれまでに求めた排他的論理和のデータを書き込む方法がある。
特開2005−38518号公報
本発明が解決しようとする課題は、低速で大容量のフラッシュメモリを用いるシステムで、キャッシュメモリの1セクタ単位毎に設定されるフラグの内容を用いてフラッシュメモリに対するライトバックの処理およびガーベージコレクションの処理を効率よく実行することのできる半導体メモリ装置を提供することを目的とする。
実施形態に係る半導体メモリ装置は、CPUと、低速で大容量のフラッシュメモリと、前記フラッシュメモリに記憶される一部のデータを記憶し、複数のセクタから構成されるページ単位でアクセスされるキャッシュメモリと、外部のホストからのライトコマンドにより転送されるデータを保持すると共に、前記キャッシュメモリのアクセスを制御するホストインターフェイスと、前記キャッシュメモリの前記セクタ毎に設定されるフラグであって、前記ホストからの前記データ、または前記フラッシュメモリからのデータが書き込まれた場合は有効ビットを、それらのデータがない場合は非有効ビットを示すフラグが前記CPUによって設定されるフラグレジスタを有し、前記フラッシュメモリから前記キャッシュメモリに各ページのデータをコピーする際に、前記フラグレジスタの内容が前記非有効ビットを示すセクタのみに前記キャッシュメモリの内容を書き換える制御手段と、を具備し、前記コピーが終了した後の前記キャッシュメモリの複数ページの書換え済みデータを前記フラッシュメモリに書き戻すことを特徴とする。
また、実施形態に係る半導体メモリ装置は、CPUと、低速で大容量のフラッシュメモリと、前記フラッシュメモリに記憶される一部のデータを記憶し、複数のセクタから構成されるページ単位でアクセスされるキャッシュメモリと、前記キャッシュメモリの前記セクタ毎に設定されるフラグであって、前記CPUがガーベージコレクションを実行すると判断した時に、非有効ビットを示すフラグが設定されるフラグレジスタを有し、前記フラッシュメモリから前記キャッシュメモリに有効なページのデータをコピーする際に、前記フラグレジスタの前記非有効ビットに基づき前記キャッシュメモリの割り当てられた領域に書き込む制御手段と、を具備し、前記コピーが終了した後の前記キャッシュメモリの複数ページの書換え済みデータを前記フラッシュメモリに書き戻すことを特徴とする。
本発明によれば、ライトコマンド時、フラッシュメモリの内容を一部分書き換える際に発生するフラッシュメモリのリード動作をできるだけ減らすことができる。また、有効なデータだけが一個所にまとめられ、ガーベージ(ゴミ)しか含まない再生可能なセクタの領域が生成できるガーベージコレクションの動作を効率的に行うことができる。
実施形態に係る半導体メモリ装置並びにシステムブロックを示す図である。 実施形態に係るセクタ単位にDフラグを持つキャッシュメモリの構成を示す図である。 キャッシュメモリの各ページの情報を示す図である。 実施形態に係るDフラグによるCFメモリからのデータをキャッシュメモリに書き換える機構を示す図である。 図4の動作を示すフローチャート。 ガーベージコレクション処理を示す図である。 実施形態に係るDフラグによるガーベージコレクション処理で、CFメモリからのデータをキャッシュメモリにコピーする機構を示す図である。 図7の動作を示すフローチャート。 従来のホストとCFメモリの接続構成を示す図である。
以下、本発明の実施形態に係る半導体メモリ装置を、図面を参照して説明する。
まず、ライトコマンド時、フラッシュメモリの内容を一部分書き換える際に発生する、フラッシュメモリのリード動作をできるだけ減らすことについて説明する。
図1は、実施形態に係る半導体メモリ装置並びに同装置を用いたシステムブロックを示す図である。図1において、半導体メモリ装置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は、直 、接続することができる。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)ヴァリッドフラグ「V」(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に書き戻し(=ライトバック)、空きページを確保する。
(ライトバック)
CPU110は、キャッシュメモリ150からCFメモリ130へのライトバックをページ単位で行う。まず、CPU110は、図2に示すキャッシュメモリ150の各ページのDフラグレジスタに“0”となっているビット(セクタ)が存在するかどうかを調べる。もしも“0”のセクタがあったならば、CFメモリ130の対応するセクタからのデータをキャッシュメモリ150の当該セクタに読み込まなければならない。
(Dフラグを使用したCFメモリ/キャッシュメモリの動作)
CPU110は、CFメモリ130からデータを読み込む際に、キャッシュメモリ150のDフラグが“1”となっているセクタを避けてデータを転送しなければならない。つまり、キャッシュメモリ150のDフラグが“0”(有効なセクタ)のセクタに対してのみリード動作を実行する。しかし、ヒットしているページならばライトデータがまばらに存在する、言い換えればDフラグに“1”と“0”がランダムに混在した状態となっている可能性は十分考えられる。そのような場合、いちいち“0”のセクタだけ選び出して、それに対応するCFメモリ130にリード動作を行うことは処理的に煩雑すぎるし、実際に動作を行った場合にCFメモリ130のオーバヘッドが大きすぎて実用的な性能を出すことができない。
そこで実施形態では、Dフラグが“0”のセクタのみに対してのみデータの読み出しを行ったかのように動作する機構をキャッシュメモリ150に設けた。ここでは、一例としてキャッシュメモリ150を一般的なDRAMとして説明するが、より高速なSDRAM、DDR等でも同じ原理である。
図4は、DフラグレジスタによるCFメモリ130からのデータをキャッシュメモリ150に書き換える機構を示す図である。この機構は、キャッシュコントローラ160にDフラグレジスタ(64ビットのシフトレジスタ)300を設ける。Dフラグレジスタ300は、CFメモリ130からキャッシュメモリ150への1セクタ毎のデータ転送に応じて1ビットずつシフト動作する。キャッシュコントローラ160は、キャッシュメモリ150を構成するDRAM330を制御するために、DRAM330に対しアドレス、R/Wの制御信号等のDRAM制御信号を出力する。DRAM330のデータ信号は、CFメモリ130又はホストインターフェイス170から入出力される。DRAM330は、メーカ毎にいろいろな種類のものが販売されているが、どのDRAMにもライトプロテクトの信号端であるDM(Input data mask)信号端子が存在する。ただし、各メーカやメモリの種類によって信号名が違ったり、形態が異なっていたりするが、原理は同じである。
そこで実施形態では、Dフラグレジスタ300の出力端とDRAM330のDM端子とを接続する構成とする。DRAM330は、このDM信号「H」=“1”が入力されると、ライトプロテクト(書き込み禁止)を掛けることができる。実施形態ではこの原理を利用して、Dフラグレジスタ300の値が“0”の有効なセクタのみに対してデータの書き換えが行える仕組みを実現する。一方、Dフラグレジスタ300の値が“1”のセクタに対しては、ライトプロテクトが掛かり、DRAM330の内容がそのまま保持される。
次に、図5のフローチャートを用いて、図4の動作について説明する。先ず、CPU110は、CFメモリ130から1ページ(64セクタ)分のデータをリードするよう、CFコントローラ140に対して指令を出す(S100)。即ち、キャッシュメモリ側の状態(有効ではないセクタ)により、CFメモリ130に対してセクタ単位に頻繁にリード要求を行う必要がない。一方、CPU110は、キャッシュコントローラ160のDフラグレジスタ300に、CFメモリ130から読み込もうとしているキャッシュの1ページに対応するDフラグの値(64ビット)をセットする(S110)。
キャッシュコントローラ160は、CFメモリ130から1セクタずつリードデータが送られてくる度にキャッシュメモリ150のDRAM330に対してライト動作を行うが、同時に転送先のアドレスに連動してDフラグレジスタ300の値をDRAM330のDM端子に出力する。Dフラグレジスタ300は、1セクタ転送毎に1ビットずつシフトする。これにより、Dフラグレジスタ300の値が“1”の場合には、CFメモリ130から1セクタ分データが転送されているのにかかわらず、DRAM330は書き換えられずに元のデータを維持することができる。一方、Dフラグレジスタ300の値が“0”の場合には、CFメモリ130から転送される1セクタ分データがDRAM330に書き込まれる(S120)。そして、CFメモリ130からの1ページ分の書き換えが終了したかをチェックし(S130)、終了していなければ、S120を繰り返し実行する。64セクタ分のデータをCFメモリ130からキャッシュメモリ150のDRAM330に転送し終わった後は、CPU110は、キャッシュメモリ150の当該書き込み対象ページ(64セクタ)のDフラグにすべて“1”をセットし、処理を終了する(S140)。
(ライトバック)
キャッシュメモリ150からCFメモリ130へのライトバックは、ページ単位で行うが、一般的にCFメモリ130は物理ブロック単位でイレーズ/ライトを行うため、物理ブロック分をまとめてライトバックを行わなければならない。もしも、物理ブロックのサイズと異なるサイズでCFメモリ130に対してライトしたとすると、CFメモリ130の内部では書き換えないデータが発生するためリード・モディファイ・ライトを行わなければならなくなる。すると、CFメモリ130を構成するNANDメモリ間でのデータ読み出し/書き戻しが大量に発生し、オーバヘッドでCFメモリ130は大幅な性能低下に陥ってしまう。
また、キャッシュメモリ150の1ページも物理ブロックと同じサイズにすれば話が単純になるが、キャッシュメモリ150のページサイズを大きくしすぎると総ページ数が減り、ミスする確率が上がってしまう。これにより、逆に性能が低下してしまうため、サイズは十分検討して決める必要がある。
従って、ライトバック動作では、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物理ブロック(例えば、32ページ(2048セクタ単位))でライトバックする場合、CFメモリ130に一度ライトしたデータは当然ながらいつかは書き換えられる。すると、CFメモリ130上でキャッシュメモリ150のページ(64セクタ)単位で古いデータ(ガーベージ:ゴミ)が残ることになる。この古いデータをそのままにしておくと、CFメモリ130全体にガーベージが散乱して、連続した32ページ(2048セクタ)が確保できなくなり、ライトバックができなくなる。
図6は、CFメモリ130上のガーベージ発生の一例を示す図である。図中、1つの升目はページ単位のデータを示し、各行が1物理ブロック単位のデータを示すものとする。また、網掛け部の四角は、ガーベージが発生したページ(無効なデータ)を示している。その結果、図6(1)の例では、下から1行目のブロックと下から4行目のブロックのみにしか、1物理ブロック(例えば、2048セクタ)のデータが確保できなくなっている。
そこで、そのような状況を判断したCPU110は、CFメモリ130中の各物理ブロックで、ガーベージの発生が多い物理ブロック(図6(1)の例では、1行目、3行目、6行目)を抽出し、CFコントローラ140に対し、それらの各物理ブロックの中で有効なページ(図6の例では、符号(a),(b)‥‥(h))を読み出し、1物理ブロック分のデータをキャッシュメモリ150に集めるリード動作を実行する。その後、CPU110はCFコントローラ140に対し、キャッシュメモリ150に書き込んだ1物理ブロック分のデータをCFメモリ130にライトバックする指令を出す。これにより、CFメモリ130は図6(2)に示すように、最下位のブロックに有効なページが寄せ集められた1物理ブロックのデータが格納されると共に、1行目、3行目、6行目のブロックにはゴミしか含まない再生可能な1物理ブロック(例えば、2048セクタ)の領域が生成される。このゴミしか含まないブロックには、次回のライトバック時に新しいブロックデータを上書きすることができる。この動作により、ガーベージコレクションが完了する。
(Dフラグを使用したガーベージコレクション動作)
図7は、上述したガーベージコレクションを行うときに、図5に示したDフラグレジスタを用いて、CFメモリ130の有効なページ(図6の符号(a),(b)‥‥(h))を読み出して、キャッシュメモリ150に書き込を行う回路を示している。
図8は、ガーベージコレクションにおける、CPU110又はCFコントローラ140又はキャッシュコントローラ160の動作を示すフローチャートである。CPU110は、ガーベージコレクションが必要と判断したとき、上述したヴァリッドページフラグテーブルを検索して、4バイト毎(=32ページ分)に“1”のビット数(有効なページ数)を数える動作を64回(2048セクタ)行い、ガーベージ(ゴミ)をたくさん含んでいる個所を調べる。即ち、4バイト中の値が“1”のビットを数え、その数が少ない個所を調べる。4バイト中にひとつでも“1”のビットがあると言うことは、その他の“0”のビットは全てゴミということである。そこで、“1”のビット数が少ない4バイトを見つけたら、その中で“1”のビットに対応するCFメモリ130の例えば64セクタの論理アドレスを物理−論理アドレス変換テーブルから求める。論理アドレスが求まったらそれらをすべて一旦キャッシュメモリ150に読み出す(S200)。
この読み出し動作時、CPU110は、図7に示すDフラグレジスタ300(64ビット)にオール“0”の値をセットする。そして、例えば図6(1)に示したCFメモリ130のページ(a)の64セクタをキャッシュメモリ150に割り当てると共に、ヴァリッドフラグを“1”に設定して、CFコントローラ140に指令する(S210)。すると、CFコントローラ140は、ライトバック動作の要領にて、CFメモリ130から読み出した各セクタのデータをキャッシュメモリ150を構成するDRAM330の割り当てた領域に書き込む(S220)。この時、キャッシュコントローラ160のDフラグレジスタ300の値はオール“0”であるため、DRAM330に対するライトプロテクションはディセーブルされている。つまり、通常の書込み動作が行われる。CFコントローラ140は、このようなCFメモリ130からの読み出しと、キャッシュメモリ150への書込み動作をページ(a)の64セクタ分を実行して、1ページ分の移動動作を実行する。CFコントローラ140は、他の有効ページ(図6(1)のページ(b)、(c)‥‥(g))についても同様の動作を行う(S240,S250)。これにより、キャッシュメモリ150の割り当てられた領域には、1物理ブロック分のデータの移動が完了する。
その後、CPU110は、CFコントローラ140に対しライトバック指令を出すと、CFコントローラ140は、キャッシュメモリ150の当該1物理ブロックのデータをCFメモリ130へ書き戻す(S260)。これにより、CFメモリ130は、図6(2)の状態に遷移する。つまり、CFメモリ130は図6(2)に示すように、最下位のブロックに有効なページが寄せ集められた1物理ブロックのデータが格納されると共に、1行目、3行目、6行目のブロックにはゴミしか含まない再生可能な1物理ブロック(例えば、2048セクタ)の領域が生成される。よって、図7に示した回路を用いることによって、ホスト200からライトデータ無しのライトコマンドが送られたのと同じ動作になり、すべての処理を単純化することができる。
ここで期待できる効果は、上記したガーベージコレクションを行うべき領域、例えば2048セクタは現在ゴミがどんどん増えている個所であって、その付近に対してホスト200からライトコマンドにより書き換えが多数発生していると考えられる。すると、残った有効なページ(64セクタ)も近々書き換えられる可能性が高い。Dフラグレジスタ300を使用せずにガーベージコレクションを単独で行うと、その現時点でのゴミはすべて取り除くことができるが、本実施形態のようにDフラグレジスタ300を使用してガーベージコレクションを行えば、今回割り当てた1ページも後々ライトコマンドにより埋められて、CFメモリ130から読み出す必要がなくなる可能性が大きくなる。これによりガーベージコレクションのスピードも向上する。したがって、Dフラグレジスタ300を使用することにより、ライトコマンド実行時の効率化、高速化することができる。また、ガーベージコレクションを単純化、効率化することができる。
以上、本実施形態によれば、ライトコマンド時のフラッシュメモリのリード動作では、キャッシュメモリのセクタ単位にDフラグを持たせ、ライトデータを転送したキャッシュメモリのセクタ、またはCFメモリから読み出したデータを転送したキャッシュメモリのセクタに対してDフラグを“1”として有効なデータが存在することを判断できるようにしておく。ライトコマンド実行時には、そのDフラグに基づき、“1”の場合はライトプロテクトを掛け、“0”のセクタにのみにCFメモリからのデータを書き込むとこで、キャッシュメモリ上には書き換えられたデータ、又は過去にあったデータしか存在しないようにする。そして、ページすべてにデータが揃った時点でCFメモリに書き戻す。これにより、キャッシュメモリを構成するDRAMのライト動作を削減することができる。
また、ガーベージコレクションでは、CFメモリの有効なページのデータをキャッシュメモリに移動した後、ライトバックする動作にあっても、キャッシュメモリのDRAMに対しDフラグをオール“0”に設定してCFメモリの有効ページの内容をキャッシュメモリにコピーすることができるため、ホストからライトデータ無しのライトコマンドが送られたのと同じ動作になり、すべての処理を単純化することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更、組み合わせを行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
100‥半導体メモリ装置、110‥CPU、120‥CPUバス、130‥CFメモリ、140‥CFコントローラ、150‥キャッシュメモリ、160‥キャッシュコントローラ、170‥ホストインターフェイス、180‥ローカルバス、200‥ホスト、210‥ホストバス、300‥Dフラグレジスタ、330‥キャッシュメモリのDRAM、

Claims (4)

  1. CPUと、
    低速で大容量のフラッシュメモリと、
    前記フラッシュメモリに記憶される一部のデータを記憶し、複数のセクタから構成されるページ単位でアクセスされるキャッシュメモリと、
    外部のホストからのライトコマンドにより転送されるデータを保持すると共に、前記キャッシュメモリのアクセスを制御するホストインターフェイスと、
    前記キャッシュメモリの前記セクタ毎に設定されるフラグであって、前記ホストからの前記データ、または前記フラッシュメモリからのデータが書き込まれた場合は有効ビットを、それらのデータがない場合は非有効ビットを示すフラグが前記CPUによって設定されるフラグレジスタを有し、前記フラッシュメモリから前記キャッシュメモリに各ページのデータをコピーする際に、前記フラグレジスタの内容が前記非有効ビットを示すセクタのみに前記キャッシュメモリの内容を書き換える制御手段と、
    を具備し、
    前記コピーが終了した後の前記キャッシュメモリの複数ページの書換え済みデータを前記フラッシュメモリに書き戻すことを特徴とする半導体メモリ装置。
  2. CPUと、
    低速で大容量のフラッシュメモリと、
    前記フラッシュメモリに記憶される一部のデータを記憶し、複数のセクタから構成されるページ単位でアクセスされるキャッシュメモリと、
    前記キャッシュメモリの前記セクタ毎に設定されるフラグであって、前記CPUがガーベージコレクションを実行すると判断した時に、非有効ビットを示すフラグが設定されるフラグレジスタを有し、前記フラッシュメモリから前記キャッシュメモリに有効なページのデータをコピーする際に、前記フラグレジスタの前記非有効ビットに基づき前記キャッシュメモリの割り当てられた領域に書き込む制御手段と、
    を具備し、
    前記コピーが終了した後の前記キャッシュメモリの複数ページの書換え済みデータを前記フラッシュメモリに書き戻すことを特徴とする半導体メモリ装置。
  3. 前記フラグレジスタは、1セクタ転送する毎に1ビットシフトするシフトレジスタであって、その出力端は前記キャッシュメモリのライトプロテクションの信号端子に接続されていることを特徴とする請求項1又は請求項2に記載の半導体メモリ装置。
  4. 前記フラグレジスタから前記有効ビットを示すフラグが出力された場合、前記キャッシュメモリはライトプロテクションとなることを特徴とする請求項1に記載の半導体メモリ装置。






JP2013071894A 2013-03-29 2013-03-29 半導体メモリ装置 Active JP6027479B2 (ja)

Priority Applications (1)

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

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP2014197265A JP2014197265A (ja) 2014-10-16
JP6027479B2 true JP6027479B2 (ja) 2016-11-16

Family

ID=52358016

Family Applications (1)

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

Country Status (1)

Country Link
JP (1) JP6027479B2 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4366298B2 (ja) * 2004-12-02 2009-11-18 富士通株式会社 記憶装置、その制御方法及びプログラム
JP4412676B2 (ja) * 2007-05-30 2010-02-10 インターナショナル・ビジネス・マシーンズ・コーポレーション メインメモリに書き込むデータをキャッシュする技術

Also Published As

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

Similar Documents

Publication Publication Date Title
US11868618B2 (en) Data reading and writing processing from and to a semiconductor memory and a memory of a host device by using first and second interface circuits
JP7115899B2 (ja) ハイブリッドメモリにおける書き込み及びフラッシュ支援のためのメモリモジュール及びその動作方法
US9378131B2 (en) Non-volatile storage addressing using multiple tables
TWI559138B (zh) 記憶體裝置及記憶體管理方法
Birrell et al. A design for high-performance flash disks
US8688894B2 (en) Page based management of flash storage
US9146688B2 (en) Advanced groomer for storage array
US10437737B2 (en) Data storage device
US20100205363A1 (en) Memory device and wear leveling method thereof
US20110145489A1 (en) Hybrid storage device
JP6306737B2 (ja) 半導体メモリデバイス、及び、半導体メモリデバイスを有するストレージ装置
US11301331B2 (en) Storage device and operating method of storage device
KR20170087043A (ko) 저속 메모리를 이용하여 페이지 리맵핑 방식으로 바이트 어드레스 지정 능력 및 근-dram 성능을 달성하는 메커니즘
US20230214158A1 (en) Read performance of memory devices
TW201942749A (zh) 記憶裝置及電腦系統
JP6018531B2 (ja) 半導体メモリ装置
JP2012068765A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP6027479B2 (ja) 半導体メモリ装置
CN114077555A (zh) 数据存储装置的逻辑到物理映射的方法和系统
US20230019878A1 (en) Systems, methods, and devices for page relocation for garbage collection
CN115809018A (zh) 改善系统的读取性能的设备和方法
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: 20160726

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160726

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: 20161004

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161014

R150 Certificate of patent or registration of utility model

Ref document number: 6027479

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