This would explain why, in Windows CE, Microsoft choose to allocate to Windows CE applications with a 32M "slot" of virtual memory and load DLLs at fixed address inside this "slot" (loaded DLL have a fixed virtual memory portion reserved in all running processes). Doing this, DLLs are located in the same virtual address regardless of the process.
DLLs' code are kept in cache, but applications' code not.