(57)【要約】【課題】複数のＣＰＵの利用を前提として起動時間を短縮する。【解決手段】第１および第２のＣＰＵの各ＣＰＵが実行するプログラムは、圧縮コードとして不揮発性メモリに記憶されている。各ＣＰＵはブート処理において、不揮発性メモリから圧縮コードを読み出して解凍してＲＡＭにプログラムを展開する際、圧縮コードを所定量バッファメモリに格納した後、再度、不揮発性メモリから次の圧縮コードを読み出そうとした場合に、他方のＣＰＵとの間に前記不揮発性メモリへのアクセスが競合したとき（ＮＡＮＤコントローラｂｕｓｙ）、バッファメモリの自己の領域に記憶された圧縮コードの解凍処理を実行する。【選択図】図９
2009009388.tif 000002
【特許請求の範囲】
【請求項１】
第１および第２のＣＰＵと、
各ＣＰＵが実行するプログラムを圧縮した圧縮コードを記憶した不揮発性メモリと、
各ＣＰＵが前記不揮発性メモリから読み出された圧縮コードを一旦記憶しておく領域を有するバッファメモリと、
前記圧縮コードから解凍されたプログラムが展開され、各ＣＰＵにより実行されるＲＡＭとを備え、
各ＣＰＵはブート処理において、前記不揮発性メモリから圧縮コードを読み出して解凍して前記ＲＡＭにプログラムを展開する際、前記圧縮コードを所定量前記バッファメモリに格納した後、再度、前記不揮発性メモリから次の圧縮コードを読み出そうとした場合に、他方のＣＰＵとの間に前記不揮発性メモリへのアクセスが競合したとき、前記バッファメモリの自己の領域に記憶された圧縮コードの解凍処理を実行する
ことを特徴とする携帯端末装置。
【請求項２】
各ＣＰＵからの前記不揮発性メモリへのアクセスを制御する不揮発性メモリコントローラを備え、
各ＣＰＵは、前記不揮発性メモリへのアクセスの競合を前記不揮発性メモリコントローラへのアクセスの競合として認識する
請求項１に記載の携帯端末装置。
【請求項３】
第１および第２のＣＰＵを備え、各ＣＰＵが、不揮発性メモリから圧縮コードを読み出して解凍しＲＡＭにプログラムを展開する、携帯端末装置におけるブート処理方法であって、
各ＣＰＵは、
前記不揮発性メモリから圧縮コードを読み出そうとするとき、他方のＣＰＵとの間で前記不揮発性メモリへのアクセスが競合したか否かをチェックするステップと、
競合していなければ、前記不揮発性メモリから圧縮コードを読み出してバッファメモリ内に一旦記憶しておくステップと、
競合していれば、前記バッファメモリ内の前記圧縮コードを解凍してＲＡＭに展開するステップと、
を実行することを特徴とする携帯端末装置のブート処理方法。
【請求項４】
各ＣＰＵは、前記不揮発性メモリへのアクセスの競合を、各ＣＰＵからの前記不揮発性メモリへのアクセスを制御する不揮発性メモリコントローラへのアクセスの競合として認識する
請求項３に記載の携帯端末装置のブート処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のＣＰＵを備えた携帯端末装置およびそのブート処理方法に関する。
【背景技術】
【０００２】
携帯電話機などの携帯端末装置のソフトウェアはその機能が複雑になるにつれて、必要となるメモリ容量が増大する。この為、メモリデバイスのコストが上昇し、このデバイスコスト増が製品価格に影響する。
【０００３】
この問題に対する一つの解決策として、予め圧縮されたソフトウェアをメモリにロードしておき、実行時に解凍する方法が提案されている。この方法によれば、ソフトウェア本体もサイズも小さくなることから、メモリ容量低減に関してそれなりの効果が期待できる。また、起動時間の短縮効果も期待されるが、実際には圧縮されたソフトウェアを解凍する時間が余分に必要であるため、起動時間の短縮効果はあまり望めない。
【０００４】
また、携帯端末用のメモリデバイスとしては、再書込可能な不揮発性の半導体メモリとしてフラッシュメモリが利用されている。フラッシュメモリには、ＮＡＮＤ型とＮＯＲ型がある。ＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリともいう）は、大容量化に適し、単位容量当たりのコストが安価であるが、一定サイズのブロック単位での読み書きしかできず、ランダムアクセスが遅い、という特徴を有する。一方、ＮＯＲ型フラッシュメモリは、読み出し速度が高速で高速ランダムアクセスが可能であるが、高集積化に向かず、書込に大電流が必要である、という特徴を有する。
【０００５】
そこで、図２に示すように、コスト、高集積化、消費電力の面で有利なＮＡＮＤメモリを携帯端末のプログラムの記憶に利用する。ＮＡＮＤメモリからブート（Ｂｏｏｔ：起動）を行うような場合、一旦、ＮＡＮＤメモリからＲＡＭにプログラム領域が転送されて、プログラムはＲＡＭ上で実行される。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ＮＡＮＤメモリには、予め圧縮されたコードを格納することにより、ＮＡＮＤメモリからＲＡＭへ展開するサイズが小さくなる為、メモリとしては空き領域が増大し、この領域をストレージエリアなどとして使用することが可能となる。
【０００７】
しかしながら、図３に示すように、圧縮コードはブート時に解凍することが必要となり、その分ソフトウェアが起動するまでの時間がかかるという問題が発生する。
【０００８】
そこで本発明は、複数のＣＰＵの利用を前提として起動時間を短縮することができる携帯端末装置およびそのブート処理方法を提案するものである。
【課題を解決するための手段】
【０００９】
本発明による携帯端末装置は、第１および第２のＣＰＵと、各ＣＰＵが実行するプログラムを圧縮した圧縮コードを記憶した不揮発性メモリと、各ＣＰＵが前記不揮発性メモリから読み出された圧縮コードを一旦記憶しておく領域を有するバッファメモリと、前記圧縮コードから解凍されたプログラムが展開され、各ＣＰＵにより実行されるＲＡＭとを備える。各ＣＰＵはブート処理において、前記不揮発性メモリから圧縮コードを読み出して解凍して前記ＲＡＭにプログラムを展開する際、前記圧縮コードを所定量前記バッファメモリに格納した後、再度、前記不揮発性メモリから次の圧縮コードを読み出そうとした場合に、他方のＣＰＵとの間に前記不揮発性メモリへのアクセスが競合したとき、前記バッファメモリの自己の領域に記憶された圧縮コードの解凍処理を実行する。
【００１０】
各ＣＰＵは、前記不揮発性メモリから次の圧縮コードを読み出す際に、他のＣＰＵとアクセスが競合した場合、読み出し済みの圧縮コードの解凍処理を実行することにより、ＣＰＵの無駄な待ち時間が解消され、結果として起動時間が短縮される。
【００１１】
本発明によるブート処理方法は、第１および第２のＣＰＵを備え、各ＣＰＵが、不揮発性メモリから圧縮コードを読み出して解凍しＲＡＭにプログラムを展開する、携帯端末装置におけるブート処理方法であって、各ＣＰＵは、前記不揮発性メモリから圧縮コードを読み出そうとするとき、他方のＣＰＵとの間で前記不揮発性メモリへのアクセスが競合したか否かをチェックするステップと、競合していなければ、前記不揮発性メモリから圧縮コードを読み出してバッファメモリ内に一旦記憶しておくステップと、競合していれば、前記バッファメモリ内の前記圧縮コードを解凍してＲＡＭに展開するステップとを実行する。
【発明の効果】
【００１２】
本発明によれば、一方のＣＰＵが不揮発性メモリにアクセスしている状態の際に、他方のＣＰＵではコード解凍を実施することにより、不揮発性メモリからＲＡＭへの展開が早くなり、結果として、ブート時間が短縮される。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の好適な実施の形態について図面を参照しながら、詳細に説明する。
【００１４】
図１に本実施の形態における携帯端末１０の概略ハードウェア構成を、携帯電話機を例として示す。
【００１５】
携帯端末１０は、制御部１１、音声処理部１２、マイク１３、スピーカ１４、記憶部１５、通信部１６、デュプレクサ１７、アンテナ１７ａ、操作部１８、表示部１９を備える。制御部１１は、第１および第２のＣＰＵ(Central Processing Unit)を搭載した携帯電話用チップセットであり、携帯端末１０の処理および各部の制御を司る。
【００１６】
音声処理部１２は制御部１１の制御下で通話や音楽再生等の音声処理を行い、マイク１３からの音声入力、スピーカ１４への音声出力を行う。
【００１７】
記憶部１５は、プログラムやデータを記憶する部位であり、本実施の形態では、ＳＤＲＡＭ(Synchronous Dynamic Random Access Memory)等のＲＡＭ１５ａ、およびＮＡＮＤメモリ１５ｂを有する。
【００１８】
ＮＡＮＤメモリ１５ｂは、制御部１１が実行するプログラムを格納する再書込可能な不揮発性メモリである。ＮＡＮＤメモリ１５ｂには、ブートプログラムを格納するブート領域２１、プログラム本体のコード（プログラムコード）を格納するプログラム領域２２と、その他必要なデータやプログラムを格納するためのストレージ（Storage）領域２３が存在する。ストレージ領域２３には、プログラムの他、例えば、電話帳、電子メール、ウェブコンテンツ、音楽、画像、等の各種のデータを格納することができる。
【００１９】
プログラム領域２２は、ブートプログラムによるブート時にＲＡＭ１５ａへ展開され、プログラムはＲＡＭ１５ａ上で実行される。より具体的には、制御部１１および記憶部１５に電源が供給されると、制御部１１の組み込みロジックによってＮＡＮＤメモリ１５ｂのブート領域の内容が制御部内蔵のメモリ領域（図示せず）に読み込まれて実行される。
【００２０】
通信部１６は、制御部１１の制御下で、アンテナ１７ａを介して基地局（図示せず）と無線による送受信を行う部位である。デュプレクサ１７はアンテナ共用機である。すなわち、送信信号と受信信号で１本のアンテナを共用し、アンテナからの受信信号を受信部に送り、送信部からの送信信号をアンテナへ送出する機能を備えたフィルタ回路により構成される。
【００２１】
操作部１８は、テンキーや各種の制御キー等を有し、ユーザによる指示や情報を制御部１１に入力する機能を有する。
【００２２】
表示部１９は、例えばＬＣＤ、有機ＥＬ等の表示デバイスを有し、ユーザに対してテキスト、画像（静止画、動画）等の可視情報を表示する機能を有する。
【００２３】
以下、図４により、通常の２ＣＰＵ構成におけるブート処理方法を説明する。
【００２４】
本実施の形態では、同一チップ（ＬＳＩ）内に第１および第２のＣＰＵとして、アプリケーション実行用のａＣＰＵ４１、モデム制御用のｍＣＰＵ４２がそれぞれ存在するとする。まず、電源投入によりｍＣＰＵ４２を最初に立ち上げる場合、予め内蔵されているブートローダ（Bootloader）が実行され、ｍＣＰＵ４２をブートするのに必要なｍブートローダをＲＡＭ１５ａ上に展開し、ｍＣＰＵ４２が動作できる環境を提供する。ｍブートローダでは、ＮＡＮＤメモリ１５ｂからコードを読み出しＲＡＭ１５ａへ展開する動作の実行を開始する。
【００２５】
また同時にａＣＰＵをブートするのに必要なａブートローダをＲＡＭ１５ａ上に展開し、ａＣＰＵが動作できる環境を提供する。ａブートローダでは同様に、ＮＡＮＤメモリ１５ｂからコードを読み出して、ＲＡＭ１５ａへ展開する動作の実行を開始する。
【００２６】
しかしながら、この状態では同一のＮＡＮＤメモリ１５ｂに対して、単一のＮＡＮＤコントローラ４３を介して、ａＣＰＵおよびｍＣＰＵがアクセスすることになりリソースの競合が発生する。そのため、一方のＣＰＵはＮＡＮＤコントローラ４３が、他方のＣＰＵに占有されている区間は処理を待たされる結果となる。
【００２７】
ＣＰＵが単一である構成では、ＮＡＮＤメモリ１５ｂからの読み込み処理と圧縮データの解凍処理は同一ＣＰＵをフルで使用して実現される為、如何しても処理速度に限界が生じる。
【００２８】
本発明では、ブート処理にてＮＡＮＤコントローラ４３のリソース競合が発生し待ち状態が発生している状況を使用して解凍処理を実施することにより、結果として圧縮コードを用いて、ブート時間が短縮できることを特徴としている。
【００２９】
また、使用されているＮＡＮＤメモリ１５ｂおよびＲＡＭ１５ａは物理アドレスとしては単一であるが（それぞれ１つのデバイス）、論理アドレスとしては各ＣＰＵから独立に見えることを想定している。
【００３０】
図５は、ＮＡＮＤコントローラ競合が生じる様子を示したシーケンス図である。図では縦軸方向が時間軸を示している。この図から分かるように、ＮＡＮＤメモリ１５ｂからコードを読み出す場合、時間軸上で共通の時間帯において二つのＣＰＵからＮＡＮＤコントローラ４３ヘの競合が発生している。すなわち、一方のＣＰＵにとって、ＮＡＮＤコントローラ４３がビジー状態では、ＮＡＮＤコントローラ４３がレディ（Ｒｅａｄｙ）状態になるまで待ち時間が存在することになる。
【００３１】
この時間はＣＰＵにとってはコードの展開ができない、すなわち何も出来ない状態であるため、本発明では、その待ち時間内にＣＰＵがそれぞれのコードを解凍する処理を実施する。このように、ＣＰＵは従来待ち時間であった期間内にコード解凍を行うことにより、コード解凍を伴ったＮＡＮＤメモリ１５ｂからＲＡＭ１５ａへの展開時間の高速化が期待できる。
【００３２】
図６は、ａＣＰＵ４１とｍＣＰＵ４２とが共用する共有メモリ６１を用いた制御部１１内の主要部の構成例を示している。共有メモリ６１は、バッファＡ１とバッファＭ１とを含んでいる。これらのバッファは、各ＣＰＵが自己の解凍すべき圧縮コードを一時的に記憶しておくメモリ領域である。
【００３３】
図７および図８に、本実施の形態においてそれぞれｍＣＰＵとａＣＰＵとがＮＡＮＤコントローラビジーであった場合に解凍処理を実施する際の処理フローを示す。ｍＣＰＵとａＣＰＵとは互いに独立に動作するため、両処理は、ＮＡＮＤコントローラ４３がビジーかどうかという点以外は非同期で実施される。また、前提として共通にアクセスできる共有メモリ６１が存在することを想定している。
【００３４】
図７において、ｍＣＰＵは、ＮＡＮＤメモリ１５ｂが読み出し可能かどうかをチェックする（Ｓ１２）。その際、ＮＡＮＤコントローラ４３がビジー状態でなければ（Ｓ１２，Ｎｏ）、読み出し可能と判断し、ＮＡＮＤメモリ１５ｂからコードを読み出し内部のバッファＭ１へ保存する（Ｓ１４）。ＮＡＮＤコントローラ４３がビジー状態であれば、ＮＡＮＤメモリ１５ｂは読み出し不能と判断し（Ｓ１２，Ｙｅｓ）、内部のバッファＭ１からデータを取得し、ｍＣＰＵで解凍処理を実行し、ＲＡＭ１５ａに展開する（Ｓ１３）。
【００３５】
その後、全てのコードをＮＡＮＤメモリ１５ｂからＲＡＭ１５ａへ展開するまで（Ｓ１５）、上記の処理を繰り返す。
【００３６】
図８において、ａＣＰＵは、ＮＡＮＤメモリ１５ｂが読み出し可能かどうかをチェックする（Ｓ２２）。その際、ＮＡＮＤコントローラ４３がビジー状態でなければ（Ｓ２２，Ｎｏ）、読み出し可能と判断し、ＮＡＮＤメモリ１５ｂからコードを読み出し内部のバッファＡ１へ保存する（Ｓ２４）。ＮＡＮＤコントローラ４３がビジー状態であれば、ＮＡＮＤメモリ１５ｂは読み出し不能と判断し（Ｓ２２，Ｙｅｓ）、内部のバッファＡ１からデータを取得し、ａＣＰＵで解凍処理を実行し、ＲＡＭ１５ａに展開する（Ｓ２３）。
【００３７】
その後、全てのコードをＮＡＮＤメモリ１５ｂからＲＡＭ１５ａへ展開するまで（Ｓ２５）、上記の処理を繰り返す。
【００３８】
ここで、本実施の形態におけるＮＡＮＤコントローラ４３のビジー状況の発生および利用の具体的な態様について、図９のタイミング図により説明する。図中、および以下の括弧付きの数値は各種イベントの発生時点に付した通し番号である。
（１）ｍＣＰＵはＮＡＮＤコントローラ４３を経由してＮＡＮＤメモリ１５ｂからデータを読み込み、バッファＭ１へ格納する。読み込み完了まではＮＡＮＤコントローラ４３はビジー状態となる。
（２）その後、ＮＡＮＤコントローラ４３が非ビジー状態となった後、ａＣＰＵはＮＡＮＤコントローラ４３を経由してＮＡＮＤメモリ１５ｂからデータを読み込み、バッファＡ１へ格納する、読み込み完了まではＮＡＮＤコントローラ４３はビジー状態となる。
（３）ｍＣＰＵはＮＡＮＤメモリ１５ｂからデータを読み込もうとするがＮＡＮＤコントローラ４３がビジーである為、すでに読み込んだバッファＭ１の内容を解凍し、ＲＡＭ１５ａへ転送する。
（４）ａＣＰＵはＮＡＮＤコントローラ４３を経由してＮＡＮＤメモリ１５ｂからデータを読み込み、バッファＡ１へ格納する。
（５）ｍＣＰＵはＮＡＮＤコントローラ４３を経由してＮＡＮＤメモリ１５ｂからデータを読み込み、バッファＭ１へ格納する。
（６）ａＣＰＵはＮＡＮＤメモリ１５ｂからデータを読み込もうとするがＮＡＮＤコントローラ４３がビジーである為、すでに読み込んだバッファＡ１の内容を解凍し、ＲＡＭ１５ａへ転送する。
（７）ｍＣＰＵは最終データを読み込み、ＲＡＭ１５ａへ転送し、ｍＣＰＵブートプロセスが完了する。
（８）ａＣＰＵは最終データを読み込み、ＲＡＭ１５ａへ転送し、ａＣＰＵブートプロセスが完了すると共にシステムが起動できる状態となる。
【００３９】
次に、参考のため、本発明を用いない場合の１ＣＰＵ構成の動作のタイミングを図１０に示す。
【００４０】
上記図９の（３）のような状態が発生した場合、ｍＣＰＵはＮＡＮＤコントローラ４３がビジー状態でなくなるまで、何もしないで待つ必要が生じる。単一ＣＰＵの場合は解凍処理とＮＡＮＤコントローラ４３のアクセスとを並行して実施できない為、ＣＵＰが解凍処理を実行中はＮＡＮＤコントローラ４３はアイドル状態となる。具体的には次の通りである。
（１）ＣＰＵはＮＡＮＤコントローラ４３を経由してＮＡＮＤメモリ１５ｂからデータを読み込み、データ読み込みが完了した時点で圧縮解凍を開始し、ＲＡＭ１５ａへ展開する。
（２）以降、同様の動作を最終データを読み込むまで繰り返す。
（３）最終データの解凍後、ＲＡＭ１５ａへのデータ展開が完了してシステムが起動できる状態となる。
【００４１】
以上、本発明の好適な実施の形態について説明したが、上記で言及した以外にも種々の変形、変更を行うことが可能である。
【００４２】
例えば、上述した例ではＮＡＮＤコントローラがビジー状態かどうかを明示的にチェックする方法を説明したが、現実的な動作として、ＮＡＮＤコントローラビジー状態は必ず発生する為、特にＮＡＮＤコントローラのチェックを実施しないでＮＡＮＤメモリ１５ｂからコードを読み出した時点で即座に解凍処理を実施しても、ある程度の改善効果は期待できると考える。この場合、特に共有メモリは特定の解凍用エリアとして確保されるのみとなる。
【００４３】
また、共有メモリはａＣＰＵおよびｍＣＰＵの外部に設けられても構わない。例えば、図６におけるＲＡＭの一領域を共有メモリとして解凍用のエリアを確保することもできる。
【図面の簡単な説明】
【００４４】
【図１】本発明の実施の形態における携帯端末の概略ハードウェア構成を示した図である。
【図２】本発明の前提としてＮＡＮＤメモリからブートを行うような場合の処理の説明図である。
【図３】本発明の前提として圧縮コードをブート時に解凍する場合の説明図である。
【図４】通常の２ＣＰＵ構成におけるブートプロセスの説明図である。
【図５】本発明の実施の形態においてＮＡＮＤコントローラ競合が生じる様子を示したシーケンス図である。
【図６】本発明の実施の形態におけるａＣＰＵおよびｍＣＰＵとが共用する共有メモリを用いた制御部内の主要部の構成例を示す図である。
【図７】本発明の実施の形態においてｍＣＰＵとが解凍処理を実施する際の処理フローを示したフローチャートである。
【図８】本発明の実施の形態においてａＣＰＵとが解凍処理を実施する際の処理フローを示したフローチャートである。
【図９】本発明の実施の形態におけるＮＡＮＤコントローラのビジー状況の発生および利用の具体的な態様を示したタイミング図である。
【図１０】本発明を用いない揚合の動作について示したタイミング図である。
【符号の説明】
【００４５】
１０…携帯端末、１１…制御部、１５…記憶部、１５ａ…ＲＡＭ、１５ｂ…ＮＡＮＤメモリ、２１…ブート領域、２２…プログラム領域、２３…ストレージ領域、２５…プログラム、４３…ＮＡＮＤコントローラ、６１…共有メモリ
【図１】
2009009388.tif 000003
【図２】
2009009388.tif 000004
【図３】
2009009388.tif 000005
【図４】
2009009388.tif 000006
【図５】
2009009388.tif 000007
【図６】
2009009388.tif 000008
【図７】
2009009388.tif 000009
【図８】
2009009388.tif 000010
【図９】
2009009388.tif 000011
【図１０】
2009009388.tif 000012