JP2009266050A - 情報処理装置 - Google Patents
情報処理装置 Download PDFInfo
- Publication number
- JP2009266050A JP2009266050A JP2008116544A JP2008116544A JP2009266050A JP 2009266050 A JP2009266050 A JP 2009266050A JP 2008116544 A JP2008116544 A JP 2008116544A JP 2008116544 A JP2008116544 A JP 2008116544A JP 2009266050 A JP2009266050 A JP 2009266050A
- Authority
- JP
- Japan
- Prior art keywords
- address
- input
- output device
- central processing
- virtual device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】 マルチコア環境においては、複数のCPUが同時に稼動し、そのそれぞれが別のOS下にあるということが一般的である。一方I/O装置やアクセラレータIPなどのデバイスは個数が限られており、それら複数のCPUやOSで共有することが求められ、その際にデバイスを制御するソフトウェアであるデバイスドライバを変更せずに共有させること、実行性能を低下させないこと、が必要とされる。
【解決手段】 上記の課題に対して本発明においては、仮想マシン制御機構(VMM)が前記複数のOSからの前記デバイスに対するアクセスを振分け、それぞれのOSに該デバイスを占有しているイメージを与える。
【選択図】 図2
【解決手段】 上記の課題に対して本発明においては、仮想マシン制御機構(VMM)が前記複数のOSからの前記デバイスに対するアクセスを振分け、それぞれのOSに該デバイスを占有しているイメージを与える。
【選択図】 図2
Description
本発明は、情報処理装置、およびその装置上で動作するソフトウェアによって構成されるシステムに関するものである。
マイクロプロセッサにおける集積化が進み、マルチコアシステムとして中央処理装置(CPU)を複数個搭載したマイクロプロセッサが開発されている。それら複数のCPUを搭載したマイクロプロセッサ上でアプリケーションプログラムを動作させる場合、基本システムであるオペレーティングシステム(OS)も複数になり、それらのOS間でのデータのやりとりや、別のOS上にある機能を複数のCPUやOSの存在を意識させないで実行する方式が必要になってくる。このような状況において、上記のようなマルチプロセッサシステム上でOSとアプリケーションの実行を制御するシステムとしては、例えば、特許文献1に開示されるように、マルチプロセッサ上でシングルプロセッサ向けOSと既存のアプリケーションを動作させ並列処理を実現できるようにする従来技術がある。このように物理的なCPUなどシステム構成資源とOSやアプリケーションとの結びつきを自由にする機構は仮想化と呼ばれ、サーバなどの分野で広く用いられるようになってきている。OSと連携して仮想化を実現し管理する機構は仮想マシン制御機構(VMM)と呼ばれている。入出力 (以下、「I/O」と呼ぶ。)を対象として仮想化し、複数のOSが入出力デバイスを共有する方式については、例えば特許文献2に開示される従来技術がある。
また、I/Oを仮想化する方式には非特許文献1や非特許文献2に示されるように、大きく分けて、デバイスエミュレーション方式、仮想デバイスドライバ方式、直接I/O方式、の3つが存在する。デバイスエミュレーション方式は、I/Oデバイスのハードウェアをソフトウェアによって模擬する方法であり、ゲストOSのCPUからデバイスの制御レジスタにアクセスされるたびに制御をVMMに移行して動作をエミュレートするものである。この方式は、制御レジスタへのアクセスのたびにVMMに制御を移行する必要があり、原理的に実行オーバヘッドの大きいものである。
仮想デバイス方式は、抽象的な仮想デバイスを定義してそれ専用のデバイスドライバ(仮想ドライバ)をゲストOSにインストールして利用する方式である。ここで実際のI/Oデバイスは管理OSによって占有され、仮想ドライバがVMMを経由して管理OSからアクセスすることになる。
直接I/O方式は、ゲストOSからI/Oデバイスに直接アクセスする方式であり、ゲストOSが通常のデバイスドライバとほぼ同じものを用いて物理デバイスを制御する。この方式では単一のOSがそのI/Oデバイスを占有している場合と同等の性能が出せるが、一般には複数のゲストOS間でデバイスを共有することはできない。非特許文献3に示されるように、物理デバイス側に複数のレジスタセットを持つなどして直接方式で共有の機能をもたせる方式を採ろうとするものもある。
単一チップ上に多数のCPUやIPが集積されたマルチコアシステムでは、複雑化した機能が互いに関連し、同時に動作するため、一つの物理的なデバイスを複数のコアおよびそれらコア上で動作するOSで共有する状況が起こる。この共有において、共有の主体となるOSは、時分割で動作していて一時期には一つのOSだけがアクティブ状態であるということではなく、それぞれが常にアクティブで並列に動作してI/Oデバイスを使用するという状況である。そのような場合、実デバイスを制御するための制御レジスタ群は一つであるので、何らかの形でそれらに対するアクセスを調停し、1セットの制御レジスタ群を仮想的に複数に見せて、複数のOSからのアクセスを処理する必要がある。
上記のように、マルチコア環境においては、複数のCPUが同時に稼動し、そのそれぞれが別のOS下にあるということが一般的である。一方、I/O装置やアクセラレータIPなどのデバイスは個数が限られており、それら複数のCPUやOSで共有を行いたいという要求がある。そのような共有の状況としては、例えばハードディスクを装備したカーナビゲーションシステムにおいて、一つのハードディスク装置を地図データの格納と音楽データの格納に用い、それらを別々のプロセッサで動作する経路探索と音楽再生で同時にアクセスしたい場合などがある。
この要求を実現するために、上述したデバイスエミュレーション方式や仮想デバイス方式では、一つの物理デバイスを管理するOSは、管理OSとして専用のものを一つ置き、それに任せることになる。この方式ではデバイスの割当てなどは簡潔に行えるが、仮想マシン制御機構(VMM)層での処理が大きくなったり、管理OS以外のゲストとなるOSでデバイスドライバを変更したりすることが必要になる。また、管理OSを経由するため処理性能が落ちることがありうる。
直接I/O方式を用いればこのようなオーバヘッドは生じないが、現状ではI/Oデバイス側に複数の制御レジスタセットを持つなど共有用のハードウェア機構の実装を要求することになる。
上記の課題に対して本発明においては、第1のオペレーティングシステムを実行する第1の中央処理装置と、第2のオペレーティングシステムを実行する第2の中央処理装置と、前記第1及び第2の中央処理装置からアドレスが指定されアクセスされるメモリと、前記第1及び第2の中央処理装置からアドレスが指定されアクセスされる入出力装置とを具備し、前記入出力装置へのアクセスが前記第1のオペレーティングシステムに割り当てられている際において、前記第1の中央処理装置が前記入出力装置を指定するアドレスを出力した場合は、前記入出力装置を指定するアドレスを変換せずに前記入出力装置へアクセスし、前記第2の中央処理装置が前記入出力装置を指定するアドレスを出力した場合は、前記入出力装置を指定するアドレスを前記メモリ内に設けられた仮想デバイス領域に対応するアドレスに変換し、前記第2の中央処理装置が出力したデータを前記仮想デバイス領域に格納する。
または、複数のオペレーティングシステムを実行する複数の中央処理装置と、前記複数の中央処理装置からアドレスが指定されアクセスされるメモリと、前記複数の中央処理装置からアドレスが指定されアクセスされる制御レジスタを有する入出力装置と、前記複数の中央処理装置が出力するアドレスを所定の条件に従って変換するアドレス変換機構とを具備し、前記制御レジスタと前記メモリは、一つのアドレス空間に含まれ、前記メモリは、前記複数のオペレーティングシステムの夫々に対応する複数の仮想デバイス領域を有し、前記アドレス変換機構は、前記複数のオペレーティングシステムのうち前記入出力装置が割り当てられたオペレーティングシステムを実行する中央処理装置が前記制御レジスタを指定するアドレスを出力した場合、アドレス変換を行なわず、前記複数のオペレーティングシステムのうち前記入出力装置が割り当てられていないオペレーティングシステムを実行する中央処理装置から前記制御レジスタを指定するアドレスが出力された場合、前記複数の仮想デバイス領域のうち対応する一つを指定するアドレスに変換する。
本願において開示される発明によれば、マルチコア環境において、ソフトウェア開発に要する期間が短縮でき、また入出力処理の効率化が可能になる。
本明細書に開示される主な発明は、単一のチップにおいて複数の中央処理装置(CPU)が単一のメモリを共有し、それら複数のCPU上でそれぞれ複数のオペレーティングシステム(OS)が入出力装置(I/O)を共有しながら稼動する環境でのアプリケーションプログラムの実行における該I/Oの共有方式に関する技術である。また、本明細書に開示される主な発明の概略を先に述べると、複数のOSが同時にアクティブ状態で動作しており、それらが一つのデバイスを共有し、同時にアクセスする場合に、複数のOSからの該アクセスを振分け、それぞれのOSにI/Oデバイスを占有しているイメージを与えることで、入出力動作を並行して行える。この場合、仮想マシン制御機構(VMM)が前記複数のOSからの前記デバイスに対するアクセスを振分けるとよい。これにより、それぞれのOSで提供されるI/Oデバイスドライバは変更することなく使用でき、また、共有使用されるI/Oデバイスも特別な機構が不要であり、従来からのものをそのまま利用できる。さらに、仮想マシン制御機構(VMM)が制御レジスタのアクセス毎に介入しなくてもよく、処理オーバヘッドを低減できる。
言い換えれば、前記複数のOSからの前記デバイスに対するアクセスを振分け、以下の方式でそれぞれのOSに該デバイスを占有しているイメージを与えるようにする。
(1) 1つのデバイスを複数のOSで共有する場合に、物理アドレス変換機構(PAM)を使用してOSごとに必要なMMIO(メモリマップドIO)レジスタの領域アドレスを切替えることにより、デバイスに対するインスタンスを切替えて分配を行う。ここで、実際の制御レジスタ領域を実デバイス領域、切替え用に割当てた領域を仮想デバイス領域と呼ぶ。OS側のデバイスドライバからは、支配権を持ちデバイスが割当てられていれば実デバイス領域がアクセスでき、割当てられていなければ仮想デバイス領域がアクセスされるようにする。また、デバイス割当ての排他性は物理アドレス変換機構を用いて保証する。
(2) 仮想デバイス領域はデバイスを共有するOS毎に持つ。
(3) 仮想デバイス領域のデータにはそのデータが書込み用か否かの情報、書込み順序、関連する要素のアクセスの時間的な制約、書込み用データに対してはそのデータが書込まれたか否かの情報をもつ。
(4) VMM内にデバイススケジューラを持ち、このスケジューラはデバイス動作の終了通知や時間間隔に基づいて、共有されるデバイスをスケジュールして、共有している複数のOSに順次割当てる。
(5) 上記のデバイススケジューラによるデバイス割当ての切替えで、実デバイス領域と仮想デバイス領域のコピーをVMMにより行う。その際、書込みデータは前回の書込みから再度書込まれた場合にのみ仮想デバイス領域から実デバイス領域にコピーし、書込み順序に従って実デバイス領域に書込む。
(1) 1つのデバイスを複数のOSで共有する場合に、物理アドレス変換機構(PAM)を使用してOSごとに必要なMMIO(メモリマップドIO)レジスタの領域アドレスを切替えることにより、デバイスに対するインスタンスを切替えて分配を行う。ここで、実際の制御レジスタ領域を実デバイス領域、切替え用に割当てた領域を仮想デバイス領域と呼ぶ。OS側のデバイスドライバからは、支配権を持ちデバイスが割当てられていれば実デバイス領域がアクセスでき、割当てられていなければ仮想デバイス領域がアクセスされるようにする。また、デバイス割当ての排他性は物理アドレス変換機構を用いて保証する。
(2) 仮想デバイス領域はデバイスを共有するOS毎に持つ。
(3) 仮想デバイス領域のデータにはそのデータが書込み用か否かの情報、書込み順序、関連する要素のアクセスの時間的な制約、書込み用データに対してはそのデータが書込まれたか否かの情報をもつ。
(4) VMM内にデバイススケジューラを持ち、このスケジューラはデバイス動作の終了通知や時間間隔に基づいて、共有されるデバイスをスケジュールして、共有している複数のOSに順次割当てる。
(5) 上記のデバイススケジューラによるデバイス割当ての切替えで、実デバイス領域と仮想デバイス領域のコピーをVMMにより行う。その際、書込みデータは前回の書込みから再度書込まれた場合にのみ仮想デバイス領域から実デバイス領域にコピーし、書込み順序に従って実デバイス領域に書込む。
以下、図を参照しながら、本発明における複数OSでのI/Oデバイスの共有方法の詳細について説明する。図1は、本発明におけるソフトウェア、ハードウェア構成の一例である。対象となるマルチコアシステムは、単一のメモリMEM(100)、CPU1〜CPU3の複数のCPU(101〜103)とIO1〜IO2の入出力装置(104、105)によって構成されている。さらに、それぞれのCPUの上でOSがそれぞれOS1、OS2、OS3(151〜153)と稼動し、その上でそれぞれアプリケーション(APPL)1、2、3(161〜163)が稼動する構成である。110は、仮想マシン制御機構(VMM)110と呼ぶOSより下位レベルの制御プログラムであり、CPUやメモリI/Oなどの資源とOSとの結びつけを行う。ここに資源分割・分配機能(RDD)120をもつ。さらにCPUからメモリ転送路(MEMTS)130を介してメモリへのアクセスが行われ、このメモリアクセスにおいてアクセスアドレスの変換を行う物理アドレス管理機構(PAM)140をもつ。ここで、アプリケーション161〜163、OS1〜OS3(151〜153)、VMM(資源分割・分配機能120を含む)110は、ソフトウェアで構成されており、その他はハードウェアで構成されている。また、これらのソフトウェアは、メモリMEM(100)に格納されている。
資源分割・分配機能120は、アプリケーションやOSがメモリを参照するために用いるメモリアドレスをハードウェアによる物理アドレス管理機構PAM(140)と協調し、PAM内のエントリを設定して操作することにより、アドレス値に適当なオフセットを加算することで、アプリケーションやOSには意識されずに実際のメモリ100上での参照場所の物理配置をずらすことを可能にし、メモリを分割してCPU1用の領域、CPU2用の領域などとして分配する。
一方、I/Oデバイスの使用に関して、入出力装置はその機能を動作させるための制御レジスタ(図示されていない)を持っており、メモリマップドIO(MMIO)としてそれらの制御レジスタはメモリアドレスとして番地付けしてマッピングされる。よって、CPUはメモリであるかのようにメモリアドレスを出力することでI/Oデバイスにアクセスする。具体的には、I/Oデバイスは、OSに搭載されるデバイスドライバと呼ばれる入出力管理プログラムによってアクセス制御される。一般的にはI/Oデバイスに対する直接の操作は、それに対するデバイスドライバによってのみ行われる。このようなMMIOデバイスとしては、例えばハードディスク装置などがある。
ここで、例えばI/O装置(IO1)がOS1とOS2で共有される場合、IO1の制御レジスタとしてマッピングされている実デバイス領域がOS1とOS2の双方で共有されることになる。このため、VMMによって時分割でOS1、OS2に実デバイス領域の支配権を渡しながら入出力機能を実現することが求められる。
上記によりOS1、OS2が入出力装置IO1を共有して実行する例における図1の構成要素の詳細を図2に示して説明する。OS1、OS2に含まれるデバイスドライバDRV1、DRV2は、それぞれのデバイスに対して物理的な制御を行うプログラムである。また、VMMは、図1に示される資源分割・分配機構120の他に、共有デバイススケジューラ(CDC)250を有し、また、共有デバイススケジューラ内に領域制御情報(RCI)260を有する。共有デバイススケジューラ250は、複数のOSで共有されているデバイスに対する使用権の調停を行い、また、領域制御情報260は、領域制御レジスタに格納されている情報がどのように使用されるかの属性を示すものである。更に、本図では、CPU1、CPU2がアクセスするためのアドレス空間が示されている。アドレス空間には、メモリ100がマッピングされるメモリ領域と、メモリマップドIO(MMIO)の制御レジスタがマッピングされる実デバイス領域が含まれている。メモリ100がマッピングされたメモリ領域には、OS1(CPU1)のための仮想デバイス領域1(221)と、OS2(CPU2)のための仮想デバイス領域2(222)が設けられる。また、夫々の仮想デバイス領域の中にアクセスしたIOが使用中か否かを示すフラグを示す領域271、272が設けられる。また、夫々の仮想デバイス領域221、222に対応して書込み監視機構WOS(281、282)が設けられる。この書込み監視機構は、それぞれの仮想デバイス領域に対して書込み操作が行われたかどうかの監視を行う。
今、OS1がIO1に対して支配権を持ち、アクセスしているものとする。このとき、VMM(110)によってPAM(140)のエントリが設定されており、OS1からのIO1に対するデバイスアクセスはIO1の制御レジスタがマッピングされている実デバイス領域1(220)に対してなされるようになっている。すなわち、OS1内のデバイスドライバDRV1(230)からは、IO1の制御レジスタへアクセスするためのアドレス(231)が出力され、PAM(140)によって、実線矢印232に示すようにアドレス(231)は実デバイス領域1(220)に対してマップされ、そのアドレスによってデバイスが機能するようになっている。一方、デバイスに対して支配権のないOS2からIO1に対してアクセスがあると、OS2内のデバイスドライバDRV2(240)からIO1の制御レジスタへの参照が行われるが、このアクセスはPAM(140)によってアドレス(241)が所定のオフセット(オフセット2)を持つように変換され、点線矢印242として、IO1のOS2に対する仮想デバイス領域2(222)であるメモリ100へのアクセスへと変換される。支配権がない期間になされた仮想デバイス領域へのアクセス内容は、次に支配権を得た時に実デバイスに反映される。
図3は、PAM(140)によるそのアドレス変換の処理過程を説明するものである。PAMは、夫々のOS(CPU)に対応して、複数のエントリ370を有する。夫々のエントリ370の中には、I/Oデバイスの制御レジスタがマッピングされているメモリのアドレス範囲を特定するための下限アドレス310と上限アドレス320を格納すると共に、そのアドレス範囲に属するI/Oデバイスにアクセスする際に、デバイスドライバによって出力されるアドレス指定信号350に対して加えるべきオフセット値330を格納する。PAMでは入力されたアドレス指定信号(350)の値に対して、OS指定信号(340)によってそれがどのOSやCPUから出力されたものであるかを得、アドレス変換に用いるべきPAMのエントリ(370)を得る。デバイスドライバによってOSから出力されるアドレス指定信号(350)を比較器COMP(360)に入力し、アドレス範囲の上下限値(310、320)と比較することでエントリ370を選択し、このアドレス信号に適用すべきオフセット値(330)を与え、これらを加算することで真のアクセスアドレス(380)を出力する。このハードウェア機構により、複数のCPU・OSから出力されるMMIOデバイスの制御レジスタへのアクセスを振分けて調停することが可能になる。
OS1が対象のI/Oデバイス(IO1)に対する支配権をもっている場合、図2を用いて説明したとおり、PAMの設定によってOS1からのI/Oデバイス(IO1)に対するアクセス、すなわち、このデバイスの制御レジスタに対するアクセスは、対応する実デバイス領域(220)に対するものとしてマッピングされ、デバイスドライバからの制御レジスタアクセスは通常のデバイス操作と同じものとして扱われる。一方、このデバイス(IO1)に対する支配権のないOS2からの同デバイスに対するアクセスは、同じくPAMの設定によってオフセット値を加算することにより仮想デバイス領域2(222)に対するものとしてマッピングされ、この領域へのメモリアクセスとなっている。
以下、図4と図3および図2によって、PAMのエントリを設定することによる複数のOSからのI/Oへのアクセスすなわち、そのデバイスに対する実デバイス領域へのアクセスを調停する処理手順を示す。一例として、デバイスの支配権がOS1からOS2に変更される場合について説明する。
I/OデバイスIO1の支配権がOS1からOS2に変更される前は、OS1がIO1の支配権を有するため、IO1の制御レジスタのアドレスに対するオフセット値(330)の内容は0となっており、デバイスドライバから出力されるデバイス制御のアクセスのアドレス231がそのままアクセスアドレス(380)として出力される。次に、デバイススイッチの開始、即ち、支配権の変更は、PAMのエントリ内容の設定変更によって行われる。具体的には、まず、OS1の支配権の割当てを解除するため、実デバイス領域(220)のOS1に対応するPAMのエントリを変更してIO1に対する仮想デバイス領域1(221)を指すように設定する(410)。支配権を変更するに当たって、VMM(110)により、このオフセット値を図2のオフセット1(261)として設定し、点線矢印233に示すように、OS1用の仮想デバイス領域1(221)にマップされるようにする。図中の仮想デバイス領域1や仮想デバイス領域2は、図2の中で221、222としてメモリ内に確保されているものである。このような領域の確保やオフセット値の指定はシステム初期化時に行われる。
次に、実デバイス領域(220)の内容を仮想デバイス領域に1(221)にコピーするため、仮想デバイス領域1(221)のデバイス使用中のフラグ(271)をONとして設定し、OS1から当デバイスへのアクセスを待たせるようにする(420)。次に、実デバイス領域(220)から、このデバイス割当てが解除されるOS1に対する仮想デバイス領域1に制御レジスタの内容をコピーし、実デバイス領域(220)の内容と同一の内容を仮想デバイス領域1(221)に持たせる(430)。仮想デバイス領域1のデバイス使用中フラグ(271)をOFFにする(440)。これにより、OS1は、I/Oデバイスの支配権が無い場合でも、仮想デバイス領域1から制御レジスタの情報を読み出すことが可能となる。ここで、デバイス使用中フラグは、そのデバイスが現在動作中であるかどうかを示すフラグで実際のデバイスに備えられているものであり、制御レジスタの一部(270)としてとして実デバイス領域に存在する。本発明においては、その領域のコピーが仮想デバイス領域1、仮想デバイス領域2にそれぞれ271、272として保持されている。後述するように、支配権を持たないOSからはこのコピーの領域を参照して制御する。
次に、これから支配権を得るOS2が実デバイス領域にアクセスできるようにする。このためには、図4、470に示すように、現在PAMでオフセット値がオフセット2(262)となっているエントリを0に設定して、OS2からのI/Oデバイスの制御レジスタ領域へのアクセスのためのアドレスが実デバイス領域(220)に対するものとなるようにする。この操作によって、デバイスへの直接のアクセス権がOS1からOS2に移り、OS1からは仮想デバイス領域1へのアクセスとなり、OS2からは実デバイス領域となって実際のデバイスにアクセスできるようになる。ここで、OS1からアクセスできる領域を最初に実デバイス領域から仮想デバイス領域にマップするようにし、次にOS2からアクセスできる領域を実デバイス領域にマップする操作は、この順序で単一のVMMで実行されるため、当I/Oデバイスに対して複数のOSから同じ実デバイス領域をアクセスする状況は発生せず、ここでデバイスの排他制御が行われることになる。
さらに、これまでOS2で行われていた該I/Oデバイスへの仮想的なアクセスの結果を実デバイスに反映させる。支配権がない状態のときに仮想デバイス領域2に書込まれていたデバイスに対する操作を実デバイスに反映する必要がある。このため、支配権が移動したタイミングで仮想デバイス領域の内容を実デバイスに対して書込む。図4、460において、今回デバイスに対して支配権を持つOS2の仮想デバイス領域2から実デバイス領域にコピーすることがこれに相当する。また、このコピー操作に先立って、450において、仮想デバイス領域2(222)のデバイス使用中のフラグ(272)をONとして設定し、OS2から当デバイスへのアクセスを待たせるようにする。
上記において、VMMの中の管理情報として仮想デバイス領域の個々のデータに対してそれぞれ(1)アドレス、(2)サイズ、(3)書込みがなされるかどうか、(4)書込み順序、(5)関連するデータの書込みの時間的制約、という領域制御情報(260)を持つ。また、書込みデータに対してはさらに、個々の仮想デバイス領域について、データが以前の書込みから変化したかどうかを監視する書込み監視機構(281、282)を設ける。
460のコピー操作では、まず、状態変更が生じない、すなわちデバイスの状態など読出しのみがなされる操作に対するコマンドとなるデータを実デバイス領域に書込む。次に状態変更がなされるデータすなわちデバイスの状態を変更させる操作に対するコマンドとなるデータについて、以前の書込みから変化のあったものを書込む。これら書込みの順序は領域制御情報(250)内にある書込み順序情報によって行い、書込みデータ間に時間的な制約がある場合は、それを守って書込む。さらに、書込むデータは、支配権がない時に仮想デバイス領域に書込まれた場合に限ることとし、書込みがなされたかどうかを書込み監視機構(図2、281、282)によって行う。実際の動作においては、一例として、書込み対象となっているデータを、IO動作としては設定されない特別な値に初期化しておき、その値から変更があったかによって書込みが行われたかどうかを監視する方法などが採られる。
図5において仮想デバイス領域610から実デバイス領域620へのコピー操作を説明する。状態変更が生じない操作に対するコマンドとなるデータである状態変更無しデータ1(611)、状態変更無しデータ2(612)、状態変更無しデータ3(613)は、630によりそれぞれ、実デバイス領域620の対応する状態変更無しデータ1(621)、状態変更無しデータ2(622)、状態変更無しデータ3(623)の領域にコピーされるよう書込まれる。状態変更がなされる操作に対するコマンドとなるデータは、状態変更有りデータ1(614)が書込み監視機構において書込み有り(616)となっているので、実デバイス領域620の状態変更有りデータ1(624)として630によりコピーされる。状態変更有りデータ2(615)は書込み監視機構において書込み無し(617)となっているため、実デバイス領域620にはコピーされない。もし、617が書込み有りとなっている場合は、書込み順序(618、619)が示す順序にしたがって、状態変更有りデータ1(614)のコピー後に状態変更有りデータ2(615)をコピーする。
ここで、状態変更がなされる操作に対するコマンドとなるデータは、実際の物理的なデバイスに動作を発生させ、状態の変化を引起すものであるので、支配権のないOSからは同種の動作に対しては1度しか発行できず、またそれらを発生させる順序を保持する必要がある。このため、書込み監視を行い、また、書込みの順序を保持している。同種の書込み動作が行われると、この操作に対する終了報告がなされないことによって、以降の書込み動作が保留状態となる。
以上の操作により、これまで支配していないデバイスに対してなされていた操作が、支配権を得た時に実際のデバイスに反映され、以降、支配権を持ち真に実デバイス領域への通常の制御レジスタへの操作でデバイスドライバが機能することになる。最後に仮想デバイス領域のデバイス使用中フラグをOFFとする(480)。
共有デバイスの割当てに対するスケジューリングの処理過程は、図6に示すようになる。これは物理的に1つだけ存在するI/Oデバイスを使用する権利をスケジューリングして、それを同時にアクティブである複数のOSに対して順に割当てるようスケジューリングする共有デバイススケジューラ(図2、250)の処理アルゴリズムの一例である。
共有デバイススケジューラは、通常は割当て処理を行わないアイドル状態(500)にあり、タイマ割込みなどによって一定の間隔で共有対象となる入出力デバイス(本例ではIO1)の状態をチェックする。このチェックは例えば、デバイス自身に装備されている「使用中フラグ」(図2、270)を参照することによって行われる。この処理の際、VMM(図2、200)がこの制御を行うので、共有デバイススケジューラ自身は実デバイス領域にアクセスすることが可能となっている。
IOの処理が進行し、デバイスから終了割込みが発生した場合(510)、このような割込みは一旦VMMが捕捉し、割込み処理が開始される。520において割込みの要因を判定し、デバイス終了割込みの場合(521)、当該デバイスでの処理が終了しているので、支配権を他の(スケジューラが仮定している順序で次の)OSに移し(530)、この終了割込み自体は今までこのデバイスに対して支配権をもってきたOS(OS1)にそのまま送ることになる(540)。
一方、タイマ割込みである場合(522)、使用中フラグ(図2、270)を参照してデバイスが使用中であるかどうかを検査する(550)。使用中フラグがONでデバイスが使用中であるときは、スケジューラは何もせず当デバイスへのアクセス権は当該OSに設定されたままである(551)。使用中フラグがOFFでデバイスが使用中ではない場合(552)、530で行ったのと同様に、別のOSに支配権を渡す(560)。ここで、支配権を与える別のOSの選択には、本例で示したような、順に次のものに割当てる方法に限らず、あらかじめ指定された順序で交代に行う方法や、OSごとに他のOSに対する優先権を設定しその優先権に基づいて、その時点で最高の優先度をもつOSに与えるなどの方法がある。割込み要因がその他の場合(523)、該割込みを、それを受取って処理すべきOSに送る。
以上のようにして、本発明では、マルチコアシステムにおいて同時に稼動している複数のOSから、1つのデバイスを共有してアクセスするために、OSに備えられているデバイスドライバを変更することなく、そのまま稼動させることで実現できる。また、同時に動作している他のOSからの該デバイスに対するアクセスの影響を気にすることなく柔軟なアクセスを可能にすることができ、支配権の調停をハードウェアであるPAMを用いて行うため、VMMの介入する部分が少なくなり実行性能が低下しないようにできる。
100:メモリ、101・102・103:CPU、104・105:入出力機器、110:仮想マシン制御機構(VMM)、120:資源分割・分配機構、130:メモリ転送路、140:物理アドレス管理機構(PAM)、151・152・153:オペレーティングシステム、161・162・163:アプリケーション、220:実デバイス領域、221・222:仮想デバイス領域、230・240:デバイスドライバ、231・232・233・241・242:制御レジスタアクセスアドレス、250:共有デバイススケジューラ、260:領域制御情報、261・262:オフセット値、270・271・272:使用中フラグ、281・282:書込み監視機構、310:下限アドレスエントリ、320:上限アドレスエントリ、330:オフセット値、340:OS指定信号、350:アドレス指定信号、360:比較器、370:PAMのエントリ、380:真のアクセスアドレス、410:解除側PAM設定処理、420・440:解除側デバイス使用中フラグ設定処理、430:解除側コピー処理、450・480:割当て側デバイス使用中フラグ設定処理、460:割当て側コピー処理、470:割当て側PAM設定処理、500:アイドル状態、510:割込み発生、520:割込み要因に解析処理、521・522・523:割込み要因の区別、530・560:次のOSへの支配権の移行処理、540・570:割込みの転送処理、550:デバイスが使用中かの検査、551・552:使用中かどうかの検査結果、610:仮想デバイス領域、611・612・613・614・615:コマンドとなる制御用データ、616・617:書込み監視機構、618・619:書込み順序、620:実デバイス領域、621・622・623・624・625:コマンドとなる制御用データ。
Claims (13)
- 第1のオペレーティングシステムを実行する第1の中央処理装置と、
第2のオペレーティングシステムを実行する第2の中央処理装置と、
前記第1及び第2の中央処理装置からアドレスが指定されアクセスされるメモリと、
前記第1及び第2の中央処理装置からアドレスが指定されアクセスされる入出力装置とを具備し、
前記入出力装置へのアクセスが前記第1のオペレーティングシステムに割り当てられている際において、
前記第1の中央処理装置が前記入出力装置を指定するアドレスを出力した場合は、前記入出力装置を指定するアドレスを変換せずに前記入出力装置へアクセスし、
前記第2の中央処理装置が前記入出力装置を指定するアドレスを出力した場合は、前記入出力装置を指定するアドレスを前記メモリ内に設けられた仮想デバイス領域に対応するアドレスに変換し、前記第2の中央処理装置が出力したデータを前記仮想デバイス領域に格納することを特徴とする情報処理装置。 - 請求項1において、
前記情報処理装置は、前記入出力装置の終了通知又は所定の時間が経過した際に、前記入出力装置へアクセスが割り当てられるオペレーティングシステムを変更するための割り当てスケジューラを更に有することを特徴とする情報処理装置。 - 請求項2において、
前記入出力装置は、前記入出力装置を指定するアドレスで指定され、コマンドであるデータが書込まれる制御レジスタを有し、
前記情報処理装置は、前記中央処理装置から出力される前記制御レジスタを指定するアドレスを変換するアドレス変換機構を更に具備することを特徴とする情報処理装置。 - 請求項3において、
上記メモリは、前記第1のオペレーティングシステム及び前記第2のオペレーティングシステムの夫々に対応する仮想デバイス領域を有することを特徴とする情報処理装置。 - 請求項2において、
前記割り当てスケジューラは、仮想デバイス領域のデータに対して、そのデータが書込み用か否かの情報、書込み順序、および関連する要素間の書込みの時間間隔制約、の情報をもつことを特徴とする情報処理装置。 - 請求項5において、前記割り当てスケジューラによる割り当ての切替えに際して、割り当てが解除されたオペレーティングシステムに対応する仮想デバイス領域に前記入出力装置から、また新たに割当てられたオペレーティングシステムに対応する仮想デバイス領域から前記入出力装置へ、それぞれデータのコピーを行うことを特徴とする情報処理装置。
- 請求項6において、
前記情報処理装置は、前記仮想デバイス領域について、データが以前の書込みから変化したかどうかを監視する書込み監視機構を更に具備し、
前記割当てスケジューラによる割当ての切替えにおいて、前記仮想デバイス領域から前記入出力装置へデータのコピーを行うに際し、前記情報処理装置は、前記書込み監視機構の情報を参照し、前回の書込みから再度書込まれた場合にのみ、書込み順序に従って、前記入出力装置に書込むことを特徴とする情報処理装置。 - 請求項7において、
前記書込み監視機構は、前記仮想デバイス領域内に書込まれるデータとして使用されない値を用い、それが変更されたかどうかによって、データが以前の書込みから変化したかどうかを判定することを特徴とする情報処理装置。 - 複数のオペレーティングシステムを実行する複数の中央処理装置と、
前記複数の中央処理装置からアドレスが指定されアクセスされるメモリと、
前記複数の中央処理装置からアドレスが指定されアクセスされる制御レジスタを有する入出力装置と、
前記複数の中央処理装置が出力するアドレスを所定の条件に従って変換するアドレス変換機構とを具備し、
前記制御レジスタと前記メモリは、一つのアドレス空間に含まれ、
前記メモリは、前記複数のオペレーティングシステムの夫々に対応する複数の仮想デバイス領域を有し、
前記アドレス変換機構は、前記複数のオペレーティングシステムのうち前記入出力装置が割り当てられたオペレーティングシステムを実行する中央処理装置が前記制御レジスタを指定するアドレスを出力した場合、アドレス変換を行なわず、前記複数のオペレーティングシステムのうち前記入出力装置が割り当てられていないオペレーティングシステムを実行する中央処理装置から前記制御レジスタを指定するアドレスが出力された場合、前記複数の仮想デバイス領域のうち対応する一つを指定するアドレスに変換することを特徴とする情報処理装置。 - 請求項9において、
前記アドレス変換機構は、前記複数のオペレーティングシステムの夫々に対応した複数のエントリを有し、
前記複数のエントリの夫々は、前記制御レジスタが含まれるアドレス範囲と、加算すべきオフセット値を有することを特徴とする情報処理装置。 - 請求項9において、
前記複数の仮想デバイス領域の夫々は、対応するオペレーティングシステムが前記入出力装置の割り当てを解除された場合に、前記制御レジスタの内容がコピーされ、
前記制御レジスタは、前記入出力装置に割り当てられるオペレーティングシステムが変更された場合に、新規に割り当てられたオペレーティングシステムに対応する仮想デバイス領域の内容がコピーされることを特徴とする情報処理装置。 - 請求項11において、
前記複数の仮想デバイス領域の夫々は、使用中フラグを有し、
前記使用中フラグがオフされている場合は、アクセス可能であることを特徴とする情報処理装置。 - 請求項12において、
前記複数の仮想デバイス領域の一つの内容を前記制御レジスタへコピーしている間、及び、前記制御レジスタの内容を前記複数の仮想デバイス領域の一つへコピーしている間は、前記使用中フラグは、オンされており、アクセス不能とされることを特徴とする情報処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008116544A JP2009266050A (ja) | 2008-04-28 | 2008-04-28 | 情報処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008116544A JP2009266050A (ja) | 2008-04-28 | 2008-04-28 | 情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009266050A true JP2009266050A (ja) | 2009-11-12 |
Family
ID=41391804
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008116544A Pending JP2009266050A (ja) | 2008-04-28 | 2008-04-28 | 情報処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009266050A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013546111A (ja) * | 2010-12-23 | 2013-12-26 | インテル・コーポレーション | 仮想化によるスマートデバイスの直接的共有 |
JP2017515225A (ja) * | 2014-05-05 | 2017-06-08 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 仮想化のためのコヒーレント・アクセラレータ機能分離方法、システムおよびコンピュータ・プログラム |
-
2008
- 2008-04-28 JP JP2008116544A patent/JP2009266050A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013546111A (ja) * | 2010-12-23 | 2013-12-26 | インテル・コーポレーション | 仮想化によるスマートデバイスの直接的共有 |
JP2017515225A (ja) * | 2014-05-05 | 2017-06-08 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 仮想化のためのコヒーレント・アクセラレータ機能分離方法、システムおよびコンピュータ・プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7384534B2 (ja) | 並列処理装置、コンピュータ可読記憶装置および方法 | |
TWI417790B (zh) | 異質架構中之邏輯分割以及虛擬化 | |
US8943584B2 (en) | Centralized device virtualization layer for heterogeneous processing units | |
JP4322232B2 (ja) | 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム | |
JP5241737B2 (ja) | プロセッサ・システムにおいて命令レベルでのリソース割り当ての識別を可能にする方法および装置 | |
US7797699B2 (en) | Method and apparatus for scheduling virtual machine access to shared resources | |
JP4668166B2 (ja) | ゲストがメモリ変換されたデバイスにアクセスする方法及び装置 | |
JP5498505B2 (ja) | データバースト間の競合の解決 | |
JP2005501333A (ja) | プロセッサに譲渡するためのシステム | |
KR20070057692A (ko) | 정보 처리 장치, 프로세스 제어 방법, 및 컴퓨터 프로그램 | |
WO2010097925A1 (ja) | 情報処理装置 | |
US10459771B2 (en) | Lightweight thread synchronization using shared memory state | |
Kim et al. | Allowing shared libraries while supporting hardware isolation in multicore real-time systems | |
JP2013161299A (ja) | 情報処理装置、インタフェースアクセス方法 | |
JP2008021252A (ja) | 計算機システム及びアドレス割当方法 | |
US10459747B2 (en) | Exitless timer access for virtual machines | |
WO2020008757A1 (ja) | 仮想化環境におけるデバイスへのアクセス方法 | |
US8010963B2 (en) | Method, apparatus and program storage device for providing light weight system calls to improve user mode performance | |
JP2009266050A (ja) | 情報処理装置 | |
CN108845969B (zh) | 适用于不完全对称多处理微控制器的操作控制方法及操作*** | |
Sousa et al. | Runtime reconfigurable bus arbitration for concurrent applications on heterogeneous MPSoC architectures | |
Kim | Combining hardware management with mixed-criticality provisioning in multicore real-time systems | |
Wellings et al. | Beyond ada 2005: allocating tasks to processors in smp systems | |
TW201432461A (zh) | 在受控代碼中實現的高流通量低延遲使用者模式驅動程式 | |
WO2014016951A1 (ja) | 情報処理装置 |