前半は主に論理演算の基本が解説されています。後半になると論理回路を組み合わせCPUを構成している基本的な回路であるカウンタ、レジスタ、演算、エンコーダ、デコーダ、マルチプレクサ、デマルチプレクサを説明しています。論理回路からCPUまでをつなぐ流れを勉強できました。
カテゴリー: ニュース
ニュース
測定器を製作する過程で発振器が必要になりNE555で周波数可変発振器を作りました。せっかく発振器を作ったのだからカウンタも整備しました。LEDを16個並べ74LS193を4個使った16ビットバイナリカウンタです。
テスターで周波数を見ながらカウントの様子を観察すると高い周波数になるに従い右側の明滅が目視でき、低い周波数になるに従い左側の明滅が目視できるようになります。数十Hzを超えるとLEDの明滅は目視できなくなります。横に並べたLEDの左から右に一つ進む度に周期が1/2になるので16ビットもあると数百kHzであっても目視できるようになります。
カウンタは周波数を測定する目的ではないので余談でしたが原始的な16ビットディスプレができました。構造が単純なのでそこかしこで活躍してくれるでしょう。
コンピュータの仕組み05
ドーナツのように穴の空いた鉄に銅線を2箇所巻き付けます。片方は巻き数を多くし、もう片方はそれより少なくします。巻き数の多い方に発電した電気を流します。発電所は交流の電気を作っていますので鉄の部分は極性が交互に変わる電磁石になります。すると同じ鉄に巻いたもう片方の電線に磁力が交互に加わるので発電が起きて電気が出てきます。出す方の電線の巻き数を少なくしておけば電圧が低くなります。
電圧を変えるところには必ずこのような変圧器が使われています。省電力であれば半導体に置き換えることができるようになってきましたが大電力の変圧はまだこの変圧器が活躍しています。
ここでも電気を送るときのように損が出ます。高電圧をコイルにかけて鉄を電磁石にしもう一つのコイルでその電磁石からまた発電する。また発電しなければならないため損失が出てしまいます。
コンピュータの仕組み04
発電所で電気をたくさん作りあちらこちら利用する所へ送るにはただ電線で繋げばよいわけではないです。効率を良くするために発電所では大きな電力の電気を作っていますが利用する側ではそんなに大きい電気は必要ないからです。
最初から小さい電気を作って送る方法もありますが電線を流れていく過程で発熱して使ってもいないのに減ってしまいます。大きな電気、言い換えると高電圧の電気を発電所から出して利用するところで電圧を下げて使うと効率が良くなります。
電線に電流が流れると発熱して損してしまいます。なるべく電流を流さないようにするためには圧だけかけて使う所だけ電流が流れるようにします。
国土の広い国では発電所から出る電気の電圧をすごく高くしています。日本では数万ボルトから数千ボルトです。家の近くの変電所で数百ボルトまで落とし更に電柱で100から200ボルトにしています。電流を流さない、これが電気を無駄にしない大事な方法です。が、電流が流れないと電気製品が動きません。この矛盾に折り合いをつけて電気を利用しています。
コンピュータの仕組み03
コイルの近くで磁石を回転させると電気ができますが、その磁石を回転するためには色々な方法があります。人力以外で昔から回転するものといえば風車、水車でしょうか。
水車は水の流れる処に羽の付いた軸を入れれば軸が回転するのでそれに磁石を付けて近くにコイルを置けば電気が生まれます。これを水力発電と言います。ダムを作って水の流れを調整すれば回転を制御できるので安定した電気を作ることができます。
風車は風の流れる処に羽の付いた軸を入れれば軸が回転するのでそれに磁石を付けて近くにコイルを置けば電気が生まれます。風は水と違い溜めることができません。強めたり弱めたりすることもできません。風力発電は安定して電気を作ることができないのです。
そこで考えたのがお湯を沸かす方法です。口の狭い容器でお湯を沸かせば口から湯気が出ます。火を強めれば湯気の勢いが増し、火を弱めれば勢いが弱くなります。湯気が出るところに羽根のついた軸を置けば回転するので電気が生まれます。丁度いい電気の量になるように火を強めたり弱めたりすれば安定した電気を得ることができます。
石炭や石油、ガスを燃やしてお湯を沸かせば火力発電、ウランの反応でお湯を沸かせば原子力発電となります。
コンピュータの仕組み02
コンピュータの仕組み01
人間の思考を人間が定義できない
AIを作ってみよう11
いくら安価な部品で構築できたとしても運用に費用がかかっては意味がありません。実際の事業として考えると人件費や何やらと運用費はかかりますが、ここでは消費電力について考えます。一般にCPUの消費電力は、
P = f・pt・C・V 2
で表されます。f は動作周波数,、pt はスイッチング確率, C は負荷容量、V は電源電圧です。
動作周波数を下げる 計算量を減らすことにつながるので動作周波数を下げないで考えます。
スイッチング確率を減らす 目的の計算以外をさせないようなハードウェア、ソフトウェア設計が可能です。
負荷容量を減らす いつか1チップ内に集積できれば容量を減らせるでしょう。
電源電圧を下げる 当面5Vでいつか1〜3.3Vで制御できます。
動作周波数、スイッチング確率、負荷容量、電圧(FSCVと命名します)に注意を払い設計を進めれば低電力のAIが作れるでしょう。
555で発振がうまくできたので今後も考えて固定周波数から可変周波数にしました。発振器も大事な測定器の一つです。100kΩの三端子可変抵抗とコンデンサを複数適当に並べて2Hzから30kHzまで発振できるように改造しました。コンデンサを選びレンジを切り替える、可変抵抗を回しレンジ内で周波数を合わせる操作方法です。
周波数が低いとこんな感じの表示になりました。
1kHz付近では綺麗な矩形波になりました。
10kHz位になると高調波を取りきれなくなり段々と正弦波に近づいているようです。
20kHzになるとほぼ高調波が取れないようで見るからに正弦波のようです。これがパソコンのマイク入力の限界なのでしょう。
SN74LS193N
ChatGPTに聞いてみた。
User
SN74LS193Nは知っていますか。
ChatGPT
はい、SN74LS193Nは4ビット同期アップ/ダウンカウンターIC(集積回路)の1つです。このICは、同期カウンター回路で使用され、クロックパルスに同期して、カウントアップまたはカウントダウンを行います。
SN74LS193Nは、高速動作、広い動作電圧範囲、低消費電力などの特徴を持ち、通常、カウントダウンを行うために使用されるカウンター回路に最適です。また、カスケード接続を使用してより高精度なカウントを実現することもできます。
SN74LS193Nは、入力ピンがいくつか用意されており、それらを制御することで、カウントモード、カスケード接続、クロック信号の同期/非同期動作などを設定できます。このICは、デジタル回路やカウンター回路を設計する際によく使用されます。
ChatGPTに聞いてみた。
User
NE555Pは知っていますか。
ChatGPT
はい、NE555Pは一般的に使用されるタイマーIC(集積回路)の1つで、一般的に単一の電源電圧を使用するアナログ回路のタイミング機能を提供するために使用されます。NE555Pは、内部的に2つの比較器、1つのSRフリップフロップ、およびディスチャージトランジスタを備えたオペアンプ(オペレーションアンプ)を使用して構成されています。このICは、正弦波発振回路、パルス幅変調回路、タイマー回路、トリガー回路などのアプリケーションで使用されます。
NE555Pは、比較的低コストで入手可能であり、入門者からエキスパートまで、多くのエレクトロニクス技術者によって使用されています。また、NE555Pは単一のICで複数のタイマー回路を構成できるため、回路が簡素化され、スペースやコストが節約できるという利点があります。
AIを作ってみよう10
AIを作るための最低限のシルテム構成を考えてみましょう。構成を考える上での条件は
8ビット ー ビット以外でバイトが最小単位だから
マイコン ー 最小の安価なコンピュータだから
ロジックIC ー 論理演算できるから
アセンブラ ー 最も実行効率の良いプログラム言語だから
実数は使わない ー 演算上効率が悪いから
とします。
8ビットのマイコンは大概16ビットのアドレス空間にアクセスできます。記憶装置は必ず必要なので16ビットのアドレスであれば64KByteのメモリが1セットです。
RAMを使うと補助記憶装置からデータロードが必要となるのでそれがいらないROMを使います。記憶のアップデートはできませんが計算原理の確認なのでこれで良しとします。
AIを作ってみよう09
AI開発で欠かせないのはどのように計算させるかです。あまりにも多くの計算を短時間で実行しなければならないので、その計算能力によって性能が左右されるだけではなく、そのAIの存在自体をも問われます。
コンピュータは計算が得意と言われていますが、その計算の中にも得意不得意があります。例えば桁数がある一定の値よりも大きい数値、乗除算を何度も繰り返す計算、極めて小さい数値等です。なぜこのようなことが起こるかというとコンピュータの中で実際に行われている演算とは論理演算だからです。
論理演算には小数点もなければ桁上がりもありません。計算方法だけ見れば算盤以下です。随分昔ですが算盤の上級者になるとπの算出を暗算でできると聞いたことがあります。論理演算とは電気で計算させるための原始的な方法なのです。
ではなぜコンピュータは計算では人を凌駕できるのか。それは単純な論理演算を一瞬の間に膨大な回数を実行できるからです。2進数の論理演算を組み合わせて10進数の四則演算や難しい関数演算を行える複雑なハードウェアとソフトウェアでコンピュータはできています。
最もコンピュータに向いているのは論理演算なのでそれを基本に計算装置を作ることができれば製造費も電気代も安価な高性能AIができるはずです。
AIを作ってみよう08
AIシステム構築には良くPythonが使われいるようです。Wikiによると「インタープリタ型の高水準汎用プログラミング言語である。」とあるように30年前からあるようですがだいぶ高級な言語のようです。
Pythonもコンパイルしてネイティブ実行ファイルを作ることができますが今はインタープリタ型のプログラムが動作する仕組みを考えてみます。
パソコンでPythonプログラムを実行
↓
Pythonプログラムを読んで実行するプログラム
↓
オペレーティングシステム&デバイスドライバー
↓
ベーシックIOシステム
↓
ハードウェア
Pythonプログラムをハードウェアが実行するまでに何層ものプログラムが動かなければなりません。もし同じプログラムをマイコンで実行するとどうなるでしょうか。
マイコン用プログラム
↓
ハードウェア
マイコン用プログラムであれば直接ハードウェアを実行することができます。もちろん高級言語では簡単なことでもマイコン用プログラムでは大変な労力を必要とすることが多いので単純に比較して優劣を云々できません。しかしAIの中枢は単純な計算の繰り返しなはずです。マイコン用プログラムでもできるに違いありません。
同じ計算でも全体の計算量が大きく違えばその性能差も大変な違いが生まれます。