Multi-Layer Memory In-Service Software Updating

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing methods for updating software in peripheral devices, such as network adapters and storage devices, face challenges in minimizing downtime during the update process, especially when updating critical bus-maintenance software.

Innovation Solution

The solution involves a peripheral device with multiple processors, where a first processor manages communication over a peripheral bus by executing bus-maintenance software from a multi-layer memory, and a second processor updates the software by loading the updated version into higher hierarchy memory layers and invalidating the existing version, forcing the first processor to fetch and execute the updated version.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If software update is performed by replacing existing version directly, then update speed is improved, but system downtime increases and reliability decreases

Engineering Contradiction:
Improveupdate speedVSAvoidsystem continuity
Core Design Contradiction:
SpeedVSReliability

Solution Approach 1:

The software update process is segmented into multiple stages: loading updated version to higher memory layer, validating readiness, atomic swap via invalidation, and execution resumption. This segmentation allows the update operation to be broken down into discrete, manageable phases that can proceed in parallel with normal operation, reducing both downtime and update time.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The updated software version is loaded to the higher memory layer (L3 cache or system memory) and validated before the actual execution switch. This preliminary action allows the update to be prepared in advance without blocking the running process, enabling a smooth transition when the swap occurs.

Inventive Principle:
Principle #10Preliminary action

2Loss of time

If multi-layer memory hierarchy is used for software storage, then update downtime is reduced, but device complexity increases

Engineering Contradiction:
Improveupdate downtimeVSAvoidmemory hierarchy complexity
Core Design Contradiction:
Loss of timeVSDevice complexity

Solution Approach 1:

The existing multi-layer memory hierarchy (L1 cache, L2 cache, L3 cache, system memory) is leveraged for software storage and update purposes. Instead of adding dedicated update memory structures, the patent utilizes the universal memory hierarchy already present in the system, performing multiple functions (execution, caching, updating) through the same infrastructure.

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

Solution Approach 2:

The higher memory layer (L3 cache or system memory) acts as an intermediary between the running software version in lower cache layers and the updated version being loaded. This intermediary layer provides a buffer that allows the update to be staged separately from the execution environment, enabling atomic swaps without direct complexity in the execution path.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Reliability

If atomic invalidation is used to switch software versions, then update reliability is improved, but execution time during transition increases

Engineering Contradiction:
Improveupdate reliabilityVSAvoidtransition execution time
Core Design Contradiction:
ReliabilityVSDuration of action of moving object

Solution Approach 1:

The updated software version is copied to the higher memory layer before the atomic invalidation occurs. This copying operation allows the new version to be prepared in parallel with the running process, and when the invalidation happens, the copy is already ready for immediate execution, minimizing transition time while ensuring reliability.

Inventive Principle:
Principle #26Copying

Data Source

PatentUS20250036391A1Fast In-Service Software Updating using Multi-Layer Memory
Publication Date: 2025.01.30 MELLANOX TECHNOLOGIES LTD(IL)
  • US20250036391A1 patent drawing
  • US20250036391A1 patent drawing
  • US20250036391A1 patent drawing

AI summary

A peripheral device includes a bus interface, a first processor and a second processor. The bus interface is to communicate over a peripheral bus. The first processor is to manage communication over the peripheral bus by executing bus-maintenance software code, the bus-maintenance software code being executed from one or more first layers of a multi-layer memory. The second processor is to update the bus-maintenance software code from an existing version to an updated version, by (i) loading the updated version to one or more second layers of the multi-layer memory, higher in hierarchy than the or one more first layers, and (ii) invalidating the existing version in the one or more first layers, thereby forcing fetching of the updated version from the one or more second layers to the one or more first layers and to start executing the updated version.