MFC commands

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 MFC is described in Memory flow controller. MFC commands can be issued either by code running on the MFC's associated SPU or by code running on the PPE or other device, as follows:

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.

Table 1. MFC DMA Command
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).
The suffixes in Table 2 are associated with the MFC DMA commands, and extend or refine the function of a command. For example, a put command moves data from local store to the effective address. A puts command moves data from local store to the effective address and starts the SPU after the DMA operation completes.

Commands issued by the PPE are issued on behalf of the SPE and are sent to the MFC Proxy command queue.

Table 2. MFC Command Suffixes
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.
Table 3. MFC Synchronization Commands
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.
Table 4. MFC Atomic Commands
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).