我知道 x86 汇编(并且使用过 FPGA 等),从未为 RISC 写过文章,我有机会参加 MIPS 课程,但我现在很忙,所以我的问题是,我知道每一件事我知道在某种程度上是有益的,但实际上,有多少有益?(我是低级热心,但这是必须的吗?)
(我知道mips-is-it-important,但我觉得我的情况略有不同,因为我已经知道某种组装)
谢谢。
我知道 x86 汇编(并且使用过 FPGA 等),从未为 RISC 写过文章,我有机会参加 MIPS 课程,但我现在很忙,所以我的问题是,我知道每一件事我知道在某种程度上是有益的,但实际上,有多少有益?(我是低级热心,但这是必须的吗?)
(我知道mips-is-it-important,但我觉得我的情况略有不同,因为我已经知道某种组装)
谢谢。
MIPS 的一件有趣的事情是您必须手动管理翻译后备缓冲区 (TLB)。对于 x86(或我编写的大多数其他 ISA),您不必这样做。这样,它比其他 RISC CPU 更 RISC。许多网络和存储设备都嵌入了 MIPS cpu。我在这十年早期工作的一家初创公司做了一个带有加密加速器(作为两个协处理器)的 16 核 MIPS CPU。该设计已被瞻博网络收购,并用于其路由器中的自适应服务 PIC。
因此,正如其他人所说,MIPS 是 RISC ISA 的一个很好的例子,它仍然获得了大量的设计胜利。我觉得学习很有用。
我发现以下书的第一版是学习它的好方法:
这当然不是必须的,但它是 RISC 架构的一个很好的例子。再加上 IBM 360 体系结构(老实说!),您将对普通指令集的范围有很好的了解。
我认为学习 MIPS(至少是基本的)并不难,还有SPIM 模拟器可以用来观察代码运行。如果你喜欢底层编程,值得一试。
另一个问题很好地证明了越来越过时的架构:学习组装本身就很有用。在你的情况下不适用。
我只会在假设已经具备汇编程序知识的情况下才考虑该课程(否则您将花费大量时间重复基本概念)。否则,您可能最好将时间花在更相关的事情上(这不太可能是另一个汇编程序,除非您对很快使用特定处理器(系列)抱有很高的期望。
为什么不学习一些新东西(例如函数式编程)。
当我在学校时(BS CS Michigan Tech 2008),MIPS 汇编(在 SPIM 上运行)在所需的“计算机体系结构介绍”课程中被教授,该课程还涵盖了不同类型的体系结构、缓存、DMA 等。我们还学习了逻辑门和动态/静态存储器如何由二极管、电容器和晶体管等低级组件构成的基础知识(我们没有深入了解;这是 CS 课程)。我们使用逻辑仿真软件(基本上是与/或/等门,您可以将它们拖放到网格上并连接在一起)来构建加法器、ALU,并最终构建一个非常简单的 16 位 RISC 处理器,给出机器代码规范,汇编器、示例程序和示例输出。
如果是那种课程,我会说它会非常有价值。我发现该类的知识对于理解我的操作系统类中的东西(虚拟内存/分页/缓存,中断......)非常有用,然后对于理解 JVM 是如何处理字节码的。了解程序集如何映射到机器代码映射到多路复用器和 ALU 和寄存器,我做了很多我认为是神奇的东西,然后才变得微不足道且易于理解。
否则,这只是在您的工具带中添加另一个指令集,而 MIPS 可能不适合。与 x86 相比,它非常简单/直接/常规,所以你不应该在课堂上遇到太多麻烦。可贵吗?如果您总体上对组装相当满意并且出于某种原因需要它,那么您可能很容易在不上课的情况下学会它。
如果你是低水平的爱好者,这可能是值得的,但你可以在周末自学 mips,所以我想这门课程将不仅仅是用 mips 编程。如果它是使用 mips 的计算机硬件理论课程,那么我认为这值得你花时间。
但是,如果它只是 MIPS 编程并且您已经掌握了 x86 汇编和低级编程的概念,我会说传递课程。schnaader 指出,节省自己的时间和金钱,并花一个周末左右的时间使用SPIM来处理 MIPS。
还要记住,如果您从未在汇编中编写过递归函数,那么您还没有充分探索这些东西。
我的一门课迫使我们学习 MIPS 汇编语言。嗯,从技术上讲……这是我们自己的定制架构,但主要基于 MIPS。结论,做。了解组装对我的帮助是无限的,尽管我讨厌这么低的工作。