📜  计算机组织 |指令格式问题解决

📅  最后修改于: 2021-09-28 10:13:57             🧑  作者: Mango

先决条件 – 基本计算机指令,指令格式
指令格式定义了指令的不同组成部分。指令的主要组成部分是操作码(要执行的指令)和操作数(要执行的指令的数据)。以下是与指令格式相关的不同术语:

  • 指令集大小——它表示处理器中定义的指令总数。
  • 操作码大小——操作码占用的位数,通过对指令集大小的对数计算得出。
  • 操作数大小 –它是操作数占用的位数。
  • 指令大小 –它计算为操作码和操作数占用的位之和。

在本文中,我们将讨论基于 GATE 中要求的指令格式的不同类型的问题。关于不同类型指令格式的详细信息,您可以参考:指令格式

类型 1:给定指令集大小和操作数大小及其计数,找出指令的大小。
在这类问题中,您将获得指令集的大小、操作数的数量及其大小,您必须找出指令的大小。

Qu-1。考虑一个具有 64 个寄存器和一个大小为 12 的指令集的处理器。每条指令有五个不同的字段,即操作码、两个源寄存器标识符、一个目标寄存器标识符和一个 12 位立即数。每条指令都必须以字节对齐的方式存储在内存中。如果程序有 100 条指令,则程序文本消耗的内存量(以字节为单位)是____________。 (2016 年大门)
(一) 100
(乙) 200
(C) 400
(四) 500

解决方法:可以这样处理:

  • 指令由操作码和操作数组成。给定大小为 12 的指令集,操作码需要 4 位 (2^4 = 16)。
  • 由于总共有 64 个寄存器,因此需要 6 位来识别一个寄存器。
  • 由于指令包含 3 个寄存器(2 个源 + 1 个指定),因此寄存器标识符需要 3 * 6 = 18 位。
  • 给定的立即数需要 12 位。
  • 指令的总位数 = 4 + 18 + 12 = 34 位
  • 指令需要以字节对齐的方式存储。 34 位之后最近的字节边界是 40 位(5 个字节)。
  • 因此,对于 100 条指令,所需的内存为 5 * 100 = 500 字节,正确的选项是 (D)。

类型2:给定指令大小、操作码大小和一些操作数的大小,找出剩余操作数的大小和最大值。
在这类题中,你会得到指令的大小、操作码的大小、操作数的数量和一些操作数的大小,你必须找出剩余操作数的大小或最大值。

阙2。一个处理器有 40 条不同的指令和 24 个通用寄存器。一个 32 位指令字有一个操作码、两个寄存器操作数和一个立即数操作数。可用于立即数字段的位数是_______。 (GATE CS 2016)

解决方法:可以这样处理:

  • 由于处理器有 40 条指令,因此操作码的位数 = 6 (2^6 = 64)
  • 由于处理器有 24 个寄存器,因此一个寄存器的位数 = 5 (2^5 = 32)
  • 2 个寄存器占用的总位数和操作码 = 6 + 5 + 5 = 16。
  • 由于给定的指令大小为 32 位,操作数的剩余位 = 32-16 = 16 位。

Qu-3。机器具有 32 位架构,具有 1 个字长的指令。它有 64 个寄存器,每个寄存器的长度为 32 位。它需要支持45条指令,除了两个寄存器操作数外,还有一个立即数操作数。假设立即数为无符号整数,则立即数的最大值为___________。 (GATE CS 2014)

解决方法:可以这样处理:

  • 由于机器具有 32 位架构,因此,1 个字 = 32 位 = 指令大小
  • 由于处理器有 64 个寄存器,因此一个寄存器的位数 = 6 (2^6 = 64)
  • 由于处理器有 45 条指令,因此操作码的位数 = 6 (2^6 = 64)
  • 2个寄存器占用的总位数和操作码= 6 + 6 + 6 = 18。
  • 由于给定的指令大小为 32 位,剩余位留给立即操作数 = 32-18 = 14 位。
  • 使用 14 位的最大无符号值 = 2^14 – 1 = 16383 这就是答案。

类型 3:具有不同指令类别的指令格式
在此类问题中,您将获得不同类别的说明。您必须找到给定类型的最大可能指令。

Qu-4。一个处理器有 16 个整数寄存器(R0、R1、…、R15)和 64 个浮点寄存器(F0、F1、…、F63)。它使用 2 字节指令格式。指令分为四类:Type-1、Type-2、Type-3 和 Type-4。Type-1 类由 4 条指令组成,每条指令有 3 个整数寄存器操作数 (3R)。 Type-2 类别由 8 条指令组成,每条指令有 2 个浮点寄存器操作数 (2F)。 Type-3 类由 14 条指令组成,每条指令有一个整数寄存器操作数和一个浮点寄存器操作数(1R+1F)。 Type-4 类别由 N 条指令组成,每条指令都有一个浮点寄存器操作数 (1F)。

N 的最大值是________。 (GATE-CS-2018)

解决方法:可以这样处理:

  • 由于机器有 2 字节 = 16 位指令格式,因此,可能的编码 = 2^16。
  • 由于处理器有 16 个整数寄存器,因此一个整数寄存器的位数 = 4 (2^4 = 16)
  • 由于处理器有 64 个浮点寄存器,因此一个浮点寄存器的位数 = 6 (2^6 = 64)。
  • 对于具有 4 条指令的 1 类指令,每条指令具有 3 个整数寄存器操作数(4*3 = 12 位)将消耗 4 * 2^12 = 2^14 个编码。
  • 对于具有 8 条指令的 2 类指令,每条指令具有 2 个浮点寄存器操作数(2*6 = 12 位)将消耗 8 * 2^12 = 2^15 个编码。
  • 对于具有 14 条指令的 3 类指令,每条指令具有 1 个整数寄存器和 1 个浮点寄存器操作数(4 + 6 = 10 位)将消耗 14 * 2^10 = 14336 个编码。
  • 对于类型 4 类别指令,剩余编码数 = 2^16 – 2^14 – 2^15 – 14336 = 2048。
  • 对于具有 N 个指令的类型 4 类别,每个指令具有 1 个浮点寄存器操作数(6 位)将消耗 N* 2^6 = 2048(从上一步计算)。因此,N = 32。