(57)【特許請求の範囲】
【請求項１】
プログラムメモリに格納されたプログラムであって、複数のファンクションを含むプログラムを実行する複数の処理手段と、
前記複数の処理手段によって共有される複数の共有リソースと、
前記複数の共有リソースのそれぞれについて前記共有リソースが占有されているか否かを表す前記共有リソースの占有状態を保持するリソース状態テーブルと、
前記プログラムメモリにおける前記プログラムのファンクション毎に、ファンクションのアドレス領域と該ファンクション実行時の１つ以上の共有リソースの占有状態とが対応付けられたリソースアクセステーブルと、
前記リソース状態テーブル及び前記リソースアクセステーブルを用いて、前記処理手段の１つによる前記１つ以上の共有リソースの占有を伴うファンクションの実行可否を決定する制御手段と、
前記複数の処理手段に関連付けられたプログラムカウンタとを備え、
前記制御手段は、前記プログラムカウンタの値と前記リソースアクセステーブルにおけるアドレス領域とに基づいて、起床予定のファンクションによる占有されることになる１つ以上の共有リソースを特定し、該特定した前記共有リソースが、前記リソース状態テーブルに基づいて占有されているか否かを判定することにより、前記処理手段による１つ以上の共有リソースの占有を伴うファンクションの実行可否を決定し、
前記処理手段の１つによりリソース獲得要求が出されたとき、前記制御手段は、リソース獲得要求を行った処理手段に関連付けられた前記プログラムカウンタの値を用いて、前記プログラムカウンタの値と前記リソースアクセステーブルにおけるアドレス領域を比較し、
前記共有リソースは、共有ＲＡＭ及び周辺Ｉ／Ｏを含む、マルチプロセッサシステム。
【請求項２】
前記制御手段は、ファンクション間の優先順位を用いず前記実行可否を決定する、請求項１に記載のマルチプロセッサシステム。
【請求項３】
前記共有リソースは、第１共有ＲＡＭ及び第２共有ＲＡＭを含む、請求項１に記載のマルチプロセッサシステム。
【請求項４】
前記リソース状態テーブル及び前記リソースアクセステーブルに定義される前記複数の共有リソースの単位は、部品単位である、請求項１に記載のマルチプロセッサシステム。
【請求項５】
前記リソースアクセステーブルにおけるアドレス領域は、当該ファンクションがシングルプロセッサで実行されていた場合のＤＩ（割り込み禁止）とＥＩ（割り込み許可）の間の区間に相当する、請求項１乃至４のうちのいずれか１項に記載のマルチプロセッサシステム。
【請求項６】
前記複数の処理手段は、プロセッサ・コアであり、
当該マルチプロセッサシステムは、マルチコア・プロセッサとして構成される、請求項１乃至５のうちのいずれか１項に記載のマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムメモリに格納されたプログラムを実行する処理手段を複数備えるマルチプロセッサシステムに関する。
【背景技術】
【０００２】
従来、複数の処理手段を備えるマルチプロセッサシステムが普及している。例えば、一パッケージ内に複数のプロセッサコア（ＣＰＵコア）を封入して各プロセッサ・コアが独立して処理を行うマルチコア・プロセッサ、ＣＰＵ等のプロセッサを複数個備えるマルチプロセッサ処理装置等が知られている。
【０００３】
マルチプロセッサシステムでは、通常、各処理手段がアクセス可能な共有リソースを備えている。例えば、処理手段間で情報共有するためのＲＡＭやＩ／Ｏ手段（Ｉ／Ｏポート及びその制御装置）、Ａ／Ｄ変換器等が挙げられる。処理手段がこうした共有リソースにアクセスする際には、一定期間、その共有リソースへのアクセスを占有し、他の処理手段からのアクセスを排除する排他制御が行われる必要がある。アクセスの占有権は、セマフォ等とも称される。
【０００４】
特許文献１には、排他制御を行うと共に、デッドロックの発生を防止することを目的としたマルチプロセッサシステムについて記載されている。デッドロックとは、複数のプロセスが互いに相手の占有している資源の解放を待ってしまい、処理が停止してしまうことをいう。このマルチプロセッサシステムでは、共通資源（共有リソース）毎に、現在排他制御中のタスク名及び現在獲得待ち状態のタスク名を格納する排他制御管理テーブルと、タスク毎に、現在排他制御中の共通資源名を格納する排他制御共通資源情報テーブルを設けている。そして、あるタスクが共通資源獲得要求のシステムコールを発行した時には、排他制御管理テーブル及び排他制御共通資源情報テーブルの内容を参照してデッドロック状態が発生するか否かを事前に判定し、共通資源をそのまま獲得要求するとデッドロック状態になると判定した場合には共通資源獲得要求を行わないようにしている。
【０００５】
また、特許文献２には、単位プロセッサのうちの第１単位プロセッサが前記セマフォ設定手段に設定されているセマフォの取得要求をした場合、当該要求が第２単位プロセッサによって取得されているセマフォである取得中セマフォを要求するものであるか否か判断し、セマフォ要求判断手段により、要求が取得中セマフォを要求するものであると判断された場合に第１単位プロセッサの要求を待機させるマルチプロセッサシステムについて記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平７−１０５１５２号公報
【特許文献２】特開２００７−１８８３９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、近年、例えば車両に搭載される車載制御装置の分野では、ある車載機器を制御する制御装置と他の車載機器を制御する制御装置（例えば変速機の制御装置とエンジンの制御装置等）を統合して、コンピュータ・ハードウエアを縮小し、コストや重量の低減を図る動きが見られる。このようなハードウエアの統合に際し、複数の処理手段を備えるマルチプロセッサシステムが好適に用いられる。この場合、シングルプロセッサとして構成された複数の制御装置において実行されていた各プログラムを、マルチプロセッサシステムが有する複数の処理手段がそれぞれ実行することになる。
【０００８】
ここで、シングルプロセッサでは、一般的なソースコードの構成として、リソース（ＲＡＭ等のアクセス対象）の一貫性を維持するために、当該リソースへの書き込み等のアクセスを行う間、ＤＩ（割り込み禁止）を実行している。図１は、シングルプロセッサにおけるファンクションＡ（図ではＦｕｎｃＡ）がリソースにアクセスする間、割り込み禁止を行う様子を模式的に示す図である。本図において変数Ｘ、Ｙ、Ｚは、例えばＲＡＭに書き込まれるパラメータを示している。また、ＰＥとは、Processor  Elementの略であり、ＣＰＵその他の処理手段の一例である。
【０００９】
係る処理を、そのままマルチプロセッサシステムに適用しても、排他制御を実現することができない。ＰＥ１を割り込み禁止状態としても、他のＰＥ２、３による共有リソースへのアクセスは可能だからである。図２は、ＰＥ１を割り込み禁止状態とした場合において、他のＰＥ２、３による共有リソースへのアクセスが可能である様子を示す図である。
【００１０】
本来、マルチプロセッサシステムにおいて共有リソースの排他制御を行うためには、ソフトウエア開発工程のシステム設計レベルで排他設計を行う必要がある。ところが、現実的な問題として、シングルプロセッサ上で動作している複雑な制御ソフトウエアに対して排他設計を当てはめるのは容易ではない。
【００１１】
この点、図１で示したＤＩ（割り込み禁止）とＥＩ（割り込み許可）の間の区間を、ＰＥによる共有リソースの占有区間にそのまま当てはめるのは容易である。しかしながら、この場合、共有リソースの区別が容易でなく、本来アクセス競合しないアクセス要求であるにも拘わらず、不要な待ち状態となるＰＥが生じうる。図３は、ＰＥ１のＤＩ−ＥＩ間において共有リソースの占有が行われ、ＰＥ２のファンクションＢが待ち状態となる様子を示す図である。本図の場合、ファンクションＢはファンクションＡがアクセスしない変数Ｚに対してアクセスを行うため、本来、ファンクションＡのアクセスと並行して共有リソースへのアクセスを行うことが可能である。
【００１２】
このように、複数のシングルプロセッサにおいて実行されていたプログラムを、マルチプロセッサシステムに移植した場合、排他制御の設計に伴うプログラムの修正が煩雑なものとなる。
【００１３】
上記従来の各特許文献に記載のマルチプロセッサシステムでは、このような点についての考慮がなされておらず（既にマルチプロセッサシステム用に出来上がったプログラムを想定している）、シングルプロセッサからマルチプロセッサシステムへの移植に適した構成となっていない。また、これに伴い、新たなプログラム等が追加されて機能拡張が行われる場合に、プログラムの修正が煩雑なものとなってしまう。
【００１４】
本発明はこのような課題を解決するためのものであり、シングルプロセッサからマルチプロセッサへの移植を容易にすると共に、新たなプログラム等の追加を簡便に行うことが可能なマルチプロセッサシステムを提供することを、主たる目的とする。
【課題を解決するための手段】
【００１５】
上記目的を達成するための本発明の一態様は、
プログラムメモリに格納されたプログラムを実行する複数の処理手段を備えるマルチプロセッサシステムであって、
前記複数の処理手段によって共有される共有リソースと、
該共有リソースの占有状態が書き込まれるリソース状態テーブルと、
前記プログラムメモリにおける前記プログラムのファンクション毎のアドレス領域と前記共有リソースの占有予定とが対応付けられたリソース占有予定テーブルと、
前記リソース状態テーブル及び前記リソース占有予定テーブルを用いて、前記複数の処理手段による前記共有リソースの占有を伴うファンクションの実行可否を決定する制御手段と、
を備えるマルチプロセッサシステムである。
【００１６】
この本発明の一態様によれば、シングルプロセッサからマルチプロセッサへの移植を容易にすると共に、新たなプログラム等の追加を簡便に行うことが可能なマルチプロセッサシステムを提供することができる。
【００１７】
また、リソース状態テーブル及びリソース占有予定テーブルを用いて複数の処理手段による共有リソースの占有を伴うファンクションの実行可否を決定する制御手段を備えるため、複数の処理手段は、リソース占有を要求するための信号を送出する際に、共有リソースを特定するための情報を含める必要がなくなる。
【００１８】
なお、本発明における複数の処理手段は、ハードウエア・マルチスレッディングを行うマルチスレッド処理装置におけるスレッド等、仮想的な処理手段であっても構わない。
【００１９】
本発明の一態様において、
請求項１に記載のマルチプロセッサシステムであって、
前記リソース占有予定テーブルは、ＲＯＭに格納された固定データであり、
前記複数の処理手段に対応したプログラムカウンタを備え、
前記制御手段は、
前記プログラムカウンタの値と前記リソース占有予定テーブルにおけるアドレス領域を比較することにより、起床予定のファンクションによる前記共有リソースの占有予定を特定し、
該特定した前記共有リソースの占有予定と前記リソース状態テーブルが示す前記共有リソースの占有状態を比較することにより、前記複数の処理手段による前記共有リソースの占有を伴うファンクションの実行可否を決定する手段であるものとしてもよい。
【００２０】
また、本発明の一態様において、
前記制御手段は、前記複数の処理手段による前記共有リソースの占有を伴うファンクションの実行を否定した際には、該実行を否定したファンクションをキューイングする手段であるものとしてもよい。
【００２１】
また、本発明の一態様において、
前記リソース状態テーブル及び前記リソース占有予定テーブルにおける共有リソースは、部品単位から共有リソース全体までの間の粒度で設定されていることを特徴とするものとしてもよい。
【００２２】
また、本発明の一態様において、
前記リソース占有予定テーブルにおけるアドレス領域の範囲は、当該ファンクションがシングルプロセッサで実行されていた場合のＤＩ（割り込み禁止）とＥＩ（割り込み許可）の間の区間に相当するものとしてもよい。
【００２３】
また、本発明の一態様において、
前記複数の処理手段は、プロセッサ・コアであり、
マルチコア・プロセッサとして構成されるものとしてもよい。
【発明の効果】
【００２４】
本発明によれば、シングルプロセッサからマルチプロセッサへの移植を容易にすると共に、新たなプログラム等の追加を簡便に行うことが可能なマルチプロセッサシステムを提供することができる。
【図面の簡単な説明】
【００２５】
【図１】シングルプロセッサにおけるファンクションＡがリソースにアクセスする間、割り込み禁止を行う様子を模式的に示す図である。
【図２】ＰＥ１を割り込み禁止状態とした場合において、他のＰＥ２、３による共有リソースへのアクセスが可能である様子を示す図である。
【図３】ＰＥ１のＤＩ−ＥＩ間において共有リソースの占有が行われ、ＰＥ２のファンクションＢが待ち状態となる様子を示す図である。
【図４】本発明の一実施例に係るマルチプロセッサシステム１のシステム構成例である。
【図５】リソース競合判断部３２Ａによって共有リソースへのアクセス競合の有無が判定される様子を模式的に示す図である。
【図６】マイクロＣＰＵ３０により実行される処理の流れを示すフローチャートである。
【図７】ＰＥ２０ＡのファンクションＡとＰＥ２０ＢのファンクションＢが同じ共有リソースにアクセスしようとし、アクセス競合が発生する場面を示すシーケンス図である。
【図８】共有ＲＡＭについての競合判定が行われたときの、リソースアクセステーブル４０の該当部分とリソースステータステーブル５０の状態を示す図である。
【図９】リソースステータステーブル５０にファンクションＡに関する情報がコピーされる様子を示す図である。
【図１０】共有ＲＡＭについての競合判定が行われたときの、リソースアクセステーブル４０の該当部分とリソースステータステーブル５０の状態を示す図である。
【図１１】ＰＥ２０ＡのファンクションＡとＰＥ２０ＢのファンクションＢが異なる共有リソースにアクセスしようとし、アクセス競合が発生しない場面を示すシーケンス図である。
【図１２】共有ＲＡＭについての競合判定が行われたときの、リソースアクセステーブル４０の該当部分とリソースステータステーブル５０の状態を示す図である。
【図１３】リソースステータステーブル５０にファンクションＡに関する情報がコピーされる様子を示す図である。
【図１４】共有ＲＡＭについての競合判定が行われたときの、リソースアクセステーブル４０の該当部分とリソースステータステーブル５０の状態を示す図である。
【図１５】リソースアクセステーブル４０がマルチプロセッサ１に搭載される過程を模式的に示す図である。
【図１６】ソースファイル７０からリソースアクセステーブル４０が生成される様子を模式的に示す図である。
【図１７】共有リソース全体を一つの共有リソースとして取り扱う場合のリソースアクセステーブル４０及びリソースステータステーブル５０の設定を示す図である。
【図１８】リソースアクセステーブル４０及びリソースステータステーブル５０における共有リソースの粒度を図１７に比して小さくした場合の設定を示す図である。
【図１９】リソースアクセステーブル４０及びリソースステータステーブル５０における共有リソースの粒度を図１８に比して更に小さくした場合の設定を示す図である。
【発明を実施するための形態】
【００２６】
以下、本発明を実施するための形態について、添付図面を参照しながら実施例を挙げて説明する。
【実施例】
【００２７】
以下、図面を参照し、本発明の一実施例に係るマルチプロセッサシステム１について説明する。
【００２８】
［構成］
図４は、本発明の一実施例に係るマルチプロセッサシステム１のシステム構成例である。マルチプロセッサシステム１は、主要な構成として、プログラムメモリ１０と、データメモリ１２と、ＰＥ（Processor  Element）２０Ａ、２０Ｂ、２０Ｃ、２０Ｄと、マイクロＣＰＵ３０と、リソースアクセステーブル４０と、リソースステータステーブル５０と、ＩＮＴＣ（割り込みコントローラ）６０と、を備える、以下、ＰＥを総称する際には、必要に応じて「各ＰＥ」等と表記する。
【００２９】
プログラムメモリ１０は、例えばＲＯＭ（Read  Only  Memory）やフラッシュＲＯＭ、ＥＥＰＲＯＭ（Electrically  Erasable  and  Programmable  Read  Only  Memory）等であり、各ＰＥにより実行される命令がファンクション単位で格納されている。プログラムメモリ１０は、命令バス１０Ａを介して各ＰＥに接続されている。
【００３０】
データメモリ１２は、例えばＲＡＭ（Random  Access  Memory）であり、各ＰＥの演算結果等が格納される。データメモリ１２は、データバス１２Ａを介して各ＰＥに接続されている。
【００３１】
各ＰＥは、プログラムカウンタ（図では、「ＰＣ」と略記した）２０Ａａ、２０Ｂａ、２０Ｃａ、２０Ｄａの他、命令フェッチユニット、命令バッファ、命令デコーダ、演算器、ＬＳＵ（Load  Store  Unit）、内部レジスタ等を備えるマイクロコンピュータである。各ＰＥは、それぞれのプログラムカウンタが示すプログラムメモリ１０のアドレスに格納された命令をフェッチしてデコード（解読）し、四則演算等を行う。四則演算の結果は、内部レジスタに格納する他、必要に応じてデータメモリ１２に出力して記憶させる。データメモリ１２に格納された命令は、各ＰＥによって参照可能となっており、各ＰＥは、情報を共有しつつ独自の処理を行うことができる。また、プログラムカウンタ２０Ａａ、２０Ｂａ、２０Ｃａ、２０Ｄａの示す値は、マイクロＣＰＵ３０によって参照可能となっている。
【００３２】
マイクロＣＰＵ３０は、その内部機能として、リソースファサード３１と、リソースロック制御部３２と、通知部３３と、セマフォレジスタ３４＃１〜３４＃ｎと、を備える。リソースロック制御部３２は、リソース競合判断部３２Ａ、リソース取得／解放管理部３２Ｂ、及びセマフォレジスタ管理部３２Ｃを有する。セマフォレジスタ３４＃１〜３４＃ｎは、マルチプロセッサシステム１における共有リソースに対応して設けられている。
【００３３】
リソースファサード３１は、各ＰＥから入力されるリソース獲得要求、及びリソース解放要求を受け取る。
【００３４】
リソース競合判断部３２Ａは、プログラムカウンタ２０Ａａ、２０Ｂａ、２０Ｃａ、２０Ｄａの値、リソースアクセステーブル４０、及びリソースステータステーブル５０を用いて対象リソース（リソース獲得要求がなされた共有リソース）の競合を判定し、判定結果をリソース取得／解放管理部３２Ｂに出力する。
【００３５】
リソース取得／解放管理部３２Ｂは、リソース競合判断部３２Ａによる判定結果が競合ありの場合には、各ＰＥから入力されたリソース獲得要求を図示しない待ちキューに登録する。待ちキューは、セマフォレジスタ３４＃１〜３４＃ｎに付随したものであってもよいし、独立したレジスタ等に設定されてもよい。一方、リソース取得／解放管理部３２Ｂは、リソース競合判断部３２Ａによる判定結果が競合なしの場合は、セマフォレジスタ３４＃１〜３４＃ｎのうち対象リソースに対応するものに、リソース獲得要求を出力したＰＥを登録し、通知部３３に対象リソースを通知する。
【００３６】
リソース取得／解放管理部３２Ｂは、更に、各ＰＥからリソース解放要求が入力されたときに上記待ちキューを検索し、登録されたリソース獲得要求が存在する場合には、リソース獲得要求を出力したＰＥに対象リソースを確保する。すなわち、上記と同様に、セマフォレジスタ３４＃１〜３４＃ｎのうち対象リソースに対応するものに、リソース獲得要求を出力したＰＥを登録し、通知部３３に対象リソースを通知する。一方、待ちキューに登録されたリソース獲得要求が存在しない場合は、該当するセマフォレジスタを解放する。
【００３７】
セマフォレジスタ管理部３２Ｃは、リソース取得／解放管理部３２Ｂからの指示に応じて、セマフォレジスタ３４＃１〜３４＃ｎの書き換え等を行う。
【００３８】
通知部３３は、リソース獲得要求を出力したＰＥに対し、共有リソースが確保されたタイミングで、その旨を通知する。係る情報通知は、ＩＮＴＣ６０を介して割り込み通知として行われる。共有リソースが確保された旨を通知されたＰＥは、該当する共有リソースへのアクセスを開始する。
【００３９】
［マイクロＣＰＵ３０による競合判定等の処理］
以下、リソースアクセステーブル４０及びリソースステータステーブル５０を用いた対象リソースの競合判定、及びこれに関連する処理について説明する。
【００４０】
リソースアクセステーブル４０は、例えばプログラムメモリ１０その他のＲＯＭ（フラッシュＲＯＭやＥＥＰＲＯＭを含んでよい）に格納された固定データであり、プログラムメモリ１０におけるプログラムのファンクション毎のアドレス領域と、共有リソースの占有予定とが対応付けられている。図４に示すように、リソースアクセステーブル４０は、ファンクション毎に、開始アドレスと終了アドレスを含む排他区間、共有ＲＡＭや周辺Ｉ／Ｏ等の共有リソースの種別を示すリソースアクセス情報が規定されている。リソースアクセステーブル４０によって、プログラムメモリ１０上のどの命令（ファンクション）を実行した際に、どの共有リソースが占有される予定であるのかを把握することができる。なお、リソースアクセステーブル４０は、実際には、ＲＯＭに格納されたデータがＲＡＭやフラッシュメモリ、レジスタ等にロードされたものであってもよい。
【００４１】
リソースステータステーブル５０は、マイクロＣＰＵ３０が内蔵するＲＡＭ、フラッシュメモリ、レジスタ等に領域設定され、随時書き換えられるデータであり、その時点における共有リソースの占有状態を示している。図４に示すように、リソースステータステーブル５０は、その時点で実行されている共有リソースの占有を伴うファンクションを示すファンクションＩＤ毎に、排他区間、共有ＲＡＭや周辺Ｉ／Ｏ等の共有リソースの種別を示すリソースアクセス情報、当該ファンクションによって占有された共有リソースに対応したセマフォレジスタを特定するセマフォレジスタＩＤ等が書き込まれる。
【００４２】
リソース競合判断部３２Ａは、各ＰＥからリソース獲得要求が入力されたときに、まず、当該ＰＥのプログラムカウンタが示す値を取得する。そして、当該プログラムカウンタが示す値を用いてリソースアクセステーブル４０を検索し、対象リソースを特定する。更に、リソースステータステーブル５０を参照し、特定した対象リソースが他のＰＥによって占有中であるか否かに基づいて、対象リソースの競合判定を行う。図５は、リソース競合判断部３２Ａによって共有リソースへのアクセス競合の有無が判定される様子を模式的に示す図である。
【００４３】
図６は、マイクロＣＰＵ３０により実行される処理の流れを示すフローチャートである。
【００４４】
まず、ファンクションＮからリソース獲得要求がなされると、リソースアクセステーブル４０からリソースアクセス情報を取得する（Ｓ１００）。そして、該当する共有リソースが他のＰＥによって占有されているか否かを判定する（Ｓ１０２）。該当する共有リソースが他のＰＥによって占有されていない場合は、ファンクションＮに共有リソースへのアクセス権を取得させる処理を行う（Ｓ１０４）。
【００４５】
一方、該当する共有リソースが他のＰＥによって占有されている場合は、他のＰＥから解放通知があるまでの間、ファンクションＮを待ち状態とする（Ｓ１０６、Ｓ１０８）。
【００４６】
解放通知は、他のＰＥが実行しているファンクションＭがリソース解放要求を出力したときに、リソース解放処理（Ｓ２００）、解放通知（Ｓ２０２）の手順で行われる。
【００４７】
以下、より具体的に説明する。図７は、ＰＥ２０ＡのファンクションＡとＰＥ２０ＢのファンクションＢが同じ共有リソースにアクセスしようとし、アクセス競合が発生する場面を示すシーケンス図である。
【００４８】
図７における時刻Ｔ１において、ＰＥ２０Ａからリソース獲得要求が入力されると、マイクロＣＰＵ３０は上記のように、ＰＥ２０Ａのプログラムカウンタが示す値を取得し、対象リソースを特定する。更に、マイクロＣＰＵ３０は、リソースステータステーブル５０を参照し、特定した対象リソースが他のＰＥによって占有中であるか否かに基づいて、対象リソースの競合判定を行う。ここでは、共有ＲＡＭに対するリソース獲得要求がなされ、リソースステータステーブル５０に共有ＲＡＭが登録されていないため、ファンクションＡに共有ＲＡＭの占有が許可される。図８は、共有ＲＡＭについての競合判定が行われたときの、リソースアクセステーブル４０の該当部分とリソースステータステーブル５０の状態を示す図である。この場合、リソースステータステーブル５０にファンクションＡに関する情報がコピーされると共に、セマフォレジスタ３４＃１〜３４＃ｎのうち共有ＲＡＭに対応するものにファンクションＡが登録される。図９は、リソースステータステーブル５０にファンクションＡに関する情報がコピーされる様子を示す図である。
【００４９】
図７における時刻Ｔ２において、ＰＥ２０Ｂからリソース獲得要求が入力されると、マイクロＣＰＵ３０は、ＰＥ２０Ｂのプログラムカウンタが示す値を取得し、対象リソースを特定する。ここでは、共有ＲＡＭ及び周辺Ｉ／Ｏに対するリソース獲得要求がなされ、リソースステータステーブル５０に共有ＲＡＭが登録されているため（ロック中であるため）、ファンクションＢに共有ＲＡＭ及び周辺Ｉ／Ｏの占有が許可されない。図１０は、共有ＲＡＭについての競合判定が行われたときの、リソースアクセステーブル４０の該当部分とリソースステータステーブル５０の状態を示す図である。
【００５０】
図７における時刻Ｔ３において、ファンクションＡからリソース解放要求がなされると、マイクロＣＰＵ３０は、セマフォレジスタ３４＃１〜３４＃ｎのうち共有ＲＡＭに対応するものからファンクションＡを削除し、当該セマフォレジスタを解放する。そして、通知部３３によってＰＥ２０Ｂに対して解放通知割り込みが発行される。この結果、ＰＥ２０Ｂは、再度リソース獲得要求を出力することになる。
【００５１】
図１１は、ＰＥ２０ＡのファンクションＡとＰＥ２０ＢのファンクションＢが異なる共有リソースにアクセスしようとし、アクセス競合が発生しない場面を示すシーケンス図である。
【００５２】
図１１における時刻Ｔ１１において、ＰＥ２０Ａからリソース獲得要求が入力されると、マイクロＣＰＵ３０は、上記のようにＰＥ２０Ａのプログラムカウンタが示す値を取得し、対象リソースを特定する。更に、マイクロＣＰＵ３０は、リソースステータステーブル５０を参照し、特定した対象リソースが他のＰＥによって占有中であるか否かに基づいて、対象リソースの競合判定を行う。ここでは、共有ＲＡＭに対するリソース獲得要求がなされ、リソースステータステーブル５０に共有ＲＡＭが登録されていないため、ファンクションＡに共有ＲＡＭの占有が許可される。図１２は、共有ＲＡＭについての競合判定が行われたときの、リソースアクセステーブル４０の該当部分とリソースステータステーブル５０の状態を示す図である。この場合、リソースステータステーブル５０にファンクションＡに関する情報がコピーされると共に、セマフォレジスタ３４＃１〜３４＃ｎのうち共有ＲＡＭに対応するものにファンクションＡが登録される。図１３は、リソースステータステーブル５０にファンクションＡに関する情報がコピーされる様子を示す図である。
【００５３】
図１１における時刻Ｔ１２において、ＰＥ２０Ｂからリソース獲得要求が入力されると、マイクロＣＰＵ３０は、ＰＥ２０Ｂのプログラムカウンタが示す値を取得し、対象リソースを特定する。ここでは、共有ＲＡＭ２に対するリソース獲得要求がなされ、リソースステータステーブル５０に共有ＲＡＭ２が登録されていないため（ロック中でないため）、ファンクションＢに共有ＲＡＭ２の占有が許可される。図１４は、共有ＲＡＭについての競合判定が行われたときの、リソースアクセステーブル４０の該当部分とリソースステータステーブル５０の状態を示す図である。
【００５４】
その後、ファンクションＢからリソース解放要求がなされると、マイクロＣＰＵ３０は、セマフォレジスタ３４＃１〜３４＃ｎのうち共有ＲＡＭ２に対応するものからファンクションＢを削除し、当該セマフォレジスタを解放する。また、ファンクションＡからリソース解放要求がなされると、マイクロＣＰＵ３０は、セマフォレジスタ３４＃１〜３４＃ｎのうち共有ＲＡＭに対応するものからファンクションＡを削除し、当該セマフォレジスタを解放する。
【００５５】
［マルチプロセッサシステムの構築］
図１５は、リソースアクセステーブル４０がマルチプロセッサ１に搭載される過程を模式的に示す図である。リソースアクセステーブル４０は、元々シングルプロセッサにより実行されていたプログラムのソースファイル７０をアクセスアナライズツール８０で処理することによってリソースアクセステーブルの元データ４０*が生成され（ビルドフェーズ）、この元データ４０*がファイルロードツール９０によってＲＯＭ等に書き込まれることにより、マルチプロセッサ１に搭載される（実行フェーズ）。
【００５６】
図１６は、ソースファイル７０からリソースアクセステーブル４０が生成される様子を模式的に示す図である。図示するように、ソースファイルは、例えばファンクション定義、リソース取得命令、共有リソースの特定、リソース解放命令といった順に記述されている。アクセスアナライズツール８０は、これにプログラムメモリ１０におけるアドレスを付加してリソースアクセステーブル４０を生成する。なお、ファンクションの範囲は、シングルプロセッサで実行されていた場合のＤＩ（割り込み禁止）とＥＩ（割り込み許可）の間の区間とすると好適である。
【００５７】
［テーブルにおける共有リソースの粒度］
このような態様で用いられるリソースアクセステーブル４０及びリソースステータステーブル５０における共有リソースの粒度は、システムの規模、要求される性能に応じて、部品単位から共有リソース全体までの間の粒度で設定され得る。
【００５８】
図１７は、共有リソース全体を一つの共有リソースとして取り扱う（図ではGlobal空間と表記した）場合のリソースアクセステーブル４０及びリソースステータステーブル５０の設定を示す図である。この場合、リソースアクセステーブル４０及びリソースステータステーブル５０は、ＣＡＮ（Controller  Area  Network）、ＣＳＩ、ＡＤＣ（Analog  Digital  Controller）、ＰＷＭ（Pulse  Width  Modulation）等のGlobal  I/O領域（ポート及びその制御をいう）と、Global RAM領域とを含む。この場合、リソースアクセステーブル４０が占有するＲＯＭ上の領域、及びこれがＲＡＭ等に展開された場合の当該領域を小さくすることができるものの、アクセス競合の可能性が高くなり、処理速度が低下する場合がある。
【００５９】
図１８は、リソースアクセステーブル４０及びリソースステータステーブル５０における共有リソースの粒度を図１７に比して小さくした場合の設定を示す図である。この場合、リソースアクセステーブル４０が占有するＲＯＭ上の領域、及びこれがＲＡＭ等に展開された場合の当該領域は大きくなるが、アクセス競合の可能性が低くなり、処理速度が向上する場合がある。
【００６０】
図１９は、リソースアクセステーブル４０及びリソースステータステーブル５０における共有リソースの粒度を図１８に比して更に小さくした場合の設定を示す図である。本図は、複数の端子を備える同一の共有リソースを分割し、複数の共有リソースであるかのように扱っている。この場合、リソースアクセステーブル４０が占有するＲＯＭ上の領域、及びこれがＲＡＭ等に展開された場合の当該領域は更に大きくなるが、アクセス競合の可能性が更に低くなり、処理速度が向上する場合がある。
【００６１】
［まとめ］
以上説明した本実施例のマルチプロセッサシステム１によれば、シングルプロセッサからマルチプロセッサへの移植を容易にすると共に、新たなプログラム等の追加を簡便に行うことができる。
【００６２】
また、リソースアクセステーブル４０及びリソースステータステーブル５０を用いて複数のＰＥによる共有リソースの占有を伴うファンクションの実行可否を決定するリソースロック制御部３２を備えるため、複数のＰＥは、リソース獲得要求に共有リソースを特定するための情報を含める必要がなくなる。この結果、通信負荷やプログラムのサイズを低減することができる。
【００６３】
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【符号の説明】
【００６４】
１      マルチプロセッサシステム
１０    プログラムメモリ
１０Ａ  命令バス
１２    データメモリ
１２Ａ  データバス
２０Ａ、２０Ｂ、２０Ｃ、２０Ｄ  ＰＥ
２０Ａａ、２０Ｂａ、２０Ｃａ、２０Ｄａ  プログラムカウンタ
３０    マイクロＣＰＵ
３１    リソースファサード
３２    リソースロック制御部
３３    通知部
３４＃１〜３４＃ｎ  セマフォレジスタ
４０    リソースアクセステーブル
４０*   元データ
５０    リソースステータステーブル
６０    ＩＮＴＣ
７０    ソースファイル
８０    アクセスアナライズツール
９０    ファイルロードツール
【図１】
0005745868.tif 000002
【図２】
0005745868.tif 000003
【図３】
0005745868.tif 000004
【図４】
0005745868.tif 000005
【図５】
0005745868.tif 000006
【図６】
0005745868.tif 000007
【図７】
0005745868.tif 000008
【図８】
0005745868.tif 000009
【図９】
0005745868.tif 000010
【図１０】
0005745868.tif 000011
【図１１】
0005745868.tif 000012
【図１２】
0005745868.tif 000013
【図１３】
0005745868.tif 000014
【図１４】
0005745868.tif 000015
【図１５】
0005745868.tif 000016
【図１６】
0005745868.tif 000017
【図１７】
0005745868.tif 000018
【図１８】
0005745868.tif 000019
【図１９】
0005745868.tif 000020