Open main menu

CDOT Wiki β

Changes

ARMv8

117 bytes added, 21:33, 5 October 2022
big.LITTLE
ARM architecture version 8 -- known as ARMv8 -- was introduced in ~2012 and is just starting to appear in the market as of 2013/2014.
ARMv8 has two execution states which support 3 three [[Instruction Set Architecture|Instruction Set Architectures]]:
=== AArch32 Execution State ===
AArch32 is a 32-bit execution state which supports these instruction sets:
* T32 (Thumb) - a mixed 16- and 32-bit fixed-length instruction set for increased code density, previously referred to as Thumb2.
=== AArch64 Execution State ===
AArch64 is a 64-bit execution state which supports these instruction sets:
* A64 - a 64-bit capable instruction set encoded into 32-bit fixed-length instructions.
There are different ''profiles'' for ARMv8 devices, including:
* ARMv8A Armv8-A - ''Application'' - For user-level application processors, i.e., servers, smartphones, tablets. ARMv8-A devices support the AArch64 instruction state, and may optionally support the AArch32 instruction state.* ARMv8R Armv8-R - ''Real-time'' - For real-time applications, which require that hardware events (such as interrupts) receive a response within a (short) hard deadline, such as a fuel injection system. ARMv8-R devices support only the AArch32 execution state, and do not support the AArch64 execution state.* Armv8-M - '' Microcontroller'' - For small embedded / microcontroller applications.
== AArch32 and AArch64 Support on ARMv8 in Linux ==
* Early ARM chips had numbers that were different from the corresponding architecture levels. For example, the ARM11 processor is an ARMv6 chip, which is much lower-performing than other parts with lower numbers, including the ARMv7-level Cortex-A5, -A7, -A8, and -A9 devices.
* Cortex designations are not in order of release date, features, or power consumption, and are only loosely in order by performance. Cortex-A8 (single-core only) and Cortex-A9 (available in single- and multi-core) are some of the older designs in the series; Cortex-A15 chips add hardware virtualization support. The ARMv7 (32 bit) Cortex-A12, Cortex-A7, and Cortex-A5 designs followed, with varying power/performance profiles. Cortex-A35, -A53, -A55, -A57, -A72, -A73, -A75, and -A76 chips are ARMv8A.
* Other companies have introduced chips with confusingly similar designations. The Apple A7 chip is /A8/A9/A10/... chips are not an ARM design designs and has have nothing to do with the similarly-named Cortex-A7 /-A9/... (or any other Cortex corecores); it the Apple A7, for example, is roughly in the same performance category as a dual-core Cortex-A53. Allwinner and AMD have also used chip designations starting with A (Allwinner A10, A20, and A80, and AMD Opteron A1100, for example); these are unrelated to the Apple A-series chips and to the Cortex A designations. Likewise, the Nvidia K1 is unrelated to the AMD K12.
== big.LITTLE and DynamIQ==
ARM cores may be combined in compatible groups of higher-performance/high-consumption and lower-performance/lower-consumption devices. These configurations are were enabled by a technology which Arm called big.LITTLE, and a related but newer cluster technology which Arm calls DynamIQ.
Typical pairings are:* Cortex-A17 and Cortex-A7* (Cortex-A76, -A75, -A73, -A72, or -A57) and (Cortex-A35 or Cortex-A53) The advantage to big.LITTLE /DynamIQ lies in the ability to turn off cores that are not needed. Thus, when a device such as a cellphone is performing background tasks (screen off), one little core may be used; when the device is performing basic tasks, a couple of little cores or one big core may be used; and when very demanding tasks are performed, several big cores (or all of the cores) may be turned on.
Balancing power vs. performance can be very difficult - for example, will it require less energy to keep a little core on constantly to perform a background task, or run a big core for a fraction of a second every few seconds and sleep all of the cores the rest of the time? Issues such as core affinity and cache coherency also play into balancing decisions.
Wikipedia has a [http://en.wikipedia.org/wiki/ARM_big.LITTLE page on big.LITTLE] that includes a list of known implementations.
 
Arm's dyanamIQ technology is an evolution of the big.LITTLE concept.