本月累计签到次数:

今天获取 积分

FPGA

FPGA

767 浏览

80后工程师独白:那些年,我们一起玩过的单片机

电气控制类 Amazing 2017-03-23 13:05 发表了文章 来自相关话题

“   梦想这东西和经典一样,永远不会因为时间而褪色,反而更显珍贵!            
----献给所有有梦想的人

我是一个平凡的工程师,标准的80后,从事单片机及嵌入式相关工作已经有几年有余。每天忙忙碌碌,上班下班,既有做出产品时的开心,也有调试程序时的痛苦。一个平凡的人,做着一些平凡的事,每天过着平凡的生活。

有人说做电子工程师是年轻人的活,过了30还不转管理无论是体力上还是精力上都无法胜任了。这句话有一定的道理,但如果兴趣依旧为何不继续追寻自己的梦想呢?从小我就对机械、电子方面的东西感兴趣。听父母说,每次买回的玩具我都要拆开看看里面的结构,美其名曰:看看为啥能动?为啥能工作。到现在有时回到乡下的老房子里,还能看到不少缺胳膊少腿的玩具呢。

还记得这些吗?当年这些都被我拆得七零八落的。特别是小青蛙,可是研究了好一阵子呢。

真正让我对电子感兴趣的还得从一个著名的玩具开始,它就是经典的任天堂红白机。想当初,把这个东西搬回家时还兴奋了不少时间呢,一个暑假把所有能玩的游戏都玩了遍,接着就在琢磨这东西真神奇,到底里面有啥东西呢?拆开一看发现居然全都是绿绿的板子,上面还有不少黑色的玩意。忽然觉得做这个东西的人好伟大,以后自己也要学会做这个。

80后的经典啊,我也是从这里对电的一类东西感兴趣的

真正开始接触电子、电脑这一块那就到大学了。当时信息太闭塞了,填志愿的时候也不太清楚计算机、电子信息工程、通信专业都有啥区别。只是问了下同乡的几个师兄,都说计算机是今后的发展。既然是这样,那就报呗。于是我把所有能填的地方都填满了计算机专业,功夫不负有心人,最后还真去了个二本的计算机系。

(其实现在想起来我最应该去的就是电子信息工程或机电工程专业,毕竟这两个专业学的才是后来我们所说的嵌入式,不过好在该学校的计算机系既不偏软也不偏硬,属于软件也学硬件也学的那一种,所以大学四年还是学到了不少东西的)

大学4年的时间是短暂的,在这里我还要鄙视下某些所谓的大学老师,记得有一次上微机原理讲到8253、8255我就问:这个东西现在还在用吗?能不能弄个实物来看看?老师当时回答我说:这个芯片已经不用了,所以也不能找到实物,大家只要记住它就好。当时我就无语,既然淘汰的东西为啥要学???不过后来事实证明这些东西老是老了一点,但现在在很多的地方还是在用的。当然也不是说所有的大学老师都是严重脱离实际的,有些老师还是很厉害的,我就有幸碰到了一个,据说以前是某个公司的技术主管,专弄单片机这块。他让我知道了任天堂红白机里面绿绿的东西叫做PCB。有时他上课会给我们带一些小的玩意,比如说让单片机做流水灯,让蜂鸣器唱歌等等,让我们这些人崇拜的不行了。也正是在他的带领下我开始于单片机结下了不解之缘。





51单片机开发板,我们就是从这里开始的。

现在想想当时挺有意思的,在用51单片机做完了所有实验后忽然感觉它真是无所不能,所有东西都琢磨着是不是能用51单片机完成,甚至尝试着用51单片机做个手机啥的玩玩(当然,这是无法实现的J),不过还是做了很多好玩的东西,比如说远距离万能遥控器啦,晚上偷偷的遥控对面楼的电视。51大概玩了1年左右,期间还把PCB给画了一遍,学会了用PROTEL。

在一次偶然的机会听说51过时了,ARM才是现在的老大,于是省吃俭用花了600多大洋弄了块44B0X的板子,拿回来一看傻眼了,比51复杂的多啊,光是引脚就密密麻麻的一排,看都看不清,后来听师兄说居然有人能够徒手焊接,更是佩服得五体投地。






经典的44B0X板子,还记得吗?据说这块板子是某个高手布的线,所有的44B0X都是参考它的,堪称经典。到目前有人学习PCB走线我还要求他好好琢磨这块板子呢。

除了主芯片外,其它外围设备也不简单啊,网卡,硬盘接口,FLASH等等应有尽有,既然买了就硬着头皮学呗,不过好在有51的基础,这块板子裸奔的程序很快就搞定了,也琢磨出个味来:不管芯片多复杂,最终到底无非就是配置下寄存器而已,只要配对了寄存器其它一切都好办。在软件方面就相对复杂多了,为了搞这块板子我还特意去买了好几本LINUX方面的书,现在闲暇下来翻翻这些书还是很有感觉的。不过linux太过于复杂了,花了大半年的时间我才把这些书粗略的看了一遍。





经典的Linux书籍,你看过没有?

很多精髓的东西都没有弄清楚。这时候已经是大三下学期,刚好老师有个小项目看到我弄得还行就派我过去干了,其实东西现在想起来挺简单:有4~5路模拟信号采集到系统中,再通过AD转换变为数字信号用单片机进行运算,再把结果通过RS232发送给上位机软件。但这毕竟是我接的第一个项目,心里的忐忑可想而知,特别怕搞不定丢了老师的脸。于是在拿完需求后,先自己买了点器件用万用表搭了一个电路先试试。项目最终很成功,我也拿到了第一份报酬。






丑陋的自搭电路

大学4年很快就过去了,带着一堆的开发板、书籍和满腹的电子知识我离开了校园。很快我就找到了第一份工作:在一家小公司做技术员,公司主要的产品是为各种电子设备定做测试仪器。由于我学的是计算机专业,所以公司希望招我来做上位机软件。这我可傻眼了,以前所有的时间都花在了电子方面,谈到做上位机软件倒还真的不会。毛主席说过:世上的事最怕“认真”二字。没学过没关系,只要现在开始也不晚。那到底学什么语言和开发工具呢?跑到CSDN晃了一圈,很多人都说C++功能强大,以后发展也好。不过到底是VC还是C++ builder呢?VC难学,但据说学会了以后啥都好办了。既然是这样,那我就弄VC吧。好在公司的任务不紧,有充足的时间看书和学习,再加上有几个前辈指引,学习起来轻松多了。如果有朋友现在还想学习VC和windows程序设计的话,下面几本书可不能错过。这些书都是对应于VC 6.0的,到现在估计应该有对应.net的新版本了吧。
 
在这个公司的两年里先后完成了许多小的项目,从一开始的帮别人打下手,到后来的自己负责、带徒弟,感觉自己成长了很多。离开这家公司后,我往北边发展。进入了一家做视频相关系统的公司B,公司不大,但各个都是技术强人,这也给我了不小的压力。还记得入职的第一天,项目经理就和我说:我们这任务比较紧,你今天把入职手续办完就进入项目组吧,最近视频点播系统那边活比较多,你先去那边。于是我就误打误撞进入了视频领域,想想自己对这方面什么都不懂还真是胆大,不过这个选择对我今后的方向有重大影响,这个后面再说。

搞过视频的朋友应该都知道,这东西对工程师的综合素质要求还是挺高的,硬件方面所用处理器的都是主频比较高,性能比较好的,很多都是用DSP或FPGA来做;软件方面对算法、数据结构要有较深的理解。不过当时我可不知道这些,总觉得无非就是单片机的升级版本,没什么大不了的。到了项目组后,简单的和项目沟通了下,了解到目前上位机这边有个问题:无法获取当前鼠标所指的位置的文字。当时我立马想到金山词霸不是有个屏幕取词功能么?应该和这个类似。于是立即动手查资料,看到到底是什么原理。等我把相关的资料看完后已经到了下午5点多钟,这是大家都陆陆续续准备下班了,正当我犹豫要不要告诉项目经理时,项目经理走到了我身边于是我顺势就把自己的想法告诉了他,只见他两眼“闪光”,说:那个谁。。。还有那个谁。。。都别走了,留下来加个班,我们一起把这个东西解决了。等到完成基本框架已经到了深夜1点多钟,路上已经基本看不到行人了,晚风吹在脸上,心里充满了作为工程师的自豪,像一个得胜而归的将军。

在这里我特别要感谢项目经理,在B公司的3年时间里是我成长最快的3年,我陆续接触了AT9200,I.MX系列,OMAP,达芬奇系列等各种处理器的开发,特别是达芬奇系列,当时公司里的板子才2块,项目经理居然允许我带一块回家,要知道当时这个板子要好几万呢。当时可把我高兴坏了,像中了500万一样。

可能在一个地方久了就会厌倦,B公司虽然不错,但几年的光阴已经把我的激情磨灭,而我又是个需要激情的人。所以最终我还是从B公司离职了。离职后并没有立即找工作,当然并不是找不到,而是我需要一段时间放松下自己,整理下心情。恰巧这段时间各个半导体公司在不停的开研讨会,像ARM, TI,ST,Xilinx等等。于是乎,我就免费吃了好几顿大餐:)不过最让我印象深刻的是XILINX的研讨会,它们当时在推Spartan系列FPGA。说实话,我对这个FPGA这个东西只有耳闻,但到底是个什么东西还真不知道。在研讨会上看到了它们公司推出的几个案例,其中一个就是视频监控与模式识别的。由于我本身就是做这个的,所以对这块听得尤为仔细。相比于传统的DSP来做算法,FPGA做算法的速度、效率优势更为明显。

于是我很快就有了下一次目标----学习FPGA。不过想法是好的,不过FPGA学起来真是相当的麻烦:开发板很贵,完全硬件编程。这对我们软件出生的人真是不小的挑战。好在当时xilinx开研讨会赠送了一块BASYS开发板,于是我就从它开始踏上了FPGA的不归路。





有人问:一直学习累不累?有的时候想想确实很累。

夜深人静的时候,总是会一个人坐在窗前发呆:为什么我要不停的学习?我到底要什么?其实我并不知道这些东西到底有什么用,或许只是为了实现童年时期的一个梦,就像筷子兄弟说的:梦想这东西和经典一样,永远不会因为时间而褪色,反而更显珍贵!
 
 
来源:网络 查看全部
“   梦想这东西和经典一样,永远不会因为时间而褪色,反而更显珍贵!            
----献给所有有梦想的人

我是一个平凡的工程师,标准的80后,从事单片机及嵌入式相关工作已经有几年有余。每天忙忙碌碌,上班下班,既有做出产品时的开心,也有调试程序时的痛苦。一个平凡的人,做着一些平凡的事,每天过着平凡的生活。

有人说做电子工程师是年轻人的活,过了30还不转管理无论是体力上还是精力上都无法胜任了。这句话有一定的道理,但如果兴趣依旧为何不继续追寻自己的梦想呢?从小我就对机械、电子方面的东西感兴趣。听父母说,每次买回的玩具我都要拆开看看里面的结构,美其名曰:看看为啥能动?为啥能工作。到现在有时回到乡下的老房子里,还能看到不少缺胳膊少腿的玩具呢。

还记得这些吗?当年这些都被我拆得七零八落的。特别是小青蛙,可是研究了好一阵子呢。

真正让我对电子感兴趣的还得从一个著名的玩具开始,它就是经典的任天堂红白机。想当初,把这个东西搬回家时还兴奋了不少时间呢,一个暑假把所有能玩的游戏都玩了遍,接着就在琢磨这东西真神奇,到底里面有啥东西呢?拆开一看发现居然全都是绿绿的板子,上面还有不少黑色的玩意。忽然觉得做这个东西的人好伟大,以后自己也要学会做这个。

80后的经典啊,我也是从这里对电的一类东西感兴趣的

真正开始接触电子、电脑这一块那就到大学了。当时信息太闭塞了,填志愿的时候也不太清楚计算机、电子信息工程、通信专业都有啥区别。只是问了下同乡的几个师兄,都说计算机是今后的发展。既然是这样,那就报呗。于是我把所有能填的地方都填满了计算机专业,功夫不负有心人,最后还真去了个二本的计算机系。

(其实现在想起来我最应该去的就是电子信息工程或机电工程专业,毕竟这两个专业学的才是后来我们所说的嵌入式,不过好在该学校的计算机系既不偏软也不偏硬,属于软件也学硬件也学的那一种,所以大学四年还是学到了不少东西的)

大学4年的时间是短暂的,在这里我还要鄙视下某些所谓的大学老师,记得有一次上微机原理讲到8253、8255我就问:这个东西现在还在用吗?能不能弄个实物来看看?老师当时回答我说:这个芯片已经不用了,所以也不能找到实物,大家只要记住它就好。当时我就无语,既然淘汰的东西为啥要学???不过后来事实证明这些东西老是老了一点,但现在在很多的地方还是在用的。当然也不是说所有的大学老师都是严重脱离实际的,有些老师还是很厉害的,我就有幸碰到了一个,据说以前是某个公司的技术主管,专弄单片机这块。他让我知道了任天堂红白机里面绿绿的东西叫做PCB。有时他上课会给我们带一些小的玩意,比如说让单片机做流水灯,让蜂鸣器唱歌等等,让我们这些人崇拜的不行了。也正是在他的带领下我开始于单片机结下了不解之缘。

QQ截图20170323130105.png

51单片机开发板,我们就是从这里开始的。

现在想想当时挺有意思的,在用51单片机做完了所有实验后忽然感觉它真是无所不能,所有东西都琢磨着是不是能用51单片机完成,甚至尝试着用51单片机做个手机啥的玩玩(当然,这是无法实现的J),不过还是做了很多好玩的东西,比如说远距离万能遥控器啦,晚上偷偷的遥控对面楼的电视。51大概玩了1年左右,期间还把PCB给画了一遍,学会了用PROTEL。

在一次偶然的机会听说51过时了,ARM才是现在的老大,于是省吃俭用花了600多大洋弄了块44B0X的板子,拿回来一看傻眼了,比51复杂的多啊,光是引脚就密密麻麻的一排,看都看不清,后来听师兄说居然有人能够徒手焊接,更是佩服得五体投地。

QQ截图20170323130229.png


经典的44B0X板子,还记得吗?据说这块板子是某个高手布的线,所有的44B0X都是参考它的,堪称经典。到目前有人学习PCB走线我还要求他好好琢磨这块板子呢。

除了主芯片外,其它外围设备也不简单啊,网卡,硬盘接口,FLASH等等应有尽有,既然买了就硬着头皮学呗,不过好在有51的基础,这块板子裸奔的程序很快就搞定了,也琢磨出个味来:不管芯片多复杂,最终到底无非就是配置下寄存器而已,只要配对了寄存器其它一切都好办。在软件方面就相对复杂多了,为了搞这块板子我还特意去买了好几本LINUX方面的书,现在闲暇下来翻翻这些书还是很有感觉的。不过linux太过于复杂了,花了大半年的时间我才把这些书粗略的看了一遍。

QQ截图20170323130314.png

经典的Linux书籍,你看过没有?

很多精髓的东西都没有弄清楚。这时候已经是大三下学期,刚好老师有个小项目看到我弄得还行就派我过去干了,其实东西现在想起来挺简单:有4~5路模拟信号采集到系统中,再通过AD转换变为数字信号用单片机进行运算,再把结果通过RS232发送给上位机软件。但这毕竟是我接的第一个项目,心里的忐忑可想而知,特别怕搞不定丢了老师的脸。于是在拿完需求后,先自己买了点器件用万用表搭了一个电路先试试。项目最终很成功,我也拿到了第一份报酬。

QQ截图20170323130349.png


丑陋的自搭电路

大学4年很快就过去了,带着一堆的开发板、书籍和满腹的电子知识我离开了校园。很快我就找到了第一份工作:在一家小公司做技术员,公司主要的产品是为各种电子设备定做测试仪器。由于我学的是计算机专业,所以公司希望招我来做上位机软件。这我可傻眼了,以前所有的时间都花在了电子方面,谈到做上位机软件倒还真的不会。毛主席说过:世上的事最怕“认真”二字。没学过没关系,只要现在开始也不晚。那到底学什么语言和开发工具呢?跑到CSDN晃了一圈,很多人都说C++功能强大,以后发展也好。不过到底是VC还是C++ builder呢?VC难学,但据说学会了以后啥都好办了。既然是这样,那我就弄VC吧。好在公司的任务不紧,有充足的时间看书和学习,再加上有几个前辈指引,学习起来轻松多了。如果有朋友现在还想学习VC和windows程序设计的话,下面几本书可不能错过。这些书都是对应于VC 6.0的,到现在估计应该有对应.net的新版本了吧。
 
在这个公司的两年里先后完成了许多小的项目,从一开始的帮别人打下手,到后来的自己负责、带徒弟,感觉自己成长了很多。离开这家公司后,我往北边发展。进入了一家做视频相关系统的公司B,公司不大,但各个都是技术强人,这也给我了不小的压力。还记得入职的第一天,项目经理就和我说:我们这任务比较紧,你今天把入职手续办完就进入项目组吧,最近视频点播系统那边活比较多,你先去那边。于是我就误打误撞进入了视频领域,想想自己对这方面什么都不懂还真是胆大,不过这个选择对我今后的方向有重大影响,这个后面再说。

搞过视频的朋友应该都知道,这东西对工程师的综合素质要求还是挺高的,硬件方面所用处理器的都是主频比较高,性能比较好的,很多都是用DSP或FPGA来做;软件方面对算法、数据结构要有较深的理解。不过当时我可不知道这些,总觉得无非就是单片机的升级版本,没什么大不了的。到了项目组后,简单的和项目沟通了下,了解到目前上位机这边有个问题:无法获取当前鼠标所指的位置的文字。当时我立马想到金山词霸不是有个屏幕取词功能么?应该和这个类似。于是立即动手查资料,看到到底是什么原理。等我把相关的资料看完后已经到了下午5点多钟,这是大家都陆陆续续准备下班了,正当我犹豫要不要告诉项目经理时,项目经理走到了我身边于是我顺势就把自己的想法告诉了他,只见他两眼“闪光”,说:那个谁。。。还有那个谁。。。都别走了,留下来加个班,我们一起把这个东西解决了。等到完成基本框架已经到了深夜1点多钟,路上已经基本看不到行人了,晚风吹在脸上,心里充满了作为工程师的自豪,像一个得胜而归的将军。

在这里我特别要感谢项目经理,在B公司的3年时间里是我成长最快的3年,我陆续接触了AT9200,I.MX系列,OMAP,达芬奇系列等各种处理器的开发,特别是达芬奇系列,当时公司里的板子才2块,项目经理居然允许我带一块回家,要知道当时这个板子要好几万呢。当时可把我高兴坏了,像中了500万一样。

可能在一个地方久了就会厌倦,B公司虽然不错,但几年的光阴已经把我的激情磨灭,而我又是个需要激情的人。所以最终我还是从B公司离职了。离职后并没有立即找工作,当然并不是找不到,而是我需要一段时间放松下自己,整理下心情。恰巧这段时间各个半导体公司在不停的开研讨会,像ARM, TI,ST,Xilinx等等。于是乎,我就免费吃了好几顿大餐:)不过最让我印象深刻的是XILINX的研讨会,它们当时在推Spartan系列FPGA。说实话,我对这个FPGA这个东西只有耳闻,但到底是个什么东西还真不知道。在研讨会上看到了它们公司推出的几个案例,其中一个就是视频监控与模式识别的。由于我本身就是做这个的,所以对这块听得尤为仔细。相比于传统的DSP来做算法,FPGA做算法的速度、效率优势更为明显。

于是我很快就有了下一次目标----学习FPGA。不过想法是好的,不过FPGA学起来真是相当的麻烦:开发板很贵,完全硬件编程。这对我们软件出生的人真是不小的挑战。好在当时xilinx开研讨会赠送了一块BASYS开发板,于是我就从它开始踏上了FPGA的不归路。

QQ截图20170323130416.png

有人问:一直学习累不累?有的时候想想确实很累。

夜深人静的时候,总是会一个人坐在窗前发呆:为什么我要不停的学习?我到底要什么?其实我并不知道这些东西到底有什么用,或许只是为了实现童年时期的一个梦,就像筷子兄弟说的:梦想这东西和经典一样,永远不会因为时间而褪色,反而更显珍贵!
 
 
来源:网络
580 浏览

人工智能芯片的发展:FPGA的过去,现在和未来

智能科技类 泰迪的礼物 2017-02-20 18:34 发表了文章 来自相关话题

编者按:自Xilinx在1984年创造出FPGA以来,这种可编程逻辑器件凭借性能、上市时间、成本、稳定性和长期维护方面的优势,在通信、医疗、工控和安防等领域占有一席之地,在过去几年也有极高的增长率。而进入了最近两年,由于云计算、高性能计算和人工智能的繁荣,拥有先天优势的FPGA的关注度更是到达了前所未有的高度。本文从基础出发谈及FPGA的过去、现在与未来。

我们知道,相对于专业的ASIC,FPGA有上市时间和成本上的优势。另外,在大多数情况下,FPGA执行某些功能较之CPU上的软件操作更高效。这就是为什么我们认为它不但会运用在数据中心的服务器、交换器、存储层的各个角落,并且具有加速整个工作流程的功能。

然而我们不能过分乐观,尤其是在2015年12月,Intel以167亿美元收购了FPGA生产商Altera之后。

在2014年年底,当时还处于独立的Altera公司高层盯上了基于CPU+FPGA的数据中心并行计算的发展前景——这个当时价值大约10亿美元的市场。而并非数据中心里约2.5亿美元的CPU-GPU市场和直接应用CPU处理器的90亿美元市场。

Altera做出这个决定的原因在于他们认为这个组合较之另外两个方案,有编程的简便性和能效优势。人们对CPU非常熟悉,并发现寻找C程序员也不会太难。因此对大部分开发者来说,在执行运算任务的时候,持续使用这种方案不需要冒太大的风险,但是能源效率相对比较低,尤其是在密集的计算和固有的并行工作负载的情况底下。

至于CPU+GPU的方案,程序员并不是很熟悉,但是拥有很高的效率。

根据Altera的估计,使用OpenCL对混合CPU-FPGA系统进行编程比使用Nvidia的CUDA环境对于程序员来说更容易(某些方面肯定是有争议的),但用HDL来硬编程FPGA是相当困难的,因此需要OpenCL或者通过其他抽象层来将CPU中的负载转移到FPGA上。

Intel收购Altera改变FPGA格局

这个十亿美元的数据中心市场被Altera、Xilinx和其他FPGA供应商瓜分。在Intel于2015年6月收购了Altera之后,这个市场变得更加复杂。

在收购之前的2014年,Altera的19亿美元收入中,有16%来自于与数据中心相关的计算、网络和存储业务,其总值达到3.04亿美元。那些在这个领域深耕十几二十年的通信和无线设备系统制造商想要有更高的能源效率,更低的成本和更高的扩展性,这些都是FPGA所擅长的领域。另外有一点需要提一下,那就是在执行这些功能的时候,使用FPGA并不需要像使用CPU那样需要操作系统和相应的软件。这部分的营收占了Altera营收的44%,总额为8.35亿美元。

Altera另外的22%收入,即4.18亿美元,来自工业控制、军事设备和汽车制造等领域。他们面对相同的困境,因此选择FPGA来处理他们的一些工作负载。

其实早在2014年,英特尔看中了价值1150亿美元的各种类型的芯片潜在市场。当中可编辑逻辑设备(以FPGA为主)约占4%,ASIC占18%,其余为ASSP的大杂烩。

在可编辑逻辑设备的领域中,英特尔预估Altera占有48亿美元市场中的39%,Xilinx占有49%,剩下供应商则占据剩下的12%。

当时英特尔没有收购Altera的原因是因为FPGA业务的增长速度几乎与其数据中心集团(为服务器,存储和交换机制造商提供芯片,芯片组和主板)的速度一样快。

再者,英特尔没有这样做也是因为摩尔定律逐渐缓慢下来的脚步,给FPGA带来了日益增长的竞争威胁。

实际上,如果应用的话,在数据中心里不止安装一个FPGA、GPU或DSP加速器,但不需要安装多个Xeon CPU。由于英特尔不能继续为Xeons提供更多的核心和加速器,所以他们得出了将FPGA当做加速器的结论。

除非FPGA能在数据中心创造5亿美元的收益,或者几年后创造10亿美元或更多的收入。不然英特尔宁愿牺牲两至三倍的Xeon收入,也不会把Xeon的收入拱手相让。

深度学习加持,FPGA前景可人

根据英特尔的预测,他们计划从现在到2023年以接近直线增长率来提升FPGA的业务。对此我们总是抱有怀疑的态度。但FPGA业务随着时间的推移或多或少地在增长(比15年前增长约2.5倍)。

英特尔还预计,FPGA的营收在2014年到2023年之间将会再翻一倍。按照英特尔预测,从2014年到2023年间其复合年增长率为7%,其收入应该略低于预测的89亿美元。有趣的是,由于英特尔的预测并没有把来自数据计算中心(服务器,交换和网络)的FPGA收入份额纳入计划中,这将会发生很大变化。让我们分析一下:

如果Altera和Xilinx的市场份额没有发生改变,且假设Altera的收入在网络,计算和存储的部分保持不变,那么Altera这一部分的业务收入到2023年将会达到5.6亿美元左右。我们认为Intel这样的数据低估了数据中心在提供更有效和灵活计算所面对的压力。不给过我们认为FPGA的前景远远优于这个预测。也就是说,许多FPGA技术的支持者一直期待FPGA在数据中心中获得计算合法化的那天很快到来。

讽刺的是,英特尔本身作为FPGA的编程专家,硬件描述语言的使用者,以及知名的ASIC制造商,竟成为推动FPGA成为加速器优先选择的主要参与者。这样的加速器既能作为独立的离散计算元件,又可以作为混合 CPU-FPGA器件。

这也是为什么从2016年以来,我们看到所有关于Altera的新闻都是昭示FPGA将会有的大规模增的增长。所以至少在短期,他们除了为其他的FPGA制造商作嫁衣裳,几乎别无他法。

这次收购不仅是FPGA发展的里程碑,也是英特尔对FPGA巨大的潜力的承认。FPGA作为未来强大的计算加速器,不但影响主要企业的决策和市场趋势,而且加速企业中的工作负载,促进超大规模数据中心的内部搜索,以及提高高性能计算模拟的地位。

在跨越2017年之际,FPGA在应用程序中等级中新增了机器学习和深度学习,这给FPGA产业敲下了又一重锤。

为什么大家都青睐FPGA

首先,编程FPGA的软件栈已经演进了,尤其是在Altera的帮助下,FPGA增加了对OpenCL开发环境的支持。但不是每个人都是OpenCL的狂热粉丝。

先有Nvidia为其Tesla GPU加速器创建了自己的CUDA并行编程环境。再有SRC计算机公司不但早在2002年就为国防和智能领域提供混合CPU-FPGA系统,到了2016年年中,进一步将自己研发的Carte编程环境进入了商业市场,这个编程环境可以使C和Fortran程序自动转换为FPGA的硬件描述语言(HDL)。

另一个推动FPGA被采用的因素是随着芯片制造技术难以持续缩进,多核CPU性能的提高越来越艰难。 虽然CPU的性能获得了大跳跃,但主要用于扩展CPU的性能吞吐量,而不是单个CPU内核的个体性能。(我们知道架构增强是有难度的)。但是FPGA和GPU加速器的每瓦性能都有了令人信服的改进。

根据微软的运行测试,在执行深度学习算法的时候,CPU-FPGA和CPU-GPU混合计算在的每瓦性能也不相伯仲。GPU在运行中更热和有类似的每瓦性能表现,但是同时他们也带来了更强的工作能力。

提高了每瓦性能解析了为什么世界上最强大的超级计算机在20世纪90年代后期转移到并行集群,并且解析了为什么现在他们转向了混合机器,而不是英特尔的下一个以 CPU-GPU为混合主力的Xeon Phi的处理器“Knights Landing (简称KNL)。

在Altera FPGA协处理器和Xeon Phi处理器Knights Landing的帮助下,英特尔不但可以保持自己的在高端的竞争优势。并且在与Nvidia 、IBM和 Mellanox组成的Open power联盟竞争中继续领先。

英特尔坚信超大规模计算,云端和HPC市场的工作负载会快速成长。为促进其计算业务继续蓬勃发展。这情况下只能成为FPGA的卖家,否则别人就会抢去这唯一的出路。

但英特尔并不是这样跟大家说。他们说:“我们不认为这是一种防守战或者其他,”英特尔的CEO Brian Krzanich在Altera收购消息后的新闻发布会上说。

“我们认为物联网和数据中心都是庞大的。这些也是我们的客户想要构建的产品。我们30%的云端工作负载将在这些产品上,这是基于我们对如何看待趋势变化以及市场发展的预测。

这是用来证明这些工作负载能以一种或另一种方式转移到硅中。我们认为最好的做法是使用有业界最佳性能和成本优势的Xeon处理器和FPGA组合。这将给工业领域带来更好的产品和性能。而在IoT中,这将扩展到潜在市场对抗ASIC和ASSP;而在数据中心中,则会将workload转移到硅,推动云的快速增长。

Krzanich解释道:“你可以把FPGA想象成一堆gate,且能够随时编程。根据他们的想法,其算法会随着时间的推移和学习变得更聪明。FPGA可以用作多个领域的加速器,可以在进行加密的同时进行面部搜索,而且能在基本上在微秒内重新编程FPGA。这比大规模的单个定制部件的成本低得多且具备更高的灵活性。”

英特尔看到了更大的机会

英特尔看到了比这更大的机会。

Intel首席执行官Brian Krzanich在收购完成后宣布,到2020年,将有高达三分之一的云端服务提供商使用混合的CPU-FPGA服务器节点,这是一个令人震惊的消息。这也给从2014年底就开始瞄准的数据中心的Altera带来大约10亿美元的FPGA的机会。这数目大概是Nvidia目前流行的Tesla计算引擎营收的三倍。

在2014年初,英特尔展示了一个相同封装的Xeon-FPGA芯片原型,并且打算在2017年推出这个芯片。这是基于当时数据中心集团GM Diane Bryant提出的一个带有FPGA电路的Xeon设想不久之后推出的。

在宣布Altera交易的电话会议上,Krzanich没有说明退出这款Xeon-FPGA设备的时间,但是他表示英特尔将创建一个面向物联网市场的单die混合Atom-FPGA设备。英特尔正在考究在混合过渡阶段,是否需要为Atom和Altera FPGA做单一封装混合。

在2016年的初太平洋顶峰证券的电话会议中,英特尔的云端基础设施集团总经理Jason Waxman与研究分析师讨论关于英特尔数据中心业务时表示,FPGA已经成为了热门话题。

首先,虽然他没有指名道姓哪家厂商或者任何设备的规格,但是Waxman确定英特尔已经为某些客户提供了Xeon加FPGA的混合计算引擎样品。

在会议期间,Waxman更是畅谈了驱动英特尔收购Altera和插足可编程计算设备的原因。 英特尔显然希望让FPGA成为主流,即使这可能会在数据中心中蚕食Xeon的某些业务。 (我们认为,因为英特尔认为这种自相残杀是不可避免的,控制它的最好方法是使FPGA成为Xeon阵容的一部分。)

Waxman说:“我认为这项收购可能涉及许多事情,而且其中一些已经超越数据中心集团的范围。”

首先,一个潜在的核心业务往往是由制造领先优势驱动。在这方面我们能很好的掌控,而且这样做还有良好的协同作用。

再者,还有物联网“集团”对此也有很强的兴趣。

据我们所知,某些大规模工作负载的扩展(如机器学习,某些网络功能)吸引了越来越多的人关注。我们才意识到我们或者可以在性能方面取得一些突破,这将是一个把FPGA从数据中心应用程序中移植到更多适合的、广泛发展领域的良好机会。

但是在数据中心集团里的协作,FPGA不过是给CPU做个伴,帮助解决云端服务提供商和其他类型的大规模应用程序的问题。

英特尔认为对FPGA加速有优先和大量需求的关键应用包括机器学习,搜索引擎索引,加密和数据压缩。正如Waxman指出,这些往往是很有针对性的,且没有统一的使用案例。这就是Krzanich斩钉截铁说三分之一的云端服务提供商将在五年内使用FPGA加速的依据。

跨越FPGA的障碍

虽然每个人都抱怨编程FPGA有多难,但英特尔并不为此退缩。虽然没有透露太多相关计划的情况下,Waxman提出了一些方法让FPGA更容易被运用和理解。

Waxman说:“我们所拥有的是独一无二的,这是其他人不能给的。那就是我们能够了解这些工作负载和能够推动加速的能力。

“我们看到一条促进机器学习,加速存储加密,加速网络功能的捷径”,Waxman强调。这是基于我们对这些工作负载的深入了解,所以才让我们看到了这样的机会。

但现在FPGA还需要面对一些困难,因为现在人们是写RTL的。我们是一家写RTL的公司,所以我们可以解决这个问题。首先我们使它运作,然后我们可以降低进入的门槛。第三步是真正的规模经济学,而这全部是靠集成和制造的实力。

为了解决这些障碍,我们提供了一系列的方法。

X86+FPGA?

对于那些英特尔打算用FPGA来代替Xeons的猜测,Waxman表示这是一派胡言。

Waxman表示,对于那些对高速率和重复性有强烈需求的算法,具有先天优势的FPGA就是其最好的选择。而那些对延迟有极高需求的数据操作和转换,FPGA也是候选人。

考虑到Altera已经在一个SoC上集成了ARM处理器和FPGA,这很自然地会想到英特尔会试图用X86内核全面替换ARM内核来做类似的设备。但它看起来不像这会发生。

首先,在2016年第二季度英特尔财务声明会上,Krzanich承诺,英特尔将加强对目前使用Altera的ARM-FPGA芯片客户的支持。

Waxman进一步澄清:“我们的观点是会以某种形式把FPGA集成到Xeon里。我们已经公开宣布将会打造第一代使用这种单一封装的设备,但是我们将根据进展情况调整方向,甚至可能会在同一个die上实现。我们将根据客户的反馈了解什么是正确的组合。

顺便说一下,我仍然期待看到没有集成的系统,保持他们会做系统级的协同。我们不会将Xeon与FPGA以多种方式组合集成,反之我们会在市场上找到正确的目标和平衡。”

编程问题首当其冲

虽然Altera的工具集利用OpenCL编程模型获得应用程序代码,并将其转换为RTL(FPGA的原生语言),但是有趣的是,英特尔并不认为FPGA在数据中心的未来成功是基于OpenCL与RTL工具集成的改进或更广泛地采用OpenCL。

Waxman也强调地说:“这并不是以OpenCL为基础的。”虽然我们确实把OpenCL看作是进一步扩大FPGA应用范围的一个途径,但目前FPGA的初始云端部署可能由更具能力的公司完成,但他们并没有要求我们提供OpenCL。Waxman补充说。

Waxman在不能“自由”地谈论的情况下,暗示英特尔有计划使FPGA更容易编程。他表示Intel将会为程序员提供RTL库,方便他们调用在FPGA上部署的例程,并推动在其上执行应用程序的gate的形成,来实现应用程序例程的gate,而不是让他们自己创建例程。这有一定的意义,与Convey(现在是美光科技的一个部门)几年前用FPGA加速系统处理的方案一样。

Waxman说:“我认为有一个连续的加速。在一开始,你可能不知道你正在试图加速什么,只是做了一些尝试,因此在这个阶段加速,你想要的是一个更通用的目的。当你开始真正地想要加速的时候,你会想要更高效的,更低的功耗和更少的空间,这时你就会把焦点移到FPGA上。”

Waxman还引用了Microsoft在其“Catapult”系统上使用FPGA加速的方案来说明。

该系统采用其Open Cloud Server并添加FPGA夹层卡作为加速器。我们在3月份研究了这个项目,将这些加速器应用在Google上执行相同的图像识别训练算法,得出的结果显示,25瓦的FPGA器件相对于使用Nvidia Tesla K20 GPU加速器(235瓦特)的服务器,提高了更好的性能/瓦特。

正如我们所说,我们对于微软和Google发布的性能数据毫无疑问。但是对分立的GPU或FPGA执行应用性能和对自身的热配置文件进行测量都是不公平的。你必须在服务器节点级别上看到这一点。

如果意识到这点,得到FPGA辅助的Microsoft服务器在系统级只稍稍领先于用Tesla K20s的Google服务器。(这些只是我们基于每秒每瓦特图像处理性能的估计)。在这个对比中,Microsoft应该不考虑成本。而且坦白说,不同于什么都配备的Tesla GPU,微软开放云端服务器并没有使用Juice或Cooling。真正的评测怎么都会使用GPU夹层卡,同时还需要考虑热量,性能和价格等因素。

但是Waxman讨论的重点仍然是那个。“在某个时候,你真的很想要那个能给你惊喜,并且能做到更低功耗的方案。而这就是我们的FPGA方案所擅长的方面。”

云端业务

最后要考虑的是英特尔的云端业务。这些客户现在占据了他们数据中心集团收入的25%。

整体来看,他们的购买量每年增长约25%。预计从2016年开始,未来几年整体数据中心集团业务都将增长15%。让我们做一些计算。

如果英特尔的计划如期实施,他的数据中心集团2016年收益将会达到166亿美元。云端服务提供商(其中包括在The Next Platform上使用我们的语言的云端构建者和超大规模计算者)占大约41亿美元,其余归属于英特尔数据中心,销售数据大约为125亿美元。因此,英特尔数据中心的业务增长在12%左右(除云端外),是云端速率的一半。英特尔需要以任何方式来满足云端的增长和明显的FPGA需求,即使它只占用Xeon容量的一点点。对于英特尔来说是这个的选择比让GPU加速持续增长的方案要好。

编程方面可能是阻碍FPGA被广泛采用的一个主因(不像其他加速器,具有丰富的开发生态系统,如Nvidia GPU的CUDA)。这就驱动程序员去基于C语言去做扩展设计,或使用OpenCL,而不是用过去困扰FPGA开发的低级模型。但即使在应用的过程中有这么多里程碑,FPGA仍然不被主流青睐。我们将会探索解决编程问题的方法和机会。

虽然我们已经与这个相对较小的生态系统中的许多供应商(包括Altera和Xilinx,两个主要供应商)进行了交流,但按照FPGA长期研究员Russell Tessier所说,FPGA在更广阔的市场上大展拳脚的日子还在前面,新的发展意味着更广泛的采用。

他在马萨诸塞大学(他还在Altera工作,并且Mentor Graphics收购的虚拟机工程的创始人)研究了FPGA二十多年,他认为FPGA从科学项目到企业应用的形势正式缓变化。他认为其中的关键是来自于设计工具的改进,设计人员不断提高他们设计高水平。除此与外,工具vendor可以更好地引导芯片发展。他补充说,设备内的大量逻辑量意味着用户能够实现更多的功能,这使得FPGA对更多领域更广泛的吸引力。

Tessier说:“在过去几年里,FPGA的一个明显趋势就是这些设备更容易“程序化”。

Xilinx目前鼓励使用其Vivado产品的时候,用C语言进行设计。Altera还有一个已经开发的OpenCL环境。关键是两家公司都在试图创建一个环境,让用户可以使用更熟悉的编程(如C和OpenCL),而不必是使用RTL设计专家所擅长的Verilog或VHDL。虽然在过去几年里取得不错的成绩,但这仍然处于推进的阶段,不过这将有助于把更多的事情地移入主流。

其中一个对FPGA真正有利的因素就是如果将其和芯片搭配使用,建立一个快速的内部互联,它能解决memory和数据移动中的限制。这种优势就是吸引Intel收购Altera的主要诱因。另外,如果像英特尔和IBM这样的大公司能够积极推动FPGA的软件生态系统的建设,其应用市场将会迅速扩张。FPGA的主流化(至少现在没有GPU那么重要,)可能会更快地出现。

Tessier解释:“标准核心处理器集成的增加肯定是关键所在。过去的障碍是语言和工具,随着这些障碍越来越少,为芯片供应商新的合作机会打开了一扇门。由于这些和其他“主流化”趋势出现,不断做出的改变的FPGA的应用领域将继续增长。例如,金融服务商店是第一个使用FPGA进行财务趋势和股票选择分析的用户,但使用案例正在扩大。现在有更强的设备可以解决更大的问题。

更广泛的应用领域

除此之外,FPGA通过的其他新领域发现新用途,包括DNA测序,安全性,加密和一些关键的机器学习任务。

当然,我们希望FPGA变得强大,并“进入”世界上最大的云端和超大规模数据中心,Xilnix数据中心部门副总裁Hamant Dhulla对此表示强烈赞同。他在2016年初,他告诉The Next Platform, “异构计算已经不再是一种趋势,而是现实”,也就是在那个时候,微软推出了使用FPGA的Catapult案例(现在就很多或以后会很多),英特尔收购了Altera以及看到了更多FPGA将广泛应用在数据中心的声明。

从机器学习,高性能计算,数据分析等领域,FPGA在更多样化的应用领域中崭露头角。这些都与FPGA上嵌入了越来越多可用的on-chip存储器有关,这些都是FPGA制造商和潜在终端用户所期待的。 Dhulla表示,市场潜力足够大,让Xilinx能够调整其业务的方式。 过去几年,存储和网络主导了FPGA用户群。但未来五年内,计算端的需求将远远超过存储和网络,并都将沿着稳定的增长线继续发展。

在FPGA其他的热门领域(包括机器学习),它们的更像是一个带有GPU 的“协作”加速器。毫无疑问,对于许多机器学习工作负载的训练部分,GPU是主要的。因此为这里需要很多计算能力,就像HPC一样,其中power envelope tradeoff值得的。但是这些客户购买了数十或数百个GPU,而不是数十万个,庞大的加速器数目正使用在机器学习pipeline的推理部分,这就是市场所在。

正如我们指出的,Nvidia正在使用两个独立的GPU(用M4来训练,更低功耗的M4插入来削减服务器)来抵消这一点,但Dhulla认为FPGA仍然能够通过采用PCIe方法降低功耗,也可以嵌入超大规模数据中心。

他们的SDAccel编程环境通过提供对C,C ++和OpenCL的高级接口,使其更实用,但是推动超大规模和HPC采用的真正途径是通过最终用户示例。

当涉及到这些早期的用户,就像为下一代的FPGA的应用搭建了舞台,Dhulla指向像Edico Genome这样的公司。Xilinx目前还与其他领域的客户合作,包括石油和天然气和金融方面的历史计算方面。早期客户将Xilinx 的FPGA应用在机器学习,图像识别和分析以及安全性方面,这可以看作他们计算加速业务发展的第一步。

尽管双精度性能和总体价格不佳,FPGA的真正的大规模应用机会在于云端。因为FPGA可以提供GPU所不能提供的优势。如果FPGA供应商能够说服其最终用户,他们的加速器可以提供相当大的性能提升(在某些情况下他们会这样做)给关键的工作负载。提供一个通过带有其他加速器(例如CUDA)的complexity-wise的编程环境推进OpenCL开发,通过在云端中提供FPGA来解决价格问题。这可能是一个新的希望。

当然,这种希望来源于将FPGA部署到有超密集服务器云端架构内,而不是在单机的销售上。这种模式已经在FPGA的金融服务中发生。

正如他们GPU加速器“伙伴”围绕深度学习进行拉动,以便迅速得到更多的用户, FPGA设备在探索一个通过解决神经网络和深度学习的问题的方式找寻入侵市场的真正的机会。

新的应用程序主机意味着新的市场,随着云端应用的推广消除了一些管理开销,它可能意味着更广泛的采用。FPGA供应商努力推动它在一些关键的机器学习,神经网络和搜索方面的应用。FPGA在诸如自然语言处理,医学成像,深度数据检测等领域中的超大规模上下文中变得越来越普遍。

在过去一年里,FPGA的多种应用得到曝光,特别是在深度学习和神经网络,以及图像识别和自然语言处理等领域。例如,微软使用FPGA在1,632个节点上提供2倍的搜索服务,并采用创新的高吞吐量网络来支持Altera FPGA驱动的工作。中国的搜索引擎巨头百度(也是许多深度学习和神经网络任务GPU用户)正在用FPGA执行存储控制,其每天的数据吞吐量在100TB到1PB之间。

使用FPGA的大规模数据中心和其他领域的应用正在吸引人们对FPGA的单精度浮点性能的更多关注。

虽然一些案例使用(包括百度示例),将GPU作为计算加速器和FPGA用在存储端,但Altera,Xilnix,Nallatech和IBM的研究人员在OpenPower联盟展示了FPGA在云端深度学习的光明前景。

可以说现在属于FPGA的一个黄金时代。
 
 
来源:网络 查看全部
编者按:自Xilinx在1984年创造出FPGA以来,这种可编程逻辑器件凭借性能、上市时间、成本、稳定性和长期维护方面的优势,在通信、医疗、工控和安防等领域占有一席之地,在过去几年也有极高的增长率。而进入了最近两年,由于云计算、高性能计算和人工智能的繁荣,拥有先天优势的FPGA的关注度更是到达了前所未有的高度。本文从基础出发谈及FPGA的过去、现在与未来。

我们知道,相对于专业的ASIC,FPGA有上市时间和成本上的优势。另外,在大多数情况下,FPGA执行某些功能较之CPU上的软件操作更高效。这就是为什么我们认为它不但会运用在数据中心的服务器、交换器、存储层的各个角落,并且具有加速整个工作流程的功能。

然而我们不能过分乐观,尤其是在2015年12月,Intel以167亿美元收购了FPGA生产商Altera之后。

在2014年年底,当时还处于独立的Altera公司高层盯上了基于CPU+FPGA的数据中心并行计算的发展前景——这个当时价值大约10亿美元的市场。而并非数据中心里约2.5亿美元的CPU-GPU市场和直接应用CPU处理器的90亿美元市场。

Altera做出这个决定的原因在于他们认为这个组合较之另外两个方案,有编程的简便性和能效优势。人们对CPU非常熟悉,并发现寻找C程序员也不会太难。因此对大部分开发者来说,在执行运算任务的时候,持续使用这种方案不需要冒太大的风险,但是能源效率相对比较低,尤其是在密集的计算和固有的并行工作负载的情况底下。

至于CPU+GPU的方案,程序员并不是很熟悉,但是拥有很高的效率。

根据Altera的估计,使用OpenCL对混合CPU-FPGA系统进行编程比使用Nvidia的CUDA环境对于程序员来说更容易(某些方面肯定是有争议的),但用HDL来硬编程FPGA是相当困难的,因此需要OpenCL或者通过其他抽象层来将CPU中的负载转移到FPGA上。

Intel收购Altera改变FPGA格局

这个十亿美元的数据中心市场被Altera、Xilinx和其他FPGA供应商瓜分。在Intel于2015年6月收购了Altera之后,这个市场变得更加复杂。

在收购之前的2014年,Altera的19亿美元收入中,有16%来自于与数据中心相关的计算、网络和存储业务,其总值达到3.04亿美元。那些在这个领域深耕十几二十年的通信和无线设备系统制造商想要有更高的能源效率,更低的成本和更高的扩展性,这些都是FPGA所擅长的领域。另外有一点需要提一下,那就是在执行这些功能的时候,使用FPGA并不需要像使用CPU那样需要操作系统和相应的软件。这部分的营收占了Altera营收的44%,总额为8.35亿美元。

Altera另外的22%收入,即4.18亿美元,来自工业控制、军事设备和汽车制造等领域。他们面对相同的困境,因此选择FPGA来处理他们的一些工作负载。

其实早在2014年,英特尔看中了价值1150亿美元的各种类型的芯片潜在市场。当中可编辑逻辑设备(以FPGA为主)约占4%,ASIC占18%,其余为ASSP的大杂烩。

在可编辑逻辑设备的领域中,英特尔预估Altera占有48亿美元市场中的39%,Xilinx占有49%,剩下供应商则占据剩下的12%。

当时英特尔没有收购Altera的原因是因为FPGA业务的增长速度几乎与其数据中心集团(为服务器,存储和交换机制造商提供芯片,芯片组和主板)的速度一样快。

再者,英特尔没有这样做也是因为摩尔定律逐渐缓慢下来的脚步,给FPGA带来了日益增长的竞争威胁。

实际上,如果应用的话,在数据中心里不止安装一个FPGA、GPU或DSP加速器,但不需要安装多个Xeon CPU。由于英特尔不能继续为Xeons提供更多的核心和加速器,所以他们得出了将FPGA当做加速器的结论。

除非FPGA能在数据中心创造5亿美元的收益,或者几年后创造10亿美元或更多的收入。不然英特尔宁愿牺牲两至三倍的Xeon收入,也不会把Xeon的收入拱手相让。

深度学习加持,FPGA前景可人

根据英特尔的预测,他们计划从现在到2023年以接近直线增长率来提升FPGA的业务。对此我们总是抱有怀疑的态度。但FPGA业务随着时间的推移或多或少地在增长(比15年前增长约2.5倍)。

英特尔还预计,FPGA的营收在2014年到2023年之间将会再翻一倍。按照英特尔预测,从2014年到2023年间其复合年增长率为7%,其收入应该略低于预测的89亿美元。有趣的是,由于英特尔的预测并没有把来自数据计算中心(服务器,交换和网络)的FPGA收入份额纳入计划中,这将会发生很大变化。让我们分析一下:

如果Altera和Xilinx的市场份额没有发生改变,且假设Altera的收入在网络,计算和存储的部分保持不变,那么Altera这一部分的业务收入到2023年将会达到5.6亿美元左右。我们认为Intel这样的数据低估了数据中心在提供更有效和灵活计算所面对的压力。不给过我们认为FPGA的前景远远优于这个预测。也就是说,许多FPGA技术的支持者一直期待FPGA在数据中心中获得计算合法化的那天很快到来。

讽刺的是,英特尔本身作为FPGA的编程专家,硬件描述语言的使用者,以及知名的ASIC制造商,竟成为推动FPGA成为加速器优先选择的主要参与者。这样的加速器既能作为独立的离散计算元件,又可以作为混合 CPU-FPGA器件。

这也是为什么从2016年以来,我们看到所有关于Altera的新闻都是昭示FPGA将会有的大规模增的增长。所以至少在短期,他们除了为其他的FPGA制造商作嫁衣裳,几乎别无他法。

这次收购不仅是FPGA发展的里程碑,也是英特尔对FPGA巨大的潜力的承认。FPGA作为未来强大的计算加速器,不但影响主要企业的决策和市场趋势,而且加速企业中的工作负载,促进超大规模数据中心的内部搜索,以及提高高性能计算模拟的地位。

在跨越2017年之际,FPGA在应用程序中等级中新增了机器学习和深度学习,这给FPGA产业敲下了又一重锤。

为什么大家都青睐FPGA

首先,编程FPGA的软件栈已经演进了,尤其是在Altera的帮助下,FPGA增加了对OpenCL开发环境的支持。但不是每个人都是OpenCL的狂热粉丝。

先有Nvidia为其Tesla GPU加速器创建了自己的CUDA并行编程环境。再有SRC计算机公司不但早在2002年就为国防和智能领域提供混合CPU-FPGA系统,到了2016年年中,进一步将自己研发的Carte编程环境进入了商业市场,这个编程环境可以使C和Fortran程序自动转换为FPGA的硬件描述语言(HDL)。

另一个推动FPGA被采用的因素是随着芯片制造技术难以持续缩进,多核CPU性能的提高越来越艰难。 虽然CPU的性能获得了大跳跃,但主要用于扩展CPU的性能吞吐量,而不是单个CPU内核的个体性能。(我们知道架构增强是有难度的)。但是FPGA和GPU加速器的每瓦性能都有了令人信服的改进。

根据微软的运行测试,在执行深度学习算法的时候,CPU-FPGA和CPU-GPU混合计算在的每瓦性能也不相伯仲。GPU在运行中更热和有类似的每瓦性能表现,但是同时他们也带来了更强的工作能力。

提高了每瓦性能解析了为什么世界上最强大的超级计算机在20世纪90年代后期转移到并行集群,并且解析了为什么现在他们转向了混合机器,而不是英特尔的下一个以 CPU-GPU为混合主力的Xeon Phi的处理器“Knights Landing (简称KNL)。

在Altera FPGA协处理器和Xeon Phi处理器Knights Landing的帮助下,英特尔不但可以保持自己的在高端的竞争优势。并且在与Nvidia 、IBM和 Mellanox组成的Open power联盟竞争中继续领先。

英特尔坚信超大规模计算,云端和HPC市场的工作负载会快速成长。为促进其计算业务继续蓬勃发展。这情况下只能成为FPGA的卖家,否则别人就会抢去这唯一的出路。

但英特尔并不是这样跟大家说。他们说:“我们不认为这是一种防守战或者其他,”英特尔的CEO Brian Krzanich在Altera收购消息后的新闻发布会上说。

“我们认为物联网和数据中心都是庞大的。这些也是我们的客户想要构建的产品。我们30%的云端工作负载将在这些产品上,这是基于我们对如何看待趋势变化以及市场发展的预测。

这是用来证明这些工作负载能以一种或另一种方式转移到硅中。我们认为最好的做法是使用有业界最佳性能和成本优势的Xeon处理器和FPGA组合。这将给工业领域带来更好的产品和性能。而在IoT中,这将扩展到潜在市场对抗ASIC和ASSP;而在数据中心中,则会将workload转移到硅,推动云的快速增长。

Krzanich解释道:“你可以把FPGA想象成一堆gate,且能够随时编程。根据他们的想法,其算法会随着时间的推移和学习变得更聪明。FPGA可以用作多个领域的加速器,可以在进行加密的同时进行面部搜索,而且能在基本上在微秒内重新编程FPGA。这比大规模的单个定制部件的成本低得多且具备更高的灵活性。”

英特尔看到了更大的机会

英特尔看到了比这更大的机会。

Intel首席执行官Brian Krzanich在收购完成后宣布,到2020年,将有高达三分之一的云端服务提供商使用混合的CPU-FPGA服务器节点,这是一个令人震惊的消息。这也给从2014年底就开始瞄准的数据中心的Altera带来大约10亿美元的FPGA的机会。这数目大概是Nvidia目前流行的Tesla计算引擎营收的三倍。

在2014年初,英特尔展示了一个相同封装的Xeon-FPGA芯片原型,并且打算在2017年推出这个芯片。这是基于当时数据中心集团GM Diane Bryant提出的一个带有FPGA电路的Xeon设想不久之后推出的。

在宣布Altera交易的电话会议上,Krzanich没有说明退出这款Xeon-FPGA设备的时间,但是他表示英特尔将创建一个面向物联网市场的单die混合Atom-FPGA设备。英特尔正在考究在混合过渡阶段,是否需要为Atom和Altera FPGA做单一封装混合。

在2016年的初太平洋顶峰证券的电话会议中,英特尔的云端基础设施集团总经理Jason Waxman与研究分析师讨论关于英特尔数据中心业务时表示,FPGA已经成为了热门话题。

首先,虽然他没有指名道姓哪家厂商或者任何设备的规格,但是Waxman确定英特尔已经为某些客户提供了Xeon加FPGA的混合计算引擎样品。

在会议期间,Waxman更是畅谈了驱动英特尔收购Altera和插足可编程计算设备的原因。 英特尔显然希望让FPGA成为主流,即使这可能会在数据中心中蚕食Xeon的某些业务。 (我们认为,因为英特尔认为这种自相残杀是不可避免的,控制它的最好方法是使FPGA成为Xeon阵容的一部分。)

Waxman说:“我认为这项收购可能涉及许多事情,而且其中一些已经超越数据中心集团的范围。”

首先,一个潜在的核心业务往往是由制造领先优势驱动。在这方面我们能很好的掌控,而且这样做还有良好的协同作用。

再者,还有物联网“集团”对此也有很强的兴趣。

据我们所知,某些大规模工作负载的扩展(如机器学习,某些网络功能)吸引了越来越多的人关注。我们才意识到我们或者可以在性能方面取得一些突破,这将是一个把FPGA从数据中心应用程序中移植到更多适合的、广泛发展领域的良好机会。

但是在数据中心集团里的协作,FPGA不过是给CPU做个伴,帮助解决云端服务提供商和其他类型的大规模应用程序的问题。

英特尔认为对FPGA加速有优先和大量需求的关键应用包括机器学习,搜索引擎索引,加密和数据压缩。正如Waxman指出,这些往往是很有针对性的,且没有统一的使用案例。这就是Krzanich斩钉截铁说三分之一的云端服务提供商将在五年内使用FPGA加速的依据。

跨越FPGA的障碍

虽然每个人都抱怨编程FPGA有多难,但英特尔并不为此退缩。虽然没有透露太多相关计划的情况下,Waxman提出了一些方法让FPGA更容易被运用和理解。

Waxman说:“我们所拥有的是独一无二的,这是其他人不能给的。那就是我们能够了解这些工作负载和能够推动加速的能力。

“我们看到一条促进机器学习,加速存储加密,加速网络功能的捷径”,Waxman强调。这是基于我们对这些工作负载的深入了解,所以才让我们看到了这样的机会。

但现在FPGA还需要面对一些困难,因为现在人们是写RTL的。我们是一家写RTL的公司,所以我们可以解决这个问题。首先我们使它运作,然后我们可以降低进入的门槛。第三步是真正的规模经济学,而这全部是靠集成和制造的实力。

为了解决这些障碍,我们提供了一系列的方法。

X86+FPGA?

对于那些英特尔打算用FPGA来代替Xeons的猜测,Waxman表示这是一派胡言。

Waxman表示,对于那些对高速率和重复性有强烈需求的算法,具有先天优势的FPGA就是其最好的选择。而那些对延迟有极高需求的数据操作和转换,FPGA也是候选人。

考虑到Altera已经在一个SoC上集成了ARM处理器和FPGA,这很自然地会想到英特尔会试图用X86内核全面替换ARM内核来做类似的设备。但它看起来不像这会发生。

首先,在2016年第二季度英特尔财务声明会上,Krzanich承诺,英特尔将加强对目前使用Altera的ARM-FPGA芯片客户的支持。

Waxman进一步澄清:“我们的观点是会以某种形式把FPGA集成到Xeon里。我们已经公开宣布将会打造第一代使用这种单一封装的设备,但是我们将根据进展情况调整方向,甚至可能会在同一个die上实现。我们将根据客户的反馈了解什么是正确的组合。

顺便说一下,我仍然期待看到没有集成的系统,保持他们会做系统级的协同。我们不会将Xeon与FPGA以多种方式组合集成,反之我们会在市场上找到正确的目标和平衡。”

编程问题首当其冲

虽然Altera的工具集利用OpenCL编程模型获得应用程序代码,并将其转换为RTL(FPGA的原生语言),但是有趣的是,英特尔并不认为FPGA在数据中心的未来成功是基于OpenCL与RTL工具集成的改进或更广泛地采用OpenCL。

Waxman也强调地说:“这并不是以OpenCL为基础的。”虽然我们确实把OpenCL看作是进一步扩大FPGA应用范围的一个途径,但目前FPGA的初始云端部署可能由更具能力的公司完成,但他们并没有要求我们提供OpenCL。Waxman补充说。

Waxman在不能“自由”地谈论的情况下,暗示英特尔有计划使FPGA更容易编程。他表示Intel将会为程序员提供RTL库,方便他们调用在FPGA上部署的例程,并推动在其上执行应用程序的gate的形成,来实现应用程序例程的gate,而不是让他们自己创建例程。这有一定的意义,与Convey(现在是美光科技的一个部门)几年前用FPGA加速系统处理的方案一样。

Waxman说:“我认为有一个连续的加速。在一开始,你可能不知道你正在试图加速什么,只是做了一些尝试,因此在这个阶段加速,你想要的是一个更通用的目的。当你开始真正地想要加速的时候,你会想要更高效的,更低的功耗和更少的空间,这时你就会把焦点移到FPGA上。”

Waxman还引用了Microsoft在其“Catapult”系统上使用FPGA加速的方案来说明。

该系统采用其Open Cloud Server并添加FPGA夹层卡作为加速器。我们在3月份研究了这个项目,将这些加速器应用在Google上执行相同的图像识别训练算法,得出的结果显示,25瓦的FPGA器件相对于使用Nvidia Tesla K20 GPU加速器(235瓦特)的服务器,提高了更好的性能/瓦特。

正如我们所说,我们对于微软和Google发布的性能数据毫无疑问。但是对分立的GPU或FPGA执行应用性能和对自身的热配置文件进行测量都是不公平的。你必须在服务器节点级别上看到这一点。

如果意识到这点,得到FPGA辅助的Microsoft服务器在系统级只稍稍领先于用Tesla K20s的Google服务器。(这些只是我们基于每秒每瓦特图像处理性能的估计)。在这个对比中,Microsoft应该不考虑成本。而且坦白说,不同于什么都配备的Tesla GPU,微软开放云端服务器并没有使用Juice或Cooling。真正的评测怎么都会使用GPU夹层卡,同时还需要考虑热量,性能和价格等因素。

但是Waxman讨论的重点仍然是那个。“在某个时候,你真的很想要那个能给你惊喜,并且能做到更低功耗的方案。而这就是我们的FPGA方案所擅长的方面。”

云端业务

最后要考虑的是英特尔的云端业务。这些客户现在占据了他们数据中心集团收入的25%。

整体来看,他们的购买量每年增长约25%。预计从2016年开始,未来几年整体数据中心集团业务都将增长15%。让我们做一些计算。

如果英特尔的计划如期实施,他的数据中心集团2016年收益将会达到166亿美元。云端服务提供商(其中包括在The Next Platform上使用我们的语言的云端构建者和超大规模计算者)占大约41亿美元,其余归属于英特尔数据中心,销售数据大约为125亿美元。因此,英特尔数据中心的业务增长在12%左右(除云端外),是云端速率的一半。英特尔需要以任何方式来满足云端的增长和明显的FPGA需求,即使它只占用Xeon容量的一点点。对于英特尔来说是这个的选择比让GPU加速持续增长的方案要好。

编程方面可能是阻碍FPGA被广泛采用的一个主因(不像其他加速器,具有丰富的开发生态系统,如Nvidia GPU的CUDA)。这就驱动程序员去基于C语言去做扩展设计,或使用OpenCL,而不是用过去困扰FPGA开发的低级模型。但即使在应用的过程中有这么多里程碑,FPGA仍然不被主流青睐。我们将会探索解决编程问题的方法和机会。

虽然我们已经与这个相对较小的生态系统中的许多供应商(包括Altera和Xilinx,两个主要供应商)进行了交流,但按照FPGA长期研究员Russell Tessier所说,FPGA在更广阔的市场上大展拳脚的日子还在前面,新的发展意味着更广泛的采用。

他在马萨诸塞大学(他还在Altera工作,并且Mentor Graphics收购的虚拟机工程的创始人)研究了FPGA二十多年,他认为FPGA从科学项目到企业应用的形势正式缓变化。他认为其中的关键是来自于设计工具的改进,设计人员不断提高他们设计高水平。除此与外,工具vendor可以更好地引导芯片发展。他补充说,设备内的大量逻辑量意味着用户能够实现更多的功能,这使得FPGA对更多领域更广泛的吸引力。

Tessier说:“在过去几年里,FPGA的一个明显趋势就是这些设备更容易“程序化”。

Xilinx目前鼓励使用其Vivado产品的时候,用C语言进行设计。Altera还有一个已经开发的OpenCL环境。关键是两家公司都在试图创建一个环境,让用户可以使用更熟悉的编程(如C和OpenCL),而不必是使用RTL设计专家所擅长的Verilog或VHDL。虽然在过去几年里取得不错的成绩,但这仍然处于推进的阶段,不过这将有助于把更多的事情地移入主流。

其中一个对FPGA真正有利的因素就是如果将其和芯片搭配使用,建立一个快速的内部互联,它能解决memory和数据移动中的限制。这种优势就是吸引Intel收购Altera的主要诱因。另外,如果像英特尔和IBM这样的大公司能够积极推动FPGA的软件生态系统的建设,其应用市场将会迅速扩张。FPGA的主流化(至少现在没有GPU那么重要,)可能会更快地出现。

Tessier解释:“标准核心处理器集成的增加肯定是关键所在。过去的障碍是语言和工具,随着这些障碍越来越少,为芯片供应商新的合作机会打开了一扇门。由于这些和其他“主流化”趋势出现,不断做出的改变的FPGA的应用领域将继续增长。例如,金融服务商店是第一个使用FPGA进行财务趋势和股票选择分析的用户,但使用案例正在扩大。现在有更强的设备可以解决更大的问题。

更广泛的应用领域

除此之外,FPGA通过的其他新领域发现新用途,包括DNA测序,安全性,加密和一些关键的机器学习任务。

当然,我们希望FPGA变得强大,并“进入”世界上最大的云端和超大规模数据中心,Xilnix数据中心部门副总裁Hamant Dhulla对此表示强烈赞同。他在2016年初,他告诉The Next Platform, “异构计算已经不再是一种趋势,而是现实”,也就是在那个时候,微软推出了使用FPGA的Catapult案例(现在就很多或以后会很多),英特尔收购了Altera以及看到了更多FPGA将广泛应用在数据中心的声明。

从机器学习,高性能计算,数据分析等领域,FPGA在更多样化的应用领域中崭露头角。这些都与FPGA上嵌入了越来越多可用的on-chip存储器有关,这些都是FPGA制造商和潜在终端用户所期待的。 Dhulla表示,市场潜力足够大,让Xilinx能够调整其业务的方式。 过去几年,存储和网络主导了FPGA用户群。但未来五年内,计算端的需求将远远超过存储和网络,并都将沿着稳定的增长线继续发展。

在FPGA其他的热门领域(包括机器学习),它们的更像是一个带有GPU 的“协作”加速器。毫无疑问,对于许多机器学习工作负载的训练部分,GPU是主要的。因此为这里需要很多计算能力,就像HPC一样,其中power envelope tradeoff值得的。但是这些客户购买了数十或数百个GPU,而不是数十万个,庞大的加速器数目正使用在机器学习pipeline的推理部分,这就是市场所在。

正如我们指出的,Nvidia正在使用两个独立的GPU(用M4来训练,更低功耗的M4插入来削减服务器)来抵消这一点,但Dhulla认为FPGA仍然能够通过采用PCIe方法降低功耗,也可以嵌入超大规模数据中心。

他们的SDAccel编程环境通过提供对C,C ++和OpenCL的高级接口,使其更实用,但是推动超大规模和HPC采用的真正途径是通过最终用户示例。

当涉及到这些早期的用户,就像为下一代的FPGA的应用搭建了舞台,Dhulla指向像Edico Genome这样的公司。Xilinx目前还与其他领域的客户合作,包括石油和天然气和金融方面的历史计算方面。早期客户将Xilinx 的FPGA应用在机器学习,图像识别和分析以及安全性方面,这可以看作他们计算加速业务发展的第一步。

尽管双精度性能和总体价格不佳,FPGA的真正的大规模应用机会在于云端。因为FPGA可以提供GPU所不能提供的优势。如果FPGA供应商能够说服其最终用户,他们的加速器可以提供相当大的性能提升(在某些情况下他们会这样做)给关键的工作负载。提供一个通过带有其他加速器(例如CUDA)的complexity-wise的编程环境推进OpenCL开发,通过在云端中提供FPGA来解决价格问题。这可能是一个新的希望。

当然,这种希望来源于将FPGA部署到有超密集服务器云端架构内,而不是在单机的销售上。这种模式已经在FPGA的金融服务中发生。

正如他们GPU加速器“伙伴”围绕深度学习进行拉动,以便迅速得到更多的用户, FPGA设备在探索一个通过解决神经网络和深度学习的问题的方式找寻入侵市场的真正的机会。

新的应用程序主机意味着新的市场,随着云端应用的推广消除了一些管理开销,它可能意味着更广泛的采用。FPGA供应商努力推动它在一些关键的机器学习,神经网络和搜索方面的应用。FPGA在诸如自然语言处理,医学成像,深度数据检测等领域中的超大规模上下文中变得越来越普遍。

在过去一年里,FPGA的多种应用得到曝光,特别是在深度学习和神经网络,以及图像识别和自然语言处理等领域。例如,微软使用FPGA在1,632个节点上提供2倍的搜索服务,并采用创新的高吞吐量网络来支持Altera FPGA驱动的工作。中国的搜索引擎巨头百度(也是许多深度学习和神经网络任务GPU用户)正在用FPGA执行存储控制,其每天的数据吞吐量在100TB到1PB之间。

使用FPGA的大规模数据中心和其他领域的应用正在吸引人们对FPGA的单精度浮点性能的更多关注。

虽然一些案例使用(包括百度示例),将GPU作为计算加速器和FPGA用在存储端,但Altera,Xilnix,Nallatech和IBM的研究人员在OpenPower联盟展示了FPGA在云端深度学习的光明前景。

可以说现在属于FPGA的一个黄金时代。
 
 
来源:网络
717 浏览

《连线》长文揭秘微软 Project Catapult:人工智能时代押注FPGA

机械自动化类 将计就计 2016-09-27 15:58 发表了文章 来自相关话题

2012 年 12 月的某一天,Doug Burger 站在 Steve Ballmer 面前,尝试着预测未来。

Ballmer,微软的那个大嗓门 CEO,坐在微软在西雅图郊外的蓝天研发实验室(blue-sky R&D lab)基地 99 号楼一层的演讲室。桌子排成 U 型,Ballmer 被他的高级助围住,开着笔记本电脑。Burger,一位四年前加入微软的计算机芯片研究员,正在为高管们描绘一个新想法,Project Catapult。




Doug Burger

Burger 解释道,技术世界正在迈向一个新轨道。未来将是少数几家互联网巨头运作着几个巨型互联网服务,这些服务非常复杂并与之前的服务非常不同,所以这几家公司不得不打造全新的架构来运行它们。不仅仅是驱动这些服务的软件,巨头们还得造出硬件,包括相应的服务器和网络设备。Project Catapult 将会为微软所有的服务器——几百万台——提供专用芯片,这些芯片可以用来为特定的任务重新编程。

但是还没等待 Burger 介绍到这个芯片时,Ballmer 突然抬起了头。Ballmer 刚到微软研究时,就说他希望看到研发中心有新进展,而不是一个战略简报。「他开始拷问我,」Burger 说。微软花了 40 年建立起像 Windows、Word 和 Excel 这样的 PC 软件,然而它才发现自己只是刚刚涉足互联网。微软还没有编程计算机芯片所必须的工具和工程师,这是一项困难、耗时、专业且有些奇怪的任务。微软编程计算机芯片听起来就像是可口可乐要做鱼翅汤了。





Project Catapult 目前的样子

Burger,着装整齐,轻微秃头,能冷静的分析问题,就像很多优秀的工程师一样。他转过身,告诉 Ballmer 像谷歌和亚马逊这样的公司一直正在超这个方向发展。他说世界上的硬件制造商不会提供微软需要用来运行线上服务的硬件。他说,如果微软不打造自己的硬件,就会落后。Ballmer 听完后并不买账。但是过了一会儿,另一个声音参与到这场讨论中来。这个声音来自陆奇,他管理者 Bing,微软的搜索引擎。两年来,陆奇的团队一直在和 Burger 讨论可再编程芯片的事情。Project Catapult 不仅仅是一种可能,陆说:他的团队已经开始着手做了。

今天,微软已经有了现场可编程门阵列(field programmable gate arrays,FPGA),Burger 和陆都相信这个可编程芯片可以改变世界。FPGA 目前已支持 Bing,未来几周,它们将会驱动基于深度神经网络——以人类大脑结构为基础建模的人工智能——的新搜索算法,在执行这个人工智能的几个命令时,速度比普通芯片快上几个数量级。有了它,你的计算机屏幕只会空屏 23 毫秒而不是 4 秒。





Catapult 团队成员 Adrian Caulfield, Eric Chung, Doug Burger, 和 Andrew Putnam

Bing 不只是要追赶 Google。Project Catapult 暗示着改变未来全球系统运作的方式。从美国的亚马逊到中国的百度,所有的互联网巨头都在用硅替代他们的标准服务器芯片——中央处理单元,也叫 CPU,这些硅制成的芯片可以让它们跟上人工智能的快速变化。微软现在每年花在硬件上的钱在 50 亿到 60 亿美元,以维持其线上帝国的运转。所以这样的工作「再也不仅仅是研究了,」Satya Nadella 说道,他在 2014 年接任了微软 CEO 一职。「它有极为重要的优先性。」也就是 Burger 当年在 99 号大楼中要解释的,并让他和他的团队耗费多年,克服种种挫折,不断重新设计,与体制对抗,最终实现的一种新的全球超级计算机。



一种全新的古老计算机芯片

2010 年 12 月,微软研究院 Andrew Putnam 离开西雅图度假,回到了位于科罗拉多斯普林斯的家中。当时正是圣诞节前两天,他还没开始大采购。正在他开车去商场的路上,电话突然响了,另一端正是他的老板 Burger。Burger 当时打算节后面见 Bing 高管,但他需要一份能在 FPGA 上运行 Bing 机器学习算法的硬件设计。

Putnam 找到最近的星巴克开始规划设计,这大约花了他 5 个小时,所以他仍有时间去购物。

当时 Burger 45 岁,Putnam 41 岁,两人过去都是学者。Burger 曾在特克萨斯大学奥斯汀分校担任计算机科学教授,他在那里工作了 9 年,专攻微处理器,还设计了一款名为 EDGE 的新型芯片。

Putnam 曾在华盛顿大学工作 5 年,担任研究员并主要从事 FPGA 研究。当时可编程芯片已经存在了好几十年,但它们大多被当作处理器的一部分。2009 年 Burger 将 Putnam 挖到微软,两人开始探索用可编程芯片提升线上服务速度的方法。





Project Catapult V1,即 Doug Burger 团队曾在微软西雅图数据中心测试过的版本。

微软的搜索引擎是一个依靠成千上万台机器运行的在线服务。每台机器都需要靠 CPU 驱动,尽管英特尔等公司不断改进它们,这些芯片还是跟不上软件更新的脚步。很大程度上,是因为人工智能浪潮的来临。

Bing 搜索等服务已经超出了摩尔定律预言的处理器能力,即每 18 个月处理器上晶体管的数量翻一倍。事实还证明增加 CPU 并不能解决问题。

但同时,为新出现的需求制造专用芯片,成本是非常昂贵的。恰好 FPGA 能弥补这个不足,Bing 决定让工程师制造运行更快、比流水线生产的通用 CPU 能耗更少、同时可定制的芯片,从而解决不断更新的技术和商业模式变化所产生的种种难题。

圣诞节后的会面中,Burger 为必应高管们拿出了一套用 FPGA 提升搜索速度,同时功耗较低的方法。高管们不置可否。在接下来的几个月中,Burger 团队根据 Putnam 圣诞节时画出的草图构建了原型,证明其运行必应的机器学习算法时速度可以提升 100 倍。「那时他们才表现出浓厚兴趣」,当时的团队成员、现瑞士洛桑联邦理工学院院长 Jim Larus 告诉我们,「但同样也是艰难时光的开始。」

原型是一个使用六个 FPGA 的专用盒,由一整个机架的服务器共享。如果盒子吱吱作响,表明它们需要更多 FPGA——考虑到机器学习模型的复杂性需求会越来越大——这些机器就会停止工作。必应的工程师非常厌恶这件事。「但他们没错,」Larus 说。

正是这个原型吸引了陆奇。他给了 Burger 足够的资金,可以在 1600 台服务器上装配 FPGA 并进行测试。在中国和台湾硬件制造商的帮助下,团队花费半年时间制造出了硬件产品,并在微软数据中心的一组机架上进行测试。但一天晚上灭火系统出现了问题。他们花了三天时间修复机架——它仍能工作。

在 2013 年到 2014 年的几个月中,测试显示必应「决策树」机器学习算法在新芯片的帮助下,可以提升 40 倍运行速度。2014 年夏天,微软公开表示要很快要将这些硬件应用到必应实时数据中心。但是在那之后,微软暂停了。




不只是 Bing 搜索

Bing 在前几年一直是微软线上发展的核心,但到 2015 年,公司有了其他两个主要的在线服务:商务应用套件 Office 365 和云计算服务 Microsoft Azure。和其他竞争者一样,微软高层意识到运营一个不断成长的在线帝国的唯一有效方法是在同样的基础上运营所有的服务。如果 Project Catapult 将转变微软的话,那 Bing 也不能被排除在外。它也要在 Azure 和 Office 365 内部工作。

问题是,Azure 高官们不在乎加速机器学习,他们需要联络的帮助。Azure 数据中心的流量跳动增长的太快,服务的 CPU 不能跟上脚步。最终,Azure 首席架构师 Mark Russinovich 这样一批人看到了 Catapult 能帮助解决这些问题,但不是为 Bing 设计的那种解决问题的方式。他的团队需要可编程的芯片,将每个服务器连接到主要网络,如此他们在数据流量到达服务器之前就能开始处理了。





FPGA 架构的第一代原型是一个被一架服务器共享的单个盒子(Version 0)。然后该团队转向为每个服务器设计自己的 FPGA(Version 1)。然后他们将芯片放到服务器和整体网络之间。

所以,研究 FPGA 的这伙人需要重新开发硬件。在第三代原型中,芯片位于每个服务器的边缘,直接插入到网络,但仍旧创造任何机器都可接入的 FPGA 池。这开始看起来是 Office 365 可用的东西了。最终,Project Catapult 准备好上线了。

Larus 将许多重新设计描述为噩梦,这不是因为他们需要建立新的硬件,而是他们每次都需要重新编程 FPGA。他说,「这非常的糟糕,要比编程软件都糟糕,更难写、难纠正。」这是一项非常繁琐的工作,像是改变芯片上的小逻辑门。

既然最终的硬件已经有了,微软还要面对每一次重新编程这些芯片时都会遇到的同样挑战。「这是一个看世界思考世界的全新视角,」Larus 说。但是 Catapult 硬件的成本只占了服务器中所有其他的配件总成本的 30%,需要的运转能量也只有不到 10%,但其却带来了 2 倍原先的处理速度。

这个布局非常大。微软 Azure 用这些可编程的芯片来路由、加密和压缩数据。Bing 占据着世界上 20% 的桌面搜索市场和 6% 的移动手机市场,在 Bing 上,这个芯片能帮助 Bing 适应新品种的人工智能:深度神经网络。而且据微软的一名员工说,Office365 正在尝试在加密和压缩上使用 FPGA 以及机器学习——这一举措将惠及其 2310 万用户。最终,Burger 说道,这些会驱动所有的微软服务。
 



这真的起作用吗?


Peter Lee 说,「这仍然使我迷惑。我们让公司做这些事。」Lee 监管着微软内部一个被称为 NExT 的组织,NExT 是 New Experience and Technologies 的缩写。在 Nadella 接任 CEO 之后,他个人推动了 NExT 的创建,代表了从 Ballmer 十年统治的重大转变。该组织的目标是培养能在近期实现的研究,而不是远期研究,这能改变微软如今的进程,而非多少年后的进程,就像增强现实设备 HoloLens 一样。当然也包括 Project Catapult。Burger 说,「起跳点就在前面,来自于非 CPU 技术。」





Peter Lee

所有的互联网巨头,包括微软,如今都在用图像处理单元增补 CPU,GPU 可为游戏和其他高度视觉化的应用渲染图像。例如,当这些公司训练神经网络识别图像中的人脸时(输入百万张图片),GPU 可处理很多的计算。像微软这样的巨头也使用可替代的硅片在训练后执行神经网络。而且,即使定制芯片异常昂贵,谷歌在设计执行神经网络的处理器上也走得相当远了,也就是他们设计的 TPU。

在 TPU 上,谷歌为追求速度牺牲了长期灵活性。也就是说,在识别进入智能手机的指令时,TPU 想要消除所有的延迟。但问题是如果神经网络模型改变的话,谷歌必须要建立新的芯片。但在 FPGA 上,微软在打一场长久战。尽管在速度上比不上谷歌的定制芯片,微软可在需要的时候重新编程芯片。微软不只能为新的人工智能模型编程,也能为任何任务重新编程。而且这些设计在接下来几年如果有用,微软能一直采用这种 FPGA 的程序,并建立专用芯片。





该硬件的新版本 V2,是一张能插入微软任一服务器终端的芯片,并能直接连接到网络。

微软的服务很广,也使用如此多的 FPGA,如今他们正在改变全球芯片市场。FPGA 出自一家名为 Altera 的公司,英特尔副总裁 Diane Bryant 告诉我为什么英特尔会在去年夏天收购 Altera,这是一笔价值 167 亿美元的收购,也是芯片制造商史上最大的一笔收购。她说,到 2020 年,所有主要的云计算公司的 1/3 的服务器将使用 FPGA。

这是科技名词缩写之间的纠缠:GPU、CPU、TPU、FPGA。但它们也是将成为关键的代名词。在云计算上,微软、谷歌、亚马逊这些公司驱动着世界上很大一部分技术,以至于这些可选择的芯片将驱动大范围的 app 和在线服务。Lee 说,直到 2030 年,Project Catapult 将继续扩展微软全球超级计算机的能力。在这之后,他说,微软就能转向到量子计算了。

之后当我们谈到手机时,Nadella 也告诉了我同样的事。他们读取自同样的微软蓝图,正在触摸量子技术驱动的超快计算机的未来。想象建立量子机器多么的难,就像白日梦一样。但在几年前,Project Catapult 也如同白日梦一样。
 
 
 
 
 
文章来源于机器之心智造家平台提供 查看全部
2012 年 12 月的某一天,Doug Burger 站在 Steve Ballmer 面前,尝试着预测未来。

Ballmer,微软的那个大嗓门 CEO,坐在微软在西雅图郊外的蓝天研发实验室(blue-sky R&D lab)基地 99 号楼一层的演讲室。桌子排成 U 型,Ballmer 被他的高级助围住,开着笔记本电脑。Burger,一位四年前加入微软的计算机芯片研究员,正在为高管们描绘一个新想法,Project Catapult。
。11.JPG

Doug Burger

Burger 解释道,技术世界正在迈向一个新轨道。未来将是少数几家互联网巨头运作着几个巨型互联网服务,这些服务非常复杂并与之前的服务非常不同,所以这几家公司不得不打造全新的架构来运行它们。不仅仅是驱动这些服务的软件,巨头们还得造出硬件,包括相应的服务器和网络设备。Project Catapult 将会为微软所有的服务器——几百万台——提供专用芯片,这些芯片可以用来为特定的任务重新编程。

但是还没等待 Burger 介绍到这个芯片时,Ballmer 突然抬起了头。Ballmer 刚到微软研究时,就说他希望看到研发中心有新进展,而不是一个战略简报。「他开始拷问我,」Burger 说。微软花了 40 年建立起像 Windows、Word 和 Excel 这样的 PC 软件,然而它才发现自己只是刚刚涉足互联网。微软还没有编程计算机芯片所必须的工具和工程师,这是一项困难、耗时、专业且有些奇怪的任务。微软编程计算机芯片听起来就像是可口可乐要做鱼翅汤了。

1.2_.jpg

Project Catapult 目前的样子

Burger,着装整齐,轻微秃头,能冷静的分析问题,就像很多优秀的工程师一样。他转过身,告诉 Ballmer 像谷歌和亚马逊这样的公司一直正在超这个方向发展。他说世界上的硬件制造商不会提供微软需要用来运行线上服务的硬件。他说,如果微软不打造自己的硬件,就会落后。Ballmer 听完后并不买账。但是过了一会儿,另一个声音参与到这场讨论中来。这个声音来自陆奇,他管理者 Bing,微软的搜索引擎。两年来,陆奇的团队一直在和 Burger 讨论可再编程芯片的事情。Project Catapult 不仅仅是一种可能,陆说:他的团队已经开始着手做了。

今天,微软已经有了现场可编程门阵列(field programmable gate arrays,FPGA),Burger 和陆都相信这个可编程芯片可以改变世界。FPGA 目前已支持 Bing,未来几周,它们将会驱动基于深度神经网络——以人类大脑结构为基础建模的人工智能——的新搜索算法,在执行这个人工智能的几个命令时,速度比普通芯片快上几个数量级。有了它,你的计算机屏幕只会空屏 23 毫秒而不是 4 秒。

1.3_.jpg

Catapult 团队成员 Adrian Caulfield, Eric Chung, Doug Burger, 和 Andrew Putnam

Bing 不只是要追赶 Google。Project Catapult 暗示着改变未来全球系统运作的方式。从美国的亚马逊到中国的百度,所有的互联网巨头都在用硅替代他们的标准服务器芯片——中央处理单元,也叫 CPU,这些硅制成的芯片可以让它们跟上人工智能的快速变化。微软现在每年花在硬件上的钱在 50 亿到 60 亿美元,以维持其线上帝国的运转。所以这样的工作「再也不仅仅是研究了,」Satya Nadella 说道,他在 2014 年接任了微软 CEO 一职。「它有极为重要的优先性。」也就是 Burger 当年在 99 号大楼中要解释的,并让他和他的团队耗费多年,克服种种挫折,不断重新设计,与体制对抗,最终实现的一种新的全球超级计算机。



一种全新的古老计算机芯片

2010 年 12 月,微软研究院 Andrew Putnam 离开西雅图度假,回到了位于科罗拉多斯普林斯的家中。当时正是圣诞节前两天,他还没开始大采购。正在他开车去商场的路上,电话突然响了,另一端正是他的老板 Burger。Burger 当时打算节后面见 Bing 高管,但他需要一份能在 FPGA 上运行 Bing 机器学习算法的硬件设计。

Putnam 找到最近的星巴克开始规划设计,这大约花了他 5 个小时,所以他仍有时间去购物。

当时 Burger 45 岁,Putnam 41 岁,两人过去都是学者。Burger 曾在特克萨斯大学奥斯汀分校担任计算机科学教授,他在那里工作了 9 年,专攻微处理器,还设计了一款名为 EDGE 的新型芯片。

Putnam 曾在华盛顿大学工作 5 年,担任研究员并主要从事 FPGA 研究。当时可编程芯片已经存在了好几十年,但它们大多被当作处理器的一部分。2009 年 Burger 将 Putnam 挖到微软,两人开始探索用可编程芯片提升线上服务速度的方法。

1.4_.JPG

Project Catapult V1,即 Doug Burger 团队曾在微软西雅图数据中心测试过的版本。

微软的搜索引擎是一个依靠成千上万台机器运行的在线服务。每台机器都需要靠 CPU 驱动,尽管英特尔等公司不断改进它们,这些芯片还是跟不上软件更新的脚步。很大程度上,是因为人工智能浪潮的来临。

Bing 搜索等服务已经超出了摩尔定律预言的处理器能力,即每 18 个月处理器上晶体管的数量翻一倍。事实还证明增加 CPU 并不能解决问题。

但同时,为新出现的需求制造专用芯片,成本是非常昂贵的。恰好 FPGA 能弥补这个不足,Bing 决定让工程师制造运行更快、比流水线生产的通用 CPU 能耗更少、同时可定制的芯片,从而解决不断更新的技术和商业模式变化所产生的种种难题。

圣诞节后的会面中,Burger 为必应高管们拿出了一套用 FPGA 提升搜索速度,同时功耗较低的方法。高管们不置可否。在接下来的几个月中,Burger 团队根据 Putnam 圣诞节时画出的草图构建了原型,证明其运行必应的机器学习算法时速度可以提升 100 倍。「那时他们才表现出浓厚兴趣」,当时的团队成员、现瑞士洛桑联邦理工学院院长 Jim Larus 告诉我们,「但同样也是艰难时光的开始。」

原型是一个使用六个 FPGA 的专用盒,由一整个机架的服务器共享。如果盒子吱吱作响,表明它们需要更多 FPGA——考虑到机器学习模型的复杂性需求会越来越大——这些机器就会停止工作。必应的工程师非常厌恶这件事。「但他们没错,」Larus 说。

正是这个原型吸引了陆奇。他给了 Burger 足够的资金,可以在 1600 台服务器上装配 FPGA 并进行测试。在中国和台湾硬件制造商的帮助下,团队花费半年时间制造出了硬件产品,并在微软数据中心的一组机架上进行测试。但一天晚上灭火系统出现了问题。他们花了三天时间修复机架——它仍能工作。

在 2013 年到 2014 年的几个月中,测试显示必应「决策树」机器学习算法在新芯片的帮助下,可以提升 40 倍运行速度。2014 年夏天,微软公开表示要很快要将这些硬件应用到必应实时数据中心。但是在那之后,微软暂停了。




不只是 Bing 搜索

Bing 在前几年一直是微软线上发展的核心,但到 2015 年,公司有了其他两个主要的在线服务:商务应用套件 Office 365 和云计算服务 Microsoft Azure。和其他竞争者一样,微软高层意识到运营一个不断成长的在线帝国的唯一有效方法是在同样的基础上运营所有的服务。如果 Project Catapult 将转变微软的话,那 Bing 也不能被排除在外。它也要在 Azure 和 Office 365 内部工作。

问题是,Azure 高官们不在乎加速机器学习,他们需要联络的帮助。Azure 数据中心的流量跳动增长的太快,服务的 CPU 不能跟上脚步。最终,Azure 首席架构师 Mark Russinovich 这样一批人看到了 Catapult 能帮助解决这些问题,但不是为 Bing 设计的那种解决问题的方式。他的团队需要可编程的芯片,将每个服务器连接到主要网络,如此他们在数据流量到达服务器之前就能开始处理了。

1.5_.jpg

FPGA 架构的第一代原型是一个被一架服务器共享的单个盒子(Version 0)。然后该团队转向为每个服务器设计自己的 FPGA(Version 1)。然后他们将芯片放到服务器和整体网络之间。

所以,研究 FPGA 的这伙人需要重新开发硬件。在第三代原型中,芯片位于每个服务器的边缘,直接插入到网络,但仍旧创造任何机器都可接入的 FPGA 池。这开始看起来是 Office 365 可用的东西了。最终,Project Catapult 准备好上线了。

Larus 将许多重新设计描述为噩梦,这不是因为他们需要建立新的硬件,而是他们每次都需要重新编程 FPGA。他说,「这非常的糟糕,要比编程软件都糟糕,更难写、难纠正。」这是一项非常繁琐的工作,像是改变芯片上的小逻辑门。

既然最终的硬件已经有了,微软还要面对每一次重新编程这些芯片时都会遇到的同样挑战。「这是一个看世界思考世界的全新视角,」Larus 说。但是 Catapult 硬件的成本只占了服务器中所有其他的配件总成本的 30%,需要的运转能量也只有不到 10%,但其却带来了 2 倍原先的处理速度。

这个布局非常大。微软 Azure 用这些可编程的芯片来路由、加密和压缩数据。Bing 占据着世界上 20% 的桌面搜索市场和 6% 的移动手机市场,在 Bing 上,这个芯片能帮助 Bing 适应新品种的人工智能:深度神经网络。而且据微软的一名员工说,Office365 正在尝试在加密和压缩上使用 FPGA 以及机器学习——这一举措将惠及其 2310 万用户。最终,Burger 说道,这些会驱动所有的微软服务。
 



这真的起作用吗?


Peter Lee 说,「这仍然使我迷惑。我们让公司做这些事。」Lee 监管着微软内部一个被称为 NExT 的组织,NExT 是 New Experience and Technologies 的缩写。在 Nadella 接任 CEO 之后,他个人推动了 NExT 的创建,代表了从 Ballmer 十年统治的重大转变。该组织的目标是培养能在近期实现的研究,而不是远期研究,这能改变微软如今的进程,而非多少年后的进程,就像增强现实设备 HoloLens 一样。当然也包括 Project Catapult。Burger 说,「起跳点就在前面,来自于非 CPU 技术。」

1.6_.jpg

Peter Lee

所有的互联网巨头,包括微软,如今都在用图像处理单元增补 CPU,GPU 可为游戏和其他高度视觉化的应用渲染图像。例如,当这些公司训练神经网络识别图像中的人脸时(输入百万张图片),GPU 可处理很多的计算。像微软这样的巨头也使用可替代的硅片在训练后执行神经网络。而且,即使定制芯片异常昂贵,谷歌在设计执行神经网络的处理器上也走得相当远了,也就是他们设计的 TPU。

在 TPU 上,谷歌为追求速度牺牲了长期灵活性。也就是说,在识别进入智能手机的指令时,TPU 想要消除所有的延迟。但问题是如果神经网络模型改变的话,谷歌必须要建立新的芯片。但在 FPGA 上,微软在打一场长久战。尽管在速度上比不上谷歌的定制芯片,微软可在需要的时候重新编程芯片。微软不只能为新的人工智能模型编程,也能为任何任务重新编程。而且这些设计在接下来几年如果有用,微软能一直采用这种 FPGA 的程序,并建立专用芯片。

1.7_.jpg

该硬件的新版本 V2,是一张能插入微软任一服务器终端的芯片,并能直接连接到网络。

微软的服务很广,也使用如此多的 FPGA,如今他们正在改变全球芯片市场。FPGA 出自一家名为 Altera 的公司,英特尔副总裁 Diane Bryant 告诉我为什么英特尔会在去年夏天收购 Altera,这是一笔价值 167 亿美元的收购,也是芯片制造商史上最大的一笔收购。她说,到 2020 年,所有主要的云计算公司的 1/3 的服务器将使用 FPGA。

这是科技名词缩写之间的纠缠:GPU、CPU、TPU、FPGA。但它们也是将成为关键的代名词。在云计算上,微软、谷歌、亚马逊这些公司驱动着世界上很大一部分技术,以至于这些可选择的芯片将驱动大范围的 app 和在线服务。Lee 说,直到 2030 年,Project Catapult 将继续扩展微软全球超级计算机的能力。在这之后,他说,微软就能转向到量子计算了。

之后当我们谈到手机时,Nadella 也告诉了我同样的事。他们读取自同样的微软蓝图,正在触摸量子技术驱动的超快计算机的未来。想象建立量子机器多么的难,就像白日梦一样。但在几年前,Project Catapult 也如同白日梦一样。
 
 
 
 
 
  • 文章来源于机器之心
  • 智造家平台提供

782 浏览

十年FPGA开发经验工程师肺腑之言:多实践、多思考、多问

电气控制类 邓紫棋 2016-08-31 15:46 发表了文章 来自相关话题

从大学时代第一次接触FPGA至今已有10多年的时间,至今记得当初第一次在EDA实验平台上完成数字秒表、抢答器、密码锁等实验时那个兴奋劲。当时由于没有接触到HDL硬件描述语言,设计都是在MAX+plus II原理图环境下用74系列逻辑器件搭建起来的。后来读研究生,工作陆陆续续也用过Quartus II、Foundation、ISE、Libero,并且学习了verilogHDL语言,学习的过程中也慢慢体会到verilog的妙用,原来一小段语言就能完成复杂的原理图设计,而且语言的移植性可操作性比原理图设计强很多。

学习一门技术之前我们往往从它的编程语言入手,比如学习单片机时,我们往往从汇编或者C语言入门。所以不少开始接触FPGA的开发人员,往往是从VHDL或者Verilog开始入手学习的。但我个人认为,若能先结合《数字电路基础》系统学习各种74系列逻辑电路,深刻理解逻辑功能,对于学习HDL语言大有裨益,往往会起到事半功倍的效果。




当然,任何编程语言的学习都不是一朝一夕的事,经验技巧的积累都是在点滴中完成,FPGA设计也无例外。下面就以我的切身体会,谈谈FPGA设计的经验技巧。

我们先谈一下FPGA基本知识:

FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

1、硬件设计基本原则

(1)速度与面积平衡和互换原则:一个设计如果时序余量较大,所能跑的频率远高于设计要求,能可以通过模块复用来减少整个设计消耗的芯片面积,这就是用速度优势换面积的节约;反之,如果一个设计的时序要求很高,普通方法达不到设计频率,那么可以通过数据流串并转换,并行复制多个操作模块,对整个设计采用“乒乓操作”和“串并转换”的思想进行处理,在芯片输出模块处再对数据进行“并串转换”。从而实现了用面积复制换取速度的提高。
(2)硬件原则:理解HDL本质
(3)系统原则:整体把握
(4)同步设计原则:设计时序稳定的基本原则

2、Verilog作为一种HDL语言,对系统行为的建模方式是分层次的。比较重要的层次有系统级、算法级、寄存器传输级、逻辑级、门级、电路开关级。

3、实际工作中,除了描述仿真测试激励时使用for循环语句外,极少在RTL级编码中使用for循环,这是因为for循环会被综合器展开为所有变量情况的执行语句,每个变量独立占用寄存器资源,不能有效的复用硬件逻辑资源,造成巨大的浪费。一般常用case语句代替。

4、if…else…和case在嵌套描述时是有很大区别的,if…else…是有优先级的,一般来说,第一个if的优先级最高,最后一个else的优先级最低。而case语句是平行语句,它是没有优先级的,而建立优先级结构需要耗费大量的逻辑资源,所以能用case的地方就不要用if…else…语句。
补充:1.也可以用if…; if…; if…;描述不带优先级的“平行”语句。

5、FPGA一般触发器资源比较丰富,而CPLD组合逻辑资源更丰富。

6、FPGA和CPLD的组成:
FPGA基本有可编程I/O单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核等6部分组成。
CPLD的结构相对比较简单,主要由可编程I/O单元、基本逻辑单元、布线池和其他辅助功能模块组成。

7、Block RAM:

3种块RAM结构,M512 RAM(512bit)、M4K RAM(4Kbit)、M-RAM(64Kbit)。
M512 RAM:适合做一些小的Buffer、FIFO、DPRAM、SPRAM、ROM等;
M4K RAM: 适用于一般的需求
M-RAM: 适合做大块数据的缓冲区。
Xlinx 和 Lattice FPGA的LUT可以灵活配置成小的RAM、ROM、FIFO等存储结构,这种技术被称为分布式RAM。
补充:但是在一般的设计中,不提倡用FPGA/CPLD的片内资源配置成大量的存储器,这是处于成本的考虑。所以尽量采用外接存储器。

8、善用芯片内部的PLL或DLL资源完成时钟的分频、倍频率、移相等操作,不仅简化了设计,并且能有效地提高系统的精度和工作稳定性。

9、异步电路和同步时序电路的区别

异步电路:
电路核心逻辑有用组合电路实现;
异步时序电路的最大缺点是容易产生毛刺;
不利于器件移植;
不利于静态时序分析(STA)、验证设计时序性能。

同步时序电路:
电路核心逻辑是用各种触发器实现;
电路主要信号、输出信号等都是在某个时钟沿驱动触发器产生的;
同步时序电路可以很好的避免毛刺;
利于器件移植;
利于静态时序分析(STA)、验证设计时序性能。

10、同步设计中,稳定可靠的数据采样必须遵从以下两个基本原则:

(1)在有效时钟沿到达前,数据输入至少已经稳定了采样寄存器的Setup时间之久,这条原则简称满足Setup时间原则;
(2)在有效时钟沿到达后,数据输入至少还将稳定保持采样寄存器的Hold时钟之久,这条原则简称满足Hold时间原则。

11、同步时序设计注意事项:

异步时钟域的数据转换。
组合逻辑电路的设计方法。
同步时序电路的时钟设计。
同步时序电路的延迟。同步时序电路的延迟最常用的设计方法是用分频或者倍频的时钟或者同步计数器完成所需的延迟,对比较大的和特殊定时要求的延时,一般用高速时钟产生一个计数器,根据计数产生延迟;对于比较小的延迟,可以用D触发器打一下,这样不仅可以使信号延时了一个时钟周期,而且完成了信号与时钟的初次同步。在输入信号采样和增加时序约束余量中使用。另外,还有用行为级方法描述延迟,如“#5 a《=4’0101;”这种常用于仿真测试激励,但是在电路综合时会被忽略,并不能起到延迟作用。
Verilog 定义的reg型,不一定综合成寄存器。在Verilog代码中最常用的两种数据类型是wire和reg型,一般来说,wire型指定的数据和网线通过组合逻辑实现,而reg型指定的数据不一定就是用寄存器实现。

12、常用设计思想与技巧

(1)乒乓操作;
(2)串并转换;
(3)流水线操作;
(4)异步时钟域数据同步。是指如何在两个时钟不同步的数据域之间可靠地进行数据交换的问题。数据时钟域不同步主要有两种情况:
两个域的时钟频率相同,但是相差不固定,或者相差固定但是不可测,简称为同频异相问题。
两个时钟频率根本不同,简称异频问题。
两种不推荐的异步时钟域操作方法:一种是通过增加Buffer或者其他门延时来调整采样;另一种是盲目使用时钟正负沿调整数据采样。

13、模块划分基本原则:

(1)对每个同步时序设计的子模块的输出使用寄存器(用寄存器分割同步时序模块原则)。
(2)将相关逻辑和可以复用的逻辑划分在同一模块内(呼应系统原则)。
(3)将不同优化目标的逻辑分开。
(4)将送约束的逻辑归到同一模块。
(5)将存储逻辑独立划分成模块。
(6)合适的模块规模。
(7)顶层模块最好不进行逻辑设计。

14、组合逻辑的注意事项

(1)避免组合逻辑反馈环路(容易毛刺、振荡、时序违规等)。
解决:
A、牢记任何反馈回路必须包含寄存器;
B、检查综合、实现报告的warning信息,发现反馈回路(combinational loops)后进行相应修改。

(2)替换延迟链。
解决:用倍频、分频或者同步计数器完成。

(3)替换异步脉冲产生单元(毛刺生成器)。
解决:用同步时序设计脉冲电路。

(4)慎用锁存器。
解决:
A、使用完备的if…else语句;
B、检查设计中是否含有组合逻辑反馈环路;
C、对每个输入条件,设计输出操作,对case语句设置default操作。特别是在状态机设计中,最好有一个default的状态转移,而且每个状态最好也有一个default的操作。
D、如果使用case语句时,特别是在设计状态机时,尽量附加综合约束属性,综合为完全条件case语句。

小技巧:仔细检查综合器的综合报告,目前大多数的综合器对所综合出的latch都会报“warning”,通过综合报告可以较为方便地找出无意中生成的latch。

15、时钟设计的注意事项

(1)同步时序电路推荐的时钟设计方法:
时钟经全局时钟输入引脚输入,通过FPGA内部专用的PLL或DLL进行分频/倍频、移相等调整与运算,然后经FPGA内部全局时钟布线资源驱动到达芯片内所有寄存器和其他模块的时钟输入端。

FPGA设计者的5项基本功:仿真、综合、时序分析、调试、验证。
对于FPGA设计者来说,练好这5项基本功,与用好相应的EDA工具是同一过程,对应关系如下:

1. 仿真:Modelsim, Quartus II(Simulator Tool)
2. 综合:Quartus II (Compiler Tool, RTL Viewer, Technology Map Viewer, Chip Planner)
3. 时序:Quartus II (TimeQuest Timing Analyzer, Technology Map Viewer, Chip Planner)
4. 调试:Quartus II (SignalTap II Logic Analyzer, Virtual JTAG, Assignment Editor)
5. 验证:Modelsim, Quartus II(Test Bench Template Writer)

掌握HDL语言虽然不是FPGA设计的全部,但是HDL语言对FPGA设计的影响贯穿于整个FPGA设计流程中,与FPGA设计的5项基本功是相辅相成的。
对于FPGA设计者来说,用好“HDL语言的可综合子集”可以完成FPGA设计50%的工作——设计编码。


练好仿真、综合、时序分析这3项基本功,对于学习“HDL语言的可综合子集”有如下帮助:

1. 通过仿真,可以观察HDL语言在FPGA中的逻辑行为。
2. 通过综合,可以观察HDL语言在FPGA中的物理实现形式。
3. 通过时序分析,可以分析HDL语言在FPGA中的物理实现特性。

对于FPGA设计者来说,用好“HDL语言的验证子集”,可以完成FPGA设计另外50%的工作——调试验证。

1. 搭建验证环境,通过仿真的手段可以检验FPGA设计的正确性。
2. 全面的仿真验证可以减少FPGA硬件调试的工作量。
3. 把硬件调试与仿真验证方法结合起来,用调试解决仿真未验证的问题,用仿真保证已经解决的问题不在调试中再现,可以建立一个回归验证流程,有助于FPGA设计项目的维护。

FPGA设计者的这5项基本功不是孤立的,必须结合使用,才能完成一个完整的FPGA设计流程。反过来说,通过完成一个完整的设计流程,才能最有效地练习这5项基本功。对这5项基本功有了初步认识,就可以逐个深入学习一些,然后把学到的知识再次用于完整的设计流程。如此反复,就可以逐步提高设计水平。采用这样的循序渐进、螺旋式上升的方法,只要通过培训入了门,就可以自学自练,自我提高。

市面上出售的有关FPGA设计的书籍为了保证结构的完整性,对FPGA设计的每一个方面分开介绍,每一方面虽然深入,但是由于缺少其他相关方面的支持,读者很难付诸实践,只有通读完全书才能对FPGA设计获得一个整体的认识。这样的书籍,作为工程培训指导书不行,可以作为某一个方面进阶的参考书。

对于新入职的员工来说,他们往往对FPGA的整体设计流程有了初步认识,5项基本功的某几个方面可能很扎实。但是由于某个或某几个方面能力的欠缺,限制了他们独自完成整个设计流程的能力。入职培训的目的就是帮助他们掌握整体设计流程,培养自我获取信息的能力,通过几个设计流程来回的训练,形成自我促进、自我发展的良性循环。在这一过程中,随着对工作涉及的知识的广度和深度的认识逐步清晰,新员工的自信心也会逐步增强,对个人的发展方向也会逐步明确,才能积极主动地参与到工程项目中来。

最后总结几点:

1)看代码,建模型

只有在脑海中建立了一个个逻辑模型,理解FPGA内部逻辑结构实现的基础,才能明白为什么写Verilog和写C整体思路是不一样的,才能理解顺序执行语言和并行执行语言的设计方法上的差异。在看到一段简单程序的时候应该想到是什么样的功能电路。
例如:


2)用数学思维来简化设计逻辑

学习FPGA不仅逻辑思维很重要,好的数学思维也能让你的设计化繁为简,所以啊,那些看见高数就头疼的童鞋需要重视一下这门课哦。举个简单的例子,比如有两个32bit的数据X[31:0]与Y[31:0]相乘。当然,无论Altera还是Xilinx都有现成的乘法器IP核可以调用,这也是最简单的方法,但是两个32bit的乘法器将耗费大量的资源。那么有没有节省资源,又不太复杂的方式来实现呢?我们可以稍做修改:

将X[31:0]拆成两部分X1[15:0]和X2[15:0],令X1[15:0]=X[31:16],X2[15:0]=X[15:0],则X1左移16位后与X2相加可以得到X;同样将Y[31:0]拆成两部分Y1[15:0]和Y2[15:0],令 Y1[15:0]=Y[31:16],Y2[15:0]=Y[15:0],则Y1左移16位后与Y2相加可以得到Y;则X与Y的相乘可以转化为X1和X2 分别与Y1和Y2相乘,这样一个32bit*32bit的乘法运算转换成了四个16bit*16bit的乘法运算和三个32bit的加法运算。转换后的占用资源将会减少很多,有兴趣的童鞋,不妨综合一下看看,看看两者差多少。

3)时钟与触发器的关系

“时钟是时序电路的控制者”这句话太经典了,可以说是FPGA设计的圣言。FPGA的设计主要是以时序电路为主,因为组合逻辑电路再怎么复杂也变不出太多花样,理解起来也不没太多困难。但是时序电路就不同了,它的所有动作都是在时钟一拍一拍的节奏下转变触发,可以说时钟就是整个电路的控制者,控制不好,电路功能就会混乱。

打个比方,时钟就相当于人体的心脏,它每一次的跳动就是触发一个 CLK,向身体的各个器官供血,维持着机体的正常运作,每一个器官体统正常工作少不了组织细胞的构成,那么触发器就可以比作基本单元组织细胞。时序逻辑电路的时钟是控制时序逻辑电路状态转换的“发动机”,没有它时序逻辑电路就不能正常工作,因为时序逻辑电路主要是利用触发器存储电路的状态,而触发器状态变换需要时钟的上升或下降沿!由此可见时钟在时序电路中的核心作用!

最后简单说一下体会吧,归结起来就多实践、多思考、多问。实践出真知,看100遍别人的方案不如自己去实践一下。实践的动力一方面来自兴趣,一方面来自压力,我个人觉得后者更重要。有需求会容易形成压力,也就是说最好能在实际的项目开发中锻炼,而不是为了学习而学习。在实践的过程中要多思考,多想想问题出现的原因,问题解决后要多问几个为什么,这也是经验积累的过程,如果有写项目日志的习惯更好,把问题及原因、解决的办法都写进去。最后还要多问,遇到问题思索后还得不到解决就要问了,毕竟个人的力量是有限的,问同学同事、问搜索引擎、问网友都可以,一篇文章、朋友们的点拨都可能帮助自己快速解决问题。
 
 
来源:网络 查看全部
从大学时代第一次接触FPGA至今已有10多年的时间,至今记得当初第一次在EDA实验平台上完成数字秒表、抢答器、密码锁等实验时那个兴奋劲。当时由于没有接触到HDL硬件描述语言,设计都是在MAX+plus II原理图环境下用74系列逻辑器件搭建起来的。后来读研究生,工作陆陆续续也用过Quartus II、Foundation、ISE、Libero,并且学习了verilogHDL语言,学习的过程中也慢慢体会到verilog的妙用,原来一小段语言就能完成复杂的原理图设计,而且语言的移植性可操作性比原理图设计强很多。

学习一门技术之前我们往往从它的编程语言入手,比如学习单片机时,我们往往从汇编或者C语言入门。所以不少开始接触FPGA的开发人员,往往是从VHDL或者Verilog开始入手学习的。但我个人认为,若能先结合《数字电路基础》系统学习各种74系列逻辑电路,深刻理解逻辑功能,对于学习HDL语言大有裨益,往往会起到事半功倍的效果。
640.webp_(1)_.jpg

当然,任何编程语言的学习都不是一朝一夕的事,经验技巧的积累都是在点滴中完成,FPGA设计也无例外。下面就以我的切身体会,谈谈FPGA设计的经验技巧。

我们先谈一下FPGA基本知识:

FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

1、硬件设计基本原则

(1)速度与面积平衡和互换原则:一个设计如果时序余量较大,所能跑的频率远高于设计要求,能可以通过模块复用来减少整个设计消耗的芯片面积,这就是用速度优势换面积的节约;反之,如果一个设计的时序要求很高,普通方法达不到设计频率,那么可以通过数据流串并转换,并行复制多个操作模块,对整个设计采用“乒乓操作”和“串并转换”的思想进行处理,在芯片输出模块处再对数据进行“并串转换”。从而实现了用面积复制换取速度的提高。
(2)硬件原则:理解HDL本质
(3)系统原则:整体把握
(4)同步设计原则:设计时序稳定的基本原则

2、Verilog作为一种HDL语言,对系统行为的建模方式是分层次的。比较重要的层次有系统级、算法级、寄存器传输级、逻辑级、门级、电路开关级。

3、实际工作中,除了描述仿真测试激励时使用for循环语句外,极少在RTL级编码中使用for循环,这是因为for循环会被综合器展开为所有变量情况的执行语句,每个变量独立占用寄存器资源,不能有效的复用硬件逻辑资源,造成巨大的浪费。一般常用case语句代替。

4、if…else…和case在嵌套描述时是有很大区别的,if…else…是有优先级的,一般来说,第一个if的优先级最高,最后一个else的优先级最低。而case语句是平行语句,它是没有优先级的,而建立优先级结构需要耗费大量的逻辑资源,所以能用case的地方就不要用if…else…语句。
补充:1.也可以用if…; if…; if…;描述不带优先级的“平行”语句。

5、FPGA一般触发器资源比较丰富,而CPLD组合逻辑资源更丰富。

6、FPGA和CPLD的组成:
FPGA基本有可编程I/O单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核等6部分组成。
CPLD的结构相对比较简单,主要由可编程I/O单元、基本逻辑单元、布线池和其他辅助功能模块组成。

7、Block RAM:

3种块RAM结构,M512 RAM(512bit)、M4K RAM(4Kbit)、M-RAM(64Kbit)。
M512 RAM:适合做一些小的Buffer、FIFO、DPRAM、SPRAM、ROM等;
M4K RAM: 适用于一般的需求
M-RAM: 适合做大块数据的缓冲区。
Xlinx 和 Lattice FPGA的LUT可以灵活配置成小的RAM、ROM、FIFO等存储结构,这种技术被称为分布式RAM。
补充:但是在一般的设计中,不提倡用FPGA/CPLD的片内资源配置成大量的存储器,这是处于成本的考虑。所以尽量采用外接存储器。

8、善用芯片内部的PLL或DLL资源完成时钟的分频、倍频率、移相等操作,不仅简化了设计,并且能有效地提高系统的精度和工作稳定性。

9、异步电路和同步时序电路的区别

异步电路:
电路核心逻辑有用组合电路实现;
异步时序电路的最大缺点是容易产生毛刺;
不利于器件移植;
不利于静态时序分析(STA)、验证设计时序性能。

同步时序电路:
电路核心逻辑是用各种触发器实现;
电路主要信号、输出信号等都是在某个时钟沿驱动触发器产生的;
同步时序电路可以很好的避免毛刺;
利于器件移植;
利于静态时序分析(STA)、验证设计时序性能。

10、同步设计中,稳定可靠的数据采样必须遵从以下两个基本原则:

(1)在有效时钟沿到达前,数据输入至少已经稳定了采样寄存器的Setup时间之久,这条原则简称满足Setup时间原则;
(2)在有效时钟沿到达后,数据输入至少还将稳定保持采样寄存器的Hold时钟之久,这条原则简称满足Hold时间原则。

11、同步时序设计注意事项:

异步时钟域的数据转换。
组合逻辑电路的设计方法。
同步时序电路的时钟设计。
同步时序电路的延迟。同步时序电路的延迟最常用的设计方法是用分频或者倍频的时钟或者同步计数器完成所需的延迟,对比较大的和特殊定时要求的延时,一般用高速时钟产生一个计数器,根据计数产生延迟;对于比较小的延迟,可以用D触发器打一下,这样不仅可以使信号延时了一个时钟周期,而且完成了信号与时钟的初次同步。在输入信号采样和增加时序约束余量中使用。另外,还有用行为级方法描述延迟,如“#5 a《=4’0101;”这种常用于仿真测试激励,但是在电路综合时会被忽略,并不能起到延迟作用。
Verilog 定义的reg型,不一定综合成寄存器。在Verilog代码中最常用的两种数据类型是wire和reg型,一般来说,wire型指定的数据和网线通过组合逻辑实现,而reg型指定的数据不一定就是用寄存器实现。

12、常用设计思想与技巧

(1)乒乓操作;
(2)串并转换;
(3)流水线操作;
(4)异步时钟域数据同步。是指如何在两个时钟不同步的数据域之间可靠地进行数据交换的问题。数据时钟域不同步主要有两种情况:
两个域的时钟频率相同,但是相差不固定,或者相差固定但是不可测,简称为同频异相问题。
两个时钟频率根本不同,简称异频问题。
两种不推荐的异步时钟域操作方法:一种是通过增加Buffer或者其他门延时来调整采样;另一种是盲目使用时钟正负沿调整数据采样。

13、模块划分基本原则:

(1)对每个同步时序设计的子模块的输出使用寄存器(用寄存器分割同步时序模块原则)。
(2)将相关逻辑和可以复用的逻辑划分在同一模块内(呼应系统原则)。
(3)将不同优化目标的逻辑分开。
(4)将送约束的逻辑归到同一模块。
(5)将存储逻辑独立划分成模块。
(6)合适的模块规模。
(7)顶层模块最好不进行逻辑设计。

14、组合逻辑的注意事项

(1)避免组合逻辑反馈环路(容易毛刺、振荡、时序违规等)。
解决:
A、牢记任何反馈回路必须包含寄存器;
B、检查综合、实现报告的warning信息,发现反馈回路(combinational loops)后进行相应修改。

(2)替换延迟链。
解决:用倍频、分频或者同步计数器完成。

(3)替换异步脉冲产生单元(毛刺生成器)。
解决:用同步时序设计脉冲电路。

(4)慎用锁存器。
解决:
A、使用完备的if…else语句;
B、检查设计中是否含有组合逻辑反馈环路;
C、对每个输入条件,设计输出操作,对case语句设置default操作。特别是在状态机设计中,最好有一个default的状态转移,而且每个状态最好也有一个default的操作。
D、如果使用case语句时,特别是在设计状态机时,尽量附加综合约束属性,综合为完全条件case语句。

小技巧:仔细检查综合器的综合报告,目前大多数的综合器对所综合出的latch都会报“warning”,通过综合报告可以较为方便地找出无意中生成的latch。

15、时钟设计的注意事项

(1)同步时序电路推荐的时钟设计方法:
时钟经全局时钟输入引脚输入,通过FPGA内部专用的PLL或DLL进行分频/倍频、移相等调整与运算,然后经FPGA内部全局时钟布线资源驱动到达芯片内所有寄存器和其他模块的时钟输入端。

FPGA设计者的5项基本功:仿真、综合、时序分析、调试、验证。
对于FPGA设计者来说,练好这5项基本功,与用好相应的EDA工具是同一过程,对应关系如下:

1. 仿真:Modelsim, Quartus II(Simulator Tool)
2. 综合:Quartus II (Compiler Tool, RTL Viewer, Technology Map Viewer, Chip Planner)
3. 时序:Quartus II (TimeQuest Timing Analyzer, Technology Map Viewer, Chip Planner)
4. 调试:Quartus II (SignalTap II Logic Analyzer, Virtual JTAG, Assignment Editor)
5. 验证:Modelsim, Quartus II(Test Bench Template Writer)

掌握HDL语言虽然不是FPGA设计的全部,但是HDL语言对FPGA设计的影响贯穿于整个FPGA设计流程中,与FPGA设计的5项基本功是相辅相成的。
对于FPGA设计者来说,用好“HDL语言的可综合子集”可以完成FPGA设计50%的工作——设计编码。


练好仿真、综合、时序分析这3项基本功,对于学习“HDL语言的可综合子集”有如下帮助:

1. 通过仿真,可以观察HDL语言在FPGA中的逻辑行为。
2. 通过综合,可以观察HDL语言在FPGA中的物理实现形式。
3. 通过时序分析,可以分析HDL语言在FPGA中的物理实现特性。

对于FPGA设计者来说,用好“HDL语言的验证子集”,可以完成FPGA设计另外50%的工作——调试验证。

1. 搭建验证环境,通过仿真的手段可以检验FPGA设计的正确性。
2. 全面的仿真验证可以减少FPGA硬件调试的工作量。
3. 把硬件调试与仿真验证方法结合起来,用调试解决仿真未验证的问题,用仿真保证已经解决的问题不在调试中再现,可以建立一个回归验证流程,有助于FPGA设计项目的维护。

FPGA设计者的这5项基本功不是孤立的,必须结合使用,才能完成一个完整的FPGA设计流程。反过来说,通过完成一个完整的设计流程,才能最有效地练习这5项基本功。对这5项基本功有了初步认识,就可以逐个深入学习一些,然后把学到的知识再次用于完整的设计流程。如此反复,就可以逐步提高设计水平。采用这样的循序渐进、螺旋式上升的方法,只要通过培训入了门,就可以自学自练,自我提高。

市面上出售的有关FPGA设计的书籍为了保证结构的完整性,对FPGA设计的每一个方面分开介绍,每一方面虽然深入,但是由于缺少其他相关方面的支持,读者很难付诸实践,只有通读完全书才能对FPGA设计获得一个整体的认识。这样的书籍,作为工程培训指导书不行,可以作为某一个方面进阶的参考书。

对于新入职的员工来说,他们往往对FPGA的整体设计流程有了初步认识,5项基本功的某几个方面可能很扎实。但是由于某个或某几个方面能力的欠缺,限制了他们独自完成整个设计流程的能力。入职培训的目的就是帮助他们掌握整体设计流程,培养自我获取信息的能力,通过几个设计流程来回的训练,形成自我促进、自我发展的良性循环。在这一过程中,随着对工作涉及的知识的广度和深度的认识逐步清晰,新员工的自信心也会逐步增强,对个人的发展方向也会逐步明确,才能积极主动地参与到工程项目中来。

最后总结几点:

1)看代码,建模型

只有在脑海中建立了一个个逻辑模型,理解FPGA内部逻辑结构实现的基础,才能明白为什么写Verilog和写C整体思路是不一样的,才能理解顺序执行语言和并行执行语言的设计方法上的差异。在看到一段简单程序的时候应该想到是什么样的功能电路。
例如:


2)用数学思维来简化设计逻辑

学习FPGA不仅逻辑思维很重要,好的数学思维也能让你的设计化繁为简,所以啊,那些看见高数就头疼的童鞋需要重视一下这门课哦。举个简单的例子,比如有两个32bit的数据X[31:0]与Y[31:0]相乘。当然,无论Altera还是Xilinx都有现成的乘法器IP核可以调用,这也是最简单的方法,但是两个32bit的乘法器将耗费大量的资源。那么有没有节省资源,又不太复杂的方式来实现呢?我们可以稍做修改:

将X[31:0]拆成两部分X1[15:0]和X2[15:0],令X1[15:0]=X[31:16],X2[15:0]=X[15:0],则X1左移16位后与X2相加可以得到X;同样将Y[31:0]拆成两部分Y1[15:0]和Y2[15:0],令 Y1[15:0]=Y[31:16],Y2[15:0]=Y[15:0],则Y1左移16位后与Y2相加可以得到Y;则X与Y的相乘可以转化为X1和X2 分别与Y1和Y2相乘,这样一个32bit*32bit的乘法运算转换成了四个16bit*16bit的乘法运算和三个32bit的加法运算。转换后的占用资源将会减少很多,有兴趣的童鞋,不妨综合一下看看,看看两者差多少。

3)时钟与触发器的关系

“时钟是时序电路的控制者”这句话太经典了,可以说是FPGA设计的圣言。FPGA的设计主要是以时序电路为主,因为组合逻辑电路再怎么复杂也变不出太多花样,理解起来也不没太多困难。但是时序电路就不同了,它的所有动作都是在时钟一拍一拍的节奏下转变触发,可以说时钟就是整个电路的控制者,控制不好,电路功能就会混乱。

打个比方,时钟就相当于人体的心脏,它每一次的跳动就是触发一个 CLK,向身体的各个器官供血,维持着机体的正常运作,每一个器官体统正常工作少不了组织细胞的构成,那么触发器就可以比作基本单元组织细胞。时序逻辑电路的时钟是控制时序逻辑电路状态转换的“发动机”,没有它时序逻辑电路就不能正常工作,因为时序逻辑电路主要是利用触发器存储电路的状态,而触发器状态变换需要时钟的上升或下降沿!由此可见时钟在时序电路中的核心作用!

最后简单说一下体会吧,归结起来就多实践、多思考、多问。实践出真知,看100遍别人的方案不如自己去实践一下。实践的动力一方面来自兴趣,一方面来自压力,我个人觉得后者更重要。有需求会容易形成压力,也就是说最好能在实际的项目开发中锻炼,而不是为了学习而学习。在实践的过程中要多思考,多想想问题出现的原因,问题解决后要多问几个为什么,这也是经验积累的过程,如果有写项目日志的习惯更好,把问题及原因、解决的办法都写进去。最后还要多问,遇到问题思索后还得不到解决就要问了,毕竟个人的力量是有限的,问同学同事、问搜索引擎、问网友都可以,一篇文章、朋友们的点拨都可能帮助自己快速解决问题。
 
 
来源:网络
744 浏览

FPGA在深度学习领域的应用!

机械自动化类 天黑请闭眼 2016-07-18 21:28 发表了文章 来自相关话题

        最近几年数据量和可访问性的迅速增长,使得人工智能的算法设计理念发生了转变。人工建立算法的做法被计算机从大量数据中自动习得可组合系统的能力所取代,使得计算机视觉、语音识别、自然语言处理等关键领域都出现了重大突破。深度学习是这些领域中所最常使用的技术,也被业界大为关注。然而,深度学习模型需要极为大量的数据和计算能力,只有更好的硬件加速条件,才能满足现有数据和模型规模继续扩大的需求。现有的解决方案使用图形处理单元(GPU)集群作为通用计算图形处理单元(GPGPU),但现场可编程门阵列(FPGA)提供了另一个值得探究的解决方案。日渐流行的FPGA设计工具使其对深度学习领域经常使用的上层软件兼容性更强,使得FPGA更容易为模型搭建和部署者所用。FPGA架构灵活,使得研究者能够在诸如GPU的固定架构之外进行模型优化探究。同时,FPGA在单位能耗下性能更强,这对大规模服务器部署或资源有限的嵌入式应用的研究而言至关重要。本文从硬件加速的视角考察深度学习与FPGA,指出有哪些趋势和创新使得这些技术相互匹配,并激发对FPGA如何帮助深度学习领域发展的探讨。
1.简介
机器学习对日常生活影响深远。无论是在网站上点击个性化推荐内容、在智能手机上使用语音沟通,或利用面部识别技术来拍照,都用到了某种形式的人工智能技术。这股人工智能的新潮流也伴随着算法设计的理念转变。过去基于数据的机器学习大多是利用具体领域的专业知识来人工地“塑造”所要学习的“特征”,计算机从大量示例数据中习得组合特征提取系统的能力,则使得计算机视觉、语音识别和自然语言处理等关键领域实现了重大的性能突破。对这些数据驱动技术的研究被称为深度学习,如今正受到技术界两个重要群体的关注:一是希望使用并训练这些模型、从而实现极高性能跨任务计算的研究者,二是希望为现实世界中的新应用来部署这些模型的应用科学家。然而,他们都面临着一个限制条件,即硬件加速能力仍需加强,才可能满足扩大现有数据和算法规模的需求。
         对于深度学习来说,目前硬件加速主要靠使用图形处理单元(GPU)集群作为通用计算图形处理单元(GPGPU)。相比传统的通用处理器(GPP),GPU的核心计算能力要多出几个数量级,也更容易进行并行计算。尤其是NVIDIACUDA,作为最主流的GPGPU编写平台,各个主要的深度学习工具均用其来进行GPU加速。最近,开放型并行程序设计标准OpenCL作为异构硬件编程的替代性工具备受关注,而对这些工具的热情也在高涨。虽然在深度学习领域内,OpenCL获得的支持相较CUDA还略逊一筹,但OpenCL有两项独特的性能。首先,OpenCL对开发者开源、免费,不同于CUDA单一供应商的做法。其次,OpenCL支持一系列硬件,包括GPU、GPP、现场可编程门阵列(FPGA)和数字信号处理器(DSP)。
 1.1.FPGA 作为GPU在算法加速上强有力的竞争者,FPGA是否立即支持不同硬件,显得尤为重要。FPGA与GPU不同之处在于硬件配置灵活,且FPGA在运行深入学习中关键的子程序(例如对滑动窗口的计算)时,单位能耗下通常能比GPU提供更好的表现。不过,设置FPGA需要具体硬件的知识,许多研究者和应用科学家并不具备,正因如此,FPGA经常被看作一种行家专属的架构。
        最近,FPGA工具开始采用包括OpenCL在内的软件级编程模型,使其越来越受经主流软件开发训练的用户青睐。 对考察一系列设计工具的研究者而言,其对工具的筛选标准通常与其是否具备用户友好的软件开发工具、是否具有灵活可升级的模型设计方法以及是否能迅速计算、以缩减大模型的训练时间有关。随着FPGA因为高抽象化设计工具的出现而越来越容易编写,其可重构性又使得定制架构成为可能,同时高度的并行计算能力提高了指令执行速度,FPGA将为深度学习的研究者带来好处。
        对应用科学家而言,尽管有类似的工具级选择,但硬件挑选的重点在于最大化提高单位能耗的性能,从而为大规模运行降低成本。所以,FPGA凭借单位能耗的强劲性能,加上为特定应用定制架构的能力,就能让深度学习的应用科学家受益。 FPGA能满足两类受众的需求,是一个合乎逻辑的选择。本文考察FPGA上深度学习的现状,以及目前用于填补两者间鸿沟的技术发展。因此,本文有三个重要目的。首先,指出深度学习领域存在探索全新硬件加速平台的机会,而FPGA是一个理想的选择。其次,勾勒出FPGA支持深度学习的现状,指出潜在的限制。最后,对FPGA硬件加速的未来方向提出关键建议,帮助解决今后深度学习所面临的问题。
 2.FPGA 传统来说,在评估硬件平台的加速时,必须考虑到灵活性和性能之间的权衡。一方面,通用处理器(GPP)可提供高度的灵活性和易用性,但性能相对缺乏效率。这些平台往往更易于获取,可以低廉的价格生产,并且适用于多种用途和重复使用。另一方面,专用集成电路(ASIC)可提供高性能,但代价是不够灵活且生产难度更大。这些电路专用于某特定的应用程序,并且生产起来价格昂贵且耗时。
      FPGA是这两个极端之间的折中。FPGA属于一类更通用的可编程逻辑设备(PLD),并且简单来说,是一种可重新配置的集成电路。因此,FPGA既能提供集成电路的性能优势,又具备GPP可重新配置的灵活性。FPGA能够简单地通过使用触发器(FF)来实现顺序逻辑,并通过使用查找表(LUT)来实现组合逻辑。现代的FPGA还含有硬化组件以实现一些常用功能,例如全处理器内核、通信内核、运算内核和块内存(BRAM)。另外,目前的FPGA趋势趋向于系统芯片(SoC)设计方法,即ARM协处理器和FPGA通常位于同一芯片中。目前的FPGA市场由Xilinx主导,占据超过85%的市场份额。此外,FPGA正迅速取代ASIC和应用专用标准产品(ASSP)来实现固定功能逻辑。FPGA市场规模预计在2016年将达到100亿美元。
      对于深度学习而言,FPGA提供了优于传统GPP加速能力的显著潜力。GPP在软件层面的执行依赖于传统的冯·诺依曼架构,指令和数据存储于外部存储器中,在需要时再取出。这推动了缓存的出现,大大减轻了昂贵的外部存储器操作。该架构的瓶颈是处理器和存储器之间的通信,这严重削弱了GPP的性能,尤其影响深度学习经常需要获取的存储信息技术。相比较而言,FPGA的可编程逻辑原件可用于实现普通逻辑功能中的数据和控制路径,而不依赖于冯·诺伊曼结构。它们也能够利用分布式片上存储器,以及深度利用流水线并行,这与前馈性深度学习方法自然契合。现代FPGA还支持部分动态重新配置,当FPGA的一部分被重新配置时另一部分仍可使用。这将对大规模深度学习模式产生影响,FPGA的各层可进行重新配置,而不扰乱其他层正在进行的计算。这将可用于无法由单个FPGA容纳的模型,同时还可通过将中间结果保存在本地存储以降低高昂的全球存储读取费用。
        最重要的是,相比于GPU,FPGA为硬件加速设计的探索提供了另一个视角。GPU和其它固定架构的设计是遵循软件执行模型,并围绕自主计算单元并行以执行任务搭建结构。由此,为深度学习技术开发GPU的目标就是使算法适应这一模型,让计算并行完成、确保数据相互依赖。与此相反,FPGA架构是为应用程序专门定制的。在开发FPGA的深度学习技术时,较少强调使算法适应某固定计算结构,从而留出更多的自由去探索算法层面的优化。需要很多复杂的下层硬件控制操作的技术很难在上层软件语言中实现,但对FPGA执行却特别具有吸引力。然而,这种灵活性是以大量编译(定位和回路)时间为成本的,对于需要通过设计循环快速迭代的研究人员来说这往往会是个问题。
       除了编译时间外,吸引偏好上层编程语言的研究人员和应用科学家来开发FPGA的问题尤为艰难。虽然能流利使用一种软件语言常常意味着可以轻松地学习另一种软件语言,但对于硬件语言翻译技能来说却非如此。针对FPGA最常用的语言是Verilog和VHDL,两者均为硬件描述语言(HDL)。这些语言和传统的软件语言之间的主要区别是,HDL只是单纯描述硬件,而例如C语言等软件语言则描述顺序指令,并无需了解硬件层面的执行细节。有效地描述硬件需要对数字化设计和电路的专业知识,尽管一些下层的实现决定可以留给自动合成工具去实现,但往往无法达到高效的设计。因此,研究人员和应用科学家倾向于选择软件设计,因其已经非常成熟,拥有大量抽象和便利的分类来提高程序员的效率。这些趋势使得FPGA领域目前更加青睐高度抽象化的设计工具。
 FPGA深度学习研究里程碑:
 1987VHDL成为IEEE标准
1992GANGLION成为首个FPGA神经网络硬件实现项目(Coxetal.)
1994Synopsys推出第一代FPGA行为综合方案 1996VIP成为首个FPGA的CNN实现方案(Cloutieretal.)
 2005FPGA市场价值接近20亿美元 2006首次利用BP算法在FPGA上实现5GOPS的处理能力
2011Altera推出OpenCL,支持FPGA 出现大规模的基于FPGA的CNN算法研究(Farabetetal.)
 2016在微软Catapult项目的基础上,出现基于FPGA的数据中心CNN算法加速(Ovtcharovetal.)
4.未来展望
       深度学习的未来不管是就FPGA还是总体而言,主要取决于可扩展性。要让这些技术成功解决未来的问题,必须要拓展到能够支持飞速增长的数据规模和架构。FPGA技术正在适应这一趋势,而硬件正朝着更大内存、更少的特征点数量、更好的互连性发展,来适应FPGA多重配置。英特尔收购了Altera,IBM与Xilinx合作,都昭示着FPGA领域的变革,未来也可能很快看到FPGA与个人应用和数据中心应用的整合。另外,算法设计工具可能朝着进一步抽象化和体验软件化的方向发展,从而吸引更广技术范围的用户。
4.1.常用深度学习软件工具
      在深度学习最常用的软件工具中,有些工具已经在支持CUDA的同时,认识到支持OpenCL的必要性。这将使得FPGA更容易实现深度学习的目的。虽然据我们所知,目前没有任何深度学习工具明确表示支持FPGA,不过下面的表格列出了哪些工具正朝支持OpenCL方向发展:
 Caffe,由伯克利视觉与学习中心开发,其GreenTea项目对OpenCL提供非正式支持。
Caffe另有支持OpenCL的AMD版本。 Torch,基于Lua语言的科学计算框架,使用范围广,其项目CLTorch对OpenCL提供非正式支持。
Theano,由蒙特利尔大学开发,其正在研发的gpuarray后端对OpenCL提供非正式支持。
 DeepCL,由HughPerkins开发的OpenCL库,用于训练卷积神经网络。
 对于刚进入此领域、希望选择工具的人来说,我们的建议是从Caffe开始,因为它十分常用,支持性好,用户界面简单。利用Caffe的modelzoo库,也很容易用预先训练好的模型进行试验。
4.2.增加训练自由度
     有人或许以为训练机器学习算法的过程是完全自动的,实际上有一些超参数需要调整。对于深度学习尤为如此,模型在参数量上的复杂程度经常伴随着大量可能的超参数组合。可以调整的超参数包括训练迭代次数、学习速率、批梯度尺寸、隐藏单元数和层数等等。调整这些参数,等于在所有可能的模型中,挑选最适用于某个问题的模型。传统做法中,超参数的设置要么依照经验,要么根据系统网格搜索或更有效的随机搜索来进行。最近研究者转向了适应性的方法,用超参数调整的尝试结果为配置依据。其中,贝叶斯优化是最常用的方法。
        不管用何种方法调整超参数,目前利用固定架构的训练流程在某种程度上局限了模型的可能性,也就是说,我们或许只在所有的解决方案中管窥了一部分。固定架构让模型内的超参数设置探究变得很容易(比如,隐藏单元数、层数等),但去探索不同模型间的参数设置变得很难(比如,模型类别的不同),因为如果要就一个并不简单符合某个固定架构的模型来进行训练,就可能要花很长时间。相反,FPGA灵活的架构,可能更适合上述优化类型,因为用FPGA能编写一个完全不同的硬件架构并在运行时加速。
 4.3.Low power compute clusters低耗能计算节点集群
      深度学习模型最让人着迷的就是其拓展能力。不管是为了从数据中发现复杂的高层特征,还是为数据中心应用提升性能,深度学习技术经常在多节点计算基础架构间进行拓展。目前的解决方案使用具备Infiniband互连技术的GPU集群和MPI,从而实现上层的并行计算能力和节点间数据的快速传输。然而,当大规模应用的负载越来越各不相同,使用FPGA可能会是更优的方法。FPGA的可编程行允许系统根据应用和负载进行重新配置,同时FPGA的能耗比高,有助于下一代数据中心降低成本。
5.结语
      相比GPU和GPP,FPGA在满足深度学习的硬件需求上提供了具有吸引力的替代方案。凭借流水线并行计算的能力和高效的能耗,FPGA将在一般的深度学习应用中展现GPU和GPP所没有的独特优势。同时,算法设计工具日渐成熟,如今将FPGA集成到常用的深度学习框架已成为可能。未来,FPGA将有效地适应深度学习的发展趋势,从架构上确保相关应用和研究能够自由实现。
文章来源:网络 查看全部
        最近几年数据量和可访问性的迅速增长,使得人工智能的算法设计理念发生了转变。人工建立算法的做法被计算机从大量数据中自动习得可组合系统的能力所取代,使得计算机视觉、语音识别、自然语言处理等关键领域都出现了重大突破。深度学习是这些领域中所最常使用的技术,也被业界大为关注。然而,深度学习模型需要极为大量的数据和计算能力,只有更好的硬件加速条件,才能满足现有数据和模型规模继续扩大的需求。现有的解决方案使用图形处理单元(GPU)集群作为通用计算图形处理单元(GPGPU),但现场可编程门阵列(FPGA)提供了另一个值得探究的解决方案。日渐流行的FPGA设计工具使其对深度学习领域经常使用的上层软件兼容性更强,使得FPGA更容易为模型搭建和部署者所用。FPGA架构灵活,使得研究者能够在诸如GPU的固定架构之外进行模型优化探究。同时,FPGA在单位能耗下性能更强,这对大规模服务器部署或资源有限的嵌入式应用的研究而言至关重要。本文从硬件加速的视角考察深度学习与FPGA,指出有哪些趋势和创新使得这些技术相互匹配,并激发对FPGA如何帮助深度学习领域发展的探讨。
1.简介
机器学习对日常生活影响深远。无论是在网站上点击个性化推荐内容、在智能手机上使用语音沟通,或利用面部识别技术来拍照,都用到了某种形式的人工智能技术。这股人工智能的新潮流也伴随着算法设计的理念转变。过去基于数据的机器学习大多是利用具体领域的专业知识来人工地“塑造”所要学习的“特征”,计算机从大量示例数据中习得组合特征提取系统的能力,则使得计算机视觉、语音识别和自然语言处理等关键领域实现了重大的性能突破。对这些数据驱动技术的研究被称为深度学习,如今正受到技术界两个重要群体的关注:一是希望使用并训练这些模型、从而实现极高性能跨任务计算的研究者,二是希望为现实世界中的新应用来部署这些模型的应用科学家。然而,他们都面临着一个限制条件,即硬件加速能力仍需加强,才可能满足扩大现有数据和算法规模的需求。
         对于深度学习来说,目前硬件加速主要靠使用图形处理单元(GPU)集群作为通用计算图形处理单元(GPGPU)。相比传统的通用处理器(GPP),GPU的核心计算能力要多出几个数量级,也更容易进行并行计算。尤其是NVIDIACUDA,作为最主流的GPGPU编写平台,各个主要的深度学习工具均用其来进行GPU加速。最近,开放型并行程序设计标准OpenCL作为异构硬件编程的替代性工具备受关注,而对这些工具的热情也在高涨。虽然在深度学习领域内,OpenCL获得的支持相较CUDA还略逊一筹,但OpenCL有两项独特的性能。首先,OpenCL对开发者开源、免费,不同于CUDA单一供应商的做法。其次,OpenCL支持一系列硬件,包括GPU、GPP、现场可编程门阵列(FPGA)和数字信号处理器(DSP)。
 1.1.FPGA 作为GPU在算法加速上强有力的竞争者,FPGA是否立即支持不同硬件,显得尤为重要。FPGA与GPU不同之处在于硬件配置灵活,且FPGA在运行深入学习中关键的子程序(例如对滑动窗口的计算)时,单位能耗下通常能比GPU提供更好的表现。不过,设置FPGA需要具体硬件的知识,许多研究者和应用科学家并不具备,正因如此,FPGA经常被看作一种行家专属的架构。
        最近,FPGA工具开始采用包括OpenCL在内的软件级编程模型,使其越来越受经主流软件开发训练的用户青睐。 对考察一系列设计工具的研究者而言,其对工具的筛选标准通常与其是否具备用户友好的软件开发工具、是否具有灵活可升级的模型设计方法以及是否能迅速计算、以缩减大模型的训练时间有关。随着FPGA因为高抽象化设计工具的出现而越来越容易编写,其可重构性又使得定制架构成为可能,同时高度的并行计算能力提高了指令执行速度,FPGA将为深度学习的研究者带来好处。
        对应用科学家而言,尽管有类似的工具级选择,但硬件挑选的重点在于最大化提高单位能耗的性能,从而为大规模运行降低成本。所以,FPGA凭借单位能耗的强劲性能,加上为特定应用定制架构的能力,就能让深度学习的应用科学家受益。 FPGA能满足两类受众的需求,是一个合乎逻辑的选择。本文考察FPGA上深度学习的现状,以及目前用于填补两者间鸿沟的技术发展。因此,本文有三个重要目的。首先,指出深度学习领域存在探索全新硬件加速平台的机会,而FPGA是一个理想的选择。其次,勾勒出FPGA支持深度学习的现状,指出潜在的限制。最后,对FPGA硬件加速的未来方向提出关键建议,帮助解决今后深度学习所面临的问题。
 2.FPGA 传统来说,在评估硬件平台的加速时,必须考虑到灵活性和性能之间的权衡。一方面,通用处理器(GPP)可提供高度的灵活性和易用性,但性能相对缺乏效率。这些平台往往更易于获取,可以低廉的价格生产,并且适用于多种用途和重复使用。另一方面,专用集成电路(ASIC)可提供高性能,但代价是不够灵活且生产难度更大。这些电路专用于某特定的应用程序,并且生产起来价格昂贵且耗时。
      FPGA是这两个极端之间的折中。FPGA属于一类更通用的可编程逻辑设备(PLD),并且简单来说,是一种可重新配置的集成电路。因此,FPGA既能提供集成电路的性能优势,又具备GPP可重新配置的灵活性。FPGA能够简单地通过使用触发器(FF)来实现顺序逻辑,并通过使用查找表(LUT)来实现组合逻辑。现代的FPGA还含有硬化组件以实现一些常用功能,例如全处理器内核、通信内核、运算内核和块内存(BRAM)。另外,目前的FPGA趋势趋向于系统芯片(SoC)设计方法,即ARM协处理器和FPGA通常位于同一芯片中。目前的FPGA市场由Xilinx主导,占据超过85%的市场份额。此外,FPGA正迅速取代ASIC和应用专用标准产品(ASSP)来实现固定功能逻辑。FPGA市场规模预计在2016年将达到100亿美元。
      对于深度学习而言,FPGA提供了优于传统GPP加速能力的显著潜力。GPP在软件层面的执行依赖于传统的冯·诺依曼架构,指令和数据存储于外部存储器中,在需要时再取出。这推动了缓存的出现,大大减轻了昂贵的外部存储器操作。该架构的瓶颈是处理器和存储器之间的通信,这严重削弱了GPP的性能,尤其影响深度学习经常需要获取的存储信息技术。相比较而言,FPGA的可编程逻辑原件可用于实现普通逻辑功能中的数据和控制路径,而不依赖于冯·诺伊曼结构。它们也能够利用分布式片上存储器,以及深度利用流水线并行,这与前馈性深度学习方法自然契合。现代FPGA还支持部分动态重新配置,当FPGA的一部分被重新配置时另一部分仍可使用。这将对大规模深度学习模式产生影响,FPGA的各层可进行重新配置,而不扰乱其他层正在进行的计算。这将可用于无法由单个FPGA容纳的模型,同时还可通过将中间结果保存在本地存储以降低高昂的全球存储读取费用。
        最重要的是,相比于GPU,FPGA为硬件加速设计的探索提供了另一个视角。GPU和其它固定架构的设计是遵循软件执行模型,并围绕自主计算单元并行以执行任务搭建结构。由此,为深度学习技术开发GPU的目标就是使算法适应这一模型,让计算并行完成、确保数据相互依赖。与此相反,FPGA架构是为应用程序专门定制的。在开发FPGA的深度学习技术时,较少强调使算法适应某固定计算结构,从而留出更多的自由去探索算法层面的优化。需要很多复杂的下层硬件控制操作的技术很难在上层软件语言中实现,但对FPGA执行却特别具有吸引力。然而,这种灵活性是以大量编译(定位和回路)时间为成本的,对于需要通过设计循环快速迭代的研究人员来说这往往会是个问题。
       除了编译时间外,吸引偏好上层编程语言的研究人员和应用科学家来开发FPGA的问题尤为艰难。虽然能流利使用一种软件语言常常意味着可以轻松地学习另一种软件语言,但对于硬件语言翻译技能来说却非如此。针对FPGA最常用的语言是Verilog和VHDL,两者均为硬件描述语言(HDL)。这些语言和传统的软件语言之间的主要区别是,HDL只是单纯描述硬件,而例如C语言等软件语言则描述顺序指令,并无需了解硬件层面的执行细节。有效地描述硬件需要对数字化设计和电路的专业知识,尽管一些下层的实现决定可以留给自动合成工具去实现,但往往无法达到高效的设计。因此,研究人员和应用科学家倾向于选择软件设计,因其已经非常成熟,拥有大量抽象和便利的分类来提高程序员的效率。这些趋势使得FPGA领域目前更加青睐高度抽象化的设计工具。
 FPGA深度学习研究里程碑:
 1987VHDL成为IEEE标准
1992GANGLION成为首个FPGA神经网络硬件实现项目(Coxetal.)
1994Synopsys推出第一代FPGA行为综合方案 1996VIP成为首个FPGA的CNN实现方案(Cloutieretal.)
 2005FPGA市场价值接近20亿美元 2006首次利用BP算法在FPGA上实现5GOPS的处理能力
2011Altera推出OpenCL,支持FPGA 出现大规模的基于FPGA的CNN算法研究(Farabetetal.)
 2016在微软Catapult项目的基础上,出现基于FPGA的数据中心CNN算法加速(Ovtcharovetal.)
4.未来展望
       深度学习的未来不管是就FPGA还是总体而言,主要取决于可扩展性。要让这些技术成功解决未来的问题,必须要拓展到能够支持飞速增长的数据规模和架构。FPGA技术正在适应这一趋势,而硬件正朝着更大内存、更少的特征点数量、更好的互连性发展,来适应FPGA多重配置。英特尔收购了Altera,IBM与Xilinx合作,都昭示着FPGA领域的变革,未来也可能很快看到FPGA与个人应用和数据中心应用的整合。另外,算法设计工具可能朝着进一步抽象化和体验软件化的方向发展,从而吸引更广技术范围的用户。
4.1.常用深度学习软件工具
      在深度学习最常用的软件工具中,有些工具已经在支持CUDA的同时,认识到支持OpenCL的必要性。这将使得FPGA更容易实现深度学习的目的。虽然据我们所知,目前没有任何深度学习工具明确表示支持FPGA,不过下面的表格列出了哪些工具正朝支持OpenCL方向发展:
 Caffe,由伯克利视觉与学习中心开发,其GreenTea项目对OpenCL提供非正式支持。
Caffe另有支持OpenCL的AMD版本。 Torch,基于Lua语言的科学计算框架,使用范围广,其项目CLTorch对OpenCL提供非正式支持。
Theano,由蒙特利尔大学开发,其正在研发的gpuarray后端对OpenCL提供非正式支持。
 DeepCL,由HughPerkins开发的OpenCL库,用于训练卷积神经网络。
 对于刚进入此领域、希望选择工具的人来说,我们的建议是从Caffe开始,因为它十分常用,支持性好,用户界面简单。利用Caffe的modelzoo库,也很容易用预先训练好的模型进行试验。
4.2.增加训练自由度
     有人或许以为训练机器学习算法的过程是完全自动的,实际上有一些超参数需要调整。对于深度学习尤为如此,模型在参数量上的复杂程度经常伴随着大量可能的超参数组合。可以调整的超参数包括训练迭代次数、学习速率、批梯度尺寸、隐藏单元数和层数等等。调整这些参数,等于在所有可能的模型中,挑选最适用于某个问题的模型。传统做法中,超参数的设置要么依照经验,要么根据系统网格搜索或更有效的随机搜索来进行。最近研究者转向了适应性的方法,用超参数调整的尝试结果为配置依据。其中,贝叶斯优化是最常用的方法。
        不管用何种方法调整超参数,目前利用固定架构的训练流程在某种程度上局限了模型的可能性,也就是说,我们或许只在所有的解决方案中管窥了一部分。固定架构让模型内的超参数设置探究变得很容易(比如,隐藏单元数、层数等),但去探索不同模型间的参数设置变得很难(比如,模型类别的不同),因为如果要就一个并不简单符合某个固定架构的模型来进行训练,就可能要花很长时间。相反,FPGA灵活的架构,可能更适合上述优化类型,因为用FPGA能编写一个完全不同的硬件架构并在运行时加速。
 4.3.Low power compute clusters低耗能计算节点集群
      深度学习模型最让人着迷的就是其拓展能力。不管是为了从数据中发现复杂的高层特征,还是为数据中心应用提升性能,深度学习技术经常在多节点计算基础架构间进行拓展。目前的解决方案使用具备Infiniband互连技术的GPU集群和MPI,从而实现上层的并行计算能力和节点间数据的快速传输。然而,当大规模应用的负载越来越各不相同,使用FPGA可能会是更优的方法。FPGA的可编程行允许系统根据应用和负载进行重新配置,同时FPGA的能耗比高,有助于下一代数据中心降低成本。
5.结语
      相比GPU和GPP,FPGA在满足深度学习的硬件需求上提供了具有吸引力的替代方案。凭借流水线并行计算的能力和高效的能耗,FPGA将在一般的深度学习应用中展现GPU和GPP所没有的独特优势。同时,算法设计工具日渐成熟,如今将FPGA集成到常用的深度学习框架已成为可能。未来,FPGA将有效地适应深度学习的发展趋势,从架构上确保相关应用和研究能够自由实现。
文章来源:网络
767 浏览

80后工程师独白:那些年,我们一起玩过的单片机

电气控制类 Amazing 2017-03-23 13:05 发表了文章 来自相关话题

“   梦想这东西和经典一样,永远不会因为时间而褪色,反而更显珍贵!            
----献给所有有梦想的人

我是一个平凡的工程师,标准的80后,从事单片机及嵌入式相关工作已经有几年有余。每天忙忙碌碌,上班下班,既有做出产品时的开心,也有调试程序时的痛苦。一个平凡的人,做着一些平凡的事,每天过着平凡的生活。

有人说做电子工程师是年轻人的活,过了30还不转管理无论是体力上还是精力上都无法胜任了。这句话有一定的道理,但如果兴趣依旧为何不继续追寻自己的梦想呢?从小我就对机械、电子方面的东西感兴趣。听父母说,每次买回的玩具我都要拆开看看里面的结构,美其名曰:看看为啥能动?为啥能工作。到现在有时回到乡下的老房子里,还能看到不少缺胳膊少腿的玩具呢。

还记得这些吗?当年这些都被我拆得七零八落的。特别是小青蛙,可是研究了好一阵子呢。

真正让我对电子感兴趣的还得从一个著名的玩具开始,它就是经典的任天堂红白机。想当初,把这个东西搬回家时还兴奋了不少时间呢,一个暑假把所有能玩的游戏都玩了遍,接着就在琢磨这东西真神奇,到底里面有啥东西呢?拆开一看发现居然全都是绿绿的板子,上面还有不少黑色的玩意。忽然觉得做这个东西的人好伟大,以后自己也要学会做这个。

80后的经典啊,我也是从这里对电的一类东西感兴趣的

真正开始接触电子、电脑这一块那就到大学了。当时信息太闭塞了,填志愿的时候也不太清楚计算机、电子信息工程、通信专业都有啥区别。只是问了下同乡的几个师兄,都说计算机是今后的发展。既然是这样,那就报呗。于是我把所有能填的地方都填满了计算机专业,功夫不负有心人,最后还真去了个二本的计算机系。

(其实现在想起来我最应该去的就是电子信息工程或机电工程专业,毕竟这两个专业学的才是后来我们所说的嵌入式,不过好在该学校的计算机系既不偏软也不偏硬,属于软件也学硬件也学的那一种,所以大学四年还是学到了不少东西的)

大学4年的时间是短暂的,在这里我还要鄙视下某些所谓的大学老师,记得有一次上微机原理讲到8253、8255我就问:这个东西现在还在用吗?能不能弄个实物来看看?老师当时回答我说:这个芯片已经不用了,所以也不能找到实物,大家只要记住它就好。当时我就无语,既然淘汰的东西为啥要学???不过后来事实证明这些东西老是老了一点,但现在在很多的地方还是在用的。当然也不是说所有的大学老师都是严重脱离实际的,有些老师还是很厉害的,我就有幸碰到了一个,据说以前是某个公司的技术主管,专弄单片机这块。他让我知道了任天堂红白机里面绿绿的东西叫做PCB。有时他上课会给我们带一些小的玩意,比如说让单片机做流水灯,让蜂鸣器唱歌等等,让我们这些人崇拜的不行了。也正是在他的带领下我开始于单片机结下了不解之缘。





51单片机开发板,我们就是从这里开始的。

现在想想当时挺有意思的,在用51单片机做完了所有实验后忽然感觉它真是无所不能,所有东西都琢磨着是不是能用51单片机完成,甚至尝试着用51单片机做个手机啥的玩玩(当然,这是无法实现的J),不过还是做了很多好玩的东西,比如说远距离万能遥控器啦,晚上偷偷的遥控对面楼的电视。51大概玩了1年左右,期间还把PCB给画了一遍,学会了用PROTEL。

在一次偶然的机会听说51过时了,ARM才是现在的老大,于是省吃俭用花了600多大洋弄了块44B0X的板子,拿回来一看傻眼了,比51复杂的多啊,光是引脚就密密麻麻的一排,看都看不清,后来听师兄说居然有人能够徒手焊接,更是佩服得五体投地。






经典的44B0X板子,还记得吗?据说这块板子是某个高手布的线,所有的44B0X都是参考它的,堪称经典。到目前有人学习PCB走线我还要求他好好琢磨这块板子呢。

除了主芯片外,其它外围设备也不简单啊,网卡,硬盘接口,FLASH等等应有尽有,既然买了就硬着头皮学呗,不过好在有51的基础,这块板子裸奔的程序很快就搞定了,也琢磨出个味来:不管芯片多复杂,最终到底无非就是配置下寄存器而已,只要配对了寄存器其它一切都好办。在软件方面就相对复杂多了,为了搞这块板子我还特意去买了好几本LINUX方面的书,现在闲暇下来翻翻这些书还是很有感觉的。不过linux太过于复杂了,花了大半年的时间我才把这些书粗略的看了一遍。





经典的Linux书籍,你看过没有?

很多精髓的东西都没有弄清楚。这时候已经是大三下学期,刚好老师有个小项目看到我弄得还行就派我过去干了,其实东西现在想起来挺简单:有4~5路模拟信号采集到系统中,再通过AD转换变为数字信号用单片机进行运算,再把结果通过RS232发送给上位机软件。但这毕竟是我接的第一个项目,心里的忐忑可想而知,特别怕搞不定丢了老师的脸。于是在拿完需求后,先自己买了点器件用万用表搭了一个电路先试试。项目最终很成功,我也拿到了第一份报酬。






丑陋的自搭电路

大学4年很快就过去了,带着一堆的开发板、书籍和满腹的电子知识我离开了校园。很快我就找到了第一份工作:在一家小公司做技术员,公司主要的产品是为各种电子设备定做测试仪器。由于我学的是计算机专业,所以公司希望招我来做上位机软件。这我可傻眼了,以前所有的时间都花在了电子方面,谈到做上位机软件倒还真的不会。毛主席说过:世上的事最怕“认真”二字。没学过没关系,只要现在开始也不晚。那到底学什么语言和开发工具呢?跑到CSDN晃了一圈,很多人都说C++功能强大,以后发展也好。不过到底是VC还是C++ builder呢?VC难学,但据说学会了以后啥都好办了。既然是这样,那我就弄VC吧。好在公司的任务不紧,有充足的时间看书和学习,再加上有几个前辈指引,学习起来轻松多了。如果有朋友现在还想学习VC和windows程序设计的话,下面几本书可不能错过。这些书都是对应于VC 6.0的,到现在估计应该有对应.net的新版本了吧。
 
在这个公司的两年里先后完成了许多小的项目,从一开始的帮别人打下手,到后来的自己负责、带徒弟,感觉自己成长了很多。离开这家公司后,我往北边发展。进入了一家做视频相关系统的公司B,公司不大,但各个都是技术强人,这也给我了不小的压力。还记得入职的第一天,项目经理就和我说:我们这任务比较紧,你今天把入职手续办完就进入项目组吧,最近视频点播系统那边活比较多,你先去那边。于是我就误打误撞进入了视频领域,想想自己对这方面什么都不懂还真是胆大,不过这个选择对我今后的方向有重大影响,这个后面再说。

搞过视频的朋友应该都知道,这东西对工程师的综合素质要求还是挺高的,硬件方面所用处理器的都是主频比较高,性能比较好的,很多都是用DSP或FPGA来做;软件方面对算法、数据结构要有较深的理解。不过当时我可不知道这些,总觉得无非就是单片机的升级版本,没什么大不了的。到了项目组后,简单的和项目沟通了下,了解到目前上位机这边有个问题:无法获取当前鼠标所指的位置的文字。当时我立马想到金山词霸不是有个屏幕取词功能么?应该和这个类似。于是立即动手查资料,看到到底是什么原理。等我把相关的资料看完后已经到了下午5点多钟,这是大家都陆陆续续准备下班了,正当我犹豫要不要告诉项目经理时,项目经理走到了我身边于是我顺势就把自己的想法告诉了他,只见他两眼“闪光”,说:那个谁。。。还有那个谁。。。都别走了,留下来加个班,我们一起把这个东西解决了。等到完成基本框架已经到了深夜1点多钟,路上已经基本看不到行人了,晚风吹在脸上,心里充满了作为工程师的自豪,像一个得胜而归的将军。

在这里我特别要感谢项目经理,在B公司的3年时间里是我成长最快的3年,我陆续接触了AT9200,I.MX系列,OMAP,达芬奇系列等各种处理器的开发,特别是达芬奇系列,当时公司里的板子才2块,项目经理居然允许我带一块回家,要知道当时这个板子要好几万呢。当时可把我高兴坏了,像中了500万一样。

可能在一个地方久了就会厌倦,B公司虽然不错,但几年的光阴已经把我的激情磨灭,而我又是个需要激情的人。所以最终我还是从B公司离职了。离职后并没有立即找工作,当然并不是找不到,而是我需要一段时间放松下自己,整理下心情。恰巧这段时间各个半导体公司在不停的开研讨会,像ARM, TI,ST,Xilinx等等。于是乎,我就免费吃了好几顿大餐:)不过最让我印象深刻的是XILINX的研讨会,它们当时在推Spartan系列FPGA。说实话,我对这个FPGA这个东西只有耳闻,但到底是个什么东西还真不知道。在研讨会上看到了它们公司推出的几个案例,其中一个就是视频监控与模式识别的。由于我本身就是做这个的,所以对这块听得尤为仔细。相比于传统的DSP来做算法,FPGA做算法的速度、效率优势更为明显。

于是我很快就有了下一次目标----学习FPGA。不过想法是好的,不过FPGA学起来真是相当的麻烦:开发板很贵,完全硬件编程。这对我们软件出生的人真是不小的挑战。好在当时xilinx开研讨会赠送了一块BASYS开发板,于是我就从它开始踏上了FPGA的不归路。





有人问:一直学习累不累?有的时候想想确实很累。

夜深人静的时候,总是会一个人坐在窗前发呆:为什么我要不停的学习?我到底要什么?其实我并不知道这些东西到底有什么用,或许只是为了实现童年时期的一个梦,就像筷子兄弟说的:梦想这东西和经典一样,永远不会因为时间而褪色,反而更显珍贵!
 
 
来源:网络 查看全部
“   梦想这东西和经典一样,永远不会因为时间而褪色,反而更显珍贵!            
----献给所有有梦想的人

我是一个平凡的工程师,标准的80后,从事单片机及嵌入式相关工作已经有几年有余。每天忙忙碌碌,上班下班,既有做出产品时的开心,也有调试程序时的痛苦。一个平凡的人,做着一些平凡的事,每天过着平凡的生活。

有人说做电子工程师是年轻人的活,过了30还不转管理无论是体力上还是精力上都无法胜任了。这句话有一定的道理,但如果兴趣依旧为何不继续追寻自己的梦想呢?从小我就对机械、电子方面的东西感兴趣。听父母说,每次买回的玩具我都要拆开看看里面的结构,美其名曰:看看为啥能动?为啥能工作。到现在有时回到乡下的老房子里,还能看到不少缺胳膊少腿的玩具呢。

还记得这些吗?当年这些都被我拆得七零八落的。特别是小青蛙,可是研究了好一阵子呢。

真正让我对电子感兴趣的还得从一个著名的玩具开始,它就是经典的任天堂红白机。想当初,把这个东西搬回家时还兴奋了不少时间呢,一个暑假把所有能玩的游戏都玩了遍,接着就在琢磨这东西真神奇,到底里面有啥东西呢?拆开一看发现居然全都是绿绿的板子,上面还有不少黑色的玩意。忽然觉得做这个东西的人好伟大,以后自己也要学会做这个。

80后的经典啊,我也是从这里对电的一类东西感兴趣的

真正开始接触电子、电脑这一块那就到大学了。当时信息太闭塞了,填志愿的时候也不太清楚计算机、电子信息工程、通信专业都有啥区别。只是问了下同乡的几个师兄,都说计算机是今后的发展。既然是这样,那就报呗。于是我把所有能填的地方都填满了计算机专业,功夫不负有心人,最后还真去了个二本的计算机系。

(其实现在想起来我最应该去的就是电子信息工程或机电工程专业,毕竟这两个专业学的才是后来我们所说的嵌入式,不过好在该学校的计算机系既不偏软也不偏硬,属于软件也学硬件也学的那一种,所以大学四年还是学到了不少东西的)

大学4年的时间是短暂的,在这里我还要鄙视下某些所谓的大学老师,记得有一次上微机原理讲到8253、8255我就问:这个东西现在还在用吗?能不能弄个实物来看看?老师当时回答我说:这个芯片已经不用了,所以也不能找到实物,大家只要记住它就好。当时我就无语,既然淘汰的东西为啥要学???不过后来事实证明这些东西老是老了一点,但现在在很多的地方还是在用的。当然也不是说所有的大学老师都是严重脱离实际的,有些老师还是很厉害的,我就有幸碰到了一个,据说以前是某个公司的技术主管,专弄单片机这块。他让我知道了任天堂红白机里面绿绿的东西叫做PCB。有时他上课会给我们带一些小的玩意,比如说让单片机做流水灯,让蜂鸣器唱歌等等,让我们这些人崇拜的不行了。也正是在他的带领下我开始于单片机结下了不解之缘。

QQ截图20170323130105.png

51单片机开发板,我们就是从这里开始的。

现在想想当时挺有意思的,在用51单片机做完了所有实验后忽然感觉它真是无所不能,所有东西都琢磨着是不是能用51单片机完成,甚至尝试着用51单片机做个手机啥的玩玩(当然,这是无法实现的J),不过还是做了很多好玩的东西,比如说远距离万能遥控器啦,晚上偷偷的遥控对面楼的电视。51大概玩了1年左右,期间还把PCB给画了一遍,学会了用PROTEL。

在一次偶然的机会听说51过时了,ARM才是现在的老大,于是省吃俭用花了600多大洋弄了块44B0X的板子,拿回来一看傻眼了,比51复杂的多啊,光是引脚就密密麻麻的一排,看都看不清,后来听师兄说居然有人能够徒手焊接,更是佩服得五体投地。

QQ截图20170323130229.png


经典的44B0X板子,还记得吗?据说这块板子是某个高手布的线,所有的44B0X都是参考它的,堪称经典。到目前有人学习PCB走线我还要求他好好琢磨这块板子呢。

除了主芯片外,其它外围设备也不简单啊,网卡,硬盘接口,FLASH等等应有尽有,既然买了就硬着头皮学呗,不过好在有51的基础,这块板子裸奔的程序很快就搞定了,也琢磨出个味来:不管芯片多复杂,最终到底无非就是配置下寄存器而已,只要配对了寄存器其它一切都好办。在软件方面就相对复杂多了,为了搞这块板子我还特意去买了好几本LINUX方面的书,现在闲暇下来翻翻这些书还是很有感觉的。不过linux太过于复杂了,花了大半年的时间我才把这些书粗略的看了一遍。

QQ截图20170323130314.png

经典的Linux书籍,你看过没有?

很多精髓的东西都没有弄清楚。这时候已经是大三下学期,刚好老师有个小项目看到我弄得还行就派我过去干了,其实东西现在想起来挺简单:有4~5路模拟信号采集到系统中,再通过AD转换变为数字信号用单片机进行运算,再把结果通过RS232发送给上位机软件。但这毕竟是我接的第一个项目,心里的忐忑可想而知,特别怕搞不定丢了老师的脸。于是在拿完需求后,先自己买了点器件用万用表搭了一个电路先试试。项目最终很成功,我也拿到了第一份报酬。

QQ截图20170323130349.png


丑陋的自搭电路

大学4年很快就过去了,带着一堆的开发板、书籍和满腹的电子知识我离开了校园。很快我就找到了第一份工作:在一家小公司做技术员,公司主要的产品是为各种电子设备定做测试仪器。由于我学的是计算机专业,所以公司希望招我来做上位机软件。这我可傻眼了,以前所有的时间都花在了电子方面,谈到做上位机软件倒还真的不会。毛主席说过:世上的事最怕“认真”二字。没学过没关系,只要现在开始也不晚。那到底学什么语言和开发工具呢?跑到CSDN晃了一圈,很多人都说C++功能强大,以后发展也好。不过到底是VC还是C++ builder呢?VC难学,但据说学会了以后啥都好办了。既然是这样,那我就弄VC吧。好在公司的任务不紧,有充足的时间看书和学习,再加上有几个前辈指引,学习起来轻松多了。如果有朋友现在还想学习VC和windows程序设计的话,下面几本书可不能错过。这些书都是对应于VC 6.0的,到现在估计应该有对应.net的新版本了吧。
 
在这个公司的两年里先后完成了许多小的项目,从一开始的帮别人打下手,到后来的自己负责、带徒弟,感觉自己成长了很多。离开这家公司后,我往北边发展。进入了一家做视频相关系统的公司B,公司不大,但各个都是技术强人,这也给我了不小的压力。还记得入职的第一天,项目经理就和我说:我们这任务比较紧,你今天把入职手续办完就进入项目组吧,最近视频点播系统那边活比较多,你先去那边。于是我就误打误撞进入了视频领域,想想自己对这方面什么都不懂还真是胆大,不过这个选择对我今后的方向有重大影响,这个后面再说。

搞过视频的朋友应该都知道,这东西对工程师的综合素质要求还是挺高的,硬件方面所用处理器的都是主频比较高,性能比较好的,很多都是用DSP或FPGA来做;软件方面对算法、数据结构要有较深的理解。不过当时我可不知道这些,总觉得无非就是单片机的升级版本,没什么大不了的。到了项目组后,简单的和项目沟通了下,了解到目前上位机这边有个问题:无法获取当前鼠标所指的位置的文字。当时我立马想到金山词霸不是有个屏幕取词功能么?应该和这个类似。于是立即动手查资料,看到到底是什么原理。等我把相关的资料看完后已经到了下午5点多钟,这是大家都陆陆续续准备下班了,正当我犹豫要不要告诉项目经理时,项目经理走到了我身边于是我顺势就把自己的想法告诉了他,只见他两眼“闪光”,说:那个谁。。。还有那个谁。。。都别走了,留下来加个班,我们一起把这个东西解决了。等到完成基本框架已经到了深夜1点多钟,路上已经基本看不到行人了,晚风吹在脸上,心里充满了作为工程师的自豪,像一个得胜而归的将军。

在这里我特别要感谢项目经理,在B公司的3年时间里是我成长最快的3年,我陆续接触了AT9200,I.MX系列,OMAP,达芬奇系列等各种处理器的开发,特别是达芬奇系列,当时公司里的板子才2块,项目经理居然允许我带一块回家,要知道当时这个板子要好几万呢。当时可把我高兴坏了,像中了500万一样。

可能在一个地方久了就会厌倦,B公司虽然不错,但几年的光阴已经把我的激情磨灭,而我又是个需要激情的人。所以最终我还是从B公司离职了。离职后并没有立即找工作,当然并不是找不到,而是我需要一段时间放松下自己,整理下心情。恰巧这段时间各个半导体公司在不停的开研讨会,像ARM, TI,ST,Xilinx等等。于是乎,我就免费吃了好几顿大餐:)不过最让我印象深刻的是XILINX的研讨会,它们当时在推Spartan系列FPGA。说实话,我对这个FPGA这个东西只有耳闻,但到底是个什么东西还真不知道。在研讨会上看到了它们公司推出的几个案例,其中一个就是视频监控与模式识别的。由于我本身就是做这个的,所以对这块听得尤为仔细。相比于传统的DSP来做算法,FPGA做算法的速度、效率优势更为明显。

于是我很快就有了下一次目标----学习FPGA。不过想法是好的,不过FPGA学起来真是相当的麻烦:开发板很贵,完全硬件编程。这对我们软件出生的人真是不小的挑战。好在当时xilinx开研讨会赠送了一块BASYS开发板,于是我就从它开始踏上了FPGA的不归路。

QQ截图20170323130416.png

有人问:一直学习累不累?有的时候想想确实很累。

夜深人静的时候,总是会一个人坐在窗前发呆:为什么我要不停的学习?我到底要什么?其实我并不知道这些东西到底有什么用,或许只是为了实现童年时期的一个梦,就像筷子兄弟说的:梦想这东西和经典一样,永远不会因为时间而褪色,反而更显珍贵!
 
 
来源:网络
580 浏览

人工智能芯片的发展:FPGA的过去,现在和未来

智能科技类 泰迪的礼物 2017-02-20 18:34 发表了文章 来自相关话题

编者按:自Xilinx在1984年创造出FPGA以来,这种可编程逻辑器件凭借性能、上市时间、成本、稳定性和长期维护方面的优势,在通信、医疗、工控和安防等领域占有一席之地,在过去几年也有极高的增长率。而进入了最近两年,由于云计算、高性能计算和人工智能的繁荣,拥有先天优势的FPGA的关注度更是到达了前所未有的高度。本文从基础出发谈及FPGA的过去、现在与未来。

我们知道,相对于专业的ASIC,FPGA有上市时间和成本上的优势。另外,在大多数情况下,FPGA执行某些功能较之CPU上的软件操作更高效。这就是为什么我们认为它不但会运用在数据中心的服务器、交换器、存储层的各个角落,并且具有加速整个工作流程的功能。

然而我们不能过分乐观,尤其是在2015年12月,Intel以167亿美元收购了FPGA生产商Altera之后。

在2014年年底,当时还处于独立的Altera公司高层盯上了基于CPU+FPGA的数据中心并行计算的发展前景——这个当时价值大约10亿美元的市场。而并非数据中心里约2.5亿美元的CPU-GPU市场和直接应用CPU处理器的90亿美元市场。

Altera做出这个决定的原因在于他们认为这个组合较之另外两个方案,有编程的简便性和能效优势。人们对CPU非常熟悉,并发现寻找C程序员也不会太难。因此对大部分开发者来说,在执行运算任务的时候,持续使用这种方案不需要冒太大的风险,但是能源效率相对比较低,尤其是在密集的计算和固有的并行工作负载的情况底下。

至于CPU+GPU的方案,程序员并不是很熟悉,但是拥有很高的效率。

根据Altera的估计,使用OpenCL对混合CPU-FPGA系统进行编程比使用Nvidia的CUDA环境对于程序员来说更容易(某些方面肯定是有争议的),但用HDL来硬编程FPGA是相当困难的,因此需要OpenCL或者通过其他抽象层来将CPU中的负载转移到FPGA上。

Intel收购Altera改变FPGA格局

这个十亿美元的数据中心市场被Altera、Xilinx和其他FPGA供应商瓜分。在Intel于2015年6月收购了Altera之后,这个市场变得更加复杂。

在收购之前的2014年,Altera的19亿美元收入中,有16%来自于与数据中心相关的计算、网络和存储业务,其总值达到3.04亿美元。那些在这个领域深耕十几二十年的通信和无线设备系统制造商想要有更高的能源效率,更低的成本和更高的扩展性,这些都是FPGA所擅长的领域。另外有一点需要提一下,那就是在执行这些功能的时候,使用FPGA并不需要像使用CPU那样需要操作系统和相应的软件。这部分的营收占了Altera营收的44%,总额为8.35亿美元。

Altera另外的22%收入,即4.18亿美元,来自工业控制、军事设备和汽车制造等领域。他们面对相同的困境,因此选择FPGA来处理他们的一些工作负载。

其实早在2014年,英特尔看中了价值1150亿美元的各种类型的芯片潜在市场。当中可编辑逻辑设备(以FPGA为主)约占4%,ASIC占18%,其余为ASSP的大杂烩。

在可编辑逻辑设备的领域中,英特尔预估Altera占有48亿美元市场中的39%,Xilinx占有49%,剩下供应商则占据剩下的12%。

当时英特尔没有收购Altera的原因是因为FPGA业务的增长速度几乎与其数据中心集团(为服务器,存储和交换机制造商提供芯片,芯片组和主板)的速度一样快。

再者,英特尔没有这样做也是因为摩尔定律逐渐缓慢下来的脚步,给FPGA带来了日益增长的竞争威胁。

实际上,如果应用的话,在数据中心里不止安装一个FPGA、GPU或DSP加速器,但不需要安装多个Xeon CPU。由于英特尔不能继续为Xeons提供更多的核心和加速器,所以他们得出了将FPGA当做加速器的结论。

除非FPGA能在数据中心创造5亿美元的收益,或者几年后创造10亿美元或更多的收入。不然英特尔宁愿牺牲两至三倍的Xeon收入,也不会把Xeon的收入拱手相让。

深度学习加持,FPGA前景可人

根据英特尔的预测,他们计划从现在到2023年以接近直线增长率来提升FPGA的业务。对此我们总是抱有怀疑的态度。但FPGA业务随着时间的推移或多或少地在增长(比15年前增长约2.5倍)。

英特尔还预计,FPGA的营收在2014年到2023年之间将会再翻一倍。按照英特尔预测,从2014年到2023年间其复合年增长率为7%,其收入应该略低于预测的89亿美元。有趣的是,由于英特尔的预测并没有把来自数据计算中心(服务器,交换和网络)的FPGA收入份额纳入计划中,这将会发生很大变化。让我们分析一下:

如果Altera和Xilinx的市场份额没有发生改变,且假设Altera的收入在网络,计算和存储的部分保持不变,那么Altera这一部分的业务收入到2023年将会达到5.6亿美元左右。我们认为Intel这样的数据低估了数据中心在提供更有效和灵活计算所面对的压力。不给过我们认为FPGA的前景远远优于这个预测。也就是说,许多FPGA技术的支持者一直期待FPGA在数据中心中获得计算合法化的那天很快到来。

讽刺的是,英特尔本身作为FPGA的编程专家,硬件描述语言的使用者,以及知名的ASIC制造商,竟成为推动FPGA成为加速器优先选择的主要参与者。这样的加速器既能作为独立的离散计算元件,又可以作为混合 CPU-FPGA器件。

这也是为什么从2016年以来,我们看到所有关于Altera的新闻都是昭示FPGA将会有的大规模增的增长。所以至少在短期,他们除了为其他的FPGA制造商作嫁衣裳,几乎别无他法。

这次收购不仅是FPGA发展的里程碑,也是英特尔对FPGA巨大的潜力的承认。FPGA作为未来强大的计算加速器,不但影响主要企业的决策和市场趋势,而且加速企业中的工作负载,促进超大规模数据中心的内部搜索,以及提高高性能计算模拟的地位。

在跨越2017年之际,FPGA在应用程序中等级中新增了机器学习和深度学习,这给FPGA产业敲下了又一重锤。

为什么大家都青睐FPGA

首先,编程FPGA的软件栈已经演进了,尤其是在Altera的帮助下,FPGA增加了对OpenCL开发环境的支持。但不是每个人都是OpenCL的狂热粉丝。

先有Nvidia为其Tesla GPU加速器创建了自己的CUDA并行编程环境。再有SRC计算机公司不但早在2002年就为国防和智能领域提供混合CPU-FPGA系统,到了2016年年中,进一步将自己研发的Carte编程环境进入了商业市场,这个编程环境可以使C和Fortran程序自动转换为FPGA的硬件描述语言(HDL)。

另一个推动FPGA被采用的因素是随着芯片制造技术难以持续缩进,多核CPU性能的提高越来越艰难。 虽然CPU的性能获得了大跳跃,但主要用于扩展CPU的性能吞吐量,而不是单个CPU内核的个体性能。(我们知道架构增强是有难度的)。但是FPGA和GPU加速器的每瓦性能都有了令人信服的改进。

根据微软的运行测试,在执行深度学习算法的时候,CPU-FPGA和CPU-GPU混合计算在的每瓦性能也不相伯仲。GPU在运行中更热和有类似的每瓦性能表现,但是同时他们也带来了更强的工作能力。

提高了每瓦性能解析了为什么世界上最强大的超级计算机在20世纪90年代后期转移到并行集群,并且解析了为什么现在他们转向了混合机器,而不是英特尔的下一个以 CPU-GPU为混合主力的Xeon Phi的处理器“Knights Landing (简称KNL)。

在Altera FPGA协处理器和Xeon Phi处理器Knights Landing的帮助下,英特尔不但可以保持自己的在高端的竞争优势。并且在与Nvidia 、IBM和 Mellanox组成的Open power联盟竞争中继续领先。

英特尔坚信超大规模计算,云端和HPC市场的工作负载会快速成长。为促进其计算业务继续蓬勃发展。这情况下只能成为FPGA的卖家,否则别人就会抢去这唯一的出路。

但英特尔并不是这样跟大家说。他们说:“我们不认为这是一种防守战或者其他,”英特尔的CEO Brian Krzanich在Altera收购消息后的新闻发布会上说。

“我们认为物联网和数据中心都是庞大的。这些也是我们的客户想要构建的产品。我们30%的云端工作负载将在这些产品上,这是基于我们对如何看待趋势变化以及市场发展的预测。

这是用来证明这些工作负载能以一种或另一种方式转移到硅中。我们认为最好的做法是使用有业界最佳性能和成本优势的Xeon处理器和FPGA组合。这将给工业领域带来更好的产品和性能。而在IoT中,这将扩展到潜在市场对抗ASIC和ASSP;而在数据中心中,则会将workload转移到硅,推动云的快速增长。

Krzanich解释道:“你可以把FPGA想象成一堆gate,且能够随时编程。根据他们的想法,其算法会随着时间的推移和学习变得更聪明。FPGA可以用作多个领域的加速器,可以在进行加密的同时进行面部搜索,而且能在基本上在微秒内重新编程FPGA。这比大规模的单个定制部件的成本低得多且具备更高的灵活性。”

英特尔看到了更大的机会

英特尔看到了比这更大的机会。

Intel首席执行官Brian Krzanich在收购完成后宣布,到2020年,将有高达三分之一的云端服务提供商使用混合的CPU-FPGA服务器节点,这是一个令人震惊的消息。这也给从2014年底就开始瞄准的数据中心的Altera带来大约10亿美元的FPGA的机会。这数目大概是Nvidia目前流行的Tesla计算引擎营收的三倍。

在2014年初,英特尔展示了一个相同封装的Xeon-FPGA芯片原型,并且打算在2017年推出这个芯片。这是基于当时数据中心集团GM Diane Bryant提出的一个带有FPGA电路的Xeon设想不久之后推出的。

在宣布Altera交易的电话会议上,Krzanich没有说明退出这款Xeon-FPGA设备的时间,但是他表示英特尔将创建一个面向物联网市场的单die混合Atom-FPGA设备。英特尔正在考究在混合过渡阶段,是否需要为Atom和Altera FPGA做单一封装混合。

在2016年的初太平洋顶峰证券的电话会议中,英特尔的云端基础设施集团总经理Jason Waxman与研究分析师讨论关于英特尔数据中心业务时表示,FPGA已经成为了热门话题。

首先,虽然他没有指名道姓哪家厂商或者任何设备的规格,但是Waxman确定英特尔已经为某些客户提供了Xeon加FPGA的混合计算引擎样品。

在会议期间,Waxman更是畅谈了驱动英特尔收购Altera和插足可编程计算设备的原因。 英特尔显然希望让FPGA成为主流,即使这可能会在数据中心中蚕食Xeon的某些业务。 (我们认为,因为英特尔认为这种自相残杀是不可避免的,控制它的最好方法是使FPGA成为Xeon阵容的一部分。)

Waxman说:“我认为这项收购可能涉及许多事情,而且其中一些已经超越数据中心集团的范围。”

首先,一个潜在的核心业务往往是由制造领先优势驱动。在这方面我们能很好的掌控,而且这样做还有良好的协同作用。

再者,还有物联网“集团”对此也有很强的兴趣。

据我们所知,某些大规模工作负载的扩展(如机器学习,某些网络功能)吸引了越来越多的人关注。我们才意识到我们或者可以在性能方面取得一些突破,这将是一个把FPGA从数据中心应用程序中移植到更多适合的、广泛发展领域的良好机会。

但是在数据中心集团里的协作,FPGA不过是给CPU做个伴,帮助解决云端服务提供商和其他类型的大规模应用程序的问题。

英特尔认为对FPGA加速有优先和大量需求的关键应用包括机器学习,搜索引擎索引,加密和数据压缩。正如Waxman指出,这些往往是很有针对性的,且没有统一的使用案例。这就是Krzanich斩钉截铁说三分之一的云端服务提供商将在五年内使用FPGA加速的依据。

跨越FPGA的障碍

虽然每个人都抱怨编程FPGA有多难,但英特尔并不为此退缩。虽然没有透露太多相关计划的情况下,Waxman提出了一些方法让FPGA更容易被运用和理解。

Waxman说:“我们所拥有的是独一无二的,这是其他人不能给的。那就是我们能够了解这些工作负载和能够推动加速的能力。

“我们看到一条促进机器学习,加速存储加密,加速网络功能的捷径”,Waxman强调。这是基于我们对这些工作负载的深入了解,所以才让我们看到了这样的机会。

但现在FPGA还需要面对一些困难,因为现在人们是写RTL的。我们是一家写RTL的公司,所以我们可以解决这个问题。首先我们使它运作,然后我们可以降低进入的门槛。第三步是真正的规模经济学,而这全部是靠集成和制造的实力。

为了解决这些障碍,我们提供了一系列的方法。

X86+FPGA?

对于那些英特尔打算用FPGA来代替Xeons的猜测,Waxman表示这是一派胡言。

Waxman表示,对于那些对高速率和重复性有强烈需求的算法,具有先天优势的FPGA就是其最好的选择。而那些对延迟有极高需求的数据操作和转换,FPGA也是候选人。

考虑到Altera已经在一个SoC上集成了ARM处理器和FPGA,这很自然地会想到英特尔会试图用X86内核全面替换ARM内核来做类似的设备。但它看起来不像这会发生。

首先,在2016年第二季度英特尔财务声明会上,Krzanich承诺,英特尔将加强对目前使用Altera的ARM-FPGA芯片客户的支持。

Waxman进一步澄清:“我们的观点是会以某种形式把FPGA集成到Xeon里。我们已经公开宣布将会打造第一代使用这种单一封装的设备,但是我们将根据进展情况调整方向,甚至可能会在同一个die上实现。我们将根据客户的反馈了解什么是正确的组合。

顺便说一下,我仍然期待看到没有集成的系统,保持他们会做系统级的协同。我们不会将Xeon与FPGA以多种方式组合集成,反之我们会在市场上找到正确的目标和平衡。”

编程问题首当其冲

虽然Altera的工具集利用OpenCL编程模型获得应用程序代码,并将其转换为RTL(FPGA的原生语言),但是有趣的是,英特尔并不认为FPGA在数据中心的未来成功是基于OpenCL与RTL工具集成的改进或更广泛地采用OpenCL。

Waxman也强调地说:“这并不是以OpenCL为基础的。”虽然我们确实把OpenCL看作是进一步扩大FPGA应用范围的一个途径,但目前FPGA的初始云端部署可能由更具能力的公司完成,但他们并没有要求我们提供OpenCL。Waxman补充说。

Waxman在不能“自由”地谈论的情况下,暗示英特尔有计划使FPGA更容易编程。他表示Intel将会为程序员提供RTL库,方便他们调用在FPGA上部署的例程,并推动在其上执行应用程序的gate的形成,来实现应用程序例程的gate,而不是让他们自己创建例程。这有一定的意义,与Convey(现在是美光科技的一个部门)几年前用FPGA加速系统处理的方案一样。

Waxman说:“我认为有一个连续的加速。在一开始,你可能不知道你正在试图加速什么,只是做了一些尝试,因此在这个阶段加速,你想要的是一个更通用的目的。当你开始真正地想要加速的时候,你会想要更高效的,更低的功耗和更少的空间,这时你就会把焦点移到FPGA上。”

Waxman还引用了Microsoft在其“Catapult”系统上使用FPGA加速的方案来说明。

该系统采用其Open Cloud Server并添加FPGA夹层卡作为加速器。我们在3月份研究了这个项目,将这些加速器应用在Google上执行相同的图像识别训练算法,得出的结果显示,25瓦的FPGA器件相对于使用Nvidia Tesla K20 GPU加速器(235瓦特)的服务器,提高了更好的性能/瓦特。

正如我们所说,我们对于微软和Google发布的性能数据毫无疑问。但是对分立的GPU或FPGA执行应用性能和对自身的热配置文件进行测量都是不公平的。你必须在服务器节点级别上看到这一点。

如果意识到这点,得到FPGA辅助的Microsoft服务器在系统级只稍稍领先于用Tesla K20s的Google服务器。(这些只是我们基于每秒每瓦特图像处理性能的估计)。在这个对比中,Microsoft应该不考虑成本。而且坦白说,不同于什么都配备的Tesla GPU,微软开放云端服务器并没有使用Juice或Cooling。真正的评测怎么都会使用GPU夹层卡,同时还需要考虑热量,性能和价格等因素。

但是Waxman讨论的重点仍然是那个。“在某个时候,你真的很想要那个能给你惊喜,并且能做到更低功耗的方案。而这就是我们的FPGA方案所擅长的方面。”

云端业务

最后要考虑的是英特尔的云端业务。这些客户现在占据了他们数据中心集团收入的25%。

整体来看,他们的购买量每年增长约25%。预计从2016年开始,未来几年整体数据中心集团业务都将增长15%。让我们做一些计算。

如果英特尔的计划如期实施,他的数据中心集团2016年收益将会达到166亿美元。云端服务提供商(其中包括在The Next Platform上使用我们的语言的云端构建者和超大规模计算者)占大约41亿美元,其余归属于英特尔数据中心,销售数据大约为125亿美元。因此,英特尔数据中心的业务增长在12%左右(除云端外),是云端速率的一半。英特尔需要以任何方式来满足云端的增长和明显的FPGA需求,即使它只占用Xeon容量的一点点。对于英特尔来说是这个的选择比让GPU加速持续增长的方案要好。

编程方面可能是阻碍FPGA被广泛采用的一个主因(不像其他加速器,具有丰富的开发生态系统,如Nvidia GPU的CUDA)。这就驱动程序员去基于C语言去做扩展设计,或使用OpenCL,而不是用过去困扰FPGA开发的低级模型。但即使在应用的过程中有这么多里程碑,FPGA仍然不被主流青睐。我们将会探索解决编程问题的方法和机会。

虽然我们已经与这个相对较小的生态系统中的许多供应商(包括Altera和Xilinx,两个主要供应商)进行了交流,但按照FPGA长期研究员Russell Tessier所说,FPGA在更广阔的市场上大展拳脚的日子还在前面,新的发展意味着更广泛的采用。

他在马萨诸塞大学(他还在Altera工作,并且Mentor Graphics收购的虚拟机工程的创始人)研究了FPGA二十多年,他认为FPGA从科学项目到企业应用的形势正式缓变化。他认为其中的关键是来自于设计工具的改进,设计人员不断提高他们设计高水平。除此与外,工具vendor可以更好地引导芯片发展。他补充说,设备内的大量逻辑量意味着用户能够实现更多的功能,这使得FPGA对更多领域更广泛的吸引力。

Tessier说:“在过去几年里,FPGA的一个明显趋势就是这些设备更容易“程序化”。

Xilinx目前鼓励使用其Vivado产品的时候,用C语言进行设计。Altera还有一个已经开发的OpenCL环境。关键是两家公司都在试图创建一个环境,让用户可以使用更熟悉的编程(如C和OpenCL),而不必是使用RTL设计专家所擅长的Verilog或VHDL。虽然在过去几年里取得不错的成绩,但这仍然处于推进的阶段,不过这将有助于把更多的事情地移入主流。

其中一个对FPGA真正有利的因素就是如果将其和芯片搭配使用,建立一个快速的内部互联,它能解决memory和数据移动中的限制。这种优势就是吸引Intel收购Altera的主要诱因。另外,如果像英特尔和IBM这样的大公司能够积极推动FPGA的软件生态系统的建设,其应用市场将会迅速扩张。FPGA的主流化(至少现在没有GPU那么重要,)可能会更快地出现。

Tessier解释:“标准核心处理器集成的增加肯定是关键所在。过去的障碍是语言和工具,随着这些障碍越来越少,为芯片供应商新的合作机会打开了一扇门。由于这些和其他“主流化”趋势出现,不断做出的改变的FPGA的应用领域将继续增长。例如,金融服务商店是第一个使用FPGA进行财务趋势和股票选择分析的用户,但使用案例正在扩大。现在有更强的设备可以解决更大的问题。

更广泛的应用领域

除此之外,FPGA通过的其他新领域发现新用途,包括DNA测序,安全性,加密和一些关键的机器学习任务。

当然,我们希望FPGA变得强大,并“进入”世界上最大的云端和超大规模数据中心,Xilnix数据中心部门副总裁Hamant Dhulla对此表示强烈赞同。他在2016年初,他告诉The Next Platform, “异构计算已经不再是一种趋势,而是现实”,也就是在那个时候,微软推出了使用FPGA的Catapult案例(现在就很多或以后会很多),英特尔收购了Altera以及看到了更多FPGA将广泛应用在数据中心的声明。

从机器学习,高性能计算,数据分析等领域,FPGA在更多样化的应用领域中崭露头角。这些都与FPGA上嵌入了越来越多可用的on-chip存储器有关,这些都是FPGA制造商和潜在终端用户所期待的。 Dhulla表示,市场潜力足够大,让Xilinx能够调整其业务的方式。 过去几年,存储和网络主导了FPGA用户群。但未来五年内,计算端的需求将远远超过存储和网络,并都将沿着稳定的增长线继续发展。

在FPGA其他的热门领域(包括机器学习),它们的更像是一个带有GPU 的“协作”加速器。毫无疑问,对于许多机器学习工作负载的训练部分,GPU是主要的。因此为这里需要很多计算能力,就像HPC一样,其中power envelope tradeoff值得的。但是这些客户购买了数十或数百个GPU,而不是数十万个,庞大的加速器数目正使用在机器学习pipeline的推理部分,这就是市场所在。

正如我们指出的,Nvidia正在使用两个独立的GPU(用M4来训练,更低功耗的M4插入来削减服务器)来抵消这一点,但Dhulla认为FPGA仍然能够通过采用PCIe方法降低功耗,也可以嵌入超大规模数据中心。

他们的SDAccel编程环境通过提供对C,C ++和OpenCL的高级接口,使其更实用,但是推动超大规模和HPC采用的真正途径是通过最终用户示例。

当涉及到这些早期的用户,就像为下一代的FPGA的应用搭建了舞台,Dhulla指向像Edico Genome这样的公司。Xilinx目前还与其他领域的客户合作,包括石油和天然气和金融方面的历史计算方面。早期客户将Xilinx 的FPGA应用在机器学习,图像识别和分析以及安全性方面,这可以看作他们计算加速业务发展的第一步。

尽管双精度性能和总体价格不佳,FPGA的真正的大规模应用机会在于云端。因为FPGA可以提供GPU所不能提供的优势。如果FPGA供应商能够说服其最终用户,他们的加速器可以提供相当大的性能提升(在某些情况下他们会这样做)给关键的工作负载。提供一个通过带有其他加速器(例如CUDA)的complexity-wise的编程环境推进OpenCL开发,通过在云端中提供FPGA来解决价格问题。这可能是一个新的希望。

当然,这种希望来源于将FPGA部署到有超密集服务器云端架构内,而不是在单机的销售上。这种模式已经在FPGA的金融服务中发生。

正如他们GPU加速器“伙伴”围绕深度学习进行拉动,以便迅速得到更多的用户, FPGA设备在探索一个通过解决神经网络和深度学习的问题的方式找寻入侵市场的真正的机会。

新的应用程序主机意味着新的市场,随着云端应用的推广消除了一些管理开销,它可能意味着更广泛的采用。FPGA供应商努力推动它在一些关键的机器学习,神经网络和搜索方面的应用。FPGA在诸如自然语言处理,医学成像,深度数据检测等领域中的超大规模上下文中变得越来越普遍。

在过去一年里,FPGA的多种应用得到曝光,特别是在深度学习和神经网络,以及图像识别和自然语言处理等领域。例如,微软使用FPGA在1,632个节点上提供2倍的搜索服务,并采用创新的高吞吐量网络来支持Altera FPGA驱动的工作。中国的搜索引擎巨头百度(也是许多深度学习和神经网络任务GPU用户)正在用FPGA执行存储控制,其每天的数据吞吐量在100TB到1PB之间。

使用FPGA的大规模数据中心和其他领域的应用正在吸引人们对FPGA的单精度浮点性能的更多关注。

虽然一些案例使用(包括百度示例),将GPU作为计算加速器和FPGA用在存储端,但Altera,Xilnix,Nallatech和IBM的研究人员在OpenPower联盟展示了FPGA在云端深度学习的光明前景。

可以说现在属于FPGA的一个黄金时代。
 
 
来源:网络 查看全部
编者按:自Xilinx在1984年创造出FPGA以来,这种可编程逻辑器件凭借性能、上市时间、成本、稳定性和长期维护方面的优势,在通信、医疗、工控和安防等领域占有一席之地,在过去几年也有极高的增长率。而进入了最近两年,由于云计算、高性能计算和人工智能的繁荣,拥有先天优势的FPGA的关注度更是到达了前所未有的高度。本文从基础出发谈及FPGA的过去、现在与未来。

我们知道,相对于专业的ASIC,FPGA有上市时间和成本上的优势。另外,在大多数情况下,FPGA执行某些功能较之CPU上的软件操作更高效。这就是为什么我们认为它不但会运用在数据中心的服务器、交换器、存储层的各个角落,并且具有加速整个工作流程的功能。

然而我们不能过分乐观,尤其是在2015年12月,Intel以167亿美元收购了FPGA生产商Altera之后。

在2014年年底,当时还处于独立的Altera公司高层盯上了基于CPU+FPGA的数据中心并行计算的发展前景——这个当时价值大约10亿美元的市场。而并非数据中心里约2.5亿美元的CPU-GPU市场和直接应用CPU处理器的90亿美元市场。

Altera做出这个决定的原因在于他们认为这个组合较之另外两个方案,有编程的简便性和能效优势。人们对CPU非常熟悉,并发现寻找C程序员也不会太难。因此对大部分开发者来说,在执行运算任务的时候,持续使用这种方案不需要冒太大的风险,但是能源效率相对比较低,尤其是在密集的计算和固有的并行工作负载的情况底下。

至于CPU+GPU的方案,程序员并不是很熟悉,但是拥有很高的效率。

根据Altera的估计,使用OpenCL对混合CPU-FPGA系统进行编程比使用Nvidia的CUDA环境对于程序员来说更容易(某些方面肯定是有争议的),但用HDL来硬编程FPGA是相当困难的,因此需要OpenCL或者通过其他抽象层来将CPU中的负载转移到FPGA上。

Intel收购Altera改变FPGA格局

这个十亿美元的数据中心市场被Altera、Xilinx和其他FPGA供应商瓜分。在Intel于2015年6月收购了Altera之后,这个市场变得更加复杂。

在收购之前的2014年,Altera的19亿美元收入中,有16%来自于与数据中心相关的计算、网络和存储业务,其总值达到3.04亿美元。那些在这个领域深耕十几二十年的通信和无线设备系统制造商想要有更高的能源效率,更低的成本和更高的扩展性,这些都是FPGA所擅长的领域。另外有一点需要提一下,那就是在执行这些功能的时候,使用FPGA并不需要像使用CPU那样需要操作系统和相应的软件。这部分的营收占了Altera营收的44%,总额为8.35亿美元。

Altera另外的22%收入,即4.18亿美元,来自工业控制、军事设备和汽车制造等领域。他们面对相同的困境,因此选择FPGA来处理他们的一些工作负载。

其实早在2014年,英特尔看中了价值1150亿美元的各种类型的芯片潜在市场。当中可编辑逻辑设备(以FPGA为主)约占4%,ASIC占18%,其余为ASSP的大杂烩。

在可编辑逻辑设备的领域中,英特尔预估Altera占有48亿美元市场中的39%,Xilinx占有49%,剩下供应商则占据剩下的12%。

当时英特尔没有收购Altera的原因是因为FPGA业务的增长速度几乎与其数据中心集团(为服务器,存储和交换机制造商提供芯片,芯片组和主板)的速度一样快。

再者,英特尔没有这样做也是因为摩尔定律逐渐缓慢下来的脚步,给FPGA带来了日益增长的竞争威胁。

实际上,如果应用的话,在数据中心里不止安装一个FPGA、GPU或DSP加速器,但不需要安装多个Xeon CPU。由于英特尔不能继续为Xeons提供更多的核心和加速器,所以他们得出了将FPGA当做加速器的结论。

除非FPGA能在数据中心创造5亿美元的收益,或者几年后创造10亿美元或更多的收入。不然英特尔宁愿牺牲两至三倍的Xeon收入,也不会把Xeon的收入拱手相让。

深度学习加持,FPGA前景可人

根据英特尔的预测,他们计划从现在到2023年以接近直线增长率来提升FPGA的业务。对此我们总是抱有怀疑的态度。但FPGA业务随着时间的推移或多或少地在增长(比15年前增长约2.5倍)。

英特尔还预计,FPGA的营收在2014年到2023年之间将会再翻一倍。按照英特尔预测,从2014年到2023年间其复合年增长率为7%,其收入应该略低于预测的89亿美元。有趣的是,由于英特尔的预测并没有把来自数据计算中心(服务器,交换和网络)的FPGA收入份额纳入计划中,这将会发生很大变化。让我们分析一下:

如果Altera和Xilinx的市场份额没有发生改变,且假设Altera的收入在网络,计算和存储的部分保持不变,那么Altera这一部分的业务收入到2023年将会达到5.6亿美元左右。我们认为Intel这样的数据低估了数据中心在提供更有效和灵活计算所面对的压力。不给过我们认为FPGA的前景远远优于这个预测。也就是说,许多FPGA技术的支持者一直期待FPGA在数据中心中获得计算合法化的那天很快到来。

讽刺的是,英特尔本身作为FPGA的编程专家,硬件描述语言的使用者,以及知名的ASIC制造商,竟成为推动FPGA成为加速器优先选择的主要参与者。这样的加速器既能作为独立的离散计算元件,又可以作为混合 CPU-FPGA器件。

这也是为什么从2016年以来,我们看到所有关于Altera的新闻都是昭示FPGA将会有的大规模增的增长。所以至少在短期,他们除了为其他的FPGA制造商作嫁衣裳,几乎别无他法。

这次收购不仅是FPGA发展的里程碑,也是英特尔对FPGA巨大的潜力的承认。FPGA作为未来强大的计算加速器,不但影响主要企业的决策和市场趋势,而且加速企业中的工作负载,促进超大规模数据中心的内部搜索,以及提高高性能计算模拟的地位。

在跨越2017年之际,FPGA在应用程序中等级中新增了机器学习和深度学习,这给FPGA产业敲下了又一重锤。

为什么大家都青睐FPGA

首先,编程FPGA的软件栈已经演进了,尤其是在Altera的帮助下,FPGA增加了对OpenCL开发环境的支持。但不是每个人都是OpenCL的狂热粉丝。

先有Nvidia为其Tesla GPU加速器创建了自己的CUDA并行编程环境。再有SRC计算机公司不但早在2002年就为国防和智能领域提供混合CPU-FPGA系统,到了2016年年中,进一步将自己研发的Carte编程环境进入了商业市场,这个编程环境可以使C和Fortran程序自动转换为FPGA的硬件描述语言(HDL)。

另一个推动FPGA被采用的因素是随着芯片制造技术难以持续缩进,多核CPU性能的提高越来越艰难。 虽然CPU的性能获得了大跳跃,但主要用于扩展CPU的性能吞吐量,而不是单个CPU内核的个体性能。(我们知道架构增强是有难度的)。但是FPGA和GPU加速器的每瓦性能都有了令人信服的改进。

根据微软的运行测试,在执行深度学习算法的时候,CPU-FPGA和CPU-GPU混合计算在的每瓦性能也不相伯仲。GPU在运行中更热和有类似的每瓦性能表现,但是同时他们也带来了更强的工作能力。

提高了每瓦性能解析了为什么世界上最强大的超级计算机在20世纪90年代后期转移到并行集群,并且解析了为什么现在他们转向了混合机器,而不是英特尔的下一个以 CPU-GPU为混合主力的Xeon Phi的处理器“Knights Landing (简称KNL)。

在Altera FPGA协处理器和Xeon Phi处理器Knights Landing的帮助下,英特尔不但可以保持自己的在高端的竞争优势。并且在与Nvidia 、IBM和 Mellanox组成的Open power联盟竞争中继续领先。

英特尔坚信超大规模计算,云端和HPC市场的工作负载会快速成长。为促进其计算业务继续蓬勃发展。这情况下只能成为FPGA的卖家,否则别人就会抢去这唯一的出路。

但英特尔并不是这样跟大家说。他们说:“我们不认为这是一种防守战或者其他,”英特尔的CEO Brian Krzanich在Altera收购消息后的新闻发布会上说。

“我们认为物联网和数据中心都是庞大的。这些也是我们的客户想要构建的产品。我们30%的云端工作负载将在这些产品上,这是基于我们对如何看待趋势变化以及市场发展的预测。

这是用来证明这些工作负载能以一种或另一种方式转移到硅中。我们认为最好的做法是使用有业界最佳性能和成本优势的Xeon处理器和FPGA组合。这将给工业领域带来更好的产品和性能。而在IoT中,这将扩展到潜在市场对抗ASIC和ASSP;而在数据中心中,则会将workload转移到硅,推动云的快速增长。

Krzanich解释道:“你可以把FPGA想象成一堆gate,且能够随时编程。根据他们的想法,其算法会随着时间的推移和学习变得更聪明。FPGA可以用作多个领域的加速器,可以在进行加密的同时进行面部搜索,而且能在基本上在微秒内重新编程FPGA。这比大规模的单个定制部件的成本低得多且具备更高的灵活性。”

英特尔看到了更大的机会

英特尔看到了比这更大的机会。

Intel首席执行官Brian Krzanich在收购完成后宣布,到2020年,将有高达三分之一的云端服务提供商使用混合的CPU-FPGA服务器节点,这是一个令人震惊的消息。这也给从2014年底就开始瞄准的数据中心的Altera带来大约10亿美元的FPGA的机会。这数目大概是Nvidia目前流行的Tesla计算引擎营收的三倍。

在2014年初,英特尔展示了一个相同封装的Xeon-FPGA芯片原型,并且打算在2017年推出这个芯片。这是基于当时数据中心集团GM Diane Bryant提出的一个带有FPGA电路的Xeon设想不久之后推出的。

在宣布Altera交易的电话会议上,Krzanich没有说明退出这款Xeon-FPGA设备的时间,但是他表示英特尔将创建一个面向物联网市场的单die混合Atom-FPGA设备。英特尔正在考究在混合过渡阶段,是否需要为Atom和Altera FPGA做单一封装混合。

在2016年的初太平洋顶峰证券的电话会议中,英特尔的云端基础设施集团总经理Jason Waxman与研究分析师讨论关于英特尔数据中心业务时表示,FPGA已经成为了热门话题。

首先,虽然他没有指名道姓哪家厂商或者任何设备的规格,但是Waxman确定英特尔已经为某些客户提供了Xeon加FPGA的混合计算引擎样品。

在会议期间,Waxman更是畅谈了驱动英特尔收购Altera和插足可编程计算设备的原因。 英特尔显然希望让FPGA成为主流,即使这可能会在数据中心中蚕食Xeon的某些业务。 (我们认为,因为英特尔认为这种自相残杀是不可避免的,控制它的最好方法是使FPGA成为Xeon阵容的一部分。)

Waxman说:“我认为这项收购可能涉及许多事情,而且其中一些已经超越数据中心集团的范围。”

首先,一个潜在的核心业务往往是由制造领先优势驱动。在这方面我们能很好的掌控,而且这样做还有良好的协同作用。

再者,还有物联网“集团”对此也有很强的兴趣。

据我们所知,某些大规模工作负载的扩展(如机器学习,某些网络功能)吸引了越来越多的人关注。我们才意识到我们或者可以在性能方面取得一些突破,这将是一个把FPGA从数据中心应用程序中移植到更多适合的、广泛发展领域的良好机会。

但是在数据中心集团里的协作,FPGA不过是给CPU做个伴,帮助解决云端服务提供商和其他类型的大规模应用程序的问题。

英特尔认为对FPGA加速有优先和大量需求的关键应用包括机器学习,搜索引擎索引,加密和数据压缩。正如Waxman指出,这些往往是很有针对性的,且没有统一的使用案例。这就是Krzanich斩钉截铁说三分之一的云端服务提供商将在五年内使用FPGA加速的依据。

跨越FPGA的障碍

虽然每个人都抱怨编程FPGA有多难,但英特尔并不为此退缩。虽然没有透露太多相关计划的情况下,Waxman提出了一些方法让FPGA更容易被运用和理解。

Waxman说:“我们所拥有的是独一无二的,这是其他人不能给的。那就是我们能够了解这些工作负载和能够推动加速的能力。

“我们看到一条促进机器学习,加速存储加密,加速网络功能的捷径”,Waxman强调。这是基于我们对这些工作负载的深入了解,所以才让我们看到了这样的机会。

但现在FPGA还需要面对一些困难,因为现在人们是写RTL的。我们是一家写RTL的公司,所以我们可以解决这个问题。首先我们使它运作,然后我们可以降低进入的门槛。第三步是真正的规模经济学,而这全部是靠集成和制造的实力。

为了解决这些障碍,我们提供了一系列的方法。

X86+FPGA?

对于那些英特尔打算用FPGA来代替Xeons的猜测,Waxman表示这是一派胡言。

Waxman表示,对于那些对高速率和重复性有强烈需求的算法,具有先天优势的FPGA就是其最好的选择。而那些对延迟有极高需求的数据操作和转换,FPGA也是候选人。

考虑到Altera已经在一个SoC上集成了ARM处理器和FPGA,这很自然地会想到英特尔会试图用X86内核全面替换ARM内核来做类似的设备。但它看起来不像这会发生。

首先,在2016年第二季度英特尔财务声明会上,Krzanich承诺,英特尔将加强对目前使用Altera的ARM-FPGA芯片客户的支持。

Waxman进一步澄清:“我们的观点是会以某种形式把FPGA集成到Xeon里。我们已经公开宣布将会打造第一代使用这种单一封装的设备,但是我们将根据进展情况调整方向,甚至可能会在同一个die上实现。我们将根据客户的反馈了解什么是正确的组合。

顺便说一下,我仍然期待看到没有集成的系统,保持他们会做系统级的协同。我们不会将Xeon与FPGA以多种方式组合集成,反之我们会在市场上找到正确的目标和平衡。”

编程问题首当其冲

虽然Altera的工具集利用OpenCL编程模型获得应用程序代码,并将其转换为RTL(FPGA的原生语言),但是有趣的是,英特尔并不认为FPGA在数据中心的未来成功是基于OpenCL与RTL工具集成的改进或更广泛地采用OpenCL。

Waxman也强调地说:“这并不是以OpenCL为基础的。”虽然我们确实把OpenCL看作是进一步扩大FPGA应用范围的一个途径,但目前FPGA的初始云端部署可能由更具能力的公司完成,但他们并没有要求我们提供OpenCL。Waxman补充说。

Waxman在不能“自由”地谈论的情况下,暗示英特尔有计划使FPGA更容易编程。他表示Intel将会为程序员提供RTL库,方便他们调用在FPGA上部署的例程,并推动在其上执行应用程序的gate的形成,来实现应用程序例程的gate,而不是让他们自己创建例程。这有一定的意义,与Convey(现在是美光科技的一个部门)几年前用FPGA加速系统处理的方案一样。

Waxman说:“我认为有一个连续的加速。在一开始,你可能不知道你正在试图加速什么,只是做了一些尝试,因此在这个阶段加速,你想要的是一个更通用的目的。当你开始真正地想要加速的时候,你会想要更高效的,更低的功耗和更少的空间,这时你就会把焦点移到FPGA上。”

Waxman还引用了Microsoft在其“Catapult”系统上使用FPGA加速的方案来说明。

该系统采用其Open Cloud Server并添加FPGA夹层卡作为加速器。我们在3月份研究了这个项目,将这些加速器应用在Google上执行相同的图像识别训练算法,得出的结果显示,25瓦的FPGA器件相对于使用Nvidia Tesla K20 GPU加速器(235瓦特)的服务器,提高了更好的性能/瓦特。

正如我们所说,我们对于微软和Google发布的性能数据毫无疑问。但是对分立的GPU或FPGA执行应用性能和对自身的热配置文件进行测量都是不公平的。你必须在服务器节点级别上看到这一点。

如果意识到这点,得到FPGA辅助的Microsoft服务器在系统级只稍稍领先于用Tesla K20s的Google服务器。(这些只是我们基于每秒每瓦特图像处理性能的估计)。在这个对比中,Microsoft应该不考虑成本。而且坦白说,不同于什么都配备的Tesla GPU,微软开放云端服务器并没有使用Juice或Cooling。真正的评测怎么都会使用GPU夹层卡,同时还需要考虑热量,性能和价格等因素。

但是Waxman讨论的重点仍然是那个。“在某个时候,你真的很想要那个能给你惊喜,并且能做到更低功耗的方案。而这就是我们的FPGA方案所擅长的方面。”

云端业务

最后要考虑的是英特尔的云端业务。这些客户现在占据了他们数据中心集团收入的25%。

整体来看,他们的购买量每年增长约25%。预计从2016年开始,未来几年整体数据中心集团业务都将增长15%。让我们做一些计算。

如果英特尔的计划如期实施,他的数据中心集团2016年收益将会达到166亿美元。云端服务提供商(其中包括在The Next Platform上使用我们的语言的云端构建者和超大规模计算者)占大约41亿美元,其余归属于英特尔数据中心,销售数据大约为125亿美元。因此,英特尔数据中心的业务增长在12%左右(除云端外),是云端速率的一半。英特尔需要以任何方式来满足云端的增长和明显的FPGA需求,即使它只占用Xeon容量的一点点。对于英特尔来说是这个的选择比让GPU加速持续增长的方案要好。

编程方面可能是阻碍FPGA被广泛采用的一个主因(不像其他加速器,具有丰富的开发生态系统,如Nvidia GPU的CUDA)。这就驱动程序员去基于C语言去做扩展设计,或使用OpenCL,而不是用过去困扰FPGA开发的低级模型。但即使在应用的过程中有这么多里程碑,FPGA仍然不被主流青睐。我们将会探索解决编程问题的方法和机会。

虽然我们已经与这个相对较小的生态系统中的许多供应商(包括Altera和Xilinx,两个主要供应商)进行了交流,但按照FPGA长期研究员Russell Tessier所说,FPGA在更广阔的市场上大展拳脚的日子还在前面,新的发展意味着更广泛的采用。

他在马萨诸塞大学(他还在Altera工作,并且Mentor Graphics收购的虚拟机工程的创始人)研究了FPGA二十多年,他认为FPGA从科学项目到企业应用的形势正式缓变化。他认为其中的关键是来自于设计工具的改进,设计人员不断提高他们设计高水平。除此与外,工具vendor可以更好地引导芯片发展。他补充说,设备内的大量逻辑量意味着用户能够实现更多的功能,这使得FPGA对更多领域更广泛的吸引力。

Tessier说:“在过去几年里,FPGA的一个明显趋势就是这些设备更容易“程序化”。

Xilinx目前鼓励使用其Vivado产品的时候,用C语言进行设计。Altera还有一个已经开发的OpenCL环境。关键是两家公司都在试图创建一个环境,让用户可以使用更熟悉的编程(如C和OpenCL),而不必是使用RTL设计专家所擅长的Verilog或VHDL。虽然在过去几年里取得不错的成绩,但这仍然处于推进的阶段,不过这将有助于把更多的事情地移入主流。

其中一个对FPGA真正有利的因素就是如果将其和芯片搭配使用,建立一个快速的内部互联,它能解决memory和数据移动中的限制。这种优势就是吸引Intel收购Altera的主要诱因。另外,如果像英特尔和IBM这样的大公司能够积极推动FPGA的软件生态系统的建设,其应用市场将会迅速扩张。FPGA的主流化(至少现在没有GPU那么重要,)可能会更快地出现。

Tessier解释:“标准核心处理器集成的增加肯定是关键所在。过去的障碍是语言和工具,随着这些障碍越来越少,为芯片供应商新的合作机会打开了一扇门。由于这些和其他“主流化”趋势出现,不断做出的改变的FPGA的应用领域将继续增长。例如,金融服务商店是第一个使用FPGA进行财务趋势和股票选择分析的用户,但使用案例正在扩大。现在有更强的设备可以解决更大的问题。

更广泛的应用领域

除此之外,FPGA通过的其他新领域发现新用途,包括DNA测序,安全性,加密和一些关键的机器学习任务。

当然,我们希望FPGA变得强大,并“进入”世界上最大的云端和超大规模数据中心,Xilnix数据中心部门副总裁Hamant Dhulla对此表示强烈赞同。他在2016年初,他告诉The Next Platform, “异构计算已经不再是一种趋势,而是现实”,也就是在那个时候,微软推出了使用FPGA的Catapult案例(现在就很多或以后会很多),英特尔收购了Altera以及看到了更多FPGA将广泛应用在数据中心的声明。

从机器学习,高性能计算,数据分析等领域,FPGA在更多样化的应用领域中崭露头角。这些都与FPGA上嵌入了越来越多可用的on-chip存储器有关,这些都是FPGA制造商和潜在终端用户所期待的。 Dhulla表示,市场潜力足够大,让Xilinx能够调整其业务的方式。 过去几年,存储和网络主导了FPGA用户群。但未来五年内,计算端的需求将远远超过存储和网络,并都将沿着稳定的增长线继续发展。

在FPGA其他的热门领域(包括机器学习),它们的更像是一个带有GPU 的“协作”加速器。毫无疑问,对于许多机器学习工作负载的训练部分,GPU是主要的。因此为这里需要很多计算能力,就像HPC一样,其中power envelope tradeoff值得的。但是这些客户购买了数十或数百个GPU,而不是数十万个,庞大的加速器数目正使用在机器学习pipeline的推理部分,这就是市场所在。

正如我们指出的,Nvidia正在使用两个独立的GPU(用M4来训练,更低功耗的M4插入来削减服务器)来抵消这一点,但Dhulla认为FPGA仍然能够通过采用PCIe方法降低功耗,也可以嵌入超大规模数据中心。

他们的SDAccel编程环境通过提供对C,C ++和OpenCL的高级接口,使其更实用,但是推动超大规模和HPC采用的真正途径是通过最终用户示例。

当涉及到这些早期的用户,就像为下一代的FPGA的应用搭建了舞台,Dhulla指向像Edico Genome这样的公司。Xilinx目前还与其他领域的客户合作,包括石油和天然气和金融方面的历史计算方面。早期客户将Xilinx 的FPGA应用在机器学习,图像识别和分析以及安全性方面,这可以看作他们计算加速业务发展的第一步。

尽管双精度性能和总体价格不佳,FPGA的真正的大规模应用机会在于云端。因为FPGA可以提供GPU所不能提供的优势。如果FPGA供应商能够说服其最终用户,他们的加速器可以提供相当大的性能提升(在某些情况下他们会这样做)给关键的工作负载。提供一个通过带有其他加速器(例如CUDA)的complexity-wise的编程环境推进OpenCL开发,通过在云端中提供FPGA来解决价格问题。这可能是一个新的希望。

当然,这种希望来源于将FPGA部署到有超密集服务器云端架构内,而不是在单机的销售上。这种模式已经在FPGA的金融服务中发生。

正如他们GPU加速器“伙伴”围绕深度学习进行拉动,以便迅速得到更多的用户, FPGA设备在探索一个通过解决神经网络和深度学习的问题的方式找寻入侵市场的真正的机会。

新的应用程序主机意味着新的市场,随着云端应用的推广消除了一些管理开销,它可能意味着更广泛的采用。FPGA供应商努力推动它在一些关键的机器学习,神经网络和搜索方面的应用。FPGA在诸如自然语言处理,医学成像,深度数据检测等领域中的超大规模上下文中变得越来越普遍。

在过去一年里,FPGA的多种应用得到曝光,特别是在深度学习和神经网络,以及图像识别和自然语言处理等领域。例如,微软使用FPGA在1,632个节点上提供2倍的搜索服务,并采用创新的高吞吐量网络来支持Altera FPGA驱动的工作。中国的搜索引擎巨头百度(也是许多深度学习和神经网络任务GPU用户)正在用FPGA执行存储控制,其每天的数据吞吐量在100TB到1PB之间。

使用FPGA的大规模数据中心和其他领域的应用正在吸引人们对FPGA的单精度浮点性能的更多关注。

虽然一些案例使用(包括百度示例),将GPU作为计算加速器和FPGA用在存储端,但Altera,Xilnix,Nallatech和IBM的研究人员在OpenPower联盟展示了FPGA在云端深度学习的光明前景。

可以说现在属于FPGA的一个黄金时代。
 
 
来源:网络
717 浏览

《连线》长文揭秘微软 Project Catapult:人工智能时代押注FPGA

机械自动化类 将计就计 2016-09-27 15:58 发表了文章 来自相关话题

2012 年 12 月的某一天,Doug Burger 站在 Steve Ballmer 面前,尝试着预测未来。

Ballmer,微软的那个大嗓门 CEO,坐在微软在西雅图郊外的蓝天研发实验室(blue-sky R&D lab)基地 99 号楼一层的演讲室。桌子排成 U 型,Ballmer 被他的高级助围住,开着笔记本电脑。Burger,一位四年前加入微软的计算机芯片研究员,正在为高管们描绘一个新想法,Project Catapult。




Doug Burger

Burger 解释道,技术世界正在迈向一个新轨道。未来将是少数几家互联网巨头运作着几个巨型互联网服务,这些服务非常复杂并与之前的服务非常不同,所以这几家公司不得不打造全新的架构来运行它们。不仅仅是驱动这些服务的软件,巨头们还得造出硬件,包括相应的服务器和网络设备。Project Catapult 将会为微软所有的服务器——几百万台——提供专用芯片,这些芯片可以用来为特定的任务重新编程。

但是还没等待 Burger 介绍到这个芯片时,Ballmer 突然抬起了头。Ballmer 刚到微软研究时,就说他希望看到研发中心有新进展,而不是一个战略简报。「他开始拷问我,」Burger 说。微软花了 40 年建立起像 Windows、Word 和 Excel 这样的 PC 软件,然而它才发现自己只是刚刚涉足互联网。微软还没有编程计算机芯片所必须的工具和工程师,这是一项困难、耗时、专业且有些奇怪的任务。微软编程计算机芯片听起来就像是可口可乐要做鱼翅汤了。





Project Catapult 目前的样子

Burger,着装整齐,轻微秃头,能冷静的分析问题,就像很多优秀的工程师一样。他转过身,告诉 Ballmer 像谷歌和亚马逊这样的公司一直正在超这个方向发展。他说世界上的硬件制造商不会提供微软需要用来运行线上服务的硬件。他说,如果微软不打造自己的硬件,就会落后。Ballmer 听完后并不买账。但是过了一会儿,另一个声音参与到这场讨论中来。这个声音来自陆奇,他管理者 Bing,微软的搜索引擎。两年来,陆奇的团队一直在和 Burger 讨论可再编程芯片的事情。Project Catapult 不仅仅是一种可能,陆说:他的团队已经开始着手做了。

今天,微软已经有了现场可编程门阵列(field programmable gate arrays,FPGA),Burger 和陆都相信这个可编程芯片可以改变世界。FPGA 目前已支持 Bing,未来几周,它们将会驱动基于深度神经网络——以人类大脑结构为基础建模的人工智能——的新搜索算法,在执行这个人工智能的几个命令时,速度比普通芯片快上几个数量级。有了它,你的计算机屏幕只会空屏 23 毫秒而不是 4 秒。





Catapult 团队成员 Adrian Caulfield, Eric Chung, Doug Burger, 和 Andrew Putnam

Bing 不只是要追赶 Google。Project Catapult 暗示着改变未来全球系统运作的方式。从美国的亚马逊到中国的百度,所有的互联网巨头都在用硅替代他们的标准服务器芯片——中央处理单元,也叫 CPU,这些硅制成的芯片可以让它们跟上人工智能的快速变化。微软现在每年花在硬件上的钱在 50 亿到 60 亿美元,以维持其线上帝国的运转。所以这样的工作「再也不仅仅是研究了,」Satya Nadella 说道,他在 2014 年接任了微软 CEO 一职。「它有极为重要的优先性。」也就是 Burger 当年在 99 号大楼中要解释的,并让他和他的团队耗费多年,克服种种挫折,不断重新设计,与体制对抗,最终实现的一种新的全球超级计算机。



一种全新的古老计算机芯片

2010 年 12 月,微软研究院 Andrew Putnam 离开西雅图度假,回到了位于科罗拉多斯普林斯的家中。当时正是圣诞节前两天,他还没开始大采购。正在他开车去商场的路上,电话突然响了,另一端正是他的老板 Burger。Burger 当时打算节后面见 Bing 高管,但他需要一份能在 FPGA 上运行 Bing 机器学习算法的硬件设计。

Putnam 找到最近的星巴克开始规划设计,这大约花了他 5 个小时,所以他仍有时间去购物。

当时 Burger 45 岁,Putnam 41 岁,两人过去都是学者。Burger 曾在特克萨斯大学奥斯汀分校担任计算机科学教授,他在那里工作了 9 年,专攻微处理器,还设计了一款名为 EDGE 的新型芯片。

Putnam 曾在华盛顿大学工作 5 年,担任研究员并主要从事 FPGA 研究。当时可编程芯片已经存在了好几十年,但它们大多被当作处理器的一部分。2009 年 Burger 将 Putnam 挖到微软,两人开始探索用可编程芯片提升线上服务速度的方法。





Project Catapult V1,即 Doug Burger 团队曾在微软西雅图数据中心测试过的版本。

微软的搜索引擎是一个依靠成千上万台机器运行的在线服务。每台机器都需要靠 CPU 驱动,尽管英特尔等公司不断改进它们,这些芯片还是跟不上软件更新的脚步。很大程度上,是因为人工智能浪潮的来临。

Bing 搜索等服务已经超出了摩尔定律预言的处理器能力,即每 18 个月处理器上晶体管的数量翻一倍。事实还证明增加 CPU 并不能解决问题。

但同时,为新出现的需求制造专用芯片,成本是非常昂贵的。恰好 FPGA 能弥补这个不足,Bing 决定让工程师制造运行更快、比流水线生产的通用 CPU 能耗更少、同时可定制的芯片,从而解决不断更新的技术和商业模式变化所产生的种种难题。

圣诞节后的会面中,Burger 为必应高管们拿出了一套用 FPGA 提升搜索速度,同时功耗较低的方法。高管们不置可否。在接下来的几个月中,Burger 团队根据 Putnam 圣诞节时画出的草图构建了原型,证明其运行必应的机器学习算法时速度可以提升 100 倍。「那时他们才表现出浓厚兴趣」,当时的团队成员、现瑞士洛桑联邦理工学院院长 Jim Larus 告诉我们,「但同样也是艰难时光的开始。」

原型是一个使用六个 FPGA 的专用盒,由一整个机架的服务器共享。如果盒子吱吱作响,表明它们需要更多 FPGA——考虑到机器学习模型的复杂性需求会越来越大——这些机器就会停止工作。必应的工程师非常厌恶这件事。「但他们没错,」Larus 说。

正是这个原型吸引了陆奇。他给了 Burger 足够的资金,可以在 1600 台服务器上装配 FPGA 并进行测试。在中国和台湾硬件制造商的帮助下,团队花费半年时间制造出了硬件产品,并在微软数据中心的一组机架上进行测试。但一天晚上灭火系统出现了问题。他们花了三天时间修复机架——它仍能工作。

在 2013 年到 2014 年的几个月中,测试显示必应「决策树」机器学习算法在新芯片的帮助下,可以提升 40 倍运行速度。2014 年夏天,微软公开表示要很快要将这些硬件应用到必应实时数据中心。但是在那之后,微软暂停了。




不只是 Bing 搜索

Bing 在前几年一直是微软线上发展的核心,但到 2015 年,公司有了其他两个主要的在线服务:商务应用套件 Office 365 和云计算服务 Microsoft Azure。和其他竞争者一样,微软高层意识到运营一个不断成长的在线帝国的唯一有效方法是在同样的基础上运营所有的服务。如果 Project Catapult 将转变微软的话,那 Bing 也不能被排除在外。它也要在 Azure 和 Office 365 内部工作。

问题是,Azure 高官们不在乎加速机器学习,他们需要联络的帮助。Azure 数据中心的流量跳动增长的太快,服务的 CPU 不能跟上脚步。最终,Azure 首席架构师 Mark Russinovich 这样一批人看到了 Catapult 能帮助解决这些问题,但不是为 Bing 设计的那种解决问题的方式。他的团队需要可编程的芯片,将每个服务器连接到主要网络,如此他们在数据流量到达服务器之前就能开始处理了。





FPGA 架构的第一代原型是一个被一架服务器共享的单个盒子(Version 0)。然后该团队转向为每个服务器设计自己的 FPGA(Version 1)。然后他们将芯片放到服务器和整体网络之间。

所以,研究 FPGA 的这伙人需要重新开发硬件。在第三代原型中,芯片位于每个服务器的边缘,直接插入到网络,但仍旧创造任何机器都可接入的 FPGA 池。这开始看起来是 Office 365 可用的东西了。最终,Project Catapult 准备好上线了。

Larus 将许多重新设计描述为噩梦,这不是因为他们需要建立新的硬件,而是他们每次都需要重新编程 FPGA。他说,「这非常的糟糕,要比编程软件都糟糕,更难写、难纠正。」这是一项非常繁琐的工作,像是改变芯片上的小逻辑门。

既然最终的硬件已经有了,微软还要面对每一次重新编程这些芯片时都会遇到的同样挑战。「这是一个看世界思考世界的全新视角,」Larus 说。但是 Catapult 硬件的成本只占了服务器中所有其他的配件总成本的 30%,需要的运转能量也只有不到 10%,但其却带来了 2 倍原先的处理速度。

这个布局非常大。微软 Azure 用这些可编程的芯片来路由、加密和压缩数据。Bing 占据着世界上 20% 的桌面搜索市场和 6% 的移动手机市场,在 Bing 上,这个芯片能帮助 Bing 适应新品种的人工智能:深度神经网络。而且据微软的一名员工说,Office365 正在尝试在加密和压缩上使用 FPGA 以及机器学习——这一举措将惠及其 2310 万用户。最终,Burger 说道,这些会驱动所有的微软服务。
 



这真的起作用吗?


Peter Lee 说,「这仍然使我迷惑。我们让公司做这些事。」Lee 监管着微软内部一个被称为 NExT 的组织,NExT 是 New Experience and Technologies 的缩写。在 Nadella 接任 CEO 之后,他个人推动了 NExT 的创建,代表了从 Ballmer 十年统治的重大转变。该组织的目标是培养能在近期实现的研究,而不是远期研究,这能改变微软如今的进程,而非多少年后的进程,就像增强现实设备 HoloLens 一样。当然也包括 Project Catapult。Burger 说,「起跳点就在前面,来自于非 CPU 技术。」





Peter Lee

所有的互联网巨头,包括微软,如今都在用图像处理单元增补 CPU,GPU 可为游戏和其他高度视觉化的应用渲染图像。例如,当这些公司训练神经网络识别图像中的人脸时(输入百万张图片),GPU 可处理很多的计算。像微软这样的巨头也使用可替代的硅片在训练后执行神经网络。而且,即使定制芯片异常昂贵,谷歌在设计执行神经网络的处理器上也走得相当远了,也就是他们设计的 TPU。

在 TPU 上,谷歌为追求速度牺牲了长期灵活性。也就是说,在识别进入智能手机的指令时,TPU 想要消除所有的延迟。但问题是如果神经网络模型改变的话,谷歌必须要建立新的芯片。但在 FPGA 上,微软在打一场长久战。尽管在速度上比不上谷歌的定制芯片,微软可在需要的时候重新编程芯片。微软不只能为新的人工智能模型编程,也能为任何任务重新编程。而且这些设计在接下来几年如果有用,微软能一直采用这种 FPGA 的程序,并建立专用芯片。





该硬件的新版本 V2,是一张能插入微软任一服务器终端的芯片,并能直接连接到网络。

微软的服务很广,也使用如此多的 FPGA,如今他们正在改变全球芯片市场。FPGA 出自一家名为 Altera 的公司,英特尔副总裁 Diane Bryant 告诉我为什么英特尔会在去年夏天收购 Altera,这是一笔价值 167 亿美元的收购,也是芯片制造商史上最大的一笔收购。她说,到 2020 年,所有主要的云计算公司的 1/3 的服务器将使用 FPGA。

这是科技名词缩写之间的纠缠:GPU、CPU、TPU、FPGA。但它们也是将成为关键的代名词。在云计算上,微软、谷歌、亚马逊这些公司驱动着世界上很大一部分技术,以至于这些可选择的芯片将驱动大范围的 app 和在线服务。Lee 说,直到 2030 年,Project Catapult 将继续扩展微软全球超级计算机的能力。在这之后,他说,微软就能转向到量子计算了。

之后当我们谈到手机时,Nadella 也告诉了我同样的事。他们读取自同样的微软蓝图,正在触摸量子技术驱动的超快计算机的未来。想象建立量子机器多么的难,就像白日梦一样。但在几年前,Project Catapult 也如同白日梦一样。
 
 
 
 
 
文章来源于机器之心智造家平台提供 查看全部
2012 年 12 月的某一天,Doug Burger 站在 Steve Ballmer 面前,尝试着预测未来。

Ballmer,微软的那个大嗓门 CEO,坐在微软在西雅图郊外的蓝天研发实验室(blue-sky R&D lab)基地 99 号楼一层的演讲室。桌子排成 U 型,Ballmer 被他的高级助围住,开着笔记本电脑。Burger,一位四年前加入微软的计算机芯片研究员,正在为高管们描绘一个新想法,Project Catapult。
。11.JPG

Doug Burger

Burger 解释道,技术世界正在迈向一个新轨道。未来将是少数几家互联网巨头运作着几个巨型互联网服务,这些服务非常复杂并与之前的服务非常不同,所以这几家公司不得不打造全新的架构来运行它们。不仅仅是驱动这些服务的软件,巨头们还得造出硬件,包括相应的服务器和网络设备。Project Catapult 将会为微软所有的服务器——几百万台——提供专用芯片,这些芯片可以用来为特定的任务重新编程。

但是还没等待 Burger 介绍到这个芯片时,Ballmer 突然抬起了头。Ballmer 刚到微软研究时,就说他希望看到研发中心有新进展,而不是一个战略简报。「他开始拷问我,」Burger 说。微软花了 40 年建立起像 Windows、Word 和 Excel 这样的 PC 软件,然而它才发现自己只是刚刚涉足互联网。微软还没有编程计算机芯片所必须的工具和工程师,这是一项困难、耗时、专业且有些奇怪的任务。微软编程计算机芯片听起来就像是可口可乐要做鱼翅汤了。

1.2_.jpg

Project Catapult 目前的样子

Burger,着装整齐,轻微秃头,能冷静的分析问题,就像很多优秀的工程师一样。他转过身,告诉 Ballmer 像谷歌和亚马逊这样的公司一直正在超这个方向发展。他说世界上的硬件制造商不会提供微软需要用来运行线上服务的硬件。他说,如果微软不打造自己的硬件,就会落后。Ballmer 听完后并不买账。但是过了一会儿,另一个声音参与到这场讨论中来。这个声音来自陆奇,他管理者 Bing,微软的搜索引擎。两年来,陆奇的团队一直在和 Burger 讨论可再编程芯片的事情。Project Catapult 不仅仅是一种可能,陆说:他的团队已经开始着手做了。

今天,微软已经有了现场可编程门阵列(field programmable gate arrays,FPGA),Burger 和陆都相信这个可编程芯片可以改变世界。FPGA 目前已支持 Bing,未来几周,它们将会驱动基于深度神经网络——以人类大脑结构为基础建模的人工智能——的新搜索算法,在执行这个人工智能的几个命令时,速度比普通芯片快上几个数量级。有了它,你的计算机屏幕只会空屏 23 毫秒而不是 4 秒。

1.3_.jpg

Catapult 团队成员 Adrian Caulfield, Eric Chung, Doug Burger, 和 Andrew Putnam

Bing 不只是要追赶 Google。Project Catapult 暗示着改变未来全球系统运作的方式。从美国的亚马逊到中国的百度,所有的互联网巨头都在用硅替代他们的标准服务器芯片——中央处理单元,也叫 CPU,这些硅制成的芯片可以让它们跟上人工智能的快速变化。微软现在每年花在硬件上的钱在 50 亿到 60 亿美元,以维持其线上帝国的运转。所以这样的工作「再也不仅仅是研究了,」Satya Nadella 说道,他在 2014 年接任了微软 CEO 一职。「它有极为重要的优先性。」也就是 Burger 当年在 99 号大楼中要解释的,并让他和他的团队耗费多年,克服种种挫折,不断重新设计,与体制对抗,最终实现的一种新的全球超级计算机。



一种全新的古老计算机芯片

2010 年 12 月,微软研究院 Andrew Putnam 离开西雅图度假,回到了位于科罗拉多斯普林斯的家中。当时正是圣诞节前两天,他还没开始大采购。正在他开车去商场的路上,电话突然响了,另一端正是他的老板 Burger。Burger 当时打算节后面见 Bing 高管,但他需要一份能在 FPGA 上运行 Bing 机器学习算法的硬件设计。

Putnam 找到最近的星巴克开始规划设计,这大约花了他 5 个小时,所以他仍有时间去购物。

当时 Burger 45 岁,Putnam 41 岁,两人过去都是学者。Burger 曾在特克萨斯大学奥斯汀分校担任计算机科学教授,他在那里工作了 9 年,专攻微处理器,还设计了一款名为 EDGE 的新型芯片。

Putnam 曾在华盛顿大学工作 5 年,担任研究员并主要从事 FPGA 研究。当时可编程芯片已经存在了好几十年,但它们大多被当作处理器的一部分。2009 年 Burger 将 Putnam 挖到微软,两人开始探索用可编程芯片提升线上服务速度的方法。

1.4_.JPG

Project Catapult V1,即 Doug Burger 团队曾在微软西雅图数据中心测试过的版本。

微软的搜索引擎是一个依靠成千上万台机器运行的在线服务。每台机器都需要靠 CPU 驱动,尽管英特尔等公司不断改进它们,这些芯片还是跟不上软件更新的脚步。很大程度上,是因为人工智能浪潮的来临。

Bing 搜索等服务已经超出了摩尔定律预言的处理器能力,即每 18 个月处理器上晶体管的数量翻一倍。事实还证明增加 CPU 并不能解决问题。

但同时,为新出现的需求制造专用芯片,成本是非常昂贵的。恰好 FPGA 能弥补这个不足,Bing 决定让工程师制造运行更快、比流水线生产的通用 CPU 能耗更少、同时可定制的芯片,从而解决不断更新的技术和商业模式变化所产生的种种难题。

圣诞节后的会面中,Burger 为必应高管们拿出了一套用 FPGA 提升搜索速度,同时功耗较低的方法。高管们不置可否。在接下来的几个月中,Burger 团队根据 Putnam 圣诞节时画出的草图构建了原型,证明其运行必应的机器学习算法时速度可以提升 100 倍。「那时他们才表现出浓厚兴趣」,当时的团队成员、现瑞士洛桑联邦理工学院院长 Jim Larus 告诉我们,「但同样也是艰难时光的开始。」

原型是一个使用六个 FPGA 的专用盒,由一整个机架的服务器共享。如果盒子吱吱作响,表明它们需要更多 FPGA——考虑到机器学习模型的复杂性需求会越来越大——这些机器就会停止工作。必应的工程师非常厌恶这件事。「但他们没错,」Larus 说。

正是这个原型吸引了陆奇。他给了 Burger 足够的资金,可以在 1600 台服务器上装配 FPGA 并进行测试。在中国和台湾硬件制造商的帮助下,团队花费半年时间制造出了硬件产品,并在微软数据中心的一组机架上进行测试。但一天晚上灭火系统出现了问题。他们花了三天时间修复机架——它仍能工作。

在 2013 年到 2014 年的几个月中,测试显示必应「决策树」机器学习算法在新芯片的帮助下,可以提升 40 倍运行速度。2014 年夏天,微软公开表示要很快要将这些硬件应用到必应实时数据中心。但是在那之后,微软暂停了。




不只是 Bing 搜索

Bing 在前几年一直是微软线上发展的核心,但到 2015 年,公司有了其他两个主要的在线服务:商务应用套件 Office 365 和云计算服务 Microsoft Azure。和其他竞争者一样,微软高层意识到运营一个不断成长的在线帝国的唯一有效方法是在同样的基础上运营所有的服务。如果 Project Catapult 将转变微软的话,那 Bing 也不能被排除在外。它也要在 Azure 和 Office 365 内部工作。

问题是,Azure 高官们不在乎加速机器学习,他们需要联络的帮助。Azure 数据中心的流量跳动增长的太快,服务的 CPU 不能跟上脚步。最终,Azure 首席架构师 Mark Russinovich 这样一批人看到了 Catapult 能帮助解决这些问题,但不是为 Bing 设计的那种解决问题的方式。他的团队需要可编程的芯片,将每个服务器连接到主要网络,如此他们在数据流量到达服务器之前就能开始处理了。

1.5_.jpg

FPGA 架构的第一代原型是一个被一架服务器共享的单个盒子(Version 0)。然后该团队转向为每个服务器设计自己的 FPGA(Version 1)。然后他们将芯片放到服务器和整体网络之间。

所以,研究 FPGA 的这伙人需要重新开发硬件。在第三代原型中,芯片位于每个服务器的边缘,直接插入到网络,但仍旧创造任何机器都可接入的 FPGA 池。这开始看起来是 Office 365 可用的东西了。最终,Project Catapult 准备好上线了。

Larus 将许多重新设计描述为噩梦,这不是因为他们需要建立新的硬件,而是他们每次都需要重新编程 FPGA。他说,「这非常的糟糕,要比编程软件都糟糕,更难写、难纠正。」这是一项非常繁琐的工作,像是改变芯片上的小逻辑门。

既然最终的硬件已经有了,微软还要面对每一次重新编程这些芯片时都会遇到的同样挑战。「这是一个看世界思考世界的全新视角,」Larus 说。但是 Catapult 硬件的成本只占了服务器中所有其他的配件总成本的 30%,需要的运转能量也只有不到 10%,但其却带来了 2 倍原先的处理速度。

这个布局非常大。微软 Azure 用这些可编程的芯片来路由、加密和压缩数据。Bing 占据着世界上 20% 的桌面搜索市场和 6% 的移动手机市场,在 Bing 上,这个芯片能帮助 Bing 适应新品种的人工智能:深度神经网络。而且据微软的一名员工说,Office365 正在尝试在加密和压缩上使用 FPGA 以及机器学习——这一举措将惠及其 2310 万用户。最终,Burger 说道,这些会驱动所有的微软服务。
 



这真的起作用吗?


Peter Lee 说,「这仍然使我迷惑。我们让公司做这些事。」Lee 监管着微软内部一个被称为 NExT 的组织,NExT 是 New Experience and Technologies 的缩写。在 Nadella 接任 CEO 之后,他个人推动了 NExT 的创建,代表了从 Ballmer 十年统治的重大转变。该组织的目标是培养能在近期实现的研究,而不是远期研究,这能改变微软如今的进程,而非多少年后的进程,就像增强现实设备 HoloLens 一样。当然也包括 Project Catapult。Burger 说,「起跳点就在前面,来自于非 CPU 技术。」

1.6_.jpg

Peter Lee

所有的互联网巨头,包括微软,如今都在用图像处理单元增补 CPU,GPU 可为游戏和其他高度视觉化的应用渲染图像。例如,当这些公司训练神经网络识别图像中的人脸时(输入百万张图片),GPU 可处理很多的计算。像微软这样的巨头也使用可替代的硅片在训练后执行神经网络。而且,即使定制芯片异常昂贵,谷歌在设计执行神经网络的处理器上也走得相当远了,也就是他们设计的 TPU。

在 TPU 上,谷歌为追求速度牺牲了长期灵活性。也就是说,在识别进入智能手机的指令时,TPU 想要消除所有的延迟。但问题是如果神经网络模型改变的话,谷歌必须要建立新的芯片。但在 FPGA 上,微软在打一场长久战。尽管在速度上比不上谷歌的定制芯片,微软可在需要的时候重新编程芯片。微软不只能为新的人工智能模型编程,也能为任何任务重新编程。而且这些设计在接下来几年如果有用,微软能一直采用这种 FPGA 的程序,并建立专用芯片。

1.7_.jpg

该硬件的新版本 V2,是一张能插入微软任一服务器终端的芯片,并能直接连接到网络。

微软的服务很广,也使用如此多的 FPGA,如今他们正在改变全球芯片市场。FPGA 出自一家名为 Altera 的公司,英特尔副总裁 Diane Bryant 告诉我为什么英特尔会在去年夏天收购 Altera,这是一笔价值 167 亿美元的收购,也是芯片制造商史上最大的一笔收购。她说,到 2020 年,所有主要的云计算公司的 1/3 的服务器将使用 FPGA。

这是科技名词缩写之间的纠缠:GPU、CPU、TPU、FPGA。但它们也是将成为关键的代名词。在云计算上,微软、谷歌、亚马逊这些公司驱动着世界上很大一部分技术,以至于这些可选择的芯片将驱动大范围的 app 和在线服务。Lee 说,直到 2030 年,Project Catapult 将继续扩展微软全球超级计算机的能力。在这之后,他说,微软就能转向到量子计算了。

之后当我们谈到手机时,Nadella 也告诉了我同样的事。他们读取自同样的微软蓝图,正在触摸量子技术驱动的超快计算机的未来。想象建立量子机器多么的难,就像白日梦一样。但在几年前,Project Catapult 也如同白日梦一样。
 
 
 
 
 
  • 文章来源于机器之心
  • 智造家平台提供

782 浏览

十年FPGA开发经验工程师肺腑之言:多实践、多思考、多问

电气控制类 邓紫棋 2016-08-31 15:46 发表了文章 来自相关话题

从大学时代第一次接触FPGA至今已有10多年的时间,至今记得当初第一次在EDA实验平台上完成数字秒表、抢答器、密码锁等实验时那个兴奋劲。当时由于没有接触到HDL硬件描述语言,设计都是在MAX+plus II原理图环境下用74系列逻辑器件搭建起来的。后来读研究生,工作陆陆续续也用过Quartus II、Foundation、ISE、Libero,并且学习了verilogHDL语言,学习的过程中也慢慢体会到verilog的妙用,原来一小段语言就能完成复杂的原理图设计,而且语言的移植性可操作性比原理图设计强很多。

学习一门技术之前我们往往从它的编程语言入手,比如学习单片机时,我们往往从汇编或者C语言入门。所以不少开始接触FPGA的开发人员,往往是从VHDL或者Verilog开始入手学习的。但我个人认为,若能先结合《数字电路基础》系统学习各种74系列逻辑电路,深刻理解逻辑功能,对于学习HDL语言大有裨益,往往会起到事半功倍的效果。




当然,任何编程语言的学习都不是一朝一夕的事,经验技巧的积累都是在点滴中完成,FPGA设计也无例外。下面就以我的切身体会,谈谈FPGA设计的经验技巧。

我们先谈一下FPGA基本知识:

FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

1、硬件设计基本原则

(1)速度与面积平衡和互换原则:一个设计如果时序余量较大,所能跑的频率远高于设计要求,能可以通过模块复用来减少整个设计消耗的芯片面积,这就是用速度优势换面积的节约;反之,如果一个设计的时序要求很高,普通方法达不到设计频率,那么可以通过数据流串并转换,并行复制多个操作模块,对整个设计采用“乒乓操作”和“串并转换”的思想进行处理,在芯片输出模块处再对数据进行“并串转换”。从而实现了用面积复制换取速度的提高。
(2)硬件原则:理解HDL本质
(3)系统原则:整体把握
(4)同步设计原则:设计时序稳定的基本原则

2、Verilog作为一种HDL语言,对系统行为的建模方式是分层次的。比较重要的层次有系统级、算法级、寄存器传输级、逻辑级、门级、电路开关级。

3、实际工作中,除了描述仿真测试激励时使用for循环语句外,极少在RTL级编码中使用for循环,这是因为for循环会被综合器展开为所有变量情况的执行语句,每个变量独立占用寄存器资源,不能有效的复用硬件逻辑资源,造成巨大的浪费。一般常用case语句代替。

4、if…else…和case在嵌套描述时是有很大区别的,if…else…是有优先级的,一般来说,第一个if的优先级最高,最后一个else的优先级最低。而case语句是平行语句,它是没有优先级的,而建立优先级结构需要耗费大量的逻辑资源,所以能用case的地方就不要用if…else…语句。
补充:1.也可以用if…; if…; if…;描述不带优先级的“平行”语句。

5、FPGA一般触发器资源比较丰富,而CPLD组合逻辑资源更丰富。

6、FPGA和CPLD的组成:
FPGA基本有可编程I/O单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核等6部分组成。
CPLD的结构相对比较简单,主要由可编程I/O单元、基本逻辑单元、布线池和其他辅助功能模块组成。

7、Block RAM:

3种块RAM结构,M512 RAM(512bit)、M4K RAM(4Kbit)、M-RAM(64Kbit)。
M512 RAM:适合做一些小的Buffer、FIFO、DPRAM、SPRAM、ROM等;
M4K RAM: 适用于一般的需求
M-RAM: 适合做大块数据的缓冲区。
Xlinx 和 Lattice FPGA的LUT可以灵活配置成小的RAM、ROM、FIFO等存储结构,这种技术被称为分布式RAM。
补充:但是在一般的设计中,不提倡用FPGA/CPLD的片内资源配置成大量的存储器,这是处于成本的考虑。所以尽量采用外接存储器。

8、善用芯片内部的PLL或DLL资源完成时钟的分频、倍频率、移相等操作,不仅简化了设计,并且能有效地提高系统的精度和工作稳定性。

9、异步电路和同步时序电路的区别

异步电路:
电路核心逻辑有用组合电路实现;
异步时序电路的最大缺点是容易产生毛刺;
不利于器件移植;
不利于静态时序分析(STA)、验证设计时序性能。

同步时序电路:
电路核心逻辑是用各种触发器实现;
电路主要信号、输出信号等都是在某个时钟沿驱动触发器产生的;
同步时序电路可以很好的避免毛刺;
利于器件移植;
利于静态时序分析(STA)、验证设计时序性能。

10、同步设计中,稳定可靠的数据采样必须遵从以下两个基本原则:

(1)在有效时钟沿到达前,数据输入至少已经稳定了采样寄存器的Setup时间之久,这条原则简称满足Setup时间原则;
(2)在有效时钟沿到达后,数据输入至少还将稳定保持采样寄存器的Hold时钟之久,这条原则简称满足Hold时间原则。

11、同步时序设计注意事项:

异步时钟域的数据转换。
组合逻辑电路的设计方法。
同步时序电路的时钟设计。
同步时序电路的延迟。同步时序电路的延迟最常用的设计方法是用分频或者倍频的时钟或者同步计数器完成所需的延迟,对比较大的和特殊定时要求的延时,一般用高速时钟产生一个计数器,根据计数产生延迟;对于比较小的延迟,可以用D触发器打一下,这样不仅可以使信号延时了一个时钟周期,而且完成了信号与时钟的初次同步。在输入信号采样和增加时序约束余量中使用。另外,还有用行为级方法描述延迟,如“#5 a《=4’0101;”这种常用于仿真测试激励,但是在电路综合时会被忽略,并不能起到延迟作用。
Verilog 定义的reg型,不一定综合成寄存器。在Verilog代码中最常用的两种数据类型是wire和reg型,一般来说,wire型指定的数据和网线通过组合逻辑实现,而reg型指定的数据不一定就是用寄存器实现。

12、常用设计思想与技巧

(1)乒乓操作;
(2)串并转换;
(3)流水线操作;
(4)异步时钟域数据同步。是指如何在两个时钟不同步的数据域之间可靠地进行数据交换的问题。数据时钟域不同步主要有两种情况:
两个域的时钟频率相同,但是相差不固定,或者相差固定但是不可测,简称为同频异相问题。
两个时钟频率根本不同,简称异频问题。
两种不推荐的异步时钟域操作方法:一种是通过增加Buffer或者其他门延时来调整采样;另一种是盲目使用时钟正负沿调整数据采样。

13、模块划分基本原则:

(1)对每个同步时序设计的子模块的输出使用寄存器(用寄存器分割同步时序模块原则)。
(2)将相关逻辑和可以复用的逻辑划分在同一模块内(呼应系统原则)。
(3)将不同优化目标的逻辑分开。
(4)将送约束的逻辑归到同一模块。
(5)将存储逻辑独立划分成模块。
(6)合适的模块规模。
(7)顶层模块最好不进行逻辑设计。

14、组合逻辑的注意事项

(1)避免组合逻辑反馈环路(容易毛刺、振荡、时序违规等)。
解决:
A、牢记任何反馈回路必须包含寄存器;
B、检查综合、实现报告的warning信息,发现反馈回路(combinational loops)后进行相应修改。

(2)替换延迟链。
解决:用倍频、分频或者同步计数器完成。

(3)替换异步脉冲产生单元(毛刺生成器)。
解决:用同步时序设计脉冲电路。

(4)慎用锁存器。
解决:
A、使用完备的if…else语句;
B、检查设计中是否含有组合逻辑反馈环路;
C、对每个输入条件,设计输出操作,对case语句设置default操作。特别是在状态机设计中,最好有一个default的状态转移,而且每个状态最好也有一个default的操作。
D、如果使用case语句时,特别是在设计状态机时,尽量附加综合约束属性,综合为完全条件case语句。

小技巧:仔细检查综合器的综合报告,目前大多数的综合器对所综合出的latch都会报“warning”,通过综合报告可以较为方便地找出无意中生成的latch。

15、时钟设计的注意事项

(1)同步时序电路推荐的时钟设计方法:
时钟经全局时钟输入引脚输入,通过FPGA内部专用的PLL或DLL进行分频/倍频、移相等调整与运算,然后经FPGA内部全局时钟布线资源驱动到达芯片内所有寄存器和其他模块的时钟输入端。

FPGA设计者的5项基本功:仿真、综合、时序分析、调试、验证。
对于FPGA设计者来说,练好这5项基本功,与用好相应的EDA工具是同一过程,对应关系如下:

1. 仿真:Modelsim, Quartus II(Simulator Tool)
2. 综合:Quartus II (Compiler Tool, RTL Viewer, Technology Map Viewer, Chip Planner)
3. 时序:Quartus II (TimeQuest Timing Analyzer, Technology Map Viewer, Chip Planner)
4. 调试:Quartus II (SignalTap II Logic Analyzer, Virtual JTAG, Assignment Editor)
5. 验证:Modelsim, Quartus II(Test Bench Template Writer)

掌握HDL语言虽然不是FPGA设计的全部,但是HDL语言对FPGA设计的影响贯穿于整个FPGA设计流程中,与FPGA设计的5项基本功是相辅相成的。
对于FPGA设计者来说,用好“HDL语言的可综合子集”可以完成FPGA设计50%的工作——设计编码。


练好仿真、综合、时序分析这3项基本功,对于学习“HDL语言的可综合子集”有如下帮助:

1. 通过仿真,可以观察HDL语言在FPGA中的逻辑行为。
2. 通过综合,可以观察HDL语言在FPGA中的物理实现形式。
3. 通过时序分析,可以分析HDL语言在FPGA中的物理实现特性。

对于FPGA设计者来说,用好“HDL语言的验证子集”,可以完成FPGA设计另外50%的工作——调试验证。

1. 搭建验证环境,通过仿真的手段可以检验FPGA设计的正确性。
2. 全面的仿真验证可以减少FPGA硬件调试的工作量。
3. 把硬件调试与仿真验证方法结合起来,用调试解决仿真未验证的问题,用仿真保证已经解决的问题不在调试中再现,可以建立一个回归验证流程,有助于FPGA设计项目的维护。

FPGA设计者的这5项基本功不是孤立的,必须结合使用,才能完成一个完整的FPGA设计流程。反过来说,通过完成一个完整的设计流程,才能最有效地练习这5项基本功。对这5项基本功有了初步认识,就可以逐个深入学习一些,然后把学到的知识再次用于完整的设计流程。如此反复,就可以逐步提高设计水平。采用这样的循序渐进、螺旋式上升的方法,只要通过培训入了门,就可以自学自练,自我提高。

市面上出售的有关FPGA设计的书籍为了保证结构的完整性,对FPGA设计的每一个方面分开介绍,每一方面虽然深入,但是由于缺少其他相关方面的支持,读者很难付诸实践,只有通读完全书才能对FPGA设计获得一个整体的认识。这样的书籍,作为工程培训指导书不行,可以作为某一个方面进阶的参考书。

对于新入职的员工来说,他们往往对FPGA的整体设计流程有了初步认识,5项基本功的某几个方面可能很扎实。但是由于某个或某几个方面能力的欠缺,限制了他们独自完成整个设计流程的能力。入职培训的目的就是帮助他们掌握整体设计流程,培养自我获取信息的能力,通过几个设计流程来回的训练,形成自我促进、自我发展的良性循环。在这一过程中,随着对工作涉及的知识的广度和深度的认识逐步清晰,新员工的自信心也会逐步增强,对个人的发展方向也会逐步明确,才能积极主动地参与到工程项目中来。

最后总结几点:

1)看代码,建模型

只有在脑海中建立了一个个逻辑模型,理解FPGA内部逻辑结构实现的基础,才能明白为什么写Verilog和写C整体思路是不一样的,才能理解顺序执行语言和并行执行语言的设计方法上的差异。在看到一段简单程序的时候应该想到是什么样的功能电路。
例如:


2)用数学思维来简化设计逻辑

学习FPGA不仅逻辑思维很重要,好的数学思维也能让你的设计化繁为简,所以啊,那些看见高数就头疼的童鞋需要重视一下这门课哦。举个简单的例子,比如有两个32bit的数据X[31:0]与Y[31:0]相乘。当然,无论Altera还是Xilinx都有现成的乘法器IP核可以调用,这也是最简单的方法,但是两个32bit的乘法器将耗费大量的资源。那么有没有节省资源,又不太复杂的方式来实现呢?我们可以稍做修改:

将X[31:0]拆成两部分X1[15:0]和X2[15:0],令X1[15:0]=X[31:16],X2[15:0]=X[15:0],则X1左移16位后与X2相加可以得到X;同样将Y[31:0]拆成两部分Y1[15:0]和Y2[15:0],令 Y1[15:0]=Y[31:16],Y2[15:0]=Y[15:0],则Y1左移16位后与Y2相加可以得到Y;则X与Y的相乘可以转化为X1和X2 分别与Y1和Y2相乘,这样一个32bit*32bit的乘法运算转换成了四个16bit*16bit的乘法运算和三个32bit的加法运算。转换后的占用资源将会减少很多,有兴趣的童鞋,不妨综合一下看看,看看两者差多少。

3)时钟与触发器的关系

“时钟是时序电路的控制者”这句话太经典了,可以说是FPGA设计的圣言。FPGA的设计主要是以时序电路为主,因为组合逻辑电路再怎么复杂也变不出太多花样,理解起来也不没太多困难。但是时序电路就不同了,它的所有动作都是在时钟一拍一拍的节奏下转变触发,可以说时钟就是整个电路的控制者,控制不好,电路功能就会混乱。

打个比方,时钟就相当于人体的心脏,它每一次的跳动就是触发一个 CLK,向身体的各个器官供血,维持着机体的正常运作,每一个器官体统正常工作少不了组织细胞的构成,那么触发器就可以比作基本单元组织细胞。时序逻辑电路的时钟是控制时序逻辑电路状态转换的“发动机”,没有它时序逻辑电路就不能正常工作,因为时序逻辑电路主要是利用触发器存储电路的状态,而触发器状态变换需要时钟的上升或下降沿!由此可见时钟在时序电路中的核心作用!

最后简单说一下体会吧,归结起来就多实践、多思考、多问。实践出真知,看100遍别人的方案不如自己去实践一下。实践的动力一方面来自兴趣,一方面来自压力,我个人觉得后者更重要。有需求会容易形成压力,也就是说最好能在实际的项目开发中锻炼,而不是为了学习而学习。在实践的过程中要多思考,多想想问题出现的原因,问题解决后要多问几个为什么,这也是经验积累的过程,如果有写项目日志的习惯更好,把问题及原因、解决的办法都写进去。最后还要多问,遇到问题思索后还得不到解决就要问了,毕竟个人的力量是有限的,问同学同事、问搜索引擎、问网友都可以,一篇文章、朋友们的点拨都可能帮助自己快速解决问题。
 
 
来源:网络 查看全部
从大学时代第一次接触FPGA至今已有10多年的时间,至今记得当初第一次在EDA实验平台上完成数字秒表、抢答器、密码锁等实验时那个兴奋劲。当时由于没有接触到HDL硬件描述语言,设计都是在MAX+plus II原理图环境下用74系列逻辑器件搭建起来的。后来读研究生,工作陆陆续续也用过Quartus II、Foundation、ISE、Libero,并且学习了verilogHDL语言,学习的过程中也慢慢体会到verilog的妙用,原来一小段语言就能完成复杂的原理图设计,而且语言的移植性可操作性比原理图设计强很多。

学习一门技术之前我们往往从它的编程语言入手,比如学习单片机时,我们往往从汇编或者C语言入门。所以不少开始接触FPGA的开发人员,往往是从VHDL或者Verilog开始入手学习的。但我个人认为,若能先结合《数字电路基础》系统学习各种74系列逻辑电路,深刻理解逻辑功能,对于学习HDL语言大有裨益,往往会起到事半功倍的效果。
640.webp_(1)_.jpg

当然,任何编程语言的学习都不是一朝一夕的事,经验技巧的积累都是在点滴中完成,FPGA设计也无例外。下面就以我的切身体会,谈谈FPGA设计的经验技巧。

我们先谈一下FPGA基本知识:

FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

1、硬件设计基本原则

(1)速度与面积平衡和互换原则:一个设计如果时序余量较大,所能跑的频率远高于设计要求,能可以通过模块复用来减少整个设计消耗的芯片面积,这就是用速度优势换面积的节约;反之,如果一个设计的时序要求很高,普通方法达不到设计频率,那么可以通过数据流串并转换,并行复制多个操作模块,对整个设计采用“乒乓操作”和“串并转换”的思想进行处理,在芯片输出模块处再对数据进行“并串转换”。从而实现了用面积复制换取速度的提高。
(2)硬件原则:理解HDL本质
(3)系统原则:整体把握
(4)同步设计原则:设计时序稳定的基本原则

2、Verilog作为一种HDL语言,对系统行为的建模方式是分层次的。比较重要的层次有系统级、算法级、寄存器传输级、逻辑级、门级、电路开关级。

3、实际工作中,除了描述仿真测试激励时使用for循环语句外,极少在RTL级编码中使用for循环,这是因为for循环会被综合器展开为所有变量情况的执行语句,每个变量独立占用寄存器资源,不能有效的复用硬件逻辑资源,造成巨大的浪费。一般常用case语句代替。

4、if…else…和case在嵌套描述时是有很大区别的,if…else…是有优先级的,一般来说,第一个if的优先级最高,最后一个else的优先级最低。而case语句是平行语句,它是没有优先级的,而建立优先级结构需要耗费大量的逻辑资源,所以能用case的地方就不要用if…else…语句。
补充:1.也可以用if…; if…; if…;描述不带优先级的“平行”语句。

5、FPGA一般触发器资源比较丰富,而CPLD组合逻辑资源更丰富。

6、FPGA和CPLD的组成:
FPGA基本有可编程I/O单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核等6部分组成。
CPLD的结构相对比较简单,主要由可编程I/O单元、基本逻辑单元、布线池和其他辅助功能模块组成。

7、Block RAM:

3种块RAM结构,M512 RAM(512bit)、M4K RAM(4Kbit)、M-RAM(64Kbit)。
M512 RAM:适合做一些小的Buffer、FIFO、DPRAM、SPRAM、ROM等;
M4K RAM: 适用于一般的需求
M-RAM: 适合做大块数据的缓冲区。
Xlinx 和 Lattice FPGA的LUT可以灵活配置成小的RAM、ROM、FIFO等存储结构,这种技术被称为分布式RAM。
补充:但是在一般的设计中,不提倡用FPGA/CPLD的片内资源配置成大量的存储器,这是处于成本的考虑。所以尽量采用外接存储器。

8、善用芯片内部的PLL或DLL资源完成时钟的分频、倍频率、移相等操作,不仅简化了设计,并且能有效地提高系统的精度和工作稳定性。

9、异步电路和同步时序电路的区别

异步电路:
电路核心逻辑有用组合电路实现;
异步时序电路的最大缺点是容易产生毛刺;
不利于器件移植;
不利于静态时序分析(STA)、验证设计时序性能。

同步时序电路:
电路核心逻辑是用各种触发器实现;
电路主要信号、输出信号等都是在某个时钟沿驱动触发器产生的;
同步时序电路可以很好的避免毛刺;
利于器件移植;
利于静态时序分析(STA)、验证设计时序性能。

10、同步设计中,稳定可靠的数据采样必须遵从以下两个基本原则:

(1)在有效时钟沿到达前,数据输入至少已经稳定了采样寄存器的Setup时间之久,这条原则简称满足Setup时间原则;
(2)在有效时钟沿到达后,数据输入至少还将稳定保持采样寄存器的Hold时钟之久,这条原则简称满足Hold时间原则。

11、同步时序设计注意事项:

异步时钟域的数据转换。
组合逻辑电路的设计方法。
同步时序电路的时钟设计。
同步时序电路的延迟。同步时序电路的延迟最常用的设计方法是用分频或者倍频的时钟或者同步计数器完成所需的延迟,对比较大的和特殊定时要求的延时,一般用高速时钟产生一个计数器,根据计数产生延迟;对于比较小的延迟,可以用D触发器打一下,这样不仅可以使信号延时了一个时钟周期,而且完成了信号与时钟的初次同步。在输入信号采样和增加时序约束余量中使用。另外,还有用行为级方法描述延迟,如“#5 a《=4’0101;”这种常用于仿真测试激励,但是在电路综合时会被忽略,并不能起到延迟作用。
Verilog 定义的reg型,不一定综合成寄存器。在Verilog代码中最常用的两种数据类型是wire和reg型,一般来说,wire型指定的数据和网线通过组合逻辑实现,而reg型指定的数据不一定就是用寄存器实现。

12、常用设计思想与技巧

(1)乒乓操作;
(2)串并转换;
(3)流水线操作;
(4)异步时钟域数据同步。是指如何在两个时钟不同步的数据域之间可靠地进行数据交换的问题。数据时钟域不同步主要有两种情况:
两个域的时钟频率相同,但是相差不固定,或者相差固定但是不可测,简称为同频异相问题。
两个时钟频率根本不同,简称异频问题。
两种不推荐的异步时钟域操作方法:一种是通过增加Buffer或者其他门延时来调整采样;另一种是盲目使用时钟正负沿调整数据采样。

13、模块划分基本原则:

(1)对每个同步时序设计的子模块的输出使用寄存器(用寄存器分割同步时序模块原则)。
(2)将相关逻辑和可以复用的逻辑划分在同一模块内(呼应系统原则)。
(3)将不同优化目标的逻辑分开。
(4)将送约束的逻辑归到同一模块。
(5)将存储逻辑独立划分成模块。
(6)合适的模块规模。
(7)顶层模块最好不进行逻辑设计。

14、组合逻辑的注意事项

(1)避免组合逻辑反馈环路(容易毛刺、振荡、时序违规等)。
解决:
A、牢记任何反馈回路必须包含寄存器;
B、检查综合、实现报告的warning信息,发现反馈回路(combinational loops)后进行相应修改。

(2)替换延迟链。
解决:用倍频、分频或者同步计数器完成。

(3)替换异步脉冲产生单元(毛刺生成器)。
解决:用同步时序设计脉冲电路。

(4)慎用锁存器。
解决:
A、使用完备的if…else语句;
B、检查设计中是否含有组合逻辑反馈环路;
C、对每个输入条件,设计输出操作,对case语句设置default操作。特别是在状态机设计中,最好有一个default的状态转移,而且每个状态最好也有一个default的操作。
D、如果使用case语句时,特别是在设计状态机时,尽量附加综合约束属性,综合为完全条件case语句。

小技巧:仔细检查综合器的综合报告,目前大多数的综合器对所综合出的latch都会报“warning”,通过综合报告可以较为方便地找出无意中生成的latch。

15、时钟设计的注意事项

(1)同步时序电路推荐的时钟设计方法:
时钟经全局时钟输入引脚输入,通过FPGA内部专用的PLL或DLL进行分频/倍频、移相等调整与运算,然后经FPGA内部全局时钟布线资源驱动到达芯片内所有寄存器和其他模块的时钟输入端。

FPGA设计者的5项基本功:仿真、综合、时序分析、调试、验证。
对于FPGA设计者来说,练好这5项基本功,与用好相应的EDA工具是同一过程,对应关系如下:

1. 仿真:Modelsim, Quartus II(Simulator Tool)
2. 综合:Quartus II (Compiler Tool, RTL Viewer, Technology Map Viewer, Chip Planner)
3. 时序:Quartus II (TimeQuest Timing Analyzer, Technology Map Viewer, Chip Planner)
4. 调试:Quartus II (SignalTap II Logic Analyzer, Virtual JTAG, Assignment Editor)
5. 验证:Modelsim, Quartus II(Test Bench Template Writer)

掌握HDL语言虽然不是FPGA设计的全部,但是HDL语言对FPGA设计的影响贯穿于整个FPGA设计流程中,与FPGA设计的5项基本功是相辅相成的。
对于FPGA设计者来说,用好“HDL语言的可综合子集”可以完成FPGA设计50%的工作——设计编码。


练好仿真、综合、时序分析这3项基本功,对于学习“HDL语言的可综合子集”有如下帮助:

1. 通过仿真,可以观察HDL语言在FPGA中的逻辑行为。
2. 通过综合,可以观察HDL语言在FPGA中的物理实现形式。
3. 通过时序分析,可以分析HDL语言在FPGA中的物理实现特性。

对于FPGA设计者来说,用好“HDL语言的验证子集”,可以完成FPGA设计另外50%的工作——调试验证。

1. 搭建验证环境,通过仿真的手段可以检验FPGA设计的正确性。
2. 全面的仿真验证可以减少FPGA硬件调试的工作量。
3. 把硬件调试与仿真验证方法结合起来,用调试解决仿真未验证的问题,用仿真保证已经解决的问题不在调试中再现,可以建立一个回归验证流程,有助于FPGA设计项目的维护。

FPGA设计者的这5项基本功不是孤立的,必须结合使用,才能完成一个完整的FPGA设计流程。反过来说,通过完成一个完整的设计流程,才能最有效地练习这5项基本功。对这5项基本功有了初步认识,就可以逐个深入学习一些,然后把学到的知识再次用于完整的设计流程。如此反复,就可以逐步提高设计水平。采用这样的循序渐进、螺旋式上升的方法,只要通过培训入了门,就可以自学自练,自我提高。

市面上出售的有关FPGA设计的书籍为了保证结构的完整性,对FPGA设计的每一个方面分开介绍,每一方面虽然深入,但是由于缺少其他相关方面的支持,读者很难付诸实践,只有通读完全书才能对FPGA设计获得一个整体的认识。这样的书籍,作为工程培训指导书不行,可以作为某一个方面进阶的参考书。

对于新入职的员工来说,他们往往对FPGA的整体设计流程有了初步认识,5项基本功的某几个方面可能很扎实。但是由于某个或某几个方面能力的欠缺,限制了他们独自完成整个设计流程的能力。入职培训的目的就是帮助他们掌握整体设计流程,培养自我获取信息的能力,通过几个设计流程来回的训练,形成自我促进、自我发展的良性循环。在这一过程中,随着对工作涉及的知识的广度和深度的认识逐步清晰,新员工的自信心也会逐步增强,对个人的发展方向也会逐步明确,才能积极主动地参与到工程项目中来。

最后总结几点:

1)看代码,建模型

只有在脑海中建立了一个个逻辑模型,理解FPGA内部逻辑结构实现的基础,才能明白为什么写Verilog和写C整体思路是不一样的,才能理解顺序执行语言和并行执行语言的设计方法上的差异。在看到一段简单程序的时候应该想到是什么样的功能电路。
例如:


2)用数学思维来简化设计逻辑

学习FPGA不仅逻辑思维很重要,好的数学思维也能让你的设计化繁为简,所以啊,那些看见高数就头疼的童鞋需要重视一下这门课哦。举个简单的例子,比如有两个32bit的数据X[31:0]与Y[31:0]相乘。当然,无论Altera还是Xilinx都有现成的乘法器IP核可以调用,这也是最简单的方法,但是两个32bit的乘法器将耗费大量的资源。那么有没有节省资源,又不太复杂的方式来实现呢?我们可以稍做修改:

将X[31:0]拆成两部分X1[15:0]和X2[15:0],令X1[15:0]=X[31:16],X2[15:0]=X[15:0],则X1左移16位后与X2相加可以得到X;同样将Y[31:0]拆成两部分Y1[15:0]和Y2[15:0],令 Y1[15:0]=Y[31:16],Y2[15:0]=Y[15:0],则Y1左移16位后与Y2相加可以得到Y;则X与Y的相乘可以转化为X1和X2 分别与Y1和Y2相乘,这样一个32bit*32bit的乘法运算转换成了四个16bit*16bit的乘法运算和三个32bit的加法运算。转换后的占用资源将会减少很多,有兴趣的童鞋,不妨综合一下看看,看看两者差多少。

3)时钟与触发器的关系

“时钟是时序电路的控制者”这句话太经典了,可以说是FPGA设计的圣言。FPGA的设计主要是以时序电路为主,因为组合逻辑电路再怎么复杂也变不出太多花样,理解起来也不没太多困难。但是时序电路就不同了,它的所有动作都是在时钟一拍一拍的节奏下转变触发,可以说时钟就是整个电路的控制者,控制不好,电路功能就会混乱。

打个比方,时钟就相当于人体的心脏,它每一次的跳动就是触发一个 CLK,向身体的各个器官供血,维持着机体的正常运作,每一个器官体统正常工作少不了组织细胞的构成,那么触发器就可以比作基本单元组织细胞。时序逻辑电路的时钟是控制时序逻辑电路状态转换的“发动机”,没有它时序逻辑电路就不能正常工作,因为时序逻辑电路主要是利用触发器存储电路的状态,而触发器状态变换需要时钟的上升或下降沿!由此可见时钟在时序电路中的核心作用!

最后简单说一下体会吧,归结起来就多实践、多思考、多问。实践出真知,看100遍别人的方案不如自己去实践一下。实践的动力一方面来自兴趣,一方面来自压力,我个人觉得后者更重要。有需求会容易形成压力,也就是说最好能在实际的项目开发中锻炼,而不是为了学习而学习。在实践的过程中要多思考,多想想问题出现的原因,问题解决后要多问几个为什么,这也是经验积累的过程,如果有写项目日志的习惯更好,把问题及原因、解决的办法都写进去。最后还要多问,遇到问题思索后还得不到解决就要问了,毕竟个人的力量是有限的,问同学同事、问搜索引擎、问网友都可以,一篇文章、朋友们的点拨都可能帮助自己快速解决问题。
 
 
来源:网络
744 浏览

FPGA在深度学习领域的应用!

机械自动化类 天黑请闭眼 2016-07-18 21:28 发表了文章 来自相关话题

        最近几年数据量和可访问性的迅速增长,使得人工智能的算法设计理念发生了转变。人工建立算法的做法被计算机从大量数据中自动习得可组合系统的能力所取代,使得计算机视觉、语音识别、自然语言处理等关键领域都出现了重大突破。深度学习是这些领域中所最常使用的技术,也被业界大为关注。然而,深度学习模型需要极为大量的数据和计算能力,只有更好的硬件加速条件,才能满足现有数据和模型规模继续扩大的需求。现有的解决方案使用图形处理单元(GPU)集群作为通用计算图形处理单元(GPGPU),但现场可编程门阵列(FPGA)提供了另一个值得探究的解决方案。日渐流行的FPGA设计工具使其对深度学习领域经常使用的上层软件兼容性更强,使得FPGA更容易为模型搭建和部署者所用。FPGA架构灵活,使得研究者能够在诸如GPU的固定架构之外进行模型优化探究。同时,FPGA在单位能耗下性能更强,这对大规模服务器部署或资源有限的嵌入式应用的研究而言至关重要。本文从硬件加速的视角考察深度学习与FPGA,指出有哪些趋势和创新使得这些技术相互匹配,并激发对FPGA如何帮助深度学习领域发展的探讨。
1.简介
机器学习对日常生活影响深远。无论是在网站上点击个性化推荐内容、在智能手机上使用语音沟通,或利用面部识别技术来拍照,都用到了某种形式的人工智能技术。这股人工智能的新潮流也伴随着算法设计的理念转变。过去基于数据的机器学习大多是利用具体领域的专业知识来人工地“塑造”所要学习的“特征”,计算机从大量示例数据中习得组合特征提取系统的能力,则使得计算机视觉、语音识别和自然语言处理等关键领域实现了重大的性能突破。对这些数据驱动技术的研究被称为深度学习,如今正受到技术界两个重要群体的关注:一是希望使用并训练这些模型、从而实现极高性能跨任务计算的研究者,二是希望为现实世界中的新应用来部署这些模型的应用科学家。然而,他们都面临着一个限制条件,即硬件加速能力仍需加强,才可能满足扩大现有数据和算法规模的需求。
         对于深度学习来说,目前硬件加速主要靠使用图形处理单元(GPU)集群作为通用计算图形处理单元(GPGPU)。相比传统的通用处理器(GPP),GPU的核心计算能力要多出几个数量级,也更容易进行并行计算。尤其是NVIDIACUDA,作为最主流的GPGPU编写平台,各个主要的深度学习工具均用其来进行GPU加速。最近,开放型并行程序设计标准OpenCL作为异构硬件编程的替代性工具备受关注,而对这些工具的热情也在高涨。虽然在深度学习领域内,OpenCL获得的支持相较CUDA还略逊一筹,但OpenCL有两项独特的性能。首先,OpenCL对开发者开源、免费,不同于CUDA单一供应商的做法。其次,OpenCL支持一系列硬件,包括GPU、GPP、现场可编程门阵列(FPGA)和数字信号处理器(DSP)。
 1.1.FPGA 作为GPU在算法加速上强有力的竞争者,FPGA是否立即支持不同硬件,显得尤为重要。FPGA与GPU不同之处在于硬件配置灵活,且FPGA在运行深入学习中关键的子程序(例如对滑动窗口的计算)时,单位能耗下通常能比GPU提供更好的表现。不过,设置FPGA需要具体硬件的知识,许多研究者和应用科学家并不具备,正因如此,FPGA经常被看作一种行家专属的架构。
        最近,FPGA工具开始采用包括OpenCL在内的软件级编程模型,使其越来越受经主流软件开发训练的用户青睐。 对考察一系列设计工具的研究者而言,其对工具的筛选标准通常与其是否具备用户友好的软件开发工具、是否具有灵活可升级的模型设计方法以及是否能迅速计算、以缩减大模型的训练时间有关。随着FPGA因为高抽象化设计工具的出现而越来越容易编写,其可重构性又使得定制架构成为可能,同时高度的并行计算能力提高了指令执行速度,FPGA将为深度学习的研究者带来好处。
        对应用科学家而言,尽管有类似的工具级选择,但硬件挑选的重点在于最大化提高单位能耗的性能,从而为大规模运行降低成本。所以,FPGA凭借单位能耗的强劲性能,加上为特定应用定制架构的能力,就能让深度学习的应用科学家受益。 FPGA能满足两类受众的需求,是一个合乎逻辑的选择。本文考察FPGA上深度学习的现状,以及目前用于填补两者间鸿沟的技术发展。因此,本文有三个重要目的。首先,指出深度学习领域存在探索全新硬件加速平台的机会,而FPGA是一个理想的选择。其次,勾勒出FPGA支持深度学习的现状,指出潜在的限制。最后,对FPGA硬件加速的未来方向提出关键建议,帮助解决今后深度学习所面临的问题。
 2.FPGA 传统来说,在评估硬件平台的加速时,必须考虑到灵活性和性能之间的权衡。一方面,通用处理器(GPP)可提供高度的灵活性和易用性,但性能相对缺乏效率。这些平台往往更易于获取,可以低廉的价格生产,并且适用于多种用途和重复使用。另一方面,专用集成电路(ASIC)可提供高性能,但代价是不够灵活且生产难度更大。这些电路专用于某特定的应用程序,并且生产起来价格昂贵且耗时。
      FPGA是这两个极端之间的折中。FPGA属于一类更通用的可编程逻辑设备(PLD),并且简单来说,是一种可重新配置的集成电路。因此,FPGA既能提供集成电路的性能优势,又具备GPP可重新配置的灵活性。FPGA能够简单地通过使用触发器(FF)来实现顺序逻辑,并通过使用查找表(LUT)来实现组合逻辑。现代的FPGA还含有硬化组件以实现一些常用功能,例如全处理器内核、通信内核、运算内核和块内存(BRAM)。另外,目前的FPGA趋势趋向于系统芯片(SoC)设计方法,即ARM协处理器和FPGA通常位于同一芯片中。目前的FPGA市场由Xilinx主导,占据超过85%的市场份额。此外,FPGA正迅速取代ASIC和应用专用标准产品(ASSP)来实现固定功能逻辑。FPGA市场规模预计在2016年将达到100亿美元。
      对于深度学习而言,FPGA提供了优于传统GPP加速能力的显著潜力。GPP在软件层面的执行依赖于传统的冯·诺依曼架构,指令和数据存储于外部存储器中,在需要时再取出。这推动了缓存的出现,大大减轻了昂贵的外部存储器操作。该架构的瓶颈是处理器和存储器之间的通信,这严重削弱了GPP的性能,尤其影响深度学习经常需要获取的存储信息技术。相比较而言,FPGA的可编程逻辑原件可用于实现普通逻辑功能中的数据和控制路径,而不依赖于冯·诺伊曼结构。它们也能够利用分布式片上存储器,以及深度利用流水线并行,这与前馈性深度学习方法自然契合。现代FPGA还支持部分动态重新配置,当FPGA的一部分被重新配置时另一部分仍可使用。这将对大规模深度学习模式产生影响,FPGA的各层可进行重新配置,而不扰乱其他层正在进行的计算。这将可用于无法由单个FPGA容纳的模型,同时还可通过将中间结果保存在本地存储以降低高昂的全球存储读取费用。
        最重要的是,相比于GPU,FPGA为硬件加速设计的探索提供了另一个视角。GPU和其它固定架构的设计是遵循软件执行模型,并围绕自主计算单元并行以执行任务搭建结构。由此,为深度学习技术开发GPU的目标就是使算法适应这一模型,让计算并行完成、确保数据相互依赖。与此相反,FPGA架构是为应用程序专门定制的。在开发FPGA的深度学习技术时,较少强调使算法适应某固定计算结构,从而留出更多的自由去探索算法层面的优化。需要很多复杂的下层硬件控制操作的技术很难在上层软件语言中实现,但对FPGA执行却特别具有吸引力。然而,这种灵活性是以大量编译(定位和回路)时间为成本的,对于需要通过设计循环快速迭代的研究人员来说这往往会是个问题。
       除了编译时间外,吸引偏好上层编程语言的研究人员和应用科学家来开发FPGA的问题尤为艰难。虽然能流利使用一种软件语言常常意味着可以轻松地学习另一种软件语言,但对于硬件语言翻译技能来说却非如此。针对FPGA最常用的语言是Verilog和VHDL,两者均为硬件描述语言(HDL)。这些语言和传统的软件语言之间的主要区别是,HDL只是单纯描述硬件,而例如C语言等软件语言则描述顺序指令,并无需了解硬件层面的执行细节。有效地描述硬件需要对数字化设计和电路的专业知识,尽管一些下层的实现决定可以留给自动合成工具去实现,但往往无法达到高效的设计。因此,研究人员和应用科学家倾向于选择软件设计,因其已经非常成熟,拥有大量抽象和便利的分类来提高程序员的效率。这些趋势使得FPGA领域目前更加青睐高度抽象化的设计工具。
 FPGA深度学习研究里程碑:
 1987VHDL成为IEEE标准
1992GANGLION成为首个FPGA神经网络硬件实现项目(Coxetal.)
1994Synopsys推出第一代FPGA行为综合方案 1996VIP成为首个FPGA的CNN实现方案(Cloutieretal.)
 2005FPGA市场价值接近20亿美元 2006首次利用BP算法在FPGA上实现5GOPS的处理能力
2011Altera推出OpenCL,支持FPGA 出现大规模的基于FPGA的CNN算法研究(Farabetetal.)
 2016在微软Catapult项目的基础上,出现基于FPGA的数据中心CNN算法加速(Ovtcharovetal.)
4.未来展望
       深度学习的未来不管是就FPGA还是总体而言,主要取决于可扩展性。要让这些技术成功解决未来的问题,必须要拓展到能够支持飞速增长的数据规模和架构。FPGA技术正在适应这一趋势,而硬件正朝着更大内存、更少的特征点数量、更好的互连性发展,来适应FPGA多重配置。英特尔收购了Altera,IBM与Xilinx合作,都昭示着FPGA领域的变革,未来也可能很快看到FPGA与个人应用和数据中心应用的整合。另外,算法设计工具可能朝着进一步抽象化和体验软件化的方向发展,从而吸引更广技术范围的用户。
4.1.常用深度学习软件工具
      在深度学习最常用的软件工具中,有些工具已经在支持CUDA的同时,认识到支持OpenCL的必要性。这将使得FPGA更容易实现深度学习的目的。虽然据我们所知,目前没有任何深度学习工具明确表示支持FPGA,不过下面的表格列出了哪些工具正朝支持OpenCL方向发展:
 Caffe,由伯克利视觉与学习中心开发,其GreenTea项目对OpenCL提供非正式支持。
Caffe另有支持OpenCL的AMD版本。 Torch,基于Lua语言的科学计算框架,使用范围广,其项目CLTorch对OpenCL提供非正式支持。
Theano,由蒙特利尔大学开发,其正在研发的gpuarray后端对OpenCL提供非正式支持。
 DeepCL,由HughPerkins开发的OpenCL库,用于训练卷积神经网络。
 对于刚进入此领域、希望选择工具的人来说,我们的建议是从Caffe开始,因为它十分常用,支持性好,用户界面简单。利用Caffe的modelzoo库,也很容易用预先训练好的模型进行试验。
4.2.增加训练自由度
     有人或许以为训练机器学习算法的过程是完全自动的,实际上有一些超参数需要调整。对于深度学习尤为如此,模型在参数量上的复杂程度经常伴随着大量可能的超参数组合。可以调整的超参数包括训练迭代次数、学习速率、批梯度尺寸、隐藏单元数和层数等等。调整这些参数,等于在所有可能的模型中,挑选最适用于某个问题的模型。传统做法中,超参数的设置要么依照经验,要么根据系统网格搜索或更有效的随机搜索来进行。最近研究者转向了适应性的方法,用超参数调整的尝试结果为配置依据。其中,贝叶斯优化是最常用的方法。
        不管用何种方法调整超参数,目前利用固定架构的训练流程在某种程度上局限了模型的可能性,也就是说,我们或许只在所有的解决方案中管窥了一部分。固定架构让模型内的超参数设置探究变得很容易(比如,隐藏单元数、层数等),但去探索不同模型间的参数设置变得很难(比如,模型类别的不同),因为如果要就一个并不简单符合某个固定架构的模型来进行训练,就可能要花很长时间。相反,FPGA灵活的架构,可能更适合上述优化类型,因为用FPGA能编写一个完全不同的硬件架构并在运行时加速。
 4.3.Low power compute clusters低耗能计算节点集群
      深度学习模型最让人着迷的就是其拓展能力。不管是为了从数据中发现复杂的高层特征,还是为数据中心应用提升性能,深度学习技术经常在多节点计算基础架构间进行拓展。目前的解决方案使用具备Infiniband互连技术的GPU集群和MPI,从而实现上层的并行计算能力和节点间数据的快速传输。然而,当大规模应用的负载越来越各不相同,使用FPGA可能会是更优的方法。FPGA的可编程行允许系统根据应用和负载进行重新配置,同时FPGA的能耗比高,有助于下一代数据中心降低成本。
5.结语
      相比GPU和GPP,FPGA在满足深度学习的硬件需求上提供了具有吸引力的替代方案。凭借流水线并行计算的能力和高效的能耗,FPGA将在一般的深度学习应用中展现GPU和GPP所没有的独特优势。同时,算法设计工具日渐成熟,如今将FPGA集成到常用的深度学习框架已成为可能。未来,FPGA将有效地适应深度学习的发展趋势,从架构上确保相关应用和研究能够自由实现。
文章来源:网络 查看全部
        最近几年数据量和可访问性的迅速增长,使得人工智能的算法设计理念发生了转变。人工建立算法的做法被计算机从大量数据中自动习得可组合系统的能力所取代,使得计算机视觉、语音识别、自然语言处理等关键领域都出现了重大突破。深度学习是这些领域中所最常使用的技术,也被业界大为关注。然而,深度学习模型需要极为大量的数据和计算能力,只有更好的硬件加速条件,才能满足现有数据和模型规模继续扩大的需求。现有的解决方案使用图形处理单元(GPU)集群作为通用计算图形处理单元(GPGPU),但现场可编程门阵列(FPGA)提供了另一个值得探究的解决方案。日渐流行的FPGA设计工具使其对深度学习领域经常使用的上层软件兼容性更强,使得FPGA更容易为模型搭建和部署者所用。FPGA架构灵活,使得研究者能够在诸如GPU的固定架构之外进行模型优化探究。同时,FPGA在单位能耗下性能更强,这对大规模服务器部署或资源有限的嵌入式应用的研究而言至关重要。本文从硬件加速的视角考察深度学习与FPGA,指出有哪些趋势和创新使得这些技术相互匹配,并激发对FPGA如何帮助深度学习领域发展的探讨。
1.简介
机器学习对日常生活影响深远。无论是在网站上点击个性化推荐内容、在智能手机上使用语音沟通,或利用面部识别技术来拍照,都用到了某种形式的人工智能技术。这股人工智能的新潮流也伴随着算法设计的理念转变。过去基于数据的机器学习大多是利用具体领域的专业知识来人工地“塑造”所要学习的“特征”,计算机从大量示例数据中习得组合特征提取系统的能力,则使得计算机视觉、语音识别和自然语言处理等关键领域实现了重大的性能突破。对这些数据驱动技术的研究被称为深度学习,如今正受到技术界两个重要群体的关注:一是希望使用并训练这些模型、从而实现极高性能跨任务计算的研究者,二是希望为现实世界中的新应用来部署这些模型的应用科学家。然而,他们都面临着一个限制条件,即硬件加速能力仍需加强,才可能满足扩大现有数据和算法规模的需求。
         对于深度学习来说,目前硬件加速主要靠使用图形处理单元(GPU)集群作为通用计算图形处理单元(GPGPU)。相比传统的通用处理器(GPP),GPU的核心计算能力要多出几个数量级,也更容易进行并行计算。尤其是NVIDIACUDA,作为最主流的GPGPU编写平台,各个主要的深度学习工具均用其来进行GPU加速。最近,开放型并行程序设计标准OpenCL作为异构硬件编程的替代性工具备受关注,而对这些工具的热情也在高涨。虽然在深度学习领域内,OpenCL获得的支持相较CUDA还略逊一筹,但OpenCL有两项独特的性能。首先,OpenCL对开发者开源、免费,不同于CUDA单一供应商的做法。其次,OpenCL支持一系列硬件,包括GPU、GPP、现场可编程门阵列(FPGA)和数字信号处理器(DSP)。
 1.1.FPGA 作为GPU在算法加速上强有力的竞争者,FPGA是否立即支持不同硬件,显得尤为重要。FPGA与GPU不同之处在于硬件配置灵活,且FPGA在运行深入学习中关键的子程序(例如对滑动窗口的计算)时,单位能耗下通常能比GPU提供更好的表现。不过,设置FPGA需要具体硬件的知识,许多研究者和应用科学家并不具备,正因如此,FPGA经常被看作一种行家专属的架构。
        最近,FPGA工具开始采用包括OpenCL在内的软件级编程模型,使其越来越受经主流软件开发训练的用户青睐。 对考察一系列设计工具的研究者而言,其对工具的筛选标准通常与其是否具备用户友好的软件开发工具、是否具有灵活可升级的模型设计方法以及是否能迅速计算、以缩减大模型的训练时间有关。随着FPGA因为高抽象化设计工具的出现而越来越容易编写,其可重构性又使得定制架构成为可能,同时高度的并行计算能力提高了指令执行速度,FPGA将为深度学习的研究者带来好处。
        对应用科学家而言,尽管有类似的工具级选择,但硬件挑选的重点在于最大化提高单位能耗的性能,从而为大规模运行降低成本。所以,FPGA凭借单位能耗的强劲性能,加上为特定应用定制架构的能力,就能让深度学习的应用科学家受益。 FPGA能满足两类受众的需求,是一个合乎逻辑的选择。本文考察FPGA上深度学习的现状,以及目前用于填补两者间鸿沟的技术发展。因此,本文有三个重要目的。首先,指出深度学习领域存在探索全新硬件加速平台的机会,而FPGA是一个理想的选择。其次,勾勒出FPGA支持深度学习的现状,指出潜在的限制。最后,对FPGA硬件加速的未来方向提出关键建议,帮助解决今后深度学习所面临的问题。
 2.FPGA 传统来说,在评估硬件平台的加速时,必须考虑到灵活性和性能之间的权衡。一方面,通用处理器(GPP)可提供高度的灵活性和易用性,但性能相对缺乏效率。这些平台往往更易于获取,可以低廉的价格生产,并且适用于多种用途和重复使用。另一方面,专用集成电路(ASIC)可提供高性能,但代价是不够灵活且生产难度更大。这些电路专用于某特定的应用程序,并且生产起来价格昂贵且耗时。
      FPGA是这两个极端之间的折中。FPGA属于一类更通用的可编程逻辑设备(PLD),并且简单来说,是一种可重新配置的集成电路。因此,FPGA既能提供集成电路的性能优势,又具备GPP可重新配置的灵活性。FPGA能够简单地通过使用触发器(FF)来实现顺序逻辑,并通过使用查找表(LUT)来实现组合逻辑。现代的FPGA还含有硬化组件以实现一些常用功能,例如全处理器内核、通信内核、运算内核和块内存(BRAM)。另外,目前的FPGA趋势趋向于系统芯片(SoC)设计方法,即ARM协处理器和FPGA通常位于同一芯片中。目前的FPGA市场由Xilinx主导,占据超过85%的市场份额。此外,FPGA正迅速取代ASIC和应用专用标准产品(ASSP)来实现固定功能逻辑。FPGA市场规模预计在2016年将达到100亿美元。
      对于深度学习而言,FPGA提供了优于传统GPP加速能力的显著潜力。GPP在软件层面的执行依赖于传统的冯·诺依曼架构,指令和数据存储于外部存储器中,在需要时再取出。这推动了缓存的出现,大大减轻了昂贵的外部存储器操作。该架构的瓶颈是处理器和存储器之间的通信,这严重削弱了GPP的性能,尤其影响深度学习经常需要获取的存储信息技术。相比较而言,FPGA的可编程逻辑原件可用于实现普通逻辑功能中的数据和控制路径,而不依赖于冯·诺伊曼结构。它们也能够利用分布式片上存储器,以及深度利用流水线并行,这与前馈性深度学习方法自然契合。现代FPGA还支持部分动态重新配置,当FPGA的一部分被重新配置时另一部分仍可使用。这将对大规模深度学习模式产生影响,FPGA的各层可进行重新配置,而不扰乱其他层正在进行的计算。这将可用于无法由单个FPGA容纳的模型,同时还可通过将中间结果保存在本地存储以降低高昂的全球存储读取费用。
        最重要的是,相比于GPU,FPGA为硬件加速设计的探索提供了另一个视角。GPU和其它固定架构的设计是遵循软件执行模型,并围绕自主计算单元并行以执行任务搭建结构。由此,为深度学习技术开发GPU的目标就是使算法适应这一模型,让计算并行完成、确保数据相互依赖。与此相反,FPGA架构是为应用程序专门定制的。在开发FPGA的深度学习技术时,较少强调使算法适应某固定计算结构,从而留出更多的自由去探索算法层面的优化。需要很多复杂的下层硬件控制操作的技术很难在上层软件语言中实现,但对FPGA执行却特别具有吸引力。然而,这种灵活性是以大量编译(定位和回路)时间为成本的,对于需要通过设计循环快速迭代的研究人员来说这往往会是个问题。
       除了编译时间外,吸引偏好上层编程语言的研究人员和应用科学家来开发FPGA的问题尤为艰难。虽然能流利使用一种软件语言常常意味着可以轻松地学习另一种软件语言,但对于硬件语言翻译技能来说却非如此。针对FPGA最常用的语言是Verilog和VHDL,两者均为硬件描述语言(HDL)。这些语言和传统的软件语言之间的主要区别是,HDL只是单纯描述硬件,而例如C语言等软件语言则描述顺序指令,并无需了解硬件层面的执行细节。有效地描述硬件需要对数字化设计和电路的专业知识,尽管一些下层的实现决定可以留给自动合成工具去实现,但往往无法达到高效的设计。因此,研究人员和应用科学家倾向于选择软件设计,因其已经非常成熟,拥有大量抽象和便利的分类来提高程序员的效率。这些趋势使得FPGA领域目前更加青睐高度抽象化的设计工具。
 FPGA深度学习研究里程碑:
 1987VHDL成为IEEE标准
1992GANGLION成为首个FPGA神经网络硬件实现项目(Coxetal.)
1994Synopsys推出第一代FPGA行为综合方案 1996VIP成为首个FPGA的CNN实现方案(Cloutieretal.)
 2005FPGA市场价值接近20亿美元 2006首次利用BP算法在FPGA上实现5GOPS的处理能力
2011Altera推出OpenCL,支持FPGA 出现大规模的基于FPGA的CNN算法研究(Farabetetal.)
 2016在微软Catapult项目的基础上,出现基于FPGA的数据中心CNN算法加速(Ovtcharovetal.)
4.未来展望
       深度学习的未来不管是就FPGA还是总体而言,主要取决于可扩展性。要让这些技术成功解决未来的问题,必须要拓展到能够支持飞速增长的数据规模和架构。FPGA技术正在适应这一趋势,而硬件正朝着更大内存、更少的特征点数量、更好的互连性发展,来适应FPGA多重配置。英特尔收购了Altera,IBM与Xilinx合作,都昭示着FPGA领域的变革,未来也可能很快看到FPGA与个人应用和数据中心应用的整合。另外,算法设计工具可能朝着进一步抽象化和体验软件化的方向发展,从而吸引更广技术范围的用户。
4.1.常用深度学习软件工具
      在深度学习最常用的软件工具中,有些工具已经在支持CUDA的同时,认识到支持OpenCL的必要性。这将使得FPGA更容易实现深度学习的目的。虽然据我们所知,目前没有任何深度学习工具明确表示支持FPGA,不过下面的表格列出了哪些工具正朝支持OpenCL方向发展:
 Caffe,由伯克利视觉与学习中心开发,其GreenTea项目对OpenCL提供非正式支持。
Caffe另有支持OpenCL的AMD版本。 Torch,基于Lua语言的科学计算框架,使用范围广,其项目CLTorch对OpenCL提供非正式支持。
Theano,由蒙特利尔大学开发,其正在研发的gpuarray后端对OpenCL提供非正式支持。
 DeepCL,由HughPerkins开发的OpenCL库,用于训练卷积神经网络。
 对于刚进入此领域、希望选择工具的人来说,我们的建议是从Caffe开始,因为它十分常用,支持性好,用户界面简单。利用Caffe的modelzoo库,也很容易用预先训练好的模型进行试验。
4.2.增加训练自由度
     有人或许以为训练机器学习算法的过程是完全自动的,实际上有一些超参数需要调整。对于深度学习尤为如此,模型在参数量上的复杂程度经常伴随着大量可能的超参数组合。可以调整的超参数包括训练迭代次数、学习速率、批梯度尺寸、隐藏单元数和层数等等。调整这些参数,等于在所有可能的模型中,挑选最适用于某个问题的模型。传统做法中,超参数的设置要么依照经验,要么根据系统网格搜索或更有效的随机搜索来进行。最近研究者转向了适应性的方法,用超参数调整的尝试结果为配置依据。其中,贝叶斯优化是最常用的方法。
        不管用何种方法调整超参数,目前利用固定架构的训练流程在某种程度上局限了模型的可能性,也就是说,我们或许只在所有的解决方案中管窥了一部分。固定架构让模型内的超参数设置探究变得很容易(比如,隐藏单元数、层数等),但去探索不同模型间的参数设置变得很难(比如,模型类别的不同),因为如果要就一个并不简单符合某个固定架构的模型来进行训练,就可能要花很长时间。相反,FPGA灵活的架构,可能更适合上述优化类型,因为用FPGA能编写一个完全不同的硬件架构并在运行时加速。
 4.3.Low power compute clusters低耗能计算节点集群
      深度学习模型最让人着迷的就是其拓展能力。不管是为了从数据中发现复杂的高层特征,还是为数据中心应用提升性能,深度学习技术经常在多节点计算基础架构间进行拓展。目前的解决方案使用具备Infiniband互连技术的GPU集群和MPI,从而实现上层的并行计算能力和节点间数据的快速传输。然而,当大规模应用的负载越来越各不相同,使用FPGA可能会是更优的方法。FPGA的可编程行允许系统根据应用和负载进行重新配置,同时FPGA的能耗比高,有助于下一代数据中心降低成本。
5.结语
      相比GPU和GPP,FPGA在满足深度学习的硬件需求上提供了具有吸引力的替代方案。凭借流水线并行计算的能力和高效的能耗,FPGA将在一般的深度学习应用中展现GPU和GPP所没有的独特优势。同时,算法设计工具日渐成熟,如今将FPGA集成到常用的深度学习框架已成为可能。未来,FPGA将有效地适应深度学习的发展趋势,从架构上确保相关应用和研究能够自由实现。
文章来源:网络