Instruction Cycle Operations
ARM7TDMI Data Sheet
ARM DDI 0029E
10-4
O
Notes:
1
W and w represent the instruction width before and after the BX respectively.
In ARM state the width equals 4 bytes and in THUMB state the width equals
2 bytes. For example, when changing from ARM to THUMB state, W would
equal 4 and w would equal 2.
2
I and i represent the memory access size before and after the BX respectively.
In ARM state, the MAS[1:0] is 2 and in THUMB state MAS[1:0] is 1. When
changing from THUMB to ARM state, I would equal 1 and i would equal 2.
3
T and t represent the state of the TBIT before and after the BX respectively.
In ARM state TBIT is 0 and in THUMB state TBIT is 1. When changing from
ARM to THUMB state, T would equal 0 and t would equal 1.
10.5 Data Operations
A data operation executes in a single datapath cycle except where the shift is
determined by the contents of a register. A register is read onto the A bus, and a
second register or the immediate field onto the B bus. The ALU combines the A bus
source and the shifted B bus source according to the operation specified in the
instruction, and the result (when required) is written to the destination register.
(Compares and tests do not produce results, only the ALU status flags are affected.)
An instruction prefetch occurs at the same time as the above operation, and the
program counter is incremented.
When the shift length is specified by a register, an additional datapath cycle occurs
before the above operation to copy the bottom 8 bits of that register into a holding latch
in the barrel shifter. The instruction prefetch will occur during this first cycle, and the
operation cycle will be internal (ie will not request memory). This internal cycle can be
merged with the following sequential access by the memory manager as the address
remains stable through both cycles.
The PC may be one or more of the register operands. When it is the destination,
external bus activity may be affected. If the result is written to the PC, the contents of
the instruction pipeline are invalidated, and the address for the next instruction
prefetch is taken from the ALU rather than the address incrementer. The instruction
pipeline is refilled before any further execution takes place, and during this time
exceptions are locked out.
Cycle
Address
MAS [1:0]
nRW
Data
nMREQ
SEQ
noPC
TBIT
1
pc + 2W
I
0
(pc + 2W)
0
0
0
T
2
alu
i
0
(alu)
0
1
0
t
3
alu+w
i
0
(alu+w)
0
1
0
t
alu + 2w
Table 10-3: Branch and Exchange instruction cycle operations