separate virtmem engine from user code; add write + writeback to cache