IP Library › Granted Patent US 11,196,657
Granted Patent B2
US 11,196,657 · App. 15/850,616 · Granted Dec 7, 2021

Self identifying interconnect topology

Inventors: Vydhyanathan Kalyanasundharam (San Jose, CA); Eric Christopher Morton (Austin, TX); Alan Dodson Smith (Austin, TX); Joe G. Cruz (North Grafton, MA)
Assignee: Advanced Micro Devices, Inc.
H04L45/02G06F13/364G06F13/4022G06F13/4282G06F16/9024G06F16/9038G06F21/575H04L45/745H04L49/15H04L63/20G06F2213/0016
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,196,657
App. No.
15/850,616
Granted
Dec 7, 2021
Kind
B2
Abstract

A system for automatically discovering fabric topology includes at least one or more processing units, one or more memory devices, a security processor, and a communication fabric with an unknown topology coupled to the processing unit(s), memory device(s), and security processor. The security processor queries each component of the fabric to retrieve various attributes associated with the component. The security processor utilizes the retrieved attributes to create a network graph of the topology of the components within the fabric. The security processor generates routing tables from the network graph and programs the routing tables into the fabric components. Then, the fabric components utilize the routing tables to determine how to route incoming packets.

Claims (34)

1. A system comprising:

a communication fabric comprising a plurality of components;

a processor coupled to the communication fabric, wherein the processor is configured to:

read a value from a fabric block instance count register, wherein the value specifies a number of components in the communication fabric;

query each component of the communication fabric by reading a register for each component, wherein each register comprises at least an indication of a block type of a corresponding component and, for block types that are processing units, a number of processor cores and memory channels per processor core;

create a network graph based on said query of each component of the communication fabric; and

generate routing tables based on the network graph.

2. The system as recited in claim 1 , wherein the processor is further configured to program the routing tables into the plurality of components of the communication fabric.

3. The system as recited in claim 2 , wherein each component of the communication fabric is configured to route incoming packets based on a respective routing table.

4. The system as recited in claim 1 , wherein each register comprises one or more of types and number of command and data ports, data bus width, and neighbor instance identifiers (IDs), and/or fabric IDs.

5. The system as recited in claim 1 , wherein the fabric block instance count register stores an indication of a total number of fabric components in the system, and wherein the fabric block instance count register is located at a fixed address.

6. The system as recited in claim 1 , wherein the network graph is created based on one or more of the indications of block type, processing units, number of processor cores, and memory channels per core.

7. The system as recited in claim 1 , wherein the indication of a block type is an indication that a corresponding block is one of a coherent master, a non-coherent master, a coherent slave, a non-coherent slave or crossbar.

8. A method comprising:

reading, by a processor, a value from a fabric block instance count register, wherein the value specifies a number of components in a communication fabric;

querying, by the processor, each component of the communication fabric by reading a register for each component, wherein each register comprises at least an indication of a block type of a corresponding component and, for block types that are processing units, a number of processor cores and memory channels per processor core;

creating, by the processor, a network graph based on said querying of each component of the communication fabric; and

generating, by the processor, routing tables based on the network graph.

9. The method as recited in claim 8 , further comprising programming the routing tables into a plurality of components of the communication fabric.

10. The method as recited in claim 9 , further comprising creating, by the processor, the network graph based on one or more of the indications of block type, processing units, number of processor cores, and memory channels per core.

11. The method as recited in claim 8 , wherein each register comprises one or more of types and number of command and data ports, data bus width, and neighbor instance identifiers (IDs), and/or fabric IDs.

12. The method as recited in claim 8 , wherein the fabric block instance count register stores an indication of a total number of fabric components in the communication fabric, and wherein the fabric block instance count register is located at a fixed address.

13. The method as recited in claim 8 , further comprising a security processor creating the network graph and generating routing tables based on the network graph.

14. The method as recited in claim 8 , wherein the indication of a block type is an indication that a corresponding block is one of a coherent master, a non-coherent master, a coherent slave, a non-coherent slave or crossbar.

15. An apparatus configured to:

read a value from a fabric block instance count register, wherein the value specifies a number of components in a communication fabric;

query each component of the communication fabric by reading a register for each component, wherein each register comprises at least an indication of a block type of a corresponding component and, for block types that are processing units, a number of processor cores and memory channels per processor core;

create a network graph based on said query of each component of the communication fabric; and

generate routing tables based on the network graph.

16. The apparatus as recited in claim 15 , wherein the apparatus is further configured to program the routing tables into a plurality of components of the communication fabric.

17. The apparatus as recited in claim 16 , wherein the network graph is created based on one or more of the indications of block type, processing units, number of processor cores, and memory channels per core.

18. The apparatus as recited in claim 15 , wherein each register comprises one or more of types and number of command and data ports, data bus width, and neighbor instance identifiers (IDs), and/or fabric IDs.

19. The apparatus as recited in claim 15 , wherein the fabric block instance count register stores an indication of a total number of fabric components in the communication fabric, and wherein the fabric block instance count register is located at a fixed address.

20. The apparatus as recited in claim 15 , wherein the indication of a block type is an indication that a corresponding block is one of a coherent master, a non-coherent master, a coherent slave, a non-coherent slave or crossbar.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 21, 2017
From: KALYANASUNDHARAM, VYDHYANATHAN; MORTON, ERIC CHRISTOPHER; SMITH, ALAN DODSON; CRUZ, JOE G.
To: ADVANCED MICRO DEVICES, INC.
Reel/Frame 044463/0542 →
Continuity (1)
Related Publication 20190199617A1 · Jun 27, 2019