![](http://datasheet.mmic.net.cn/230000/79RC32438-200BB_datasheet_15568909/79RC32438-200BB_142.png)
IDT MIPS32 4Kc Processor Core
Caches
79RC32438 User Reference Manual
2 - 80
November 4, 2002
Notes
Fetch Address
Upon Reset/SoftReset, unless the EJTAGBOOT option is used, the fetch is directed to VA 0xBFC00000
(PA 0x1FC00000). This address is in kseg1, which is unmapped and uncached, so that the TLB and caches
do not require hardware unitization.
Software Initialized Processor State
Software is required to initialize the following parts of the device.
Register File
The register file powers up in an unknown state with the exception of r0 which is always 0. Initializing the
rest of the register file is not required for proper operation. Good code will generally not read a register
before writing to it, but the boot code can initialize the register file for added safety.
TLB
Because of the hidden bit indicating initialization, the 4Kc processor core does not require TLB initializa-
tion upon ColdReset. This is an implementation-specific feature of the 4Kc core.
Note:
When initializing the TLB, care must be taken to avoid creating a “TLB Shutdown”
condition where two TLB entries could match on a single address. Unique virtual addresses
should be written to each TLB entry to avoid this.
Caches
The cache tag and data arrays power up to an unknown state and are not affected by reset. Every tag in
the cache arrays should be initialized to an invalid state using the CACHE instruction (typically the Index
Invalidate function). This can be a long process, especially since the instruction cache initialization needs to
be run in an uncached address region.
Coprocessor Zero State
Miscellaneous Cop0 states need to be initialized prior to leaving the boot code. There are various
exceptions that are blocked by ERL=1 or EXL=1 and that are not cleared by Reset. These can be cleared to
avoid taking spurious exceptions when leaving the boot code.
Cause: WP (Watch Pending), SW0/1 (Software Interrupts) should be cleared.
Config: K0 should be set to the desired Cache Coherency Algorithm (CCA) prior to accessing
kseg0.
Count: Should be set to a known value if Timer Interrupts are used.
Compare: Should be set to a known value if Timer Interrupts are used. The write to compare will
also clear any pending Timer Interrupts (Thus, Count should be set before Compare to avoid any
unexpected interrupts).
Status: Desired state of the device should be set.
Other Cop0 state: Other registers should be written before they are read. Some registers are not
explicitly writable, and are only updated as a by-product of instruction execution or a taken excep-
tion. Uninitialized bits should be masked off after reading these registers.
Caches
The 4Kc processor core supports separate instruction and data caches which may be flexibly configured
at build time for various sizes, organizations, and set-associativities. The use of separate caches allows
instruction and data references to proceed simultaneously. Both caches are virtually indexed and physically
tagged, allowing cache access to occur in parallel with virtual-to-physical address translation. The instruc-
tion and data caches are independently configured. Each cache is accessed in a single processor cycle.