Threads and tasks

In a system running the Linux operating system, the main thread of a program is a Linux thread running on the PPE. The program’s main Linux thread can spawn one or more Cell Broadband Engine Linux tasks.

A Cell Broadband Engine Linux task has one or more Linux threads associated with it that may execute on either a PPE or a SPE. An SPE thread is a Linux thread that is executing on a SPE. These terms are defined in Table 1.

The software threads described in this section are unrelated to the hardware multithreading capability of the PPE.

Table 1. Definition of threads and tasks
Term Definition
Linux thread A thread running in the Linux operating-system environment.
PPE thread A Linux thread running on a PPE.
SPE thread A Linux thread running on an SPE. Each such thread:
  • has its own SPE context which includes the 128 x 128-bit register file, program counter, and MFC Command Queues.
  • can communicate with other execution units (or with effective-address memory through the MFC channel interface).
Cell Broadband Engine Linux task A task running on the PPE and SPE.
  • Each such task has one or more Linux threads.
  • All the Linux threads within the task share the task’s resources.

A Linux thread can interact directly with an SPE thread through the SPE’s local store or its problem state. It can interact indirectly through effective-address (EA) memory or the interface provided by the SPE Runtime Management library subroutines.

The operating system defines the mechanism and policy for scheduling an available SPE. It must prioritize among all the Cell Broadband Engine Linux applications in the system, and it must schedule SPE execution independent from regular Linux threads. It is also responsible for runtime loading, passing parameters to SPE programs, notification of SPE events and errors, and debugger support.