JP2006178909A - メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 - Google Patents

メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 Download PDF

Info

Publication number
JP2006178909A
JP2006178909A JP2004374259A JP2004374259A JP2006178909A JP 2006178909 A JP2006178909 A JP 2006178909A JP 2004374259 A JP2004374259 A JP 2004374259A JP 2004374259 A JP2004374259 A JP 2004374259A JP 2006178909 A JP2006178909 A JP 2006178909A
Authority
JP
Japan
Prior art keywords
program
flash memory
bios
host system
reading
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2004374259A
Other languages
English (en)
Inventor
Takeshi Koyaizu
剛 小柳津
Yukio Terasaki
幸夫 寺崎
Shunichi Hanabusa
俊一 花房
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 JP2004374259A priority Critical patent/JP2006178909A/ja
Publication of JP2006178909A publication Critical patent/JP2006178909A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】 NAND型フラッシュメモリで構成されたフラッシュメモリに、起動時に実行されるBIOS等のプログラムを記憶させた情報処理装置を、容易に構成できるようにする。
【解決手段】 フラッシュメモリ11には、BIOSとBIOSをDRAMにロードするプログラムのイニシャルバイオスローダとが格納されている。起動時にメモリコントローラ20がイニシャルバイオスローダをバッファ25にロードする。ホストシステムのCPUが、イニシャルバイオスローダのコマンドに従い、BIOSを読出すコマンドをメモリコントローラ20に与える。そのコマンドに従い、メモリコントローラ20は、BIOSを実行順序にFIFOバッファ26に読出す。BIOSは、実行順序にFIFOバッファ26からDRAMに転送され、BIOSがCPUにより実行される。
【選択図】 図1

Description

本発明は、メモリコントローラ、そのメモリコントローラを備えるフラッシュメモリシステム、及びフラッシュメモリの制御方法に関する。
近年、メモリーカードやシリコンディスクといったメモリシステムにて使用される半導体メモリに、フラッシュメモリが広く採用されている。フラッシュメモリは、不揮発性メモリの一種である。フラッシュメモリに格納されたデータは、電力が供給されていないときでも保持されていることが要求される。
NAND型フラッシュメモリは、上記のメモリシステムで特に多く用いられるフラッシュメモリの一種である。NAND型フラッシュメモリに含まれている複数のメモリセルのそれぞれは、他のメモリセルとは独立して、論理値“1”を示すデータが格納されている消去状態から、論理値“0”を示すデータが格納されている書込状態へと変化することができる。これとは対照的に、書込状態から消去状態へと変化するときには、各メモリセルは他のメモリセルと独立して変化することができない。このときには、ブロックと称される予め定められた数のメモリセルが、全て同時に消去状態になる。この一括消去動作は、一般的に、“ブロック消去”と称されている。
NAND型フラッシュメモリに対する書込処理若しくは読出処理は、ページと称される予め定められた数のメモリセル単位で処理が行なわれる。消去処理の単位であるブロックは複数のページで構成されている。
NAND型フラッシュメモリは、上記のような特徴を有するため、CPU(Central Processing Unit)を備えたシステムでは、起動時に実行されるBIOS(Basic Input Output System)等のプログラムを保存する場合には、通常、任意のアドレスを指定した読出しが可能なNOR型フラッシュメモリに保存していた。しかし、NOR型フラッシュメモリは、NAND型フラッシュメモリに比べて価格が高いため、価格を考慮すればNAND型フラッシュメモリを用いることが好ましかった。
上記課題を解決するため、下記特許文献1では、起動時に実行されるBIOS等のプログラムをNAND型フラッシュメモリに保存し、そのプログラムをRAM(Random Access Memory)にロードして実行する提案がなされている。
特表2003−519870号公報
特許文献1に示された起動時の処理では、CPUがNAND型フラッシュメモリから出力されるコマンドを直接読込み、その直接読み込んだコマンドに従って、CPUは、NAND型フラッシュメモリに記憶されているBIOS等のプログラムをRAMにロードしている。この処理では、CPUがNAND型フラッシュメモリに直接アクセスしなければならないため、回路構成やNAND型フラッシュメモリの仕様等についての制約が多くなっている。従って、NOR型フラッシュメモリにBIOS等のプログラムを保存していた装置に、適用するのは容易でなかった。
そこで、本発明は、起動時に実行されるBIOS等のプログラムをNAND型フラッシュメモリに保存したシステムを容易に実現することができるメモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法を提供することを目的とする。
上記目的を達成するために、本発明の第1の観点に係るメモリコントローラは、
起動時に、フラッシュメモリに記憶されている第1のプログラムを読み出す第1の読出し手段と、
ホストシステム側からランダムアクセスが可能で、前記第1の読出し手段によって読み出した前記第1のプログラムを保持するデータ保持手段と、
前記ホストシステム側からの要求に応じて、フラッシュメモリに記憶されている第2のプログラムをページ単位で読み出す第2の読出し手段と、
前記第2の読出し手段が読み出した前記第2のプログラムを保持した後、前記ホストシステム側に対してページ単位で転送するデータ転送手段とを備え、
前記データ保持手段が、前記第1のプログラムを保持した後に、前記第2の読出し手段が動作可能になるように構成されていることを特徴とする。
このような構成を採用することにより、ホストシステムがフラッシュメモリに直接アクセスしなくても、起動時に実行されるBIOS等のプログラムを取得できるので、フラッシュメモリの回路構成や仕様等についての制約が多くなることを抑制できる。
尚、前記第1のプログラムは、前記データ保持手段にアクセスした前記ホストシステムに前記要求を発生させるコマンドが記載されていてもよい。
また、前記第2の読出し手段が、前記第2のプログラムに記述されているコマンドの実行順序に従って前記第2のプログラムを読み出してもよい。
また、前記第1のプログラムに基づいて前記データ転送手段が、前記第2のプログラムの転送処理を実行してもよい。
また、前記フラッシュメモリの記憶空間の前記第1のプログラム及び前記第2のプログラムが記憶されている領域には、前記ホストシステム側から与えられてもよい。
また、前記第2のプログラムが、BIOSであってもよい。
また、前記データ転送手段が、ATAインターフェースを介して前記第2のプログラムを前記ホストシステムに転送してもよい。
上記目的を達成するために、本発明の第2の観点に係るフラッシュメモリシステムは、前記本発明の第1の観点に係るメモリコントローラとフラッシュメモリを備えることを特徴とする。
上記目的を達成するために、本発明の第3の観点に係るフラッシュメモリの制御方法は、
起動時に、フラッシュメモリに記憶されている第1のプログラムを読み出す第1の読出し処理と、
該第1の読出し処理によって読み出した前記第1のプログラムを、ホストシステム側からランダムアクセスが可能なデータ保持手段に書き込む処理と、
前記ホストシステム側からの要求に応じて、フラッシュメモリに記憶されている第2のプログラムをページ単位で読み出す第2の読出し処理と、
該第2の読出し処理によって読み出した前記第2のプログラムを保持した後、前記ホストシステム側に対してページ単位で転送するデータ転送処理とを含み、
前記データ保持手段に前記第1のプログラムが書き込まれた後に、前記第2の読出し処理が実行されることを特徴とする。
尚、前記第1のプログラムは、前記データ保持手段にアクセスした前記ホストシステムに前記要求を発生させるコマンドが記載されていてもよい。
また、前記第2のプログラムが、前記第2のプログラムに記述されているコマンドの実行順序に従って読み出されてもよい。
また、前記第1のプログラムに基づいて、前記第2のプログラムのデータ転送処理が実行されてもよい。
また、フラッシュメモリの記憶空間の前記第1のプログラム及び前記第2のプログラムが記憶されている領域に、前記ホストシステム側から与えられる論理アドレスが割当てられていなくてもよい。
また、前記第2のプログラムが、BIOSであってもよい。
また、前記第2のプログラムが、ATAインターフェースを介して前記ホストシステムに転送されてもよい。
NAND型フラッシュメモリで構成されたフラッシュメモリに、起動時に実行されるBIOS等の第2のプログラムを記憶させた情報処理装置を、容易に構成することができる。又、ホストシステムの起動が終了した後は、情報処理装置に組み込まれたフラッシュメモリシステムを、一般的な記憶デバイスと同様に取り扱うことができるので、省システム化を図ることもできる。
以下、図面に基づき、本発明の実施の形態について詳細に説明する。
図1は、本発明の実施形態に係るフラッシュメモリシステム10を、概略的に示すブロック図である。
図1に示したように、フラッシュメモリシステム10は、フラッシュメモリ11と、それを制御するメモリコントローラ20とで構成されている。このフラッシュメモリシステム10は、通常、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとするホストシステムである各種情報処理装置に内蔵される。
以下に、フラッシュメモリ11及びメモリコントローラ20の詳細と、フラッシュメモリシステム10の動作とを説明する。
[フラッシュメモリ11の説明]
このフラッシュメモリシステム10において、データが記憶されるフラッシュメモリ11は、NAND型フラッシュメモリで構成されている。NAND型フラッシュメモリは、ストレージデバイスへの用途として(ハードディスクの代わりになるものとして)開発された不揮発性メモリである。このNAND型フラッシュメモリは、ランダムアクセスを行なうことができず、書込みと読出しはページ単位で、消去はブロック単位で行なわれる。又、データの上書きができないので、データを書込むときは、消去されている領域にデータの書込みが行なわれる。
NAND型フラッシュメモリは、このような特徴を有するため、通常、データの書替えを行なう場合には、ブロック消去されている消去済ブロックに新たなデータ(書替え後のデータ)を書込み、古いデータ(書替え前のデータ)が書込まれていたブロックを消去するという処理を行なっている。
このようなデータの書替を行なった場合、書替後のデータは、書替前と異なるブロックに書込まれるため、ホストシステム側から与えられる論理アドレスと、フラッシュメモリ11内での物理アドレスとの対応関係は、データを書替える毎に動的に変化する。従って、フラッシュメモリ11にアクセスするときには、通常、論理アドレスと物理アドレスとの対応関係を示したアドレス変換テーブルが作成され、このアドレス変換テーブルを用いて、フラッシュメモリ11に対するアクセスが行なわれる。
図2は、ブロックとページの関係を示す説明図である。
上記ブロックとページの構成は、フラッシュメモリ11の仕様によって異なるが、一般的なフラッシュメモリでは、図2(a)に示したように、1ブロックが32ページ(P0〜P31)で構成され、各ページが512バイトのユーザー領域と16バイトの冗長領域で構成されている。又、記憶容量の増加に伴い、図2(b)に示したように、1ブロックが64ページ(P0〜P63)で構成され、各ページが2048バイトのユーザー領域と64バイトの冗長領域で構成されているものも提供されている。
ここで、ユーザー領域は、主に、ホストシステムから供給されるデ―タが記憶される領域であり、冗長領域は、誤り訂正符号、対応論理アドレス情報及びブロックステータス等の付加データが記憶される領域である。誤り訂正符号は、ユーザー領域に記憶されているデータに含まれる誤りを検出、訂正するための付加データであり、後述するECCブロックによって生成される。
対応論理アドレス情報は、物理ブロックにデータが記憶されている場合に書込まれ、その物理ブロックに記憶されているデータの論理アドレスに関する情報を示している。尚、物理ブロックにデータが記憶されていない場合は、対応論理アドレス情報が書込まれないので、対応論理アドレス情報が書込まれているか否かで、そのブロックが消去済ブロックであるか否かを判断することができる。つまり、対応論理ブロックアドレスが書込まれていない場合は、消去済ブロックであると判断される。
ブロックステータスは、その物理ブロックが不良ブロック(正常にデータの書込み等を行なうことができない物理ブロック)であるか否かを示すフラグであり、その物理ブロックが不良ブロックであると判断された場合には、不良ブロックであることを示すフラグが設定される。
次に、フラッシュメモリ11の回路構成について説明する。
一般的なNAND型フラッシュメモリは、書込みデータ若しくは読出しデータを保持するためのレジスタと、データを記憶するメモリセルアレイによって構成されている。メモリセルアレイは、複数のメモリセルが直列に接続されたメモリセル群を複数備えており、ワード線によって、メモリセル群の特定のメモリセルが選択される。このワード線によって選択されたメモリセルとレジスタの間で、データの複写(レジスタからメモリセルへの複写、若しくはメモリセルからレジスタへの複写)が行なわれる。
メモリセルアレイを構成するメモリセルは、2つのゲートを備えたMOSトランジスタで構成されている。ここで、上側のゲートはコントロールゲートと、下側のゲートはフローティングゲートと呼ばれており、フローティングゲートに電荷(電子)を注入したり、フローティングゲートから電荷(電子)を排出したりすることによって、データの書込みや消去を行っている。
フローティングゲートは、周囲を絶縁体で囲まれているので、注入された電子は長期間にわたって保持される。フローティングゲートに電子を注入するときは、コントロールゲートが高電位側となる高電圧を印加して電子を注入し、フローティングゲートから電子を排出するときは、コントロールゲートが低電位側となる高電圧を印加して電子を排出する。フローティングゲートに電子が注入されている状態(書込状態)が、論理値"0"のデータに対応し、フローティングゲートから電子が排出されている状態(消去状態)が、論理値"1"のデータに対応する。
[メモリコントローラ20の説明]
メモリコントローラ20は、ホストインターフェースブロック21と、マイクロプロセッサ22と、フラッシュメモリインターフェースブロック23と、ECC(エラー・コレクション・コード)ブロック24と、バッファ25と、FIFO(First In First Out)バッファ26とから構成される。これら機能ブロックによって構成されるメモリコントローラ20は、一つの半導体チップ上に集積されている。以下に、各機能ブロックの機能を説明する。
マイクロプロセッサ22は、メモリコントローラ20を構成する各機能ブロック全体の、動作を制御する機能ブロックである。又、論理アドレス(フラッシュメモリシステム10に対して与えられるアドレス)と物理アドレス(フラッシュメモリ11内のアドレス)の対応関係を示す変換テーブルは、マイクロプロセッサ22の制御の下、SRAM(Static Random Access Memory)で構成された作業領域(図示せず)に作成される。
ホストインターフェースブロック21は、コンパニオンチップ(Companion Chip)30とバッファ25、又はコンパニオンチップ30とFIFOバッファ26との間で行われるデータの授受を制御する機能ブロックである。
ここで、コンパニオンチップ30は、SRAM(Static Random Access Memory)用インターフェース31とATA(AT Attachment)インターフェース32を提供するチップである。
バッファ25は、コンパニオンチップ30によって提供されるSRAM用インターフェース31を介して、ホストシステム内の回路と接続され、FIFOバッファ26は、コンパニオンチップ30によって提供されるATAインターフェース32を介して、ホストシステム内の回路と接続される。
ホストインターフェースブロック21は、SRAM用インターフェース31を介して供給される制御信号やアドレス信号に基づいて、バッファ25の動作を制御する。バッファ25は、SRAMで構成されており、SRAM用インターフェース31側からのランダムアクセス(アドレスを指定した読み書き)が可能な構成になっている。
更に、ホストインターフェースブロック21は、ATAインターフェース32から供給される論理アドレス、セクタ数及び外部コマンド等を保持するレジスタや、エラーが発生した場合にセットされるエラーレジスタ(図示せず)を有している。ホストインターフェースブロック21は、ATAインターフェース32から供給される論理アドレス、セクタ数及び外部コマンド等の情報や制御信号に基づいて、FIFOバッファ26の動作を制御する。FIFOバッファ26は、ホストインターフェースブロック21の制御の下、ATAインターフェース32側に対してページ単位でデータを送受信する。
フラッシュメモリインターフェースブロック23は、フラッシュメモリ11に対するアクセスを制御する機能ブロックであり、フラッシュメモリ11とバッファ25間、及びフラッシュメモリ11とFIFOバッファ26間のデータの送受信は、フラッシュメモリインターフェースブロック23の制御の下に行われる。
フラッシュメモリインターフェースブロック23は、複数のレジスタ(図示せず)を備え、この複数のレジスタに内部コマンドを実行する際に必要な情報が設定される。この複数のレジスタに、内部コマンドを実行する際に必要な情報(アドレス情報、アクセスするページ数等)が設定され、その情報に基づいて処理が実行される。ここで、「内部コマンド」とは、メモリコントローラ20からフラッシュメモリ11に与えられるコマンドである。一方、ATAインターフェース32側から与えられるコマンドは「外部コマンド」と言う。
ECCブロック24は、フラッシュメモリ11に書込まれるデータに付加されるエラーコレクションコードを生成するブロックである。このエラーコレクションコードは、通常、フラッシュメモリの冗長領域に書込まれる。フラッシュメモリ11からデータを読み出すときは、データと共に読み出されるエラーコレクションコードに基づいて、読み出したデータに含まれる誤りの検出と訂正が、ECCブロック24によって行われる。
[フラッシュメモリシステム10の動作説明]
図3は、フラッシュメモリシステム10の動作を説明するための図であり、フラッシュメモリシステム10を組み込んだホストシステム40の要部の構成を示している。
このホストシステム40は、種々の情報を処理する情報処理装置であり、プログラム等によって与えられるコマンドを実行するCPU(Central Processing Unit)41を中心に回路が構成されている。図3には、フラッシュメモリシステム10の動作を説明するために必要な、CPU41、コンパニオンチップ30及びDRAM(Dynamic Random Access Memory)42を図示している。フラッシュメモリシステム10についても、バッファ25、FIFOバッファ26、及びフラッシュメモリ11だけを簡略化して図示している。
CPU41とコンパニオンチップ30とは、バス43を介して接続されている。DRAM42は、コンパニオンチップ30のDRAM用インターフェース44に接続されている。CPU41は、コンパニオンチップ30を介してフラッシュメモリシステム10やDRAM42にアクセスする。
図4は、フラッシュメモリ11に記憶されている情報を示す説明図である。
フラッシュメモリ11の記憶領域は、属性情報等のシステム情報が記憶されている領域(SYS)11aと、第2のプログラムであるBIOS(Basic Input Output System)をDRAM42にロードするための第1のプログラムであるイニシャルバイオスローダーが記憶されている領域(IBL)11bと、BIOSが記憶されている領域(BIOS)11cと、OS(Operating System)等のプログラムや各種データが記憶されるデータ領域(DATA)11dに区分されている。ホストシステム40の起動時に、イニシャルバイオスローダーは、バッファ25にロードされ、BIOSは、FIFOバッファ26を介してDRAM42にロードされる。
ここで、起動時の処理について説明する。
図5は、起動時の処理を示すフローチャートである。
まず、ホストシステム40が起動するときに、メモリコントローラ20がリセットされる(ステップ1)。メモリコントローラ20がリセットされると、マイクロプロセッサ22がメモリコントローラ20内の初期化等の第1の起動処理を開始する。この第1の起動処理では、更に、フラッシュメモリ11に記憶されているイニシャルバイオスローダーが、バッファ25にロードされる(ステップ2)。
イニシャルバイオスローダーが、全てバッファ25にロードされると、CPU41に対するリセットが解除される(ステップ3)。つまり、CPU41は、ホストシステム40の起動開始からイニシャルバイオスローダーのロードが終了するまで、リセット状態になっている。
CPU41に対するリセットが解除されると、CPU41はホストシステム40内の初期化等の第2の起動処理を開始する。この第2の起動処理では、CPU41がバッファ25に対するアクセスを開始し、イニシャルバイオスローダーに記述されているコマンドを実行する。このコマンドでは、CPU41が、DRAM42とFIFOバッファ26にアクセスすることができるようにするために、DRAM用インターフェース44とATAインターフェース32の初期化が行われる(ステップ4)。
続いて、CPU41は、イニシャルバイオスローダーに記述されているコマンドに従って、フラッシュメモリ11内のBIOSを読み出すためのコマンド(以下、このBIOSを読み出すためのコマンドを、バイオスロードコマンドと言う)を、ホストインターフェースブロック21内のレジスタに設定する。つまり、バイオスロードコマンドが、ATAインターフェース32を介してフラッシュメモリシステム10(フラッシュメモリシステム10内のメモリコントローラ20)に与えられる。
このバイオスロードコマンドが与えられると、マイクロプロセッサ22は、フラッシュメモリインターフェースブロック23内のレジスタに、内部読出しコマンド、アドレス等を設定する。この設定に従って、フラッシュメモリ11に対する読出し処理が開始されると、フラッシュメモリ11内のBIOSが、その実行順序に従ってFIFOバッファ26に読み出される。つまり、マイクロプロセッサ22は、フラッシュメモリ11内のBIOSが、コマンドを実行する際の順序で読み出されるように、読出し先のアドレス(フラッシュメモリ11内の物理アドレス)を設定する。FIFOバッファ26に読み出されたBIOSは、CPU41の制御の下、FIFOバッファ26からDRAM42に転送される。つまり、FIFOバッファ26からATAインターフェース32側に出力されたデータが、DRAM42に書込まれる(ステップ5)。
尚、上記のようにコマンドを実行する際の順序でBIOSを読み出すため、例えば、読み出す順序を記述したロード管理情報を、フラッシュメモリ11内に書込んでおき、このロード管理情報に基づいて、読出し先のアドレス(フラッシュメモリ11内の物理アドレス)を設定すればよい。
読み出す順序を物理ブロック単位で管理する場合(各物理ブロックについては、先頭ページから順番にプログラムが書込まれている場合)、ロード管理情報には、読み出す物理ブロックの物理アドレスを、読み出す順番で記述すればよい。又、領域11c内の良品の物理ブロック(不良ブロックを除いた物理ブロック)に、物理アドレスの順番でBIOSを書込み、物理アドレスの順番とコマンドを実行する順序が一致するようにすれば、上記ロード管理情報を用いることなくコマンドを実行する順序でBIOSを読み出すことができる。この場合、物理アドレスの順番でBIOSを読み出せば、コマンドを実行する順序でBIOSが読み出される。この際、不良ブロックの物理アドレスとBIOSのプログラム容量(例えば、BIOSが書込まれている物理ブロックのブロック数等)をフラッシュメモリ11内に書込んでおくことが好ましい。又、BIOSが書込まれている先頭の物理ブロックに先頭であることを示す情報を書込み、最後の物理ブロックに最後であることを示す情報を書込んでもよい。
BIOSが記憶されている領域11cは、ATAインターフェース32を介してフラッシュメモリシステム10(フラッシュメモリシステム10内のメモリコントローラ20)に与えられる読出しコマンド及び書込みコマンドでは、アクセスできないようにしておくことが好ましい。
例えば、上記のようなバイオスロードコマンドを設定し、バイオスロードコマンド以外のコマンドでは、BIOSが記憶されている領域11cにアクセスできないように設定する。つまり、読出しコマンド及び書込みコマンドと共に与えられる論理アドレスが、BIOSが記憶されている領域11cに割当てられないように、論理アドレスと物理アドレスの対応関係を設定することが望ましい。
フラッシュメモリ11内に記憶されているBIOSが、全てDRAM42にロードされると、ジャンプコマンドが実行される(ステップ6)。ジャンプコマンドのジャンプ先は、DRAM42にロードされているBIOSの先頭アドレスに対応する。尚、ジャンプコマンドにより、イニシャルバイオスローダーに記述されているコマンドの処理は終了する。
ジャンプコマンドの実行後、CPU41は、DRAM42にロードされているBIOSの先頭アドレスから順番にコマンドの処理を続行する。BIOSに記述されているコマンドを実行することにより、ホストシステム40を構成する周辺デバイスの診断や初期化が行われる(ステップ7)。つまり、イニシャルバイオスローダーでは、フラッシュメモリ11内に記憶されているBIOSをDRAM42にロードするために必要な初期化だけが行われ、イニシャルバイオスローダーで初期化されていなかった周辺デバイスは、BIOSに記述されているコマンドの実行により、初期化される。
周辺デバイスの初期化が終了すると、イニシャルプログラムローダー(Initial Program Loader)が起動し、マスターブートレコード(Master Boot Record:MBR)に記憶されているパーティション情報やプログラムが読み出される(ステップ8)。
ここで、マスターブートレコードがフラッシュメモリ11のデータ領域11d内のページに割当てられている場合、そのページ書き込まれているパーティション情報やプログラムは、FIFOバッファ26を介してDRAM42に読み出される。続いて、パーティション情報に記述されている情報に基づいて起動するOSに対応するブートセクタ(Boot Sector)が、DRAM42に読み出される。ブートセクタに記述されているプログラムに基づいて、OSの起動が開始される(ステップ9)。
ブートセクタがフラッシュメモリ11のデータ領域11d内のページに割当てられている場合、そのページ書き込まれているプログラムは、FIFOバッファ26を介してDRAM42に読み出される。
上記処理で、マイクロプロセッサ22は、SRAM用インターフェース31を介してバッファ25にアクセスする場合と、ATAインターフェース32を介してFIFOバッファ26にアクセスする場合とがある。従って、メモリコントローラ20又はメモリコントローラ20を含むフラッシュメモリシステム10は、バッファ25を活性化状態にする第1のチップイネーブル信号とFIFOバッファ26を活性化状態にする第2のチップイネーブル信号を受け取るための入力端子(制御信号の入力端子)とを、備えていることが好ましい。
第1のチップイネーブル信号と第2のチップイネーブル信号受け取るための入力端子を設けることにより、フラッシュメモリシステム10は、CPU41から、SRAMとIOデバイス(例えば、ATAインターフェース32に接続されたハードディスクのようなデバイス)として認識される。
起動時にCPU41がNOR型フラッシュメモリに記憶されているBIOSを読み出す構成のホストシステムで、NOR型フラッシュメモリの代わりに上記フラッシュメモリシステム10を組み込む場合には、NOR型フラッシュメモリを活性化状態にするためのチップイネーブル信号を、上記第1のチップイネーブル信号に割当てることにより、上記フラッシュメモリシステム10への置き換えを容易に実現することができる。
上記OSの起動が終了した後、ホストシステム40に組み込まれたフラッシュメモリシステム10は、ATAインターフェース32に接続された記憶デバイスとして使用される。ATAインターフェース32に接続された記憶デバイスとして使用されるときには、ホストインターフェースブロック21内のレジスタに論理アドレス、セクタ数、及びコマンド等を書き込むことにより、フラッシュメモリ11のデータ領域11dに対して、データの書込みや読出しを行うことができる。このデータの書込みや読出しでは、ATAインターフェース32に接続された一般的な記憶デバイスと同様に、LBA(Logical Block Addres)等で論理アドレスが指定される。
論理アドレスを物理アドレスに割当てる場合、例えば、データ領域11d内の複数の物理ブロックでゾーンを形成し、ゾーン毎に予め設定された論理アドレスの領域を割当てる。ゾーン毎に論理アドレスの領域を割当てることにより、論理アドレスを物理アドレスの対応関係を示す変換テーブルを、ゾーン毎に作成することができる。
図6は、ゾーンの説明図である。
図6に示した例では、1024個の物理ブロックで1つのゾーンが形成され、このゾーンに対して1000ブロック分(物理ブロック1000個分)の論理アドレスの領域が割当てられている。論理アドレス空間は、セクタ単位で付けた連番であるLBAで示されている。1セクタの容量がフラッシュメモリ11の1ページの容量と等しく、各物理ブロックが32個のページで構成されている場合、ゾーン内の各物理ブロックは、論理アドレス空間の32セクタ分の領域に割当てられる。
従って、論理アドレス空間の32セクタ分の領域を1個の論理ブロックとすれば、1個の物理ブロックに対して1個の論理ブロックが割当てられる。
尚、論理ブロック内の各セクタと物理ブロック内の各ページの対応関係については、アドレスの管理が煩雑になることを避けるために、それぞれ先頭から順番に論理ブロック内のセクタが物理ブロック内のページに割当てられる。
1つのゾーンに割当てられる3200セクタ分の領域(LBA0〜LBA3199)を、32セクタ毎に区切った論理ブロックに、連番(LBN0〜LBN999)を付け(以下、論理ブロックに付けた連番を論理ブロック連番という)、ゾーンを構成する1024個の物理ブロックに連番(#0〜#1023)を付けた場合(以下、物理ブロックに付けた連番を物理ブロック連番という)、論理ブロック連番と物理ブロック連番の対応関係を管理することにより、論理アドレスと物理アドレスの対応関係を管理することができる。
図6に示した例では、LBA0〜LBA31に対応する論理ブロック連番LBN0の論理ブロックが、物理ブロック連番#3の物理ブロックに割当てられ、LBA32〜LBA63に対応する論理ブロック連番LBN1の論理ブロックが、物理ブロック連番#1の物理ブロックに割当てられている。LBA64〜LBA95に対応する論理ブロック連番LBN2の論理ブロックが、物理ブロック連番#5の物理ブロックに割当てられ、LBA96〜LBA127に対応する論理ブロック連番LBN3の論理ブロックが、物理ブロック連番#7の物理ブロックに割当てられている。
フラッシュメモリ11にアクセスするときは、論理ブロックと物理ブロックの対応関係を示した変換テーブルを作成し、この変換テーブルを用いて、アクセスするページのアドレスを求める。変換テーブルは、各物理ブロックの冗長領域に書込まれている論理ブロックに関する情報(その物理ブロックに書込まれているユーザーデータに対応する論理ブロックを示す情報)に基づいて作成される。
例えば、物理ブロックにユーザーデータを書込んだときに、そのユーザーデータに対応する論理ブロックの論理ブロック連番を、その物理ブロックの冗長領域に書込めば、この論理ブロック連番を順次読み出すことにより、変換テーブルを作成することができる。
この変換テーブルは、1つゾーンに割当てられている論理アドレス空間の論理ブロック連番と、これ対応する物理ブロックの物理ブロック連番との対応関係を示している。従って、ホストシステムから与えられるLBAが属する論理ブロックの論理ブロック連番を変換テーブル上で検索することにより、それに対応する物理ブロックの物理ブロック連番を求めることができる。
本発明の実施形態に係るフラッシュメモリシステムを、概略的に示すブロック図である。 ブロックとページの関係を示す説明図である。 フラッシュメモリシステムの動作を説明するための図である。 フラッシュメモリに記憶されている情報を示す説明図である。 起動時の処理を示すフローチャートである。 ゾーンの説明図である。
符号の説明
10 フラッシュメモリシステム
11 フラッシュメモリ
20 メモリコントローラ
21 ホストインターフェースブロック
22 マイクロプロセッサ
23 フラッシュメモリインターフェースブロック
24 ECCブロック
25 バッファ
26 FIFOバッファ
30 コンパニオンチップ
31 SRAM用インターフェース
32 ATAインターフェース
40 ホストシステム
41 CPU
42 DRAM

Claims (15)

  1. 起動時に、フラッシュメモリに記憶されている第1のプログラムを読み出す第1の読出し手段と、
    ホストシステム側からランダムアクセスが可能で、前記第1の読出し手段によって読み出した前記第1のプログラムを保持するデータ保持手段と、
    前記ホストシステム側からの要求に応じて、フラッシュメモリに記憶されている第2のプログラムをページ単位で読み出す第2の読出し手段と、
    前記第2の読出し手段が読み出した前記第2のプログラムを保持した後、前記ホストシステム側に対してページ単位で転送するデータ転送手段とを備え、
    前記データ保持手段が、前記第1のプログラムを保持した後に、前記第2の読出し手段が動作可能になるように構成されていることを特徴とするメモリコントローラ。
  2. 前記第1のプログラムは、前記データ保持手段にアクセスした前記ホストシステムに前記要求を発生させるコマンドが記載されていることを特徴とする請求項1に記載のメモリコントローラ。
  3. 前記第2の読出し手段が、前記第2のプログラムに記述されているコマンドの実行順序に従って前記第2のプログラムを読み出すことを特徴とする請求項1又は2に記載のメモリコントローラ。
  4. 前記第1のプログラムに基づいて前記データ転送手段が、前記第2のプログラムの転送処理を実行することを特徴とする請求項1乃至3のいずれか1項に記載のメモリコントローラ。
  5. 前記フラッシュメモリの記憶空間の前記第1のプログラム及び前記第2のプログラムが記憶されている領域には、前記ホストシステム側から与えられる論理アドレスが割当てられていないことを特徴とする請求項1乃至4のいずれか1項に記載のメモリコントローラ。
  6. 前記第2のプログラムが、BIOSであることを特徴とする請求項1乃至5のいずれか1項に記載のメモリコントローラ。
  7. 前記データ転送手段が、ATAインターフェースを介して前記第2のプログラムを前記ホストシステムに転送することを特徴とする請求項1乃至5のいずれか1項に記載のメモリコントローラ。
  8. 請求項1乃至7のいずれか1項に記載のメモリコントローラとフラッシュメモリを備えることを特徴とするフラッシュメモリシステム。
  9. 起動時に、フラッシュメモリに記憶されている第1のプログラムを読み出す第1の読出し処理と、
    該第1の読出し処理によって読み出した前記第1のプログラムを、ホストシステム側からランダムアクセスが可能なデータ保持手段に書き込む処理と、
    前記ホストシステム側からの要求に応じて、フラッシュメモリに記憶されている第2のプログラムをページ単位で読み出す第2の読出し処理と、
    該第2の読出し処理によって読み出した前記第2のプログラムを保持した後、前記ホストシステム側に対してページ単位で転送するデータ転送処理とを含み、
    前記データ保持手段に前記第1のプログラムが書き込まれた後に、前記第2の読出し処理が実行されることを特徴とするフラッシュメモリの制御方法。
  10. 前記第1のプログラムは、前記データ保持手段にアクセスした前記ホストシステムに前記要求を発生させるコマンドが記載されていることを特徴とする請求項9に記載のフラッシュメモリの制御方法。
  11. 前記第2のプログラムが、前記第2のプログラムに記述されているコマンドの実行順序に従って読み出されることを特徴とする請求項9又は10に記載のフラッシュメモリの制御方法。
  12. 前記第1のプログラムに基づいて、前記第2のプログラムのデータ転送処理が実行されることを特徴とする請求項9乃至11のいずれか1項に記載のフラッシュメモリの制御方法。
  13. フラッシュメモリの記憶空間の前記第1のプログラム及び前記第2のプログラムが記憶されている領域に、前記ホストシステム側から与えられる論理アドレスが割当てられていないことを特徴とする請求項9乃至12のいずれか1項に記載のフラッシュメモリの制御方法。
  14. 前記第2のプログラムが、BIOSであることを特徴とする請求項9乃至13のいずれか1項に記載のフラッシュメモリの制御方法。
  15. 前記第2のプログラムが、ATAインターフェースを介して前記ホストシステムに転送されることを特徴とする請求項9乃至14のいずれか1項に記載のフラッシュメモリの制御方法。
JP2004374259A 2004-12-24 2004-12-24 メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 Pending JP2006178909A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004374259A JP2006178909A (ja) 2004-12-24 2004-12-24 メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004374259A JP2006178909A (ja) 2004-12-24 2004-12-24 メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法

Publications (1)

Publication Number Publication Date
JP2006178909A true JP2006178909A (ja) 2006-07-06

Family

ID=36732957

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004374259A Pending JP2006178909A (ja) 2004-12-24 2004-12-24 メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法

Country Status (1)

Country Link
JP (1) JP2006178909A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008117520A1 (ja) * 2007-03-28 2008-10-02 Panasonic Corporation メモリコントローラ、不揮発性メモリシステムおよびホスト装置
WO2009110140A1 (en) * 2008-03-07 2009-09-11 Kabushiki Kaisha Toshiba Information processing apparatus, storage drive and firmware update method
JP2011501321A (ja) * 2007-10-26 2011-01-06 クゥアルコム・インコーポレイテッド 無線デバイスのためのプログレッシブブート
CN102725731A (zh) * 2011-08-31 2012-10-10 华为技术有限公司 多处理器的基本输入输出系统存储器刷写方法、及装置
US8291226B2 (en) 2006-02-10 2012-10-16 Qualcomm Incorporated Method and apparatus for securely booting from an external storage device

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8291226B2 (en) 2006-02-10 2012-10-16 Qualcomm Incorporated Method and apparatus for securely booting from an external storage device
WO2008117520A1 (ja) * 2007-03-28 2008-10-02 Panasonic Corporation メモリコントローラ、不揮発性メモリシステムおよびホスト装置
JPWO2008117520A1 (ja) * 2007-03-28 2010-07-15 パナソニック株式会社 メモリコントローラ、不揮発性メモリシステムおよびホスト装置
JP2011501321A (ja) * 2007-10-26 2011-01-06 クゥアルコム・インコーポレイテッド 無線デバイスのためのプログレッシブブート
US8683213B2 (en) 2007-10-26 2014-03-25 Qualcomm Incorporated Progressive boot for a wireless device
WO2009110140A1 (en) * 2008-03-07 2009-09-11 Kabushiki Kaisha Toshiba Information processing apparatus, storage drive and firmware update method
JP2010517120A (ja) * 2008-03-07 2010-05-20 株式会社東芝 情報処理装置、記憶メディアドライブおよびファームウエア更新方法
CN102725731A (zh) * 2011-08-31 2012-10-10 华为技术有限公司 多处理器的基本输入输出系统存储器刷写方法、及装置
CN102725731B (zh) * 2011-08-31 2014-12-03 华为技术有限公司 多处理器的基本输入输出系统存储器刷写方法、及装置

Similar Documents

Publication Publication Date Title
JP4373943B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
US6906961B2 (en) Erase block data splitting
JP3574078B2 (ja) 記憶装置と記憶装置制御方法
KR20080096228A (ko) 플래쉬 메모리 장치 및 플래쉬 메모리 시스템
US9383929B2 (en) Data storing method and memory controller and memory storage device using the same
US11714656B2 (en) Memory system executing loading of software at startup and control method
JP4177360B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP7443418B2 (ja) 情報処理装置の製造方法、及び情報処理装置
JP2006178909A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2006155335A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4177292B2 (ja) メモリンコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4697146B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4661748B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2005292925A (ja) メモリコントローラ、フラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP3934659B1 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4670370B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4194518B2 (ja) メモリコントローラ、フラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4235595B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP4177301B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4304167B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4273038B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリのデータ転送方法
JP2005293177A (ja) メモリコントローラ及びフラッシュメモリシステム
JP4366283B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム
JP2007066119A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2006331233A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080530

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090331

A521 Written amendment

Effective date: 20090422

Free format text: JAPANESE INTERMEDIATE CODE: A523

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090818