(57)【要約】【課題】  本発明は、排他制御に必要な処理時間が短いマルチプロセッサシステムを提供することを目的とする。【解決手段】  マルチプロセッサシステムは、複数のプロセッサと、複数のプロセッサに共通に結合される共有バスと、共有バスに結合され複数のプロセッサにより共有されるリソースと、複数のプロセッサに共通に結合されリソースの排他的使用のためのロック／ロック解除を示すロックフラグを有する排他制御機構を含み、複数のプロセッサの各々は排他制御機構に結合される特殊用途レジスタ・インターフェースを含み、特殊用途レジスタ・インターフェースを介した特殊用途レジスタアクセスによりロックフラグにアクセスするよう構成されることを特徴とする。【選択図】  図１
2006185348.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサと、
該複数のプロセッサに共通に結合される共有バスと、
該共有バスに結合され該複数のプロセッサにより共有されるリソースと、
該複数のプロセッサに共通に結合され該リソースの排他的使用のためのロック／ロック解除を示すロックフラグを有する排他制御機構
を含み、該複数のプロセッサの各々は該排他制御機構に結合される特殊用途レジスタ・インターフェースを含み、該特殊用途レジスタ・インターフェースを介した特殊用途レジスタアクセスにより該ロックフラグにアクセスするよう構成されることを特徴とするマルチプロセッサシステム。
【請求項２】
該複数のプロセッサの各々は、
特殊用途レジスタ群と、
該特殊用途レジスタ群にアクセスするために該特殊用途レジスタ群に結合されたアクセス部
を更に含み、該アクセス部は更に該特殊用途レジスタ・インターフェースに結合され、所定の特殊用途レジスタアクセス命令に応じて該特殊用途レジスタ・インターフェースを介して該ロックフラグにアクセスすることを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項３】
該リソースはメモリを含み、該共有バスは該排他制御機構に結合され、該複数のプロセッサは該メモリのメモリ空間へのアクセスとして該ロックフラグにアクセス可能なように構成されることを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項４】
該排他制御機構は、
該複数のプロセッサのそれぞれに個別に結合される複数の第１の排他制御機構と、
該第１の排他制御機構に共通に結合される第２の排他制御機構
を含み、該ロックフラグは該第２の排他制御機構に設けられ、該第２の排他制御機構は該複数の第１の排他制御機構からの該ロックフラグへのアクセス要求を調停する調停回路を含むことを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項５】
該共有リソースは複数存在し、該ロックフラグは該複数のリソースに対応して該第２の排他制御機構に複数個設けられ、該第１の排他制御機構は該複数のロックフラグのうちでアクセス対象となるロックフラグを特定するロック対象指定レジスタを含むことを特徴とする請求項４記載のマルチプロセッサシステム。
【請求項６】
該第１の排他制御機構は該ロックフラグが操作される際に該ロックフラグの操作前の値を保持するロック操作前値保持レジスタを更に含むことを特徴とする請求項４記載のマルチプロセッサシステム。
【請求項７】
該排他制御機構は該ロックフラグのロックが解除されると該複数のプロセッサのうちで該ロックフラグのロック解除を待って動作停止しているプロセッサに動作再開を指示するよう構成されることを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項８】
該排他制御機構は該ロックフラグのロックが解除されるか又は割り込み要求が発生すると該複数のプロセッサのうちで該ロックフラグのロック解除を待って動作停止しているプロセッサに動作再開を指示するよう構成されることを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項９】
該排他制御機構は該ロックフラグのロックが解除されると該複数のプロセッサのうちで該ロックフラグのロック解除を待っているプロセッサに割り込みを発生させるよう構成されることを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項１０】
複数のプロセッサと、該複数のプロセッサに共通に結合される共有バスと、該共有バスに結合され該複数のプロセッサにより共有されるリソースを含むマルチプロセッサシステムにおいて、該リソースの排他的使用のためのロック／ロック解除を示すロックフラグに該複数のプロセッサの１つから特殊用途レジスタ・インターフェースを介した特殊用途レジスタアクセスによりアクセスすることを特徴とするロックフラグ操作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にマルチプロセッサシステムに関し、詳しくは共有リソースの排他制御を行うマルチプロセッサシステムに関する。
【背景技術】
【０００２】
マルチプロセッサ環境、即ち複数のプロセッサで構成されたシステム環境においては、共通バス上にあるメモリ等のリソースは、複数のプロセッサにより共有される。あるプロセッサがメモリを利用する際、場合によっては、一定期間独占的にメモリを使用して、その間は他のプロセッサがメモリアクセスをできないようにする必要がある。これは例えばトランザクションの途中で、他のプロセッサによるメモリアクセスやデータ変更が生じると、システムとして一貫性が保てなくなるためである。そこで、共有資源を独占的に使用するために、セマフォレジスタによる資源管理が一般的に行われる。
【０００３】
セマフォレジスタによる資源管理においては、メモリを占有したいプロセッサは、メモリへのアクセスに先立ちセマフォフラグを参照する。フラグが立っていない場合には、他のプロセッサがメモリを使用してないと判断する。この場合、プロセッサは、フラグを設定することでメモリを占有することを他のプロセッサに対して明示的に示し、その後メモリをアクセスする。フラグが設定されている期間中は、他のプロセッサはメモリをアクセスすることが出来ない。メモリの使用が終了すると、メモリを使用していたプロセッサはセマフォフラグの設定を解除する。
【０００４】
セマフォレジスタを使用する場合には、厳密なフラグ管理が必要になる。例えば、あるプロセッサがセマフォフラグを参照してフラグが立っていないことを確認し、フラグを立てるフラグ設定動作を実行するとする。この時にフラグ参照からフラグ設定までの間に時間差があると、この時間の間に、他のプロセッサがセマフォフラグを参照してしまう可能性がある。この場合、後からセマフォフラグを参照したプロセッサも、フラグが立っていないために、メモリが使用可能であると判断してしまう。
【０００５】
このような状況を避けるために、セマフォフラグの参照及び設定には、通常、アトミックLOAD/STOREと呼ばれる方式のアクセスが行なわれる。この方式では、リード動作とライト動作とを不可分の単位即ち１回のバスサイクルで実行する。一回のバスサイクルでリード動作とライト動作を実行してフラグの参照と設定とを行なうため、この方式では厳密なフラグの管理が可能となる。
【０００６】
特許文献１には、プロセッサと共有結合網との間に排他制御用の機構を設けた構成が示される。また以下の特許文献２乃至６には、特殊なロック機構で排他制御を行う構成が示される。
【特許文献１】特開２０００−１８７６５２号公報
【特許文献２】特開平５−２２５１１７号公報
【特許文献３】特開平６−１１０８４７号公報
【特許文献４】特開平０８−３１４８６９号公報
【特許文献５】特開平０９−２８２２９１号公報
【特許文献６】特開平０４−３４３１５９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従来のマルチプロセッサシステムでの排他制御において、セマフォフラグは共有メモリのメモリ空間上に設けられる構成が一般的である。従って各プロセッサからバスを介して共有メモリのセマフォフラグにアクセスすることになり、アクセス時にはバスのアクセス・アービトレーションが必要不可欠になる。またプロセッサと共有メモリとの間に、キャッシュメモリ機構等が設けられている場合には、長いアクセス経路を介してプロセッサから共有メモリへアクセスする必要があり、更に時間がかかってしまう可能性がある。このために、排他制御に必要な処理時間が長くなるという問題がある。
【０００８】
以上を鑑みて、本発明は、排他制御に必要な処理時間が短いマルチプロセッサシステムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明によるマルチプロセッサシステムは、複数のプロセッサと、該複数のプロセッサに共通に結合される共有バスと、該共有バスに結合され該複数のプロセッサにより共有されるリソースと、該複数のプロセッサに共通に結合され該リソースの排他的使用のためのロック／ロック解除を示すロックフラグを有する排他制御機構を含み、該複数のプロセッサの各々は該排他制御機構に結合される特殊用途レジスタ・インターフェースを含み、該特殊用途レジスタ・インターフェースを介した特殊用途レジスタアクセスにより該ロックフラグにアクセスするよう構成されることを特徴とする。
【００１０】
また本発明によるロックフラグ操作方法は、複数のプロセッサと、該複数のプロセッサに共通に結合される共有バスと、該共有バスに結合され該複数のプロセッサにより共有されるリソースを含むマルチプロセッサシステムにおいて、該リソースの排他的使用のためのロック／ロック解除を示すロックフラグに該複数のプロセッサの１つから特殊用途レジスタ・インターフェースを介した特殊用途レジスタアクセスによりアクセスすることを特徴とする。
【発明の効果】
【００１１】
本発明の少なくとも１つの実施例によれば、主記憶装置とは別に排他制御機構内部にロックフラグを設け、共有バスから主記憶装置へのアクセス経路とは別のアクセス経路を用いたロック操作を可能にする。具体的には、プロセッサに特殊用途レジスタ・インターフェースを設けることで、プロセッサからの特殊用途レジスタアクセスにより、排他制御機構のロックフラグへのアクセスを可能とする。従って、キャッシュメモリ機構や共有メモリのバスアービトレーションを介することのない排他制御が可能になり、高速なアクセスによる高速な排他制御操作を実現することが可能になる。
【発明を実施するための最良の形態】
【００１２】
以下に、本発明の原理構成及び実施例を添付の図面を用いて詳細に説明する。
【００１３】
図１は、本発明によるマルチプロセッサシステムの原理構成を示す構成図である。図１のマルチプロセッサシステムは、複数のプロセッサ１０、相互結合網１１、主記憶装置１２、第１の排他制御機構１５、及び第２の排他制御機構１６を含む。複数のプロセッサ１０がバス等の相互結合網１１を介して、共有メモリである主記憶装置１２に結合される。主記憶装置１２に対するデータの読み書きを実行する場合には、プロセッサ１０から、相互結合網１１を介して主記憶装置１２にアクセスする。
【００１４】
複数のプロセッサ１０の各々に対して、１つの第１の排他制御機構１５が設けられる。従ってプロセッサ１０の数と第１の排他制御機構１５との数とは等しい。複数のプロセッサ１０は、対応する第１の排他制御機構１５を介して、共通の第２の排他制御機構１６に結合される。第２の排他制御機構１６には、排他制御操作に用いられるロックフラグ１８が設けられる。
【００１５】
プロセッサ１０から主記憶装置１２へのアクセスは通常のメモリアクセスであるが、プロセッサ１０から第１の排他制御機構１５を介して第２の排他制御機構１６のロックフラグ１８へのアクセスは、特殊用途レジスタアクセス（ＳＰＲアクセス：Special Purpose Registerアクセス）により実行される。一般にプロセッサ内には、プログラムによりユーザが自由に使用できる汎用レジスタと、特殊な用途のために設けられた特殊用途レジスタとが設けられる。特殊用途レジスタは、特定の命令を実行したときに、その命令に関連した特定の値を格納するようなレジスタである。特殊用途レジスタの一例としては、プロセッサの実行した命令に応じて変化し、プロセッサの状態を保持するためのレジスタであるプロセッサ・ステータス・レジスタ等が挙げられる。
【００１６】
本発明では、第２の排他制御機構１６のロックフラグ１８へアクセスするための特殊用途レジスタアクセス命令を、プロセッサ１０に設ける。即ち、プロセッサ１０の命令セットにこの特殊用途レジスタアクセス命令を用意するとともに、第１の排他制御機構１５と信号をやり取りするための特殊用途レジスタ・インターフェース（ＳＰＲ・Ｉ／Ｆ）１７をプロセッサ１０に設ける。特殊用途レジスタアクセス命令が実行されると、このインターフェースを介して第１の排他制御機構１５と信号をやり取りすることにより、第２の排他制御機構１６のロックレジスタへのアクセスを実行する。
【００１７】
このようにして本発明によるマルチプロセッサシステムにおいては、主記憶装置１２とは別に第２の排他制御機構１６内部にロックフラグ１８を設け、相互結合網１１から主記憶装置１２へのアクセス経路とは別のアクセス経路を用いたロック操作を可能にする。具体的には、プロセッサ１０に特殊用途レジスタ・インターフェース１７を設けることで、プロセッサ１０からの特殊用途レジスタアクセスにより、第２の排他制御機構１６のロックフラグ１８へのアクセスを可能とする。従って、キャッシュメモリ機構や共有メモリのバスアービトレーションを介することのない排他制御が可能になり、高速なアクセスによる高速な排他制御操作を実現することが可能になる。
【００１８】
図２は、本発明によるマルチプロセッサシステムの実施例の一例を示す構成図である。図２のマルチプロセッサシステムは、プロセッサ１０、相互結合網１１、主記憶装置１２、第１の排他制御機構１５、第２の排他制御機構１６、及び割り込みユニット６０を含む。図２では図示の都合上、１つのプロセッサ１０及び１つの第１の排他制御機構１５のみを示すが、システム全体では図１に示すのと同様に、複数のプロセッサ１０及び複数の第１の排他制御機構１５が設けられる。
【００１９】
プロセッサ１０は、特殊用途レジスタ・インターフェース（ＳＰＲ・Ｉ／Ｆ）１７、命令フェッチ部２０、デコード部２１、命令実行部２２、メモリロード部２３、メモリストア部２４、ＧＲロード部２５、ＧＲストア部２６、ＳＰＲロード部２７、ＳＰＲストア部２８、汎用レジスタ群（ＧＲ）２９、特殊用途レジスタ群（ＳＰＲ）３０、命令キャッシュ３１、データキャッシュ３２、バスＩＦ３３、及び実行制御ユニット３４を含む。第１の排他制御機構１５は、ロック解除待ち制御回路４０、ロック操作制御回路４１、ロック対象指定レジスタ４２、ロック操作レジスタ４３、ロック操作前値保持レジスタ４４、ロック解除待ちレジスタ４５、コアＩＦ４６、及びインターフェース（ＩＦ）４７を含む。第２の排他制御機構１６は、ロックフラグ１８、バスアービトレーション回路５０、ロック解除通知ユニット５１、ＰＥ解除待ちロック番号レジスタ５２、ロック解除待ち割り込み発生ユニット５３、及びロック解除待ちＰＥレジスタ５４を含む。
【００２０】
命令フェッチ部２０は、命令キャッシュ３１又は主記憶装置１２から実行する命令をフェッチし、フェッチした命令を保持する。デコード部２１は、命令フェッチ部２０に保持される命令をデコードする。このデコード部２１によるデコード結果に従って、命令実行部２２が、プロセッサ１０の各部の動作を制御する。
【００２１】
メモリロード部２３は、データキャッシュ３２から又はバスＩＦ３３及び相互結合網１１を介して主記憶装置１２から、指定されたメモリアドレスのデータをロードする。メモリストア部２４は、バスＩＦ３３及び相互結合網１１を介して主記憶装置１２の指定されたメモリアドレスへ又はデータキャッシュ３２の対応する格納領域へ、データをストアする。
【００２２】
ＧＲロード部２５は、汎用レジスタ群２９の指定された汎用レジスタからデータをロードする。ＧＲストア部２６は、汎用レジスタ群２９の指定された汎用レジスタにデータをストアする。
【００２３】
ＳＰＲロード部２７は、特殊用途レジスタ群３０の指定された特殊用途レジスタからデータをロードする。またＳＰＲロード部２７は更に、本発明の特殊用途レジスタアクセス命令が実行される場合には、特殊用途レジスタ・インターフェース１７を介して第２の排他制御機構１６のロックフラグ１８の値をロードする。ＳＰＲストア部２８は、特殊用途レジスタ群３０の指定された特殊用途レジスタにデータをストアする。またＳＰＲストア部２８は更に、本発明の特殊用途レジスタアクセス命令が実行される場合には、特殊用途レジスタ・インターフェース１７を介して第１の排他制御機構１５の種々のレジスタに値をストアする。このようにしてストアされた値に応じて、第１の排他制御機構１５の動作が制御され、後述するような種々の排他制御操作が実現される。
【００２４】
実行制御ユニット３４は、プロセッサ１０の動作の実行／停止を制御する回路ユニットである。実行制御ユニット３４は、ロック解除待ち制御回路４０からの信号に応じて、例えば実行停止していたプロセッサ１０の実行を再開する。
【００２５】
第１の排他制御機構１５において、ロック解除待ち制御回路４０は、ロック解除待ち状態でプロセッサ１０が動作の実行を停止している場合に、第２の排他制御機構１６からロック解除が通知されると、実行制御ユニット３４に対してプロセッサ１０の動作の実行を再開するように指示する。また更にロック解除待ち制御回路４０は、ロック解除待ち状態でプロセッサ１０が動作の実行を停止している場合に、割り込みユニット６０からの何らかの割り込み要因があるときにも、プロセッサ１０の動作の実行を再開させる。
【００２６】
このように、ロック解除待ち状態においてプロセッサ１０が動作の実行を停止可能な構成とすることで、プロセッサ１０での消費電力を削減することができる。またロック解除時には、ロック解除待ち制御回路４０からプロセッサ１０に動作再開が指示されるので、プロセッサ１０は第１の排他制御機構１５又は第２の排他制御機構１６へのポーリングを実行する必要がない。
【００２７】
ロック操作制御回路４１は、プロセッサ１０からの特殊用途レジスタアクセスに応答して、第２の排他制御機構１６に対して実行するロック操作を制御する。この際のロック操作は、ロック対象指定レジスタ４２のレジスタ値が示すロックフラグ１８に対して実行される。ロック対象指定レジスタ４２には、ロック操作の対象となるロックフラグ１８を特定する番号が、特殊用途レジスタ・インターフェース１７を介してプロセッサ１０から供給され格納される。ロック操作前値保持レジスタ４４は、ロック操作の直前のロックフラグ１８の値を保持する。ロック解除待ちレジスタ４５は、プロセッサ１０がロック解除を待つときに、特殊用途レジスタ・インターフェース１７を介して値を書き込むレジスタである。
【００２８】
コアＩＦ４６は、プロセッサ１０の特殊用途レジスタ・インターフェース１７とのインターフェースを提供するとともに、バスＩＦ３３とのインターフェースを提供する。これによりプロセッサ１０は、特殊用途レジスタ・インターフェース１７を介してのアクセスだけでなく、バスＩＦ３３を介したメモリアクセスとしてもロック操作を実行することが可能になる。このような機能を設けることで、例えばデバッガから第１の排他制御機構１５及び第２の排他制御機構１６内のレジスタの内容を、メモリ空間上にマップされた領域として見ることができるようになり、デバッグ処理が容易になるという利点がある。
【００２９】
第２の排他制御機構１６において、バスアービトレーション回路５０は、複数の第１の排他制御機構１５から同時にロック操作要求があった場合にアービトレーション（調停）を実行する。即ちバスアービトレーション回路５０は、同時にロック操作を要求している複数の第１の排他制御機構１５から１つを選択し、選択した排他制御機構１５から要求されるロック操作を実行する。ロック解除通知ユニット５１は、ロック解除待ちをしているプロセッサ１０がある場合に、解除待ちの対象であるロックが解除されたことを検出すると、第１の排他制御機構１５のロック解除待ち制御回路４０に解除を通知する。ＰＥ解除待ちロック番号レジスタ５２は、解除待ちの対象となっているロックフラグ１８を特定する番号を格納する。ＰＥ解除待ちロック番号レジスタ５２は、複数のプロセッサ１０の各々に対して一つずつ設けられる。図２では、ＰＥ（Processor Element）＃０からＰＥ＃ＮまでのＮ＋１個のプロセッサ１０に対して、ＰＥ解除待ちロック番号レジスタ５２を示してある。
【００３０】
ロックフラグ１８は、複数の共有リソースの各々に対して一つずつ設けられている。ある共有リソースを占有する場合には、対応するロックフラグ１８をロックする。ロックフラグ１８のロック動作は、ロックを示す値（例えば０又は１の何れか予め決められた値）をロックフラグ１８に設定することで実行される。なお共有リソースが１つである場合には、ロックフラグ１８は１つだけ設けられていればよい。
【００３１】
ロック解除待ち割り込み発生ユニット５３は、ロック解除待ちをしているプロセッサ１０がある場合に、解除待ちの対象であるロックが解除されたことを検出すると、割り込みユニット６０に割り込み発生の指示をする。この割り込み発生指示に応じて、割り込みユニット６０がロック解除待ちをしているプロセッサ１０に割り込みを発生させる。ロック解除待ちをしていたプロセッサ１０は、割り込みに応じて、ロック解除待ちの対象であった共有リソースに対する排他的アクセスを実行する。ロック解除待ちＰＥレジスタ５４は、各ロックフラグ１８に対してロック解除を待っているプロセッサ１０を特定する番号を格納する。
【００３２】
このような構成とすることで、ロックが解除されるまでプロセッサ１０が別のタスクを実行することが可能となり、プロセッサ１０の使用効率を高めることができる。またプロセッサ１０は、別のタスクを実行しながら、第１の排他制御機構１５又は第２の排他制御機構１６へのポーリングを実行する必要がない。
【００３３】
図３は、図２のマルチプロセッサシステムの基本動作の一例を示すシーケンス図である。図２及び図３を参照して、この基本動作について説明する。
【００３４】
まずプロセッサ１０のＳＰＲストア部２８が、特殊用途レジスタ・インターフェース１７を介して第１の排他制御機構１５のロック対象指定レジスタ４２に、ロック操作対象となるロックフラグ１８を識別する番号を設定する（Ｓ１）。次に、プロセッサ１０のＳＰＲロード部２７が、特殊用途レジスタ・インターフェース１７を介して、第１の排他制御機構１５のロック操作レジスタ４３にロードアクセスをする（Ｓ２）。これに応じて、第１の排他制御機構１５のロック操作制御回路４１は、ロック対象指定レジスタ４２の内容で指定されるロックフラグ１８を読み出すように、第２の排他制御機構１６に要求する（Ｓ３）。第２の排他制御機構１６のバスアービトレーション回路５０は複数の第１の排他制御機構１５からの要求の調停を行い、指定されたロックフラグ１８の値を読み出し、読み出した値を第１の排他制御機構１５に供給する（Ｓ４）。第１の排他制御機構１５のロック操作制御回路４１は、第２の排他制御機構１６のロックフラグ１８から読み出した値をプロセッサ１０に供給する（Ｓ５）。
【００３５】
このようにして、プロセッサ１０は、第２の排他制御機構１６の指定したロックフラグ１８の値を読み出すことができる。即ち、ロック操作による排他制御を実行する際の基本的な動作であるロックフラグ１８の読み出しを、特殊用途レジスタアクセスを用いて高速に実現することができる。
【００３６】
上記のロックフラグ読み出し動作を変形することで、以下に示すような排他制御動作において有用な種々のロック操作を実現することができる。
【００３７】
図４は、図２のマルチプロセッサシステムの動作の一例を示すフローチャートである。図２及び図４を参照して、この動作について説明する。なお以下の説明において、ロック対象指定レジスタ４２には、既にロック操作対象のロックフラグ１８を特定する値が格納されているものとする。
【００３８】
まずステップＳ１において、ＳＰＲロード部２７が特殊用途レジスタ・インターフェース１７を介して第１の排他制御機構１５のロック操作レジスタ４３にロードアクセスをする。この場合のロードアクセス命令は特殊な命令であり、アクセス動作とともに、汎用レジスタ群２９の所定の汎用レジスタの値が、特殊用途レジスタ・インターフェース１７を介して第１の排他制御機構１５に供給される。
【００３９】
次にステップＳ２において、以下の処理が実行される。第１の排他制御機構１５のロック操作制御回路４１は、ロック対象指定レジスタ４２の内容で指定されるロックフラグ１８を読み出すように、第２の排他制御機構１６に要求する。第２の排他制御機構１６のバスアービトレーション回路５０は複数の第１の排他制御機構１５からの要求の調停を行い、指定されたロックフラグ１８の値を読み出し、読み出した値を第１の排他制御機構１５に供給する。第１の排他制御機構１５は、読み出したロックフラグ１８の値をプロセッサ１０に供給する。プロセッサ１０は、読み出したロックフラグ１８の値を上記所定の汎用レジスタに格納する。
【００４０】
また第１の排他制御機構１５は、ロードアクセス動作とともにプロセッサ１０から供給された汎用レジスタに元々格納されていた値を、指定されたロックフラグ１８に格納する。即ち第１の排他制御機構１５のロック操作制御回路４１は、ロック対象指定レジスタ４２の内容で指定されるロックフラグ１８に指定された値を書き込むように、第２の排他制御機構１６に要求する。これに応じて第２の排他制御機構１６のバスアービトレーション回路５０は、指定されたロックフラグ１８に指定された値を書き込む。
【００４１】
このようにしてプロセッサ１０は、所定の汎用レジスタの値と指定されたロックフラグ１８の値とを交換することができる。なおこの動作はアトミック動作として実行される。これにより排他制御に適したロック操作を高速に実現することが可能になる。
【００４２】
図５は、図２のマルチプロセッサシステムの別の動作の一例を示すフローチャートである。図２及び図５を参照して、この動作について説明する。なお以下の説明において、ロック対象指定レジスタ４２には、既にロック操作対象のロックフラグ１８を特定する値が格納されているものとする。
【００４３】
まずステップＳ１において、ＳＰＲロード部２７が特殊用途レジスタ・インターフェース１７を介して第１の排他制御機構１５のロック操作レジスタ４３にロードアクセスをする。この場合のロードアクセス命令は特殊な命令であり、アクセス動作とともに、汎用レジスタ群２９の所定の汎用レジスタの値が、特殊用途レジスタ・インターフェース１７を介して第１の排他制御機構１５に供給される。
【００４４】
次にステップＳ２において、以下の処理が実行される。第１の排他制御機構１５のロック操作制御回路４１は、ロック対象指定レジスタ４２の内容で指定されるロックフラグ１８を読み出すように、第２の排他制御機構１６に要求する。第２の排他制御機構１６のバスアービトレーション回路５０は複数の第１の排他制御機構１５からの要求の調停を行い、指定されたロックフラグ１８の値を読み出し、読み出した値を第１の排他制御機構１５に供給する。第１の排他制御機構１５は、読み出したロックフラグ１８の値をロック操作前値保持レジスタ４４に格納する。
【００４５】
また第１の排他制御機構１５は、ロードアクセス動作とともにプロセッサ１０から供給された汎用レジスタの値を、指定されたロックフラグ１８に格納する。即ち第１の排他制御機構１５のロック操作制御回路４１は、ロック対象指定レジスタ４２の内容で指定されるロックフラグ１８に指定された値を書き込むように、第２の排他制御機構１６に要求する。これに応じて第２の排他制御機構１６のバスアービトレーション回路５０は、指定されたロックフラグ１８に指定された値を書き込む。
【００４６】
このようにしてプロセッサ１０は、指定されたロックフラグ１８の値をロック操作前値保持レジスタ４４に格納するとともに、所定の汎用レジスタの値を指定されたロックフラグ１８に格納することができる。なおこの動作はアトミック動作として実行される。これにより排他制御に適したロック操作を高速に実現することが可能になる。
【００４７】
図６は、図２のマルチプロセッサシステムの別の動作の一例を示すフローチャートである。図２及び図６を参照して、この動作について説明する。なお以下の説明において、ロック対象指定レジスタ４２には、既にロック操作対象のロックフラグ１８を特定する値が格納されているものとする。
【００４８】
まずステップＳ１において、ＳＰＲロード部２７が特殊用途レジスタ・インターフェース１７を介して第１の排他制御機構１５のロック操作レジスタ４３にロードアクセスをする。この場合のロードアクセス命令は特殊な命令であり、アクセス動作とともに、汎用レジスタ群２９の所定の汎用レジスタの値が、特殊用途レジスタ・インターフェース１７を介して第１の排他制御機構１５に供給される。
【００４９】
次にステップＳ２において、以下の処理が実行される。第１の排他制御機構１５のロック操作制御回路４１は、ロック対象指定レジスタ４２の内容で指定されるロックフラグ１８を読み出すように、第２の排他制御機構１６に要求する。第２の排他制御機構１６のバスアービトレーション回路５０は複数の第１の排他制御機構１５からの要求の調停を行い、指定されたロックフラグ１８の値を読み出し、読み出した値を第１の排他制御機構１５に供給する。第１の排他制御機構１５は、読み出したロックフラグ１８の値を所定の値（この場合はゼロ）と比較する。この例において、ゼロは当該ロックフラグ１８がロックされていないことを示す値である。読み出したロックフラグ１８の値がゼロである場合、ステップＳ３で以下の処理が実行される。
【００５０】
第１の排他制御機構１５は、読み出したロックフラグ１８の値をプロセッサ１０に供給する。プロセッサ１０は、読み出したロックフラグ１８の値を上記所定の汎用レジスタに格納する。また第１の排他制御機構１５は、ロードアクセス動作とともにプロセッサ１０から供給された汎用レジスタに元々格納されていた値を、指定されたロックフラグ１８に格納する。即ち第１の排他制御機構１５のロック操作制御回路４１は、ロック対象指定レジスタ４２の内容で指定されるロックフラグ１８に指定された値を書き込むように、第２の排他制御機構１６に要求する。これに応じて第２の排他制御機構１６のバスアービトレーション回路５０は、指定されたロックフラグ１８に指定された値を書き込む。
【００５１】
このようにしてプロセッサ１０は、ロックフラグ１８がロックされていない場合に、所定の汎用レジスタの値と指定されたロックフラグ１８の値とを交換することができる。なおこの動作はアトミック動作として実行される。これにより排他制御に適したロック操作を高速に実現することが可能になる。
【００５２】
図７は、図２のマルチプロセッサシステムの別の動作の一例を示すフローチャートである。図２及び図７を参照して、この動作について説明する。なお以下の説明において、ロック対象指定レジスタ４２には、既にロック操作対象のロックフラグ１８を特定する値が格納されているものとする。
【００５３】
まずステップＳ１において、ＳＰＲロード部２７が特殊用途レジスタ・インターフェース１７を介して第１の排他制御機構１５のロック操作レジスタ４３にロードアクセスをする。この場合のロードアクセス命令は特殊な命令であり、指定されたロックフラグ１８の内容を読み出すとともに、このロックフラグ１８の内容を指定された値だけインクリメントするためのものである。
【００５４】
次にステップＳ２において、以下の処理が実行される。第１の排他制御機構１５のロック操作制御回路４１は、ロック対象指定レジスタ４２の内容で指定されるロックフラグ１８を読み出すように、第２の排他制御機構１６に要求する。第２の排他制御機構１６のバスアービトレーション回路５０は複数の第１の排他制御機構１５からの要求の調停を行い、指定されたロックフラグ１８の値を読み出し、読み出した値を第１の排他制御機構１５に供給する。第１の排他制御機構１５は、読み出したロックフラグ１８の値をプロセッサ１０に供給する。プロセッサ１０は、読み出したロックフラグ１８の値を汎用レジスタ群２９の所定の汎用レジスタに格納する。
【００５５】
また第１の排他制御機構１５は、読み出したロックフラグ１８の値に所定の値（この例では１）を加算した値を、指定されたロックフラグ１８に格納する。即ち第１の排他制御機構１５のロック操作制御回路４１は、ロック対象指定レジスタ４２の内容で指定されるロックフラグ１８に加算後の値を書き込むように、第２の排他制御機構１６に要求する。これに応じて第２の排他制御機構１６のバスアービトレーション回路５０は、指定されたロックフラグ１８に加算後の値を書き込む。
【００５６】
このようにしてプロセッサ１０は、指定されたロックフラグ１８の値を所定の汎用レジスタに格納するとともに、指定されたロックフラグ１８の内容を所定の値だけインクリメントすることができる。なおこの動作はアトミック動作として実行される。これにより排他制御に適したロック操作を高速に実現することが可能になる。
【００５７】
図８は、図２のマルチプロセッサシステムの解除待ち動作の一例を示すシーケンス図である。図２及び図８を参照して、この解除待ち動作について説明する。
【００５８】
まずプロセッサ１０（ＰＥ＃０）のＳＰＲストア部２８が、特殊用途レジスタ・インターフェース１７を介して第１の排他制御機構１５のロック対象指定レジスタ４２に、ロック操作対象となるロックフラグ１８を識別する番号を設定する（Ｓ１）。他のプロセッサ１０（ＰＥ＃１）が、対応する第１の排他制御機構１５のロック対象指定レジスタ４２に、ロック操作対象となるロックフラグ１８を識別する番号を設定する（Ｓ２）。Ｓ１で指定されるロックフラグ１８とＳ２で指定されるロックフラグ１８とは同一である。
【００５９】
次に、プロセッサ１０（ＰＥ＃０）のＳＰＲストア部２８が、特殊用途レジスタ・インターフェース１７を介して、第１の排他制御機構１５のロック解除待ちレジスタ４５に値を書き込む要求をする（Ｓ３）。この処理の後に、プロセッサ１０（ＰＥ＃０）は解除待ち状態で動作を停止する。ＰＥ＃０に対応する第１の排他制御機構１５のロック操作制御回路４１は、ロック対象指定レジスタ４２の内容で指定されるロックフラグ１８について、プロセッサ１０（ＰＥ＃０）がロック解除待ちすることを第２の排他制御機構１６に通知する（Ｓ４）。第２の排他制御機構１６は、ＰＥ＃０に対応するＰＥ解除待ちロック番号レジスタ５２に、指定されるロックフラグ１８を示す番号を格納する。
【００６０】
プロセッサ１０（ＰＥ＃１）は、対応する第１の排他制御機構１５に、ロック操作対象となるロックフラグ１８を解除するように要求する（Ｓ５）。これは例えばＳＰＲストア命令により、解除を示す値（例えば０）をロック操作レジスタ４３に書き込むように要求することで行われる。これに応じてＰＥ＃１に対応する第１の排他制御機構１５が、第２の排他制御機構１６に指定されたロックフラグ１８を解除するように指示する。
【００６１】
第２の排他制御機構１６のロック解除通知ユニット５１は、ＰＥ＃０に対応するＰＥ解除待ちロック番号レジスタ５２により指定されたロックフラグ１８が解除されたことを検出して、ＰＥ＃０に対応する第１の排他制御機構１５のロック解除待ち制御回路４０に解除を通知する（Ｓ６）。ロック解除待ち制御回路４０は、第２の排他制御機構１６からロック解除が通知されると、プロセッサ１０（ＰＥ＃０）の実行制御ユニット３４に対してプロセッサ１０の動作の実行を再開するように指示する。
【００６２】
これによりプロセッサ１０は、所望のロックフラグ１８の解除を待つ状態で動作を停止し、ロックフラグ１８が解除されると動作を再開して共有リソースに対する排他的アクセスを実行することができる。
【００６３】
また前述したように、第２の排他制御機構１６にはロック解除待ち割り込み発生ユニット５３が設けられており、これに基づいた割り込み制御をすることも可能である。即ち、ロック解除待ちをしているプロセッサ１０がある場合に、解除待ちの対象であるロックが解除されたことを検出すると、割り込みユニット６０に割り込み発生の指示をする。この割り込み発生指示に応じて、割り込みユニット６０がロック解除待ちをしているプロセッサ１０に割り込みを発生させる。ロック解除待ちをしていたプロセッサ１０は、割り込みに応じて、ロック解除待ちの対象であった共有リソースに対する排他的アクセスを実行することができる。この場合の動作は、ロック解除通知ユニット５１ではなくロック解除待ち割り込み発生ユニット５３が解除を検出・通知すること、ロック解除待ち制御回路４０ではなく割り込みユニット６０がプロセッサ１０に解除を通知すること、プロセッサ１０は動作停止するのではなく別の動作を実行することを除けば、上記のロック解除待ちの動作と略同様であり、詳細な説明は省略する。
【００６４】
上記実施例において、共有リソースとしては主記憶装置１２のみが示されたが、本発明のロックフラグ１８で排他制御管理が可能な共有リソースはメモリに限られるものではない。複数のプロセッサ１０で共有されるデバイスであれば、システム内蔵デバイスであれ、周辺デバイスであれ、ロックフラグ１８を用いて高速な排他制御管理が可能である。
【００６５】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【図面の簡単な説明】
【００６６】
【図１】本発明によるマルチプロセッサシステムの原理構成を示す構成図である。
【図２】本発明によるマルチプロセッサシステムの実施例の一例を示す構成図である。
【図３】図２のマルチプロセッサシステムの基本動作の一例を示すシーケンス図である。
【図４】図２のマルチプロセッサシステムの動作の一例を示すフローチャートである。
【図５】図２のマルチプロセッサシステムの別の動作の一例を示すフローチャートである。
【図６】図２のマルチプロセッサシステムの別の動作の一例を示すフローチャートである。
【図７】図２のマルチプロセッサシステムの別の動作の一例を示すフローチャートである。
【図８】図２のマルチプロセッサシステムの解除待ち動作の一例を示すシーケンス図である。
【符号の説明】
【００６７】
１０  プロセッサ
１１  相互結合網
１２  主記憶装置
１５  第１の排他制御機構
１６  排他制御機構
１７  特殊用途レジスタ・インターフェース
１８  ロックフラグ
【図１】
2006185348.tif 000003
【図２】
2006185348.tif 000004
【図３】
2006185348.tif 000005
【図４】
2006185348.tif 000006
【図５】
2006185348.tif 000007
【図６】
2006185348.tif 000008
【図７】
2006185348.tif 000009
【図８】
2006185348.tif 000010