存储器寻址的问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
“存储器可以按字节寻址,也可按字寻址。
”这种说法是正确的。
有些型号的计算机是按字节寻址(按字节编址,按字节访问)的,硬件实现比较简单,有多少位的地址,系统就有多少位的地址总线,CPU就有多少位的地址引脚。
按字节寻址数据传输能力小(一次一个字节)。
有些型号的计算机是按字来寻址(按字编址,按字访问)的,硬件实现也比较简单。
一个字为若干字节,按字单元编址,地址位数少,同时按字单元访问,数据位数(数据线位数)多,数据传输能力大。
也有些型号的计算机即可按字节寻址,又可按字寻址(按字节编址,按字节或字访问),硬件实现较复杂。
我们现在所用的微机就属这一类型。
在你以下所举例子中:
例如:一个1M*32位(4MB)的存储器,可以得到,该存储器有2^20个字存储单元,数据线宽度为32,地址线宽度为20。
当按字寻址时,需要20位的地址来表示一个地址编号;当按字节寻址时,则需要22位的地址来表示一个地址编号。
而地址线只有20位,如果按字节寻址的话,貌似不够。
如果用20位的地址按字节寻址4MB的内存,肯定是不够的。
若该存储器只有20位地址线既能按字寻址,又能按字节寻址,则必有控制对一个字内的四个字节的单独寻址的信号线。
下以微机系统为例加以说明。
在8086CPU中,字长为16位(2字节),CPU有20位的地址引脚(A19—A16,AD15—AD0),16位数据引脚(AD15—AD0,注意8086CPU的数据引脚和低16位地址引脚是共有的,采用分时复用的办法分别传送地址和数据)。
可以按字节或字访问1MB的的内存单元。
另外CPU 还有一个BHE引脚,它与地址引脚A0一块决定对内存的访问。
BHE A0内存访问状态
00偶地址访问内存字单元,16位数据通过16位数据引脚(AD15—AD0)传送
01奇地址访问内存字节单元,8位数据通过高8位数据引脚(AD15—AD8)传送10偶地址访问内存字节单元,8位数据通过低8位数据引脚(AD7—AD0)传送
11无操作
在80286CPU中,字长也为16位,CPU有24位地址引脚(A23—A0),16位的数据引脚(D15—D0),地址引脚和数据引脚分离,可以按字节或字访问16MB的内存。
CPU也设有
一个BHE引脚,它与地址引脚A0一块决定对内存的访问,实现方法与8086相同。
在80386CPU中,字长增加到了32位(4字节),CPU有30位地址引脚(A31—A2,而没有A1和A0噢),32位的数据引脚(D31—D0),可以按字节(8位)、半字(16位)或字(32位)访问最多为4GB的内存。
这里就出现了问题,怎样用30位地址字节访问4GB的内存呢?解决办法是80386CPU又设置了BE3—BE0四个引脚,称为是字节允许引脚(低电平有效),它们和30位的地址引脚一块儿决定对内存的访问方式(按字节、半字、字访问)。
因此80386CPU由A31—A2和BE3—BE0共同决定了对4GB内存访问的32位地址。