EP1544738A1

Accelerator 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 a hardware concurrency engine coupled to the plurality of processors. The concurrency engine is capable of managing a plurality of concurrency primitives that coordinate execution of the threads by the processors. The concurrency primitives could represent objects, and the processors may be capable of using the objects by reading from and/or writing to addresses in an address space associated with the concurrency engine. Each address may encode an object index identifying one of the objects, an object type identifying a type associated with the identified object, and an operation type identifying a requested operation involving the identified object.

EP1544738A1, drawing sheet 1
Sheet 1 of 7

Term

Term ended

Projected expiry passed 14 December 2024, 1.8 years ago.

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

25 claims: 10 independent, 15 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 a hardware concurrency engine coupled to the plurality of processors, the concurrency engine capable of managing a plurality of concurrency primitives that coordinate execution of the threads by the processors.
  2. 2
    The processing system of Claim 1, wherein the processors are capable of using the concurrency primitives by at least one of:reading from and writing to addresses in an address space associated with the concurrency engine;and using concurrency control instructions in an instruction set architecture of at least one of the processors.
  3. 3
    The processing system of Claim 1, wherein the concurrency engine is further capable of scheduling execution of the threads by the processors.
  4. 4
    The processing system of any preceding Claim, wherein the concurrency engine is capable of enforcing concurrency semantics when managing the concurrency primitives, the semantics associated with at least one of:mutual exclusion, monitors, waiting and signaling conditions, timeout conditions, deferred conditions, priority elevation to avoid priority inversion in the monitors, priority queues, and operation ordering.
  5. 5
    The processing system of any preceding Claim, wherein the concurrency engine is further capable of maintaining thread descriptors for the threads, maintaining thread parent/child trees, and performing thread fork and thread join operations.
  6. 6
    The processing system of any preceding Claim, further comprising: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 concurrency engine, the memory, the hardware processing engine, and the interface.
  7. 7
    The processing system of Claim 6, wherein the processors, the concurrency engine, the memory, the hardware processing engine, the interface, and the network comprise a system on a chip.
  8. 8
    The processing system of any preceding Claim, wherein the plurality of processors comprises homogenous processors in a symmetric multi-processing arrangement.
  9. 9
    A method, comprising:executing a plurality of threads using a plurality of processors;and managing a plurality of concurrency primitives that coordinate execution of the threads by the processors using a hardware concurrency engine.
  10. 10
    The processing system of any of Claims 1 to 8, or the method of Claim 9, wherein the plurality of concurrency primitives comprises at least one of:a semaphore, a queue, a counter, a timer, a monitor, a condition, a deferred condition, and a timeout condition.
  11. 11
    The method of Claim 9 or 10, wherein managing the concurrency primitives comprises allowing the processors to use the concurrency primitives by at least one of:reading from and writing to addresses in an address space associated with the concurrency engine;and using concurrency control instructions in an instruction set architecture of at least one of the processors.
  12. 12
    The processing system of any of Claims 1 to 8, or the method of any of Claims 9 to 11, wherein:each of the plurality of concurrency primitives comprises an object;and each address encodes at least one of: an object index identifying one of the objects, an object type identifying a type associated with the identified object, and an operation type identifying a requested operation involving the identified object.
  13. 13
    The method of any of Claims 9 to 13, further comprising scheduling execution of the threads by the processors using the concurrency engine.
  14. 14
    The processing system of Claim 3 or the method of Claim 13, wherein scheduling execution of the threads comprises at least one of:adjusting a thread priority for at least one of the threads;enabling and disabling execution of at least one of the threads;altering at least one of a power and a clock speed of at least one of the processors;gating a clock signal of at least one of the processors;providing control signals to a thread scheduler in at least one of the processors;providing control signals to load/store logic in at least one of the processors;stalling at least one of a read acknowledgement and a write acknowledgement destined for at least one of the processors;and providing at least one of an interrupt and an exception to at least one of the processors.
  15. 15
    The method of any of Claims 9 to 14, further comprising maintaining thread descriptors for the threads, maintaining thread parent/child trees, and performing thread fork and thread join operations using the concurrency engine.
  16. 16
    A concurrency engine capable of managing a plurality of concurrency primitives that coordinate execution of threads by a plurality of processors, comprising:a command decoder capable of decoding requests from the processors;a command processor capable of executing operations associated with the decoded requests;a response formatter capable of encoding results from the execution of the operations;and a memory capable of storing information associated with a plurality of objects representing the concurrency primitives, each operation executed by the command processor involving at least one of the objects, each request from the processors comprising at least one of a read operation and a write operation involving an address in an address space associated with the concurrency engine, the address encoding an identification of one of the objects and a requested operation.
  17. 17
    The concurrency engine of Claim 16, further comprising:a request queue capable of storing the decoded requests before the decoded requests are provided to the command processor;a response queue capable of storing the results before the results are provided to the response formatter;and a message passing engine capable of receiving the requests from the processors over a network and communicating the encoded results to the processors over the network.
  18. 18
    The concurrency engine of Claim 16 or 17, wherein the command decoder, the command processor, the response formatter, the request queue, the response queue, and the message passing engine comprise at least one of:an application-specific integrated circuit, a field programmable gate array, and a sea of gates.
  19. 19
    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 a hardware concurrency engine coupled to the plurality of processors, the concurrency engine capable of managing a plurality of concurrency primitives that coordinate execution of the threads by the processors.
  20. 20
    The apparatus of Claim 19, wherein:the apparatus comprises a mobile telephone;the at least one of an input device and an interface to the input device comprises a keypad and a microphone;and the at least one of an output device and an interface to the output device comprises a display and a speaker.
  21. 21
    The apparatus of Claim 19 or 20, further comprising:an antenna capable of at least one of: receiving wireless signals and transmitting wireless signals;and a wireless interface capable of converting received signals into data suitable for processing and of converting data into signals suitable for transmission.
  22. 22
    The apparatus of any of Claims 19 to 21, 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.
  23. 23
    The processing system of any of Claims 1 to 8, or the method of any of Claims 9 to 12 or the apparatus of any of Claims 19 to 22, wherein the concurrency engine comprises:a command decoder capable of decoding requests from the processors;a command processor capable of executing operations associated with the decoded requests;a response formatter capable of encoding results from the execution of the operations;and a memory capable of storing information associated with a plurality of objects representing the concurrency primitives, each operation executed by the command processor involving at least one of the objects, each request from the processors comprising at least one of a read operation and a write operation involving an address in an address space associated with the concurrency engine, the address encoding an identification of one of the objects and a requested operation.
  24. 24
    A processor, comprising:an instruction set supporting a plurality of instructions for execution;an embedded memory capable of storing instructions to be executed, the instructions to be executed implementing at least one thread;and a hardware concurrency engine capable of managing a plurality of concurrency primitives that coordinate execution of a plurality of threads by the processor and at least one additional processor.
  25. 25
    The processor of Claim 24, wherein:each of the plurality of concurrency primitives comprises an object;and the processor is capable of using the concurrency primitives by at least one of: reading from and writing to addresses in an address space associated with the concurrency engine, each address encoding at least one of: an object index identifying one of the objects, an object type identifying a type associated with the identified object, and an operation type identifying a requested operation involving the identified object;and using concurrency control instructions in the instruction set of the processor.
Independent claims25