计算机寻址-按字节、位、字寻址

寻址

在几乎所有的机器上,多字节对象都被存储为连续的字节序列,对象的地址为所使用字节中最小的地址,毕竟位(bit)所能表示的信息太有限了(0 or 1)。

例如,在java中一个int变量占4个字节,假设一个类型为int的变量a的地址为0x100,那么,a的4个字节将被存储在存储器的0x100、0x101、0x102和0x103的位置。


现代个人计算机(PC)的存储器编址,一般是以字节为单位的,称之为按字节编址,因此字节一般也是存储器的最小存取单元以及处理器的最小寻址单位(也有按位寻址、按字寻址等等,但在个人计算机上应用不普遍)。

按字节寻址,存储空间的最小编址单位是字节,
按字编址,存储空间的最小编址单位是字,
最小编址单位的选择,和存储容量、地址总线宽度都有关联 。同样的存储容量, 粒度小了,地址长度就需要更长 。
就是根据不同的方式寻找内存地址,计算机中大多数寄存器的尺寸是一个字长。计算机处理的典型数值也可能是以字长为单位。CPU和内存之间的数据传送单位也通常是一个字长。

字(word)      占2字节
字节(byte)    占8位
位(bit)      最小的单位

比特就是 bit ,就是位。

1字=2字节
1字节=8位
1字=2*8=16位

设有一个1mb容量的存储器,字长32位,

(i)问:按字节编址,地址寄存器、数据寄存器各为多少位?

1、按字节编址 1MB = 2^20B 1个字节=8bit=1B 2^20B/1B = 2^20 地址范围为0~2^20-1 也就是说至少需要二十根地址线,地址寄存器是用来存放地址的,与存储器容量及编址方式有关,可以简单的认为地址线的个数等于地址寄存器的位数,所以地址寄存器为20位。
2、数据寄存器用来存放CPU在一个存取周期内从存储器中一次性取出为二进制位数,也就是一个机器字长,本题中字长32位,所以数据寄存器为32位。
3、寻址空间。在此需要区分清楚寻址空间与寻址范围两个不同的概念,范围仅仅是一个数字范围,不带有单位,而寻址空间指能够寻址最大容量,单位一般用MB、B来表示;本题中寻址范围为0~2^20-1,寻址空间为1MB。

(ii)问:按字节编址,字编址的寻址范围以及各自的寻址范围大小?

如果按字节编址,则

1MB = 2^20B

1字节=1B=8bit

2^20B/1B = 2^20

地址范围为0~(2^20)-1,也就是说需要二十根地址线才能完成对1MB空间的编码,所以地址寄存器为20位,寻址范围大小为2^20=1M

如果按字编址,则

1MB=2^20B

1字=32bit=4B

2^20B/4B = 2^18

地址范围为0~2^18-1,也就是说我们至少要用18根地址线才能完成对1MB空间的编码。因此按字编址的寻址范围是2^18

以上题目注意几点:

1.区分寻址空间与寻址范围两个不同的概念,寻址范围仅仅是一个数字范围,不带有单位

而寻址范围的大小很明显是一个数,指寻址区间的大小

  而寻址空间指能够寻址最大容量,单位一般用MB、B来表示;本题中寻址范围为0~(2^20)-1,寻址空间为1MB。

2.按字节寻址,指的是存储空间的最小编址单位是字节,按字编址,是指存储空间的最小编址单位是字,以上题为例,总的存储器容量是一定的,按字编址和按字节编址所需要的编码数量是不同的,按字编址由于编址单位比较大(1字=32bit=4B),从而编码较少,而按字节编址由于编码单位较小(1字节=1B=8bit),从而编码较多。

3.区别M和MB。

                        M为数量单位。1024=1K,1024K=1M

                        MB指容量大小。1024B=1KB,1024KB=1MB.


Intel公司早期的CPU产品的地址总线和地址寄存器的宽度为20位,即CPU的寻址能力为2^20=1024*1024字节=1024K字节=1M字节;

INTEL1982年推出80286芯片(简称286),其内部和外部数据总线皆为16位(也就是数据寄存器16位,字长16位)。地址总线和地址寄存器是24位(也就是可寻址16MB内存 ,即  2^24=1024*4*1024*4B=4*1024*4KB=16M;)

Intel 80386,是英特尔(Intel)公司的一款x86系列CPU。80386处理器被广泛应用在1980年代中期到1990年代中期的IBM PC兼容机中。这些PC被称为“80386电脑”或“386电脑”,有时也简称“80386”或“386”。

80386的广泛应用,将PC从16位时代带入了32位时代。80386的强大运算能力也使PC机的应用领域得到巨大扩展,商业办公、科学计算、工程设计、多媒体处理等应用得到迅速发展。

80386DX的内部和外部数据总线是32位,地址总线也是32位,可以寻址到4GB存储器,并可以管理64MB的虚拟存储空间。

80386-DX:主流版本。内部和外部数据总线都是32 位,地址总线也是32位。
80386-SX:1988年末推出的廉价版本。外部数据总线16位,地址总线24位,与80286相同,从而方便80286电脑的升级。由于内部的32位结构及其他优化设计,80386-SX性能仍大大优于80286,而价格只相当于80386-DX的三分之一,因而很受市场的欢迎。与之相配的数学辅助处理器型号为80387-SX。
80386-SL:1990年推出的低功耗版本,基于80386-SX。增加了系统管理方式(SMM)工作模式,具有电源管理功能,可以自动降低运行速度乃至休眠状态以实现节能。
80386-DL:1990年推出的低功耗版本,基于80386-DX。与80386-SL类似。

Intel里面64位CPU到奔4的D,E系列才出,前面奔2,3,4都是32位的。


参考:http://blog.sina.com.cn/s/blog_6040778d0100xycp.html

参考:https://blog.csdn.net/lishuhuakai/article/details/8934540