认识计算机中的简单指令集

        我们现在有了一个新的寄存器,叫做指令寄存器。它包含一个字节,不同的内容表示控制部分的不同操作模式。也被称为指令代码。指令寄存器是一个字节,因此可能有多达256条不同的指令。所有指令都涉及在总线上移动字节。指令将导致字节进出RAM,进出寄存器,有时通过ALU。下面我们来认识一下计算机中简单的几种指令集吧。

算术逻辑指令

        第一类指令时使用ALU的类型,像前面提到的ADD,NOT,SHL等8种类型,有的类型有两个字节的输入,有的类型有一个字节输出。所以ALU这类指令将选择一个ALU操作和两个寄存器。

        指令代码有8个bit,当第一个bit是1时候,表示这是一条ALU指令,然后接下来三bit告诉选择ALU的哪个操作,接着两bit是选择的一个寄存器,在接着两bit是选择的另外一个寄存器。

        因此如图,ALU指令(1)将(000)寄存器2(10)和寄存器3(11)相加,并将答案放入寄存器3,将是:1000 1011。布线如下:

        上面是算术逻辑指令的代码,为了更好的记着这些CPU指令的含义,有这样一个速记发明,它被称为计算机语言,ALU指令产生的新语言的前八个单词是如下,当一个人想要编写一个计算机程序时,他可以直接在指令代码中编写,或者使用计算机语言。当然,如果你用计算机语言编写一个程序,它必须被翻译成实际的指令代码,然后才能放入RAM并执行。

加载与存储指令

        加载和存储指令非常简单。它们在RAM和寄存器之间移动一个字节。

        前面ALU指令是IR第一位打开,还有八种类型不是ALU指令,第一位关闭时候进入这八种类型指令,并使用IR的接下来三位来准确地告诉我们我们有哪种类型的命令。

        本节介绍使用解码器前两个输出的指令,即IR以0000或0001开头时出现的指令。第一条指令将一个字节从RAM移动到寄存器,这称为“加载”指令。另一个则相反,它将一个字节从寄存器移动到RAM,称为“存储”指令。

        Load指令的指令代码为0000,Store指令的指令码为0001。在这两种情况下,剩余的四位都指定了两个寄存器,就像ALU指令一样,但在这种情况下,一个寄存器将用于选择RAM中的一个位置,另一个寄存器则将从该RAM位置加载或存储到该RAM位置。

        对于这两个指令,步骤4是相同的。其中一个寄存器由IR位4和5选择,并在总线上启用。然后将总线设置为MAR,从而在RAM中选择一个地址。

        在步骤5中,IR位6和7选择另一个CPU寄存器。对于Load指令,RAM被启用到总线上,总线被设置到所选寄存器中。对于存储指令,所选寄存器被启用到总线上,总线被设置到RAM中。这些指令中的每一个只需要两个步骤就可以完成,第6步什么不做。

数据指令

        数据指令所做的只是将一个字节从RAM加载到寄存器中,就像上面的load指令一样。但它的不同之处在于,它需要指令在RAM中的哪个位置获得该字节。

        在Data指令中,数据来自下一条指令的位置。所以你可以考虑这个指令实际上有两个字节!第一个字节是指令,下一个字节是一些将被放入寄存器的数据。这个数据很容易找到,因为当我们在IR中有指令时,IAR已经更新了,所以它指向这个字节。

        这是Data指令的指令代码。第0位至第3位为0010位。第4位和第5位未使用。第6位和第7位选择将加载第二字节数据的寄存器。

        这条指令需要做的就是,在步骤4中,将IAR发送到MAR,在步骤5中,将RAM发送到所需的CPU寄存器。然而,还有一件事需要发生。由于指令的第二个字节只是可以是任何数据的数据,所以我们不希望将第二个字符作为指令执行。我们需要第二次向IAR添加1,以便它跳过这个字节并指向下一条指令。我们将以同样的方式在步骤1和3中执行。在步骤4中,当我们将IAR发送到MAR时,我们将利用ALU正在计算IAR加上一些东西的事实,同时我们将打开“总线1”,并将答案设置为ACC。步骤5仍然将数据移动到寄存器,在步骤6中,我们可以将ACC移动到IAR。

        这是数据指令形成的计算机语言:

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
《超标量处理器设计》讲述超标量(SuperScalar)处理器的设计,现代的高性能处理器都采用了超标量结构,大至服务器和高性能PC的处理器,小至平板电脑和智能手机的处理器,无一例外。《超标量处理器设计》以超标量处理器的流水线为主线展开内容介绍。《超标量处理器设计》主要内容包括超标量处理器的背景知识、流水线、顺序执行和乱序执行两种方式的特点;Cache的一般性原理、提高Cache性能的方法以及超标量处理器的Cache,尤其是多端口的Cache;虚拟存储器的基础知识、页表、TLB和Cache加入流水线后的工作流程;分支预测的一般性原理、在超标量处理器使用分支预测时遇到的问题和解决方法以及如何在分支预测失败时对处理器的状态进行恢复;一般的RISC指令集体系的简单介绍;指令解码的过程,尤其是超标量处理器指令解码;寄存器重命名的一般性原理、重命名的方式、超标量处理器使用寄存器重命名时遇到的问题和解决方法以及如何对寄存器重命名的过程实现状态恢复;指令的分发(Dispatch)和发射(Issue)、发射过程的流水线、选择电路和唤醒电路的实现过程;处理器使用的基本运算单元、旁路网络、Cluster结构以及如何对Load/Store指令的执行过程进行加速;重排序缓存(ROB)、处理器状态的管理以及超标量处理器对异常的处理过程;经典的Alpha21264处理器的介绍。在本书使用了一些现实世界的超标量处理器作为例子,以便于读者加深对超标量处理器的理解和认识。 《超标量处理器设计》可用作高等院校电子及计算机专业研究生和高年级本科生教材,也可供自学者阅读。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Briwisdom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值