Embedded Memory Data Segmentation for Access Conflict Resolution
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Embedded systems face inefficiencies in memory usage due to separate storage of instructions and data elements, leading to wasted memory space and potential conflicts during access, which can impact performance.
Innovation Solution
The method involves generating executable code that stores regular data elements in non-instruction memory blocks and non-regular data elements in instruction memory blocks, allowing for efficient memory allocation and minimizing access conflicts.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If instructions and data elements are stored in separate memory blocks, then access conflicts are avoided in the same clock cycle, but memory usage efficiency deteriorates and memory space is wasted
Solution Approach 1:
The patent segments data elements into two categories: regular data elements stored in non-instruction memory blocks and non-regular data elements stored in instruction memory blocks. This segmentation allows selective co-location of data with instructions without causing access conflicts, as the processor is configured to handle these different types differently.
Solution Approach 2:
The patent applies local quality by treating different data elements differently based on their characteristics. Non-regular data elements that benefit from being close to instructions are placed in instruction memory blocks, while regular data elements are placed in non-instruction memory blocks. This localized optimization improves memory efficiency without compromising system reliability.
2Productivity
If instructions and data elements are stored in the same memory block, then memory usage is optimized and access time is improved, but access conflicts may occur during the same clock cycle
Solution Approach 1:
The patent introduces dynamic behavior by configuring the processor to differently handle accesses to non-regular data elements in instruction memory blocks versus regular data elements in non-instruction memory blocks. The processor can stall or manage access timing dynamically based on the type of data element being accessed, allowing co-location without conflicts.
Solution Approach 2:
The patent changes the parameter of memory block usage by allowing instruction memory blocks to serve dual purposes: storing both instructions and non-regular data elements. This parameter change enables improved memory efficiency while the processor's special handling mechanisms prevent access conflicts from degrading reliability.
3Reliability
If all data elements are stored in non-instruction memory blocks, then access conflicts are avoided, but memory allocation efficiency deteriorates
Solution Approach 1:
The patent makes instruction memory blocks multi-functional by allowing them to store both instructions and non-regular data elements. This universality improves memory allocation efficiency without compromising reliability, as the processor is configured to appropriately handle accesses to both types of content within the same memory block.
Data Source
AI summary
A method of storing computer executable instructions and data elements of a program in a plurality of memory blocks of an embedded system. The method includes receiving object code that comprises instructions that symbolically refer to one or more data elements; metadata that identifies the data elements in the object code; and a data element description that identifies each of the data elements as either a regular data element or a non-regular data element. Executable code is generated based the object code, metadata and the data element description that comprises computer executable instructions that refer to the data elements using an address in the memory, wherein the regular data elements are referenced by an address in a non-instruction memory block of the plurality of memory blocks and the non-regular data elements are referenced by an address in an instruction memory block. The executable code is then loaded into the memory of the embedded system.


