JP2007156855A - 情報処理装置、情報処理方法 - Google Patents

情報処理装置、情報処理方法 Download PDF

Info

Publication number
JP2007156855A
JP2007156855A JP2005351528A JP2005351528A JP2007156855A JP 2007156855 A JP2007156855 A JP 2007156855A JP 2005351528 A JP2005351528 A JP 2005351528A JP 2005351528 A JP2005351528 A JP 2005351528A JP 2007156855 A JP2007156855 A JP 2007156855A
Authority
JP
Japan
Prior art keywords
program
execution
transfer
unit
cpu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2005351528A
Other languages
English (en)
Inventor
Kazuhiko Nishiwaki
和彦 西脇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2005351528A priority Critical patent/JP2007156855A/ja
Publication of JP2007156855A publication Critical patent/JP2007156855A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】コンピュータシステムの起動時間の短縮を図る。
【解決手段】DMA転送によるメインプログラムをロードするためのデータ転送と、CPUによるプログラム実行とを、単位時間あたりにおける所定の時間比率により時分割的に実行していくようにする。そのうえで、CPUが実行すべきプログラムが、既にDMA転送されているか否かを判別するようにして、未だ転送されていないことを判別したときには、単位時間あたりの処理が全てDMA転送となるように制御する。
【選択図】図6

Description

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

Claims (5)

  1. データとしてプログラムを記憶保持し、プログラム実行のためのランダムアクセスが行われないプログラム記憶部と、
    上記プログラム記憶部から読み出されたプログラムが保持され、プログラム実行のためのランダムアクセスが行われるプログラム保持部と、
    上記プログラム記憶部から読み出したプログラムを上記プログラム保持部に保持させるようにして、上記プログラムの転送を行うプログラム転送手段と、
    上記プログラム転送手段によるプログラムの転送が完了する以前のタイミングで、上記プログラム保持部に保持されたプログラムを実行開始していくことが可能にされたプログラム実行手段と、
    上記プログラム転送手段によるプログラムの転送と、上記プログラム実行手段によるプログラムの実行が時分割で実行されるように制御するもので、上記プログラム保持部におけるプログラムの保持状況に応じて、上記プログラム転送手段によるプログラムの転送期間と、上記プログラム実行手段によるプログラムの実行期間との少なくとも、何れか一方についての変更設定が行われるように制御する制御手段と、
    を備えることを特徴とする情報処理装置。
  2. 上記制御手段は、
    上記プログラム実行手段がプログラムを実行可能とされる、上記プログラム保持部におけるプログラムの保持状況であるか否かについて判別する判別手段を備え、この判別手段により、上記プログラム実行手段がプログラムを実行可能な上記プログラム保持部におけるプログラムの保持状況であることが判別された場合には、単位時間を所定の第1の比率により分割した時間ごとに、上記プログラム転送手段によるプログラムの転送と、上記プログラム実行手段によるプログラムの実行が行われるように制御し、上記判別手段により、上記プログラム実行手段がプログラムを実行可能な上記プログラム保持部におけるプログラムの保持状況ではないことが判別された場合には、上記第1の比率よりも大きな比率を与えた所定の第2の比率により上記単位時間を分割した時間ごとに、上記プログラム転送手段によるプログラムの転送と、上記プログラム実行手段によるプログラムの実行が行われるように制御する、
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 上記判別手段は、
    上記プログラム転送手段により転送されたプログラムのデータ量である転送データ量を計測する計測手段と、
    上記プログラム実行手段によるプログラムの実行経過状況を通知する通知手段と、
    上記計測手段により計測された上記転送データ量と、上記通知手段により通知されたプログラムの実行経過状況に対応するプログラムの実行アドレスとを比較して、上記転送データ量が上記実行アドレスに上記プログラムが転送されているか否かについて判別することにより、上記プログラム実行手段がプログラムを実行可能とされる、上記プログラム保持部におけるプログラムの保持状況であるか否かについての判別を行うようにされるデータ量比較判別手段と、
    を備えて構成されることを特徴とする請求項2に記載の情報処理装置。
  4. 上記制御手段は、
    上記プログラム転送手段が所定データ量のプログラムを転送する動作と、これに続く、上記プログラム実行手段により転送されたプログラムの全データを実行させる動作とを時分割で実行させると共に、
    上記プログラム保持部におけるプログラムの保持状況として、上記プログラム保持部が現段階で保持しているプログラムのデータ量に基づいて、上記プログラム転送手段が転送するプログラムのデータ量を可変するようにされる、
    ことを特徴とする請求項1に記載の情報処理装置。
  5. データとしてプログラムを記憶保持し、プログラム実行のためのランダムアクセスが行われないプログラム記憶部から読み出したプログラムを、プログラム実行のためのランダムアクセスが行われるプログラム保持部に保持させるようにして、上記プログラムの転送を行うプログラム転送手順と、
    上記プログラム転送手順によるプログラムの転送が完了する以前のタイミングで、上記プログラム保持部に保持されたプログラムを実行開始していくようにされるプログラム実行手順と、
    上記プログラム転送手順によるプログラムの転送と、上記プログラム実行手順によるプログラムの実行が時分割で実行されるように制御するもので、上記プログラム保持部におけるプログラムの保持状況に応じて、上記プログラム転送手順によるプログラムの転送期間と、上記プログラム実行手順によるプログラムの実行期間との少なくとも、何れか一方についての変更設定が行われるように制御する制御手順と、
    を実行することを特徴とする情報処理方法。
JP2005351528A 2005-12-06 2005-12-06 情報処理装置、情報処理方法 Pending JP2007156855A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005351528A JP2007156855A (ja) 2005-12-06 2005-12-06 情報処理装置、情報処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005351528A JP2007156855A (ja) 2005-12-06 2005-12-06 情報処理装置、情報処理方法

Publications (1)

Publication Number Publication Date
JP2007156855A true JP2007156855A (ja) 2007-06-21

Family

ID=38241138

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005351528A Pending JP2007156855A (ja) 2005-12-06 2005-12-06 情報処理装置、情報処理方法

Country Status (1)

Country Link
JP (1) JP2007156855A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008217524A (ja) * 2007-03-06 2008-09-18 Ricoh Co Ltd データ転送方法,データ転送装置,電子機器および画像形成装置
JP2009070248A (ja) * 2007-09-14 2009-04-02 Ricoh Co Ltd 画像処理装置及び画像処理方法
US9250678B2 (en) 2009-08-31 2016-02-02 Nintendo Co., Ltd. Information processing apparatus, and computer-readable storage medium having startup/shutdown control program stored therein

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008217524A (ja) * 2007-03-06 2008-09-18 Ricoh Co Ltd データ転送方法,データ転送装置,電子機器および画像形成装置
JP2009070248A (ja) * 2007-09-14 2009-04-02 Ricoh Co Ltd 画像処理装置及び画像処理方法
US8495364B2 (en) 2007-09-14 2013-07-23 Ricoh Company, Limited Image processing apparatus and method using electronic signature information
US9250678B2 (en) 2009-08-31 2016-02-02 Nintendo Co., Ltd. Information processing apparatus, and computer-readable storage medium having startup/shutdown control program stored therein

Similar Documents

Publication Publication Date Title
TWI728254B (zh) 影像資料傳輸系統及影像資料傳輸方法
US8117476B2 (en) Information processing apparatus, startup method and computer program
JP2010198407A (ja) 情報処理装置、およびデータ記録制御方法、並びにプログラム
US8543777B2 (en) Memory control apparatus, memory control method, and computer program with refresh commands at optimum intervals
JP2006268738A (ja) 情報処理装置、修正プログラム生成方法および修正プログラム生成プログラム
JP2007156855A (ja) 情報処理装置、情報処理方法
JP6166053B2 (ja) 半導体デバイス、通信システム、手振れ補正コントローラ、撮像装置、電子機器
JP2011124916A (ja) 撮像装置及びその制御方法、並びにプログラム
US20140244887A1 (en) Data processing apparatus and control method
US20060047866A1 (en) Computer system having direct memory access controller
JP5202388B2 (ja) 携帯機器および撮像装置
US20060206637A1 (en) Electronic apparatus and control method
JP2006189919A (ja) 電子機器、制御方法及びコンピュータプログラム
JP4930825B2 (ja) 撮像装置及びデータ転送装置
US11570395B2 (en) Recording and reproducing apparatus and method of controlling recording and reproducing apparatus
JP2006109224A (ja) 撮像装置
EP3829157B1 (en) Recording apparatus, method of controlling recording apparatus, and storage medium
US20240069763A1 (en) Memory controller and memory access method
JP6769662B2 (ja) ハードウェアタイマ、制御方法及びプログラム
JP2009301319A (ja) マルチプロセッサシステム
JP2008225894A (ja) Sdramコントローラ
JP4478518B2 (ja) デジタルカメラ及びその制御方法
JP2005242929A (ja) 共有メモリのアクセス方法及びデータ処理装置
JP2017027506A (ja) データ処理装置及びデータ処理方法
JP5647318B2 (ja) 情報処理装置、情報処理装置の制御方法、及びプログラム