カテゴリー
Free

コンピュータの仕組み20

NAND回路
NAND回路

 例えば電源電圧5VのNAND回路の入力Aに5V、Bには0Vの電圧を加わっているとします。その時、出力Xは5Vとなります。

 この動作の5Vや0Vの電圧を加えることを記号化すると次の文章になります。(5VはHighとし略してH、0VはLowとし略してLとする)

 入力AをH、BをLとすると出力XはHとなる。

 HとLしか無いならばHは電圧が有る状態なので1、Lはない状態なので0と置き換えることもできます。そうすると次の式でも良いことになります。

 1 NAND 0 = 1

カテゴリー
Free

コンピュータの仕組み1F

 今までハードウェア仕組みを説明をしてきましたが、ここからはソフトウェアの仕組みの説明に移ります。

 ここでのソフトウェアの定義はCPUに出す命令の集まりをソフトウェアとし、物体として存在している物をハードウェアとします。

 人や立場によってソフトウェアとハードウェアの境界が若干異なることもありますが目に見える装置をハードウェア、装置を動かすための手順をソフトウェアと考えてください。

 ガスコンロやフライパンはハードウェア、料理の方法はソフトウェアになります。

 料理に置き換えて気づいたのですが食材や調味料はどっちに入るのでしょうか。人それぞれどちらでも良しとします。

カテゴリー
Free

コンピュータの仕組み1E

 コンピュータの仕組みを演算の基本部品であるCPUにたどり着くまで説明してきましたが、ここで周辺の装置を見ていきます。

 パソコンやスマホを完成形とした場合のCPU以外の重要な構成部品を大別すると

記憶装置
 レジスタはCPUの内部に有る記憶回路でしたが容量が少ないので外部の記憶装置を使います。RAMは通電していないと記憶が失われ、ROMは電源が切れても記憶し続けます。

 マイクロコントローラ呼ばれる場合は一つのLSIの中にCPUに必要な回路とROMやRAMが入っています。一つの部品で一通りの仕事ができるように作られました。誕生はマイクロプロセッサとほぼ同時期です。

 RAMやROMもそれぞれたくさんの種類があります。これらはみな半導体なのでICやLSIの形状をしています。他に円盤やテープ状のものに情報を記憶させる方法があります。機械的な動作があるのでコンピュータと筐体を分けてケーブルなどで接続します。

 純然たる記憶装置ではありませんが利用している側から見るとクラウドも記憶装置として分類してもいいと思います。物理的にはクラウド自身先にあげた半導体やディスクで構成され、クラウドシステムに組み込まれています。ネットワークがここまで自然にあるようなインフラとなって皆が無意識のうちに利用している時代になったならばクラウドも記憶装置の一つと思えます。自分で用意する物理的な記憶装置よりも安全かもしれません。

入力装置
 コンピュータ以外から情報を取り込むときは入力装置を経由してCPUで扱える情報に変換します。人間が入力する場合はキーボードのようなボタン類、マウスやタッチスクリーンのように値が連続的に変化する情報などがあります。マイクやカメラも入力装置です。

 何かの量や状態を2進数に定義できればコンピュータに入力できます。逆に言えば2進数に定義できないものや事象はコンピュータに入力できないことになります。人知がまだ到達していないことは入力が出来ないのです。

出力装置
 何に対して出力するかで大きく分かれます。人間に対して出力するにはデジタル信号を人間が認識できるようにします。

 目で認識させる方法としてデジタル信号に応じて光の明滅させます。ディスプレイと呼ばれる装置はこの原理を利用しています。光の明滅を様々組み合わせて文字を出したり、色をつけたりします。

 耳で認識させる方法はデジタル信号に応じて音の強弱や周波数を変えます。音楽をダウンロードして聴いたり地デジテレビから聞こえてくる音声は全てデジタル情報です。

 触覚、味覚、嗅覚を利用した出力装置は一般的に普及していませんが未来にはそれを応用した出力装置が出てくるかもしれません。

 人間以外でデジタル信号を受け取れる相手への出力であればそのまま渡すことができます。この時情報の劣化がおきません。

 人間以外でデジタル信号を受け取れない相手への出力は受け取れるような形に変換します。大概何かしらの物理量に変換するのですがこの時信号の劣化がおきます。

カテゴリー
Free

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

 Computerがナゼ動くかの説明を電気が作られるところから始めてCPUの説明まで続けてきました。ここで少しまとめておきます。

 スイッチング素子で基本論理ゲートを作ることができます。

 基本論理ゲートを組み合わせて色々な機能を持つ論理回路を作ることができます。

 論理回路を並べて使用すれば複数ビットに対して操作することができるようになり、一つのICに組み込めば容易に多ビットの演算回路を作ることができます。

 それぞれ単機能だったICに役割を与えて組み合わせ一つのLSIにすればCPUが完成します。

 CPUに周辺機器を付け加えるとコンピュータになります。

カテゴリー
Free

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

Programmer’s Reference Manual TMS 1000 Series MOS/LSI One-Chip Microcomputers Texas Instruments 1975
Programmer’s Reference Manual TMS 1000 Series MOS/LSI One-Chip Microcomputers Texas Instruments 1975

 引き続き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は偉大な存在です。