JP6607332B1 - 中継装置、プログラム、及び情報処理システム - Google Patents

中継装置、プログラム、及び情報処理システム Download PDF

Info

Publication number
JP6607332B1
JP6607332B1 JP2019092099A JP2019092099A JP6607332B1 JP 6607332 B1 JP6607332 B1 JP 6607332B1 JP 2019092099 A JP2019092099 A JP 2019092099A JP 2019092099 A JP2019092099 A JP 2019092099A JP 6607332 B1 JP6607332 B1 JP 6607332B1
Authority
JP
Japan
Prior art keywords
address
information processing
address space
area
processing apparatus
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.)
Active
Application number
JP2019092099A
Other languages
English (en)
Other versions
JP2020187571A (ja
Inventor
中山 雄二
雄二 中山
木村 真敏
真敏 木村
智弘 石田
智弘 石田
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.)
Fujitsu Client Computing Ltd
Original Assignee
Fujitsu Client Computing 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 Fujitsu Client Computing Ltd filed Critical Fujitsu Client Computing Ltd
Priority to JP2019092099A priority Critical patent/JP6607332B1/ja
Application granted granted Critical
Publication of JP6607332B1 publication Critical patent/JP6607332B1/ja
Priority to GB2004084.6A priority patent/GB2584937B/en
Priority to US16/837,361 priority patent/US20200364153A1/en
Priority to CN202010268698.0A priority patent/CN111949573A/zh
Publication of JP2020187571A publication Critical patent/JP2020187571A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/404Coupling between buses using bus bridges with address mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1072Decentralised address translation, e.g. in distributed shared memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Bus Control (AREA)
  • Advance Control (AREA)
  • Storage Device Security (AREA)
  • Memory System (AREA)

Abstract

【課題】非公開の領域が公開されてしまうことを防止する。【解決手段】中継装置は、複数のエンドポイントを有し、エンドポイントに接続されたルートコンプレックスを有する複数の情報処理装置間でのバスを介した通信を中継する中継装置であって、要求部と、変換部と、を備える。要求部は、情報処理装置ごとに設けられた、情報処理装置が公開するメモリ空間上の公開領域にアクセスさせるためのアクセス情報を含む情報が設定される設定領域に、アクセスするためのアドレス空間のうち、1の情報処理装置の設定領域にアクセスするためのアドレス空間以下のアドレス空間を要求する。変換部は、要求部が要求したアドレス空間のアドレスと、設定領域のアドレスとが対応付けられた変換規則であって、情報処理装置が書き換えることができない領域に設けられた当該変換規則に基づいて、情報処理装置から入力されたアドレスを変換する。【選択図】図2

Description

本発明は、中継装置、プログラム、及び情報処理システムに関する。
従来、複数の情報処理装置を用いて並列計算を行なう手法が知られている。例えば、イーサネット(登録商標)回線を用いて情報処理装置間でデータのやりとりを行う情報処理システムが提案されている。
このような情報処理システムでは、各情報処理装置のメモリ空間のうち、公開するメモリ空間をそれぞれの情報処理装置が設定する。
特開2005−275818号公報 特開2017−004554号公報
しかしながら、各情報処理装置が他の情報処理装置が公開するメモリ空間を任意に変更可能な場合、非公開の領域が公開されてしまうおそれがある。
本発明は、上記に鑑みてなされたものであって、非公開の領域が公開されてしまうことを防止することを目的とする。
本発明の第1態様に係る中継装置は、複数のエンドポイントを有し、前記エンドポイントに接続されたルートコンプレックスを有する複数の情報処理装置間でのバスを介した通信を中継する中継装置であって、要求部と、変換部と、を備える。前記要求部は、前記情報処理装置ごとに設けられた、複数の前記情報処理装置のそれぞれが公開するメモリ空間上の公開領域にアクセスさせるためのアクセス情報を含む情報が設定される設定領域にアクセスするためのアドレスの範囲を示す第1アドレス空間のうち、1の前記情報処理装置の前記設定領域にアクセスするためのアドレスの範囲を示す第2アドレス空間の全部又は一部からなる第3アドレス空間の取得を要求する。前記変換部は、前記要求部が要求した前記第3アドレス空間のアドレスと、前記設定領域のアドレスとが対応付けられた変換規則であって、前記情報処理装置が書き換えることができない領域に設けられた当該変換規則に基づいて、前記情報処理装置から入力されたアドレスを変換する。
本発明の第2態様に係るプログラムは、複数のエンドポイントを有し、前記エンドポイントに接続されたルートコンプレックスを有する複数の情報処理装置間でのバスを介した通信を中継する中継装置を、要求部と、変換規則設定部と、して機能させる。前記要求部は、前記情報処理装置ごとに設けられた、複数の前記情報処理装置のそれぞれが公開するメモリ空間上の公開領域にアクセスさせるためのアクセス情報を含む情報が設定される設定領域にアクセスするためのアドレスの範囲を示す第1アドレス空間のうち、1の前記情報処理装置の前記設定領域にアクセスするためのアドレスの範囲を示す第2アドレス空間の全部又は一部からなる第3アドレス空間の取得を要求する。前記変換規則設定部は、前記要求部が要求した前記第3アドレス空間のアドレスと、前記設定領域のアドレスとが対応付けられた変換規則を設定する。
本発明の第3態様に係る情報処理システムは、複数の情報処理装置と、複数のエンドポイントを有し、前記エンドポイントに接続されたルートコンプレックスを有する複数の前記情報処理装置間でのバスを介した通信を中継する中継装置とを備える情報処理システムである。前記情報処理装置は、前記情報処理装置が公開する公開領域にアクセスさせるためのアクセス情報を設定させる設定部を備える。前記中継装置は、要求部と、変換部と、を備える。前記要求部は、前記情報処理装置ごとに設けられた、複数の前記情報処理装置のそれぞれが公開するメモリ空間上の公開領域にアクセスさせるためのアクセス情報を含む情報が設定される設定領域にアクセスするためのアドレスの範囲を示す第1アドレス空間のうち、1の前記情報処理装置の前記設定領域にアクセスするためのアドレスの範囲を示す第2アドレス空間の全部又は一部からなる第3アドレス空間の取得を要求する。前記変換部は、前記要求部が要求した前記第3アドレス空間のアドレスと、前記設定領域のアドレスとが対応付けられた変換規則であって、前記情報処理装置が書き換えることができない領域に設けられた当該変換規則に基づいて、前記情報処理装置から入力されたアドレスを変換する。
本発明にかかる中継装置、プログラム、及び情報処理システムは、非公開の領域が公開されてしまうことを防止するという効果を奏する。
図1は、実施例1にかかる分散型コンピュータの全体構成の一例を示す図である。 図2は、実施例1にかかる分散型コンピュータのハードウェア構成を説明する図である。 図3は、プラットフォームAからプラットフォームCへ通信に伴うアドレス変換の一例を説明する図である。 図4は、実施例1にかかる設定処理の一例を示すシーケンス図である。 図5は、実施例2にかかる分散型コンピュータのハードウェア構成を説明する図である。
以下に、本発明にかかる中継装置、プログラム、及び情報処理システムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
図1は、実施例1にかかる分散型コンピュータ1の全体構成の一例を示す図である。分散型コンピュータ1は、複数のプラットフォームA10−1〜プラットフォームH10−8と、複数のエンドポイントを有し、エンドポイントに接続されたルートコンプレックスを有する複数のプラットフォームA10−1〜プラットフォームH10−8間でのバスを介した通信を中継するPCIeブリッジコントローラ30とを備える情報処理システムである。図1に示すように、実施例にかかる分散型コンピュータ1は、プラットフォームA10−1〜プラットフォームH10−8と、PCIeブリッジコントローラ30とを備えている。
プラットフォームA10−1〜プラットフォームH10−8は、PCIeブリッジコントローラ30を介して、通信可能に接続されている。プラットフォームA10−1〜プラットフォームH10−8は、例えば、PCIeブリッジコントローラ30が設けられたボード上のスロットに挿入されていてよい。尚、複数のスロットのうち、いずれかのスロットは、ノードが挿入されていない空き状態であってもよい。以下の説明では、各プラットフォームA10−1〜プラットフォームH10−8を区別する必要がなく、任意のノードを示す場合には、プラットフォーム10と記載する。
プラットフォームA10−1は、プラットフォームB10−2〜プラットフォームH10−8を管理して、プラットフォームB10−2〜プラットフォームH10−8に各種処理を実行させるメインの情報処理装置である。
プラットフォームB10−2〜プラットフォームH10−8は、プラットフォームA10−1の要求に基づいて、例えばAI(Artificial Intelligence)推論処理や画像処理等を実行するサブの情報処理装置である。
また、プラットフォームA10−1〜プラットフォームH10−8は、プロセッサ11−1〜11−8を備える。また、各プロセッサ11−1〜11−8は、それぞれアーキテクチャが異なっていてもよい。また、各プロセッサ11−1〜11−8は、それぞれ異なるメーカから提供されていてもよいし、同一のメーカから提供されていてもよい。以下の説明では、プロセッサ11−1〜11−8を区別する必要がなく、任意のプロセッサを示す場合には、プロセッサ11と記載する。
プロセッサ11は、プラットフォーム10全体を制御する。プロセッサ11は、マルチプロセッサであってもよい。また、プロセッサ11は、例えばCPU(Central Processing Unit),MPU(Micro Processing Unit),GPU(Graphics Processing Unit),DSP(Digital Signal Processor),ASIC(Application Specific Integrated Circuit),PLD(Programmable Logic Device),FPGA(Field Programmable Gate Array)のいずれか一つであってもよい。また、プロセッサ11は、CPU,MPU,GPU,DSP,ASIC,PLD,FPGAのうちの2種類以上の要素の組み合わせであってもよい。
プラットフォーム10は、ホスト側として動作可能なルートコンプレックス(RC:Root Complex)としての機能を有する。PCIeブリッジコントローラ30は、中継装置の一例である。PCIeブリッジコントローラ30は、複数のエンドポイント(EP:End Point)を有し、エンドポイントに接続されたルートコンプレックスを有する複数のプラットフォーム10間でのバスを介した通信を中継する。また、PCIeブリッジコントローラ30は、プラットフォーム10と接続されるATU(Address Translation Unit)及びスロット等を含む複数のエンドポイントとしての機能を有する。ルートコンプレックス及びエンドポイントは、例えばPCIeのルートコンプレックス及びエンドポイントであってよい。これにより、データ転送がプラットフォーム10とPCIeブリッジコントローラ30との間で行なわれる。
さらに詳しくは、PCIeブリッジコントローラ30は、複数のエンドポイントを有している。また、プラットフォーム10は、PCIeブリッジコントローラ30のエンドポイントに接続されるルートコンプレックスを有している。すなわち、PCIeブリッジコントローラ30が有する複数のエンドポイントのそれぞれには、各プラットフォーム10が有するルートコンプレックスが接続される。そして、PCIeブリッジコントローラ30は、内部に設けられたバスを制御して、エンドポイント間のデータ転送を実行する。このようにして、PCIeブリッジコントローラ30は、プラットフォームA10−1〜プラットフォームH10−8の間での通信を中継してデータ転送を実現する。
次に、PCIeブリッジコントローラ30を介した通信におけるアドレス変換について説明する。図2は、実施例1にかかる分散型コンピュータ1のハードウェア構成を説明する図である。
PCIeブリッジコントローラ30は、プロセッサ31と、メモリ32と、各プラットフォーム10が接続するスロットごとのATU33−1〜33−8とを備える。
プロセッサ31は、PCIeブリッジコントローラ30全体を制御する。プロセッサ11は、マルチプロセッサであってもよい。また、プロセッサ11は、例えばCPU,MPU,GPU,DSP,ASIC,PLD,FPGAのいずれか一つであってもよい。また、プロセッサ11は、CPU,MPU,GPU,DSP,ASIC,PLD,FPGAのうちの2種類以上の要素の組み合わせであってもよい。
メモリ32は、ROM(Read Only Memory)、及びRAM(Random Access Memory)を含む記憶装置である。ROMには、各種ソフトウェアプログラムやこのプログラム用のデータ類が書き込まれている。メモリ32に記憶されたプログラム321は、プロセッサ31に読み込まれて実行される。また、RAMは、ワーキングメモリとして利用される。
また、プロセッサ31は、メモリ32に記憶されるプログラム321を実行することによって、図2に示す機能を実現する。具体的には、プロセッサ31は、機能として、アドレス空間要求部311、及びアドレス変換設定部312を備える。
アドレス空間要求部311は、要求部の一例である。アドレス空間要求部311は、プラットフォーム10ごとに設けられた、プラットフォーム10が公開するメモリ空間上の公開領域にアクセスさせるためのアクセス情報を含む情報が設定されるDBI(Data Bus Interface)37−1〜37−8に、アクセスするためのアドレス空間のうち、1のプラットフォーム10のDBI37−1〜37−8にアクセスするためのアドレス空間以下のアドレス空間を要求する。すなわち、アドレス空間要求部311は、各プラットフォーム10が自装置の設定を有するDBI37−1〜37−8にアクセスするためのアドレス空間以下のアドレス空間をBAR(Base Address Register)2として要求する。
ここで、公開領域とは、各プラットフォーム10が公開する領域であって、他のプラットフォーム10が書き込みや読み出しを実行可能な領域である。例えば、バッファエリア等のメモリが公開領域に指定される。そして、公開領域は、プラットフォーム10自身によって指定される。アクセス情報とは、プラットフォーム10が指定した公開領域にアクセスさせるための情報である。例えば、アクセス情報とは、公開領域のアドレスであってもよいし、入力されたアドレスを公開領域のアドレスに変換する変換規則であってもよいし、これら以外の情報であってもよい。DBI37−1〜37−8は、各プラットフォーム10の設定が記憶される領域である。以下の説明では、DBI37−1〜37−8を区別する必要がなく、任意のDBIを示す場合には、DBI37と記載する。
更に詳しくは、アドレス空間要求部311は、BAR2よりDBI37にアクセスするためのアドレス空間として、プラットフォーム10ごとに設けられたDBI37のうち、1のプラットフォーム10のDBI37にアクセスするためのアドレス空間を要求する。BAR2は、DBI37にアクセスするためのベースアドレスが設定されたレジスタである。すなわち、アドレス空間要求部311は、アドレス空間を制限することで、他のDBI37を指定不可にする。
アドレス変換設定部312は、変換規則設定部の一例である。アドレス変換設定部312は、アドレス変換の変換規則をアドレス変換情報36−1〜36−8に設定する。例えば、アドレス変換設定部312は、アドレス空間要求部311が要求したアドレス空間のアドレスと、DBI37のアドレスとが対応付けられた変換規則をアドレス変換情報36−1〜36−8に設定する。
ATU33−1〜33−8は、各プラットフォーム10が接続されたスロットごとに設けられている。ATU33−1〜33−8は、各プラットフォーム10から入力されたアドレス、又はプラットフォーム10に出力されたアドレスを変換する。以下の説明では、各ATU33−1〜33−8を区別する必要がなく、任意のATU33−1〜33−8を示す場合には、ATU33と記載する。
ATU33は、例えばアドレス変換情報36−1〜36−8等のアドレスの変換規則に基づいてアドレスを変換するレジスタ回路である。また、ATU33は、ASIC,PLD,FPGAのいずれか一つであってもよい。また、ATU33は、ASIC,PLD,FPGAのうちの2種類以上の要素の組み合わせであってもよい。さらに、ATU33は、プロセッサ31がメモリ32に記憶されるプログラム321を実行することによって実現される機能部であってもよい。
ここで、各プラットフォーム10は、プラットフォーム10間で異なるメモリアドレス空間にアクセスする場合、ベースアドレスが設定されているBAR0を経由してアクセスする。しかしながら、BAR0のアドレス空間の上位bitはスロット番号に割り当てられているため、データの読み書きに使うアドレスは制限されてしまう。そのため、アドレスのbit数制限により上位空間へアクセスできない問題が生じてしまう。そこで、ATU33は、この制限を回避するためにアドレス変換を実行し、各プラットフォーム10の任意のメモリアドレスにアクセスできるようにする。同様に、ATU33は、PCIeブリッジコントローラ30の任意のアドレスにアクセスできるようにする。
また、ATU33−1〜ATU33−8は、略同一の構成であるため、ATU33−1を例に説明する。但し、アドレス変換情報36−1〜36−8には、プラットフォームA10−1〜プラットフォームH10−8のそれぞれに応じたアドレス変換規則が設定されている。また、DBI37−1〜DBI37−1には、プラットフォームA10−1〜プラットフォームH10−8のそれぞれに応じた公開領域にアクセスさせるためのアクセス情報が設定されている。
ATU33−1は、入力アドレス変換部34−1、出力アドレス変換部35−1、アドレス変換情報36−1、及びDBI37−1を備える。入力アドレス変換部34−1及び出力アドレス変換部35−1は、CPU,MPU,GPU,DSP,ASIC,PLD,FPGA等によって実現されてよい。
アドレス変換情報36−1は、プラットフォームA10−1から出力されたアドレスを、PCIeブリッジコントローラ30のアドレス空間におけるアドレスに変換する変換規則が設定されている。さらに、アドレス変換情報36−1は、プラットフォーム10がアクセスすることができない領域としてDBI37−1以外の領域に設けられている変換規則の例とする。すなわち、アドレス変換情報36−1は、プラットフォーム10が書き換えることができない領域に設けられている。
DBI37−1は、プラットフォームA10−1〜プラットフォームH10−8のそれぞれに応じた公開領域にアクセスさせるためのアクセス情報を含む情報が設定される設定領域である。
入力アドレス変換部34−1は、変換部の一例である。入力アドレス変換部34−1は、アドレス空間要求部311が要求したアドレス空間のアドレスと、DBI37−1のアドレスとが対応付けられたアドレス変換情報36−1であって、プラットフォーム10が書き換えることができない領域に設けられたアドレス変換情報36−1に基づいて、プラットフォームA10−1から入力されたアドレスを変換する。
さらに詳しくは、アドレス空間要求部311は、DBI37−1にアクセスするアドレスのアドレス空間をプラットフォームA10−1に要求する。これにより、プラットフォームA10−1は、BAR2において、要求されたアドレス空間のアドレスを、DBI37−1にアクセスするためのアドレスと定義する。但し、プラットフォームA10−1が定義したアドレスは、プラットフォームA10−1のアドレス空間のアドレスである。そこで、入力アドレス変換部34−1は、プラットフォームA10−1のアドレス空間におけるDBI37−1のアドレスが入力された場合に、PCIeブリッジコントローラ30のアドレス空間のDBI37−1のアドレスに変換する。この時、入力アドレス変換部34−1は、アドレスの変換規則が規定されたアドレス変換情報36−1に基づいて、プラットフォームA10−1から入力されたアドレスを変換する。
出力アドレス変換部35−1は、DBI37−1に基づいて、PCIeブリッジコントローラ30から出力されるアドレスを、プラットフォーム10のアドレス空間に対応したアドレスに変換する。
次に、プラットフォーム10について説明する。また、プラットフォームA10−1〜プラットフォームH10−8は、略同一の構成であるため、プラットフォームA10−1を例に説明する。
プラットフォームA10−1は、プロセッサ11−1と、メモリ12−1と、Tx13−1と、Rx14−1とを備える。
メモリ12−1は、ROM、及びRAMを含む記憶メモリである。ROMには、各種ソフトウェアプログラムやこのプログラム用のデータ類が書き込まれている。メモリ12−1に記憶されたプログラム121−1は、プロセッサ11−1に読み込まれて実行される。また、RAMは、ワーキングメモリとして利用される。
Tx13−1は、アドレスやデータを送信する回路である。Rx13−1は、アドレスやデータを受信する回路である。
また、プロセッサ11−1は、メモリ12−1に記憶されるプログラム121−1を実行することによって、図2に示す機能を実現する。具体的には、機能部として、アドレス空間設定部111−1、及び公開領域設定部112−1を備える。
アドレス空間設定部111−1は、BAR2のアドレス空間を設定する。更に詳しくは、アドレス空間設定部111−1は、PCIeブリッジコントローラ30の接続を検出した場合に、BAR2として設定可能な最大アドレス空間を示す情報をPCIeブリッジコントローラ30に送信する。PCIeブリッジコントローラ30は、応答として、1のDBI37−1にアクセス可能なアドレス空間以下のアドレス空間を指定する。そこで、アドレス空間設定部111−1は、指定されたアドレス空間をBAR2のアドレス空間として設定する。
公開領域設定部112−1は、設定部の一例である。公開領域設定部112−1は、自装置であるプラットフォームA10−1が公開する公開領域にアクセスさせるためのアクセス情報をDBI37−1に設定する。更に詳しくは、公開領域設定部112−1は、公開領域にアクセスさせるためのアクセス情報の設定要求をPCIeブリッジコントローラ30に送信する。PCIeブリッジコントローラ30は、要求されたアクセス情報をDBI37−1に設定する。これにより、公開領域設定部112−1は、公開領域にアクセスさせるためのアクセス情報をDBI37−1に設定する。
次に、PCIeブリッジコントローラ30を介した通信におけるアドレス変換について説明する。図3は、プラットフォームA10−1からプラットフォームC10−3への通信に伴うアドレス変換の一例を説明する図である。
まず、図3を用いて、DBI37−1に対する書き込みについて説明する。
プラットフォームA10−1は、DBI37−1に対して書き込みを実行する場合、BAR2のアドレス空間を指定する。ここで、プラットフォームA10−1のBAR2のアドレス空間は、1のDBI37−1を指定可能なアドレス空間以下になっている。そのため、プラットフォームA10−1は、自装置以外のDBI37−1を指定することができないようになっている。
プラットフォームA10−1は、BAR2を指定することで自装置のDBI37−1のアドレスを指定したライト要求をTx13−1から送信する。
入力アドレス変換部34−1は、ライト要求を受信した場合に、アドレス変換情報36−1に基づいて、ライト要求のアドレスをPCIeブリッジコントローラ30のアドレス空間のアドレスに変換する。例えば、入力アドレス変換部34−1は、DBI37−1のアドレスに変換する。すなわち、図3の矢印が示すように、入力アドレス変換部34−1は、プラットフォームA10−1のアドレス空間のアドレスを、PCIeブリッジコントローラ30のアドレス空間のアドレスに変換する。
アドレス空間要求部311は、入力アドレス変換部34−1が変換後のアドレスに基づいて、ライト要求により要求されたライトデータをDBI37−1に書き込む。
次に、図3を用いて、プラットフォーム10のバッファエリア等のメモリ空間上の公開領域に対する書き込みについて説明する。
プラットフォームA10−1は、他のプラットフォームB10−2〜プラットフォームH10−8の何れかのバッファエリア等のメモリ空間上の公開領域に書き込みを実行する場合、BAR0における対象のプラットフォーム10のアドレスを指定してライト要求をTx13−1から送信する。
入力アドレス変換部34−1は、ライト要求を受信した場合に、アドレス変換情報36−1に基づいて、PCIeブリッジコントローラ30のアドレス空間にライト要求のアドレスを変換する。
PCIeブリッジコントローラ30のプロセッサ31は、入力アドレス変換部34−1が変換後のアドレスに基づいて、ライト要求を誘導する。例えば、プロセッサ31は、プラットフォームC10−3に対するライト要求の場合、プラットフォームC10−3に対応したATU33−3にライト要求を誘導する。
ATU33−3の出力アドレス変換部35−3は、ライト要求を受信した場合に、DBI37−3に基づいて、プラットフォームC10−3のバッファエリア等のメモリ空間上の公開領域に対応したアドレスにライト要求のアドレスを変換する。すなわち、図3の矢印が示すように、出力アドレス変換部35−3は、PCIeブリッジコントローラ30のアドレス空間のアドレスを、プラットフォームC10−3のアドレス空間のアドレスに変換する。このようにして、分散型コンピュータ1は、プラットフォーム10間での書き込みを実行する。
次に、分散型コンピュータ1による設定処理について説明する。図4は、実施例1にかかる設定処理の一例を示すシーケンス図である。なお、図4では、プラットフォームA10−1の場合を例に説明するが、プラットフォームB10−2〜プラットフォームH10−8でも同様の処理を実行する。
プラットフォーム10のアドレス空間設定部111−1は、PCIeブリッジコントローラ30が接続されたことを検出する(ステップS1)。
アドレス空間設定部111−1は、BAR2として受入可能な最大アドレス空間を示す情報をPCIeブリッジコントローラ30に送信する(ステップS2)。
アドレス空間要求部311は、1のDBI37−1を指定可能なアドレス空間をBAR2として設定するように要求する(ステップS3)。
アドレス空間設定部111−1は、指定されたアドレス空間をBAR2として設定する(ステップS4)。
アドレス変換設定部312は、プラットフォーム10に応じたアドレス変換の変換規則をアドレス変換情報36−1に設定する(ステップS5)。
公開領域設定部112−1は、バッファエリア等のメモリ空間上の公開領域にアクセスさせるためのアクセス情報をDBI37−1に設定するように要求する(ステップS6)。
アドレス変換設定部312は、指定されたアクセス情報をDBI37−1に設定する(ステップS7)。これにより、出力アドレス変換部35−1は、DBI37−1に基づいてアドレスを変換することで、バッファエリア等の公開領域のアドレスをプラットフォーム10に送信することができる。
以上のように、実施例1にかかる分散型コンピュータ1によれば、PCIeブリッジコントローラ30のアドレス空間要求部311は、BAR2のアドレス空間として、1のプラットフォーム10のDBI37−1〜37−8にアクセスするためのアドレス空間以下のアドレス空間を要求する。すなわち、アドレス空間要求部311は、プラットフォーム10が自装置のDBI37−1〜37−8にアクセスすることができるだけのアドレス空間を要求する。ここで、入力アドレス変換部34−1〜34−8は、アドレス変換情報36−1〜36−8に基づいて、アドレスを変換している。そのため、プラットフォーム10は、BAR2のアドレス空間が制限されても、アドレス変換情報36−1〜36−8を書き換えることで、BAR2のアドレス空間のアドレスと、他のプラットフォーム10のDBI37−1〜37−8のアドレスとが対応付けることができてしまう。そこで、アドレス変換情報36−1〜36−8は、プラットフォーム10がアクセスすることができない領域に記憶される。このようにして、PCIeブリッジコントローラ30は、プラットフォーム10が他のプラットフォーム10のDBI37−1〜37−8にアクセスすることが出来なくなるようにしている。よって、PCIeブリッジコントローラ30は、非公開の領域が公開されてしまうことを防止することができる。
実施例1では、DBI37−1〜37−8からアドレス変換情報36−1〜36−8を取り除き、プラットフォーム10がアクセスできない領域にアドレス変換情報36−1〜36−8を記憶させた。これにより、プラットフォーム10によるアドレス変換情報36−1〜36−8の変更を防止すると説明した。実施例2では、実施例1とは異なる方法によりアドレス変換情報36−1〜36−8の変更を防止する。なお、重複する構成要素は、同じ符号を用いて説明する。
図5は、実施例2にかかる分散型コンピュータ1aのハードウェア構成を説明する図である。実施例2にかかるATU33−1a〜33−8aでは、アドレス変換情報36−1a〜36−8aは、DBI37−1a〜37−8aに記憶されている。すなわち、DBI37−1a〜37−8aには、変換規則の一例であるアドレス変換情報36−1a〜36−8aが設定されている設定領域の例とする。
ここで、実施例1に係るアドレス空間要求部311は、1のプラットフォーム10のDBI37−1〜37−8を指定可能なアドレス空間以下のアドレス空間を要求していた。実施例2に係るアドレス空間要求部311aは、1のプラットフォーム10のDBI37−1〜37−8を指定可能なアドレス空間以下であって、アドレス変換情報36−1a〜36−8aが設定されている領域を除いたアドレス空間を要求する。すなわち、アドレス空間要求部311aは、アドレス変換情報36−1a〜36−8aを除いた残りの領域を指定可能なアドレス空間を要求する。
そのため、プラットフォームA10−1のアドレス空間設定部111−1は、BAR2のアドレス空間として、1のプラットフォーム10のDBI37−1〜37−8を指定可能なアドレス空間以下であって、且つアドレス変換情報36−1aが設定されている領域を除いたアドレス空間を設定する。これにより、アドレス空間要求部311aは、他のプラットフォーム10のDBI37−2a〜37−8aだけでなく、アドレス変換情報36−1aも隠蔽することができる。
以上のように、実施例2にかかるアドレス空間要求部311aは、他のプラットフォーム10のDBI37−2a〜37−8aだけでなく、アドレス変換情報36−1aも隠蔽する。よって、PCIeブリッジコントローラ30は、非公開の領域が公開されてしまうことを防止することができる。
上述の実施形態では、各部のバス(例えば、拡張バス)又はI/OインタフェースとしてPCIeを例に挙げて説明したが、バスまたはI/OインタフェースはPCIeに限定されない。例えば、各部のバスまたはI/Oインタフェースは、データ転送バスによって、デバイス(周辺制御コントローラ)とプロセッサとの間でデータ転送を行える技術であればよい。データ転送バスは、1個の筐体等に設けられたローカルな環境(例えば、1つのシステム又は1つの装置)で高速にデータを転送できる汎用のバスであってもよい。I/Oインタフェースは、パラレルインタフェース及びシリアルインタフェースの何れであってもよい。
I/Oインタフェースは、シリアル転送の場合、ポイント・ツー・ポイント接続ができ、データをパケットベースで転送可能な構成でよい。なお、I/Oインタフェースは、シリアル転送の場合、複数のレーンを有してよい。I/Oインタフェースのレイヤー構造は、パケットの生成及び復号を行うトランザクション層と、エラー検出等を行うデータリンク層と、シリアルとパラレルとを変換する物理層とを有してよい。また、I/Oインタフェースは、階層の最上位であり1又は複数のポートを有するルートコンプレックス、I/Oデバイスであるエンドポイント、ポートを増やすためのスイッチ、及び、プロトコルを変換するブリッジ等を含んでよい。I/Oインタフェースは、送信するデータとクロック信号とをマルチプレクサによって多重化して送信してもよい。この場合、受信側は、デマルチプレクサでデータとクロック信号を分離してよい。
1 分散型コンピュータ
10 プラットフォーム
10−1 プラットフォームA
10−2 プラットフォームB
10−3 プラットフォームC
10−4 プラットフォームD
10−5 プラットフォームE
10−6 プラットフォームF
10−7 プラットフォームG
10−8 プラットフォームH
30 PCIeブリッジコントローラ
33、33−1〜33−8 ATU
34−1〜34−8 入力アドレス変換部
35−1〜35−8 出力アドレス変換部
36−1〜36−8 アドレス変換情報
37−1〜37−8 DBI
111−1〜111−8 アドレス空間設定部
112−1〜112−8 公開領域設定部
311 アドレス空間要求部
312 アドレス変換設定部

Claims (5)

  1. 複数のエンドポイントを有し、前記エンドポイントに接続されたルートコンプレックスを有する複数の情報処理装置間でのバスを介した通信を中継する中継装置であって、
    前記情報処理装置ごとに設けられた、複数の前記情報処理装置のそれぞれが公開するメモリ空間上の公開領域にアクセスさせるためのアクセス情報を含む情報が設定される設定領域にアクセスするためのアドレスの範囲を示す第1アドレス空間のうち、1の前記情報処理装置の前記設定領域にアクセスするためのアドレスの範囲を示す第2アドレス空間の全部又は一部からなる第3アドレス空間の取得を要求する要求部と、
    前記要求部が要求した前記第3アドレス空間のアドレスと、前記設定領域のアドレスとが対応付けられた変換規則であって、前記情報処理装置が書き換えることができない領域に設けられた当該変換規則に基づいて、前記情報処理装置から入力されたアドレスを変換する変換部と、
    を備える中継装置。
  2. 前記変換規則は、前記情報処理装置がアクセスすることができない領域として前記設定領域以外に設けられている、
    請求項1に記載の中継装置。
  3. 前記設定領域は、前記変換規則が設定され、
    前記要求部は、1の前記情報処理装置の前記設定領域にアクセスする前記第2アドレス空間の全部又は一部であって、前記変換規則が設定されている領域を除いた前記第3アドレス空間を要求する、
    請求項1に記載の中継装置。
  4. 複数のエンドポイントを有し、前記エンドポイントに接続されたルートコンプレックスを有する複数の情報処理装置間でのバスを介した通信を中継する中継装置を、
    前記情報処理装置ごとに設けられた、複数の前記情報処理装置のそれぞれが公開するメモリ空間上の公開領域にアクセスさせるためのアクセス情報を含む情報が設定される設定領域にアクセスするためのアドレスの範囲を示す第1アドレス空間のうち、1の前記情報処理装置の前記設定領域にアクセスするためのアドレスの範囲を示す第2アドレス空間の全部又は一部からなる第3アドレス空間の取得を要求する要求部と、
    前記要求部が要求した前記第3アドレス空間のアドレスと、前記設定領域のアドレスとが対応付けられた変換規則を設定する変換規則設定部と、
    して機能させるプログラム。
  5. 複数の情報処理装置と、複数のエンドポイントを有し、前記エンドポイントに接続されたルートコンプレックスを有する複数の前記情報処理装置間でのバスを介した通信を中継する中継装置とを備える情報処理システムであって、
    前記情報処理装置は、
    前記情報処理装置が公開する公開領域にアクセスさせるためのアクセス情報を設定させる設定部を備え、
    前記中継装置は、
    前記情報処理装置ごとに設けられた、複数の前記情報処理装置のそれぞれが公開するメモリ空間上の公開領域にアクセスさせるためのアクセス情報を含む情報が設定される設定領域にアクセスするためのアドレスの範囲を示す第1アドレス空間のうち、1の前記情報処理装置の前記設定領域にアクセスするためのアドレスの範囲を示す第2アドレス空間の全部又は一部からなる第3アドレス空間の取得を要求する要求部と、
    前記要求部が要求した前記第3アドレス空間のアドレスと、前記設定領域のアドレスとが対応付けられた変換規則であって、前記情報処理装置が書き換えることができない領域に設けられた当該変換規則に基づいて、前記情報処理装置から入力されたアドレスを変換する変換部と、
    を備える情報処理システム。
JP2019092099A 2019-05-15 2019-05-15 中継装置、プログラム、及び情報処理システム Active JP6607332B1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2019092099A JP6607332B1 (ja) 2019-05-15 2019-05-15 中継装置、プログラム、及び情報処理システム
GB2004084.6A GB2584937B (en) 2019-05-15 2020-03-20 Relay device, computer-readable program, and information processing system
US16/837,361 US20200364153A1 (en) 2019-05-15 2020-04-01 Relay device, computer program product, and information processing system
CN202010268698.0A CN111949573A (zh) 2019-05-15 2020-04-08 中继装置、记录介质和信息处理系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019092099A JP6607332B1 (ja) 2019-05-15 2019-05-15 中継装置、プログラム、及び情報処理システム

Publications (2)

Publication Number Publication Date
JP6607332B1 true JP6607332B1 (ja) 2019-11-20
JP2020187571A JP2020187571A (ja) 2020-11-19

Family

ID=68611048

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019092099A Active JP6607332B1 (ja) 2019-05-15 2019-05-15 中継装置、プログラム、及び情報処理システム

Country Status (4)

Country Link
US (1) US20200364153A1 (ja)
JP (1) JP6607332B1 (ja)
CN (1) CN111949573A (ja)
GB (1) GB2584937B (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7509391B1 (en) * 1999-11-23 2009-03-24 Texas Instruments Incorporated Unified memory management system for multi processor heterogeneous architecture
US9753883B2 (en) * 2014-02-04 2017-09-05 Netronome Systems, Inc. Network interface device that maps host bus writes of configuration information for virtual NIDs into a small transactional memory
KR102255216B1 (ko) * 2014-11-20 2021-05-24 삼성전자주식회사 Pci 장치와 이를 포함하는 pci 시스템

Also Published As

Publication number Publication date
JP2020187571A (ja) 2020-11-19
GB202004084D0 (en) 2020-05-06
GB2584937B (en) 2021-08-04
GB2584937A (en) 2020-12-23
CN111949573A (zh) 2020-11-17
US20200364153A1 (en) 2020-11-19

Similar Documents

Publication Publication Date Title
JP5040660B2 (ja) 記憶領域割当システム及び方法と制御装置
CN104285218B (zh) 一种扩展PCIe总线域的方法和装置
JP5285375B2 (ja) ネットワークオンチップ、およびネットワークオンチップで以ってデータを処理する方法
US8494833B2 (en) Emulating a computer run time environment
US7873701B2 (en) Network on chip with partitions
US7353315B2 (en) Bus controller with virtual bridge
JP2021530813A (ja) 専用低レイテンシリンクを使用した複数のハードウェアアクセラレータのための統合されたアドレス空間
CN101477512B (zh) 一种处理器系统及其访存方法
JP4323241B2 (ja) バス帯域幅を増加させるためのメモリコントローラ、これを利用したデータ伝送方法及びこれを備えるコンピュータシステム
US10169279B2 (en) Input/output control device, input/output control system, and input/output control method for conversion of logical address of instruction into local address of device specified in instruction
CN101178697B (zh) 一种pcie设备通信方法及系统
CN105630727B (zh) 多SoC节点之间的访问方法、装置和系统
JP4869714B2 (ja) 情報処理装置、信号伝送方法、およびブリッジ
JP6607332B1 (ja) 中継装置、プログラム、及び情報処理システム
US11210252B1 (en) Directing control data between semiconductor packages
US20060179168A1 (en) System and method for flexible multiple protocols
JP2020184224A (ja) 情報処理システム、プラットフォーム、およびブリッジドライバ
KR20030083572A (ko) 상위버스와 하위버스를 가지며, 네트워크에서의 데이터액세스의 제어를 행하는 마이크로 컴퓨터 시스템
JP6597925B1 (ja) 情報処理システム
JP4774099B2 (ja) 演算処理装置、情報処理装置及び演算処理装置の制御方法
Sadri et al. High-Bandwidth Low-Latency Interfacing with FPGA Accelerators Using PCI Express
US8443145B2 (en) Distributed memory usage for a system having multiple integrated circuits each including processors
JP2024505221A (ja) マルチコア処理およびメモリ配列
JP2001273191A (ja) コンピュータシステム
Koranne et al. Element Interconnect Bus

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190528

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20190529

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20190614

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190702

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190902

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190924

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191007

R150 Certificate of patent or registration of utility model

Ref document number: 6607332

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250