0

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?

e1kable
  • 1
  • 1
  • https://en.wikipedia.org/wiki/Memory-mapped_I/O – Matt Oct 17 '15 at 11:44
  • well, this explains why port-mapped IO became obsolete but why where extra instructions implemented like `in` and `out` if the memory instructions could be used to access it? – e1kable Oct 17 '15 at 12:08
  • @e1kable Now it's just for the sake of compatibility. What was the primary motivation for the original design is moslty a historical question. Maybe the lack of free address space, or an attempt to protect I/O ports etc. – Matt Oct 17 '15 at 12:28
  • @e1kable Port-mapped I/O is not really obsolete. It is still used to program external controllers. There are many slow and/or rare operations out of there. Only fast I/O operations need direct memory access. – Matt Oct 17 '15 at 12:34

0 Answers0