文学部なのにまともに読書経験がないとなると、「なんだお前は、大学で何やってるんだ」という反応がかえってくるのではなかろうか。実際のところは分からないけど、少なくとも俺は、文学部の学生なら常識として夏目漱石とか森鴎外ぐらいの代表作は「常識」として読んだことがあり、粗筋ぐらいは話せるのだろうと思っている。ただこれが非文学部となるとそうではない。自分と同年代の20歳前後の非文学部の学生で、まともに彼らの作品を3冊以上読んだことがある人間はほとんど存在しないはず。「常識」の中身はコミュニティが変われば全く違うからである。
まあこんな当たり前のことを言うのに、なぜわざわざ文学部を持ち出したかというと、自分に置き換えるとどうだろうと思ったからだ。俺は工学部なのだが、工学部として持ち合わせているべき「常識」を果たして有しているのだろうか?
結論から言うと明らかに「No」である。電子工作とかその辺はまるで興味がないし、パソコンを始めとする電子機器の知識もさっぱりだ。いわゆる理数系の科目は得意だったわけだが、工学部である以上理論屋さんには到底かなわない中途半端な知識でしかない。これでは読書を全くしない文学部同然だ。
というわけでなんとなく工学部っぽいことを勉強しようと思ったのだが何をすればいいのか分からない。で何となく本屋のコーナーを歩いていて目に入ったのが「マイコン」という文字。おお、そういやたまーにマイコンがどうのこうのという言葉を聞いたことがあるぞ、じゃあこれにしようってな感じで、一昨日神保町にてマイコンの本を買ったのだ。
早速読み始めたがどうやら少し前に履修した『コンピュータアーキテクチャ』と内容が被っているということが分かった。そして買った本は非常に分かりやすい。『コンピュータアーキテクチャ』履修時に買わされた、薄いくせに3000円もする指定教科書(当然教官自ら執筆したもの)とは大違いだ。
コンピュータ各部の働きは(1)メモリ(2)入出力機器(3)CPUに分けられる。このCPUが非常に小さなLSIになったものをMPU(マイクロプロセッサ)といい、CPUにMPUを用いたコンピュータのことをマイコンという。
マイコンを用いないで電子部品を結線して制御することを(1)ワイヤードロジック制御、マイコンを用いる制御を(2)プログラムドロジック制御という。ここでの大きな違いは仕様変更や拡張を行う際に(1)ではハードを変える必要があるが、(2)ではハードを代えずにソフトを変更するだけで実現できる。
マイコンがどのような処理を行うかはあらかじめメモリに記憶させておくプログラムによって決まる。プログラムとは命令を目的に応じて順序よく並べたものである。メモリには命令を取り出すために1バイトごとにアドレスがつけられている。そしてマイコンを働かせるということはメモリに順序良く並べられた命令を一つずつ実行していくことに他ならない。
つまりプログラム(ソフトウェア)を変更すれば同一のハードウェアからなるマイコンでも違う動作をさせることが可能である。
命令はオペレーション部、アドレス部からなり、2つのグループに大別することが出来る。
(1)データの処理。オペレーション部にはデータの処理の仕方、アドレス部にはデータの所在場所が格納
(2)プログラムの流れを制御。オペレーション部にはプログラムの流れを変える条件、アドレス部にはジャンプ先のアドレスが格納。
命令の語調はオペレーション部だけで構成されるときは1バイト命令といい、アドレス部の大きさに従って2バイト命令、3バイト命令・・・・と続く。
命令は機械語で表される(0と1で表現)が人間が理解しやすいようにニーモニックコードというものがある。
MPUがメモリに格納されているプログラムを取り出して実行していくためには、メモリや入力ポート、出力ポート間でデータの授受する必要がある。そこでバスと呼ばれる信号線を用いる。
(1)データバス・・・・データの転送路。
(2)アドレスバス・・・メモリの何番地、あるいは何番目の入出力ポートとデータの入出力をするのかを指定する。
(3)制御バス・・・・・MPUが、メモリや入出力ポートに対して、データの転送を指示する制御信号を伝える信号線。
(1)は双方向だが(2)(3)はMPUから出力される一方向。
MPU制御部の働き。
制御部はPC(プログラムカウンタ)とIR(インストラクションレジスタ)、命令でコーダからなる。
命令の取り出し
①PCの値をアドレスバスに出力し、メモリに指示。
②読み出し信号を出して、内容をデータバスに読み出す。
③データバスに読み出した命令のオペレーション部をIRのオペレーション部に取り込む。
④PCの値を+1する。
ここで制御部は命令のオペレーション部を調べて、1バイト命令かそれ以上かを判別し1バイト命令ならただちに実行。2バイト命令なら、アドレス部を知る必要があるので④で+1されたPCの値によって指定されるメモリ番地の内容(ここに命令のアドレス部が格納されている)を読み出して、IRのアドレス部に格納し、PCを+1した後命令を実行する。
命令の取り出し段階では、PCによって指定されるメモリ番地の内容(命令のオペレーション部とアドレス部)がIRに読み出され、実行段階ではIRに取り出された命令のアドレス部で指定されるメモリ番地の内容がデータとして演算部に読み出される。
まあ前者はPCに従って命令をメモリから取り出して、後者は命令を実行する為の要素をメモリから取り出すわけか。
このように命令の取り出し段階と実行段階が交互に繰り返される制御を逐次制御という。これが停止するのは停止命令を実行した場合に限る。
演算部の働き
(1)ACC(アキュムレータ)・・・演算結果が得られるレジスタ
(2)F(フラグレジスタ)・・・引き算の結果が0とか桁上げが生じた、等の特定の状態の発生を記憶するレジスタ
(3)ALU・・・演算を行う回路
ACCについて
演算を行うときに演算データ、被演算データ、演算結果格納場所の3つのアドレスを命令のアドレス部で指定すると命令が長くなって効率が悪い。そこで被演算データを保持する場所と結果を格納する場所を同じにすることにして、その役割をACCに持たせる方法をアキュムレータ方式という。(複数の演算を同時平行する時はどうするんだろう?)
フラグレジスタについて
特定の条件が起きたことを記憶しておく働きをするのがフラグレジスタで、1つの条件を記憶するのに1つのフリップフロップが使われる。例えば桁上げの有無を記憶するフリップフロップはキャリーフラグといい、演算結果が0か否かを記憶するのがゼロフラグ。この辺はどうも実例がないとどういう風に使われるのかが分からないな。
メモリ
読み出し・・・読み出したいデータが入っているアドレスをアドレス線に与えておいて、読み出し信号をアクティブにすると読み出しデータがデータ線上に出力される。
書き込み・・・書き込みたいメモリのアドレスをアドレス線に与え、同時に書き込みデータをデータ線上に与えてから、書き込み信号をアクティブにする。
ああそうだなって感じ。
入出力ポートとMPUの関係も同じように考えればよい。入出力先が外部になるということ。
とりあえずここまで。一度読んだことをもう一度書き起こすってのは案外いいもんだ。反芻という言葉がピッタリ。問題はいくらこんな知識を蓄えても俺に単位はやってこないということだ。一方期末試験はもうすぐそこまでやってきている。だが一度この勉強を中断すると再開する自信がない。←ここ重要。さあ今後どうバランスを取るか。
まあこんな当たり前のことを言うのに、なぜわざわざ文学部を持ち出したかというと、自分に置き換えるとどうだろうと思ったからだ。俺は工学部なのだが、工学部として持ち合わせているべき「常識」を果たして有しているのだろうか?
結論から言うと明らかに「No」である。電子工作とかその辺はまるで興味がないし、パソコンを始めとする電子機器の知識もさっぱりだ。いわゆる理数系の科目は得意だったわけだが、工学部である以上理論屋さんには到底かなわない中途半端な知識でしかない。これでは読書を全くしない文学部同然だ。
というわけでなんとなく工学部っぽいことを勉強しようと思ったのだが何をすればいいのか分からない。で何となく本屋のコーナーを歩いていて目に入ったのが「マイコン」という文字。おお、そういやたまーにマイコンがどうのこうのという言葉を聞いたことがあるぞ、じゃあこれにしようってな感じで、一昨日神保町にてマイコンの本を買ったのだ。
早速読み始めたがどうやら少し前に履修した『コンピュータアーキテクチャ』と内容が被っているということが分かった。そして買った本は非常に分かりやすい。『コンピュータアーキテクチャ』履修時に買わされた、薄いくせに3000円もする指定教科書(当然教官自ら執筆したもの)とは大違いだ。
コンピュータ各部の働きは(1)メモリ(2)入出力機器(3)CPUに分けられる。このCPUが非常に小さなLSIになったものをMPU(マイクロプロセッサ)といい、CPUにMPUを用いたコンピュータのことをマイコンという。
マイコンを用いないで電子部品を結線して制御することを(1)ワイヤードロジック制御、マイコンを用いる制御を(2)プログラムドロジック制御という。ここでの大きな違いは仕様変更や拡張を行う際に(1)ではハードを変える必要があるが、(2)ではハードを代えずにソフトを変更するだけで実現できる。
マイコンがどのような処理を行うかはあらかじめメモリに記憶させておくプログラムによって決まる。プログラムとは命令を目的に応じて順序よく並べたものである。メモリには命令を取り出すために1バイトごとにアドレスがつけられている。そしてマイコンを働かせるということはメモリに順序良く並べられた命令を一つずつ実行していくことに他ならない。
つまりプログラム(ソフトウェア)を変更すれば同一のハードウェアからなるマイコンでも違う動作をさせることが可能である。
命令はオペレーション部、アドレス部からなり、2つのグループに大別することが出来る。
(1)データの処理。オペレーション部にはデータの処理の仕方、アドレス部にはデータの所在場所が格納
(2)プログラムの流れを制御。オペレーション部にはプログラムの流れを変える条件、アドレス部にはジャンプ先のアドレスが格納。
命令の語調はオペレーション部だけで構成されるときは1バイト命令といい、アドレス部の大きさに従って2バイト命令、3バイト命令・・・・と続く。
命令は機械語で表される(0と1で表現)が人間が理解しやすいようにニーモニックコードというものがある。
MPUがメモリに格納されているプログラムを取り出して実行していくためには、メモリや入力ポート、出力ポート間でデータの授受する必要がある。そこでバスと呼ばれる信号線を用いる。
(1)データバス・・・・データの転送路。
(2)アドレスバス・・・メモリの何番地、あるいは何番目の入出力ポートとデータの入出力をするのかを指定する。
(3)制御バス・・・・・MPUが、メモリや入出力ポートに対して、データの転送を指示する制御信号を伝える信号線。
(1)は双方向だが(2)(3)はMPUから出力される一方向。
MPU制御部の働き。
制御部はPC(プログラムカウンタ)とIR(インストラクションレジスタ)、命令でコーダからなる。
命令の取り出し
①PCの値をアドレスバスに出力し、メモリに指示。
②読み出し信号を出して、内容をデータバスに読み出す。
③データバスに読み出した命令のオペレーション部をIRのオペレーション部に取り込む。
④PCの値を+1する。
ここで制御部は命令のオペレーション部を調べて、1バイト命令かそれ以上かを判別し1バイト命令ならただちに実行。2バイト命令なら、アドレス部を知る必要があるので④で+1されたPCの値によって指定されるメモリ番地の内容(ここに命令のアドレス部が格納されている)を読み出して、IRのアドレス部に格納し、PCを+1した後命令を実行する。
命令の取り出し段階では、PCによって指定されるメモリ番地の内容(命令のオペレーション部とアドレス部)がIRに読み出され、実行段階ではIRに取り出された命令のアドレス部で指定されるメモリ番地の内容がデータとして演算部に読み出される。
まあ前者はPCに従って命令をメモリから取り出して、後者は命令を実行する為の要素をメモリから取り出すわけか。
このように命令の取り出し段階と実行段階が交互に繰り返される制御を逐次制御という。これが停止するのは停止命令を実行した場合に限る。
演算部の働き
(1)ACC(アキュムレータ)・・・演算結果が得られるレジスタ
(2)F(フラグレジスタ)・・・引き算の結果が0とか桁上げが生じた、等の特定の状態の発生を記憶するレジスタ
(3)ALU・・・演算を行う回路
ACCについて
演算を行うときに演算データ、被演算データ、演算結果格納場所の3つのアドレスを命令のアドレス部で指定すると命令が長くなって効率が悪い。そこで被演算データを保持する場所と結果を格納する場所を同じにすることにして、その役割をACCに持たせる方法をアキュムレータ方式という。(複数の演算を同時平行する時はどうするんだろう?)
フラグレジスタについて
特定の条件が起きたことを記憶しておく働きをするのがフラグレジスタで、1つの条件を記憶するのに1つのフリップフロップが使われる。例えば桁上げの有無を記憶するフリップフロップはキャリーフラグといい、演算結果が0か否かを記憶するのがゼロフラグ。この辺はどうも実例がないとどういう風に使われるのかが分からないな。
メモリ
読み出し・・・読み出したいデータが入っているアドレスをアドレス線に与えておいて、読み出し信号をアクティブにすると読み出しデータがデータ線上に出力される。
書き込み・・・書き込みたいメモリのアドレスをアドレス線に与え、同時に書き込みデータをデータ線上に与えてから、書き込み信号をアクティブにする。
ああそうだなって感じ。
入出力ポートとMPUの関係も同じように考えればよい。入出力先が外部になるということ。
とりあえずここまで。一度読んだことをもう一度書き起こすってのは案外いいもんだ。反芻という言葉がピッタリ。問題はいくらこんな知識を蓄えても俺に単位はやってこないということだ。一方期末試験はもうすぐそこまでやってきている。だが一度この勉強を中断すると再開する自信がない。←ここ重要。さあ今後どうバランスを取るか。