JP6138482B2 - 組み込みシステム - Google Patents

組み込みシステム Download PDF

Info

Publication number
JP6138482B2
JP6138482B2 JP2012281225A JP2012281225A JP6138482B2 JP 6138482 B2 JP6138482 B2 JP 6138482B2 JP 2012281225 A JP2012281225 A JP 2012281225A JP 2012281225 A JP2012281225 A JP 2012281225A JP 6138482 B2 JP6138482 B2 JP 6138482B2
Authority
JP
Japan
Prior art keywords
program
cpu
unit
buffer
function
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.)
Active
Application number
JP2012281225A
Other languages
English (en)
Other versions
JP2014126917A (ja
Inventor
裕樹 永尾
裕樹 永尾
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.)
NEC Engineering Ltd
Original Assignee
NEC Engineering 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 NEC Engineering Ltd filed Critical NEC Engineering Ltd
Priority to JP2012281225A priority Critical patent/JP6138482B2/ja
Publication of JP2014126917A publication Critical patent/JP2014126917A/ja
Application granted granted Critical
Publication of JP6138482B2 publication Critical patent/JP6138482B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Multi Processors (AREA)
  • Stored Programmes (AREA)

Description

本発明は組み込みシステム及びCPU間通信方法に関する。
特許文献1は、CPU(Central Processing Unit)間通信の同期にCPU間割込を使うと大きな遅延が発生し、複数のCPUの並行実行による高速性が生かせないという課題を開示している。その理由は、CPUの演算処理と比較して割込処理は高速化できていないためである。特許文献1は、CPU間通信による遅延時間を短縮するとともに、同期の待ち時間に応じてウェイト処理を最適に制御することができるCPU間通信システムを開示している。このCPU間通信システムは、複数のCPUがメモリを介してデータ通信を行う対称型マルチCPUシステムである。
特許文献1に開示されたCPU間通信システムは、データを送信する送信側CPUとデータを受信する受信側CPUとにより共有されるメモリを介して、送信側CPUと受信側CPUとの間でデータの通信を行う。送信側CPUは、メモリ領域判定部と、データ書き込み部と、受信側CPU判定部と、送信側制御部とを備える。メモリ領域判定部は、メモリに空き領域があるか否かを判定する。データ書き込み部は、メモリ領域判定部によりメモリに空き領域があると判定された場合に、メモリにデータを書き込むデータ書き込み処理を実行する。受信側CPU判定部は、メモリ領域判定部がメモリに空き領域がないと判定した場合に、受信側CPUの状態を判定する。送信側制御部は、受信側CPU判定部により受信側CPUの状態がメモリからデータを読み出すデータ読み出し処理の実行状態であると判定された場合に、メモリに空き領域ができるまでデータ書き込み部をデータ書き込み処理の待ち状態とする。送信側制御部は、受信側CPU判定部により受信側CPUの状態がデータ読み出し処理の実行状態でないと判定された場合に、受信側CPUにデータ読み出し処理の実行を開始させるための読み出し開始要求を受信側CPUへ送信する。
一方、特許文献2は、マルチディスプレイシステムの制御プログラム書き換えにおいて、複数のプログラムを短時間に一括して書き換えることが可能な制御装置を開示している。特許文献2は、実行中のプログラムを書き換えることを開示していない。
特開2012−003673号公報 特開2001−236233号公報
複数のCPUを備えたシステムにおいて、システム全体の処理速度を向上できる余地がある。
したがって、本発明は、複数のCPUを備えたシステムの処理速度を向上することができる組み込みシステム及びCPU間通信方法を提供することを目的とする。
本発明にかかる組み込みシステムは、第1CPUユニットと、第2CPUユニットとを具備する。前記第2CPUユニットは、第1プログラムデータパケットを前記第1CPUユニットに出力する。前記第1プログラムデータパケットの第1データ部は、前記第1CPUユニットに実行させるべき第1プログラムコードを含む。前記第1CPUユニットは、第1CPUと、前記第1プログラムデータパケットを受け取る第1インターフェース制御部とを備える。前記第1インターフェース制御部は、前記第1CPUのメモリマップ上におけるプログラムフェッチが可能な第1プログラム領域の一部として機能する第1プログラムバッファを備える。前記第1インターフェース制御部は、前記第1プログラムコードを前記第1プログラムバッファに格納する。前記第1インターフェース制御部は、前記第1プログラムコードを前記第1プログラムバッファに格納している間、前記第1CPUの前記第1プログラムバッファに対するプログラムフェッチを待ち状態に設定する。前記第1インターフェース制御部は、前記第1CPUが前記第1プログラムバッファに対してプログラムフェッチを行っている間、前記第1プログラムバッファに対する前記第1プログラムコードの格納を待ち状態に設定する。
本発明によるCPU間通信方法は、第1CPUユニットが第2CPUユニットから第1プログラムデータパケットを受け取るステップと、前記第1プログラムデータパケットの第1データ部に含まれる第1プログラムコードを前記第1CPUユニットの第1プログラムバッファに格納するステップと、前記第1CPUユニットの第1CPUが前記第1プログラムバッファに対してプログラムフェッチを行うステップとを具備する。CPU間通信方法は、前記第1プログラムコードを前記第1プログラムバッファに格納している間、前記第1CPUの前記第1プログラムバッファに対するプログラムフェッチを待ち状態に設定するステップ、又は、前記第1CPUが前記第1プログラムバッファに対してプログラムフェッチを行っている間、前記第1プログラムバッファに対する前記第1プログラムコードの格納を待ち状態に設定するステップを更に具備する。
本発明により、複数のCPUを備えたシステムの処理速度を向上することができる組み込みシステム及びCPU間通信方法を提供することができる。
実施の形態1にかかる組み込みシステムのブロック図である。 実施の形態1にかかるCPU間通信方法のシーケンス図である。 実施の形態1にかかるプログラムデータパケットのデータ構造図である。 実施の形態2にかかる組み込みシステムのブロック図である。 実施の形態2にかかるCPUのメモリマップの概念図である。 実施の形態2にかかるCPUが実行するプログラムの一例を示す。 実施の形態2にかかるCPU間通信方法のシーケンス図である。 実施の形態2にかかるCPU間通信方法の概念図である。 実施の形態3にかかるCPU間通信方法の概念図である。
以下、図面を参照して本発明の実施の形態について説明する。
(実施の形態1)
図1を参照して、実施の形態1にかかる組み込みシステム10を説明する。組み込みシステム10は、CPU(Central Processing Unit)ユニット110及び210を備える。CPUユニット110は、少なくとも一つのCPUを備える。CPUユニット210は、少なくとも一つのCPUを備える。組み込みシステム10が処理を実行するため、CPUユニット110のCPUとCPUユニット210のCPUとが互いに通信する。CPUユニット110は、CPU111と、インターフェース制御部120とを備える。インターフェース制御部120は、プログラムバッファ123を備える。プログラムバッファ123は、CPU111のメモリマップ上におけるプログラムフェッチが可能なプログラム領域の一部として機能する。
次に、実施の形態1にかかるCPU間通信方法を説明する。
図2を参照して、ステップS100において、CPUユニット210は、プログラムデータパケット40をCPUユニット110に出力する。CPUユニット110のインターフェース制御部120は、プログラムデータパケット40を受け取る。ここで、プログラムデータパケット40のデータ構造を説明する。
図3を参照して、プログラムデータパケット40は、ヘッダ部41と、パラメータ部42と、データ部43とを含む。ヘッダ部41は、データ部43をプログラムバッファ123に格納すべきことを示す。データ部43は、CPU111に実行させるべきプログラムコードを含む。プログラムデータパケット40を用いることで、CPUユニット210は、任意のデータサイズのプログラムコードをCPUユニット110に送信することができる。
図2を参照して、インターフェース制御部120は、プログラムデータパケット40のデータ部43に含まれるプログラムコードをプログラムバッファ123に格納する(S104)。具体的には、インターフェース制御部120は、プログラムデータパケット40のヘッダ部41を解析し、ヘッダ部41を解析した結果に基づいて、データ部43に含まれるプログラムコードをプログラムバッファ123に格納する。CPU111は、プログラムバッファ123に対してプログラムフェッチを行う(S106)。ここで、インターフェース制御部120のハードウェアは、プログラムコードをプログラムバッファ123に格納している(書き込んでいる)間、CPU111のプログラムバッファ123に対するプログラムフェッチを待ち状態に設定する。インターフェース制御部120のハードウェアは、CPU111がプログラムバッファ123に対してプログラムフェッチを行っている間、プログラムバッファ123に対するプログラムコードの格納(書き込み)を待ち状態に設定する。
ここで、一般的な割込みベクタ方式によるCPU間通信を用いて第1CPUが第2CPUにプログラムコードを実行させる場合、以下の手順が必要である。第1CPUが第2CPUに割込み信号を出力する。第2CPUが第1CPUに割込み発生要因を問い合わせる。第1CPUが第2CPUにベクタアドレスを通知する。第2CPUがベクタアドレスに基づいてプログラムフェッチを行う。
実施の形態1によれば、組み込みシステム10の処理速度が向上する。その理由を以下に記載する。実施の形態1によれば、プログラムコードをデータ部43に含むプログラムデータパケット40をCPUユニット210からCPUユニット110に送り、CPU111のメモリマップ上におけるプログラムフェッチが可能なプログラム領域の一部として機能するプログラムバッファ123にプログラムコードを格納する。そのため、CPUユニット110が備えるメインメモリ(不図示)への間接的なアクセスが不要であり、CPU111はプログラムバッファ123からプログラムコードを直接取得して実行することができる。実施の形態1によれば、プログラムコードをプログラムバッファ123に格納している間、CPU111のプログラムバッファ123に対するプログラムフェッチが待ち状態に設定され、CPU111がプログラムバッファ123に対してプログラムフェッチを行っている間、プログラムバッファ123に対するプログラムコードの格納が待ち状態に設定される。そのため、CPUユニット210は、CPU111が実行中のプログラムを書き換えることができる。CPU111が実行中のプログラムを書き換えることにより、CPU111を動的に制御することができる。実施の形態1によれば、CPU111にプログラムコードを実行させるために割込み信号が必須ではない。割込み信号が使われる回数が少なければ、割込みによる遅延が発生する回数が少ない。実施の形態1によれば、プログラムデータパケット40の受信、プログラムデータパケット40のヘッダ部41の解析、及びプログラムコードの格納をインターフェース制御部120のハードウェアにより高レスポンスで実現できる。
更に、実施の形態1によれば、割込み発生要因の問い合わせ及びベクタアドレスの通知が不要である。したがって、CPUユニット110及びCPUユニット210の間の通信のソフトウェアによる処理が簡潔になる。更に、実施の形態1によれば、CPU111に実行させるべきプログラムコード自体をCPUユニット210からCPUユニット110に送っている。したがって、CPUユニット210は、CPUユニット110に実行させるべきプログラムコードを自由に生成してCPUユニット110に送信することができる。CPUユニット210は、CPU111に実行させるべきプログラムコードをCPU111が参照するメモリ領域にその時点で存在するプログラムに依存せずに生成することができる。
(実施の形態2)
次に、実施の形態2にかかる組み込みシステム10及びCPU間通信方法を説明する。以下、実施の形態1と共通する事項の説明を省略する。
図4を参照して、組み込みシステム10は、CPUボード100と、CPUボード200と、CPUボード間インターフェース300とを備える。CPUボード100及び200は、CPUボード間インターフェース300を介して互いに接続される。CPUボード間インターフェース300は、後述するインターフェース制御部120及び220の一方から他方へパケットを送るためのハードウェアである。CPUボード間インターフェース300は、パケットのフォーマットを定義する。組み込みシステム10は、例えば、USB(Universal Serial Bas)ハードディスクドライブに適用される。この場合、CPUボード200のCPU211は、ハードディスクドライブを制御する。CPUボード100のCPU111は、ハードディスクドライブをコンピュータに接続するインターフェースとしてのUSBを制御する。
CPUボード100は、CPUユニット110と、CPUユニット110を搭載する基板(不図示)とを備える。CPUユニット110は、CPU111と、メインメモリ112と、システムバス113と、インターフェース制御部120とを備える。インターフェース制御部120は、CPUボード間インターフェース300を制御するための機能を備える。インターフェース制御部120は、パケットバッファ121と、パケット解析部122と、プログラムバッファ123とを備える。システムバス113は、CPU111、メインメモリ112、及びプログラムバッファ123を互いに接続する。プログラムバッファ123は、CPU111のメモリマップ上におけるプログラムフェッチが可能なプログラム領域の一部として機能する。メインメモリ112は、CPU111のメモリマップ上におけるプログラムフェッチが可能なプログラム領域の他の一部として機能する。
CPUボード200は、CPUユニット210と、CPUユニット210を搭載する基板(不図示)とを備える。CPUユニット210は、CPU211と、メインメモリ212と、システムバス213と、インターフェース制御部220とを備える。インターフェース制御部220は、CPUボード間インターフェース300を制御するための機能を備える。インターフェース制御部220は、パケットバッファ221と、パケット解析部222と、プログラムバッファ223とを備える。システムバス213は、CPU211、メインメモリ212、及びプログラムバッファ223を互いに接続する。プログラムバッファ223は、CPU211のメモリマップ上におけるプログラムフェッチが可能なプログラム領域の一部として機能する。メインメモリ212は、CPU211のメモリマップ上におけるプログラムフェッチが可能なプログラム領域の他の一部として機能する。
図5を参照して、CPU111のメモリマップを説明する。CPU111のメモリマップは、メインメモリ112内の領域としてのメインメモリ部と、インターフェース制御部120内の領域としてのインターフェース制御部レジスタとを含む。メインメモリ部は、プログラムコード領域を含む。プログラムコード領域にメイン関数「Main_Func()」が格納されている。メイン関数「Main_Func()」は、CPU111が実行するメインプログラムのプログラムコードである。インターフェース制御部レジスタは、プログラムバッファ123内の領域としてのプログラムバッファ領域を含む。プログラムバッファ領域に関数「Sub_Func_A()」、関数「Sub_Func_B()」、及び関数「Sub_Func_C()」が格納されている。関数「Sub_Func_A()」、関数「Sub_Func_B()」、及び関数「Sub_Func_C()」は、バイナリコードである。
図6は、メイン関数「Main_Func()」の一例を示している。メイン関数「Main_Func()」の中で関数「Sub_Func_A()」が呼び出される(図5における関数コール)。関数「Sub_Func_A()」が実行された後、処理がメイン関数「Main_Func()」に戻る(図5における関数リターン)。
ここで、メインメモリ112及びプログラムバッファ123の特徴は以下のとおりである。インターフェース制御部120は、CPU111がメインメモリ112に対して行うプログラムフェッチをコントロールできない。インターフェース制御部120は、CPU111がプログラムバッファ123に対して行うプログラムフェッチを止めることができる。メインメモリ112は、アドレスを指定した書き込みができない、又は、アドレスを指定した書き込みが困難な領域である。プログラムバッファ123は、アドレスを指定した書き込みができる領域である。メインメモリ112は、CPU111及びCPU211の間で共有されていない。
CPU111のメモリマップと同様に、CPU211のメモリマップは、メインメモリ212内の領域としてのメインメモリ部と、インターフェース制御部220内の領域としてのインターフェース制御部レジスタとを含む。メインメモリ部は、プログラムコード領域を含む。プログラムコード領域にメイン関数が格納されている。メイン関数は、CPU211が実行するメインプログラムのプログラムコードである。インターフェース制御部レジスタは、プログラムバッファ223内の領域としてのプログラムバッファ領域を含む。プログラムバッファ領域に関数が格納されている。関数は、バイナリコードである。メイン関数の中で関数が呼び出される。関数が実行された後、処理がメイン関数に戻る。
ここで、メインメモリ212及びプログラムバッファ223の特徴は以下のとおりである。インターフェース制御部220は、CPU211がメインメモリ212に対して行うプログラムフェッチをコントロールできない。インターフェース制御部220は、CPU211がプログラムバッファ223に対して行うプログラムフェッチを止めることができる。メインメモリ212は、アドレスを指定した書き込みができない、又は、アドレスを指定した書き込みが困難な領域である。プログラムバッファ223は、アドレスを指定した書き込みができる領域である。メインメモリ212は、CPU111及びCPU211の間で共有されていない。
次に、実施の形態2に係るCPU間通信方法を説明する。
図7を参照して、ステップS200において、CPUユニット210のCPU211は、CPU111に実行させるべきプログラムコードとしての関数「Sub_Func_A0()」を生成する。CPUユニット210のCPU211は、既存のプログラムコードを修正することにより関数「Sub_Func_A0()」を生成してもよい。CPUユニット210は、CPUボード間インターフェース300を介してCPUユニット110に関数「Sub_Func_A0()」を含むプログラムデータパケット40を送信する。インターフェース制御部120のパケットバッファ121は、プログラムデータパケット40を受信する。パケットバッファ121は、プログラムデータパケット40をパケット解析部122に送る。ここで、プログラムデータパケット40のデータ構造を説明する。
図3を参照して、プログラムデータパケット40は、ヘッダ部41と、パラメータ部42と、データ部43とを含む。ヘッダ部41は、プログラムデータパケット40の送信先としてのCPU111を特定するデバイスポート番号、プログラムデータパケット40のパケットタイプがCPU間通信であることを特定する識別子(ID)、プログラムデータパケット40のID、データ長などを含む。パラメータ部42は、送信元であるCPU211を特定するID、送信先であるCPU111を特定するID、及びプログラム番号を含む。CPU211は、組み込みシステム10の仕様に基づいてプログラム番号を指定する。データ部43は、関数「Sub_Func_A0()」を含む。関数「Sub_Func_A0()」はバイナリコードである。プログラムデータパケット40を用いることで、CPUユニット210は、任意のデータサイズのプログラムコードをCPUユニット110に送信することができる。
図7のステップS200において、パケット解析部122は、プログラムデータパケット40を解析し、ヘッダ部41及びデータ部43を互いに分離する。パケット解析部122は、ヘッダ部41を解析する。解析の結果、プログラムデータパケット40のパケットタイプがCPU間通信であることを認識すると、パケット解析部122のハードウェアは、データ部43に含まれる関数「Sub_Func_A0()」をプログラムバッファ123に自動的に格納する。このとき、パケット解析部122は、パラメータ部42に含まれるプログラム番号に基づいてプログラムバッファ123内のアドレスを指定し、そのアドレスに関数「Sub_Func_A0()」を格納する。例えば、パケット解析部122は、プログラム番号をアドレスに変換するテーブルを参照して、関数「Sub_Func_A0()」を格納すべきアドレスを決定する。ここで、パラメータ部42に含まれるプログラム番号と関数「Sub_Func_A()」のプログラム番号が同じであるため、パケット解析部122は、プログラムバッファ123に格納されていた関数「Sub_Func_A()」を関数「Sub_Func_A0()」で置き換える。
図7を参照して、CPU111は、起動すると、メインメモリ112に格納された関数「Main_Func()」に対してプログラムフェッチを行い、メイン関数「Main_Func()」の実行を開始する(S202)。CPU111は、メイン関数「Main_Func()」に基づいてプログラムバッファ123に格納された関数「Sub_Func_A0()」に対してプログラムフェッチを行い、関数「Sub_Func_A0()」を実行する(S204)。関数「Sub_Func_A0()」の実行後、CPU111は、メイン関数「Main_Func()」に戻り、終了・ループ状態となる(S206)。
次に、ステップS208を説明する。関数「Sub_Func_A0()」に基づいてCPUユニット110のCPU111が実行する処理を変更したいとき、CPUユニット210のCPU211は、CPU111に実行させるべきプログラムコードとしての関数「Sub_Func_A1()」を生成する。CPUユニット210のCPU211は、関数「Sub_Func_A0()」を修正することにより関数「Sub_Func_A1()」を生成してもよい。CPUユニット210は、CPUボード間インターフェース300を介してCPUユニット110に関数「Sub_Func_A1()」を含む他のプログラムデータパケット40を送信する。インターフェース制御部120のパケットバッファ121は、他のプログラムデータパケット40を受信する。パケットバッファ121は、他のプログラムデータパケット40をパケット解析部122に送る。
他のプログラムデータパケット40のヘッダ部41は、デバイスポート番号、他のプログラムデータパケット40のパケットタイプがCPU間通信であることを特定するID、他のプログラムデータパケット40のID、データ長などを含む。他のプログラムデータパケット40のパラメータ部42は、送信元であるCPU211を特定するID、送信先であるCPU111を特定するID、及びプログラム番号を含む。他のプログラムデータパケット40のデータ部43は、関数「Sub_Func_A1()」を含む。関数「Sub_Func_A1()」はバイナリコードである。
ステップS208において、パケット解析部122は、他のプログラムデータパケット40を解析し、ヘッダ部41及びデータ部43を互いに分離する。パケット解析部122は、ヘッダ部41を解析する。解析の結果、他のプログラムデータパケット40のパケットタイプがCPU間通信であることを認識すると、パケット解析部122のハードウェアは、データ部43に含まれる関数「Sub_Func_A1()」をプログラムバッファ123に自動的に格納する。このとき、パケット解析部122は、パラメータ部42に含まれるプログラム番号に基づいてプログラムバッファ123内のアドレスを指定し、そのアドレスに関数「Sub_Func_A1()」を格納する。ここで、他のプログラムデータパケット40のパラメータ部42に含まれるプログラム番号と関数「Sub_Func_A0()」をデータ部43に含むプログラムデータパケット40のパラメータ部42に含まれていたプログラム番号が同じであるため、パケット解析部122は、プログラムバッファ123に格納されていた関数「Sub_Func_A0()」を関数「Sub_Func_A1()」で置き換える。関数「Sub_Func_A1()」がバイナリコードであるため、CPU111は、関数「Sub_Func_A1()」を即座に実行することが可能である。
ここで、パケット解析部122がプログラムバッファ123への関数「Sub_Func_A1()」の格納を開始しようとした時にCPU11がプログラムバッファ123に格納された関数「Sub_Func_A0()」に対するプログラムフェッチを行っている場合、インターフェース制御部120のハードウェアは、CPU11が関数「Sub_Func_A0()」に対するプログラムフェッチを行っている間、パケット解析部122によるプログラムバッファ123に対する関数「Sub_Func_A1()」の格納を待ち状態に設定する。パケット解析部122は、CPU111によるプログラムバッファ123に格納された関数「Sub_Func_A0()」に対するプログラムフェッチが終了してから、プログラムバッファ123に関数「Sub_Func_A1()」を格納する。
図7を参照して、CPU111は、メイン関数「Main_Func()」に基づいてプログラムバッファ123に対してプログラムフェッチを行い、プログラムバッファ123に格納された関数「Sub_Func_A1()」を実行する(S210)。ここで、CPU111がプログラムバッファ123に対するプログラムフェッチを開始しようとした時にパケット解析部122がプログラムバッファ123への関数「Sub_Func_A1()」の格納を行っている場合、インターフェース制御部120のハードウェアは、パケット解析部122が関数「Sub_Func_A1()」をプログラムバッファ123に格納している間、CPU111のプログラムバッファ123に対するプログラムフェッチを待ち状態に設定する。インターフェース制御部120のハードウェア(例えば、パケット解析部122)は、プログラムバッファ123への関数「Sub_Func_A1()」の格納に同期して、CPU111のプログラムフェッチを有効化する。CPU111は、パケット解析部122によるプログラムバッファ123への関数「Sub_Func_A1()」の格納が終了してから、プログラムバッファ123に格納された関数「Sub_Func_A1()」に対するプログラムフェッチを行う。
関数「Sub_Func_A1()」の実行後、CPU111は、メイン関数「Main_Func()」に戻り、終了・ループ状態となる(S212)。CPU111は、メイン関数「Main_Func()」に基づいてプログラムバッファ123に対してプログラムフェッチを行い、プログラムバッファ123に格納された関数「Sub_Func_A1()」を実行する(S214)。
図8は、パケットバッファ121によるプログラムデータパケット40の受信、プログラムデータパケット40のパケットバッファ121からパケット解析部122への出力、及びパケット解析部122によるプログラムバッファ123へのデータ部43の格納を矢印で示す。更に、図8は、CPU111によるメインメモリ112に対するプログラムフェッチ、及びCPU111によるプログラムバッファ123に対するプログラムフェッチを矢印で示す。
上述したように、CPU111がメイン関数「Main_Func()」に基づいてプログラムバッファ123に対してプログラムフェッチを行う。そのため、割込み信号を用いないでCPU111に関数「Sub_Func_A0()」及び関数「Sub_Func_A1」を実行させることができる。したがって、割込みによる遅延が発生することが防がれる。
以上、CPUユニット210がCPUユニット110にプログラムデータパケット40を送る場合の組み込みシステム10の動作を説明した。CPUユニット110及びCPUユニット210が互いにプログラムデータパケットを送ることも可能である。以下、CPUユニット110がCPUユニット210にプログラムデータパケットを送る場合の組み込みシステム10の動作の概略を説明する。
CPUユニット110は、プログラムデータパケットをCPUユニット210に出力する。プログラムデータパケットのデータ部は、CPUユニット210に実行させるべきプログラムコードを含む。CPUユニット210のインターフェース制御部220は、プログラムデータパケットを受け取る。インターフェース制御部220のパケット解析部222は、プログラムデータパケットのヘッダ部を解析し、その解析結果に基づいてプログラムコードをプログラムバッファ223に格納する。CPUユニット210のCPU211は、プログラムバッファ223に対してプログラムフェッチを行う。インターフェース制御部220は、パケット解析部222がプログラムコードをプログラムバッファ223に格納している間、CPU211のプログラムバッファ223に対するプログラムフェッチを待ち状態に設定する。インターフェース制御部220は、CPU211がプログラムバッファ223に対してプログラムフェッチを行っている間、パケット解析部222によるプログラムバッファ223に対するプログラムコードの格納を待ち状態に設定する。
以上、CPUユニット110及び210が別々の基板に搭載される場合を説明したが、CPUユニット110及び210は同一の基板に搭載されてもよい。組み込みシステム10をUSBハードディスクドライブ以外の電子機器に適用してもよい。CPUボード100及び200は、異なる動作を実行してもよく、同一の動作を実行してもよい。プログラムデータパケット40のデータ部43は、複数の関数を含んでもよい。CPU111及びメインメモリ112は、同一のチップに設けられてもよく、別々のチップに設けられてもよい。CPU111及びインターフェース制御部120は、同一のチップに設けられてもよく、別々のチップに設けられてもよい。CPU211及びメインメモリ212は、同一のチップに設けられてもよく、別々のチップに設けられてもよい。CPU211及びインターフェース制御部220は、同一のチップに設けられてもよく、別々のチップに設けられてもよい。
(実施の形態3)
次に、実施の形態3にかかる組み込みシステム10及びCPU間通信方法を説明する。以下、実施の形態2と相違する事項を説明する。
実施の形態3では、関数「Sub_Func_A0()」を関数「Sub_Func_A1()」で更新した(置き換えた)際に、その更新をCPU111に通知する。そのため、関数「Sub_Func_A1()」をデータ部43に含むプログラムデータパケット40のヘッダ部41は、関数の更新を通知する割込みを発生させることを指定するフラグを含む。
図9を参照して、パケット解析部122は、関数「Sub_Func_A1()」をデータ部43に含むプログラムデータパケット40のヘッダ部41を解析する。その解析の結果、ヘッダ部41が上述したフラグを含むことを認識すると、パケット解析部122は、関数「Sub_Func_A1()」をプログラムバッファ123に格納した後、CPU111に割込み信号50を出力する。割込み信号50がない場合、CPU111は、メイン関数「Main_Func()」を通常の手順で実行する中でプログラムバッファ123に格納された関数「Sub_Func_A1()」に対してプログラムフェッチを行う。割込み信号50がある場合、CPU111は、例えば、通常と異なる手順でメイン関数「Main_Func()」を実行することができる。
実施の形態3によれば、割込み信号50を発生させるためのフラグとCPU111に実行させるべき関数「Sub_Func_A1()」とが同一のパケットで送られる。そのため、一般的な割込みベクタ方式によるCPU間通信よりも高速にCPU間通信を行うことが可能である。実施の形態3によれば、プログラムデータパケット40の受信、プログラムデータパケット40の解析、関数のプログラムバッファ123への格納、及び割込み信号50の出力をインターフェース制御部120のハードウェアにより高レスポンスで実現できる。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
10 組み込みシステム
110、210 CPUユニット
111、211 CPU
112、212 メインメモリ
120、220 インターフェース制御部
123、223 プログラムバッファ
40 プログラムデータパケット
41 ヘッダ部
43 データ部
50 割込み信号

Claims (4)

  1. 第1CPUユニットと、
    第2CPUユニットと
    を具備し、
    前記第2CPUユニットは、第1プログラムデータパケットを前記第1CPUユニットに出力し、
    前記第1プログラムデータパケットの第1データ部は、前記第1CPUユニットに実行させるべき第1プログラムコードを含み、
    前記第1CPUユニットは、
    第1CPUと、
    前記第1プログラムデータパケットを受け取る第1インターフェース制御部と
    を備え、
    前記第1インターフェース制御部は、前記第1CPUのメモリマップ上におけるプログラムフェッチが可能な第1プログラム領域の一部として機能する第1プログラムバッファを備え、
    前記第1インターフェース制御部は、
    前記第1プログラムコードを前記第1プログラムバッファに格納し、
    前記第1プログラムコードを前記第1プログラムバッファに格納している間、前記第1CPUの前記第1プログラムバッファに対するプログラムフェッチを待ち状態に設定し、
    前記第1CPUが前記第1プログラムバッファに対してプログラムフェッチを行っている間、前記第1プログラムバッファに対する前記第1プログラムコードの格納を待ち状態に設定する
    組み込みシステム。
  2. 請求項1に記載の組み込みシステムであって、
    前記第1CPUユニットは、前記第1プログラム領域の他の一部として機能する第1メモリを備え、
    前記第1CPUユニットは、前記第1メモリに格納されたプログラムコードに基づいて、前記第1プログラムバッファに対するプログラムフェッチを行う
    組み込みシステム。
  3. 請求項1又は2に記載の組み込みシステムであって、
    前記第1インターフェース制御部は、
    前記第1プログラムデータパケットの第1ヘッダ部を解析し、
    前記第1ヘッダ部を解析した結果に基づいて前記第1CPUに割込み信号を出力する
    組み込みシステム。
  4. 請求項1乃至3のいずれか1項に記載の組み込みシステムであって、
    前記第1CPUユニットは、第2プログラムデータパケットを前記第2CPUユニットに出力し、
    前記第2プログラムデータパケットの第2データ部は、前記第2CPUユニットに実行させるべき第2プログラムコードを含み、
    前記第2CPUユニットは、
    第2CPUと、
    前記第2プログラムデータパケットを受け取る第2インターフェース制御部と
    を備え、
    前記第2インターフェース制御部は、前記第2CPUのメモリマップ上におけるプログラムフェッチが可能な第2プログラム領域の一部として機能する第2プログラムバッファを備え、
    前記第2インターフェース制御部は、
    前記第2プログラムコードを前記第2プログラムバッファに格納し、
    前記第2プログラムコードを前記第2プログラムバッファに格納している間、前記第2CPUの前記第2プログラムバッファに対するプログラムフェッチを待ち状態に設定し、
    前記第2CPUが前記第2プログラムバッファに対してプログラムフェッチを行っている間、前記第2プログラムバッファに対する前記第2プログラムコードの格納を待ち状態に設定する
    組み込みシステム。
JP2012281225A 2012-12-25 2012-12-25 組み込みシステム Active JP6138482B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012281225A JP6138482B2 (ja) 2012-12-25 2012-12-25 組み込みシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012281225A JP6138482B2 (ja) 2012-12-25 2012-12-25 組み込みシステム

Publications (2)

Publication Number Publication Date
JP2014126917A JP2014126917A (ja) 2014-07-07
JP6138482B2 true JP6138482B2 (ja) 2017-05-31

Family

ID=51406387

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012281225A Active JP6138482B2 (ja) 2012-12-25 2012-12-25 組み込みシステム

Country Status (1)

Country Link
JP (1) JP6138482B2 (ja)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01134501A (ja) * 1987-11-19 1989-05-26 Fanuc Ltd Pcのプログラム編集方式
JPH02125303A (ja) * 1988-11-04 1990-05-14 Omron Tateisi Electron Co ブログラマブル・コントローラ
JPH10334053A (ja) * 1997-05-29 1998-12-18 Hitachi Ltd コンピュータシステム
JP4457577B2 (ja) * 2003-05-19 2010-04-28 日本電気株式会社 マルチプロセッサシステム
US7886287B1 (en) * 2003-08-27 2011-02-08 Avaya Inc. Method and apparatus for hot updating of running processes
US20090288069A1 (en) * 2008-05-15 2009-11-19 One Microsoft Way Dynamic Declarative Application Description
WO2010073444A1 (ja) * 2008-12-24 2010-07-01 パナソニック株式会社 バスコントローラ及び初期ブートプログラムのパッチ方法

Also Published As

Publication number Publication date
JP2014126917A (ja) 2014-07-07

Similar Documents

Publication Publication Date Title
JP7313381B2 (ja) ハードウェアアクセラレーションのためのハードウェアリソースの埋込みスケジューリング
KR102245247B1 (ko) 트리거된 동작을 이용하는 gpu 원격 통신
JP4678623B2 (ja) 非対称型異種混合マルチプロセッサ環境(asymmetric heterogeneous multiprocessor environment)におけるメモリバリア要素(Primitive)
JP2009265963A (ja) 情報処理システム及びタスクの実行制御方法
JP4563829B2 (ja) ダイレクトメモリアクセス制御方法、ダイレクトメモリアクセス制御装置、情報処理システム、プログラム
KR20160013351A (ko) 데이터 저장 장치 및 그것의 데이터 처리 방법
JP2008047116A (ja) 入力/出力装置とメモリ間のデータ転送の融通性のある制御
JP2007079789A (ja) 計算機システム及びイベント処理方法
JP2006338538A (ja) ストリームプロセッサ
KR20180010951A (ko) 데이터 스토리지 시스템의 낮은 쓰기 레이턴시를 얻는 방법
WO2009144892A1 (ja) デバイスエミュレーション支援装置、デバイスエミュレーション支援方法、デバイスエミュレーション支援回路及び情報処理装置
JP6250447B2 (ja) 半導体装置及び命令読み出し制御方法
US7685351B2 (en) External device access apparatus
JP2009527815A5 (ja)
JP7093979B2 (ja) デバイスプロキシ装置及びそれを含む計算機システム
US20060184708A1 (en) Host controller device and method
KR20080004875A (ko) 커맨드 디코딩 시스템, 플래시 메모리 커맨드 디코딩시스템 및 이를 이용한 방법
JP7568003B2 (ja) 情報処理装置、および、データ転送方法
US20050256998A1 (en) Bus bridge device
WO2009098737A1 (ja) 外部デバイスアクセス装置、その制御方法及びシステムlsi
JP6138482B2 (ja) 組み込みシステム
JP4594889B2 (ja) 複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法、および、複数の処理装置を備えたシステム
EP2194458A2 (en) Request processing device, request processing system, and access testing method
JP4856413B2 (ja) 演算処理装置、情報処理装置、及び演算処理装置の制御方法
JP2005258509A (ja) ストレージ装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151111

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160525

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160628

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160819

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170117

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170301

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20170310

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: 20170404

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170426

R150 Certificate of patent or registration of utility model

Ref document number: 6138482

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350