Decima-8: Нейроморфная архитектура, оперирующая уровнями энергии
Открытая спецификация, Level16, эстафетная активация без маршрутизаторов. v0.2

Современные нейроморфные системы сталкиваются с двумя независимыми проблемами.
Проблема 1: Кодирование информации
Бинарные спайковые сети (SNN) передают градации сигнала через:
Частотное кодирование (множество тактов на одно значение)
Увеличение количества линий передачи
Проблема 2: Аппаратная реализация
Аналоговые мемристорные кроссбары обещают естественную нейроморфность, но содержат следующие проблемы:
Шум и дрейф параметров
Недетерминизм вычислений
Каждый чип требует индивидуальной калибровки
Традиционные Network-on-Chip (NoC) добавляют overhead:
~40% площади кристалла уходит на маршрутизаторы
~70% энергии тратится на пересылку данных, а не вычисления
Decima-8 предлагает:
Level16: кодирование уровня активации (0..15) в одном такте на одной линии. Это компромисс между бинарным представлением и аналоговой непрерывностью.
Цифровые кроссбары (эмуляция мемристорных матриц): детерминизм, воспроизводимость, отсутствие шума
Эстафетную активацию вместо пакетной маршрутизации: тайлы не передают данные друг другу, активация распространяется через граф зависимостей
Результат: фиксированная задержка, предсказуемое поведение, 0% площади на роутеры.
⚛ Вместо эмуляции био-нейронов строим ткань, где узнавание — это физика.

2. Математические основы
Архитектура Decima-8 основана на детерминированной целочисленной арифметике. В этом разделе приведены спецификации вычислений: форматы данных, формулы активации и логика работы тайлов. Все значения имеют фиксированные диапазоны, что гарантирует воспроизводимость результатов на любом оборудовании.
2.1 Level16: Семантическая тетрада

В традиционных спайковых архитектурах интенсивность сигнала кодируется либо во времени (частота спайков), либо в пространстве (количество параллельных каналов). Оба подхода требуют компромисса: либо задержка, либо усложнение разводки.
Decima-8 использует Level16 — представление уровня активации как 4-битного значения (0..15) на одной линии за один такт:
Это не попытка «эмулировать аналог цифрой», а осознанный выбор формата данных:
Достаточно градаций для выразительности нейроморфных паттернов
Укладывается в nibble — удобно для packed-форматов и битовых операций
Фиксированный размер — детерминированная арифметика, нет динамической нормализации
Физический смысл Level16:
0— отсутствие активации15— насыщение1..14— градации «силы намерения»
На шине VSB это просто уровень сигнала. Внутри тайла — операнд для арифметики с весами SignedWeight5.
💭 Суть: Level16 — это не «неточный int». Это семантическая единица архитектуры, как float32 в классических нейросетях. Только детерминированная и аппаратно-дружелюбная.
2.2 SignedWeight5: Взвешенные связи с торможением

Каждый тайл содержит цифровую эмуляцию мемристорного кроссбара размером 8×8. На вход приходят 8 значений in16[0..7] (Level16). Каждое значение умножается на свой вес и суммируется по строке.
Кодирование веса: SignedWeight5 (5 бит)
bits 0-2: magnitude (0..7) // модуль bit 3: sign (0=-, 1=+) // знак bit 4: reserved (0) // выравнивание
Диапазон веса: [-7..+7]. Отрицательные веса реализуют латеральное торможение на аппаратном уровне — это не эмуляция, а прямое следствие знаковой арифметики.
Формула для одной строки кроссбара:
Поскольку in16[i] ∈ [0..15], а weight ∈ [-7..+7], вклад одной ячейки лежит в диапазоне [-105..+105]. Сумма по 8 входам даёт [-840..+840] на строку.
Эти 8 строк (row_raw_signed[0..7]) далее расходятся по двум путям:
В аккумулятор (без преобразований) — signed-значения для накопления и принятия решения о lock
На шину VSB (через нормализацию и clamp15) — только неотрицательные значения 0..15
💭 Физический смысл: Если по lane0 приходит возбуждающий сигнал (+5), а по lane1 — тормозящий (-3), их вклады просто суммируются: +5 + (-3) = +2. Баланс «возбуждение/торможение» зашит в арифметику, не требует отдельной логики.
Почему 5 бит на вес?
3 бита на модуль (0..7) — достаточно градаций для выразительности связей
1 бит на знак — поддержка ингибирования
1 бит резерв — выравнивание до ��айта, возможность расширения в v1.0
Это компромисс между точностью и плотностью упаковки: 64 веса × 5 бит = 40 байт на тайл, укладывается в кэш-линию.
Результат row_raw_signed[r] идёт в аккумулятор (всегда) и на шину (если взведен флаг BUS_R)
2.3 Функция активации: два пути одного сигнала
После вычисления row_raw_signed[r] сигнал идёт по двум путям. Путь в аккумулятор — основной, путь на шину — условный.

Путь 1: В аккумулятор (основной, всегда активен)
Формула:
Особенности:
row_raw_signed[r] ∈ [-840..+840]используется как есть, с сохранением знакаСумма по всем 8 строкам:
delta_raw ∈ [-6720..+6720]Аккумулятор
thr_cur16 ∈ [-32768..+32767](signed i16)
Зачем:
Накопление активации для принятия решения о fuse (
thr_cur16 ∈ [thr_lo16..thr_hi16])Применение decay (затухание к нулю)
Поддержание внутреннего состояния тайла между тактами
💭 Физический смысл: Аккумулятор — это «память» тайла. Он хранит баланс возбуждения и торможения, даже если на шине сейчас тишина.
Путь 2: На шину VSB (условный, только при BUS_R в WRITE phase)
Формула:
Разбор:
Шаг | Что делает | Зачем |
|---|---|---|
max(..., 0) | Отсекает отрицательные суммы | Если торможение победило → на шине тишина (0) |
+ 7 | Сдвиг для округления | (x + 7) / 8 = округление вверх перед целочисленным делением |
/ 8 | Нормализация диапазона | [-840..+840] → [0..105] → clamp15 → [0..15] |
clamp15 | Жёсткое ограничение 0..15 | Защита от переполнения, совместимость с Level16 |
Примеры:
row_raw_signed[r] = +500 → max(500, 0) = 500 → (500 + 7) / 8 = 63.375 → 63 (целочисленное) → clamp15(63) = 15 ← насыщение row_raw_signed[r] = +50 → max(50, 0) = 50 → (50 + 7) / 8 = 7.125 → 7 → clamp15(7) = 7 ← нормальное значение row_raw_signed[r] = -100 → max(-100, 0) = 0 → (0 + 7) / 8 = 0.875 → 0 → clamp15(0) = 0 ← полное подавление (торможение победило)
*💭 Физический смысл: На шину VSB идут только уровни энергии (0..15). Отрицательные значения не имеют смысла для передачи — «тишина» кодируется как 0.
Почему /8, а не адаптивная нормализация?
Потому что входов всегда 8. Не 1, не 64, не «сколько активно».
Это гарантирует:
Детерминизм: одна и та же конфигурация — один и тот же результат
Аппаратную простоту: >> 3 вместо деления в runtime
Предсказуемость: нет «внезапного насыщения» при изменении плотности
Если нужен другой динамический диапазон — настройте параметры тайла:
weights(mag3+sign1) — сила связейthr_lo/hi— диапазон значений аккумулятора для активацииdecay16— скорость затухания
💭 Философия: Не прячем сложность в «умную архитектуру», а даём явные рычаги управления.
2.4 Аккумулятор + Signed Decay: Память с инерцией
Состояние тайла хранится в аккумуляторе thr_cur16
Почему signed: Аккумулятор суммирует взвешенные вклады row_raw_signed[r] ∈ [-840..+840]. Отрицательные значения (торможение) должны уменьшать потенциал, не отсекаясь на нуле.
Механизм decay:
На каждом такте, если decay16 > 0, аккумулятор стремится к нулю:
if (decay16 > 0) { if (thr_tmp > 0) thr_tmp = max(thr_tmp - decay16, 0); else if (thr_tmp < 0) thr_tmp = min(thr_tmp + decay16, 0); // Zero-crossing protection: знак не меняется }
Ключевые свойства:
Нет перескока через ноль. Если
thr_cur16 = +20, аdecay16 = 30, результат будет0, а не-10. Знак потенциала инвариантен относительно decay.Применяется всегда. Decay работает даже для
lockedтайлов. Это позволяет активному пути «остыть» и разблокироваться при отсутствии подпитки.Конфигурируемый параметр.
decay16задаётся вTileParamsдля каждого тайла индивидуально.
Зачем это нужно:
Фильтрация шума: Слабые сигналы (
|delta| < decay16) не накапливаются, а аннигилируются.Ограничение окна интеграции: Сигналы суммируются только если приходят в пределах временного окна, заданного скоростью затухания.
Стабильность: Предотвращает насыщение аккумулятора при длительной активации.
Примечание: Если задача требует интеграции слабых сигналов — установите decay16 = 0 или малое значение. Архитектура не навязывает «забывание», вы управляете им через конфигурацию.
2.5 Fuse-by-Range: Пороговая логика
Тайл принимает решение о блокировке (locked) на основе текущего значения аккумулятора thr_cur16 и конфигурируемого диапазона [thr_lo16..thr_hi16]
Параметры:
thr_lo16, thr_hi16∈[-32768..+32767](signed i16)Валидация:
если thr_lo16 > thr_hi16→ ошибкаFuseRangeErrorпри bakeЕсли
thr_lo16 == thr_hi16→ фьюз отключён (тайл никогда не заблокируется)
Поведение при locked=1:
Поддержание активации потомков: пока тайл locked, его потомки в графе остаются
ACTIVEи могут вычисляться в следующем такте.Decay продолжает работать: аккумулятор затухает к нулю даже в locked-состоянии. Если
thr_cur16выходит за пределы [thr_lo16..thr_hi16], тайл разблокируется.Эстафета распространяется: locked-тайл формирует устойчивое звено в графе активации.
Ключевой принцип:locked — это не передача данных, а разрешение на вычисление для потомков. Данные приходят от Conductor через VSB_INGRESS, а не от других тайлов. Тайлы только накапливают состояние в аккумуляторах и управляют графом активации через флаги locked.
Примечание: Диапазон [
thr_lo16..thr_hi16] может находиться в любой части signed-спектра: только положительные значения, только отрицательные, или пересекать ноль. Это позволяет настраивать реакцию тайла на возбуждение, торможение или отклонение от покоя.
🧩 Итого по математике
Компонент | Диапазон | Формула |
|---|---|---|
Level16 | [0..15] | thr_cur16 — уровень энергии |
SignedWeight5 | [-7..+7] | mag3 + sign1 |
row_raw_signed | [-840..+840] | Σ(in16 × weight) на строку |
delta_raw | [-6720..+6720] | Σ row_raw_signed (8 строк) |
Аккумулятор | [-32768..+32767] | thr_cur16 += delta_raw - decay |
Fuse range | [-32768..+32767] | thr_lo16 .. thr_hi16 |
3. Архитектура железа
Раздел 2 зафиксировал математические правила вычислений. Раздел 3 описывает их аппаратную реализацию: разделение Conductor/Island, детерминированный цикл READ→WRITE, эстафетную активацию без маршрутизаторов и механизмы энергоэффективности.
Все компоненты спроектированы так, чтобы гарантировать:
Фиксированную латентность (не зависит от нагрузки)
Масштабируемость (линейный рост времени с ростом ткани)
Детерминизм (одинаковый результат при одинаковых входах)
3.1 Conductor ↔ Island

Decima-8 разделена на две плоскости: Conductor (управление) и Island (вычисления).
Conductor — внешний контроллер (CPU/FPGA/ПК):
Вызывает события
EV_FLASH,EV_BAKE,EV_RESET_DOMAINВыставляет
VSB_INGRESS[0..7]в начале READ-фазыЧитает
BUS16[0..7]иPATTERN_IDпосле WRITE-фазыЗагружает конфигурацию (веса, пороги) через SPI-like интерфейс (CFG)
Island — вычислительная ткань:
Массив тайлов (масштабируемый: 8×32 .. 32×128)
Параллельная обработка всех тайлов в каждом такте
VSB (Value Signal Bus): 8 входных линий Level16 от Conductor
BUS16: 8 выходных линий для суммирования вкладов тайлов
PATTERN_ID: выделенный канал для ID выигравшего паттерна
Интерфейсы конфигурации:
SPI/QSPI: загрузка BakeBlob — до 50 MB/s
Parallel CFG bus (FPGA): до 200 MB/s
PCIe/Ethernet (хост-контроллер): до 1 GB/s
UART: только отладка, не для runtime
💭 Принцип: Conductor не участвует в вычислениях. Он только дирижирует циклом и читает результаты. Вся динамика происходит внутри Island.
3.2 Двухфазный цикл

Вся ткань работает в жёстком ритме. Один такт состоит из четырёх фаз:
┌─────────────┬──────────────┬─────────────┬─────────────┐ │ PHASE_READ │ TURNAROUND │ PHASE_WRITE │ READOUT │ └─────────────┴──────────────┴─────────────┴─────────────┘
PHASE_READ (0..8 мкс):
Conductor выставляет
VSB_INGRESS16[0..7](Level16)Все ACTIVE-тайлы семплируют вход
Вычисление
row_raw_signed[r]для каждой строкиОбновление
thr_cur16 += delta_rawПрименение decay (затухание к нулю)
Проверка fuse:
locked_after = (thr_cur16 ∈ [thr_lo16..thr_hi16])Формирование
drive_vec[0..7]
TURNAROUND (10..12 мкс):
Conductor отпускает VSB (Hi-Z / no-drive)
Island включает драйв BUS16
Обязательный зазор — никаких гонок направлений
PHASE_WRITE (12..18 мкс):
Тайлы с
BUS_W==1и(locked self || locked_ancestor)выставляютdrive_vecна BUS16Честное суммирование:
BUS16[i] = clamp15(Σ contrib[i])Фиксация:
locked := locked_after
READOUT (18..20 мкс):
Conductor читает
BUS16[0..7]как результат тактаОпционально: AutoReset-by-Fire (сброс доменов по маске winner'а)
Детерминизм цикла:
Время выполнения каждого такта фиксировано и не зависит от:
Количества активных тайлов
Сложности паттерна
Состояния аккумуляторов
На эмуляторе (i5-3550) полный цикл занимает ~20-311 мкс в зависимости от размера ткани (см. раздел 4). На FPGA/ASIC время будет определяться тактовой частотой и глубиной конвейера.
💭 Ключевой принцип: независимо от того, активировался тайл или нет, все вычисления занимают одинаковое число тактов. Это гарантирует нулевой джиттер на уровне архитектуры.
3.3 Эстафетная активация (Router-less NoC)

В традиционных нейроморфных архитектурах тайлы обмениваются данными через сеть пакетной коммутации (Network-on-Chip). Это требует:
Маршрутизаторов между узлами
Буферов для очередей пакетов
Арбитража при коллизиях трафика
Decima-8 работает иначе:
Тайлы не передают данные друг другу. Вместо этого они формируют граф активации через флаги направлений (N/E/S/W/NE/SE/SW/NW).
Механизм:
Вычисляется как least fixed point — детерминированно, за один проход.
Эстафета в действии:
Такт N: корневой тайл активируется и становится
locked.Такт N+1: потомок видит locked_before[p]==1 и становится ACTIVE
💭 Ключевой принцип: активация распространяется за 2 такта (предок → потомок). Данные не передаются — каждый тайл читает только
VSB_INGRESSот Conductor. Граф активации — это разрешение на вычисление, не канал передачи данных.
3.4 Схлопывание ветки (Branch Collapse)
Логика:
Если предок не заблокирован (locked=0), потомки становятся неактивными:
if (ACTIVE[t] == 0) { thr_cur16 := 0 locked := 0 drive_vec := {0..0} // Тайл не вычисляется, не драйвит шину }
Эффект:
Энергия не тратится на обработку заведомо неактивных путей
Мёртвые ветви ткани «отключаются» автоматически
Ресурсы направляются только на живые пути
Пример:
Такт N:
Корневой тайл не фьюзится (thr_cur16 не попал в [lo..hi])
locked_after = 0
Такт N+1:
Потомки: ACTIVE = false (нет locked-предка)
Принудительный сброс: thr_cur16=0, locked=0
Ветка схлопнута
💭 Аналогия: Дерево сбрасывает мёртвые ветви. Если корень не даёт питания (locked=0), вся ветка засыхает (ACTIVE=0 → thr_cur16=0).
3.5 Двойной пролив (Double Strait)
Назначение: Повышение селективности при распознавании паттернов с малым расстоянием Хэмминга (например, ASCII-символы, закодированные в 32 бита на 8 струн VSB).
Проблема: При прямом детектировании похожие символы (например, «3» и «8») могут активировать одни и те же тайлы из-за перекрытия битовых масок. Это приводит к ложным срабатываниям.
Механизм:
Е��ли установлен флаг BAKE_FLAG_DOUBLE_STRAIT (bit 0 в header .d8p), ядро выполняет два внутренних пролива на один вызов EV_FLASH:
Первый пролив (Поиск):
Все тайлы вычисляют
row_raw_signed, обновляютthr_cur16.Тайлы-детекторы (первая линия) защёлкиваются (
locked=1), если попадают в диапазон [thr_lo..thr_hi].Решение не выдаётся. Выходная шина BUS16 не обновляется.
Второй пролив (Верификация):
Тот же входной аккорд обрабатывается повторно.
Защёлкнутые детекторы открывают путь тайлам-антагонистам (через граф активации).
Антагонисты верифицируют паттерн: только один антагонист (соответствующий входному символу) сохраняет аккумулятор около нуля. Остальные уходят в глубокий минус (ингибирование).
Выдача решения: только после завершения второго пролива.
Для Дирижёра:
Один вызов EV_FLASH.
Время выполнения удваивается (например, ~40 мкс вместо ~20 мкс на эмуляторе).
API не меняется: вход подаётся один раз, результат читается после завершения.
Когда использовать:
Да: Распознавание символов/цифр с малым расстоянием Хэмминга.
Да: Классификация с перекрытием классов, где важна точность.
Нет: Задачи с жёсткими требованиями к латентности (HFT, управление двигателем).
Нет: Паттерны с большим расстоянием Хэмминга (достаточно одного пролива).
В IDE: галочка «Double Strait» в настройках bake автоматически выставляет флаг в .d8p.
Примечание: Большинство личностей (ASR, моторика, простые детекторы) работают без двойного пролива. Это опциональный режим для задач, где точность классификации приоритетнее латентности.
🧩 Итого по архитектуре
Компонент | Принцип | Выгода |
|---|---|---|
Conductor ↔ Island | Разделение управления и вычислений | Чёткая дисциплина, масштабируемость |
Двухфазный цикл | READ → TURNAROUND → WRITE | Детерминизм 20 мкс, no race conditions |
Эстафетная активация | Граф, а не передача данных | 0% площади на роутеры, нулевой джиттер |
Схлопывание ветки | ACTIVE=false → сброс в 0 | Энергоэффективность, автоматическая оптимизация |
Двойной пролив | Два внутренних такта на один EV_FLASH | Селективность важнее латентности |
4. Бенчмарки: детерминизм на практике
Тестовая платформа
IDE Decima-8 — нативное приложение на C++23 (libwui, статическая сборка). Тесты на Intel Core i5-3550 (2012, 4 ядра, 3.3 GHz), одно ядро.
Результаты замеров:
Тайлов | Время цикла | Частота |
|---|---|---|
256 | ~22 мкс | 45 kHz |
512 | ~43 мкс | 23 kHz |
1024 | ~81 мкс | 12 kHz |
2048 | ~160 мкс | 6 kHz |
4096 | ~311 мкс | 3 kHz |

Масштабирование:
При удвоении количества тайлов время выполнения примерно удваивается (коэффициент 1.88–1.98). После 1024 тайлов рост ускоряется — сказываются кэш-промахи и давление на память. Это физическое ограничение CPU, а не алгоритмическое.
Важно: Для каждой конфигурации время константно и не зависит от активности сети. 100% загрузка тайлов не увеличивает задержку.
Память:
Эмулятор использует ~57 байт на тайл. Для 4096 тайлов требуется ~228 КБ — помещается в L2/L3 кэш современного CPU.
Детерминизм
Разброс времени цикла минимален (± jitter ОС). Это следствие архитектуры:
Нет динамических аллокаций в runtime
Нет ветвлений, зависящих от данных
Фиксированный цикл READ → WRITE
На FPGA/ASIC время будет определяться тактовой частотой и глубиной конвейера, а не загрузкой сети.
Применение:
Задача | Требования | Decima-8 (4096 тайлов) |
|---|---|---|
Робототехника | 1–10 ms цикл | 0.3 ms (запас 3–30×) |
HFT (аналитика) | < 1 ms | 0.3 ms |
Обработка аудио (block processing) | 1-10 ms блок | 0.3 ms (запас 3-30×) |
Примечание: Эмулятор Decima-8 (4096 тайлов, ~311 мкс) подходит для предиктивной аналитики в торговом цикле и аудио-DSP при блочной обработке (64+ сэмплов). Задачи с субмиллисекундными требованиями — прямое исполнение ордеров (tick-to-trade < 1 мкс) или sample-by-sample обработка (22.7 мкс @44.1 kHz) — требуют FPGA/ASIC или меньшей конфигурации ткани.
🧩 Итого по бенчмаркам
Метрика | Значение |
|---|---|
Минимальная латентность | 22 мкс (256 тайлов) |
Максимальный размер | 4096 тайлов за 311 мкс |
Масштабирование | Линейное (O(n)) |
Джиттер | Отсутствует (детерминизм) |
Память | Компактная (L3-кэш) |
Decima-8 — это не «быстро в среднем». Это «предсказуемо всегда».
5. Программная экосистема
Decima-8 — это не только железо. Это набор инструментов для создания, тестирования и запуска нейроморфных личностей.
5.1 Формат D8P
Статус: Открытая спецификация (MIT)
Файл .d8p (Decima 8 Personality) — это контейнер для «личности» сварма. Внутри нет кода. Только данные.
Структура (TLV — Type-Length-Value) с CRC32 контрольной суммой:

Содержимое bake файла
Настройки личности (размер сварма, двойной пролив)
Веса тайлов (SignedWeight5)
Пороги активации (thr_lo/hi, decay16)
Направления активации (флаги N/E/S/W)
Маршрутизация (BUS_R/W, domain_id)
Почему TLV:
Новые типы блоков не ломают старые парсеры
Легко проверить целостность файла
Не нужно грузить весь файл в память для валидации
libd8p — открытая библиотека (C++, MIT) для работы с форматом: парсинг, валидация, генерация.
💭 Любой может написать свой генератор .d8p: на Python (PyTorch/NumPy), Rust, C++ или даже вручную в hex-редакторе.
5.2 IDE
Статус: Закрытый бинарник, бесплатное использование
Характеристики:
Статическая сборка, без зависимостей
Windows (MSVC 2026) / Linux (Clang latest)
Работает offline, интернет не требуется

Основные компоненты:
Компонент | Описание |
|---|---|
Панель сварма | Визуальное представление ткани личности (heatmap активации) |
Параметры тайла | Веса, thr_lo/hi, decay, routing |
16-аккордовый аккордеон | Визуализатор VSB (8 lanes × 16 аккордов истории) |
Магнитофон и сеть | Загрузка/сохранение VBS лент, приём/отправка VSB по UDP |
Панель управления | Flash: прогон такта машины, Reset: сброс доменов, Autobake |
Панель выдачи решений | Показывает PATTERN_ID, BUS16, FLAGS |
Визуальная пропечка: мышкой настраиваете пороги, веса и связи, наблюдая за реакцией сварма в реальном времени.
5.3 Эмулятор ядра
Статус: OPEN SOURCE (MIT)
Эмулятор — «источник правды» для верификации математики.
Назначение:
Тестирование личностей перед загрузкой в FPGA/ASIC
Интеграция в CI/CD, автотесты
Изучение архитектуры «изнутри»
Функционал:
Бит-в-бит совместимость с железом (эмулятор → FPGA → ASIC)
API:
EV_FLASH,EV_BAKE,EV_RESET_DOMAINЧтение FLAGS, BUS16, статистики
C-API для интеграции с Python/Rust/C++
Пример использования (Python):
import d8p swarm = d8p.load("personality.d8p") for i in range(1000): swarm.ev_flash(vsb_ingress=[7,12,3,10,4,14,0,9]) readout = swarm.read_bus() print(f"Tick {i}: BUS16 = {readout}")
5.4 Store (маркетплейс личностей)
Статус: Курируемая платформа
Store — место для публикации и обмена готовыми личностями.
Принцип работы:
Генерация .d8p — любым способом (IDE, скрипт, нейросеть)
Подпись PKI-ключом — гарантия авторства и целостности
Публикация в Store — валидация спецификации + проверка подписи
Использование сообществом — скачивание, интеграция, отзывы, монетизация
Требования к публикации:
Валидный .d8p (соответствие спецификации)
PKI-подпись (получается при подписке Tile/Cluster/Council)
Минимальный фронтенд (код Дирижёра для запуска)
Документация (описание входов/выходов)
💭 Store не проверяет код Дирижёра (это ответственность автора), но проверяет
.d8pна соответствие спецификации и валидность подписи.
Почему PKI-подпись?
Это не paywall, а цепочка доверия:
Гарантия, что личность создана верифицированным автором
Защита от подмены файлов
Репутационная система (отзывы, рейтинг авторов)
Уже опубликованные личности не удаляются при истечении подписки.
🧩 Итого по экосистеме
Компонент | Статус | Назначение |
|---|---|---|
Формат .d8p | ✅ OPEN | Контейнер для личностей |
libd8p | ✅ OPEN | Парсинг, валидация, генерация |
Эмулятор | ✅ OPEN | Тестирование, верификация |
IDE | 🔒 CLOSED (Free) | Визуальная настройка |
Store | 🔒 CLOSED (Curated) | Публикация и обмен |
Открытое ядро, закрытый кокпит. Вы можете создать .d8p любым способом, но для публикации в Store нужна валидная PKI-подпись.
6. Безопасность
Decima-8 не делает систему «неуязвимой». Она делает риски предсказуемыми и локализованными.
Архитектурная модель рисков
Компонент | Риск | Защита |
|---|---|---|
d8p | ❌ Нет | Данные (TLV), нет кода, нет указателей |
Эмулятор (ядро) | ❌ Нет | Детерминизм, bounded arithmetic, saturate |
Фронтенд личности | ⚠️ Да | Sandbox, лимиты, репутация автора |
Дирижёр (ваш код) | ⚠️ Да | Классические практики безопасности |
.d8p — это данные, не программа. Внутри нет исполняемого кода, нет eval, нет рекурсии. Файл не может выполнить RCE, переполнить стек или выделить память.
Эмулятор — детерминированная машина. Фиксированные такты, Level16, clamp-арифметика. «Плохих» данных не существует — есть только значения 0..15. Переполнение невозможно по конструкции.
Фронтенд и Дирижёр — ваша ответственность. Код, который преобразует внешние данные в Level16 и читает BUS16, работает с сетью, FS, JSON. Здесь применимы классические уязвимости (парсинг, буферы, сеть).
Принцип: Ядро — чисто. Периметр — ваш.
Валидация топологии
Помимо CRC32 и PKI-подписи, эмулятор выполняет статический анализ графа перед загрузкой:
Проверка на циклы с положительной обратной связью (positive feedback loop)
Ограничение на максимальную степень связности тайла
Лимит на суммарный коэффициент усиления в компоненте
Если граф не проходит валидацию — загрузка отклоняется с ошибкой TopologyValidationError.
Это не «антивирус». Это проверка физической состоятельности личности.
Store: требования к публикации
При публикации личности в Store автор предоставляет:
Компонент | Статус | Проверка |
|---|---|---|
.d8p файл | Обязательно | Валидация спецификации + PKI-подпись |
Фронтенд (минимальный) | Обязательно | Не проверяется (код пользователя) |
Документация | Обязательно | Описание 8 струн, интерпретация выходов |
Пример запуска | Обязательно | Скрипт / инструкция |
Почему не проверяем фронтенд:
Технически невозможно (код на Python/Rust/Go/C++)
Юридически сложно (не хотим нести ответственность)
Философски неверно (Decima-8 — открытый стандарт)
Вместо проверки:
Требование публикации (нет фронта = нет публикации)
Предупреждение пользователей («запускайте в sandbox»)
Рейтинговая система (отзывы, репутация авторов)
Рекомендации
При загрузке личности из Store:
Запускайте в sandbox (Docker, VM, seccomp, AppArmor)
Ограничьте доступ к сети (если не требуется)
Установите лимиты памяти и CPU (cgroups, ulimit)
Проверьте репутацию автора (рейтинг, отзывы)
При публикации:
Предоставьте минимальный рабочий фронтенд
Документируйте входы/выходы (8 струн, BUS16, PATTERN_ID)
Предупредите о рисках (сеть, FS, внешние API)
Что мы НЕ гарантируем
Не гарантируем | Почему |
|---|---|
Бесбаговый фронтенд | Код автора, вы отвечаете |
Стабильность Дирижёра | Ваш код, вы отвечаете |
.d8p описывает «хорошую» личность | Проверяем физику, не семантику |
PKI-ключ не скомпрометирован | Храните ключи безопасно |
Итог: Decima-8 локализует уязвимости. Атаковать ядро невозможно (нет кода, детерминизм). Атаковать периметр возможно — но это классические векторы, против которых есть классические защиты.
💭 Архитектурная честность: вы точно знаете, где риск, а где — нет.
7. Модель распространения
Decima-8 развивается как проект с открытой спецификацией и курируемым маркетплейсом личностей. Ниже — как устроено распространение и поддержка.
7.1 Открытые и закрытые компоненты
Компонент | Статус | Назначение |
|---|---|---|
Спеки + Эмулятор | ✅ OPEN | Верификация, интеграции, форки |
Формат .d8p | ✅ OPEN | Контейнер для личностей (TLV) |
libd8p (парсер) | ✅ OPEN | Валидация, генерация, подпись |
IDE | 🔒 CLOSED (Free) | Референсный инструмент для настройки |
Store | 🔒 CLOSED (Curated) | Публикация и обмен личностями |
💭 Принцип: спецификация открыта — любой может написать свой генератор .d8p, эмулятор или инструмент. Store — курируемая площадка с проверкой подписей и соответствия спецификации.
7.2 Публикация в Store
Для публикации личности в Store требуется PKI-подпись файла .d8p.
Зачем:
Гарантия авторства (ключ привязан к аккаунту)
Целостность файла (подпись проверяется при загрузке)
Репутационная система (отзывы к автору, не к анонимному файлу)
Как получить ключ:
Подписка на тарифы Tile/Cluster/Council (автоматическая выдача)
Или свой PKI-ключ от доверенного центра (Corporate CA, etc.)
Важно: уже опубликованные личности не удаляются при истечении подписки. Подписка нужна только для загрузки новых или обновления существующих.
Альтернативная подпись: свой PKI-ключ
Store принимает ключи от любых доверенных центров, не только наши.
Процесс:
Получите ключ у вашего CA (корпоративный, государственный, etc.)
Подпишите .d8p:
openssl dgst -sha256 -sign decima_key.pem \ -out personality.d8p.sig \ personality.d8p
Загрузите в Store: система проверит цепочку доверия до Root CA
Нюансы:
Для публичного Store проще использовать наш PKI (Tile/Cluster/Council) — он доверен всем пользователям по умолчанию
Свой ключ требует, чтобы пользователи импортировали ваш Root CA
Корпоративное использование: внутренний Store + свой CA
7.3 Планы развития
Ближайшие 6 месяцев:
Дальнейшее развитие софта: libd8p, core, IDE, запуск Store (первые личности), устойчивый Nomos
6–24 месяца:
FPGA-прототип (верификация на железе), Выпуск первых полезных личностей (при поддержке сообщества)
2–4 года:
B2B-пилоты (робототехника, предиктивная аналитика), Сертифицированные партнёры (FPGA/ASIC)
4+ лет:
Лицензирование IP для производителей чипов, Роялти с продаж чипа 0.1$
💭 Это ориентиры. Сроки могут сократиться в зависимости от ресурсов.и сообщества
🧩 Итого
Аспект | Реализация |
|---|---|
Спецификация | Открыта, форки разрешены |
Store | Курируемый, с PKI-подписями |
Монетизация | Подписка на PKI-ключи (Tile/Cluster/Council), роялти с ASIC |
Сообщество | Observer/Seed/Gardener — пользователи; Tile/Cluster/Council — авторы |
Долгосрочность | Проект рассчитан на 10+ лет, не exit через 3 года |
💭 Decima-8 — инфраструктурный проект. Не подписка на софт, а экосистема.
8. Эволюция архитектуры
Decima-8 v0.2 — это минимальная жизнеспособная архитектура. Не догма, а стартовая точка, которая доказывает работоспособность принципов.
Что зафиксировано навсегда (принципы):
Принцип | Почему это фундамент |
|---|---|
Двухфазный цикл READ → WRITE | Детерминизм, отсутствие race conditions |
Эстафетная активация (граф, а не пакеты) | 0% площади на роутеры, нулевой джиттер |
LevelN (многобитная активация) | Кодирование «силы намерения» в одном такте |
Signed Decay (затухание к нулю) | Стабильность, естественное «забывание» |
Fuse-by-Range (пороговая логика) | Гибкие паттерны, резонансные пути |
Что может масштабироваться (параметры):
Параметр | v0.2 (сейчас) | v1.0+ (будущее) | Зачем |
|---|---|---|---|
Level | 16 (0..15) | 32 / 64 | Тонкая градация активации, меньше квантования |
Вес | SignedWeight5 [-7..+7] | SignedWeight7 [-31..+31] | Большая выразительность связей |
Lanes | 8 | 16 / 32 | Пропускная способность, параллелизм |
Ткань | 8×32 .. 32×128 | 256×1024 / кластеры | Сложные иерархические паттерны |
Домены | 16 | 32 / 64 | Тонкое управление сбросом и приоритетами |
Cycle time | 22-311 мкс (эмулятор) | <1 мкс (ASIC) | Hard real-time для экстремальных задач |
Обратная совместимость:
Все изменения совместимы на уровне принципов:
Двухфазный цикл остаётся
Эстафетная активация — основа
Fuse-by-range, decay-to-zero — фундамент
Открытая спецификация позволяет:
Экспериментировать: форкните эмулятор, поменяйте
Level16→Level32, посмотрите, что изменится в поведении роя.Предлагать расширения: если ваше расширение доказывает преимущество — оно может войти в v1.0 через Spec RFC.
Строить специализированные варианты:
Decima-8-Lite: для IoT (меньше тайлов, меньше весов, низкое энергопотребление)Decima-8-Pro: для HFT (больше lanes, меньше цикл, приоритет детерминизма)Decima-8-Research: для науки (расширенные метрики, отладка, логирование)
💭 Философия: мы фиксируем принципы, а не параметры. Level16 и SignedWeight5 — это не догма, а стартовая точка.
9. Заключение
Decima-8 — это архитектура, которая кодирует уровень активации (Level16) в одном такте, использует эстафетную активацию вместо пакетной маршрутизации и гарантирует детерминированное время выполнения.
Ключевые свойства:
Level16: 4 бита на активацию, один такт на значение
SignedWeight5: знаковые веса [-7..+7], латеральное торможение на аппаратном уровне
Эстафетная активация: граф зависимостей вместо роутеров, 0% площади на маршрутизацию
Двухфазный цикл: READ → WRITE, фиксированная латентность, нулевой джиттер
Открытая спецификация: спецификация, эмулятор, формат .d8p — под MIT/Apache 2.0
Мы не обещаем "AGI", и вообще ко всей ко��цепции стохастического "ИИ" имеем весьма прохладное отношение.
Мы предоставляем детерминированную вычислительную ткань для задач, где важны предсказуемость, эффективность и выразительность паттернов.
Decima-8 — это способ построить вычисления на уровнях энергии, резонансе и эстафетной активации, а также модель создания устойчивого открытого сообщества где вклад каждого служит целям подавления хаоса и торжества детерменизма.
💭 Если вам близок подход от физики, а не от маркетинга — присоединяйтесь!
FAQ
Q: Почему не float32/float16?
A: Level16 (0..15) — это не «неточный float», а семантическая единица: уровень энергии. Для нейроморфных паттернов 16 градаций достаточно, а фиксированный диапазон даёт детерминизм и аппаратную эффективность.
Q: Как обучать?
A: Вручную через IDE: настраиваете thr_lo/hi, decay, routing, наблюдая за реакцией сварма. Это не ML-обучение (градиентный спуск), а скульптура личности — вы задаёте поведение через параметры. [Скачать IDE]
Q: Можно ли использовать циклы в графе активации?
A: Да. Детерминизм сохраняется благодаря locked_before — снимку состояния в начале READ-фазы.
Q: Что если два тайла в одном домене фьюзятся одновременно?
A: Winner выбирается по priority8, при равенстве — по минимальному tile_id. Флаг COLLIDE сигнализирует о коллизии.
Q: Что такое «двойной пролив» и когда его использовать?
A: Режим, при котором ядро выполняет два внутренних такта на один EV_FLASH для повышения селективности. Используется при распознавании паттернов с малым расстоянием Хэмминга (например, ASCII-символы в VSB). В IDE включается галочкой «Double Strait», в .d8p выставляется BAKE_FLAG_DOUBLE_STRAIT. Цена: ~40 мкс вместо ~20 мкс.
Q: Почему открытая спецификация?
A: Чтобы любой мог верифицировать математику, написать свой генератор .d8p или форкнуть эмулятор. Decima-8 — это стандарт, а не закрытый продукт.
Q: А если я хочу использовать .d8p локально, без Store?
A: Пожалуйста. Подпись не требуется для локального использования. Эмулятор принимает любые .d8p после валидации CRC32. PKI — только для публикации в Store.
Q: Можно ли подписать .d8p своим PKI-ключом?
A: Да. Store принимает ключи от любых доверенных центров (Corporate CA, государственная УЦ). Для публичного Store проще использовать наш PKI (Tile/Cluster/Council) — он доверен пользователям по умолчанию.
Ссылки
Что | Зачем | Где |
Спецификация машины | Исчерпывающий контракт для бинарной совместимости Emulator - FPGA - ASIC | |
Исходный код референсного эмулятора, Verilog спецификации | Интеграции в конкретные ПАК, Верификация | |
IDE для визуальной выпечки | Ручное и полуавтоматическое пропекание нервной ткани личности, визуальный контроль и оперативное корректирование личности изготовленной любым путём | |
Стор личностей | Площадка для публикации личностей пользователей | https://rulerom.store |
PKI | Верификация исполняемых файлов, инфраструктура управления подписями личностей | |
Boosty | Сообщество. Реализовать такой проект без полноценного сообщества невозможно. |
Далее будет опубликована серия статей объясняющих ключевые концепции архитектуры «на пальцах».
Оставайтесь в сварме!
