JP2019191920A - プロセッサ及び情報処理装置 - Google Patents

プロセッサ及び情報処理装置 Download PDF

Info

Publication number
JP2019191920A
JP2019191920A JP2018083849A JP2018083849A JP2019191920A JP 2019191920 A JP2019191920 A JP 2019191920A JP 2018083849 A JP2018083849 A JP 2018083849A JP 2018083849 A JP2018083849 A JP 2018083849A JP 2019191920 A JP2019191920 A JP 2019191920A
Authority
JP
Japan
Prior art keywords
link
processor
counter
packet
links
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018083849A
Other languages
English (en)
Other versions
JP7104308B2 (ja
Inventor
雄一郎 安島
Yuichiro Yasujima
雄一郎 安島
新哉 平本
Shinya Hiramoto
新哉 平本
祐史 近藤
Yuji Kondo
祐史 近藤
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 Ltd
Original Assignee
Fujitsu 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 Ltd filed Critical Fujitsu Ltd
Priority to JP2018083849A priority Critical patent/JP7104308B2/ja
Priority to US16/387,987 priority patent/US10911375B2/en
Publication of JP2019191920A publication Critical patent/JP2019191920A/ja
Application granted granted Critical
Publication of JP7104308B2 publication Critical patent/JP7104308B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/253Routing or path finding in a switch fabric using establishment or release of connections between ports
    • H04L49/254Centralised controller, i.e. arbitration or scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/15Interconnection of switching modules
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports

Abstract

【課題】インターコネクト内のスイッチのリンクの使用状況を確認するための情報を取得する。【解決手段】プロセッサは、処理部と、処理部に接続され、メインメモリへのアクセスを制御するメモリコントローラと、処理部に接続され、他のプロセッサに接続される複数の第1のリンクへの通信を制御するインターコネクトを有する。インターコネクトは、複数の第1のリンクと自身のプロセッサへの第2のリンクとの間のスイッチングを行うネットワーク・スイッチと、複数の第1のリンク及び第2のリンクそれぞれの入力リンクと出力リンクにそれぞれ設けられ、少なくとも入力リンク及び出力リンクを通過するパケットのパケット数をカウントするリンクカウンタと、リンクカウンタのカウント値を、処理部を介さずに、メモリコントローラを介してメインメモリにストアする記録部を有する。【選択図】図2

Description

本発明は,プロセッサ及び情報処理装置に関する。
スーパーコンピュータなどの並列計算機は、複数のプロセッサをインターコネクトで相互に接続した構成を有し、複数のプロセッサがアプリケーションを並列に実行する。このアプリケーションの並列実行では、複数のプロセッサが、それぞれのインターコネクトにより、プロセッサ間を接続するノード間リンク(以下単にリンクと称する。)を経由して、相互に通信する。
具体的には、あるノードのプロセッサが、並列実行中の別のプロセッサの演算結果を通信により受信し、または、自身の演算結果を別のプロセッサに送信する。複数のプロセッサのノードをネットワークで接続した情報処理装置について、以下の特許文献1,2に記載がある。
国際公開第2012/128282号 特開2000−293495号公報
インターコネクトは、例えば、プロセッサによるデータの送信要求に応答して、送信パケットを生成し送信先のプロセッサに送信し、逆に他のプロセッサから受信した受信パケットを受信し受信パケットのデータをプロセッサに提供するネットワーク・インターフェース・デバイスを有する。更に、インターコネクトは、他のプロセッサにパケットを送信する複数のリンクと自身のプロセッサへのリンクを含む複数リンクの間でスイッチングを行うネットワーク・スイッチ・デバイスを有する。
並列計算機では、各ノードのプロセッサの処理のスループットに加えて、プロセッサ間通信のスループットが、全体のスループットに大きな影響を与える。例えば、並列処理されるアプリケーションの特定の処理において、特定のリンクに通信が集中して通信遅延が増大すると、並列計算機のアプリケーション実行性能の低下を招く。このような性能低下を改善するためには、アプリケーションのプログラムを修正する必要がある。
しかしながら、プログラムの修正を行うためには、どのリンクに通信の集中が発生したかを特定する必要がある。
そこで,本実施の形態の第1の側面の目的は,インターコネクト内のスイッチのリンクの使用状況を確認するための情報を取得するプロセッサ及び情報処理装置を提供することにある。
本実施の形態の第1の側面は,
処理部と、前記処理部に接続され、メインメモリへのアクセスを制御するメモリコントローラと、前記処理部に接続され、他のプロセッサに接続される複数の第1のリンクへの通信を制御するインターコネクトを有し、前記インターコネクトは、前記複数の第1のリンクと自身のプロセッサへの第2のリンクとの間のスイッチングを行うネットワーク・スイッチと、前記複数の第1のリンク及び第2のリンクそれぞれの入力リンクと出力リンクにそれぞれ設けられ、少なくとも前記入力リンク及び前記出力リンクを通過するパケットのパケット数をカウントするリンクカウンタと、前記リンクカウンタのカウント値を、前記処理部を介さずに、前記メモリコントローラを介して前記メインメモリにストアする記録部を有する、プロセッサである。
第1の側面によれば,インターコネクト内のスイッチのリンクの使用状況を確認するための情報を取得することができる。
スーパーコンピュータなどの並列計算機の複数の構成例を示す図である。 本実施の形態におけるプロセッサの構成例を示す図である。 プロセッサSoCの構成要素を示す図である。 ネットワーク・スイッチNSW_D内のスイッチSWの構成を示す図である。 プロセッサノード間を転送される通信パケットのフォーマット例を示す図である。 スイッチSWのより詳細な構成例を示す図である。 スイッチSWの制御部の処理例を示すフローチャート図である。 スイッチSWの各リンクの入力ポートの処理例を示すフローチャート図である。 あるアプリケーションプログラムによるネットワーク・スイッチ内のデバイスレジスタの設定動作を示す図である。 ネットワーク・スイッチ内の第2のDMA(DMA_2)によるプロファイリング動作を示すフローチャート図である。 可視化情報の一つである各リンクのパケット数の例を示す図である。
図1は、スーパーコンピュータなどの並列計算機の複数の構成例を示す図である。図1に示されるとおり、複数のノードNODE000- NODE 111がノード間の多次元ネットワーク網により接続される。具体的には、並列計算機は、X軸方向、Y軸方向、Z軸方向に論理的に配置された複数のノードNODE000- NODE 111と、複数のノード間をX軸方向に接続するリンクと、Y軸方向に接続するリンクと、Z軸方向に接続するリンクとを有する。X軸方向は図中水平方向であり、Y軸方向は図中垂直方向であり、そして、Z軸方向は図中紙面奥に向かう方向である。各ノードNODEは、内部にプロセッサを有するプロセッサノード(または計算機ノード)である。
図1には、複数のノードのうちノードNODE000に接続されるリンクLNK0-LNK5が示され、他のノードのリンクは一部示され一部省略されている。
ノードNODE000には、X軸方向のリンクLNK0,LNK1と、Y軸方向のリンクLNK2,LNK3と、Z軸方向のリンクLNK4,LNK5が接続される。X軸方向の複数のリンクは、X軸上に配置された複数のノードNODE000,NODE100の間を接続する。X軸方向の複数のリンクは、例えば左右端のノード間を接続するリンク(図示せず)によりX軸方向の複数のノードをトーラス状に接続する。Y軸方向、Z軸方向も同様である。従って、図1の例は、3次元メッシュ/トーラスによるネットワーク網である。
例えば、リンクLNK0を伝搬してきたノードNODE100宛のパケットは、ノードNODE000内のネットワークルータ(図示せず)を経由してリンクLNK1に転送され、次のノードNODE100で内部のプロセッサに受信される。または、リンクLNK0を伝搬してきたノードNODE001宛のパケットは、ノードNODE000内のネットワークルータを経由してZ軸方向のリンクLNK5に転送され、次のノードNODE001で内部のプロセッサに受信される。
上記の通り、各ノード内に設けられたネットワークルータは、あるリンクを伝搬してきたパケットについて、その宛先ノードアドレスに基づき、同じ軸の隣接するリンクに転送するか異なる軸のリンクに転送するかを決定し、決定したリンク(送信先リンク)にパケットを転送する。また、各ノード内に設けられたネットワークルータは、あるリンクを伝搬してきたパケットの宛先ノードアドレスが自身のノードアドレスの場合、パケットを他のリンクに転送せず、自身のプロセッサにパケット内のデータを取得させる。
並列計算機は、あるアプリケーションを複数のプロセッサで並列に実行する。複数のプロセッサは、それぞれ、図1の各ノード内に内蔵される。複数のプロセッサが並列にアプリケーションを実行する場合、あるプロセッサは、他のプロセッサの演算結果をパケット通信で取得し、自身が実行する演算処理で取得した演算結果を参照する。また、あるプロセッサは、自身の演算結果を他の特定のプロセッサにパケット通信で送信する。
複数軸のリンクで接続された複数のノードは、所定のパケット転送ルールに基づいて、伝搬してきたパケットの転送先リンク(送信先リンク)を決定し、パケットを転送先リンクに転送する。複数のノードがそれぞれパケットを転送先リンクに転送することで、ノード間通信されるパケットが送信元ノードから送信先ノードに途中の転送ノードを経由して届けられる。
図1に示した各リンクは、後述するとおり、あるノードに対して入力リンクと出力リンクを有する双方向リンクである。従って、各ノードは、接続される複数のリンクそれぞれの入力リンクでパケットを受信し、出力リンクでパケットを送信する。そのため、図1に示した複数ノードの例では、各ノードに(例えばノードNODE001に)X軸方向の2つのリンクLNK0,LNK1、Y軸方向の2つのリンクLNK2,LNK3、Z軸方向の2つのリンクLNK4,LNK5が接続される。
但し、X,Y,Z軸方向のリンクは一例であり、さらに別の軸方向のリンクを有してもよい。また、上記のX,Y,Z軸は論理的な軸であっても良い。
図2は、本実施の形態におけるプロセッサの構成例を示す図である。プロセッサSoC(System on Chip)またはプロセッサチップPR_SoCは、演算処理回路を内蔵する処理部であるプロセッサPRCと、メモリコントローラMCとを内蔵し、更に、プロセッサPRCに一対一に設けられるインターコネクトINT_CNCTを内蔵する。プロセッサPRCと、メモリコントローラMCとインターコネクトINT_CNCTはホストバスHBを介して接続される。メモリコントローラMCは、プロセッサSoCの外部に設けられるメインメモリM_MEMへのアクセスを制御する。
インターコネクトINT_CNCTは、ネットワーク・インタフェース・デバイスNI_Dと、ネットワーク・スイッチ・デバイスNSW_Dとを有する。ネットワーク・インタフェース・デバイス(以下簡略化してネットワーク・インタフェースと称する)NI_Dは、メインメモリ内のデータをネットワーク・スイッチNSW_Dに対して送受信する。ネットワーク・インタフェースは、処理部であるプロセッサPRCが発行するコマンドに応答して、他のプロセッサに送信するパケットを生成し、他のプロセッサから受信したパケットのデータをメインメモリに格納してプロセッサPRCに提供する。
ネットワーク・スイッチ・デバイス(以下簡略化してネットワーク・スイッチと称する)NSW_Dは、他のプロセッサノードに接続される複数の第1のリンクLNK0-LNK5と、自身のプロセッサへの第2のリンクLNK6との間のスイッチングを行う。
ネットワーク・スイッチNSW_Dは、他の複数のプロセッサSoCとリンクを介して相互に接続し、他のプロセッサからリンクを伝搬してきたパケットを他のリンクまたは自身のリンクに転送する。ネットワーク・スイッチは、他のプロセッサノードに接続された複数の第1のリンクLNK0-LNK5と、自身のネットワーク・インタフェースとの間の第2のリンクLNK6との間のスイッチングを行うスイッチ(図示せず)を有する。このスイッチは、あるリンクから入力されたパケットの送信先アドレスに基づいて、パケットを出力する送信先リンクを決定し、入力されたパケットが送信先リンクに転送されるようにスイッチング制御をする。具体的な動作は後で述べる。
図3は、プロセッサSoCの構成要素を示す図である。図3には、プロセッサSoCが内蔵するインターコネクトINT_CNCTのネットワーク・インタフェースNI_Dとネットワーク・スイッチNSW_Dの構成例が示される。図3には、図2のプロセッサSoCの構成要素である、演算処理部であるプロセッサPRCと、メモリコントローラMCも示される。
ネットワーク・インタフェースNI_Dは、ネットワーク・スイッチNSW_Dが受信したパケットを受信する受信部RXと、プロセッサPRCのコマンドに応答して送信パケットを生成し、第2のリンクLNK6を介してネットワーク・スイッチNSW_Dに出力する送信部TXと、メインメモリM_MEMにプロセッサPRCを介さずにアクセスする第1のDMA調停部または制御部(Direct Memory Access arbiter or controller)DMA_1を有する。ネットワーク・インタフェースNI_D内の第1のDMA制御部 DMA_1は、受信部RXからの要求に応答して、受信パケット内のデータをメインメモリM_MEMに書き込み、逆に、プロセッサの送信コマンドに応答して、メインメモリ内のデータを読み出して送信部TXに提供する。
一方、ネットワーク・スイッチNSW_Dは、他のプロセッサのインターコネクトに接続された複数の第1のリンクLNK0-LNK5と、自身のネットワーク・インタフェースに接続された第2のリンクLNK6との間を接続するスイッチSWを有する。スイッチSWと複数の第1のリンクLNK0-LNK5の間には、それぞれ、リンクコントローラLNK_CON_0〜LNK_CON_5が設けられる。リンクコントローラは、第1のリンクLNK0-LNK5から転送されてきた受信パケットを一旦受信バッファに蓄積しスイッチSWに受信パケットを入力し、スイッチSWから出力される送信パケットを送信先リンクに出力する。リンクコントローラは、出力した送信パケットが送信先ノードに転送されない場合、送信パケットの再出力を行う。
さらに、ネットワーク・スイッチNSW_Dは、複数の第1のリンクLNK0-LNK5それぞれに設けられたリンクカウンタCTR0-CTR5を有する。また、ネットワーク・インタフェースNI_Dは、第2のリンクLNK6に設けられたリンクカウンタCTR6を有する。このリンクカウンタCTR6は、ネットワーク・スイッチNSW_D内に設けられても良い。
前述したとおり、複数の第1のリンクLNK0-LNK5と第2のリンクLNK6は、それぞれ入力リンクと出力リンクを有する。従って、上記の各リンクカウンタCTR0-CTR5、CTR6は、各リンクLNK0-LNK5、LNK6の入力リンク側のリンクカウンタと出力リンク側のリンクカウンタを有する。
リンクカウンタは、様々な可視化情報をカウントする。例えば、可視化情報は、各リンクの入力リンクと出力リンクそれぞれを通過するパケット数や、各リンクの入力リンクと出力リンクそれぞれを通過するパケットのデータ量などである。
例えば、複数の第1のリンクLNK0-LNK5のリンクカウンタCTR0-CTR5は、受信パケットと送信パケットを分析するリンクコントローラLNK_CONにより、パケット数のカウント及びパケットのデータ量の加算を制御される。同様に、第2のリンクLNK6のリンクカウンタCTR6は、受信パケットを受信する受信部RXと送信パケットを生成してスイッチSWに出力する送信部TXにより、パケット数のカウント及びパケットのデータ量の加算を制御される。
また、ネットワーク・スイッチNSW_Dは、リンクカウンタCTR0〜CTR6のうち所望のカウント値を所定の取得間隔で取得し、メインメモリM_MEM内の可視化情報記録領域内にストアする第2のDMA調停部または制御部 DMA_2を有する。第2のDMA制御部DMA_2は、メインメモリへのダイレクトメモリアクセス制御を行う回路(図示せず)と、所望のリンクカウンタから取得したカウント値を一時的に蓄積するカウント値バッファCNT_BUFを有する。
そして、ネットワーク・スイッチNSW_Dは、リンクカウンタのカウント値の取得方法を設定する種々のデバイスレジスタ11−15と、タイマーカウンタ10とを有する。タイマーカウンタ10は、ネットワーク・スイッチ内に設けられたタイマーであり、プロセッサSoCの初期化とともにカウントアップを開始するフリーランのタイマーカウンタである。但し、タイマーカウンタ10は、必ずしもネットワーク・スイッチ内に設けられる必要はなく、ネットワーク・インタフェース内に設けられてもよく、または、インターコネクトINT_CNCTの外部のプロセッサSoC内に設けられても良い。更に、プロセッサSoCの外部に設けられ、プロセッサPRCが参照するタイマーでも良い。
デバイスレジスタは、リンクカウンタのカウント値をストアするメインメモリ内のストア領域の開始アドレス及び終了アドレスを設定する開始アドレス・終了アドレスレジスタ11を有する。開始アドレス・終了アドレスレジスタ11は、リンクカウンタのカウント値をストアするメインメモリ内のストア領域を特定できれば良いので、例えば開始アドレスと領域サイズが設定されても良い。
また、デバイスレジスタは、リンクカウンタのカウント値を取得する時間間隔が設定される取得間隔レジスタ12と、カウント値を取得するリンクカウンタの種別が設定されるカウンタ種別レジスタ13とを有する。カウンタ種別レジスタには、可視化情報であるカウント値を取得するリンクカウンタを特定するデータなどが設定される。
上記では、リンクカウンタの種別として、パケット数カウンタとデータ数カウンタを一例として説明したが、それ以外の可視化情報、例えば他のプロセッサのデータを読み出すリードパケット数や、他のプロセッサのメインメモリにデータを書き込むライトパケット数など、をカウントするカウンタを設けても良い。
さらに、デバイスレジスタは、リンクカウンタのカウント値の取得の開始を指示する取得開始フラグレジスタ14と、取得の終了を指示する取得終了フラグレジスタ15とを有する。
上記のデバイスレジスタには、処理部であるプロセッサPRCが、実行するアプリケーション内の設定命令に基づいて、所望の設定値を設定する。デバイスレジスタの具体的な設定等については後で詳述する。
上記の通り、本実施の形態のプロセッサSoC PR_SoCは、プロセッサPRCと同じチップ内に、インターコネクトINT_CNCTを内蔵する。そして、プロセッサSoCは、インターコネクト内のネットワーク・スイッチのリンク使用率を可視化するための情報(可視化情報またはリンク通信状態可視化情報)である、各リンクを通過するパケット数やデータ量をカウントするリンクカウンタを有する。そして、第2のDMA制御部DMA_2が、プロファイルしたいリンクカウンタのカウント値を、所望のタイミングで且つ所望の取得間隔で採取し、カウント値バッファCNT_BUFに一時的に蓄積する。さらに、第2のDMA制御部が、プロセッサPRCを介することなく、カウント値バッファに採取したカウント値を採取時のタイマーカウンタのタイムスタンプと共に、ダイレクトメモリアクセスによりメインメモリM_MEMにストアする。
第2のDMA制御部DMA_2は、採取したカウント値をプロセッサPRCを介することなくダイレクトメモリアクセスによりメインメモリにストアする。従って、可視化情報のプロファイリングが、プロセッサPRCによるアプリケーションの実行スループットに影響を与えることがなく、インターコネクトによる送受信パケットの送受信タイミングへの影響の問題もない。
並列計算機は、大量のデータの計算を実行するので、メインメモリ内の可視化情報をストアする領域の容量を所定容量以下に抑える必要がある。そこで、プロセッサは、実行するアプリケーションの初期化命令で、メインメモリ内の可視化情報のストア領域を特定するメインメモリ内の開始アドレスと終了アドレスを、開始アドレス/終了アドレスレジスタ11に設定する。この設定値によりメインメモリ内の可視化情報のストア領域を所定容量以下に抑える。
その場合、可視化情報ストア領域をリングメモリとして使用することが好ましい。可視化情報であるリンクカウンタのカウント値は、採取した時間を示すタイムスタンプと共にメインメモリ内にストアされるので、リングメモリ内の可視化情報の時間軸の前後関係をタイムスタンプにより判別することができる。
さらに、プロセッサPRCは、実行するアプリケーションの取得開始フラグ設定命令や取得終了フラグ設定命令に応答して、取得開始フラグレジスタ14,取得終了フラグレジスタ15に取得開始フラグ、取得終了フラグを設定する。プロセッサPRCは、この取得開始フラグまたは取得終了フラグを設定するときに、タイマーカウンタ10のタイムスタンプを取得する。これにより、プロセッサは、プロファイルされたリンクカウンタのカウント値のタイムスタンプとの差分に基づいて、採取したカウント値が並列計算のどの処理に対応するかを識別する。
また、プロセッサPRCは、実行するアプリケーションの初期化命令に応答して、採取する可視化情報のリンクカウンタの種別をカウンタ種別レジスタ13に設定する。これにより、第2のDMA制御部 DMA_2は、所望の可視化情報に対応するリンクカウンタのカウント値をプロファイルする。
第2のDMA制御部は、リンクカウンタのカウント値とタイマーデバイスのカウント値採取時のタイムスタンプに加えて、カウンタ種別IDをメインメモリに書き込んでも良い。但し、初期化処理でカウント値を取得するカウンタ種別を特定するデータが設定される。従って、第2のDMA制御部が、採取したカウント値を、この設定されたカウンタ種別の順にカウント値バッファCNT_BUF内に格納し、タイムスタンプを付加してメインメモリにストアすれば、メインメモリに取得するカウント値のカウンタ種別IDをストアする必要はない。
図4は、ネットワーク・スイッチNSW_D内のスイッチSWの構成を示す図である。スイッチSWは、6つの第1のリンクLNK0-LNK5と1つの第2のリンクLNK6間をスイッチングするクロスバースイッチ20と、クロスバースイッチ20のスイッチングを制御する制御部21とを有する。各リンクは、前述したとおり、入力リンクと出力リンクを有する双方向リンクである。
制御部21は、後述するとおり、各リンクの入力リンクから入力された入力パケットの出力先リンク(送信先リンク)を決定し、同じ出力リンクで競合する入力パケット間の調停を行って、いずれかのリンクの入力パケットに出力許可を与える。更に、制御部21は、その入力パケットが送信先リンクにスイッチングされるようにクロスバースイッチのスイッチングを制御する。
図5は、プロセッサノード間を転送される通信パケットのフォーマット例を示す図である。通信パケットPCKは、ヘッダ情報として、送信先ノードアドレス30、送信元ノードアドレス31、データ長32、ライトかリードかのパケット種類33を格納し、更に、ペイロードとしてライトまたはリードなどのデータ34を格納する。
図6は、スイッチSWのより詳細な構成例を示す図である。スイッチSWは、クロスバースイッチ20に、第1の双方向リンクLNK0-LNK5及び第2の双方向リンクLNK6が接続される。図示されるとおり、例えば、双方向のリンクLNK0は、クロスバースイッチ20に入力パケットが転送される入力リンクIN_LNK0と、出力パケットが出力される出力リンクOUT_LNK0とを有する。また、入力リンクIN_LNK0は入力ポートIN_PORTに接続され、出力リンクOUT_LNK0は出力ポートOUT_PORTに接続される。他の双方向リンクLNK1-LNK5も同様に入力リンクと出力リンクを有し、それらに入力ポートと出力ポートとがそれぞれ接続される。第2の双方向リンクLNK6も同様の構成を有する。
スイッチSW内の制御部21は、各リンクLNK0-LNK5及びLNK6の入力ポートから発行される特定の送信先リンクへの転送要求を調停する調停部211と、調停部が決定した転送要求に対応する入力ポートと送信先リンクの出力ポートの間にクロスバースイッチ20がスイッチングされるよう制御するスイッチング制御部212とを有する。各リンクの入力ポートIN_PORTと制御部21の処理の一例について以下説明する。
図7は、スイッチSWの制御部の処理例を示すフローチャート図である。図8は、スイッチSWの各リンクの入力ポートの処理例を示すフローチャート図である。制御部と入力ポートの処理の理解を容易にするために、図7,図8を参照してスイッチSWでのパケットのスイッチングについて説明する。
まず、図8において、ある入力ポートIN_PORTは、入力リンクを伝搬してきた入力パケットを受信すると(S21)、パケット転送が停止中でなければ(S22のNO)、入力パケットの送信先アドレスを抽出する(S23)。そして、入力ポートは、送信先アドレスを含む転送要求を調停部211に送信する(S24)。
次に、図7において、スイッチの制御部21内の調停部211は、上記の送信先リンクへの転送要求を受信し(S10)、転送要求に含められた送信先ノードアドレスに基づいて、パケットの送信先リンクを決定する(S11)。送信先リンクの決定では、制御部は、多次元ネットワーク網のパケット転送ルールに基づいて、入力パケットの送信先ノードアドレスに転送するために出力すべき送信先リンクを決定する。
次に、制御部は、複数の入力ポートからそれぞれ受信した複数の送信先リンクへの転送要求が競合する場合、競合する送信先リンクへの複数の転送要求を調停し、許可する転送要求を決定する(S12)。そして、調停部211は、複数の入力ポートに調停結果(許可または不許可)を通知する(S13)。それと共に、スイッチング制御部212は、クロスバースイッチ20をスイッチング制御し、許可する転送要求のパケットを要求された送信先リンクの出力リンクから出力させる(S14)。
一方、図8に戻り、各入力ポートは、送信先リンクへの転送要求が許可された場合(S25のYES)、入力されたパケットをクロスバースイッチ20に入力する(S26)。この結果、入力されたパケットは、入力ポートから送信先リンクの出力リンクに出力または転送される。
一方、各入力ポートは、送信先リンクへの転送要求が許可されなかった場合(S25のNO)、入力されたパケットを入力ポート内のバッファに一時的に蓄積する(S27)。そのため、調停により許可されなかったパケットは、送信先リンクへ転送されずに入力ポート内で滞留する。
入力ポート内のバッファは容量に限りがあるので、このバッファの残量が基準値TH1未満になると(S28のYES)、入力ポートは入力されたパケットの転送を停止する(S30)。
一方、各入力ポートは、パケットを受信し(S21)、パケット転送が停止中の場合(S22のYES)、例えば、受信した入力パケットの受付を拒否する(S31)。そして、入力ポートは、バッファ内のパケットの送信先ノードアドレスを抽出し(S23)、送信先ノードアドレスを含む転送要求を調停部に送信する(S24)。この転送要求が許可されれば(S25)、バッファ内のパケットをクロスバースイッチ20に入力する(S26)。この結果、バッファ内のパケットが送信先リンクの出力リンクに転送される。そして、入力ポート内のバッファの残量が基準値TH1以上に回復すると(S28のNO)、パケット転送を再開し、入力パケットの受付を再開する。
以下、プロセッサSoCによるネットワーク・スイッチのプロファイリング動作について説明する。
図9は、あるアプリケーションプログラムによるネットワーク・スイッチ内のデバイスレジスタの設定動作を示す図である。アプリケーションプログラムには、ネットワーク・スイッチ内のレジスタの初期化命令S1と、命令列_1(S2)と、リンクカウンタのカウント値の取得開始命令S3と、命令列_2(S4)と、リンクカウンタのカウント値の取得終了命令(S5)と、命令列_3(S6)を有する。プログラマが希望するプロファイリングに基づいて、初期化命令S1と、取得開始命令S3と取得終了命令S5が、アプリケーションプログラムの命令列内の所定の位置に記述される。
アプリケーションプログラムを実行するプロセッサPRCは、レジスタの初期化命令S1を実行して、メインメモリ内の可視化情報をストアする領域の開始アドレスと終了アドレスを、開始アドレス・終了アドレスレジスタ11に設定する。更に、プロセッサPRCは、レジスタの初期化命令S1を実行して、可視化情報の取得間隔を取得間隔レジスタ12に設定し、更に、取得対象のカウンタ種別をカウンタ種別レジスタ13に設定する。ここで、取得対象のカウンタ種別のデータは、例えば、リンクカウンタの総数に対応するビット長を有し、カウント値取得対象のリンクカウンタに対応するビットを「1」に取得対象でないリンクカウンタに対応するビットを「0」にしたデータである。
アプリケーションプログラムを実行するプロセッサPRCは、命令列_1(S2)を実行した後、リンクカウンタのカウント値の取得開始命令S3を実行し、取得開始フラグレジスタ14を開始フラグを意味する「1」に設定する。プロセッサPRCは、取得開始フラグレジスタ14に開始フラグを設定した際に、ネットワーク・スイッチ内のタイマーカウンタ10のタイムスタンプを読み出してメインメモリ内にストアする。
この取得開始フラグレジスタ14に開始フラグが設定されると、ネットワーク・スイッチ内の第2のDMA制御部(DMA_2)が、取得間隔毎に、カウンタ種別で取得対象に設定されたリンクカウンタのカウント値を採取し、カウント値バッファCNT_BUF内に、カウンタ種別レジスタに設定した取得対象カウンタの順番で、採取したカウント値を格納する。同時に、第2のDMA制御部が、取得時のタイマーカウンタ10のタイムスタンプも合わせてカウント値バッファに格納する。そして、第2のDMA制御部(DMA_2)は、図3に示した例のように、カウント値バッファCNT_BUF内のカウント値CNT0,CNT2,CNT4とタイムスタンプT_stpを、メモリコントローラMCを介してメインメモリM_MEMにストア(書き込む)する。このメインメモリへのストアは、プロセッサPRCの制御を介さず、ダイレクトメモリアクセスにより実行される。
第2のDMA制御部(DMA_2)は、上記のリンクカウンタのカウント値の取得とメインメモリ内へのストアを、プロセッサPRCが命令列_2(S4)を実行中、繰り返す。ネットワーク・スイッチの第2のDMAが、可視化情報であるカウント値の取得とメインメモリへのストアを、プロセッサPRCを介さずに行うので、プロセッサPRCによる命令列_2(S4)の実行のスループットの低下や、転送パケットの遅延などを回避できる。
やがて、アプリケーションプログラムを実行するプロセッサPRCは、命令列_2(S4)を実行した後、リンクカウンタのカウント値の取得終了命令S5を実行し、取得終了フラグレジスタ15を終了フラグを意味する「1」に設定する。この設定に応答して、第2のDMA制御部(DMA_2)は、カウント値の取得とメインメモリへのストア動作を終了する。その後、プロセッサPRCは命令列_3(S6)を実行する。
図10は、ネットワーク・スイッチ内の第2のDMA(DMA_2)によるプロファイリング動作を示すフローチャート図である。上記と部分的に繰り返しになるが、図10を参照して、ネットワーク・スイッチ内の第2のDMAによるプロファイリング動作を説明する。
まず、プロセッサPRCが、初期化処理で、メインメモリ内の可視化情報をストアする領域の開始アドレスと終了アドレスを、開始アドレス・終了アドレスレジスタ11に、取得間隔を取得間隔レジスタ12に、そして、カウント値を取得するカウンタ種別データをカウンタ種別レジスタ13に、それぞれ設定する(S41)。
そして、取得開始フラグレジスタ14に取得開始フラグが設定されると(S42のYES)、第2のDMA制御部は、取得間隔レジスタに設定された取得間隔の時間が経過するたびに(S44のYES)、カウンタ種別レジスタに設定された取得対象カウンタのカウント値をカウント値バッファCNT_BUFに格納する。更に、第2のDMAは、複数のカウント値の取得時刻を示すタイマーカウンタ10のタイムスタンプをカウント値バッファCNT_BUFに格納する(S45)。さらに、第2のDMA制御部は、カウントバッファ内の取得したカウント値とタイムスタンプを、メモリコントローラ経由でメインメモリにDMAでストアする(S46)。プロセッサPRCは、取得開始フラグを設定するときに、ネットワーク・スイッチ内のタイマーカウンタ10のタイムスタンプを読み出し、メインメモリ内にストアする(S43)。
第2のDMA制御部は、上記のS44-S46を、取得終了フラグレジスタ15に取得終了フラグが設定されるまで(S46のNOの間)、繰り返す。やがて、プロセッサPRCが、取得終了フラグレジスタ15に取得終了フラグを設定すると(S46のYES)、上記のS44-S46を終了する。プロセッサPRCは、取得終了フラグを設定したときのタイマーカウンタのタイムスタンプを読み出してメモリにストアしても良い。
図11は、可視化情報の一つである各リンクのパケット数の例を示す図である。図11には、複数の第1のリンクLNK0-LNK5と、第2のリンクLNK6との間のスイッチングを行うネットワーク・スイッチ内のスイッチSWが示される。破線は、パケットが、スイッチングされたスイッチを経由して、あるリンクから他のリンクに転送される経路を示す。ここの示された例では、第1のリンクLNK1-LNK5から入力されたパケットが全て第1のリンクLNK0に転送され、第2のリンクLNK6から入力されたパケットが全て同じリンクLNK6に転送されている。
前述したとおり、各リンクは、入力リンクと出力リンクを有し、入力リンクと出力リンクにそれぞれパケット数をカウントするリンクカウンタが設けられている。図11には、各リンクLNK0-LNK6の入力リンクのリンクカウンタのカウント値(パケット数)CNT_INと、出力リンクのリンクカウンタのカウント値(パケット数)CNT_OUTの例を示す表が示される。
この表によれば、リンクLNK1-LNK5の入力リンクのリンクカウンタのカウント数CNT_INは、それぞれ25パケット/取得間隔、リンクLNK0の出力リンクのカウント数CNT_OUTは125パケット/取得間隔である。また、リンクLNK6の入力リンクのカウント数CNT_INは100パケット/取得間隔であり、出力リンクのカウント数CNT_OUTも100パケット/取得間隔である。
本実施の形態のプロセッサSoCでは、アプリケーションプログラムを実行中に、予め設定したタイミングから予め設定した取得間隔で、ネットワーク・スイッチ内の第2DMAが、スイッチに接続された各リンクの入力リンク及び出力リンクに設けたリンクカンタによりカウントされたパケット数やデータ量を、リンクカウンタから採取する。そして、第2のDMAが、採取したカウント値と採取したときのタイムスタンプとを、ダイレクトメモリアクセスによりメインメモリにストアする。
図11の表には、ある所定間隔でのリンクカウンタのカウント値の例が示される。この所定間隔は、例えば数msecという人間により変化を可視化できる粒度の粗い時間である。
そこで、スイッチのリンク使用率を可視化するための一例として、複数のノードとノード間のリンクの画像において、各リンクの色を、各時間間隔でのパケット数またはデータ量の数の大小に対応した色、例えば数が多い場合は赤、中程度の場合は黄色、少ない場合は緑、で表示する。そして、時間の経過に伴い各時間間隔でリンクの色を変化させて前述の画像を表示することで、人間に対して、スイッチのリンクの使用率の変化を可視化することができる。
したがって、本実施の形態では、ある開発中のアプリケーションプログラムを実行させて、リンクカウンタのカウント値をタイムスタンプと共に取得し、上記した各リンクのパケット数やデータ量を可視化表示する。それにより、開発者は、アプリケーションプログラムの実行時のスイッチのリンク使用率の傾向を得ることができ、その後のアプリケーションの改良に利用できる。
NODE000-NODE111:ノード、プロセッサノード、計算機ノード
PR_SoC:プロセッサ、プロセッサチップ
PRC:処理部、プロセッサ回路
MC:メモリコントローラ
HB:ホストバス
INT_CNCT:インターコネクト
NI_D:ネットワーク・インタフェース・デバイス
NSW_D:ネットワーク・スイッチ・デバイス
LNK0-LNK5:第1のリンク
LINK6:第2のリンク
M_MEM:メインメモリ
SW:スイッチ
LNK_CON:リンクコントローラ
CTR0-CTR6:リンクカウンタ
DMA_2:第2のDMA制御部
CNT_BUF:カウント値バッファ
CNT#:カウント値
T_stp:タイムスタンプ
10:タイマーカウンタ
11:開始アドレス/終了アドレスレジスタ
12:取得間隔レジスタ
13:カウンタ種別レジスタ
14:取得開始フラグレジスタ
15:取得終了フラグレジスタ

Claims (9)

  1. 処理部と、
    前記処理部に接続され、メインメモリへのアクセスを制御するメモリコントローラと、
    前記処理部に接続され、他のプロセッサに接続される複数の第1のリンクへの通信を制御するインターコネクトを有し、
    前記インターコネクトは、
    前記複数の第1のリンクと自身のプロセッサへの第2のリンクとの間のスイッチングを行うネットワーク・スイッチと、
    前記複数の第1のリンク及び第2のリンクそれぞれの入力リンクと出力リンクにそれぞれ設けられ、少なくとも前記入力リンク及び前記出力リンクを通過するパケットのパケット数をカウントするリンクカウンタと、
    前記リンクカウンタのカウント値を、前記処理部を介さずに、前記メモリコントローラを介して前記メインメモリにストアする記録部を有する、プロセッサ。
  2. 前記リンクカウンタは、
    前記パケット数をカウントするパケット数カウンタに加えて、
    前記パケットのデータ量をカウントするデータ量カウンタを有する、請求項1に記載のプロセッサ。
  3. 前記インターコネクトは、更に、
    前記メインメモリにストアするカウント値の前記リンクカウンタの種別を設定するカウンタ種別レジスタと、
    前記メインメモリにストアするカウント値を前記リンクカウンタから取得する取得間隔を設定する取得間隔レジスタを有する、請求項2に記載のプロセッサ。
  4. 前記インターコネクトは、更に、タイマーを有し、
    前記記録部は、前記タイマーの時間に基づく前記取得間隔毎に、前記カウンタ種別レジスタに設定されているカウンタ種別に対応する前記リンクカウンタのカウント値と、前記タイマーのタイムスタンプとを取得し、取得した前記カウント値とタイムスタンプと前記メインメモリにストアする、請求項3に記載のプロセッサ。
  5. 前記インターコネクトは、更に、
    前記カウント値の取得開始を設定する取得開始フラグレジスタと、前記カウント値の取得終了を設定する取得終了フラグレジスタとを有し、
    前記記録部は、前記処理部が前記取得開始フラグレジスタに取得開始フラグを設定したときから、前記取得終了フラグレジスタに取得終了フラグを設定したときまで、前記取得間隔で前記カウント値とタイムスタンプの取得と前記メインメモリへのストアを行う、請求項4に記載のプロセッサ。
  6. 前記インターコネクトは、更に、
    前記メインメモリ内の前記カウント値とタイムスタンプをストアするストア領域のアドレス範囲を設定するアドレス範囲レジスタを有し、
    前記処理部は、前記アドレス範囲レジスタに前記メインメモリ内のアドレス範囲を設定する、請求項5に記載のプロセッサ。
  7. 前記ネットワーク・スイッチは、
    前記複数の第1のリンクと前記第2のリンクそれぞれの前記入力リンクに設けられた入力ポートと、前記出力リンクに設けられた出力ポートとを有し、
    前記入力ポートは、前記入力ポートに入力されたパケットの送信先アドレスに基づく送信先リンクへ前記パケットを出力することを要求するパケット転送要求を発行し、
    前記ネットワーク・スイッチは、更に、
    前記複数の前記入力ポートから発行され、送信先リンクで互いに競合する複数の前記パケット転送要求のうち、いずれかのパケット転送要求を許可する調停部と、
    前記許可したパケット転送要求に対応するパケットを前記入力リンクから前記送信先リンクの出力リンクに転送するようスイッチを制御するスイッチ制御部を有し、
    前記入力ポートは、前記パケット転送要求が許可された場合、前記パケットを前記ネットワーク・スイッチに発行し、前記パケット転送要求が許可されなかった場合、前記パケットをバッファリングする、請求項1に記載のプロセッサ。
  8. 前記処理部と前記インターコネクトが、同じチップ内に形成されている、請求項1に記載のプロセッサ。
  9. 複数のプロセッサと、
    前記複数のプロセッサ間の複数の軸方向にそれぞれ設けられ、前記複数のプロセッサ間の通信経路となる複数のリンクとを有し、
    前記複数のプロセッサそれぞれは、
    処理部と、
    前記処理部に接続され、メインメモリへのアクセスを制御するメモリコントローラと、
    前記処理部に接続され、他のプロセッサに接続される複数の第1のリンクへの通信を制御するインターコネクトを有し、
    前記インターコネクトは、
    前記複数の第1のリンクと自身のプロセッサへの第2のリンクとの間のスイッチングを行うネットワーク・スイッチと、
    前記複数の第1のリンク及び第2のリンクそれぞれの入力リンクと出力リンクにそれぞれ設けられ、少なくとも前記入力リンク及び前記出力リンクを通過するパケットのパケット数をカウントするリンクカウンタと、
    前記リンクカウンタのカウント値を、前記処理部を介さずに、前記メモリコントローラを介して前記メインメモリにストアする記録部を有する、情報処理装置。
JP2018083849A 2018-04-25 2018-04-25 プロセッサ及び情報処理装置 Active JP7104308B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018083849A JP7104308B2 (ja) 2018-04-25 2018-04-25 プロセッサ及び情報処理装置
US16/387,987 US10911375B2 (en) 2018-04-25 2019-04-18 Processor and information processing apparatus for checking interconnects among a plurality of processors

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018083849A JP7104308B2 (ja) 2018-04-25 2018-04-25 プロセッサ及び情報処理装置

Publications (2)

Publication Number Publication Date
JP2019191920A true JP2019191920A (ja) 2019-10-31
JP7104308B2 JP7104308B2 (ja) 2022-07-21

Family

ID=68290880

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018083849A Active JP7104308B2 (ja) 2018-04-25 2018-04-25 プロセッサ及び情報処理装置

Country Status (2)

Country Link
US (1) US10911375B2 (ja)
JP (1) JP7104308B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10764315B1 (en) * 2019-05-08 2020-09-01 Capital One Services, Llc Virtual private cloud flow log event fingerprinting and aggregation
US20210149812A1 (en) * 2020-11-18 2021-05-20 Intel Corporation Network interface controller with eviction cache

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06290079A (ja) * 1993-03-30 1994-10-18 Hitachi Ltd 情報処理システム
US20070174434A1 (en) * 2006-01-04 2007-07-26 Broadcom Corporation Method and apparatus for dynamically configuring hardware resources by a generic CPU management interface
JP2012042658A (ja) * 2010-08-18 2012-03-01 Canon Inc 電子機器
JP2013135387A (ja) * 2011-12-27 2013-07-08 Fujitsu Ltd 通信制御装置、並列計算機システム及び通信制御方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000293495A (ja) 1999-04-06 2000-10-20 Nec Eng Ltd ネットワーク装置
US7886294B2 (en) * 2004-12-28 2011-02-08 Sap Ag Virtual machine monitoring
CN103444138B (zh) 2011-03-23 2016-03-30 日本电气株式会社 通信控制系统、交换节点以及通信控制方法
US8861403B2 (en) * 2012-03-15 2014-10-14 Cisco Technology, Inc. Interconnecting segmented layer two network for cloud switching
US10091904B2 (en) * 2016-07-22 2018-10-02 Intel Corporation Storage sled for data center

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06290079A (ja) * 1993-03-30 1994-10-18 Hitachi Ltd 情報処理システム
US20070174434A1 (en) * 2006-01-04 2007-07-26 Broadcom Corporation Method and apparatus for dynamically configuring hardware resources by a generic CPU management interface
JP2012042658A (ja) * 2010-08-18 2012-03-01 Canon Inc 電子機器
JP2013135387A (ja) * 2011-12-27 2013-07-08 Fujitsu Ltd 通信制御装置、並列計算機システム及び通信制御方法

Also Published As

Publication number Publication date
JP7104308B2 (ja) 2022-07-21
US20190334836A1 (en) 2019-10-31
US10911375B2 (en) 2021-02-02

Similar Documents

Publication Publication Date Title
US9571420B2 (en) Integrated NoC for performing data communication and NoC functions
US9473359B2 (en) Transactional traffic specification for network-on-chip design
JP5859017B2 (ja) 処理クラスタのための制御ノード
US10206175B2 (en) Communications fabric with split paths for control and data packets
JP2009512260A (ja) 加入者装置、通信システムの通信コントローラ、および通信システムの加入者装置内でゲートウェイ機能を実現する方法
EP2230606A2 (en) System having a plurality of nodes connected in multi-dimensional matrix, method of controlling system and apparatus
EP3729261B1 (en) A centralized-distributed mixed organization of shared memory for neural network processing
US11599498B1 (en) Device with data processing engine array that enables partial reconfiguration
JP7104308B2 (ja) プロセッサ及び情報処理装置
US11730325B2 (en) Dual mode interconnect
US20080178177A1 (en) Method and Apparatus for Operating a Massively Parallel Computer System to Utilize Idle Processor Capability at Process Synchronization Points
CN114338824A (zh) 用于数据处理系统的消息协议
WO2016189709A1 (ja) コントローラ
TW200407712A (en) Configurable multi-port multi-protocol network interface to support packet processing
CN112867998A (zh) 运算加速器、交换器、任务调度方法及处理系统
EP3582445A1 (en) Control device and communication device
US8811387B2 (en) Dynamically reconfigurable hybrid circuit-switched and packet-switched network architecture
WO2008056489A1 (fr) Système à processeurs multiples, son procédé de commande et support d'enregistrement d'informations
US20210357347A1 (en) Performance monitor for interconnection network in an integrated circuit
US10990552B1 (en) Streaming interconnect architecture for data processing engine array
WO2007039933A1 (ja) 演算処理装置
US11860811B2 (en) Message protocol for a data processing system
JP5287975B2 (ja) 情報処理装置
RU2665225C1 (ru) Блок обработки информации
Strikos Design and Implementation of a Network-on-Chip based Embedded System-on-Chip

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210210

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220318

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: 20220607

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220620

R150 Certificate of patent or registration of utility model

Ref document number: 7104308

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150