【发布时间】:2009-10-19 04:24:18
【问题描述】:
为什么计算机有字节可寻址内存,而不是 4 字节可寻址内存(或 64 位的 8 字节可寻址内存)?是的,我看到它有时是如何有用的,它只是看起来不优雅和过度。优势是实质性的,还是真的只是因为传统?
【问题讨论】:
-
基本上:为什么要将披萨切成 8 片?等等,你把披萨切成 16 片!?!?
标签: memory
为什么计算机有字节可寻址内存,而不是 4 字节可寻址内存(或 64 位的 8 字节可寻址内存)?是的,我看到它有时是如何有用的,它只是看起来不优雅和过度。优势是实质性的,还是真的只是因为传统?
【问题讨论】:
标签: memory
处理器实际上确实以 64 位的数量访问内存(x86 从 Pentium 左右就开始了); 64 位处理器通常具有 128 位总线。另外,在访问主内存时,您会出现填满整个高速缓存行的突发,这甚至是更大的内存单元。
只是寻址是基于字节的;这增加了一点开销,而且一点也不过度。
今天,网络协议绝对需要基于字节的寻址。使用基于字的寻址来实现 TCP 会很困难:如果您收到 17 个字节的内容,您希望 read() 返回什么?同样,更高的层是基于字节的:如果您得到像“GET / HTTP/1.0”这样的请求行以四个字节为单位呈现,那么 HTTP 将很难实现。您基本上必须使用移位操作等将单词拆分回字节(现在处理器在硬件中执行此操作,这要归功于基于字节的寻址)。
【讨论】:
很大程度上是历史原因——它已经成为 CPU 理解的标准。 Here 是一个很好的讨论:
通常,必须选择一个尺寸以 方便数据和 机器指令。 8 位(256 值)足以容纳 英语中的常见字符和一些 其他语言。 8位设计师 处理器大概发现是 能够编码 256 条常用指令 因为一个字节是“合理的 权衡”。当时,8位是 通常也足以编码其他 诸如像素颜色或 屏幕坐标。有一个字节大小 即 2 的幂也可能有 被认为是一个“更整洁”的设计。它 有趣的是,对于 例如,Marxer, E. (1974), Elements 数据处理,描述一个字节 作为 6 位和 8 位 取决于电脑是否 “八进制”或“十六进制”类型。
当然,早期使用其他尺寸。
【讨论】:
我们需要确定一些尺寸以实现标准化。出于上述 Shane 提到的原因,人们选择了 8 位大小。从那时起,我们就陷入了字节可寻址存储器的困境。现在由于各种兼容性问题以及 OPCODES 仅是一个字节长的事实,无法更改。但是使用一个技巧,内存很容易被字寻址以获取/存储数据/地址!
【讨论】: