V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
bydmm
V2EX  ›  奇思妙想

FPGA 改变云时代

  •  1
     
  •   bydmm · 2017-06-01 22:09:11 +08:00 · 4458 次点击
    这是一个创建于 2725 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本人原创,发布于: http://www.jianshu.com/p/44ae6de9efa5

    背景资料: 如何评价微软在数据中心使用 FPGA 代替传统 CPU 的做法

    知识点:

    1.微服务:

    微服务化的趋势现在似乎有所展现,具体的细节不讲太多,我们就说一下他的特点。

    一般框架式开发(比如 java 的 ssh )是提供一套功能强大的 MVC 框架,主要的代码基本写在一个项目里。

    在微服务的架构和我们现在常见的框架式开发非常不同。

    微服务是把业务拆的很细,然后搞出很多很小的项目来。

    用一个文章发布模块举个例子。

    用户向服务器 post 请求,提交了一篇文章。文章发布服务收到了用户的的 post,然后把其中 header 中的 token 取出来,然后向用户验证 API 发出 rest api 请求,当收到验证通过的返回值后,再进行下一步。

    可以看出一般在框架式开发中,代码的共享是通过函数调用完成的,但是在微服务中,则是不同小项目之间通过 REST API 互相调用。

    2.微服务引起的无服务器革命:

    你可能听过 docker 之类的框架,但是你听说过 aws lambda,或者云函数么?

    aws 现在推出了一款叫 lambda 的服务,而他是这样的:

    用户将一段较为短小的代码放到 lambda 里,封装成一个云函数,而这个云函数它运行在 aws 的集群之上。

    当这个云函数被触发的时候,aws 服务器的集群有多少资源,他就能跑多少份,而云函数没被触发的时候,代码停在硬盘上,根本不要钱。

    可见这个云函数的扩展性简直不能更赞。更赞的是你根本不用关心服务器的架构.........你把代码放上去就行了,什么操作系统,什么 nginx 和你没关系。

    这个技术被叫做 serverless,无服务器革命。

    顺便提一下 API GATEWAY 这个东西。

    如果每个云函数都要花时间和空间去解析 http 请求,然后还要负责 https 加密,最后还要压缩 http 返回值的话,这个云函数就很难做的很小了。

    所以提供云函数的云商都会提供一份 API GATEWAY 的服务。这个服务统一处理 http 协议相关的问题,然后根据用户的 api 定义( swager )把参数传递给云函数,而云函数只用接 params 和返回 json 就行了。

    由于 API GATEWAY 的存在,所以他还附赠负载均衡,反 DDOS,流量限制,log 跟踪等等等功能。。反正简直惊了。

    1. FPGA:

    FPGA 中文叫可编程逻辑模块.

    开发是通过特定的高级语言编程后,将逻辑编译为数字电路,里面根本没有指令集。

    优点是功耗低速度快,无论是吞吐还是延迟都非常赞。

    单体购买较贵,但是被基础云服务商大规模采购后,价格不贵。

    缺点是语法较为复杂和冷门,受限于 FPGA 的特点,他也烧不进太复杂的逻辑,代码量有限。

    1 + 2 + 3 = ?

    在传统框架下,也许 80%的调用集中在某个函数上,但是其他的代码一样会被加载进内存。

    在微服务中,你的核心函数可以被实例化无数次,同时其他的冷门函数甚至没有运行。

    假如你有个核心函数运算量很大,大到能养活一块 FPGA。。。。这画面太美。

    关于支持和前景的问题:

    微软现在就在大规模使用 FPGA,AZURE 上每台服务器都已经安装了 FPGA 的模块,其用途是提供超高性能的虚拟网卡。

    如果下一步,微软的云函数多了一个选项,那就是允许你上传 FPGA 的代码,并且以云函数的模式运行。(虽然最少要吃一块 FPGA,因为我不知道怎么搞虚拟化。)那么这个事情就成了。

    20 条回复    2017-06-07 15:42:51 +08:00
    murmur
        1
    murmur  
       2017-06-01 22:14:08 +08:00
    fpga 不是在每次开机的时候都先烧入 rom 才能执行么?

    而且 fpga 不等于代码,最终要翻译成电路才能执行的,fpga 总共有那么多晶体管那么多引脚,你占的单元和引脚多了别人怎么用。。
    bydmm
        2
    bydmm  
    OP
       2017-06-01 22:38:30 +08:00
    @murmur

    fpga 的微服务确实无法虚拟化,但是只要你能包下一块完整的 fpga 就行了。
    holong2000
        3
    holong2000  
       2017-06-01 22:47:48 +08:00
    对这个很感兴趣。FPGA 有两大难题,一个是贵,另一个是开发困难,请问这两大难题如何解决?私以为,如果不解决这两个问题,FPGA 还是只是好看不好吃。
    bydmm
        4
    bydmm  
    OP
       2017-06-01 23:21:52 +08:00
    @holong2000
    FPGA 贵的问题建议参考上面的知乎链接,提供云服务的平台大规模采购的话,FPGA 并不贵。

    开发困难主要是缺乏支持,如果语言设计的好一点的话,编译器写的好一点的话也许没那么难。

    很多项目里为了优化某个函数,会把这个函数用 C 重写,我感觉这里就是 FPGA 发力的地方。

    这种函数一般不会很复杂。
    whileFalse
        5
    whileFalse  
       2017-06-01 23:26:35 +08:00 via iPhone
    前面说的没啥问题,但为啥硬跟 fpga 扯上关系。
    RqPS6rhmP3Nyn3Tm
        7
    RqPS6rhmP3Nyn3Tm  
       2017-06-02 00:12:13 +08:00 via iPhone
    ……写 FPGA 写得我想死
    要是真的商业化了,对程序员的要求会非常高,大部分都要从数字电路层面开始设计
    holong2000
        8
    holong2000  
       2017-06-02 00:18:29 +08:00
    @BXIA 开发门槛过高,基本就很难流行
    cxyfreedom
        9
    cxyfreedom  
       2017-06-02 00:23:45 +08:00 via iPhone
    大学里写 FPGA 主要都在控制灯和计
    数...不过那是还写的很有成就感
    clker
        10
    clker  
       2017-06-02 07:52:23 +08:00 via Android
    我觉得大家都没有 get 到 point。fpga 在云计算提供硬件平台,开放出来。首先会有专业的算法工程师和设计师做出典型算法和 api,用户只需要用就行了。就如同 WordPress 一样。
    llb123
        11
    llb123  
       2017-06-02 08:39:42 +08:00
    大学里学过一点 VHDL 感觉很麻烦,不知道 Verilog 怎么样
    holong2000
        12
    holong2000  
       2017-06-02 08:59:11 +08:00
    @clker 如果没有足够数量的专业 FPGA 工程师,那怎么做出能足够用的各种开发工具给用户用?至少比 nvidia 的 GPU 要少得多了。再说,FPGA 工程师也是要吃饭的,收入不够好,也没人愿意去做。这是个生态问题,先有鸡还是先有蛋,但不管鸡还是蛋,现在落后 GPU 生态太多了
    besto
        13
    besto  
       2017-06-02 10:21:35 +08:00
    FPGA 太慢(频率太低),传输文件太慢(还是频率太低)。
    一个 Linux kernel+busybox 10M 左右,2-3MIN 传输,跑起来 20S 以上,不是为了验证新芯片,打死我也不想用。

    还是 GPU 写 Shader 比较好玩。
    bydmm
        14
    bydmm  
    OP
       2017-06-02 11:05:53 +08:00
    @besto 并不是在 FPGA 里面去搞 soc,里面也没有操作系统。
    拿比特币做例子,用 fpga 实现的矿机,比 CPU 和 GPU 都更快,因为 fpga 里面只有核心的计算电路。
    bydmm
        15
    bydmm  
    OP
       2017-06-02 11:11:04 +08:00
    我还想到一个脑洞。
    现在大家都想搞 AI,而 AI 加速就成了显著的需求。现在 google 是自己设计了专有芯片,这个一般公司肯定是玩不起了。
    那么在云端的开放平台上,云商租借 FPGA 芯片给你,然后你可以自行刷一份商业或开源社区的 FPGA 实现的 AI 加速方案上去,那么也是极好的。
    cloverii
        16
    cloverii  
       2017-06-02 12:12:39 +08:00 via Android
    咳…今年选了一门课叫 FPGA 高级硬件设计,期末论文全班大多数人选题都是 FPGA 与深度学习之类
    Shazoo
        17
    Shazoo  
       2017-06-02 17:06:07 +08:00
    一般都拿 FPGA 做信号处理的,时序精准,主频高。

    不知道 FPGA 实现矿机比 CPU 和 GPU 都快的说法来自哪里……理论上,FPGA 如果实现 GPU 的计算性能,估计得是 GPU 的 N 倍价格。对价格敏感的矿机,估计很少会关心。

    成本并不会因为规模上去后,就便宜到不要钱:晶圆数目摆在那里的。
    kobe1941
        18
    kobe1941  
       2017-06-02 22:02:09 +08:00
    当初学过 VHDL 和 Verilog 两种硬件描述语言,简而言之就是,再也不要碰这种底层的语言,直接跟硬件打交道费力不讨好。。。
    Death
        19
    Death  
       2017-06-03 10:14:57 +08:00 via Android
    语法并不复杂和冷门……

    烧入复杂的逻辑也没有问题吧
    afpro
        20
    afpro  
       2017-06-07 15:42:51 +08:00
    @bydmm 人力很贵的 FPGA 的特点导致他不通用 需要有专门的开发人员做开发维护 有招聘一个做 FPGA 的高级开发的钱 不如每两个月多买一块 nvidia 的计算卡实在 而且 nvidia 的计算卡加上 nvidia-link 数据传输能力根本不是 FPGA 能比的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   504 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:57 · PVG 05:57 · LAX 13:57 · JFK 16:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.