JP2012113604A - Computer system, method, and i/o switch - Google Patents

Computer system, method, and i/o switch Download PDF

Info

Publication number
JP2012113604A
JP2012113604A JP2010263440A JP2010263440A JP2012113604A JP 2012113604 A JP2012113604 A JP 2012113604A JP 2010263440 A JP2010263440 A JP 2010263440A JP 2010263440 A JP2010263440 A JP 2010263440A JP 2012113604 A JP2012113604 A JP 2012113604A
Authority
JP
Japan
Prior art keywords
server
destination
switch
data
interface
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2010263440A
Other languages
Japanese (ja)
Inventor
Chihiro Yoshimura
地尋 吉村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2010263440A priority Critical patent/JP2012113604A/en
Publication of JP2012113604A publication Critical patent/JP2012113604A/en
Pending legal-status Critical Current

Links

Images

Abstract

PROBLEM TO BE SOLVED: To reduce congestion in an I/O interface and interconnect in a server by distributing data transmission between the server and an I/O device to multiple I/O interfaces which the server has.SOLUTION: When CPUs 102A-D in a server 100 issue a load instruction or a store instruction for I/O devices 120A-D, a computer system adds a different offset value for each CPU to a destination address of a packet or a transaction occurring due to the load instruction or the store instruction. Also, an I/O switch having a switch exchange part subtracts a different offset value for each I/O interface from a destination address or a destination ID of a packet or a transaction issued by the server.

Description

本発明は、複数のプロセッサと複数のI/Oインタフェースを備えたサーバ、或いは計算機システムに関し、特にI/Oインタフェースのデータ転送負荷の分散技術に関する。   The present invention relates to a server or computer system having a plurality of processors and a plurality of I / O interfaces, and more particularly to a technique for distributing a data transfer load of an I / O interface.

近年、計算機システムの構成の柔軟性を高めるために、サーバとI/O(Input/Output)デバイスの間にI/Oスイッチを介在させる構成が用いられている。これにより、サーバとI/Oデバイスの間の接続をI/Oスイッチの設定を変更するのみで切替えることができ、構成変更を迅速かつ柔軟に行うことが出来る。ひいては、計算機システム上で動作するジョブの負荷変動に対してI/Oを増強する、I/Oデバイスの障害発生時に切替えを実現する、等の計算機システム運用上の利便性を得ることが出来る。   In recent years, a configuration in which an I / O switch is interposed between a server and an I / O (Input / Output) device has been used in order to increase the flexibility of the configuration of a computer system. As a result, the connection between the server and the I / O device can be switched only by changing the setting of the I / O switch, and the configuration can be changed quickly and flexibly. As a result, it is possible to obtain convenience in the operation of the computer system, such as increasing I / O against fluctuations in the load of jobs operating on the computer system, and realizing switching when a failure occurs in an I / O device.

通常、サーバは、プロセッサ(CPU、Central Processing Unit)、主記憶装置(メモリ)、及び、I/Oデバイスを接続するためのI/Oインタフェースを提供するI/Oハブ(IOH、Input/Output Hub)から構成される。   Normally, a server is an I / O hub (IOH, Input / Output Hub) that provides an I / O interface for connecting a processor (CPU, Central Processing Unit), a main storage (memory), and an I / O device. ).

I/Oインタフェースに関する技術は、種々の業界標準技術を含め、非特許文献1、2、3や、特許文献1などに開示されており、例えば、PCI−SIG(Peripheral Component Interconect−Special Interest Group)のPCI Expressのような、業界標準規格で定められたインタフェースが用いられている(非特許文献1)。そして、近年市販されている装置では、IOHは1本、ないしは、複数本のPCI Expressを提供している。   Technologies related to the I / O interface are disclosed in Non-Patent Documents 1, 2, 3, and Patent Document 1 including various industry standard technologies. For example, PCI-SIG (Peripheral Component Interconnect-Special Interest Group). An interface defined by an industry standard such as PCI Express is used (Non-Patent Document 1). In recent years, commercially available apparatuses provide one or a plurality of PCI Express IOHs.

I/Oデバイスは、例えばサーバをEthernet(登録商標)に接続するためのネットワークインタフェースカード(NIC、Network Interface Card)が代表例である。NICを始めとするI/Oデバイスは前述したI/Oインタフェースを介してサーバと接続される。現在標準的に用いられているのは、1Gbit Ethernetや10Gbit EthernetのNICで、サーバとの間はPCI Expressで接続するものが多い。   A typical example of the I / O device is, for example, a network interface card (NIC, Network Interface Card) for connecting a server to Ethernet (registered trademark). An I / O device such as a NIC is connected to a server via the I / O interface described above. Currently, 1 Gbit Ethernet and 10 Gbit Ethernet NICs are used as standard, and many servers are connected to the server by PCI Express.

特開2010−79816号公報JP 2010-79816 A

PCI Express Base Specification Revision 2.0、 PCI−SIG、 December 20、 2006.PCI Express Base Specification Revision 2.0, PCI-SIG, December 20, 2006. Multi−Root I/O Virtualization and Sharing Specification Revision 1.0、 PCI−SIG、 May 12、 2008.Multi-Root I / O Virtualization and Sharing Specification Revision 1.0, PCI-SIG, May 12, 2008. Multi-Root I / O Virtualization and Sharing Specification Revision 1.0. Single Root I/O Virtualization and Sharing Specification Revision 1.0、 PCI−SIG、 September 11、 2007.Single Root I / O Virtualization and Sharing Specification Revision 1.0, PCI-SIG, September 11, 2007.

現在サーバで普及している、上述のPCI Expressに注目して検討すると、PCI Expressではツリー状のトポロジーを採用していることにより、I/Oスイッチを導入しても構成に制約を受けることが有り、それに対する発明が従来なされてきている。   Considering the above-mentioned PCI Express, which is now widely used in servers, PCI Express adopts a tree-like topology, so that even if an I / O switch is introduced, the configuration is restricted. Yes, the invention for this has been made.

例えば、単一のI/Oデバイスを複数のサーバから共有することは非特許文献1で示されているPCI Expressの規格では不可能である。PCI Expressで接続されるI/Oデバイスはツリー状のトポロジーではリーフ(末端)に当たるが、リーフからツリーを辿って到達できるのは単一のルート(サーバ)のみである。単一のI/Oデバイス(リーフ)から複数のサーバ(ルート)に到達することはできないという制約がある。   For example, sharing a single I / O device from a plurality of servers is impossible with the PCI Express standard disclosed in Non-Patent Document 1. An I / O device connected by PCI Express corresponds to a leaf (terminal) in a tree topology, but only a single route (server) can be reached from the leaf by following the tree. There is a restriction that a plurality of servers (root) cannot be reached from a single I / O device (leaf).

これに対して、例えば非特許文献2で示すMR−IOV(Multi Root I/O Virtualization and Sharing)と呼ばれる、PCI Expressの拡張規格がある。このMR−IOVを実現するためには、I/Oデバイス、I/Oスイッチ、及び、サーバ上で動作するオペレーティングシステム等のシステムソフトウェアに対して新規な機構を必要とする。これにより、複数のサーバで単一のデバイスを共有することが実現されたが、MR−IOVに対応したデバイス(MR−IOVデバイス)を新規に開発する必要がある。   On the other hand, there is a PCI Express extended standard called MR-IOV (Multi Root I / O Virtualization and Sharing) shown in Non-Patent Document 2, for example. In order to realize this MR-IOV, a new mechanism is required for system software such as an I / O device, an I / O switch, and an operating system operating on a server. As a result, a single device is shared by a plurality of servers, but it is necessary to newly develop a device (MR-IOV device) corresponding to MR-IOV.

そこで、特許文献1に示される技術では、非特許文献3で示されるSR−IOV(Single Root I/O Virtualization and Sharing)と呼ばれる、PCI Expressの拡張規格に準拠したデバイス(SR−IOVデバイス)を、複数のサーバで共有する技術を開示している。SR−IOVは単一のサーバ上で動作する複数の仮想マシン間で単一のI/Oデバイスを共有するための技術で、MR−IOVデバイスと比較してSR−IOVデバイスは多く市場に流通している。   Therefore, in the technology disclosed in Patent Document 1, a device (SR-IOV device) compliant with the PCI Express extended standard called SR-IOV (Single Root I / O Virtualization and Sharing) shown in Non-Patent Document 3 is used. Discloses a technique shared by a plurality of servers. SR-IOV is a technology for sharing a single I / O device among multiple virtual machines running on a single server. Compared with MR-IOV devices, SR-IOV devices are more widely distributed in the market. is doing.

しかし、SR−IOVデバイスではMR−IOVデバイスのように複数のサーバから共有されることはできない。そこで、特許文献1ではI/Oスイッチ内にアドレス変換等の機構を有することで、単一のSR−IOVデバイスを複数のサーバから共有することを実現している。   However, SR-IOV devices cannot be shared from a plurality of servers like MR-IOV devices. Thus, in Patent Document 1, a single SR-IOV device is shared from a plurality of servers by having a mechanism such as address translation in the I / O switch.

また、計算機システムの処理能力を高めるために、SMP(Symmetric Multiple Processor)サーバの利用が広まっている。SMPサーバは複数のCPUを有しており、複数のCPUで単一の主記憶空間を共有することを特徴としたサーバであり、各々のCPU上で個別のオペレーティングシステム等のシステムソフトウェアを動作させるのではなく、SMPサーバを構成する複数のCPUに跨って単一のオペレーティングシステムを動作させて用いる。   In addition, the use of SMP (Symmetric Multiple Processor) servers has become widespread in order to increase the processing capacity of computer systems. The SMP server has a plurality of CPUs, and a plurality of CPUs share a single main storage space, and operates system software such as an individual operating system on each CPU. Instead, a single operating system is operated and used across a plurality of CPUs constituting the SMP server.

SMPサーバでは、複数のCPUを有して処理性能を上げていることから、I/O性能もそれに見合うように高める必要があり、IOHを複数有し、複数のCPUと複数のIOHの間を接続するバスを、高速シリアル伝送によるポイントツーポイント接続にしている場合が多い。   Since the SMP server has multiple CPUs to improve processing performance, it is necessary to increase the I / O performance to match that, and there are multiple IOHs between the multiple CPUs and multiple IOHs. The bus to be connected is often point-to-point connection by high-speed serial transmission.

すなわち、複数のCPUを有し、複数のIOHから複数のI/Oインタフェースが提供されているSMPサーバにおいて、あるCPUから見た時に、当該CPUに直に接続されているIOHから提供されているI/Oインタフェース(近いI/Oインタフェース)と、他のCPUを経由して接続されているIOHから提供されるI/Oインタフェース(遠いI/Oインタフェース)の2種類にI/Oインタフェースが分類できることになる。   In other words, in an SMP server that has a plurality of CPUs and is provided with a plurality of I / O interfaces from a plurality of IOHs, it is provided from an IOH that is directly connected to the CPU when viewed from a certain CPU. I / O interfaces are classified into two types: I / O interfaces (close I / O interfaces) and I / O interfaces (distant I / O interfaces) provided by IOH connected via other CPUs It will be possible.

SMPサーバ上では、オペレーティングシステム及びその他のシステムソフトウェアや、アプリケーションソフトウェアを構成する複数のスレッドが複数のCPU上で分散して動作している。すなわち、スレッド毎に近いI/Oインタフェースと遠いI/Oインタフェースが異なる。このような事象は、SMPサーバを構成する方式の一つであるNUMA(Non Uniform Memory Architecture)でもメモリとCPU間での近い、遠いが発生しているが、I/Oインタフェースに関しても同様の特性が生じている。   On the SMP server, an operating system, other system software, and a plurality of threads constituting application software operate in a distributed manner on a plurality of CPUs. That is, the near I / O interface and the far I / O interface are different for each thread. Such an event occurs near and far between the memory and the CPU even in NUMA (Non Uniform Memory Architecture), which is one of the methods for configuring the SMP server, but the I / O interface has similar characteristics. Has occurred.

特許文献1の発明では、単一のI/Oデバイスを複数のサーバで共有することを実現していた。しかし、個々のサーバはいずれもツリー状のトポロジーのルートであるため、サーバとI/Oデバイス間の経路は一経路しか存在しないことになる。すなわち、あるサーバが複数本のI/Oインタフェースを有していたとしても、ある特定のI/Oデバイスとの間でデータ転送をする際には、1本のI/Oインタフェースしか使われない。   In the invention of Patent Document 1, a single I / O device is shared by a plurality of servers. However, since each individual server is a root of a tree-like topology, there is only one path between the server and the I / O device. In other words, even if a server has multiple I / O interfaces, only one I / O interface is used when transferring data to or from a specific I / O device. .

しかし、上述のSMPサーバでは、複数のI/Oインタフェースを持つため、特許文献1に記載のような動作では、SMPサーバが有するI/O性能を活かすことができない。具体的には、SMPサーバとI/OデバイスをI/Oスイッチを介して接続する時に、SMPサーバが複数のI/Oインタフェースを介してI/Oスイッチと接続されているにもかかわらず、前述したツリー状のトポロジーにより経路を決定するため、ある特定のI/Oデバイスに対してアクセスする際には、常に同じI/Oインタフェースが用いられてしまうという問題が発生する。   However, since the above-mentioned SMP server has a plurality of I / O interfaces, the operation described in Patent Document 1 cannot make use of the I / O performance of the SMP server. Specifically, when an SMP server and an I / O device are connected via an I / O switch, the SMP server is connected to the I / O switch via a plurality of I / O interfaces. Since the path is determined based on the tree-like topology described above, there is a problem that the same I / O interface is always used when accessing a specific I / O device.

これにより、特定のI/Oインタフェースの混雑が発生しやすくなってしまう。また、SMPサーバ内部で特定のI/Oインタフェースから転送を行うために、CPU間を接続する内部インターコネクトの混雑が著しくなるという問題も生じる。特に内部インターコネクトは、I/Oのみならずキャッシュコヒーレンス等種々の処理を担っているため、内部インターコネクトの混雑はSMPサーバ全体の性能を著しく低下させる要因となる。   As a result, congestion of a specific I / O interface is likely to occur. Further, since transfer is performed from a specific I / O interface inside the SMP server, there is a problem that congestion of internal interconnects connecting between CPUs becomes significant. In particular, since the internal interconnect is responsible for various processes such as cache coherence as well as I / O, congestion of the internal interconnect is a factor that significantly reduces the performance of the entire SMP server.

そこで、PCI Expressのようなツリー状のトポロジーによるI/Oインタフェースを用いながらも、複数のI/Oインタフェースを有するSMPサーバにおいて、I/Oの負担を各I/Oインタフェースに分散させることが課題となっている。   Therefore, while using an I / O interface with a tree-like topology such as PCI Express, it is an issue to distribute the I / O load to each I / O interface in an SMP server having a plurality of I / O interfaces. It has become.

本発明は、上記したサーバ等のI/Oインタフェース技術に存在する課題を解決する計算機システム、方法、及びI/Oスイッチを提供することを目的とする。   An object of the present invention is to provide a computer system, a method, and an I / O switch for solving the problems existing in the I / O interface technology such as the server described above.

上記の目的を達成するため、本発明においては、計算機システムであって、複数のI/Oインタフェースと、記憶空間を共有する複数の処理部を有するサーバと、サーバが利用するI/Oデバイスと、サーバのI/Oインタフェースと、I/Oデバイスを接続するI/Oスイッチとを備え、処理部は、処理部がI/Oデバイスに対する命令を発行したときに、処理部毎に異なるオフセット値を、命令に基づき発生するデータの宛先データに加算するアドレス変換機構を有し、I/Oスイッチは、サーバが発行した宛先データから、対応するオフセット値を減算するオフセット減算部を有する構成の計算機システムを提供する。   In order to achieve the above object, according to the present invention, a computer system includes a plurality of I / O interfaces, a server having a plurality of processing units sharing a storage space, and an I / O device used by the server. And an I / O interface of the server and an I / O switch for connecting the I / O device. When the processing unit issues a command for the I / O device, the processing unit has an offset value that is different for each processing unit. Is added to the destination data of the data generated based on the command, and the I / O switch has a configuration having an offset subtracting unit that subtracts the corresponding offset value from the destination data issued by the server Provide a system.

また、上記の目的を達成するため、本発明においては、複数のI/Oインタフェースと記憶空間を共有する複数の処理部を有するサーバが利用するI/Oデバイスと、I/Oインタフェースを接続するI/Oスイッチを備える計算機システムのデータ転送方法であって、処理部は、I/Oデバイスに対する命令を発行したときに、命令に基づき発生するデータの宛先データに、処理部毎に異なるオフセット値を与え、I/Oスイッチは、サーバが発行した宛先データから、対応するオフセット値を除いた後、I/Oデバイスに前記データを転送するデータ転送方法を提供する。   In order to achieve the above object, in the present invention, an I / O interface used by a server having a plurality of processing units sharing a storage space with a plurality of I / O interfaces is connected to the I / O interface. A data transfer method for a computer system having an I / O switch, wherein when a command is issued to an I / O device, a processing unit adds an offset value that differs for each processing unit to destination data of data generated based on the command The I / O switch provides a data transfer method for transferring the data to the I / O device after removing the corresponding offset value from the destination data issued by the server.

更に、上記の目的を達成するため、本発明においては、記憶空間を共有する複数の処理部を備えるサーバの複数のI/Oインタフェースと、I/Oデバイスとを接続するI/Oスイッチであって、サーバが発行したデータの宛先データから、I/Oインタフェース毎に異なるオフセット値を減算するオフセット減算部と、オフセット減算部の出力に接続されるスイッチ交換部と、オフセット減算部とスイッチ交換部を制御するI/Oコントローラを備える構成のI/Oスイッチを提供する。   Furthermore, in order to achieve the above object, the present invention is an I / O switch for connecting a plurality of I / O interfaces of a server having a plurality of processing units sharing a storage space and an I / O device. An offset subtracting unit that subtracts a different offset value for each I / O interface from destination data issued by the server, a switch exchanging unit connected to the output of the offset subtracting unit, an offset subtracting unit, and a switch exchanging unit An I / O switch having an I / O controller for controlling the I / O controller is provided.

すなわち、上記の課題を解決するために、本発明の好適な態様においては、複数のI/Oインタフェース、及び複数のCPUを有するサーバと、サーバが利用する少なくとも1個以上のI/Oデバイスと、サーバとI/Oデバイス間を接続するI/Oスイッチとを備える計算機システムであって、サーバの複数CPUは単一の主記憶空間を共有するものであり、サーバとI/Oスイッチは複数のI/Oインタフェースで接続されており、サーバはアドレス変換手段を有しており、アドレス変換手段は、CPUがI/Oデバイスに対するロード命令ないしはストア命令を発行したときに、CPU毎に異なるオフセット値をロード命令ないしはストア命令などの命令に起因して発生するパケットないしはトランザクションの宛先アドレスに加算するものであり、I/Oスイッチは、サーバが発行したパケットないしはトランザクションの宛先アドレス、ないしは宛先識別子(Identifier:ID)から、I/Oインタフェース毎に対応するオフセット値を減算するオフセット減算部と、オフセット値を記憶するオフセット情報記憶部を有する構成の計算機システムを提供する。   That is, in order to solve the above problems, in a preferred aspect of the present invention, a server having a plurality of I / O interfaces and a plurality of CPUs, and at least one or more I / O devices used by the server, A computer system comprising an I / O switch for connecting between a server and an I / O device, wherein a plurality of CPUs of the server share a single main storage space, and a plurality of servers and I / O switches are provided. The server has an address conversion unit, and the address conversion unit has an offset different for each CPU when the CPU issues a load instruction or a store instruction to the I / O device. The value is added to the destination address of a packet or transaction generated due to an instruction such as a load instruction or a store instruction. The I / O switch includes an offset subtracting unit that subtracts an offset value corresponding to each I / O interface from a destination address of a packet or transaction issued by a server, or a destination identifier (Identifier: ID), and an offset. A computer system having an offset information storage unit for storing a value is provided.

本発明は、複数のI/Oインタフェースを有するサーバ等を用いる計算機システムにおいて、I/Oインタフェース、及び、サーバ内部で用いられている内部インターコネクトの混雑を緩和し、システム全体の性能を向上させる効果を有する。   The present invention reduces the congestion of I / O interfaces and internal interconnects used inside the server in a computer system using a server having a plurality of I / O interfaces, and improves the performance of the entire system. Have

第1の実施例に係る計算機システムの全体構成の一例を示すブロック図である。It is a block diagram which shows an example of the whole structure of the computer system which concerns on a 1st Example. 第1の実施例に係る計算機システムのI/Oスイッチにおけるオフセット減算部の構成の一例を示すブロック図である。It is a block diagram which shows an example of a structure of the offset subtraction part in the I / O switch of the computer system concerning a 1st Example. 第1の実施例に係る計算機システムのI/Oスイッチにおける宛先ポート検索部の構成の一例を示すブロック図である。It is a block diagram which shows an example of a structure of the destination port search part in the I / O switch of the computer system concerning a 1st Example. 第1の実施例に係る計算機システムのI/Oコントローラが有するオフセット情報の構成の一例を示す概念図である。It is a conceptual diagram which shows an example of a structure of the offset information which the I / O controller of the computer system concerning a 1st Example has. 第1の実施例に係る計算機システムのI/Oコントローラが有する宛先ポートテーブルの構成の一例を示す概念図である。It is a conceptual diagram which shows an example of a structure of the destination port table which the I / O controller of the computer system concerning a 1st Example has. 第1の実施例に係る計算機システムの主記憶空間の一例を示すメモリマップである。It is a memory map which shows an example of the main storage space of the computer system which concerns on a 1st Example. 第1の実施例に係る計算機システムの主記憶空間のうちECAM空間の一例を示すメモリマップである。It is a memory map which shows an example of ECAM space among the main memory spaces of the computer system which concerns on a 1st Example. 第1の実施例に係る計算機システムの初期化シーケンスの一例を示すフローチャートである。It is a flowchart which shows an example of the initialization sequence of the computer system which concerns on a 1st Example. 第1の実施例に係る計算機システムのバスツリーの一例を示す概念図である。It is a conceptual diagram which shows an example of the bus tree of the computer system which concerns on a 1st Example. 第1の実施例に係る計算機システム上でデータが転送される経路を示す概念図である。It is a conceptual diagram which shows the path | route by which data is transferred on the computer system which concerns on a 1st Example. 第1の実施例に係る計算機システム上でデータが転送される経路を示す概念図である。It is a conceptual diagram which shows the path | route by which data is transferred on the computer system which concerns on a 1st Example. 第1の実施例に係る計算機システム上でデータが転送される経路を示す概念図である。It is a conceptual diagram which shows the path | route by which data is transferred on the computer system which concerns on a 1st Example. 第1の実施例に係る計算機システム上でデータが転送される経路を示す概念図である。It is a conceptual diagram which shows the path | route by which data is transferred on the computer system which concerns on a 1st Example. 第1の実施例に係る計算機システムの主記憶空間全体の一例を示すメモリマップである。It is a memory map which shows an example of the whole main storage space of the computer system concerning a 1st Example. 第1の実施例に係る計算機システム上でデータが転送される経路を示す概念図である。It is a conceptual diagram which shows the path | route by which data is transferred on the computer system which concerns on a 1st Example.

以下、本発明の一実施形態を添付図面に基づいて説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、同一の符号の繰り返しの説明は省略する。なお、本明細書において、サーバとは、処理部であるプロセッサ(CPU、Central Processing Unit)、記憶部であるメモリ、及び、インタフェース部であるI/Oハブ(IOH)などから構成される計算機である。また、本明細書において、各システムの要素となる機能ブロックを、「機構」、「手段」、或いは「部」と表現する場合がある。例えば、アドレス変換機能を、「アドレス変換機構」、「アドレス変換部」、或いは「アドレス変換手段」と呼ぶ。このアドレス変換機構として、本明細書における計算機システムでは、オペレーティングシステムが用いる第1のアドレス変換機構とハイパーバイザ及びその他のシステムソフトウェアが用いる第2のアドレス変換機構がある。更に、CPUやI/Oデバイスが発するパケットないしはトランザクションをデータと、パケットないしはトランザクションの宛先アドレスを宛先アドレスや宛先IDを宛先データと呼ぶ。   Hereinafter, an embodiment of the present invention will be described with reference to the accompanying drawings. Note that components having the same function are denoted by the same reference symbols throughout the drawings for describing the embodiment, and the repetitive description of the same symbols will be omitted. In this specification, a server is a computer that includes a processor (CPU, Central Processing Unit) that is a processing unit, a memory that is a storage unit, and an I / O hub (IOH) that is an interface unit. is there. Further, in this specification, functional blocks that are elements of each system may be expressed as “mechanism”, “means”, or “part”. For example, the address conversion function is referred to as “address conversion mechanism”, “address conversion unit”, or “address conversion means”. As this address translation mechanism, the computer system in this specification includes a first address translation mechanism used by the operating system and a second address translation mechanism used by the hypervisor and other system software. Furthermore, a packet or transaction issued by the CPU or I / O device is called data, and a destination address of the packet or transaction is called a destination address or destination ID.

図1は、第1の実施例に係る計算機システムの全体構成を示す図である。図1に示す計算機システムは、SMPサーバ100、I/Oスイッチ110、I/Oデバイス120A〜D、管理サーバ130から構成されている。なお、I/Oスイッチ110は、I/Oドロワの形に形成されても良いし、集積回路(Integrated Circuit:IC)の形で構成しても良い。   FIG. 1 is a diagram illustrating an overall configuration of a computer system according to the first embodiment. The computer system shown in FIG. 1 includes an SMP server 100, an I / O switch 110, I / O devices 120A to 120D, and a management server 130. The I / O switch 110 may be formed in the form of an I / O drawer or may be configured in the form of an integrated circuit (IC).

SMPサーバ100内の構成は種々の態様が考えられるが、本実施例では近年広く利用されているブレードサーバにおいてSMPサーバを実現する技術であるブレード間SMPを適用したSMPサーバを例示する。ブレード間SMPはブレードサーバのブレード101A〜D(なお、それぞれのブレードには#0〜#3の番号を付与している。例えば、ブレード101Aはブレード#0である。)の間を内部インターコネクト109で接続することで、複数のブレード101A〜Dを1台のSMPサーバ100として利用する技術である。内部インターコネクト109としては、例えばIntel社のQuickPath Interconnectや、HyperTransportが利用される。   Various configurations are conceivable in the SMP server 100. In this embodiment, an SMP server to which an inter-blade SMP, which is a technology for realizing an SMP server in blade servers widely used in recent years, is applied is illustrated. The inter-blade SMP includes blades 101A to 101D of blade servers (numbers # 0 to # 3 are assigned to the respective blades. For example, blade 101A is blade # 0). Is a technique for using a plurality of blades 101A-D as a single SMP server 100. As the internal interconnect 109, for example, QuickPath Interconnect of Hyper and HyperTransport are used.

ブレード101A〜Dは何れも同じ内部構成をとる。ブレード101A〜Dはそれぞれ、CPU102A〜D、メモリ103A〜D、内部インターコネクト104A〜D、IOH105A〜Dから構成される。   All of the blades 101A to 101D have the same internal configuration. Each of the blades 101A to 101D includes CPUs 102A to 102D, memories 103A to 103D, internal interconnects 104A to 104D, and IOH 105A to 105D.

なお、ブレード内の接続を担う内部インターコネクト104A〜Dと、ブレード間を接続する内部インターコネクト109は一般的に同種のインターコネクト技術が用いられることが多い。ブレード101A〜D各々のCPU102A〜Dは少なくとも一個のCPUで構成されている。メモリ103A〜D各々の一部は、SMPサーバ100の主記憶メモリとして利用される。   In general, the same type of interconnect technology is often used for the internal interconnects 104A to 104D that are responsible for connection within the blade and the internal interconnect 109 that connects the blades. Each of the CPUs 102A to 102D of the blades 101A to 101D is composed of at least one CPU. A part of each of the memories 103A to 103D is used as a main storage memory of the SMP server 100.

IOH105A〜DはI/Oインタフェース115A〜D(PCI Expressインタフェース)を提供する。CPU102A〜DがI/Oデバイス120A〜Dとの間でデータ転送を行うために発行したロード命令やストア命令などの命令は、IOH105A〜DがPCI Expressのパケットに変換して、I/Oインタフェース115A〜Dに出力する。また、I/Oデバイス120A〜Dから送信されたPCI Expressパケットで指示されるメモリへの書込みや、メモリからの読出しを実現するために、IOH105A〜Dはメモリ103A〜Dに直接アクセスする(Direct Memory Access:DMA)。なお、SMPサーバ100においては、単一の主記憶を共有するため、IOH105A〜Dがアクセスすることの可能なメモリは、当該IOHが存在するブレード上のメモリに限らない。例えばIOH105Aは、他のブレード上に存在するメモリ103Cにアクセスすることも可能である。この場合、内部インターコネクト104A、109、104Cを経由してアクセスすることになる。   The IOHs 105A to 105D provide I / O interfaces 115A to 115D (PCI Express interfaces). Instructions such as load instructions and store instructions issued by the CPUs 102A to 102D to transfer data to and from the I / O devices 120A to 120D are converted into PCI Express packets by the IOH 105A to D, and the I / O interface Output to 115A-D. In addition, the IOHs 105A to 105D directly access the memories 103A to 103D (Direct Memory) in order to realize writing to and reading from the memory indicated by the PCI Express packet transmitted from the I / O devices 120A to 120D. Access: DMA). Since the SMP server 100 shares a single main memory, the memory that can be accessed by the IOHs 105A to 105D is not limited to the memory on the blade in which the IOH exists. For example, the IOH 105A can access the memory 103C existing on another blade. In this case, access is made via the internal interconnects 104A, 109, and 104C.

SMPサーバ100では、ブレード101A〜Dに跨って単一のオペレーティングシステム、ハイパーバイザ、ないしは、その他のシステムソフトウェアを動作させ、その上でアプリケーションを動作させることができる。例えば、本実施例においては、SMPサーバ100上で単一のハイパーバイザを動作させ、その上で仮想マシン(Virtual Machine:VM)を動作させるものとする。そのために、メモリ103A〜D上に分散して、ハイパーバイザのバイナリと、VMイメージのバイナリが配置されている。   In the SMP server 100, a single operating system, hypervisor, or other system software can be operated across the blades 101A to 101D, and an application can be operated thereon. For example, in this embodiment, it is assumed that a single hypervisor is operated on the SMP server 100 and a virtual machine (Virtual Machine: VM) is operated thereon. For this purpose, the hypervisor binary and the VM image binary are arranged on the memories 103A to 103D.

I/Oスイッチ110は、SMPサーバ100とI/Oデバイス120A〜Dの接続関係を柔軟に切替えるためのスイッチを提供する。I/Oスイッチ110は、PCI Expressスイッチで構成されるスイッチ交換部111、I/Oコントローラ112、オフセット減算部113A〜D、宛先ポート検索部114A〜Dから構成される。   The I / O switch 110 provides a switch for flexibly switching the connection relationship between the SMP server 100 and the I / O devices 120A to 120D. The I / O switch 110 includes a switch exchanging unit 111 configured with a PCI Express switch, an I / O controller 112, offset subtracting units 113A to 113D, and destination port searching units 114A to 114D.

スイッチ交換部111はサーバを接続するポート(以降、サーバ側ポートと称する)を複数個有するスイッチである。また、デバイスを接続するポート(以降、デバイス側ポートと称する)を少なくとも1ポート以上有する。   The switch exchange unit 111 is a switch having a plurality of ports (hereinafter referred to as server-side ports) for connecting servers. In addition, it has at least one port for connecting devices (hereinafter referred to as a device-side port).

このようなスイッチとしては、例えば、非特許文献2のMR−IOV規格に準拠したスイッチがある。また、MR−IOV規格に準拠せずとも、複数のサーバ側ポートを有するスイッチであれば本実施例で利用することができる。   As such a switch, for example, there is a switch compliant with the MR-IOV standard of Non-Patent Document 2. Further, a switch having a plurality of server-side ports can be used in this embodiment without conforming to the MR-IOV standard.

I/Oコントローラ112は、I/Oスイッチ110内の構成要素、すなわちスイッチ交換部111、オフセット減算部113A〜D、宛先ポート検索部114A〜Dを制御するためのコントローラである。I/Oコントローラ112は具体的には、CPUやメモリをワンチップに集積したマイクロコントローラを利用すれば良い。I/Oコントローラ112上には、後で詳述するオフセット情報150、及び宛先ポートテーブル151が格納されている。   The I / O controller 112 is a controller for controlling the components in the I / O switch 110, that is, the switch exchange unit 111, the offset subtraction units 113A to 113D, and the destination port search units 114A to D. Specifically, the I / O controller 112 may use a microcontroller in which a CPU and a memory are integrated on a single chip. On the I / O controller 112, offset information 150 and a destination port table 151, which will be described in detail later, are stored.

管理サーバ130は、図1に示す計算機システム全体を管理するためのサーバである。管理サーバ130は、ハードウェアとしてはブレードサーバ等を用いて実現できる。また、管理に要する負荷が軽微であれば、マイクロコントローラを利用して実現することも可能である。   The management server 130 is a server for managing the entire computer system shown in FIG. The management server 130 can be realized using a blade server or the like as hardware. If the load required for management is light, it can be realized using a microcontroller.

管理サーバ130は管理ネットワーク131を経由して、SMPサーバ100及びI/Oコントローラ112と接続されている。管理サーバはSMPサーバ100上で動作するハイパーバイザ、及び、I/Oコントローラ112と通信を行い、後述する各種パラメータをハイパーバイザ、ないしは、I/Oコントローラ112に指定することができる。また、管理サーバ130はSMPサーバ100の構成情報としてブレードの枚数、メモリ容量等を取得することができる。   The management server 130 is connected to the SMP server 100 and the I / O controller 112 via the management network 131. The management server communicates with the hypervisor operating on the SMP server 100 and the I / O controller 112 and can specify various parameters to be described later to the hypervisor or the I / O controller 112. Further, the management server 130 can acquire the number of blades, the memory capacity, and the like as the configuration information of the SMP server 100.

図14に本実施例のSMPサーバ100の主記憶空間を示す。ブレード101A〜Dが有するメモリ103A〜Dは、図14に示す単一の主記憶空間にマップされる。また、CPU102A〜DがI/Oデバイス120A〜Dにアクセスする際に用いるMMIO(Memory Mapped Input/Output)空間等も配置されている。   FIG. 14 shows the main storage space of the SMP server 100 of this embodiment. The memories 103A to 103D included in the blades 101A to 101D are mapped to a single main storage space shown in FIG. In addition, a memory mapped input / output (MMIO) space used when the CPUs 102A to 102D access the I / O devices 120A to 120D are also arranged.

PCI Expressでは、I/Oデバイス120A〜Dは、図14に示す主記憶空間の任意のアドレスに対して、メモリの書込み、ないしは、メモリの読出しを要求するパケットを投げることができる。   In PCI Express, the I / O devices 120A to 120A-D can throw a packet for requesting memory writing or memory reading to an arbitrary address in the main storage space shown in FIG.

また、PCI Expressでは、I/Oデバイス120A〜Dが有するMMR(Memory Mapped Register)を主記憶空間内にマップすることができ、これをMMIO空間と称する。CPU102A〜DはMMIO空間に対してロード命令、ないしは、ストア命令を発行することで、MMRからの読出し、ないしは、MMRへの書込みを行うことができる。   In PCI Express, an MMR (Memory Mapped Register) included in the I / O devices 120A to 120D can be mapped in the main storage space, which is referred to as an MMIO space. The CPUs 102A to 102D can read from the MMR or write to the MMR by issuing a load instruction or a store instruction to the MMIO space.

PCI Expressのバストポロジーでは、Bus#(バス番号、8bit)、Dev#(デバイス番号、5bit)、Fun#(ファンクション番号、3bit)の3種の番号の組合せ(合計16bit)で、I/Oデバイスや経路を指定する。なお、Dev#とFun#に関しては、I/Oデバイス内に複数の機能を有する時の指定に用いられるものである。本実施例においては、I/Oデバイス内の動作は影響しないので、Dev#とFun#に関しては説明を割愛する。   In the PCI Express bus topology, an I / O device is a combination of three numbers (Bus # (bus number, 8 bits), Dev # (device number, 5 bits), Fun # (function number, 3 bits)) (16 bits in total). And specify the route. Note that Dev # and Fun # are used for designation when the I / O device has a plurality of functions. In the present embodiment, the operation in the I / O device has no effect, and thus description of Dev # and Fun # is omitted.

図9に、図1に示す計算機システムに対して本発明を適用せずに、PCI Express規格にのみ則って利用する場合のバスツリーを示す。図9において、SMPサーバ100から4本の線がI/Oスイッチ110に接続されているが、これは図1で示す物理的なコンポーネントとしてはI/Oインタフェース115A〜Dと対応している。また、同様にI/OスイッチからI/Oデバイスに接続する線は、それぞれ図1のI/Oインタフェース121A〜D、I/Oデバイスはそれぞれ図1のI/Oデバイス120A〜Dに対応している。   FIG. 9 shows a bus tree when the present invention is not applied to the computer system shown in FIG. 1 and the computer system is used only in conformity with the PCI Express standard. In FIG. 9, four lines from the SMP server 100 are connected to the I / O switch 110, which corresponds to the I / O interfaces 115A to 115D as physical components shown in FIG. Similarly, the lines connecting the I / O switches to the I / O devices correspond to the I / O interfaces 121A to 121D in FIG. 1, respectively, and the I / O devices correspond to the I / O devices 120A to 120D in FIG. ing.

PCI Expressではバスツリーの頂点(ルート)から、深さ優先方向にBus#を付与していく。Bus#は図9に示すようにI/Oインタフェースに対して付与されていく。途中経路では単一のBus#に複数のブリッジ(ツリーの中継点)が接続されるが、末端(リーフ)ではブリッジ1個につき1個のI/Oデバイスしかつなげることが出来ない。そのため、I/Oデバイスが直に接続されるI/OインタフェースのBus#を、当該I/Oデバイスを識別する識別子として見做すことが出来る。例えば、I/Oインタフェース121AのBus#はBus#3であるが、I/Oデバイス120Aを示す識別子としてBus#3を用いる。   In PCI Express, Bus # is assigned in the depth priority direction from the apex (root) of the bus tree. The Bus # is assigned to the I / O interface as shown in FIG. On the way, a plurality of bridges (tree relay points) are connected to a single Bus #, but at the end (leaf), one I / O device per bridge cannot be connected. Therefore, the Bus # of the I / O interface to which the I / O device is directly connected can be regarded as an identifier for identifying the I / O device. For example, the Bus # of the I / O interface 121A is Bus # 3, but Bus # 3 is used as an identifier indicating the I / O device 120A.

PCI Expressでは、CPU102A〜Dから、I/Oデバイス120A〜Dに対してパケットを発行する時、I/Oデバイス120A〜Dが有するMMRがマッピングされているMMIO空間のアドレスを宛先として指定するMMIOリクエストと、I/Oデバイス120A〜Dを示す識別子と、当該デバイス内の4KB空間(Configuration空間)のアドレスの組合せを宛先として指定するConfigurationリクエストの2種類がある。   In PCI Express, when a packet is issued from the CPU 102A to D to the I / O devices 120A to 120D, the MMIO that specifies the address of the MMIO space to which the MMR of the I / O devices 120A to 120D is mapped as a destination There are two types of configuration requests: a request, an identifier indicating the I / O devices 120A to 120D, and a configuration request that designates a combination of addresses in a 4 KB space (Configuration space) in the device as a destination.

Configurationリクエストは、Bus#(さらにI/Oデバイスが複数の機能を有する場合にはDev#、Fun#も組合せる)とConfiguration空間アドレス(12bit)の組合せで宛先を表現する。CPU102A〜DからI/Oデバイス120A〜Dまでの間は、Bus#を手掛かりにルーティングを行う。そして、I/Oデバイス120A〜Dまで到達した後は、単一の機能だけを有するデバイスの場合にはConfiguration空間アドレス、複数の機能を有するデバイスの場合にはDev#、Fun#、及び、Configuration空間アドレスの組合せで、I/Oデバイス内で最終的に到達すべき箇所が決定される。   The Configuration request expresses the destination by a combination of Bus # (further combining Dev # and Fun # if the I / O device has a plurality of functions) and Configuration space address (12 bits). Routing from the CPUs 102A to 102D to the I / O devices 120A to 120D is performed using Bus # as a clue. Then, after reaching the I / O devices 120A to 120D, a configuration space address in the case of a device having only a single function, Dev #, Fun #, and configuration in the case of a device having a plurality of functions. The location to be finally reached in the I / O device is determined by the combination of the space addresses.

Bus#を手掛かりにしたルーティングは、図9に示すような、Bus#が深さ優先で付与されたツリー状のトポロジーであれば容易に行うことが出来る。SMPサーバ100内では、宛先のBus#を見て、Bus#1〜63はI/Oインタフェース115Aに、Bus#65〜127はI/Oインタフェース115Bに、Bus#129〜191はI/Oインタフェース115Cに、Bus#193〜255はI/Oインタフェース115Dに出力する。このように、各ブリッジには、そのブリッジの配下にあるBus#の範囲が記録されており、それを手掛かりにルーティングすることができる。I/Oスイッチ110内でも同様にルーティングを行うことで、I/Oデバイス120A〜Dに到達することができる。   The routing using the Bus # as a clue can be easily performed in a tree-like topology in which the Bus # is given with depth priority as shown in FIG. In the SMP server 100, looking at the destination Bus #, Bus # 1 to 63 are the I / O interface 115A, Bus # 65 to 127 are the I / O interface 115B, and Bus # 129 to 191 are the I / O interface. In 115C, Bus # 193-255 outputs to the I / O interface 115D. In this way, the range of Bus # under the bridge is recorded in each bridge, and routing can be performed using this as a clue. By performing routing in the I / O switch 110 in the same manner, it is possible to reach the I / O devices 120A to 120D.

なお、ConfigurationリクエストとMMIOリクエストはCPU102A〜Dから見ると、いずれも主記憶空間へのロード命令、ないしは、ストア命令として発行される。主記憶空間中のMMIO空間へのロード命令、ないしは、ストア命令の発行がMMIOリクエストを発生させる。また、主記憶空間中にはConfigurationリクエストを発生させるための特別な空間(PCI Express Enhanced Configuration Access Mechanism空間、ECAM空間)が用意されており、この空間に対するロード命令、ないしは、ストア命令の発行がConfigurationリクエストを発生させる。いずれも、CPU102A〜Dから見ると、主記憶空間内のメモリへのアクセスと区別が無いことに留意されたい。   Note that the Configuration request and the MMIO request are both issued as a load instruction to the main storage space or a store instruction when viewed from the CPUs 102A to 102D. Issuing a load instruction or a store instruction to the MMIO space in the main memory space generates an MMIO request. In addition, a special space (PCI Express Enhanced Configuration Mechanism space, ECAM space) for generating a Configuration request is prepared in the main memory space, and a load instruction or a store instruction issuance for this space is issued. Generate a request. It should be noted that none of them is distinguished from access to the memory in the main storage space when viewed from the CPUs 102A to 102D.

MMIOリクエストは、主記憶空間のアドレス(近年のサーバでは64bitが多い。旧来のサーバでは32bitのものも存在する。)で宛先を指定する。Bus#を手掛かりにしたルーティングと同様に、図9に示す各ブリッジには、当該ブリッジの配下にあるアドレスの範囲が記録されており、これを手掛かりにルーティングを行っている。ルーティングの動作としてはMMIOリクエストも、Configurationリクエストも類似しているため、以降の説明ではConfigurationリクエストを事例とする。   The MMIO request designates a destination by an address of the main storage space (in recent servers, there are many 64 bits. In conventional servers, there are also 32 bits). Similar to the routing using Bus # as a clue, each bridge shown in FIG. 9 records the range of addresses under the bridge, and performs routing using this as a clue. Since the MMIO request and the configuration request are similar as routing operations, the configuration request is an example in the following description.

図10に、図9のバスツリーにおいて、SMPサーバ100からI/Oデバイス120B(Bus#4)にアクセスする際の経路を示す。この経路は、Bus#4宛のロード命令、ないしは、ストア命令がCPU102A〜D(ブレード101A〜D、ブレード番号では#0〜#3)のどこで実行されたとしても不変である。   FIG. 10 shows a path for accessing the I / O device 120B (Bus # 4) from the SMP server 100 in the bus tree of FIG. This path is unchanged regardless of where the load instruction or the store instruction addressed to Bus # 4 is executed in the CPUs 102A to 102D (blades 101A to D, blade numbers # 0 to # 3).

図10で示した経路はバスツリーという論理的なレイヤーでのものであったが、物理的な経路で表現すると、図11で示すような経路になる。図11では、CPU102A(ブレード101A、#0)からI/Oデバイス102B(Bus#4)にアクセスする経路を破線、CPU102C(ブレード101C、#2)からI/Oデバイス102B(Bus#4)にアクセスする経路を実線で示している。図9に示すバスツリーではいずれも同じ経路を通るが、図10に示す物理的な経路では、ロード命令、ないしは、ストア命令が発行されるCPUが異なるため、途中までは異なる経路を通る。   The route shown in FIG. 10 is a logical layer called a bus tree. However, when expressed by a physical route, the route is as shown in FIG. In FIG. 11, the path from the CPU 102A (blade 101A, # 0) to the I / O device 102B (Bus # 4) is indicated by a broken line, and the CPU 102C (blade 101C, # 2) to the I / O device 102B (Bus # 4). The route to be accessed is indicated by a solid line. In the bus tree shown in FIG. 9, all pass the same route. However, in the physical route shown in FIG. 10, the CPU to which the load instruction or the store instruction is issued is different, so the route is different until halfway.

図11において、CPU102CからI/Oデバイス102Bへのアクセスでは内部インターコネクト109を経由している。内部インターコネクト109は、I/Oデバイスへのアクセスの他にも、キャッシュコヒーレンス等多くのトラフィックが流れており、SMPサーバ100全体のパフォーマンスを左右するため、内部インターコネクト109のトラフィックは出来るだけ回避することが望ましい。また、CPU102Cのみならず、CPU102B、102Dも同時にI/Oデバイス120Bに対してアクセスしようとすると、内部インターコネクト109をより一層混雑させてしまう。   In FIG. 11, the CPU 102C accesses the I / O device 102B via the internal interconnect 109. In addition to access to I / O devices, the internal interconnect 109 has a lot of traffic such as cache coherence, which affects the overall performance of the SMP server 100. Therefore, avoid traffic on the internal interconnect 109 as much as possible. Is desirable. Further, if not only the CPU 102C but also the CPUs 102B and 102D try to access the I / O device 120B at the same time, the internal interconnect 109 is further congested.

この計算機システムでは、ブレード101CとI/Oスイッチ110間のI/Oインタフェース115Cも存在するので、CPU102CからI/Oデバイス102Bへのアクセスは、I/Oインタフェース115Cを経由すれば、内部インターコネクト109の混雑を回避することができる。   In this computer system, since there is also an I / O interface 115C between the blade 101C and the I / O switch 110, access from the CPU 102C to the I / O device 102B is via the internal interconnect 109 via the I / O interface 115C. Can be avoided.

しかし、図9で示したバストポロジーでI/Oインタフェース115Cを経由するようなアクセスを行うためには、I/Oデバイス102BはBus#129〜191でなければならない。例えば、I/Oデバイス102BをBus#132に置く必要が出てくる。すると、今度は、CPU102A〜DからI/Oデバイス102Bへのアクセスは全てI/Oインタフェース115Cに集中することになり、CPU102Cからのアクセスに起因する混雑は解消しても、CPU102A、B、Dからのアクセスに起因する混雑が発生することになる。   However, in order to perform access via the I / O interface 115C in the bus topology shown in FIG. 9, the I / O device 102B must be Bus # 129-191. For example, the I / O device 102B needs to be placed on the Bus # 132. In this case, all accesses from the CPUs 102A to 102D to the I / O device 102B are concentrated on the I / O interface 115C, and even if the congestion caused by the access from the CPU 102C is eliminated, the CPUs 102A, B, D Congestion due to access from the network will occur.

そこで、本実施例では、図1のオフセット演算部113A〜D、宛先ポート検索部114A〜D、I/Oコントローラ112、オフセット情報150、宛先ポートテーブル151、管理サーバ130、及び、SMPサーバ100のメモリ103A〜D上にロードされているハイパーバイザ、ないしは、その他のシステムソフトウェア、及び、EPT(Extended Page Table)、ないしは、その他のアドレス変換機構を用いて、上記の混雑を解消する手段を提供する。   Therefore, in this embodiment, the offset calculation units 113A to 113D, the destination port search units 114A to 114D, the I / O controller 112, the offset information 150, the destination port table 151, the management server 130, and the SMP server 100 in FIG. A hypervisor loaded on the memories 103A to 103D or other system software, and an EPT (Extended Page Table) or other address translation mechanism are used to provide means for solving the above congestion. .

ここで、EPT等のアドレス変換機構による通常の手法により、各ブレード101A、#0〜101D、#03各々において、所望のオフセットが設定される。このアドレス変換機構は、各ブレード101A、#0〜101D、#03のCPUがI/Oデバイスに対するロード命令ないしはストア命令などの命令を発行したときに、各ブレード101A、#0〜101D、#03各々のCPU毎に異なるオフセット値をロード命令ないしはストア命令に起因して発生するパケット、ないしはトランザクションの宛先アドレス等の宛先データに加算する。このオフセット値は、I/Oコントローラ112に予めオフセット情報150として記憶される。   Here, a desired offset is set in each of the blades 101A, # 0 to 101D, and # 03 by a normal method using an address translation mechanism such as EPT. This address translation mechanism is configured so that when the CPUs of the blades 101A, # 0 to 101D, and # 03 issue instructions such as a load instruction or a store instruction for the I / O device, the blades 101A, # 0 to 101D, and # 03 A different offset value for each CPU is added to destination data such as a packet generated due to a load instruction or a store instruction, or a destination address of a transaction. This offset value is stored in advance as offset information 150 in the I / O controller 112.

図2は、図1のI/Oスイッチ110が有するオフセット減算部113A〜Dの詳細な構成を示すブロック図である。オフセット減算部113A〜Dはサーバ側ポートに設けられる構成要素であり、サーバ側ポート1ポートに対して1個のオフセット減算部を設ける。本実施例では、サーバ側ポートはI/Oインタフェース115A〜Dの4ポートであるため、その数に合わせてオフセット減算部113A〜Dの4個を有する。   FIG. 2 is a block diagram showing a detailed configuration of the offset subtraction units 113A to 113D included in the I / O switch 110 of FIG. The offset subtracting units 113A to 113D are components provided in the server side port, and one offset subtracting unit is provided for one server side port. In this embodiment, since the server side ports are the four ports of the I / O interfaces 115A to 115D, there are four offset subtracting units 113A to 113D according to the number.

オフセット減算部113A〜Dは、I/Oインタフェース115A〜DでSMPサーバ100と接続され、I/Oインタフェース116A〜Dでスイッチ交換部111と接続される。また、I/Oコントローラが有するオフセット情報150を、信号118として受け取っている。そして、このオフセット情報150は、I/Oインタフェース115A〜Dから入力されるSMPサーバ発、I/Oデバイス宛パケットの宛先を書き換えて、I/Oインタフェース116A〜Dから出力するために利用される。   The offset subtraction units 113A to 113D are connected to the SMP server 100 via I / O interfaces 115A to 115D, and are connected to the switch exchange unit 111 via I / O interfaces 116A to 116D. Further, offset information 150 included in the I / O controller is received as a signal 118. This offset information 150 is used to rewrite the destination of the packet addressed to the I / O device from the SMP server input from the I / O interfaces 115A to 115D and output it from the I / O interfaces 116A to 116D. .

オフセット減算部113A〜Dは、I/Oインタフェース116A〜Dから入力されたI/Oデバイス発サーバ宛パケット220は素通しして、I/Oインタフェース115A〜Dから出力する。   The offset subtracting units 113A to 113D pass the I / O device originating server-addressed packet 220 input from the I / O interfaces 116A to 116D and output from the I / O interfaces 115A to 115D.

一方、I/Oインタフェース115A〜Dから入力されたサーバ発I/Oデバイス宛パケット230は、当該パケットの宛先(MMIOリクエストのパケットの場合には宛先のアドレス、Configurationリクエストのパケットの場合には宛先のBus#)を書き換えて、I/Oインタフェース116A〜Dから出力する。   On the other hand, the server-originated I / O device-addressed packet 230 input from the I / O interfaces 115A to 115D is the destination of the packet (destination address in the case of a MMIO request packet, destination in the case of a Configuration request packet). (Bus #) is rewritten and output from the I / O interfaces 116A to 116D.

サーバ発I/Oデバイス宛パケット230は、パケット解析部211で解析される。パケット230のデータペイロード等はデータ233として、そのままパケット組当部212に送られる。宛先情報232は減算器214に入力される。なお、宛先情報232は前述した通り、64bitのアドレス(MMIOリクエスト)と、8bitのBus#(Configurationリクエスト)の場合がある。パケット230がMMIOリクエストであるかConfigurationリクエストであるかはパケット解析部211が解析し、リクエスト種情報231としてセレクタ213に提供する。   The server-originated I / O device-addressed packet 230 is analyzed by the packet analysis unit 211. The data payload and the like of the packet 230 are sent as data 233 to the packet allocation unit 212 as they are. The destination information 232 is input to the subtracter 214. Note that the destination information 232 may be a 64-bit address (MMIO request) and an 8-bit Bus # (Configuration request) as described above. The packet analysis unit 211 analyzes whether the packet 230 is an MMIO request or a configuration request, and provides the request type information 231 to the selector 213.

セレクタ213は、信号118でオフセット情報150を受け取り、オフセット情報150のうち、当該オフセット減算部113A〜Dが担当しているI/Oインタフェース115A〜Dのサーバ側ポート番号に対応するエントリを選択する。さらに、リクエスト種情報231を元に、MMIOリクエストであればMMIOアドレスオフセットを選択して、オフセット値236として減算器234に入力する。   The selector 213 receives the offset information 150 by the signal 118, and selects an entry corresponding to the server side port number of the I / O interface 115A-D that the offset subtracting unit 113A-D is in charge of from the offset information 150. . Further, based on the request type information 231, if it is an MMIO request, an MMIO address offset is selected and input to the subtracter 234 as an offset value 236.

減算器234は、宛先情報232からオフセット値236を減じた結果を宛先情報234としてパケット組立部212に入力する。演算を式で示すと、(宛先情報234)=(宛先情報232)−(オフセット値236)である。   The subtractor 234 inputs the result obtained by subtracting the offset value 236 from the destination information 232 as the destination information 234 to the packet assembling unit 212. Expressing the calculation as an expression, (destination information 234) = (destination information 232) − (offset value 236).

パケット組立部212は、宛先情報234とデータ233からパケット235を組み立てて、I/Oインタフェース116A〜Dに出力する。   The packet assembling unit 212 assembles the packet 235 from the destination information 234 and the data 233 and outputs the packet 235 to the I / O interfaces 116A to 116D.

図3は、図1のI/Oスイッチ110が有する宛先ポート検索部114A〜Dの詳細な構成を示すブロック図である。宛先ポート検索部114A〜Dはデバイス側ポートに設けられる構成要素であり、デバイス側ポート1ポートに対して1個の宛先ポート検索部を設ける。本実施例では、デバイス側ポートはI/Oインタフェース121A〜Dの4ポートであるため、その数に合わせて宛先ポート検索部114A〜Dの4個を有する。   FIG. 3 is a block diagram illustrating a detailed configuration of the destination port search units 114A to 114D included in the I / O switch 110 of FIG. The destination port search units 114A to 114D are components provided in the device side port, and one destination port search unit is provided for one device side port. In this embodiment, since the device side ports are the four ports of the I / O interfaces 121A to 121D, there are four destination port search units 114A to 114D corresponding to the number of the device side ports.

宛先ポート検索部114A〜Dは、I/Oインタフェース117A〜Dから入力されたサーバ発I/Oデバイス宛パケット320は素通しして、I/Oインタフェース121A〜Dから出力する。   The destination port searching units 114A to 114D pass through the server-originated I / O device-addressed packet 320 input from the I / O interfaces 117A to 117D and output from the I / O interfaces 121A to 121D.

一方、I/Oインタフェース121A〜Dから入力されたI/Oデバイス発サーバ宛パケットは、当該パケットの宛先(I/Oデバイス発サーバ宛パケットは主記憶空間のアドレスを宛先としている)を元に、PCI Expressスイッチが当該パケットを出力すべきI/Oインタフェース116A〜Dを決定する。すなわち、I/Oデバイス発サーバ宛パケットの宛先アドレスを元に、宛先となるサーバ(ブレード)を決定する。   On the other hand, the packet addressed to the I / O device originating server input from the I / O interfaces 121A to 121D is based on the destination of the packet (the packet addressed to the I / O device originating server is addressed to the address of the main storage space). The PCI Express switch determines the I / O interfaces 116A to 116D to output the packet. In other words, the server (blade) as the destination is determined based on the destination address of the packet addressed to the I / O device originating server.

I/Oデバイス発サーバ宛パケット330は、パケット解析部311にて、宛先アドレス332を抽出する。宛先アドレス332はテーブル参照部312に入力される。一方、パケット330はそのまま改変なくパケット331として、パケット組立部313に入力される。   The packet analysis unit 311 extracts the destination address 332 of the packet 330 addressed to the I / O device originating server. The destination address 332 is input to the table reference unit 312. On the other hand, the packet 330 is directly input to the packet assembling unit 313 as a packet 331 without modification.

テーブル参照部312は、信号119で宛先ポートテーブル151を参照し、テーブル参照部312に入力されている宛先アドレス332に対応するエントリを検索する。すなわち、(ベースアドレス)≦(宛先アドレス332)<(ベースアドレス+サイズ)という条件を満たすエントリを検索し、そのエントリに対応する宛先ポート番号を、宛先ポート番号333として出力する。   The table reference unit 312 refers to the destination port table 151 using the signal 119 and searches for an entry corresponding to the destination address 332 input to the table reference unit 312. That is, an entry satisfying the condition (base address) ≦ (destination address 332) <(base address + size) is searched, and the destination port number corresponding to the entry is output as the destination port number 333.

なお、宛先アドレス332が何れのエントリにも対応しなかった場合には、デフォルトの宛先ポート番号を宛先ポート番号333として出力する。本実施例では、デフォルトの宛先ポート番号は0(I/Oインタフェース116A、すなわち、ブレード110A(#0)に対応する)とする。   When the destination address 332 does not correspond to any entry, the default destination port number is output as the destination port number 333. In this embodiment, the default destination port number is 0 (corresponding to the I / O interface 116A, that is, the blade 110A (# 0)).

パケット組当部313は、パケット331に宛先ポート番号333を付与して、パケット334としてインタフェース113A〜Dから出力する。   The packet assembling unit 313 assigns the destination port number 333 to the packet 331 and outputs the packet 334 from the interfaces 113A to 113D.

なお、宛先ポート番号はMR−IOV対応のPCI Expressスイッチを用いている場合には、MR−IOV規格で定義されているVH(Virtual Hierarchy)を用いることができる。また、パケットに宛先ポート番号(VH)を付与するための機構も、TLP PrefixとしてMR−IOV規格で定義されている。   As the destination port number, when a PCI Express switch compatible with MR-IOV is used, VH (Virtual Hierarchy) defined in the MR-IOV standard can be used. A mechanism for assigning a destination port number (VH) to a packet is also defined in the MR-IOV standard as TLP Prefix.

また、本実施例では、MR−IOV規格でなくても、独自のルーティング機構を採用しているPCI Expressスイッチを利用しても良い。その場合、当該スイッチの定めるプロトコルで宛先ポート番号を付与する。   In the present embodiment, a PCI Express switch that employs a unique routing mechanism may be used instead of the MR-IOV standard. In that case, the destination port number is given by the protocol determined by the switch.

図4に、I/Oコントローラ112に記憶される、本実施例のオフセット情報150の構成の一例を示す。同図に示すように、オフセット情報150は、MMIOアドレスオフセットテーブル410と、IDオフセットテーブル420から構成される。いずれのテーブルも、サーバ側ポートの数と同数のエントリから構成される。すなわち、本実施例の場合は4ポートであるため、MMIOアドレスオフセット4エントリと、IDオフセット4エントリの合計8エントリでオフセット情報150は構成される。   FIG. 4 shows an example of the configuration of the offset information 150 of this embodiment stored in the I / O controller 112. As shown in the figure, the offset information 150 includes an MMIO address offset table 410 and an ID offset table 420. Each table includes the same number of entries as the number of server-side ports. That is, in this embodiment, since there are 4 ports, the offset information 150 is composed of a total of 8 entries including 4 entries for MMIO address offset and 4 entries for ID offset.

MMIOアドレスオフセットは64bitのエントリで、サーバ側ポート番号に対応するポート(I/Oインタフェース115A〜D)からI/Oスイッチ110に入力された、サーバ発I/Oデバイス宛パケット(MMIOリクエスト)の宛先アドレスから減算すべきオフセット量を指示する。ハードウェアとしてはレジスタやフリップフロップとして実装される。   The MMIO address offset is a 64-bit entry, and the server-originated I / O device addressed packet (MMIO request) input to the I / O switch 110 from the port (I / O interface 115A to 115D) corresponding to the server-side port number. Indicates the offset amount to be subtracted from the destination address. As hardware, it is implemented as a register or flip-flop.

IDオフセットは8bitエントリで、MMIOアドレスオフセットと同様に、サーバ側ポート番号に対応するポート(I/Oインタフェース115A〜D)からI/Oスイッチ110に入力された、サーバ発I/Oデバイス宛パケット(Configurationリクエスト)の宛先Bus#から減算すべきオフセット量を指示する。実装形態はMMIOアドレスオフセットと同様に、レジスタやフリップフロップを用いる。   The ID offset is an 8-bit entry, and, similar to the MMIO address offset, the packet addressed to the server-originated I / O device input to the I / O switch 110 from the port (I / O interface 115A to 115D) corresponding to the server-side port number The offset amount to be subtracted from the destination Bus # of the (Configuration request) is indicated. The mounting form uses registers and flip-flops in the same manner as the MMIO address offset.

図5に図1の宛先ポートテーブル151の構成を示す。宛先ポートテーブルは(有効ビット、ベースアドレス、サイズ、宛先ポート番号)を1エントリとして、最低1エントリ以上で構成される。有効ビットが立っている(有効ビット=1)エントリのみが用いられる。   FIG. 5 shows the configuration of the destination port table 151 of FIG. The destination port table is composed of at least one entry, with (valid bit, base address, size, destination port number) as one entry. Only entries with a valid bit set (valid bit = 1) are used.

ベースアドレスは主記憶空間が64bitのSMPサーバ100の場合、64bitのベースアドレスとなる。サイズはベースアドレスを起点とした領域を示すサイズである。一般的に、主記憶空間上の領域のサイズは2の冪乗で表わされることが多いので、本実施例はサイズは2^NバイトのNを表す6bitの数値とした。この場合、2^0バイト〜2^63バイトのサイズを表現することができるため、64bitの主記憶空間で用いるのに十分な大きさである。   In the case of the SMP server 100 having a 64-bit main storage space, the base address is a 64-bit base address. The size is a size indicating an area starting from the base address. In general, since the size of the area on the main storage space is often expressed by a power of 2, in this embodiment, the size is a 6-bit numerical value representing N of 2 ^ N bytes. In this case, since a size of 2 ^ 0 bytes to 2 ^ 63 bytes can be expressed, the size is sufficient for use in a 64-bit main storage space.

宛先ポート番号は、ベースアドレスとサイズで示された領域に対するI/Oデバイス発サーバ宛パケットを出力すべきサーバ側ポートのポート番号を指定するものである。本実施例では、サーバ側ポートは4ポートであるため、宛先ポート番号は2bitあれば表現可能である。   The destination port number specifies the port number of the server side port to which the packet addressed to the I / O device originating server for the area indicated by the base address and size is to be output. In this embodiment, since the server side port is 4 ports, the destination port number can be expressed by 2 bits.

図12に、図1の計算機システムにおけるバスツリー状の経路の一例を示す。図12では、図11と同様にCPU102A(ブレード101A、#0)からI/Oデバイス102B(Bus#4)にアクセスする経路を破線、CPU102C(ブレード101C、#2)にアクセスする経路を実線で示している。   FIG. 12 shows an example of a bus tree-like route in the computer system of FIG. In FIG. 12, the path for accessing the I / O device 102B (Bus # 4) from the CPU 102A (blade 101A, # 0) from the CPU 102A (blade 101A, # 0) is indicated by a broken line, and the path for accessing the CPU 102C (blade 101C, # 2) is indicated by the solid line. Show.

破線で示されるブレード#0発Bus#4宛の経路は図11と同じである。しかし、実線で示されるブレード#2発Bus#4宛の経路は図11とは異なり、Bus#129(I/Oインタフェース115C)を経由している。図12で示す経路を、物理的な構成要素上で示したのが図13である。これを見ると、図11で問題となっていた内部インタフェース109やBus#1(I/Oインタフェース115A)の混雑を回避することができる。   The route from blade # 0 to Bus # 4 indicated by the broken line is the same as in FIG. However, the path from blade # 2 to Bus # 4 indicated by the solid line is different from that in FIG. 11 and passes through Bus # 129 (I / O interface 115C). FIG. 13 shows the paths shown in FIG. 12 on physical components. Looking at this, it is possible to avoid congestion of the internal interface 109 and Bus # 1 (I / O interface 115A), which was a problem in FIG.

図12で行われている動作を、図1に示す本実施例の構成要素の動作を用いて説明する。ブレード#0のCPU102AがBus#4宛のConfigurationリクエストを発行する時には、Bus#4に対応した主記憶空間のアドレスに対するロード命令、ストア命令を発行する。同様に、ブレード#2のCPU102Cもロード命令、ストア命令を発行する。   The operation performed in FIG. 12 will be described using the operation of the components of this embodiment shown in FIG. When the CPU 102A of blade # 0 issues a configuration request addressed to Bus # 4, it issues a load instruction and a store instruction for the address of the main storage space corresponding to Bus # 4. Similarly, the CPU 102C of blade # 2 issues a load instruction and a store instruction.

この時、本実施例では、CPU102Aのロード命令、ストア命令はそのまま発行させるが、CPU102Cのロード命令、ストア命令は、メモリ103C内のEPTを用いてアドレス変換を行うことで、Bus#4に対するConfigurationリクエストをBus#132(Bus#4+オフセット#128)に対するConfigurationリクエストに変換する。   At this time, in this embodiment, the load instruction and the store instruction of the CPU 102A are issued as they are, but the load instruction and the store instruction of the CPU 102C are configured for the Bus # 4 by performing address conversion using the EPT in the memory 103C. The request is converted into a configuration request for Bus # 132 (Bus # 4 + offset # 128).

これにより、CPU102Cのロード命令、ストア命令に起因して発行されたパケットは、Bus#132を目指してルーティングするので、途中でBus#129を通る経路でルーティングされることになる。すなわち、SMPサーバ110とI/Oスイッチ110の間では、I/Oインタフェース115C(Bus#129)を経由することになり、内部インターコネクト109、及び、I/Oインタフェース115A(Bus#1)の混雑を回避することができる。   As a result, the packet issued due to the load instruction and the store instruction of the CPU 102C is routed toward the Bus # 132, so that it is routed along the path passing through the Bus # 129. That is, the SMP server 110 and the I / O switch 110 are routed via the I / O interface 115C (Bus # 129), and the internal interconnect 109 and the I / O interface 115A (Bus # 1) are congested. Can be avoided.

次に、I/Oスイッチ110の内部では、本来Bus#4に向かわなければならない当該パケット(I/Oスイッチ110に到達した段階ではBus#132宛となっている)の宛先をBus#4に戻す。そのために、オフセット減算部113Cで、Bus#4(Bus#132−オフセット#128)に戻す処理を行う。その後、Bus#3〜Bus#6を配下に持つBus#2のブリッジにパケットをルーティングすることで、Bus#4のI/Oデバイス120Bに対してパケットを到達させることができる。このようにして、図12、及び、図13に示すようなルーティングが実現できる。   Next, inside the I / O switch 110, the destination of the packet (addressed to Bus # 132 when it reaches the I / O switch 110) that should originally go to Bus # 4 is set to Bus # 4. return. For this purpose, the offset subtraction unit 113C performs processing to return to Bus # 4 (Bus # 132−offset # 128). After that, by routing the packet to the Bus # 2 bridge having Bus # 3 to Bus # 6 under control, the packet can reach the I / O device 120B of Bus # 4. In this way, routing as shown in FIGS. 12 and 13 can be realized.

なお、MMIOリクエストの場合には、Bus#をアドレスに読み替えることで同じ処理が実現できる。また、前記したのはいずれもサーバ発I/Oデバイスのリクエストを行うパケットであったが、リクエストに対するリプライのパケットをI/Oデバイスからサーバに、リクエストの経路を逆に辿って返す必要がある。   In the case of an MMIO request, the same processing can be realized by replacing Bus # with an address. In addition, all of the above-mentioned packets are requests for a server-originated I / O device, but it is necessary to return a reply packet to the request from the I / O device to the server by tracing back the request path. .

PCI Expressでは、リクエストを行うパケットには、いずれもリクエストを発行したコンポーネントを識別するためのRID(Requester ID)が付与されている。図10、及び、図12に示すようなバスツリーでは、リクエストを発行するのはバスツリーの頂点であるが、ハードウェアの動作としては図1で示すIOH105A〜Dでパケットが生成される。すなわち、RIDはリクエストを行うパケットを生成したIOH105A〜Dを持つはずである。そして、I/Oデバイス120A〜Dはリクエストを受け取ると、それに応答するためのリプライのパケットを生成するが、リプライのパケットの宛先は、リクエストのパケットのRIDを用いる。そのため、リクエストに対するリプライのパケットは、I/Oデバイスからサーバに、リクエストの経路を逆に辿って返すことが出来る。   In PCI Express, RID (Requester ID) for identifying the component that issued the request is assigned to each requesting packet. In the bus tree as shown in FIG. 10 and FIG. 12, the request is issued at the top of the bus tree, but as hardware operation, packets are generated by the IOHs 105A to 105D shown in FIG. That is, the RID should have the IOHs 105A-D that generated the requesting packet. When receiving the request, the I / O devices 120A to 120D generate a reply packet for responding to the request, and the reply packet destination uses the RID of the request packet. Therefore, the reply packet for the request can be returned from the I / O device to the server by tracing the request path in reverse.

図12及び図13で示す動作を行うためには、CPU102A〜Dがロード命令、ないしは、ストア命令を発行する時に、MMIOリクエストであればパケットの宛先アドレスを、Configurationリクエストであればパケットの宛先Bus#を、所定のオフセット分ずらす必要がある。そのための動作を説明する。   In order to perform the operations shown in FIGS. 12 and 13, when the CPUs 102A to 102D issue a load instruction or a store instruction, the destination address of the packet is sent if it is an MMIO request, and the destination bus of the packet is sent if it is a Configuration request It is necessary to shift # by a predetermined offset. The operation for this will be described.

先に説明した様に、SMPサーバ100は図14で示した単一の主記憶空間を有する。MMIOリクエスト、及び、Configurationリクエストは、CPU102A〜Dが、図14の主記憶空間の中で「MMIO空間、等」とされている空間にロード命令、ないしは、ストア命令を発行したときに発生する。   As described above, the SMP server 100 has the single main storage space shown in FIG. The MMIO request and the Configuration request are generated when the CPUs 102A to 102D issue a load instruction or a store instruction to a space designated as “MMIO space, etc.” in the main storage space of FIG.

図6は前述した「MMIO空間、等」をさらに詳細に示したメモリマップである。この中には、ブレード#0MMIO空間、ブレード#1MMIO空間、ブレード#2MMIO空間、ブレード#3MMIO空間、及び、PCI Express Enhanced Configuration Access Mechanism空間(ECAM空間)がある。   FIG. 6 is a memory map showing the above-mentioned “MMIO space, etc.” in more detail. Among them, there are a blade # 0 MMIO space, a blade # 1 MMIO space, a blade # 2 MMIO space, a blade # 3 MMIO space, and a PCI Express Enhanced Configuration Mechanism space (ECAM space).

MMIOリクエストは、Configurationリクエストと同様にバスツリー状でルーティングされる。図9で示すブリッジは、自分の配下にあるBus#を把握しており、それに基づいてConfigurationリクエストのルーティングが行われる。それに加えてブリッジは自分の配下にあるMMIOアドレスも把握しており、それに基づいてConfigurationリクエストのルーティングが行われる。   The MMIO request is routed in the form of a bus tree in the same manner as the configuration request. The bridge shown in FIG. 9 knows the Bus # under its control, and the configuration request is routed based on the Bus #. In addition, the bridge also knows the MMIO address under its control, and the configuration request is routed based on the MMIO address.

ここで、図6のブレード#0MMIO空間は、IOH105Aの配下にあるMMIOアドレス空間であり、ブレード#0MMIO空間宛のMMIOリクエストパケットはI/Oインタフェース115Aから出力される。同様に、ブレード#1MMIO空間はIOH105B、及び、I/Oインタフェース115Bに、ブレード#2MMIO空間はIOH105C、及び、I/Oインタフェース115Cに、ブレード#3MMIO空間はIOH105D、及び、I/Oインタフェース115Dに、それぞれ対応している。   Here, the blade # 0 MMIO space in FIG. 6 is an MMIO address space under the IOH 105A, and an MMIO request packet addressed to the blade # 0 MMIO space is output from the I / O interface 115A. Similarly, blade # 1 MMIO space is IOH 105B and I / O interface 115B, blade # 2 MMIO space is IOH 105C and I / O interface 115C, and blade # 3 MMIO space is IOH 105D and I / O interface 115D. , Respectively.

ここで、I/Oデバイス120A〜Dが有するMMRは、全てブレード#0MMIO空間にマッピングするものとする。そのため、CPU102A〜Dが発行するMMIOリクエストは、全てブレード#0MMIO空間のアドレスを宛先としたものになる。   Here, all the MMRs included in the I / O devices 120A to 120D are mapped to the blade # 0 MMIO space. Therefore, all MMIO requests issued by the CPUs 102A to 102D are addressed to the address of the blade # 0 MMIO space.

しかし、そのままでは、全てのMMIOリクエストがI/Oインタフェース115Aに集中してしまうことになるので、アドレス変換を行うことで、CPU102A〜D毎に使用するI/Oインタフェース115A〜Dを分散させる。   However, as it is, all MMIO requests are concentrated on the I / O interface 115A. Therefore, by performing address conversion, the I / O interfaces 115A to 115D used for the CPUs 102A to 102D are distributed.

CPU102Aがブレード#0MMIO空間へのロード命令、ないしは、ストア命令を発行したときには、アドレス変換において、オフセット+0を加える(すなわち、アドレス変換しない)。これにより、CPU102A由来のMMIOリクエストはI/Oインタフェース115Aから出力される。   When the CPU 102A issues a load instruction to the blade # 0 MMIO space or a store instruction, an offset +0 is added in the address conversion (that is, the address is not converted). Thereby, the MMIO request derived from the CPU 102A is output from the I / O interface 115A.

CPU102Bがブレード#0MMIO空間へのロード命令、ないしは、ストア命令を発行したときには、アドレス変換において、オフセット+αを加える(オフセット+αは図6に示す)。これにより、CPU102B由来のMMIOリクエストはブレード#1MMIO空間に対するものとなり、I/Oインタフェース115Bから出力される。しかし、本来の宛先はオフセットを加える前のアドレスであるため、I/Oスイッチ110に到着後はオフセット演算部113Bでオフセット分を減じる(宛先アドレスからαを減じる)。   When the CPU 102B issues a load instruction to the blade # 0 MMIO space or a store instruction, an offset + α is added in the address conversion (the offset + α is shown in FIG. 6). Thus, the MMIO request derived from the CPU 102B is for the blade # 1 MMIO space and is output from the I / O interface 115B. However, since the original destination is the address before the offset is added, after the arrival at the I / O switch 110, the offset calculation unit 113B subtracts the offset (subtracts α from the destination address).

CPU102Cがブレード#0MMIO空間へのロード命令、ないしは、ストア命令を発行したときには、アドレス変換において、オフセット+βを加える(オフセット+βは図6に示す)。これにより、CPU102C由来のMMIOリクエストはブレード#2MMIO空間に対するものとなり、I/Oインタフェース115Cから出力される。しかし、本来の宛先はオフセットを加える前のアドレスであるため、I/Oスイッチ110に到着後はオフセット演算部113Cでオフセット分を減じる(宛先アドレスからβを減じる)。   When the CPU 102C issues a load instruction to the blade # 0 MMIO space or a store instruction, an offset + β is added in the address conversion (the offset + β is shown in FIG. 6). As a result, the MMIO request derived from the CPU 102C is for the blade # 2 MMIO space and is output from the I / O interface 115C. However, since the original destination is the address before the offset is added, after the arrival at the I / O switch 110, the offset calculation unit 113C subtracts the offset (subtracts β from the destination address).

CPU102Dがブレード#0MMIO空間へのロード命令、ないしは、ストア命令を発行したときには、アドレス変換において、オフセット+γを加える(オフセット+γは図6に示す)。これにより、CPU102D由来のMMIOリクエストはブレード#3MMIO空間に対するものとなり、I/Oインタフェース115Dから出力される。しかし、本来の宛先はオフセットを加える前のアドレスであるため、I/Oスイッチ110に到着後はオフセット演算部113Dでオフセット分を減じる(宛先アドレスからβを減じる)。   When the CPU 102D issues a load instruction to the blade # 0 MMIO space or a store instruction, an offset + γ is added in the address conversion (the offset + γ is shown in FIG. 6). As a result, the MMIO request derived from the CPU 102D is for the blade # 3 MMIO space and is output from the I / O interface 115D. However, since the original destination is the address before the offset is added, the offset is reduced by the offset calculation unit 113D after arrival at the I / O switch 110 (β is subtracted from the destination address).

以上のような動作において、MMIOリクエストを、当該リクエストを発行したCPU102A〜Dに応じて、I/Oインタフェース115A〜Dに分散して出力させることで、負荷分散を実現することができるようになった。   In the operation as described above, load distribution can be realized by distributing MMIO requests to the I / O interfaces 115A to 115D according to the CPUs 102A to 102D that issued the requests. It was.

次に、Configurationリクエストの場合を説明する。Configuraitonリクエストの宛先は、既に説明したように、Bus#、Dev#、Fun#、Configuration空間アドレスの組合せで指定される。   Next, the case of a configuration request will be described. As described above, the destination of the Configuration request is specified by a combination of Bus #, Dev #, Fun #, and Configuration space address.

Congigurationリクエストは、図6のECAM空間に対してCPU102A〜Dがロード命令、ないしは、ストア命令を発行することでパケットが発生する。ECAM空間はConfiguration空間(12bit空間=4KB空間)に相当する領域を、Bus#、Dev#、Fun#の個数分組合せたものである。すなわち、4KB×Fun#個数(8個/Dev#)×Dev#個数(32個/Bus#)×Bus#個数(256個/システム)の合計256MBの空間である。   A packet is generated when the CPU 102A to 102D issues a load instruction or a store instruction to the ECAM space of FIG. The ECAM space is a combination of areas corresponding to the configuration space (12-bit space = 4 KB space) by the number of Bus #, Dev #, and Fun #. That is, a space of 256 MB in total of 4 KB × Fun # number (8 / Dev #) × Dev # number (32 / Bus #) × Bus # number (256 / system).

図7にECAM空間の詳細を示す。例えば、Bus#3のI/Oデバイス120Aに対するConfigurationリクエストは、先頭アドレスyを起点として、+10000H〜+1FFFFHまでの1MBの空間である(4KB×Fun#個数×Dev#個数=1MB)。この1MB空間内でのアドレスは、I/Oデバイス120Aが有するどのリソース(レジスタ)にアクセスしたいかによって異なる。   FIG. 7 shows details of the ECAM space. For example, the configuration request for the Bus # 3 I / O device 120A is a 1 MB space from the start address y to + 10000H to + 1FFFFH (4 KB × Fun # number × Dev # number = 1 MB). The address in the 1 MB space differs depending on which resource (register) the I / O device 120A has to access.

前述した、CPU102C発のBus#4に対するConfigurationリクエストをBus#132(Bus#4+オフセット#128)に対するConfigurationリクエストに変換するのは、CPU102CがBus#0〜Bus#63用空間にロード命令、ないしは、ストア命令を発行したときに、アドレスにオフセット+8000000Hを加えるアドレス変換を行うことで実現できる。   The CPU 102C converts the configuration request for the Bus # 4 from the CPU 102C into a Configuration request for the Bus # 132 (Bus # 4 + offset # 128). The CPU 102C loads the Bus # 0 to Bus # 63 space, This can be realized by performing address conversion by adding an offset + 8000000H to the address when a store instruction is issued.

以上のように、MMIOリクエストの宛先アドレスにオフセットを加える、ないしは、Configurationリクエストの宛先Bus#にオフセットを加えることで、I/Oインタフェース115A〜Dを分散して利用することは、CPU102A〜D上でロード命令、ないしは、ストア命令を発行するときのアドレス変換で実現できることを示した。   As described above, using the I / O interfaces 115A to 115D in a distributed manner by adding an offset to the destination address of the MMIO request or adding an offset to the destination Bus # of the Configuration request is performed on the CPUs 102A to D. This shows that it can be realized by address conversion when issuing a load instruction or a store instruction.

アドレス変換を実現する手段としては、CPU102A〜Dが有する種々の機構、ないしは、ハイパーバイザ等のシステムソフトウェアを利用することが出来る。一般的にCPUでは、仮想アドレスから物理アドレスへのアドレス変換を行うためのPT(Page Table)を提供しているが、これは一般的にはオペレーティングシステムが使うものであり、PTで上記のアドレス変換を実現するためには、オペレーティングシステムに手を加える必要が出てくる。   As means for realizing the address translation, various mechanisms included in the CPUs 102A to 102D or system software such as a hypervisor can be used. In general, a CPU provides a PT (Page Table) for performing address conversion from a virtual address to a physical address. This is generally used by an operating system. In order to realize the conversion, it is necessary to modify the operating system.

その他の手段としては、ハイパーバイザでSPT(Shadow Page Table)を用意して、オペレーティングシステムに手を加えないで、ハイパーバイザのレイヤーで上記のアドレス変換を実現することがある。また、一部のCPUでPTに加えて二段目のアドレス変換機構として用意されているEPT(Extended Page Table)を利用して、上記のアドレス変換を実現しても良い。   As another means, there is a case where an SPT (Shadow Page Table) is prepared in the hypervisor, and the above address conversion is realized in the hypervisor layer without changing the operating system. In addition to the PT, some CPUs may implement the above address conversion using an EPT (Extended Page Table) prepared as a second-stage address conversion mechanism.

次に、I/Oデバイス発サーバ宛のリクエストを行うパケットに関して述べる。上記は、いずれもサーバ発I/Oデバイス宛のリクエストと、それに対するリプライに関して述べてきた。以下では、その逆であるI/Oデバイス発サーバ宛のリクエストと、それに対するリプライに関して述べる。   Next, a packet for making a request addressed to the I / O device originating server will be described. All of the above has been described with respect to a request from a server to an I / O device and a reply to the request. In the following, a request directed to an I / O device originating server and a reply to the request will be described.

I/Oデバイス120A〜Dは、図14に示すSMPサーバ100の主記憶空間全体を読書きすることができる。しかし、本実施例で示す宛先ポート検索部114A〜Dを用いないと、I/Oデバイス120A〜Dが、ブレード#0メモリ(メモリ103A)、ブレード#1メモリ(メモリ103B)、ブレード#2メモリ(メモリ103C)、及び、ブレード#3メモリ(メモリ103D)の何れに対するアクセスでも、全てIOH105A、及び、I/Oインタフェース115A経由になってしまう。これは、I/Oインタフェース115A、及び、内部インターコネクト109の混雑を招く。   The I / O devices 120A to 120D can read and write the entire main storage space of the SMP server 100 shown in FIG. However, if the destination port search units 114A to 114D shown in the present embodiment are not used, the I / O devices 120A to 120D have the blade # 0 memory (memory 103A), the blade # 1 memory (memory 103B), and the blade # 2 memory. (Memory 103C) and blade # 3 memory (memory 103D) are all accessed via IOH 105A and I / O interface 115A. This causes congestion of the I / O interface 115A and the internal interconnect 109.

そこで、本実施例では、宛先ポートテーブル検索部114A〜Dにおいて、I/Oデイバス120A〜Dが発するリクエストのパケットの宛先アドレスから、サーバ側ポート番号を参照し、出力すべきI/Oインタフェース115A〜Dを選択する。これにより、宛先ポートテーブル151が適切に設定されていれば、図15に示すようにI/Oデバイス120A〜Dが発するリクエストを、宛先のメモリ103A〜Dまで最短の経路で伝送できることになるので、メモリアクセスのレイテンシ低減に寄与すると共に、I/Oインタフェース115A〜D、及び、内部インターコネクト190の混雑緩和を実現できる。   Therefore, in this embodiment, the destination port table search units 114A to 114D refer to the server side port number from the destination address of the packet of the request issued by the I / O day bus 120A to D, and output the I / O interface 115A. Select ~ D. As a result, if the destination port table 151 is set appropriately, the requests issued by the I / O devices 120A to 120D can be transmitted to the destination memories 103A to 103D through the shortest path as shown in FIG. Thus, it is possible to reduce the latency of memory access and to reduce congestion of the I / O interfaces 115A to 115D and the internal interconnect 190.

次に図8に、図1に示す本実施例に基づく計算機システムを利用して、所望の効果を得るために必要な初期化のシーケンスを示す。   Next, FIG. 8 shows an initialization sequence necessary for obtaining a desired effect using the computer system based on the present embodiment shown in FIG.

ステップS801で、図1に示す計算機システムの中で、管理サーバ130を起動させる。図1の計算機システムは全体の動作を管理サーバ130が管理する。   In step S801, the management server 130 is activated in the computer system shown in FIG. The management server 130 manages the overall operation of the computer system of FIG.

ステップS802で、管理サーバ130は、管理ネットワーク131経由でI/Oスイッチ110に起動の指令を発行し、I/Oスイッチ110を起動させる。I/Oスイッチ110は起動すると、内部のI/Oコントローラ112によって、スイッチ交換部111の初期設定が行われる。I/Oコントローラ112は、オフセット減算部113Aは、オフセット値を減算しないように初期化(MMIOアドレスオフセットテーブル410、及び、IDオフセットテーブル420の全てのエントリを0にする)される。また、同様にI/Oコントローラ112は、宛先ポートテーブル151の全てのエントリを無効にするため、全ての有効ビットを無効(0)にする。   In step S <b> 802, the management server 130 issues an activation command to the I / O switch 110 via the management network 131 to activate the I / O switch 110. When the I / O switch 110 is activated, the internal switching unit 111 is initially set by the internal I / O controller 112. The I / O controller 112 is initialized so that the offset subtraction unit 113A does not subtract the offset value (all entries in the MMIO address offset table 410 and the ID offset table 420 are set to 0). Similarly, the I / O controller 112 invalidates all valid bits (0) in order to invalidate all entries in the destination port table 151.

ステップS803で、管理サーバ130は、管理ネットワーク131経由でI/Oスイッチ110に構成情報収集の指令を発行し、I/Oスイッチ110から構成情報を受信する。構成情報収集の指令を受けたI/Oスイッチ110は、I/Oコントローラ112が、I/Oインタフェース180経由で、I/Oスイッチ110に接続されているI/Oデバイス120A〜Dにアクセスし、I/Oデバイスの存在を検出する。そして、I/Oデバイス120A〜Dが接続されていることを、管理サーバ130に構成情報として送信する。   In step S <b> 803, the management server 130 issues a configuration information collection command to the I / O switch 110 via the management network 131 and receives configuration information from the I / O switch 110. When the I / O switch 110 receives the configuration information collection command, the I / O controller 112 accesses the I / O devices 120A to 120D connected to the I / O switch 110 via the I / O interface 180. , Detecting the presence of an I / O device. Then, the fact that the I / O devices 120A to 120D are connected is transmitted to the management server 130 as configuration information.

ステップS804で、管理サーバ130は、I/Oスイッチ110から得た構成情報を計算機システムの管理者に提示し、I/OデバイスとSMPサーバ100の接続に関して指示を受ける。以降の説明では、I/Oデバイス120A〜Dを全てSMPサーバ100に接続するという設定が管理者によってなされたものとして説明する。   In step S804, the management server 130 presents the configuration information obtained from the I / O switch 110 to the administrator of the computer system, and receives an instruction regarding the connection between the I / O device and the SMP server 100. In the following description, it is assumed that the setting for connecting all the I / O devices 120A to 120D to the SMP server 100 is made by the administrator.

ステップS805では、オフセット情報150(MMIOアドレスオフセットテーブル410、及び、IDオフセットテーブル420)に設定すべきオフセット値を算出する。本実施例で示す計算機システムでは、オフセット値は図6及び図7に示すようになる。   In step S805, an offset value to be set in the offset information 150 (MMIO address offset table 410 and ID offset table 420) is calculated. In the computer system shown in this embodiment, the offset values are as shown in FIGS.

すなわち、MMIOアドレスオフセットテーブル410のサーバ側ポート番号0エントリ(I/Oインタフェース115Aに対応し、オフセット減算部113Aが使用)は0、サーバ側ポート番号1エントリ(I/Oインタフェース115Bに対応し、オフセット減算部113Bが使用)はα、サーバ側ポート番号2エントリ(I/Oインタフェース115Bに対応し、オフセット減算部113Bが使用)はβ、サーバ側ポート番号3エントリ(I/Oインタフェース115Cに対応し、オフセット減算部113Cが使用)はγ、となる。   That is, the server side port number 0 entry (corresponding to the I / O interface 115A and used by the offset subtraction unit 113A) of the MMIO address offset table 410 is 0, and the server side port number 1 entry (corresponding to the I / O interface 115B) Offset subtracting unit 113B) is α, server side port number 2 entry (corresponding to I / O interface 115B, offset subtracting unit 113B is used) β, server side port number 3 entry (corresponding to I / O interface 115C) The offset subtraction unit 113C uses γ.

また、IDオフセットテーブル420のサーバ側ポート番号0エントリ(I/Oインタフェース115Aに対応し、オフセット減算部113Aが使用)は0、サーバ側ポート番号1エントリ(I/Oインタフェース115Bに対応し、オフセット減算部113Bが使用)は64、サーバ側ポート番号2エントリ(I/Oインタフェース115Bに対応し、オフセット減算部113Bが使用)は128、サーバ側ポート番号3エントリ(I/Oインタフェース115Cに対応し、オフセット減算部113Cが使用)は256、となる。なお、これらのオフセット値は、後で説明するように、ブレード#0〜#3各々のEPTに、対応して設定される必要がある。   Further, the server side port number 0 entry (corresponding to the I / O interface 115A and used by the offset subtracting unit 113A) of the ID offset table 420 is 0, and the server side port number 1 entry (corresponding to the I / O interface 115B is offset. 64 is used for the server side port number 2 (corresponding to the I / O interface 115B, and used by the offset subtractor 113B) is 128, and 3 entries for the server side port number (corresponding to the I / O interface 115C). , Used by the offset subtracting unit 113C) is 256. These offset values need to be set corresponding to the EPTs of the blades # 0 to # 3, as will be described later.

ステップS806では、宛先ポートテーブル151に設定すべきベースアドレス、サイズ、及び、宛先ポート番号を生成する。本実施例で示す計算機システムでは、ベースアドレス、及び、サイズは図14に示すようになる。   In step S806, the base address, size, and destination port number to be set in the destination port table 151 are generated. In the computer system shown in this embodiment, the base address and size are as shown in FIG.

すなわち、宛先ポートテーブル151のエントリ0番はベースアドレスをD0、サイズをR0、宛先ポート番号を0(I/Oインタフェース115Aを示す番号)とし、有効ビットを有効(1)とする。エントリ1番はベースアドレスをD1、サイズをR1、宛先ポート番号を1(I/Oインタフェース115Bを示す番号)とし、有効ビットを有効(1)とする。エントリ2番はベースアドレスをD2、サイズをR2、宛先ポート番号を2(I/Oインタフェース115Cを示す番号)とし、有効ビットを有効(1)とする。エントリ3番はベースアドレスをD3、サイズをR3、宛先ポート番号を3(I/Oインタフェース115Dを示す番号)とし、有効ビットを有効(1)とする。エントリ4〜5番は使わないので、ステップS802で無効にされたままにしておく。   That is, entry 0 in the destination port table 151 has a base address of D0, a size of R0, a destination port number of 0 (a number indicating the I / O interface 115A), and a valid bit of valid (1). For entry No. 1, the base address is D1, the size is R1, the destination port number is 1 (number indicating the I / O interface 115B), and the valid bit is valid (1). For entry No. 2, the base address is D2, the size is R2, the destination port number is 2 (number indicating the I / O interface 115C), and the valid bit is valid (1). For entry 3, the base address is D3, the size is R3, the destination port number is 3 (number indicating the I / O interface 115D), and the valid bit is valid (1). Since entries 4-5 are not used, they are left invalidated in step S802.

ステップS807では、ステップS805で算出したオフセット値を、管理ネットワーク131を経由して、I/Oコントローラ112上のオフセット情報150に書込む。また、ステップS806で生成した宛先ポートテーブルを、管理ネットワーク131を経由して、I/Oコントローラ112上の宛先ポートテーブル151に書込む。   In step S807, the offset value calculated in step S805 is written into the offset information 150 on the I / O controller 112 via the management network 131. Also, the destination port table generated in step S806 is written into the destination port table 151 on the I / O controller 112 via the management network 131.

ステップS808では、管理サーバ130は管理ネットワーク131を経由してSMPサーバ100を起動する指示を発行する。本実施例では、SMPサーバ100はブレード101A〜Dで構成されているため、ブレード101A〜Dを起動させることになる。   In step S808, the management server 130 issues an instruction to activate the SMP server 100 via the management network 131. In this embodiment, since the SMP server 100 is composed of blades 101A to 101D, the blades 101A to 101D are activated.

ブレード101A〜Dは、その起動の過程において、各種システムソフトウェア(BIOS、EFI、ハイパーバイザ、オペレーティングシステム、等)が、IOH105A〜Dや、図9に示すバスツリー状のブリッジを設定することで、図9に示すようなバスツリーを形成する。   In the process of starting up the blades 101A-D, various system software (BIOS, EFI, hypervisor, operating system, etc.) set the IOHs 105A-D and the bus-tree bridge shown in FIG. A bus tree as shown in FIG. 9 is formed.

ステップS809では、管理サーバ130から管理ネットワーク131を経由して、SMPサーバ100上で動作しているハイパーバイザにアドレス変換で用いるオフセット値を通知する。本実施例の場合には、アドレス変換手段としてEPTを使用すると考えると、以下に示すようなオフセット値をハイパーバイザに通知し、ハイパーバイザは各ブレード101A〜DのEPTに対応する値を設定し、EPTを有効化する。なお、上述の通り、各ブレード101A〜DのEPTは通常通りの使用がなされる。   In step S809, the management server 130 notifies the hypervisor operating on the SMP server 100 of the offset value used for address conversion via the management network 131. In the case of this embodiment, assuming that EPT is used as the address conversion means, the following offset value is notified to the hypervisor, and the hypervisor sets a value corresponding to the EPT of each blade 101A-D. Enable EPT. As described above, the EPT of each blade 101A-D is used as usual.

CPU102A上で動作するハイパーバイザのスレッドが使うEPTは、図6のブレード#0MMIO空間(アドレスx〜(x+s))に対するアクセスが発生したとき、オフセット値+0を加算する(あるいは、オフセット値を加算しない)ようにEPTを設定する。また、図7のBus#0〜63用空間に対するアクセスが発生した時、オフセット値+0を加算する(あるいは、オフセット値を加算しない)ようにEPTを設定する。   The EPT used by the hypervisor thread operating on the CPU 102A adds the offset value +0 (or does not add the offset value) when an access to the blade # 0 MMIO space (addresses x to (x + s)) in FIG. 6 occurs. EPT is set as follows. Further, when an access to the space for Bus # 0 to 63 in FIG. 7 occurs, the EPT is set so that the offset value +0 is added (or the offset value is not added).

CPU102B上で動作するハイパーバイザのスレッドが使うEPTは、図6のブレード#0MMIO空間(アドレスx〜(x+s))に対するアクセスが発生したとき、オフセット値+αを加算するようにEPTを設定する。また、図7のBus#0〜63用空間に対するアクセスが発生した時、オフセット値+4000000Hを加算するようにEPTを設定する。   The EPT used by the thread of the hypervisor operating on the CPU 102B is set so that the offset value + α is added when an access to the blade # 0 MMIO space (address x to (x + s)) in FIG. 6 occurs. Further, when an access to the space for Bus # 0 to 63 in FIG. 7 occurs, the EPT is set so that the offset value + 4000000H is added.

CPU102C上で動作するハイパーバイザのスレッドが使うEPTは、図6のブレード#0MMIO空間(アドレスx〜(x+s))に対するアクセスが発生したとき、オフセット値+βを加算するようにEPTを設定する。また、図7のBus#0〜63用空間に対するアクセスが発生した時、オフセット値+8000000Hを加算するようにEPTを設定する。   The EPT used by the thread of the hypervisor operating on the CPU 102C is set so that the offset value + β is added when an access to the blade # 0 MMIO space (address x to (x + s)) in FIG. 6 occurs. Further, when an access to the space for Bus # 0 to 63 in FIG. 7 occurs, the EPT is set so that the offset value + 8000000H is added.

CPU102D上で動作するハイパーバイザのスレッドが使うEPTは、図6のブレード#0MMIO空間(アドレスx〜(x+s))に対するアクセスが発生したとき、オフセット値+γを加算するようにEPTを設定する。また、図7のBus#0〜63用空間に対するアクセスが発生した時、オフセット値+C000000Hを加算するようにEPTを設定する。   The EPT used by the hypervisor thread operating on the CPU 102D is set to add an offset value + γ when an access to the blade # 0 MMIO space (addresses x to (x + s)) in FIG. 6 occurs. Further, when an access to the space for Bus # 0 to 63 in FIG. 7 occurs, the EPT is set so that the offset value + C000000H is added.

本実施例によれば、SMPサーバと複数のI/Oデバイスとの間のデータ転送を、SMPサーバが有する複数のI/Oインタフェースに分散させることで、I/Oインタフェースとサーバ内部インターコネクトの混雑を緩和することができる。   According to the present embodiment, the data transfer between the SMP server and the plurality of I / O devices is distributed to the plurality of I / O interfaces of the SMP server, thereby congesting the I / O interface and the server internal interconnect. Can be relaxed.

以上、本発明を実施例に基づき具体的に説明したが、本発明は上述した実施例の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。上記した実施例は本発明のより良い理解のために詳細に説明したのであり、必ずしも説明の全ての構成を備えるものに限定されものではない。   Although the present invention has been specifically described above based on the embodiments, it is needless to say that the present invention is not limited to the above-described embodiments and can be variously modified without departing from the gist thereof. The above-described embodiments have been described in detail for better understanding of the present invention, and are not necessarily limited to those having all the configurations described above.

更に、上述した各構成、機能、処理部等は、それらの一部又は全部を、集積回路で設計する等によりハードウェアで実現しても良いし、それらの一部又は全部を実現するプログラムを作成することによりソフトウェアで実現しても良いことは言うまでもない。   Furthermore, each of the above-described configurations, functions, processing units, and the like may be realized by hardware by designing a part or all of them with an integrated circuit, or a program that realizes part or all of them. Needless to say, it can be realized by software.

本発明は、複数のI/Oインタフェースを有するSMPサーバ等の計算機において、I/Oインタフェース、及び、計算機内部で用いられている内部インターコネクトの混雑を緩和し、計算機全体の性能を向上させる効果を有する。   The present invention has the effect of reducing the congestion of the I / O interface and the internal interconnect used inside the computer in a computer such as an SMP server having a plurality of I / O interfaces, and improving the performance of the entire computer. Have.

100 SMPサーバ
101A〜D ブレード
102A〜D CPU
103A〜D メモリ
104A〜D、109 内部インターコネクト
105A〜D IOH(I/Oハブ)
110 I/Oスイッチ
111 スイッチ交換部
112 I/Oコントローラ
113A〜D オフセット減算部
114A〜D 宛先ポート検索部
120A〜D I/Oデバイス
130 管理サーバ
131 管理ネットワーク
115A〜D、121A〜D I/Oインタフェース
150 オフセット情報
151 宛先ポートテーブル。
100 SMP servers 101A-D Blades 102A-D CPU
103A to D Memory 104A to D, 109 Internal interconnect 105A to D IOH (I / O hub)
110 I / O switch 111 Switch exchange unit 112 I / O controller 113A-D Offset subtraction unit 114A-D Destination port search unit 120A-D I / O device 130 Management server 131 Management network 115A-D, 121A-D I / O Interface 150 Offset information 151 Destination port table.

Claims (15)

計算機システムであって、
複数のI/Oインタフェースと、記憶空間を共有する複数の処理部を有するサーバと、
前記サーバが利用するI/Oデバイスと、
前記サーバの前記I/Oインタフェースと、前記I/Oデバイスを接続するI/Oスイッチとを備え、
前記処理部は、
前記処理部が前記I/Oデバイスに対する命令を発行したときに、前記処理部毎に異なるオフセット値を、前記命令に基づき発生するデータの宛先データに加算するアドレス変換機構を有し、
前記I/Oスイッチは、
前記サーバが発行した前記宛先データから、対応する前記オフセット値を減算するオフセット減算部を有する、
ことを特徴とする計算機システム。
A computer system,
A server having a plurality of I / O interfaces and a plurality of processing units sharing a storage space;
An I / O device used by the server;
Comprising the I / O interface of the server and an I / O switch for connecting the I / O device;
The processor is
When the processing unit issues an instruction to the I / O device, the processing unit has an address conversion mechanism that adds a different offset value for each processing unit to destination data of data generated based on the command,
The I / O switch is
An offset subtraction unit that subtracts the corresponding offset value from the destination data issued by the server;
A computer system characterized by that.
請求項1に記載の計算機システムにおいて、
前記I/Oスイッチは、
前記記憶空間の一部を構成する複数の領域と、前記I/Oインタフェースとの対応関係を記憶する宛先ポートテーブルを有しており、
前記I/Oデバイスが発するデータの宛先データアドレスによって、前記宛先ポートテーブルを参照し、参照結果として得られたI/Oインタフェース宛に前記データを転送する、
ことを特徴とする計算機システム。
The computer system according to claim 1,
The I / O switch is
A destination port table for storing a correspondence relationship between a plurality of areas constituting a part of the storage space and the I / O interface;
The destination port table is referred to by the destination data address of the data issued by the I / O device, and the data is transferred to the I / O interface obtained as a reference result.
A computer system characterized by that.
請求項1に記載の計算機システムにおいて、
前記命令は、前記処理部が前記I/Oデバイスに対して発行するロード命令ないしストア命令である、
ことを特徴とする計算機システム。
The computer system according to claim 1,
The instruction is a load instruction or a store instruction issued by the processing unit to the I / O device.
A computer system characterized by that.
請求項1に記載の計算機システムにおいて、
前記宛先データは、前記サーバが発行したデータの宛先アドレス、ないしは宛先ID(Identifier)である、
ことを特徴とする計算機システム。
The computer system according to claim 1,
The destination data is a destination address of data issued by the server or a destination ID (Identifier).
A computer system characterized by that.
請求項1に記載の計算機システムにおいて、
前記サーバは、SMP(Symmetric Multiple Processor)サーバである、
ことを特徴とする計算機システム。
The computer system according to claim 1,
The server is an SMP (Symmetric Multiple Processor) server.
A computer system characterized by that.
請求項5に記載の計算機システムにおいて、
前記SMPサーバは複数のブレードを備え、前記ブレード各々は、前記処理部と、前記I/Oインタフェースと、記憶部と、内部インターコネクトを備え、複数の前記処理部と複数の前記記憶部は前記内部インターコネクトにより相互に接続することにより、前記記憶空間として、単一の主記憶空間を形成する、
ことを特徴とする計算機システム。
The computer system according to claim 5,
The SMP server includes a plurality of blades, and each of the blades includes the processing unit, the I / O interface, a storage unit, and an internal interconnect, and the plurality of processing units and the plurality of the storage units include the internal unit. By connecting to each other through an interconnect, a single main storage space is formed as the storage space.
A computer system characterized by that.
複数のI/Oインタフェースと記憶空間を共有する複数の処理部を有するサーバが利用するI/Oデバイスと、前記I/Oインタフェースを接続するI/Oスイッチを備える計算機システムのデータ転送方法であって、
前記処理部は、
前記I/Oデバイスに対する命令を発行したときに、前記命令に基づき発生するデータの宛先データに、処理部毎に異なるオフセット値を与え、
前記I/Oスイッチは、
前記サーバが発行した前記宛先データから、対応する前記オフセット値を除いた後、前記I/Oデバイスに前記データを転送する、
ことを特徴とするデータ転送方法。
A data transfer method for a computer system comprising an I / O device used by a server having a plurality of processing units sharing a storage space with a plurality of I / O interfaces, and an I / O switch for connecting the I / O interface. And
The processor is
When issuing an instruction to the I / O device, a different offset value is given for each processing unit to destination data of data generated based on the instruction,
The I / O switch is
Transferring the data to the I / O device after removing the corresponding offset value from the destination data issued by the server;
A data transfer method characterized by the above.
請求項7に記載のデータ転送方法であって、
前記I/Oスイッチは、
前記記憶空間の一部を構成する複数の領域と、前記I/Oインタフェースとの対応関係を記憶し、
前記I/Oデバイスが発するデータの宛先データによって、記憶する前記対応関係を参照し、参照結果として得られたI/Oインタフェース宛に前記データを転送する、
ことを特徴とするデータ転送方法。
The data transfer method according to claim 7, comprising:
The I / O switch is
Storing a correspondence relationship between a plurality of areas constituting a part of the storage space and the I / O interface;
The correspondence relationship stored is referred to by destination data of data issued by the I / O device, and the data is transferred to the I / O interface obtained as a reference result.
A data transfer method characterized by the above.
請求項7に記載のデータ転送方法であって、
前記処理部は、
前記命令として、前記I/Oデバイスに対してロード命令ないしストア命令を発行する、
ことを特徴とするデータ転送方法。
The data transfer method according to claim 7, comprising:
The processor is
As the instruction, a load instruction or a store instruction is issued to the I / O device.
A data transfer method characterized by the above.
請求項7に記載のデータ転送方法であって、
前記宛先データは、前記処理部が発行した前記データの宛先アドレス、ないしは宛先IDである、
ことを特徴とするデータ転送方法。
The data transfer method according to claim 7, comprising:
The destination data is a destination address or a destination ID of the data issued by the processing unit.
A data transfer method characterized by the above.
記憶空間を共有する複数の処理部を備えるサーバの複数のI/Oインタフェースと、I/Oデバイスとを接続するI/Oスイッチであって、
前記サーバが発行したデータの宛先データから、前記I/Oインタフェース毎に異なるオフセット値を減算するオフセット減算部と、
前記オフセット減算部の出力に接続されるスイッチ交換部と、
前記オフセット減算部と前記スイッチ交換部を制御するI/Oコントローラを備える、
ことを特徴とするI/Oスイッチ。
An I / O switch for connecting a plurality of I / O interfaces of a server including a plurality of processing units sharing a storage space and an I / O device,
An offset subtraction unit that subtracts a different offset value for each I / O interface from destination data of data issued by the server;
A switch exchange unit connected to the output of the offset subtraction unit;
An I / O controller for controlling the offset subtraction unit and the switch exchange unit;
I / O switch characterized by that.
請求項11記載のI/Oスイッチであって、
前記I/Oコントローラは、
前記オフセット値を記憶するオフセット情報記憶部を備える、
ことを特徴とするI/Oスイッチ。
The I / O switch according to claim 11, wherein
The I / O controller
An offset information storage unit for storing the offset value;
I / O switch characterized by that.
請求項11記載のI/Oスイッチであって、
前記I/Oデバイスが発するデータの宛先データに従い、宛先となる前記サーバの複数の前記I/Oインタフェースの内、宛先となるべきI/Oインタフェースを検索する宛先検索部を更に備え、
前記スイッチ交換部を介して、検索結果として得られたI/Oインタフェース宛に前記データを転送する、
ことを特徴とするI/Oスイッチ。
The I / O switch according to claim 11, wherein
A destination search unit for searching for an I / O interface to be a destination among a plurality of the I / O interfaces of the server to be a destination according to destination data of data issued by the I / O device;
The data is transferred to the I / O interface obtained as a search result via the switch exchange unit.
I / O switch characterized by that.
請求項13記載のI/Oスイッチであって、
前記I/Oコントローラは、
前記サーバの前記記憶空間の領域を示す情報と、前記I/Oインタフェースとの対応関係を記憶する宛先ポートテーブルを備え、
前記宛先ポート検索部は、
前記宛先ポートテーブルを参照して、前記I/Oインタフェースを検索する、
ことを特徴とするI/Oスイッチ。
The I / O switch according to claim 13, wherein
The I / O controller
A destination port table that stores information indicating an area of the storage space of the server and a correspondence relationship with the I / O interface;
The destination port search unit
The I / O interface is searched with reference to the destination port table.
I / O switch characterized by that.
請求項11記載のI/Oスイッチであって、
前記宛先データは、前記サーバが発行した前記データの宛先アドレス、ないしは宛先ID(Identifier)である、
ことを特徴とするI/Oスイッチ。
The I / O switch according to claim 11, wherein
The destination data is a destination address of the data issued by the server or a destination ID (Identifier).
I / O switch characterized by that.
JP2010263440A 2010-11-26 2010-11-26 Computer system, method, and i/o switch Pending JP2012113604A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010263440A JP2012113604A (en) 2010-11-26 2010-11-26 Computer system, method, and i/o switch

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010263440A JP2012113604A (en) 2010-11-26 2010-11-26 Computer system, method, and i/o switch

Publications (1)

Publication Number Publication Date
JP2012113604A true JP2012113604A (en) 2012-06-14

Family

ID=46497736

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010263440A Pending JP2012113604A (en) 2010-11-26 2010-11-26 Computer system, method, and i/o switch

Country Status (1)

Country Link
JP (1) JP2012113604A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015156158A (en) * 2014-02-21 2015-08-27 日本電気株式会社 Instruction processor, instruction processing method, instruction processing program and information processing apparatus
WO2017203645A1 (en) * 2016-05-26 2017-11-30 株式会社日立製作所 Computer system, and data control method

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015156158A (en) * 2014-02-21 2015-08-27 日本電気株式会社 Instruction processor, instruction processing method, instruction processing program and information processing apparatus
WO2017203645A1 (en) * 2016-05-26 2017-11-30 株式会社日立製作所 Computer system, and data control method
JPWO2017203645A1 (en) * 2016-05-26 2018-11-22 株式会社日立製作所 Computer system and data 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

Similar Documents

Publication Publication Date Title
JP6231679B2 (en) Resource management for peripheral component interconnect express domain
JP6381541B2 (en) Methods, circuit configurations, integrated circuit devices, program products for processing instructions in a data processing system (conversion management instructions for updating address translation data structures in remote processing nodes)
US8250254B2 (en) Offloading input/output (I/O) virtualization operations to a processor
JP3920395B2 (en) Address translation control circuit and address translation method
CN108351834B (en) Low-overhead hardware predictor for optimizing instruction reduction performance reversal for core-to-core data transfers
US7890699B2 (en) Processing unit incorporating L1 cache bypass
JP5573829B2 (en) Information processing apparatus and memory access method
CN114461548A (en) Accelerator structure
US10210117B2 (en) Computing architecture with peripherals
JP5841255B2 (en) Computer system with processor local coherency for virtualized input / output
US11392528B2 (en) Methods and apparatus for DMA engine descriptors for high speed data systems
JP2018503181A (en) Multi-core processor with cache coherency
US20130227219A1 (en) Processor, information processing apparatus, and arithmetic method
JP2005309553A (en) Computer
JP6379291B2 (en) File access method, system, and host
US7882327B2 (en) Communicating between partitions in a statically partitioned multiprocessing system
CN112540941A (en) Data forwarding chip and server
TWI785320B (en) Intra-device notational data movement system, information handling system and method for providing intra-device notational data movement
US20100042787A1 (en) Cache injection directing tool
JP3970705B2 (en) Address translator, address translation method, and two-layer address translator
JP2012113604A (en) Computer system, method, and i/o switch
US8824317B2 (en) Parallel calculation system, and method and program thereof
US10936219B2 (en) Controller-based inter-device notational data movement system
JP2012146139A (en) Memory access control circuit, prefetch circuit, memory device and information processing system
JP4774099B2 (en) Arithmetic processing apparatus, information processing apparatus, and control method for arithmetic processing apparatus