PCIe Device Firmware Update Without Host Reset

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current methods for updating firmware on PCIe devices require resetting the host and device, leading to long downtimes and increased power consumption.

Innovation Solution

A method for live and seamless firmware updates using a PCIe bus, where the host copies the updated firmware to a reserved memory block accessible by the device, allowing the device to switch to the new version without restarting, by using memory mapping and interrupt handling to facilitate chunked copying and context switching.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If firmware update is performed using traditional methods, then firmware can be updated, but host and device must be reset causing long downtime

Engineering Contradiction:
Improvefirmware update capabilityVSAvoiddowntime during update
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent segments the firmware update process into multiple chunks that are transferred separately through the PCIe bus. Each chunk is copied to a reserved memory block in the device, allowing the update to proceed without resetting the host or device. This segmentation enables continuous operation during the update process.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs preliminary actions by reserving a memory block in the device before the actual firmware update begins. This reserved memory block is prepared in advance to receive the firmware chunks, enabling seamless switching to the new firmware without interruption to the host or device operation.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If firmware update is performed using traditional methods, then firmware can be updated, but power consumption increases due to restarts

Engineering Contradiction:
Improvefirmware update capabilityVSAvoidpower consumption during update
Core Design Contradiction:
ReliabilityVSUse of energy by moving object

Solution Approach 1:

The firmware update is divided into chunks transferred through the PCIe bus, allowing the device to remain powered and operational throughout the update process. This eliminates the need for complete system restarts that would cause spikes in power consumption.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent maintains continuous operation of both host and device during the firmware update by transferring firmware chunks in the background. The device continues to process requests from the host while receiving firmware updates, ensuring uninterrupted useful action and stable power consumption.

Inventive Principle:
Principle #20Continuity of useful action

3Loss of time

If memory mapping is used for firmware transfer, then seamless update is enabled, but device complexity increases

Engineering Contradiction:
Improveupdate downtimeVSAvoidmemory mapping implementation
Core Design Contradiction:
Loss of timeVSDevice complexity

Solution Approach 1:

The patent utilizes the existing PCIe bus capabilities for memory-mapped I/O, which are already standard features of PCIe devices. By leveraging these universal, built-in capabilities rather than implementing custom memory mapping logic, the solution achieves seamless updates without significantly increasing device complexity.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS10282192B1Updating device code through a bus
Publication Date: 2019.05.07 AMAZON TECH INC
  • US10282192B1 patent drawing
  • US10282192B1 patent drawing
  • US10282192B1 patent drawing

AI summary

Techniques for updating code of a device may be described. In an example, bus may connect the device to a management entity. The device may run a first version of the code. A second version of the code may be available from memory. The device may access the second version from the memory, stop running the first version of the code, and start running the second version of the code without restarting the management entity or the device.