存储容量与地址总线和数据总线的关系?!

xq7997879 2012-10-23 10:40:50
书上说 存储容量 = 存储单元个数 X 存储字长
然后 存储单元个数 = 2^地址总线数
存储字长 = 2^数据总线数

如果是这样,那么,地址总线为32位,数据总线为16位的CPU,其最大可支持的内存容量就应该是2^32 * 16bit = 64Gb = 8Gb ,对不?
那为什么现在32位的操作系统还只能支持4GB的内存呢?难道现在的数据总线都是8位?
...全文
8257 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
竹影半墙 2015-01-03
  • 打赏
  • 举报
回复
物理内存(硬件级):《计算机组成原理》 虚拟内存空间(机器程序级):《汇编语言》
skyhitnow 2014-12-26
  • 打赏
  • 举报
回复 5
内存的可寻址单元是以字节为单位,也就是说不能cpu不能单独定位某个内存位(bit)而只能一次定位道byte; 机器的字长是指cpu一次可以读入的位数;32位可以读入四个字节;64位可以读入八个字节; 为了保证可以单独寻址单个字节;内存的每个字节都需要一个地址; 这样;32为地址线接口的内存只能有2^32*8bit=4GB的容量; 如果内存的寻址单元为两个字节,那么容量可以达到8GB,但是最小的单位将变成两个字节,哪怕我们只是存入一个char,也要占用两个字节;这是个寻址粒度和容量的问题; cpu和内存之间有内存控制器吧,cpu可以一次吐出四个字节到内存控制器;内存控制器分别寻址到每个字节,然后存入内存。 我们可以让只有一条地址线的cpu支持4GB的内存,但是我们只能保存一个数据进去。
JC丶 2014-12-08
  • 打赏
  • 举报
回复
一直没有感官认识,问老师,问师兄,都没弄清楚
纵横车 2014-12-08
  • 打赏
  • 举报
回复
个人理解 比如程序里面要调用函数或使用变量等等都是通过地址寻找的(比如call xxxx)。而32位CPU的操作位数是32位的(就是xxxx是32位的数),就是从0到2^32byte的范围,就是0到4GB的范围,再多了就找不到了。
猪头三小队长 2014-03-18
  • 打赏
  • 举报
回复 1
寻址能力的单位是字节,不管cpu字长是多少。 如果单位是cpu字长,你想寻址某个单元中的某个字节得麻烦死。
__cc__ 2014-03-17
  • 打赏
  • 举报
回复
寻址单位的问题
  • 打赏
  • 举报
回复
书上说的原则上来说是对的,只是x86有些特殊而已,x86不论内存总线宽度多少(实际上从Pentium以来是64位的),内存寻址单位固定为字节。不过大多数RISC处理器为了简化设计,内存寻址单位和存储字长是一致的。
失去色彩 2014-03-15
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复 1
你这汇编是咋看的

CPU 相关的总线:数据总线、地址总线、控制总线

举例 32位 CPU

1. 不管实存 还是 虚存 (一个地址 对应 一个存储单元 等于 8bit 等于 1 byte)

2. 寻址空间(虚存) 2的32次方 bytes 等于 4GB (根据CPU的位数 已经可以计算出 虚存的容量)

虚存 = 2的 CPU位数 次方(存储单元数) × 1byte (存储单元大小)

3. 数据总线32位 意思说 你CPU 一次可以写 32位的数据,跟你寻址 空间(虚存)有叼毛关系????

4. 看看 存储字长 啥意思
存储字长:
  一个存储单元存储一串二进制代码(存储字),这串二进制代码的位数称为存储字长,存储字长可以是8位、16位、32位等。

反正我是没看懂啥意思。
我只记得 一个存储单元 大小为 1byte (一个存储单元的大小 不会 因为 CPU 而改变)
zara 2012-10-24
  • 打赏
  • 举报
回复
“存储容量 = 存储单元个数 X 存储字长”这个说法不对吧,“存储字长”应该是“寻址单元字长”(通常是字节)才对。

21,497

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧