1.1. How to use this book

This book provides a single guide for programmers who want to use the Cortex-A series processors that implement the ARMv8 architecture. The guide brings together information from a wide variety of sources that is useful to both ARM assembly language and C programmers. It is meant to complement rather than replace other ARM documentation available for ARMv8 processors. The other documents for specific information includes the ARM Technical Reference Manuals (TRMs) for the processors themselves, documentation for individual devices or boards or, most importantly, the ARM Architecture Reference Manual - ARMv8, for ARMv8-A architecture profile - the ARM ARM.

This book is not written at an introductory level. It assumes some knowledge of the C programming language and microprocessors. Hardware concepts such as caches and Memory Management Units are covered, but only where this knowledge is valuable to the application writer. The book looks at the way operating systems utilize ARMv8 features, and how to take full advantage of the capabilities of the ARMv8 processors. Some chapters contain pointers to additional reading. We also refer to books and web sites that can give a deeper level of background to the subject matter, but often the main focus is the ARM-specific detail. No assumptions are made on the use of any particular toolchain, and both GNU and ARM tools are mentioned throughout the book.

If you are new to the ARMv8 architecture, Chapter 2 ARMv8-A Architecture and Processors describes the previous 32-bit ARM architectures, introduces ARMv8, and describes some of the properties of the ARMv8 processors. Next, Chapter 3 Fundamentals of ARMv8 describes the building blocks of the architecture in the form of Exception levels and Execution states. Chapter 4 ARMv8 Registers then describes the registers available to you in the ARMv8 architecture.

One of the most significant changes introduced in the ARMv8 architecture is the addition of a 64-bit instruction set, which complements the existing 32-bit architecture. Chapter 5 An Introduction to the ARMv8 Instruction Sets describes the differences between the Instruction Set Architecture (ISA) of ARMv7 (A32), and that of the A64 instruction set. Chapter 6 The A64 instruction set looks at the Instruction Set and its use in more detail. In addition to a new instruction set for general operation, ARMv8 also has a changed NEON and floating-point instruction set. Chapter 7 AArch64 Floating-point and NEON describes the changes in ARMv8 to ARM Advanced SIMD (NEON) and floating-point instructions. For a more detailed guide to NEON and its capabilities at ARMv7, refer to the ARM® NEON™ Programmer’s Guide.

Chapter 8 Porting to A64 of this book covers the problems you might encounter when porting code from other architectures, or previous ARM architectures to ARMv8. Chapter 9 The ABI for ARM 64-bit Architecture describes the Application Binary Interface (ABI) for the ARM architecture specification. The ABI is a specification for all the programming behavior of an ARM target, which governs the form your 64-bit code takes. Chapter 10 AArch64 Exception Handling describes the exception handling behavior of ARMv8 in AArch64 state.

Following this, the focus moves to the internal architecture of the processor. Chapter 11 Caches describes the design of caches and how the use of caches can improve performance.

An important motivating factor behind ARMv8 and moving to a 64-bit architecture is potentially enabling access to larger address space than is possible using just 32 bits. Chapter 12 The Memory Management Unit describes how the MMU converts virtual memory addresses to physical addresses.

Chapter 13 Memory Ordering describes the weakly-ordered model of memory in the ARMv8 architecture. Generally, this means that the order of memory accesses is not required to be the same as the program order for load and store operations. Only some programmers must be aware of memory ordering issues. If your code interacts directly with the hardware or with code executing on other cores, directly loads or writes instructions to be executed, or modifies page tables, then you might have to think about ordering and barriers. This also applies if you are implementing your own synchronization functions or lock-free algorithms.

Chapter 14 Multi-core processors describes how the ARMv8-A architecture supports systems with multiple cores. Systems that use the ARMv8 processors are almost always implemented in such a way. Chapter 15 Power Management describes how ARM cores use their hardware that can reduce power use. A further aspect of power management, applied to multi-core and multi-cluster systems is covered in Chapter 16 big.LITTLE Technology. This chapter describes how big.LITTLE technology from ARM couples together an energy efficient LITTLE core with a high performance big core, to provide a system with high performance and power efficiency.

Chapter 17 Security describes how the ARMv8 processors can create a Secure, or trusted system that protects assets such as passwords or credit card details from unauthorized copying or damage. The main part of the book then concludes with Chapter 18 Debug describing the standard debug and trace features available in the Cortex-A53 and Cortex-A57 processors.

Copyright © 2015 ARM. All rights reserved.ARM DEN0024A
Non-ConfidentialID050815