A flash microcontroller has a Static Random-Access-Memory (SRAM) buffer
that stores several blocks of boot code read from a flash memory. The
SRAM buffer also operates as a cache of flash data after booting is
complete. Cache read and write hits use the SRAM cache rather than flash
memory, while old cache lines and read misses access the flash memory.
Both the external host and the microcontroller are booted from boot code
buffered in the SRAM buffer. A boot-loader state machine reads the flash
ID and programs flash parameter registers with timing parameters for the
flash memory. The flash microcontroller uses a differential interface to
the external host, with a differential transceiver and a differential
serial interface. Frame, packet, and encoded clock processing is also
performed by the serial interface.