6.2.3. Instruction cache speculative memory accesses

An instruction remains in the pipeline between the fetch and the execute stages. Because there can be several unresolved branches in the pipeline, instruction fetches are speculative, meaning there is no guarantee that they are executed. A branch or exceptional instruction in the code stream can cause a pipeline flush, discarding the currently fetched instructions.Because of the aggressive prefetching behavior, you must not place read-sensitive devices in the same page as code. Pages with Device or Strongly-ordered memory type attributes are treated as Non-Cacheable Normal Memory. You must mark pages that contain read-sensitive devices with the TLB XN (Execute Never) attribute bit.To avoid speculative fetches to read-sensitive devices when address translation is disabled, these devices and code that is fetched must be separated in the physical memory map. See the ARM Architecture Reference Manual for more information.

Copyright © 2011-2013 ARM. All rights reserved.ARM DDI 0464F