CPUって何? 〜基本情報技術者合格のためのブログ〜

CPUって何?基本情報

CPUって何?〜基本情報技術者合格のための学習法〜

CPUって何?

 CPUとはCnetral Processing Unitの略で、「中央処理装置」「中央演算処理装置」とも呼ばれる部品で、コンピュータの中枢として活躍しています。

 人間で例えるなら、「脳」に例えられることがあります。他にも

脳 = CPU
作業スペース = メモリ
倉庫 = ハードディスク

などとパソコンの部品を説明するときにこのようによく例えられています。

 CPUの中には「制御装置」と「演算装置(ALU)」が組み込まれています。

制御装置

プログラムの命令を解釈して、コンピュータ全体の動作を制御する装置です。

演算装置(ALU)

算術演算(四則演算)や論理演算などの計算を行う装置です。

コンピュータの5台装置

コンピュータはCPUだけあっても用を為しません。

読み込んだり、入力したり、記憶したりとユーザーが意思を伝える装置が必要です。

 このように、コンピュータは「入力装置」「出力装置」「記憶装置」「演算装置」「制御装置」の装置が連携して、動いています。

これら5つの装置を総称して、コンピュータの5大装置(5大要素)

と呼びます。

入力装置

パソコンにデータを入力するための装置です。

この装置がなければ私たち人間はパソコンを操作することができません。

例:マウス、キーボード、スキャナ、バーコードリーダー、マイクなど

出力装置

人間に理解できるかたちに出力するための装置です。

例:ディスプレイ、プリンタ、スピーカーなど

記憶装置

処理に関する情報やプログラムやデータなどのファイルを記憶・保存するための装置です。主記憶装置 と 補助記憶装置 に大分されます。

主記憶装置

動作するために必要なデータやプログラムを一時的に記憶する装置です。コンピュータの電源を切ると、内容は削除されてしまいます。

例:メモリなど

補助記憶装置

データやプログラムを長期的に記憶する装置です。コンピュータの電源を切っても、主記憶装置のように内容は削除されることはありません。

例:HDD SSD CD-ROM DVD-ROM Blu-rayなど

演算装置

パソコンの頭脳にあたる装置で、四則演算(足し算・引き算・掛け算・割り算)や大小比較など、さまざまな計算を行う装置です。

演算は2進数の加法(足し算)のみで、行います。

例:CPU

制御装置

プログラムの命令を解釈して実行に必要な信号を送り、システム全体を制御するための装置です。つまり、入力装置、出力装置、記憶装置、演算装置の制御をする装置です。

例:CPU

ノイマン型コンピュータ

現在、広く利用されいてるコンピュータは、殆どがこのノイマン型コンピュータです。
コンピュータに処理をさせるためのプログラムは、通常ハードディスクやCD-ROMなどの補助記憶装置におさめられています。
CPUが直接やりとりをするには主記憶装置ですから、プログラムを実行させるためるには、その主記憶装置にあらかじめプログラムを移してあげなければいけません。

プログラム内蔵方式

処理するデータおよびプログラムをあらかじめ主記憶装置に記憶する「ストアドプログラム」とも呼ばれます。

逐次制御方式

CPUが主記憶からプログラムの命令やデータを一つずつ順に実行する

このような特徴を持つコンピュータを「ノイマン型コンピュータ」とい言います。

つまり、ノイマン型コンピュータとは

プログラムをメモリに置いて、その中の命令に従って、データを処理していく」という動きです。

レジスタ

CPUが命令を実行するために取り出した情報は、

レジスタと呼ばれるCPU内部の記憶装置に保持されます。

メモリとレジスタの違いは、以下のようなことです。

レジスタはCPU内部にあり、データを加工するために一時的に、記憶さ せるます。また、加工結果も記憶します。
メモリに比べて、レジスタの記憶領域は少ないです。COMET IIの場合、メモリーのアドレス数は65536個あるに対して、レジスタは20~30個程度です。
メモリは番地を指定して目的のデータにアクセスします。レジス タは名前を指定して、目的のデータにアクセスします。
CPUのデータのアクセススピードは、レジスタの方 が速いです。

レジスタの種類とそれぞれの役割

レジスタには、以下のような種類があります。

名称役割
プログラミング役割
プログラムカウンタ次に実行するべき命令が入っているアドレスを記憶するレジスタ
命令レジスタ取り出した命令を一時的に記憶するためのレジスタ
インデックスレジスタアドレス装飾に用いるためのレジスタです。
連続したデータの取り出しに使うための増殖値を保持します。
ベースレジスタ演算の対象となる数や、演算結果を記憶するレジスタ
アキュームレジスタ演算の対象となる数や、演算結果を記憶するレジスタ
汎用レジスタ特に機能を限定していないレジスタです。
一時的な値の保持や、アキュムレータなどの代用に使ったりします。

これらのレジスタの他にCPUを構成する代表的な装置として、

「ALU」「命令デコーダ」があります。

ALU( Arithmetic and Logic Unit )

 算術演算(四則演算)や論理演算などの計算を行う装置 のことで、加算器や論理演算器などの演算回路を持って様々な演算を行うことができます。

命令デコーダ

命令レジスタに読み込まれた命令の内容を解読して、実行の準備をする装置のこと。 機械語の命令を解読して、他の装置へ制御信号を出します。

これらの装置を組み合わせてCPUができているのです。

命令の実行手順

どのように命令が実行されていくのかの手順です。

命令の取り出し(フェッチ)

取り出すべき命令がどこにあるのかは、プログラムカウンタが知っています。

プログラムカウンタの示すアドレスを参照して命令を取り出し、それをレジスタに記憶させます。

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

命令の解読(デコード)

命令レジスタに取り出した命令というのは、次の構成で出来ています。

命令部の中身が命令デコーダと送られます。

命令デコーダは、命令部のコードを読解して、必要な装置に、制御信号を飛ばします。

対象データ(オペランド)読み出し(リード)

処理の対象となるデータ(オペランド)は、命令レジスタのオペランド部を見ると、在り方がわかるようになっています。

この手順では、オペランド部を参照して対象データを読み出し、それを汎用レジスタなどに記憶させます。

命令実行(エクセキューション)

汎用レジスタから処理対象のデータを取り出して演算し、演算結果を描き戻して終了です。

終わったらまた実行手順1に戻って繰り返します。

機械語のアドレス指定方式

アドレス指定方式とは

アドレス指定方式とは、CPUが命令を実行する際、対象となるデータの在りかを指定する方法のことです。

コンピュータに指示を伝えるためには、コンピュータが理解できる言葉で命令を伝えないといけません。

それが機械語で、「0」と「1」で構成された命令語です。

命令語は「命令部」と「オペランド部」で構成されています。

オペランド部

処理の対象となるデータの在りかを示しています。

例)メモリのアドレスなど

命令とは「何を(オペランド部)どうするか(命令部)」という記述になっています。

ただ、命令の種類によってオペランド部に必ず「メモリのアドレス」が入っているわけではありません。

オペランド部のアドレスは形式が決まっているわけではないので、何らかの計算によってアドレスを求める必要があります。

これをアドレス指定(アドレス修飾)と呼びます。

アドレス指定方式(アドレス修飾)

即値アドレス指定方式

オペランド部に対象となるデータそのものが入っている方式です。

そのままデータが入っているので、メモリへの参照は行われません。

オペランド部のデータをそのまま利用します

直接アドレス指定方式(絶対アドレス指定方式)

オペランド部に記載してあるアドレスが、そのまま実効アドレスとして使える方式です。

この方式は、そのアドレスを参照すれば、対象のデータを確認できます。

オペランド部のアドレスから、メモリを参照します。
メモリのデータを利用します

間接アドレス指定方式

オペランド部に記載してあるアドレスを経由して、対象となるデータが入っている箇所のメモリアドレスが記されている方式です。

オペランド部のアドレスから、メモリ⑴を参照します
メモリ⑴に記述されているアドレスからメモリ⑵を参照します
メモリ⑵のデータを利用します

インデックスアドレス指定方式

オペランド部の値に、インデックス(指標)レジスタ値を加算することで実効アドレスを求めます。

インデックスレジスタ値

連続したアドレスを扱う時に用いるレジスタで、配列型のデータ処理などで用います。

オペランド部に記述されているインデックスレジスタ番号から、インデックスレジスタの値を取得します
オペランド部の値とインデックスレジスタの値を足した値(アドレス)から、メモリを参照します
メモリのデータを利用します

ベースアドレス指定方式

  オペランド部の値に、ベースレジスタの値を加算することで実効アドレスを求める方式です。

ベースレジスタ

プログラムがメモリ上にロードされた時の先頭のアドレスを記憶しているレジスタです。

ベースアドレス指定方式は、プログラムの先頭アドレスからの差分をオペランド部で指定している方式です。

プログラムがメモリ上のどこでロードされても、命令を変更する必要が無いメリットがあります。

ベースレジスタから、先頭アドレスの値を取得します
オペランド部の値と先頭アドレスの値を足した値(アドレス)から、メモリを参照します
メモリのデータを利用します

相対アドレス指定方式

オペランド部の値に、プログラムカウンタの値を加算することで実効アドレスを求めます。

プログラムカウンタに格納されているのは、次に実効される命令へのメモリアドレスです。

つまり、この方式はメモリ上にロードされたプログラムの中の命令位置を基準として、そこからの差分をオペランド部で指定します。

ベースレジスタを持たない場合でも、命令を変更する必要が無いメリットがあります。

プログラムカウンタから、次に実効される命令のアドレスを取得します
オペランド部の値と次に実効される命令のアドレスを足した値(アドレス)から、メモリを参照します
メモリのデータを利用します

cpuの性能指標

CPUの性能は、クロック周波数やCPI,MIPSなどの指標値を用いて評価されます。

クロック周波数

クロックが1秒間に繰り返される回数のことです。

例)「クロック周波数1GHzのCPU」だと1秒間に10^9回(10億回)繰り返します。

コンピュータの色々な装置を「クロック」と呼ばれる周期に合わせて動くようになっています。

そうすることで、装置同士のタイミングを同調できるようになります。

このクロックの時間が短ければ短いほど、より多く処理ができます。

1クロックに要する時間の計算

1クロックに要する時間のことを「クロックサイクル時間」と呼びます。

クロック周波数 = クロック数 / 1秒

なので、

クロックサイクル時間 = 1秒 / クロック数(クロック周波数)

例) 1GHzのCPUですと

  1GHz = 10^9 Hz

CPI( Cycles Per Instruction )

  1命令あたり何クロックサイクル必要かを表します。

   命令の実行に4クロックサイクル必要なら4CPIとなります

CPIの計算方法

   例)1GHzのCPUで、3CPIですと

     クロックサイクル時間 = 1秒 /1Ghz = 10^-9 = 1ナノ秒

     命令実行時間 = 1ナノ秒 * 3クロック = 3ナノ秒

MIPS(Million Instructions Per Second)

 1秒間に実行できる命令の数の平均を百万個単位で表します。

MIPSの計算方法

   例)平均命令実行時間が2ナノ秒ですと

   MIPS = 1秒 / 2ナノ秒 = 1秒 / 2 10^-9 秒 = 0.5 10^-9秒 = 500*10^6 = 500MIPS

cpuの高速化技術

逐次制御方式

 主記憶にある命令を1つずつ順番に実行する処理方法です。1つの命令が終わるまで次の命令は実行されません。

しかし、複数の命令を並列して実行すれば、回路の遊び時間をなくし、処理効率を高めることができます。この手法をパイプライン処理と呼びます。

F: 命令の呼び出し

D: 命令の読解

E: 命令の実行

W: 結果の書き込み

順番ステージ
命令:1FDEW
命令:2FDEW
命令:3FDEW
パイプライン処理

  命令をステージに分割し、ずらしながら同時に実行します。

順番ステージ
命令:1FEDW
命令:2FEDW
命令:3FEDW

スーパーパイプライン

パイプライン処理の各ステージをさらに細分化し、ずらしながら同時に実行します。

順番ステージ
命令:1F1F2E1E2D1D2W1W2
命令:2F1F2E1E2D1D2W1W2
命令:3F1F2E1E2D1D2W1W2

スーパースカラ

複数のパイプラインを使って、同時に複数の命令を実行します。

順番ステージ
命令:1FEDW
命令:2FEDW
命令:3FEDW
命令:4FEDW

CPUのアーキテクチャ

アーキテクチャとは基本設計や設計思想をいう意味です。

CPUにはCISCとRISCの2種類のアーキテクチャがあります。

CISC

CPUに高機能な命令を持たせることによって、一つの命令で、複雑な処理を実現するアーキテクチャです。

RISC

CPU内部に単純な命令しか持たない代わりに、それらのハードウェアのみで実装して、一つ一つの命令を高速に処理ßするアーキテクチャです。

CISCRISC
特徴複雑な命令を処理する単純な命令を高速で処理する
命令の実行方式マイクロプログラム(ソフトウェア)ワイヤードロジック(ハードウェア)
命令の長さ長い(可変長)短い
命令の実行速度遅い速い
パイプライン処理適さない適する

コメント

タイトルとURLをコピーしました