説明

フラッシュメモリ記憶装置における動的メモリ割当てに起因する自己エビクションの回避

携帯用のフラッシュメモリ記憶装置のオペレーティングファームウェアは、実行可能ではない割合に大きなファイル記憶メモリに格納される。それは、実行可能なメモリに収まるオーバーレイに論理的に分解される。デッドスペース、あるいは頻繁にアクセスされるオーバーレイの1つまたはグループの中にあるべき関数を不必要に分離することを最小にすると同時に関数呼び出しを効率的に編成するために、オーバーレイのサイズは様々であってよい。データ割当てを必要とする関数を有するオーバーレイについて、データ割当てはオーバーレイのエビクションを引き起こすことがある。この自己エビクションは完全にあるいは初期実行時後に回避され、エビクションされたオーバーレイはデータのために確保された領域の外側の領域に再ロードされる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、フラッシュメモリに関し、特にフラッシュメモリ記憶装置のファームウェアの管理に関する。
【背景技術】
【0002】
関連出願との相互参照
本願は、その全体が本願明細書において参照により援用されている、2008年7月22日に出願された「Avoidance of Self Eviction Caused by Dynamic Memory Allocation in a Flash Memory Storage Device 」という米国特許出願第12/177,863号(特許文献1)の優先権を主張する。
【0003】
フラッシュメモリ大容量記憶装置、すなわち、主として大量のユーザファイルを格納するために使用されるものは、NORや他のXIP(eXecute In Place)メモリではなくてNANDフラッシュメモリを主記憶ユニットとしてよく利用する。そのような記憶装置は、写真および音楽等の大規模なライブラリを格納するために使用されるデジタルメモリカードおよびUSBドライブ等を含み、最近は或るラップトップコンピュータにおいて一次記憶装置としても利用されている。NANDでは大量の記憶域を利用できるので、ファームウェアを格納するには、たとえそれをNANDから実行できないとしても、NANDを用いることが望ましい。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許出願第12/177,863号
【特許文献2】米国特許出願第12/031,384号
【非特許文献】
【0005】
【非特許文献1】MetaWareTM Development Toolkit - Automated Overlay Management Specification Rev 1.5 of ARCTM International, available at www.arc.com
【発明の概要】
【0006】
携帯用のフラッシュメモリ記憶装置のオペレーティングファームウェアは、実行可能ではない割合に大きなファイル記憶メモリに格納される。それは、実行可能なメモリに収まるオーバーレイに論理的に分解される。デッドスペースと、頻繁にアクセスされるオーバーレイの1つまたはグループの中にあるべき関数の不必要な分離とを最小にすると同時に関数呼び出しを効率的に編成するために、オーバーレイのサイズは様々であってよい。データ割当てを必要とする関数を有するオーバーレイについて、データ割当てはエビクションを引き起こすことがある。この自己エビクションは、完全にあるいは初期実行後に回避される。
【0007】
本発明の1つの態様は、メモリコントローラにより実行されるべきファームウェアをメモリシステムのNANDフラッシュメモリに格納することを含む方法に関する。この方法は、そのファームウェアを様々なサイズのオーバーレイに論理的に順序付けすることと、要求されたオーバーレイをRAMメモリにロードすることと、そのオーバーレイが初めにロードされる時にオーバーレイ内の関数のRAMメモリ内でのデータスペース要件に基づいてロードされたオーバーレイをエビクションするけれども、オーバーレイが初めにロードされた時の後にはデータスペース要件のためにRAM内のスペースを確保し、これによってオーバーレイをエビクションする必要をなくすこととをも含む。
【0008】
本発明の他の1つの態様は、NANDフラッシュメモリおよびメモリコントローラを組み込んだメモリシステムにおける方法に関する。この方法は、メモリコントローラにより実行されるべきファームウェアをNANDフラッシュメモリに格納することと、ファームウェアを、ファームウェアの実行に専用されるオーバーレイRAMメモリの最大量より小さい様々なサイズのオーバーレイに論理的に順序付けることと、オーバーレイに格納されている関数を呼び出すことと、オーバーレイをメモリコントローラの専用RAMメモリにロードすることと、選択されたオーバーレイがデータのためにオーバーレイRAM内のスペースの割当てを必要とするというインジケーションを保存することと、その後、選択されたオーバーレイの自己エビクションを回避するためにインジケーションを利用することとを含む。
【0009】
本発明の別の1つの態様は、NANDフラッシュメモリおよびメモリコントローラを組み込んだメモリシステムにおける方法に関する。この方法は、メモリコントローラにより実行されるべきファームウェアをNANDフラッシュメモリに格納することと、ファームウェアを、ファームウェアの実行に専用されるオーバーレイRAMメモリの最大量より小さい様々なサイズのオーバーレイに論理的に順序付けることと、オーバーレイに格納されている関数を呼び出すことと、オーバーレイをメモリコントローラの専用RAMメモリにロードすることと、選択されたオーバーレイがデータのためにオーバーレイRAM内のスペースの割当てを必要とするというインジケーションを保存することと、その後、選択されたオーバーレイの自己エビクションを回避するためにインジケーションを利用することとを含む。
【図面の簡単な説明】
【0010】
【図1A】フラッシュメモリ記憶装置100を示すブロック図である。
【図1B】フラッシュメモリ記憶装置100のRAMおよびフラッシュメモリスペースの一部分を示すブロック図である。
【図1C】オーバーレイ管理を説明するフローチャートである。
【図2A】最初のオーバーレイのローディングのプロセスを示すフローチャートである。
【図2B】その後のオーバーレイのローディングのプロセスを示すフローチャートである。
【発明を実施するための形態】
【0011】
ソフトウェアプログラムは電子装置で実行可能なメモリにロードされて実行される。ソフトウェアプログラムがその装置の実行可能なメモリ容量より大きければ、ソフトウェアオーバーレイまたは仮想メモリが使用される。
仮想メモリは、ハードウェアで実現されるメモリ管理ユニットを通例使用するオペレーティングシステムを介して物理メモリにマッピングされるアドレス空間である。これは、パーソナルコンピュータおよびその他の無制約型のコンピュータ装置では普通のことである。仮想メモリシステムでは、大きなプログラムは、「ページ」と称される小さなセグメントに分解される。ページは、必要に応じて補助記憶装置から、そのプログラムのために確保されているマシンのメモリのセクションにロードされる。
メモリカードおよび他のフラッシュメモリ記憶装置では仮想メモリは実際的ではなくて、通例実装されない。従って、ソフトウェアオーバーレイが利用される。フラッシュメモリ記憶装置のオペレーティングソフトウェアは通例ファームウェアと称される。ファームウェアオーバーレイは、オーバーレイマネージャによって必要とされたときにメモリに呼び込まれたプログラムセグメントである。呼び込まれた各オーバーレイは、メモリ内に存在するオーバーレイをオーバーライトすることがある。オーバーレイのためのメモリの動的割当ては慎重に管理されなければならない。
【0012】
図1Aは、フラッシュメモリ記憶装置(「FMSD」)100を示す。FMSDは、フラッシュメモリアレイ108と、メモリコントローラ104と、ホストインターフェイス102とを含む。フラッシュメモリアレイ108は、非XIP型のフラッシュメモリであり、好ましくはNANDアーキテクチャの非XIP型のフラッシュメモリであり、通例EEPROMの形をとる。フラッシュメモリアレイ108は、大量のユーザファイルを格納するために使用され、装置100の主データ記憶リポジトリである。それゆえ、アレイ108に伴う大きな容量を利用してファームウェア、すなわちFMSD100のための動作命令を格納するのが望ましい。メモリコントローラ104自体は、プロセッサと、実行可能なランダムアクセスメモリ(「RAM」)(図示せず)とを含む。FMSD100は、メモリコントローラの外側の1つ以上のRAMメモリを含むこともできる。ホストインターフェイス102は、セキュアデジタルまたは他のメモリカード規格等のメモリカードの接点であるように構成されるか、ユニバーサルシリアルバス(「USB」)コネクタまたはIEEE1394「ファイアワイヤ」コネクタ等であるか、あるいは、FMSD100が埋め込まれる場合には、特定装置向けインターフェイスであってもよい。フラッシュメモリアレイ108は、制御線およびデータ線106を介してメモリコントローラ104に結合される。
【0013】
メモリ記憶装置を動作させるファームウェアは実行されるべくRAMに収まる適切なサイズのオーバーレイに分解される。オーバーレイを不必要にRAMに入れたり出したりして循環させることに起因する待ち時間を最小にして、ファームウェアのタスクが効率良く実行されるように、どんな関数呼び出しが種々のオーバーレイに最適に入るべきかを判定するのに無数の時間が費やされる。例えば、第1のオーバーレイの中の関数が第2のオーバーレイの中の他の関数を呼び出したりその逆が行われたりする場合、システムはその2つのオーバーレイの間を「スラッシング」するために多くの時間を費やすことになる。2つのオーバーレイに関するこの例は簡単すぎるけれども、ポイントは、オーバーレイ管理が適切に管理されなければ、ファームウェアの全体の関数を実行するよりもむしろオーバーレイ間で単にスイッチングするのに多くの時間を費やすことになり得るということである。
【0014】
ハードドライブまたは他のデータ記憶メカニズムの記憶装置アクセス時間よりも処理速度のほうが通例著しく速くて大量のRAMを利用し得るパーソナルコンピュータ等の大きなプロセッサ制御されるシステムでは、これはあまり問題ではない。利用し得るRAMの量が割合に多いことは、PC等で利用し得る仮想メモリ管理手法とともに、制約付きシステム環境に特有のものではない。
【0015】
NANDメモリを組み込んだ制約付きシステム環境では、NANDアーキテクチャの記憶動作を管理するためにファームウェアが非常に大きくて複雑であるので、特に問題である。NANDメモリは、しばしば、複数のメモリダイの中、あるいはメモリダイ間の他の領域とは品質が異なる領域を有する。コストを節約するために、メモリカード等のシステムは、そのような品質のばらついた領域を伴う未検査NANDを使用する。これは、低品質領域を利用しないかあるいは存在しないという意味での試験済みの良好なNANDだけを使用し得るシステムとは対照的である。最低のコストで提供されなければならない大容量装置では、そのような贅沢は利用し得ないし実際的でもない。そのような装置では、信頼性のない領域が必要に応じて精密にマッピングされてユーザファイルおよびデータが犠牲にされたり失われたりしないように、ファームウェアは、種々の領域の性能を絶えず監視して読み出し/書き込みパラメータおよびデータの物理的/論理的マッピングを改変するためにNANDの使用法を積極的に管理しなければならない。その結果、(試験済みの良好なNANDを伴う場合よりも)もっと大きくてより複雑なファームウェアとなり、オーバーレイ管理およびRAM使用法がそれゆえに重要となるということを意味する。
【0016】
オーバーレイに格納されている(ファームウェア)関数は、いつでも呼び出され得る。その関数が呼び出されるときにその関数を含むオーバーレイがRAMの中にあるという保証はない。ファームウェアの自動オーバーレイマネージャ(「AOM」)は、関数が呼び出されるけれどもRAM内に存在していないという「フォルト(fault )」の場合を管理するために各呼び出しを処理する。フォルトの場合、AOMはその関数を配置してそれを呼び出す前に、適切なオーバーレイをロードする。
【0017】
図1Bは、FMSD100のRAMおよびフラッシュメモリ空間の一部分を示す。RAMのメインコード領域120は、記述子/エントリ124a〜124xを有するオーバーレイマッピングテーブル(「OMT」)124を含む。OMTは、オーバーレイRAM(「ORAM」)に現在ロードされているオーバーレイを記述するテーブルである。OMT124の各エントリ124a〜124xは、オーバーレイ領域130とも称される、ORAM130内の特定の領域を記述する。124OMTは、RAM内のオーバーレイへのマップであって常に変化している。それは、どれだけの量のRAMがどのオーバーレイに割り当てられていてRAMのどの部分(1つまたは複数)が空いているのかを定義する。
【0018】
ORAM130はオーバーレイオフセットテーブル(「OOT」)131を含み、これはさらにORAMアドレス132a〜132xを含む。OOT131は、フラッシュメモリ内のオーバーレイへのマップである。各ORAMアドレス132a〜132xは、フラッシュメモリ内の特定のオーバーレイの対応するオフセット134a〜134xを示す。OOT131は、要求に応じてあるポイントでロードされるべき候補であるフラッシュ内に置かれた全てのオーバーレイ140a〜140xを記述するテーブルである。OOT142自体は、オーバーレイとともにORAMにロードされる。オーバーレイ136a〜136xまたは140a〜140xの各々は、オーバーレイ140aおよび140bに表されているように少なくとも1つの関数を含む。
【0019】
図1Bに見られるように、種々のオーバーレイ136a〜136x(136aおよび136bだけが示されている)がORAM130内に存在する。オーバーレイの数は、個々のオーバーレイおよびORAM130全体のサイズに依存する。ORAM130は、1つの離散的RAMであるかあるいはオーバーレイに割り当てられた大きなRAMの中の1つの領域であり得る。データ138および空きスペース139もORAM130内に存在する。データ138は、書き換え可能であるかあるいは不変であり得る。書き換え可能なデータはスペースの割当てであって、割当てをする呼び出し元は「何か」をそこに置き、それは呼び出し元がそれを解放するまでロックされたままである。データは、コード(オーバーレイ)がされ得るのと同じ仕方ではエビクションされ得ない。不変のデータは少し違って、再び呼び出しが使用したい「何か」ではあるけれども、フラッシュからロードされ、その後は好ましくは読み出し専用として扱われるが、必ずしも読み出し専用でなくてもよい。不変なデータに関して、AOMは、その不変なデータに対してそれがRAM内にある間に生じたいかなる変更もライトバックしない。
【0020】
オーバーレイのローディングは、FMSDファームウェアにおけるロジックの主要なフローの中でいつどこにロードするかを明示することを必要とせずに処理されるので、AOMは「自動的」であると考えられる。それらをいつロードするかの決定はAOMに任されている。すなわち、AOMの機能性を、任意の数のFDSM製品あるいは機器構成にも組み込むことができて、特定のハードウェアの実現形態のために特別に構成されなくてもよい。
各オーバーレイ関数について、コンパイラは、その関数が属するオーバーレイへのトークンリファレンスと、オーバーレイにおける関数のオフセットとを生成する。オーバーレイ関数の各呼び出しのために、コンパイラは、特別なレジスタにおいて関数トークンを提供するAOMハンドラを呼び出すために特別な命令のセットを生成する。
【0021】
ターゲット関数を呼び出す前に、AOMは、その関数を含んでいるオーバーレイがORAMにロードされていることを確認する。ORAMにおけるオーバーレイアドレスに関する情報はOOTに置かれる。OOTにおけるオーバーレイのインデックスを、オーバーレイトークンから抽出することができる。各OOTエントリは、オーバーレイORAMアドレスフィールドを含む。これは、ショートカットとして役立ち、一定の実施形態においてOMTを検索する必要がなくなる。オーバーレイがORAMにロードされていなければ、フィールド値は−1(無効アドレス)に等しい。それは、オーバーレイがフラッシュからORAMにロードされるべきことを意味する。AOMは、これを、他のOOTエントリフィールド−オフセットを用いて行う。オフセットは、フラッシュにおけるオーバーレイアドレスを示す。ターゲット関数が既にORAM内にあるのだとしても、あるいはAOMによってロードされたのだとしても、それを差し支えなく呼び出すことができる。OMTは、メモリ配置に関する情報を含む。それは記述子を含み、各記述子はスタートアドレス、サイズ、フラグおよびトークン(オーバーレイID)を含む。フラグフィールドは、エントリが空きメモリを指すのか、オーバーレイで占められているメモリまたはデータバッファを指すのかを示す。これ以上の情報については、その全体が本願明細書において参照により援用されている、www.arc.comで入手し得るARC(登録商標)インターナショナルのメタウェア(登録商標)開発ツールキット−自動化オーバーレイ管理仕様1.5版 (MetaWareTM Development Toolkit - Automated Overlay Management Specification Rev 1.5 of ARCTM International, available at www.arc.com) (非特許文献1)を参照されたい。
【0022】
オーバーレイをロードするためには、RAMにおいて充分な空きスペースが利用できなくてはならない。スペースは一般に、エビクションプロセスを通して利用可能にされる。
エビクションとは、既にRAM内にあるオーバーレイを選択して、ロードされるべき新しいオーバーレイのためにスペースを利用し得るようにするためにそれを破棄するプロセスを指す。オーバーレイがエビクションのためにどのように選択されるかはさまざまである。「ロードされてから最も長い時間が経った(「LRL」:least recently loaded )アプローチが、その全体が本願明細書において参照により援用されている、2008年2月14日に出願された「Overlay Management in a Flash Memory Storage Device 」という米国特許出願第12/031,384号(特許文献2)に開示されている。LRLアプローチは概して好ましいけれども、自己エビクションを回避するために次のプロセスにより改変/実現/補足された、「使われてから最も長い時間が経った(「LRU」:least recently used )アプローチ等の任意の一般化したエビクション方法を利用することができる。
【0023】
図1Cは、高レベルのオーバーレイ管理の実施形態を記述するフローチャートである。ステップ200で、システムは、呼び出される関数を伴うオーバーレイがORAM内にあるか否かを調べるためにOMTをチェックする。ORAM内にあるならば、その関数は、ステップ220に見られるように、ORAMから実行される。しかし、ORAM内にないならば、ステップ204で、システムは、オーバーレイオフセットにより決定される、フラッシュ内にオーバーレイを配置するためにOOTへ進む。ステップ208で、システムは、他の1つまたは複数の必要とされるオーバーレイのためのスペースを作るために、必要に応じて1つ以上のオーバーレイをエビクションする。ステップ212で、オーバーレイがロードされ、ステップ216で、OMTはオーバーレイのローディングを反映するように更新される。関数と関連するオーバーレイとがメモリ内にある状態で、関数はステップ220でORAMから実行される。
オーバーレイの中の関数が、呼び出されたとき、その関数を含むオーバーレイのエビクションという結果をもたらす事態を回避することが望ましい。
【0024】
図2Aは、オーバーレイの初めてのローディングを含むプロセスを示す。
ステップ252で、システム(ファームウェア)は、オーバーレイに格納されている関数を呼び出す。ステップ256で、その呼び出される関数を含む、これらの代表的な図においてオーバーレイ01と称されるオーバーレイがステップ256でORAMにロードされる。それが初めてロードされるときには、好ましくはORAMの最上部にロードされるけれども、ORAM内のどこにロードされてもよい。ステップ260で、関数はデータのためにメモリスペースを割り当てる。一実施形態では、これはメモリ割当てルーチン(「MALLOC」:memory allocation routine )を呼び出すAOMを必要とする。その後、ステップ264で、AOM MALLOCは、データのためにメモリスペースが割り当てられるときに、オーバーレイ01のエビクションを引き起こす。これが起こるのは、一定の関数は、オーバーレイがロードされたORAMスペースを使用する必要性を生じさせるという結果をもたらす割合に大きなデータ割当てを必要とするからである。ステップ270で、オーバーレイ01がデータ割当てを必要とするということを示すようにOOTが更新される。OOTは、好ましくは、必要とされる割当てのサイズを示すようにも更新される。ステップ274で、システム(のAOM MALLOC)は、関数がもはやORAM内に常駐していないためにフォルトを引き起こすオーバーレイ01の呼び出された関数に戻る。ステップ278でオーバーレイ01は再ロードされ、ステップ282でシステムは呼び出された関数の実行に戻る。
【0025】
図2Bは、2回目以後にオーバーレイをロードすることを含むプロセスを示す。
ステップ302で、オーバーレイ01に格納されている関数が呼び出される。その後、ステップ306で、システムは、オーバーレイ01の1つ以上の関数により必要とされるデータ割当て領域より下のORAM内の位置にオーバーレイ01がロードされることを確認する。一実施形態では、これを、前にステップ270でOOTに格納された1つまたは複数のインジケーションをチェックすることにより実行する。データ割当てのサイズがOOTに格納される実施形態では、データ割当ては、その格納されたサイズのものである。オーバーレイの中の異なる関数が異なるサイズのデータ割当てを必要とすることがあるので、好ましい実施形態では、データ割当ての格納されるサイズは、オーバーレイの中の任意の関数の最大データ割当てである。他の1つの実施形態では、オーバーレイの中の各関数のために必要とされるデータ割当てのサイズをOOTに保存することができる。必要とされるデータ割当てのサイズが格納されない他の実施形態では、データ割当ては、全てのオーバーレイおよびその中の関数についての最大予想サイズのものであり得る。その後、ステップ310で、システムはオーバーレイ01をデータ割当て領域より下にロードし、ステップ314で、呼び出された関数はAOM MALLOCを呼び出す。好ましい実施形態では、データのためのスペースはORAMの最上部に確保され、オーバーレイはその確保されたスペースより下にロードされるけれども、他の実施形態では、このスペースはORAMの中のどの位置に確保されてもよくてオーバーレイはその確保されたスペースより上あるいは下にロードされることができるということに留意するべきである。ステップ318で、AOM MALLOCは、オーバーレイ01のエビクションなしで関数に戻る。
【0026】
従って、自己エビクションは、そのような挙動をしがちなオーバーレイが初めて生じたときにだけ発生する。メモリシステムは、本質的に、実行時にオーバーレイの自己エビクションする傾向に関して「学習」し、それに応じて順応する。その代わりに、各オーバーレイについてのOOTエントリは、そのオーバーレイの中の関数がデータ割当てを必要とするか否かという1つまたは複数のインジケーションと、そのデータ割当ての関連サイズとともに事前ロードされる。

【特許請求の範囲】
【請求項1】
NANDフラッシュメモリおよびメモリコントローラを組み込んだメモリシステムにおける方法であって、
前記メモリコントローラにより実行されるべきファームウェアを前記NANDフラッシュメモリに格納するステップと、
前記ファームウェアを、ファームウェアの実行に専用されるオーバーレイRAMメモリの最大量より小さい様々なサイズのオーバーレイに論理的に順序付けるステップと、
オーバーレイに格納されている関数を呼び出すステップと、
前記オーバーレイを前記メモリコントローラの専用RAMメモリにロードするステップと、
選択されたオーバーレイがデータのために前記オーバーレイRAM内のスペースの割当てを必要とするというインジケーションを保存するステップと、
前記選択されたオーバーレイの自己エビクションを回避するために前記インジケーションを継続して利用するステップと、
を含む方法。
【請求項2】
請求項1記載の方法において、
前記インジケーションは、実行時に保存される方法。
【請求項3】
請求項1〜2のいずれか記載の方法において、
前記インジケーションは、オーバーレイオフセットテーブルに保存される方法。
【請求項4】
請求項1〜3のいずれか記載の方法において、
前記インジケーションは、前記NANDフラッシュメモリに保存される方法。
【請求項5】
請求項1〜4のいずれか記載の方法において、
前記選択されたオーバーレイの自己エビクションを回避するためにデータ割当ての必要性のインジケーションを継続して利用するステップは、前記選択されたオーバーレイが前記選択されたオーバーレイの最初のローディングの後に呼び出される各々の場合に、保存されたデータ割当ての必要性のインジケーションを参照することを含む方法。
【請求項6】
請求項1〜5のいずれか記載の方法において、
前記オーバーレイRAMの中で必要とされるスペースの割当てのサイズのインジケーションを保存するステップをさらに含む方法。
【請求項7】
請求項1〜6のいずれか記載の方法において、
前記選択されたオーバーレイの自己エビクションを回避するために前記データ割当ての必要性のインジケーションを継続して利用するステップは、前記選択されたオーバーレイが前記選択されたオーバーレイの最初のローディングの後に呼び出される各々の場合に、保存された前記データ割当ての必要性のインジケーションと、前記必要とされるスペースの割当てのサイズのインジケーションとを参照することを含む方法。
【請求項8】
請求項1〜7のいずれか記載の方法において、
前記選択されたオーバーレイの自己エビクションを回避するために前記データ割当ての必要性のインジケーションを継続して利用するステップは、前記データ割当てのために十分な前記オーバーレイRAMの領域を確保することと、前記選択されたオーバーレイをその確保された領域より下にロードすることをさらに含む方法。
【請求項9】
請求項1〜8のいずれか記載の方法において、
前記確保された領域は、前記オーバーレイRAMの上側境界にある方法。
【請求項10】
請求項1〜9のいずれか記載の方法において、
前記データ割当てのために確保された領域は、前記ファームウェアの任意の関数のための最大必要データ割当てと等しいかまたはそれより大きい方法。
【請求項11】
請求項1〜10のいずれか記載の方法において、
前記必要とされるスペースの割当てのサイズのインジケーションは、オーバーレイオフセットテーブルにおいて保存される方法。
【請求項12】
請求項1〜11のいずれか記載の方法において、
前記必要とされるスペースの割当てのサイズのインジケーションは、前記NANDフラッシュメモリにおいて保存される方法。
【請求項13】
NANDフラッシュメモリおよびメモリコントローラを組み込んだメモリシステムにおける方法であって、
前記メモリコントローラにより実行されるべきファームウェアを前記NANDフラッシュメモリに格納するステップと、
前記ファームウェアを、様々なサイズのオーバーレイに論理的に順序付けるステップと、
オーバーレイに格納されている関数を呼び出すステップと、
前記オーバーレイを1回目に前記メモリコントローラのRAMメモリにロードするステップであって、前記オーバーレイがその1回目にロードされるときにはオーバーレイメモリの上側境界にロードされる、ロードするステップと、
前記コントローラの前記RAMメモリにおけるメモリ割当てを必要とする関数を前記オーバーレイが呼び出すか否かを判定するステップと、
その必要とされるメモリ割当てに関する情報を保存するステップと、
その保存された情報を参照して、前記保存された情報がメモリ割当てが必要とされることを示す場合には、前記1回目の後の各回において前記オーバーレイを前記メモリの上側境界以外の領域にロードするステップと、
を含む方法。
【請求項14】
請求項13記載の方法において、
前記保存された情報は、メモリ割当ての肯定的または否定的な必要性のインジケーションを含む方法。
【請求項15】
請求項13〜14のいずれか記載の方法において、
前記コントローラの前記RAMメモリにおけるメモリ割当てを必要とする関数を前記オーバーレイが呼び出すか否かを判定するステップは、書き込まれるべきデータのために割当てが必要とされるか否かを判定することを含む方法。
【請求項16】
請求項13〜15のいずれか記載の方法において、
前記保存された情報は、前記メモリ割当てのサイズのインジケーションを含む方法。
【請求項17】
請求項13〜16のいずれか記載の方法において、
前記1回目の後の各回において前記オーバーレイを前記メモリの上側境界以外の領域にロードするステップは、前記オーバーレイを、前記ロードされるオーバーレイにより書き込まれるべきデータのために確保される領域より下にロードすることを含む方法。

【図1A】
image rotate

【図1B】
image rotate

【図1C】
image rotate

【図2A】
image rotate

【図2B】
image rotate


【公表番号】特表2011−529225(P2011−529225A)
【公表日】平成23年12月1日(2011.12.1)
【国際特許分類】
【出願番号】特願2011−520178(P2011−520178)
【出願日】平成21年7月22日(2009.7.22)
【国際出願番号】PCT/US2009/051445
【国際公開番号】WO2010/011780
【国際公開日】平成22年1月28日(2010.1.28)
【出願人】(506197901)サンディスク コーポレイション (175)
【Fターム(参考)】