bfr*_*rog 44 x86 intel cpu-architecture endianness microprocessors
我最近一直在问自己的一个真正的问题是,设计选择带来了x86是一个小端架构而不是大端架构?
I. *_*edy 62
很大程度上,出于同样的原因,当你添加时,你从最低位数(右端)开始 - 因为携带传播到更有效的数字.将最低有效字节放在第一位允许处理器在仅读取偏移的第一个字节后开始添加.
在你完成了足够的汇编编码和调试之后,你可能会得出这样的结论:这不是小端,这是一个奇怪的选择 - 我们人类使用big endian是奇怪的.
Han*_*ant 44
这是考古学,但很可能不是英特尔的选择.英特尔设计的具有向后兼容性的处理器是主要关注点,因此可以轻松地将汇编代码从旧架构机械转换为新架构.这使得时钟从8086回落到8080,成为第一款具有重复性的微处理器,即英特尔8008.
该处理器是在CTC(后来命名为DataPoint)来到英特尔寻求数据终端产品帮助时启动的.最初由Victor Poor和Harry Pyle设计,它在MSI(许多芯片)中采用了逻辑处理器设计.他们要求英特尔使用512位移位寄存器为他们提供存储解决方案.
这不是英特尔最喜欢的产品,他们采用这些定制设计工作来应对1024位RAM芯片的加速时间.Tedd Hoff,Stan Mazor和Larry Potter研究了设计并提出了一个带RAM.instead的LSI处理器.这最终变成了8008.穷人和派尔被认为是设计指令集.
他们选择小尾数是可信就此采访了可怜的.它很快就会跳过它而且面试相当分散但第24页的相关部分:
Shustek:所以,例如,首先存储数字最低有效字节,来自这是串行的事实,你需要先处理低位.
可怜: 你必须这样做.你别无选择.
"别无选择"的说法很奇怪,似乎只适用于MSI处理器的位串行设计.也是他们购买移位寄存器而不是RAM的原因.它在第34页再次出现:
Hendrie: 你还记得他们对设计或其中任何细节的任何回击......
可怜: 其中一个是一位而不是8位.他们想要一个8位宽的部分,最终,他们是如何构建它的.
差: 但它还在循环中.但是,你看,有一些有趣的观点是,在这一点上是否会有一个大的结尾或一个小的结尾部分,但我们没有.我们离开了......
Hendrie: 即使你去了8位?
差: 对.这就是英特尔产品线今天就是这样的原因
英特尔的Stan Mazor负责设计4004和8008,详细阐述了英特尔8008微处理器口述历史面板中的"推迟" :
最后,Datapoint的原始设计......他们想要的是一台[bit]串行机器.如果你考虑一个串行机器,你必须一次一位地处理所有的地址和数据,合理的方法是:低位到高位,因为这是进位传播的方式.因此,这意味着跳转指令本身,14位地址放入串行机器的方式是倒退的,就像你看一样,因为这就是你想要处理它的方式.好吧,我们要构建一个字节并行的机器,而不是位串行和我们的妥协(在客户的精神和他的精神),我们把字节放在后面.我们把低字节[first]和高字节.这被称为"Little Endian"格式,它与你认为自然的相反.好吧,我们为Datapoint做了.正如你所看到的,他们从来没有使用[8008]芯片,因此它在某种意义上是"一个错误",但[Little Endian格式]已经存在于8080和8086以及[是]标记之一这个家庭.
因此,英特尔希望构建具有8个独立引脚的字节并行CPU,以访问数据总线.英特尔坚持妥协的原因在Stephen P. Morse等人的"英特尔微处理器:8008到8086"中进行了解释:
这种反向存储是困扰从8008演变而来的所有处理器,这是与Datapoint位串行处理器兼容的结果,该处理器处理从低位到高位的地址.这种倒置存储在早期的256 x 8内存芯片流行时确实有一个优点:它允许所有内存芯片选择一个字节并将其锁存以便输出,同时等待选择芯片的六个高阶位.这加速了内存访问.
最终CTC没有使用8008,它完成了一年太晚了,他们已经实施了MSI处理器.微处理器设计肯定是CTC的知识产权,但他们将设备成本与英特尔的权利交换在一起.有点错误:)关于专利权的法律诉讼随后出现.
因此,正如所述,由于串行端口的工作方式,英特尔最终得到了小端.
它反映了考虑内存总是一次组织一个字节与考虑一次组织一个单元之间的区别,其中单元的大小可以变化(字节、字、双字等)。