JP2020173603A - デバイス通信制御モジュールおよびデバイス通信制御方法 - Google Patents
デバイス通信制御モジュールおよびデバイス通信制御方法 Download PDFInfo
- Publication number
- JP2020173603A JP2020173603A JP2019075021A JP2019075021A JP2020173603A JP 2020173603 A JP2020173603 A JP 2020173603A JP 2019075021 A JP2019075021 A JP 2019075021A JP 2019075021 A JP2019075021 A JP 2019075021A JP 2020173603 A JP2020173603 A JP 2020173603A
- Authority
- JP
- Japan
- Prior art keywords
- pcie
- access
- cfg
- communication control
- control module
- 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
- 238000004891 communication Methods 0.000 title claims abstract description 68
- 238000000034 method Methods 0.000 title claims abstract description 26
- 238000006243 chemical reaction Methods 0.000 claims abstract description 7
- 238000012545 processing Methods 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 14
- 230000002093 peripheral effect Effects 0.000 claims description 4
- 230000006870 function Effects 0.000 description 19
- 238000007726 management method Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 8
- 238000013519 translation Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 2
- 101800001295 Putative ATP-dependent helicase Proteins 0.000 description 1
- 101800001006 Putative helicase Proteins 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000005352 clarification Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Systems (AREA)
- Bus Control (AREA)
Abstract
【課題】PCIeを使用したデバイスを複数のPCIeドメインからアクセスするシステムにおいて、OSやハードウェアの環境によらず、動作できるようにする。【解決手段】CPUの属するPCIeドメインと異なるPCIeドメインに接続されたPCIeデバイスにアクセスするためのI/O変換を行うデバイス通信制御モジュールであって、デバイス通信制御モジュールは、各PCIeデバイスに対応するCFGアドレスと、MMIOアドレスを保持するデバイス管理テーブルと、各PCIeデバイスに対応する仮想デバイスとを有する。CPUが仮想デバイスに対して、CFGアクセスを発行したときに、デバイス通信制御モジュールは、そのCFGアクセスの情報に基づいて、CPUに各PCIeデバイスに対応するMMIOアドレスを返信する。【選択図】 図9
Description
本発明は、デバイス通信制御モジュールおよびデバイス通信制御方法に係り、特に、PCIeデバイスを用いたシステムにおいて、異なったPCIeドメインから接続されたPCIeデバイスをアクセスするシステムに用いて好適なデバイス通信制御モジュールおよびデバイス通信制御方法に関する。
PCIe(Peripheral Component Interconnect Express)は、CPUアーキテクチャに全く依存しないデバイス間を結ぶ内部高速バスの規格として、パソコンやサーバなどあらゆるデータ処理装置に広く普及しているバス規格である。
PCIeは、ネットワークでパケットが送受信される仕様であり、異なったアドレス空間(PCIeドメイン)に接続されているデバイスでも、ブリッジを介してアクセス可能である。
複数のPCIeネットワークを、NTB(Non Transparent Bridge)を介して接続されたシステムは、例えば、特許文献1に開示が有る。特許文献1に記載のシステムでは、異なったボードがブリッジを介して、NTB接続された例が示されており、それらのボード間では、コンフィグレーションリクエストが送出できないことが述べられている(図9、段落番号0007)。
上記従来技術の特許文献1に記載された技術は、NTBにより、二つのボードが接続されて、相互にアクセスするための技術が開示されている。一般に、PCIeを使用したシステムではCPUがDeviceにアクセスする方法は、MMIO(Memory Mapped I/O)アクセスとCFG(ConFiGuration)アクセスが存在する。OS(Operating System)はCFGアクセスを用いて、Deviceの発見を行う。PCIeのNTBは、複数のPCIeドメインを接続するためのBridgeである。このNTBで接続されたPCIeドメイン同士間ではMMIOアクセスは可能だが、CFGアクセスは不可能である。CFGアクセスができないため、OSは、通常の方法ではNTBの先にあるPCIeデバイスを発見できない。そのため、NTBを意識した専用のデバイスドライバを製品ごとに個別に作成して、デバイスを使用する必要がある。そのため、OSやハードウェア機器ごとに特別なデバイスドライバを用意しなければならず、移植性が悪くなり、ソフトウェア開発の工数が大きくなるという事態になる。
本発明の目的は、PCIeを使用したデバイスを複数のPCIeドメインからアクセスするシステムにおいて、OSやハードウェアの環境によらず、動作することのできるデバイス通信制御モジュールおよびデバイス通信制御方法を提供することにある。
本発明のデバイス通信制御モジュールの構成は、好ましくは、CPU(Central Processing Unit)の属するPCIe(Peripheral Component Interconnect Express)ドメインと異なるPCIeドメインに接続されたPCIeデバイスにアクセスするためのI/O変換を行うデバイス通信制御モジュールであって、デバイス通信制御モジュールは、各PCIeデバイスに対応するCFGアドレスと、MMIOアドレスを保持するデバイス管理テーブルと、各PCIeデバイスに対応する仮想デバイスとを有し、CPUが仮想デバイスに対して、CFGアクセスを発行したときに、そのCFGアクセスの情報に基づいて、CPUに各PCIeデバイスに対応するMMIOアドレスを返信するようにしたものである。
本発明によれば、PCIeを使用したデバイスを複数のPCIeドメインからアクセスするシステムにおいて、OSやハードウェアの環境によらず、動作することのできるデバイス通信制御モジュールおよびデバイス通信制御方法を提供することができる。
以下、図面を参照して本発明の実施形態を説明する。以下の記載および図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされている。本発明は、他の種々の形態でも実施する事が可能である。特に限定しない限り、各構成要素は単数でも複数でも構わない。
図面において示す各構成要素の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面に開示された位置、大きさ、形状、範囲などに限定されない。
以下の説明では、「テーブル」、「リスト」、「キュー」等の表現にて各種情報を説明することがあるが、各種情報は、これら以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「XXテーブル」、「XXリスト」等を「XX情報」と呼ぶことがある。識別情報について説明する際に、「識別情報」、「識別子」、「名」、「ID」、「番号」等の表現を用いるが、これらについてはお互いに置換が可能である。
同一あるいは同様な機能を有する構成要素が複数ある場合には、同一の符号に異なる添字を付して説明する場合がある。ただし、これらの複数の構成要素を区別する必要がない場合には、添字を省略して説明する場合がある。
また、以下の説明では、プログラムを実行して行う処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU、GPU)によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)および/またはインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主体がプロセッサとされてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノードであってもよい。プログラムを実行して行う処理の主体は、演算部であれば良く、特定の処理を行う専用回路(例えばFPGAやASIC)を含んでいてもよい。
プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサと配布対象のプログラムを記憶する記憶資源を含み、プログラム配布サーバのプロセッサが配布対象のプログラムを他の計算機に配布してもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
以下、本発明に係る実施形態を、図1ないし図12を用いて説明する。
先ず、図1および図2を用いて本発明の一実施形態に係るデバイス通信制御モジュールの構成と動作の概要について説明する。
本実施形態で説明するデバイス通信制御モジュールを使用したデータ処理システムの一例として、図1に示されるように、Host10とストレージシステム20からなるストレージ管理システムを例に取り、説明する。
なお、本実施形態のデバイス通信制御モジュールが適用されるのは、このようなシステムに限られず、バスとして、PCIeを利用したあらゆる電子機器に利用可能である。
本実施形態で説明するデバイス通信制御モジュールを使用したデータ処理システムの一例として、図1に示されるように、Host10とストレージシステム20からなるストレージ管理システムを例に取り、説明する。
なお、本実施形態のデバイス通信制御モジュールが適用されるのは、このようなシステムに限られず、バスとして、PCIeを利用したあらゆる電子機器に利用可能である。
Host10は、ストレージシステム20を使うプログラムを実行する情報処理機器である。ストレージシステム20は、データを記憶するデバイスを接続して、Host10からの指令に応じて、データを入出力するシステムである。本実施形態では、PCIeデバイス100として、例えば、SSD(Solid State Drive)を接続する。
ストレージシステム20は、データ通信モジュール30、コントローラ40、データ記憶モジュール80からなる。データ通信モジュール30は、Host通信用プロトコル回路31を内蔵し、Host20とコントローラ40間のプロトコル変換を行い、通信を制御するモジュールである。コントローラ40は、ストレージシステム20を制御する部分である。データ記憶モジュール80は、PCIeデバイス100を含み、データ入出力を行うモジュールである。ストレージシステム20の中で、コントローラ40同士は、コントローラ間通信パス5により接続されている。
コントローラ40は、CPU(Central Processing Unit)70、主記憶41、コントローラ間中継器42、Drive通信用プロトコル回路43、デバイス通信制御モジュール50からなる。CPU70は、主記憶41内のデータを参照し、プログラム(OS、F/W(FirmWare))を実行し、ストレージシステム20の各部を制御する装置である。主記憶41は、一時的なデータやプログラムをロードして保持する装置である。コントローラ間中継器42は、コントローラ40間の論理的な接続を行う装置である。Drive通信用プロトコル回路43は、コントローラとデータ記憶モジュール80とのプロトコル変換を行い、通信を制御するモジュールである。デバイス通信制御モジュール50は、仮想デバイス51とデバイス管理テーブル60を含み、PCIeのプロトコルにおいて、デバイスとしての機能を果たすモジュールである。なお、デバイス通信制御モジュール50の機能と構造、保持するデバイス管理テーブル60の詳細については、後に説明する。
SW(Switch)90は、PCIeのパケットをデータ交換する装置である。SW90は、データパケットの入出力のためのPort92とNBT−EP(Non Transparent Bride - EndPoint)91からなる。NBT−EP91は、PCIeプロトコルにおけるブリッジであり、論理的な終端点(エンドポイント)となる。
次に、図2を用いて、図1に示したデータ処理システムの内で、デバイス通信制御モジュールを中心にして、関連するその他のモジュールの構成と機能を詳細に説明する。
PCIeデバイスの通信経路は、図2に示されるように、CPU70のRP(Root Port)75aが起点となり、直接、またはSW90を介して、PCIeデバイス100へとつながる、木構造となっている。PCIeドメインに、RPは一つだけ存在する。SW90には、複数のPortが存在し、Portのうち、RP側につながるUSP(Up Stream Port)、PCIeデバイス100側のPortをDSP(Down Stream Port)と呼ぶ。USP、DSPは、PCIeプロトコルの扱いとしては、それぞれ論理的に、SW90として認識され、SW90の中で論理的に接続されている。図2の通信経路としては、CPU70のRP75a、SW90のUSP95が接続され、USP95とDSP96a、DSP96bがNTB−EP91を介して接続されている。NTB−EP(Non Transparent Bridge Endpoint)は、それぞれのPCIドメイン1、PCIドメイン2の中で、PCIeデバイスとして認識されている。
PCIeデバイスの通信経路は、図2に示されるように、CPU70のRP(Root Port)75aが起点となり、直接、またはSW90を介して、PCIeデバイス100へとつながる、木構造となっている。PCIeドメインに、RPは一つだけ存在する。SW90には、複数のPortが存在し、Portのうち、RP側につながるUSP(Up Stream Port)、PCIeデバイス100側のPortをDSP(Down Stream Port)と呼ぶ。USP、DSPは、PCIeプロトコルの扱いとしては、それぞれ論理的に、SW90として認識され、SW90の中で論理的に接続されている。図2の通信経路としては、CPU70のRP75a、SW90のUSP95が接続され、USP95とDSP96a、DSP96bがNTB−EP91を介して接続されている。NTB−EP(Non Transparent Bridge Endpoint)は、それぞれのPCIドメイン1、PCIドメイン2の中で、PCIeデバイスとして認識されている。
発明が解決しようとする課題の所でも説明したように、一般に、PCIeを使用したシステムでは、CPUがDeviceにアクセスする方法は、MMIOアクセスとCFGアクセスが存在する。
MMIOアクセスは、CPUからメモリアドレスを指定してRead/Writeするアクセス方式であり、デバイスの主たる機能(通信など)を実現するために使用する。CFGアクセスは、CPUからBus番号、Device番号、Function番号という三つの数字の組み合わせでデバイスを指定して、Read/Writeするアクセス方式で、デバイスのディスカバリや設定に使用する。CPUは、ディスカバリ時は可能なBus,Device,Function番号(BDF)の全組み合わせを使用してデバイスを探し、応答があったBDFのデバイスの初期化を行う。
したがって、NTB−EPで接続されたPCIeドメイン同士間では、MMIOアクセスは可能だが、CFGアクセスは不可能である。そのため、OSは通常の方法ではNTB−EPの先にあるPCIeデバイスを発見できない。これを解決するためには、NTBを意識した専用のデバイスドライバを製品ごとに個別に作成して、デバイスを使用する必要がある。
本実施形態は、PCIeデバイス100ごとに対応した仮想デバイスを有する、デバイス通信制御モジュール50を設けて、専用のデバイスドライバを用意しなくても、OSの標準的な機能のみで、異なったPCIeドメインに接続されたPCIeデバイスのアクセスを可能にするものである。
仮想デバイス51は、CPU70が外部ドメインのPCIeデバイス100にアクセスするために、デバイス通信制御モジュール50内に設けられる仮想的なデバイスである。デバイス管理テーブル60の一エントリが仮想デバイス51の各々と、PCIeデバイス100に対応して設定される。CPU70は、デバイス通信制御モジュール70内仮想デバイスにCFGアクセスを発行することにより、あたかも、PCIeデバイス100に、CFGアクセスを発行するのと同じ効果を得ることができる。
なお、デバイス通信制御モジュール70を用いたCFGアクセスとMMIOアクセスの詳細は、後に説明する。
なお、デバイス通信制御モジュール70を用いたCFGアクセスとMMIOアクセスの詳細は、後に説明する。
次に、図3を用いて本実施形態のデバイス通信制御に関連するメモリアクセスについて説明する。
ここで、図3に示されるように、PCIeドメイン1とPCIeドメイン2のメモリ空間をCPUからアクセスすることを考える。
ここで、図3に示されるように、PCIeドメイン1とPCIeドメイン2のメモリ空間をCPUからアクセスすることを考える。
上述のように、NTB−EPをまたいだPCIeドメイン間のアクセスは、MMIOアクセスのみ行うことができるが、NTBの両側で異なるメモリ空間となる。そのため、ある特定のメモリ領域に来たアクセスを反対のメモリ空間の特定のメモリ領域へのアクセスにするという、アドレス変換を行うことによりNTBをまたいだMMIOアクセスは行われる。アドレス変換をいかに行うかは、ファームウェアによるハードウェアの初期化段階に決定される。
PCIeデバイスは、自分のMMIOアドレス(デバイスが使用できるI/O空間、メモリ空間のタイプ、容量、位置を決定するアドレス)を、コンフィグレーションアドレス空間内のBase Address Regsterに、Base Addressとして保持しており、CPUは、CFGアクセスをすることにより、このMMIOアドレスを取得することができる。
しかしながら、図3の例では、PCIeデバイスが保持するMMIOアドレスは、ドメイン2のメモリ空間でのアドレスのため、CPUがそのアドレスにアクセスしてもPCIeデバイスにはアクセスできない。CPUが、PCIeデバイスにアクセスするためには、NTB−EPでのアドレス変換を考慮したうえでアクセスしなければならない。図3に示す例では、(CPUがアクセスするアドレス)−4GB=(PCIeデバイスのMMIOアドレス)。
従来技術では、プラットフォームごとに、OSがこのアドレス変換を認識したうえで、デバイスドライバを作りこむ必要があるため、プラットフォームが変わるたびにOSが対応をする必要があった。
しかしながら、図3の例では、PCIeデバイスが保持するMMIOアドレスは、ドメイン2のメモリ空間でのアドレスのため、CPUがそのアドレスにアクセスしてもPCIeデバイスにはアクセスできない。CPUが、PCIeデバイスにアクセスするためには、NTB−EPでのアドレス変換を考慮したうえでアクセスしなければならない。図3に示す例では、(CPUがアクセスするアドレス)−4GB=(PCIeデバイスのMMIOアドレス)。
従来技術では、プラットフォームごとに、OSがこのアドレス変換を認識したうえで、デバイスドライバを作りこむ必要があるため、プラットフォームが変わるたびにOSが対応をする必要があった。
次に、図3を用いてSWの提供するドメイン間のアドレスリダイレクト機能について説明する。
本実施形態のデバイス通信制御では、このドメイン間のアドレスリダイレクト機能を前提とするものである。
本実施形態のデバイス通信制御では、このドメイン間のアドレスリダイレクト機能を前提とするものである。
PCIeドメイン1に、別ドメインアクセス用空間を設ける。図3の例では、3GB(基底アドレス)から256MBの領域がその空間である。
PCIeデバイスのBus,Device,Function番号(BDF)に基づくオフセットを計算し、基底アドレス+オフセットを、CFG Base Addressとする。
そして、SW90のNTB−EP91(NTB−EP91は、ドメイン1からMMIOアクセスできることに注意)にMMIOアクセスするときには、CFG Base Addressを指定してアクセスする。NTB−EP91は、CFG Base Addressから、Bus,Device,Function番号(BDF)を算出し、該当のPCIeデバイスにCFGアクセスを行う。
次に、図4を用いてデバイス管理テーブルのデータ構造について説明する。
デバイス管理テーブル60は、デバイス通信制御モジュール50がアクセスするPCIeデバイスに関する情報を格納するテーブルであり、BIOSが装置の起動時に設定し、CPU70が、PCIeデバイス100にアクセスするときに、使用されるテーブルである。
デバイス管理テーブル60は、デバイス通信制御モジュール50がアクセスするPCIeデバイスに関する情報を格納するテーブルであり、BIOSが装置の起動時に設定し、CPU70が、PCIeデバイス100にアクセスするときに、使用されるテーブルである。
デバイス管理テーブル60は、図4に示されように、Device60a、Function60b、CFG Base Address60c、MMIO Base Address(1)60d、MMIO Base Address(2)60e、MMIO Base Address(3)60fの各フィールドよりなる。
Device60a、Function60bには、それぞれ、CFGアクセスに用いられ、PCIeデバイスを認識するDevice番号、Function番号が格納される。なお、同じデバイス通信制御モジュール50の中では、Bus番号は、固定のため、テーブルのデータとして持つ必要はない。
CFG Base Address60cには、ドメイン1からみたPCIeデバイスのCFG Base Addressが格納される。
MMIO Base Address(1)60d、MMIO Base Address(2)60e、MMIO Base Address(3)60fには、ドメイン1からみたPCIeデバイスのMMIO Base Addressが格納される。なお、MMIO Base Addressを複数有するのは、PCIeの規格でBase Addressを複数持つことが許容されているからである。
次に、図5ないし図12を用いてデバイス通信制御モジュールの処理について説明する。
先ず、図5を用いて装置の起動からPCIeデバイスを使用するまでの概要を説明する。
最初に、PCIeデバイスを使用した装置に電源が投入される(S1)。
次に、プラットフォームの初期化が行われる(S2)。ここで、プラットフォームとは、装置に使用されているPCIeデバイスのハードウェア、ソフトウェア環境である。プラットフォームの初期化は、後に、図6を用いて詳細に説明する。
最初に、PCIeデバイスを使用した装置に電源が投入される(S1)。
次に、プラットフォームの初期化が行われる(S2)。ここで、プラットフォームとは、装置に使用されているPCIeデバイスのハードウェア、ソフトウェア環境である。プラットフォームの初期化は、後に、図6を用いて詳細に説明する。
次に、オペレーティングシステムが起動される(S3)。
次に、デバイスドライバの初期化が行われる(S4)。このステップで、Base Address Regiter以外のCFGアクセス、Base Address RegiterへのCFGアクセス、MMIOアクセスのアクセスが行われる。なお、これらの処理の詳細は、後に説明する。
次に、PCIeデバイスが、オペレーティングシステム環境下で使用される(S5)。
次に、デバイスドライバの初期化が行われる(S4)。このステップで、Base Address Regiter以外のCFGアクセス、Base Address RegiterへのCFGアクセス、MMIOアクセスのアクセスが行われる。なお、これらの処理の詳細は、後に説明する。
次に、PCIeデバイスが、オペレーティングシステム環境下で使用される(S5)。
次に、図6を用いてプラットフォームの初期化の処理の詳細を説明する。
これは、図5のS2に該当する処理である。
先ず、BIOSとSW90のファームウェアそれぞれのPCIeドメインのPCIeの初期化を実行する(S201)。
これは、図5のS2に該当する処理である。
先ず、BIOSとSW90のファームウェアそれぞれのPCIeドメインのPCIeの初期化を実行する(S201)。
次に、BIOSは、SW90のNTB−EP91の変換アドレスを設定する(S202)。これにより、BIOSは、NTB−EP91経由でPCIeドメイン2のデバイスにアクセスできるようになる。
次に、BIOSは、Bus番号、Device番号、Function番号を使ってSW90の先に接続されているPCIeデバイス100にディスカバリ要求を発行する。PCIeデバイス100が存在する場合、PCIeデバイス100は、BIOSに応答を返信する(S204)。
次に、BIOSは、Bus番号、Device番号、Function番号を使ってSW90の先に接続されているPCIeデバイス100にディスカバリ要求を発行する。PCIeデバイス100が存在する場合、PCIeデバイス100は、BIOSに応答を返信する(S204)。
応答が返ってきた場合、BIOSは、PCIeデバイス100のMMIOベースアドレスを要求し(S205)、取得する(S206)。
そして、取得したMMIOベースアドレスと、設定したNTBの変換アドレスから、CPU70からみた各PCIeデバイス100のMMIOベースアドレスを計算し、また、デバイスのBus番号、Device番号、Function番号と別ドメインアクセス用空間の基底アドレスから、CFGベースアドレスを計算する(S207)。算出の仕方は、図3を用いて説明したものである。
最後に、BIOSは、デバイス通信制御モジュール50のデバイス管理テーブル60に、各PCIeデバイスの MMIOベースアドレス、CFGベースアドレスを書き込む(S208)。
次に、図7ないし図10を用いて、Base Address Regiter以外のCFGアクセスと、Base Address RegiterへのCFGアクセスを説明する。
これは、図5のS4で行われる処理である。
これは、図5のS4で行われる処理である。
先ず、図7および図8を用いて、Base Address Regiter以外のCFGアクセスについて説明する。
Base Address Regiter以外のCFGアクセスとは、例えば、PCIeデバイスのコンフィグ空間のDeviceIDやVendorIDを見つけにいくときに使用されるCFGアクセスである。
Base Address Regiter以外のCFGアクセスとは、例えば、PCIeデバイスのコンフィグ空間のDeviceIDやVendorIDを見つけにいくときに使用されるCFGアクセスである。
Base Address Regiter以外のCFGアクセスを行うために、先ず、CPU70が、仮想デバイス51にCFGアクセスを発行する(図7のS301、図8のReadのA301、WriteのA310)。
次に、デバイス通信制御モジュール50は、デバイス管理テーブル60のCFGベースアドレスを使って、NTB−EP91にMMIOアクセスを発行する(S302、A302、A311)。
次に、NTB−EP91は、PCIeデバイスに、CFGアクセスを発行する(S303、A303、A312)。
次に、PCIeデバイスは、CFGアクセスの応答をNTB−EP91に返信する(S304、A304)。
次に、NTB−EP91は、仮想デバイス51に、MMIOアクセスの応答を返信する(S305、A305)。
次に、NTB−EP91は、PCIeデバイスに、CFGアクセスを発行する(S303、A303、A312)。
次に、PCIeデバイスは、CFGアクセスの応答をNTB−EP91に返信する(S304、A304)。
次に、NTB−EP91は、仮想デバイス51に、MMIOアクセスの応答を返信する(S305、A305)。
そして、仮想デバイス51は、受け取ったMMIOアクセスの応答をCFGアクセスの応答としてCPU70に返信する(S306、A306、A313)。
なお、MMIOアクセスのWriteアクセスでは、仕様上、応答は返信されない。
なお、MMIOアクセスのWriteアクセスでは、仕様上、応答は返信されない。
次に、図9および図10を用いて、Base Address RegiterへのCFGアクセスについて説明する。
これは、コンフィグ空間内のBase Address RegiterからBase Addressを取得する処理である。
これは、コンフィグ空間内のBase Address RegiterからBase Addressを取得する処理である。
Base Address RegiterへのCFGアクセスを行うために、CPUは、仮想デバイス51に、BaseAddressを取得するためのCFGアクセスを発行する(図9のS401、図10のA401)。
次に、仮想デバイス51は、デバイス通信制御モジュール50のデバイス管理テーブル60に基づいて、CPU70に、PCIeデバイスのMMIOベースアドレスを返信する(S402、A402)。
次に、図11および図12を用いてPCIeデバイスへのMMIOアクセスについて説明する。
これは、図5のS5で行われる処理であり、CPU70が実際にPCIeデバイス100の機能を使用する処理である。この段階で、図7で示したBase Address Regiter以外のCFGアクセス、図9で示したBase Address RegiterへのCFGアクセスの処理により、CPU70は、PCIeデバイス100のBase Addressを取得済みである。
これは、図5のS5で行われる処理であり、CPU70が実際にPCIeデバイス100の機能を使用する処理である。この段階で、図7で示したBase Address Regiter以外のCFGアクセス、図9で示したBase Address RegiterへのCFGアクセスの処理により、CPU70は、PCIeデバイス100のBase Addressを取得済みである。
CPU70は、取得したPCIeデバイス100のMMIOベースアドレスを使って、NTB−EP91経由で、PCIeデバイス100にアクセスする(図11のS501、図12のReadのA501、A502、WriteのA510)。
PCIeデバイス100は、NTB−EP91経由で、CPU70に応答を返信する(S502、A503、A504)。
なお、ここでも、MMIOアクセスのWriteアクセスでは、仕様上、応答は返信されないことに留意する。
なお、ここでも、MMIOアクセスのWriteアクセスでは、仕様上、応答は返信されないことに留意する。
以上、本実施形態では、仮想デバイスを備える通信制御モジュールを設け、CPUは、PCIeデバイスに対応する仮想デバイスに対して、CFGアクセスを発行することにより、PCIeデバイスのMMIO Base Addressを得られるようにした。そのため、特別なデバイスドライバを用意しなくても、OSやハードウェアの環境によらず、BIOSの標準的な機能だけでも、使用できるようになる。
10…Host、20…ストレージシステム、30…データ通信モジュール、31…Host通信用プロトコル回路、40…コントローラ、41…主記憶、42…コントローラ間中継器、43…Drive通信用プロトコル回路、50…デバイス通信制御モジュール、51…仮想デバイス、60…デバイス管理テーブル、70…CPU(Central Processing Unit)、80…データ記憶モジュール、90…SW(Switch)、91…NBT−EP(Non Transparent Bride - EndPoint)、92…Port、100…PCIeデバイス、
Claims (5)
- CPU(Central Processing Unit)の属するPCIe(Peripheral Component Interconnect Express)ドメインと異なるPCIeドメインに接続されたPCIeデバイスにアクセスするためのI/O変換を行うデバイス通信制御モジュールであって、
前記デバイス通信制御モジュールは、
各PCIeデバイスに対応するCFGアドレスと、MMIOアドレスを保持するデバイス管理テーブルと、
各PCIeデバイスに対応する仮想デバイスとを有し、
前記CPUが仮想デバイスに対して、CFGアクセスを発行したときに、そのCFGアクセスの情報に基づいて、前記CPUに各PCIeデバイスに対応するMMIOアドレスを返信することを特徴とするデバイス通信制御モジュール。 - 前記CPUが仮想デバイスに対して、CFGアクセスを発行したときに、そのCFGアクセスの情報に基づいて、ドメイン間を接続するNTB−EP(Non Transparent Bridge Endpoint)に、MMIOアクセスを発行し、前記NTB−EPから返信されたMMIOアクセスの応答を、前記仮想デバイスへのCFGアクセスの応答として、前記CPUに返信することを特徴とする請求項1記載のデバイス通信制御モジュール。
- 前記各PCIeデバイスに対応するCFGアドレスは、各PCIeデバイスのBus番号、Device番号、Function番号と、別ドメイン空間にリダイレクトするための特定エリアのアドレスとから生成されることを特徴とする請求項1記載のデバイス通信制御モジュール。
- CPU(Central Processing Unit)の属するPCIe(Peripheral Component Interconnect Express)ドメインと異なるPCIeドメインに接続されたPCIeデバイスにアクセスするためのI/O変換を行うデバイス通信制御方法であって、
前記デバイス通信制御モジュールが、各PCIeデバイスに対応するCFGアドレスを、各PCIeデバイスのBus番号、Device番号、Function番号と、別ドメイン空間にリダイレクトするための特定エリアのアドレスとから生成して、デバイス管理テーブルに設定するステップと、
前記デバイス通信制御モジュールが、各PCIeデバイスに対応するMMIOアドレスを設定するステップと、
前記CPUが仮想デバイスに対して、CFGアクセスを発行したときに、前記デバイス通信制御モジュールが、そのCFGアクセスの情報に基づいて、前記CPUに各PCIeデバイスに対応するMMIOアドレスを返信するステップとを有することを特徴とするデバイス通信制御方法。 - さらに、前記CPUが仮想デバイスに対して、CFGアクセスを発行したときに、前記デバイス通信制御モジュールが、そのCFGアクセスの情報に基づいて、ドメイン間を接続するNTB−EP(Non Transparent Bridge Endpoint)に、MMIOアクセスを発行し、前記NTB−EPから返信されたMMIOアクセスの応答を、前記仮想デバイスへのCFGアクセスの応答として、前記CPUに返信するステップを有することを特徴とする請求項4記載のデバイス通信制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019075021A JP2020173603A (ja) | 2019-04-10 | 2019-04-10 | デバイス通信制御モジュールおよびデバイス通信制御方法 |
US16/808,913 US20200327091A1 (en) | 2019-04-10 | 2020-03-04 | Device communication control module and device communication control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019075021A JP2020173603A (ja) | 2019-04-10 | 2019-04-10 | デバイス通信制御モジュールおよびデバイス通信制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020173603A true JP2020173603A (ja) | 2020-10-22 |
Family
ID=72749338
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019075021A Pending JP2020173603A (ja) | 2019-04-10 | 2019-04-10 | デバイス通信制御モジュールおよびデバイス通信制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20200327091A1 (ja) |
JP (1) | JP2020173603A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113194161B (zh) | 2021-04-26 | 2022-07-08 | 山东英信计算机技术有限公司 | 一种服务器系统mmioh基地址的设置方法、装置 |
-
2019
- 2019-04-10 JP JP2019075021A patent/JP2020173603A/ja active Pending
-
2020
- 2020-03-04 US US16/808,913 patent/US20200327091A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20200327091A1 (en) | 2020-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10241951B1 (en) | Device full memory access through standard PCI express bus | |
EP3629186B1 (en) | Method and apparatus for extending pcie domain | |
US8645605B2 (en) | Sharing multiple virtual functions to a host using a pseudo physical function | |
US8645594B2 (en) | Driver-assisted base address register mapping | |
JP5315209B2 (ja) | 冗長構成を生成するための周辺機器相互接続入出力仮想化デバイスの使用 | |
US9223734B2 (en) | Switch with synthetic device capability | |
US9423958B2 (en) | System and method for managing expansion read-only memory and management host thereof | |
US8458368B2 (en) | System and method for discovering and protecting shared allocated resources in a shared virtualized I/O device | |
KR20060045489A (ko) | 구성가능 pci 익스프레스 스위치 및 그 제어 방법 | |
KR20100067067A (ko) | 이종 프로세싱 유닛들 사이의 불균일 메모리 액세스를 위한 칩셋 서포트 | |
US11983136B2 (en) | PCIe device and operating method thereof | |
JP5011584B2 (ja) | ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移行するためのチップセットサポート | |
US20220327080A1 (en) | PCIe DEVICE AND OPERATING METHOD THEREOF | |
US11119704B2 (en) | System, apparatus and method for sharing a flash device among multiple masters of a computing platform | |
US9047264B2 (en) | Low pin count controller | |
US11467776B1 (en) | System supporting virtualization of SR-IOV capable devices | |
US11467998B1 (en) | Low-latency packet processing for network device | |
JP2010218449A (ja) | リソース割り当てシステム、及びリソース割り当て方法 | |
JP2020173603A (ja) | デバイス通信制御モジュールおよびデバイス通信制御方法 | |
US8527745B2 (en) | Input/output device including a host interface for processing function level reset requests and updating a timer value corresponding to a time until application hardware registers associated with the function level reset requests are available | |
US20230350824A1 (en) | Peripheral component interconnect express device and operating method thereof | |
US20240126469A1 (en) | Apparatus and method for controlling a pooled memory device or a memory expander | |
JP5469085B2 (ja) | Mraスイッチを備えるサーバ装置 | |
CN116450547A (zh) | 将非PCIe加速器连接为PCIe设备 | |
JP2011248551A (ja) | アクセス制御装置 |