【问题标题】:lower level assembly language? (how are processor instructions implemented?)低级汇编语言? (处理器指令是如何实现的?)
【发布时间】:2009-11-25 15:26:10
【问题描述】:

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

【问题讨论】:

    标签: assembly processors microcoding


    【解决方案1】:

    有用的文章:

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

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

    【讨论】:

      【解决方案2】:

      你想要this book

      【讨论】:

      • 你能发一些相关的文字吗?
      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        如果您查看大多数处理器的指令位,您将开始看到模式。几个位定义一个输入寄存器,几个位可能定义另一个输入寄存器,几个位可能定义结果寄存器,还有几个位定义操作。因此,硬件的某些部分查看定义操作数 a 的位,并使用它将操作数 a 连接到 alu,其他硬件使用操作数 b 位将操作数 b 路由到 alu 上的 b 输入。其他位选择 alu 应该执行的操作,加法和或异或等。最后,结果位将 alu 的输出路由到要保存结果的寄存器。有点简单,但同时与逻辑的编写方式以及传统处理器和许多较小处理器的运行方式相距不远。从字面上看,这就是最早的计算机的操作方式,并且“编程”它们涉及将来自这个 alu 的答案与来自其他事物的输入一起路由到该 alu 的输入中,直到结果出现在您正在寻找的结尾。

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

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

        【讨论】:

        • +1 用于解释硬件实际在做什么。也许你可以把它分成更多的段落。 :)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-17
        • 1970-01-01
        • 2010-09-11
        • 1970-01-01
        相关资源
        最近更新 更多