カテゴリー
Free

コンピュータの仕組み0D

スイッチング素子
スイッチング素子

 電気を使って計算をするために必要な部品は電気で操作できるスイッチです。スイッチを組み合わせて回路を作り、最初のスイッチをONにすると電気が次のスイッチに流れます。次のスイッチは前のスイッチがONになった時に更にその次のスイッチに対してONにしたりOFFにしたりします。スイッチのONとOFFを組み合わせて複雑な計算を行います。

 どの計算をする時にどのようにスイッチを組み合わせ行くか設計をしていくわけですが、その時に必要になる理論がブール代数です。

 リレーはコイルに電気が流れると芯が磁石となりCからNOに電気が流れます。電磁石を利用した電気機械です。

 真空管はGからKに電圧をかけるとPからKに電気が流れます。Hに電気を流して内部を加熱しなければならないため制御に使う電力よりも加熱に必要な電力が大きくなってしまいます。

 トランジスタはBからEに電気を流すとCからEに電気が流れます。ここから電子回路の集積化が始まりました。

 FETはGに電圧をかけるとDからSに電気が流れます。Gに電圧をかけるだけで制御できるのでトランジスタよりも電力効率が良く殆どの集積回路はこのFETの原理を利用しています。

カテゴリー
Free

コンピュータの仕組み0C

 12BH7Aという真空管が石川町駅そばのシンコー電機で売っていたので買ってみました。ネットで使い方を調べていると低電圧でも動作させている人が結構いることがわかりました。真空管イコール高電圧と思っていましたがそうでもないようです。せっかくDC-DC変換を発振器に付けたのですが低電圧でも動作するならその方が楽で良いです。アンプを作るわけではないので増幅率や歪はある程度無視します。

低電圧で真空管をスイッチングしてみた
低電圧で真空管をスイッチングしてみた

 7V位でもAND回路であれば動くことがわかりました。

真空管でAND回路を作ってみた
真空管でAND回路を作ってみた

 PCのLINE入力にはオペアンプを経由します。変な電圧がパソコンにかかっては大変です。

双三極管でAND回路を作った
双三極管でAND回路を作った

 ヒーター電圧12Vのところを7Vしかかけていないので点灯していませんが触ると熱くなっています。

測定用ステレオ1倍アンプ
測定用ステレオ1倍アンプ

 ステレオ入力の左に発振器の出力、右にAND回路の出力をつないでパソコンのAudacityで確認します。

ヒーターが温まるまで時間がかかる
ヒーターが温まるまで時間がかかる

 上が入力、下が出力です。AND回路には同じクロック信号を二つの入力に入れていますので、発振器側と同じくAND回路の出力につないだLEDが明滅します。

 ヒーターが熱くなるまで出力が出ないことが良くわかる絵になりました。

まだ出力に出てこない
まだ出力に出てこない

 ヒーターが暖まるにつれて出力が上がってきます。

真空管式AND回路の出力が歪む
真空管式AND回路の出力が歪む

 約2kHzのクロック信号ですがAND回路を出た後波形が崩れています。原因はわかりません。

双三極管でAND回路を作ってみた
双三極管でAND回路を作ってみた

 この時の回路図です。電圧が低いから波形が乱れたのでしょうか。

 カソードから出力を取っていたのですがここで大問題に気づきました。プレートに電圧をかけなくてもグリッドに電圧がかかるとカソード側に電流が流れるのです。上の回路図でいえばGNDに近い入力に電圧をかけるだけでプレートの電圧に関係なくカソード側に電流が流れLEDが明滅してしまいます。

 そもそもAND回路になっていませんでした。

プレート側の電圧を使う
プレート側の電圧を使う

 であればプレート側の電流を使えば良いと後に思いつたので早速試しました。

 ちゃんと二つの入力がONにならないと出力側のLEDが明滅しないことを確認できました。

プレート側からAND回路の出力を取る
プレート側からAND回路の出力を取る

 GNDから遠い方のプレートに電流が流れるかどうかがAND回路として成立するかどうかの条件になります。二つのグリッドに印加されない限り電流が流れないのでAND回路とし成り立っています。

抵抗を幾つか繋いで出力を調整
抵抗を幾つか繋いで出力を調整

 出力は抵抗を調整すれば変えられました。流れる電流が決まっているのでプレートにかける電圧とグリッドにかかる電圧とで上手く調整すればINとOUTを同じにできるでしょう。

プレート側から取った出力の立ち上がり
プレート側から取った出力の立ち上がり

 前と同じようにヒーターが暖まるまで出力が上がりません。真空管が熱電子を制御する素子であることが良くわかります。

プレート側の出力は波形が乱れない
プレート側の出力は波形が乱れない

 振幅が少し変わっていますが波形はかなり類似しています。目視では違いが分かりません。

AND回路へ入力するクロックを21kHzまで上げてみた
AND回路へ入力するクロックを21kHzまで上げてみた

 21kHzまでクロックを上げても大丈夫です。この真空管は可聴範囲よりもずっと高い周波数でも動きます。パソコンのLINEなのでAudacityは正弦波を表示していますが実際は矩形波が出ているでしょう。

  熱電子ではありますが電子の流れをこのように制御して論理回路を作ることができます。後は規模を大きくしていけば初歩的電子計算機を作れます。

 松下電子高槻工場で真空管の製造が停止されたのが1979年だそうです。この真空管はカラーテレビにも使用されていたので最後の方に作られたのかもしれません。既に前年の1978年にはIntel8086が発売されています。もう少し真空管を調べてみたいのですが目的から大きく外れてしまうのでここまでで実験を終えます。

カテゴリー
Free

コンピュータの仕組み0B

 トランジスタまで話が進みましたが、リレーでAND回路の実験をした後、真空管を飛ばしてトランジスタに行くのが少し心残りでした。でも大きなトランスと高電圧を扱うのが真空管回路です。実験のためだけにそれらに必要な準備をすることは気が進みませんでした。

 数日後、NE555実験用発振器で高電圧を作ることができると気付き思い直して真空管で論理回路を作ることにしたのです。

DC-DC変換付NE555発振器
DC-DC変換付NE555発振器

 右上のコンデンサ、コイル、トランジスタ、ダイオードで高電圧を作ります。開放状態で185Vまで昇圧できました。

カテゴリー
Free

コンピュータの仕組み0A

 真空管で電子の流れを制御してON、OFFを繰り返し論理演算ができるようになったのですが大きな問題がありました。真空管自体が大きく発熱を要するので、出来上がったコンピュータが巨大且つ大電力を必要としたのです。

 あらゆる電子装置がそうだったのですが大きく電気をたくさん使うのであれば用途が限られてしまいます。そこで真空管の次に発明されたのがトランジスタという素子です。

 トランジスタも端子が3本ありその内2本に電気を流すために残りの1本が助けるという真空管と同じ働きがあります。真空管は真空の中を熱電子が飛ぶのですがトランジスタは個体の中の電子の流れるを制御するする仕組みです。熱電子ではないのでヒーターで熱くしなくてもいいのです。

トランジスタの動き
トランジスタの動き

 トランジスタはBからEに電気が流れるとCからEにも電気が流れます。その性質を利用してスイッチを作ります。スイッチができてしまえばAND回路やOR回路などの論理回路が作れるようになります。

 1950年代後半から続々とトランジスタを使った計算機が開発されていきます。この頃はリレー式電気計算機、真空管式電子計算機とトランジスタ式電子計算機という世代が異なるテクノロジーが乱立した稀有な時代だったのでしょう。

カテゴリー
Free

コンピュータの仕組み09

真空管の原理は赤色の流れが黄色の流れを助ける
真空管の原理は赤色の流れが黄色の流れを助ける

 真空管を電気を流すところの間に入れます。真空管には制御用の3本の端子があり、電気を流すところの間に入れるので電気が入るところと出るところで端子を二つ使います。

 電源から真空管を通して電気が流れるのですが、余ったもうひとつの端子に電気を流すと、最初に繋いだところの電気が止まったりまた流れ出したりします。この動きをスイッチとして利用します。

 余った端子に電気を入れると真空管がON、電気を入れるのを止めると真空管がOFFになりAND回路やOR回路などの論理回路を構成できます。

 真空管を使うことで電気計算から電子計算に進化しました。真空管は電子の動きを制御するので電子計算と呼ばれるのです。スイッチのON、OFFに機械の動作が無くなりました。

カテゴリー
Free

コンピュータの仕組み08

リレー OMRON G2R-1-H
リレー OMRON G2R-1-H

 スイッチのON、OFFを繰り返してAND回路やOR回路などを組み合わせた論理回路に仕事をさせるのですが、スイッチのON、OFFを人手でやるわけにはいきません。そこで人手で動かさないスイッチが必要となります。

 最初に計算に使われたそのスイッチは継電器、今の言葉でいえばリレーと言います。上の写真がその実物のリレーです。

 リレーの仕組みは簡単で中のコイルに電気を流すと芯が磁石になり、その磁石に吸い付いた鉄片がスイッチのように回路を繋いだり切ったりします。電信時代の技術で電気機械の一部です。1950年代後半にカシオがリレー式の計算機を商用化しています。この計算機は電気の流れを制御して計算を行うので電気計算機となります。

リレー式計算機の動作
リレー式計算機の操作
カテゴリー
Free

コンピュータの仕組み07

スイッチと電球
スイッチと電球

 電池にスイッチと電球をつなぎ、スイッチをONにすると点灯しOFFにすると消灯するようにします。

 スイッチON:点灯
 スイッチOFF:消灯

スイッチと電球の関係はこのように整理できます。

二つのスイッチと電球
二つのスイッチと電球

 今度はスイッチを二つ直列につなぎました。両方のスイッチがONの時にしか電球は点灯しなくなります。

 SW1:ON、SW2:ON → 点灯
 SW1:OFF、SW2:OFF → 消灯
 SW1:OFF、SW2:ON → 消灯
 SW1:ON、SW2:OFF → 消灯

並列にスイッチ二つと電球
並列にスイッチ二つと電球

 今度はスイッチ二つを並列につなぎました。そうするとどちらかのスイッチがONであれば電球が点灯します。

 SW1:ON、SW2:ON → 点灯
 SW1:OFF、SW2:OFF → 消灯
 SW1:OFF、SW2:ON → 点灯
 SW1:ON、SW2:OFF → 点灯

 スイッチを直列につないだものがAND回路といい、並列につないだものがOR回路と言います。

カテゴリー
Free

アナログで乗算

 8ビットマイコンでAIを作ろうと思い、8ビット全盛のころの情報技術に関する古い本を手に入れて勉強しています。古いといっても殆どが昭和の後半から平成の初めですが。その中で電子回路とアナログIC、平成8年初版を読んでいて新しい発見がありました。アナログ系のエンジニアの方からすると当たり前のことだと思いますが、ソフトウェア側から見ると新鮮なこともあるものです。

 その発見とはアナログICで乗除算や平方根、微積分を計算できるということです。普通にそのICは販売されて一般には知らないところで活躍しているようです。加減算はオペアンプでできるというのはアナログ回路を勉強していて比較的早く知り得たのですが乗除算や平方根、微積分までも計算できるとは驚きです。

 このICを手に入れて是非実験したいものです。

カテゴリー
Free

コンピュータの仕組み06

ATX電源
ATX電源

 家庭やオフィスには100Vまで電圧は下がってきています。しかしコンピュータから見るとまだまだ高電圧でしかも交流なので使えません。そこでコンピュータの箱の中で電圧を低くして使えるようにしています。

 電圧を下げる方法としてトランスを使う方法がありましたがこの方法には大きな欠点がありました。トランスが非常に重く多くの金属を必要とすることです。鉄に銅線を大量に巻かなければならないので大きい容量を得ようとすると重量が嵩んでしまうのです。これではコンピュータが必要とする電力を安価で軽量な装置で提供することができません。

 この問題を解決したのはスイッチング電源と呼ばれるものです。家庭用交流電源を直接整流して直流にし、その電気を使って高周波を発振させます。この高周波を高周波トランスを使って電圧を下げてからまた直流にします。この時発振をうまく制御して目的の電圧まで下げます。高周波トランスは電源トランスよりも周波数が高い範囲を目的としているので大幅に小型化できます。スイッチング電源は部品数が多くなりますが従来の電源トランスを使わないため小さなパソコンの中に収納することができるようになったのです。

 発電所からパソコンの中まで電気が到達する様子を簡単に追ってきましたが何度も何度も変換を繰り返してコンピュータが必要とする電圧まで下げてきました。この社会インフラとそれを成し遂げる技術があるからこそ情報機器が発展し普及していったことがよくわかります。

カテゴリー
Free

リレーで論理回路

 リレーが手に入ったので論理回路の実験をしてみました。初期の計算機はリレーでできてたといいます。電気計算機というのでしょうか。

リレー式AND回路

 テスターでは3.625Hzと表示されていますが体感的にはその1/2だと思います。NE555で発振させた信号を二つのリレーで構成したAND回路に入れてみました。トグルスイッチを入れると信号がそれぞれのリレーに入力されます。AND回路なので両方のスイッチが入っていないと出力のLEDが点灯しません。2Hz弱の信号ですが明滅が全て連動している様子が動画でわかります。

リレー式AND回路への入力信号の周波数を上げてみた

 少し周波数を上げてみました。秒あたり5回位のスイッチングを目視で確認できました。

トグルスイッチ
トグルスイッチ
リレー OMRON G2R-1-H
リレー OMRON G2R-1-H
リレー OMRON G2R-1-H
リレー OMRON G2R-1-H
リレー OMRON G2R-1-H
リレー OMRON G2R-1-H
リレー OMRON G2R-1-H
リレー OMRON G2R-1-H
リレー OMRON G2R-1-H
リレー OMRON G2R-1-H
リレー OMRON G2R-1-H
リレー OMRON G2R-1-H
リレー OMRON G2R-1-H
リレー OMRON G2R-1-H
リレーで作った論理回路
リレーで作った論理回路

 秒5回位の動作速度であれば人間には親しみやすい速度ですがリレーの耐久性が気になります。電卓は作れてもやはりCPUは無理でしょう。電気計算機と電子計算機の境がここにあります。ブール代数は19世紀半ばに生まれ、20世紀半ばには商用計算機がリレーで作られています。

カテゴリー
Free

マイコンAIの数学02

 少しブール代数について調べます。ブール代数とは何かはここでは扱わずその応用を勉強します。

ブール代数 ブール代数での方程式 山田 欽一 1964

ブール微分・偏微分 DAS S R ,  SRIMANI P K ,  DATTA C R ,  MANDAL K, Conf Rec Asilomar Conf Circuits Syst Comput 1976

ブール積分 TUCKER J H,  TAPIA M A,  BENNETT A W, Applied Mathematics and Computation 1988

ネットワーク ブーリアンネットワークの固定点数の期待値の定理 森 史,望月 敦史 2017

 難しそうなタイトルが並んでいます。でも論理演算だけで言い換えればTTLだけで演算がどこまでできるか確認しておくことも8ビットマイコンでAIを作る上で必要なことと考えます。結果どれも使えなくてもきっと血となり肉となるでしょう。

カテゴリー
Free

マイコンAIの数学01

 8ビットマイコンを使ったAIを作る上で必要な数学を調べます。知らないところで基礎を固めていてくれている数学ですが、まだ実用化できていないAIを作る時に直接役に立つ数学の分野が新たに見つかるかもしれません。

数値計算

誤差 実数を使ったり無限に繰り返す計算を途中で打ち切ったりすると誤差が出ます。コンピュータは有限の2値の演算しかできないので誤差を正しく管理しないと誤った結果を導いてしまいます。

関数の近似 有限個のデータから近い値を出力する関数を作る考え方は使えそうです。データから特徴を抽出しその特徴さえ覚えていればデータを覚えていなくても再現できるというのは自分の頭にもありそうな気がします。

高精度計算 一つの変数では表現できる値の範囲は少ないですが一つの値を複数の変数を使って表現できれば値の範囲を拡げることができます。

代数方程式 4次方程式までは解法を使い5次方程式以降は近似解を求めるようにします。

数値積分 2値演算を前提にした場合、補間しないか単純な補間であれば使えそうです。

非線形方程式 解析的に扱えないので数値計算に向かないですが世界は非線形満ちています。どのように扱ったらよいかより詳細に調べる必要があります。

連立一次方程式 方程式を解くような仕組みが人工知能に有用かどうか考えると複数の条件から結論(解)を導き出す時に類似しているかもしれません。

常微分方程式 脳の動作を模写するならば必ず必要になるでしょう。

偏微分方程式 脳を模写した時はきっと偏微分だらけのプログラムになると思います。でも8ビットCPUでどう扱ったらよいのでしょうか。ブール代数における偏微分方程式という分野はあるのでしょうか。

行列計算 多次元の計算を行うには配列を作ってその配列に対して計算を実行します。

カテゴリー
Free

コンピュータの仕組み05

変圧器
変圧器

 ドーナツのように穴の空いた鉄に銅線を2箇所巻き付けます。片方は巻き数を多くし、もう片方はそれより少なくします。巻き数の多い方に発電した電気を流します。発電所は交流の電気を作っていますので鉄の部分は極性が交互に変わる電磁石になります。すると同じ鉄に巻いたもう片方の電線に磁力が交互に加わるので発電が起きて電気が出てきます。出す方の電線の巻き数を少なくしておけば電圧が低くなります。

 電圧を変えるところには必ずこのような変圧器が使われています。省電力であれば半導体に置き換えることができるようになってきましたが大電力の変圧はまだこの変圧器が活躍しています。

 ここでも電気を送るときのように損が出ます。高電圧をコイルにかけて鉄を電磁石にしもう一つのコイルでその電磁石からまた発電する。また発電しなければならないため損失が出てしまいます。

カテゴリー
Free

コンピュータの仕組み04

送電
送電

 発電所で電気をたくさん作りあちらこちら利用する所へ送るにはただ電線で繋げばよいわけではないです。効率を良くするために発電所では大きな電力の電気を作っていますが利用する側ではそんなに大きい電気は必要ないからです。

 最初から小さい電気を作って送る方法もありますが電線を流れていく過程で発熱して使ってもいないのに減ってしまいます。大きな電気、言い換えると高電圧の電気を発電所から出して利用するところで電圧を下げて使うと効率が良くなります。

 電線に電流が流れると発熱して損してしまいます。なるべく電流を流さないようにするためには圧だけかけて使う所だけ電流が流れるようにします。

 国土の広い国では発電所から出る電気の電圧をすごく高くしています。日本では数万ボルトから数千ボルトです。家の近くの変電所で数百ボルトまで落とし更に電柱で100から200ボルトにしています。電流を流さない、これが電気を無駄にしない大事な方法です。が、電流が流れないと電気製品が動きません。この矛盾に折り合いをつけて電気を利用しています。

カテゴリー
Free

コンピュータの仕組み03

お湯を沸かす
お湯を沸かす

 コイルの近くで磁石を回転させると電気ができますが、その磁石を回転するためには色々な方法があります。人力以外で昔から回転するものといえば風車、水車でしょうか。

 水車は水の流れる処に羽の付いた軸を入れれば軸が回転するのでそれに磁石を付けて近くにコイルを置けば電気が生まれます。これを水力発電と言います。ダムを作って水の流れを調整すれば回転を制御できるので安定した電気を作ることができます。

 風車は風の流れる処に羽の付いた軸を入れれば軸が回転するのでそれに磁石を付けて近くにコイルを置けば電気が生まれます。風は水と違い溜めることができません。強めたり弱めたりすることもできません。風力発電は安定して電気を作ることができないのです。

 そこで考えたのがお湯を沸かす方法です。口の狭い容器でお湯を沸かせば口から湯気が出ます。火を強めれば湯気の勢いが増し、火を弱めれば勢いが弱くなります。湯気が出るところに羽根のついた軸を置けば回転するので電気が生まれます。丁度いい電気の量になるように火を強めたり弱めたりすれば安定した電気を得ることができます。

 石炭や石油、ガスを燃やしてお湯を沸かせば火力発電、ウランの反応でお湯を沸かせば原子力発電となります。

カテゴリー
Free

コンピュータの仕組み02

発電
発電

 銅線をグルグル巻いてコイルを作り、その近くで磁石をグルグル回します。回転している磁石は、コイルから見るとSがドンドン近ついてきてそれから離れていきます。そうしたら今度はNがドンドン近づいてそれから離れていきます。それを繰り返すとコイルの両端に電気ができます。

 磁石をグルグル回転させると電気ができる、その電気を使って電気製品が動く訳です。太陽光発電は全く違う原理ですが私たちが普段使っている電気のほとんどは磁石をグルグル回して作っています。

カテゴリー
Free

コンピュータの仕組み01

コンピュータは電気で動く
コンピュータは電気で動く

 デジタル回路の基礎の本を読んでいてなぜコンピュータが動くのかをまとめてみようと思いました。どのようにして動いているかが解れば今後の改良を思いつくかもしれません。

 どこから紐解くかを考えるとスタートを極端に前の段階から始めたいと思います。電力の問題がコンピュータの世界でも重要になってきました。なのでコンピュータを動かすために必要な電気を作るところから始めます。

カテゴリー
Free

AIを作ってみよう11

電圧測定
電圧測定

 いくら安価な部品で構築できたとしても運用に費用がかかっては意味がありません。実際の事業として考えると人件費や何やらと運用費はかかりますが、ここでは消費電力について考えます。一般にCPUの消費電力は、


P = fptCV 2 


で表されます。f は動作周波数,、pt はスイッチング確率, C は負荷容量、V は電源電圧です。

 動作周波数を下げる 計算量を減らすことにつながるので動作周波数を下げないで考えます。

 スイッチング確率を減らす 目的の計算以外をさせないようなハードウェア、ソフトウェア設計が可能です。

 負荷容量を減らす いつか1チップ内に集積できれば容量を減らせるでしょう。

 電源電圧を下げる 当面5Vでいつか1〜3.3Vで制御できます。

 動作周波数、スイッチング確率、負荷容量、電圧(FSCVと命名します)に注意を払い設計を進めれば低電力のAIが作れるでしょう。

カテゴリー
Free

AIを作ってみよう10

D28C64C-25
D28C64C-25

 AIを作るための最低限のシルテム構成を考えてみましょう。構成を考える上での条件は
8ビット ー ビット以外でバイトが最小単位だから
マイコン ー 最小の安価なコンピュータだから
ロジックIC ー 論理演算できるから
アセンブラ ー 最も実行効率の良いプログラム言語だから
実数は使わない ー 演算上効率が悪いから
とします。

 8ビットのマイコンは大概16ビットのアドレス空間にアクセスできます。記憶装置は必ず必要なので16ビットのアドレスであれば64KByteのメモリが1セットです。

 RAMを使うと補助記憶装置からデータロードが必要となるのでそれがいらないROMを使います。記憶のアップデートはできませんが計算原理の確認なのでこれで良しとします。

カテゴリー
Free

AIを作ってみよう09

半加算器
半加算器

 AI開発で欠かせないのはどのように計算させるかです。あまりにも多くの計算を短時間で実行しなければならないので、その計算能力によって性能が左右されるだけではなく、そのAIの存在自体をも問われます。

 コンピュータは計算が得意と言われていますが、その計算の中にも得意不得意があります。例えば桁数がある一定の値よりも大きい数値、乗除算を何度も繰り返す計算、極めて小さい数値等です。なぜこのようなことが起こるかというとコンピュータの中で実際に行われている演算とは論理演算だからです。

 論理演算には小数点もなければ桁上がりもありません。計算方法だけ見れば算盤以下です。随分昔ですが算盤の上級者になるとπの算出を暗算でできると聞いたことがあります。論理演算とは電気で計算させるための原始的な方法なのです。

 ではなぜコンピュータは計算では人を凌駕できるのか。それは単純な論理演算を一瞬の間に膨大な回数を実行できるからです。2進数の論理演算を組み合わせて10進数の四則演算や難しい関数演算を行える複雑なハードウェアとソフトウェアでコンピュータはできています。

 最もコンピュータに向いているのは論理演算なのでそれを基本に計算装置を作ることができれば製造費も電気代も安価な高性能AIができるはずです。