(57)【要約】図には、不規則なデータストリームに対するデータ操作を、連続して満たされたバイト位置を有する規則的なデータストリームを生成するために、データ配列部（４００，７００）の多重段階（４０４，４０６，７０４，７０６）に分配させる工程が記載されている。１つの特定の実施形態では、未配列データシナリオの数は、データストリーム要素の対応付けを使用することにより、減少させられる。また、複雑なデータストリームは、多重化部（４６０，４７０，７６０，７７０，７７５）および簡単な論理を、データ配列部に加えるだけで、簡単なデータストリームに対応付けられる（８３５）。誤り検出および修正のためにデータストリームが符号化または復号化されている、ハードウエアに関連付けられたネットワークプロトコルにおける実施は、検査部および生成部のより高速で、より効果的にパイプライン化された設計を招来する。したがって、この実施は、これら検査部および生成部を、より高い周波数およびより大きな帯域幅設計に対して好適なものとする。
2005504449.tif 000002
【特許請求の範囲】
【請求項１】
デジタルデータユニットの並列形式化された入力群の入力時間列を受信する入力部と、
デジタルデータユニットの並列形式化された出力群の出力時間列を生成するために、前記入力部に接続され、前記入力列に対して応答するデータ配列部と、
前記出力列を出力するために、このデータ配列部に接続されている出力部と、
データ経路とを備え、
前記データ配列部は、
第２入力群が前記入力部において受信される間に、第１入力群のデータユニットを格納するために、入力部に接続されている緩衝記憶部、および、この緩衝記憶部に格納された全てのデータユニットと、第２入力群の中から選択されたデータユニットとを、並列形式で組み合わせることによって前記出力群のうちの１つを生成するために、緩衝記憶部および入力部に接続されている結合部を有しており、
前記データ経路は、前記緩衝記憶部に格納せずに、前記１つの出力群を出力部に伝送可能とするために、前記結合部および前記出力部に接続されているデータ配列装置。
【請求項２】
前記結合部が、前記の１つの出力群を生成するために、前記第２入力群の中から選択されたデータユニットを、前記緩衝記憶部に格納されているデータユニットの全てと並列連結するためのものである請求項１に記載のデータ配列装置。
【請求項３】
前記結合部が、最初に言及した前記入力部および前記緩衝記憶部に、それぞれ接続されている入力部と、前記データ経路に接続されている出力部とを有する選択部を備えている請求項１に記載のデータ配列装置。
【請求項４】
前記結合部が、選択されたデータユニットを、緩衝記憶部に格納されているデータユニットの全てと並列連結して、１つの出力群を生成するために、第２入力群のデータユニットを巡回させて、この第２入力群から選択されたデータユニットの位置を決定するように、前記入力部に接続されている巡回化部をこの結合部が備えている請求項１に記載のデータ配列装置。
【請求項５】
前記データ配列部は、前記巡回化部が第２入力群のデータユニットを巡回させるための巡回量を決定する制御部を備え、
この制御部が、巡回化部に巡回量を示す情報を提供するために、この巡回化部に接続されている出力部を有している請求項４に記載のデータ配列装置。
【請求項６】
前記制御部は、緩衝記憶部のデータユニットの記憶容量に基づいて、前記巡回量を決定する請求項５に記載のデータ配列装置。
【請求項７】
第１入力群のデータユニットが、最初に言及した前記緩衝記憶部に格納されている間、第２入力群を記憶するために、前記入力部と前記結合部とに接続した、さらなる緩衝記憶部を備える装置であって、
前記制御部が、この緩衝記憶部の各データユニットの記憶容量の合計に基づく、巡回量を決定する請求項６に記載のデータ配列装置。
【請求項８】
前記各入力群は、データパケットの先頭要素，本体要素、および末尾要素のうちの１要素である請求項１に記載のデータ配列装置。
【請求項９】
前記各データユニットは、バイトである請求項１に記載のデータ配列装置。
【請求項１０】
前記緩衝記憶部は、入力列における入力群の最大データユニット容量に等しい、最大データユニット記憶容量を有している請求項１に記載のデータ配列装置。
【請求項１１】
前記緩衝記憶部の最大データユニット記憶容量は、１６データユニットである請求項１０に記載のデータ配列装置。
【請求項１２】
前記データ経路は、緩衝記憶部を迂回する請求項１に記載のデータ配列装置。
【請求項１３】
データ配列方法であって、
デジタルデータユニットの並列形式化された入力群の入力時間列を受信する工程と、
第２入力群が受信される間に、第１入力群のデータユニットを緩衝記憶部に格納する工程を含む、前記入力列に対して応答して、デジタルデータユニットの並列形式化された出力群の出力時間列を生成する工程とを含んでおり、
前記生成する工程が、１つの出力群を生成するために、緩衝記憶部に格納されているデータユニットの全てと、第２入力群から選択されたデータユニットとを、並列形式で組み合わせる工程と、
１つの前記出力群を緩衝記憶部に格納せずに、さらなる追加の処理のために、この１つの出力群を出力する工程とを含むデータ配列方法。
【請求項１４】
前記組み合わせる工程が、１つの出力群を生成するために、第２入力群から選択されたデータユニットを、緩衝記憶部に格納されている全てのデータユニットと並列連結する工程を含む請求項１３に記載のデータ配列方法。
【請求項１５】
前記組み合わせる工程が、緩衝記憶部に格納されている全てのデータユニットと並列連結するために、第２入力群のデータユニットを巡回させ、第２入力群から選択されたデータユニットの位置を決定するように、第２入力群のデータユニットを巡回させる工程と、
１つの前記出力群を生成するために、この選択されたデータユニットを、緩衝記憶部に格納されている全てのデータユニットと並列連結する工程とを含む請求項１３に記載のデータ配列方法。
【請求項１６】
前記第２入力群のデータユニットを、緩衝記憶部のデータユニットの記憶容量に基づき、巡回させる巡回量を特定する工程を含む請求項１５に記載のデータ配列方法。
【請求項１７】
前記出力する工程は、１つの前記出力群が緩衝記憶部を迂回する工程を含む請求項１３に記載のデータ配列方法。
【請求項１８】
デジタルデータ処理機を、デジタル通信ネットワークとインターフェースするための装置であって、
デジタルデータをデータ処理機と交換可能とする第１データポート、
デジタルデータを通信ネットワークと交換可能とする第２データポート、および、
この第１および第２データポートの間で接続されているデータ配列装置を備え、
このデータ配列装置が、デジタルデータユニットの並列形式化された入力群の入力時間列を受信する入力部と、
デジタルデータユニットの並列形式化された出力群の出力時間列を生成するために、この入力部に接続され、前記入力列に対して応答するデータ配列部と、
前記出力列を出力するために、このデータ配列部に接続されている出力部とを備え、
前記データ配列部は、
第２入力群を入力部において受信する間に、第１入力群のデータユニットを格納するために、入力部に接続されている緩衝記憶部と、
この緩衝記憶部に格納された全てのデータユニットと、第２入力群の中から選択されたデータユニットとを、並列形式で組み合わせることによって前記出力群のうちの１つを生成するために、緩衝記憶部および入力部に接続されている結合部とを備えており、
前記データ配列装置が、
前記１つの出力群を、この緩衝記憶部に格納せずに、出力部に伝送可能とするために、前記結合部および前記出力部に接続されているデータ経路を備えている装置。
【請求項１９】
前記結合部が、１つの出力群を生成するために、第２入力群から選択されたデータユニットを、緩衝記憶部に格納されている全てのデータユニットと並列連結するためのものである請求項１８に記載の装置。
【請求項２０】
前記結合部が、選択されたデータユニットを、緩衝記憶部に格納されているデータユニットの全てと並列連結して、１つの出力群を生成するために、第２入力群のデータユニットを巡回させて、この第２入力群から選択されたデータユニットの位置を決定するように、前記入力部に接続されている巡回化部を、この結合部が備えている請求項１８に記載の装置。
【請求項２１】
前記結合部が、巡回化部および緩衝記憶部にそれぞれ接続されている入力部と、データ経路に接続されている出力部とを有する選択部を備える請求項２０に記載の装置。
【請求項２２】
前記データ配列部は、前記巡回化部が第２入力群のデータユニットを巡回させるための巡回量を決定する制御部を備え、
この制御部が、巡回化部に巡回量を示す情報を提供するために、この巡回化部に接続されている出力部を有している請求項２０に記載の装置。
【請求項２３】
前記制御部が、緩衝記憶部のデータユニットの記憶容量に基づいて、前記巡回量を決定する請求項２２に記載の装置。
【請求項２４】
第１入力群のデータユニットが、最初に言及した前記緩衝記憶部に格納されている間、第２入力群を記憶するために、前記入力部と前記結合部とに接続した、さらなる緩衝記憶部を備える装置であって、
前記制御部は、この緩衝記憶部の各データユニットの記憶容量の合計に基づく、巡回量を決定する請求項２３に記載の装置。
【請求項２５】
ＳＯＮＥＴカード、イサーネットカード、トークンリングカードのうちの１つとして提供されている請求項１８に記載の装置。
【請求項２６】
前記データ経路が、前記緩衝記憶部を迂回する請求項１８に記載の装置。
【請求項２７】
デジタルデータユニットの並列形式化された入力群の入力時間列を受信する入力部と、
デジタルデータユニットの並列形式化された出力群の出力時間列を生成するために、この入力部に接続され、前記入力列に対して応答するデータ配列部と、
前記出力列を出力するために、このデータ配列部に接続されている出力部とを備え、
前記データ配列部は、
第２入力群が前記入力部において受信される間に、第１入力群のデータユニットを格納するために、入力部に接続されている緩衝記憶部と、
この緩衝記憶部に格納された全てのデータユニットと、第２入力群の全てのデータユニットとを、並列形式で組み合わせることによって、前記入力列において受信されたデータユニットの一時的な並列形式化された群を生成するために、緩衝記憶部および入力部に接続されている結合部とを有するとともに、前記データ配列部は、出力群のうちの１つを生成するように、前記一時的な群を使用するために操作可能であり、
前記データ配列部が、
第３入力群が、入力部において受信される間に、前記一時的な群を格納するための、さらなる緩衝記憶部と、
最初に言及した前記緩衝記憶部に記憶されることなく、一時的な群を、このさらなる緩衝記憶部に転送可能とするために、結合部および前記さらなる緩衝記憶部に接続されているデータ経路とを有しており、
前記結合部が、
このさらなる緩衝記憶部に格納されている全てのデータユニットと、第３入力群から選択されたデータユニットとを並列形式で組み合わせることによって、前記入力列において受信されたデータユニットの、さらなる並列形式化された群を生成するために、このさらなる緩衝記憶部の出力部に接続しているデータ配列装置。
【請求項２８】
前記結合部は、さらなる群を生成するために、前記さらなる緩衝記憶部に格納されている、全てのデータユニットと、前記第３入力群の全てのデータユニットとを、並列形式で組み合わせるために作動でき、
このさらなる群は、さらなる一時的な群であり、
前記データ経路は、このさらなる一時的な群を、最初に言及した前記緩衝記憶部に格納せずに、前記さらなる緩衝記憶部へ伝送可能とし、
このさらなる緩衝記憶部は、第４入力群が、前記入力部で受信される間に、前記さらなる一時的な群を格納するためのものであり、
前記結合部は、前記さらなる緩衝記憶部に格納された、前記さらなる一時的な群の全てのデータユニットと、第４入力群から選択されたデータユニットとを、並列形式で組み合わせることによって、前記入力列において受信されたデータユニットの、さらに並列形式化された群を生成するためのものである請求項２７に記載のデータ配列装置。
【請求項２９】
前記さらなる群が、１つの出力群である請求項２８に記載のデータ配列装置。
【請求項３０】
前記結合部が、前記さらなる群を生成するために、前記さらなる緩衝記憶部に格納されている、全てのデータユニットと、前記第３入力群の全てのデータユニットとを、並列形式で組み合わせるために作動でき、このさらなる群が１つの出力群である請求項２７に記載のデータ配列装置。
【請求項３１】
前記データ配列部が、前記さらなる緩衝記憶部に格納されているデータユニットが、結合部に入力されるように、結合部および前記さらなる緩衝記憶部の出力部に接続されている、さらなるデータ経路を備える請求項２７に記載のデータ配列装置。
【請求項３２】
前記結合部が、最初に言及した前記入力部、および前記さらなるデータ経路に、それぞれ連結されている入力部と、最初に言及した前記データ経路に接続されている出力部とを有する選択部を備える請求項３１に記載のデータ配列装置。
【請求項３３】
前記データ配列部が、前記さらなる緩衝記憶部の出力部に接続されている入力部と、前記さらなるデータ経路に接続されている出力部とを有する、さらなる選択部を備える請求項３２に記載のデータ配列装置。
【請求項３４】
前記さらなる選択部が、最初に言及した緩衝記憶部の出力部に接続されている入力部を備える請求項３３に記載のデータ配列装置。
【請求項３５】
前記データ配列部が、前記さらなる緩衝記憶部の出力部に接続されている入力部と、前記さらなるデータ経路に接続されている出力部とを有する選択部を備える請求項３１に記載のデータ配列装置。
【請求項３６】
前記選択部が、最初に言及した前記緩衝記憶部の出力部に接続されている入力部を有する請求項３５に記載のデータ配列装置。
【請求項３７】
前記結合部が、前記組み合わせ操作を、並列連結操作として実施するためのものである請求項２７に記載のデータ配列装置。
【請求項３８】
前記入力群それぞれが、データパケットの先頭要素、本体要素、および末尾要素のうちの１つである請求項２７に記載の装置。
【請求項３９】
前記本体要素のうちの１つが、部分的な本体要素である請求項３８に記載のデータ配列装置。
【請求項４０】
前記データユニットそれぞれは、バイトである請求項２７に記載のデータ配列装置。
【請求項４１】
前記さらなる群は、前記１つの出力群である請求項２７に記載のデータ配列装置。
【請求項４２】
前記データ経路は、最初に言及した前記緩衝記憶部を迂回する請求項２７に記載のデータ配列装置。
【請求項４３】
データ配列方法であって、
デジタルデータユニットの並列形式化された入力群の入力時間列を受信する工程と、
第２入力群が受信される間に、第１入力群のデータユニットを緩衝記憶部に格納する工程を含む、前記入力列に対して応答して、デジタルデータユニットの並列形式化された出力群の出力時間列を生成する工程とを含んでおり、
この生成する工程が、前記入力列において、受信されたデータユニットの一時的な並列形式化された群を生成する工程と、緩衝記憶部に格納されている全てのデータユニットと、第２入力群の全てのデータユニットとを並列形式で組み合わせる工程とを含んでおり、
最初に言及した前記生成する工程が、前記出力群のうちの１を生成するために、一時的な群を使用する工程を含み、
この使用する工程が、第３入力群が受信される間、前記さらなる緩衝記憶部に前記一時的な群を格納する工程を含み、
最後に言及したこの格納する工程が、最初に言及した緩衝記憶部に格納せずに、このさらなる緩衝記憶部に前記一時的な群を伝送する工程を含み、
この使用する工程が、前記入力列において受信したデータユニットのさらなる並列形式化された群を生成する工程を含み、
最後に言及したこの生成する工程が、前記さらなる緩衝記憶部に格納された全てのデータユニットと、第３入力グループから選択されたデータユニットとを、並列形式で組み合わせる工程を含んでいるデータ配列方法。
【請求項４４】
最後に言及した前記組み合わせる工程が、前記さらなる緩衝記憶部に格納されている、全てのデータユニットと、第３入力群の全てのデータユニットとを並列形式で組み合わせる工程を含み、
前記さらなる群が、さらなる一時的な群であり、
前記使用する工程が、前記入力列において、受信されたデータユニットのさらに並列形式化された群を生成するために、前記さらなる一時的な群を使用する工程を含み、
最後に言及した前記使用する工程が、第４入力群が受信されている間、前記さらなる一時的な群を、前記さらなる緩衝記憶部に格納する工程を含み、
最後に言及した格納する工程が、前記さらなる一時的な群を、最初に言及した前記緩衝記憶部に格納せずに、前記さらなる緩衝記憶部に伝送する工程を含み、
最後に述べた使用する工程は、前記さらなる緩衝記憶部に格納されている、前記さらなる一時的な群の全てのデータユニットと、第４入力群から選択されたデータユニットとを並列形式で組み合わせる工程を含む請求項４３に記載のデータ配列方法。
【請求項４５】
前記さらなる群が、１つの出力群である請求項４４に記載のデータ配列方法。
【請求項４６】
最後に言及した前記組み合わせる工程が、さらなる緩衝記憶部に格納されている、全てのデータユニットと、第３入力群の全てのデータユニットとを、並列形式で組み合わせる工程を含み、
前記さらなる群は、１つの出力群である請求項４３に記載のデータ配列方法。
【請求項４７】
前記さらなる群は、１つの出力群である請求項４３に記載のデータ配列方法。
【請求項４８】
前記伝送する工程は、前記さらなる一時的な群が、最初に言及した緩衝記憶部を迂回する工程を含む請求項４３に記載のデータ配列方法。
【請求項４９】
デジタルデータ処理機を、デジタル通信ネットワークとインターフェースするための装置であって、
デジタルデータを、データ処理機によって交換可能とする第１データポート、
デジタルデータを、通信ネットワークで交換可能とする第２データポート、および、
この第１データポートと第２データポートとの間に接続されているデータ配列装置を備え、
このデータ配列装置は、デジタルデータユニットの並列形式化された入力群の入力時間列を受信する入力部と、この入力部に接続され、デジタルデータユニットの並列形式化された出力群の出力時間列を生成するために、この入力列に対して応答するデータ配列部と、この出力列を出力するために、このデータ配列部に接続されている出力部とを有しており、
このデータ配列部が、
第２入力群が、入力部において受信されている間に、第１の入力群のデータユニットを格納するために、上記入力部に接続されている緩衝記憶部と、
この緩衝記憶部に格納されている全てのデータユニットと、第２入力群の全てのデータユニットとを、並列形式で組み合わせることによって、前記入力列において受信されたデータユニットの一時的な並列形式化された群を生成するために、緩衝記憶部および入力部に接続されている結合部とを有するとともに、このデータ配列部は、この一時的な群を、出力群の１つを生成するように使用するために作動可能であり、
このデータ配列部が、
第３入力群が、入力部において受信されている間に、一時的な群を格納するさらなる緩衝記憶部と、
この一時的な群を、最初に言及した前記緩衝記憶部に格納せずに、さらなる緩衝記憶部に伝送可能とするために、結合部およびさらなる緩衝記憶部に接続されている、データ経路とをさらに備え、
この結合部が、さらなる緩衝記憶部に格納されている全てのデータユニットと、第３入力群から選択されたデータユニットとを並列形式で組み合わせることによって、入力列において受信したデータユニットの並列形式化された、さらなる群を生成するために、さらなる緩衝記憶部の出力部に接続されている装置。
【請求項５０】
ＳＯＮＥＴカード、イサーネットカードおよびトークンリングカードのうちの１つとして提供されている請求項４９に記載の装置。
【請求項５１】
データ経路が、最初に言及した前記緩衝記憶部を迂回する請求項４９に記載の装置。
【請求項５２】
前記データ配列部が、前記さらなる緩衝記憶部に格納されているデータユニットを、結合部に入力できるように、この結合部とこのさらなる緩衝記憶部の出力部とに接続されている、さらなるデータ経路を有する請求項４９に記載の装置。
【請求項５３】
前記結合部が、最初に言及した入力部、および前記さらなるデータ経路にそれぞれ接続されている入力部と、この最初に言及したデータ経路に接続されている出力部とを有する選択部を備える請求項５２に記載の装置。
【請求項５４】
前記データ配列部が、前記さらなる緩衝記憶部の出力部に接続されている入力部と、前記さらなるデータ経路に接続されている出力部とを有するさらなる選択部を備える請求項５３に記載の装置。
【請求項５５】
前記さらなる選択部が、最初に言及した前記緩衝記憶部の出力部に接続されている入力部を備える請求項５４に記載の装置。
【請求項５６】
前記データ配列部が、前記さらなる緩衝記憶部の出力部に接続されている入力部と、前記さらなるデータ経路に接続されている出力部とを有する選択部を備える請求項５２に記載の装置。
【請求項５７】
前記選択部が、最初に言及した前記緩衝記憶部の出力部に接続されている入力部を有する、請求項５６に記載の装置。
【請求項５８】
前記結合部が、上記組み合わせ操作を、並列連結操作として実施するためのものである請求項４９に記載の装置。
【請求項５９】
前記入力群それそれが、データパケットの先頭要素、本体要素、および末尾要素のうちの１要素である請求項４９に記載の装置。
【請求項６０】
前記本体要素の１つは、部分的な本体要素である請求項５９に記載の装置。
【請求項６１】
前記さらなる群は、１つの出力群である請求項４９に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークシステムの分野に関するものであり、特に、ネットワークシステムにおいて使用されるデータ配列部（data aligners）に関するものである。
【０００２】
（背景）
インターネットは、コンピュータシステムの集合として、簡易化して示すことができる。なお、このコンピュータシステムは、ネットワーク（例えば、伝送線、スイッチ、および、ルータ）により相互接続されており、コンピュータシステム間でデータを伝送可能とする。また、このデータは、一般的に、ネットワーク内を、データ経路に沿って、データパケットの形状で伝送されるものである。このデータ経路の重要な特徴としては、ビット幅が挙げられる。このビット幅とは、データ経路において、同時に操作または送信されるビットの数である。また、データ経路のビット幅は、クロック速度に応じて、その帯域幅を決定する。なお帯域幅とは、どのくらの速度でデータ経路をデータが流れるかということに関する指標である。デジタルシステムにおいて、帯域幅は、データ速度として、１秒あたりのビット数（ｂｐｓ）で表される。
【０００３】
かつて、データは、帯域幅性能の制限された銅線伝送線を用いる、従来の普通の電話システム（Plain-Old Telephone System（ＰＯＴＳ））、または、公衆交換電話網（Public Switched Telephone Network（ＰＳＴＮ））によってのみ搬送されていた。その後、高帯域幅伝送線を用いた、他の種類のネットワークが開発された。このネットワークとは、所定の時間により多くのデータ量を伝送できる（高ｂｐｓ）、例えば、総合デジタル通信網（Integrated Services Digital Network（ＩＳＤＮ））などである。ＩＳＤＮは、狭周波数帯加入回線における一般的なＰＳＴＮの銅線に対して、デジタル伝送を提供する。
【０００４】
ところで、インターネットにおけるデータの交通量が、爆発的に増加し、倍増した場合、より高い帯域幅が必要とされる。そこで、この帯域幅を増大させる必要性を満たすための解決策としては、より高いクロック速度と、より幅の広いデータ経路の２つの解決策が挙げられる。そこで、システム設計者は、より高いクロック速度によって、データ経路を運用することによる技術の進歩を売り物としている。なお、このシステム設計者は、データ経路の幅をより広くするように、ビット幅も広げている。また、これらシステムは、データ経路の幅がより広いものであるにもかかわらず、従来のシステム、つまり、狭いデータ経路であり、より初期に設計された、古いシステムにも適合していなければならない。ところが、幅がより広いデータ経路を使用すると、データストリーム（data stream）が不規則になることがある。
【０００５】
また、データ経路に関連する他の重要なパラメータとしては、データ経路においてデータを伝送するために使用されるネットワークおよびプロトコルの種類が挙げられる。ここで、コンピュータシステムは、様々なネットワーク（インターネットプロトコル（ＩＰ）ネットワークや、同期光網（ＳＯＮＥＴ）など）を使用して相互に通信する。なお、このＳＯＮＥＴは、光学媒体においてデータを同期伝送するための米国基準である。また、ＳＯＮＥＴと同等の国際的規格としては、同期デジタル・ハイアラキ（synchronous digital hierarchy）（ＳＤＨ）がある。双方とも、デジタルネットワークが、国際的に相互接続可能であり、従来からある伝送システムが光学媒体を利用することができるようにするための規格を保証する。
【０００６】
また、コンピュータシステムは、ネットワークアダプタ(network adapters)のような、回路網に関連したネットワークプロトコルを用いて、誤り検出および修正を目的として、ネットワークで伝送されるデータを符号化および復号化する。また、選択バイト（selective byte）の除去および追加は、様々なプロトコル実装や、相互接続網仕様書（internet working specifications）において当然のことである。これら２つの要素は、有効かつ操作が簡単になるように、まとめられ配列される必要があった、これまでの規則的なデータストリームから、任意のデータストリームを生成させることにつながる。そして、データストリームを規則的に生成することによって、データ伝送時間がより短くなるため、回線帯域幅を効果的に使用できる。さらに、規則的なデータストリームは、操作がより簡単であり、そして、逐次制御方式（pipelining）に対しても有効な助けとなる。さらに、取り出しと蓄積とが容易であるこれらの要素は、ネットワーク回路およびそのシステムにおいて、非常に重要となる。なぜなら、これらの要素は、顧客および市場にとって重要な識別パラメータ（differentiating parameters）に影響を与えるからである。
【０００７】
任意のデータストリームを、規則的なデータストリームに配置させるように働くある種の回路は、データ配列部（data aligner）として公知である。具体的には、データ配列部は、様々なビットサイズの未配列データを受け取り、データを配列して、圧縮したバイトサイズを得る。ここで、従来のいくつかのデータ配列部にある１つの問題としては、このデータ配列部が、できるだけ多くの未配列データシナリオ（unaligned data scenarios）に対処するように、かなりの数の論理（ロジック）を、多段階設計の第１段階に含むことが挙げられる。また、いくつかの先行技術のデータ配列部は、これらのデータ配列部が、出力選択多重化部（output selection multiplexer）の出力を、中間緩衝記憶部（intermediate buffer）にフィードバックするため、設計の第１段階において、論理が混雑状態となってしまうという別の問題も生じる。なぜならば、このような従来の解決策は、出力として送り出すために、あるパケットにおいて十分なデータがないと分かった場合、連接データ（concatenated data）を実行し、復元させるよりもむしろ、中間緩衝記憶部に連接データを保持する傾向があるからである。このような方法は、設計するのが困難なだけではなく、データ配列部の第１段階における処理時間がより長くなってしまい、データ配列部が作動する周波数を制限することとなる。
【０００８】
（発明の概要）
本発明は、バイトの巡回（byte rotation）のための方法およびその装置に関するものである。特定の一実施形態では、複数のバイトを、第１緩衝記憶部に受信する。なお、この第１緩衝記憶部は、データを含む複数バイトの相当数に匹敵する大きさを有している。また、この方法は、制御部によって、少なくとも１クロックサイクル（clock cycle）で、複数バイトを巡回させる前に、この複数バイトの状態を特定する工程と、巡回化部（rotator）において、この状態に基づき、複数バイトを巡回させることに関する巡回量（a rotate amount）を予測する工程とを含むものである。
【０００９】
また、別の特定の実施形態では、上記方法は、次のクロックサイクルにおいて第１緩衝記憶部に存在するバイトの第１数を予測する工程を含んでいてもよい。この方法では、第２緩衝記憶部から受信するビットの第２数の巡回量を、この予測に基づき計算する工程をさらに含んでいる。なお、この計算は、現時点のクロックサイクル（current clock cycle）において演算される。
【００１０】
また、特定の一実施形態では、上記装置は、複数のクロックサイクルを有するクロック信号を、受信するために接続されている第１緩衝記憶部、制御部、この制御部と第１緩衝記憶部とに接続されている巡回化部を有している。この巡回化部は、入力を受信し、第１出力を生成するために接続された第１巡回化回路（a first rotation circuit）を有している。また、巡回化部は、巡回化回路の入力と第１出力とを受信する第１多重化部(multiplexer)を備えている。この第１多重化部は、制御部から受信する第１巡回量制御信号（a first rotate amount control signal）に基づいて、入力と第１出力との間で選択を行う。なお、この第１巡回量制御信号は、次のクロック信号における第１緩衝記憶部に残っているバイト数を予測することにより特定できる。
【００１１】
本発明のさらなる特徴および長所を、添付の図および以下の詳しい説明により明らかにする。
【００１２】
本発明は、データ配列の方法および装置に関するものである。この装置は、複数の緩衝記憶部の間に接続されている複数の回路素子段階(circuitry stages)を有している。より後の段階の回路素子、および、対応する緩衝記憶部は、より初期段階の（earlier stage）回路素子の作動時間を低減するように、配列したデータパケットを割り当てるために使用される。
【００１３】
特定の実施形態では、上記装置は、第１緩衝記憶部に接続している第１段階の回路素子を有している。この第１段階の回路素子は、第１緩衝記憶部に接続している巡回化部、この巡回化部と接続している制御部、および、この制御部と接続している第１多重化部とを備えている。また、この装置は、巡回化部と接続している第２緩衝記憶部、および第２緩衝記憶部と接続されている第２段階の回路素子を備える。また、この第２段階の回路素子は、第２多重化部をさらに備えている。さらに、第３緩衝記憶部が、第２段階の回路素子に接続されている。
【００１４】
また、一実施形態では、上記方法は、複数バイトを有する第１データ要素を受信する工程と、データを含む複数バイトの第１数を特定する工程とを含んでいる。さらにこの方法は、複数バイトの全てにデータを含む場合、第１データ要素を操作せずに送信し、複数バイトの全てにデータを含んでいないバイトがある場合、データを保持する工程を含んでいる。
【００１５】
また、他の実施形態では、上記方法は、複数バイトの位置の中から空きバイトの位置を有する先頭（ヘッド）要素（head element）を受信する工程と、続く第１の本体（ボディ）要素（body element）を受信する工程とを含む。さらに、この方法は、先頭要素と続く第１の本体要素とを組み合わせて、この続く第１の本体要素からのデータにより、この先頭要素の空きバイトの位置を満たすことによって、第１の圧縮要素（packed element）を生成するように、この先頭要素において操作する工程を含む。なお、この第１の圧縮要素は、複数バイトの位置を有している。また、この方法は、第１圧縮要素の複数バイトの位置が、この操作により満たされた場合、第１圧縮要素を伝送する工程をさらに含んでいる。
【００１６】
さらにまた、他の実施形態では、上記方法は、不連続なデータストリームのバイトの第１数を受信する工程と、バイトの第１数を、第１および第２緩衝記憶部から第３緩衝記憶部に送る工程とを含んでいる。なお、このバイトの第１数は、所定数未満のバイト数である。また、第１緩衝記憶部は、第２緩衝記憶部に接続されており、この第２緩衝記憶部は、第３緩衝記憶部に接続されている。また、この方法は、バイトの第２数を受信する工程と、第２緩衝記憶部から第３緩衝記憶部にバイトの第１数を与える工程とを含んでいる。また、この方法は、バイトの第１数と第２数との合計が、所定の数未満である場合、第３緩衝記憶部から第２緩衝記憶部にフィードバックする工程をさらに含んでいる。
【００１７】
本発明のさらなる特徴と利点とは、添付の図および以下の詳細な説明により明らかとなる。
【００１８】
（図面の簡単な説明）
本発明は、添付の図面の図に例を挙げて説明されているが、これに制限されるものではない。
【００１９】
図１は、データ配列部の一実施形態を含む、デジタル処理システムを示す図である。
図２は、データ配列部の一実施形態を含む、ネットワークインターフェースデバイス（network interface device）を示す図である。
図３は、パケット構造の一実施形態と、対応する例示のバイト使用可能（byte enables）を示す図である。
図４は、データ配列部の一実施形態を示す図である。
図５は、データ配列の方法の一実施形態を示す図である。
図６は、一実施形態における、複雑なデータストリームを簡単なデータストリームに対応付けた図表である。
図７は、データ配列部の代替の実施形態を示す図である。
図８は、他の実施形態のデータ配列方法を示す図である。
図９は、巡回化部の実施形態を示す図である。
図１０は、巡回した量と多重化部制御ベクトルの値との関係の一実施形態を示す表である。
図１１は、実施例であって、入力に基づく巡回化部の出力と、巡回量とを示す表である。
【００２０】
（詳細な説明）
以下の説明では、本発明が完全に理解されるように、特定の部品、デバイス、方法などの例として、多くの具体的な詳細を記載している。しかしながら、当業者が、本発明を実施するために、これら具体的に記載された詳細を必須としないことは明らかである。また、他に例を挙げる場合では、本発明を不必要に分かりにくくしないように、公知の材料、または、方法については詳しく説明していない。
【００２１】
図表では、連続して満たされたバイトからなる規則的なデータストリームを生成するために、不規則なデータストリームに対するデータ操作を、データ配列部の多段階にわたり分配することに関して説明されている。データ操作の分配によって、追加のデータバイト（data bytes）を受信するための第１段階回路素子を起動させるように、いくつかのデータ操作のための後段階の回路素子を利用することで、データ配列部は、より高い周波数で機能できる。
【００２２】
また、特定の一実施形態では、未配列のデータシナリオの数は、データストリーム要素の対応付けを使用することにより、低減される。また、複雑なデータストリームは、多重化装置と、論理ゲートおよびデータ配列装置の制御出力の組み合わせとを追加するだけで、簡単なデータストリームに対応付けられる。
【００２３】
ただし、図表では、１６バイトデータ要素について説明しているが、この図表を、他のデータ要素バイトサイズ（３２バイト、８バイト、および、４バイトなど）にも適用できる。代替の実施形態では、ここに説明した図表において、構成可能なパラメータである様々なデータ幅で適用してもよい。なお、構成要素を接続する、ここで説明した「線」は、単一ビット線（single bit lines）、多重ビット線(multiple bit liens)、または、バスでもよい。
【００２４】
図１は、デジタル処理システム１００の一実施形態を示す。このデジタル処理システム１００は、例えば、ワークステーション、パーソナルコンピュータ、サーバなどであり、この中に、データ配列部１５０が装備されている。また、デジタル処理システム１００は、情報を通信するために、バスまたは他の通信手段１０５を備えている。そして、このデジタル処理システム１００は、情報を処理し、ネットワークインターフェースデバイス１４０へのデータパケットの動き、およびネットワークインターフェースデバイス１４０からのデータパケットの動きを制御するために、バス１０５に接続されている処理部１１０等の処理手段を有している。また、処理部１１０は、汎用処理装置（例えば、モトローラ（登録商標）パワーＰＣプロセッサ、または、インテル（登録商標）ペンティアム（登録商標）プロセッサ）、特定業務用処理装置（例えば、デジタル信号プロセッサ（ＤＳＰ））、および、制御装置などの１つ以上の処理装置を示している。
【００２５】
さらにまた、デジタル処理システム１００は、システム記憶部１２０を備えている。このシステム記憶部１２０は、情報（例えば、パケット）や、処理装置１１０によって実行される指示を格納するために、バス１０５に接続されている、ランダムアクセスメモリー（ＲＡＭ）、または他の動的記憶装置を備えている。そして、システム記憶部１２０は、処理部１１０による指示が実行されている間に、一時的な変数や、他の中間情報を記憶するために使用する。また、システム記憶部１２０は、読み出し専用記憶素子（ＲＯＭ）および／または静的情報および処理部１１０用の指示を記憶するために、バス１２０に接続されている他の静的記憶装置をさらに備えている。
【００２６】
１つ以上のネットワークインターフェースデバイス（ネットワークインターフェースデバイス１４０〜ネットワークインターフェースデバイスＮ）は、バス１０５に接続されている。代替の実施形態では、ネットワークインターフェースデバイス１４０が、デジタル処理システム１００の外部に備えられていてもよい。ネットワークインターフェースデバイス１４０は、エラー検出および修正を目的として、ネットワーク１６０において伝送されたデータを符号化および復号化するために、回路素子に関連するネットワークプロトコルを有する。また、一実施形態では、ネットワークインターフェースデバイス１４０は、規則的なデータストリームを生成するための回路素子を備えている。また、ネットワークインターフェースデバイス１４０は、データ配列部１５０を備える。なお、データ配列部１５０は、以下に説明するように、任意のデータストリームを規則的なデータストリームに配置するように働く。
【００２７】
特定の設計環境（particular design environment）における実施に応じて、このネットワークインターフェースデバイス１４０は、ＳＯＮＥＴカード、イサーネットカード、トークンリングカード、またはネットワーク１６０に通信リンクを提供するための他の種類のインターフェースでもよい。なお、ＳＯＮＥＴおよびイサーネットは、技術的に知られているので、これについては詳しく説明しない。
【００２８】
また、このデジタル処理システム１００は、単にシステムの一例を示しているだけであり、様々な異なる構成および設計を有していてもよいし、本実施例と共に使用されるものであってもよいということは認められるところであろう。例えば、いくつかのシステムは、大抵、多重バス（周辺バス、専用貯蔵バス（dedicated cache bus）など）を有している。他の例として、デジタル処理システム１００は、バス１０５と接続されている制御部（図示せず）を有しており、ネットワークインターフェースデバイス１４０へのデータパケットの動き、および、ネットワークインターフェースデバイス１４０からのデータパケットの動きにおいて、処理部１１０を補助している。また、代替の実施形態では、デジタル処理システムは、インターフェースを網状に繋ぐためのネットワークを提供する、ネットワークにおける中間ノード（例えば、スイッチまたはルータ）であってもよい。このような中間ノードは、類似ネットワーク間、または、異なるネットワーク間に、インターフェースを提供している。例えば、ネットワーク媒体１６０は、光ファイバー媒体でもよく、ネットワーク媒体Ｎは、伝送線媒体でもよい。
【００２９】
図２は、データ配列部を備えるネットワークインターフェースデバイスの一実施形態を示す。ネットワークインターフェースデバイス２１０は、図１のネットワークインターフェースデバイス１４０であってもよい。パケット形状のデータは、データ経路に沿って、システム２０５から、ネットワーク２９５へ、インターフェースデバイス２１０を介して伝送される。このデータ経路は、制御されたインターフェースの下で、一方（例えば線２１１）から他方（例えば線２３６）に、データを操作して、渡す、ネットワークインターフェースデバイスの構成部分である。また、ネットワークインターフェースデバイス２１０は、ネットワーク２９５における伝送を招来するパケットプロトコル構造(a packet protocol structure)に、データを形式化して、すなわちフォーマットに従って並べる。なお、このパケットプロトコルは、パケット内の情報配列を指定する。例えば、一実施形態において、システム２０５は、クライアントまたは、サーバでもよく、ネットワーク２９５は、上記のように、ＳＯＮＥＴ、または、イサーネットでもよい。
【００３０】
パケットは、出力方向に、システム２０５から、ネットワークインターフェースデバイス２１０を介して、ネットワーク２９５に伝送される。また、パケットは、入力方向に、ネットワーク２９５から、ネットワークインターフェースデバイス２１０を介してシステム２０５に受信される。また、一実施形態では、ネットワークインターフェースデバイス２１０が、先入れ先出し（ＦＩＦＯ）記憶部２２０および２４０、データ配列部２３０および２５０、パケット検査生成部２３５、パケット誤り検査部２４５、カプセル化部（encapsulator）２２５、および、脱カプセル化部（decapsulator）２５５を備えている。
【００３１】
まず、パケットは、システム２０５から、線２１１を通して、ＦＩＦＯ２２０に受信される。なお、ネットワークインターフェースデバイス２１０の処理能力（throughput capacity）よりも速くパケットが到着すると、伝送が中断されることがある。ＦＩＦＯ２２０は、データストリームにおけるパケットの超過を処理するために、システム側２０５から受信したデータストリームを緩衝（バッファリング）するように働く。同じように、ＦＩＦＯ２４０は、ネットワーク２９５から受信するデータストリームを緩衝する。また、代替の実施形態では、他の手段によって緩衝が行われてもよい。他の手段とは、例えば、ネットワークインターフェースデバイス２１０に接続されている記憶部（例えば、ＲＡＭ、ＦＩＦＯ）、または、システム２０５（例えば、図１のシステムメモリ１２０）に存在する記憶部を用いる手段である。
【００３２】
パケットは、ＦＩＦＯ２２０から、線２２４を介して、カプセル化部２２５へ伝送される。カプセル化部２２５は、パケットを、フレーム指定（framing specification）に応じてフレームとする（frame）。このフレーム指定は、データが区分に「フレームとされる」ように、「データビット」を含む「プロトコルビット」の指定である。このフレーム指定により、受信部は、データストリームに沿った点で同期化できる。
【００３３】
データストリームパケットは、カプセル化部２２５から、線２２９を介して、データ配列部２３０に出力される。データ配列部２３０は、ちょうど、任意に到着している受信されたパケットのバイトを取り入れる。そして、データ配列部２３０は、様々なバイトサイズの未配列データを受信し、データを配列して圧縮バイトとする。データ配列部２３０は、配列されたデータパケットを、線２３４を介して、パケット検査生成部２３５へ出力する。パケット内にあり、パケット誤り検査部に出力されるバイト要素は、圧縮操作（packing operation）のため、必ずしも有効データ（valid data）を含んでいない。従って、このような場合、データ配列部２３０は、さらに、制御信号を、線２３３を介して、パケットにあるどのバイトが有効であるかを示すパケット検査生成部２３５に伝送する。また、データ配列部２３０は、他の制御信号（ＳＯＰや、ＥＯＰ制御信号など）も、パケット検査生成部２３５に伝送する。なお、データ配列部２３０の操作について以下に詳しく説明する。
【００３４】
一実施形態において、パケット検査生成部２３５は、データストリームの正確度（the accuracy）を確かめるために使用される。パケット検査生成部２３５は、受信システムのパケット誤り検査部（例えば、パケット誤り検査部２４５）により使用されるデータストリームに加えて、出力も生成する。なお、このパケット誤り検査部は、パケットが良好であるかどうか、あるいは、データストリームに誤りが存在するかどうかを判断するものである。また、データストリームは、ネットワーク２９５に、線２３６を介して伝送される。いくつかのパケット（例えば、イサーネットパケットなど）は、３２ビットの巡回冗長検査を有している。また、一実施形態では、自動誤り検出機能を提供するために、誤り検出符号（３２ビットの巡回冗長性検査（ＣＲＣ）など）を、パケットの最後に付け加える。ただし、３２ビットＣＲＣデータは、パケットのどの場所に存在していてもよい。ＣＲＣ符号などの誤り検出符号は、破損を検出するために、データブロックから導出される数である。代替の実施形態では、ＣＲＣ以外の誤り検出符号とその方法とを使用してもよい。
【００３５】
パケット誤り検査を使用して、ネットワーク２９５に接続されている受信器システム（図示せず）は、データパケットからの検査符号を再計算し、それをもともと伝送された検査値と比較することにより、伝送誤りを検出できる。ただし、パケット検査生成部２３５は、伝送段階の最後に配置される必要はなく、データストリーム経路に沿ったどの場所に配置されてもよい。
【００３６】
ネットワーク２９５から受信されるパケットは、線２５６を介して脱カプセル化部２５５に入力される。この脱カプセル化部２５５は、データストリームパケットから、フレームデータ（framing data）を取り除く。そして、フレームデータが、データストリームから取り除かれると、データストリームが、不規則（例えば、不連続）になることがある。このデータストリームは、線２５１を介して、データ配列部２５０に入力される。データ配列部２５０は、受信されたデータストリームにある不連続なバイトを集め、連続したデータストリームを得るために、バイトをパケットに圧縮または、配列するように働く。
【００３７】
データ配列部２５０の出力は、線２４６を介してパケット誤り検査部２４５に与えられる。なお、パケット誤り検査部２４５は、データストリームの正確度を確かめるために使用してもよい。パケット誤り検査部２４５は、受信したデータストリームを用いて符号を生成し、パケットが良好であるかどうか、または、データストリームに誤りが存在しているかどうかを判断するために生成した符号を、データストリームに組み込まれている受信された符号と比較する。パケット誤り検査部２４５の出力は、ＦＩＦＯ２４０に線２４１を介して送信される。ＦＩＦＯ２４０は、データストリームの出力を、線２４２を介してシステム２０５に緩衝するように働く。
【００３８】
ＦＩＦＯ、パケット誤り検査部、カプセル化部、および脱カプセル化部は、技術的に公知なので、その機能については詳しく説明しない。なお、インターフェースデバイス２１０は、入力方向と出力方向との両方におけるデータの流れにおける操作を単に説明するために、別々の構成部品により示されてきた。代替の実施形態では、ネットワークインターフェースデバイス２１０の構成部品は、１つ以上の集積回路に組み込まれていてもよい。
【００３９】
図３は、パケット構造の一実施形態、および対応するバイト使用可能の例を示す。パケット３１０は、１つ以上の要素３２０，３３０，３４０，および３５０を備えている。この各パケット要素は、１つ以上のバイト（例えば、１６バイト）を有することもある。以下の説明では、１６バイトのパケットの要素サイズ（element size）を例として使用しているが、他のパケット要素のバイトサイズ（例えば、３２バイト，８バイト，および４バイト）を使用してもよい。
【００４０】
パケット３１０は、単一の先頭要素３２０、単一の末尾要素（a single tail element）３５０、および、１つ以上の本体要素（例えば、要素３３０および３４０）を含む本体３３５を備えている。先頭要素３２０は、パケットの始まりを示し、そのバイト位置は、データビットにより部分的、または、全体が満たされている。また、先頭３２０は、データビットによって、先頭要素３２０のバイトの部分または全体を満たしているパケット開始（ＳＯＰ）制御信号３２５の表明により特定される。
【００４１】
末尾要素３５０は、パケットの末尾を意味し、そのバイト位置は、データビットによって、部分的、または、全体が満たされている。また、末尾要素３５０は、この末尾要素３５０のバイトをデータビットによって、部分的、または、全体に満たすパケット終了（ＥＯＰ）制御信号３５５の表明により特定される。また、本体要素は、この要素の全てのバイト位置が、データビットにより満たされている（例えば、本体要素３４０）。また、部分的な本体とは、本体要素（例えば、要素３３０）が、先頭要素３２０でもなく、末尾要素３５０でもないデータビットにより部分的に満たされている本体要素のことである。ホール（hole）は、パケット３１０内の空き要素、または、パケット３１０と、他のパケット（図示せず）との間の空き要素である。
【００４２】
また、図３は、パケット要素に対応している例として、バイト使用可能（byte enables）３２１、３３１、３４１、および、３５１を示す。「１」のバイト使用可能は、データが、対応しているバイト位置に存在することを表す。また、バイト使用可能「０」は、データが、対応しているバイト位置に存在しないことを表す。このバイト使用可能は、図４〜７を参考にして以下に説明するように、緩衝記憶部の制御部に送信される。
【００４３】
図４は、データ配列部の一実施形態を示す。この一実施形態では、データ配列部４００が、中間緩衝記憶部４２０によって分かれている２段階（段階４０４および４０６）のパイプラインを備えている。なお、中間緩衝記憶部４２０は、段階４０４と４０６との間での全ての未送信のデータを、蓄積するように働く。また、データ配列装置４００は、段階４０４の入力部と段階４０６の出力部とに、それぞれ接続されている緩衝記憶部４１０および４３０を備えている。一実施形態においては、緩衝記憶部４１０，４２０，および４３０が、レジスタである。この緩衝記憶部４１０，４２０，および４３０は、前の段階から受信するデータを蓄積するように働く。また、データ配列部４００は、以下に説明するように、パケット要素に関するバイト使用可能を蓄積するように働く、制御緩衝記憶部４１５，４２５，および４３５をさらに含んでいる。なお、この緩衝記憶部、およびレジスタは、技術的に知られているので、詳しい説明は省略する。
【００４４】
また、一実施形態において、例えば、緩衝記憶部４１０，４２０，および４３０は、１６バイトのサイズである。代替の実施形態では、緩衝記憶部４１０，４２０，および４３０は、システムにおいて使用される特定のバイト構成（byte scheme）に応じて、他のサイズ（例えば、３２バイト、８バイト、および、４バイト）であってもよい。
【００４５】
各緩衝記憶部４１０，４２０，および４３０は、ぞれぞれ、線４８１を介してクロック信号を受信するために接続されている、クロック入力部を備えている。このクロック信号は、データ信号から復元されるか、あるいは、クロック生成部（図示せず）により生成される。また、クロック信号は、多重クロックサイクル（multiple clock cycles）を含んでおり、この多重クロックサイクルで、データ配列部４００における処理タイミング（timing）をとる。
【００４６】
この緩衝記憶部４１０は、データパケットを受信するために、線４１１を介して接続されている入力部を有している。また、緩衝記憶部４１０は、データパケットを、巡回化部（rotator）４４０および制御部４５０に、それぞれ線４１２および４１３を介して出力する。この巡回化部４４０の出力部は、線４４１を介して、中間緩衝記憶部４２０と、多重化部４６０とに接続されている。中間緩衝記憶部４２０の出力部は、線４２１を介して多重化部４７０のデータ入力部に接続されている。多重化部４７０の出力部は、線４７１を介して緩衝記憶装置４３０に接続されている。
【００４７】
また、制御部４５０は、バイトデータを渡すように、多重化部４６０および４７０の動作を制御するために用いられる。また、この制御部４５０は、巡回化部４４０の動作を制御するためにも用いられる。さらに、制御部４５０は、ＳＯＰ、ＥＯＰなどの外部制御信号を生成するためや、（図３に示すような）バイト使用可能制御信号（byte enable control signals）を生成するために用いられる。なお、この制御部４５０は、制御出力部をさらに備えており、この制御出力部は、線４５９を介して巡回化部４４０と、線４５２を介して多重化部４６０とそれぞれ接続されているとともに、線４５３を介して多重化部４７０の制御入力部に接続されている。
【００４８】
巡回化部４４０は、制御部４５０による制御を受けながら、１つ以上のバイトを、要素の異なるバイトスロット（byte slots）、すなわちバイト位置に巡回させるように働く。また、一実施形態では、制御部４５０が、巡回量制御信号（a rotate amount control signal）を、線４５２を介して巡回化部４４０に与えてもよい。巡回化部４４０の出力は、入力データとして、緩衝記憶部４２０に、多重化部４８０を通して与えられ、また、それは、入力として、多重化部４６０に与えられる。この巡回量制御信号の機能は、緩衝記憶部４１０の内容が巡回させられる量を決定することである。その結果として、もしあるならば、緩衝記憶部４１０の残部（remainder）と、もし、あるならば緩衝記憶部４２０の残部部とが連結される。そして、緩衝記憶部４２０の内容は、適切に配列されたバイトとなる。この巡回量を決定するために、制御部４５０は、様々なバイトの状態を、実際の巡回が起こる１クロックサイクル前に認識する。
【００４９】
第１バイト状態では、緩衝記憶部４１０の内容は、緩衝記憶部４２０に、パススルー方法(pass through manner)により書き込まれている。つまり、緩衝記憶部４１０のバイト０が、緩衝記憶部４２０のバイト０へ行き、緩衝記憶部４１０のバイト１が、緩衝記憶部４２０のバイト１へ行くなどのようには、バイトの経路は交差していない。このバイト状態は、緩衝記憶部４２０が空きであるのか、またはパケットレベルの細分性（packet level granularity）を維持することが必要であるＥＯＰ信号を、緩衝記憶部４２０が含んでいるのかどうかを決定する場合に生じる。また、このバイト状態は、緩衝記憶部４２０の状態とは関係なく、緩衝記憶部４１０が、ＳＯＰ信号を含む場合にも生じてもよい。このように、緩衝記憶部４１０と緩衝記憶部４２０との間に依存関係はない。どちらの場合にも、データバイトは配列されなくてもよく、バイトのデータは、パススルー方法により書き込まれる。なお、次のサイクルでの巡回量は、１６から緩衝記憶部４１０におけるバイト数を引いたものと予測できる。
【００５０】
第２バイト状態では、緩衝記憶部４１０の全１６バイトが、緩衝記憶部４２０に書き込まれ、次のサイクルでは、緩衝記憶部４２０が、満たされているということを含む。この場合での巡回量は、０と予測され、同じくバイト経路（byte lane）が、交差していないことを意味している。
【００５１】
第３バイト状態では、バイトは、緩衝記憶部４１０から緩衝記憶部４２０に書き込まれない。このような状態は、緩衝記憶部４１０が、ＥＯＰ信号を含んでいることを示しており、緩衝記憶部４１０および４２０の状態は、データが、緩衝記憶部４１０と４２０との間を通り抜けて、緩衝記憶部４３０に直接渡されるため、緩衝記憶部４１０に入力する次のデータをシフトする必要はない。この場合の循環量を、０と予測できる。
【００５２】
第４バイト状態では、緩衝記憶部４１０および緩衝記憶部４２０における純有効バイト総数（net valid byte count）が、１６を越え、緩衝記憶部４１０における内容の残部が、適切なバイトの経路が交差して緩衝記憶部４２０に書き込まれる。この場合に、緩衝記憶部４１０へのその後の入力に関して予測が行われる。この場合の巡回量は、３２から、緩衝記憶部４１０における純バイト数と、緩衝記憶部４２０におけるバイト数とを引いたものであると予測できる。
【００５３】
例えば、緩衝記憶部４２０は（データを含んでいる）有効なものとして１４バイトを有しており、緩衝記憶部４１０は、有効なものとして６バイトを有しているとする。次のクロックサイクルでは、１６バイトが、緩衝記憶部４３０に送信され、一方、残りの４バイトが緩衝記憶部４２０に蓄積される。従って、次の組の入力の巡回量は、３２−２０＝１２である。{１５，１４，１３，１２，１１，１０，９，８，７，６，５，４，３，２，１，０}のベクトルに対して、１２の巡回量が、ベクトル{１１，１０，９，８，７，６，５，４，３，２，１，０，１５，１４，１３，１２}となり、その結果、次の入力は、４バイトの残留に相当する前の位置４から始まるということを保証する。そして、１クロックサイクル先を見越して（one clock cycle look ahead）、先のクロックサイクルにおいて演算を実行できる。
【００５４】
多重化部４６０，４７０，４８０は、それぞれの制御入力部に与えられた制御信号の値に基づく２つのデータ入力の間で、選択するために用いられる。なお、多重化部は、技術的に公知であるので、ここでは、詳しく説明しない。また、この多重化部４６０の出力部は、線４６１を介して多重化部４７０のデータ入力部に接続されている。また、多重化部４７０の出力部は、線４７１を介して、緩衝記憶部４３０に接続されている。多重化部４８０の出力部は、緩衝記憶部４２０に接続されている。そして、多重化部４６０，４７０，および４８０は、制御入力部において、制御信号を、それぞれ線４５２，４５３，および４５５を介して、制御部４５０から受信する。なお、説明のために多重化部を他の部品とは別個に記載している。また、この多重化部は、他の構成ブロックに存在していてもよく、例えば、多重化部４８０は、緩衝記憶部４２０に存在していてもよい。
【００５５】
多重化部４６０および４７０に印加される制御信号の機能は、緩衝記憶部４２０の内容と緩衝記憶部４１０の巡回した内容とを形成している、多重化部の出力を選択することである。一実施形態では、印加された制御信号は、１６ビットの制御信号である。この１６ビットの制御信号は、図１０に記載するように、ある１６バイト範囲の操作（byte spanning operation）を含む、巡回量の関数（a function）である。ある位置での「１」は、巡回部４４０の巡回した出力が選択されたことを示し、一方、ある位置での「０」は、緩衝記憶部４２０の出力が選択されていることを示す。この巡回量の値は、位置「０」から始まる多重化部制御信号ベクトル（multiplexer control signal vector）における「１」の数を意味している。
【００５６】
制御部４５０は、線４５９を介して、緩衝記憶部４２０に接続されている、制御出力部をさらに備えている。一実施形態では、線４５９を介して緩衝記憶部４２０へ出力される、制御信号が１６ビット幅であり、緩衝記憶部４２０に関する内容が、上記した巡回量信号に基づいて選択された後、緩衝記憶部４２０のバイトによるバイト書き込みを制御する。緩衝記憶部４２０に出力される制御信号は、緩衝記憶部４２０における有効バイトを次のクロックサイクルにおいて決定する。制御部４５０は、緩衝記憶部４２０の書き込み可能を決定するために、様々な状態を現在のクロックサイクルの間に認識する。
【００５７】
また、一実施形態では、緩衝記憶部４１０の内容が、パススルー方法によって、緩衝記憶部４２０に書き込まれる。このことは、緩衝記憶部４２０が、空きである、またはパケット細分性の保持が必要とされるＥＯＰ信号を含んでいる場合に生じる。また、このことは、緩衝記憶部４２０の状態とは関係なく、緩衝記憶部４１０が、ＳＯＰ信号を含んでいる場合にも生じる。このような場合には、緩衝記憶部４１０に対応しているバイト使用可能が、緩衝記憶部４２０に対する書き込み可能(the write enable)となる。
【００５８】
第２の場合では、緩衝記憶部４１０の全１６バイトが、緩衝記憶部４２０に書き込まれる。そして、次のクロックサイクルでは、緩衝記憶部４２０が満たされていることを意味している。このような場合では、緩衝記憶部４２０に対する書き込み可能は、全て「１」である。
【００５９】
また、第３の場合、バイトは、緩衝記憶部４１０から緩衝記憶部４２０に書き込まれない。緩衝記憶部４１０は、ＥＯＰ信号を含んでおり、緩衝記憶部４１０および４２０の状態は、データが直接、緩衝記憶部に送られるため、次の入力のためにデータをシフトする必要がない。このような状態では、緩衝記憶部４２０に対する書き込み可能は、全て「０」である。
【００６０】
さらに第４の場合では、緩衝記憶部４１０および緩衝記憶部４２０における純有効バイトの総数が、１６を越え、緩衝記憶部４１０の内容の残部が、適切なバイト経路の交差により、緩衝記憶部４２０に書き込まれる。この場合において、緩衝記憶部４２０に対する書き込み可能は、緩衝記憶部４１０における有効バイト数に、緩衝記憶部４２０における有効バイト数を加え、１６を引いて演算される。
【００６１】
また、上記したデータ配列部４００は、線４１１の未配列データを、様々なバイトサイズで受信するために用いられる。そして、このデータ配列部４００は、図５に基づき以下に説明するように、特定のバイトサイズとなるように、データを配列するために使用される。また、データ配列部４００は、先頭要素、本体要素、および、末尾要素を有するデータパケットに対応している。
【００６２】
図５は、データ配列方法の一実施例を示す。この方法を、ここでは、データ要素が１６バイトを有するデータ構成に関連して説明する。既に説明したように、他のバイトパケットにもこの方法を使用できる。一実施形態では、データ配列部４００には、初期状態のときデータが入っていない。データパケットの先頭要素が到着した時点で、制御部４５０は、先頭要素の有するデータが、１６バイト未満であるかどうか特定する（工程５１０）。先頭要素が、１６バイト未満のデータを有している場合、バイトは、将来的な圧縮のため、緩衝記憶部４２０に送信され、保持される（工程５２０）。先端要素が、全１６バイトのデータを含んでいる場合、データは、緩衝記憶部４３０へ送信され、制御信号とともに出力される（工程５３０）。
【００６３】
先頭要素には、本体要素または末尾要素が続いている。先頭要素に、本体要素が続いている場合、中間緩衝記憶部４２０におけるデータのバイト数、およびその後に続く本体要素におけるバイト数は、１６バイトよりも多いか、あるいは、１６バイトに等しいので、全１６バイトは、規定の処理（due processing）の後、ＳＯＰを示すために制御部４５０により生成される制御信号と共に、緩衝記憶部４３０に渡される（工程５４０）。
【００６４】
中間緩衝記憶部４２０から、バイトを選択するか、あるいは、各々がデータを含むバイトの数に基づき、緩衝記憶部４１０にバイトを新たに入力するかが決定される。緩衝記憶部４１０に、新たに入力されるバイトは、１６バイトの純バイト数を補うために、緩衝記憶部４１０から直接先行して送られるバイト数によって巡回される（工程５５０）。巡回されたバイトは、中間緩衝記憶部４２０に書き込まれる。工程５４０〜５５０は、制御部４５０が、末尾が届いたと判断するまで繰り返される（工程５６０）。
【００６５】
末尾が届くと、緩衝記憶部４３０におけるデータは、各要素のパケットの境界を維持するために、純パケットサイズとは関係なく、線４３１を介して出力される（工程５７０）。このようにして、データ配列部４００は、先頭要素，本体要素，および末尾要素（これらのうち、先頭および／または末尾要素は、部分的に満たされていてもよい）を、１つ以上の本体要素および１つの末尾要素を有する連続的なパケットに変換する。
【００６６】
上記した例のように、例えば、先頭要素が、レジスタ４１０に受信され、制御部４５０により、７バイトのデータを含むと判断されるとする。先頭要素に含まれるのは、１６バイト未満なので、７バイトは、中間緩衝記憶部４２０に送信され、格納される。そして、次に受信される要素は、本体要素である。この本体要素は、制御部４５０によって、１６バイトのデータを有していると判断され、制御部４５０は、合計２３バイトのデータが受信されたものと演算する。この合計は、データ配列部４００の１６バイトサイズを越えるので、制御部４５０は、１６バイトの本体要素のうちの下位９バイトを選択して、先頭要素からの７バイトと共に、圧縮された１６バイトの本体要素として出力する。このため、制御部４５０は、選択された９バイトのデータを、巡回化部４４０を通して渡し、多重化部４６０の入力部に与える。この９つの巡回されたバイトは、緩衝記憶部４２０からの７バイトと共に、多重化部４７０への入力として適用される。制御部４５０は、多重化部制御信号を、線４５３を介して多重化部４７０に送信し、多重化部４６０から出力された、１６の連接バイト（concatenated bytes）を出力する。
【００６７】
このとき、データ配列部４００は、出力される１６バイトをレジスタ４３０に備え、レジスタ４１０には７バイトが残っている。１６バイトの本体要素のうち下位９バイトが、出力されたので、レジスタ４１０に残っている７バイトは、巡回化部４４０からより下位のバイト位置に出力され、レジスタ４２０に書き込まれる。次に、巡回したバイトは、中間緩衝記憶部４２０に入力され、蓄積される。そして、次の本体要素が受信されると、レジスタ４３０へ出力する、圧縮された１６バイト要素を生成するために、上記工程が繰り返される。
【００６８】
末尾要素が受信されると、ＥＯＰ信号の受信によって、制御部４５０が判断するので、データを含む末尾要素のバイトは、中間緩衝記憶部４２０におけるバイトと組み合わせられ、１６バイトと等価な圧縮バイトサイズを待たずに、レジスタ４３０に出力される。例えば、７バイトが、中間緩衝記憶部４２０に格納されており、１バイトのビットデータを含む末尾要素が受信されると、制御部４５０は、１バイトを、巡回化部４４０を通して送信する。次に、中間緩衝記憶部４２０に格納されている７バイト、および１バイトの巡回された出力は、多重化部４７０に、制御部４５０によって供給されて、次のクロックサイクルで出力される。
【００６９】
図５に関連して上記で述べた方法は、先頭、本体、および末尾要素をパケットに有する比較的規則的なデータストリームを操作している。他の実施形態では、他の種類のデータストリーム（以下、図４および５に関連して説明された簡単なデータストリームと区別するために、複雑なデータストリームと呼ぶ）に、ネットワークプロトコルにおいて直面するかもしれない。ネットワークプロトコルでは、規則性は、バイトの任意の許可および無許可（例えば、ＳＯＮＥＴ上の標準化されたパケット（Packet Over ＳＯＮＥＴ）（ＰＯＳ）プロトコルにおける乾式順序（dry sequence））によって、影響を受けることもある。また、一実施形態では、複雑なデータストリームは、図３に関連して上記に定義されたように、ホールと、部分的本体要素とを有している。このような複雑なデータストリームは、図４，５に関連して説明した簡単なデータストリームの要素に、これら要素を対応づけることによって、処理される。
【００７０】
図６は、データストリームにおけるホールと部分的本体要素とを処理するための対応図表の一実施形態を示す。一実施形態において、複雑なデータストリームの先頭要素が、簡単なデータストリームの先頭要素に対応づけられる（６１０）。複雑なデータストリームの本体要素は、簡単なデータストリームの本体要素に対応づけられる（６２０）。また、複雑なデータストリームの末尾要素は、簡単なデータストリームの末尾要素に対応づけられる。なお、ホールは、保持状態６４０として処理され、データ配列部（図７に関連して以下に説明するデータ配列部７００など）では何も実行されない。
【００７１】
また、部分的な本体の機能は、末尾を２つの異なる末尾要素（末尾Ａおよび末尾Ｂ）に分類することにより、簡単なデータストリームの末尾の機能に対応づけられる（６５０および６６０）。末端Ａ要素は、部分的な本体と、図７のデータ配列部７００の中間緩衝記憶部７２０とにおける、データビットを含むバイトの純総数が、１６未満のものである。末尾Ｂ要素は、部分的な本体と、図７のデータ配列部７００の中間緩衝記憶部７２０とにおける、データビットを含むバイトの正味の総数が、１６以上のものである。
【００７２】
図７は、複雑なデータストリームによって実施されているデータ配列部に関する他の実施形態を示す。一実施形態では、データ配列部７００が、緩衝記憶部７２０および７３０によって分けられている、２つの流通経路段階（段階７０４および７０６）を有している。このデータ配列部７００は、緩衝記憶部７３０，巡回化部７４０，制御部７５０、および多重化部７６０，７７０，７７５，７８０を備えている。巡回化部７４０および制御部７５０は、特記しない限り、図４の巡回化部４４０および制御部４５０と類似したやり方で作動する。
【００７３】
緩衝記憶部７１０，７２０，および７３０は、線７８１を介してクロック信号を受信するために接続されている、クロック入力部をそれぞれ備えている。このクロック信号は、データ信号から復元されてもよく、あるいは、クロック生成部（図示せず）により生成されてもよい。また、このクロック信号は、多重クロックサイクル（multiple clock cycles）を含み、この多重クロックサイクルにおいて、データ配列部７００における操作タイミングが実行される。
【００７４】
緩衝記憶部７２０は、段階７０４と７０６との間に、全ての未送信データを格納する。データ配列部７００は、段階７０４の入力部、および段階７０６の出力部に、それぞれ接続されている緩衝記憶部７１０および７３０をさらに備えている。一実施形態では、緩衝記憶部７１０，７２０，および７３０は、レジスタである。制御緩衝記憶部７１５，７２５，および７３５は、制御部７５０に接続されており、バイト使用可能を格納するように働く。
【００７５】
緩衝記憶部７１０は、線７１１を介して、データパケットを受信し、データパケットを、線７１２および７１３を介して、巡回化部７４０および制御部７５０にそれぞれ出力するために接続されている入力部を備えている。巡回化部７５０の出力部は、多重化部７８０のデータ入力部に接続されており、多重化部７８０のほかのデータ入力部は、線７７６を介して、多重化部７７５の出力を受信するために接続されている。また、巡回化部７４０の出力部は、多重化部７６０のデータ入力部にも接続されており、多重化部７６０の他のデータ入力部は、線７７６を介して多重化部７７５の出力を受信するために接続されている。また、多重化部７８０の出力部は、緩衝記憶部７２０の入力部に接続されている。
【００７６】
巡回化部７５０は、制御部７５０の制御を受けながら、１つ以上のバイトを、異なるバイトスロット、すなわちバイト位置に巡回させるように働く。一実施形態では、制御部７５０が、巡回量制御信号を、線７５８を介して巡回化部７５０に印加する。この巡回量制御信号の機能は、緩衝記憶部７１０の内容を巡回させる量を決定することであり、その結果として、もしあれば緩衝記憶部７１０の残部と、もしあれば緩衝記憶部７２０の残部とが連接される。そして、緩衝記憶部７２０の内容は、適切に配列されたバイトとなる。
【００７７】
巡回量を決定するために、図４の巡回化部４４０に関連して、上記に説明したように、様々なバイトの状態が、制御部７５０によって、実際の巡回が行われる前の１クロックサイクルで認識されてもよい。また、クロックサイクルの先を見越す方法（clock cycle look ahead approach）は、部分的な本体要素の構造を提供している間、維持される。複雑なデータストリームでは、次のクロックサイクルの緩衝記憶部７２０におけるバイト数が、現時点の演算の純有効総数として、予測され、交換される。現時点での演算では、純有効総数は、緩衝記憶部７１０におけるバイト数と、緩衝記憶部７２０におけるバイト数とを足したものである。部分的な本体を維持し、次の入力に関する巡回量を予測する場合、現状の純有効バイト演算は、緩衝記憶部７２０のバイト総数になる。巡回量は、制御、および他の制御信号に対する源（seed）として役立つ。
【００７８】
制御部７５０は、巡回化部７４０に接続されている制御出力部と、線７５２，７５３，７５４，および７５５をそれぞれ介した多重化部７６０，７７０，７７５，および７８０の制御入力部を備えている。線７５９を介して巡回化部７４０に接続されている、制御部７５０の制御出力部と、線７５９を介して緩衝記憶部７２０に接続されている、制御部７５０制御出力部とをさらに備えている。
【００７９】
多重化部７６０の出力部は、線７６１を介して、多重化部７７０のデータ入力部に接続されている。緩衝記憶部７２０の出力部は、多重化部７７０のその他方のデータ入力部と、多重化部７７５のデータ入力部に、線７２１を介して接続されている。また、この多重化部７７０の出力部は、線７７１を介して緩衝記憶部７３０に接続されている。緩衝記憶部７３０は、データ出力部および制御出力部を備えている。この緩衝記憶部７３０のデータ出力部は、線７７９を介して、多重化部７７５のデータ入力部に接続されている。また、この緩衝記憶部７３０の制御出力部は、線７７８への出力部である。
【００８０】
制御部７５０は、線７５９を介して緩衝記憶部７２０に接続され、線７５１を介して緩衝記憶部７３０に接続されている制御出力部をさらに備えている。一実施形態では、線７５９および７５１をそれぞれ介して、緩衝記憶部７２０および７３０に出力される制御信号は、１６ビット幅である。緩衝記憶部７２０に対する制御信号は、緩衝記憶部の内容が、巡回量信号に基づき選択された後、緩衝記憶部の書き込みをバイト毎に制御する。緩衝記憶部７２０に対して出力される制御信号は、次のクロックサイクルにおいて、緩衝記憶部７２０における有効バイトも決定する。現時点でのクロックサイクル間で、図４に関連して上記に説明したように、緩衝記憶部７２０の書き込み使用可能の決定のために、様々な状態が、制御部７５０により認識される。また、ホールの受信は、状態の保持として扱われる。
【００８１】
以下の例により、部分的な本体が受信される場合を説明する。同じパケット内におけるデータ配列装置７００の起動時には、６バイトに、６バイトが続き、この６バイトに８バイトが続く順番であるものとする。８バイトが緩衝記憶部７１０にあり、６バイトが緩衝記憶部７２０にあり、そして緩衝記憶部７１０が、ＥＯＰ信号を含んでいないという場合については、図４に関連して上記で説明した場合に含まれていない。この場合では、全ての１４バイトを緩衝記憶部７３０に送信しようという試みがなされる。次のクロックサイクルでは、制御部７５０が、部分的な本体要素の場合であるということを特定し、併合した緩衝記憶部７３０の出力（制御およびデータ）を、中間緩衝記憶部７２０に復元する。そして、緩衝記憶部７３０に対する、制御部７５０による出力可能（an output enable）の生成が抑制される。併合は、新しいデータが取得されない場合、１サイクル間での迂回と、次のサイクルでの復元として生じる。そうでなければ、新しいデータが来る場合には、迂回は、末尾Ａの試験が満たされるまで続く。
【００８２】
巡回量の演算を目的として、純有効総数の送り込みでは、既に次の演算を処理している。復元では、緩衝記憶部７２０が１４バイトを有するものとして、そして、緩衝記憶部７１０が６バイトを有するものとして示している。これは、図６に関連して上記に説明した末尾Ａの場合を表している。このように、演算は、簡単なデータストリームの末尾が受信されたものとして実行され、そして計算され、復元される。１４バイトについての巡回量の予測は、３２−１４＝１８バイトの巡回であり、これは、２バイトの巡回（４ビットのみ）と同じである。そのため、６バイトの緩衝記憶部７１０に関しては、２バイトだけ巡回することにより、０および１を、位置１４および１５にそれぞれ配置することとなり、これらは、緩衝記憶部７２０の１４バイトと併合される。これが、真の末尾である場合、１６バイトは、緩衝記憶部７３０に送られる。書き込み使用可能は、２０−１６、すなわち、余り４のバイトが、緩衝記憶部７２０に書き込まれる。
【００８３】
また、緩衝記憶部７２０に１４バイトあり、緩衝記憶部７１０に６バイトある場合、予測される巡回量は、３２−２０＝１２である。この場合、緩衝記憶部７２０からの４つの残りのバイトは、それらの位置を保持しており、１２の巡回は、次の連結などを考慮して、新しい入力バイトのバイト０を、位置４に配置する。この処理は、無限に繰り返される。
【００８４】
上記のデータ配列部７００は、図８に関連して以下に説明するように、線７１１の未配列データを、様々なバイトサイズで受信する。そして、このデータ配列部７００は、特定のバイトサイズになるようにデータを配列するために使用される。また、データ配列装置７００は、先頭要素、本体要素および末尾要素のほかに、ホールと部分的な本体要素とを有するデータパケットに適合している。
【００８５】
巡回化部７４０は、図４の巡回化部４４０に関して上記において説明した、同様の１クロックサイクル先を見越す方法により、部分的な本体要素構造を支持しながら作動する。図６に関連して上記で説明した、対応付け図表は、緩衝記憶部７２０におけるバイト数を、予測し、次のクロックサイクルにおいて、現時点の演算の純有効総数として置き換えることが示されている。現時点の演算では、純有効総数は、緩衝記憶部７１０におけるバイト数と、緩衝記憶部７２０におけるバイト数とを足したものである。部分的な本体要素の支持し、次の入力での巡回量を予測する場合に関しては、現状の純有効バイト演算が、緩衝記憶部７２０バイト総数になる。この巡回量は、主要な制御（primary control）であり、他の制御信号の源として役立つ。
【００８６】
図８は、複雑なデータストリームをデータ配列する方法についての他の実施形態を示す。一実施形態では、パケット要素が受信され、どの種類の要素であるかを特定するために分析される（工程８１０）。この要素が、先頭、本体、または末尾であると特定されると（工程８１５）、この要素は、図５に関連して上記に説明したように、簡単なデータストリームの、対応する要素の種類のそれに対応付けられ、処理される（工程８２０）。
【００８７】
そして、要素が、先頭、本体、または、末尾ではない場合、その要素がホールであるのか、または部分的な本体であるのかを特定するために、要素を分析する（工程８２５）。この要素が、ホールであると特定された場合、データ配列部７００の緩衝記憶部７１０，７２０，および７３０の状態が保持され、何も実行されない（工程８３０）。しかし、要素が部分的な本体であると特定された場合、この要素の部分的な本体機能は、末尾のそれに対応付けられる（工程８３０）。この対応付けを実行するとき、部分的な本体要素は、部分的な本体と、中間緩衝記憶部７２０とにあるデータを含むバイト数（純総数）に基づいて、２つの対応付けられている要素（末端Ａおよび末端Ｂ）のうちの１つに分類される（工程８４０）。
【００８８】
この純総数が、１６バイト未満の場合、図５に関連して上記にて説明した末尾の処理順序は以下に続き（工程８４５）、以下の変更が伴われる。すなわち、データ配列部７００の制御出力を抑制する（工程８５０）（これは、基本的に、位置１〜１６においてバイトの有効性を表している制御信号は、第２段階７０６において生成されるが、末端Ａが検出されるとき、制御部７５０における論理によって、抑制されていることを意味している）。そして、中間緩衝記憶部７２０を迂回する（工程８５５）。中間緩衝記憶部７２０における未送信結果を用いて、純総数の次の演算を実行する（工程８６０）。特定の実施の場合では、現時点のクロックサイクルにおける純総数を、次のクロックサイクルにおける中間緩衝記憶部７３０の総数として予測してもよい。工程８５０，８５５，８６０は、純総数が、１６を越えるか、あるいは、１６に等しくなるまで繰り返される。
【００８９】
例えば、中間緩衝記憶部７２０が、７バイトを含み、緩衝記憶部７１０が、１バイトを受信した場合、全８バイトが、緩衝記憶部７３０に送信される。そして、緩衝記憶部７３０に格納されているのは１６バイト未満なので、制御部７５０は、制御出力７７８を抑制する。一実施形態では、制御出力７７８が、純総数が、１６バイトに等しくなるか、または、１６バイトを越えるか、あるいは、ＥＯＰ信号が受信されるまで抑制されている。代替の実施形態では、別の論理構成および制御信号が、データ配列部７００の制御出力７７８を抑制するために使用されてもよい。
【００９０】
次に、制御部７５０により伝送される制御信号を用いて、緩衝記憶部７３０の出力は、その後に続くクロックサイクルにおいて、多重化部７７５，７６０および７７０を通して、緩衝記憶部７３０に入力されるようにフィードバックされる。このようにして、中間緩衝記憶部７２０の出力は、緩衝記憶部７３０の内容によって迂回される。従って、さらなるバイトが、緩衝記憶部７１０において受信される場合、純総数を特定するための演算は、図７に関連して上記に説明した予測図表を用いて実施される。この工程は、緩衝記憶部７１０および７２０（緩衝記憶部７３０迂回が生じることがある場合は、緩衝記憶部７３０を含む）におけるバイトの純総数が、１６に等しくなるか、または、１６を越えるまで繰り返される。
【００９１】
この純総数が、１６バイトに等しいか、または、１６バイトを越えている場合、図５に関連して上記に説明した末尾の処理順序は以下に続く（工程８６５）。そして、次の変更が伴われる。すなわち、制御出力（ＳＯＰ、および、バイト使用可能を含む）を抑制しない（工程８７０）。ＥＯＰ制御信号を生成しない（工程８７５）。そして、適切な更新により、中間緩衝記憶部７２０を、迂回しない（工程８８０）。
【００９２】
先行例に続いて、緩衝記憶部７２０（緩衝記憶部７３０の迂回を含む）は、８バイトのデータを格納しており、さらなる８バイトを受信した場合、この８バイトは、多重化部７６０に、巡回化部７６０の出力と共に送信される。この合計が、１６に等しいので、連結された出力は、多重化部７７０に送信され、次のクロックサイクルで出力される。なお、ＥＯＰ制御信号は、制御部７５０によって生成されない。このようにして、部分的な本体要素は、ＥＯＰ制御信号を生成せずに、簡単なデータストリームにおける末尾要素の場合と同じように扱われる。なお、この部分的な本体要素は、純総数を、緩衝記憶部７１０および７２０（緩衝記憶部７３０の迂回を含む）において、１６バイトに等しいか、１６バイトを超えるものである。
【００９３】
上記方法により、多重化部と組み合わせ論理とを追加するだけで、複雑なデータストリームを、比較的簡単な装置に対応付けることができる。この構造により、厳しいタイミング要求を有する第１段階の制御設計において、負荷が緩和され、第１段階に論理を過剰実装するのではなく、論理が、段階間で分散される。このような回路構造は、より良好なタイミングと、より高い操作速度（frequency of operation）に繋がる。
【００９４】
図９は、巡回化部の一実施形態を表している。一実施形態では、巡回化部９００は、図４の巡回化部４４０または図７の巡回化部７４０として使用されている。巡回化部９００は、４段の一連のバイト巡回回路素子を表し、この回路素子では、各バイト巡回回路９８１〜９８４が、それら自身によって、１，２，４，または、８バイトの巡回を可能とする。また、バイト巡回回路素子は、技術的に公知であるので、ここでは詳しい説明は省略する。
【００９５】
バイト巡回回路素子９８１〜９８４のそれぞれは、巡回入力機能（rotate input function）に基づいて迂回される。この構成では、巡回化部９００が、制御信号９７１〜９７４に基づく１６バイトの入力から、巡回した出力を生成できる。なお、この制御信号９７１〜９７４は、０バイトから１５バイトまでのバイトの巡回量を示している信号である。また、図１１は、入力および巡回量に基づく、巡回化部９００の出力を示す実施例である。
【００９６】
制御信号９７１〜９７４は、制御入力として、多重化部９９１にそれぞれ印加される。また、制御信号９７１〜９７４は、各バイト巡回回路素子９８１〜９８４のそれぞれの出力９６１〜９６４と、各バイト巡回回路素子９８１〜９８４のそれぞれの入力９５１〜９５４との間で選択をする。入力９５１〜９５４は、データ入力９５５〜９５８として、多重化部９９１〜９９４にそれぞれ印加される。図１０は、入力９５１〜９５４のデータに基づく出力９７９および、巡回量を示す。代替の実施形態では、別の種類の巡回化部（例えば、バレル型巡回化部（barrel rotator））を使用してもよい。
【００９７】
ここに記載の方法および装置は、複雑なデータ経路設計において、一般的であり、再発性のある問題を、解決するために使用されてもよい。誤りを検出し、修正するために、データストリームが符号化および複合化される、ネットワークプロトコル関連ハードウエアにおける実施により、検査部と生成部は、より速く、より効果的に流通経路敷設された（pipelined）設計となる。したがって、それらは、より高速で、より広い帯域幅である設計にいっそう好適となる。
【００９８】
代替の実施形態では、ここに説明した方法および装置は、データ配列を必要とする他の種類のシステムおよび部材に使用されてもよい。すなわち、様々なバイト経路における未配列データが配列される、例えば、処理装置のロード（processor load）や、格納エンジン（storage engines）に使用されてもよい。また、別の例として、この方法および装置は、格納集積機能（store gathering functions）において使用されてもよい。なお、この格納集積機能では、内部指示部からの多重バイト幅格納（multiple byte wide stores）は、単一格納動作として外部バスに対応付けられる。
【００９９】
上記説明では、発明を、その特定の実施例を参照して説明してきた。しかし、これに、様々な修正および変更を行っても、請求項に記載の本発明の広義の精神と範囲とに反することはないことが明らかである。従って、説明および図は、説明的なものであり、制限を意味するものではない。
【図面の簡単な説明】
【０１００】
【図１】データ配列部の一実施形態を含む、デジタル処理システムを示す図である。
【図２】データ配列部の一実施形態を含むネットワークインターフェースデバイスを示す図である。
【図３】パケット構造の一実施形態と、対応する例示のバイト使用可能とを示す図である。
【図４】データ配列部の一実施形態を示す図である。
【図５】データ配列の方法の一実施形態を示す図である。
【図６】一実施形態における、複雑なデータストリームを簡単なデータストリームに対応付けた図表である。
【図７】データ配列部の代替の実施形態を示す図である。
【図８】他の実施形態のデータ配列方法を示す図である。
【図９】巡回化部の実施形態を示す図である。
【図１０】巡回した量と多重化部制御ベクトルの値との関係の一実施形態を示す表である。
【図１１】実施例であって、入力に基づく巡回化部の出力と、巡回量とを示す表である。
【図１】
2005504449.tif 000003
【図２】
2005504449.tif 000004
【図３】
2005504449.tif 000005
【図４】
2005504449.tif 000006
【図５】
2005504449.tif 000007
【図６】
2005504449.tif 000008
【図７】
2005504449.tif 000009
【図８】
2005504449.tif 000010
【図９】
2005504449.tif 000011
【図１０】
2005504449.tif 000012
【図１１】
2005504449.tif 000013
【国際公開パンフレット】
2005504449.tif 000014
2005504449.tif 000015
2005504449.tif 000016
2005504449.tif 000017
2005504449.tif 000018
2005504449.tif 000019
2005504449.tif 000020
2005504449.tif 000021
2005504449.tif 000022
2005504449.tif 000023
2005504449.tif 000024
2005504449.tif 000025
2005504449.tif 000026
2005504449.tif 000027
2005504449.tif 000028
2005504449.tif 000029
2005504449.tif 000030
2005504449.tif 000031
2005504449.tif 000032
2005504449.tif 000033
2005504449.tif 000034
2005504449.tif 000035
2005504449.tif 000036
2005504449.tif 000037
2005504449.tif 000038
2005504449.tif 000039
2005504449.tif 000040
2005504449.tif 000041
2005504449.tif 000042
2005504449.tif 000043
2005504449.tif 000044
2005504449.tif 000045
2005504449.tif 000046
2005504449.tif 000047
2005504449.tif 000048
2005504449.tif 000049
2005504449.tif 000050
2005504449.tif 000051
2005504449.tif 000052
2005504449.tif 000053
2005504449.tif 000054
2005504449.tif 000055
2005504449.tif 000056
2005504449.tif 000057
2005504449.tif 000058
2005504449.tif 000059
2005504449.tif 000060
2005504449.tif 000061
2005504449.tif 000062
2005504449.tif 000063
2005504449.tif 000064
2005504449.tif 000065
2005504449.tif 000066
2005504449.tif 000067
2005504449.tif 000068
2005504449.tif 000069
2005504449.tif 000070
2005504449.tif 000071
2005504449.tif 000072
2005504449.tif 000073
2005504449.tif 000074
2005504449.tif 000075
2005504449.tif 000076
【国際公開パンフレット（コレクトバージョン）】
2005504449.tif 000077
2005504449.tif 000078
【国際調査報告】
2005504449.tif 000079
2005504449.tif 000080
2005504449.tif 000081