通常所说的32位,64位操作系统指的就是计算机内部一次性处理数据的位数,也称字长,位数越高,CPU处理数据能力越强。
以8位寄存器为例:
我们知道,
1Byte(字节) = 8bit(比特位,简称比特)
1KB = 1024B =
2
10
2^{10}
210B
1MB = 1024KB =
2
20
2^{20}
220B
所以1个字节的某一状态可由8位数(二进制,只能是0或1)组成:
如0 0 0 0 | 0 0 0 1 这8位数就代表1字节的一种状态,
8位二进制数总共能组合出
2
8
2^8
28种状态,即
2
8
2^8
28B;
同样的,16位操作系统的地址宽度为16位,
即0 0 0 0 | 0 0 0 0 | 0 0 0 0 | 0 0 0 1,这16位数就代表2个字节(1Word,即1个字)的一种状态,16位二进制数总共能组合出
2
8
∗
2
8
=
2
16
2^8*2^8=2^{16}
28∗28=216种状态,即
2
16
2^{16}
216B =
64
64
64KB,一个16位寄存器的内存为64KB就是这么来的。
由于Intel 8086的地址总线为20位,可提供20位的物理地址,可由段地址+段内偏移地址(逻辑地址)得到。
故0 0 0 0 | 0 0 0 0 | 0 0 0 0 | 0 0 0 0 | 0 0 0 1这20位数就代表8086中的一个地址,20位二进制数总共能组合出 2 4 ∗ 2 16 = 2 20 2^4*2^{16}=2^{20} 24∗216=220种状态,即 2 20 2^{20} 220B = 1024 1024 1024KB= 1 1 1MB;
所以:
8086/8088CPU的地址总线均为20位,8086/8088CPU的寻址范围为1MB;
8086有16根数据线和20根地址线,它既能处理16位数据,也能处理8位数据。可寻址的内存空间为1MB。
逻辑地址与物理地址的关系:
逻辑地址即是思维性的表示,由于8086的寄存器最大为16位,因此地址在寄存器中按16位大小存放,由段地址和偏移地址联合表示的地址类型叫逻辑地址,例如2000H:1000H(段地址:偏移地址)。
物理地址即是真实存在的唯一地址,是指的内存中各个单元的单元号,由8086有20条地址线,因此可寻址2的20次方(1MB),按2进制位表示规则,即有20位,这个就是物理地址。物理地址因为超过了寄存器大小(16位)因此无法直接存放,需要合成,公式为物理地址=段地址×10H+偏移地址,公式中的数据可从逻辑地址获得。
因此:
逻辑地址是16位的,因此范围是2的16次方,即64K。
物理地址是20位的,因此范围是2的20次方,即1M。