(57)【要約】メモリデバイスが、メモリセルアレイ及びリマップ・データ構造を含むことができる。リマップ・データ構造はマッピング履歴部分及び状態部分を含むことができ、マッピング履歴部分は領域の論理アドレスと物理アドレスとの間のマッピングの集合を記憶するように構成され、状態部分はマッピングの集合のうちの１つをデバイスにとって有効な集合として識別するように構成されている。制御論理回路を、メモリセルアレイ及びリマップ・データ構造に結合することができ、記憶位置及びリマップ・データ構造へのアクセスを可能にするように構成することができる。メモリデバイスを含み、ファームウェア無線通信（ＦＯＴＡ）を含むファームウェア更新システム及び方法も開示する。
2021506014.tif 000002
【特許請求の範囲】
【請求項１】
物理アドレスによりアクセス可能な複数の記憶位置を有するメモリセルアレイと、
リマップ・データ構造と、
前記メモリセルアレイ及び前記リマップ・データ構造に結合された制御論理回路とを具えたメモリデバイスであって、
前記記憶位置のそれぞれは別個の領域内に配置され、
前記リマップ・データ構造は、
前記領域の論理アドレスと物理アドレスとの間のマッピングの集合を記憶するように構成されたマッピング履歴部分と、
前記マッピングの集合のうちの１つを前記メモリデバイスにおける有効な集合として識別するように構成された状態部分とを含み、
前記制御論理回路は、前記記憶位置及び前記リマップ・データ構造へのアクセスを可能にするように構成されている
メモリデバイス。
【請求項２】
前記有効な集合の論理アドレス−物理アドレスのマッピングを記憶するように構成された揮発性メモリ回路をさらに具え、
前記制御論理回路が、受信した論理アドレスに応答して前記揮発性メモリ回路にアクセスするように構成されている、請求項１に記載のメモリデバイス。
【請求項３】
前記制御論理回路が命令デコーダをさらに含み、該命令デコーダは、受信した命令に応答して前記リマップ・データ構造へのアクセスを可能にするように構成されている、請求項１に記載のメモリデバイス。
【請求項４】
前記制御論理回路が少なくとも１つのコンフィギュレーション・レジスタをさらに含み、該コンフィギュレーション・レジスタは、前記メモリデバイスへのレジスタ書込み動作によりアクセス可能であり、前記少なくとも１つのコンフィギュレーション・レジスタは、前記マッピング履歴部分用のデータ、及び前記状態部分用のデータから成るグループから選択したいずれかを記憶するように構成されている、請求項１に記載のメモリデバイス。
【請求項５】
前記制御論理回路がパワーオン・リセット回路をさらに含み、該パワーオン・リセット回路は、前記メモリデバイスにおける電源オンまたはリセットの事象に応答して、前記有効な集合の論理アドレスを、前記メモリデバイスに記憶されているファームウェア用の最新のアドレスとして設定するように構成されている、請求項１に記載のメモリデバイス。
【請求項６】
入力／出力（Ｉ／Ｏ）部分をさらに含み、該Ｉ／Ｏ部分は、少なくとも１つのチップ選択入力端子、少なくとも１つのクロック入力端子、及び少なくとも１つの双方向シリアルデータ入力／出力端子を含む、請求項１に記載のメモリデバイス。
【請求項７】
前記メモリセルアレイが、複数のプールの形に配列された複数のフラッシュメモリセルを具え、前記別個の領域が第１の前記プール内に配置され、
前記制御論理回路が、残りの前記プールへのアクセスを、ウェア・レベリング・アルゴリズムに従って変化させるように構成されている、請求項１に記載のメモリデバイス。
【請求項８】
前記メモリセルアレイが、複数のプールの形に配列された複数のフラッシュメモリセルを具え、前記別個の領域が第１の前記プール内に配置され、
前記制御論理回路が、前記別個の領域へのアクセスを、ウェア・レベリング・アルゴリズムに従って変化させるように構成されている、請求項１に記載のメモリデバイス。
【請求項９】
新ファームウェア・イメージをメモリデバイスにおいて受信するステップと、
前記新ファームウェア・イメージを前記メモリデバイスの不揮発性の記憶位置にプログラムするステップであって、前記新ファームウェア・イメージ用の前記記憶位置が、同じ前記メモリデバイス内の、現在のファームウェア・イメージが記憶されている記憶位置とは異なるステップと、
前記新ファームウェア・イメージ用の論理アドレス（ＬＡ）−物理アドレス（ＰＡ）のマッピングの集合を、前記メモリデバイスの不揮発性のマッピング回路内にプログラムするステップであって、前記マッピング回路が、前記現在のファームウェア・イメージ用のＬＡ−ＰＡのマッピングの集合も含むステップと、
前記メモリデバイスの不揮発性の状態回路内に状態値をプログラムして、前記新ファームウェア・イメージ用のＬＡ−ＰＡのマッピングの集合を、前記メモリデバイスに記憶されている有効なファームウェア・イメージとして示し、前記現在のファームウェア・イメージ用のＬＡ−ＰＡのマッピングの集合を、無効なファームウェア・イメージとして示すステップと
を含む方法。
【請求項１０】
前記新ファームウェア・イメージを前記メモリデバイスの前記不揮発性の記憶位置にプログラムするステップが、フラッシュメモリデバイスのセクターをプログラムすることを含む、請求項９に記載の方法。
【請求項１１】
前記状態値をプログラムするステップが、前記メモリデバイスに記憶されている前記ＬＡ−ＰＡのマッピングの集合毎に１ビットを有するマルチビット・ポインタ・データ構造内の少なくとも１ビットをプログラムすることを含む、請求項９に記載の方法。
【請求項１２】
前記新ファームウェア用のＬＡ−ＰＡのマッピングの集合をプログラムするステップが、所定の命令及びデータを前記メモリデバイスにおいて受信すること、及び前記メモリデバイスの少なくとも１つの所定のレジスタにデータを書き込むことから成るグループから選択した動作を含む、請求項９に記載の方法。
【請求項１３】
前記新ファームウェア・イメージにおける前記状態値をプログラムするステップが、所定の命令及びデータを前記メモリデバイスにおいて受信すること、及び前記メモリデバイスの少なくとも１つの所定のレジスタにデータを書き込むことから成るグループから選択した動作を含む、請求項９に記載の方法。
【請求項１４】
所定の条件に応答して、前記新ファームウェア・イメージの前記ＬＡ−ＰＡのマッピングの集合のうちの１つのＬＡ−ＰＡのマッピングを揮発性メモリ内に生成するステップと、
前記揮発性メモリにアクセスして、前記新ファームウェア・イメージからデータを読み出すステップと
をさらに含む、請求項９に記載の方法。
【請求項１５】
前記所定の条件が、前記メモリデバイスにおけるパワーオン・リセット動作、所定の命令を前記メモリデバイスにおいて受信したこと、及び前記メモリデバイスの少なくとも１つの所定のレジスタにデータを書き込むことから成るグループから選択したいずれかを含む、請求項１４に記載の方法。
【請求項１６】
不揮発性メモリデバイスと、
プロセッサ回路とを具えたシステムであって、
前記不揮発性メモリデバイスは、
異なる物理アドレスを有する領域を有するメモリセルアレイであって、前記システム用の異なるファームウェア・イメージを記憶するメモリセルアレイと、
受信したファームウェア・イメージ用の論理アドレス（ＬＡ）−物理アドレス（ＰＡ）のマッピングを不揮発性の記憶回路内に記憶するように構成されたマッピング履歴部分と、
前記システムによってアクセスされる現在のファームウェア・イメージを識別するデータを不揮発性の記憶回路内に記憶するように構成されたファームウェア状態部分とを含み、
前記プロセッサ回路は、記憶されているプロセッサ命令を実行して、
新ファームウェア・イメージをシステムメモリに記憶し、
前記不揮発性メモリデバイスに記憶されている前記現在のファームウェア・イメージを乱すことなしに、前記システムメモリからの前記新ファームウェア・イメージを、前記不揮発性メモリデバイス内の前記領域のうちの１つにプログラムし、
前記新ファームウェア・イメージ用のＬＡ−ＰＡのマッピングを、前記不揮発性メモリデバイスの前記マッピング履歴部分内にプログラムし、
前記新ファームウェア・イメージ用のＬＡ−ＰＡのマッピングが前記システムによって読み込まれて、前記不揮発性メモリデバイスに記憶されている以前のバージョンのファームウェア・イメージのいずれとも異なるファームウェア・データがアクセスされることを示すように、前記ファームウェア状態部分をプログラムする
ように構成されているシステム。
【請求項１７】
前記新ファームウェア・イメージを無線ネットワーク上で受信するように構成された無線トランシーバをさらに含む、請求項１６に記載のシステム。
【請求項１８】
前記新ファームウェア・イメージ用のＬＡ−ＰＡのマッピングをプログラムすることが、前記プロセッサ回路が所定の命令及びデータを前記不揮発性メモリデバイスに対して発行すること、及び前記プロセッサ回路が前記不揮発性メモリデバイスの少なくとも１つの所定のレジスタにデータを書き込むことから成るグループから選択したいずれかを含む、請求項１６に記載のシステム。
【請求項１９】
前記ファームウェア状態部分をプログラムすることが、前記プロセッサ回路が所定の命令を前記不揮発性メモリデバイスに対して発行すること、及び前記プロセッサ回路が前記不揮発性メモリデバイスの少なくとも１つの所定のレジスタにデータを書き込むことから成るグループから選択したいずれかを含む、請求項１６に記載のシステム。
【請求項２０】
前記プロセッサ回路が、前記新ファームウェア・イメージを受信する前に、前記不揮発性メモリデバイスに記憶されている以前のファームウェア・イメージにチップ選択信号によりアクセスするように構成され、
前記プロセッサ回路が、前記新ファームウェア・イメージを受信した後に、同じ前記チップ選択信号により前記新ファームウェア・イメージにアクセスするように構成されている、
請求項１６に記載のシステム。
【請求項２１】
前記不揮発性メモリデバイスが少なくとも１つのプールを含み、該プールの各々が、
複数のレジスタと、
前記プール用のマッピング履歴部分と、
前記プール用のファームウェア状態部分と
を含む、請求項１６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、米国特許非仮出願第１６／００５２６２号、２０１８年６月１１日出願の国際出願であり、この米国特許非仮出願は米国特許仮出願題６２／５９７７０９号、２０１７年１２月１２日出願により優先権を主張し、これらの特許出願のすべての内容は参照することによって本明細書に含める。
【０００２】
技術分野
本発明は一般に不揮発性メモリ内のデータを時々更新（アップデート）するシステムに関するものであり、より具体的には、ファームウェア無線通信（ＦＯＴＡ：firmware-over-the-air）法を利用するシステムのようなシステム用途向けのファームウェア・イメージを更新するシステムに関するものである。
【背景技術】
【０００３】
背景
ファームウェア無線通信（ＦＯＴＡ）（無線通信によるファームウェア更新）及び他のファームウェア更新方法は、コンピュータシステムにとって主要な要件であり得る。ＦＯＴＡ更新は一般にトランスペアレントである必要があり、即ち、旧ＦＷ（firmware：ファームウェア）イメージと新ＦＷイメージとを瞬時に切り換える。従来は、ファームウェアを更新する必要があるシステムは２つ以上の別個のフラッシュメモリデバイスを使用し、これらのフラッシュメモリデバイスは（例えば、ベースレジスタの使用により）プロセッサのアドレス空間の異なる範囲内へマッピング（対応付け）される。異なるアドレス範囲の各々のベースアドレスは、所望のフラッシュメモリデバイスを選択する単一のチップ選択（チップセレクト）を制御する。従って、上記瞬時の切り換えは、ベースアドレス・レジスタに記憶されているベースアドレスをスワップ（交換）することによって発生する。
【０００４】
図１６Ａに、ＦＯＴＡ更新を含む従来のシステム１６９１を示す。システム１６９１は、マイクロコントローラ（ＭＣＵ：microcontroller unit）１６９３及び複数のフラッシュメモリデバイス１６９５−０〜１６９５−２を含むことができる。フラッシュメモリデバイス（１６９５−０〜１６９５−２）内の記憶位置（記憶場所）はシステムアドレス空間１６９７へマッピングすることができる。フラッシュメモリデバイス０ １６９５−０は、ベースアドレス０ｘ０００に対応することができ、旧ファームウェア・イメージ１６０７−０（即ち、期限切れのバージョン、従って置き換えられたバージョン）を記憶することができる。フラッシュメモリデバイス１ １６９５−１は、ベースアドレス０ｘ１００に対応することができ、現在のファームウェア・イメージ（即ち、現在、システムがアクセスするバージョン）を記憶することができる。フラッシュメモリデバイス２ １６９５−２は、ベースアドレス０ｘ２００に対応することができ、新ファームウェア・イメージ１６９７−２（即ち、現在のイメージを更新することを意図したバージョン）を記憶することができる。
【０００５】
ＭＣＵ１６９３は、ＭＣＵ１６９３内部のアドレス指定（アドレッシング）メカニズムを用いてファームウェア・イメージを更新することができる。ＭＣＵ１６９３はベースアドレス・レジスタ１６９９を有することができ、ベースアドレス・レジスタ１６９９はファームウェア・イメージに対応するベースアドレスを記憶する。ベースアドレス・レジスタを用いて、フラッシュメモリデバイス１６９５−０〜１６９５−２用のそれぞれのチップ選択信号ＣＳ０〜ＣＳ２を発生する。ベースアドレス・レジスタ”ba_new_image”は、新ファームウェア・イメージのベース物理アドレス（更新前の０ｘ２００）を記憶することができる。ベースアドレス・レジスタ”ba_cur_image”は、現在のファームウェア・イメージのベース物理アドレス（更新前の０ｘ１００）を記憶することができる。ベースアドレス・レジスタ”ba_old_image”は、旧ファームウェア・イメージのベース物理アドレス（更新前の０ｘ０００）を記憶することができる。
【０００６】
システム１６９１は、ベースアドレス・レジスタ１６９９内の値を切り換えることによって、現在のイメージ（例えば、１６９７−１）から新イメージ（例えば、１６９７−２）へ更新することができる。具体的には、ベースアドレス・レジスタba_cur_image内の値を”cfg_cur”から”cfg_new”に切り換えることができる。こうした作業に続いて、システム１６９１がファームウェアを読みに行く際に、ＭＣＡ１６９３内部のアドレス指定メカニズムが、チップ選択信号ＣＳ２を（更新作業の前に発生したＣＳ１の代わりに）発生する。
【０００７】
図１６Ｂは従来のシステム１６９１のブロック図であり、チップ選択を使用する方法を示す。ＭＣＵ１６９３は、１つの出力端子（例えば、Ｉ／Ｏ（input/output：入力／出力）端子）を、フラッシュメモリデバイス１６９５−０／１毎のチップ選択（ＣＳ１、ＣＳ２）としての専用にする。以上より理解されるように、こうしたチップ選択（ＣＳ１、ＣＳ２）はベースアドレス・レジスタ内の値に応じて活性化することができる。一方のフラッシュメモリ（例えば、１６９５−０）は、現在使用中であるファームウェア・イメージを記憶することができるのに対し、他方のフラッシュメモリ（例えば、１６９５−１）は、現在使用中でない（即ち、旧ファームウェア・イメージ、あるいはベースアドレス・レジスタ値を切り換えることによって使用中にされるべき新ファームウェア・イメージ）を記憶することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従来のＦＯＴＡ方法の欠点は、コスト及び性能の限界であり得る。１つのＩ／Ｏ端子をフラッシュメモリデバイス毎の（即ち、各ファームウェア・イメージの）チップ選択端子としての専用にする代表的なコントローラ（例えば、ＭＣＵ）を使用する場合、このコントローラは、ダイナミックＲＡＭ（ＤＲＡＭ：dynamic random access memory：ダイナミック・ランダムアクセスメモリ）またはスタティックＲＡＭ（ＳＲＡＭ：static RAM）のような他の必要なデバイス用の未使用のＩ／Ｏ端子を有さないことがある。その結果、追加的なＩ／Ｏ端子を有するコントローラを使用しなければならないことがあり、このことはシステムのコストを増加させ得る。従来のシステムは複数のフラッシュメモリデバイスを同じバスに接続することができるが、フラッシュメモリデバイスが追加される毎にバス上の容量性負荷が増加し得る。従って、バス上のフラッシュメモリデバイスの数が多くなるほど、バスはより低速で機能する。ほんの一例として、８進（オクタル）のＳＰＩ（serial peripheral interface：シリアル周辺インタフェース）バスについては、２つのフラッシュメモリデバイスを追加することは、１つのフラッシュメモリデバイスしか有さない同じバスに比べれば、最高バス速度を２００MHzから１３３〜１６６MHzに低下させ得る。
【図面の簡単な説明】
【０００９】
【図１】図１Ａ〜１Ｄは、一実施形態によるシステム及びファームウェア更新作業を示す一連のブロック図である。
【図２】図２Ａ及び２Ｂは、メモリデバイスが命令及び／またはレジスタ書込みを受け取ることを更新作業に含めることができる方法を示すブロック図である。
【図３】一実施形態によるメモリデバイスの概略ブロック図である。
【図４】一実施形態によるメモリデバイスのリマップ・データ構造を示す図である。
【図５】一実施形態によるファームウェア更新作業を示す流れ図である。
【図６】図６Ａ及び６Ｂは、実施形態に含めることができるメモリセルのアレイ構成を示す図である。
【図７】実施形態に含めることができるデータ構造及び対応するメモリセルアレイを示すブロック図である。
【図８】実施形態に含めることができる、可変数のプールに分割することができるメモリセルアレイを示す図である。
【図９】図９Ａ〜９Ｄは、実施形態による、ファームウェアを更新するためのメモリデバイスへの入力を示す図である。
【図１０】一実施形態による、ファームウェア無線通信（ＦＯＴＡ）更新を含むことができるシステムを示す図である。
【図１１】一実施形態によるシステムのブロック図である。
【図１２】図１２Ａ及び１２Ｂは、実施形態によるメモリデバイスの透視図である。
【図１３】図１３Ａ〜１３Ｃは、実施形態による好適なデバイスの図である。
【図１４】一実施形態による方法の流れ図である。
【図１５】他の実施形態による方法の流れ図である。
【図１６】図１６Ａ及び１６Ｂは、ＦＯＴＡ更新を行う従来システムを示す図である。
【発明を実施するための形態】
【００１０】
詳細な説明
システムのファームウェアを更新するためのメモリデバイス、システム、及び方法を示す種々の実施形態を以下に説明する。更新は、単一のメモリデバイスで、メモリデバイスの記憶位置間でファームウェア・イメージをコピーすることなしに実行することができる。
【００１１】
実施形態によれば、現在のファームウェア・イメージを記憶しているのと同じメモリデバイス内に新ファームウェア・イメージをプログラムすることができる。一旦、新ファームウェア・イメージを記憶すると、メモリデバイスは、内部リマッピング（再マッピング、再配置）データ構造を用いる切り換え動作によって新ファームウェア・イメージへの切り換えを行うことができる。こうした新ファームウェア・イメージへの切り換えは瞬時に行うことができる。
【００１２】
以下の種々の実施形態では、同様のアイテムは同じ参照文字によって参照し、但し図番に対応する先行数字を付ける。
【００１３】
図１Ａ〜１Ｄは、システム１００及び対応するファームウェア更新作業を示す一連の流れ図である。システム１００は、メモリデバイス１０２、コントローラ１０４、及びコントローラ・メモリ１０６を含むことができる。メモリデバイス１０２は、不揮発性メモリアレイ１０８、リマップ（再マッピング、再配置）データ構造１１０、及び入力／出力（Ｉ／Ｏ）兼制御回路１１２を含むことができる。不揮発性メモリアレイ１０８は複数の不揮発性メモリセルを含むことができ、これらの不揮発性メモリセルはデータを不揮発性の方法で記憶することができる。即ち、電力がない場合に、記憶しているデータを保持することができる。記憶位置は物理アドレス（ＰＡ：physical address）によりアクセスすることができる。不揮発性メモリ１０８はあらゆる適切な種類の不揮発性メモリセルを含むことができるが、一部の実施形態では「フラッシュ」型メモリセルを含むことができる。不揮発性メモリアレイ１０８は、少なくとも２つ以上のファームウェア・イメージ用に十分な記憶容量を有することができる。
【００１４】
リマップ・データ構造１１０は、ファームウェア・イメージの論理アドレス−物理アドレス（ＬＡ（logical address）→ＰＡ）マッピング、並びにこうしたＬＡ→ＰＡマッピング毎の状態を記録するデータを記憶することができる。例えば、エントリ１１０−０は、VAL（valid）の表示で示す有効なマッピング（LA_FW=PAx）を記憶する。エントリ１１０−１はINV（invalid）の表示で示す有効でないマッピングを記憶する。なお、リマップ・データ構造１１０はメモリデバイス１０２上に常駐してデータを不揮発性の方法で記憶する。以下の他の実施形態に示すように、リマップ・データ構造１１０は、論理アドレスと物理アドレスとの間の高速変換用に揮発性メモリ（図示せず）に記憶されているＬＡ→ＰＡルックアップ・テーブル（早見表）または他の構造を含むことができる。リマップ・データ構造１１０は、不揮発性メモリアレイ１０８の外部に位置する不揮発性メモリセル及び／または不揮発性メモリアレイ１０８内に位置する不揮発性メモリセルを利用することができる。
【００１５】
一部の実施形態では、メモリデバイス１０２を単一の集積回路デバイスとすることができる。こうした構成では、不揮発性メモリアレイ１０８、リマップ・データ構造１１０、及びＵＩ／Ｏ兼制御回路１１２は、同じ集積回路パッケージの一部とすることができる。特定の実施形態では、不揮発性メモリアレイ１０８、リマップ・データ構造１１０、及びＩ／Ｏ兼制御回路１１２を、同じ集積回路基板の一部とすることができる（即ち、単一「チップ」内に形成される）。
【００１６】
Ｉ／Ｏ兼制御回路１１２は、不揮発性メモリセル１０８及びリマップ・データ構造１１０へのアクセスを可能にすることができる。不揮発性、メモリアレイ１０８に記憶されているファームウェアにアクセスするために、Ｉ／Ｏ兼制御回路１１２は、リマップ・データ構造１１０を用いて、どのＬＡ→ＰＡマッピングが有効であるかを特定することができ、次にこうしたマッピングを用いて、有効なファームウェア・イメージの論理アドレスを物理アドレスに向けることができる。
【００１７】
一部の実施形態では、所定の動作（例えば、パワー（電源）オン／リセットＰＯＲ（power-on/reset）、受信した命令、レジスタ設定）に応答して、メモリデバイス１０２はリマップ・データ構造１１０にアクセスして、ＬＡ→ＰＡマッピング構造を揮発性メモリ（図示せず）内に作成することができる。
【００１８】
コントローラ１０４は、システム１００の種々の機能を実行するための論理回路を含むことができる。一部の実施形態では、コントローラ１０４が、記憶されている命令１１６を実行することができる１つ以上のプロセッサ及び関連する回路を含むことができる。しかし、代案の実施形態は、カスタム（特注）論理回路及び／またはプログラム可能な論理回路（プログラマブル・ロジック）を含めた他のあらゆる適切な回路を含むことができる。コントローラ１０４は、メモリデバイス１０２とは異なるコントローラ・メモリ１０８へのアクセスを行うことができる。コントローラ・メモリ１０４は、あらゆる適切なメモリ回路で形成することができ、特定の実施形態では、ダイナミック・ランダムアクセスメモリ（ＤＲＡＭ）またはスタティックＲＡＭ（ＳＲＡＭ）のような揮発性メモリとすることができる。
【００１９】
システム１００の構成要素を説明してきた。システム１００における更新作業を以下に説明する。
【００２０】
図１Ａを参照すれば、システム１００は、最初に、現在のファームウェア・イメージ１１４を不揮発性メモリアレイ１０８の物理アドレスPAxから始まる位置に記憶することができる。システムの動作中に、現在のファームウェア・イメージ１１４がメモリデバイス１０２からＩ／Ｏ兼制御回路１１２によって読み出され、Ｉ／Ｏ兼制御回路１１２は、リマップ・データ構造１１０にアクセスすることによって、論理アドレス（LA_FWから始まることができる）を物理アドレス（PAxから始まることができる）に変換する。
【００２１】
図１Ａをさらに参照すれば、システム１００は新ファームウェア・イメージを受信することができる（動作１０３で示す）。コントローラ１０４は新ファームウェア・イメージ１１８をコントローラ・メモリ１０６に記憶することができる。新ファームウェア・イメージ１１８はネットワーク１２０から受信することができる。一部の実施形態では、ネットワーク１２０は無線ネットワークとすることができ、更新作業はＦＯＴＡ動作とすることができる。
【００２２】
図１Ｂを参照すれば、コントローラ１０４は新ファームウェア・イメージ１１８を不揮発性メモリアレイ１０８内にプログラムすることができる。新ファームウェア・イメージ１１８は現在のファームウェア・イメージ１１４が占めていない物理的位置にプログラムされることは明らかである。図示する実施形態では、新ファームウェア・イメージ１１８は、PAyから始まる物理アドレスの範囲を占めることができ、この範囲は現在のファームウェア１１４を記憶している物理アドレスの範囲とオーバーラップ（重複）しない。新ファームウェア・イメージ１１８は、不揮発性メモリアレイ１０８の種類及びアーキテクチャに適したあらゆる技術によりプログラムすることができる。一部の実施形態では、新ファームウェア・イメージ１１８用の物理アドレスをコントローラ１０４によって発生することができる。しかし、他の実施形態では、こうした物理アドレスは、Ｉ／Ｏ兼制御回路１１２がコントローラ１０４からの１つ以上の命令に応答して発生することができる。
【００２３】
図１Ｃを参照すれば、コントローラ１０４は、新ファームウェア・イメージ１１８をリマップ・データ構造１１０にマッピングする論理アドレス−物理アドレス（の対応関係）もプログラムすることができる。こうした動作は、図１Ｃ中に、”LA_FW=PAy”がエントリ１１０−１にプログラムされることによって示す。このようにして、システム１００がファームウェアにアクセスするために意図された論理アドレスを、新イメージ１１８の物理アドレスに割り当てることができる。しかし、図１Ｃに示すように、こうしたマッピングは効かない、というのはエントリ１１０−１が無効な状態を有し続けるからである。
【００２４】
図１Ｄを参照すれば、コントローラ１０４は、新たなマッピング・エントリを有効にプログラムすることによって、新ファームウェア・イメージを「有効」にすることができる。こうした動作は、図１Ｄ中に、エントリ１１０−１が有効（VAL）に変化し、エントリ１１０−０が無効になったことによって示している。不揮発性メモリアレイ１０８内に示すように、一旦、新たなマッピングが有効になると、PAxにあるファームウェア・イメージは無効な（例えば、期限切れの）ファームウェア・イメージ１１５になり、PAyにあるファームウェア・イメージが現在のファームウェア・イメージになって、システムによってアクセスされる。
【００２５】
一旦、新ファームウェア・イメージが有効になる（例えば、生きる）と、即座に、あるいは所定条件に応答してアクセスすることができる。多数の可能な例の内のほんの少数として、次のいずれか、あるいは全部の後に新たなマッピングが効力を生じることができる：デバイスまたはシステムの次回の電源投入またはリセット（ＰＯＲ：power-up or reset）動作、メモリデバイス１０２が所定の命令を受信すること、または所定の値がメモリデバイス１０２のコンフィギュレーション・レジスタに書き込まれること。
【００２６】
図１Ａ〜１Ｄに示すような動作は、ファームウェアの更新をトランスペアレントかつ即時にすることができ、同じメモリデバイス内の位置間でデータをコピーすることを必要としないようにすることができる。なお、一部の実施形態では、メモリデバイス１０２が２つの位置をファームウェア用に保持することができ、これら２つの位置間で新ファームウェア・イメージの各々を「スワップ」することができる。しかし、他の実施形態では、メモリデバイス１０２が３つ以上の記憶位置をファームウェア用に含むことができ、新ファームウェア・イメージを受信した際に、これらの種々の位置間を循環させる（種々の位置を順に使用する）ことができる。
【００２７】
コントローラ１０４はファームウェア位置用の物理アドレスを追跡することができるが、一部の実施形態では、Ｉ／Ｏ兼制御論理回路１１２がこうしたタスクを担って、コントローラ１０４から受信したファームウェア・データ値用の物理アドレスを発生することができる。
【００２８】
本明細書中に示す実施形態は、メモリデバイスによって実行される種々の動作を含むことができ、これらの動作は、ファームウェア・データを不揮発性メモリアレイの記憶位置にプログラムすること、リマップ・データ構造内に値（例えば、ＬＡ−ＰＡマッピングデータ、状態値、等）をプログラムすること、及び新バージョンのファームウェアを”有効”にする（即ち、システムにとって利用可能にする）ことを含む。こうした動作はあらゆる適切な方法で実現することができるが、図２Ａ及び２Ｂは実施形態による２つのやり方を示す。
【００２９】
図２Ａ及び２Ｂは、メモリデバイス２０２及び２０２’のブロック図である。特定の実施形態では、メモリデバイス２０２／２０２’を、図１Ａ〜１Ｄ中に１０２で示すものの特定の実現とすることができる。
【００３０】
図２Ａに、メモリデバイス２０２内のコンフィギュレーション・レジスタへのデータの書込みを示す。メモリデバイス２０２は、Ｉ／Ｏ回路２１２−０、制御論理回路２１２−１、リマップ・データ構造２１０、及びコンフィギュレーション・レジスタ２２２を含むことができる。データ値DATAをコンフィギュレーション・レジスタ２２２に書き込んで、ファームウェア更新作業における動作を開始するか可能にすることができる。ほんの少数の例として、このレジスタ設定によれば、次のいずれか、あるいは全部が発生し得る：新ファームウェア・イメージを「有効」にすることができる、ＰＡ→ＬＡのマッピングデータ（２１０−ｘ）をプログラムすることができる、メモリデバイスを、コントローラが新ファームウェアを記憶位置にプログラムすること（即ち、物理アドレス指定でアクセスすること）を可能にするモードにすることができる。コンフィギュレーション・レジスタ２２２に書き込むことは、データ及びレジスタ・アドレス（データ＋アドレス）をメモリデバイスに与えることを含むことができる。さらに、こうした動作は命令（例えば、レジスタに書き込む、等）を含むこともできる。
【００３１】
図２Ｂに、ファームウェア更新作業用の特定の命令を受信するメモリデバイス２０２’を示す。メモリデバイス２０２’は、図２Ａと同じアイテムを含むことができる。しかし、図２Ａとは異なり、ファームウェア更新作業中の動作はメモリデバイス２０２’にとって専用の命令によって実行することができる。従って、制御論理回路２１２−１は命令デコーダ２２４を含むことができる。１つ以上の命令に応答して、制御論理回路２１２−１’は、図２Ａのレジスタ書込みについて述べた動作のいずれか（即ち、新ファームウェアを「有効」にする、等）を実行することができる。一部の実施形態では、命令（命令）に１つ以上のデータ値（＋データ）を添付することができる。
【００３２】
図３は、他の実施形態によるメモリデバイス３０２のブロック図である。特定の実施形態では、図３は、図１Ａ〜１Ｄ中に１０２で示すもの、あるいは図２Ａ／Ｂ中に示すものの１つの実現とすることができる。
【００３３】
メモリデバイス３０２は、Ｉ／Ｏ回路３１２−０、制御論理回路３１２−１、リマップ・データ構造３１０、メモリセルアレイ３０８、Ｘ及びＹデコーダ３３４及び３３６、及びデータラッチ３３８を含むことができる。Ｉ／Ｏ回路３１２−０は、メモリデバイス３０２用のあらゆる適切なインタフェースを提供することができ、図示する非常に特別な実施形態では、チップ選択入力端子ＣＳ、クロック入力端子ＣＬＫ、シリアルＩ／Ｏ（ＳＩ／Ｏ０）端子、及び任意で１つ以上の追加的なシリアルＩ／Ｏ（ＳＩ／Ｏｎ）端子を含むことができる。十分に理解された技術によれば、メモリデバイス３０２はアクティブ（有効）なCS信号によってアクセスすることができ、ＳＩ／Ｏ０（及びＳＩ／Ｏｎ）端子上の命令、アドレス値、またはデータ値をＣＬＫ端子で受信したクロックに同期して受信することができる。しかし、こうした特定のインタフェースは限定的なものと考えるべきでない。代案の実施形態は種々のインタフェースを有するＩ／Ｏ回路を含むことができ、これらのインタフェースは、専用のアドレス線及びデータ線、非同期タイミング、並列バス、等を有するものを含む。
【００３４】
リマップ・データ構造３１０は、不揮発性の方法でデータを記憶して、最新のファームウェア・イメージを追跡してアクセスを可能にする。図示する実施形態では、リマップ・データ構造３１０が、ポインタデータ３２８、リマップ履歴データ３３０、及びマップメモリ３３２を含むことができる。リマップ履歴データ３３０は、新ファームウェア・イメージがメモリセルアレイ３０８内にプログラムされる毎に、ＬＡ→ＰＡマッピングデータを記憶することができる。従って、リマップ履歴データ３３０は、特定のファームウェアについてのすべてのマッピングの履歴を記憶することができる（ここでは最も古いエントリを最終的に上書きする）。ポインタデータ３２８は、最新のリマップ履歴データのエントリを指示することができ、従って最新のファームウェア・イメージのエントリを指示することができる。マップメモリ３３２内のデータは、リマップ履歴データ３３０よりも高速にアクセスすることができ、高速のＬＡ→ＰＡ変換を提供するように構成することができる。一部の実施形態では、マップメモリ３３２を揮発性のメモリ構造にすることができ、このメモリ構造に、ポインタデータ３２８が指示するリマップ履歴データを入れる。一部の実施形態では、ポインタデータ３２８及びリマップ履歴データ３３０を不揮発性メモリ回路に記憶する。こうした不揮発性メモリ回路は、メモリセルアレイ３０８の一部とすることができ、あるいはメモリセルアレイ３０８とは別個にすることができる。マップメモリ３３２は、ＳＲＡＭ及び／またはＤＲＡＭのような揮発性メモリ回路を含むことができる。
【００３５】
制御論理回路３１２−１は、メモリデバイス３０２の動作を、Ｉ／Ｏ回路３１２−０で受信した信号に従って実行することができる。図示する実施形態では、制御論理回路３１２−１が、ＰＯＲ回路３２６、命令デコーダ３２４、及びコンフィギュレーション・レジスタ３２２を含むことができる。ＰＯＲ回路３２６は、電源オンまたはリセット動作を検出及び／または開始することができる。命令デコーダ３２４は、Ｉ／Ｏ回路３１２−０で受信した命令を復号化することができる。コンフィギュレーション・レジスタ３２２は、メモリデバイス３０２が動作する方法を指示することができるコンフィギュレーション（設定）データを記憶することができる。一部の実施形態では、次のいずれかに応答して、新ファームウェア・イメージを動作状態にすることができる：ＰＯＲ回路３２６が電源オンまたはリセットの事象（イベント）を検出したこと、命令デコーダ３２４による１つ以上の命令の復号化、またはコンフィギュレーション・レジスタ３２２への所定データの書込み。新ファームウェア・イメージを動作状態にすることは、制御論理回路３１２−１がポインタデータ３２８にアクセスして、最新のファームウェア用のＬＡ→ＰＡマッピングをリマップ履歴データ３３０から見出すことを含むことができる。次に、制御論理回路３１２−１は、ＬＡ→ＰＡのルックアップ構造を、リマップ履歴データ３３０からマップメモリ３３２内に作成することができる。次に、制御論理回路３１２−１は、マップメモリ３３２にアクセスして、ファームウェアの論理アドレスに対して行う読出し要求を提供する。
【００３６】
メモリセルアレイ３０８は不揮発性メモリセルを含むことができ、これらの不揮発性メモリセルはＸ及びＹデコーダ（３３４／３３６）によって復号化（デコード）された物理アドレスによりアクセスされる。不揮発性メモリセルは、あらゆる適切な技術のものとすることができ、特定の実施形態では、シングル・トランジスタの「フラッシュ」型メモリとすることができる。メモリセルアレイ３０８は、あらゆる適切な編成を有することができ、特定の実施形態ではセクター単位で編成することができる。
【００３７】
データラッチ３３８は、メモリセルアレイ３０８から受信した読出しデータを、制御論理回路３１２によるＳＩ／Ｏ０（及び存在すればＳＩ／Ｏｎ）端子上への出力用に記憶することができる。データラッチ３３８は、ＳＩ／Ｏ０（及び存在すればＳＩ／Ｏｎ）端子上で受信した書込みデータを記憶することもできる。
【００３８】
図４は、特定の実施形態によるリマップ・データ構造４１０を示す図である。リマップ・データ構造４１０は、本明細書中の他の実施形態について示すものの１つの特定の実現とすることができる。リマップ・データ構造４１０は、ポインタデータ（FR_VEC）４２８、リマップ履歴データ（SMFLASH）４３０、及びマップメモリ（SMRAM）４３２を含むことができる。ポインタデータ４２８はビット値を含むことができ、このビット値はリマップ履歴データ４３０内の各エントリの索引（インデックス）となる。ポインタデータ４２８の最終ビット値は「０」の値を有し、最新のエントリとすることができる。従って、図４では、ポインタデータ４２８は、最新バージョンのファームウェア用のＬＡ→ＰＡマッピングを記憶するエントリ「ｎ−１」の索引となる。従って、マップメモリ４３２に記憶されているデータは、リマップ履歴データ４３０のエントリｎ−１に記憶されているデータに由来するものと理解するべきである。
【００３９】
新ファームウェア・イメージを受信すると、そのＬＡ→ＰＡマッピングをエントリ「ｎ」にプログラムして、こうした新ファームウェア・イメージを「有効」にすることができ、索引ｎに対するポインタのビット値を１〜０に変化させることができる。
【００４０】
種々のシステム、デバイス、及び対応する方法を以上に説明してきた。他の方法を以下に図５を参照しながら説明する。図５は、コントローラ及び単一のメモリデバイスによりファームウェアを更新する方法の流れ図である。方法５４０は、本明細書中に説明したシステムのいずれか、及びその等価物によって実行することができる。方法５４０では、メモリデバイスはフラッシュメモリデバイスとすることができるが、他の実施形態は他のあらゆる適切な技術に基づく不揮発性の記憶装置を含むことができる。
【００４１】
方法５４０は、初期化イベントが生じるメモリデバイスを含むことができ、図示する実施形態ではＰＯＲ型のイベント５４０−０とすることができる。こうしたイベントに応答して、メモリデバイスは、ＬＡ→ＰＡマッピングをリマップ履歴（例えば、SMFLASH）からマップメモリ（例えば、SMRAM）にロードすることができる。同じ動作（SMRAMに値を入れること）を生じさせることができる他の初期化イベントは、ほんの少数の例として、メモリデバイスに対する特定の命令またはコマンド（命令語）、あるいはメモリデバイスの１つ以上のコンフィギュレーション・レジスタの設定を含むことができる。
【００４２】
コントローラ（例えば、ＭＣＵ）は現在のファームウェア・イメージを起動することができる。こうした動作は、コントローラがＬＡを既知の最後のファームウェア・イメージの値に設定することを含むことができる。それに加えて、コントローラは最新のイメージの（メモリデバイス内の）物理アドレスの記録を有することもできる。図示する実施形態では、現在の論理アドレスが現在の物理アドレスに等しいものと仮定する。図５では、現在のファームウェア・イメージがセクター「Ｃ」に記憶されているものと理解され、セクター「Ｃ」は物理アドレスｃ１、ｃ２等を含む。
【００４３】
コントローラは新ファームウェア・イメージ５４０−４を受信することができる。こうした動作は、本明細書中に説明するもののいずれか、またはその等価物を含むことができ、新ファームウェア・イメージを無線接続上で受信してコントローラ・メモリ（ＲＡＭ）に記憶することを含む。
【００４４】
コントローラは、新ファームウェアをメモリデバイス５４０−６内にプログラムすることができる。こうした動作は、コントローラが論理アドレス及び物理アドレスをデータ用に割り当てて記録することを含むことができる。図示する実施形態では、割り当てた論理アドレスが割り当てた物理アドレスに等しいものと仮定する。図５では、新ファームウェア・イメージがセクター「Ｎ」に記憶されているものと理解し、セクター「Ｎ」は物理アドレスｎ１、ｎ２、等を含む。セクター「Ｎ」はセクター「Ｃ」とは異なり、セクター「Ｃ」とオーバーラップしないものと理解する。動作５４０−６は、一部の実施形態においてＬＡ→ＰＡマッピングをアプリケーション／ユーザに対して示すことができる方法を示す。
【００４５】
次に、コントローラはメモリデバイス上のリマップ履歴データ（SMFLASH）を更新して、新ファームウェア・イメージの位置５４０−８を記憶する。こうした動作は、コントローラが現在のファームウェア・イメージの論理アドレスを新ファームウェア・イメージの論理アドレスと交換することを含むことができる。図５では、このことは複数の論理アドレスのスワップを含むことができる。
【００４６】
方法５４０は、コントローラがメモリデバイス５４０−１０内の有効ビットをセットすることによってファームウェア更新を「有効」にすることをさらに含むことができる。図５では、このことは、図４のもののようなデータ構造内のビット（即ち、ポインタFR_VEC内のビット値）をセットすることを含むことができる。
【００４７】
新ファームウェア・イメージが「有効」にされ、メモリデバイスに他の初期化イベント５４０−０（例えば、ＰＯＲ、特別な命令／コマンド、コンフィギュレーション・レジスタの書込み）が生じると、コントローラは新たなイメージを起動し、即ちLA(cur_img)=N、ここにN=(n1, N2,...)となる。こうして、ファームウェア更新が即座に有効になる。
【００４８】
図６Ａ及び６Ｂは、実施形態に含めることができるメモリセルアレイ６０８用の構成を示す図である。図６Ａは、異なるプール６４２、６４４−０、６４４−１に物理的に分割されるメモリセルアレイ６０８を示す。各プール（６４２、６４４−０、６４４−１）はポインタ（WL_PTR0〜2）によってアドレス指定可能であり、これらのポインタは当該プールのベースアドレスを指示することができる。１つのプール６４２はファームウェア・プール６４２として指定することができ、少なくとも２つのファームウェア・イメージを収容することができるサイズを有する。図示するように、ファームウェア・プール６４２は、前のファームウェア・イメージ６１４を（物理アドレスc0〜ciに）記憶しつつ、新ファームウェア・イメージ６１８を（物理アドレスn0〜niに）プログラムすることができる。一部の実施形態では、ファームウェアが絶えず更新される間に、位置をスワップすることができる。例えば、一旦、新ファームウェア・イメージ６１８が「有効」になると、ファームウェア・イメージ６１８は現在のファームウェア・イメージになり、次の新ファームウェア・イメージが物理アドレスc0〜ciにプログラムされる。
【００４９】
図６はスワップ動作を示す。新ファームウェア・イメージ用の論理アドレスが一時的な値として記憶される（tmp=LA(new_img)）。新ファームウェア・イメージ用の論理アドレスが、現在のファームウェア・イメージの論理アドレスにセットされる（LA(new_img)=LA(cur_img)）。こうした動作は、（今度は期限切れの）現在のファームウェア・イメージを、次の新ファームウェア・イメージ用のデスティネーション（送り先）として指定する。次に、新たに受信したファームウェア・イメージを現在のファームウェア・イメージとして設定する（LA(cur_img)=tmp）。
【００５０】
もちろん、他の実施形態では、ファームウェア・プール６４２が３つ以上のファームウェア・イメージを収容することができ、従って、更新は、２つのアドレス範囲間だけでスワップするのではなく、複数のアドレス範囲の全部を通して順に行う。
【００５１】
図６Ａを参照すれば、一部の実施形態では、プール（６４２、６４４−０、６４４−１）をウェア・レベリング（損耗平準化）プールとすることができる。メモリセルアレイ６０８を含むメモリデバイスは、論理アドレス−物理アドレスのマッピングを、プール間で損耗（ウェア）が平準化されるように変更することができる。一部の実施形態では、ファームウェア・プール６４２を、ウェア・レベリング動作中に他のあらゆるプール（例えば、６４４−０／１）のように扱うことができる。即ち、一旦、ファームウェア・プール６４２へのアクセス数がある所定の閾値を超えると、新たなプール（例えば、６４４−０／１）をファームウェア・プールとして指定することができる。こうした実施形態では、複数のファームウェア・イメージを同じプール内に記憶して、ウェア・レベリング動作があるプールを動作から外して異なるプールに置き換えてプールを循環させる（順に使用する）場合に、マッピングデータを失うことを回避することができる。
【００５２】
図７を参照すれば、他の実施形態によるメモリデバイス７０２をブロック図の形で示す。メモリデバイス７０２は、本明細書中に示すものの１つの特定の実現とすることができる。メモリデバイス７０２は、複数のプール７４２／７４４−０〜７４４−ｋに分割されるメモリセルアレイ７０８を含むことができる。プール（７４２／７４４−０〜７４４−ｋ）毎に、対応するリマップ構造７１０−０〜７１０−ｋが存在することができる。リマップ構造（７１０−０〜７１０−ｋ）は、本明細書中に説明するもののいずれか、またはその等価物の形態をとることもでき、図７では図４のものと同様の構造を有するように示している。
【００５３】
一部の実施形態では、プール（７４２／７４４−０〜７４４−ｋ）をウェア・レベリング・プールとすることができ、従って、ウェア・レベリング基準に基づいて未使用にして、プールを順に使用することができる。図７のメモリデバイス７０２では、いずれのプール（７４２／７４４−０〜７４４−ｋ）もファームウェア・プールとして機能することができる、というのは、当該プールに対応するリマップ・データ構造が存在するからである。
【００５４】
一部の実施形態では、メモリセルアレイが、プログラム可能なサイズの物理的領域を有することができる。図８に、こうしたメモリセルアレイ８０８の一例を示す。メモリセルアレイ８０８は、プール８４２／８４４として示す異なる領域に分割可能な複数の記憶領域を含むことができる。これらのプールのサイズ及び物理的位置は、ポインタ値（WL_PTR0〜WL_PTR2）に応じてプログラム可能にすることができ、このポインタ値はベース物理アドレスを指示することができる。一部の実施形態では、こうしたプールをウェア・レベリング・プールにすることができる。従って、こうしたプールへのアクセスを監視するか、さもなければ追跡して、他のプールよりも多数回使用されたプールを循環（順次の使用）から外して、より損耗の小さいプールにアドレスをリマップ（再マッピング）することができる。
【００５５】
図８は、ポインタ値（WL_PTR0〜WL_PTR2）を用いてメモリセルアレイ８０８を分割することができる方法の例８４８を含む。例８４８は、１つだけのプール、２つのプール、及び３つのプールを含む。もちろん、十分な数のポインタ値が利用可能であるものとすれば、任意数のプールを作成することができる。こうした構成では、ファームウェアのサイズに応じてプールのサイズを調整することができる（即ち、少なくとも２つのイメージを記憶するのに十分なほど大きくする）。
【００５６】
実施形態によれば、現在のファームウェア・イメージから新たに受信したファームウェア・イメージへの迅速な切り換えを可能にするようにアクセスして修正することができるマッピングデータ構造を、メモリデバイスが記憶することができる。メモリデバイスは、あらゆる適切な方法で、あらゆる適切なプロトコルに従ってアクセスすることができるが、一部の実施形態では、チップ選択信号（ＣＳ）及び１つ以上のＩ／Ｏ線によりメモリデバイスにアクセスすることができる。図９Ａ〜９Ｄは、実施形態による、ファームウェアを更新するための、メモリデバイスへの入力信号を示すタイミング図である。こうした入力信号に応答して、メモリデバイスは次のいずれかを実行することができる：新ファームウェア・イメージを「有効」にすること、リマップ履歴データを更新する（例えば、新たなＬＡ→ＰＡマッピングを追加する）こと、メモリデバイスが新ファームウェア・イメージをプログラムするための準備をすること。
【００５７】
図９Ａ〜９Ｄの各々は、チップ選択信号（CSB）及びＩ／Ｏ信号（I/O）の波形を示す。Ｉ／Ｏは、メモリデバイスの１本のＩ／Ｏ線、または複数のこうしたＩ／Ｏ線とすることができる。図示する例では、Ｉ／Ｏ線上のデータをクロックCLKに同期して受信することができる。Ｉ／Ｏ線上で受信するデータのデータレートはあらゆる適切な形式をとることができ、シングル・データレート（１ビットサイクル）、ダブル・データレート（１サイクル当たり２ビット）、クワッド・データレート（２本のＩ／Ｏ線上で１サイクル当たり２ビット）、またはオクタル・データレート（４本のＩ／Ｏ線上で１サイクル当たり２ビット）を含む。
【００５８】
図９Ａにレジスタ書込み命令を示す。時刻ｔ０に、チップ選択信号がアクティブ（有効）になることができる。時刻ｔ１に、メモリデバイスが命令”WriteRegX”を受信することができる。時刻ｔ２におけるコンフィギュレーション（設定）データ（DATA(Reg)）が、これに続くことができる。こうした命令に応答して、メモリデバイスは、命令WriteRegXが示す１つ以上のレジスタにDATA(Reg)を書き込むことができる。こうしたレジスタにデータを書き込むことは、本明細書中に説明するファームウェア更新作業またはその等価物を制御すること、そのためのデータを提供すること、あるいは開始することができる。
【００５９】
図９Ｂにアドレス指定可能なレジスタ書込み命令を示す。時刻ｔ０に、チップ選択信号がアクティブになることができる。時刻ｔ１に、メモリデバイスが命令”WriteAddReg”を受信することができる。時刻ｔ２におけるアドレスデータ（ADD）、及び次の時刻ｔ３におけるコンフィギュレーションデータが、これに続くことができる。こうした命令に応答して、メモリデバイスは、アドレスデータADDが示すレジスタにDATAを書き込むことができる。こうしたレジスタにデータを書き込むことは、本明細書中に説明するファームウェア更新作業を制御すること、そのためのデータを提供すること、あるいは開始することができる。
【００６０】
図９Ｃに、一実施形態によるマッピング命令を示す。時刻ｔ０に、チップ選択信号がアクティブになることができる。時刻ｔ１に、メモリデバイスが命令”NewMap”を受信することができる。時刻ｔ２におけるデータ（DATA(Map)）がこれに続くことができる。こうした命令に応答して、新イメージ用のマッピングデータ（例えば、ＬＡ→ＰＡマッピング）を、本明細書中に説明するリマップ履歴データ構造またはその等価物に記憶することができる。値DATA(Map)はこのマッピングデータを含むことができる。
【００６１】
図９Ｄに、一実施形態による、新ファームウェア・イメージを「有効」にするための命令を示す。時刻ｔ０に、チップ選択信号をアクティブにすることができる。時刻ｔ１１に、メモリデバイスが命令”NewMapLive”を受信することができる。任意で、データ（DATA(Ptr)）がこれに続くことができる。こうした命令に応答して、提供されるべきファームウェア・イメージが転送されている際に、最新のマッピングデータの集合を示すことができる。一部の実施形態では、データを必要としない、というのは、メモリデバイス制御論理回路が新たなマッピング集合の値を更新することができるからである。しかし、他の実施形態では、DATA(Ptr)を用いてリマップ・データ構造（例えば、ポインタ値）をプログラムすることができる。こうした命令は、ファームウェア・イメージ間で、アトミックな（不可分の）即時の方法でスワップすることができる。
【００６２】
実施形態は、デバイスまたはモジュール用のファームウェアの更新を含むシステム、装置、及び方法を含むことができるが、実施形態は、各々がそれ自体のファームウェア更新を必要とし得る複数のデバイス／モジュールを有するシステムを含むこともできる。図１０はこうしたシステム１０００のブロック図である。
【００６３】
システム１０００は、テレマティクス（情報無線送受信）制御ユニット（ＴＣＵ：telematics control unit）（例えば、コントローラ）１００４、コントローラ・バス１０５０、システム開発ライフサイクル部１０５２、モジュール・バス１０５４−０〜１０５４−２、及びモジュール１０５５−０〜１０５５−１を含むことができる。モジュール（１０５５−０〜１０５５−１）の各々は、メモリデバイス（１００２−０〜１００２−２）に記憶されているファームウェアで動作する。ＴＣＵ１００４はプロセッサを含むことができ、このプロセッサはメモリデバイス（１００２−０〜１００２−２）に対して命令を発行することができる。ＴＣＵ１００４は無線トランシーバ（または受信機）１０５８を含むこともでき、無線トランシーバ１０５８は、ファームウェア更新を無線ネットワーク経由で受信する。特定の実施形態では、システム１０００を自動車制御システムにすることができ、ＴＣＵ１００４は、グローバル・ポジショニング・システム（ＧＰＳ：global positioning system：全地球測位システム）、１つ以上のプロセッサ、及びコントローラ・メモリをさらに含むことができる。
【００６４】
図１０は別個のモジュール・バス１０５４−０〜１０５４−２を示すが、他の実施形態では、２つ以上のモジュールを同じバスに接続することができる。さらに、他の実施形態では、コントローラ・バス１０５０をモジュール・バス（１０５４−０〜１０５４−２）と同じにすることができる。
【００６５】
システム１０００の種々の構成要素を説明してきた。システム１０００のＦＯＴＡ動作を以下に説明する。
【００６６】
最初に、メモリデバイス１００２−０〜１００２−２の各々が（更新されるべき）現在のファームウェア・イメージ１０１４／１０１５を記憶することができる。
【００６７】
2021506014.tif 000003
では、ＴＣＵ１００４が新ファームウェアを無線トランシーバ１０５８で受信することができ、新ファームウェアはネットワーク１０２０の無線接続１０５７上で送信される。ネットワーク１０２０は、あらゆる適切なネットワークとすることができ、一部の実施形態ではインターネット及び／またはセルラ・ネットワークとすることができる。図示する例では、全部のモジュール１０５５−０〜１０５５−２用の新ファームウェアを受信することができる。しかし、他の更新作業では、より少数のモジュールを更新することができることは明らかである。
【００６８】
2021506014.tif 000004
では、ＴＣＵ１００４が新ファームウェア・イメージをそれぞれのメモリデバイス１０５５−０〜１０５５−２へ送信することができる。こうした動作は、ＴＣＵ１００４が新ファームウェア・イメージをコントローラ・バス１０５０及びモジュール・バス１０５４−０上で送信することを含むことができる。一実施形態では、こうした動作がコントローラ・エリア・ネットワーク（ＣＡＮ：controller area network）型バス上でデータを送信することを含むことができる。
【００６９】
2021506014.tif 000005
では、モジュール１０５５−０〜１０５５−２が、新ファームウェア・モジュールを、対応するメモリデバイス１００２−０〜１００２−２のそれぞれの位置にプログラムすることができる。こうした動作は、本明細書中に説明するもののいずれか、またはその等価物を含むことができる。１つの特定の実施形態では、新ファームウェア・イメージ１０１８／１４を、メモリデバイスの「二次的」メモリページにプログラムすることができる（一次的メモリページは現在のファームウェア１０１４／１５を記憶する）。一部の実施形態では、新ファームウェア・イメージのプログラミングを、モジュール１０５５−０〜１０５５−２のローカルなプロセッサ（図示せず）で実現することができる。しかし、他の実施形態では、こうしたプログラミングをＴＣＵ１００４によって実行することができる。
【００７０】
2021506014.tif 000006
では、新ファームウェア・イメージ１０１８／１０１４を「有効」にすることができる（他のファームウェア・イメージ１０１４／１０１５はインアクティブ（無効）として指定することができる）。こうした動作は、ＴＣＵ１００４から受信した入力に応答して行うことができる。こうした入力は、本明細書中に説明する命令またはレジスタ書込み、あるいはその等価物、並びにモジュール１０５５−０〜１０５５−２のローカルなプロセッサによる帯域外シグナリング（信号伝達）または動作、あるいは他の適切なシグナリング方法を含むことができるが、それらに限定されない。
【００７１】
図１１は、他の実施形態によるシステム１１００のブロック図である。システム１１００は、コントローラ（ＭＣＵ）１１０４及びメモリデバイス１００２を含むことができる。メモリデバイス１００２は、少なくとも２つの異なるファームウェア・イメージ（１１１４、１１１８）間の切り換えを可能にすることができる。図示するように、コントローラ１１０４は、図１６Ｂに示す従来のシステムにおけるように、２つのチップ選択出力（CS1, CS2）を供給することができる。しかし、メモリデバイス１００２は、単一のメモリデバイス１００２及び単一のチップ選択（CS1）によるファームウェア・イメージ間の切り換えを管理することができるので、コントローラ１１０４は他のアプリケーションが利用可能な追加的なチップ選択出力CS2を有することができる。
【００７２】
実施形態は、１つ以上のコントローラ・デバイスと共に動作するメモリデバイスを有するシステムを含むことができるが、実施形態は、本明細書中に説明する異なるファームウェア・イメージ及びその等価物間の内部切り換えを可能にすることができるスタンドアロン（独立型）のメモリデバイスを含むこともできる。こうしたメモリデバイスは、同じパッケージ内に形成された複数の集積回路を含むことができるが、一部の実施形態では、メモリデバイスをコンパクトな単一の集積回路（即ち、チップ）にすることができることが有利である。図１２Ａ及び１２Ｂは、２つのパッケージ化された単一チップのメモリデバイス１２０２Ａ及び１２０２Ｂを示す。しかし、実施形態によるメモリデバイスは、回路基板上へのメモリデバイス・チップの直接的ボンディングを含めた他のあらゆる適切なパッケージ型を含むことができることは明らかである。
【００７３】
図１３Ａ〜１３Ｃを参照すれば、実施形態による種々のデバイスが一連の図中に示されている。図１３Ａは、更新可能なファームウェアで動作する多数のサブシステム（２つを１３００Ａ−０及び１３００Ａ−１で示す）を有することができる自動車１３６０Ａを示す。こうしたサブシステム（１３００Ａ−０、１３００Ａ−１）は、電子制御ユニット（ＥＣＵ：electronic control unit）及び／または先進運転支援システム（ＡＤＡＳ：advanced driver assistance system）を含むことができる。しかし、他の実施形態では、こうしたサブシステムが、多数の可能な例のうちのほんの２例として、ダッシュボード・ディスプレイ／制御サブシステム、及び／またはインフォテインメント・サブシステムを含むことができる。各サブシステム（１３００Ａ−０、１３００Ａ−１）は、コントローラ及びメモリデバイスを含むことができ、ＦＯＴＡ型の更新を含めた本明細書中に説明するファームウェアの動作、またはその等価物を用いることができる。
【００７４】
図１３Ｂに、ハンドヘルド（手持ち型）コンピュータ装置１３６０Ｂを示す。ハンドヘルド・コンピュータ装置１３６０Ｂはシステム１３００Ｂを含むことができ、システム１３００Ｂは、本明細書中に説明する装置１３６０Ｂまたはその等価物のファームウェア更新を実行するためのメモリデバイス１３０２及びコントローラ１３０４（現寸に比例して図示せず）を有する。
【００７５】
図１３Ｃにコントローラ・デバイス１３６０Ｃを示す。コントローラ・デバイス１３０６Ｃは、工業または住宅の動作を制御するように配備されたデバイスとすることができる。多数の可能な例のうちのほんの少数として、コントローラ・デバイス１３６０Ｃは、製造ライン上の機械類を制御することができ、建物用の電子ロックとすることができ、家庭電化製品を制御することができ、照明システムを制御することができ、あるいは灌漑システムを制御することができる。装置１３６０Ｃはシステム１３００Ｃを含むことができ、システム１３００Ｃは、本明細書中に説明するデバイス１３６０Ｃまたはその等価物のファームウェア更新を実行するためのメモリデバイス１３０２及びコントローラ１３０４（図示せず）を有する。
【００７６】
ここで図１４を参照すれば、一実施形態による方法が流れ図で示されている。方法１４６２は、システム用のファームウェアを記憶するメモリデバイスにおいて新ファームウェア・データを受信するステップを含むことができる（ブロック１４６２−０）。こうした動作は、メモリデバイスが、ファームウェア・データ用のプログラムまたは書込み命令を、メモリデバイス上のインタフェースを通して受信することを含むことができる。特定の実施形態では、こうした動作が、メモリデバイスがコントローラから命令を受信してファームウェア・データを所定の物理アドレスにプログラムすることを含むことができる。
【００７７】
受信したファームウェア・データは、不揮発性メモリセル内の、現在のファームウェア１４６２−２を記憶する位置とは異なる位置にプログラムすることができる。特定の実施形態では、こうした動作が、メモリデバイスが、ファームウェア・データを、フラッシュメモリアレイの１つ以上のセクターにプログラムすることを含むことができ、これらのセクターは、新ファームウェア用に指定され、現在のファームウェアを記憶するアドレス範囲とは異なる。なお、こうした動作は、ファームウェア・データをメモリデバイスのメモリセルアレイ内の１つの位置から、同じメモリデバイス内のメモリセルアレイの他の位置へコピーすることは含まない。
【００７８】
方法１４６２は、新ファームウェア用の新たなＬＡ→ＰＡマッピングを、メモリデバイス１４６２−４上の不揮発性の記憶領域内にプログラムすることを含むこともできる。一部の実施形態では、こうした動作が、こうしたデータをリマップ履歴データ構造内にプログラムすることを含むことができ、このリマップ履歴データ構造は、以前のバージョンのファームウェア用のこうしたマッピングを保持する。
【００７９】
方法１４６２は、不揮発性の状態値をメモリデバイス上にプログラムして、最新バージョンのファームウェア用の新たなＬＡ→ＰＡを示すステップを含むこともできる（ブロック１４６２−６）。一部の実施形態では、こうした動作が、ポインタデータ構造の値をプログラムすることを含むことができ、このポインタデータ構造はリマップ履歴データ構造内の１つのエントリを指示する。
【００８０】
図１５に、他の実施形態による方法１５６４を流れ図の形で示す。方法１５６４は、ＦＯＴＡ法とすることができ、新ファームウェア・イメージ用のデータを無線接続１５６４−０上で受信した時点を特定するステップを含むことができる。こうした動作は、コントローラが、システムの無線受信機がファームウェアの更新を受信した時点を検出することを含むことができる。
【００８１】
新ファームウェア・イメージのデータを受信しない（ブロック１５６４−０からの「いいえ」の）場合、方法１５６４は、ルックアップ構造により、必要なファームウェアにアクセスすることができる（ブロック１５６４−１８）。一部の実施形態では、こうした動作が、メモリデバイスがファームウェアの論理アドレスに対する読出し要求を受信することを含むことができ、こうした論理アドレスはルックアップ構造からのデータにより物理アドレスに変換される。特定の実施形態では、ルックアップ構造が揮発性メモリ内に常駐することができる。この時点で、システムのルックアップ構造は（新たに受信したあらゆるファームウェア・イメージに置き換えられることになる）現在のファームウェア・イメージに対応することは明らかである。
【００８２】
新ファームウェア・イメージのデータを受信した（ブロック１５６４からの「はい」の）場合、新ファームウェア・イメージのデータはシステムメモリに記憶することができる（ブロック１５６４−２）。一部の実施形態では、こうした動作が、新ファームウェア・イメージのデータを、コントローラ等によってアクセスされるＤＲＡＭまたはＳＲＡＭのような揮発性のシステムメモリに記憶することを含むことができる。
【００８３】
システム内のメモリデバイスのプログラム動作はブロック１５６４−４で開始することができる。こうした動作は、新ファームウェア・イメージを記憶するべき特定のメモリデバイスを決定することを含むことができる。一部の実施形態では、こうした動作が、コントローラが命令等をメモリデバイスに対して発行することを含むことができる。新ファームウェア・イメージは、メモリデバイスの不揮発性のセクター内の、現在のファームウェア・イメージを記憶している位置とは異なる位置にプログラムすることができる（ブロック１５６４−６）。こうした動作は、コントローラが、システムメモリに記憶されているファームウェア・イメージをメモリデバイスの不揮発性の記憶位置にプログラムすることを含むことができる。
【００８４】
新ファームウェア・イメージ用のＬＡ→ＰＡマッピングは、メモリデバイスの不揮発性の記憶領域内にプログラムすることができる（ブロック１５６４−８）。こうした動作は、こうしたデータをリマップ履歴データ構造内にプログラムすることを含めて、本明細書中に説明したもののいずれか、またはその等価物を含むことができ、リマップ履歴データ構造は、以前のファームウェア・イメージのマッピングを同じメモリデバイス内に保持することができる。
【００８５】
新たなＬＡ→ＰＡマッピングを指示するポインタをプログラムすることができる（ブロック１５６４−１０）。こうした動作は、リマップ履歴データ構造内の１つのエントリに対応するマルチ（多）ビット値内の１つのビットをセットすることを含めて、本明細書中に説明するもののいずれか、またはその等価物を含むことができる。こうしたポインタは、メモリデバイスの不揮発性の記憶領域に記憶することができる。
【００８６】
方法１５６４は、リセット型のイベントが発生したか否かを判定することができる（ブロック１５６４−１２）。リセット型のイベントは、メモリデバイスに、現在のファームウェア・イメージから新たにプログラムされた（「有効」な）ファームウェア・イメージへの論理アドレス・マッピングをリセットさせるイベントとすることができる。リセット型のイベントは、少数のみを挙げれば、ＰＯＲイベント、メモリデバイスが特定の命令またはレジスタ書込みを受信すること、あるいは特別な入力ピンにおける信号を含めて、あらゆる適切な形態をとることができるが、それらに限定されない。
【００８７】
リセット型のイベントが発生していないものと判定した（ブロック１５６４−１２からの「いいえ」の）場合、方法１５６４はルックアップ構造によるファームウェアへのアクセスを継続することができ（ブロック１５６４−１８）、このことは、ファームウェア・イメージを新たに受信したファームウェア・イメージに置き換えることを継続することができる。
【００８８】
リセット型のイベントが発生したものと判定した（ブロック１５６４−１２からの「はい」の）場合、メモリデバイスは、ポインタにより最新のＬＡ→ＰＡマッピングの集合にアクセスすることができる（ブロック１５６４−１４）（この集合は、新たに受信したファームウェア・イメージに対応する）。次に、メモリデバイスは、新ファームウェア・イメージに対応する新たなＬＡ→ＰＡルックアップ構造を作成することができる（ブロック１５６４−１６）。その結果、ブロック１５６４−１８のファームウェアのアクセスが今度は新ファームウェア・イメージになる。
【００８９】
本明細書中に説明する実施形態は、本明細書中に説明するファームウェア・イメージの更新またはその等価物を実行するために呼び出すことができるアプリケーション・プログラミング・インタフェース（ＡＰＩ：application programming interface）を含むことができる。新ファームウェア・イメージは、メモリデバイス内のある任意のアドレス範囲内にロードすることができ、このメモリデバイスは現在のファームウェア・イメージを他のアドレス範囲（addr_cur_img）内に記憶する。ＡＰＩは、こうしたアドレス情報を用いてファームウェアの更新を実行することができる。例えば、ＡＰＩは、”fota_switch(addr_cur_img, addr_new_img)”の形式を有することができる。
【００９０】
こうした構成は、ファームウェア・データをメモリデバイス内の１つの位置から他の位置へコピーしなければならない（例えば、ファームウェア・データを一旦書き込む／プログラムする）ことなしに、ファームウェアをアドレス空間内で「リロケート（移転）」する（即ち、旧ファームウェアへのアクセスから新ファームウェアへのアクセスに切り換える）ことを可能にすることができる。このリロケーション動作は「原子的」（即ち、単一バスのトランザクション）であり、本質的に即時である。例えば、本明細書中に述べるように、メモリデバイスに対する命令またはレジスタ書込みは、新ファームウェアへのリマッピング（再マッピング）を導入することができる。
【００９１】
本発明の実施形態は、異なるファームウェア・イメージを記憶するための複数のフラッシュメモリの使用を低減または解消することができることが有利である、というのは、異なるファームウェア・イメージを１つのメモリデバイスに記憶して、新イメージを一度記憶すると、新イメージへの即時の切り換えを行うことができるからである。このことは必要とするメモリデバイスがより少数であるので、システムのコストを低減することができる。それに加えて、通常は、異なるファームウェア・イメージを有する複数のフラッシュメモリを同じバス上に含むシステムが、バス上の１つのデバイス（またはより少数のデバイス）だけで、同じ結果を達成することができる。このことは、バスの容量を低減してシステムの性能を増加させる（即ち、バス速度を増加させる）ことができる。
【００９２】
本発明の実施形態は、システムが、１つのチップ選択出力に接続された１つのメモリデバイスで、ファームウェア・イメージ間の瞬時の切り換えを行うことを可能にする。このことはコストを低減する、というのは、より少数のチップ選択出力を有するコントローラ・デバイスを使用することができるからである。それに加えて、あるいはその代わりに、システム設計におけるより大きな自由度が存在し得る、というのは、１つ以上のチョップ選択出力が、今度は他のユーザ（即ち、ファームウェア・イメージにアクセス中でないユーザ）にとって自由になるからである。
【００９３】
これら及び他の利点は当業者にとって明らかである。
【００９４】
本明細書全体を通して、「一実施形態」または「実施形態」への言及は、その実施形態に関連して説明する特定の特徴、構造、または特性が本発明の少なくとも１つの実施形態に含まれることを意味することは明らかなはずである。従って、本明細書の種々の部分における「実施形態」または「一実施形態」または「代案の実施形態」への２回以上の言及は、必ずしも全部が同じ実施形態を参照するわけではないことを強調し、そのことは明らかなはずである。さらに、本発明の１つ以上の実施形態では、特定の特徴、構造、または特性を適切に組み合わせることができる。
【００９５】
同様に、以上の本発明の好適な実施形態の説明では、発明の種々の態様のうちの１つ以上の理解に役立つ開示を簡素化する目的で、本発明の種々の特徴は、時として、単一の実施形態、図面、またはその説明において一緒にグループ化されていることは明らかである。しかし、こうした開示の方法は、特許請求の範囲が、各請求項中に明示的に記載した以上の特徴を要求するという意図を反映するものとして解釈するべきでない。むしろ、本発明の態様は、以上に開示した単一の実施形態の全部の特徴よりも範囲が小さい。従って、詳細な説明に続く特許請求の範囲は、これにより、この詳細な説明中に明示的に含まれ、各請求項は、本発明の別個の実施形態として自立する。
【図１−１】
2021506014.tif 000007
【図１−２】
2021506014.tif 000008
【図２】
2021506014.tif 000009
【図３】
2021506014.tif 000010
【図４】
2021506014.tif 000011
【図５】
2021506014.tif 000012
【図６】
2021506014.tif 000013
【図７】
2021506014.tif 000014
【図８】
2021506014.tif 000015
【図９】
2021506014.tif 000016
【図１０】
2021506014.tif 000017
【図１１】
2021506014.tif 000018
【図１２Ａ】
2021506014.tif 000019
【図１２Ｂ】
2021506014.tif 000020
【図１３Ａ】
2021506014.tif 000021
【図１３Ｂ】
2021506014.tif 000022
【図１３Ｃ】
2021506014.tif 000023
【図１４】
2021506014.tif 000024
【図１５】
2021506014.tif 000025
【図１６】
2021506014.tif 000026
【手続補正書】
【提出日】令和2年7月29日(2020.7.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
物理アドレスによりアクセス可能な複数の記憶位置を有するメモリセルアレイと、
リマップ・データ構造と、
前記メモリセルアレイ及び前記リマップ・データ構造に結合された制御論理回路とを具えたメモリデバイスであって、
前記記憶位置のそれぞれは別個の領域内に配置され、
前記リマップ・データ構造は、
複数の不揮発性のエントリを有するマッピング履歴部分であって、
前記領域内に記憶されている異なるバージョンのファームウェア用の論理アドレス（ＬＡ）と物理アドレス（ＰＡ）との間のマッピングの集合を記憶して、前記メモリデバイスに記憶されている複数のバージョンのファームウェア用のＬＡ−ＰＡのマッピングの履歴を形成するように構成されたマッピング履歴部分と、
前記マッピングの集合のうちの１つを前記メモリデバイスにおける有効な集合として識別するように構成された不揮発性の状態部分とを含み、
前記制御論理回路は、前記記憶位置及び前記リマップ・データ構造へのアクセスを可能にするように構成され、
前記メモリセルアレイ及び前記リマップ・データ構造は、同じ集積回路基板上に形成されているメモリデバイス。
【請求項２】
前記有効な集合の論理アドレス−物理アドレスのマッピングを記憶するように構成された揮発性メモリ回路をさらに具え、
前記制御論理回路が、受信した論理アドレスに応答して前記揮発性メモリ回路にアクセスするように構成されている、請求項１に記載のメモリデバイス。
【請求項３】
前記制御論理回路が命令デコーダをさらに含み、該命令デコーダは、受信した命令に応答して前記リマップ・データ構造へのアクセスを可能にするように構成されている、請求項１に記載のメモリデバイス。
【請求項４】
前記制御論理回路が少なくとも１つのコンフィギュレーション・レジスタをさらに含み、該コンフィギュレーション・レジスタは、前記メモリデバイスへのレジスタ書込み動作によりアクセス可能であり、前記少なくとも１つのコンフィギュレーション・レジスタは、前記マッピング履歴部分用のデータ、及び前記状態部分用のデータから成るグループから選択したいずれかを記憶するように構成されている、請求項１に記載のメモリデバイス。
【請求項５】
前記制御論理回路がパワーオン・リセット回路をさらに含み、該パワーオン・リセット回路は、前記メモリデバイスにおける電源オンまたはリセットの事象に応答して、前記有効な集合の論理アドレスを、前記メモリデバイスに記憶されているファームウェア用の最新のアドレスとして設定するように構成されている、請求項１に記載のメモリデバイス。
【請求項６】
入力／出力（Ｉ／Ｏ）部分をさらに含み、該Ｉ／Ｏ部分は、少なくとも１つのチップ選択入力端子、少なくとも１つのクロック入力端子、及び少なくとも１つの双方向シリアルデータ入力／出力端子を含む、請求項１に記載のメモリデバイス。
【請求項７】
前記メモリセルアレイが、複数のプールの形に配列された複数のフラッシュメモリセルを具え、前記別個の領域が第１の前記プール内に配置され、
前記制御論理回路が、残りの前記プールへのアクセスを、ウェア・レベリング・アルゴリズムに従って変化させるように構成されている、請求項１に記載のメモリデバイス。
【請求項８】
新ファームウェア・イメージをメモリデバイスにおいて受信するステップと、
前記新ファームウェア・イメージを前記メモリデバイスの不揮発性の記憶位置にプログラムするステップであって、前記新ファームウェア・イメージ用の前記記憶位置が、同じ前記メモリデバイス内の、現在のファームウェア・イメージが記憶されている記憶位置とは異なるステップと、
前記新ファームウェア・イメージ用の論理アドレス（ＬＡ）−物理アドレス（ＰＡ）のマッピングの集合を、前記メモリデバイスの不揮発性のマッピング回路内の複数の異なるエントリのうちの１つにプログラムするステップであって、前記マッピング回路内の１つのエントリが、前記現在のファームウェア・イメージ用のＬＡ−ＰＡのマッピングの集合も含み、前記エントリが、前記メモリデバイスに記憶されている複数のバージョンのファームウェア用のＬＡ−ＰＡのマッピングの履歴を形成するステップと、
前記メモリデバイスの不揮発性の状態回路内に状態値をプログラムして、前記新ファームウェア・イメージ用のＬＡ−ＰＡのマッピングの集合を、前記メモリデバイスに記憶されている有効なファームウェア・イメージとして示し、前記現在のファームウェア・イメージ用のＬＡ−ＰＡのマッピングの集合を、無効なファームウェア・イメージとして示すステップであって、前記状態回路が、異なる前記履歴を形成するエントリ毎に状態値を含むステップと
を含む方法。
【請求項９】
前記新ファームウェア・イメージを前記メモリデバイスの前記不揮発性の記憶位置にプログラムするステップが、フラッシュメモリデバイスのセクターをプログラムすることを含む、請求項８に記載の方法。
【請求項１０】
前記状態値をプログラムするステップが、前記メモリデバイスに記憶されている前記ＬＡ−ＰＡのマッピングの集合毎に１ビットを有するマルチビット・ポインタ・データ構造内の少なくとも１ビットをプログラムすることを含む、請求項８に記載の方法。
【請求項１１】
前記新ファームウェア用のＬＡ−ＰＡのマッピングの集合をプログラムするステップが、所定の命令及びデータを前記メモリデバイスにおいて受信すること、及び前記メモリデバイスの少なくとも１つの所定のレジスタにデータを書き込むことから成るグループから選択した動作を含む、請求項８に記載の方法。
【請求項１２】
前記新ファームウェア・イメージにおける前記状態値をプログラムするステップが、所定の命令及びデータを前記メモリデバイスにおいて受信すること、及び前記メモリデバイスの少なくとも１つの所定のレジスタにデータを書き込むことから成るグループから選択した動作を含む、請求項８に記載の方法。
【請求項１３】
所定の条件に応答して、前記新ファームウェア・イメージの前記ＬＡ−ＰＡのマッピングの集合のうちの１つのＬＡ−ＰＡのマッピングを揮発性メモリ内に生成するステップと、
前記揮発性メモリにアクセスして、前記新ファームウェア・イメージからデータを読み出すステップと
をさらに含む、請求項８に記載の方法。
【請求項１４】
前記所定の条件が、前記メモリデバイスにおけるパワーオン・リセット動作、所定の命令を前記メモリデバイスにおいて受信したこと、及び前記メモリデバイスの少なくとも１つの所定のレジスタにデータを書き込むことから成るグループから選択したいずれかを含む、請求項１３に記載の方法。
【請求項１５】
不揮発性メモリデバイスと、
プロセッサ回路と、
無線トランシーバとを具えたシステムであって、
前記不揮発性メモリデバイスは、
異なる物理アドレスを有する領域を有するメモリセルアレイであって、前記システム用の異なるファームウェア・イメージを記憶するメモリセルアレイと、
受信したファームウェア・イメージ用の論理アドレス（ＬＡ）−物理アドレス（ＰＡ）のマッピングを不揮発性の記憶回路内の複数のエントリのうちの１つに記憶して、前記受信したファームウェア・イメージ用のＬＡ−ＰＡのマッピングの履歴を維持するように構成されたマッピング履歴部分と、
前記システムによってアクセスされる現在のファームウェア・イメージを識別するデータを不揮発性の記憶回路内に記憶するように構成されたファームウェア状態部分とを含み、
前記プロセッサ回路は、記憶されているプロセッサ命令を実行して、
新ファームウェア・イメージをシステムメモリに記憶し、
前記不揮発性メモリデバイスに記憶されている前記現在のファームウェア・イメージを乱すことなしに、前記システムメモリからの前記新ファームウェア・イメージを、前記不揮発性メモリデバイス内の前記領域のうちの１つにプログラムし、
前記新ファームウェア・イメージ用のＬＡ−ＰＡのマッピングを、前記不揮発性メモリデバイスの前記マッピング履歴部分内にプログラムし、
前記新ファームウェア・イメージ用のＬＡ−ＰＡのマッピングが前記システムによって読み込まれて、前記不揮発性メモリデバイスに記憶されている以前のバージョンのファームウェア・イメージのいずれとも異なるファームウェア・データがアクセスされることを示すように、前記ファームウェア状態部分をプログラムする
ように構成され、
前記無線トランシーバは、前記新ファームウェア・イメージを無線ネットワーク上で受信するように構成されているシステム。
【請求項１６】
前記新ファームウェア・イメージ用のＬＡ−ＰＡのマッピングをプログラムすることが、前記プロセッサ回路が所定の命令及びデータを前記不揮発性メモリデバイスに対して発行すること、及び前記プロセッサ回路が前記不揮発性メモリデバイスの少なくとも１つの所定のレジスタにデータを書き込むことから成るグループから選択したいずれかを含む、請求項１５に記載のシステム。
【請求項１７】
前記ファームウェア状態部分をプログラムすることが、前記プロセッサ回路が所定の命令を前記不揮発性メモリデバイスに対して発行すること、及び前記プロセッサ回路が前記不揮発性メモリデバイスの少なくとも１つの所定のレジスタにデータを書き込むことから成るグループから選択したいずれかを含む、請求項１５に記載のシステム。
【請求項１８】
前記プロセッサ回路が、前記新ファームウェア・イメージを受信する前に、前記不揮発性メモリデバイスに記憶されている以前のファームウェア・イメージにチップ選択信号によりアクセスするように構成され、
前記プロセッサ回路が、前記新ファームウェア・イメージを受信した後に、同じ前記チップ選択信号により前記新ファームウェア・イメージにアクセスするように構成されている、
請求項１５に記載のシステム。
【請求項１９】
前記不揮発性メモリデバイスが少なくとも１つのプールを含み、該プールの各々が、
複数のレジスタと、
前記プール用のマッピング履歴部分と、
前記プール用のファームウェア状態部分と
を含む、請求項１５に記載のシステム。
【請求項２０】
前記状態部分が、前記マッピング履歴部分のエントリ毎に１ビットを有するマルチビット・ポインタ・データ構造内の少なくとも１ビットを含む、請求項１に記載のメモリデバイス。
【請求項２１】
前記ファームウェア状態部分が、前記マッピング履歴部分のエントリ毎に１ビットを有するマルチビット・ポインタ・データ構造内の少なくとも１ビットを含む、請求項１５に記載のシステム。
【国際調査報告】
2021506014.tif 000027
2021506014.tif 000028
2021506014.tif 000029