電子工作のための備忘録

電子工作や組み込みシステムについての要素技術などについて備忘録も兼ねて書いていきます

コンピュータの3要素とCPUの3要素

前回は組み込みシステムとは何なのかについて触れました.
本稿ではその中核を担う「マイコン」について少し詳しくお話ししていきます.
マイコン」と言うからにはコンピュータの仕組みを見ていきましょう.

コンピュータの3要素

f:id:denshi-beginner:20170624172248p:plain
コンピュータの3要素を上図にまとめてみました.CPU,メモリ,I/Oインタフェースの3要素がバスによって接続されています.
バスってなんだと思われるかもしれませんがとりあえず今は”共通の信号線”と覚えておけば大丈夫かと思います.
コンピュータはよくCPUが頭脳(考える),メモリが記憶(憶える),I/Oインタフェースが五感のように人間に例えられる事があります.
少しイメージが湧いたでしょうか?以下それぞれについて少し詳しく見ていきましょう.

「CPU」実際に演算を行う

CPUは人間の頭脳に相当すると言いましたが,人間のように次は何しようかな〜と自発的に考えるわけではありません.
あらかじめCPUに用意された「AとBを足せ」や「AにBを格納しろ」のような命令(命令セットという)を組み合わせた手順書のようなもの(つまりプログラム)をあらかじめメモリに格納しておいてそれを順次読み出して実行していきます.
このようなコンピュータのことをノイマン型コンピュータと言います.
どのような命令を用意するかは各CPUの構造(アーキテクチャという)に依存します.
この命令セットの用意の仕方によってCPUは大きく次の2つに大別する事ができます.

RISC(Reduced Instruction Set Computer)

命令の種類を出来るだけ減らし,シンプルにする.複雑な命令は単純な命令を組み合わせて実現しなければならないが,命令の長さを固定長にする事ができるのでパイプライン処理が可能になる.要約すると簡単な命令を高速で実行することにより処理速度をあげようとする考え方の事です.

CISC(Complex Instruction Set Computer)

1つの命令でより複雑な処理ができるようにしたもの.各命令によって命令長が異なるためパイプライン処理は行えない.要約すると,各命令によって命令語長や実行サイクル数が異なるが複雑な処理を1つの命令で済ませることで処理速度をあげようとする考え方の事です.

また,CPUにもコンピュータと同様に3要素があります.
f:id:denshi-beginner:20170624190303p:plain

デコーダ

デコーダ(命令デコーダともいう)では,プログラムカウンタ(後述)が指すメモリの番地から命令を読み出してきて,その命令を解読します.この時,命令をメモリから取り出す事を「フェッチ」,命令を解読する事を「デコード」と言います.
CPUは命令をデコードした結果をみて何をするべきかを判断し,ALUを使って演算を行います.
なぜいちいちデコードするのかというと,例えば「AとBを足せ」という命令を実行したい場合,メモリには「AとBを足せ」と直接人のわかる言語では書いておけません.そこで,CPUが分かるマシン語(0と1の組み合わせ)と命令を対応付けておく必要があります.そのため実際のメモリにはマシン語が格納されています.そして読み出してきたマシン語をデコードする事で実際はどのような命令を実行すれば良いのかを判断する訳です.

ALU(Arithmetic and Logic Unit)

ALUとは算術論理演算回路のことです.名前の通り,足し算や掛け算などの算術演算や,論理積(AND)や論理和(OR)やビットシフトなどの論理演算を行います.

レジスタ

レジスタ(置数器)とは,0,1で表現された情報を格納しておく事ができる場所です.演算する値や演算結果を保存する汎用レジスタや,次に実行すべき命令が格納されているメモリのアドレスを格納しておくプログラムカウンタ,演算フラグなどに用いるステータスレジスタなどの特別な機能を持ったレジスタなどがあります.
CPUの内部にどのようなレジスタがあるかということはそのCPUのアーキテクチャに依存します.

「メモリ」記憶する

メモリは人間の記憶に相当すると言いました.つまり,コンピュータにおいては主にプログラムやデータが保存される部分です.
メモリはROMとRAMの2種類に大別する事ができます.

ROM(Read Only Memory)

電源を切っても書き込まれたデータが消えないメモリ(不揮発性メモリという)のことで,主に電源投入時やリセット時に実行するプログラムや,プログラム実行中に変化しない定数の保存などの用途に使われます.一般にROMは書き込んだデータは消去できませんが,最近はフラッシュメモリという不揮発性でありながらデータの書き換えが可能な便利なROMもあります.

RAM(Random Access Memory)

データの読み書きは自由に行えるが、電源を切ると内容が消えるメモリ(揮発性メモリという)のことで,主に,プログラムの変数を保存するといった用途に使われます.
RAMにも構造による違いがあり,構造が複雑で大容量化が難しいが高速アクセスが可能なSRAM(Static RAM)や構造が単純で大容量化が容易だが定期的なリフレッシュ動作が必要で比較的低速なDRAM(Dynamic RAM)があります.

「I/Oインタフェース」CPUと周辺装置を繋ぐ

普段パソコンを使う時にはキーボードやディスプレイ等の周辺装置を繋いで使っています.
マイコンも同様に周辺装置(ハードウェア)と接続して外部の情報を取得したり,外部に情報を発信したりする必要があります.その窓口になるのがI/Oインタフェースです.

以上がコンピュータの3要素のお話です.
次回からは,電子工作をするのに必要な知識である電子回路の基礎についてお話しようと思います.