- 论坛徽章:
- 0
|
不要混肴概念
感谢大家的回答,有了部分概念了。我一直在这个问题上迷糊,因为我们我觉得对外设访问只要in,out指令就可以了,既然外设编址也和内存一样,16位地址线形成的io地址空间访问,只要用in al,dx(地址)就好了,可是像cmos只有两个端口,那就只有两个地址形成的寄存器,为什么我们可以访问128位字节,而且是叫送地址,读数据。128字节这样说来就不是io space里面的内容了?像pci设备也一样
对于CMOS,PCI,USB,硬盘,软盘,光驱,网卡,显卡等等诸如此类设备,设备内部本身就有比较大的需要访问的空间。但是从CPU看来,只有几个访问窗口来访问这些设备。这些窗口地址就是前面提到的那些设备识别地址了(代表了该外部设备)。至于设备内部的地址,对CPU来说,它并不关心,也跟它没关系!
以这里CMOS来说,内部访问的128字节是CMOS芯片自己管理的,跟CPU没关系。CPU管理CMOS靠它提供的访问窗口!
这个访问窗口在实现技术上就是间接寻址技术。
那么为什么要这么做呢,原因是CPU的访问空间有限,比如这里的I/O SPACE,仅仅只要16位,如果每个外部设备都把自己内部的空间开放给CPU,那么显然是不够的,而且也没必要。看看一个PCI设备就要占多少???硬盘空间多少??
随着外部设备的增多,CPU的I/O空间就越紧俏。这时用间接寻址来扩展其I/O空间。
[ 本帖最后由 fineamy 于 2008-10-24 21:23 编辑 ] |
|