夜零文学>科幻小说>我在江湖做女侠 > 第八十二章 惊天魔盗团
    就连2d兴起的时候,显示芯片的运算能力也没有得到重视——那时候的2d,你在java里弄个一下不也差不多?

    直到3d时代来临,一个物体要在空间里经过变换,还要进行光照处理,数学运算能力的重要性才得以体现;而且一开始这些运算也是在cpu上完成的,显卡更大的意义在于光栅化,当时的opengl1x跑在cpu上也是很正常的情况。

    gpu这个词是rce256时提出的,当时内部集成了硬件固化的t≈ap;l(光影转换)单元,故名思意就是做空间变换与光照处理,至此,gpu的浮点运算能力算是有了开端。

    虽然此时显卡(gpu)的地位被稳固下来,但在很长时间以来也没有人想要拿进行对比,毕竟gpu不仅仅是运算那么简单,几何体的变换裁剪,光栅化,纹理的读取,后期aa……这些功能过于专用化,cpu只能模拟,显然是吃亏的。

    当时的处理方案是显卡把运算单元划分给顶点和像素两个阶段,不同显卡为两者分配的计算资源比例不同,也使其在不同游戏下表现出不同的性能。

    而到现在还能看到图形api流水线里的vs、ps阶段,一直到前几年dx10开始,gpu的架构迈入通用架构,流处理器的概念被提出,gpgpu开始兴起,gpu这才终于有了和cpu比较的基础。

    从此,gpu的核心数越来越多,几十几百甚至上千。

    核心多的gpu就是适合做并行量大的工作,渲染一帧画面,多边形数上百万,互不影响(理想条件),最终画面达到1080p,像素数上百万,也互不影响(理想条件),这种良好的并行负载使得gpu的架构能发挥出巨大实力。

    但是cpu也并非没有这种使用场景,不然也不会从单核到双核又到四核。

    ……

    事实上两者的单精度运算能力的确差不多,但是换成几乎完全不能并行化的工作负载,例如48个在做不同工作的线程时,结果就不一样了,最终变成主频的战争。

    gpu为了提高效率,可以阉割不怎么必要的双精度性能,可以大幅砍掉整数运算性能,也可以去掉大量缓存——在高度并行化的前提下,访存的延迟可以通过流水线隐藏。

    举个例子,餐厅打饭需要选菜、盛菜、付款多个步骤,每个步骤1s需要3s,但如果大家排队紧密执行,由于每个步骤互不干扰,n个人只要n+2s,相当于每个人只需要花1s。

    gpu也就是这个思路,砍了缓存可以拿来放a,降低功耗还提升运算能力,至于访存的延迟靠工作负载的高度并行与高度局部性来隐藏,这也使得并行度不够时这些问题都会暴露出来,带来更低的性能(高端卡在低分辨率下性能不佳也可以这么解释)。

    同样被阉割掉的还有调度单元,cpu做了大量分支预测、乱序执行的组件,但gpu却大量依赖编译器。

    换句话说,程序跑在gpu上需要编译时确定寄存器的使用,这对编译器提出了更大的挑战。如果编译器没处理好,那巨大的寄存器资源就会被浪费,其相对于缓存更快的访问速度也会被浪费。

    对于手机所用的微芯片来说,单独的显卡芯片也是至关重要的,不然就会限制相关技术的发展和应用,特别是进入4g时代之后,高清视频将会逐渐成为用户的需要,更好画质的游戏也同样如此。

    但是却被硬件限制,软件技术上已经能达到,但是芯片技术上目前还是在攻关之中。

    英特尔、高通、英伟达……这些公司谁先拿出新一代的集成芯片,那么谁将会在这个市场中占据绝大部分的优势。