The ALU is not a potentially conflicting resource, as it is fully controlled by pipeline stage s5.
There are two ALU operands. The first operand is taken either from RF read port 1, if it's an 8 bit operand, or taken from RF read port 1 (lower 8 bits) and from RF read port 2 (higher 8 bits), if it's a 16 bit operand. The second operand is taken either from the RF read port 2 or directly from the instruction opcode; it is always 8 bit-wide.
Both operands are fed to the ALU through the Bypass Unit.
All ALU-requiring instructions write their result into the Bypass Unit.
Details about the ALU hardware resource (connectivity, ALU opcodes) can be found here.
Instructions that make use of the ALU-related pipeline registers:
ADD, ADC, ADIW
SUB, SUBI, SBC, SBCI, SBIW
OR, ORI, EOR
COM, NEG, CP, CPC, CPI, SWAP
LSR, ROR, ASR
MUL, MULS, MULSU
FMUL, FMULS, FMULSU
Plugging the ALU into the pipeline
The pipeline registers related to ALU access are presented in the picture below.
From this picture, it can also easely figured out instructions' timing.
Generated on Tue Dec 31 20:26:31 2002 for Pipelined AVR microcontroller by
@Importing into repository the new directory structure.