(57)【要約】デバイスをブートするシステムとプロセスとが、デバイスに関連付けられたリセット信号を検出し、不揮発性メモリ・ロケーションから不揮発性メモリに関連付けられたレジスタに所定のデータのページを読み出すことによって実装され得る。データのページのそれぞれが不揮発性メモリから一体として読み出され、ページのデータがデバイスのブートに用いられる命令を含むように不揮発性メモリは設計され実装されてもよい。レジスタに記憶されたデータをリードするコマンドが受信され、コマンドはレジスタ内の１以上の命令のロケーションを特定するアドレスを含み得る。これに応答して、１以上の命令はプロセッサによる実行のためにレジスタから読み出される。【選択図】図１
2009533770.tif 000002
【特許請求の範囲】
【請求項１】
デバイスをブートする方法であって、
前記デバイスに関連付けられたリセット信号を検出する工程と、
不揮発性メモリ・ロケーションから該不揮発性メモリに関連付けられたレジスタに所定のデータのページを読み出す工程であって、データのページのそれぞれは一体として該不揮発性メモリから読み出され、該データのページは前記デバイスのブートに用いる命令を含む工程と、
前記レジスタに記憶されたデータをリードするコマンドを受信する工程であって、該コマンドは該レジスタ内の少なくとも一つの命令のロケーションを特定するアドレスを含む工程と、
プロセッサによる実行のために前記レジスタから前記少なくとも一つの命令を読み出す工程と
を備えることを特徴とする方法。
【請求項２】
前記少なくとも一つの命令は、該少なくとも一つの命令を別のメモリに記憶せずに前記プロセッサで直接実行するために前記レジスタから読み出されることを特徴とする請求項１に記載の方法。
【請求項３】
前記少なくとも一つの命令を読み出す工程は、ＸＩＰの一部として実行されることを特徴とする請求項１に記載の方法。
【請求項４】
前記不揮発性メモリは、ＮＡＮＤフラッシュメモリを備えることを特徴とする請求項１に記載の方法。
【請求項５】
所定のデータのページを読み出す工程は、前記リセット信号の検出に応答して自動的に実行されることを特徴とする請求項１に記載の方法。
【請求項６】
前記レジスタに記憶されたデータをリードする複数のコマンドを受信する工程であって、該複数のコマンドに応答してリードされた前記データは、前記プロセッサに関連付けられたランダムアクセスメモリに別個のブートローダ・コードをロードするコードを備える工程をさらに備えることを特徴とする請求項１に記載の方法。
【請求項７】
前記別個のブートローダは、前記不揮発性メモリから前記ランダムアクセスメモリにオペレーティング・システム又はアプリケーション・コードをロードするように構成されることを特徴とする請求項６に記載の方法。
【請求項８】
前記不揮発性メモリは、前記レジスタに記憶されたデータをリードするコマンドに応答して該レジスタの任意のバイトにランダムアクセスできるように構成されることを特徴とする請求項１に記載の方法。
【請求項９】
前記プロセッサからの命令フェッチ・コマンドを、前記レジスタに記憶されたデータをリードする少なくとも一つのコマンドに変換する工程をさらに備えることを特徴とする請求項１に記載の方法。
【請求項１０】
データ処理装置に動作を実行させる命令を記憶したマシンで読み取り可能な記憶媒体であって、該動作は、
リセット信号を受信する工程と、
前記リセット信号に応答してＮＡＮＤフラッシュメモリ内のストレージ・ロケーションから該ＮＡＮＤフラッシュメモリのためのレジスタに所定のデータのページをロードする工程であって、該データのページは該ＮＡＮＤフラッシュメモリに記憶されたブートローダ・コードを読み出す命令を含む工程と、
前記レジスタ内の前記命令のＸＩＰを実行する工程と
を備えることを特徴とする記憶媒体。
【請求項１１】
前記リセット信号はホスト・デバイス内のプロセッサにより受信され、前記ホスト・デバイスは前記所定のデータのページをロードするように前記ＮＡＮＤフラッシュメモリに命令することを特徴とする請求項１０に記載の記憶媒体。
【請求項１２】
前記リセット信号は前記ＮＡＮＤフラッシュメモリにより受信され、前記ＮＡＮＤフラッシュメモリは前記リセット信号に応答して前記所定のデータのページをロードすることを特徴とする請求項１０に記載の記憶媒体。
【請求項１３】
ＸＩＰを実行する工程は、
１以上のコマンドをプロセッサから受信する工程であって、各コマンドは前記レジスタ内の対応する１以上のデータのバイトをリードする命令を提供する工程と、
各コマンドに応答して前記対応する１以上のデータのバイトを前記プロセッサに送信する工程と
を備えることを特徴とする請求項１０に記載の記憶媒体。
【請求項１４】
前記対応する１以上のデータのバイトは、該１以上のデータのバイトを別個のランダムアクセスメモリにさらに記憶せずに前記プロセッサにより実行するために前記レジスタから送信されることを特徴とする請求項１３に記載の記録媒体。
【請求項１５】
前記レジスタ内の異なるアドレスからのコードのリードと実行とを繰り返す工程を備える動作を、データ処理装置にさらに実行させる命令を記憶する請求項１０に記載の記憶媒体。
【請求項１６】
前記レジスタ内の前記命令は、プロセッサによる実行のために前記ＮＡＮＤフラッシュメモリから別個のランダムアクセスメモリに追加のブートローダ・コードをリードするローダ・コードを備えることを特徴とする請求項１０に記載の記憶媒体。
【請求項１７】
前記ブートローダ・コードは、ファイルシステムを用いてＮＡＮＤフラッシュメモリからアプリケーション又はオペレーションシステムのコードを読み出すように構成されることを特徴とする請求項１６に記載の記憶媒体。
【請求項１８】
前記ローダ・コードと前記ブートローダ・コードとは、ローレベル・アクセス技術を用いてＮＡＮＤフラッシュメモリに記憶されたデータにアクセスすることを特徴とする請求項１６に記載の記憶媒体。
【請求項１９】
不揮発性メモリであって、
ページにグループ化された第１の複数のメモリ・ロケーションであって、データのページのそれぞれは第２の複数のメモリ・ロケーションを含み、該第２の複数のメモリ・ロケーションは該第１の複数のメモリ・ロケーションよりも数が少なく、前記メモリ・ロケーション内のデータは各ページ全体として読み出すことによりアクセス可能である第１の複数のメモリ・ロケーションと、
レジスタと、
所定の条件に応答して前記レジスタに所定のデータのページを読み出すように構成され、前記レジスタ内のアドレスのデータを読み出すことによって、所定の受信コマンドに応答するように構成されるコントローラと
を備えることを特徴とする不揮発性メモリ。
【請求項２０】
前記所定の条件は、リセット信号の受信を備えることを特徴とする請求項１９に記載の不揮発性メモリ。
【請求項２１】
前記所定の受信コマンドは、プロセッサから受信され、前記レジスタ内の前記アドレスの指標を含むことを特徴とする請求項１９に記載の不揮発性メモリ。
【請求項２２】
前記読み出されたデータは、前記受信コマンドに応答してＸＩＰのためにプロセッサに送信されることを特徴とする請求項１９に記載の不揮発性メモリ。
【請求項２３】
ブート・システムであって、
デバイスのための所定の条件を検出する手段と、
不揮発性メモリ・ロケーションから該不揮発性メモリに関連付けられたレジスタに所定のデータのページを読み出す手段であって、データのページのそれぞれは一体として該不揮発性メモリから読み出され、該データのページは前記デバイスのブートに用いる命令を含む手段と、
前記レジスタに記憶されたデータをリードするコマンドを受信する手段であって、該コマンドは該レジスタ内の少なくとも一つの命令のロケーションを特定するアドレスを含む手段と、
データをリードする前記コマンドに応答して前記レジスタから前記少なくとも一つの命令を送信する手段と
を備えることを特徴とするブート・システム。
【請求項２４】
前記少なくとも一つの命令のＸＩＰを実行する手段をさらに備えることを特徴とする請求項２３に記載のブート・システム。
【請求項２５】
前記少なくとも一つの命令は、前記不揮発性メモリからブートローダ・コードを読み出す命令を備え、前記システムは前記ブートローダ・コードを読み出して実行する手段をさらに備えることを特徴とする請求項２３に記載のブート・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本記載は、処理デバイスのブートに関し、より詳しくはＮＡＮＤフラッシュメモリからの直接的なブートに関する。
【０００２】
本出願は２００６年４月１０日に出願された米国特許出願１１／４００８５４号の優先権を主張する。
【背景技術】
【０００３】
一般的に、処理デバイスがオンにされた場合に、オペレーティング・システムとソフトウェア・アプリケーションとのうちの少なくともいずれかをデバイス用のメインメモリ（例えばランダムアクセスメモリ（ＲＡＭ））にロードするブート・シーケンスが開始される。処理デバイスのハードウェアは一般的に、オペレーティング・システムをロードする役割を果たすソフトウェア・コードの小さな部分を用いる。ひとたびロードされると、オペレーティング・システムはデバイスにより実行される動作を制御するのに用いられてもよい。
【０００４】
ブート・シーケンスは、オペレーティング・システムを実際にロードするのに用いられるコードを見つけるためにブートローダを用いることを含む。一般的なコンピュータにおいて、ブートローダまたは基本入出力システム（ＢＩＯＳ）はリードオンリーメモリ（ＲＯＭ)内にまたはＮＯＲフラッシュメモリ内に特定のアドレスで記憶され、ブート・コードまたはその他のアプリケーション・コードが配置される他のロケーションへのポインタとしての役割を果たす。同様に、ＭＰ３プレーヤや携帯情報端末（ＰＤＡ）のような、一般的なハンドヘルド・デバイスにおいて、ブートローダはＲＯＭ内にまたはＮＯＲフラッシュメモリ内に記憶される。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ブートローダ・コードを記憶するためのＲＯＭまたはＮＯＲフラッシュの使用は、比較的費用がかかる。
【課題を解決するための手段】
【０００６】
技術およびシステムは、ＮＡＮＤフラッシュメモリに、または、記憶されたデータの個々のバイトまたは個々の命令をアドレス指定することが従来のシステムではサポートされていないその他の不揮発性記憶デバイスに記憶された命令のＸＩＰ（ｅｘｅｃｕｔｉｏｎ  ｉｎ  ｐｌａｃｅ）を可能とするように実装され得る。
【０００７】
ある一般的な態様では、デバイスに関連付けられたリセット信号が検出される。これに応答して、所定のデータのページが不揮発性メモリ・ロケーションから不揮発性メモリに関連付けられたレジスタにを読み出され、データのページのそれぞれは一体として不揮発性メモリから読み出され、データのページはデバイスのブートに用いる命令を含む。レジスタに記憶されたデータをリードするコマンドが受信される。このコマンドはレジスタ内の１以上の命令のロケーションを特定するアドレスを含む。その後、１以上の命令がプロセッサによる実行のためにレジスタから読み出される。
【０００８】
実装は以下の特徴の１以上を含むことができる。１以上の命令は、命令を別のメモリに記憶せずにプロセッサで直接実行するためにレジスタから読み出される。１以上の命令を読み出すことは、ＸＩＰの一部として実行される。前記不揮発性メモリは、ＮＡＮＤフラッシュメモリである。所定のデータのページを読み出すことは、リセット信号の検出に応答して自動的に実行される。レジスタに記憶されたデータをリードする複数のコマンドが受信され、このコマンドに応答してリードされたデータは、プロセッサに関連付けられたランダムアクセスメモリに別個のブートローダ・コードをロードするコードを含む。別個のブートローダは、不揮発性メモリからランダムアクセスメモリにオペレーティング・システム又はアプリケーション・コードをロードするように構成される。不揮発性メモリは、レジスタに記憶されたデータをリードするコマンドに応答してレジスタの任意のバイトにランダムアクセスできるように構成される。前記プロセッサからの命令フェッチ・コマンドは、レジスタに記憶されたデータをリードする少なくとも一つのコマンドに変換される。
【０００９】
リセット信号はホスト・デバイス内のプロセッサにより受信され、ホスト・デバイスは所定のデータのページをロードするようにＮＡＮＤフラッシュメモリに命令する。または、リセット信号はＮＡＮＤフラッシュメモリにより受信され、ＮＡＮＤフラッシュメモリはリセット信号に応答して所定のデータのページをロードする。ＸＩＰを実行することは、１以上のコマンドをプロセッサから受信することであって、各コマンドはレジスタ内の対応する１以上のデータのバイトをリードする命令を提供することと、各コマンドに応答して対応する１以上のデータのバイトをプロセッサに送信することとを含む。コードは、レジスタ内の異なるアドレスからの繰り返しリードされ実行される。レジスタ内の前記命令は、プロセッサによる実行のために不揮発性メモリから別個のランダムアクセスメモリに追加のブートローダ・コードをリードするローダ・コードを含む。ブートローダ・コードは、ファイルシステムを用いて不揮発性メモリからアプリケーション又はオペレーションシステムのコードを読み出すように構成される。ローダ・コードとブートローダ・コードとは、ローレベル・アクセス技術を用いて不揮発性メモリに記憶されたデータにアクセスする。
【００１０】
別の一般的な形態では、不揮発性メモリは、ページにグループ化された第１の複数のメモリ・ロケーションを含み、データのページのそれぞれは第２の複数のメモリ・ロケーションを含む。該第２の複数のメモリ・ロケーションは該第１の複数のメモリ・ロケーションよりも数が少なく、メモリ・ロケーション内のデータは各ページ全体として読み出すことによりアクセス可能である。レジスタがメモリ・ロケーションから読み出されたデータのページを一時記憶するために用いられ、コントローラが所定の条件に応答してレジスタに所定のデータのページを読み出すように構成され、さらに、レジスタ内のアドレスのデータを読み出すことによって、所定の受信コマンドに応答するように構成される。
【００１１】
実装は以下の特徴の１以上を含むことができる。所定の条件は、リセット信号を受信することを含む。所定の受信コマンドは、プロセッサから受信され、レジスタ内のアドレスの指標を含む。読み出されたデータは、受信コマンドに応答してＸＩＰのためにプロセッサに送信される。
【発明を実施するための最良の形態】
【００１２】
１以上の実装の詳細が添付の図面と以下の記述とで説明される。その他の特徴は、記述と図面とから、および請求の範囲から明らかであるだろう。
【００１３】
様々な図面において同様の参照符号は同様の要素を指し示す。
【００１４】
図１は、ブート・プロセスの少なくとも一部をＮＡＮＤフラッシュメモリ・チップ１０２から直接的に実行することができるコンピュータ・システム１００を示す。コンピュータ・システム１００は、例えば、カリフォルニア州クパチーノのアップル・コンピュータから市販されているｉＰｏｄ（登録商標）のような携帯用音楽デバイス（例えば、携帯用ＭＰＥＧ−１オーディオ・レイヤ３（ＭＰ３）プレーヤ）、携帯情報端末、携帯電話、ハンドヘルド・コンピュータ、リムーバブル・メモリ・デバイス（例えば、ユニバーサル・シリアル・バス（ＵＳＢ）フラッシュ・ドライブ）、またはその他の組み込みシステムのような携帯用装置であってもよい。ブート・プロセスは、コンピュータ・システム１００がリセットされた際の、オペレーティング・システムおよびアプリケーション・プログラムのような様々なソフトウェア要素と、メモリおよびその他の周辺デバイスのようなハードウェアとを初期化する一組の動作であり得る。例えば、コンピュータ・システム１００がＭＰ３プレーヤの場合に、ブート・プロセスは、オペレーティング・システムのロードと実行、ＭＰ３再生アプリケーションの起動、およびＮＡＮＤフラッシュメモリからのデバイスドライバの初期化を含むであろう。
【００１５】
図１に示されるように、コンピュータ・システム１００はまた、リセット・ロジック１０４とホスト・デバイス１０６とを含む。ホスト・デバイス１０６は、マイクロプロセッサ１０８と、ダイナミックＲＡＭまたはスタティックＲＡＭのようなランダムアクセスメモリ（ＲＡＭ）１１０とを含む。マイクロプロセッサ１０８は、ＮＡＮＤフラッシュメモリ・チップ１０２に記憶されたソフトウェア命令を読み出して実行することができる。図１に示されるように、マイクロプロセッサ１０８は、ＮＡＮＤフラッシュメモリ・チップ１０２に命令を送信し、ＮＡＮＤフラッシュメモリ・チップ１０２からデータを読み出すことができる。例えば、ホスト・デバイス１０６は、ＮＡＮＤフラッシュメモリ・チップ１０２にデータをライトするために、ライト・コマンドとメモリアドレスのあて先とを送信することができる。さらに、ホスト・デバイス１０６は、ＮＡＮＤフラッシュメモリ・チップ１０２内の特定のメモリ・ページを読み出すために、ＮＡＮＤフラッシュメモリ・チップ１０２にリード・コマンドとページアドレスとを送信することができる。本記載はＮＡＮＤフラッシュメモリの使用に焦点をあてるが、記載された技術を、ブロック単位のまたはページ単位の方式（例えば、各ブロック内または各ページ内の個々のバイトアドレスからデータを読み出すことができないメモリ）におけるデータの読み出しのために設計されたその他の種類のメモリにも適用することができる。
【００１６】
ＮＡＮＤフラッシュメモリ・チップ１０２は１以上のフラッシュメモリ・ダイを含み、フラッシュメモリ・ダイにおいてデータはフラッシュメモリ・ブロックおよびフラッシュメモリ・ページに記憶される。示されるように、ＮＡＮＤフラッシュメモリ・チップ１０２はフラッシュメモリ・ダイ１１２を含む。１個だけのフラッシュメモリ・ダイが示されているが、例えば、２個、３個、４個、８個、または１６個のような任意の実用的な個数のフラッシュメモリ・ダイがＮＡＮＤフラッシュメモリ・チップ１０２に含まれてもよい。３個だけのフラッシュメモリ・ブロック１１４が示されているが、フラッシュメモリ・ダイ１１２は一般的に多くの個数のフラッシュメモリ・ブロック１１４を含むだろう。各フラッシュメモリ・ブロック１１４は、複数（例えば、６４個または１２８個）のフラッシュメモリ・ページ１１６を含む。
【００１７】
ＮＡＮＤフラッシュメモリ・チップ１０２は一般的に、プログラム命令と、ファイルシステム（例えば、階層型ファイルシステム（ＨＦＳ）、ファイル・アロケーション・テーブル（ＦＡＴ）、ニュー・テクノロジー・ファイル・システム（ＮＴＦＳ）、セカンド拡張ファイルシステムｅｘｔ２、ＩＳＯ９６６０ファイルシステム、ユニバーサル・ディスク・フォーマット（ＵＤＦ）など）内のその他のデータ（例えば、ＭＰ３ファイルのようなユーザデータ）とのうちの少なくともいずれかを記憶する。データがファイルシステムに記憶された場合に、所定のセグメントまたはブロックに、所定のブロックサイズでのみデータにアクセスすることができる。例えば、コンピュータ・システム１００において、ブロック内で、フラッシュメモリ・ページ１１６のサイズでデータを読み出すことができる。いくつかの実装では、オペレーティング・システムとアプリケーション・プログラムとはＮＡＮＤフラッシュメモリ・チップ１０２内のファイルシステムに記憶される。
【００１８】
ＮＡＮＤフラッシュメモリ・チップ１０２はまた、ローレベル・アクセス技術を用いて（すなわち、ファイルシステムを用いずに）データを記憶して読み出すのに用いられ得る。例えば、ファイルシステムなしに記憶されるデータは、１以上の所定のブロックまたはページで、かつ、特化したアロケーション技術、メタデータ、および同様のものを用いずに、記憶され得る。
【００１９】
ＮＡＮＤフラッシュメモリ・チップ１０２はまた、レジスタ１１８と内部コントローラ１２０とを含む。内部コントローラ１２０は、フラッシュメモリ・ブロック１１４内のデータにアクセスできるように、外部のプロセッサ（例えば、マイクロプロセッサ１１８）からリード・コマンドまたはライト・コマンドのようなコマンドを受信するように動作する。レジスタ１１８は、データのページのようなデータのセグメントの一時記憶を提供し、その結果、例えば、ホスト・デバイス１０６のマイクロプロセッサ１０８はＲＡＭ１１０にデータをロードできる。マイクロプロセッサ１０８がＮＡＮＤフラッシュメモリ・チップ１０２に記憶されたデータをリードする要求を送信した場合に、要求されたデータを含む適切なフラッシュメモリ・ページがフラッシュメモリ・ブロック１１４からレジスタ１１８に連続的にロードされる。その後、各ページはレジスタ１１８からホスト・デバイス１０６のＲＡＭ１１０に全体としてロードされ得る。
【００２０】
一般的に、ブート・プロセスを実行するブート・コードは、ホスト・デバイス１０６とマイクロプロセッサ１０８とのうちの少なくとも一つに関連付けられたＲＯＭまたはＮＯＲフラッシュメモリに記憶される。このようなメモリは一般に、ブート・コードが配置されるＲＯＭまたはＮＯＲフラッシュメモリ内の個々のデータのバイトへのアクセスを提供するアドレス指定方式をサポートする。いくつかの場合において、ＲＯＭまたはＮＯＲフラッシュメモリ内のブートローダ・コードは、マイクロプロセッサ１０８のために別のロケーションからＲＡＭ１１０に追加のブート・コードをロードするのに使用され得る。ひとたびデバイス１０６がブートされると、ソフトウェア・コードとユーザデータ（例えば、ＭＰ３ファイル）とを含み、その他の不揮発性メモリ（例えば、ＮＡＮＤフラッシュメモリ）に記憶されたデータにマイクロプロセッサ１０８はアクセスすることができる。
【００２１】
しかしながら、コンピュータ・システム１００において、ブート・プロセスを実行するブート・コードはＮＡＮＤフラッシュメモリ・チップ１０２に記憶されるであろう。コンピュータ・システム１００がリセットされ、または電源がオンにされた場合に、ホスト・デバイス１０６は、最初にブート・コードの一部を別のメモリ（例えば、ホスト・デバイス１０６内のＲＡＭ１１０）に移動せずに、ＮＡＮＤフラッシュメモリ・チップ１０２からブート・コードの少なくとも一部（例えば、ブートローダ）を直接的に実行（すなわち、ＸＩＰ（ｅｘｅｃｕｔｅ  ｉｎ  ｐｌａｃｅ：直接実行））をすることができる。
【００２２】
従来は、データをブロックまたはページでしか読み出すことができなかったため、ＮＡＮＤフラッシュメモリを用いてＸＩＰを実行することができない。しかしながら、コンピュータ・システム１００において、ホストのマイクロプロセッサ１０８は、レジスタ１１８内のロケーションをアドレス指定することによって、ＮＡＮＤフラッシュメモリ・チップ１０２から個々のバイトまたはワードを要求して読み出すことができる。例えば、ＮＡＮＤフラッシュメモリ・チップ１０２は、レジスタ１１８にデータのブロック１１４またはページ１１６をロードし、レジスタ１１８内の特定のアドレスをマイクロプロセッサ１０８が要求することを可能とすることによって、ＮＡＮＤフラッシュメモリ・チップ１０２から特定のデータのバイトまたはワードを読み出す能力をサポートすることができる。これらの能力は、マイクロプロセッサ１０８がＮＡＮＤフラッシュメモリ・チップ１０２に記憶されたコードのＸＩＰを実行することを可能とするのに用いられ得る。この記述のために、ＸＩＰは、フラッシュメモリ・ダイ１１２またはＮＡＮＤフラッシュメモリ・チップ１０２の外部にあるＲＡＭやその他のメモリにコードが移動されないことが提供されるフラッシュメモリ・ダイ１１２のレジスタ１１８にロードされたコードの実行を含み得る。いくつかの実装では、少なくともいくつかのブート・コード（例えば、初期ローダ・コード）ファイルシステムなしに記憶される。マイクロプロセッサ１０８は、アセンブリ言語または機械語（オペコード）を用いるというような、ローレベル・アクセス技術を用いて、このようなコードにアクセスできる。
【００２３】
マイクロプロセッサ１０８は、非直接的にまたは直接的にのいずれでも、ＮＡＮＤフラッシュメモリ・チップ１０２に記憶されたコードを実行することができる。例えば、マイクロプロセッサ１０８は、コードを含むデータのページをＲＡＭ１２０に最初にロードすることによって、ＮＡＮＤフラッシュメモリ・チップ１０２に記憶されたコードを非直接的に実行することができる。その後、マイクロプロセッサ１０８は、従来通りの方法で、ＲＡＭ１１０からコードをリードしてコードを実行することができる。
【００２４】
しかしながら、コンピュータ・システム１００におけるＸＩＰ技術を容易にするために、ＮＡＮＤフラッシュメモリ・チップ１０２の内部コントローラ１２０は、レジスタ１１８内のデータのバイトのようなデータの部分が、直接実行のために（すなわち、ＲＡＭ１１０にコードをリードせずに）マイクロプロセッサ１０８により個々にアクセスされることを可能とするアドレス指定システムをサポートするように設計されてもよい。例えば、ホスト・デバイス１０６は、ひとたびフラッシュメモリ・チップ１０２内のレジスタ１１８にページが読み出されると、ＮＡＮＤフラッシュメモリ・チップ１０２における所定のメモリ・ページ内のデータにランダムにアクセスするのに用いられる、メモリ・ページ内のカラムアドレスを含む「単純リード（ｓｉｍｐｌｅ  ｒｅａｄ）」コマンドを送信するように修正されてもよい。いくつかの実装において、内部コントローラ１２０はまた、リセット信号、リセット・コマンド、またはその他の特定の信号が受信された場合に、特定のデータのページをレジスタ１１８に自動的にロードするようにプログラムされてもよい。このようにして、内部コントローラ１２０はコードのページをレジスタ１１８にプリロードすることができる。
【００２５】
その後、コードにアクセスするために単純リード・コマンドを用いることによって、マイクロプロセッサ１０８は、レジスタ１１８のカラムアドレスによりコードを要求することができる。システム１００がリセットされた場合に、マイクロプロセッサ１０８は、少なくとも一つのブート命令をフェッチして直接的に実行するために、単純リード・コマンドを用いることができる。いくつかの実装では、特定のデータのページをレジスタ１１８に自動的にロードするかわりに、内部コントローラ１２０が、マイクロプロセッサ１１８からの最初のコマンドに応答して、１以上のデータのバイトをレジスタ１１８に転送してもよい。その後、内部コントローラ１２０は、レジスタ１１８からマイクロプロセッサ１０８に１以上の特定のデータのバイトを送信するために、マイクロプロセッサ１０８から後続のコマンド（例えば、単純リード・コマンド）を受信してもよい。
【００２６】
一般的に、ブート・シーケンスはリセット・ロジック１０４により開始される。リセット・ロジック１０４は、ホスト１０６とＮＡＮＤフラッシュメモリ・チップ１０２とにリセット信号を送信することができる。リセット・ロジック１０４は機械的に実装されてもよいし、電気的に実装されてもよい。いくつかの実装では、リセット・ロジック１０４は、機械スイッチが始動された場合にホスト・デバイス１０６とＮＡＮＤフラッシュメモリ・チップ１０２とにリセット信号を送信する押しボタンのような機械スイッチであり得る。例えば、機械スイッチは、プルダウン抵抗器に接続する押しボタンであり得る。押しボタンが押された場合に、論理低信号が生成され、ホスト・デバイス１０６とＮＡＮＤフラッシュメモリ・チップ１０２とに送信されてもよい。その他の実装では、リセット・ロジック１０４は、ホスト・デバイス１０６からリセット・コマンドを光学的にまたは電気的に受信することができる。その後、リセット・ロジック１０４は、ホスト１０６とＮＡＮＤフラッシュメモリ・チップ１０２とにリセット信号を送信することができる。
【００２７】
システム１００がオンにされた場合やリセットされた場合のような、コンピュータ・システム１００が再起動された場合に、コンピュータ・システム１００はＲＡＭ１１０内にオペレーティング・システムとアプリケーション・ソフトウェアとを有しない。ファイルシステムに記憶されているかもしれないオペレーティング・システムとその他のソフトウェアとのうちの少なくともいずれかを、ＮＡＮＤフラッシュメモリ・チップ１０２からＲＡＭ１１０にロードするために、マイクロプロセッサ１０８は、オペレーティング・システムを見つけてロードするブート・プロセスを実行してもよい。いくつかの実装では、多段階のブート・プロセスを用いることができ、いくつかの小さなプログラムが、最後にはオペレーティング・システムがロードされるまで、互いに呼び出される。例えば、コンピュータ・システム１００は３層ブート・プロセスで実装されてもよく、３層ブート・プロセスでは３段階のブート・プロセスが実装される。第１段階のコード（例えば、初期ローダ・コードまたはＮＡＮＤローダ・コード）は、ＲＡＭ１１０のようなハードウェアの小さな部分を初期化し、ＮＡＮＤフラッシュメモリ・ブロック１１４からブートローダを見つけてロードすることができる。ブートローダ・コードは、デバイスドライバの初期化のような、コンピュータ・システム１００のその他のハードウェアを初期化し、オペレーティング・システムとアプリケーション・ソフトウェアとを見つけてＮＡＮＤフラッシュメモリ・ブロック１１４からＲＡＭ１１０にロードするように、第２段階で実行されてもよい。第２段階のブートローダのいくつかの例は、リナックス・ローダ（ＬＩＬＯ）とグランド・ユニファイド・ブートローダ（ＧＲＵＢ）とである。第３段階で、オペレーティング・システムとアプリケーション・ソフトウェアとは、コンピュータ・システム１００の通常の機能を提供するために実行される。
【００２８】
いくつかの実装では、内部コントローラ１２０は、ブート・プロセスの第１段階において、所定のフラッシュメモリ・ページ（例えば、ページ「０」）からレジスタ１１８にＮＡＮＤローダ・コードを自動的にロードするようにプログラムされてもよい。その後、マイクロプロセッサ１１８は、コンピュータ・システム１００をブートするためのＮＡＮＤローダ・コードからの個々の命令または命令の部分をレジスタ１１８からフェッチして直接的に実行するために単純リード・コマンドを用いることができる。例えば、マイクロプロセッサ１０８は、ＲＡＭ１１０またはレジスタ１１８のいずれかから命令がフェッチされることを可能とするロジックで実装されてもよい。リセットの際に、マイクロプロセッサ１０８は、ブートローダ・コードを検索してＲＡＭ１１０にロードするために、レジスタ１１８内の所定のアドレスに配置されたＮＡＮＤローダ・コードから命令列を（例えば、ＸＩＰを用いて）自動的に実行する。マイクロプロセッサ１０８はその後、オペレーティング・システムとアプリケーション・ソフトウェアとをロードするためにＲＡＭ１１０に記憶されたブートローダ・コードを実行する。ＮＡＮＤローダ・コードは図４に関連して以下により詳細に記述される。
【００２９】
図２は、図１のコンピュータ・システム１００のようなコンピュータ・システムをブートするプロセス２００のフロー図の一例を示す。ブート・プロセス２００は、プロセッサからコマンドを受信して、所定のメモリアドレスからレジスタにコードのセグメントまたはページを自動的にロードし、実行のためにレジスタからプロセッサに１以上の命令を送信する内部メモリ・コントローラにより実行され得る。例えば、内部メモリ・コントローラは、内部コントローラ１２０であってもよい。
【００３０】
（２０２で、）コンピュータ・システム１００はリセットされる。例えば、コンピュータ・システム１００のユーザは、コンピュータ・システム１００をオンにするために電源ボタンを押してもよい。その結果、リセット・ロジック１０４は、ＮＡＮＤフラッシュメモリ・チップ１０２とホスト・デバイス１０６とにリセット信号を送信するであろう。または、ホスト・デバイス１０６がリセット信号を受信して、マイクロプロセッサ１０８がＮＡＮＤフラッシュメモリ・チップ１０２にリセット・コマンドを転送してもよい。（２０４で、）内部コントローラ１２０はリセット信号を検出する。
【００３１】
リセット信号を検出した後、（２０６で、）内部コントローラ１２０は、所定のデータのページをＮＡＮＤフラッシュメモリ・ブロック１１４からレジスタ１１８に読み出す。ページは、ブート・シーケンスに用いられるコードを含むページとして選択されてもよい。いくつかの実装では、読み出されたブート・コードは、ブート・プロセスを完了するための後続の段階でブート・コードを呼び出すであろうブート・プロセスの第１段階であってもよい。例えば、読み出されたコードは主なブート動作を実行するためのブートローダを見つけてロードするのに用いられるＮＡＮＤローダ・コードであってもよい。ＮＡＮＤローダ・コードはローレベル・アクセス技術を用いて読み出されてもよいし、ブートローダはファイルシステム・アクセス技術を用いて読み出されてもよい。その他の実装では、読み出されたブート・コードを実行することは、ブート・プロセスを完了するために十分であってもよい。言い換えると、レジスタ１１８に読み出されたコードは、ホスト・デバイス１０６を十分にブートすることができてもよい。
【００３２】
（２０８で、）内部コントローラ１２０は、レジスタ１１８に読み出されたコードをリードするコマンドを受信する。例えば、内部コントローラ１２０は、レジスタ１１８の特定のカラムアドレスからデータをリードするためにマイクロプロセッサ１０８からコマンドを受信してもよい。一般に、特定のカラムアドレスのデータは、ブート・シーケンスで用いられる１以上の命令を含む。コマンドは、マイクロプロセッサ１０８により発行された単純リード・コマンドであってもよい。これに応答して、内部コントローラ１２０は、データを別のメモリに記憶せずにマイクロプロセッサ１０８により実行するために、レジスタ１１８から１以上の命令を送信することができる。言い換えると、マイクロプロセッサ１０８は１以上の命令のＸＩＰを実行する。
【００３３】
次に、（２１２で、）ＮＡＮＤローダ・コードの実行が完了したかどうかに関する判定がなされる。例えば、内部コントローラ１２０は、従来通りのページ・アクセス・コマンド（例えば、リード、ライト、またはイレース）がマイクロプロセッサ１０８から受信された場合に、ＮＡＮＤローダ・コードを完了したことを判定してもよい。このようなコマンドは、フラッシュメモリの別のページからブートローダをロードするように内部コントローラ１２０に命令するかもしれない。または、マイクロプロセッサ１０８は、ブートローダを読み出すのに必要な情報を取得した場合に、ＮＡＮＤローダ・コードのＸＩＰが完了したことを判定してもよい。しかしながら、いくつかの実装では、ブートローダはまた、ＸＩＰ技術を用いて実行されてもよい。いくつかの実装では、ＮＡＮＤローダ・コードの実行が完了したかの明示的な判定を行う必要はない。その代わりに、ＮＡＮＤローダ・コードの実行は単に、自己のプログラムされた動作に従って、従来通りのページ・アクセス・コマンドの使用に移行する結果となってもよい。ひとたびＮＡＮＤローダ・コードの実行が完了すると、（２１４で、）プロセス２００は終了する。そうではなく、さらなるＮＡＮＤローダ・コードが存在する場合には、プロセス２００はその後、レジスタから、別の所定のアドレスでさらなるコードのリードを続ける。例えば、ひとたびマイクロプロセッサ１０８が初期命令または命令の部分を実行すると、マイクロプロセッサ１０８は、次の命令または命令の部分が配置されたレジスタ１１８内の別のアドレスへジャンプする別の単純リード・コマンドを送信してもよい。
【００３４】
図３はコンピュータ・システム１００をリセットするために様々な要素のより実行される動作３００を説明するフロー図の一例を示す。動作３００は、コンピュータ・システム１００の制御、指揮、および監視のうちの少なくともいずれかのもとで実行されてもよい。動作３００はまた、コンピュータ・システム１００に組み込まれるであろうその他の処理要素と制御要素との少なくともいずれかにより補完されまたは補強されてもよい。単一の要素により実行されると示されていたとしても、動作の一部または全部は、信号に明白に具体化された命令を実行する１以上のプロセッサにより実行されてもよい。処理は、アナログとディジタルとの少なくともいずれかのハードウェアまたは技術を用いて実装されてもよく、単体でまたは１以上のプロセッサが連携して命令を実行してもよい。明確にするために、動作３００は、リセット・ロジック１０４、マイクロプロセッサ１０８、内部コントローラ１２０、レジスタ１１８、およびＮＡＮＤフラッシュメモリ・ブロック１１４で生じるとして指し示される。しかしながら、これらの動作や同様の動作を、その他のデバイスや場所により、または、デバイスや場所が異なる構成で実行することができるだろう。
【００３５】
この例では、コンピュータ・システム１００は、３層ブート・プロセスを含む。３層ブート・プロセスでは、マイクロプロセッサ１０８は最初にＮＡＮＤフラッシュメモリ・チップ１０２からＮＡＮＤローダ・コードを直接的に（すなわち、ＸＩＰ技術を用いて）実行し、その後にブートローダ・コードをＲＡＭ１１０にロードすることによりブートローラ・コードを実行し、最後にホスト・デバイス１０６とコンピュータ・システム１００とのうちの少なくともいずれかの通常の使用のためにオペレーティング・システムとアプリケーション・プログラムとをロードして起動する。この例では、動作３００は、リセット・ロジック１０４がリセット・コマンドを受信した場合に始まる。（３０２で、）リセット・ロジック１０４は、リセット・コマンドに応答して、リセット信号を発生し、マイクロプロセッサ１０８と内部コントローラ１２０とにリセット信号を送信する。
【００３６】
（３０４で、）内部コントローラ１２０は、ＮＡＮＤフラッシュメモリ・ブロック１１４からデータを読み出すことによって、ＮＡＮＤローダ・コードをレジスタ１１８にロードする。例えば、リセット信号の受信の際に、所定のページアドレスからレジスタ１１８にＮＡＮＤローダ・コードをロードするコマンドを内部コントローラ１２０が送信するように、内部コントローラ１２０は所定のページアドレスでプログラムされてもよい。例えば、所定のページアドレスは、ＮＡＮＤフラッシュメモリ・チップ１０２内の機械スイッチまたは電気回路の配線を用いて製造段階の間にプリセットされていてもよい。代替の実装では、ブートのための所定のデータのページをレジスタ１１８にロードするコマンドをマイクロプロセッサ１０８から受信してもよい。（３０６で、）内部コントローラ１２０がＮＡＮＤフラッシュメモリ・ブロック１１４からデータを読み出した場合に、レジスタ１１８は、ＮＡＮＤローダ・コードを受信して記憶する。
【００３７】
マイクロプロセッサ１０８がリセット信号を受信した後に、（３０８で、）マイクロプロセッサ１０８は、ＮＡＮＤローダ・コードの次の命令をレジスタ１１８から読み出すために、単純リード・コマンドを発行する。例として、内部コントローラ１２０がマイクロプロセッサ１０８にレディ信号を送信した場合に、マイクロプロセッサ１０８はレジスタ１１８から命令の読み出しを始めることができる。別の例として、所定の回数の待ち状態の後に、マイクロプロセッサ１０８はレジスタ１１８から命令の読み出しを始めることができる。
【００３８】
単純リード・コマンドは、直接実行のためにレジスタ１１８に記憶されたデータの選択された部分を読み出すことをマイクロプロセッサ１０８に可能とする点で、従来からあるリード・コマンドと異なる。いくつかの実装では、単純リード・コマンドは、リセット信号を受信した後に生成された従来からある命令フェッチ・コマンドを変換することによって、マイクロプロセッサ１０８で生成されてもよい。そのほかの実装では単に、リセット信号を受信した後に、マイクロプロセッサ１０８が一連の単純リード・コマンドを生成するようにプログラムされてもよい。各単純リード・コマンドを、（例えば、一つよりも多いカラムアドレスを含むことによって、）１以上の命令読み出すのに使用することができる。
【００３９】
単純リード・コマンドを用いて、マイクロプロセッサ１０８は、次の命令を読み出すためにレジスタ１１８にランダムにアクセスすることができる。例えば、マイクロプロセッサ１０８は、レジスタ１１８内のカラムアドレスを指定することによって、レジスタ１１８から命令を読み出すことができる。これに続いて、マイクロプロセッサ１０８が次の命令を読み出した場合に、（３１０で、）マイクロプロセッサ１０８はローカルＲＡＭに命令をロードせずに、読み出された命令を直接的に実行することができる。いくつかの実装では、リセットの後に最初の命令を読み出すようにアドレスに事前にプログラムされる。例えば、マイクロプロセッサ１０８は、リセット後に読み出される最初の命令がレジスタ１１８のアドレス「０」にあるように、事前にプログラムされてもよい。
【００４０】
マイクロプロセッサ１０８は、次の命令のアドレスを判定するために様々な方法を用いてもよい。いくつかの実装では、読み出された命令は、次の命令のアドレスに関する情報を含んでもよい。そのほかの実装では、マイクロプロセッサ１０８は、４のような固定整数分だけ現在の命令のアドレスを増加させることによって、次の命令のアドレスを計算してもよい。いくつかの実装では、マイクロプロセッサ１０８は、命令がレジスタ１１８から読み出されることになるアドレスの列でプログラムされてもよい。いくつかの実装では、マイクロプロセッサ１０８がブート・コードのそのほかの部分を実行する前に、マイクロプロセッサ１０８は、ステップ３０８から３１０を複数回繰り返すことができる。ＮＡＮＤローダ・コードの実行は、ブートローダ・コードのＲＡＭ１１０へのロードとともに、ブートローダ・コードを記憶するためにＲＡＭ１１０を初期化してもよい。
【００４１】
（３１２で、）マイクロプロセッサ１０８は、ＮＡＮＤフラッシュメモリ・ブロック１１４からブートローダ・コードを見つけてロードする命令を実行する。説明および記述の簡略化のために（３１２での）ブートローダ・コードを見つける動作は（３１０での）読み出されたＮＡＮＤローダ命令の実行とは別個の動作として説明されるが、一般的には読み出されたＮＡＮＤローダ命令の機能および動作の一つはブートローダ・コードを見つけること、または読み出すことであることが理解されよう。従って、３１２で説明された動作は３１０での動作と重複してもよく、または３１０での動作の一部であってもよい。いくつかの実装では、マイクロプロセッサ１０８は、ＮＡＮＤフラッシュメモリ・ブロック１１４からブートローダ・コードを見つけて読み出すために、ＦＡＴまたはＨＦＳのようなファイルシステムを用いることよりもむしろ、機械オペコードを用いることような、ローレベル・アクセス技術を用いる。（３１４で、）マイクロプロセッサ１０８は、読み出されたブートローダ・コードをＲＡＭ１１０に記憶し、ＲＡＭ１１０からブートローダ・コードを実行する。従来通りのシステムのように、ブートローダ・コードは、通常の動作モードでホスト・デバイス１０６またはコンピュータ・システム１００に配置するために、オペレーティング・システムとアプリケーション・ソフトウェアとのうちの少なくともいずれかをロードして初期化するように動作する。
【００４２】
図４はＮＡＮＤローダ・コードにより実行されるであろうプロセス４００のフローチャートの一例を示す。前述したように、ＮＡＮＤローダ・コードはＮＡＮＤフラッシュメモリ・チップ１０２内の所定のページに記憶される。いくつかの実装では、内部コントローラ１２０がリセット信号を検出した場合に、内部コントローラ１２０はＮＡＮＤローダ・コードをレジスタ１１８に自動的にロードする。ＮＡＮＤローダ・コードに含まれる命令を、マイクロプロセッサ１０８はレジスタ１１８から直接的に実行することができる。従って、（４０２で、）内部コントローラ１２０はＮＡＮＤローダ・コードをレジスタにロードして、マイクロプロセッサ１０８はＮＡＮＤフラッシュメモリ・チップ１０２から読み出されたＮＡＮＤローダ・コード内の命令を直接的に実行し始める。
【００４３】
ＮＡＮＤローダ・コード内の命令を用いて、（４０４で、）マイクロプロセッサ１０８は、ＲＡＭ１１０およびマイクロプロセッサ１０８内のブートのためのその他のハードウェア（例えば、プログラム・カウンタと状態レジスタ）のようなハードウェアを初期化する。その後、（４０６で、）マイクロプロセッサ１０８は、ＮＡＮＤフラッシュメモリ内の別のロケーションに記憶されたブートローダ・コードを見つける。いくつかの実装では、ＮＡＮＤローダ・コードのいくつかの命令は、ブートローダ・コードのページアドレスを含む。その他の実装では、ＮＡＮＤローダ・コードは、マイクロプロセッサ１０８がブートローダ・コードのメモリアドレスを計算することを可能とする命令を含んでもよい。例えば、命令は、ブートローラ・コードのメモリアドレスが現在の命令のアドレスとオフセット値との合計となるオフセット値を含んでもよい。
【００４４】
次に、（４０８で、）マイクロプロセッサ１０８は、ブートローダ・コードをＲＡＭ１１０にリードする。マイクロプロセッサ１０８は、ローレベル・アクセス技術を用いてブートローダ・コードをＲＡＭ１１０にリードしてもよい。ブートローダ・コードがＲＡＭ１１０に記憶された後に、（４１０で、）マイクロプロセッサ１０８は、ブートローダ・コードに実行制御を転送するためにＮＡＮＤローダ・コード内の命令を実行する。プロセス４００は４１２で終了する。
【００４５】
本明細書において説明された発明とほとんどの機能的動作とは、ディジタル電子回路で、または、コンピュータ・ソフトウェア、ファームウェア、もしくはハードウェアで実装されてもよく、本明細書で公開された構造上の手段およびこれらの構造上の均等物、またはこれらの組合せを含む。本発明は、データ処理装置、例えばプログラム可能なプロセッサ、コンピュータ、もしくは複合コンピュータによる実行のための、または、データ処理装置の動作の制御のための、１以上のコンピュータ・プログラム製品、すわなち情報媒体、例えば機械で読み取り可能な記憶デバイスや伝播信号に明白に具現化された１以上のコンピュータ・プログラムとして実装されてもよい。（プログラム、ソフトウェア、ソフトウェア・アプリケーション、またはコードとしても知られる）コンピュータ・プログラムは、コンパイルされた言語またはインタプリタされた言語を含む任意の形式のプログラミング言語で書かれてもよく、スタンドアロン・プログラムまたはモジュール、コンポーネント、サブルーチン、もしくはコンピューティング環境での使用に適したその他のユニットを含む任意の形式で展開されてもよい。コンピュータ・プログラムはファイルに対応する必要はない。プログラムは、他のプログラムやデータを保持するファイルの部分に記憶され、対象のプログラムで専有される単一のファイルに記憶され、または複数の統合されたファイル（例えば、１以上のモジュール、サブプログラム、またはコードの部分）に記憶されてもよい。コンピュータ・プログラムは、一つの場所の、または複数の場所に分散され通信ネットワークで相互接続された、一つのコンピュータまたは複数のコンピュータに、実行のために分配されてもよい。
【００４６】
本発明の方法ステップを含む、本明細書に記載されたプロセスおよびロジックのフローは、入力データを操作して出力を生成することにより本発明の機能を実行するために、１以上のコンピュータ・プログラムを実行する１以上のプログラム可能なプロセッサにより実行されてもよい。プロセスおよびロジックのフローの部分は、特殊目的の論理回路、例えばＦＰＧＡ（フィールド・プログラマブル・ゲート・アレイ）やＡＳＩＣ（特定用途向け集積回路）により実行されてもよく、本発明の装置は特殊目的の論理回路として実装されてもよい。
【００４７】
一例として、コンピュータ・プログラムの実行に適したプロセッサは、汎用目的および特殊目的の両方のマイクロプロセッサと、任意の種類のディジタル・コンピュータの任意の１以上のプロセッサとを含む。一般に、プロセッサは、リードオンリーメモリもしくはランダムアクセスメモリまたはこれらの両方から命令とデータとを受信するだろう。コンピュータの不可欠な要素は、命令の実行のためのプロセッサと命令およびデータを記憶するための１以上のメモリ・デバイスとである。一般に、コンピュータは、１以上の大容量記憶デバイス、例えば磁気ディスク、光磁気ディスク、または光ディスクを含み、または、これらからデータを受信し、これらにデータを送信し、またはこの両方を行う動作が可能なように結合される。コンピュータ・プログラムの命令とデータとの具体化に適した情報媒体は、一例として半導体メモリ・デバイス、例えばＥＰＲＯＭ、ＥＥＰＲＯＭ、およびフラッシュメモリ・デバイスと、磁気ディスク、例えば内部ハードディスクまたは取り外し可能なディスクと、光磁気ディスクと、ＣＤＲＯＭディスクおよびＤＶＤ−ＲＯＭディスクとを含む、すべての形式の不揮発性メモリを含む。いくつかの実装では、記載されたプロセスと技術とが、ＮＡＮＤフラッシュメモリまたはその他の個々のメモリ・ロケーションが別個にアドレス指定できない不揮発性メモリに関連する使用に制限されてもよい。プロセッサとメモリとは、特殊目的の論理回路のより補完され、または特主目的の論理回路に組み込まれてもよい。
【００４８】
ユーザとの対話を提供するために、本発明は、ユーザに情報を表示するためのディスプレイ・デバイス、例えばＣＲＴ（ブラウン管）またはＬＣＤ（液晶ディスプレイ）モニタと、ユーザがコンピュータへの入力を提供できるキーボードおよびポインティング・デバイス例えばマウスまたはトラックボールとを有するコンピュータで実装されてもよい。その上、その他の種類のデバイスが、対話を提供するために用いられてもよい。例えば、ユーザに提供されるフィードバックは、任意の形式の感覚フィードバック、例えば視覚フィードバック、聴覚フィードバック、または触覚フィードバックであってもよい。ユーザからの入力は、音響の、言語の、または触覚の入力を含む、任意の形式で受信されてもよい。
【００４９】
多くの実装が記載されてきた。しかしながら、様々な変形がなされることが理解されよう。例えば、いくつかの場合では、説明され図面に記載されたのと異なる順番で動作が実行されてもよい。さらに、一般的にバイト単位を基盤としたランダムなデータのアクセスと読み出しとの少なくともいずれかをすることができないその他のメモリのような、ＮＡＮＤフラッシュメモリ以外の不揮発性メモリに関連して技術が使用されてもよい。さらに、フラッシュメモリ・ブロックからレジスタに所定のデータのページをロードすることは、リセット信号の受信以外の１以上の所定の条件に応答して実行されてもよい。従って、その他の実装は添付の請求の範囲内にあるものである。
【図面の簡単な説明】
【００５０】
【図１】ＮＡＮＤフラッシュメモリに記憶されたローダ・コードを用いて初期化され得るシステムを示すブロック図の一例である。
【図２】コンピュータ・システムをブートする方法を説明するフロー図の一例である。
【図３】リセット・ロジック、マイクロプロセッサ、ＮＡＮＤ内部コントローラ、レジスタ、およびＮＡＮＤフラッシュメモリにより、システム・リセットの間に処理される動作を説明するフロー図の一例である。
【図４】ＮＡＮＤローダ・コードの一つの実装を説明するフロー図の一例である。
【図１】
2009533770.tif 000003
【図２】
2009533770.tif 000004
【図３】
2009533770.tif 000005
【図４】
2009533770.tif 000006
【国際調査報告】
2009533770.tif 000007
2009533770.tif 000008