JP5332430B2 - 共有メモリシステム - Google Patents

共有メモリシステム Download PDF

Info

Publication number
JP5332430B2
JP5332430B2 JP2008233949A JP2008233949A JP5332430B2 JP 5332430 B2 JP5332430 B2 JP 5332430B2 JP 2008233949 A JP2008233949 A JP 2008233949A JP 2008233949 A JP2008233949 A JP 2008233949A JP 5332430 B2 JP5332430 B2 JP 5332430B2
Authority
JP
Japan
Prior art keywords
data
shared memory
memory
input
switch
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2008233949A
Other languages
English (en)
Other versions
JP2010067091A (ja
Inventor
剛 清水
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu 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 JP2008233949A priority Critical patent/JP5332430B2/ja
Priority to US12/556,164 priority patent/US8116306B2/en
Publication of JP2010067091A publication Critical patent/JP2010067091A/ja
Application granted granted Critical
Publication of JP5332430B2 publication Critical patent/JP5332430B2/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/10Packet switching elements characterised by the switching fabric construction
    • H04L49/103Packet switching elements characterised by the switching fabric construction using a shared central buffer; using a shared memory
    • 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
    • H04L49/3018Input queuing
    • 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
    • H04L49/3027Output queuing
    • 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
    • H04L49/3036Shared queuing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/351Switches specially adapted for specific applications for local area network [LAN], e.g. Ethernet switches

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Memory System (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明はパケット交換を実行するスイッチの技術に関連し、特にスイッチにおいてパケットを格納する。技術に関連する。
スイッチはネットワーク間の接続を行う装置であって、通信システム内でのパケット交換を実行する装置である。複数の情報処理装置の通信を中継するスイッチも存在し、そのようなスイッチは複数の情報処理装置と接続できるように多ポートを有する。多ポートを有するスイッチ(以下、多ポートスイッチと呼ぶ。)は、複数の情報処理装置からパケットを受け取り、複数の情報処理装置に対してパケットを送信する。またこのような多ポートスイッチは多ポートでメモリを共用している。これは多ポートスイッチが複数の情報処理装置に対して同一のパケットを送信する、いわゆるマルチキャスト送信をする際に、多ポートスイッチがパケットを送信する情報処理装置の数に応じてパケットをコピーすることを回避するためである。そして多ポートスイッチはメモリインターリービングを用いて、パケット交換の処理速度を高速化することができる。
多ポートスイッチが、メモリインターリービングを用いて共有メモリに転送データ(パケット)を格納する場合、ポートの入出力スループットと、メモリのポート当たりの入出力スループットを同じにしておかないと、共有メモリへの格納効率が落ちるといった問題が発生する。つまりスイッチが、ポートと共有メモリにおける入出力の速度差によって生じるギャップを共有メモリに格納してしまうと、インターリービングによってレイテンシ(遅延時間)は短くできても、メモリの格納効率が落ちてしまう。そのため多ポートスイッチにおいて、メモリインターリービングを用いて共有メモリへ効率的に転送データを格納し、レイテンシ(遅延時間)の短いカットスルー処理を実現するためには、ポートの入出力スループットと共有メモリのポート当たりの入出力スループットを一致させるもしくはその比を整数倍にする必要がある。
しかしながら、多ポートスイッチにおいて、ポートの入出力スループットと共有メモリのポート当たりの入出力スループットを一致もしくはその比を整数倍にすることは、スイッチの構成変更を大きく制限することになる。例えばスイッチのポート数を増すと、それに応じてスイッチのポートの入出力スループットが増加する。共有メモリの格納効率を保つためには、変化したポートの入出力スループットの整数倍まで共有メモリのポート当たりの入出力スループットを増加させなければならない。そのため多ポートスイッチにおいて、ポートの入出力スループットと共有メモリのポート当たりの入出力スループットを一致もしくはその比を整数倍にせずに、メモリの格納効率を落とさず、なおかつレイテンシを短縮することが望まれる。
パケット交換を行うスイッチにおいて、共有メモリを使用する技術に関連する公知文献として以下のものがある。
特開2004−240980号公報
本発明に係るスイッチは、メモリの格納効率を落とすことなくレイテンシを短縮して高速に伝送可能とすることを目的とする。
本発明に係る共有メモリシステムの一側面によれば、複数のデータを並行して共有メモリに格納可能な共有メモリシステムにおいて、複数のメモリバンクを含む共有メモリと、該共有メモリを共有し、該複数のデータをそれぞれ受信する複数のポートと、該複数のポートから転送される複数のデータを保持する複数のバッファと、該複数のポートのそれぞれから転送される複数のデータを所定サイズの複数ワードに分割して所定ワード数のブロック単位で前記バッファに格納し、前記所定ワード数の前記ブロック内に格納された複数ワードのデータをワード単位で前記複数のメモリバンクに順次割り振って格納する制御部を備え、前記制御部は、前記複数のポートから入力したデータを前記複数のバッファに格納する際に、該ポートから該バッファへのデータ転送速度と該バッファから該共有メモリへのデータ転送速度の差に相当するワード数を求めてギャップ情報とし、該ポートからのデータを第1のブロックに所定ワード数分格納した後、該ポートからの次のデータの第2のブロックへの格納ワード位置を、前記ギャップ情報が示すワード数分スキップすることを特徴とする。
本発明に係るスイッチは、ポートとメモリそれぞれのデータ転送速度の差に応じて、メモリにおけるデータ格納位置を調整することによって、メモリの格納効率を落とすことなくレイテンシを短縮して高速に伝送可能とすることができる。
[1.スイッチ100の概要]
本実施例では、スイッチ100におけるパケットデータのメモリへの格納を例にとり、共有メモリシステムについて説明する。
本実施例に係るスイッチ100は、ネットワーク間の接続を行う装置であり、ネットワーク間で通信されるパケットを中継する装置である。より具体的には、スイッチ100は、イーサネット(登録商標)スイッチ、PCI−expressスイッチ、ファイバチャネルスイッチ、SATA/SASスイッチ、USBスイッチなどである。スイッチ100は、特にネットワークをつなぐ大量のデータの中継処理を要求されるコアスイッチとして活用すると有効なスイッチである。
スイッチ100は入力ポート101〜106、出力ポート120〜125の複数の入出力ポートを有し、複数の情報処理装置(パーソナルコンピュータ、サーバなど)を接続可能な構成となっている。スイッチ100は入力ポート101〜106、出力ポート120〜125が共有する共有メモリ113を有している。
またスイッチ100は、共有メモリ113を有効に活用し、かつデータ転送を高速に行うことを目的とするスイッチである。スイッチ100は、入力ポート101〜106、出力ポート120〜125の入出力スループットと共有メモリ113のポート当たりの入出力スループットを一致、若しくはそれらの比を整数倍にさせなくても、共有メモリ113の格納効率を向上し、かつデータ転送を高速に行うことを実現とするスイッチである。スループットは単位時間あたりの処理能力のことである。具体的にはたとえばスイッチ100の入力ポート101〜106、出力ポート120〜125、共有メモリ113単位時間あたりの実効転送量、パケットデータの転送速度である。
以下、スイッチ100の具体的な動作を説明する。
[2.スイッチ100]
図1は本実施例に係るスイッチ100の構成図である。スイッチ100は、入力ポート101〜106、入力バッファ107〜112、共有メモリ113、出力バッファ114〜119、出力ポート120〜125、TAGメモリ126、制御部127を有している。また図3はスイッチ100の共有メモリの詳細を示す構成図である。そして図3に示すように共有メモリ113はスイッチングユニット301、302、メモリバンク303〜308を有している。なお図3において制御機構128(TAGメモリ126、制御部127)と入力ポート101〜106、出力ポート120〜125との接続関係は簡略化して記載している。制御機構128と入力ポート101〜106、出力ポート120〜125との接続関係は図1に示す接続関係となっている。
スイッチ100は、接続される情報処理装置より入力ポート101〜106に入力されるパケットデータを、入力バッファ107〜112を介して、共有メモリ113に格納する。スイッチ100は、共有メモリ113に格納したパケットデータを読み出し、出力バッファ114〜119を介して出力ポート120〜125から接続される情報処理装置に送信する。
スイッチ100は、共有メモリ113にパケットデータの一部を格納した後に、共有メモリ113からそのパケットデータの一部を読み出して所望の情報処理装置へパケットデータを転送するカット・スルー方式で中継を行う。なおスイッチ100は、いわゆるストア・アンド・フォワード方式でパケットデータ全体を共有メモリ113に格納してから所望の情報処理装置へ転送する必要はない。またスイッチ100はインターリービング方式を用いて搭載する共有メモリ113にパケットデータを格納し、レイテンシの軽減を図っている。ここでカット・スルー(cutthrough)とは、パケットデータの末尾を共有メモリ113へ格納する前に、該パケットの中継を開始する方式である。ストア・アンド・フォワード(Store&Forward)とは、パケットデータ全体の蓄積交換である。つまりスイッチ100が、送信側情報処理装置から受信したパケットデータ全体を一度共有メモリ113にストアし、そのパケットデータのCRCエラー、衝突パケットのフィルタリングなどを行った後、パケットデータを出力ポート120〜125から受信側情報処理装置へ転送する方式である。またインターリービング方式とはメモリのデータ転送を高速化する技術の一つである。インターリービング方式は、複数のメモリバンクに並行でデータの読み書きを行なう手法であり、これによりメモリへのデータ読み書きを高速化することができる。
本実施例では、図3に示すように共有メモリ113は複数のメモリバンク303〜308を有している。そして複数のメモリバンク303〜308にワード単位の連続したアドレスを振ってある。つまり連続したアドレスがメモリバンク303〜308に順次付されている。
以下、スイッチ100の各ユニットの動作について説明する。
[2.1.制御部127]
まず制御部127は、入力バッファ107〜112を介して、入力ポート101〜106に入力されるパケットデータを共有メモリ113に格納する制御を行う。また制御部127は、出力バッファ114〜119を介して、共有メモリ113からパケットデータを読み出して、出力ポート120〜125から受信側情報処理装置にパケットデータを転送する。制御部127は、メモリバンク303〜308を指定するアドレスと、メモリバンク303〜308内のアドレスを指定して共有メモリ113へパケットデータの書き込み、共有メモリ113からパケットデータの読み出しを行う。本実施例においてスイッチ100が取り扱うパケットデータは可変長である。つまりパケットデータのサイズは、一定の大きさではなく、情報処理装置が送受信するデータ量、データの種類に応じて異なるものである。
本実施例においてスイッチ100は、パケットをインターリービング方式により共有メモリ113に格納する。制御部127は、パケットデータを所定のサイズ(ワードサイズ)に分割する。そして制御部127は、入力バッファ107〜108を介して、分割したパケットデータを共有メモリ113に格納する。制御部127は、分割して共有メモリ113に格納したパケットデータを再構成し、出力バッファ114〜119を介して出力ポート120〜125から送出する。
また制御部127は、スイッチ100のフォワーディング、フィルタリングを制御する
ユニットであり、ネットワークのトラフィックを制御するユニットである。フォワーディングは、スイッチ100が入力ポート101〜106で受信したパケットデータを出力ポート120〜125からネットワーク(所望の情報処理装置)へ転送する処理のことである。フィルタリングは、スイッチ100が受信したパケットデータを所定のルールに従って廃棄する処理のことである。制御部127によるフォワーディング、フィルタリングの制御処理により、スイッチ100はネットワークにおけるトラフィックを制御する。
イーサネット(登録商標)スイッチとしての実施形態においては、制御部127はパケットデータのMACアドレスを元にパケットデータの送信先を判別する。具体的には制御部127は、受信パケットの送信元MACアドレスと受信ポートの対応を記録する。制御部127は、受信パケットの宛先MACアドレスに対応するポートからパケットデータを送信する。制御部127は、受信パケットの宛先MACアドレスに対応するポートが受信パケットを受信したポートであると判別する場合は、その受信パケットを破棄する。
さらに制御部127は、受信パケットの宛先MACアドレスに対応するポートが存在しないと判別する場合、あるいは受信パケットをマルチキャストやブロードキャストする場合には、受信パケットを受信したポート以外の全ポートからそのパケットを送信する。また制御部127は、スイッチ100の初期設定、スイッチ100のリセットも行い、スイッチ100全体を制御する機能を有している。
[2.2.入力バッファ107〜112、出力バッファ114〜119]
入力バッファ107〜112は、入力ポート101〜106のパケットデータの転送レート(入力バッファ107〜112への書き込み速度)と入力バッファ107〜112から共有メモリ113への書き込み速度を調整(緩和)するものである。入力バッファ107〜112は、制御部127が入力バッファ107〜112から共有メモリ113へ書き込むデータ単位(後述するブロック201〜206単位)でパケットデータを保持する。
出力バッファ114〜119は、出力バッファ114〜119から出力ポート120〜125への書き出し速度と共有メモリ113から出力バッファ114〜119への書き出し速度を調整(緩和)するものである。出力バッファ114〜119は、制御部127が出力バッファ114〜119から共有メモリ113から読み出すデータ単位(後述するブロック201〜206単位)でパケットデータを保持する。
[2.3.共有メモリ113]
次に共有メモリ113について説明する。共有メモリ113は、図3が共有メモリ113の具体的な構成を示した構成図である。本実施例に係る共有メモリ113は、スイッチングユニット301、302、メモリバンク303〜308から構成されている。
本実施例に係るスイッチ100は、インターリービング方式により、入力ポート(Input Port)で受信するデータを共有メモリに格納して、出力ポート(Output Port)からスイッチ100の外部にパケットを出力する。
スイッチングユニット301は、入力ポート101〜106から入力されるパケットデータをメモリバンク303〜308のいずれかに格納するか割り振るユニットである。本実施例において制御部127はインターリービング方式により共有メモリ113にパケットデータを格納するため、パケットデータを所定のサイズ(ワードサイズ)に分割する。そして制御部127は、入力ポート101〜106から入力バッファ107〜112へ分割したパケットデータを転送する。そしてスイッチングユニット301が分割したパケットデータをメモリバンク303〜308にワード単位で順次割り振って格納する。スイッチングユニット302は、メモリバンク303〜308に格納される分割したパケットデータを読み出して、出力バッファ114〜119へ転送する。そして制御部127は、入力ポート120〜125のうちパケットデータの転送先である情報処理装置へ送信するた
めの入力ポートからパケットデータを出力する。上記のとおりスイッチ100の制御部127は、スイッチングユニット301、302を制御してインターリービング方式でパケットデータをメモリバンク303〜308に書き込み、及びメモリバンク303〜308からパケットデータの読み出しを行う。
[2.4.TAGメモリ126]
TAGメモリ126は、ギャップ情報を格納するメモリである。本実施例に係るスイッチ100は、入力ポート101〜106、出力ポート120〜125の入出力スループットよりも共有メモリ113のポート当たりの入出力スループットが大きいスイッチである。そしてスイッチ100は、この入出力スループットの差によって生じるギャップに関する情報(ギャップ情報)をTAGメモリ126に格納する。
[3.データの格納態様]
次にスイッチ100が共有メモリ113にデータを格納する一態様について説明する。図2は本実施例に係るスイッチ100のパケットデータのアクセスに関する概念図である。また図4は本実施例に係るスイッチ100のスイッチスケジューリングを示す概念図である。図5は本実施例に係るスイッチのパケット転送を示す概念図である。図6は本実施例に係るスイッチ100のストリームデータのアクセスに関する概念図である。
[3.1.ギャップ情報の管理]
図2は、入力ポート101〜106、出力ポート120〜125の入出力スループットと共有メモリ113のポート当たりの入出力スループットが一致する場合であって、共有メモリ113内にギャップが生じない場合のパケットデータの格納を示す概念図である。図2は共有メモリ113を構成する6つのメモリバンク303〜308の論理構造を示す図である。なお入力ポート101〜106、出力ポート120〜125の入出力スループットと共有メモリ113のポート当たりの入出力スループットが一致しない場合、つまり共有メモリ113内にギャップが生じる場合については、図6を用いて後述する。
メモリバンク303〜308は、論理的にブロック201〜206に分割される。そして各ブロック201〜206は、ワード207〜212から構成される。各ワード207〜212は、それぞれメモリバンク303〜308におけるデータ格納領域である。換言すれば各ブロック201〜206は、物理的に分離した各メモリバンク303〜308の一部であるデータ格納領域から構成されている。そしてブロック201〜206それぞれにおいて、メモリアドレスは連続している。つまり連続したメモリアドレスが各メモリバンク303〜308をまたいで割り振られている。
ここでは説明を簡便にするため、スイッチ100が1つのパケットデータをメモリバンク303〜308に格納する態様を説明する。もちろんスイッチ100は多ポートスイッチであり、入力ポート101〜106から同時刻に入力される複数のパケットデータを転送処理可能なスイッチである。
制御部127は、入力ポート101〜106から入力されるパケットデータをワードサイズ(ワード207〜212のサイズ)に分割する。制御部127は、14個のワードサイズの分割したパケットデータを生成する。そして制御部127は、ワードサイズに分割した14個の分割データを順次メモリバンク303〜308に格納していく。図2に記載のブロック(行)とワード(列)で表されるマトリックス内に記載の番号「0」〜「13」は、制御部127が分割した14個の分割データを共有メモリ113内に格納していく順番を表している。また制御部127は、分割データそれぞれを該マトリックス内に記載の番号「0」〜「10」の位置(領域)に格納する。
例えば制御部127はブロック201のワード210から分割データ(「0」で示す分割データ)の格納を開始して、ブロック201を構成するすべてワード207〜212にデータを格納し終わったら(「5」で示す分割データを格納し終わると)、ブロック20
3のワード210に分割データを格納し、順次にブロック203のワード211、212、207、208、209と格納していく(「6」、「7」、・・・「11」と分割データを格納していく)。さらに制御部127はブロック204のワード210、211に分割データを格納し、パケットデータの格納処理を終了する(「12」、「13」と分割データを格納してパケットデータの格納処理を終了する)。
また図4は本実施例に係るスイッチ100のスイッチスケジューリングを示す概念図である。
図4に示す模式図では、B0はメモリバンク303へのアクセス、B1はメモリバンク304へのアクセス、B2はメモリバンク305へのアクセス、B3はメモリバンク306へのアクセス、B4はメモリバンク307へのアクセス、B5はメモリバンク308へのアクセスを表しており、入力ポート101から入力される分割データは周期的にメモリバンク303、304、・・・、メモリバンク308の順に書き込まれることを示している。また図4は、出力ポート120から出力される分割データも周期的にメモリバンク303、304、・・・、メモリバンク308の順に読み出されることを示している。
同様にして図4は、入力ポート101から入力される分割データがメモリバンク303に書き込まれるタイミングで入力ポート102から入力される分割データはメモリバンク308に書き込まれ、続いてメモリバンク303、304、・・・、メモリバンク307の順に周期的に書き込まれることを示している。また図4は、出力ポート120から出力される分割データがメモリバンク303から読み出されるタイミングで出力ポート121から出力される分割データもメモリバンク308から読み出され、続いてメモリバンク303、304、・・・、メモリバンク307の順に読み出されることを示している。また図4は入力ポート101から入力される分割データがメモリバンク303に書き込まれるタイミングで入力ポート103から入力される分割データはメモリバンク307に書き込まれ、続いてメモリバンク308、303、・・・、メモリバンク306の順に周期的に書き込まれることを示している。
また図4は、出力ポート120から出力される分割データがメモリバンク303から読み出されるタイミングで出力ポート122から出力される分割データもメモリバンク307から読み出され、続いてメモリバンク308、303、・・・、メモリバンク306の順に読み出されることを示している。また図4は入力ポート101から入力される分割データがメモリバンク303に書き込まれるタイミングで入力ポート104から入力される分割データはメモリバンク306に書き込まれ、続いてメモリバンク307、308、・・・、メモリバンク305の順に周期的に書き込まれることを示している。
また図4は、出力ポート120から出力される分割データがメモリバンク303から読み出されるタイミングで出力ポート123から出力される分割データもメモリバンク306から読み出され、続いてメモリバンク307、308、・・・、メモリバンク305の順に読み出されることを示している。また図4は入力ポート101から入力される分割データがメモリバンク303に書き込まれるタイミングで入力ポート105から入力される分割データはメモリバンク305に書き込まれ、続いてメモリバンク306、307、・・・、メモリバンク304の順に周期的に書き込まれることを示している。
また図4は、出力ポート120から出力される分割データがメモリバンク303から読み出されるタイミングで出力ポート124から出力される分割データもメモリバンク305から読み出され、続いてメモリバンク306、307、・・・、メモリバンク304の順に読み出されることを示している。また図4は入力ポート101から入力される分割データがメモリバンク303に書き込まれるタイミングで入力ポート106から入力される
分割データはメモリバンク304に書き込まれ、続いてメモリバンク305、306、・・・、メモリバンク303の順に周期的に書き込まれることを示している。また図4は、出力ポート120から出力される分割データがメモリバンク303から読み出されるタイミングで出力ポート125から出力される分割データもメモリバンク304から読み出され、続いてメモリバンク305、306、・・・、メモリバンク303の順に読み出されることを示している。
例えば図4に示すように、制御部127が入力ポート101からメモリバンク304、305、306、307、308、303、304、305の順に分割データを格納していく。そして制御部127は、入力ポート101からメモリバンク307に分割データを格納するタイミングで、メモリバンク304から分割データを読み出して出力ポート123から出力する。また制御部127は、入力ポート101からメモリバンク304に分割データを格納するタイミングで、メモリバンク308から分割データを読み出して出力ポート122から出力する。
図5は本実施例に係るスイッチ100のパケット転送を示す概念図である。図5ではスイッチ100のスイッチコア部分のパケットデータの書き込み/読み出し処理速度(スループット)が入出力ポート部分でのパケットデータの転送処理速度よりも速い場合について説明する。スイッチコア部分は、入力バッファ107、共有メモリ113、出力バッファ114から構成される。そして図5は、パケットデータ501が8B(バイト)×156.25MHzで入力ポート101より入力され、出力ポート120から8B(バイト)×156.25MHzでパケットデータ504として出力される過程を示した図である。
図5に示すようにパケットデータ501は、入力ポート101より入力されるスループット(8B(バイト)×156.25MHz)よりも速いスループット(4B(バイト)×312.5×Speed−upMHz)で入力バッファ107がパケットデータを格納する。「Speed−up」は入出力ポートの入出力バッファへの読み出し/書き出し速
度に対する入出力バッファの共有メモリ113への読み出し/書き出し速度の高速化した比率を示すものあり、tp(m)/tp(p)と表せる。tp(m)は、入出力バッファの共有メモリ113への読み出し/書き出し速度である。tp(p)は、入出力ポートの入出力バッファへの読み出し/書き出し速度である。そのためインプットバッファ107への入力はギャップを含んだパケットデータとして扱われなければならない。そのことを模式的にパケット502で示している。共有メモリ113を論理的に構成するブロック単位で入力バッファ107から共有メモリ113に格納し、また該ブロック単位で共有メモリ113から出力バッファ114に書き込む。パケットデータ503は、入力バッファ107、出力バッファ114と共有メモリ113との間において制御部127がギャップを含まないブロック単位のパケットデータを転送することを模式的に示した図である。すなわち、ギャップはブロック間にのみ存在することを表す。そして制御部127が出力バッファよりスループット(8B(バイト)×156.25MHz)のスループットでギャップなしのパケットデータ504を出力する。
図6は本実施例に係る共有メモリ113にギャップが生じる場合のパケットデータの格納に関する概念図である。そして図6は共有メモリ113を構成する6つのメモリバンク303〜308の論理構造を示す図である。
図2において説明したように、共有メモリ113のメモリバンク303〜308は、論理的にブロック201〜206に分割される。そして各ブロック201〜206は、ワード207〜212から構成される。各ワード207〜212は、それぞれメモリバンク303〜308におけるデータ格納領域である。換言すれば各ブロック201〜206は、物理的に分離した各メモリバンク303〜308の一部であるデータ格納領域から構成さ
れている。そして連続したメモリアドレスが各メモリバンク303〜308をまたいで割り振られている。
図6においても図2と同様に、スイッチ100が入力ポート101から入力される1つのパケットデータをメモリバンク303〜308に格納する態様を説明する。
制御部127は、入力ポート101から入力されるパケットデータをワードサイズ(ワード207〜212のサイズ)に分割する。制御部127は、10個のワードサイズの分割データを生成する。そして制御部127は、ワードサイズに分割した11個の分割データを順次メモリバンク303〜308に格納していく。図6に記載のブロック(行)とワード(列)で表されるマトリックス内に記載の番号「0」〜「10」は、制御部127が分割した11個の分割データを共有メモリ113内に格納していく順番を表している。また制御部127は、分割データそれぞれを該マトリックス内に記載の番号「0」〜「10」の位置(領域)に格納する。
例えば制御部127はブロック201のワード210から分割データの格納を開始して、ブロック201を構成するすべてワード207〜212にデータを格納し終わるまでワード211、212、207、・・・の順に分割データを格納していく。制御部127がブロック201のワード209に分割データを格納し、ブロック201のワード207〜212のすべてに分割データを格納し終わると(「5」で示す分割データを格納し終わると)、TAGメモリ126に格納されているギャップ情報を参照して、ブロック203においてワード212からワード207、208、・・・と(「6」、「7」、・・・と)順に分割データを格納していく。本実施例のギャップ情報は、例えば「+2」でワード212から分割データの格納を続けることを示す情報である。このことを換言すれば、制御部127は、一旦ワード210、211に対応するメモリバンクにおいては格納処理していたパケットデータの格納を一旦中止し、他のパケットデータを格納する処理などを行う。そして制御部127がワード212から再び順に分割データを格納開始する。
そして制御部127はブロック203のワード210に分割データ(「10」と示す分割データ)を格納し、パケットデータの格納処理を終了する。
本実施例では、制御部127は、入力ポート101から入力されるパケットデータを入力バッファ107でブロックサイズ分保持した後、メモリバンク303〜308にブロックサイズ単位で格納している。これは制御部127が1つのブロックに分割データを書き込んでいる間にギャップが発生するのを防ぐためである。
上述するようにTAGメモリ126は、ギャップ情報を格納する記憶ユニットである。またスイッチ100は、共有メモリ113内に存在する空き領域を利用し、その空き領域にギャップ情報を格納し、パケットデータに付随させてギャップ情報を格納する構成でもよい。これは、共有メモリ113内の語長をパケットデータをアクセスするときの語長より大きくすることで、容易に実現できる。またギャップ情報は、予め定められた値でもよく、また動的にパケットデータを共有メモリ113に格納し各ブロックをまたぐ毎に制御部127が決定してTAGメモリ126などに保持していく構成でもよい。
[4.ギャップ情報の管理に関するフローチャート]
図7は本実施例に係るパケットデータ格納時におけるギャップ管理に関するフローチャートである。
スイッチ100の制御部127は共有メモリ113のブロックサイズに(1−tp(p)/tp(m))を乗算(ブロックサイズ×(1−tp(p)/tp(m))し、最小格納サイズを算出する(ステップS701)。tp(m)は、入出力バッファの共有メモリ
113への読み出し/書き出し速度である。tp(p)は、入出力ポートの入出力バッファへの読み出し/書き出し速度である。最小格納サイズは、入出力ポートの入出力バッファへの読み出し/書き出し速度と入出力バッファの共有メモリ113への読み出し/書き出し速度との速度差を吸収するためのバッファ蓄積量に相当する格納容量である。そのためスイッチ100は、入力バッファに保持するパケットデータのサイズが最小格納サイズよりも大きい場合には、共有メモリ113内でブロック内にギャップを発生させることなく、1ブロック分のデータを共有メモリ内に書きこむことができる。
制御部127は、共有メモリ113内にギャップが発生するか否かを判別するため、制御部127は、格納するパケットデータが最小格納サイズよりも大きいか否かを判別する(ステップS702)。制御部127が格納するパケットデータが最小格納サイズ以下と判別する場合(ステップS702 NO)、再び制御部127は、格納するパケットデータが最小格納サイズよりも大きいか否かを判別する。外部からのデータが入力バッファに到着することにより、このステップS702は有限回で終了する。本実施例では、パケットデータの最小サイズは、最小格納サイズより大きいことを想定している。たとえば、イーサネット(登録商標)での実施例においては、パケットデータの最小サイズは64バイトである。パケットデータの最小サイズが、最小格納サイズに等しいか、または小さい実施例においては、ステップS702において、パケットデータの末尾を受信済みである場合に、ステップS702 YESを選択することができる。kの判断により、パケットデータ内に断片的なギャップが入ることはない。
制御部127が格納するパケットデータが最小格納サイズよりも大きいと判別する場合(ステップS702 YES)、制御部127は、共有メモリ113内に発生するギャップの容量(ワードサイズのいくつ分かの容量)を算出する(ステップS703)。ギャップ容量は最小格納サイズより大きい容量であって、最小格納サイズに最も近いワードサイズのいくつ分かの容量を特定し算出する。つまり制御部127は、最小格納サイズにα量加算して、ワードサイズのいくつ分かの容量に合う値をギャップ容量(ギャップ情報)として算出する。
そして制御部127は、格納するパケットデータの最後であるか否かを判別する(ステップS704)。つまり制御部127は、共有メモリ113に格納する分割データがパケットデータを構成するうちで最終位置の分割データであるか否かを判別する。制御部127がパケットデータを構成する分割データのうち最後の分割データであると判別する場合(ステップS704 YES)、制御部127はパケットデータの格納処理を終了する。制御部127がパケットデータを構成する分割データのうち最後の分割データでないと判別する場合(ステップS704 NO)、制御部127は、算出したギャップ情報をTAGメモリ126に記憶したか否かを判別する(ステップS705)。
制御部127が、ギャップ情報をTAGメモリ126に記憶していないと判別する場合(ステップS705 NO)、制御部127はギャップ情報をTAGメモリ126に記憶する(ステップS706)。制御部127が、ギャップ情報をTAGメモリ126に記憶していると判別した場合(ステップS705 YES)、制御部127は共有メモリ113を論理的に構成するブロックの最後であるか否かを判別する(ステップS707)。
制御部127が、共有メモリ113における分割データの格納位置がブロックの最後でないと判別した場合(ステップS707 NO)、制御部127はその分割データがパケットデータの最後であるか否かを判別する(ステップS704)。制御部127が、共有メモリ113における分割データの格納位置がブロックの最後であると判別した場合(ステップS707 YES)、制御部127はギャップ情報を参照して、ギャップ情報が示すスキップすべきワード数だけスキップして、制御部127は共有メモリ113内の新た
なブロックに分割データを格納する(ステップS708)。
図8は本実施例に係るデータ読み出し時におけるギャップの管理に関するフローチャートである。
スイッチ100がパケットデータを転送するにあたり、制御部127は共有メモリ113からパケットデータを読み出す。制御部127は、読み出した分割データが読み出し対象であるパケットデータの最後の分割データであるか否かを判別する(ステップS801)。
制御部127が、読み出したパケットデータが読み出し対象であるパケットデータの最後の分割データであると判別する場合(ステップS801 YES)、制御部127はパケットデータの読み出し処理を終了する。制御部127が読み出したパケットデータが読み出し対象であるパケットデータの最後の分割データでないと判別する場合(ステップS801 NO)、制御部127はTAGメモリ126が保持するギャップ情報を参照するか否かを判別する(ステップS802)。
制御部127がTAGメモリ126のギャップ情報を参照すると判別する場合(ステップS802 YES)、制御部127は読み出す分割データが格納されたブロックに関するギャップ情報をTAGメモリ126から参照し(ステップS803)、読み出した分割データがブロックの最後か否かを判別する(ステップS804)。制御部127がTAGメモリ126のギャップ情報を参照しないと判別すると(ステップS802 NO)、TAGメモリ126からギャップ情報を参照せずに読み出した分割データがブロックの最後か否かを判別する(ステップS804)。
制御部127が読み出した分割データがブロックの最後でないと判別した場合(ステップS804 NO)、制御部127は再び読み出した分割データが読み出し対象であるパケットデータの最後の分割データであるか否かを判別する(ステップS801)。制御部127が読み出した分割データがブロックの最後であると判別した場合(ステップS804 YES)、制御部127はギャップ情報が示すスキップすべきワード数だけスキップして、制御部127は共有メモリ113内の新たなブロックから分割データを読み出す。ここで制御部127がTAGメモリ126からギャップ情報を参照しない場合には分割データに付随するギャップ情報を参照してスキップすべきワード数の情報を取得する。
本実施例に係るスイッチ100は、カット・スルー方式により、パケットデータの転送を行う構成である。しかしながらカット・スルー方式に限定されるものではなく、スイッチ100は他のデータ転送方式としてストア・アンド・フォワード方式でパケットデータを転送してもよい。カットスルーは送信側から受信側ポートにデータ・パケットを即座に送る、つまりパケットのなかに埋め込まれた送り先アドレスを確認した時点で、受信側ポートへの送信を開始する方式であり、CRCを含むパケットデータのエラーチェックの結果に基づいた廃棄の判断は行わない方式である。さらにスイッチ100はモディファイド・カットスルー方式によりパケットデータ転送を行ってもよい。モディファイド・カットスルー方式は、データ・パケットの最初の64バイトを受けた時点で受信側ポートへの送信を開始する方式である。モディファイド・カットスルー方式は、パケットの欠落、衝突までのチェックが可能なパケットデータ転送方式である。
またスイッチ100は、パケット内ギャップの情報を先行するパケットデータに付随して保持することにより、共有メモリ113の格納効率を低減することなく、ポートとメモリの速度差を柔軟に管理できる。換言すれば、スイッチ100は、ポートの入出力速度とメモリの書き出し/読み出し速度に寄る共有メモリ113内に発生する空き領域の情報を
ブロック単位で保持することにより、メモリの格納効率を落とすことなくレイテンシを短縮して高速に伝送可能とすることができる。イーサネット(登録商標)により送受信するパケットデータを格納する共有メモリ上で、ギャップ情報を記憶するだけの十分な空き領域を設けるのは容易である。ある実施例では、共有メモリの語長をパケット書き込み時の語長より大きくし、その差分によって生じる記憶領域にギャップ情報を格納する。また、ある実施例では、ブロック内の1語を用いてギャップ情報を格納する。スイッチ100は
その空領域を活用してギャップ情報をパケットデータに付随して管理することができる。
さらにスイッチ100は、ポートの入出力速度とメモリの書き出し/読み出し速度を一致またはその整数倍比に増加させる必要がないため、フレキシブルにポート増設などの設計変更が可能となる。つまり例えばスイッチの入出力ポートを増設することに起因して、メモリのポートあたりのスループットを増加させる場合、ポート増設分だけメモリの読みだしスループット格納効率を落とすことなく増加させることができる。
またスイッチ100は、新たなハードウェアを何ら設けることなく、上記に記載のパケットデータの転送処理を実現することができる。また入出力バッファに確保するのに必要な容量は、最小格納サイズ(ブロックサイズ×(1−tp(p)/tp(m))でよく、スイッチ100はカット・スルー方式を採用してレンテインシの短いデータ伝送を実現することができる。
本実施例に係るスイッチ100の構成図である。 本実施例に係るスイッチ100のストリームデータのアクセスに関する概念図である。 本実施例に係るスイッチ100のより具体的な構成図である。 本実施例に係るスイッチ100のスイッチスケジューリングを示す概念図である。 本実施例に係るスイッチのパケット転送を示す概念図である。 本実施例に係るスイッチ100のストリームデータのアクセスに関する概念図である。 本実施例に係るデータ格納時におけるギャップの管理に関するフローチャートである。 本実施例に係るデータ読み出し時におけるギャップの管理に関するフローチャートである。
符号の説明
100…スイッチ
101…入力ポート
102…入力ポート
103…入力ポート
104…入力ポート
105…入力ポート
106…入力ポート
107…入力バッファ
108…入力バッファ
109…入力バッファ
110…入力バッファ
111…入力バッファ
112…入力バッファ
113…共有メモリ
114…出力バッファ
115…出力バッファ
116…出力バッファ
117…出力バッファ
118…出力バッファ
119…出力バッファ
120…出力ポート
121…出力ポート
122…出力ポート
123…出力ポート
124…出力ポート
125…出力ポート
126…TAGメモリ
127…制御部
301…スイッチングユニット
302…スイッチングユニット
303…メモリバンク
304…メモリバンク
305…メモリバンク
306…メモリバンク
307…メモリバンク
308…メモリバンク

Claims (4)

  1. 複数のデータを並行して共有メモリに格納可能な共有メモリシステムにおいて、
    複数のメモリバンクを含む共有メモリと、
    該共有メモリを共有し、該複数のデータをそれぞれ受信する複数のポートと、
    該複数のポートから転送される複数のデータを保持する複数のバッファと、
    該複数のポートのそれぞれから転送される複数のデータを所定サイズの複数ワードに分割して所定ワード数のブロック単位で前記バッファに格納し、前記所定ワード数の前記ブロック内に格納された複数ワードのデータをワード単位で前記複数のメモリバンクに順次割り振って格納する制御部を備え、
    前記制御部は、前記複数のポートから入力したデータを前記複数のバッファに格納する際に、該ポートから該バッファへのデータ転送速度と該バッファから該共有メモリへのデータ転送速度の差に相当するワード数を求めてギャップ情報とし該ポートからのデータを第1のブロックに所定ワード数分格納した後、該ポートからの次のデータの第2のブロックへの格納ワード位置を、前記ギャップ情報が示すワード数分スキップする
    ことを特徴とする共有メモリシステム。
  2. 請求項1に記載の共有メモリシステムはさらに、
    該共有メモリから転送される該所定ワード数のブロック単位の複数のデータを保持する複数の他のバッファを有し、
    他のバッファに該共有メモリからデータを転送する際にデータを所定ワード数のブロック単位で分割し転送を前記ギャップ情報が示すワード数分スキップし、該複数のブロックごとに該他のバッファにデータを転送することを特徴とする共有メモリシステム。
  3. 請求項2に記載の共有メモリシステムにおいて、
    前記ギャップ情報を保持する記憶部をさらに有することを特徴とする共有メモリシステム。
  4. 請求項2に記載の共有メモリシステムにおいて、
    前記ギャップ情報を先行するデータに付随して格納することを特徴とする共有メモリシステム。
JP2008233949A 2008-09-11 2008-09-11 共有メモリシステム Active JP5332430B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008233949A JP5332430B2 (ja) 2008-09-11 2008-09-11 共有メモリシステム
US12/556,164 US8116306B2 (en) 2008-09-11 2009-09-09 Shared memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008233949A JP5332430B2 (ja) 2008-09-11 2008-09-11 共有メモリシステム

Publications (2)

Publication Number Publication Date
JP2010067091A JP2010067091A (ja) 2010-03-25
JP5332430B2 true JP5332430B2 (ja) 2013-11-06

Family

ID=41799235

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008233949A Active JP5332430B2 (ja) 2008-09-11 2008-09-11 共有メモリシステム

Country Status (2)

Country Link
US (1) US8116306B2 (ja)
JP (1) JP5332430B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2980607C (en) 2004-10-12 2020-04-07 Tq Delta, Llc Resource sharing in a telecommunications environment
EP2005674B1 (en) 2006-04-12 2016-09-28 TQ Delta, LLC Packet retransmission and memory sharing
US9063841B1 (en) * 2011-08-01 2015-06-23 Marvell Israel (M.L.S.L.) Ltd. External memory management in a network device
AU2014401914B2 (en) 2014-08-13 2017-05-25 Huawei Technologies Co., Ltd. Storage system, method, and apparatus for processing operation request
US11481158B2 (en) * 2018-12-05 2022-10-25 International Business Machines Corporation Enabling compression based on queue occupancy
US11343207B1 (en) * 2020-05-11 2022-05-24 Amazon Technologies, Inc. Configuring of a shared memory buffer in a network device

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5732041A (en) * 1993-08-19 1998-03-24 Mmc Networks, Inc. Memory interface unit, shared memory switch system and associated method
US6493347B2 (en) * 1996-12-16 2002-12-10 Juniper Networks, Inc. Memory organization in a switching device
US6745277B1 (en) * 2000-10-04 2004-06-01 Force10 Networks, Inc. Intelligent interleaving scheme for multibank memory
US7248596B2 (en) * 2003-02-07 2007-07-24 Fujitsu Limited Memory interleaving in a high-speed switching environment
US7242684B2 (en) * 2003-02-07 2007-07-10 Fujitsu Limited Architecture for switching packets in a high-speed switching environment
DE602004021371D1 (de) * 2003-04-22 2009-07-16 Agere Systems Inc Verfahren und vorrichtung für einen gemeinsam benutzten mehrbankspeicher
US7634622B1 (en) * 2005-06-14 2009-12-15 Consentry Networks, Inc. Packet processor that generates packet-start offsets to immediately store incoming streamed packets using parallel, staggered round-robin arbitration to interleaved banks of memory

Also Published As

Publication number Publication date
US20100061376A1 (en) 2010-03-11
US8116306B2 (en) 2012-02-14
JP2010067091A (ja) 2010-03-25

Similar Documents

Publication Publication Date Title
US9608940B2 (en) Ultra low latency network buffer storage
US6795886B1 (en) Interconnect switch method and apparatus
US6757791B1 (en) Method and apparatus for reordering packet data units in storage queues for reading and writing memory
JP5332430B2 (ja) 共有メモリシステム
JP6899852B2 (ja) ストレージ装置
US20060031643A1 (en) Implementing FIFOs in shared memory using linked lists and interleaved linked lists
US11799799B2 (en) Use of stashing buffers to improve the efficiency of crossbar switches
US7904677B2 (en) Memory control device
US7627672B2 (en) Network packet storage method and network packet transmitting apparatus using the same
JP2005287038A (ja) Ddrsdramを用いた小型パケット交換ノード記憶装置およびメモリへのアクセス方法
US7991926B1 (en) Scalable memory architecture for high speed crossbars using variable cell or packet length
US9838500B1 (en) Network device and method for packet processing
US20170153852A1 (en) Multi-port memory controller capable of serving multiple access requests by accessing different memory banks of multi-bank packet buffer and associated packet storage design
US9063841B1 (en) External memory management in a network device
EP2524295B1 (en) Memory management using packet segmenting and forwarding
KR102524566B1 (ko) 언더런을 방지하기 위한 패킷 메모리 시스템, 방법, 및 디바이스
CN104486442A (zh) 分布式存储***的数据传输方法、装置
JP2008541276A (ja) 同時読み出し応答確認拡張ダイレクト・メモリ・アクセス・ユニット
US7756131B2 (en) Packet forwarding system capable of transferring packets fast through interfaces by reading out information beforehand for packet forwarding and method thereof
US8923315B2 (en) Packet router having a hierarchical buffer structure
US6647477B2 (en) Transporting data transmission units of different sizes using segments of fixed sizes
US20080273531A1 (en) Data switch and a method of switching
JP6206497B2 (ja) データ転送装置およびデータ転送方法
JP5691419B2 (ja) 要求転送装置及び要求転送方法
JP2005252953A (ja) クロスバスイッチ及びネットワーク転送装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110613

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130313

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130409

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130607

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130715

R150 Certificate of patent or registration of utility model

Ref document number: 5332430

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150