独立编址和统一编址在程序上有什么区别,比如访问一个pci外设时,独立编址的地址时怎么样的,统一编址又是怎么样的?都说x86时冯诺依曼体系结构,是独立编址的;arm是harvard结构,是统一编址的,但是区别在那呢?这个编址是虚拟地址(mmu之上的地址)还是物理地址?
回答:地址是针对内存和外设而言(都是指物理地址)!
独立编址:内存和外设分开独立编址(它们的地址原则上可以有重合区域);因为独立,所以内存编址可以从0~N,外设编址也可以从0~N;
统一编址:就是内存和外设的编址放到一起来规划,被外设用了的地址就不能给内存了,反之亦然! 比如:给外设分配地址0~N,那么内存就不能使用0~N了,只能使用N~M!
针对PCI设备的访问,独立编址和统一编址的的区别在于:独立编址访问外设有专门的I/O指令(比如:x86的in/out等指令),而统一编址对外设的访问和都内存的访问指令可以是一样的(这样使用起来更方便)!