由于CPU需要与各种内存和输入/输出设备(I / O)通信,因为我们知道处理器和这些设备之间的数据是借助系统总线传输的。可以通过三种方式分配系统总线:
- 到I / O和存储器的地址,控制和数据总线的单独集合。
- 具有用于I / O和内存的公用总线(数据和地址),但有单独的控制线。
- 具有用于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. |