**FETとクロス:2458個のディスクリート・トランジスタで作るティックタックトー**

2026/03/25 9:27

**FETとクロス:2458個のディスクリート・トランジスタで作るティックタックトー**

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

この記事は、離散トランジスタと論理ゲートのみを使用して完全に勝利できる手作りのTic‑Tac‑Toeエンジンを記録しています。設計は2458個のトランジスタと19個のフリップフロップから始まり、そのうち約1074個が、初期の18ビットROMルックアップテーブルを純粋に組み合わせ式NOR/NANDゲートで置き換えた後の意思決定論理に割り当てられています。CMOSで構築すると、総トランジスタ数は約2000個になります。

意思決定木は、勝利、ブロック、フォーク防止、中央、コーナー、サイドムーブ(9 + 9 + 6 + 9 + 9 + 6 + 3 + 1 + 4 + 4 + 4)をカバーする64個の「意思決定ゲート」から構成されています。各ゲートは入力反転を用いたNOR/NANDロジックを使用し、トランジスタ使用量を最小化します。

ワークフローは、KiCadで基本セルライブラリ(NOT、NAND)を作成し、次により複雑なゲートを構築してから完全な回路を組み立てることから始まりました。2枚の別々のPCBが製造されました:UI、電源規制、555タイマークロック、およびロジックを収容するメインボードと、トランジスタベースのコアを含むエンジンボードです。手作業で組み立てる際に、ワープ修正のために3回のリビジョンが必要となり、信頼性確保のために5枚の最終ボードが製造されました。

小型STM32テストベンチはPythonスクリプトを実行し、すべての可能なゲームをプレイしてエンジンが決して負けないことを確認しました。プロジェクトの目的はデモンストレーションであり、最適化ではありません;より効率的な設計も認められていますが追求されません。この作業は低レベルハードウェア設計の教育展示として機能し、基本ロジックだけで単純なゲームを解決できることを示し、ホビイストプロジェクトに刺激を与えます。

本文

概要と特徴

本プロジェクトは、2 458 個の個別トランジスタだけで構成されたクラシックな「井字ゲーム(Tic‑Tac‑Toe / Noughts and Crosses)」を実装したものです。


シミュレーション/設計

“デジタルデザイン”の講義中に、プレイヤー対プレイヤーとプレイヤー対コンピュータの両モードを備えた井字ゲームのグラフィカルロジックシミュレータモデルを作成しました。
エンジンはもともと並列入出力ROM(ルックアップテーブル)を用いており、18 ビットのボード状態をアドレスとして ROM にアクセスし、メモリから動きを読み取っていました。
機能的には問題ありませんでしたが、この手法は極めて非効率であり、すべての入力のうち 5 % 未満しか有効なゲーム状態に該当していませんでした。

そこで完全に組合せ論的ロジックゲートモジュールへ置き換え、さらに「完璧なプレイ」を保証するようにしました。

LOGISIM におけるシミュレーション
Logisim simulation

高レベルブロック図
Block diagram


ハードウェア実装

最終回路は、ボード状態を表す 18 個のフリップフロップと現在プレイ中のプレイヤーを追跡する 1 個のフリップフロップ、および数個の基本ゲートだけで構成されます。
CMOS 実装時のトランジスタ数は約 2 000 個と推定されています。

設計フロー

  1. 基本セル – KiCad で設計。各セルは独自の階層スキマティックシートに配置。
    • 例:NOT ゲート(図示とシンボル)。
  2. 複合ゲート – 基本セルを組み合わせて構築(例:NAND + NOT で作る 2 入力 AND)。
  3. ロジック再描画 – 個々のコンポーネントではなく、階層シートを用いて全ロジックを KiCad 内に再現。
  4. レイアウト – 各基本セルは一度だけ配線し、その後「レイアウト複製」プラグイン(KiCad 2 通道以前)で全インスタンスに適用。
  5. 組み立て – 手作業で 2 層 PCB のマンハッタン配線を実施:
    • メインボード:ユーザーインターフェース、電源制御、555 タイマークロック、およびエンジン以外の全ロジック。
    • エンジンボード:トランジスタベースのエンジン(またはフラッシュメモリ代替版)。

Main PCB close‑up
Engine PCB render


組み立て

手作業で板を組み立てました。すべてが信頼性を持って動くようになるまでに 3 回のリビジョンが必要でした。
部品配置を高速化するため、リールから直接部品を移動させる真空ピックアンドプレースペンを作成しました。

1 分間のタイムラプス動画(映像は省略)も公開しています。

注意 – 手作業でのはんだ付けにより板が大きく歪みました。3 回のリビジョンと 5 台のプロフェッショナル組立後、板は張力下でも破損しなくなりました。


プレイデモ

短い動画でプレイヤー対プレイヤーとプレイヤー対コンピュータの両方を実演しています。
(映像省略)


エンジン

井字ゲームはシンプルであるため、完璧なプレイは一連の決定ゲートとして符号化できます。各ゲートは特定の勝利またはブロック条件をチェックし、トリガーされると以降のすべてのゲートを停止します。

決定ゲート例(上段の勝ち)

if (b[top][left] == "us" && b[top][middle] == "us" &&
    b[top][right] == "empty") {
    play(top, right);
}

ハードウェア等価は、入力条件が真となったときに活性化する単一の決定ゲートです。
CMOS では NOR/NAND を用いた論理反転がトランジスタ数を減らすため、ゲートへの入力は反転されます。

決定ゲートシーケンス

条件ゲート数
行を完成して勝つ9
列を完成して勝つ9
対角線を完成して勝つ6
相手の一歩先の勝ち(行)をブロック9
相手の一歩先の勝ち(列)をブロック9
相手の一歩先の勝ち(対角線)をブロック6
フォークを防止3
中央が空ならプレイ1
相手が隅にいて反対側の隅が空4
空き隅4
空き辺/上部/下部4

合計 64 の決定ゲートと、状態反転・プレイ出力の OR 合成を行うサポートロジックで構成されます。
完全なエンジンは 1 074 トランジスタ を使用し、完全に組合せ論的な完璧プレイエンジンとなります。

Decision gate schematic


エンジンのテスト

小型 STM32 テストベンチを用いてエンジンと PC を接続。Python スクリプトですべての可能な井字ゲームをエンジンに対してプレイし、決して負けないことを確認しました。

Engine test results


備考

効率化は優先事項ではありませんでした。フリップフロップ設計や複合ゲートの最適化によってトランジスタ数をさらに削減できる可能性がありますが、本プロジェクトは個別トランジスタのみで構成された完全機能の井字ゲーム完璧プレイエンジンを示すものです。


リンク


同じ日のほかのニュース

一覧に戻る →

2026/03/28 17:06

CERN は、リアルタイムで LHC のデータをフィルタリングするために、シリコンへ焼き付けられた小型 AI モデルを利用しています。

## Japanese Translation: CERN(欧州原子核研究機構)は、リニア・ハドロン衝突器(LHC)がリアルタイムで生成する膨大なデータストリームをフィルタリングするために、シリコンチップに焼き付けられたカスタムAIモデルを使用しています。LHCは年間約40,000 エクサバイトのデータを生成し、一時的には数百テラバイト/秒というピーク値に達しますが、分析対象として保持される衝突イベントはわずか0.02%です。このカットを通過するイベントを決定するため、CERN のレベル‑1トリガーは約1,000個のフィールドプログラマブルゲートアレイ(FPGA)を用い、50ナノ秒未満で判断を下さなければなりません。これらのFPGA は AXOL1TL アルゴリズムを実行し、このアルゴリズムは PyTorch や TensorFlow などの人気フレームワークから HLS4ML のようなツールでコンパイルされた非常に小さなニューラルネットに依存しています。FPGA/ASIC ハードウェアは完全なネットワーク層よりも事前計算済みのルックアップテーブルによって支配されており、ほぼ即時に出力を得ることができます。この最初のフィルタ後、25,600 台の CPU と 400 台の GPU を備えたハイレベルトリガーファームがデータをさらに縮小し、1 日あたり約 1 ペタバイトに抑えます。 将来的には、高輝度 LHC(HL‑LHC)が2031 年から開始され、衝突ごとのデータ量が約10 倍になる予定です。CERN はすでに次世代の超コンパクト AI モデルと最適化された FPGA/ASIC デザインを開発しており、この成長に対応できるようにしています。同様の低遅延・リソース効率的な技術は、オートノマス車両、高頻度取引、医用画像診断、航空宇宙分野などでも有用となる可能性があります。

2026/03/28 9:39

エージェントに集中し、ファイルシステムへは干渉しないようにしましょう。

## Japanese Translation: (以下はご提示いただいたテキストの日本語訳です) ``` ## Summary `jai` は軽量なサンドボックスツールで、ユーザーが Codex や Claude などの言語モデルエージェントをフルコンテナイメージを構築せずに実行できるようにします。 - 現在の作業ディレクトリを「jail」として囲み、そのディレクトリ内は完全に書き込み可能にし、他のすべてのファイルを読み取り専用にします。 - ユーザーのホームディレクトリへの変更はコピーオンライトオーバーレイでキャプチャされ、元のファイルは触れられません;`/tmp` と `/var/tmp` はサンドボックス内でプライベートです。 - このツールは単一コマンド(`jai codex`、`lai claude`、または単に `jai`)で起動でき、ユーザー自身の非特権アカウントで実行するか、選択したモードに応じて専用の Jai ユーザーで実行します。 - 三つの隔離モードが利用可能です:**Casual**(弱い機密性、ほとんどのファイルが読み取り可能)、**Strict**(強い機密性、別UIDと隠しホームを使用)、および **Bare Home**(完全な隔離、NFS‑home サポート有効)。 - `jai` はスタンフォード大学 Secure Computer Systems と Future of Digital Currency Initiative のフリーソフトウェアです。Docker を ad‑hoc サンドボックス化に補完しますが、bubblewrap や chroot より軽量であり、より強い隔離を必要とするケースではコンテナや VM に取って代わるものではありません。 ```

2026/03/28 11:17

AMD の Ryzen 9 9950X3D2 Dual Edition は、1枚のチップに合計 208 MB のキャッシュを搭載しています。

## Japanese Translation: **概要:** AMD の新しい Ryzen 9 9950X3D2 デュアルエディションは、以前の X3D モデルで採用されていたハイブリッドキャッシュレイアウトを廃止し、両方のプロセッサダイに 64 MB の 3D V‑Cache を追加しています。各ダイには 16 MB の L2 キャッシュ、32 MB の組み込み L3 キャッシュ、および追加で 64 MB の V‑Cache が備わっており、チップレットペア全体で合計 208 MB のキャッシュが確保されます。既存の X3D チップ(例:7900X3D、7950X3D、9900X3D、9950X3D)では、追加の 64 MB V‑Cache は1つのダイにのみ搭載されています。AMD のドライバソフトウェアはキャッシュ恩恵を受けるワークロードをそのコアへルーティングしますが、このプロセスは一般的には信頼できますが、稀に失敗することがあります。デュアルダイ構成により、すべてのコアが大きなキャッシュプールにアクセスできるようになり、AMD によれば標準の 9950X3D と比べてゲームやその他のキャッシュ依存型アプリケーションで最大10 %の性能向上を実現できます。

**FETとクロス:2458個のディスクリート・トランジスタで作るティックタックトー** | そっか~ニュース