为什么有些处理器为IO设备实现单独的地址空间?

为什么有些处理器为IO设备实现单独的地址空间?,io,x86,address-space,cpu-architecture,Io,X86,Address Space,Cpu Architecture,我想知道为IO设备(尤其是x86体系结构)实现单独的地址空间和指令集的确切原因是什么 Linux设备驱动程序仍然声明一些制造商“认为外围设备不同于内存,因此应该有一个单独的地址空间”。 这是什么意思,有人能澄清一下并给出背景吗?这解释了端口映射IO为什么会过时,但为什么在执行额外指令时,如in和out,如果可以使用内存指令访问它?@e1kable现在只是为了兼容性。最初设计的主要动机是什么?这几乎是一个历史问题。可能是因为缺少可用地址空间,或者试图保护I/O端口等。@e1kable端口映射I/O

我想知道为IO设备(尤其是x86体系结构)实现单独的地址空间和指令集的确切原因是什么

Linux设备驱动程序仍然声明一些制造商“认为外围设备不同于内存,因此应该有一个单独的地址空间”。
这是什么意思,有人能澄清一下并给出背景吗?

这解释了端口映射IO为什么会过时,但为什么在执行额外指令时,如
in
out
,如果可以使用内存指令访问它?@e1kable现在只是为了兼容性。最初设计的主要动机是什么?这几乎是一个历史问题。可能是因为缺少可用地址空间,或者试图保护I/O端口等。@e1kable端口映射I/O并非真正过时。它仍然用于对外部控制器进行编程。有许多缓慢和/或罕见的操作。只有快速I/O操作需要直接内存访问。