I'm wondering what the exact reason was to implement a separate address space and instruction set for IO devices, especially the x86 architecture.
Linux Device Drivers [Chp. 9] remains stating some manufacturers "decided that peripheral devices are different from memory and, therefore, deserve a separate address space". What aspect is meant by this, can someone clarify and give background?