Some CPU architectures employ a banked memory in which memory is divided into two banks that can be accessed independently. This allows instruction fetching (from the instruction bank) to be overlapped with data access (from the data bank).
I1: LDA X I2: STA Y
With banked memory, the CPU can run twice as fast. On such a machine, the compiler and link editor will have to put code and data in separate banks.