2 instruction cache control, 1 instruction cache state at reset, 2 enabling/disabling – Intel NETWORK PROCESSOR IXP2800 User Manual

Page 92: 3 invalidating the instruction cache, 4 locking instructions in the instruction cache, Instruction cache control 3.4.2.1, Instruction cache state at reset, Enabling/disabling, Invalidating the instruction cache, Locking instructions in the instruction cache

Advertising
background image

92

Hardware Reference Manual

Intel

®

IXP2800 Network Processor

Intel XScale

®

Core

3.4.2

Instruction Cache Control

3.4.2.1

Instruction Cache State at Reset

After reset, the instruction cache is always disabled, unlocked, and invalidated (flushed).

3.4.2.2

Enabling/Disabling

The instruction cache is enabled by setting bit 12 in coprocessor 15, register 1 (Control register).
This process is illustrated in

Example 18

.

3.4.2.3

Invalidating the Instruction Cache

The entire instruction cache along with the fetch buffers are invalidated by writing to
coprocessor 15, register 7. This command does not unlock any lines that were locked in the

instruction cache nor does it invalidate those locked lines. To invalidate the entire cache including

locked lines, the unlock instruction cache command needs to be executed before the invalidate
command.

There is an inherent delay from the execution of the instruction cache invalidate command to

where the next instruction will see the result of the invalidate. The routine in

Example 19

can be

used to guarantee proper synchronization.

The Intel XScale

®

core also supports invalidating an individual line from the instruction cache.

3.4.2.4

Locking Instructions in the Instruction Cache

Software has the ability to lock performance critical routines into the instruction cache. Up to

28 lines in each set can be locked; hardware will ignore the lock command if software is trying to
lock all the lines in a particular set (i.e., ways 28 – 31can never be locked). When this happens, the

line is still allocated into the cache, but the lock will be ignored. The round-robin pointer will stay

at way 31 for that set.

Lines can be locked into the instruction cache by initiating a write to coprocessor 15. Register Rd
contains the virtual address of the line to be locked into the cache.

Example 18. Enabling the Instruction Cache

; Enable the ICache

MRC P15, 0, R0, C1, C0, 0

; Get the control register

ORR R0, R0, #0x1000

; set bit 12 -- the I bit

MCR P15, 0, R0, C1, C0, 0

; Set the control register

CPWAIT

Example 19. Invalidating the Instruction Cache

MCR P15,0,R1,C7,C5,0

; Invalidate the instruction cache and branch

; target buffer

CPWAIT

; The instruction cache is guaranteed to be invalidated at this point; the next

; instruction sees the result of the invalidate command.

Advertising