📜  内存映射的I / O和隔离的I / O

📅  最后修改于: 2021-06-28 15:55:08             🧑  作者: Mango

由于CPU需要与各种内存和输入/输出设备(I / O)通信,因为我们知道处理器和这些设备之间的数据是借助系统总线传输的。可以通过三种方式分配系统总线:

  1. 到I / O和存储器的地址,控制和数据总线的单独集合。
  2. 具有用于I / O和内存的公用总线(数据和地址),但有单独的控制线。
  3. 具有用于I / O和内存的公用总线(数据,地址和控制)。

在第一种情况下,这很简单,因为两者都有不同的地址空间和指令集,但需要更多的总线。

隔离的I / O –

然后,我们有了隔离的I / O,在其中我们具有用于I / O和内存的公共总线(数据和地址),但是具有用于I / O的单独的读写控制线。因此,当CPU解码指令时,如果数据用于I / O,则它将地址放在地址线上,并在其上设置I / O读或写控制线,因此,CPU和I / O之间会发生数据传输。由于内存和I / O的地址空间是隔离的,因此名称也是如此。 I / O的地址在此称为端口。在这里,我们对I / O和内存都有不同的读写指令。

内存映射的I / O –

在这种情况下,由于每条总线都是相同的,因此相同的指令集可用于内存和I / O。因此,我们对I / O的操作与内存相同,并且都具有相同的地址空间,由于I / O占用了某些部分,因此内存的寻址能力会降低。

内存映射的I / O和隔离的I / O之间的差异–

Isolated I/O Memory Mapped I/O
Memory and I/O have separate address space Both have same address space
All address can be used by the memory Due to addition of I/O addressable memory become less for memory
Separate instruction control read and write operation in I/O and Memory Same instructions can control both I/O and Memory
In this I/O address are called ports. Normal memory address are for both
More efficient due to separate buses Lesser efficient
Larger in size due to more buses Smaller in size
It is complex due to separate separate logic is used to control both. Simpler logic is used as I/O is also treated as memory only.