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

wil*_*lhf 10 memory

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

Mar*_*wis 8

处理器其实存取存储器中的64位的数量(因为奔腾86做左右); 64位处理器通常具有128位总线.此外,在访问主内存时,您会有一些填充整个缓存行的突发,这些内存甚至更大.

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

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


Sha*_*son 7

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

通常,必须选择尺寸以便于数据和机器指令.8位(256个值)足以容纳英语和其他语言中的常用字符.据推测,8位处理器的设计者能够将256个公共指令编码为一个字节是"合理的权衡".当时,8位通常也足以编码其他内容,例如像素颜色或屏幕坐标.字节大小为2的幂也可能被认为是"整洁"的设计.值得注意的是,例如,Marxer,E.(1974),数据处理元素,将字节描述为6位和8位,具体取决于计算机是"八进制"还是"十六进制" "类型.

当然,其他尺寸在早期使用.