を紙にプリントしてコンピューティングできたらしい。
カテゴリー: ニュース
ニュース
パターン認識と図形処理
改訂マイコン・システム設計ノウハウ
コンピュータの仕組み1E
コンピュータの仕組みを演算の基本部品であるCPUにたどり着くまで説明してきましたが、ここで周辺の装置を見ていきます。
パソコンやスマホを完成形とした場合のCPU以外の重要な構成部品を大別すると
記憶装置
レジスタはCPUの内部に有る記憶回路でしたが容量が少ないので外部の記憶装置を使います。RAMは通電していないと記憶が失われ、ROMは電源が切れても記憶し続けます。
マイクロコントローラ呼ばれる場合は一つのLSIの中にCPUに必要な回路とROMやRAMが入っています。一つの部品で一通りの仕事ができるように作られました。誕生はマイクロプロセッサとほぼ同時期です。
RAMやROMもそれぞれたくさんの種類があります。これらはみな半導体なのでICやLSIの形状をしています。他に円盤やテープ状のものに情報を記憶させる方法があります。機械的な動作があるのでコンピュータと筐体を分けてケーブルなどで接続します。
純然たる記憶装置ではありませんが利用している側から見るとクラウドも記憶装置として分類してもいいと思います。物理的にはクラウド自身先にあげた半導体やディスクで構成され、クラウドシステムに組み込まれています。ネットワークがここまで自然にあるようなインフラとなって皆が無意識のうちに利用している時代になったならばクラウドも記憶装置の一つと思えます。自分で用意する物理的な記憶装置よりも安全かもしれません。
入力装置
コンピュータ以外から情報を取り込むときは入力装置を経由してCPUで扱える情報に変換します。人間が入力する場合はキーボードのようなボタン類、マウスやタッチスクリーンのように値が連続的に変化する情報などがあります。マイクやカメラも入力装置です。
何かの量や状態を2進数に定義できればコンピュータに入力できます。逆に言えば2進数に定義できないものや事象はコンピュータに入力できないことになります。人知がまだ到達していないことは入力が出来ないのです。
出力装置
何に対して出力するかで大きく分かれます。人間に対して出力するにはデジタル信号を人間が認識できるようにします。
目で認識させる方法としてデジタル信号に応じて光の明滅させます。ディスプレイと呼ばれる装置はこの原理を利用しています。光の明滅を様々組み合わせて文字を出したり、色をつけたりします。
耳で認識させる方法はデジタル信号に応じて音の強弱や周波数を変えます。音楽をダウンロードして聴いたり地デジテレビから聞こえてくる音声は全てデジタル情報です。
触覚、味覚、嗅覚を利用した出力装置は一般的に普及していませんが未来にはそれを応用した出力装置が出てくるかもしれません。
人間以外でデジタル信号を受け取れる相手への出力であればそのまま渡すことができます。この時情報の劣化がおきません。
人間以外でデジタル信号を受け取れない相手への出力は受け取れるような形に変換します。大概何かしらの物理量に変換するのですがこの時信号の劣化がおきます。
コンピュータの仕組み1D
Computerがナゼ動くかの説明を電気が作られるところから始めてCPUの説明まで続けてきました。ここで少しまとめておきます。
スイッチング素子で基本論理ゲートを作ることができます。
NOT回路 NAND回路 NOR回路
基本論理ゲートを組み合わせて色々な機能を持つ論理回路を作ることができます。
フリップフロップ マルチプレクサ XOR D型フリップフロップで構成したカウンター 半加算器 全加算器
論理回路を並べて使用すれば複数ビットに対して操作することができるようになり、一つのICに組み込めば容易に多ビットの演算回路を作ることができます。
SN74S00N 4 NAND SN74HC04N 6 Inverter SN74LS181N
それぞれ単機能だったICに役割を与えて組み合わせ一つのLSIにすればCPUが完成します。
UPD8080A D8085AC-2 UPD8048C
CPUに周辺機器を付け加えるとコンピュータになります。
コンピュータの仕組み1C
引き続きTMS-1000を題材にCPUを学習していきます。TMS-1000を構成するブロック毎の動作を仮説を立てて追ってみます。実物がないので実験できませんが後でマニュアルで確認します。
まずはOSCILLATORでクロック信号を発振します。内蔵しているOSCILLATORはRCなのかセラミックなのかクリスタルを使用しているのかわかりませんが矩形波を一定周期で出力しています。この信号が全てのブロックに伝わりますので各ブロックはその信号の都度に逐次状態を進めていきます。
電源投入後、各FFでできたレジスタの状態は不安定なのでリセットが必要です。リセットを行い全体を初期状態にします。
初期状態は命令の実行を待っている状態ですので次にプログラムカウンタが指す番地の命令を実行せよと何かしらの信号を与えます。
最初はプログラムカウンタが0なのでROMの0番地のビット列が命令デコーダに入ります。命令デコーダはその最初の命令(ビット列)に基づきFFでできているレジスタやバッファと論理回路の塊であるALUにビット列を送り命令を実行します。
次のクロック信号が来た時はプログラムカウンタ繰り上がります。前の命令を実行したので各レジスタの値が設定されている状態から最初と同じようにROMの次の番地のビット列を命令デコーダに送ります。
以下次々とクロック信号が変化する度にROMの命令が命令デコーダに送られます。例えばSUBROUTINE RETURNレジスタに次に実行する値を設定してからプログラムカウンタに飛んだ番地を書き込み、そこから新しい命令を実行し、SUBROUTINE RETURNの番地に戻すようなことでサブルーチンが実行できるように思えます。
こうしてみると命令デコーダが他のブロックに比べてだいぶ複雑な機構を持っているように見えます。
1 ROMからレジスタにビット列を複製する、RAMであればレジスタからRAMへ逆にRAMからレジスタへビット列の複製ができる。
2 使うレジスタを選択できる。
3 出力するバッファを選択できる。
4 ALUの演算を選択できる。
5 PROGRAM COUNTERやPAGE ADDRESS、SUBROUTINE RETURNを書き換え命令の実行順を変えることができる。
このようなことを実行するために命令のビット列ごとにどこをどうするか決定する回路になっていると思われます。
命令ごとに回路を作っていくとすると個人の手作りではTTLを使ったとしても4bitで十数個位が限度だと思います。ましてディスクリートトランジスタやリレーで作るとなったら数個の命令で根を上げそうです。
やはり1個数十円から買えるCPUは偉大な存在です。
コンピュータの仕組み1B
マイクロプロセッサーを云々する時には必ずと言っていいほどi4004から始められますが、詳しく書かれているサイトが多いのでここではTMS1000を少し学んでみたいと思います。
PROGRAM COUNTER は6bitあり0〜63までをカウントできるレジスタです。
SUBROUTINE RETURN REGISTER も同じく6bitあり0〜63まで戻る位置を覚えておけるレジスタです。PROGRAM COUNTER と同じです。
PAGE ADDRESS REGISTER は4bitで0〜15までページを切り替えることができます。PROGRAM COUNTER が6bitでPAGE ADDRESS が4ビットなので合わせて10bitとなり0〜1023まで番地を持てます。
TTLには2回路入りや4回路入り、6回路入りがありますが、2回路や4回路はわかりますが6回路入りは中途半端な気がしていました。自身が8ビット時代以降なので不思議に思うだけでディスクリートトランジスタやTTLでコンピュータが出来ていた頃、6回路入りは半端な存在ではなかったのでしょう。なんでも8の倍数の前の時代からコンピュータはありました。
PAGE BUFFER REGISTER はページを切り替えた時の戻りページを覚えておくためのレジスタです。
PROGRAM COUNTERとSUBROUTINE RETURNのセットとPAGE ADDRESSとPAGE BUFFERのセットを組み合わせて実行すべき命令や読み書きするデータの位置を制御しているのがわかります。
INSTRUCTION DECODER は8bit幅の命令を実行します。4ビットCPUなのに何故8bitの命令なのでしょうか。上の図では真ん中に書いてあります。やはり命令デコーダがCPUの中心部なのですね。
この頃の4ビットCPUを見てみると皆50個位の命令を持っていました。4ビットだからといって命令長が4ビットなわけはなく(命令が16個では実用にならない)8や16ビット長にして一通りの処理ができる命令デコーダにしてあります。
CPU | 基本命令数 |
TMS-1000 | 43 |
TMS-1200 | 43 |
i4004 | 46 |
HMCS-4 | 46 |
uCOM-4 | 55 |
X,Y,ACCUMULATOR REGISTER は演算を行う値を記憶するところです。数式で言えば変数にあたります。特にACCUMULATORは一時的な値の保持に使われます。
この他に出力が二つあります。その一つにPLAと書かれていますがプログラミングが可能なのでしょうか。もう少し調べないとわかりません。
このようにプロセッサの中を見てきましたが、一つ一つは論理回路の集合でできていることがわかります。クロック、レジスタ、バッファ、カウンタはフリップフロップでできます。デコーダやALUも論理回路の組み合わせでできます。
CPUはリレーでも真空管でもディスクリートトランジスタやTTLでも作れることがよくわかります。ただ一般の個人でも手に入れることができるようになったのがワンチップでできたCPUからでした。ここから広義でのコンピュータが爆発的に普及し始めたのです。
コンピュータの仕組み1A
コンピュータの仕組み19
コンピュータの仕組み18
論理回路で使われるICをいくつか見てみましょう。
74シリーズの00番は4bitのNANDです。最初にICにしたいのはNAND回路だったのですね。
次に末尾一桁の番号のICは6個入りNOT回路です。インバータと呼ばれます。
フリップフロップが二つ入ったICです。だんだん複雑な論理回路がICになってきました。
4bitのカウンターということは最低でもFFが4つ入っています。もうディスクリート部品で組むのが大変な回路になってきました。
これは7セグメントLEDを制御するためのICです。このように特定の用途の論理回路も汎用化されICになっています。
コンピュータの仕組み17
他コンピュータの重要な演算機能としてシフト演算があります。ビットの列を右や左にずらしていく回路でFFで構成されます。
このように基本的な論理回路である、NOT、NAND、NORを組み合わせて様々なビット演算を回路で作り、それをまとめて集積するとCPUやメモリー等のコンピュータ部品になります。
今まで実験でリレーや真空管、ディスクリートトランジスタを使って仕組みの理解を進めてきました。これからはもっと実用的な装置にしようと思いますのでICを使っていきます。
初期のコンピュータはリレーや真空管が実際に使われていました。その頃は軍や国家レベルの大きな事業でしたので個人で最低限であっても実用的なコンピュータを作ることは現代であっても不可能です。
その後トランジスタが発明され電子装置が徐々にトランジスタに置き換わっていきます。トランジスタであれば個々の電力消費が少なく現代では部品単価も廉価なので個人でも手が出せます。実際にディスクリートトランジスタを使ってCPUを作っている方がネットを探すと出てきます。ただ、数千、数万単位の部品で装置を組み上げていくには強靭な気力を要しますので命懸けの仕事と思へ諦めざるを得ません。
そこで登場するのがICです。1960年前後にアメリカで発明されたこの部品はコンピュータを個人にもたらした偉大な発明だと思います。
TTLやマイコンを使って色々実験しようとしている中でポケコンがあったらもっと実験の幅が広がると思いネットで購入しようとしたのですがとっくに製造中止になっていました。
ネットで調べているうちにデジタル回路を関数電卓で制御できるようなことが解りました。
いつ頃何の目的で買ったか忘れましたが関数電卓を持っていたのを思い出しました。
HP 50gは値段の割に随分高性能でTTL信号を出力できるようです。この電卓も既に製造中止ですがネット上に情報が豊富にあります。
回路制御に使うには乗り越えなければならないハードルがいくつもありますが死蔵させるにはもったいないので少しずつでも動かしていきたいです。
2023.05.15
ChatGPTに聞いてみた。
User
HP 50g Graphing Calculatorは何ですか。
ChatGPT
HP 50g Graphing Calculatorは、ヒューレット・パッカード(HP)が製造しているグラフ電卓です。この電卓は、高度な計算、グラフィックス、およびプログラミング機能を備えており、数学、科学、工学、およびその他の分野で広く使用されています。HP 50gは、逆ポーランド記法(RPN)および代数的な入力モードをサポートしており、カスタム関数やプログラムの作成が可能です。また、USBポートやSDカードスロットを搭載しており、ファイルの転送やバックアップも容易に行えます。
SN74LS181N
ChatGPTに聞いてみた。
User
SN74LS181Nは何ですか。
ChatGPT
SN74LS181Nは、TI(Texas Instruments)が製造する4ビットアリステアック(アリステアック・アリスティック)演算回路ICです。アリステアック演算回路は、数値の加算、減算、論理演算、シフト演算、比較演算など、様々な演算を行うための論理回路です。SN74LS181Nは、4つの2入力論理演算器、2つの4入力データセレクタ、および1つの4ビットのフルアダーを含みます。SN74LS181Nは、高速動作、低消費電力、広い動作電圧範囲などの特徴を持ち、コンピュータや制御システム、セキュリティシステムなど、幅広いアプリケーションに使用されます。
コンピュータの仕組み16
石川町駅近くのシンコー電機でリールで売っているトランジスタを購入しました。1,000個で1,000円、表面実装用なので小さいですが実験用なので十分です。
ChatGPTに聞いてみた。
2SD1119-Qは、オーディオアンプ、スイッチング回路、および電源回路など、幅広い用途に使用できるNPNのシリコントランジスタです。最大電力は1.2Wまで、最大コレクタ-エミッタ電圧は60V、最大コレクタ電流は1Aまで扱えるため、低~中電力のアプリケーションに適しています。また、SOT-89パッケージに収められているため、小型化が可能であり、スペースの制約のあるアプリケーションでも使用できます。
コンピュータの仕組み15
フリップフロップのことをFFと略します。。上図のように四角い記号で描かれます。今後は呼び名はFF、記号は四角いのをを使用します。
FFは以前記憶する回路として登場していますが、その状態を記憶する性質を使って数を数えることができます。コンピュータの中ではこれをカウンターと呼びます。
カウンターは最初の図のRS型のFFではできません。JK型のFFを使います。JK型のFFにはクロック信号を入力する端子があり、クロック信号毎にカウンターをアップします。
ですが、少し回路が複雑で大変そうなのでもう少し調べました。
JK型より簡単なD型フリップフロップという回路がありました。これでもカウンターを作れます。
D型フリップフロップは4個のトランジスタで作れるので4ビットのカウンターを作るためには16個のトランジスタが必要です。チップタイプの2SD1119が1000個もあるので今度実験してみます。
と言う訳で早速実験してみました。取り敢えず手持ちのNPNトランジスタを並べて4個のFFを作ります。同じトランジスタがないのでバラバラで格好は良くありませんがなんとかFFが4個できました。型が同じトランジスタでも結構hfeにばらつきがあり調整が面倒でしたが手持ち抵抗と勘案して抵抗値を低めに寄せてあります。
しかしカウンターとしては全くダメな結果でした。FFとしては4個それぞれ動いたのですがFFどうしをつなぐと全然ダメでした。部品数を減らすためになるべく簡単な回路で挑んだのですが失敗に終わったのです。
それでもう一度NAND回路から見直し少し本格的にしました。NAND一つでこれだけの部品になります。
一つのFFでこの規模になってしまいました。これではとても4ビットカウンターには辿り着けそうもありません。
実用的な回路図をネットで探して見つけたのが「TTLアプリケーションマニュアル」テキサスインスツルメンツアジアリミテッド、昭和47年9月15日発行です。そこにFFやカウンターの回路図が載っています。上にあるような単純な代物ではありません。雑音や温度、不良な電源をも考慮された回路なのでしょう。
でも二つ大きなことが解りました。
一つはトランジスタのhfeにはかなりばらつきがありスイッチングだからといってギリギリで設計してはいけない。
もう一つはネットや書籍に載っている論理回路は動作を説明するために抽象化されているので実用性は無いと言うことです。
アナログ回路に比べるとデジタル回路が簡単に見えるのはONとOFFのスイッチングだけだからではなく調整が必要なことをICが中で殆どこなしているいるからだと気付かされました。
ディスクリート部品で組み立てようと思ったらアナログ回路に負けない程に難しい実装が待ち受けています。
だからコンピュータを作るためには集積回路がどうしても必要になります。