JP2015069345A - 情報処理装置,データ転送装置,およびデータ転送方法 - Google Patents

情報処理装置,データ転送装置,およびデータ転送方法 Download PDF

Info

Publication number
JP2015069345A
JP2015069345A JP2013202144A JP2013202144A JP2015069345A JP 2015069345 A JP2015069345 A JP 2015069345A JP 2013202144 A JP2013202144 A JP 2013202144A JP 2013202144 A JP2013202144 A JP 2013202144A JP 2015069345 A JP2015069345 A JP 2015069345A
Authority
JP
Japan
Prior art keywords
data
information
input
unit
queue
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2013202144A
Other languages
English (en)
Inventor
健 西屋敷
Masaru Nishiyashiki
健 西屋敷
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 JP2013202144A priority Critical patent/JP2015069345A/ja
Priority to US14/454,296 priority patent/US20150095523A1/en
Priority to EP14181586.0A priority patent/EP2854042A1/en
Publication of JP2015069345A publication Critical patent/JP2015069345A/ja
Pending legal-status Critical Current

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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Systems (AREA)

Abstract

【課題】データを送受信する第1及び第2の装置と、第1及び第2の装置間に設定された複数の転送路のうちのいずれかを介してデータを転送するデータ転送装置と、をそなえる情報処理装置を、簡素な構成で実現する。【解決手段】データ転送装置は、第1の装置からデータを受信し格納する受信部と、前記受信部から転送されたデータを格納し第2の装置に向けて送信する送信部と、を有し、前記送信部は、転送されたデータに関するデータ情報を、転送路ごとに保持する情報保持部800と、前記複数の転送路で共通に用いられる共通保持部850と、前記転送路ごとのデータ情報の入力状況に基づいて、前記データ情報を、前記共通保持部を経由させてから前記情報保持部に入力する制御を行なう第1制御部と、を有し、前記受信部は、前記共通保持部が保持する情報量に応じて前記送信部への新たなデータ転送を抑止する抑止部を有する。【選択図】図9

Description

本件は、情報処理装置,データ転送装置,およびデータ転送方法に関する。
サーバ等の情報処理システム(情報処理装置)では、複数のシステムボード及びInput/Output(I/O)ボード等を相互に接続するために、バッファ装置をそなえたクロスバ等のデータ転送装置が用いられることがある。
バッファ装置は、Random Access Memory(RAM)等の外部メモリを用いたFirst-In First-Out(FIFO)で構成することができる。例えば、バッファ装置として、読み出し側バッファに空き容量がなくなった場合にデータ退避を行なうために、外部メモリにオーバフロー領域を設けた構成が知られている(例えば、特許文献1参照)。
国際公開第2010/122613号パンフレット
情報処理システムにおいて、パケット(データ)の送信元から送信先までの転送経路に、各々が独立したバッファを持つ複数のVirtual Channel(VC;仮想チャネル,転送路)が設定されることがある。送信元は、送信元−送信先間に設定された複数のVCのうちのいずれかのVCを介してデータを送出することができる。これにより、送信先までの一部のVCにおいて混雑等によりデータが停滞している場合でも、送信元は、送信先までの他のVCを選択することで、停滞の影響を受けずにデータを転送することができる。
送信元−送信先間の転送経路に複数のVCが設定される場合、バッファ装置は、VCごとに独立したバッファをそなえることになる。このとき、バッファ装置ではVCごとにバッファの制御が行なわれるため、回路の物量が増大することになる。また、バッファ装置をRAM等のメモリを用いたFIFOで構成する場合、VCごとにRAM及び周辺回路がそなえられることになり、回路の物量がさらに増大することになる。
1つの側面では、本発明は、入力されたデータを、データの送信元と送信先との間に設定された複数の転送路のうちのいずれかの転送路を介して出力するデータ転送装置をそなえる情報処理装置を、簡素な構成で実現することを目的とする。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の1つとして位置付けることができる。
本件の情報処理装置は、データを送信する第1の装置と、前記第1の装置から入力されたデータを、前記第1の装置と前記データの送信先である第2の装置との間に設定された複数の転送路のうちのいずれかの転送路を介して出力するデータ転送装置と、前記データ転送装置から前記データを受信する前記第2の装置と、をそなえ、前記データ転送装置は、前記第1の装置から前記データを受信し格納する受信部と、前記受信部から転送されたデータを格納し前記第2の装置に向けて送信する送信部と、を有し、前記送信部は、前記受信部から転送されたデータに関するデータ情報を、転送路ごとに保持する情報保持部と、前記複数の転送路で共通に用いられる共通保持部と、前記転送路ごとのデータ情報の入力状況に基づいて、前記情報保持部に入力されるデータ情報を、前記共通保持部を経由させてから前記情報保持部に入力する制御を行なう第1制御部と、を有し、前記受信部は、前記共通保持部が保持する情報量に応じて前記送信部への新たなデータ転送を抑止する抑止部を有する。
一実施形態及び変形例によれば、入力されたデータを、データの送信元と送信先との間に設定された複数の転送路のうちのいずれかの転送路を介して出力するデータ転送装置をそなえる情報処理装置を、簡素な構成で実現することができる。
情報処理システムの構成例を示す図である。 図1に示す情報処理システムの受信バッファの構成例を示す図である。 図1に示す情報処理システムの送信バッファの構成例を示す図である。 図2及び図3に示すキューの構成例を示す図である。 4個のVCで1RW−RAMを共用した構成例を示す図である。 図5に示すパケット管理部においてリード/ライト競合が発生する場合の一例を示すタイミングチャートである。 図6に示すタイミングチャートにおけるタイミングt12〜t20の間の入力キューの状態を示す図である。 一実施形態に係るクロスバの構成例を示す図である。 図8に示す送信パケット管理部の構成例を示す図である。 図9に示すプリキューの周辺回路の構成例を示す図である。 図8に示すプリキュー状態予測回路の構成例を示す図である。 図6に示すタイミングチャートにおいて、4段のプリキューを適用した場合のタイミングt12〜t30の間の入力キュー及びプリキューの状態を示す図である。 図8に示すクロスバにおける動作例を説明するタイミングチャートである。 図13に示すタイミングチャートにおけるタイミングt8〜t24の間の入力キュー及びプリキューの状態を示す図である。 図8に示すプリキュー状態予測回路の動作例を説明するフローチャートである。 図8に示す送信パケット管理部によるパケット情報入力処理の動作例を説明するフローチャートである。 図8に示す送信パケット管理部によるプリキューからの出力処理の動作例を説明するフローチャートである。 一実施形態の変形例に係る受信バッファの構成を示す図である。
以下、図面を参照して実施の形態を説明する。
〔1〕一実施形態
〔1−1〕情報処理システムについて
図1は、情報処理システム1の構成例を示す図である。
図1に示すように、情報処理システム1は、クロスバ2(クロスバボード)をそなえるとともに、クロスバ2を介して相互に接続される複数(例えば2個)のシステムボード3及び複数(例えば2個)のI/Oボード4をそなえる。
クロスバ(データ転送装置)2は、システムボード3及びI/Oボード4の各々と接続される複数(例えば4個)のポート(ポート固有部)2a、並びにポート2a間を完全結合するルーティング部2bをそなえる。
なお、複数のポート2aの各々は互いに同様の構成をそなえる。また、複数のシステムボード3の各々は互いに同様の構成をそなえ、複数のI/Oボード4の各々は互いに同様の構成をそなえる。以下の説明では、図1に示すように、特定のシステムボード3を説明する場合には符号A、Bを用い、特定のI/Oボード4を説明する場合には符号X、Yを用いる。また、特定のポート2aを説明する場合には、システムボードA、B、I/OボードX、Yに対向するポート2aについて、それぞれ符号A、B、X、Yを用いる。
各ポート2aは、バッファ装置の一例として、システムボード3から受信したパケット(データ)を格納する受信バッファ100と、ルーティング部2bを介して他のポート2aから転送されるパケットを格納し、宛先ポートへ送信する送信バッファ200とをそなえる。受信バッファ100及び送信バッファ200の構成については、後述する。
ルーティング部2bは、複数の受信バッファ100と複数の送信バッファ200との間を他対他で接続し、受信バッファ100からルーティング部2bに入力されたパケットを、クロスバ2内のいずれの宛先送信バッファ200へも転送可能に構成される。ルーティング部2bとしては、例えば、ポート2a間を相互に直接接続した静的網や、クロスバスイッチ等の動的網が挙げられる。
システムボード3及びI/Oボード4とクロスバ2との間でのパケット伝送は、送信経路(配線、パス)を共用した複数のVCを用いて行なわれる。各VCは、それぞれ独立したバッファを持ち、VC間で依存関係を持たない。例えば、或るVCを通過するパケットが停滞した場合でも、他のVCを通過するパケットは停滞しない(停滞したVCの影響を受けない)。
システムボード3は、Central Processing Unit(CPU)3a、メモリ3b、及びシステムコントローラ3cをそなえる。
CPU3aは、メモリ3b及びシステムコントローラ3cと接続され、種々の制御や演算を行なう演算処理装置(プロセッサ)である。CPU3aは、メモリ3b又は図示しないRead Only Memory(ROM)等に格納されたプログラムを実行することにより、システムボード3における種々の機能を実現する。
例えば、CPU3aは、パケットを送出する際に、送信先までの転送経路に設定されたVCのうち、競合が発生しない(パケットが混雑していない)VCを選択し、選択したVCの識別情報等をパケットに付加して送出することができる。なお、CPU3aは、クロスバ2におけるバッファの混雑状況等、VCの資源の状態を検知することができ、検知結果に基づいて、パケットを転送するVCを選択することができる。CPU3aによるパケットの送信先VCの選択は、上述した手法に限定されず、既知の種々の手法により行なうことが可能である。
メモリ3bは、種々のデータやプログラムを格納する記憶装置である。CPU3aは、プログラムを実行する際に、メモリ3bにデータやプログラムを格納し展開する。なお、メモリ3bとしては、例えばRAM等の揮発性メモリが挙げられる。
システムコントローラ3cは、システムボード3における種々の制御を行なうコントローラであり、図1に示す例では、クロスバ2との間のインタフェース制御を行なう。システムコントローラ3cは、送信バッファ30及び受信バッファ40をそなえる。送信バッファ30は、CPU3aが発行した他のシステムボード3又はI/Oボード4宛のパケット(VCの識別情報を含む)を一時的に格納し、クロスバ2へ送信する。受信バッファ40は、クロスバ2から受信した自システムボード3宛のパケットを一時的に格納し、CPU3a又はメモリ3bに渡す。
I/Oボード4は、カードスロット4a、ディスク4b、及びI/Oコントローラ4cをそなえる。
カードスロット4aは、種々のI/Oデバイスやネットワーク等のインタフェースカードが接続されるスロットである。ディスク4bは、種々のデータやプログラム等を格納するハードウェアである。ディスク4bとしては、例えばHard Disk Drive(HDD)等の磁気ディスク装置、Solid State Drive(SSD)等の半導体ドライブ装置、フラッシュメモリ等の不揮発性メモリ等の各種デバイスが挙げられる。カードスロット4aに接続されたインタフェースカードやディスク4b等は、CPU3aと同様に、VCの識別情報等をパケットに付加して送出してもよい。
I/Oコントローラ4cは、クロスバ2との間のインタフェース制御を行なうコントローラであり、システムコントローラ3cと同様に、送信バッファ30及び受信バッファ40をそなえる。受信バッファ40は、クロスバ2から受信したパケットを一時的に格納し、カードスロット4aに接続された機器若しくはネットワーク、又はディスク4bに渡す。送信バッファ40は、システムボード3等による要求に応じて、カードスロット4a又はディスク4bから出力されるパケットを一時的に格納し、クロスバ2へ送信する。
次に、図2及び図3を参照して、クロスバ2の受信バッファ100及び送信バッファ200について説明する。
図2は、図1に示す情報処理システム1の受信バッファ100の構成例を示す図であり、図3は、送信バッファ200の構成例を示す図である。なお、図2は、ポートAにそなえられる受信バッファ100の一例を示し、図3は、ポートXにそなえられる送信バッファ200の一例を示す。
はじめに、受信バッファ100について説明する。
図2に示すように、受信バッファ100は、受信データバッファ110、RTA(Routing Table Array)120、パケットデコーダ(Packet Decoder)130、ライトSTM(State Machine)140、及び受信カウンタ150をそなえる。また、受信バッファ100は、受信パケット管理部160、アービタ170、セレクタ180、及びリードSTM190をそなえる。
受信バッファ100は、システムボードAから受信したパケットを、受信データバッファ110及びパケットデコーダ130に渡す。
なお、受信バッファ100が受信したパケットには、送信元で付加された宛先情報、VCの識別情報、パケット長等の情報が含まれるパケットヘッダが付加されている。ここで、宛先情報としては、例えばパケットの送信先の識別番号等、パケットの送信元でパケットに付加されたユニークな識別情報が挙げられる。
受信データバッファ(Rx Data Buffer)110は、パケットの送信元(システムボード3又はI/Oボード4;図2に示す例ではシステムボードA)からのパケット本体をVCごとに格納するバッファである。受信データバッファ110としては、例えばRAM等の揮発性メモリが挙げられる。
RTA120は、受信したパケット中の宛先情報と宛先ポートとを対応付けるテーブルである。なお、宛先ポートとしては、パケットの転送先のポート2aを識別する転送先ポート固有部番号等の識別情報が挙げられる。
パケットデコーダ130は、パケットからパケット情報を抽出・解析するデコーダである。具体的には、パケットデコーダ130は、パケット中の情報に基づきパケット長を確認するとともに、パケット中の宛先情報とRTA120の情報とに基づき宛先ポートを確認(解析)する。そして、パケットデコーダ130は、パケット長及び宛先ポートの情報を含むパケット情報を生成して、受信パケット管理部160に送出する。
また、パケットデコーダ130は、入力されたパケット中の情報に基づきパケットのVCを判別し、判別したVCの受信データバッファ110にライトSTM140を用いてパケットを書き込む。さらに、パケットデコーダ130は、受信カウンタ150へ当該VCのカウント指示(例えば加算指示)を送出する。
ライトSTM140は、パケットデコーダ130からの指示に応じて受信データバッファ110への受信パケットの書き込みを制御する。
受信カウンタ(Rx ReqCNT)150は、複数(例えばn個;nは1以上の整数)のカウンタ(VC[0-n]ReqCNT)155をそなえ、受信バッファ100に格納されているパケット数をVCごとにカウントするものである。各カウンタ155は、パケットを1個受信する度に+1され、パケットを1個転送する度に−1される。例えば、受信カウンタ150は、パケットデコーダ130からの加算指示に応じて対応するVCのカウンタ155の値を1増加させる一方、アービタ170からの指示に応じて対応するVCのカウンタ155を1減少させる。
なお、nの値は、システムボードAと、システムボードB並びにI/OボードX及びYとの間の転送経路に設定された全VCの数に対応させることができる。
受信パケット管理部(Rx ReqQ)160は、複数(例えばn個)のキュー(VC[0-n]ReqQ)165をそなえ、パケット情報(宛先ポートやパケット長等)をVCごとにキュー165に格納して管理する。受信パケット管理部160は、アービタ170からキュー165の指示を受けると、対応するキュー165を開放してパケット情報を1つ出力する。
アービタ(ARB)170は、VC間のパケット出力要求を調停する調停部である。アービタ170は、受信カウンタ150の各カウンタ155の値(“>”の出力;図2中、“req”と表記)を参照し、待機中のパケットの中からどのVCのパケットを出力するか決定する。また、アービタ170は、セレクタ180に決定したVCのパケット情報の選択を指示し、リードSTM190に受信データバッファ110からの受信パケットの読み出しを指示する。そして、アービタ170は、受信カウンタ150に選択したVCのカウンタ155を1減算させ、選択したパケット情報を保持するキュー165の開放を受信パケット管理部160に指示する。
セレクタ(SEL)180は、受信パケット管理部160のキュー165から、アービタ170により指示されたキュー165を選択し、選択したキュー165に格納された先頭のパケット情報(図2中、“info”と表記)を読み出して、リードSTM190に渡す。
リードSTM190は、アービタ170からの指示に応じて受信データバッファ110からの受信パケットの読み出しを制御する。リードSTM190は、アービタ170から読出指示を受けると、セレクタ180により読み出されたパケット情報に対応するVCの受信パケットを読み出し、対応する宛先ポートに向けて転送する。
次に、送信バッファ200について説明する。
図3に示すように、送信バッファ200は、接続される入力ポートごとに、データバッファ210及び制御部220をそなえる。図3に示す例では、データバッファ210及び制御部220は、入力ポートA、B、及びYの各々に対応して設けられる。なお、図3では、入力ポートA、B、及びYに対応して、データバッファ210を“Port[A,B,Y] Data Buffer”と表記し、ポート制御部220を“Port[A,B,Y] ReqCtrl”と表記する。
また、図3に示すように、送信バッファ200は、データバッファ210及び制御部220の複数の組で(入力ポート間で)共通に用いられるアービタ270、セレクタ280、リードSTM290、及びセレクタ295をそなえる。
制御部220は、入力ポート(パケットの送信元)ごとに設けられるものであり、各制御部220は、パケットデコーダ230、ライトSTM240、送信カウンタ250、及び送信パケット管理部260をそなえる。なお、図3では、図の簡略化のため、ポートB及びYに対応する制御部220内部の図示を省略する。
データバッファ210、パケットデコーダ230、ライトSTM240、送信カウンタ250、及び送信パケット管理部260は、それぞれ図2に示す受信バッファ100の各構成と同様の機能を有する。
すなわち、各データバッファ210は、対応するシステムボード3又はI/Oボード4(図3に示す例ではシステムボードA、B、又はI/OボードY)からのパケット本体をVCごとに格納するバッファである。
パケットデコーダ230は、パケットデコーダ130と同様に、パケットからパケット情報を抽出・解析するデコーダである。パケットデコーダ230は、入力されたパケットのVCを判別し、判別したVCのデータバッファ210にライトSTM240を用いてパケットを書き込む。また、パケットデコーダ230は、送信カウンタ250へ当該VCのカウント指示を送出する。さらに、パケットデコーダ230は、パケット中の情報に基づきパケット長等のパケット情報を確認(解析)し、送信パケット管理部260へパケット情報を送出する。
なお、送信バッファ200に入力される全てのパケットは、対応する宛先(図3に示す例ではI/OボードX)へ送出されるため、送信バッファ200はRTA120を省略でき、パケットデコーダ230は宛先ポートの確認を省略できる。
ライトSTM240は、対応するパケットデコーダ230からの指示に応じて、対応するデータバッファ210への受信パケットの書き込みを制御する。
送信カウンタ(Tx ReqCNT)250は、複数(例えばn個)のカウンタ(VC[0-n]ReqCNT)255をそなえ、受信カウンタ150と同様に、送信バッファ200に格納されているパケット数をVCごとにカウントする。
送信パケット管理部(Tx ReqQ)260は、複数(例えばn個)のキュー(VC[0-n]ReqQ)265をそなえ、受信パケット管理部160と同様に、パケット情報をVCごとにキュー265に格納して管理する。
アービタ(ARB)270は、アービタ170と同様の機能を有する調停部であるが、アービタ170と異なり、VC間だけではなく、入力ポート間の調停も行なう。アービタ270は、送信カウンタ250の各カウンタ255の値(図3中、“Port[A,B,Y] req”と表記)を参照し、待機中のパケットの中からどの入力ポートのどのVCのパケットを出力するか決定する。また、アービタ270は、セレクタ280に決定したVCのパケット情報の選択を指示し、リードSTM290にデータバッファ210からの受信パケットの読み出しを指示する。そして、アービタ270は、送信カウンタ250に選択したVCのカウンタ255を1減算させ、送信パケット管理部260に選択したパケット情報を保持するキュー265の開放を指示する。
セレクタ(SEL)280は、セレクタ180と同様の機能を有するが、セレクタ180と異なり、複数の入力ポートにおける複数のVCから、キュー265を選択する。セレクタ280は、送信パケット管理部260のキュー265から、アービタ270により指示されたキュー265を選択し、選択したキュー265に格納された先頭のパケット情報(図3中、“Port[A,B,Y] info”と表記)を読み出して、リードSTM290に渡す。
リードSTM290は、リードSTM190と同様の機能を有するが、リードSTM190と異なり、複数の入力ポートのデータバッファ210からのパケットの読み出しを制御する。リードSTM290は、アービタ270から読出指示を受けると、指示された入力ポートのデータバッファ210をセレクタ295に選択させ、セレクタ280により読み出されたパケット情報に対応する入力ポート及びVCの受信パケットを読み出す。
セレクタ(SEL)295は、リードSTM290により指示されたデータバッファ210を選択し、選択したデータバッファ210に格納された先頭のパケットを送信先(図3に示す例ではI/OボードX)に向けて転送する。
なお、情報処理システム1において、パケットに加えてパケット情報(パケット長等)がルーティング部2bを介して受信バッファ100から伝達される場合、送信バッファ200のパケットデコーダ230を省略してもよい。
ところで、パケット情報を管理する受信パケット管理部160及び送信パケット管理部260内部のキュー165及び265(VC[0-n]ReqQ)は、それぞれFIFOで構成されてもよい。以下、FIFOで構成される受信パケット管理部160及び送信パケット管理部260をまとめてパケット管理部360といい、キュー165及び265をまとめてキュー365という。
図4は、図2及び図3に示すキュー365(165及び265)の構成例を示す図である。
図4に示すように、パケット管理部360内の各キュー365は、出力キュー310、セレクタ320、1 Read-Write-RAM(1RW−RAM)330、及び入力キュー340をそなえる。出力キュー(Out-Q)310及び入力キュー(In-Q)340としては、レジスタ等、高速なリード/ライト動作が可能な回路が挙げられる。
1RW−RAM330は、RAMへのアクセスのための1組のアドレス及びデータを用いて、これらのアドレス及びデータをリード動作及びライト動作で共用するものであり、リード動作とライト動作とが所定サイクルごとに交互に切り替わる。1RW−RAM330としては、例えばStatic RAM(SRAM)等が挙げられる。
セレクタ(SEL)320は、パケットデコーダ130又は230から入力されたパケット情報(図4中、“info_in”と表記)、入力キュー340内のパケット情報、及び1RW−RAM330内のパケット情報のいずれかを選択し出力キュー310へ出力する。
キュー365は、出力キュー310の空き状況に応じてセレクタ320を制御する。例えば、キュー365は、待機中のパケット数が少ない(空き領域がある)場合、出力キュー310のみを使用するようにセレクタ320を制御し、パケットデコーダ130又は230から入力されたパケット情報を出力キュー310に格納する。一方、キュー365は、出力キュー310が溢れた(空き領域がない)場合、入力されたパケット情報を、入力キュー340を介して1RW−RAM330に書き込む。そして、キュー365は、出力キュー310が空くのを待って、セレクタ320を制御し1RW−RAM330からパケット情報を読み出して、出力キュー310に格納する。
なお、出力キュー310からの出力(図4中、“vcn_info_out”と表記)は、セレクタ180又は280により選択され取り出されるパケット情報となる。
1RW−RAM330は、集積度が高い反面、リード/ライトを同時に行なうことができず、リード/ライト競合が発生することがある。リード/ライト競合とは、1RW−RAM330のリード動作のタイミングで入力キュー340がライト動作可能になることをいう。この場合、キュー365は、次回以降の1RW−RAM330のライト動作のタイミングまで1RW−RAM330へライト動作の対象データを書き込むことができない。
そこで、キュー365は、1RW−RAM330に書き込むパケット情報を入力キュー340である程度溜め込み、複数のパケット情報を同時に(まとめて)1RW−RAM330に書き込み、複数のパケット情報を同時に(まとめて)1RW−RAM330から読み出す。このような動作を行なうことで、キュー365は、1RW−RAM330を用いることによるリード/ライト競合を解決する。
なお、FIFOはFlip Flop(FF)で構成されてもよいが、キュー365で扱われるパケット数が多くなるほど、図4に示す構成よりも面積効率が低下し、消費電力も増大する。従って、FIFOでは、図4に示すように出力キュー310及び入力キュー340と1RW−RAM330とを組み合わせて構成した方が、FFで構成するよりも面積効率が上がり、消費電力を抑えることができる。
ここで、図4に示すように、単純にVCごとに1RW−RAM330を設けるのが最も簡単な構成であるが、複数のキュー365で1RW−RAM330を共用することで、さらにパケット管理部360の面積効率が上がり、消費電力を抑えることができる。
図5は、4個のVCで1RW−RAM430を共用した構成例を示す図である。
一例として、図5に示すパケット管理部460は、複数(例えば4個)のキュー465、並びに各キュー465で共用される1RW−RAM430及びセレクタ435をそなえる。また、各キュー465は、出力キュー410、セレクタ420、及び入力キュー440をそなえる。
出力キュー410、セレクタ420、1RW−RAM430、及び入力キュー440は、それぞれ図4に示すキュー365の各構成と同様の機能を有する。
パケット管理部460(各キュー465)は、出力キュー410(vc[0-3]-Out-Q)の空き状況に応じてセレクタ420(SEL A1〜SEL A4)を制御する。例えば、パケット管理部460は、待機中のパケット数が少ない(空きがある)出力キュー410については、出力キュー410のみを使用するように対応するセレクタ420を制御し、入力されたパケット情報(図5では“info_in”と表記)を出力キュー410に格納する。なお、図5に示す構成の場合、パケットデコーダ230からの入力のパスもVC間で共用されるため、パケット情報にはVC番号等のVCの識別情報が含まれることが好ましい。
一方、パケット管理部460は、パケット情報が溢れた(空き領域がない)出力キュー410については、入力されたパケット情報を、対応するVCの入力キュー440(vc[0-3]-In-Q)に格納する。そして、パケット管理部460は、セレクタ435(SEL B)を制御し、パケット情報をライト可能な入力キュー440を選択して、選択した入力キュー440に格納された先頭のパケット情報を1RW−RAM430に書き込む。また、パケット管理部460は、出力キュー410が空くのを待って、対応するセレクタ420を制御し1RW−RAM430からパケット情報を読み出して、出力キュー410に格納する。
なお、出力キュー410からの出力(図5中、“vc[0-3]_info_out”と表記)は、セレクタ180又は280により選択され取り出されるパケット情報となる。
このように、同一入力ポート内のVC間で1RW−RAM430を共用させる構成は、比較的簡単に実現することができる。
なお、送信バッファ200では、各入力ポートは独立に動作するため、入力ポート間で同じ1RW−RAM430を用いることは難しい。そこで、送信バッファ200では、入力ポートごとに、図5に示すように複数のVC間で同じ1RW−RAM430を用いることができる。キュー465は、VCごとの個別資源であるため、送信パケット管理部260では合計で入力ポート数*VC数のキュー465が設けられることになるが、図5に示す構成とすることで、1RW−RAM430及び周辺回路の物量を低減できる。
ところで、クロスバ2がサポートする最短のパケット長が1サイクルである場合、図5に例示する1RW−RAM430を共用した構成では、リード/ライト競合に追従できない場合がある。この場合、リード/ライト競合を解決するために入力キュー440を大きくする等の対処が行なわれることになる。
図6は、図5に示すパケット管理部460においてリード/ライト競合が発生する場合の一例を示すタイミングチャートであり、図7は、図6に示すタイミングチャートにおけるタイミングt12〜t20の間の入力キュー440の状態を示す図である。
なお、前提として、1RW−RAM430のリード/ライトは3パケット単位で行なわれ、リードサイクル/ライトサイクルは1サイクルごとに交互に切り替えるものとする。
また、図6において、“write slot”は1RW−RAM430がライト動作可能なサイクルである事を示す。さらに、“info_in_vc”はそのサイクルでパケット管理部460が受信したパケットのVC番号、“vc[0-3]-In-Q”は各VCの入力キュー440で待機中のパケット数をそれぞれ示す。また、“vc[0-3]-write-req”は各VCの1RW−RAM430へのライト要求、“ram_write_enb”はそのサイクルに1RW−RAM430にライトしたVC番号をそれぞれ示す。
図6に示すように、タイミングt1では、VC0の入力キュー440内に3つのパケット情報が溜まるため、VC0がライト可能となるが、“write slot”待ちのためライト動作は1サイクル待たされる。タイミングt2では、VC1がライト可能となるが、VC0とのライト競合が発生するため先にVC0のライト動作が行なわれる。従って、VC1は2サイクル待たされる。
タイミングt3では、VC2がライト可能となるが、VC1とのライト競合が発生するため、VC2は3サイクル待たされる。タイミングt4では、VC3がライト可能となるが、VC1及びVC2とのライト競合が発生するため4サイクル待たされる。
以上のように、タイミングt1〜t4では、VC3は最大4サイクル待たされるが、4サイクル待った後のタイミングt9〜t12では、全てのVCのパケットが3つ未満になり、リード/ライト競合は解消する。
一方、タイミングt13〜t16においても、タイミングt1〜t4と同様にVC3がライト待ちとなる。ところが、タイミングt9〜t12の場合と異なり、タイミングt16〜t19において、パケット管理部460がライト待ち中のVC(VC3)と同一VCのパケット情報を連続して受信している。このとき、図7に示すように、VC3(入力キュー440)では、最大7段の領域(バッファ)が用いられることになる(タイミングt20)。
VC3は、タイミングt16〜t19のような場合でも全てのパケット情報を格納できるように構成されることが望ましい。この場合、入力キュー440に要求される段数は、
・VC間のライト競合がない場合:VC数*4段(溜め込む数3段+“write slot”待ち1段)
・VC間のライト競合がある場合:VC数*(4+VC数−1)段
となる。このように、入力キュー440は、全VC数の2乗に比例した段数を持つことが望ましい。
図6及び図7に示す例は、VC4個で1RW−RAM430を共用した場合のリード/ライト競合のワーストケースではあるが、少なくとも、複数のVCで1RW−RAMを共用した構成では、共用しない構成よりも、入力キューに要求される段数が多くなることがわかる。このため、入力キューの段数を全VC数の2乗に比例した段数とすることも考えられるが、面積効率が低下し消費電力が増大することになるため、複数のVCで1RW−RAMを共用することの利点が損なわれることになる。
そこで、一実施形態の一例としてのクロスバ20(受信バッファ500及び送信バッファ700)は、以下に詳述するように、最短パケット長が1サイクルの場合でも、1RW−RAMを共用する送信パケット管理部760を、少ない資源で構成する。
〔1−2〕クロスバの構成例
図8は、一実施形態の一例としてのクロスバ20の構成例を示す図である。
以下、図8を参照して、一実施形態に係るクロスバ20におけるリクエストキュー制御について説明する。
クロスバ20は、クロスバ2と同様に、図1に示す情報処理システム1に適用されるものであり、入力されたデータを、データの送信元と送信先との間に設定された複数のVC(転送路)のうちのいずれかの転送路を介して出力するデータ転送装置である。
一実施形態に係るクロスバ20は、図1に示すルーティング部2bをそなえるとともに、図2及び図3に示す複数の受信バッファ100及び送信バッファ200(ポート2a)とは異なる複数の受信バッファ500及び送信バッファ700(ポート2a)をそなえる。
クロスバ20は、送信バッファ700の送信パケット管理部760に、VC間で共通に使用されるプリキュー850(図9参照)をそなえる。また、クロスバ20は、受信バッファ500に、プリキュー850の使用状態を予測するプリキュー状態予測回路600をそなえる。このような構成とすることで、クロスバ20は、最小限のキュー資源の追加によって複数のVC間で1RW−RAM830(図9参照)を共有することが可能となる。
以下、送信バッファ700及び受信バッファ500の各々の構成の詳細を説明する。
〔1−2−1〕送信バッファの構成
はじめに、図8〜図10を参照して、送信バッファ700の構成例を説明する。
図9は、図8に示す送信パケット管理部760の構成例を示す図であり、図10は、図9に示すプリキュー850の周辺回路の構成例を示す図である。
送信バッファ(送信部)700は、送信バッファ200と同様に、受信バッファ500から転送されたパケット(データ)を格納し送信先に向けて送信する。送信バッファ700は、接続される入力ポートごとに、データバッファ710及び制御部720をそなえる。図8に示す例では、データバッファ710及び制御部720は、入力ポートA、B、及びYの各々に対応して設けられる。
また、図8に示すように、送信バッファ700は、データバッファ710及び制御部720の複数の組で(入力ポート間で)共通に用いられるアービタ770、セレクタ780、リードSTM790、及びセレクタ795をそなえる。
制御部720は、入力ポートごとに設けられるものであり、各制御部720は、パケットデコーダ730、ライトSTM740、送信カウンタ750、及び送信パケット管理部760をそなえる。なお、図8では、図の簡略化のため、ポートB及びYに対応する制御部720内部の図示を省略する。
なお、送信バッファ700は、送信パケット管理部760の構成を除き、図3に示す送信バッファ200と基本的に同様の構成をそなえるため、重複した説明を省略する。
送信パケット管理部760は、図9に示すように、複数(例えば4個)のキュー765、並びに、各キュー765で共用される1RW−RAM830、セレクタ835、セレクタ845、及びプリキュー850をそなえる。また、各キュー765は、出力キュー810、セレクタ820、及び入力キュー840をそなえる。
出力キュー810、セレクタ820、1RW−RAM830、セレクタ835、及び入力キュー840は、それぞれ図5に示すキュー465の各構成と同様の機能を有する。
すなわち、各出力キュー(出力保持部)810及び各入力キュー(入力保持部)840は、それぞれ出力キュー410及び入力キュー440と同様に、複数のVCに対応して設けられ、送信パケット管理部760に入力されたパケット情報をVCごとに保持する。1RW−RAM(記憶部)830は、1RW−RAM430と同様に、複数のVCで共通に用いられ、書き込みと読み出しとが交互に行なわれる。1RW−RAM830としては、例えばSRAM等の不揮発性メモリが挙げられる。
このように、出力キュー810、セレクタ820、1RW−RAM830、セレクタ835、及び入力キュー840は、受信バッファ500から転送されたパケットに関するパケット情報(データ情報)を、VCごとに保持する情報保持部800の一例である。
プリキュー(pre-Q,共通保持部)850は、入力ポートごとに、複数のVCで共通に用いられる退避用のキューである。
出力キュー810、入力キュー840、及びプリキュー850としては、例えば、それぞれ、レジスタ等、高速なリード/ライト動作が可能な回路が挙げられる。
セレクタ(SEL C)845は、パケットデコーダ730から入力されたパケット情報(図9中、“info_in”と表記)及びプリキュー850に格納された先頭のパケット情報(図9中、“pre-Q-info”と表記)のいずれかを選択し情報保持部800へ出力する。例えば、セレクタ845は、プリキュー850の使用量>0の場合に、プリキュー850の先頭に格納されたパケット情報を選択する。なお、パケット情報には、VC番号等のVCの識別情報、及びパケット長の情報等が含まれる。
次に、図10を参照して、プリキュー850の周辺回路について説明する。
図10に示すように、送信パケット管理部760は、上述した構成に加えて、プリキュー制御回路860、及び入出力キュー/RAM制御回路870をさらにそなえる。
プリキュー制御回路(第1制御部)860は、情報保持部800に入力されるパケット情報を、プリキュー850を経由させてから情報保持部800に入力する制御を行なう。例えば、プリキュー制御回路860は、VCごとのパケット情報の入力状況に基づいて、保持する情報量(パケット情報)が所定量(例えば4つ)に達する入力キュー840については、当該入力キュー840に入力されるパケット情報を、プリキュー850を経由させてから入力キュー840に入力する制御を行なう。
具体的には、プリキュー制御回路860は、セレクタ845から出力されたパケット情報(図10中、“pre-Q-out”と表記)を入力される。また、プリキュー制御回路860は、入出力キュー/RAM制御回路870から1RW−RAM830の使用状態、出力キュー810及び入力キュー840の使用量、1RW−RAM830の“write slot”の状態を入力される。そして、プリキュー制御回路860は、入力された情報に基づいて、後述のようにプリキュー850のFIFO制御及びセレクタ845の制御を行なう。
入出力キュー/RAM制御回路(第2制御部)870は、複数の出力キュー810が保持するVCごとの情報量に基づいて、情報保持部800に入力されたパケット情報を、入力キュー840及び1RW−RAM830を経由させてから、対応する出力キュー810に入力する制御を行なう。
例えば、入出力キュー/RAM制御回路870は、待機中のパケット数が少ない(空きがある)出力キュー810については、出力キュー810のみを使用するように対応するセレクタ820を制御し、入力されたパケット情報(図9では“info_in”と表記)を出力キュー810に格納する。このとき、セレクタ845の制御はプリキュー制御回路860が行なう。なお、図9に示す構成の場合、パケットデコーダ730からの入力のパスもVC間で共用されるため、パケット情報にはVC番号等のVCの識別情報が含まれることが好ましい。
一方、入出力キュー/RAM制御回路870は、パケット情報が溢れた(空き領域がない)出力キュー810については、入力されたパケット情報を、プリキュー制御回路860と共同して、対応するVCの入力キュー840又はプリキュー850に格納する。入力キュー840に格納されたパケット情報については、入出力キュー/RAM制御回路870は、セレクタ835を制御し、パケット情報をライト可能な入力キュー840を選択して、選択した入力キュー840に格納された先頭のパケット情報を1RW−RAM830に書き込む。また、入出力キュー/RAM制御回路870は、出力キュー810が空くのを待って、対応するセレクタ820を制御し1RW−RAM830からパケット情報を読み出して、出力キュー810に格納する。
ここで、入出力キュー/RAM制御回路870は、セレクタ845から出力されたパケット情報(図10中、“pre-Q-out”と表記)を入力される。また、入出力キュー/RAM制御回路870は、後述のように1RW−RAM830のリード/ライト制御、出力キュー810及び入力キュー840のFIFO制御を行なうとともに、これらの使用状態、使用量、“write slot”の状態を取得し、プリキュー制御回路860へ出力する。
以下、プリキュー制御回路860及び入出力キュー/RAM制御回路870の制御態様を説明する。
新規に受信したパケット情報は、該当するVCの出力キュー810に空きがない場合、1RW−RAM830に読み出し待ちのパケット情報がある場合、又はプリキュー850の使用量≧1の場合、以下のルールでプリキュー850又は該当するVCの入力キュー840に登録される。
(i)プリキュー850の使用量≧1の場合:FIFOの順序保証のため、プリキュー850に登録される。
(ii)プリキュー850の使用量=0の場合:
(a)1RW−RAM830がライトサイクルの場合:該当するVCの入力キュー840に登録される。
(b)1RW−RAM830がリードサイクルの場合:
(b−1)全VCの入力キュー840の使用量<3の場合(1RW−RAM830へのライト対象のパケット情報がない場合):ライト競合が起こらないため、該当するVCの入力キュー840に登録される。
(b−2)到来パケットとは異なるVCの入力キュー840の使用量≧3の場合:到来パケットのVCの入力キュー840に登録した場合、当該入力キュー840の使用量が3になるとライト競合が発生してしまうため、到来パケットはプリキュー850に登録される。
(b−3)到来パケットと同じVCの入力キュー840の使用量≧3の場合:次のライトサイクルで複数(例えば3つ)のパケット情報がまとめて1RW−RAM830にライトされるため、該当するVCの入力キュー840に登録される。
また、プリキュー850の先頭に格納されたパケット情報は、以下のいずれかの条件が成立すると、プリキュー850から該当するVCの入力キュー840に登録される。
(iii)1RW−RAM830がライトサイクルの場合
(iv)1RW−RAM830がリードサイクルの場合で、以下の(a)又は(b)の場合
(a)全VCの入力キュー840の使用量<3の場合(1RW−RAM830へのライト対象のパケット情報がない場合)
(b)プリキュー850の先頭パケットと同じVCの入力キュー840の使用量≧3の場合
なお、上記(iv)(a)の条件とする理由は、ライト競合が起こらないためであり、(iv)(b)の条件とする理由は、次のライトサイクルで複数(例えば3つ)のパケット情報がまとめて1RW−RAM830にライトされるためである。
上記の各条件において、プリキュー850への/からのパケット情報の格納/読出はプリキュー制御回路860により行なわれ、入力キュー840への/からのパケット情報の格納/読出は入出力キュー/RAM制御回路870により行なわれる。
上述のように、プリキュー制御回路860及び入出力キュー/RAM制御回路870は、リードサイクルで1RW−RAM830へのライト待ちとなるVC(入力キュー840の使用量≧3)が1個以下になるように制御することで、1RW−RAM830へのライト競合を解消する。
このように、送信パケット管理部760は、VC間の1RW−RAM830へのライト競合によっていずれかの入力キュー840が溢れる可能性がある場合に、後続パケットの到来情報をプリキュー850に退避させる。これにより、1RW−RAM830をVC間で共用することにより追加されることになるキュー資源(段数)を最小限に抑えることができる。
また、送信パケット管理部760は、入力キュー840の前段にプリキュー850及びセレクタ845をそなえるとともに、プリキュー制御回路860をそなえる。従って、図5に示す送信パケット管理部460における情報保持部800(入力キュー440から出力キュー410までのフロー(論理))を変えずに済み、一実施形態に係る送信バッファ700を容易に実現することができる。
〔1−2−2〕受信バッファの構成
次に、図8、図11、及び図12を参照して、受信バッファ500の構成例を説明する。
図11は、図8に示すプリキュー状態予測回路600の構成例を示す図であり、図12は、図6に示すタイミングチャートにおいて、4段のプリキュー850を適用した場合のタイミングt12〜t30の間の入力キュー840及びプリキュー850の状態を示す図である。
受信バッファ(受信部)500は、受信バッファ100と同様に、送信元からパケット(データ)を受信し格納する。受信バッファ500は、図8に示すように、受信データバッファ510、RTA520、パケットデコーダ530、ライトSTM540、受信カウンタ550、及び受信パケット管理部560をそなえる。また、受信バッファ500は、アービタ570、セレクタ580、リードSTM590、及びプリキュー状態予測回路600をそなえる。なお、図8では、図の簡略化のため、ポートB及びYに対応する受信バッファ500内部の図示を省略する。
なお、受信バッファ500は、アービタ570、リードSTM590、及びプリキュー状態予測回路600の構成を除き、図2に示す受信バッファ100と基本的に同様の構成をそなえるため、重複した説明を省略する。
アービタ570は、基本的にアービタ270と同様の構成であるが、プリキュー状態予測回路600から抑止指示を受けると、調停を停止する点が異なる。具体的には、アービタ570は、プリキュー状態予測回路600から抑止指示を受けている間、セレクタ580及びリードSTM590に対するパケット情報及び受信パケットの選択指示の送信を抑止する。
リードSTM590は、基本的にリードSTM290と同様の構成であるが、アービタ570から読出指示を受けると、受信データバッファ510から読み出した受信パケットの先頭であることを示す情報と、当該VCの情報とをプリキュー状態予測回路600へ出力する点が異なる。リードSTM590から送信される受信パケット及びVCの情報(例えばVC番号)は、プリキュー状態予測回路600において、受信バッファ500から宛先ポートへこれから送信される受信パケット及びVCを示す情報として、プリキュー850の使用量の予測に用いられる。
プリキュー状態予測回路(抑止部)600は、送信バッファ700のプリキュー850が保持する情報量に応じて送信バッファ700への新たなパケット(データ)転送を抑止する。例えば、プリキュー状態予測回路600は、転送するパケット及び直前に転送したパケットの各々のVCの情報に基づいて、プリキュー850が保持する情報量を予測し、予測結果に応じて送信バッファ700への新たなパケット転送を抑止する。
つまり、プリキュー状態予測回路600は、プリキュー850が使用されている可能性のある最大量を管理し、プリキュー850がオーバフローする可能性がある場合に、アービタ570での調停を抑止することでプリキュー850のオーバフローを回避する。受信バッファ500は、送信バッファ700内のプリキュー850の状態を直接取得せずに予測することができ、受信バッファ500から送信バッファ700への情報の伝搬時間に影響されずに、プリキュー850の使用量を確実に予測することができる。
図6のタイミングチャートで示した通り、1RW−RAM830のライト競合は異なるVCの1サイクルパケットが連続するケースで発生する。このため、プリキュー状態予測回路600は、連続する1サイクルパケットのVC番号を追跡することでプリキュー850が使用されている可能性のあるタイミングを検出し、プリキュー850の使用量を予測する。
なお、一実施形態に係る受信バッファ500は、1つのプリキュー状態予測回路600をそなえる。このプリキュー状態予測回路600により状態が予測されるプリキュー850は、パケットの転送先である複数の送信バッファ700のうちのいずれかの送信バッファ700内に設けられるものである。つまり、プリキュー状態予測回路600は、各送信バッファ700内のプリキュー850の状態をそれぞれ予測するのではなく、プリキュー850が全送信バッファ700で共通であると仮定して状態を予測する。
プリキュー状態予測回路600は、図11に示すように、カレントVC保持部610、バスビジー判定部620、及びプリキューカウンタ630をそなえる。
プリキュー状態予測回路600は、リードSTM590から受信するパケットの先頭タイミング(ヘッド;head)をトリガにして動作する。
カレントVC保持部(CurVC)610は、最後に受信バッファ500から出力したパケットのVC番号を記録する。カレントVC保持部610は、パケットのヘッドのタイミングでVC番号をセット(set)し、ヘッドでないタイミングではセットされているVC番号をホールド(hold)する。つまり、カレントVC保持部610には、受信バッファ500から直前に出力されたパケットのVC番号(直前のVC番号)が保持される。
バスビジー判定部(BusBUSY)620は、プリキュー850が使用されている可能性がある状態を示すために用いられる。バスビジー判定部620は、ヘッドのタイミングで例えば“1”をセットし、プリキューカウンタ630のカウント値が“0”の状態でヘッドが途切れると、セットされている値を例えば“0”にリセット(reset)する。なお、ヘッドが途切れる場合としては、そのサイクルにおいて受信バッファ500からパケットが出力されない場合や、2サイクル以上のパケット長のパケットが受信バッファ500から出力されている場合等が挙げられる。
プリキューカウンタ630は、プリキュー850の使用予測量をカウントするカウンタである。
具体的には、プリキューカウンタ630は、バスビジー判定部620に“1”がセットされている状態で、リードSTM590からの出力パケットのVC番号(現在のVC番号)とカレントVC保持部610が保持する直前のVC番号とが異なる場合、当該出力パケットのヘッドのタイミングで、例えばカウント値を1加算する。
また、プリキューカウンタ630は、リードSTM590からのパケットのヘッドが途切れると(直前の転送サイクルにおいてパケットが転送されていないと)、例えばカウント値を1減算する。
さらに、プリキューカウンタ630は、リードSTM590からの出力パケットのVC番号とカレントVC保持部610が保持する直前のVC番号とが等しい場合、当該出力パケットのヘッドのタイミングで、カウント値をホールドする。これは、プリキュー850に連続して同じVCのパケット情報が入力されると、プリキュー850から先のパケット情報が出ていくとともに、後のパケット情報が入ることになり、プリキュー850の使用量は±0になるためである。
また、プリキューカウンタ630は、カウント値がプリキュー850の最大値(例えば4)に達した場合には、アービタ570へ抑止指示を送出することにより、プリキュー850の上書き(overwrite)を回避する。なお、アービタ570による調停動作の抑止により、受信バッファ500からのパケットの出力が止まると、ヘッドが途切れる。この場合、プリキューカウンタ630のカウント値は次のサイクルで1減算されるため、プリキューカウンタ630からの抑止指示は停止する。
なお、カレントVC保持部610及びバスビジー判定部620としては、例えばレジスタ等の回路が挙げられ、プリキューカウンタ630としては、例えばカウンタ回路等が挙げられる。
このように、プリキュー状態予測回路600は、対応する送信バッファ700内のプリキュー850の使用量をプリキューカウンタ630により予測し、プリキュー850が溢れそうな場合はアービタ570による調停を抑止して、送信バッファ700への受信パケットの転送を停止する。従って、受信バッファ500から転送されるパケットの状態に追従して、プリキュー850の使用量を確実に予測することができる。
ここで、図12を参照して、図6に示すタイミングチャートにおいて、4段のプリキュー850を適用し、プリキュー状態予測回路600を設けない場合のタイミングt12〜t30の間の入力キュー840の状態を説明する。
図12のタイミングt20では、図7のタイミングt20においてVC3の入力キュー440に溜まった7つのパケット情報のうち、3つのパケット情報がプリキュー850によって吸収されている。また、図12のタイミングt21〜t30においても、各VCの入力キュー840に既定の4個を超えてパケット情報が格納されることはない。
しかし、プリキュー850は、全VCで共用されるFIFOキューであるため、ライト競合が連続して発生する最悪ケースを考慮すると、図12のタイミングt12の状態(プリキュー850が未使用)がタイミングt30の状態(プリキュー850が3段使用済み)と置き換わった状態にもなり得る。このように、プリキュー850に要求される段数が無限に増加するというケースが起こり得る。
これに対し、一実施形態に係る受信バッファ500のように、プリキュー状態予測回路600を設けることで、プリキュー850への入力を止め、上述した最悪ケースのような特殊条件下でのプリキュー850のオーバフローを回避する事が可能となる。従って、送信バッファ700側のプリキュー850の段数を少量(例えば4段)に限定することができる。
なお、プリキュー状態予測回路600は、自受信バッファ500が送出したパケットのVCに基づいて、プリキュー850の状態を予測するものとして説明したが、これに限定されるものではない。例えば、プリキュー状態予測回路600は、送信バッファ700と直接結線すること等により、プリキュー850の使用状態を示す信号を受け取ってもよい。この場合、プリキュー状態予測回路600は、送信バッファ700から受け取ったプリキュー850の使用状態に応じてアービタ570を抑止する機能をそなえればよく、より簡素な構成とすることができる。
また、受信バッファ500の受信パケット管理部560は、図5に示すパケット管理部460と同様の構成とすることができる。例えば、システムボード3のCPU3aは、上述のように、クロスバ2におけるバッファの混雑状況等、VCの資源の状態を検知することができ、検知結果に基づいて、パケットを転送するVCを選択することも可能である。従って、CPU3aは、パケットを送信する前に、入力キュー440が混雑しているVCを避けて、他のVCを選択することができるため、入力キュー440がオーバフローする確率が低いからである。
〔1−3〕動作例
次に、上述の如く構成された一実施形態の一例としての情報処理システム1の動作例を説明する。
〔1−3−1〕クロスバの動作例
はじめに、図13及び図14を参照して、クロスバ20の動作例を説明する。
図13は、図8に示すクロスバ20における動作例を説明するタイミングチャートであり、図14は、図13に示すタイミングチャートにおけるタイミングt8〜t24の間の入力キュー840及びプリキュー850の状態を示す図である。
前提として、各VCの入力キュー840の段数は4段であり、入力キュー840は3個のパケット情報を受信したら1RW−RAM830へライトするものとする。また、図13では、予め全VCに2個のパケット情報が溜まっているものと仮定する。さらに、受信バッファ500と送信バッファ700とはルーティング部2bを介して接続されるため、時間差をもって動作する。ここでは、時間差(伝搬時間)を8サイクルと仮定し、受信バッファ500からタイミングt0で出力されたパケットはタイミングt8で送信バッファ700内のプリキュー850に到着するものとする。また、タイミングt8〜t20のパケットは1サイクルパケットであり、タイミングt22のパケットは3サイクルパケットである。
なお、図13において、“info_in_vc”は受信バッファ500から送信バッファ700に到来したパケットのVC番号とパケット長とを表す。また、“PreQ-CNT”はプリキューカウンタ630のカウント値を表し、“PreQ-Use”は実際のプリキュー850の使用数を表す。
プリキュー850では、タイミングt9,t17のように、以下の(I)及び(III)の条件を満たす場合に、ライトのみが発生するため、使用量が増加する。
(I)リードサイクルに1RW−RAM830へのライト待ちとなるVC(入力キュー840の使用量≧3)がある場合。
(II)新規パケットのヘッドを受信しているタイミングでプリキュー850からの出力(pre-Q-out)のVCが切り替わる場合。
なお、上記(I)は、タイミングt9ではVC0が該当し、タイミングt17ではVC1が該当する。また、上記(II)は、出力VCが、タイミングt9ではVC0からVC1に切り替わっており、タイミングt17ではVC1からVC2に切り替わっている。
また、プリキュー850では、タイミングt10〜t16,t19のように、以下の(III)の条件を満たす場合に、1RW−RAM830へのライト競合は発生せず、プリキュー850からのリード及びライトが同時に起こるため、使用量は増加しない。
(III)プリキュー850からの出力(pre-Q-out)で同一VCのパケットが連続している場合。
さらに、プリキュー850では、タイミングt18,t20,t22のように、以下の(IV)又は(V)の条件を満たす場合に、1RW−RAM830へのライト競合は発生せず、使用量は増加しない。
(IV)プリキュー850からの出力(pre-Q-out)でVCの切り替わりがあっても、ライトサイクルの場合。
(V)1RW−RAM830へのライト待ちとなるVC(入力キュー840の使用量≧3)がない場合。
また、プリキュー850では、タイミングt21,t23のように、以下の(VI)又は(VII)の条件を満たす場合に、プリキュー850からのリードのみが発生するため、使用量が減少する。
(VI)パケット間に隙間が生じた場合(パケットのヘッドが途切れ、パケット情報が入力されなかった場合)。
(VII)パケット長が2サイクル以上の場合(パケットのヘッドが連続せず、パケット情報が入力されなかった場合)。
以上のように、プリキュー状態予測回路600は、最悪のライト競合状態を仮定して動作するため、実際のプリキュー850の使用数である“PreQ-Use”よりも“PreQ-CNT”の数の方が大きくなる。図13に示す例では、“PreQ-Use”の最大値が“2”であるのに対して“PreQ-CNT”の最大値は“4”である。プリキュー850の数が4段の場合にはタイミングt13でアービタ570の動作を抑止されるため、“PreQ-Use”及び“PreQ-CNT”の大小関係が逆転することはない。
このように、プリキュー状態予測回路600によれば、プリキュー850の使用量を余裕を持たせた値で予測でき、プリキュー850のオーバフローをより確実に回避することができる。従って、プリキュー850の段数を例えば4段に制限した場合でも、プリキュー850の上書きを抑止することが可能である。
〔1−3−2〕プリキュー状態予測回路の動作例
次に、図15を参照して、受信バッファ500のプリキュー状態予測回路600の動作例を説明する。
図15は、図8に示すプリキュー状態予測回路600の動作例を説明するフローチャートである。
なお、図15に示す処理は、受信バッファ500がパケットを転送可能なサイクル(転送サイクル;例えば1サイクル)ごとに実施される。
はじめに、図15に示すように、プリキュー状態予測回路600のプリキューカウンタ630により、リードSTM590からのヘッドの入力があるか否かが判断される(ステップS1)。ヘッドの入力がある場合(ステップS1のYesルート)、カレントVC保持部610により、VC番号(CurVC)が更新される(ステップS2)。また、バスビジー判定部620により、現在の状態がバスビジーであるか否か、例えばレジスタに“1”がセットされているか否かが判断される(ステップS3)。バスビジーはない(レジスタに“0”がセットされている)場合(ステップS3のNoルート)、バスビジー判定部620によりレジスタに“1”がセットされ(ステップS4)、処理が終了する。
一方、バスビジーである(レジスタに“1”がセットされている)場合(ステップS3のYesルート)、既にバスビジーであるため、バスビジー判定部620によりレジスタの値がホールドされ(ステップS5)、処理がステップS6に移行する。ステップS6では、プリキューカウンタ630により、リードSTM590からの出力VC番号とカレントVC保持部610に格納された直前のVC番号(CurVC)とが比較され、両者が異なるか否かが判断される。
両者が異なる場合(ステップS6のYesルート)、プリキューカウンタ630により、カウント値(pre-Q CNT)に1が加算される(ステップS7)。また、プリキューカウンタ630により、カウント値がプリキュー850の記憶容量に関する所定の閾値(例えばプリキュー850が保持可能なパケット情報の最大数(最大値))に達したか否かが判断される(ステップS8)。カウント値がプリキュー850の最大値に達していない場合(ステップS8のNoルート)、処理が終了する。また、カウント値がプリキュー850の最大値に達した場合(ステップS8のYesルート)、プリキューカウンタ630により、アービタ570へ抑止指示が発行され(ステップS9)、処理が終了する。
一方、ステップS6において、出力VC番号と直前のVC番号(CurVC)とが同一である場合(ステップS6のNoルート)、プリキューカウンタ630により、カウント値がホールドされ(ステップS10)、処理が終了する。
また、ステップS1において、ヘッドの入力がない場合(ステップS1のNoルート)、カレントVC保持部610により、VC番号(CurVC)がホールドされる(ステップS11)。また、バスビジー判定部620により、カウント値が“0”であるか否かが判断される(ステップS12)。カウント値が“0”である場合(ステップS12のYesルート)、バスビジー判定部620により例えばレジスタが“0”にリセットされ(ステップS13)、処理が終了する。
一方、ステップS12において、カウント値が“0”ではない場合(ステップS12のNoルート)、プリキューカウンタ630により、カウント値が1減算され(ステップS14)、処理が終了する。
〔1−3−3〕送信パケット管理部の動作例
次に、図16及び図17を参照して、送信バッファ700の送信パケット管理部760の動作例を説明する。
図16及び図17は、図8に示す送信パケット管理部760によるパケット情報入力処理及びプリキュー850からの出力処理の動作例をそれぞれ説明するフローチャートである。
なお、図16に示す処理は、送信パケット管理部760にパケット情報が入力される度に実施され、図17に示す処理は、1RW−RAM830のリード/ライトのサイクル(例えば1サイクル)ごとに実施される。
はじめに、図16に示すパケット情報入力処理について説明する。
図16に示すように、送信パケット管理部760にパケット情報が入力されると(ステップS21)、プリキュー制御回路860により、プリキュー850の使用量が1以上であるか否かが判断される(ステップS22)。プリキュー850の使用量が1以上である場合(ステップS22のYesルート)、プリキュー制御回路860により、入力されたパケット情報がプリキュー850に登録され(ステップS23)、処理が終了する。
一方、ステップS22において、プリキュー850の使用量が0である場合(ステップS22のNoルート)、該当VCの出力キュー810に空きがないか否かが判断される(ステップS24)。該当VCの出力キュー810に空きがない場合(ステップS24のYesルート)、プリキュー制御回路860により、入出力キュー/RAM制御回路870からの入力に基づき、1RW−RAM830がライトサイクルであるか否かが判断される(ステップS25)。
1RW−RAM830がライトサイクルではない(リードサイクルである)場合(ステップS25のNoルート)、プリキュー制御回路860により、入出力キュー/RAM制御回路870からの入力に基づき、全VCの入力キュー840の使用量が3未満であるか否かが判断される(ステップS26)。全VCの入力キュー840の使用量が3未満ではない場合(ステップS26のNoルート)、プリキュー制御回路860により、到来パケットのVCと同一VCの入力キュー840の使用量が3以上であるか否かが判断される(ステップS27)。
到来パケットのVCと同一VCの入力キュー840の使用量が3以上である場合(ステップS27のYesルート)、入出力キュー/RAM制御回路870により、入力されたパケット情報が該当するVCの入力キュー840に登録され(ステップS28)、処理が終了する。一方、到来パケットのVCと同一VCの入力キュー840の使用量が3以上ではない場合(ステップS27のNoルート)、つまり到来パケットのVCとは異なるVCの入力キュー840の使用量が3以上である場合、処理がステップS23に移行する。
なお、ステップS25において、1RW−RAM830がライトサイクルである場合(ステップS25のYesルート)、又はステップS26において、全VCの入力キュー840の使用量が3未満である場合(ステップS26のYesルート)、処理がステップS28に移行する。
また、ステップS24において、該当VCの出力キュー810に空きがある場合(ステップS24のNoルート)、処理がステップS29に移行する。ステップS29では、プリキュー制御回路860により、入出力キュー/RAM制御回路870からの入力に基づき、以下のいずれかに該当するか否かが判断される。
・1RW−RAM830に該当VCのリード待ちのパケット情報がある。
・該当VCの入力キュー840の使用量が3以上である。
上記のいずれかに該当する場合(ステップS29のYesルート)、処理がステップS25に移行する。
一方、上記のいずれにも該当しない場合(ステップS29のNoルート)、入出力キュー/RAM制御回路870により、入力されたパケット情報が該当するVCの出力キュー810に登録され(ステップS30)、処理が終了する。
次に、図17に示すプリキュー850からの出力処理について説明する。
図17に示すように、プリキュー制御回路860により、プリキュー850の使用量が1以上であるか否かが判断される(ステップS31)。プリキュー850の使用量が1以上ではない場合(ステップS31のNoルート)、処理が終了する。
一方、プリキュー850の使用量が1以上である場合(ステップS31のYesルート)、プリキュー制御回路860により、1RW−RAM830がライトサイクルであるか否かが判断される(ステップS32)。1RW−RAM830がライトサイクルである場合(ステップS32のYesルート)、プリキュー制御回路860により、プリキュー850の先頭パケットが読み出され、該当するVCの入力キュー840に登録され(ステップS33)、処理が終了する。
一方、ステップS32において、1RW−RAM830がライトサイクルではない(リードサイクルである)場合(ステップS32のNoルート)、プリキュー制御回路860により、全VCの入力キュー840の使用量が3未満であるか否かが判断される(ステップS34)。全VCの入力キュー840の使用量が3未満ではない場合(ステップS34のNoルート)、プリキュー制御回路860により、プリキュー850の先頭パケットと同一VCの入力キュー840の使用量が3以上であるか否かが判断される(ステップS35)。プリキュー850の先頭パケットと同一VCの入力キュー840の使用量が3以上ではない場合(ステップS35のNoルート)、処理が終了する。
なお、ステップS34において、全VCの入力キュー840の使用量が3未満である場合(ステップS34のYesルート)、又は、ステップS35において、プリキュー850の先頭パケットと同一VCの入力キュー840の使用量が3以上である場合(ステップS35のYesルート)、処理がステップS33に移行する。
以上のように、一実施形態に係る情報処理システム1(クロスバ20)によれば、送信バッファ700内の送信パケット管理部760に最小限のプリキュー850がそなえられ、受信バッファ500内にプリキュー850に対応したプリキュー状態予測回路600がそなえられる。これにより、最短パケット長が1サイクルの場合でも、送信パケット管理部760は、入力ポートごとのVC間で1RW−RAM830を共用することが可能となり、1RW−RAM830の増加による回路の配置面積や消費電力の増加を抑制できる。
〔2〕変形例
上述した一実施形態では、プリキュー状態予測回路600を受信バッファ500内に1つ設ける例を示したが、これに限定されるものではなく、プリキュー状態予測回路600は、宛先ポートごとに設けられてもよい。
図18は、一実施形態の変形例に係る受信バッファ900の構成を示す図である。
図18に示すように、一実施形態の変形例に係る受信バッファ900は、受信バッファ500と異なり、宛先ポート(送信バッファ700)ごとに、プリキュー状態予測回路1000をそなえる。なお、各プリキュー状態予測回路1000(カレントVC保持部1010、バスビジー判定部1020、及びプリキューカウンタ1030)の構成は、図11に示す各構成と基本的に同様の機能を有するため、重複した説明は省略する。また、図の簡略化のため、ポートX,Yのプリキュー状態予測回路1000の内部の図示を省略する。
また、受信バッファ900は、受信バッファ500とは異なるアービタ970及びリードSTM990をそなえるとともに、ポート番号デコーダ1040をさらにそなえる。
リードSTM990は、パケット(ヘッド)及びVC番号のほかに、宛先ポート番号をさらに出力する。
ポート番号デコーダ1040は、リードSTM990からヘッド及び宛先ポート番号を入力され、当該宛先ポート番号に対応するプリキュー状態予測回路1000にヘッドを送出する。
プリキュー状態予測回路1000では、ポート番号デコーダ1040からヘッドを受け取った場合に、リードSTM990からのVC番号に基づいて、プリキュー状態予測回路600と同様の処理を行なう。
アービタ970は、プリキュー状態予測回路1000から抑止指示が発行されると、当該抑止指示に該当する宛先ポートについてのみ、新たなパケット転送を抑止する。
すなわち、一実施形態に係るプリキュー状態予測回路600は、全送信バッファ700でプリキュー850を共用していると仮定して使用量が最大値に達したと予測すると、他の送信バッファ700へのパケットも含めて、全ての新たなパケット転送を抑止する。これに対し、一実施形態の変形例に係る受信バッファ900は、プリキュー850の使用量が最大値に達したと予測された送信バッファ700についてのみ、新たなパケット転送を抑止し、他の送信バッファ700については、引き続きパケット転送を継続することができる。
従って、一実施形態の変形例に係る受信バッファ900によれば、一実施形態と同様の効果を奏することができるほか、クロスバ20のスループットを向上させることができる。
〔3〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、かかる特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
例えば、上述したクロスバ20は、4個のポートをそなえ、受信バッファ500(900)及び送信バッファ700は、それぞれ4個のVCをそなえるものとして説明したが、ポートやVCの数はこれらに限定されるものではなく、それぞれ任意の数とすることができる。同様に、出力キュー810、入力キュー840、及びプリキュー850の段数がそれぞれ4段であるものとして説明したが、各キューの段数もこれに限定されるものではなく、それぞれ任意の段数とすることができる。
また、受信バッファ500(900)及び送信バッファ700の各機能は、任意の組み合わせで統合又は分散してもよい。
さらに、図16のステップS22、S24〜S27、及びS29の処理順序は、上述したものに限定されるものではなく、適宜順序を入れ替えてもよい。同様に、図17のステップS31、S32、S34、及びS35の処理順序は、上述したものに限定されるものではなく、適宜順序を入れ替えてもよい。
〔4〕付記
以上の実施形態及び変形例に関し、更に以下の付記を開示する。
(付記1)
データを送信する第1の装置と、前記第1の装置から入力されたデータを、前記第1の装置と前記データの送信先である第2の装置との間に設定された複数の転送路のうちのいずれかの転送路を介して出力するデータ転送装置と、前記データ転送装置から前記データを受信する前記第2の装置と、をそなえ、
前記データ転送装置は、
前記第1の装置から前記データを受信し格納する受信部と、
前記受信部から転送されたデータを格納し前記第2の装置に向けて送信する送信部と、を有し、
前記送信部は、
前記受信部から転送されたデータに関するデータ情報を、転送路ごとに保持する情報保持部と、
前記複数の転送路で共通に用いられる共通保持部と、
前記転送路ごとのデータ情報の入力状況に基づいて、前記情報保持部に入力されるデータ情報を、前記共通保持部を経由させてから前記情報保持部に入力する制御を行なう第1制御部と、を有し、
前記受信部は、
前記共通保持部が保持する情報量に応じて前記送信部への新たなデータ転送を抑止する抑止部を有する、
ことを特徴とする、情報処理装置。
(付記2)
前記抑止部は、
前記受信部が新たに転送するデータの転送路の情報と直前に転送したデータの転送路の情報とに基づいて、前記共通保持部が保持する情報量を予測し、予測結果に応じて前記送信部への新たなデータ転送を抑止する、
ことを特徴とする、付記1記載の情報処理装置。
(付記3)
前記抑止部は、
前記受信部が新たに転送するデータの転送路が前記受信部の直前の転送サイクルにおいて転送されたデータの転送路と異なる場合にカウントを行なうカウンタを有し、
カウント結果が前記共通保持部の記憶容量に関する所定の閾値に達した場合に、前記送信部への新たなデータ転送を抑止する、
ことを特徴とする、付記2記載の情報処理装置。
(付記4)
前記カウンタは、
前記受信部が新たに転送するデータの直前の転送サイクルにおいてデータが転送されていない場合に、カウント結果を減少させる、
ことを特徴とする、付記3記載の情報処理装置。
(付記5)
前記情報保持部は、
前記複数の転送路に対応して設けられる複数の入力保持部と、
前記複数の転送路で共通に用いられ、書き込みと読み出しとが交互に行なわれる記憶部と、
前記複数の転送路に対応して設けられ、前記情報保持部に入力されたデータ情報を転送路ごとに保持する複数の出力保持部と、を有し、
前記送信部は、さらに、
前記複数の出力保持部が保持する転送路ごとの情報量に基づいて、前記情報保持部に入力されたデータ情報を、前記入力保持部及び前記記憶部を経由させてから、対応する出力保持部に入力する制御を行なう第2制御部を有する、
ことを特徴とする、付記1〜4のいずれか1項記載の情報処理装置。
(付記6)
前記第1制御部は、
前記転送路ごとのデータ情報の入力状況に基づいて、保持する情報量が所定量に達する入力保持部については、当該入力保持部に入力されるデータ情報を、前記共通保持部を経由させてから前記入力保持部に入力する制御を行なう、
ことを特徴とする、付記5記載の情報処理装置。
(付記7)
前記複数の転送路は、各々が前記出力保持部及び前記入力保持部を有する複数の仮想チャネルである、
ことを特徴とする、付記5又は付記6記載の情報処理装置。
(付記8)
前記データ転送装置は、
前記第1の装置から送信されるデータの送信先となる装置ごとに前記送信部を有し、
前記受信部は、
複数の前記送信部の各々に対応して前記抑止部を有する、
ことを特徴とする、付記1〜7のいずれか1項記載の情報処理装置。
(付記9)
入力されたデータを、前記データの送信元と送信先との間に設定された複数の転送路のうちのいずれかの転送路を介して出力するデータ転送装置であって、
前記送信元から前記データを受信し格納する受信部と、
前記受信部から転送されたデータを格納し前記送信先に向けて送信する送信部と、をそなえ、
前記送信部は、
前記受信部から転送されたデータに関するデータ情報を、転送路ごとに保持する情報保持部と、
前記複数の転送路で共通に用いられる共通保持部と、
前記転送路ごとのデータ情報の入力状況に基づいて、前記情報保持部に入力されるデータ情報を、前記共通保持部を経由させてから前記情報保持部に入力する制御を行なう第1制御部と、を有し、
前記受信部は、
前記共通保持部が保持する情報量に応じて前記送信部への新たなデータ転送を抑止する抑止部を有する、
ことを特徴とする、データ転送装置。
(付記10)
前記抑止部は、
前記受信部が新たに転送するデータの転送路の情報と直前に転送したデータの転送路の情報とに基づいて、前記共通保持部が保持する情報量を予測し、予測結果に応じて前記送信部への新たなデータ転送を抑止する、
ことを特徴とする、付記9記載のデータ転送装置。
(付記11)
前記抑止部は、
前記受信部が新たに転送するデータの転送路が前記受信部の直前の転送サイクルにおいて転送されたデータの転送路と異なる場合にカウントを行なうカウンタを有し、
カウント結果が前記共通保持部の記憶容量に関する所定の閾値に達した場合に、前記送信部への新たなデータ転送を抑止する、
ことを特徴とする、付記10記載のデータ転送装置。
(付記12)
前記カウンタは、
前記受信部が新たに転送するデータの直前の転送サイクルにおいてデータが転送されていない場合に、カウント結果を減少させる、
ことを特徴とする、付記11記載のデータ転送装置。
(付記13)
前記情報保持部は、
前記複数の転送路に対応して設けられる複数の入力保持部と、
前記複数の転送路で共通に用いられ、書き込みと読み出しとが交互に行なわれる記憶部と、
前記複数の転送路に対応して設けられ、前記情報保持部に入力されたデータ情報を転送路ごとに保持する複数の出力保持部と、を有し、
前記送信部は、さらに、
前記複数の出力保持部が保持する転送路ごとの情報量に基づいて、前記情報保持部に入力されたデータ情報を、前記入力保持部及び前記記憶部を経由させてから、対応する出力保持部に入力する制御を行なう第2制御部を有する、
ことを特徴とする、付記9〜12のいずれか1項記載のデータ転送装置。
(付記14)
前記第1制御部は、
前記転送路ごとのデータ情報の入力状況に基づいて、保持する情報量が所定量に達する入力保持部については、当該入力保持部に入力されるデータ情報を、前記共通保持部を経由させてから前記入力保持部に入力する制御を行なう、
ことを特徴とする、付記13記載のデータ転送装置。
(付記15)
前記送信元から送信されるデータの送信先ごとに前記送信部を有し、
前記受信部は、
複数の前記送信部の各々に対応して前記抑止部を有する、
ことを特徴とする、付記9〜14のいずれか1項記載のデータ転送装置。
(付記16)
データを送信する第1の装置と、前記第1の装置から入力されたデータを、前記第1の装置と前記データの送信先である第2の装置との間に設定された複数の転送路のうちのいずれかの転送路を介して出力するデータ転送装置と、前記データ転送装置から前記データを受信する前記第2の装置と、をそなえ、前記データ転送装置が、前記第1の装置から前記データを受信して格納する受信部と、前記受信部から転送されたデータを格納し前記第2の装置に向けて送信する送信部と、を有する情報処理装置におけるデータ転送方法であって、
前記データ転送装置の前記送信部において、
前記受信部から転送されたデータに関するデータ情報を、転送路ごとに情報保持部に保持し、
前記転送路ごとのデータ情報の入力状況に基づいて、前記情報保持部に入力されるデータ情報を、前記複数の転送路で共通に用いられる共通保持部を経由させてから前記情報保持部に入力する制御を行ない、
前記受信部において、
前記共通保持部が保持する情報量に応じて前記送信部への新たなデータ転送を抑止する、
ことを特徴とする、データ転送方法。
(付記17)
前記受信部において、
前記受信部が新たに転送するデータの転送路の情報と直前に転送したデータの転送路の情報とに基づいて、前記共通保持部が保持する情報量を予測し、
予測結果に応じて前記送信部への新たなデータ転送を抑止する、
ことを特徴とする、付記16記載のデータ転送方法。
(付記18)
前記受信部において、
前記受信部が新たに転送するデータの転送路が前記受信部の直前の転送サイクルにおいて転送されたデータの転送路と異なる場合にカウントを行ない、
カウント結果が前記共通保持部の記憶容量に関する所定の閾値に達した場合に、前記送信部への新たなデータ転送を抑止する、
ことを特徴とする、付記17記載のデータ転送方法。
(付記19)
前記情報保持部は、
前記複数の転送路に対応して設けられる複数の入力保持部と、
前記複数の転送路で共通に用いられ、書き込みと読み出しとが交互に行なわれる記憶部と、
前記複数の転送路に対応して設けられ、前記情報保持部に入力されたデータ情報を転送路ごとに保持する複数の出力保持部と、を有し、
前記送信部において、
前記複数の出力保持部が保持する転送路ごとの情報量に基づいて、前記情報保持部に入力されたデータ情報を、前記入力保持部及び前記記憶部を経由させてから、対応する出力保持部に入力する制御を行なう、
ことを特徴とする、付記16〜18のいずれか1項記載のデータ転送方法。
(付記20)
前記送信部において、
前記転送路ごとのデータ情報の入力状況に基づいて、保持する情報量が所定量に達する入力保持部については、当該入力保持部に入力されるデータ情報を、前記共通保持部を経由させてから前記入力保持部に入力する制御を行なう、
ことを特徴とする、付記19記載のデータ転送方法。
1 情報処理システム
2,20 クロスバ(データ転送装置)
2a ポート
2b ルーティング部
3 システムボード
3a CPU
3b メモリ
3c システムコントローラ
4 I/Oボード
4a カードスロット
4b ディスク
4c I/Oコントローラ
30 送信バッファ
40 受信バッファ
100,500,900 受信バッファ(受信部)
110,510 受信データバッファ
120,520 RTA
130,230,530,730 パケットデコーダ
140,240,540,740 ライトSTM
150,550 受信カウンタ
155,255 カウンタ
160,560 受信パケット管理部
165,265,365,465,765 キュー
170,270,570,770,970 アービタ
180,280,295,320,420,435,580,780,795,820,835,845 セレクタ
190,290,590,790,990 リードSTM
200,700 送信バッファ(送信部)
210,710 データバッファ
220,720 制御部
250,750 送信カウンタ
260,760 送信パケット管理部
310,410 出力キュー
330,430 1RW−RAM
340,440 入力キュー
460 パケット管理部
600,1000 プリキュー状態予測回路
610,1010 カレントVC保持部
620,1020 バスビジー判定部
630,1030 プリキューカウンタ
800 情報保持部
810 出力キュー(出力保持部)
830 1RW−RAM(記憶部)
840 入力キュー(入力保持部)
850 プリキュー(共通保持部)
860 プリキュー制御回路(第1制御部)
870 入出力キュー/RAM制御回路(第2制御部)
1040 ポート番号デコーダ

Claims (10)

  1. データを送信する第1の装置と、前記第1の装置から入力されたデータを、前記第1の装置と前記データの送信先である第2の装置との間に設定された複数の転送路のうちのいずれかの転送路を介して出力するデータ転送装置と、前記データ転送装置から前記データを受信する前記第2の装置と、をそなえ、
    前記データ転送装置は、
    前記第1の装置から前記データを受信し格納する受信部と、
    前記受信部から転送されたデータを格納し前記第2の装置に向けて送信する送信部と、を有し、
    前記送信部は、
    前記受信部から転送されたデータに関するデータ情報を、転送路ごとに保持する情報保持部と、
    前記複数の転送路で共通に用いられる共通保持部と、
    前記転送路ごとのデータ情報の入力状況に基づいて、前記情報保持部に入力されるデータ情報を、前記共通保持部を経由させてから前記情報保持部に入力する制御を行なう第1制御部と、を有し、
    前記受信部は、
    前記共通保持部が保持する情報量に応じて前記送信部への新たなデータ転送を抑止する抑止部を有する、
    ことを特徴とする、情報処理装置。
  2. 前記抑止部は、
    前記受信部が新たに転送するデータの転送路の情報と直前に転送したデータの転送路の情報とに基づいて、前記共通保持部が保持する情報量を予測し、予測結果に応じて前記送信部への新たなデータ転送を抑止する、
    ことを特徴とする、請求項1記載の情報処理装置。
  3. 前記抑止部は、
    前記受信部が新たに転送するデータの転送路が前記受信部の直前の転送サイクルにおいて転送されたデータの転送路と異なる場合にカウントを行なうカウンタを有し、
    カウント結果が前記共通保持部の記憶容量に関する所定の閾値に達した場合に、前記送信部への新たなデータ転送を抑止する、
    ことを特徴とする、請求項2記載の情報処理装置。
  4. 前記カウンタは、
    前記受信部が新たに転送するデータの直前の転送サイクルにおいてデータが転送されていない場合に、カウント結果を減少させる、
    ことを特徴とする、請求項3記載の情報処理装置。
  5. 前記情報保持部は、
    前記複数の転送路に対応して設けられる複数の入力保持部と、
    前記複数の転送路で共通に用いられ、書き込みと読み出しとが交互に行なわれる記憶部と、
    前記複数の転送路に対応して設けられ、前記情報保持部に入力されたデータ情報を転送路ごとに保持する複数の出力保持部と、を有し、
    前記送信部は、さらに、
    前記複数の出力保持部が保持する転送路ごとの情報量に基づいて、前記情報保持部に入力されたデータ情報を、前記入力保持部及び前記記憶部を経由させてから、対応する出力保持部に入力する制御を行なう第2制御部を有する、
    ことを特徴とする、請求項1〜4のいずれか1項記載の情報処理装置。
  6. 前記第1制御部は、
    前記転送路ごとのデータ情報の入力状況に基づいて、保持する情報量が所定量に達する入力保持部については、当該入力保持部に入力されるデータ情報を、前記共通保持部を経由させてから前記入力保持部に入力する制御を行なう、
    ことを特徴とする、請求項5記載の情報処理装置。
  7. 前記複数の転送路は、各々が前記出力保持部及び前記入力保持部を有する複数の仮想チャネルである、
    ことを特徴とする、請求項5又は請求項6記載の情報処理装置。
  8. 前記データ転送装置は、
    前記第1の装置から送信されるデータの送信先となる装置ごとに前記送信部を有し、
    前記受信部は、
    複数の前記送信部の各々に対応して前記抑止部を有する、
    ことを特徴とする、請求項1〜7のいずれか1項記載の情報処理装置。
  9. 入力されたデータを、前記データの送信元と送信先との間に設定された複数の転送路のうちのいずれかの転送路を介して出力するデータ転送装置であって、
    前記送信元から前記データを受信し格納する受信部と、
    前記受信部から転送されたデータを格納し前記送信先に向けて送信する送信部と、をそなえ、
    前記送信部は、
    前記受信部から転送されたデータに関するデータ情報を、転送路ごとに保持する情報保持部と、
    前記複数の転送路で共通に用いられる共通保持部と、
    前記転送路ごとのデータ情報の入力状況に基づいて、前記情報保持部に入力されるデータ情報を、前記共通保持部を経由させてから前記情報保持部に入力する制御を行なう第1制御部と、を有し、
    前記受信部は、
    前記共通保持部が保持する情報量に応じて前記送信部への新たなデータ転送を抑止する抑止部を有する、
    ことを特徴とする、データ転送装置。
  10. データを送信する第1の装置と、前記第1の装置から入力されたデータを、前記第1の装置と前記データの送信先である第2の装置との間に設定された複数の転送路のうちのいずれかの転送路を介して出力するデータ転送装置と、前記データ転送装置から前記データを受信する前記第2の装置と、をそなえ、前記データ転送装置が、前記第1の装置から前記データを受信して格納する受信部と、前記受信部から転送されたデータを格納し前記第2の装置に向けて送信する送信部と、を有する情報処理装置におけるデータ転送方法であって、
    前記データ転送装置の前記送信部において、
    前記受信部から転送されたデータに関するデータ情報を、転送路ごとに情報保持部に保持し、
    前記転送路ごとのデータ情報の入力状況に基づいて、前記情報保持部に入力されるデータ情報を、前記複数の転送路で共通に用いられる共通保持部を経由させてから前記情報保持部に入力する制御を行ない、
    前記受信部において、
    前記共通保持部が保持する情報量に応じて前記送信部への新たなデータ転送を抑止する、
    ことを特徴とする、データ転送方法。
JP2013202144A 2013-09-27 2013-09-27 情報処理装置,データ転送装置,およびデータ転送方法 Pending JP2015069345A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013202144A JP2015069345A (ja) 2013-09-27 2013-09-27 情報処理装置,データ転送装置,およびデータ転送方法
US14/454,296 US20150095523A1 (en) 2013-09-27 2014-08-07 Information processing apparatus, data transfer apparatus, and data transfer method
EP14181586.0A EP2854042A1 (en) 2013-09-27 2014-08-20 Information processing apparatus, data transfer apparatus, and data transfer method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013202144A JP2015069345A (ja) 2013-09-27 2013-09-27 情報処理装置,データ転送装置,およびデータ転送方法

Publications (1)

Publication Number Publication Date
JP2015069345A true JP2015069345A (ja) 2015-04-13

Family

ID=51492805

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013202144A Pending JP2015069345A (ja) 2013-09-27 2013-09-27 情報処理装置,データ転送装置,およびデータ転送方法

Country Status (3)

Country Link
US (1) US20150095523A1 (ja)
EP (1) EP2854042A1 (ja)
JP (1) JP2015069345A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10133549B1 (en) * 2017-12-04 2018-11-20 Kyocera Document Solutions Inc. Systems and methods for implementing a synchronous FIFO with registered outputs
US20220029936A1 (en) * 2021-06-01 2022-01-27 Fujitsu Limited Packet transmission device and packet transmission method

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL125273A (en) * 1998-07-08 2006-08-20 Marvell Israel Misl Ltd Communication architecture
US6831891B2 (en) * 2001-03-06 2004-12-14 Pluris, Inc. System for fabric packet control
JP3622843B2 (ja) * 2001-07-11 2005-02-23 日本電気株式会社 可変長パケットスイッチ方法及びシステム
US7379470B2 (en) * 2002-04-26 2008-05-27 International Business Machines Coproration Combined and data compressed FIFO based arbitration for a non-blocking switch
US7283558B2 (en) * 2002-06-04 2007-10-16 Lucent Technologies Inc. Distributed weighted fair arbitration and forwarding
US20060056424A1 (en) * 2004-09-15 2006-03-16 Yolin Lih Packet transmission using output buffer
US20090157919A1 (en) * 2007-12-18 2009-06-18 Plx Technology, Inc. Read control in a computer i/o interconnect
JPWO2010122613A1 (ja) 2009-04-24 2012-10-22 パナソニック株式会社 Fifoバッファ装置

Also Published As

Publication number Publication date
EP2854042A1 (en) 2015-04-01
US20150095523A1 (en) 2015-04-02

Similar Documents

Publication Publication Date Title
US9444740B2 (en) Router, method for controlling router, and program
JP5335892B2 (ja) パケット交換オンチップ相互接続ネットワークの高速仮想チャネル
JPWO2012120769A1 (ja) 中継装置、中継装置の制御方法、およびプログラム
Ouyang et al. LOFT: A high performance network-on-chip providing quality-of-service support
GB2461881A (en) Transferring packets from a primary buffer of an ingress port to an associated secondary buffer if the secondary buffer satisfies a predetermined criterion.
JP5034491B2 (ja) スイッチにおける優先度帯域制御方法
US20030179759A1 (en) Method and apparatus for switching data using parallel switching elements
US6728790B2 (en) Tagging and arbitration mechanism in an input/output node of a computer system
US6681274B2 (en) Virtual channel buffer bypass for an I/O node of a computer system
US8040907B2 (en) Switching method
US8976802B2 (en) Prediction-based switch allocator
JP2015069345A (ja) 情報処理装置,データ転送装置,およびデータ転送方法
US6839784B1 (en) Control unit of an I/O node for a computer system including a plurality of scheduler units each including a plurality of buffers each corresponding to a respective virtual channel
US7639704B2 (en) Message switching system
US8902899B2 (en) Input buffered switching device including bypass logic
JP5694064B2 (ja) ルータおよび転送方法
JP4566261B2 (ja) クロスバスイッチ
US20180287953A1 (en) Generic queue
Dai et al. PPS: A Low-Latency and Low-Complexity Switching Architecture Based on Packet Prefetch and Arbitration Prediction
Dimitrakopoulos et al. Baseline Switching Modules and Routers
CN116686269A (zh) 一种路由器及片上系统
CN115695292A (zh) 一种基于片上网络的广播传输电路
JP2012155440A (ja) 相互結合網制御システム、相互結合網制御方法
Mao et al. Elastic Flow Control and Parallel Switch Design for SpaceWire Router