# US 12,007,918 B2 · Peripheral component interconnect express interface device and method of operating the same

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

- Number: US 12,007,918 B2
- Document ID: US12007918B2
- Status: Granted
- Kind: B2
- Application number: 17/467,070
- Filed: 2021-09-03
- Published: 2022-09-29
- Granted: 2024-06-11
- Earliest claimed: 2021-03-23
- Assignees: SK hynix Inc.
- Applicants: SK hynix Inc.
- Inventors: Yong Tae Jeon; Ji Woon Yang; Sang Hyun Yoon; Se Hyeon Han
- Web page: https://patentgrep.com/patent/US12007918B2

## CPC

- G06F 13/24: using interrupt (G06F13/32 takes precedence)
- G06F 13/28: using burst mode transfer, e.g. direct memory access {DMA}, cycle steal (G06F13/32 takes precedence)
- G06F 13/4221: {being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus}
- G06F 13/4295: {using an embedded synchronisation}
- G06F 2213/0026: PCI express
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Provided are a Peripheral Component Interconnect Express (PCIe) interface device and a method of operating the same. The PCIe interface device may include a performance analyzer and a traffic class controller. The performance analyzer may be configured to measure throughputs of multiple functions executed on one or more Direct Memory Access (DMA) devices. The traffic class controller may be configured to allocate traffic class values to transaction layer packets received from the multiple functions based on the throughputs of the multiple functions.

## Claims

### Claim 1

A Peripheral Component Interconnect Express (PCIe) interface device, comprising:
a performance analyzer configured to calculate throughputs of multiple functions executed on one or more Direct Memory Access (DMA) devices by counting a number of transaction layer packets transferred between the one or more DMA devices and a host system per unit time; and
a traffic class controller configured to allocate traffic class values to transaction layer packets received from the multiple functions based on the throughputs of the multiple functions, and to reallocate the traffic class values of the transaction layer packets when rankings of the throughputs of the multiple functions are changed,
wherein the traffic class values indicate virtual channels to which the transaction layer packets are mapped.

### Claim 2 (depends on 1)

The PCIe interface device according to claim 1, wherein the performance analyzer is configured to calculate the throughputs of the multiple functions based on occupation rates of the multiple functions for a data path that couples the one or more DMA devices to the PCIe interface device.

### Claim 3 (depends on 2)

The PCIe interface device according to claim 2, wherein the performance analyzer is configured to calculate an occupation rate of each of the multiple functions based on the number of transaction layer packets transferred through the data path per unit time.

### Claim 4 (depends on 1)

The PCIe interface device according to claim 1, wherein the traffic class controller is configured to allocate a default value as initial values for traffic classes of the transaction layer packets received from the multiple functions.

### Claim 5 (depends on 4)

The PCIe interface device according to claim 4, wherein the traffic class controller is configured to allocate different traffic class values to the transaction layer packets based on results of comparing the throughputs of the multiple functions with a threshold value.

### Claim 6 (depends on 5)

The PCIe interface device according to claim 5, wherein the traffic class controller is configured to allocate the default value as a traffic class value of a transaction layer packet received from a function for which a throughput is greater than the threshold value, among the multiple functions.

### Claim 7 (depends on 5)

The PCIe interface device according to claim 5, wherein the traffic class controller is configured to allocate a ranking of traffic class values to transaction layer packets received from functions for which throughputs are less than or equal to the threshold value, among the multiple functions, in a reverse order of a ranking of the throughputs of the multiple functions.

### Claim 8 (depends on 4)

The PCIe interface device according to claim 4, wherein the traffic class controller is configured to allocate the default value as a traffic class value of a transaction layer packet received from an interrupted function, among the multiple functions.

### Claim 9 (depends on 1)

The PCIe interface device according to claim 1, wherein the virtual channels are determined by a switch or a root complex depending on the traffic class values allocated to the transaction layer packets.

### Claim 10 (depends on 9)

The PCIe interface device according to claim 9, wherein an order in which the transaction layer packets are to be output is determined by the switch or the root complex based on the virtual channels mapped to the transaction layer packets.

### Claim 11 (depends on 1)

The PCIe interface device according to claim 1, wherein the one or more DMA devices comprise one or more of a NonVolatile Memory Express (NVMe) device, a Solid State Drive (SSD) device, an Artificial Intelligence Central Processing Unit (AI CPU), an Artificial Intelligence System on Chip (AI SoC), an Ethernet device, a sound card, and a graphics card.

### Claim 12

A method of operating a Peripheral Component Interconnect Express (PCIe) interface device, the method comprising:
counting a number of transaction layer packets transferred between multiple functions executed on one or more Direct Memory Access (DMA) devices and a host system per unit time;
calculating throughputs of the multiple functions based on the number of transaction layer packets transferred per unit time;
allocating traffic class values to transaction layer packets received from the multiple functions based on the throughputs of the multiple functions;
outputting the transaction layer packets through virtual channels to which the transaction layer packets are mapped based on the traffic class values; and
reallocating the traffic class values of the transaction layer packets when rankings of the throughputs of the multiple functions are changed.

### Claim 13 (depends on 12)

The method according to claim 12, wherein the throughputs of the multiple functions are calculated based on occupation rates of the multiple functions for a data path that couples the one or more DMA devices to the PCIe interface device.

### Claim 14 (depends on 13)

The method according to claim 13, wherein an occupation rate of each of the multiple functions is calculated based on the number of transaction layer packets transferred through the data path per unit time.

### Claim 15 (depends on 12)

The method according to claim 12, wherein allocating the traffic class values to the transaction layer packets comprises:
allocating a default value as initial values for traffic classes to the transaction layer packets received from the multiple functions; and
allocating different traffic class values to the transaction layer packets based on results of comparing the throughputs of the multiple functions with a threshold value.

### Claim 16 (depends on 15)

The method according to claim 15, wherein allocating the different traffic class values to the transaction layer packets comprises:
allocating the default value as a traffic class value of a transaction layer packet received from a function for which a throughput is greater than the threshold value or from an interrupted function, among the multiple functions.

### Claim 17 (depends on 15)

The method according to claim 15, wherein allocating the different traffic class values to the transaction layer packets comprises:
allocating a ranking of traffic class values to transaction layer packets received from functions for which throughputs are less than or equal to the threshold value, among the multiple functions, in a reverse order of a ranking of the throughputs of the multiple functions.

### Claim 18 (depends on 12)

The method according to claim 12, wherein the virtual channels are determined by a switch or a root complex depending on the traffic class values allocated to the transaction layer packets, and an order in which the transaction layer packets are to be output is determined by the switch or the root complex based on the virtual channels mapped to the transaction layer packets.
