コンピュータにおける命令の実行順序に関する次の記述中の a,b に入れる字句の適切な組合せはどれか。 コンピュータにおける命令の実行順序は, (1) プログラムカウンタの参照 (2) 命令の [a] (3) 次の命令の主記憶アドレスをプログラムカウンタにセットする。 (4) 命令の [b] (5) 命令に応じた処理を実行 (6) (1)へ戻る。 を繰り返す。
平成24年度 秋期 ITパスポート試験 問76
这道题的解析和你的作答记录。
問 76
错误ア
a-解读、b-读取恰好把正确的顺序颠倒了过来,因此错误。在 (1) 这一阶段,从程序计数器所能知道的只有指令所在的主存地址,指令的内容还没有进入 CPU 内部。无法解读手头没有的指令,所以解读不可能排在读取之前。而且按这样的排列,在 (5)「执行与指令相对应的处理」的紧前面所进行的就成了读取,等于在没有判断出是什么指令的情况下就执行,讲不通。
错误イ
b-解读是正确的,但 a-写入是错误的。在 (1) 引用程序计数器之后紧接着进行的,是把该地址上的指令从主存读出到 CPU 的动作,而不是向主存写入什么的动作。指令的执行周期是读取主存中的程序并执行的流程,「写入指令」这样一个阶段本身并不存在。另外,如果说会发生向主存的写入,那也是作为 (5) 执行的结果而存放运算结果等数据的情况,而不是执行之前的取出阶段的事情。
- ウ
正解 正确答案是ウ「a-读取,b-解读」。CPU 在通电期间会不断重复从主存中逐条取出机器语言指令并执行的动作,这一轮循环称为指令的执行周期(指令周期)。题目中的 (1)~(6) 就是把这一轮循环原样排列出来的。首先在 (1) 引用程序计数器(指令地址寄存器)。程序计数器是保存「下一条要执行的指令位于主存的哪个地址」的寄存器,因此在这里就确定了应当取出的指令所在的位置。接着在 (2),把该地址的内容从主存取入 CPU 内部的指令寄存器。这就是指令的读取(指令的取出,即取指令 fetch),所以填入 a 的是「读取」。取入指令后,在 (3) 把程序计数器更新为下一条指令的主存地址。这样一来,在当前取出的这条指令处理完之后,就能在下一轮循环中直接取出紧接着的下一条指令。接下来在 (4),指令译码器(解读器)检查进入指令寄存器的指令,从指令部分判断它是加法、传送还是分支,并从操作数部分求出作为对象的数据的所在位置。这就是指令的解读(译码 decode),所以填入 b 的是「解读」。只有弄清了是什么指令,才能进行 (5) 的「执行与指令相对应的处理」,由控制器向运算器和存储器发出控制信号来推进处理。然后在 (6) 返回 (1)。总之,顺序是「先取出再解读,解读之后再执行」,因此具有 a-读取、b-解读 这一组合的ウ是正确答案。
错误エ
a-读取是正确的,但 b-写入是错误的。(4) 是由指令译码器判断读入的指令在指示什么的阶段,如果把这里当作写入,就会在没有判断出指令种类的情况下进入 (5) 的执行,从而无法确定该做什么处理。写入是把执行 (5) 的结果存放到主存或寄存器中时才出现的动作,而且其对象并不是指令本身,而是被处理的数据。对读入的指令所进行的下一个动作是解读,而不是写入。
- 指令的执行周期的顺序 — 引用程序计数器 → 指令的读取(取指令 fetch)→ 更新程序计数器 → 指令的解读(译码 decode)→ 指令的执行,如此反复。程序计数器是保存下一条要执行的指令的主存地址的寄存器,在取出指令之后会立即更新为下一条指令的地址。
- 承担各阶段的装置与场所 — 指令从主存被读入指令寄存器,指令译码器解读其指令部分以判断指令的种类,控制器则向运算器和存储器发出控制信号使其执行。「取出、解读、执行」的顺序不会互换,而写入是把执行结果作为数据加以存放的场合的动作。