[go: up one dir, main page]

JP2005309553A - 計算機 - Google Patents

計算機 Download PDF

Info

Publication number
JP2005309553A
JP2005309553A JP2004122455A JP2004122455A JP2005309553A JP 2005309553 A JP2005309553 A JP 2005309553A JP 2004122455 A JP2004122455 A JP 2004122455A JP 2004122455 A JP2004122455 A JP 2004122455A JP 2005309553 A JP2005309553 A JP 2005309553A
Authority
JP
Japan
Prior art keywords
parallel
unit
interrupt
logical partitions
dma transfer
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
JP2004122455A
Other languages
English (en)
Inventor
Toshiomi Moriki
俊臣 森木
Yuji Tsushima
雄次 對馬
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2004122455A priority Critical patent/JP2005309553A/ja
Priority to US11/105,481 priority patent/US20050235068A1/en
Publication of JP2005309553A publication Critical patent/JP2005309553A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

【課題】仮想計算機の動的なI/Oデバイスの変更を可能にしながらも、基板の回路構成が複雑になるのを回避する。
【解決手段】CPU1a、1b及びメモリ5と、I/Oデバイス#0〜#3を接続するPCIバス7と、PCIバス7を制御するサウスブリッジ6と、を含む物理計算機を複数のLPARに分割して物理計算機の資源の割当を制御するハイパバイザと、ハイパバイザからの指令に基づいてI/Oデバイスと複数のLPARの対応関係を設定するI/Oデバイス割り当て部により、I/Oデバイスから受け付けた処理要求(DMA転送または割込処理)を、I/Oデバイス割り当て部に設定された複数のLPARへそれぞれ並列的に発行する並列処理発行部とを備える。
【選択図】図1

Description

本発明は、仮想計算機システムに関し、複数の論理区画とI/Oデバイスの割当を動的に変更する技術に関する。
サーバ台数の増加と共に運用に関する複雑さが増加しており運用コストが問題化しており、運用コストを低減する技術として複数サーバを1台にまとめるサーバ統合が注目を集めている。サーバ統合を実現する技術として、一つのコンピュータを任意の割合で論理的に分割する仮想計算機が知られており、ハイパバイザなどのファームウェア(またはミドルウェア)により、物理計算機を複数の論理区画(LPAR:Logical PARtition)に分割し、各LPARに対して計算機資源(CPU、主記憶、I/O)を割当て、各LPAR上でそれぞれOSを動作させるもので、CPUを時分割で利用するため柔軟なサーバ統合が可能となる。
このような仮想計算機において、I/Oデバイスと各論理区画上のOSとの間でDMA(Direct Memory Access)によりデータの転送を行うものが知られている(例えば、特許文献1)。
特開2002−318701号
ところで、上記仮想計算機をオープン系サーバ(例えば、ブレードサーバ、PCサーバ)で実現する場合、オープン系サーバは実装可能なI/Oデバイスの数が少ないため、複数の論理区画(論理区画上のOS)でI/Oデバイスを共有する必要がある。I/Oデバイスを共有する際には、I/Oデバイスと各論理区画上のOSとの間でDMA転送を行ったり、I/OデバイスからのI/O割り込みを、共有しているOSにそれぞれ伝達する必要が生じる。
しかしながら、上記従来例では、I/Oデバイスに割り当てられた論理区画を超えてDMA転送を禁止しているため、I/Oデバイスは常にひとつの論理区画に対してしか通知を行うことができないため、複数のOSで一つのI/Oデバイスを共有することができず、各OSに割り当てるI/Oデバイスが不足するという問題があった。
そこで本発明は、上記問題点に鑑みてなされたもので、複数の論理区画上のOSで一つのI/Oデバイスを共有可能にし、オープン系サーバで仮想計算機を実現することを目的とする。
本発明は、CPU及び主記憶と、I/Oデバイスを接続するI/Oバスと、I/Oバスを制御するI/O制御部と、を含む物理計算機を複数の論理区画に分割し、各論理区画上でそれぞれOSを動作させ、各論理区画に対する物理計算機の資源の割当を制御するファームウェア(ハイパバイザ)とを備えた計算機において、ファームウェアからの指令に基づいて前記I/Oデバイスと複数の論理区画の対応関係を設定するI/Oデバイス割り当て部により、I/Oデバイスから受け付けた処理要求(DMA転送または割込処理)を、I/Oデバイス割り当て部に設定された複数の論理区画へそれぞれ並列的に発行する並列処理発行部とを備える。
したがって、本発明は、I/Oデバイス毎に複数の論理区画の対応関係を設定しておくことで、I/Oデバイスからの処理要求を複数の論理区画へ並列的に発行することが可能となる。これにより、複数の論理区画でひとつのI/Oデバイスを共有する際に、I/Oデバイスの処理要求を必要とする論理区画のみへ発行することができるので、I/Oデバイスの少ないオープン系サーバにおいても仮想計算機を実現することができる。
以下、本発明の一実施形態を添付図面に基づいて説明する。
図1は、本発明の仮想計算機システムを動作させる物理計算機(オープン系サーバ)100の構成を示す。CPU1a、1bは、フロントサイドバス2を介してノースブリッジ3に接続される。
ノースブリッジ3には、メモリバス4を介してメモリ(主記憶)5が接続されるとともに、バス8を介してサウスブリッジ6が接続される。サウスブリッジ6にはPCIバス7及び図示しないレガシーデバイスやディスクインタフェースが接続され、それぞれCPU1a、1bからアクセス可能となっている。なお、サウスブリッジ6は、PCIバス9等のI/Oバスを制御するコントローラであり、ノースブリッジ3はメモリ5を制御するコントローラであればよい。
PCIバス(I/Oバス)7は、図示しないデータバス、アドレスバス、割り込み信号などの信号線で構成されて、PCIスロット♯0〜♯3(図中10〜13)により共有される。
各PCIスロット♯0〜#3には、それぞれI/Oデバイス#0〜#2(図中20〜22)が接続されている。
なお、物理計算機100を構成するCPUは1つでも良いし、2つ以上であっても良い。CPUが2つ以上の場合、各CPU1a、1bはメモリ5を共有する密結合型マルチプロセッサであるとする。
ここで、物理計算機100上で仮想計算機を実現するソフトウェアについて、図2を参照しながら詳述する。
物理計算機100上でハイパバイザ(ファームウェアまたはミドルウェア)200が稼動しており、ハイパバイザ200は物理計算機100を2つ以上の論理区画(LPAR:Logical PARtition)LPAR0(210)〜LPARm(21m)に分割し、計算機資源の割り当てを管理する。
LPAR0〜LPARmのそれぞれでOS0(220)〜OSm(22m)を動作させ、各OS上でそれぞれアプリケーション0(230)〜アプリケーションm(23m)を動作させる。
ハイパバイザ200は、各LPAR(210〜21m)に対して物理計算機100のCPU1a、1b、メモリ5、PCIスロット♯0〜♯3のI/Oデバイス#0〜#2(計算機資源)を割当てる。ハイパバイザ200は、一つのI/Oデバイスに対して複数のOS(220〜22m)を割り当てることができ、換言すればI/Oデバイス#0〜#3は複数のLPAR0〜mで共有可能に構成される。
さらに、ハイパバイザ200は、各I/Oデバイス#0〜#3と各OS0〜m(220〜22m)の間でDMA転送を行う際には、後述するように、各OS0〜OSmの起動時にサウスブリッジ6に対してDMA転送の設定を行う。
このDMA転送は、I/Oデバイス#0〜#3からのDMA転送要求に応じて、サウスブリッジ6がノースブリッジ3を介してメモリ5の所定の領域に書き込むことで実現される。
ここで、本実施形態では、複数のOSで一つのI/Oデバイスを共有し、サウスブリッジ6がDMA転送を制御する場合について、以下に説明する。なお、以下の説明では、2つのLPAR0、LPAR1で一つのI/Oデバイス#0を共有する場合について説明するが、2つ以上のOSで他のI/Oデバイスを共有する場合も同様である。
図3は、サウスブリッジ6のうちDMA制御部62を中心としたシステム図であり、サウスブリッジ6は、CPU側のノースブリッジ3とサウスブリッジ6を接続するインターフェース61と、PCIバス7に接続されるPCIバスインターフェース60と、図1に示したI/Oデバイス#0〜#3からのDMA転送要求に応じて、メモリ5へデータを書き込むDMA制御部62を備える。
ここで、DMA制御部62には、ハイパバイザ200からの指令によって一つのI/Oデバイスから複数のOS(LPAR)へDMA転送を振り分ける(並列化する)並列制御部63が設けられる。
並列制御部63には、I/Oデバイス#0〜#3の共有を設定するデバイスレジスタ610と、I/Oデバイス毎に設けられて、共有するLPARと、各LPARのDMAバッファアドレスを示す並列転送レジスタ620を備え、共有されているI/OデバイスからDMA転送要求があると、並列転送レジスタ620が指し示すメモリ5の複数のアドレスへDMA転送を行う。
デバイスレジスタ610は、図4で示すように、I/Oデバイス#0〜#3の数だけ設定されており、デバイス番号611に対応して、複数のLPARへの並列的なDMA転送を行うか否かを示す並列化フラグ612と、I/Oデバイスの発行元IDから構成される。並列化フラグFpは1であれば、DMA転送を並列的に行うことを示し、0であれば並列化を行わないことを示す。また、発行元IDはI/OデバイスのPCIバス7上のIDを示し、PCI Local Bus Specification Rev. 2.2等で規定されるバス番号、デバイス番号、ファンクション番号から構成される情報である。
次に、並列転送レジスタ620は、図5で示すように、I/Oデバイス#0〜#3毎に独立したレジスタで構成され、ハイパバイザ200が設定するLPAR番号621に対応して、共有の有無を示す共有フラグ622と、転送先のアドレスオフセット値623が、LPAR番号624毎に設定される。
図5において、620はI/Oデバイス#0の並列転送レジスタ620の一例を示し、LPAR0とLPAR1が共有フラグを1にセットしていることから、I/Oデバイス#0が2つのLPAR0、1で共有されていることを示している。そして、転送先のアドレスオフセット値623は、LPAR0のI/Oデバイス#0のDMAバッファアドレスが後述するようにC−A’であり、LPAR1のI/Oデバイス#0のDMAバッファアドレスがC−B’−L1stであることを示している。なお、L1stはLPAR1の開始物理アドレスを指す。また、LPAR0の開始物理アドレスは0hであり、論理アドレス区間と物理アドレス空間は一致する。
次に、I/Oデバイス#0は、図6で示すように、PCIバスインターフェース201、デバイスインターフェース202、I/Oデバイス本体203及びDMAコントローラ204から構成される。例えば、I/Oデバイス#0がNIC(Network Interface Card)の場合、受信が発生するとDMAコントローラ204は、受信データを転送するDMAトランザクションをサウスブリッジ6に対して発行する。
このDMAトランザクション300は、例えば、図7で示すように構成され、ヘッダ301には要求の内容(図中TYPE)302と、転送先アドレス303、発行元ID304で構成され、ヘッダ301に続いてデータ305が結合される。
なお、転送先アドレス303は、物理計算機100の起動時に、ハイパバイザ200が設定したハイパバイザ用のDMAバッファのアドレス(図中C)が設定される。この転送先アドレス303は、DMAコントローラ204の図示しないDMAレジスタに設定される。また、発行元ID304は、上記デバイスレジスタ610の発行元ID613と同一である。
ここで、メモリ5に設定されたLPAR0のOS0のメモリ空間と、LPAR1のOS1のメモリ空間及びハイパバイザ用DMAバッファの関係について、図8を参照しながら説明する。
メモリ5の物理アドレスは、0〜10GBまであり、このうち、0〜4GBのアドレス空間(領域)がOS0に割り当てられ、4GB〜8GBのアドレス空間がOS1に割り当てられ、さらに、8GB以上の物理アドレスCから2MBのアドレス空間がハイパバイザ用DMAバッファ50に割り当てられている。
そして、LPAR0のOS0に割り当てられた物理アドレス空間は、0〜4GBの論理アドレス空間5AとしてOS0が利用し、OS0の起動時に論理アドレスAから2MBのアドレス空間にOS0用のDMAバッファ51が確保される。このDMAバッファ51は、I/Oデバイス#0に対応付けられている。
一方、LPAR1のOS1に割り当てられた4〜8GBの物理アドレス空間は、0〜4GBの論理アドレス空間5BとしてOS1が利用し、OS1の起動時に論理アドレスBから2MBのアドレス空間にOS1用のDMAバッファ52が確保される。このDMAバッファ52は、I/Oデバイス#0に対応付けられている。
ここで、物理アドレスを管理するハイパバイザ200は、各OS0、1が確保したDMAバッファ51、52から、各OS用のDMAバッファ51、52の物理アドレスA’、B’を管理している。
次に、LPAR0、1のOS0、1でI/Oデバイス#0を共有し、DMA転送を行う例を説明する。
OS0、1がそれぞれ起動すると、上述のようにDMAバッファ51、52を確保し、各OS0、1はハイパバイザ200にI/Oデバイス#0の割り当てと、DMA転送を要求する。
ハイパバイザ200は、複数のOSがI/Oデバイス#0のDMA転送を要求したことから、図4のデバイスレジスタ610のデバイス番号0(I/Oデバイス#0)の並列化フラグを1にセットするとともに、I/Oデバイス#0のPCIバスインターフェース201から発行元IDを読み込んで、デバイスレジスタ610の発行元IDにセットする。なお、物理計算機100の起動時には、上述したようにI/Oデバイス#0のDMA転送先アドレスとして、ハイパバイザ用DMAバッファ50のアドレスCがDMAコントローラ204にセットされている。
次に、ハイパバイザ200は、I/Oデバイス#0とOS0、1の間で並列的なDMA転送を行うため、I/Oデバイス#0の並列転送レジスタ620のLPAR0とLPAR1の共有フラグをそれぞれ1にセットする。そして、ハイパバイザ200は、ハイパバイザ用DMAバッファアドレスCと、OS0用DMAバッファ51の物理アドレスA’のオフセット(C−A’=C−A)を並列転送レジスタ620の転送先アドレスオフセット値623にセットする。
同様にハイパバイザ200は、ハイパバイザ用DMAバッファアドレスCと、OS1用DMAバッファ52の物理アドレスB’のオフセット(C−B’=C−B−L1st)をI/Oデバイス#0の並列転送レジスタ620の転送先アドレスオフセット値623にセットする。
起動が完了して、I/Oデバイス#0からDMAトランザクション300が発生すると、I/Oデバイス#0からサウスブリッジ6に対して、上記図7のようなTYPE(=MWr=メモリ書き込み要求)のヘッダ301及びデータ305が送られる。
DMA制御部62は、ヘッダ301から発行元ID304を抽出して、デバイスレジスタ610の発行元IDと比較してDMA転送元がI/Oデバイス#0であることを判定する。同時に並列化フラグが1であるかを判定し、1の場合には後述のように並列転送を行い、0の場合には並列転送を行わずDMAトランザクション300のヘッダ301に記載された転送先アドレス(すなわちハイパバイザ用DMAバッファアドレス)303に転送を行う。
並列化フラグが1であれば、DMA制御部62は、並列転送レジスタ620のI/Oデバイス#0を参照して、共有フラグが1にセットされているLPARを検索する。そして、図5においては、LPAR0に共有フラグがセットされているので、転送先アドレスオフセット値(C−A’)を読み込み、このオフセット値をDMAトランザクション300から抽出した転送先アドレス303(=C)から減算する。DMAトランザクション300の転送先アドレスは上記したようにハイパバイザ用DMAバッファアドレスCとなっているので、求められるアドレスは、C−(C−A’)=A’となって、LPAR0の物理アドレス空間に対応するDMAバッファ51’のアドレスA’が得られる(図8参照)。
DMA制御部62は、DMAトランザクション300のデータ305を、メモリ5の物理アドレスA’に転送し、OS0のDMAバッファ51にデータを書き込む。
DMA制御部62は、さらに並列転送レジスタ620を検索し、LPAR1に共有フラグがセットされているので、転送先アドレスオフセット値(C−B’)を読み込み、このオフセット値をDMAトランザクション300から抽出した転送先アドレス303(=C)から減算する。上記と同様に、DMAトランザクション300の転送先アドレスは上記したようにハイパバイザ用DMAバッファアドレスCとなっているので、求められるアドレスは、C−(C−B’)=B’となって、LPAR1の物理アドレス空間に対応するDMAバッファ52’のアドレスB’が得られる。
DMA制御部62は、DMAトランザクション300のデータ305を、メモリ5の物理アドレスB’に転送し、OS1のDMAバッファ52にデータを書き込む。
こうして、DMA制御部62は、並列転送レジスタ620の共有フラグがセットされているLPARに対して、DMAトランザクション300が指し示すアドレスからオフセット値を差し引いた物理アドレスへ、順次データを転送することで、一つのI/Oデバイス#0からのDMA転送要求を複数のLPARへ並列的に書き込むことが可能となる。
したがって、I/Oデバイスの数が少ないオープン系サーバにおいても、I/Oデバイスを共有することで、複数のLPARを備えた仮想計算機を実現することが可能となって、サーバの台数を低減することができるのである。
また、PCIバス7のI/Oデバイス#0〜#3のDMAトランザクション300を、サウスブリッジ6で並列化するので、PCIバス7のデータトラフィックの増大を回避しながらDMA転送の並列化を図って複数のOSによるI/Oデバイスの共有が可能となる。
なお、上記実施形態においては、並列制御部63をサウスブリッジ6に設けた一例を示したが、図示はしないがノースブリッジ3に設けても良い。
<変形例1>
上記第1の実施形態では、サウスブリッジ6に並列制御部63を設けたが、図6に示したI/Oデバイス#0〜#3のDMAコントローラ204に並列転送レジスタ620を設けて、I/Oデバイス#0〜#3からのDMAトランザクション300を並列化しても良い。
この場合、I/Oデバイス#0〜#3毎に並列転送レジスタ620を設け、サウスブリッジ6は従来と同様のDMA制御部62を備えるだけでよい。そして、ハイパバイザ200が各I/Oデバイス#0〜#3の並列転送レジスタ620にアクセスし、共有フラグ622とオフセット値623を設定する。
I/Oデバイス#0〜#3でDMA転送が発生すると、各I/Oデバイス#0〜#3の並列転送レジスタ620のオフセット値623に応じて、複数のOSへDMA転送が行われる。
したがって、前記第1の実施形態と同様に、複数のOS(LPAR)によるI/Oデバイス#0〜#3の共有を実現することができる。なお、この場合では、I/Oデバイス側に並列転送レジスタ620を設けるので、デバイスレジスタ610は不要となり、構成を簡易にすることができる。
<第2実施形態>
図9〜図14は第2の実施形態を示し、前記第1実施形態のサウスブリッジ6にI/Oデバイス#0〜#3からのI/O割込(外部割込)を、I/Oデバイスを共有する複数のLPAR上のOSに通知する割込制御部64を設けた一例を示す。
図9は、前記第1実施形態に示したサウスブリッジ6のうち、I/Oデバイス#0〜#3からの割込要求(割込信号)を複数のOS(CPU1a,1b)へ通知する割込制御部64を中心としたシステム図である。
サウスブリッジ6は、CPU側のノースブリッジ3とサウスブリッジ6を接続するインターフェース61と、PCIバス7に接続されるPCIバスインターフェース60と、図1に示したI/Oデバイス#0〜#3からのI/O割込に応じて、CPU1a、1bにそれぞれ割込を通知する割込制御部64を備える。
また、I/Oデバイス#0〜#3には、図10で示すように、PCIバスインターフェース201、デバイスインターフェース202、I/Oデバイス本体203、DMAコントローラ204、割込コントローラ205から構成される。例えば、I/Oデバイス#0がNIC(Network Interface Card)の場合、受信が発生すると割込コントローラ205は、I/O割込を通知する割込信号をサウスブリッジ6に対して発行する。
なお、その他の構成は前記第1実施形態と同様であるので、重複した説明を省略する。
ここで、サウスブリッジ6の割込制御部64には、ハイパバイザ200からの指令によって一つのI/Oデバイスから複数のOS(CPU)へI/O割込を振り分ける(並列化する)ための並列割込レジスタ640が設けられる。
次に、並列割込レジスタ640は、図11で示すように、I/Oデバイス#0〜#3毎に独立したレジスタで構成され、ハイパバイザ200が設定するLPAR番号641に対応して、共有の有無を示す共有フラグ642と、割込通知の宛先を示すCPU識別子643、CPUからの割込処理完了通知を示すEOI(End Of Interrupt)フラグ644を格納する領域が、LPAR番号641毎に設定される。
図11において、640はI/Oデバイス#0の並列割込レジスタ640の一例を示し、LPAR0とLPAR1の共有フラグ642が「1」にセットされていることから、I/Oデバイス#0は2つのLPAR0、1で共有されていることを示している。
そして、LPAR0にCPU1a(図1のCPU#0)が割り当てられ、LPAR1にCPU1b(図1のCPU#1)が割り当てられている場合、並列割込レジスタ640にはLPAR0のCPU識別子643には、図1に示した#0が設定され、LPAR1のCPU識別子643には、図1に示した#1が設定される。
さらに、現在割込処理完了通知が発生していないことから、LPAR0、1のEOIフラグ644には「0」がセットされ、LPARに割り当てられたCPUから割込処理完了通知が通知されると、EOIフラグ644は1に変更される。なお、EOIフラグ644はI/O割込が発生する度に、割込制御部64によって「0」にリセットされる。
次に、LPAR0、1のOS0、1でI/Oデバイス#0を共有し、サウスブリッジ6がI/O割込を並列化して通知する例を説明する。
まず、物理計算機100で実行されるハイパバイザ200が、LPAR上でOSを起動するたびに実行する並列割込の設定処理について、図12のフローチャートを参照しながら説明する。
ハイパバイザ200は、OSを起動させるLPAR及びCPUを決定し(S1)、このOS(LPAR)に割り当てるI/Oデバイスを選択する(S2)。次に、選択したI/Oデバイス#0〜#3に対応する並列割込レジスタ640をサウスブリッジ6から読み込み(S3)、共有フラグを参照して他のLPARと共有するか否かを判定する(S4)。なお、この判定は、前記第1実施形態のようにサウスブリッジ6に設けたデバイスレジスタ610の並列化フラグ612を参照しても良い。
共有しない場合には、そのままS6に進んでOS(ゲストOS)を起動する。共有する場合には、OSを起動するLPARに対応する共有フラグ642を「1」にセットするともに、共有するLPARの共有フラグも「1」にセットする。そして、各LPARに割り当てられたCPUの識別子643を設定する(S5)。
こうして、サウスブリッジ6の並列割込レジスタ640設定が完了すると、ゲストOSの起動を開始する(S6)。
なお、I/Oデバイス#0〜#3の割込コントローラ205は、物理計算機100の起動時に初期化され、割込番号が割込コントローラ205に設定される。
次に、I/O割込からI/Oデバイス#への完了通知までを図13のタイムチャートを参照しながら説明する。
I/O割込が発生すると、I/Oデバイスはサウスブリッジ6の割込制御部64へ割込番号に対応する割込信号を送出する(t1)。
サウスブリッジ6の割込制御部64は、I/Oデバイスからの割込信号を受け付けると、割込識別子からI/Oデバイスを特定する。そして、特定したI/Oデバイスに対応する並列割込レジスタ640の共有フラグ642を参照して、共有されているか否かを判定する。共有されていない場合には、所定のCPU(例えば、CPU1a)にI/O割込を通知する。
一方、共有されている場合には、並列割込レジスタ640に設定された宛先のCPU識別子643の全てについて、I/O割込を通知する(t2)。図11の例では、LPAR0、1のCPU1a、1b(#0、#1)についてI/O割込が通知される。このとき、割込制御部64はLPAR0、1のEOIフラグ644をそれぞれ「0」にリセットする。
この通知を受けたCPU#0、#1はそれぞれ割込処理を開始する(t3)。例えば、CPU#0が先に割込処理を完了すると、CPU#0は割込処理完了通知(EOI#0)をサウスブリッジ6の割込制御部64に通知する(t4)。この通知を受けた割込制御部64は、並列割込レジスタ640のEOIフラグ644のうち、通知を受けたCPUの識別子を有するEOIフラグを「1」にセットする(t5)。
この時点でCPU#1は割込処理を実行中であり、CPU#1に対応するEOIフラグ644は「0」であるため、割込制御部64はI/O割込の発行元のI/Oデバイスへの完了通知を保留する。
CPU#1は割込処理が完了すると、割込処理完了通知(EOI#1)をサウスブリッジ6の割込制御部64に通知する(t6)。この通知を受けた割込制御部64は、並列割込レジスタ640のEOIフラグ644のうち、通知を受けたCPU#1のEOIフラグを「1」にセットする(t5)。
この時点では、図11に示した並列割込レジスタ640に共有フラグ642がセットされたLPARについて、全てEOIフラグが「1」となったことから、割込制御部64は全てのCPU(またはOS)での割込処理が完了したと判定して、発行元のI/Oデバイスに対して割込処理完了通知EOIを送信する。
なお、上記割込制御部64における、各CPUの割込処理完了通知の判定は、図13で示すようなハードウェアで構成することができる。
図13において、加算器651は並列割込レジスタ640のEOIフラグ644の値を加算した結果を出力し、加算器652は並列割込レジスタ640の共有フラグ642の値を加算した結果を出力する。ゲート653は、加算器651と652の値が一致したときにONを出力する。
一方、ゲート654は、共有フラグ642のいずれかが「1」であればONを出力する。ゲート655は、ゲート654とゲート653の信号が共にONであれば、割込処理完了通知EOIをI/Oデバイスに送信する。
したがって、共有フラグ642がセットされたLPARは、全てのLPARのEOIフラグ644が「1」になって、割込制御部64は初めてI/Oデバイスに対して割込処理完了通知EOIを送るのである。なお、ゲート654は、共有フラグ642及びEOIフラグ644が全て0のときに割込制御部64がEOIを送信するのを防ぐものである。
こうして、割込制御部64は、並列割込レジスタ640の共有フラグ642がセットされているLPARのCPU(またはOS)に対して、I/O割込を並列的に通知することが可能となって、一つのI/Oデバイスを複数のLPARで共有することができる。
したがって、I/Oデバイスの数が少ないオープン系サーバ(ブレードやPCサーバ)においても、I/Oデバイスを共有することで、複数のLPARを備えた仮想計算機を実現することが可能となって、サーバの台数を低減することができるのである。
なお、上記第2実施形態においては、割込制御部64をサウスブリッジ6に設けた一例を示したが、図示はしないがノースブリッジ3に設けても良い。
<変形例2>
上記第2の実施形態では、サウスブリッジ6に割込制御部64を設けたが、図10に示したI/Oデバイス#0〜#3の割込コントローラ205に並列割込レジスタ640を設けて、I/Oデバイス#0〜#3からの割込信号を並列化しても良い。
この場合、I/Oデバイス#0〜#3毎に並列割込レジスタ640を設け、サウスブリッジ6は従来と同様の割込制御部64を備えるだけでよい。そして、ハイパバイザ200が各I/Oデバイス#0〜#3の並列割込レジスタ640にアクセスし、共有フラグ642と宛先CPU識別子643及びEOIフラグ644を設定する。
I/Oデバイス#0〜#3でI/O割込が発生すると、各I/Oデバイス#0〜#3の並列割込レジスタ640の宛先CPUに応じて、複数のOS(CPU)へI/O割込が通知される。
そして、各CPUで割込処理が完了する度に、EOIフラグ644が順次「1」となり、並列割込レジスタ640の共有フラグ642がセットされた全てのLPARのEOIフラグ644が1になると、割込コントローラ205からI/Oデバイスに対して割込処理完了通知EOIが行われる。
したがって、前記第2の実施形態と同様に、複数のOS(LPAR)によるI/Oデバイス#0〜#3の共有を実現することができる。
なお、上記各実施形態においては、フロントサイドバス2を共有バスとしたが、ポイントtoポイントのクロスバー型のバスとしても良く、同様にノースブリッジ3とサウスブリッジ6をクロスバー型のバスで接続することができる。さらに、ノースブリッジ3にメモリバス4を接続したが、CPU1a、1bにメモリバスを接続する構成としても良い。
また、上記実施形態においては、ひとつのPCIバスを備えた物理計算機100を一例としたが、図示はしないが複数のI/Oバスを備えた物理計算機に適用することができ、さらに、異なるI/Oバスを複数備えた物理計算機に適用することも可能である。
以上のように、本発明ではI/OデバイスからのDMA転送またはI/O割込を、複数のLPARへ並列的に転送できるので、I/Oデバイスを共有する仮想計算機を実現するのに最適な物理計算機(サーバまたはパーソナルコンピュータ)を提供することができる。
物理計算機の構成を示すシステム図。 物理計算機で稼動する仮想計算機のソフトウェア構成を示すシステム図。 DMA制御部を中心とするサウスブリッジのシステム図。 デバイスレジスタの一例を示す説明図。 並列転送レジスタの一例を示す説明図。 I/Oデバイスの一例を示すシステム図。 DMAトランザクションの一例を示す説明図。 物理アドレス空間と各LPARの論理アドレス空間とDMAバッファの関係を示す説明図。 第2の実施形態を示し、割込制御部を中心とするサウスブリッジのシステム図。 同じく、I/Oデバイスの一例を示すシステム図。 同じく、並列割込レジスタの一例を示す説明図。 同じく、ハイパバイザで行われる共有設定処理の一例を示すフローチャート。 同じく、I/Oデバイスから割込処理の処理の流れを示すタイムチャート。 同じく、割込処理完了通知のハードウェア構成の一例を示すシステム図。
符号の説明
1a,1b CPU
5 メモリ
6 サウスブリッジ
7 PCIバス
62 DMA制御部
63 並列制御部
64 割込制御部
100 物理計算機
200 ハイパバイザ

Claims (9)

  1. CPUと、主記憶と、I/Oデバイスを接続するI/Oバスと、I/Oバスを制御するI/O制御部と、を含む物理計算機を複数の論理区画に分割し、各論理区画上でそれぞれOSを動作させ、各論理区画に対する物理計算機の資源の割当を制御するファームウェアと、
    を備えた計算機であって、
    前記ファームウェアからの指令に基づいて前記I/Oデバイスと複数の論理区画の対応関係を設定するI/Oデバイス割り当て部と、
    前記I/Oデバイスからの処理要求を受け付ける処理要求受付部と、
    前記受け付けた処理要求を、前記I/Oデバイス割り当て部に設定された複数の論理区画へそれぞれ並列的に発行する並列処理発行部と、
    を備えたことを特徴とする計算機。
  2. 前記処理要求は、DMA転送であって、
    前記I/Oデバイス割り当て部は、I/Oデバイス毎に前記複数の論理区画のDMA転送先を前記対応関係として設定し、
    前記並列処理発行部は、前記DMA転送を要求したI/Oデバイスに設定された前記複数の論理区画のDMA転送先へ、それぞれ要求されたDMA転送を並列的に実行することを特徴とする請求項1に記載の計算機。
  3. 前記I/O制御部は、前記I/Oデバイス割り当て部と、処理要求受付部と、並列処理発行部とを含んで構成され、前記I/OデバイスからのDMA転送を複数の論理区画へ並列的に実行することを特徴とする請求項2に記載の計算機。
  4. 前記I/Oデバイス割り当て部は、I/Oデバイス毎に前記複数の論理区画を設定するとともに、各論理区画の主記憶に対応するDMA転送先を設定するレジスタを備えたことを特徴とする請求項3に記載の計算機。
  5. 前記I/Oデバイスは、前記論理区画に対してDMA転送を要求するとともに、前記処理要求受付部と、前記I/Oデバイス割り当て部と、並列処理発行部とを内包し、当該I/Oデバイスに設定された前記複数の論理区画のDMA転送先へ、それぞれ要求されたDMA転送を並列的に実行することを特徴とする請求項2に記載の計算機。
  6. 前記処理要求は、割込処理であって、
    前記I/Oデバイス割り当て部は、I/Oデバイス毎に前記複数の論理区画毎のCPUを前記対応関係として設定し、
    前記並列処理発行部は、前記割込処理を要求したI/Oデバイスに設定された前記複数の論理区画のCPUへ、それぞれ要求された割込処理を並列的に発行することを特徴とする請求項1に記載の計算機。
  7. 前記I/O制御部は、前記I/Oデバイス割り当て部と、処理要求受付部と、並列処理発行部とを含んで構成され、前記I/Oデバイスからの割込処理を複数の論理区画へ並列的に発行することを特徴とする請求項6に記載の計算機。
  8. 前記I/Oデバイス割り当て部は、I/Oデバイス毎に前記複数の論理区画を設定するとともに、各論理区画に対応するCPUを設定するレジスタを備えたことを特徴とする請求項7に記載の計算機。
  9. 前記I/Oデバイスは、前記論理区画に対して割込処理を要求するとともに、前記処理要求受付部と、前記I/Oデバイス割り当て部と、並列処理発行部とを内包し、当該I/Oデバイスに設定された前記複数の論理区画のCPUへ、それぞれ割込処理を並列的に発行することを特徴とする請求項6に記載の計算機。
JP2004122455A 2004-04-19 2004-04-19 計算機 Pending JP2005309553A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004122455A JP2005309553A (ja) 2004-04-19 2004-04-19 計算機
US11/105,481 US20050235068A1 (en) 2004-04-19 2005-04-14 Computer system sharing an I/O device between logical partitions

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004122455A JP2005309553A (ja) 2004-04-19 2004-04-19 計算機

Publications (1)

Publication Number Publication Date
JP2005309553A true JP2005309553A (ja) 2005-11-04

Family

ID=35097630

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004122455A Pending JP2005309553A (ja) 2004-04-19 2004-04-19 計算機

Country Status (2)

Country Link
US (1) US20050235068A1 (ja)
JP (1) JP2005309553A (ja)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008033449A (ja) * 2006-07-26 2008-02-14 Nec Corp 入出力転送装置の共有方式、入出力転送装置の共有方法、及びプログラム
JP2008176482A (ja) * 2007-01-17 2008-07-31 Hitachi Ltd 仮想計算機システム
JP2008269177A (ja) * 2007-04-18 2008-11-06 Ntt Docomo Inc 情報処理装置及び制御方法
JP2008269589A (ja) * 2007-04-16 2008-11-06 Samsung Electronics Co Ltd 仮想化環境での安全なシステム保護装置および方法
JP2012003313A (ja) * 2010-06-14 2012-01-05 Hitachi Ltd コンピュータシステム及びその制御方法
JP2013535061A (ja) * 2010-06-23 2013-09-09 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピューティング環境のアダプタを使用可能にするための方法、システム、およびコンピュータ・プログラム
US8893122B2 (en) 2008-03-11 2014-11-18 Hitachi, Ltd. Virtual computer system and a method of controlling a virtual computer system on movement of a virtual computer
US9134911B2 (en) 2010-06-23 2015-09-15 International Business Machines Corporation Store peripheral component interconnect (PCI) function controls instruction
US9195623B2 (en) 2010-06-23 2015-11-24 International Business Machines Corporation Multiple address spaces per adapter with address translation
US9342352B2 (en) 2010-06-23 2016-05-17 International Business Machines Corporation Guest access to address spaces of adapter
US9626298B2 (en) 2010-06-23 2017-04-18 International Business Machines Corporation Translation of input/output addresses to memory addresses
JP2019185130A (ja) * 2018-04-02 2019-10-24 株式会社デンソー 電子制御装置および電子制御システム

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7937616B2 (en) * 2005-06-28 2011-05-03 International Business Machines Corporation Cluster availability management
JP4724494B2 (ja) * 2005-08-26 2011-07-13 キヤノン株式会社 Pciブリッジ及pciブリッジを搭載するシステム
US7890669B2 (en) * 2005-11-25 2011-02-15 Hitachi, Ltd. Computer system for sharing I/O device
JP2008158710A (ja) * 2006-12-22 2008-07-10 Hitachi Ltd 計算機システム
US7835373B2 (en) * 2007-03-30 2010-11-16 International Business Machines Corporation Method and apparatus for buffer linking in bridged networks
US8576861B2 (en) * 2007-05-21 2013-11-05 International Business Machines Corporation Method and apparatus for processing packets
US8032680B2 (en) * 2008-06-27 2011-10-04 Microsoft Corporation Lazy handling of end of interrupt messages in a virtualized environment
US7809875B2 (en) * 2008-06-30 2010-10-05 Wind River Systems, Inc. Method and system for secure communication between processor partitions
US20100161844A1 (en) * 2008-12-23 2010-06-24 Phoenix Technologies Ltd DMA compliance by remapping in virtualization
US8560826B2 (en) 2009-12-14 2013-10-15 Citrix Systems, Inc. Secure virtualization environment bootable from an external media device
US8646028B2 (en) 2009-12-14 2014-02-04 Citrix Systems, Inc. Methods and systems for allocating a USB device to a trusted virtual machine or a non-trusted virtual machine
US9792136B2 (en) 2011-04-28 2017-10-17 Microsoft Technology Licensing, Llc Hardware assisted inter hypervisor partition data transfers
US8843669B2 (en) 2011-09-09 2014-09-23 Microsoft Corporation Guest partition high CPU usage mitigation when performing data transfers in a guest partition
US9875125B2 (en) 2013-06-14 2018-01-23 International Business Machines Corporation Parallel mapping of client partition memory to multiple physical adapters
US10162775B2 (en) * 2015-12-22 2018-12-25 Futurewei Technologies, Inc. System and method for efficient cross-controller request handling in active/active storage systems

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2002A (en) * 1841-03-12 Tor and planter for plowing
US5329579A (en) * 1992-07-27 1994-07-12 At&T Bell Laboratories Modular adjunct processor made of identical multi-function modules adaptable under direction of one of them to perform any of the adjunct-processor functions
US6041366A (en) * 1998-02-02 2000-03-21 International Business Machines Corporation System and method for dynamic specification of input/output attributes
US6711620B1 (en) * 1999-04-14 2004-03-23 Matsushita Electric Industrial Co. Event control device and digital broadcasting system
JP3659062B2 (ja) * 1999-05-21 2005-06-15 株式会社日立製作所 計算機システム
US6823404B2 (en) * 2000-06-08 2004-11-23 International Business Machines Corporation DMA windowing in an LPAR environment using device arbitration level to allow multiple IOAs per terminal bridge

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008033449A (ja) * 2006-07-26 2008-02-14 Nec Corp 入出力転送装置の共有方式、入出力転送装置の共有方法、及びプログラム
JP2008176482A (ja) * 2007-01-17 2008-07-31 Hitachi Ltd 仮想計算機システム
JP2008269589A (ja) * 2007-04-16 2008-11-06 Samsung Electronics Co Ltd 仮想化環境での安全なシステム保護装置および方法
JP2008269177A (ja) * 2007-04-18 2008-11-06 Ntt Docomo Inc 情報処理装置及び制御方法
US8893122B2 (en) 2008-03-11 2014-11-18 Hitachi, Ltd. Virtual computer system and a method of controlling a virtual computer system on movement of a virtual computer
JP2012003313A (ja) * 2010-06-14 2012-01-05 Hitachi Ltd コンピュータシステム及びその制御方法
US9195623B2 (en) 2010-06-23 2015-11-24 International Business Machines Corporation Multiple address spaces per adapter with address translation
US9134911B2 (en) 2010-06-23 2015-09-15 International Business Machines Corporation Store peripheral component interconnect (PCI) function controls instruction
JP2013535061A (ja) * 2010-06-23 2013-09-09 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピューティング環境のアダプタを使用可能にするための方法、システム、およびコンピュータ・プログラム
US9213661B2 (en) 2010-06-23 2015-12-15 International Business Machines Corporation Enable/disable adapters of a computing environment
US9342352B2 (en) 2010-06-23 2016-05-17 International Business Machines Corporation Guest access to address spaces of adapter
US9383931B2 (en) 2010-06-23 2016-07-05 International Business Machines Corporation Controlling the selectively setting of operational parameters for an adapter
US9626298B2 (en) 2010-06-23 2017-04-18 International Business Machines Corporation Translation of input/output addresses to memory addresses
JP2019185130A (ja) * 2018-04-02 2019-10-24 株式会社デンソー 電子制御装置および電子制御システム
JP7006461B2 (ja) 2018-04-02 2022-01-24 株式会社デンソー 電子制御装置および電子制御システム
US11915027B2 (en) 2018-04-02 2024-02-27 Denso Corporation Security and data logging of virtual machines

Also Published As

Publication number Publication date
US20050235068A1 (en) 2005-10-20

Similar Documents

Publication Publication Date Title
JP2005309553A (ja) 計算機
EP3798835B1 (en) Method, device, and system for implementing hardware acceleration processing
CN112540941B (zh) 一种数据转发芯片及服务器
US8112611B2 (en) Allocating resources to partitions in a partitionable computer
US8225005B2 (en) Use of peripheral component interconnect input/output virtualization devices to create high-speed, low-latency interconnect
CN106445628A (zh) 一种虚拟化方法、装置和系统
US8918568B2 (en) PCI express SR-IOV/MR-IOV virtual function clusters
US8930507B2 (en) Physical memory shared among logical partitions in a VLAN
US20100153592A1 (en) Use of Peripheral Component Interconnect Input/Output Virtualization Devices to Create Redundant Configurations
US20100250883A1 (en) Apparatus for dynamically migrating lpars with pass-through i/o devices, its method, and its program
JP2016541072A (ja) リソース処理方法、オペレーティング・システム、およびデバイス
US10404800B2 (en) Caching network fabric for high performance computing
JP2002342280A (ja) 区分処理システム、区分処理システムにおけるセキュリティを設ける方法、およびそのコンピュータ・プログラム
US10067900B2 (en) Virtualized I/O device sharing within a distributed processing node system
KR102529761B1 (ko) PCIe 디바이스 및 그 동작 방법
US20090006702A1 (en) Sharing universal serial bus isochronous bandwidth between multiple virtual machines
TW202240414A (zh) PCIe功能及其操作方法
JP2008021252A (ja) 計算機システム及びアドレス割当方法
JP2023509712A (ja) PCIe周辺機器共有
CN116324706A (zh) 分离式存储器池分配
US20050235083A1 (en) Computer system
JPH1185547A (ja) 仮想クラスタ構成方法
KR20230152394A (ko) PCIe 장치 및 이의 동작 방법
CN116893988A (zh) 接口设备及其操作方法
JP2009252202A (ja) コンピュータシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060927

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080610

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080624

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080822

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080924