Processor Subroutine Cache for Low-Power, Stall-Free Execution
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Repeated access of subroutine instructions from memory increases energy consumption and causes processor pipeline stalls, detrimental to performance.
Innovation Solution
A processor with a subroutine cache that uses register-based subroutine calls and flag multiplexing to identify cached subroutines, reducing circuitry and energy consumption without compromising performance.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Device complexity
If subroutine instructions are repeatedly accessed from memory, then program size is reduced and organization is improved, but energy consumption increases and processor performance deteriorates
Solution Approach 1:
The system performs preliminary action by pre-fetching and caching subroutine instructions into a dedicated subroutine cache before they are needed for execution. This allows the instructions to be readily available in fast memory, eliminating repeated slow memory accesses and reducing energy consumption during subroutine execution.
Solution Approach 2:
A subroutine cache is introduced as an intermediary component between main memory and the execution unit. This cache stores frequently accessed subroutine instructions and provides them to the execution unit, reducing the need for repeated full memory accesses and thereby lowering energy consumption.
2Device complexity
If subroutine instructions are repeatedly accessed from memory, then program organization is improved, but processor pipeline stalls increase
Solution Approach 1:
The system performs preliminary action by pre-fetching and caching subroutine instructions into a dedicated subroutine cache before they are needed for execution. This allows the instructions to be readily available in fast memory, eliminating repeated slow memory accesses and reducing energy consumption during subroutine execution.
Solution Approach 2:
A subroutine cache is introduced as an intermediary component between main memory and the execution unit. This cache stores frequently accessed subroutine instructions and provides them to the execution unit, reducing the need for repeated full memory accesses and thereby lowering energy consumption.
3Speed
If a traditional cache is used to store subroutine instructions, then access speed is improved, but circuitry complexity and power consumption increase
Solution Approach 1:
The cache system is segmented into a specific subroutine cache that is dedicated to storing only subroutine instructions, separate from the main instruction cache. This segmentation allows for optimized, simpler circuitry tailored specifically for subroutine access patterns, reducing overall circuitry complexity while maintaining high access speed for subroutines.
Solution Approach 2:
The system applies local quality by creating a specialized subroutine cache with properties optimized specifically for subroutine instructions, rather than using a general-purpose cache. This localized optimization reduces the complexity requirements while maintaining high performance for the specific use case of subroutine execution.
Data Source
AI summary
A processor includes an execution unit and a subroutine cache. The execution unit is configured to execute instructions. The subroutine cache us configured to provide instructions of a subroutine to the execution unit for execution. The subroutine cache includes subroutine instruction storage, a subroutine address register, and subroutine cache control logic. The subroutine control logic is configured to: identify a subroutine call instruction provided to the execution unit; determine whether an instruction of a subroutine invoked by the subroutine call instruction is stored in the subroutine instruction storage by evaluating a subroutine validity indicator that indicates whether at least a portion of the subroutine is stored in the subroutine instruction storage; and provide the instruction of the subroutine to the execution unit based on the subroutine validity indicator indicating that at least a portion of the subroutine is stored in the subroutine instruction storage.


