The MFC supports a set of MFC commands. These commands provide the main mechanism that enables code executing in an SPU to access main storage and maintain synchronization with other processors and devices in the system.
The commands are queued in one of two independent MFC command queues:
MFC commands that transfer data are referred to as DMA commands. The data-transfer direction for MFC DMA commands is always referenced from the perspective of an SPE. Therefore, commands that transfer data into an SPE (from main storage to local store), are considered get commands, and transfers of data out of an SPE (from local store to main storage) are considered put commands.
The MFC DMA commands are shown in Table 1. This table also indicates whether the commands are supported for SPEs (by means of a corresponding channel) and for the PPE (by means of a corresponding MMIO register), or both.
The suffixes associated with the MFC DMA commands are shown in Table 2.
The MFC synchronization commands are shown in Table 3.
The MFC atomic commands are shown in Table 4.
Mnemonic | Supported By | Description |
---|---|---|
Put Commands | ||
put | PPE, SPE | Moves data from local store to the effective address. |
puts | PPE | Moves data from local store to the effective address and starts the SPU after the DMA operation completes. |
putf | PPE, SPE | Moves data from local store to the effective address with fence (this command is locally ordered with respect to all previously issued commands within the same tag group and command queue). |
putb | PPE, SPE | Moves data from local store to the effective address with barrier (this command and all subsequent commands with the same tag ID as this command are locally ordered with respect to all previously issued commands within the same tag group and command queue). |
putfs | PPE | Moves data from local store to the effective address with fence (this command is locally ordered with respect to all previously issued commands within the same tag group and command queue) and starts the SPU after the DMA operation completes. |
putbs | PPE | Moves data from local store to the effective address with barrier (this command and all subsequent commands with the same tag ID as this command are locally ordered with respect to all previously issued commands within the same tag group and command queue) and starts the SPU after the DMA operation completes. |
putl | SPE | Moves data from local store to the effective address using an MFC list. |
putlf | SPE | Moves data from local store to the effective address using an MFC list with fence (this command is locally ordered with respect to all previously issued commands within the same tag group and command queue). |
putlb | SPE | Moves data from local store to the effective address using an MFC list with barrier (this command and all subsequent commands with the same tag ID as this command are locally ordered with respect to all previously issued commands within the same tag group and command queue). |
Get Commands | ||
get | PPE, SPE | Moves data from the effective address to local store. |
gets | PPE | Moves data from the effective address to local store, and starts the SPU after the DMA operation completes. |
getf | PPE, SPE | Moves data from the effective address to local store with fence (this command is locally ordered with respect to all previously issued commands within the same tag group and command queue). |
getb | PPE, SPE | Moves data from the effective address to local store with barrier (this command and all subsequent commands with the same tag ID as this command are locally ordered with respect to all previously issued commands within the same tag group and command queue). |
getfs | PPE | Moves data from the effective address to local store with fence (this command is locally ordered with respect to all previously issued commands within the same tag group), and starts the SPU after the DMA operation completes. |
getbs | PPE | Moves data from the effective address to local store with barrier (this command and all subsequent commands with the same tag ID as this command are locally ordered with respect to all previously issued commands within the same tag group and command queue), and starts the SPU after the DMA operation completes. |
getl | SPE | Moves data from the effective address to local store using an MFC list. |
getlf | SPE | Moves data from the effective address to local store using an MFC list with fence (this command is locally ordered with respect to all previously issued commands within the same tag group and command queue). |
getlb | SPE | Moves data from the effective address to local store using an MFC list with barrier (this command and all subsequent commands with the same tag ID as this command are locally ordered with respect to all previously issued commands within the same tag group and command queue). |
Commands issued by the PPE are issued on behalf of the SPE and are sent to the MFC Proxy command queue.
Suffix | Description |
---|---|
s | Starts the execution of the SPU at the current location indicated by the SPU Next Program Counter Register after the data has been transferred into or out of the local store. |
f | Tag-specific fence. Commands with a tag-specific fence are locally ordered with respect to all previously-issued commands within the same tag group and command queue. |
b | Tag-specific barrier. Commands with a tag-specific barrier are locally ordered with respect to all previously-issued commands within the same tag group and command queue and all subsequently-issued commands to the same command queue with the same tag. |
l | List command. Executes a list of DMA transfer elements located in local store. The maximum number of elements is 2,048, and each element describes a transfer of up to 16 KB. |
Command | Supported By | Description |
---|---|---|
barrier | PPE, SPE | Barrier type ordering. Ensures ordering of all preceding, nonimmediate DMA commands with respect to all commands following the barrier command within the same command queue. The barrier command has no effect on the immediate DMA commands: getllar, putllc , and putlluc. |
mfceieio | PPE, SPE | Controls the ordering of get commands with respect to put commands, and of get commands with respect to get commands accessing storage that is caching inhibited and guarded. Also controls the ordering of put commands with respect to put commands accessing storage that is memory coherence required and not caching inhibited. |
mfcsync | PPE, SPE | Controls the ordering of DMA put and get operations within the specified tag group with respect to other processing units and mechanisms in the system. |
sndsig | PPE, SPE | Update SPU Signal Notification Registers in an I/O device or another SPE. |
sndsigb | PPE, SPE | Update SPU Signal Notification Registers in an I/O device or another SPE with barrier. |
sndsigf | PPE, SPE | Update SPU Signal Notification Registers in an I/O device or another SPE with fence. |
Command | Supported By | Description |
---|---|---|
getllar | SPE | Get lock line and create a reservation (executed immediately). |
putllc | SPE | Put lock line conditional on a reservation (executed immediately). |
putlluc | SPE | Put lock line unconditional (executed immediately). |
putqlluc | SPE | Put lock line unconditional (queued form). |