Instructions are fetched from storage and stored in the instruction
stack. Instructions fetched from storage are stored in the instruction
stack of the instruction processor. This minimises storage access time and reduces the number of instruction fetches
if executing a tight loop.
The stack contains the current instruction
doubleword, and seven double words of instructions already decoded or instructions to be
executed.
After decoding an instruction, it can be sent to one of three execution units (Instruction Processor,
Fixed-Point/VFL/Decimal, Floating Point).
During decoding of an instruction,
it needs to check that the execution unit is ready to accept the instruction, that the buffers for any operand needed are available.
It also may use its own adder to calculate an address.
Some instructions may depend on a branch instruction for execution
so they need to be marked as unconditional (UCNDL) or conditional (CNDL).
The execution units continue to function as though the instruction is to be executed but are marked as conditional.
For a store instruction, checks must be made that the address is not
one in the stack.
The instruction stack can be placed in LOOP mode when the set of instructions in
a loop all reside in the instruction stack.
Branch execution (BR-EXEC) will cause the target address to be added to the instruction stack.