JP3775597B2 - データ配列の方法およびその装置 - Google Patents

データ配列の方法およびその装置 Download PDF

Info

Publication number
JP3775597B2
JP3775597B2 JP2002560316A JP2002560316A JP3775597B2 JP 3775597 B2 JP3775597 B2 JP 3775597B2 JP 2002560316 A JP2002560316 A JP 2002560316A JP 2002560316 A JP2002560316 A JP 2002560316A JP 3775597 B2 JP3775597 B2 JP 3775597B2
Authority
JP
Japan
Prior art keywords
unit
data
buffer storage
input
storage unit
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.)
Expired - Lifetime
Application number
JP2002560316A
Other languages
English (en)
Other versions
JP2005504449A (ja
Inventor
バードワジ,サンジェイ
Original Assignee
インフィネオン テクノロジーズ ノース アメリカ コーポレイション
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
Priority claimed from US09/771,173 external-priority patent/US6813734B1/en
Priority claimed from US09/771,172 external-priority patent/US6965606B2/en
Application filed by インフィネオン テクノロジーズ ノース アメリカ コーポレイション filed Critical インフィネオン テクノロジーズ ノース アメリカ コーポレイション
Publication of JP2005504449A publication Critical patent/JP2005504449A/ja
Application granted granted Critical
Publication of JP3775597B2 publication Critical patent/JP3775597B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9084Reactions to storage capacity overflow
    • H04L49/9089Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
    • H04L49/9094Arrangements for simultaneous transmit and receive, e.g. simultaneous reading/writing from/to the storage element
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/04Distributors combined with modulators or demodulators
    • H04J3/047Distributors with transistors or integrated circuits
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/06Synchronising arrangements
    • H04J3/0602Systems characterised by the synchronising information used
    • H04J3/0605Special codes used as synchronising signal
    • H04J3/0608Detectors therefor, e.g. correlators, state machines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/06Synchronising arrangements
    • H04J3/062Synchronisation of signals having the same nominal but fluctuating bit rates, e.g. using buffers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/16Time-division multiplex systems in which the time allocation to individual channels within a transmission cycle is variable, e.g. to accommodate varying complexity of signals, to vary number of channels transmitted
    • H04J3/1605Fixed allocated frame structures
    • H04J3/1611Synchronous digital hierarchy [SDH] or SONET
    • H04J3/1617Synchronous digital hierarchy [SDH] or SONET carrying packets or ATM cells
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Time-Division Multiplex Systems (AREA)
  • Detection And Correction Of Errors (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Description

本発明は、ネットワークシステムの分野に関するものであり、特に、ネットワークシステムにおいて使用されるデータ配列部(data aligners)に関するものである。
(背景)
インターネットは、コンピュータシステムの集合として、簡易化して示すことができる。なお、このコンピュータシステムは、ネットワーク(例えば、伝送線、スイッチ、および、ルータ)により相互接続されており、コンピュータシステム間でデータを伝送可能とする。また、このデータは、一般的に、ネットワーク内を、データ経路に沿って、データパケットの形状で伝送されるものである。このデータ経路の重要な特徴としては、ビット幅が挙げられる。このビット幅とは、データ経路において、同時に操作または送信されるビットの数である。また、データ経路のビット幅は、クロック速度に応じて、その帯域幅を決定する。なお帯域幅とは、どのくらの速度でデータ経路をデータが流れるかということに関する指標である。デジタルシステムにおいて、帯域幅は、データ速度として、1秒あたりのビット数(bps)で表される。
かつて、データは、帯域幅性能の制限された銅線伝送線を用いる、従来の普通の電話システム(Plain-Old Telephone System(POTS))、または、公衆交換電話網(Public Switched Telephone Network(PSTN))によってのみ搬送されていた。その後、高帯域幅伝送線を用いた、他の種類のネットワークが開発された。このネットワークとは、所定の時間により多くのデータ量を伝送できる(高bps)、例えば、総合デジタル通信網(Integrated Services Digital Network(ISDN))などである。ISDNは、狭周波数帯加入回線における一般的なPSTNの銅線に対して、デジタル伝送を提供する。
ところで、インターネットにおけるデータの交通量が、爆発的に増加し、倍増した場合、より高い帯域幅が必要とされる。そこで、この帯域幅を増大させる必要性を満たすための解決策としては、より高いクロック速度と、より幅の広いデータ経路の2つの解決策が挙げられる。そこで、システム設計者は、より高いクロック速度によって、データ経路を運用することによる技術の進歩を売り物としている。なお、このシステム設計者は、データ経路の幅をより広くするように、ビット幅も広げている。また、これらシステムは、データ経路の幅がより広いものであるにもかかわらず、従来のシステム、つまり、狭いデータ経路であり、より初期に設計された、古いシステムにも適合していなければならない。ところが、幅がより広いデータ経路を使用すると、データストリーム(data stream)が不規則になることがある。
また、データ経路に関連する他の重要なパラメータとしては、データ経路においてデータを伝送するために使用されるネットワークおよびプロトコルの種類が挙げられる。ここで、コンピュータシステムは、様々なネットワーク(インターネットプロトコル(IP)ネットワークや、同期光網(SONET)など)を使用して相互に通信する。なお、このSONETは、光学媒体においてデータを同期伝送するための米国基準である。また、SONETと同等の国際的規格としては、同期デジタル・ハイアラキ(synchronous digital hierarchy)(SDH)がある。双方とも、デジタルネットワークが、国際的に相互接続可能であり、従来からある伝送システムが光学媒体を利用することができるようにするための規格を保証する。
また、コンピュータシステムは、ネットワークアダプタ(network adapters)のような、回路網に関連したネットワークプロトコルを用いて、誤り検出および修正を目的として、ネットワークで伝送されるデータを符号化および復号化する。また、選択バイト(selective byte)の除去および追加は、様々なプロトコル実装や、相互接続網仕様書(internet working specifications)において当然のことである。これら2つの要素は、有効かつ操作が簡単になるように、まとめられ配列される必要があった、これまでの規則的なデータストリームから、任意のデータストリームを生成させることにつながる。そして、データストリームを規則的に生成することによって、データ伝送時間がより短くなるため、回線帯域幅を効果的に使用できる。さらに、規則的なデータストリームは、操作がより簡単であり、そして、逐次制御方式(pipelining)に対しても有効な助けとなる。さらに、取り出しと蓄積とが容易であるこれらの要素は、ネットワーク回路およびそのシステムにおいて、非常に重要となる。なぜなら、これらの要素は、顧客および市場にとって重要な識別パラメータ(differentiating parameters)に影響を与えるからである。
任意のデータストリームを、規則的なデータストリームに配置させるように働くある種の回路は、データ配列部(data aligner)として公知である。具体的には、データ配列部は、様々なビットサイズの未配列データを受け取り、データを配列して、圧縮したバイトサイズを得る。ここで、従来のいくつかのデータ配列部にある1つの問題としては、このデータ配列部が、できるだけ多くの未配列データシナリオ(unaligned data scenarios)に対処するように、かなりの数の論理(ロジック)を、多段階設計の第1段階に含むことが挙げられる。また、いくつかの先行技術のデータ配列部は、これらのデータ配列部が、出力選択多重化部(output selection multiplexer)の出力を、中間緩衝記憶部(intermediate buffer)にフィードバックするため、設計の第1段階において、論理が混雑状態となってしまうという別の問題も生じる。なぜならば、このような従来の解決策は、出力として送り出すために、あるパケットにおいて十分なデータがないと分かった場合、連接データ(concatenated data)を実行し、復元させるよりもむしろ、中間緩衝記憶部に連接データを保持する傾向があるからである。このような方法は、設計するのが困難なだけではなく、データ配列部の第1段階における処理時間がより長くなってしまい、データ配列部が作動する周波数を制限することとなる。
(発明の概要)
本発明は、バイトの巡回(byte rotation)のための方法およびその装置に関するものである。特定の一実施形態では、複数のバイトを、第1緩衝記憶部に受信する。なお、この第1緩衝記憶部は、データを含む複数バイトの相当数に匹敵する大きさを有している。また、この方法は、制御部によって、少なくとも1クロックサイクル(clock cycle)で、複数バイトを巡回させる前に、この複数バイトの状態を特定する工程と、巡回化部(rotator)において、この状態に基づき、複数バイトを巡回させることに関する巡回量(a rotate amount)を予測する工程とを含むものである。
また、別の特定の実施形態では、上記方法は、次のクロックサイクルにおいて第1緩衝記憶部に存在するバイトの第1数を予測する工程を含んでいてもよい。この方法では、第2緩衝記憶部から受信するビットの第2数の巡回量を、この予測に基づき計算する工程をさらに含んでいる。なお、この計算は、現時点のクロックサイクル(current clock cycle)において演算される。
また、特定の一実施形態では、上記装置は、複数のクロックサイクルを有するクロック信号を、受信するために接続されている第1緩衝記憶部、制御部、この制御部と第1緩衝記憶部とに接続されている巡回化部を有している。この巡回化部は、入力を受信し、第1出力を生成するために接続された第1巡回化回路(a first rotation circuit)を有している。また、巡回化部は、巡回化回路の入力と第1出力とを受信する第1多重化部(multiplexer)を備えている。この第1多重化部は、制御部から受信する第1巡回量制御信号(a first rotate amount control signal)に基づいて、入力と第1出力との間で選択を行う。なお、この第1巡回量制御信号は、次のクロック信号における第1緩衝記憶部に残っているバイト数を予測することにより特定できる。
本発明のさらなる特徴および長所を、添付の図および以下の詳しい説明により明らかにする。
本発明は、データ配列の方法および装置に関するものである。この装置は、複数の緩衝記憶部の間に接続されている複数の回路素子段階(circuitry stages)を有している。より後の段階の回路素子、および、対応する緩衝記憶部は、より初期段階の(earlier stage)回路素子の作動時間を低減するように、配列したデータパケットを割り当てるために使用される。
特定の実施形態では、上記装置は、第1緩衝記憶部に接続している第1段階の回路素子を有している。この第1段階の回路素子は、第1緩衝記憶部に接続している巡回化部、この巡回化部と接続している制御部、および、この制御部と接続している第1多重化部とを備えている。また、この装置は、巡回化部と接続している第2緩衝記憶部、および第2緩衝記憶部と接続されている第2段階の回路素子を備える。また、この第2段階の回路素子は、第2多重化部をさらに備えている。さらに、第3緩衝記憶部が、第2段階の回路素子に接続されている。
また、一実施形態では、上記方法は、複数バイトを有する第1データ要素を受信する工程と、データを含む複数バイトの第1数を特定する工程とを含んでいる。さらにこの方法は、複数バイトの全てにデータを含む場合、第1データ要素を操作せずに送信し、複数バイトの全てにデータを含んでいないバイトがある場合、データを保持する工程を含んでいる。
また、他の実施形態では、上記方法は、複数バイトの位置の中から空きバイトの位置を有する先頭(ヘッド)要素(head element)を受信する工程と、続く第1の本体(ボディ)要素(body element)を受信する工程とを含む。さらに、この方法は、先頭要素と続く第1の本体要素とを組み合わせて、この続く第1の本体要素からのデータにより、この先頭要素の空きバイトの位置を満たすことによって、第1の圧縮要素(packed element)を生成するように、この先頭要素において操作する工程を含む。なお、この第1の圧縮要素は、複数バイトの位置を有している。また、この方法は、第1圧縮要素の複数バイトの位置が、この操作により満たされた場合、第1圧縮要素を伝送する工程をさらに含んでいる。
さらにまた、他の実施形態では、上記方法は、不連続なデータストリームのバイトの第1数を受信する工程と、バイトの第1数を、第1および第2緩衝記憶部から第3緩衝記憶部に送る工程とを含んでいる。なお、このバイトの第1数は、所定数未満のバイト数である。また、第1緩衝記憶部は、第2緩衝記憶部に接続されており、この第2緩衝記憶部は、第3緩衝記憶部に接続されている。また、この方法は、バイトの第2数を受信する工程と、第2緩衝記憶部から第3緩衝記憶部にバイトの第1数を与える工程とを含んでいる。また、この方法は、バイトの第1数と第2数との合計が、所定の数未満である場合、第3緩衝記憶部から第2緩衝記憶部にフィードバックする工程をさらに含んでいる。
本発明のさらなる特徴と利点とは、添付の図および以下の詳細な説明により明らかとなる。
(図面の簡単な説明)
本発明は、添付の図面の図に例を挙げて説明されているが、これに制限されるものではない。
図1は、データ配列部の一実施形態を含む、デジタル処理システムを示す図である。
図2は、データ配列部の一実施形態を含む、ネットワークインターフェースデバイス(network interface device)を示す図である。
図3は、パケット構造の一実施形態と、対応する例示のバイト使用可能(byte enables)を示す図である。
図4は、データ配列部の一実施形態を示す図である。
図5は、データ配列の方法の一実施形態を示す図である。
図6は、一実施形態における、複雑なデータストリームを簡単なデータストリームに対応付けた図表である。
図7は、データ配列部の代替の実施形態を示す図である。
図8は、他の実施形態のデータ配列方法を示す図である。
図9は、巡回化部の実施形態を示す図である。
図10は、巡回した量と多重化部制御ベクトルの値との関係の一実施形態を示す表である。
図11は、実施例であって、入力に基づく巡回化部の出力と、巡回量とを示す表である。
(詳細な説明)
以下の説明では、本発明が完全に理解されるように、特定の部品、デバイス、方法などの例として、多くの具体的な詳細を記載している。しかしながら、当業者が、本発明を実施するために、これら具体的に記載された詳細を必須としないことは明らかである。また、他に例を挙げる場合では、本発明を不必要に分かりにくくしないように、公知の材料、または、方法については詳しく説明していない。
図表では、連続して満たされたバイトからなる規則的なデータストリームを生成するために、不規則なデータストリームに対するデータ操作を、データ配列部の多段階にわたり分配することに関して説明されている。データ操作の分配によって、追加のデータバイト(data bytes)を受信するための第1段階回路素子を起動させるように、いくつかのデータ操作のための後段階の回路素子を利用することで、データ配列部は、より高い周波数で機能できる。
また、特定の一実施形態では、未配列のデータシナリオの数は、データストリーム要素の対応付けを使用することにより、低減される。また、複雑なデータストリームは、多重化装置と、論理ゲートおよびデータ配列装置の制御出力の組み合わせとを追加するだけで、簡単なデータストリームに対応付けられる。
ただし、図表では、16バイトデータ要素について説明しているが、この図表を、他のデータ要素バイトサイズ(32バイト、8バイト、および、4バイトなど)にも適用できる。代替の実施形態では、ここに説明した図表において、構成可能なパラメータである様々なデータ幅で適用してもよい。なお、構成要素を接続する、ここで説明した「線」は、単一ビット線(single bit lines)、多重ビット線(multiple bit liens)、または、バスでもよい。
図1は、デジタル処理システム100の一実施形態を示す。このデジタル処理システム100は、例えば、ワークステーション、パーソナルコンピュータ、サーバなどであり、この中に、データ配列部150が装備されている。また、デジタル処理システム100は、情報を通信するために、バスまたは他の通信手段105を備えている。そして、このデジタル処理システム100は、情報を処理し、ネットワークインターフェースデバイス140へのデータパケットの動き、およびネットワークインターフェースデバイス140からのデータパケットの動きを制御するために、バス105に接続されている処理部110等の処理手段を有している。また、処理部110は、汎用処理装置(例えば、モトローラ(登録商標)パワーPCプロセッサ、または、インテル(登録商標)ペンティアム(登録商標)プロセッサ)、特定業務用処理装置(例えば、デジタル信号プロセッサ(DSP))、および、制御装置などの1つ以上の処理装置を示している。
さらにまた、デジタル処理システム100は、システム記憶部120を備えている。このシステム記憶部120は、情報(例えば、パケット)や、処理装置110によって実行される指示を格納するために、バス105に接続されている、ランダムアクセスメモリー(RAM)、または他の動的記憶装置を備えている。そして、システム記憶部120は、処理部110による指示が実行されている間に、一時的な変数や、他の中間情報を記憶するために使用する。また、システム記憶部120は、読み出し専用記憶素子(ROM)および/または静的情報および処理部110用の指示を記憶するために、バス120に接続されている他の静的記憶装置をさらに備えている。
1つ以上のネットワークインターフェースデバイス(ネットワークインターフェースデバイス140〜ネットワークインターフェースデバイスN)は、バス105に接続されている。代替の実施形態では、ネットワークインターフェースデバイス140が、デジタル処理システム100の外部に備えられていてもよい。ネットワークインターフェースデバイス140は、エラー検出および修正を目的として、ネットワーク160において伝送されたデータを符号化および復号化するために、回路素子に関連するネットワークプロトコルを有する。また、一実施形態では、ネットワークインターフェースデバイス140は、規則的なデータストリームを生成するための回路素子を備えている。また、ネットワークインターフェースデバイス140は、データ配列部150を備える。なお、データ配列部150は、以下に説明するように、任意のデータストリームを規則的なデータストリームに配置するように働く。
特定の設計環境(particular design environment)における実施に応じて、このネットワークインターフェースデバイス140は、SONETカード、イサーネットカード、トークンリングカード、またはネットワーク160に通信リンクを提供するための他の種類のインターフェースでもよい。なお、SONETおよびイサーネットは、技術的に知られているので、これについては詳しく説明しない。
また、このデジタル処理システム100は、単にシステムの一例を示しているだけであり、様々な異なる構成および設計を有していてもよいし、本実施例と共に使用されるものであってもよいということは認められるところであろう。例えば、いくつかのシステムは、大抵、多重バス(周辺バス、専用貯蔵バス(dedicated cache bus)など)を有している。他の例として、デジタル処理システム100は、バス105と接続されている制御部(図示せず)を有しており、ネットワークインターフェースデバイス140へのデータパケットの動き、および、ネットワークインターフェースデバイス140からのデータパケットの動きにおいて、処理部110を補助している。また、代替の実施形態では、デジタル処理システムは、インターフェースを網状に繋ぐためのネットワークを提供する、ネットワークにおける中間ノード(例えば、スイッチまたはルータ)であってもよい。このような中間ノードは、類似ネットワーク間、または、異なるネットワーク間に、インターフェースを提供している。例えば、ネットワーク媒体160は、光ファイバー媒体でもよく、ネットワーク媒体Nは、伝送線媒体でもよい。
図2は、データ配列部を備えるネットワークインターフェースデバイスの一実施形態を示す。ネットワークインターフェースデバイス210は、図1のネットワークインターフェースデバイス140であってもよい。パケット形状のデータは、データ経路に沿って、システム205から、ネットワーク295へ、インターフェースデバイス210を介して伝送される。このデータ経路は、制御されたインターフェースの下で、一方(例えば線211)から他方(例えば線236)に、データを操作して、渡す、ネットワークインターフェースデバイスの構成部分である。また、ネットワークインターフェースデバイス210は、ネットワーク295における伝送を招来するパケットプロトコル構造(a packet protocol structure)に、データを形式化して、すなわちフォーマットに従って並べる。なお、このパケットプロトコルは、パケット内の情報配列を指定する。例えば、一実施形態において、システム205は、クライアントまたは、サーバでもよく、ネットワーク295は、上記のように、SONET、または、イサーネットでもよい。
パケットは、出力方向に、システム205から、ネットワークインターフェースデバイス210を介して、ネットワーク295に伝送される。また、パケットは、入力方向に、ネットワーク295から、ネットワークインターフェースデバイス210を介してシステム205に受信される。また、一実施形態では、ネットワークインターフェースデバイス210が、先入れ先出し(FIFO)記憶部220および240、データ配列部230および250、パケット検査生成部235、パケット誤り検査部245、カプセル化部(encapsulator)225、および、脱カプセル化部(decapsulator)255を備えている。
まず、パケットは、システム205から、線211を通して、FIFO220に受信される。なお、ネットワークインターフェースデバイス210の処理能力(throughput capacity)よりも速くパケットが到着すると、伝送が中断されることがある。FIFO220は、データストリームにおけるパケットの超過を処理するために、システム側205から受信したデータストリームを緩衝(バッファリング)するように働く。同じように、FIFO240は、ネットワーク295から受信するデータストリームを緩衝する。また、代替の実施形態では、他の手段によって緩衝が行われてもよい。他の手段とは、例えば、ネットワークインターフェースデバイス210に接続されている記憶部(例えば、RAM、FIFO)、または、システム205(例えば、図1のシステムメモリ120)に存在する記憶部を用いる手段である。
パケットは、FIFO220から、線224を介して、カプセル化部225へ伝送される。カプセル化部225は、パケットを、フレーム指定(framing specification)に応じてフレームとする(frame)。このフレーム指定は、データが区分に「フレームとされる」ように、「データビット」を含む「プロトコルビット」の指定である。このフレーム指定により、受信部は、データストリームに沿った点で同期化できる。
データストリームパケットは、カプセル化部225から、線229を介して、データ配列部230に出力される。データ配列部230は、ちょうど、任意に到着している受信されたパケットのバイトを取り入れる。そして、データ配列部230は、様々なバイトサイズの未配列データを受信し、データを配列して圧縮バイトとする。データ配列部230は、配列されたデータパケットを、線234を介して、パケット検査生成部235へ出力する。パケット内にあり、パケット誤り検査部に出力されるバイト要素は、圧縮操作(packing operation)のため、必ずしも有効データ(valid data)を含んでいない。従って、このような場合、データ配列部230は、さらに、制御信号を、線233を介して、パケットにあるどのバイトが有効であるかを示すパケット検査生成部235に伝送する。また、データ配列部230は、他の制御信号(SOPや、EOP制御信号など)も、パケット検査生成部235に伝送する。なお、データ配列部230の操作について以下に詳しく説明する。
一実施形態において、パケット検査生成部235は、データストリームの正確度(the accuracy)を確かめるために使用される。パケット検査生成部235は、受信システムのパケット誤り検査部(例えば、パケット誤り検査部245)により使用されるデータストリームに加えて、出力も生成する。なお、このパケット誤り検査部は、パケットが良好であるかどうか、あるいは、データストリームに誤りが存在するかどうかを判断するものである。また、データストリームは、ネットワーク295に、線236を介して伝送される。いくつかのパケット(例えば、イサーネットパケットなど)は、32ビットの巡回冗長検査を有している。また、一実施形態では、自動誤り検出機能を提供するために、誤り検出符号(32ビットの巡回冗長性検査(CRC)など)を、パケットの最後に付け加える。ただし、32ビットCRCデータは、パケットのどの場所に存在していてもよい。CRC符号などの誤り検出符号は、破損を検出するために、データブロックから導出される数である。代替の実施形態では、CRC以外の誤り検出符号とその方法とを使用してもよい。
パケット誤り検査を使用して、ネットワーク295に接続されている受信器システム(図示せず)は、データパケットからの検査符号を再計算し、それをもともと伝送された検査値と比較することにより、伝送誤りを検出できる。ただし、パケット検査生成部235は、伝送段階の最後に配置される必要はなく、データストリーム経路に沿ったどの場所に配置されてもよい。
ネットワーク295から受信されるパケットは、線256を介して脱カプセル化部255に入力される。この脱カプセル化部255は、データストリームパケットから、フレームデータ(framing data)を取り除く。そして、フレームデータが、データストリームから取り除かれると、データストリームが、不規則(例えば、不連続)になることがある。このデータストリームは、線251を介して、データ配列部250に入力される。データ配列部250は、受信されたデータストリームにある不連続なバイトを集め、連続したデータストリームを得るために、バイトをパケットに圧縮または、配列するように働く。
データ配列部250の出力は、線246を介してパケット誤り検査部245に与えられる。なお、パケット誤り検査部245は、データストリームの正確度を確かめるために使用してもよい。パケット誤り検査部245は、受信したデータストリームを用いて符号を生成し、パケットが良好であるかどうか、または、データストリームに誤りが存在しているかどうかを判断するために生成した符号を、データストリームに組み込まれている受信された符号と比較する。パケット誤り検査部245の出力は、FIFO240に線241を介して送信される。FIFO240は、データストリームの出力を、線242を介してシステム205に緩衝するように働く。
FIFO、パケット誤り検査部、カプセル化部、および脱カプセル化部は、技術的に公知なので、その機能については詳しく説明しない。なお、インターフェースデバイス210は、入力方向と出力方向との両方におけるデータの流れにおける操作を単に説明するために、別々の構成部品により示されてきた。代替の実施形態では、ネットワークインターフェースデバイス210の構成部品は、1つ以上の集積回路に組み込まれていてもよい。
図3は、パケット構造の一実施形態、および対応するバイト使用可能の例を示す。パケット310は、1つ以上の要素320,330,340,および350を備えている。この各パケット要素は、1つ以上のバイト(例えば、16バイト)を有することもある。以下の説明では、16バイトのパケットの要素サイズ(element size)を例として使用しているが、他のパケット要素のバイトサイズ(例えば、32バイト,8バイト,および4バイト)を使用してもよい。
パケット310は、単一の先頭要素320、単一の末尾要素(a single tail element)350、および、1つ以上の本体要素(例えば、要素330および340)を含む本体335を備えている。先頭要素320は、パケットの始まりを示し、そのバイト位置は、 データビットにより部分的、または、全体が満たされている。また、先頭320は、データビットによって、先頭要素320のバイトの部分または全体を満たしているパケット開始(SOP)制御信号325の表明により特定される。
末尾要素350は、パケットの末尾を意味し、そのバイト位置は、データビットによって、部分的、または、全体が満たされている。また、末尾要素350は、この末尾要素350のバイトをデータビットによって、部分的、または、全体に満たすパケット終了(EOP)制御信号355の表明により特定される。また、本体要素は、この要素の全てのバイト位置が、データビットにより満たされている(例えば、本体要素340)。また、部分的な本体とは、本体要素(例えば、要素330)が、先頭要素320でもなく、末尾要素350でもないデータビットにより部分的に満たされている本体要素のことである。ホール(hole)は、パケット310内の空き要素、または、パケット310と、他のパケット(図示せず)との間の空き要素である。
また、図3は、パケット要素に対応している例として、バイト使用可能(byte enables)321、331、341、および、351を示す。「1」のバイト使用可能は、データが、対応しているバイト位置に存在することを表す。また、バイト使用可能「0」は、データが、対応しているバイト位置に存在しないことを表す。このバイト使用可能は、図4〜7を参考にして以下に説明するように、緩衝記憶部の制御部に送信される。
図4は、データ配列部の一実施形態を示す。この一実施形態では、データ配列部400が、中間緩衝記憶部420によって分かれている2段階(段階404および406)のパイプラインを備えている。なお、中間緩衝記憶部420は、段階404と406との間での全ての未送信のデータを、蓄積するように働く。また、データ配列装置400は、段階404の入力部と段階406の出力部とに、それぞれ接続されている緩衝記憶部410および430を備えている。一実施形態においては、緩衝記憶部410,420,および430が、レジスタである。この緩衝記憶部410,420,および430は、前の段階から受信するデータを蓄積するように働く。また、データ配列部400は、以下に説明するように、パケット要素に関するバイト使用可能を蓄積するように働く、制御緩衝記憶部415,425,および435をさらに含んでいる。なお、この緩衝記憶部、およびレジスタは、技術的に知られているので、詳しい説明は省略する。
また、一実施形態において、例えば、緩衝記憶部410,420,および430は、16バイトのサイズである。代替の実施形態では、緩衝記憶部410,420,および430は、システムにおいて使用される特定のバイト構成(byte scheme)に応じて、他のサイズ(例えば、32バイト、8バイト、および、4バイト)であってもよい。
各緩衝記憶部410,420,および430は、ぞれぞれ、線481を介してクロック信号を受信するために接続されている、クロック入力部を備えている。このクロック信号は、データ信号から復元されるか、あるいは、クロック生成部(図示せず)により生成される。また、クロック信号は、多重クロックサイクル(multiple clock cycles)を含んでおり、この多重クロックサイクルで、データ配列部400における処理タイミング(timing)をとる。
この緩衝記憶部410は、データパケットを受信するために、線411を介して接続されている入力部を有している。また、緩衝記憶部410は、データパケットを、巡回化部(rotator)440および制御部450に、それぞれ線412および413を介して出力する。この巡回化部440の出力部は、線441を介して、中間緩衝記憶部420と、多重化部460とに接続されている。中間緩衝記憶部420の出力部は、線421を介して多重化部470のデータ入力部に接続されている。多重化部470の出力部は、線471を介して緩衝記憶装置430に接続されている。
また、制御部450は、バイトデータを渡すように、多重化部460および470の動作を制御するために用いられる。また、この制御部450は、巡回化部440の動作を制御するためにも用いられる。さらに、制御部450は、SOP、EOPなどの外部制御信号を生成するためや、(図3に示すような)バイト使用可能制御信号(byte enable control signals)を生成するために用いられる。なお、この制御部450は、制御出力部をさらに備えており、この制御出力部は、線459を介して巡回化部440と、線452を介して多重化部460とそれぞれ接続されているとともに、線453を介して多重化部470の制御入力部に接続されている。
巡回化部440は、制御部450による制御を受けながら、1つ以上のバイトを、要素の異なるバイトスロット(byte slots)、すなわちバイト位置に巡回させるように働く。また、一実施形態では、制御部450が、巡回量制御信号(a rotate amount control signal)を、線452を介して巡回化部440に与えてもよい。巡回化部440の出力は、入力データとして、緩衝記憶部420に、多重化部480を通して与えられ、また、それは、入力として、多重化部460に与えられる。この巡回量制御信号の機能は、緩衝記憶部410の内容が巡回させられる量を決定することである。その結果として、もしあるならば、緩衝記憶部410の残部(remainder)と、もし、あるならば緩衝記憶部420の残部部とが連結される。そして、緩衝記憶部420の内容は、適切に配列されたバイトとなる。この巡回量を決定するために、制御部450は、様々なバイトの状態を、実際の巡回が起こる1クロックサイクル前に認識する。
第1バイト状態では、緩衝記憶部410の内容は、緩衝記憶部420に、パススルー方法(pass through manner)により書き込まれている。つまり、緩衝記憶部410のバイト0が、緩衝記憶部420のバイト0へ行き、緩衝記憶部410のバイト1が、緩衝記憶部420のバイト1へ行くなどのようには、バイトの経路は交差していない。このバイト状態は、緩衝記憶部420が空きであるのか、またはパケットレベルの細分性(packet level granularity)を維持することが必要であるEOP信号を、緩衝記憶部420が含んでいるのかどうかを決定する場合に生じる。また、このバイト状態は、緩衝記憶部420の状態とは関係なく、緩衝記憶部410が、SOP信号を含む場合にも生じてもよい。このように、緩衝記憶部410と緩衝記憶部420との間に依存関係はない。どちらの場合にも、データバイトは配列されなくてもよく、バイトのデータは、パススルー方法により書き込まれる。なお、次のサイクルでの巡回量は、16から緩衝記憶部410におけるバイト数を引いたものと予測できる。
第2バイト状態では、緩衝記憶部410の全16バイトが、緩衝記憶部420に書き込まれ、次のサイクルでは、緩衝記憶部420が、満たされているということを含む。この場合での巡回量は、0と予測され、同じくバイト経路(byte lane)が、交差していないことを意味している。
第3バイト状態では、バイトは、緩衝記憶部410から緩衝記憶部420に書き込まれない。このような状態は、緩衝記憶部410が、EOP信号を含んでいることを示しており、緩衝記憶部410および420の状態は、データが、緩衝記憶部410と420との間を通り抜けて、緩衝記憶部430に直接渡されるため、緩衝記憶部410に入力する次のデータをシフトする必要はない。この場合の循環量を、0と予測できる。
第4バイト状態では、緩衝記憶部410および緩衝記憶部420における純有効バイト総数(net valid byte count)が、16を越え、緩衝記憶部410における内容の残部が、適切なバイトの経路が交差して緩衝記憶部420に書き込まれる。この場合に、緩衝記憶部410へのその後の入力に関して予測が行われる。この場合の巡回量は、32から、緩衝記憶部410における純バイト数と、緩衝記憶部420におけるバイト数とを引いたものであると予測できる。
例えば、緩衝記憶部420は(データを含んでいる)有効なものとして14バイトを有しており、緩衝記憶部410は、有効なものとして6バイトを有しているとする。次のクロックサイクルでは、16バイトが、緩衝記憶部430に送信され、一方、残りの4バイトが緩衝記憶部420に蓄積される。従って、次の組の入力の巡回量は、32−20=12である。{15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0}のベクトルに対して、12の巡回量が、ベクトル{11,10,9,8,7,6,5,4,3,2,1,0,15,14,13,12}となり、その結果、次の入力は、4バイトの残留に相当する前の位置4から始まるということを保証する。そして、1クロックサイクル先を見越して(one clock cycle look ahead)、先のクロックサイクルにおいて演算を実行できる。
多重化部460,470,480は、それぞれの制御入力部に与えられた制御信号の値に基づく2つのデータ入力の間で、選択するために用いられる。なお、多重化部は、技術的に公知であるので、ここでは、詳しく説明しない。また、この多重化部460の出力部は、線461を介して多重化部470のデータ入力部に接続されている。また、多重化部470の出力部は、線471を介して、緩衝記憶部430に接続されている。多重化部480の出力部は、緩衝記憶部420に接続されている。そして、多重化部460,470,および480は、制御入力部において、制御信号を、それぞれ線452,453,および455を介して、制御部450から受信する。なお、説明のために多重化部を他の部品とは別個に記載している。また、この多重化部は、他の構成ブロックに存在していてもよく、例えば、多重化部480は、緩衝記憶部420に存在していてもよい。
多重化部460および470に印加される制御信号の機能は、緩衝記憶部420の内容と緩衝記憶部410の巡回した内容とを形成している、多重化部の出力を選択することである。一実施形態では、印加された制御信号は、16ビットの制御信号である。この16ビットの制御信号は、図10に記載するように、ある16バイト範囲の操作(byte spanning operation)を含む、巡回量の関数(a function)である。ある位置での「1」は、巡回部440の巡回した出力が選択されたことを示し、一方、ある位置での「0」は、緩衝記憶部420の出力が選択されていることを示す。この巡回量の値は、位置「0」から始まる多重化部制御信号ベクトル(multiplexer control signal vector)における「1」の数を意味している。
制御部450は、線459を介して、緩衝記憶部420に接続されている、制御出力部をさらに備えている。一実施形態では、線459を介して緩衝記憶部420へ出力される、制御信号が16ビット幅であり、緩衝記憶部420に関する内容が、上記した巡回量信号に基づいて選択された後、緩衝記憶部420のバイトによるバイト書き込みを制御する。緩衝記憶部420に出力される制御信号は、緩衝記憶部420における有効バイトを次のクロックサイクルにおいて決定する。制御部450は、緩衝記憶部420の書き込み可能を決定するために、様々な状態を現在のクロックサイクルの間に認識する。
また、一実施形態では、緩衝記憶部410の内容が、パススルー方法によって、緩衝記憶部420に書き込まれる。このことは、緩衝記憶部420が、空きである、またはパケット細分性の保持が必要とされるEOP信号を含んでいる場合に生じる。また、このことは、緩衝記憶部420の状態とは関係なく、緩衝記憶部410が、SOP信号を含んでいる場合にも生じる。このような場合には、緩衝記憶部410に対応しているバイト使用可能が、緩衝記憶部420に対する書き込み可能(the write enable)となる。
第2の場合では、緩衝記憶部410の全16バイトが、緩衝記憶部420に書き込まれる。そして、次のクロックサイクルでは、緩衝記憶部420が満たされていることを意味している。このような場合では、緩衝記憶部420に対する書き込み可能は、全て「1」である。
また、第3の場合、バイトは、緩衝記憶部410から緩衝記憶部420に書き込まれない。緩衝記憶部410は、EOP信号を含んでおり、緩衝記憶部410および420の状態は、データが直接、緩衝記憶部に送られるため、次の入力のためにデータをシフトする必要がない。このような状態では、緩衝記憶部420に対する書き込み可能は、全て「0」である。
さらに第4の場合では、緩衝記憶部410および緩衝記憶部420における純有効バイトの総数が、16を越え、緩衝記憶部410の内容の残部が、適切なバイト経路の交差により、緩衝記憶部420に書き込まれる。この場合において、緩衝記憶部420に対する書き込み可能は、緩衝記憶部410における有効バイト数に、緩衝記憶部420における有効バイト数を加え、16を引いて演算される。
また、上記したデータ配列部400は、線411の未配列データを、様々なバイトサイズで受信するために用いられる。そして、このデータ配列部400は、図5に基づき以下に説明するように、特定のバイトサイズとなるように、データを配列するために使用される。また、データ配列部400は、先頭要素、本体要素、および、末尾要素を有するデータパケットに対応している。
図5は、データ配列方法の一実施例を示す。この方法を、ここでは、データ要素が16バイトを有するデータ構成に関連して説明する。既に説明したように、他のバイトパケットにもこの方法を使用できる。一実施形態では、データ配列部400には、初期状態のときデータが入っていない。データパケットの先頭要素が到着した時点で、制御部450は、先頭要素の有するデータが、16バイト未満であるかどうか特定する(工程510)。先頭要素が、16バイト未満のデータを有している場合、バイトは、将来的な圧縮のため、緩衝記憶部420に送信され、保持される(工程520)。先端要素が、全16バイトのデータを含んでいる場合、データは、緩衝記憶部430へ送信され、制御信号とともに出力される(工程530)。
先頭要素には、本体要素または末尾要素が続いている。先頭要素に、本体要素が続いている場合、中間緩衝記憶部420におけるデータのバイト数、およびその後に続く本体要素におけるバイト数は、16バイトよりも多いか、あるいは、16バイトに等しいので、全16バイトは、規定の処理(due processing)の後、SOPを示すために制御部450により生成される制御信号と共に、緩衝記憶部430に渡される(工程540)。
中間緩衝記憶部420から、バイトを選択するか、あるいは、各々がデータを含むバイトの数に基づき、緩衝記憶部410にバイトを新たに入力するかが決定される。緩衝記憶部410に、新たに入力されるバイトは、16バイトの純バイト数を補うために、緩衝記憶部410から直接先行して送られるバイト数によって巡回される(工程550)。巡回されたバイトは、中間緩衝記憶部420に書き込まれる。工程540〜550は、制御部450が、末尾が届いたと判断するまで繰り返される(工程560)。
末尾が届くと、緩衝記憶部430におけるデータは、各要素のパケットの境界を維持するために、純パケットサイズとは関係なく、線431を介して出力される(工程570)。このようにして、データ配列部400は、先頭要素,本体要素,および末尾要素(これらのうち、先頭および/または末尾要素は、部分的に満たされていてもよい)を、1つ以上の本体要素および1つの末尾要素を有する連続的なパケットに変換する。
上記した例のように、例えば、先頭要素が、レジスタ410に受信され、制御部450により、7バイトのデータを含むと判断されるとする。先頭要素に含まれるのは、16バイト未満なので、7バイトは、中間緩衝記憶部420に送信され、格納される。そして、次に受信される要素は、本体要素である。この本体要素は、制御部450によって、16バイトのデータを有していると判断され、制御部450は、合計23バイトのデータが受信されたものと演算する。この合計は、データ配列部400の16バイトサイズを越えるので、制御部450は、16バイトの本体要素のうちの下位9バイトを選択して、先頭要素からの7バイトと共に、圧縮された16バイトの本体要素として出力する。このため、制御部450は、選択された9バイトのデータを、巡回化部440を通して渡し、多重化部460の入力部に与える。この9つの巡回されたバイトは、緩衝記憶部420からの7バイトと共に、多重化部470への入力として適用される。制御部450は、多重化部制御信号を、線453を介して多重化部470に送信し、多重化部460から出力された、16の連接バイト(concatenated bytes)を出力する。
このとき、データ配列部400は、出力される16バイトをレジスタ430に備え、レジスタ410には7バイトが残っている。16バイトの本体要素のうち下位9バイトが、出力されたので、レジスタ410に残っている7バイトは、巡回化部440からより下位のバイト位置に出力され、レジスタ420に書き込まれる。次に、巡回したバイトは、中間緩衝記憶部420に入力され、蓄積される。そして、次の本体要素が受信されると、レジスタ430へ出力する、圧縮された16バイト要素を生成するために、上記工程が繰り返される。
末尾要素が受信されると、EOP信号の受信によって、制御部450が判断するので、データを含む末尾要素のバイトは、中間緩衝記憶部420におけるバイトと組み合わせられ、16バイトと等価な圧縮バイトサイズを待たずに、レジスタ430に出力される。例えば、7バイトが、中間緩衝記憶部420に格納されており、1バイトのビットデータを含む末尾要素が受信されると、制御部450は、1バイトを、巡回化部440を通して送信する。次に、中間緩衝記憶部420に格納されている7バイト、および1バイトの巡回された出力は、多重化部470に、制御部450によって供給されて、次のクロックサイクルで出力される。
図5に関連して上記で述べた方法は、先頭、本体、および末尾要素をパケットに有する比較的規則的なデータストリームを操作している。他の実施形態では、他の種類のデータストリーム(以下、図4および5に関連して説明された簡単なデータストリームと区別するために、複雑なデータストリームと呼ぶ)に、ネットワークプロトコルにおいて直面するかもしれない。ネットワークプロトコルでは、規則性は、バイトの任意の許可および無許可(例えば、SONET上の標準化されたパケット(Packet Over SONET)(POS)プロトコルにおける乾式順序(dry sequence))によって、影響を受けることもある。また、一実施形態では、複雑なデータストリームは、図3に関連して上記に定義されたように、ホールと、部分的本体要素とを有している。このような複雑なデータストリームは、図4,5に関連して説明した簡単なデータストリームの要素に、これら要素を対応づけることによって、処理される。
図6は、データストリームにおけるホールと部分的本体要素とを処理するための対応図表の一実施形態を示す。一実施形態において、複雑なデータストリームの先頭要素が、簡単なデータストリームの先頭要素に対応づけられる(610)。複雑なデータストリームの本体要素は、簡単なデータストリームの本体要素に対応づけられる(620)。また、複雑なデータストリームの末尾要素は、簡単なデータストリームの末尾要素に対応づけられる。なお、ホールは、保持状態640として処理され、データ配列部(図7に関連して以下に説明するデータ配列部700など)では何も実行されない。
また、部分的な本体の機能は、末尾を2つの異なる末尾要素(末尾Aおよび末尾B)に分類することにより、簡単なデータストリームの末尾の機能に対応づけられる(650および660)。末端A要素は、部分的な本体と、図7のデータ配列部700の中間緩衝記憶部720とにおける、データビットを含むバイトの純総数が、16未満のものである。末尾B要素は、部分的な本体と、図7のデータ配列部700の中間緩衝記憶部720とにおける、データビットを含むバイトの正味の総数が、16以上のものである。
図7は、複雑なデータストリームによって実施されているデータ配列部に関する他の実施形態を示す。一実施形態では、データ配列部700が、緩衝記憶部720および730によって分けられている、2つの流通経路段階(段階704および706)を有している。このデータ配列部700は、緩衝記憶部730,巡回化部740,制御部750、および多重化部760,770,775,780を備えている。巡回化部740および制御部750は、特記しない限り、図4の巡回化部440および制御部450と類似したやり方で作動する。
緩衝記憶部710,720,および730は、線781を介してクロック信号を受信するために接続されている、クロック入力部をそれぞれ備えている。このクロック信号は、データ信号から復元されてもよく、あるいは、クロック生成部(図示せず)により生成されてもよい。また、このクロック信号は、多重クロックサイクル(multiple clock cycles)を含み、この多重クロックサイクルにおいて、データ配列部700における操作タイミングが実行される。
緩衝記憶部720は、段階704と706との間に、全ての未送信データを格納する。データ配列部700は、段階704の入力部、および段階706の出力部に、それぞれ接続されている緩衝記憶部710および730をさらに備えている。一実施形態では、緩衝記憶部710,720,および730は、レジスタである。制御緩衝記憶部715,725,および735は、制御部750に接続されており、バイト使用可能を格納するように働く。
緩衝記憶部710は、線711を介して、データパケットを受信し、データパケットを、線712および713を介して、巡回化部740および制御部750にそれぞれ出力するために接続されている入力部を備えている。巡回化部750の出力部は、多重化部780のデータ入力部に接続されており、多重化部780のほかのデータ入力部は、線776を介して、多重化部775の出力を受信するために接続されている。また、巡回化部740の出力部は、多重化部760のデータ入力部にも接続されており、多重化部760の他のデータ入力部は、線776を介して多重化部775の出力を受信するために接続されている。また、多重化部780の出力部は、緩衝記憶部720の入力部に接続されている。
巡回化部750は、制御部750の制御を受けながら、1つ以上のバイトを、異なるバイトスロット、すなわちバイト位置に巡回させるように働く。一実施形態では、制御部750が、巡回量制御信号を、線758を介して巡回化部750に印加する。この巡回量制御信号の機能は、緩衝記憶部710の内容を巡回させる量を決定することであり、その結果として、もしあれば緩衝記憶部710の残部と、もしあれば緩衝記憶部720の残部とが連接される。そして、緩衝記憶部720の内容は、適切に配列されたバイトとなる。
巡回量を決定するために、図4の巡回化部440に関連して、上記に説明したように、様々なバイトの状態が、制御部750によって、実際の巡回が行われる前の1クロックサイクルで認識されてもよい。また、クロックサイクルの先を見越す方法(clock cycle look ahead approach)は、部分的な本体要素の構造を提供している間、維持される。複雑なデータストリームでは、次のクロックサイクルの緩衝記憶部720におけるバイト数が、現時点の演算の純有効総数として、予測され、交換される。現時点での演算では、純有効総数は、緩衝記憶部710におけるバイト数と、緩衝記憶部720におけるバイト数とを足したものである。部分的な本体を維持し、次の入力に関する巡回量を予測する場合、現状の純有効バイト演算は、緩衝記憶部720のバイト総数になる。巡回量は、制御、および他の制御信号に対する源(seed)として役立つ。
制御部750は、巡回化部740に接続されている制御出力部と、線752,753,754,および755をそれぞれ介した多重化部760,770,775,および780の制御入力部を備えている。線759を介して巡回化部740に接続されている、制御部750の制御出力部と、線759を介して緩衝記憶部720に接続されている、制御部750制御出力部とをさらに備えている。
多重化部760の出力部は、線761を介して、多重化部770のデータ入力部に接続されている。緩衝記憶部720の出力部は、多重化部770のその他方のデータ入力部と、多重化部775のデータ入力部に、線721を介して接続されている。また、この多重化部770の出力部は、線771を介して緩衝記憶部730に接続されている。緩衝記憶部730は、データ出力部および制御出力部を備えている。この緩衝記憶部730のデータ出力部は、線779を介して、多重化部775のデータ入力部に接続されている。また、この緩衝記憶部730の制御出力部は、線778への出力部である。
制御部750は、線759を介して緩衝記憶部720に接続され、線751を介して緩衝記憶部730に接続されている制御出力部をさらに備えている。一実施形態では、線759および751をそれぞれ介して、緩衝記憶部720および730に出力される制御信号は、16ビット幅である。緩衝記憶部720に対する制御信号は、緩衝記憶部の内容が、巡回量信号に基づき選択された後、緩衝記憶部の書き込みをバイト毎に制御する。緩衝記憶部720に対して出力される制御信号は、次のクロックサイクルにおいて、緩衝記憶部720における有効バイトも決定する。現時点でのクロックサイクル間で、図4に関連して上記に説明したように、緩衝記憶部720の書き込み使用可能の決定のために、様々な状態が、制御部750により認識される。また、ホールの受信は、状態の保持として扱われる。
以下の例により、部分的な本体が受信される場合を説明する。同じパケット内におけるデータ配列装置700の起動時には、6バイトに、6バイトが続き、この6バイトに8バイトが続く順番であるものとする。8バイトが緩衝記憶部710にあり、6バイトが緩衝記憶部720にあり、そして緩衝記憶部710が、EOP信号を含んでいないという場合については、図4に関連して上記で説明した場合に含まれていない。この場合では、全ての14バイトを緩衝記憶部730に送信しようという試みがなされる。次のクロックサイクルでは、制御部750が、部分的な本体要素の場合であるということを特定し、併合した緩衝記憶部730の出力(制御およびデータ)を、中間緩衝記憶部720に復元する。そして、緩衝記憶部730に対する、制御部750による出力可能(an output enable)の生成が抑制される。併合は、新しいデータが取得されない場合、1サイクル間での迂回と、次のサイクルでの復元として生じる。そうでなければ、新しいデータが来る場合には、迂回は、末尾Aの試験が満たされるまで続く。
巡回量の演算を目的として、純有効総数の送り込みでは、既に次の演算を処理している。復元では、緩衝記憶部720が14バイトを有するものとして、そして、緩衝記憶部710が6バイトを有するものとして示している。これは、図6に関連して上記に説明した末尾Aの場合を表している。このように、演算は、簡単なデータストリームの末尾が受信されたものとして実行され、そして計算され、復元される。14バイトについての巡回量の予測は、32−14=18バイトの巡回であり、これは、2バイトの巡回(4ビットのみ)と同じである。そのため、6バイトの緩衝記憶部710に関しては、2バイトだけ巡回することにより、0および1を、位置14および15にそれぞれ配置することとなり、これらは、緩衝記憶部720の14バイトと併合される。これが、真の末尾である場合、16バイトは、緩衝記憶部730に送られる。書き込み使用可能は、20−16、すなわち、余り4のバイトが、緩衝記憶部720に書き込まれる。
また、緩衝記憶部720に14バイトあり、緩衝記憶部710に6バイトある場合、予測される巡回量は、32−20=12である。この場合、緩衝記憶部720からの4つの残りのバイトは、それらの位置を保持しており、12の巡回は、次の連結などを考慮して、新しい入力バイトのバイト0を、位置4に配置する。この処理は、無限に繰り返される。
上記のデータ配列部700は、図8に関連して以下に説明するように、線711の未配列データを、様々なバイトサイズで受信する。そして、このデータ配列部700は、特定のバイトサイズになるようにデータを配列するために使用される。また、データ配列装置700は、先頭要素、本体要素および末尾要素のほかに、ホールと部分的な本体要素とを有するデータパケットに適合している。
巡回化部740は、図4の巡回化部440に関して上記において説明した、同様の1クロックサイクル先を見越す方法により、部分的な本体要素構造を支持しながら作動する。図6に関連して上記で説明した、対応付け図表は、緩衝記憶部720におけるバイト数を、予測し、次のクロックサイクルにおいて、現時点の演算の純有効総数として置き換えることが示されている。現時点の演算では、純有効総数は、緩衝記憶部710におけるバイト数と、緩衝記憶部720におけるバイト数とを足したものである。部分的な本体要素の支持し、次の入力での巡回量を予測する場合に関しては、現状の純有効バイト演算が、緩衝記憶部720バイト総数になる。この巡回量は、主要な制御(primary control)であり、他の制御信号の源として役立つ。
図8は、複雑なデータストリームをデータ配列する方法についての他の実施形態を示す。一実施形態では、パケット要素が受信され、どの種類の要素であるかを特定するために分析される(工程810)。この要素が、先頭、本体、または末尾であると特定されると(工程815)、この要素は、図5に関連して上記に説明したように、簡単なデータストリームの、対応する要素の種類のそれに対応付けられ、処理される(工程820)。
そして、要素が、先頭、本体、または、末尾ではない場合、その要素がホールであるのか、または部分的な本体であるのかを特定するために、要素を分析する(工程825)。この要素が、ホールであると特定された場合、データ配列部700の緩衝記憶部710,720,および730の状態が保持され、何も実行されない(工程830)。しかし、要素が部分的な本体であると特定された場合、この要素の部分的な本体機能は、末尾のそれに対応付けられる(工程830)。この対応付けを実行するとき、部分的な本体要素は、部分的な本体と、中間緩衝記憶部720とにあるデータを含むバイト数(純総数)に基づいて、2つの対応付けられている要素(末端Aおよび末端B)のうちの1つに分類される(工程840)。
この純総数が、16バイト未満の場合、図5に関連して上記にて説明した末尾の処理順序は以下に続き(工程845)、以下の変更が伴われる。すなわち、データ配列部700の制御出力を抑制する(工程850)(これは、基本的に、位置1〜16においてバイトの有効性を表している制御信号は、第2段階706において生成されるが、末端Aが検出されるとき、制御部750における論理によって、抑制されていることを意味している)。そして、中間緩衝記憶部720を迂回する(工程855)。中間緩衝記憶部720における未送信結果を用いて、純総数の次の演算を実行する(工程860)。特定の実施の場合では、現時点のクロックサイクルにおける純総数を、次のクロックサイクルにおける中間緩衝記憶部730の総数として予測してもよい。工程850,855,860は、純総数が、16を越えるか、あるいは、16に等しくなるまで繰り返される。
例えば、中間緩衝記憶部720が、7バイトを含み、緩衝記憶部710が、1バイトを受信した場合、全8バイトが、緩衝記憶部730に送信される。そして、緩衝記憶部730に格納されているのは16バイト未満なので、制御部750は、制御出力778を抑制する。一実施形態では、制御出力778が、純総数が、16バイトに等しくなるか、または、16バイトを越えるか、あるいは、EOP信号が受信されるまで抑制されている。代替の実施形態では、別の論理構成および制御信号が、データ配列部700の制御出力778を抑制するために使用されてもよい。
次に、制御部750により伝送される制御信号を用いて、緩衝記憶部730の出力は、その後に続くクロックサイクルにおいて、多重化部775,760および770を通して、緩衝記憶部730に入力されるようにフィードバックされる。このようにして、中間緩衝記憶部720の出力は、緩衝記憶部730の内容によって迂回される。従って、さらなるバイトが、緩衝記憶部710において受信される場合、純総数を特定するための演算は、図7に関連して上記に説明した予測図表を用いて実施される。この工程は、緩衝記憶部710および720(緩衝記憶部730迂回が生じることがある場合は、緩衝記憶部730を含む)におけるバイトの純総数が、16に等しくなるか、または、16を越えるまで繰り返される。
この純総数が、16バイトに等しいか、または、16バイトを越えている場合、図5に関連して上記に説明した末尾の処理順序は以下に続く(工程865)。そして、次の変更が伴われる。すなわち、制御出力(SOP、および、バイト使用可能を含む)を抑制しない(工程870)。EOP制御信号を生成しない(工程875)。そして、適切な更新により、中間緩衝記憶部720を、迂回しない(工程880)。
先行例に続いて、緩衝記憶部720(緩衝記憶部730の迂回を含む)は、8バイトのデータを格納しており、さらなる8バイトを受信した場合、この8バイトは、多重化部760に、巡回化部760の出力と共に送信される。この合計が、16に等しいので、連結された出力は、多重化部770に送信され、次のクロックサイクルで出力される。なお、EOP制御信号は、制御部750によって生成されない。このようにして、部分的な本体要素は、EOP制御信号を生成せずに、簡単なデータストリームにおける末尾要素の場合と同じように扱われる。なお、この部分的な本体要素は、純総数を、緩衝記憶部710および720(緩衝記憶部730の迂回を含む)において、16バイトに等しいか、16バイトを超えるものである。
上記方法により、多重化部と組み合わせ論理とを追加するだけで、複雑なデータストリームを、比較的簡単な装置に対応付けることができる。この構造により、厳しいタイミング要求を有する第1段階の制御設計において、負荷が緩和され、第1段階に論理を過剰実装するのではなく、論理が、段階間で分散される。このような回路構造は、より良好なタイミングと、より高い操作速度(frequency of operation)に繋がる。
図9は、巡回化部の一実施形態を表している。一実施形態では、巡回化部900は、図4の巡回化部440または図7の巡回化部740として使用されている。巡回化部900は、4段の一連のバイト巡回回路素子を表し、この回路素子では、各バイト巡回回路981〜984が、それら自身によって、1,2,4,または、8バイトの巡回を可能とする。また、バイト巡回回路素子は、技術的に公知であるので、ここでは詳しい説明は省略する。
バイト巡回回路素子981〜984のそれぞれは、巡回入力機能(rotate input function)に基づいて迂回される。この構成では、巡回化部900が、制御信号971〜974に基づく16バイトの入力から、巡回した出力を生成できる。なお、この制御信号971〜974は、0バイトから15バイトまでのバイトの巡回量を示している信号である。また、図11は、入力および巡回量に基づく、巡回化部900の出力を示す実施例である。
制御信号971〜974は、制御入力として、多重化部991にそれぞれ印加される。また、制御信号971〜974は、各バイト巡回回路素子981〜984のそれぞれの出力961〜964と、各バイト巡回回路素子981〜984のそれぞれの入力951〜954との間で選択をする。入力951〜954は、データ入力955〜958として、多重化部991〜994にそれぞれ印加される。図10は、入力951〜954のデータに基づく出力979および、巡回量を示す。代替の実施形態では、別の種類の巡回化部(例えば、バレル型巡回化部(barrel rotator))を使用してもよい。
ここに記載の方法および装置は、複雑なデータ経路設計において、一般的であり、再発性のある問題を、解決するために使用されてもよい。誤りを検出し、修正するために、データストリームが符号化および複合化される、ネットワークプロトコル関連ハードウエアにおける実施により、検査部と生成部は、より速く、より効果的に流通経路敷設された(pipelined)設計となる。したがって、それらは、より高速で、より広い帯域幅である設計にいっそう好適となる。
代替の実施形態では、ここに説明した方法および装置は、データ配列を必要とする他の種類のシステムおよび部材に使用されてもよい。すなわち、様々なバイト経路における未配列データが配列される、例えば、処理装置のロード(processor load)や、格納エンジン(storage engines)に使用されてもよい。また、別の例として、この方法および装置は、格納集積機能(store gathering functions)において使用されてもよい。なお、この格納集積機能では、内部指示部からの多重バイト幅格納(multiple byte wide stores)は、単一格納動作として外部バスに対応付けられる。
上記説明では、発明を、その特定の実施例を参照して説明してきた。しかし、これに、様々な修正および変更を行っても、請求項に記載の本発明の広義の精神と範囲とに反することはないことが明らかである。従って、説明および図は、説明的なものであり、制限を意味するものではない。
データ配列部の一実施形態を含む、デジタル処理システムを示す図である。 データ配列部の一実施形態を含むネットワークインターフェースデバイスを示す図である。 パケット構造の一実施形態と、対応する例示のバイト使用可能とを示す図である。 データ配列部の一実施形態を示す図である。 データ配列の方法の一実施形態を示す図である。 一実施形態における、複雑なデータストリームを簡単なデータストリームに対応付けた図表である。 データ配列部の代替の実施形態を示す図である。 他の実施形態のデータ配列方法を示す図である。 巡回化部の実施形態を示す図である。 巡回した量と多重化部制御ベクトルの値との関係の一実施形態を示す表である。 実施例であって、入力に基づく巡回化部の出力と、巡回量とを示す表である。

Claims (18)

  1. デジタルデータユニットの並列形式化された入力群の入力時間列を受信する入力部と、
    デジタルデータユニットの並列形式化された出力群の出力時間列を生成するために、前記入力部に接続され、前記入力列に対して応答するデータ配列部と、
    前記出力列を出力するために、このデータ配列部に接続されている出力部と、
    データ経路とを備え、
    前記データ配列部は、
    第2入力群が前記入力部において受信される間に、第1入力群のデータユニットを格納するために、入力部に接続されている緩衝記憶部、および、この緩衝記憶部に格納された全てのデータユニットと、第2入力群の中から選択されたデータユニットとを、並列形式で組み合わせることによって前記出力群のうちの1つを生成するために、緩衝記憶部および入力部に接続されている結合部を有しており、
    前記データ経路は、前記緩衝記憶部に格納せずに、前記1つの出力群を出力部に伝送可能とするために、前記結合部および前記出力部に接続されており、
    前記結合部が、選択されたデータユニットを、緩衝記憶部に格納されているデータユニットの全てと並列連結して、1つの出力群を生成するために、第2入力群のデータユニットを巡回させて、この第2入力群から選択されたデータユニットの位置を決定するように、前記入力部に接続されている巡回化部をこの結合部が備えているデータ配列装置
  2. 前記データ配列部は、前記巡回化部が第2入力群のデータユニットを巡回させるための巡回量を決定する制御部を備え、
    この制御部が、巡回化部に巡回量を示す情報を提供するために、この巡回化部に接続されている出力部を有している請求項1に記載のデータ配列装置。
  3. 前記制御部は、緩衝記憶部のデータユニットの記憶容量に基づいて、前記巡回量を決定する請求項2に記載のデータ配列装置。
  4. 第1入力群のデータユニットが、最初に言及した前記緩衝記憶部に格納されている間、第2入力群を記憶するために、前記入力部と前記結合部とに接続した、さらなる緩衝記憶部を備える装置であって、
    前記制御部が、この緩衝記憶部の各データユニットの記憶容量の合計に基づく、巡回量を決定する請求項3に記載のデータ配列装置。
  5. 前記各入力群は、データパケットの先頭要素,本体要素、および末尾要素のうちの1要素である請求項1に記載のデータ配列装置。
  6. 前記各データユニットは、バイトである請求項1に記載のデータ配列装置。
  7. 前記緩衝記憶部の最大データユニット記憶容量は、16データユニットである請求項1に記載のデータ配列装置。
  8. 前記データ経路は、緩衝記憶部を迂回する請求項1に記載のデータ配列装置。
  9. データ配列方法であって、
    デジタルデータユニットの並列形式化された入力群の入力時間列を受信する工程と、
    第2入力群が受信される間に、第1入力群のデータユニットを緩衝記憶部に格納する工程を含む、前記入力列に対して応答して、デジタルデータユニットの並列形式化された出力群の出力時間列を生成する工程とを含んでおり、
    前記生成する工程が、1つの出力群を生成するために、緩衝記憶部に格納されているデータユニットの全てと、第2入力群から選択されたデータユニットとを、並列形式で組み合わせる工程と、
    1つの前記出力群を緩衝記憶部に格納せずに、さらなる追加の処理のために、この1つの出力群を出力する工程とを含み、
    前記組み合わせる工程が、緩衝記憶部に格納されている全てのデータユニットと並列連結するために、第2入力群のデータユニットを巡回させ、第2入力群から選択されたデータユニットの位置を決定するように、第2入力群のデータユニットを巡回させる工程と、
    1つの前記出力群を生成するために、この選択されたデータユニットを、緩衝記憶部に格納されている全てのデータユニットと並列連結する工程とを含むデータ配列方法。
  10. 前記第2入力群のデータユニットを、緩衝記憶部のデータユニットの記憶容量に基づき、巡回させる巡回量を特定する工程を含む請求項9に記載のデータ配列方法。
  11. 前記出力する工程は、1つの前記出力群が緩衝記憶部を迂回する工程を含む請求項9に記載のデータ配列方法。
  12. デジタルデータ処理機を、デジタル通信ネットワークとインターフェースするための装置であって、
    デジタルデータをデータ処理機と交換可能とする第1データポート、
    デジタルデータを通信ネットワークと交換可能とする第2データポート、および、
    この第1および第2データポートの間で接続されているデータ配列装置を備え、
    このデータ配列装置が、デジタルデータユニットの並列形式化された入力群の入力時間列を受信する入力部と、
    デジタルデータユニットの並列形式化された出力群の出力時間列を生成するために、この入力部に接続され、前記入力列に対して応答するデータ配列部と、
    前記出力列を出力するために、このデータ配列部に接続されている出力部とを備え、
    前記データ配列部は、
    第2入力群を入力部において受信する間に、第1入力群のデータユニットを格納するために、入力部に接続されている緩衝記憶部と、
    この緩衝記憶部に格納された全てのデータユニットと、第2入力群の中から選択されたデータユニットとを、並列形式で組み合わせることによって前記出力群のうちの1つを生成するために、緩衝記憶部および入力部に接続されている結合部とを備えており、
    前記データ配列装置が、
    前記1つの出力群を、この緩衝記憶部に格納せずに、出力部に伝送可能とするために、前記結合部および前記出力部に接続されているデータ経路を備えており、
    前記結合部が、選択されたデータユニットを、緩衝記憶部に格納されているデータユニットの全てと並列連結して、1つの出力群を生成するために、第2入力群のデータユニットを巡回させて、この第2入力群から選択されたデータユニットの位置を決定するように、前記入力部に接続されている巡回化部を、この結合部が備えている装置。
  13. 前記結合部が、巡回化部および緩衝記憶部にそれぞれ接続されている入力部と、データ経路に接続されている出力部とを有する選択部を備える請求項12に記載の装置。
  14. 前記データ配列部は、前記巡回化部が第2入力群のデータユニットを巡回させるための巡回量を決定する制御部を備え、
    この制御部が、巡回化部に巡回量を示す情報を提供するために、この巡回化部に接続されている出力部を有している請求項12に記載の装置。
  15. 前記制御部が、緩衝記憶部のデータユニットの記憶容量に基づいて、前記巡回量を決定する請求項14に記載の装置
  16. 第1入力群のデータユニットが、最初に言及した前記緩衝記憶部に格納されている間、第2入力群を記憶するために、前記入力部と前記結合部とに接続した、さらなる緩衝記憶部を備える装置であって、
    前記制御部は、この緩衝記憶部の各データユニットの記憶容量の合計に基づく、巡回量を決定する請求項15に記載の装置。
  17. SONETカード、イサーネットカード、トークンリングカードのうちの1つとして提供されている請求項12に記載の装置。
  18. 前記データ経路が、前記緩衝記憶部を迂回する請求項12に記載の装置。
JP2002560316A 2001-01-26 2002-01-25 データ配列の方法およびその装置 Expired - Lifetime JP3775597B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/771,173 US6813734B1 (en) 2001-01-26 2001-01-26 Method and apparatus for data alignment
US09/771,172 US6965606B2 (en) 2001-01-26 2001-01-26 Method and apparatus for byte rotation
PCT/US2002/002255 WO2002060101A2 (en) 2001-01-26 2002-01-25 Method and apparatus for data alignment

Publications (2)

Publication Number Publication Date
JP2005504449A JP2005504449A (ja) 2005-02-10
JP3775597B2 true JP3775597B2 (ja) 2006-05-17

Family

ID=27118415

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002560316A Expired - Lifetime JP3775597B2 (ja) 2001-01-26 2002-01-25 データ配列の方法およびその装置

Country Status (5)

Country Link
EP (1) EP1360786A2 (ja)
JP (1) JP3775597B2 (ja)
CN (1) CN1498470B (ja)
AU (1) AU2002245320A1 (ja)
WO (1) WO2002060101A2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104834476B (zh) * 2014-02-10 2016-10-19 安华高科技通用Ip(新加坡)公司 基于段结束标记的数据对准的系统和方法
US9707727B2 (en) 2014-04-09 2017-07-18 Nike, Inc. Selectively applied adhesive particulate on nonmetallic substrates

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05134848A (ja) * 1991-03-06 1993-06-01 Fujitsu Ltd 中央処理装置のデータシフト回路
US5410677A (en) * 1991-12-30 1995-04-25 Apple Computer, Inc. Apparatus for translating data formats starting at an arbitrary byte position
DE4238090C1 (de) * 1992-11-11 1994-03-03 Siemens Ag Verfahren und Anordnung zur Rückgewinnung von in Funktionsdatenblöcken übertragenen plesiochronen Signalen
US5638367A (en) * 1995-07-07 1997-06-10 Sun Microsystems, Inc. Apparatus and method for data packing through addition
DE19903366A1 (de) * 1999-01-28 2000-08-17 Siemens Ag Verfahren zum Umsetzen von Nx-STM-1 Signalen in STM-N Signale

Also Published As

Publication number Publication date
WO2002060101A2 (en) 2002-08-01
WO2002060101A3 (en) 2003-09-18
CN1498470A (zh) 2004-05-19
JP2005504449A (ja) 2005-02-10
AU2002245320A1 (en) 2002-08-06
CN1498470B (zh) 2011-06-15
EP1360786A2 (en) 2003-11-12

Similar Documents

Publication Publication Date Title
US7616562B1 (en) Systems and methods for handling packet fragmentation
US7283528B1 (en) On the fly header checksum processing using dedicated logic
US7936758B2 (en) Logical separation and accessing of descriptor memories
US7680116B1 (en) Optimized buffer loading for packet header processing
US6192498B1 (en) System and method for generating error checking data in a communications system
US7290196B1 (en) Cyclical redundancy check using nullifiers
US9654419B2 (en) Fabric channel control apparatus and method
US6799232B1 (en) Automatic byte swap and alignment for descriptor-based direct memory access data transfers
JP2003508954A (ja) ネットワーク・スイッチ及びコンポーネント及び操作方法
JP2003508957A (ja) ネットワーク・プロセッサ処理コンプレックス及び方法
US8824468B2 (en) System and method for parsing frames
GB2511072A (en) Non-deterministic finite state machine module for use in a regular expression matching system
US6357032B1 (en) Method and apparatus for implementing cyclic redundancy check calculation for data communications
US20030118022A1 (en) Reconfigurable data packet header processor
US20040001486A1 (en) Method and apparatus for implementing frame header alterations using byte-wise arithmetic logic units
US7272675B1 (en) First-in-first-out (FIFO) memory for buffering packet fragments through use of read and write pointers incremented by a unit access and a fraction of the unit access
US7239630B1 (en) Dedicated processing resources for packet header generation
US6813734B1 (en) Method and apparatus for data alignment
US20030193962A1 (en) Data link/physical layer packet diversion and insertion
US7158520B1 (en) Mailbox registers for synchronizing header processing execution
US7379467B1 (en) Scheduling store-forwarding of back-to-back multi-channel packet fragments
US20040153586A1 (en) Apparatus and method to receive and decode incoming data and to handle repeated simultaneous small fragments
US7180893B1 (en) Parallel layer 2 and layer 3 processing components in a network router
JP3775597B2 (ja) データ配列の方法およびその装置
US6965606B2 (en) Method and apparatus for byte rotation

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050517

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050817

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20050817

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050826

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051117

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060215

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100303

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110303

Year of fee payment: 5

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110303

Year of fee payment: 5

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120303

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120303

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130303

Year of fee payment: 7