- Register and Memory Increases
- Virtual Memory Design
- Instruction Encodings
- Floating-Point Enhancements / Cryptographic Support
- Mixing 32-bit Code / The Future
Mixing 32-bit Code
Current ARM chips let you mix Thumb-2 and ARM code in the same program easily. Variants of the branch instructions toggle between ARM and Thumb-2 modes based on the value of the lowest bit of the destination address.
There is no equivalent for mixing 32-bit and 64-bit code. You can run both on the same chip, but they must be in separate processes. There is also no Thumb-3 giving a shorter encoding for common 64-bit operations, although I wouldn't be surprised if this appears in a future revision once they've had more time to work out exactly which subset of the AArch64 instruction set compilers like to generate.
Overall, ARMv8 looks like a well-designed architecture. My inner assembly programmer will miss the predicated instructions and load/store multiple instructions, but I won't miss them too much as a compiler writer, and the tagged pointers more than make up for their loss.
The built-in hypervisor support will be very popular for mobile phones, making it easy to implement a small real-time hypervisor and a lightweight (probably 32-bit) OS to control the radio and a heavier general-purpose OS for the user interface.
Of course, until the full specifications are released and real silicon starts to hit the market, we won't see for certain, but it looks as if ARMv8 is positioned to push ARM into the low-power server market, giving handheld systems a lot of headroom.