3.5 KiB
3.5 KiB
Phase 3 D3: Alloc Gate Specialization(Mixed “LEGACY-only” 最短化)設計メモ
NOTE (2025-12-13): この設計メモは 後続の Phase 4 D3 により置き換えられました。
最新の設計・ENV・実装指示はdocs/analysis/PHASE4_D3_ALLOC_GATE_SPECIALIZATION_1_DESIGN.mdを参照してください。
目的
Mixed 本線(MIXED_TINYV3_C7_SAFE)では、
構成が固定されているため「毎回の gate 判定」をさらに削れる余地がある。
この D3 は tiny_alloc_gate_fast() の分岐を “Mixed に特化した形” にして、
alloc 入口の命令数と分岐を 1–2% 詰めることを狙う。
前提(Mixed 本線の固定事項)
HAKMEM_MID_V3_ENABLED=0(C6 を MID に送らない)HAKMEM_TINY_STATIC_ROUTE=1(policy_snapshot bypass)HAKMEM_TINY_ALLOC_ROUTE_SHAPE=1(alloc dispatch 形最適化)- Tiny front v3 + LUT + fast classify は ON(既定)
非目標
- ルーティングポリシーの意味変更(ULTRA/MID/V7/LEGACY の優先順位は変えない)
- サイズ→クラス変換の SSOT を壊す
- allocator のアルゴリズム変更(形の削減のみ)
Box Theory(箱割り)
L0: Env(戻せる)
- ENV gate:
HAKMEM_ALLOC_GATE_LEGACY_ONLY=0/1(default: 0) - 目的: Mixed 本線だけで A/B → 勝てなければ即 OFF
L1: AllocGateLegacyOnlyBox(境界: alloc gate 入口 1箇所)
責務:
tiny_alloc_gate_fast()のうち “Mixed 本線で常に同じ結果になる分岐” を削って、malloc_tiny_fast_for_class()への最短経路を作る。
安全フェンス(必須):
- 初回に 1 回だけ “本当に LEGACY-only か” を確認してから有効化する。
- 例:
small_policy_v7_init_from_env(&tmp)で route_kind が LEGACY 以外を含むなら自動 disable - Learner 有効時は自動 disable(route が動的に変わる)
- 例:
実装指示(小パッチ)
Patch D3-1: ENV gate + “safe enable” 判定
- 新規:
core/box/alloc_gate_legacy_only_box.h/.calloc_gate_legacy_only_enabled_fast()(hot path 用: boolean)- 初期化境界 1 箇所:
small_policy_v7_init_from_env(&tmp)で route_kind を検査tmp.route_kind[i] != SMALL_ROUTE_LEGACYが存在したら disable- learner ON のときも disable
- A/B で ON のときだけ有効になるようにする
Patch D3-2: tiny_alloc_gate_fast() 統合(差し替え 1 箇所)
core/box/tiny_alloc_gate_box.hTinyRoutePolicyの分岐を “Mixed では常に同じ” に寄せる(ただし fence を守る)- 形の例(概略):
if (alloc_gate_legacy_only_enabled_fast()) { return malloc_tiny_fast_for_class(size, class_idx); }- それ以外は現行の gate ロジックを維持
注意:
tiny_alloc_gate_fastは「Tiny を使うか/Pool へ逃がすか」の境界なので、 “gate の意味” を変えない。削れるのは 分岐の形だけ。
A/B(GO/NO-GO)
Mixed 10-run(推奨: 20M iters):
- baseline:
HAKMEM_ALLOC_GATE_LEGACY_ONLY=0 - opt:
HAKMEM_ALLOC_GATE_LEGACY_ONLY=1
判定(10-run mean):
- GO: +1.0% 以上
- NO-GO: -1.0% 以下
- ±1.0%: NEUTRAL(研究箱維持、default OFF)
リスク
- 低〜中
- Mixed 本線に限定すれば低い
- “safe enable 判定” を入れないと、ENV 組み合わせで破綻するリスクが上がる
Rollback
HAKMEM_ALLOC_GATE_LEGACY_ONLY=0(即 OFF)- 箱は独立させ、既存 gate を汚さない(境界 1 箇所差し替え)