(57)【要約】【課題】  共有リソースのアクセス制御を効率化するアクセス制御回路、アクセス制御方法を提供することにある。【解決手段】  複数のプロセッサとバスに接続され、複数のプロセッサによって共通のバスを介してアクセスされる共有リソースへの制御を行うアクセス制御回路であって、複数のプロセッサの内の第１のプロセッサからのアクセス対象アドレスが、非使用の領域を指すダミーアドレスである場合に、当該ダミーアドレスを対応する共有リソースの共有リソースアドレスにアドレス変換してバスに出力すると共に、第１のプロセッサによる共有リソースへのアクセス権を解放し、アクセス対象アドレスがダミーアドレスではない場合に、アクセス対象アドレスをアドレス変換することなくバスに出力する管理手段、を有する。【選択図】  図５
2014071855.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサとバスに接続され、前記複数のプロセッサによって共通の前記バスを介してアクセスされる共有リソースへの制御を行うアクセス制御回路であって、
前記複数のプロセッサの内の第１のプロセッサからのアクセス対象アドレスが、非使用の領域を指すダミーアドレスである場合に、当該ダミーアドレスを対応する前記共有リソースの共有リソースアドレスにアドレス変換して前記バスに出力すると共に、前記第１のプロセッサによる前記共有リソースへのアクセス権を解放し、前記アクセス対象アドレスが前記ダミーアドレスではない場合に、前記アクセス対象アドレスを前記アドレス変換することなく前記バスに出力する管理手段、を有することを特徴とするアクセス制御回路。
【請求項２】
請求項１において、
前記ダミーアドレスの範囲は、前記共有リソースアドレスの範囲と同一サイズであって、
前記管理手段の前記アドレス変換は、前記ダミーアドレスに所定値を加算または減算することにより、前記共有リソースアドレスに変換することを特徴とするアクセス制御回路。
【請求項３】
請求項１乃至２のいずれか１項において、
前記管理手段は、さらに、
前記アクセス対象アドレスが前記ダミーアドレスではない場合に、前記共有リソースへのアクセス権が前記第１のプロセッサに取得されているときは前記アクセス対象アドレスを前記バスに出力し、前記アクセス権が前記複数のプロセッサのいずれによっても取得されていないときは前記アクセス権を前記第１のプロセッサに取得させると共に前記アクセス対象アドレスを前記バスに出力し、前記アクセス権が前記第１のプロセッサと異なるプロセッサによって取得されているときは前記アクセス対象アドレスを前記バスに出力しないことを特徴とするアクセス制御回路。
【請求項４】
請求項１乃至３のいずれか１項において、
前記複数のプロセッサと前記共通のバスとの間に設置されることを特徴とするアクセス制御回路。
【請求項５】
請求項１において、
前記共有リソースは第１の共有リソースと第２の共有リソースとを含み、
前記第１の共有リソースの共有リソースアドレスに対応する第１の前記ダミーアドレスの範囲と、前記第２の共有リソースの共有リソースアドレスに対応する第２の前記ダミーアドレスの範囲とが重複することを特徴とするアクセス制御回路。
【請求項６】
複数のプロセッサとバスに接続され、前記複数のプロセッサによって共通の前記バスを介してアクセスされる共有リソースへの制御を行うアクセス制御方法であって、
前記複数のプロセッサの内の第１のプロセッサからのアクセス対象アドレスが、非使用の領域を指すダミーアドレスである場合に、当該ダミーアドレスを対応する前記共有リソースの共有リソースアドレスにアドレス変換して前記バスに出力すると共に、前記第１のプロセッサによる前記共有リソースへのアクセス権を解放し、前記アクセス対象アドレスが前記ダミーアドレスではない場合に、前記アクセス対象アドレスを前記アドレス変換することなく前記バスに出力する管理工程、を有することを特徴とするアクセス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アクセス制御回路、アクセス制御方法に関する。
【背景技術】
【０００２】
近年、複数のプロセッサ間でリソース(マクロやメモリ)を共有するマルチプロセッサシステムが多く用いられている。そのようなマルチプロセッサシステムでは、共有のリソースが、複数のプロセッサによってアクセスされる。そこで、あるプロセッサによって共有リソースが使用中である場合には、他のプロセッサからのアクセスをハードウェア的に排他可能にするアクセス制御回路を有するシステムがある。
【０００３】
このようなシステムでは、例えば、プロセッサがバスを介して共有リソースにアクセスする場合、プロセッサは、バスのアドレス信号線にプロセッサの識別番号を設定することによって、共有リソースのアクセス権を取得する。このため、アクセス権が解放されるまでの間、別のプロセッサによって同一の共有リソースのアクセス権が要求された場合、その都度、アクセス要求とエラー応答がバスに出力される。
【０００４】
または、例えば、システムが共有リソースへのアクセス可否情報を有し、アクセス可否情報に基づいて、各プロセッサから共有リソースへのアクセスを制御する。この場合、例えば、プロセッサからの専用命令に基づいてアクセス可否情報の更新が行われることによって、プロセッサによるアクセス権の取得、解放処理が行われる。
【０００５】
このようなシステムは、例えば、特許文献１、２に記載される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−２８０９８０号公報
【特許文献２】特開２００７−２６４６７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、このようなシステムでは、共有リソースのアクセス権を取得、解放するために、プロセッサによるアクセスが逐一発生する。このため、共有リソースへのアクセスは、共有リソースへのアクセス権の取得、共有リソースに対する処理、アクセス権の解放という一連の流れで行われる。これにより、プログラムのコード量が増加し、プロセッサの性能劣化の要因になると共に、プログラムの複雑化による障害が発生し易くなる。
【０００８】
また、あるプロセッサによってアクセス権が取得されている間に、他のプロセッサによる共有リソースへのアクセス要求が発生する場合、アクセス要求が発生する都度、アクセス要求とエラー応答がバスに出力されることによって、バス使用率が増加し、バスの使用効率が悪化する。
【０００９】
このように、複数のプロセッサによる共有リソースへのアクセスを制御するアクセス制御回路を有するシステムでは、性能劣化やプログラムの複雑化、バスの使用効率の悪化が課題であった。
【００１０】
本発明は、共有リソースのアクセス制御を効率化するアクセス制御回路、アクセス制御方法を提供することにある。
【課題を解決するための手段】
【００１１】
第１の側面は、複数のプロセッサとバスに接続され、前記複数のプロセッサによって共通の前記バスを介してアクセスされる共有リソースへの制御を行うアクセス制御回路であって、前記複数のプロセッサの内の第１のプロセッサからのアクセス対象アドレスが、非使用の領域を指すダミーアドレスである場合に、当該ダミーアドレスを対応する前記共有リソースの共有リソースアドレスにアドレス変換して前記バスに出力すると共に、前記第１のプロセッサによる前記共有リソースへのアクセス権を解放し、前記アクセス対象アドレスが前記ダミーアドレスではない場合に、前記アクセス対象アドレスを前記アドレス変換することなく前記バスに出力する管理手段、を有する。
【発明の効果】
【００１２】
第１の側面によれば、共有リソースのアクセス制御を効率化することができる。
【図面の簡単な説明】
【００１３】
【図１】本実施の形態例におけるアクセス制御回路を有するマルチプロセッサシステムの一例を示す図である。
【図２】一般的なプログラムと、本実施の形態例におけるプログラムの例図である。
【図３】本実施の形態例におけるアクセス制御回路の詳細な構成を表す例図である。
【図４】本実施の形態例におけるアクセス制御回路のフローチャート図である。
【図５】本実施の形態例におけるアドレスマップの具体例を説明する図である。
【図６】本実施の形態例におけるアドレス変換のための減算処理を説明する図である。
【図７】第２の実施の形態例におけるアドレスマップの具体例を説明する図である。
【図８】第２の実施の形態例におけるアドレス変換のための減算処理を説明する図である。
【発明を実施するための形態】
【００１４】
以下、図面にしたがって本発明の実施の形態について説明する。ただし、本発明の技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００１５】
［マルチプロセッサシステムの構成］
図１は、本実施の形態例におけるアクセス制御回路を有するマルチプロセッサシステム１００の一例を示す図である。同図のマルチプロセッサシステム１００は、例えば、複数のプロセッサＡ１０、Ｂ２０、アクセス制御回路３０、プロセッサＡ１０、プロセッサＢ２０からアクセス可能な共有リソースＡ５１〜共有リソースＣ５３（以下、共有リソース５１〜５３）を有する。
【００１６】
本実施の形態例において、アクセス制御回路３０、及び、各共有リソース５１〜５３は、共通の共有バス４０を介してお互いに接続される。また、複数のプロセッサであるプロセッサＡ１０、プロセッサＢ２０は、それぞれ、アクセス制御回路３０における対応するアドレス制御部Ａ３１ａ、アドレス制御部Ｂ３１ｂ（以下、アドレス制御部３１ａ、３１ｂ）と専用バスを介して接続される。
【００１７】
［共有リソース］
本実施の形態例において、共有リソース５１〜５３とは、例えば、複数のプロセッサから共通にアクセスされる共有メモリや、回路マクロのレジスタ等を示す。共有リソース５１〜５３は、複数のプロセッサから同時にアクセスされる可能性を有する。共有リソース５１〜５３が複数のプロセッサから同時にアクセスされた場合、例えば、共有メモリに記憶された情報や回路マクロのレジスタが保持する情報の整合性が失われてしまう。これにより、システムが暴走してしまう可能性がある。
【００１８】
そこで、一般的な共有リソースのアクセス制御では、プロセッサＡ１０によって共有リソースＡ５１のアクセス権が取得されている間、プロセッサＢ２０から同じ共有リソースＡ５１へのアクセス権の取得が要求された場合であっても、プロセッサＢ２０によるアクセス権の取得は許可されない。プロセッサＢ２０によるアクセス権の取得は、プロセッサＡ１０の共有リソースＡ５１へのアクセス権が解放された後に許可される。
【００１９】
［アクセス制御回路］
また、図１のアクセス制御回路３０は、複数のプロセッサＡ、Ｂと共有バス４０との間に配置され、各プロセッサからの共有リソース５１〜５３へのアクセスを制御する。アクセス制御回路３０は、例えば、それぞれのプロセッサに対応するアドレス制御部３１ａ、３１ｂと、アクセス監視部３２とを有する。
【００２０】
アドレス制御部３１ａ、３１ｂは、必要に応じて共有リソース５１〜５３へのアクセスをブロックする機能、プロセッサＡ１０、プロセッサＢ２０にエラー応答を返す機能、アクセス権解放時のアドレス変換機能等を有する。処理の詳細については、後述する。また、アクセス監視部３２は、各共有リソース５１〜５３について、当該共有リソースのアクセス権を取得中のプロセッサのＩＤ（以下、ＣＰＵ−ＩＤ）を保持するレジスタを有する。アドレス制御部３１ａ、３１ｂ、及び、アクセス監視部３２は、共有リソース５１〜５３に対応するＣＰＵ−ＩＤと、アクセス元のプロセッサのＩＤとを比較することにより、共有リソース５１〜５３のアクセスを制御する。
【００２１】
［第１の実施の形態例］
本実施の形態例におけるアクセス制御回路３０は、共有リソース５１〜５３へのアクセス権の解放のための命令、及び、アクセス権の取得のための命令を不要にする。
【００２２】
［アクセス制御回路：アクセス権の解放］
まず、共有リソース５１〜５３のアクセス権の解放について、本実施の形態例におけるアクセス制御回路３０は、プロセッサＡ１０、Ｂ２０からのアクセス対象アドレスが、非使用の領域を指すダミーアドレスである場合に、当該ダミーアドレスを対応する共有リソース５１〜５３の共有リソースアドレスにアドレス変換してバス４０に出力すると共に、当該プロセッサによる共有リソース５１〜５３へのアクセス権を解放する。また、アクセス制御回路３０は、アクセス対象アドレスがダミーアドレスではない場合に、アクセス対象アドレスをアドレス変換することなくバス４０に出力する。
【００２３】
このようなアクセス制御回路３０によると、プロセッサは、共有リソース５１〜５３のアクセス処理を終了する際に、共有リソース５１〜５３のアクセス権の解放処理を別途指示する必要がない。
【００２４】
［アクセス制御回路：アクセス権の取得］
そして、共有リソース５１〜５３のアクセス権の取得について、本実施の形態例におけるアクセス制御回路３０は、アクセス対象アドレスがダミーアドレスではない場合であって共有リソースアドレスである場合に、共有リソース５１〜５３へのアクセス権が当該プロセッサに取得されているときはアクセス対象アドレスをバス４０に出力する。また、アクセス制御回路３０は、共有リソース５１〜５３へのアクセス権がいずれのプロセッサによっても取得されていないときはアクセス権を当該プロセッサに取得させると共にアクセス対象アドレスをバス４０に出力し、別のプロセッサによって取得されているときはアクセス対象アドレスをバス４０に出力しない。
【００２５】
このようなアクセス制御回路３０によると、プロセッサは、共有リソース５１〜５３のアクセス処理を開始する際に、共有リソース５１〜５３のアクセス権の取得処理を別途指示する必要がない。
【００２６】
ここで、本実施の形態例のアクセス制御回路３０を有するシステムにおけるプログラムの一例を、一般的なプログラムと対比して説明する。
【００２７】
［共有リソースへのアクセス処理を指示するプログラム例］
図２は、一般的な共有リソースのアクセス処理を指示するプログラムＰ１と、本実施の形態例のアクセス制御回路３０を有するシステムにおいて、共有リソースへのアクセス処理を指示するプログラムＰ２の一例を表す図である。同図の左のプログラムＰ１は、共有リソースへのアクセス処理を記述した一般的なプログラムの具体例であり、右のプログラムＰ２は、本実施の形態例におけるプロセッサによって処理されるプログラムの具体例である。
【００２８】
［一般的なプログラム例］
まず、一般的なプログラムＰ１の具体例について説明する。一般的なプログラムＰ１例では、共有リソース５１〜５３へアクセスを行う場合、例えば、共有メモリへの書き込み処理を行うような場合、共有リソースへのアクセス処理ｃ２を示す命令の前後に共有リソースのアクセス権の取得ｃ１、及び、解放処理ｃ３を示す命令が必要となる。このため、共有リソースへのアクセス処理ｃ２が１つ命令で指示可能な些細な処理であったとしても、必ず、その前後に当該共有リソースへのアクセス権の取得命令ｃ１、及び、解放命令ｃ３が必要となる。
【００２９】
例えば、共有リソースＡ５１のアクセス権がプロセッサＢ２０によって取得されているときに、プロセッサＡ１０によって共有リソースＡ５１へのアクセスが行われる場合の処理の流れについて説明する。このような場合、プロセッサＢ２０によって共有リソースＡ５１のアクセス権の解放処理が行われた後、プロセッサＡ１０による同アクセス権が取得され、共有リソースＡ５１へのアクセス処理が行われる。プロセッサＡ１０によるアクセス処理が終了すると、アクセス権の解放処理が行われ、必要に応じて、再び、プロセッサＢ２０によってアクセス権の取得処理が行われる。
【００３０】
このように、共有リソースへのアクセス処理の前後に共有リソースへのアクセス権を制御する多数の命令が処理される。これにより、各プロセッサが処理する命令量が増加し、プロセッサの性能が低下する。また、プログラムＰ１の記述が複雑化し、障害を誘発する。ここで、発生し易い障害の一例について説明する。
【００３１】
例えば、プログラムＰ１において、アクセス権の取得命令の記述ｃ１が漏れた場合、共有リソースの不正アクセスが発生する。この結果、共有リソースの整合性が保証されない。これは、アクセス権を取得中のプロセッサ（例えば、プロセッサＢ２０）による共有リソースのアクセス中に、別のプロセッサ（例えば、プロセッサＡ１０）による同一の共有リソースへのアクセスを許可してしまう場合を示す。これにより、例えば、共有メモリが複数のプロセッサによって同時に更新されるような事態を発生させ、共有メモリの整合性が失われる。
【００３２】
また、例えば、アクセス権の解放命令の記述が漏れた場合、あるプロセッサによって共有リソースのアクセス権が不正に取得されたままとなり、他のプロセッサによるアクセス権の取得が失敗する。これにより、他のプロセッサによって、共有リソースへのアクセスが行えず、プログラムの処理が適切に行われない。
【００３３】
［本実施の形態例におけるプログラム例］
一方、本実施の形態例におけるプログラムＰ２では、共有リソースへのアクセス処理を示す命令ｃ４の前後に共有リソースのアクセス権の取得、及び、解放処理を示す命令が不要である。ただし、共有リソースへの最終のアクセス命令において、アクセス対象のアドレスとして、アクセス対象の共有リソースのアドレスに対応するダミーアドレスが指定される。プログラムＰ２では、プロセッサが処理する命令量が増加しないことにより、プロセッサの性能が向上する。また、プログラムＰ２の記述がシンプルであるため、上述したような障害が回避される。
【００３４】
続いて、本実施の形態例におけるアクセス制御回路３０の構成について具体的に説明する。
【００３５】
［アクセス制御回路３０の詳細な構成］
図３は、本実施の形態例におけるアクセス制御回路３０の詳細な構成を表す例図である。本実施の形態例におけるアクセス制御回路３０は、プロセッサＡ１０、Ｂ２０に対応するアドレス制御部Ａ３１ａ、３１ｂと、アクセス監視部３２とを有する。同図では、図１に対して、プロセッサＢ２０、及び、プロセッサＢ２０に対応するアドレス制御部Ｂ３１ｂが省略されているが、アドレス制御部Ｂ３１ｂの構成は、アドレス制御部Ａ３１ａと同様である。
【００３６】
図３のアドレス制御部Ａ３１ａは、例えば、アクセスマスク／アドレス変換ユニット３１１、アドレスデコーダ３１２、エラー応答ユニット３１０を有する。アドレスデコーダ３１２は、対応するプロセッサＡ１０によって専用のアドレスバスへの値ｓ２、専用のコントロールバスへの制御値ｓ３に基づいて、共有リソースへのアクセスが発生したか否かを判定する。共有リソースへのアクセスが発生したと判定された場合、アドレスデコーダ３１２は、プロセッサのＩＤをアクセス監視部３２に出力する（ｓ４）。
【００３７】
アクセスマスク／アドレス変換ユニット３１１は、共有リソースへのアクセスを検知した場合、アクセス監視部３２から入力される共有リソースに対応するＣＰＵ−ＩＤ（ｓ５）と、接続されるプロセッサのＩＤとを比較し、一致する場合、及び、ＣＰＵ−ＩＤが未登録の場合、共有リソースへのアクセス指示ｓ２、ｓ３を共有バス４０に出力する。一方、一致しない場合、アクセスマスク／アドレス変換ユニット３１１は、共有リソースへのアクセス指示をブロックして共有バス４０に出力せず、エラー応答ユニット３１０にエラー通知トリガを出力する。これにより、エラー応答ユニット３１０は、対応するプロセッサにアクセスに対するエラー応答ｓ１を出力する。
【００３８】
また、アクセスマスク／アドレス変換ユニット３１１は、ダミーアドレスへのアクセスを検知した場合は、共有リソースに対応する最終アクセスと判定する。この場合、アクセスマスク／アドレス変換ユニット３１１は、ダミーアドレスを変換した実際の共有リソースアドレスｓ２´を共有アドレスバスに、制御値ｓ３を共有コントロールバスに出力し、アクセス監視部３２にＣＰＵ−ＩＤのクリア指示ｓ６を出力する。
【００３９】
また、図３のアクセス監視部３２は、共有リソース毎に、共有リソースのアクセス権を取得中のプロセッサのＩＤをＣＰＵ−ＩＤとしてレジスタに保持するレジスタユニット３２１を有する。そして、共有リソースへのアクセスが発生すると、アクセス制御回路３０からアクセス監視部３２に対して、アクセス元のプロセッサのＩＤ（ｓ４）が出力される。
【００４０】
アクセス監視部３２は、レジスタユニット３２１の共有リソースに対応するＣＰＵ−ＩＤと、入力されたプロセッサのＩＤ（ｓ４）とを比較し、異なる場合は、共有リソースに対応するＣＰＵ−ＩＤの更新を行わない。これは、共有リソースのアクセス権が、他のプロセッサによって既に取得されている場合を示す。一方、ＣＰＵ−ＩＤと入力されたプロセッサのＩＤとが一致する場合、アクセス権がアクセス元のプロセッサによって取得済みであることを示す。このため、アクセス監視部３２は、レジスタユニット３２１のＣＰＵ−ＩＤの更新を行わない。または、ＣＰＵ−ＩＤが未登録の場合、アクセス権がいずれのプロセッサによっても取得されていないことを示すため、アクセス監視部３２は、入力されたプロセッサのＩＤを新たなＣＰＵ−ＩＤとして登録する。
【００４１】
続いて、アクセス制御回路３０の処理の流れについて、フローチャート図に基づいて説明する。
【００４２】
［共有リソースへのアクセス処理］
図４は、本実施の形態例におけるアクセス制御回路３０の共有リソースへのアクセス処理の流れについて説明するフローチャート図である。同図のフローチャート図では、例えば、プロセッサＡ１０による共有リソースＡ５１へのアクセス処理について説明する。ただし、プロセッサＢ２０による、別の共有リソースへのアクセス処理についても同様である。
【００４３】
まず、プロセッサＡ１０から共有リソースＡ５１に対するアクセスｓ２、ｓ３が発生すると（Ｓ１１）、アドレス制御部Ａ３１ａは、アクセス監視部３２から入力される、共有リソースＡ５１に対応するＣＰＵ−ＩＤ（ｓ５）に基づいて、共有リソースＡ５１がアクセス可能な状態であるか否かを判定する（Ｓ１２）。
【００４４】
ＣＰＵ−ＩＤがいずれのプロセッサも示さない場合、共有リソースＡ５１のアクセス権がいずれのプロセッサによっても取得されておらず、アクセス可能な状態であることを示す（Ｓ１２のＹＥＳ）。そこで、アドレス制御部Ａ３１ａは、プロセッサＡ１０のアクセス指示ｓ２、ｓ３を共有バス４０に出力すると共に、アクセス監視部３２は、共有リソースＡ５１に対応するＣＰＵ−ＩＤをプロセッサＡ１０のＩＤに更新する（Ｓ１３）。これにより、共有リソースＡ５１がプロセッサＡ１０によって使用中であることが登録される。つまり、共有リソースＡ５１のアクセス権がプロセッサＡ１０に取得される。
【００４５】
また、ＣＰＵ−ＩＤがプロセッサＡ１０のＩＤと同一である場合、共有リソースＡ５１のアクセス権が既にプロセッサＡ１０によって取得済みであり、共有リソースＡ５１へアクセス可能な状態であることを示す（Ｓ１２のＹＥＳ）。そこで、アドレス制御部Ａ３１ａは、プロセッサＡ１０のアクセス指示ｓ２、ｓ３を共有バス４０に出力する。このとき、アクセス監視部３２は、共有リソースＡ５１に対応するＣＰＵ−ＩＤをプロセッサＡ１０のＩＤに維持する（Ｓ１３）。そして、プロセッサＡ１０から共有リソースＡ５１へのアクセス処理の指示が共有バス４０に出力される（Ｓ１５）。
【００４６】
一方、ＣＰＵ−ＩＤが他のプロセッサ（例えば、プロセッサＢ２０）のＩＤである場合、共有リソースＡ５１のアクセス権が他のプロセッサ（プロセッサＢ２０）によってアクセス中であることを示す（Ｓ１２のＮＯ）。この場合、アドレス制御部Ａ３１ａは、プロセッサＡ１０によるアクセス指示を共有バス４０に通知せず（Ｓ１４）、アクセス指示をブロックする。また、アドレス制御部Ａ３１ａは、プロセッサＡ１０にエラー応答ｓ１を出力して、共有リソースＡ５１のアクセス権が他のプロセッサによって取得されていることを通知する（Ｓ１４）。
【００４７】
そして、共有リソースＡ５１への最終アクセスの場合（Ｓ１６のＹＥＳ）、プログラムには、予め、認識するアクセス対象のアドレスに対応するダミーアドレスに対するアクセス処理が記述される（Ｓ１７）。即ち、プログラムには、予め、最終アクセス対象のアドレスに対応するダミーアドレスが記述される。このように、最終アクセス時のみ、アクセス対象の共有リソースＡ５１アドレスに対応するダミーアドレスが、アクセス対象アドレスとしてプログラムに記述される。
【００４８】
アドレス制御部Ａ３１ａは、ダミーアドレスであることを検知すると、ダミーアドレスに対応する共有リソースＡ５１への最終アクセスであることを認識する。そこで、アドレス制御部Ａ３１ａは、ダミーアドレスを対応する共有リソースＡ５１のアドレスに変換し、共有バス４０に出力する（Ｓ１８）。即ち、アドレス制御部Ａ３１ａは、ダミーアドレスを実アドレスに変換した上で共有バス４０に出力する（ｓ２´、ｓ３）。また、アドレス制御部Ａ３１ａは、共有リソースＡ５１に対応するＣＰＵ−ＩＤ（プロセッサＡ１０のＩＤ）のクリアトリガｓ６をアクセス監視部３２に出力し、アクセス監視部３２は、共有リソースＡ５１に対応するＣＰＵ−ＩＤをクリアする（Ｓ１８）。これにより、共有リソースＡ５１のアクセス権が解放され、非使用状態となる。このように、アクセス権解放用の命令を別途必要とすることなく、最終アクセス時に合わせて、プロセッサＡ１０の共有リソースＡ５１へのアクセス権が解放可能される。
【００４９】
続いて、アドレス変換処理の詳細について説明する。
【００５０】
［アドレス変換処理］
本実施の形態例において、共有リソースに対応するダミーアドレスは、予め、アクセス制御回路３０のアドレス制御部Ａ３１ａによって認識されている。このため、ダミーアドレスへのアクセスが発生した場合、アドレス制御部Ａ３１ａは、共有リソースへの最終アクセスであることを認識し、アドレス変換することができる。本実施の形態例におけるアドレス変換処理では、ダミーアドレスから所定の値が減算されることによって、当該ダミーアドレスに対応する共有リソースのアドレスが取得される。
【００５１】
ここで、メモリマップにおける共有リソースのアドレスと、ダミーアドレスについて図に基づいて説明する。
【００５２】
［アドレスマップの具体例］
図５は、本実施の形態例におけるアドレスマップＡＭ１の具体例を説明する図である。ダミーアドレスは、それぞれの共有リソースのアドレスに対応して、アドレスマップＡＭ１上に任意の領域に確保される。ダミーアドレスはメモリマップＡＭ１上の使用されていないアドレスである。また、ダミーアドレスは、物理アドレスに対応している必要はない。ダミーアドレスの領域範囲のサイズは、対応する共有リソースのアドレスの領域範囲のサイズと同一である。
【００５３】
図５のアドレスマップＡＭ１は、例えば、プロセッサＡ１０のアドレスマップＡＭ１である。例えば、プロセッサＡ１０は３２ｂｉｔのプロセッサであるため、４ＧＢのアドレス空間を有する。同図のアドレスマップＡＭ１では、共有リソースＡ５１のアドレス領域ｒａと対応するダミーアドレス領域ｄａ、共有リソースＢ５２のアドレス領域ｒｂと対応するダミーアドレス領域ｄｂが表されている。共有リソースＣ５３のアドレス領域、及び、ダミーアドレス領域については、省略されている。
【００５４】
図５のアドレスマップＡＭ１の例において、共有リソースＡ５１のアドレス領域ｒａは、０ｘ００００＿１０００〜０ｘ００００＿２０００の４ＫＢの領域である。また、共有リソースＡ５１のアドレス領域ｒａに対応するダミーアドレスの領域ｄａは、０ｘ２０００＿２０００〜０ｘ２０００＿３０００の４ＫＢの領域である。このように、ダミーアドレスの領域ｄａとして、共有リソースのアドレス領域ｒａと同じサイズのアドレスが設定される。同様にして、共有リソースＢ５２の０ｘ７０００＿１０００〜０ｘ７０００＿２０００の４ＫＢのアドレス領域ｒｂに対応して、０ｘＡ０００＿３０００〜０ｘＡ０００＿４０００の４ＫＢのダミーアドレス領域ｄｂが設定される。
【００５５】
前述したとおり、本実施の形態例では、最終アクセス時のみ、共有リソースアドレスに対応するダミーアドレスにアクセスするようにプログラムが記述される。例えば、共有リソースＡ５１のアドレス０ｘ００００＿１０００へのアクセスであって、最終アクセスである場合、アドレス０ｘ２０００＿２０００へのアクセス指示がプログラムに記述される。同様にして、共有リソースＢ５２のアドレス０ｘ７０００＿１５００へのアクセスであって、最終アクセスである場合、アドレス０ｘＡ０００＿３５００へのアクセス指示がプログラムに記述される。
【００５６】
このように、予め、アドレスマップＡＭ１上で、各共有リソースのアドレスに対応して、最終アクセス用のダミーアドレスが設定される。アドレス制御部Ａ３１ａは、ダミーアドレスと対応する共有リソースのアドレスとを予め認識していることから、ダミーアドレスに基づいて、対応する共有リソースのアドレスを簡易に取得できる。本実施の形態例では、ダミーアドレスの領域ｄａ、ｄｂと対応する共有リソースのアドレス領域ｒａ、ｒｂとが同サイズであることから、ダミーアドレスから所定値の減算処理によって、対応する共有リソースのアドレスが取得可能となる。続いて、本実施の形態例におけるアドレス変換処理の仕様について、図５のアドレスマップＡＭ１に基づいて説明する。
【００５７】
［アドレス変換仕様］
図６は、本実施の形態例におけるアドレス変換のための減算処理の仕様を説明する図である。同図の表Ｈ１において、共有リソースＡ５１、共有リソースＢ５２について、共有リソースのアドレス領域ｒａ、ｒｂ、及び、対応するダミーアドレスの領域ｄａ、ｄｂ、アドレス変換処理を行う減算処理の演算式が表されている。
【００５８】
図６のアドレス変換仕様表Ｈ１において、共有リソースＡ５１の減算式は、「ダミーアドレス−０ｘ２０００＿１０００」である。例えば、図５において例示した、最終アクセスとしてアドレス０ｘ２０００＿２０００にアクセスされる例において、「０ｘ２０００＿２０００−０ｘ２０００＿１０００」の演算処理によって、対応する実アドレス０ｘ００００＿１０００が算出される。同様にして、共有リソースＢ５２の減算式は、「ダミーアドレス−０ｘ３０００＿２０００」である。例えば、図５においても例示した、最終アクセスとしてアドレス０ｘＡ０００＿３５００にアクセスされる例において、「０ｘＡ０００＿３５００−０ｘ３０００＿２０００」の演算処理によって、対応する実アドレス０ｘ７０００＿１５００が算出される。
【００５９】
このように、ダミーアドレスと対応する共有リソースのアドレスとが予め認識されていることから、所定の演算式によって、対応する共有リソースのアドレスが簡易に算出される。また、ダミーアドレスの領域と対応する共有リソースのアドレス領域とが同サイズであることから、ダミーアドレスの所定値による簡易な演算によって実アドレスの取得が可能になる。
【００６０】
本実施の形態例では、ダミーアドレス領域が、共有リソースのアドレス領域よりメモリマップＡＭ１（図５）上のアドレス値の大きい領域に設定される。このため、アドレス変換処理は、ダミーアドレスから所定値の減算によって行われる。ただし、ダミーアドレスの領域はアドレスマップＡＭ１上のいずれのアドレスに設定されてもよい。例えば、ダミーアドレス領域が、共有リソースのアドレス領域よりメモリマップ上のアドレス値のより小さい領域に設定された場合、アドレス変換処理は、ダミーアドレスに対する所定値の加算によって行われる。
【００６１】
また、アドレスの変換処理は、減算演算、加算演算に限定されるものではない。ダミーアドレスに対して一意に対応する共有リソースのアドレスが取得可能であれば、いずれの演算式によって変換されてもよい。また、アドレス変換処理は、演算処理ではなく、例えば、ダミーアドレスに対応する共有リソースが対応付けられた変換テーブルが参照されることによって行われてもよい。
【００６２】
以上のようにして、本実施の形態例におけるアクセス制御回路３０は、複数のプロセッサの内の第１のプロセッサからのアクセス対象アドレスが、非使用の領域を指すダミーアドレスである場合に、当該ダミーアドレスを対応する共有リソースの共有リソースアドレスにアドレス変換してバスに出力すると共に、第１のプロセッサによる共有リソースへのアクセス権を解放する。また、アクセス制御回路３０は、アクセス対象アドレスがダミーアドレスではない場合に、アクセス対象アドレスをアドレス変換することなくバスに出力する。
【００６３】
このため、プロセッサは、共有リソースのアクセス処理を終了する際に、共有リソースのアクセス権の解放処理を別途指示する必要がない。これにより、プロセッサの処理効率が向上し、プロセッサが処理する命令のコード量が削減される。また、共有リソースへのアクセス処理を指示する命令が単純化されることにより、アクセス権の解放命令の記載漏れ等を起因とするプログラムの障害が回避される。この結果、プログラムに係る検証コスト、製造、移植コスト等が削減される。
【００６４】
また、本実施の形態例におけるアクセス制御回路３０において、ダミーアドレスの範囲は、共有リソースアドレスの範囲と同一サイズであって、管理手段のアドレス変換は、ダミーアドレスに所定値を加算または減算することにより、共有リソースアドレスに変換する。これにより、ダミーアドレスの所定値による簡易な加算演算や減算演算によって実アドレスの取得が可能になる。
【００６５】
また、本実施の形態例におけるアクセス制御回路３０の管理手段は、さらに、アクセス対象アドレスがダミーアドレスではない場合に、共有リソースへのアクセス権が第１のプロセッサに取得されているときはアクセス対象アドレスをバスに出力する。また、管理手段は、共有リソースへのアクセス権が複数のプロセッサのいずれによっても取得されていないときはアクセス権を第１のプロセッサに取得させると共にアクセス対象アドレスをバスに出力し、アクセス権が第１のプロセッサと異なるプロセッサによって取得されているときはアクセス対象アドレスをバスに出力しない。
【００６６】
このため、プロセッサは、共有リソースのアクセス処理を開始する際に、共有リソースのアクセス権の取得処理を別途指示する必要がない。これにより、プロセッサの処理効率が向上し、プロセッサが処理する命令のコード量が削減される。また、共有リソースへのアクセス処理を指示する命令が単純化されることにより、アクセス権の取得命令の記載漏れ等を起因とするプログラムの障害が回避される。この結果、プログラムに係る検証コスト、製造、移植コスト等が削減される。
【００６７】
また、本実施の形態例におけるアクセス制御回路３０を実装するに当たり、既存のマルチプロセッサシステムにおける各プロセッサ、共有リソース、及び、バスに変更を加える必要がない。また、共有リソースのアクセス権の取得、及び開放処理を指示する専用命令も必要ない。これにより、本実施の形態例におけるアクセス制御回路３０は、既存のマルチプロセッサシステムに対して、簡易に実装可能となる。
【００６８】
さらに、本実施の形態例におけるアクセス制御回路３０は、複数のプロセッサと共通のバスとの間に設置される。これにより、共有リソースのアクセス権の取得、及び、解除処理に係るアクセスや、アクセス権の取得指示に対応するエラー応答がバスに出力されない。これにより、例えば、アクセス権が他のプロセッサによって取得されている場合、アクセス権が要求される度に、アクセス権の取得指示、及び、エラー応答がバスに出力されることが回避される。したがって、バスの使用率が抑えられ、バスの使用効率が向上する。
【００６９】
具体的に、共有リソースＡ５１のアクセス権がプロセッサＡ１０によって取得されているとき、プロセッサＢ２０によって共有リソースＡ５１へのアクセスが発生した場合、プロセッサＢ２０からのアクセス処理が指示される度に、アクセス処理の指示、及び、それに対するエラー応答がバスに出力され続けることが回避される。これにより、共有バスに余分なデータが出力されることが回避され、バスの使用率が抑えられる。
【００７０】
なお、プロセッサから複数の共有バスを介して共有リソースにアクセスされるようなマルチプロセッサシステム１００において、それぞれの共有バスの性能が異なる場合がある。このような場合、データ転送の速度は、一番性能の低いバスの速度に対応する。例えば、本実施の形態例と異なり、共有リソースのアクセス権の取得指示が、共有バスを介して行われるような場合、プロセッサのアクセス権の取得指示は、共有バスを介して、アクセス権の取得結果が通知されるまでブロックされる。このため、複数の共有バスのうち１つでも性能の低いバスがある場合、プロセッサのブロック時間が長くなり、性能劣化の要因となる。
【００７１】
このため、共有バス４０には必要最小限の指示のみが出力されることが望ましい。本実施の形態例では、アクセス制御回路３０が複数のプロセッサと共通のバスとの間に設置されることにより、プロセッサによる共有リソースへのアクセス制御は、共有バス４０に出力される前にアクセス制御回路３０に制御される。これにより、共有バス４０への出力が必要最小限に抑えられ、システム全体の性能の劣化が回避される。
【００７２】
［第２の実施の形態例］
第１の実施の形態例では、アドレスマップ上で、共有リソースのアドレス領域に対応するダミーアドレスの領域が、共有リソース毎に別々の領域に設定される場合を例示した。これに対し、第２の実施の形態例では、各共有リソースに対応するダミーアドレスの領域が、重複して設定される場合を例示する。即ち、複数の共有リソース間でダミーアドレス領域が重複する。これにより、ダミーアドレス領域の範囲を最小サイズに抑えることができ、アドレスマップが有効活用される。
【００７３】
［アドレスマップの具体例］
図７は、第２の実施の形態例におけるアドレスマップＡＭ２の具体例を説明する図である。同図のアドレスマップは、例えば、プロセッサＡ１０のアドレスマップであり、共有リソースＤ〜Ｆのアドレス領域ｒｄ〜ｒｆと、それぞれ対応するダミーアドレス領域ｄｄ〜ｄｆが表されている。ただし、ダミーアドレス領域ｄｄ〜ｄｆは、共有リソース毎に別々の領域に設定されていない。
【００７４】
図７のアドレスマップＡＭ２の例において、共有リソースＤのアドレス領域ｒｄは、０ｘ００００＿１０００〜０ｘ００１０＿１０００の１ＭＢの領域である。そこで、１ＭＢのダミーアドレスの領域ｄｄが設定される。同図のアドレスマップにおいて、０ｘＦ０００＿００００〜０ｘＦ０１０＿００００の領域が、共有リソースＤのダミーアドレス領域ｄｄとして設定される。
【００７５】
そして、共有リソースＥのアドレス領域ｒｅは、０ｘ７０００＿００００〜０ｘ７０００＿１０００の４ＫＢの領域であるため、４ＫＢのダミーアドレスの領域ｄｅが設定される。第２の実施の形態例では、共有リソースＤのダミーアドレス領域ｄｄのうち、４ＫＢのアドレス領域０ｘＦ０００＿００００〜０ｘＦ００２＿００００が共有リソースＥのダミーアドレス領域ｄｅとして設定される。同様にして、共有リソースＦのダミーアドレス領域ｄｆとして、共有リソースＤのダミーアドレス領域ｄｄのうち、１２８ＫＢのアドレス領域０ｘＦ０００＿００００〜０ｘＦ０００＿１０００が設定される。
【００７６】
このように、第２の実施の形態例では、各共有リソースに対応するダミーアドレスの領域が重複する。即ち、共有のダミーアドレス領域ｄｘが設定され、共有のダミーアドレス領域ｄｘのうち、共有リソースのアドレス領域のサイズに対応する領域がダミーアドレス領域として設定される。このため、共有のダミーアドレス領域ｄｘのサイズは、最大の共有リソースのアドレス領域のサイズと同一のサイズに設定される。
【００７７】
なお、図７の例において、共有リソースＥのダミーアドレス領域ｄｅと、共有リソースＦのダミーアドレス領域ｄｆとが重複しているが、この例に限定されるものではない。例えば、共有リソースＦのダミーアドレス領域ｄｆは、共有ダミーアドレス領域ｄｘのうち、共有リソースＥのダミーアドレス領域ｄｅと重複しないように設定されてもよい。
【００７８】
［アドレス変換仕様］
図８は、第２の実施の形態例におけるアドレス変換のための減算処理を説明する図である。同図において、共有リソースＤ〜Ｆについて、アドレス領域、及び、対応するダミーアドレスの領域、アドレス変換処理を行う減算処理の演算式が表されている。
【００７９】
図８のアドレス変換仕様表Ｈ２において、共有リソースＥの減算式は、「ダミーアドレス−０ｘ８０００＿００００」である。例えば、プロセッサＡ１０によって、共有リソースＥへの最終アクセスとしてアドレス０ｘＦ０００＿１０００にアクセスされた場合、「０ｘＦ０００＿１０００−０ｘ８０００＿００００」の演算処理によって、対応する実アドレス０ｘ７０００＿１０００が算出される。同様にして、共有リソースＦへの最終アクセスとしてアドレス０ｘＦ０００＿１５００にアクセスされた場合、「０ｘＦ０００＿１５００−０ｘ５０００＿００００」の演算処理によって、対応する実アドレス０ｘＡ０００＿１５００が算出される。
【００８０】
このように、ダミーアドレス領域が重複して設定される場合であっても、第１の実施の形態例と同様にして、ダミーアドレスから所定値の減算処理によって、対応する共有リソースのアドレスが簡易に算出される。なお、各共有リソースのダミーアドレス領域が重複しているものの、ダミーアドレス領域と対応する共有リソースのアドレス領域とは同サイズであるため、ダミーアドレスの所定値による簡易な演算によって実アドレスの取得が可能となる。
【００８１】
このように、複数の共有リソースが存在する場合、各共有リソースに対応するダミーアドレス領域を共有化することによって、メモリマップ上におけるダミーアドレス領域のサイズを最小限に抑えることができる。例えば、４ＫＢの共有リソースを１０個分有するマルチプロセッサシステムの場合、第１の実施の形態例では、４０ＫＢの総ダミーアドレス領域のサイズを要するのに対し、第２の実施の形態例では、１０個のダミーアドレス領域を共有化することにより４ＫＢのダミーアドレス領域を確保すれば足る。このため、メモリマップ上における非使用のアドレス領域が少ないシステムに対して有効である。
【００８２】
以上のようにして、第２の実施の形態例におけるアクセス制御回路によると、共有リソースが複数の共有リソースである第１の共有リソースと第２の共有リソースを含む場合、第１の共有リソースの共有リソースアドレスに対応する第１のダミーアドレスの範囲と、第２の共有リソースの共有リソースアドレスに対応する第２のダミーアドレスの範囲とが重複する。これにより、ダミーアドレス領域の範囲を最小サイズに抑えられ、アドレスマップが有効活用される。また、第２の実施の形態例についても、第１の実施の形態例と同様にして、プロセッサの処理効率が向上し、プロセッサが処理する命令のコード量が削減されると共に、プログラムの障害が回避される。また、バスの使用効率が向上すると共に、既存のマルチプロセッサシステムに対して、簡易に実装可能である。
【００８３】
以上の実施の形態をまとめると、次の付記のとおりである。
【００８４】
（付記１）
複数のプロセッサとバスに接続され、前記複数のプロセッサによって共通の前記バスを介してアクセスされる共有リソースへの制御を行うアクセス制御回路であって、
前記複数のプロセッサの内の第１のプロセッサからのアクセス対象アドレスが、非使用の領域を指すダミーアドレスである場合に、当該ダミーアドレスを対応する前記共有リソースの共有リソースアドレスにアドレス変換して前記バスに出力すると共に、前記第１のプロセッサによる前記共有リソースへのアクセス権を解放し、前記アクセス対象アドレスが前記ダミーアドレスではない場合に、前記アクセス対象アドレスを前記アドレス変換することなく前記バスに出力する管理手段、を有することを特徴とするアクセス制御回路。
【００８５】
（付記２）
付記１において、
前記ダミーアドレスの範囲は、前記共有リソースアドレスの範囲と同一サイズであって、
前記管理手段の前記アドレス変換は、前記ダミーアドレスに所定値を加算または減算することにより、前記共有リソースアドレスに変換することを特徴とするアクセス制御回路。
【００８６】
（付記３）
付記１乃至２のいずれか１項において、
前記管理手段は、さらに、
前記アクセス対象アドレスが前記ダミーアドレスではない場合に、前記共有リソースへのアクセス権が前記第１のプロセッサに取得されているときは前記アクセス対象アドレスを前記バスに出力し、前記アクセス権が前記複数のプロセッサのいずれによっても取得されていないときは前記アクセス権を前記第１のプロセッサに取得させると共に前記アクセス対象アドレスを前記バスに出力し、前記アクセス権が前記第１のプロセッサと異なるプロセッサによって取得されているときは前記アクセス対象アドレスを前記バスに出力しないことを特徴とするアクセス制御回路。
【００８７】
（付記４）
付記１乃至３のいずれか１項において、
前記複数のプロセッサと前記共通のバスとの間に設置されることを特徴とするアクセス制御回路。
【００８８】
（付記５）
付記１において、
前記共有リソースは第１の共有リソースと第２の共有リソースとを含み、
前記第１の共有リソースの共有リソースアドレスに対応する第１の前記ダミーアドレスの範囲と、前記第２の共有リソースの共有リソースアドレスに対応する第２の前記ダミーアドレスの範囲とが重複することを特徴とするアクセス制御回路。
【００８９】
（付記６）
複数のプロセッサとバスに接続され、前記複数のプロセッサによって共通の前記バスを介してアクセスされる共有リソースへの制御を行うアクセス制御方法であって、
前記複数のプロセッサの内の第１のプロセッサからのアクセス対象アドレスが、非使用の領域を指すダミーアドレスである場合に、当該ダミーアドレスを対応する前記共有リソースの共有リソースアドレスにアドレス変換して前記バスに出力すると共に、前記第１のプロセッサによる前記共有リソースへのアクセス権を解放し、前記アクセス対象アドレスが前記ダミーアドレスではない場合に、前記アクセス対象アドレスを前記アドレス変換することなく前記バスに出力する管理工程、を有することを特徴とするアクセス制御方法。
【符号の説明】
【００９０】
１００：マルチプロセッサシステム、１０：プロセッサＡ、２０：プロセッサＢ、３０：アクセス制御回路、４０：共有バス、５１：共有リソースＡ、５２：共有リソースＢ、５３：共有リソースＣ
【図１】
2014071855.tif 000003
【図２】
2014071855.tif 000004
【図３】
2014071855.tif 000005
【図４】
2014071855.tif 000006
【図５】
2014071855.tif 000007
【図６】
2014071855.tif 000008
【図７】
2014071855.tif 000009
【図８】
2014071855.tif 000010