当サイトの一部ページには、アフィリエイト・アドセンス・アソシエイト・プロモーション広告を掲載しています。

Amazonのアソシエイトとして、Security Akademeiaは適格販売により収入を得ています。

広告配信等の詳細については、プライバシーポリシーページに掲載しています。

消費者庁が、2023年10月1日から施行する景品表示法の規制対象(通称:ステマ規制)にならないよう、配慮して記事を作成しています。もし問題のある表現がありましたら、問い合わせページよりご連絡ください。

参考:令和5年10月1日からステルスマーケティングは景品表示法違反となります。 | 消費者庁

Control Unit【NandGame編】

はじめに

いつもブログをご覧いただきありがとうございます。

FIRE生活中のIPUSIRONです😀

IPUSIRONのプロフィールを見る

Control Unitレベル

プログラムは一連の命令から成り立ちます。そして、各命令はそれを決定するビットフラグの集まりであり、次の内容が確定します。

・実行するALU演算

・どのレジスターを入力として使用するか

・どのレジスターに演算結果を格納するか

そして、コンピューターはALU命令に加えて、データ命令もサポートしなければなりません。データ命令では、命令値が直接Aレジスターに書き込まれます。

Control Unitレベルのゴールは、命令Iの最上位ビット(0スタートの15ビット目)に応じて、データ命令またはALU命令のどちらかを実行する回路を組むことです。最上位ビットが0ならデータ命令、1ならALU命令を意味します。

[1]ALU命令の場合、出力RはALU演算の結果になります。

[2]データ命令の場合、出力Rは入力lであり、送信元はAレジスターになります。つまり、当該回路の出力であるaフラグは1、dとa*とjの3フラグは0でなければなりません。

Control Unitレベルを解く

1:ALU命令を処理する回路を実装する

ALU命令を処理するにはalu instructionコンポーネント(以降、aluコンポーネントと略す)の力が必要です。そこでキャンバスにaluコンポーネントを配置します。

aluコンポーネントの4入力については、当該回路の4入力と名前が同じことからも推測できますが、直結して構いません。

次にaluコンポーネントの出力ピンのワイヤリングを考えます。

ところで、当該回路の出力に関しては、ALU命令かデータ命令かによって変わってきます。これまで実装してきたテクニックによって、どちらの処理もやっておいて、それらの処理結果のどちらを出力するのかを制御するのです。そのためには出力側にセレクターを配置します。

入力Iの最上位ビットが1のときにALU命令になることを考慮すると、次の回路になります。

select 16コンポーネントのD1ピンが、aluコンポーネントの出力ピンとつながっています。

2:データ命令を処理する回路を実装する

select 16コンポーネントのD0側にデータ命令を処理する回路をつなげることになります。

仕様どおりに、入力Iをそのまま出力Rに渡し、aフラグだけ1固定、その他のフラグは0固定とします。

回路にすると次のようになります。

この回路は7つのコンポーネントが使わており、内部的に2,635個のNandゲートで構成されています。

以上によりレベルクリアになります。