IDT MIPS32 4Kc Processor Core
Functional Overview
79RC32438 User Reference Manual
2 - 4
November 4, 2002
Notes
information, the divider will skip 7, 15, or 23 iterations respectively (out of a total of 32 iterations). An
attempt to issue a subsequent MDU instruction while a divide is still in progress causes a pipeline stall until
the divide operation is completed.
An additional multiply instruction, MUL, is implemented. This instruction specifies that the lower 32 bits
of the multiply result be placed in the register file instead of the HI/LO register pair. By avoiding the explicit
move from the LO (MFLO) instruction (required when using the LO register) and by supporting multiple
destination registers, the throughput of multiply-intensive operations is increased.
Two instructions, multiply-add (MADD/MADDU) and multiply-subtract (MSUB/MSUBU), are used to
perform the multiply-add and multiply-subtract operations. The MADD instruction multiplies two numbers
and then adds the product to the current contents of the HI and LO registers. Similarly, the MSUB instruc-
tion multiplies two operands and then subtracts the product from the HI and LO registers. The MADD/
MADDU and MSUB/MSUBU operations are commonly used in Digital Signal Processor (DSP) algorithms.
System Control Coprocessor (CP0)
In the MIPS architecture, CP0 is responsible for the virtual-to-physical address translation, cache proto-
cols, the exception control system, the processor’s diagnostics capability, operating mode selection (kernel
vs. user mode), and the enabling/disabling of interrupts. Configuration information, such as cache size, set
associativity, and EJTAG debug features, is available by accessing the CP0 registers. Additional informa-
tion on CP0 registers can be found in the CP0 Registers section. Additional information on EJTAG can be
found in Chapter 20.
Memory Management Unit (MMU)
Each core contains an MMU that interfaces between the execution unit and the cache controller, shown
in Figure 2.1. Although the 4Kc core implements a 32-bit architecture, the Memory Management Unit
(MMU) is modeled after the MMU found in the 64-bit R4000 family, as defined by the MIPS32 architecture.
The 4Kc core implements an MMU based on a Translation Lookaside Buffer (TLB). The TLB actually
consists of three translation buffers: a 16 dual-entry fully associative Joint TLB (JTLB), a 3-entry fully asso-
ciative Instruction TLB (ITLB), and a 3-entry fully associative data TLB(DTLB). The ITLB and DTLB, also
referred to as the micro TLBs, are managed by the hardware and are not software visible. The micro TLBs
contain subsets of the JTLB. When translating addresses, the corresponding micro TLB (I or D) is accessed
first. If there is no matching entry, the JTLB is used to translate the address and refill the micro TLB. If the
entry is not found in the JTLB, an exception is taken. To minimize the micro TLB miss penalty, the JTLB is
looked-up in parallel with the DTLB for data references. This results in a 1 cycle stall for a DTLB miss and a
2 cycle stall for an ITLB miss.
Figure 2.2 shows how the ITLB, DTLB, and JTLB are used in the 4Kc core.