User’s Manual
IBM PowerPC 750GX and 750GL RISC Microprocessor
Integer Load-and-Store String Instructions
The integer load-and-store string instructions allow movement of data from memory to registers, or from registers to memory, without concern for alignment. These instructions can be used for a short move between arbitrary memory locations or to initiate a long move between misaligned memory fields. However, in some implementations, these instructions are likely to have greater latency and take longer to execute, perhaps much longer, than a sequence of individual load or store instructions that produce the same results.
Table 2-20summarizes the integer load-and-store string instructions. In other PowerPC implementations operating with little-endian byte order, execution of a load or string instruction invokes the alignment error handler. See “Byte Ordering” in the PowerPC Microprocessor Family: The Programming Environments Manual for more information.
Table 2-22. Integer Load-and-Store String Instructions
Name | Mnemonic | Syntax |
| | |
| | |
Load String Word Immediate | lswi | rD,rA,NB |
| | |
Load String Word Indexed | lswx | rD,rA,rB |
| | |
Store String Word Immediate | stswi | rS,rA,NB |
| | |
Store String Word Indexed | stswx | rS,rA,rB |
| | |
Load string and store string instructions might involve operands that are not word-aligned.
As described in Section 4.5.6 on page 170, a misaligned string operation suffers a performance penalty compared to an aligned operation of the same type.
Anon-word-aligned string operation that crosses a 4-KB boundary, or a word-aligned string operation that crosses a 256-MB boundary, always causes an alignment exception. A non-word-aligned string operation that crosses a double-word boundary is also slower than a word-aligned string operation.
Implementation Notes: The following describes the 750GX implementation of load/store string instructions:
•For load/store string operations, the hardware does not combine register values to reduce the number of discrete accesses. However, if store gathering is enabled and the accesses fall under the criteria for store gathering, the stores can be combined to enhance performance. At a minimum, additional cache access cycles are required.
•The 750GX supports misaligned, single-register load-and-store accesses in little-endian mode without causing an alignment exception. However, execution of misaligned load/store multiple/string operations causes an alignment exception.
Floating-Point Load-and-Store Address Generation
Floating-point load-and-store operations generate effective addresses using the register indirect with immediate index addressing mode and register indirect with index addressing mode. Floating-point loads and stores are not supported for direct-store accesses. The use of floating-point loads and stores for direct-store access results in an alignment exception.
Implementation Notes: The 750GX treats exceptions as follows:
•The FPU can be run in two different modes—ignore-exceptions mode (MSR[FE0] = MSR[FE1] = 0) and precise-exception mode (any other settings for MSR[FE0,FE1]). For the 750GX, ignore-exceptions mode allows floating-point instructions to complete earlier and, thus, might provide better performance than pre- cise mode.
gx_02.fm.(1.2) | Programming Model |
March 27, 2006 | Page 103 of 377 |