25112 Rev. 3.06 September 2005

Software Optimization Guide for AMD64 Processors

5.2Natural Alignment of Data Objects

Optimization

❖Make sure data objects are naturally aligned. An object is naturally aligned if it is located at an address that is a multiple of its size.

Locate this type of object

At an address evenly divisible by

 

 

Word

2

 

 

Doubleword

4

 

 

Quadword

8

 

 

Ten-byte (for example, TBYTE or REAL10)

8 (instead of 10)

 

 

Double quadword

16

 

 

Application

This optimization applies to:

•32-bit software

•64-bit software

Rationale

A misaligned store or load operation suffers a minimum one-cycle penalty in the processor’s load- store pipeline. Also, using misaligned loads and stores increases the likelihood of encountering a store-to-load forwarding pitfall, especially when operating in long mode (64-bit software). (For a more detailed discussion of store-to-load forwarding issues, see “Store-to-Load Forwarding Restrictions” on page 100.)

In addition, if the Alignment Mask bit is set in Control Register 0 (CR0), an unaligned memory

reference may cause an alignment check exception. For more information on this topic, see Volume 2 of the AMD64 Architecture Programmer’s Manual (order# 24593).

Chapter 5

Cache and Memory Optimizations

95

Page 111
Image 111
AMD 250 manual Natural Alignment of Data Objects, Optimization