JP2008021252A - 計算機システム及びアドレス割当方法 - Google Patents

計算機システム及びアドレス割当方法 Download PDF

Info

Publication number
JP2008021252A
JP2008021252A JP2006194534A JP2006194534A JP2008021252A JP 2008021252 A JP2008021252 A JP 2008021252A JP 2006194534 A JP2006194534 A JP 2006194534A JP 2006194534 A JP2006194534 A JP 2006194534A JP 2008021252 A JP2008021252 A JP 2008021252A
Authority
JP
Japan
Prior art keywords
server
card
physical
address
logical
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
JP2006194534A
Other languages
English (en)
Inventor
Keitaro Uehara
敬太郎 上原
Yuji Tsushima
雄次 對馬
Toshiomi Moriki
俊臣 森木
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 JP2006194534A priority Critical patent/JP2008021252A/ja
Priority to US11/561,557 priority patent/US7890669B2/en
Publication of JP2008021252A publication Critical patent/JP2008021252A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】物理サーバ及び論理サーバ間でIOカードを共有する計算機システムを提供する。
【解決手段】物理サーバ又は論理サーバが、IOカードを専有、又は、共有して使用可能に予め設定され、IOハブは、IOカードに対応する物理MMIOアドレスに対して、物理サーバ又は論理サーバの各々に固有な仮想MMIOアドレスを割り当て、割り当てられた仮想MMIOアドレスと、物理MMIOアドレス並びに物理サーバ又は論理サーバに固有のサーバ識別子と、の関係を示す割り当て情報を保持し、物理サーバ又は論理サーバからIOカードへのアクセス要求が送信されたときに、割り当て情報を参照して、アクセス要求からサーバ識別子を抽出して、アクセス要求元の物理サーバ又は論理サーバを識別する
【選択図】図1

Description

本発明は、複数のサーバを統合した計算機システムに関し、特に、物理サーバ及び論理サーバ間でIOカードを共有する計算機システムに関する。
近年の計算機性能の向上、特に、プロセッサのマルチコア化技術の進行によって、従来、複数のサーバに分散していた処理を、一つのサーバに集約してコストを削減する手法が多く用いられている。サーバへの集約には、サーバ分割を用いて、複数のオペレーティングシステムを1台のサーバ上で稼動させる方法が有効である。
サーバ分割には、プロセッサやメモリを含むノード単位でOSを割り当てる物理分割方式と、物理的なプロセッサやメモリを仮想化して計算機中に任意の数の論理的な区画を生成する論理分割方式とがある。これらは、それぞれメリット及びデメリットがある。
物理分割方式は、サーバの物理資源以上には分割できないため、統合できるサーバの数に制限がある。しかし、各サーバはハードウェア資源を専有するため、高い性能が出せる。
一方、論理分割方式は、ハイパバイザや仮想化ソフトウェアと呼ばれるファームウェアによって実現される。論理分割方式では各オペレーティングシステム(ゲストOSと呼ばれる)は、ハイパバイザが提供する論理プロセッサ上で実行される。ハイパバイザによって複数の論理プロセッサが物理プロセッサにマッピングされることによって、ノードよりも細かい単位に区画を分割できる。さらに、プロセッサに関しては、複数の論理区画間で一つの物理プロセッサを時分割で切り替えながら実行することもできる。これによって、物理プロセッサの数よりも多くの論理区画を生成し同時に実行することが可能になる。しかし、論理分割方式では仮想化ソフトウェアが介在するために、オーバヘッドを生じ、物理分割方式と比べると性能が劣る。
このように、両方の方式にはそれぞれメリット及びデメリットがあるため、両者を目的に合わせて適宜柔軟に組み合わせられることが望ましい。
また、これらサーバの物理分割方式及び論理分割方式を用いたサーバ統合に関して、以下のような課題がある。
まず第1の課題は、サーバ毎にIOカードが必要となり、統合の数が搭載可能IOカード数によって制限されることである。そして、第2の課題は、サーバ統合によってシステム全体の性能が落ちる場合があることである。
これらの課題を解決する次のような従来技術が知られている。
論理分割方式におけるサーバ上でのIO性能低下の防止を目的として、IOカードからの直接DMA(Direct Memory Access)を可能にするために、論理サーバに見せるゲストDMAアドレスから主記憶上のホストDMAアドレスへの変換テーブルを持つことで、論理サーバ環境下での直接DMAを実現する技術が知られている(特許文献1参照)。
また、同様の技術として、プロセッサがメモリにアクセスする際に仮想アドレスを物理アドレスに変換するTLBという仕掛けをIOデバイス側にも拡張し、IOデバイス毎に異なるページ変換のエントリを入れることによって、同一のゲストDMAアドレスに対して異なるホストDMAアドレスへの変換を可能とする技術も知られている(非特許文献1参照)。
一方、論理分割方式には、一つのコンピュータを任意の論理区画に分割するサーバ仮想化ソフトウェアが知られている(特許文献2参照)。サーバ仮想化ソフトウェアは、論理サーバ(ゲスト)からのIOアクセスの際に、必ずホストOSを介してIOアクセスを行うことで、複数論理サーバからのIOカードの共有が可能になる。これによって、論理サーバ間で必要なIOカード数を減らすことができる。
特開2004−220218号公報 米国特許第6,496,847号明細書 インテル、Intel Virtualization Technology for Directed I/O Architecture Specification、[online]、[2006年7月6日検索]、インターネット<URL:http://www.intel.com/technology/computing/vptech/>
前述の従来技術では、前述の2つの課題のそれぞれには解決できるが、両方の課題を同時に解決することはできない。
特許文献1では、IOカードと論理サーバとの関係が1対1であることが前提となっており、DMAリクエストの発行元IOカードから論理サーバを識別しているため、IOカードを共有するような方式では対応できない。
一方、特許文献2のように、ホストOS経由でIOにアクセスする方式では、IOからのDMA転送に対して、ホストOSとゲストOS間でメモリコピーが必要となるため、オーバヘッド増加による性能低下が避けられない。
本発明は、このような問題点を鑑みてなされたものであり、複数の物理サーバ及び論理サーバ間でIOカードが共有されている場合にも直接DMA転送を可能とし、性能低下を抑えながらIOカード共有を実現する計算機システムを提供することを目的とする。
本発明の一実施態様によれば、1つ以上のプロセッサとメモリとノースブリッジから構成される一つ以上のノードと、一つ以上のIOカード及び一つ以上のIOカードを接続するIOブリッジを接続するIOカードと、ノードとIOカードと相互接続するスイッチとを備える計算機システムであって、ノードで稼働する物理サーバと、物理サーバ上で稼働するハイパバイザによって構成された論理サーバと、を備え、物理サーバ又は論理サーバが、IOカードを専有、又は、共有して使用可能に予め設定され、IOハブは、IOカードに対応する物理MMIOアドレスに対して、物理サーバ又は論理サーバの各々に固有な仮想MMIOアドレスを割り当て、割り当てられた仮想MMIOアドレスと、物理MMIOアドレス並びに物理サーバ又は論理サーバに固有のサーバ識別子と、の関係を示す割り当て情報を保持し、物理サーバ又は論理サーバからIOカードへのアクセス要求が送信されたときに、割り当て情報を参照して、アクセス要求からサーバ識別子を抽出して、アクセス要求元の物理サーバ又は論理サーバを識別することを特徴とする。
本発明によると、複数の物理サーバ及び論理サーバ間でのIOカードの共有が可能となる。これによって、搭載IOカード数によって制限されていたサーバ統合の台数制限を廃し、より柔軟なサーバ構成とハードウェア資源の有効活用が図れる。
また、IOカードの共有を行った場合にも、IOカードからのDMA転送を可能にする。これにより、物理サーバ・論理サーバ間でIOカードを共有した場合にも、性能低下の影響を少なくできる。
以下に、本発明の実施の形態を添付の図面に基づいて説明する。
まず、本発明の実施の形態の概要を説明する。
本発明の実施の形態の計算機システムは、複数の物理サーバと複数のIOハブとが、スイッチによって接続されて構成される。なお、物理サーバは、ハイパバイザによって複数の論理サーバが構成されていてもよい。これら物理サーバや論理サーバは、それぞれにオペレーティングシステム:Operating System、以下、「OS」と呼ぶ)が稼動し、このOS上でアプリケーションが稼働している。なお、以下、物理サーバや論理サーバ上で稼動するOS及びアプリケーションを「ゲスト」と呼ぶ。
IOハブは、IOカードやIOブリッジが接続される。IOブリッジは、複数のIOカードを接続することができる。IOハブは、IOカードのMMIO領域に対するアクセスを監視し、二以上のゲストから同一のIOカードへのアクセスがあった場合に、このアクセスを調停する機能を有するIOプロセッサを備える。IOプロセッサはIOハブ内に備えられた専用のプロセッサとメモリとによって構成される。なお、計算機システムの物理サーバ又は論理サーバの一部の資源によって、IOプロセッサが実現されてもよい。
計算機システムには、サービスプロセッサ(以下、「SVP」と呼ぶ)が、物理サーバ及びIOカードと通信可能に接続されている。SVPは、管理者やユーザからの指示に基づいて、物理サーバ及び論理サーバと、それら物理サーバ及び論理サーバが使用するIOカードとの間のマッピングを設定する。なお、SVPは、管理者又はユーザによる設定を受け付ける設定コンソールを備える。
次に本発明の動作の概要を説明する。
まず、計算機システムの初期化時に、OS、ファームウェア又はハイパバイザによって、物理サーバ及び論理サーバが使用するIOカードに対応するMMIO領域をメモリ空間上に確保する。本発明では、ハイパバイザ又はファームウェアが、複数のゲストから共有される可能性のあるIOカードに対して、仮想MMIO領域を確保する。各ゲストに対しては、この仮想MMIO領域を見せる。ゲストは、この仮想MMIO領域に対してアクセスすることで、割り当てられたIOカードにアクセスできる。仮想MMIO領域は、IOカードを共有するゲストの数に応じて分割され、異なるゲストは必ず異なる仮想MMIOアドレスとなるように割り当てる。
IOハブは、仮想MMIOアドレスと実際のIOカードのMMIOアドレスである物理MMIOアドレスと、ゲストを識別するためのゲスト識別子と、の変換表を持つ。
この後、ゲストからIOカードに対してのアクセスが実行される。この場合、ゲストは、仮想MMIOアドレスに対してアクセスを発行する。IOハブは、変換表を参照して、この仮想MMIOアドレスを、物理MMIOアドレスとゲスト識別子とに変換する。これによって、IOハブは、ゲストを識別することができる。
次に、ゲストに共有されたIOカードからのDMA転送に対応するために、ゲスト識別子を用いて、次のような処理を実行する。
IOプロセッサは、IOカード固有のMMIO領域に対する書き込みをトラップする。トラップされたMMIO領域に対する書き込みは、IOプロセッサが使う専用のメモリ領域(IOPメモリ)にリダイレクトされ、書き込まれる。また、この書き込みのうち、DMAアドレスの設定に関するアクセスは、設定される物理アドレスの上位ビットにゲスト識別子を埋め込むことによって、後のDMAアクセスの要求元ゲストを識別することが可能となる。
IOプロセッサは、コマンドレジスタに対するアクセスをトラップすると、リダイレクトされたメモリ領域の内容を対応する物理MMIO領域に転送する。この結果、実際のIOカードに対するアクセスが実行され、DMAのリクエストが設定される。
このDMAリクエストの設定を受けて、IOカードは、DMA転送を開始する。このとき、IOハブは、DMA転送のアドレスの上位ビットからゲスト識別子を抽出し、ゲスト変換表を参照して、ゲスト物理アドレスからホスト物理アドレスへと変換することで、IOカードからゲストへの直接のDMAを可能とする。
図1は本発明の第1の実施の形態の計算機システムの一例の構成ブロック図である。
図1に示す計算機システムは、一以上の物理サーバ300と物理サーバ300によって構成される一以上の論理サーバ310とがスイッチ600によって接続されている。
物理サーバ300は、一以上のノード200によって構成される。ノード200は、一以上のCPU100とメモリ120とノースブリッジ110とを備える。CPU100とメモリ120とは、ノースブリッジ110によって接続される。
なお、CPU100がノースブリッジ110に相当する機能を備え、CPU100とメモリ120とが直接接続された構成としてもよい。いずれであっても以下の説明には相違を生じない。また、一つのCPU100内に複数のCPUコアを含むマルチコアCPUであっても同様である。
また、複数のノード200によって一つの物理サーバ200を構成することもできる。この場合は、複数のノード200間はスイッチ600によって接続され、複数のノード200の各CPU100によってSMP(Symmetric Multiple Processor;対称型マルチプロセッサ)を構成する。
また、一つの物理サーバ300上でハイパバイザ500が稼動し、ハイパバイザ500の処理によって物理サーバ300の資源を分割して、一つの物理サーバ300に複数の論理サーバ310を稼働することができる。これら複数の論理サーバ310それぞれにOS400が稼動する。各論理サーバ310は、物理サーバ300が稼働するノード200の計算機資源、すなわちCPU100やメモリ120の一部を専有する。又は、時分割によって計算機資源を共有する。
スイッチ600は、一つ以上のIOハブ700が接続される。IOハブ700は、一つ以上のIOバス850を介して、複数のIOカード800が接続される。また、IOハブ700は、IOブリッジ810を介してより多くのIOカード800を接続することもできる。
IOカード800は、物理サーバ300や論理サーバ310のメモリアドレス空間に直接アクセスするDMA(Direct Memory Access)コントローラ(DMA CTL)803を備える。そして、I/Oカード800は、DMA CTL803によってDMAを実行する物理サーバ300又は論理サーバ310のMMIO(Memory Mapped I/O)のベースアドレスを指定するベースアドレスレジスタ(ADD REG)801と、I/Oカード800に対する要求を指定するコマンドレジスタ(CMD REG)802と、を備える。DMA CTL803は、ADD REG801に書き込まれたアドレスに対して、CMD REG802に書き込まれたコマンドに対応する動作を実行する。なお、I/Oカード800は、PCI規格に準拠した図示しないレジスタ(コンフィグレーションレジスタ、レイテンシタイマレジスタ等)を有する。
なお、IOバス850はPCI−ExpressのようにIOカード800と1対1で接続するリンクであってもよいし、PCIバスのように複数のIOカード800が一つのバスで接続するリンクであってもよい。いずれであっても以下の説明には相違を生じない。
スイッチ600は、物理サーバ300又は論理サーバ310から、任意のIOカード800へのアクセスを可能とする柔軟性を提供する。
IOハブ700は、IOカード共有機構750とIOプロセッサ710を備える。
スイッチ600は、計算機システム全体の構成を管理するSVP900を接続する。SVP900は、管理用ネットワーク920を介して設定コンソール910に接続される。システム構成管理者は、設定コンソール910を用いて計算機システム全体の構成、より具体的には、物理サーバ300及び論理サーバ310の配置や分割、物理サーバ300又は論理サーバ310に対するIOカードの割り当て等を設定する。
図1に示した例では、二つのノード200(ノード200A、ノード200B)が、SMPを構成して一つの物理サーバ300Aを構成する。この物理サーバ300A上で、OS400Aが稼動する。
また、ノード200Cが、1つの物理サーバ300Aを構成する。この物理サーバ300C上でハイパバイザ500Cが稼動する。このハイパバイザ500Cは、論理サーバを構築する。これによって、物理サーバ300Cは、2つの論理サーバ310C1と、310C2と、に分割される。論理サーバ310C1は、OS400C1が稼働し、論理サーバ310C2はOS400C2が稼動する。
スイッチ600は、二つのIOハブ700(IOハブ700A及びIOハブ700B)を接続する。IOハブ700Aは、一つ以上のIOバス850を介して複数のIOカード800を接続する。IOバス850AにはIOカード800Aが接続され、IOバス850BにはIOカード800Bが接続される。また、IOバス850Cは、IOブリッジ810を介して、二つのIOカード800C及び800Dを接続する。
図2は、IOプロセッサ710の構成ブロック図である。
IOプロセッサ710は、IOアクセスを監視したり、IOアクセスの変換処理を実行する。
IOプロセッサ710は、IOP CPU711とIOPメモリ712とIOPノースブリッジ713とを備える。このIOP CPU711とIOPメモリ712とが、IOPノースブリッジ713によって接続される。
なお、前述の図1の例では、IOプロセッサ710はIOハブ700の中に備えられていたが、IOプロセッサをIOハブ700とは異なる構成として、独立にスイッチ600を介して接続されていてもよい。また、物理サーバ300又は論理サーバ310の一部が、IOプロセッサ710に相当する機能を提供してもよい。
図3は、IOカード共有機構750の機能ブロック図である。
IOカード共有機構750は、MMIOライトデコーダ751とDMAリクエストデコーダ752とMMIOイニシャライザ760とIOカード共有設定740とを備える。
MMIOライトデコーダ751は、スイッチ600から転送されたMMIOライトシステムTx1100を受信すると、これをIOプロセッサ710に対するメモリ書き込みや割り込みに変換する。また、MMIOライトシステムTx1100に含まれるフィールドを加工してMMIOライトPCITx1110を生成し、生成したMMIOライトPCITx1110をIOバス850に発行する。
DMAリクエストデコーダ752は、IOバス850から転送されたDMAリクエストPCITx1120を受信すると、発行元のゲストを識別し、DMAリクエストPCITx1120に含まれるDMAアドレスを変換してDMAリクエストシステムTx1130を生成し、生成したDMAリクエストシステムTx1130をスイッチ600に発行する。
MMIOイニシャライザ760は、ハイパバイザ又はゲストから発行され、スイッチ600から転送されたIO数え上げ要求1140を受信すると、IOカードにIO数え上げ要求1141を発行する。そして、IOカード800からIO数え上げ応答1142を受信すると、このIO数え上げ応答1142の内容及びIOカード共有設定740の内容を参照して、IO数え上げ要求1140に対するIO数え上げ応答1143を生成する。そして、生成されたIO数え上げ応答1143を、要求の発行元に発行する。
IOカード共有設定740は、IOハブ850に接続された各IOカード800について、共有又は専有が設定されたテーブルを保持する。サービスプロセッサ900は、IOカード共有設定740のテーブルを参照又は更新する。
図4はIOカード共有設定740の一例の説明図である。
IOカード共有設定740は、物理カードIDフィールド、IOカード種別フィールド、IOカード共有属性フィールドを含むエントリによって構成される。このエントリは、IOカード800毎に設定される。
物理カードIDフィールドは、IOカード800の識別子である物理IOカードID741を格納する。IOカード種別フィールドは、IOカード800の種別を示す識別子であるIOカード種別742を格納する。IOカード共有属性フィールドは、物理サーバ又は論理サーバ毎に、当該IOカード800がそのサーバに共有される、専有される、又は、アクセスが禁止される、ことを示す識別子である属性743を格納する。
図4の例では、物理IOカードID741が「1」であるIOカード800は、IOカード種別742が「FC HBA」であることが示されている。このIOカード800は、サーバ1及びサーバ2に共有されているが、サーバNはアクセスが禁止されている。さらに、サーバ1は、当該IOカードを使用中であり、サーバ2は当該IOカードを未使用であることが示されている。
図5乃至図9は、IOハブ700が送受信する各Txの詳細な内容を示す。
図5は、MMIOライトシステムTx1100の一例を示す説明図である。
MMIOライトシステムTx1100は、アクセス種別フィールド、宛先ノードフィールド、発行元ノードフィールド、TxIDフィールド、仮想MMIOアドレスフィールド及びライトデータフィールドを含む。
アクセス種別フィールドは、当該Txのアクセス種別1106を格納する。アクセス種別1106は、例えば、アクセス先がメモリであるかIOであるか、そのアクセスはリードであるかライトであるか等を示す識別子である。MMIOライトシステムTx1100では、MMIO領域に対するライトであることを示すアクセス種別1106を格納する。
宛先ノードフィールド及び発行元ノードフィールドは、当該Txの宛先ノード1101及び発行元ノード1102を格納する。これらは、スイッチ600がルーティングのために使用する。IOハブ700が受信するMMIOライトシステムTx1100では、宛先ノード1101はIOハブ700を示す識別子である。
TxIDフィールドは、発行元ノードが各トランザクションを一意に識別可能な識別子であるTxID1103を格納する。
仮想MMIOアドレスフィールドは、仮想MMIOアドレス1104を格納する。この仮想MMIOアドレス1104は、MMIOライトシステムTx1100の発行元のゲスト毎に割り当てられているアクセス対象のIOカードの仮想MMIOアドレスである。なお、通常はMMIOアドレス毎に異なるレジスタが割り当てられる。
ライトデータフィールドは、MMIOシステムライトTx1100の指示によって書き込まれるライトデータ1105を格納する。
図6は、MMIOライトPCITx1110の一例の説明図である。
MMIOライトPCITx1110は、アクセス種別フィールド、TxIDフィールド、物理MMIOアドレスフィールド及びライトデータフィールドを含む。
アクセス種別フィールドは、MMIOライトPCITxであること、及び、ライト又はリードであることを示すアクセス種別1111を格納する。
TxID1112は、発行元ノード(この場合はIOハブ700)がトランザクションを一意に識別可能な識別子であるTxID1112を格納する。
物理MMIOアドレスフィールドは、アクセス対象のIOカード800の計算機システム上での実際のMMIOアドレス1113(物理MMIOアドレス1113)を格納する。
ライトデータフィールドは、MMIOライトPCITx1110の指示によって書き込まれるライトデータ1114を格納する。
図7はDMAリクエストPCITx1120の一例の説明図である。
DMAリクエストPCITx1120は、アクセス種別フィールド、TxIDフィールド、ゲスト修飾DMAアドレスフィールド及びライトデータフィールドを含む。
アクセス種別フィールドは、DMAリクエストPCITxであること、及び、ライト又はリードであることを示すアクセス種別1121を格納する。
TxIDフィールドは、発行元ノード(この場合はIOカード又はIOデバイス)がトランザクションを一意に識別可能な識別子であるTxID1122を格納する。
ゲスト修飾DMAアドレスフィールドは、ゲスト識別子とDAMアドレスとを含むゲスト修飾DMAアドレス1123を格納する。このゲスト修飾DMAアドレス1123は、図8で詳述する。
ライトデータフィールドは、DMAリクエストPCITxがライトトランザクションの場合にのみ、DMAリクエストPCITxの指示によって書き込まれるライトデータ1124を格納する。
図8は、ゲスト修飾DMAアドレス1123の説明図である。
ゲストDMAアドレス1115は、ゲストが認識しているDMA転送先、又は、転送元の主記憶アドレスである。
PCIトランザクションのアドレス空間は64ビットあり、通常、実際に搭載される物理メモリの空間よりも遥かに大きい。このため、ゲストDMAアドレスは、実際に使用されているアドレス使用部1117の他に、上位に未使用のアドレス未使用部1116を含む。
そこで、このアドレス未使用部1116の一部又は全部に、ゲスト識別子1125を埋め込むことによって、ゲスト修飾DMAアドレスを生成する。これを受け取ったDMAリクエストデコーダ752は、ゲスト修飾DMAアドレスに埋め込まれたゲスト識別子1125を参照することによって、アクセス対象のゲストを知ることができる。
図9は、DMAリクエストシステムTx1130の一例の説明図である。
DMAリクエストシステムTx1130は、アクセス種別フィールド、宛先ノードフィールド、発行元ノードフィールド、TxIDフィールド、ホストDMAアドレスフィールド及びライトデータフィールドを含む。
アクセス種別フィールドは、アクセス対象がメモリであるDMAリクエストシステムTxであること、及び、ライト又はリードであることを示すアクセス種別1136を格納する。
宛先ノードフィールドは、当該Txの宛先であるメモリが存在する宛先ノード1131を格納する。
発行元ノードフィールドは、当該Txの発行元ノード1132を格納する。なお、DMAリクエストシステムTc1130では、発行元ノード1132は、IOハブ700である。
TxIDフィールドは、発行元において一意にトランザクションを識別可能な識別子であるTxID1133を格納する。
ホストDMAアドレスフィールドは、実際にDMAを実行するメモリの物理アドレスであるホストDMAアドレス1134を格納する。
ライトデータフィールドは、当該Txがライトトランザクションの場合に、ライトデータ1135を格納する。
次に、IOカード共有機構750の動作を説明する。
図10は、MMIOイニシャライザ760の初期化処理の概要を示す説明図である。
MMIOイニシャライザ760は、MMIO領域割り当て表1230を備える。このMMIO割り当て表1230は、IOカード共有設定740に従って初期化される。
MMIOイニシャライザ760は、ゲストからIO数え上げ要求1140を受信すると、該当するIOカード800を物理初期化が必要であるか否かを判定する。物理初期化が必要である場合は、IO数え上げ要求1141を、対象のIOカードに発行する。
また、MMIOイニシャライザ760は、MMIO領域割り当て表1230を参照して、要求元ゲストに割り当てる仮想MMIOアドレスを決定する。そして、決定した仮想MMIOアドレスをMMIOライトデコーダ751が備えるMMIOアドレス変換表720に登録し、要求元のゲストにIO数え上げ応答1143として返送する。
図11は、MMIO領域割り当て表1230の一例の説明図である。
MMIO領域割り当て表230は、物理IOカードIDフィールド、開始MMIOアドレスフィールド、アドレス範囲フィールド、最大共有ゲスト数フィールド及び使用状態フィールドを含む一以上のエントリを備える。
物理カードIDフィールドは、物理IOカードID741を格納する。物理IOカードID741は、IOカード共有設定740の物理カードID741の値と同一である。
開始MMIOアドレスフィールドは、当該IOカードのMMIOアドレスの先頭アドレスである開始MMIOアドレス1231を格納する。アドレス範囲フィールドは、当該IOカードが使用するMMIO領域のアドレス範囲1233を格納する。
最大共有ゲスト数フィールドは、当該IOカードを共有可能な最大のゲスト数である共有可能最大ゲスト数1234を格納する。
使用状態フィールドは、当該IOカードの使用状態1235を格納する。使用状態1235とは、共有されるゲスト毎のビットマップとして示され、通常使用である場合はビットを1に、未使用である場合はビットを0に、それぞれ設定する。
図12は、MMIOアドレス変換表720の一例の説明図である。
MMIOアドレス変換表720は、仮想MMIOアドレスフィールド、物理MMIOアドレスフィールド、ゲスト識別子フィールド及びIOPメモリアドレスフィールドを含む一以上のエントリによって構成される。
仮想MMIOアドレスフィールドは、ゲストに割り当てられた仮想MMIOアドレス1104を格納する。物理MMIOアドレスフィールドは、仮想MMIOアドレス1104に対応する物理MMIOアドレス1113を格納する。ゲスト識別子フィールドは、仮想MMIOアドレスを使用するゲストのゲスト識別子1125を格納する。IOPメモリアドレスフィールドは、ゲストに割り当てたIOPメモリ712のIOPメモリアドレス1200を格納する。
IOカード共有機構750は、このMMIOアドレス変換表720を参照することによって、仮想MMIOアドレス1104と、物理MMIOアドレス1113、ゲスト識別子1125及びIOPメモリアドレス1200と、を相互に変換できる。
次に、MMIOイニシャライザ760の初期化処理の動作を具体的に説明する
図13乃至図15は、MMIOイニシャライザ760の初期化処理のフローチャートである。
まず、MMIOイニシャライザ760は、スイッチ600を介してIO数え上げ要求1140を受信する(ステップS1500)。
このIO数え上げ要求1140は、一般的に、ゲストからPCIコンフィグレーション空間に対する読み出し要求として送信される。
具体的には、ゲストは、PCIコンフィグレーション空間に、バス番号、デバイス番号及びファンクション番号を与える。これに対して、MMIOイニシャライザ760は、対応するデバイスが存在するか否かを返す。後述するように、デバイス番号に対応するIOカード800が存在する場合は、当該デバイスのMMIO領域のベースアドレスとサイズ(領域)を返す。デバイス番号に対応するデバイスが存在しない場合は、全てのビットが1の値(マスターアボート)を返す。
次に、MMIOイニシャライザ760は、物理初期化が必要か否かを判定する(ステップS1510)。なお、物理初期化は、リセットの直後又はIO構成が変わった後などに、各物理IOデバイスに対して一度だけ実行される。物理初期化が必要でない場合は、ステップS1520に進む。物理初期化が必要な場合は、サブステップS1610に進む。なお、サブステップS1610の処理の詳細は図15で後述する。
ステップS1520では、要求元ゲストが対象IOにアクセス可能か否かを判定する。MMIOイニシャライザ760は、IOカード共有設定740を参照して、当該IOカードに対応する要求元ゲストのIOカード共有属性を取得する。IOカード共有属性が「禁止」である場合は、当該要求元ゲストはアクセスできない。要求元ゲストがアクセスできない場合はステップS1530に進む。要求元ゲストがアクセス可能な場合はステップS1540に進む。
ステップ1530では、MMIOイニシャライザ760は、対象IOカードが存在しない旨のIO数え上げ応答1143(マスターアボート)を要求元ゲストに送信する。
ステップ1540では、対象IOカードは共有可能であるか否かを判定する。MMIOイニシャライザ760は、要求元ゲストのIOカード共有属性が共有可能であり、かつ、未使用であることを示している場合は、サブステップS1560に進む。要求元ゲストのIOカード共有属性が共有可能でない場合は、ステップS1550に進む。
ステップ1550では、共有可能でない要求元のIOカードに対して、物理IOカードの情報を応答する。MMIOイニシャライザ760は、MMIO領域割り当て表1230から、当該IOカードの開始MMIOアドレスとアドレス範囲とを取得し、これらをIO数え上げ応答1143として要求元ゲストに送信する。
サブステップ1560では、共有可能なIOカードに対して仮想MMIOアドレス割り当てを行うサブステップである。なお、サブステップ1560の処理の詳細は図14で後述する。
図14は、図13のサブステップS1560の仮想MMIO割り当て処理のフローチャートである。
まず、MMIOイニシャライザ760は、MMIO領域割り当て表1230を参照して、IOカード800の使用状態1235を取得する。そして使用状態1235の中から、未使用のインデックス(ビット)を検索する。未使用のインデックスが検索されたら、使用状態の当該領域を使用中に変更する(ステップS1570)。
次に、MMIOイニシャライザ760は、MMIO領域割り当て表1230を参照して、対象のIOカードの開始MMIOアドレス1232を取得する。そして、取得した開始MMIOアドレス1232を元に、仮想MMIOアドレス1104を算出する(ステップS1580)。
具体的には、アドレス範囲1233と、空き領域のオフセットに1を加算した値とを乗じた値を算出し、算出された値と取得した開始MMIOアドレス1232とを加算した値を仮想MMIOアドレス1104とする。すなわち、次の計算式によって仮想MMIOアドレス1104を算出する。
仮想MMIOアドレス=開始MMIOアドレス+(アドレス範囲×(空き領域のオフセット+1))
この計算式によって、仮想MMIOアドレスが算出される。
次に、MMIOイニシャライザ760は、ステップS1580で算出された仮想MMIOアドレス1104を、MMIOアドレス変換表720に登録する。MMIOイニシャライザ760は、MMIOアドレス変換表720に新たなエントリを作成する。そして、仮想MMIOアドレスフィールドに算出された仮想MMIOアドレス1104を登録する。また、物理MMIOアドレスフィールドにIOカードの物理MMIOアドレス1113を登録する。また、ゲスト識別子フィールドに、要求元ゲストのゲスト識別子1125を登録する。また、IOPメモリ712上にアドレス範囲1233分の領域を確保し、そのアドレスをIOPメモリアドレスフィールドのIOPメモリアドレス1200に登録する(ステップS1590)。
これによって、移行は、MMIOライトデコーダ751のMMIOアドレス変換表720を参照することによって、仮想MMIOアドレス1104から物理MMIOアドレス1113への変換とゲスト識別子1125の抽出とが可能となる。
次に、MMIOイニシャライザ760は、ステップS1580で算出した仮想MMIOアドレス1104とアドレス範囲1233とを、IO数え上げ応答1143として要求元ゲストに送信する(ステップS1600)。その後、仮想MMIOアドレス割り当て処理を終了する。
図15は、図14のサブステップS1610の、物理初期化処理のフローチャートである。
まず、MMIOイニシャライザ760は、IOバス850に対してIO数え上げ要求1141を発行する(ステップS1620)。
次に、MMIOイニシャライザ760は、IOバス850からIOバス数え上げ応答1142を受信する(ステップS1630)。
MMIOイニシャライザ760は、IOバス数え上げ応答1142に基づいて、当該IOカードが存在するか否かを判定する。IOカードが存在しない場合は、ステップS1650進む。IOカードが存在する場合は、ステップS1660に進む。
ステップS1650では、MMIOイニシャライザ760は、当該IOは存在しない旨のIO数え上げ応答1143(マスターアボート)を要求元のゲストに送信する。その後、物理初期化処理を終了する。
ステップ1660では、MMIOイニシャライザ760は、IOカード共有設定740を参照して、当該IOカードの最大共有ゲスト数を取得する。
次に、MMIOイニシャライザ760は、最大共有ゲスト数が1かどうかを判定する(ステップS1670)。共有最大ゲスト数が1である場合は、ステップS1680に進む。共有最大ゲスト数が2以上の場合は、ステップS1690に進む。
最大共有ゲスト数が1の場合は、当該IOカードは共有されない、すなわち、要求ゲストのみが専有することができる。従って、ステップ1680では、MMIOイニシャライザ760は、ステップS1630で受信したIO数え上げ応答1142に含まれる情報をそのままIO数え上げ情報1143として要求元ゲストに送信する。その後、物理初期化を終了する。
ステップ1690では、MMIOイニシャライザ760は、MMIO領域割り当て表1230に、新たにエントリを登録する。このエントリに、IO数え上げ応答1142に含まれるMMIO開始アドレス1232、アドレス範囲1233及びステップ1660で求めた最大共有ゲスト数1234を登録する。そして、使用状態1235を、全て未使用を示すビットマップに初期化する。
次に、MMIOイニシャライザ760は、IO数え上げ応答1143を送信する(ステップS1700)。このIO数え上げ応答1143は、MMIO開始アドレス1232とアドレス領域1233とが含まれる。アドレス領域1233は、アドレス範囲1233に、最大共有ゲスト数1234に1を加算した値を乗算した値である。すなわち、以下の計算式によってアドレス領域1233を計算する。
アドレス領域=アドレス範囲×(最大共有ゲスト数+1)
その後、物理初期化処理を終了する。
以上の処理によって、物理MMIO領域の直後に、最大共有ゲスト数分の仮想MMIO領域が予約される。
図16は、仮想MMIOアドレスと物理MMIOアドレスとの関係を示す説明図である。
なお図16では、MMIO開始アドレス1232が“A”、アドレス範囲1233が“R”に、それぞれ設定されている場合を示す。
このとき、物理MMIOアドレス1113の開始アドレスはAに設定されているので、ゲスト1に割り当てられる仮想MMIOアドレス1104−Bは、開始アドレスAにRを加算したアドレス(A+R)に設定される。また、ゲスト2に割り当てられる仮想MMIOアドレス1104−Cは、A+RにさらにRを加算した値(A+2R)に設定されえる。
このように、アドレス範囲毎に仮想MMIOアドレスを割り当てることによって、それぞれのゲストが用いる仮想MMIOアドレスが重ならないようにマップされる。従って、各ゲストに割り当てられた仮想MMIOアドレスは、各ゲストに対する一意のアドレスとなるように割り当てられる。
図17はIOPメモリ712のアドレスマップの説明図である。
なお図17では、ゲスト1に対してIOPメモリアドレス1200−Pが、ゲスト2に対してIOPメモリアドレス1200−Qが、それぞれ割り当てられている場合を示す。
これらのメモリアドレスは、それぞれの領域が重ならないようにIOPメモリ712上に確保される。このIOPメモリ712は、実際のMMIO領域への書き込みを一時的に保持するために使用される。
次に、ゲストからのMMIOライト要求時の動作を説明する。
図18は、MMIOライトの処理を示す説明図である。
なお、図18は、図13乃至図15で前述した初期化設定が終了した後、ゲストからIOカード800に対するアクセス要求がされた場合の動作を示す。
IOカード800の制御レジスタは、メモリ空間上のMMIO領域としてマップされている。従って、ゲストのIOカード800に対する要求は、MMIO領域への書き込みとして実行される。
このMMIO領域への書き込みは、スイッチ600を介して、MMIOライトシステムTx1100として発行される。このMMIOライトシステムTx1100は、対象となるIOカード800を含むMMIOライトデコーダ751によってトラップされる。
MMIOライトデコーダ751は、MMIOライトデコーダ751を受信すると、MMIOライトシステムTx1100の内容を参照して、ゲストからのアクセス要求はアクセス対象のIOカード800の、どのレジスタに対してのアクセスであるかを判断する。また、このとき、MMIOライトレコーダ750は、MMIOアドレス変換表720を参照して、物理MMIOアドレス1113とゲスト識別子1125、IOPメモリアドレス1200を取得する。
なお、ホストからのアクセス要求がコマンドレジスタ(CMD REG)に対するものであった場合は、MMIOライトレコーダ750は、IOプロセッサ710のIOP CPU711に割り込みを送信する。コマンドレジスタ(CMD REG)でない場合は、IOPメモリ721上の、MMIOライトシステムTx1100を受けたIOPメモリアドレス1200をベースとする領域に、当該データを書き込む。
割り込みを受けたIOP CPU711は、対応するIOPメモリアドレス1200から始まる領域を読み出して、物理IOカード800上の物理MMIOアドレス1113にコピーする。この時、アドレスレジスタに対応する領域のデータをコピーする場合は、MMIOライトデコーダ751は、ゲストDMAアドレス1115の上位のアドレス未使用部1116にゲスト識別子1125を埋め込んでゲスト修飾DMAアドレス1123を生成し、生成されたゲスト修飾DMAアドレス1123を含むMMIOライトPCITx1110を生成して、IOバス850に発行する。
以上の動作によって、同時に複数のゲストが同一のIOカード800をアクセスした場合でも、実際のIOカード800へのアクセスはIOプロセッサ710によって調停される。また、ゲストを識別するゲスト識別子1125がゲストDMAアドレスに埋め込まれているため、後にIOバス850からDMAリクエストが到着した場合にも、要求元のゲストを識別することが可能となる。
図19は、DMAリクエストデコーダ752の処理を示す説明図である。
DMAリクエストデコーダ752は、DMAアドレス変換表730とアドレスデコーダ753とを含む。
DMAリクエストデコーダ752は、IOバス850からDMAリクエストPCITx1120を受信すると、まず、DMAリクエストPCITx1120から、ゲストDMAアドレス1115とゲスト識別子1125とを抽出する。
次に、DMAリクエストデコーダ752は、DMAアドレス変換表730を参照して、抽出したゲスト識別子からゲストDMAアドレス1115とホストDMAアドレス1134との変換表へのポインタ731を取得する。そして、取得したポインタ731が示す表を参照して、ゲストDMAアドレス1115に対応するホストDMAアドレス1134を取得する。
また、DMAリクエストデコーダ752は、変換されたホストDMAアドレス1134を、アドレスデコーダ753を用いてデコードし、宛先ノード1131を取得する。
DMAリクエストデコーダ752は、取得した宛先ノード1131とホストDMAアドレス1134とを、DMAリクエストシステムTx1130に含め、スイッチ600に発行する。
なお、DMAアドレス変換表730のポインタ731がNULLであった場合は、DMAリクエストデコーダ752は、ゲストDMAアドレス1115をそのままホストDMAアドレス1134とする。
以上の一連の動作により、複数のゲストからIOカードが共有されている場合に、アクセス元のゲストを識別し、識別したゲスト識別子をゲストDMAアドレスに埋め込み、DMAリクエストからゲスト識別子を抽出することで、ゲストDMAアドレスを適切にホストDMAアドレスへと変換し、直接ゲストのメモリ空間上へとDMA転送することができる。
図20は、DMAアドレス変換表730の一例の説明図である。
DMAアドレス変換表730は、図20に示すように、ゲスト識別子1125とポインタ731との対応表7301と、ゲストDMAアドレス1115とホストDMAアドレス1134との対応表7302とを含む二段階の表として構成される。
ポインタ731は、ゲスト識別子に対応する対応表7312がどれであるかを示すポインタを含む。
なお、DMAアドレス変換表730は、ハイパバイザ500がIOカード共有設定740を用いて生成する。なお、ハイパバイザ500がなく、ゲストが物理サーバ300上で直接動作する場合は、DMAアドレスの変換は必要ないため、当該ゲストに関するポインタ731にNULLを設定する。
以上のように、本発明の第1の実施の形態の計算機システムは、各IOカードの物理MMIOアドレスに対応した仮想MMIOアドレスを、それぞれのゲストに割り当てることによって、複数の物理サーバ又は論理サーバ間でのIOカードを共有することが可能となる。これによって、搭載IOカード数によって制限されていたサーバ統合の台数制限を廃し、より柔軟なサーバ構成とハードウェア資源の有効活用が図れる。
特に、IOハブは、物理MMIOアドレスと、仮想MMIOアドレス及びゲスト識別子とを相互に変換するので、IOカードの共有を実現しつつ、IOカードからのDMA転送を可能にする。これによって、物理サーバ及び論理サーバ間でIOカード800を共有した場合にも、性能低下の影響を少なくできる。
また、IOブリッジによって接続されたIOカード800でも、要求元のゲストを識別することができ、DMA転送を可能にする。
次に第1の実施の形態の第1の変形例を説明する。
前述したように、第1の実施の形態では、MMIOライトデコーダ751は、IOカード800のMMIO領域のコマンドレジスタやアドレスレジスタに対する書き込みを直接トラップする。しかし、近年、IOカードの高速化に伴い、主記憶アクセスに比べて遅いMMIO領域へのアクセスの回数をなるべく減らすために、複数のコマンドを1回のMMIOアクセスにより起動できるコマンドチェイン方式が用いられる。
そこで、第1の変形例では、IOカード800がコマンドチェイン方式を用いる場合のMMIOライトデコーダ751及びIOプロセッサ710の動作を示す。
図21は、コマンドチェイン方式におけるゲストMMIO領域1220とゲストメモリ領域1300とを示す説明図である。
コマンドチェイン方式では、ゲストメモリ領域1300の一部のドライバ用メモリ領域1305に、コマンドチェイン1310用のメモリ領域を備える。ゲストからのIOカード800に対するコマンドは、このコマンドチェイン1310用のメモリに書き込まれる。
ホストからのIOカード800へのアクセス要求は、一旦ゲストメモリ1300のコマンドチェイン1310に格納される。そして、実際のIOカード800へのアクセス要求の起動は、MMIO領域上のコマンドチェインテイルポインタ1330への書き込みを契機とする。IOカード800は、コマンドチェインヘッドポインタ1320で示される素ドレスと、コマンドチェインテイルポインタ1330で示されるアドレスとの間に格納されたコマンドチェイン1310をIOカード800上のレジスタに転送する。これによって、コマンドチェインによって指示されるコマンドがまとめて実行される。
MMIOライトデコーダ751は、コマンドチェインテイルポインタ1330への書き込みをトラップすると、IOプロセッサ710上のIOP CPU711へと割り込みを発行する。割り込みを受けたIOP CPU711は、IOPメモリ712上にコマンドチェイン1310をコピーする。この時に、DMAアドレスに対応するレジスタに、ゲスト識別子1125を埋め込むことによって、DMAリクエスト時にゲストの識別ができるようにしておく。ゲストメモリ領域1300からIOPメモリ712へとコマンドチェイン1310のコピーが終わると、IOP CPU711は、実際の物理MMIO上のコマンドチェインテイル1330ポインタに対して、IOPメモリ712上のコマンドチェインの末尾のアドレスを書き込む。これによって、IOカード800のコマンドを起動する。
このように、本発明の第1の実施例の第1の変形例による計算機ステムは、コマンドチェインを用いるIOカード800に対しても適用できる。
次に、第1の実施の形態の第2の変形例を説明する。
第1の実施携帯では、IOプロセッサ710は、独立したプロセッサ(IOP CPU711)とメモリ(IOPメモリ712)として構成した。第2の変形例では、これらをノードに備えたCPU100及びメモリ120の資源の一部を用いる。より具体的には、サーバのリソースの一部をIO処理専用として割り当ててもよいし、ハイパバイザ500を用いて、CPU100を時分割してIO処理として割り当ててもよい。なお、論理分割された一部のリソースをIO処理に用いる形態を、IOパーティション方式と呼ぶ。
MMIOライトデコーダ751は、IOプロセッサ710に対する直接的なパスの代わりに、IO処理用のメモリのベースアドレス、ノードID及び割り込みを発行するCPUのIDを設定するためのレジスタを備える。
MMIOライトデコーダ751は、前述したIOプロセッサ710のIOP CPU711への割り込みの発行や、IOPメモリ712への書き込みが必要なケースでは、上記レジスタの値に従ってシステムTxを生成し、スイッチ600を経由してIO処理を実行するノードに転送する。
次に本発明の第2の実施の形態について説明する。
第2の実施形態では、前述した第1の実施形態におけるIOハブ700とスイッチ600とを集約した機能を持つノードコントローラ1000を備える計算機システムである。
図22は、第2の実施の形態の計算機システムの構成ブロック図である。
なお、前述した第1の実施の形態と同一の構成には同一の符号を付し、その説明は省略する。
ノードコントローラ1000(ノードコントローラ100A)は、スイッチ600、IOハブ700、ノースブリッジ110を一つの昨日モジュールとして集約されたものである。
このノードコントローラ1000は、1つのノード210Aに備えられる。
IOハブ700は、前述の第1の実施の形態と同様に、IOバス850を介してIOカード800やIOブリッジ810を接続する。IOハブ700は、前述のようにIOカード共有機構750を備え、IOカード800を共有する。一方、スイッチ600は、他のノード210のスイッチ600とノード間リンク1010を介して相互に接続し、計算機システム全体の任意のノードにトランザクションを転送する。なお、これらの処理は前述した第1の実施の形態と同様である。
なお、第2の実施の形態では、IOプロセッサ710は、IOハブ700に備えるよりも、前述の第1の実施例の第2の変形例と同様に、ノードの210に備える一部のCPU100やメモリ120をIO処理用とする方が望ましい。この場合、使用するCPU100やメモリ120は、IOハブ700と同一ノード210Aのものであってもよいし、異なるノード210Aにあってもよい。
以上のように、本発明は複数のサーバから構成される計算機システム及びそのチップセットに対して適用できる。
本発明の第1の実施の形態の計算機システムの構成ブロック図である。 本発明の第1の実施の形態のIOプロセッサの構成ブロック図である。 本発明の第1の実施の形態のIOカード共有機構の機能ブロック図である。 本発明の第1の実施の形態のIOカード共有設定の一例の説明図である。 本発明の第1の実施の形態のMMIOライトシステムTxの一例の説明図である。 本発明の第1の実施の形態のMMIOライトPCITxの一例の説明図である。 本発明の第1の実施の形態のDMAリクエストPCITxの一例の説明図である。 本発明の第1の実施の形態のゲスト修飾DMAアドレスの説明図である。 本発明の第1の実施の形態のDMAリクエストシステムTxの一例の説明図である。 本発明の第1の実施の形態のMMIOイニシャライザの初期化処理の概要を示す説明図である。 本発明の第1の実施の形態のMMIO領域割り当て表の一例の説明図である。 本発明の第1の実施の形態のMMIOアドレス変換表の一例の説明図である。 本発明の第1の実施の形態のMMIOイニシャライザの初期化処理のフローチャートである。 本発明の第1の実施の形態の仮想MMIO割り当て処理のフローチャートである。 本発明の第1の実施の形態の物理初期化処理のフローチャートである。 本発明の第1の実施の形態の仮想MMIOアドレスと物理MMIOアドレスとの関係を示す説明図である。 本発明の第1の実施の形態のIOPメモリのアドレスマップの説明図である。 本発明の第1の実施の形態のMMIOライトの処理を示す説明図である。 本発明の第1の実施の形態のDMAリクエストデコーダの処理を示す説明図である。 本発明の第1の実施の形態のDMAアドレス変換表の一例の説明図である。 本発明の第1の実施の形態の変形例のコマンドチェイン方式におけるゲストMMIO領域とゲストメモリ領域とを示す説明図である。 本発明の第2の実施の形態の計算機システムの構成ブロック図である。
符号の説明
100 CPU
110 ノースブリッジ
120 メモリ
200、210 ノード
300 物理サーバ
310 論理サーバ
400 OS
500 ハイパバイザ
600 スイッチ
700 IOハブ
710 IOプロセッサ
720 MMIOアドレス変換表
730 DMAアドレス変換表
750 IOカード共有機構
800 IOカード
810 IOブリッジ
850 IOバス
900 サービスプロセッサ
910 設定コンソール
1000 ノードコントローラ

Claims (10)

  1. 一つ以上のプロセッサとメモリとノースブリッジとから構成される一つ以上のノードと、
    一つ以上のIOカードと一つ以上のIOカードを接続するIOブリッジとを接続するIOハブと、
    前記ノードと前記IOハブとを相互接続するスイッチと、を備える計算機システムであって、
    一又は複数のノードによって稼働する物理サーバと、論理的に分割された前記物理サーバによって稼働する論理サーバと、を備え、
    前記物理サーバ又は前記論理サーバが、前記スイッチを介して前記IOハブに接続された前記IOカードを専有又は共有して使用可能に予め設定され、
    前記IOハブは、
    前記IOカードに対応する物理MMIOアドレスに、前記物理サーバ又は前記論理サーバの各々に固有な仮想MMIOアドレスを割り当て、
    前記割り当てられた仮想MMIOアドレスと、前記物理MMIOアドレスと、前記物理サーバ又は前記論理サーバに固有のサーバ識別子と、の関係を示す割り当て情報を保持し、
    前記物理サーバ又は前記論理サーバから前記IOカードへのアクセス要求を受信した場合は、前記割り当て情報を参照して、前記アクセス要求から前記サーバ識別子を抽出し、
    前記抽出されたサーバ識別子に基づいて、前記アクセス要求元の前記物理サーバ又は前記論理サーバを識別することを特徴とする計算機システム。
  2. 前記IOハブは、
    前記物理サーバ又は前記論理サーバから前記IOカードへのアクセス要求を受信した場合は、前記サーバ識別子を前記受信したアクセス要求と共に前記IOカードに送信し、
    前記IOカードから前記アクセス要求に対応するDMA要求を受信した場合は、前記DMA要求に含まれる前記サーバ識別子を抽出して、前記抽出されたサーバ識別子に基づいて、前記DMA要求先の前記物理サーバ又は前記論理サーバを識別することを特徴とする請求項1に記載の計算機システム。
  3. 前記IOハブは、
    前記DMA要求に含まれるDMAアドレスを、前記識別されたDMA要求先の前記物理サーバ又は前記論理サーバに対応したアドレスに変換して、
    前記変換されたアドレスに基づいて、前記IOカードから送信されたDMA要求を前記識別された前記物理サーバ又は前記論理サーバのメモリ空間に転送することを特徴とする請求項2に記載の計算機システム。
  4. 前記IOハブは、
    前記物理サーバ又は前記論理サーバから前記IOカードへのアクセス要求を受信した場合は、前記アクセス要求に含まれるDMAアドレスの上位ビットに前記サーバ識別子を埋め込んで前記IOカードに送信し、
    前記IOカードから前記アクセス要求に対応するDMA要求を受信した場合は、前記DMA要求に含まれるDMAアドレスの上位ビットに埋め込まれた前記サーバ識別子を抽出して、前記抽出されたサーバ識別子に基づいて、前記DMA要求先の前記物理サーバ又は前記論理サーバを識別することを特徴とする請求項2に記載の計算機システム。
  5. 一つ以上のプロセッサとメモリとノードコントローラとから構成される一つ以上のノードと、
    一つ以上のIOカードと、一つ以上のIOカードを接続するIOブリッジと、を備え、
    前記ノードコントローラが前記ノード間及び前記ノードと前記IOカードとを相互接続する計算機システムであって、
    前記ノードで稼働する物理サーバと、前記物理サーバ上で稼働するハイパバイザによって前記ノードで稼働される複数の論理サーバと、を備え、
    前記物理サーバ又は前記論理サーバが、前記スイッチを介して、前記IOハブに接続された前記IOカードを専有又は共有して使用可能に予め設定され、
    前記ノードコントローラは、
    前記IOカードに対応する物理MMIOアドレスに、前記物理サーバと、前記論理サーバの各々に固有な仮想MMIOアドレスを割り当て、
    前記割り当てられた仮想MMIOアドレスと、前記物理MMIOアドレス、前記物理サーバ又は前記論理サーバに固有のサーバ識別子と、の関係を示す割り当て情報を保持し、
    前記物理サーバ又は前記論理サーバから前記IOカードへのアクセス要求を受信した場合は、前記割り当て情報を参照して、前記アクセス要求から前記サーバ識別子を抽出し、
    前記抽出されたサーバ識別子に基づいて、前記アクセス要求元の前記物理サーバ又は前記論理サーバを識別することを特徴とする計算機システム。
  6. 前記ノードコントローラは、
    前記物理サーバ又は前記論理サーバから前記IOカードへのアクセス要求を受信した場合は、前記サーバ識別子を前記受信したアクセス要求と共に前記IOカードに送信し、
    前記IOカードから前記アクセス要求に対応するDMA要求を受信した場合は、前記DMA要求に含まれる前記サーバ識別子を抽出して、前記抽出されたサーバ識別子に基づいて、前記DMA要求先の前記物理サーバ又は前記論理サーバを識別することを特徴とする請求項5に記載の計算機システム。
  7. 前記ノードコントローラは、
    前記DMA要求に含まれるDMAアドレスを、前記識別されたDMA要求先の前記物理サーバ又は前記論理サーバに対応したアドレスに変換して、
    前記変換されたアドレスに基づいて、前記IOカードから送信されたDMA要求を前記識別された前記物理サーバ又は前記論理サーバのメモリ空間に転送することを特徴とする請求項6に記載の計算機システム。
  8. 前記ノードコントローラは、
    前記物理サーバ又は前記論理サーバから前記IOカードへのアクセス要求を受信した場合は、前記アクセス要求に含まれるDMAアドレスの上位ビットに前記サーバ識別子を埋め込んで前記IOカードに送信し、
    前記IOカードから前記アクセス要求に対応するDMA要求を受信した場合は、前記DMA要求に含まれるDMAアドレスの上位ビットに埋め込まれた前記サーバ識別子を抽出して、前記抽出されたサーバ識別子に基づいて、前記DMA要求先の前記物理サーバ又は前記論理サーバを識別することを特徴とする請求項6に記載の計算機システム。
  9. 一つのノード上で稼働する物理サーバ又は前記物理サーバを分割した一以上の論理区画上で稼働する論理サーバによって共有されるIOカードのMMIOアドレスの割当方法であって、
    前記IOカードの物理MMIOアドレスと前記物理MMIOアドレスの物理MMIOアドレス領域とを取得する手順と、
    前記取得したMMIOアドレス領域に、前記IOカードを共有する前記論理サーバの最大数を乗じた値を、仮想MMIOアドレス領域として設定する手順と、
    前記仮想MMIOアドレス領域の未使用の領域における、使用済みのMMIO領域の次の領域の開始アドレスを、前記IOカードを共有する前記論理サーバが使用する仮想MMIOアドレスとして決定し、前記決定された仮想MMIOアドレスを前記論理サーバに割り当てる手順と、
    前記割り当てられた仮想MMIOアドレスと、前記物理MMIOアドレスと、前記論理サーバ又は前記論理サーバに固有のサーバ識別子と、の関係を示す割り当て情報を作成する手順と、を備えることを特徴とするMMIOアドレスの割当方法。
  10. 前記IOカードはPCI規格に準拠したインターフェースを備え、
    前記IOカードが使用するPCIコンフィグレーション空間のバス番号、デバイス番号及びファンクション番号を、前記IOカードを共有する前記論理サーバの最大数分確保することを要求する手順と、
    前記PCIコンフィグレーション空間への要求に基づいて、前記IOカードを共有する前記論理サーバの最大数を乗じた値を、仮想MMIOアドレス領域として設定する手順と、を備えることを特徴とする請求項9に記載のMMIOアドレスの割当方法。
JP2006194534A 2005-11-25 2006-07-14 計算機システム及びアドレス割当方法 Pending JP2008021252A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006194534A JP2008021252A (ja) 2006-07-14 2006-07-14 計算機システム及びアドレス割当方法
US11/561,557 US7890669B2 (en) 2005-11-25 2006-11-20 Computer system for sharing I/O device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006194534A JP2008021252A (ja) 2006-07-14 2006-07-14 計算機システム及びアドレス割当方法

Publications (1)

Publication Number Publication Date
JP2008021252A true JP2008021252A (ja) 2008-01-31

Family

ID=39077119

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006194534A Pending JP2008021252A (ja) 2005-11-25 2006-07-14 計算機システム及びアドレス割当方法

Country Status (1)

Country Link
JP (1) JP2008021252A (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010039760A (ja) * 2008-08-05 2010-02-18 Hitachi Ltd 計算機システム及びバス割当方法
JP2010079816A (ja) * 2008-09-29 2010-04-08 Hitachi Ltd Pciデバイス共有方法
WO2010055544A1 (ja) * 2008-11-12 2010-05-20 株式会社日立製作所 Mraスイッチを備えるサーバ装置
JP2010257209A (ja) * 2009-04-24 2010-11-11 Fujitsu Ltd バススイッチ,コンピュータシステム及びコンピュータシステムの管理方法
WO2012060148A1 (ja) * 2010-11-02 2012-05-10 インターナショナル・ビジネス・マシーンズ・コーポレーション メモリ・アクセスを制御する装置およびコンピュータ
JP2012519316A (ja) * 2009-04-06 2012-08-23 株式会社日立製作所 ストレージサブシステム、及びその制御方法
JP2013515303A (ja) * 2010-11-29 2013-05-02 ▲ホア▼▲ウェイ▼技術有限公司 仮想ストレージ移行のための方法およびシステム、ならびに仮想マシンモニタ
JP5477707B2 (ja) * 2007-08-23 2014-04-23 日本電気株式会社 I/oシステムおよびi/o制御方法
US10698634B2 (en) 2016-05-26 2020-06-30 Hitachi, Ltd. Computer system and data control method utilizing NVMe and storing commands including an offset address corresponding to a server in a queue

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0635725A (ja) * 1992-06-15 1994-02-10 Internatl Business Mach Corp <Ibm> 入出力資源を共用するための方法及びシステム
JPH0973427A (ja) * 1995-09-05 1997-03-18 Hitachi Ltd 入出力チャネルの拡張方式
JPH09274598A (ja) * 1996-04-08 1997-10-21 Hitachi Ltd 情報処理装置の入出力チャネル拡張方法
JP2005122640A (ja) * 2003-10-20 2005-05-12 Hitachi Ltd サーバシステム及びi/oスロット共有方法。

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0635725A (ja) * 1992-06-15 1994-02-10 Internatl Business Mach Corp <Ibm> 入出力資源を共用するための方法及びシステム
JPH0973427A (ja) * 1995-09-05 1997-03-18 Hitachi Ltd 入出力チャネルの拡張方式
JPH09274598A (ja) * 1996-04-08 1997-10-21 Hitachi Ltd 情報処理装置の入出力チャネル拡張方法
JP2005122640A (ja) * 2003-10-20 2005-05-12 Hitachi Ltd サーバシステム及びi/oスロット共有方法。

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5477707B2 (ja) * 2007-08-23 2014-04-23 日本電気株式会社 I/oシステムおよびi/o制御方法
JP2010039760A (ja) * 2008-08-05 2010-02-18 Hitachi Ltd 計算機システム及びバス割当方法
US8683109B2 (en) 2008-08-05 2014-03-25 Hitachi, Ltd. Computer system and bus assignment method
US8352665B2 (en) 2008-08-05 2013-01-08 Hitachi, Ltd. Computer system and bus assignment method
US8341327B2 (en) 2008-09-29 2012-12-25 Hitachi, Ltd. Computer system and method for sharing PCI devices thereof
JP2010079816A (ja) * 2008-09-29 2010-04-08 Hitachi Ltd Pciデバイス共有方法
US8725926B2 (en) 2008-09-29 2014-05-13 Hitachi, Ltd. Computer system and method for sharing PCI devices thereof
WO2010055544A1 (ja) * 2008-11-12 2010-05-20 株式会社日立製作所 Mraスイッチを備えるサーバ装置
JP5469085B2 (ja) * 2008-11-12 2014-04-09 株式会社日立製作所 Mraスイッチを備えるサーバ装置
JP2012519316A (ja) * 2009-04-06 2012-08-23 株式会社日立製作所 ストレージサブシステム、及びその制御方法
JP2010257209A (ja) * 2009-04-24 2010-11-11 Fujitsu Ltd バススイッチ,コンピュータシステム及びコンピュータシステムの管理方法
WO2012060148A1 (ja) * 2010-11-02 2012-05-10 インターナショナル・ビジネス・マシーンズ・コーポレーション メモリ・アクセスを制御する装置およびコンピュータ
JP2013515303A (ja) * 2010-11-29 2013-05-02 ▲ホア▼▲ウェイ▼技術有限公司 仮想ストレージ移行のための方法およびシステム、ならびに仮想マシンモニタ
US9411620B2 (en) 2010-11-29 2016-08-09 Huawei Technologies Co., Ltd. Virtual storage migration method, virtual storage migration system and virtual machine monitor
US10698634B2 (en) 2016-05-26 2020-06-30 Hitachi, Ltd. Computer system and data control method utilizing NVMe and storing commands including an offset address corresponding to a server in a queue

Similar Documents

Publication Publication Date Title
US10970242B2 (en) Direct access to a hardware device for virtual machines of a virtualized computer system
JP5735070B2 (ja) パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲスト・アドレスからホスト・アドレスへの変換
US9910689B2 (en) Dynamic single root I/O virtualization (SR-IOV) processes system calls request to devices attached to host
JP5347396B2 (ja) マルチプロセッサシステム
US9875208B2 (en) Method to use PCIe device resources by using unmodified PCIe device drivers on CPUs in a PCIe fabric with commodity PCI switches
US7890669B2 (en) Computer system for sharing I/O device
JP2008021252A (ja) 計算機システム及びアドレス割当方法
US8386679B2 (en) Dynamic allocation of a direct memory address window
WO2017024783A1 (zh) 一种虚拟化方法、装置和系统
US20070136554A1 (en) Memory operations in a virtualized system
KR20200017363A (ko) 호스트 스토리지 서비스들을 제공하기 위한 NVMe 프로토콜에 근거하는 하나 이상의 호스트들과 솔리드 스테이트 드라이브(SSD)들 간의 관리되는 스위칭
US8918568B2 (en) PCI express SR-IOV/MR-IOV virtual function clusters
WO2017049590A1 (en) Systems and methods for input/output computing resource control
JP2005309553A (ja) 計算機
WO2010097925A1 (ja) 情報処理装置
US11922072B2 (en) System supporting virtualization of SR-IOV capable devices
KR20220141677A (ko) PCIe 디바이스 및 그 동작 방법
KR20220141674A (ko) PCIe 디바이스 및 그 동작 방법
US11698737B2 (en) Low-latency shared memory channel across address spaces without system call overhead in a computing system
US20170277632A1 (en) Virtual computer system control method and virtual computer system
JP4660362B2 (ja) 計算機システム
US11150928B2 (en) Hypervisor translation bypass
US20230051825A1 (en) System supporting virtualization of sr-iov capable devices
US11513832B2 (en) Low-latency shared memory channel across address spaces in a computing system
KR20220141678A (ko) PCIe 펑션 및 그 동작 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081222

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110413

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110419

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110809