JP2012113604A - Computer system, method, and i/o switch - Google Patents
Computer system, method, and i/o switch Download PDFInfo
- 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
Links
Images
Abstract
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
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.
現在サーバで普及している、上述の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
これに対して、例えば非特許文献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
そこで、特許文献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
しかし、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
また、計算機システムの処理能力を高めるために、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
しかし、上述の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
これにより、特定の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
以下、本発明の一実施形態を添付図面に基づいて説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、同一の符号の繰り返しの説明は省略する。なお、本明細書において、サーバとは、処理部であるプロセッサ(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サーバ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
ブレード101A〜Dは何れも同じ内部構成をとる。ブレード101A〜Dはそれぞれ、CPU102A〜D、メモリ103A〜D、内部インターコネクト104A〜D、IOH105A〜Dから構成される。
All of the
なお、ブレード内の接続を担う内部インターコネクト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
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
SMPサーバ100では、ブレード101A〜Dに跨って単一のオペレーティングシステム、ハイパーバイザ、ないしは、その他のシステムソフトウェアを動作させ、その上でアプリケーションを動作させることができる。例えば、本実施例においては、SMPサーバ100上で単一のハイパーバイザを動作させ、その上で仮想マシン(Virtual Machine:VM)を動作させるものとする。そのために、メモリ103A〜D上に分散して、ハイパーバイザのバイナリと、VMイメージのバイナリが配置されている。
In the
I/Oスイッチ110は、SMPサーバ100とI/Oデバイス120A〜Dの接続関係を柔軟に切替えるためのスイッチを提供する。I/Oスイッチ110は、PCI Expressスイッチで構成されるスイッチ交換部111、I/Oコントローラ112、オフセット減算部113A〜D、宛先ポート検索部114A〜Dから構成される。
The I /
スイッチ交換部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
I/Oコントローラ112は、I/Oスイッチ110内の構成要素、すなわちスイッチ交換部111、オフセット減算部113A〜D、宛先ポート検索部114A〜Dを制御するためのコントローラである。I/Oコントローラ112は具体的には、CPUやメモリをワンチップに集積したマイクロコントローラを利用すれば良い。I/Oコントローラ112上には、後で詳述するオフセット情報150、及び宛先ポートテーブル151が格納されている。
The I /
管理サーバ130は、図1に示す計算機システム全体を管理するためのサーバである。管理サーバ130は、ハードウェアとしてはブレードサーバ等を用いて実現できる。また、管理に要する負荷が軽微であれば、マイクロコントローラを利用して実現することも可能である。
The
管理サーバ130は管理ネットワーク131を経由して、SMPサーバ100及びI/Oコントローラ112と接続されている。管理サーバはSMPサーバ100上で動作するハイパーバイザ、及び、I/Oコントローラ112と通信を行い、後述する各種パラメータをハイパーバイザ、ないしは、I/Oコントローラ112に指定することができる。また、管理サーバ130はSMPサーバ100の構成情報としてブレードの枚数、メモリ容量等を取得することができる。
The
図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
PCI Expressでは、I/Oデバイス120A〜Dは、図14に示す主記憶空間の任意のアドレスに対して、メモリの書込み、ないしは、メモリの読出しを要求するパケットを投げることができる。
In PCI Express, the I /
また、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 /
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
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 /
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
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
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
なお、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
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
図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
図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
この計算機システムでは、ブレード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 /
しかし、図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
そこで、本実施例では、図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
ここで、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
図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
オフセット減算部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
オフセット減算部113A〜Dは、I/Oインタフェース116A〜Dから入力されたI/Oデバイス発サーバ宛パケット220は素通しして、I/Oインタフェース115A〜Dから出力する。
The offset subtracting
一方、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
セレクタ213は、信号118でオフセット情報150を受け取り、オフセット情報150のうち、当該オフセット減算部113A〜Dが担当しているI/Oインタフェース115A〜Dのサーバ側ポート番号に対応するエントリを選択する。さらに、リクエスト種情報231を元に、MMIOリクエストであればMMIOアドレスオフセットを選択して、オフセット値236として減算器234に入力する。
The
減算器234は、宛先情報232からオフセット値236を減じた結果を宛先情報234としてパケット組立部212に入力する。演算を式で示すと、(宛先情報234)=(宛先情報232)−(オフセット値236)である。
The
パケット組立部212は、宛先情報234とデータ233からパケット235を組み立てて、I/Oインタフェース116A〜Dに出力する。
The
図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 /
宛先ポート検索部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
一方、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
テーブル参照部312は、信号119で宛先ポートテーブル151を参照し、テーブル参照部312に入力されている宛先アドレス332に対応するエントリを検索する。すなわち、(ベースアドレス)≦(宛先アドレス332)<(ベースアドレス+サイズ)という条件を満たすエントリを検索し、そのエントリに対応する宛先ポート番号を、宛先ポート番号333として出力する。
The
なお、宛先アドレス332が何れのエントリにも対応しなかった場合には、デフォルトの宛先ポート番号を宛先ポート番号333として出力する。本実施例では、デフォルトの宛先ポート番号は0(I/Oインタフェース116A、すなわち、ブレード110A(#0)に対応する)とする。
When the
パケット組当部313は、パケット331に宛先ポート番号333を付与して、パケット334としてインタフェース113A〜Dから出力する。
The
なお、宛先ポート番号は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
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 /
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 /
図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
宛先ポート番号は、ベースアドレスとサイズで示された領域に対する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
破線で示されるブレード#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
図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
この時、本実施例では、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
これにより、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
次に、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 /
なお、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 /
図12及び図13で示す動作を行うためには、CPU102A〜Dがロード命令、ないしは、ストア命令を発行する時に、MMIOリクエストであればパケットの宛先アドレスを、Configurationリクエストであればパケットの宛先Bus#を、所定のオフセット分ずらす必要がある。そのための動作を説明する。
In order to perform the operations shown in FIGS. 12 and 13, when the
先に説明した様に、SMPサーバ100は図14で示した単一の主記憶空間を有する。MMIOリクエスト、及び、Configurationリクエストは、CPU102A〜Dが、図14の主記憶空間の中で「MMIO空間、等」とされている空間にロード命令、ないしは、ストア命令を発行したときに発生する。
As described above, the
図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
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
ここで、I/Oデバイス120A〜Dが有するMMRは、全てブレード#0MMIO空間にマッピングするものとする。そのため、CPU102A〜Dが発行するMMIOリクエストは、全てブレード#0MMIO空間のアドレスを宛先としたものになる。
Here, all the MMRs included in the I /
しかし、そのままでは、全てのMMIOリクエストがI/Oインタフェース115Aに集中してしまうことになるので、アドレス変換を行うことで、CPU102A〜D毎に使用するI/Oインタフェース115A〜Dを分散させる。
However, as it is, all MMIO requests are concentrated on the I /
CPU102Aがブレード#0MMIO空間へのロード命令、ないしは、ストア命令を発行したときには、アドレス変換において、オフセット+0を加える(すなわち、アドレス変換しない)。これにより、CPU102A由来のMMIOリクエストはI/Oインタフェース115Aから出力される。
When the
CPU102Bがブレード#0MMIO空間へのロード命令、ないしは、ストア命令を発行したときには、アドレス変換において、オフセット+αを加える(オフセット+αは図6に示す)。これにより、CPU102B由来のMMIOリクエストはブレード#1MMIO空間に対するものとなり、I/Oインタフェース115Bから出力される。しかし、本来の宛先はオフセットを加える前のアドレスであるため、I/Oスイッチ110に到着後はオフセット演算部113Bでオフセット分を減じる(宛先アドレスからαを減じる)。
When the CPU 102B issues a load instruction to the
CPU102Cがブレード#0MMIO空間へのロード命令、ないしは、ストア命令を発行したときには、アドレス変換において、オフセット+βを加える(オフセット+βは図6に示す)。これにより、CPU102C由来のMMIOリクエストはブレード#2MMIO空間に対するものとなり、I/Oインタフェース115Cから出力される。しかし、本来の宛先はオフセットを加える前のアドレスであるため、I/Oスイッチ110に到着後はオフセット演算部113Cでオフセット分を減じる(宛先アドレスからβを減じる)。
When the CPU 102C issues a load instruction to the
CPU102Dがブレード#0MMIO空間へのロード命令、ないしは、ストア命令を発行したときには、アドレス変換において、オフセット+γを加える(オフセット+γは図6に示す)。これにより、CPU102D由来のMMIOリクエストはブレード#3MMIO空間に対するものとなり、I/Oインタフェース115Dから出力される。しかし、本来の宛先はオフセットを加える前のアドレスであるため、I/Oスイッチ110に到着後はオフセット演算部113Dでオフセット分を減じる(宛先アドレスからβを減じる)。
When the CPU 102D issues a load instruction to the
以上のような動作において、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
次に、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
図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 /
前述した、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
以上のように、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
アドレス変換を実現する手段としては、CPU102A〜Dが有する種々の機構、ないしは、ハイパーバイザ等のシステムソフトウェアを利用することが出来る。一般的にCPUでは、仮想アドレスから物理アドレスへのアドレス変換を行うためのPT(Page Table)を提供しているが、これは一般的にはオペレーティングシステムが使うものであり、PTで上記のアドレス変換を実現するためには、オペレーティングシステムに手を加える必要が出てくる。
As means for realizing the address translation, various mechanisms included in the
その他の手段としては、ハイパーバイザで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 /
そこで、本実施例では、宛先ポートテーブル検索部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 /
次に図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
ステップ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
ステップ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
ステップS804で、管理サーバ130は、I/Oスイッチ110から得た構成情報を計算機システムの管理者に提示し、I/OデバイスとSMPサーバ100の接続に関して指示を受ける。以降の説明では、I/Oデバイス120A〜Dを全てSMPサーバ100に接続するという設定が管理者によってなされたものとして説明する。
In step S804, the
ステップ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
また、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
ステップ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,
ステップ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
ステップS808では、管理サーバ130は管理ネットワーク131を経由してSMPサーバ100を起動する指示を発行する。本実施例では、SMPサーバ100はブレード101A〜Dで構成されているため、ブレード101A〜Dを起動させることになる。
In step S808, the
ブレード101A〜Dは、その起動の過程において、各種システムソフトウェア(BIOS、EFI、ハイパーバイザ、オペレーティングシステム、等)が、IOH105A〜Dや、図9に示すバスツリー状のブリッジを設定することで、図9に示すようなバスツリーを形成する。
In the process of starting up the
ステップS809では、管理サーバ130から管理ネットワーク131を経由して、SMPサーバ100上で動作しているハイパーバイザにアドレス変換で用いるオフセット値を通知する。本実施例の場合には、アドレス変換手段としてEPTを使用すると考えると、以下に示すようなオフセット値をハイパーバイザに通知し、ハイパーバイザは各ブレード101A〜DのEPTに対応する値を設定し、EPTを有効化する。なお、上述の通り、各ブレード101A〜DのEPTは通常通りの使用がなされる。
In step S809, the
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
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
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
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
本実施例によれば、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
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 /
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.
前記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.
前記命令は、前記処理部が前記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.
前記宛先データは、前記サーバが発行したデータの宛先アドレス、ないしは宛先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.
前記サーバは、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.
前記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デバイスに前記データを転送する、
ことを特徴とするデータ転送方法。 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.
前記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.
前記処理部は、
前記命令として、前記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.
前記宛先データは、前記処理部が発行した前記データの宛先アドレス、ないしは宛先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スイッチ。 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.
前記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.
前記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.
前記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.
前記宛先データは、前記サーバが発行した前記データの宛先アドレス、ないしは宛先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.
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)
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 |
-
2010
- 2010-11-26 JP JP2010263440A patent/JP2012113604A/en active Pending
Cited By (4)
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 |