GeForce RTX 前瞻——在图灵架构初来乍到之时

终于确认的 Turing

距离 Nvidia 发布目前主流消费市场上的显卡—— GeForce 10 系列已经过去两年又三个月了,或许是因为竞争对手实在不给力,其推出的 Vega 系列没有撼动 Pascal 系显卡统治地位的能力,又或许是新卡的配套工程出了一些问题,比如制程问题还有 GDDR 6 显存的产量问题。

2015 年 Roadmap

这是一张 2015 年初,Nvidia 发布会上的路线图,上面可以很清楚地看到,Pascal 架构之后是 Volta 架构,横坐标对应着 2018。而 Volta 架构的亮相则是在去年年底,2017 年 12 月 7 日,老黄发布了 Titan V,一张价值 3000 美金的发烧级显卡。就在人们翘首期盼新的基于 Volta 架构的显卡之时,Nvidia 却迟迟没有发布新一代的 GeForce 系列,2018 年整个上半年,无数爱好者被时不时传出的一些 Nvidia 新卡的消息吊足了胃口,连新卡用的架构都有三个说法:Volta、Turing 还是 Ampere?直到 2018 年 8 月 13 日,Volta 之后的新架构 Turing 终于随着新一代 Quadro 专业级显卡正式登场了,而也证实了传闻中的 Turing 架构的真实性,以及爱好者们期待许久的新一代 GeForce 显卡就快要登场了,下面就是综合最近的一些消息对 GeForce 新系列的一些前瞻。

老黄举着新的 Quadro RTX 显卡

RTX

我们先从命名说起。

新一代的 Quadro 专业级显卡的命名方式均为 Quadro RTX x000,而早前 Nvidia 注册了关于 RTX 的一些商标,这可能预示着新系列的 GeForce 显卡命名可能在顶级显卡上会放弃使用了十年之久的 GTX 前缀(后缀),而换用 RTX 作为新的前缀。

那么 RTX 又代表了什么?

Ray Tracing(光线追踪)然后带个 X。

熟悉游戏图形的朋友可能略微知道,目前桌面级游戏几乎都是基于光栅化的渲染方式,而大家经常看到的一些电影、游戏 CG 在渲染层面则是采用了实时光线追踪的方式。在桌面级平台上实现实时光线追踪这一目标是业界一直努力的一个方向,年初微软在 Windows 10 的更新中也为 DirectX 加入了新的光线追踪 API。而现在 Nvidia 终于将这一技术带到了桌面级平台上面,用业界专家的话来说:

This is a significant moment in the history of computer graphics, Nvidia is delivering real-time ray tracing five years before we had thought possible. –Jon Peddie, the well-respected CEO of analyst firm JPR and a noted graphics expert

实时光线追踪样图

Nvidia 宣称其在新架构上新加入了一种 RT 单元专用于实时光线追踪,新架构在模拟真实世界场景上能 6 倍于前代,在实时光线追踪上则能做到 25 倍于帕斯卡架构。

所以 Nvidia 将这一特性作为新一代显卡的前缀来增强宣传作用是完全合理的。

这是两段近日发布的 Nvidia 的实时光线追踪的 Demo:

https://www.youtube.com/watch?v=bFUWu387ErM

https://www.youtube.com/watch?v=3jb3flTRykQ

其中效果我只能用恁牛逼啊来叙述。

GDDR6 显存

不像 CPU,GPU 对于高速缓存的依赖非常之高,自 2008 年,HD 48x0 这代开始使用 GDDR5 显存到现在已经过去了十年,业界不断在为 GDDR5 续命,不过近些年来,AMD 在其高端卡上已经使用 HBM 取代了 GDDR5,而 Nvidia 也在 GTX 1080 上首次使用了 GDDR5X ,在 Titan V 上使用了 HBM 2 显存来获取更高的带宽。其继任者 GDDR6 标准在 2017 年 7 月被正式通过了,随后在今年年内,三星、镁光以及海力士这三家显存颗粒主要供应商都宣布开始出货 GDDR6 显存。

而 13 日 Quadro RTX 系列的发布证实了“Turing 架构将会使用 GDDR6 显存”的传闻,大概至少 GeForce 的旗舰级新卡会用上它吧。

核心及其他改进

从现有的 Quadro 新卡来看,完整的 Turing 核心似乎是一个超大的核心,相比于 Pascal,其核心面积大了约 60%,晶体管数量多了约 58%,如果数字太过抽象,那么下面这张图就能很好地帮助你理解 Turing 到底大了多少。然而,即使较 Pascal 而言扩张了相当大的面积,Turing 仍然差 Volta 那么一筹(晶体管数量 21B,核心面积 815mm2)。

Pascal VS Turing Turing 架构图

这是官方发布会公布的 Turing 架构图,罗列一下现在已知的改进点:

  • NVLINK 带宽增加了
  • Tensor 单元(Volta 架构引入的用于人工智能以及机器学习的单元)改进了
  • 核心缓存改进了
  • 视频引擎改进
  • 输出支持 VirtualLink 以及 USB-C,支持新版 DisplayPort

11x0 or 20x0

近日,AIDA64 的新版本中包括了一些 Nvidia 的新 GPU,其中 GV 104 就被命名成了 GeForce GTX 1180。

GeForce GTX 1180

然而现在 Turing 架构的正式发布似乎标志着 AIDA64 出错了。首先,按照惯例,如果新一代 GeForce 显卡使用 Turing 架构,那么其核心代号则应该是 GT xxx,考虑到已经出现过 GT 系列核心代号(GeForce 100/200/300 系列),那么可能会使用别的代号也说不定,但是 GV 开头的可能性已经很小了。其次,按照上文 RTX 一节所说,新卡应该会以 RTX 为前缀而非 GTX。

就在 Quadro 新卡发布之后的 14 日上午,Nvidia GeForce 的官方推特发布了一个新的疑似预告片的短视频,以 “#BeForTheGame” 命名,视频疑似预告了在 8 月 20 日科隆游戏展上 Nvidia 将会发布新一代桌面级显卡。在视频的第 45 秒,一个一闪而过的聊天信息中发现了有趣的东西:

45 秒

内容是一个 RayTeX 的玩家和另一个 ID 为 Not_11 的玩家的对话。

RayTeX: new build?

Not_11: No haha I wish, some got this at work

RayTeX: you getting on??

Not_11: eating, gimme 20

两个非常有趣的 ID,一个缩写为 RTX 另一个叫不是 11,可能是官方剧透。最后一句 eating, gimme 20 与其 ID 相呼应,貌似下一代命名为 GeForce RTX 20x0 已经是板上钉钉的事情了。

但是新卡仍然没有发布,谁知道呢。

再见,老伙计;你好,新朋友

前略,上周日,一次突如其来的停电袭击之后,我那本来就已经处在崩溃边缘的 K610D 终于不得行了,进系统之后必蓝屏,而且此次蓝屏的 Code 还不一样(说实话可能我基本上把 Windows 10 能出现的蓝屏代码全看了一遍了)。花了半天尝试了各种修复后故障依旧,没有办法之下,只得跟父亲申请新机器的资金——其实已经延长了非常久的时间了,自从两年前进过水之后我就知道必然会有这么一天到来的——再花了四分之一天在限定资金下确定了现在这台新伙计,用的蓝天 W65KJ 的模具。
配置最基本两个大件新旧对比:

K610D-i7d2 W65KJ
CPU Intel Core i7 4710MQ Intel Core i3 8100
GPU NVIDIA GeForce 940M NVIDIA GeForce GTX 1050

之所以新机器选择了 W65KJ, 原因有二:

  1. 散热强劲

    因为用的是桌面级 CPU, 所以 CPU 部分是用了双热管来压的,而且 CPU 与 dGPU 各用了一个风扇来分散热量。之前因为在 K610D 上面吃尽了散热差的苦头,所以这次舍弃了拥有更好扩展接口的另一个型号,也要散热系统非常强劲。

    测试下来非常令我满意,在风扇全开的情况下能把 CPU 压在 65 度附近,四核频率稳定标称的 3.6 GHz 运行,dGPU 也压的非常好。

  2. 可扩展性强

    因为用的是桌面级 Core 8 代 CPU, 所以机器上直接给了两个 M.2 接口,两个均支持 NVMe 协议。而且因为散热系统仍有余裕,所以后续升级至 Core i5 是非常可行的提升性能的办法,甚至 i7 都有一试之力。

京东速度还算是不错,第二天周一中午机器到手的时候是 8GB 2400 的英睿达单条 DDR4 内存加上一条金士顿的 128 GB 的 TLC 条子,成本原因自然是走 SATA 协议的,但是够用是够用了,就是容量太小了,于是当天下午就下单了另一条英睿达 DDR4 2400 8GB 和三星的 SM961 256GB, 最谢天谢地的是最近的内存条和 SSD 都有一些降价,不然得是大出血。

犹豫是周一下午五点——一般快递停收时间——之后才淘宝下的单,所以内存到了周五才到,而 SM961 却到了周三还没发货,咨询了卖家:“没货,明天或者后天到”。我可去你妈的,换店,之前物色 NVMe SSD 的时候在 XG3 和 SM961 之间纠结,然后这时候在淘宝上看到一家拆机 XG3 512GB 才卖九百出头的店,果断付款。

然后今天周六下午,终于是到手了。赶紧插上装好东芝家的驱动跑个分,果然 NVMe + MLC 的组合数据上非常吓人。马上迁移系统,结果文件都是复制完了却在启动上栽了跟头。

系统迁移引导处理

在 UEFI + GPT 环境下直接复制全盘复制文件到新分区是可行的,前提是你的 NVMe 在原来的系统中要被认过一次,系统的设备管理器中的“存储控制器”一项出现了 NVMe 控制器,这是迁移可行的大前提。

文件复制完毕之后,你还需要做两个事情,否则,是进不去新驱动器上的系统的:

改变注册表中默认分配盘符

首先你需要一个可用的注册表编辑器,定位到 HKLM\SYSTEM\MountedDevices 下,将 \DosDevices\新系统所在的盘符: 的值复制下来。挂载上新系统的注册表文件(通过文件-加载配置单元读取 Windows\System32\Config\SYSTEM 文件),然后定位到相同的项,将之前复制的值覆盖掉 \DosDevices\C: 的值即可。

写入新的 BCD 配置

然后你需要一块系统安装盘,启动到系统安装界面,调出命令行(Shift + F10), 然后将新系统所在的分区的盘符挂成 “C”, 同时要给新硬盘上的 ESP 分区分配一个盘符,使程序能够写入文件,大概过程如下:

1
diskpart
2
list disk '查看磁盘列表
3
sele disk x 'x 是你新磁盘在列表中的编号
4
list part
5
sele part x 'x 是你新系统所在的分区编号
6
assign letter=C '分配新系统所在分区的盘符为 C
7
sele part y 'y 是这块磁盘上的 ESP 分区编号
8
assign letter=Y '给 ESP 分区分配 Y 的盘符
9
exit '退出 diskpart
10
bcdboot C:\windows /s Y: [/v] '将 C:\Windows 作为启动目录写入到 Y: 上,"/v" 为可选参数,即详细模式

重启之后就搞定了。


那么,这台机子就这么算是正式启用了吧,之后会攒钱买块 Core i5 给换上就算是完全大功告成了,但愿它能陪我长一些时间吧。

关于抗锯齿

今天听 Gadio News 的时候,最末尾一段提到了希望有人能来讲讲抗锯齿技术。才疏学浅,但是前几年看 MC 的文章还是知道一点相关内容,所以就来看着维基写写看,如有不正之处劳请指出。

锯齿与抗锯齿

首先,什么是锯齿,以及为什么会出现锯齿。

我们的屏幕,是以一个个正方形的像素点组成的,而正方形的特性导致了在倾斜的线上,边缘必定会出现一个个突起的阶梯状“毛刺”,比如图上这种preview

这种阶梯状的“毛刺”就是典型的锯齿。而有了锯齿也就有了抗锯齿(Anti-Aliasing).

抗锯齿的一般过程就是将这个毛刺的边缘柔化,使图像边缘看起来更平滑。如图:img

各种算法简单介绍

抗锯齿算法种类非常多,下面的介绍顺序基本上是各种抗锯齿算法出现的时间顺序。

SSAA

超级采样抗锯齿(Super-Sampling Anti-Aliasing, 也可叫做 Supersampling 超采样)是最早也最简单粗暴的抗锯齿手法,它的原理非常简单,就是在渲染时将要输出的分辨率提升 x 倍,比如要输出 1920x1080 的分辨率到屏幕上,开启 SSAA 2x, 那么内部渲染时的分辨率就是 3840x2160, 然后 Downsampling 到 1920x1080 上,自然在许多纹理边缘上就显得平滑许多。但是这种方式太太太吃资源了,所以又开发出了新的算法。

在 Nvidia 发布二代 Maxwell 架构的时候,同时发布的 DSR 技术中就有 SSAA 的影子,技术思路同样是以更高分辨率渲染的原始画面输出到显示器分辨率上来得到更加精细平滑的画面。

MSAA

SSAA 太吃资源了,我们的硬件暂时还跟不上,怎么办?于是就有了多重采样抗锯齿(Multi-Sampling Anti-Aliasing), 它跟 SSAA 的区别就是,MSAA 只对于多边形的边缘进行抗锯齿处理。比如一个红色的圆,只对圆周作抗锯齿多重采样计算,但是圆周以内的部分则不会处理。这种方式下的画面锯齿得到了一定的抑制,而抗锯齿需要的资源也大幅下降到可接受的范围中。所以 MSAA 也逐渐成为目前被使用的最多的抗锯齿技术。

但是 MSAA 也有其局限之处,比如对于半透明物件、边缘不明确或者非常复杂的物件比如密集草丛、铁丝网这类的抗锯齿处理就比较力不从心。

CSAA & CFAA

历史进入 Direct 10 时代,NV 方先声夺人发布了 G80 系列,同时带来了覆盖采样抗锯齿(Coverage-Sampling Anti-Aliasing)技术,主要改进了取样类型从而使得抗锯齿效率提升,资源占用量也得到减少。举例来说,如果使用 16x MSAA,需要在周围取得 16 个采样点的色彩值和 Z 轴值,然后保存这些数值进行计算。而 16x CSAA,则全部在被采样的像素点中心取得色彩之和Z轴值,然后对比并去掉同样的数据。一般来说,16x CSAA 后只需要保存 4 份色彩值和 Z 轴值即可。换句话来说,4x MSAA 耗费的资源和 16x CSAA 是相同的,但是,16x CSAA的画面效果相比 4x MSAA 更好。

同期 ATI 在发布 R600 系列时也带来了可编程过滤抗锯齿(Custom Filter Anti-Aliasing)技术。简单的来说 CFAA 就是扩大取样面积的 MSAA,比方说之前的 MSAA 是严格选取物体边缘像素进行缩放的,而 CFAA 则可以通过驱动判断对影响锯齿效果较大的像素进行缩放,以较少的性能牺牲换取平滑效果。

但是由于种种原因,CSAA 被接受程度更高一些,不少游戏就直接加入了 CSAA 选项。而 CFAA 由于需要在显卡驱动面板中进行调试而渐渐被用户所遗忘。

MLAA & FXAA

在 CFAA 被遗忘之后,AMD-ATI 带来了形态抗锯齿(Morphological Anti-Aliasing).

不同于上面几种需要对多边形边缘进行分析计算的算法,MLAA 是一种后处理技术,发生在整个 3D 计算完成即将输出画面到屏幕上前,打个比方就是你拍完照用 Photoshop 处理的过程。

MLAA 的实际效果还是非常不错的,但是资源耗用还是有点厉害的。它的最大优势就是不需要游戏来支持它,因为是后处理技术所以在显卡驱动面板中打开就能用而且兼容性非常好。但是由于其仅仅使用颜色数据来判断抗锯齿边缘,因此 MLAA 的应用可能导致无法辨识到底哪些边缘需要进行抗锯齿计算。特别是一些不需要抗锯齿的地方,如文字,表格等,可能都由于不当抗锯齿而显得圆滑甚至怪异。

这边 A 家出了新抗锯齿技术,老冤家 NV 当然也不甘落后,在 Fermi 上推出了快速近似抗锯齿(Fast Approximate Anti-Aliasing)。

FXAA 和 MLAA 一样,也是一种后处理抗锯齿,两种 AA 在原理上相似,但是由于 FXAA 可以在 AN 两家的卡上都可以用而 MLAA 则由于部分计算处理依赖于硬件所以只能在 A 卡上用,最后导致 FXAA 被广泛的采用了。而且同时期 FXAA 的性能损失比 MLAA 更小,而效果上基本能接近 4x MSAA 的画面,虽然同样还是会出现“字体破坏”的情况。

TXAA

在抗锯齿这条路上,众多程序员以及各种“家”的探索是不会停下来的。在 Kepler 架构发布的同时,NV 也带来了新的 TXAA(Temporal Anti-Aliasing 可称为“时间性抗锯齿”)技术,据 NV 自家的介绍,这项技术集时间性过滤器、硬件抗锯齿以及定制的 CG 电影式抗锯齿解算法于一身。

原有的抗锯齿技术在解决静态画面的锯齿上可以说已经达到了瓶颈了,但是在动态画面上,有锯齿的部位很容易出现闪烁。如同其名字中的“时间性”,TXAA 旨在解决“时间性抗锯齿”,也就是动态画面中的锯齿闪烁等问题。而其同时提供着不输于 8x MSAA 的静态画面抗锯齿效果。

TXAA 可以说是目前被采用的较多的抗锯齿算法中最厉害的一种了,但是它一是需要硬件电路配合,二是吃资源,以性能换画面,所以也基本上是中高端 N 卡用户用的。

结语

目前主流的一些抗锯齿技术大概就是这么多了,本文很多内容都是参考中文互联网上的一些文章写成的。第一次在机核发文,存在的许多不足之处也请多多包涵。

家庭网络和路由

上一篇文章中,我提到回家要干的一件事情就是更换路由。把新买的二手 Nepgear Netgear R6250 替换掉用了两年多的洋垃圾 RT-N16. 更换到现在已经过去一天半左右的时间了,遇到了几个问题。

HomeNetwork

拿快递开箱换上配置好一共花了不到半小时就搞定了,然后问题开始浮现:我的 ThinkPad S1 Yoga 连接不到 R6250 提供的 2.4G 无线网络。开始认为是笔记本上那块单频 Intel 7260 的锅,然后把 R6250 的 2.4G 网的频宽从 40MHz 降到了 20MHz, 结果仍然有时断时续的情况出现,认为还是 7260 这张网卡的问题,准备更换网卡。但北美良心想在 BIOS 中做了限制,更换起来很麻烦,所以一筹莫展。结果今晚日常拿起手柄 V 的时候突发奇想连一下无线,发现根本找不到 2.4G 网的 SSID, 就算不容易刷出来了也是连接不上的状态,遂开始感觉是 R6250 的问题。Google 之,发现使用第三方固件的 R6250 大多都存在这种问题,比如 2.4G 网不稳定,2.4G 根本连不上什么的。但是我又不想用回官方那个烂的很的固件,于是掏出从学校快递回家,原本准备用来替换掉配电箱中的主路由的那只被改装过的 TP-Link WR720N, 本就刷好了 LEDE, 稍微改了几个配置就当 2.4G 的 AP 来用了,连接非常稳定。

把 DMZ 主机指定到自己的机器之后,直接通过 DDNS 域名进行内网访问,速度非常快,延迟非常低,爽。

然后用着用着,无心看到 IPv6 的地址头不对,而且怎么本地 DNS 域也变成了 LEDE 了?一看果然是小的 AP 在作怪,上面的 DHCP 服务器没关,也就是一个网段中有两个设备在 DHCP 广播。遂关闭之,顺带着把 Lan 口设置中的网关确定为 2.1, 并把 Dnsmasq 的服务一起关了,问题消失。