Lecture02 FundamentalsOfComputerDesign
Lecture02 FundamentalsOfComputerDesign
Computer Design
Module 2
• A simple data processing instruction may have the following format, where Operand2
may be a register or immediate value.
We could now
execute a simple
sequence of ALU
operations.
Although, we do
not yet have
access to data
memory and can’t
branch!
Here, we assume
a simple “branch
if equal to zero”
instruction.
• Amdahl’s law provides a simple way of calculating the performance gain that can be
obtained by improving an element of a computer system.
Armv1 – 1985
Armv2 – 1989
Armv3 – 1991
Armv4 – 1996
2000
2004
2006
30 © 2021 Arm Limited
Announced 2011
A64 Instructions
• 64-bit pointers and registers
• Fixed-length 32-bit instructions
• Load/store architecture
• Simple addressing modes
• 32 x 64-bit general-purpose registers (including the R31 the zero/stack register)
• The PC cannot be specified as the destination of a data processing instruction or load
instruction.
In the AArch64 Execution state, each register (X0-X30) is 64-bits wide. The increased width
(vs. 32-bit) helps to reduce register pressure in most applications.
Each 64-bit general-purpose register (X0 - X30) also has a 32-bit form (W0 - W30).
Zero register – X31
63 32 31 0
Wn
B <offset>
PC relative branch (+/- 128MB)
BL <offset>
Similar to B, but also stores return address in LR (link register), likely a function call
BR Xm
Absolute branch to address stored in Xm
BRL Xm
Similar to BR, but also stores return address in LR
Subroutine calls:
The Link Register (LR) stores the return address when a subroutine call is made. This is
then used at the end of our subroutine to return back to the instruction following our
subroutine call.
O. Azizi, A. Omid & A. Mahesri, M. Aqeel & B. Lee, L. Benjamin & S. Patel, P.
Sanjay & M. Horowitz. Energy-performance tradeoffs in processor
architecture and circuit design: A marginal cost analysis, 2010. ACM
SIGARCH Computer Architecture News. 38. 26-36.
10.1145/1815961.1815967.
43 © 2021 Arm Limited
AArch64 – How Does It Differ from Older Arm ISAs?
• Conditional execution mostly dropped
• No free shifts in arithmetic instructions
• Program counter not a part of integer register set
• No load/store multiple instructions
• Adopts a more regular instruction encoding