The present invention presents a non-volatile memory system that adapts
its performance to one or more system related situation. If a situation
occurs where the memory will require more than the allotted time for
completing an operation, the memory can switch from its normal operating
mode to a high performance mode in order to complete the operation
quickly enough. Conversely, if a situation arises where reliability could
be an issue (such as partial page programming), the controller could
switch to a high reliability mode. In either case, once the trigging
system situation has returned to normal, the memory reverts to the normal
operation. The detection of such situations can be used both for
programming and data relocation operations. An exemplary embodiment is
based on firmware programmable performance.