# US 10,372,413 B2 · First-in-first-out buffer

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,372,413 B2
- Document ID: US10372413B2
- Status: Granted
- Kind: B2
- Application number: 15/268,627
- Filed: 2016-09-18
- Published: 2018-03-22
- Granted: 2019-08-06
- Earliest claimed: 2016-09-18
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Joerg Behrend; Markus Cebulla; Rolf Fritz; Andreas Koenig; Daniel D. Sentler
- Web page: https://patentgrep.com/patent/US10372413B2

## CPC

- G06F 5/14: for overflow or underflow handling, e.g. full or empty flags
- G06F 5/06: for changing the speed of data flow, i.e. speed regularising {or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor (G06F7/78 takes precedence)}
- G06F 5/065: {Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's}
- G06F 13/1673: {using buffers}
- G06F 13/4282: {on a serial bus, e.g. I2C bus, SPI bus (on daisy chain buses G06F13/4247)}
- G06F 2205/067: Bidirectional FIFO, i.e. system allowing data transfer in two directions
- G06F 2205/126: Monitoring of intermediate fill level, i.e. with additional means for monitoring the fill level, e.g. half full flag, almost empty flag
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Disclosed aspects relate to a first-in-first-out (FIFO) buffer. The FIFO buffer may include an input interface to receive a set of data payloads. The FIFO buffer may include a set of buffer entry elements to store the set of data payloads. The FIFO buffer may include a set of status indicators to indicate a set of statuses of the set of buffer entry elements with respect to the set of data payloads. The FIFO buffer may include an output interface for release of the set of data payloads.

## Claims

### Claim 1

A method for use by a sender computer device that includes a first in first out buffer (FIFO) memory and a status register, the method comprising:
receiving, by the sender computer device, a communication data set to be communicated over a communication network to a recipient computer device;
creating, by the sender computer device, a plurality of sequential packets collectively including data of the communication data set, with each sequential packet including a substantially equal amount of data from the communication data set;
for each given sequential packet of the plurality of sequential packets:
determining status information for the given sequential packet, where the status information for each given sequential packet indicates of one of the following three status types: valid, invalid or end of sequence,
storing, by the sender computer device, the given sequential packet in the FIFO memory while moving previously stored sequential packets through the FIFO memory in a first in first out manner, and
storing the status information for the given sequential packet in an associated entry of the status register while shifting register values of the status register to account for storage of the status information for the given sequential packet;
communicating, to a receiver computer device, the status register, with the communication of the status register including information indicative of: (i) the receiver computer should not read at least one sequential packet in the FIFO memory having a status information in the status register indicative of an invalid status, and (ii) an interrupt handler should be disabled for processing receiving the contents of the FIFO memory; and
responsive to communicating the status register, communicating contents of the FIFO memory to the receiver computer device, based, at least in part on the status information for each sequential packet in the status register;
wherein a complete instance of the status register is embedded within unused bus bandwidth and communicated simultaneously with each stored packet of the FIFO memory.

### Claim 2 (depends on 1)

The method of claim 1, wherein the valid status type includes information indicative of the given sequential packet is at least one of the following: (i) interpretable, (ii) ready for transmission, (iii) formatted to be readable by the processing units of a host computer system, (iv) non-encrypted, and/or (v) available for reception by a receiving unit.

### Claim 3 (depends on 1)

The method of claim 1, wherein the invalid status type includes information indicative of the given sequential packet is at least one of the following: (i) non-interpretable, (ii) not ready for transmission, (iii) formatted in a language or encryption format unreadable by processing units of a host computer system, (iv) corrupted, and/or (v) not available for reception by the receiving unit.

### Claim 4 (depends on 1)

The method of claim 1, wherein the end of sequence status type includes information indicative of the given sequential packet will be followed by a separation, pause, or break in the transmission of data elements from the FIFO buffer system.

### Claim 5 (depends on 1)

The method of claim 1, wherein:
the status register includes two status registers, a first status register and a second status register, for each sequential packet of the plurality of sequential packets;
the first status register includes a binary bit indicative of whether the given sequential packet has a valid or invalid status; and
the second status register including a binary bit indicative of the given sequential packet having an end of transmission or not an end of transmission status.

### Claim 6

A computer program product (CPP) comprising:
a first in first out buffer (FIFO) memory;
a status register;
a machine readable storage device; and
computer code stored on the machine readable storage device, with the computer code including instructions for causing a processor(s) set to perform operations including the following:
receiving, by a sender computer device, a communication data set to be communicated over a communication network to a recipient computer device,
creating, by the sender computer device, a plurality of sequential packets collectively including data of the communication data set, with each sequential packet including a substantially equal amount of data from the communication data set,
for each given sequential packet of the plurality of sequential packets:
determining status information for the given sequential packet, where the status information for each given sequential packet indicates of one of the following three status types: valid, invalid or end of sequence,
storing, by the sender computer device, the given sequential packet in the FIFO memory while moving previously stored sequential packets through the FIFO memory in a first in first out manner, and
storing the status information for the given sequential packet in an associated entry of the status register while shifting register values of the status register to account for storage of the status information for the given sequential packet,
communicating, to a receiver computer device, the status register, with the communication of the status register including information indicative of: (i) the receiver computer should not read at least one sequential packet in the FIFO memory having a status information in the status register indicative of an invalid status, and (ii) an interrupt handler should be disabled for processing receiving the contents of the FIFO memory, and
responsive to communicating the status register, communicating contents of the FIFO memory to the receiver computer device, based, at least in part on the status information for each sequential packet in the status register;
wherein a complete instance of the status register is embedded within unused bus bandwidth and communicated simultaneously with each stored packet of the FIFO memory.

### Claim 7 (depends on 6)

The CPP of claim 6, wherein the valid status type includes information indicative of the given sequential packet is at least one of the following: (i) interpretable, (ii) ready for transmission, (iii) formatted to be readable by the processing units of a host computer system, (iv) non-encrypted, and/or (v) available for reception by a receiving unit.

### Claim 8 (depends on 6)

The CPP of claim 6, wherein the invalid status type includes information indicative of the given sequential packet is at least one of the following: (i) non-interpretable, (ii) not ready for transmission, (iii) formatted in a language or encryption format unreadable by processing units of a host computer system, (iv) corrupted, and/or (v) not available for reception by the receiving unit.

### Claim 9 (depends on 6)

The CPP of claim 6, wherein the end of sequence status type includes information indicative of the given sequential packet will be followed by a separation, pause, or break in the transmission of data elements from the FIFO buffer system.

### Claim 10 (depends on 6)

The CPP of claim 6, wherein:
the status register includes two status registers, a first status register and a second status register, for each sequential packet of the plurality of sequential packets;
the first status register includes a binary bit indicative of whether the given sequential packet has a valid or invalid status; and
the second status register including a binary bit indicative of the given sequential packet having an end of transmission or not an end of transmission status.

### Claim 11

A computer system (CS) comprising:
a first in first out buffer (FIFO) memory;
a status register;
a processor(s) set;
a machine readable storage device; and
computer code stored on the machine readable storage device, with the computer code including instructions for causing the processor(s) set to perform operations including the following:
receiving, by a sender computer device, a communication data set to be communicated over a communication network to a recipient computer device,
creating, by the sender computer device, a plurality of sequential packets collectively including data of the communication data set, with each sequential packet including a substantially equal amount of data from the communication data set,
for each given sequential packet of the plurality of sequential packets:
determining status information for the given sequential packet, where the status information for each given sequential packet indicates of one of the following three status types: valid, invalid or end of sequence,
storing, by the sender computer device, the given sequential packet in the FIFO memory while moving previously stored sequential packets through the FIFO memory in a first in first out manner, and
storing the status information for the given sequential packet in an associated entry of the status register while shifting register values of the status register to account for storage of the status information for the given sequential packet,
communicating, to a receiver computer device, the status register, with the communication of the status register including information indicative of: (i) the receiver computer should not read at least one sequential packet in the FIFO memory having a status information in the status register indicative of an invalid status, and (ii) an interrupt handler should be disabled for processing receiving the contents of the FIFO memory, and
responsive to communicating the status register, communicating contents of the FIFO memory to the receiver computer device, based, at least in part on the status information for each sequential packet in the status register;
wherein a complete instance of the status register is embedded within unused bus bandwidth and communicated simultaneously with each stored packet of the FIFO memory.

### Claim 12 (depends on 11)

The CS of claim 11, wherein the valid status type includes information indicative of the given sequential packet is at least one of the following: (i) interpretable, (ii) ready for transmission, (iii) formatted to be readable by the processing units of a host computer system, (iv) non-encrypted, and/or (v) available for reception by a receiving unit.

### Claim 13 (depends on 11)

The CS of claim 11, wherein the invalid status type includes information indicative of the given sequential packet is at least one of the following: (i) non-interpretable, (ii) not ready for transmission, (iii) formatted in a language or encryption format unreadable by processing units of a host computer system, (iv) corrupted, and/or (v) not available for reception by the receiving unit.

### Claim 14 (depends on 11)

The CS of claim 11, wherein the end of sequence status type includes information indicative of the given sequential packet will be followed by a separation, pause, or break in the transmission of data elements from the FIFO buffer system.

### Claim 15 (depends on 11)

The CS of claim 11, wherein:
the status register includes two status registers, a first status register and a second status register, for each sequential packet of the plurality of sequential packets;
the first status register includes a binary bit indicative of whether the given sequential packet has a valid or invalid status; and
the second status register including a binary bit indicative of the given sequential packet having an end of transmission or not an end of transmission status.
