为什么计算机具有字节可寻址的内存,而不是4字节可寻址的内存(或64位的8字节可寻址内存)?是的,我看到它有时是多么有用,它看起来不那么优雅和过分。这些优势是实质性的,还是仅仅因为遗产?
答案 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只是一个字节长的事实,它是不可能改变的。但是使用技巧,内存很容易通过字寻址来获取/存储数据/地址!