(57)【要約】【課題】  マルチコア環境においては、複数のＣＰＵが同時に稼動し、そのそれぞれが別のＯＳ下にあるということが一般的である。一方Ｉ／Ｏ装置やアクセラレータＩＰなどのデバイスは個数が限られており、それら複数のＣＰＵやＯＳで共有することが求められ、その際にデバイスを制御するソフトウェアであるデバイスドライバを変更せずに共有させること、実行性能を低下させないこと、が必要とされる。【解決手段】  上記の課題に対して本発明においては、仮想マシン制御機構（ＶＭＭ）が前記複数のＯＳからの前記デバイスに対するアクセスを振分け、それぞれのＯＳに該デバイスを占有しているイメージを与える。【選択図】  図２
2009266050.tif 000002
【特許請求の範囲】
【請求項１】
第１のオペレーティングシステムを実行する第１の中央処理装置と、
第２のオペレーティングシステムを実行する第２の中央処理装置と、
前記第１及び第２の中央処理装置からアドレスが指定されアクセスされるメモリと、
前記第１及び第２の中央処理装置からアドレスが指定されアクセスされる入出力装置とを具備し、
前記入出力装置へのアクセスが前記第１のオペレーティングシステムに割り当てられている際において、
前記第１の中央処理装置が前記入出力装置を指定するアドレスを出力した場合は、前記入出力装置を指定するアドレスを変換せずに前記入出力装置へアクセスし、
前記第２の中央処理装置が前記入出力装置を指定するアドレスを出力した場合は、前記入出力装置を指定するアドレスを前記メモリ内に設けられた仮想デバイス領域に対応するアドレスに変換し、前記第２の中央処理装置が出力したデータを前記仮想デバイス領域に格納することを特徴とする情報処理装置。
【請求項２】
請求項１において、
前記情報処理装置は、前記入出力装置の終了通知又は所定の時間が経過した際に、前記入出力装置へアクセスが割り当てられるオペレーティングシステムを変更するための割り当てスケジューラを更に有することを特徴とする情報処理装置。
【請求項３】
請求項２において、
前記入出力装置は、前記入出力装置を指定するアドレスで指定され、コマンドであるデータが書込まれる制御レジスタを有し、
前記情報処理装置は、前記中央処理装置から出力される前記制御レジスタを指定するアドレスを変換するアドレス変換機構を更に具備することを特徴とする情報処理装置。
【請求項４】
請求項３において、
上記メモリは、前記第１のオペレーティングシステム及び前記第２のオペレーティングシステムの夫々に対応する仮想デバイス領域を有することを特徴とする情報処理装置。
【請求項５】
請求項２において、
前記割り当てスケジューラは、仮想デバイス領域のデータに対して、そのデータが書込み用か否かの情報、書込み順序、および関連する要素間の書込みの時間間隔制約、の情報をもつことを特徴とする情報処理装置。
【請求項６】
請求項５において、前記割り当てスケジューラによる割り当ての切替えに際して、割り当てが解除されたオペレーティングシステムに対応する仮想デバイス領域に前記入出力装置から、また新たに割当てられたオペレーティングシステムに対応する仮想デバイス領域から前記入出力装置へ、それぞれデータのコピーを行うことを特徴とする情報処理装置。
【請求項７】
請求項６において、
前記情報処理装置は、前記仮想デバイス領域について、データが以前の書込みから変化したかどうかを監視する書込み監視機構を更に具備し、
前記割当てスケジューラによる割当ての切替えにおいて、前記仮想デバイス領域から前記入出力装置へデータのコピーを行うに際し、前記情報処理装置は、前記書込み監視機構の情報を参照し、前回の書込みから再度書込まれた場合にのみ、書込み順序に従って、前記入出力装置に書込むことを特徴とする情報処理装置。
【請求項８】
請求項７において、
前記書込み監視機構は、前記仮想デバイス領域内に書込まれるデータとして使用されない値を用い、それが変更されたかどうかによって、データが以前の書込みから変化したかどうかを判定することを特徴とする情報処理装置。
【請求項９】
複数のオペレーティングシステムを実行する複数の中央処理装置と、
前記複数の中央処理装置からアドレスが指定されアクセスされるメモリと、
前記複数の中央処理装置からアドレスが指定されアクセスされる制御レジスタを有する入出力装置と、
前記複数の中央処理装置が出力するアドレスを所定の条件に従って変換するアドレス変換機構とを具備し、
前記制御レジスタと前記メモリは、一つのアドレス空間に含まれ、
前記メモリは、前記複数のオペレーティングシステムの夫々に対応する複数の仮想デバイス領域を有し、
前記アドレス変換機構は、前記複数のオペレーティングシステムのうち前記入出力装置が割り当てられたオペレーティングシステムを実行する中央処理装置が前記制御レジスタを指定するアドレスを出力した場合、アドレス変換を行なわず、前記複数のオペレーティングシステムのうち前記入出力装置が割り当てられていないオペレーティングシステムを実行する中央処理装置から前記制御レジスタを指定するアドレスが出力された場合、前記複数の仮想デバイス領域のうち対応する一つを指定するアドレスに変換することを特徴とする情報処理装置。
【請求項１０】
請求項９において、
前記アドレス変換機構は、前記複数のオペレーティングシステムの夫々に対応した複数のエントリを有し、
前記複数のエントリの夫々は、前記制御レジスタが含まれるアドレス範囲と、加算すべきオフセット値を有することを特徴とする情報処理装置。
【請求項１１】
請求項９において、
前記複数の仮想デバイス領域の夫々は、対応するオペレーティングシステムが前記入出力装置の割り当てを解除された場合に、前記制御レジスタの内容がコピーされ、
前記制御レジスタは、前記入出力装置に割り当てられるオペレーティングシステムが変更された場合に、新規に割り当てられたオペレーティングシステムに対応する仮想デバイス領域の内容がコピーされることを特徴とする情報処理装置。
【請求項１２】
請求項１１において、
前記複数の仮想デバイス領域の夫々は、使用中フラグを有し、
前記使用中フラグがオフされている場合は、アクセス可能であることを特徴とする情報処理装置。
【請求項１３】
請求項１２において、
前記複数の仮想デバイス領域の一つの内容を前記制御レジスタへコピーしている間、及び、前記制御レジスタの内容を前記複数の仮想デバイス領域の一つへコピーしている間は、前記使用中フラグは、オンされており、アクセス不能とされることを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、およびその装置上で動作するソフトウェアによって構成されるシステムに関するものである。
【背景技術】
【０００２】
マイクロプロセッサにおける集積化が進み、マルチコアシステムとして中央処理装置（ＣＰＵ）を複数個搭載したマイクロプロセッサが開発されている。それら複数のＣＰＵを搭載したマイクロプロセッサ上でアプリケーションプログラムを動作させる場合、基本システムであるオペレーティングシステム（ＯＳ）も複数になり、それらのＯＳ間でのデータのやりとりや、別のＯＳ上にある機能を複数のＣＰＵやＯＳの存在を意識させないで実行する方式が必要になってくる。このような状況において、上記のようなマルチプロセッサシステム上でＯＳとアプリケーションの実行を制御するシステムとしては、例えば、特許文献１に開示されるように、マルチプロセッサ上でシングルプロセッサ向けＯＳと既存のアプリケーションを動作させ並列処理を実現できるようにする従来技術がある。このように物理的なＣＰＵなどシステム構成資源とＯＳやアプリケーションとの結びつきを自由にする機構は仮想化と呼ばれ、サーバなどの分野で広く用いられるようになってきている。ＯＳと連携して仮想化を実現し管理する機構は仮想マシン制御機構（ＶＭＭ）と呼ばれている。入出力 (以下、「Ｉ／Ｏ」と呼ぶ。)を対象として仮想化し、複数のＯＳが入出力デバイスを共有する方式については、例えば特許文献２に開示される従来技術がある。
【０００３】
また、Ｉ／Ｏを仮想化する方式には非特許文献１や非特許文献２に示されるように、大きく分けて、デバイスエミュレーション方式、仮想デバイスドライバ方式、直接Ｉ／Ｏ方式、の３つが存在する。デバイスエミュレーション方式は、Ｉ／Ｏデバイスのハードウェアをソフトウェアによって模擬する方法であり、ゲストＯＳのＣＰＵからデバイスの制御レジスタにアクセスされるたびに制御をＶＭＭに移行して動作をエミュレートするものである。この方式は、制御レジスタへのアクセスのたびにＶＭＭに制御を移行する必要があり、原理的に実行オーバヘッドの大きいものである。
【０００４】
仮想デバイス方式は、抽象的な仮想デバイスを定義してそれ専用のデバイスドライバ（仮想ドライバ）をゲストＯＳにインストールして利用する方式である。ここで実際のＩ／Ｏデバイスは管理ＯＳによって占有され、仮想ドライバがＶＭＭを経由して管理ＯＳからアクセスすることになる。
【０００５】
直接Ｉ／Ｏ方式は、ゲストＯＳからＩ／Ｏデバイスに直接アクセスする方式であり、ゲストＯＳが通常のデバイスドライバとほぼ同じものを用いて物理デバイスを制御する。この方式では単一のＯＳがそのＩ／Ｏデバイスを占有している場合と同等の性能が出せるが、一般には複数のゲストＯＳ間でデバイスを共有することはできない。非特許文献３に示されるように、物理デバイス側に複数のレジスタセットを持つなどして直接方式で共有の機能をもたせる方式を採ろうとするものもある。
【０００６】
【特許文献１】特開２００３−３４５６１４号公報
【特許文献２】特開２００３−２０２９９９号公報
【非特許文献１】Intel Virtualization Technologyの全貌 第２回  日経ITプロ ２００６年 １１月
【非特許文献２】PRIMEQUEST仮想マシン機能 ホワイトペーパ  富士通株式会社  ２００７年４月
【非特許文献３】日経バイト  ２００５年１１月号 ２８ページ〜３３ページ
【発明の開示】
【発明が解決しようとする課題】
【０００７】
単一チップ上に多数のＣＰＵやＩＰが集積されたマルチコアシステムでは、複雑化した機能が互いに関連し、同時に動作するため、一つの物理的なデバイスを複数のコアおよびそれらコア上で動作するＯＳで共有する状況が起こる。この共有において、共有の主体となるＯＳは、時分割で動作していて一時期には一つのＯＳだけがアクティブ状態であるということではなく、それぞれが常にアクティブで並列に動作してＩ／Ｏデバイスを使用するという状況である。そのような場合、実デバイスを制御するための制御レジスタ群は一つであるので、何らかの形でそれらに対するアクセスを調停し、１セットの制御レジスタ群を仮想的に複数に見せて、複数のＯＳからのアクセスを処理する必要がある。
【０００８】
上記のように、マルチコア環境においては、複数のＣＰＵが同時に稼動し、そのそれぞれが別のＯＳ下にあるということが一般的である。一方、Ｉ／Ｏ装置やアクセラレータＩＰなどのデバイスは個数が限られており、それら複数のＣＰＵやＯＳで共有を行いたいという要求がある。そのような共有の状況としては、例えばハードディスクを装備したカーナビゲーションシステムにおいて、一つのハードディスク装置を地図データの格納と音楽データの格納に用い、それらを別々のプロセッサで動作する経路探索と音楽再生で同時にアクセスしたい場合などがある。
【０００９】
この要求を実現するために、上述したデバイスエミュレーション方式や仮想デバイス方式では、一つの物理デバイスを管理するＯＳは、管理ＯＳとして専用のものを一つ置き、それに任せることになる。この方式ではデバイスの割当てなどは簡潔に行えるが、仮想マシン制御機構（ＶＭＭ）層での処理が大きくなったり、管理ＯＳ以外のゲストとなるＯＳでデバイスドライバを変更したりすることが必要になる。また、管理ＯＳを経由するため処理性能が落ちることがありうる。
【００１０】
直接Ｉ／Ｏ方式を用いればこのようなオーバヘッドは生じないが、現状ではＩ／Ｏデバイス側に複数の制御レジスタセットを持つなど共有用のハードウェア機構の実装を要求することになる。
【課題を解決するための手段】
【００１１】
上記の課題に対して本発明においては、第１のオペレーティングシステムを実行する第１の中央処理装置と、第２のオペレーティングシステムを実行する第２の中央処理装置と、前記第１及び第２の中央処理装置からアドレスが指定されアクセスされるメモリと、前記第１及び第２の中央処理装置からアドレスが指定されアクセスされる入出力装置とを具備し、前記入出力装置へのアクセスが前記第１のオペレーティングシステムに割り当てられている際において、前記第１の中央処理装置が前記入出力装置を指定するアドレスを出力した場合は、前記入出力装置を指定するアドレスを変換せずに前記入出力装置へアクセスし、前記第２の中央処理装置が前記入出力装置を指定するアドレスを出力した場合は、前記入出力装置を指定するアドレスを前記メモリ内に設けられた仮想デバイス領域に対応するアドレスに変換し、前記第２の中央処理装置が出力したデータを前記仮想デバイス領域に格納する。
【００１２】
または、複数のオペレーティングシステムを実行する複数の中央処理装置と、前記複数の中央処理装置からアドレスが指定されアクセスされるメモリと、前記複数の中央処理装置からアドレスが指定されアクセスされる制御レジスタを有する入出力装置と、前記複数の中央処理装置が出力するアドレスを所定の条件に従って変換するアドレス変換機構とを具備し、前記制御レジスタと前記メモリは、一つのアドレス空間に含まれ、前記メモリは、前記複数のオペレーティングシステムの夫々に対応する複数の仮想デバイス領域を有し、前記アドレス変換機構は、前記複数のオペレーティングシステムのうち前記入出力装置が割り当てられたオペレーティングシステムを実行する中央処理装置が前記制御レジスタを指定するアドレスを出力した場合、アドレス変換を行なわず、前記複数のオペレーティングシステムのうち前記入出力装置が割り当てられていないオペレーティングシステムを実行する中央処理装置から前記制御レジスタを指定するアドレスが出力された場合、前記複数の仮想デバイス領域のうち対応する一つを指定するアドレスに変換する。
【発明の効果】
【００１３】
本願において開示される発明によれば、マルチコア環境において、ソフトウェア開発に要する期間が短縮でき、また入出力処理の効率化が可能になる。
【発明を実施するための最良の形態】
【００１４】
本明細書に開示される主な発明は、単一のチップにおいて複数の中央処理装置（ＣＰＵ）が単一のメモリを共有し、それら複数のＣＰＵ上でそれぞれ複数のオペレーティングシステム（ＯＳ）が入出力装置（Ｉ／Ｏ）を共有しながら稼動する環境でのアプリケーションプログラムの実行における該Ｉ／Ｏの共有方式に関する技術である。また、本明細書に開示される主な発明の概略を先に述べると、複数のＯＳが同時にアクティブ状態で動作しており、それらが一つのデバイスを共有し、同時にアクセスする場合に、複数のＯＳからの該アクセスを振分け、それぞれのＯＳにＩ／Ｏデバイスを占有しているイメージを与えることで、入出力動作を並行して行える。この場合、仮想マシン制御機構（ＶＭＭ）が前記複数のＯＳからの前記デバイスに対するアクセスを振分けるとよい。これにより、それぞれのＯＳで提供されるＩ／Ｏデバイスドライバは変更することなく使用でき、また、共有使用されるＩ／Ｏデバイスも特別な機構が不要であり、従来からのものをそのまま利用できる。さらに、仮想マシン制御機構（ＶＭＭ）が制御レジスタのアクセス毎に介入しなくてもよく、処理オーバヘッドを低減できる。
【００１５】
言い換えれば、前記複数のＯＳからの前記デバイスに対するアクセスを振分け、以下の方式でそれぞれのＯＳに該デバイスを占有しているイメージを与えるようにする。
（１） 1つのデバイスを複数のＯＳで共有する場合に、物理アドレス変換機構（ＰＡＭ）を使用してＯＳごとに必要なＭＭＩＯ（メモリマップドＩＯ）レジスタの領域アドレスを切替えることにより、デバイスに対するインスタンスを切替えて分配を行う。ここで、実際の制御レジスタ領域を実デバイス領域、切替え用に割当てた領域を仮想デバイス領域と呼ぶ。ＯＳ側のデバイスドライバからは、支配権を持ちデバイスが割当てられていれば実デバイス領域がアクセスでき、割当てられていなければ仮想デバイス領域がアクセスされるようにする。また、デバイス割当ての排他性は物理アドレス変換機構を用いて保証する。
（２） 仮想デバイス領域はデバイスを共有するＯＳ毎に持つ。
（３） 仮想デバイス領域のデータにはそのデータが書込み用か否かの情報、書込み順序、関連する要素のアクセスの時間的な制約、書込み用データに対してはそのデータが書込まれたか否かの情報をもつ。
（４） ＶＭＭ内にデバイススケジューラを持ち、このスケジューラはデバイス動作の終了通知や時間間隔に基づいて、共有されるデバイスをスケジュールして、共有している複数のＯＳに順次割当てる。
（５） 上記のデバイススケジューラによるデバイス割当ての切替えで、実デバイス領域と仮想デバイス領域のコピーをＶＭＭにより行う。その際、書込みデータは前回の書込みから再度書込まれた場合にのみ仮想デバイス領域から実デバイス領域にコピーし、書込み順序に従って実デバイス領域に書込む。
【００１６】
以下、図を参照しながら、本発明における複数ＯＳでのＩ／Ｏデバイスの共有方法の詳細について説明する。図１は、本発明におけるソフトウェア、ハードウェア構成の一例である。対象となるマルチコアシステムは、単一のメモリＭＥＭ（１００）、ＣＰＵ１〜ＣＰＵ３の複数のＣＰＵ（１０１〜１０３）とＩＯ１〜ＩＯ２の入出力装置（１０４、１０５）によって構成されている。さらに、それぞれのＣＰＵの上でＯＳがそれぞれＯＳ１、ＯＳ２、ＯＳ３（１５１〜１５３）と稼動し、その上でそれぞれアプリケーション（ＡＰＰＬ）１、２、３（１６１〜１６３）が稼動する構成である。１１０は、仮想マシン制御機構（ＶＭＭ）１１０と呼ぶＯＳより下位レベルの制御プログラムであり、ＣＰＵやメモリＩ／Ｏなどの資源とＯＳとの結びつけを行う。ここに資源分割・分配機能（ＲＤＤ)１２０をもつ。さらにＣＰＵからメモリ転送路（MEMTS)１３０を介してメモリへのアクセスが行われ、このメモリアクセスにおいてアクセスアドレスの変換を行う物理アドレス管理機構（ＰＡＭ）１４０をもつ。ここで、アプリケーション１６１〜１６３、ＯＳ１〜ＯＳ３（１５１〜１５３）、ＶＭＭ（資源分割・分配機能１２０を含む）１１０は、ソフトウェアで構成されており、その他はハードウェアで構成されている。また、これらのソフトウェアは、メモリＭＥＭ（１００）に格納されている。
【００１７】
資源分割・分配機能１２０は、アプリケーションやＯＳがメモリを参照するために用いるメモリアドレスをハードウェアによる物理アドレス管理機構ＰＡＭ（１４０）と協調し、ＰＡＭ内のエントリを設定して操作することにより、アドレス値に適当なオフセットを加算することで、アプリケーションやＯＳには意識されずに実際のメモリ１００上での参照場所の物理配置をずらすことを可能にし、メモリを分割してＣＰＵ１用の領域、ＣＰＵ２用の領域などとして分配する。
【００１８】
一方、Ｉ／Ｏデバイスの使用に関して、入出力装置はその機能を動作させるための制御レジスタ(図示されていない）を持っており、メモリマップドＩＯ（ＭＭＩＯ）としてそれらの制御レジスタはメモリアドレスとして番地付けしてマッピングされる。よって、ＣＰＵはメモリであるかのようにメモリアドレスを出力することでＩ／Ｏデバイスにアクセスする。具体的には、Ｉ／Ｏデバイスは、ＯＳに搭載されるデバイスドライバと呼ばれる入出力管理プログラムによってアクセス制御される。一般的にはＩ／Ｏデバイスに対する直接の操作は、それに対するデバイスドライバによってのみ行われる。このようなＭＭＩＯデバイスとしては、例えばハードディスク装置などがある。
【００１９】
ここで、例えばＩ／Ｏ装置（ＩＯ１）がＯＳ１とＯＳ２で共有される場合、ＩＯ１の制御レジスタとしてマッピングされている実デバイス領域がＯＳ１とＯＳ２の双方で共有されることになる。このため、ＶＭＭによって時分割でＯＳ１、ＯＳ２に実デバイス領域の支配権を渡しながら入出力機能を実現することが求められる。
【００２０】
上記によりＯＳ１、ＯＳ２が入出力装置ＩＯ１を共有して実行する例における図１の構成要素の詳細を図２に示して説明する。ＯＳ１、ＯＳ２に含まれるデバイスドライバＤＲＶ１、ＤＲＶ２は、それぞれのデバイスに対して物理的な制御を行うプログラムである。また、ＶＭＭは、図１に示される資源分割・分配機構１２０の他に、共有デバイススケジューラ（ＣＤＣ）２５０を有し、また、共有デバイススケジューラ内に領域制御情報（ＲＣＩ）２６０を有する。共有デバイススケジューラ２５０は、複数のＯＳで共有されているデバイスに対する使用権の調停を行い、また、領域制御情報２６０は、領域制御レジスタに格納されている情報がどのように使用されるかの属性を示すものである。更に、本図では、ＣＰＵ１、ＣＰＵ２がアクセスするためのアドレス空間が示されている。アドレス空間には、メモリ１００がマッピングされるメモリ領域と、メモリマップドＩＯ（ＭＭＩＯ）の制御レジスタがマッピングされる実デバイス領域が含まれている。メモリ１００がマッピングされたメモリ領域には、ＯＳ１（ＣＰＵ１）のための仮想デバイス領域１（２２１）と、ＯＳ２（ＣＰＵ２）のための仮想デバイス領域２（２２２）が設けられる。また、夫々の仮想デバイス領域の中にアクセスしたＩＯが使用中か否かを示すフラグを示す領域２７１、２７２が設けられる。また、夫々の仮想デバイス領域２２１、２２２に対応して書込み監視機構ＷＯＳ（２８１、２８２）が設けられる。この書込み監視機構は、それぞれの仮想デバイス領域に対して書込み操作が行われたかどうかの監視を行う。
【００２１】
今、ＯＳ１がＩＯ１に対して支配権を持ち、アクセスしているものとする。このとき、ＶＭＭ（１１０）によってＰＡＭ（１４０）のエントリが設定されており、ＯＳ１からのＩＯ１に対するデバイスアクセスはＩＯ１の制御レジスタがマッピングされている実デバイス領域１（２２０）に対してなされるようになっている。すなわち、ＯＳ１内のデバイスドライバＤＲＶ１（２３０）からは、ＩＯ１の制御レジスタへアクセスするためのアドレス（２３１）が出力され、ＰＡＭ（１４０）によって、実線矢印２３２に示すようにアドレス（２３１）は実デバイス領域１（２２０）に対してマップされ、そのアドレスによってデバイスが機能するようになっている。一方、デバイスに対して支配権のないＯＳ２からＩＯ１に対してアクセスがあると、ＯＳ２内のデバイスドライバＤＲＶ２（２４０）からＩＯ１の制御レジスタへの参照が行われるが、このアクセスはＰＡＭ（１４０）によってアドレス（２４１）が所定のオフセット（オフセット２）を持つように変換され、点線矢印２４２として、ＩＯ１のＯＳ２に対する仮想デバイス領域２（２２２）であるメモリ１００へのアクセスへと変換される。支配権がない期間になされた仮想デバイス領域へのアクセス内容は、次に支配権を得た時に実デバイスに反映される。
【００２２】
図３は、ＰＡＭ（１４０）によるそのアドレス変換の処理過程を説明するものである。ＰＡＭは、夫々のＯＳ（ＣＰＵ）に対応して、複数のエントリ３７０を有する。夫々のエントリ３７０の中には、Ｉ／Ｏデバイスの制御レジスタがマッピングされているメモリのアドレス範囲を特定するための下限アドレス３１０と上限アドレス３２０を格納すると共に、そのアドレス範囲に属するＩ／Ｏデバイスにアクセスする際に、デバイスドライバによって出力されるアドレス指定信号３５０に対して加えるべきオフセット値３３０を格納する。ＰＡＭでは入力されたアドレス指定信号（３５０）の値に対して、ＯＳ指定信号（３４０）によってそれがどのＯＳやＣＰＵから出力されたものであるかを得、アドレス変換に用いるべきＰＡＭのエントリ（３７０）を得る。デバイスドライバによってＯＳから出力されるアドレス指定信号（３５０）を比較器ＣＯＭＰ（３６０）に入力し、アドレス範囲の上下限値（３１０、３２０）と比較することでエントリ３７０を選択し、このアドレス信号に適用すべきオフセット値（３３０）を与え、これらを加算することで真のアクセスアドレス（３８０）を出力する。このハードウェア機構により、複数のＣＰＵ・ＯＳから出力されるＭＭＩＯデバイスの制御レジスタへのアクセスを振分けて調停することが可能になる。
【００２３】
ＯＳ１が対象のＩ／Ｏデバイス（ＩＯ１）に対する支配権をもっている場合、図２を用いて説明したとおり、ＰＡＭの設定によってＯＳ１からのＩ／Ｏデバイス（ＩＯ１）に対するアクセス、すなわち、このデバイスの制御レジスタに対するアクセスは、対応する実デバイス領域（２２０）に対するものとしてマッピングされ、デバイスドライバからの制御レジスタアクセスは通常のデバイス操作と同じものとして扱われる。一方、このデバイス（ＩＯ１）に対する支配権のないＯＳ２からの同デバイスに対するアクセスは、同じくＰＡＭの設定によってオフセット値を加算することにより仮想デバイス領域２（２２２）に対するものとしてマッピングされ、この領域へのメモリアクセスとなっている。
【００２４】
以下、図４と図３および図２によって、ＰＡＭのエントリを設定することによる複数のＯＳからのＩ／Ｏへのアクセスすなわち、そのデバイスに対する実デバイス領域へのアクセスを調停する処理手順を示す。一例として、デバイスの支配権がＯＳ１からＯＳ２に変更される場合について説明する。
【００２５】
Ｉ／ＯデバイスＩＯ１の支配権がＯＳ１からＯＳ２に変更される前は、ＯＳ１がＩＯ１の支配権を有するため、ＩＯ１の制御レジスタのアドレスに対するオフセット値（３３０）の内容は０となっており、デバイスドライバから出力されるデバイス制御のアクセスのアドレス２３１がそのままアクセスアドレス（３８０）として出力される。次に、デバイススイッチの開始、即ち、支配権の変更は、ＰＡＭのエントリ内容の設定変更によって行われる。具体的には、まず、ＯＳ１の支配権の割当てを解除するため、実デバイス領域（２２０）のＯＳ１に対応するＰＡＭのエントリを変更してＩＯ１に対する仮想デバイス領域１（２２１）を指すように設定する（４１０）。支配権を変更するに当たって、ＶＭＭ（１１０）により、このオフセット値を図２のオフセット１（２６１）として設定し、点線矢印２３３に示すように、ＯＳ１用の仮想デバイス領域１（２２１）にマップされるようにする。図中の仮想デバイス領域１や仮想デバイス領域２は、図２の中で２２１、２２２としてメモリ内に確保されているものである。このような領域の確保やオフセット値の指定はシステム初期化時に行われる。
【００２６】
次に、実デバイス領域（２２０）の内容を仮想デバイス領域に１（２２１）にコピーするため、仮想デバイス領域１（２２１）のデバイス使用中のフラグ（２７１）をＯＮとして設定し、ＯＳ１から当デバイスへのアクセスを待たせるようにする（４２０）。次に、実デバイス領域（２２０）から、このデバイス割当てが解除されるＯＳ１に対する仮想デバイス領域１に制御レジスタの内容をコピーし、実デバイス領域（２２０）の内容と同一の内容を仮想デバイス領域１（２２１）に持たせる（４３０）。仮想デバイス領域１のデバイス使用中フラグ（２７１）をＯＦＦにする（４４０）。これにより、ＯＳ１は、Ｉ／Ｏデバイスの支配権が無い場合でも、仮想デバイス領域１から制御レジスタの情報を読み出すことが可能となる。ここで、デバイス使用中フラグは、そのデバイスが現在動作中であるかどうかを示すフラグで実際のデバイスに備えられているものであり、制御レジスタの一部（２７０）としてとして実デバイス領域に存在する。本発明においては、その領域のコピーが仮想デバイス領域１、仮想デバイス領域２にそれぞれ２７１、２７２として保持されている。後述するように、支配権を持たないＯＳからはこのコピーの領域を参照して制御する。
【００２７】
次に、これから支配権を得るＯＳ２が実デバイス領域にアクセスできるようにする。このためには、図４、４７０に示すように、現在ＰＡＭでオフセット値がオフセット２（２６２）となっているエントリを０に設定して、ＯＳ２からのＩ／Ｏデバイスの制御レジスタ領域へのアクセスのためのアドレスが実デバイス領域（２２０）に対するものとなるようにする。この操作によって、デバイスへの直接のアクセス権がＯＳ１からＯＳ２に移り、ＯＳ１からは仮想デバイス領域１へのアクセスとなり、ＯＳ２からは実デバイス領域となって実際のデバイスにアクセスできるようになる。ここで、ＯＳ１からアクセスできる領域を最初に実デバイス領域から仮想デバイス領域にマップするようにし、次にＯＳ２からアクセスできる領域を実デバイス領域にマップする操作は、この順序で単一のＶＭＭで実行されるため、当Ｉ／Ｏデバイスに対して複数のＯＳから同じ実デバイス領域をアクセスする状況は発生せず、ここでデバイスの排他制御が行われることになる。
【００２８】
さらに、これまでＯＳ２で行われていた該Ｉ／Ｏデバイスへの仮想的なアクセスの結果を実デバイスに反映させる。支配権がない状態のときに仮想デバイス領域２に書込まれていたデバイスに対する操作を実デバイスに反映する必要がある。このため、支配権が移動したタイミングで仮想デバイス領域の内容を実デバイスに対して書込む。図４、４６０において、今回デバイスに対して支配権を持つＯＳ２の仮想デバイス領域２から実デバイス領域にコピーすることがこれに相当する。また、このコピー操作に先立って、４５０において、仮想デバイス領域２（２２２）のデバイス使用中のフラグ（２７２）をＯＮとして設定し、ＯＳ２から当デバイスへのアクセスを待たせるようにする。
【００２９】
上記において、ＶＭＭの中の管理情報として仮想デバイス領域の個々のデータに対してそれぞれ（１）アドレス、（２）サイズ、（３）書込みがなされるかどうか、（４）書込み順序、（５）関連するデータの書込みの時間的制約、という領域制御情報（２６０）を持つ。また、書込みデータに対してはさらに、個々の仮想デバイス領域について、データが以前の書込みから変化したかどうかを監視する書込み監視機構（２８１、２８２）を設ける。
【００３０】
４６０のコピー操作では、まず、状態変更が生じない、すなわちデバイスの状態など読出しのみがなされる操作に対するコマンドとなるデータを実デバイス領域に書込む。次に状態変更がなされるデータすなわちデバイスの状態を変更させる操作に対するコマンドとなるデータについて、以前の書込みから変化のあったものを書込む。これら書込みの順序は領域制御情報（２５０）内にある書込み順序情報によって行い、書込みデータ間に時間的な制約がある場合は、それを守って書込む。さらに、書込むデータは、支配権がない時に仮想デバイス領域に書込まれた場合に限ることとし、書込みがなされたかどうかを書込み監視機構（図２、２８１、２８２）によって行う。実際の動作においては、一例として、書込み対象となっているデータを、ＩＯ動作としては設定されない特別な値に初期化しておき、その値から変更があったかによって書込みが行われたかどうかを監視する方法などが採られる。
【００３１】
図５において仮想デバイス領域６１０から実デバイス領域６２０へのコピー操作を説明する。状態変更が生じない操作に対するコマンドとなるデータである状態変更無しデータ１（６１１）、状態変更無しデータ２（６１２）、状態変更無しデータ３（６１３）は、６３０によりそれぞれ、実デバイス領域６２０の対応する状態変更無しデータ１（６２１）、状態変更無しデータ２（６２２）、状態変更無しデータ３（６２３）の領域にコピーされるよう書込まれる。状態変更がなされる操作に対するコマンドとなるデータは、状態変更有りデータ１（６１４）が書込み監視機構において書込み有り（６１６）となっているので、実デバイス領域６２０の状態変更有りデータ１（６２４）として６３０によりコピーされる。状態変更有りデータ２（６１５）は書込み監視機構において書込み無し（６１７）となっているため、実デバイス領域６２０にはコピーされない。もし、６１７が書込み有りとなっている場合は、書込み順序（６１８、６１９）が示す順序にしたがって、状態変更有りデータ１（６１４）のコピー後に状態変更有りデータ２（６１５）をコピーする。
【００３２】
ここで、状態変更がなされる操作に対するコマンドとなるデータは、実際の物理的なデバイスに動作を発生させ、状態の変化を引起すものであるので、支配権のないＯＳからは同種の動作に対しては１度しか発行できず、またそれらを発生させる順序を保持する必要がある。このため、書込み監視を行い、また、書込みの順序を保持している。同種の書込み動作が行われると、この操作に対する終了報告がなされないことによって、以降の書込み動作が保留状態となる。
【００３３】
以上の操作により、これまで支配していないデバイスに対してなされていた操作が、支配権を得た時に実際のデバイスに反映され、以降、支配権を持ち真に実デバイス領域への通常の制御レジスタへの操作でデバイスドライバが機能することになる。最後に仮想デバイス領域のデバイス使用中フラグをＯＦＦとする（４８０）。
【００３４】
共有デバイスの割当てに対するスケジューリングの処理過程は、図６に示すようになる。これは物理的に１つだけ存在するＩ／Ｏデバイスを使用する権利をスケジューリングして、それを同時にアクティブである複数のＯＳに対して順に割当てるようスケジューリングする共有デバイススケジューラ（図２、２５０）の処理アルゴリズムの一例である。
【００３５】
共有デバイススケジューラは、通常は割当て処理を行わないアイドル状態（５００）にあり、タイマ割込みなどによって一定の間隔で共有対象となる入出力デバイス（本例ではＩＯ１）の状態をチェックする。このチェックは例えば、デバイス自身に装備されている「使用中フラグ」（図２、２７０）を参照することによって行われる。この処理の際、ＶＭＭ（図２、２００）がこの制御を行うので、共有デバイススケジューラ自身は実デバイス領域にアクセスすることが可能となっている。
【００３６】
ＩＯの処理が進行し、デバイスから終了割込みが発生した場合（５１０）、このような割込みは一旦ＶＭＭが捕捉し、割込み処理が開始される。５２０において割込みの要因を判定し、デバイス終了割込みの場合（５２１）、当該デバイスでの処理が終了しているので、支配権を他の（スケジューラが仮定している順序で次の）ＯＳに移し（５３０）、この終了割込み自体は今までこのデバイスに対して支配権をもってきたＯＳ（ＯＳ１）にそのまま送ることになる（５４０）。
【００３７】
一方、タイマ割込みである場合（５２２）、使用中フラグ（図２、２７０）を参照してデバイスが使用中であるかどうかを検査する（５５０）。使用中フラグがＯＮでデバイスが使用中であるときは、スケジューラは何もせず当デバイスへのアクセス権は当該ＯＳに設定されたままである（５５１）。使用中フラグがＯＦＦでデバイスが使用中ではない場合（５５２）、５３０で行ったのと同様に、別のＯＳに支配権を渡す（５６０）。ここで、支配権を与える別のＯＳの選択には、本例で示したような、順に次のものに割当てる方法に限らず、あらかじめ指定された順序で交代に行う方法や、ＯＳごとに他のＯＳに対する優先権を設定しその優先権に基づいて、その時点で最高の優先度をもつＯＳに与えるなどの方法がある。割込み要因がその他の場合（５２３）、該割込みを、それを受取って処理すべきＯＳに送る。
【００３８】
以上のようにして、本発明では、マルチコアシステムにおいて同時に稼動している複数のＯＳから、１つのデバイスを共有してアクセスするために、ＯＳに備えられているデバイスドライバを変更することなく、そのまま稼動させることで実現できる。また、同時に動作している他のＯＳからの該デバイスに対するアクセスの影響を気にすることなく柔軟なアクセスを可能にすることができ、支配権の調停をハードウェアであるＰＡＭを用いて行うため、ＶＭＭの介入する部分が少なくなり実行性能が低下しないようにできる。
【図面の簡単な説明】
【００３９】
【図１】システム構成全体概要を示した図。
【図２】詳細なシステム構成を示した図。
【図３】物理アドレス管理機構（ＰＡＭ）を示した図。
【図４】デバイス割当て切替え処理のフローを示した図。
【図５】仮想デバイス領域から実デバイス領域へのコピー操作を示した図。
【図６】デバイススケジューリング処理のフローを示した図。
【符号の説明】
【００４０】
１００：メモリ、１０１・１０２・１０３：ＣＰＵ、１０４・１０５：入出力機器、１１０：仮想マシン制御機構（ＶＭＭ）、１２０：資源分割・分配機構、１３０：メモリ転送路、１４０：物理アドレス管理機構（ＰＡＭ）、１５１・１５２・１５３：オペレーティングシステム、１６１・１６２・１６３：アプリケーション、２２０：実デバイス領域、２２１・２２２：仮想デバイス領域、２３０・２４０：デバイスドライバ、２３１・２３２・２３３・２４１・２４２：制御レジスタアクセスアドレス、２５０：共有デバイススケジューラ、２６０：領域制御情報、２６１・２６２：オフセット値、２７０・２７１・２７２：使用中フラグ、２８１・２８２：書込み監視機構、３１０：下限アドレスエントリ、３２０：上限アドレスエントリ、３３０：オフセット値、３４０：ＯＳ指定信号、３５０：アドレス指定信号、３６０：比較器、３７０：ＰＡＭのエントリ、３８０：真のアクセスアドレス、４１０：解除側ＰＡＭ設定処理、４２０・４４０：解除側デバイス使用中フラグ設定処理、４３０：解除側コピー処理、４５０・４８０：割当て側デバイス使用中フラグ設定処理、４６０：割当て側コピー処理、４７０：割当て側ＰＡＭ設定処理、５００：アイドル状態、５１０：割込み発生、５２０：割込み要因に解析処理、５２１・５２２・５２３：割込み要因の区別、５３０・５６０：次のＯＳへの支配権の移行処理、５４０・５７０：割込みの転送処理、５５０：デバイスが使用中かの検査、５５１・５５２：使用中かどうかの検査結果、６１０：仮想デバイス領域、６１１・６１２・６１３・６１４・６１５：コマンドとなる制御用データ、６１６・６１７：書込み監視機構、６１８・６１９：書込み順序、６２０：実デバイス領域、６２１・６２２・６２３・６２４・６２５：コマンドとなる制御用データ。
【図１】
2009266050.tif 000003
【図２】
2009266050.tif 000004
【図３】
2009266050.tif 000005
【図４】
2009266050.tif 000006
【図５】
2009266050.tif 000007
【図６】
2009266050.tif 000008