晋江文学城
下一章 上一章  目录  设置

36、模块化架构 ...

  •   非升即走的第三年秋天,元昭的优青答辩和重点基金申报撞在了同一周。

      周一,他把优青答辩PPT改到第十四版,存进U盘时发现文件名后缀从v1一路长到v14,像一条不断分叉的河流。周二,重点基金的预算表被财务退回,理由是“差旅费比例超出规定上限”,他坐在电脑前逐项删减,把斯德哥尔摩的访问预算砍掉一半。周三,林晓晓的博士论文预审意见回来,两位评审都要求补充一组对比实验——用新平台复现当年国产制冷机上的编织信号。周四,陆寻告诉他,那篇写了半年的PRB被编辑直接拒稿,没送审,理由是“创新性不足以支撑全文”。

      周五早上,元昭在实验室的椅子上坐了十五分钟,没有开机。

      周焰从外面进来,手里拎着两杯豆浆。他看了一眼元昭的状态,没说话,把豆浆放在他手边,然后在他对面坐下,打开自己的电脑,开始改明天组会的幻灯片。

      过了很久,元昭说:“我好像撑不住了。”

      周焰的手指停在键盘上。

      “不是大事。”元昭说,声音很平,“没有设备坏,没有人受伤,没有数据造假。只是所有事情同时涌上来,我处理不过来。优青、重点基金、林晓晓的补实验、陆寻的拒稿、下周的组会、下个月的课程评估——每件单独都能做,但叠在一起,我像一台解码器遇到了超出设计规格的综合征频率,来不及处理,开始丢包。”

      周焰合上电脑。

      “那就不处理。”

      “不处理会——”

      “会暂时堆积,但不会崩。”周焰说,“因为我们不是单线程系统。我们是模块化架构。”

      元昭看着他。

      “拓扑量子计算进到大规模阶段后,没人再用单个芯片跑全部逻辑。”周焰说,“都是拆成模块——量子存储器模块、处理器模块、接口模块、经典控制模块。每个模块有自己的供电、屏蔽、校准周期。一个模块出噪声,不影响其他模块。整体系统靠模块间的互联协议协同,而不是靠每个模块都完美。”

      他站起来,走到白板前,画了几个方块:

      模块A:教学(课程+学生指导)

      模块B:科研(优青+重点基金+论文)

      模块C:实验室运维(设备+样品+采购)

      模块D:生活(睡眠+吃饭+林静+周牧云+元昭&周焰)

      “你现在的问题是,把所有模块当成一个整体在扛。”周焰在四个方块外面画了一个大圈,“任何一个模块出问题,你都觉得是整个系统出问题。但模块化架构的设计原则是:模块内高内聚,模块间低耦合。A模块的噪声,不应该耦合进D模块。”

      元昭看着白板上的方块:“那模块间的互联协议是什么。”

      “优先级仲裁。”周焰说,“这周,D模块优先级设为最高——你每天睡够七小时,吃三顿饭,晚上十点后不看邮件。A模块降频运行:课程按教案走,不临时加内容;学生指导固定时段,其余时间不回消息。B模块拆成子任务:优青答辩排周一上午,重点基金排周二下午,林晓晓的补实验排给赵明远协助,陆寻的拒稿先放一周,等情绪过去再决定改投还是重写。C模块交给赵明远和林晓晓轮值,你只签审批。”

      元昭没有说话。

      “这不是逃避。”周焰说,“是模块隔离。工业级系统的常识——不允许一个模块的故障传染到相邻模块。我们之前的架构太‘单片集成’了,所有功能挤在同一块衬底上,任何一点漏电流都会干扰全局。现在该切分了。”

      元昭低下头,看着自己手边那杯已经不太烫的豆浆。然后他伸手拿起它,喝了一口。

      “模块D的优先级,这周最高。”他说,像是在确认一条协议。

      “最高。”

      “那今天下午,我不改PPT了。”

      “好。”

      “我们去未名湖走一圈。”

      “好。”

      ------

      那天下午,他们在未名湖边走了四十分钟。银杏叶正黄,风一过就簌簌地落,落在水面和石阶上。他们没有聊优青,没有聊基金,没有聊林晓晓的补实验和陆寻的拒稿。周焰讲了他在CERN时有一次低温电子学标定连续失败了十七次,第十八次才发现是接地环路的问题,跟设备本身无关。元昭讲了他在KTH时有一次深夜一个人在实验室里重跑编织序列,跑完发现Lindholm给他留了一张纸条,上面写着“Go home, your qubit will still be here tomorrow morning.”

      “Lindholm教授会说‘your qubit’?”周焰表示怀疑。

      “他说的。我留着了。”

      “留着干嘛。”

      “留着提醒自己,模块化不只是切分任务,还包括——允许自己在某个模块里暂时下线,相信其他模块会保持系统运行。”

      周焰看了他一眼,笑了。

      回到实验室时,元昭的电脑上弹出一封新邮件——是叶清让转发的人事处通知,提醒下周优青答辩的教室和投影仪测试时间。他看完,关掉,没有立刻回复。

      他打开一个新文档,标题写上:《元周实验室模块化架构 v1》。然后他列了四个模块,每个模块下面写了负责人、关键节点、本周优先级。

      模块D(生活)的负责人栏,他写了两个人的名字,中间加了一个乘号:

      元昭×周焰

      然后他保存,关机,站起来。

      “今天到此为止。模块D优先。”

      周焰从控制台前抬起头,笑了一下:“模块D收到。”

      ------

      模块化架构推行一个月后,效果开始显现。

      优青答辩通过了。重点基金虽然没有拿到重点额度,但获批了一项面上项目,足够支撑实验室未来三年的耗材和学生津贴。林晓晓的补实验在赵明远的协助下两周内完成,预审意见中的问题全部闭环,论文进入终审。陆寻那篇被拒的PRB,在放了一周后由元昭帮他重新梳理了故事线,改投了《npj Quantum Information》,二审中。

      但模块化带来的另一个变化,是元昭始料未及的。

      他开始能够区分“系统噪声”和“模块故障”。

      以前,任何一件小事出问题——学生实验失败、论文被拒、设备出bug、甚至食堂排队太久耽误了时间——他都会感到一种弥散的、笼罩性的焦虑,像整个系统在报警。但现在,他会先问自己:哪个模块出的问题?这个问题会不会扩散到其他模块?如果不会,那就只在这个模块里处理,不调动全局资源。

      “你以前像一台把所有寄存器都暴露在同一个时钟域里的芯片。”周焰在某次组会后评价,“任何一个寄存器的毛刺都会传遍整个时钟树。现在你加了时钟域隔离,毛刺被本地消化了。”

      “你是在夸我。”

      “是在夸你。也是在夸我自己——模块化架构是我画的。”

      “那你再画一个模块。”

      “什么模块?”

      元昭想了想:“模块E。用来处理‘我们之间关于模块化架构本身的争议’。如果哪天我觉得你管的模块太多了,或者你觉得我管的模块太少了,我们不把这些争议塞进其他模块里消化,而是专门开一个模块来处理它。”

      周焰愣了一下,然后笑了:“你连元周系统本身的元架构都开始设计了。”

      “不然呢。拓扑量子计算做到最后,大家都在做架构——怎么把物理层、纠错层、逻辑层、应用层拆成可独立优化的模块。我们的系统也一样。物理层是戒指和每日邮件,纠错层是24小时开口协议,逻辑层是分布式部署决策,应用层是——一起活着。”

      “应用层是‘一起活着’。”周焰重复了一遍,声音轻下来,“这个模块优先级是多少。”

      “最高。和模块D并列。”

      “那它俩合并算了。”

      “不合并。”元昭说,“模块D管生活——吃饭睡觉见家人。模块E管关系——我们之间的相位校准和架构争议。合并会导致职责不清,职责不清会导致一个模块的故障渗透进另一个模块。架构设计的第一原则:单一职责。”

      周焰看着他,在实验室白板前,在堆满预印本和咖啡杯的桌子上方,在国产制冷机低鸣的背景音里,笑了很久。

      然后他在白板上画了第五个方块,在里面写下:

      模块E:元周系统架构维护

      职责:处理模块间争议,校准相位,修订《元周规范手册》

      负责人:元昭×周焰

      优先级:与模块D并列最高

      “写进去了。”他说。

      “好。”元昭说。

      ------

      模块化架构实施的第一个冬天,北京下了一场大雪。

      实验室的暖气烧得很足,窗玻璃上结了一层薄雾。林晓晓的博士论文通过了终审,答辩定在来年三月。陆寻那篇npj QI接收了,他罕见地在组会上说了句“谢谢大家”。赵明远的解码器延迟从0.4ms压到了0.3ms,他把结果做成海报,准备投去三月的APS March Meeting。

      元昭的重点基金(面上项目)第一笔经费到账那天,他给全组订了奶茶。周焰的那杯加了双倍糖,元昭那杯无糖。

      “模块化架构运行满三个月。”周焰举着奶茶杯,像举酒杯,“总结一下?”

      元昭想了想:“优点:系统噪声降低了至少60%。缺点:偶尔会觉得模块之间太隔离了,像各自在独立的冷盘上运行,缺少交叉验证的机会。”

      “那加一条交叉验证的定时任务?”

      “比如?”

      “比如——每个月至少有一天,所有模块同时降频,我们俩单独待一个下午,不处理任何模块的事务,只做一件事。”

      “什么事。”

      周焰喝了一口奶茶,很甜:“确认我们还在同一个拓扑相里。”

      元昭看着他,在实验室的暖气片咝咝声里,在窗外纷飞的大雪中,在满桌的预印本和数据硬盘之间。

      “好。”他说,“写入模块E的维护日历。每月一次,不可跳过,不可延期,不可被任何模块的紧急事务抢占。”

      “写入。”

      窗外,雪还在下。未名湖已经冻上了,冰面上覆着一层薄薄的白。实验室里,五个模块在各自的时钟域里安静运行,互不干扰,又通过那枚刻着Ψ(r?,r?)=Ψ(r?,r?)的戒指,保持着全局相位一致。

      模块化架构的第一原则:单一职责。

      第二原则:模块间耦合最小化。

      第三原则:全局相位同步,不依赖任何单一模块的完美运行。

      而他们的全局相位,从冷湖那年就对准了。此后每一次分离、每一次噪声冲击、每一次模块重组,都没有失锁过。

  • 昵称:
  • 评分: 2分|鲜花一捧 1分|一朵小花 0分|交流灌水 0分|别字捉虫 -1分|一块小砖 -2分|砖头一堆
  • 内容:
  •             注:1.评论时输入br/即可换行分段。
  •                 2.发布负分评论消耗的月石并不会给作者。
  •             查看评论规则>>