The instruction cache stores the individual instructions for the CPU of the currently executing program. It is the program itself. Main memory is often totoo slow (or has too much latency) to be able to feed the CPU its next instruction every time it is ready for one. This is why a fast cache near the CPU is used, this is the instruction cache.