第3章 空降兵(3/4)
戴夫站在林哲背后,探头往屏幕上看。
只看了一眼。
戴夫手里的可乐罐猛地抖了一下,差点洒在林哲的衣服上。
屏幕上的代码正在以一种恐怖的速度往下滚。
没有多余的注释,没有废话。
全是最底层的硬件调用指令,直接贴着硅片的物理极限在写。
“等等……”戴夫揉了揉眼睛,凑得更近了。
“你这内存分配……你没调用标准库?
你疯了?”
林哲头都没回,眼睛依旧盯着屏幕,手指翻飞。
“标准库太慢了,绕来绕去的。”
林哲随口答道,“我直接硬编码物理地址,锁死那几个寄存器。”
“不可能!”
戴夫猛地拔高了音量,这一嗓子把整个办公区的人都惊动了,“你硬编码?
你怎么保证寻址不溢出?
显存带宽就那么点,你这么搞总线会直接锁死的!”
旁边的胖子和几个老员工立刻推开椅子围了过来。
大家都抱着看林哲怎么死的心态,伸长脖子往屏幕上瞅。
林哲终于停下了手。
他按了一下回车,把光标停在一长串十六进制代码前面。
他转过转椅,看着围在自己身后这一圈瞪大眼睛的“老古董”。
“谁告诉你们我要一次性把一整张纹理图塞进总线了?”林哲叹了口气,像看傻子一样看着戴夫。
戴夫愣住了:“那不然呢?
directx的ApI就是这么调用的啊!”
林哲拿过桌上的圆珠笔,直接在自己的手背上画了个正方形,然后用笔尖在里面画了个十字,切成四块。
“切开。”
“把纹理数据切成4Kb一个小块,不用等渲染管线张嘴要,我写了个微指令调度器,提前算好下一步的步长,主芯片还没跑到那一步,数据已经切成块、排着队塞进高速缓存里了。”
空气一片死寂。
周围五六个资深工程师,眼睛直愣愣地盯着林哲手背上的方块。
戴夫的脑子在疯狂运转。
他试图在脑海里模拟这种数据流的走向。
片刻后。
戴夫的脸色变了。
从不屑,变成震惊,最后变成一种见鬼般的呆滞。
这种“总线切块”优化技巧,在未来十几年后是常规操作,但在1996年,大家的思维还停留在“你要多少我给多少,塞不进去就排队等”的原始阶段。
林哲这招,等于是在一条双车道上,直接搞了个红绿灯智能分流系统。
“你……”
“你连时钟周期的延迟都算准了?
你怎么知道SRAm的响应时间刚好能卡上主渲染管线的空窗期?
本章未完,请翻下一页继续阅读.........