MIPS操作码查找表存在于何处?

时间:2014-11-12 23:57:58

标签: mips computer-architecture

我们目前正在介绍MIPS架构。我对计算机体系结构和MIPS组装有了一定的了解,这很好。

然而,我试过谷歌搜索这个答案,但我没有找到合适的答案。我对ISA和微架构设计下面的一层感到困惑。 MIPS操作码查找表存在于何处,比如在内存中的特定位置?变量和变量类型如何在MIPS中表示(因为变量类型的格式或二进制变量未在MIPS操作码中指定,而只是MIPS汇编指令)。谢谢。

编辑:它的查找表是CPU(或者操作码表对于程序员来说只是一个有用的参考,而且这个表并不存在于硬件中)?或者MIPS硬件是否配置为根据MIPS操作码进行操作?

3 个答案:

答案 0 :(得分:3)

如果你想查找MIPS汇编操作码(又名MIPS"指令集"),你应该参考MIPS文档。例如:

http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html

MIPS硬件实现指令集。没有"查找表"本身就在CPU中。

负责的CPU的特定部分是"指令解码器","控制单元"的一部分。这是一个简短的动画,为您提供有关指令获取/解码/执行周期的更多详细信息:

https://prezi.com/bz0fc-00otft/computer-architecture-registers-and-the-fetch-execute-cycle/

答案 1 :(得分:2)

操作码表实际上并不存在于任何地方(除了某些具有微代码的架构......下面解释)。它们的工作方式是微处理器的操作码由一系列实现状态机的数字电路解释。这些电路称为控制单元。控制单元负责启用存储器读取,写入,控制ALU等,以创建特定操作码所需的行为。

一个例子。假设您发出一个操作码,用于将数据从立即指令加载到寄存器。该操作码将触发状态机将程序计数器递增1并发出存储器读取,启用内部总线,以便读取出现在特定regester的锁存器的输入线上(所有内部缓冲线控制)。当时钟信号命中时,增加的程序计数器处的ram位置在数据总线上并被读入寄存器。然后控制器进入下一个状态,即获取下一个操作码。

如何将这些状态编码到电路中的是逻辑门,它根据控制寄存器的特定输入在正确的时间断言信号。有时这被实现为ROM,其他作为逻辑电路实现。在诸如6502的较老的微处理器上,这具有有趣的副作用。有几个未定义的操作码没有设计用于执行任何操作,但是在发出这些操作码时,它们会触发设计人员不想要的控制器功能,因为这些未定义的操作码似乎是一部分的特定操作码的一部分对于控制单元的另一个方面,控制单元和操作码的另一部分将被不同地解释。这会导致未定义的行为,其中一些非常有用并且实际上已在代码中使用。其他人没用,会停止处理器或者不稳定。

利用微码的架构,它是关于每个现代架构的,读取操作码并有一个表,其中包含一组用于实现该操作码的内部指令。这些指令可与微处理器的精简指令集相媲美,但程序员无法直接访问。此时,这些较小的微码指令就像传统架构一样,它们将被一个小型状态机解释,以控制微处理器的行为。

微代码的一个有趣特性是CPU工程师可以使用微代码表更新来更新处理器的功能。如果发现错误或发现更好的实施操作码的方式,英特尔通常会这样做。

有关详细信息,请参阅:

http://www.pagetable.com/?p=39

http://en.wikipedia.org/wiki/Control_unit#Hardwired_control_unit

https://www.princeton.edu/~achaney/tmve/wiki100k/docs/Microcode.html

答案 2 :(得分:0)

有些指令集是微编码的,6502,有些可能都是x86等,但是mips,arm和其他(RISC,但RISC和CISC之间的界限相当模糊),没有进行微编码。即使是那些微编码我们通常也无法访问微码本身,我们的界面严格来说是前门ISA。如果有一些微码,则需要在片上/封装(非易失性)rom中,或者从某个rom的某个地方开始下载到ram。基于多年前的新闻文章,x86和/或amd可能具有在启动时由bios修改的微码中烧毁的能力。

就mips而言,它是通用术语的一种方式,因为它是一种教学架构,每个Nth计算机工程师都有自己的实现,所以除了很多之外,还有几十到几十万个mips实现。 MIPS本身的实际实现。当然,由一个班级完成或由一个班级学习的一个/多个教育版本可能仅仅为了教授微码而进行微编码。当然,如果那些存在,微码编码本身就是该实现的发明,因为没有通用的微码指令集,每个人都使用...