JP2011248551A - アクセス制御装置 - Google Patents

アクセス制御装置 Download PDF

Info

Publication number
JP2011248551A
JP2011248551A JP2010119969A JP2010119969A JP2011248551A JP 2011248551 A JP2011248551 A JP 2011248551A JP 2010119969 A JP2010119969 A JP 2010119969A JP 2010119969 A JP2010119969 A JP 2010119969A JP 2011248551 A JP2011248551 A JP 2011248551A
Authority
JP
Japan
Prior art keywords
access
virtualization
inquiry
virtual
compatible 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
Application number
JP2010119969A
Other languages
English (en)
Inventor
Yoshihiro Kubo
善弘 久保
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2010119969A priority Critical patent/JP2011248551A/ja
Publication of JP2011248551A publication Critical patent/JP2011248551A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Bus Control (AREA)

Abstract

【課題】複数のOSから共有されるI/O仮想化対応デバイスに使用効率を高くする。
【解決手段】受信手段511が、OSから送られてくるアクセス可否問い合わせであって、I/O仮想化対応デバイスに対するアクセスの可否を問い合わせるアクセス可否問い合わせを受信する。判定手段512が、受信手段511で受信したアクセス可否問い合わせに応答して上記I/O仮想化対応デバイスに対するアクセスが可能か否かを、管理しているI/O仮想化デバイスに対するアクセス状況に基づいて判定する。そして、アクセス可能と判定した場合には問い合わせ元のOSに対してアクセス許可を通知し、アクセス不可能と判定した場合には問い合わせ元のOSに対してアクセス不可を通知する。
【選択図】図4

Description

本発明は、入出力仮想化(I/O仮想化)に対応したI/Oデバイスを有するコンピュータシステムに関し、特に、複数のオペレーティングシステム(OS)からI/Oデバイスを共有する際のアクセス制御技術に関する。
プロセッサ(CPU)やメモリなどから構成される物理的には1台のコンピュータを、仮想マシンモニタやハイパーバイザなどの仮想化ソフトウェアを利用して論理的に分割し、複数台のコンピュータに見せかけるということは従来から行われている(例えば、特許文献1参照)。なお、1台のコンピュータを論理的に分割することにより得られるコンピュータのことを、ここでは仮想ハードウェアと呼ぶ。
仮想ハードウェアにはそれぞれ異なるOS(仮想OS)が搭載され、各OSはそれぞれ独立してI/Oデバイスをアクセスする。その際、複数の仮想OSから同一のI/Oデバイスを共用できるようにするため、ハイパーバイザなどの仮想化ソフトウェアにおいて、I/Oデバイスの管理処理や、アクセス要求に対する調停処理が行われる。即ち、複数の仮想OS上では、それぞれが持つメモリ空間上に同一のI/Oデバイスをマップすることはできても、同一のI/Oデバイスに複数のアドレスを重複して割り振ることはできないため、各仮想OSが認識する上記I/Oデバイスのアドレスにズレが生じる。I/Oデバイスの管理処理では、このアドレスのズレを補正する処理を行う。また、アクセス要求に対する調停処理では、各仮想OSからの同一I/Oデバイスに対するアクセス処理を一本化するための処理が行われる。
また、近年、仮想化ソフトウェアが備えていたI/Oデバイスの管理機能や、アクセス要求に対する調停機能などのI/Oデバイスを共有するための支援機能をI/Oデバイス自身に搭載することで、物理的には1つのI/Oデバイスを、複数の仮想OSからあたかもそれ自身の持つI/Oデバイスと認識できるようにしたI/Oデバイスが提案されている。このようなI/Oデバイスは、I/O仮想化対応のI/Oデバイスと呼ばれる。なお、PCI(Peripheral Component Interconnect)デバイス側で仮想化をサポートする規格として、Single Root I/O Virtualization(SR-IOV)が知られている。
特開2008−269177号公報
複数の仮想OSから1つのI/Oデバイスを共有する方法の内、仮想化ソフトウェアを介してI/Oデバイスを共有する方法は、仮想化ソフトウェアのオーバヘッドが大きく、I/Oデバイスを効率的に使用できないという問題がある。また、I/O仮想化対応のI/Oデバイスを利用する方法は、ハードウェアによる処理であるため、仮想化ソフトウェアを利用する場合に比較してI/Oデバイスを効率的に使用することができる。しかし、この方法は、I/Oデバイス自身でアクセス要求に対する調停処理を行っており、調停処理を行っている間、I/Oデバイス本来の処理である入出力処理を行うことができないため、I/Oデバイスの利用効率を十分に高いものにすることが難しいという問題がある。つまり、I/Oデバイスが使用されていない状態であっても、アクセス要求があった場合、常に調停処理が実施されるため、その間、I/Oデバイス本来の処理を行うことができなくなってしまう。
[発明の目的]
そこで、本発明の目的は、複数のOSからI/Oデバイスを共有する際、I/Oデバイスの利用効率を十分に高くすることが難しかったという課題を解決したアクセス制御装置を提供することにある。
本発明にかかる第1のアクセス制御装置は、
I/O仮想化対応デバイスを共有するOSから送られてくるアクセス可否問い合わせであって、前記I/O仮想化対応デバイスに対するアクセスの可否を問い合わせるアクセス可否問い合わせを受信する受信手段と、
該受信手段で受信したアクセス可否問い合わせに応答して前記I/O仮想化対応デバイスに対するアクセスが可能か否かを、自装置で管理している前記I/O仮想化対応デバイスに対するアクセス状況に基づいて判定し、アクセス可能と判定した場合には問い合わせ元の前記OSに対してアクセス許可を通知し、アクセス不可能と判定した場合には問い合わせ元の前記OSに対してアクセス不可を通知する判定手段とを備える。
本発明に係るアクセス制御方法は、
受信手段が、I/O仮想化対応デバイスを共有するOSから送られてくるアクセス可否問い合わせであって、前記I/O仮想化対応デバイスに対するアクセスの可否を問い合わせるアクセス可否問い合わせを受信し、
判定手段が、前記受信手段で受信したアクセス可否問い合わせに応答して前記I/O仮想化対応デバイスに対するアクセスが可能か否かを、管理している前記I/O仮想化対応デバイスのアクセス状況に基づいて判定し、アクセス可能と判定した場合には問い合わせ元の前記OSに対してアクセス許可を通知し、アクセス不可能と判定した場合には問い合わせ元の前記OSに対してアクセス不可を通知する。
本発明にかかるプログラムは、
コンピュータを、
I/O仮想化対応デバイスを共有するOSから送られてくるアクセス可否問い合わせであって、前記I/O仮想化対応デバイスに対するアクセスの可否を問い合わせるアクセス可否問い合わせを受信する受信手段、
該受信手段で受信したアクセス可否問い合わせに応答して前記I/O仮想化対応デバイスに対するアクセスが可能か否かを、管理している前記I/O仮想化対応デバイスのアクセス状況に基づいて判定し、アクセス可能と判定した場合には問い合わせ元の前記OSに対してアクセス許可を通知し、アクセス不可能と判定した場合には問い合わせ元の前記OSに対してアクセス不可を通知する判定手段として機能させる。
本発明によれば、複数のOSによって共有されるI/O仮想化対応デバイスの利用効率を高いものにすることができる。
本発明の一実施の形態としてのPCI Expressシステムの構成例を示すブロック図である。 PCI Expressスイッチ500の構成例を示すブロック図である。 コンフィグレーション情報記憶部520の内容例を示す図である。 アクセス制御部510の構成例を示す図である。 アクセス可否問い合わせ、アクセス終了通知、シーケンスアクセス開始通知の構成例を示す図である。 実施の形態の動作を説明するための図である。 仮想OS#2がEP600に対してシーケンスアクセスを行う際の動作を示す図である。 PCI Expressスイッチ500aの構成例を示すブロック図である。
次に、本発明の実施の形態について図面を参照して詳細に説明する。
図1を参照すると、本発明の一実施の形態としてのPCI
Express(PCIe)システムが示されている。
同図に示すように、PCI Expressシステムは、CPU(Central Processing Unit)100と、CPU100上に仮想化された複数の仮想OS200-1〜200-Nと、ルートコンプレックス(Root complex)300と、PCI Expressスイッチ400,500と、EP(End Point)600,700とを備えている。なお、以下の説明では、仮想OS200-1〜200-Nを仮想OS#1〜#Nと記す場合もある。また、同図では図示していないが、CPU100上には、仮想OS#1〜#Nを制御するホストOSも搭載されている。
PCI Expressシステムに設けられている2つのEP600,700の内、EP600はI/O仮想化に対応したI/Oデバイスであり、EP700はI/O仮想化に対応していない一般的なI/Oデバイスである。I/O仮想化に対応しているEP600は、PF部(物理機能部)800と、複数のVF部(仮想機能部)900-1〜900-Nとを備えている。
EP600内のN個のVF部900-1〜900-N(VF部#1〜#Nと記す場合もある)は、それぞれ仮想OS#1〜#Nに対応しており、対応する仮想OS#1〜#Nが認識している自EP600のアドレスを保持している。言い換えれば、対応している仮想OS#1〜#Nが、それ自身に割り当てられているアドレス空間内のどの部分にEP600をマップしているのかを示す情報(アドレス情報)を保持している。そして、PCI
Expressスイッチ500を介して仮想OSから一連の命令が或るアドレス宛てに送られてきた際には、上記アドレスと自VF部#1〜#Nで保持しているアドレス情報とを比較し、両者が一致する場合にはそれをPF部800に渡し、不一致の場合には破棄する。PF部800は、VF部#1〜#Nから渡された一連の命令に従った処理を行う。なお、各VF部#1〜#Nには、システムを起動した際に行われるコンフィグレーション処理によって対応する仮想OS#1〜#Nが認識している自EP600のアドレス情報が記録される。また、仮想OSからの一連の命令とは、次のようなものである。コンピュータにおいて、仮想OSがI/Oデバイス(EP)を動作させるためには、デバイスドライバが必要である。デバイスドライバは、仮想OSからのI/Oデバイスに対する、ある要求(例えば、プリンタに対する印刷要求など)を、I/Oデバイスを要求通り動作させるための命令列に変換する。ここでは、デバイスドライバによって変換された命令列を、仮想OSからの一連の命令列といっている。また、この一連の命令列を使用してEPをアクセスすることをシーケンスアクセスと呼ぶことにする。
また、2つのPCI Expressスイッチ400,500の内、PCI Expressスイッチ400は、一般的なPCI Expressのデバイスである。これに対して、PCI Expressスイッチ500は、本発明に係るアクセス制御機能を備えたPCI Expressスイッチである。
図2を参照すると、PCI Expressスイッチ500は、アクセス制御部510と、コンフィグレーション情報記憶部520と、PCI Expressポート530〜532と、PCI-PCIブリッジ540〜542と、PCIバス550とを備えている。なお、PCI Expressポート530にはPCI
Expressスイッチ400が接続され、PCI Expressポート531にはEP600が接続されている。
コンフィグレーション情報記憶部520には、PCI Expressスイッチ500に関するデバイス情報が記録されている。より具体的には、図3に示すように、自デバイスのPCIコンフィグレーション空間521に関する情報と、PCI Express拡張コンフィグレーション空間522に関する情報とが記録されている。本実施の形態は、PCI Express拡張コンフィグレーション空間522にアクセス制御レジスタ機能部523を備えていることを特徴としている。このアクセス制御レジスタ機能部523には、EP600に対するアクセス制御を実施するアクセス制御部510の所在を示す情報が記録されている。本実施の形態では、アクセス制御部510の所在を示す情報として、PCI Expressポート530の所在を示す情報が記録されているとする。このコンフィグレーション情報記憶部520に記録されている情報は、システム起動時に、仮想OS#1〜#N及びホストOSによって読み取られる。
図4を参照すると、アクセス制御部510は、受信手段511と、判定手段512と、アクセス状況記憶部513とを備えている。
受信手段511は、PCI Expressポート530の所在を示す情報を宛先にしたアクセス可否問い合わせ、アクセス終了通知、あるいは、シーケンスアクセス開始通知を受信した場合には、受信したアクセス可否問い合わせ、アクセス終了通知、あるいは、シーケンスアクセス開始通知を判定手段512に渡し、他の情報(シーケンスアクセスを行うための一連の命令など)を受信した場合には、それをPCI-PCIブリッジ540に渡す機能を有する。なお、アクセス可否問い合わせは、図5(A)に示すように、仮想OSがアクセス対象にするEPのデバイス番号(コンフィグレーション時に上記EPに付与された番号)と、アクセス可否問い合わせの宛先を示す情報(コンフィグレーション時にアクセス制御レジスタ機能部523から読み取ったアクセス制御部510の所在を示す情報)と、アクセス可否問い合わせの問い合わせ元を示す情報(例えば、問い合わせ元の仮想OSの識別子)とを含む。また、アクセス終了通知には、図5(B)に示すように、アクセスを終了するEPのデバイス番号と、アクセス終了通知の宛先と、アクセス終了通知の通知元を示す情報(例えば通知元の仮想OSの識別子)を含む。また、シーケンスアクセス開始通知には、図5(C)に示すように、シーケンスアクセスを開始するEPのデバイス番号と、シーケンスアクセス開始通知の宛て先と、シーケンスアクセス開始通知の通知元を示す情報とを含む。
アクセス状況記憶部513には、PCI Expressスイッチ500に接続されているEP毎の領域が設けられ、各領域には対応するEPのアクセス状況を示すアクセス状況情報が記録される。より具体的には、アクセス状況記憶部513内の各領域には、対応するEPがアクセス状況を示す情報が記録される(アクセス中の場合には「アクセス中」が、アクセス中でない場合には「未アクセス」が記録される。なお、本実施の形態では、アクセス状況記憶部513の第1番目の領域(アドレスが最も小さい領域)には、PCI Expressスイッチ500に接続されているEPの内、付与されているデバイス番号が最も小さいEPが対応付けられ、第2番目の領域(アドレスが2番目に小さい領域)には、付与されているデバイス番号が2番目に小さいEPが対応付けられるというように、デバイス番号が小さいEPほどアドレスが小さい領域に対応付けられている。但し、この例では、PCI Expressスイッチ500には1個のEP600しか接続されていないので、アクセス状況記憶部513の第1番目の領域だけにEP600が対応付けられている。また、初期状態においては、アクセス状況記憶部513の各領域には「未アクセス」が記録される。
判定手段512は、受信手段511からアクセス可否問い合わせが渡された場合は、アクセス状況記憶部513に設けられているEP毎の領域の内の、上記アクセス可否問い合わせ中のデバイス番号に対応するEPに割り当てられている領域を参照する。そして、参照した領域に、アクセス状況情報として「アクセス不可」が記録されている場合には、問い合わせ元の仮想OSに対してアクセス不可を通知する。これに対して、参照した領域にアクセス状況情報として「未アクセス」が記録されている場合には、問い合わせ元の仮想OSに対してアクセス許可を通知する。
なお、判定手段512は、或る仮想OSにアクセス許可を通知してから所定時間が経過するまでの間に他の仮想OSからアクセス可否問い合わせが送られてきた場合には、該当するアクセス状況情報が「未アクセス」であっても上記他の仮想OSに対してはアクセス不可を通知する。これは、2つの仮想OSに同時にアクセス許可を与えないようにするためである。また、判定手段512は、アクセス可否問い合わせ中のデバイス番号に対応する領域が、アクセス状況記憶部513に設けられているEP毎の領域の内の何番目の領域であるかは、コンフィグレーション情報記憶部520を参照することにより認識できる。即ち、コンフィグレーション情報記憶部520には、システム起動時のコンフィグレーション処理によってPCI Expressスイッチ500に接続されている各EPに付与されたデバイス番号が記録されており、これを参照することにより、アクセス可否問い合わせ中のデバイス番号が上記各EPに付与されているデバイス番号の内で何番目に大きなものなのかを認識することができるので、アクセス可否問い合わせ中のデバイス番号に対応する領域が、アクセス状況記憶部513中の何番目の領域であるかを認識することができる。
また、判定手段512は、シーケンスアクセス開始通知が渡された場合には、アクセス状況記憶部513に設けられているEP毎の領域の内の、上記シーケンスアクセス開始通知に含まれているデバイス番号と対応する領域に記録されているアクセス状況情報を「アクセス中」に変更する。
また、判定手段512は、受信手段511からアクセス終了通知が渡された場合には、アクセス状況記憶部513に設けられているEP毎の領域の内の、上記アクセス終了通知中のデバイス番号と対応する領域に記録されているアクセス状況情報を「未アクセス」に変更する。
なお、アクセス制御部510内の受信手段511及び判定手段512は、布線論理で実現しても良いし、CPUによって実現してもよい。CPUによって実現する場合には、CPUを受信手段511および判定手段512として機能させるためのプログラムを記録した半導体メモリなどの記録媒体を用意し、CPUに上記プログラムを読み取らせる。CPUは、読み取ったプログラムに従って自身の動作を制御することにより、自CPU上に受信手段511および判定手段512を実現する。
[動作の説明]
次に、図6を参照し、仮想OSがPCI Expressスイッチ500経由でEP600に対してシーケンスアクセスを行う場合の動作について説明する。なお、図6は図1中のシーケンスアクセスに関与する部分を抜き出したものである。また、EP600は出力ポートを備え、そこからシーケンスアクセスに従ったデータを出力するものとする。また、図中の1〜18は、以下に記述する1〜18の動作と対応している。
1.仮想OS#1において、I/O仮想化に対応したEP600に対するアクセス要求が発生する。これにより、仮想OS#1は、先ず、EP600が接続されているPCI Expressスイッチ500に設けられているアクセス制御部510に対してアクセス可否問い合わせを送信する。このアクセス可否問い合わせには、アクセス対象にするEP600のデバイス番号と、アクセス可否問い合わせの宛て先となるアクセス制御部510の所在を示す情報(この例の場合は、PCI Expressスイッチ530の所在を示す情報)と、問い合わせ元が自仮想OS#1であることを示す情報とが含まれる。なお、EP600のデバイス番号や、アクセス制御部510の所在を示す情報は、システム起動時に行ったコンフィグレーション処理において得た情報に基づいて設定する。
2.PCI Expressスイッチ500内のアクセス制御部510は、EP600に対するアクセス状況を判定し、判定結果に応じた応答を問い合わせ元の仮想OS#1に返す。より具体的には、アクセス制御部510内の受信手段511は、仮想OS#1からのアクセス可否問い合わせを受信すると、それを判定手段512に渡す。判定手段512は、アクセス状況記憶部513に設けられている、PCI Expressスイッチ500に接続されている各EPに対応する領域の内の、アクセス可否問い合わせ中のデバイス番号に対応するEPに割り当てられている領域を参照する。そして、上記領域に「アクセス中」が記録されている場合には、問い合わせ元の仮想OS#1に対してアクセス不可を通知する。これに対して、「未アクセス」が記録されている場合には、問い合わせ元の仮想OS#1に対してアクセス許可を通知する。この例の場合、EP600をアクセスしている仮想OSが存在せず、上記領域の記憶内容が「アクセス可」になっているので、判定手段512は、仮想OS#1に対してアクセス許可を通知することになる。なお、前述したように、該当するアクセス状況情報が「未アクセス」であっても、仮想OS#1に対してアクセス許可を通知してから所定時間が経過するまでの間は、他の仮想OSからアクセス可否問い合わせがあった場合、問い合わせ元にアクセス不可を通知する。
3.アクセス許可を受け取った仮想OS#1は、アクセス制御部510に対してシーケンスアクセス開始通知を送信する。アクセス制御部510内の判定手段512は、アクセス状況記憶部513に設けられているEP毎の領域の内の、EP600に対応する領域に記録されているアクセス状況情報を「アクセス中」に変更する。これ以降は、仮想OS#1からアクセス終了通知が送られてくるまで、他の仮想OSからアクセス可否問い合わせが送られてきても、アクセス制御部510は問い合わせ元の仮想OSに対してアクセス不可を通知することになる。
4.仮想OS#1は、EP600に対するシーケンスアクセスを開始する。より具体的には、仮想OS#1は、アクセス要求内容に応じてデバイスドライバが生成した一連の命令に、宛先として自仮想OS#1で認識しているEP600のアドレスを付加して送信する。宛て先として仮想OS#1が認識しているEP1のアドレスが付加された一連の命令は、PCI Expressスイッチ500を介してI/O仮想化に対応しているEP600に渡される。EP600内のVF#1〜#Nの内、問い合わせ元の仮想OS#1に対応するVF#1は、自身が保持しているアドレス情報と上記宛先アドレスとが一致するので、上記一連の命令をPF800に渡す。PF800は、渡された一連の命令に従ったデータを出力ポートから出力する。
5.仮想OS#1がシーケンスアクセスを実施している間に、他の仮想OS#2においてEP600に対するアクセス要求が発生すると、仮想OS#2においても仮想OS#1と同様に、アクセス制御部510に対してアクセス可否問い合わせを送信する。
6.アクセス制御部510内の判定手段512は、仮想OS#2からのアクセス可否問い合わせを受信手段511を介して受け取ると、アクセス状況記憶部513に設けられているEP毎の領域の内、EP600に対応する領域を参照する。この例の場合、上記領域には「アクセス中」が記録されているので、判定手段512は問い合わせ元の仮想OS#2に対してアクセス不可を通知する。この通知を受けた仮想OS#2は、一定の時間をおいて再びアクセス可否問い合わせをアクセス制御部510に対して送信する。尚、仮想OS#2は、アクセス不可が通知された場合、EP600に対してシーケンスアクセスを行う際に利用する一連の命令をデバイスドライバを利用して生成しておき、それを自身のアドレス空間に保存しておくようにしても良い。そして、アクセス制御部510からアクセス許可が通知されている場合には、上記保存してある一連の命令を利用してEP600に対するシーケンスアクセスを行うようにしても良い。
7.仮想OS#1によるEP600に対するシーケンスアクセスは、仮想OS#2のアクセス可否問い合わせが行われた後も継続して行われる。
8.仮想OS#1は、EP600に対するシーケンスアクセスが終了すると、アクセス制御部510に対してアクセス終了通知を送信する。このアクセス終了通知には、シーケンスアクセスを終了するEP600のデバイス番号が含まれている。アクセス制御部510内の判定手段512は、受信手段511を介して上記アクセス終了通知を受け取ると、アクセス状況記憶部513に設けられているEP毎の領域の内の、上記アクセス終了通知中のデバイス番号に対応するEPに割り当てられている領域の記憶内容を「未アクセス」に変更する。これにより、EP600は他の仮想OSからアクセス可能な状態になる。
9.仮想OS#2は、アクセス不可通知を受信してから一定時間が経過すると、再び、EP600をアクセス対象EPにしたアクセス可否問い合わせをアクセス制御部510に対して送信する。
10.仮想OS#2からのアクセス可否問い合わせを受信したアクセス制御部510内の判定手段512は、この時点では、アクセス状況記憶部513中のEP600に対応する領域には、アクセス状況情報とした「未アクセス」が記録されているので、問い合わせ元の仮想OS#2に対してアクセス許可を通知する。
11.アクセス許可を受け取った仮想OS#2は、アクセス制御部510に対してシーケンスアクセス開始通知を送信する。アクセス制御部510内の判定手段512は、アクセス状況記憶に記録されている、EP600についてのアクセス状況情報を「アクセス中」に変更する。
12.仮想OS#2は、EP600に対するシーケンスアクセスを開始する。これにより、EP600では、シーケンスアクセスの内容に応じた処理が行われる。
13.仮想OS#2は、EP600に対するシーケンスアクセスが終了すると、アクセス制御部510に対してアクセス終了通知を送信する。このアクセス終了通知には、シーケンスアクセスを終了するEP600のデバイス番号が含まれる。アクセス制御部510内の判定手段512は、受信手段511を介して上記アクセス終了通知を受信すると、アクセス状況記憶部513中のEP600に対応する領域の記憶内容を「未アクセス」に変更する。
14.その後、仮想OS#Nにおいて、EP600に対するアクセス要求が発生すると、仮想OS#Nはアクセス制御部510に対してアクセス可否問い合わせを送信する。
15.アクセス制御部510内の判定手段512は、受信手段511を介して仮想OS#Nからのアクセス可否問い合わせを受信すると、アクセス状況記憶部513に設けられているEP毎の領域の内、仮想OS#Nがアクセス対象にしているEP600に対応する領域を参照する。この時点では、上記領域には「未アクセス」が記録されているので、判定手段512は、問い合わせ元の仮想OS#Nに対してアクセス許可を通知する。
16.アクセス許可を受け取った仮想OS#Nは、アクセス制御部510に対してシーケンスアクセス開始通知を送信する。アクセス制御部510内の判定手段512は、アクセス情報記憶部513のEP600に対応する領域に記録されているアクセス状況情報を「アクセス中」に変更する。
17.仮想OS#Nは、EP600に対するシーケンスアクセスを開始する。これにより、EP600では、シーケンスアクセスの内容に応じた処理が行われる。
18.仮想OS#Nは、EP600に対するシーケンスアクセスが終了すると、アクセス制御部510に対してアクセス終了通知を送信する。このアクセス終了通知には、シーケンスアクセスを終了するEPを示す情報としてEP600のデバイス番号が含まれている。アクセス制御部510内の判定手段512は、受信手段511を介して上記アクセス終了通知を受信すると、アクセス状況記憶部513中のEP600に対応する領域に記憶されているアクセス状況情報を「未アクセス」に変更する。
以上の一連のシーケンスアクセスにより、EP600は、先ず、仮想OS#1からのシーケンスアクセスの内容に従ったデータ1-1〜1-3を連続して出力し、次に、仮想OS#2からのシーケンスアクセスの内容に従ったデータ2-1を出力し、最後に、仮想OS#Nからのシーケンスアクセスの内容に従ったデータ3-1を出力することになる。
次に、図7と図1とを照らし合わせて、仮想OS#2がI/O仮想化に対応したEP600に対してシーケンスアクセスを行う場合の動作について説明する。なお、図7中の実線矢印S1〜S4は、以下に記述するS1〜S4に対応している。
S1.仮想OS#2においてEP600に対するアクセス要求が発生すると、仮想OS#2は、ルートコンプレックス300、PCI Expressスイッチ400を介して、EP600が接続されているPCI Expressスイッチ500内のアクセス制御部510にアクセス可否問い合わせを送信する。
S2.PCI Expressスイッチ500内のアクセス制御部510は、EP600に対するアクセス状況を判定し、判定結果に応じた応答を問い合わせ元の仮想OS#2に返す。今、例えば、EP600に対するアクセスを許可している仮想OSが存在していないとすると、アクセス制御部510は、アクセス許可を仮想OS#2に返す。
S3.アクセス許可を受け取った仮想OS#2では、アクセス制御部510に対してシーケンスアクセス開始通知を送信する。
S4.その後、仮想OS#2は、EP600に対するシーケンスアクセスを実行する。
なお、上述した説明では、アクセス制御手段510内の判定手段512は、仮想OSからシーケンスアクセス開始通知が送られてきたタイミングで、アクセス状況記憶部513に記録されているアクセス状況情報の内、シーケンスアクセスを開始するEPに関するアクセス状況情報を「アクセス中」に変更するようにしたが、アクセス状況記憶部513に記録されている情報に基づいて、問い合わせ元の仮想OSに対してEPに対するアクセスを許可すると判定した時点においてアクセス状況情報を「アクセス中」に変更するようにしても良い。このようにした場合には、シーケンスアクセス開始通知は不要になる。但し、このようにした場合には、問い合わせ元の仮想OSに対してアクセス許可を通知した後、上記仮想OSに不具合が発生した場合、他の仮想OSがEP600をアクセスできなくなってしまう。そこで、このようなことを防ぐため、上記したようにした場合には、アクセス許可を問い合わせ元の仮想OSに通知した後、所定時間が経過してもEP600に対するシーケンスアクセスが開始されなかったら、アクセス状況情報を「未アクセス」に変更するようにする。
図8を参照すると、図2に示したPCI Expressスイッチ500の代わりに実装可能なPCI Expressスイッチ500aが示されている。PCI Expressスイッチ500との相違点は、PCI-PCIブリッジ542の代わりに内部EP560を備えている点と、PCI Expressポート532を備えていない点と、コンフィグレーション情報記憶部520のアクセス制御レジスタ機能部523には、アクセス制御部510の所在を示す情報として、内部EP560の所在を示す情報が記録されている点と、アクセス制御部510内の受信手段511では、宛先が内部EP560を指し示すものになっているアクセス可否問い合わせ、アクセス終了通知およびシーケンスアクセス開始通知を判定手段512に渡す点である。
また、上述した説明では、同一のコンピュータ上に搭載されている複数の仮想OS200-1〜200-NでI/O仮想化に対応しているEP600を共有する場合について説明したが、ハードウェア的には完全に分かれている複数のコンピュータに搭載されているOSからEP600を共有するようにすることもできる。
[実施の形態の効果]
本実施の形態によれば、I/O仮想化に対応したEP600の利用効率を高いものにすることができる。その理由は、PCI Expressスイッチ500に設けられているアクセス制御部510が各仮想OS#1〜#Nからのアクセス可否問い合わせを調停し、EP600では、一切調停処理を行う必要がないからである。
100 CPU
200-1〜200-N 仮想OS
300 ルートコンプレックス
400,500 PCI Expressスイッチ
510 アクセス制御部
511 受信手段
512 判定手段
513 アクセス状況記憶部
520 コンフィグレーション情報記憶部
521 PCIコンフィグレーション空間
522 PCI Express拡張コンフィグレーション空間
523 アクセス制御レジスタ機能部
530〜532 PCI
Expressスイッチ
540〜542 PCI-PCIブリッジ
550 PCIバス
560 内部EP

Claims (7)

  1. I/O仮想化対応デバイスを共有するOSから送られてくるアクセス可否問い合わせであって、前記I/O仮想化対応デバイスに対するアクセスの可否を問い合わせるアクセス可否問い合わせを受信する受信手段と、
    該受信手段で受信したアクセス可否問い合わせに応答して前記I/O仮想化対応デバイスに対するアクセスが可能か否かを、自装置で管理している前記I/O仮想化対応デバイスに対するアクセス状況に基づいて判定し、アクセス可能と判定した場合には問い合わせ元の前記OSに対してアクセス許可を通知し、アクセス不可能と判定した場合には問い合わせ元の前記OSに対してアクセス不可を通知する判定手段とを備えたことを特徴とするアクセス制御装置。
  2. 請求項1記載のアクセス制御装置において、
    前記I/O仮想化対応デバイスに対するアクセス状況を示すアクセス状況情報が記録されたアクセス状況記憶部を備え、且つ、
    前記判定手段は、前記アクセス状況記憶部に記録されているアクセス状況情報に基づいて前記I/O仮想化対応デバイスに対するアクセスが可能か否かを判定することを特徴とするアクセス制御装置。
  3. 請求項2記載のアクセス制御装置において、
    前記受信手段は、前記OSから送られてくるアクセス開始通知あるいはアクセス終了通知を受信し、
    前記判定手段は、前記受信手段が前記アクセス開始通知を受信することにより、前記アクセス状況記憶部に記録されているアクセス状況情報を、アクセス中であることを示すものに変更し、前記受信手段が前記アクセス終了通知を受信することにより、前記アクセス状況記憶部に記録されているアクセス状況情報をアクセス中でないことを示すものに変更することを特徴とするアクセス制御装置。
  4. 請求項2記載のアクセス制御装置において、
    前記受信手段は、前記OSから送られてくるアクセス終了通知を受信し、
    前記判定手段は、前記アクセス状況記憶部に記録されているアクセス状況情報に基づいて前記I/O仮想化対応デバイスに対するアクセスが可能と判定することにより、前記アクセス状況情報をアクセス中であることを示すものに変更し、前記受信手段が前記アクセス終了通知を受信することにより、前記アクセス状況記憶部に記録されているアクセス状況情報をアクセス中でないことを示すものに変更することを特徴とするアクセス制御装置。
  5. 請求項2乃至4の何れか1項に記載のアクセス制御装置において、
    前記受信手段、前記判定手段、及び、前記アクセス状況記憶部は、前記I/O仮想化対応デバイスが接続されているPCI Expressスイッチに実装されることを特徴とするアクセス制御装置。
  6. 受信手段が、I/O仮想化対応デバイスを共有するOSから送られてくるアクセス可否問い合わせであって、前記I/O仮想化対応デバイスに対するアクセスの可否を問い合わせるアクセス可否問い合わせを受信し、
    判定手段が、前記受信手段で受信したアクセス可否問い合わせに応答して前記I/O仮想化対応デバイスに対するアクセスが可能か否かを、管理している前記I/O仮想化対応デバイスのアクセス状況に基づいて判定し、アクセス可能と判定した場合には問い合わせ元の前記OSに対してアクセス許可を通知し、アクセス不可能と判定した場合には問い合わせ元の前記OSに対してアクセス不可を通知することを特徴とするアクセス制御方法。
  7. コンピュータを、
    I/O仮想化対応デバイスを共有するOSから送られてくるアクセス可否問い合わせであって、前記I/O仮想化対応デバイスに対するアクセスの可否を問い合わせるアクセス可否問い合わせを受信する受信手段、
    該受信手段で受信したアクセス可否問い合わせに応答して前記I/O仮想化対応デバイスに対するアクセスが可能か否かを、管理している前記I/O仮想化対応デバイスのアクセス状況に基づいて判定し、アクセス可能と判定した場合には問い合わせ元の前記OSに対してアクセス許可を通知し、アクセス不可能と判定した場合には問い合わせ元の前記OSに対してアクセス不可を通知する判定手段として機能させるためのプログラム。
JP2010119969A 2010-05-26 2010-05-26 アクセス制御装置 Pending JP2011248551A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010119969A JP2011248551A (ja) 2010-05-26 2010-05-26 アクセス制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010119969A JP2011248551A (ja) 2010-05-26 2010-05-26 アクセス制御装置

Publications (1)

Publication Number Publication Date
JP2011248551A true JP2011248551A (ja) 2011-12-08

Family

ID=45413741

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010119969A Pending JP2011248551A (ja) 2010-05-26 2010-05-26 アクセス制御装置

Country Status (1)

Country Link
JP (1) JP2011248551A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015022344A (ja) * 2013-07-16 2015-02-02 横河電機株式会社 電子機器、オペレーティングシステム、アクセス管理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003196140A (ja) * 2001-10-02 2003-07-11 Hitachi Ltd 排他制御装置及び排他制御方法
JP2005122640A (ja) * 2003-10-20 2005-05-12 Hitachi Ltd サーバシステム及びi/oスロット共有方法。
JP2008299654A (ja) * 2007-05-31 2008-12-11 Toshiba Corp 情報処理装置及びアクセス制御方法
JP2010079816A (ja) * 2008-09-29 2010-04-08 Hitachi Ltd Pciデバイス共有方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003196140A (ja) * 2001-10-02 2003-07-11 Hitachi Ltd 排他制御装置及び排他制御方法
JP2005122640A (ja) * 2003-10-20 2005-05-12 Hitachi Ltd サーバシステム及びi/oスロット共有方法。
JP2008299654A (ja) * 2007-05-31 2008-12-11 Toshiba Corp 情報処理装置及びアクセス制御方法
JP2010079816A (ja) * 2008-09-29 2010-04-08 Hitachi Ltd Pciデバイス共有方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015022344A (ja) * 2013-07-16 2015-02-02 横河電機株式会社 電子機器、オペレーティングシステム、アクセス管理方法

Similar Documents

Publication Publication Date Title
JP6871957B2 (ja) エミュレートされたエンドポイントコンフィグレーション
EP3462326B1 (en) Nvme device, and methods for reading and writing nvme data
USRE49273E1 (en) Switch and memory device
JP5690403B2 (ja) 電力が最適化された割込み配信
US11113089B2 (en) Sharing data via virtual machine to host device bridging
KR101558427B1 (ko) 가상화된 입/출력을 위한 프로세서 로컬 코히어런시를 갖는 컴퓨터 시스템
JP6029550B2 (ja) 計算機の制御方法及び計算機
JP5546635B2 (ja) データ転送装置およびその制御方法
US10762137B1 (en) Page table search engine
US9189166B2 (en) Multi-host SATA controller
US11995019B2 (en) PCIe device with changeable function types and operating method thereof
JPH04246745A (ja) 情報処理装置及びその方法
US11016817B2 (en) Multi root I/O virtualization system
US20220327081A1 (en) PCIe DEVICE AND OPERATING METHOD THEREOF
US9875131B2 (en) Virtual PCI device based hypervisor bypass using a bridge virtual machine
US20220327082A1 (en) PCIe DEVICE
CN111752873A (zh) 用于在计算平台的多个主设备之间共享Flash设备的系统、装置和方法
US9330024B1 (en) Processing device and method thereof
US20130007768A1 (en) Atomic operations on multi-socket platforms
JP2011248551A (ja) アクセス制御装置
US20200327091A1 (en) Device communication control module and device communication control method
JP2014167818A (ja) データ転送装置およびデータ転送方法
US9652296B1 (en) Efficient chained post-copy virtual machine migration
JPS63310060A (ja) マルチプロセツサシステム
WO2012143947A2 (en) Multi-host peripheral controller

Legal Events

Date Code Title Description
RD07 Notification of extinguishment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7427

Effective date: 20120718

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130403

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140324

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140715

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20141111