
. . . . .
W O R K I N G W I T H T H E C P U
Noncachable instruction fetches
www.digiembedded.com
133
In this figure:
A = log
2
associativity
For example, with a 4-way cache A = 2:
S = log
2
NSETS
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
N o n c a c h a b l e i n s t r u c t i o n f e t c h e s
The ARM926EJ-S processor performs speculative noncachable instruction fetches to
increase performance. Speculative instruction fetching is enabled at reset.
Note:
It is recommended that you use ICache rather than noncachable code, when
possible. Noncachable code previously has been used for operating system
boot loaders and for preventing cache pollution. ICache, however, can be
enabled without the MMU being enabled, and cache pollution can be
controlled using the cache lockdown register.
Self-modifying
code
A four-word buffer holds speculatively fetched instructions. Only sequential
instructions are fetched speculatively; if the ARM926EJ-S issues a nonsequential
instruction fetch, the contents of the buffer are discarded (flushed). In situations on
which the contents of the prefetch buffer might become invalid during a sequence
of sequential instruction fetches by the processor core (for example, turning the
MMU on or off, or turning on the ICache), the prefetch buffer also is flushed. This
avoids the necessity of performing an explicit Instruction Memory Barrier (IMB)
operation, except when self-modifying code is used. Because the prefetch buffer is
flushed when the ARM926EJ-S core issues a nonsequential instruction fetch, a
branch instruction (or equivalent) can be used to implement the required IMB
behavior, as shown in this code sequence:
LDMIA
R0,{R1-R5}
; load code sequence into R1-R5
ADR
R0,self_mod_code
STMIA
R0,{R1-R5}
; store code sequence (nonbuffered region)
B
self_mod_code
; branch to modified code
self_mod_code:
This IMB application applies only to the ARM926EJ-S processor running code from a
noncachable region of memory. If code is run from a cachable region of memory, or
a different device is used, a different IMB implementation is required. IMBs are
discussed in "Instruction Memory Barrier," beginning on page 134.
Summary of Contents for NS9215
Page 1: ...NS9215 Hardware Reference 90000847_C Release date 10 April 2008...
Page 3: ......
Page 4: ......
Page 26: ...26 Hardware Reference NS9215...
Page 44: ...P I N O U T 26 5 System clock 44 Hardware Reference NS9215 System clock drawing...
Page 52: ...P I N O U T 26 5 Power and ground 52 Hardware Reference NS9215...
Page 80: ...I O C O N T ROL M O D U L E Memory Bus Configuration register 80 Hardware Reference NS9215...
Page 136: ...WOR KI N G W I TH T H E C P U Noncachable instruction fetches 136 Hardware Reference NS9215...
Page 202: ...S Y S T E M C O N T RO L M OD U L E RTC Module Control register 202 Hardware Reference NS9215...
Page 354: ...E X T E R N A L D M A DMA Peripheral Chip Select register 354 Hardware Reference NS9215...
Page 472: ...R E A L TI M E C L O C K M O D U L E General Status register 472 Hardware Reference NS9215...
Page 512: ...TI M I NG Clock timing 512 Hardware Reference NS9215...
Page 515: ...PA CKA GING Processor Dimensions www digiembedded com 515...
Page 516: ...PA CKA GING Processor Dimensions 516 Hardware Reference NS9215...