第118章 大杀器(2 / 2)
这是最贴近金属的领域。
最终生成的二进位指令序列,必须能够逆向回连到上层语义。
无论是高效率的条件传送ov、向量混合blend,还是用於打包求最小值的psd,甚至是几条为了避开流水线冒险而看似绕远路的逻辑指令组合,都必须由系统自动给出严格的逻辑等价证明。
裴礪在办公室里那个关於规模化的刁钻问题,直到这一年,才在废土的黄沙中,得到了江临用代码堆砌出的工程回答。
零一验证器从来都不是终点,它不过是一条通向微內核工业化的坚固证明链的第一环。
第十九年,江临迎来了另一个巨大的挑战。
代价评估后端重写。
旧版本的代价模型天真得可笑,它只会根据静態的指令周期给出一个冰冷的排名。
第一名,理论上看起来最快。
第二名,看起来慢一点。
但在真实的冯诺依曼架构机器上,硅片不是乾净的数学纸面,它充满了物理世界的狂躁与不確定。
l1/l2缓存命中率会隨著上下文波动。
作业系统的线程调度会隨时引发中断。
cpu的睿频机制会因为热量的累积而动態改变工作频率。
不同的处理批量大小会彻底改变流水线的吞吐瓶颈。
同样一段看似完美的指令,在机器a上巧妙地避开了执行埠的拥堵,到了机器b上,可能正好一头撞进分支预测器失误的惩罚陷阱中。
所以,江临彻底推翻了旧后端。
新后端不再输出苍白无力的单点分数。
对於每一个候选的微內核,它输出的是三组立体的评估。
理论代价:基於微架构模型的纯静態计算。
实测分布:候选微內核必须在多种缓存冷热状態、多种批量长度、多种代码预热方式、甚至多种强制锁频条件下,进行数万次的重复测试,绘製出执行时间的概率密度分布图。
鲁棒性评分:衡量代码在恶劣硬体噪声下的抗干扰能力。
最终被ps-kernel保留下来的,绝对不是某一次特定benchark跑分中侥倖跑出的冠军。
而是在排除了所有硬体环境噪声窗口之后,其性能底线依然能够稳定领先其他方案的铁血候选者。
第二十四年,工作站风扇发出一阵持续的嘶吼,ps-kernel终於生成了第一批真正意义上的证据卡。
每一张证据卡,都对应著一个经过千锤百炼的微內核包。
这不再是一段冷冰冰的代码,而是一段代码无可辩驳的履歷档案。
【kernel_id:dian9_zen3_opt】
【abstract_seantics:strictweak,nan统一下沉,+0/-0按声明规则归一】
【source_ir_proof:无ub溢出,ir同构验证通过】
【bary_equivalence:在声明语义域內,st反例搜索unsat】
【isa:x86-64,avx2扩展】
【icroarchitecture_assuption:l1d热缓存路径;另附冷缓存降级曲线】
【st_odel:埠竞爭延时分析报告】
【benchark_distribution:延迟分布、p50/p95/p99与长尾样本图】
【robtness_sre:99.9%样本窗口內性能下界稳定性】
【fallback_path:当avx失效时的標量降级回退路径】
第三十一年,江临將整个庞大的工具链推进到了v0.2版本。
它已经能够极其稳定地处理一批远远跨越了sort5边界的小內核:sort8、rank8、dian9,以及在特定內存对齐受限场景下的-k问题。
这些东西在动輒数百万行的现代软体工程中依然不算庞大,但它们足够跨越办公室那场演示的边界。
它向世界证明了,ps-kernel绝不是只能在sort5这种玩具问题上展示漂亮数学结构的盆景。
它已经具备了沿著语义等价类搜索,三层逻辑证明链和多维度鲁棒性代价模型,向著真正自动化生產工业级微內核工具进军的潜力。
废土第三十五年,江临画下了第二张图的定稿。
標题:【ps-kernelv0.2:语义等价类搜索—证明携带链—鲁棒代价后端】
这將会是一个大杀器。