为什么字节可寻址的内存而不是4字节可寻址的内存?

时间:2009-10-19 04:24:18

标签: memory

为什么计算机具有字节可寻址的内存,而不是4字节可寻址的内存(或64位的8字节可寻址内存)?是的,我看到它有时是多么有用,它看起来不那么优雅和过分。这些优势是实质性的,还是仅仅因为遗产?

3 个答案:

答案 0 :(得分:8)

处理器实际上 以64位的数量访问内存(自Pentium以来x86就是这样); 64位处理器通常具有128位总线。此外,在访问主内存时,您会有一些填充整个缓存行的突发,这甚至是更大的内存单元。

它只是基于字节的寻址;这增加了很少的开销,并且根本没有过多。

今天,您绝对需要基于字节的寻址用于网络协议。使用基于字的寻址实现TCP将是困难的:如果你收到17字节的内容,你想要read()返回什么?同样,更高层是基于字节的:如果您以四个字节为单位显示“GET / HTTP / 1.0”之类的请求行,则HTTP将很难实现。你本质上必须通过移位操作等将这些单词拆分回字节(现在由于基于字节的寻址,处理器在硬件中执行)。

答案 1 :(得分:7)

很大程度上是历史原因 - 它已成为CPU理解的标准。 Here是一个很好的讨论:

  

通常,必须选择尺寸   方便数据和   机器说明。 8位(256位   值)足以容纳   英语和一些常见字符   其他语言。 8位设计师   处理器大概发现存在   能够编码256条常用指令   因为一个字节是“合理的   权衡“。当时,8位是   通常也足以编码其他   诸如像素颜色之类的东西   屏幕坐标。有一个字节大小   那也就是2的力量   被认为是一个“整洁”的设计。它   有趣的是,为了   例如,Marxer,E。(1974),Elements   数据处理,描述一个字节   为6位和8位   取决于计算机是否   “八进制”或“十六进制”类型。

当然,早期还使用了其他尺寸。

答案 2 :(得分:0)

我们需要在某种程度上适应标准化。由于Shane上面提到的原因,人们选择了8位大小。从那时起我们就遇到了字节可寻址的内存。现在由于各种兼容性问题以及OPCODES只是一个字节长的事实,它是不可能改变的。但是使用技巧,内存很容易通过字寻址来获取/存储数据/地址!