Cache (Overview)

Introduction

ARM9 has a cache mechanism that can be used to boost the efficiency of local memory access. The ARM9 cache is comprised of 8KByte of instruction cache and 4KByte of data cache.

These functions belong to the OS category of functions but they have special applications. Accordingly, the data cache-related function names do not begin with OS_ but with DC_, and the instruction cache-related functions are named beginning with IC_.


Settings to Enable/Disable Data Cache

DC_Enable() enables data cache.

DC_Disable() disables data cache.

DC_Restore() sets the state to either enable or disable, as specified.

Even if these instructions are set to enable data cache, the switch from the disabled state to the enabled state will not occur if the Protection Unit has been configured to disable data cache.


Data Cache Operations

DC_InvalidateAll() destroys all data in data cache.
DC_InvalidRange() destroys data in a specified region of data cache.

DC_StoreAll() writes back all data in data cache.
DC_StoreRange() writes back data in a specified region of data cache.

DC_FlushAll() writes back and destroys all data in data cache.
DC_FlushRange() writes back and destroys data in a specified region of data cache.

DC_TouchRange() preloads a specified region of data into data cache.

DC_LockdownRange() locks the data in a specified region of data cache so it cannot be replaced with other cache.

DC_WaitWriteBufferEmpty() checks whether the write buffer is empty after writing back cache.


Settings to Enable/Disable Instruction Cache

IC_Enable() enables instruction cache.

IC_Disable() disables instruction cache.

IC_Restore() sets the state to either enable or disable, as specified.

Even if these instructions are set to enable instruction cache, the switch from the disabled state to the enabled state will not occur if the Protection Region has been configured to disable instruction cache.


Instruction Cache Operations

IC_InvalidateAll() destroys all data in instruction cache.

IC_InvalidateRange() destroys data in a specified region of instruction cache.

IC_PrefetchRange() preloads a specified region of instruction code into instruction cache.

IC_LockdownRange() locks the data in a specified region of instruction cache so it cannot be replaced with other cache.

See Also

OS Function List (Cache)

Revision History

12/16/2004 Initial version.