(57)【要約】      （修正有）【課題】マルチプロセッサ組み込み機器におけるプロセッサプロセッサへのプログラム割当を、他プロセッサの振る舞いを考慮して、バススレーブへのアクセス集中による処理時間増大を最小限にとどめる。【解決手段】各プロセッサにプログラムを割り当てるときの参照にするため、バスマスター１０、２０、３０とバススレーブ１００、２００、３００の組み合わせ毎に、バスマスターからバススレーブへのアクセス要求回数、バスマスターからのアクセス要求発行からバススレーブでの要求受付まで、バスマスターからのアクセス要求でバススレーブ処理を開始するまで、バスマスターから発行されたアクセス要求から、バススレーブでのアクセス要求に対する応答までの各レイテンシを計測する。【選択図】図１
2014153755.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサを含み、バスに対してマスターとなり、アクセス要求を発行する複数のバスマスターと
前記複数のバスマスターから複数のアクセス要求を受付け、保持するアクセス要求バッファを有し、前記バスマスターからのアクセス要求に従い動作する複数のバススレーブとを備え、前記複数のバスマスターと前記複数のバススレーブがバスで相互に接続され、複数のプログラムが複数のバスマスターのプロセッサに個別に割り当てられ、並列に動作するマルチプロセッサ組込み機器において、
前記バスマスターと前記バススレーブの組み合わせ毎に、
前記バスマスターからのアクセス要求回数を計測するアクセス要求回数計測機構と、
前記バスマスターからのアクセス要求発行から前記バススレーブでの要求受付までの累計時間を計測するアクセス要求受付待ち時間計測機構と、
前記バスマスターからのアクセス要求が、このアクセス要求よりも前に発行された他バスマスターからの先行アクセス要求を処理するために、前記前記アクセス要求が前記バススレーブのアクセス要求バッファに留まっている累計時間を計測するアクセス要求バッファ待ち時間計測機構と、
前記バスマスターから発行されたアクセス要求から、前記アクセス要求に対する前記バススレーブによる応答までの累計時間を計測するアクセス要求処理時間計測機構を前記各バススレーブに備えることを特徴とするマルチプロセッサ組込み機器。
【請求項２】
前記プログラム起動時および終了時に、プログラムの識別を示すプログラムIDと、該プログラムを実行するおよび実行したバスマスターのマスターIDを記録するID記録機構と、ID記録機構への書き込みにより、書き込み前のプログラムIDとマスターIDを順番に複数保持するID保持機構を有するシステム監視機構と、
アクセス要求回数計測機構で計測したアクセス要求回数を保持するアクセス要求回数保持機構と、
アクセス要求受付待ち時間計測機構で計測したアクセス要求受付待ち時間を保持するアクセス要求受付待ち時間保持機構と、
アクセス要求バッファ待ち時間計測機構で計測したアクセス要求バッファ待ち時間を保持するアクセス要求バッファ待ち時間保持機構と、
アクセス要求処理時間計測機構で計測したアクセス要求処理時間を保持するアクセス要求処理時間保持機構とをさらに備え、
前記各バスマスターでのプログラム起動時および終了時に、プログラムの起動を制御するシステムプログラムが、前記システム監視機構に対し、前記プログラムIDの書き込み要求を発行して、前記プログラムIDと前記プログラムの起動および終了バスマスターのマスターIDを前記ID記録機構に書き込み、前記マスターIDに対応した前記各保持機構に、それぞれ対応する前記各計測機構の値を保持することを特徴とする請求項１記載のマルチプロセッサ組込み機器。
【請求項３】
前記各バスマスターで実行中のプログラムカウンタの情報が通知され、プログラムの起動を制御するシステムプログラムの領域を示すエリア情報保持機構と、前記プログラムカウンタと前記バスマスターのマスターIDを記録するID記録機構と、前記ID記録機構への書き込みで、書き込み前のプログラムカウンタとマスターIDを順番に複数保持するID保持機構を有するシステム監視機構と、
アクセス要求回数計測機構で計測したアクセス要求回数を保持するアクセス要求回数保持機構と、
アクセス要求受付待ち時間計測機構で計測したアクセス要求受付待ち時間を保持するアクセス要求受付待ち時間保持機構と、
アクセス要求バッファ待ち時間計測機構で計測したアクセス要求バッファ待ち時間を保持するアクセス要求バッファ待ち時間保持機構と、
アクセス要求処理時間計測機構で計測したアクセス要求処理時間を保持するアクセス要求処理時間保持機構とをさらに備え、
前記各バスマスターからの通知されるプログラムカウンタがエリア情報保持機構の範囲内から範囲外に切り替わった場合に、プログラムが実行されたと判断し、プログラムカウンタとバスマスターを示すマスターIDを前記ID記録機構に書き込み、
前記マスターIDに対応した前記各保持機構に、それぞれ対応する前記各計測機構の値を保持することを特徴とする請求項１記載のマルチプロセッサ組込み機器。
【請求項４】
前記各バスマスターのプログラム実行が終了し、各バスマスターのプログラムを置き換えるとき、
前記各バススレーブでのアクセス要求回数保持機構とアクセス要求バッファ待ち時間保持機構で求められるプログラム単位の平均アクセス要求受付待ち時間が、あらかじめ決められた規定値以上で、アクセス要求待ち時間がもっとも大きいプログラムをプログラムの置き換え用追い出し対象プログラムとして、マルチプロセッサ組込み機器のシステムプログラムが選択することを特徴とする請求項２又は３記載のマルチプロセッサ組込み機器。
【請求項５】
前記各バスマスターのプログラム実行が終了し、前記各バスマスターのプログラムを置き換えるとき、前記各バススレーブでのアクセス要求バッファ待ち時間保持機構の値とアクセス要求処理時間保持機構の値で求められるプログラム単位のアクセス要求受付待ち時間比率と、アクセス要求回数保持機構の値が、あらかじめ決められた規定値以上であり、アクセス要求待ち時間がもっとも大きいプログラムをプログラムの置き換え用追い出し対象プログラムとして、マルチプロセッサ組込み機器のシステムプログラムが選択することを特徴とする請求項２又は３記載のマルチプロセッサ組込み機器。
【請求項６】
プログラムの置き換え用追い出し対象プログラムとして、選択されたアクセス要求待ち時間がもっとも大きいプログラムが複数存在する場合に、これらのプログラムのうち、アクセス要求受付待ち時間比率がもっとも大きいプログラムをマルチプロセッサ組込み機器のシステムプログラムが選択することを特徴とする請求項４又は５記載のマルチプロセッサ組込み機器。
【請求項７】
プログラムの置き換え用追い出し対象プログラムとして、選択されたアクセス要求待ち時間がもっとも大きいプログラムが複数存在し、アクセス要求受付待ち時間比率がもっとも大きいプログラムが複数存在する場合に、これらのプログラムのうち、平均アクセス要求受付待ち時間がもっとも大きいプログラムをマルチプロセッサ組込み機器のシステムプログラムが選択することを特徴とする請求項６記載のマルチプロセッサ組込み機器。
【請求項８】
プログラムの置き換え用追い出し対象プログラムが選択された後、置き換え用投入対象プログラムとして、実行順依存性のないプログラムのうち、前記追い出し対象プログラムがアクセス要求したバススレーブへのアクセス要求回数が最小のプログラムをマルチプロセッサ組込み機器のシステムプログラムが選択し、選択したプログラムが並列に実行されるようにプログラム実行順を調整することを特徴とする請求項４ないし７の何れか１項に記載のマルチプロセッサ組込み機器。
【請求項９】
置き換え用投入対象プログラムとして選択されたアクセス要求回数が最小のプログラムが複数存在した場合に、選択されたプログラムの中で、アクセス要求待ち時間が最小のプログラムを、マルチプロセッサ組込み機器のシステムプログラムが選択し、選択したプログラムが並列に実行されるようにプログラム実行順を調整することを特徴とする請求項８記載のマルチプロセッサ組込み機器。
【請求項１０】
置き換え用投入対象プログラムとして選択されたアクセス要求待ち時間が最小のプログラムが複数存在した場合に、選択されたプログラムの中で、アクセス要求バッファ待ち時間が最小のプログラムを、マルチプロセッサ組込み機器のシステムプログラムが選択し、選択したプログラムが並列に実行されるようにプログラム実行順を調整することを特徴とする請求項９記載のマルチプロセッサ組込み機器。
【請求項１１】
前記各バスマスターのプログラム実行が終了し、各バスマスターのプログラムを置き換えるとき、各バススレーブでのアクセス要求回数保持機構とアクセス要求受付待ち時間保持機構で求められるプログラム単位の平均アクセス要求受付待ち時間が、あらかじめ決められた規定値未満であり、かつアクセス要求回数保持機構とアクセス要求バッファ待ち時間保持機構で求められるプログラム単位の平均アクセス要求バッファ待ち時間が、あらかじめ決められた規定値以上である場合に、置き換え用追い出し対象プログラムとして、アクセス要求バッファ待ち時間がもっとも大きいプログラムをマルチプロセッサ組込み機器のシステムプログラムが選択することを特徴とする請求項２又は３記載のマルチプロセッサ組込み機器。
【請求項１２】
前記各バスマスターのプログラム実行が終了し、各バスマスターのプログラムを置き換えるとき、前記各バススレーブでのアクセス要求受付待ち時間保持機構とアクセス要求処理時間保持機構で求められるプログラム単位のアクセス要求受付待ち時間比率が、あらかじめ決められた規定値未満であり、かつ、アクセス要求バッファ待ち時間保持機構とアクセス要求処理時間保持機構で求められるプログラム単位のアクセス要求バッファ待ち時間比率が、あらかじめ決められた規定値以上である場合に、置き換え用追い出し対象プログラムとして、アクセス要求バッファ待ち時間がもっとも大きいプログラムをマルチプロセッサ組込み機器のシステムプログラムが選択することを特徴とする請求項２又は３記載のマルチプロセッサ組込み機器。
【請求項１３】
プログラムの置き換え用追い出し対象プログラムとして、アクセス要求バッファ待ち時間がもっとも大きいプログラムが複数存在する場合に、これらのプログラムのうち、アクセス要求バッファ待ち時間比率がもっとも大きいプログラムをマルチプロセッサ組込み機器のシステムプログラムが選択することを特徴とする請求項１１又は１２記載のマルチプロセッサ組込み機器。
【請求項１４】
置き換え用追い出し対象プログラムとして、アクセス要求バッファ待ち時間がもっとも大きいプログラムが複数存在し、アクセス要求バッファ待ち時間比率がもっとも大きいプログラムが複数存在する場合に、これらのプログラムのうち、平均アクセス要求バッファ待ち時間がもっとも大きいプログラムをマルチプロセッサ組込み機器のシステムプログラムが選択することを特徴とする請求項１３記載のマルチプロセッサ組込み機器。
【請求項１５】
プログラムの置き換え用追い出し対象プログラムが選択された後、置き換え用投入対象プログラムとして、実行順依存性のないプログラムのうち、該バススレーブへのアクセス要求回数が最小のプログラムをマルチプロセッサ組込み機器のシステムプログラムが選択し、選択したプログラムが並列に実行されるようにプログラム実行順を調整することを特徴とする請求項１１ないし１４の何れか１項に記載のマルチプロセッサ組込み機器。
【請求項１６】
置き換え用投入対象プログラムとして、選択された実行順依存性のないプログラムのうち、該バススレーブへのアクセス要求回数が最小のプログラムが複数存在した場合に、マルチプロセッサ組込み機器のシステムプログラムが、アクセス要求バッファ待ち時間が最小のプログラムを選択し、選択したプログラムが並列に実行されるようにプログラム実行順を調整することを特徴とする請求項１５記載のマルチプロセッサ組込み機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサと該複数のプロセッサからの複数のアクセス要求を受付ける複数のバススレーブが、バスで相互に接続され、複数のプログラムが複数のプロセッサに個別に割り当てられ、並列に動作する組込み機器に関し、特に、組込み機器に搭載されたマルチプロセッサへのプログラムの割当方法に関するものである。
【背景技術】
【０００２】
近年の組み込み機器は、高性能なプロセッサを複数搭載されたマルチプロセッサが採用されるようになっている。
従来は、単一プロセッサで逐次的にプログラムの処理を行っていたが、複数のプロセッサで並列に複数のプログラムを実行することで、バススレーブへのアクセスが集中し、レイテンシ（アクセスの応答時間）が単一プロセッサ時に比べ、増加しており、このことにより、処理時間が増大している。特に、リアルタイム性を要求される組込み機器においては、処理時間の増大を最小限にとどめることが求められている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開2008-84009号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来のマルチプロセッサにおけるプログラムのプロセッサへの割当方法は、１度処理時間を測定した際のパフォーマンスモニター情報を用いて、次に実行する際に、そのパフォーマンスモニター情報を用いて、割り当てるプロセッサを決定していた。
しかし、この方法では、他のプロセッサの振る舞いを考慮した割当になっておらず、バススレーブへのアクセス集中による処理時間増大を最小限にとどめることが容易ではなかった。
本発明は、マルチプロセッサの各プロセッサにプログラムを割り当てる際に、バススレーブへのアクセス集中による処理時間増大を最小限にとどめるプログラムの割り当てを行うために、各プロセッサとバススレーブの組み合わせ毎に、各プロセッサのバススレーブへのアクセスのレイテンシを要素単位に正確に求めるものである。
【課題を解決するための手段】
【０００５】
本発明のマルチプロセッサ組込み機器は、
プロセッサを含み、バスに対してマスターとなり、アクセス要求を発行する複数のバスマスターと、
前記複数のバスマスターから複数のアクセス要求を受付け、保持するアクセス要求バッファを有し、前記バスマスターからのアクセス要求に従い動作する複数のバススレーブとを備え、前記複数のバスマスターと前記複数のバススレーブがバスで相互に接続され、複数のプログラムが複数のバスマスターのプロセッサに個別に割り当てられ、並列に動作するマルチプロセッサ組込み機器において、
前記バスマスターと前記バススレーブの組み合わせ毎に、
前記バスマスターからのアクセス要求回数を計測するアクセス要求回数計測機構と、
前記バスマスターからのアクセス要求発行から前記バススレーブでの要求受付までの累計時間を計測するアクセス要求受付待ち時間計測機構と、
前記バスマスターからのアクセス要求が、このアクセス要求よりも前に発行された他バスマスターからの先行アクセス要求を処理するために、前記アクセス要求が前記バススレーブのアクセス要求バッファに留まっている累計時間を計測するアクセス要求バッファ待ち時間計測機構と、
前記バスマスターから発行されたアクセス要求から、前記アクセス要求に対する応答までの累計時間を計測するアクセス要求処理時間計測機構を各バススレーブに備える。
【発明の効果】
【０００６】
本発明のマルチプロセッサ組込み機器によれば、前記バスマスターと前記バススレーブの組み合わせ毎に、前記バスマスターから前記バススレーブへのアクセス要求回数、前記バスマスターからのアクセス要求発行から前記バススレーブでの要求受付まで、前記バスマスターからのアクセス要求が前記バススレーブ処理を開始するまで、前記バスマスターから発行されたアクセス要求から、前記バススレーブでの前記アクセス要求に対する応答までの各レイテンシを計測しているので、各プロセッサにプログラムを割り当てるとき、これらの各レイテンシを参照することで、バススレーブへのアクセス集中による処理時間増大を最小限にとどめることが可能となる。
【図面の簡単な説明】
【０００７】
【図１】本発明の実施の形態１における構成要素を示す構成図である。
【図２】本発明の実施の形態２における構成要素を示す構成図である。
【図３】アクセス要求発行から、アクセス応答までのタイミング図である。
【図４】マスターＭ０から、複数のスレーブにアクセスを行うプログラムでの処理時間の内訳説明図である。
【図５】各マスターに割り当てられる実行プログラムの説明図である。
【図６】各マスターでのプログラム処理時間をグラフ化した図である。
【図７】アクセス履歴情報の抽出結果を示す図である。
【図８】採取アクセス履歴情報によるプログラム割付変更方法のフロー図である。
【図９】アクセス履歴情報の抽出結果により比率１、時間２、比率３、時間４の算出結果を示す図である。
【図１０】置き換え用追い出し対象プログラムの特定方法のフロー図である。
【図１１】置き換え用投入対象のプログラム特定方法のフロー図である。
【図１２】比率３または時間４が規定値以上の場合の置き換え用追い出し対象プログラムの特定方法のフロー図である。
【図１３】比率３または時間４が規定値以上の場合の置き換え用投入対象プログラムの特定方法のフロー図である。
【図１４】並び替えの結果、各マスターに割り当てられた実行プログラムの説明図である。
【図１５】並び替えを行った後のプログラム処理時間をグラフ化した図である。
【発明を実施するための形態】
【０００８】
実施の形態1．
以下、図面を参照して、本発明の実施の形態１について説明する。
図１は、本発明の実施の形態１の構成要素を示す構成図である。この図において、10はバスマスター（以下本明細書および図面には単にマスターと記す）０となって、バススレーブ（以下本明細書および図面には単にスレーブと記す）０にアクセス要求を発行するプロセッサ０、11はプロセッサ０(10)からのアクセス要求を示すアクセス要求信号Ｍ０、12はアクセス要求信号Ｍ０(11)に対する受付を示すアクセス受付信号Ｍ０、13はアクセス要求信号Ｍ０(11)に対する応答を示すアクセス応答信号Ｍ０、20はマスター１となって、スレーブにアクセス要求を発行するプロセッサ１、21はプロセッサ１(20)からのアクセス要求を示すアクセス要求信号Ｍ１、22はアクセス要求信号Ｍ１(21)に対する受付を示すアクセス受付信号Ｍ１、23はアクセス要求信号Ｍ１(21)に対する応答を示すアクセス応答信号Ｍ１、30はマスター２となって、スレーブにアクセス要求を発行するプロセッサ２、31はプロセッサ２(30)からのアクセス要求を示すアクセス要求信号Ｍ２、32はアクセス要求信号Ｍ２(31)に対する受付を示すアクセス受付信号Ｍ２、33はアクセス要求信号Ｍ２(31)に対する応答を示すアクセス応答信号Ｍ２である。
【０００９】
100はプロセッサ０〜プロセッサ２であるマスター０(10)〜マスター２(30)からのアクセス要求に応答するスレーブ０、101はスレーブ０(100)へのアクセス要求を示すアクセス要求信号Ｓ０、102はアクセス要求信号Ｓ０(101)に対するスレーブ０(100)からの受付を示すアクセス受付信号Ｓ０、103はアクセス要求信号Ｓ０(101)に対するスレーブ０(100)からの応答を示すアクセス応答信号Ｓ０、104は複数のマスターからスレーブ０(100)への複数のアクセス要求を受付け、保持するアクセス要求バッファである。
【００１０】
111はマスター０(10)からスレーブ０(100)へのアクセス要求回数を計測するアクセス要求回数計測機構、112はマスター０(10)からスレーブ０(100)へのアクセス要求待ち時間の累計時間を計測するアクセス要求待ち時間計測機構、113はマスター０(10)からスレーブ０(100)へのアクセスで、バスマスター０(10)からの今回のアクセス要求よりも前に発行された他マスターからの先行アクセス要求を処理するために、アクセス要求バッファ(104)に留まっている累計時間を計測するアクセス要求バッファ待ち時間計測機構、114はマスター０(10)からスレーブ０(100)へのアクセス要求から、アクセス要求に対するスレーブ０(100)の応答までの累計時間を計測するアクセス要求処理時間計測機構である。
【００１１】
115はマスター０(10)での実行プログラムが切り替わった時に、アクセス要求回数計測機構(111)の値を取り込み、保持するアクセス要求回数保持機構、116はマスター０(10)での実行プログラムが切り替わった時に、アクセス要求待ち時間計測機構(112)の値を取り込み、保持するアクセス要求待ち時間保持機構、117はマスター０(10)での実行プログラムが切り替わった時に、アクセス要求バッファ待ち時間計測機構(113)の値を取り込み、保持するアクセス要求バッファ待ち時間保持機構、118はマスター０(10)での実行プログラムが切り替わった時に、アクセス要求処理時間計測機構(114)の値を取り込み、保持するアクセス要求処理時間保持機構である。
【００１２】
110はアクセス要求回数計測機構(111)とアクセス要求待ち時間計測機構(112)とアクセス要求バッファ待ち時間計測機構(113)とアクセス要求処理時間計測機構(114)とアクセス要求回数保持機構(115)とアクセス要求待ち時間保持機構(116)とアクセス要求バッファ待ち時間保持機構(117)とアクセス要求処理時間保持機構(118)で構成されるマスター０(10)からスレーブ０(100)へのアクセス履歴を計測／保持するマスター０用アクセス履歴保持機構、120はアクセス履歴保持機構(110)と同様の構成を有し、マスター１(20)からスレーブ０(100)へのアクセス履歴を計測／保持するマスター１(20)用アクセス履歴保持機構、130はアクセス履歴保持機構(110)と同様の構成を有し、マスター２(30)からスレーブ０(100)へのアクセス履歴を計測／保持するマスター２(30)用アクセス履歴保持機構である。
【００１３】
200はマスター０(10)〜マスター２(30)であるプロセッサ０〜プロセッサ２からのアクセス要求に応答するスレーブ１で、内部のアクセス履歴保持機構の構成は、スレーブ０(100)と同様であり、それぞれのマスター０(10)〜マスター２(30)に対応するアクセス履歴保持機構を有している。
201はスレーブ１(200)へのアクセス要求を示すアクセス要求信号Ｓ１、202はアクセス要求信号Ｓ１(201)に対するスレーブ１(200)からの受付を示すアクセス受付信号Ｓ１、203はアクセス要求信号Ｓ１(201)に対するスレーブ１(200)からの応答を示すアクセス応答信号Ｓ１である。
【００１４】
300はマスター０(10)〜マスター２(30)であるプロセッサ０〜プロセッサ２からのアクセス要求に応答するスレーブ２で、内部のアクセス履歴保持機構の構成はスレーブ０(100)と同様であり、それぞれのマスター０(10)〜マスター２(30)に対応するアクセス履歴保持機構を有している。
301はスレーブ２(300)へのアクセス要求を示すアクセス要求信号Ｓ２、302はアクセス要求信号Ｓ２に対するスレーブ２(300)からの受付を示すアクセス受付信号Ｓ２、303はアクセス要求信号Ｓ２に対するスレーブ２(300）からの応答を示すアクセス応答信号Ｓ２である。
【００１５】
400はマスター０(10)〜マスター２(30)での実行プログラムが切り替わったことを受けて、全スレーブ(100)〜(300)に所定の書込み要求を指示するシステム監視機構、401はシステム監視機構(400)へのアクセス要求を示す要求信号ＳＳ、402は要求信号ＳＳ(401)に対するシステム監視機構(400）からの受付を示す受付信号ＳＳ、403は要求信号ＳＳ(401)に対するシステム監視機構(400)からの応答を示す応答信号ＳＳである。
【００１６】
410はマスター０(10)〜マスター２(30)での実行プログラムが切り替わったことを受けて、スレーブのマスター毎のアクセス履歴保持機構に対して、アクセス要求回数計測機構の内容をアクセス要求回数保持機構に、アクセス要求待ち時間計測機構の内容をアクセス要求待ち時間保持機構に、アクセス要求バッファ待ち時間計測機構の内容をアクセス要求バッファ待ち時間保持機構に、アクセス要求処理時間計測機構の内容をアクセス要求処理時間保持機構に、書き込みを行う書き込み要求信号である。
411はプログラム起動時、ないし終了時に、プログラムの識別を示すプログラムＩＤと、プログラムＩＤを実行する、ないし実行したマスターのＩＤを記録するID記録機構、412はマスター０(10)〜マスター２(30)での実行プログラムが切り替わった時に、ID記録機構(411)の値を取り込み、保持するID保持機構である。
【００１７】
40はマスター０(10)とは、アクセス要求信号Ｍ０(11)、アクセス受付信号Ｍ０(12)およびアクセス応答信号Ｍ０(13)を介して、マスター１(20)とは、アクセス要求信号Ｍ１(21)、アクセス受付信号Ｍ１(22)およびアクセス応答信号Ｍ１(23)を介して、マスター２(30)とは、アクセス要求信号Ｍ２(31)、アクセス受付信号Ｍ２(32)およびアクセス応答信号Ｍ２(33)を介して相互に接続され、スレーブ０(100)とは、アクセス要求信号Ｓ０(101)、アクセス受付信号Ｓ０(102)およびアクセス応答信号Ｓ０(103)を介して、スレーブ１(200)とは、アクセス要求信号Ｓ１(201)、アクセス受付信号Ｓ１(202)およびアクセス応答信号Ｓ１(203)を介して、スレーブ２(300)とは、アクセス要求信号Ｓ２(301)、アクセス受付信号Ｓ２(302)およびアクセス応答信号Ｓ２(303)を介して、システム監視機構(400)とは、アクセス要求信号ＳＳ（４０１）、アクセス受付信号ＳＳ（４０２）およびアクセス応答信号ＳＳ(403)を介して、相互に接続された相互接続バスである。
【００１８】
図３にアクセス要求発行から、アクセス応答までのタイミング図を示す。
図３に示すようにマスターから相互接続バス（４０）に向けてアクセス要求信号が出力されてから、スレーブよりアクセス受付信号が出力されるまでが、アクセス要求待ち時間、アクセス受付信号が出力されてから、アクセス要求バッファからの出力信号が出力されるまでが、アクセス要求バッファ待ち時間、アクセス要求信号が出力されてから、アクセス応答信号が出力されるまでが、アクセス要求処理時間と定義する。
図４に単一のバスマスターＭ０(10)から、複数のスレーブ０(100)〜２(300)にアクセスを行うプログラムでの処理時間の内訳を示す。単純化すると、マスターであるプロセッサの内部処理時間と各スレーブへのアクセス要求処理時間の和で近似できる。
【００１９】
組込み機器がリセット後の定周期処理に入ると、複数のマスター（プロセッサ）に複数のプログラムが割り当てられ、複数のマスターが並列に動作し、マスター（プロセッサ）毎、プログラム毎にアクセス要求回数、アクセス要求待ち時間、アクセス要求バッファ待ち時間、アクセス要求処理時間が計測／保持される。各マスター（プロセッサ）で実行するプログラムは、図５に示すように割り当てられている。
【００２０】
定周期処理に入ると、例えば、図５に示すようにマスター０(10)にプログラムＡが、マスター１(20)にプログラムＬが、マスター２(30)にプログラムＸが、ＯＳなどのシステムプログラムによって割り付けられる。その際、システムプログラムは、割り付けたプログラムのＩＤをシステム監視機構(400)に備えられたＩＤ記録機構(411)に書き込む。また、システム監視機構(400)は、どのマスターからのアクセス要求で、ＩＤ記録機構(411)への書き込みを行ったかが特定できるので、プログラムＩＤとマスターＩＤを対にしてＩＤ保持機構(412)に記録する。
【００２１】
また、マスターＩＤが特定されると、各スレーブのマスターＩＤに対応したアクセス履歴保持機構(110,120,130の何れか)に対して、書き込み要求信号(410)を使い、プログラムＩＤとマスターＩＤの対を全スレーブに対し通知する。
通知を受けたスレーブ(100,200,300)は、それぞれが保有するアクセス履歴保持機構のうち、マスターＩＤに対応するアクセス履歴保持機構(110)で、アクセス要求回数計測機構(111)の値を取り込み、アクセス要求回数保持機構(115)に保持する。
同様に、マスターＩＤに対応するアクセス履歴保持機構(110)で、アクセス要求待ち時間計測機構(112)の値を取り込み、アクセス要求待ち時間保持機構(116)に保持、アクセス要求バッファ待ち時間計測機構(113)の値を取り込み、アクセス要求バッファ待ち時間保持機構(117)に保持、アクセス要求処理時間計測機構(114)の値を取り込み、アクセス要求処理時間保持機構(118)に保持する。
【００２２】
各マスター（プロセッサ）に割り付けられたプログラムの実行が終了すると、システムプログラムに制御が戻る。その際、終了したプログラムのＩＤをシステム監視機構(400)に備えられたＩＤ記録機構(411)に書き込む。プログラムの起動時と同じように、スレーブ(100,200,300)に対して、書き込み要求信号(410)を使い、全スレーブにプログラムの実行が終了したマスターのマスターＩＤの通知を行う。
【００２３】
各マスター（プロセッサ）では、実行していたプログラムが終了したため、次に実行すべきプログラムの割付を行う。
図５に示すように、マスター０(10)にプログラムＢが、マスター１(20)にプログラムＭが、マスター２(30)にプログラムＹが、システムプログラムによって割り付けられる。同様に、新たに割り付けたプログラムのＩＤをシステム監視機構(400)に備えられたＩＤ記録機構(411)に書き込む。さらに、プログラムＩＤとマスターＩＤを対にして、ＩＤ保持機構(412)に記録する。
【００２４】
各マスター（プロセッサ）に割り付けられたプログラムの実行が終了すると、システムプログラムに制御が戻る。その際、終了したプログラムのＩＤをシステム監視機構(400)に備えられたＩＤ記録機構(411)に書き込む。プログラムの起動時と同じように、スレーブ(100,200,300)に対して、書き込み要求信号(410)を使い、全スレーブにプログラムの実行が終了したマスターＩＤの通知を行う。
各マスター（プロセッサ）では、実行していたプログラムが終了したため、次に実行すべきプログラムの割付を行い、マスター０(10)にプログラムＣが、マスター１(20)にプログラムＮが、マスター２(30)にプログラムＺが、システムプログラムによって割り付けられる。同様に、新たに割り付けたプログラムのＩＤをシステム監視機構(400)に備えられたＩＤ記録機構(411)に書き込む。
さらに、プログラムＩＤとマスターＩＤを対にして、ＩＤ保持機構(412)に記録する。
【００２５】
以上のようにして、プログラム毎に、アクセス履歴情報を保持しておき、全プログラム終了時に、スレーブに保持するアクセス履歴情報の抽出を行う。
本実施の形態では、プログラム実行終了時の値（時刻）とプログラム実行開始時の値（時刻）の差分をとるようにしたが、書き込み要求信号(410)を使い、全スレーブにマスターＩＤの通知を行うと、該当するマスターＩＤの各種計測機構の値をクリアしてもかまわない。このようにすると各種計測機構の値が実行全プログラムの累積時間となる。この両者は計算方法に違いがあるのみで、累積時間そのものの違いはない。
【００２６】
各マスターでのプログラム処理時間をグラフ化したものを図６に示し、アクセス履歴情報の抽出を行った結果を図７に示す。
【００２７】
次に、採取したアクセス履歴情報に従い、システムプログラムによるプログラム割付の変更方法を図８のフロー図で説明する。
図８において、S100で、各プログラムにおけるスレーブ毎のアクセス要求処理時間に占めるアクセス要求受付待ち時間の比率１を求める。S110で、各プログラムにおけるスレーブ毎の平均アクセス要求受付待ち時間２を求める。S120で、各プログラムにおけるスレーブ毎のアクセス要求処理時間に占めるアクセス要求バッファ受付待ち時間の比率３を求める。S130で、各プログラムにおけるスレーブ毎の平均アクセス要求バッファ受付待ち時間４を求める。
【００２８】
アクセス履歴情報の抽出を行った図７に示す結果を元に、上記S100〜S130の処理により求めた比率１、時間２、比率３、時間４の結果を図９に示す。
S140で、変数Nを1に初期化する。S150で、各マスター（プロセッサ）で実行したＮ番目のプログラムがあるか、どうかの判定を行う。N=1の場合では、マスター０（１０）でプログラムＡ、マスター１(20)でプログラムＬ、マスター２(30)でプログラムＸを実行しているので、判定結果はYESとなる。S150でNOとなった場合は、評価すべきプログラムがないこととなるので、プログラム割付の変更処理を終了する。
【００２９】
S160で、各マスター（プロセッサ）でN番目に実行したプログラムの比率１、時間２、比率３、時間４を抽出する。N=1の場合、プログラムＡのスレーブ０では、比率１＝  ０％、時間２＝０．０ｍ秒、比率３＝３１％、時間４＝０．９ｍ秒、プログラムＡのスレーブ１では、比率１＝４２％、時間２＝２．５ｍ秒、比率３＝２５％、時間４＝１．５ｍ秒、プログラムＡのスレーブ２では、比率１＝  ０％、時間２＝０．０ｍ秒、比率３＝  ０％、時間４＝０．０ｍ秒、
プログラムＬのスレーブ０では、比率１＝  ０％、時間２＝０．０ｍ秒、比率３＝３８％、時間４＝１．３ｍ秒、プログラムＬのスレーブ１では、比率１＝３８％、時間２＝２．０ｍ秒、比率３＝２５％、時間４＝１．３ｍ秒、プログラムＬのスレーブ２では、比率１＝  ０％、時間２＝０．０ｍ秒、比率３＝  ０％、時間４＝０．０ｍ秒、
プログラムＸのスレーブ０では、比率１＝  ０％、時間２＝０．０ｍ秒、比率３＝  ０％、時間４＝０．０ｍ秒、プログラムＸのスレーブ１では、比率１＝３０％、時間２＝１．２ｍ秒、比率３＝２０％、時間４＝０．８ｍ秒、プログラムＸのスレーブ２では、比率１＝  ０％、時間２＝０．０ｍ秒、比率３＝  ０％、時間４＝０．０ｍ秒となる。
【００３０】
ここで、プログラム割付の変更を行うかどうかの規定値を定める。
スレーブ毎のアクセス要求処理時間に占めるアクセス要求受付待ち時間比率の規定値１を４０％、スレーブ毎の平均アクセス要求受付待ち時間の規定値２を２．０ｍ秒、スレーブ毎のアクセス要求処理時間に占めるアクセス要求バッファ受付待ち時間比率の規定値３を３０％、スレーブ毎の平均アクセス要求バッファ受付待ち時間の規定値４を１．３ｍ秒と規定する。この規定値は、システムにより値が変わる。
【００３１】
S170で、選択されたN=1に該当する場合の全てのプログラムの全てのスレーブに対して、上記の比率１が規定値１以上かどうかの判定を行う。比率１のいずれかが規定値１以上であれば、YESとなり、S200に進む。比率１の全てが、規定値１未満であれば、NOとなり、S180に進む。
図９の例では、プログラムＬ、Ｘでは、比率１＜規定値１となっているが、プログラムＡのスレーブ１で、比率１が４２％となっており、YESとなり、S200に進む。
【００３２】
S180で、S170での判定がNOの場合、S160で選択された全てのプログラムの全てのスレーブに対して、上記の時間２が規定値２以上かどうかの判定を行う。時間２のいずれかが規定値２以上であれば、YESとなり、S200に進む。時間２の全てが、規定値２未満であれば、S500に進む。
【００３３】
S200に進んだ場合は、置き換え用追い出し対象、即ち、置き換え対象（追い出す方）のプログラムを特定する。追い出す対象のプログラム特定方法を、図１０のフロー図に示す。
図１０により、置き換え対象（追い出す方）プログラムの特定方法を説明する。
図１０のS210で、スレーブに対するアクセス要求待ち時間がもっとも多いプログラムを追い出し対象とし、選択する。S220で、S210の処理で選択したプログラムが１つかどうか判定をする。1つのみであれば、YESとなり、終了する。複数あれば、NOとなり、S230に進む。S230で、S210で選択したプログラムのうち、アクセス要求待ち時間比率１がもっとも大きいプログラムを追い出し対象とする。
【００３４】
S240で、S230で選択したプログラムが１つかどうか判定をする。1つのみであれば、YESとなり、処理を終了する。複数あれば、NOとなり、S250に進む。S250で、S230で選択したプログラムのうち、平均アクセス要求待ち時間２がもっとも多いプログラムを追い出し対象とする。S260で、S250で選択したプログラムが１つかどうか判定をする。1つのみであれば、YESとなり、処理を終了する。複数あれば、NOとなり、S270に進む。S270で、S250で選択したプログラムのうち、ランダムに1つのプログラムを選び、追い出し対象とする。
【００３５】
図８に戻り、Ｓ200で追い出し対象を決めた後は、S300で新たに投入するプログラムを特定する。その際、選択するプログラムは、実行順に依存性のないプログラムから選択する。
図７、図９の例では、
S210で、アクセス要求待ち時間がもっとも多いプログラムとして、プログラムＬとプログラムＸが１２ｍ秒となり、これらプログラムが追い出し対象となる。S220では、S210で選択されたプログラムが複数あるため、NOとなる。S230で、アクセス要求待ち時間比率１がもっとも大きいプログラムとして、プログラムＬが追い出し対象となる。S240で、選択されたプログラムが１つであるため、YESとなり、処理を終了する。
【００３６】
追い出し対象プログラムが特定されると、次にS300に進んで、置き換え対象（入れる方）のプログラムを特定する。置き換え用投入対象、即ち、置き換え対象（入れる方）プログラムの特定方法を図１１のフロー図に示す。
図１１のS310で、実行順の依存性のないプログラムから、追い出し対象となったプログラムのアクセス要求待ち時間比率１や、平均アクセス要求待ち時間２が多いスレーブへのアクセス要求回数が最も少ないプログラムを割り付け対象とする。S320で、S310で選択したプログラムが１つかどうか判定をする。1つのみであれば、YESとなり、処理を終了する。複数あれば、NOとなり、S330に進む。S330で、S310で選択したプログラムのうち、アクセス要求待ち時間が最小のプログラムを割り付け対象とする。S340で、S330で選択したプログラムが１つかどうか判定をする。1つのみであれば、YESとなり、処理を終了する。複数あれば、NOとなり、S350に進む。
【００３７】
S350で、S330で選択したプログラムのうち、アクセス要求バッファ待ち時間が最小のプログラムを割り付け対象とする。S360で、S350で選択したプログラムが１つかどうか判定をする。1つのみであれば、YESとなり、処理を終了する。複数あれば、NOとなり、S370に進む。S370で、S350で選択したプログラムのうち、同一プロセッサで実行するプログラムから、ランダムに1つのプログラムを選び、割り付け対象とする。S300の処理を抜けた後は、S400で、Nを１加算（N＝N＋１）し、図８のＳ150に戻る。
【００３８】
図７、図９の例では、S310で、プログラムＢ、Ｎ、Ｙが選択される。S320で、選択されたプログラムが複数あるため、NOとなる。S330で、プログラムＢ、Ｎ、Ｙが選択される。S340で、選択されたプログラムが複数あるため、NOとなる。S350で、プログラムＢ、Ｎ、Ｙが選択される。S360で、選択されたプログラムが複数あるため、NOとなる。S370で、追い出されたプログラムを実行したプロセッサで実行していたプログラムＮが選択され、終了する。この結果、プログラムＬとプログラムＮの実行順が入れ替わる。
【００３９】
アクセス要求待ち時間比率１および平均アクセス要求時間２で、追い出し対象が特定できなかった（図８の処理S180でNO）場合、アクセス要求バッファ待ち時間比率３および平均アクセス要求バッファ待ち時間４で追い出し対象を選択する。
図８のS500で、S160で選択された全てのプログラムの全てのスレーブに対して、上記の比率３が規定値３以上かどうかの判定を行う。比率３のいずれかが規定値３以上であれば、YESとなり、S600に進む。比率３の全てが、規定値未満であれば、NOとなり、S510に進む。S510で、S500により選択された全てのプログラムの全てのスレーブに対して、上記の時間４が規定値４以上かどうかの判定を行う。時間４のいずれかが規定値４以上であれば、YESとなり、S600に進む。時間４の全てが、規定値４未満であれば、S800に進む。
【００４０】
S600に進んだ場合は、置き換え対象（追い出す方）のプログラムを特定する。
追い出すプログラムの特定方法を、図１２のフロー図に示す。
図１２のS610で、スレーブに対するアクセス要求バッファ待ち時間がもっとも多いプログラムを追い出し対象とする。S620で、S610により選択したプログラムが１つかどうか判定をする。1つのみであれば、YESとなり、処理を終了する。複数あれば、NOとなり、S630に進む。S630で、S610により選択したプログラムのうち、アクセス要求バッファ待ち時間比率３がもっとも大きいプログラムを追い出し対象とする。S640で、S630により選択したプログラムが１つかどうか判定をする。1つのみであれば、YESとなり、処理を終了する。複数あれば、NOとなり、S650に進む。
【００４１】
S650で、S630により選択したプログラムのうち、平均アクセス要求バッファ待ち時間４がもっとも多いプログラムを追い出し対象とする。S660で、S650により選択したプログラムが１つかどうか判定をする。1つのみであればYESとなり処理を終了する。複数あれば、NOとなり、S670に進む。S670で、S650で選択したプログラムのうち、ランダムに1つのプログラムを選び、追い出し対象とする。
【００４２】
図８のS600で、追い出し対象を決めた後は、S700で、新たに投入するプログラムを特定する。その際、選択するプログラムは、実行順に依存性のないプログラムから選択する。
置き換え対象（入れる方）プログラムの特定方法を図１３のフロー図に示す。
図１３のS710で、実行順の依存性のないプログラムから、追い出し対象となったプログラムのアクセス要求バッファ待ち時間比率３や、平均アクセス要求バッファ待ち時間４が多いスレーブへのアクセス要求回数が最も少ないプログラムを割り付け対象とする。S720で、S710で選択したプログラムが１つかどうか判定をする。1つのみであれば、YESとなり処理を終了する。複数あれば、NOとなり、S730に進む。
【００４３】
S730で、S710で選択したプログラムのうち、アクセス要求バッファ待ち時間が最小のプログラムを割り付け対象とする。S740で、S730で選択したプログラムが１つかどうか判定をする。1つのみであれば、YESとなり処理を終了する。複数あれば、NOとなり、S750に進む。S750で、S730で選択したプログラムのうち、同一プロセッサで実行するプログラムから、ランダムに1つのプログラムを選び、割り付け対象とする。S700の処理を抜けた後は、S800で、Nを１加算（N＝N＋１）し、図８のS150に戻る。
【００４４】
変更すべきプログラムの割付が完了するまで、S160〜S800までを繰り返し行う。
図７、図９の例では、プログラムの並び替えを行った結果を、図１４に示す。また、並び替えを行った後のプログラム処理時間をグラフ化したものを図１５に示す。
【００４５】
実施の形態２．
図２は、各マスター（プロセッサ）のプログラムカウンタをシステム監視機構（４００）に通知し、システム監視機構(400)では、各マスター（プロセッサ）から供給されるプログラムカウンタが、システムプログラムの動作するエリア情報保持機構(413)に保持する領域外となった場合に、そのプログラムカウンタをID記録機構(411)に書き込み、併せて、領域外となったプロセッサＩＤとプログラムカウンタをＩＤ保持機構(412)に保持することで、システムプログラムからのプログラムＩＤをＩＤ記録機構(411)に書き込むことを不要としている。
アクセス履歴保持機構への制御や、プログラムの並び替えの処理に関しては、前記実施の形態１と同様であり、説明を省略する。
【００４６】
以上のように、複数のプロセッサとプロセッサからの複数のアクセス要求を受付ける複数のバススレーブが、バスで相互に接続され、複数のプログラムが複数のプロセッサに個別に割り当てられ、並列に動作する組込み機器においては、バススレーブへのアクセスが集中し、レイテンシ（アクセスの応答時間）が増加しても、処理時間の増大を最小限にとどめることが容易となる。
【産業上の利用可能性】
【００４７】
本発明は複数のプロセッサが組込まれ、複数のプログラムが複数のプロセッサに個別に割り当てられて並列に動作する機器、例えば、カーナビなどへの適用が可能である。
【符号の説明】
【００４８】
10；マスター０、11；アクセス要求信号Ｍ０、12；アクセス受付信号Ｍ０、13；アクセス応答信号Ｍ０、14,24,34；プログラムカウンタ、20；マスター１、21；アクセス要求信号Ｍ１、22；アクセス受付信号Ｍ１、23；アクセス応答信号Ｍ１、30；マスター２、31；アクセス要求信号Ｍ２、32；アクセス受付信号Ｍ２、33；アクセス応答信号Ｍ２、40；相互接続バス、100；スレーブ０、101；アクセス要求信号Ｓ０、102；アクセス受付信号Ｓ０、103；アクセス応答信号Ｓ０、104；アクセス要求バッファ、111；アクセス要求回数計測機構、112；アクセス要求待ち時間計測機構、113；アクセス要求バッファ待ち時間計測機構、114；アクセス要求処理時間計測機構、115；アクセス要求回数保持機構、116；アクセス要求待ち時間保持機構、117；アクセス要求バッファ待ち時間保持機構、118；アクセス要求処理時間保持機構、110；マスター０用アクセス履歴保持機構、120；マスター１用アクセス履歴保持機構、130；マスター２用アクセス履歴保持機構、200；スレーブ１、201；アクセス要求信号Ｓ１、202；アクセス受付信号Ｓ１、203；アクセス応答信号Ｓ１、300；スレーブ２、301；アクセス要求信号Ｓ２、302；アクセス受付信号Ｓ２、303；アクセス応答信号Ｓ２、400；システム監視機構、401；要求信号ＳＳ、402；受付信号ＳＳ、403；応答信号ＳＳ、410；書き込み要求信号、411；ID記録機構、412；ID保持機構、413；エリア情報保持機構。
【図１】
2014153755.tif 000003
【図２】
2014153755.tif 000004
【図３】
2014153755.tif 000005
【図４】
2014153755.tif 000006
【図５】
2014153755.tif 000007
【図６】
2014153755.tif 000008
【図７】
2014153755.tif 000009
【図８】
2014153755.tif 000010
【図９】
2014153755.tif 000011
【図１０】
2014153755.tif 000012
【図１１】
2014153755.tif 000013
【図１２】
2014153755.tif 000014
【図１３】
2014153755.tif 000015
【図１４】
2014153755.tif 000016
【図１５】
2014153755.tif 000017