MIPS中的微程序设计

MIPS中的微程序设计,mips,computer-architecture,microcoding,Mips,Computer Architecture,Microcoding,我正在学习微编程,对微指令到底是什么感到困惑。我使用的是MIPS架构。我的问题如下 比如说,我有一个ADD指令,这个微指令是什么样子的?add指令有多少个微指令。我是否可以在网上看到MIPS基本指令的微指令列表 如何计算ADD微程序指令的位字符串 这是如何将EPC加载到其中一个寄存器并向其中添加4个字节的示例: lw t0, 20(sp) // Load EPC addi t0, 4 // Add 4 to the return adress sw

我正在学习微编程,对微指令到底是什么感到困惑。我使用的是MIPS架构。我的问题如下

比如说,我有一个ADD指令,这个微指令是什么样子的?add指令有多少个微指令。我是否可以在网上看到MIPS基本指令的微指令列表


如何计算ADD微程序指令的位字符串

这是如何将
EPC
加载到其中一个寄存器并向其中添加4个字节的示例:

lw      t0, 20(sp)      // Load EPC
addi    t0, 4           // Add 4 to the return adress
sw      t0, 20(sp)      // Save EPC
有“很多”的说明你可以使用,你可以。依我的拙见,MIPS真的很简洁易学!有趣的是,第一个Playstation使用了MIPS CPU

示例说明

  • lw
    =加载字
  • la
    =加载地址
  • sw
    =保存单词
  • addi
    =添加immidate
然后你有很多条件指令,比如:

  • bne
    =分支不相等
  • bnez
    =分支不等于零
有了这些,你可以使用
j
跳转到一个地址

下面是我为MIPS编写的一个异常处理程序的示例,这是外部源处理程序:

External: 
        mfc0    t0, C0_CAUSE        // We could aswell use 24(sp) to load CAUSE
        and     t0, t0, 0x02000     // Mask the CAUSE
        bnez    t0, Puls            // If the only character left is 
                                    // "not equal zero" jump to Puls

        j   DisMiss                 // Else jump to DisMiss
在上面的示例中,我定义了一个名为
External
的入口点,我可以跳转到该入口点,就像我使用
discouse
循环一样,您通常跳转到自己

这里还使用了一些其他说明:

  • mfc0
    =从协处理器0移动
要处理标签

以下是一些有关MIPS微程序设计的资源:

  • 来自这三所大学中最好的一所(PDF)
是一种用更简单的“微指令”实现复杂指令集体系结构(如x86)的方法。MIPS是RISC指令集体系结构,通常不使用微编程实现,因此ADD指令没有微指令


要回答您的特定问题,您必须知道特定微体系结构的定义。

我想他是在问微编程,即每条指令的微代码,而不仅仅是基本的汇编编程?是的,我只是专门问微编程。@MicropogQuestions,你看过这个吗@保罗,这对我来说是不幸的。:@problems,我已经添加了一些我觉得很好/有用的资源,关于这个主题的演讲和论文。我将保留我的初始答案,也许有人会发现它有用?谢谢你的链接,我已经看到了你发布的文档,我只是不明白。例如,在第二个链接上,他们有一个用于R型格式指令(如ADD)的表,它有两行,但在下面是空白的,有一个微写指令。这是R型的一部分吗?使用本文档,r型指令(add)有多少微指令?