Speculative execution is when a system performs a function it does not need to.  This is done of the system speculates or expects that it will need to do it in the future. This is done to save time in the future since it allows more to be done in parallel.