Professional Documents
Culture Documents
Arm7Tdmi: 1.1.1. The Instruction Pipeline
Arm7Tdmi: 1.1.1. The Instruction Pipeline
The ARM7TDMI core uses a pipeline to increase the speed of the flow of
instructions to the processor. This enables several operations to take
place simultaneously, and the processing and memory systems to operate
continuously.
The program counter points to the instruction being fetched rather than to
the instruction being executed. This is important because it means that
the Program Counter (PC) value used in an executing instruction is always
two instructions ahead of the address.
The ARM7TDMI core has a Von Neumann architecture, with a single 32-bit
data bus carrying both instructions and data. Only load, store, and swap
instructions can access data from memory.
1.2. Architecture
The ARM7TDMI processor has two instruction sets:
The Thumb instruction set is a subset of the most commonly used 32-bit
ARM instructions. Thumb instructions are each 16 bits long, and have a
corresponding 32-bit ARM instruction that has the same effect on the
processor model. Thumb instructions operate with the standard ARM
register configuration, allowing excellent interoperability between ARM
and Thumb states.
Thumb code is typically 65% of the size of ARM code, and provides 160%
of the performance of ARM code when running from a 16-bit memory
system. Thumb, therefore, makes the ARM7TDMI core ideally suited to
embedded applications with restricted memory bandwidth, where code
density and footprint is important.
The availability of both 16-bit Thumb and 32-bit ARM instruction sets
gives designers the flexibility to emphasize performance or code size on a
subroutine level, according to the requirements of their applications. For
example, critical loops for applications such as fast interrupts and DSP
algorithms can be coded using the full ARM instruction set then linked
with Thumb code.
Addressing
See Addressing modes.
modes
See the ARM Architectural Reference Manual for more information about
the ARM instruction set formats.
Note
Some instruction codes are not defined but do not cause the Undefined
instruction trap to be taken, for instance a multiply instruction with bit [6]
changed to a 1. These instructions must not be used because their action
might change in future ARM implementations. The behavior of these
instruction codes on the ARM7TDMI processor is unpredictable.