やじうまミニレビュー

人間が計算するより遅い「1bit CPUキット」を試した

やじうまミニレビューは、1つ持っておくと便利なPC周りのグッズや、ちょっとしたガジェットなど幅広いジャンルの製品を試して紹介するコーナーです。

 「1bit CPU 組み立てキット」という一風変わったキットが登場したのは昨年(2023年)の12月だった。PC Watchで紹介されるやその“低性能”が大きな話題となり、さっそく筆者も購入しようとしたがなんと売り切れ。「こんなアイテムを欲しがる人がそんなにいるのか?」と驚いた(編集部注:人のことを言える立場にないと思うのだが……)。

 その後しばらく品切れが続いていたが、先だって在庫が復活したので購入してみた。キットの制作はNAOTO氏で、スイッチサイエンスで委託販売されている。価格は2,500円だ。

組み立てに難しいところはなし

 ハンダ付けが必要なキットだが、部品点数もさほど多いわけではないので簡単に組み立てることができた。基本的には完成写真を見ながらでOKだが、LEDなど極性のある部品には気をつけたい。

キットの中身

 ICは4つで、「74HC00」(NANDゲート)、「74HC14」(シュミットトリガインバータ)、「74HC74」(フリップフロップ)、「74HC153」(マルチプレクサ)。実装に関してはソケットが付いているので安心だ。

キットに含まれるIC。クロックの生成には74HC14(シュミットトリガインバータ)が使われている
付属の実装図を見ながら組み立てていく。回路図はWebサイトでも公開されている
組み立てに必要なのはハンダごて、ハンダ、ニッパーなど。ハンダ付けは背の低い部品から進めるとやりやすい
LEDやダイオードなど極性のある部品は向きに気をつける。LEDは側面の平らな部分を基板のマーキングと合わせる

 LEDはハンダ付けの熱によるダメージを避けるために、浮かせて実装するとの注意書きがあるため、適当な位置でリードを曲げて固定しつつハンダ付けする

LEDをハンダ付けしているところ
電源はUSB Type-Cと今風。脚のハンダを流しすぎるとコネクタの内側に漏れてくるので注意したい

プログラムは2行だけ

 こういったマイコンキットは通常4bitや8bitのものが多く、簡単なゲームくらいはプログラミングできるようになっている。しかし本機は、「世界トップクラスの低性能コンピュータ」とアナウンスしている“1bitマシン”。なので、ちょっとゲームは難しい(笑)。

完成したところ
裏面

 あるCPUを「何bit」と呼ぶかの考え方は色々あるが、このキットは汎用レジスタ(Aレジスタ)が1bit×1、扱えるメモリ容量が決まるアドレスバス幅も1bit、処理の進行に合わせてロード対象のアドレスを進めるプログラムカウンタも1bitとなっている。

 出力は、Aレジスタの2値情報を表示するLEDで、オンかオフの2通りなのでこれも1bitということだ。

 アドレスバス幅が1bitということはアドレスが0番地と1番地の2つだけ、すなわちプログラムは2行しか書けないわけだ。アドレスが2つなので、プログラムカウンタも1bitで事足りるというすごい(しかし当然の)仕様になっている。

 一方で、1つのアドレスの大きさ(ワード)は、さすがに1bitだとオペコード(命令)とそれに続くオペランド(数値やアドレス)を両方表現できないので、2bit分確保されている。

 このCPUを低性能なものとしているほかの要因として、クロック周波数が1Hzという点にも注目される。1GHzや1MHzではなく「1Hz」なので、1秒に1回サイクルが進む。コンピュータの元祖として有名な「ENIAC」ですら1回の加算が200μsでできたと言うから、このキットではその速度だけでも5,000倍はかかっていることになる。

いざプログラミング!

 さて、本機は機械語でプログラミングするが、命令は「ADD(加算)」と「JMP(ジャンプ)」の2つしかない。それぞれの後にADD命令なら足す数字(0か1)、JMPならジャンプするアドレス(0か1)を記述する。

 命令やデータはDIPスイッチで設定し、これがプログラムとなる。ADD命令は機械語で0(スイッチのオフ)、JMP命令は機械語の1(スイッチのオン)だ。このDIPスイッチがROMになっていて、4つのスイッチがあることから「ROM容量=4bit」というわけである。

プログラムはDIPスイッチで設定

 命令が少なくデータも2進数の1桁だけなので、できることは説明書にもあるとおり「2進数1桁の足し算」と「Lチカ」(LEDの点滅)くらいだ。

 2進数1桁の足し算はニモニック(機械語を人間が読みやすいようにした形式)で――

ADD A, 1
JMP 1

 になる(1行目が「0番地」、2行目が「1番地」)。この時DIPスイッチの設定は、オフ/オン/オン/オン。リセットボタンを押して実行すると消灯していたAレジスタのLED(赤)が、次のクロックで点灯する。これで「0+1=1」が計算できたということになる。「JMP 1」は1番地に留まるという意味なので、処理の終了を表している。

0+1を実行したところ。Aレジスタの赤いLEDが点灯しているので、答えは1と分かる

 続いてLチカはニモニックで――

ADD A, 1
JMP 0

 となり、DIPスイッチはオフ/オン/オン/オフだ。0番地で1が足されるのでAレジスタのLEDが点く。続く1番地は「0番地に戻る」という意味なので、さらにAレジスタに1が足される。これは2進数で「1+1=10」をやっているわけだが、加算する部分が1bitしか扱えないので桁上がりが無視されて0となる。そしてまた1が足されるのでLチカになるわけだ。

Lチカ動作中の様子

 この“桁上がりを無視した2進数1桁の足し算”は「0+0=0」、「0+1=1」、「1+0=1」、「1+1=0」となり、論理ゲートの「XOR」(エクスクルーシブオア、排他的論理和)そのもの。実際回路図を見てみると、NANDゲート4つを使ったXORゲートが構成されているのが分かる。

 そのようなわけで、このCPUを端的に言えば「XORを求める装置」(あるいは、半加算器から桁上げ機能を除いたもの)ということになるだろうか。

回路図

 また、「74HC74」のチップは2回路入りのD型フリップフロップで、それぞれAレジスタとプログラムカウンタの値を保持するのに使われている。これも回路図から読み取ることができる。

 ちなみに本CPUは1番地(2行目)で停止(JMP 1)を指定しない限り、自動的に0番地に戻ってループする仕様になっているようだ。プログラムを――

ADD A, 1
ADD A, 1

とすると(オフ/オン/オフ/オン)、先のLチカプログラムの2倍の速度でAレジスタに1が足されるため、AレジスタのLEDも倍の速度で点滅を続ける。

マイコンに興味を持つきっかけにも

 シングルボードコンピュータといえば、人気の「Raspberry Pi」も最新版となる“5”の国内デリバリーが始まったところだが、本キットはそうしたコンピュータとも比べるべくもないスペックだ。今回はネタとして楽しむということで購入したが、最初に電源を入れて動いた時にはやはり感動があるものだ。

消費電流は測定限界以下だった

 このキットは命令が少なすぎることに加えて、CPUの基本機能であるフラグレジスタやスタックポインタも非搭載となっている。そういうことを考えると機械語の学習目的としてなら、たとえば筆者も以前試した4bitのマイコンキット「ORANGE-4」(ピコソフト)などが好適と言えるかもしれない。

 とはいえ、1bitという尖ったCPUキットはおそらく最初で最後だろうから、コンピュータの原点的なものを感じつついじってみるのは面白いことだと思うし、CPU(マイコン)の原理や論理回路に興味を持つとっかかりには良さそうなアイテムだと感じた。シンプルな作りなので、勉強しつつ回路図の読み解きにチャレンジするのも一興だと思う。