Task Scheduler Pre-fetching for RTOS Memory Latency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Computer systems face inefficiencies due to the latency associated with switching tasks in real-time operating systems, particularly in pre-emptive RTOS environments, where tasks are interrupted to switch between tasks without cooperation, leading to potential errors and page faults due to delayed loading of instructions from non-volatile memory.

Innovation Solution

A method and system for pre-fetching instructions by a task scheduler that identifies future task switch conditions and determines a load start time for instructions, generating pre-fetch requests to load instructions from non-volatile memory into RAM before the task is executed, using a loader entity module and hardware loader circuitry to hide memory access latency.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If tasks are switched in pre-emptive RTOS environments without pre-fetching instructions, then task switching flexibility is improved, but memory access latency increases causing page faults and execution delays

Engineering Contradiction:
Improvetask switching flexibilityVSAvoidmemory access latency
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The system performs preliminary actions by identifying future task switch conditions and generating pre-fetch requests to load instructions into main memory before they are actually needed. The task scheduler determines a load start time for instructions based on anticipated task switches, allowing the memory system to begin loading data in advance, thus eliminating page faults and reducing latency when tasks are switched.

Inventive Principle:
Principle #10Preliminary action

2Device complexity

If instructions are loaded from non-volatile memory only when needed, then memory hierarchy simplicity is maintained, but task execution reliability deteriorates due to page faults during task switching

Engineering Contradiction:
Improvememory hierarchy simplicityVSAvoidtask execution reliability
Core Design Contradiction:
Device complexityVSReliability

Solution Approach 1:

The system anticipates future task switches by analyzing task scheduler events and determines when instructions will be needed. It then proactively generates pre-fetch requests to load these instructions from non-volatile memory into main memory in advance, ensuring that when a task switch occurs, the required instructions are already available, thus preventing page faults and improving execution reliability.

Inventive Principle:
Principle #10Preliminary action

3Speed

If pre-fetch requests are generated for all tasks, then instruction availability is improved, but memory bandwidth consumption increases

Engineering Contradiction:
Improveinstruction availabilityVSAvoidmemory bandwidth consumption
Core Design Contradiction:
SpeedVSLoss of energy

Solution Approach 1:

The system applies partial action by selectively generating pre-fetch requests only for tasks that are identified as likely to be switched to next, based on task scheduler events and scheduling information. Rather than pre-fetching for all tasks indiscriminately, the system uses judgment to determine which tasks require advance loading, thus optimizing memory bandwidth usage while still ensuring instruction availability for critical task switches.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS10120712B2Instruction pre-fetching
Publication Date: 2018.11.06 NXP USA INC
  • US10120712B2 patent drawing
  • US10120712B2 patent drawing
  • US10120712B2 patent drawing

AI summary

Pre-fetching instructions for tasks of an operating system (OS) is provided by calling a task scheduler that determines a load start time for a set of instructions for a particular task corresponding to a task switch condition. The OS calls, and in response to the load start time, a loader entity module that generates a pre-fetch request that loads the set of instructions for the particular task from a non-volatile memory circuit into a random access memory circuit. The OS calls the task scheduler to switch to the particular task.