JP2007148621A - Computer system - Google Patents
Computer system Download PDFInfo
- Publication number
- JP2007148621A JP2007148621A JP2005340088A JP2005340088A JP2007148621A JP 2007148621 A JP2007148621 A JP 2007148621A JP 2005340088 A JP2005340088 A JP 2005340088A JP 2005340088 A JP2005340088 A JP 2005340088A JP 2007148621 A JP2007148621 A JP 2007148621A
- Authority
- JP
- Japan
- Prior art keywords
- card
- server
- unit
- request signal
- access request
- 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.)
- Granted
Links
Abstract
Description
本発明は、I/Oデバイスの共有を行う計算機システムに関し、特に、サーバ統合を実現可能なブレードサーバシステムに関する。 The present invention relates to a computer system that shares an I / O device, and more particularly to a blade server system capable of server integration.
近年、サーバ台数の増加と共に運用に関する複雑さが増加し、運用コストの増大が問題化している。この運用コストを低減する技術として複数サーバを1台にまとめるサーバコンソリデーション(サーバ統合)が注目を集めている。 In recent years, with the increase in the number of servers, the complexity of operation has increased, and the increase in operation cost has become a problem. As a technique for reducing the operation cost, server consolidation (server integration) that consolidates a plurality of servers is attracting attention.
サーバ統合を実現する技術として、バックプレーンに複数のサーバブレード及び複数のI/Oブレードを装着可能なブレードサーバシステムが知られており、統合するサーバに応じてサーバブレードを装着し、一つの筐体内に複数のサーバを統合している。つまり、一つの筐体に複数のサーバを集約した高性能なサーバを提供する。 As a technology for realizing server integration, a blade server system capable of mounting a plurality of server blades and a plurality of I / O blades on the backplane is known. A server blade is mounted according to the server to be integrated, and one chassis is installed. Multiple servers are integrated in the body. That is, a high-performance server in which a plurality of servers are aggregated in one housing is provided.
サーバ統合では、複数の筐体で独立して稼動していたサーバを、一つの高性能なブレードサーバシステムに集約し、複数のOSとアプリケーションを稼動させることになる。ここで、複数のサーバを一つのブレードサーバシステムに統合する際には、独立して稼動していたサーバのI/Oカード(またはI/Oデバイス)も統合する必要がある。各サーバが統合前に使用していたI/Oカードをそのまま利用しようとすると、ブレードサーバシステムのバックプレーン(またはI/Oスロット)が不足する。 In server integration, servers that have been operating independently in a plurality of cases are consolidated into one high-performance blade server system, and a plurality of OSs and applications are operated. Here, when a plurality of servers are integrated into one blade server system, it is necessary to integrate the I / O cards (or I / O devices) of the servers that have been operating independently. When an I / O card used by each server before integration is used as it is, the backplane (or I / O slot) of the blade server system is insufficient.
ブレードサーバシステムの筐体にI/O拡張用の筐体を付加して、必要な数のI/Oカードを装着することも可能ではあるが、筐体のサイズが大形化するためより大きな設置スペースが必要なってしまい、サーバ統合の効果が薄れてしまう。 Although it is possible to attach a required number of I / O cards by adding an I / O expansion case to the blade server system case, it is larger because the size of the case increases. Installation space is required and the effect of server integration is reduced.
このため、ブレードサーバシステムを用いたサーバ統合では、サーバブレード間でI/Oカードを共有し、I/Oカードの数を削減する必要が生じる。 For this reason, in server integration using a blade server system, it is necessary to share I / O cards between server blades and reduce the number of I / O cards.
I/Oカードを複数のサーバで共有する技術としては、一つのコンピュータを任意論理区画に分割する仮想計算機が知られている。これは、ホストOS上で複数のゲストOSを稼動させ、各ゲストOSを論理区画として提供し、ゲストOホストOSのアプリケーションとして稼動させ、ゲストOSからのI/O要求はホストOSが一元的にI/O要求を処理することで、I/Oデバイスの共有を行っている(例えば、特許文献1)。 As a technique for sharing an I / O card among a plurality of servers, a virtual computer that divides one computer into arbitrary logical partitions is known. This is because a plurality of guest OSs are operated on the host OS, each guest OS is provided as a logical partition, and is operated as an application of the guest O host OS, and the host OS centralizes I / O requests from the guest OS. An I / O device is shared by processing an I / O request (for example, Patent Document 1).
あるいは、AS(Advanced Switching)等に代表されるI/Oスイッチを用いて複数のサーバからI/Oカードを共有する技術も知られている。これは、PCI−EXPRESS規格のI/Oカードとサーバ間を専用のプロトコルで通信を行うスイッチであり、一つのI/Oカードを複数のサーバで切り換えて使用し、共有することができる。
しかしながら、上記特許文献1のような従来例では、ゲストOSとI/Oカードとの間のI/Oアクセスは、常にホストOSが中継することになる。このため、ゲストOSとI/Oカードの間でDMA転送を行う場合などでは、ホストOSのメモリ領域からゲストOSのメモリ領域へ転送する処理が必要となり、このホストOSの処理がオーバーヘッドとなってI/Oアクセスの性能(転送速度やレスポンス)が低下する、という問題があった。 However, in the conventional example as described in Patent Document 1, I / O access between the guest OS and the I / O card is always relayed by the host OS. For this reason, when performing a DMA transfer between the guest OS and the I / O card, a process for transferring from the memory area of the host OS to the memory area of the guest OS is necessary, and this host OS process becomes an overhead. There has been a problem that the performance (transfer speed and response) of I / O access is reduced.
また、上記従来例のASでは、PCI−EXPRESSを拡張した規格(専用のプロトコル)に対応する専用のI/Oカードが必要となり、従来のPCIやPCI−x、PCI−EXPRESSといった汎用のインターフェースで構成されたI/Oカードをそのまま利用することはできない。したがって、ASを利用してI/Oカードを共有するには、従来のI/Oカードを置き換えるために多額の費用が必要になるという問題がある。さらに、ASに対応したI/Oカードでは、専用のプロトコルを使用するため、デバイスドライバなども新規に導入する必要が生じる。このため、サーバ統合の際には、従来のOSに組み込んでいたデバイスドライバを変更する作業が必要となり、上記費用の問題に加えてサーバ統合に要する労力が増大する、という問題があった。 In the conventional AS, a dedicated I / O card corresponding to a standard (dedicated protocol) that is an extension of PCI-EXPRESS is required, and a conventional interface such as conventional PCI, PCI-x, or PCI-EXPRESS is used. The configured I / O card cannot be used as it is. Therefore, in order to share an I / O card using AS, there is a problem that a large amount of money is required to replace the conventional I / O card. Furthermore, since an AS-compatible I / O card uses a dedicated protocol, a device driver or the like needs to be newly introduced. For this reason, in server integration, work for changing a device driver incorporated in a conventional OS is required, and there is a problem that labor required for server integration increases in addition to the above-described cost problem.
そこで本発明は、上記問題点に鑑みてなされたもので、I/Oアクセスの性能低下を防いで複数のサーバ間でI/Oカードの共有を実現することを目的とし、さらに、共有するI/Oカードを汎用のインターフェースで構成可能にすることで、サーバ統合を行う際のコストを抑制することを目的とする。 Accordingly, the present invention has been made in view of the above problems, and aims to realize the sharing of an I / O card between a plurality of servers by preventing a decrease in performance of I / O access. It is an object of the present invention to reduce the cost of server integration by making the / O card configurable with a general-purpose interface.
本発明は、複数のサーバと、該複数のサーバとI/Oカードを接続するスイッチと、を備え、前記サーバが、前記I/Oカードから書き込み可能なメモリ空間を備えた計算機システムにおいて、前記スイッチとI/Oカードの間に配置されて、前記複数のサーバと前記I/Oカードとの間のアクセス要求信号及び応答信号を操作するI/Oカード共有部と、前記I/OカードとI/Oカード共有部にアクセス可能であって、前記I/Oカード共有部から書き込み可能なメモリと、前記I/Oカード共有部からの割り込みを受け付けるプロセッサとを備えて、前記複数のサーバに対する前記I/Oカードの割り当てを管理するI/Oプロセッサと、を備え、前記スイッチは、前記サーバからI/Oカードへの指令と前記メモリ空間を指定するベースアドレスとを含んだアクセス要求信号に、当該アクセス要求信号の宛先と要求元の経路情報を前記アクセス要求信号のヘッダ情報に付加して前記I/Oカード共有部へ送信し、前記I/Oカードからサーバへの応答と前記メモリ空間を指定するベースアドレスとを含んだ応答信号を、当該応答信号のヘッダ情報に含まれる宛先のサーバに転送するヘッダ処理部を有し、前記I/Oカード共有部は、前記スイッチから受信したアクセス要求信号に含まれる指令が、予め設定した第1の指令のときには前記I/Oカード共有部のメモリに当該アクセス要求信号を書き込む要求信号書込部と、前記スイッチから受信した前記アクセス要求信号に含まれる指令が、予め設定した第2の指令のときには前記I/Oプロセッサへ割り込みをかける割り込み発生部と、前記I/Oカードからサーバへの応答信号を受信したときには、当該応答信号に含まれるベースアドレスから要求元の経路情報を抽出して、当該抽出した要求元の経路情報を応答信号のヘッダ情報の宛先に設定するヘッダ修正部と、前記応答信号のベースアドレスに埋め込まれた要求元の経路情報を削除するベースアドレス修正部と、当該応答信号を前記スイッチへ送信する送信部と、を有し、前記I/Oプロセッサは、前記割り込みがあったときに、前記メモリに書き込まれたアクセス要求信号に含まれるベースアドレスの所定の上位ビットに、前記アクセス要求信号のヘッダ情報から前記要求元の経路情報を設定するアドレス変換部と、前記割り込みに基づいて前記要求元のヘッダ情報を上位ビットに設定した前記ベースアドレスを前記I/Oカードの応答先として設定する応答アドレス設定部と、前記割り込みに基づいて前記アクセス要求信号をI/Oカードへ送信し、前記I/Oカードの動作を起動するI/Oカード起動部と、を有し、前記I/Oカードは、前記アクセス要求信号に応じた処理の応答信号を、前記I/Oカード共有部に返信する The present invention provides a computer system comprising a plurality of servers and a switch for connecting the plurality of servers to the I / O card, wherein the server has a memory space writable from the I / O card. An I / O card sharing unit that is disposed between the switch and the I / O card and operates an access request signal and a response signal between the plurality of servers and the I / O card; and the I / O card; A memory that is accessible to the I / O card sharing unit and is writable from the I / O card sharing unit; and a processor that receives an interrupt from the I / O card sharing unit. An I / O processor that manages the allocation of the I / O card, and the switch is configured to specify a command from the server to the I / O card and the memory space. The access request signal including the address of the access request signal is added to the header information of the access request signal and the path information of the access request signal is transmitted to the I / O card sharing unit. A header processing unit for transferring a response signal including a response from the card to the server and a base address designating the memory space to a destination server included in header information of the response signal, and the I / O card The sharing unit includes a request signal writing unit that writes the access request signal to the memory of the I / O card sharing unit when the command included in the access request signal received from the switch is a preset first command; When the command included in the access request signal received from the switch is a second command set in advance, an interrupt request for interrupting the I / O processor is assigned. When a response signal from the I / O card to the server is received, the request source route information is extracted from the base address included in the response signal, and the extracted request source route information is returned as a response. A header correction unit for setting the destination of the header information of the signal, a base address correction unit for deleting the route information of the request source embedded in the base address of the response signal, and a transmission unit for transmitting the response signal to the switch The I / O processor receives, from the header information of the access request signal, a predetermined upper bit of a base address included in the access request signal written in the memory when the interrupt occurs. An address conversion unit for setting request source route information, and the base address in which the request source header information is set in upper bits based on the interrupt. A response address setting unit for setting the address as a response destination of the I / O card, and an I / O for starting the operation of the I / O card by transmitting the access request signal to the I / O card based on the interrupt A card activation unit, and the I / O card returns a response signal of processing corresponding to the access request signal to the I / O card sharing unit.
したがって、本発明は、I/Oカードからサーバへ向かう応答信号を中継するI/Oカード共有部は、ベースアドレスに埋め込まれた要求元のサーバの識別子をヘッダ情報の宛先に付け替えることで、汎用バスのI/Oカードを共有することができる。そして、I/Oカードの起動後は、I/Oプロセッサは応答信号の転送へ介入せず、I/Oカード共有部のハードウェアがアドレス付け替えを行うため、前記従来例のようなソフトウェア処理によるオーバーヘッドを防いで、I/Oアクセスの性能低下を防ぎながら複数のサーバ間でI/Oカードの共有を実現することが可能となる。 Therefore, according to the present invention, the I / O card sharing unit that relays the response signal from the I / O card to the server replaces the identifier of the requesting server embedded in the base address with the destination of the header information. The bus I / O card can be shared. After the I / O card is activated, the I / O processor does not intervene in the transfer of the response signal, and the hardware of the I / O card sharing unit performs the address change. It is possible to realize sharing of an I / O card among a plurality of servers while preventing overhead and preventing performance degradation of I / O access.
以下、本発明の一実施形態を添付図面に基づいて説明する。 Hereinafter, an embodiment of the present invention will be described with reference to the accompanying drawings.
図1は、第1の実施形態を示すブレードサーバシステムのブロック図である。 FIG. 1 is a block diagram of a blade server system showing the first embodiment.
ブレードサーバシステムは、複数のサーバブレード10−1〜nと、各種I/Oインターフェースを備えたI/Oカード501、502と、サーバブレード10−1〜nとI/Oカードを接続するスイッチ200と、I/Oカード501、502を複数のサーバブレード10−1〜nで共有するためのI/Oカード共有機構400と、I/Oカードの共有を管理するI/Oプロセッサブレード600とを備える。そして、これらの各ブレードとスイッチ200及びI/Oカード共有機構400は一つの筐体(図示省略)内に収納される。 The blade server system includes a plurality of server blades 10-1 to n, I / O cards 501 and 502 having various I / O interfaces, and a switch 200 that connects the server blades 10-1 to n and the I / O card. And an I / O card sharing mechanism 400 for sharing the I / O cards 501 and 502 among the plurality of server blades 10-1 to 10-n, and an I / O processor blade 600 for managing the sharing of the I / O card. Prepare. Each blade, the switch 200, and the I / O card sharing mechanism 400 are housed in a single housing (not shown).
サーバブレード10−1〜nは、それぞれCPU101とメモリ102がチップセット(あるいはI/Oブリッジ)103を介して接続され、また、チップセット103は汎用バス11−1〜nを介してスイッチ200に接続される。ここで、汎用バス11−1〜nとしては、例えば、PCI−EXPRESS(図中PCI−ex)を適用した場合を示す。 In each of the server blades 10-1 to 10-n, the CPU 101 and the memory 102 are connected via a chip set (or I / O bridge) 103, and the chip set 103 is connected to the switch 200 via the general-purpose buses 11-1 to n. Connected. Here, for example, PCI-EXPRESS (PCI-ex in the figure) is applied as the general-purpose buses 11-1 to 11-n.
CPU101はメモリ102にロードしたOSやアプリケーションを実行することでサーバ#1〜nを提供する。そして、CPU101は、チップセット103からスイッチ200及びI/Oカード共有機構400を介してI/Oカード501、502にアクセスを行う。 The CPU 101 provides the servers # 1 to n by executing the OS and applications loaded in the memory 102. Then, the CPU 101 accesses the I / O cards 501 and 502 from the chipset 103 via the switch 200 and the I / O card sharing mechanism 400.
スイッチ200は、サーバブレード10−1〜nとI/Oカード501、502との間で送受信されるパケットのヘッダ情報を付加し、このヘッダ情報に基づいてパケットを転送するヘッダ処理部210を有する。 The switch 200 includes a header processing unit 210 that adds header information of packets transmitted and received between the server blades 10-1 to 10-n and the I / O cards 501 and 502, and forwards the packets based on the header information. .
ヘッダ処理部210は、サーバブレード10−1〜nからI/Oカード501、502へ向けて送信されたパケット(アクセス要求信号)にヘッダ情報を付加して、このヘッダ情報に含まれる宛先のノード(I/Oカード)に転送する。このヘッダ情報は、サーバブレード10−1〜nのアドレス情報(識別子)を要求元に設定し、I/Oカードのアドレス情報を宛先に設定する。また、スイッチ200のヘッダ処理部210は、I/Oカードからサーバブレード10−1〜nへ向けたパケット(応答信号)を、このパケットに含まれる宛先(サーバ識別子)のサーバブレード10−1〜nに転送する。ここで、本実施形態のパケットは、汎用バスとしてPCI−EXPRESSを採用しているので、PCIトランザクション(PCI−Tx)である。 The header processing unit 210 adds header information to packets (access request signals) transmitted from the server blades 10-1 to 10-n to the I / O cards 501 and 502, and the destination node included in the header information Transfer to (I / O card). In this header information, the address information (identifier) of the server blades 10-1 to 10-n is set as the request source, and the address information of the I / O card is set as the destination. Further, the header processing unit 210 of the switch 200 sends a packet (response signal) from the I / O card to the server blades 10-1 to 10-n, and server blades 10-1 to 10-1 of destinations (server identifiers) included in the packet. forward to n. Here, since the packet of this embodiment employs PCI-EXPRESS as a general-purpose bus, it is a PCI transaction (PCI-Tx).
スイッチ200とI/Oカード501、502の間には、汎用バス301、311、312を介してI/Oカード501、502を複数のサーバブレード10−1〜nで共有するためのI/Oカード共有機構400が接続される。また、I/Oカード共有機構400は汎用バス401を介してI/Oプロセッサブレード600に接続されており、I/Oプロセッサブレード600は後述するように、I/Oカードの共有に関するアドレス変換や共有状態などの管理を実行する。なお、I/Oプロセッサブレード600には、コンソール5が接続されており、管理者等の入力によりI/Oカード501、502の共有状態を設定する。 Between the switch 200 and the I / O cards 501 and 502, an I / O for sharing the I / O cards 501 and 502 among the plurality of server blades 10-1 to 10-n via the general-purpose buses 301, 311, and 312. A card sharing mechanism 400 is connected. The I / O card sharing mechanism 400 is connected to the I / O processor blade 600 via the general-purpose bus 401. The I / O processor blade 600 performs address conversion and I / O card sharing as described later. Perform management such as sharing status. The console 5 is connected to the I / O processor blade 600, and the sharing state of the I / O cards 501 and 502 is set by an input from an administrator or the like.
I/Oカード501、502は、SCSI(またはSAS)やFC(Fibre Channel)あるいはEthernet(登録商標)等のインターフェースを備えている。I/Oカード501、502には、サーバブレード10−1〜nのメモリ102へ直接アクセスするDMA(Direct Memory Access)コントローラ513をそれぞれ備えている。そして、I/Oカード501、502は、DMAコントローラ513でDMAを行うサーバブレード10−1〜n上のメモリ102のMMIO(Memory Mapped I/O)のベースアドレスを指定するベースアドレスレジスタ511と、I/Oカード501、502に対する指令を指定するコマンドレジスタ512を備えている。DMAコントローラ513は、ベースアドレスレジスタ511に書き込まれたメモリ102のアドレスに対して、コマンドレジスタ512に書き込まれたコマンドに対応する動作を実行する。なお、I/Oカード501、502は、PCI規格に準拠した図示しないレジスタ(コンフィグレーションレジスタ、レイテンシタイマレジスタ等)を有するものである。 The I / O cards 501 and 502 include an interface such as SCSI (or SAS), FC (Fibre Channel), or Ethernet (registered trademark). Each of the I / O cards 501 and 502 includes a DMA (Direct Memory Access) controller 513 that directly accesses the memory 102 of the server blades 10-1 to 10-n. The I / O cards 501 and 502 include a base address register 511 for designating a base address of an MMIO (Memory Mapped I / O) of the memory 102 on the server blades 10-1 to 10 -n that performs DMA by the DMA controller 513, and A command register 512 for designating commands to the I / O cards 501 and 502 is provided. The DMA controller 513 executes an operation corresponding to the command written in the command register 512 with respect to the address of the memory 102 written in the base address register 511. The I / O cards 501 and 502 have registers (configuration register, latency timer register, etc.) (not shown) conforming to the PCI standard.
次に、I/Oプロセッサブレード600は、CPU602とメモリ603がチップセット(あるいはI/Oブリッジ)601を介して接続され、また、チップセット601は汎用バス401を介してI/Oカード共有機構400に接続される。そして、I/Oプロセッサブレード600では、後述するように、所定の制御プログラムが実行され、サーバブレード10−1〜nからのI/Oアクセスに対してアドレス変換などの処理を実行する。 Next, in the I / O processor blade 600, the CPU 602 and the memory 603 are connected via a chip set (or I / O bridge) 601, and the chip set 601 is connected to an I / O card sharing mechanism via a general-purpose bus 401. 400 is connected. In the I / O processor blade 600, as described later, a predetermined control program is executed, and processing such as address conversion is executed for the I / O access from the server blades 10-1 to 10-n.
<I/Oカード共有機構>
次に、本発明のI/Oカード共有機構400の詳細について、図2のブロック図を参照しながら以下に詳述する。
<I / O card sharing mechanism>
Next, details of the I / O card sharing mechanism 400 of the present invention will be described in detail below with reference to the block diagram of FIG.
I/Oカード共有機構400は、サーバブレード10−1〜nとI/Oカード501、502の間に位置して、サーバブレード10−1〜nからのI/Oアクセスパケットのアドレスの変換を行うことで、ひとつのI/Oカードを複数のサーバブレード10−1〜nで共有することを実現する。ここで、スイッチ200と汎用バス及びI/Oカード501、502はPCI−EXPRESSに準拠しており、以下、I/OアクセスパケットをPCIトランザクションという。 The I / O card sharing mechanism 400 is located between the server blades 10-1 to n and the I / O cards 501 and 502, and converts the addresses of I / O access packets from the server blades 10-1 to n. By doing so, it is possible to share one I / O card among the plurality of server blades 10-1 to 10-n. Here, the switch 200, the general-purpose bus, and the I / O cards 501 and 502 conform to PCI-EXPRESS, and hereinafter, the I / O access packet is referred to as a PCI transaction.
I/Oカード共有機構400の主な機能は、
1)サーバブレード10−1〜nからI/Oカード501、502へのPCIトランザクションを、I/Oプロセッサブレード600のメモリ603へ書き込む機能
2)I/Oカード501、502のコマンドレジスタ512への書き込み要求に基づいて、I/Oプロセッサブレード600のCPU602へ割り込みを要求する機能
3)I/Oカード501、502からサーバブレード10−1〜nへのDMAによるPCIトランザクションの宛先を変換する機能
の3つである。
The main functions of the I / O card sharing mechanism 400 are:
1) A function of writing PCI transactions from the server blades 10-1 to 10-n to the I / O cards 501 and 502 into the memory 603 of the I / O processor blade 600. 2) To the command register 512 of the I / O cards 501 and 502. Function of requesting interrupt to CPU 602 of I / O processor blade 600 based on write request 3) Function of converting PCI transaction destination by DMA from I / O card 501, 502 to server blade 10-1 to n There are three.
図2において、I/Oカード共有機構400は、後述するアドレス情報テーブル411を格納する連想メモリ410と、サーバブレード10−1〜nからのPCIトランザクションからヘッダ情報を分離するヘッダ情報抽出部406と、ヘッダ情報を除くPCIトランザクションの本体を解析してI/Oプロセッサブレード600に指令を送る第1のトランザクションデコーダ402(図中Txデコーダ1)と、I/Oプロセッサブレード600からの信号を解析してI/Oカード501、502に指令を送る第2のトランザクションデコーダ403(図中Txデコーダ2)と、I/Oカード501、502からのPCIトランザクションを解析して、DMA転送であれば宛先アドレスを修正(変換)する第3のトランザクションデコーダ404(図中Txデコーダ3)と、トランザクションデコーダ402からの指令によりI/Oプロセッサブレード600のCPU602へ割り込みをかける割り込み発生部407と、トランザクションデコーダ402からの指令によりI/Oプロセッサブレード600のメモリ603へ書き込みを行うメモリ書込部408と、第1のトランザクションデコーダ402の指令に基づいてI/Oプロセッサブレード600へ出力する信号を選択する信号選択部412と、第3のトランザクションデコーダ404の指令に基づいてサーバ#1〜#n側(スイッチ200)へ出力する信号を選択する信号選択部413とを主体にして構成されている。 In FIG. 2, the I / O card sharing mechanism 400 includes an associative memory 410 that stores an address information table 411, which will be described later, and a header information extraction unit 406 that separates header information from PCI transactions from the server blades 10-1 to 10-n. The first transaction decoder 402 (Tx decoder 1 in the figure) that sends a command to the I / O processor blade 600 by analyzing the main body of the PCI transaction excluding header information, and the signal from the I / O processor blade 600 are analyzed. The second transaction decoder 403 (Tx decoder 2 in the figure) that sends a command to the I / O cards 501 and 502 and the PCI transaction from the I / O cards 501 and 502 are analyzed. The third transaction decoder 4 for correcting (converting) 4 (Tx decoder 3 in the figure), an interrupt generation unit 407 for interrupting the CPU 602 of the I / O processor blade 600 by a command from the transaction decoder 402, and a memory of the I / O processor blade 600 by a command from the transaction decoder 402 A memory writing unit 408 for writing to 603, a signal selection unit 412 for selecting a signal to be output to the I / O processor blade 600 based on a command from the first transaction decoder 402, and a command from the third transaction decoder 404 And a signal selection unit 413 that selects a signal to be output to the servers # 1 to #n (switch 200).
ここで、PCIトランザクションは、図3で示すように、コマンドやオーダーまたはサーバアドレス(MMIOベースアドレス)462などのデータを格納するPCIトランザクション本体461と、経路情報を格納するヘッダ情報451から構成される。そして、ヘッダ情報451は、宛先452を先頭にして、PCIトランザクションを発行した要求元453が格納される。例えば、サーバブレード10−1からI/Oカード501へのPCIトランザクションは、宛先452にI/Oカード501への経路情報(アドレスなど)が設定され、要求元453にサーバブレード10−1の経路情報が設定され、PCIトランザクション本体461には、コマンドやオーダーに加えてサーバブレード10−1のI/Oレジスタのアドレス情報がMMIOベースアドレス462に設定される。 Here, as shown in FIG. 3, the PCI transaction includes a PCI transaction body 461 that stores data such as a command, an order, or a server address (MMIO base address) 462, and header information 451 that stores path information. . The header information 451 stores the request source 453 that issued the PCI transaction with the destination 452 as the head. For example, in a PCI transaction from the server blade 10-1 to the I / O card 501, route information (address, etc.) to the I / O card 501 is set in the destination 452, and the route of the server blade 10-1 is sent to the request source 453. The information is set, and in the PCI transaction main body 461, the address information of the I / O register of the server blade 10-1 is set as the MMIO base address 462 in addition to the command and the order.
図2において、301−1はスイッチ200(サーバブレード10−1〜n側)とI/Oカード共有機構400を接続する汎用バス301上で、スイッチ200からI/Oカード共有機構400に向かう下りのPCIトランザクションを示し、301−2は汎用バス301上でI/Oカード共有機構400からスイッチ200(サーバブレード10−1〜n側)に向かう上りのPCIトランザクションを示す。同様に、401−2はI/Oカード共有機構400とI/Oプロセッサブレード600を接続する汎用バス401上で、I/Oカード共有機構400からI/Oプロセッサブレード600へ向かう下りの指令信号を示し、401−1は、汎用バス401上でI/Oプロセッサブレード600からI/Oカード共有機構400へ向かう上りの指令信号(またはPCIトランザクション)を示す。さらに、311−1、312−1はI/Oカード共有機構400とI/Oカード501、502を接続する汎用バス311、312上でI/Oカード501、502からI/Oカード共有機構400へ向かう上りのPCIトランザクションを示し、311−2、312−2は汎用バス311、312上でI/Oカード共有機構400からI/Oカード501、502へ向かう下りのPCIトランザクションを示す。 In FIG. 2, 301-1 is a downlink from the switch 200 to the I / O card sharing mechanism 400 on the general-purpose bus 301 that connects the switch 200 (server blades 10-1 to n) to the I / O card sharing mechanism 400. The PCI transaction 301-2 indicates an upward PCI transaction from the I / O card sharing mechanism 400 to the switch 200 (server blades 10-1 to n) on the general-purpose bus 301. Similarly, reference numeral 401-2 designates a down command signal from the I / O card sharing mechanism 400 to the I / O processor blade 600 on the general-purpose bus 401 that connects the I / O card sharing mechanism 400 and the I / O processor blade 600. Reference numeral 401-1 denotes an upstream command signal (or PCI transaction) from the I / O processor blade 600 to the I / O card sharing mechanism 400 on the general-purpose bus 401. Further, reference numerals 311-1 and 312-1 denote the I / O card sharing mechanism 400 from the I / O cards 501 and 502 on the general-purpose buses 311 and 312 that connect the I / O card sharing mechanism 400 and the I / O cards 501 and 502. Upward PCI transactions going to the I / O card sharing mechanism 400 on the general-purpose buses 311 and 312, and 311-2 and 312-2 show down PCI transactions going to the I / O cards 501 and 502.
I/Oカード共有機構400は、スイッチ200(サーバ側)から下りのPCIトランザクション301−1を受信すると、ヘッダ情報抽出部406がPCIトランザクションを図3に示したヘッダ情報451とPCIトランザクション本体461に分離する。また、ヘッダ情報抽出部406はPCIトランザクションに設定されたMMIOベースアドレスからオフセットを抽出する。そして、ヘッダ情報抽出部406は、ヘッダ情報451とオフセットを連想メモリ410へ入力し、PCIトランザクション本体461を第1のトランザクションデコーダ402へ入力する。 When the I / O card sharing mechanism 400 receives the downstream PCI transaction 301-1 from the switch 200 (server side), the header information extraction unit 406 sends the PCI transaction to the header information 451 and the PCI transaction body 461 shown in FIG. To separate. The header information extraction unit 406 extracts an offset from the MMIO base address set in the PCI transaction. Then, the header information extraction unit 406 inputs the header information 451 and the offset to the associative memory 410, and inputs the PCI transaction body 461 to the first transaction decoder 402.
連想メモリ410は、CAM(Contents Addressable Memory)等で構成され、I/Oプロセッサブレード600により設定されたアドレス情報テーブル411を保持する。このアドレス情報テーブル411には、後述するように、I/Oカード共有機構400に接続されたI/Oカード501、502に対する各サーバ#1〜#nのアクセス許可情報(割り当て情報)が格納されている。 The associative memory 410 is configured by a CAM (Contents Addressable Memory) or the like, and holds an address information table 411 set by the I / O processor blade 600. The address information table 411 stores access permission information (allocation information) of the servers # 1 to #n for the I / O cards 501 and 502 connected to the I / O card sharing mechanism 400, as will be described later. ing.
そして、連想メモリ410は、検索を行うアドレス(ヘッダ情報451)を検索キー(ビット列)として入力し、入力した検索キーに対応するアドレスを予め設定したテーブル(アドレス情報テーブル411)から出力するものである。後述するように、連想メモリ410は、入力されたヘッダ情報451から該当するMMIOのベースアドレスとI/Oプロセッサブレード600上のメモリ603のアドレスを出力する。 The associative memory 410 inputs an address to be searched (header information 451) as a search key (bit string) and outputs an address corresponding to the input search key from a preset table (address information table 411). is there. As will be described later, the associative memory 410 outputs the base address of the corresponding MMIO and the address of the memory 603 on the I / O processor blade 600 from the input header information 451.
第1のトランザクションデコーダ402は、ヘッダ情報抽出部406から受信したPCIトランザクション本体461と、連想メモリ410から受信したMMIOベースアドレスとから、PCIトランザクション本体461の指令を解析してI/Oプロセッサブレード600へ出力する下りの指令信号401−2を選択する。また、トランザクションデコーダ402は、PCIトランザクション本体461の指令が所定の指令でない場合には、I/Oカード共有機構400が受信したPCIトランザクションをそのままI/Oカード501または502へ下りのPCIトランザクションとして転送する。 The first transaction decoder 402 analyzes the command of the PCI transaction main body 461 from the PCI transaction main body 461 received from the header information extracting unit 406 and the MMIO base address received from the associative memory 410 and analyzes the I / O processor blade 600. The down command signal 401-2 to be output to is selected. If the command of the PCI transaction main body 461 is not a predetermined command, the transaction decoder 402 transfers the PCI transaction received by the I / O card sharing mechanism 400 as it is to the I / O card 501 or 502 as a downward PCI transaction. To do.
ここで、複数のサーバブレード10−1〜n(サーバ#1〜#n)間でひとつのI/Oカードを共有する際の、メモリ空間について説明する。以下の例では、3つのサーバ#1〜#3がひとつのI/Oカード501を共有する場合を示す。 Here, a memory space when one I / O card is shared among the plurality of server blades 10-1 to n (servers # 1 to #n) will be described. The following example shows a case where three servers # 1 to # 3 share one I / O card 501.
MMIOのアドレス空間は、ひとつのI/Oカードについて各サーバ#1〜#3が自身のメモリ102にそれぞれ設定したI/O領域である。例えば、図4で示すように、サーバ#1〜#3(サーバブレード10−1〜3)には、使用(または共有)するI/Oカード(ここでは、I/Oカード501)毎にそれぞれMMIOベースアドレスが0xA、0xB、0xC、メモリ空間のサイズを示すオフセットが0xX、0xY、0xZのMMI/O領域が設定されている。なお、これらのMMIOベースアドレスとオフセットは、各サーバブレード10−1〜nで起動したBIOSまたはOSが決定するものである。 The MMIO address space is an I / O area set by each server # 1 to # 3 in its own memory 102 for one I / O card. For example, as shown in FIG. 4, each of the servers # 1 to # 3 (server blades 10-1 to 3) has an I / O card (in this case, an I / O card 501) to be used (or shared). MMI / O areas having MMIO base addresses of 0xA, 0xB, and 0xC and offsets indicating the size of the memory space are set to 0xX, 0xY, and 0xZ. These MMIO base addresses and offsets are determined by the BIOS or OS that is started by each server blade 10-1 to n.
これら各サーバ#1〜#3のMMIOに対応して、プロセッサブレード600のメモリ603には、図5で示すように、各サーバ#1〜#3で共有するI/Oカード501のメモリ空間6031〜6032が後述するように設定される。図5では、サーバ#1のMMIOベースアドレス0xAに対応してプロセッサブレード600のメモリ603にメモリ空間6031(0xP)が設定される。なお、I/Oプロセッサブレード600は、メモリ603に設定したI/Oカード共有設定テーブル(図7参照)に基づいて、共有対象のI/Oカードを共有するサーバのMMIOについてのみ、メモリ603上にメモリ空間を設定する。同様にI/Oカード501を共するサーバ#2のMMIOベースアドレス0xBに対応してメモリ空間6032(0xQ)が設定され、サーバ#3のMMIOベースアドレス0xCに対応してメモリ空間6032(0xR)が設定される。 Corresponding to the MMIO of each of these servers # 1 to # 3, the memory 603 of the processor blade 600 has a memory space 6031 of the I / O card 501 shared by the servers # 1 to # 3 as shown in FIG. ˜6032 are set as described later. In FIG. 5, a memory space 6031 (0xP) is set in the memory 603 of the processor blade 600 corresponding to the MMIO base address 0xA of the server # 1. Note that the I / O processor blade 600 stores only the MMIO of the server that shares the I / O card to be shared on the memory 603 based on the I / O card sharing setting table (see FIG. 7) set in the memory 603. Set memory space to. Similarly, a memory space 6032 (0xQ) is set corresponding to the MMIO base address 0xB of the server # 2 sharing the I / O card 501 and a memory space 6032 (0xR) corresponding to the MMIO base address 0xC of the server # 3. Is set.
そして、上記サーバ#1〜#3のMMIOベースアドレス=0xA、0xB、0xCのI/O領域がI/Oカード501を共有するため、連想メモリ410のアドレス情報テーブル411は、図6で示すようにI/Oプロセッサブレード600により設定される。 Since the MMIO base addresses of the servers # 1 to # 3 = 0xA, 0xB, and 0xC share the I / O card 501, the address information table 411 of the associative memory 410 is as shown in FIG. Are set by the I / O processor blade 600.
図6のアドレス情報テーブル411には、I/Oカード共有機構400がサーバ#1〜#3から受信したPCIトランザクションのヘッダ情報451と比較を行うヘッダ4111と、ヘッダ情報451とアドレス情報テーブル411のヘッダ4111が一致したときに出力する各サーバのMMIOベースアドレス4112と、ヘッダ情報451とアドレス情報テーブル411のヘッダ4111が一致したときに出力するI/Oプロセッサブレード600のメモリ空間のアドレス(図中IoP ADDR)4113と、I/Oプロセッサブレード600のCPU602への割り込みを行う際に、連想メモリ410へ入力されたオフセットと比較を行うためのオフセット4114が予め設定される。 The address information table 411 in FIG. 6 includes a header 4111 for comparison with the header information 451 of the PCI transaction received by the I / O card sharing mechanism 400 from the servers # 1 to # 3, and the header information 451 and the address information table 411. The MMIO base address 4112 of each server that is output when the header 4111 matches, the address of the memory space of the I / O processor blade 600 that is output when the header information 451 and the header 4111 of the address information table 411 match (in the figure) An offset 4114 for comparing with the offset input to the associative memory 410 when the interrupt to the CPU 602 of the I / O processor blade 600 is performed in advance.
上述のようにサーバ#1〜#3でI/Oカード501を共有する場合、図6のアドレス情報テーブル411のヘッダ4111には、I/Oカード501とサーバ#1〜#3のアドレス情報が設定され、MMIOベースアドレス4112には、図4に示した各サーバ#1〜#3のMMIOベースアドレスが設定され、メモリ空間アドレス4113には図5で示したように各サーバ#1〜#3のMMIOベースアドレスに対応したメモリ空間6031〜6033のアドレス情報が設定される。また、オフセット4114は、サーバ#1〜#3のメモリ空間のサイズを求めるためにMMIOベースアドレスからの差分が設定される。 When the servers # 1 to # 3 share the I / O card 501 as described above, the address information of the I / O card 501 and the servers # 1 to # 3 is stored in the header 4111 of the address information table 411 in FIG. The MMIO base address 4112 is set with the MMIO base addresses of the servers # 1 to # 3 shown in FIG. 4, and the memory space address 4113 is set to the servers # 1 to # 3 as shown in FIG. The address information of the memory spaces 6031 to 6033 corresponding to the MMIO base address is set. The offset 4114 is set with a difference from the MMIO base address in order to obtain the size of the memory space of the servers # 1 to # 3.
ここで、ヘッダ4111には、ヘッダ情報451の宛先452がI/Oカード501のアドレス情報を示す「Io1」と、I/Oアクセスを要求した要求元453のサーバ#1〜#3のアドレス情報を示す「SV1」〜「SV3」が一対の比較用アドレスとしてヘッダ4111に設定される。 Here, in the header 4111, the destination 452 of the header information 451 is “Io1” indicating the address information of the I / O card 501, and the address information of the servers # 1 to # 3 of the request source 453 that requested the I / O access. “SV1” to “SV3” are set in the header 4111 as a pair of comparison addresses.
例えば、サーバ#1(サーバブレード10−1)からI/Oカード501へのPCIトランザクションには、ヘッダ情報451の宛先452に「Io1」が設定され、要求元453にサーバ#1のアドレス情報である「SV1」が設定されている。ヘッダ情報抽出部406で抽出されたヘッダ情報451を、連想メモリ410のアドレス情報テーブル411へ入力すると、サーバ#1のMMIOベースアドレス0xAと、サーバ#1がI/Oカード501を共有するためのI/Oプロセッサブレード600のメモリ空間6031のアドレス=0xPが連想メモリ410から出力される。 For example, in a PCI transaction from the server # 1 (server blade 10-1) to the I / O card 501, “Io1” is set in the destination 452 of the header information 451, and the address information of the server # 1 is set in the request source 453. A certain “SV1” is set. When the header information 451 extracted by the header information extraction unit 406 is input to the address information table 411 of the associative memory 410, the MMIO base address 0xA of the server # 1 and the server # 1 for sharing the I / O card 501 The address = 0xP of the memory space 6031 of the I / O processor blade 600 is output from the associative memory 410.
連想メモリ410から出力されたMMIOベースアドレスは第1のトランザクションデコーダ402へ入力され、メモリ空間6031のアドレスは信号選択部412へ入力される。 The MMIO base address output from the associative memory 410 is input to the first transaction decoder 402, and the address of the memory space 6031 is input to the signal selection unit 412.
以上のようなメモリ空間により、各トランザクションデコーダ402〜404の動作について以下に説明する。 The operation of each of the transaction decoders 402 to 404 will be described below with the above memory space.
第1のトランザクションデコーダ402は、ヘッダ情報抽出部406から受信したPCIトランザクション本体461よりI/Oカード501、502に対する指令を抽出し、この指令の内容に応じて、I/Oカード共有機構400がI/Oプロセッサブレード600またはI/Oカード501、502へ出力する信号を以下のように決定する。 The first transaction decoder 402 extracts a command for the I / O cards 501 and 502 from the PCI transaction body 461 received from the header information extraction unit 406, and the I / O card sharing mechanism 400 determines that the command is in accordance with the content of the command. A signal to be output to the I / O processor blade 600 or the I / O cards 501 and 502 is determined as follows.
A)PCIトランザクション本体461から抽出した指令が、I/Oカード501、502のコマンドレジスタ512への書き込み指令(I/Oカードの動作を起動させる指令、例えば、DMA転送開始コマンド)であれば、トランザクションデコーダ402は割り込み発生部407に割り込みの出力を指令し、信号選択部412へ割り込み発生部407の出力を選択して汎用バス401の下りの指令信号401−2としてI/Oプロセッサブレード600へ出力するよう指令する。この割り込み信号には、連想メモリ410が出力したI/Oプロセッサブレード600のアドレス4113を含める。また、割り込みを行う場合には、連想メモリ410へ入力したヘッダ情報451とオフセットが、アドレス情報テーブル411のヘッダ4111とオフセット4114に一致している必要がある。 A) If the command extracted from the PCI transaction body 461 is a write command to the command register 512 of the I / O cards 501 and 502 (command for starting the operation of the I / O card, for example, a DMA transfer start command), The transaction decoder 402 instructs the interrupt generation unit 407 to output an interrupt, selects the output of the interrupt generation unit 407 to the signal selection unit 412, and sends it to the I / O processor blade 600 as a down command signal 401-2 on the general-purpose bus 401. Command to output. This interrupt signal includes the address 4113 of the I / O processor blade 600 output from the associative memory 410. Further, when interrupting, the header information 451 and the offset input to the associative memory 410 need to match the header 4111 and the offset 4114 of the address information table 411.
B)PCIトランザクション本体461から抽出した指令が、I/Oカード501、502のコマンドレジスタ512以外のレジスタ(例えば、ベースアドレスレジスタ511等)への書き込み指令(例えば、DMAの初期化要求等でI/Oカードの動作を起動しない指令)であれば、トランザクションデコーダ402はメモリ書込部408に対してI/Oプロセッサブレード600の所定のメモリ空間へ、PCIトランザクション(ヘッダ情報451とPCIトランザクション本体461)を書き込むように指令し、信号選択部412へメモリ書込部408の出力を選択して汎用バス401の下りの指令信号401−2としてI/Oプロセッサブレード600へ出力するよう指令する。なおメモリ書込部408は、連想メモリ410から出力されたI/Oプロセッサブレード600のアドレス4113に対して、ヘッダ情報451とPCIトランザクション本体461を書き込む。 B) The command extracted from the PCI transaction main body 461 is changed by a write command (for example, a DMA initialization request) to a register other than the command register 512 (for example, the base address register 511) of the I / O cards 501 and 502. If it is a command that does not start the operation of the / O card), the transaction decoder 402 sends a PCI transaction (header information 451 and PCI transaction body 461) to the memory writing unit 408 to a predetermined memory space of the I / O processor blade 600. ) Is selected, and the output of the memory writing unit 408 is selected to the signal selection unit 412 to be output to the I / O processor blade 600 as the down command signal 401-2 of the general-purpose bus 401. The memory writing unit 408 writes the header information 451 and the PCI transaction body 461 to the address 4113 of the I / O processor blade 600 output from the associative memory 410.
C)PCIトランザクション本体461から抽出した指令が、I/Oカード501、502のレジスタへの書き込み要求以外の指令であれば、トランザクションデコーダ402は信号線420から受信したPCIトランザクションを、I/Oカード共有機構400とI/Oカード501、502を接続する汎用バス311、312から下りのPCIトランザクション311−2、312−2としてそのまま出力する。この場合、トランザクションデコーダ402は、PCIトランザクションのヘッダ情報451の宛先452に基づいて、該当するI/Oカード501または502が接続された汎用バス311または312を選択して出力する。 C) If the command extracted from the PCI transaction main body 461 is a command other than a write request to the registers of the I / O cards 501, 502, the transaction decoder 402 converts the PCI transaction received from the signal line 420 to the I / O card. From the general-purpose buses 311 and 312 that connect the sharing mechanism 400 and the I / O cards 501 and 502, they are output as they are as the downward PCI transactions 311-2 and 312-2. In this case, the transaction decoder 402 selects and outputs the general-purpose bus 311 or 312 to which the corresponding I / O card 501 or 502 is connected based on the destination 452 of the header information 451 of the PCI transaction.
なお、上記A)〜C)において、トランザクションデコーダ402は後述するI/Oカード共有設定405を参照して、要求元のサーバに要求先のI/Oカードが割り当てられていない場合にはアクセスを禁止する。また、トランザクションデコーダ402は後述するI/Oカード共有設定405を参照して、割り当て状態(属性)が占有を示す「Dedicate」の場合には、連想メモリ410によるアドレスのデコードを行わず、上記C)の機能によりPCIトランザクションをそのまま宛先のI/Oカードに転送し、サーバ#1〜#nとI/Oカード501、502が直接I/O処理を行う通常のアクセスを行う。 In the above A) to C), the transaction decoder 402 refers to an I / O card sharing setting 405 described later, and accesses if the request destination I / O card is not allocated to the request source server. Ban. Further, the transaction decoder 402 refers to an I / O card sharing setting 405 described later, and when the allocation state (attribute) is “Dedicate” indicating the occupation, the address is not decoded by the associative memory 410 and the above C ), The PCI transaction is directly transferred to the destination I / O card, and the servers # 1 to #n and the I / O cards 501 and 502 perform normal access for direct I / O processing.
以上のように、I/Oカード共有機構400のトランザクションデコーダ402は、サーバ#1〜#nとI/Oカード501、502の間に介在して、I/Oカード501、502のレジスタへの書き込みをI/Oプロセッサブレード600への操作(メモリ空間への書き込み処理、割り込み処理)に変換し、共有機能のないI/Oカード501、503を共有可能にするのである。例えば、サーバ#1〜#nがI/Oカード501、502へDMA転送要求(DMA初期化要求)を行うと、上記B)の機能により、I/Oカード共有機構400がDMA転送を行うMMIOベースアドレスをI/Oプロセッサブレード600のメモリ空間に書き込む。次に、サーバ#1〜#nがDMA転送の開始を指令すると、上記A)の機能によりI/Oプロセッサブレード600に割り込みをかけ、後述するように、I/Oプロセッサブレード600のCPU602がサーバ#1〜#nに代わってDMAを実行させるI/Oカード501または502のコマンドレジスタ512、ベースアドレスレジスタ511に書き込みを行う。そして、I/Oカード501または502は、サーバ#1〜#nの代理でI/Oアクセス要求を行ったI/Oプロセッサブレード600の指令により、要求元のサーバ#1〜#nにDMA転送を行う。なお、I/Oプロセッサブレード600の詳細な動作については後述する。また、サーバブレード10−1〜nから起動時の初期化のためにI/Oカードのコンフィグレーションレジスタ(図示省略)参照要求があったときには、トランザクションデコーダ402は、I/Oプロセッサブレード600のCPU602へ割り込みをかけ、さらに、PCIトランザクションをメモリ603へ書き込む。 As described above, the transaction decoder 402 of the I / O card sharing mechanism 400 is interposed between the servers # 1 to #n and the I / O cards 501 and 502 to transfer the I / O cards 501 and 502 to the registers. The writing is converted into an operation to the I / O processor blade 600 (write processing to the memory space, interrupt processing) so that the I / O cards 501 and 503 having no sharing function can be shared. For example, when the servers # 1 to #n make a DMA transfer request (DMA initialization request) to the I / O cards 501 and 502, the I / O card sharing mechanism 400 performs the MMIO that performs the DMA transfer by the function B). The base address is written into the memory space of the I / O processor blade 600. Next, when the servers # 1 to #n command the start of the DMA transfer, the I / O processor blade 600 is interrupted by the function A), and the CPU 602 of the I / O processor blade 600 causes the server to operate as described later. Write to the command register 512 and the base address register 511 of the I / O card 501 or 502 for executing DMA instead of # 1 to #n. Then, the I / O card 501 or 502 performs DMA transfer to the requesting servers # 1 to #n in response to a command from the I / O processor blade 600 that made an I / O access request on behalf of the servers # 1 to #n. I do. The detailed operation of the I / O processor blade 600 will be described later. When the server blade 10-1 to n receives an I / O card configuration register (not shown) reference request for initialization at startup, the transaction decoder 402 displays the CPU 602 of the I / O processor blade 600. And a PCI transaction is written to the memory 603.
次に、I/Oカード共有機構400の第2のトランザクションデコーダ403の主な機能は、汎用バス401を介してI/Oプロセッサブレード600から受信した上りの指令信号401−1を、共有されているI/Oカード501または502に対してのみ出力するようにフィルタリングを行うことである。 Next, the main function of the second transaction decoder 403 of the I / O card sharing mechanism 400 is to share the upstream command signal 401-1 received from the I / O processor blade 600 via the general-purpose bus 401. Filtering is performed so as to output only to the existing I / O card 501 or 502.
このため、I/Oカード共有機構400は、I/Oプロセッサブレード600のメモリ603上に設定したI/Oカード共有設定テーブル610(図7参照)を参照する領域としてI/Oカード共有設定405を格納するレジスタ430を備える。 Therefore, the I / O card sharing mechanism 400 uses the I / O card sharing setting 405 as an area for referring to the I / O card sharing setting table 610 (see FIG. 7) set on the memory 603 of the I / O processor blade 600. Is stored.
ここで、I/Oカード共有設定テーブル610は、図7で示すように、I/Oカード毎に、どのサーバが割り当てられているか(利用可能か)を示す属性のテーブルであり、コンソール5などから管理者が設定するものである。このテーブルは、I/Oカードのアドレス情報(デバイス番号など)などで構成される識別子611と、I/Oカードの機能などを示す種別612と、各サーバ#1〜#3の割り当て状態613〜615から構成される。 Here, as shown in FIG. 7, the I / O card sharing setting table 610 is an attribute table indicating which server is assigned (available) for each I / O card, such as the console 5. It is set by the administrator. This table includes an identifier 611 composed of I / O card address information (device number and the like), a type 612 indicating the function of the I / O card, and the allocation states 613 to 603 of the servers # 1 to # 3. 615.
図7はサーバ#1〜#3とI/Oカード501、502の関係(属性)を示し、識別子611のIOカード1はI/Oカード501を示し、種別612がSCSIカードであり、属性は「Share」でサーバ#1、#2、#3がI/Oカード1を共有していることを示している。なお、稼動するサーバの数に応じて割り当て状態613〜615の数も増減する。 FIG. 7 shows the relationship (attribute) between the servers # 1 to # 3 and the I / O cards 501, 502, the IO card 1 with the identifier 611 shows the I / O card 501, the type 612 is a SCSI card, and the attributes are “Share” indicates that the servers # 1, # 2, and # 3 share the I / O card 1. Note that the number of allocation states 613 to 615 also increases or decreases according to the number of servers that are operating.
また、識別子611のIOカード2はI/Oカード502を示し、種別612がNICカードであり、サーバ#2のみに割り当てられて占有(非共有)されている属性「Dedicate」を示し、このI/Oカード2が他のサーバ#1、#3に共有されていないことを示している。なお、稼動するサーバの数に応じて割り当て状態613〜615の数も増減する。また、I/Oカード2は、サーバ#1、#3について割り当てられていない(利用可能ではない)ため、I/Oカード2に対してこれらのサーバからのアクセスは禁止される。 Also, the IO card 2 with the identifier 611 indicates the I / O card 502, the type 612 is a NIC card, and indicates the attribute “Dedicate” that is assigned only to the server # 2 and is occupied (unshared). This indicates that the / O card 2 is not shared by other servers # 1 and # 3. Note that the number of allocation states 613 to 615 also increases or decreases according to the number of servers that are operating. Further, since the I / O card 2 is not assigned to the servers # 1 and # 3 (not usable), access from these servers to the I / O card 2 is prohibited.
トランザクションデコーダ403は、I/Oプロセッサブレード600からPCIトランザクションを受信すると、PCIトランザクション本体461からサーバアドレス(MMIOベースアドレス)を抽出し、アドレス情報テーブル411のMMIOベースアドレス4112と比較し、一致するMMIOベースアドレスがあればそのエントリのヘッダ4111から宛先と要求元を取得する。次に、I/Oカード共有設定405の識別子と取得した宛先を比較し、一致するエントリで取得した要求元と同一のサーバを検索する。該当するサーバに宛先のI/Oカードが割り当てられていれば、トランザクションデコーダ403が受信したPCIトランザクションは正当なものであるので、宛先のI/Oカードに出力する。一方、該当するサーバに宛先のI/Oカードが割り当てられていなければ、不等なI/Oアクセス要求であるので、PCIトランザクションを破棄する。なお、I/Oカード共有機構400は、PCIトランザクションを破棄してから要求元のサーバにエラーの通知を行っても良い。 When the transaction decoder 403 receives a PCI transaction from the I / O processor blade 600, the transaction decoder 403 extracts the server address (MMIO base address) from the PCI transaction body 461, compares it with the MMIO base address 4112 of the address information table 411, and matches the MMIO. If there is a base address, the destination and request source are acquired from the header 4111 of the entry. Next, the identifier of the I / O card sharing setting 405 is compared with the acquired destination, and the same server as the request source acquired with the matching entry is searched. If a destination I / O card is assigned to the corresponding server, the PCI transaction received by the transaction decoder 403 is valid and is output to the destination I / O card. On the other hand, if the destination I / O card is not assigned to the corresponding server, the PCI transaction is discarded because of an unequal I / O access request. The I / O card sharing mechanism 400 may notify the requesting server of an error after discarding the PCI transaction.
次に、I/Oカード共有機構400の第3のトランザクションデコーダ404の主な機能は、汎用バス311、312を介してI/Oカード501、502から受信した上りのPCIトランザクション311−1、312−1に対して、I/Oアクセスの要求元のサーバ#1〜#nへ返信するためにヘッダ情報451とPCIトランザクション本体461のサーバアドレス462を変換することである。 Next, the main function of the third transaction decoder 404 of the I / O card sharing mechanism 400 is that the upstream PCI transactions 311-1 and 312 received from the I / O cards 501 and 502 via the general-purpose buses 311 and 312. -1 is to convert the header information 451 and the server address 462 of the PCI transaction main body 461 in order to send a reply to the servers # 1 to #n that request the I / O access.
また、トランザクションデコーダ404は、I/Oカード側から受信したPCIトランザクション311−1、312−1が、アドレス変換が必要なトランザクション(DMA等)であるか、アドレス変換が不要なトランザクション(例えば、割り込みなどのイベント)であるかを判定し、信号選択部413でトランザクションデコーダ404の出力または上りのPCIトランザクション311−1、312−1の何れかを選択する。 Further, the transaction decoder 404 determines whether the PCI transactions 311-1 and 312-1 received from the I / O card side are transactions that require address translation (such as DMA) or transactions that do not require address translation (for example, interrupts). The signal selection unit 413 selects either the output of the transaction decoder 404 or the upstream PCI transactions 311-1 and 312-1.
トランザクションデコーダ404は、I/Oカード側から受信したPCIトランザクション311−1、312−1がDMA転送などであれば、アドレス変換が必要であると判定してトランザクションデコーダ404の出力を選択するよう信号選択部413に指令する。一方、アドレス変換が不要なPCIトランザクションであれば、受信したPCIトランザクション311−1、312−1をそのまま出力するように信号選択部413へ指令する。 If the PCI transactions 311-1 and 312-1 received from the I / O card side are DMA transfers or the like, the transaction decoder 404 determines that address conversion is necessary and selects the output of the transaction decoder 404. Commands the selection unit 413. On the other hand, if it is a PCI transaction that does not require address translation, it instructs the signal selection unit 413 to output the received PCI transactions 311-1 and 312-1 as they are.
ここで、アドレス変換の有無の判定は、後述するように、図3で示したPCIトランザクション本体461のMMIOベースアドレス462の未使用領域に設定された所定の上位ビットにサーバ#1〜#nの識別子(アドレス情報など)が含まれているか否かに応じて、トランザクションデコーダ404が決定する。つまり、トランザクションデコーダ404は、PCIトランザクション本体461のMMIOベースアドレス462の上位ビットにサーバ#1〜#nの識別子(以下、サーバ識別子)が含まれていれば、アドレス変換が必要なPCIトランザクションであると判定し、サーバ識別子が含まれていなければアドレス変換が不要なPCIトランザクションであると判定する。 Here, the determination of the presence / absence of the address translation is made as follows. As described later, the servers # 1 to #n are assigned to predetermined high-order bits set in the unused area of the MMIO base address 462 of the PCI transaction body 461 shown in FIG. The transaction decoder 404 determines whether or not an identifier (address information or the like) is included. That is, the transaction decoder 404 is a PCI transaction that requires address conversion if the high-order bits of the MMIO base address 462 of the PCI transaction main body 461 include the identifiers of the servers # 1 to #n (hereinafter referred to as server identifiers). If the server identifier is not included, it is determined that the PCI transaction does not require address translation.
<I/Oプロセッサブレード>
次に、I/Oプロセッサブレード600の機能について以下に説明する。図8は、I/Oプロセッサブレード600を主体とする機能ブロック図である。
<I / O processor blade>
Next, functions of the I / O processor blade 600 will be described below. FIG. 8 is a functional block diagram mainly composed of the I / O processor blade 600.
図8において、I/Oプロセッサブレード600のメモリ603には、上記図7で示したI/Oカード共有設定テーブル610と、複数のサーバが共有するI/Oカードのメモリ空間6031〜6032(図中603x)が格納され、さらに、I/Oカード共有機構400からの割り込み(図中INT)により起動する割り込み処理部620が図示しないROMなどからロードされている。また、サーバブレード10−1〜nの起動時には、I/Oカード共有機構400からの割り込みによって、初期化処理部630が図示しないROMなどからメモリ603へロードされる。 8, the memory 603 of the I / O processor blade 600 includes the I / O card sharing setting table 610 shown in FIG. 7 and memory spaces 6031 to 6032 of I / O cards shared by a plurality of servers (FIG. 8). In addition, an interrupt processing unit 620 activated by an interrupt (INT in the figure) from the I / O card sharing mechanism 400 is loaded from a ROM (not shown) or the like. In addition, when the server blades 10-1 to 10 -n are activated, the initialization processing unit 630 is loaded from the ROM (not shown) or the like into the memory 603 by an interrupt from the I / O card sharing mechanism 400.
I/Oカード共有設定テーブル610は、上記したようにI/Oプロセッサブレード600に接続されたコンソール5から、管理者などにより適宜設定されるもので、I/Oカードとサーバ#1〜#nの割り当てを規定する。メモリ603のメモリ空間603xは、後述するように、サーバ#1〜#nの起動時にCPU602により設定される。そして、I/Oカード共有機構400は、受信したスイッチ200からのPCIトランザクションが、上記B)に該当するとき、例えば、I/Oカードのベースアドレスレジスタ511への書き込みコマンド(DMA初期化要求)を含むとき、このPCIトランザクション本体461とヘッダ情報451を、アクセスを行うI/Oカードと要求元のサーバに対応するメモリ空間603xに書き込む。 The I / O card sharing setting table 610 is appropriately set by the administrator or the like from the console 5 connected to the I / O processor blade 600 as described above, and the I / O card and servers # 1 to #n are set. Specify the allocation of As described later, the memory space 603x of the memory 603 is set by the CPU 602 when the servers # 1 to #n are activated. Then, when the received PCI transaction from the switch 200 corresponds to the above B), the I / O card sharing mechanism 400, for example, writes a command (DMA initialization request) to the base address register 511 of the I / O card. The PCI transaction main body 461 and header information 451 are written in the memory space 603x corresponding to the I / O card to be accessed and the requesting server.
その後、I/Oカード共有機構400は、受信したスイッチ200からのPCIトランザクションが、上記A)に該当するとき(コマンドレジスタ512への書き込み)、I/Oプロセッサブレード600のCPU602に割り込みをかけて、割り込み処理部620を起動する。 After that, the I / O card sharing mechanism 400 interrupts the CPU 602 of the I / O processor blade 600 when the received PCI transaction from the switch 200 corresponds to the above A) (write to the command register 512). Then, the interrupt processing unit 620 is activated.
割り込み処理部620は、I/Oカード共有機構400からの割り込み指令に含まれるメモリ空間603xのアドレスに基づいて、メモリ空間603xに予め書き込まれたヘッダ情報451とPCIトランザクション本体461を読み込む。PCIトランザクション本体461に含まれるコマンドがDMA転送の場合、ヘッダ情報451とPCIトランザクション本体461に含まれるMMIOベースアドレス462を後述するように一時的に変換し、起動するI/Oカードのアドレスレジスタ511に変換したMMIOベースアドレスを書き込む。 The interrupt processing unit 620 reads the header information 451 and the PCI transaction main body 461 previously written in the memory space 603x based on the address of the memory space 603x included in the interrupt command from the I / O card sharing mechanism 400. When the command included in the PCI transaction body 461 is DMA transfer, the header information 451 and the MMIO base address 462 included in the PCI transaction body 461 are temporarily converted as will be described later, and the address register 511 of the I / O card to be activated Write the converted MMIO base address.
次に、割り込み処理部620は、ヘッダ情報451の宛先452となっているI/Oカードのコマンドレジスタ512へ、割り込みを発生させたPCIトランザクション本体461に含まれる指令(例えば、DMA転送開始)を書き込んでI/Oカードの動作を起動する。 Next, the interrupt processing unit 620 sends a command (for example, DMA transfer start) included in the PCI transaction body 461 that generated the interrupt to the command register 512 of the I / O card that is the destination 452 of the header information 451. Write to start the operation of the I / O card.
次に、割り込み処理部620がDMA転送の場合に行う上記アドレス変換について以下に説明する。 Next, the address conversion performed when the interrupt processing unit 620 performs DMA transfer will be described below.
図3で示すように、PCI−EXPRESSまたはPCIにおいてはPCIトランザクションのMMIOのアドレス空間として64ビット(図中0〜63bit)が定義されている。また、サーバ#1〜#n(サーバブレード10−1〜n)のCPU101も64ビットのアドレッシングが可能なものが普及しつつある。しかし、64ビットのアドレス空間を使い切るようなメモリ102をサーバブレード10−1〜nに実装するのは現実的ではでなく、現状では数十GBを搭載可能なメモリ空間の上限とするのが一般的である。このため、CPU101等のアドレスバスも、図3の使用領域のように、64ビット未満の所定値、例えば、52ビット(0〜51ビット)等に設定されている。 As shown in FIG. 3, in PCI-EXPRESS or PCI, 64 bits (0 to 63 bits in the figure) are defined as the MMIO address space of the PCI transaction. Also, CPUs 101- # n (server blades 10-1 to n) that are capable of 64-bit addressing are becoming popular. However, it is not realistic to mount the memory 102 that uses up the 64-bit address space in the server blades 10-1 to 10-n. At present, it is generally the upper limit of the memory space that can be loaded with tens of GB. Is. For this reason, the address bus of the CPU 101 and the like is also set to a predetermined value of less than 64 bits, for example, 52 bits (0 to 51 bits), as in the use area of FIG.
したがって、MMIOのアドレス空間としては64ビットが規定されてはいるものの、サーバーブレード10−1〜nの実装上は、アドレス空間の上位ビットは未使用となっている。 Therefore, although 64 bits are defined as the MMIO address space, the upper bits of the address space are not used in mounting the server blades 10-1 to 10-n.
上述のように、下位52ビットをアクセス可能なアドレス空間とした場合、PCIトランザクション本体461に格納されるMMIOベースアドレス462の上位ビットのうち、図3の52〜63bitは未使用領域463となる。ブレードサーバシステムでは、実装可能なサーバブレードの数を数十程度とすると、図3の未使用領域は12ビットあるので、この未使用領域の12ビットのうち少なくとも6ビットなどを使用すれば、筐体内の全てのサーバを識別することができる。 As described above, when the lower 52 bits are used as an accessible address space, 52 to 63 bits in FIG. 3 among the upper bits of the MMIO base address 462 stored in the PCI transaction main body 461 become the unused area 463. In the blade server system, if the number of mountable server blades is about several tens, the unused area in FIG. 3 has 12 bits. Therefore, if at least 6 bits of the 12 unused areas are used, the chassis All servers in the body can be identified.
一方、PCI−EXPRESSに準拠したI/Oカードは、I/Oカード側で複数のサーバ#1〜#nを識別することはできず、一旦DMA転送が開始されると、初期化時のMMIOベースアドレス462しか認識できないので、複数のサーバ#1〜#nにサーバ#1〜#nにDMA転送を行うことはできない。 On the other hand, an I / O card conforming to PCI-EXPRESS cannot identify a plurality of servers # 1 to #n on the I / O card side, and once DMA transfer is started, the MMIO at initialization Since only the base address 462 can be recognized, DMA transfer cannot be performed to the servers # 1 to #n to the plurality of servers # 1 to #n.
そこで、本発明では、DMA転送の際に、PCIトランザクションのMMIOベースアドレス462の未使用の上位ビットを、サーバ識別子(アドレス情報)を格納する領域として利用し、I/Oプロセッサブレード600の割り込み処理部620がMMIOベースアドレス462の上位ビットにサーバ識別子となる要求元453を埋め込んでアドレス変換を行う。 Therefore, in the present invention, during DMA transfer, the unused upper bits of the MMIO base address 462 of the PCI transaction are used as an area for storing a server identifier (address information), and the interrupt processing of the I / O processor blade 600 is performed. The unit 620 performs address conversion by embedding the request source 453 serving as a server identifier in the upper bits of the MMIO base address 462.
そして、割り込み処理部620がI/Oカードのベースアドレスレジスタ511にアドレス変換を行ったMMIOベースアドレス462を書き込み、コマンドレジスタ512へDMA転送開始を書き込んでI/OカードのDMAを起動する。 Then, the interrupt processing unit 620 writes the MMIO base address 462 subjected to address conversion into the base address register 511 of the I / O card, writes the start of DMA transfer into the command register 512, and activates the DMA of the I / O card.
I/OカードのDMA転送開始後には、I/Oカード共有機構400のトランザクションデコーダ404が、I/OカードからのPCIトランザクションを受信すると、MMIOベースアドレス462の上位ビットの未使用領域463に埋め込まれたサーバ識別子を抽出し、PCIトランザクションのヘッダ情報451の宛先452に書き込む。そして、トランザクションデコーダ404は、MMIOベースアドレス462のサーバ識別子の領域に「0」を書き込んで埋め込まれた要求元の経路情報を削除してから、このPCIトランザクションをスイッチ200へ送信する。スイッチ200は、PCIトランザクションのヘッダ情報に基づいて宛先に指定されたサーバ、つまりDMA転送を要求したサーバ#1〜#nへPCIトランザクションを転送する。 After the DMA transfer of the I / O card is started, when the transaction decoder 404 of the I / O card sharing mechanism 400 receives the PCI transaction from the I / O card, it is embedded in the unused area 463 of the upper bits of the MMIO base address 462. The extracted server identifier is extracted and written in the destination 452 of the header information 451 of the PCI transaction. Then, the transaction decoder 404 writes “0” in the server identifier area of the MMIO base address 462 to delete the embedded path information of the request source, and then transmits this PCI transaction to the switch 200. The switch 200 transfers the PCI transaction to the server designated as the destination based on the header information of the PCI transaction, that is, the servers # 1 to #n that requested the DMA transfer.
すなわち、I/Oプロセッサブレード600の割り込み処理部620が、MMIOの未使用領域463に要求元453のアドレスをサーバ識別子として埋め込んだものをI/Oカードのアドレスレジスタ511に書き込んで、I/OカードのDMA転送を起動し、I/Oカードから出力されるDMA転送はI/Oカード共有機構400によって、PCIトランザクション内のMMIOベースアドレス462の未使用領域463からサーバ識別子を抽出して、ヘッダ情報451の宛先452に設定する。これにより、I/Oカード自体には複数のサーバ#1〜#nを識別する機能がなくても、I/Oカード共有機構400とI/Oプロセッサブレード600によりI/Oカードの共有が可能になるのである。 In other words, the interrupt processing unit 620 of the I / O processor blade 600 writes the address of the request source 453 embedded in the unused area 463 of the MMIO as a server identifier into the address register 511 of the I / O card. The DMA transfer of the card is started, and the DMA transfer output from the I / O card is extracted by the I / O card sharing mechanism 400 by extracting the server identifier from the unused area 463 of the MMIO base address 462 in the PCI transaction, and the header It is set to the destination 452 of the information 451. As a result, the I / O card itself can be shared by the I / O card sharing mechanism 400 and the I / O processor blade 600 even if the I / O card itself does not have a function of identifying a plurality of servers # 1 to #n. It becomes.
<I/Oカード共有処理>
次に、PCIトランザクションを主体にしたI/Oカード共有機構400とI/Oプロセッサブレード600によるI/Oカード共有の処理を図9に示す。
<I / O card sharing process>
Next, FIG. 9 shows I / O card sharing processing by the I / O card sharing mechanism 400 and the I / O processor blade 600 mainly using PCI transactions.
図9において、S1ではサーバ#1〜#nが、I/Oアクセスを行うI/Oカードに対して、PCIトランザクションにDMA初期化コマンドなどを設定して送信する。サーバ#1〜#nは、PCIトランザクションのヘッダ情報451の要求元453に自分のアドレス情報(サーバ識別子)を設定し、MMIOベースアドレス462にこのI/Oカードにサーバが割り当てたMMIOベースアドレスを設定する。 In FIG. 9, in S1, the servers # 1 to #n set and transmit a DMA initialization command or the like in the PCI transaction to the I / O card that performs I / O access. The servers # 1 to #n set their own address information (server identifier) in the request source 453 of the PCI transaction header information 451, and the MMIO base address assigned by the server to this I / O card is set as the MMIO base address 462. Set.
S2では、I/Oカードとサーバ間に介在するI/Oカード共有機構400が、このPCIトランザクションを受信すると、I/Oカードのアドレスレジスタ511への書き込み指令を含むDMA初期化コマンドがあるので、このPCIトランザクションをI/Oプロセッサブレード600のメモリ空間603xに書き込む。この時点では、I/Oカードへのアクセスは行われない。 In S2, when the I / O card sharing mechanism 400 interposed between the I / O card and the server receives this PCI transaction, there is a DMA initialization command including a write instruction to the address register 511 of the I / O card. The PCI transaction is written into the memory space 603x of the I / O processor blade 600. At this time, access to the I / O card is not performed.
S3では、サーバ#1〜#nがI/Oカードに対してDMA転送開始のPCIトランザクションを送信すると、I/Oカード共有機構400はI/Oカードの動作を起動する指令を含むためI/Oプロセッサブレード600に割り込みをかけて、割り込み処理部620を起動する。 In S3, when the servers # 1 to #n transmit a PCI transaction for starting DMA transfer to the I / O card, the I / O card sharing mechanism 400 includes a command for starting the operation of the I / O card, so The O processor blade 600 is interrupted and the interrupt processing unit 620 is activated.
割り込み処理部620は、メモリ空間603xに書き込まれたPCIトランザクションからMMIOベースアドレス462を読み込んで、I/Oカードのアドレスレジスタ511に書き込む。このとき、割り込み処理部620は、PCIトランザクション内のMMIOベースアドレス462の未使用領域463に、要求元のサーバを示すヘッダ情報451の要求元453を埋め込んでおく。そして、割り込み処理部620がI/Oカードのコマンドレジスタ512へDMA転送開始を書き込んで、I/Oカードの動作を起動する。 The interrupt processing unit 620 reads the MMIO base address 462 from the PCI transaction written in the memory space 603x and writes it in the address register 511 of the I / O card. At this time, the interrupt processing unit 620 embeds the request source 453 of the header information 451 indicating the request source server in the unused area 463 of the MMIO base address 462 in the PCI transaction. Then, the interrupt processing unit 620 writes the DMA transfer start to the command register 512 of the I / O card, and activates the operation of the I / O card.
S4では、I/Oカードがアドレスレジスタ511に設定されたMMIOベースアドレス462に対してDMA転送(書き込みまたは読み込み)を行う。 In S4, the I / O card performs a DMA transfer (write or read) to the MMIO base address 462 set in the address register 511.
I/OカードからのDMAによるPCIトランザクションには、MMIOベースアドレス462の上位ビットに設定された未使用領域463にサーバ識別子が埋め込まれている。 In the PCI transaction by DMA from the I / O card, the server identifier is embedded in the unused area 463 set in the upper bits of the MMIO base address 462.
S5では、I/Oカードとサーバ#1〜#nの間に介在するI/Oカード共有機構400が、PCIトランザクションを受信すると上記図2のトランザクションデコーダ404でDMAによるPCIトランザクションであるか否かを判定する。 In S5, when the I / O card sharing mechanism 400 interposed between the I / O card and the servers # 1 to #n receives the PCI transaction, the transaction decoder 404 in FIG. Determine.
このトランザクションデコーダ404で行われるI/OカードからのPCIトランザクションがDMAであるか否かの判定は、上記MMIOベースアドレス462の未使用領域463の全ビットが0でなければ、サーバ識別子が埋め込まれていると判定して、DMAによるPCIトランザクションであると判定することができる。 Whether or not the PCI transaction from the I / O card performed by the transaction decoder 404 is DMA is determined based on whether or not all bits of the unused area 463 of the MMIO base address 462 are 0, the server identifier is embedded. It can be determined that the transaction is a PCI transaction by DMA.
そして、DMAのPCIトランザクションの場合、トランザクションデコーダ404は、MMIOベースアドレス462の未使用領域463の内容をヘッダ情報451の宛先452に設定し、スイッチ200で識別可能なサーバ#1〜#nのアドレス情報に変換する。この後、トランザクションデコーダ404は未使用領域463の内容を消去するため、未使用領域463の全ビットに0をセットしてからこのPCIトランザクションを送信する。 In the case of a DMA PCI transaction, the transaction decoder 404 sets the contents of the unused area 463 of the MMIO base address 462 to the destination 452 of the header information 451, and addresses of servers # 1 to #n that can be identified by the switch 200 Convert to information. Thereafter, the transaction decoder 404 transmits this PCI transaction after setting all bits of the unused area 463 to 0 in order to erase the contents of the unused area 463.
この宛先452に基づいてスイッチ200は、DMAのPCIトランザクションを、宛先452に設定されたDMAの要求元のサーバに転送し、サーバ#1〜#nに設定したMMIOに対して所定のアクセスが行われる。 Based on the destination 452, the switch 200 transfers the DMA PCI transaction to the server that requested the DMA set in the destination 452, and the MMIO set in the servers # 1 to #n performs predetermined access. Is called.
このように、I/Oカードのアドレスレジスタ511に設定されたMMIOベースアドレスの所定の上位ビットに、DMAを要求したサーバ識別子(要求元453)が設定されているので、DMAを繰り返して行ってもI/Oカード共有機構400が各PCIトランザクションの宛先452をDMAの要求元であるサーバのアドレス情報に付け替えるので、汎用のI/Oカードを用いながらも複数のサーバブレード10−1〜nで共有することが可能となるのである。 As described above, since the server identifier (request source 453) that requested the DMA is set in a predetermined upper bit of the MMIO base address set in the address register 511 of the I / O card, the DMA is repeatedly performed. In addition, since the I / O card sharing mechanism 400 replaces the address 452 of each PCI transaction with the address information of the server that is the DMA request source, the server blades 10-1 to 10-n can use the general-purpose I / O card. It becomes possible to share.
上記処理を時系列的に示したものが、図10のタイムチャートである。まず、S11ではサーバ#1〜#nが、I/Oアクセスを行うI/Oカードに対して、PCIトランザクションにDMA初期化コマンドなどを設定して送信する。 The time chart of FIG. 10 shows the above processing in time series. First, in S11, the servers # 1 to #n set and transmit a DMA initialization command or the like in the PCI transaction to the I / O card that performs I / O access.
S12では、I/Oカード共有機構400が、I/Oカードのコマンドレジスタ512以外のレジスタに対する書き込み要求であるので、I/Oプロセッサブレード600のメモリ空間にPCIトランザクションの内容を書き込む。 In S 12, since the I / O card sharing mechanism 400 is a write request to a register other than the command register 512 of the I / O card, the contents of the PCI transaction are written in the memory space of the I / O processor blade 600.
次に、S13では、サーバ#1〜#nがI/Oアクセスを行うI/Oカードに対して、PCIトランザクションにDMA転送開始コマンドなどコマンドレジスタ512への書き込み指令を設定して送信する。 Next, in S13, the servers # 1 to #n set and transmit a write command to the command register 512 such as a DMA transfer start command in the PCI transaction to the I / O card that performs I / O access.
S14では、I/Oカード共有機構400が、I/Oカードのコマンドレジスタ512に対する書き込み指令であるので、I/Oプロセッサブレード600のCPU602へ割り込みを要求する。 In S14, since the I / O card sharing mechanism 400 is a write command to the command register 512 of the I / O card, it requests an interrupt to the CPU 602 of the I / O processor blade 600.
S15では、I/Oプロセッサブレード600のCPU602が割り込み処理部620を起動して、アドレスレジスタ511等コマンドレジスタ512以外の内容を読み出す。 In S15, the CPU 602 of the I / O processor blade 600 activates the interrupt processing unit 620 and reads contents other than the command register 512 such as the address register 511.
S16では、割り込み処理部620が読み込んだPCIトランザクションの内容がDMAであれば、ヘッダ情報451の要求元453をMMIOベースアドレス462の未使用領域463にセットする。そして、このアドレス変換を行ったMMIOベースアドレス462をI/Oカードのアドレスレジスタ511に書き込み、コマンドレジスタ512にDMA転送開始コマンドを書き込んでI/Oカードの動作を起動する。 In S16, if the content of the PCI transaction read by the interrupt processing unit 620 is DMA, the request source 453 of the header information 451 is set in the unused area 463 of the MMIO base address 462. Then, the address-converted MMIO base address 462 is written into the address register 511 of the I / O card, and a DMA transfer start command is written into the command register 512 to activate the operation of the I / O card.
S17では、I/OカードのDMAコントローラ513が、アドレスレジスタ511のメモリ空間にDMAアクセスを行う。 In S 17, the DMA controller 513 of the I / O card performs DMA access to the memory space of the address register 511.
S18では、I/OカードからのPCIトランザクションを受信し、DMAであるかをトランザクションデコーダ404が上述のように判定する。そしてトランザクションデコーダ404は、DMAのPCIトランザクションであれば、PCIトランザクション本体461のMMIOベースアドレス462の未使用領域463のサーバ識別子を、ヘッダ情報451の宛先452に設定してアドレス情報の変換(復元処理)を実施する。そして、トランザクションデコーダ404が、スイッチ200を介してDMAを要求したサーバにPCIトランザクションを送信する。 In S18, the PCI transaction from the I / O card is received, and the transaction decoder 404 determines whether it is DMA as described above. In the case of a DMA PCI transaction, the transaction decoder 404 sets the server identifier of the unused area 463 of the MMIO base address 462 of the PCI transaction main body 461 as the destination 452 of the header information 451 and converts (restores) the address information. ). Then, the transaction decoder 404 transmits a PCI transaction to the server that requested the DMA via the switch 200.
以上の手順により、MMIOベースアドレス462の未使用領域463にDMAを要求したサーバの識別子を埋め込んでI/OカードのDMAコントローラ513に処理を実行させることで、一つのI/Oカードを複数のサーバ#1〜#nで共有することが可能となる。 By the above procedure, the identifier of the server that requested the DMA is embedded in the unused area 463 of the MMIO base address 462, and the I / O card DMA controller 513 executes processing, so that one I / O card can be connected to a plurality of I / O cards. The servers # 1 to #n can be shared.
<アドレス情報の設定処理>
次に、図11はサーバブレード10−1〜nを起動したときに実行される、アドレス情報テーブル411の設定処理の一例を示すタイムチャートである。
<Address information setting process>
Next, FIG. 11 is a time chart showing an example of setting processing of the address information table 411 executed when the server blades 10-1 to n are activated.
連想メモリ410に格納されるアドレス情報テーブル411は、サーバブレード10−1〜nが起動するたびに図11の処理により更新される。なお、以下では、サーバブレード10−1を起動した場合について説明する。 The address information table 411 stored in the associative memory 410 is updated by the process of FIG. 11 every time the server blades 10-1 to 10-n are activated. Hereinafter, a case where the server blade 10-1 is activated will be described.
まず、S20でサーバブレード10−1の電源をONにする。S21では、電源の投入によりCPU101が図示しないBIOSを起動して、I/Oカード(デバイス)の初期化を行うために各I/Oカードのコンフィグレーションレジスタに対して読み込みを要求する。 First, in S20, the server blade 10-1 is turned on. In S21, when the power is turned on, the CPU 101 activates a BIOS (not shown) and requests the configuration register of each I / O card to read in order to initialize the I / O card (device).
S22では、I/Oカード共有機構400のトランザクションデコーダ402は、I/Oカードのコンフィグレーションレジスタの読み込み要求を受けたので、上述したように、I/Oプロセッサブレード600のCPU602へ割り込みをかけ、さらに、このコンフィグレーションレジスタの読み込み要求のPCIトランザクションをメモリ603へ書き込む。このとき、コンフィグレーションレジスタの読み込み要求を出したサーバブレード10−1ではMMIOが未設定であるため、トランザクションデコーダ402は予め設定したアドレスに書き込みを行う。 In S22, since the transaction decoder 402 of the I / O card sharing mechanism 400 has received a request to read the configuration register of the I / O card, as described above, it interrupts the CPU 602 of the I / O processor blade 600, Further, the PCI transaction for requesting reading of the configuration register is written to the memory 603. At this time, since the MMIO is not set in the server blade 10-1 that issued the configuration register read request, the transaction decoder 402 writes to a preset address.
S23では、I/Oプロセッサブレード600のCPU602が、トランザクションデコーダ402の割り込みによって図8に示した初期化処理部630を起動する。初期化処理部630は、所定のアドレスに書き込まれたコンフィグレーションレジスタの読み込み要求から、I/Oカード共有設定テーブル610を読み込んで当該サーバブレードに割り当てられたI/Oカードを確認する。 In S23, the CPU 602 of the I / O processor blade 600 activates the initialization processing unit 630 shown in FIG. The initialization processing unit 630 reads the I / O card sharing setting table 610 from the configuration register read request written at a predetermined address, and confirms the I / O card assigned to the server blade.
S24では、I/Oカードが当該サーバブレード10−1に割り当てられていなければ(アクセス禁止)、初期化処理部630はI/Oカード共有機構400を介して割り当てがないことを通知する(マスターアボート扱い)。一方、I/Oカードが当該サーバブレードに割り当てられていれば、初期化処理部630はこのI/Oカードのコンフィグレーションレジスタの内容を読み込んで、サーバブレード10−1に応答する。なお、S24の処理は、I/Oカード共有610に設定されている全てのI/Oカードについて順次実行する。 In S24, if the I / O card is not assigned to the server blade 10-1 (access prohibition), the initialization processing unit 630 notifies that there is no assignment via the I / O card sharing mechanism 400 (master). Abort treatment). On the other hand, if the I / O card is assigned to the server blade, the initialization processing unit 630 reads the contents of the configuration register of the I / O card and responds to the server blade 10-1. Note that the processing in S24 is sequentially executed for all the I / O cards set in the I / O card sharing 610.
S25では、I/Oプロセッサブレード600からI/Oカードのコンフィグレーションレジスタの内容を受信すると、サーバブレード10−1は取得したI/Oカードの情報からMMIO空間やIO空間を設定し、MMIOベースアドレスの設定などを行う。そして、サーバブレード10−1は、MMIOベースアドレスをI/Oカードに通知する。なお、この通知はI/Oカード毎に実行される。 In S25, upon receiving the contents of the I / O card configuration register from the I / O processor blade 600, the server blade 10-1 sets the MMIO space and IO space from the acquired I / O card information, and the MMIO base Set the address. Then, the server blade 10-1 notifies the I / O card of the MMIO base address. This notification is executed for each I / O card.
S26では、I/Oカード共有機構400がサーバブレード10−1からのMMIOベースアドレスを通知するPCIトランザクションを受信する。そして、I/Oカード共有機構400は、MMIOベースアドレスの設定通知であるので、I/Oプロセッサブレード600のCPU602へ割り込みをかけ、さらに、MMIOベースアドレスを通知するPCIトランザクションをメモリ603へ書き込む。なお、この処理は上記S22と同様に行われる。 In S26, the I / O card sharing mechanism 400 receives a PCI transaction notifying the MMIO base address from the server blade 10-1. Since the I / O card sharing mechanism 400 is an MMIO base address setting notification, the I / O card sharing mechanism 400 interrupts the CPU 602 of the I / O processor blade 600 and writes a PCI transaction for notifying the MMIO base address to the memory 603. This process is performed in the same manner as S22.
S27では、I/Oプロセッサブレード600のCPU602が、トランザクションデコーダ402の割り込みによって初期化処理部630を起動する。初期化処理部630は、所定のアドレスに書き込まれたサーバブレード10−1のMMIOベースアドレス設定通知から、メモリ603にサーバブレード10−1の当該I/Oカードに対応するメモリ空間6031を割り当てる。そして、初期化処理部630は、サーバブレード10−1のMMIOベースアドレス及びオフセットと、I/Oプロセッサブレード600のメモリ空間6031のアドレスと、割り当てたI/Oカードのアドレス情報と、サーバブレード10−1のアドレス情報をI/Oカード共有機構400に通知し、連想メモリ410のアドレス情報テーブル411にこれらのアドレスを反映させる。なお、S27の処理は、サーバブレード10−1が利用するI/Oカード毎に繰り返して実行すればよい。 In S <b> 27, the CPU 602 of the I / O processor blade 600 activates the initialization processing unit 630 by the interrupt of the transaction decoder 402. The initialization processing unit 630 allocates a memory space 6031 corresponding to the I / O card of the server blade 10-1 to the memory 603 from the MMIO base address setting notification of the server blade 10-1 written at a predetermined address. The initialization processing unit 630 then sets the MMIO base address and offset of the server blade 10-1, the address of the memory space 6031 of the I / O processor blade 600, the address information of the assigned I / O card, and the server blade 10 -1 address information is notified to the I / O card sharing mechanism 400 and these addresses are reflected in the address information table 411 of the associative memory 410. Note that the process of S27 may be repeatedly executed for each I / O card used by the server blade 10-1.
以上の処理により、複数のサーバブレード10−1〜nで共有されるI/Oカード501、502へ起動したサーバブレード10−1〜nが直接アクセスすることなく、I/Oプロセッサブレード600が代理でコンフィグレーションレジスタの内容を取得し、メモリ空間603xの設定などを行う。ブレードサーバシステムでは、他のサーバブレードが稼動しているときに、新たなサーバブレードを設置し起動することができる。このような場合に、新たなサーバブレードの起動時にI/Oプロセッサブレード600が、I/Oカードに代わって応答をすることで、他の稼働中のサーバブレードのI/Oアクセスに影響を当てることなく新規のサーバブレードを起動することが可能となる。 With the above processing, the I / O processor blade 600 acts as a proxy without directly accessing the activated server blades 10-1 to 10-n to the I / O cards 501 and 502 shared by the plurality of server blades 10-1 to 10-n. The contents of the configuration register are acquired and the memory space 603x is set. In the blade server system, a new server blade can be installed and activated when another server blade is operating. In such a case, the I / O processor blade 600 responds instead of the I / O card when a new server blade is started, thereby affecting the I / O access of other operating server blades. It becomes possible to start a new server blade without any problems.
なお、上記ではサーバブレードに搭載したBIOSにより起動する例を示したが、図示はしないが、EFI(Extensible Firmware Interface)により起動する場合でも上記と同様に処理することが可能である。 In the above description, the example is shown in which the boot is performed by the BIOS mounted on the server blade. However, although not illustrated, even when the boot is performed by EFI (Extensible Firmware Interface), the same processing as described above can be performed.
<I/Oカード共有設定テーブル>
図7に示したI/Oカード共有設定テーブル610について、以下に説明する。
<I / O card sharing setting table>
The I / O card sharing setting table 610 shown in FIG. 7 will be described below.
上述したように、I/Oカード共有設定テーブル610は、I/Oカード毎に、どのサーバに割り当てられているかを示すテーブルであり、コンソール5などから管理者が適宜設定するものである。なお、各サーバ#1〜#nとI/Oカードの共有、占有、アクセス禁止の属性を、図7に示すインターフェースで、コンソール5のディスプレイへ表示し、図示しないマウスやキーボードなどのインターフェースで設定することができる。 As described above, the I / O card sharing setting table 610 is a table indicating which server is assigned to each I / O card, and is set appropriately by the administrator from the console 5 or the like. The attributes of sharing, occupying, and prohibiting access to the servers # 1 to #n and the I / O card are displayed on the display of the console 5 with the interface shown in FIG. 7, and set with an interface such as a mouse or a keyboard (not shown). can do.
I/Oカード共有設定テーブル610の識別子611は、I/Oカードの追加、変更の度に、管理者が適宜設定する。また、I/Oカードの機能などを示す種別612は、I/Oカードのコンフィグレーションレジスタのクラスコード及びサブクラスコードを読み込んで、本テーブルに設定することができる。 The identifier 611 of the I / O card sharing setting table 610 is appropriately set by the administrator every time an I / O card is added or changed. The type 612 indicating the function of the I / O card can be set in this table by reading the class code and subclass code of the configuration register of the I / O card.
各サーバ#1〜#3の割り当て状態613〜615は、管理者がサーバ#1〜#3やI/Oカードの特性や性能等から共有の有無、割り当ての有無を適宜設定する。図7において、複数のサーバに割り当てて共有する場合には「Share」を設定し、割り当てない場合には「No Assigned」を設定し、一つのサーバで占有する場合には「Dedicate」を設定して他のサーバからこのI/Oカードへのアクセスを禁止する。なお、I/Oカードの割り当が「No Assigned」に設定されたサーバは、当該I/Oカードへアクセスするとアクセスが拒否される。この拒否されたアクセスが読み込みの場合には、I/Oカード共有機構400は全ビットが1のデータを応答し、上記アクセスが書き込みの場合には、マスターアボートを通知する。 In the allocation states 613 to 615 of the servers # 1 to # 3, the administrator appropriately sets the presence or absence of sharing and the presence or absence of allocation from the characteristics and performance of the servers # 1 to # 3 and the I / O card. In FIG. 7, “Share” is set when allocating to a plurality of servers for sharing, “No Assigned” is set when not allocating, and “Dedicate” is set when occupying one server. The access to this I / O card from other servers is prohibited. Note that a server whose I / O card assignment is set to “No Assigned” is denied access when accessing the I / O card. When the denied access is read, the I / O card sharing mechanism 400 responds with data having all bits set to 1, and when the access is write, it notifies the master abort.
このI/Oカード共有設定テーブル610は、I/Oカード共有機構400のI/Oカード共有設定405に反映される。そして、I/Oプロセッサブレード600からI/OカードへのPCIトランザクションを管理する第2のトランザクションデコーダ403は、I/Oカード共有設定405に基づいて、正当なトランザクションのみを許可し、不正なトランザクション、すなわち、I/Oカード共有設定テーブル610で割り当てられていないサーバによるアクセスを禁止する。 This I / O card sharing setting table 610 is reflected in the I / O card sharing setting 405 of the I / O card sharing mechanism 400. Then, the second transaction decoder 403 that manages the PCI transaction from the I / O processor blade 600 to the I / O card permits only a legitimate transaction based on the I / O card sharing setting 405 and performs an illegal transaction. That is, access by a server not assigned in the I / O card sharing setting table 610 is prohibited.
このI/Oカード共有設定テーブル610により、全てのI/Oカードを共有することもできるが、スループットを確保するためなどで一つのI/Oカードあるサーバに占有させ、他のI/Oカードを共有するように設定することができる。これにより、I/Oカードの共有と占有を混在させることが可能となって、ブレードサーバシステムのI/Oデバイスの構成に柔軟性を持たせることが可能となって、I/Oデバイスのリソースを有効に利用できるのである。 Although all I / O cards can be shared using this I / O card sharing setting table 610, other I / O cards can be occupied by a server with one I / O card in order to ensure throughput. Can be set to share. As a result, sharing and occupation of the I / O card can be mixed, and the configuration of the I / O device of the blade server system can be made flexible. Can be used effectively.
<第2実施形態>
図12は、第2の実施形態を示すブレードサーバシステムのブロック図である。このブレードサーバシステムでは、前記第1実施形態のI/Oカードにコマンドチェイン制御部514を付加し、サーバ#1〜#nのメモリ02に設定されたデータ構造体を順次読み込んでI/O処理を行うI/Oカード1501、1502で構成したもので、その他の構成は前記第1実施形態と同様である。
Second Embodiment
FIG. 12 is a block diagram of a blade server system showing the second embodiment. In this blade server system, a command chain control unit 514 is added to the I / O card of the first embodiment, and the data structures set in the memory 02 of the servers # 1 to #n are sequentially read to perform I / O processing. The other configurations are the same as those of the first embodiment.
I/Oカード1501、1502は、サーバブレード10−1〜nのメモリ102に設定されたデータ構造体を順次読み込んで、各データ構造体の記述に従ってI/O動作を行うもので、いわゆるコマンドチェイン処理を行うものである。 The I / O cards 1501 and 1502 sequentially read the data structures set in the memory 102 of the server blades 10-1 to 10-n and perform I / O operations according to the description of each data structure. The processing is performed.
サーバブレード10−1〜nで稼動するサーバ#1〜#nは、I/Oカードを使用する際に、図13で示すように、各サーバ#1〜#nのメモリ空間の所定のアドレスにデータ構造体1020〜1022を設定しておく。 When using the I / O card, the servers # 1 to #n operating on the server blades 10-1 to 10-n have predetermined addresses in the memory spaces of the servers # 1 to #n as shown in FIG. Data structures 1020 to 1022 are set in advance.
例えば、サーバ#1のメモリ空間には、3つのデータ構造体1020(CCW1〜3)がアドレス0xDに設定され、サーバ#2のメモリ空間には、2つのデータ構造体1021(CCW11、12)がアドレス0xEに設定され、サーバ#3のメモリ空間には、4つのデータ構造体1022(CCW21〜24)がアドレス0xFに設定される。なお、これらのデータ構造体は、各サーバ#1〜#3のOSまたはアプリケーションが適宜設定するものである。 For example, in the memory space of the server # 1, three data structures 1020 (CCW1 to 3) are set to the address 0xD, and in the memory space of the server # 2, two data structures 1021 (CCW11 and 12) are set. Address 0xE is set, and four data structures 1022 (CCW21 to 24) are set to address 0xF in the memory space of server # 3. These data structures are set appropriately by the OS or application of each of the servers # 1 to # 3.
先頭及び中間のデータ構造体には、次のデータ構造体があることを示すフラグが設定されている。例えば、データ構造体1020のCCW1とCCW2には、次のデータ構造体があることを示すフラグが設定され、CCW3にはこのフラグが設定されず、最後のデータ構造体であることを示す。 A flag indicating that there is a next data structure is set in the first and intermediate data structures. For example, a flag indicating that there is the next data structure is set in CCW1 and CCW2 of the data structure 1020, and this flag is not set in CCW3, indicating that it is the last data structure.
そして、各サーバ#1〜#3は、使用するI/Oカード1501または1502に対して動作を起動させる指令を送信し、メモリ空間に設定したデータ構造体1020〜1022のアドレスを通知する。 Each of the servers # 1 to # 3 transmits a command for starting the operation to the I / O card 1501 or 1502 to be used, and notifies the addresses of the data structures 1020 to 1022 set in the memory space.
I/Oカード1501、1502は、サーバ#1〜#nから起動の指令とともにメモリ空間のアドレスを受信すると、指定されたメモリ空間のデータ構造体を読み込んで、データ構造体1020〜1022に記述されたI/Oアクセスを実行する。 When the I / O cards 1501 and 1502 receive the address of the memory space together with the activation instruction from the servers # 1 to #n, the I / O cards 1501 and 1502 read the data structure of the designated memory space and are described in the data structures 1020 to 1022 I / O access is executed.
このようなコマンドチェイン処理を行うI/Oカード1501、1502を備えたブレードサーバシステムに、前記第1実施形態と同様のI/Oカード共有機構400と、I/Oプロセッサブレード600を適用する例を以下に示す。 An example in which an I / O card sharing mechanism 400 and an I / O processor blade 600 similar to those of the first embodiment are applied to a blade server system including I / O cards 1501 and 1502 for performing such command chain processing. Is shown below.
I/Oカード共有機構400とI/Oプロセッサブレード600によるI/Oカードの共有処理のタイムチャートを図14に示す。なお、以下では、サーバ#1(サーバブレード10−1)がI/Oカード1501を使用する場合について説明する。 A time chart of I / O card sharing processing by the I / O card sharing mechanism 400 and the I / O processor blade 600 is shown in FIG. Hereinafter, a case where the server # 1 (server blade 10-1) uses the I / O card 1501 will be described.
まず、サーバ#1が、I/Oアクセスを行うI/Oカード1501に対して動作の起動を指令するPCIトランザクションを送信する(S31)。このPCIトランザクションは、サーバ#1がI/Oカード1501に割り当てたMMIOベースアドレスをMMIOベースアドレス462に設定し、動作の起動を指令するコマンドとデータ構造体1020のアドレス0xDをPCIトランザクション本体461内に設定する。 First, the server # 1 transmits a PCI transaction instructing activation of operation to the I / O card 1501 that performs I / O access (S31). In this PCI transaction, the MMIO base address assigned to the I / O card 1501 by the server # 1 is set in the MMIO base address 462, and the command for instructing the start of operation and the address 0xD of the data structure 1020 are stored in the PCI transaction body 461. Set to.
I/Oカード共有機構400は、サーバ#1からのPCIトランザクションを受信するとPCIトランザクションの指令を解析し、動作の起動の指令はI/Oカード1501のコマンドレジスタ512への書き込み指令であるので、I/Oプロセッサブレード600のCPU602へ割り込みをかける(S32)。同時に、I/Oカード共有機構400は、I/Oプロセッサブレード600の所定のメモリ空間6031(図5参照)にPCIトランザクションの内容を書き込む(S33)。 When the I / O card sharing mechanism 400 receives the PCI transaction from the server # 1, the I / O card sharing mechanism 400 analyzes the command of the PCI transaction, and the command for starting the operation is a command to write to the command register 512 of the I / O card 1501. An interrupt is issued to the CPU 602 of the I / O processor blade 600 (S32). At the same time, the I / O card sharing mechanism 400 writes the contents of the PCI transaction in a predetermined memory space 6031 (see FIG. 5) of the I / O processor blade 600 (S33).
割り込みにより起動したCPU602は、前記第1実施形態の割り込み処理部620を起動する。そして割り込み処理部620が、メモリ空間に書き込まれたPCIトランザクションのデータ構造体1020のアドレス0xDを読み込んで、MMIOベースアドレス462の要求元453を取得する。次に、割り込み処理部620は、要求元453のサーバ#1のメモリ102に対して取得したアドレスからデータ構造体1020を読み込み、I/Oプロセッサブレード600の所定のメモリ空間にデータ構造体1020をコピーする(S34)。なお、このメモリ空間は図15で示すように、サーバ#1〜#n毎に予め設定したデータ構造体を格納する領域であり、この例では、サーバ#1〜#3のデータ構造体用メモリ空間として0xS、0xT、0xUが設定され、サーバ#1のデータ構造体1020は、図示のようにアドレス0xSから格納される。 The CPU 602 activated by the interruption activates the interrupt processing unit 620 of the first embodiment. Then, the interrupt processing unit 620 reads the address 0xD of the data structure 1020 of the PCI transaction written in the memory space, and acquires the request source 453 of the MMIO base address 462. Next, the interrupt processing unit 620 reads the data structure 1020 from the acquired address with respect to the memory 102 of the server # 1 of the request source 453, and loads the data structure 1020 into a predetermined memory space of the I / O processor blade 600. Copy (S34). As shown in FIG. 15, this memory space is an area for storing a data structure preset for each of the servers # 1 to #n. In this example, the data structure memory of the servers # 1 to # 3 is stored. 0xS, 0xT, and 0xU are set as the space, and the data structure 1020 of the server # 1 is stored from the address 0xS as illustrated.
次に割り込み処理部620は、DMA等で使用するMMIOの処理を実施する。メモリ空間6031に書き込んだPCIトランザクションから、ヘッダ情報451の要求元453をMMIOベースアドレス462の未使用領域463にセットしたものを、目的のI/Oカード1501のアドレスレジスタ511に書き込んで、アドレス変換を実施しておく(S35)。 Next, the interrupt processing unit 620 performs MMIO processing used in DMA or the like. From the PCI transaction written in the memory space 6031, the request source 453 of the header information 451 set in the unused area 463 of the MMIO base address 462 is written into the address register 511 of the target I / O card 1501 to convert the address. (S35).
この後、割り込み処理部620は、受信したPCIトランザクションのI/Oカードの動作の起動指令に基づいて、I/Oカード1501のコマンドレジスタに動作の起動指令を書き込み、コマンドチェイン制御部514にデータ構造体1020のアドレス0xSを通知する(S36)。 Thereafter, the interrupt processing unit 620 writes the operation start command in the command register of the I / O card 1501 based on the received PCI transaction operation start command, and the command chain control unit 514 receives data. The address 0xS of the structure 1020 is notified (S36).
I/Oカード1501は、割り込み処理部620の起動指令に基づいて起動し、受信したI/Oプロセッサブレード600のメモリ603のアドレス0xSからひとつのデータ構造体(CCW1)1020を読み込む(S37)。なお、I/Oカード共有機構400は、I/Oカード1501からI/Oプロセッサブレード600への通信については、そのまま転送するものとする。 The I / O card 1501 is activated based on the activation instruction of the interrupt processing unit 620, and reads one data structure (CCW1) 1020 from the received address 0xS of the memory 603 of the I / O processor blade 600 (S37). Note that the I / O card sharing mechanism 400 transfers the communication from the I / O card 1501 to the I / O processor blade 600 as it is.
I/Oカード1501はこのデータ構造体1020の記述に応じてI/O操作を行う。例えば、読み込んだデータ構造体1020がDMAの場合、I/Oカード1501はアドレスレジスタ511にセットされたMMIOベースアドレスに対してDMA転送を実施する(S38)。I/OカードからのDMAによるPCIトランザクションには、MMIOベースアドレス462の上位ビットに設定された未使用領域463にサーバ識別子が埋め込まれている。 The I / O card 1501 performs an I / O operation according to the description of the data structure 1020. For example, when the read data structure 1020 is DMA, the I / O card 1501 performs DMA transfer with respect to the MMIO base address set in the address register 511 (S38). In the PCI transaction by DMA from the I / O card, the server identifier is embedded in the unused area 463 set in the upper bits of the MMIO base address 462.
I/Oカード1501とサーバ#1の間に介在するI/Oカード共有機構400が、PCIトランザクションを受信すると上記図2のトランザクションデコーダ404でDMAによるPCIトランザクションであるか否かを判定する。 When the I / O card sharing mechanism 400 interposed between the I / O card 1501 and the server # 1 receives the PCI transaction, the transaction decoder 404 in FIG. 2 determines whether or not it is a PCI PCI transaction.
このトランザクションデコーダ404で行われるI/OカードからのPCIトランザクションがDMAであるか否かの判定は、上記MMIOベースアドレス462の未使用領域463の全ビットが0でなければ、サーバ識別子が埋め込まれていると判定して、DMAによるPCIトランザクションであると判定することができる。 Whether or not the PCI transaction from the I / O card performed by the transaction decoder 404 is DMA is determined based on whether or not all bits of the unused area 463 of the MMIO base address 462 are 0, the server identifier is embedded. It can be determined that the transaction is a PCI transaction by DMA.
そして、DMAのPCIトランザクションの場合、トランザクションデコーダ404は、MMIOベースアドレス462の未使用領域463の内容をヘッダ情報451の宛先452に設定し、スイッチ200で識別可能なサーバ#1〜#nのアドレス情報に変換する。この後、トランザクションデコーダ404は未使用領域463の内容を消去するため、未使用領域463の全ビットに0をセットしてからこのPCIトランザクションを送信する(S39)。 In the case of a DMA PCI transaction, the transaction decoder 404 sets the contents of the unused area 463 of the MMIO base address 462 to the destination 452 of the header information 451, and addresses of servers # 1 to #n that can be identified by the switch 200 Convert to information. Thereafter, in order to erase the contents of the unused area 463, the transaction decoder 404 sets this bit to 0 in all the unused areas 463 and then transmits this PCI transaction (S39).
この宛先452に基づいてスイッチ200は、DMAのPCIトランザクションを、宛先452に設定されたDMAの要求元のサーバに転送し、サーバ#1〜#nに設定したMMIOに対して所定のアクセスが行われる。 Based on the destination 452, the switch 200 transfers the DMA PCI transaction to the server that requested the DMA set in the destination 452, and the MMIO set in the servers # 1 to #n performs predetermined access. Is called.
データ構造体(CCW1)1020で指定されたI/O操作が完了すると、I/Oカード1501は、次のデータ構造体(CCW2)を指定されたI/Oプロセッサブレード600のメモリ603のアドレス0xSから読み込んで、上記と同様に実行する。 When the I / O operation designated by the data structure (CCW1) 1020 is completed, the I / O card 1501 stores the address 0xS of the memory 603 of the I / O processor blade 600 designated by the next data structure (CCW2). And execute as above.
このように、コマンドチェイン処理を行うI/Oカード1501、1502の場合では、I/Oプロセッサブレード600のメモリ603のメモリ空間に、各サーバ#1〜#3のデータ構造体1020〜1022をコピーしておき、サーバ#1〜#3に代わってI/Oプロセッサブレード600がI/Oカード1501、1502からの読み込み要求に応答する。 As described above, in the case of the I / O cards 1501 and 1502 that perform command chain processing, the data structures 1020 to 1022 of the servers # 1 to # 3 are copied to the memory space of the memory 603 of the I / O processor blade 600. The I / O processor blade 600 responds to a read request from the I / O cards 1501 and 1502 in place of the servers # 1 to # 3.
したがって、I/Oカード1501、1502の起動時に、I/Oアクセスを要求したサーバのデータ構造体1020〜1022を格納したメモリ603上のアドレスをI/Oカードへ通知することで、コマンドチェイン処理を行うI/Oカードを複数のサーバ#1〜#3で共有することが可能となる。 Therefore, when the I / O cards 1501 and 1502 are activated, the command chain processing is performed by notifying the I / O card of the address on the memory 603 storing the data structures 1020 to 1022 of the server that requested the I / O access. It is possible to share the I / O card for performing the processing among a plurality of servers # 1 to # 3.
<第3実施形態>
図16は、第3の実施形態を示すブレードサーバシステムのブロック図を示す。本実施形態は、前記第1または第2実施形態のスイッチ200に、I/Oカード共有機構400を組み込んで一体にしたものである。
<Third Embodiment>
FIG. 16 is a block diagram of a blade server system showing the third embodiment. In the present embodiment, the switch 200 of the first or second embodiment is integrated with an I / O card sharing mechanism 400.
スイッチ200Aは、I/Oカード共有機構400を含んで構成され、前記第1または第2実施形態で述べたように動作する。I/Oカード共有機構400をスイッチ200Aに包含することで、ブレードサーバシステムに搭載するスロットの数を低減でき、筐体をコンパクトに構成することが可能となる。 The switch 200A includes the I / O card sharing mechanism 400, and operates as described in the first or second embodiment. By including the I / O card sharing mechanism 400 in the switch 200A, the number of slots installed in the blade server system can be reduced, and the housing can be configured compactly.
<まとめ>
以上のように、本発明によれば、複数のサーバブレード10−1〜nで一つのI/Oカードを共有してDMA転送を行う場合は、DMA転送開始時にはI/Oプロセッサブレード600がI/Oカードのアドレスレジスタ511にDMAを要求したサーバの識別子をMMIOベースアドレス内に埋め込んでおき、I/Oカードからサーバへ向かうPCIトランザクションを中継するI/Oカード共有機構400は、MMIOベースアドレスに埋め込まれたサーバ識別子をヘッダ情報451の宛先452に付け替えることで、汎用バスのI/Oカードを共有することができる。
<Summary>
As described above, according to the present invention, when a plurality of server blades 10-1 to 10-n share one I / O card and perform DMA transfer, the I / O processor blade 600 is set to I The I / O card sharing mechanism 400 that embeds the identifier of the server that requested the DMA in the address register 511 of the / O card in the MMIO base address and relays the PCI transaction from the I / O card to the server. The general-purpose bus I / O card can be shared by replacing the server identifier embedded in the destination address 452 of the header information 451.
そして、DMA転送開始後は、I/Oプロセッサブレード600はPCIトランザクションの転送へ介入せず、I/Oカード共有機構400のハードウェアがアドレス変換を行うため、前記従来例のようなソフトウェア処理によるオーバーヘッドを防いで、I/Oアクセスの性能低下を防ぎながら複数のサーバ間でI/Oカードの共有を実現することが可能となる。 After the DMA transfer is started, the I / O processor blade 600 does not intervene in the PCI transaction transfer and the hardware of the I / O card sharing mechanism 400 performs address conversion. It is possible to realize sharing of an I / O card among a plurality of servers while preventing overhead and preventing performance degradation of I / O access.
さらに、複数のサーバブレード10−1〜nで共有するI/Oカードは、汎用のバスインターフェースで構成することができるので、上述のようなサーバ統合を行う際には、従来使用していたI/Oカードをそのまま利用することができるので、サーバ統合の際のコストを抑制することが可能となる。 Furthermore, since the I / O card shared by the plurality of server blades 10-1 to 10-n can be configured with a general-purpose bus interface, when performing server integration as described above, the I / O card that has been conventionally used is used. Since the / O card can be used as it is, the cost for server integration can be suppressed.
また、サーバ統合の際には、複数のサーバブレード10−1〜nで一つのI/Oカードを共有できるので、I/Oカードの数を低減することができ、前記従来例のようなI/Oカードの増大を防いでコンパクトな筐体を用いることができる。 In addition, when integrating servers, a plurality of server blades 10-1 to 10-n can share one I / O card, so that the number of I / O cards can be reduced. / O cards can be prevented from increasing, and a compact housing can be used.
また、I/Oカード共有設定テーブル610により、共有するI/Oカードと、ひとつのサーバブレードのみに占有させるI/Oカードを混在させることができ、ブレードサーバシステムの柔軟な構成が可能となる。 In addition, the I / O card sharing setting table 610 allows a shared I / O card and an I / O card to be occupied only by one server blade to be mixed, thereby enabling a flexible configuration of the blade server system. .
なお、上記各実施形態では、汎用バスとしてPCI−EXPRESSを適用した例を示したが、PCIやPCI−X等の汎用バスを採用してもよい。 In each of the above embodiments, an example in which PCI-EXPRESS is applied as a general-purpose bus has been described. However, a general-purpose bus such as PCI or PCI-X may be adopted.
また、上記各実施形態では、サーバブレード10−1〜nとサーバ#1〜#nが1対1で対応した例を示したが、サーバ#1〜#nが仮想計算機の論理区画で構成されるときは、サーバ識別子を論理区画番号とすればよい。 In the above embodiments, the server blades 10-1 to n and the servers # 1 to #n correspond to each other on a one-to-one basis. However, the servers # 1 to #n are configured by logical partitions of virtual machines. Server identifier may be a logical partition number.
また、上記各実施形態では、I/Oカード共有機構400に直接I/Oプロセッサブレード600を接続した例を示したが、I/Oプロセッサブレード600をスイッチ200に接続しても良い。さらに、I/Oプロセッサブレード600に代わって、サーバブレードがI/Oプロセッサブレード600の処理を実行するようにしても良い。 Further, in each of the above embodiments, an example in which the I / O processor blade 600 is directly connected to the I / O card sharing mechanism 400 has been described, but the I / O processor blade 600 may be connected to the switch 200. Further, instead of the I / O processor blade 600, the server blade may execute the processing of the I / O processor blade 600.
以上のように、本発明は複数のサーバとI/OカードまたはI/Oデバイスを汎用バスで接続する計算機システムに適用することができ、特に、サーバ統合を行うブレードサーバシステムに適用することで、コストの低減と性能の確保実現できる。 As described above, the present invention can be applied to a computer system in which a plurality of servers and I / O cards or I / O devices are connected by a general-purpose bus, and in particular, by being applied to a blade server system that performs server integration. Reduce costs and ensure performance.
10−1〜10−n サーバブレード
200 スイッチ
400 I/Oカード共有機構
501、502 I/Oカード
600 I/Oプロセッサブレード
405 I/Oカード共有設定
411 アドレス情報テーブル
610 I/Oカード共有設定テーブル
10-1 to 10-n Server blade 200 Switch 400 I / O card sharing mechanism 501, 502 I / O card 600 I / O processor blade 405 I / O card sharing setting 411 Address information table 610 I / O card sharing setting table
Claims (10)
該複数のサーバとI/Oカードを接続するスイッチと、を備え、
前記サーバが、前記I/Oカードから書き込み可能なメモリ空間を備えた計算機システムにおいて、
前記スイッチとI/Oカードの間に配置されて、前記複数のサーバと前記I/Oカードとの間のアクセス要求信号及び応答信号を操作するI/Oカード共有部と、
前記I/OカードとI/Oカード共有部にアクセス可能であって、前記I/Oカード共有部から書き込み可能なメモリと、前記I/Oカード共有部からの割り込みを受け付けるプロセッサとを備えて、前記複数のサーバに対する前記I/Oカードの割り当てを管理するI/Oプロセッサと、
を備え、
前記スイッチは、前記サーバからI/Oカードへの指令と前記メモリ空間を指定するベースアドレスとを含んだアクセス要求信号に、当該アクセス要求信号の宛先と要求元の経路情報を前記アクセス要求信号のヘッダ情報に付加して前記I/Oカード共有部へ送信し、前記I/Oカードからサーバへの応答と前記メモリ空間を指定するベースアドレスとを含んだ応答信号を、当該応答信号のヘッダ情報に含まれる宛先のサーバに転送するヘッダ処理部を有し、
前記I/Oカード共有部は、
前記スイッチから受信したアクセス要求信号に含まれる指令が、予め設定した第1の指令のときには前記I/Oカード共有部のメモリに当該アクセス要求信号を書き込む要求信号書込部と、
前記スイッチから受信した前記アクセス要求信号に含まれる指令が、予め設定した第2の指令のときには前記I/Oプロセッサへ割り込みをかける割り込み発生部と、
前記I/Oカードからサーバへの応答信号を受信したときには、当該応答信号に含まれるベースアドレスから要求元の経路情報を抽出して、当該抽出した要求元の経路情報を応答信号のヘッダ情報の宛先に設定するヘッダ修正部と、
前記応答信号のベースアドレスに埋め込まれた要求元の経路情報を削除するベースアドレス修正部と、
当該応答信号を前記スイッチへ送信する送信部と、を有し、
前記I/Oプロセッサは、
前記割り込みがあったときに、前記メモリに書き込まれたアクセス要求信号に含まれるベースアドレスの所定の上位ビットに、前記アクセス要求信号のヘッダ情報から前記要求元の経路情報を設定するアドレス変換部と、
前記割り込みに基づいて前記要求元のヘッダ情報を上位ビットに設定した前記ベースアドレスを前記I/Oカードの応答先として設定する応答アドレス設定部と、
前記割り込みに基づいて前記アクセス要求信号をI/Oカードへ送信し、前記I/Oカードの動作を起動するI/Oカード起動部と、を有し、
前記I/Oカードは、前記アクセス要求信号に応じた処理の応答信号を、前記I/Oカード共有部に返信することを特徴とする計算機システム。 Multiple servers,
A switch for connecting the plurality of servers and the I / O card,
In the computer system in which the server has a memory space writable from the I / O card,
An I / O card sharing unit that is disposed between the switch and the I / O card and operates an access request signal and a response signal between the plurality of servers and the I / O card;
A memory capable of accessing the I / O card and the I / O card sharing unit and writable from the I / O card sharing unit; and a processor for accepting an interrupt from the I / O card sharing unit. An I / O processor that manages allocation of the I / O card to the plurality of servers;
With
The switch sends an access request signal including a command from the server to the I / O card and a base address designating the memory space, the destination of the access request signal and the path information of the request source in the access request signal. A response signal including a response from the I / O card to the server and a base address designating the memory space is added to the header information and transmitted to the I / O card sharing unit. A header processing unit that transfers to a destination server included in
The I / O card sharing unit
A request signal writing unit that writes the access request signal to the memory of the I / O card sharing unit when the command included in the access request signal received from the switch is a first command set in advance;
An interrupt generator that interrupts the I / O processor when the command included in the access request signal received from the switch is a second command set in advance;
When a response signal from the I / O card to the server is received, the request source route information is extracted from the base address included in the response signal, and the request source route information is extracted from the header information of the response signal. A header correction part to be set in the destination;
A base address correction unit that deletes the route information of the request source embedded in the base address of the response signal;
A transmission unit for transmitting the response signal to the switch,
The I / O processor is
An address converter configured to set the request source path information from the header information of the access request signal in a predetermined upper bit of a base address included in the access request signal written in the memory when the interrupt occurs; ,
A response address setting unit that sets the base address in which the header information of the request source is set to upper bits based on the interrupt as a response destination of the I / O card;
An I / O card activation unit that transmits the access request signal to the I / O card based on the interrupt and activates the operation of the I / O card;
The I / O card returns a response signal of processing corresponding to the access request signal to the I / O card sharing unit.
前記アクセス要求信号に含まれる指令を設定するコマンドレジスタと、
前記アクセス要求信号に対して応答するサーバのメモリ空間を指定するアドレスレジスタと、を有し、
前記要求信号書込部は、前記アクセス要求信号に含まれる指令が前記コマンドレジスタを除くI/Oカードへの書き込み処理を含む第1の指令のときに、前記スイッチから受信したアクセス要求信号を前記I/Oカード共有部のメモリに書き込み、
前記割り込み発生部は、前記スイッチから受信したアクセス要求信号に含まれる指令が前記コマンドレジスタへの書き込み処理を含む第2の指令のときに、前記I/Oプロセッサへ割り込みをかけ、
前記応答アドレス設定部は、前記割り込みに基づいて、前記要求元のヘッダ情報を上位ビットに設定した前記ベースアドレスを前記I/Oカードのアドレスレジスタに書き込むことを特徴とする請求項1に記載の計算機システム。 The I / O card is
A command register for setting a command included in the access request signal;
An address register that specifies a memory space of a server that responds to the access request signal,
The request signal writing unit receives the access request signal received from the switch when the command included in the access request signal is a first command including a write process to an I / O card excluding the command register. Write to the memory of the I / O card sharing unit,
The interrupt generation unit interrupts the I / O processor when a command included in the access request signal received from the switch is a second command including a write process to the command register,
The said response address setting part writes the said base address which set the header information of the said request origin to the high-order bit to the address register of the said I / O card based on the said interruption. Computer system.
前記割り込み発生部は、前記スイッチから受信したアクセス要求信号にコマンドレジスタへの書き込みを要求するDMA開始指令が含まれるときに、前記I/Oプロセッサへ割り込みをかけることを特徴とする請求項2に記載の計算機システム。 The request signal writing unit receives the access request signal received from the switch when the command included in the access request signal includes a DMA initialization process requesting writing to an address register. Write to the memory of
The interrupt generation unit interrupts the I / O processor when a DMA start command for requesting writing to a command register is included in an access request signal received from the switch. The computer system described.
前記各サーバが前記I/Oカードを利用可能か否かを識別し、かつ前記I/Oカードが共有されているか否かを識別する属性を予め設定したI/Oカード共有設定管理部を有し、
前記I/Oカード共有部は、
前記I/Oカード共有設定管理部を参照して、前記スイッチから受信したアクセス要求信号の宛先のI/Oカードと要求元のサーバの前記属性が利用可能かつ占有のときには、前記サーバからの要求信号をそのままI/Oカードに転送し、当該I/Oカードから前記サーバへの応答信号をそのまま転送することを特徴とする請求項1に記載の計算機システム。 The I / O processor is
There is an I / O card sharing setting management unit that identifies whether each of the servers can use the I / O card and sets an attribute that identifies whether the I / O card is shared or not. And
The I / O card sharing unit
With reference to the I / O card sharing setting management unit, when the attributes of the destination I / O card and the requesting server of the access request signal received from the switch are available and occupied, a request from the server 2. The computer system according to claim 1, wherein the signal is directly transferred to the I / O card, and the response signal from the I / O card to the server is transferred as it is.
前記各サーバが前記I/Oカードを利用可能か否かを識別し、かつ前記I/Oカードが共有されているか否かを識別する属性を予め設定したI/Oカード共有設定管理部を有し、
前記I/Oカード共有部は、
前記I/Oカード共有設定管理部を参照して、前記スイッチから受信したアクセス要求信号の宛先に設定されているI/Oカードと要求元のサーバの前記属性が利用不可のときには、前記サーバからの要求信号に対してマスタアボートまたは全ビットが1のデータの何れか一方を返信することを特徴とする請求項1に記載の計算機システム。 The I / O processor is
There is an I / O card sharing setting management unit that identifies whether each of the servers can use the I / O card and sets an attribute that identifies whether the I / O card is shared or not. And
The I / O card sharing unit
With reference to the I / O card sharing setting management unit, when the attributes of the I / O card set as the destination of the access request signal received from the switch and the requesting server are unavailable, the server 2. The computer system according to claim 1, wherein either one of master abort and data having all bits of 1 is returned in response to the request signal.
前記各サーバが前記I/Oカードを利用可能か否かを識別し、かつ前記I/Oカードが共有されているか否かを識別する属性を予め設定したI/Oカード共有設定管理部と、
前記I/Oプロセッサに接続された入力部を介して前記I/Oカード共有設定部の属性を設定する属性設定部と、
を有することを特徴とする請求項1に記載の計算機システム。 The I / O processor is
An I / O card sharing setting management unit that identifies whether each of the servers can use the I / O card and sets an attribute that identifies whether the I / O card is shared;
An attribute setting unit for setting an attribute of the I / O card sharing setting unit via an input unit connected to the I / O processor;
The computer system according to claim 1, comprising:
前記要求信号書込部または割り込み発生部で用いるアドレス情報を、前記スイッチから受信したアクセス要求信号に含まれるヘッダ情報と予め設定した情報とを比較して出力するアドレス情報判定部を有し、
当該アドレス情報判定部は、前記サーバの起動時に実行されるI/Oカードへの書き込み指令に基づいて前記情報を設定することを特徴する請求項1に記載の計算機システム。 The I / O card sharing unit
An address information determination unit that outputs the address information used in the request signal writing unit or the interrupt generation unit by comparing header information included in the access request signal received from the switch with preset information;
2. The computer system according to claim 1, wherein the address information determination unit sets the information based on a write command to the I / O card that is executed when the server is started.
前記アクセス要求信号に含まれる指令を設定するコマンドレジスタと、
前記アクセス要求信号に対して応答するサーバのメモリ空間を指定するアドレスレジスタと、
前記サーバのメモリに格納されたデータ構造体を読み込んでコマンドチェイン処理を行うコマンドチェイン処理部と、
を有し、
前記第1及び第2の指令が一つの起動要求で構成されて、当該起動要求を前記I/Oカードのコマンドレジスタに書き込むことで行われ、
前記要求信号書込部は、前記要求信号をI/Oプロセッサのメモリへ書き込み、また、前記サーバのメモリに設定されたデータ構造体をI/Oプロセッサのメモリへ書き込み、
前記I/Oカードは、当該I/Oカードの起動後に、前記I/Oプロセッサのメモリに設定されたデータ構造体を読み込んで処理を行うことを特徴とする請求項2に記載の計算機システム。 The I / O card is
A command register for setting a command included in the access request signal;
An address register that specifies a memory space of a server that responds to the access request signal;
A command chain processing unit that reads a data structure stored in the memory of the server and performs command chain processing;
Have
The first and second commands are composed of one activation request, and the activation request is written to the command register of the I / O card,
The request signal writing unit writes the request signal to the memory of the I / O processor, and writes the data structure set in the memory of the server to the memory of the I / O processor.
3. The computer system according to claim 2, wherein the I / O card reads and processes a data structure set in a memory of the I / O processor after the I / O card is activated.
該複数のサーバとI/Oカードを接続するスイッチと、を備え、
前記サーバが、前記I/Oカードから書き込み可能なメモリ空間を備えた計算機システムにおいて、
前記スイッチとI/Oカードの間に配置されて、前記複数のサーバと前記I/Oカードとの間のアクセス要求信号及び応答信号を操作するI/Oカード共有部と、
前記I/OカードとI/Oカード共有部にアクセス可能であって、前記I/Oカード共有部から書き込み可能なメモリと、前記I/Oカード共有部からの割り込みを受け付けるプロセッサとを備えて、前記複数のサーバに対する前記I/Oカードの割り当てを管理するI/Oプロセッサと、
を備え、
前記スイッチは、
前記サーバからI/Oカードへの指令と前記メモリ空間を指定するベースアドレスとを含んだアクセス要求信号に、当該アクセス要求信号の宛先と要求元の経路情報を前記アクセス要求信号のヘッダ情報に付加して前記I/Oカード共有部へ送信し、前記I/Oカードからサーバへの応答と前記メモリ空間を指定するベースアドレスとを含んだ応答信号を、当該応答信号のヘッダ情報に含まれる宛先のサーバに転送するヘッダ処理部と、前記I/Oカード共有部を有し、
前記I/Oカード共有部は、
前記ヘッダ処理部から受信したアクセス要求信号に含まれる指令が、予め設定した第1の指令のときには前記I/Oカード共有部のメモリに当該アクセス要求信号を書き込む要求信号書込部と、
前記ヘッダ処理部から受信した前記アクセス要求信号に含まれる指令が、予め設定した第2の指令のときには前記I/Oプロセッサへ割り込みをかける割り込み発生部と、
前記I/Oカードからサーバへの応答信号を受信したときには、当該応答信号に含まれるベースアドレスから要求元の経路情報を抽出して、当該抽出した要求元の経路情報を応答信号のヘッダ情報の宛先に設定するヘッダ修正部と、
前記応答信号のベースアドレスに埋め込まれた要求元の経路情報を削除するベースアドレス修正部と、
当該応答信号を前記スイッチへ送信する送信部と、を有し、
前記I/Oプロセッサは、
前記割り込みがあったときに、前記メモリに書き込まれたアクセス要求信号に含まれるベースアドレスの所定の上位ビットに、前記アクセス要求信号のヘッダ情報から前記要求元の経路情報を設定するアドレス変換部と、
前記割り込みに基づいて前記要求元のヘッダ情報を上位ビットに設定した前記ベースアドレスを前記I/Oカードの応答先として設定する応答アドレス設定部と、
前記割り込みに基づいて前記アクセス要求信号をI/Oカードへ送信し、前記I/Oカードの動作を起動するI/Oカード起動部と、を有し、
前記I/Oカードは、前記アクセス要求信号に応じた処理の応答信号を、前記I/Oカード共有部に返信することを特徴とする計算機システム。 Multiple servers,
A switch for connecting the plurality of servers and the I / O card,
In the computer system in which the server has a memory space writable from the I / O card,
An I / O card sharing unit that is disposed between the switch and the I / O card and operates an access request signal and a response signal between the plurality of servers and the I / O card;
A memory that is accessible to the I / O card and the I / O card sharing unit and is writable from the I / O card sharing unit; and a processor that receives an interrupt from the I / O card sharing unit. An I / O processor that manages allocation of the I / O card to the plurality of servers;
With
The switch is
An access request signal including a command from the server to the I / O card and a base address designating the memory space is added to the header information of the access request signal with the destination of the access request signal and the request source path information. The response signal including the response from the I / O card to the server and the base address designating the memory space is transmitted to the I / O card sharing unit, and the destination included in the header information of the response signal A header processing unit for transferring to the server, and the I / O card sharing unit,
The I / O card sharing unit
A request signal writing unit that writes the access request signal to the memory of the I / O card sharing unit when the command included in the access request signal received from the header processing unit is a first command set in advance;
An interrupt generation unit that interrupts the I / O processor when the command included in the access request signal received from the header processing unit is a second command set in advance;
When the response signal from the I / O card to the server is received, the request source route information is extracted from the base address included in the response signal, and the request source route information is extracted from the header information of the response signal. A header correction part to be set in the destination;
A base address correction unit that deletes the route information of the request source embedded in the base address of the response signal;
A transmission unit for transmitting the response signal to the switch,
The I / O processor is
An address conversion unit configured to set the request source path information from the header information of the access request signal in a predetermined upper bit of a base address included in the access request signal written in the memory when the interrupt occurs; ,
A response address setting unit that sets, as a response destination of the I / O card, the base address in which the header information of the request source is set to upper bits based on the interrupt;
An I / O card activation unit that transmits the access request signal to the I / O card based on the interrupt and activates the operation of the I / O card;
The I / O card returns a response signal of processing corresponding to the access request signal to the I / O card sharing unit.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005340088A JP4660362B2 (en) | 2005-11-25 | 2005-11-25 | Computer system |
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 |
---|---|---|---|
JP2005340088A JP4660362B2 (en) | 2005-11-25 | 2005-11-25 | Computer system |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2007148621A true JP2007148621A (en) | 2007-06-14 |
JP4660362B2 JP4660362B2 (en) | 2011-03-30 |
Family
ID=38209990
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005340088A Expired - Fee Related JP4660362B2 (en) | 2005-11-25 | 2005-11-25 | Computer system |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4660362B2 (en) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009258798A (en) * | 2008-04-11 | 2009-11-05 | Nec Corp | Virtual machine system, host computer, i/o card, virtual machine construction method, and program |
JP2010237839A (en) * | 2009-03-30 | 2010-10-21 | Nec Corp | Pci-express communication system and pci-express communication method |
JP2011164838A (en) * | 2010-02-08 | 2011-08-25 | Nec Corp | Endpoint sharing system and data transfer method |
US8683110B2 (en) | 2007-08-23 | 2014-03-25 | Nec Corporation | I/O system and I/O control method |
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 |
JP2021026767A (en) * | 2019-07-31 | 2021-02-22 | ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド | Data memory access method, apparatus, electronic device and computer-readable storage medium |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004054949A (en) * | 2002-07-23 | 2004-02-19 | Hewlett-Packard Development Co Lp | Multiple hardware partitions under one input/output hub |
JP2005209197A (en) * | 2004-01-22 | 2005-08-04 | Internatl Business Mach Corp <Ibm> | Method and apparatus to change operating frequency of system core logic to maximize system memory bandwidth |
JP2006506736A (en) * | 2002-11-19 | 2006-02-23 | ニューイシス・インコーポレーテッド | Method and apparatus for distributing system management signals |
US20060253619A1 (en) * | 2005-04-22 | 2006-11-09 | Ola Torudbakken | Virtualization for device sharing |
JP2007502579A (en) * | 2003-08-13 | 2007-02-08 | インテル・コーポレーション | A general-purpose adaptive synchronization scheme for distributed audio and video capture on heterogeneous computing platforms |
JP2007507045A (en) * | 2003-09-25 | 2007-03-22 | インテル コーポレイション | Configuration register access method, setting method, integrated circuit parts, computer system, product |
-
2005
- 2005-11-25 JP JP2005340088A patent/JP4660362B2/en not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004054949A (en) * | 2002-07-23 | 2004-02-19 | Hewlett-Packard Development Co Lp | Multiple hardware partitions under one input/output hub |
JP2006506736A (en) * | 2002-11-19 | 2006-02-23 | ニューイシス・インコーポレーテッド | Method and apparatus for distributing system management signals |
JP2007502579A (en) * | 2003-08-13 | 2007-02-08 | インテル・コーポレーション | A general-purpose adaptive synchronization scheme for distributed audio and video capture on heterogeneous computing platforms |
JP2007507045A (en) * | 2003-09-25 | 2007-03-22 | インテル コーポレイション | Configuration register access method, setting method, integrated circuit parts, computer system, product |
JP2005209197A (en) * | 2004-01-22 | 2005-08-04 | Internatl Business Mach Corp <Ibm> | Method and apparatus to change operating frequency of system core logic to maximize system memory bandwidth |
US20060253619A1 (en) * | 2005-04-22 | 2006-11-09 | Ola Torudbakken | Virtualization for device sharing |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8683110B2 (en) | 2007-08-23 | 2014-03-25 | Nec Corporation | I/O system and I/O control method |
JP2009258798A (en) * | 2008-04-11 | 2009-11-05 | Nec Corp | Virtual machine system, host computer, i/o card, virtual machine construction method, and program |
JP2010237839A (en) * | 2009-03-30 | 2010-10-21 | Nec Corp | Pci-express communication system and pci-express communication method |
US8489795B2 (en) | 2009-03-30 | 2013-07-16 | Nec Corporation | PCI-Express communication system and PCI-Express communication method |
JP2011164838A (en) * | 2010-02-08 | 2011-08-25 | Nec Corp | Endpoint sharing system and data transfer method |
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 |
JP2021026767A (en) * | 2019-07-31 | 2021-02-22 | ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド | Data memory access method, apparatus, electronic device and computer-readable storage medium |
US11169718B2 (en) | 2019-07-31 | 2021-11-09 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Data access method and apparatus |
Also Published As
Publication number | Publication date |
---|---|
JP4660362B2 (en) | 2011-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7890669B2 (en) | Computer system for sharing I/O device | |
US9824050B2 (en) | Shared PCIe end point system including a PCIe switch and method for initializing the switch | |
US8918568B2 (en) | PCI express SR-IOV/MR-IOV virtual function clusters | |
JP4681505B2 (en) | Computer system, management computer, and program distribution method | |
JP4295783B2 (en) | Computer and virtual device control method | |
US9875208B2 (en) | Method to use PCIe device resources by using unmodified PCIe device drivers on CPUs in a PCIe fabric with commodity PCI switches | |
US7571273B2 (en) | Bus/device/function translation within and routing of communications packets in a PCI switched-fabric in a multi-host environment utilizing multiple root switches | |
US10114764B2 (en) | Multi-level paging and address translation in a network environment | |
US20070136458A1 (en) | Creation and management of ATPT in switches of multi-host PCI topologies | |
US20080137676A1 (en) | Bus/device/function translation within and routing of communications packets in a pci switched-fabric in a multi-host environment environment utilizing a root switch | |
JP2013077076A (en) | Calculator device for controlling virtual calculator and method for controlling virtual calculator | |
JP4660362B2 (en) | Computer system | |
US20060143311A1 (en) | Direct memory access (DMA) address translation between peer-to-peer input/output (I/O) devices | |
US11995019B2 (en) | PCIe device with changeable function types and operating method thereof | |
US11928070B2 (en) | PCIe device | |
KR102568909B1 (en) | PCIe FUNCTION AND OPERATING METHOD THEREOF | |
JP2009193590A (en) | Dma windowing in lpar environment using device arbitration level to allow multiple ioas per terminal bridge | |
JP2008021252A (en) | Computer system and address allocating method | |
CN114175005A (en) | Programmable network interface device including a host computing device and a network interface device | |
US20090037609A1 (en) | Middle management of input/output in server systems | |
JP2010218449A (en) | Resource allocation system and resource allocation method | |
US20090037617A1 (en) | Middle management of input/output in server systems | |
US20230318606A1 (en) | Interface device and method of operating the same | |
JP2013182461A (en) | Information processing apparatus, resource control method in the same, and computer program | |
CN117280331A (en) | Techniques for handling request transmissions from peripheral devices in a communication network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080919 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20101207 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20101228 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140107 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |