哈哈小说
第 7 卷 · 造芯 · 第 121 章 · 54 段 · 2037 字

对齐

第一百二十一章 对齐

下周四,同一家咖啡馆。

贺志明比上次提前了十分钟到,换了一件深蓝色的衬衫,背包里装着那个本子,还多了一个 U 盘。

方宇明把整理好的砺火一号架构草稿带来了,打印成十六页,附了孟思远跑的仿真结果摘要。

两个人在桌上各自铺开,陆衍坐在旁边,让他们先谈。


最开始的二十分钟没有任何争论,两个人各自说自己的设计,对方在听。

贺志明说完他整理的片上缓存方案,方宇明在那十六页里翻到第九页,指了一个位置,「你说的这个分层访问路径,我们的设计里也有,在这里,」他说,「但实现方式不完全一样。」

「我知道,」贺志明说,「你们用的是分时复用的方式,我用的是空间分割,哪个对你们的负载更优,取决于一件事——」

「批大小,」方宇明说。

「对,」贺志明说,「如果你们的批大小变化很大,空间分割会浪费;如果批大小比较稳定,分时复用反而增加了切换开销。」

「我有负载数据,」方宇明说,把程一帆给的那份详细统计推过去,「你看。」

贺志明看了大概五分钟,「批大小集中在十六到六十四之间,」他说,「分布还算集中,那空间分割方案在这个数据上更简单,切换成本低。」

插图

「但我们考虑过扩展性,」方宇明说,「如果以后批大小增大到二百五十六以上,空间分割的利用率会下降。」

「你们打算支持二百五十六的批大小?」

「现在不做,但架构上留路,」方宇明说,「否则下一颗芯片又要重新设计缓存层。」

贺志明把那页数据放下,拿起笔,在本子上写了几个数字,「那就不能用纯空间分割,」他说,「但可以做混合——主路是空间分割,留一个动态分配区,批大小超过阈值时用动态区补。」

方宇明停了一下,「这个我想过,但没有做出来,」他说,「你能做吗?」

「试过,」贺志明说,「在台积电的时候做过类似的东西,不完全一样,但原理可以参考。」


三处吻合的地方谈完得很快,都没有什么大分歧,双方看法接近,细节上有不同但都在合理范围内。

第四处,是下午两点左右开始谈的。

问题出在数据读写的仲裁逻辑上。

方宇明的方案是,当计算单元同时发起多个内存读请求时,用轮询仲裁——每个请求轮流被服务,最简单,延迟可预测。

贺志明看了这段设计,「轮询,」他说,「你有没有考虑过优先级仲裁?」

插图

「考虑过,」方宇明说,「但优先级仲裁在推理场景里有一个问题——你怎么知道哪个请求的优先级更高?」

「根据序列长度,」贺志明说,「长序列的 KV-cache 访问次数更多,给它更高优先级,平均完成时间会更短。」

「但在一个 batch 里,序列长度是混合的,」方宇明说,「你给长序列优先级,短序列就被饿死了,客户侧的延迟分布会更难看。」

「取决于你对 P99 和 P50 的权衡,」贺志明说,「如果更在意平均性能,优先级仲裁更好;如果更在意尾延迟,轮询更安全。」

「我们的客户,」陆衍在旁边开口,这是他第一次说话,「企业场景,SLA 要求 P99 不能超过一个门槛,所以我们更在意尾延迟。」

贺志明看了他一眼,「那轮询的方向是对的,」他说,「但轮询有一个隐性问题,你们仿真测出来了吗?」

「什么问题?」

「轮询的时候,如果某个请求涉及的内存行在缓存里,另一个请求涉及的行不在,需要从主内存调入,这两个请求的实际服务时间差了一到两个数量级,轮询算法本身不知道这个差距,导致调度窗口里有大量的等待,」贺志明说,「这个在高负载下会把实际的 P99 抬高。」

方宇明把这话听完,没有立刻回答,低头翻了翻那份仿真摘要,「孟思远测的数据,」他说,「批量高负载那段,P99 比理论值高了大约二十个百分点,一直没找到原因。」

「就是这个,」贺志明说,「轮询遇到了 cache miss 的不均匀分布。」

方宇明把笔拿出来,在那页数据上写了几个字,「那你的意见是怎么改?」

插图

「不是改仲裁算法,」贺志明说,「是在轮询之前加一层 cache 状态感知——先查哪些请求的数据已经在片上缓存里,优先服务那些,剩下的正常轮询,这样就没有等待了。」

「这需要给仲裁模块加状态机,」方宇明说。

「对,」贺志明说,「但状态机不复杂,三到四个状态,我可以画出来。」

他拿起那个 U 盘,「我把台积电时候做过的一个类似模块的设计文档带来了,脱敏的,可以给你们参考,」他说,「不是完全一样,但仲裁这段的思路能参考。」

方宇明接过 U 盘,「你怎么还有这个,」他说。

「离职的时候合规处理过,这份文档是我当时写的个人总结,不涉及台积电的具体工艺数据,只有架构思路,属于我自己的东西,我留着。」


下午四点,两个人暂停,贺志明去倒了杯水,重新坐下,「我有个问题,」他说,「你们准备从哪里找前端工程师,RTL 实现那段?」

「还没有开始找,」方宇明说,「你有推荐吗?」

「有两个人,」贺志明说,「一个是我以前的同事,从台积电出来后去了一家 ASIC 设计公司,做过三颗芯片的前端,认真,不急;另一个是我认识的一个年轻人,毕业五年,在一家芯片创业公司做过两年前端,技术不错,公司现在缩编,他在考虑机会。」

「你愿意帮引荐?」

「你先告诉我,」贺志明说,「你们打算什么时候来谈我的条件。」

插图

陆衍在旁边开口,「你今天愿意到这里,带着你那本子和台积电的文档,」他说,「我觉得条件这件事我们今天就可以谈,不用再约。」

贺志明看着他,「那说吧,」他说。


这部分谈话陆衍没有让任何人在场,他和贺志明在咖啡馆外的路边站了大约二十分钟,方宇明在里面等着。

陆衍后来只跟方宇明说了结果:「他来了,下周开始,技术负责人,片上内存方向。」

方宇明看了他一眼,「谈得顺?」

「他不在意钱,」陆衍说,「在意的是两件事:第一,他的设计决策有最终权,不被人改;第二,流片出来的芯片规格文件上,他的名字在设计团队里。」

「这两件事,」方宇明说,「你都答应了?」

「都答应了,」陆衍说,「这两件事我不需要问任何人的意见。」

方宇明没有再说话,回到咖啡馆里收拾那十六页文档,「那就好,」他说,「我们现在有三个人了。」

他顿了一下,把那份仿真摘要上孟思远写的那行字重新看了一遍,然后把它夹进文件夹里,「接下来那个 P99 高二十个百分点的问题,」他说,「我们有答案了。」