1

因此,我们可以“编程”的最低级别是处理器上的单个指令,但这些指令首先必须以某种方式进行编程。当指令运行时,处理器如何知道要做什么?

4

4 回答 4

3

有用的文章:

http://www.gamezero.com/team-0/articles/math_magic/micro/如何设计一个简单的处理器...

本课程讲义:http: //www.stanford.edu/class/ee382/处理器设计

于 2009-11-25T15:33:04.143 回答
2

你想要这本书

于 2009-11-25T15:28:45.000 回答
1

它被称为“微代码”(或者至少在 15 多年前我最后一次查看这些代码时是这样称呼的)。

处理器中的不同硬件功能引擎与“微代码”软件协调:获取、解码“机器代码”、执行等。

于 2009-11-25T15:28:40.350 回答
1

像旧处理器那样简单地思考:

如果您查看大多数处理器的指令位,您将开始看到模式。几个位定义一个输入寄存器,几个位可能定义另一个输入寄存器,几个位可能定义结果寄存器,还有几个位定义操作。因此,硬件的某些部分查看定义操作数 a 的位,并使用它将操作数 a 连接到 alu,其他硬件使用操作数 b 位将操作数 b 路由到 alu 上的 b 输入。其他位选择 alu 应该执行的操作,加法和或异或等。最后,结果位将 alu 的输出路由到要保存结果的寄存器。有点简单,但同时与逻辑的编写方式以及传统处理器和许多较小处理器的运行方式相距不远。

一些较大的现代处理器是微编码的,这意味着内部实际上还有另一层指令,您的 c = a + b 操作可能会变成一系列微编码指令,这些指令在您的机器指令进入时启动,这些将有助于执行将输入路由到加法器逻辑,并将结果路由回输出类型的事物。

如今,逻辑是使用诸如 verilog 和 vhdl 之类的编程语言实现的,它们与现有的软件编程语言非常接近。不同之处在于“代码”中的许多行同时执行,不一定像使用普通软件那样按顺序执行。鉴于一些编写良好的 hdl,学习该语言并理解正在发生的事情并不难。您可能想查看 opencores.org 并获取众多处理器克隆之一的源代码。hdl 的编译器工具与用于软件的编译器工具相差不远,而不是指令,代码被归结为逻辑或门,这个位与那个位相加,这个位与那个位相或。可以在逻辑中轻松实现并连接在一起的模块。

于 2009-11-26T02:05:33.847 回答