(57)【要約】【課題】順次アクセスされるメモリからデータを読み出してブートするシステムにおいて、システムの起動時間を短縮する。【解決手段】ページアクセスメモリ（６）は、複数のページを有し、ページ単位に順次アクセスするように構成され、初期化データとブートコードとを格納する。ブートシステムは、ページアクセスメモリ（６）に格納されたページデータをバッファし、ランダムアクセスメモリ（４）に中継するページバッファ（９）と、ページデータをページアクセスメモリ（６）からページバッファ（９）に読み出し、ページデータに初期化データが含まれている場合、ＣＰＵ（２）によるブートコードのフェッチが可能となるよりも前に、初期化データに従ってシステムの初期化処理を実行するシーケンサ（１０）とを備えている。【選択図】図１
2013246630.tif 000002
【特許請求の範囲】
【請求項１】
順序づけられた複数のページを有し、ページ単位に順次アクセスするように構成されたページアクセスメモリからデータを読み出してブートするブートシステムであって、
前記ページアクセスメモリの一部の領域には当該ブートシステムの初期化に必要な初期値を設定するための初期化データが格納され、当該領域以外の少なくとも一部の領域にはブートコードが格納されており、
前記ページアクセスメモリから転送されたブートコードを格納するランダムアクセスメモリと、
前記ランダムアクセスメモリから前記ブートコードをフェッチしてシステムをブートするＣＰＵ（Central Processing Unit）と、
前記ページアクセスメモリのページ単位のデータであるページデータをバッファし、前記ランダムアクセスメモリに中継するページバッファと、
前記ページアクセスメモリから前記ページデータを前記ページバッファに読み出し、前記ページデータに前記初期化データが含まれている場合、前記ＣＰＵによる前記ブートコードのフェッチが可能となるよりも前に、前記初期化データに従って当該ブートシステムの初期化処理を実行するシーケンサとを備えている
ことを特徴とするブートシステム。
【請求項２】
請求項１のブートシステムにおいて、
前記初期化データには、初期化すべきターゲットのアドレスと当該ターゲットに設定すべき初期値とが対応づけられたテーブルが含まれており、
前記シーケンサは、前記アドレスで示されるターゲットに対して当該アドレスに対応する初期値を設定することで前記初期化処理を行う
ことを特徴とするブートシステム。
【請求項３】
請求項１のブートシステムにおいて、
前記初期化データは、前記ページアクセスメモリの複数のページに分散して配置されている
ことを特徴とするブートシステム。
【請求項４】
請求項１のブートシステムにおいて、
前記初期化データは、前記ページアクセスメモリの所定のページに配置されている
ことを特徴とするブートシステム。
【請求項５】
請求項１のブートシステムにおいて、
前記ページアクセスメモリの一部の領域には、誤り訂正コードを格納するための冗長記憶領域が割り当てられており、
前記初期化データは、前記冗長記憶領域の少なくとも一部に配置されている
ことを特徴とするブートシステム。
【請求項６】
請求項１のブートシステムにおいて、
前記初期化データが前記ページアクセスメモリのどの領域に格納されているかを示す情報を記憶する記憶部を備え、
前記シーケンサは、前記記憶部に記憶されている情報に基づいて、前記ページデータに含まれる前記初期化データを認識する
ことを特徴とするブートシステム。
【請求項７】
請求項６のブートシステムにおいて、
前記記憶部に格納されている情報は、前記初期化データに関する、アドレスおよびサイズを含んでいる
ことを特徴とするブートシステム。
【請求項８】
請求項６のブートシステムにおいて、
前記記憶部に格納されている情報は、前記初期化データが格納されているページの情報、あるいは当該ページ内における前記初期化データの位置情報を含んでいる
ことを特徴とするブートシステム。
【請求項９】
請求項１のブートシステムにおいて、
前記シーケンサは、前記初期化処理が完了したことを前記ＣＰＵに通知し、
前記ＣＰＵは、前記シーケンサからの通知を受けて前記ブートコードのフェッチを開始する
ことを特徴とするブートシステム。
【請求項１０】
請求項１のブートシステムにおいて、
前記ページアクセスメモリは不揮発性メモリである
ことを特徴とするブートシステム。
【請求項１１】
請求項１０のブートシステムにおいて、
前記不揮発性メモリはＮＡＮＤフラッシュメモリである
ことを特徴とするブートシステム。
【請求項１２】
ブートコードが格納されたランダムアクセスメモリからＣＰＵによって前記ブートコードをフェッチしてシステムをブートするブートステップと、
順序づけられた複数のページを有し、ページ単位に順次アクセスするように構成され、内部の一部の領域に前記システムの初期化に必要な初期値を設定するための初期化データが格納され、当該領域以外の少なくとも一部の領域に前記ブートコードが格納されたページアクセスメモリから当該ページ単位のデータであるページデータを読み出すリードステップと、
前記リードステップによって読み出された前記ページデータをページバッファにバッファするバッファステップと、
前記ページバッファにバッファされた前記ページデータを前記ランダムアクセスメモリに転送する転送ステップと、
前記ページバッファにバッファされた前記ページデータに前記初期化データが含まれている場合、前記ＣＰＵによる前記ブートコードのフェッチが可能となるよりも前に、前記初期化データに従って前記システムの初期化処理を実行する初期化ステップとを備えている
ことを特徴とするシステム初期化方法。
【請求項１３】
請求項１２のシステム初期化方法において、
前記転送ステップと前記初期化ステップとは並行して実行される
ことを特徴とするシステム初期化方法。
【請求項１４】
請求項１２のシステム初期化方法において、
前記初期化ステップは前記転送ステップよりも前に実行される
ことを特徴とするシステム初期化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブートシステムに関し、特に、システムの起動時間を短縮する技術に関する。
【背景技術】
【０００２】
一般に、ブートシステムでは、ＣＰＵ（Central Processing Unit）が、その動作に必要なブートコードの命令フェッチを行うことでシステムがブートされる。ブートコードは不揮発性メモリに格納されることが多く、不揮発性メモリとしては、低コスト化などの観点から、ＮＡＮＤ型のフラッシュメモリが用いられることが多い。
【０００３】
ところが、ＮＡＮＤフラッシュメモリのような不揮発性メモリは、ページ単位での順次アクセスしかできないため、ＣＰＵがそのメモリに直接ランダムアクセスして命令フェッチを行うことは難しい。そのため、ＣＰＵまたはＤＭＡ（Direct Memory Access）コントローラ等のバスマスタにより、ブートコードをＮＡＮＤフラッシュメモリからランダムアクセスメモリに転送し、その後ランダムアクセスメモリに対して命令フェッチを行って、システムのブートを開始する構成が一般的になっている（例えば、特許文献１参照）。ブートコードがＮＡＮＤフラッシュメモリからランダムアクセスメモリに転送される際にバッファされる場合には、バッファのサイズ単位で転送される。
【０００４】
また、ランダムアクセスメモリにはＳＲＡＭ（Static Random Access Memory）、あるいはＤＲＡＭ（Dynamic Random Access Memory）が使用されることが多い。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−２７８７８１号公報
【特許文献２】特開２００８−６５４３４号公報
【特許文献３】特開２０１１−０８７１２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述の構成では、不揮発性メモリ内の全てのブートコードがランダムアクセスメモリに転送されてから命令フェッチが開始されるが、その時点ではシステムの初期化がなされていない。そのため、ＣＰＵによる命令フェッチが可能となった時点から、まず、システム初期化のためのアクセスが実行される。そして、初期化処理が完了してからシステムのブートが行われる。したがって、システムの電源をオンしてから、ブートコードの実行が開始されるまでの起動時間が増大してしまう。また、システムの初期化処理が相対的に遅延するため、システム全体の安定性が損われるおそれがある。
【０００７】
これらを解決するために、システム初期化用のプログラムを格納するための初期化用メモリとシステム起動用のプログラムを格納するための起動用メモリとを設け、システム起動用プログラムのシステム起動用メモリへの転送が完了するまでに、初期化用メモリからのシステム初期化用プログラムの実行を先行する構成が開示されている（例えば、特許文献２参照）。ところが、この構成では、システム初期化用プログラムを格納するための専用のメモリが必要になるため、低コスト化には不向きである。また、システム初期化用プログラムとシステム起動用プログラムとを別々に管理する必要があり、ソフトウェアの構成が複雑になるというデメリットもある。
【０００８】
また、例えば特許文献３のように、不揮発性メモリから読み出したデータをバッファせずに転送する構成のものがある。この構成では、読み出したデータのアドレスと所定値とを比較し、これらが一致する場合に当該データを初期設定用のデータとして特定し、そのデータを用いて初期化処理が行われる。この構成では、メモリ上のアドレスに対応するデータを扱っていることから、不揮発性メモリはランダムアクセスメモリであることが前提となっている。したがって、データの転送元が順次アクセスされるようなメモリである場合への適応が困難である。
【０００９】
かかる点に鑑みて、本発明は、順次アクセスされるメモリからデータを読み出してブートするシステムにおいて、システムの起動時間を短縮することを課題とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するため本発明によって次のような解決手段を講じた。すなわち、順序づけられた複数のページを有し、ページ単位に順次アクセスするように構成されたページアクセスメモリからデータを読み出してブートするブートシステムは、前記ページアクセスメモリの一部の領域には当該ブートシステムの初期化に必要な初期値を設定するための初期化データが格納され、当該領域以外の少なくとも一部の領域にはブートコードが格納されており、前記ページアクセスメモリから転送されたブートコードを格納するランダムアクセスメモリと、前記ランダムアクセスメモリから前記ブートコードをフェッチしてシステムをブートするＣＰＵと、前記ページアクセスメモリのページ単位のデータであるページデータをバッファし、前記ランダムアクセスメモリに中継するページバッファと、前記ページアクセスメモリから前記ページデータを前記ページバッファに読み出し、前記ページデータに前記初期化データが含まれている場合、前記ＣＰＵによる前記ブートコードのフェッチが可能となるよりも前に、前記初期化データに従って当該ブートシステムの初期化処理を実行するシーケンサとを備えている。
【００１１】
これによると、ページデータがページアクセスメモリからランダムアクセスメモリに転送される際に、シーケンサによってページ単位に読み出されたページデータが、ページバッファでバッファされる。バッファされたページデータは、ランダムアクセスメモリに中継されるが、その内部に初期化データが含まれている場合には、ＣＰＵによるブートコードのフェッチが可能となる前に、シーケンサによってシステムの初期化処理が実行される。つまり、システムの初期化処理をシステムのブートが可能となるタイミングよりも前に開始することができるため、初期化処理が完了するタイミングを早めることができる。したがって、初期化処理の完了後、ＣＰＵによって即座にシステムのブートを開始することができるため、システムの起動時間を短縮することができる。
【発明の効果】
【００１２】
本発明によると、順次アクセスされるメモリからデータを読み出してブートするシステムにおいて、システムの起動時間を短縮することができる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施形態に係るブートシステムの構成を示すブロック図である。
【図２】図１の不揮発性メモリの内部構成の例を示す図である。
【図３】第１の実施形態に係るブートシステムの動作を示すフローチャートの例である。
【図４】従来および第１の実施形態に係るブートシステムのブートシーケンスを比較したタイミングチャートである。
【図５】第１の実施形態の変形例に係る不揮発性メモリの内部構成の例を示す図である。
【図６】従来および第１の実施形態の変形例に係るブートシステムのブートシーケンスを比較したタイミングチャートである。
【図７】第２の実施形態に係るブートシステムの構成を示すブロック図である。
【発明を実施するための形態】
【００１４】
＜第１の実施形態＞
図１は、第１の実施形態に係るブートシステムの構成を示すブロック図である。図１のブートシステムは、不揮発性メモリコントローラ１と、ＣＰＵ２と、内部バス３と、ランダムアクセスメモリ４と、システムコンフィギュレーションレジスタ５と、ページアクセスメモリとしての不揮発性メモリ６とを有している。不揮発性メモリコントローラ１、ＣＰＵ２、ランダムアクセスメモリ４、およびシステムコンフィギュレーションレジスタ５はそれぞれ、内部バス３に接続されている。なお、不揮発性メモリ６は、システムの外部に設けられていてもよい。
【００１５】
不揮発性メモリコントローラ１は、ＤＭＡＣ（Direct Memory Access Controller）７と、不揮発性メモリＩ／Ｆ８と、シーケンサ１０と、記憶部１１とを有し、不揮発性メモリＩ／Ｆ８を介して不揮発性メモリ６に対するアクセス制御を行う。ＤＭＡＣ７およびシーケンサ１０は内部バス３に接続され、不揮発性メモリＩ／Ｆ８は内部バス３および不揮発性メモリ６に接続されている。
【００１６】
不揮発性メモリ６は、例えばＮＡＮＤフラッシュメモリで構成されている。
【００１７】
図２は、不揮発性メモリ６の内部構成を示す図である。図２（ａ）に示すように、不揮発性メモリ６は、順序づけられた複数のページを有し、例えばページ１からページＮ（Ｎは２以上の整数）で構成されている。そして、ページ内の所定の領域には、システムの初期化に用いられる初期化データが格納され、その他の領域には、システムをブートするためのブートコードが格納されている。本実施形態では、初期化データが格納される初期化データ領域は、図２（ａ）の斜線部のように、複数のページにわたって分散して配置されているものとする。初期化データは、図２（ｂ）に示すように、初期化処理の対象となるターゲットのアドレス（ａｄｄｒｅｓｓ１〜ａｄｄｒｅｓｓＭ）と、そのターゲットに設定すべき初期値（ｄａｔａ１〜ｄａｔａＭ）とが対応づけられたテーブルを含んでいる。なお、不揮発性メモリ６において、内部の一部が初期化データ領域に割り当てられ、その他の少なくとも一部がブートコードを格納する領域に割り当てられていればよい。
【００１８】
図１に戻り、ＤＭＡＣ７は、不揮発性メモリＩ／Ｆ８内に設けられたページバッファ９にバッファされたページデータをランダムアクセスメモリ４にＤＭＡ転送する。ＤＭＡＣ７は、ページバッファ９が例えばフルになるとランダムアクセスメモリ４への転送を開始する。
【００１９】
ページバッファ９は、不揮発性メモリ６から読み出されたページ単位のデータであるページデータをバッファするものであり、複数のページで構成されている。ページバッファ９は、ページデータをランダムアクセスメモリ４に中継するために用いられる。ページバッファ９の１ページのサイズは、例えば、不揮発性メモリ６の１ページと同じである。
【００２０】
シーケンサ１０は、不揮発性メモリ６からページデータを読み出して、ページバッファ９に格納する。シーケンサ１０による不揮発性メモリ６へのアクセスは、１ページ単位でも、複数ページ単位でもよい。そして、シーケンサ１０は、不揮発性メモリ６への順次アクセスを行い、アクセスしたページに初期化データ領域が含まれる場合、つまり、ページバッファ９に格納されたページデータに初期化データが含まれている場合、その初期化データに従ってシステムの初期化処理を実行する。
【００２１】
具体的に、シーケンサ１０は、初期化データ内のアドレスで示される初期化すべきターゲットであるシステムコンフィギュレーションレジスタ５に、そのアドレスに対応づけられたデータである初期値を設定する。例えば、ａｄｄｒｅｓｓ１で示されるシステムコンフィギュレーションレジスタ５にｄａｔａ１が設定される。なお、図１には図示していないが、システムコンフィギュレーションレジスタ５は複数存在しており、初期化データは、これら複数のシステムコンフィギュレーションレジスタ５のアドレスと、それぞれに設定すべき初期値とを含んでいる。シーケンサ１０は、全てのターゲットについての初期化処理が完了すると、通知信号１２を用いてＣＰＵ２に初期化処理が完了したことを通知する。当該通知は、例えば、ＣＰＵ割り込みなどによって行われる。
【００２２】
また、シーケンサ１０は、記憶部１１に記憶された情報に基づいて、不揮発性メモリ６のどのページに初期化データ領域が含まれているかどうかを判断することができる。記憶部１１には、不揮発性メモリ６におけるどの位置に初期化データ領域が配置されているかを示す情報が記憶されている。本実施形態では、その情報は、例えば、ページ内における初期化データ領域の先頭アドレス、および初期化データ領域のサイズである。したがって、シーケンサ１０は、記憶部１１の情報を参照して不揮発性メモリ６にアクセスすることにより、ページバッファ９に読み出したページデータに初期化データが含まれているかどうかを認識することができる。つまり、不揮発性メモリ６において初期化データ領域を割り当てる位置に応じて、記憶部１１に記憶させるべき情報を変更すればよい。
【００２３】
なお、不揮発性メモリ６の各ページにおける初期化データ領域の先頭アドレスやサイズは異なっていてもよい。この場合、記憶部１１には、各初期化データ領域の先頭アドレスおよびサイズに加えて、各初期化データ領域が割り当てられているページの番号を記憶させておけばよい。
【００２４】
ＣＰＵ２は、ＤＭＡＣ７によって不揮発性メモリ６内の全てのページデータがランダムアクセスメモリ４に転送されてから、ランダムアクセスメモリ４からのフェッチを開始することができるメインブートＯＮ状態となる。そして、ＣＰＵ２は、シーケンサ１０からの通知信号１２を受けると、ランダムアクセスメモリ４からブートコードをフェッチしてシステムのブートを開始する。
【００２５】
以上のように構成されたブートシステムの動作について、図３を用いて説明する。図３は、本実施形態に係るブートシステムの動作を示すフローチャートの例である。
【００２６】
まず、図３（ａ）に示すように、システムの電源をＯＮすると、シーケンサ１０が動作を開始する（Ｓ１０１）。これにより、図３（ａ），（ｂ）に示す動作の同時並行的な実行が可能となるが、ここでは、図３（ａ）の動作について説明した後に図３（ｂ）の動作を説明する。
【００２７】
シーケンサ１０によって、不揮発性メモリ６からページバッファ９に例えば１ページ分のページデータが読み出される（Ｓ１０２）。
【００２８】
ページバッファ９にページデータが読み出される度に、ページバッファ９がフルになったか否かが判断される（Ｓ１０３）。ページバッファ９がフルになっていなければ（Ｓ１０３のＮＯ肢）、Ｓ１０２に戻る。一方、ページバッファ９がフルであれば（Ｓ１０３のＹＥＳ肢）、ＤＭＡＣ７が起動して、ページバッファ９内のページデータをランダムアクセスメモリ４にＤＭＡ転送する（Ｓ１０４）。
【００２９】
その後、不揮発性メモリ６内の全てのページデータがランダムアクセスメモリ４に転送されたかどうかが判定される（Ｓ１０５）。全てのページデータの転送が完了していなければ（Ｓ１０５のＮＯ肢）、Ｓ１０２に戻る。一方、全てのページデータの転送が完了していれば（Ｓ１０５のＹＥＳ肢）、ＣＰＵ２がメインブートＯＮ状態となる（Ｓ１０６）。
【００３０】
そして、シーケンサ１０からＣＰＵ２への初期化完了の通知の有無が判定される（Ｓ１０７）。初期化完了の通知がない場合（Ｓ１０７のＮＯ肢）、例えば異常であることをユーザに通知する異常処理を行う（Ｓ１０９）。初期化完了の通知があった場合（Ｓ１０７のＹＥＳ肢）、ＣＰＵ２がランダムアクセスメモリ４からブートコードをフェッチしてブートを開始する（Ｓ１０８）。
【００３１】
次に、図３（ｂ）に示すシーケンサ１０の動作について説明する。
【００３２】
まず、不揮発性メモリ６からページバッファ９に初期化データが読み出されたかどうかが判定される（Ｓ２０１）。初期化データが読み出されていない場合（Ｓ２０１のＮＯ肢）、Ｓ１０２に戻る。初期化データが読み出されている場合（Ｓ２０１のＹＥＳ肢）、読み出された初期化データに含まれるアドレスで示される全てのターゲット（システムコンフィグレーションレジスタ５）に対して、そのアドレスに対応づけられた初期値を設定するための初期化アクセスが行われる（Ｓ２０２）。これにより、そのアドレスで示されるターゲットの初期化処理が完了する。
【００３３】
その後、システムにおける全てのターゲットについての初期化処理が完了したかどうか、つまり不揮発性メモリ６に格納されている全ての初期化データが読み出されたかどうかが判定される（Ｓ２０３）。初期化処理が完了していなければ（Ｓ２０３のＮＯ肢）、初期化が未処理のターゲットに対する初期化処理を行うためＳ１０２に戻る。初期化処理が完了していれば（Ｓ２０３のＹＥＳ肢）、ＣＰＵ２へ初期化処理が完了したことを通知して処理を終了する（Ｓ２０４）。
【００３４】
図４は、従来および本実施形態に係るブートシーケンスを比較するためのタイミングチャートである。なお、図４（ａ）が従来のブートシーケンスを示し、図４（ｂ）が本実施形態のブートシーケンスを示す。
【００３５】
図４（ａ），（ｂ）に示すように、従来および本実施形態において、不揮発性メモリコントローラから不揮発性メモリへのページアクセスは同様である。従来では、不揮発性メモリに対するページアクセスが行われると、ページデータに含まれるブートコードが内部バスを介してランダムアクセスメモリに転送される。そして、不揮発性メモリの全てのページに格納されているブートコードがランダムアクセスメモリに転送されてから、ＣＰＵがメインブートＯＮ状態となるが、システムの初期化がなされていない。そのため、ＣＰＵがメインブートＯＮ状態になってからシステムを初期化するためのアクセスが行われる。したがって、システムの初期化処理が完了してから、ＣＰＵがランダムアクセスメモリからブートコードをフェッチしてシステムが起動するため、その分起動時間が長くなってしまう。
【００３６】
これに対して、本実施形態では、不揮発性メモリ６に対してページアクセスを行い、読み出したページデータに初期化データが含まれていれば、シーケンサ１０によって即座にシステムを初期化するためのアクセスが行われるとともに、ページデータに含まれるブートコードがランダムアクセスメモリ４へ転送される。そのため、図４（ｂ）に示すように、ブートコードをランダムアクセスメモリ４へ転送する処理と、シーケンサ１０による初期化アクセス処理とを並行して実行することができる。これにより、ＣＰＵ２がメインブートＯＮ状態になる前に、システムの初期化処理を完了することができるため、ＣＰＵ２がメインブートＯＮ状態になると同時にシステムをブートすることができる。つまり、図４（ａ）に示す、ＣＰＵがメインブートＯＮ状態になってからシステムの初期化処理が完了するまでの時間が不要となる。
【００３７】
以上、本実施形態によれば、ページバッファ９に読み出したページデータに初期化データが含まれている場合には、ページバッファ９がフルになっていなくても、シーケンサ１０が、その初期化データに従ってシステムの初期化処理を順次行うため、ＣＰＵ２がメインブートＯＮ状態になる前に初期化処理を完了することができる。したがって、ＣＰＵ２はメインブートＯＮ状態になるのと同時にブートコードをフェッチすることができるため、システムの起動時間を短縮することができる。
【００３８】
また、ＣＰＵ２がメインブートＯＮ状態になる前に、シーケンサ１０による初期化処理が完了するため、システム全体の安定化を図ることができる。
【００３９】
また、特許文献２の技術では、初期化用メモリや起動用メモリにそれぞれ格納されたデータを別々に管理する必要があったが、本実施形態では、１つの不揮発性メモリ６内のデータを管理すればよい。つまり、ソフトウェアによって単一のメモリ内のデータを管理すればよいため、当該ソフトウェアの開発が容易になる。さらに、複数のメモリを実装することなく、シーケンサ１０によって上述した効果を得ることができるため、比較的簡単な回路の追加で、ブートシステムを構成することができる。
【００４０】
なお、システムの初期化処理は、ＣＰＵ２がメインブートＯＮ状態になる前に開始されていればよい。つまり、ＣＰＵ２がメインブートＯＮ状態になるよりも前に初期化処理を実行することで、初期化処理の完了を早めることができ、その結果、起動時間が短縮される。
【００４１】
また、初期化データは、不揮発性メモリ６の全てのページに格納されてなくてもよい。例えば、初期化データ領域は不揮発性メモリ６の奇数ページに確保されていてもよい。
【００４２】
また、シーケンサ１０は、ページバッファ９に読み出されたページデータに初期化データが含まれているたびに初期化処理を行うのではなく、ページバッファ９に初期化データがある程度バッファされてから初期化処理を行うようにしてもよい。
【００４３】
−変形例−
図５は、第１の実施形態の変形例に係る不揮発性メモリの内部構成を示す図である。なお、本変形例に係るブートシステムの構成は、図１と同様である。
【００４４】
本変形例では、図５（ａ），（ｂ）に示すように、不揮発性メモリ６のページ１が初期化データ領域に割り当てられており、その他のページにはブートコードが格納されている。したがって、記憶部１１には、不揮発性メモリ６のページのうち、初期化データが格納されているページとして、ページ１を示すデータが記憶されている。
【００４５】
これにより、シーケンサ１０は、不揮発性メモリ６のページ１のページデータをページバッファ９に読み出したときに、図３（ｂ）に示すフローに従って初期化処理を行う。
【００４６】
図６は、従来および本実施形態のブートシーケンスを比較するためのタイミングチャートである。なお、図６（ａ）は図４（ａ）に示す従来のブートシーケンスと同様であるため説明を省略し、図６（ｂ）に示す本変形例に係るブートシーケンスについて説明する。
【００４７】
本変形例に係るブートシーケンスでは、システムの電源をＯＮすると、不揮発性メモリ６からページバッファ９へのページデータの読み出しが開始される。不揮発性メモリ６のページ１内のページデータには、初期化すべき全てのターゲットについての初期化データが含まれているため、シーケンサ１０によってシステムを初期化するためのアクセスが行われる。これにより、システムの初期化処理が完了する。その後、順次ページ２以降のページデータ、つまりブートコードがページバッファ９に読み出されてバッファされ、ランダムアクセスメモリ４に転送される。このように、本変形例では、ページデータのランダムアクセスメモリ４への転送よりもシステムの初期化処理が優先して行われる。
【００４８】
そして、ＣＰＵ２がメインブートＯＮ状態になると同時に、ＣＰＵ２はランダムアクセスメモリ４からのフェッチを開始することができる。これにより、システムの起動時間を短縮することができる。
【００４９】
以上、本変形例では、第１の実施形態と同様の効果を得ることができる。なお、不揮発性メモリ６において初期化データ領域を割り当てるページは任意である。また、複数のページを初期化データ領域に割り当ててもよい。つまり、初期化データ領域が割り当てられたページの情報やページ内における初期化データの位置情報が記憶部１１に記憶されていればよい。
【００５０】
＜第２の実施形態＞
図７は、第２の実施形態に係るブートシステムの構成を示すブロック図である。図１および図７における共通の符号は同一の構成要素を示すため説明を省略する。本実施形態に係るブートシステムは、図１のコンフィギュレーションレジスタ５に代えて、当該システム外部に設けられたデバイスとの通信に用いられるペリフェラルを備えている点で、第１の実施形態と異なる。
【００５１】
通信用ペリフェラル１３は、内部バス３に接続されており、シーケンサ１０がページバッファ９から取得した初期化データを受けて、外部デバイス１４に送信する。これにより、初期化すべきターゲットがシステムの外部に接続されている場合でも、そのターゲットの初期化処理を行うことができる。つまり、本実施形態によれば、ＣＰＵ２がメインブートＯＮ状態になる前に、外部デバイス１４の初期化処理を完了することができる。
【００５２】
通信用ペリフェラル１３がシリアルインターフェースであれば、外部デバイス１４を制御するための制御情報を通信用ペリフェラル１３から外部デバイス１４に送出することができる。この場合、外部デバイス１４は、受信した制御情報に基づいてデバイス固有の設定や制御を行うことができるものとし、不揮発性メモリ６の初期化データ領域には、通信用ペリフェラル１３を示すアドレスと、外部デバイス１４に対する制御情報とが格納されているものとする。
【００５３】
例えば、外部デバイス１４が限定受信システムに用いられるＩＣ（Integrated Circuit）カードである場合、ＣＰＵ２がメインブートＯＮ状態になる前に、通信用ペリフェラル１３は、外部デバイス１４に対して、ＩＣカードによって認証処理を行うための情報を送信することができる。これにより、ＩＣカードはシステムのブートに先行して認証処理を開始することができるため、限定受信システムを搭載するテレビなどにおいて、映像や音声が出力されるまでの時間を短縮することができる。
【００５４】
以上、本実施形態によれば、システムの外部にデバイスが接続されている場合であっても、そのデバイスにデータを送信し、デバイス固有の設定や制御を行うことができる。
【００５５】
なお、本実施形態に係るブートシステムに、図１のコンフィギュレーションレジスタ５を設け、外部デバイス１４に対する制御情報の送出、およびコンフィギュレーションレジスタ５の初期化処理を同時並行的に行ってもよい。
【００５６】
また、上述した各実施形態において、不揮発性メモリ６は、必ずしも不揮発性である必要はなく、例えば揮発性メモリでもよい。つまり、順序づけられた複数のページを有し、ページ単位での順次アクセスが可能に構成されたメモリであればよい。
【００５７】
また、不揮発性メモリ６がＮＡＮＤフラッシュメモリで構成されている場合、一般に、ＮＡＮＤフラッシュメモリの各ページには、ブートコードなどが格納されるメインのデータ領域の他に、誤り訂正コードを格納するための冗長記憶領域が確保されている。そこで、この冗長記憶領域の少なくとも一部を上記初期化データ領域に割り当ててもよい。これにより、ページ内の冗長記憶領域に誤り訂正コード以外のデータを格納するスペースがある場合に、そのスペースを有効利用することができる。
【００５８】
また、シーケンサ１０は初期化処理の完了を通知信号１２によってＣＰＵ２に通知するものとして説明したが、当該通知を省略してもよい。この場合、図３（ａ）のＳ１０９に示す異常処理は不要となる。
【００５９】
また、ＣＰＵ割り込み以外の方法で、ＣＰＵ２が初期化処理の完了を認識してもよい。例えば、シーケンサ１０の内部に初期化処理の完了を示すレジスタフラグを設け、ＣＰＵ２が当該レジスタフラグの値をポーリングし、その値に基づいてシステムのブートを開始してもよい。
【００６０】
また、記憶部１１を省略してもよい。この場合、シーケンサ１０は、不揮発性メモリ６における予め決められた領域を初期化データ領域として認識すればよい。
【産業上の利用可能性】
【００６１】
本発明に係るブートシステムは、単純なロジックの追加のみでシステムのブート時間を短縮することができるため、構成が複雑化しがちなシステムに有用である。
【符号の説明】
【００６２】
２    ＣＰＵ
４    ランダムアクセスメモリ
６    不揮発性メモリ（ページアクセスメモリ）
９    ページバッファ
１０  シーケンサ
１１  記憶部
【図１】
2013246630.tif 000003
【図２】
2013246630.tif 000004
【図３】
2013246630.tif 000005
【図４】
2013246630.tif 000006
【図５】
2013246630.tif 000007
【図６】
2013246630.tif 000008
【図７】
2013246630.tif 000009