第一个微处理器如何知道二进制代码的含义?

第一个微处理器如何知道二进制代码的含义?

我已经问自己这个问题一年多了,现在我决定在这里问。我不知道这里是不是合适的地方。

据我所知,微处理器是晶体管的集合,但我对它们有些不理解:微处理器(或计算机)的发明者是如何编写第一个代码并对其 IC 进行编程的?当他们制造第一台计算机时,还没有其他计算机。

我不明白的另一件事是,IC(尤其是第一个实际上是晶体管集合的 IC)如何知道这些代码的含义?当指令为 1 或 0 或 111011010101 时,IC 如何理解该做什么?

谢谢。

答案1

当你编写二进制代码时,它基本上是按顺序输入处理器,执行部分 x 或 y 或 z。

二进制代码在各个机器上并不固定,这就是为什么您无法在 PS/3 上运行 X-Box 程序的原因。与软件一样,处理器也在升级,同时保持与以前版本的兼容性:这就是为什么您有英特尔 286/386/486/奔腾等。

不应假设二进制代码是按位解释的。例如,我工作的一台机器有一组代码,如 1ab“将寄存器 a 复制到 b”。您可以在特定内存中为其编写引导程序,然后执行系统跳转。所有这些都是 8 位代码,而不是 1 位代码。

因此从理论上讲,操作码是芯片的电子开关代码:它打开和关闭各种路径,并让内容从 A 流到 B。其他的是中断,它告诉计算机执行它准备好做的任何事情(有点像 Go!)。

答案2

据我所知,微处理器是晶体管的集合

这些晶体管可以组织成逻辑门例如 NAND、NOR 和反相器门。
这些门随后可用于构建寄存器和逻辑电路。CPU
中的这些电路之一是称为指令译码器正是
这个指令解码器将每个机器代码(你所说的二进制代码)转换成信号以执行该操作码的实际执行。

微处理器(或许是计算机)的发明者是如何编写第一个代码并对其 IC 进行编程的?

为什么你的问题是关于“微处理器”的?
微处理器只是几种数字计算机处理器的一个子集。数字电子计算机在第一台微处理器出现之前就已经存在了几十年。

现代计算机概念的核心是记忆用于存储(a)机器代码形式的程序和(b)数据。(我故意忽略了 HLL 计算机。)最坏的情况是使用前面板手动将机器代码输入内存或使用预编程内存,例如 PROM 或 EPROM。

我不明白的另一件事是 IC(特别是第一个 IC,实际上是一组晶体管)如何知道这些代码的含义?

一个我知道了就是“集成电路”。该电路既可用于模拟应用,也可用于数字应用(甚至可用于混合信号)。IC(又称“芯片”)和微处理器不是同义词。微处理器是数字(又称逻辑)IC。但并非每个 IC 都是微处理器。

当指令为 1 或 0 或者可能是 111011010101 时,IC 如何理解该做什么?

假设你问的是 CPU,那么它就是指令译码器执行此功能的硬件。有两种主要技术可以实现此功能:使用硬线或微编程。
请注意,微编程与微处理器无关。早期的微处理器是硬线的(没有微编程)。早期的微编程计算机是大型计算机,例如 IBM S/360。

答案3

简单的回答是:处理器的设计人员首先设计指令集(各种指令代码的含义、支持哪些操作数以及如何指定它们等),然后通过互连逻辑门来构建处理器以实现该指令集。

如果他们采用不同的连接方式,指令集就会有所不同。

微程序处理器:至少,这些是某种类型的内存(有几种可能性),作为确定指令集的互连的一部分。因此,通过更改该内存的内容(“微代码”),可以更改指令集。我说的是“至少”——情况可能会复杂得多。

如果你想学得更多,我建议从中间开始:学习某些机器的汇编语言。最好不要学习 x86/x64,因为它非常复杂。如果你想要某种汇编语言相对容易学习且与当前技术相关的产品,我会选择 ARM。

然后,如果你想了解更多,可以学习逻辑电路:AND、OR、NOT、NAND、NOR;然后是顺序电路,从触发器开始,等等。

当您开始思考如何构建一个功能齐全的处理器,甚至构建一个非常简单的处理器,例如 PDP-8 时,您会觉得“天哪,这太庞大、太复杂了”。是的,它确实很大。但它并不像您最初想象的那么复杂。复杂性主要体现在各个层面:一旦您理解了底层,您就不必再担心它的细节,只需关心它的作用。此外,重复也具有明显的复杂性。32 位加法器的门数大约是 2 位加法器的 16 倍。但是,如果您理解了 2 位加法器,您就能理解 32 位版本。它只是您已经见过的更多内容而已。

相关内容