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

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

Info

Publication number
JP2014048751A
JP2014048751A JP2012189223A JP2012189223A JP2014048751A JP 2014048751 A JP2014048751 A JP 2014048751A JP 2012189223 A JP2012189223 A JP 2012189223A JP 2012189223 A JP2012189223 A JP 2012189223A JP 2014048751 A JP2014048751 A JP 2014048751A
Authority
JP
Japan
Prior art keywords
storage unit
data
execution program
processors
ram
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.)
Granted
Application number
JP2012189223A
Other languages
English (en)
Other versions
JP5949330B2 (ja
Inventor
Yoshitaka Saga
嘉孝 嵯峨
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.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2012189223A priority Critical patent/JP5949330B2/ja
Publication of JP2014048751A publication Critical patent/JP2014048751A/ja
Application granted granted Critical
Publication of JP5949330B2 publication Critical patent/JP5949330B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】複数のCPUの実行プログラムを外部記憶部から実行する際の実行遅延を抑制する。
【解決手段】情報処理装置は、複数のプロセッサと、前記複数のプロセッサそれぞれの実行プログラムを記憶する不揮発性の内部記憶部と、セクタ単位でのデータの読み出し、及び書き込みを実行し、前記複数のプロセッサのそれぞれの実行プログラムを記憶する不揮発性の着脱可能な外部記憶部と、前記内部記憶部、及び前記外部記憶部のいずれから前記複数のプロセッサの前記実行プログラムを起動するかを選択する選択部と、前記複数のプロセッサ毎に設けられ、前記外部記憶部から前記実行プログラムが、起動されるよう選択された場合に、前記外部記憶部からのデータの読み出し結果を記憶するランダムアクセス可能な一時記憶部とを備える。
【選択図】図1

Description

本発明は、情報処理装置及び情報処理方法に関する。
従来、ソフトウェアの更新、復旧や、不具合解析を目的として、SDカード等の外部記憶部に格納した実行プログラムからブートして、システムを起動する場合がある。このとき、SDカード等のNAND型フラッシュメモリに記憶したデータはセクタ単位でのリードしかできず、ランダムアクセスが発生するプログラムの実行速度が極端に遅くなるという問題が発生する。
そこで、例えば特許文献1においては、実行速度の低下を抑える方法として、SDカード等に格納したプログラムをRAMにロードしてから実行する方法が開示されている。また、特許文献2においては、RAMを持たない、又はRAMの空き容量が少なく、SDカード等に格納した実行プログラムをRAMにロードできないような装置の場合に、1セクタ分のバッファRAMを設け、CPUが指定したデータを含むセクタのリード結果をバッファRAMに記憶しておき、次回以降のCPU指定データがバッファRAM内に存在する場合には、セクタリードを再実行することなく、指定データをリード可能にする方法が開示されている。さらには、バッファRAMを2セクタ分以上設けておき、CPUアクセス中のバッファRAMの次セクタの内容を、もう一方のバッファRAMに記憶しておき、この動作を繰り返すことで、連続アドレスに格納されたデータの実行を高速にする方法が開示されている。
しかしながら、SDカード等に格納された実行プログラムのセクタ単位のリード結果をバッファRAMに記憶しておく方法では、複数のCPU間で実行プログラムを格納するSDカードを共有するシステムの場合に、それぞれのCPU用の実行プログラムを格納したSDカード上の物理メモリアドレスが離れているため、各CPUの命令が交互に実行される度にセクタリードが発生し、プログラムの実行速度が遅くなるという問題があった。
本発明は、上記に鑑みてなされたものであって、複数のCPUの実行プログラムをSDカードなどの外部記憶部からリードして実行する場合の、実行速度の低下を抑制することのできる情報処理装置及び情報処理方法を提供することにある。
上述した課題を解決し、目的を達成するために、本発明は、複数のプロセッサと、前記複数のプロセッサそれぞれの実行プログラムを記憶する内部記憶部と、予め定められた容量の記憶領域単位でのデータの読み出し、及び書き込みを実行し、前記複数のプロセッサのそれぞれの実行プログラムを記憶する着脱可能な外部記憶部と、前記内部記憶部、及び前記外部記憶部のいずれから前記複数のプロセッサの前記実行プログラムを起動するかを選択する選択部と、前記複数のプロセッサ毎に設けられ、前記外部記憶部から前記実行プログラムが、起動されるよう選択された場合に、前記外部記憶部から読み出したデータを記憶するランダムアクセス可能な一時記憶部と、を備えることを特徴とする。
本発明によれば、複数のCPUの実行プログラムをSDカードなどの外部記憶部からリードして実行する場合の、実行速度の低下を抑制することができるという効果を奏する。
図1は、第1の実施形態の情報処理装置の構成を示す図である。 図2は、第1の実施形態の通常ブート時のメモリマップを示す図である。 図3は、第1の実施形態のSDブート時のメモリマップを示す図である。 図4は、第1の実施形態のSD制御部の詳細な構成を示す図である。 図5は、第2の実施形態のSDブート時のメモリマップを示す図である。 図6は、第3の実施形態のSD制御部の詳細な構成を示す図である。 図7は、第4の実施形態のSD制御部の詳細な構成を示す図である。 図8は、第4の実施形態のSD制御部の詳細な構成を示す図である。
(第1実施形態)
以下、図面を用いて本発明の第1の実施形態について説明する。本実施形態の情報処理装置1は、第1CPU10、第2CPU11、SD制御部12、外部記憶部であるSDカード13、内部記憶部であるROM14、一時記憶部であるRAM15、第1アドレス変換部16、及び第2アドレス変換部17を備えている。本実施形態においては、第1CPU10は主にデータ処理を実行し、第2CPU11は、主に外部デバイスとのインタフェース制御を実行するが、各CPUが行う制御の組み合わせは自由に設定することができる。
SD制御部12はSDカードの規格に準拠して、情報処理装置1に挿入されたSDカード13を制御する。SDカード13は、通常のデータのほか、情報処理装置1の実行プログラムを記憶している。ROM14も、同様に実行プログラムのデータを記憶している。本実施形態の情報処理装置1にあっては、システムをROM14に記憶された実行プログラムからブートするか(以下、「通常ブート」という。)、SDカード13に記憶された実行プログラムからブートするか(以下、「SDブート」という。)を選択することができる。通常ブートと、SDブートの切り替えは、外部入力信号(boot_sel)によって行われる。
SD制御部12は、SDカード13に記憶された実行プログラムでシステムをブートする際には、CPU10、11からの指示がなくても直接SDカード13のデータのリード、及びライトを制御することができる。第1アドレス変換部16は、通常ブート時とSDブート時とでは、それぞれのブート開始のアドレスを変更し、SDブート時にはROM14へのデータアクセスはできなくなる。第2アドレス変換部17は、第1CPU10と第2CPU11のブート開始アドレスの競合を回避するために、第2CPU11のブート開始アドレスを変更し、第2CPU11から見たアドレス空間のゼロ番地が、ROM14内の別のアドレスに対応するようにする。
RAM15は、一時的にデータを記憶することのできるランダムアクセス可能な記憶領域であり、第1CPU10、及び第2CPU11が実行した処理が実行されるメモリである。RAM15は、演算結果等のデータを記憶するとともに、SDカード13からリードしたデータ、及びSDカード13にライトするデータを記憶する。SDカード13のリード、及びライトはセクタ単位(一般には512バイト)であるため、リード、及びライト時に各CPU10、11の負荷を小さくするために、SD制御部12とRAM15との間のデータ転送はCPU10、11を介さずに実行することができる。
図2は、通常ブート時(boot_selがネゲート中)における第1CPU10からみたメモリマップを示す図である。図2に示されるように、ROM14に対しては、アドレスh0000_0000〜h0001_FFFFが割り当てられており、ROM14に記憶された第1CPU10用の実行プログラムがh0000_0000〜h0000_FFFFに記憶されるとともに、ROM14に記憶された第2CPU11用の実行プログラムがh0001_0000〜h0001_FFFFに記憶される。RAM15に対しては、アドレスh1000_0000〜h1000_07FFが割り当てられており、SDコントローラ制御レジスタをh2000_0000〜に割り当てている。RM15に割り当てられたメモリマップにおける番地のうち、h1000_0000〜h1000_01FFまでがSDカード13からのデータ用のバッファに、h1000_02000〜h1000_07FFまでが、各CPU10、11が読み出した実行プログラムが実行されるメモリアドレスである。
通常ブート時には、第1CPU10、及び第2CPU11は第1CPU10から見たアドレスh0000_0000に格納した命令をフェッチするようになっている。この際、第2CPU11と接続されているアドレス変換部17は、第2CPU11側からアドレスh0001_0000がゼロ番地(h0000_0000)に見えるようにアドレスを変換することで、第1CPU10と第2CPU11とのアドレス競合を回避しつつ、第2CPU11においてもブート時の処理を開始させる。
第1CPU10、又は第2CPU11は、SDカード13のデータにアクセスする際には、メモリマップにおいて割り当てられたSDコントローラ制御レジスタ211(図4参照)に所定の設定を行い、RAM15の指定されたSDデータ用のバッファ領域に、SDカード13に記憶されたデータを記憶させる。データのライト要求の場合には、RAM15の指定されたSDデータ用のバッファ領域にライトしたいデータを置いておき、SDコントローラ制御レジスタ211(図4参照)に所定の設定をすることで、SDカード13にデータをライトすることができる。本実施形態では、リード、及びライトは512バイト単位で実行する。なお、セクタの容量は適宜変更することができる。
次に、SDブート時(boot_selがアサート中)の第1CPU10から見たメモリマップについて図3を用いて説明する。図3に示されるように、第1CPU10のブート開始アドレスh0000_0000〜と、第2CPU11のブート開始アドレスh0001_0000〜にはSDカード13に記憶された実行プログラムが各CPU10、11から見えるようになっている。ここで、CPUの実行プログラムは、SDカード13の規格に準拠したファイルフォーマットで定められたユーザーデータ領域に記憶している。ユーザーデータ領域は、SDカード13の記憶容量毎に異なるアドレスに配置されるため、SD制御部12が、CPU10、11からのリード要求があったアドレスとSDカード13における物理アドレスとの対応関係を参照し、SDカード13の所望のセクタに記憶されたデータのリードを実行することで、第1CPU10からは図3に示すメモリマップが見えるようになる。RAM15に対するデータのライト、及びリードに関するSDコントローラ制御レジスタのアドレス割当の設定は、通常ブート時と同様である。
次に、本実施形態のSDブート時の、データのリード、及びライトの制御の詳細を図4を用いて説明する。図4は、SD制御部12の詳細な構成を示している。図4に示されるように、SD制御部12は、SDコントローラ21、DMAコントローラ22、SDブート制御部23、及びセレクタ24、25、26、27を備えている。
SDコントローラ21は、SDカードの規格に準拠して、SDコントローラ制御レジスタ211に設定された設定値に基づいて、SDカード13を制御する。SDコントローラ制御レジスタ211は、SDコントローラ21に含まれており、第1CPU10、第2CPU11、又はSDブート制御部23からのアクセスを受け、SDコントローラ22を動作させるためのパラメータ、指令が設定される。また、SDコントローラ制御レジスタ211は、メモリマップにおいて所定のアドレス空間(h2000_0000〜)が割り当てられている。
DMAコントローラ22は、SDコントローラ21がSDカード13からリードしたセクタ単位(本実施例では512バイト)のデータを、SDブート制御部23、又はRAM15へと転送する。また、DMAコントローラ22は、SDカード13にデータをライトする際には、RAM15に記憶してあるライト用のセクタ単位のデータを取得してSDコントローラ21へ転送し、SDコントローラ21がSDカード13にデータをライトする。
セレクタ24は、信号boot_selがネゲートの場合には、CPU10、11とセレクタ25との間のアクセスを有効にし、CPU10、11とSDブート制御部23との間のアクセスを無効にする。一方、信号boot_selがアサートの場合には、セレクタ24は、CPU10、11とセレクタ25との間のアクセスを無効にし、CPU10、11とSDブート制御部23との間のアクセスを有効にする。
セレクタ25は、信号boot_selがネゲートの場合には、セレクタ24とSDコントローラ22との間のアクセスを有効にし、SDブート制御部23とSDコントローラ21との間のアクセスを無効にする。一方、信号boot_selがアサートの場合には、セレクタ25は、セレクタ24とSDコントローラ21との間のアクセスを無効にし、SDブート制御部23とSDコントローラ21との間のアクセスを有効にする。
セレクタ26は、信号boot_selがネゲートの場合には、RAM15とセレクタ27との間のアクセスを有効にし、RAM15とSDブート制御部23との間のアクセスを無効にする。一方、信号boot_selがアサートの場合には、セレクタ26は、RAM15とセレクタ27との間のアクセスを無効にし、RAM15とSDブート制御部23との間のアクセスを有効にする。
セレクタ27は、信号boot_selがネゲートの場合には、セレクタ26とDMAコントローラ22との間のアクセスを有効にし、SDブート制御部23とDMAコントローラ22との間のアクセスを無効にする。一方、信号boot_selがアサートの場合には、セレクタ27は、セレクタ26とDMAコントローラ22との間のアクセスを無効にし、SDブート制御部23とDMAコントローラ22との間のアクセスを有効にする。
したがって、信号boot_selがネゲート、すなわち通常ブート時には、RAM15とDMAコントローラ22との間の接続が有効となっているため、SDカード13に記憶された通常のデータのライド、及びリードは可能なものの、SDブート制御部23へのアクセスができないようになっている。一方、信号boot_selがアサート、すなわちSDブート時には、CPU10、11とSDブート制御部23とが接続されており、SDブート制御部23は、各CPU10、11からのアクセスを契機に動作する。また、この場合は、RAM15、及びDMAコントローラ22と、SDブート制御部23が直接接続されていることから、CPU10、11を介さずにRAM15へのデータのリード、及びライトが可能となる。SDブート制御部23は、内部に、第1RAM(A)231、第1RAM(B)232、第2RAM(A)233、及び第2RAM(B)234を備えている。
SDブート時において、SDブート制御部23は、第1CPU10用の実行プログラムのアドレス空間(h0000_0000〜h0000_FFFF)へのリードアクセスを検出すると、第1CPU10が指定するデータが第1RAM(A)231に記憶してあるか否かを判別し、データが記憶してあれば、そのデータを第1CPU10へと送信する。また、このような第1CPU11からのデータのリードアクセスの検出、及びデータ送信と並行して、SDブート制御部23は、第1RAM(A)231に記憶したセクタの次セクタのデータをSDカード13からリードし、第1RAM(B)232に記憶する。
一方、第1CPU10の要求するデータが、第1RAM(A)231に記憶していないと判定された場合は、SDブート制御部23は、第1RAM(B)232に記憶してあるかを判別し、データが記憶してあれば、そのデータを第1CPU10へと送信する。また、送信と並行して、第1RAM(B)232に記憶したセクタの次セクタのデータをSDカード13からリードし、第1RAM(A)231に記憶する。
また、もし第1CPU10の要求するデータが、第1RAM(A)231にも第1RAM(B)232にも記憶されていない場合、SDブート制御部23は、要求されたデータがSDカード13のどのセクタに記憶してあるかを判別し、対象セクタをリードするために必要なパラメータ、指令をSDコントローラ制御レジスタ211に設定することで、SDコントローラ21が動作し、所望のデータを含むセクタをリードする。SDブート制御部23は、リードしたセクタデータを第1RAM(A)231に記憶するとともに、第1CPU10へと送信する。
以上に述べた動作を繰り返し実行することにより、第1CPU10からのデータのリード要求がシーケンシャルアクセスであり、かつ、セクタリードに要する時間が512バイトのデータを第1CPU10がリードする時間よりも短い場合は、セクタリードによる第1CPU10の実行遅延は発生しないこととなる。
以上に述べた処理手順は、第2CPU11からのリード要求においても同様である。SDブート時において、SDブート制御部23は、第2CPU11用の実行プログラムのアドレス空間(h0001_0000〜h0001_FFFF)へのリードアクセスを検出すると、第2CPU11が要求するデータが第2RAM(A)233に記憶してあるか否かを判別し、データが記憶してあれば、そのデータを第2CPU11へと送信する。このような第2CPU11からのリードアクセスの検出、及びデータ送信と並行して、SDブート制御部23は、第2RAM(A)233に記憶したセクタの次セクタのデータをSDカード13からリードし、第2RAM(B)234に記憶する。
一方、第2CPU11の要求するデータが、第2RAM(A)233に記憶していなかった場合、SDブート制御部23は、第2RAM(B)234に当該データが記憶してあるか否かを判別し、データが記憶してあれば、そのデータを第2CPU11へ送信する。また、送信と並行して、SDブート制御部23は、第2RAM(B)234に記憶したセクタの次セクタのデータをSDカード13からリードし、第2RAM(A)233に記憶する。
一方、第2CPU11の要求するデータが、第2RAM233にも第2RAM234にも記憶されていない場合は、SDブート制御部23は、第2CPU11の指定するデータがSDカード13のどのセクタに記憶してあるかを判別し、対象セクタをリードするために必要なパラメータ、指令をSDコントローラ制御レジスタ211に設定する。そして、SDコントローラ21は、SDコントローラ制御レジスタ211の設定に従って、所望のデータを含むセクタをリードする。SDブート制御部23は、リードしたセクタデータ(512バイト)を、第2RAM(A)233に記憶するとともに、第2CPU11へ送信する。
以上に述べた動作を繰り返し実行することにより、第2CPU11からのデータのリード要求がシーケンシャルアクセスであり、かつ、セクタリードに要する時間が512バイトのデータを第2CPU11がリードする時間よりも短い場合は、セクタリードによる第2CPU11の実行遅延は発生しないこととなる。
次に、SDコントローラ制御レジスタ211へのリードアクセス、ライトアクセスがあった場合について説明する。SDブート制御部23は、SDコントローラ制御レジスタ211のアドレス空間(h2000_0000〜)へのリードアクセス、または、ライトアクセスを検出すると、CPU10、11から送られてきたデータをそのままセレクタ25に転送する。SDブート時には、上述のようにCPU10、11とセレクタ25との間のアクセスは無効となっているため、セレクタ25、すなわちSDコントローラ21へとデータを送ることは出来ないが、SDブート制御部23が仲介することで、CPU10、11は通常ブート時と同じようにSDコントローラ制御レジスタ211にアクセスすることができるようになる。
第1CPU10、及び第2CPU11は、SDコントローラ制御レジスタ211のアドレス空間(h2000_0000〜)へとアクセスすることによりSDカード13のリード、及びライト要求を実行する場合には、そのリード、及びライトの対象となるデータは、各RAM231〜234には記憶せずに、セレクタ26、とセレクタ27を経由して、RAM15に転送する。
以上に述べた本実施形態の情報処理装置1の作用効果について説明する。通常、SDブート時においては、第1CPU10と第2CPU11の実行プログラムは、SDカードの各セクタからセクタ単位で読み出されるため、それぞれの実行プログラムの記憶されている物理アドレスが離れている場合は、リード時間がかかってしまっていた。そこで、本実施形態の情報処理装置1にあっては、それぞれの実行プログラムをSDブート制御部23のRAM231〜234に前もってリードしておき、実行プログラムのデータが要求された場合には、SDカード13ではなくRAM231〜234の該当アドレスからデータをリードすることとしたため、SDカード13のセクタ単位のリードを省略することができ、プログラムの実行速度の低下を抑制することができる。
なお、本実施形態では第1CPU10と第2CPU11の2個のCPUを使用する構成について説明したが、CPUを3個以上使用する構成の場合も、各CPU毎のバッファRAM領域を追加することで、本実施形態で説明した構成を3個以上のCPUを搭載するシステムに拡張することができる。
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。第2の実施形態においては、リードした実行プログラムごとに専用のバッファRAM領域を設けるのではなく、共通のRAM15上に実行プログラムのリード結果をセクタ単位で格納する点が異なっている。図5は、SDブート時のメモリマップを示した図である。図5に示されるように、通常動作時のCPUのワーク領域として使用していたRAM15の一部をSDカード13からリードした実行プログラムの結果をセクタ単位で格納する(アドレスh1000_0000〜h1000_07FFF)。
この場合、処理手順は以下のようになる。すなわち、SDブート時において、SDブート制御部23は、第1CPU10用の実行プログラムのアドレス空間(h0000_0000〜h0000_FFFF)へのリードアクセスを検出すると、第1CPU10用の実行プログラムのアドレス空間(h0000_0000〜h0000_FFFF)へのリードアクセスを検出すると、第1CPU10が指定するデータがRAM15のアドレス1000_0000〜1000_01FFに記憶してあるか否かを判別し、データが記憶してあれば、そのデータを第1CPU10へと送信する。また、このような第1CPU11からのデータのリードアクセスの検出、及びデータ送信と並行して、SDブート制御部23は、RAM15のアドレス1000_0000〜1000_01FFに記憶したセクタの次セクタのデータをSDカード13からリードし、RAM15のアドレス1000_0200〜1000_03FFに記憶する。
一方、第1CPU10の要求するデータが、RAM15のアドレス1000_0000〜1000_01FFに記憶していないと判定された場合は、SDブート制御部23は、RAM15のアドレス1000_0200〜1000_03FFに記憶してあるかを判別し、データが記憶してあれば、そのデータを第1CPU10へと送信する。また、送信と並行して、RAM15のアドレス1000_0200〜1000_03FFに記憶したセクタの次セクタのデータをSDカード13からリードし、RAM15のアドレス1000_0000〜1000_01FFに記憶する。
また、もし第1CPU10の要求するデータが、RAM15のアドレス1000_0000〜1000_01FFにもRAM15のアドレス1000_0200〜1000_03FFにも記憶されていない場合、SDブート制御部23は、要求されたデータがSDカード13のどのセクタに記憶してあるかを判別し、対象セクタをリードし、RAM15のアドレス1000_0000〜1000_01FFに記憶し、要求されたデータを第1CPU10へと送信する。
以上に述べた動作を繰り返し実行することにより、第1CPU10からのデータのリード要求がシーケンシャルアクセスであり、かつ、セクタリードに要する時間が512バイトのデータを第1CPU10がリードする時間よりも短い場合は、セクタリードによる第1CPU10の実行遅延は発生しないこととなる。
以上に述べた処理手順は、第2CPU11からのリード要求においても同様である。SDブート制御部23は、第2CPU11用の実行プログラムのアドレス空間(h0001_0000〜h0001_FFFF)へのリードアクセスを検出すると、第2CPU11が要求するデータがRAM15のアドレス1000_0400〜1000_05FFに記憶してあるか否かを判別し、データが記憶してあれば、そのデータを第2CPU11へと送信する。このような第2CPU11からのリードアクセスの検出、及びデータ送信と並行して、SDブート制御部23は、RAM15のアドレス1000_0400〜1000_05FFに記憶したセクタの次セクタのデータをSDカード13からリードし、RAM15のアドレス1000_0600〜1000_07FFに記憶する。
一方、第2CPU11の要求するデータが、RAM15のアドレス1000_0400〜1000_05FFに記憶していなかった場合、SDブート制御部23は、RAM15のアドレス1000_0600〜1000_07FFに当該データが記憶してあるか否かを判別し、データが記憶してあれば、そのデータを第2CPU11へ送信する。また、送信と並行して、SDブート制御部23は、RAM15のアドレス1000_0600〜1000_07FFに記憶したセクタの次セクタのデータをSDカード13からリードし、RAM15のアドレス1000_0400〜1000_05FFに記憶する。
一方、第2CPU11の要求するデータが、RAM15のアドレス1000_0400〜1000_05FFにもRAM15のアドレス1000_0600〜1000_07FFにも記憶されていない場合は、SDブート制御部23は、要求データがSDカード13のどのセクタに記憶してあるかを判別し、対象セクタをリードし、RAM15のアドレス1000_0400〜1000_05FFに記憶し、要求されたデータを第2CPU11へと送信する。
以上に述べた動作を繰り返し実行することにより、第2CPU11からのデータのリード要求がシーケンシャルアクセスであり、かつ、セクタリードに要する時間が512バイトのデータを第2CPU11がリードする時間よりも短い場合は、セクタリードによる第2CPU11の実行遅延は発生しないこととなる。
このような構成にすることで、SDブート用に専用のバッファRAMを設ける必要がなくなる。
(第3の実施形態)
次に、本実施形態の第3の実施形態について図6を用いて説明する。第3の実施形態においては、図6に示されるように、各CPU10、11用の実行プログラムそれぞれにおいて、実行頻度の高いサブルーチンを記憶するバッファ用の第1RAM(c)235、及び第2RAM(c)236を新たに設けている。第1RAM(c)235には、第1CPU10用の実行プログラムにおいて使用頻度の高いサブルーチンが記憶されるとともに、第2RAM(c)236には、第2CPU11用の実行プログラムにおいて使用頻度の高いサブルーチンが記憶されている。
第1RAM(c)235、及び第2RAM(c)236は、サブルーチンの記憶用の領域であり、他の実行プログラムがリードされても、この領域には上書きされることはない。第1RAM(c)235、及び第2RAM(c)236へのサブルーチンの記憶は、例えばSDブートによりシステムが起動された際に、SDブート制御部23が自動的に記憶するようにしてもよい。
通常、サブルーチンのセクタと、リードされてバッファRAM上にある実行プログラムとがSDカード13の別セクタに記憶されている場合、実行プログラムはサブルーチンを呼び出すたびに、SDカードの13の該当する物理アドレスに対してリード要求を出す必要があるため、データの転送速度に依存する実行遅延が生じる可能性がある。本実施形態においては、サブルーチンがバッファRAM上に記憶されていることから、サブルーチンを実行するためのジャンプ命令が実行される度に発生していたSDカード13からのセクタリードを省略することができ、プログラム実行速度の低下を抑制することができる。
(第4の実施形態)
次に、本発明の第4の実施形態について図7を用いて説明する。図7に示されるように、本実施形態においては、第1RAM(A)231、及び第1RAM(B)232に変えて、兼用RAM(A)237、及び兼用RAM(B)238を新たに設けている。システムが待機状態に遷移すると、第1CPU10が動作を停止し、第2CPU11のみで装置が動作する場合がある。
このとき、第1CPU10用の実行プログラムを兼用RAM(A)237、及び兼用RAM(B)238に記憶する必要がなくなるので、兼用RAM(A)237、及び兼用RAM(B)238に、第2CPU11用の実行プログラムを記憶させるようにする。そうすると、第2CPU11は、これまで2つのセクタに記憶された実行プログラムをバッファRAM上に保持していたのが、4つのセクタに記憶された実行プログラムを保持することができるようになる。そのため、実行プログラムから他のセクタの実行プログラムへのジャンプ命令が発生した場合に、ジャンプ先のプログラムがSDブート制御部23の内部のRAMに記憶してある確率が高くなり、第2CPU11のプログラム実行速度の低下を抑制することができるようになる。
(第5の実施形態)
次に、第5の実施形態について説明する。第5の実施形態においては、第1CPU10の実行プログラムの記憶領域として、新たに第1RAM(C)235、第1RAM(D)239、第1RAM(E)240を設けている。一方、第2CPU11の実行プログラム用の記憶領域は2セクタ分のみである。
第1RAM(E)240は、第1CPU10の実行プログラム用のサブルーチン用の記憶領域である。第2CPU11の実行プログラムは実行頻度が高いサブルーチンを本実施形態では有さないため、サブルーチン用の記憶領域は設けていない。
また、CPU10、11の処理能力が高い場合、SDブート制御部23内の各RAMに格納された実行プログラムを実行する時間よりも、SDカード13からバッファ用のRAMに次に実行すべき実行プログラムのデータ(プログラムコード)を転送する時間の方が長くなり、次セクタのデータの転送が完了するまでの待ち時間が発生する場合が存在する。このようなSDカード13からバッファ用のRAMへの転送速度が処理のボトルネックとなる問題を回避するために、本実施形態では、追加した第1RAM(C)235と第1RAM(D)239が設けられている。
すなわち、第1CPU10が第1RAM(E)240に格納したサブルーチンプログラムを実行したり、割り込み待ち等の待機中であったりした場合に、現在実行中の実行プログラムのSDカード13における次セクタ、次々セクタ、次々々セクタの内容を、第1RAM(A)231、第1RAM(B)232、第1RAM(C)235、及び第1RAM(D)239のうち、現在実行中の実行プログラムを記憶しているバッファ用のRAM以外(サブルーチン実行中の場合は、サブルーチンを呼び出した実行プログラム以外)のRAMに記憶しておくことで、セクタリードの完了を待つ頻度を減少させることができる。
例えば第1CPU10は、動作周波数が100MHz(10ns/クロック)、ビット幅が32ビットであり、第2CPU11は、動作周波数が20MHz(50ns/クロック)、ビット幅が16ビットであるとする。また、各バッファ用のRAMのリードは1クロックサイクルで可能であるとする。また、第1RAM(A)〜(E)は、データ幅が32ビット、アドレスバス幅が7ビット、記憶容量が512バイトであり、第2RAM(A)〜(B)は、データ幅が16ビット、アドレスバス幅8ビット、記憶容量が512バイトであるとする。また、SDカード13から第1RAM、第2RAMへのデータの転送速度は、50メガバイト/sの場合を考える。
このとき、実行プログラムのセクタ単位のデータ量である512バイトのデータ(プログラムコード)をSDカード13から第1RAM、又は第2RAMに転送する際に要する時間は、512バイト÷50メガバイト/s=10.24usである。
また、第1CPU10、及び第2CPU11が、第1RAM、及び第2RAMに記憶した実行プログラムのセクタ単位のデータを実行する時間を以下に計算する。512バイトの第1RAM(A)〜(D)には、実行プログラムの実行命令が、512バイト(4096ビット)÷32ビット=128個記憶されている。また、512バイトの第2RAM(A)、(B)には、実行プログラムの実行命令が、512バイト(4096ビット)÷16ビット=256個含まれている。
ここで、1つの実行命令の実行に平均5クロック要すると仮定すると、第1CPU10が第1RAMに格納したデータを実行するために要する時間は、128[命令]×5[クロック/命令]×10[ns/クロック]=6.4usである。したがって、データ処理時間である6.4usが、データ転送時間である10.24usよりも短いことから、次に処理すべき実行プログラムを次セクタから先読みしておくための動作が間に合わず、第1CPU10はSDカード13から次セクタのデータが転送されるまで待機する必要があり、データ転送速度がボトルネックとなる。
一方、第2CPU11が第2RAMに格納したデータを実行するために要する時間は、256[命令]×5[クロック/命令]×50[ns/クロック]=64usである。したがって、第2CPU11のデータ処理速度は、SDカード13から第2RAMへの転送時間(10.24us)よりも長いため、次セクタの先読み動作を完了することができ、第2CPU11は転送待ち時間なしで連続して命令を実行することができる。
以上、述べたように、各CPUの動作周波数と、1命令の演算で使用するデータ幅のビット数とから算出されるデータの処理時間が、SDカード13から第1RAM、第2RAMへの転送速度から算出されるデータの転送時間よりも短くなるか否かによって、データのセクタ単位で先読みしておくためのRAMの記憶領域の追加の要否を判断することができる。
また、サブルーチンの実行間隔が長い、又は、割り込み待ち等の待機時間が長い場合には、先読みするデータを記憶するバッファRAMの容量を増やすことで、SDカード13からの転送完了待ちが発生する頻度を低下させることができるようになる。
1 情報処理装置
10 第1CPU
11 第2CPU
12 SD制御部
13 SDカード
14 ROM
15 RAM
16 第1アドレス変換部
17 第2アドレス変換部
231 第1RAM(A)
232 第1RAM(B)
233 第2RAM(C)
223 第2RAM(D)
21 SDコントローラ
22 DMAコントローラ
23 SDブート制御部
24 セレクタ
25 セレクタ
26 セレクタ
27 セレクタ
211 コントローラ制御レジスタ
特開2005−010942号公報 特開2006−004387号公報 特開2004−220575号公報

Claims (8)

  1. 複数のプロセッサと、
    前記複数のプロセッサそれぞれの実行プログラムを記憶する内部記憶部と、
    予め定められた容量の記憶領域単位でのデータの読み出し、及び書き込みを実行し、前記複数のプロセッサのそれぞれの実行プログラムを記憶する着脱可能な外部記憶部と、
    前記内部記憶部、及び前記外部記憶部のいずれから前記複数のプロセッサの前記実行プログラムを起動するかを選択する選択部と、
    前記複数のプロセッサ毎に設けられ、前記外部記憶部から前記実行プログラムが、起動されるよう選択された場合に、前記外部記憶部から読み出したデータを記憶するランダムアクセス可能な一時記憶部と
    を備えることを特徴とする情報処理装置。
  2. 前記外部記憶部から前記実行プログラムが、起動されるように選択された場合に、前記複数のプロセッサからの前記実行プログラムを指定した読み出し要求を検出する検出部と、
    検出した前記読み出し要求で指定された前記実行プログラムが、前記一時記憶部に記憶されている場合には、前記指定された前記実行プログラムのデータを前記読み出し要求を実行した前記プロセッサに対して送信し、
    検出した前記読み出し要求で指定された前記実行プログラムが、前記一時記憶部に記憶されていない場合には、前記実行プログラムが記憶されている前記外部記憶部の前記記憶領域から読み出したデータを前記読み出し要求を実行した前記プロセッサに対して送信するとともに、前記プロセッサ毎に設けられた対応する前記一時記憶部に記憶させる読み書き制御部と、
    をさらに備えることを特徴とする請求項1に記載の情報処理装置。
  3. 前記一時記憶部は、前記複数のプロセッサそれぞれに対して、少なくとも2単位以上の前記記憶領域のデータを記憶可能であり、
    前記読み書き制御部は、前記読み出し要求があった前記実行プログラムのデータ、及び前記実行プログラムの記憶された前記記憶領域に隣接する次の前記記憶領域に記憶される前記実行プログラムのデータを前記一時記憶部に記憶させる
    ことを特徴とする請求項2に記載の情報処理装置。
  4. 前記一時記憶部は、前記複数のプロセッサが共有する共有記憶部を有しており、前記複数のプロセッサのうち、スリープ状態となったプロセッサがある場合、前記読み出し要求で指定された動作中のほかの前記プロセッサの前記実行プログラムを前記共有記憶部に記憶する
    ことを特徴とする請求項1に記載の情報処理装置。
  5. 前記一時記憶部は、前記複数のプロセッサの前記実行プログラムのサブルーチンを記憶するサブルーチン記憶部をさらに備える
    ことを特徴とする請求項1に記載の情報処理装置。
  6. 前記一時記憶部は、前記外部記憶部から前記一時記憶部への転送速度から算出されるデータの転送時間が、前記複数のプロセッサの動作周波数、及び1命令の演算で使用するデータのビット幅から算出されるデータの処理時間よりも長くなる場合に、現在実行中の前記実行プログラム以外の実行プログラムを記憶可能な新たな記憶領域を備える
    ことを特徴とする請求項1に記載の情報処理装置。
  7. 前記外部記憶部は、SDカードである
    ことを特徴とする請求項1〜6のいずれか1項に記載の情報処理装置。
  8. 複数のプロセッサと、前記複数のプロセッサそれぞれの実行プログラムを記憶する内部記憶部と、予め定められた容量の記憶領域単位でのデータの読み出し、及び書き込みを実行し、前記複数のプロセッサのそれぞれの実行プログラムを記憶する着脱可能な外部記憶部と、前記複数のプロセッサ毎に設けられ、ランダムアクセス可能な一時記憶部と、を備える情報処理装置における情報処理方法であって、
    前記内部記憶部、及び前記外部記憶部のいずれから前記複数のプロセッサの前記実行プログラムを起動するかを選択する選択ステップと、
    前記外部記憶部から前記実行プログラムが、起動されるよう選択された場合に、前記一時記憶部に対して、前記外部記憶部から読み出したデータを記憶させる記憶ステップと、
    を含むことを特徴とする情報処理方法。
JP2012189223A 2012-08-29 2012-08-29 情報処理装置、情報処理方法 Active JP5949330B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012189223A JP5949330B2 (ja) 2012-08-29 2012-08-29 情報処理装置、情報処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012189223A JP5949330B2 (ja) 2012-08-29 2012-08-29 情報処理装置、情報処理方法

Publications (2)

Publication Number Publication Date
JP2014048751A true JP2014048751A (ja) 2014-03-17
JP5949330B2 JP5949330B2 (ja) 2016-07-06

Family

ID=50608409

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012189223A Active JP5949330B2 (ja) 2012-08-29 2012-08-29 情報処理装置、情報処理方法

Country Status (1)

Country Link
JP (1) JP5949330B2 (ja)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08171483A (ja) * 1994-12-19 1996-07-02 Fanuc Ltd データ処理装置
JPH08179986A (ja) * 1994-12-27 1996-07-12 Olympus Optical Co Ltd 情報処理装置
JP2004038560A (ja) * 2002-07-03 2004-02-05 Matsushita Electric Ind Co Ltd データ転送方法およびキャッシュ機能付きマイクロコンピュータ
JP2004220575A (ja) * 2002-12-27 2004-08-05 Ricoh Co Ltd カード型メモリのインターフェース回路、その回路を搭載したasic、及びそのasicを搭載した画像形成装置
JP2005122759A (ja) * 2001-01-31 2005-05-12 Renesas Technology Corp データ処理システム
JP2005174009A (ja) * 2003-12-11 2005-06-30 Ricoh Co Ltd プログラム書換処理装置
JP2005520222A (ja) * 2001-06-26 2005-07-07 サン マイクロシステムズ インコーポレイテッド マルチプロセッサシステムにおける推測的な格納を容易にするl2ディレクトリの利用
JP2005185691A (ja) * 2003-12-26 2005-07-14 Fujinon Corp 電子内視鏡装置およびプログラム転送方法
JP2006004387A (ja) * 2004-06-21 2006-01-05 Ricoh Co Ltd 情報処理装置及び情報処理方法
US8990549B2 (en) * 2012-07-12 2015-03-24 Freescale Semiconductor, Inc. Method and system for booting electronic device from NAND flash memory

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08171483A (ja) * 1994-12-19 1996-07-02 Fanuc Ltd データ処理装置
JPH08179986A (ja) * 1994-12-27 1996-07-12 Olympus Optical Co Ltd 情報処理装置
JP2005122759A (ja) * 2001-01-31 2005-05-12 Renesas Technology Corp データ処理システム
JP2005520222A (ja) * 2001-06-26 2005-07-07 サン マイクロシステムズ インコーポレイテッド マルチプロセッサシステムにおける推測的な格納を容易にするl2ディレクトリの利用
JP2004038560A (ja) * 2002-07-03 2004-02-05 Matsushita Electric Ind Co Ltd データ転送方法およびキャッシュ機能付きマイクロコンピュータ
JP2004220575A (ja) * 2002-12-27 2004-08-05 Ricoh Co Ltd カード型メモリのインターフェース回路、その回路を搭載したasic、及びそのasicを搭載した画像形成装置
JP2005174009A (ja) * 2003-12-11 2005-06-30 Ricoh Co Ltd プログラム書換処理装置
JP2005185691A (ja) * 2003-12-26 2005-07-14 Fujinon Corp 電子内視鏡装置およびプログラム転送方法
JP2006004387A (ja) * 2004-06-21 2006-01-05 Ricoh Co Ltd 情報処理装置及び情報処理方法
US8990549B2 (en) * 2012-07-12 2015-03-24 Freescale Semiconductor, Inc. Method and system for booting electronic device from NAND flash memory

Also Published As

Publication number Publication date
JP5949330B2 (ja) 2016-07-06

Similar Documents

Publication Publication Date Title
KR100708128B1 (ko) 낸드 플래시 메모리 제어 장치 및 방법
JP4896376B2 (ja) コプロセッサの性能を強化するシステムおよび方法
US20080235477A1 (en) Coherent data mover
EP3647932B1 (en) Storage device processing stream data, system including the same, and operation method thereof
CN105765541B (zh) 用于机动车的控制器
JP2012068936A (ja) メモリシステム
JP5387776B2 (ja) 割込制御方法、マルチコアプロセッサシステム、および割込制御プログラム
JP2011086064A (ja) ストレージ装置およびメモリシステム
US20130036426A1 (en) Information processing device and task switching method
TWI710905B (zh) 資料儲存裝置及邏輯至物理位址映射表之載入方法
JP2010500682A (ja) フラッシュメモリアクセス回路
JP2009230548A (ja) 情報処理装置と情報処理方法およびストレージシステム
JP7470685B2 (ja) 集積回路中の算出ユニットをプログラムおよび制御すること
EP3270293B1 (en) Two stage command buffers to overlap iommu map and second tier memory reads
US20180011636A1 (en) Information processing apparatus and method of accessing a memory
JP5254710B2 (ja) データ転送装置、データ転送方法およびプロセッサ
JP2007207249A (ja) ミス衝突処理状態でのキャッシュ・ヒットのための方法、システムおよびマイクロプロセッサ
JP4471947B2 (ja) データ処理装置及びデータ処理方法
JP5949330B2 (ja) 情報処理装置、情報処理方法
JP4522799B2 (ja) 半導体回路装置及び暴走検出方法
JP6740719B2 (ja) 情報処理装置、情報処理方法、およびプログラム
US20100146255A1 (en) Motherboard, storage device and controller thereof, and booting method
JP5699665B2 (ja) サーバ装置、処理実行方法およびプログラム
JP4869301B2 (ja) 画像処理装置
JP4631442B2 (ja) プロセッサ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150714

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160330

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160510

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160523

R151 Written notification of patent or utility model registration

Ref document number: 5949330

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151