# US 10,769,080 B2 · Distributed and shared memory controller

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

- Number: US 10,769,080 B2
- Document ID: US10769080B2
- Status: Granted
- Kind: B2
- Application number: 15/942,065
- Filed: 2018-03-30
- Published: 2018-10-04
- Granted: 2020-09-08
- Earliest claimed: 2017-03-30
- Assignees: Futurewei Technologies, Inc.
- Applicants: Futurewei Technologies, Inc.
- Inventors: Hao Luan; Alan Gatherer; Xi Chen; Fang Yu; Yichuan Yu; Bin Yang; Wei Chen
- Web page: https://patentgrep.com/patent/US10769080B2

## CPC

- G06F 13/1668: {Details of memory controller}
- G06F 13/4022: {using switching circuits, e.g. switching matrix, connection or expansion network (G06F13/4009 takes precedence)}
- G06F 13/4068: {Electrical coupling}
- G06F 13/42: Bus transfer protocol, e.g. handshake; Synchronisation
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A distributed and shared memory controller (DSMC) comprises at least one building block. comprising a plurality of switches distributed into a plurality of stages; a plurality of master ports coupled to a first stage of the switches; and a plurality of bank controllers with associated memory banks coupled to a last stage of the switches; wherein each of the switches connects to lower stage switches via internal connections, each of the switches of the first stage connects to at least one of the master ports via master connections and each of the switches of the last stage connects to at least one of the bank controllers via memory connections; wherein each of the switches of the first stage connects to second stage switches of a neighboring building block via outward connections and each of the switches of a second stage connects to first stage switches of the neighboring building block via inward connections.

## Claims

### Claim 1

A distributed and shared memory controller (DSMC) comprising:
a plurality of switches distributed into a series of stages including at least a first stage of switches, a second stage of switches, and a last stage of switches, at least some switches in each stage in the series of stages being connected with one or more switches in a different stage in the series of stages via internal connections, wherein each switch in the first stage of switches connects to a corresponding switch in the second stage of switches of a neighboring building block via outward connections, and each switch in the second stage of switches connects to a corresponding switch in the first stage of switches of a corresponding neighboring building block via inward connections;
a plurality of master ports coupled to the first stage of switches, each switch in the first stage of switches being connected to at least one of the plurality of master ports via master connections;
a plurality of bank controllers with associated memory banks coupled to the last stage of switches, each switch in the last stage of switches connecting to at least one of the plurality of bank controllers via memory connections; and
a command scanner coupled to the plurality of switches, the command scanner configured to scramble a request address of a read or write request received from a master core and to distribute the read or write request, with the scrambled request address, among the plurality of switches.

### Claim 2 (depends on 1)

The DSMC of claim 1, wherein the plurality of switches comprises radix-N switches, and N is a power of 2 that is greater than zero.

### Claim 3 (depends on 1)

The DSMC of claim 1, wherein the master connections connecting switches in the first stage of switches, the outward connections, and the inward connections have a same bandwidth, wherein the internal connections and the memory connections have a same bandwidth, and wherein the bandwidth of the internal connections and the memory connections is an integer multiple of the bandwidth of the master connections and the inward connections, the integer multiple having a value that is equal to a number of building blocks associated with the plurality of switches.

### Claim 4 (depends on 1)

The DSMC of claim 1, wherein the inward connections and the outward connections merge to at least one connection.

### Claim 5 (depends on 1)

The DSMC of claim 1, wherein each of the memory banks has an address comprising a building block subfield and a memory bank subfield.

### Claim 6 (depends on 1)

The DSMC of claim 1, wherein the command scanner is configured to scramble the request address of the read or write request by exchanging a number of most significant bits (MSB) of the request address with a number of least significant bits (LSB) of the request address.

### Claim 7 (depends on 1)

The DSMC of claim 1, wherein the plurality of switches are arranged according to a number of 2L building blocks and the command scanner is configured to scramble the request address of the read or write request by exchanging a number of L most significant bits (MSB) of a request address with the number of L least significant bits (LSB) of the request address.

### Claim 8 (depends on 7)

The DSMC of claim 7, wherein the command scanner is further configured to compress a plurality of beats in the request for multi-beat burst.

### Claim 9 (depends on 7)

The DSMC of claim 7, wherein the number of L LSB is further reversed after exchanging with the number of L MSB.

### Claim 10 (depends on 1)

The DSMC of claim 1, wherein the DSMC comprises a plurality of building blocks, wherein each of the plurality of building blocks has a same number of master ports, a same number of memory banks and a same number of switches.

### Claim 11 (depends on 1)

The DSMC of claim 1, wherein a number of the plurality of master ports is different from a number of the plurality of bank controllers.

### Claim 12

A distributed and shared memory controller (DSMC) comprising:
a plurality of switches configured to be in communication with at least one memory bank, the plurality of switches distributed into a series of stages that include at least a first stage of switches, a second stage of switches, and a last stage of switches, wherein switches in consecutives stages of switches are interconnected via internal connections, each switch in the first stage of switches connecting to a corresponding switch in the second stage of switches of a neighboring building block via outward connections, and each switch in the second stage of switches connects to a corresponding switch in the first stage of switches of a corresponding neighboring building block via inward connections; and
a command scanner configured to scramble a request address of a read or write request received from a master core by exchanging a number of most significant bits (MSB) of the request address with a number of least significant bits (LSB) of the request address and to distribute the read or write request, with the scrambled request address, among the plurality of switches, wherein one or more of the plurality of switches are configured to provide the scrambled request address to the at least one memory bank.

### Claim 13 (depends on 12)

The DSMC of claim 12, wherein the plurality of switches are arranged according to a number of 2L building blocks and the command scanner is configured to scramble the request address of the read or write request by exchanging a number of L MSBs of a request address with the number of L LSBs.

### Claim 14 (depends on 13)

The DSMC of claim 13, wherein the read or write request includes a plurality of beats and the command scanner is further configured to compress the plurality of beats for multi-beat burst.

### Claim 15 (depends on 13)

The DSMC of claim 13, wherein the number of L LSB is further reversed after exchanging with the number of L MSB.

### Claim 16 (depends on 12)

The DSMC of claim 12, further comprising:
a plurality of master ports coupled to the first stage of switches; and
a plurality of bank controllers with associated memory banks coupled to the last stage of switches, each of the plurality of switches of the first stage connects to at least one of the plurality of master ports via master connections and each of the plurality of switches of the last stage connects to at least one of the plurality of bank controllers via memory connections.
