chrmlinux03のアイコン画像
chrmlinux03 2026年04月08日作成 (2026年04月09日更新) © MIT
製作品 製作品 閲覧数 213
chrmlinux03 2026年04月08日作成 (2026年04月09日更新) © MIT 製作品 製作品 閲覧数 213

【リナゴスティーニ①創刊号】64bitI2Cクラスタを27円RISC-Vで作るにょ【思想】

【リナゴスティーニ①創刊号】64bitI2Cクラスタを27円RISC-Vで作るにょ【思想】

設計思想

ダラス・1-Wireの哲学を、27円の石で再定義する
かつて温度センサーの名機「DS18B20」などが採用した 1-Wireプロトコル。1本の信号線に数ダースのデバイスをぶら下げ、それぞれを 64-bit ROM ID で識別するという極めてエレガントな手法を、2026年の今、我々は 27円のRISC-Vマイコン(CH32V003) でアップデートする。

3層の住所が拓く「64-bit」の宇宙

I2Cの物理的な制約(127個のアドレス)を、3つのレイヤーで突破。
指紋 (48-bit Unique ID):チップに刻まれた「本名」。
背番号 (16-bit Option Byte):物理的な配置を示す「役職」。
仮住まい (7-bit Hash Addr):通信窓口としてUIDから自動計算。
これらを統合することで、理論上 1,844京個 のノードを1セットのバスで管理。27円の石に、世界に一つだけのアイデンティティを与える。

#define UID_BASE 0x1FFFF7E8 // 48-bit Unique ID (本名) #define OB_BASE 0x1FFFF804 // Option Byte Data0 (役職/物理インデックス) typedef struct { uint16_t pos_id; // 16-bit: 背番号 (OB) uint64_t unique_id; // 48-bit: 指紋 (UID) } NodeIdentity;

起動の儀式:エニュメレーション(列挙)

電源を入れた瞬間、バス上では静かな「合議」が始まる。
各ノードが自分の「指紋」から7-bitアドレスを勝手に決めて名乗る。もし住所が被れば、マスターが General Call (0x00) で「お前ら、ハッシュをずらしてやり直せ」と一喝。数秒後、バス上には完璧なクラスタマップが完成する。

uint8_t calculate_dynamic_addr(uint8_t seed) { uint32_t *uid = (uint32_t *)0x1FFFF7E8; uint16_t ob_pos = *(uint16_t *)0x1FFFF804; // UID + OB + マスターからのシード でハッシュ生成 uint32_t hash = uid[0] ^ (uint32_t)ob_pos ^ seed; uint8_t hash7 = (uint8_t)((hash ^ (hash >> 8)) & 0x7F); return (hash7 % 112) + 0x08; }

究極の柔軟性:演算式すらも「電送」する

このクラスタの真骨頂は、スレーブが「何を計算するか」をあらかじめ決めていない点にある。
パラメータの電送: 引数を送り込み、各ノードに分散計算を指示。
命令(OpCode)の切り替え: パケット一つで、ノード全体を「マンデルブロ集合ソルバー」から「高速フーリエ変換エンジン」へと一瞬で変貌させる。
「ハードウェアは27円の固定資産だが、その能力は電送されるパケットによって無限にアップデートされる。」

typedef struct __attribute__((packed)) { uint8_t target_id; // ハッシュアドレス) uint8 param; // 引数 uint16_t code_size; // マシン語のサイズ(byte) uint8_t payload[64]; // マシン語本体(RAM上の実行領域へコピーされる) } DynamicDeployPacket_t;

なぜやれるのか?

これは単なる格安クラスタではない。
汎用的な道具だけで、歴史への挑戦状を叩きつける――それが「リナゴスティーニ」の精神だ。




次号予告
第2号:ハッシュの衝突を数学で殴る
同じ住所を名乗ってしまったノードたちを、マスターがどのようにして「引き剥がし」、整列させるのか。そのアルゴリズムの深淵に迫る。

chrmlinux03のアイコン画像
今は現場大好きセンサ屋さん C/php/SQLしか書きません https://arduinolibraries.info/authors/chrmlinux https://github.com/chrmlinux #リナちゃん食堂 店主 #シン・プログラマ
ログインしてコメントを投稿する