IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝メモリ株式会社の特許一覧

<>
  • 特開-送信制御回路 図1
  • 特開-送信制御回路 図2
  • 特開-送信制御回路 図3
  • 特開-送信制御回路 図4
  • 特開-送信制御回路 図5
  • 特開-送信制御回路 図6
  • 特開-送信制御回路 図7
  • 特開-送信制御回路 図8
  • 特開-送信制御回路 図9
  • 特開-送信制御回路 図10
  • 特開-送信制御回路 図11
  • 特開-送信制御回路 図12
  • 特開-送信制御回路 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024115216
(43)【公開日】2024-08-26
(54)【発明の名称】送信制御回路
(51)【国際特許分類】
   H04L 47/28 20220101AFI20240819BHJP
   H04L 47/24 20220101ALI20240819BHJP
【FI】
H04L47/28
H04L47/24
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2023020799
(22)【出願日】2023-02-14
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】堀口 智哉
(72)【発明者】
【氏名】滝 大輔
(72)【発明者】
【氏名】宮本 幸昌
(72)【発明者】
【氏名】熊谷 健
【テーマコード(参考)】
5K030
【Fターム(参考)】
5K030HB21
5K030HC14
5K030KX18
5K030LC01
(57)【要約】
【課題】簡単な回路構成で、各トラフィッククラスが使用可能な帯域幅を制限しながら次の送信対象のトラフィッククラスを選択できる送信制御回路を実現する。
【解決手段】送信制御回路は、複数のトラフィッククラスに1対1の関係でそれぞれ対応付けられた複数のカウンタを含む。送信制御回路は、トラフィッククラス毎に割り当てられた帯域幅に基づいて、トラフィッククラス毎に、0より大きいカウンタ増加値と、0より大きいカウンタ減少値と、を設定する。トラフィッククラス毎に割り当てられた前記帯域幅は、ネットワークの利用可能な帯域幅全体に占める割合によって表される。送信制御回路は、各カウンタを増減させ、フレームの送信を要求しているトラフィッククラスの中からカウンタの値が0であるトラフィッククラスを選択し、選択したトラフィッククラスに属するフレームを、ネットワークを介して前外部装置に送信する。
【選択図】図3
【特許請求の範囲】
【請求項1】
複数のトラフィッククラスから1つのトラフィッククラスを選択し、選択したトラフィッククラスに属するフレームを、ネットワークを介して外部装置に送信するように構成された送信制御回路であって、
前記複数のトラフィッククラスに1対1の関係でそれぞれ対応付けられた複数のカウンタを具備し、
前記ネットワークの利用可能な帯域幅全体に占める割合によって表される、トラフィッククラス毎に割り当てられた帯域幅に基づいて、前記トラフィッククラス毎に、0より大きいカウンタ増加値と、0より大きいカウンタ減少値と、を設定し、
前記複数のトラフィッククラスから選択された第1のトラフィッククラスに属する1つのフレームが送信されている間は、前記第1のトラフィッククラスに対応する第1のカウンタの値を、クロックサイクル毎に、前記第1のトラフィッククラスに対応する第1のカウンタ増加値だけ増加させ、
前記第1のトラフィッククラスに属するいずれのフレームも送信されていない間、
前記第1のカウンタの値を前記第1のトラフィッククラスに対応する第1のカウンタ減少値だけ減少させたら0未満になる場合は、前記第1のカウンタの値を0とし、
前記第1のカウンタの値を前記第1のカウンタ減少値だけ減少させたら0以上になる場合は、前記第1のカウンタの値を、前記クロックサイクル毎に、前記第1のカウンタ減少値だけ減少させ、
フレームの送信を要求しているトラフィッククラスの中からカウンタの値が0であるトラフィッククラスを選択し、前記選択したトラフィッククラスに属するフレームを、前記ネットワークを介して前記外部装置に送信するように構成されている、
送信制御回路。
【請求項2】
前記ネットワークの利用可能な帯域幅全体を1とし、各トラフィッククラスに割り当てられた前記帯域幅を、0よりも大きく且つ1よりも小さい値であるXとし、前記トラフィッククラス毎に設定される前記カウンタ増加値をS1とし、前記トラフィッククラス毎に設定される前記カウンタ減少値をS2とした場合、
前記送信制御回路は、
前記複数のトラフィッククラスの各々に対応する前記カウンタ増加値S1および前記カウンタ減少値S2を、X=S2/(S1+S2)、を満たすように設定するように構成されている、
請求項1に記載の送信制御回路。
【請求項3】
不揮発性メモリと、
請求項1に記載された送信制御回路を含み、前記ネットワークを介してホストから受信されるライトコマンドおよびリードコマンドに基づいて、前記不揮発性メモリにデータを書き込むライト処理および前記不揮発性メモリからデータを読み出すリード処理を実行するように構成されたコントローラと、を具備し、
前記送信制御回路は、
前記不揮発性メモリから読み出されたリードデータを少なくとも含むストレージI/Oに関する情報を送信するためのフレーム群を、前記複数のトラフィッククラスのうちの一つのトラフィッククラスとして扱い、前記ネットワークを介した通信制御に関する情報を送信するためのフレーム群を、前記複数のトラフィッククラスのうちの別のトラフィッククラスとして扱うように構成されている、
メモリシステム。
【請求項4】
複数のトラフィッククラスから1つのトラフィッククラスを選択し、選択したトラフィッククラスに属するフレームを、ネットワークを介して外部装置に送信するように構成された送信制御回路であって、
前記複数のトラフィッククラスに1対1の関係でそれぞれ対応付けられた複数のカウンタを具備し、
前記ネットワークの利用可能な帯域幅全体に占める割合によって表される、トラフィッククラス毎に割り当てられた帯域幅に基づいて、前記トラフィッククラス毎に、0より大きいカウンタ増加値と、0より大きいカウンタ減少値と、を設定し、
前記複数のトラフィッククラスから選択された第1のトラフィッククラスに属する1つのフレームが送信されている間は、前記第1のトラフィッククラスに対応する第1のカウンタの値を、クロックサイクル毎に、前記第1のトラフィッククラスに対応する第1のカウンタ増加値だけ増加させ、
前記第1のトラフィッククラスに属するいずれのフレームも送信されていない間、
前記第1のカウンタの値を前記第1のトラフィッククラスに対応する第1のカウンタ減少値だけ減少させたら0未満になる場合は、前記第1のカウンタの値を0とし、
前記第1のカウンタの値を前記第1のカウンタ減少値だけ減少させたら0以上になる場合は、前記第1のカウンタの値を、前記クロックサイクル毎に、前記第1のカウンタ減少値だけ減少させ、
フレームの送信を要求しているトラフィッククラスの中からカウンタの値が最小であるトラフィッククラスを選択し、前記選択したトラフィッククラスに属するフレームを、前記ネットワークを介して前記外部装置に送信するように構成されている、
送信制御回路。
【請求項5】
前記送信制御回路は、
フレームの送信を要求している前記トラフィッククラスの中からカウンタの値が最小である前記トラフィッククラスを選択するためのアービトレーション処理を実行する際、
前記複数のトラフィッククラスに対応する前記複数のカウンタの値のうちの最小値を特定し、
前記複数のトラフィッククラスに対応する前記複数のカウンタの値の各々を、前記特定した最小値だけ減少させるようにさらに構成されている、
請求項4に記載の送信制御回路。
【請求項6】
前記送信制御回路は、
前記複数のカウンタのいずれかのカウンタの値があらかじめ設定された上限値に達した場合、前記複数のカウンタの値の各々を、nビットだけ右シフトするようにさらに構成され、
前記nは1以上の整数である、
請求項4に記載の送信制御回路。
【請求項7】
前記ネットワークの利用可能な帯域幅全体を1とし、各トラフィッククラスに割り当てられた前記帯域幅を、0よりも大きく且つ1よりも小さい値であるXとし、前記トラフィッククラス毎に設定される前記カウンタ増加値をS1とし、前記トラフィッククラス毎に設定される前記カウンタ減少値をS2とした場合、
前記送信制御回路は、
前記複数のトラフィッククラスの各々に対応する前記カウンタ増加値S1および前記カウンタ減少値S2を、X=S2/(S1+S2)、を満たすように設定するように構成されている、
請求項4に記載の送信制御回路。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、ネットワークを介して外部装置にフレームを送信する送信制御回路に関する。
【背景技術】
【0002】
近年、イーサネット(登録商標)の機能を拡張したデータセンターブリッジ(DCB)がIEEE802.1委員会で規格化され、データセンタにおいて利用されている。
【0003】
DCB規格で規定された機能群のうちの1つに、拡張送信選択(Enhanced Transmission Selection:ETS)がある。
【0004】
拡張送信選択(ETS)では、LAN、ストレージI/O、プロセス間通信(IPC)のような複数のトラフィッククラスに帯域幅がそれぞれ割り当てられる。そして、トラフィッククラス毎に割り当てられた帯域幅に基づいて、各トラフィッククラスが使用可能な帯域幅を制限しながら、次の送信対象のトラフィッククラスを選択する、という送信選択制御が実行される。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】米国特許第10,218,642号明細書
【特許文献2】米国特許出願公開第2020/0412670号明細書
【特許文献3】特許第4588558号公報
【特許文献4】特開2012-244524号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明の一実施形態が解決しようとする課題は、簡単な回路構成で、各トラフィッククラスが使用可能な帯域幅を制限しながら次の送信対象のトラフィッククラスを選択できる送信制御回路を提供することである。
【課題を解決するための手段】
【0007】
実施形態によれば、送信制御回路は、複数のトラフィッククラスから1つのトラフィッククラスを選択し、選択したトラフィッククラスに属するフレームを、ネットワークを介して外部装置に送信するように構成されている。前記送信制御回路は、前記複数のトラフィッククラスに1対1の関係でそれぞれ対応付けられた複数のカウンタを具備する。前記送信制御回路は、トラフィッククラス毎に割り当てられた帯域幅に基づいて、前記トラフィッククラス毎に、0より大きいカウンタ増加値と、0より大きいカウンタ減少値と、を設定する。トラフィッククラス毎に割り当てられた前記帯域幅は、前記ネットワークの利用可能な帯域幅全体に占める割合によって表される。前記送信制御回路は、前記複数のトラフィッククラスから選択された第1のトラフィッククラスに属する1つのフレームが送信されている間は、前記第1のトラフィッククラスに対応する第1のカウンタの値を、クロックサイクル毎に、前記第1のトラフィッククラスに対応する第1のカウンタ増加値だけ増加させる。前記送信制御回路は、前記第1のトラフィッククラスに属するいずれのフレームも送信されていない間、前記第1のカウンタの値を前記第1のトラフィッククラスに対応する第1のカウンタ減少値だけ減少させたら0未満になる場合は、前記第1のカウンタの値を0とし、前記第1のカウンタの値を前記第1のカウンタ減少値だけ減少させたら0以上になる場合は、前記第1のカウンタの値を、前記クロックサイクル毎に、前記第1のカウンタ減少値だけ減少させる。前記送信制御回路は、フレームの送信を要求しているトラフィッククラスの中からカウンタの値が0であるトラフィッククラスを選択し、前記選択したトラフィッククラスに属するフレームを、前記ネットワークを介して前記外部装置に送信する。
【図面の簡単な説明】
【0008】
図1】第1実施形態に係る送信制御回路を含むストレージを含むネットワークストレージシステムの構成例を示すブロック図。
図2】ネットワークストレージシステムのストレージ内に設けられたコントローラの構成例を示すブロック図。
図3】コントローラ内に設けられた第1実施形態に係る送信制御回路の構成例を示す回路図。
図4】第1実施形態に係る送信制御回路の動作を示すタイミングチャート。
図5】トラフィッククラスに対して設定されるカウンタ増加係数とカウンタ減少係数との間の比率と、このトラフィッククラスに対して割り当てられる帯域幅(送信スループット)との関係の例を示す図。
図6】トラフィッククラスに対して設定されるカウンタ増加係数とカウンタ減少係数との間の比率と、このトラフィッククラスに対して割り当てられる帯域幅(送信スループット)との関係の別の例を示す図。
図7】カウンタ増加係数とカウンタ減少係数との間の比率を設定する動作の例を説明するための図。
図8】第2実施形態に係る送信制御回路の構成例を示す回路図。
図9】第2実施形態に係る送信制御回路の動作を示すタイミングチャート。
図10】第2実施形態に係る送信制御回路に含まれるカウンタの値が飽和する様子を示す図。
図11】第3実施形態に係る送信制御回路の構成例を示す回路図。
図12】第3実施形態に係る送信制御回路の動作を示すタイミングチャート。
図13】第4実施形態に係る送信制御回路の構成例を示す回路図。
【発明を実施するための形態】
【0009】
以下、図面を参照して、実施形態を説明する。
【0010】
以下では、各実施形態に係る送信制御回路が、ネットワークインターフェースを備えたストレージに含まれている場合を想定する。
【0011】
(第1実施形態)
図1は、第1実施形態に係る送信制御回路を含むストレージを含むネットワークストレージシステムの構成例を示すブロック図である。
【0012】
ネットワークストレージシステム1は、ホスト2と、ストレージ(ストレージデバイス)3と、ホスト2とストレージ3とが接続されるネットワーク4と、を含む。図1では、一つのホスト2がネットワーク4に接続されている場合が示されているが、複数のホストがネットワーク4に接続されていてもよい。また、図1では、一つのストレージ3がネットワーク4に接続されている場合が示されているが、複数のストレージがネットワーク4に接続されていてもよい。
【0013】
ネットワーク4は、100ギガビットイーサネット(登録商標)のようなネットワークである。ネットワーク4は、例えば、ネットワークスイッチ、ルータ、といったネットワーク機器を含む。また、ネットワーク管理サーバがネットワーク4に接続されていてもよい。
【0014】
ストレージ3は、不揮発性メモリ32と、不揮発性メモリ32を制御するように構成されたコントローラ31と、を含むメモリシステムである。ストレージ3は、ネットワーク4に接続するためのネットワークインターフェースを有している。ストレージ3は、ネットワーク4を介して外部装置(ホスト2、ネットワーク4内のネットワーク機器、またはネットワーク管理サーバ、等)に、複数のトラフィッククラスの情報を送信する。複数のトラフィッククラスは、ネットワーク4を介して送信されるべき、互いに通信要件が異なるトラフィックタイプに相当する。本実施形態で、例えば、ストレージI/Oに関する情報を含むトラフィック、ネットワーク4を介した通信制御に関する情報を含むトラフィック、他の情報を含むトラフィック、等が、別個のトラフィッククラスとして扱われ得る。
【0015】
不揮発性メモリ32は、例えば、NAND型フラッシュメモリである。なお、不揮発性メモリ32は、NAND型フラッシュメモリに限られず、例えばPCM(Phase Change Memory)によって実現されていてもよい。以下では、不揮発性メモリ32がNAND型フラッシュメモリによって実現されている場合を主として説明する。このため、以下では、不揮発性メモリ32をNANDフラッシュと称する。
【0016】
ストレージ3は、コントローラ31と、複数のNANDフラッシュチップ32a、32b、…と、を含む。またストレージ3は、ダイナミックRAM(DRAM)33も含んでいてもよい。コントローラ31は、ストレージ3全体の制御を行う。具体的には、コントローラ31は、ネットワーク4を介してホスト2から受信されるライトコマンドおよびリードコマンドに基づいて、NANDフラッシュ32(NANDフラッシュチップ32a、32b、…)にデータを書き込むライト処理およびNANDフラッシュ32(NANDフラッシュチップ32a、32b、…)からデータを読み出すリード処理を実行する。
【0017】
ホスト2は、演算処理などを行い、必要に応じてネットワーク4を介してストレージ3に対してリードコマンドまたはライトコマンドを発行する。リードコマンド、ライトコマンドのようなI/Oコマンドの各々は、リード対象データが格納されている記憶位置またはデータが書き込まれるべき記憶位置を、論理ブロックアドレス(LBA)を使用して指定してもよい。あるいは、各I/Oコマンドは、リード対象データが格納されている記憶位置またはデータが書き込まれるべき記憶位置を、LBAとは異なる他のアドレスを使用して指定してもよい。他のアドレスは、例えば、リード対象データが格納されている記憶位置またはデータが書き込まれるべき記憶位置を、LBAよりも細かい粒度で指定可能なアドレスであってもよい。このような他のアドレスは、物理アドレスであってもよい。
【0018】
ホスト2からリードコマンドを受け取ると、ストレージ3のコントローラ31は、受信したリードコマンドによって指定されたアドレス(物理アドレスまたはLBA)に従って、NANDフラッシュチップ32a、32b、…からデータを読み出し、読み出したデータと、リードコマンドの完了を示す応答とを、ネットワーク4を介してホスト2に送信する。一方、ホスト2からライトコマンドを受け取ると、コントローラ31は、受信したライトコマンドによって指定されたアドレス(物理アドレスまたはLBA)に従って、ホスト2から受信したライトデータをNANDフラッシュチップ32a、32b、…に書き込み、ライトコマンドの完了を示す応答を、ネットワーク4を介してホスト2に送信する。この時、DRAM33は、ホスト2から受信されたI/Oコマンド、NANDフラッシュチップ32a、32b、…から読み出されたデータであるリードデータ、またはNANDフラッシュチップ32a、32b、…に書き込まれるべきデータであるライトデータを一時的に記憶するために使用されてもよい。
【0019】
ストレージ3はネットワークストレージシステム1の構成要素であるため、コントローラ31は、ネットワーク4を介した通信制御に関する情報を、ネットワーク4を介してホスト2またはネットワーク機器に送信することもある。
【0020】
ネットワーク4を介した通信制御に関する情報は、例えば、ストレージ3をネットワーク4に接続するための情報、ストレージ3をネットワーク4から切断するための情報、トポロジに関する情報、等を含む。以下では、ネットワーク4を介した通信制御に関する情報は、ネットワーク制御関連情報とも称する。
【0021】
また、ホスト2から受信される要求に応じまたは自発的に、コントローラ31は、ストレージ3の状態を示す情報を、ネットワーク4を介してホスト2に送信することもある。また、ネットワーク構築時には、コントローラ31は、ネームワーク4の構成要素であるネットワークスイッチおよびルータに、またはホスト2に、ストレージ3に関する情報を通知することもある。
【0022】
このように、ネットワークストレージシステム1では、ストレージ3がネットワーク4を介してホスト2に送信する情報として、ストレージI/Oに関する情報(リードデータ、I/Oコマンドに対する応答、等)の他、接続・切断情報のようなネットワーク制御関連情報、ストレージ状態通知など、複数の種類の情報が存在する。本実施形態では、これら情報は、互いに異なる幾つかのトラフィッククラスとして扱われ得る。
【0023】
次に、コントローラ31の構成を説明する。図2は、コントローラ31の構成例を示すブロック図である。
【0024】
コントローラ31は、メディアアクセスコントロール/物理層(MAC/PHY)部311と、ネットワーク処理部312と、フラッシュトランスレーション層/NAND(FTL/NAND)処理部313と、DRAMインタフェース(DRAM I/F)314と、を含む。
【0025】
MAC/PHY部311は、ネットワーク4に接続するための回路である。MAC/PHY部311は、OSI参照モデルに含まれる物理層(L1)の処理と、OSI参照モデルに含まれるデータリンク層(L2)におけるメディアアクセスコントロールの処理とを実行する。ネットワーク4が100ギガビットイーサネット規格に準拠するケースでは、MAC/PHY部311は、100ギガビットイーサネット規格に準拠したリンクを介してネットワーク4内のネットワークスイッチに接続される。
【0026】
ネットワーク処理部312は、ストレージI/Oに関する情報、ネットワーク制御関連情報、ストレージ状態通知などを、ネットワーク4を介してホスト2に送信する。
【0027】
FTL/NAND処理部313は、論理物理アドレス変換処理、ライト処理、リード処理、等を実行する。論理物理アドレス変換処理は、ネットワーク4を介してホスト2から受信されたI/Oコマンドによって指定された論理アドレス(LBA)をNANDフラッシュ32の物理アドレスに変換する処理である。ライト処理は、ネットワーク4を介してホスト2から受信されたライトコマンドに基づいて、NANDフラッシュ32(NANDフラッシュチップ32a、32b、…)にホスト2から受信されたデータを書き込む処理である。リード処理は、ネットワーク4を介してホスト2から受信されたリードコマンドに基づいて、NANDフラッシュ32(NANDフラッシュチップ32a、32b、…)からデータを読み出しホスト2にデータを送信する処理である。
【0028】
DRAMインタフェース(DRAM I/F)314は、DRAM314にデータを書き込む処理と、DRAM314からデータを読み出す処理とを実行する回路である。
【0029】
次に、ネットワーク処理部312の構成を説明する。ネットワーク処理部312は、ネットワーク制御部3121と、ネットワーク受信部3122と、ネットワーク送信部3123と、を含む。
【0030】
ネットワーク制御部3121は、ネットワーク処理部312全体の制御を行う。
【0031】
ネットワーク受信部3122は、PHY/MAC部311によって受信されたフレームの解析を行い、受信されたフレームを、リード/ライトコマンドに関するフレーム、ライトデータに関するフレーム、ネットワーク制御関連情報に関するフレーム、等のうちのいずれかのフレームに分類する。そして、この分類結果に基づいて、ネットワーク受信部3122は、受信されたフレームを、ネットワーク制御部3121またはFTL/NAND処理部313のいずれかに送出する。
【0032】
ネットワーク送信部3123は、FTL/NAND処理部313からリードデータを受信する処理と、ネットワーク制御部3121からI/Oコマンドに対する応答またはネットワーク制御関連情報を受信する処理とを実行する。さらに、ネットワーク送信部3123は、受信した情報(リードデータ、応答、またはネットワーク制御関連情報)に基づいてフレーム(イーサネットフレーム)を生成し、生成したフレームを、MAC/PHY部311に送信ネットワークフレームとして送出する。ネットワーク送信部3123によって生成されるフレームは、宛先MACアドレスおよび送信元MACアドレスを含むヘッダと、可変長の情報と、フレームチェックシーケンスと、を含む。
【0033】
ネットワーク制御部3121は、ネットワーク制御関連情報、I/Oコマンドの完了を示す応答を、ネットワーク送信部3123に送出する。図2では、ネットワーク制御部3121からネットワーク送信部3123に送出されるこれらの情報は、ネットワーク送信部3123内の一つのFIFO、例えばFIFO31232a、に一時的に保存されるように示されているが、これらの情報はネットワーク送信部3123内の幾つかのFIFOに格納されてもよい。
【0034】
FTL/NAND処理部313は、NANDフラッシュ32(NANDフラッシュチップ32a、32b、…)から読み出したリードデータを、ネットワーク送信部3123に送出する。図2では、FTL/NAND処理部313からネットワーク送信部3123に送出されるこれらリードデータは、ネットワーク送信部3123内の複数のFIFO、例えばFIFO31232b~31232d、に一時的に保存されるように示されているが、これらのリードデータはネットワーク送信部3123内の単一のFIFOに格納されてもよい。
【0035】
なお、リードデータ(またはネットワーク制御関連情報)を複数のFIFOに格納する場合には、送信対象のデータ(リードデータまたはネットワーク制御関連情報)の優先度に基づいて、送信対象のデータ(リードデータまたはネットワーク制御関連情報)が格納されるべきFIFOが選択されてもよい。
【0036】
また、ここで説明した例では、データおよびコマンドがネットワーク処理部312とFTL/NAND処理部313との間で直接受け渡される場合を説明したが、図示しない内部バッファの容量またはネットワーク送信部3123内のFIFO群の容量が足りない場合は、DRAM314を、データおよびコマンドを一時的に記憶するための中間バッファとして使用してもよい。
【0037】
ネットワーク送信部3123は、上述のFIFO31232a~31232dと、ETSアービタ31233とを含む。ETSアービタ31233は、複数のトラフィッククラスの各々に属するフレームを、ネットワーク4を介して外部装置(ホスト2またはネットワーク機器)に送信する送信制御回路として機能する。
【0038】
より詳しくは、ETSアービタ31233は、FIFO31232a~31232dからいずれか1つのFIFOを選択し、選択したFIFOから情報を読み出し、読み出した情報を、外部装置(ホスト2またはネットワーク機器)に送信すべきフレームとして、MAC/PHY部311に送信する。ETSアービタ31233は、1つのFIFOを1つのトラフィッククラスとして取り扱う。異なる通信要件を有する情報は、互いに異なるトラフィッククラスとして扱われる。例えば、NANDフラッシュ32から読み出されたリードデータを少なくとも含むストレージI/Oに関する情報を送信するためのフレーム群はある1つのトラフィッククラスとして扱われる。また、ネットワーク制御関連情報を送信するためのフレーム群は、別のトラフィッククラスとして扱われる。
【0039】
ETSアービタ31233は、あらかじめ設定されたトラフィッククラス毎の目標送信スループットを基に、この目標送信スループットを満たすように複数のFIFOの中から1つを選択する。そして、ETSアービタ31233は、選択したFIFOから情報を読み出し、読み出した情報に基づいてフレームを生成し、生成したフレームを送信ネットワークフレームとしてMAC/PHY部311に送出することで、IEEE 802.1で定められるETS規格を満たすアービトレーション処理を実行する。
【0040】
上述したように、図2で示した例では、リードデータを含むストレージI/Oに関する情報を送信するためのフレーム群は、複数のトラフィッククラスのうちの一つのトラフィッククラスとして扱われ、ネットワーク制御関連情報を送信するためのフレーム群は、複数のトラフィッククラスのうちの別の一つのトラフィッククラスとして扱われる。
【0041】
なお、リードデータのみならず、I/Oコマンドに対する応答を送信するためのフレーム群と、リードデータ送信するためのフレーム群の双方が、ストレージI/Oに関する情報を送信するためのトラフィッククラスとして扱われてもよい。
【0042】
トラフィッククラス毎の目標送信スループットは、帯域幅(bandwidth)と称される。つまり、トラフィッククラス毎に割り当てられた帯域幅に基づいて、ETSアービタ31233は、各トラフィッククラスがその割り当てられた帯域幅を使用することを可能にするためのアービトレーション処理を実行する。
【0043】
各トラフィッククラスに割り当てられる帯域幅は、ネットワーク4における利用可能な帯域幅全体に占める割合(パーセンテージ)によって表される。ネットワーク4における利用可能な帯域幅は、リンク帯域幅とも称される。例えば、ネットワーク4として100ギガビットイーサネットが使用されるケースにおいては、ネットワーク4における利用可能な帯域幅全体(最大送信スループット)は、100Gbit/秒である。
【0044】
ここで、利用可能な帯域幅全体(最大送信スループット)が100Gbit/秒であり、ストレージI/Oに関する情報を送信するためのフレーム群を含むトラフィッククラスに、最大送信スループットの60%の帯域幅が割り当てられ、且つネットワーク制御関連情報を送信するためのフレーム群を含むトラフィッククラスに、最大送信スループットの40パーセントの帯域幅が割り当てられた場合を想定する。この場合、ストレージI/Oに関する情報を送信するためのフレーム群を含むトラフィッククラスが60Gbit/秒の帯域幅(送信スループット)を使用することを可能にし、且つネットワーク制御関連情報を送信するためのフレーム群を含むトラフィッククラスが40Gbit/秒の帯域幅(送信スループット)を使用することを可能にするためのアービトレーション処理が実行される。アービトレーション処理の詳細は後述する。
【0045】
次に、送信制御回路の構成を説明する。図3は、コントローラ31内に設けられた第1実施形態に係る送信制御回路(ETSアービタ31233)の構成例を示す回路図である。
【0046】
第1実施形態におけるETSアービタ31233は、アービタ回路101と、AND回路102a~102dと、カウンタ103a~103dと、比較回路104a~104dと、を含む。
【0047】
アービタ回路101は、FIFO31232a~31232dから入力されるデータを受け付け、これらデータの中から1つのデータを選択し、選択したデータをMAC/PHY部311に出力する。
【0048】
AND回路102a~102dは、FIFO31232a~31232dにそれぞれ対応している。AND回路102a~102dの各々は、対応するFIFO31232とアービタ回路101との間で送受信されるVALID信号とREADY信号との論理積を示す信号を出力する。
【0049】
カウンタ103a~103dは、FIFO31232a~31232dにそれぞれ対応している。カウンタ103a~103dの各々は、カウンタレジスタを含む。カウンタ103a~103dの各々は、ネットワーク制御部3121からの設定と対応するAND回路102の出力信号とに従って、その内部のカウンタレジスタの値であるカウンタ値を増加または減少させる。
【0050】
比較回路104a~104dは、FIFO31232a~31232dにそれぞれ対応している。比較回路104a~104dの各々は、対応するカウンタ値が0でない場合に、対応するFIFO31232からの送信要求つまりVALID信号を内部的にマスクするための信号を出力する。ここで、VALID信号を内部的にマスクするとは、アービタ回路101においてそのVALID信号がアサートされていないものと扱うことを意味する。各FIFOから入力ポートに入力されるVALID信号そのものがマスクされることはない。
【0051】
FIFO31232a~31232dの各々からアービタ回路101への1フレーム分のデータの転送は、DATAバスを使用して、1クロックサイクル以上をかけて実行される。FIFO31232a~31232dの各々は、送信すべきデータがそのFIFOにある場合、つまりDATAバス上の信号が有効である場合、VALID信号をHighレベルに設定し、送信すべきデータがそのFIFOにない場合、つまりDATAバス上の信号が無効である場合、VALID信号をLowレベルに設定する。
【0052】
アービタ回路101は、DATAバス上の信号を受け取ることができる場合に、READY信号をHighレベルに設定し、DATAバス上の信号を受け取ることができない場合に、READY信号をLowレベルに設定する。また、FIFO31232a~31232dの各々は、1つのフレームの末尾のデータをアービタ回路101に転送する際にLAST信号をアサートする。これにより、アービタ回路101は、1つのフレームの末尾と次のフレームの先頭とがどのタイミングで入力されるかを知ることができる。ここで、これらのDATAバス、LAST信号、VALID信号、READY信号のセットを「入力ポート」と呼ぶ。
【0053】
図3では、アービタ回路101は、FIFO31232a~31232dにそれぞれ接続された入力ポートin1~in4を有している。アービタ回路101は、FIFO31232a~31232dそれぞれから出力されるVALID信号の論理レベルと後述する送信要求マスクとに基づいて、入力ポートin1~in4の中の一つを選択するアービトレーション処理を行い、選択した入力ポートからのデータを、送信フレームとして、出力ポートout経由でMAC/PHY部311に転送する。アービタ回路101は、送信要求マスクがアサートされている入力ポートに対応するFIFO31232からの送信要求は無いものとして、アービトレーション処理を行う。例えば、たとえ入力ポートin1のVALID信号がHighであっても、比較回路104aからのマスク信号がHighであれば、アービタ回路101は、FIFO31232aから入力ポートin1への送信要求は無いものとして扱う。
【0054】
本実施形態では、複数の入力ポートへの送信要求がある(つまり複数の入力ポートへのVALID信号がhighで、且つ複数の入力ポートに対応するマスク信号がLow)場合は、アービタ回路101は、これら入力ポートそれぞれの優先度(つまりトラフィッククラスそれぞれ優先度)に基づいて、これら入力ポートの一つを選択する。この場合、例えば、入力ポートin1、入力ポートin2、入力ポートin3、入力ポートin4に固定の優先度をそれぞれ付与し、送信要求がある入力ポートのうちで、最も高い優先度を有する入力ポートを選択する、という固定優先アービトレーションを使用して入力ポートを選択してもよい。あるいは、入力ポートを選択する度に入力ポートそれぞれの優先度をローテーションするラウンドロビンアルゴリズムを使用して、送信要求がある入力ポートのうちの一つの入力ポートを選択してもよい。
【0055】
以下、AND回路102a~102d、カウンタ103a~103d、比較回路104a~104dの動作について説明する。
【0056】
AND回路102a~102dの各々は、対応する入力ポートのVALID信号と対応する入力ポートのREADY信号との論理積信号を出力する。AND回路102aの出力信号(論理積信号)がHighであるクロックサイクルは、FIFO31232aからアービタ回路101へのDATAバス上のデータの転送が成立したことを示す。
【0057】
同様に、AND回路102bの出力信号(論理積信号)がHighであるクロックサイクルは、FIFO31232bからアービタ回路101へのDATAバス上のデータの転送が成立したことを示す。
【0058】
同様に、AND回路102cの出力信号(論理積信号)がHighであるクロックサイクルは、FIFO31232cからアービタ回路101へのDATAバス上のデータの転送が成立したことを示す。
【0059】
同様に、AND回路102dの出力信号(論理積信号)がHighであるクロックサイクルは、FIFO31232dからアービタ回路101へのDATAバス上のデータの転送が成立したことを示す。
【0060】
カウンタ103a~103dの各々は、ネットワーク制御部3121からのカウンタ設定と、対応するAND回路の出力信号とを用いて、カウンタ値を制御する。ネットワーク制御部3121からのカウンタ設定は、カウンタ増加係数およびカウンタ減少係数の2種類の値を設定するために使用される。カウンタ増加係数は、カウンタ増加値とも称される。また、カウンタ減少係数は、カウンタ減少値とも称される。
【0061】
2種類のカウンタ値(カウンタ増加係数およびカウンタ減少係数)は、入力ポート毎に、つまりトラフィッククラス毎に設定される。各入力ポートに対応するカウンタ増加係数およびカウンタ減少係数は、後述する方法により、各トラフィッククラスに割り当てられた目標送信スループット(帯域幅)から計算される。
【0062】
カウンタ103a~103dの各々に含まれるカウンタレジスタの初期値は、零に設定される。カウンタ103a~103dの各々は、対応するAND回路の出力信号がHighである場合は、つまり対応する入力ポートからの一つのフレームが送信されている間は、カウンタレジスタの値(カウンタ値)をクロックサイクル毎にカウンタ増加係数だけ増加させる。
【0063】
さらに、カウンタ103a~103dの各々は、対応するAND回路の出力信号がLowの場合は、つまり対応する入力ポートからのいずれのフレームも送信されていない間は、カウンタ値をクロックサイクル毎にカウンタ減少係数だけ減算させる。ただし、カウンタ値からカウンタ減少係数の分だけ減算した値が0を下回る場合、カウンタ103a~103dの各々は、カウンタ値を0にする。つまり、対応する入力ポートからのいずれのフレームも送信されていない間、カウンタ値をカウンタ減少係数だけ減少させたらカウンタ値が0未満になる場合は、カウンタ値は0とされ、カウンタ値をカウンタ減少係数だけ減少させたらカウンタ値が0以上になる場合は、カウンタ値はカウンタ減少係数だけ減少される。
【0064】
比較回路104a~104dの各々には、対応するカウンタ103のカウンタ値が入力される。比較回路104a~104dの各々は、対応するカウンタ103のカウンタ値が0でなければ、対応する入力ポートのVALID信号を内部的にマスクするための信号(送信要求マスク信号)をHighに設定する。例えば、比較回路104aからの送信要求マスク信号がHighである場合、アービタ回路101は、たとえ入力ポートin1のVALID信号がHighであっても、入力ポートin1がフレームの送信を要求していない、つまり入力ポートin1からの送信要求が無いものとして扱う。対応するカウンタ103のカウンタ値が0である場合、比較回路104a~104dの各々は、対応する入力ポートのVALID信号を内部的にマスクするための信号をLowに維持する。あるVALID信号を内部的にマスクするための信号がLowである場合、アービタ回路101は、このVALID信号がHighであれば、このVALID信号に対応する入力ポートからの送信要求があるものとして扱う。
【0065】
次に、ETSアービタ31233の動作を説明する。図4は、第1実施形態に係るETSアービタ31233の動作を示すタイミングチャートである。
【0066】
図4では、説明を簡単にするために、2つのFIFO(FIFO31232aおよび31232b)からアービタ回路101の2つの入力ポート(入力ポートin1および入力ポートin2)に対して送信要求が発行される場合が示されている。図4の上部のグラフは、カウンタ103aのカウンタ値の変化を示している。図4の下部のグラフは、カウンタ103bのカウンタ値の変化を示している。各グラフにおける横軸は、時間、つまりクロックサイクルの番号を示す。クロックサイクルは、ETSアービタ31233に入力されるクロック信号のサイクルである。1クロックサイクルは、所定の期間を表す。各グラフにおける縦軸は、対応するカウンタのカウンタ値を示す。
【0067】
また、図4の上部のグラフの下方には入力ポートin1に対するVALID信号、LAST信号,READY信号の状態が示されており、図4の下部のグラフの下方には入力ポートin2に対するVALID信号、LAST信号,READY信号の状態が示されている。以下では、クロックサイクルは単にサイクルと称する。
【0068】
サイクル0~2では、入力ポートin1およびin2のいずれのVALID信号もLowであるため、フレームの送信を要求しているトラフィッククラス(FIFO)は、存在しない。このため、ETSアービタ31233のアービタ回路101は、入力ポートin1およびin2のうちのいずれの入力ポートも選択しない。
【0069】
サイクル3において、入力ポートin1のVALID信号がHighに変化する。一方、入力ポートin2のVALID信号は、Lowに維持されている。このため、アービタ回路101は、入力ポートin1に対応するトラフィッククラス(FIFO)のみがフレームの送信を要求していると判断する。アービタ回路101は、入力ポートin1に送信許可を出すべくサイクル4で入力ポートin1に対応するREADY信号をHighにすることで、入力ポートin1側の1つのフレームの送信をサイクル4で開始する。つまり、アービタ回路101は、入力ポートin1に対応するトラフィッククラス(FIFO)を選択し、選択したトラフィッククラス(FIFO)に属する1つのフレームを、MAC/PHY部311を通じて、ホスト2(またはネットワーク機器)に送信する。1つのフレームの送信に要するクロックサイクルの数は、そのフレームサイズに依存する。
【0070】
入力ポートin1側の1つのフレームが送信されている期間、つまりサイクル4からサイクル13の間、入力ポートin1のカウンタ103aのカウンタ値は、サイクル毎に、入力ポートin1のトラフィッククラス(FIFO31232a)に対応するカウンタ増加係数だけ増加される。入力ポートin1側のフレームの送信中であるサイクル6で入力ポートin2のVALIDがHighになる。これにより、入力ポートin2に対応するトラフィッククラス(FIFO31232b)がフレームの送信を要求していることがアービタ回路101に通知される。しかし、入力ポートin1側の1つのフレームの送信が終了していないため、アービタ回路101は、アービトレーション処理を行わず、そのまま入力ポートin1のREADY信号をHighに維持し、入力ポートin1側の1つのフレームの送信を継続する。
【0071】
サイクル13において、入力ポートin1のVALID信号がHighである状態で入力ポートin1のLAST信号がHighに変化した場合、アービタ回路101は、サイクル13において送信中のデータが、この送信中のフレームの末尾のデータであると認識する。このため、サイクル13で入力ポートin1側の1つのフレームの送信が終了する。
【0072】
サイクル13で入力ポートin1側の1つのフレームの送信が終了すると、アービタ回路101は、サイクル14で、次の送信対象の入力ポートを選択するためのアービトレーション処理を行う。
【0073】
サイクル14では、入力ポートin1のVALID信号および入力ポートin2のVALID信号の双方がHighになっているため、入力ポートin1のトラフィッククラス(FIFO31232a)および入力ポートin2のトラフィッククラス(FIFO31232b)の双方が、フレームの送信を要求している。しかし、入力ポートin1のカウンタ103aのカウンタ値は0でないため、アービタ回路101は、入力ポートin1の送信要求はないものとして扱う。このため、in2の送信要求のみが有効となり、入力ポートin2が選択される。この場合、アービタ回路101は、サイクル15で入力ポートin2のREADY信号をHighにすることで、入力ポートin2側の1つのフレームの送信をサイクル15で開始する。
【0074】
入力ポートin2の1つのフレームが送信中であるサイクル15からサイクル19の間、入力ポートin2のカウンタ103bのカウンタ値は、サイクル毎に、入力ポートin2のトラフィッククラス(FIFO31232b)に対応するカウンタ増加係数だけ増加される。
【0075】
一方、入力ポートin1側のいずれのフレームも送信されていない間(送信要求マスク期間)、つまり入力ポートin1のVALID信号およびREADY信号のどちらかまたは双方がLowである間、入力ポートin1のカウンタ103aのカウンタ値は、サイクル毎に、入力ポートin1のトラフィッククラス(FIFO31232a)に対応するカウンタ減少係数だけ減少される。カウンタ103aのカウンタ値が0になると、カウンタ103aのカウンタ値は減少されず、0に維持される。
【0076】
サイクル19で入力ポートin2のLAST信号がHighとなり、入力ポートin2側からの一つのフレームの送信が終了する。サイクル20では入力ポートin1のVALID信号がHighである。しかし、入力ポートin1のカウンタ103aのカウンタ値は0ではないため、アービタ回路101は、入力ポートin1の送信要求はないものとして扱う。このため、アービタ回路101は、入力ポートin1のREADYをHighにせず、入力ポートin1側のフレームの送信を開始しない。
【0077】
入力ポートin2側のいずれのフレームも送信されていない間、つまり入力ポートin2のVALID信号およびREADY信号のどちらかまたは双方がLowである間、入力ポートin2のカウンタ103bのカウンタ値は、サイクル毎に、入力ポートin2のトラフィッククラス(FIFO31232b)に対応するカウンタ減少係数だけ減少される。カウンタ103bのカウンタ値が0になると、カウンタ103bのカウンタ値は減少されず、0に維持される。
【0078】
サイクル23で入力ポートin1のカウンタ103aのカウンタ値は、0に到達する。サイクル23において、アービタ回路101は、アービトレーション処理を実行する。サイクル23では、入力ポートin2のカウンタ103bの値が0ではないため、VALID信号にかかわらず、入力ポートin2からの送信要求がないものとして扱われる。このため、アービタ回路101は、入力ポートin1を選択し、サイクル24からは入力ポートin1のREADY信号をHighにして入力ポートin1側の1つのフレームの送信を開始する。
【0079】
このように、あるトラフィッククラスに属する1つのフレームが送信されている間(つまりVALID信号およびREADY信号がともにHighである間)、ETSアービタ31233は、サイクル毎に、このトラフィッククラスに対応するカウンタのカウンタ値を、このトラフィッククラスに対応するカウンタ増加係数だけ増加させる。
【0080】
また、あるトラフィッククラスに属するいずれのフレームも送信されていない間(つまりVALID信号およびREADY信号のどちらかもしくは双方がLowである間)、ETSアービタ31233は、このトラフィッククラスに対応するカウンタのカウンタ値が0になるまで、このトラフィッククラスに対応するカウンタのカウンタ値を、サイクル毎に、このトラフィッククラスに対応するカウンタ減少係数だけ減少させる。そしてカウンタ値が0でない場合は、アービタ回路101は、対応する入力ポートからの送信要求がないものとして扱ったうえで、アービトレーション処理を行う。
【0081】
このように、アービタ回路101は、フレームの送信を要求しているトラフィッククラスの中からカウンタの値が0であるトラフィッククラスを送信対象のトラフィッククラスとして選択し、選択した送信対象のトラフィッククラスに属するフレームを、ネットワーク4を介して外部装置に送信する。
【0082】
次に、カウンタ増加係数とカウンタ減少係数との間の比率と、帯域幅(送信スループット)との関係を説明する。
【0083】
図5は、あるトラフィッククラスに対して設定されるカウンタ増加係数とカウンタ減少係数との間の比率と、このトラフィッククラスに対して割り当てられる帯域幅(送信スループット)との関係の例を示す図である。図5では、カウンタ増加係数とカウンタ減少係数の比が1:1の場合が示されている。
【0084】
FIFOからの送信要求が間断なく継続する場合を考えると、カウンタ増加係数とカウンタ減少係数が互いに等しい場合、一つのフレームの送信中にカウントアップされたカウンタ値が0に戻るまでの時間(サイクル数)(=送信要求がマスクされる期間)は、そのフレームを送信するためにかかった時間(サイクル数)と等しくなる。このため、この入力ポートに対応するトラフィッククラスに対して割り当てられる帯域幅(送信スループット)は、ネットワーク4の利用可能な帯域幅全体(最大送信スループット)の50%に制限される。
【0085】
図6は、あるトラフィッククラスに対して設定されるカウンタ増加係数とカウンタ減少係数との間の比率と、このトラフィッククラスに対して割り当てられる帯域幅(送信スループット)との関係の別の例を示す図である。図6では、カウンタ増加係数とカウンタ減少係数の比が4:1の場合が示されている。
【0086】
FIFOからの送信要求が間断なく継続する場合を考えると、カウンタ増加係数とカウンタ減少係数の比が4:1の場合、送信中にカウントアップされたカウンタ値が0に戻るまでの時間(サイクル数)(=送信要求がマスクされる期間)は、そのフレームを送信するためにかかった時間(サイクル数)の4倍の時間になる。このため、この入力ポートに対応するトラフィッククラスに対して割り当てられる帯域幅(送信スループット)は、ネットワーク4の利用可能な帯域幅全体(最大送信スループット)の20%に制限されることになる。
【0087】
このように、トラフィッククラス毎に割り当てられる帯域幅(目標送信スループット)に基づいて、トラフィッククラス毎に、0よりも大きいカウンタ増加係数と、0よりも大きいカウンタ減少係数とが設定される。これにより、複数のトラフィッククラスに1対1の関係でそれぞれ対応付けられた複数のカウンタの各々のカウンタ値を増減させるという簡単な回路構成で、各トラフィッククラスが使用可能な帯域幅を制限しながら次の送信対象のトラフィッククラスを選択するアービトレーション処理(送信選択制御)を実行することが可能となる。
【0088】
次に、カウンタ増加係数とカウンタ減少係数との間の比率を設定する動作を説明する。図7は、あるトラフィッククラスに対応する、カウンタ増加係数とカウンタ減少係数との間の比率を設定する動作の例を説明するための図である。
【0089】
図7では、カウンタ増加係数をS1、カウンタ減少係数をS2、フレーム送信中の期間をa、送信要求マスク期間をbとしている。ここで、図7のような三角形の高さをhとすると、S1は、三角形の頂点P1と頂点P2とを結ぶ辺の傾きに相当し、S2は、三角形の頂点P2と頂点P3とを結ぶ辺の傾きに相当する。このため、S1、S2は、以下の式で表すことができる。
【0090】
S1=h/a, S2=h/b …(式1)
式1をa,bについて解くと、
a=h/S1, b=h/S2 …(式2)
となる。
【0091】
最大スループットとトラフィッククラスの目標送信スループットとの比率をTransmit Rate(Rt)とすると、Transmit Rate(Rt)は、以下の式で表すことができる。
【0092】
Transmit Rate(RT)=a/(a+b)
=(h/S1)/{(h/S1)+(h/S2)}
=1/{1+(S1/S2)}
=S2/(S1+S2)
このようにTransmit Rate(RT)は、カウンタ増加係数S1およびカウンタ減少係数S2の関数で表される。このため、これらカウンタ増加係数S1およびカウンタ減少係数S2の値を調整することで、任意のRTを得ることができる。
【0093】
したがって、ETSアービタ31233またはネットワーク制御部3121は、ネットワークの利用可能な帯域幅全体(最大送信スループット)を1とし、複数のトラフィッククラスの各々に割り当てられた帯域幅(目標送信スループット)を、0よりも大きく且つ1よりも小さい値であるXとし、トラフィッククラス毎に設定されるカウンタ増加値をS1とし、トラフィッククラス毎に設定されるカウンタ減少値をS2とした場合、複数のトラフィッククラスの各々に対応するカウンタ増加値S1およびカウンタ減少値S2を、X=S2/(S1+S2)を満たすように、設定する。これにより、各トラフィッククラスに対応するカウンタ値を増減させ、且つフレームの送信を要求しているトラフィッククラスのうちでカウンタ値が0であるトラフィッククラスを送信対象のトラフィッククラスとして選択するという簡単な制御で、各トラフィッククラスが使用可能な帯域幅を制限しながら次の送信対象のトラフィッククラスを選択するアービトレーション処理を実行することが可能となる。
【0094】
なお、送信データの量を送信量計測部で計測し、計測された送信データの量を帯域制限部にフィードバックする、という構成を使用して、アービトレーション処理を実行することも考えられる。しかしながら、このようなフィードバック型の構成を使用した場合には、送信量計測部には、送信フレームがどのトラフィッククラスに属するのかを判定するために、(1)送信フレームを解析してトラフィッククラス番号を各送信フレームから抽出する機能と、(2)送信された各フレームのサイズを判定し、送信されたフレームサイズの合計を算出する機能と、(3)送信されたフレームサイズの時間平均を求めるための機能、等が必要となり、その結果、回路規模の増大およびコストアップが引き起こされる。
【0095】
一方、第1実施形態では、各トラフィッククラスに対応するカウンタ値を増減させるという簡単な回路構成で、各トラフィッククラスが使用可能な帯域幅を制限できる。よって、送信フレームを解析する機能、送信された各フレームのサイズを判定して、送信されたフレームサイズの合計を算出する機能、送信されたフレームサイズの時間平均を求める機能などを設ける必要がない。よって、フィードバック型の構成を使用する場合に比し、単純な回路でアービトレーション処理を実行できる。
【0096】
(第2実施形態)
次に、第2実施形態に係る送信制御回路(ETSアービタ)について説明する。第1実施形態のETSアービタ31233は、フレームの送信を要求しているトラフィッククラスの中からカウンタの値が0であるトラフィッククラスを送信対象のトラフィッククラスとして選択したが、第2実施形態に係るETSアービタ31233は、フレームの送信を要求しているトラフィッククラスの中からカウンタ値が最小であるトラフィッククラスを送信対象のトラフィッククラスとして選択する。この構成によれば、たとえ対応するカウンタ値が0でない場合であっても、カウンタ値が最小であるトラフィッククラスに属するフレームを送信することができる。よって、あるトラフィッククラスが実際に使用している帯域幅がそのトラフィッククラスに割り当てられた帯域幅よりも少ない場合には、余っている帯域幅を、別のトラフィッククラスに属するフレームの送信に利用することができる。
【0097】
つまり、第1実施形態のアービタ31233においては、入力ポート(トラフィッククラス)毎にカウンタ増加係数S1およびカウンタ減少係数S2を指定することにより入力ポート(トラフィッククラス)毎に設定された目標スループットを超えてフレームの送信が行われることはない。ETS規格では、各トラフィッククラスが送信しようとする送信スループットの合計が最大送信スループットを下回り、これによって利用可能な帯域幅全体に余裕がある場合には、各トラフィッククラスがその目標スループットを超えてフレームの送信を行ってもよいとされている。第2実施形態では、利用可能な帯域幅全体に余裕がない場合は各トラフィッククラスがその目標スループットに従ってフレーム群の送信を行うことを可能にし、且つあるトラフィッククラスが実際に使用している帯域幅がそのトラフィッククラスに割り当てられた帯域幅よりも少なく、これによって利用可能な帯域幅全体に余裕がある場合に限り、他のトラフィッククラスがその目標スループットを超えてフレーム群の送信を行うことを可能にできるETSアービタの構成例について説明する。
【0098】
図8は、第2実施形態に係る送信制御回路(ETSアービタ31233)の構成例を示す回路図である。
【0099】
第2実施形態に係るETSアービタ31233は、アービタ回路111と、AND回路102a~102dと、カウンタ103a~103dと、ソート回路114と、を含む。AND回路102a~102dおよびカウンタ103a~103dは、第1実施例におけるAND回路102a~102dおよびカウンタ103a~103dと同じであるため、ここではその説明を省略する。ただし、カウンタ103a~103dの各々のカウンタ値の上限は制限されており、あるカウンタのカウンタ値にカウンタ増加係数を加算した場合にそのカウンタ値が上限値を超える場合は、カウンタ値は上限値に維持される。
【0100】
アービタ回路111は、FIFO31232a~31232dからのVALID信号と後述するカウンタ順位とに基づいて、入力ポートin1~in4の中から1つの入力ポートを選択し、選択した入力ポートのデータを出力ポートout経由でMAC/PHY部311に出力する。この時、アービタ回路111は、VALID信号がアサートされた入力ポートのうちカウンタ値が一番小さい入力ポートを選択する。VALIDがアサートされている入力ポートの中でカウンタ値が最小である入力ポートが複数ある場合は、アービタ回路111は、カウンタ値が最小であるこれら入力ポートそれぞれの優先度(つまりトラフィッククラスそれぞれ優先度)に基づいて、これら入力ポートの一つを選択する。この場合、例えば、入力ポートin1、入力ポートin2、入力ポートin3、入力ポートin4に固定の優先度をそれぞれ付与し、カウンタ値が最小である幾つかの入力ポートのうちで、最も高い優先度を有する入力ポートを選択する、という固定優先アービトレーションを使用して入力ポートを選択してもよい。あるいは、入力ポートを選択する度に入力ポートそれぞれの優先度をローテーションするラウンドロビンアルゴリズムを使用して、カウンタ値が最小である幾つかの入力ポートのうちの一つの入力ポートを選択してもよい。
【0101】
ソート回路114は、カウンタ103a~103dのカウンタ値をそれぞれ比較およびソートし、各入力ポートに対応するカウンタ値が何番目に小さいかを示すカウンタ順位をアービタ回路111に出力する。
【0102】
アービタ回路111は、このカウンタ順位と各入力ポートのVALID信号とを用いて、フレームの送信を要求している入力ポートのうち、もっともカウンタ値が小さい入力ポートを選択するアービトレーション処理を実行する。
【0103】
次に、第2実施形態に係るETSアービタ31233の動作を説明する。図9は、第2実施形態に係るETSアービタ31233の動作を示すタイミングチャートである。
【0104】
図9では、説明を簡単にするために、2つのFIFO(FIFO31232aおよび31232b)からアービタ回路111の2つの入力ポート(入力ポートin1および入力ポートin2)に対して送信要求が発行される場合が示されている。図9の上部のグラフは、カウンタ103aのカウンタ値の変化を示している。図9の下部のグラフは、カウンタ103bのカウンタ値の変化を示している。各グラフにおける横軸は、時間、つまりクロックサイクルの番号を示す。各グラフにおける縦軸は、対応するカウンタのカウンタ値を示す。
【0105】
また、図9の上部のグラフの下方には入力ポートin1に対するVALID信号、LAST信号,READY信号の状態が示されており、図9の下部のグラフの下方には入力ポートin2に対するVALID信号、LAST信号,READY信号の状態が示されている。
【0106】
サイクル0~2では、入力ポートin1およびin2のいずれのVALID信号もLowであるため、フレームの送信を要求しているトラフィッククラス(FIFO)は、存在しない。このため、ETSアービタ31233のアービタ回路111は、入力ポートin1およびin2のうちのいずれの入力ポートも選択しない。
【0107】
サイクル3において、入力ポートin1のVALID信号がHighに変化する。一方、入力ポートin2のVALID信号は、Lowに維持されている。このため、アービタ回路111は、入力ポートin1に対応するトラフィッククラス(FIFO)のみがフレームの送信を要求していると判断する。アービタ回路111は、入力ポートin1に送信許可を出すべくサイクル4で入力ポートin1に対応するREADY信号をHighにし、入力ポートin1側の1つのフレームの送信をサイクル4で開始する。つまり、アービタ回路111は、入力ポートin1に対応するトラフィッククラス(FIFO)を選択し、選択したトラフィッククラス(FIFO)に属する1つのフレームを、MAC/PHY部311を通じて、ホスト2(またはネットワーク機器)に送信する。1つのフレームの送信に要するクロックサイクルの数は、そのフレームサイズに依存する。
【0108】
入力ポートin1側の1つのフレームが送信されている期間、つまりサイクル4からサイクル13の間、入力ポートin1のカウンタ103aのカウンタ値は、サイクル毎に、入力ポートin1のトラフィッククラス(FIFO31232a)に対応するカウンタ増加係数だけ増加される。入力ポートin1側のフレームの送信中であるサイクル6で入力ポートin2のVALIDがHighになる。これにより、入力ポートin2に対応するトラフィッククラス(FIFO31232b)がフレームの送信を要求していることがアービタ回路111に通知される。しかし、入力ポートin1側の1つのフレームの送信が終了していないため、アービタ回路111は、アービトレーション処理を行わず、そのまま入力ポートin1のREADY信号をHighに維持し、入力ポートin1側の1つのフレームの送信を継続する。
【0109】
サイクル13において、入力ポートin1のVALID信号がHighである状態で入力ポートin1のLAST信号がHighに変化した場合、アービタ回路111は、サイクル13において送信中のデータが、この送信中のフレームの末尾のデータであると認識する。このため、サイクル13において入力ポートin1のフレームの送信が終了する。
【0110】
サイクル13において入力ポートin1のフレームの送信が終了すると、アービタ回路111は、サイクル14において、次の送信対象の入力ポートを選択するためのアービトレーション処理を行う。サイクル14では、入力ポートin1のVALID信号および入力ポートin2のVALID信号の双方がHighになっている。このため、入力ポートin1のトラフィッククラス(FIFO31232a)および入力ポートin2のトラフィッククラス(FIFO31232b)の双方が、フレームの送信を要求している。
【0111】
この場合、アービタ回路111は、フレームの送信を要求しているトラフィッククラスの中からカウンタの値が最小であるトラフィッククラスを選択する。ここでは、入力ポートin2のトラフィッククラス(FIFO31232b)に対応するカウンタ103bのカウンタ値が最小のカウンタ値である。このため、アービタ回路111は、入力ポートin2を選択する。アービタ回路111は、サイクル15から入力ポートin2のREADY信号をHighにし、入力ポートin2側の1つのフレームの送信をサイクル15から開始する。
【0112】
入力ポートin2側の1つのフレームが送信中であるサイクル15からサイクル19の間、入力ポートin2のカウンタ103bのカウンタ値は、サイクル毎に、入力ポートin2のトラフィッククラス(FIFO31232b)に対応するカウンタ増加係数だけ増加される。
【0113】
一方、入力ポートin1側のいずれのフレームも送信されていない間、つまり入力ポートin1のVALID信号およびREADY信号のどちらかまたは双方がLowである間、入力ポートin1のカウンタ103aのカウンタ値は、サイクル毎に、入力ポートin1のトラフィッククラス(FIFO31232a)に対応するカウンタ減少係数だけ減少される。カウンタ103aのカウンタ値が0になると、カウンタ103aのカウンタ値は減少されず、0に維持される。
【0114】
サイクル19で入力ポートin2のLAST信号がHighとなり、入力ポートin2側からの1つのフレームの送信が終了する。
【0115】
サイクル20では、入力ポートin1のVALID信号がHighであり、入力ポートin2のVALID信号がLowである。このため、アービタ回路111は、入力ポートin1を選択し、入力ポートin1側の1つのフレームの送信をサイクル21で開始する。この後、入力ポートin1側のフレームが送信中であるサイクル21からサイクル30の間、入力ポートin1のカウンタ103aのカウンタ値は、サイクル毎に、入力ポートin1のトラフィッククラス(FIFO31232a)に対応するカウンタ増加係数だけ増加される。
【0116】
一方、入力ポートin2側のいずれのフレームも送信されていない間、つまり入力ポートin2のVALID信号およびREADY信号のどちらかまたは双方がLowである間、入力ポートin2のカウンタ103bのカウンタ値は、サイクル毎に、入力ポートin2のトラフィッククラス(FIFO31232b)に対応するカウンタ減少係数だけ減少される。カウンタ103bのカウンタ値が0になると、カウンタ103bのカウンタ値は減少されず、0に維持される。
【0117】
そして、サイクル30で、入力ポートin1側のフレームの送信が終了する。次のサイクル31では入力ポートin1のVALID信号および入力ポートin2のVALID信号の双方がHighになっているため、FIFO31232aおよびFIFO31232bのどちらもフレームの送信を要求している。入力ポートin2に対応するカウンタ103bのカウンタ値は、入力ポートin1に対応するカウンタ103aのカウンタ値より小さい。このため、アービタ回路111は、入力ポートin2を選択する。サイクル32からサイクル36では、入力ポートin2側のフレームが送信される。このため、サイクル32からサイクル36の間、入力ポートin2のカウンタ103bのカウンタ値は、サイクル毎に、入力ポートin2のトラフィッククラス(FIFO31232b)に対応するカウンタ増加係数だけ増加される。一方、入力ポートin1のカウンタ103aのカウンタ値は、サイクル毎に、入力ポートin1のトラフィッククラス(FIFO31232a)に対応するカウンタ減少係数だけ減少される。
【0118】
そして、サイクル36で、入力ポートin2側の1つのフレームの送信が終了する。次のサイクル37では入力ポートin1のVALID信号および入力ポートin2のVALID信号の双方がHighになっているため、FIFO31232aおよびFIFO31232bの双方がフレームの送信を要求している。入力ポートin1のカウンタ103aのカウンタ値は、入力ポートin2のカウンタ103bのカウンタ値より小さい。このため、アービタ回路111は、入力ポートin1を選択する。そして、アービタ回路111は、サイクル38で入力ポートin1のREADY信号をHighにし、入力ポートin1側の1つのフレームの送信をサイクル38で開始する。
【0119】
このように、あるトラフィッククラスに属する1つのフレームが送信されている間(つまりVALID信号およびREADY信号がともにHighである間)、ETSアービタ31233は、サイクル毎に、このトラフィッククラスに対応するカウンタのカウンタ値を、このトラフィッククラスに対応するカウンタ増加係数だけ増加させる。
【0120】
また、あるトラフィッククラスに属するいずれのフレームも送信されていない間(つまりVALID信号およびREADY信号のどちらかもしくは双方がLowである間)、ETSアービタ31233は、このトラフィッククラスに対応するカウンタのカウンタ値が0になるまで、このトラフィッククラスに対応するカウンタのカウンタ値を、サイクル毎に、このトラフィッククラスに対応するカウンタ減少係数だけ減少させる。そして、フレームの送信を要求しているトラフィッククラスのうちでカウンタ値が最小であるトラフィッククラスが送信対象のトラフィッククラスとして選択され、選択されたトラフィッククラスに属するフレームがネットワーク4を介して外部装置に送信される。
【0121】
第2実施形態においても、第1実施形態と同様の方法を使用して、各トラフィッククラスに割り当てられた帯域幅に基づいて、トラフィッククラス毎にカウンタ増加係数S1およびカウンタ減少係数S2が設定される。したがって、フレームの送信を要求しているトラフィッククラスのうちでカウンタ値が最小であるトラフィッククラスが送信対象のトラフィッククラスとして選択するアービトレーション処理を行うことにより、あるトラフィッククラスが実際に使用している帯域幅がそのトラフィッククラスに割り当てられた帯域幅よりも少ない場合には、余っている帯域幅を、別のトラフィッククラスに属するフレームの送信に有効に利用することができる。
【0122】
つまり、利用可能な帯域幅全体に余裕がない場合は各トラフィッククラスがその目標スループットに従ってフレーム群の送信を行うことを可能にし、且つあるトラフィッククラスが実際に使用している帯域幅がそのトラフィッククラスに割り当てられた帯域幅よりも少なく、これによって利用可能な帯域幅全体に余裕がある場合に限り、他のトラフィッククラスがその目標スループットを超えてフレーム群の送信を行うことを可能にできる。
【0123】
しかし、あるトラフィッククラスに対応するカウンタ値が零になる前にこのトラフィッククラスが送信対象のトラフィッククラスとして何度も選択された場合、このトラフィッククラスに対応するカウンタ値は、大きな値になる。有限のビット数を用いたカウンタ回路がカウンタとして使用されることを考えると、カウンタ値には上限がある。このため、あるトラフィッククラスが頻繁に選択されると、このトラフィッククラスに対応するカウンタ値は、図10のように、飽和する場合がある。
【0124】
このような状態になると、入力ポート(トラフィッククラス)間のカウンタ値の大小関係が崩れる可能性がある。なぜなら、もしあるトラフィッククラスに対応するカウンタ値に上限が無い場合には、このカウンタ値はその上限値よりも大きい本来の値にまで増加し、その本来の値から減少し始めるのに対し、カウンタ値に上限がある場合には、このカウンタ値は、本来の値よりも小さい上限値に維持されてしまい、本来の値よりも小さい上限値から減少し始めるためである。
【0125】
複数のトラフィッククラスが送信しようとするスループットの合計が最大送信スループットを上回ると、複数のカウンタ値の大小関係は徐々に適切な関係に回復され得る。しかしながら、あるカウンタ値が一旦飽和すると、複数のカウンタ値の大小関係が適切な関係に回復されるまでに長い時間がかかる場合がある。
【0126】
以下の第3および第4の実施形態では、第2実施形態と同様に、トラフィッククラス毎に設定されるカウンタ増加係数S1およびカウンタ減少係数S2に基づいてカウンタを増減させながら最小のカウンタ値を有するトラフィッククラスを送信対象のトラフィッククラスとして選択でき、且つカウンタ値の大小関係を大きく損なうことなく、任意のカウンタの飽和を抑制できるETSアービタの構成例について説明する。
【0127】
(第3実施形態)
図11は、第3実施形態に係る送信制御回路(ETSアービタ31233)の構成例を示す回路図である。
【0128】
第3実施形態に係るETSアービタ31233は、第2実施形態に係るETSアービタと同様に、フレームの送信を要求しているトラフィッククラスのうちでカウンタ値が最小であるトラフィッククラスを送信対象のトラフィッククラスとして選択するアービトレーション処理を実行する。さらに、第3実施形態に係るETSアービタ31233は、アービトレーション処理を実行する際、全てのトラフィッククラスに対応する全てのカウンタのカウンタ値のうちの最小値を特定する。全てのトラフィッククラスには、フレームの送信を要求している一つ以上のトラフィッククラスだけでなく、フレームの送信を要求していない他の一つ以上のトラフィッククラスも含まれる。そして、第3実施形態に係るETSアービタ31233は、全てのカウンタの値の各々を、特定した最小値だけ減少させる減算処理を実行する。これにより、アービトレーション処理が実行される度に、全てのカウンタ値の各々が最小値だけ減少される。この結果、どのトラフィッククラスが頻繁に送信対象のトラフィッククラスとして選択された場合であっても、各トラフィッククラスのカウンタが飽和することを未然に防止することが可能なる。なお、上述したように、減算処理によって各カウンタのカウンタ値から減算される値は、全てのカウンタのカウンタ値のうちの最小値であるので、どのカウンタのカウンタ値も零よりも小さい値に減少されることはない。よって、カウンタ間のカウンタ値の大小関係を維持したまま、各カウンタのカウンタ値を減少させることができる。
【0129】
また、アービトレーション処理では、減算処理が実行された後の各カウンタの値を使用して送信対象のトラフィッククラスを選択してもよいし、減算処理が実行される前の各カウンタの値を使用して送信対象のトラフィッククラスを選択してもよい。これは、上述したように、カウンタ間のカウンタ値の大小関係は、減算処理の前後で変化しないからである。
【0130】
図11に示すように、第3実施形態に係るETSアービタ31233は、アービタ回路121と、AND回路102a~102dと、カウンタ123a~123dと、ソート回路124と、を含む。
【0131】
アービタ回路121は、FIFO31232a~31232dから入力されるデータを受け付け、これらデータの中から1つのデータを選択し、選択したデータをMAC/PHY部311に出力する。アービタ回路121は、基本的には、第2実施形態のアービタ回路111と同様に、フレームの送信を要求しているトラフィッククラス(FIFO)のうちでカウンタ値が最小であるトラフィッククラス(FIFO)を送信対象のトラフィッククラスとして選択するアービトレーション処理を実行する。さらに、アービタ回路121は、アービトレーション処理を実行する際、カウンタ123a~123dの各々にトリガ信号を発行する。このトリガ信号は、カウンタ123a~123dの各々に、カウンタ値を最小値だけ減少させることを指示する制御信号である。ここで、最小値は、全てのカウンタ(カウンタ123a~123d)のカウンタ値のうちの最小値、つまり、フレームの送信を要求しているトラフィッククラスだけでなく、フレームの送信を要求していないトラフィッククラスをも含む全てのトラフィッククラスに対応するカウンタ値のうちの最小値である。
【0132】
AND回路102a~102dは、第1実施形態のAND回路102a~102dと同じであるので、ここではその説明を省略する。
【0133】
ソート回路124は、基本的には、第2実施形態のソート回路114と同様に、カウンタ123a~123dのカウンタ値をそれぞれ比較およびソートし、各入力ポートに対応するカウンタ値が何番目に小さいかを示すカウンタ順位をアービタ回路121に出力する。さらに、ソート回路124は、カウンタ123a~123dのカウンタ値のソート結果として、カウンタ123a~123dのカウンタ値のうちの最小値(最小カウンタ値)を特定し、特定した最小カウンタ値をカウンタ123a~123dの各々に通知する。
【0134】
カウンタ123a~123dは、第1実施形態のカウンタ103a~103dと同様に、FIFO31232a~31232dにそれぞれ対応している。カウンタ123a~123dの各々は、カウンタレジスタを含む。カウンタ123a~123dの各々は、ネットワーク制御部3121からの設定と対応するAND回路102の出力信号とに従って、その内部のカウンタレジスタの値であるカウンタ値を増加または減少させる。さらに、カウンタ123a~123dの各々は、アービタ回路121からトリガ信号が入力された際、そのカウンタ値から最小カウンタ値を減算して、そのカウンタ値を最小カウンタ値だけ減少させる。
【0135】
次に、第3実施形態に係るETSアービタ31233の動作を説明する。図12は、第3実施形態に係るETSアービタ31233の動作を示すタイミングチャートである。
【0136】
図12では、説明を簡単にするために、2つのFIFO(FIFO31232aおよび31232b)からアービタ回路121の2つの入力ポート(入力ポートin1および入力ポートin2)に対して送信要求が発行される場合が示されている。図12の上部のグラフは、カウンタ123aのカウンタ値の変化を示している。図12の下部のグラフは、カウンタ123bのカウンタ値の変化を示している。各グラフにおける横軸は、時間、つまりクロックサイクルの番号を示す。各グラフにおける縦軸は、対応するカウンタのカウンタ値を示す。
【0137】
また、図12の上部のグラフの下方には入力ポートin1に対するVALID信号、LAST信号,READY信号の状態が示されており、図12の下部のグラフの下方には入力ポートin2に対するVALID信号、LAST信号,READY信号の状態が示されている。
【0138】
サイクル0~2では、入力ポートin1およびin2のいずれのVALID信号もLowであるため、フレームの送信を要求しているトラフィッククラス(FIFO)は、存在しない。このため、ETSアービタ31233のアービタ回路121は、入力ポートin1およびin2のうちのいずれの入力ポートも選択しない。
【0139】
サイクル3において、入力ポートin1のVALID信号がHighに変化する。一方、入力ポートin2のVALID信号は、Lowに維持されている。このため、アービタ回路121は、入力ポートin1に対応するトラフィッククラス(FIFO)のみがフレームの送信を要求していると判断する。アービタ回路121は、入力ポートin1に送信許可を出すべくサイクル4で入力ポートin1に対応するREADY信号をHighにし、入力ポートin1側の1つのフレームの送信をサイクル4で開始する。つまり、アービタ回路121は、入力ポートin1に対応するトラフィッククラス(FIFO)を選択し、選択したトラフィッククラス(FIFO)に属する1つのフレームを、MAC/PHY部311を通じて、ホスト2(またはネットワーク機器)に送信する。
【0140】
入力ポートin1側の1つのフレームが送信されている期間、つまりサイクル4からサイクル13の間、入力ポートin1のカウンタ123aのカウンタ値は、サイクル毎に、入力ポートin1のトラフィッククラス(FIFO31232a)に対応するカウンタ増加係数だけ増加される。入力ポートin1側のフレームの送信中であるサイクル6で入力ポートin2のVALIDがHighになる。これにより、入力ポートin2に対応するトラフィッククラス(FIFO31232b)がフレームの送信を要求していることがアービタ回路121に通知される。しかし、入力ポートin1側の1つのフレームの送信が終了していないため、アービタ回路121は、アービトレーション処理を行わず、そのまま入力ポートin1のREADY信号をHighに維持し、入力ポートin1側の1つのフレームの送信を継続する。
【0141】
サイクル13において、入力ポートin1のVALID信号がHighである状態で入力ポートin1のLAST信号がHighに変化した場合、アービタ回路121は、サイクル13において送信中のデータが、この送信中のフレームの末尾のデータであると認識する。このため、サイクル13において入力ポートin1のフレームの送信が終了する。
【0142】
サイクル13において入力ポートin1のフレームの送信が終了すると、アービタ回路121は、サイクル14において、次の送信対象の入力ポートを選択するためのアービトレーション処理を行う。サイクル14では、入力ポートin1のVALID信号および入力ポートin2のVALID信号の双方がHighになっている。このため、入力ポートin1のトラフィッククラス(FIFO31232a)および入力ポートin2のトラフィッククラス(FIFO31232b)の双方が、フレームの送信を要求している。
【0143】
この場合、アービタ回路121は、フレームの送信を要求しているトラフィッククラスの中からカウンタの値が最小であるトラフィッククラスを選択する。ここでは、入力ポートin2のトラフィッククラス(FIFO31232b)に対応するカウンタ123bのカウンタ値が最小のカウンタ値である。このため、アービタ回路121は、入力ポートin2を選択する。アービタ回路111は、サイクル15で入力ポートin2のREADY信号をHighにし、入力ポートin2側の1つのフレームの送信をサイクル15で開始する。
【0144】
また、サイクル14では、アービタ回路121は、全てのカウンタに対してトリガ信号を出力する。トリガ信号を受けた各カウンタは、サイクル14でソート回路124から通知された最小カウンタ値を、サイクル15で、そのカウンタのカウンタ値から減算する。ソート回路124から通知されている最小カウンタ値は、全カウンタ値のうちの最小値である。サイクル14では、全カウンタ値のうちの最小値(ここではカウンタ123bのカウンタ値)は、零である。このため、サイクル15では、実際には、減算処理は行われない。
【0145】
入力ポートin2側の1つのフレームが送信中であるサイクル15からサイクル19の間、入力ポートin2のカウンタ123bのカウンタ値は、サイクル毎に、入力ポートin2のトラフィッククラス(FIFO31232b)に対応するカウンタ増加係数だけ増加される。
【0146】
一方、入力ポートin1側のいずれのフレームも送信されていない間、つまり入力ポートin1のVALID信号およびREADY信号のどちらかまたは双方がLowである間、入力ポートin1のカウンタ123aのカウンタ値は、サイクル毎に、入力ポートin1のトラフィッククラス(FIFO31232a)に対応するカウンタ減少係数だけ減少される。カウンタ123aのカウンタ値が0になると、カウンタ123aのカウンタ値は減少されず、0に維持される。
【0147】
サイクル19で入力ポートin2のLAST信号がHighとなり、入力ポートin2側からの1つのフレームの送信が終了する。
【0148】
サイクル20では、入力ポートin1のVALID信号がHighであり、入力ポートin2のVALID信号がLowである。このため、アービタ回路121は、入力ポートin1を選択し、入力ポートin1側の1つのフレームの送信をサイクル21で開始する。
【0149】
サイクル20では、アービタ回路121は、全てのカウンタの各々にトリガ信号を出力する。トリガ信号を受けた各カウンタは、サイクル20でソート回路124から通知された最小カウンタ値を、サイクル21で、そのカウンタのカウンタ値から減算する。全カウンタ値のうちの最小値がカウンタ123aのカウンタ値(ここでは3)である場合、サイクル21では、各カウンタのカウンタ値は、3だけ減少される。
【0150】
なお、サイクル21では、入力ポートin1側の1つのフレームの送信が開始される。このため、サイクル21では、カウンタ123aのカウンタ値は、3だけ一旦減少された後に、入力ポートin1のトラフィッククラス(FIFO31232a)に対応するカウンタ増加係数だけ増加される。例えば、カウンタ増加係数が1である場合、サイクル21では、カウンタ123aのカウンタ値は、1(=3-3+1)になる。
【0151】
一方、サイクル21では、カウンタ123bのカウンタ値は、3だけ一旦減少された後に、入力ポートin2のトラフィッククラス(FIFO31232b)に対応するカウンタ減少係数だけさらに減少される。例えば、カウンタ減少係数が1である場合、サイクル21では、カウンタ123bのカウンタ値は、計4だけ減少される。
【0152】
上述したように、送信対象のトラフィッククラスを選択する処理は、減算後のカウンタ値を使用して実行してもよいし、減算前のカウンタ値を使用して実行してもよい。
【0153】
入力ポートin1側のフレームが送信中であるサイクル21からサイクル30の間、入力ポートin1のカウンタ123aのカウンタ値は、サイクル毎に、入力ポートin1のトラフィッククラス(FIFO31232a)に対応するカウンタ増加係数だけ増加される。
【0154】
一方、入力ポートin2側のいずれのフレームも送信されていない間、つまり入力ポートin2のVALID信号およびREADY信号のどちらかまたは双方がLowである間、入力ポートin2のカウンタ123bのカウンタ値は、サイクル毎に、入力ポートin2のトラフィッククラス(FIFO31232b)に対応するカウンタ減少係数だけ減少される。カウンタ123bのカウンタ値が0になると、カウンタ123bのカウンタ値は減少されず、0に維持される。
【0155】
そして、サイクル30で、入力ポートin1側のフレームの送信が終了する。次のサイクル31では入力ポートin1のVALID信号および入力ポートin2のVALID信号の双方がHighになっているため、FIFO31232aおよびFIFO31232bのどちらもフレームの送信を要求している。入力ポートin2に対応するカウンタ123bのカウンタ値は、入力ポートin1に対応するカウンタ123aのカウンタ値より小さい。このため、アービタ回路111は、入力ポートin2を選択する。
【0156】
また、サイクル31では、アービタ回路121は、全てのカウンタに対してトリガ信号を出力する。トリガ信号を受けた各カウンタは、サイクル31でソート回路124から通知された最小カウンタ値を、サイクル32で、そのカウンタのカウンタ値から減算する。サイクル31では、全カウンタ値のうちの最小値(ここではカウンタ123bのカウンタ値)は、零である。このため、サイクル32では、実際には、減算処理は行われない。
【0157】
サイクル32からサイクル36では、入力ポートin2側のフレームが送信される。このため、サイクル32からサイクル36の間、入力ポートin2のカウンタ123bのカウンタ値は、サイクル毎に、入力ポートin2のトラフィッククラス(FIFO31232b)に対応するカウンタ増加係数だけ増加される。一方、入力ポートin1のカウンタ123aのカウンタ値は、サイクル毎に、入力ポートin1のトラフィッククラス(FIFO31232a)に対応するカウンタ減少係数だけ減少される。
【0158】
そして、サイクル36で、入力ポートin2側の1つのフレームの送信が終了する。次のサイクル37では入力ポートin1のVALID信号および入力ポートin2のVALID信号の双方がHighになっているため、FIFO31232aおよびFIFO31232bの双方がフレームの送信を要求している。入力ポートin1のカウンタ123aのカウンタ値は、入力ポートin2のカウンタ123bのカウンタ値より小さい。このため、アービタ回路121は、入力ポートin1を選択する。そして、アービタ回路121は、サイクル38で入力ポートin1のREADY信号をHighにし、入力ポートin1側の1つのフレームの送信をサイクル38で開始する。
【0159】
サイクル37では、アービタ回路121は、全てのカウンタの各々にトリガ信号を出力する。トリガ信号を受けた各カウンタは、サイクル37でソート回路124から通知された最小カウンタ値を、サイクル38で、そのカウンタのカウンタ値から減算する。全カウンタ値のうちの最小値がカウンタ123aのカウンタ値(ここでは3)である場合、サイクル38では、各カウンタのカウンタ値は、3だけ減少される。
【0160】
なお、サイクル38では、入力ポートin1側の1つのフレームの送信が開始される。このため、サイクル38では、カウンタ123aのカウンタ値は、3だけ一旦減少された後に、入力ポートin1のトラフィッククラス(FIFO31232a)に対応するカウンタ増加係数だけ増加される。例えば、カウンタ増加係数が1である場合、サイクル38では、カウンタ123aのカウンタ値は、1(=3-3+1)になる。
【0161】
一方、サイクル38では、カウンタ123bのカウンタ値は、3だけ一旦減少された後に、入力ポートin2のトラフィッククラス(FIFO31232b)に対応するカウンタ減少係数だけさらに減少される。例えば、カウンタ減少係数が1である場合、サイクル38では、カウンタ123bのカウンタ値は、計4だけ減少される。
【0162】
第3実施形態のETSアービタ31233においても、第1および第2実施形態と同様の方法を使用して、各トラフィッククラスに割り当てられた帯域幅に基づいて、トラフィッククラス毎にカウンタ増加係数S1およびカウンタ減少係数S2が設定される。また、第3実施形態のETSアービタ31233では、第2実施形態と同様に、フレームの送信を要求しているトラフィッククラスのうちでカウンタ値が最小であるトラフィッククラスを送信対象のトラフィッククラスとして選択するアービトレーション処理が行われる。これにより、第2実施形態と同様に、あるトラフィッククラスが実際に使用している帯域幅がそのトラフィッククラスに割り当てられた帯域幅よりも少ない場合には、余っている帯域幅を、別のトラフィッククラスに属するフレームの送信に有効に利用することができる。
【0163】
つまり、第3実施形態のETSアービタ31233は、利用可能な帯域幅全体に余裕がない場合は各トラフィッククラスがその目標スループットに従ってフレーム群の送信を行うことを可能にし、且つあるトラフィッククラスが実際に使用している帯域幅がそのトラフィッククラスに割り当てられた帯域幅よりも少なく、これによって利用可能な帯域幅全体に余裕がある場合に限り、他のトラフィッククラスがその目標スループットを超えてフレーム群の送信を行うことを可能にできる。
【0164】
さらに、第3実施形態のETSアービタ31233では、各トラフィッククラスのカウンタが飽和することを未然に防止することが可能になる。これにより、たとえ複数のトラフィッククラスの中のあるトラフィッククラスが送信対象のトラフィッククラスとして頻繁に選択された場合であっても、複数のトラフィッククラスにそれぞれ対応する複数のカウンタ値の大小関係を適正な関係に維持することができる。これにより、利用可能な帯域幅全体に余裕がなくなった場合であっても、各トラフィッククラスがその目標スループットに従ってフレーム群の送信を行うことが可能となる。
【0165】
(第4実施形態)
図13は、第4実施形態に係る送信制御回路(ETSアービタ31233)の構成例を示す回路図である。
【0166】
第4実施形態に係るETSアービタ31233は、第2実施形態に係るETSアービタと同様に、フレームの送信を要求しているトラフィッククラスのうちでカウンタ値が最小であるトラフィッククラスを送信対象のトラフィッククラスとして選択するアービトレーション処理を実行する。さらに、第4実施形態に係るETSアービタ31233は、複数のカウンタのいずれかのカウンタの値があらかじめ設定された上限値に達した場合、つまりいずれかのカウンタが飽和した場合、複数のカウンタの値の各々を、nビットだけ右シフトする。ここで、nは、1以上の整数である。これにより、カウンタ値の飽和対策を何ら行わない場合に比し、カウンタ値の大小関係の崩れを抑制することができる。また、ビットシフトは、特別な回路を追加することなく、容易に実現することができる。よって、各カウンタ値からある値を減算するという減算処理を行う場合に比し、アービトレーション処理に係るクロックサイクル数と必要な回路規模とを低減することができる。
【0167】
図13に示すように、第4実施形態に係るETSアービタ31233は、アービタ回路131と、AND回路102a~102dと、カウンタ133a~133dと、ソート回路134と、を含む。
【0168】
AND回路102a~102dは、第1実施形態のAND回路102a~102dと同じ動作を実行するので、ここではその説明を省略する。同様に、アービタ回路131は基本的には第2実施形態におけるアービタ111と同じ動作を実行し、ソート回路134は基本的には第2実施形態におけるソート回路114と同じ動作を実行するので、これらアービタ回路131およびソート回路134の説明は省略する。
【0169】
カウンタ133a~133dの各々は、ネットワーク制御部3121からのカウンタ設定とAND回路102a~dの出力信号とを用いて、そのカウンタ値を制御する。第1実施形態のカウンタ103a~103dと同様に、カウンタ133a~133dの各々は、初期値が0のカウンタレジスタを含み、対応するAND回路102の出力信号がHighの場合はそのカウンタレジスタの値(カウンタ値)をカウンタ増加係数だけ増加させ、対応するAND回路102の出力信号がLowの場合はそのカウンタレジスタの値をカウンタ減少係数だけ減少させる制御を行う。ただし、カウンタ133a~133dの各々は、そのカウンタ値をカウンタ減少係数だけ減少させた値が0を下回る場合、そのカウンタ値を0とするように制御すると同時に、いずれかのカウンタのカウンタ値が飽和した場合、そのカウンタ値をn(ここでnは1以上の整数)ビットだけ右シフトする。右シフト演算で空いた各ビット位置は、零で埋められる。例えば、各カウンタのビット幅が5ビットである場合を想定する。あるカウンタの現在のカウンタ値が「11100」であり、且つn=1であめ場合、このカウンタ値は1ビットの右シフトによって「11100」から「01110」に変更される。つまり、各カウンタを1ビットだけ右シフトした場合には、各カウンタ値はその1/2の値に減少される。また、各カウンタを2ビットだけ右シフトした場合には、各カウンタ値はその1/4の値に減少される。
【0170】
このようなビットシフトを行った場合、カウンタ値の大小関係は多少崩れる可能性があるものの、カウンタの飽和対策を何ら行わない場合に比し、カウンタ値の大小関係の崩れを小さくすることができる。
【0171】
第4実施形態のETSアービタ31233においても、第1、第2および第3実施形態と同様の方法を使用して、各トラフィッククラスに割り当てられた帯域幅に基づいて、トラフィッククラス毎にカウンタ増加係数S1およびカウンタ減少係数S2が設定される。また、第4実施形態のETSアービタ31233では、第2および第3実施形態と同様に、フレームの送信を要求しているトラフィッククラスのうちでカウンタ値が最小であるトラフィッククラスを送信対象のトラフィッククラスとして選択するアービトレーション処理が行われる。これにより、第2および第3実施形態と同様に、あるトラフィッククラスが実際に使用している帯域幅がそのトラフィッククラスに割り当てられた帯域幅よりも少ない場合には、余っている帯域幅を、別のトラフィッククラスに属するフレームの送信に有効に利用することができる。
【0172】
つまり、第4実施形態のETSアービタ31233は、利用可能な帯域幅全体に余裕がない場合は各トラフィッククラスがその目標スループットに従ってフレーム群の送信を行うことを可能にし、且つあるトラフィッククラスが実際に使用している帯域幅がそのトラフィッククラスに割り当てられた帯域幅よりも少なく、これによって利用可能な帯域幅全体に余裕がある場合に限り、他のトラフィッククラスがその目標スループットを超えてフレーム群の送信を行うことを可能にできる。
【0173】
さらに、第4実施形態のETSアービタ31233では、減算処理を行うことなく、各トラフィッククラスのカウンタが飽和することを未然に防止することが可能になる。これにより、たとえ複数のトラフィッククラスの中のあるトラフィッククラスが送信対象のトラフィッククラスとして頻繁に選択された場合であっても、複数のトラフィッククラスにそれぞれ対応する複数のカウンタ値の大小関係を適正な関係に維持することができる。これにより、利用可能な帯域幅全体に余裕がなくなった場合であっても、各トラフィッククラスがその目標スループットに従ってフレーム群の送信を行うことが可能となる。
【0174】
また、第4実施形態のETSアービタ31233では、カウンタ値の調整がビットシフトで実現できるため、減算処理を利用する構成に比し、ETSアービタ31233の動作周波数の向上、アービトレーションに要するクロックサイクル数の削減、回路規模の低減等の効果が得られる。
【0175】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0176】
1…ネットワークストレージシステム、2…ホスト、3…ストレージ(メモリシステム)、4…ネットワーク、31…コントローラ、32…NANDフラッシュメモリ、31233…ETSアービタ、101、111、121、131…アービタ回路、102a~102d…AND回路、103a~103d、123a~123d、133a~133d…カウンタ、104a~104d…比較回路、114、124、134…ソート回路。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13