(57)【特許請求の範囲】
【請求項１】
不揮発性メモリとＲＡＭとＣＰＵとを備え、電源投入時に、不揮発性メモリに圧縮されて格納されているプログラムをＲＡＭにロードし実行する電子機器であって、
前記不揮発性メモリから前記ＲＡＭへのＤＭＡ転送を行うＤＭＡコントローラを備え、
前記不揮発性メモリには、前記プログラムを分割した複数の分割データの各々を圧縮して得られる複数の圧縮データが格納されており、
前記ＣＰＵは、当該電子機器に電源が投入されたならば、前記ＤＭＡコントローラに、前記不揮発性メモリに格納されている前記各圧縮データを、順次、前記ＲＡＭのワーク領域にＤＭＡ転送させながら、前記ＲＡＭのワーク領域へのＤＭＡ転送が完了した前記圧縮データの伸張と前記ＲＡＭのプログラム領域への格納を行い、全ての圧縮データの伸張と前記ＲＡＭのプログラム領域への格納が完了したならば、当該ＲＡＭのプログラム領域に格納された前記プログラムの実行を開始するブートローダー処理を実行し、
前記圧縮データのデータサイズは、当該圧縮データの前記不揮発性メモリから前記ＲＡＭのワーク領域へのＤＭＡ転送に要する時間よりも、前記ＲＡＭのワーク領域に格納された当該圧縮データの伸張と前記ＲＡＭのプログラム領域への格納に要する時間が小さくなるように設定されており、
前記不揮発性メモリに格納されている圧縮データの数をｎとして、前記不揮発性メモリには１からｎ-１番目までのデータサイズＬのｎ-１個の圧縮データと、データサイズＬ以下のデータサイズのｎ番目の圧縮データが格納されており、前記データサイズＬは、全ての圧縮データの前記不揮発性メモリから前記ＲＡＭのワーク領域へのＤＭＡ転送に要する時間と、前記ＲＡＭのワーク領域に格納されたｎ番目の圧縮データの伸張と前記ＲＡＭのプログラム領域への格納に要する時間との和が最小となるように設定されていることを特徴とする電子機器。
【請求項２】
請求項１記載の電子機器であって、
前記不揮発性メモリはフラッシュメモリであり、前記ＲＡＭはＳＤＲＡＭであることを特徴とする電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子機器の電源投入時に行われるプログラムの起動処理に関するものである。
【背景技術】
【０００２】
電子機器の電源投入時に行われるプログラムの起動処理に関する技術としては、電子機器のプログラムを圧縮して不揮発性メモリに格納しておき、電子機器の電源投入時に、ＣＰＵが、不揮発性メモリに圧縮されて格納されているプログラムの伸張とＲＡＭへの格納を行った後、当該ＲＡＭへの格納を完了したプログラムの実行を開始する技術が知られている（たとえば、特許文献１、２）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５-１７８１６９号公報
【特許文献２】特開平５-２１７００５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
前述したＣＰＵが不揮発性メモリに圧縮されて格納されているプログラムの伸張とＲＡＭへの格納を行う技術によれば、プログラムのサイズが大きくなると、不揮発性メモリに格納されている圧縮されたプログラムの読み出しや伸張の処理に長時間を要し、電源投入後の電子機器の起動完了までの時間が長大化してしまうこととなる。
【０００５】
そこで、本発明は、電源投入時に、不揮発性メモリに格納されている圧縮されたプログラムの伸張とＲＡＭへの格納を行うと共に、当該ＲＡＭへの格納を完了したプログラムの実行を開始する電子機器において、電源投入後の電子機器の起動完了までの時間を短縮することを課題とする。
【課題を解決するための手段】
【０００６】
前記課題達成のために、本発明は、不揮発性メモリとＲＡＭとＣＰＵとを備え、電源投入時に、不揮発性メモリに圧縮されて格納されているプログラムをＲＡＭにロードし実行する電子機器として、前記不揮発性メモリから前記ＲＡＭへのＤＭＡ転送を行うＤＭＡコントローラを備えた電子機器を提供する。ただし、前記不揮発性メモリには、前記プログラムを分割した複数の分割データの各々を圧縮して得られる複数の圧縮データが格納されており、前記ＣＰＵは、当該電子機器に電源が投入されたならば、前記ＤＭＡコントローラに、前記不揮発性メモリに格納されている前記各圧縮データを、順次、前記ＲＡＭのワーク領域にＤＭＡ転送させながら、前記ＲＡＭのワーク領域へのＤＭＡ転送が完了した前記圧縮データの伸張と前記ＲＡＭのプログラム領域への格納を行い、全ての圧縮データの伸張と前記ＲＡＭのプログラム領域への格納が完了したならば、当該ＲＡＭのプログラム領域に格納された前記プログラムの実行を開始するブートローダー処理を実行するものである。
【０００７】
ここで、前記圧縮データのデータサイズは、当該圧縮データの前記不揮発性メモリから前記ＲＡＭのワーク領域へのＤＭＡ転送に要する時間よりも、前記ＲＡＭのワーク領域に格納された当該圧縮データの伸張と前記ＲＡＭのプログラム領域への格納に要する時間が小さくなるように設定することが好ましい。また、この場合には、前記不揮発性メモリに格納されている圧縮データの数をｎとして、前記不揮発性メモリには１からｎ-１番目までのデータサイズＬのｎ-１個の圧縮データと、データサイズＬ以下のデータサイズのｎ番目の圧縮データが格納されており、前記データサイズＬは、全ての圧縮データの前記不揮発性メモリから前記ＲＡＭのワーク領域へのＤＭＡ転送に要する時間と、前記ＲＡＭのワーク領域に格納されたｎ番目の圧縮データの伸張と前記ＲＡＭのプログラム領域への格納に要する時間との和が最小となるように設定することが好ましい。
【０００８】
なお、前記不揮発性メモリはフラッシュメモリであってよく、前記ＲＡＭはＳＤＲＡＭであって良い。
このような電子機器によれば、複数の圧縮データは、順次、不揮発性メモリからＲＡＭのワーク領域にＤＭＡ転送される。一方、ＲＡＭのワーク領域にＤＭＡ転送された圧縮データの多くは、ＲＡＭのワーク領域への格納が完了されしだい、伸張とＲＡＭのプログラム領域の格納が、他の圧縮データのＤＭＡ転送と並行して行われることになる。
【０００９】
よって、ＲＡＭのプログラム領域へのプログラムのロードに要する時間が短縮され、電源投入後の電子機器の起動を迅速に行うことができるようになる。
【発明の効果】
【００１０】
以上のように、本発明によれば、電源投入時に、不揮発性メモリに格納されている圧縮されたプログラムの伸張とＲＡＭへの格納を行うと共に、当該ＲＡＭへの格納を完了したプログラムの実行を開始する電子機器において、電源投入後の電子機器の起動完了までの時間を短縮することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態に係る電子機器の構成を示すブロック図である。
【図２】本発明の実施形態に係る電子機器のフラッシュメモリとＳＤＲＡＭの記憶空間を示す図である。
【図３】本発明の実施形態に係るブートローダー処理を示すフローチャートである。
【図４】本発明の実施形態に係るカーネルプログラムのロードシーケンスを示すタイミングチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態について説明する。
図１に、本実施形態に係る電子機器の構成を示す。
図示するように、本実施形態に係る電子機器は、コンピュータとしての基本構成を備えている。
すなわち、電子機器は、高速バス１で接続されたＣＰＵ２、ＤＭＡＣ３（ＤＭＡコントローラ３）とメモリコントローラ４、グラフィックコントローラ５、Ｉ／Ｏコントローラ６とを有している。
また、電子機器は、メモリコントローラ４によってリード/ライトや高速バス１との間の入出力が制御されるＳＤＲＡＭ７とＲＯＭ８とを備えており、ＣＰＵ２やＤＭＡＣ３は、メモリコントローラ４を介して、ＳＤＲＡＭ７やＲＯＭ８との間の入出力を行うことができる。ここで、ＲＯＭ８には、電子機器の電源投入時にＣＰＵ２が最初に実行する初期プログラムが格納されている。
【００１３】
また、電子機器は、グラフィックコントローラ５による表示出力が行われるディスプレイ９と備えており、ＣＰＵ２は、グラフィックコントローラ５を介して、ディスプレイ９の表示を制御することができる。
また、電子機器は、Ｉ／Ｏコントローラ６に接続したフラッシュメモリ１０と入力装置１１とＨＤＤ１２とその他の周辺装置１３を備えており、ＣＰＵ２やＤＭＡＣ３は、Ｉ／Ｏコントローラ６を介して、フラッシュメモリ１０や入力装置１１やＨＤＤ１２やその他の周辺装置１３との間の入出力を行うことができる。
【００１４】
そして、ＤＭＡＣ３は、ＣＰＵ２の要求に応えて、ＳＤＲＡＭ７やフラッシュメモリ１０やＨＤＤ１２などの装置相互間の、ＣＰＵ２を介さないデータ転送であるダイレクトメモリアクセス転送を行う。
次に、フラッシュメモリ１０の記憶データについて説明する。
図２ｂに示すように、フラッシュメモリ１０には先頭に配置されたブートローダープログラムと、複数の圧縮データ＃１-＃ｎが格納されている。
圧縮データ＃１-＃ｎの各々は、図２ａに示す電子機器のＯＳまたは基本プログラムのコア部分を形成するカーネルプログラムを分割した複数の分割データをＬＺＦなどの所定の圧縮アルゴリズムで圧縮したデータである。
すなわち、たとえば、カーネルプログラムを分割した複数の分割データのうちの１番目の分割データ＃１を圧縮したデータが圧縮データ＃１となり、カーネルプログラムを分割した複数の分割データのうちの２番目の分割データ＃２を圧縮したデータが圧縮データ＃２となり、以下、同様に、カーネルプログラムを分割した複数の分割データのうちのｎ番目の分割データｎを圧縮したデータが圧縮データ＃ｎとなる。
【００１５】
ここで、カーネルプログラムの分割データへの分割は、所定データサイズＬを設定し、圧縮データの数をｎとして、＃１から＃ｎ-１までのｎ-１個のデータサイズＬの圧縮データと、＃ｎのデータサイズが所定データサイズＬ以下の圧縮データが得られるように行う。すなわち、たとえば、近似的には、圧縮アルゴリズのデータサイズＤのデータに対する平均的な圧縮率がｋであれば、Ｄ×ｋが最もＬに近くなるＤの値をＤｓとする。そして、データサイズＤｓ毎に、カーネルプログラムのデータを、残りデータがデータサイズＤｓ以下となるまで先頭より順次抽出して分割データ＃１-＃（ｎ-１）とした上で、残ったデータサイズＤｓ未満のデータを最後の分割データ＃ｎとし、各分割データ＃１-＃ｎを圧縮して圧縮データ＃１-＃ｎを得るようにすればよい。
【００１６】
ここで、所定データサイズＬについては後述する。
次に、このような電子機器の電源投入時に行われるブートローダー処理について説明する。
ここで、電子機器に電源が投入されると、ＣＰＵ２は、 ＲＯＭ８に記憶されている初期プログラムを実行し、フラッシュメモリ１０の先頭に格納されているブートローダープログラムをＳＤＲＡＭ７の所定領域に転送し、ＳＤＲＡＭ７の所定領域に転送したブートローダープログラムの実行を開始する。
【００１７】
そして、このブートローダープログラムの実行により実現される処理がブートローダー処理である。
図３に、このブートローダー処理の手順を示す。
なお、図２に示すように、ＳＤＲＡＭ７の記憶空間には、プログラム領域とワーク領域とが、相互に重複しないように予め定義されている。
さて、図３に示すように、ブートローダー処理では、フラッシュメモリ１０に格納されている先頭の圧縮データ＃１のフラッシュメモリ１０からＳＤＲＡＭ７のワーク領域へのＤＭＡ転送をＤＭＡＣ３に要求する（ステップ３０２、３０４）。そして、以降、指示した圧縮データ＃ｉのＤＭＡ転送の完了の報告をＤＭＡＣ３から通知されたならば（ステップ３０６）、次の圧縮データ＃(ｉ+１)のフラッシュメモリ１０からＳＤＲＡＭ７のワーク領域へのＤＭＡ転送をＤＭＡＣ３に要求し（ステップ３１０）、図２のｓ２で示すように、ＳＤＲＡＭ７のワーク領域上にＤＭＡ転送された圧縮データ＃ｉを読み出して伸張し、ＳＤＲＡＭ７のプログラム領域に追加格納する（ステップ３１２）処理を、最後の圧縮データ＃ｎのＤＭＡ転送の完了の報告をＤＭＡＣ３から通知されるまで繰り返す（ステップ３０８、３１４）。
ここで、ＤＭＡＣ３は、圧縮データ＃ｉのフラッシュメモリ１０からＳＤＲＡＭ７のワーク領域へのＤＭＡ転送を要求されたならば、図２ｓ１に示すようにフラッシュメモリ１０の圧縮データ＃ｉをＳＤＲＡＭ７のワーク領域へＤＭＡ転送し、ＤＭＡ転送の完了の報告をＣＰＵ２に行う。
【００１８】
そして、最後の圧縮データ＃ｎのＤＭＡ転送の完了の報告をＤＭＡＣ３から通知されたならば（ステップ３０８）、ＤＭＡ転送の完了が報告されたＳＤＲＡＭ７のワーク領域上の圧縮データ＃ｎを読み出して伸張し、ＳＤＲＡＭ７のプログラム領域に追加格納する（ステップ３１６）。
【００１９】
そして、ＣＰＵ２が実行するプログラムを、ＳＤＲＡＭ７上のカーネルプログラムに切り替えることによりカーネルプログラムを起動し（ステップ３１８）処理を終了する。
なお、上述した圧縮データの所定データサイズＬは、一つの圧縮データのフラッシュメモリ１０からＳＤＲＡＭ７へのＤＭＡ転送に要する時間よりも、一つの圧縮データをＳＤＲＡＭ７より読み出して伸張しＳＤＲＡＭ７に格納する処理に要する時間が短くなるように設定されている。
以上、ブートローダー処理について説明した。
ところで、以上のブートローダー処理は、ＤＭＡＣ３が、ＤＭＡＣ３が備えるキューに格納されたＤＭＡ転送要求を逐次的に実行するように構成されている場合には、フラッシュメモリ１０に格納されている先頭の圧縮データより、フラッシュメモリ１０に格納されている最後の圧縮データまで各圧縮データのＤＭＡ転送要求をＤＭＡＣ３が備えるキューにキューインし、以降、ＤＭＡＣ３からＤＭＡ転送の完了が報告されたＳＤＲＡＭ７のワーク領域上の圧縮データを読み出して伸張し、ＳＤＲＡＭ７のプログラム領域に追加格納する処理を行いつつ、全ての圧縮データの伸張とＳＤＲＡＭ７のプログラム領域への格納が完了したならば、ＳＤＲＡＭ７上のカーネルプログラムを起動するものとしてもよい。
【００２０】
さて、このようなブートローダー処理によれば、図４ａに示すように複数の圧縮データ＃１-＃ｎは、順次、ＤＭＡＣ３でフラッシュメモリ１０からＳＤＲＡＭ７のワーク領域にＤＭＡ転送される。一方、最後の圧縮データ＃ｎを除き、ＳＤＲＡＭ７のワーク領域にＤＭＡ転送された圧縮データ＃ｉは、ＳＤＲＡＭ７のワーク領域への格納が完了されしだい、伸張とＳＤＲＡＭ７のプログラム領域の格納が、次の、圧縮データ＃(ｉ+１)のＤＭＡ転送と並行して行われることになる。
【００２１】
よって、プログラム領域へのカーネルプログラムの格納に要する時間Ｔtotalは、全ての圧縮データをフラッシュメモリ１０からＳＤＲＡＭ７のワーク領域にＤＭＡ転送するのに要する時間Ｔ１と、最後の圧縮データ＃ｎをＳＤＲＡＭ７のワーク領域から読み出して伸張しプログラム領域に格納するのに要する時間Ｔ２の和となる。
【００２２】
一方、カーネルプログラムの全体を圧縮してフラッシュメモリ１０に格納した場合を比較例とすると、当該比較例におけるプログラム領域へのカーネルプログラムの格納に要する時間Ｔrtotalは、図４ｂに示すように、カーネルプログラムの全体を圧縮したデータのフラッシュメモリ１０からＳＤＲＡＭ７のワーク領域にＤＭＡ転送するのに要する時間Ｔr１と、プログラムの全体を圧縮したデータをＳＤＲＡＭ７のワーク領域から読み出して伸張しプログラム領域に格納するのに要する時間Ｔr２の和となる。ここで、比較例のカーネルプログラムの全体を圧縮したデータのデータサイズと、本実施形態の全ての圧縮データのデータサイズの和とは、多少異なるものの大きくは異ならないことが期待できるので、比較例Ｔr１と本実施形態の時間Ｔ１とには大差ないものとなる。一方、比較例のカーネルプログラムの全体を圧縮したデータのデータサイズと、本実施形態の最後の圧縮データ＃ｎとは大きく異なるので、比較例の時間Ｔｒ２は本実施形態の時間Ｔ２よりはるかに大きくなる。
【００２３】
よって、本実施形態によれば、プログラム領域へのカーネルプログラムの格納に要する時間Ｔtotalを大幅に短縮することができる。
以下、上述した圧縮データの所定のデータサイズＬについて説明する。
このデータサイズＬは、上述のように、一つのデータサイズＬの圧縮データのフラッシュメモリ１０からＳＤＲＡＭ７へのＤＭＡ転送に要する時間よりも、一つの圧縮データをＳＤＲＡＭ７より読み出して伸張しＳＤＲＡＭ７に格納する処理に要する時間が短くなることを前提条件として、図４ａに示したプログラム領域へのカーネルプログラムの格納に要する時間Ｔtotalが最小となるように設定する。
【００２４】
すなわち、全ての圧縮データのデータサイズの和をＬtotalとして、Ｌtotalのデータのフラッシュメモリ１０からＳＤＲＡＭ７へのＤＭＡ転送に要する時間を近似的に図４ａの時間Ｔ１の推定値とする。ここで、全ての圧縮データのデータサイズの和をＬtotalは、カーネルプログラムのデータサイズの他、圧縮アルゴリズムに依存して圧縮データの標準のデータサイズとするデータサイズＬによっても変化する。
【００２５】
また、データサイズＬの圧縮データをＳＤＲＡＭ７のワーク領域から読み出して伸張しプログラム領域に格納するのに要する時間を、図４ａの時間Ｔ２の推定値とする。
そして、時間Ｔ１の推定値と時間Ｔ２の推定値の和を、図４ａに示したプログラム領域へのカーネルプログラムの格納に要する時間Ｔtotalの推定値とし、上記前提条件を満たしつつ、時間Ｔtotalの推定値を最小とするデータサイズＬを、求めるデータサイズＬとする。
【符号の説明】
【００２６】
１…高速バス、２…ＣＰＵ、３…ＤＭＡＣ、４…メモリコントローラ、５…４グラフィックコントローラ、６…Ｉ／Ｏコントローラ、７…ＳＤＲＡＭ、８…ＲＯＭ、９…ディスプレイ、１０…フラッシュメモリ、１１…入力装置、１２…ＨＤＤ、１３…周辺装置。
【図１】
0005955618.tif 000002
【図２】
0005955618.tif 000003
【図３】
0005955618.tif 000004
【図４】
0005955618.tif 000005