标题：Fermi
什么是Fermi
首次公布的Fermi核心照
GT200的14亿个晶体管曾经让我们惊叹，Cypress的21.5亿个相比RV770的9.56亿个增加了一倍多，而Fermi达到了史无前例的30亿个，同样比自己的上一代翻了一番还多，比对手也多了40%。
从最高层面上说，Fermi很简单，无非是512个流处理器，384-bit GDDR5显存，而深层次的架构我们会在稍后逐一揭晓，不过Fermi至今还停留在纸面上，还不是一款真正的产品，所以型号划分、时钟频率、售价等等都还没有确定。事实上，直到两个月前NVIDIA才第一次让人看到了样品，最近不久刚刚获得可以正常工作的芯片，正式发布至少要到今年年底，而全面上市就是明年第一季度的事儿了。
Fermi为什么这么晚？NVIDIA产品营销副总裁Ujesh Desai说了一句：因为设计这么大的GPU实在是太的难了。
AMD用RV770核心给NVIDIA好好上了一课，庞大而沉重的GT200失去了反击之力，CUDA、PhysX这种对手所没有的功能特性于是成了宣传重点。
作为GeForce业务负责人，Ujesh Desai愿意承担责任，并承认在GT200时代严重失策。根据RV670 Radeon HD 3800的表现，NVIDIA推测其继任者的性能也不过尔尔，但RV770的表现大大出乎意料，而GT200定价过高，最终导致了一夜之间暴降千元的悲剧。
NVIDIAGPU工程副总裁Jonah Alben没有把责任都推到Ujesh身上，承认自己在工程上也有失误。GT300从一开始就应该采用新的55nm工艺，但NVIDIA在130nm NV30 GeForce FX被150nm Radeon 9700 Pro大败之后趋于保守，最后一次使用了65nm工艺，最终成就了一个面积庞大、功耗超高的巨无霸。
虽然40nm工艺进程依然稍微落后于对手，但NVIDIA不会在同一条河里摔倒两次，没有在Fermi上沿用55nm，否则又是一颗无法接受的大芯片。
不过NVIDIA暂时还没有透露Fermi的具体大小，只能估计一下。Fermi和Cypress都是40nm工艺，假设核心面积和晶体管数量呈等比例，那么在后者334平方毫米的基础上，Fermi将是466平方毫米，比576平方毫米的GT200小足足两成。
尽管AMD的Sweet Point策略让NVIDIA吃尽了苦头，不过NVIDIA依然认为最重要的并非首先开发价格较低的小芯片，而是提高大芯片的效率，然后衍生出不同的尺寸和配置规格。期待Fermi的主流版本能在明年尽快出炉。
NVIDIA相信Fermi在3D游戏里会比Radeon HD 5870更快，当然不快也不行，但是如果你只是把Fermi单纯地看作是一颗游戏GPU就错了，因为它的真正目标是Tesla，是高性能通用计算，是个人和数据中心超级计算机——这就是GT300里边那个字母T的含义，它要做一颗通用目的微处理器。
这有点儿像Intel Nehalem架构，确切目标也不是桌面，而是高性能计算服务器领域，所以新的Xeon处理器才在服务器工作站上横扫一片，但游戏性能并不比Core 2 Quad好多少。
NVIDIA声称，要达到同样的性能，使用CPU就得2000台x86服务器，总成本约800万美元，功耗1200kW，而换成GPU只需32台Tesla S1070s系统(如下图)，成本不过40万美元，功耗更是仅仅45kW。虽然这里没有算上驱动Tesla所需要的服务器(毕竟GPU不可能完全摆脱CPU)，但这部分占得也不会太多。
Fermi架构解析
1、SP、SM
从高层次上看，Fermi和GT200结构形似，并无太大不同，但往深处看就会发现绝大部分都已经进化。
  最核心的流处理器(Streaming Processor/SP)现在不但数量大增，还有了个新名字CUDA核心(CUDA Core)，由此即可看出NVIDIA的转型之意，不过我们暂时还是继续沿用流处理器的说法。
所有流处理器现在都符合IEEE 754-2008浮点算法(Cypress也是如此)和完整的32位整数算法，而后者在过去只是模拟的，事实上仅能计算24-bit整数乘法；同时引入的还有积和熔加运算(Fused Multiply-Add/FMA)，每循环操作数单精度512个、双精度256个。所有一切都符合业界标准，计算结果不会产生意外偏差。
双精度浮点(FP64)性能大大提升，峰值执行率可以达到单精度浮点(FP32)的1/2，而过去只有1/8，AMD现在也不过1/5，比如Radeon HD 5870分别为单精度2.72TFlops、双精度544GFlops。由于最终核心频率未定，所以暂时还不清楚Fermi的具体浮点运算能力(双精度预计可达624GFlops)。
  G80/GT200都是8个流处理器构成一组SM(Streaming Multiprocessor)，Fermi增加到了32个，最多16组，少于GT200的30组，但流处理器总量从240个增至512个，是G80的整整四倍。
除了流处理器，每组SM还有4个特殊功能单元(Special Function UnitSFU)，用于执行抽象数学和插值计算，G80/GT200均为2个。同时MUL已被删掉，所以不会再有单/双指令执行计算率了。
至于SM之上的纹理处理器群(Texture Processor Cluster/TPC)，NVIDIA暂时没有披露具体组成方式，而且ROP单元、纹理/像素填充率等其它图形指标也未公布。
2、缓存
GT200的每组SM都有16KB共享内存，由其中8个SP使用。注意它们不是缓存(cache)，而是软件管理的内存(memory)，可以写入、读取数据。为了满足应用程序和通用计算的需要，Fermi引入了真正的缓存，每组SM拥有64KB可配置内存(合计1MB)，可分成16KB共享内存加48KB一级缓存，或者48KB共享内存加16KB一级缓存，可灵活满足不同类型程序的需要。
GT200的每组TPC还有一个一级纹理缓存，不过当GPU出于计算模式的时候就没什么用了，故而Fermi并未在这方面进行增强。
整个芯片拥有一个容量768KB的共享二级缓存，执行原子内存操作(AMO)的时候比GT200快5-20倍。
3、效率
CPU和GPU执行的都是被称作线程的指令流。高端CPU现在每次最多只能执行8个线程(Intel Core i7)，而GPU的并行计算能力就强大多了：G80 12288个、GT200 30720个、Fermi 24576个。
为什么Fermi还不如GT200多？因为NVIDIA发现计算的瓶颈在于共享内存大小，而不是线程数，所以前者从16KB翻两番达到64KB，后者则减少了20%，不过依然是G80的两倍，而且每32个线程构成一组“Warp”。
在G80和GT200上，每个时钟周期只有一半Warp被送至SM，换言之SM需要两个循环才能完整执行32个线程；同时SM分配逻辑和执行硬件紧密联系在一起，向SFU发送线程的时候整个SM都必须等待这些线程执行完毕，严重影响整体效率。
Fermi解决了这个问题，在每个SM前端都有两个Warp调度器和两个独立分配单元，并且和SM其它部分完全独立，均可在一个时钟循环里选择发送一半Warp，而且这些线程可以来自不同的Warp。分配单元和执行硬件之间有一个完整的交叉开关(Crossbar)，每个单元都可以像SM内的任何单元分配线程(不过存在一些限制)。
这种线程架构也不是没有缺点，就是要求Warp的每个线程都必须同时执行同样的指令，否则会有部分单元空闲。每组SM每个循环内可以执行的不同操作数：FP32 32个、FP64 16个、INT 32个、SFU 4个、LD/ST 16个。
4、并行内核(Parallel Kernel)
在GPU编程术语中，内核是运行在GPU硬件上的一个功能或小程序。G80/GT200整个芯片每次只能执行一个内核，容易造成SM单元闲置。这在图形运算中不是问题，通用计算上就不行了。
Fermi的全局分配逻辑则可以向整个系统发送多个并行内核，不然SP数量翻一番还多，更容易浪费。
应用程序在GPU和CUDA模式之间的切换时间也快得多了，NVIDIA宣称是GT200的10倍。外部连接亦有改进，Fermi现在支持和CPU之间的并行传输，而之前都是串行的。
5、ECC支持
AMD Cypress可以检测内存总线上的错误，却不能修正，而NVIDIA Fermi的寄存器文件、一级缓存、二级缓存、DRAM全部完整支持ECC错误校验，这同样是为Tesla准备的，之前我们也提到过。
很多客户此前就是因为Tesla没有ECC才拒绝采纳，因为他们的安装量非常庞大，必须有ECC。
6、统一64-bit内存寻址
以前的架构里多种不同载入指令，取决于内存类型：本地(每线程)、共享(每组线程)、全局(每内核)。这就和指针造成了麻烦，程序员不得不费劲清理。
Fermi统一了寻址空间，简化为一种指令，内存地址取决于存储位置：最低位是本地，然后是共享，剩下的是全局。这种统一寻址空间是支持C++的必需前提。
GT80/GT200的寻址空间都是32-bit的，最多搭配4GB GDDR3显存，而Fermi一举支持64-bit寻址，即使实际寻址只有40-bit，支持显存容量最多也可达惊人的1TB，目前实际配置最多6GB GDDR5——仍是Tesla。
7、新的指令集架构(ISA)
下边对开发人员来说是非常酷的：NVIDIA宣布了一个名为“Nexus”的插件，可以在Visual Studio里执行CUDA代码的硬件调试，相当于把GPU当成CPU看待，难度大大降低。
Fermi的指令集架构大大扩充，支持DX11和OpenCL义不容辞，C++前边也已经说过，现在又多了Visual Studio，当然还有C、Fortran、OpenGL 3.1/3.2。
Fermi 1.0
GF1002010年3月27日，nVIDIA发布了两款基于Fermi架构的DircetX 11桌面级显卡：GTX 480、G  TX 470。GTX480在单卡单芯领域可以压制大多ATI/AMD产品。不过，差距不大。它在一些优势项目中性能直逼HD5970，向世人首次展示了Fermi架构的强大。不过，这位初代旗舰卡问题不是一般的多，同时，也是GF100核心的通病。
1、发热问题：公版的GTX 480是配发的是一个巨型的涡轮风扇散热器（虽然这类散热器性能卓越，同时也带来了巨大的噪音问题）。然而，即使是巨型的涡轮风扇散热器依然无法压制GTX 480炙热的心，Fumark拷机测试中轻松超过90℃的发热量让人咋舌。
2、核心问题：GTX 480除了是一个发热大户，同时也是业界第一个被阉割的旗舰产品。因为，台积电不成熟的40nm工艺，造成了桌面显卡史上第一个被阉割的旗舰。本来的512个CUDA核心被阉割成了480个。同时，从G80时代的MIMD设计虽然效率很高，却需要大量晶体管。因为以上原因GTX480变成了拥有  GTX 480使用的GF100核心32亿个晶体管的巨型GPU。由于工艺问题，核心的良品率和漏电问题一直困扰着nVIDIA的工程师们。
3、供电问题：公版的GTX 480在Fumark拷机测试中跑出466瓦的“强劲”数字。为了取保核心供电问题，公版设计上采用了6+2项供电模组和8pin+6pin外接供电口。
随后发布的GTX 465依然存在这些问题。这也是人们不禁开始怀疑这nVIDIA的Fermi的真实性能，会不会是一个高技术的幌子。
GF100的设计方式就是将满规格Fermi的4个GPC中得一个阉割掉一个SM就成了现在GTX 480GF104虽然旗舰们拥有强劲的性能。但是，功耗和发热问题一直困扰着GF100军团，面对早已  nVIDIA公版GTX 460展开防线的HD 5000系列，GF100还是有些力不从心。就在N卡用户陆续转投A卡阵营，独立显卡出货量历史性的出现N：49%，A：51%超于。
就在这个危机时刻，2011年7月12日，nVIDIA发布里一款确切说是两款基于GF104的GTX 460。由于，第一批GF100的Fermi架构GPU表现差强人意，这个阉割版的GF100是个普遍不被看好这个阉割马甲版的产品。
但是，结果却在2年来没什么大动静的图形界引起了一场不小的地震。就测试结果来看，高端1GB 256bit版的GTX460不但能完全压制HD 5830，在超频后拥有挑战HD 5850实力。而，缩水版的768MB 192bit版
  GF104又以接近HD5770价位完全压制后者并能超频后于HD 5830一战。一夜之间，网路上频繁出现“GTX460秒杀A卡全家的言论”。Q3的独立显卡出货量也是达到了惊人的N:V=7:3
GF104之所以能够在ATI/AMD产品早已完成阵线，旗舰产品不给力的情况下完成这个大逆转。是因为，GF104精简掉了对3D游戏能力帮助不大的L2缓存和取消部分并行计算单元，在GF100的基础上进一步优化核心漏电问题。一举解决了，Fermi=烤炉的定律。一线厂商获得的高质量核心能够轻松超频900MHz甚至更高。
为了解决这个块硬骨头AMD方面加紧了Barts核心的研发进度，还将HD 5830的价格降至GTX 460的水平。足见GF 104的强劲实力。
完整的GF104的设计方式是将GF100的单个GPC的128个CUDA核心扩张成192个，再将两个扩张版的GPC的其中一个阉割掉1个SM。随水版本略有不同。GF1062010年9月13日，nVIDIA发布了基于GF106的GTS 450。这意味着，已经同A卡苦战长达近3年的G92终于能够荣归故里了。
基于的GF106架构产品共有2款一款是GTS 450海外 低频版，一款是GTS 450大陆特供的高频版。让大陆玩家首次体会到被照顾了。
GF106的设计方式就是将GF104的两GPC阉割成一个，其他不变。GF108第4梯队的GF108核心共有款产品：GT 440和GT 430。但是  GF108，GT 440并没有重现GT 240的辉煌。这主要和这两款产品定位有关系。GF108主要重点是给用户提供通用计算和音视频解码，而不是单纯的游戏性能。
GF108的设计方式是将GF106的规格减半。