Direct Code Execution from Block-Based Memory

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

NAND flash memory, due to its block-based access, lacks support for direct code execution (XIP) and is prone to errors, necessitating additional reliable memory for data copying and error correction, which is not cost-effective.

Innovation Solution

A system that allows direct execution of code from block-based memory by using a controller to retrieve and cache a subset of a block, enabling XIP operations without relying on additional on-chip memory for data copying and error correction.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If NAND flash memory is used for primary storage, then cost is reduced and density is increased, but direct code execution capability is lost

Engineering Contradiction:
Improvedirect code execution capabilityVSAvoidmemory architecture complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent divides the block-based memory into smaller sub-blocks or pages that can be individually accessed and cached. This segmentation allows the system to retrieve only the necessary code portions needed for execution rather than requiring entire blocks to be transferred, thereby enabling direct code execution from block-based memory without needing additional complex memory structures.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a cache memory as an intermediary between the block-based NAND flash memory and the processor. This cache serves as a buffer that stores recently accessed code blocks, allowing the processor to execute code directly from the cache while the underlying storage remains block-based. This intermediary structure enables XIP capability without fundamentally changing the block-based memory architecture.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If block-based memory is used, then cost is reduced, but error susceptibility increases

Engineering Contradiction:
Improveerror resistanceVSAvoidcost effectiveness
Core Design Contradiction:
ReliabilityVSEase of manufacture

Solution Approach 1:

The patent implements error detection and correction mechanisms that operate preliminarily on data before it is cached or executed. Error correction codes (ECC) are applied to data blocks during the caching process, and validation checks are performed before code execution. This preliminary error handling ensures that cost-effective block-based memory can be used while maintaining high reliability through proactive error management.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent incorporates feedback mechanisms where the system continuously monitors for errors in block-based memory operations. When errors are detected during code execution or data retrieval, the system automatically triggers error correction routines and can invalidate corrupted cache entries. This feedback loop ensures that cost-effective block-based memory maintains reliable operation through continuous error monitoring and correction.

Inventive Principle:
Principle #23Feedback

3Ease of manufacture

If off-chip memory is used for data buffering, then direct execution is enabled, but integration is reduced and cost increases

Engineering Contradiction:
Improveintegration levelVSAvoidmemory capacity
Core Design Contradiction:
Ease of manufactureVSQuantity of substance

Solution Approach 1:

The patent merges the cache memory functionality with the block-based memory controller into a single integrated unit. Rather than using separate off-chip memory for buffering, the system combines the caching function with the existing memory controller that manages block-based memory operations. This integration enables direct code execution while maintaining a compact, cost-effective design without requiring additional discrete memory components.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The patent makes the memory controller multi-functional by enabling it to perform both block management and caching operations. The same controller that handles block-based memory access also manages the cache memory, performing data retrieval, caching, and error correction functions. This universal approach enables direct execution capability without requiring dedicated separate memory structures, thereby improving integration and reducing cost.

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

Data Source

PatentUS7624224B1System and method for directly executing code from block-based memory
Publication Date: 2009.11.24 NVIDIA CORP
  • US7624224B1 patent drawing
  • US7624224B1 patent drawing
  • US7624224B1 patent drawing

AI summary

A system, method, and computer program product are provided for directly executing code in block-based memory, which resides in communication with a processor and a controller. Utilizing the controller, a request is received from the processor for a subset of a block of data in the block-based memory, and at least a portion of the block is retrieved from the block-based memory. After the retrieval, at least a portion of the block is stored in a cache. The subset of the block is then transmitted to the processor, utilizing the controller. To this end, code in the block-based memory is directly executed.