第一个微处理器是如何编程的?

电器工程 微处理器
2022-01-05 04:38:29

我刚刚意识到,如果你正在编写一个操作系统,那么你在写什么?我在阅读 1980 年的微处理器基础知识时提出了这个问题,这个问题突然出现在我的脑海中:

第一个微处理器芯片是如何编程的?

答案可能很明显,但它困扰着我。

4个回答

我会从字面上回答你的问题,主要讨论微处理器,而不是一般的计算机。

所有计算机都有某种机器代码。一条指令由一个操作码和一个或多个操作数组成。例如,英特尔 4004(第一个微处理器)的 ADD 指令被编码为 1000RRRR,其中 1000 是 ADD 的操作码,RRRR 表示寄存器编号。

最早的计算机程序是手工编写的,手工编码 1 和 0 以创建机器语言程序。然后将其编程到芯片中。第一个微处理器使用 ROM(只读存储器);这后来被EPROM(可擦除可编程 ROM,用紫外线擦除)取代;现在程序通常被编程到EEPROM“Electrically...-EPROM”,可以在芯片上擦除),或者特别是闪存。

大多数微处理器现在可以从 RAM 中运行程序(除了微控制器之外,这几乎是所有东西的标准),但首先必须有一种将程序加载到 RAM 中的方法。正如 Joby Taffey 在他的回答中指出的那样,这是通过 Altair 8080 的拨动开关完成的,它由 Intel 8080(紧随 4004 和 8008)驱动。在您的 PC 中,有一个称为BIOS的 ROM ,用于启动计算机并将操作系统加载到 RAM 中。

机器语言很快变得乏味,因此开发了汇编程序,它采用助记汇编语言并将其(通常每条指令一行汇编代码)翻译成机器代码。所以不是 10000001,而是写 ADD R1。

但是第一个汇编程序必须用机器代码编写。然后它可以用自己的汇编代码重写,并且第一次用机器语言版本来汇编它。之后,程序可以自行组装。这称为引导程序,也由编译器完成——它们通常首先用汇编程序(或另一种高级语言)编写,然后用他们自己的语言重写并用原始编译器编译,直到编译器可以自己编译。

由于第一个微处理器是在大型机和小型计算机出现很久之后开发的,而且 4004 无论如何都不适合运行汇编程序,英特尔可能编写了一个在其大型计算机上运行的交叉汇编程序,并将汇编代码翻译为将 4004 转换为可以编程到 ROM 中的二进制映像。再一次,这是一种用于将编译器移植到新平台的常用技术(称为交叉编译)。

最初,程序是写在纸上的,然后转换为计算机可用的任何输入法。从第一台计算机上的旋钮、开关和跳线,到打孔卡,再到键盘/板。

下图显示了当今真正的程序员使用的东西:

好吧,当 micros 刚出现时,我就在附近,我们在大型机和 minis 上编写交叉汇编器和编译器,然后我们将它们引导到 8 位硬件上,人们并没有真正费心在 micros 上构建编译器/汇编器,直到他们有足够的本地存储来让它有用

只读存储器的一种早期形式是网格,其中地址将选择一行(将其拉低),而列表示数据。每列都有一个上拉电阻,每个交叉点都会焊接一个二极管来表示“零”,或者没有二极管来表示“一”[如果需要,可以反转位电平,以减少所需的二极管数量]。通过焊接在适当的二极管中,可以“编程”任何所需的位模式。

这种设计以熔丝-PROM 的形式被带入集成电路世界。本质上,保险丝 PROM 是一个与上述类似的电路,构建在芯片上,除了所有二极管都被填充,并且每个二极管都有一个弱保险丝与其串联。出厂时,PROM 将在所有位置读取“0”。但是,可以通过选择适当的地址并驱动适当的数据线“硬”高来选择性地移除二极管[注意:我认为每个位可能都有自己的晶体管,而不是二极管,但原理是一样的]。

熔丝编程的 PROM 被半导体存储器取代,半导体存储器通过在内部电容器上注入电荷来存储位。这样的存储器不仅比熔丝 PROM 更紧凑,而且如果它们被封装在紫外线透明的封装中,它们可能会被擦除和重复使用。请注意,即使是所谓的“一次性可编程”存储器也几乎总是使用相同的设计,只是简单地装在不透紫外线的封装中。

两个人指着一个大二极管矩阵 1950 年MIT Whirlwind 计算机的二极管矩阵控制存储器

带有微型 SMD 晶体管的晶体管矩阵2005 MT15 CPU 的晶体管矩阵控制存储