[go: up one dir, main page]

CN1498470B - Method and device for data alignment - Google Patents

Method and device for data alignment Download PDF

Info

Publication number
CN1498470B
CN1498470B CN02807041.0A CN02807041A CN1498470B CN 1498470 B CN1498470 B CN 1498470B CN 02807041 A CN02807041 A CN 02807041A CN 1498470 B CN1498470 B CN 1498470B
Authority
CN
China
Prior art keywords
group
data
input
buffer
output
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 - Fee Related
Application number
CN02807041.0A
Other languages
Chinese (zh)
Other versions
CN1498470A (en
Inventor
S·布哈德瓦
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.)
Infineon Technologies North America Corp
Original Assignee
Infineon Technologies North America Corp
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 Infineon Technologies North America Corp filed Critical Infineon Technologies North America Corp
Publication of CN1498470A publication Critical patent/CN1498470A/en
Application granted granted Critical
Publication of CN1498470B publication Critical patent/CN1498470B/en
Anticipated expiration legal-status Critical
Expired - Fee Related 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)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Detection And Correction Of Errors (AREA)
  • Time-Division Multiplex Systems (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

在数据对准器(400,700)的多电路级(404,406,704,706)中,分配不规则数据流的数据操作的一种方法,藉以产生具有连续填满字节位置的规则数据流。在一特定实施例中,未对准数据情节的数目可以透过数据流组件映像的使用而予以降低。在这个数据对准器中仅需要加入多任务器(460,470,760,770,775)及简易逻辑电路,复杂数据流便可以映像(835)至简易数据流。与网络协议相关的硬件实施方式(其中,数据流编码及译码以达成错误检测及校正的目的)可以使检查器(checker)及产生器(generator)得到更有快速且更有效的流水线设计,进而适用于较高频率及较高频宽的设计。

Figure 02807041

A method of distributing data manipulation of irregular data streams in multiple circuit stages (404, 406, 704, 706) of a data aligner (400, 700) whereby regular data having consecutively filled byte positions is generated flow. In a particular embodiment, the number of misaligned data episodes can be reduced through the use of data flow element maps. Only multiplexers (460, 470, 760, 770, 775) and simple logic circuits need to be added to the data aligner, and complex data streams can be mapped (835) to simple data streams. Hardware implementations associated with network protocols (where data streams are encoded and decoded for error detection and correction) allow for faster and more efficient pipeline design of checkers and generators, Then it is suitable for the design of higher frequency and higher bandwidth.

Figure 02807041

Description

数据对准的方法及装置Method and device for data alignment

〔技术领域〕〔Technical field〕

本发明涉及网络系统领域。特别是,本发明涉及在网络系统中使用的数据对准器(data aligner)。The present invention relates to the field of network systems. In particular, the present invention relates to data aligners used in network systems.

〔背景技术〕〔Background technique〕

简单来说,互联(Internet)是经由网络(例如:传输线、交换器、路由器)进行互连的计算机系统集合,藉以在这些计算机系统间传输数据。一般而言,数据乃是利用数据封包(data package)的形式、在网络中沿着一个数据路径进行传输。数据路径的一个重要特征是位宽度(bit width)。位宽度(bit width)是这个数据路径上、同时处理或通过的位数目。数据路径的位宽度决定其频宽(bandwidth)及时脉速度(clock speed)。频宽(bandwidth)是数据能够在这个数据路径上流动多快的一个测量。在数字系统中,频宽可以利用每秒位数(bps)表示为数据速度(data speed)。Simply put, the Internet (Internet) is a collection of computer systems interconnected via a network (such as transmission lines, switches, routers), so as to transmit data between these computer systems. Generally speaking, data is transmitted along a data path in the network in the form of data packets. An important characteristic of the data path is the bit width (bit width). Bit width is the number of bits that are simultaneously processed or passed on this data path. The bit width of a data path determines its bandwidth and clock speed. Bandwidth is a measure of how fast data can flow on the data path. In digital systems, bandwidth can be expressed as data speed in bits per second (bps).

曾经,数据乃是利用具有有限频宽(bandwidth)能力的铜线传输线,排他性地承载在传统的简易老式电话系统(POTS)、或公共交换电话网络(PSTN)上。随后,其它类型的网络则是利用具有较高频宽(bandwidth)的传输线进行发展,举例来说:综合业务数字网(ISDN),其可以在给定的时间内传输更大的数据量(更高的每秒位数(bps))。综合业务数字网(ISDN)可以经由普通的公共交换电话网络(PSTN)铜线、在一个窄频区域回路(narrow band local loop)上提供数字传输。At one time, data was carried exclusively on the traditional Plain Old Telephone System (POTS), or the Public Switched Telephone Network (PSTN), using copper transmission lines with limited bandwidth capabilities. Subsequently, other types of networks were developed using transmission lines with higher bandwidth, for example: Integrated Services Digital Network (ISDN), which can transmit a larger amount of data (higher bandwidth) in a given time bits per second (bps). The Integrated Services Digital Network (ISDN) provides digital transmission over ordinary Public Switched Telephone Network (PSTN) copper wires over a narrow band local loop.

当互联网(Internet)呈现爆炸性成长、且数据流量呈现倍数增加时,目前最急迫需要的便是频宽的增加。一般而言,满足频宽增加的需要可以有两种方法,即:提高时脉速度(clock speed)及加宽数据路径(data path)。系统设计师在更高的时脉速率(clock speed)上执行数据路径(data path),藉以达成技术的进展。另外,系统设计师也会增加位宽度(bit width)以加宽数据路径(data path)。尽管已经具有加宽的数据路径(data path),这些系统却仍然需要支持遗留系统(legacy system),即:先前已经在较窄数据路径(datapath)上设计的老旧系统。因此,加宽数据路径(data path)的利用会导致数据流的不规则性。When the Internet (Internet) is experiencing explosive growth and data traffic is increasing exponentially, the most urgent need at present is the increase of bandwidth. Generally speaking, there are two ways to meet the requirement of increased bandwidth, namely: increasing the clock speed and widening the data path. System designers are advancing the technology by implementing data paths at higher clock speeds. In addition, system designers will also increase the bit width (bit width) to widen the data path (data path). Despite having widened data paths, these systems still need to support legacy systems, ie older systems that have previously been designed on narrower data paths. Therefore, the utilization of widened data paths can lead to irregularities in data flow.

与数据路径(data path)关连的其它参数还包括:网络的类型和在这个数据路径(data path)上传输数据的协议。计算机系统可以利用各种网络,诸如:互联网(Internet)和同步光学网络(SONET),藉以进行彼此间的通信。特别说明的是,同步光学网络(SONET)乃是在光学媒体上进行同步数据传输的美国标准。另外,同步光学网络(SONET)的对应国际标准则是同步数字体系(SDH)。同时,这两种标准必须确保数字网络能够进行国际互连、并且必须确保现有传统传输系统可以利用光学媒体。Other parameters associated with the data path (data path) include: the type of network and the protocol for transmitting data on this data path (data path). Computer systems can use various networks, such as: Internet (Internet) and Synchronous Optical Network (SONET), to communicate with each other. Specifically, Synchronous Optical Network (SONET) is an American standard for synchronous data transmission over optical media. In addition, the corresponding international standard of Synchronous Optical Network (SONET) is Synchronous Digital Hierarchy (SDH). At the same time, the two standards must ensure that digital networks can be interconnected internationally and that existing legacy transmission systems can utilize optical media.

另外,计算机系统会利用与网络协议相关的电路,诸如:网络适配器(adapter),藉以编码及译码网络传输的数据,进而用于错误检测及校正的目的。在各种协议实施方式及互连网络规格中,选择性的位移除及加入是普遍现象。这两个因素可能会导致任意排列的数据流的产生,由迄今得到的规则数据流,其必须要事先收集并对准以进行有效且方便地处理。规则的数据流的产生可以有效利用频宽,进而得到较快的数据传输时间。另外,规则的数据流更容易处理、更适合流水线操作、及更容易撷取及储存。在网络电路及系统中,这些因素均具有极高的重要性,因为其可能会影响到消费者及市场的主要区别参数。In addition, the computer system uses circuits related to network protocols, such as network adapters, to encode and decode data transmitted over the network for the purpose of error detection and correction. Selective bit removal and addition is common in various protocol implementations and interconnection network specifications. These two factors may lead to the generation of arbitrarily arranged data streams, from the heretofore obtained regular data streams, which must be collected and aligned in advance for efficient and convenient processing. The generation of regular data flow can effectively utilize the bandwidth, thereby obtaining faster data transmission time. In addition, the regular data flow is easier to process, more suitable for pipeline operation, and easier to capture and store. In networking circuits and systems, these factors are of utmost importance as they can affect key differentiating parameters for consumers and markets.

已知,将任意数据流映像至规则数据流的一类电路称为“数据对准器”。特别是,数据对准器会撷取各种字节大小的未对准数据、并将这个数据对准,藉以得到封装的字节大小。现有的部分数据对准器的一个问题是:这些对准器会在多电路级设计的第一级电路内包含大量的逻辑电路,藉以处理尽可能多的未对准数据情节。现有的部分数据对准器的另一个问题是:这些对准器会将输出选择多任务器的输出反馈至中间缓冲器,进而产生第一级电路设计的逻辑电路拥塞。这是因为:这类方法,当了解到特定封包中没有足够数据可通过作为输出时,可能会在这个中间缓冲器中保持连接数据,而非执行及恢复这个数据。这类手段不仅难以设计,并且也会在这个数据对准器的第一级电路设计中导致更多的处理时间,进而限制这类数据对准器可以操作的频率。A class of circuits that map arbitrary data streams to regular data streams is known as a "data aligner". In particular, the data aligner takes misaligned data of various byte sizes and aligns this data to get the packed byte size. One problem with existing partial data aligners is that these aligners contain a large amount of logic in the first stage of a multi-circuit level design to handle as many misaligned data instances as possible. Another problem with existing partial data aligners is that these aligners feed back the output of the output selection multiplexer to the intermediate buffer, thereby creating logic circuit congestion in the first stage circuit design. This is because such methods, upon knowing that there is not enough data in a particular packet to pass as output, may keep connection data in this intermediate buffer instead of executing and restoring it. Such approaches are not only difficult to design, but also lead to more processing time in the first-stage circuit design of the data aligner, thereby limiting the frequency at which such data aligners can operate.

〔发明内容〕[Content of invention]

本发明系涉及一种字节旋转的方法及装置。在一特定实施例中,这种方法可以包括:接收多个字节于第一缓冲器中,其大小为数个包含数据的该多个字节。另外,这种方法也包括:在旋转该多个字节前的至少一个时脉周期,利用控制器决定该多个字节的状态;以及基于该状态、预测在旋转器中旋转该多个字节的旋转量。The invention relates to a byte rotation method and device. In a particular embodiment, the method may include receiving a plurality of bytes in a first buffer having a size of the plurality of bytes containing data. Additionally, the method includes determining, with the controller, the state of the plurality of bytes at least one clock cycle prior to rotating the plurality of bytes; and based on the state, predictively rotating the plurality of words in a rotator. The amount of rotation of the knot.

在另一特定实施例中,这种方法可以包括:在后继时脉周期中,预测位于第一缓冲器中的第一数目字节。另外,这种方法还可以包括:基于该预测,计算第二缓冲器接收的第二数目字节的旋转量,且这个计算执行于目前时脉周期中。In another particular embodiment, the method may include predicting, in a subsequent clock cycle, the first number of bytes located in the first buffer. Additionally, the method may further include: based on the prediction, calculating a rotation amount for the second number of bytes received by the second buffer, and the calculation is performed in a current clock cycle.

在一个特定实施例中,这种装置包括第一缓冲器,其耦合以接收具有多个时脉周期的时脉信号;控制器;旋转器,其耦合至该控制器及该第一缓冲器。该旋转器可以包括第一旋转电路,耦合以接收输入、并产生第一输出。另外,这个旋转器还可以包括第一多任务器,其耦合以接收该输入及该旋转电路的该第一输出。该第一多任务器基于该控制器接收的第一旋转量控制信号,择一选择该输入或该第一输出。该第一旋转量控制信号可以在后继时脉周期中,通过预测位于该第一缓冲器中的数个字节来决定。In a particular embodiment, such an apparatus includes a first buffer coupled to receive a clock signal having a plurality of clock periods; a controller; and a rotator coupled to the controller and the first buffer. The rotator may include a first rotator circuit coupled to receive an input and generate a first output. Additionally, the rotator may also include a first multiplexer coupled to receive the input and the first output of the rotator circuit. The first multiplexer selects one of the input or the first output based on the first rotation amount control signal received by the controller. The first rotation amount control signal can be determined by predicting a number of bytes in the first buffer in subsequent clock cycles.

根据附图和后面的详细说明,本发明的其它特征和优点将是清楚的。Other features and advantages of the invention will be apparent from the accompanying drawings and the following detailed description.

本发明涉及数据对准的方法及装置。这种装置可以具有多个电路级,其耦合于多个缓冲器之间。后级电路及其对应缓冲器可以用来分配对准数据封包的产生,藉以降低前级电路的操作时间。The invention relates to a data alignment method and device. Such a device may have multiple circuit stages coupled between multiple buffers. The downstream circuits and their corresponding buffers can be used to distribute the generation of the alignment data packets, so as to reduce the operation time of the preceding circuits.

在一个特定实施例中,这种装置可以包括:第一级电路,其耦合至第一缓冲器。该第一级电路可以包括旋转器,其耦合至该第一缓冲器;控制器,其耦合至该旋转器;以及第一多任务器,其耦合至该控制器。另外,这种装置还可以包括:第二缓冲器,其耦合至该旋转器;以及第二级电路,其耦合至该第二缓冲器。该第二级电路可以包括第二多任务器。另外,第三缓冲器也可以耦合至该第二级电路。In a particular embodiment, such an apparatus may include a first stage circuit coupled to a first buffer. The first stage circuit may include a rotator coupled to the first buffer; a controller coupled to the rotator; and a first multiplexer coupled to the controller. Additionally, such an apparatus can further include: a second buffer coupled to the rotator; and a second stage circuit coupled to the second buffer. The second stage of circuitry may include a second multiplexer. Additionally, a third buffer may also be coupled to the second stage circuit.

在一个实施例中,这种方法可以包括:接收第一数据组件,其具有多个字节;并决定包含数据的第一数目字节。另外,这种方法还可以包括:无需操作第一数据组件地通过该第一数据组件(若所有字节均包含数据),以及保持该数据组件(若并非所有字节均包含数据)。In one embodiment, such a method may include: receiving a first data component having a plurality of bytes; and determining to contain a first number of bytes of data. Additionally, the method may include passing through the first data component without manipulating the first data component (if all bytes contain data), and maintaining the data component (if not all bytes contain data).

在另一实施例中,这种方法可以包括:接收标头组件,其在多个字节之外具有空白字节位置;以及接收第一后继主体组件。另外,这种方法还可以包括:组合该标头组件和该第一后继主体组件,以利用该第一后继主体组件的数据填满该标头组件的空白字节位置,藉以操作该标头组件来产生第一封包组件。该第一封包组件可以具有该多个字节位置。另外,这种方法还可以包括:传输该第一封包组件(若该第一封包组件的多个字节位置被该操作填满)。In another embodiment, such a method may include: receiving a header component having a blank byte position beyond a number of bytes; and receiving a first subsequent body component. In addition, the method may further include: combining the header element and the first successor body element to fill the empty byte positions of the header element with the data of the first successor body element, thereby operating the header element to generate the first packet component. The first packet element may have the plurality of byte locations. In addition, the method may further include: transmitting the first packet element (if multiple byte positions of the first packet element are filled by the operation).

在又一实施例中,这种方法可以包括:接收第一数目字节的非连续数据流,并将该第一数目字节通过第一及第二缓冲器而送达第三缓冲器。该第一数目字节可以小于预定数目字节。该第一缓冲器可以耦合至该第二缓冲器,且该第二缓冲器可以耦合至该第三缓冲器。另外,这种方法可以包括:接收第二数目字节,并将该第一数目字节由该第二缓冲器通过至该第三缓冲器。另外,这种方法还可以包括:反馈该第三缓冲器至该第二缓冲器(若该第一数目字节与该第二数目字节的总和小于该预定数字)。In yet another embodiment, the method may include receiving a discontinuous data stream of a first number of bytes, and passing the first number of bytes through the first and second buffers to a third buffer. The first number of bytes may be less than the predetermined number of bytes. The first buffer can be coupled to the second buffer, and the second buffer can be coupled to the third buffer. Additionally, the method can include receiving a second number of bytes and passing the first number of bytes from the second buffer to the third buffer. In addition, the method may further include: feeding back the third buffer to the second buffer (if the sum of the first number of bytes and the second number of bytes is less than the predetermined number).

根据附图和后面的详细说明,本发明的其它特征和优点将是清楚的。Other features and advantages of the invention will be apparent from the accompanying drawings and the following detailed description.

〔附图说明〕[Description of drawings]

本发明配合附图,利用示例加以介绍(而非限定),其中:The present invention is described (not limited) by way of examples in conjunction with the accompanying drawings, wherein:

第1图表示数字处理系统,其包括数据对准器的一个实施例;Figure 1 shows a digital processing system including an embodiment of a data aligner;

第2图表示网络接口装置,其包括数据对准器的一个实施例;Figure 2 shows a network interface device including an embodiment of a data aligner;

第3图表示封包结构的一个实施例及其对应的典型字节致能;Figure 3 represents an embodiment of the packet structure and its corresponding typical byte enabling;

第4图表示数据对准器的一个实施例;Figure 4 shows an embodiment of a data aligner;

第5图表示数据对准方法的一个实施例;Figure 5 shows an embodiment of a data alignment method;

第6图表示复杂数据流到简单数据流的映像方法的一个实施例;Figure 6 represents an embodiment of a method for mapping complex data streams to simple data streams;

第7图表示数据对准器的另一实施例;Figure 7 shows another embodiment of the data aligner;

第8图表示数据对准方法的另一实施例;Fig. 8 shows another embodiment of the data alignment method;

第9图表示旋转器的一个实施例;Figure 9 shows an embodiment of a spinner;

第10图表示旋转量与多任务器控制向量值之间关系的一个实施例;Fig. 10 shows an embodiment of the relationship between rotation amount and multiplexer control vector value;

第11图是表示旋转器基于输入及旋转量的输出的典型实施例。Fig. 11 shows an exemplary embodiment of the output of the rotator based on the input and the amount of rotation.

〔具体实施方式〕〔Detailed ways〕

在下列发明说明中,多个特定细节将会提出做为特定零件、装置、方法等等的范例,藉以协助提供本发明的彻底了解。然而,本领域技术人员应当明白,本发明并不见得要利用这些特定细节来完成实施。在其它例子中,已知的材料或方法将不再详细说明,藉以避免非必要地混淆本发明。In the following description of the invention, numerous specific details are set forth as examples of specific components, devices, methods, etc., in order to help provide a thorough understanding of the invention. However, it will be apparent to those skilled in the art that the present invention may not necessarily be practiced with these specific details. In other instances, well known materials or methods have not been described in detail to avoid unnecessarily obscuring the present invention.

一种方法,其在数据对准器的多电路级中,分配不规则数据流的数据操作,藉以产生具有连续填满字节的规则数据流。数据操作的分配可以利用后级电路执行部分数据操作,藉以释放前级电路执行其它数据字节的接收,进而使这个数据对准器能够操作于更高频率。A method of distributing data operations of irregular data streams in multiple circuit stages of a data aligner, thereby generating regular data streams with consecutive fill bytes. The allocation of data operations can use the downstream circuit to perform part of the data operation, so as to release the previous circuit to perform the reception of other data bytes, so that the data aligner can operate at a higher frequency.

在一特定实施例中,未对准数据情节的数目可以通过数据流组件映像的使用而予以降低。在这个数据对准器中仅需要加入多任务器和组合逻辑闸,复杂数据流便可以映像(835)到简单数据流。In a particular embodiment, the number of misaligned data episodes can be reduced through the use of dataflow component maps. In this data aligner, only a multiplexer and a combinational logic gate need to be added, and the complex data flow can be mapped (835) to a simple data flow.

应该注意的是,虽然本方法是根据十六字节的数据组件,但是,这种方法亦可以适用于数据组件的其它字节大小,诸如:三十二字节、八字节、及四字节。在另一实施例中,这种方法也可以利用可变数据宽度完成实施,其中,这个数据宽度为可架构参数。应该注意的是,在本发明中,连接各个零件的“线路”可以是单位线路、多位线路、或总线。It should be noted that although the method is based on sixteen-byte data elements, this method can also be applied to other byte sizes of data elements, such as: thirty-two bytes, eight bytes, and quadwords Festival. In another embodiment, this method can also be implemented with a variable data width, wherein the data width is a configurable parameter. It should be noted that, in the present invention, a "wire" connecting the respective components may be a single-bit wire, a multi-bit wire, or a bus.

第1图表示数字处理系统100的一个实施例,例如,工作站、个人计算机、或服务器等等,这个数字处理系统100实施数据对准器150。这个数字处理系统100包括传播信息的总线或其它通信装置105;以及诸如处理器110的处理装置,其耦合至这个总线105以处理信息及控制往返网络接口装置140的数据封包移动。处理器110可以表示一个或多个处理器,诸如:通用处理器(例如:摩托罗拉的强力计算机(PowerPC)处理器或英特尔的奔腾(Pentium)处理器)、特殊用途处理器(例如:数字信号处理器(DSP))、及控制器。FIG. 1 shows one embodiment of a digital processing system 100 , such as a workstation, personal computer, or server, etc., that implements data aligner 150 . The digital processing system 100 includes a bus or other communication device 105 for carrying information; and a processing device such as a processor 110 coupled to the bus 105 to process information and control the movement of data packets to and from a network interface device 140 . Processor 110 may represent one or more processors, such as: general-purpose processors (e.g., Motorola's PowerPC processor or Intel's Pentium (Pentium) processor), special-purpose processors (e.g., digital signal processing device (DSP)), and controller.

数字处理系统100更包括系统内存120,其可以包括随机存取内存(RAM)或其它的动态储存装置,耦合至总线105以储存信息(例来:封包)和处理器110要执行的指令。另外,系统内存120亦可以用来储存暂时变量或处理器110执行指令时的其它中间信息。系统内存120还可以包括只读存储器(ROM)和/或其它静态储存装置,耦合至总线105以储存静态信息和处理器110要执行的指令。Digital processing system 100 further includes system memory 120 , which may include random access memory (RAM) or other dynamic storage devices, coupled to bus 105 to store information (eg, packets) and instructions to be executed by processor 110 . In addition, the system memory 120 can also be used to store temporary variables or other intermediate information when the processor 110 executes instructions. System memory 120 may also include read-only memory (ROM) and/or other static storage devices coupled to bus 105 to store static information and instructions to be executed by processor 110 .

一个或更多个网络接口装置(例如:网络接口装置140到网络接口装置N)可以耦合至总线105。在另一实施例中,网络接口装置140可以位于数字处理系统100的外部。网络接口装置140可以包括与网络协议相关的电路,其编码及译码在网络160上传输的数据以做为错误检测和校正的用途。在一实施例中,网络接口装置140包括产生规则数据流的电路。网络接口装置140包括数据对准器150。数据对准器150操作以将任意数据流映像至规则数据流,如下文所述。One or more network interface devices (eg, network interface device 140 through network interface device N) may be coupled to bus 105 . In another embodiment, network interface device 140 may be located external to digital processing system 100 . The network interface device 140 may include circuits related to network protocols for encoding and decoding data transmitted over the network 160 for error detection and correction purposes. In one embodiment, the network interface device 140 includes circuitry to generate regular data streams. The network interface device 140 includes a data aligner 150 . Data aligner 150 operates to map arbitrary data streams to regular data streams, as described below.

根据特定的设计环境实施方式,这个网络接口装置140可以是同步光学网络(SONET)卡、以太网络(Ethernet)卡、符记环(tokenring)卡、或其它类型的接口,藉以提供与网络160的通信连结。同步光学网络(SONET)和以太网络(Ethernet)在本领域是已知的,因此便不再详述。According to specific design environment implementation, this network interface device 140 can be a synchronous optical network (SONET) card, an Ethernet (Ethernet) card, a symbol ring (tokenring) card, or other types of interfaces, so as to provide the interface with the network 160. communication link. Synchronous Optical Networks (SONET) and Ethernet Networks (Ethernet) are known in the art and therefore will not be described in detail.

应该了解的是,这个数字处理系统100仅是表示系统的一个范例,其可以具有许多不同的架构和结构、并且可以应用于本发明。举例来说,部分系统通常会具有多个总线,诸如:周边总线、专用快取总线等等。作为另一个示例,数字处理系统100还可以包括控制器(未示出),耦合至总线105以协助处理器110达成数据包往返网络接口装置140的移动。在另一实施例,数字处理系统可以是网络中的中间节点(例如:交换器或路由器),其提供网络对网络(network tonetwork)的接口。这类中间节点可以提供相似网络或不同网络间的接口。举例来说,这个网络媒体160可以是光纤媒体,且网络媒体N可以是传输线媒体。It should be appreciated that this digital processing system 100 is merely representative of one example of a system that can have many different architectures and structures and that can be used with the present invention. For example, some systems usually have multiple buses, such as peripheral buses, dedicated cache buses, and so on. As another example, digital processing system 100 may also include a controller (not shown) coupled to bus 105 to assist processor 110 in effecting the movement of data packets to and from network interface device 140 . In another embodiment, the digital processing system may be an intermediate node (eg, a switch or router) in a network that provides a network-to-network interface. Such intermediate nodes can provide interfaces between similar networks or different networks. For example, the network medium 160 can be fiber optic medium, and the network medium N can be transmission line medium.

第2图表示网络接口装置的一个实施例,其包括数据对准器。网络接口装置210可以是第1图所示的网络接口装置140。数据,其呈现封包形式,会穿过网络接口装置210、并沿着数据路径从系统205传输至网络295。这个数据路径是这个网络接口装置210的结构部分,在控制的影响下,对数据进行处理、并将数据由一侧(例如:线路211)传送至另一侧(例如:线路236)。网络接口装置210会将数据格式化为封包协议结构,藉以方便在这个网络295上传输。这个封包协议用来指定封包内的信息排列。在一个实施例中,举例来说,这个系统205可以是客户端或服务器,且这个网络295可以是同步光学网络(SONET)或以太网络(Ethernet),如先前所述。Figure 2 shows one embodiment of a network interface device that includes a data aligner. The network interface device 210 may be the network interface device 140 shown in FIG. 1 . Data, in the form of packets, travels through network interface device 210 and along a data path from system 205 to network 295 . The data path is the structural part of the network interface device 210 that processes and transfers data from one side (eg line 211 ) to the other side (eg line 236 ) under the influence of controls. The network interface device 210 will format the data into a packet protocol structure, so as to facilitate transmission on the network 295 . This packet protocol is used to specify the arrangement of information within a packet. In one embodiment, for example, the system 205 can be a client or a server, and the network 295 can be a Synchronous Optical Network (SONET) or Ethernet, as previously described.

另外,封包会根据一出口(egress)方向传输,其由系统205、经网络接口装置210、到网络295。另外,封包会根据一进入(ingress)方向接收,其由网络295、经网络接口装置210、到系统205。在一实施例中,网络接口装置210可以具有先进先出(FIFO)内存220及240、数据对准器230及250、封包检查产生器235、封包错误检查器245、封装器225、及解封装器255。In addition, the packets are transmitted according to an egress direction, which is from the system 205 , through the network interface device 210 , to the network 295 . Additionally, packets are received according to an ingress direction, from the network 295 , through the network interface device 210 , to the system 205 . In one embodiment, the network interface device 210 may have first-in-first-out (FIFO) memories 220 and 240, data aligners 230 and 250, packet check generator 235, packet error checker 245, encapsulator 225, and decapsulator device 255.

在线路211上,先进先出(FIFO)内存220接收系统205的封包。然而,大于网络接口装置210的处理能力的传输封包却可能会导致传输遗漏(transmission drop)。因此,先进先出(FIFO)内存220进行操作来缓冲由系统205侧边接收的数据流,藉以处理数据流的封包过载(overload)。同样地,先进先出(FIFO)内存240则会操作来缓冲经由网络295接收的数据流。在另一实施例中,缓冲也可以利用其它装置达成,举例来说,利用内存(例如:随机存取内存(RAM)、先进先出(FIFO)内存),其耦合至网络接口装置210或位于系统205内的内存(例如:图1所示的系统内存120)。On line 211 , first in first out (FIFO) memory 220 receives packets from system 205 . However, transmission packets larger than the processing capability of the network interface device 210 may cause transmission drops. Accordingly, FIFO memory 220 operates to buffer data streams received from the side of system 205 to handle packet overload of the data streams. Likewise, first-in-first-out (FIFO) memory 240 operates to buffer data streams received via network 295 . In another embodiment, buffering can also be achieved using other devices, for example, using memory (eg, random access memory (RAM), first-in-first-out (FIFO) memory), which is coupled to the network interface device 210 or located at Memory within the system 205 (for example: the system memory 120 shown in FIG. 1 ).

在线路224上,封包会经由先进先出(FIFO)内存220传输至封装器225。封装器225根据装帧(framing)规格,将封包装帧。这个装帧规格是“协议位”的规格,其环绕在“数据位”四周,藉以使数据能够“装帧”成数个段落。另外,这个装帧规格也可以使接收者能够沿着数据流的各点进行同步处理。On line 224 , the packet is transmitted via first-in-first-out (FIFO) memory 220 to encapsulator 225 . The encapsulator 225 framing the envelope according to the framing specification. This framing specification is the specification of "protocol bits", which surround the "data bits", so that the data can be "framed" into several paragraphs. In addition, this framing specification also enables receivers to synchronize processing at various points along the data stream.

在线路229上,这个数据流封包由封装器225输出到数据对准器230。数据对准器230进行操作来及时地收集任意时间到达的接收封包。数据对准器230会接收各种字节大小的未对准数据、并将这些数据对准以得到一封包字节。另外,在线路234上,数据对准器230会输出对准数据到封包检查产生器235。在封包内,由于封包操作的原因,输出到封包错误检查器的字节组件并不见得会具有正确的数据。因此,在线路233上,数据对准器230也需要传输控制信号到封包检查产生器235,藉以表示封包内的字节是正确的。另外,数据对准器230也需要传输其它控制信号到封包检查产生器235,诸如:封包起点(SOP)和封包终点(EOP)控制信号。数据对准器230的操作将会详细说明如下。This data stream packet is output by encapsulator 225 to data aligner 230 on line 229 . The data aligner 230 operates to timely collect received packets arriving at any time. The data aligner 230 receives unaligned data of various byte sizes and aligns the data to obtain a packet of bytes. Additionally, the data aligner 230 outputs alignment data to the packet inspection generator 235 on line 234 . Within a packet, the byte component output to the packet error checker may not have the correct data due to the packet operation. Therefore, on the line 233, the data aligner 230 also needs to transmit a control signal to the packet check generator 235 to indicate that the bytes in the packet are correct. In addition, the data aligner 230 also needs to transmit other control signals to the packet inspection generator 235, such as start-of-packet (SOP) and end-of-packet (EOP) control signals. The operation of the data aligner 230 will be described in detail as follows.

在一实施例中,封包检查产生器235用以确认这个数据流的正确性。除了接收系统的封包错误检查器(例如:封包错误检查器245)可能使用的数据流以外,封包检查产生器235也会产生一输出,藉以决定封包是否良好、或这个数据流是否具有错误。在线路236上,这个数据流会传送至网络295。举例来说,部分封包(诸如:以太网络(Ethernet)封包)会具有三十二位的循环冗余检查(CRC)。在一实施例中,错误检测码(诸如:三十二位的循环冗余检查(CRC)码)可以附加在这个封包的结尾处,藉以提供自动错误检测的功能。应该注意的是,然而,这个三十二位循环冗余检查(CRC)数据可以放置在这个封包的任意位置。错误检测码(诸如:循环冗余检查(CRC)码)是由数据区块导出的数目,藉以检测错误(detect corruption)。在另一实施例中,不同于循环冗余检查(CRC)的错误检测码及方法可以使用。In one embodiment, the packet inspection generator 235 is used to confirm the correctness of the data flow. In addition to the data stream that may be used by the receiving system's PEC (eg, PEC 245 ), the PEC generator 235 also produces an output to determine whether the packets are good or whether the data stream has errors. On line 236 , this data stream is sent to network 295 . For example, some packets (such as Ethernet packets) have a 32-bit cyclic redundancy check (CRC). In one embodiment, an error detection code (such as a 32-bit cyclic redundancy check (CRC) code) may be appended at the end of the packet to provide automatic error detection. It should be noted, however, that the thirty-two bits of cyclic redundancy check (CRC) data can be placed anywhere in the packet. An error detection code (such as a cyclic redundancy check (CRC) code) is a number derived from a data block to detect corruption. In another embodiment, error detection codes and methods other than cyclic redundancy checking (CRC) may be used.

利用封包错误检查,耦合至网络295的接收器系统(图中未示)便可以经由数据封包重新计算检查码,并将这个检查码与原始传输的检查数值比较,藉以检测传输错误。应该注意的是,封包错误产生器235并不需要放置在传输级电路的结尾处,也可以放置在数据流路径的任意位置。With packet error checking, a receiver system (not shown) coupled to network 295 can recalculate a checksum from a data packet and compare the checksum with the checksum of the original transmission to detect transmission errors. It should be noted that the packet error generator 235 does not need to be placed at the end of the transmission stage circuit, but can also be placed at any position in the data flow path.

在线路256上,网络295的封包输入至解封装器255。解封装器255用来移除数据流封包的装帧数据。当数据流装帧数据被移除时,数据流便会变成不规则的(亦即:不连续的)。在线路251上,数据流会输入到数据对准器250。数据对准器250进行操作来收集接收数据流的不连续字节、并封装(或对准)这些封包的字节以得到连续数据流。The packets from network 295 are input to decapsulator 255 on line 256 . The decapsulator 255 is used to remove the framing data encapsulated in the data stream. When data stream framing data is removed, the data stream becomes irregular (ie, discontinuous). The data stream is input to data aligner 250 on line 251 . Data aligner 250 operates to collect discontiguous bytes of a received data stream and pack (or align) these packed bytes into a continuous data stream.

在线路246上,数据对准器250的输入提供给封包错误检查器245。封包错误检查器245可以用来确认这个数据流的正确性。封包错误检查器245利用这个接收数据流产生一码、并将这个产生的码与内嵌在数据流的接收码比较,藉以决定封包是否良好、或这个数据流是否具有错误。另外,在线路241上,封包错误检查器245的输出会传送至先进先出(FIFO)内存240。先进先出(FIFO)内存240进行操作来缓冲在线路242上、输出至这个系统205的数据流。The input to data aligner 250 is provided to packet error checker 245 on line 246 . Packet error checker 245 can be used to confirm the correctness of this data stream. The packet error checker 245 uses the received data stream to generate a code and compares the generated code with the received code embedded in the data stream to determine whether the packet is good or whether the data stream has errors. Additionally, the output of packet error checker 245 is sent to first-in-first-out (FIFO) memory 240 on line 241 . First in first out (FIFO) memory 240 operates to buffer the data stream output to the system 205 on line 242 .

先进先出(FIFO)内存、封包错误检查器、封装器、及解封装器均是已知技术,因此,有关这些装置的操作细节便不再提供。应该注意的是,在第2图中,虽然网络接口装置210的各个零件是以分离方式表示,但是,这种表示方式仅是用来介绍进入(ingress)及出口(egress)方向的数据流动操作。在另一实施例中,网络接口装置210的各个零件可以组合成一个或更多个集成电路(IC)。First-in-first-out (FIFO) memory, packet error checkers, encapsulators, and decapsulators are all known techniques, and therefore details of the operation of these devices are not provided. It should be noted that in Fig. 2, although each part of the network interface device 210 is shown in a separate manner, this representation is only used to introduce data flow operations in the ingress and egress directions. . In another embodiment, various components of the network interface device 210 may be combined into one or more integrated circuits (ICs).

第3图表示封包结构的一实施例及其对应的范例字节致能。封包310可以具有一个或更多个组件320、330、340、及350。各个封包组件可以具有一个或更多个字节,举例来说,十六字节。虽然下列说明利用十六字节的封包组件大小做为范例,但是,其它封包组件字节大小也可以使用,举例来说,三十二字节、八字节、及四字节。FIG. 3 shows an embodiment of a packet structure and its corresponding example byte enables. Package 310 may have one or more components 320 , 330 , 340 , and 350 . Each packet element may have one or more bytes, for example, sixteen bytes. Although the following description utilizes a packet element size of sixteen bytes as an example, other packet element byte sizes may be used, for example, thirty-two bytes, eight bytes, and four bytes.

封包310包括单一标头组件320、单一结尾组件350、及主体335,其可以包括一个或更多个主体组件(例如:组件330及340)。标头组件320表示封包的起点、且其字节位置可以部分或全部填满数据位。标头320可以通过封包起点(SOP)控制信号325的确认来予以决定,其将数据位部分或全部填满标头组件320的字节。Packet 310 includes a single header element 320, a single trailer element 350, and a body 335, which may include one or more body elements (eg, elements 330 and 340). The header element 320 represents the start of the packet, and its byte position can be partially or completely filled with data bits. The header 320 may be determined by assertion of a start-of-packet (SOP) control signal 325 , which partially or fully fills the bytes of the header element 320 with data bits.

结尾组件350表示封包的结尾、且其字节位置可以部分或全部填满数据位。结尾组件350可以透过封包结尾(EOP)控制信号355的确认来予以决定,其将数据位部分或全部填满这个结尾组件350的字节。主体组件的所有字节位置填满数据位(例如:主体组件340)。部分主体是指部分填满数据位的主体组件(例如:主体组件330),其并不是标头组件320、也不是结尾组件350。空洞(hole)是封包310内、或封包310及其它封包(图中未示)间的空白组件。End element 350 represents the end of the packet and its byte position may be partially or fully filled with data bits. The end element 350 can be determined by the acknowledgment of an end-of-packet (EOP) control signal 355 , which partially or fully fills the bytes of the end element 350 with data bits. All byte positions of the body element are filled with data bits (eg: body element 340). A partial body refers to a body element (eg, body element 330 ) that is partially filled with data bits, which is neither the header element 320 nor the trailer element 350 . A hole is a blank component within the packet 310 or between the packet 310 and other packets (not shown).

第3图还表示范例字节致能321、331、341、及351,其可以对应于这些封包组件。字节致能“1”表示:对应的字节位置具有数据。字节致能“0”表示:对应的字节位置没有数据。这些字节致能传送至缓冲器的控制部分,其将配合第4图及第7图说明如下。FIG. 3 also shows example byte enables 321, 331, 341, and 351, which may correspond to these packet elements. A byte enable of "1" indicates that the corresponding byte position has data. Byte enable "0" means: the corresponding byte position has no data. These bytes enable transfer to the control portion of the buffer, which will be described below in conjunction with FIGS. 4 and 7 .

第4图表示数据对准器的一实施例。在一实施例中,数据对准器400具有二级电路(第一级电路404及第二级电路406)流线,其利用中间缓冲器420分隔。中间缓冲器420进行操作来储存第一级电路404及第二级电路406间的所有未通过数据。数据对准器400还包括缓冲器410及430,其分别耦合至第一级电路404的输入及第二级电路406的输出。在一实施例中,缓冲器410、420、及430可以是缓存器。缓冲器410、420、及430进行操作来储存先前电路级接收的数据。另外,数据对准器400可以具有控制缓冲器415、425、及435,其进行操作来储存这些封包组件的字节致能,如下文所述。缓冲器及缓存器属于已知技术,因此,其详细说明将不再提供。Figure 4 shows an embodiment of a data aligner. In one embodiment, the data aligner 400 has two-level circuit (first-level circuit 404 and second-level circuit 406 ) streamlines, which are separated by an intermediate buffer 420 . The intermediate buffer 420 operates to store all failed data between the first stage circuit 404 and the second stage circuit 406 . Data aligner 400 also includes buffers 410 and 430 coupled to the input of first stage circuit 404 and the output of second stage circuit 406, respectively. In one embodiment, the buffers 410, 420, and 430 may be registers. Buffers 410, 420, and 430 operate to store data received by previous circuit stages. Additionally, data aligner 400 may have control buffers 415, 425, and 435 that operate to store byte enables for these packed elements, as described below. Buffers and registers are known technologies, therefore, their detailed description will not be provided.

在一实施例中,举例来说,缓冲器410、420、及430具有十六字节的大小。在另一实施例中,缓冲器410、420、及430可以根据系统使用的特定字节方法,具有其它大小的字节数目,举例来说,三十二字节、八字节、及四字节。In one embodiment, buffers 410, 420, and 430 have a size of sixteen bytes, for example. In alternative embodiments, buffers 410, 420, and 430 may have other sizes of byte numbers, for example, thirty-two bytes, eight bytes, and four words, depending on the particular byte method used by the system. Festival.

缓冲器410、420、及430各自具有时脉输入,其耦合以经由线路481接收时脉信号。这个时脉信号可以经由这个数据信号恢复、或可以利用时脉产生器(图中未示)产生。这个时脉信号包括多个时脉周期,藉以执行数据对准器400的操作时序。Buffers 410 , 420 , and 430 each have a clock input coupled to receive a clock signal via line 481 . The clock signal can be recovered from the data signal, or can be generated by a clock generator (not shown). The clock signal includes a plurality of clock periods to implement the operation sequence of the data aligner 400 .

缓冲器410具有输入,其耦合以在线路411上接收数据封包。缓冲器410分别在线路412及413上,输出这些数据封包至旋转器440及控制器450。旋转器440的输出经由线路441耦合至中间缓冲器420及多任务器460。中间缓冲器420的输出在线路421上,耦合至多任务器470的数据输出。多任务器470的输出经由线路471耦合至缓冲器430。Buffer 410 has an input coupled to receive data packets on line 411 . Buffer 410 outputs these data packets to rotator 440 and controller 450 on lines 412 and 413, respectively. The output of rotator 440 is coupled to intermediate buffer 420 and multiplexer 460 via line 441 . The output of intermediate buffer 420 is coupled to the data output of multiplexer 470 on line 421 . The output of multiplexer 470 is coupled to buffer 430 via line 471 .

控制器450可以用来控制多任务器460及470的操作,藉以通过字节数据、控制旋转器440的操作、产生外部控制信号,诸如:封包起点(SOP)及封包结尾(EOP)、以及产生字节致能控制信号(如第3图所示)。控制器450也具有控制输出,其分别在线路452及459上耦合至旋转器440及多任务器460的控制输入、及在线路453上耦合至多任务器470的控制输入。The controller 450 can be used to control the operation of the multiplexers 460 and 470, thereby passing byte data, controlling the operation of the rotator 440, generating external control signals, such as: start-of-packet (SOP) and end-of-packet (EOP), and generating Byte enable control signal (as shown in Figure 3). Controller 450 also has control outputs coupled on lines 452 and 459 to the control inputs of rotator 440 and multiplexer 460 , respectively, and to the control input of multiplexer 470 on line 453 .

旋转器440进行操作以在这个控制器450的控制下,旋转一个或更多个字节至组件的不同字节时槽(或位置)。在一实施例中,控制器450可以在线路452上,施加旋转量控制信号至旋转器440。另外,旋转器440的输出经由多任务器480以做为缓冲器420的输入数据、及做为多任务器460的输入。这个旋转量控制信号的功能决定缓冲器410内容的旋转量,藉以连接缓冲器410的其余部分(若存在的话)及缓冲器420的其余部分(若存在的话)、并使缓冲420的内容可以适当地字节对准。为了决定这个旋转量,控制器450必须在发生实际旋转的一个时脉周期前,识别各种字节状态。Rotator 440 operates to rotate one or more bytes to different byte slots (or positions) of the component under the control of this controller 450 . In one embodiment, the controller 450 may apply a rotation amount control signal to the rotator 440 on the line 452 . In addition, the output of the rotator 440 is used as the input data of the buffer 420 and the input of the multiplexer 460 via the multiplexer 480 . The function of this rotation amount control signal determines the amount of rotation of the buffer 410 contents, thereby connecting the rest of the buffer 410 (if present) and the rest of the buffer 420 (if present), and allowing the contents of the buffer 420 to be properly rotated. Byte aligned. To determine this amount of rotation, the controller 450 must identify the various byte states one clock cycle before the actual rotation occurs.

在第一字节状态中,缓冲器410的内容利用穿过方式写入缓冲器420。没有字节路线会发生交叉,藉以使缓冲器410的字节0前进至缓冲器420的字节O;缓冲器410的字节1前进至缓冲器420的字节1;且以此类推。这种字节状态可能会发生在控制器450确定缓冲器420为空白、或缓冲器420具有封包结尾(EOP)信号的时候,其中封包级粒度(packet level granularity)必须要进行维护。这种字节状态也可能会发生在缓冲器410具有封包起点(SOP)信号的时候,无论缓冲器420具有任何状态。如此,缓冲器410及缓冲器420便不会具有相关性。在任何情况中,没有数据字节需要进行对准,且字节数据利用穿过方式写入。下一个周期的旋转量可以预测为十六减去缓冲器410的字节数目。In the first byte state, the contents of buffer 410 are written to buffer 420 using a pass-through method. No byte lanes are interleaved, whereby byte 0 of buffer 410 advances to byte 0 of buffer 420; byte 1 of buffer 410 advances to byte 1 of buffer 420; and so on. This byte state may occur when the controller 450 determines that the buffer 420 is empty, or the buffer 420 has an end-of-packet (EOP) signal, where packet level granularity must be maintained. This byte state may also occur when buffer 410 has a start-of-packet (SOP) signal, regardless of what state buffer 420 has. In this way, the buffer 410 and the buffer 420 will not have correlation. In any case, no data bytes need to be aligned, and byte data is written using pass-through. The amount of rotation for the next cycle can be predicted as sixteen minus the number of bytes in buffer 410 .

在第二字节状态中,缓冲器410的十六字节全部写入缓冲器420,其表示:缓冲器420在下一个周期中会完全填满。在这种情况中,这个旋转量可以预测为零,其也表示不会发生字节路线交叉。In the second byte state, all sixteen bytes of buffer 410 are written into buffer 420, which means that buffer 420 will be completely filled in the next cycle. In this case, this rotation amount can be predicted to be zero, which also means that byte-way crossings will not occur.

在第三字节状态中,缓冲器410的字节将不会写入缓冲器420。这类状态表示:缓冲器410包含封包结尾(EOP)信号,且缓冲器410及420的状态表示:这个数据可以直接在缓冲器410及420间传送至缓冲器430,进而排除后续数据平移至缓冲器410的需要。在这个情况中,这个旋转量可以预测为零。In the third byte state, bytes from buffer 410 will not be written to buffer 420 . Such states indicate that buffer 410 contains an end-of-packet (EOP) signal, and the states of buffers 410 and 420 indicate that this data can be transferred directly between buffers 410 and 420 to buffer 430, thereby precluding subsequent translation of data into the buffers. device 410 needs. In this case, this amount of rotation can be predicted to be zero.

在第四字节状态中,缓冲器410及缓冲器420的净正确字节数目超过十六、且缓冲器410的其余内容会利用适当的字节路线交叉而写入缓冲器420。在这个情况中,缓冲器410的后续输入必须进行预测。在这个情况中,这个旋转量系可以预测为三十二减去缓冲器410的净字节数目和缓冲器420的字节数目。In the fourth byte state, the net correct byte counts of buffer 410 and buffer 420 exceed sixteen and the remainder of buffer 410 is written to buffer 420 with appropriate byte lane interleaving. In this case, subsequent inputs to buffer 410 must be predicted. In this case, the rotation amount can be predicted to be thirty-two minus the net number of bytes of buffer 410 and the number of bytes of buffer 420 .

举例来说,缓冲器420可能具有十四个正确的(具有数据的)字节,且缓冲器410可能具有六个正确的字节。在下一个时脉周期中,十六字节会被传送至缓冲器430,而其余四个字节则会储存于缓冲器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},进而确保下一个输入会由左边第四个字节开始。另外,提前一个时脉周期则可以在前一个时脉周期中完成计算的功能。For example, buffer 420 may have fourteen correct bytes (with data), and buffer 410 may have six correct bytes. In the next clock cycle, sixteen bytes are transferred to the buffer 430 and the remaining four bytes are stored in the buffer 420 . In this way, the rotation amount of the next set of inputs can be predicted as 32-20=12. For vectors {15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, a rotation of "12" will result in a vector {11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12}, thus ensuring that the next input will start with the fourth byte from the left. In addition, the function of calculation can be completed in the previous clock cycle by advancing one clock cycle.

多任务器460、470、480基于施加至其控制输入的控制信号,藉以在两个数据输入间选择一个数据输入。多任务器属于已知技术,因此,其详细说明将不再提供。多任务器460的输出在线路461上耦合至多任务器470的数据输入。多任务器470的输出在线路471上耦合至缓冲器430。多任务器480的输出耦合至缓冲器420。多任务器460、470、及480分别在线路452、453、及455上,接收控制器450的控制输入的控制信号。应该注意的是,这些多任务器与其它零件分隔以便于讨论。这些多任务器可以位于其它零件区块内,举例来说,多任务器480可以位于缓冲器420内。The multiplexers 460, 470, 480 select a data input between two data inputs based on control signals applied to their control inputs. Multiplexers are known technology, therefore, a detailed description thereof will not be provided. The output of multiplexer 460 is coupled on line 461 to the data input of multiplexer 470 . The output of multiplexer 470 is coupled to buffer 430 on line 471 . The output of multiplexer 480 is coupled to buffer 420 . Multiplexers 460, 470, and 480 receive control signals from the control input of controller 450 on lines 452, 453, and 455, respectively. It should be noted that these multiplexers are separated from other components for ease of discussion. These multiplexers can be located in other component blocks, for example, the multiplexer 480 can be located in the buffer 420 .

施加至多任务器460及470的这些控制信号的功能经由缓冲器420的内容及缓冲器410的旋转内容,选择这个多任务器的输出。在一实施例中,这个施加控制信号可以是十六位控制信号,其为这个旋转量的函数,其相关于十六字节的横跨操作(spanning operation),如第10图所示。具有“1”的位置表示:选择旋转器440的旋转量,而具有“0”的位置则表示:选择缓冲器420的输出。这个旋转量的数值表示由位置0开始的这个多任务器控制信号向量的数目“1”。The function of these control signals applied to multiplexers 460 and 470 via the content of buffer 420 and the rotated content of buffer 410 selects the output of this multiplexer. In one embodiment, the applied control signal may be a sixteen-bit control signal that is a function of the rotation amount, which is associated with a sixteen-byte spanning operation, as shown in FIG. 10 . A position with a "1" means: select the rotation amount of the rotator 440 , and a position with a "0" means: select the output of the buffer 420 . The value of the rotation amount represents the number "1" of the multiplexer control signal vector starting from position 0.

控制器450也具有控制输出,其经由线路459耦合至缓冲器420。在一实施例中,这个经由线路459的缓冲器420的控制信号输出可以是十六位宽、且可以在基于先前讨论的旋转量选择这个缓冲器的内容后,一个字节接着一个字节地写入缓冲器420。另外,缓冲器420的控制信号输出亦可以用来决定缓冲器420在下一时脉周期中的正确字节。为了达成缓冲器420写入致能的决定,控制器450亦可以在一目前时脉周期中识别各种状态。Controller 450 also has a control output coupled to buffer 420 via line 459 . In one embodiment, the control signal output of the buffer 420 via line 459 may be sixteen bits wide and may be byte-by-byte after selecting the contents of this buffer based on the previously discussed rotation amount. Write buffer 420 . In addition, the control signal output of the buffer 420 can also be used to determine the correct byte of the buffer 420 in the next clock cycle. In order to achieve the decision to write enable the buffer 420, the controller 450 can also identify various states in a current clock cycle.

在第一情况中,缓冲器410的内容可以利用穿过方式写入缓冲器420。这种情况会发生在缓冲器420为空白的时候、或缓冲器420具有封包结尾(SOP)信号的时候,其中,这个封包粒度(packetgranularity)需要进行维护。另外,这种情况亦可能会发生在缓冲器410具有封包起点(SOP)信号的时候,无论缓冲器420具有任何状态。在这类情况中,对应缓冲器410的字节致能会变成缓冲器420的写入致能。In a first case, the content of buffer 410 may be written to buffer 420 using a pass-through. This situation can occur when the buffer 420 is empty, or when the buffer 420 has an end-of-packet (SOP) signal, where this packet granularity needs to be maintained. In addition, this situation may also occur when the buffer 410 has a start-of-packet (SOP) signal, no matter what state the buffer 420 has. In such cases, the byte enable for the corresponding buffer 410 becomes a write enable for the buffer 420 .

在第二情况中,缓冲410的十六字节会全部写入缓冲器420,其表示:缓冲器420在下一个时脉周期中会完全填满。在这类情况中,缓冲器420的写入致能将会全部为”1”。In the second case, all sixteen bytes of buffer 410 are written into buffer 420, which means that buffer 420 will be completely filled in the next clock cycle. In such cases, the write enables of buffer 420 will all be "1".

在第三情况中,缓冲器410的位均不会写入缓冲器420。缓冲器410会具有封包结尾(EOP)信号及缓冲器410及420的状态,藉以使数据可以直接传送至缓冲器430,进而排除后续输入的平移需要。在这类情况中,缓冲器420的写入致能将会全部为”0”。In the third case, none of the bits of buffer 410 are written into buffer 420 . Buffer 410 will have an end-of-packet (EOP) signal and the status of buffers 410 and 420 so that data can be passed directly to buffer 430, thereby eliminating the need for translation on subsequent inputs. In such cases, the write enable of buffer 420 will be all "0".

在第四情况中,缓冲器410及缓冲器420的净正确字节数目会超过十六、且缓冲器410的其余内容会利用适当的字节路径交叉,写入缓冲器420。在这种情况中,缓冲器420的写入致能可以计算为缓冲器410的正确字节数目加上缓冲器420的正确字节数目减去十六。In the fourth case, the net correct byte count of buffer 410 and buffer 420 would exceed sixteen and the remainder of buffer 410 would be written to buffer 420 using appropriate byte path interleaving. In this case, the write enable of buffer 420 can be calculated as the correct byte number of buffer 410 plus the correct byte number of buffer 420 minus sixteen.

先前所述的数据对准器400亦可以在线路411上接收各种字节大小的未对准数据、并对准这个数据以达成特定字节大小,其将配合第5图说明如下。数据对准器400可以支持数据封包,其可以具有标头组件、主体组件、及结尾组件。The previously described data aligner 400 can also receive unaligned data of various byte sizes on the line 411 and align this data to achieve a specific byte size, which will be described below with reference to FIG. 5 . Data aligner 400 can support data packets, which can have a header component, a body component, and a trailer component.

第5图表示一种数据对准方法的一个实施例。这种方法根据数据组件具有十六字节的数据方法进行说明。不过,类似的方法可以应用于其它字节封包方法,如先前所述。在一实施例中,数据对准器400可以启始为不具有任何数据。当数据封包的标头组件到达时,控制器450会决定这个标头组件是否具有少于十六字节的数据,如步骤510所示。若这个标头组件具有少于十六字节的数据,则这些字节传输到并保留在缓冲器420,藉以用于未来的封包步骤,如步骤520所示。若这个标头组件具有完整十六字节的数据,则这个数据会传送至缓冲器430以利用控制信号输出,如步骤530所示。Figure 5 shows an embodiment of a data alignment method. This method is described in terms of a data method with a data component having sixteen bytes. However, a similar approach can be applied to other byte packing methods, as previously described. In an embodiment, data aligner 400 may start without any data. When the header element of the data packet arrives, the controller 450 determines whether the header element has less than 16 bytes of data, as shown in step 510 . If the header element has less than sixteen bytes of data, those bytes are transferred to and retained in the buffer 420 for future packing steps, as shown in step 520 . If the header element has complete 16-byte data, then this data is sent to the buffer 430 for output using the control signal, as shown in step 530 .

这个标头组件可以跟随主体组件或结尾组件。若这个标头组件跟随主体组件,由于中间缓冲器420的数据字节数目及后续主体组件的字节数目会大于或等于十六字节,因此,全部十六字节,在及时处理后,将会随着控制器450产生的控制信号传送至缓冲器430,藉以表示封包起点(SOP),如步骤540所示。This header component can follow either a body component or an end component. If this header element follows the body element, since the number of data bytes in the intermediate buffer 420 and the number of bytes in the subsequent body element will be greater than or equal to sixteen bytes, all sixteen bytes will be processed in time after being processed in time. The control signal generated by the controller 450 is sent to the buffer 430 to represent the start of packet (SOP), as shown in step 540 .

基于个别具有数据的字节数目,决定要选择中间缓冲器420的字节或缓冲器410的新输入字节。缓冲器410的新输入字节旋转先前由缓冲器4410直接传送的字节数目,藉以补偿净十六字节,如步骤550所示。这些旋转字节会写入中间缓冲器420。步骤540至550会重复进行,直到控制器450发现:结尾组件已经到达,如步骤560所示。Based on the number of bytes with data individually, the decision is made to select either the bytes of the intermediate buffer 420 or the new input bytes of the buffer 410 . New incoming bytes to buffer 410 are rotated by the number of bytes previously transferred directly by buffer 4410 to compensate for the net sixteen bytes, as shown in step 550 . These rotated bytes are written to intermediate buffer 420 . Steps 540 to 550 are repeated until the controller 450 finds that the end component has arrived, as shown in step 560 .

当结尾组件已经到达以后,缓冲器430的数据会在线路431上输出,无论这个净封包具有任何大小,藉以维护各个组件的封包边界,如步骤570所示。利用这种方法,数据对准器400便可以将标头组件、主体组件、及结尾组件(其中,这个标头组件和/或这个结尾组件可以部分填满数据)转换为连续封包,其具有一个或更多个主体组件及一个结尾组件。When the end component has arrived, the data of buffer 430 is output on line 431 , regardless of the size of the net packet, so as to maintain the packet boundary of each component, as shown in step 570 . In this way, the data aligner 400 can convert the header element, the body element, and the trailer element (wherein the header element and/or the trailer element can be partially filled with data) into continuous packets, which have a or more body components and an end component.

举例来说,标头组件可以在缓存器410中接收、并利用控制器450决定为包含七字节数据。因此这个标头组件具有少于十六字节数据,因此,这七字节数据会传送并储存于中间缓冲器420。下一个接收组件是主体组件。这个主体组件利用控制器450决定为具有十六字节数据,且控制器450进行计算以决定总共收到二十三字节的数据。因为全部数据已超过数据对准器400的十六字节大小,因此,控制器450会选择这个具有十六字节数据的主体组件的最低九字节,藉以与这个标头组件的七字节数据一起输出为一封包的十六字节主体组件。为达此目的,控制器450会将这个选择的九字节传送至旋转器440,藉以做为多任务器460的输入。这九个旋转字节,连同缓冲器420的七个字节,随后用以做为多任务器470的输入。控制器450在线路453传送多任务器控制信号至多任务器470,藉以得到多任务器460的十六个连接字节并进行输出。For example, a header element may be received in buffer 410 and determined by controller 450 to contain seven bytes of data. Therefore, the header element has less than 16 bytes of data, therefore, the 7 bytes of data are transmitted and stored in the intermediate buffer 420 . The next receiving component is the main component. This body component is determined by the controller 450 to have sixteen bytes of data, and the controller 450 performs calculations to determine that a total of twenty-three bytes of data have been received. Because all data have exceeded the size of sixteen bytes of the data aligner 400, therefore, the controller 450 will select the lowest nine bytes of the main body component with sixteen bytes of data to match the seven bytes of the header component The data is output together as the sixteen-byte body component of a packet. To this end, the controller 450 sends the selected nine bytes to the rotator 440 as an input to the multiplexer 460 . These nine rotation bytes, together with the seven bytes of buffer 420 , are then used as inputs to multiplexer 470 . The controller 450 transmits a multiplexer control signal to the multiplexer 470 on the line 453 , so as to obtain and output sixteen connection bytes of the multiplexer 460 .

如此,数据对准器400在缓存器430中具有十六字节以供输出,并在缓存器410中具有其余七字节。因为这个十六字节主体组件的最低九字节已经输出,因此,缓冲器410的其余七字节便可以由旋转器440输出至低字节位置、并写入缓冲器420。随后,这些旋转字节会输入并储存于中间缓冲器420。当接收到下一个主体组件后,上述步骤便可以重复,藉以产生另一封包的十六字节组件以输出至这个缓存器430。As such, data aligner 400 has sixteen bytes in buffer 430 for output and the remaining seven bytes in buffer 410 . Since the lowest nine bytes of the sixteen-byte body element have already been output, the remaining seven bytes of buffer 410 can be output by rotator 440 to the lower byte position and written into buffer 420 . These rotated bytes are then input and stored in the intermediate buffer 420 . When the next body element is received, the above steps can be repeated to generate another sixteen-byte element of the packet to output to the buffer 430 .

当收到结尾组件以后(诸如:控制器450收到封包结束(EOP)信号后),这个结尾组件中具有数据的字节会与中间缓冲器420的字节组合、并输入至缓存器430,而不需要等待十六字节的封包字节大小。举例来说,若中间缓冲器420具有七个字节,且接收结尾组件具有一字节的位数据,则控制器450会传送这一个字节至旋转器440。随后,储存于中间缓冲器420的七个字节及这个一字节的旋转输出便会由控制器450传送至多任务器470,藉以在下一个时脉周期中输出。When the end component is received (such as: after the controller 450 receives an end-of-packet (EOP) signal), the bytes with data in the end component will be combined with the bytes of the intermediate buffer 420 and input to the buffer 430, Instead of waiting for the packet byte size of sixteen bytes. For example, if the middle buffer 420 has seven bytes and the receiving end element has one byte of bit data, the controller 450 will send this one byte to the rotator 440 . Then, the seven bytes stored in the intermediate buffer 420 and the rotated output of the one byte are sent from the controller 450 to the multiplexer 470 for output in the next clock cycle.

如先前所述,第5图的方法可以处理相当规则的数据流,其会在封包内具有标头、主体、及结尾组件。在另一实施例中,网络协议中可能会遇到其它类型的数据流(以下称为复杂数据流,藉以与第4图及第5图所述的简易数据流区别),其中,这种规则性可能会受到任意致能或失能字节的影响,举例来说,在标准同步光学网络封包(PacketOver SONET,POS)协议的干序列(dry sequence)。在一实施例中,复杂数据流可能会具有空洞(hole)或部分主体组件,如先前第3图所述。这类复杂数据流可以透过将这些组件映像至简易数据流(如第4图及第5图所述)以进行处理。As previously mentioned, the method of FIG. 5 can handle fairly regular data streams, which will have header, body, and trailer elements within the packets. In another embodiment, other types of data streams may be encountered in network protocols (hereinafter referred to as complex data streams to distinguish them from the simple data streams described in Figures 4 and 5), wherein such rules Performance may be affected by any enable or disable byte, for example, in the dry sequence of the standard Packet Over SONET (POS) protocol. In one embodiment, complex data streams may have holes or partial body components, as previously described in FIG. 3 . Such complex data flows can be handled by mapping these components to simple data flows (as described in Figures 4 and 5).

第6图系表示在数据流中,一种处理空洞(hole)或部分主体组件的映像方法的一实施例。在一实施例中,复杂数据流的标头组件可以映像610至简易数据流的标头组件;复杂数据流的主体组件可以映像620至简易数据流的主体组件;且复杂数据流的结尾组件可以映像630至简易数据流的结尾组件。空洞(hole)可以透过保留状态640及不执行数据对准器动作而加以处理,其将配合第7图的数据对准器700说明如下。FIG. 6 shows an embodiment of a mapping method for handling holes or partial body components in a data stream. In one embodiment, the header component of the complex dataflow can be mapped 610 to the header component of the simple dataflow; the body component of the complex dataflow can be mapped 620 to the body component of the simple dataflow; and the end component of the complex dataflow can be Map 630 to the end component of the simple dataflow. Holes can be handled by leaving state 640 and not performing data aligner actions, which will be described below in conjunction with data aligner 700 of FIG. 7 .

部分主体功能可以映像650及660至简易数据流的结尾组件,其将结尾组件分类为两种不同的结尾组件:结尾组件A及结尾组件B。结尾组件A表示:第7图的部分主体及数据对准器700的中间缓冲器720具有数据位的净字节数目少于十六字节的结尾组件。结尾组件B表示:第7图的部分主体及数据对准器700的中间缓冲器720具有数据位的净字节数目大于或等于十六字节的结尾组件。Part of the body function can be mapped 650 and 660 to the end element of the simple data flow, which classifies the end element into two different end elements: end element A and end element B. End element A indicates that the partial body of FIG. 7 and the intermediate buffer 720 of the data aligner 700 have an end element with a net number of data bits less than sixteen bytes. The end element B indicates that the partial body of FIG. 7 and the intermediate buffer 720 of the data aligner 700 have an end element with a net byte number of data bits greater than or equal to sixteen bytes.

第7图表示数据对准器的另一实施例,其可以实施于复杂数据流。在一实施例中,数据对准器700可以具有两个流线电路级(第一级电路704及第二级电路706),其利用缓冲器720及730分隔。数据对准器700具有缓冲器730、旋转器740、控制器750、以及多任务器760、770、780、及790。旋转器740及控制器750的操作方式类似于第4图的旋转器440及控制器450,除非有另外指明。Figure 7 shows another embodiment of a data aligner that can be implemented for complex data streams. In one embodiment, data aligner 700 may have two streamlined stages (first stage 704 and second stage 706 ), which are separated by buffers 720 and 730 . Data aligner 700 has buffer 730 , rotator 740 , controller 750 , and multiplexers 760 , 770 , 780 , and 790 . The rotator 740 and controller 750 operate in a manner similar to the rotator 440 and controller 450 of FIG. 4 unless otherwise indicated.

缓冲器710、720、及730分别具有一时脉输入,其耦合以经由线路781接收时脉信号。这个时脉信号可以经由这个数据信号回复、或可以利用时脉产生器(图中未示)产生。另外,这个时脉信号可以包含多个时脉周期,藉以执行数据对准器700的操作时序。Buffers 710 , 720 , and 730 each have a clock input coupled to receive a clock signal via line 781 . The clock signal can be recovered via the data signal, or can be generated by a clock generator (not shown). In addition, the clock signal may include multiple clock periods, so as to implement the operation sequence of the data aligner 700 .

缓冲器720进行操作以储存第一电路级704及第二电路级706间的所有未通过数据。数据对准器700包括缓冲器710及缓冲器730,分别耦合至第一级电路704及第二级电路706的输入。在一实施例中,缓冲器710、720、及730可以是缓存器。控制缓冲器715、725、及735耦合至控制器750、并操作以储存字节致能。The buffer 720 operates to store all failed data between the first circuit stage 704 and the second circuit stage 706 . The data aligner 700 includes a buffer 710 and a buffer 730 coupled to the inputs of the first stage circuit 704 and the second stage circuit 706 respectively. In one embodiment, the buffers 710, 720, and 730 may be registers. Control buffers 715, 725, and 735 are coupled to controller 750 and operate to store byte enables.

缓冲器710具有输入,其耦合以在线路711接收数据封包、并分别在线路712及713上,将这些数据封包输出至旋转器740及控制器750。旋转器740的输出耦合至多任务器780的数据输入,而多任务器780的另一数据输入则是耦合以在线路776上接收多任务器775的输出。另外,旋转器740的输出还耦合以经由线路776接收多任务器775的输出。多任务器780的输出耦合至缓冲器720的输入。Buffer 710 has an input coupled to receive data packets on line 711 and output these data packets to rotator 740 and controller 750 on lines 712 and 713, respectively. The output of rotator 740 is coupled to a data input of multiplexer 780 , while another data input of multiplexer 780 is coupled to receive the output of multiplexer 775 on line 776 . Additionally, the output of rotator 740 is also coupled to receive the output of multiplexer 775 via line 776 . The output of multiplexer 780 is coupled to the input of buffer 720 .

旋转器740进行操作以在控制器750的控制下,将一个或更多个字节旋转至不同的字节时槽(或位置)。在一实施例中,控制器750可以经由线路758,施加旋转量控制信号至旋转器740。这个旋转量控制信号的功能决定缓冲器710内容的旋转量,藉以使缓冲器710的其余部分(若存在的话)及缓冲器720的其余部分(若存在的话)能够连接、且缓冲器720的内容可以适当地字节对准。Rotator 740 operates to rotate one or more bytes to different byte slots (or positions) under the control of controller 750 . In one embodiment, the controller 750 may apply a rotation amount control signal to the rotator 740 via a line 758 . The function of this rotation amount control signal determines the amount of rotation of the contents of buffer 710 so that the remainder of buffer 710 (if present) and the remainder of buffer 720 (if present) can be connected and the contents of buffer 720 May be properly byte-aligned.

为了决定这个旋转量,控制器750可以在发生实际旋转的一个时脉周期前,识别各种字节状态,如第4图的旋转器440所述。提前一个时脉周期的手段可以维持,且同时支持一部分主体组件的结构。在复杂数据流中,下一个时脉周期的缓冲器720字节数目进行预测、并取代为目前计算的净正确数目。在目前计算中,这个净正确数目乃是缓冲器710的字节数目加上缓冲器720的字节数目。在支持部分主体组件及预测后续输入的旋转量时,这个目前净正确字节计算会变成缓冲器720的字节数目。这个旋转量用以做为其它控制信号的控制及种子。To determine this amount of rotation, the controller 750 can identify various byte states one clock cycle before the actual rotation occurs, as described for the rotator 440 of FIG. 4 . The means of advancing one clock cycle can be maintained while supporting a part of the structure of the main components. In complex data streams, the number of buffer 720 bytes for the next clock cycle is predicted and replaced with the net correct number calculated so far. In the present calculation, this net correct number is the number of bytes in buffer 710 plus the number of bytes in buffer 720 . This current net correct byte count becomes the number of bytes in buffer 720 when supporting partial body components and predicting subsequent input rotations. This amount of rotation is used as a control and seed for other control signals.

控制器750具有控制输出,其分别经由线路752、753、754、及755耦合至旋转器740及多任务器760、770、775、及780的控制输入。控制750也具有控制输出,其经由线路759耦合至旋转器740;以及控制输入,其经由线路759耦接至缓冲器720。Controller 750 has control outputs coupled to control inputs of rotator 740 and multiplexers 760, 770, 775, and 780 via lines 752, 753, 754, and 755, respectively. Control 750 also has a control output coupled to rotator 740 via line 759 , and a control input coupled to buffer 720 via line 759 .

多任务器760的输出经由线路761耦合至多任务器770的数据输入。缓冲器720的输出经由线路耦合至多任务器770的另一数据输入及多任务器775的数据输入。多任务器770的输出经由线路771耦合至缓冲器730。缓冲器730包括数据输出及控制输入。缓冲器730的数据输出经由线路779耦合至多任务器775的数据输入。缓冲器730的控制输出在线路778上输出。The output of multiplexer 760 is coupled to the data input of multiplexer 770 via line 761 . The output of buffer 720 is coupled to another data input of multiplexer 770 and a data input of multiplexer 775 via lines. The output of multiplexer 770 is coupled to buffer 730 via line 771 . Buffer 730 includes data outputs and control inputs. The data output of buffer 730 is coupled to the data input of multiplexer 775 via line 779 . The control output of buffer 730 is output on line 778 .

控制器750具有控制输出,其经由线路759耦合至缓冲器720、及经由线路751耦合至这个缓冲器730。在一实施例中,分别经由线路759及751输出至缓冲器720及730的控制信号可以是十六位宽度。这个缓冲器720的控制信号在基于这个旋转量控制信号以选择这个择缓冲器的内容以后,一个字节接着一个字节地控制这个缓冲器的写入动作。另外,输出至缓冲器720的这个控制信号也可以决定下一个时脉周期的缓冲器720的正确字节。为了决定缓冲器720的写入致能,控制器750会在目前时脉周期内识别各种状态,如先前的第4图所述。空洞(hole)的接收可以利用状态保留方式予以处理。Controller 750 has a control output coupled to buffer 720 via line 759 and to this buffer 730 via line 751 . In one embodiment, the control signals output to buffers 720 and 730 via lines 759 and 751 respectively may be sixteen bits wide. The control signal of the buffer 720 controls the write operation of the buffer byte by byte after selecting the content of the select buffer based on the rotational amount control signal. In addition, the control signal output to the buffer 720 can also determine the correct byte of the buffer 720 for the next clock cycle. In order to determine the write enable of the buffer 720, the controller 750 recognizes various states during the current clock cycle, as previously described in FIG. 4 . Hole receptions can be handled in a state-preserving manner.

举例来说,部分主体组件的接收说明如下。假设在数据对准器700的激活时,相同封包内具有六字节跟随6字节跟随八字节的序列。则缓冲器710具有八字节、缓冲器720具有六字节、且缓冲器710不具有封包结尾(EOP)信号的情况将无法包含于先前第4图所述。在这种情况下,我们会想要将十四个字节一起传送至缓冲器730。在下一个时脉周期中,控制器750会决定:这是个部分主体组件的情况、并恢复缓冲器730的合并输出(控制及数据)至中间缓冲器720、并抑制利用控制器750产生输出致能以传送至缓冲器730。这个合并动作跳过一个时脉周期,并在下一个时脉周期中恢复,若没有得到新数据。否则,若收到新数据的话,这个跳过动作将会持续进行,直到通过结尾组件A的测试。As an example, the reception instructions for some of the main body components are as follows. Assume that upon activation of the data aligner 700, there is a sequence of six bytes followed by six bytes followed by eight bytes within the same packet. The case where buffer 710 has eight bytes, buffer 720 has six bytes, and buffer 710 does not have an end-of-packet (EOP) signal cannot be included in the previous description of FIG. 4 . In this case, we would want to transfer fourteen bytes to buffer 730 together. In the next clock cycle, the controller 750 will determine that this is a partial body condition and restore the combined output (control and data) of the buffer 730 to the intermediate buffer 720 and suppress the use of the controller 750 to generate an output enable to be sent to the buffer 730. This merge action skips one clock cycle and resumes in the next clock cycle if no new data is available. Otherwise, if new data is received, the skip action will continue until the test of the end component A is passed.

为了旋转量计算的目的,这个净正确数目的反馈已经处理了后续的计算。这个恢复动作显示:缓冲器720具有十四字节、且缓冲器710具有六字节。这表示先前第6图所述结尾组件A的情况。如此,我们便可以执行计算动作,其彷佛正在接收、计算、及恢复一个简易数据流。相对于十四字节,这个旋转量预测等于32-14=18字节旋转,其相当于二字节的旋转(仅仅四位)。因此,对于具有六字节的缓冲器710而言,旋转二字节是将字节0及字节1分别放置于位置14及位置15,其会与缓冲器720的十四字节进行合并。若这是一真实结尾组件,则这十六字节会传送至缓冲器730。这些写入致能是20-16,若左边四个字节会被写入缓冲器720。Feedback of this net correct number has been processed for subsequent calculations for the purposes of rotation calculations. This restore action shows that buffer 720 has fourteen bytes and buffer 710 has six bytes. This represents the case of ending component A as previously described in FIG. 6 . In this way, we can perform calculation actions as if we were receiving, calculating, and recovering a simple data stream. Relative to fourteen bytes, this amount of rotation is predicted to be equal to 32-14=18 bytes of rotation, which is equivalent to a rotation of two bytes (only four bits). Thus, for buffer 710 with six bytes, rotating two bytes places byte 0 and byte 1 at positions 14 and 15 respectively, which are merged with the fourteen bytes of buffer 720 . If this is a true end element, then the sixteen bytes are sent to buffer 730 . These write enables are 20-16, if the left four bytes are written into buffer 720 .

对于缓冲器720具有十四字节、且缓冲器710具有六字节的情况而言,这个预测旋转量等于32-20=12。在这个情况中,缓冲器720的左边四个字节会维持其位置,且旋转十二字节会使新输入字节的字节0放置于位置4,藉以进行后续的连接动作等等。这个程序会无止境地重复执行。For the case where buffer 720 has fourteen bytes and buffer 710 has six bytes, this predicted rotation equals 32-20=12. In this case, the left four bytes of buffer 720 will maintain their positions, and a twelve-byte rotation will place byte 0 of the new incoming byte at position 4, for subsequent concatenation operations, and so on. This program is repeated endlessly.

先前所述的数据对准器700可以在线路711上接收不同字节大小的未对准数据、并对准这些数据以得到一特定的字节大小,其将配合第8图详细说明如下。另外,数据对准器700亦可以支持具有空洞(hole)及部分主体组件的数据封包,除了一般的标头组件、主体组件、及结尾组件以外。The aforementioned data aligner 700 can receive unaligned data of different byte sizes on the line 711 and align the data to obtain a specific byte size, which will be described in detail with reference to FIG. 8 as follows. In addition, the data aligner 700 can also support data packets with holes and partial body elements, except for the general header element, body element, and trailer element.

这个旋转器740利用类似的提前一个时脉周期方式进行操作,如第4图所述的旋转器440,藉以支持部分主体组件结构。先前第6图所述的映像方式透过预测及取代下一个时脉周期的缓冲器720的字节数目以实现,藉以做为目前计算的净正确数目。在目前计算中,这个净正确计数乃是缓冲器710的字节数目加上缓冲器720的字节数目。在后续输入的部分主体组件支持及旋转量预测的情况中,目前净正确字节计算会变成缓冲器720的字节数目。这个旋转量为主要控制,且也可以用来做为其它控制信号的种子。The rotator 740 operates in a similar one-clock-cycle-advance manner as the rotator 440 described in FIG. 4 to support part of the main body assembly structure. The mapping method previously described in FIG. 6 is implemented by predicting and replacing the number of bytes in the buffer 720 for the next clock cycle as the net correct number for the current calculation. In the present calculation, this net correct count is the number of bytes in buffer 710 plus the number of bytes in buffer 720 . In the case of partial body component support and rotation prediction for subsequent inputs, the current net correct byte count would become the buffer 720 byte count. This amount of rotation is the main control, and can also be used as a seed for other control signals.

第8图表示复杂数据流的一种数据对准方式的另一实施例。在一实施例中,封包组件接收并进行分析以决定是那种类型的组件,如步骤810所示。若这个组件判定为标头组件、主体组件、或结尾组件,如步骤815所示,则这个组件便可以映像至简易数据流的对应组件类型、并根据第5图所述的方法进行处理,如步骤820所示。Fig. 8 shows another embodiment of a data alignment method for complex data streams. In one embodiment, the packet component receives and analyzes to determine the type of component, as shown in step 810 . If this component is determined to be a header component, a body component, or an end component, as shown in step 815, then this component can be mapped to the corresponding component type of the simple data stream, and processed according to the method described in FIG. 5, as Step 820 is shown.

若这个组件并不是标头组件、主体组件、或结尾组件,则这个组件将会进行分析以决定其是否为空洞(hole)或部分主体组件,如步骤825所示。若这个组件系判定为空洞(hole),则数据对准器700的缓冲器710、820、及730状态将会保持不变且不采取任何行动,如步骤830所示。然而,若这个组件判定为部分主体组件,则这个组件的部分主体功能将会映像至结尾组件,如步骤835所示。当执行此映像动作时,这个部分主体组件可以基于这个部分主体及这个中间缓冲器720具有数据的字节数目(净数目),分类为两种映像组件,亦即:结尾组件A及结尾组件B,如步骤840所示。If the component is not a header component, a body component, or an end component, the component will be analyzed to determine whether it is a hole or part of the body component, as shown in step 825 . If the component is determined to be a hole, then the status of the buffers 710 , 820 , and 730 of the data aligner 700 will remain unchanged and no action will be taken, as shown in step 830 . However, if the component is determined to be part of the main component, then part of the main functions of this component will be mapped to the end component, as shown in step 835 . When performing this mapping action, the part body component can be classified into two types of mapping components based on the number of bytes (net number) of data in the part body and the intermediate buffer 720, namely: end component A and end component B , as shown in step 840.

若这个净数目少于十六字节,则先前第5图所示的结尾序列可以跟进,如步骤845再加上下列调整,其包括:抑制数据对准器700的控制输出,如步骤850所示(这基本上表示:表示位置1至16的字节正确性的控制信号会在第二电路级706产生、但却会在检测到结尾组件A时透过这个控制器750的逻辑电路被抑制);跳过这个中间缓冲器720,如步骤855所示;及利用中间缓冲器720的未通过结果,执行这个净数目的下一次计算,如步骤860所示。在特定实施方式中,目前时脉周期的净数目可以预测为下一个时脉周期的中间缓冲器730数目。随后,步骤850、855、及860会重复执行,直到这个净数目超过或等于十六。If this net number is less than sixteen bytes, then the previous ending sequence shown in FIG. 5 can be followed, as in step 845, with the following adjustments, which include: suppressing the control output of the data aligner 700, as in step 850 As shown (this basically means: the control signal indicating the correctness of the byte in position 1 to 16 will be generated in the second circuit stage 706, but will be passed through the logic circuit of this controller 750 when the end component A is detected Suppress); skip this intermediate buffer 720, as shown in step 855; In certain embodiments, the net number of current clock cycles can be predicted as the number of intermediate buffers 730 for the next clock cycle. Subsequently, steps 850, 855, and 860 are repeated until the net number exceeds or equals sixteen.

举例来说,若中间缓冲器720具有七字节、且缓冲器710接收一字节,则这八个字节会传送至缓冲器730。因此缓冲器730储存的字节数目少于十六字节,控制器750将会抑制控制输出778。在一实施例中,控制输出778会持续抑制,直到这个净数目等于或超过十六字节、或接收到封包结尾(EOP)信号。在另一实施例中,另一种逻辑架构及控制信号可以用来抑制数据对准器700的控制输出778。For example, if intermediate buffer 720 has seven bytes and buffer 710 receives one byte, then eight bytes are sent to buffer 730 . Therefore, the number of bytes stored in the buffer 730 is less than sixteen bytes, and the controller 750 will suppress the control output 778 . In one embodiment, the control output 778 remains inhibited until the net number equals or exceeds sixteen bytes, or an end-of-packet (EOP) signal is received. In another embodiment, another logic architecture and control signal may be used to suppress the control output 778 of the data aligner 700 .

随后,利用控制器750传输的控制信号,缓冲器730的输出便可以经由多任务器775、760、及770反馈,藉以在下一个时脉周期中输入至缓冲器730。利用这种方法,中间缓冲器720的输出便可以利用缓冲器730的内容而予以跳动。随后,利用先前第7图所述的预测方法,当这个缓冲器710收到额外字节时便可以执行净数目的计算动作。这些步骤会重复执行,直到缓冲器710及这个缓冲器720(包括缓冲器730发生的跳过字节)的净字节数目等于或超过十六字节。Then, using the control signal transmitted by the controller 750, the output of the buffer 730 can be fed back through the multiplexers 775, 760, and 770, so as to be input to the buffer 730 in the next clock cycle. In this way, the output of intermediate buffer 720 can be pulsed with the contents of buffer 730 . Then, using the predictive method previously described in FIG. 7, this buffer 710 can perform net number calculations when additional bytes are received. These steps are repeated until the net byte count of the buffer 710 and the buffer 720 (including the skipped bytes from the buffer 730) equals or exceeds sixteen bytes.

若这个净数目等于或大于十六字节,则先前第5图所述的结尾序列(如步骤865所示)将会加上下列调整,其包括:不抑制这些控制输出(包含封包起点(SOP)及字节致能),如步骤870所示;不产生封包结尾(EOP)控制信号,如步骤875所示;及不跳过这个中间缓冲器720,如步骤880所示,因为其已经适当地进行更新。If this net number is equal to or greater than sixteen bytes, the following adjustments will be added to the ending sequence (as shown in step 865) previously described in FIG. ) and byte enabling), as shown in step 870; the end-of-packet (EOP) control signal is not generated, as shown in step 875; and this intermediate buffer 720 is not skipped, as shown in step 880, because it has been properly to update.

继续先前例子,若缓冲器720(包含缓冲器730的跳过字节)储存八字节的数据、并接收另外八个字节,则这八个字节会随着旋转器760的输出一起传送至多任务器760。因为这个总和等于十六,因此,这个连接输出会传送至多任务器770以在下一个时脉周期中进行输出。控制器750并不会产生任何封包结尾(EOP)控制信号。利用这种方式,在缓冲器710及720(包含缓冲器730的跳过字节)造成大于或等于十六字节的部分主体组件的处理方式便可以类似于简易数据流的结尾组件,而不需要产生封包结尾(EOP)控制信号。Continuing with the previous example, if buffer 720 (including the skipped byte of buffer 730) stores eight bytes of data, and receives another eight bytes, those eight bytes are sent along with the output of rotator 760 Up to multitasker 760. Since the sum is equal to sixteen, the output of this connection is sent to the multiplexer 770 for output in the next clock cycle. The controller 750 does not generate any end-of-packet (EOP) control signals. In this way, partial body elements that result in greater than or equal to sixteen bytes in buffers 710 and 720 (including the skipped byte of buffer 730) can be treated similarly to the end element of a simple data stream, instead of An end-of-packet (EOP) control signal needs to be generated.

上述方法是让复杂数据流能够映像至相对简易装置中,并且仅需要加入多任务器及组合逻辑电路即可。这种结构可以降低第一级电路的控制设计负担,其可能会具有相当严格的定时要求、并需要在两电路级间分配逻辑电路,而非仅是将第一级电路及逻辑电路进行封装而已。这类电路结构可能会得到更好的时序效果及更高的操作频率。The method described above allows complex data streams to be mapped to relatively simple devices, and only needs to add multiplexers and combinational logic circuits. This structure can reduce the control design burden of the first stage circuit, which may have quite strict timing requirements and need to distribute logic circuits between two circuit stages, rather than just packaging the first stage circuit and logic circuits . This kind of circuit structure may get better timing effect and higher operating frequency.

第9图表示旋转器的一实施例。在一实施例中,旋转器900可以用于第4图的旋转器440或第7图的旋转器740。旋转器900表示四级串连的字节旋转电路,其中,各个字节旋转电路981至984能够自行旋转一、二、四、八个字节。字节旋转电路属于已知技术,因此,其详细说明将不再提供。Figure 9 shows an embodiment of a spinner. In one embodiment, the rotator 900 may be used in the rotator 440 of FIG. 4 or the rotator 740 of FIG. 7 . The rotator 900 represents four stages of byte rotation circuits in series, where each byte rotation circuit 981 to 984 is capable of rotating one, two, four, eight bytes on its own. Byte-rotating circuits are known techniques, and therefore, a detailed description thereof will not be provided.

基于旋转输入功能,各个字节旋转电路981至984均可以跳过。在这种架构中,旋转器900可以基于控制信号971至974(其表示零字节至十五字节的字节旋转量),经由十六字节输入产生旋转输出979。第11图表示一实施例,其基于输入及旋转量,表示旋转器900的输出。Based on the rotation input function, each byte rotation circuit 981 to 984 can be skipped. In this architecture, the rotator 900 may generate a rotated output 979 via a sixteen byte input based on control signals 971 to 974 representing a byte rotation amount of zero to fifteen bytes. Figure 11 shows an embodiment showing the output of a spinner 900 based on the input and the amount of rotation.

控制信号971至974为各自作为多任务器991至994的控制输入。控制信号971至974分别在字节旋转电路981至984的输出961至964、及字节旋转电路981至984的输入951至954间进行选择。输入951至954分别做为多任务器991至994的数据输入。第10图表示基于这些输入数据951至954及这些旋转量的输出979。在另一实施例中,另一类型的旋转器可以使用,举例来说,桶状旋转器(barrelrotator)。Control signals 971 to 974 serve as control inputs to multiplexers 991 to 994 respectively. Control signals 971-974 select between outputs 961-964 of byte rotation circuits 981-984, and inputs 951-954 of byte rotation circuits 981-984, respectively. The inputs 951 to 954 are used as data inputs of the multiplexers 991 to 994 respectively. Fig. 10 shows an output 979 based on these input data 951 to 954 and these rotation amounts. In another embodiment, another type of rotator may be used, for example a barrel rotator.

本发明所述的方法及装置用来解决复杂数据路径设计的一般性及循环性问题。另外,与网络协议相关的硬件实施方式(其中,数据流可进行编码及译码以用于错误检测及校正)亦可能会得到更快速且更有效的检查器及产生器流水线设计,并进而得到更高频率及更大频宽的设计。The method and device described in the invention are used to solve the general and cyclic problems of complex data path design. In addition, hardware implementations associated with network protocols (where data streams can be encoded and decoded for error detection and correction) may also lead to faster and more efficient checker and generator pipeline designs, and thus to Design for higher frequency and wider bandwidth.

在另一实施例中,本发明所述的方法及装置可以用于其它类型的需要数据对准的系统及零件,举例来说,需要对准各种字节路线的未对准数据的处理器负载及储存引擎。举另一个例子来说,这种方法及装置可以应用于数据储存功能,其中,内部指令的多个字节宽度储存操作映像为外部总线的单一储存操作。In another embodiment, the method and apparatus described in the present invention can be used in other types of systems and components that require data alignment, for example, processors that require alignment of misaligned data in various byte lanes Load and storage engines. As another example, the method and apparatus can be applied to data storage functions, where multiple byte-wide store operations of an internal command are mapped to a single store operation on an external bus.

综上所述,本发明已参考特定实施例,详细说明如上。然而,很显然,在不违背在权利要求中列出的本发明的精神及范围的前提下,本发明实施例可以进行各种变动及调整。因此,本发明的说明书及附图仅用来介绍本发明的特征,而非用来限制本发明的范围。In summary, the present invention has been described in detail with reference to specific embodiments. However, it is obvious that various changes and adjustments can be made to the embodiments of the present invention without departing from the spirit and scope of the present invention listed in the claims. Therefore, the specification and drawings of the present invention are only used to describe the characteristics of the present invention, rather than to limit the scope of the present invention.

Claims (53)

1. data alignment device, it comprises:
Input, the input of importing group in order to the parallel format of receiving digital data unit is temporary serial;
The data alignment device is coupled to this input and responds the temporary series of this input is exported group with the parallel format that produces described unit of digital data the temporary series of output;
Output is coupled to this data alignment device to export the temporary series of this output;
This data alignment device comprises buffer, it is coupled to this input with when group is imported in this input reception second, store the data cell of the first input group, and combiner, it is coupled to this buffer and this input, this combiner comprises circulator and controller, wherein this circulator be coupled to this input with rotate this second the input group data cell with locate this second the input group the selected data unit, make this combiner can parallel connection described selected data unit and be stored in all described data cells of this buffer, use and produce a described output group that exports in the group, this controller determines this circulator to rotate the rotation amount of the described data cell of this second input group, this controller be coupled to this circulator with information that this rotation amount of expression is provided to this circulator, thereby this combiner is stored in the described selected data unit of all described data cells of this buffer and this second input group to produce a described output group in order to utilize parallel format combination; And
Data path is coupled to this combiner and this output and can transfers to this output to allow a described output group, and do not need to be stored in this buffer.
2. device as claimed in claim 1, wherein, these second all described data cells of importing the described selected data unit of group and being stored in this buffer of the parallel connection of this combiner use producing a described output group.
3. device as claimed in claim 1, wherein, this combiner comprises selector, and its input is coupled respectively to this input of mentioning at first and this buffer, and its output then is coupled to this data path.
4. device as claimed in claim 1, wherein, this controller is used this rotation amount of decision based on the data cell storage volume of this buffer.
5. device as claimed in claim 4, more comprise another buffer, it is coupled to this input and this combiner when being stored in this buffer of mentioning at first with the described data cell in this first input group, store this second input group, wherein, this controller is used this rotation amount of decision based on the summation of the storage volume of data cell separately of described buffer.
6. device as claimed in claim 1, wherein, the header assembly that each described input group is a data packet, body assembly, and one of ending assembly.
7. device as claimed in claim 1, wherein, each described data cell is a byte.
8. device as claimed in claim 1, wherein, this buffer has the maximum data unit storage volume, and it equals the maximum data unit capacity of input group in the temporary series of described input.
9. device as claimed in claim 8, wherein, this maximum data unit storage volume of this buffer is 16 data cells.
10. device as claimed in claim 1, wherein, this data path is skipped this buffer.
11. a data alignment method, its step comprises:
The temporary series of input of the parallel format input group of receiving digital data unit;
Respond the temporary series of this input, produce the temporary series of output of the parallel format output group of described unit of digital data, it comprises: when receiving the second input group, the data cell that stores the first input group is in buffer;
This generation step comprise the rotation this second the input group data cell with the location in order to all described data cells that are stored in this buffer parallel connected this second the input group the selected data unit, and parallel connection described selected data unit and all described data cells of being stored in this buffer are to produce an output group in the described output group, and based on the data cell storage volume of this buffer, and the rotation amount of the described data cell of this second input group of decision rotation, thereby utilize described selected data unit that the parallel format combination is stored in all described data cells of this buffer and this second input group to produce described output group; And
Export this output group further to handle, do not export group in buffer and do not need to store described one.
12. method as claimed in claim 11, wherein, this output step comprises a described output group, and it skips buffer.
13. a device, in order to connect digital data processor to the digital communication networking, it comprises:
First FPDP, it allows to utilize the digital data exchange of this data processor;
Second FPDP, it allows to utilize the digital data exchange of this telecommunication network; And
The data alignment device, be coupled in this first and this second FPDP between, it comprises an input, in order to the temporary series of input of the parallel format of receiving digital data unit input group; The data alignment device is coupled to this input and responds the temporary series of this input is exported group with the parallel format that produces described unit of digital data the temporary series of output; And output, be coupled to this data alignment device to export the temporary series of this output;
This data alignment device comprises buffer, it is coupled to this input with when group is imported in this input reception second, store the data cell of the first input group, and combiner, be coupled to this buffer and this input, this combiner comprises circulator and controller, wherein this circulator be coupled to this input with rotate this second the input group data cell with locate this second the input group the selected data unit, make this combiner can parallel connection described selected data unit and be stored in all described data cells of this buffer, use and produce a described output group that exports in the group, this controller determines this circulator to rotate the rotation amount of the described data cell of this second input group, this controller be coupled to this circulator with information that this rotation amount of expression is provided to this circulator, thereby this combiner is stored in the described selected data unit of all described data cells of this buffer and this second input group to produce a described output group in order to utilize parallel format combination; And
This data alignment device comprises data path, and it is coupled to this combiner and this output can transfer to this output to allow a described output group, and does not need to be stored in this buffer.
14. device as claimed in claim 13, wherein, this combiner comprises selector, and its input is coupled respectively to this circulator and this buffer, and its output then is coupled to this data path.
15. device as claimed in claim 13, wherein, this controller is used this rotation amount of decision based on the data cell storage volume of this buffer.
16. device as claimed in claim 15, more comprise another buffer, be coupled to this input and this combiner with when this first described data cell of importing group is stored in this buffer of mentioning at first, store this second input group, wherein, this controller is used this rotation amount of decision based on the summation of the storage volume of data cell separately of described buffer.
17. device as claimed in claim 13, it provides as synchronous optical network card, Ethernet card, reaches token ring card.
18. device as claimed in claim 13, wherein, this data path is skipped this buffer.
19. a data alignment device, it comprises:
Input, the input of importing group in order to the parallel format of receiving digital data unit is temporary serial;
The data alignment device is coupled to this input and responds the temporary series of this input is exported group with the parallel format that produces described unit of digital data the temporary series of output;
Output is coupled to this data alignment device to export the temporary series of this output;
This data alignment utensil has buffer, be coupled to this input with when group is imported in this input reception second, store the data cell of the first input group, and combiner, be coupled to this buffer and this input, this combiner comprises circulator and controller, wherein this circulator be coupled to this input with rotate this second the input group data cell with locate this second the input group the selected data unit, make this combiner can parallel connection described selected data unit and be stored in all described data cells of this buffer, use and produce a described output group that exports in the group, this controller determines this circulator to rotate the rotation amount of the described data cell of this second input group, this controller is coupled to this circulator to provide the information of representing this rotation amount to this circulator, thereby this combiner is stored in all described data cells of this buffer and all described selected data unit of this second input group in order to utilize parallel format combination, uses the temporary transient parallel format group of the data cell that produces the temporary series reception of this input;
This data alignment utensil has another buffer, uses when this input receives the 3rd input group, stores this temporary transient parallel format group; And data path, be coupled to this combiner and this another buffer and can transfer to this another buffer, and do not need to be stored in the buffer that this is mentioned at first to allow this temporary transient parallel format group; And
The output that this combiner is coupled to this another buffer is stored in all the described data cells of this another buffer and the selected data unit of the 3rd input group to utilize the parallel format combination, uses another parallel format group that produces the temporary serial data cell that receives of this input.
20. device as claimed in claim 19, wherein, this combiner is operated to utilize the parallel format combination to be stored in all described data cells of this another buffer and all described data cells of the 3rd input group, use and produce this another group, wherein, this another group is another temporary transient group, wherein, this data path allows the temporary transient group of transmission this another to this another buffer, and do not need to be stored in the buffer that this is mentioned at first, wherein, when this another buffer receives the 4th input group in this input, store this another temporary transient group, and wherein, this combiner utilizes parallel format to make up all the described data cells of this another temporary transient group and the selected data unit of the 4th input group, uses the another parallel format group of the data cell that produces the temporary series reception of this input.
21. device as claimed in claim 20, wherein, this another parallel format group is a described output group.
22. device as claimed in claim 20, wherein, this combiner is operated to utilize the parallel format combination to be stored in all described data cells of this another buffer and all described data cells of the 3rd input group, use the temporary transient group of generation this another, wherein, this another temporary transient group is a described output group.
23. device as claimed in claim 19, wherein, this data alignment device comprises another data path, is coupled to this output of this combiner and this another buffer, uses the data cell that allows to be stored in this another buffer and inputs to this combiner.
24. device as claimed in claim 23, wherein, this combiner comprises selector, and its input is coupled to this input of mentioning at first and this another data path separately, and its output is coupled to this data path of mentioning at first.
25. device as claimed in claim 24, wherein, this data alignment device comprises another selector, and its input is coupled to this output of this another buffer, and its output is coupled to this another data path.
26. device as claimed in claim 25, wherein, this another selector has input, is coupled to the output of this buffer of mentioning at first.
27. device as claimed in claim 23, wherein, this data alignment device comprises selector, and its input is coupled to this output of this another buffer, and its output is coupled to this another data path.
28. device as claimed in claim 27, wherein, this selector has input, is coupled to the output of this buffer of mentioning at first.
29. device as claimed in claim 19, wherein, this combiner is carried out described combination operation with as parallel attended operation.
30. device as claimed in claim 19, wherein, the header assembly that each described input group is a data packet, body assembly, and one of ending assembly.
31. device as claimed in claim 30, wherein, one of described body assembly is the part body assembly.
32. device as claimed in claim 19, wherein, each described data cell is a byte.
33. device as claimed in claim 20, wherein, this another temporary transient group is a described output group.
34. device as claimed in claim 19, wherein, this data path is skipped this buffer of mentioning at first.
35. a data alignment method, its step comprises:
The temporary series of input of the parallel format input group of receiving digital data unit;
Respond the temporary series of this input, use the temporary series of output of the parallel format output group that produces described unit of digital data, it comprises: when receiving the second input group, the data cell that stores the first input group is in buffer;
This generation step comprises: the temporary transient parallel format group that produces data cell that the temporary series of this input receives, it comprises: rotate this second the input group data cell with the location in order to all described data cells that are stored in this buffer parallel connected this second the input group the selected data unit, and parallel connection described selected data unit and all described data cells of being stored in this buffer are to produce an output group in the described output group, and based on the data cell storage volume of this buffer, and the rotation amount of the described data cell of this second input group of decision rotation, thereby utilize the parallel format combination to be stored in all described data cells of this buffer and all described selected data unit of this second input group; And
This temporary serial step of output that produces the parallel format output group of described unit of digital data comprises: utilize this temporary transient group to produce a described output group, this utilizes step to comprise: when receiving the 3rd input group, store this temporary transient group in another buffer, this storing step of mentioning at last comprises: transmit this temporary transient group to this another buffer, and do not need to be stored in the buffer that this is mentioned at first, and this utilizes step to comprise: produce another parallel format group of the data cell of the temporary series reception of this input, this step that produces another parallel format group of the temporary serial data cell that receives of this input comprises: all described data cells and the 3rd of utilizing the parallel format combination to be stored in this another buffer are imported the selected data unit of group.
36. method as claimed in claim 35, wherein, this combination step of mentioning at last comprises: utilize the parallel format combination to be stored in all described data cells of this another buffer and all described data cells of the 3rd input group, wherein, this another group is another temporary transient group, wherein, this utilizes step to comprise: utilize this another temporary transient group to produce the another parallel format group of data cell that the temporary series of this input receives, the step of utilizing that this is mentioned at last comprises: when receiving the 4th input group, store this another temporary transient group in this another buffer, this storing step of mentioning at last comprises: transmit this another temporary transient group to this another buffer, and not needing to be stored in the buffer that this is mentioned at first, the step of utilizing that this is mentioned at last comprises: utilize parallel format combination to be stored in all the described data cells of this another temporary transient group of this another buffer and the selected data unit of the 4th input group.
37. method as claimed in claim 36, wherein, this another parallel format group is a described output group.
38. method as claimed in claim 35, wherein, this combination step of mentioning at last comprises: utilize the parallel format combination to be stored in all described data cells of this another buffer and all described data cells of the 3rd input group, and wherein, this another group is a described output group.
39. method as claimed in claim 35, wherein, this another group is a described output group.
40. method as claimed in claim 35, wherein, this transmitting step comprises: the buffer that this is mentioned is at first skipped by this another temporary transient group.
41. a device, in order to connect digital data processor and digital communication networking, it comprises:
First FPDP, it allows to utilize the digital data exchange of this data processor;
Second FPDP, it allows to utilize the digital data exchange of this telecommunication network; And
The data alignment device, be coupled in this first and this second FPDP between, it has input, in order to the temporary series of input of the parallel format of receiving digital data unit input group; The data alignment device is coupled to this input and responds the temporary series of this input is exported group with the parallel format that produces described unit of digital data the temporary series of output; And output, be coupled to this data alignment device to export the temporary series of this output;
This data alignment utensil has buffer, be coupled to this input with when group is imported in this input reception second, store the data cell of the first input group, and combiner, be coupled to this buffer and this input, this combiner comprises circulator and controller, wherein this circulator be coupled to this input with rotate this second the input group data cell with locate this second the input group the selected data unit, make this combiner can parallel connection described selected data unit and be stored in all described data cells of this buffer, use and produce a described output group that exports in the group, this controller determines this circulator to rotate the rotation amount of the described data cell of this second input group, this controller is coupled to this circulator to provide the information of representing this rotation amount to this circulator, thereby this combiner is in order to all described selected data unit of utilizing parallel format combination and being stored in all described data cells of this buffer and this second input group temporary transient parallel format group with the data cell that produces the temporary series of this input and receive, and this data alignment device operation is exported group to utilize this temporary transient group to produce described one;
This data alignment utensil has another buffer, uses when this input receives the 3rd input group, stores this temporary transient group; And data path, be coupled to this combiner and this another buffer, use this temporary transient group of permission and can transfer to this another buffer, and do not need to be stored in the buffer that this is mentioned at first; And
The output that this combiner is coupled to this another buffer is stored in all the described data cells of this another buffer and the selected data unit of the 3rd input group to utilize the parallel format combination, uses another parallel format group that produces the temporary serial data cell that receives of this input.
42. device as claimed in claim 41, it provides as synchronous optical network card, Ethernet card, reaches token ring card.
43. device as claimed in claim 41, wherein, this data path is skipped this buffer of mentioning at first.
44. device as claimed in claim 41, wherein, this data alignment device comprises another data path, is coupled to this input of this combiner and this another buffer, uses the data cell that allows to be stored in this another buffer and inputs to this combiner.
45. device as claimed in claim 44, wherein, this combiner comprises selector, and its input is coupled to this input of mentioning at first and this another data path separately, and its output is coupled to this data path of mentioning at first.
46. device as claimed in claim 45, wherein, this data alignment device comprises another selector, and its input is coupled to this output of this another buffer, and its output is coupled to this another data path.
47. device as claimed in claim 46, wherein, this another selector has input, is coupled to the output of this buffer of mentioning at first.
48. device as claimed in claim 44, wherein, this data alignment device comprises selector, and its input is coupled to this output of this another buffer, and its output is coupled to this another data path.
49. device as claimed in claim 48, wherein, this selector has input, is coupled to the output of this buffer of mentioning at first.
50. device as claimed in claim 41, wherein, this combiner is carried out described combination operation with as parallel attended operation.
51. device as claimed in claim 41, wherein, the header assembly that each described input group is a data packet, body assembly, and one of ending assembly.
52. device as claimed in claim 41, wherein, one of described body assembly is the part body assembly.
53. device as claimed in claim 41, wherein, this another parallel format group is a described output group.
CN02807041.0A 2001-01-26 2002-01-25 Method and device for data alignment Expired - Fee Related CN1498470B (en)

Applications Claiming Priority (5)

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 2001-01-26
US09/771,173 2001-01-26
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
CN1498470A CN1498470A (en) 2004-05-19
CN1498470B true CN1498470B (en) 2011-06-15

Family

ID=27118415

Family Applications (1)

Application Number Title Priority Date Filing Date
CN02807041.0A Expired - Fee Related CN1498470B (en) 2001-01-26 2002-01-25 Method and device for data alignment

Country Status (5)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104834476A (en) * 2014-02-10 2015-08-12 Lsi公司 Data alignment system and method based on end-of-segment mark

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9707727B2 (en) 2014-04-09 2017-07-18 Nike, Inc. Selectively applied adhesive particulate on nonmetallic substrates

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5410677A (en) * 1991-12-30 1995-04-25 Apple Computer, Inc. Apparatus for translating data formats starting at an arbitrary byte position
EP0752800B1 (en) * 1995-07-07 2004-01-02 Sun Microsystems, Inc. Apparatus and method for data packing through addition

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05134848A (en) * 1991-03-06 1993-06-01 Fujitsu Ltd Data shift circuit for central processing unit
DE4238090C1 (en) * 1992-11-11 1994-03-03 Siemens Ag Method and arrangement for recovering plesiochronous signals transmitted in function data blocks
DE19903366A1 (en) * 1999-01-28 2000-08-17 Siemens Ag Process for converting Nx-STM-1 signals into STM-N signals

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5410677A (en) * 1991-12-30 1995-04-25 Apple Computer, Inc. Apparatus for translating data formats starting at an arbitrary byte position
EP0752800B1 (en) * 1995-07-07 2004-01-02 Sun Microsystems, Inc. Apparatus and method for data packing through addition

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
EP 0752800 A,第2页44-56行,第5页30-40行,第6页4-9行,权利要求1-3、6-8,突3、6A、6B、7.

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104834476A (en) * 2014-02-10 2015-08-12 Lsi公司 Data alignment system and method based on end-of-segment mark
CN104834476B (en) * 2014-02-10 2016-10-19 安华高科技通用Ip(新加坡)公司 The system and method for data alignment based on section end mark

Also Published As

Publication number Publication date
JP3775597B2 (en) 2006-05-17
CN1498470A (en) 2004-05-19
EP1360786A2 (en) 2003-11-12
WO2002060101A3 (en) 2003-09-18
WO2002060101A2 (en) 2002-08-01
AU2002245320A1 (en) 2002-08-06
JP2005504449A (en) 2005-02-10

Similar Documents

Publication Publication Date Title
US9917787B2 (en) Method and system for flexible credit exchange within high performance fabrics
US10305802B2 (en) Reliable transport of ethernet packet data with wire-speed and packet data rate match
US7289434B2 (en) Method for verifying function of redundant standby packet forwarder
US9648148B2 (en) Method, apparatus, and system for QoS within high performance fabrics
US7616562B1 (en) Systems and methods for handling packet fragmentation
US7782857B2 (en) Logical separation and accessing of descriptor memories
US8085780B1 (en) Optimized buffer loading for packet header processing
JP2003508954A (en) Network switch, components and operation method
IL160997A (en) Vertical instruction and data processing in a network processor architecture
JP2003508967A (en) Network switch using network processor and method
US7079538B2 (en) High-speed router
CN101692647A (en) Tunnel forwarding system in which IPv4 packets are encapsulated by IPv6 head in router
US20030118022A1 (en) Reconfigurable data packet header processor
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
US6813734B1 (en) Method and apparatus for data alignment
US7379467B1 (en) Scheduling store-forwarding of back-to-back multi-channel packet fragments
TW565767B (en) Packet switch and packet memory access method therefor
CN104618057A (en) Packet transport network non-damage protection switching method and system
CN1498470B (en) Method and device for data alignment
US7496109B1 (en) Method of maximizing bandwidth efficiency in a protocol processor
US6965606B2 (en) Method and apparatus for byte rotation
US6954466B1 (en) Link-layer receiver
US11636061B2 (en) On-demand packetization for a chip-to-chip interface
CN102394767B (en) Data processing method and system based on optical transfer network
CN117914444B (en) Hardware implementation method and device for CRC calculation of IB network data packet

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: ACSA CO., LTD.

Free format text: FORMER OWNER: INFINEON TECHNOLOGIES NORTH AMERICA CORP

Effective date: 20100618

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20100618

Address after: American California

Applicant after: Infineon Technologies North America Corp.

Address before: American California

Applicant before: Infenion Tech. North America Corp.

C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110615

Termination date: 20140125