PCI编址

设备可以直接挂在CPU总线上,为什么不呢?

因为不可知。

未来的设备,设计时并不知道。第一不知道有些什么设备,第二不知道设备是什么样子。所以没有办法编址。更没有办法连接比如留出预定的端口。

系统可以暴露所有的地址端口。然后我们把设备直接插上去就可以了。这样我们把64K全部扫描一遍就可以发现所有的硬件。但是这需要一个巨大无比的插座。所以必须抽象化。?

事实上我觉得这会是一个很好的做法。因为简单。

另一个问题来自统一编址的处理器。统一编址可以寻址4G,这样就没有办法做大插座了。一句话,还是要抽象化。映射。将内存映射到设备,将IO端口映射到设备。

不是将设备映射到内存,不是将设备映射到IO。

PCI本来设计了一个IO空间。专为x86设计的,但是电脑制造商都不用这个。都是把PCI接在内存上。所以IO空间成了摆设。

这样就解释了PCI的三个空间。

PCI的内存空间有4G大。但是电脑制造商不一定映射了那么多内存也就是把PCI接上了那么多内存。内存寻址是硬寻址,接就有不接就没有。所以MMIO是硬映射。这一点要搞清楚。所以有多少是多少,用多少。

再者就是io空间与内存空间虽是软寻址,但是其地址却是“硬”地址。这充分表明PCI并不想建立一个新的地址系统。以及它的真正目的真的是“外围设备互联”。即就是互联。建立一个连接架构。除此之外什么都不改变。





你可能感兴趣的:(PCI编址)