一からコンピュータを作るぞ! ~順序回路~


3章の備忘録です。
以下記事が参考になります。
コンピュータシステムの理論と実装3
コンピュータサイエンス入門 第8回

順序回路

時間が経過してもデータを記憶させておく仕組みを実現する回路です。
2章で行なった組合わせ回路は、入力の組み合わせで値が確定するので、多くの処理が可能となります。
しかし、値を保持することができません。
そこで順序回路の出番ということになります。

フリップフロップ(D型: DFF)

この実装により、「前に思い出したものを思い出す」、つまり記憶装置を作ることが可能になります。
順序回路はこのDFFの組み合わせで構成されています。

式としては、out(t) = in(t-1) を実現することができます。

レジスタ

データを格納したり、呼び出したりすることが可能な記憶装置です。
loadが1の場合、読み込み、loadが0の場合、値の保持を行います。

式としては、out(t) = out(t-1) を実現することができます。

1ビットレジスタ

load は上書きの有無を表します。

CHIP Bit {
    IN in, load;
    OUT out;

    PARTS:
        Mux(a=fb, b=in, sel=load, out=w1);
        DFF(in=w1, out=out, out=fb);
}

w ビットレジスタ

1ビットレジスタを重ねていくことで構築することが可能です。
また幅(width)とは、保持すべきビットの数をさします。

RAM(Random Access Memory)

データ入力、アドレス入力、ロードビットの3つを入力として受け取ります。

CHIP RAM8 {
    IN in[16], load, address[3];
    OUT out[16];

    PARTS:
        DMux8Way(in=load, sel=address, a=a, b=b, c=c, d=d, e=e, f=f, g=g, h=h);
        Register(in=in, load=a, out=out1);
        Register(in=in, load=b, out=out2);
        Register(in=in, load=c, out=out3);
        Register(in=in, load=d, out=out4);
        Register(in=in, load=e, out=out5);
        Register(in=in, load=f, out=out6);
        Register(in=in, load=g, out=out7);
        Register(in=in, load=h, out=out8);
        Mux8Way16(a=out1, b=out2, c=out3, d=out4, e=out5, f=out6, g=out7, h=out8, sel=address, out=out);
}

RAM、ROM 違い

RAM → Read, Write ができるメモリ
ROM → Readだけができるメモリ

RAMとROMの違い - 日本パソコンインストラクター養成協会
知らないと恥ずかしい? メモリの「RAM」と「ROM」の違い

全体像

メモリの中にRAMが存在し、
RAMの中にw ビットレジスタが存在し、
w ビットレジスタの中に1ビットレジスタが存在し、
1ビットレジスタの中にDFFが存在するという構成だと理解しています。
俯瞰的に見ると、メモリの中身を作っていることになると思います。

メモリとRAMはほぼイコールなのかな?。。。