Re: mmu design help
Reading from eeprom is straight forward. However, the erase & program will take quite a long time and post serious performance impact on your chip if your CPU has to wait until the erase/program finishes.
My suggestion is to do simple read, but add data buffer for eeprom programming and status registers(or interrupts) such that the programmer can know when the erase/program finishes while he can do some other things (e.g. servicing interrupts, taking inputs..etc... as long as the code not trying to read eeprom region.
BTW, you can implement a state machine for EEPROM read & programming.