000000 ランダム
 HOME | DIARY | PROFILE 【お気に入りブログ登録】 【ログイン】

CPUを作ろう ~計算機教材とマイコンと電子工作~

コンピュータ概論


1. コンピュータ概論



1.1 序論
コンピュータは20世紀紅斑に発明された新しい道具である.その出現以来,まだ数十年しかたっていないが,今日多くの人々の何らかの形で恩恵を与えている.直接的にコンピュータを利用することもあれば,旅行の予約など,他者を介して間接的に利用することもある.既に,家電製品などの組み込まれ,無意識のうちにコンピュータを使っていのが現状である.
ここでは,コンピュータの構造を理解するために必要最小限の規模でマイクロコンピュータを考え,その構成,命令,動作シミュレーションを行うことにより,コンピュータの構造について学ぶ.


1.2 コンピュータの構成
 現在実用化されている計算機システムは,1945年にvon Neumannの考案したプログラム記憶方式であり,計算機の記憶装置内に記憶されたプログラム逐次読み出し,解析し,実行する過程を繰り返すものである.コンピュータの基本構成は図1.1に示す.この構成は,計算機の規模によっても本質的には変わらない.算術,論理計算を行う演算装置,プログラムやデータを記憶する記憶装置(メモリ),外部から情報を受け取る入力装置,外部へ情報を伝える出力装置,及び,こらの装置感の信号の制御を行う制御装置がある.演算装置と制御装置はコンピュータのいわば心臓部で,両者をまとめて中央処理装置(CPU)と呼んでいる.

manual1

図1.1 コンピュータの基本構造

コンピュータの形態について,パーソナルコンピュータとマイクロコンピュータについて図1.2に示す.通常のパーソナルコンピュータでは,本体は演算,制御,記憶装置までを含むケースに収納され,キーボード,マウス等の入力装置,及びディスプレイ,プリンタ等の出力装置を用いる.CD-RW,MO等は外部記憶装置の一種である.
入出力が単純でまた,複雑な制御を要しない仕事は,マイクロコンピュータが適しており,多くの製品に実際に組み込まれている.マイクロコンピュータにも様々な形態があり,代表的なマイクロコンピュータであるZ-80等のCPU単独のLSIや,記憶装置,入出力装置とのインターフェースまでを持ったワンチップマイコンがある.これらは,CPUボードとして産業機械に組み込まれたり,家電製品の操作性を向上させるために部品として組み込など,用途に応じて使い分けられている.

manual2

図1.2 コンピュータの形態


1.3 情報の表現とCPUのビット数

 コンピュータとは扱う情報を電気信号として受け取り,電子的な回路により情報を処理し,その結果を電気信号による情報として外部に出力する.つまり,コンピュータとは複雑な電子回路の一種である.最も単純な2進数を電気信号に当てはめれば,様々な情報をコンピュータにより電気的に計算し,処理することができる.
CPUの演算装置が何桁の2進数を扱うかによって,4ビット,8ビット,16ビット,32ビットのCPUがある.現在普及しているパーソナルコンピュータでは32ビットのCPUが用いられているが,4ビット,8ビットのCPUも依然として制御用マイコンに多く使われている.


1.4 プログラミングと言語

 情報を処理するためには,その処理手順をCPUに指示しなければならない.処理手順を作成することプログラミングという.記述されたものをプログラムという.これはコンピュータのハードウェアと対比して,ソフトウェアとも呼ばれる.CPUが処理できる情報は前述のように2進数の電気信号である.そこで,CPUで直接解釈できる2進数でCPUの動作手順を記述する.この2進数による記述を機械語という.しかし,機械語は人間が直接理解しにくい.そこで,我々は機械語を直接記述するのではなく,機械語と一対一対応のアセンブリ言語で動作を記述する方法をとる.例えば,”ADD 0FH”とは,メモリの0FH番地の内容とアキュームレータの内容とを足して,その結果をアキュームレータに入れるという動作を示すアセンブリ言語である.この場合,2進数で対応する機械語は”00001111”であり,16進数では”0FH”である.このように我々はアセンブリ言語でプログラムを記述し,それを機械語に変換する(アセンブル)ことにより,機械語のプログラムを作成する.アセンブリ言語により記述されたプログラムを機械語に変換するプログラムをアセンブラという.一方,我々の使っている概念により近い,Pascal等の高級言語は直接的に機械語に変換できない.高級言語は,構文解析,定数,変数処理,最適化等の処理によりCPUで直接実行できる機械語に翻訳する必要がある.これを行うのがコンパイラである.


1.5 マイクロコンピュータの回路構成

 図1.1に示したコンピュータの基本構造を実現するためには,通常図1.3の様な回路構成を取る.CPUはメモリや,入出力ポートに対してアクセスと呼ばれるデータの読み込みや書き出しを操作を行いながら逐次プログラムを実行する.CPUがデータの読み込みを行う際,CPUが何に対してアクセスするかを示すためアドレス信号を出力しデータを待つ.書き出しの場合,CPUはアドレス信号を出力しつつデータ信号を出力する.回路を効率化するためアドレスやデータ信号はそれぞれアドレスバス,データバスと呼ばれる共用の信号線により接続されている.複数個のメモリや,ポートが存在する場合,アドレスが重複しないようアドレスデコーダと呼ばれる回路を介してアドレスバスとメモリ,ポートを接続する.

 manual4
図1.3 コンピュータの回路構成

 


1.6 CPUの内部構造

 現在様々な種類のCPUが存在するが,一般的なCPUの内部構造の一例を図1.4に示す.レジスタとはCPU内部の一時記憶領域である.アドレスレジスタとデータレジスタは,CPUがメモリやI/Oに対してデータをアクセスするのに用いるアドレス信号とデータ信号を扱うレジスタである.命令レジスタは読み込んだ命令解析するため記憶しておくものであり,プログラムカウンタは次に実行するプログラムのメモリ上の番地を示すものである.アキュームレータは特に演算に用いるレジスタである.ALUは算術・論理演算装置であり,ここに入力されたデータは算術演算,論理演算等の処理をされて出力される.

 CPUはメモリに記憶されているプログラムを逐次読み出しながら実行を行う.まず最初に,フェッチと呼ばれる命令の読み込み動作が行われる.プログラムカウンタの内容がアドレスレジスタに転送され,アドレス信号がアドレスバス出力される.データバスより入力されたデータはデータレジスタにを介して命令レジスタに送られ,命令デコーダにより解析される.
 命令の実行は,制御回路の指示により行われる.解析された命令にあらかじめ割り当てられた動作手順通りに制御回路がレジスタやALU間のデータ転送,演算等を行う.特に演算処理は,アキュームレータを介して行われる.アキュームレータの内容と他のレジスタの内容がALUに入力され,演算結果は再びアキュームレータに記憶される.乗除算等を行う際,演算結果を用いて更に演算を繰り返すことが多いので小規模なコンピュータではこのようなアキュームレータを用いた構造が有利である.

manual5

図1.4 CPUの内部構造例


1.7 フェッチサイクルと実行サイクル

 コンピュータはクロックパルスに同期して動作する.命令の実行は,前述の様に命令の読み出しと,実行の繰り返しにより行われる.命令の実行に必要なサイクルを命令サイクルと呼ばれており,それは1つ以上のマシンサイクルから成る.マシンサイクルは,前述の様に次のサブサイクルより成る.
・フェッチサイクル
 CPUは命令のあるアドレスをアドレスバスを介してメモリに転送する.そのアドレスによりメモリ内の番地が選択され,命令がメモリからデータバスを介してCPUに読み出される.
・実行サイクル
 命令はCPUにより解読され,その命令で決められた操作が実行される.
 典型的なマシンサイクルについて図1.5に示す. 

manual6 
図1.5 典型的なマシンサイクル


1.8 アーキテクチャ

 同じビットのCPUにも,アーキテクチャ(設計法)の違いによって各社から様々なCPUが作られている.CPUのアーキテクチャは大きく分けて2通りある.一つはCISC(Complex Instruction Set Computer)と呼ばれる多種多様な命令を用意し,効率の良いプログラム作成を主眼とした設計である.この場合,ハードウェアが複雑化してしまう欠点がある.もう一つはRISC(Reduced Instruction Set Computer)と呼ばれるもので,命令数を減らし,簡略化することでハードウェアを単純化して高速化を目指した設計である.現在は,CISCとRISCの双方の利点を活かし,欠点を補ったCPUの設計がされてきており,両者の境界がなくなってきている.



Copyright (c) 1997-2018 Rakuten, Inc. All Rights Reserved.