EP1544737A1

Thread execution scheduler for multi-processing system and method

Abstract

A processing system includes a plurality of processors capable of executing a plurality of threads and supporting at least one of hardware context switching and software context switching. The processing system also includes at least one hardware scheduler capable of scheduling execution of the plurality of threads by the plurality of processors. The at least one hardware scheduler is capable of scheduling execution of the threads by performing instruction-by-instruction scheduling of the threads.

EP1544737A1, drawing sheet 1
Sheet 1 of 12

Term

Term ended

Projected expiry passed 14 December 2024, 1.8 years ago.

  1. Priority
  2. Filed
  3. Published
  4. Projected expiry
  5. Today

26 claims: 14 independent, 12 dependent

  1. 1
    A processing system, comprising:a plurality of processors capable of executing a plurality of threads and supporting at least one of hardware context switching and software context switching;and at least one hardware scheduler capable of scheduling execution of the plurality of threads by the plurality of processors by performing instruction-by-instruction scheduling of the threads.
  2. 4
    The processing system of any preceding Claim, further comprising a hardware concurrency engine capable of managing a plurality of concurrency primitives that coordinate execution of the threads by the processors.
  3. 5
    The processing system of any preceding Claim, wherein:the at least one hardware scheduler comprises a hardware scheduler disposed in one of the processors;the processing system further comprises at least one memory, at least one programmable hardware processing engine, at least one interface to an external device, and a network coupling the processors, the memory, the hardware processing engine, and the interface;and the processors, the memory, the hardware processing engine, the interface, and the network comprise a system on a chip.
  4. 6
    The processing system of any preceding Claim, wherein the at least one scheduler 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.
  5. 7
    The processing system of any preceding Claim, wherein at least one of the processors comprises a dedicated register set for each thread executed by the processor, the dedicated register set for a particular thread storing a priority associated with the particular thread.
  6. 8
    The processing system of any preceding Claim, wherein the plurality of processors comprises homogenous processors in a symmetric multi-processing arrangement.
  7. 9
    A processor, comprising:a plurality of pipeline stages collectively capable of executing a plurality of instructions from a plurality of threads;a memory capable of storing the instructions;and a hardware scheduler capable of scheduling execution of the instructions from the plurality of threads by the pipeline stages.
  8. 12
    An apparatus, comprising:at least one of: an input device and an interface to the input device, the input device capable of providing input data;at least one of: an output device and an interface to the output device, the output device capable of receiving output data;and a processing system capable of receiving the input data and generating the output data, the processing system comprising: a plurality of processors capable of executing a plurality of threads;and at least one hardware scheduler capable of scheduling execution of the plurality of threads by the plurality of processors.
  9. 15
    The apparatus of any of Claims 12 to 14, wherein:the apparatus is coupled to a network;and the processing system is capable of performing at least one of packet forwarding and traffic management.
  10. 20
    A method, comprising:executing a plurality of threads using at least one processor;and scheduling execution of the plurality of threads by the at least one processor using at least one hardware scheduler.
  11. 23
    The method of any of Claims 20 to 22, 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 , 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, and D represents an amount of time from a deadline for the thread.
  12. 24
    The method of any of Claims 20 to 23, further comprising managing a plurality of concurrency primitives that coordinate execution of the threads by the processors using a hardware concurrency engine; 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.
  13. 25
    The method of any of Claims 20 to 24, 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.
  14. 26
    The method of any of Claims 20 to 25, 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.