Processor Interrupt Priority Control with Dynamic DISICTL Levels
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing systems for managing interrupt priority levels in computer processors have limitations, such as the inability to effectively disable interrupts for devices with less deterministic execution times and limited compatibility with reentrant code.
Innovation Solution
The introduction of Disable Interrupt Control (DISICTL) instructions allows for the establishment and updating of a current DISICTL Interrupt Priority Level (IPL), which disables exceptions with an IPL equal to or below the current DISICTL IPL, enabling execution of high-priority code without interruptions from lower-priority exceptions.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If the DISI instruction is used to disable interrupts for a fixed period of time, then important code can execute without interruption, but the system loses flexibility for devices with less deterministic execution times
Solution Approach 1:
The patent introduces a dynamic interrupt disable mechanism where the disable level can be adjusted based on the specific code execution requirements. Instead of a fixed-time disable, the system can dynamically set the interrupt disable level to match the actual execution time needs, providing flexibility for devices with non-deterministic execution times while ensuring reliable execution during critical periods.
Solution Approach 2:
The patent changes the parameter of interrupt disable from a fixed time duration to a configurable interrupt level. This allows the system to adapt the interrupt disable behavior to different execution time constraints by adjusting the disable level parameter, thereby resolving the contradiction between reliability and adaptability.
2Reliability
If the DISI instruction disables interrupts up to IPL6, then lower-priority interrupts are blocked, but higher-priority interrupts like IPL7 are still allowed which may be unwanted
Solution Approach 1:
The patent applies local quality by allowing different interrupt levels to be disabled at different granularities. The DISICTL instruction enables selective disabling of specific interrupt levels (IPL0-IPL6) while maintaining the ability to allow higher-priority interrupts (IPL7) if needed. This provides precise control over which interrupt levels are blocked, resolving the contradiction between ensuring reliable execution and maintaining operational flexibility.
3Reliability
If the DISI instruction is used, then interrupts are disabled for important code execution, but compatibility with reentrant code is limited
Solution Approach 1:
The patent segments the interrupt disabling functionality into a separate controllable mechanism (DISICTL) that can be independently managed. This segmentation allows reentrant code to selectively enable/disable interrupt blocking at different levels, improving compatibility with reentrant code while maintaining the ability to ensure reliable execution of critical code sections.
4Ease of manufacture
If a fixed time disable mechanism is used, then implementation is simple, but it cannot accommodate devices with less deterministic execution times
Solution Approach 1:
The patent changes the implementation from a fixed time parameter to a configurable interrupt level parameter. This parameter change maintains implementation simplicity while dramatically improving adaptability to non-deterministic execution times, as the interrupt disable level can be adjusted to match the actual execution time requirements of different devices and code sections.
Data Source
AI summary
A system includes non-transitory computer readable memory and a processor. The non-transitory computer readable memory stores a current processor interrupt priority level and a current disable interrupt control (DISICTL) interrupt priority level. The processor to update the current processor interrupt priority level based on respective interrupt priority levels associated with respective exceptions, and update the current DISICTL interrupt priority level based on a respective DISICTL instruction, wherein the respective DISICTL instruction specifies a respective user-definable DISICTL interrupt priority level. The processor determines a highest interrupt priority level between the current processor interrupt priority level and the current DISICTL interrupt priority level, and apply the highest interrupt priority level during execution of respective code.


