CPU、I/O、メモリ

先週から、啓二さんにマイコンに関して教わることになった
哲さん。今日も、愛犬ロボの散歩と啓二さんの仕事部屋へと
やってきた。愛犬ロボは、まだ啓二さんのところのAibo
には慣れない。まあ、ロボにとってAiboは同類ではない
ので、当たり前かも知れないが。
今日は、コンピュータの3機能の話らしい。
哲  :こんちは。やってきたぞ。
啓二:ちょっと待て。片づけるから。
哲  :汚い部屋だな。掃除しているのか。
啓二:徹夜して仕事を仕上げていたから、汚いんだよ。
      ハードウエアのバグかソフトのバグかわからずに、調べていたら
      夜が明けていた。少し、眠い。ちょっと、外で待っていてくれ。
     (部屋の外で、哲さんは手持ちぶさたで待っている)

哲  :家事手伝いロボットが必要なのは、お前の方じゃないのか。
啓二:そうかもなあ。もう少しで片付くから、散歩して来てくれ。

     (ロボを歩かせて、5分程度で戻ってきて、部屋の外から声をかける)
哲  :おーい、終わったか。
啓二:終わった、終わった。入ってきてくれ。
哲  :さて、今日の話は、3機能だ。
啓二:うん、それでは、3機能を言ってみてくれ。
哲  :CPU、I/O、メモリだよ。


啓二:まず、CPUから解説しよう。
      CPUは、Central Processing Unitの略で、中央処理装置だ。
哲  :中央処理装置のほかに、大型計算機ではチャネルなんてのがあるなあ。
啓二:うん、メインフレーム(大型計算機)なら、通信や入出力を専用
      コンピュータのチャネルにやらせるから、CPUだなあ。
      でも、マイコンの場合は、通信も入出力も制御は、CPUが担当する。
      命令で開始、停止、情報伝送のトリガーをかけるからCPUという
      名称が妥当だと言える。
哲  :マイコンのI/Oには、どんなのがあるんだ。
啓二:単純なデジタル入力と出力の他に、タイマー/カウンタやシリアル通信
      およびA/Dコンバータ、D/Aコンバータがある。
哲  :結構いろいろあるんだなあ。ところで、USBはないのか。
啓二:USBをI/Oとして内蔵しているマイコンもある。ただし、USB
      はシリアル通信なので、その中に含めているマイコンもある。
      少し外付け回路を加えてみるとUSBを扱えるマイコンが大半
      だけれどね。
哲  :A/D、D/Aって何だよ。
啓二:今のコンピュータは、デジタル信号を処理するのが大半なんだ。
      ところが、温度や光のような物理量はアナログ信号。アナログ信号を
      デジタル信号にしないと処理できないので、A/Dコンバータが必要
      になる。
      また、場合によっては、アナログ信号しか受付けない機器があるので、
      D/Aコンバータが必要になるんだ。


哲  :ワンチップマイコンって、情報を扱うよりも、機器を扱うことが
      多いんだ。
啓二:そう。Windowsマシンが、どちらかというと情報を扱うのに対して、
      マイコンは機器を扱うことが多い。どちらも情報と機器を扱えるけれど、
      Windowsマシンで、電気炊飯器を動かしてはいないだろう。ワンチップ
      マイコンは、単機能の製品向けのコンピュータと考えるとよい。
      携帯電話は、最近は情報携帯端末と分類されるけれど、元々は電波を
      利用した電話の機能だけだったでしょ。
哲  :そうだなあ。じゃ、タイマー/カウンタは何に使うんだ。
啓二:Windowsマシンは、イベントドリブンでプログラムするだろう。OSが
      介在するからイベントドリブンでいけるんだ。
      ところがワンチップマイコンの場合には、OSを入れないことがある
      から、イベント対応処理を実現したいと困る。
      そこで、タイマーを利用して周期的にイベントを発生させて処理する。
      カウンタは、あるイベントが何度発生したかで、処理開始・停止させたい
      ようなときに使うのさ。
哲  :わかったような、わからないような。
啓二:実際に何かイベントで動くプログラムを作成するとわかるさ。そうだな、
      後で時計を作ってみるか。時計は、タイマー/カウンタ機能そのものだ
      から、よく理解できると思うよ。そうそう、ロボットの間節を動かすとき
      にも、カウンタを使ったりする。角度をカウンタの値をみなして、これ
      以上大きくすると破壊してしまうとかを監視できる。
哲  :じゃ、メモリについて解説してくれよ。
啓二:ほい来た。最近のワンチップマイコンは、メモリにROMとSRAMを
      もち、ROMには、フラッシュメモリとEEPROMを使うことが多い。
哲  :フラッシュメモリとEEPROMって、どう使い分けるんだよ。
啓二:フラッシュメモリは、プログラムを入れるんだ。そしてEEPROMは
      動作中に発生したデータを保存しておいたりする。SRAMは電源を
      与えておかないと情報を保持できないが、EEPROMだとデータを
      保存すると電源を与えなくても保持しておける。それで、フラッシュ
      メモリとEEPROMの両方を持っているマイコンが多い。
哲  :SRAMの容量は、どの程度あるのかな。マイコンによって違うだろう
      けど。
啓二:30バイト程度から4kバイト程度まで幅が広いよ。ワンチップ
      マイコンの性能を引き出すには、データシートを入手して調べる
      必要がある。
      マイコンによっては、英文のデータシートしか用意されないことが
      あるので英語ができるようでないと駄目だね。
哲  :うちの子供に、何故英語を勉強するんだと聞かれたことがあるんだ。
      ロボットを動かすために必要とでも答えるといいだろうか。
啓二:それでいいんじゃないの。日本の教育に欠落しているのは、何に役に立つ
      のと言われたときに、周囲の大人が自信をもって答えられないことじゃ
      ないかと思うの。ただ勉強しろじゃ駄目だし、説得力がないんだなあ。
      中学生にもなると自我が発達してくるから、自分が納得しないと動か
      なくなるだろう。
哲  :うん。
啓二:勉強しろというならば、将来こういうことに役に立つんだ
      と言えないとね。せっかくロボットに興味を持っても、英語
      という壁があって、先に進めないのではねえ。数学にしてもそう。
      ハードウエアを作るときに、計算は絶対に必要だし、ロボットを
      動かすときには、微分や積分も必要になる。
哲  :中学生に、微分積分は早いのではないかな。
啓二:あのねえ、厳密な数学の微分や積分は教えなくてもいいけれど、
      概念は知らないとまずいの。微分と積分がまずいならば、差分と
      積算でもよいよ。
哲  :差分なんて、実生活でも使わないだろう。
啓二:使っているよ。自動車の運転をしているなら絶対に使っている。
      積算も使っている。まあ、この話は、後で実際にロボットを作った
      ときにでもまた出てくるので、深入りするのはやめよう。
哲  :ワンチップマイコンから、教育の話になったなあ。
啓二:徹夜したから、眠くなってきた。今日はこれまでにしよう。
      お疲れさん。

戻る