Managed Runtime System Hybrid ISA Code Scheduling
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Hybrid computing architectures with different Instruction Set Architectures (ISAs) for performance and efficiency cores limit the utilization of CPU potential and innovation, as features supported by one type of core remain unused on the other.
Innovation Solution
A Managed Runtime System (MRS) that generates native code for each ISA and schedules it to the appropriate cores using a thread pool, allowing for the full potential of each core type to be exploited.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Speed
If a compiler generates executable code for a dedicated architecture, then execution speed is improved, but portability to other architectures deteriorates
Solution Approach 1:
The patent introduces a virtual machine as an intermediary layer between the compiled code and the hardware platforms. The compiler generates code for the virtual machine architecture rather than directly for specific hardware, and interpreters on each platform translate this intermediate code to native instructions. This mediator enables both fast execution (through optimized interpreters) and portability (through architecture-independent intermediate representation).
Solution Approach 2:
The system segments the compilation process into two distinct stages: compilation to virtual machine code (architecture-independent) and interpretation to native code (architecture-specific). This segmentation allows the compilation step to be performed once for multiple targets, improving portability, while the interpretation step optimizes for each specific platform, maintaining execution speed.
2Adaptability or versatility
If an interpreter uses a virtual machine on each hardware platform, then portability is improved, but execution speed deteriorates
Solution Approach 1:
The patent implements dynamic code generation and optimization within the virtual machine environment. The system can adaptively compile frequently executed code paths to native code, optimize instruction sequences based on runtime performance data, and dynamically adjust the interpretation strategy. This dynamic approach bridges the gap between the portability of interpretation and the speed of native compilation.
3Use of energy by moving object
If hybrid architectures use different ISAs for performance and efficiency cores, then power efficiency is improved, but feature utilization deteriorates
Solution Approach 1:
The virtual machine serves as a universal execution environment that can run the same intermediate code on both performance cores and efficiency cores with different ISAs. The system translates the architecture-independent intermediate representation to the appropriate native instructions for each core type, enabling efficiency cores to utilize advanced features (when available) while maintaining the ability to run on simpler architectures, thus achieving both power efficiency and feature utilization.
4Reliability
If features supported by performance cores are not supported on efficiency cores, then compatibility is improved, but productivity deteriorates
Solution Approach 1:
The system changes the representation parameters of the code from architecture-specific instructions to architecture-independent intermediate representation. This parameter change allows the same code to be executed on cores with different feature sets by translating to appropriate instruction sets at runtime, maintaining compatibility across different core types while enabling full utilization of available features on each core type through optimized code generation.
Data Source
AI summary
Examples relate to a method for managing a runtime system for a hybrid computing architecture, a device, an apparatus and to a corresponding computer program. The apparatus is configured to create a thread pool for each work thread of a computer program, generate native code for at least one of the at least two ISAs for code segments of the computer program, assign native code sequences to a corresponding thread in the thread pool for execution, with the native code sequences comprising the native code of the code segments, and execute the native code sequences.


