HYPERCONCERTO株式会社のチーフエンジニア雑記Blog

hyperconcerto株式会社のチーフエンジニアが日々気づいたことを書いています

CPUをどうやって作ろうか?

どのような手法でCPUを自作したらいいのでしょうか?
ご存じのとおりCPUは2進数で計算処理をする装置で、さらにその2進数は電圧の低いと高いで表現され、その電圧はトランジスタの組み合わせで表現できます。
計算はトランジスタを組み合わせて作られたANDやOR、NOTなど論理の組み合わせで
表現でき、ANDとかを集積回路に集積したICが汎用ロジックICとして販売されていました。
販売されていましたというのも、今時単品のロジックICをたくさん使って希望の回路を実現するよりは、集積率の高い集積岐路に押し込んでしまった方が安くて安価に作ることができるのです。
大昔は実際にロジックICを大量に使ってコンピュータが作られていたのですが、集積回路の集積率が上がったため今ではCore i7などを見たらわかるように一つのチップで構成されています。

この前ふりで汎用ロジックICで、CPUを作りそうな雰囲気を出していましたがそんなつもりは全くなく、お手軽ではんだ付けもいらないFPGAで作ります。
(表示装置自作のためはんだ付けはするかもしれない…)

FPGAって?
組み込みハードウェアのエンジニアではないのでまったく詳しくないのですが、FPGAは好き放題に内部の論理素子を定義できる物だそうです。
もう少し正確に書くと空の論理素子が大量に集積されており、FPGAのスペックの範囲で好きに配線を書き換える事ができるものです。
もちろん専用設計の集積回路と違って速度は遅い上に集積率も良くないです。
ネットワーク機器に搭載されている事が多いので、ITエンジニアでご存知の方もいらっしゃると思います。
というわけで、このFPGAの中にCPUとして動作する論理素子を定義してあげれば、CPUとして動作するはずです。

今回ターゲットとなるFPGA評価ボードは「Nexys 4 DDR」で、このボードにはXilinx社のArtix-7というFPGAが搭載されています。
似たようなボードではもっとお安くて入手しやすいBASYS 3などがあります。

 

実装するCPUですが、高度な物は実装できそうにありませんので「CPUの創りかた」に載っているTD4のバイナリ互換CPUを実装したいと思います。

 

備考
Nexys 4 DDRDigi-Keyで購入しました。
BASYS 3もDigi-Key経由で購入できますが、秋月電子様でも販売しています。
Nexys 4 はストロベリーリナックス様でも購入できます。
Digi-Keyだと海外通販となり色々面倒ですので、国内調達ですぐ欲しいという場合はBASYS 3かNexys 4が良いでしょう。
Nexys 4 DDRオンボードで128MBのメモリが搭載されています。

ハイパーコンチェルト株式会社のチーフエンジニアブログはじめました

ハイパーコンチェルト株式会社のチーフエンジニアの雑学記ブログを始めました。
これからよろしくお願いします。

日頃は仮想サーバー構築をメイン業務としていまして、仮想インフラつながりでネットワーク回りも面倒を見ています。
いわゆるサーバーエンジニアをやっています。

ブログを始めるにあたり、当面のネタを考えないといけないのですが
サーバーの構築といっても、あんまり書ける事が少ない分野といいますか
いつも決まった構成でクローンして終わりという手順なので
これといって変わった事がない作業だったりします。
例えば、テンプレートのOSからクローンできたら、FW見たり、
IPアドレスが重複してないか、構成が正しいか、オーダー通りにミドルウェアが入っているかとかetc
と、簡単に書きましたがサーバー構築はうまく構築できないと大変な作業です。
もちろん、ゼロからスクラッチでインストールすることもありますが。
vSphereを使用して構築する事が多いので、vSphereネタは結構キャッチーかと思うのですが、残念ながら検証環境を個人所有してないので書けません。

 

最初からネタに困っていますが、せっかく書くなら私自身も知らない事を書いていきたいと思います。
私はサーバーエンジニアですが、サーバーエンジニアの仕事は基本的に完成したソフトウェアのインストールと設定値の修正で終わる分野です。
プログラム開発などと違って作る部分はほとんどありません。
なのでプログラムの事を勉強して書いていこうというのもありなのですが、私はスクリプト作ったりしたり、VB.netいじることが多いのでちょっと反則な感じです。

 

ちなみに私は広く浅くなんでもやっていますが、一般的なITエンジニアは分業化が進んでいるので専門以外はまったくわからないというのが普通です。
プログラマーにネットワークの設定を求めても無理ですし、サーバーエンジニアにDBの中身を見て!と言っても無理な話です。大抵のITエンジニアはPC自作が無理ですし、もしできる人がいたら周囲からPCオタクと言われます。
(そこら中にサーバーが置いているのに変な話です)
一般の人にパソコンの大先生と頼られても、実際はこんな感じです。

前置きが長かったのですが、ブラックボックス化しているコンピュータの仕組みについてちょっと詳しくなろうという事で、ネタを考えたいと思いますが、いわゆるパソコンをパソコンとして定義しているのはOSです。
OS自作も面白そうで興味をそそられるのですが、まず最初のネタとしてコンピュータの頭脳となるCPUを自作したいと思います。