aihot  2017-09-12 19:05:19  智能硬件 |   查看评论   

一窝疯「人工智能芯片」前,你需要知道的几件关于GPGPU的事 

      听说拜「人工智能」与「深度学习」之所赐,GPU 应用看起来很夯,大家抢着挖矿让显示卡一片难求,搞得最近 nVidia AMD 的股价涨得很凶。

 

      喔齁。

 

      随着1999 8 31 日发表的GeForce 256NV10),nVidia 创造了「GPU」(Graphic Processing Unit)这个看起来好像非常伟大的名词,其近20 年演进,颠覆了众人对「处理器」一词的传统认知,也衍生琳琅满目、鸡同鸭讲、让人摸不着头绪、需劳驾计算机结构大师的教科书,长篇大论厘清命案现场的「技术行销名词」,而追求绘图处理器泛用化的GPGPU,在nVidia 的推波助澜下,更激发了无数人对未来的期望、憧憬、与幻想,甚至是令人匪夷所思的误解、谬误,与浮夸。

 

      部分读者可能并未经历过显示芯片市场,从百家争鸣,一路仿佛x86 处理器的市场发展,走上nVidia 与后来被AMD 并购的ATI,双雄相争的过往,特此野人献曝,寄望可递上一块让你挺立于没顶时代洪流中的踏脚石,也希望可以顺便唤回老骨头读者学生时代的珍贵回忆。

 

      有鉴于在这资讯大爆炸的网络时代的普遍现象:毋需倡议提高国文教材的文言文比重,也不必端起出师表临卷涕泣,一篇白话文只要字数超过500,就会经常性诱发基础阅读能力不佳的大脑buffer overflow,只看标题引文关键字自动脑补后,就开始留言发表原作者根本不知所云完全一头雾水的高见,所以本文从头到尾一问一答,不留下任何一丝一毫「误读」的可能性,也尽量避开因GPU 厂商行销需求,大量孳生的专有「技术行销名词」与缩写,更忌讳「用名词解释名词」,减少阅读时「卡弹」的机率。

 

      本文章节依序如下:

  • 什么是 GPU
  • 学理角度的 GPU是什么?
  • GPU 为何多执行绪?
  • SIMD 的三种常见型态?GPU 何以承先启后?
  • 为何 GPU 是多执行绪 SIMD
  • GPU 双雄又是如何定义 GPU 的运算型态?
  • 什么是 GPGPU
  • GPU 双雄的产品演进?
  • 为何要先不伤现在,再讲求未来?
  • HPC 到工人智能……人工智能。
  • 回首20 年来时路。

 

近年来英明神武天下无敌的 GPU,到底是什么?

 

      根据不学无术的笔者脑内考证,nVidia GPU 一词的最初技术定义是「整合的3D 转换(Transform)、打光(Lighting)、三角设定(Triangle Setup)/裁切(Clipping)与成像引擎(Rendering Engine),每秒能处理至少1 千万个多边形的单芯片处理器」。

 

      我们很清楚,这「定义」已毫无任何意义。

 

      说穿了,这只是蓄意突显当时只有 nVidia 率先支援 DirectX 7.0 硬件 Transform & LightingHardware T&L)的行销手法,刻意集中打击产品发展与公司营运已陷入困境的衰退霸权 3dfx

 

      笔者还依稀记得,3dfx 曾经花了很大工夫在网站首页用酷炫的Flash 拼命宣传「Banshee 2」(Voodoo 3 的昵称,根本只是补回第二个TMU Banshee)与VSA-100 叠叠乐的Voodoo 4/5 系列,其1,600×1,200 60fps 和反锯齿的实用性。

 

      3dfx 2000 年破产后,即被nVidia 并购,其末代产品「Rampage」核心设计团队,后来接手操刀由IBM 代工制造、nVidia GPU 历史不朽名作GeForce 6NV40)系列,拯救了深陷NV30 灾难的nVidia

 

      总而言之,现在只要是绘图芯片,GPU 几乎等同于代名词,连过去无缘躬逢其盛的2D 前辈,也同样鸡犬升天,被「追封」这个在今日已失去意义的空头衔,而某些仅需提供2D 画面输出、隐身于某些特殊应用,如服务器IPMI BMC 的绘图核心(提醒你,Matrox G200 还活得好好的喔),就不在本文的雷达搜索半径之内。

 

以学理的角度来看,GPU 的本质到底是什么?

 

      GPU 本质上多样化的平行性,涵盖了指令阶层、多执行绪、SIMD(单指令多数据流)、与以多处理器环境的MIMD(多指令多数据流),那我们该以哪个角度来理解GPU

 

      直接在这里讲结论:GPU 是「由数个多执行绪架构的SIMD 处理器(如nVidia SM / SMX / SMMAMD SIMD Engine / CU),所组成的MIMD 多处理器环境」,硬件层级可简述如下:

 

      GPU 的灵魂在于「被执行绪区块排程器(Thread Block Scheduler)指派给执行该代码的多执行绪SIMD 处理器(Multi-thread SIMD Processor),对GPU 以巨大的暂存器文件,掩盖记忆体延迟」,那层看起来很像MIMD 的外皮,完全不是重点,请对GPU 的认知,聚焦在SIMD 和多执行绪上。

 

为何 GPU 的多执行绪像纺纱机般地千丝万缕?

 

      答案很简单:需要同时执行滔滔不绝的多执行绪隐藏记忆体延迟。

 

      CPU 通常使用快取记忆体来减少存取主记忆体的次数,防止记忆体延迟拖慢指令管线执行效率,但GPU 因平行处理与存取材质,绘图系统的记忆体往往「高频宽,高延迟」 ,需多执行绪「交替掩护」,隐藏记忆体存取延迟,如第一个执行绪等待记忆体存取结果时,开始执行第二个执行绪,维持执行单元满载。

 

      不像 CPU 藉由分支预测减少管线停滞,GPU 多半使用类似上述处理记忆体延迟的方式,减轻分支指令造成的效能损伤,但一般而言,通常 GPU 处理分支指令的效能比 CPU 来得差。

 

      相异于泛用CPU 的指令执行流程,绘图管线并非「一条肠子通到底」,横跨数个运算特性相异的功能阶段,要稳定执行效能,需更有效精确掌握所有功能单元的执行状态与资源分配。

 

      简而言之,「以硬件为基础的多重执行绪管理与排程」是近代GPU 的最重要技术核心,当同时数几百条、个别代表一个像素(Pixel)的执行绪,去绘制同一张画面,每个SIMD 执行绪区块、等同一个8-32 像素的处理时,光要有效同步化,避免少数执行绪拖垮整体效能,就是非常不简单的挑战,而充分将GPU 的巨大运算潜力发挥到极限,更是举足轻重。

 

SIMD 三种常见形式(向量运算、SIMD 扩充指令集、GPGPU)的异同?

 

因单指令多数据(SIMD)可单指令启动多笔数据运算,比起每道数据运算都需要执行一道指令的多指令多数据(MIMD)享有更多潜在的能量效率。

 

另外,就程序设计师的角度,SIMD 对上 MIMD的最大优点,不外乎可以延续既有的循序性思考,却可利用数据阶层的平行化运算提升效能。在设法理解 GPU 的本质和优点前,绝不可忽略这点。

 

      时下常见的 SIMD 有三种:

  1. 历史悠久的向量架构电脑,像1976 年的Cray-1 超级电脑与后代子孙,和今天依然很有名的NEC SX 系列向量处理器(没研究过超级电脑,总得听过日本横滨那台Earth Simulator 吧) 。
  2. 20 年来蓬勃发展的多媒体SIMD 指令集延伸,想必各位对
     1/9    1 2 3 4 5 6 下一页 尾页
  
 

除特别注明外,本站所有文章均为 人工智能学习网 原创,转载请注明出处来自一窝疯「人工智能芯片」前,你需要知道的几件关于GPGPU的事

留言与评论(共有 0 条评论)
   
验证码: