(57)【要約】【課題】不揮発性メモリ（ＮＶＭ）および回路を含むメモリデバイスを提供する。【解決手段】メモリデバイスは、不揮発性メモリ（ＮＶＭ）および回路を含む。この回路は、プロセッサのメモリアクセス操作を実行するためにＮＶＭを初期化し準備するとともに、ＮＶＭの初期化および準備の少なくとも一部の間にプロセッサがブートストラップすることを防ぐことによって、ＮＶＭの準備が整う前にプロセッサからメモリアクセス操作が受信されないようにすることを確実にするように構成されている。【選択図】図１
2020135843.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリ（ＮＶＭ）と、
プロセッサのメモリアクセス操作を実行するために前記ＮＶＭを初期化し準備するように構成されており、
前記ＮＶＭの初期化および準備の少なくとも一部の間に前記プロセッサがブートストラップすることを防ぐことによって、前記ＮＶＭの準備が整う前に前記プロセッサからメモリアクセス操作が受信されないようにすることを確実にするように構成されている回路と、
を備えるメモリデバイス。
【請求項２】
前記回路が、前記ＮＶＭの初期化および準備の少なくとも一部の間に前記プロセッサをリセット状態に保持することによって、前記プロセッサがブートストラップすることを防ぐように構成されている、請求項１に記載のメモリデバイス。
【請求項３】
前記ＮＶＭが、前記プロセッサのブートコードを格納するように構成されており、前記回路が、前記ＮＶＭの初期化および準備の少なくとも一部の後に前記プロセッサを前記リセット状態から解放し、その後前記ブートコードを前記プロセッサに提供するように構成されている、請求項２に記載のメモリデバイス。
【請求項４】
前記ＮＶＭが、前記プロセッサのブートコードを格納するように構成されており、
前記ＮＶＭの初期化および準備の少なくとも一部の間に、前記プロセッサがブートストラップすることを防ぐ代替コードを提供することによって、前記ブートコードに対する前記プロセッサからの要求に応答することと、
前記ＮＶＭの初期化および準備の少なくとも一部の後に、前記ブートコードを提供することによって、前記ブートコードに対する前記プロセッサからの後続の要求に応答することとによって、前記プロセッサがブートストラップすることを防ぐように前記回路が構成されている、請求項１に記載のメモリデバイス。
【請求項５】
前記ＮＶＭの初期化および準備の少なくとも一部が完了するまで、前記代替コードが前記プロセッサに繰り返しループさせる、請求項４に記載のメモリデバイス。
【請求項６】
前記代替コードが、１回実行される第１部分と、前記ＮＶＭの初期化および準備の少なくとも一部が完了するまで繰り返し実行される第２部分とを含む、請求項４に記載のメモリデバイス。
【請求項７】
前記第１部分が、前記プロセッサのレジスタをロードする命令を含む、請求項６に記載のメモリデバイス。
【請求項８】
前記ＮＶＭおよび前記回路が、同じ集積回路（ＩＣ）パッケージ内に包装されている、請求項１に記載のメモリデバイス。
【請求項９】
プロセッサのメモリアクセス操作を実行するために、前記メモリデバイス内の回路を使用して、前記メモリデバイス内の不揮発性メモリ（ＮＶＭ）を初期化し準備する工程と、
前記メモリデバイス内の回路によって、前記ＮＶＭの初期化および準備の少なくとも一部の間に前記プロセッサがブートストラップすることを防ぐことによって、前記ＮＶＭの準備が整う前に前記プロセッサからメモリアクセス操作が受信されないようにすることを確実にする工程と、を含む、メモリデバイスにおける方法。
【請求項１０】
前記プロセッサがブートストラップすることを防ぐ工程が、前記ＮＶＭの初期化および準備の少なくとも一部の間、前記プロセッサをリセット状態に保持することを含む、請求項９に記載の方法。
【請求項１１】
前記ＮＶＭに前記プロセッサのブートコードを格納する工程と、前記ＮＶＭの初期化および準備の少なくとも一部の後に前記プロセッサをリセット状態から解放する工程と、その後前記ブートコードを前記プロセッサに提供する工程とを含む、請求項１０に記載の方法。
【請求項１２】
前記プロセッサのブートコードを前記ＮＶＭに格納する工程を含み、
前記プロセッサがブートストラップすることを防ぐ工程が、
前記ＮＶＭの初期化および準備の少なくとも一部の間に、前記プロセッサがブートストラップすることを防ぐ代替コードを提供することによって、前記ブートコードに対する前記プロセッサからの要求に応答する工程と、
前記ＮＶＭの初期化および準備の少なくとも一部の後に、前記ブートコードを提供することによって、前記ブートコードに対する前記プロセッサからの後続の要求に応答する工程と、を含む、請求項９に記載の方法。
【請求項１３】
前記ＮＶＭの初期化および準備の少なくとも一部が完了するまで、前記代替コードが前記プロセッサに繰り返しループさせる、請求項１２に記載の方法。
【請求項１４】
前記代替コードが、１回実行される第１部分と、前記ＮＶＭの初期化および準備の少なくとも一部が完了するまで繰り返し実行される第２部分とを含む、請求項１２に記載の方法。
【請求項１５】
前記第１部分が、前記プロセッサのレジスタをロードする命令を含む、請求項１４に記載の方法。
【請求項１６】
前記ＮＶＭおよび前記回路が、同じ集積回路（ＩＣ）パッケージ内に包装されている、請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してデジタルシステムに関し、特にマイクロコントローラーと不揮発性メモリとを備えるシステムをリセットするための方法および装置に関する。
【背景技術】
【０００２】
デジタルシステムは、典型的には、１つまたは複数のプロセッサ（例えば、ＣＰＵ、ＭＣＵ、ＧＰＵ、ＤＳＰなど）を備え、不揮発性メモリ（例えば、フラッシュメモリデバイス）を使用してソフトウェアコードまたはファームウェアコード、ならびにデータを格納する。
【０００３】
例えば、電源投入時に、プロセッサおよびそれらの周辺機器をリセットして初期化するための様々な技術が当該技術分野において知られている。例えば、Ｌｅらは、“Ａ  Ｌｏｎｇ  Ｒｅｓｅｔ−Ｔｉｍｅ  Ｐｏｗｅｒ−Ｏｎ  Ｒｅｓｅｔ  Ｃｉｒｃｕｉｔ  ｗｉｔｈ  Ｂｒｏｗｎ−Ｏｕｔ  Ｄｅｔｅｃｔｉｏｎ  Ｃａｐａｂｉｌｉｔｙ，”    ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｃｉｒｃｕｉｔｓ  ａｎｄ  Ｓｙｓｔｅｍｓ  ＩＩ：  Ｅｘｐｒｅｓｓ  Ｂｒｉｅｆｓ，  ５８−ＩＩ（１１），  Ｎｏｖｅｍｂｅｒ，  ２０１１，  ｐａｇｅｓ．において、パワーオンリセット（ＰＯＲ）回路について説明している。
【０００４】
他のＰＯＲ回路は、Ｔａｎｚａｗａにより、“Ａ  ｐｒｏｃｅｓｓ  ａｎｄ  ｔｅｍｐｅｒａｔｕｒｅ−ｔｏｌｅｒａｎｔ  ｐｏｗｅｒ−ｏｎ  ｒｅｓｅｔ  ｃｉｒｃｕｉｔ  ｗｉｔｈ  ａ  ｆｌｅｘｉｂｌｅ  ｄｅｔｅｃｔｉｏｎ  ｌｅｖｅｌ  ｈｉｇｈｅｒ  ｔｈａｎ  ｔｈｅ  ｂａｎｄｇａｐ  ｖｏｌｔａｇｅ，”  ＩＥＥＥ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｃｉｒｃｕｉｔｓ  ａｎｄ  Ｓｙｓｔｅｍｓ  （ＩＳＣＡＳ），  Ｊｕｎｅ，  ２００８において説明されている。本文献では、１．２５Ｖのバンドギャップ電圧よりも高い設計出力電圧を可能にし、バンドギャップ基準に基づくパワーオンリセット回路の動作原理を説明している。
【発明の概要】
【０００５】
本明細書に記載されている本発明の実施形態は、不揮発性メモリ（ＮＶＭ）および回路を含むメモリデバイスを提供する。この回路は、プロセッサのメモリアクセス操作を実行するためにＮＶＭを初期化し準備するとともに、ＮＶＭの初期化および準備の少なくとも一部の間にプロセッサがブートストラップすることを防ぐことによって、ＮＶＭの準備が整う前にプロセッサからメモリアクセス操作が受信されないようにすることを確実にするように構成されている。
【０００６】
いくつかの実施形態では、回路は、ＮＶＭの初期化および準備の少なくとも一部の間にプロセッサをリセット状態に保持することによって、プロセッサがブートストラップすることを防ぐように構成されている。実施形態例では、ＮＶＭは、プロセッサのブートコードを格納するように構成されており、回路は、ＮＶＭの初期化および準備の少なくとも一部の後にプロセッサをリセット状態から解放し、その後ブートコードをプロセッサに提供するように構成されている。
【０００７】
他の実施形態では、ＮＶＭは、プロセッサのブートコードを格納するように構成されており、以下によってプロセッサがブートストラップすることを防ぐように回路が構成されている：（ｉ）ＮＶＭの初期化および準備の少なくとも一部の間に、プロセッサがブートストラップすることを防ぐ代替コードを提供することによって、ブートコードに対するプロセッサからの要求に応答することと、（ｉｉ）ＮＶＭの初期化および準備の少なくとも一部の後に、ブートコードを提供することによって、ブートコードに対するプロセッサからの後続の要求に応答すること。
【０００８】
一実施形態では、ＮＶＭの初期化および準備の少なくとも一部が完了するまで、代替コードがプロセッサに繰り返しループさせる。別の実施形態では、代替コードは、１回実行される第１部分と、ＮＶＭの初期化および準備の少なくとも一部が完了するまで繰り返し実行される第２部分とを含む。実施形態例では、第１部分は、プロセッサのレジスタをロードする命令を含む。
【０００９】
いくつかの実施形態では、ＮＶＭおよび回路は、同じ集積回路（ＩＣ）パッケージ内に包装されている。
【００１０】
本発明の一実施形態によれば、メモリデバイスにおける方法がさらに提供される。この方法は、以下の工程を含む：プロセッサのメモリアクセス操作を実行するために、メモリデバイス内の回路を使用して、メモリデバイス内の不揮発性メモリ（ＮＶＭ）を初期化し準備する工程と、メモリデバイス内の回路によって、ＮＶＭの初期化および準備の少なくとも一部の間にプロセッサがブートストラップすることを防ぐことによって、ＮＶＭの準備が整う前にプロセッサからメモリアクセス操作が受信されないようにすることを確実にする工程。
【００１１】
本発明は、以下の図面と併せて、その実施形態の以下の詳細な説明からより完全に理解されるであろう。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態に従って、システムリセット入力を有するフラッシュデバイスによって生成されるプロセッサリセットを持つコンピュータシステムを概略的に示すブロック図である。
【図２】本発明の別の実施形態に従って、内部ＰＯＲ回路を有するフラッシュデバイスによって生成されるプロセッサリセット出力を持つコンピュータシステムを概略的に示すブロック図である。
【図３】本発明の実施形態に従って、フラッシュデバイス生成プロセッサリセットを持つコンピュータシステムのブートシーケンスを概略的に示すタイミング図である。
【図４】本発明の実施形態に従って、フラッシュデバイスによって生成される修正ブート命令を持つコンピュータシステムを概略的に示すブロック図である。
【図５】本発明のさらに別の実施形態に従って、フラッシュデバイスによって生成される修正ブートシーケンスを持つコンピュータシステムを概略的に示すブロック図である。
【図６】本発明のいくつかの実施形態に従って、プロセッサストールを持つコンピュータシステムのブートシーケンスを概略的に示すタイミング図である。
【発明を実施するための形態】
【００１３】
（概要）
プロセッサ（例えば、中央処理装置（ＣＰＵ））およびメモリデバイスを含むコンピュータシステムでは、メモリデバイスの初期化時間はプロセッサの初期化時間よりも長くなり得る。そのような場合、リセットまたは電源投入後、メモリデバイスが必要なコードまたはデータを提供する準備が整う前にプロセッサは実行の準備が整っている場合があり、したがって、コンピュータシステムの正常なブートを妨げる。
【００１４】
このシナリオは、プロセッサのブートコードがフラッシュデバイスに格納されている場合に特に多く見られる  −  フラッシュデバイスは準備に時間がかかる場合があり、いくつかのアナログ操作を完了するのに必要な時間、ビルトインセルフテスト（ＢＩＳＴ）を実行する時間および／またはセキュリティ関連操作の実行に必要な時間などを含む。
【００１５】
したがって、フラッシュデバイスに格納されたコードからブートするコンピュータシステムでは、フラッシュデバイスの準備が整ったときにのみプロセッサがブートを試みるように、プロセッサに遅延リセットを提供する必要がある場合がある。
【００１６】
プロセッサに対して適切に遅延されたリセットを生成する１つの方法は、フラッシュデバイスの準備に必要とされ得る最大予想時間よりも長い時間遅延を持つリセット回路を使用することである。ただし、これは、特別な回路の追加を必要とし；ならびに、フラッシュデバイスの準備に必要な時間の変動および不確かさのために、必要以上に長くなる場合があり、コンピュータシステムの起動をさらに遅らせる。
【００１７】
本明細書に記載されている本発明の実施形態は、メモリデバイスの準備が整った直後（決してその前ではない）にプロセッサがブートシーケンスを開始することを確実にするための改良された方法およびデバイスを提供する。以下の説明は、例として、主にＣＰＵおよびフラッシュデバイスに言及しているが、開示の技術は、他の適切なタイプのプロセッサおよびメモリ／記憶装置にも適用可能である。
【００１８】
いくつかの実施形態では、メモリデバイス（例えば、フラッシュデバイス）は、不揮発性メモリ（ＮＶＭ）アレイ、および回路を含み、両方とも同じ集積回路（ＩＣ）パッケージ内に一緒に包装されている。他のタスクの中でも、回路は、プロセッサ（例えば、ＣＰＵ）のメモリアクセス操作を実行するためにＮＶＭを初期化し準備するとともに、ＮＶＭの準備が整う前にプロセッサからメモリアクセス操作が受信されないようにすることを確実にするように構成されている。回路は、ＮＶＭの初期化および準備の少なくとも一部の間にプロセッサがブートストラップすることを防ぐことによって、上記の条件を確実にする。
【００１９】
メモリデバイス内の回路は、ＮＶＭの準備が整うまで、プロセッサがブートストラップすることを防ぐために様々な技術を使用し得る。いくつかの例を、以下で詳細に説明する。本明細書に記載の技術は、単に例として提供されており、任意の他の適切な技術を代替実施形態で使用することができる。
【００２０】
一実施例では、回路は、ＮＶＭの準備が整うまでプロセッサをリセット状態に保持し、その後にのみプロセッサをリセット状態から解放する。別の実施例では、プロセッサのブートコードはＮＶＭに格納されている。回路は、ＮＶＭの準備が整っているかどうかに応じて、ブートコードに対するプロセッサからの要求に異なって応答する。ＮＶＭの準備が整っていれば、回路は要求されたブートコードをプロセッサに提供する。ＮＶＭの準備が整っていない場合、回路は、ＮＶＭの準備が整うまで、プロセッサがブートストラップすることを防ぐ代替コードをプロセッサに提供する。
【００２１】
一実施形態では、メモリデバイスは、プロセッサのリセット入力に連結されたプロセッサリセット出力ピンを備える。メモリデバイスは、メモリデバイスの準備が整った後にのみプロセッサのリセット入力を解除するプロセッサリセット回路をさらに備える。代替として、プロセッサへのリセット入力は、プロセッサがリセットの解除からブートプロセスの開始までに要する時間を考慮して、メモリの準備が整う直前に解除されてもよい。
【００２２】
本発明の別の実施形態では、メモリデバイスは追加のリセットアウトピンを備えず、プロセッサは、メモリデバイスの準備が整う前に、ブートするためにメモリデバイスにアクセスし得る（例えば、プロセッサおよびメモリデバイスは、同じリセット入力を共有し得る）。しかしながら、メモリデバイスの準備がまだ整っていない間にプロセッサがメモリデバイスにアクセスすると、メモリデバイスは、要求されたブートコードを供給するのではなく、プロセッサをストールさせる命令または命令のシーケンスをプロセッサに返す。例えば、プロセッサは、自己分岐命令を繰り返し得る場合がある。メモリデバイスの準備が整ったときにのみ、プロセッサはメモリデバイスに格納されている実際のブートコードを取得する。
【００２３】
したがって、本発明による実施形態では、メモリデバイスは、適切なタイミングのリセットをプロセッサに適用することによってか、またはメモリデバイスの準備が整うまで、ストール命令もしくはストール命令シーケンスを使用してプロセッサをストールすることによって、メモリデバイスの準備が整う前にプロセッサのブートシーケンスが開始しないことを保証する。追加のリセット回路は不要であり、ブート遅延時間は短い。
【００２４】
（システムの説明）
本発明の実施形態によるコンピュータシステムでは、ＣＰＵのブートコードは、不揮発性メモリに格納され得る。以下の説明では、不揮発性メモリをフラッシュと呼ぶ。フラッシュは、コンピュータシステムのブートコードを格納するための１つの可能な技術であるが、開示の技術はフラッシュに限定されない。本発明による実施形態は、任意の他の種類の不揮発性メモリを含み得る。
【００２５】
フラッシュデバイスなどのコンピュータシステムの様々な素子は、リセットから抜け出すまでに異なる時間周期を要する場合があり（例えば、システムに電力が供給されるとき）、フラッシュメモリの準備が整う前にＣＰＵがそのブートシーケンスの実行を開始しないように注意しなければならない。例えば、フラッシュメモリは、典型的には、リセットを抜け出すときに初期化シーケンス（例えば、ビルトインセルフテスト（ＢＩＳＴ）、またはセキュリティポリシーの実施）を実行し；ＣＰＵがフラッシュにアクセスする準備が整ってからかなり後に、ＣＰＵによってアクセスされる準備が整っている場合がある；したがって、フラッシュの準備が整った後にＣＰＵがブートシーケンスを開始することが不可欠であり；したがって、ＣＰＵおよびフラッシュのリセットソースは、典型的には別個である。
【００２６】
（フラッシュデバイス駆動型プロセッサのリセット）
以下の図１および図２において例示する実施形態例では、フラッシュデバイスは、ＣＰＵリセット入力に連結されたプロセッサリセット出力信号を含む。フラッシュのアクセスされる準備が整っていない場合、フラッシュデバイスはプロセッサリセットをアクティブにし、フラッシュの準備が整ったときにのみ、ＣＰＵがフラッシュからブートするようにする。
【００２７】
図１は、本発明の一実施形態に従って、システムリセット入力を有するフラッシュデバイスによって生成されるプロセッサリセットを持つコンピュータシステム  １００を概略的に示すブロック図である。
【００２８】
本システムは、ＣＰＵ  １０２、ＲＡＭ  １０４、周辺機器  １０６、およびフラッシュデバイス  １０８を備える。ＣＰＵ  １０２は、ＲＡＭ  １０４、周辺機器１０６およびフラッシュ  １０８と、バス  １１０を介して通信する（バス  １１０は、例えば、アドバンストマイクロプロセッサバスアーキテクチャ（ＡＭＢＡ）を含み得る；いくつかの実施形態では、バス  １１０は、ＡＭＢＡおよびＡＭＢＡバスとフラッシュデバイスとの間をインターフェースで連結するシリアルプロセッサインターフェース（ＳＰＩ）または集積回路間バス（Ｉ２Ｃ）などのインターフェースモジュールを含む；さらに他の実施形態では、他のバスを使用する場合がある）。
【００２９】
フラッシュデバイス  １０８は、データ／コード（例えば  −  ブートコード）を格納し、フラッシュデバイスに電力が供給されていないときに格納されたデータ／コードを保持するように構成されている不揮発性記憶アレイ  １１２と；初期化回路  １１４と、プロセッサリセット回路  １１６とを備える。アレイ  １１２ならびに回路  １１４および１１６は、典型的には、同じ集積回路（ＩＣ）パッケージ内に一緒に包装されている。
【００３０】
コンピュータシステム  １００は、フラッシュデバイスに連結された外部リセットソース  １１８をさらに備える。いくつかの実施形態では、外部リセットソースは、システムに印加された電力がプリセットレベルを下回ったときに（および、いくつかの実施形態では、電力がプリセットレベルに達した後のプリセット時間の間に）、リセット出力をアクティブにするパワーオンリセット（ＰＯＲ）回路を備える。
【００３１】
図１の実施形態例では、外部リセットソース  １１８がそのリセット出力を非アクティブにすると、初期化回路  １１４はフラッシュ初期化シーケンス（例えばＢＩＳＴ）を開始する。初期化シーケンスが完了すると、初期化回路は、フラッシュデバイスの準備が整ったことをプロセッサリセット回路  １１６に知らせる。
【００３２】
プロセッサリセット回路  １１６は、外部リセット信号がアクティブではないとき、かつ、初期化回路  １１４によって生成される準備入力がアクティブであるときにのみ、フラッシュデバイスのプロセッサリセット出力を非アクティブにするように構成されている。
【００３３】
本発明のいくつかの実施形態では、外部リセットソースはなく、フラッシュデバイスはパワーオンリセット回路を備える。
【００３４】
図２は、本発明の実施形態による、内部ＰＯＲ回路を有するフラッシュデバイスによって生成されるプロセッサリセット出力を持つコンピュータシステム  ２００を概略的に示すブロック図である。システム  １００（図１）と同様に、システム  ２００はＣＰＵ  １０２、ＲＡＭ  １０４、周辺機器１０６およびバス  １１０を備える。しかしながら、システム  １００とは異なり、システム  ２００は外部リセットソースを備えない。代わりに、フラッシュデバイス  ２０８は、パワーオンリセット（ＰＯＲ）回路  ２０２を備える（フラッシュ  ２０８は、その他の点では図１のフラッシュ  １０８と同一である）。
【００３５】
ＰＯＲ回路  ２０２は、フラッシュの電源電圧がプリセットレベルに達したときにリセット出力を非アクティブにするように構成されている。ＰＯＲ回路  ２０２のリセット出力は、外部リセットソース  １１８（図１）からのリセット出力の代わりにフラッシュデバイス  ２０８をリセットするために使用される。他のすべての側面では、フラッシュ  ２０８はフラッシュ  １０８と同一である：ＰＯＲ回路  ２０２がそのリセット出力を非アクティブにすると、初期化回路  １１４はフラッシュ初期化シーケンスを開始する；初期化シーケンスが完了すると、初期化回路はフラッシュデバイスの準備が整ったことを知らせる；次に、プロセッサリセット回路  １１６はフラッシュデバイスのプロセッサリセット出力を非アクティブにし、ＣＰＵ  １０２がブートプロセスを開始することを可能にする。
【００３６】
したがって、図１および２の実施形態例によれば、フラッシュの準備が整ったときにのみ、ＣＰＵはフラッシュにアクセスし、ＣＰＵが実行するブートコードは破損されない。ＣＰＵのリセット入力をフラッシュに連結することで、ＣＰＵのブートシーケンスを正しくタイミング調整できる  −  それはフラッシュの準備が整う前には開始せず、不必要に遅延することはない。
【００３７】
コンピュータシステム  １００および２００、ならびにフラッシュデバイス  １０８および２０８の構成は、単に概念を明確にするために示されている構成例である。任意の他の適切な構成を代替実施形態で使用することができる。例えば、フラッシュメモリ  １０８および２０８は、電気的消去可能プログラマブルリードオンリーメモリ（ＥＥＰＲＯＭ）もしくはリードオンリーメモリ（ＲＯＭ）およびハードディスクなどの任意の他のタイプの不揮発性メモリまたは記憶装置と交換することができる；ＣＰＵ  １０２は、同じまたは様々な種類の複数のＣＰＵユニットを含み得る；システム内に複数のフラッシュメモリと複数のバスがあり得る。
【００３８】
ＣＰＵがリセットを抜け出すのにいくらかの時間がかかるため、いくつかの実施形態では、プロセッサリセット出力は、初期化回路  １１４が初期化を完了する前にプリセット時間だけ非アクティブ化され、ブートは不必要に遅延しない。いくつかの実施形態では、プロセッサリセット出力の非アクティブ化は、フラッシュの準備が整った後にプリセット時間だけ遅らせることができ、さらに他の実施形態では、フラッシュ  １０８（または２０８）は、複数のプロセッサおよび他のシステム構成要素に連結され得る複数のプロセッサリセット出力を含んでいてもよく、ここで、各出力のリセット非アクティブ化は、外部リセット入力（またはＰＯＲリセット）およびフラッシュの準備が整っている時間に関して、別々に構成されていてもよい。
【００３９】
本文脈では、初期化回路  １１４、プロセッサリセット回路  １１６およびＰＯＲ回路  ２０２（使用される場合）は、まとめてフラッシュデバイスの「回路」と呼ばれる。代替実施形態では、任意の他の適切な回路構成を使用することができる。
【００４０】
図３は、本発明の実施形態に従って、フラッシュデバイス生成プロセッサリセットを持つコンピュータシステム、例えば、上記図１および図２のシステムのブートシーケンスを概略的に示すタイミング図  ３００である。この図は、時間軸  ３０２に沿ったグラフの形でアクティビティを説明している：電源電圧グラフ  ３０４、パワーオンリセットグラフ  ３０６、フラッシュアクティビティグラフ  ３０８、ＣＰＵリセットグラフ３１０、およびＣＰＵアクティビティグラフ３１２。５つの重要なタイムイベントが時間軸に沿ってマークされている  −  Ｔ０からＴ４。
【００４１】
時間軸は、タイムイベントＴ０（３１４）で始まる。電源電圧レベルは０ボルトであり、システムは非アクティブである。タイムイベントＴ１（３１６）において、電源電圧が上昇し始め、システムに電源を投入する；タイムイベントＴ２（３１８）において、電源電圧はプリセットレベル（図３に示す実施形態例ではＶＣＣの９０％）に達する。ＰＯＲユニットは、タイムイベントＴ２（３１８）までリセットに留まる。フラッシュ初期化は、ＰＯＲがリセットにあるときに開始し、タイムイベントＴ３（３２０）で終了する。
【００４２】
ＣＰＵリセット（グラフ３１０）は、Ｔ０からＴ３まで（フラッシュデバイスによって）アクティブに保持される。Ｔ３において、フラッシュデバイスはＣＰＵのリセットを解除する。その直後に、タイムイベントＴ４（３２２）において、ＣＰＵはフラッシュデバイスにアクセスし、ブートシーケンスを実行する（Ｔ３からＴ４までの時間は、いくつかのリセット後プリブート操作のためにＣＰＵによって必要とされる場合がある）。
【００４３】
したがって、図３に例示されるタイミングチャートによれば、ＣＰＵは、フラッシュデバイスの準備が整っているときにだけ、短い遅延でフラッシュにアクセスする。
【００４４】
図３に示すタイミングチャート  ３００は一定の縮尺で描かれておらず、より長い水平距離は必ずしもより長いそれぞれの期間を意味するわけではない。さらに、タイミングチャート  ３００は、単に概念を明確にするために示されている例示的なチャートである。本発明の代替実施形態では、任意の他の適切なタイミングチャートを使用してもよい。例えば、いくつかの実施形態では、フラッシュ初期化が完了した時点からＴ４（３２２）までの遅延を短縮するために、ＣＰＵリセット  ３１０は、フラッシュ初期化が完了する直前に終了してもよい。
【００４５】
（ブートコード操作）
いくつかのアプリケーションでは、フラッシュデバイスにプロセッサリセットピンを追加することが望ましくないか実行不可能な場合がある；例えば、フラッシュのピンがピン配列規格に準拠している場合があるか、フラッシュが他のフラッシュデバイスとピン互換である必要がある。本明細書に提示される本発明の実施形態によれば、フラッシュの準備が整う前にＣＰＵはそのブートプロセスを開始し得るが、フラッシュデバイスはＣＰＵが読むブートコードを修正し、フラッシュの準備が整うまでＣＰＵを効率的に待機させる。
【００４６】
図４は、本発明の実施形態に従って、フラッシュデバイスによって生成される修正ブート命令を持つコンピュータシステム  ４００を概略的に示すブロック図である。システムは、ＣＰＵ  １０２、ＲＡＭ  １０４、周辺機器１０６、バス  １１０、および外部リセットソース  １１８を備える  −  これらはすべてシステム  １００（図１）のそれぞれのユニットと同一であってよい。
【００４７】
フラッシュデバイス４０８は、記憶アレイ  １１２および初期化回路  １１４を備える；両方とも、システム  １００の対応するユニットと同一であってよい。さらに、フラッシュ  ４０８は、ストールコードユニット  ４０２、およびマルチプレクサ（ＭＵＸ）  ４０４を備える。
【００４８】
ストールコードユニット  ４０２は、ＣＰＵをストールさせるコンピュータ命令を出力するように構成されている。例えば、命令は、ＣＰＵに同じ場所から無期限に命令を読み取らせ続けることになり得る自己分岐（´ｂ．´）命令であり得る。ストール命令のコードは、ハードウェアに組み込まれていてもよく、またはフラッシュ  ４０８の不揮発性セルに格納されていてもよい。
【００４９】
初期化回路  １１４はマルチプレクサ  ４０４に連結されており、それは、バス１１０に、初期化回路がフラッシュの準備が整っていないことを示したときにはストールコード４０２が出力するデータを、または、初期化回路がフラッシュの準備が整ったことを示したときには記憶アレイ  １１２が出力するデータを送るように構成されている。
【００５０】
したがって、図４に示す構成例によれば、ＣＰＵは、フラッシュの準備が整っていないときにはブートシーケンスを開始し得るが、ＣＰＵが読み取るその命令は、ＣＰＵをストールさせることになる。初期化回路  １１４によって示されるように、フラッシュの準備が整うと、ＣＰＵは記憶アレイ  １１２から正しいブートシーケンスを読み取る。
【００５１】
図５は、本発明の実施形態に従って、フラッシュデバイスによって生成される修正ブートシーケンスを持つコンピュータシステム  ５００を概略的に示すブロック図である。システム  ５００は図４のシステム  ４００と同一であり、フラッシュ５０８は、フラッシュ  ４０８のストール命令ユニット  ４０２の代わりにストールシーケンスユニット  ５０２を備えることを除いて、フラッシュ  ４０８と同一である。
【００５２】
ストールシーケンスユニット  ５０２は、フラッシュの準備が整っていないときにＣＰＵが実行する命令のシーケンスを含む（ＡＲＭプロセッサの命令セットに関する詳細な例については後述する）。ストールシーケンスユニットは、ＣＰＵによって行われたアクセスを追跡し、対応するデータをマルチプレクサ  ４０４に送信する（代替実施形態では、バス  １１０のアドレス部分はストールシーケンスユニット  ５０２に入力され、ストールシーケンスユニットはデータそれぞれを入力アドレスに送信する。
【００５３】
命令のシーケンスのためのコードは、ハードウェアに組み込まれていてもよく、あるいはフラッシュ５０８の不揮発性セルに格納されていてもよい（いくつかの実施形態では、命令のシーケンスのためのコードは、ブートコードとは異なるフラッシュバンクに格納されている；他の実施形態では、命令のシーケンスは、リセット直後にフラッシュセルから揮発性メモリ（例えば、フリップフロップまたはＳＲＡＭメモリ）に転送され、次いで揮発性メモリから読み出される。マルチプレクサは、データを、フラッシュの準備が整っていないときにはストールシーケンスユニット  ５０２から（初期化回路  １１４によって示されるように）、フラッシュの準備が整ったときには記憶アレイ  １１２から転送する。
【００５４】
したがって、図５の構成例によれば、ＣＰＵは、フラッシュの準備が整っていないときには命令のプリセットシーケンスを実行し得、フラッシュの準備が整ったときには記憶アレイ  １１２に格納されているブートシーケンスを実行し得る。
【００５５】
いくつかの実施形態では、ストールシーケンスの実行からブートシーケンスの実行への切り替えは、コヒーレンシを保証するために、（命令シーケンスの任意の命令ではなく）既知ＣＰＵ状態で行われなければならない。フラッシュ５０８は、シーケンスがプリセットステージに達するまで準備表示を遅らせる（例えば、プリセットアドレスがバス  １１０から入力される）ように構成された回路を含んでいてもよく、ストールシーケンスからブートシーケンスへの転送が正しいＣＰＵ状態で行われることを確実にする。
【００５６】
理解されるように、図４および図５に示されるフラッシュ  ４０８および５０８、マルチプレクサ  ４０４、初期化回路  １１４ならびに記憶アレイ  １１２の構成は、単に概念的な明確さのために示される構成例である。任意の他の適切な構成を代替実施形態で使用することができる。例えば、マルチプレクサ  ４０４は、フラッシュアレイのバンク選択ロジックに埋め込むことができる；別の例について、いくつかの実施形態では、バス  １１０のアドレスワイヤのサブセットがストールシーケンスユニットに入力される。
【００５７】
本文脈では、初期化回路  １１４、ストールコードユニット  ４０２または５０２、およびＭＵＸ  ４０４は、まとめてフラッシュデバイスの「回路」と呼ばれる。代替実施形態では、任意の他の適切な回路構成を使用することができる。
【００５８】
図６は、本発明のいくつかの実施形態に従って、プロセッサストールを持つコンピュータシステムのブートシーケンスを概略的に示すタイミング図  ６００である。この図は、時間軸６０２に沿ったグラフの形でアクティビティを説明している：電源電圧グラフ  ６０４、パワーオンリセットグラフ  ６０６、フラッシュアクティビティグラフ  ６０８、ＣＰＵリセットグラフ６１０、およびＣＰＵアクティビティグラフ６１２（グラフ  ６０４、６０６および６０８は、それぞれ、図３に示すタイミングチャート  ３００のグラフ  ３０４、３０６および３０８と同一である）。
【００５９】
４つの重要なタイムイベントが時間軸に沿ってマークされている  −  Ｔ０からＴ３。
【００６０】
時間軸は、タイムイベントＴ０（６１４）で始まる。電源電圧レベルは０ボルトであり、システムは非アクティブである。タイムイベントＴ１（６１６）において、電源電圧は上昇し始め、システムに電源を投入する；タイムイベントＴ２（６１８）において、電源電圧はプリセットレベル（例えば、図３に示す実施形態例ではＶＣＣの９０％）に達する。ＰＯＲユニットは、タイムイベントＴ２（６１８）までリセットに留まる。フラッシュ初期化は、ＰＯＲがリセットにあるときに開始し、タイムイベントＴ３（６２０）で終了する。
【００６１】
Ｔ２（６１８）でＣＰＵリセット（グラフ６１０）が解除され、ＣＰＵはブートを試み、フラッシュデバイスからデータを読み取る。ただし、フラッシュデバイスが初期化される間（Ｔ２からＴ３）、ＣＰＵはフラッシュからストールコードを読み取る。フラッシュの初期化が完了したときにのみ、ＣＰＵはフラッシュから実際のブートデータを読み取り、ブートシーケンスを実行する。
【００６２】
したがって、図６に示すタイミングチャート  ６００によれば、フラッシュが初期化しているときにＣＰＵはリセットから抜け出すが、初期化が完了するまでフラッシュからストールコードを読み取る。フラッシュの準備が整ったときのみ、ＣＰＵはフラッシュから実際のブートコードを読む。
【００６３】
図６に示すタイミングチャート  ６００は一定の縮尺で描かれておらず、より長い水平距離は必ずしもより長いそれぞれの期間を意味するわけではない。さらに、タイミングチャート  ６００は、単に概念を明確にするために示されている例示的なチャートである。本発明の代替実施形態では、任意の他の適切なタイミングチャートを使用してもよい。
【００６４】
（ストール命令の例）
いくつかのプロセッサアーキテクチャでは、プロセッサブートシーケンスはアドレス０ｘ００００００００からブートコードを読み取る場合がある。
【００６５】
フラッシュデバイスの準備が整っていないとき、ストール命令ユニット  ４０２（図４）は、「自己分岐」命令（´ｂ．´）のループをＣＰＵに送る。
【００６６】
ＣＰＵが実行するストールシーケンスは、次の通りである：
・´ｂ．´／／自己分岐命令
・´ｂ．´／／自己分岐命令
・´ｂ．´／／自己分岐命令
・…。
・´ｂ．´／／自己分岐命令
【００６７】
ブートコードは、アドレス０ｘ００００から始まる記憶アレイ  １１２に格納される。
【００６８】
（ストールシーケンスの例）
いくつかのプロセッサアーキテクチャでは、プロセッサブートシーケンスは、最初にいくつかのデータまたは構成をメモリデバイスからロードし（例えば、命令ポインタ、スタックポインタなど）、その後にのみメインブートコードの実行を開始する。
【００６９】
ブートシーケンスは、例えば、以下のシーケンスを含み得る；
１．アドレス０からのワードをスタックポインタ（ＳＰ）レジスタにロードする；
２．アドレス４からのワードをプログラムカウンタ（ＰＣ）レジスタにロードする
３．ＰＣが指すアドレスからのコードの実行を開始する。
【００７０】
メモリデバイスがその内部リセットシーケンスを終了することを可能にするために、ストールシーケンスユニット  ５０２は以下を返す：アドレス０または４がアクセスされるときのＰＣおよびＳＰの値、ならびに位置０に格納されているアドレスがアクセスされるときの自己分岐（´ｂ．´）命令。フラッシュデバイスの準備が整うまで、ＣＰＵはアドレス０および４を一度だけ読み取り、その後自己分岐命令を読み続ける。
【００７１】
例えば、ブートベクトルが以下を含む場合：
０ｘ０００：０ｘ２０００１０００／／ＳＰの値
０ｘ００４：０ｘ０００００１００／／ＰＣの値
．．．
０ｘ１００：［ブートコードはここから始まります］
【００７２】
フラッシュデバイスは、準備が整っていないときに次のシーケンスをＣＰＵに送信する：
初回アクセス時  −  ０ｘ２０００１０００／／ＳＰの初期化
２回目のアクセス時  −  ０ｘ０００００１００／／ＰＣの初期化
さらなるアクセス時  −  ´ｂ．´／／自己分岐コード
【００７３】
コンピュータシステム  １００、２００、４００、５００の構成：フラッシュデバイス  １０８、２０８、４０８および５０８の構成：ならびに図１、２、４、および５に関して上述した他のユニットの構成は、単に概念を明確にするために示されている構成例である。代替実施形態では、例えば、いくつかもしくは全てが別々のリセット入力を有する複数のフラッシュデバイスおよび／または複数のＣＰＵユニットを持つシステム構成を含む、任意の他の適切な構成を使用することができる。
【００７４】
図１、２、４、および５に記載の素子のいくつかは、特定アプリケーション向け集積回路（ＡＳＩＣ）もしくはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）などの適切なハードウェアを使用して、ソフトウェアを使用して、ハードウェアを使用して、またはハードウェアとソフトウェア素子との組み合わせを使用して実装され得る。
【００７５】
本明細書に記載の実施形態は、主に埋め込み型不揮発性メモリを持つコンピュータシステムを対象としているが、本明細書に記載の方法およびシステムは、他の記憶装置、例えばハードディスクを持つコンピュータシステムなどの他のアプリケーションにも使用できる。
【００７６】
したがって、上記の実施形態は例として引用されており、本発明は上記に特に示され記載されたものに限定されないことが理解されるであろう。むしろ、本発明の範囲は、上記の様々な特徴の組み合わせおよび部分的組み合わせ、ならびに前述の説明を読むと当業者に想起されると思われ、先行技術では開示されていないそれらの変形および修正を含む。参照により本特許出願に組み込まれる文書は、本出願の不可欠な部分とみなされるべきであるが、本明細書中で明示的または暗黙的になされた定義と矛盾するようにこれらの組み込まれた文書中で定義された任意の用語の限りでは、本明細書中の定義のみが考慮されるべきであることを除く。
る。
【符号の説明】
【００７７】
１００、２００、４００    コンピュータシステム
１０２    ＣＰＵ
１０４    ＲＡＭ
１０６周辺機器
１０８、２０８、４０８、５０８    フラッシュ
１１０    バス
１１２    不揮発性記憶アレイ
１１４    初期化回路
１１６    プロセッサリセット回路
１１８    外部リセットソース
２０２    パワーオンリセット（ＰＯＲ）回路
３００、６００    タイミング図
３０２、６０２    時間軸
３０４、６０４    電源電圧グラフ
３０６、６０６    パワーオンリセットグラフ
３０８、６０８    フラッシュアクティビティグラフ
３１０、６１０    ＣＰＵリセットグラフ
３１２、６１２    ＣＰＵアクティビティグラフ
３１４、６１４    タイムイベントＴ０
３１６、６１６    タイムイベントＴ１
３１８、６１８    タイムイベントＴ２
３２０、６２０    タイムイベントＴ３
３２２    タイムイベントＴ４
４０２    ストールコードユニット
４０４    マルチプレクサ（ＭＵＸ）
５０２    ストールシーケンスユニット
【図１】
2020135843.tif 000003
【図２】
2020135843.tif 000004
【図３】
2020135843.tif 000005
【図４】
2020135843.tif 000006
【図５】
2020135843.tif 000007
【図６】
2020135843.tif 000008
【外国語明細書】
2020135843000001.pdf