JP2000235553A - マルチプロセッサシステム - Google Patents

マルチプロセッサシステム

Info

Publication number
JP2000235553A
JP2000235553A JP11038169A JP3816999A JP2000235553A JP 2000235553 A JP2000235553 A JP 2000235553A JP 11038169 A JP11038169 A JP 11038169A JP 3816999 A JP3816999 A JP 3816999A JP 2000235553 A JP2000235553 A JP 2000235553A
Authority
JP
Japan
Prior art keywords
processor
transmission buffer
inter
processors
processing
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.)
Pending
Application number
JP11038169A
Other languages
English (en)
Inventor
Masahiko Saito
雅彦 齊藤
Tadashi Kamiwaki
正 上脇
Kunihiko Tsunetomi
邦彦 恒冨
Kenichi Kurosawa
憲一 黒澤
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP11038169A priority Critical patent/JP2000235553A/ja
Publication of JP2000235553A publication Critical patent/JP2000235553A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】プロセッサ間排他制御機能を有しない複数個の
プロセッサと共有メモリとを装備したマルチプロセッサ
システムにおいて、プロセッサ間で相互に処理を依頼で
きるマルチタスクプログラミング環境を実現する。 【解決手段】プロセッサ間通信手段105は、他系プロ
セッサへの処理要求時に、自系プロセッサ上で排他的に
該送信バッファプール109から送信バッファ111を
確保して、送信データを書き込み、プロセッサ間割込み
機能107によって処理要求先プロセッサに処理要求を
行い、他系プロセッサからの処理要求を受けると、送信
バッファ111内のデータに基づいた処理を行った後、
処理要求元プロセッサに処理終了を通知し、他系プロセ
ッサからの処理終了通知を受けると、自系プロセッサ上
で排他的に該送信バッファ111を解放する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は複数のプロセッサが
メモリを共有するマルチプロセッサシステムに関する。
制御用,組込み用マイクロプロセッサでは、プロセッサ
間排他制御機能などのマルチプロセッサ動作機能を有し
ないものが多く、本発明は、特に、このような制御用,
組込み用マイクロプロセッサがメモリを共有するマルチ
プロセッサシステムに関連する。
【0002】
【従来の技術】従来から、共有メモリ型マルチプロセッ
サとして各種のシステムが開発されている。これらのシ
ステムにおいては、複数のプロセッサ間で互いに不可分
な動作を保証する機能(プロセッサ間排他制御機能)
や、内蔵キャッシュメモリに格納されたデータの一貫性
をプロセッサ間で保つ機能(スヌープキャッシュ)を装
備したマイクロプロセッサを用いることが多い。ここで
は、これらの機能をマルチプロセッサ動作機能と呼ぶも
のとする。マルチプロセッサ動作機能を装備するプロセ
ッサを用いれば、共有メモリ型マルチプロセッサシステ
ムにおけるプロセッサ間協調動作を容易に行えるという
利点がある。
【0003】一方、制御用,組込み用マイクロプロセッ
サでは、小型化・低消費電力化を図ることが重要であ
り、前述のマルチプロセッサ動作機能を実装しないこと
が多い。しかしながら、制御システムや組込みシステム
においても、性能向上を目的として機能分散型のマルチ
プロセッサシステムが導入されつつある。機能分散型マ
ルチプロセッサシステムでは、プロセッサ間での協調動
作として処理依頼・結果返却といった動作を行えればよ
いが、マルチプロセッサ動作機能を装備しないプロセッ
サをそのまま用いただけでは、プロセッサ間協調動作を
行うことができない。また、このマルチプロセッサ動作
機能を、外付けハードウェア若しくはソフトウェアで実
現することは、コスト・性能面で適切ではない。このた
め、より単純な外付けハードウェアとして、マイクロプ
ロセッサ間で互いに割込みを通知するプロセッサ間割込
み回路を実現し、これを元にソフトウェアでプロセッサ
間協調処理を実装することが多い。
【0004】複数個のプロセッサがメモリを共有し、か
つ、プロセッサ間割込み機能を使用してプロセッサ間協
調動作を行う従来例としては、特開平9−198361 号に示
される技術がある。この従来の技術は、プロセッサ間で
互いにデータを通知するシステムを示しており、通知さ
れるべきデータを格納する領域(データ格納領域)をプ
ロセッサ毎に設け、以下に示す一連の処理を行うもので
ある。
【0005】(1)送信元プロセッサは、自己に対応する
データ格納領域に通信データを書き込む。
【0006】(2)送信元プロセッサは、送信先プロセッ
サにプロセッサ間割込みを通知する。
【0007】(3)送信先プロセッサは、データを読み出
した後、送信元プロセッサにデータ通信が終了したこと
を通知する。
【0008】(4)送信元プロセッサは、上記(3)の通知
が来るまで次のデータ通信を行わない。
【0009】送信プロセッサ毎にデータ格納領域を設け
ることにより、複数個のプロセッサが相互の排他制御無
しに同時にデータ格納領域に書込みを行える。更に、こ
の従来の技術では、使用するプロセッサがマルチプロセ
ッサ動作機能を装備していたとしても、データ格納領域
への書込みをプロセッサ間で並列に実行できるため、プ
ロセッサ間排他制御による待ち時間を無くすことが可能
となるとしている。
【0010】
【発明が解決しようとする課題】複数個のタスク(プロ
セス)を並行して動作させることが可能なマルチタスク
環境を各プロセッサ上で実現している場合、先に説明し
た従来の技術では、一つのタスクがデータ格納領域を用
いて送信先プロセッサにデータを送信している間、別の
タスクによるデータ通信を行うことができない。
【0011】通常、マルチタスク環境では、一つのタス
クが待ち状態に移行すると、別タスクを起動して処理を
行わせる。プロセッサ間割込みによって送信先プロセッ
サにデータを送信する場合、送信先プロセッサの状態に
よってはデータ通信が直ちに終了しないことがあり(例
えば、プロセッサ間割込みを通知した時点で、送信先プ
ロセッサが別の割込み処理を実行中であった場合、送信
先プロセッサはこの割込み処理が終了するまでプロセッ
サ間割込みに対応する処理を待たせる必要がある)、こ
の間タスクを待ち状態に移行させる。このため、送信元
プロセッサでは、プロセッサを有効活用するため、別タ
スクに切り換えて処理を継続させる。しかしながら、こ
のタスクは、切り換え前タスクのデータ通信が終了する
まで、データ格納領域を使用することができず、他系プ
ロセッサにデータを通知することができない。
【0012】この課題は、特に、プロセッサ協調動作と
して、プロセッサ間の処理依頼・結果返却(これは、一
般にRemote Procedure Call:RPCと呼ばれる手順を
指す)という処理フローを考えたときに重要となる。プ
ロセッサ間RPCでは、(a)他系プロセッサへの処理
依頼、(b)他系プロセッサでの処理実行、(c)他系
プロセッサからの結果返却、という流れで処理が行われ
るが、この間別のプロセッサ間RPCを行えなくするこ
とは、非効率的であり、かつ、ユーザインタフェースに
優れているとは言えない。
【0013】本発明の目的は、各プロセッサがマルチタ
スク環境で処理を実行している際に、各タスクが並行し
てプロセッサ間にまたがる処理依頼・結果返却という流
れを実現できるようにすることにある。
【0014】また、前記従来の発明では、各プロセッサ
に対応するデータ格納領域を予め確保しておく必要があ
る。このため、システム動作中に必要に応じてデータ格
納領域の大きさを変更したり、新たに作成することはで
きない。本発明の別の目的として、プロセッサ間RPC
を行うにあたって、プロセッサ間で交換されるデータ量
が変更,追加された場合にも対応できるプロセッサ間協
調処理機能を実現することにある。
【0015】
【課題を解決するための手段】前記第一の目的を達成す
るため、本発明では、プロセッサ間排他制御機能を有し
ない複数個のプロセッサと、該複数個のプロセッサに接
続される共有メモリと、該複数個のプロセッサ間で相互
に割込みを入れることができる割込み制御機能とを有し
たマルチプロセッサシステムにおいて、該共有メモリ上
に、該複数個のプロセッサそれぞれに対応する送信バッ
ファプールを設ける。また、該複数個のプロセッサそれ
ぞれに対して、プロセッサ間でデータを交換するための
プロセッサ間通信モジュールを設ける。
【0016】更に、本発明では、プロセッサ間排他制御
機能を有しない二つのプロセッサと、該二つのプロセッ
サに接続される共有メモリと、該二つのプロセッサ間で
相互に割込みを入れることができる割込み制御機能とを
有したデュアルプロセッサシステムにおいて、該二つの
プロセッサのうち、少なくとも一つのプロセッサに別プ
ロセッサからの処理を受け付ける1個以上のサービスタ
スクを設け、かつ、該共有メモリ上に、該サービスタス
クそれぞれに対応する送信バッファプールを設ける。ま
た、該二つのプロセッサそれぞれに対して、プロセッサ
間でデータを交換するためのプロセッサ間通信モジュー
ルを設ける。
【0017】更にまた、本発明では、前記第二の目的を
達成するため、サービスタスク登録・削除にしたがって
対応する送信バッファプールを確保・解放するサーバ登
録・解放モジュールを設ける。
【0018】本発明のプロセッサ間通信モジュールは、
処理要求送信時に下記の一連の処理を行う。
【0019】(1)自系プロセッサ上で排他的に送信バッ
ファプールから送信バッファを確保する。排他的に送信
バッファを確保するとは、例えば、自系プロセッサ上で
の割込み禁止と排他制御を実行し、送信バッファプール
から送信バッファを確保して、排他制御の終了と割込み
許可を行うという一連の処理である。
【0020】(2)確保された送信バッファ上に通信デー
タを書き込む。
【0021】(3)プロセッサ間割込み機能により他系プ
ロセッサに処理要求を行う。
【0022】(4)他系プロセッサからプロセッサ間割込
み機能によって処理結果を受けると、自系プロセッサ上
で排他的に送信バッファプールへ送信バッファを解放す
る。上記(1)と同様に、これは、例えば、自系プロセッ
サ上での割込み禁止と排他制御を実行し、送信バッファ
プールへ送信バッファを解放して、排他制御の終了と割
込み許可を行うという一連の処理である。
【0023】プロセッサ間通信モジュールは、更に、他
系プロセッサからの処理要求受信時に以下の一連の処理
を行う。
【0024】(1)送信バッファ上のデータで指定された
処理を行う。若しくは、サービスタスクに指定された処
理を行わせる。
【0025】(2)プロセッサ間割込み機能によって他系
プロセッサに処理結果を通知する。送信バッファプール
は、複数個の固定長または不定長送信バッファに分割さ
れ、それぞれ、他系プロセッサへの処理要求時の通信デ
ータ、並びに、処理結果返却時の結果データの交換に使
用される。
【0026】サーバ登録・解放モジュールを使用する場
合、システム内の一つのプロセッサに送信バッファプー
ル作成権を与える。サーバ登録・解放モジュールは、自
系プロセッサ上でサービスタスクの生成・削除を行うと
同時に、自系プロセッサが送信バッファプール作成権を
有するならば、自系プロセッサ上で排他的に共有メモリ
から送信バッファプールの確保・解放を行う。自系プロ
セッサが送信バッファプール作成権を有しないならば、
自系プロセッサ上でサービスタスクの生成・削除を行う
と同時に、送信バッファプール作成権を有するプロセッ
サに対し、プロセッサ間割込み機能によって送信バッフ
ァプールの確保・解放を依頼する。
【0027】
【発明の実施の形態】本発明の実施例を図面により説明
する。
【0028】図1に本発明の第一の実施例における全体
構成図を示す。図1では、2つのプロセッサが共有メモ
リに接続されたデュアルプロセッサシステムを示してい
る。100,101はそれぞれアプリケーションプログ
ラムを実行するマイクロプロセッサである。102はプ
ログラム,データ等を格納する共有メモリである。10
3は2つのプロセッサと共有メモリとを接続する制御L
SIである。通常、制御LSI103は、このような回路構成
の場合、プロセッサ間での共有メモリ参照に関する調停
を行う役割を有しており、内部にメモリ参照調停回路1
08を装備する。制御LSI103は、また、2つのプロセッ
サ間で相互に割込みを通知することを可能とするプロセ
ッサ間割込み回路107を有する。
【0029】プロセッサ100,101は、通常、内蔵
キャッシュメモリ104を装備する。プロセッサの種類
によっては元々マルチプロセッサ動作機能を有している
ものもあるが、制御用や組込み用のマイクロプロセッサ
は単独で動作することが多く、マルチプロセッサ動作機
能を装備しないことも多い。マルチプロセッサ動作機能
としては、スヌープキャッシュ,プロセッサ間排他制御
機能などが代表的な例である。前者は、内蔵キャッシュ
メモリ104に読み出されたデータ間の整合性をとる機
能であり、後者は、単一プロセッサ上で不可分な動作を
保証する内部排他制御機能106(Test&Set 命令な
ど)を複数個のプロセッサ間で保証する機能である。特
に、プロセッサ間排他制御機能に関しては、一方のプロ
セッサがTest&Set 命令を実行中、それ以外のプロセッ
サによるメモリ参照を待たせることが必要である。この
ため、マルチプロセッサ動作機能は性能低下要因にもな
り、かつ、ハードウェア容量を増大させることにもな
る。制御用、組込み用マイクロプロセッサの多くでマル
チプロセッサ動作機能が実現されていない理由はこれら
による。本発明は、マルチプロセッサ動作機能、特に、
プロセッサ間排他制御機能を装備しないプロセッサを用
いたシステムを前提としている。しかし、マルチプロセ
ッサ動作機能を装備したマイクロプロセッサにおいても
本発明を適用することは可能である。
【0030】マルチプロセッサ動作機能を装備しないマ
イクロプロセッサを用いたシステムにおいても、ソフト
ウェア的にプロセッサ間排他制御機能を実現することは
可能である。しかしながら、制御用,組込用システムに
おいて、機能分散型マルチプロセッサシステムを構成す
る場合、各プロセッサで動作するタスク間の協調動作と
して、完全なプロセッサ間排他制御機能は必要でない。
通常、プロセッサ間で互いに処理依頼・結果返却を行え
る機能が存在すればよい。すなわち、プロセッサ間での
RPC(Remote Procedure Call )を行える環境があれ
ば十分である。本実施例では、プロセッサ間通信モジュ
ール105が、プロセッサ間RPCを実現する。プロセ
ッサ間通信モジュール105は、以下の三種類の機能を
使用して各プロセッサ相互の処理依頼・結果返却の機能
を実現する。
【0031】(a)共有メモリ102 (b)プロセッサ間割込み回路107 (c)プロセッサ内での内部排他制御機能106 なお、内部排他制御機能106には、不可分な処理を実
現するという本来の排他制御機能の他に、割込みを禁止
して割込み処理へ移行しないようにするという機能も含
まれるものとする。この場合の割込み禁止とは、プロセ
ッサ間割込みのみを禁止できればよい。共有メモリ10
2上には、複数の送信バッファから構成される送信バッ
ファプール109,110が存在する。図1に示した実
施例では、送信バッファプール109,110はプロセ
ッサ毎に設けられる。図1では、送信バッファプール内
の各送信バッファが固定長である例を示しているが、送
信バッファプールから可変長の送信バッファを確保して
もよい。各プロセッサ上のプロセッサ間通信モジュール
は、他系プロセッサへの処理要求時に自系プロセッサに
対応する送信バッファプールから送信バッファを取り出
して通信データを格納する。例えば、プロセッサ100
のプロセッサ間通信モジュール105は、プロセッサ1
00に対応する送信バッファプール109から、送信バ
ッファ111を確保し、この送信バッファ111を用い
てデータ送信を実行する。
【0032】図2に、プロセッサ間通信モジュール10
5の処理フロー120を示す。プロセッサ間通信モジュ
ール105は、自系プロセッサ上のタスクからの要求に
したがって他系プロセッサへ処理要求を行う場合と、プ
ロセッサ間割込みによって他系プロセッサから起動され
る場合とがある。
【0033】自系プロセッサ上のタスクから他系プロセ
ッサへの処理要求を依頼した場合、処理要求を格納する
ため、送信バッファプールから必要なサイズの送信バッ
ファを確保する(処理122)。しかし、通常、送信バ
ッファプールからの送信バッファ確保および解放は不可
分な動作とはならない。送信バッファ確保中あるいは解
放中にタスク切替えが発生することもあり、送信バッフ
ァプールの状態に矛盾が発生する可能性がある。
【0034】このため、第一に自系プロセッサ上で割込
み禁止と排他制御を行い(処理121)、自系プロセッサに
対応する送信バッファプールの排他的参照権を入手す
る。ただし、全ての割込みを禁止すると、それ以降のタ
スク切替えが起こらないため、排他制御は不要となる。
ここでは、プロセッサ間割込みのみを禁止する(例え
ば、プロセッサ間割込みを最も低い割込みレベルに設定
することにより、プロセッサ間割込みのみを禁止でき
る)ことを考え、割込み禁止と排他制御との両者を実行
する。すなわち、処理121は、自系プロセッサにおけ
る要因のほか、他系プロセッサの影響でタスク切替えが
起こり、これによって、別タスクが送信バッファプール
からの領域確保・解放を行ってしまうことを防ぐための
処理である。排他的参照権は処理123まで継続する。
送信バッファプールは個々のプロセッサ毎に割り当てら
れており、自己に割り当てられていない送信バッファプ
ールから送信バッファを確保したり、解放したりするこ
とはできない(後述するように、他系プロセッサは、送
信バッファ内部のデータを参照するだけである)。プロ
セッサ間通信モジュールは、必要な送信バッファを送信
バッファプールから削除してしまうと、排他制御を終了
して割込みを許可する(処理123)。次に、確保した
送信バッファに通知すべきデータを格納し(処理12
4)、プロセッサ間割込み機能によって、他系プロセッ
サに処理要求を通知する(処理125)。この時点で、
プロセッサ間通信モジュールは、処理要求を行ったタス
クを待ち状態に移行させる(処理126)。処理要求元
タスクは、他系プロセッサからの結果返却が行われるま
で待ち状態を続ける。
【0035】プロセッサ間通信モジュールは、他系プロ
セッサからのプロセッサ間割込みに対しても起動され
る。このとき、他系プロセッサ自身が処理要求を行う場
合と、自系プロセッサからの処理要求に対して処理結果
を通知してくる場合の二種類がある。
【0036】他系プロセッサからの処理要求を受理した
場合、送信バッファに格納されているデータを取り出し
(処理127)、通信データに基づいて必要な処理を実
行する(処理128)。この際、プロセッサ間通信モジ
ュール自身が処理を行う代わりに、別タスクを起動して
該タスクに処理を行わせることもできる。指定された処
理が終了し、その処理結果が存在する場合、処理要求時
に使用された送信バッファに結果を格納し(処理12
9)、プロセッサ間割込み機能によって他系プロセッサ
に処理終了を通知する(処理130)。
【0037】結果返却のためのプロセッサ間割込みを受
理した場合、処理要求から結果返却までに使用していた
送信バッファを解放しなければならない。このため、前
述の送信バッファ確保時の処理と同様、第一に、自系プ
ロセッサ上での割込み禁止と排他制御を行い(処理13
1)、送信バッファを送信バッファプールに返却し(処
理132)、その後、排他制御を終了して割込みを許可
する(処理133)。最後に、前記処理126で待ち状
態に移行させていたタスクを実行可能状態にして再び処
理を継続させる(処理134)。
【0038】なお、本実施例では、2つのプロセッサか
ら構成されるデュアルプロセッサシステムを説明した
が、これを3つ以上のプロセッサから構成されるマルチ
プロセッサシステムに拡張することは可能である。な
お、図1に示した制御LSI103は、通常、固定数のプロセ
ッサしか接続することができず、複数個のプロセッサと
共有メモリとの接続は、バス形式を採用することが多
い。図1の実施例を3つ以上のプロセッサから構成され
るマルチプロセッサシステムに拡張した例を、図3に示
した。140〜142は100,102と同様のプロセ
ッサを示す。なお、図3では、プロセッサの内蔵キャッ
シュメモリを省略して表示している。143は、複数個
のプロセッサと共有メモリとを接続するメモリバスであ
る。バス結合方式を用いてプロセッサを接続する場合、
一つのプロセッサがメモリ参照を行っている間、他のプ
ロセッサのメモリ参照を待たせるなどの機能が、共有メ
モリ102若しくはプロセッサ140〜142において必
要とされる。
【0039】144はプロセッサ間割込み回路であり、
プロセッサ140〜142間で相互に割込み通知を行う
機能を有する。プロセッサ間割込み回路144は、図1
における制御LSI103のプロセッサ間割込み回路107を
取り出したものである。共有メモリ102上には、それ
ぞれ、プロセッサ140〜142に対応して、送信バッ
ファプール145〜147が存在する。各プロセッサの
プロセッサ間通信モジュール105は、自系プロセッサ
に対応する送信バッファプールから送信バッファを確保
して、他系プロセッサとの通信に使用する。
【0040】図3におけるプロセッサ間通信モジュール
の動作は、図1のプロセッサ間通信モジュールと同一で
ある。
【0041】本発明の第一の実施例を用いると、プロセ
ッサ間排他制御機能を装備しないプロセッサを用いても
プロセッサ間RPCなどの協調動作が可能となる。しか
しながら、共有メモリの使用に関して以下の問題点があ
る。
【0042】(1)種類の異なる処理要求であっても、同
一の送信バッファプールを使用する。
【0043】(2)一つのプロセッサに対応する送信バッ
ファプールサイズは固定であり、送信バッファプールの
サイズを越えてプロセッサ間の処理要求を行おうとする
と、必要サイズが解放されるまで処理要求元タスクを待
たせなければならない。特に、(1)により、ある処理要
求が送信バッファを確保しているために、別の種類の処
理要求を待たせなければならない可能性が生じる。
【0044】上記問題点を解決するために構成した本発
明の第二の実施例を図4に示す。図4に示す実施例は2
つのプロセッサから構成されるデュアルプロセッサシス
テムであり、一方若しくは両方のプロセッサ上で、他系
プロセッサからの処理要求を受け付けるサービスタスク
を実行させる。150,151がサービスタスク(サー
バ)である。本実施例では、サービスタスク毎に送信バ
ッファプールを設けることになる。153,154は送
信バッファプールであり、それぞれ、サービスタスク1
50,151に対応する。
【0045】152はクライアントタスクであり、プロ
セッサ間RPCを用いてサービスタスクに処理を要求す
る。クライアントタスク152がサービスタスク150
に対して処理を要求しようとすると、対応する送信バッ
ファプール153から必要なサイズの送信バッファ15
5を確保して、処理要求を行う。別のクライアントタス
クがサービスタスク151に処理要求を行う場合、該ク
ライアントタスクは、送信バッファプール154から送
信バッファを取り出す。これにより、異なるサービスタ
スクに処理を要求するクライアントタスクが相互に影響
を及ぼすことはない。また、本実施例では、サービスタ
スクを動的に起動・削除できるものとし、このため、サ
ーバ登録・解放モジュール156,157を設けた。
【0046】本発明の第二の実施例におけるプロセッサ
間通信モジュール105の処理フロー160を図5に示
す。プロセッサ間通信モジュール105は、(1)クライ
アントタスク、(2)サービスタスク、(3)プロセッサ間
割込みのいずれかによって起動される。
【0047】クライアントタスクから起動された場合、
処理フロー120と同様の処理を実行する。第一に、自
系プロセッサ上で割込み禁止と排他制御を実行し(処理
161)、次に、処理要求先サーバに対応する送信バッファ
プールから送信バッファを確保する(処理162)。こ
の時点で、自系プロセッサ上での排他制御を終了して割
込みを許可する(処理163)。処理162および後述
する処理172において送信バッファプールからの送信
バッファ確保・解放を行うものは、クライアントタスク
が動作するプロセッサのみである。デュアルプロセッサ
システムでは、一方のプロセッサ上で動作するサービス
タスクにプロセッサ間処理要求を行うクライアントタス
クは、必ず、もう一方のプロセッサ上で動作する。この
ため、処理161,163で示すように、単一プロセッ
サ上の排他的動作のみを用いて、送信バッファプールか
らの排他的な領域確保・解放を行うことができる。
【0048】次に、確保した送信バッファ上に通信デー
タを格納し(処理164)、プロセッサ間割込み機能に
よりサーバの動作するプロセッサに処理要求を通知する
(処理165)。最後に、処理要求を行ったクライアン
トタスクを、サーバから処理結果が返ってくるまで待ち
状態に移行させる(処理166)。
【0049】クライアントタスクからの要求によってプ
ロセッサ間割込みを受けたプロセッサは、同じくプロセ
ッサ間通信モジュール105を起動する。プロセッサ間
通信モジュールは、このとき、処理169に移行する。
第一に、送信バッファから通知データを取り出し(処理
169)、次に、指定されたサービスタスクを起動する
(処理170)。サービスタスクは、その処理を終了す
ると、結果返却をプロセッサ間通信モジュールに依頼す
る。このとき、プロセッサ間通信モジュールは、処理結
果を送信バッファに格納し(処理167)、プロセッサ
間割込み機能によって、クライアントタスクの存在する
プロセッサに処理終了を通知する(処理168)。な
お、ここで使用される送信バッファは、サービスタスク
に対して処理要求を行った際に用いられたものである。
このため、サービスタスク側で送信バッファの確保を行
う必要はない。
【0050】サービスタスクからの処理結果返却を示す
プロセッサ間割込みを受けたプロセッサ間通信モジュー
ルは、処理171〜174を実行する。ここでは、処理
依頼・結果返却に用いた送信バッファを解放し(処理1
72)、サービスタスクの処理終了を待っていたクライ
アントタスクを実行可能状態に移行させる(処理17
4)。この際、送信バッファ解放時には、自系プロセッ
サ上での割込み禁止と排他制御実行(処理171)、お
よび、排他制御終了と割込み許可(処理173)が必要
である。
【0051】制御用,組込み用システムを考慮した場
合、共有メモリの容量に制限があることが多く、予め存
在しないサービスタスクに対する送信バッファプールを
設けておくことは、非効率的である。このため、サービ
スタスク生成時に送信バッファプールを確保することが
必要となる。図4では、簡単のため、サービスタスクを
プロセッサ101上のみで動作させているが、勿論、プ
ロセッサ100上でも別のサービスタスク起動すること
ができる。この際、2つのプロセッサが同時にサービス
タスクを起動して、該サービスタスクに必要な送信バッ
ファプールを共有メモリから確保しようとすると、共有
メモリ上のデータに不整合が発生する可能性がある。
【0052】サーバ登録・解放モジュール156,15
7は、上述の不整合が発生しないようにサービスタスク
の生成・削除を行う手段である。本システムでは、デュ
アルプロセッサシステム内の一方のプロセッサにのみ、
送信バッファプールの確保・解放を行う権利(送信バッ
ファプール作成権)を与え、これにより、自系プロセッ
サ上の排他制御機能のみで共有メモリに不整合が起らな
いようにしている。本実施例では、プロセッサ100の
みが該送信バッファプール作成権を有するものとする。
【0053】サーバ登録・解放モジュール156の処理
フロー180を図6に、サーバ登録・解放モジュール1
57の処理フロー200を図7に示す。
【0054】サーバ登録・解放モジュール156は、プ
ロセッサ100上に存在し、送信バッファプール作成権
を有する。このため、全ての処理をプロセッサ100上
で実行することができる。自系プロセッサのタスクがサ
ーバ登録を依頼した場合、第一に、共有メモリから送信
バッファプールを確保する(処理182)。この際、共
有メモリ上の領域に不整合が生じないように、予め処理
181で割込み禁止と排他制御を実行しておかなければ
ならない。前述したように、プロセッサ100のみが送
信バッファプール作成権を所有するため、ここでは自系
プロセッサ上でのみ排他的に動作していれば十分であ
る。送信バッファプールを確保した後、直ちに、排他制
御を終了して割込みを許可することができる(処理18
3)。次に、自系プロセッサ上にサービスタスクを生成
し(処理184)、確保しておいた送信バッファプール
をサービスタスクに割り当てる(処理185)。
【0055】また、自系プロセッサのタスクがサーバ削
除を依頼した場合にも、同様に、全ての処理をプロセッ
サ100上で実行できる。第一に、自系プロセッサ上で
割込み禁止と排他制御を行って(処理187)、共有メ
モリに送信バッファプールを解放し(処理188)、排
他制御を終了して割込みを許可する(処理189)。次
に、自系プロセッサ上で動作中のサービスタスクを終了
させる(処理190)。
【0056】サーバ登録・解放モジュール156は、シ
ステム内で唯一の送信バッファプール作成権を有するプ
ロセッサ上で動作するから、他系プロセッサからの処理
依頼を受け付けなければならない。他系プロセッサから
の送信バッファプール確保依頼があった場合、第一に、
処理181〜183によって、共有メモリから送信バッ
ファプールを確保し、次に、プロセッサ間割込み機能に
よって、依頼元プロセッサに送信バッファプール確保完
了を通知する(処理186)。他系プロセッサからの送
信バッファプール解放依頼があった場合、同様に、処理
187〜189によって、共有メモリへ送信バッファプ
ールを解放し、次に、プロセッサ間割込み機能によっ
て、依頼元プロセッサに送信バッファプール解放完了を
通知する(処理191)。
【0057】サーバ登録・解放モジュール157は、上
記サーバ登録・解放モジュール156の機能の一部を用い
て、プロセッサ101上でのサービスタスク生成・削除
を行う。
【0058】プロセッサ101上のタスクからサーバ登
録処理が行われた場合、第一に、プロセッサ間割込み機
能によって、送信バッファプール作成権を有するプロセ
ッサに対して、確保依頼を行う(処理201)。この時
点で、サーバ登録処理を行ったタスクを待ち状態とし
(処理202)、プロセッサ101では、送信バッファ
プール確保が完了するまで別処理を実行する。前述した
サーバ登録・解放モジュール156の処理によって、送
信バッファプールが確保され、プロセッサ間割込み機能
によって確保完了が通知されると、再びサーバ登録・解
放モジュール157が起動される。このとき、サービスタ
スクを自系プロセッサ上で生成し(処理205)、送信
バッファプールを起動したサーバに割り当てる(処理2
06)。最後に、サーバ登録依頼を行ったタスクを実行
可能状態とし(処理207)、処理を継続させる。
【0059】また、プロセッサ101上のタスクがサー
バ削除処理を行う場合、同様に、プロセッサ間割込み機
能によって、プロセッサ100に送信バッファプール解
放依頼を行い(処理203)、削除依頼を行ったタスクを
待ち状態とする(処理204)。プロセッサ100上のサ
ーバ登録・解放モジュール156は、送信バッファプー
ルの解放を完了するとプロセッサ間割込みを通知してく
る。これにより、サーバ登録・解放モジュール157が
起動される。サーバ登録・解放モジュール157は、動作
中サービスタスクを終了し(処理208)、サーバ削除
処理を行ったタスクを再び実行可能状態とする(処理2
09)。
【0060】このサーバ登録・解放モジュール156,
157によって、サービスタスクの生成・削除時に動的
に送信バッファプールを確保・解放でき、共有メモリを
効率的に使用することができる。
【0061】
【発明の効果】本発明によれば、プロセッサ間排他制御
機能を有しない複数個のマイクロプロセッサが共有メモ
リに接続されたマルチプロセッサシステムにおいて、プ
ロセッサ間で相互に処理依頼を行えるマルチタスクプロ
グラミング環境を実現できる。また、本発明の第二の実
施例を用いることにより、送信バッファプールを動的に
確保・解放して、制御用,組込み用システムでは容量に
制限の多い共有メモリを効率的に使用することができ
る。
【図面の簡単な説明】
【図1】本発明の実施例を示すシステム構成図である。
【図2】プロセッサ間通信モジュールの処理フローを示
す図である。
【図3】3つ以上のプロセッサから構成される本発明の
実施例を示すシステム構成図である。
【図4】本発明の別の実施例を示すシステム構成図であ
る。
【図5】本発明の別の実施例におけるプロセッサ間通信
モジュールの処理フローを示す図である。
【図6】送信バッファプール作成権を有するプロセッサ
でのサーバ登録・解放モジュールの処理フローを示す図
である。
【図7】送信バッファプール作成権を有しないプロセッ
サでのサーバ登録・解放モジュールの処理フローを示す
図である。
【符号の説明】
100,101,140〜142…プロセッサ、102
…共有メモリ、103…制御LSI、104…内蔵キャ
ッシュメモリ、105…プロセッサ間通信モジュール、
106…内部排他制御機能、107,144…プロセッ
サ間割込み回路、108…メモリ参照調停回路、10
9,110,145〜147,153,154…送信バ
ッファプール、111,155…送信バッファ、12
0,160…プロセッサ間通信モジュールの処理フロ
ー、143…メモリバス、150,151…サービスタ
スク、152…クライアントタスク、156,157…
サーバ登録・解放モジュール、180,200…サーバ
登録・解放モジュールの処理フロー。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 恒冨 邦彦 茨城県日立市大みか町七丁目1番1号 株 式会社日立製作所日立研究所内 (72)発明者 黒澤 憲一 茨城県日立市大みか町五丁目2番1号 株 式会社日立製作所大みか工場内 Fターム(参考) 5B045 BB34 DD03 EE01 EE36 FF03 FF04

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】プロセッサ間排他制御機能を有しない複数
    個のプロセッサと、該複数個のプロセッサに接続される
    共有メモリと、該複数個のプロセッサ間で相互に割込み
    を入れることができる割込み制御機能とを有したマルチ
    プロセッサシステムにおいて、該複数個のプロセッサは
    それぞれプロセッサ間でデータを交換するためのプロセ
    ッサ間通信手段を有し、かつ、該共有メモリは該複数個
    のプロセッサそれぞれに対応する送信バッファプールを
    有し、 該プロセッサ間通信手段は、他系プロセッサへの処理要
    求時に、自系プロセッサ上で排他的に該送信バッファプ
    ールから送信バッファを確保して、該確保された送信バ
    ッファ上に送信データを書き込み、プロセッサ間割込み
    機能によって処理要求先プロセッサに処理要求を行うと
    いう一連の処理を実行し、かつ、 該プロセッサ間通信手段は、他系プロセッサからの処理
    要求を受けると、該送信バッファ内のデータに基づいた
    処理を行った後、プロセッサ間割込み機能によって処理
    要求元プロセッサに処理終了を通知するという一連の処
    理を実行し、更に、 該プロセッサ間通信手段は、他系プロセッサからの処理
    終了通知を受けると、自系プロセッサ上で排他的に該送
    信バッファプールへ該送信バッファを解放することを特
    徴とするマルチプロセッサシステム。
  2. 【請求項2】プロセッサ間排他制御機能を有しない複数
    個のプロセッサと、該複数個のプロセッサに接続される
    共有メモリと、該複数個のプロセッサ間で相互に割込み
    を入れることができる割込み制御機能とを有したマルチ
    プロセッサシステムにおいて、該複数個のプロセッサは
    それぞれプロセッサ間でデータを交換するためのプロセ
    ッサ間通信手段を有し、かつ、該共有メモリは該複数個
    のプロセッサそれぞれに対応する送信バッファプールを
    有し、 該プロセッサ間通信手段は、他系プロセッサへの処理要
    求時に、自系プロセッサ上での割込み禁止と排他制御を
    実行し、該送信バッファプールから送信バッファを確保
    して、排他制御の終了と割込み許可を行い、該確保され
    た送信バッファ上に送信データを書き込み、プロセッサ
    間割込み機能によって処理要求先プロセッサに処理要求
    を行うという一連の処理を実行し、かつ、 該プロセッサ間通信手段は、他系プロセッサからの処理
    要求を受けると、該送信バッファ内のデータに基づいた
    処理を行った後、プロセッサ間割込み機能によって処理
    要求元プロセッサに処理終了を通知するという一連の処
    理を実行し、更に、 該プロセッサ間通信手段は、他系プロセッサからの処理
    終了通知を受けると、自系プロセッサ上での割込み禁止
    と排他制御を実行し、該送信バッファプールへ該送信バ
    ッファを解放して、排他制御の終了と割込み許可を行う
    という一連の処理を実行することを特徴とするマルチプ
    ロセッサシステム。
  3. 【請求項3】プロセッサ間排他制御機能を有しない二つ
    のプロセッサと、該二つのプロセッサに接続される共有
    メモリと、該二つのプロセッサ間で相互に割込みを入れ
    ることができる割込み制御機能とを有したデュアルプロ
    セッサシステムにおいて、該二つのプロセッサはそれぞ
    れプロセッサ間でデータを交換するためのプロセッサ間
    通信手段を有し、該二つのプロセッサのうち、少なくと
    も一つのプロセッサは他系プロセッサからの処理を受け
    付ける1個以上のサービスタスクを有し、かつ、該共有
    メモリは該サービスタスクそれぞれに対応する送信バッ
    ファプールを有し、 該プロセッサ間通信手段は、他系プロセッサへの処理要
    求時に、自系プロセッサ上で排他的に処理要求先サービ
    スタスクの送信バッファプールから送信バッファを確保
    して、該確保された送信バッファ上に送信データを書き
    込み、プロセッサ間割込み機能によって処理要求先プロ
    セッサに処理要求を行うという一連の処理を実行し、か
    つ、 該プロセッサ間通信手段は、他系プロセッサからの処理
    要求を受けると、該送信バッファに対応するサービスタ
    スクにデータを通知し、サービスタスクの処理終了後、
    プロセッサ間割込み機能によって処理要求元プロセッサ
    に処理終了を通知するという一連の処理を実行し、更
    に、 該プロセッサ間通信手段は、他系プロセッサからの処理
    終了通知を受けると、自系プロセッサ上で排他的に該送
    信バッファプールへ該送信バッファを解放することを特
    徴とするデュアルプロセッサシステム。
  4. 【請求項4】プロセッサ間排他制御機能を有しない二つ
    のプロセッサと、該二つのプロセッサに接続される共有
    メモリと、該二つのプロセッサ間で相互に割込みを入れ
    ることができる割込み制御機能とを有したデュアルプロ
    セッサシステムにおいて、該二つのプロセッサはそれぞ
    れプロセッサ間でデータを交換するためのプロセッサ間
    通信手段を有し、該二つのプロセッサのうち、少なくと
    も一つのプロセッサは他系プロセッサからの処理を受け
    付ける1個以上のサービスタスクを有し、かつ、該共有
    メモリは該サービスタスクそれぞれに対応する送信バッ
    ファプールを有し、 該プロセッサ間通信手段は、他系プロセッサへの処理要
    求時に、自系プロセッサ上での割込み禁止と排他制御を
    実行し、処理要求先サービスタスクの送信バッファプー
    ルから送信バッファを確保して、排他制御の終了と割込
    み許可を行い、該確保された送信バッファ上に送信デー
    タを書き込み、プロセッサ間割込み機能によって処理要
    求先プロセッサに処理要求を行うという一連の処理を実
    行し、かつ、 該プロセッサ間通信手段は、他系プロセッサからの処理
    要求を受けると、該送信バッファに対応するサービスタ
    スクにデータを通知し、サービスタスクの処理終了後、
    プロセッサ間割込み機能によって処理要求元プロセッサ
    に処理終了を通知するという一連の処理を実行し、更
    に、 該プロセッサ間通信手段は、他系プロセッサからの処理
    終了通知を受けると、自系プロセッサ上での割込み禁止
    と排他制御を実行し、該送信バッファプールへ該送信バ
    ッファを解放して、排他制御の終了と割込み許可を行う
    という一連の処理を実行することを特徴とするデュアル
    プロセッサシステム。
  5. 【請求項5】請求項3に示したデュアルプロセッサシス
    テムにおいて、前記二つのプロセッサはサービスタスク
    の登録若しくは削除を行うサーバ登録・解放手段を有
    し、かつ、前記二つのプロセッサのうち、一つのプロセ
    ッサに送信バッファプール作成権を与え、 自系プロセッサが送信バッファプール作成権を有するサ
    ーバ登録・解放手段は、自系プロセッサ上でのサーバ登
    録若しくはサーバ削除時に、自系プロセッサ上で排他的
    に前記共有メモリから送信バッファプールを確保若しく
    は解放し、 自系プロセッサが送信バッファプール作成権を有しない
    サーバ登録・解放手段は、自系プロセッサ上でのサーバ
    登録若しくはサーバ削除時に、送信バッファプール作成
    権を有するプロセッサに対し、プロセッサ間割込みによ
    り送信バッファプール確保若しくは解放を依頼すること
    を特徴とするデュアルプロセッサシステム。
  6. 【請求項6】請求項4に示したデュアルプロセッサシス
    テムにおいて、前記二つのプロセッサはサービスタスク
    の登録若しくは削除を行うサーバ登録・解放手段を有
    し、かつ、前記二つのプロセッサのうち、一つのプロセ
    ッサに送信バッファプール作成権を与え、 自系プロセッサが送信バッファプール作成権を有するサ
    ーバ登録・解放手段は、自系プロセッサ上でのサーバ登
    録若しくはサーバ削除時に、自系プロセッサ上での割込
    み禁止と排他制御を実行し、前記共有メモリから送信バ
    ッファプールを確保若しくは解放して、排他制御の終了
    と割込み許可を行うという一連の処理を実行し、 自系プロセッサが送信バッファプール作成権を有しない
    サーバ登録・解放手段は、自系プロセッサ上でのサーバ
    登録若しくはサーバ削除時に、送信バッファプール作成
    権を有するプロセッサに対し、プロセッサ間割込みによ
    り送信バッファプール確保若しくは解放を依頼すること
    を特徴とするデュアルプロセッサシステム。
  7. 【請求項7】請求項2,4,6に示したマルチプロセッ
    サシステム若しくはデュアルプロセッサシステムにおい
    て、前記割込み禁止および割込み許可を行う処理は、プ
    ロセッサ間割込みのみを禁止および許可することを特徴
    とするマルチプロセッサシステム若しくはデュアルプロ
    セッサシステム。
JP11038169A 1999-02-17 1999-02-17 マルチプロセッサシステム Pending JP2000235553A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11038169A JP2000235553A (ja) 1999-02-17 1999-02-17 マルチプロセッサシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11038169A JP2000235553A (ja) 1999-02-17 1999-02-17 マルチプロセッサシステム

Publications (1)

Publication Number Publication Date
JP2000235553A true JP2000235553A (ja) 2000-08-29

Family

ID=12517909

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11038169A Pending JP2000235553A (ja) 1999-02-17 1999-02-17 マルチプロセッサシステム

Country Status (1)

Country Link
JP (1) JP2000235553A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009032248A (ja) * 2007-07-03 2009-02-12 Panasonic Corp 共有メモリを用いたバス通信装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009032248A (ja) * 2007-07-03 2009-02-12 Panasonic Corp 共有メモリを用いたバス通信装置

Similar Documents

Publication Publication Date Title
JP3659062B2 (ja) 計算機システム
KR100708952B1 (ko) 병렬 처리 시스템, 병렬 처리 프로그램을 기록하는 컴퓨터 판독가능한 기록 매체 및 병렬 처리 방법
JP2644780B2 (ja) 処理依頼機能を持つ並列計算機
US20020165896A1 (en) Multiprocessor communication system and method
JP4062441B2 (ja) 並列処理システム及び並列処理プログラム
JP4171910B2 (ja) 並列処理システム及び並列処理プログラム
US8661458B2 (en) Multiprocessor system, and method for shared use of devices among operating systems of multiprocessor system
JPH01200466A (ja) データ処理システム
JP2004302837A (ja) シングルプロセッサ向けosによる並列処理システム、並列処理プログラム
JP2007188397A (ja) マルチプロセッサシステム及びマルチプロセッサシステムの割込み制御方法をコンピュータに実行させるためのプログラム
US20110265093A1 (en) Computer System and Program Product
JPH1185618A (ja) 仮想メモリ変換を制御する方法
JPWO2010097925A1 (ja) 情報処理装置
JP4026667B2 (ja) マルチos構成方法
JP3431941B2 (ja) データ処理システムにおける命令の実行順序を決定する方法および装置
JP2001333137A (ja) 自主動作通信制御装置及び自主動作通信制御方法
JPH04155465A (ja) ファイル共用方法
JPH1173365A (ja) データ移動操作を最適化する方法
US7103528B2 (en) Emulated atomic instruction sequences in a multiprocessor system
JP3169624B2 (ja) プロセッサ間通信方法およびそのための並列プロセッサ
JP3969308B2 (ja) シングルプロセッサ向けosによる並列処理システム
JP2000235553A (ja) マルチプロセッサシステム
JP2001167058A (ja) 情報処理装置
JP2813182B2 (ja) マルチプロセッサコンピュータ複合装置
JPS603229B2 (ja) 情報処理方式

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040712

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040727

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20041207