EP1544737B1

Thread execution scheduler for multi-processing system and method

Abstract

This record has no abstract on file.

EP1544737B1, drawing sheet 1
Sheet 1 of 12

Term

Term ended

Expired 14 December 2024, 1.8 years ago.

  1. Priority
  2. Filed
  3. Granted
  4. Expired
  5. Today

21 claims: 9 independent, 12 dependent

  1. 1
    A processing system (100) comprising :a plurality of multithreaded processors (102a:102n) each processor capable of executing an application comprising a plurality of threads and supporting hardware context switching;each of said processors comprising a hardware scheduler (414) capable of scheduling execution of a plurality of threads by the processor by performing instruction-by-instruction scheduling of the threads based on a priority associated with each thread;characterized by a concurrency engine arranged to support the scheduling of the execution of the threads by the processors by adjusting said priority, wherein the scheduler (414) is capable of scheduling execution of the plurality of threads by determining a dynamic priority for each thread using a formula of: P t = P t ⁢ 0 + K ⋅ W td D + Y t , where P t represents the dynamic priority for a particular thread, P t0 represents a static component of the dynamic priority, K represents a constant, W td represents an amount of work to be done by the thread, D represents an amount of time from a deadline for the thread, and Y t represents a value from the concurrency engine (206).
  2. 2
    The processing system (100) of Claim 1, wherein the at least one scheduler (414) is capable of scheduling execution of the plurality of threads using at least one of:priority scheduling, and priority scheduling using round robin scheduling within a priority.
  3. 3
    The processing system (100) of Claim 1 or 2, wherein the at least one hardware scheduler (414) is capable of dynamically changing thread scheduling parameters using dynamically measured system parameters, the system parameters comprising at least one of:a power usage of at least one component of the processing system, a quality of service measurement, execution progress for each thread, resource usage for each thread, an estimated number of instructions to completion for each thread, a required completion time for each thread, and a current system time.
  4. 4
    The processing system (100) of any preceding Claim, wherein said concurrency engine comprises a hardware concurrency engine (206) capable of managing a plurality of concurrency primitives that coordinate execution of the threads by the processors (102a:102n).
  5. 5
    The processing system (100) of any preceding Claim, wherein:the processing system (100) further comprises at least one memory (110), at least one programmable hardware processing engine (112, 114), at least one interface to an external device (124), and a network (108) coupling the processors, the memory (110), the hardware processing engine (112, 114), and the interface (124);and the processors (102a:102n), the memory (110), the hardware processing engine (112, 114), the interface (124), and the network (108) comprise a system on a chip.
  6. 6
    The processing system (100) of any preceding Claim, wherein the at least one scheduler (414) is capable of scheduling execution of the plurality of threads by at least one of:initiating a context switch every clock cycle;and initiating a context switch when an instruction from one of the threads is determined to have an associated latency.
  7. 7
    The processing system (100) of any preceding Claim, wherein at least one of the processors (102a:102n) comprises a dedicated register set (412) for each thread executed by the processor (102a:102n), the dedicated register set (412) for a particular thread storing said priority associated with the particular thread.
  8. 8
    The processing system (100) of any preceding Claim, wherein the plurality of processors (102a:102n) comprises homogenous processors in a symmetric multi-processing arrangement.
  9. 9
    The processing system (100) of any preceding Claim said at least one processor comprising:a plurality of pipeline stages (406a:406n) collectively capable of executing a plurality of instructions from a plurality of threads;a memory (408) capable of storing the instructions;and said hardware scheduler (414) capable of scheduling execution of the instructions from the plurality of threads by the pipeline stages.
  10. 10
    The processor (100) of Claim 9, further comprising a dedicated register set (412) for each thread executed by the processor, the dedicated register set (412) for a particular thread storing said priority associated with the particular thread.
  11. 11
    An apparatus (700), comprising the processing system (100) of Claim 1, and further comprising:at least one of: an input device and an interface to the input device (704), the input device capable of providing input data;at least one of: an output device and an interface to the output device (706), the output device capable of receiving output data;and said processing system (100) further arranged to be capable of receiving the input data and generating the output data.
  12. 12
    The apparatus (700) of Claim 11, wherein:the apparatus (700) comprises a mobile telephone;the at least one of an input device and an interface to the input device (704) comprises a keypad and a microphone;and the at least one of an output device and an interface to the output device (706) comprises a display and a speaker.
  13. 13
    The apparatus (700) of Claim 11 or 12, further comprising:an antenna (708) capable of at least one of: receiving wireless signals and transmitting wireless signals;and a wireless interface (710) capable of converting received signals into data suitable for processing and of converting data into signals suitable for transmission.
  14. 14
    The apparatus (700) of any of Claims 11 to 13, wherein:the apparatus (700) is coupled to a network;and the processing system (100) is capable of performing at least one of packet forwarding and traffic management.
  15. 15
    The processing system (100) or processor (400) or apparatus (700) of Claim 1, wherein:the amount of work to be done by the thread is determined as a difference between an estimated total number of instructions for the thread to do the work and a number of instructions actually executed by the thread;and the amount of time from the deadline is determined as a difference between a value of a system clock when the thread must be completed and a current value of the system clock.
  16. 16
    The processing system (100) or apparatus (700) of Claim 1, wherein the value of Y t is based on at least one of:a concurrency semantic enforced by the concurrency engine (206), a power usage of at least one component of the processing system (100), a quality of service measurement, execution progress for at least one thread, resource usage for at least one thread, an estimated number of instructions to completion for at least one thread, a required completion time for at least one thread, and a current system time.
  17. 17
    A method, comprising:executing an application comprising a plurality of threads using a plurality of multithreaded processors (102a:102n) each of said plurality of processors (102a:102n) supporting hardware context switching scheduling execution of a plurality of threads by one of the plurality of processors (102a:102n) using a hardware scheduler (414) by performing instruction-by-instruction scheduling of the threads;wherein scheduling execution of each thread is based on an associated priority value, characterized in that the associated priority value is adjustable by a concurrency engine coupled to said plurality of processors and capable of co-ordinating execution of the threads by the processors;and wherein scheduling execution of the plurality of threads comprises determining a dynamic priority for each thread using a formula of: P t = P t ⁢ 0 + K ⋅ W td D + Y t , where P t represents the dynamic priority for a particular thread, P t0 represents a static component of the dynamic priority, K represents a constant, W td represents an amount of work to be done by the thread, D represents an amount of time from a deadline for the thread, and Y t represents a value from the concurrency engine (206).
  18. 18
    The method of Claim 17, wherein scheduling execution of the plurality of threads comprises scheduling execution of the plurality of threads using at least one of:round robin scheduling, priority scheduling, and priority scheduling using round robin scheduling within a priority.
  19. 19
    The method of Claim 17 or 18, wherein scheduling execution of the plurality of threads comprises dynamically changing thread scheduling parameters using dynamically measured system parameters, the system parameters comprising at least one of:a power usage of the processors (102a:102n), a quality of service measurement, execution progress for each thread, resource usage for each thread, an estimated number of instructions to completion for each thread, a required completion time for each thread, and a current system time..
  20. 20
    The method of any of Claims 17 to 19, further comprising storing a priority for a particular thread in a dedicated register set associated with the particular thread;wherein scheduling execution of the plurality of threads comprises using the priority stored in the dedicated register set.
  21. 21
    The method of any of Claims 17 to 20, wherein scheduling execution of the plurality of threads comprises at least one of:initiating a context switch every clock cycle;and initiating a context switch when an instruction from one of the threads is determined to have an associated latency.
Independent claims21