(57)【特許請求の範囲】
【請求項１】
１チップ上に複数のプロセッサコアと、前記複数のプロセッサコアからアクセス可能な共有メモリとを持つマルチプロセッサにおいて、
各々の前記プロセッサコアは、
プログラムによりライト可能なメモリ選択フラグ信号を格納するとともに、当該メモリ選択フラグ信号を外部へ出力する記憶手段と、
前記記憶手段からのメモリ選択フラグ信号と外部フラグ信号とを切り替え出力する切り替え手段と、
前記記憶手段をプログラムによりリードした場合に前記切り替え手段の出力をデータバスに送出する制御付きドライバと、
前記切り替え手段の出力とメモリアクセスアドレスとを入力として外部へメモリアクセス信号を出力するメモリ制御部と
を有し、
前記共有メモリは、複数のメモリアクセス信号を入力し、前記メモリアクセス信号に関連して複数の前記データバスで接続されており、
前記複数のプロセッサコアのうちの１つのプロセッサコアの前記記憶手段が出力した前記メモリ選択フラグ信号を、当該プロセッサコア以外の少なくとも１つのプロセッサコアが直接または論理回路を介して前記外部フラグ信号として入力することを特徴とするマルチプロセッサ。
【請求項２】
１チップ上に第１および第２のプロセッサコアと、前記第１および第２のプロセッサコアからアクセス可能な共有メモリとを持つマルチプロセッサにおいて、
前記第１および前記第２のプロセッサコアは、それぞれ、
プログラムによりライト可能なメモリ選択フラグ信号を格納するとともに、当該メモリ選択フラグ信号を外部へ出力する記憶手段と、
前記記憶手段からのメモリ選択フラグ信号と外部フラグ信号とを切り替え出力する切り替え手段と、
前記記憶手段をプログラムによりリードした場合に前記切り替え手段の出力をデータバスに送出する制御付きドライバと、
前記切り替え手段の出力とメモリアクセスアドレスとを入力として外部へメモリアクセス信号を出力するメモリ制御部とを有し、
前記データバスに接続されて前記外部フラグ信号と、前記切り替え手段を制御する選択信号とを外部から受け取る一方、
前記メモリ選択フラグ信号をプログラムによりリードした場合、前記メモリ選択フラグ信号を前記データバスに送出し、
前記第１のプロセッサコアの選択信号を固定し、
前記第１のプロセッサコアの切り替え手段出力信号を論理反転して前記第２のプロセッサコアの外部フラグ信号として印加し、
前記第１のプロセッサコアのメモリアクセス信号を前記共有メモリに接続し、
前記第１のプロセッサコアのデータバスを前記共有メモリに接続し、
前記第１のプロセッサコアの外部フラグ信号を固定し、
前記第２のプロセッサコアの選択信号を、前記第１のプロセッサコアの選択信号を論理反転した値で固定し、
前記第２のプロセッサコアの切り替え手段出力信号をオープンとし、
前記第２のプロセッサコアのメモリアクセス信号を前記共有メモリに接続し、
前記第２のプロセッサコアのデータバスを前記共有メモリに接続するように構成したことを特徴とするマルチプロセッサ。
【請求項３】
請求項２のマルチプロセッサを用いて共有メモリでの競合を避けるマルチプロセッサ制御方法であって、
第１及び第２のプロセッサコアに同時に割り込みをかけ、
前記共有メモリにアクセス権を持たないプロセッサコア側は割り込みルーチン中で前記共有メモリに対するアクセスを禁止し、
他方のプロセッサコア側で記憶手段をプログラムにより切り替えることで前記共有メモリの接続先を変更するステップを含むマルチプロセッサ制御方法。
【請求項４】
請求項２のマルチプロセッサを用いて共有メモリでの競合を避けるマルチプロセッサ制御方法であって、
マルチプロセッサ上のプロセッサコアでメモリ選択フラグ信号を切り替え手段の出力とする側をマスタ側とし、
前記マスタ側プロセッサコアで前記共有メモリをアクセスしようとするときのみ、プログラムによりメモリ選択フラグ信号を更新して前記共有メモリへのアクセスを制御するステップを含むマルチプロセッサ制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、１チップ上に複数のプロセッサコアと、前記プロセッサコアからアクセス可能な共有メモリとからなるマルチプロセッサ、マルチプロセッサコア及びその制御方法に関する技術分野に属する。
【０００２】
【従来の技術】
近年、プロセスの微細化が進んでいること及びＬＳＩへの更なる高性能化の要求から、１チップ上に複数のプロセッサコアが搭載されたマルチプロセッサが多く開発されるようになっている。また、コストの面からも、従来複数のチップで構成していたシステムを１チップ上で実現できるマルチプロセッサが脚光を浴びている。
【０００３】
このようなマルチプロセッサにおいて、それぞれのプロセッサが独立に動作できる場合は容易に最高性能を達成することが可能であるが、１チップ上のプロセッサコア間でデータのやり取りが必要な場合、一旦チップ外にデータを送出し、それを他方のプロセッサコアで受け取ろうとすると、同じ１チップ上に搭載されている効果が出せないことになる。すなわち、データの授受に関して従来の別チップ構成の場合と同等になってしまうからである。
【０００４】
そこで、従来、例えば特開平７−１０５１４６号又は特開平５−２１０６４０号の各公報に示されるように、１チップ上に複数のプロセッサコアからアクセス可能な共有メモリを設けることで前記問題を解決することが提案されている。すなわち、あるプロセッサコアで作成されたデータを共有メモリに格納し、その後にこのデータを必要とするプロセッサコアが共有メモリにアクセスする。このようにすれば、一般に内蔵されるメモリは高速であるから、データ授受に関して従来に比べ飛躍的に転送効率を向上させることができる。
【０００５】
【発明が解決しようとする課題】
しかし、前記従来のものでは、互いに独立に動くプロセッサコアからのアクセス要求を適切に行なうには、調停回路が別途必要とされ、又は複数のアクセスが許されるデュアルポートメモリを共有メモリとして使用する必要があるという問題があった。
【０００６】
また、デュアルポートメモリ又は複雑な競合を回避する調停回路は大規模になりがちで、プロセッサコア間でのデータ授受が完全にランダムに発生する場合以外は却ってオーバースペックになっていると言う問題があった。
【０００７】
さらに、既に開発しているプロセッサコアを複数搭載するという一般的な開発手法では、新たに調停回路等の設計追加が必須であり、設計期間が長くなるというがあった。
【０００８】
本発明は斯かる諸点に鑑みてなされたものであり、従来のプロセッサコアをほぼそのまま用い、簡易な構成であるにも関わらず、共有メモリでの競合を生じないマルチプロセッサを提供することを目的とする。
【０００９】
【課題を解決するための手段】
前記の目的を達成するために、請求項１の発明では、１チップ上に複数のプロセッサコアと、前記プロセッサコアからアクセス可能な共有メモリとを持つマルチプロセッサにおいて、プログラムによりライト可能なメモリ選択フラグ信号を格納する記憶手段と、前記記憶手段からのメモリ選択フラグ信号と外部フラグ信号とを切り替え出力する切り替え手段と、前記記憶手段をプログラムによりリードした場合に前記切り換え手段の出力をデータバスに送出する制御付きドライバと、前記切り替え手段の出力とメモリアクセスアドレスとを入力として外部へメモリアクセス信号を出力するメモリ制御部とを有し、前記データバスに接続され、前記外部フラグ信号と、前記切り替え手段を制御する選択信号とを外部から受け取る複数のプロセッサコアと、複数のメモリアクセス信号を入力し、前記メモリアクセス信号に関連して複数の前記データバスで接続される共有メモリとを備える。
【００１０】
前記の構成によると、リセット直後は、プロセッサコア内のメモリ制御回路は共有メモリに対し、メモリアクセス信号を同時にはアクティブ状態にすることはなく、競合を避けることができる。従って、複数のプロセッサコアをチップ上で接続する際に、簡易に共有メモリへの排他制御を実現することができ、かつ各プロセッサコアは共有メモリへのアクセスが許可されているかどうかを内部プログラムで容易に知ることができる。
【００１１】
請求項２の発明では、１チップ上に複数設けられ、共通メモリにアクセス可能なプロセッサコアであって、プログラムによりライト可能なメモリ選択フラグ信号を格納する記憶手段と、前記記憶手段からのメモリ選択フラグ信号と外部フラグ信号とを切り替え出力する切り替え手段と、前記記憶手段をプログラムによりリードした場合に前記切り換え手段の出力をデータバスに送出する制御付きドライバと、前記切り替え手段の出力とメモリアクセスアドレスとを入力として外部へメモリアクセス信号を出力するメモリ制御部とを有し、前記データバスに接続されて前記外部フラグ信号と、前記切り替え手段を制御する選択信号とを外部から受け取る一方、前記メモリ選択フラグ信号をプログラムによりリードした場合、前記メモリ選択フラグ信号を前記データバスに送出するようにする。
【００１２】
前記の構成によると、プロセッサコアは１チップ上で複数接続される際に、簡易に共有メモリへの排他制御を実現することができ、かつ共有メモリへのアクセスが許可されているかどうかを内部プログラムで容易に知ることができる。
【００１３】
請求項３の発明では、請求項２のマルチプロセッサコアを用いるマルチプロセッサであって、第１のプロセッサコアと第２のプロセッサコアとを搭載し、前記第１のプロセッサコアの選択信号を固定し、前記第１のプロセッサコアの切り替え手段出力信号を論理反転して前記第２のプロセッサコアの外部フラグ信号として印加し、前記第１のプロセッサコアのメモリアクセス信号を前記共有メモリに接続し、前記第１のプロセッサコアのデータバスを前記共有メモリに接続し、前記第１のプロセッサコアの外部フラグ信号を固定し、前記第２のプロセッサコアの選択信号を、前記第１のプロセッサコアの選択信号を論理反転した値で固定し、前記第２のプロセッサコアの切り替え手段出力信号をオープンとし、前記第２のプロセッサコアのメモリアクセス信号を前記共有メモリに接続し、前記第２のプロセッサコアのデータバスを前記共有メモリに接続するように構成する。
【００１４】
前記の構成によると、リセット直後は、第２プロセッサコアから共有メモリにアクセスできる状態になっており、選択信号をリードすることで、プログラムによりマスタ側として動作しているか、又はスレーブ側として動作しているか判断することが可能である。また、通常動作時では、第１プロセッサコア側で共有メモリにアクセスする必要がある場合、データバスを通じて、メモリ制御回路をアクティブにする。同時に、第２プロセッサコア側では、メモリ制御回路はディスエーブルされる。従って、共有メモリは第１プロセッサコア側に接続されることになり、競合を避けることができる。また、内部レジスタをリードすることで、選択信号の値を知ることができ、さらにそれらがマスタ側なのか、又はスレーブ側なのかを知ることができる。同様に、内部レジスタをリードすることで、マルチプロセッサコアが自身で設定した又は他方の影響からのものかのいずれにしても、共有メモリにアクセスできるか否かを知ることが可能である。従って、わずかの論理回路を考慮することで、本発明の作用効果が有効に得られる好適なマルチプロセッサが得られる。
【００１５】
請求項４の発明のマルチプロセッサ制御方法では、請求項３のマルチプロセッサを用いて、第１及び第２のプロセッサコアに同時に割り込みをかけ、前記共有メモリにアクセス権を持たないプロセッサコア側は割り込みルーチン中で前記共有メモリに対するアクセスを禁止し、他方のプロセッサコア側で記憶手段をプログラムにより切り替えることで前記共有メモリの接続先を変更するステップを含むようにする。また、請求項５の発明のマルチプロセッサ制御方法では、請求項３のマルチプロセッサを用いて、マルチプロセッサ上のプロセッサコアでメモリ選択フラグ信号を切り替え手段の出力とする方をマスタ側とし、前記マスタ側プロセッサコアで前記共有メモリをアクセスしようとするときのみ、プログラムによりメモリ選択フラグ信号を更新して前記共有メモリへのアクセスを制御するステップを含むようにする。
【００１６】
前記の構成によると、第２プロセッサコアが共有メモリをアクセスしている最中に、第１プロセッサコアが記憶手段を書き換えて、共有メモリが第１プロセッサコア側に属しようとするのを避けることができる。
【００１７】
【発明の実施の形態】
以下、本発明の実施形態を図面に基づいて説明する。図１は本発明の実施形態に係るマルチプロセッサ１の全体構成を示し、このマルチプロセッサ１中には１チップ上に全く同一の第１プロセッサコア１００と第２プロセッサコア２００とが設けられている。
【００１８】
前記プロセッサコア１００，２００はそれぞれのデータバス１１０，２１０により、共有メモリ３００に接続されている。尚、図示しないが、この他に実際にはアクセスアドレスや制御信号がそれぞれのプロセッサコア１００，２００から出力されている。
【００１９】
前記共有メモリ３００は、第１プロセッサコア１００から来るメモリアクセス信号１２０がアクティブ(＝"１")の時に、前記データバス１１０を通じて第１プロセッサコア１００とデータ転送を行なう。同様に、この共有メモリ３００は、第２プロセッサコア２００から来るメモリアクセス信号２２０がアクティブ(＝"１")の時に、データバス２１０を通じて第２プロセッサコア２００とデータ転送を行なう。
【００２０】
前記プロセッサコア１００，２００内の記憶回路１３０，２３０は、それぞれのプロセッサコア１００，２００内のプログラムによりライト可能なメモリ選択フラグ信号１７０，２７０を格納する記憶手段で、このメモリ選択フラグ信号１７０，２７０が"１"のとき、それぞれ共有メモリ３００を選択する。
【００２１】
前記プロセッサコア１００，２００内の切り替え手段１４０，２４０は、前記記憶回路１３０，２３０のメモリ選択フラグ信号１７０，２７０信号と、外部から入力される外部フラグ信号１５０，２５０とを切り換え出力する。そして、外部から前記切り替え手段１４０，２４０を制御する選択信号１６０，２６０を受け取り、この選択信号１６０が"１"の時、記憶回路１３０の出力をメモリ選択フラグ信号１７０として採用する一方、選択信号２６０が"１"の時、記憶回路２３０の出力をメモリ選択フラグ信号２７０として採用する。
【００２２】
また、制御付き出力ドライバとしてのメモリ選択フラグバス出力ドライバ１９０，２９０は、プログラムによりメモリ選択フラグ信号１７０，２７０の値をリードする場合に、データをデータバス１１０，２１０に送出する。同時に同じく制御付き出力ドライバとしての選択信号バス出力ドライバ１９１，２９１は選択信号１６０，２６０の値をリードする場合にデータをデータバス１１０，２１０を通じて送出する。
【００２３】
そして、メモリ制御部としてのメモリ制御回路１８０，２８０は、前記切り替え手段１４０，２４０の出力であるメモリ選択フラグ信号１７０，２７０とメモリアクセスアドレスとを入力として外部へメモリアクセス信号１２０，２２０を出力するメモリ制御部であって、前記メモリ選択フラグ信号１７０，２７０がアクティブ(＝"１")でかつメモリアクセスアドレスが共有メモリ３００を指し示すアドレスである場合、メモリアクセス信号１２０，２２０を出力する。そして、前記共有メモリ３００にこのメモリアクセス信号１２０，２２０が入力される。
【００２４】
以上のように説明した前記プロセッサコア１００，２００を以下のように接続する。すなわち、第１プロセッサコア１００の出力信号であるメモリ選択フラグ信号１７０を論理反転し、第２プロセッサコア２００の外部フラグ信号２５０として入力する。
【００２５】
また、前記第１プロセッサコア１００の選択信号１６０は"１"に固定し、同様に第２プロセッサコア２００の選択信号２６０は"０"に固定する。第１プロセッサコア１００の外部フラグ信号１５０は外部で固定値にしておく。この信号は前記切り替え手段１４０で選択されないので、固定値であれば何でもよい。前記第２プロセッサコア２００のメモリ選択フラグ信号２７０は外部でオープンにしておく。
【００２６】
前記メモリ制御回路１８０，２８０は、メモリ選択フラグ信号１７０，２７０がアクティブ(＝"１")の時で、かつメモリアクセスアドレス(図示せず)が共有メモリ３００を指し示す範囲である時、メモリアクセス信号１２０，２２０をアクティブ(＝"１")とする。
【００２７】
前記共有メモリ３００はプロセッサコア１００，２００から来るリード／ライト信号(図示せず)に応じて、データバス１１０，２１０を通じてデータ転送を行なう。尚、プロセッサコア１００，２００は通常のプロセッサコアが一般的に持つ、例外処理の機能等は備えているとする。
【００２８】
以上のように構成された本発明の実施形態に係るマルチプロセッサ１の作動を説明する。プロセッサコア１００，２００のメモリ空間は例えば６４Ｋワード空間とし、共有メモリ３００はその中のＥ０００番地からＦＦＦＦ番地に割り当てられているとする。
【００２９】
リセット直後では、記憶回路１３０は"０"に初期化される。選択信号１６０は固定(＝"１")なので、メモリ選択フラグ信号１７０は"０"となる。従って、第１プロセッサコア１００でメモリ選択フラグ信号１７０をリードすると、メモリ選択フラグ信号１７０は"０"となり、共有メモリ３００は選択できない。
【００３０】
同様に第２プロセッサコア２００でメモリ選択フラグ信号２７０をリードすると、選択信号２６０は固定(＝"０")なので、記憶回路２３０の値に関わらず、メモリ選択フラグ信号２７０の値は"１"となり、メモリアクセスとしてアクセスアドレスがＥ０００番地からＦＦＦＦ番地の間であると、共有メモリ３００に対し、メモリ制御回路２８０はメモリアクセス信号２２０(＝"１")を出力する。
【００３１】
すなわち、リセット直後は、第２プロセッサコア２００から共有メモリ３００にアクセスできる状態になっている。そして、選択信号１６０，２６０をリードすることで、プログラムにより、マスタ側として動作しているか、又はスレーブ側として動作しているか判断することが可能である。
【００３２】
通常動作時では、第１プロセッサコア１００側で共有メモリ３００にアクセスする必要がある場合、データバス１１０を通じて、記憶回路１３０に対して"１"をライトする。選択信号１６０が"１"であるので、メモリ選択フラグ信号１７０は"１"となり、メモリ制御回路１８０をアクティブにする。同時に、第２プロセッサコア２００側では、メモリ選択フラグ信号２７０が"０"となるので、メモリ制御回路２８０はディスエーブルされる。従って、共有メモリ３００は第１プロセッサコア１００側に接続されることになる。
【００３３】
従って、本発明の実施形態に係るマルチプロセッサ１によると、プロセッサコア１００，２００内のメモリ制御回路１８０，２８０は共有メモリ３００に対し、メモリアクセス信号１２０，２２０を同時にはアクティブ状態することはなく、競合を避けることができる。
【００３４】
また、内部レジスタをリードすることで、選択信号１６０，２６０の値を知ることができ、さらにそれらがマスタ側なのか、又はスレーブ側なのかを知ることができる。同様に、内部レジスタをリードすることで、各プロセッサコア１００，２００が自身で設定した又は他方の影響からのものかのいずれにしても、共有メモリ３００にアクセスできるか否かを知ることが可能である。
【００３５】
尚、前記実施形態では、排他制御の原則を記述したが、実際的には、第２プロセッサコア２００が共有メモリ３００をアクセスしている最中に、第１プロセッサコア１００が記憶回路１３０を書き換えてしまい、共有メモリ３００が第１プロセッサコア１００側に属してしまうことも考え得る。
【００３６】
このような場合、図２に示すように、第１及び第２プロセッサコア１００，２００に同時に割り込みをかけ、前記共有メモリ３００にアクセス権を持たない第２プロセッサコア２００側は割り込みルーチン中で前記共有メモリ３００に対するアクセスを禁止し、他方の第１プロセッサコア１００側で記憶回路１３０をプログラムにより切り替えることで前記共有メモリ３００の接続先を変更するステップを含むマルチプロセッサ制御方法をとればよい。
【００３７】
又は、図３に示すように、マルチプロセッサ１上の記憶回路１３０へのライトアクセスが生じた時に、それを示す信号出力を出力とする第１プロセッサコア１００をマスタ側とし、そのメモリ選択フラグ信号１７０を受けて、第２プロセッサコア２００側をストールさせ、第１プロセッサコア１００で共有メモリ３００をアクセスしようとするときのみ、プログラムによりメモリ選択フラグ信号１７０を更新して前記共有メモリ３００へのアクセスを制御するステップを含むマルチプロセッサ制御方法をとればよい。
【００３８】
尚、本発明は、アクセスタイミングが調整できるようなシステムにおいては、ある程度タイミングを考慮することで、ランダムに２つのプロセッサコアからアクセスがある共有メモリに対しても十分に適用することが可能である。
【００３９】
【発明の効果】
以上のように、本発明によれば、複数のプロセッサコアをチップ上で接続する際に、僅かの論理回路を考慮することで、簡易に共有メモリへの排他制御を実現することができ、かつ各プロセッサコアは共有メモリへのアクセスが許可されているかどうかを内部プログラムで容易に知ることができる。
【図面の簡単な説明】
【図１】本発明の実施形態に係るマルチプロセッサの全体構成を示す図である。
【図２】マルチプロセッサ上のプロセッサコアの制御流れを示す図である。
【図３】その他のマルチプロセッサ上のプロセッサコアの制御流れを示す図２相当図である。
【符号の説明】
１  マルチプロセッサ
１００，２００  プロセッサコア
１１０，２１０  データバス
１２０，２２０  メモリアクセス信号
１３０，２３０  記憶回路（記憶手段）
１４０，２４０  切り替え手段
１５０，２５０  外部フラグ信号
１６０，２６０  選択信号
１７０，２７０  メモリ選択フラグ信号
１８０，２８０  メモリ制御回路（メモリ制御部）
１９０，２９０  メモリ選択フラグバス出力ドライバ（制御付きドライバ）
１９１，２９１  選択信号バス出力ドライバ（制御付きドライバ）
３００  共有メモリ
【図１】
0003868316.tif 000002
【図２】
0003868316.tif 000003
【図３】
0003868316.tif 000004