统一编址和独立编址

统一编址:外设接口中的IO寄存器(即IO端口)与主存单元一样看待,每个端口占用一个存储单元的地址,将主存的一部分划出来用作IO地址空间,如,在PDP-11中,把最高的4K主存作为IO设备寄存器地址。端口占用了存储器的地址空间,使存储量容量减小。
统一编址也称为“I/O内存”方式,外设寄存器位于“内存空间”(很多外设有自己的内存、缓冲区,外设的寄存器和内存统称“I/O空间”)。

 

IO独立编址:
CPU 芯片必须有专门控制 IO 读写的引脚,CPU 必须支持对 IO 输入、输出的指令。
80x86 CPU,就具有这些特点。

存储器和 IO 统一编址:
CPU 芯片只有对存储器读写的引脚,CPU 仅有对存储器读写的指令。
这样的 CPU,只能是凑付用了,IO接口,也就只能和存储器芯片,排列在一起了。
IO端口,就会占用存储器的地址,使存储量容量减小。
追问
这样太笼统了,给我举个例子吧

某计算机的地址线为20根,若采用统一编址的方法,内存可寻址的空间小于1M

某计算机的地址线为20根,若采用独立编址的方法,内存可寻址的空间等于1M

这个是怎样算的
回答
地址线为20根,地址范围,就是:20个0~20个1。总共有 1 048 576 个地址。即 1M。

若采用独立编址的方法,IO、存储器,各有 1M。

若采用统一编址的方法,IO、存储器,共用 1M。
---------
80x86 CPU,是独立编址的。但是,对 IO 仅仅用 16 条地址线。

即:存储器,1M;  IO,64K。
追问
到1M我是理解的,而后者共用的1M我也理解了。
那么独立编制下,为什么各用1M就小于1M了?如果是各用——不应该是2M吗?
回答
独立编址的,如果都是用 20 条地址线,就是各有 1M,共 2 M。

不过,都是分开说,没有加在一起,说是 2M 的。
追问
可是我给的题目是
某计算机的地址线为20根,若采用独立编址的方法,内存可寻址的空间等于1M

是等于1M不是2M。
回答
对呀,没有错的。

某计算机的地址线为20根,若采用独立编址的方法,内存可寻址的空间等于1M。

同时,IO,可寻址的空间也等于1M。

它们,应该分开说。
没有人把它们混在一起,说是 2M 的。

 

独立编址和统一编址在程序上有什么区别,比如访问一个pci外设时,独立编址的地址时怎么样的,统一编址又是怎么样的?都说x86时冯诺依曼体系结构,是独立编址的;arm是harvard结构,是统一编址的,但是区别在那呢?这个编址是虚拟地址(mmu之上的地址)还是物理地址?

      回答:地址是针对内存和外设而言(都是指物理地址)!

独立编址:内存和外设分开独立编址(它们的地址原则上可以有重合区域);因为独立,所以内存编址可以从0~N,外设编址也可以从0~N;

统一编址:就是内存和外设的编址放到一起来规划,被外设用了的地址就不能给内存了,反之亦然! 比如:给外设分配地址0~N,那么内存就不能使用0~N了,只能使用N~M!

      针对PCI设备的访问,独立编址和统一编址的的区别在于:独立编址访问外设有专门的I/O指令(比如:x86的in/out等指令),而统一编址对外设的访问和都内存的访问指令可以是一样的(这样使用起来更方便)!

你可能感兴趣的:(冯诺依曼,哈弗体系)