如果我构建一个新的 CPU,BIOS 应该包含什么?(阅读详情)

If I build a new CPU, what should the BIOS contain?(Read details)

我正在尝试先在仿真器中从头开始(从 Nor gates)构建一个 CPU,然后在面包板上。

只是想了解事情是如何运作的。

现在,由于我的 CPU 将是新的,我将如何指示 OS,例如 arch linux 使用它?

BIOS 将发挥什么作用? 我是否必须编写一个包含汇编程序的 BIOS?

我是否也需要在 OS 上编写一些程序?

因此,它开始与我的 CPU 通信。

[P.S]:我是一名程序员,所以对事情如何发展到汇编级别非常了解。

只是想知道硬件级别如何在 Assembly 之外工作。

或者换句话说,第一台计算机在 BIOS 上写了什么?

怎么做到的bootstrap?

Just trying to understand how things work.

工作原理是 CPU 只是系统的一部分。没有 RAM 它就没用,没有某种形式的持久存储它就没用,没有某种 IO 与外界通信(例如串行端口可能)它就没用。

What role the BIOS will play?

“BIOS”(或者更准确地说,系统启动时使用的某种 ROM)起到“存储”的作用——CPU 获取可执行文件的一种方式初始化其他存储设备和加载更多可执行代码所需的代码。

对于“分布在数百个面包板上的或非门”,您最终可能会直接在 ROM 中放置一个非常小的“OS”,这样您就不必担心提供额外的持久性贮存;经过大约 10 年的奉献,您最终可能会看到您的最小 OS 工作 3 次(在厌倦“本周哪根电线连接不良?”持续断裂之前)。

从某种角度来看; 1 位 RAM 将花费您 4 个或非门,因此区区 512 字节的 RAM 将花费您 16384 个或非门(更多用于 row/column select 逻辑等)。这适用于超过 4000 个“74LS02 四路双输入或非门”芯片。如果您可以将 40 个这样的芯片装在一个面包板上,那么您正在寻找大约 100 个面包板,但最终没有足够的 RAM 来 运行 任何 OS.

操作系统可以非常非常简单 — 如果您只想让系统启动并执行设备和线程等一些操作,但不需要 full-fledged 操作系统的所有保护和功能。

您真正需要的是能够响应中断并向用户级软件发出数据已准备就绪(缓冲输入)或设备已准备就绪的信号,相反,用户级软件可以指示(例如,通过系统调用)它想要发送到设备(缓冲输出)或从中获取的数据。对于一个中断处理程序,一个迷你 os.

可以使用几百行汇编代码

但是有许多系统甚至没有那么复杂。一些程序微控制器只需 运行 一个程序,没有中断,它们有一个主事件循环,不断检查按钮按下或其他。

我可以向您推荐“The Fabric of Computing”文章系列:https://jeelabs.org/202x/tfoc/

每台电脑都会有一些初始代码,但它的作用完全取决于你!在嵌入式中,“bios”是完整的应用程序。

从焊门直走,路漫漫其修远兮。我正在 FPGA 上进行 CPU 设计,我是一门课程的贡献者,该课程将您从逻辑的第一步带到完整的 RISC-V CPU 编译 C 程序:

https://github.com/BrunoLevy/learn-fpga

祝你好运!使用 FPGA,实际上可以通过自定义设计达到启动 Linux:

https://github.com/enjoy-digital/litex