Intel® Itanium® Architecture Software Developer's Manual, Volume 1
Total Page:16
File Type:pdf, Size:1020Kb
Intel® Itanium® Architecture Software Developer’s Manual Volume 1: Application Architecture Revision 2.3 May 2010 Document Number: 245317 THIS DOCUMENT IS PROVIDED “AS IS” WITH NO WARRANTIES WHATSOEVER, INCLUDING ANY WARRANTY OF MERCHANTABILITY, FITNESS FOR ANY PARTICULAR PURPOSE, OR ANY WARRANTY OTHERWISE ARISING OUT OF ANY PROPOSAL, SPECIFICATION OR SAMPLE. Information in this document is provided in connection with Intel® products. No license, express or implied, by estoppel or otherwise, to any intellectual property rights is granted by this document. Except as provided in Intel's Terms and Conditions of Sale for such products, Intel assumes no liability whatsoever, and Intel disclaims any express or implied warranty, relating to sale and/or use of Intel products including liability or warranties relating to fitness for a particular purpose, merchantability, or infringement of any patent, copyright or other intellectual property right. Intel products are not intended for use in medical, life saving, or life sustaining applications. Intel may make changes to specifications and product descriptions at any time, without notice. Designers must not rely on the absence or characteristics of any features or instructions marked “reserved” or “undefined.” Intel reserves these for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities arising from future changes to them. Intel® processors based on the Itanium architecture may contain design defects or errors known as errata which may cause the product to deviate from published specifications. Current characterized errata are available on request. Contact your local Intel sales office or your distributor to obtain the latest specifications and before placing your product order. Copies of documents which have an order number and are referenced in this document, or other Intel literature, may be obtained by calling1-800-548-4725, or by visiting Intel's website at http://www.intel.com. Intel, Itanium, Pentium, VTune and MMX are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. Copyright © 1999-2010, Intel Corporation Intel® Itanium® Architecture Software Developer’s Manual, Rev. 2.3 ii Contents Part I: Application Architecture Guide 1 About this Manual . 1:3 1.1 Overview of Volume 1: Application Architecture . 1:3 1.1.1 Part 1: Application Architecture Guide . 1:3 1.1.2 Part 2: Optimization Guide for the Intel® Itanium® Architecture . 1:3 1.2 Overview of Volume 2: System Architecture. 1:4 1.2.1 Part 1: System Architecture Guide . 1:4 1.2.2 Part 2: System Programmer’s Guide . 1:5 1.2.3 Appendices. 1:6 1.3 Overview of Volume 3: Intel® Itanium® Instruction Set Reference . 1:6 1.4 Overview of Volume 4: IA-32 Instruction Set Reference. 1:6 1.5 Terminology . 1:7 1.6 Related Documents . 1:7 1.7 Revision History . 1:8 2 Introduction to the Intel® Itanium® Architecture . 1:13 2.1 Operating Environments . 1:13 2.2 Instruction Set Transition Model Overview . 1:14 2.3 Intel® Itanium® Instruction Set Features. 1:15 2.4 Instruction Level Parallelism . 1:15 2.5 Compiler to Processor Communication . 1:16 2.6 Speculation . 1:16 2.6.1 Control Speculation . 1:16 2.6.2 Data Speculation . 1:17 2.6.3 Predication . 1:17 2.7 Register Stack . 1:18 2.8 Branching . 1:19 2.9 Register Rotation . 1:19 2.10 Floating-point Architecture . 1:19 2.11 Multimedia Support. 1:20 2.12 Intel® Itanium® System Architecture Features . 1:20 2.12.1 Support for Multiple Address Space Operating Systems . 1:20 2.12.2 Support for Single Address Space Operating Systems . 1:20 2.12.3 System Performance and Scalability . 1:21 2.12.4 System Security and Supportability . 1:21 2.13 Terminology . 1:21 3 Execution Environment. 1:23 3.1 Application Register State . 1:23 3.1.1 Reserved and Ignored Registers and Fields . 1:23 3.1.2 General Registers. 1:25 3.1.3 Floating-point Registers . 1:26 3.1.4 Predicate Registers . 1:26 3.1.5 Branch Registers . 1:26 3.1.6 Instruction Pointer. 1:27 3.1.7 Current Frame Marker . 1:27 3.1.8 Application Registers . 1:28 3.1.9 Performance Monitor Data Registers (PMD) . 1:33 3.1.10 User Mask (UM) . 1:33 3.1.11 Processor Identification Registers . 1:34 3.2 Memory. 1:36 3.2.1 Application Memory Addressing Model . 1:36 3.2.2 Addressable Units and Alignment . 1:36 Intel® Itanium® Architecture Software Developer’s Manual, Rev. 2.3 iii 3.2.3 Byte Ordering . 1:36 3.3 Instruction Encoding Overview . 1:38 3.4 Instruction Sequencing Considerations . 1:39 3.4.1 RAW Dependency Special Cases. 1:42 3.4.2 WAW Dependency Special Cases . 1:43 3.4.3 WAR Dependency Special Cases. 1:44 3.4.4 Processor Behavior on Dependency Violations . 1:44 3.5 Undefined Behavior . 1:44 4 Application Programming Model . 1:47 4.1 Register Stack . 1:47 4.1.1 Register Stack Operation . 1:47 4.1.2 Register Stack Instructions . 1:49 4.2 Integer Computation Instructions. 1:50 4.2.1 Arithmetic Instructions . 1:51 4.2.2 Logical Instructions . 1:51 4.2.3 32-bit Addresses and Integers . 1:52 4.2.4 Bit Field and Shift Instructions. 1:52 4.2.5 Large Constants . 1:53 4.3 Compare Instructions and Predication . 1:54 4.3.1 Predication . 1:54 4.3.2 Compare Instructions . 1:54 4.3.3 Compare Types. 1:55 4.3.4 Predicate Register Transfers. 1:57 4.4 Memory Access Instructions . 1:57 4.4.1 Load Instructions . ..