原生 AP 多核任务阶段记录(2026-10-17)
整体目标仍未通过。本轮实现的是实际 AP 核心上的原生内核任务调度和大面积像素复制;Microsoft NativeAOT 的托管线程仍由 BSP 调度。原生 NVIDIA 显卡驱动、GPU 光栅化、实体 4K/240 Hz 与完整 Windows 对照仍未完成。ManagedSmpVerified=false、WindowsFluidityParityPassed=false、Physical240HzVerified=false、DeliveryComplete=false、FullReleaseQualified=false。
本轮没有调用实体磁盘接口、管理员提升或写盘工具,没有生成新的发行 ZIP。既有 U 盘工作区和候选包保持原样。私有测试镜像、虚拟 USB 与文件系统测试卷均是工作树 build 内的普通文件。
实际改动
Native/native.c 增加 Limine MP 请求,entry.S 提供独立 AP 入口。C# Multiprocessor 校验完整拓扑后逐个释放 AP;每核安装独立 GDT/TSS、异常栈和 IRQ 栈,核对真实 APIC 身份。AP 启用相同的 x87/SSE、NX、PAT 与地址空间约定,使用 HLT 等待定向 IPI,不持续轮询耗尽核心。
任务描述符按 128 字节分隔,使用 release/acquire 代次发布及完成确认;不同核心处理不相交的行。每个 AP 在确认完成前排空本核 WC 写缓冲。调用方必须一直固定或保留源/目标,直到全部任务 join;超时或 AP 异常直接失败,不能返回后释放仍被访问的内存。AP 每次任务前重载 CR3,任务外不访问动态映射;分配器和页表修改仍只在 BSP 上执行。这不等于通用 TLB shootdown 或完整 SMP 内存管理。
桌面通过 NativeFramebufferPresenter 固定实际像素 span,进入内核确认输出编号、范围、通道和不重叠条件,再分派 AP 复制。裁剪、pitch padding、RGB/BGR 与保留字节语义保留。小范围损伤沿用 SSE 绘制路径。SSE2 复制不使用尚未保存的 AVX/YMM 状态。
启动动画前,在仍为黑色的实际固件 framebuffer 上比较 1/2/4/8 核。每项预热两次、测量五次;多核五次最大耗时相对单核至少改善 10% 才启用。根据全屏大小设置最小工作量,避免小任务为唤醒核心付出额外耗时。这是 CPU 复制微基准,不是统一标准的 11 项 Windows 桌面验收。
启动回执、启动器及性能工具区分实际原生执行核数和托管调度核数;新内核必须提供 AP 身份、同时 rendezvous 和像素检查证据。计划启动的虚拟 CPU 数不能记为实际执行。现有 NativeAOT PAL 的处理器数量仍为 1,不能在 GC/线程协议完成前直接改为 32。
已取得的证据
基于同一最终内核源码,1、2、32 vCPU 的独立裸机启动通过。32 核证明中,31 个 AP 同时等待 BSP 释放屏障,随后完成非对齐地址、RGB/BGR、步长及外部保护字节的 32 组检查;这不依赖 BSP 上的线程轮转。
独立 NativeAOT 诊断内核的 1/32 核 GC、CWT、弱引用、终结器、Monitor、TLS、异常和线程 join 通过。新增 16 次 4K 固定缓冲区复制,逐字节核对像素与 padding,拒绝四种非法范围。32 核这轮有 33 次压缩 GC 发生在源缓冲区仍固定、原生复制调用未返回的期间;无缓冲区损坏。GC 仍在 BSP 上运行,这不是多核托管 GC 的证明。
最终 Desktop 内核 SHA256:44710bcb5d18dfd4ecd244c8641e37cc5ca92d7c904dd693f1d9b7f8f24ff3ce。私有单系统镜像 SHA256:e27d3f8c7d5242a3d0d6ac72a55dd2c36aea240ac098f0c32cb09061ceb461a9。同镜像 WHPX 3840×2160、150% 的实际 Monaco 输入、绿色注释字形、保存和回读通过。启动首帧记录 54 次原生并行复制:32 次自检、21 次校准以及实际桌面提交。
同一 Desktop 内核另通过冻结脚本后的 32 vCPU、4K/150% 编辑保存,回执明确验证实际 32 个核心在线;Console 独立入口也重新编译并完成应用与私有存储回归。两版继续分别作为单系统测试,没有双启动菜单。
该次 4K/WHPX framebuffer 复制校准:
| 核数 | 五次中位数 | 五次最大值 |
|---|---|---|
| 1 | 0.828931 ms | 0.885048 ms |
| 2 | 0.804279 ms | 0.822016 ms |
| 4 | 0.650377 ms | 0.664607 ms |
| 8 | 0.506360 ms | 0.645765 ms |
中位数改善约 38.9%。环境是 QEMU 虚拟 framebuffer;不能外推为 RTX 5090 原生性能或实体刷新率。
30 秒 4K/WHPX 指针软件采样有效,约 239.976 次新位置/秒;7201 个间隔的 P95 为 4.965966 ms、P99 为 5.069775 ms,最大 8.101192 ms。SoftwareCadenceGoalMet=false;复制更快没有消除 BSP 调度/帧节拍的全部抖动,更没有证明物理 240 Hz。
宿主 19 组、1751 项检查及 28 项 Bing 证据保护通过,其中新增的 12 项只验证 AP 证据读取器的正负样例,不能替代上述来宾执行。完整 Desktop、多屏与存储回归的最终状态和原始引用见随附 JSON;所有未完成项保持未通过。
最终新内核已通过完整 Desktop 的 Bing 两次搜索、图片及全页滚动、Monaco、文档、终端、多屏三冷启动和私有 USB/五卷回读;Console 独立镜像也通过相应完整回归。最终宿主回执 build/CSharp/HostTests-1792232729955/Result.json,Desktop build/IndependentKernel/Proof-1792232557225766700/Result.json,Console build/IndependentKernel/Proof-1792232714669256500/Result.json。943 个宿主/来宾合并绑定输入与工作树字节一致;两版 Windows PowerShell 5.1 的 32 vCPU 启动计划通过,但计划没有启动 VM,也没有写实体介质。
剩余实现与验收
完整托管 SMP 需要替换 Threads.cs 的全局 current/scheduling 状态,引入每核运行队列及调度同步;页表/物理分配器需要跨核锁和 TLB shootdown;NativeAOT 的 GC 停顿、运行中线程 hijack、写缓冲广播及运行时锁必须同步扩展。当前 AP 任务刻意不进入这些尚未完成的协议。
RTX 5090 驱动还缺 GSP 固件加载、RM 资源管理、GPU MMU、真实通道与 fence、光栅化和 NVKMS 显示链路。已有 NVIDIA 命令编码和只读 PCI/FSP 查询不构成这些能力。官方 615.78.08 README 要求配套版本的 GSP 固件和驱动组件;NVKMS 接口 涉及设备、连接器、模式、surface、同步与提交,不能只写一个刷新率变量代替。
AP 启动依据 Limine MP 协议;使用中的 12.9.3 AP trampoline 在缺少 MONITOR/MWAIT 时通过 PAUSE 等待入口发布。32 核初次定时器自检失败后,改为先完成 AP 接管并进入 HLT,再进行 BSP 调度自检;保留原失败,未放宽原判据。
实体输出依然来自固件 framebuffer。Windows 当前模式元数据报告 RTX 5090、3840×2160、240 Hz;这不能证明 XFESystem 的物理模式。仍需完成显卡模式设置、链路训练、必要的 DSC、VSync/翻页,以及同机同线缆同缩放的实体采集。统一标准继续使用 DesktopFluidityStandard.md / Tools/DesktopFluidity/Standard.json:11 场景、5 秒预热、30 秒采样、各 5 轮及帧间隔/输入/停顿/完整内容比较,缺失实体证据不通过。
保留的失败
最初 AP 导出符号未加入 Zero ABI 恢复名单导致链接失败;已修复并保留原日志。首份引导回执沿用旧工具的 ExecutingCpus=1 默认值,已作为过期元数据排除,后续回执按真实串口证据生成。首轮固定缓冲区诊断在报告阶段调用未接入的 System.Console,以 ENOSYS 中止;改用现有原生日志后重跑。32 核旧启动顺序的调度自检失败和宿主剩余空间不足的预检拒绝均保留。旧私有测试镜像只进行了 NTFS 无损压缩并核对 SHA256,没有删除证据或降低空间/性能验收门槛。
新增 32 核验收参数后,旧工具快照的哈希校验正确拒绝旧回执;随后冻结所有工具重跑。多屏首帧先于异步诊断状态输出的竞态已修正为在原有 35 秒内等待完整行,完整像素判据保留。一轮实际搜索中,Bing 图片 CDN 对可见 JPEG 资源返回 HTTP 503,原失败及原生 HTTPS 响应保留;Windows 随后以相同 UA 读取同一 URL 得到 200/image/jpeg/2866 字节。未屏蔽该图片,未接受空解码,重新完整复测。
另一轮私有存储复测第二次启动时,原生 XFE_USB_STORAGE_READY 串口行被运行时初始化日志插入,导致严格工具拒绝;保留该失败并原样重跑,未把交错文本当作完整标记,也未据此声称存储丢失或通过。最终只对这条短的启动就绪记录加 IRQ 保护,轮询仍有界,未在每次 I/O 或绘制热路径增加日志;其他原生串口记录尚未全面原子化。
主目录 EfiEntry.cs 原有 CRLF 差异保持未暂存,原始 SHA256 仍为 9536c5475483ff61441b673ba6f7efa3beb579e3a48d3bba9dc05fc0dfb084b8。