リレーから始める CPU 自作

2021-12-01

トランジスタを使わずにコンピュータを作ります。

\[ \newcommand{dn}[3]{\frac{\mathrm{d}^{#3} #1}{\mathrm{d} #2^{#3}}} \newcommand{\d}[2]{\frac{\mathrm{d} #1}{\mathrm{d} #2}} \newcommand{\dd}[2]{\frac{\mathrm{d}^2 #1}{\mathrm{d} {#2}^2}} \newcommand{\ddd}[2]{\frac{\mathrm{d}^3 #1}{\mathrm{d} {#2}^3}} \newcommand{\pdn}[3]{\frac{\partial^{#3} #1}{\partial {#2}^{#3}}} \newcommand{\pd}[2]{\frac{\partial #1}{\partial #2}} \newcommand{\pdd}[2]{\frac{\partial^2 #1}{\partial {#2}^2}} \newcommand{\pddd}[2]{\frac{\partial^3 #1}{\partial {#2}^3}} \newcommand{\p}{\partial} \newcommand{\D}[2]{\frac{\mathrm{D} #1}{\mathrm{D} #2}} \newcommand{\Re}{\mathrm{Re}} \newcommand{\Im}{\mathrm{Im}} \newcommand{\bra}[1]{\left\langle #1 \right|} \newcommand{\ket}[1]{\left|#1 \right\rangle} \newcommand{\braket}[2]{\left\langle #1 \middle|#2 \right\rangle} \newcommand{\inner}[2]{\left\langle #1 ,#2 \right\rangle} \newcommand{\l}{\left} \newcommand{\m}{\middle} \newcommand{\r}{\right} \newcommand{\f}[2]{\frac{#1}{#2}} \newcommand{\eps}{\varepsilon} \newcommand{\ra}{\rightarrow} \newcommand{\F}{\mathcal{F}} \newcommand{\L}{\mathcal{L}} \newcommand{\t}{\quad} \newcommand{\intinf}{\int_{-\infty}^{+\infty}} \newcommand{\R}{\mathcal{R}} \newcommand{\C}{\mathcal{C}} \newcommand{\Z}{\mathcal{Z}} \newcommand{\bm}[1]{\boldsymbol{#1}} \]

これは リレーから始める CPU 自作 Advent Calendar 2021 1 日目の記事です。

自己紹介

はじめましての方ははじめまして、そうでない方はこんにちは。Kanade です。普段は機械工学の学生をやっている傍ら、趣味でいろいろなものを作って遊んでます。

5 年前に Harry Porter’s Relay Computer というサイトを見て、リレーコンピュータを作ってみたいと思って以来、「CPU の創りかた」を読んでみたり、Linux のソースコードを読もうとして挫折したり、低レイヤの沼にずぶずぶと引き込まれていきました。

今年ようやく、まともに動くリレーコンピュータが完成したので、いままでに学んだことをまとめようと思い、アドベントカレンダーを作りました。

目標

このアドベントカレンダーの目標は、コンピュータを完全に理解して作れるようになることです。何を以って「完全に理解した」とするかは難しいですが、少なくとも異世界に転生したときにコンピュータを作って無双できるようになれるとは思います。

そのために、トランジスタを使わずにコンピュータを作ります。トランジスタを使ってコンピュータを作ることはできますが、トランジスタのしくみを理解するのは難しいです。実は、トランジスタの内部を理解することはコンピュータを理解する上で本質的ではないのです。トランジスタなしでコンピュータが作れれば、転生先の異世界に NEC か東芝か日立がなかったとしても安心です。

予定

1 週目:論理回路(組合回路・順序回路)をリレーで作る

2 週目:コンピュータの動作と構成

3 週目:リレーコンピュータの製作

>>> 2 日目