当前位置: 代码迷 >> 嵌入开发 >> 关于存储器跟寻址的疑问
  详细解决方案

关于存储器跟寻址的疑问

热度:3916   发布时间:2013-02-26 00:00:00.0
关于存储器和寻址的疑问?
32位机的存储字长是32位,也就是一次读写32位。那么怎么实现读写一个字节呢?主存的编址方式是怎样的?若按字节编址,好像可以读写一个字节,但存储字长是32位的啊?还有数据总线的宽度是多少呢?如果也是32位,那怎么传送一个字节呢?
------解决方案--------------------------------------------------------
建议楼主去看下 内存对齐,32bit的cpu一次不可能只取到一个字节,只不过是取到四个字节只用一个字节罢了。
------解决方案--------------------------------------------------------
引用:
32位机的存储字长是32位,也就是一次读写32位。那么怎么实现读写一个字节呢?主存的编址方式是怎样的?若按字节编址,好像可以读写一个字节,但存储字长是32位的啊?还有数据总线的宽度是多少呢?如果也是32位,那怎么传送一个字节呢?

32位机的存储字长是32位:存储字长是不是说一次存储的数据长度?应该是说总线宽度是32位?
也就是一次读写32位:不一定哦,x86还有MMX指令,SSE指令,每次读写不一定是32位。
那么怎么实现读写一个字节呢:对于读,直接将数据送到总线上,然后数据载入模块根据读取的地址最低2位(假设总线宽度32bits)选择一个数据然后进行0扩展或者符号扩展送入寄存器。对于写,要看具体处理器写模式,不展开了,你可以研究一下cache和写缓冲等相关计算机体系结构
主存的编址方式是怎样的?若按字节编址,好像可以读写一个字节,但存储字长是32位的啊:存储永远都是8bits的(事实上有些处理器的指令并非8bits对齐,这个也不展开了)。
还有数据总线的宽度是多少呢?如果也是32位,那怎么传送一个字节呢:大多数都是传送多个字节,然后选择出想要的字节或半字或字。
  相关解决方案