第118章 大杀器(1 / 4)

投票推荐 加入书签 留言反馈

  第二张图,是mps-kernelv0.2的工具链图。
  关於软体与底层微內核的博弈,是从废土第五年正式打响的。
  江临没有再碰sort5。
  那个问题已经在陈启明的办公室里演示过。
  办公室那半个小时的惊艷,解决的仅仅是学术界最基础的问题:“这条路在理论上能不能走通?”
  第九次废土要解决的,是:“这套系统,到底能不能放大?”
  现实总是毫不留情。
  第一版试图规模化的搜索器,在第六年迎来了轰轰烈烈的全面崩溃。
  系统崩溃的原因,並非零一验证器证明速度太慢,也不是他建立的硬体代价模型不够精確。
  而是候选指令还没有来得及排队进入验证器,前端的生成器就已经因为组合爆炸,將状態空间膨胀到了一个工作站內存根本无法承受的黑洞级別。
  sort8还能靠著压榨交换文件的i/o勉强跑完。
  可一旦触及median9,状態树就开始扭曲变形。
  等他试著展开一个哪怕附加了限制条件的top-k小內核时,生成器吐出的垃圾候选代码在几个小时內把几块tb级企业硬碟彻底写满,交换分区被打穿,日誌系统开始报错,最终进程被oom killer杀掉,工作站在持续i/o雪崩中卡死。
  这次失败,不仅没有让江临沮丧,反而让他感到兴奋。
  裴礪的判断是精准的。
  真正挡在mps-kernel前面的,不是某一段晦涩难懂的代码,而是不可阻挡的数学规律。
  状態空间爆炸。
  第八年,江临果断在代码库中按下刪除键,將枚举指令序列这条传统的暴力穷举旧路线抹除。
  搜索的核心对象,被他从具体的代码改成了抽象的语义等价类。
  不再让生成器像个傻子一样去枚举每一种可能的寄存器分配或指令顺序。
  而是引入等价图,也就是e-graph式的表示方法,再叠加规范化哈希、对称归约和支配关係剪枝。
  在同一组数学输入输出语义下,那些能够被证明只差在寄存器命名、无依赖指令重排、冗余中间量或局部等价重写上的候选序列,会被摺叠到同一个状態节点里。
  生成器吐出的不再是一行行c代码或汇编。
  而是一张巨大的状態图。
  每一个节点,不再代表一段具体代码,而代表一组输入输出语义相同、並且已经被规范化的中间状態。
  每一条边,才真正对应著一次实质性的,可落地的底层原语变换或机器指令变换。
  搜索空间,在废土的第八年,第一次被从物理意义上狠狠压了下来。
  第十一年,为了进一步对抗时间的消耗,江临在系统底层加入了证据缓存机制。
  过去,每一次搜索遇到相似的结构,系统都要重新调用z3求解器去证明一次。
  现在,所有被验证过的等价状態,其证明过程会被序列化后永久存储。 ↑返回顶部↑

章节目录