Speculative data fetching on ARMv7-M

I am working with an ARMv7-M with a cache and trying to workout how the Speculative data fetching works or at least understand it.

The only documentation I can find for it is a small section in ARM®v7-M Architecture Reference Manual.

Any resources to help understand it or anyone know how data is selected for speculative fetching?