見出し画像

【高校情報 共通テスト対策】CPUの命令実行とレジスタ/教科書準拠・問題集・参考書

CPUの命令実行とレジスタ

CPUの命令実行とレジスタはITパスポートや基本情報技術者試験では頻出です。今後ITパスポートや基本情報技術者試験を受ける高校生が増えると思っています。
教科書の内容だと、ITパスポートレベルまで少し足りないので、基本情報技術者試験の午前が解答できるレベルまで解説を深堀しています。

情報Ⅰ共通テスト対策 書籍出版します!



【資料ダウンロード】

PDFの他、パワーポイント、学習指導案 等の原本も無料提供しています。

情報教育の底上げが目的なので、資料を修正して、学校・塾(営利目的含む)の授業等で利用して頂いて問題ありません。私への連絡不要ですが、利用する際には、YouTubeチャンネル・情報Ⅰ動画教科書・IT用語動画辞典を紹介してもらえると嬉しいです。

■PowerPoint・問題集
https://toppakou.com/info1/download/15_コンピュータの構成要素/15_1_CPUの命令実行手順とレジスタ.pptx

■簡易学習指導案
https://toppakou.com/info1/download/15_コンピュータの構成要素/【学習指導案】15_1_CPUの命令実行手順とレジスタ.docx

【文字おこし】

前回は、CPUや主記憶装置のメインメモリや補助記憶装置等コンピュータの中の仕組みについて説明しました。
今回は、CPUがどのように命令を実行するかの手順について説明していきます。

はじめに、命令実行のざっくりとした流れを説明します。

ハードディスクなどの補助記憶にあるプログラムコードやデータは、必要な時に高速な主記憶装置に格納されます。
まずCPUは、そのプログラムコードつまり命令を主記憶装置から取り出します。
これを命令の取り出しや命令フェッチといいます。

次にCPUは取り出した命令を解読します。これを命令の解読といいます。

そして、命令内に記述があるメモリ上の番地(アドレス)から必要なデータを読み出します。
これを対象データの読み出しや オペランド読み出しといいます。

そして、命令を実行して、次の命令があればまた初めに戻って命令の取り出しから行います。

情報の教科書は命令取り出し、解読、実行の3段階で説明されている場合があります。
将来 IT系国家資格である、ITパスポートや基本情報技術者試験を受ける場合は4段階以上で詳しく掘り下げた知識が必要となるので、今回はこの4段階で説明していきます。

では、さらに詳しくCPU と 主記憶装置(メインメモリ) の処理を見ていきましょう。
理解しやすいように、今回はキャッシュメモリは無しとします。

主記憶装置のメインメモリには番地やアドレスと呼ばれる領域に区切られています。その名の通り、命令やデータが格納されている住所の様なものになります。
命令の取り出しの際にはこの番地が使われます。
今回は16進法で表される4桁の0000~FFFFの番地で説明していきます。

そして中央演算処理装置であるCPUには、演算装置と制御装置があります。

命令を主記憶装置から取り出したら、CPU内部でも一時的に記憶しておかないと処理が途中で止まってしまいます。
CPU内部にも記憶装置があって、これをレジスタと言います。

レジスタには色んな種類があるので掘り下げて説明していきます。
用語の意味を先に説明しますが、用語の意味だけでは分からないと思うので後から具体的な処理で説明していきます。

まずは制御装置の中を見ていきましょう。

まずは、命令レジスタがあります。取り出した命令を一時的に記憶するためのレジスタになります。
命令レジスタは、命令部とオペランド部に分けられます。
命令部はその名の通り、読込しなさいや加算しなさい等の命令が記憶される部分になります。
オペランド部は読みだすべきデータの主記憶装置の番地などを指し示す領域になります。

次に、プログラムカウンタは、次に実行すべき命令が入っている、主記憶装置の番地を記憶するレジスタになります。

制御装置には命令を解読する、命令デコーダがあります。

次に演算装置の中を見ていきます。
まずは、汎用レジスタがあります。これは特に機能を限定していないレジスタで、演算装置内で一時的な値の保持等に利用されます。

そして、ALUと呼ばれる演算装置があります。


――
では実際に、命令やデータを当てはめて説明していきます。

今回命令の種類は4種類使います。

READ 番地 は 主記憶装置の指定された番地番号から、CPUの命令レジスタに命令を読込む命令になります。

ADD 番地 は CPUのレジスタにある値と、主記憶装置の指定された番地の値を加算する命令になります。

WRITE 番地 は CPUのレジスタから、主記憶装置の指定された番地に書き込む命令になります。


STOP は プログラムを停止する命令になります。 
 


では、実際の命令やデータを当てはめてみていきましょう。
3と5の加算を行います。

先に主記憶装置に命令やデータを読み込んでおくことを前提とします。
番地0001に命令READ 番地は0010 番地を指定します。
番地0002に命令ADD 番地は 0011 番地を指定します。
番地0003に命令WRITE 番地は0012 番地を指定します。

番地0004に 命令STOP を指定します。

番地0010は加算対象の データ3 を指定します。
番地の0011には加算対象の データ5 を指定します。

――
プログラムカウンタには一番初めに読み込むメインメモリの番地である0001番地が指定されています。

---
それでは処理を開始します。
まずは命令フェッチでプログラムカウンタにある、0001番地の命令をメモリから取得します。
命令レジスタの命令部にREAD オペランド部に 番地の0010 を書き込みます。

取り出しが終わったら、次の命令に備えてプログラムカウンタを1増加させて2にしておきます。

次に命令の解読を行います。取り出した命令を命令レコーダに渡して READ命令なのでメモリからデータを読み込む必要があると判断します。
つぎは対象データの読み出し及び命令の実行で、オペランド部にある番地のデータをメインメモリから取得して、それを汎用レジスタに格納します。

1つめの命令が終わったので、次の命令の取り出しから行います。
命令フェッチでプログラムカウンタにある、0002番地の命令をメモリから取得します。
命令レジスタの命令部にADD オペランド部に 番地の0011 を書き込みます。

取り出しが終わったら、次の命令に備えてプログラムカウンタを1増加させて3にしておきます。

次に命令の解読を行います。取り出した命令を命令レコーダに渡して ADD命令なのでメモリからデータを読み込む必要があると判断します。
つぎは対象データの読み出し及び命令の実行で、オペランド部にある番地0011のデータをメインメモリから取得して、先ほど汎用レジスタに書き込んだデータと加算するためALUに渡して、3+5の計算結果である8を汎用レジスタに書込みます。

2つめの命令がおわったので
次の命令の取り出しから行います。
命令フェッチでプログラムカウンタにある、0003番地の命令をメモリから取得します。
命令レジスタの命令部にWRITE オペランド部に 番地の0012 を書き込みます。

取り出しが終わったら、次の命令に備えてプログラムカウンタを1増加させて4にしておきます。

次に命令の解読を行います。取り出した命令を命令レコーダに渡して WRITE命令なのでメモリにデータを書き込む必要があると判断します。
そして対象データの読み出し及び命令の実行で、汎用レジスタに格納されている8をオペランド部にある番地0012のメインメモリに書込みを行います。

3つめの命令がおわったので
次の命令の取り出しから行います。
命令フェッチでプログラムカウンタにある、0004番地の命令をメモリから取得します。
命令レジスタの命令部にSTOP を書き込みます。

取り出しが終わったら、次の命令に備えてプログラムカウンタを1増加させて5にしておきます。

次に命令の解読を行います。取り出した命令を命令レコーダに渡して STOP命令なのでここで処理を終了する必要があると判断し、プログラムを停止します。

以上が、3+5の加算処理の流れです。
かなり複雑に感じたと思いますが、コンピュータの世界ではこのような複雑な処理が高速で行われています。

※基本情報技術者試験、ITパスポート過去問解説


この記事が気に入ったらサポートをしてみませんか?