本記事の内容
本記事は、基本情報技術者試験におけるCPUが処理する流れについて、情報及びコンピュータの素人目線から説明する記事です。
以下の基礎理論については、下記URLから御覧ください!
- データの単位、基数変換、負の2進数、2進数の四則演算
- 集合、論理演算、論理回路、オートマトン
- データ構造、アルゴリズム、プログラミング
本記事の位置付け
本記事では、コンピュータを構成する「ハードウェア」について述べます。
具体的なハードウェアとしては、CPU、メモリ、キーボード、ディスプレイなどがあります。
主記憶装置の仕組み
CPUの処理手順を理解するためには、まず「主記憶装置」の仕組みを理解しておくことが重要になります。
故に先に主記憶装置の仕組みについて簡単に述べます(詳しくは後述)。
主記憶装置
主記憶装置とは、命令やデータを格納しておく装置を指す。主記憶装置の内部は細かく区分けされていて、各区画にアドレス(番地)が割り振られています。
目には見えないですが、この装置の中がアドレスで区切られている、ということです。
命令とデータ
CPUはアドレスを指定して、主記憶装置から命令やデータを取り出します。
主記憶装置に格納されている命令とは、プログラm付に書かれた複数ある命令のうちの一つです。
例えば、「◯◯番地のデータを取り出せ」だの「足し算をせよ」だのが書かれています。
また、主記憶装置に格納されているデータとは、「3」やら「5」といった計算の対象となるデータやその計算結果のデータです。
すなわち、
CPUは主記憶装置から「命令」と「データ」を取り出して計算を行い、計算が完了したらその結果(データ)を主記憶装置に格納する。
ということをしているのです。
CPUって何してる①?(スーパーざっくり)
CPU内部の主記憶装置から「命令」と「データ」を取り出して計算を行い、計算が完了したらその結果(データ)を主記憶装置に格納している。
命令の構成
主記憶装置からCPUに読み込まれる命令は、下図のように「命令部」と「アドレス部(用いるデータが主記憶装置のどこにあるかの情報)」で構成されています。
順序としては、英語の文法と似ていて「命令の内容→アドレス」です。
命令部には「足し算をせよ」やら「データを取り出せ」やらの命令が書かれています。
一方では、アドレス部には「処理対象のデータが格納されているアドレス」が書かれています。
レジスタ
主記憶装置から読み込まれたデータは、CPU内のレジスタと呼ばれる記憶装置に格納されます。
レジスタ
レジスタとは、CPUの中にある、命令やデータを一時的に格納する記憶装置である。レジスタには、格納対象ごとにいくつかの種類があります。
基本情報技術者試験では以下の3種類が主として出題されます。
- プログラムカウンタ(プログラムレジスタ):「次の命令のアドレス」を格納するレジスタ
- 命令レジスタ:「命令」を格納するレジスタ
- 汎用レジスタ:「データ」を格納するレジスタ
CPUって何してる②?(スーパーざっくり)
CPU内部の主記憶装置から「命令」と「データ」を取り出してレジスタに一時的に格納し、計算を行い、計算が完了したらその結果(データ)を主記憶装置に格納している。
CPUが命令を処理する流れ
この節でCPUの処理の全体像が見えます。
基本情報技術者試験では、各レジスタの名前やその役割が出題されます。
下図は「CPUが主記憶装置からデータを取り出す流れ」です。
処理は図内の1.〜6.の順序で実行されます。
- コンピュータが起動すると、CPUはプログラムカウンタに格納されている「次の命令のアドレス」を見て主記憶装置に「命令を」取りに行く。
- プログラムカウンタは一度参照されると、自動的に番号を加算して、次の「命令」のアドレスを示すように更新される(上図では1番地→2番地)
- 主記憶装置から命令は「命令レジスタ」に格納される。
なお、主記憶装置から命令を取り出して命令レジスタに格納することを「フェッチ」という。 - 命令はCPU内にある命令デコーダ(命令解読器)という装置で解読される。
- 解読した結果、命令の内容が「4番地にあるデータを取り出せ」という内容ならば、主記憶装置の4番地にあるデータ「3」を取りに行く
- 取り出されたデータは「汎用レジスタ」に格納される。
アドレス指定方式
先程「主記憶装置の内部は細かく区分けされていて、それぞれの区画にアドレス(番地)が割り当てられている」及び「CPUが主記憶装置に格納している命令やデータを取り出す際はこのアドレスを指定する」という主旨のことを述べました。
このアドレスを指定する方法は「アドレス指定方式」と呼ばれ
- 直接アドレス指定
- 間接アドレス指定
があります。
直接アドレス指定
直接アドレス指定
直接アドレス指定とは、アドレス部に有効アドレスが入っている方式である。ここで、有効アドレスとは、「CPUの処理対象となるデータが格納されているアドレス」である。下図を参照すると、現在、命令のアドレス部には「20番地」を指定しています。
主記憶装置の20番地を見に行けば、処理対象のデータを見つけることできます。
すなわち、20番地が有効アドレスです。
間接アドレス指定
関節アドレス指定
間接アドレス指定とは、アドレス部の値が主記憶装置上のアドレスを指し、そのアドレスに有効アドレスが入っている方式である。要するに、アドレス部に入っているアドレスをの中身を見に行くと、そこにもまたアドレスが入っていて、その入っているアドレスの先にデータがある、という正に関節的にデータを参照する方式です。
下図を参照すると、現在、命令のアドレス部には「20番地」を指定しています。
主記憶装置の20番地を見に行くと、そこには「25番地」という値が入っています。
そこで25番地を見に行くと、ようやく処理対象のデータを見つけることができます。
すなわち、25番地が有効アドレスです。
間接アドレスのメリットは、「アドレス部に格納できないような大きなサイズのアドレスを主記憶装置に保存できること」です。
要するに、長ーいアドレスを細切れにして格納できるということです。
というのも、命令のアドレス部の容量には限りがあるためです。
一方で、主記憶装置であれば、大きなサイズのアドレスも保存できます。
故に、扱うアドレスのサイズが大きい場合は、間接アドレス指定を利用することになります。
ただ、間接アドレスのデメリットとしては、主記憶装置へのアクセスが少なくとも2回必要になるため、処理に時間がかかってしまうことです。
割り込み
割り込み
割り込みとは、現在実行中のプログラムを中断して、別のプログラムに切り替えることを指す。割り込みが起こると、CPUはプログラムカウンタ(次に実行する命令のアドレスが格納されているレジスタ)にあるアドレスを別の場所に退避させ、その上で割込んできた命令のアドレスをプログラムカンタにセットします。
その後、割り込みの命令が完了したら、CPUは対比させていたアドレスをプログラムカンタに復活させて処理を再開します。
「何で割り込みなんかするんだよ」という気もしますが、割り込みを行う目的は
優先度の高い命令があった場合に、CPUが他の命令を実行中であっても、優先度の高い命令を先に処理すること
です。
割り込みをすることで、CPUを効率よく利用できるのです。
また、プログラムエラーやハードウェアエラーなど、予測しない問題が起きた場合にも割り込みが発生して問題を解決するための命令が処理されます。
身近で言えば、iPhoneのOSをアプデするときに、ダウンロードしたあとインストールします。
ダウンロードが完了したら、YouTubeを見ていようが何だろうが、ポップアップでインストールを促されますよね。
それです。
内部割込みと外部割込み
割込みは
- 内部割込み
- 外部割込み
に分けられます。
結
今回は、基本情報技術者試験におけるCPUの処理の流れについて、情報及びコンピュータの素人目線から説明しました。
CPUはプロセッサとも呼ばれ、コンピュータにおいて命令を下し処理をする役割を担っています。
CPUの性能は
- クロック周波数
- MIPS
- コア
で測ることができるのでした。
CPUの処理の流れにはレジスタが関わってきて、適宜命令やデータを参照して処理をします。
質問、コメントなどお待ちしております!
どんな些細なことでも構いませんし、この記事に限らず、「定理〇〇の△△が分からない!」などいただければお答えします!
Twitterでもリプ、DM問わず質問、コメントを大募集しております!
コメントをする