What is the difference between branch instruction call sub routine program and interrupt?
Branch Instruction
A branch (or jump on some computer architectures, such as the
PDP-8 and Intel x86) is a point in a computer program where the
flow of control is altered. The term branch is usually used when
referring to a program written in machine code or assembly
language; in a high-level programming language, branches usually
take the form of conditional statements, subroutine calls or GOTO
statements. An instruction that causes a branch, a branch
instruction, can be taken or not taken: if a branch is not taken,
the flow of control is unchanged and the next instruction to be
executed is the instruction immediately following the current
instruction in memory; if taken, the next instruction to be
executed is an instruction at some other place in memory. There are
two usual forms of branch instruction: a conditional branch that
can be either taken or not taken, depending on a condition such as
a CPU flag, and an unconditional branch which is always taken.
Call Subroutine instructions
Call Subroutine instructions and Return From Subroutine
instructions within the instruction stream. The first stage stores
a return address in a return register when a Call Subroutine
instruction is predicted. The first stage predicts a return to the
return address in the return register when a Return From Subroutine
instruction is predicted. A second stage decodes each Call
Subroutine and Return From Subroutine instruction in order to
maintain a Return Stack Buffer that stores a stack of return
addresses. Each time the second stage decodes a Call Subroutine
instruction, a return address is pushed onto the Return Stack
Buffer. Correspondingly, each time the second stage decodes a
Return From Subroutine instruction, a return address is popped off
of the Return Stack Buffer. The second stage verifies predictions
made by the first stage and predicts return addresses for Return
From Subroutine instructions that were not predicted by the first
stage. A third stage executes Return From Subroutine instructions
such that the predictions are verified. Finally, a fourth stage
retires Return From Subroutine instructions and ensures that no
instructions fetch after a mispredicted return address are
committed into permanent state.
Program interrupt
an interrupt is an asynchronous signal from hardware indicating
the need for attention or a synchronous event in software
indicating the need for a change in execution. A hardware interrupt
causes the processor to save its state of execution via a context
switch, and begin execution of an interrupt handler. Software
interrupts are usually implemented as instructions in the
instruction set, which cause a context switch to an interrupt
handler similar to a hardware interrupt. Interrupts are a commonly
used technique for computer multitasking, especially in real-time
computing. Such a system is said to be interrupt-driven.
An act of interrupting is referred to as an interrupt request
("IRQ").