これは私が大学院時代に行ったプロジェクトです - カーボンナノチューブコンピューターです。ただし、このプロジェクトは一旦終了し、その後の研究はこれに基づくものではなくなりますが、一定の参考価値はあります。
プロジェクトの背景
2013 年、スタンフォード大学は、178 個のカーボン ナノチューブ トランジスタ (CNTFET、カーボンノンチューブ電界効果トランジスタ) で構成される世界初のカーボン ナノチューブ コンピューター システムを開発しました。これは、SUBNEG
命令。この CNTFET コンピューターは実験的なものであり、1 ビット操作のみを実行できます。もちろんモニターやキーボードもありません。
ムーアの法則が失効しようとしている今日、シリコンベースの集積回路はその技術の限界にほぼ達しており、集積回路業界は業界のボトルネックを打破する新しいタイプの材料を緊急に必要としています。このようなカーボン ナノチューブ コンピューターの登場は画期的な出来事です。したがって、研究成果に関連する論文もNatureに掲載されます。
プロジェクト紹介
プロジェクトの目標: ユーザーが独自のプログラムを実行できる比較的完全なコンピューター システムを実現すること。もちろん、システムに使用されているCPUはカーボンナノチューブ関連のプロセスを用いて製造されています。
このシステムで使用される命令システムと CPU の微細構造は、私と博士課程の学生によって設計され、物理的には別のチームによって実装されました。さらに、私はソフトウェアとハードウェアの共同設計と実装を含む、コンピュータ システムの完全な構造の設計と実装を担当しています。
フレーム全体
以下の図に示すように、システムは主に次の 3 つの部分で構成されます。
システム全体は次の 5 つの部分で構成されます。
- カーボンコア: カーボンナノチューブを使用して実装された CPU。
コーディネーター: FPGA によって実装され、カーボン コア CPU が命令とデータの保存を完了し、必要なクロックを生成し、入出力制御 CPU との非同期通信などの機能を完了するのを支援します。- 外部コントローラー: Raspberry Pi (Raspberry Pi) を入出力として使用して CPU を制御し、
CPU 上で Linux オペレーティング システムを実行します。 - モニター: ディスプレイ、ユーザーがシステム情報を取得する方法。
- キーボード: キーボード、ユーザーがコマンドを入力する方法。
カーボンコア
命令システム
このシステムの CPU は、世界初の 8 ビット プロセッサ Intel 8008 の設計に基づいており、カーボン ナノチューブ CPU 製造技術の特性に合わせて調整および最適化されています。CPU の命令体系を次の表に示します。
ニモニック | 命令エンコーディング | コマンドの説明 |
---|---|---|
ムーブC | 0000 0000 | acc = C |
MOV [C] | 0000 0001 | acc = DRAM[C] |
MOVn | 0000 0101 | DRAM[C = acc |
Cを追加 | 0000 1000 | acc = acc + C |
[C]を追加 | 0000 1001 | acc = acc + DRAM[C] |
追加[C] | 0000 1101 | DRAM[C] = acc + DRAM[C] |
サブC | 0001 0000 | acc = acc - C |
サブ[C] | 0001 0001 | acc = acc - DRAM[C] |
サブn[C] | 0001 0101 | DRAM[C] = acc - DRAM[C] |
RSB C | 0001 1000 | acc = C - acc |
RSB[C] | 0001 1001 | acc = DRAM[C] - acc |
RSBn[C] | 0001 1101 | DRAM[C] = DRAM[C] - acc |
データセグメントC | 0010 1000 | データセグメント = C |
インサートC | 0010 1001 | INSTSEG = C |
JRC | 0010 1100 | PC = acc、INSTSEG = C |
紀元前 | 0011 0000 | PC = PC + C |
BZC | 0011 0001 | acc = 0 の場合、PC = PC + C |
BNZ C | 0011 0010 | acc != 0 の場合、PC = PC + C |
終わり | 0011 1111 | シャットダウン操作 |
マイクロアーキテクチャ
この CPU のマイクロアーキテクチャを次の図に示します。算術論理演算器ALU、命令デコーダDEC、プログラムカウンタPC、分岐判定ロジックなどを含みます。CPU は、同じ周波数と異なるクロックの 2 つのクロックによって制御されます。
コーディネーター
CPUだけではプログラムを実行できないため、周辺補助回路を専用設計する必要があります。次の図は、補助回路モジュール コーディネーターの内部実装を示しています。これには主に 7 つの主要コンポーネントが含まれています。
- クロック ジェネレーター: クロック ジェネレーター、クロック ソースは FPGA クロック ソースから来て、デコーダーとカーボン コア CPU にクロックを提供します。
- デコーダー: カーボン コア CPU のデコード、アドレス指定、RAM の読み取りと書き込みを支援します。
- メイン コントローラー: 外部コントローラーの制御信号を送信し、デコーダーとカーボン コア CPU に通知します。さらに、END 命令をキャプチャした後、プログラム完了信号を外部コントローラーに送信します。
- IRAM コントローラー: デコーダーの IRAM への読み取り操作を制御します。
- DRAM コントローラー: DRAM 上でのデコーダーの読み取りおよび書き込み操作を制御します。
- IRAM: 内部に I2C ベースの命令送受信プロトコルを含む、命令を保存するための 256 個の 2 バイトのストレージ ユニットを含む RAM。
- DRAM: データを保存するための 256 個のシングルバイト記憶ユニットを含む RAM。内部には I2C ベースのデータ送受信プロトコルが含まれます。
ラズベリー
このプロジェクトでは外部コントローラとしてRaspberry Piを使用し、Raspberry Pi上でプログラミングを行っていますが、現時点ではアセンブリプログラミングのみが可能です。もちろん、プログラムはカーボンコアCPUの命令体系に従う必要があります。当社が作成した簡易アセンブラを使用してコンパイルすると、Carbon Core CPUがプログラムを制御して作成したプログラムを実行できます。
raspberry-host/mainController.cpp
このファイルには、システム ソフトウェア制御プログラム全体のエントリ機能が含まれています。
コンパイルディレクトリ内のスクリプトを
直接rasberry-host
実行して、制御プログラムをコンパイルします。build.sh
$ ./build.sh
実行
システム全体を実行したい場合は、関連する回路システムを構築し、FPGA を使用してsparntan6-fpga
カタログ。このプロジェクトではカーボンナノチューブCPUのハードウェア設計も提供しており、一般ユーザーはカーボンナノチューブを使用してCPUを実現することはできないが、FPGAを使用することでCPUを実現することができる。もちろん、システム全体を動作させるには、Raspberry Pi、モニター、キーボードも必要です。
システムが構築されたら、次のコマンドを実行できます。
$ sudo ./mainController > run.log
システムの操作には Raspberry Pi GPIO の初期化が含まれるため、システムを正しく実行するには root 権限が必要です。さらに、実行によって生成されるrun.log
ファイルには、システムがプログラムを実行するときに関連する情報が記録されます。
その他のサプリメント
レベル変換
Carbon Core の動作電圧は 2V、弊社の Raspberry Pi と FPGA の動作電圧は 5V であるため、連携する場合はレベル変換モジュールを追加する必要があります。下図に示すように、私たちが設計したレベル変換回路です。