ChatGPTに聞いてみた。
User
SN74HC259Nは何ですか。
ChatGPT
SN74HC259Nは、8ビット同期/非同期双方向4線式シフトレジスタです。このICは、2つの独立した4ビット入力ポートを持ち、8ビットのデータを同時に入力できます。また、2つのゲートを介して同期リセット機能を提供し、複数のデバイスを接続してカスケードすることができます。SN74HC259Nは、CMOS技術を採用しており、低消費電力と高速動作が可能です。このICは、デジタル回路の設計に使用されます。
ニュース
ChatGPTに聞いてみた。
User
M5L8212Pは何ですか。
ChatGPT
M5L8212Pは、8ビットCMOSマイクロプロセッサの一種で、日本のメーカーである三菱電機が製造したものです。Z80プロセッサの互換品として設計されており、Z80と同様に広く使用されました。M5L8212Pは、周辺デバイスを制御するための一連のポートやタイマー、シリアル通信インターフェース、DMAコントローラ、メモリ管理回路などを備えています。1980年代に広く使用され、一部の古いコンピューターシステムで使用されていました。
User
マイクロプロセッサではないと思います。CPUの周辺ICだと思います。
ChatGPT
正解です。M5L8212Pは、8ビットデータバスを備えた2K x 8ビットの静的RAMです。CPUの周辺ICとして使用されます。また、M5L8212Pは、日立製品の一部であり、1980年代に人気がありました。
User
RAMというよりBUFFERSでは。
ChatGPT
確かに、M5L8212Pは、8ビットバッファICであり、RAMではありません。このICは、8つの入力と8つの出力があり、信号が入力から出力に転送されるときに信号を増幅する役割を持っています。つまり、信号の増幅器として機能するため、入力信号を増幅し、出力に向けて強めることができます。したがって、このICは、入力信号を増幅し、出力信号を制御するために使用されます。
User
改めてM5L8212Pは何か説明してください。
ChatGPT
M5L8212Pは、NEC(現在はルネサスエレクトロニクスに統合)が製造している8ビットバスインタフェース用トライステートバッファで、RAMやROM、I/Oポート、CPUなどを接続するバス回路において、バスの双方向性を制御するために使用されます。
M5L8212Pは、高速なデータ伝送を可能にするトライステート技術を採用しており、入力バッファ、出力バッファ、制御回路から構成されています。このICは、主に8ビットマイクロプロセッサシステムにおけるバス制御回路に使用されます。
M5L8212Pは、DIP(デュアルインラインパッケージ)やSOP(スモールオーダーインラインパッケージ)などのパッケージで提供され、広く普及しています。
User
先頭のMは三菱製を意味しています。
もう一度説明してください。
ChatGPT
おっしゃる通りです。M5L8212Pは、三菱電機(Mitsubishi Electric)が製造するCMOSロジックICの1つです。このICは、8ビットのバスを介してCPUと接続され、CPUからの制御信号に基づいて、データの読み取りや書き込みを実行するバッファ回路を備えています。M5L8212Pは、主に古い8ビットマイクロコントローラーやマイクロプロセッサの周辺回路として使用されていました。また、データ転送や信号増幅など、一般的なロジック回路での使用にも適しています。
ChatGPTに聞いてみた。
User
HD74LS75Pは何ですか。
ChatGPT
HD74LS75Pは、デュアルJ-Kフリップフロップ(Dual J-K Flip-Flop)を実装したTTL(Transistor-Transistor Logic)IC(Integrated Circuit)です。J-Kフリップフロップは、デジタル回路で使われる基本的な回路の1つであり、入力信号に応じて出力を切り替える機能を持っています。デュアルJ-Kフリップフロップは、2つの独立したJ-Kフリップフロップが1つのパッケージに実装されたものであり、データシートによれば、HD74LS75Pは、低消費電力・高速動作・TTL出力の特徴を持っています。
コンピュータの仕組みを演算の基本部品であるCPUにたどり着くまで説明してきましたが、ここで周辺の装置を見ていきます。
パソコンやスマホを完成形とした場合のCPU以外の重要な構成部品を大別すると
記憶装置
レジスタはCPUの内部に有る記憶回路でしたが容量が少ないので外部の記憶装置を使います。RAMは通電していないと記憶が失われ、ROMは電源が切れても記憶し続けます。
マイクロコントローラ呼ばれる場合は一つのLSIの中にCPUに必要な回路とROMやRAMが入っています。一つの部品で一通りの仕事ができるように作られました。誕生はマイクロプロセッサとほぼ同時期です。
RAMやROMもそれぞれたくさんの種類があります。これらはみな半導体なのでICやLSIの形状をしています。他に円盤やテープ状のものに情報を記憶させる方法があります。機械的な動作があるのでコンピュータと筐体を分けてケーブルなどで接続します。
純然たる記憶装置ではありませんが利用している側から見るとクラウドも記憶装置として分類してもいいと思います。物理的にはクラウド自身先にあげた半導体やディスクで構成され、クラウドシステムに組み込まれています。ネットワークがここまで自然にあるようなインフラとなって皆が無意識のうちに利用している時代になったならばクラウドも記憶装置の一つと思えます。自分で用意する物理的な記憶装置よりも安全かもしれません。
入力装置
コンピュータ以外から情報を取り込むときは入力装置を経由してCPUで扱える情報に変換します。人間が入力する場合はキーボードのようなボタン類、マウスやタッチスクリーンのように値が連続的に変化する情報などがあります。マイクやカメラも入力装置です。
何かの量や状態を2進数に定義できればコンピュータに入力できます。逆に言えば2進数に定義できないものや事象はコンピュータに入力できないことになります。人知がまだ到達していないことは入力が出来ないのです。
出力装置
何に対して出力するかで大きく分かれます。人間に対して出力するにはデジタル信号を人間が認識できるようにします。
目で認識させる方法としてデジタル信号に応じて光の明滅させます。ディスプレイと呼ばれる装置はこの原理を利用しています。光の明滅を様々組み合わせて文字を出したり、色をつけたりします。
耳で認識させる方法はデジタル信号に応じて音の強弱や周波数を変えます。音楽をダウンロードして聴いたり地デジテレビから聞こえてくる音声は全てデジタル情報です。
触覚、味覚、嗅覚を利用した出力装置は一般的に普及していませんが未来にはそれを応用した出力装置が出てくるかもしれません。
人間以外でデジタル信号を受け取れる相手への出力であればそのまま渡すことができます。この時情報の劣化がおきません。
人間以外でデジタル信号を受け取れない相手への出力は受け取れるような形に変換します。大概何かしらの物理量に変換するのですがこの時信号の劣化がおきます。
Computerがナゼ動くかの説明を電気が作られるところから始めてCPUの説明まで続けてきました。ここで少しまとめておきます。
スイッチング素子で基本論理ゲートを作ることができます。
基本論理ゲートを組み合わせて色々な機能を持つ論理回路を作ることができます。
論理回路を並べて使用すれば複数ビットに対して操作することができるようになり、一つのICに組み込めば容易に多ビットの演算回路を作ることができます。
それぞれ単機能だったICに役割を与えて組み合わせ一つのLSIにすればCPUが完成します。
CPUに周辺機器を付け加えるとコンピュータになります。
引き続き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は偉大な存在です。
マイクロプロセッサーを云々する時には必ずと言っていいほど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からでした。ここから広義でのコンピュータが爆発的に普及し始めたのです。
論理回路で使われるICをいくつか見てみましょう。
74シリーズの00番は4bitのNANDです。最初にICにしたいのはNAND回路だったのですね。
次に末尾一桁の番号のICは6個入りNOT回路です。インバータと呼ばれます。
フリップフロップが二つ入ったICです。だんだん複雑な論理回路がICになってきました。
4bitのカウンターということは最低でもFFが4つ入っています。もうディスクリート部品で組むのが大変な回路になってきました。
これは7セグメントLEDを制御するためのICです。このように特定の用途の論理回路も汎用化されICになっています。