(57)【要約】【課題】複数のＣＰＵの実行プログラムを外部記憶部から実行する際の実行遅延を抑制する。【解決手段】情報処理装置は、複数のプロセッサと、前記複数のプロセッサそれぞれの実行プログラムを記憶する不揮発性の内部記憶部と、セクタ単位でのデータの読み出し、及び書き込みを実行し、前記複数のプロセッサのそれぞれの実行プログラムを記憶する不揮発性の着脱可能な外部記憶部と、前記内部記憶部、及び前記外部記憶部のいずれから前記複数のプロセッサの前記実行プログラムを起動するかを選択する選択部と、前記複数のプロセッサ毎に設けられ、前記外部記憶部から前記実行プログラムが、起動されるよう選択された場合に、前記外部記憶部からのデータの読み出し結果を記憶するランダムアクセス可能な一時記憶部とを備える。【選択図】図１
2014048751.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサと、
前記複数のプロセッサそれぞれの実行プログラムを記憶する内部記憶部と、
予め定められた容量の記憶領域単位でのデータの読み出し、及び書き込みを実行し、前記複数のプロセッサのそれぞれの実行プログラムを記憶する着脱可能な外部記憶部と、
前記内部記憶部、及び前記外部記憶部のいずれから前記複数のプロセッサの前記実行プログラムを起動するかを選択する選択部と、
前記複数のプロセッサ毎に設けられ、前記外部記憶部から前記実行プログラムが、起動されるよう選択された場合に、前記外部記憶部から読み出したデータを記憶するランダムアクセス可能な一時記憶部と
を備えることを特徴とする情報処理装置。
【請求項２】
前記外部記憶部から前記実行プログラムが、起動されるように選択された場合に、前記複数のプロセッサからの前記実行プログラムを指定した読み出し要求を検出する検出部と、
検出した前記読み出し要求で指定された前記実行プログラムが、前記一時記憶部に記憶されている場合には、前記指定された前記実行プログラムのデータを前記読み出し要求を実行した前記プロセッサに対して送信し、
検出した前記読み出し要求で指定された前記実行プログラムが、前記一時記憶部に記憶されていない場合には、前記実行プログラムが記憶されている前記外部記憶部の前記記憶領域から読み出したデータを前記読み出し要求を実行した前記プロセッサに対して送信するとともに、前記プロセッサ毎に設けられた対応する前記一時記憶部に記憶させる読み書き制御部と、
をさらに備えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記一時記憶部は、前記複数のプロセッサそれぞれに対して、少なくとも２単位以上の前記記憶領域のデータを記憶可能であり、
前記読み書き制御部は、前記読み出し要求があった前記実行プログラムのデータ、及び前記実行プログラムの記憶された前記記憶領域に隣接する次の前記記憶領域に記憶される前記実行プログラムのデータを前記一時記憶部に記憶させる
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記一時記憶部は、前記複数のプロセッサが共有する共有記憶部を有しており、前記複数のプロセッサのうち、スリープ状態となったプロセッサがある場合、前記読み出し要求で指定された動作中のほかの前記プロセッサの前記実行プログラムを前記共有記憶部に記憶する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記一時記憶部は、前記複数のプロセッサの前記実行プログラムのサブルーチンを記憶するサブルーチン記憶部をさらに備える
ことを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記一時記憶部は、前記外部記憶部から前記一時記憶部への転送速度から算出されるデータの転送時間が、前記複数のプロセッサの動作周波数、及び１命令の演算で使用するデータのビット幅から算出されるデータの処理時間よりも長くなる場合に、現在実行中の前記実行プログラム以外の実行プログラムを記憶可能な新たな記憶領域を備える
ことを特徴とする請求項１に記載の情報処理装置。
【請求項７】
前記外部記憶部は、ＳＤカードである
ことを特徴とする請求項１〜６のいずれか１項に記載の情報処理装置。
【請求項８】
複数のプロセッサと、前記複数のプロセッサそれぞれの実行プログラムを記憶する内部記憶部と、予め定められた容量の記憶領域単位でのデータの読み出し、及び書き込みを実行し、前記複数のプロセッサのそれぞれの実行プログラムを記憶する着脱可能な外部記憶部と、前記複数のプロセッサ毎に設けられ、ランダムアクセス可能な一時記憶部と、を備える情報処理装置における情報処理方法であって、
前記内部記憶部、及び前記外部記憶部のいずれから前記複数のプロセッサの前記実行プログラムを起動するかを選択する選択ステップと、
前記外部記憶部から前記実行プログラムが、起動されるよう選択された場合に、前記一時記憶部に対して、前記外部記憶部から読み出したデータを記憶させる記憶ステップと、
を含むことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理方法に関する。
【背景技術】
【０００２】
従来、ソフトウェアの更新、復旧や、不具合解析を目的として、ＳＤカード等の外部記憶部に格納した実行プログラムからブートして、システムを起動する場合がある。このとき、ＳＤカード等のＮＡＮＤ型フラッシュメモリに記憶したデータはセクタ単位でのリードしかできず、ランダムアクセスが発生するプログラムの実行速度が極端に遅くなるという問題が発生する。
【０００３】
そこで、例えば特許文献１においては、実行速度の低下を抑える方法として、ＳＤカード等に格納したプログラムをＲＡＭにロードしてから実行する方法が開示されている。また、特許文献２においては、ＲＡＭを持たない、又はＲＡＭの空き容量が少なく、ＳＤカード等に格納した実行プログラムをＲＡＭにロードできないような装置の場合に、１セクタ分のバッファＲＡＭを設け、ＣＰＵが指定したデータを含むセクタのリード結果をバッファＲＡＭに記憶しておき、次回以降のＣＰＵ指定データがバッファＲＡＭ内に存在する場合には、セクタリードを再実行することなく、指定データをリード可能にする方法が開示されている。さらには、バッファＲＡＭを２セクタ分以上設けておき、ＣＰＵアクセス中のバッファＲＡＭの次セクタの内容を、もう一方のバッファＲＡＭに記憶しておき、この動作を繰り返すことで、連続アドレスに格納されたデータの実行を高速にする方法が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、ＳＤカード等に格納された実行プログラムのセクタ単位のリード結果をバッファＲＡＭに記憶しておく方法では、複数のＣＰＵ間で実行プログラムを格納するＳＤカードを共有するシステムの場合に、それぞれのＣＰＵ用の実行プログラムを格納したＳＤカード上の物理メモリアドレスが離れているため、各ＣＰＵの命令が交互に実行される度にセクタリードが発生し、プログラムの実行速度が遅くなるという問題があった。
【０００５】
本発明は、上記に鑑みてなされたものであって、複数のＣＰＵの実行プログラムをＳＤカードなどの外部記憶部からリードして実行する場合の、実行速度の低下を抑制することのできる情報処理装置及び情報処理方法を提供することにある。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明は、複数のプロセッサと、前記複数のプロセッサそれぞれの実行プログラムを記憶する内部記憶部と、予め定められた容量の記憶領域単位でのデータの読み出し、及び書き込みを実行し、前記複数のプロセッサのそれぞれの実行プログラムを記憶する着脱可能な外部記憶部と、前記内部記憶部、及び前記外部記憶部のいずれから前記複数のプロセッサの前記実行プログラムを起動するかを選択する選択部と、前記複数のプロセッサ毎に設けられ、前記外部記憶部から前記実行プログラムが、起動されるよう選択された場合に、前記外部記憶部から読み出したデータを記憶するランダムアクセス可能な一時記憶部と、を備えることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、複数のＣＰＵの実行プログラムをＳＤカードなどの外部記憶部からリードして実行する場合の、実行速度の低下を抑制することができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、第１の実施形態の情報処理装置の構成を示す図である。
【図２】図２は、第１の実施形態の通常ブート時のメモリマップを示す図である。
【図３】図３は、第１の実施形態のＳＤブート時のメモリマップを示す図である。
【図４】図４は、第１の実施形態のＳＤ制御部の詳細な構成を示す図である。
【図５】図５は、第２の実施形態のＳＤブート時のメモリマップを示す図である。
【図６】図６は、第３の実施形態のＳＤ制御部の詳細な構成を示す図である。
【図７】図７は、第４の実施形態のＳＤ制御部の詳細な構成を示す図である。
【図８】図８は、第４の実施形態のＳＤ制御部の詳細な構成を示す図である。
【発明を実施するための形態】
【０００９】
（第１実施形態）
以下、図面を用いて本発明の第１の実施形態について説明する。本実施形態の情報処理装置１は、第１ＣＰＵ１０、第２ＣＰＵ１１、ＳＤ制御部１２、外部記憶部であるＳＤカード１３、内部記憶部であるＲＯＭ１４、一時記憶部であるＲＡＭ１５、第１アドレス変換部１６、及び第２アドレス変換部１７を備えている。本実施形態においては、第１ＣＰＵ１０は主にデータ処理を実行し、第２ＣＰＵ１１は、主に外部デバイスとのインタフェース制御を実行するが、各ＣＰＵが行う制御の組み合わせは自由に設定することができる。
【００１０】
ＳＤ制御部１２はＳＤカードの規格に準拠して、情報処理装置１に挿入されたＳＤカード１３を制御する。ＳＤカード１３は、通常のデータのほか、情報処理装置１の実行プログラムを記憶している。ＲＯＭ１４も、同様に実行プログラムのデータを記憶している。本実施形態の情報処理装置１にあっては、システムをＲＯＭ１４に記憶された実行プログラムからブートするか（以下、「通常ブート」という。）、ＳＤカード１３に記憶された実行プログラムからブートするか（以下、「ＳＤブート」という。）を選択することができる。通常ブートと、ＳＤブートの切り替えは、外部入力信号（boot_sel）によって行われる。
【００１１】
ＳＤ制御部１２は、ＳＤカード１３に記憶された実行プログラムでシステムをブートする際には、ＣＰＵ１０、１１からの指示がなくても直接ＳＤカード１３のデータのリード、及びライトを制御することができる。第１アドレス変換部１６は、通常ブート時とＳＤブート時とでは、それぞれのブート開始のアドレスを変更し、ＳＤブート時にはＲＯＭ１４へのデータアクセスはできなくなる。第２アドレス変換部１７は、第１ＣＰＵ１０と第２ＣＰＵ１１のブート開始アドレスの競合を回避するために、第２ＣＰＵ１１のブート開始アドレスを変更し、第２ＣＰＵ１１から見たアドレス空間のゼロ番地が、ＲＯＭ１４内の別のアドレスに対応するようにする。
【００１２】
ＲＡＭ１５は、一時的にデータを記憶することのできるランダムアクセス可能な記憶領域であり、第１ＣＰＵ１０、及び第２ＣＰＵ１１が実行した処理が実行されるメモリである。ＲＡＭ１５は、演算結果等のデータを記憶するとともに、ＳＤカード１３からリードしたデータ、及びＳＤカード１３にライトするデータを記憶する。ＳＤカード１３のリード、及びライトはセクタ単位(一般には５１２バイト)であるため、リード、及びライト時に各ＣＰＵ１０、１１の負荷を小さくするために、ＳＤ制御部１２とＲＡＭ１５との間のデータ転送はＣＰＵ１０、１１を介さずに実行することができる。
【００１３】
図２は、通常ブート時(boot_selがネゲート中)における第１ＣＰＵ１０からみたメモリマップを示す図である。図２に示されるように、ＲＯＭ１４に対しては、アドレスh0000_0000〜h0001_FFFFが割り当てられており、ＲＯＭ１４に記憶された第１ＣＰＵ１０用の実行プログラムがh0000_0000〜h0000_FFFFに記憶されるとともに、ＲＯＭ１４に記憶された第２ＣＰＵ１１用の実行プログラムがh0001_0000〜h0001_FFFFに記憶される。ＲＡＭ１５に対しては、アドレスh1000_0000〜h1000_07FFが割り当てられており、ＳＤコントローラ制御レジスタをh2000_0000〜に割り当てている。ＲＭ１５に割り当てられたメモリマップにおける番地のうち、h1000_0000〜h1000_01FFまでがＳＤカード１３からのデータ用のバッファに、h1000_02000〜h1000_07FFまでが、各ＣＰＵ１０、１１が読み出した実行プログラムが実行されるメモリアドレスである。
【００１４】
通常ブート時には、第１ＣＰＵ１０、及び第２ＣＰＵ１１は第１ＣＰＵ１０から見たアドレスh0000_0000に格納した命令をフェッチするようになっている。この際、第２ＣＰＵ１１と接続されているアドレス変換部１７は、第２ＣＰＵ１１側からアドレスh0001_0000がゼロ番地(h0000_0000)に見えるようにアドレスを変換することで、第１ＣＰＵ１０と第２ＣＰＵ１１とのアドレス競合を回避しつつ、第２ＣＰＵ１１においてもブート時の処理を開始させる。
【００１５】
第１ＣＰＵ１０、又は第２ＣＰＵ１１は、ＳＤカード１３のデータにアクセスする際には、メモリマップにおいて割り当てられたＳＤコントローラ制御レジスタ２１１（図４参照）に所定の設定を行い、ＲＡＭ１５の指定されたＳＤデータ用のバッファ領域に、ＳＤカード１３に記憶されたデータを記憶させる。データのライト要求の場合には、ＲＡＭ１５の指定されたＳＤデータ用のバッファ領域にライトしたいデータを置いておき、ＳＤコントローラ制御レジスタ２１１（図４参照）に所定の設定をすることで、ＳＤカード１３にデータをライトすることができる。本実施形態では、リード、及びライトは５１２バイト単位で実行する。なお、セクタの容量は適宜変更することができる。
【００１６】
次に、ＳＤブート時（boot_selがアサート中）の第１ＣＰＵ１０から見たメモリマップについて図３を用いて説明する。図３に示されるように、第１ＣＰＵ１０のブート開始アドレスh0000_0000〜と、第２ＣＰＵ１１のブート開始アドレスh0001_0000〜にはＳＤカード１３に記憶された実行プログラムが各ＣＰＵ１０、１１から見えるようになっている。ここで、ＣＰＵの実行プログラムは、ＳＤカード１３の規格に準拠したファイルフォーマットで定められたユーザーデータ領域に記憶している。ユーザーデータ領域は、ＳＤカード１３の記憶容量毎に異なるアドレスに配置されるため、ＳＤ制御部１２が、ＣＰＵ１０、１１からのリード要求があったアドレスとＳＤカード１３における物理アドレスとの対応関係を参照し、ＳＤカード１３の所望のセクタに記憶されたデータのリードを実行することで、第１ＣＰＵ１０からは図３に示すメモリマップが見えるようになる。ＲＡＭ１５に対するデータのライト、及びリードに関するＳＤコントローラ制御レジスタのアドレス割当の設定は、通常ブート時と同様である。
【００１７】
次に、本実施形態のＳＤブート時の、データのリード、及びライトの制御の詳細を図４を用いて説明する。図４は、ＳＤ制御部１２の詳細な構成を示している。図４に示されるように、ＳＤ制御部１２は、ＳＤコントローラ２１、ＤＭＡコントローラ２２、ＳＤブート制御部２３、及びセレクタ２４、２５、２６、２７を備えている。
【００１８】
ＳＤコントローラ２１は、ＳＤカードの規格に準拠して、ＳＤコントローラ制御レジスタ２１１に設定された設定値に基づいて、ＳＤカード１３を制御する。ＳＤコントローラ制御レジスタ２１１は、ＳＤコントローラ２１に含まれており、第１ＣＰＵ１０、第２ＣＰＵ１１、又はＳＤブート制御部２３からのアクセスを受け、ＳＤコントローラ２２を動作させるためのパラメータ、指令が設定される。また、ＳＤコントローラ制御レジスタ２１１は、メモリマップにおいて所定のアドレス空間(h2000_0000〜)が割り当てられている。
【００１９】
ＤＭＡコントローラ２２は、ＳＤコントローラ２１がＳＤカード１３からリードしたセクタ単位（本実施例では５１２バイト）のデータを、ＳＤブート制御部２３、又はＲＡＭ１５へと転送する。また、ＤＭＡコントローラ２２は、ＳＤカード１３にデータをライトする際には、ＲＡＭ１５に記憶してあるライト用のセクタ単位のデータを取得してＳＤコントローラ２１へ転送し、ＳＤコントローラ２１がＳＤカード１３にデータをライトする。
【００２０】
セレクタ２４は、信号boot_selがネゲートの場合には、ＣＰＵ１０、１１とセレクタ２５との間のアクセスを有効にし、ＣＰＵ１０、１１とＳＤブート制御部２３との間のアクセスを無効にする。一方、信号boot_selがアサートの場合には、セレクタ２４は、ＣＰＵ１０、１１とセレクタ２５との間のアクセスを無効にし、ＣＰＵ１０、１１とＳＤブート制御部２３との間のアクセスを有効にする。
【００２１】
セレクタ２５は、信号boot_selがネゲートの場合には、セレクタ２４とＳＤコントローラ２２との間のアクセスを有効にし、ＳＤブート制御部２３とＳＤコントローラ２１との間のアクセスを無効にする。一方、信号boot_selがアサートの場合には、セレクタ２５は、セレクタ２４とＳＤコントローラ２１との間のアクセスを無効にし、ＳＤブート制御部２３とＳＤコントローラ２１との間のアクセスを有効にする。
【００２２】
セレクタ２６は、信号boot_selがネゲートの場合には、ＲＡＭ１５とセレクタ２７との間のアクセスを有効にし、ＲＡＭ１５とＳＤブート制御部２３との間のアクセスを無効にする。一方、信号boot_selがアサートの場合には、セレクタ２６は、ＲＡＭ１５とセレクタ２７との間のアクセスを無効にし、ＲＡＭ１５とＳＤブート制御部２３との間のアクセスを有効にする。
【００２３】
セレクタ２７は、信号boot_selがネゲートの場合には、セレクタ２６とＤＭＡコントローラ２２との間のアクセスを有効にし、ＳＤブート制御部２３とＤＭＡコントローラ２２との間のアクセスを無効にする。一方、信号boot_selがアサートの場合には、セレクタ２７は、セレクタ２６とＤＭＡコントローラ２２との間のアクセスを無効にし、ＳＤブート制御部２３とＤＭＡコントローラ２２との間のアクセスを有効にする。
【００２４】
したがって、信号boot_selがネゲート、すなわち通常ブート時には、ＲＡＭ１５とＤＭＡコントローラ２２との間の接続が有効となっているため、ＳＤカード１３に記憶された通常のデータのライド、及びリードは可能なものの、ＳＤブート制御部２３へのアクセスができないようになっている。一方、信号boot_selがアサート、すなわちＳＤブート時には、ＣＰＵ１０、１１とＳＤブート制御部２３とが接続されており、ＳＤブート制御部２３は、各ＣＰＵ１０、１１からのアクセスを契機に動作する。また、この場合は、ＲＡＭ１５、及びＤＭＡコントローラ２２と、ＳＤブート制御部２３が直接接続されていることから、ＣＰＵ１０、１１を介さずにＲＡＭ１５へのデータのリード、及びライトが可能となる。ＳＤブート制御部２３は、内部に、第１ＲＡＭ（Ａ）２３１、第１ＲＡＭ（Ｂ）２３２、第２ＲＡＭ（Ａ）２３３、及び第２ＲＡＭ（Ｂ）２３４を備えている。
【００２５】
ＳＤブート時において、ＳＤブート制御部２３は、第１ＣＰＵ１０用の実行プログラムのアドレス空間(h0000_0000〜h0000_FFFF)へのリードアクセスを検出すると、第１ＣＰＵ１０が指定するデータが第１ＲＡＭ（Ａ）２３１に記憶してあるか否かを判別し、データが記憶してあれば、そのデータを第１ＣＰＵ１０へと送信する。また、このような第１ＣＰＵ１１からのデータのリードアクセスの検出、及びデータ送信と並行して、ＳＤブート制御部２３は、第１ＲＡＭ（Ａ）２３１に記憶したセクタの次セクタのデータをＳＤカード１３からリードし、第１ＲＡＭ（Ｂ）２３２に記憶する。
【００２６】
一方、第１ＣＰＵ１０の要求するデータが、第１ＲＡＭ（Ａ）２３１に記憶していないと判定された場合は、ＳＤブート制御部２３は、第１ＲＡＭ（Ｂ）２３２に記憶してあるかを判別し、データが記憶してあれば、そのデータを第１ＣＰＵ１０へと送信する。また、送信と並行して、第１ＲＡＭ（Ｂ）２３２に記憶したセクタの次セクタのデータをＳＤカード１３からリードし、第１ＲＡＭ（Ａ）２３１に記憶する。
【００２７】
また、もし第１ＣＰＵ１０の要求するデータが、第１ＲＡＭ（Ａ）２３１にも第１ＲＡＭ（Ｂ）２３２にも記憶されていない場合、ＳＤブート制御部２３は、要求されたデータがＳＤカード１３のどのセクタに記憶してあるかを判別し、対象セクタをリードするために必要なパラメータ、指令をＳＤコントローラ制御レジスタ２１１に設定することで、ＳＤコントローラ２１が動作し、所望のデータを含むセクタをリードする。ＳＤブート制御部２３は、リードしたセクタデータを第１ＲＡＭ（Ａ）２３１に記憶するとともに、第１ＣＰＵ１０へと送信する。
【００２８】
以上に述べた動作を繰り返し実行することにより、第１ＣＰＵ１０からのデータのリード要求がシーケンシャルアクセスであり、かつ、セクタリードに要する時間が５１２バイトのデータを第１ＣＰＵ１０がリードする時間よりも短い場合は、セクタリードによる第１ＣＰＵ１０の実行遅延は発生しないこととなる。
【００２９】
以上に述べた処理手順は、第２ＣＰＵ１１からのリード要求においても同様である。ＳＤブート時において、ＳＤブート制御部２３は、第２ＣＰＵ１１用の実行プログラムのアドレス空間(h0001_0000〜h0001_FFFF)へのリードアクセスを検出すると、第２ＣＰＵ１１が要求するデータが第２ＲＡＭ（Ａ）２３３に記憶してあるか否かを判別し、データが記憶してあれば、そのデータを第２ＣＰＵ１１へと送信する。このような第２ＣＰＵ１１からのリードアクセスの検出、及びデータ送信と並行して、ＳＤブート制御部２３は、第２ＲＡＭ（Ａ）２３３に記憶したセクタの次セクタのデータをＳＤカード１３からリードし、第２ＲＡＭ（Ｂ）２３４に記憶する。
【００３０】
一方、第２ＣＰＵ１１の要求するデータが、第２ＲＡＭ（Ａ）２３３に記憶していなかった場合、ＳＤブート制御部２３は、第２ＲＡＭ（Ｂ）２３４に当該データが記憶してあるか否かを判別し、データが記憶してあれば、そのデータを第２ＣＰＵ１１へ送信する。また、送信と並行して、ＳＤブート制御部２３は、第２ＲＡＭ（Ｂ）２３４に記憶したセクタの次セクタのデータをＳＤカード１３からリードし、第２ＲＡＭ（Ａ）２３３に記憶する。
【００３１】
一方、第２ＣＰＵ１１の要求するデータが、第２ＲＡＭ２３３にも第２ＲＡＭ２３４にも記憶されていない場合は、ＳＤブート制御部２３は、第２ＣＰＵ１１の指定するデータがＳＤカード１３のどのセクタに記憶してあるかを判別し、対象セクタをリードするために必要なパラメータ、指令をＳＤコントローラ制御レジスタ２１１に設定する。そして、ＳＤコントローラ２１は、ＳＤコントローラ制御レジスタ２１１の設定に従って、所望のデータを含むセクタをリードする。ＳＤブート制御部２３は、リードしたセクタデータ（５１２バイト）を、第２ＲＡＭ（Ａ）２３３に記憶するとともに、第２ＣＰＵ１１へ送信する。
【００３２】
以上に述べた動作を繰り返し実行することにより、第２ＣＰＵ１１からのデータのリード要求がシーケンシャルアクセスであり、かつ、セクタリードに要する時間が５１２バイトのデータを第２ＣＰＵ１１がリードする時間よりも短い場合は、セクタリードによる第２ＣＰＵ１１の実行遅延は発生しないこととなる。
【００３３】
次に、ＳＤコントローラ制御レジスタ２１１へのリードアクセス、ライトアクセスがあった場合について説明する。ＳＤブート制御部２３は、ＳＤコントローラ制御レジスタ２１１のアドレス空間(h2000_0000〜)へのリードアクセス、または、ライトアクセスを検出すると、ＣＰＵ１０、１１から送られてきたデータをそのままセレクタ２５に転送する。ＳＤブート時には、上述のようにＣＰＵ１０、１１とセレクタ２５との間のアクセスは無効となっているため、セレクタ２５、すなわちＳＤコントローラ２１へとデータを送ることは出来ないが、ＳＤブート制御部２３が仲介することで、ＣＰＵ１０、１１は通常ブート時と同じようにＳＤコントローラ制御レジスタ２１１にアクセスすることができるようになる。
【００３４】
第１ＣＰＵ１０、及び第２ＣＰＵ１１は、ＳＤコントローラ制御レジスタ２１１のアドレス空間(h2000_0000〜)へとアクセスすることによりＳＤカード１３のリード、及びライト要求を実行する場合には、そのリード、及びライトの対象となるデータは、各ＲＡＭ２３１〜２３４には記憶せずに、セレクタ２６、とセレクタ２７を経由して、ＲＡＭ１５に転送する。
【００３５】
以上に述べた本実施形態の情報処理装置１の作用効果について説明する。通常、ＳＤブート時においては、第１ＣＰＵ１０と第２ＣＰＵ１１の実行プログラムは、ＳＤカードの各セクタからセクタ単位で読み出されるため、それぞれの実行プログラムの記憶されている物理アドレスが離れている場合は、リード時間がかかってしまっていた。そこで、本実施形態の情報処理装置１にあっては、それぞれの実行プログラムをＳＤブート制御部２３のＲＡＭ２３１〜２３４に前もってリードしておき、実行プログラムのデータが要求された場合には、ＳＤカード１３ではなくＲＡＭ２３１〜２３４の該当アドレスからデータをリードすることとしたため、ＳＤカード１３のセクタ単位のリードを省略することができ、プログラムの実行速度の低下を抑制することができる。
【００３６】
なお、本実施形態では第１ＣＰＵ１０と第２ＣＰＵ１１の２個のＣＰＵを使用する構成について説明したが、ＣＰＵを３個以上使用する構成の場合も、各ＣＰＵ毎のバッファＲＡＭ領域を追加することで、本実施形態で説明した構成を３個以上のＣＰＵを搭載するシステムに拡張することができる。
【００３７】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。第２の実施形態においては、リードした実行プログラムごとに専用のバッファＲＡＭ領域を設けるのではなく、共通のＲＡＭ１５上に実行プログラムのリード結果をセクタ単位で格納する点が異なっている。図５は、ＳＤブート時のメモリマップを示した図である。図５に示されるように、通常動作時のＣＰＵのワーク領域として使用していたＲＡＭ１５の一部をＳＤカード１３からリードした実行プログラムの結果をセクタ単位で格納する（アドレスh1000_0000〜h1000_07FFF）。
【００３８】
この場合、処理手順は以下のようになる。すなわち、ＳＤブート時において、ＳＤブート制御部２３は、第１ＣＰＵ１０用の実行プログラムのアドレス空間(h0000_0000〜h0000_FFFF)へのリードアクセスを検出すると、第１ＣＰＵ１０用の実行プログラムのアドレス空間(h0000_0000〜h0000_FFFF)へのリードアクセスを検出すると、第１ＣＰＵ１０が指定するデータがＲＡＭ１５のアドレス1000_0000〜1000_01FFに記憶してあるか否かを判別し、データが記憶してあれば、そのデータを第１ＣＰＵ１０へと送信する。また、このような第１ＣＰＵ１１からのデータのリードアクセスの検出、及びデータ送信と並行して、ＳＤブート制御部２３は、ＲＡＭ１５のアドレス1000_0000〜1000_01FFに記憶したセクタの次セクタのデータをＳＤカード１３からリードし、ＲＡＭ１５のアドレス1000_0200〜1000_03FFに記憶する。
【００３９】
一方、第１ＣＰＵ１０の要求するデータが、ＲＡＭ１５のアドレス1000_0000〜1000_01FFに記憶していないと判定された場合は、ＳＤブート制御部２３は、ＲＡＭ１５のアドレス1000_0200〜1000_03FFに記憶してあるかを判別し、データが記憶してあれば、そのデータを第１ＣＰＵ１０へと送信する。また、送信と並行して、ＲＡＭ１５のアドレス1000_0200〜1000_03FFに記憶したセクタの次セクタのデータをＳＤカード１３からリードし、ＲＡＭ１５のアドレス1000_0000〜1000_01FFに記憶する。
【００４０】
また、もし第１ＣＰＵ１０の要求するデータが、ＲＡＭ１５のアドレス1000_0000〜1000_01FFにもＲＡＭ１５のアドレス1000_0200〜1000_03FFにも記憶されていない場合、ＳＤブート制御部２３は、要求されたデータがＳＤカード１３のどのセクタに記憶してあるかを判別し、対象セクタをリードし、ＲＡＭ１５のアドレス1000_0000〜1000_01FFに記憶し、要求されたデータを第１ＣＰＵ１０へと送信する。
【００４１】
以上に述べた動作を繰り返し実行することにより、第１ＣＰＵ１０からのデータのリード要求がシーケンシャルアクセスであり、かつ、セクタリードに要する時間が５１２バイトのデータを第１ＣＰＵ１０がリードする時間よりも短い場合は、セクタリードによる第１ＣＰＵ１０の実行遅延は発生しないこととなる。
【００４２】
以上に述べた処理手順は、第２ＣＰＵ１１からのリード要求においても同様である。ＳＤブート制御部２３は、第２ＣＰＵ１１用の実行プログラムのアドレス空間(h0001_0000〜h0001_FFFF)へのリードアクセスを検出すると、第２ＣＰＵ１１が要求するデータがＲＡＭ１５のアドレス1000_0400〜1000_05FFに記憶してあるか否かを判別し、データが記憶してあれば、そのデータを第２ＣＰＵ１１へと送信する。このような第２ＣＰＵ１１からのリードアクセスの検出、及びデータ送信と並行して、ＳＤブート制御部２３は、ＲＡＭ１５のアドレス1000_0400〜1000_05FFに記憶したセクタの次セクタのデータをＳＤカード１３からリードし、ＲＡＭ１５のアドレス1000_0600〜1000_07FFに記憶する。
【００４３】
一方、第２ＣＰＵ１１の要求するデータが、ＲＡＭ１５のアドレス1000_0400〜1000_05FFに記憶していなかった場合、ＳＤブート制御部２３は、ＲＡＭ１５のアドレス1000_0600〜1000_07FFに当該データが記憶してあるか否かを判別し、データが記憶してあれば、そのデータを第２ＣＰＵ１１へ送信する。また、送信と並行して、ＳＤブート制御部２３は、ＲＡＭ１５のアドレス1000_0600〜1000_07FFに記憶したセクタの次セクタのデータをＳＤカード１３からリードし、ＲＡＭ１５のアドレス1000_0400〜1000_05FFに記憶する。
【００４４】
一方、第２ＣＰＵ１１の要求するデータが、ＲＡＭ１５のアドレス1000_0400〜1000_05FFにもＲＡＭ１５のアドレス1000_0600〜1000_07FFにも記憶されていない場合は、ＳＤブート制御部２３は、要求データがＳＤカード１３のどのセクタに記憶してあるかを判別し、対象セクタをリードし、ＲＡＭ１５のアドレス1000_0400〜1000_05FFに記憶し、要求されたデータを第２ＣＰＵ１１へと送信する。
【００４５】
以上に述べた動作を繰り返し実行することにより、第２ＣＰＵ１１からのデータのリード要求がシーケンシャルアクセスであり、かつ、セクタリードに要する時間が５１２バイトのデータを第２ＣＰＵ１１がリードする時間よりも短い場合は、セクタリードによる第２ＣＰＵ１１の実行遅延は発生しないこととなる。
【００４６】
このような構成にすることで、ＳＤブート用に専用のバッファＲＡＭを設ける必要がなくなる。
【００４７】
（第３の実施形態）
次に、本実施形態の第３の実施形態について図６を用いて説明する。第３の実施形態においては、図６に示されるように、各ＣＰＵ１０、１１用の実行プログラムそれぞれにおいて、実行頻度の高いサブルーチンを記憶するバッファ用の第１ＲＡＭ（ｃ）２３５、及び第２ＲＡＭ（ｃ）２３６を新たに設けている。第１ＲＡＭ（ｃ）２３５には、第１ＣＰＵ１０用の実行プログラムにおいて使用頻度の高いサブルーチンが記憶されるとともに、第２ＲＡＭ（ｃ）２３６には、第２ＣＰＵ１１用の実行プログラムにおいて使用頻度の高いサブルーチンが記憶されている。
【００４８】
第１ＲＡＭ（ｃ）２３５、及び第２ＲＡＭ（ｃ）２３６は、サブルーチンの記憶用の領域であり、他の実行プログラムがリードされても、この領域には上書きされることはない。第１ＲＡＭ（ｃ）２３５、及び第２ＲＡＭ（ｃ）２３６へのサブルーチンの記憶は、例えばＳＤブートによりシステムが起動された際に、ＳＤブート制御部２３が自動的に記憶するようにしてもよい。
【００４９】
通常、サブルーチンのセクタと、リードされてバッファＲＡＭ上にある実行プログラムとがＳＤカード１３の別セクタに記憶されている場合、実行プログラムはサブルーチンを呼び出すたびに、ＳＤカードの１３の該当する物理アドレスに対してリード要求を出す必要があるため、データの転送速度に依存する実行遅延が生じる可能性がある。本実施形態においては、サブルーチンがバッファＲＡＭ上に記憶されていることから、サブルーチンを実行するためのジャンプ命令が実行される度に発生していたＳＤカード１３からのセクタリードを省略することができ、プログラム実行速度の低下を抑制することができる。
【００５０】
（第４の実施形態）
次に、本発明の第４の実施形態について図７を用いて説明する。図７に示されるように、本実施形態においては、第１ＲＡＭ（Ａ）２３１、及び第１ＲＡＭ（Ｂ）２３２に変えて、兼用ＲＡＭ（Ａ）２３７、及び兼用ＲＡＭ（Ｂ）２３８を新たに設けている。システムが待機状態に遷移すると、第１ＣＰＵ１０が動作を停止し、第２ＣＰＵ１１のみで装置が動作する場合がある。
【００５１】
このとき、第１ＣＰＵ１０用の実行プログラムを兼用ＲＡＭ（Ａ）２３７、及び兼用ＲＡＭ（Ｂ）２３８に記憶する必要がなくなるので、兼用ＲＡＭ（Ａ）２３７、及び兼用ＲＡＭ（Ｂ）２３８に、第２ＣＰＵ１１用の実行プログラムを記憶させるようにする。そうすると、第２ＣＰＵ１１は、これまで２つのセクタに記憶された実行プログラムをバッファＲＡＭ上に保持していたのが、４つのセクタに記憶された実行プログラムを保持することができるようになる。そのため、実行プログラムから他のセクタの実行プログラムへのジャンプ命令が発生した場合に、ジャンプ先のプログラムがＳＤブート制御部２３の内部のＲＡＭに記憶してある確率が高くなり、第２ＣＰＵ１１のプログラム実行速度の低下を抑制することができるようになる。
【００５２】
（第５の実施形態）
次に、第５の実施形態について説明する。第５の実施形態においては、第１ＣＰＵ１０の実行プログラムの記憶領域として、新たに第１ＲＡＭ（Ｃ）２３５、第１ＲＡＭ（Ｄ）２３９、第１ＲＡＭ（Ｅ）２４０を設けている。一方、第２ＣＰＵ１１の実行プログラム用の記憶領域は２セクタ分のみである。
【００５３】
第１ＲＡＭ（Ｅ）２４０は、第１ＣＰＵ１０の実行プログラム用のサブルーチン用の記憶領域である。第２ＣＰＵ１１の実行プログラムは実行頻度が高いサブルーチンを本実施形態では有さないため、サブルーチン用の記憶領域は設けていない。
【００５４】
また、ＣＰＵ１０、１１の処理能力が高い場合、ＳＤブート制御部２３内の各ＲＡＭに格納された実行プログラムを実行する時間よりも、ＳＤカード１３からバッファ用のＲＡＭに次に実行すべき実行プログラムのデータ(プログラムコード)を転送する時間の方が長くなり、次セクタのデータの転送が完了するまでの待ち時間が発生する場合が存在する。このようなＳＤカード１３からバッファ用のＲＡＭへの転送速度が処理のボトルネックとなる問題を回避するために、本実施形態では、追加した第１ＲＡＭ（Ｃ）２３５と第１ＲＡＭ（Ｄ）２３９が設けられている。
【００５５】
すなわち、第１ＣＰＵ１０が第１ＲＡＭ（Ｅ）２４０に格納したサブルーチンプログラムを実行したり、割り込み待ち等の待機中であったりした場合に、現在実行中の実行プログラムのＳＤカード１３における次セクタ、次々セクタ、次々々セクタの内容を、第１ＲＡＭ（Ａ）２３１、第１ＲＡＭ（Ｂ）２３２、第１ＲＡＭ（Ｃ）２３５、及び第１ＲＡＭ（Ｄ）２３９のうち、現在実行中の実行プログラムを記憶しているバッファ用のＲＡＭ以外(サブルーチン実行中の場合は、サブルーチンを呼び出した実行プログラム以外)のＲＡＭに記憶しておくことで、セクタリードの完了を待つ頻度を減少させることができる。
【００５６】
例えば第１ＣＰＵ１０は、動作周波数が１００ＭＨｚ（１０ｎｓ／クロック）、ビット幅が３２ビットであり、第２ＣＰＵ１１は、動作周波数が２０ＭＨｚ（５０ｎｓ／クロック）、ビット幅が１６ビットであるとする。また、各バッファ用のＲＡＭのリードは１クロックサイクルで可能であるとする。また、第１ＲＡＭ（Ａ）〜（Ｅ）は、データ幅が３２ビット、アドレスバス幅が７ビット、記憶容量が５１２バイトであり、第２ＲＡＭ（Ａ）〜（Ｂ）は、データ幅が１６ビット、アドレスバス幅８ビット、記憶容量が５１２バイトであるとする。また、ＳＤカード１３から第１ＲＡＭ、第２ＲＡＭへのデータの転送速度は、５０メガバイト／ｓの場合を考える。
【００５７】
このとき、実行プログラムのセクタ単位のデータ量である５１２バイトのデータ(プログラムコード)をＳＤカード１３から第１ＲＡＭ、又は第２ＲＡＭに転送する際に要する時間は、５１２バイト÷５０メガバイト／ｓ＝１０．２４ｕｓである。
【００５８】
また、第１ＣＰＵ１０、及び第２ＣＰＵ１１が、第１ＲＡＭ、及び第２ＲＡＭに記憶した実行プログラムのセクタ単位のデータを実行する時間を以下に計算する。５１２バイトの第１ＲＡＭ（Ａ）〜（Ｄ）には、実行プログラムの実行命令が、５１２バイト（４０９６ビット）÷３２ビット＝１２８個記憶されている。また、５１２バイトの第２ＲＡＭ（Ａ）、（Ｂ）には、実行プログラムの実行命令が、５１２バイト（４０９６ビット）÷１６ビット＝２５６個含まれている。
【００５９】
ここで、１つの実行命令の実行に平均５クロック要すると仮定すると、第１ＣＰＵ１０が第１ＲＡＭに格納したデータを実行するために要する時間は、１２８［命令］×５［クロック/命令］×１０［ns/クロック］＝６．４ｕｓである。したがって、データ処理時間である６．４ｕｓが、データ転送時間である１０．２４ｕｓよりも短いことから、次に処理すべき実行プログラムを次セクタから先読みしておくための動作が間に合わず、第１ＣＰＵ１０はＳＤカード１３から次セクタのデータが転送されるまで待機する必要があり、データ転送速度がボトルネックとなる。
【００６０】
一方、第２ＣＰＵ１１が第２ＲＡＭに格納したデータを実行するために要する時間は、２５６[命令]×５［クロック／命令］×５０［ｎｓ／クロック］＝６４ｕｓである。したがって、第２ＣＰＵ１１のデータ処理速度は、ＳＤカード１３から第２ＲＡＭへの転送時間（１０．２４ｕｓ）よりも長いため、次セクタの先読み動作を完了することができ、第２ＣＰＵ１１は転送待ち時間なしで連続して命令を実行することができる。
【００６１】
以上、述べたように、各ＣＰＵの動作周波数と、１命令の演算で使用するデータ幅のビット数とから算出されるデータの処理時間が、ＳＤカード１３から第１ＲＡＭ、第２ＲＡＭへの転送速度から算出されるデータの転送時間よりも短くなるか否かによって、データのセクタ単位で先読みしておくためのＲＡＭの記憶領域の追加の要否を判断することができる。
【００６２】
また、サブルーチンの実行間隔が長い、又は、割り込み待ち等の待機時間が長い場合には、先読みするデータを記憶するバッファＲＡＭの容量を増やすことで、ＳＤカード１３からの転送完了待ちが発生する頻度を低下させることができるようになる。
【符号の説明】
【００６３】
１  情報処理装置
１０  第１ＣＰＵ
１１  第２ＣＰＵ
１２  ＳＤ制御部
１３  ＳＤカード
１４  ＲＯＭ
１５  ＲＡＭ
１６  第１アドレス変換部
１７  第２アドレス変換部
２３１  第１ＲＡＭ（Ａ）
２３２  第１ＲＡＭ（Ｂ）
２３３  第２ＲＡＭ（Ｃ）
２２３  第２ＲＡＭ（Ｄ）
２１  ＳＤコントローラ
２２  ＤＭＡコントローラ
２３  ＳＤブート制御部
２４  セレクタ
２５  セレクタ
２６  セレクタ
２７  セレクタ
２１１  コントローラ制御レジスタ
【先行技術文献】
【特許文献】
【００６４】
【特許文献１】特開２００５−０１０９４２号公報
【特許文献２】特開２００６−００４３８７号公報
【特許文献３】特開２００４−２２０５７５号公報
【図１】
2014048751.tif 000003
【図２】
2014048751.tif 000004
【図３】
2014048751.tif 000005
【図４】
2014048751.tif 000006
【図５】
2014048751.tif 000007
【図６】
2014048751.tif 000008
【図７】
2014048751.tif 000009
【図８】
2014048751.tif 000010