(57)【要約】プロセッサによるメモリ・アクセスをハードウェアで制御することにより、ソフトウェアに特別な仕組みを持たせることなく、かつオーバーヘッドの増大を抑制しながら、システムの仮想化を実現する。プロセッサ１０によるメモリ・アクセスを制御する装置において、複数のプロセッサ１０により実行される複数のＯＳに個別に対応し、各プロセッサ１０からのメモリ・アクセスにおけるアクセス先の論理アドレスをメモリ４１、４２における物理アドレスに変換する複数のアドレス・テーブル２１と、メモリ・アクセスを行ったプロセッサ１０の識別情報を取得し、複数のアドレス・テーブル２１のうち当該メモリ・アクセスに対するアドレス変換を実行するアドレス・テーブル２１として、識別情報に基づいて特定されたプロセッサ１０により実行されるＯＳに対応するアドレス・テーブル２１を選択するテーブル選択部２２と、を備える。
2012060148.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサによるメモリ・アクセスを制御する装置において、
複数のプロセッサにより実行される複数のＯＳ（Operating System）に個別に対応し、各プロセッサからのメモリ・アクセスにおけるアクセス先の論理アドレスをメモリにおける物理アドレスに変換する複数のアドレス変換部と、
メモリ・アクセスを行ったプロセッサの識別情報を取得し、前記複数のアドレス変換部のうち当該メモリ・アクセスに対するアドレス変換を実行するアドレス変換部として、当該識別情報に基づいて特定されたプロセッサにより実行されるＯＳに対応するアドレス変換部を選択する選択部と、
を備える、装置。
【請求項２】
前記アドレス変換部は、前記プロセッサから出力されたアクセス命令を受け付け、当該アクセス命令において指定された論理アドレスを、前記メモリにおける当該プロセッサにより実行されるＯＳに対応付けられたメモリ領域の物理アドレスに変換する、請求項１に記載の装置。
【請求項３】
前記アドレス変換部は、ＯＳを起動するためのブート・プログラムが格納されたブート用メモリに対する前記プロセッサによるアクセス命令を受け付け、当該アクセス命令において指定された論理アドレスを、当該ブート用メモリの物理アドレスに変換する、請求項１または請求項２に記載の装置。
【請求項４】
前記アドレス変換部は、プログラム可能なロジックおよびレジスタで構成される、請求項１乃至請求項３のいずれかに記載の装置。
【請求項５】
前記選択部は、
複数の前記アドレス変換部により変換されたアドレスを表すアドレス信号を受け付けて、当該アドレス信号の一つを選択的に前記メモリへ出力するマルチプレクサと、
前記識別情報に基づいて前記マルチプレクサによる出力対象となる前記アドレス信号を切り替えるスイッチと、
を備える、請求項１乃至請求項４のいずれかに記載の装置。
【請求項６】
プロセッサによるメモリ・アクセスを制御する装置において、
複数のプロセッサにより実行される複数のＯＳ（Operating System）に個別に対応し、各プロセッサから出力されたアクセス命令を受け付け、当該アクセス命令において指定された論理アドレスを、メモリにおける当該プロセッサにより実行されるＯＳに対応付けられたメモリ領域の物理アドレスに変換し、ＯＳを起動するためのブート・プログラムが格納されたブート用メモリに対する前記プロセッサによるアクセス命令を受け付け、当該アクセス命令において指定された論理アドレスを、当該ブート用メモリの物理アドレスに変換する複数のアドレス変換部と、
アクセス命令を出力したプロセッサの識別情報を取得し、前記複数のアドレス変換部のうち当該アクセス命令に対するアドレス変換を実行するアドレス変換部として、当該識別情報に基づいて特定されたプロセッサにより実行されるＯＳに対応するアドレス変換部を選択する選択部と、
を備える、装置。
【請求項７】
複数のＯＳ（Operating System）を実装するコンピュータにおいて、
複数のプロセッサと、
メモリと、
メモリ・アクセスを行った前記プロセッサの識別情報を取得し、当該プロセッサからの当該メモリ・アクセスにおけるアクセス先の論理アドレスを、前記メモリにおける当該識別情報に基づいて特定されたプロセッサにより実行されるＯＳに対応付けられたメモリ領域の物理アドレスに変換するアドレス変換装置と、
を備える、コンピュータ。
【請求項８】
前記アドレス変換装置は、
複数の前記ＯＳに個別に対応し、前記各プロセッサから出力されたアクセス命令を受け付け、当該アクセス命令において指定された論理アドレスを、メモリにおける当該プロセッサにより実行されるＯＳに対応付けられたメモリ領域の物理アドレスに変換する複数の変換処理部と、
前記識別情報を取得し、前記複数の変換処理部のうち当該メモリ・アクセスに対するアドレス変換を実行する変換処理部として、当該識別情報に基づいて特定されたプロセッサにより実行されるＯＳに対応付けられた変換処理部を選択する選択部と、
を備える、請求項７に記載のコンピュータ。
【請求項９】
ＯＳを起動するためのブート・プログラムが格納されたブート用メモリをさらに備え、
前記アドレス変換装置は、前記ブート用メモリに対する前記プロセッサによるアクセス命令を受け付け、当該アクセス命令において指定された論理アドレスを、当該ブート用メモリの物理アドレスに変換する、請求項８に記載のコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ・アクセスを制御してシステムの仮想化を実現する装置およびその装置を搭載したコンピュータに関する。
【背景技術】
【０００２】
コンピュータ・アーキテクチャにおいて、プロセッサやメモリ等を仮想化して仮想ハードウェアによるソフトウェアの動作環境を実現し、複数のＯＳ（Operating System）等のソフトウェアを実行可能とすることが行われている。従来、この種の仮想化技術は、ホストＯＳ型と呼ばれる方式とハイパーバイザー型と呼ばれる方式のいずれかにより実現される（例えば、特許文献１参照）。【０００３】
図８は、ホストＯＳ型による仮想化方式の概念を説明する図である。
図８に示すように、ホストＯＳ型のシステムは、ハードウェア８１０上で一つのホストＯＳ８１１が動作する。ホストＯＳ８１１上では、ホストＯＳ８１１のタスク８１２が実行されると共に、仮想マシンモニタ８１３を介してゲストＯＳ８１４が動作する。そして、ゲストＯＳ８１４上でゲストＯＳ８１４のタスク８１５が実行される。言い換えれば、ホストＯＳ型のシステムでは、実装された複数のＯＳのうちの一つがホストＯＳ８１１となり、他のＯＳ（ゲストＯＳ８１４）の動作環境を提供する。なお、図示の例では一つのゲストＯＳ８１４が記載されているが、複数のゲストＯＳ８１４を対応する仮想マシンモニタ８１３と共に実装しても良い。【０００４】
図９は、ハイパーバイザー型による仮想化方式の概念を説明する図である。
図９に示すように、ハイパーバイザー型のシステムは、ハードウェア９１０上でハイパーバイザー９１１が動作する。そして、ハイパーバイザー９１１上で複数のゲスト・システム（ＯＳおよびＯＳ上で動作するタスク）９１２が動作する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−７７１４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来、システムの仮想化を実現する機能は、ソフトウェアにより提供されていた。すなわち、上記のホストＯＳやハイパーバイザーの機能によって、ゲストＯＳを動作させる仮想ハードウェアが実現されていた。そのため、実装されるソフトウェアにおいて仮想化を実現するための特別な仕組みを設ける必要があった。【０００７】
具体的には、例えば、ホストＯＳ型のシステムの場合、ゲストＯＳを動作させる際にもホストＯＳが動作するため、ハードウェアへの負荷が大きく、オーバーヘッドが大きいという問題があった。また、ゲストＯＳを動作させるための仮想マシンモニタのような特別なソフトウェアが必要であった。【０００８】
ハイパーバイザー型のシステムは、ハイパーバイザーが、実装されるハードウェアおよびハイパーバイザー上で動作させるＯＳに対応して構成される必要がある。そのため、ハードウェアの構成や使用するＯＳの種類を変更すると、変更後のハードウェアやＯＳに対応するハイパーバイザーを作成しなければならない。したがって、システム構成の変更が容易な、柔軟なシステムの構築が困難であった。【０００９】
また、ハイパーバイザー型のシステムには、準仮想化方式と呼ばれる方式と、完全仮想化方式と呼ばれる方式とがあるが、準仮想化方式の場合、ゲストＯＳをハイパーバイザーに適合させる必要があった。すなわち、ハイパーバイザーにより提供される仮想化環境を利用することを前提としてゲストＯＳを設計したり、改変したりする必要があった。【００１０】
これに対し、完全仮想化方式の場合、ゲストＯＳの改変等を行う必要はない。しかし、仮想化環境におけるゲストＯＳの動作をハイパーバイザーが支援する必要があるため、ホストＯＳ型の場合と同様に、オーバーヘッドが大きくなるという問題があった。【００１１】
本発明は、プロセッサによるメモリ・アクセスをハードウェアで制御することにより、ソフトウェアに特別な仕組みを持たせることなく、かつオーバーヘッドの増大を抑制しながら、システムの仮想化を実現することを目的とする。
【課題を解決するための手段】
【００１２】
上記の目的を達成するため、本発明は、次のような装置として実現される。この装置は、プロセッサによるメモリ・アクセスを制御する装置において、複数のプロセッサにより実行される複数のＯＳ（Operating System）に個別に対応し、各プロセッサからのメモリ・アクセスにおけるアクセス先の論理アドレスをメモリにおける物理アドレスに変換する複数のアドレス変換部と、メモリ・アクセスを行ったプロセッサの識別情報を取得し、複数のアドレス変換部のうち当該メモリ・アクセスに対するアドレス変換を実行するアドレス変換部として、識別情報に基づいて特定されたプロセッサにより実行されるＯＳに対応するアドレス変換部を選択する選択部と、を備える。【００１３】
より詳細には、アドレス変換部は、プロセッサから出力されたアクセス命令を受け付け、アクセス命令において指定された論理アドレスを、メモリにおけるこのプロセッサにより実行されるＯＳに対応付けられたメモリ領域の物理アドレスに変換する。
さらに好ましくは、アドレス変換部は、ＯＳを起動するためのブート・プログラムが格納されたブート用メモリに対するプロセッサによるアクセス命令を受け付け、アクセス命令において指定された論理アドレスを、ブート用メモリの物理アドレスに変換する。【００１４】
また、好ましくは、アドレス変換部は、プログラム可能なロジックおよびレジスタで構成される。
そして、選択部は、複数のアドレス変換部により変換されたアドレスを表すアドレス信号を受け付けて、アドレス信号の一つを選択的にメモリへ出力するマルチプレクサと、識別情報に基づいてマルチプレクサによる出力対象となるアドレス信号を切り替えるスイッチと、を備える。【００１５】
また、上記の目的を達成する他の本発明は、プロセッサによるメモリ・アクセスを制御する装置において、複数のプロセッサにより実行される複数のＯＳ（Operating System）に個別に対応し、各プロセッサから出力されたアクセス命令を受け付け、アクセス命令において指定された論理アドレスを、メモリにおける当該プロセッサにより実行されるＯＳに対応付けられたメモリ領域の物理アドレスに変換し、ＯＳを起動するためのブート・プログラムが格納されたブート用メモリに対するプロセッサによるアクセス命令を受け付け、アクセス命令において指定された論理アドレスを、ブート用メモリの物理アドレスに変換する複数のアドレス変換部と、アクセス命令を出力したプロセッサの識別情報を取得し、複数のアドレス変換部のうちアクセス命令に対するアドレス変換を実行するアドレス変換部として、識別情報に基づいて特定されたプロセッサにより実行されるＯＳに対応するアドレス変換部を選択する選択部と、を備える。【００１６】
さらにまた、上記の目的を達成するさらに他の本発明は、複数のＯＳ（Operating System）を実装するコンピュータにおいて、複数のプロセッサと、メモリと、メモリ・アクセスを行ったプロセッサの識別情報を取得し、このプロセッサからのメモリ・アクセスにおけるアクセス先の論理アドレスを、メモリにおける識別情報に基づいて特定されたプロセッサにより実行されるＯＳに対応付けられたメモリ領域の物理アドレスに変換するアドレス変換装置と、を備える。
【発明の効果】
【００１７】
本発明によれば、プロセッサによるメモリ・アクセスをハードウェアで制御することにより、ソフトウェアに特別な仕組みを持たせることなく、かつオーバーヘッドの増大を抑制しながら、システムの仮想化を実現することができる。
【図面の簡単な説明】
【００１８】
【図１】本実施形態によるシステムの仮想化の概念を説明する図である。
【図２】本実施形態の仮想化システムにおけるハードウェアの構成例を示す図である。
【図３】本実施形態の仮想化装置による仮想化の手法を説明する図である。
【図４】本実施形態の仮想化装置の機能構成例を示す図である。
【図５】本実装例における各ＯＳのメモリ・マップと、各ＯＳにおけるメモリ空間のシステム・メモリへの割り当てと、各ＯＳにおけるブート領域のブート・メモリへの割り当てを示す図である。
【図６】本実施形態の仮想化システムの実装例の構成を示す図である。
【図７】図６に示した仮想化システムの実装例において、仮想化装置の設定が行われた様子を示す図である。
【図８】ホストＯＳ型による仮想化方式の概念を説明する図である。
【図９】ハイパーバイザー型による仮想化方式の概念を説明する図である。
【発明を実施するための形態】
【００１９】
以下、添付図面を参照して、本発明の実施形態について詳細に説明する。
＜システム構成＞
図１は、本実施形態によるシステムの仮想化の概念を説明する図である。
図１に示すように、本実施形態の仮想化システムは、ハードウェアとして、プロセッサ（プロセッサ・コア）１０と、仮想化装置２０とを備える。各ソフトウェア（ＯＳおよびアプリケーション）１００は、仮想化装置２０を介してプロセッサ１０により実行される。すなわち、本実施形態によれば、各ＯＳは、ハイパーバイザーやホストＯＳを介すことなく、ハードウェア上で直接動作する。
【００２０】
ここで、仮想化装置２０は、主としてプロセッサ１０からのメモリ・アクセスを制御する装置である。すなわち、仮想化装置２０は、各ＯＳに対して個別のアドレス空間を提供する。この仮想化装置２０の制御によって、各ＯＳは、物理的には共通のメモリを使用しながら、各々独立のアドレス空間にアクセスすることとなる。このようにして、本実施形態における仮想化環境が実現される。仮想化装置２０の具体的な構成および機能については後述する。
【００２１】
図２は、本実施形態の仮想化システムにおけるハードウェアの構成例を示す図である。
図２を参照すると、仮想化装置２０は、第１のローカルバス５１および第２のローカルバス５２に接続されている。第１のローカルバス５１には、プロセッサ１０およびｅＤＲＡＭ（Embedded DRAM）１２が接続されている。さらに、第１のローカルバス５１には、周辺装置（Peripheral Island Node）１３が接続されており、チップ・インターリンク１４が設けられている。なお、図２には、複数（不特定）のプロセッサ１０を記載しているが、本実施形態の対象となるシステムにおいては、１または複数個のプロセッサ１０を搭載して良く、また一つのプロセッサに複数のプロセッサ・コアを備えたマルチコア・プロセッサを搭載しても良い。
【００２２】
また、第２のローカルバス５２には、ブート・メモリ・コントローラ３１およびシステム・メモリ・コントローラ３２が接続されている。ブート・メモリ・コントローラ３１は、ブート・メモリ４１として用いられるＲＯＭ（Read Only Memory）を制御し、システム・メモリ・コントローラ３２は、システム・メモリ４２であるＤＲＡＭ（Dynamic Random Access Memory）を制御する。第２のローカルバス５２には、さらにｅＤＲＡＭ３３が接続されている。
【００２３】
上記のように構成したことにより、各プロセッサ１０、周辺装置１３およびチップ・インターリンク１４を介してシステムに接続された外部装置（図示せず）は、ブート・メモリ４１およびシステム・メモリ４２にアクセスする場合、いずれも仮想化装置２０を介してアクセスすることとなる。
【００２４】
また、図２に示すように、プロセッサ１０は、デコーダ１１を介して第１のローカルバス５１に接続されている。デコーダ１１は、接続しているプロセッサ１０が仮想化装置２０を介してメモリ・アクセスする際に、コントロール信号として、そのプロセッサ１０を識別するための固有の情報（プロセッサＩＤ等）およびプロセスの識別情報（プロセスＩＤ等）を仮想化装置２０に送信する。仮想化装置２０は、このコントロール信号に基づいて、いずれのプロセッサ１０からのアクセスかを識別する。なお、プロセッサ１０の種類によっては、プロセッサ１０自身がコントロール信号に相当する情報を出力するものがある。この場合、仮想化装置２０は、プロセッサ１０から出力される情報に基づいてプロセッサ１０およびプロセスを識別すればよいので、デコーダ１１を設ける必要はない。
【００２５】
図２に示すハードウェアは、単体の半導体チップ上に構成することができる。すなわち、本実施形態による仮想化システムは、ＳｏＣ（System on a chip）として実現し、提供することができる。また、ＳｏＣではなく、個々の要素（プロセッサ１０や仮想化装置２０等）を個別の電子回路として構成した装置として提供しても良い。
【００２６】
＜仮想化装置による仮想化＞
図３は、本実施形態の仮想化装置２０による仮想化の手法を説明する図である。
図３に示すように、仮想化装置２０は、プロセッサ１０からのメモリ・アクセスにおいて、アクセス先を示す論理アドレス（仮想アドレス）を含むアクセス命令と、コントロール信号とを受信する。また、アクセスがデータの書き込みを目的とするときは、メモリ（ブート・メモリ４１またはシステム・メモリ４２）に書き込まれるデータも受信する。仮想化装置２０は、システムに実装されるＯＳに応じて複数のアドレス変換用のテーブルを有する。そして、仮想化装置２０は、受信したコントロール信号に基づいて特定されるＯＳに対応するテーブルを用い、アクセス命令に含まれるアクセス先の論理アドレスを物理アドレスに変換する。この後、仮想化装置２０（アドレス変換装置）は、アドレス変換が行われたアクセス命令をブート・メモリ・コントローラ３１またはシステム・メモリ・コントローラ３２へ送信する。
【００２７】
一方、受信したデータについては、仮想化装置２０は、そのままブート・メモリ・コントローラ３１またはシステム・メモリ・コントローラ３２へ送信する。データを読み出すためのアクセスの場合は、メモリから読み出されたデータを、そのままプロセッサ１０へ返送する。なお、仮想化装置２０において、通過するデータに対して、アクセスの目的に影響を与えない特定の処理を行っても良い。例えば、メモリにデータを書き込む際には受信したデータに対して暗号化や圧縮等の処理を行ってメモリへ送信し、メモリからデータを読み出す際には読み出したデータを復号したり復元したりする処理を行ってプロセッサ１０へ送信することができる。
【００２８】
＜仮想化装置の機能構成＞
図４は、仮想化装置２０の機能構成例を示す図である。
図４に示すように、仮想化装置２０は、複数のアドレス・テーブル２１と、テーブル選択部２２と、Ｉ／Ｏテーブル２３と、排他制御部２４とを備える。アドレス・テーブル２１およびＩ／Ｏテーブル２３は、例えばプログラム可能なロジックやレジスタで構成され、実装されるＯＳの種類や個数、ブート・メモリ４１やシステム・メモリ４２の容量等のシステム構成に応じて設定される。
【００２９】
アドレス・テーブル２１は、プロセッサ１０からのアクセス命令においてアクセス先として指定された論理アドレスをメモリ（例えばシステム・メモリ４２）の物理アドレスに変換する、ハードウェアによる変換テーブル（アドレス変換部、変換処理部）である。上述したように、アドレス・テーブル２１は、システムに実装されるＯＳに応じて複数用意される。図示の例では、３種類のＯＳに対応して三つのアドレス・テーブル２１（２１ａ、２１ｂ、２１ｃ）が記載されている。各アドレス・テーブル２１には、ブート・メモリ４１へのアクセスに関するアドレス変換と、システム・メモリ４２へのアクセスに関するアドレス変換とを行うための設定がなされる。
【００３０】
図４において、ブート・メモリ４１を参照すると、複数のＯＳを起動するため、各ＯＳに対応付けられたブート領域（メモリ領域）が設定されている（図示の例では三つの領域ａ１、ａ２、ａ３）。各領域には、対応する０Ｓを起動させるためのブート・プログラムが格納されている。また、システム・メモリ４２を参照すると、各ＯＳに対応付けられたメモリ空間（メモリ領域）が設定されている（図示の例では三つのメモリ空間ｓ１、ｓ２、ｓ３）。各メモリ空間は、対応するＯＳによるメモリ・アクセスにおいて使用される領域である。したがって、例えばブート・メモリ４１のブート領域ａ１およびシステム・メモリ４２のメモリ空間ｓ１が特定のＯＳ１に対応付けられており、そのＯＳ１用にアドレス・テーブル２１ａが用意されるとすると、図４に示すように、アドレス・テーブル２１ａには、ブート領域ａ１およびメモリ空間ｓ１のアドレス変換を行うように設定される。
【００３１】
テーブル選択部２２は、ＯＳによるメモリ・アクセスに伴ってプロセッサ１０またはデコーダ１１から受信したコントロール信号に基づき、アクセスを行ったＯＳに対応するアドレス・テーブル２１を選択する。そして、このテーブル選択部２２により選択されたアドレス・テーブル２１により、メモリ・アクセスにおけるアクセス先のアドレスが変換される。
【００３２】
Ｉ／Ｏテーブル２３は、外部装置（入出力機器）に割り当てられたアドレスを管理するテーブルである。本実施形態では、外部装置への入出力に、ＭＭＩＯ（Memory-mapped I/O）を用いることとする。すなわち、外部装置はメモリと同一のアドレス空間に配置される。そこで、外部装置に割り当てられたアドレスを管理する必要があるため、Ｉ／Ｏテーブル２３が用意される。ここで、外部装置に割り当てられるアドレスは、ＯＳに関わらず１種類として良い。そのため、本実施形態において、Ｉ／Ｏテーブル２３は、アドレス・テーブル２１と異なり一つのみ用意されるものとする。
【００３３】
排他制御部２４は、いずれかのＯＳが外部装置にアクセスしている際に、他のＯＳがその外部装置にアクセスしないように、排他制御を行う。上記のように、本実施形態では、各ＯＳが外部装置にアクセスするために共通のＩ／Ｏテーブル２３を使用する。そこで、複数のＯＳから同一の外部装置へ重複したアクセス要求が行われないように、排他制御を行っている。なお、外部装置への入出力に関する排他制御は、第２のローカルバス５２に設けられるバス・アービタ（図示せず）で行っても良い。この場合、仮想化装置２０が排他制御部２４を備える必要はない。
【００３４】
＜実装例＞
次に、本実施形態の具体的な実装例を提示して、さらに説明する。
まず、本実装例の具体的な仕様を説明する。本実装例では、以下のようなシステムを考える。
・プロセッサ１０として、３２ビット（４ギガ・バイト（ＧＢ）のメモリ空間）のプロセッサ１０Ａ〜１０Ｄの四つを備える。
・メモリとして、４ＧＢのシステム・メモリ４２と、７５６キロ・バイト（ＫＢ）のブート・メモリ４１とを備える。
・ブート・メモリ・コントローラ３１およびシステム・メモリ・コントローラ３２へは、３４ビットでアドレスする。
・実装されるＯＳは、ＯＳ１〜ＯＳ３の３種類。
・ＯＳ１は、プロセッサ１０Ａおよび１０Ｂで動作し、システム・メモリ４２を２ＧＢ使用する。そして、ＯＳ１用にアドレス・テーブル２１ａが用意される。
・ＯＳ２は、プロセッサ１０Ｃで動作し、システム・メモリ４２を１ＧＢ使用する。そして、ＯＳ２用にアドレス・テーブル２１ｂが用意される。
・ＯＳ３は、プロセッサ１０Ｄで動作し、システム・メモリ４２を１ＧＢ使用する。そして、ＯＳ３用にアドレス・テーブル２１ｃが用意される。
【００３５】
図５は、本実装例における各ＯＳのメモリ・マップと、各ＯＳにおけるメモリ空間のシステム・メモリ４２への割り当てと、各ＯＳにおけるブート領域のブート・メモリ４１への割り当てを示す図である。
なお、図示のメモリ・マップおよびメモリへの割り当ての表において、一つのセルは、２５６ＫＢの領域を表すものとする。
【００３６】
図５を参照すると、ＯＳ１のメモリ・マップでは、０ｘ００００＿００００から０ｘ７ＦＦＦ＿ＦＦＦＦまでのアドレスにシステム・メモリ４２のメモリ空間が割り当てられている。また、０ｘ８０００＿００００から０ｘ８ＦＦＦ＿ＦＦＦＦまでのアドレスにＭＭＩＯが割り当てられている。また、０ｘＦ０００＿００００から０ｘＦＦＦＦ＿ＦＦＦＦまでのアドレスにブート・メモリ４１が割り当てられている。
【００３７】
同様に、ＯＳ２およびＯＳ３のメモリ・マップでは、０ｘ００００＿００００から０ｘ３ＦＦＦ＿ＦＦＦＦまでのアドレスにシステム・メモリ４２のメモリ空間に割り当てられている。そして、０ｘ８０００＿００００から０ｘ８ＦＦＦ＿ＦＦＦＦまでのアドレスにＭＭＩＯが割り当てられ、０ｘＦ０００＿００００から０ｘＦＦＦＦ＿ＦＦＦＦまでのアドレスにブート・メモリ４１が割り当てられている。
【００３８】
また、メモリ空間のシステム・メモリ４２への割り当ては、ＯＳ１のメモリ空間が０ｘ００００＿００００から０ｘ７ＦＦＦ＿ＦＦＦＦまでのアドレスに割り当てられ、ＯＳ２のメモリ空間が０ｘ８０００＿００００から０ｘＢＦＦＦ＿ＦＦＦＦまでのアドレスに割り当てられ、ＯＳ３のメモリ空間が０ｘＣ０００＿００００から０ｘＦＦＦＦ＿ＦＦＦＦまでのアドレスに割り当てられている。
【００３９】
また、ブート領域のブート・メモリ４１への割り当ては、ＯＳ１のブート領域が０ｘ００００＿００００から０ｘ０ＦＦＦ＿ＦＦＦＦまでのアドレスに割り当てられ、ＯＳ２のブート領域が０ｘ１０００＿００００から０ｘ１ＦＦＦ＿ＦＦＦＦまでのアドレスに割り当てられ、ＯＳ３のブート領域が０ｘ２０００＿００００から０ｘ２ＦＦＦ＿ＦＦＦＦまでのアドレスに割り当てられている。
【００４０】
図６は、本実施形態の仮想化システムの実装例の構成を示す図である。
図６に示す実装例では、テーブル選択部２２として、スイッチ・ボックス２２ａとマルチプレクサ２２ｂとが設けられている。マルチプレクサ２２ｂは、各アドレス・テーブル２１から出力されるアドレス信号（変換後のアドレスを表す信号）を受け付けて、そのうちの一つを出力する。スイッチ・ボックス２２ａは、デコーダ１１から受信したコントロール信号により特定されるプロセッサ１０に応じて、そのプロセッサ１０に対応するアドレス・テーブル２１から出力されるアドレス信号を出力させるように、マルチプレクサ２２ｂを制御する。また、本実装例では、プロセッサ１０がスイッチ・ボックス２２ａおよびアドレス・テーブル２１を設定するためのバスとして、ＩＰブロック・コントロール・バス（図示せず）を用いる。
【００４１】
また、本実装例では、外部装置への入出力に関する排他制御は、第２のローカルバス５２に設けられるバス・アービタで行うこととする。したがって、仮想化装置２０に排他制御部２４は設けられていない。
【００４２】
本実装例において、プロセッサ１０Ａとプロセッサ１０Ｂとは、対称型マルチプロセッサ（Symmetric Multiple Processor：ＳＭＰ）として構成され、同一のＯＳ１が動作し、アドレス変換には共通のアドレス・テーブル２１ａを使用する。また、プロセッサ１０Ｃは、ＯＳ２が動作し、アドレス変換にはアドレス・テーブル２１ｂを使用する。また、プロセッサ１０Ｄは、ＯＳ３が動作し、アドレス変換にはアドレス・テーブル２１ｃを使用する。図６に示す例では、各プロセッサ１０Ａ〜１０Ｄに、デコーダ１１Ａ〜１１Ｄが設けられている。ただし、上述したように、プロセッサ１０Ａ〜１０Ｄ自身がコントロール信号を出力する場合は、デコーダ１１Ａ〜１１Ｄは不要である。
【００４３】
ブート・メモリ４１は、ＯＳ１用のブート領域ａ１（０ｘ１Ｄ０００＿００００−０ｘ１ＤＦＦＦ＿ＦＦＦＦ）、ＯＳ２用のブート領域ａ２（０ｘ１Ｅ０００＿００００−０ｘ１ＥＦＦＦ＿ＦＦＦＦ）、ＯＳ３用のブート領域ａ３（０ｘ１Ｆ０００＿００００−０ｘ１ＦＦＦＦ＿ＦＦＦＦ）を有している。なお、図６においては、ブート・メモリ４１の各ブート領域ａ１、ａ２、ａ３のアドレスを３４ビットのシステム・アドレス空間で表現している。
【００４４】
システム・メモリ４２は、ＯＳ１用のメモリ空間ｓ１（０ｘ００００＿００００−０ｘ７ＦＦＦ＿ＦＦＦＦ）、ＯＳ２用のメモリ空間ｓ２（０ｘ８０００＿００００−０ｘＢＦＦＦ＿ＦＦＦＦ）、ＯＳ３用のメモリ空間ｓ３（０ｘＣ０００＿００００−０ｘＦＦＦＦ＿ＦＦＦＦ）を有している。
【００４５】
＜初期状態と設定動作＞
図６は、以上のように構成されたシステムの初期状態（テーブル選択部２２を構成するスイッチ・ボックス２２ａおよび各アドレス・テーブル２１ａ〜２１ｃにおいて仮想化を行うための設定がなされていない状態）を示している。本システムの仮想化装置２０は、この初期状態において、プロセッサ１０Ａが、ブート・メモリ４１の該当するブート領域にアクセスし、ブート・プログラムを読み込んで実行するように設定されている。
【００４６】
図６を参照すると、スイッチ・ボックス２２ａは、プロセッサ１０Ａのデコーダ１１Ａからのコントロール信号にしたがって、アドレス・テーブル２１ａを選択するように設定されている（図中、破線の記載を参照）。また、アドレス・テーブル２１ａには、ブート・メモリ４１のブート領域ａ１のアドレス（「ＲＯＭ  ＡＤＤ」および「ＲＯＭ  Ｍａｓｋ」）が設定されている。スイッチ・ボックス２２ａの他の設定、アドレス・テーブル２１ａにおけるシステム・メモリ４２のメモリ空間ｓ１のアドレス（「Ｓｙｓ  ＡＤＤ」および「Ｓｙｓ  Ｍａｓｋ」）の設定、およびアドレス・テーブル２１ｂ、２１ｃの設定はなされていない。
【００４７】
この状態で、電源投入等によりプロセッサ１０Ａのリセットが解除されると、デコーダ１１Ａからのコントロール信号によりスイッチ・ボックス２２ａがマルチプレクサ２２ｂを制御してアドレス・テーブル２１ａを選択する。そして、アドレス・テーブル２１ａの設定にしたがって、プロセッサ１０Ａがブート・メモリ４１のブート領域ａ１にアクセスし、ブート・プログラムを実行する。このブート・プログラムの実行により、スイッチ・ボックス２２ａの設定と、システム・メモリ４２のプロセッサ１０Ａに対応するメモリ空間ｓ１に関するアドレス・テーブル２１ａの設定と、他のプロセッサ１０Ｂ、１０Ｃに関する設定とが行われる。
【００４８】
図７は、図６に示した仮想化システムの実装例において、上記各種の設定が行われた様子を示す図である。
具体的な設定としては、まず、スイッチ・ボックス２２ａが、
デコーダ１１Ａからのコントロール信号によりアドレス・テーブル２１ａを選択し、
デコーダ１１Ｂからのコントロール信号によりアドレス・テーブル２１ａを選択し、
デコーダ１１Ｃからのコントロール信号によりアドレス・テーブル２１ｂを選択し、
デコーダ１１Ｄからのコントロール信号によりアドレス・テーブル２１ｃを選択するように設定される（図中、破線の記載を参照）。
【００４９】
また、図５に示したＯＳ１のメモリ・マップに基づき、アドレス・テーブル２１ａにおいて、システム・メモリ４２のメモリ空間ｓ１のアドレス０ｘ００００＿００００−０ｘ７ＦＦＦ＿ＦＦＦＦを使用するように設定が行われる。例えば、図７に示すように開始アドレス（「Ｓｙｓ  ＡＤＤ」）とデータ範囲を設定するマスク・データ（「Ｓｙｓ  Ｍａｓｋ」）を設定する。そして、プロセッサ１０Ａから出力されたアクセス命令に含まれるアドレス（論理アドレス）と開始アドレスおよびマスク・データとの論理積（ＡＮＤ）を求めれば、アドレスの変換ができる。
【００５０】
さらにまた、ＯＳ２用のアドレス・テーブル２１ｂについて、ブート・メモリ４１におけるブート領域ａ２のアドレスおよびシステム・メモリ４２におけるメモリ空間ｓ２のアドレスの設定が行われる。同様に、ＯＳ３用のアドレス・テーブル２１ｃについても、ブート・メモリ４１におけるブート領域ａ３のアドレスおよびシステム・メモリ４２におけるメモリ空間ｓ３のアドレスの設定が行われる。
【００５１】
上記の設定により、プロセッサ１０Ａは、システム・メモリ４２を使用可能となる。そこで、ブート・プログラムのシステム・メモリ４２へのコピー等を行って、ＯＳ１のブートを行う。
次に、プロセッサ１０Ｂのリセットが解除される。上述したように、本実装例においてプロセッサ１０Ｂとプロセッサ１０ＡとはＳＭＰであるので、プロセッサ１０Ｂは、プロセッサ１０Ａと同じアドレス・テーブル２１ａを使用する。
【００５２】
次に、プロセッサ１０Ｃのリセットが解除される。このとき、プロセッサ１０Ｃで動作するＯＳ２用のアドレス・テーブル２１ｂは、ブート・メモリ４１におけるブート領域ａ２のアドレスおよびシステム・メモリ４２におけるメモリ空間ｓ２のアドレスとも設定済みである。したがって、プロセッサ１０Ｃは、通常通り、ＯＳ２のブートを行う。
【００５３】
さらに、プロセッサ１０Ｄのリセットが解除される。このとき、プロセッサ１０Ｄで動作するＯＳ３用のアドレス・テーブル２１ｃは、ブート・メモリ４１におけるブート領域ａ３のアドレスおよびシステム・メモリ４２におけるメモリ空間ｓ３のアドレスとも設定済みである。したがって、プロセッサ１０Ｄは、通常通り、ＯＳ３のブートを行う。
【００５４】
なお、上記の例では、最初にプロセッサ１０Ａに対するリセットを解除することで、スイッチ・ボックス２２ａおよびアドレス・テーブル２１ａ、２１ｂ、２１ｃの設定を行ない、仮想化システム全体を起動させた。ここで、最初にリセットを解除するプロセッサ１０は、予めハードウェア設定により決定しておけば良く（図６参照）、特定のプロセッサ１０に限定されるものではない。また、起動時の設定動作は、各プロセッサ１０がメモリ（ブート・メモリ４１およびシステム・メモリ４２）の該当する領域にアクセス可能となり、各プロセッサ１０で動作する各ＯＳがシステム・メモリ４２を使用してブート可能となれば良く、上記実装例の手順には限定されない。
【００５５】
以上のように、本実施形態によれば、仮想化装置２０が、実装された各ＯＳからのメモリ・アクセスに対して、ＯＳごとに予め割り当てられたメモリ領域を使用するようにアドレス変換（論理アドレスから物理アドレスへの変換）を行う。このため、各ＯＳは、仮想化システムで使用されることを前提とした設計や改変を行うことなく、本実施形態により提供される仮想化環境で動作することができる。
【００５６】
また、本実施形態は、仮想化装置２０がメモリ・アクセスにおけるアドレス変換を行うため、ホストＯＳやハイパーバイザーのようなソフトウェアにより仮想化環境を実現する仕組みを必要としない。そのため、プロセッサにかかる負荷を軽減することができる。
【００５７】
以上、本実施形態について説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。上記実施形態に、種々の変更または改良を加えたものも、本発明の技術的範囲に含まれることは、特許請求の範囲の記載から明らかである。
【符号の説明】
【００５８】
１０…プロセッサ、２０…仮想化装置、２１…アドレス・テーブル、２２…テーブル選択部、３１…ブート・メモリ・コントローラ、３２…システム・メモリ・コントローラ、４１…ブート・メモリ、４２…システム・メモリ
【図１】
2012060148.tif 000003
【図２】
2012060148.tif 000004
【図３】
2012060148.tif 000005
【図４】
2012060148.tif 000006
【図５】
2012060148.tif 000007
【図６】
2012060148.tif 000008
【図７】
2012060148.tif 000009
【図８】
2012060148.tif 000010
【図９】
2012060148.tif 000011
【手続補正書】
【提出日】平成25年11月20日(2013.11.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサによるメモリ・アクセスを制御する装置において、
複数のプロセッサにより実行される複数のＯＳ（Operating System）に個別に対応し、各プロセッサから出力されたアクセス命令を受け付け、当該アクセス命令において指定された論理アドレスを、メモリにおける当該プロセッサにより実行されるＯＳに対応付けられたメモリ領域の物理アドレスに変換し、ＯＳを起動するためのブート・プログラムが格納されたブート用メモリに対する前記プロセッサによるアクセス命令を受け付け、当該アクセス命令において指定された論理アドレスを、当該ブート用メモリの物理アドレスに変換する複数のアドレス変換部と、
アクセス命令を出力したプロセッサの識別情報を取得し、前記複数のアドレス変換部のうち当該アクセス命令に対するアドレス変換を実行するアドレス変換部として、当該識別情報に基づいて特定されたプロセッサにより実行されるＯＳに対応するアドレス変換部を選択する選択部と、を備え、
前記選択部は、初期的に、前記複数のプロセッサのうちの予め定められた一つのプロセッサに関して、当該プロセッサの識別情報に基づき、当該一つのプロセッサにより実行されるＯＳに対応する前記アドレス変換部を選択するように設定され、
前記予め定められた一つのプロセッサにより実行されるＯＳに対応する前記アドレス変換部は、初期的に、当該一つのプロセッサにより実行されるＯＳを起動するためのブート・プログラムが格納された前記ブート用メモリのブート領域に関して、前記論理アドレスを当該ブート領域の物理アドレスに変換するように設定され、
前記予め定められた一つのプロセッサは、リセットが解除されると、前記選択部の初期設定により選択された前記アドレス変換部の初期設定によるアドレス変換に基づいて、前記ブート・プログラムを読み込んで実行することにより、前記選択部を、当該一つのプロセッサ以外のプロセッサに関して、各プロセッサの識別情報に基づき、各プロセッサにより実行されるＯＳに対応する前記アドレス変換部を選択するように設定し、前記予め定められた一つのプロセッサにより実行されるＯＳに対応する前記アドレス変換部を、当該一つのプロセッサにより実行されるＯＳに対応付けられたメモリ領域に関して、前記論理アドレスを当該メモリ領域の物理アドレスに変換するように設定し、前記予め定められた一つのプロセッサにより実行されるＯＳ以外のＯＳに対応する前記アドレス変換部を、各ＯＳを起動するためのブート・プログラムが格納された前記ブート用メモリのブート領域に関して、前記論理アドレスを当該ブート領域の物理アドレスに変換するように設定し、各ＯＳに対応付けられたメモリ領域に関して、前記論理アドレスを各メモリ領域の物理アドレスに変換するように設定する、装置。
【請求項２】
複数の前記プロセッサにより実行される各ＯＳからアクセス可能な外部装置に割り当てられたＩ／Ｏアドレスを管理する管理するＩ／Ｏアドレス管理手段と、
一つの前記ＯＳが前記外部装置にアクセスしている際に、他のＯＳからの当該外部装置へのアクセスを禁止する排他制御手段と、
をさらに備える、請求項１に記載の装置。
【請求項３】
前記アドレス変換部は、プログラム可能なロジックおよびレジスタで構成される、請求項１または請求項２に記載の装置。
【請求項４】
前記選択部は、
複数の前記アドレス変換部により変換されたアドレスを表すアドレス信号を受け付けて、当該アドレス信号の一つを選択的に前記メモリへ出力するマルチプレクサと、
前記識別情報に基づいて前記マルチプレクサによる出力対象となる前記アドレス信号を切り替えるスイッチと、
を備える、請求項１乃至請求項３のいずれかに記載の装置。
【請求項５】
複数のＯＳ（Operating System）を実装するコンピュータにおいて、
複数のプロセッサと、
メモリと、
メモリ・アクセスを行った前記プロセッサの識別情報を取得し、当該プロセッサからの当該メモリ・アクセスにおけるアクセス先の論理アドレスを、前記メモリにおける当該識別情報に基づいて特定されたプロセッサにより実行されるＯＳに対応付けられたメモリ領域の物理アドレスに変換するアドレス変換装置と、を備え、
前記アドレス変換装置は、
複数の前記ＯＳに個別に対応し、前記各プロセッサから出力されたアクセス命令を受け付け、当該アクセス命令において指定された論理アドレスを、メモリにおける当該プロセッサにより実行されるＯＳに対応付けられたメモリ領域の物理アドレスに変換し、ＯＳを起動するためのブート・プログラムが格納されたブート用メモリに対する前記プロセッサによるアクセス命令を受け付け、当該アクセス命令において指定された論理アドレスを、当該ブート用メモリの物理アドレスに変換する複数のアドレス変換部と、
アクセス命令を出力したプロセッサの識別情報を取得し、前記複数のアドレス変換部のうち当該アクセス命令に対するアドレス変換を実行するアドレス変換部として、当該識別情報に基づいて特定されたプロセッサにより実行されるＯＳに対応するアドレス変換部を選択する選択部と、を備え、
前記選択部は、初期的に、前記複数のプロセッサのうちの予め定められた一つのプロセッサに関して、当該プロセッサの識別情報に基づき、当該一つのプロセッサにより実行されるＯＳに対応する前記アドレス変換部を選択するように設定され、
前記予め定められた一つのプロセッサにより実行されるＯＳに対応する前記アドレス変換部は、初期的に、当該一つのプロセッサにより実行されるＯＳを起動するためのブート・プログラムが格納された前記ブート用メモリのブート領域に関して、前記論理アドレスを当該ブート領域の物理アドレスに変換するように設定され、
前記予め定められた一つのプロセッサは、リセットが解除されると、前記選択部の初期設定により選択された前記アドレス変換部の初期設定によるアドレス変換に基づいて、前記ブート・プログラムを読み込んで実行することにより、前記選択部を、当該一つのプロセッサ以外のプロセッサに関して、各プロセッサの識別情報に基づき、各プロセッサにより実行されるＯＳに対応する前記アドレス変換部を選択するように設定し、前記予め定められた一つのプロセッサにより実行されるＯＳに対応する前記アドレス変換部を、当該一つのプロセッサにより実行されるＯＳに対応付けられたメモリ領域に関して、前記論理アドレスを当該メモリ領域の物理アドレスに変換するように設定し、前記予め定められた一つのプロセッサにより実行されるＯＳ以外のＯＳに対応する前記アドレス変換部を、各ＯＳを起動するためのブート・プログラムが格納された前記ブート用メモリのブート領域に関して、前記論理アドレスを当該ブート領域の物理アドレスに変換するように設定し、各ＯＳに対応付けられたメモリ領域に関して、前記論理アドレスを各メモリ領域の物理アドレスに変換するように設定する、コンピュータ。
【国際調査報告】
2012060148.tif 000012
2012060148.tif 000013