为什么有些处理器有非官方代码和/或错误?

为什么有些处理器有非官方代码和/或错误?

最近我正在编写(或尝试)一个用于 6502 NES CPU 的模拟器。

我学到了很多很多东西,其中有些东西真的让我很惊讶,我想知道这些是什么原因造成的,特别是有两件事浮现在我的脑海里

  1. 存在错误,特别是 6502 似乎在间接寻址模式中存在错误,至少对于第一个处理器而言(它会影响 NES 中使用的处理器)
  2. 非官方操作代码:同样,真正令人惊讶的是存在尚未官方但可用的代码,其中一些似乎完全无用(例如 DOP 和 TOP 是 NOP 的变体),其中一些似乎是其他操作代码的组合(例如 SAX 或 DCP)。

问题是,在制造数百万个 CPU 时,它们怎么会出现错误(例如间接寻址模式),而且,作为制造商,你们为什么要包含可能在后续修订中删除的非官方操作代码?较新的 CPU 也会发生这种情况吗?

答案1

问题是,为什么在制造数百万个 CPU 时,它们会出现错误(例如间接寻址模式),而且,作为制造商,你们为什么要包含可能会在后续修订中删除的非官方操作代码?

CPU 和软件有什么不同?各大公司在软件开发、制造和营销上花费了数百万美元。那么,为什么有缺陷的产品会泄露呢?

我的意思是苹果是一家大型计算机和数据公司,对吧?那么如何解释这么大的公司会——例如——发布天线问题严重的 iPhone 4?或者,释放几秒钟的白噪音是泰勒·斯威夫特在加拿大的一首歌吗?

你的假设是,因为一家公司规模大,有制衡机制,所以这些制衡机制应该是完美无缺的。然而,在任何人类活动中,无论质量保证层级有多少,情况都并非如此。

对于非官方操作代码,很容易用仓促开发或为未来开发准备的代码来解释。如果制造了一款新 CPU,工程师很可能会列出一大堆想要的功能。有些会制造出来,有些不会。有些会制造出来,但正式盖上“是的,这是可行的,用这个”的印章是不切实际的。

这就是为什么几乎所有 CPU 都有修订版的原因。这也是为什么在多 CPU 系统(具有多个物理 CPU 的系统)中,所有 CPU 都匹配同一生产批次通常很重要的原因。

答案2

为什么在生产数百万个 CPU 时,它们会出现错误

  • 它是真的非常非常难设计 CPU,更不用说设计完全没有错误的 CPU。

  • 通常,只有在产品发布后,才会在现实世界中发现细微的错误,因为您无法对数百万最终用户进行如此大规模和广度的测试。

  • 竞争起着重要作用。率先进入市场,或至少及时进入市场,非常重要,否则您将失去业务,最终倒闭。这种压力与创造质量的压力是为什么您经常得到的东西只是够好了

  • 出于某种原因,尤其是在 IT 领域,全新和改进远远超过需求更新和完善。这既是你的错,也是我的错。例如,如果英特尔不断改进 80486 CPU,我想现在它应该已经非常接近没有错误了。但是现在你能用 80486 做什么呢?我今天肯定不会买一个,你也不会。

作为制造商,你们为什么要包含可能在后续修订中被删除的非官方操作代码?

非官方操作码存在的原因有多种:

  • 在开发过程中的某个阶段,人们发现有些软件存在错误或副作用,而修复或删除这些软件的成本太高或耗时太长。

  • 有些是由于时间限制,无法对其进行足够彻底的测试,也无法确保它们能够正常工作。

  • 有些是作为未来的概念验证或原型而设立的,可能会在以后的 CPU 修订/生成中得到采用。

  • 有些仅用于内部测试目的。

  • 毫无疑问,有些只是为了好玩,又名复活节彩蛋

相关内容