IP Library Granted Patent US 11,442,882
Granted Patent B2
US 11,442,882 · App. 17/234,751 · Granted Sep 13, 2022

Bridge circuit for providing conversion between PCIe-NVMe protocol and NVMe-TCP protocol and computer system using the same

Inventor: Jiin Lai (New Taipei, TW)
Assignee: VIA Technologies Inc.
G06F13/4027G06F13/1668G06F13/4282H04L69/161G06F2213/0026
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,442,882
App. No.
17/234,751
Granted
Sep 13, 2022
Kind
B2
Abstract

A bridge circuit includes an NVMe device controller, a network subsystem, and a data transfer circuit. The NVMe device controller is arranged to communicate with a host via a PCIe bus. The network subsystem is arranged to communicate with an NVMe-TCP device via a network. The data transfer circuit is coupled between the NVMe device controller and the network subsystem, and is arranged to deal with data transfer associated with the NVMe-TCP device without intervention of the host.

Claims (40)

1. A bridge circuit, comprising:

a Non-Volatile Memory Express (NVMe) device controller, arranged to communicate with a host via a Peripheral Component Interconnect Express (PCIe) bus;

a network subsystem, arranged to communicate with an NVME over Transmission Control Protocol (NVMe-TCP) device via a network; and

a data transfer circuit, coupled between the NVMe device controller and the network subsystem, and arranged to deal with data transfer associated with the NVMe-TCP device without intervention of the host;

wherein data transfer between the host and the NVMe-TCP device is processed according to a set of an NVMe command identifier, a TCP session identifier, and an NVMe-TCP command identifier.

2. The bridge circuit of claim 1 , wherein the NVMe device controller comprises:

a PCIe controller, arranged to access the PCIe bus;

a host controller, coupled to the PCIe controller, and arranged to control upstream transaction and downstream transaction of the PCIe bus, NVMe configuration setting, and PCIe configuration setting;

a submission queue processing circuit, coupled to the host controller, and arranged to read and process a command in a submission queue of the host;

a completion queue processing circuit, coupled to the host controller, and arranged to write completion information of the command into a completion queue of the host; and

a storage address processing circuit, coupled to the host controller, and arranged to retrieve storage address information carried by the command, and configure the data transfer circuit according to the storage address information.

3. The bridge circuit of claim 1 , wherein the network subsystem comprises:

an offload engine, arranged to process Transmission Control Protocol/Internet Protocol (TCP/IP) stack between the network subsystem and the NVMe-TCP device; and

an NVMe-TCP controller, arranged to trigger the data transfer circuit to read data from the host and transmit the data to the NVMe-TCP device via the offload engine, and trigger the data transfer circuit to transmit data received by the offload engine from the NVMe-TCP device to the host.

4. The bridge circuit of claim 1 , wherein the data transfer circuit comprises:

a first storage element, arranged to store a first linked list, where each node in the first linked list records a storage address in a system storage device of the host;

a second storage element, arranged to store a second linked list, where each node in the second linked list records a storage address in a local storage device used by the bridge circuit;

a third storage element, arranged to store a lookup table, where the lookup table records a storage address of a first node in the first linked list in the first storage element and a storage address of a first node in the second linked list in the second storage element; and

a data access circuit, arranged to read the first linked list and the second linked list according to the lookup table, to process data transfer between the host and the NVMe-TCP device.

5. The bridge circuit of claim 4 , wherein the lookup table further records that the set of the NVMe command identifier, the TCP session identifier, and the NVMe-TCP command identifier that is mapped to the storage address of the first node in the first linked list in the first storage element and the storage address of the first node in the second linked list in the second storage element; and the data access circuit is further arranged to read the storage address of the first node in the first linked list in the first storage element and the storage address of the first node in the second linked list in the second storage element from the lookup table according to the set of the NVMe command identifier, the TCP session identifier, and the NVMe-TCP command identifier.

6. The bridge circuit of claim 4 , wherein the data access circuit starts to read the first linked list according to the storage address of the first node in the first linked list in the first storage element, to read a data from the system storage device, and starts to read the second linked list according to the storage address of the first node in the second linked list in the second storage element, to write the data into the local storage device.

7. The bridge circuit of claim 6 , wherein the data access circuit further starts to read the second linked list according to the storage address of the first node in the second linked list in the second storage element, to read the data from the local storage device, and transmits the data to the NVMe-TCP device via the network subsystem.

8. The bridge circuit of claim 4 , wherein the network subsystem receive a data from the NVMe-TCP device; and the data access circuit starts to read the second linked list according to the storage address of the first node in the second linked list in the second storage element, to write the data into the local storage device.

9. The bridge circuit of claim 8 , wherein the data access circuit further starts to read the second linked list according to the storage address of the first node in the second linked list in the second storage element, to read the data from the local storage device, and starts to read the first linked list according to the storage address of the first node in the first linked list in the first storage element, to write the data into the system storage device.

10. The bridge circuit of claim 1 , wherein the bridge circuit is disposed in a PCIe interface card.

11. The bridge circuit of claim 1 , wherein the NVMe device controller, the network subsystem, and the data transfer circuit are all disposed in a same chip.

12. A computer system, comprising:

a host; and

a bridge circuit, comprising:

a Non-Volatile Memory Express (NVMe) device controller, arranged to communicate with the host via a Peripheral Component Interconnect Express (PCIe) bus;

a network subsystem, arranged to communicate with an NVME over Transmission Control Protocol (NVMe-TCP) device via a network; and

a data transfer circuit, coupled between the NVMe device controller and the network subsystem, and arranged to deal with data transfer associated with the NVMe-TCP device;

wherein the bridge circuit makes the host regard the NVMe-TCP device as a PCIe-NVMe device for data access, and data transfer between the host and the NVMe-TCP device is processed according to a set of an NVMe command identifier, a TCP session identifier, and an NVMe-TCP command identifier.

13. A computer system, comprising:

a host; and

a bridge circuit, comprising:

a Non-Volatile Memory Express (NVMe) device controller, arranged to communicate with the host via a Peripheral Component Interconnect Express (PCIe) bus;

a network subsystem, arranged to communicate with an NVME over Transmission Control Protocol (NVMe-TCP) device via a network; and

a data transfer circuit, coupled between the NVMe device controller and the network subsystem, and arranged to deal with data transfer associated with the NVMe-TCP device;

wherein the host loads and executes a PCIe-NVMe driver to control communication between the host and the NVMe device controller, without being equipped with an NVMe-TCP driver, and data transfer between the host and the NVMe-TCP device is processed according to a set of an NVMe command identifier, a TCP session identifier, and an NVMe-TCP command identifier.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 19, 2021
From: LAI, JIIN
To: VIA TECHNOLOGIES INC.
Reel/Frame 055964/0419 →
Priority Claims (1)
TW 110107558 · Mar 3, 2021 · national
Continuity (2)
Provisional Application 63019435 · May 4, 2020
Related Publication 20210342287A1 · Nov 4, 2021