# US 10,374,825 B2 · Bridging between differing communication buses

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

- Number: US 10,374,825 B2
- Document ID: US10374825B2
- Status: Granted
- Kind: B2
- Application number: 15/839,350
- Filed: 2017-12-12
- Published: 2018-04-12
- Granted: 2019-08-06
- Earliest claimed: 2015-09-30
- Assignees: International Buisness Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Andrew R. Ranck; Mushfiq U. Saleheen; Jie Zheng
- Web page: https://patentgrep.com/patent/US10374825B2

## CPC

- H04L 12/4625: {Single bridge functionality, e.g. connection of two networks over a single bridge}
- H04L 12/40: Bus networks
- H04L 12/46: Interconnection of networks
- G06F 13/4027: {using bus bridges (G06F13/4022 takes precedence)}
- H04L 49/90: Buffering arrangements
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Communication between one communication bus having one set of characteristics and another communication bus having another set of characteristics is facilitated by a bridge coupling the two communication buses. The bridge includes a scoreboard to manage data communicated between the buses. In one particular example, the one communication bus is a Processor Local Bus (PLB6) and the other communication bus is an Application Specific Integrated Chip (ASIC) Interconnect Bus (AIB).

## Claims

### Claim 1

A method of communicating between communication buses of a computing environment, the method comprising:
receiving, by a bridge implemented at least in part in hardware, a request, the bridge coupled between one communication bus having a first set of characteristics and another communication bus having another set of characteristics different from the one set of characteristics, the bridge comprising a scoreboard to be used in servicing the request, the scoreboard including a plurality of tags to be assigned to one or more requests and one or more buffers to store data;
determining by the bridge whether the request is to be processed, the determining using the scoreboard;
based on determining the request is to be processed, initiating processing of the request, and assigning at least one tag of the plurality of tags to the request;
storing data associated with the request in the buffer, the storing being based on the at least one tag assigned to the request, wherein the data is received in any order, but stored in the buffer in order based on the request; and
controlling access to the data by the other communication bus, the controlling access using the scoreboard and comprising:
determining whether the other communication bus is to have access to the data in the buffer;
based on determining the other communication bus is to have access to the data, providing the other communication bus with access to the data; and
based on determining the other communication bus is not to have access to the data, preventing access to the data via an empty indication of the buffer regardless of whether the buffer is empty, wherein the preventing access comprises determining whether data is available in the buffer for a selected tag of the plurality of tags, the selected tag chosen based on an ordering of requests to be serviced, and preventing the access via the empty indication of the buffer, based on the data for the selected tag being unavailable even if data for one or more other tags of the plurality of tags is available in the buffer.

### Claim 2 (depends on 1)

The method of claim 1, wherein the determining whether the other communication bus is to have access comprises determining whether data for a first tag, in numerical order, assigned to the request is stored in the buffer, wherein based on the data being stored in the buffer, access is to be granted.

### Claim 3 (depends on 1)

The method of claim 1, wherein the request is a write request obtained by the bridge from the one communication bus.

### Claim 4 (depends on 1)

The method of claim 1, wherein the request is a read request obtained by the bridge from the other communication bus, and wherein the one communication bus is employed to obtain the data to be stored in the buffer.

### Claim 5 (depends on 4)

The method of claim 4, wherein the data to be stored in the buffer based on the read request may be received out of order, but stored in order in the buffer using the at least one tag assigned to the request.

### Claim 6 (depends on 1)

The method of claim 1, wherein the determining whether the request is to be processed comprises:
determining a number of tags to be assigned to the request, a tag indicating available space in the buffer; and
determining the request is to be processed based on the number of tags being available for assigning to the request.

### Claim 7 (depends on 6)

The method of claim 6, wherein the buffer comprises one or more entries for each tag, wherein an entry is to store a specified amount of data.

### Claim 8 (depends on 1)

The method of claim 1, wherein the receiving comprises receiving a plurality of write requests in a particular order from the one communication bus, and wherein the method further comprises:
receiving data for each write request of the plurality of write requests, wherein data for at least one write request is received out-of-order from the particular order of the plurality of write requests; and
storing the data received in the buffer in the particular order regardless of whether the data is received out-of-order; and
wherein the controlling access presents the data to the other communication bus in the particular order.

### Claim 9 (depends on 1)

The method of claim 1, wherein the request includes a read command, and wherein the method further comprises:
splitting the read command into a plurality of read commands based on availability of a number of tags to be assigned to the plurality of read commands;
receiving data for each read command of the plurality of read commands, wherein data for at least one read command is received out-of-order from the particular order of the plurality of read commands; and
storing the data received in the buffer in the particular order regardless of whether received out-of-order.

### Claim 10 (depends on 1)

The method of claim 1, further comprising receiving another request, the other request being a non-posted write request, and wherein the method further comprises providing one of the following write completion responses upon completion of the non-posted write request:
setting an order done based on data for the non-posted write request being in a write data buffer used for non-posted requests;
indicating an acknowledge done based on a plurality of commands resulting from splitting the non-posted write request being accepted by a target bus; and
setting a last data done indicator when the bridge receives an acknowledgment that data that is expected to be received by the target bus has been received by the target bus.

### Claim 11

A system for communicating between communication buses of a computing environment, the system comprising:
one communication bus having a first set of characteristics and another communication bus having another set of characteristics different from the one set of characteristics; and
a bridge coupled between the one communication bus and the other communication bridge, the bridge implemented at least in part in hardware, and including memory and logic circuits, said system configured to perform a method, said method comprising:
receiving by the bridge a request, the bridge comprising a scoreboard to be used in servicing the request, the scoreboard including a plurality of tags to be assigned to one or more requests and one or more buffers to store data;
determining by the bridge whether the request is to be processed, the determining using the scoreboard;
based on determining the request is to be processed, initiating processing of the request, and assigning at least one tag of the plurality of tags to the request;
storing data associated with the request in the buffer, the storing being based on the at least one tag assigned to the request, wherein the data is received in any order, but stored in the buffer in order based on the request; and
controlling access to the data by the other communication bus, the controlling access using the scoreboard and comprising:
determining whether the other communication bus is to have access to the data in the buffer;
based on determining the other communication bus is to have access to the data, providing the other communication bus with access to the data; and
based on determining the other communication bus is not to have access to the data, preventing access to the data via an empty indication of the buffer regardless of whether the buffer is empty, wherein the preventing access comprises determining whether data is available in the buffer for a selected tag of the plurality of tags, the selected tag chosen based on an ordering of requests to be serviced, and preventing the access via the empty indication of the buffer, based on the data for the selected tag being unavailable even if data for one or more other tags of the plurality of tags is available in the buffer.

### Claim 12 (depends on 11)

The system of claim 11, wherein the determining whether the other communication bus is to have access comprises determining whether data for a first tag, in numerical order, assigned to the request is stored in the buffer, wherein based on the data being stored in the buffer, access is to be granted.

### Claim 13 (depends on 11)

The system of claim 11, wherein the request is a write request obtained by the bridge from the one communication bus.

### Claim 14 (depends on 11)

The system of claim 11, wherein the request is a read request obtained by the bridge from the other communication bus, and wherein the one communication bus is employed to obtain the data to be stored in the buffer.

### Claim 15 (depends on 14)

The system of claim 14, wherein the data to be stored in the buffer based on the read request may be received out of order, but stored in order in the buffer using the at least one tag assigned to the request.

### Claim 16 (depends on 11)

The system of claim 11, wherein the determining whether the request is to be processed comprises:
determining a number of tags to be assigned to the request, a tag indicating available space in the buffer; and
determining the request is to be processed based on the number of tags being available for assigning to the request.

### Claim 17 (depends on 16)

The system of claim 16, wherein the buffer comprises one or more entries for each tag, wherein an entry is to store a specified amount of data.

### Claim 18 (depends on 11)

The system of claim 11, wherein the receiving comprises receiving a plurality of write requests in a particular order from the one communication bus, and wherein the method further comprises:
receiving data for each write request of the plurality of write requests, wherein data for at least one write request is received out-of-order from the particular order of the plurality of write requests; and
storing the data received in the buffer in the particular order regardless of whether the data is received out-of-order; and
wherein the controlling access presents the data to the other communication bus in the particular order.

### Claim 19 (depends on 11)

The system of claim 11, wherein the request includes a read command, and wherein the method further comprises:
splitting the read command into a plurality of read commands based on availability of a number of tags to be assigned to the plurality of read commands;
receiving data for each read command of the plurality of read commands, wherein data for at least one read command is received out-of-order from the particular order of the plurality of read commands; and
storing the data received in the buffer in the particular order regardless of whether received out-of-order.

### Claim 20 (depends on 11)

The system of claim 11, further comprising receiving another request, the other request being a non-posted write request, and wherein the method further comprises providing one of the following write completion responses upon completion of the non-posted write request:
setting an order done based on data for the non-posted write request being in a write data buffer used for non-posted requests;
indicating an acknowledge done based on a plurality of commands resulting from splitting the non-posted write request being accepted by a target bus; and
setting a last data done indicator when the bridge receives an acknowledgment that data that is expected to be received by the target bus has been received by the target bus.
