US6389489B1 - Data processing system having a fifo buffer with variable threshold value based on input and output data rates and data block size - Google Patents

Data processing system having a fifo buffer with variable threshold value based on input and output data rates and data block size Download PDF

Info

Publication number
US6389489B1
US6389489B1 US09/271,215 US27121599A US6389489B1 US 6389489 B1 US6389489 B1 US 6389489B1 US 27121599 A US27121599 A US 27121599A US 6389489 B1 US6389489 B1 US 6389489B1
Authority
US
United States
Prior art keywords
data
data block
threshold value
out buffer
read
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
US09/271,215
Inventor
Chris Randall Stone
Ritesh Radheshyam Agrawal
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.)
Shenzhen Xinguodu Tech Co Ltd
NXP BV
NXP USA Inc
Original Assignee
Motorola Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Motorola Inc filed Critical Motorola Inc
Priority to US09/271,215 priority Critical patent/US6389489B1/en
Assigned to MOTOROLA, INC. reassignment MOTOROLA, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: AGRAWAL, RITESH RADHESHYAM, STONE, CHRIS RANDALL
Application granted granted Critical
Publication of US6389489B1 publication Critical patent/US6389489B1/en
Assigned to FREESCALE SEMICONDUCTOR, INC. reassignment FREESCALE SEMICONDUCTOR, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MOTOROLA, INC.
Assigned to CITIBANK, N.A. AS COLLATERAL AGENT reassignment CITIBANK, N.A. AS COLLATERAL AGENT SECURITY AGREEMENT Assignors: FREESCALE ACQUISITION CORPORATION, FREESCALE ACQUISITION HOLDINGS CORP., FREESCALE HOLDINGS (BERMUDA) III, LTD., FREESCALE SEMICONDUCTOR, INC.
Assigned to CITIBANK, N.A., AS COLLATERAL AGENT reassignment CITIBANK, N.A., AS COLLATERAL AGENT SECURITY AGREEMENT Assignors: FREESCALE SEMICONDUCTOR, INC.
Assigned to CITIBANK, N.A., AS NOTES COLLATERAL AGENT reassignment CITIBANK, N.A., AS NOTES COLLATERAL AGENT SECURITY AGREEMENT Assignors: FREESCALE SEMICONDUCTOR, INC.
Assigned to CITIBANK, N.A., AS NOTES COLLATERAL AGENT reassignment CITIBANK, N.A., AS NOTES COLLATERAL AGENT SECURITY AGREEMENT Assignors: FREESCALE SEMICONDUCTOR, INC.
Assigned to FREESCALE SEMICONDUCTOR, INC. reassignment FREESCALE SEMICONDUCTOR, INC. PATENT RELEASE Assignors: CITIBANK, N.A., AS COLLATERAL AGENT
Assigned to FREESCALE SEMICONDUCTOR, INC. reassignment FREESCALE SEMICONDUCTOR, INC. PATENT RELEASE Assignors: CITIBANK, N.A., AS COLLATERAL AGENT
Assigned to FREESCALE SEMICONDUCTOR, INC. reassignment FREESCALE SEMICONDUCTOR, INC. PATENT RELEASE Assignors: CITIBANK, N.A., AS COLLATERAL AGENT
Assigned to MORGAN STANLEY SENIOR FUNDING, INC. reassignment MORGAN STANLEY SENIOR FUNDING, INC. ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Assignors: CITIBANK, N.A.
Assigned to MORGAN STANLEY SENIOR FUNDING, INC. reassignment MORGAN STANLEY SENIOR FUNDING, INC. ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Assignors: CITIBANK, N.A.
Assigned to MORGAN STANLEY SENIOR FUNDING, INC. reassignment MORGAN STANLEY SENIOR FUNDING, INC. SUPPLEMENT TO THE SECURITY AGREEMENT Assignors: FREESCALE SEMICONDUCTOR, INC.
Assigned to NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC. reassignment NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: MORGAN STANLEY SENIOR FUNDING, INC.
Assigned to NXP B.V. reassignment NXP B.V. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: MORGAN STANLEY SENIOR FUNDING, INC.
Assigned to NXP USA, INC. reassignment NXP USA, INC. CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: FREESCALE SEMICONDUCTOR INC.
Assigned to NXP USA, INC. reassignment NXP USA, INC. CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE LISTED CHANGE OF NAME SHOULD BE MERGER AND CHANGE PREVIOUSLY RECORDED AT REEL: 040652 FRAME: 0180. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME. Assignors: FREESCALE SEMICONDUCTOR INC.
Assigned to MORGAN STANLEY SENIOR FUNDING, INC. reassignment MORGAN STANLEY SENIOR FUNDING, INC. CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENTS 8108266 AND 8062324 AND REPLACE THEM WITH 6108266 AND 8060324 PREVIOUSLY RECORDED ON REEL 037518 FRAME 0292. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Assignors: CITIBANK, N.A.
Assigned to SHENZHEN XINGUODU TECHNOLOGY CO., LTD. reassignment SHENZHEN XINGUODU TECHNOLOGY CO., LTD. CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT THE APPLICATION NO. FROM 13,883,290 TO 13,833,290 PREVIOUSLY RECORDED ON REEL 041703 FRAME 0536. ASSIGNOR(S) HEREBY CONFIRMS THE THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS.. Assignors: MORGAN STANLEY SENIOR FUNDING, INC.
Anticipated expiration legal-status Critical
Assigned to NXP B.V. reassignment NXP B.V. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: MORGAN STANLEY SENIOR FUNDING, INC.
Assigned to MORGAN STANLEY SENIOR FUNDING, INC. reassignment MORGAN STANLEY SENIOR FUNDING, INC. CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 037486 FRAME 0517. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Assignors: CITIBANK, N.A.
Assigned to NXP B.V. reassignment NXP B.V. CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Assignors: MORGAN STANLEY SENIOR FUNDING, INC.
Assigned to NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC. reassignment NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC. CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Assignors: MORGAN STANLEY SENIOR FUNDING, INC.
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
    • G06F5/12Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C19/00Digital stores in which the information is moved stepwise, e.g. shift registers
    • G11C19/28Digital stores in which the information is moved stepwise, e.g. shift registers using semiconductor elements
    • G11C19/287Organisation of a multiplicity of shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/10Indexing scheme relating to groups G06F5/10 - G06F5/14
    • G06F2205/108Reading or writing the data blockwise, e.g. using an extra end-of-block pointer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/12Indexing scheme relating to groups G06F5/12 - G06F5/14
    • G06F2205/126Monitoring of intermediate fill level, i.e. with additional means for monitoring the fill level, e.g. half full flag, almost empty flag

Definitions

  • This invention relates generally to data processing systems and more particularly to data buffering in a data processing system.
  • FIFO first-in, first-out
  • Certain FIFOs contain threshold values that serve to control their operation. For instance, a threshold might be set to generate an interrupt to the data source if the source is about to exceed the capacity of the FIFO (overrun). Conversely, a threshold might be set to disable the output of data until an uninterrupted supply of data can be guaranteed (underrun).
  • Some communications protocols specify fixed length transmissions of blocks, or packets, of data. If one or more gaps are interjected into the transmission because of, for example, an underrun or overrun, then one or more data beats at the end of the transmission may be ignored by the destination to ensure that an output data stream is transmitted without interruption and contains no bubbles or gaps.
  • FIG. 1 illustrates, in block diagram form, a data processing system in which the disclosed invention may be incorporated
  • FIG. 2 illustrates, in block diagram form, a FIFO depicted in FIG. 1 constructed in accordance with the present invention
  • FIG. 3 illustrates, in graphical form, a DATA/CONTROL ENTRY depicted in FIG. 2 .
  • FIG. 1 illustrates, in block diagram form, a data processing system 100 in which the disclosed invention may be incorporated.
  • Devices in data processing system 100 communicate with each other using a high-speed bus protocol. Each device can operate at its own clock rate. According to this protocol, data to be transmitted between devices is grouped into packets by the device generating the data (data producer or source), buffered in FIFOs, and automatically transmitted to a receiving device (data consumer or destination). Control or “header” information is embedded into the packet and is used to indicate such things as the destination of the packet, its length, etc.
  • a first data processor 102 communicates with a second data processor 104 via two uni-directional communication buses.
  • Data processor 104 may be able to consume data at a rate greater than the rate at which data processor 102 can produce data. However, data processor 104 cannot interrupt the transmission of a packet to wait for additional data. Therefore, data processor 102 uses a FIFO buffer to buffer a certain fraction of the packet before it begins transmitting the data to data processor 104 .
  • the minimum amount of data temporarily stored in the FIFO buffer depends upon the rate at which data processor 102 produces data, the rate at which data processor 104 consumes data, and the size of the packet.
  • variable threshold information is stored in the FIFO along with data. The FIFO uses the threshold information as a predetermined maximum fullness value of the FIFO buffer.
  • a data block, or packet can be transmitted to the second device from the FIFO buffer without risk of introducing bubbles into an individual data packet.
  • the data packet is transmitted as an uninterrupted data stream.
  • the threshold value is automatically determined by the transmitting data processor on a per-packet basis to maximize data throughput.
  • the transmitting data processor determines the variable threshold value as a function of a difference between an input data rate and an output data rate of the FIFO buffer, and a size of the data block to be transmitted through the FIFO buffer.
  • the calculated threshold value is then appended to a first entry of the data block. Specifically, start-up latency is tailored to the size of each packet.
  • shorter packets can be completely loaded into the FIFO faster than longer packets.
  • the shorter packets can have lower thresholds. This strategy may cause the FIFO to begin transmitting the shorter packet, as an unbroken data stream, earlier than if it had the threshold appropriate for the longer packet.
  • data processor 102 includes a central processing unit 106 (CPU 1 ) and a bus interface unit 108 .
  • Bus interface unit 108 includes an output FIFO buffer 110 and an input FIFO buffer 112 .
  • data processor 104 includes a central processing unit 114 (CPU 2 ) and a bus interface unit 116 .
  • Bus interface unit 116 includes an output FIFO buffer 118 and an input FIFO buffer 120 .
  • the output FIFO buffer 110 is connected to the input FIFO buffer 120 .
  • the output FIFO buffer 118 is connected to the input FIFO buffer 112 .
  • data processor 102 is implemented on a separate integrated circuit than data processor 104 .
  • CPU 1 executes instructions stored in memory (not depicted) using operands also stored in memory and received from an external source (not shown).
  • Bus interface unit 110 coordinates communications from CPU 1 to other devices in the data processing system and vice versa.
  • FIFOs 110 and 112 buffer data so that CPU 1 can perform other work while extended communications are in operation.
  • FIFO 110 is described below in connection with FIG. 2 .
  • CPU 2 operates similarly.
  • the depicted embodiment illustrates a data processing system in which two data processors are connected directly to each other.
  • data processor 104 may be replaced with a volatile memory system, with a non-volatile memory system, with one or more user input devices such as a keyboard or monitor, with a bus-to-bus interconnect, etc.
  • the single point-to-point topology depicted in FIG. 1 may be replaced with topologies that contain more than one possible data destination.
  • data processor 102 may be installed in a ring topology in which messages are passed from device to device until a packet reaches its destination or returns to the data producer.
  • data processor 102 may be connected to a switched network topology in which a message is routed to a destination by an intermediate device connected to the data producer and to several data consumers.
  • FIG. 2 illustrates, in block diagram form, FIFO 110 depicted in FIG. 1 constructed in accordance with the present invention.
  • FIFO 110 contains twenty DATA/CONTROL ENTRIES 200 .
  • Each one of the entries contains eight CONTROL bits and sixty-eight DATA bits.
  • the sixty-eight DATA bits are further divided into four seventeen bit sections.
  • the input of each entry is connected to a data producer via DATA IN.
  • DATA IN includes both the data and control bits for each entry.
  • the output of each entry is connected to a data consumer via a 20:1 multiplexer (MUX) 202 and a 5:1 MUX 204 .
  • MUX multiplexer
  • a multi-bit control signal labeled READ POINTER selects which of the twenty inputs to MUX 202 is output to MUX 204 .
  • An output of MUX 202 provides a set of sixty-eight DATA bits from a selected entry to MUX 204 .
  • the first section of seventeen DATA bits output by MUX 202 are connected to the first input of MUX 204 .
  • the second section of seventeen DATA bits output by MUX 202 are connected to the second input of MUX 204 .
  • the third section of seventeen DATA bits output by MUX 202 are connected to the third input of MUX 204 .
  • the fourth section of seventeen DATA bits output by MUX 202 are connected to the fourth input of MUX 204 .
  • a default output labeled NOP is connected to the fifth input of MUX 204 .
  • the output of a MUX controller 206 selects which of the five inputs to MUX 204 is output to CPU 2 as DATA OUT. Note that the number of entries and the number of control bits and data bits per entry are provided for illustration purposes only and may be different in other embodiments.
  • MUX 202 also outputs a selected set of eight CONTROL bits to a read comparator 210 .
  • Read comparator 210 receives the control signal labeled READ POINTER and a multi-bit control signal labeled WRITE POINTER, each synchronized by a pair of serially connected latches, 214 and 218 , respectively.
  • Read comparator 210 generates a control signal START ⁇ overscore (STOP) ⁇ .
  • the control signal START ⁇ overscore (STOP) ⁇ is connected to a read counter 208 and to MUX controller 206 .
  • Read counter 208 generates the control signal READ POINTER.
  • a write counter 212 generates the control signal WRITE POINTER.
  • Write counter 212 also encodes the control signal WRITE POINTER into a one-of-N format. A differing one of each of the N output signals is connected to a differing one of the DATA CONTROL ENTRIES 200 .
  • Write counter 212 receives a multi-bit control signal WRITE CONTROL from the data producer.
  • the data producer is CPU 1 .
  • a write comparator 216 receives the control signal READ POINTER synchronized by a pair of serially connected latches 218 , receives the control signal WRITE POINTER, and generates a control signal labeled READY. The control signal READY is provided to the data producer.
  • FIFO 110 Although the various blocks within FIFO 110 are integrated into a single electronic circuit, certain portions operate at different clock speeds. This differentiation enables the exchange of data between the data producer and FIFO 110 and enables the exchange of data between FIFO 110 and the data consumer.
  • the data consumer operates at a higher clock rate than does the data producer.
  • MUX 204 , MUX controller 206 , read counter 208 , read comparator 210 , and latch pair 214 operate in the data consumer's time domain.
  • DATA/CONTROL ENTRIES 200 , MUX 202 , write counter 212 , write comparator 216 , and latch pair 218 operate in the data producer's time domain. Note that in other embodiments, the data rate of the data consumer may be lower than the data rate of the data producer, or may even have the same data rate as the producer.
  • FIFO 110 may be conveniently described with respect to its two major functions: writing data and reading data. After a reset or initialization operation, the write counter 212 and read counter 208 are set to the same initial value. Also, MUX controller 206 selects the fifth, or NOP, input of MUX 204 as its output.
  • write comparator 216 After reset, write comparator 216 will detect that the read and write pointers are equivalent. This equivalency indicates that no valid data is in FIFO 110 , and that all entries are available for receiving data. At other times, the write pointer may lag the read pointer by more than one location. In these cases, there is at least one location in which to store data. In each of these circumstances, write comparator 216 will assert the control signal READY to the data producer indicating the ability of the FIFO to store data. At other times, FIFO 110 may become full. In this case, the write pointer will catch up to the read pointer. To avoid over-writing valid data, write comparator 216 will de-assert READY.
  • the data producer will be required to write data in FIFO 110 .
  • the data producer will input data to FIFO 110 via the data input DATA IN and will assert certain ones of control signals WRITE CONTROL, indicating valid data.
  • Write counter 212 will enable one entry within FIFO 110 to store the data by asserting its single-bit output corresponding to the entry. Write counter 212 will also increment itself to ensure that previously stored data is not over-written at a later time.
  • each packet begins at the first bit position in the first section of the entry.
  • the end of the data packet can be located in any of the four sections of an entry.
  • each packet may occupy more than or less than a single entry, or a packet may be larger than the FIFO can store at once.
  • Five of the eight control bits reflect a threshold value.
  • FIFO 110 will not begin transmission of a packet until at least R entries are filled.
  • T is the number of FIFO entries required to store the entire packet
  • f c is the clock frequency of the data consumer
  • f p is the clock frequency of the data producer.
  • the function INT conventionally rounds its input to an integer.
  • the data producer calculates R for each packet it buffers in FIFO 110 and includes the threshold value in the packet data stream to be stored in the threshold value bit field of the control bit section of an entry along with start bits to indicate a beginning of a data packet.
  • Equation 1 is not the only way to calculate the threshold value and other equations may be used in other embodiments depending upon factors such as available hardware and the particular application.
  • FIG. 3 illustrates the bit fields of an entry, and will be discussed later. Note that the CPU of the data producer may be used to determine the threshold value using Equation 1, or a dedicated co-processor may be used in order to reduce the work load of the CPU.
  • MUX controller 206 and read comparator 210 attempt to output data to the data consumer as soon as possible.
  • MUX controller 206 selects the default output NOP as the output of MUX 204 .
  • the first condition in which MUX 204 outputs NOP is when there is no buffered data to output.
  • read comparator 210 detects that the read and write pointers are equivalent, and de-asserts the control signal START ⁇ overscore (STOP) ⁇ .
  • START ⁇ overscore (STOP) ⁇ The second condition in which MUX 204 outputs NOP is when there is buffered data but less than the amount specified in the threshold control field.
  • read comparator 210 receives the calculated threshold field output by MUX 202 and compares it with the difference between the read and write pointers. If the difference is less than the threshold value, then read comparator 210 will de-assert the control signal START ⁇ overscore (STOP) ⁇ to stop the data flow to the consumer.
  • START overscore
  • write counter 212 increments its output WRITE POINTER. Eventually, the data producer will buffer enough information to begin outputting data to the data consumer.
  • Read comparator 210 will detect this condition when the difference between the read and write pointers is equal to or greater than the stored threshold value. Read comparator 210 asserts the control signal START ⁇ overscore (STOP) ⁇ .
  • STOP control signal START ⁇ overscore
  • MUX controller 206 selects the first input to MUX 204 as its output. MUX controller 206 will cycle through its first through fourth inputs synchronously with the data consumer time domain clock.
  • Read counter 208 increments its output READ POINTER after four consumer domain clock cycles.
  • the READ POINTER indicates which DATA/CONTROL ENTRY is output by MUX 202 .
  • MUX controller 206 and read comparator 210 will continue outputting each successive entry until the packet is completely output to the data consumer.
  • Read comparator 210 detects the end of each packet by a particular CONTROL bit field.
  • Read comparator 210 will perform a new comparison between the read pointer, write pointer, and threshold field for the next packet. If the data packet is larger than the FIFO buffer can store at one time, write operations to the FIFO buffer will overlap in time with the read operations to ensure that a continuous data stream is transmitted to the data consumer.
  • each of the different sized data blocks can transmitted through the first-in, first-out buffer without interruption from the producer of the data to the consumer of the data.
  • FIG. 3 illustrates, in graphical form, a DATA/CONTROL ENTRY depicted in FIG. 2 .
  • the first and second bits comprise a START field to indicate when to start transferring data to the FIFO buffer. All entries associated with a single packet except the last entry are encoded with the pattern 00. The last entry in a packet is encoded with the pattern 11 to indicate stop transferring data. This bit pattern indicates to read comparator 210 to perform another comparison.
  • the third through seventh bits comprise the THRESHOLD field. At least the first entry in each packet contains a value corresponding to the number of entries required before beginning data transmission.
  • the control bits used to indicate START also indicate that a corresponding variable threshold value is valid. The subsequent entries may or may not contain the threshold value.
  • each entry in FIFO 110 may contain one or more instructions for execution by a data processor or by execution units in a data processor.
  • the disclosed invention could be used to initiate sequential execution of instructions in an instruction stack of a data processing system without the problem of gaps between the instructions. Therefore, it is intended that this invention encompass all such variations and modifications as fall within the scope of the appended claims.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Communication Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

A data processor (102) includes a first-in, first-out (FIFO) buffer (110) having a variable threshold. The FIFO buffer (110) has a plurality of entries (200) for storing at least a portion of a data block that is to be transmitted through the FIFO buffer (110). To allow data blocks of varying size to be transmitted at different data rates, a variable threshold value for determining a maximum fullness of the FIFO buffer (110) is automatically calculated by the data processor (102) for each data block. This allows the data block to be transmitted through the FIFO buffer (110) as a continuous data stream, without interruption, from the data processor (102) to a data consumer. The variable threshold value is appended to a first entry of the data block along with start bits to indicate a beginning of the data block. The FIFO buffer (110) may include read and write counters (208, 212) and a comparator (210) for comparing a difference between read and write pointers and the variable threshold value.

Description

FIELD OF THE INVENTION
This invention relates generally to data processing systems and more particularly to data buffering in a data processing system.
BACKGROUND OF THE INVENTION
Data or information in computers is processed in a predominantly serial fashion. Many times there are sources and destinations of data that are connected by buses. Usually there is a mismatch in the rate at which data is produced and the rate at which data can be accepted. One way to accommodate a mismatch in data rates is to use a first-in, first-out (FIFO) buffer between the data source and data destination.
Certain FIFOs contain threshold values that serve to control their operation. For instance, a threshold might be set to generate an interrupt to the data source if the source is about to exceed the capacity of the FIFO (overrun). Conversely, a threshold might be set to disable the output of data until an uninterrupted supply of data can be guaranteed (underrun). Some communications protocols specify fixed length transmissions of blocks, or packets, of data. If one or more gaps are interjected into the transmission because of, for example, an underrun or overrun, then one or more data beats at the end of the transmission may be ignored by the destination to ensure that an output data stream is transmitted without interruption and contains no bubbles or gaps.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 illustrates, in block diagram form, a data processing system in which the disclosed invention may be incorporated;
FIG. 2 illustrates, in block diagram form, a FIFO depicted in FIG. 1 constructed in accordance with the present invention; and
FIG. 3 illustrates, in graphical form, a DATA/CONTROL ENTRY depicted in FIG. 2.
DETAILED DESCRIPTION OF THE DRAWINGS
FIG. 1 illustrates, in block diagram form, a data processing system 100 in which the disclosed invention may be incorporated. Devices in data processing system 100 communicate with each other using a high-speed bus protocol. Each device can operate at its own clock rate. According to this protocol, data to be transmitted between devices is grouped into packets by the device generating the data (data producer or source), buffered in FIFOs, and automatically transmitted to a receiving device (data consumer or destination). Control or “header” information is embedded into the packet and is used to indicate such things as the destination of the packet, its length, etc. Here, a first data processor 102 communicates with a second data processor 104 via two uni-directional communication buses. Data processor 104 may be able to consume data at a rate greater than the rate at which data processor 102 can produce data. However, data processor 104 cannot interrupt the transmission of a packet to wait for additional data. Therefore, data processor 102 uses a FIFO buffer to buffer a certain fraction of the packet before it begins transmitting the data to data processor 104. The minimum amount of data temporarily stored in the FIFO buffer depends upon the rate at which data processor 102 produces data, the rate at which data processor 104 consumes data, and the size of the packet. According to the illustrated embodiment, variable threshold information is stored in the FIFO along with data. The FIFO uses the threshold information as a predetermined maximum fullness value of the FIFO buffer. When the predetermined fullness, as determined by the threshold value, is reached, a data block, or packet, can be transmitted to the second device from the FIFO buffer without risk of introducing bubbles into an individual data packet. The data packet is transmitted as an uninterrupted data stream. The threshold value is automatically determined by the transmitting data processor on a per-packet basis to maximize data throughput. The transmitting data processor determines the variable threshold value as a function of a difference between an input data rate and an output data rate of the FIFO buffer, and a size of the data block to be transmitted through the FIFO buffer. The calculated threshold value is then appended to a first entry of the data block. Specifically, start-up latency is tailored to the size of each packet. For instance, shorter packets can be completely loaded into the FIFO faster than longer packets. In these cases, the shorter packets can have lower thresholds. This strategy may cause the FIFO to begin transmitting the shorter packet, as an unbroken data stream, earlier than if it had the threshold appropriate for the longer packet.
Continuing with FIG. 1, data processor 102 includes a central processing unit 106 (CPU 1) and a bus interface unit 108. Bus interface unit 108 includes an output FIFO buffer 110 and an input FIFO buffer 112. Similarly, data processor 104 includes a central processing unit 114 (CPU 2) and a bus interface unit 116. Bus interface unit 116 includes an output FIFO buffer 118 and an input FIFO buffer 120. The output FIFO buffer 110 is connected to the input FIFO buffer 120. Conversely, the output FIFO buffer 118 is connected to the input FIFO buffer 112. In the illustrated embodiment, data processor 102 is implemented on a separate integrated circuit than data processor 104.
In operation, CPU 1 executes instructions stored in memory (not depicted) using operands also stored in memory and received from an external source (not shown). Bus interface unit 110 coordinates communications from CPU 1 to other devices in the data processing system and vice versa. FIFOs 110 and 112 buffer data so that CPU 1 can perform other work while extended communications are in operation. FIFO 110 is described below in connection with FIG. 2. CPU 2 operates similarly.
The depicted embodiment illustrates a data processing system in which two data processors are connected directly to each other. Both the type and topology of devices in data processing system 100 can differ. For instance, data processor 104 may be replaced with a volatile memory system, with a non-volatile memory system, with one or more user input devices such as a keyboard or monitor, with a bus-to-bus interconnect, etc. Also, the single point-to-point topology depicted in FIG. 1 may be replaced with topologies that contain more than one possible data destination. For instance, data processor 102 may be installed in a ring topology in which messages are passed from device to device until a packet reaches its destination or returns to the data producer. Or, data processor 102 may be connected to a switched network topology in which a message is routed to a destination by an intermediate device connected to the data producer and to several data consumers.
FIG. 2 illustrates, in block diagram form, FIFO 110 depicted in FIG. 1 constructed in accordance with the present invention. FIFO 110 contains twenty DATA/CONTROL ENTRIES 200. Each one of the entries contains eight CONTROL bits and sixty-eight DATA bits. The sixty-eight DATA bits are further divided into four seventeen bit sections. The input of each entry is connected to a data producer via DATA IN. Note that DATA IN includes both the data and control bits for each entry. The output of each entry is connected to a data consumer via a 20:1 multiplexer (MUX) 202 and a 5:1 MUX 204. A multi-bit control signal labeled READ POINTER selects which of the twenty inputs to MUX 202 is output to MUX 204. An output of MUX 202 provides a set of sixty-eight DATA bits from a selected entry to MUX 204. The first section of seventeen DATA bits output by MUX 202 are connected to the first input of MUX 204. The second section of seventeen DATA bits output by MUX 202 are connected to the second input of MUX 204. The third section of seventeen DATA bits output by MUX 202 are connected to the third input of MUX 204. The fourth section of seventeen DATA bits output by MUX 202 are connected to the fourth input of MUX 204. A default output labeled NOP is connected to the fifth input of MUX 204. The output of a MUX controller 206 selects which of the five inputs to MUX 204 is output to CPU 2 as DATA OUT. Note that the number of entries and the number of control bits and data bits per entry are provided for illustration purposes only and may be different in other embodiments.
MUX 202 also outputs a selected set of eight CONTROL bits to a read comparator 210. Read comparator 210 receives the control signal labeled READ POINTER and a multi-bit control signal labeled WRITE POINTER, each synchronized by a pair of serially connected latches, 214 and 218, respectively. Read comparator 210 generates a control signal START{overscore (STOP)}. The control signal START{overscore (STOP)} is connected to a read counter 208 and to MUX controller 206. Read counter 208 generates the control signal READ POINTER. A write counter 212 generates the control signal WRITE POINTER. Write counter 212 also encodes the control signal WRITE POINTER into a one-of-N format. A differing one of each of the N output signals is connected to a differing one of the DATA CONTROL ENTRIES 200. Write counter 212 receives a multi-bit control signal WRITE CONTROL from the data producer. In the illustrated embodiment, the data producer is CPU 1. A write comparator 216 receives the control signal READ POINTER synchronized by a pair of serially connected latches 218, receives the control signal WRITE POINTER, and generates a control signal labeled READY. The control signal READY is provided to the data producer.
Although the various blocks within FIFO 110 are integrated into a single electronic circuit, certain portions operate at different clock speeds. This differentiation enables the exchange of data between the data producer and FIFO 110 and enables the exchange of data between FIFO 110 and the data consumer. As described above, the data consumer operates at a higher clock rate than does the data producer. Specifically, MUX 204, MUX controller 206, read counter 208, read comparator 210, and latch pair 214 operate in the data consumer's time domain. Conversely, DATA/CONTROL ENTRIES 200, MUX 202, write counter 212, write comparator 216, and latch pair 218 operate in the data producer's time domain. Note that in other embodiments, the data rate of the data consumer may be lower than the data rate of the data producer, or may even have the same data rate as the producer.
The operation of FIFO 110 may be conveniently described with respect to its two major functions: writing data and reading data. After a reset or initialization operation, the write counter 212 and read counter 208 are set to the same initial value. Also, MUX controller 206 selects the fifth, or NOP, input of MUX 204 as its output.
Writing Data to FIFO 110
After reset, write comparator 216 will detect that the read and write pointers are equivalent. This equivalency indicates that no valid data is in FIFO 110, and that all entries are available for receiving data. At other times, the write pointer may lag the read pointer by more than one location. In these cases, there is at least one location in which to store data. In each of these circumstances, write comparator 216 will assert the control signal READY to the data producer indicating the ability of the FIFO to store data. At other times, FIFO 110 may become full. In this case, the write pointer will catch up to the read pointer. To avoid over-writing valid data, write comparator 216 will de-assert READY.
At some point, the data producer will be required to write data in FIFO 110. The data producer will input data to FIFO 110 via the data input DATA IN and will assert certain ones of control signals WRITE CONTROL, indicating valid data. Write counter 212 will enable one entry within FIFO 110 to store the data by asserting its single-bit output corresponding to the entry. Write counter 212 will also increment itself to ensure that previously stored data is not over-written at a later time.
As described above, the data producer will store 8 bits of control information and 68 bits of data in each entry. In the depicted embodiment, each packet begins at the first bit position in the first section of the entry. The end of the data packet can be located in any of the four sections of an entry. Furthermore, each packet may occupy more than or less than a single entry, or a packet may be larger than the FIFO can store at once. Five of the eight control bits reflect a threshold value. FIFO 110 will not begin transmission of a packet until at least R entries are filled. The threshold value, R, is automatically calculated by the data producer for each packet using the equation: R = INT { T * ( f c - f p f c ) + 1.5 } Equation 1
Figure US06389489-20020514-M00001
where T is the number of FIFO entries required to store the entire packet, fc is the clock frequency of the data consumer, and fp is the clock frequency of the data producer. The function INT conventionally rounds its input to an integer. The data producer calculates R for each packet it buffers in FIFO 110 and includes the threshold value in the packet data stream to be stored in the threshold value bit field of the control bit section of an entry along with start bits to indicate a beginning of a data packet. Those skilled in the art will recognize that Equation 1 is not the only way to calculate the threshold value and other equations may be used in other embodiments depending upon factors such as available hardware and the particular application. FIG. 3 illustrates the bit fields of an entry, and will be discussed later. Note that the CPU of the data producer may be used to determine the threshold value using Equation 1, or a dedicated co-processor may be used in order to reduce the work load of the CPU.
Reading Data from FIFO 110
MUX controller 206 and read comparator 210 attempt to output data to the data consumer as soon as possible. However, there are two conditions in which FIFO 110 cannot output data. When FIFO 110 cannot output data, MUX controller 206 selects the default output NOP as the output of MUX 204. The first condition in which MUX 204 outputs NOP is when there is no buffered data to output. In this first case, read comparator 210 detects that the read and write pointers are equivalent, and de-asserts the control signal START{overscore (STOP)}. The second condition in which MUX 204 outputs NOP is when there is buffered data but less than the amount specified in the threshold control field. In this second case, read comparator 210 receives the calculated threshold field output by MUX 202 and compares it with the difference between the read and write pointers. If the difference is less than the threshold value, then read comparator 210 will de-assert the control signal START{overscore (STOP)} to stop the data flow to the consumer.
As the data producer buffers data in FIFO 110, write counter 212 increments its output WRITE POINTER. Eventually, the data producer will buffer enough information to begin outputting data to the data consumer. Read comparator 210 will detect this condition when the difference between the read and write pointers is equal to or greater than the stored threshold value. Read comparator 210 asserts the control signal START{overscore (STOP)}. MUX controller 206 then selects the first input to MUX 204 as its output. MUX controller 206 will cycle through its first through fourth inputs synchronously with the data consumer time domain clock. Read counter 208 increments its output READ POINTER after four consumer domain clock cycles. Note, the READ POINTER indicates which DATA/CONTROL ENTRY is output by MUX 202. MUX controller 206 and read comparator 210 will continue outputting each successive entry until the packet is completely output to the data consumer. Read comparator 210 detects the end of each packet by a particular CONTROL bit field. Read comparator 210 will perform a new comparison between the read pointer, write pointer, and threshold field for the next packet. If the data packet is larger than the FIFO buffer can store at one time, write operations to the FIFO buffer will overlap in time with the read operations to ensure that a continuous data stream is transmitted to the data consumer.
By allowing the data producer to calculate a threshold value for each data block, each of the different sized data blocks can transmitted through the first-in, first-out buffer without interruption from the producer of the data to the consumer of the data.
FIG. 3 illustrates, in graphical form, a DATA/CONTROL ENTRY depicted in FIG. 2. The first and second bits comprise a START field to indicate when to start transferring data to the FIFO buffer. All entries associated with a single packet except the last entry are encoded with the pattern 00. The last entry in a packet is encoded with the pattern 11 to indicate stop transferring data. This bit pattern indicates to read comparator 210 to perform another comparison. The third through seventh bits comprise the THRESHOLD field. At least the first entry in each packet contains a value corresponding to the number of entries required before beginning data transmission. The control bits used to indicate START also indicate that a corresponding variable threshold value is valid. The subsequent entries may or may not contain the threshold value.
Although the present invention has been described with reference to a specific embodiment, further modifications and improvements will occur to those skilled in the art. For example, in the described embodiment, all non-final entries in a packet are coded with a START field 00. In other embodiments, all entries between the first and last entry could be encoded with a bit pattern other than 00 or 11. Furthermore, the THRESHOLD field could be modified to identify the location of the end of a packet within the last entry. FIFO 110 could then begin the next packet transmission without outputting meaningless data. Also, the above description contains only generic references to data. In one embodiment, each entry in FIFO 110 may contain one or more instructions for execution by a data processor or by execution units in a data processor. For example, the disclosed invention could be used to initiate sequential execution of instructions in an instruction stack of a data processing system without the problem of gaps between the instructions. Therefore, it is intended that this invention encompass all such variations and modifications as fall within the scope of the appended claims.

Claims (18)

What is claimed is:
1. A first-in, first-out buffer for transmitting a data block from a data producer to a data consumer, the first-in, first-out buffer comprising:
a plurality of entries, each of the plurality of entries for temporarily storing at least a portion of the data block and a variable threshold value;
a write counter for providing a write pointer value for determining a current entry of the plurality of entries in which to write data and the variable threshold value;
a read counter for providing a read pointer value for determining a current entry of the plurality of entries from which to read data and the variable threshold value; and
a read comparator for determining that a difference between the read pointer value and the write pointer value is greater than or equal to the variable threshold value, and in response, causing the at least a portion of the data block to be read from the plurality of entries, wherein the variable threshold value is determined based on an input data rate and an output data rate of the first-in, first-out buffer, and a size of the data block to be transmitted through the first-in, first-out buffer.
2. The first-in, first-out buffer of claim 1, wherein data blocks transmitted through the first-in, first-out buffer differ in size and each data block is transmitted without interruption from the data producer to the data consumer.
3. The first-in, first-out buffer of claim 1 wherein the variable threshold value determines a maximum fullness of the plurality of entries for a predetermined data block.
4. The first-in, first-out buffer of claim 1 wherein a variable threshold value corresponding to the data block is appended to a first entry of the data block to be transmitted through the first-in, first-out buffer.
5. The first-in, first-out buffer of claim 1, wherein the variable threshold value is automatically recalculated by a data processor for each data block to be transmitted.
6. The first-in, first-out buffer of claim 1, wherein a write operation to the first-in, first-out buffer overlaps with a read operation from the first-in, first-out buffer.
7. The first-in, first-out buffer of claim 1, further comprising a write comparator for determining a difference between the read pointer value and the write pointer value and in response, indicating an available entry of the plurality of entries.
8. The first-in, first-out buffer of claim 1, wherein first control bits are appended to a first entry of the data block to indicate when to start transferring the data block and second control bits are appended to a last entry of the data block to indicate when to stop transferring the data block.
9. The first-in, first-out buffer of claim 8, wherein the data block is transmitted through the first-in, first-out buffer without interruption in response to the read counter receiving the first control bits.
10. The first-in, first-out buffer of claim 8, wherein the first control bits indicate that a corresponding variable threshold value is valid.
11. A data processing system, comprising:
a processing unit for executing instructions; and
a first-in, first-out buffer comprising:
a plurality of entries, each of the plurality of entries for temporarily storing at least a portion of a data block and a variable threshold value;
a write counter for providing a write pointer value for determining a current entry of the plurality of entries in which to write data and the variable threshold value;
a read counter for providing a read pointer value for determining a current entry of the plurality of entries from which to read data and the variable threshold value; and
a read comparator for determining that a difference between the read pointer value and the write pointer value is greater than or equal to the variable threshold value, and in response, causing the at least a portion of the data block to be read from the plurality of entries, wherein the variable threshold value is based on a difference between an input data rate and an output data rate of the first-in, first-out buffer, and a size of the data block to be transmitted through the first-in, first-out buffer.
12. The data processing system of claim 11, wherein a write operation to the first-in, first-out buffer overlaps with a read operation from the first-in, first-out buffer.
13. The data processing system of claim 11, further comprising a write comparator for determining a difference between the read pointer value and the write pointer value and in response, indicating an available entry of the plurality of entries.
14. The data processing system of claim 11, wherein first control bits are appended to a first entry of the data block to indicate when to start transferring the data block and second control bits are appended to a last entry of the data block to indicate when to stop transferring the data block.
15. The data processing system of claim 14, wherein the first control bits indicate that a corresponding variable threshold value is valid.
16. A data processing system, comprising:
a central processing unit for executing instructions; and
a first-in, first-out buffer for transmitting data blocks of variable size and at variable data rates from the data processing system to a data consumer that is external to the data processing system, wherein a fullness of the first-in, first-out buffer is controlled by a variable threshold value, and the variable threshold value is automatically determined to allow a data block to be transmitted through the first-in, first-out buffer as a continuous data stream without interruption, the first-in, first-out buffer comprising:
a plurality of entries, each of the plurality of entries for temporarily storing at least a portion of the data block and a corresponding variable threshold value;
a write counter for providing a write pointer value for determining a current entry of the plurality of entries in which to write data and the variable threshold value;
a read counter for providing a read pointer value for determining a current entry of the plurality of entries from which to read data and the variable threshold value, wherein read operations from, and write operations to, the first-in, first-out buffer overlap;
a write comparator for determining a difference between the read pointer value and the write pointer value and in response, indicating an available entry of the plurality of entries; and
a read comparator for determining that a difference between the read pointer value and the write pointer value is greater than or equal to the variable threshold value, and in response, causing the at least a portion of the data block to be read from the plurality of entries, wherein the variable threshold value is determined using a difference between an input data rate and an output data rate of the first-in, first-out buffer, and a size of the data block to be transmitted through the first-in, first-out buffer.
17. The data processing system of claim 16, wherein first control bits are appended to a first entry of the data block to indicate a beginning of the data block and second control bits are appended to a last entry of the data block to indicate an end of the data block.
18. The data processing system of claim 17, wherein the first control bits indicate that a corresponding variable threshold value is valid.
US09/271,215 1999-03-17 1999-03-17 Data processing system having a fifo buffer with variable threshold value based on input and output data rates and data block size Expired - Lifetime US6389489B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US09/271,215 US6389489B1 (en) 1999-03-17 1999-03-17 Data processing system having a fifo buffer with variable threshold value based on input and output data rates and data block size

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/271,215 US6389489B1 (en) 1999-03-17 1999-03-17 Data processing system having a fifo buffer with variable threshold value based on input and output data rates and data block size

Publications (1)

Publication Number Publication Date
US6389489B1 true US6389489B1 (en) 2002-05-14

Family

ID=23034674

Family Applications (1)

Application Number Title Priority Date Filing Date
US09/271,215 Expired - Lifetime US6389489B1 (en) 1999-03-17 1999-03-17 Data processing system having a fifo buffer with variable threshold value based on input and output data rates and data block size

Country Status (1)

Country Link
US (1) US6389489B1 (en)

Cited By (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020077981A1 (en) * 2000-11-13 2002-06-20 Yozan, Inc. Communication terminal device and billing device
US20020087756A1 (en) * 2001-01-04 2002-07-04 Jan Maessen Virtual insertion of cells from a secondary source into a FIFO
US20020112105A1 (en) * 2001-02-12 2002-08-15 Mordechai Daniel Method and apparatus for efficient messaging between memories across a PCI bus
US20020194332A1 (en) * 2001-06-13 2002-12-19 Connor Patrick L. Method and apparatus to manage resources for a multi-threaded device driver
US20030026279A1 (en) * 2001-06-08 2003-02-06 Tetsuya Onoda Resource reservation scheme and packet scheduling scheme for file transfer
US20030037210A1 (en) * 2001-08-15 2003-02-20 Chris Haywood System for head and tail caching
US20030063618A1 (en) * 2001-10-03 2003-04-03 Khacherian Todd L. Variable length switch fabric
US20030088694A1 (en) * 2001-11-02 2003-05-08 Internet Machines Corporation Multicasting method and switch
US20030103501A1 (en) * 2001-12-05 2003-06-05 Shaun Clem Message ring in a switching network
US20030187120A1 (en) * 2002-02-20 2003-10-02 Chaiko David J. Coatings and films derived from clay/wax nanocomposites
US20040098509A1 (en) * 2002-11-14 2004-05-20 Vic Alfano System for reordering sequenced based packet segments in a switching network
US20040168041A1 (en) * 2003-02-25 2004-08-26 Internet Machines Corp. Flexible interface device
US20040193693A1 (en) * 2001-06-29 2004-09-30 Gangwal Om Prakash Data processing apparatus and method fo operating a data processing apparatus
US20040205225A1 (en) * 2002-12-02 2004-10-14 Goodrich Control Systems Limited Apparatus for and method of transferring data
US20050081003A1 (en) * 2003-10-08 2005-04-14 Samsung Electronics Co., Ltd. Apparatus and method for efficient data storage in a digital logic device
US20050105516A1 (en) * 2003-11-18 2005-05-19 Heath Stewart Switch with transparent and non-transparent ports
US20050117578A1 (en) * 2003-11-18 2005-06-02 Heath Stewart Switching with transparent and non-transparent ports
US20050154804A1 (en) * 2004-01-08 2005-07-14 Heath Stewart Switch for bus optimization
US20050180250A1 (en) * 2004-02-13 2005-08-18 International Business Machines Corporation Data packet buffering system with automatic threshold optimization
US6967951B2 (en) 2002-01-11 2005-11-22 Internet Machines Corp. System for reordering sequenced based packets in a switching network
US20060080482A1 (en) * 2000-11-15 2006-04-13 Seagate Technology Llc Dynamic buffer size allocation for multiplexed streaming
US20070081558A1 (en) * 2002-05-16 2007-04-12 Nadim Shaikli System For Reordering Sequenced Based Packets In A Switching Network
US20080010389A1 (en) * 2006-07-06 2008-01-10 Citizen Holdings Co., Ltd. Communications device, method for communications control, and printer comprising this communications device
EP1880299A2 (en) * 2005-05-11 2008-01-23 Qualcomm, Incorporated Latency insensitive fifo signaling protocol
US20090292836A1 (en) * 2008-05-21 2009-11-26 Realtek Semiconductor Corp. Data access device and method for communication system
US20100191918A1 (en) * 2009-01-23 2010-07-29 Korea Advanced Institute Of Science & Technology Cache Controller Device, Interfacing Method and Programming Method Using the Same
US20110153963A1 (en) * 2009-12-23 2011-06-23 Mstar Semiconductor, Inc. Memory Controller and Associated Control Method
US7990987B2 (en) 2003-02-25 2011-08-02 Topside Research, Llc Network processor having bypass capability
US20130010793A1 (en) * 2006-09-14 2013-01-10 Opentv, Inc. Methods and systems for data transmission
CN101616068B (en) * 2008-06-24 2013-07-03 瑞昱半导体股份有限公司 Data access device and method applied to communication system
CN102110461B (en) * 2009-12-24 2014-07-16 晨星软件研发(深圳)有限公司 Memory controller and control method thereof
US9250968B2 (en) 2008-09-26 2016-02-02 Samsung Electronics Co., Ltd. Method and memory manager for managing a memory in a multi-processing environment
US11303684B2 (en) 2006-09-14 2022-04-12 Opentv, Inc. Methods and systems for data transmission

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4683534A (en) 1985-06-17 1987-07-28 Motorola, Inc. Method and apparatus for interfacing buses of different sizes
US4954987A (en) 1989-07-17 1990-09-04 Advanced Micro Devices, Inc. Interleaved sensing system for FIFO and burst-mode memories
US5121346A (en) * 1989-03-31 1992-06-09 Sgs-Thomson Microelectronics, Inc. Difference comparison between two asynchronous pointers and a programmable value
EP0489504A2 (en) 1990-11-30 1992-06-10 International Business Machines Corporation Bidirectional FIFO buffer for interfacing between two buses
US5155810A (en) 1989-01-10 1992-10-13 Bull Hn Information Systems Inc. Dual FIFO peripheral with combinatorial logic circuitry
US5262997A (en) 1991-11-25 1993-11-16 Industrial Technology Research Institute Extendable FIFO
US5278956A (en) * 1990-01-22 1994-01-11 Vlsi Technology, Inc. Variable sized FIFO memory and programmable trigger level therefor for use in a UART or the like
US5287481A (en) 1991-12-19 1994-02-15 Opti, Inc. Automatic cache flush with readable and writable cache tag memory
US5327545A (en) 1988-05-26 1994-07-05 International Business Machines Corporation Data processing apparatus for selectively posting write cycles using the 82385 cache controller
US5602850A (en) 1993-02-09 1997-02-11 Dsc Communications Corporation High-speed packet bus
US5732286A (en) * 1995-08-10 1998-03-24 Cirrus Logic, Inc. FIFO based receive packet throttle for receiving long strings of short data packets
US5771356A (en) * 1995-01-04 1998-06-23 Cirrus Logic, Inc. Apparatus for controlling FIFO buffer data transfer by monitoring bus status and FIFO buffer thresholds
US5884099A (en) * 1996-05-31 1999-03-16 Sun Microsystems, Inc. Control circuit for a buffer memory to transfer data between systems operating at different speeds
US6134629A (en) * 1998-01-29 2000-10-17 Hewlett-Packard Company Determining thresholds and wrap-around conditions in a first-in-first-out memory supporting a variety of read and write transaction sizes

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4683534A (en) 1985-06-17 1987-07-28 Motorola, Inc. Method and apparatus for interfacing buses of different sizes
US5327545A (en) 1988-05-26 1994-07-05 International Business Machines Corporation Data processing apparatus for selectively posting write cycles using the 82385 cache controller
US5155810A (en) 1989-01-10 1992-10-13 Bull Hn Information Systems Inc. Dual FIFO peripheral with combinatorial logic circuitry
US5121346A (en) * 1989-03-31 1992-06-09 Sgs-Thomson Microelectronics, Inc. Difference comparison between two asynchronous pointers and a programmable value
US4954987A (en) 1989-07-17 1990-09-04 Advanced Micro Devices, Inc. Interleaved sensing system for FIFO and burst-mode memories
US5278956A (en) * 1990-01-22 1994-01-11 Vlsi Technology, Inc. Variable sized FIFO memory and programmable trigger level therefor for use in a UART or the like
US5295246A (en) 1990-11-30 1994-03-15 International Business Machines Corporation Bidirectional FIFO buffer for interfacing between two buses of a multitasking system
EP0489504A2 (en) 1990-11-30 1992-06-10 International Business Machines Corporation Bidirectional FIFO buffer for interfacing between two buses
US5262997A (en) 1991-11-25 1993-11-16 Industrial Technology Research Institute Extendable FIFO
US5287481A (en) 1991-12-19 1994-02-15 Opti, Inc. Automatic cache flush with readable and writable cache tag memory
US5602850A (en) 1993-02-09 1997-02-11 Dsc Communications Corporation High-speed packet bus
US5771356A (en) * 1995-01-04 1998-06-23 Cirrus Logic, Inc. Apparatus for controlling FIFO buffer data transfer by monitoring bus status and FIFO buffer thresholds
US5732286A (en) * 1995-08-10 1998-03-24 Cirrus Logic, Inc. FIFO based receive packet throttle for receiving long strings of short data packets
US5884099A (en) * 1996-05-31 1999-03-16 Sun Microsystems, Inc. Control circuit for a buffer memory to transfer data between systems operating at different speeds
US6134629A (en) * 1998-01-29 2000-10-17 Hewlett-Packard Company Determining thresholds and wrap-around conditions in a first-in-first-out memory supporting a variety of read and write transaction sizes

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Rosenberg, "Dictionary of Computers, Information Processing & Telecommunications", Second Edition, pp 9 and 470 (1984).

Cited By (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020077981A1 (en) * 2000-11-13 2002-06-20 Yozan, Inc. Communication terminal device and billing device
US7974247B2 (en) * 2000-11-13 2011-07-05 Daita Frontier Fund, Llc Communication terminal device and billing device
US7581043B2 (en) * 2000-11-15 2009-08-25 Seagate Technology Llc Dynamic buffer size allocation for multiplexed streaming
US20060080482A1 (en) * 2000-11-15 2006-04-13 Seagate Technology Llc Dynamic buffer size allocation for multiplexed streaming
US6754743B2 (en) * 2001-01-04 2004-06-22 Lucent Technologies Inc. Virtual insertion of cells from a secondary source into a FIFO
US20020087756A1 (en) * 2001-01-04 2002-07-04 Jan Maessen Virtual insertion of cells from a secondary source into a FIFO
US20020112105A1 (en) * 2001-02-12 2002-08-15 Mordechai Daniel Method and apparatus for efficient messaging between memories across a PCI bus
US6988160B2 (en) * 2001-02-12 2006-01-17 P-Cube Ltd. Method and apparatus for efficient messaging between memories across a PCI bus
US20030026279A1 (en) * 2001-06-08 2003-02-06 Tetsuya Onoda Resource reservation scheme and packet scheduling scheme for file transfer
US20020194332A1 (en) * 2001-06-13 2002-12-19 Connor Patrick L. Method and apparatus to manage resources for a multi-threaded device driver
US20040193693A1 (en) * 2001-06-29 2004-09-30 Gangwal Om Prakash Data processing apparatus and method fo operating a data processing apparatus
US20050265357A1 (en) * 2001-08-15 2005-12-01 Chris Haywood Memory caching
US6941426B2 (en) * 2001-08-15 2005-09-06 Internet Machines Corp. System for head and tail caching
US20030037210A1 (en) * 2001-08-15 2003-02-20 Chris Haywood System for head and tail caching
US20060072598A1 (en) * 2001-08-15 2006-04-06 Chris Haywood Variable size FIFO memory
US6987775B1 (en) 2001-08-15 2006-01-17 Internet Machines Corp. Variable size First In First Out (FIFO) memory with head and tail caching
US7639707B2 (en) 2001-08-15 2009-12-29 Chris Haywood Variable size FIFO memory
US20030063618A1 (en) * 2001-10-03 2003-04-03 Khacherian Todd L. Variable length switch fabric
US7782849B2 (en) 2001-10-03 2010-08-24 Forestay Research, Llc Data switch and switch fabric
US7362751B2 (en) 2001-10-03 2008-04-22 Topside Research, Llc Variable length switch fabric
US20030088694A1 (en) * 2001-11-02 2003-05-08 Internet Machines Corporation Multicasting method and switch
US20030103501A1 (en) * 2001-12-05 2003-06-05 Shaun Clem Message ring in a switching network
US7751419B2 (en) 2001-12-05 2010-07-06 Shaun Clem Message ring in a switching network
US8619802B2 (en) 2001-12-05 2013-12-31 T.R. Communications Ca, L.L.C. Message ring in a switching network
US20110026540A1 (en) * 2001-12-05 2011-02-03 Shaun Clem Message ring in a switching network
US20070121637A1 (en) * 2001-12-05 2007-05-31 Shaun Clem Message Ring in a Switching Network
US7203203B2 (en) 2001-12-05 2007-04-10 Internet Machines Corp. Message ring in a switching network
US20060072578A1 (en) * 2002-01-11 2006-04-06 Vic Alfano Reordering packets
US7856011B2 (en) 2002-01-11 2010-12-21 Vic Alfano Reordering packets
US8107377B2 (en) 2002-01-11 2012-01-31 Bunson Bell, Llc Reordering packets
US20100189123A1 (en) * 2002-01-11 2010-07-29 Vic Alfano Reordering Packets
US6967951B2 (en) 2002-01-11 2005-11-22 Internet Machines Corp. System for reordering sequenced based packets in a switching network
US8913618B2 (en) 2002-01-11 2014-12-16 Bunson Bell, Limited Liability Company Reordering packets
US20030187120A1 (en) * 2002-02-20 2003-10-02 Chaiko David J. Coatings and films derived from clay/wax nanocomposites
US20070081558A1 (en) * 2002-05-16 2007-04-12 Nadim Shaikli System For Reordering Sequenced Based Packets In A Switching Network
US20070081539A1 (en) * 2002-05-16 2007-04-12 Nadim Shaikli Method For Reordering Sequenced Packets
US7646780B2 (en) 2002-05-16 2010-01-12 Topside Research, Llc System for reordering sequenced based packets in a switching network
US7668187B2 (en) 2002-05-16 2010-02-23 Topside Research, Llc Method for reordering sequenced packets
US20070237151A1 (en) * 2002-11-14 2007-10-11 Vic Alfano Reordering Sequence Based Channels
US20040098509A1 (en) * 2002-11-14 2004-05-20 Vic Alfano System for reordering sequenced based packet segments in a switching network
US7590721B2 (en) 2002-11-14 2009-09-15 Topside Research, Llc Reordering sequence based channels
US20040205225A1 (en) * 2002-12-02 2004-10-14 Goodrich Control Systems Limited Apparatus for and method of transferring data
US20040168041A1 (en) * 2003-02-25 2004-08-26 Internet Machines Corp. Flexible interface device
US7990987B2 (en) 2003-02-25 2011-08-02 Topside Research, Llc Network processor having bypass capability
US8190858B2 (en) 2003-02-25 2012-05-29 Topside Research, Llc Interface device for interfacing a main processor to processing engines and classifier engines, and methods for configuring and operating interface devices
US20050081003A1 (en) * 2003-10-08 2005-04-14 Samsung Electronics Co., Ltd. Apparatus and method for efficient data storage in a digital logic device
US7945722B2 (en) 2003-11-18 2011-05-17 Internet Machines, Llc Routing data units between different address domains
US20080304504A1 (en) * 2003-11-18 2008-12-11 Heath Stewart PCI Express Switch with Backwards Compatibility
US7421532B2 (en) 2003-11-18 2008-09-02 Topside Research, Llc Switching with transparent and non-transparent ports
US20110016258A1 (en) * 2003-11-18 2011-01-20 Heath Stewart Routing Data Units Between Different Address Domains
US7454552B2 (en) 2003-11-18 2008-11-18 Topside Research, Llc Switch with transparent and non-transparent ports
US7814259B2 (en) 2003-11-18 2010-10-12 Internet Machines, Llc PCI express switch with backwards compatibility
US20050105516A1 (en) * 2003-11-18 2005-05-19 Heath Stewart Switch with transparent and non-transparent ports
US20050117578A1 (en) * 2003-11-18 2005-06-02 Heath Stewart Switching with transparent and non-transparent ports
US7426602B2 (en) 2004-01-08 2008-09-16 Topside Research, Llc Switch for bus optimization
US20080307150A1 (en) * 2004-01-08 2008-12-11 Heath Stewart Optimized Switching Method
US7590791B2 (en) 2004-01-08 2009-09-15 Topside Research, Llc Optimized switching method
US20050154804A1 (en) * 2004-01-08 2005-07-14 Heath Stewart Switch for bus optimization
US7546400B2 (en) * 2004-02-13 2009-06-09 International Business Machines Corporation Data packet buffering system with automatic threshold optimization
US20050180250A1 (en) * 2004-02-13 2005-08-18 International Business Machines Corporation Data packet buffering system with automatic threshold optimization
US7725625B2 (en) 2005-05-11 2010-05-25 Qualcomm Incorporated Latency insensitive FIFO signaling protocol
EP1880299A4 (en) * 2005-05-11 2009-07-08 Qualcomm Inc Latency insensitive fifo signaling protocol
EP1880299A2 (en) * 2005-05-11 2008-01-23 Qualcomm, Incorporated Latency insensitive fifo signaling protocol
US20080010389A1 (en) * 2006-07-06 2008-01-10 Citizen Holdings Co., Ltd. Communications device, method for communications control, and printer comprising this communications device
US7761620B2 (en) * 2006-07-06 2010-07-20 Citizen Holdings Co., Ltd. Communications device, and communications method for enabling reception of real-time execution commands when a receive buffer is full
US9712581B2 (en) 2006-09-14 2017-07-18 Opentv, Inc. Methods and systems for data transmission
US11870829B2 (en) 2006-09-14 2024-01-09 Opentv, Inc. Methods and systems for data transmission
US11303684B2 (en) 2006-09-14 2022-04-12 Opentv, Inc. Methods and systems for data transmission
US8782305B2 (en) * 2006-09-14 2014-07-15 Opentv, Inc. Methods and systems for data transmission
US20130010793A1 (en) * 2006-09-14 2013-01-10 Opentv, Inc. Methods and systems for data transmission
US10681097B2 (en) 2006-09-14 2020-06-09 Opentv, Inc. Methods and systems for data transmission
US9344470B2 (en) 2006-09-14 2016-05-17 Opentv, Inc. Methods and systems for data transmission
US9350686B2 (en) 2008-05-21 2016-05-24 Realtek Semiconductor Corp. Data access device and method for communication system
US20090292836A1 (en) * 2008-05-21 2009-11-26 Realtek Semiconductor Corp. Data access device and method for communication system
CN101616068B (en) * 2008-06-24 2013-07-03 瑞昱半导体股份有限公司 Data access device and method applied to communication system
US9250968B2 (en) 2008-09-26 2016-02-02 Samsung Electronics Co., Ltd. Method and memory manager for managing a memory in a multi-processing environment
US20100191918A1 (en) * 2009-01-23 2010-07-29 Korea Advanced Institute Of Science & Technology Cache Controller Device, Interfacing Method and Programming Method Using the Same
US20110153963A1 (en) * 2009-12-23 2011-06-23 Mstar Semiconductor, Inc. Memory Controller and Associated Control Method
US8412883B2 (en) * 2009-12-23 2013-04-02 Mstar Semiconductor, Inc. Memory controller and associated control method
CN102110461B (en) * 2009-12-24 2014-07-16 晨星软件研发(深圳)有限公司 Memory controller and control method thereof

Similar Documents

Publication Publication Date Title
US6389489B1 (en) Data processing system having a fifo buffer with variable threshold value based on input and output data rates and data block size
US8250394B2 (en) Varying the number of generated clock signals and selecting a clock signal in response to a change in memory fill level
US7930462B2 (en) Interface controller that has flexible configurability and low cost
US6493818B2 (en) Technique for pipelining synchronization to maintain throughput across two asynchronous clock domain boundaries
US5797033A (en) Direct memory access for storing and retrieving data based on packet size
US7281077B2 (en) Elastic buffer module for PCI express devices
US5448715A (en) Dual clock domain interface between CPU and memory bus
US8867573B2 (en) Transferring data between asynchronous clock domains
WO1999041670A1 (en) System for dynamically changing draining priority of a receive fifo
US5349683A (en) Bidirectional FIFO with parity generator/checker
US20050125590A1 (en) PCI express switch
US10282343B2 (en) Semiconductor device
CN114546914B (en) Processing device and system for performing data processing on multiple channel information
Picker et al. A VLSI priority packet queue with inheritance and overwrite
EP1396786A1 (en) Bridge circuit for use in retiming in a semiconductor integrated circuit
CN115221082A (en) Data caching method and device and storage medium
CN103858393A (en) Parallel processing of network packets
US8284792B2 (en) Buffer minimization in interface controller
US5469449A (en) FIFO buffer system having an error detection and resetting unit
US6341313B1 (en) Flow controlling method and apparatus for network between processors
US10637780B2 (en) Multiple datastreams processing by fragment-based timeslicing
JP2007140858A (en) Method for accessing memory, and device for accessing memory
KR100484134B1 (en) Asynchronous data interface apparatus using a FIFO
US11461069B2 (en) Multi-core audio processor with deadline scheduler
US6941418B1 (en) Integrated circuit and method outputting data

Legal Events

Date Code Title Description
AS Assignment

Owner name: MOTOROLA, INC., ILLINOIS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:STONE, CHRIS RANDALL;AGRAWAL, RITESH RADHESHYAM;REEL/FRAME:009838/0982

Effective date: 19990312

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: FREESCALE SEMICONDUCTOR, INC., TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MOTOROLA, INC.;REEL/FRAME:015698/0657

Effective date: 20040404

Owner name: FREESCALE SEMICONDUCTOR, INC.,TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MOTOROLA, INC.;REEL/FRAME:015698/0657

Effective date: 20040404

FPAY Fee payment

Year of fee payment: 4

AS Assignment

Owner name: CITIBANK, N.A. AS COLLATERAL AGENT, NEW YORK

Free format text: SECURITY AGREEMENT;ASSIGNORS:FREESCALE SEMICONDUCTOR, INC.;FREESCALE ACQUISITION CORPORATION;FREESCALE ACQUISITION HOLDINGS CORP.;AND OTHERS;REEL/FRAME:018855/0129

Effective date: 20061201

Owner name: CITIBANK, N.A. AS COLLATERAL AGENT,NEW YORK

Free format text: SECURITY AGREEMENT;ASSIGNORS:FREESCALE SEMICONDUCTOR, INC.;FREESCALE ACQUISITION CORPORATION;FREESCALE ACQUISITION HOLDINGS CORP.;AND OTHERS;REEL/FRAME:018855/0129

Effective date: 20061201

FPAY Fee payment

Year of fee payment: 8

AS Assignment

Owner name: CITIBANK, N.A., AS COLLATERAL AGENT,NEW YORK

Free format text: SECURITY AGREEMENT;ASSIGNOR:FREESCALE SEMICONDUCTOR, INC.;REEL/FRAME:024397/0001

Effective date: 20100413

Owner name: CITIBANK, N.A., AS COLLATERAL AGENT, NEW YORK

Free format text: SECURITY AGREEMENT;ASSIGNOR:FREESCALE SEMICONDUCTOR, INC.;REEL/FRAME:024397/0001

Effective date: 20100413

AS Assignment

Owner name: CITIBANK, N.A., AS NOTES COLLATERAL AGENT, NEW YOR

Free format text: SECURITY AGREEMENT;ASSIGNOR:FREESCALE SEMICONDUCTOR, INC.;REEL/FRAME:030633/0424

Effective date: 20130521

AS Assignment

Owner name: CITIBANK, N.A., AS NOTES COLLATERAL AGENT, NEW YOR

Free format text: SECURITY AGREEMENT;ASSIGNOR:FREESCALE SEMICONDUCTOR, INC.;REEL/FRAME:031591/0266

Effective date: 20131101

FPAY Fee payment

Year of fee payment: 12

AS Assignment

Owner name: FREESCALE SEMICONDUCTOR, INC., TEXAS

Free format text: PATENT RELEASE;ASSIGNOR:CITIBANK, N.A., AS COLLATERAL AGENT;REEL/FRAME:037354/0225

Effective date: 20151207

Owner name: FREESCALE SEMICONDUCTOR, INC., TEXAS

Free format text: PATENT RELEASE;ASSIGNOR:CITIBANK, N.A., AS COLLATERAL AGENT;REEL/FRAME:037356/0553

Effective date: 20151207

Owner name: FREESCALE SEMICONDUCTOR, INC., TEXAS

Free format text: PATENT RELEASE;ASSIGNOR:CITIBANK, N.A., AS COLLATERAL AGENT;REEL/FRAME:037356/0143

Effective date: 20151207

AS Assignment

Owner name: MORGAN STANLEY SENIOR FUNDING, INC., MARYLAND

Free format text: ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS;ASSIGNOR:CITIBANK, N.A.;REEL/FRAME:037486/0517

Effective date: 20151207

AS Assignment

Owner name: MORGAN STANLEY SENIOR FUNDING, INC., MARYLAND

Free format text: ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS;ASSIGNOR:CITIBANK, N.A.;REEL/FRAME:037518/0292

Effective date: 20151207

AS Assignment

Owner name: MORGAN STANLEY SENIOR FUNDING, INC., MARYLAND

Free format text: SUPPLEMENT TO THE SECURITY AGREEMENT;ASSIGNOR:FREESCALE SEMICONDUCTOR, INC.;REEL/FRAME:039138/0001

Effective date: 20160525

AS Assignment

Owner name: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC., NETHERLANDS

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:MORGAN STANLEY SENIOR FUNDING, INC.;REEL/FRAME:040925/0001

Effective date: 20160912

Owner name: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC., NE

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:MORGAN STANLEY SENIOR FUNDING, INC.;REEL/FRAME:040925/0001

Effective date: 20160912

AS Assignment

Owner name: NXP B.V., NETHERLANDS

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:MORGAN STANLEY SENIOR FUNDING, INC.;REEL/FRAME:040928/0001

Effective date: 20160622

AS Assignment

Owner name: NXP USA, INC., TEXAS

Free format text: CHANGE OF NAME;ASSIGNOR:FREESCALE SEMICONDUCTOR INC.;REEL/FRAME:040652/0180

Effective date: 20161107

AS Assignment

Owner name: NXP USA, INC., TEXAS

Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE LISTED CHANGE OF NAME SHOULD BE MERGER AND CHANGE PREVIOUSLY RECORDED AT REEL: 040652 FRAME: 0180. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME;ASSIGNOR:FREESCALE SEMICONDUCTOR INC.;REEL/FRAME:041354/0148

Effective date: 20161107

AS Assignment

Owner name: MORGAN STANLEY SENIOR FUNDING, INC., MARYLAND

Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENTS 8108266 AND 8062324 AND REPLACE THEM WITH 6108266 AND 8060324 PREVIOUSLY RECORDED ON REEL 037518 FRAME 0292. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS;ASSIGNOR:CITIBANK, N.A.;REEL/FRAME:041703/0536

Effective date: 20151207

AS Assignment

Owner name: SHENZHEN XINGUODU TECHNOLOGY CO., LTD., CHINA

Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT THE APPLICATION NO. FROM 13,883,290 TO 13,833,290 PREVIOUSLY RECORDED ON REEL 041703 FRAME 0536. ASSIGNOR(S) HEREBY CONFIRMS THE THE ASSIGNMENT AND ASSUMPTION OF SECURITYINTEREST IN PATENTS.;ASSIGNOR:MORGAN STANLEY SENIOR FUNDING, INC.;REEL/FRAME:048734/0001

Effective date: 20190217

AS Assignment

Owner name: NXP B.V., NETHERLANDS

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:MORGAN STANLEY SENIOR FUNDING, INC.;REEL/FRAME:050744/0097

Effective date: 20190903

AS Assignment

Owner name: MORGAN STANLEY SENIOR FUNDING, INC., MARYLAND

Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 037486 FRAME 0517. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITYINTEREST IN PATENTS;ASSIGNOR:CITIBANK, N.A.;REEL/FRAME:053547/0421

Effective date: 20151207

AS Assignment

Owner name: NXP B.V., NETHERLANDS

Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVEAPPLICATION 11759915 AND REPLACE IT WITH APPLICATION11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITYINTEREST;ASSIGNOR:MORGAN STANLEY SENIOR FUNDING, INC.;REEL/FRAME:052915/0001

Effective date: 20160622

AS Assignment

Owner name: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC., NETHERLANDS

Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVEAPPLICATION 11759915 AND REPLACE IT WITH APPLICATION11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITYINTEREST;ASSIGNOR:MORGAN STANLEY SENIOR FUNDING, INC.;REEL/FRAME:052917/0001

Effective date: 20160912