13.07.2015 Views

Intel 80200 Processor based on Intel XScale Microarchitecture

Intel 80200 Processor based on Intel XScale Microarchitecture

Intel 80200 Processor based on Intel XScale Microarchitecture

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Errata40. Store to cacheable memory, interrupted by an excepti<strong>on</strong>, may inadvertentlywrite to memoryProblem:In some cases, if a store to a cacheable regi<strong>on</strong> of memory occurs simultaneously with an excepti<strong>on</strong>,the store will not be properly cancelled and may update memory. This may occur even if the storedid not have permissi<strong>on</strong> to write to that memory regi<strong>on</strong>, and no data abort will be recorded at thetime memory is incorrectly modified. It is important that developers review this erratum and assessthe impact to their specific applicati<strong>on</strong> to ensure that no potential exists for data corrupti<strong>on</strong>.This combinati<strong>on</strong> of events is required for the erratum to occur:1. A memory operati<strong>on</strong> occurs that requires a cache line fill, which in turn causes a cache lineevicti<strong>on</strong>. For example, a load or prefetch.2. A few cycles later, an excepti<strong>on</strong> event occurs. The following excepti<strong>on</strong> events will cause theerratum: interrupt, prefetch abort, instructi<strong>on</strong> breakpoint, invalid opcode fault, and imprecisedata abort. A precise data abort may not cause the erratum.3. The instructi<strong>on</strong> which is being flushed by the excepti<strong>on</strong> event is a store to write-back memory,and the store address coincides with the cache line that is being evicted to make room for thecache line fill.4. Returning data <strong>on</strong> the bus causes a data cache stall at a specific cycle.Result:The store writes to memory when it should not. If the store is to write-back memory, the cache lineis evicted and external memory is incorrectly updated as if that store had occurred. The excepti<strong>on</strong>return points to the store instructi<strong>on</strong>.If the store is to write-through memory, the store instructi<strong>on</strong> is properly flushed and externalmemory is not updated.Memory access permissi<strong>on</strong>s are not checked before the store updates the cache. This means thestore may change memory without permissi<strong>on</strong> and without taking an abort.If the store did a pre- or post-index update <strong>on</strong> its address, the register file correctly flushes theupdate. This means that if the store is executed <strong>on</strong> return from the excepti<strong>on</strong>, correct data will bestored into memory at the correct address.Example Manifestati<strong>on</strong>s:The following examples explain how the erratum may manifest itself. The examples are intendedto help developers assess the impact up<strong>on</strong> their applicati<strong>on</strong>s. Note that this is not an exhaustive list,there may be other examples depending up<strong>on</strong> how specific applicati<strong>on</strong> code is architected.a.) Copy <strong>on</strong> Write -In a multi-tasking OS, a process has read access to a shared memory regi<strong>on</strong>, but not write access.Up<strong>on</strong> a write, the data abort handler will create a physical copy of that regi<strong>on</strong> and allow writeaccess to that new regi<strong>on</strong>.In the failing case, the shared read-<strong>on</strong>ly regi<strong>on</strong> could be updated incorrectly and without a dataabort. Eventually, when the original process is returned to, a data abort will happen, but theproblem is that the memory has already been corrupted. Linux supports Copy <strong>on</strong> Write and ifactivated, could experience the erratum. Other OSes may also be affected.b.) Flags to memory shared with interrupt handler -28 <str<strong>on</strong>g>Intel</str<strong>on</strong>g> ® <str<strong>on</strong>g>80200</str<strong>on</strong>g> <str<strong>on</strong>g>Processor</str<strong>on</strong>g> <str<strong>on</strong>g>based</str<strong>on</strong>g> <strong>on</strong> <str<strong>on</strong>g>Intel</str<strong>on</strong>g> ® <strong>XScale</strong> <strong>Microarchitecture</strong> Specificati<strong>on</strong> Update

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!