吃过午饭,林哲抱着个纸箱子,慢吞吞挪进了NV3核心架构组的办公区。
箱子是从保洁阿姨那儿顺来的,边角都破皮了。
里面装着他的全部家当:一个有点发黄的马克杯,两支咬扁了头的圆珠笔,一件备用灰t恤,以及一些杂物。
他把箱子往空工位上一扔。
砰!
周围敲键盘的声音瞬间停了。
几颗脑袋从电脑屏幕后面探出来,齐刷刷盯着他。
这里是英伟达目前最核心的保密部门,活下来的人全都是自诩高人一等的资深硬件工程师。
坐在林哲斜对面的,就是开会时下巴快掉到胸口的戴夫。
戴夫三十出头,发际线已经开始往后退了。
他手里端着罐健怡可乐,眼神上下打量着林哲,满脸都写着“你算哪块小饼干”。
“哟,补丁哥来了。”
戴夫靠在椅背上,阴阳怪气地开口,“听说你靠着在黄老板面前耍嘴皮子,连升两级,直接空降咱们组了?”
旁边一个胖子跟着嗤笑一声。
“一个入职不到一年的菜鸟,连底层的硅片长啥样都没摸全吧?靠打个野路子补丁就能救公司?”
胖子把键盘敲得震天响,“那还要我们这些资深架构师干什么?咱们全去麦当劳翻汉堡得了。”
林哲拉开转椅,一屁股坐下去。
他把腿往桌子底下一伸,换了个舒服的姿势,完全没接茬。
他伸手打开电脑主机。
“别酸了。”
林哲盯着渐渐亮起的cRt屏幕,随口瞎扯,“老板看我长得帅,非要留我,我也很苦恼啊。”
戴夫差点被可乐呛死。
“你他妈要点脸!”
就在这时,走廊里传来一阵脚步声。
“啪!”
一本厚得像板砖一样的底层文档,被拍在林哲的键盘旁边。
林哲抬起头。
克里斯·马拉科夫斯基站在他工位旁边,居高临下地看着他。
这个41岁的硬件架构头号玩家,脸上没有刚才半点会议室里那种“我欣赏你”的表情。
他现在看起来就像个随时准备吃人的监工。
整个办公区瞬间鸦雀无声。
戴夫和胖子赶紧把头缩回屏幕后面,疯狂敲击回车键装忙。
克里斯的手指重重敲在厚文档上。
“老黄给了你三个月,那是老黄的事。”
克里斯语速极快,“NV3的进度一天都等不起,我不管你用什么野路子,这周五下班前,我要看到转换层核心预取算法的数学模型和伪代码。”
林哲看了一眼桌子上的日历。
今天是周二。
三天。
“拿不出来怎么办?”林哲靠在椅背上问。
克里斯冷笑一声。
“拿不出来,你就滚去给全组泡三个月的咖啡,每天早上八点,我要看到咖啡在每个人的桌子上冒热气,然后你就可以滚蛋了。”
克里斯说完,转身走了。
办公区里憋了半天的人,终于忍不住发出一阵低低的哄笑。
戴夫从隔板上方探出半个脑袋,冲着林哲挤眉弄眼。
“听见没,补丁哥?周五交不出模型,哥哥我要喝加两块方糖的黑咖。”
林哲挠了挠脖子。
“行啊。”
他把文档推到一边,“能用代码解决的事,最不麻烦了。”
他直接无视了戴夫见鬼一样的表情,双手十指交叉,用力往外一掰。
咔咔几声脆响。
年轻的身体就是爽。
手指头一点都不僵。
林哲盯着眼前纯黑色的doS界面,光标一闪一闪。
写代码?
他前世在AtI的时候,为了填总线位宽的坑,熬了半个月通宵,把那些底层逻辑翻来覆去嚼烂了咽进肚子里。
后来去了Amd,又跟着死磕指令集。
到了2026年,就算闭着眼睛,他都能默写出比现在先进二十年的内存调度算法。
现在让他搞个96年的老掉牙补丁转换层?
简直就是大学生跑去抢小学生的九九乘法表算术题,纯纯的降维打击。
林哲连官方文档翻都没翻。
他直接新建了一个底层汇编文件。
敲下第一行。
构思?不存在的。
“噼里啪啦噼里啪啦——”
声音在安静的办公区里显得格外刺耳。
戴夫本来正盯着自己的屏幕抓虫,听见这动静,烦躁地揉了揉眉心,小声嘟囔道:
“装什么大尾巴狼。”
十分钟过去了。
林哲的敲击声完全没有停下的意思。
二十分钟过去了。
键盘声越来越快,甚至带上了一种诡异的韵律感。
戴夫终于忍不住了。
他推开椅子,端着他的健怡可乐,装作去茶水间的样子,慢吞吞地绕到林哲身后。
他倒要看看,这小子瞎胡敲一通,能敲出什么满屏报错的垃圾代码。
戴夫站在林哲背后,探头往屏幕上看。
只看了一眼。
戴夫手里的可乐罐猛地抖了一下,差点洒在林哲的衣服上。
屏幕上的代码正在以一种恐怖的速度往下滚。
没有多余的注释,没有废话。
全是最底层的硬件调用指令,直接贴着硅片的物理极限在写。
“等等……”戴夫揉了揉眼睛,凑得更近了。
“你这内存分配……你没调用标准库?你疯了?”
林哲头都没回,眼睛依旧盯着屏幕,手指翻飞。
“标准库太慢了,绕来绕去的。”
林哲随口答道,“我直接硬编码物理地址,锁死那几个寄存器。”
“不可能!”
戴夫猛地拔高了音量,这一嗓子把整个办公区的人都惊动了,“你硬编码?你怎么保证寻址不溢出?显存带宽就那么点,你这么搞总线会直接锁死的!”
旁边的胖子和几个老员工立刻推开椅子围了过来。
大家都抱着看林哲怎么死的心态,伸长脖子往屏幕上瞅。
林哲终于停下了手。
他按了一下回车,把光标停在一长串十六进制代码前面。
他转过转椅,看着围在自己身后这一圈瞪大眼睛的“老古董”。
“谁告诉你们我要一次性把一整张纹理图塞进总线了?”林哲叹了口气,像看傻子一样看着戴夫。
戴夫愣住了:“那不然呢?directx的ApI就是这么调用的啊!”
林哲拿过桌上的圆珠笔,直接在自己的手背上画了个正方形,然后用笔尖在里面画了个十字,切成四块。
“切开。”
“把纹理数据切成4Kb一个小块,不用等渲染管线张嘴要,我写了个微指令调度器,提前算好下一步的步长,主芯片还没跑到那一步,数据已经切成块、排着队塞进高速缓存里了。”
空气一片死寂。
周围五六个资深工程师,眼睛直愣愣地盯着林哲手背上的方块。
戴夫的脑子在疯狂运转。
他试图在脑海里模拟这种数据流的走向。
片刻后。
戴夫的脸色变了。
从不屑,变成震惊,最后变成一种见鬼般的呆滞。
这种“总线切块”优化技巧,在未来十几年后是常规操作,但在1996年,大家的思维还停留在“你要多少我给多少,塞不进去就排队等”的原始阶段。
林哲这招,等于是在一条双车道上,直接搞了个红绿灯智能分流系统。
“你……”
“你连时钟周期的延迟都算准了?你怎么知道SRAm的响应时间刚好能卡上主渲染管线的空窗期?你都没翻那本文档!”胖子指着旁边被林哲冷落的、厚厚的底层手册。
林哲眨了眨眼。
“哦。”
林哲脸不红心不跳地扯谎:“我昨天晚上在家背下来了。”
戴夫咽一口唾沫。
他看林哲的眼神,已经从看“走后门的菜鸟”,彻底变成了看“披着人皮的外星怪物”。
“行了,别围着了。”
林哲挥手赶人,“周五要交货,别耽误我赚工资交房租。”
他转回身,继续对着键盘输出。
身后的人面面相觑,谁也没再吭声,灰溜溜地回到了自己的工位上。
整个下午,办公区里除了林哲敲键盘的声音,再也没有人说一句闲话。
大家都在拼命干活,生怕自己跑得慢了,被这个不知道从哪冒出来的变态卷死。