Instruction Encoding Space Optimization via Capability Usage

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In capability-based architectures, there is a challenge in providing sufficient instruction encoding space to define instructions that generate capabilities and non-capability generating instructions without duplicating variants, especially when resources are constrained.

Innovation Solution

An apparatus and method that utilize capability usage information to determine whether an instruction generates a capability or an integer value as a result, allowing a single instruction to be configured to produce either outcome, thereby optimizing instruction encoding space.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If separate instruction variants are defined for capability generation and non-capability generation operations, then instruction functionality and versatility are improved, but instruction encoding space and device complexity worsen

Engineering Contradiction:
Improveinstruction functionalityVSAvoidinstruction encoding space
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

A single instruction format is designed to perform multiple functions: it can generate capabilities when capability usage information indicates capability state, and generate integer values when capability usage information indicates non-capability state. This universal instruction eliminates the need for separate instruction variants, resolving the contradiction between instruction versatility and encoding space consumption.

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

Solution Approach 2:

The instruction execution behavior is made dynamic by introducing capability usage information that determines at runtime whether the instruction generates a capability or an integer value. This dynamic switching allows the same instruction encoding to adapt its function based on the current capability state, thereby maintaining instruction versatility while conserving encoding space.

Inventive Principle:
Principle #15Dynamics

2Reliability

If capability-based architecture is implemented with bounded pointers and range checks, then memory safety and reliability are improved, but processing overhead and execution speed worsen

Engineering Contradiction:
Improvememory safetyVSAvoidexecution speed
Core Design Contradiction:
ReliabilityVSSpeed

Solution Approach 1:

Capability information including range data is pre-computed and stored in the capability register before memory access operations. By preparing the range validation data in advance, the system avoids performing complex range checks during actual memory access operations, thus maintaining memory safety while minimizing execution overhead.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The capability register automatically contains the range information needed for validation, enabling the system to perform self-validation without requiring external intervention or additional complex validation logic. This self-service mechanism maintains reliability while keeping the validation process efficient and integrated into the natural instruction flow.

Inventive Principle:
Principle #25Self-service

Data Source

PatentEP3649550B1An apparatus and method for controlling execution of instructions
Publication Date: 2022.09.07 ARM LTD
  • EP3649550B1 patent drawingFigure 1
  • EP3649550B1 patent drawingFigure 2A~2B
  • EP3649550B1 patent drawingFigure 3

AI summary

An apparatus and method are provided for controlling execution of certain instructions. The apparatus has processing circuitry to execute a sequence of instructions, an integer storage element to store an integer value for access by the processing circuitry, and a capability storage element for storing a capability for access by the processing circuitry. A capability usage storage is then used to store capability usage information. The processing circuitry is responsive to execution of at least one instruction in the sequence of instructions to generate, in dependence on the capability usage information, a result to be stored in a destination storage element. In particular, when the capability usage information identifies a capability state, the result is generated as a capability, and the capability storage element is selected as the destination storage element. Conversely, when the capability usage information identifies a non-capability state, the result is generated as an integer value, and the integer storage element is selected as the destination storage element. This allows both capability and non-capability generating variants of an instruction to be specified, without requiring separate instructions to be provided within the instruction set.