Because the Pentium is a CISC processor, most instructions perform more than one operation. For example, the ADD instruction not only adds two values together, it also produces a number of condition- code flags that tell programs whether the addition produced a zero or negative result. Such codes are used, for example, to determine if a program performs a conditional jump. Most of the time these codes are ignored. It then generates PowerPC code for those flags actually used.
Operating systems use the MMU to implement virtual memory and memory protection.
Because of the Pentium's small register file, about three in four Pentium instructions reference memory in one way or another. Each memory address potentially needs to be translated before the emulator loads from, or stores to, the referenced address. An MMU implemented in software would impose a high overhead, which would degrade performance. Every memory reference, such as instruction fetches, stack operations, loads, and stores, has an associated memory segment. Therefore, the Pentium emulator must detect segment bound faults where appropriate.