(57)【要約】【課題】複数のプロセッサが周辺装置を共有しても、当該周辺装置に割り当てられたアドレス空間の重複に起因する誤動作を確実に防止し得るマルチプロセッサシステムを提供する。【解決手段】マルチプロセッサシステム１は、複数のプロセッサとバスを介して接続されたアドレス変換部３５を有する。アドレス変換部３５は、複数のプロセッサのうちアクセス要求を発したプロセッサからのアドレス情報を共有メモリ空間内のアドレス情報に変換する。共有メモリ空間は、複数のプロセッサにそれぞれ対応する複数のアドレス領域を有している。アドレス変換部３５は、アクセス要求を発した当該プロセッサからのアドレス情報を、当該プロセッサに対応する当該アドレス領域内のアドレス情報に変換する。【選択図】図５
2010224671.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサと、
前記複数のプロセッサとバスを介して接続され、前記複数のプロセッサのうちアクセス要求を発したプロセッサからのアドレス情報を共有メモリ空間内のアドレス情報に変換するアドレス変換部と、
周辺装置を前記アドレス変換部と電気的に接続する入出力インタフェース部と、
を備え、
当該周辺装置に対して前記複数のプロセッサがそれぞれ使用すべき複数のアドレス空間が割り当てられており、
前記共有メモリ空間は、前記複数のプロセッサにそれぞれ対応する複数のアドレス領域を有し、
前記アドレス変換部は、前記アクセス要求を発した当該プロセッサからのアドレス情報を、当該プロセッサに対応する当該アドレス領域内のアドレス情報に変換する、マルチプロセッサシステム。
【請求項２】
請求項１に記載のマルチプロセッサシステムであって、前記複数のアドレス領域は、前記複数のプロセッサにそれぞれ対応しかつ互いに重複しない排他的なアドレス領域である、マルチプロセッサシステム。
【請求項３】
請求項１または２に記載のマルチプロセッサシステムであって、前記複数のプロセッサのうちの２個以上のプロセッサから到来した複数の前記アクセス要求の競合を調停する調停部をさらに備える、マルチプロセッサシステム。
【請求項４】
請求項３に記載のマルチプロセッサシステムであって、前記周辺装置はＰＣＩ（Peripheral Component Interconnect）デバイスである、マルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサを有するマルチプロセッサシステムに関する。
【背景技術】
【０００２】
近年、複数のプロセッサ（ＣＰＵ）を搭載したコンピュータシステムであるマルチプロセッサシステムが開発され使用されている。マルチプロセッサシステムでは、一般に、各プロセッサがＰＣＩデバイスなどのＩ／Ｏデバイスを制御するために、Ｉ／Ｏデバイス毎にメモリ空間上にアドレス領域が割り当てられる。このようなアドレス領域の割り当ては、たとえば、マルチプロセッサシステムの起動時に、あるいはＩ／Ｏデバイスのシステムへの接続時に自動的に実行される。
【０００３】
この種のマルチプロセッサシステムに関する先行技術は、たとえば、特許文献１（特開２００３−２９６２６２号公報）、特許文献２（特開２００１−１１７８９２号公報）および特許文献３（特開２００８−７７３８９号公報）に開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−２９６２６２号公報
【特許文献２】特開２００１−１１７８９２号公報
【特許文献３】特開２００８−７７３８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
複数のプロセッサがＩ／Ｏデバイスを共有するマルチプロセッサシステムでは、プロセッサ間で当該Ｉ／Ｏデバイスに対して重複するアドレス空間が割り当てられると、システムの誤動作が発生するおそれがある。なぜならば、当該Ｉ／Ｏデバイス側で、どのプロセッサからアクセスがあったのかが判別できない事態が起こり得るからである。複数のプロセッサがＩ／Ｏデバイスを共有しなければ、その種の誤動作を確実に防止することが可能である。図１は、Ｉ／Ｏデバイスを共有しない３個のプロセッサ（ＣＰＵ）１０１Ａ，１０１Ｂ，１０１Ｃを搭載するマルチプロセッサシステム１００の概略構成を示す図である。図１に示されるように、ＣＰＵ１０１Ａ，１０１Ｂ，１０１Ｃは、Ｉ／Ｏインタフェース部１０２Ａ，１０２Ｂ，１０２Ｃを介してそれぞれ対応するＩ／Ｏデバイス１１０Ａ，１１０Ｂ，１１０Ｃに接続されている。
【０００６】
しかしながら、図１に示すように複数のＩ／Ｏインタフェース部１０２Ａ，１０２Ｂ，１０２Ｃを実装するシステムでは、ハードウェア構成が大きくなり、その小型化が難しくなるという問題がある。
【０００７】
上記に鑑みて本発明の目的は、複数のプロセッサがＩ／Ｏデバイスなどの周辺装置を共有しても、当該周辺装置に割り当てられたアドレス空間の重複に起因する誤動作を確実に防止し得、ハードウェア構成の小型化をも可能にするマルチプロセッサシステムを提供することである。
【課題を解決するための手段】
【０００８】
本発明によれば、複数のプロセッサと、前記複数のプロセッサとバスを介して接続され、前記複数のプロセッサのうちアクセス要求を発したプロセッサからのアドレス情報を共有メモリ空間内のアドレス情報に変換するアドレス変換部と、周辺装置を前記アドレス変換部と電気的に接続する入出力インタフェース部と、を備えたマルチプロセッサシステムが提供される。このマルチプロセッサシステムでは、当該周辺装置に対して前記複数のプロセッサがそれぞれ使用すべき複数のアドレス空間が割り当てられており、前記共有メモリ空間は、前記複数のプロセッサにそれぞれ対応する複数のアドレス領域を有し、前記アドレス変換部は、前記アクセス要求を発した当該プロセッサからのアドレス情報を、当該プロセッサに対応する当該アドレス領域内のアドレス情報に変換する。
【発明の効果】
【０００９】
本発明によるマルチプロセッサシステムは、複数のプロセッサが周辺装置を共有する構成を有するが、異なるプロセッサ間で当該周辺装置に割り当てられたアドレス空間が重複しても、誤動作の発生を確実に防止することができる。また、ハードウェア構成の小型化も可能である。
【図面の簡単な説明】
【００１０】
【図１】複数のプロセッサ（ＣＰＵ）を搭載するマルチプロセッサシステムの概略構成を示す図である。
【図２】本発明に係る一実施形態のマルチプロセッサシステムの概略構成を示す図である。
【図３】複数のＣＰＵがそれぞれ使用するアドレス空間を例示する図である。
【図４】共有メモリ空間を例示する図である。
【図５】アドレス変換回路の構成の一例を概略的に示す機能ブロック図である。
【発明を実施するための形態】
【００１１】
以下、本発明に係る実施の形態について図面を参照しつつ説明する。なお、すべての図面において、同様な構成要素には同一符号を付し、その詳細な説明は重複しないように適宜省略される。
【００１２】
図２は、本発明に係る一実施形態のマルチプロセッサシステム１の概略構成を示す図である。図２に示されるように、マルチプロセッサシステム１は、複数のプロセッサ（ＣＰＵ：Central Processing Unit）１０Ａ，１０Ｂ，１０Ｃとアドレス変換回路１３とを有する。図示しないが、マルチプロセッサシステム１は、ＣＰＵ１０Ａ，１０Ｂ，１０Ｃやアドレス変換回路１３の他に、マルチプロセッサシステム１の全体の制御を司るホストコントローラ、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）および各種演算処理ユニットなどの、実計算機を構成するハードウェア資源を有している。
【００１３】
ＣＰＵ１０Ａ，１０Ｂ，１０Ｃは、それぞれ対応するバス１１Ａ，１１Ｂ，１１Ｃを介してアドレス変換回路１３に接続されている。これらバス１１Ａ，１１Ｂ，１１Ｃは、アドレスバスとデータバスを含むものである。アドレス変換回路１３には、ＰＣＩ（Peripheral Component Interconnect）デバイスなどの周辺装置であるＩ／Ｏデバイス１４が着脱自在に接続されており、このＩ／Ｏデバイス１４は、ＣＰＵ１０Ａ，１０Ｂ，１０Ｃによって共有されるものである。
【００１４】
Ｉ／Ｏデバイス１４がアドレス変換回路１３に接続されたとき、あるいは、マルチプロセッサシステム１が起動されたとき、当該Ｉ／Ｏデバイス１４を制御するためにＣＰＵ１０Ａ，１０Ｂ，１０Ｃがそれぞれ使用すべきアドレス空間がメモリ空間内に自動的に割り当てられる。これらアドレス空間の割り当ては、たとえばＢＩＯＳ（Basic Input/Output System）などの起動システムにより実行される。
【００１５】
図３（Ａ）〜図３（Ｃ）は、ＣＰＵ１０Ａ，１０Ｂ，１０Ｃがそれぞれ使用するアドレス空間を例示する図である。ＣＰＵ１０Ａにより使用されるアドレス空間としては、図３（Ａ）のメモリ空間内のアドレス０ｘ０００２＿００００〜０ｘ０００５＿ＦＦＦＦ（「０ｘ」は１６進数形式のアドレスを表すための接頭記号）の領域が割り当てられている。ＣＰＵ１０Ｂにより使用されるべきアドレス空間として、図３（Ｂ）のメモリ空間内のアドレス０ｘ０００３＿００００〜０ｘ０００６＿ＦＦＦＦの領域が割り当てられている。そして、ＣＰＵ１０Ｃにより使用されるべきアドレス空間としては、図３（Ｃ）のメモリ空間内のアドレス０ｘ０００１＿００００〜０ｘ０００４＿ＦＦＦＦの領域が割り当てられている。これら図３（Ａ）〜図３（Ｃ）に示されるように、Ｉ／Ｏデバイス１４に対して割り当てられたアドレス空間は重複している。言い換えれば、ＣＰＵ１０Ａ，１０Ｂ，１０Ｃがそれぞれ使用するアドレスが同一になり得る。
【００１６】
ＣＰＵ１０Ａ，１０Ｂ，１０Ｃは、Ｉ／Ｏデバイス１４にアクセスしようとするとき、アクセス要求をアドレス変換回路１３に発する。アドレス変換回路１３が当該アクセス要求を許可したとき、この許可を受けたＣＰＵは、Ｉ／Ｏデバイス１４を制御するためにアドレス情報をアドレス変換回路１３に供給する。アドレス変換回路１３は、ＣＰＵ１０Ａ，１０Ｂ，１０Ｃのうちのいずれかから転送されたアドレス情報を共有メモリ空間内のアドレス情報に変換し、その変換後のアドレス情報をＩ／Ｏデバイス１４に供給する。
【００１７】
共有メモリ空間は、ＣＰＵ１０Ａ，１０Ｂ，１０Ｃにそれぞれ対応するアドレス領域を有し、これらアドレス領域は、共有メモリ空間内で互いに重複しないように排他的に割り当てられている。アドレス変換回路１３は、この共有メモリ空間を利用して、アクセス要求の許可を受けたＣＰＵからのアドレス情報を当該ＣＰＵに対応するアドレス領域内のアドレス情報に変換する機能（アドレス変換機能）を有する。これにより、ＣＰＵ１０Ａ，１０Ｂ，１０Ｃが使用するアドレスが互いに重複したとしても、アドレスの競合が排除されるので、システムの誤動作を防止することが可能となる。
【００１８】
共有メモリ空間内のアドレス領域は、Ｉ／Ｏデバイス１４がアドレス変換回路１３に接続されたとき、あるいは、マルチプロセッサシステム１が起動されたときにＢＩＯＳなどの起動システムにより自動的に割り当てられる。
【００１９】
図４は、共有メモリ空間を例示する図である。図４に示されるように、共有メモリ空間内には、ＣＰＵ１０Ａに対応するアドレス０ｘ００００＿００００〜０ｘ０００３＿ＦＦＦＦの領域Ａ１が割り当てられ、ＣＰＵ１０Ｂに対応するアドレス０ｘ０００４＿００００〜０ｘ０００７＿ＦＦＦＦの領域Ａ２が割り当てられ、ＣＰＵ１０Ｃに対応するアドレス０ｘ０００８＿００００〜０ｘ０００Ｂ＿ＦＦＦＦの領域Ａ３が割り当てられている。
【００２０】
図５は、アドレス変換回路１３の構成の一例を概略的に示す機能ブロック図である。図５に示されるように、アドレス変換回路１３は、ＣＰＵインタフェース部３０〜３２、調停部３３、スイッチ部３４、アドレス変換部３５およびＩ／Ｏインタフェース部（入出力インタフェース部）３６を有している。アドレス変換回路１３は、ＦＰＧＡ（Field Programmable Gate Array）と呼ばれる論理書き換え可能な集積回路を用いて実現することが可能である。
【００２１】
図２のＣＰＵ１０Ａ，１０Ｂ，１０Ｃはそれぞれ対応するＣＰＵインタフェース部３０，３１，３２を介して調停部３３とスイッチ部３４とに接続されている。
【００２２】
調停部３３は、ＣＰＵ１０Ａ，１０Ｂ，１０Ｃのうち２個以上のＣＰＵから到来した複数のアクセス要求が競合した場合にその競合を調停する機能を有する。調停部３３は、その調停結果に基づいて、ＣＰＵ１０Ａ，１０Ｂ，１０Ｃのいずれかにアクセス要求を許可する。具体的には、複数のＣＰＵからのアクセス要求が競合するときにバスアクセスが競合するので、調停部３３は、かかる競合を調停する機能を有している。
【００２３】
スイッチ部３４は、アクセス要求の許可を受けたＣＰＵをアドレス変換部３５に接続する機能を有する。より具体的には、スイッチ部３４は、アクセス要求の許可を受けたＣＰＵからのアクセスが発生すると、当該ＣＰＵからのアドレス情報を監視することで、どのＣＰＵからアドレス情報が転送されたかを判別することができる。この判別結果に基づいて、スイッチ部３４は、アクセス要求の許可を受けたＣＰＵとＩ／Ｏインタフェース部３６（またはアドレス変換部３５）との間の信号転送を実行する。当該ＣＰＵは、Ｉ／Ｏデバイス１４を制御するためにアドレス情報をアドレス変換部３５に供給することができる。
【００２４】
アドレス変換部３５は、上述の共有メモリ空間を使用して、アクセス要求の許可を受けたＣＰＵから転送されたアドレス情報を変換する。変換後のアドレス情報は、Ｉ／Ｏインタフェース部３６を介してＩ／Ｏデバイス１４に転送される。
【００２５】
たとえば、ＣＰＵ１０ＡからＩ／Ｏデバイス１４へのアクセスが発生するとき、ＣＰＵ１０Ａは、図３（Ａ）のアドレス０ｘ０００２＿００００〜０ｘ０００５＿ＦＦＦＦの領域でのアドレス情報を利用したデータアクセスを行う。この場合、アドレス変換部３５は、ＣＰＵ１０Ａからのアクセスが発生したと認識し、ＣＰＵ１０Ａからのアドレス情報を図４のアドレス領域Ａ１内のアドレス情報へ変換する。
【００２６】
同様に、ＣＰＵ１０ＢからＩ／Ｏデバイス１４へのアクセスが発生するときは、ＣＰＵ１０Ｂは、図３（Ｂ）のアドレス０ｘ０００３＿００００〜０ｘ０００６＿ＦＦＦＦの領域でのアドレス情報を利用したデータアクセスを行う。この場合、アドレス変換部３５は、ＣＰＵ１０Ｂからのアクセスが発生したと認識し、ＣＰＵ１０Ｂからのアドレス情報を図４のアドレス領域Ａ２内のアドレス情報へ変換する。また、ＣＰＵ１０ＣからＩ／Ｏデバイス１４へのアクセスが発生するときは、ＣＰＵ１０Ｃは、図３（Ｃ）のアドレス０ｘ０００１＿００００〜０ｘ０００４＿ＦＦＦＦの領域でのアドレス情報を利用したデータアクセスを行う。この場合、アドレス変換部３５は、ＣＰＵ１０Ｃからのアクセスが発生したと認識し、ＣＰＵ１０Ｃからのアドレス情報を図４のアドレス領域Ａ３内のアドレス情報へ変換する。
【００２７】
本実施形態のマルチプロセッサシステム１が奏する効果は以下の通りである。
【００２８】
上述した通り、マルチプロセッサシステム１は、複数のＣＰＵ（プロセッサ）１０Ａ，１０Ｂ，１０ＣがＩ／Ｏデバイス１４を共有する構成を有するが、異なるＣＰＵ間で当該Ｉ／Ｏデバイス１４に割り当てられたアドレス空間が重複しても、アドレス変換回路１３は、アドレスの競合を排除することができる。よって、アドレス空間の重複に起因するシステムの誤動作の発生を確実に防止することができる。また、Ｉ／Ｏデバイス１４を共有できるので、マルチプロセッサシステム１のハードウェア構成を小型化することが可能である。
【００２９】
また、ＣＰＵ（プロセッサ）１０Ａ，１０Ｂ，１０Ｃが使用するアドレス空間の重複が許されるので、これらアドレス空間を割り当てるためのアルゴリズムとして既存のアルゴリズムを流用することが可能である。また、ＣＰＵ１０Ａ，１０Ｂ，１０Ｃが使用するアドレス空間を割り当てるために新たにソフトウェアやドライバソフトを開発する必要がない。
【００３０】
さらに、アドレス変換回路１３はハードウェア構成で実現することができる。これにより、Ｉ／Ｏデバイス１４への高速なデータアクセスが可能となり、システムの高性能化を実現することが可能である。
【００３１】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。たとえば、マルチプロセッサシステム１は、３個のプロセッサ（ＣＰＵ）１０Ａ，１０Ｂ，１０Ｃを有するが、プロセッサの数は３個に限らず、４個以上であってよい。
【符号の説明】
【００３２】
１  マルチプロセッサシステム
１０Ａ，１０Ｂ，１０Ｃ  ＣＰＵ（プロセッサ）
１３  アドレス変換回路
１４  Ｉ／Ｏデバイス（周辺装置）
３０，３１，３２  ＣＰＵインタフェース部
３３  調停部
３４  スイッチ部
３５  アドレス変換部
３６  Ｉ／Ｏインタフェース部（入出力インタフェース部）
【図１】
2010224671.tif 000003
【図２】
2010224671.tif 000004
【図３】
2010224671.tif 000005
【図４】
2010224671.tif 000006
【図５】
2010224671.tif 000007