コンピュータメモリー(RAM)の仕組み

(https://www.youtube.com/watch?v=QZwneRb-zqA)
↑こちらの動画を参考にしてプログラムを作ってみましたが、完全に下位互換が出来上がりました。

 

【書き起こし】コンピュータメモリー(RAM)の仕組み 

(00:00) コンピュータの主要な構成要素の1つに メモリがあります メモリとはデータを記憶する部品のことで ram と rom がありますが一般的 にメモリといった場合はラムを指すことが 多いです まず最初に全体を見せると最終的に構成さ れるラムの回路はこのようになっています コンピュータはよく0と1の実を認識して 動作していると言われますがこれは電気が 流れている状態を1 電気が流れていない状態を0として認識し さまざまな処理を行っているからですこれ から0と1の3でどのように処理を行うの か見ていきましょうを 0と1で処理を行うには論理ゲートという ものを考えます 論理ゲートはいくつか種類がありますが
(01:04) こちらの nand gate の場合は インプットが2つアウトプットが一つあり それぞれが0か1かの状態となりますここ では緑色の状態大1 グレーの状態を0としますこのゲートの 性質は インプットが2つとも1の状態の時のみ アウトプットがゼロとなり インプットがそれ以外の状態の場合は アウトプットが市になりますこの性質は どのようにして得られるかを見ていきます わかりやすくするため電気の流れを水の 流れとして このような構造を考えます この図では上方向から水が流れ込みます そして右側にあるアウトプットの位置で水 が流れている状態を1 水が流れていない状態を0とします また頭の下の方には a と b の二つ のスイッチがあり各スイッチを on に するとそれぞれの弁が開くとします これらのスイッチは on の状態を1
(02:10) オフの状態を0と考えます まずスイッチが両方 off の状態では 水は下の方向には流れないので右方向に水 が流れアウトプットは1になります 次にスイッチの片方をオンにしたとしても もう一方がオフになっていると水はした 方向には流れないため アウトプットは1となります そして2つのスイッチを両方を on に した場合のみ 水は下に流れ アウトプットはゼロとなります これらのスイッチのオンオフと アウトプットの結果を表にまとめるとこの ようになります この回路は nand ゲートと呼ばれ 以降はこの回路を一つの塊として考え このように表記することにします nand ゲートには2つのインプットと
(03:19) 一つのアウトプットがあり2つの インプットが両方市の場合のみ アウトプットがゼロになります nand ゲートをうまく組み合わせる ことによってデータを記憶できる部品を 作ることができます ここでは1ビットのメモリについて説明し ます 1ビットのメモリにはインプットが2つ アウトプットが一つありアウトプットに0 か1かのデータを記憶させることができ ます 使用方法としてはアウトプットに記憶させ たいデータを上のインプットに入力し記憶 させたいタイミングでしたのインプットを 一にしますそうすることで上のインプット のデータをアウトプットが記憶するので下 のインプットがゼロの状態では上の インプットのデータが変化したとしても アウトプットのデータは変わりません nand ゲートによってこの機能を実現 する方法を見ていきます
(04:25) nand ゲートを4つ使用し このように組み合わせます そうするとインプットが2つアウトプット が一つのこのような回路ができます この回路のインプットとアウトプットの 関係を確認してみます 各 nand gate の性質を考える と初期状態はこのようになります まず上側のインプットを1にすると アウトプットはゼロのままです この状態から下側のインプットを1にする とアウトプットは市に変わります 次に上のインプットを0にすると アウトプットは0 下のインプットを0にするとアウトプット はゼロのまま変わりません この結果だけを見ると両方のインプットが 市の場合のみアウトプットが1になるよう な回路に見えます しかし
(05:26) インプットのオンオフの順番を変えると 異なる結果が得られます まず先ほどと同様に上下の順番で インプットを一にしますここでは アウトプットは1となります その後した上の順番でインプットをオフに するとアウトプットは1のままになります この状態では上のインプットの状態を変化 させてもアウトプットの状態は変化しませ ん この結果は先ほどの状態と異なります なぜでしょうか 実はこの回路は下のインプットが1の時の 上のインプットの状態を記憶するという 性質があります 例えばまずしたを一にしますそうすると この時の上のインプットを記憶し アウトプットに反映しますよって アウトプットは上のインプットと同じ0に なります次に下のインプットをゼロに戻す と上のインプットの先ほどの値が
(06:33) アウトプットに記憶されているので上の 状態が変化してもアウトプットに変化は ありません 反対に上と下の両方を1にするとこの時の 上のインプットがアウトプットに記憶さ れるのでアウトプットは1となりますこの 状態でしたをゼロにしてから上をゼロにし てもアウトプットに位置が記憶されたまま なので変化はありません つまりこの回路を使用することで アウトプットに0か1かの2つの状態の うちどちらであるかを記憶させることが できます 2つの値のうち一つのみを持つ場合の情報 量は1ビットと定義されこの回路は1 ビットのメモリとして使用できます この回路の2つのインプットは上の インプットに記憶させたい情報を入力し 下側のインプットは記憶をさせたいとき つまり上のインプットアウトプットに セットしたい時に使用します そこでしたのインプットを s 都市1
(07:39) ビットのメモリ回路をこのように表すこと にします 1ビットの情報量では2つの状態のうちの どちらであるかを表現することができます 例えば部屋の外の壁にライトを取り付け 在室時はライトを on にし不在の場合 はライトをオフにすることで1ビットの 情報量で在室しているかどうかを 表すことができます 同様のことをすると店が準備中7日営業中 なのかを表現することができます これらの例では1ビットという情報量は 同じですがその表現している意味は異なり ます 1ビットのメモリは単に電気が流れている か流れていないかということ以外の何物で
(08:44) もありません しかし ある1ビットの情報が何を示しているのか を事前に定義することで電気が流れている かどうかという情報に他の意味を持たせる ことが出来ますこれをコードといい コードは何かしらの情報に対して別の意味 を持たせますそれらの意味を認識するため にはその情報のすべての状態に対してどの ような意味を表すかをリストにまとめ 共有する必要があります 先ほどの例で考えるとこのようになります これが1ビットに他の意味を持たせる方法 です 1ビットのメモリをこのようにやつ つなげることにより8ビットつまり1 バイトのメモリを作ることができます ここで各1ビットのメモリの s の インプットは同じ水力つながれているので
(09:50) 8この1ビットメモリは同じタイミングで アウトプットに情報を記憶させます 1バイトのメモリでは各1ビットのメモリ がそれぞれ0と1の状態を記憶できるので 全体の取りうる状態の数は3-8条の 256となりますつまりこの256この 状態の一つ一つに対してコードを作成する ことで1ビットのときよりも複雑な意味を 持たせることができます 例えばアルファベットは a から z までで26文字であり小文字等を文字を 区別したとしても52文字しかないので1 バイトのメモリでこのように表現すること ができます こうすることで8この0と1で文字を表現 することができます このコードに数字やその他の記号などを
(11:04) 加えたものは ascii コードと呼ば れます そしてこの8ビットのメモリを一つの塊と してこのように表します この1バイトのメモリとこの後に説明する レコーダがラムの重要な構成部品となって います コードを作ることで0と1の組み合わせに 他の意味を持たせることができますがその ままでは各ビットの01を確認し リストから一致するものを探し出して 初めて現在の状態が表す意味を知ることが 出来ますこれでは良い意味の認識 処理に不便です そこでレコーダーと呼ばれる回路を使用し ます レコーダーはインプットが取り得る全ての 組み合わせに対応してアウトプットのうち の1つが on になり残りすべてがオフ
(12:08) になるか色です つまりレコーダーのアウトプットのどこが オンになっているかを見れば今の インプットの状態を知ることができます そしてこのアウトプット一つ一つをリスト に対応させることで先ほどと比べて簡単に 意味を認識することができます アウトプットはインプットが取り得る全て の組み合わせの数 必要となるのでインプットがにこの場合は アウトプットは4個 インプットが3個の場合はアウトプットが 8こになります デコーダーがどのような仕組みでこの機能 を実現しているかをみてみます この回路を作成するには nand ゲート とは異なる性質を持つゲートを考えた方が 便利です まず ランドゲートの2つのインプットを一つの スイッチで操作する場合を考えます そうすると2つのインプットは必ず同じ値 となるので両方がゼロか両方が市下の2つ
(13:16) の場合があり nand gate の表 を見ると両方のインプとがゼロの場合は アウトプットが1 両方のインプットが1の場合は アウトプットがゼロとなることがわかり ます つまりこの回路ではスイッチの状態と反対 の状態がアウトプットになります このような性質からこの回路は not ゲートと呼ばれこのように表すこととし ます さらに nand ゲートと not ゲートをつなげることによりこのような 回路を考えますこの回路を考えるとランド ゲートのアウトプットが not ゲート につながれているため nand gate のアウトプットと 反対の値がアウトプットになります境に するとこのような関係となり a と b が1のときのみ アウトプットが1になるのでこの回路は& ゲートと呼ばれこのように表すこととし ます まとめるとそれぞれのゲートはこのような
(14:25) 性質になっています インプットが2つの場合のリコーダーを 考えると not ゲートと&ゲートを このように配置することで作成することが できます この場合のインプットとアウトプットの 関係を見るとこのようになっており インプットのすべての組み合わせに対応し て何かひとつのアウトプットが1になり ます 次にリコーダーのインプットの数を増やす ことを考えます リコーダーのインプットの数を拡張するに は&ゲートを拡張する必要があります このように&ゲートを配置すると インプットが3つの&ゲートを作成する ことができます この回路では3つのインプットがすべて市
(15:29) の場合のみ アウトプットが1になることが分かります この回路はこのように一つの&ゲートとし て表すこととします そしてこの3つのインプットを持つ& ゲートを使用し このように組み合わせることで3つの インプットを持つリコーダーを作ることが できます このように&ゲートを拡張していくことで 3つ以上のインプットを持つリコーダーで も作成することができます 次に説明するラムではこちらのような4つ のインプットを持つリコーダーを使用し ます このディコーダーではアウトプットの数は にの4場で16異なります インプットが4個アウトプットが16この
(16:34) ディコーダー2つをこのように交差する ように配置し8ビットのメモリの アウトプットそれぞれのインプットに つなげます そうするとリコーダー同士の交点の数は 16かける16-256子になります そしてそれぞれのリコーダーはインプット の値に応じてアウトプットのうちの一つの 実がオンになります その結果 オンになっている船同士が交差する点が一 つだけ存在します つまりメモリに入力された8ビットの情報 は 256子歩こう点のうちの1つを指定して います このことから8ビットの情報は好天の住所 を示していると考えることができるので これをメモリアドレスレジスタと呼び以降 は mar と表記します 各校店にはこのような回路が組まれており それぞれの位置に1バイトのメモリが配置
(17:40) されています 順番に見ていくと先ほどと同様にメモリ アドレスレジスタのアウトプットはディ コーダーにつながれているためこのメモリ が持つ情報で好天のアドレスを指定してい ます そしてリコーダーのアウトプットはこの ように x と書かれた&ゲートの インプットに接続されています この x-2つのインプットのうち1つは 上のディコーダーのアウトプットである縦 の線 もう一つは左のディコーダーの横の線と なっているのでメモリアドレスレジスタが この好転を指定したときのみ x- アウトプットは音になります x-アウトプットはさらに右側にある2つ の se と書かれた&ゲートの インプットになっています この2つの&ゲートのもう一方の インプットは別の市にある se と書か れたスイッチとつながれています さらに&ゲート s は8ビットメモリの
(18:47) s につながれており&ゲートいいは8 ビットメモリの下にある8この&ゲートの インプットになっています この8ビットのメモリと8この&ゲートの 組み合わせはレジスタと呼ばれます これがラムの構造です 例えばここの好転にあるレジスタにこの8 ビットの情報を記憶させたい場合を考え ます 全体の流れとしてはまず mar に使用 したい好天のアドレスを入力し一つの交点 を選択します 今回は9校10を使用するのでアドレスは 1111 0000となります そうするとパクリコーダーのアウトプット の一つが on になり x- アウトプットが on になりました ここまでで使用したいデジスタがある好転
(19:51) を指定することができました 次にレジスタにこの8ビットの情報を記憶 させるにはメモリの s のインプットを オンにする必要があります そのためには&ゲート s の アウトプットが on になる必要がある のでここのスイッチ s をオンにします そうするとこのレジスタに8ビットの情報 を記憶させることができました 次にこの記憶した情報を別の場所に移動さ せたい場合を考えます このメモリのアウトプットは1ビットずつ それぞれ&ゲートにつながれています そして各&ゲートのもう一方のインプット は左にある&ゲートいいにつながれている ため いいのアウトプットを on にすること でメモリに記憶されている8ビットの情報 は8この&ゲートから出力できますつまり このいいのスイッチを on にすること でメモリに記憶されている情報を他の場所
(20:57) に出力することができます このようにすると各好転にあるレジスタに ランダムな順番でアクセスしデータの記憶 と出力ができるためこれは random access memory ラムと呼ばれています ラムは各校店に1バイトのレジスタがある ので指定できる好天の住所が多いほど記憶 できる情報量が大きくなります 今回の例では mar に使用している レジスタの大きさが8ビットであり指定 できる好天の住所の数は256異なります そのため各校店には1つずつ1バイトの レジスタが配置されているので合計で 256バイトのメモリになります つまり8ビットの mar を使用して いる場合基本的には ram の容量の 上限は256バイトになります 256バイト以上の ram を使用し
(22:03) たい場合は mar の容量を8ビット よりも大きくする必要があります現在の パソコンでは8 gb 以上のメモリを 搭載していることもよくありますがこれは 好天の住所を指定するのに使用される m ar の容量が64ビットであるためです この場合メモリ容量の上限は2-64条で ある 1844系バイトとなりこれは約200億 gb になります 少し前まで mar に使用されていた 容量は32ビットであったためこの場合は メモリの容量の上限は2-32条で4 gb でした つまり 32ビット版のパソコンを使用している 場合はメモリは4 gb までしか搭載 することはできません 最後に参考にした書籍を紹介します この動画を作成するにあたり こちらの本を参考にしました
(23:09) この本ではコンピューターハードウェアの 基本的な仕組みが一から体系的に解説され ており事前知識が全くなくても理解できる ほど丁寧に説明されています 英語で書かれてはいますがそれほど難しい 文章はなく読みやすいのでコンピュータの しくみを知りたい方にはおすすめです

◆参考書籍
「But How Do It Know – The Basic Principles of Computers for Everyone」
Amazonリンク→ ( https://amzn.to/41lrAf8

(サウンド)
ポケットサウンド https://pocket-se.info/

関連記事一覧