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.
See 360/195 Functional Characteristics for more detailed information.