(57)【要約】【課題】コンピュータシステムの起動時間の短縮を図る。【解決手段】ＤＭＡ転送によるメインプログラムをロードするためのデータ転送と、ＣＰＵによるプログラム実行とを、単位時間あたりにおける所定の時間比率により時分割的に実行していくようにする。そのうえで、ＣＰＵが実行すべきプログラムが、既にＤＭＡ転送されているか否かを判別するようにして、未だ転送されていないことを判別したときには、単位時間あたりの処理が全てＤＭＡ転送となるように制御する。【選択図】図６
2007156855.tif 000002
【特許請求の範囲】
【請求項１】
データとしてプログラムを記憶保持し、プログラム実行のためのランダムアクセスが行われないプログラム記憶部と、
上記プログラム記憶部から読み出されたプログラムが保持され、プログラム実行のためのランダムアクセスが行われるプログラム保持部と、
上記プログラム記憶部から読み出したプログラムを上記プログラム保持部に保持させるようにして、上記プログラムの転送を行うプログラム転送手段と、
上記プログラム転送手段によるプログラムの転送が完了する以前のタイミングで、上記プログラム保持部に保持されたプログラムを実行開始していくことが可能にされたプログラム実行手段と、
上記プログラム転送手段によるプログラムの転送と、上記プログラム実行手段によるプログラムの実行が時分割で実行されるように制御するもので、上記プログラム保持部におけるプログラムの保持状況に応じて、上記プログラム転送手段によるプログラムの転送期間と、上記プログラム実行手段によるプログラムの実行期間との少なくとも、何れか一方についての変更設定が行われるように制御する制御手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
上記制御手段は、
上記プログラム実行手段がプログラムを実行可能とされる、上記プログラム保持部におけるプログラムの保持状況であるか否かについて判別する判別手段を備え、この判別手段により、上記プログラム実行手段がプログラムを実行可能な上記プログラム保持部におけるプログラムの保持状況であることが判別された場合には、単位時間を所定の第1の比率により分割した時間ごとに、上記プログラム転送手段によるプログラムの転送と、上記プログラム実行手段によるプログラムの実行が行われるように制御し、上記判別手段により、上記プログラム実行手段がプログラムを実行可能な上記プログラム保持部におけるプログラムの保持状況ではないことが判別された場合には、上記第１の比率よりも大きな比率を与えた所定の第２の比率により上記単位時間を分割した時間ごとに、上記プログラム転送手段によるプログラムの転送と、上記プログラム実行手段によるプログラムの実行が行われるように制御する、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
上記判別手段は、
上記プログラム転送手段により転送されたプログラムのデータ量である転送データ量を計測する計測手段と、
上記プログラム実行手段によるプログラムの実行経過状況を通知する通知手段と、
上記計測手段により計測された上記転送データ量と、上記通知手段により通知されたプログラムの実行経過状況に対応するプログラムの実行アドレスとを比較して、上記転送データ量が上記実行アドレスに上記プログラムが転送されているか否かについて判別することにより、上記プログラム実行手段がプログラムを実行可能とされる、上記プログラム保持部におけるプログラムの保持状況であるか否かについての判別を行うようにされるデータ量比較判別手段と、
を備えて構成されることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
上記制御手段は、
上記プログラム転送手段が所定データ量のプログラムを転送する動作と、これに続く、上記プログラム実行手段により転送されたプログラムの全データを実行させる動作とを時分割で実行させると共に、
上記プログラム保持部におけるプログラムの保持状況として、上記プログラム保持部が現段階で保持しているプログラムのデータ量に基づいて、上記プログラム転送手段が転送するプログラムのデータ量を可変するようにされる、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項５】
データとしてプログラムを記憶保持し、プログラム実行のためのランダムアクセスが行われないプログラム記憶部から読み出したプログラムを、プログラム実行のためのランダムアクセスが行われるプログラム保持部に保持させるようにして、上記プログラムの転送を行うプログラム転送手順と、
上記プログラム転送手順によるプログラムの転送が完了する以前のタイミングで、上記プログラム保持部に保持されたプログラムを実行開始していくようにされるプログラム実行手順と、
上記プログラム転送手順によるプログラムの転送と、上記プログラム実行手順によるプログラムの実行が時分割で実行されるように制御するもので、上記プログラム保持部におけるプログラムの保持状況に応じて、上記プログラム転送手順によるプログラムの転送期間と、上記プログラム実行手順によるプログラムの実行期間との少なくとも、何れか一方についての変更設定が行われるように制御する制御手順と、
を実行することを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムとしての情報処理装置と、このような装置において適用される情報処理方法に関する。
【背景技術】
【０００２】
近年では、パーソナルコンピュータなどのほか、多くの電子機器がマイクロコンピュータなどをはじめとするコンピュータシステムを備える。周知のようにしてコンピュータシステムは、データであるプログラムを実行することで、各種の機能動作を実現するようにされている。
プログラムのデータは、例えばコンピュータシステムが備える不揮発性の記憶装置に記憶保持される。そして、例えば電源の投入などに応じてコンピュータシステムが起動するときには、上記記憶装置に記憶されているプログラムのデータを読み出して、ランダムアクセス可能なＲＡＭなどに転送して記憶させる。そして、このＲＡＭへ記憶させたプログラムのデータをＣＰＵ(Central Processing Unit)が処理可能な状態となると、コンピュータシステムの起動が完了したことになる。
【０００３】
【特許文献１】特開平５−２５７６９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、コンピュータシステムが起動を開始してから完了するまでに要する時間（ここでは起動時間ということにする）には、例えばプログラムのデータをＲＡＭに転送するための時間を含むので、或る程度の時間長を要する。そして、例えば同じシステム構成であれば、プログラムのデータが増加するのに応じてＲＡＭに転送する時間がそれだけ増加するので、長時間化していくことが通常である。
このようなコンピュータシステムの起動時間については、例えばパーソナルコンピュータなどのようにして、或る程度長いということが前提で、ユーザとしては許容すべきとの認識をとる場合もあるが、機器の用途、種類などによっては、できるだけ短縮されることが好ましく、また要求される場合がある。そこで、本願発明としては、コンピュータシステムの起動時間の短縮が図られるようにすることを目的とする。
【課題を解決するための手段】
【０００５】
このために、本願発明は、情報処理装置として次のようにして構成することとした。
つまり、データとしてプログラムを記憶保持し、プログラム実行のためのランダムアクセスが行われないプログラム記憶部と、このプログラム記憶部から読み出されたプログラムが保持され、プログラム実行のためのランダムアクセスが行われるプログラム保持部と、プログラム記憶部から読み出したプログラムをプログラム保持部に保持させるようにして、上記プログラムの転送を行うプログラム転送手段と、このプログラム転送手段によるプログラムの転送が完了する以前のタイミングで、プログラム保持部に保持されたプログラムを実行開始していくことが可能にされたプログラム実行手段と、プログラム転送手段によるプログラムの転送と、プログラム実行手段によるプログラムの実行が時分割で実行されるように制御するもので、プログラム保持部におけるプログラムの保持状況に応じて、プログラム転送手段によるプログラムの転送期間と、プログラム実行手段によるプログラムの実行期間との少なくとも、何れか一方についての変更設定が行われるように制御する制御手段とを備えることとした。
【０００６】
上記構成では、プログラム記憶部に記憶されたプログラムをプログラム保持部に転送させる動作が完了する以前のタイミングで、プログラム実行手段がプログラムの実行を開始するようにされており、これにより、プログラム転送手段によるプログラムの転送と、プログラム実行手段によるプログラムの実行が時分割で行われるようにしている。
そのうえで、プログラム保持手段におけるプログラムのデータの保持状況に応じて、プログラム転送手段によるプログラムの転送期間と、プログラム実行手段によるプログラムの実行期間との少なくとも一方についての変更設定が行われるようにしている。この変更設定によっては、例えば、プログラム保持部へのプログラム転送が完了していない段階でプログラム実行手段がプログラム実行を開始したとしても、プログラム実行手段がプログラムを実行すべきときに、そのプログラムがプログラム保持部にて保持されていない、というようなエラー状態が生じないように、プログラム転送とプログラム実行の動作をコントロールすることが可能になる。つまり、本願発明では、プログラム保持部へのプログラム転送が完了していない段階にあるのにもかかわらず、プログラム実行が正常に開始できるようにされている。
プログラム実行手段がプログラムの実行を開始できるということは、情報処理装置としての起動が完了して通常の動作実行が開始されることを意味する。従って、従来における一般的な手順とされる、プログラム記憶部に記憶されたプログラムをプログラム保持部に転送させる動作を完了させてから、プログラム実行手段がプログラム保持部に保持されたプログラムを実行する場合と比較すると、本願発明としては、より早期に起動が完了するものとしてみえることになる。
【発明の効果】
【０００７】
このようにして本発明は、起動時間が従来よりも短縮されることになる。これにより、例えばコンピュータシステムを搭載する機器として、起動時間の短いことがその用途や使用目的上好ましいようなものについては、利便性、使いやすさなどが向上されることになる。
【発明を実施するための最良の形態】
【０００８】
図１は、本願発明を実施するための最良の形態（以下、実施の形態という）としての情報処理装置が適用される電子機器である、デジタルスチルカメラの構成例を示している。
この図に示すデジタルスチルカメラ１において、光学系部２は、撮像レンズ、絞りなどを備えて成り、入射された光を撮像光として、光電変換部３に結像させる。また、光学系部２においては、フォーカス（焦点）調整のためのフォーカス調整機構や、絞り値に応じて絞りを可変する絞り可変機構などを備えているものとされ、このような機構部の駆動は、カメラ機能部６から出力される駆動信号によって行われる。カメラ機能部６は、マイクロコンピュータ１０の制御に応じて、しかるべきフォーカス状態や絞りの状態等が得られるように所要の駆動信号を出力するようにされている。
また、例えば光学ズーム機能を与えることとした場合には、光学系部２においてズームレンズを移動させるズーム機構を設けると共に、上記と同様にして、マイクロコンピュータ１０の制御に応じて上記ズーム機構を移動させる駆動部を設けるようにすればよい。さらに、カメラ機能部６として、ストロボを設けたうえで、ストロボ発光機能を与えるように構成することもできる。
【０００９】
光電変換部３は、例えば光電変換素子であるＣＣＤ(Charge Coupled Device)、あるいはＣＭＯＳセンサ等を備えて構成され、光学系部２から入射されて受光面にて結像された撮像光を光電変換することで撮像信号を生成して画像信号処理部４に出力する。撮影時においては、例えば露出設定結果に応じて決定されるシャッター速度の指示が、マイクロコンピュータ１０から画像信号処理部４に通知される。画像信号処理部４では、通知されたシャッター速度に対応する走査タイミング信号を光電変換部３に出力する。光電変換部３は、この走査タイミング信号に応じて走査を行うようにして、光電変換処理を実行して映像信号を出力するようにされる。
【００１０】
画像信号処理部４は、光電変換部３から入力されたアナログの映像信号について、例えばゲイン調整、サンプルホールド処理を施すことによって波形整形を行ったうえで、Ａ／Ｄ変換を行うことで、デジタルとしての画像信号データに変換する。そして、この変換処理によって得られたデジタル画像信号について、例えば、カラー表示に対応する表示用輝度データの生成処理などをはじめ、表示部７にて表示が行われるようにするための画像信号処理を実行する。これに伴い、画像信号処理部４では、マイクロコンピュータ１０の制御に応じてキャラクタ画像なども撮像画像に重畳して表示可能なように、いわゆるオンスクリーンディスプレイのための信号処理も実行可能とされている。
表示部７として採用される実際のディスプレイデバイスについては特に限定されるべきものではないが、現状においては、広くＬＣＤが採用されている。
【００１１】
また、画像信号処理部４は、光電変換部３から入力されたアナログ画像信号を変換して得たデジタル画像信号について、例えば所定方式による画像データ圧縮処理を施して、圧縮画像データを生成することも可能とされている。この圧縮画像データは、記録用データとして、例えばマイクロコンピュータ１０の制御によってメディアコントローラ１３に転送される。なお、この図では、記録用データは、マイクロコンピュータ１０を介するようにしてメディアコントローラ１３に転送される形態として示されている。
【００１２】
また、画像信号処理部４では、光電変換部３から入力された画像（映像）信号や、後述する記憶媒体１４から読み出された画像データなどを、所定方式のアナログ画像信号又はデジタル画像信号に変換して、画像入出力部５を介して外部機器などに出力可能とされている。
【００１３】
また、この画像入出力部５は、外部から所定方式の画像信号を入力可能ともされており、この入力した画像信号を画像信号処理部４の処理を経て表示部７に表示させることが可能とされる。また、画像信号処理部４は、画像入出力部５が入力した画像信号について、光電変換部３から入力されたアナログ画像信号と同様にして、記録用データに変換してメディアコントローラ１３に転送することもできる。
これに対応して、画像入出力部５は、例えば所定方式に従った映像（画像）信号出力端子／映像信号入力端子を備える。
【００１４】
メディアコントローラ１３は、マイクロコンピュータ１０との連携により、所定の記憶媒体（メディア）１４に対応して、データ処理に関する制御処理を実行可能に構成される。ここでいう記憶媒体１４に対するデータ処理とは、記憶媒体１４のフォーマット処理や、記憶媒体１４の記憶領域に対するファイル及びファイル管理のための情報（ファイル管理情報）などの書き込み／読み出し処理など、記憶媒体１４に記憶されるべきデータに関連する何らかの処理をいう。
なお、ここでの記憶媒体１４の種類としては特に限定されるべきものではないが、現状においては、フラッシュメモリなどによるリムーバブルの記憶媒体を挙げることができる。このようなリムーバブルの記憶媒体に対応するメディアコントローラ１３の具体的構成としては、装填された記憶媒体に対してデータの書き込み、読み出しを直接的に実行するドライブとしての物理デバイスと、このドライブとマイクロコンピュータ１０との間の通信を実現するためのプログラムなどとされる。
【００１５】
また、例えば記憶媒体１４に記憶されている静止画の画像ファイルを再生するときには、マイクロコンピュータ１０及びメディアコントローラ１３は、指定された画像ファイルにアクセスして読み出しを行い、画像信号処理部４に転送する。
このようにして画像ファイルが転送されてきた場合、画像信号処理部４は、この静止画ファイルの画像が表示部７にて再生表示されるように、画像信号処理を実行する。
【００１６】
また、本実施の形態のデジタルスチルカメラ１は、音声処理部８及び音声入出力部９を備えることで、音声信号の入出力も可能とされている。
音声入力については、音声入出力部９としてマイクロフォンなどを備え、外部音声の収音を行って音声信号に変換して音声を入力するようにされる。あるいは、音声信号入力端子などを備えて外部のオーディオ機器などからオーディオ信号を入力する。そして、このようにして入力した音声信号を音声処理部８に出力する。音声処理部８は、所定形式に符号化されたデジタルオーディオデータに変換するなどの音声信号処理を施す。このデジタルオーディオデータは、マイクロコンピュータ１０の制御によって、例えば静止画データに付随する所定形式のオーディオデータや、所定形式のオーディオデータファイルなどの記録データとして、例えば上記のようにして記憶媒体１４に記憶させることが可能とされる。
また、上記のようにして記憶媒体１４に記憶されたオーディオデータを、音声処理部８及び音声入出力部９により音声として再生出力することも可能とされる。例えば、マイクロコンピュータ１０は、記憶媒体１４からオーディオデータを読み出して音声処理部８に転送する。音声処理部８は、転送されてきたオーディオデータの形式に応じた復号処理など所要の音声信号処理を施して、アナログ音声信号として音声入出力部９に出力する。音声入出力部９は、スピーカあるいはヘッドフォン端子などを備え、例えば音声処理部８から入力された音声信号を増幅してスピーカを駆動し、再生音声を出力する。あるいは、ヘッドフォン端子に供給する。また、例えば記憶媒体１４から再生されたオーディオデータは、音声処理部８の音声信号処理を経た後に、音声入出力部９を介して、外部に対して所定形式のオーディオ信号、オーディオデータとして出力することも可能とされている。この場合、音声入出力部９としては、音声処理部８から出力されるオーディオ信号、オーディオデータの形式に対応するオーディオ出力端子を備えることになる。
【００１７】
マイクロコンピュータ１０は、ＣＰＵ(Central Processing Unit)、及び所要の記憶素子などを備えて形成されるもので、例えばＣＰＵがプログラムを実行することでデジタルスチルカメラ１についての各種制御処理を実行する。
この場合のマイクロコンピュータ１０に対しては、外部記憶装置(記憶素子)として、プログラム格納用不揮発性メモリ１１、及びプログラム実行用ＲＡＭ１２が備えられている。プログラム格納用不揮発性メモリ１１は、マイクロコンピュータ１０内部のＣＰＵが実行すべきメインとしてのプログラム（メインプログラム）のデータを記憶させるために備えられる。なお、ここでのメインプログラムとの名称は、起動用プログラムとの区別でもちいる。
また、例えばプログラムのデータを記憶保存するのに好適とされる不揮発性の記憶装置としては各種知られているが、ここでは、不揮発性メモリを採用している。また、不揮発性メモリにも、周知のようにして、マスクＲＯＭ(Read Only Memory)、ＰＲＯＭ(Programmable ROM)、ＥＰＲＯＭ(Erasable PROM)、ＥＥＰＲＯＭ(Electrically Erasable PROM)等が知られているが、本実施の形態としてはＥＥＰＲＯＭに属するメモリ素子であるフラッシュメモリを採用することとしている。また、フラッシュメモリには、周知のようにして、ＮＯＲ型とＮＡＮＤ型とが知られているが、本実施の形態のプログラム格納用不揮発性メモリ１１については、ＮＡＮＤ型を採用することとしている。その理由については後述する。
【００１８】
プログラム実行用ＲＡＭ１２には、プログラム格納用不揮発性メモリ１１に記憶されているプログラムがロード、展開されるようにして書き込まれる。マイクロコンピュータ１０のＣＰＵは、このプログラム格納用不揮発性メモリ１１に保持されているプログラムを読み込んで実行するようにされる。また、プログラム実行用ＲＡＭ１２は、ロードされたプログラムのデータの他に、ＣＰＵがプログラムを実行した結果として得られた演算結果などの情報も保持することができる。
このようなプログラム実行用ＲＡＭ１２には、現状であれば、ＤＲＡＭ、ＳＤＲＡＭなどが広く使用される。本実施の形態の実際としても、プログラム実行用ＲＡＭ１２としては、例えばＳＤＲＡＭを採用する。
上記のようにして、本実施の形態のマイクロコンピュータ１０は、プログラム実行用ＲＡＭ１２にロードされたプログラムを実行することでコンピュータシステムとしての動作が実現され、このプログラムは、プログラム格納用不揮発性メモリ１１に記憶保持される。そこで、ここでは、マイクロコンピュータ１０と、プログラム実行用ＲＡＭ１２及びプログラム格納用不揮発性メモリ１１から成る部位を、マイクロコンピュータシステム２０ということにする。
【００１９】
この場合の操作入力部１５は、図１に示した操作子を含み、デジタルスチルカメラ１に備えられる各種操作子を一括して示しているものとされる。例えば、この操作入力部１５における操作子としては、写真撮影時に操作されるシャッターボタン、撮影モードなどを選択する操作子、パラメータのアップ／ダウンを行うための操作子などが含まれる。また、操作入力部１５として、例えば表示部７の表示画面を利用したＧＵＩとしての入力操作を実現するための構成を備えるようにしてもよい。
【００２０】
通信部１６は、マイクロコンピュータ１０の制御に応じて、所定のデータ通信方式により外部デバイスと通信を行うためのハードウェア、ソフトウェアを実装して構成される部位である。この通信部１６が対応するデータ通信方式としては、有線、無線を問わず特に限定されるべきものではなく、また、対応するデータ通信方式の数も限定されるべきものでない。現状であれば、データ通信方式としては、有線ではEthernet（商標）などのネットワーク、ＵＳＢ(Universal Serial Bus)、IEEE1394などのデータバス規格などを挙げることができる。また、無線であれば、Bluetooth（商標）などのデバイス間近距離無線通信、IEEE802.11a/b/gなどの無線ＬＡＮ(Local Area Network)規格を挙げることができる。
【００２１】
前述のようにして、本実施の形態のデジタルスチルカメラ１において、プログラムを記憶保存するのにあたってはフラッシュメモリを採用しており、さらにそのフラッシュメモリの種類としては、ＮＯＲ型とＮＡＮＤ型が知られている現状において、ＮＡＮＤ型を採用することとしている。
ＮＯＲ型とＮＡＮＤ型の性質を比較すると、ＮＯＲ型フラッシュメモリは、読み出しなどの速度が高速で、またランダムアクセスも高速に行われることが特徴となっている。また、例えばバイト単位による読み出し／書き込みも可能とされている。このために、ＮＯＲ型フラッシュメモリを電子機器のマイクロコンピュータシステムなどにおけるプログラムなどのデータ保存に適しているとされている。つまり、ＮＯＲ型フラッシュメモリにプログラムを記憶させておくことで、プログラム実行時においては、ＣＰＵがＮＯＲ型フラッシュメモリに直接ランダムアクセスして必要なプログラムを読み出して実行することが可能となるからである。ただし、コスト面では、ビット単価が高い。このために、大容量化化には不向きで、また、書き込みに大きな電流が必要となるという不利点がある。
これに対して、ＮＡＮＤ型フラッシュメモリは、消去、書き込みが高速に行われ、高集積化、大容量化に適している。このためにビット単価もＮＯＲ型と比較して相当に安い。ただし、読み出し／書き込みの最小単位が所定バイトサイズによるブロック単位となってしまう。また、ランダムアクセスが遅く、現実的にはＮＡＮＤ型フラッシュメモリに対して、ＣＰＵのコマンド実行速度レベルでのランダムアクセスを適用するような設計は行われない場合がほとんどである。従って、プログラム実行に関しては、ＮＡＮＤ型フラッシュメモリであればランダムアクセスは不可であるとの認識がされていることが多い。このことから、ＮＡＮＤ型フラッシュメモリは、ユーザデータが保存されるメディアとしての用途が好適とされており、実際においても、リムーバブルメディアとして広く利用されている。
なお、ランダムアクセスは、アドレス順を無視してアドレス配列に対して並列的にアクセスできる動作であるとの見方から、ランダムアクセスが行われる記憶装置についてはパラレル型ともいわれる。これに対して、ランダムアクセスが行われない記憶装置については、アドレス順に従ってアクセスすることになるが、このアクセスがアドレス配列に対して順次的、直列的にトレースしていくものとしてみえることから、シリアル型ともいわれる。上記ＮＯＲ型フラッシュメモリとＮＡＮＤ型フラッシュメモリについては、ＮＯＲ型フラッシュメモリがパラレル型となり、ＮＡＮＤ型フラッシュメモリがシリアル型となる。
【００２２】
しかしながら、近年においては、電子機器の多機能化に対応して、実装するプログラムのデータサイズは著しく増加している傾向にある。例えば、本実施の形態のデジタルスチルカメラ１なども、通信部１６としてネットワーク機能などを与えようとすると、そのための通信機能実現のためのプログラムや、インターネットのブラウザなどのアプリケーションソフトウェアのプログラムを追加して実装することになる。このために、ネットワーク機能を備えない以前のデジタルスチルカメラと比較すれば、実装されるプログラムのサイズは大幅に増加することになる。
【００２３】
本実施の形態のデジタルスチルカメラ１の場合、このようにしてプログラムのデータサイズが増加するのに応じては、プログラム格納用不揮発性メモリ１１の記憶可能容量についても増加させる必要が生じることになるが、この点についてはコストアップが無視できない問題となる。つまり、これまではプログラムの格納用途にはＮＯＲ型を用いていたが、上記しているようにＮＯＲ型はビット単価が高い。このために、プログラムのデータサイズの増加に応じて、ＮＯＲ型フラッシュメモリの記憶可能容量を増加させたとすれば、大幅なコストアップになってしまう。このようなコストアップの問題を解決する１つの対策としては、プログラムを保存するフラッシュメモリとして、ＮＯＲ型に換えて、ＮＡＮＤ型フラッシュメモリを採用することが挙げられる。前述のようにして、ＮＡＮＤ型は、ＮＯＲ型と比較してビット単価が安いことから、記憶可能容量の増加に伴うコストアップの問題に関して大幅に有利となる。このような理由から、本実施の形態のデジタルスチルカメラ１としても、プログラム格納用不揮発性メモリ１１には、ＮＡＮＤ型フラッシュメモリを採用している。
【００２４】
このようにして、プログラムを記憶保存するメモリとしてＮＡＮＤ型フラッシュメモリを使用する場合における起動時の手順として、従来から行われている一般的なものを、本実施の形態のデジタルスチルカメラ１におけるマイクロコンピュータのシステム構成を基にして説明する。
【００２５】
図８は、従来の起動手順に対応した、デジタルスチルカメラ１のマイクロコンピュータシステム２０の構成例を図１から抜き出して示している。先に図１により説明したように、デジタルスチルカメラ１のマイクロコンピュータシステム２０は、マイクロコンピュータ１０と、プログラム格納用不揮発性メモリ１１及びプログラム実行用ＲＡＭ１２から成るものとされる。
この場合のマイクロコンピュータ１０の内部構成としては、図示するようにして、ＣＰＵ２１、ＤＭＡコントローラ２２、バスコントローラ２３、及びブート用ＲＯＭ２４を備え、ＣＰＵ２１、ＤＭＡコントローラ２２、及びブート用ＲＯＭ２４についてはデータバス２５により相互接続されるようになっている。また、データバス２５に対しては、マイクロコンピュータ１０外部のプログラム格納用不揮発性メモリ１１と、プログラム実行用ＲＡＭ１２が接続されている。
【００２６】
マイクロコンピュータ１０において、ＣＰＵ２１は、メモリ（記憶装置）に保持されているプログラムを実行する部位となる。ＣＰＵ２１がプログラムを実行していくことで、マイクロコンピュータ１０が実行する各種制御処理としての動作が得られる。なお、この場合において、ＣＰＵ２１が、実行すべきプログラムを読み出すためにアクセスするメモリは、マイクロコンピュータ１０内のブート用ＲＯＭ２４と、外部のプログラム実行用ＲＡＭ１２となる。
【００２７】
ブート用ＲＯＭ２４には、ＣＰＵ２１が起動時において最初に読み込む、いわゆる起動（ブート：boot）用のプログラムが記憶保持される。起動用プログラムは、例えばプログラム格納用不揮発性メモリ１１に記憶されるメインのプログラムと比較すると、相当にサイズが小さい。このようなことを理由に、ブート用ＲＯＭ２４には、パラレル型のＮＯＲ型フラッシュメモリが採用される。プログラム実行用ＲＡＭ１２は、先に図１にて説明したように、ＳＤＲＡＭとされ、プログラム格納用不揮発性メモリ１１から読み出されたプログラムのデータが書き込まれて、ここで展開されるようにして保持される。このプログラム格納用不揮発性メモリ１１に記憶され、プログラム実行用ＲＡＭ１２に保持されるプログラムがメインプログラムとなる。ＣＰＵ２１は、データバス２５経由で、プログラム格納用不揮発性メモリ１１に保持されているプログラムのデータにアクセスして読み込みを行うことで、メインプログラムの実行処理を行うようにされる。
【００２８】
ＤＭＡコントローラ２２は、ＤＭＡ(Direct Memory Access)としての動作を実行するための部位とされる。ＤＭＡとは、周知のようにして、ＣＰＵを介さずに、装置とメモリとの間をバス経由で直接的にデータ転送を行う方式のことをいう。この場合のＤＭＡコントローラ２２は、マイクロコンピュータシステム２０の起動時において、プログラム格納用不揮発性メモリ１１に記憶されるプログラムのデータを、プログラム実行用ＲＡＭ１２に対して、ＤＭＡ転送するための制御を行うようにされている。
【００２９】
ＤＭＡコントローラ２２によるＤＭＡ転送が行われる場合においては、仮に、ＤＭＡ転送によるバス使用とＣＰＵ２１によるバス使用が同時に発生すると、バスにおける電気信号がぶつかり合う、いわゆるコリジョンなどといわれる障害が発生する。そこで、この衝突が生じないように、ＤＭＡ転送とＣＰＵ２１によるデータバス２５の使用が相互に排他的となるように両者のバス使用権を調停する必要がある。バスコントローラ２３は、このバス使用権の調停を行うものとして設けられる。
【００３０】
従来に対応したバスコントローラ２３の基本的な動作としては次のようなものとなる。
バスコントローラ２３は、ＣＰＵ２１からのバスリクエスト（CPU_Bus Req）と、ＤＭＡコントローラ２２からのバスリクエスト（DMA_Bus Req）が入力されるようになっている。バスリクエストとは、データ転送、メモリアクセスなどのためにバスの使用を要求する信号をいう。バスコントローラ２３は、バスリクエストに応じて適宜、イネーブル信号（CPU_EN、DMA_EN）を出力する。例えば、一方からバスリクエストが入力されたときに、他方がバスを使用していないのであれば、バス使用を許可するためのイネーブル信号を出力し、バスを使用しているのであれば、バス使用の禁止を示すイネーブル信号を出力する。これにより、バスコントローラ２３によるバス使用の調停処理としては、例えばバスが使用されていない状況では、バスリクエストをはやく出力した方が優先してバス使用の許可が与えられるようにされ、一方がバスを使用中にあるときには、他方からバスリクエストがあってもその要求を拒絶してバス利用を禁止して、使用中のほうを優先させるようにされている。
【００３１】
上記構成の下でのマイクロコンピュータシステム２０の起動時における手順の流れを、図９に示す。この図９の手順について、図８の構成における動作と併せて説明する。図８及び図９においては、図９の手順に応じてマイクロコンピュータが実際に行っているとされるハードウェア的な動作を、○内に記した番号１〜４により示している。以降においては、番号１〜４ごとに対応したハードウェア動作を、それぞれ動作１〜４ということにする。
例えば電源が投入されるなどしてマイクロコンピュータシステム２０の起動を開始させるべき機会になったとされると、マイクロコンピュータ１０は、動作１として、ブート用ＲＯＭ２４に対してデータバス２５経由でアクセスし、このブート用ＲＯＭ２４に記憶されている起動用プログラムを、しかるべきアドレスのアクセス順に従って読み出して実行していくようにされる。このようにして、起動用プログラムを実行していくことで、先ずは、図９のステップＳ３０１として示すようにして、マイクロコンピュータ１０としては、ＣＰＵ初期化とメモリ初期化を実行することになる。また、ステップＳ３０１に続くステップＳ３０２の処理に際しても、動作２として示しているように、ＣＰＵ２１は起動用プログラムの実行を継続している。これにより、ステップＳ３０２としては、ＤＭＡコントローラ２２に対して例えば所要のパラメータを設定したうえで、ＤＭＡ転送を開始させる、ＤＭＡ設定としての処理を実行するようにされる。
【００３２】
この場合には、ＣＰＵ２１が起動用プログラムの実行を完了したとされると、ＣＰＵ２１は、そのプログラム実行動作を停止する。この停止状態では、ＣＰＵ２１からのバスリクエストの出力は停止される。そして、この状態において、ステップＳ３０３として示すように、プログラム格納用不揮発性メモリ１１からプログラム実行用メモリ１２へのプログラムのデータのＤＭＡ転送が行われる。つまり、ＤＭＡコントローラ２２はアドレス指定を行って、プログラム格納用不揮発性メモリ１１からプログラムのデータをしかるべき順序で読み出させ、データバス２５経由でプログラム実行用ＲＡＭ１２に転送させて書き込んでいくようにされる。このようにして、プログラム実行用ＲＡＭ１２には、メインのプログラムのデータが順次保持されていくようにされる。そして、このＤＭＡ転送は、上記しているように、ＣＰＵ２１のプログラム実行が停止された状態で行われるので、このときのＤＭＡコントローラ２２からのバスリクエストに応じては、バスコントローラ２３は、バス使用許可のイネーブル信号DMA_ENを毎回出力する。従って、ステップＳ３０３としてのDMA転送は、ＣＰＵ２１が動作を停止した状態のもとで継続的に実行される。つまり、ステップＳ３０３に対応する動作３は、ＣＰＵ２１がプログラム実行を停止しており、その一方で、ＤＭＡ転送を実行しているというシステム動作となっている、
【００３３】
ここで、確認のために、プログラム格納用不揮発性メモリ１１に記憶されるメインプログラムのデータを、プログラム実行用ＲＡＭ１２に転送して展開保持させておくことの必要性について述べておくこととする。
この場合のプログラム格納用不揮発性メモリ１１は、前述もしたように、フラッシュメモリとしてＮＡＮＤ型を採用することで、コストアップの問題を解決しながら、プログラムの大容量化に対応している。
しかしながら、ＮＡＮＤ型フラッシュメモリは、ランダムアクセスは行わないようにされ、シリアル型として使用されるのが通常である。このことは、ＣＰＵ２１は、ＮＡＮＤ型フラッシュメモリであるプログラム格納用不揮発性メモリ１１に対しては直接的にアクセスしてプログラムを実行することはできないことを意味する。プログラム実行のためには、ランダムアクセスが必要になるからである。そこで、ＣＰＵ２１が、ＮＡＮＤ型フラッシュメモリのプログラム格納用不揮発性メモリ１１に記憶されるメインプログラムを実行できるようにするためには、このメインプログラムのデータを、ランダムアクセスが可能なメモリにコピーし、このメモリに対してＣＰＵ２１がアクセスしてプログラムを実行できるような環境とする必要があることになる。
そこで、デジタルスチルカメラ１のマイクロコンピュータシステム２０としては、ランダムアクセスが可能（パラレル型）で、プログラム格納用不揮発性メモリ１１に記憶されるメインプログラムを保持するメモリとして、例えばＳＤＲＡＭなどとされるプログラム実行用ＲＡＭ１２を備えることとしている。なお、パラレル型でランダムアクセスが可能であるという点では、フラッシュメモリのＮＯＲ型も同様であり、この観点からすれば、プログラム実行用ＲＡＭ１２としてＮＯＲ型フラッシュメモリを採用してもよいことになる。しかしながら、ＮＯＲ型フラッシュメモリはビット単価が高くコストアップになるために、プログラム格納用不揮発性メモリ１１をＮＯＲ型からＮＡＮＤ型にした意味がなくなる。これに対してＳＤＲＡＭなどの揮発性メモリは、フラッシュメモリと比較してビット単価も低い。また、用途としては、プログラム実行時においてのみ、プログラムを保持していればよいことから、揮発性であることは問題にはならない。このようにして揮発性メモリは、プログラム実行用のＲＡＭとして一般にも広く使用されている。デジタルスチルカメラ１においても、このような理由から、プログラム実行用ＲＡＭ１２として揮発性のＳＤＲＡＭを採用しているものである。
【００３４】
説明を図９、図８に戻す。
ステップＳ３０３のＤＭＡ転送が完了して、プログラム実行用ＲＡＭ１２に対して、起動時に応じて必要な全てのメインプログラムが保持された状態になったとすると、ＣＰＵ２１は、動作４、及びステップＳ３０４として、プログラム実行用ＲＡＭ１２にアクセスしてメインプログラムを読み出して実行するようにされる。
マイクロコンピュータシステム２０の起動の完了は、ステップＳ３０３としてのＤＭＡ転送が完了して、ステップＳ３０４のメインプログラム実行が開始されたタイミングとなる。例えばデジタルスチルカメラ１の場合であれば、ステップＳ３０４としてのメインプログラム実行が可能となった時点から、その通常動作が可能な状態となるものである。
【００３５】
ここで、上記図８及び図９により説明した従来としてのマイクロコンピュータシステム起動の手順にあっては、ステップＳ３０１の手順を開始して、ステップＳ３０３の手順が完了するまでに要する時間が起動時間であることになる。実際において、ステップＳ３０１及びステップＳ３０２の手順は、ＣＰＵ２１が起動用プログラムを実行している期間となるが、この期間の時間長はステップＳ３０３としてのＤＭＡ転送に比較すると無視できるほど短い。本来、ＤＭＡ転送は、ＣＰＵを介在させないデータ転送動作としてそのオーバーヘッドを排除して、高速なデータ転送が実現されることを目的としてはいる。しかしながら、プログラムのデータサイズが肥大化する傾向にあることで、上記したような起動時のメインプログラム読み込みのためのＤＭＡ転送には、相当の時間を要するようになってきており、これに伴って起動時間も長くなってしまっている。
【００３６】
例えば起動時間が或る程度長いということは、現状のパーソナルコンピュータなどでは、ユーザから許容されているような状況であることから、さほどの問題は生じないと考えられる。しかしながら、機器の用途によっては、起動時間が長いことが明らかに不利となる場合がある。本実施の形態のようなデジタルスチルカメラも、そのような機器の１つであり、起動時間が長くかかれば、それだけ撮影機会の損失を招くことになってしまうという問題を抱える。つまり、起動時間が長いと、ユーザが、ある状態を撮影したいと思ってデジタルスチルカメラ１の電源をオンにしたとしても、起動が完了して撮影可能な状態になったときには、既にその状態は終わってしまっており、撮影ができなくなっているという状況になってしまう。
このような不都合を回避するために、例えばプログラムを保持するＲＡＭへの電源供給を継続させておくという手法を採ることのできる場合がある。例えば、携帯電話などは、待ち受けのためにメインの電源を常にオン状態に維持して使用することが通常であるので、この手法を採ることができる。しかしながら、本実施の形態のようなデジタルスチルカメラでは、撮影を行わないときには、節電のためにメイン電源をオフにしておくことが一般的なことから、上記のようなＲＡＭに電源を供給し続ける手法は採用しにくい。また、同じく携帯電話などでは、起動時間が長いことをユーザが意識しないように、起動が完了するまでの待機時において、表示画面部に起動用の画像を表示させたりすることが行われるが、現実に起動時間は短縮されていないので、例えばデジタルカメラにおける撮影機会損失などの問題に対する根本的な解決にはならない。むしろ、実質的な起動時間については、起動画像表示のためのプログラム部分を起動用プログラムに追加したり、起動用画像転送などの処理の追加が生じたりすることで、長時間化する場合がある。
【００３７】
そこで、本実施の形態のデジタルスチルカメラ１のマイクロコンピュータシステムとしては、以降説明するようにして、上記した問題を回避した上での起動時間の短縮が図られるように構成するものである。
図２は、本実施の形態の起動時間短縮の構成が採られるデジタルスチルカメラ１としてのマイクロコンピュータシステム２０の構成例を示している。なお、この図において、図８と同一部分については同一符号を付して説明を省略する。
図２と、先の図８のシステム構成とを比較して分かるように、図２に示す基本的な構成は図８と同様となっている。つまり、マイクロコンピュータ１０としては、ＣＰＵ２１、ＤＭＡコントローラ２２、バスコントローラ２３、及びブート用ＲＯＭ２４を備え、ＣＰＵ２１、ＤＭＡコントローラ２２、バスコントローラ２３がデータバス２５により接続される。また、マイクロコンピュータ１０外部には、シリアル型とされるＮＡＮＤ型フラッシュメモリのプログラム格納用不揮発性メモリ１１と、ＳＤＲＡＭによるプログラム実行用ＲＡＭ１２を備え、これらがデータバス２５と接続されている。
【００３８】
そのうえで、図２においては、ＣＰＵ２１が内部に備えるとされるプログラムカウンタ２１ａと、ＤＭＡコントローラ２２が内部に備えるとされる転送カウンタ２２ａが示されている。また、バスコントローラ２３の内部には、カウンタ比較器２３ａが設けられる。
【００３９】
プログラムカウンタ２１ａは、一般にＣＰＵが備えるものと同義とされてよい。従って、このプログラムカウンタ２１ａは、例えばＣＰＵ２１がプログラムを実行していくごとに、カウント値がインクリメントされるもので、そのカウント値は、常に、ＣＰＵが次に実行すべきプログラムのアドレスを示すようにされる。
【００４０】
また、ＤＭＡコントローラ２２内の転送カウンタ２２ａは、起動時においてプログラム格納用不揮発性メモリ１１からプログラム実行用ＲＡＭ１２にメインプログラムのデータを転送するＤＭＡ転送時における、データ転送量をカウントするカウンタとされる。
【００４１】
バスコントローラ２３のカウンタ比較器２３ａは、上記プログラムカウンタ２１ａと転送カウンタ２２ａのカウント値を取り込んで、その大小の比較を行う。この比較結果は、後述するようにして、起動時におけるＤＭＡ転送と、ＣＰＵによるメインプログラム実行とについての調停（排他制御）に利用される。
【００４２】
図３は、上記図２に示す構成から、ＣＰＵ２１、ＤＭＡコントローラ２２、及びバスコントローラ２３を抜き出して示している。
この図に示されるように、バスコントローラ２３は、カウンタ比較器２３ａとバスアービトレータ２３ｂを備えてなるものとされる。
そして、カウンタ比較器２３ａには、ＣＰＵ２１のプログラムカウンタ２１ａのカウント値と、ＤＭＡコントローラ２２の転送カウンタ２２ａのカウント値が入力される。
カウンタ比較器２３ａでは、上記もしているように、ＣＰＵ２１のプログラムカウンタ２１ａのカウント値と、転送カウンタ２２ａのカウント値とについての大小を比較して、その比較結果に応じた信号をバスアービトレータ２３ｂに対して出力する。
【００４３】
バスアービトレータ２３ｂは、マイクロコンピュータシステムの起動時以外における通常時の動作としては、図８にて説明したバスコントローラ２３としての動作と同様となる。つまり、バスアービトレータ２３ｂは、ＣＰＵ２１から出力されるバスリクエスト（CPU_Bus Req）と、ＤＭＡコントローラ２２から出力されるバスリクエスト（DMA_Bus Req）に応答して、イネーブル信号（CPU_EN、DMA_EN）を適宜出力することで、バスが使用されていない状況では、バスリクエストを早く出力した方にバス使用の許可を与え、バスが一方により使用されているときには、他方のバス使用を禁止するというように、バスリクエストを早く出力した装置、あるいはバスを使用中の装置のほうが優先されるようにしてバス使用の調停制御を行うようにされる。
また、起動後においてもＤＭＡコントローラ２２によるＤＭＡ転送が実行されるような状況では、ＤＭＡ転送を優先させたままとしていると、ＣＰＵ２１がメインプログラムを実行できなくなり、正常な機器の動作が阻害されるおそれがある。そこで、このようなときには、例えば定期的にバスを解放させ、ＣＰＵ２１がバス使用権を取得できるようにする調停制御も実行可能とされる。
なお、バス使用の禁止／許可設定のためのイネーブル信号（CPU_EN、DMA_EN）は、ここでは、Ｈレベルにより許可を示し、Ｌレベルにより禁止を示すこととする。
【００４４】
そのうえで、本実施の形態のバスアービトレータ２３ｂは、起動時において、プログラム格納用不揮発性メモリ１１に記憶されるメインのプログラムを、プログラム実行用ＲＡＭ１２に対してＤＭＡ転送させる際には、カウンタ比較器２３ａの比較結果に適応させるようにして、ＤＭＡ転送・メインプログラム実行についての調停を行うようにされる。
【００４５】
なお、確認のために述べておくと、図３のバスコントローラ２３の構成に対して従来となるバスコントローラ２３の構成は、カウンタ比較器２３ａを省略し、上記した基本動作を実行するバスアービトレータ２３ｂのみの構成を採ることとすればよい。また、カウンタ比較器２３ａが省略されるのに伴い、プログラムカウンタ２１ａのカウント値と、転送カウンタ２２ａのカウント値をバスコントローラ２３に出力させる必要も無くなる。
【００４６】
図４のフローチャートは、上記図２、図３に示した構成を採る本実施の形態のマイクロコンピュータシステム２０の起動時における手順例を示している。この場合にも、従来の図８、図９の関係と同様に、図４と先に説明した図２には、図４の手順に応じてマイクロコンピュータが実際に行っているとされるハードウェア的な動作を、○内に記した番号により、動作１〜４として示している。
【００４７】
この場合にも、電源が投入されるなどしてマイクロコンピュータシステム２０の起動を開始させるべき機会になったとされると、マイクロコンピュータ１０は、動作１として、ブート用ＲＯＭ２４に記憶されている起動用プログラムを、しかるべきアドレス順に従って読み出して実行していく。これに応じて、先ずは図４のステップＳ１０１として示すようにして、マイクロコンピュータ１０においては、ＣＰＵ初期化とメモリ初期化が実行される。
【００４８】
続くステップＳ１０２の処理も、動作２として示しているように、ＣＰＵ２１は起動用プログラムを継続して実行しており、この結果として、ＤＭＡコントローラ２２を始動させるためのＤＭＡ設定としての処理を実行する。
ここで本実施の形態としては、このステップＳ１０２としてのＤＭＡ設定の処理にあっては、次に説明するステップＳ１０３によるＤＭＡ転送・メインプログラム実行に関しての、単位時間あたりにおける実行タイミング設定を行っておくようにされる。
【００４９】
このＤＭＡ転送・メインプログラム実行のタイミング設定例について、図５を参照して説明する。
図５（ａ）には、プログラム実行可能状況に応じた設定内容例を示し、図５（ｂ）には、プログラム実行不可状況に応じた設定内容例を示している。ここでいうプログラム実行可能状況とは、ＣＰＵ１２がこれより実行すべきプログラムのデータ（プログラムカウンタ２１ａが示すアドレスまでの命令のデータ）がプログラム実行用ＲＡＭ１２に既に保持されている状態を指し、プログラム実行不可状況は、ＣＰＵ１２がこれより実行すべきプログラムのデータがプログラム実行用ＲＡＭ１２に保持されていない状態を指す。
【００５０】
先ず、図５（ａ）（ｂ）に示されるように、ＤＭＡ転送とメインプログラム実行を時分割で実行する単位時間について、ここでは１２８サイクルとしている。つまり、ここでは時間をサイクル数により示すこととしており、実際には１サイクルが所定の固定の時間長を持つ。具体的には１サイクルが十数ｎsec程度のイメージである。
そして、プログラム実行可能状況に応じては、図５（ａ）に示すようにして、１２８サイクルの単位時間を６４サイクルで２等分割し、前半６４サイクルの期間がＤＭＡ転送で、後半６４サイクルの期間がメインプログラム実行となるようにして実行タイミングを設定している。つまり、ここでは、１２８サイクルの単位時間において１：１の時間比率によりＤＭＡ転送とメインプログラム実行を割り当てることとしている。また、図５（ａ）では、実行順として、ＤＭＡ転送が先で、これに続いてメインプログラム実行が行われるものとしている。後の説明から理解されるように、例えばこの場合とは逆に、単位時間内において先にプログラム実行を行い、次にＤＭＡ転送を行うように割り当てを行ったとすると、ステップＳ１０３としてのＤＭＡ転送・メインプログラム実行を開始させた直後において、プログラム実行不可状況が或る程度の単位時間周期で継続することになってプログラム実行可能状況への遷移が遅れるので、その分、起動時間短縮には不利となる。ただし、現実の単位時間は相当に短いことから、体感的に起動時間が遅くなるような問題は生じない。
【００５１】
また、プログラム実行不可状況に応じては、図５（ｂ）に示すようにして、１２８サイクルの全てをＤＭＡ転送に使用するようにされる。つまり、この場合の単位時間におけるＤＭＡ転送とメインプログラム実行の時間比率としては、
ＤＭＡ転送：メインプログラム実行＝１：０
を設定していることになる。
【００５２】
なお、上記図５（ａ）（ｂ）に示した、プログラム実行可能状況とプログラム実行不可状況のそれぞれに応じたＤＭＡ転送期間とメインプログラム実行期間との時間比率は一例であり、これに限定される必要はない。例えば、図５（ａ）では、プログラム実行可能状況に応じた時間比率として、１：１としているが、実際のＤＭＡ転送処理性能、ＣＰＵ処理能力などを勘案して、１：１以外の適正とされる比率が設定されればよいものである。
また、プログラム実行不可状況に応じては、図５（ｂ）のように、ＤＭＡ転送のみを実行させることとしている。以降の説明から理解されるように、プログラム実行不可状況のときには、ＤＭＡ転送のみとすることが、できるだけ迅速にプログラム実行可能状況に遷移させることができる点で最も効率的であると考えられるが、本願発明の概念としては、ＤＭＡ転送だけではなく、メインプログラム実行も行うような時間比率としてもよいものである。ただし、プログラム実行不可状況における時間比率は、プログラム実行可能状況のときよりも、ＤＭＡ転送のほうが高く、一方のメインプログラム実行のほうが低くなるようにして設定されるべきことになる。
さらには、図５に示している１２８サイクルとしての単位時間設定も一例であり、適宜変更可能である。
【００５３】
そして、続くステップＳ１０３としては、動作３としても示すように、ＤＭＡコントローラ２２によるプログラム格納用メモリ１１からプログラム実行用ＲＡＭ１２へのプログラムデータのＤＭＡ転送と、ＣＰＵ２１によるメインプログラム実行を、上記のようにして設定される単位時間あたりの実行タイミング設定に基づいて、時分割的に実行していくようにされる。
つまり、本実施の形態の起動時におけるメインプログラムの読み込み処理としては、図９（及び図８）にて説明したステップＳ３０３、Ｓ３０４の手順のようにして、プログラム格納用メモリ１１からプログラム実行用ＲＡＭ１２へのプログラムデータのＤＭＡ転送が完了して、その後にはじめてＣＰＵ２１がメインプログラムを実行するのではない。
本実施の形態では、ＤＭＡ転送により或る量以上のメインプログラムの一部データがプログラム実行用ＲＡＭ１２に保持されたとすると、このＤＭＡ転送を一旦停止させ、かわりに、ＣＰＵ２１が、プログラム実行用ＲＡＭ１２に保持されたメインプログラムのデータ部分を実行するようにされる。そして、ＣＰＵ２１が或る量のメインプログラムの処理を行ったとされると、一旦そのプログラム実行処理を停止させ、再度、ＤＭＡ転送により、メインプログラムの続きのデータ部分をプログラム実行用ＲＡＭ１２に書き込んで保持させる。このような動作を繰り返して実行していくようにされる。
【００５４】
そして、このステップＳ１０３としての実際のＤＭＡコントローラ２２とＣＰＵ２１の動作であるが、基本的には、図５（ａ）に示したプログラム実行可能状況に対応して設定された実行タイミングにより、ＤＭＡ転送と、メインプログラム実行とを繰り返すようにされる。つまり、単位時間である１２８サイクルごとの繰り返しにおいて、その前半６４サイクルによるＤＭＡ転送により、プログラム実行用ＲＡＭ１２には、プログラム格納用不揮発性メモリ１１から転送されてきたプログラムが蓄積されるようにして保持されていくことになる。ＣＰＵ２１は、このようにしてプログラム実行用ＲＡＭ１２に保持されていくプログラムのデータの処理を、プログラムカウンタに従って、後半６４サイクルにより間欠的に実行していくようにされる。
ただし、上記のようにしてＤＭＡ転送とこれに続くメインプログラム実行を繰り返している過程において、何らかの要因により、ＣＰＵ２１が次のプログラムを実行しようとしたときに、そのプログラムがプログラム実行用ＲＡＭ１２に転送済みとなっていない状態が生じる場合がある。このような状態で、例えばそのままＣＰＵ２１のバスリクエストに応じてバス使用を許可したとすると、ＣＰＵ２１は、実行すべきプログラムが保持されていないプログラム実行用ＲＡＭ１２に対してアクセスしてプログラム実行をしようとするため、例えばマイクロコンピュータシステムの動作エラーを招くことになる。
そこで、上記したようなプログラム実行用ＲＡＭ１２とＣＰＵ２１のプログラム実行の進行状況の関係となった場合には、図５（ｂ）のプログラム実行不可状況に応じたＤＭＡ転送・メインプログラム実行の実行タイミングを設定する。つまり、例えば１２８サイクルの全期間によるＤＭＡ転送に切り換え、ＣＰＵ２１によるプログラム処理を休止させる。このような単位時間の処理動作を、プログラム実行用ＲＡＭ１２のプログラムデータの保持状況の進行に応じて、１回、もしくはそれ以上の必要回数分繰り返すことで、ＣＰＵ２１が実行すべきメインプログラムがプログラム実行用ＲＡＭ１２に保持される状態に復帰させることができる。そして、このようにして、ＣＰＵ２１がメインプログラムを実行可能な状態に復帰したら、再度、図５（ａ）のプログラム実行可能状況に応じた実行タイミングにより、ＤＭＡ転送とメインプログラム実行とを行っていくようにされる。
【００５５】
そして、上記した動作を実行していくうちに、最終的には、プログラム実行用ＲＡＭ１２に対して保持させるべき全てのプログラムのＤＭＡ転送が完了することになる。この後、ＤＭＡコントローラ２２によるプログラムデータの転送は停止してよいことになるが、ＣＰＵ２１は、次のステップＳ１０４としての手順により、ステップＳ１０３に引き続きメインプログラムを実行していくようにされる。
【００５６】
図６のフローチャートは、図４のステップＳ１０３として説明したＤＭＡ転送・メインプログラム実行の手順に対応した、バスコントローラ２３内のバスアービトレータ２３ｂの調停制御についての実行手順を示している。この図６に示す手順が実行されることで、ＤＭＡ転送・メインプログラム実行についての、破綻の無い、正常な動作が実現される。
【００５７】
先の図４に示されていた、ステップＳ１０３としてのＤＭＡ転送を開始すべきタイミングに至ったとされると、バスアービトレータ２３ｂは、この図６に示すルーチンを実行することになる。この図においては、先ず、ステップＳ２０１において、ＤＭＡコントローラ２２からのバスリクエスト（DMA_Bus Req）と、ＣＰＵ２１からのバスリクエスト(CPU_Bus Req)の受信（入力）状況を判定している。
先ず、ステップＳ２０１においてDMA_Bus ReqとCPU_Bus Reqの何れも受信されていない状況にあるとの判定結果が得られた場合には、ステップＳ２０２に進む。この場合には、ＤＭＡコントローラ２２とＣＰＵ２１の何れからもバス使用の要求がない、ということになる。そこで、バスアービトレータ２３ｂは、ステップＳ２０２の手順として、バス使用の要求がないことに応じて、ＤＭＡコントローラ２２とＣＰＵ２１の両方に対して、バス使用権の禁止設定を行う。つまり、ＤＭＡコントローラ２２に対して出力するイネーブル信号DMA_ENと、ＣＰＵ２１に対して出力するイネーブル信号CPU_ENとについて、共に禁止を示すＬレベルを出力するようにされる。
【００５８】
また、ステップＳ２０１により、DMA_Bus Reqは受信したが、CPU_Bus Reqは受信していないとの判定結果が得られた場合には、ステップＳ２０３に進む。このようなバスリクエストの受信状況は、ＤＭＡコントローラ２２がＤＭＡ転送のためにバスを使用することを要求しているのに対して、ＣＰＵ２１はメインプログラム実行を停止したタイミングにあるということになる。そこでステップＳ２０３としては、ＤＭＡコントローラ２２にバス使用を許可し、ＣＰＵ２１にバス使用を禁止するという排他制御を実行する。このためには、イネーブル信号DMA_ENをＨレベルとし、イネーブル信号CPU_ENをＬレベルとして出力するようにされる。
【００５９】
また、ステップＳ２０１により、DMA_Bus Reqは受信していないが、CPU_Bus Reqは受信したとの判定結果が得られた場合、ＣＰＵ２１はメインプログラム実行のためにバスを使用するつもりであるが、ＤＭＡコントローラ２２はバス使用を要求していないのでコリジョンは生じない状況にあるものとされる。また、図４のステップＳ１０３にあってＤＭＡコントローラ２２がバス使用を要求していないということは、今回のステップＳ２０４に至る段階の前において、ＤＭＡコントローラ２２が或るデータ転送料によるＤＭＡ転送を行い、その結果として、これよりＣＰＵ２１が実行すべきプログラムがプログラム実行用ＲＡＭ１２に格納されているプログラム実行可能状況であるということがいえる。そこで、この場合にはステップＳ２０４に進んで、ＤＭＡコントローラ２２にバス使用を禁止し、ＣＰＵ２１にバス使用を許可する。
【００６０】
また、ステップＳ２０１によりDMA_Bus ReqとCPU_Bus Reqの両方を受信したとの判定結果が得られた場合には、ＤＭＡコントローラ２２とＣＰＵ２１からのバスリクエストが競合していることになる。この場合には、先ず、ステップＳ２０５において、現在の処理タイミングが、例えば１単位時間に対応する１２８サイクルにおける前半６４サイクルの期間内であるか否かについて判別する。
このステップＳ２０５において、現在の処理タイミングが前半６４サイクルの期間内であるとして肯定の判別結果が得られたということは、現在の状態がプログラム実行可能状況であるならば、図５（ａ）にて説明したように、ＤＭＡ転送をすべきとして割り当てられた期間内にあるということになる。また、プログラム実行不可状況であるならば、１２８サイクルを全てＤＭＡ転送に割り当てることになる。従って、いずれにせよ、現在の処理タイミングとしては、ＣＰＵ２１のプログラム実行は禁止して、ＤＭＡ転送を実行させるべきタイミングである、ということになる。そこで、この場合には、ステップＳ２０３に進んで、ＤＭＡコントローラ２２にバス使用を許可し、ＣＰＵ２１にバス使用を禁止するようにされる。
【００６１】
一方、ステップＳ２０５において否定の判別結果が得られた場合は、現在の処理タイミングは後半６４サイクルの期間内であることになる。この場合、現在の状況がプログラム実行可能状況であるならば、ＣＰＵ２１がプログラム実行をすべきとして割り当てられた期間内である、ということになる。一方、プログラム実行不可状況であるならば、前半６４サイクル期間に続いてＤＭＡ転送を実行すべき期間であるということになる。
そこで、この場合には、現在のプログラム実行用ＲＡＭ１２の現在の状態が、プログラム実行可能状況であるのか、あるいはプログラム実行不可状況であるのかを判定する必要があることになる。このために、バスコントローラ２３は、ステップＳ２０６により、プログラムカウンタ２１ａのカウント値と、転送カウンタ２２ａのカウント値とを比較するようにされる。ここでは、プログラムカウンタ２１ａのカウント値をＣp、転送カウンタ２２ａのカウント値をＣtとして、
Ｃp＞Ｃt
が成立するか否かについて判別するようにされる。
【００６２】
このステップＳ２０６の手順を実行するための構成が、先の図３において、カウンタ比較器２３ａを備えるバスコントローラ２３として示されている。
カウンタ比較器２３ａでは、プログラムカウンタ２１ａから出力されるカウント値Ｃｐと、転送カウンタ２２ａから出力されるカウント値Ｃtとを入力して比較を行う。そして、この比較結果として、上記したようにＣp＞Ｃtが成立しているか否かに応じて、そのことを示す信号を出力する。ここでは、Ｃp＞Ｃtが成立している場合にはＬレベルで、Ｃp≦ＣtとなってＣp＞Ｃtが成立していないときにはＨレベルを出力するものとする。
【００６３】
先に説明したように、カウント値Ｃpは、ＣＰＵ２１が次に実行すべきメインプログラムのアドレス（実行アドレス）を示す。ＣＰＵ２１のプログラム実行にあっては、アドレスごとのプログラムを処理していくごとに、プログラムカウンタ２１ａのカウント値であるアドレスがインクリメントされていく。プログラムカウンタ２１ａは、ＣＰＵ２１のプログラム実行についての進行状況を示しているということがいえる。
また、カウント値Ｃtは、メインプログラムのロードのために、ＤＭＡコントローラ２２がプログラム格納用不揮発性メモリ１１からプログラム実行用ＲＡＭ１２にＤＭＡ転送させたデータ量を示す。そして、ＤＭＡコントローラ２２によるこのＤＭＡ転送は、メインプログラムをアドレス順に従って転送するようにされる。
このことから、例えばプログラムカウンタ２１ａのカウント値Cpをアドレス値から１アドレス単位のデータ量に換算する、あるいは逆に、転送カウンタ２２ａのカウント値Ｃtを、データ量からアドレス単位の値に変換すれば、カウント値Ｃt，Ｃpの比較を適正に行うことが可能になる。
【００６４】
カウンタ比較器２３ａにより、Ｃp＞Ｃtが成立せずにＣp≦Ｃtとなって、プログラムカウンタのカウント値がメインプログラムのデータ転送量以下の状態であるとの比較結果が得られ、カウンタ比較器２３ａからＨレベルの信号が出力されたとすると、バスアービトレータ２３ｂとしては、ステップＳ２０６として否定の判別結果を得ることになる。この判別結果は、プログラム実行用ＲＡＭ１２には、ＣＰＵがこれより実行すべきプログラム（少なくともプログラムカウンタ２１ａが示すアドレスのプログラム（命令）部分を含む）が保持されている、ということを意味する。つまり、ＣＰＵ２１がこれよりプログラムを実行することが可能な状況にある。そこで、この場合のバスアービトレータ２３ｂは、ステップＳ２０４に進んで、ＤＭＡコントローラ２２のバス使用を禁止し、ＣＰＵ２１のバス使用を許可するようにされる。このステップＳ２０６からステップＳ２０４の手順への移行は、プログラム実行用ＲＡＭ１２の状態がプログラム実行可能状況であることに応じて、図５（ａ）に示す１単位時間（１２８サイクル）分のシーケンスである、ＤＭＡ転送とＣＰＵ処理との６４サイクルごとの時分割処理を実行する場合に対応する。
これに対して、カウンタ比較器２３ａの比較結果としてＣp＞Ｃtが成立したのに応じてＬレベルの信号を出力したとされると、バスアービトレータ２３ｂは、ステップＳ２０６として肯定の判別結果を得ることとなる。Ｃp＞Ｃtが成立したということは、ＣＰＵ２１が次に実行すべきプログラムが、未だＤＭＡ転送されず、プログラム実行用ＲＡＭ１２に保持されていない状態であることになる。そこでこの場合には、ステップＳ２０３に進んで、ＤＭＡコントローラ２２のバス使用を許可し、ＣＰＵ２１のバス使用を禁止するようにされる。つまり、ステップＳ２０６からステップＳ２０３の処理に移行した場合には、プログラム実行用ＲＡＭ１２の状態がプログラム実行不可状況であることに応じて、図５（ｂ）に示すようにして、１単位時間（１２８サイクル）を全てＤＭＡ転送に割り当てることとなる。
【００６５】
ところで、これまでに述べてきた本実施の形態の起動時の動作を得るのにあたり、ＣＰＵ２１が実行すべきプログラムについては、図４のステップＳ１０２のＤＭＡ設定を実行した後において、ステップＳ１０３としての、メインプログラムのロード完了を待たずに、メインプログラムを実行していく動作となるように、例えばブート用ＲＯＭ２４に記憶させる起動用プログラムを記述すればよい。このプログラムに従って、ＣＰＵ２１は、例えばＤＭＡ設定を実行した後に、プログラム実行用ＲＡＭ１２に保持されているメインプログラムへのアクセスのためにバスリクエストを発行することになる。このバスリクエストに応じて、例えば図３の構成の下で、図６に示す手順によりバスコントローラ２３（バスアービトレータ２３ｂ）が調停を行えば、結果的に、本実施の形態としてのメインプログラムのロードと実行とが時分割的に併行して行われる動作が得られる。
また、バスコントローラ２３の実際としては、図３に示したブロック構成に基づいて、図６に示すアルゴリズムに相当する手順が実行されるようにされたハードウェアロジックなどの回路として構成されればよい。あるいは、図３及び図６に示したブロック構成及び手順を、プログラムに従って実行するようなデバイスとして構成されてもよい。
【００６６】
そして、これまでに説明したような本実施の形態のマイクロコンピュータシステム２０の起動の動作、手順であれば、例えば、先に図８，図９により説明した従来の起動手順と比較して、その起動時間は大幅に短縮することができる。
つまり、例えばここで、マイクロコンピュータシステム２０の起動が完了した状態とは、ＣＰＵ２１がプログラム実行用ＲＡＭ１２にロードされたメインプログラムの実行を開始可能となった状態であるとして捉えるとする。
すると、従来として図９に示した手順では、ステップＳ３０３により、先ず、プログラム格納用不揮発性メモリ１１からプログラム実行用ＲＡＭ１２にメインプログラムをＤＭＡ転送させる動作のみを実行させ、この動作が完了したとされると、あらためて、ステップＳ３０４によりＣＰＵ２１によるメインプログラム実行のためのプログラム実行用ＲＡＭ１２へのアクセスを開始させることとしている。この場合には、ステップＳ３０３におけるＤＭＡ転送の時間が、そのまま起動時間に含められることになる。
これに対して、本実施の形態では、ステップＳ１０３において、メインプログラムをロードするためのＤＭＡ転送と、ＣＰＵ２１によるメインプログラム実行が時分割的に実行される。この場合のＣＰＵ２１によるメインプログラム実行タイミングは、見かけ上は、メインプログラムのロードのためのＤＭＡ転送と併行しているものとみてよいことになる。つまり、メインプログラムロードのためのＤＭＡ転送の開始とほぼ同じタイミングで、ＣＰＵ２１によるメインプログラム実行が開始されているということになる。従って、マイクロコンピュータシステム２０の起動が完了したタイミングとしては、ＤＭＡ転送が開始されるタイミングとほぼ一致するということになる。
このようにして、本実施の形態では、従来と比較して、起動時間について、例えば従来においてメインプログラムをロードするのに要する時間分を短縮することが可能となる。前述もしたように、本来、メモリと装置間との高速なデータ転送を目的とするＤＭＡ転送であっても、現状のようにしてメインプログラムのデータサイズが大きい状況では、起動時におけるメインプログラムのロードのためのＤＭＡ転送には相応の長い時間を必要とする。このようにして、本実施の形態としては、マイクロコンピュータシステム２０の起動時間が大幅に短縮されることが分かる。
【００６７】
ところで、これまでに説明した実施の形態としてのマイクロコンピュータシステム２０の起動動作、手順は、ＤＭＡ転送とメインプログラム実行とを時分割的に交互に実行させることとしたうえで、その実行期間については時間に基づいて設定することとしている。これに対して、ＤＭＡ転送とメインプログラム実行の各期間について、処理が行われるデータ量に基づいて設定することも考えられる。
【００６８】
そこで、図７により、本実施の形態のマイクロコンピュータシステム２０の起動動作、手順の変形例として、ＤＭＡ転送とメインプログラム実行の実行期間を、データ量に基づいて設定した場合の構成について説明する。なお、変形例に対応するマイクロコンピュータシステム２０の構成としては、図２と同様でよい。
【００６９】
ここで、プログラム格納用不揮発性メモリ１１に記憶され、起動時においてプログラム実行用ＲＡＭ１２にロードされるべきメインプログラムのサイズが４３０ＫＢであるとする。また、一度のＤＭＡ転送による、プログラム実行用ＲＡＭ１２へのメインプログラムの書き込み量としては、１００ＫＢが標準であるとして設定されていることとする。
【００７０】
このような条件を前提とする変形例のＤＭＡ転送・メインプログラム実行の手順としては、原則として、図７の単位処理期間として示すように、先ず、標準ＤＭＡ転送量に対応する１００ＫＢ分のメインプログラムのデータのＤＭＡ転送を実行し、これに続けて、ＣＰＵ２１によるメインプログラム実行期間を設ける。この１つのメインプログラム実行期間によっては、同じ単位処理期間における直前のＤＭＡ転送期間によりプログラム実行用ＲＡＭ１２にロードされた１００ＫＢ分のプログラムを実行するようにされる。そして、このメインプログラム実行期間が終了すると、次の単位処理期間に移行するようにされる。このようにして、原則的には、１００ＫＢ分のプログラムをロードする期間と、このロードされたプログラムを最後まで実行する期間とを交互に実行していくようにされる。
【００７１】
すると、この場合には、起動時においてロードされるべきメインプログラムのサイズが４５０ＫＢとされているので、図の単位処理期間（１）（２）（３）（４）として示すように、単位処理期間を４回繰り返すと、最後の５回目においてロードすべき残りのメインプログラムのデータ量は、３０ＫＢということになる。
【００７２】
このようにして、メインプログラムのサイズが標準ＤＭＡ転送量の整数倍でない場合には、最後にロードすべき残りのメインプログラムのデータ量は、メインプログラムのサイズを標準ＤＭＡ転送量により除算した余りと等しく、標準ＤＭＡ転送量未満となる。このような場合において、ＤＭＡ転送について標準ＤＭＡ転送量で固定設定しているとすると、最後のメインプログラムのデータのロードのためのＤＭＡコントローラ２２の動作としては、実質的に転送すべきプログラムのデータサイズが標準ＤＭＡ転送量未満しかないのにもかかわらず、標準ＤＭＡ転送量によるデータ転送を実行することになる。図７の場合であれば、実質的なプログラムのデータの転送量が３０ＫＢであるのにかかわらず、ＤＭＡコントローラ２２は、１００ＫＢ分を転送する動作を実行する。このような動作では、標準ＤＭＡ転送量（１００ＫＢ）から実質的なＤＭＡ転送すべきデータ量（３０ＫＢ）を差し引いたデータサイズ分（７０ＫＢ）を転送する動作時間が余分であることになる。そして、この余分な動作時間分、以降のメインプログラム実行開始タイミングが遅延することになってしまう。
【００７３】
そこで、本実施の形態の変形例としては、ＤＭＡ転送すべきメインプログラムのデータ量が標準ＤＭＡ転送量未満となったときには、ＤＭＡコントローラ２２からは、ＤＭＡ転送すべき実際のデータ量が転送されるようにする。図７の場合であれば、４回目の単位処理期間までは、標準ＤＭＡ転送量である１００ＫＢ分のデータ転送の動作をＤＭＡコントローラ２２により実行させ、これに続く５回目のＤＭＡ転送に際しては、１００ＫＢ分のデータ転送の動作を実行するのではなく、３０ＫＢ分のみのデータ転送をＤＭＡコントローラ２２により実行させるようにする。
このようにして、変形例にあっては、ＤＭＡ転送とメインプログラム実行の各期間について、ＤＭＡ転送すべきデータ量に基づいて設定することとしたうえで、転送データ量については、実際に転送すべきデータ量の変化に応じて可変設定されるようにしているものである。このようにすれば、上記しているような、余分とされるＤＭＡコントローラ２２のデータ転送の動作に余分な時間が生じることが無く、その分、次のＣＰＵ２１によるプログラム実行の開始時点を早いタイミングにすることができる。
【００７４】
また、このような変形例の動作を実現するのにあたっては、例えば図３に示したのと同様の構成に基づけばよい。先ず、単位処理期間における標準ＤＭＡ転送量によるＤＭＡ転送と、ＣＰＵのメインプログラム実行のタイミング制御は、ＤＭＡコントローラ２２の転送カウンタ２２ａとＣＰＵ２１のプログラムカウンタ２１ａのカウント値をカウンタ比較器２３ａにより比較して得られる出力に基づいて、バスアービトレータ２３ｂがイネーブル信号（CPU_EN、DMA_EN）を適宜出力することで実現可能となる。
そして、ＤＭＡ転送について、標準ＤＭＡ転送量による転送動作から、残りの標準ＤＭＡ転送量未満のデータ量の転送動作に変更するための構成としては、図３に示される構成において次のような構成を付加するようにされる。
例えば、先ず、バスコントローラ２３において、起動時にロードすべきメインプログラムのデータサイズの情報と、標準ＤＭＡ転送量の情報を保持させておく。そしてメインプログラムのデータサイズから転送カウンタ２２ａのカウント値を減算した値を監視するようにして、この減算値が、標準ＤＭＡ転送量未満になったときには、ＤＭＡコントローラ２２から出力されるバスリクエスト（DMA_Bus Req）に対する応答して、上記減算値分のＤＭＡ転送が行われるようにして、イネーブル信号（DMA_EN）を出力するようにされる。つまり、この変形例では、プログラム格納用不揮発性メモリ１１におけるメインプログラムのデータの保持状況としてみた場合には、保持されているデータ量（つまり転送（ロード）済みのメインプログラムのデータ量）について、ロードが完了するまでに必要な残りのメインプログラムのデータサイズが、標準ＤＭＡ転送量未満になったか否かについて判定しており、この条件を満たすと、上記のようにして、残りのメインプログラムのデータサイズのＤＭＡ転送が行われるように制御するものである。
【００７５】
なお、本発明としては、これまでに説明した実施の形態としての構成に限定されない。
例えば、細部における構成は、適宜変更されてよいものであり、一例として、バスアービトレータ２３ｂが実際に実行すべきとされるＤＭＡ転送されるメインプログラムのデータ転送量を計測する転送カウンタ２２ａは、バスコントローラ２３側に備えるようにすることも可能である。バスコントローラ２３では、ＤＭＡコントローラ２２からのバスリクエストに応じてバス使用を許可した回数を知ることができる。そこで、１回のバスリクエストに応じたバス使用によりＤＭＡ転送されるデータ量がほぼ固定的に決まっているものとすれば、ＤＭＡコントローラにバス使用を許可した回数により、メインプログラムの転送量を算出できることになる。
また、図６に示したバスアービトレータ２３ｂの実行手順についても、その細部の流れなどについては、適宜変更されてかまわないものであり、結果的に、例えばプログラム実行可能状況・不可状況に応じて、例えば図５（ａ）に示したような１単位時間あたりの処理シーケンスの切り換えが行われるように構成されればよい。また、図５（ａ）（ｂ）に示した１単位時間あたりの処理シーケンスも、あくまでも一例であって、他の時間比率が考えられることは先にも述べたとおりである。
さらに、本願発明は、例えば本実施の形態のデジタルスチルカメラ１のような用途では、特にその効果が有効になるが、その適用範囲としては、コンピュータシステム全般、また、コンピュータシステムを搭載する電子機器に適用可能である。例えば、その用途上、必ずしも高速な起動完了が要求されないようなコンピュータシステム、電子機器であっても、起動の待ち時間が短縮されれば、例えばそれだけユーザのストレスが軽減されるなどの利点が生じる。
また、本願発明の下での、「プログラム実行のためのランダムアクセスが行われない記憶媒体」としては、例えばその構造、採用する各種の方式等の都合で、一般的なＣＰＵの命令実行の速度に応答できるレベルの速度でのランダムアクセスには不向きとされるような記憶媒体全般を含むものとされる。従って、例えばＮＡＮＤ型フラッシュメモリ以外の半導体記憶素子なども含まれる。また、半導体記憶素子以外の記憶媒体もその概念に含まれる。例えば磁気ディスクの１種であるＨＤＤ（ハードディスク）も、一般的にランダムアクセスが可能とされているが、現状の技術では、ＣＰＵの命令実行の速度に応答できるだけのランダムアクセス速度を得ることが困難とされており、本願発明における「プログラム実行のためのランダムアクセスが行われない記憶媒体」としての条件を満たす。
【図面の簡単な説明】
【００７６】
【図１】本発明の実施の形態としてのデジタルスチルカメラの構成例を示すブロック図である。
【図２】実施の形態のデジタルスチルカメラにおけるマイクロコンピュータシステムの構成例を示すブロック図である。
【図３】実施の形態のマイクロコンピュータシステムにおけるバス使用権調停のための構成として、ＣＰＵ、ＤＭＡコントローラ、及びバスコントローラを抜き出して示すブロック図である。
【図４】実施の形態のマイクロコンピュータシステムについての起動時の手順を示すフローチャートである。
【図５】実施の形態のＤＭＡ転送・メインプログラム実行のタイミング設定例を示す図である。
【図６】実施の形態において、バスアービトレータが実行するとされる調停の手順例を示すフローチャートである。
【図７】実施の形態の変形例としてのＤＭＡ転送・メインプログラム実行のタイミング動作例を示す図である。
【図８】従来に対応するマイクロコンピュータシステムの構成例を示すブロック図である。
【図９】従来としてのマイクロコンピュータシステム起動時の手順を示すフローチャートである。
【符号の説明】
【００７７】
１  デジタルスチルカメラ、２  光学系部、３  光電変換部、４  画像信号処理部、５  画像入出力部、６  カメラ機能部、７  表示部、７Ａ  表示画面部、８  音声処理部、９  音声入出力部、１０  ＣＰＵ、１１  プログラム格納用不揮発性メモリ、１２  プログラム実行用ＲＡＭ、１３  メディアコントローラ、１４  記憶媒体、１５  操作入力部、１６  通信部、２０  マイクロコンピュータシステム、２１  ＣＰＵ、２１ａ  プログラムカウンタ、２２  ＤＭＡコントローラ、２２ａ  転送カウンタ、２３  バスコントローラ、２３ａ  カウンタ比較器
【図１】
2007156855.tif 000003
【図２】
2007156855.tif 000004
【図３】
2007156855.tif 000005
【図４】
2007156855.tif 000006
【図５】
2007156855.tif 000007
【図６】
2007156855.tif 000008
【図７】
2007156855.tif 000009
【図８】
2007156855.tif 000010
【図９】
2007156855.tif 000011