JP4254932B2 - メモリコントローラ及びフラッシュメモリシステム - Google Patents

メモリコントローラ及びフラッシュメモリシステム Download PDF

Info

Publication number
JP4254932B2
JP4254932B2 JP2005252911A JP2005252911A JP4254932B2 JP 4254932 B2 JP4254932 B2 JP 4254932B2 JP 2005252911 A JP2005252911 A JP 2005252911A JP 2005252911 A JP2005252911 A JP 2005252911A JP 4254932 B2 JP4254932 B2 JP 4254932B2
Authority
JP
Japan
Prior art keywords
data
flash memory
host system
memory
register
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
JP2005252911A
Other languages
English (en)
Other versions
JP2007066118A (ja
Inventor
琢真 光永
剛 小柳津
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
TDK Corp
Original Assignee
TDK Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by TDK Corp filed Critical TDK Corp
Priority to JP2005252911A priority Critical patent/JP4254932B2/ja
Priority to US11/513,630 priority patent/US20070047308A1/en
Publication of JP2007066118A publication Critical patent/JP2007066118A/ja
Application granted granted Critical
Publication of JP4254932B2 publication Critical patent/JP4254932B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory

Landscapes

  • Memory System (AREA)
  • Read Only Memory (AREA)

Description

本発明は、メモリコントローラ及び当該メモリコントローラを備えるフラッシュメモリシステムに関する。
近年、不揮発性の記録媒体であるフラッシュメモリの開発が盛んに行われ、デジタルカメラ等の情報機器(ホストシステム)の記憶媒体として普及している。
このような機器によるフラッシュメモリへのアクセスを制御するために、メモリコントローラが用いられる。フラッシュメモリへのデータの書き込み又はフラッシュメモリからのデータの読み出しを円滑化するために、データを一時的に格納するバッファ(例えばFIFOメモリ等)を備えるメモリコントローラが開発されている(例えば特許文献1を参照)。多くの場合、バッファは、複数セクタ(1セクタは512バイト)分のデータを格納できるような構成になっている。また、通常、バッファは、ホストシステムからデータが書き込まれる場合も、ホストシステムがデータを読み出す場合も、メモリコントローラの内部クロックに同期して動作する。
しかしながら、ホストシステムが、上記のようなバッファを備えたメモリコントローラを介してフラッシュメモリにアクセスするときに、ホストシステムの動作クロック(外部クロック)に同期して動作した場合、以下のような不都合が生じる。
例えば、外部クロックが内部クロックよりも高い周波数である場合、ホストシステムは、データの書き込みや読み出しを、自己の動作クロックより遅いクロックに同期して実行せねばならないため、実行に余分な時間がかかる。
逆に、外部クロックが内部クロックよりも低い周波数である場合、ホストシステムからフラッシュメモリにアクセスができない場合がある。
又、内部クロックと外部クロックの周波数が同じであっても位相が異なる場合はホストシステムからフラッシュメモリへのアクセスでエラーが発生する場合がある。
特開2004−326574号公報
このような不都合は、バッファをいわゆるデュアルポートメモリにより構成することで、回避可能である。
しかしながら、複数セクタ分のデータを格納できる容量を持つバッファを全てデュアルポートメモリにより構成する場合、回路規模の増大や消費電力の増加といった不都合が生じる。
本発明は上記の実情に鑑みてなされたもので、ホストシステム側からホストシステムの動作クロックに同期したアクセスが可能なメモリコントローラ、及び当該メモリコントローラを備えるフラッシュメモリシステムを提供することを目的とする。
本発明の第1の観点に係るメモリコントローラは、フラッシュメモリを記憶媒体として利用するホストシステムからの命令に応答して前記フラッシュメモリへのアクセスを制御するメモリコントローラであって、複数セクタの記憶容量を有し、前記メモリコントローラの内部における動作の基準となる第2のクロックに同期して動作し、前記フラッシュメモリに書き込まれるデータ及び前記フラッシュメモリから読み出されたデータが格納されるバッファメモリと、記憶容量が1セクタ未満であり、前記ホストシステムが前記フラッシュメモリに格納しようとするデータを、前記ホストシステムの動作の基準となる第1のクロックに同期して前記ホストシステムから受け取り、該受け取ったデータを前記第2のクロックに同期して前記バッファメモリに対して出力する第1のFIFO(First In First Out)と、記憶容量が1セクタ未満であり、前記ホストシステムが前記フラッシュメモリから読み出そうとするデータを、前記第2のクロックに同期して前記バッファメモリから受け取り、該受け取ったデータを前記第1のクロックに同期して前記ホストシステムに対して出力する第2のFIFOとを備え、前記ホストシステムが前記フラッシュメモリに格納しようとするデータは、第1のFIFOが入出力動作を並行して行うことにより、前記バッファメモリに蓄積され、前記ホストシステムが前記フラッシュメモリから読み出そうとするデータは、第2のFIFOが入出力動作を並行して行うことにより、前記バッファメモリから前記ホストシステムに転送される、ことを特徴とする。
前記ホストシステムと前記メモリコントローラとは、nビットのバス幅を有する外部バスにより接続され、前記第1のFIFOは、前記ホストシステムからnビットずつデータを受け取り、前記バッファメモリに対してn×mビットずつデータを出力し、前記第2のFIFOは、前記バッファメモリからn×mビットずつデータを受け取り、前記ホストシステムに対してnビットずつデータを出力すしてもよい。
本発明の第2の観点に係るフラッシュメモリシステムは、上記のいずれかの特徴を有するメモリコントローラと、フラッシュメモリと、から構成される、ことを特徴とする。
本発明によれば、メモリコントローラは、ホストシステムの動作クロックに同期してデータを受け取り、該受け取ったデータをメモリコントローラの内部クロックに同期して出力する第1のFIFO(First In First Out)と、内部クロックに同期してデータを受け取り、該受け取ったデータをホストシステムの動作クロックに同期して出力する第2のFIFOとを備えることにより、ホストシステム側からホストシステムの動作クロックに同期したアクセスが可能である。
以下、図面に基づき、本発明の実施の形態について詳細に説明する。
図1は、本発明に係るフラッシュメモリシステム1を概略的に示すブロック図である。図1に示すように、フラッシュメモリシステム1は、フラッシュメモリ2と、それを制御するコントローラ3で構成されている。
なお、フラッシュメモリシステム1は、外部バス13を介してホストシステム4と接続される。本実施の形態における外部バス13は16ビットのバス幅を有する。ホストシステム4は、ホストシステム4の全体の動作を制御するためのCPU(Central Processing Unit)、フラッシュメモリシステム1との情報の授受を担うコンパニオンチップ等から構成される。ホストシステム4は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
なお、ホストシステム4は、動作クロックとして、コントローラ3の内部で生成される内部クロックUCLKと異なる周波数の外部クロックBCLKに基づいて動作するものとする。
フラッシュメモリ2は、不揮発性メモリであり、レジスタと、メモリセルアレイと、から構成される。フラッシュメモリ2は、レジスタとメモリセルとの間でデータの複写を行って、データの書き込み又は読み出しを行う。
メモリセルアレイは、複数のメモリセル群と、ワード線と、を備える。各メモリセル群は、複数のメモリセルが直列に接続されたものである。ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、データの複写、即ち、レジスタから選択されたメモリセルへの複写又は選択されたメモリセルからレジスタへのデータの複写が行われる。
メモリセルアレイを構成するメモリセルは、2つのゲートを備えたMOSトランジスタによって構成される。ここで、上側のゲート、下側のゲートは、それぞれ、コントロールゲート、フローティングゲートと呼ばれており、フローティングゲートに電荷(電子)を注入若しくはフローティングゲートから電荷(電子)を排出することによって、データの書き込み若しくはデータの消去が行われる。
このフローティングゲートは、周囲を絶縁体で囲まれているので、注入された電子は長期間にわたって保持される。なお、フローティングゲートに電子を注入するときは、コントロールゲートが高電位側となる高電圧を印加して電子が注入される。また、フローティングゲートから電子を排出するときは、コントロールゲートが低電位側となる高電圧を印加して電子が排出される。
ここで、フローティングゲートに電子が注入されている状態が書き込み状態であり、論理値「0」に対応する。また、フローティングゲートから電子が排出されている状態が消去状態であり、論理値「1」に対応する。
このようなフラッシュメモリ2のアドレス空間を図2に示す。フラッシュメモリ2のアドレス空間は、“ページ”と“ブロック”に基づいて分割されている。
ページは、フラッシュメモリ2にて行われるデータ読み出し動作及びデータ書き込み動作における処理単位である。ブロックは、フラッシュメモリ2にて行われるデータ消去動作における処理単位である。
図2に示したフラッシュメモリでは、1つのページは、1セクタ(512バイト)のユーザ領域25と、16バイトの冗長領域26とを含んでいる。又、一つのページが4セクタのユーザー領域と64バイトの冗長領域で構成されているフラッシュメモリもある。ユーザ領域25は、ホストシステム4から供給されるユーザデータを格納する。
冗長領域26は、エラーコレクションコード、対応論理ブロックアドレス、ブロックステータス(フラグ)等の付加データを記録するための領域である。
エラーコレクションコードは、ユーザ領域25に記憶されているデータに含まれる誤りを検出し、訂正するためのデータである。
対応論理ブロックアドレスは、1つのブロックに含まれている少なくとも1つのユーザ領域25に有効なデータが格納されているとき、そのブロックが対応付けられている論理ブロックのアドレスを示す。
論理ブロックアドレスは、ホストシステム4から与えられるホストアドレスに基づいて決定されるブロックのアドレスである。一方、フラッシュメモリ2内における実際のブロックのアドレスは、物理ブロックアドレスと称される。
1つのブロックに含まれているいずれのユーザ領域25にも有効なデータが格納されていないときには、そのブロックに含まれている冗長領域26に、対応論理ブロックアドレスは格納されていない。
従って、冗長領域26に対応論理ブロックアドレスが格納されているか否かを判定することにより、その冗長領域26が含まれているブロックのデータが消去されているか否かを判定することができる。冗長領域26に対応論理ブロックアドレスが格納されていないとき、そのブロックは、データが消去された状態となっている。
1つのブロックは、複数のページを含んでいる。フラッシュメモリ2では、データの上書きができない。このため、1つのページに格納されたデータのみを書き換えるときであっても、そのページが含まれたブロック内の全ページに格納されたデータを、再度書き込まなければならない。
つまり、通常のデータ書き換えでは、書き換えるページが含まれるブロックの全ページに格納されたデータが、別の消去されているブロックに書き込まれる。この際、データが変更されないページに格納されているデータは、以前に格納されていたデータがそのまま再度書き込まれる。
上記のようにデータを書き換えるにあたっては、書き換えられたデータは、以前に格納されていたブロックとは異なるブロックに書き込まれる。このため、論理ブロックアドレスと物理ブロックアドレスの間の対応関係は、フラッシュメモリ2にてデータが書き換えられる毎に、動的に変化する。
従って、論理ブロックアドレスと物理ブロックアドレスとの対応関係を管理する必要があり、通常、この対応関係は、アドレス変換テーブルによって管理される。このアドレス変換テーブルは、各ページの冗長領域26に記憶されている対応論理ブロックアドレスに基づいて作成される。なお、このような動的なアドレス管理手法は、フラッシュメモリを用いたメモリシステムでは一般的に行われている手法である。
ブロックステータスは、ブロックの良否を示すフラグである。正常にデータの書き込み等を行うことができないブロックは、不良ブロックと判別され、冗長領域26には、不良ブロックであることを示すブロックステータスが書き込まれる。
このようなフラッシュメモリ2は、コントローラ3から、データ、アドレス情報、ステータス情報、内部コマンド等を受信して、データの読み出し処理、書き込み処理、ブロック消去処理、転送処理等の各処理を行う。
ここで、内部コマンドとは、コントローラ3がフラッシュメモリ2に処理の実行を指示するためのコマンドであり、フラッシュメモリ2は、コントローラ3から与えられる内部コマンドに従って動作する。これに対して、外部コマンドとは、ホストシステム4がフラッシュメモリシステム1に対して処理の実行を指示するためのコマンドである。
コントローラ3は、図1に示すように、マイクロプロセッサ6と、ホストインターフェースブロック7と、ワークエリア8と、バッファ9と、フラッシュメモリインターフェースブロック10と、ECC(エラー・コレクション・コード)ブロック11と、ROM(Read Only Memory)12と、内部クロック源15と、から構成される。これら機能ブロックによって構成されるコントローラ3は、一つの半導体チップ上に集積される。以下に各機能ブロックについて説明する。
マイクロプロセッサ6は、ROM12に記憶されているプログラムに従って、コントローラ3の全体の動作を制御する。例えば、マイクロプロセッサ6は、各種処理等を定義したコマンドセットをワークエリア8から読み出してフラッシュメモリインターフェースブロック10に供給し、フラッシュメモリインターフェースブロック10に処理を実行させる。
内部クロック源15は、水晶発振器等により構成されるクロック源で、コントローラ3の各構成要素の動作の基準となる所定の周波数の内部クロックUCLKを、各構成要素に供給する。
ホストインターフェースブロック7は、ホストシステム4との間の、データ、アドレス情報、ステータス情報、外部コマンド、外部クロックBCLK等の授受を行なう。すなわち、フラッシュメモリシステム1とホストシステム4は、16ビットのバス幅の外部バス13を介して相互に接続される。かかる状態において、ホストシステム4よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を入口としてコントローラ3の内部(例えば、バッファ9)に取り込まれる。また、フラッシュメモリシステム1からホストシステム4に供給されるデータ等は、コントローラ3の内部(例えば、バッファ9等)に一時的に格納され、ホストインターフェースブロック7を出口としてホストシステム4に供給される。なお、ホストインターフェースブロック7とバッファ9との間のデータの授受は、64ビットのバス幅を有するデータバスを介して行われる。
より詳細には、図3に示すように、ホストインターフェースブロック7は、ホストシステム4より供給されるホストアドレス及び外部コマンドを一時的に格納するコマンドレジスタR1、書き込み又は読み出しを行うデータのサイズを格納するセクタ数レジスタR2、書き込み又は読み出しを行うデータの論理アドレスを格納するLBA(Logical Block Addressing)レジスタR3、等を有する。また、ホストインターフェースブロック7は、図3に示すように、書き込まれるデータを一時的に格納する書込FIFO71と、読み出されるデータを一時的に格納する読出FIFO72と、を有する。
書込FIFO71は、図4に示すように、レジスタ部710と、外部クロックカウンタ711と、内部クロックカウンタ712と、デマルチプレクサ713と、検出回路714と、から構成される。
レジスタ部710は、64ビットのレジスタを8個備える(レジスタ0乃至レジスタ7)。つまりレジスタ部710は、1/8セクタ分のデータ(64バイトのデータ)を格納することが出来る。レジスタ部710に格納されるデータは、外部クロックカウンタ711のカウント値により定義されるレジスタ及びビットに書き込まれる。この際、各レジスタに格納されるデータは、外部バス13を介して供給され、16ビットずつ、4回に分けて書き込まれる。また、レジスタ部710は、内部クロックカウンタ712のカウント値により定義されるレジスタから、データバスを介してバッファ9に64ビットずつデータを供給する。
外部クロックカウンタ711は、32進(すなわち5ビット)のバイナリカウンタにより構成される。外部クロックカウンタ711のカウント値は、書き込みを行うレジスタ及び書き込みを行うビット(ビット0〜15、ビット16〜31、ビット32〜47、ビット48〜63、のいずれか)を定義する。より詳細には、カウント値における上位3ビットは、書き込みを行うレジスタを定義し、下位2ビットは、書き込みを行うビットを定義する。
内部クロックカウンタ712は、8進(すなわち3ビット)のバイナリカウンタにより構成される。内部クロックカウンタ712のカウント値は、読み出しを行うレジスタを定義する。
デマルチプレクサ713は、外部バス13を介してホストシステム4から供給されるデータを、外部クロックカウンタ711のカウント値の下位2ビットに応じて、レジスタのいずれかのビット(ビット0〜15、ビット16〜31、ビット32〜47、ビット48〜63、のいずれか)に供給する。
検出回路714は、外部クロックカウンタ711のカウント値の上位3ビットと、内部クロックカウンタ712のカウント値とを監視し、一方が他方に追いついたことを検出する。
検出回路714は、外部クロックカウンタ711のカウント値の上位3ビットが内部クロックカウンタ712のカウント値に追いついた場合には、外部クロックカウンタ711の動作を停止させるとともに、ビジー信号をホストシステム4に供給する。
逆に、内部クロックカウンタ712のカウント値が外部クロックカウンタ711のカウント値の上位3ビットに追いついた場合には、検出回路714は、内部クロックカウンタ712の動作を停止させるとともに、ビジー信号をバッファ9に供給する。
尚、ホストシステム4からレジスタ部720にデータを書き込む処理と、レジスタ部720からバッファへデータを読み出す処理の進行速度を合わせるために、内部クロックを調整(UCLK≒BCLK/4)するようにしてもよい。
読出FIFO72は、図5に示すように、レジスタ部720と、外部クロックカウンタ721と、内部クロックカウンタ722と、マルチプレクサ723と、検出回路724と、から構成される。
レジスタ部720は、64ビットのレジスタを8個備える(レジスタ0乃至レジスタ7)。レジスタ部720は、内部クロックカウンタ722のカウント値により定義されるレジスタに、データバスを介してバッファ9から供給されるデータが、64ビットずつ書き込まれる。また、レジスタ部720に格納されたデータは、外部クロックカウンタ721のカウント値により定義されるレジスタ及びビットから、ホストシステム4により外部バス13を介して、16ビットずつ、4回に分けて読み出される。
外部クロックカウンタ721は、32進(すなわち5ビット)のバイナリカウンタにより構成される。外部クロックカウンタ721のカウント値は、読み出しを行うレジスタ及び読み出しを行うビット(ビット0〜15、ビット16〜31、ビット32〜47、ビット48〜63、のいずれか)を定義する。より詳細には、カウント値における上位3ビットは、読み出しを行うレジスタを定義し、下位2ビットは、読み出しを行うビットを定義する。
内部クロックカウンタ722は、8進(すなわち3ビット)のバイナリカウンタにより構成される。内部クロックカウンタ712のカウント値は、書き込みを行うレジスタを定義する。
マルチプレクサ723は、外部クロックカウンタ721のカウント値の下位2ビットに応じて、レジスタのいずれかのビット(ビット0〜15、ビット16〜31、ビット32〜47、ビット48〜63、のいずれか)のデータを、外部バス13を介してホストシステム4に供給する。
検出回路724は、外部クロックカウンタ721のカウント値の上位3ビットと、内部クロックカウンタ722のカウント値とを監視し、一方が他方に追いついたことを検出する。
検出回路724は、外部クロックカウンタ721のカウント値の上位3ビットが内部クロックカウンタ722のカウント値に追いついた場合には、外部クロックカウンタ721の動作を停止させるとともに、ビジー信号をホストシステム4に供給する。
逆に、内部クロックカウンタ712のカウント値が外部クロックカウンタ721のカウント値の上位3ビットに追いついた場合には、検出回路724は、内部クロックカウンタ722の動作を停止させるとともに、ビジー信号をバッファ9に供給する。
ワークエリア8は、フラッシュメモリ2の制御に必要なデータが一時的に格納される作業領域であり、複数のSRAM(Static Random Access Memory)セルによって構成される。
バッファ9は、フラッシュメモリ2から読み出されたデータ及びフラッシュメモリ2に書き込むべきデータを一時的に蓄積する。すなわち、フラッシュメモリ2から読み出されたデータは、ホストシステム4が受け取り可能な状態となるまでバッファ9に保持され、フラッシュメモリ2に書き込むべきデータは、フラッシュメモリ2が書き込み可能な状態となるまでバッファ9に保持される。
フラッシュメモリインターフェースブロック10は、内部バス14を介して、フラッシュメモリ2とデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。より詳細には、フラッシュメモリインターフェースブロック10は、アドレスレジスタ、コマンドレジスタ、命令処理ブロック等から構成される。
アドレスレジスタは、アクセス先の物理ブロックアドレスを格納するためのレジスタである。物理ブロックアドレスは、フラッシュメモリインターフェースブロック10が実行する一連の制御処理でアクセスするフラッシュメモリ2内のブロックを指定するためのアドレス情報である。
コマンドレジスタは、コマンドセットを構成するシーケンスコマンドを格納するためのレジスタである。このコマンドセットには、コントローラ3内での処理を指示するコマンドや、フラッシュメモリ2への内部コマンド、アドレス情報等の供給を指示するコマンドが含まれている。
命令処理ブロックは、コマンドレジスタに格納されているシーケンスコマンドに従って、フラッシュメモリ2を制御するための内部コマンド、アドレス情報等を出力する。
フラッシュメモリインターフェースブロック10は、命令処理ブロックによって出力される内部コマンド、アドレス情報等をフラッシュメモリ2に供給することにより、フラッシュメモリ2に読み出し、書き込み等を実行させる。
ECCブロック11は、フラッシュメモリ2に書き込むデータに付加されるエラーコレクションコードを生成するとともに、読み出しデータに付加されたエラーコレクションコードに基づいて、読み出したデータに含まれる誤りを検出・訂正する。
ROM12は、マイクロプロセッサ6による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。具体的には、ROM12は、例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムを格納する。
次に、このように構成されるフラッシュメモリシステム1において、ホストシステム4がフラッシュメモリ2にデータを書き込む際の書込FIFO71の動作について、図6に示すタイミングチャートを参照して説明する。
書き込み処理では、ホストシステム4は、ホストインターフェースブロック7のセクタ数レジスタR2に、書き込むデータのサイズを設定し、LBAレジスタR3に、書き込みを行うデータの論理アドレスを設定し、その後、コマンドレジスタR1に、書き込み処理を指示する外部コマンドを設定する。
コントローラ3は、書き込み処理を指示する外部コマンドが、コマンドレジスタR1に設定されると、書き込み処理を開始する。
書き込み処理が開始されると、書込FIFO71の外部クロックカウンタ711がリセットされ、カウント値が0となる。そして、外部クロックBCLKに同期して、書き込むデータが順次書込FIFO71に供給される。
時刻T0では、外部クロックカウンタ711のカウント値が0となり、データは、レジスタ0のビット48〜63に書き込まれる。
時刻T1では、外部クロックカウンタ711のカウント値が1となり、データは、レジスタ0のビット32〜47に書き込まれる。
時刻T2では、外部クロックカウンタ711のカウント値が2となり、データは、レジスタ0のビット16〜31に書き込まれる。
時刻T3では、外部クロックカウンタ711のカウント値が3となり、データは、レジスタ0のビット0〜15に書き込まれる。
時刻T4では、外部クロックカウンタ711のカウント値が4となり、データは、レジスタ1のビット48〜63に書き込まれる。
その後も同様にして、順次、データがレジスタ部710に書き込まれる。
外部クロックカウンタ711がリセットされてから所定の時間が経過した時刻T5において、バッファ9に対するビジー信号の供給が停止される。これに合わせて内部クロックカウンタ712もリセットされ、カウント値が0となり、以後、内部クロックUCLKに同期して、データが順次読み出され、バッファ9に供給される。
時刻T5では、内部クロックカウンタ712のカウント値が0となり、レジスタ0のデータがバッファ9に供給される。
時刻T6では、内部クロックカウンタ712のカウント値が1となり、レジスタ1のデータがバッファ9に供給される。
その後も同様にして、順次、データがバッファ9に供給される。
書き込み先のレジスタが、読み出し元のレジスタに追いついた場合(すなわち、外部クロックカウンタ711の上位3ビットが内部クロックカウンタ712のカウント値に追いついた場合)には、検出回路714は、外部クロックカウンタ711の動作を停止させるとともに、ホストシステム4にビジー信号を供給し、データの供給を一時停止させる。
なお、逆に、読み出し元のレジスタが、書き込み先のレジスタに追いついた場合には、検出回路714は、内部クロックカウンタ712の動作を停止させるとともに、バッファ9にビジー信号を供給し、データの読み出しを一時停止させる。
そして、書き込み先のレジスタが、読み出し元のレジスタに追いついてから、所定の時間が経過すると、検出回路714は、外部クロックカウンタ711の動作を再開させるとともに、ホストシステム4へのビジー信号の供給を停止する。これにより、レジスタへのデータ書き込みが再開される。
書込FIFO71からバッファ9に読み出されたデータは、フラッシュメモリ2が書き込み可能な状態になるまでバッファ9に保持される。そして、該データは、フラッシュメモリ2が書き込み可能な状態になると、フラッシュメモリインターフェースブロック10及び内部バスを介してフラッシュメモリ2の所望のページに書き込まれる。
次に、フラッシュメモリシステム1において、ホストシステム4がフラッシュメモリ2からデータを読み出す際の読出FIFO72の動作について、図7に示すタイミングチャートを参照して説明する。
ホストシステム4は、ホストインターフェースブロック7のセクタ数レジスタR2に、読み出すデータのサイズを設定し、LBAレジスタR3に、読み出すデータの論理アドレスを設定し、その後、コマンドレジスタR1に、読み出し処理を指示する外部コマンドを設定する。
コントローラ3は、読み出し処理を指示する外部コマンドが、コマンドレジスタR1に設定されると、読み出し処理を開始する。
読み出し処理では、マイクロプロセッサ6は、論理アドレスを物理アドレスへと変換する。そして、フラッシュメモリ2の該物理アドレスに格納されたデータは、フラッシュメモリインターフェースブロック10及び内部バスを介してバッファ9に読み出される。バッファ9に読み出されたデータは、以下で説明する読出FIFO72の動作により、バッファ9からホストシステム4に供給される。
はじめに、読出FIFO72の内部クロックカウンタ722がリセットされ、カウント値が0となる。そして、内部クロックUCLKに同期して、読み出すデータが読出読出FIFO72に供給される。
時刻T10では、内部クロックカウンタ722のカウント値が0となり、バッファ9からのデータはレジスタ0に書き込まれる。
時刻T11では、内部クロックカウンタ722のカウント値が1となり、バッファ9からのデータはレジスタ1に書き込まれる。
その後も同様にして、順次、バッファ9からのデータがレジスタに書き込まれる。
内部クロックカウンタ722がリセットされてから所定の時間が経過した時刻T12において、ホストシステムに対するビジー信号の供給を停止する。これに合わせて外部クロックカウンタ721もリセットされ、カウント値が0となり、以後、内部クロックUCLKに同期して、データが順次読み出され、ホストシステム4に供給される。
時刻T12では、外部クロックカウンタ721のカウント値が0となり、レジスタ0のビット48〜63のデータがホストシステム4に供給される。
時刻T13では、外部クロックカウンタ721のカウント値が1となり、レジスタ0のビット32〜47のデータがホストシステム4に供給される。
時刻T14では、外部クロックカウンタ721のカウント値が2となり、レジスタ0のビット16〜31のデータがホストシステム4に供給される。
時刻T15では、外部クロックカウンタ721のカウント値が3となり、レジスタ0のビット0〜15のデータがホストシステム4に供給される。
時刻T16では、外部クロックカウンタ721のカウント値が4となり、レジスタ1のビット48〜63のデータがホストシステム4に供給される。
その後も同様にして、順次、データがホストシステム4に供給される。
読み出し元のレジスタが、書き込み先のレジスタに追いついた場合(すなわち、外部クロックカウンタ721の上位3ビットが内部クロックカウンタ722のカウント値に追いついた場合)には、検出回路724は、外部クロックカウンタ721の動作を停止させるとともに、ホストシステム4にビジー信号を供給し、データの読み出しを一時停止させる。
なお、逆に、書き込み先のレジスタが、読み出し元のレジスタに追いついた場合には、検出回路724は、内部クロックカウンタ722の動作を停止させるとともに、バッファ9にビジー信号を供給し、データの供給を一時停止させる。
そして、読み出し元のレジスタが、書き込み先のレジスタに追いついてから所定の時間が経過すると、検出回路724は、外部クロックカウンタ721の動作を再開させるとともに、ホストシステム4へのビジー信号の供給を停止する。これにより、レジスタからのデータ読み出しが再開される。
尚、バッファ9からホストシステム4への1セクタ分のデータ転送の途中で、読み出し元のレジスタが、書き込み先のレジスタに追いつくのを避けるためには、読み出しFIFO72に最初に蓄積しておくデータの容量を増やして、ホストシステムへのビジー信号の供給を停止するタイミングを遅くすればよい。又、読み出しFIFO72の容量は、最初に蓄積しておくデータの容量を考慮して設定するのが好ましい。
以上で説明したように、本実施の形態のフラッシュメモリシステム1では、書込FIFO71及び読出FIFO72を介することによって、書き込み処理におけるホストシステム4からのデータ書き込み、及び読み出し処理におけるホストシステム4によるデータ読み出しを、ホストシステム4の動作クロックである外部クロックBCLKに同期して実行することが可能である。
また、本実施の形態のフラッシュメモリシステム1では、書込FIFO71及び読出FIFO72が、デマルチプレクサ713及びマルチプレクサ723を備える。これにより、ホストシステム4とフラッシュメモリシステム1とを接続する外部バス13のビット幅と、コントローラ内のデータバスのビット幅が異なる場合でも、円滑なデータの送受信を実現できる。
上記の実施の形態では、外部バス13のバス幅とコントローラ3内部のデータバスのバス幅とが異なる(それぞれ16ビット、64ビット)場合を例に説明したが、外部バス13のバス幅とコントローラ3内部のデータバスのバス幅とは、同じであってもよい。
上記の実施の形態では、書込FIFO71及び読出FIFO72が、いずれも8個のレジスタから構成される場合を例に説明したが、各FIFOを構成するレジスタの数は8個よりも多くても、少なくても構わない。また、書込FIFO71と読出FIFO72とでレジスタの数が異なっていてもよい。
また、上記の実施の形態では、書込FIFO71及び読出FIFO72が、いずれも64ビットのレジスタを複数備える場合を例に説明したが、FIFOが備えるレジスタのビット数は、64ビットに限らず、これよりも多くても、少なくても構わない。
尚、書き込みFIFO71と読み出しFIFO72の容量は、特に限定されないが、1セクタより小さい容量であっても、ホストシステム4とバッファ9との間のデータ転送を円滑に行うことが出来る。
上記の実施の形態では、書込FIFO71のデータの取り込み及び読出FIFO72のデータの出力が、常時、外部クロックBCLKに同期して実行される場合を例に説明した。しかし、書込FIFO71のデータの取り込み及び読出FIFO72のデータの出力は、外部クロックBCLKと内部クロックUCLKとから選択されたいずれか一方のクロックに同期して実行されてもよい。
外部クロックBCLKと内部クロックUCLKとを選択可能にすることにより、ホストシステム4が外部クロックBCLKを供給できない構成である場合等においても、本発明のメモリコントローラによるフラッシュメモリへのアクセスが可能となる。
本発明に係るフラッシュメモリシステムを概略的に示すブロック図である。 フラッシュメモリのアドレス空間の構造を概略的に示す図である。 ホストインターフェースブロックの構成を示すブロック図である。 書込FIFOの構成を示すブロック図である。 読出FIFOの構成を示すブロック図である。 書き込み処理の実行時における書込FIFOの動作を示すタイミングチャートである。 読み出し処理の実行時における読出FIFOの動作を示すタイミングチャートである。
符号の説明
1 フラッシュメモリシステム
2 フラッシュメモリ
3 コントローラ
4 ホストシステム
6 マイクロプロセッサ
7 ホストインターフェースブロック
8 ワークエリア
9 バッファ
10 フラッシュメモリインターフェースブロック
11 ECCブロック
12 ROM
13 外部バス
14 内部バス
15 内部クロック源
25 ユーザ領域
26 冗長領域

Claims (3)

  1. フラッシュメモリを記憶媒体として利用するホストシステムからの命令に応答して前記フラッシュメモリへのアクセスを制御するメモリコントローラであって、
    複数セクタの記憶容量を有し、前記メモリコントローラの内部における動作の基準となる第2のクロックに同期して動作し、前記フラッシュメモリに書き込まれるデータ及び前記フラッシュメモリから読み出されたデータが格納されるバッファメモリと、
    記憶容量が1セクタ未満であり、前記ホストシステムが前記フラッシュメモリに格納しようとするデータを、前記ホストシステムの動作の基準となる第1のクロックに同期して前記ホストシステムから受け取り、該受け取ったデータを前記第2のクロックに同期して前記バッファメモリに対して出力する第1のFIFO(First In First Out)と、
    記憶容量が1セクタ未満であり、前記ホストシステムが前記フラッシュメモリから読み出そうとするデータを、前記第2のクロックに同期して前記バッファメモリから受け取り、該受け取ったデータを前記第1のクロックに同期して前記ホストシステムに対して出力する第2のFIFOとを備え、
    前記ホストシステムが前記フラッシュメモリに格納しようとするデータは、第1のFIFOが入出力動作を並行して行うことにより、前記バッファメモリに蓄積され、
    前記ホストシステムが前記フラッシュメモリから読み出そうとするデータは、第2のFIFOが入出力動作を並行して行うことにより、前記バッファメモリから前記ホストシステムに転送される
    ことを特徴とするメモリコントローラ。
  2. 前記ホストシステムと前記メモリコントローラとは、nビットのバス幅を有する外部バスにより接続され、
    前記第1のFIFOは、前記ホストシステムからnビットずつデータを受け取り、前記バッファメモリに対してn×mビットずつデータを出力し、
    前記第2のFIFOは、前記バッファメモリからn×mビットずつデータを受け取り、前記ホストシステムに対してnビットずつデータを出力する
    ことを特徴とする請求項1に記載のメモリコントローラ。
  3. 請求項1又は2に記載のメモリコントローラと、フラッシュメモリと、
    から構成される、
    ことを特徴とするフラッシュメモリシステム。
JP2005252911A 2005-08-31 2005-08-31 メモリコントローラ及びフラッシュメモリシステム Active JP4254932B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005252911A JP4254932B2 (ja) 2005-08-31 2005-08-31 メモリコントローラ及びフラッシュメモリシステム
US11/513,630 US20070047308A1 (en) 2005-08-31 2006-08-31 Memory controller, flash memory system and control method for flash memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005252911A JP4254932B2 (ja) 2005-08-31 2005-08-31 メモリコントローラ及びフラッシュメモリシステム

Publications (2)

Publication Number Publication Date
JP2007066118A JP2007066118A (ja) 2007-03-15
JP4254932B2 true JP4254932B2 (ja) 2009-04-15

Family

ID=37803842

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005252911A Active JP4254932B2 (ja) 2005-08-31 2005-08-31 メモリコントローラ及びフラッシュメモリシステム

Country Status (2)

Country Link
US (1) US20070047308A1 (ja)
JP (1) JP4254932B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101456593B1 (ko) * 2007-06-22 2014-11-03 삼성전자주식회사 플래시 메모리 장치를 포함하는 메모리 시스템
JP5442230B2 (ja) * 2008-09-08 2014-03-12 株式会社メガチップス メモリシステム
US8266369B2 (en) * 2009-12-18 2012-09-11 Nxp B.V. Flash memory interface
JP5546356B2 (ja) * 2010-05-31 2014-07-09 三菱電機株式会社 メモリ装置及び信号処理装置
JP2013061795A (ja) * 2011-09-13 2013-04-04 Toshiba Corp 記憶装置、コントローラ、およびリードコマンド実行方法
TWI569284B (zh) * 2015-05-27 2017-02-01 慧榮科技股份有限公司 記憶體控制器與記憶體模組

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69615471T2 (de) * 1995-07-07 2002-05-08 Sun Microsystems, Inc. Verfahren und Vorrichtung zur dynamischen Berechnung von Füllungsgraden eines synchronen Fifo-Puffer
US6687255B1 (en) * 2000-03-21 2004-02-03 Lsi Logic Corporation Data communication circuit having FIFO buffer with frame-in-FIFO generator

Also Published As

Publication number Publication date
US20070047308A1 (en) 2007-03-01
JP2007066118A (ja) 2007-03-15

Similar Documents

Publication Publication Date Title
KR101425957B1 (ko) 이씨씨 제어 회로 및 그것을 포함하는 멀티채널 메모리시스템
JP4744867B2 (ja) データをセクタ単位にランダムに入出力することができるフラッシュメモリシステム
US6556504B2 (en) Nonvolatile semiconductor memory device and data input/output control method thereof
JP4373943B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4254932B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4177360B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2007094639A (ja) メモリコントローラ及びフラッシュメモリシステム
JP2006338083A (ja) メモリコントローラ
JP4273106B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4655034B2 (ja) メモリコントローラ及びフラッシュメモリシステム並びにフラッシュメモリの制御方法
JP4177292B2 (ja) メモリンコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4670370B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4697146B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP3934659B1 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4640366B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4177301B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2005292925A (ja) メモリコントローラ、フラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4645043B2 (ja) メモリーコントローラ、不揮発性記憶装置および不揮発性メモリシステム
JP4710274B2 (ja) メモリ装置、メモリ装置の制御方法およびデータ処理システム
JP2006178909A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4304167B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4273038B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリのデータ転送方法
JP4273109B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP2008070919A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2003296199A (ja) 記憶装置、データ処理方法及びデータ処理プログラム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081017

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081028

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081209

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090120

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120206

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4254932

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120206

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130206

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140206

Year of fee payment: 5