哪些cpu支持embreecpu的功能有哪些

让大家见笑了……之前说错了,今天翻回来才发现。进行了较大改动。感谢&a href=&//www.zhihu.com/people/2ce6f447cdcd6e9dfaf395b7e60729e7& data-hash=&2ce6f447cdcd6e9dfaf395b7e60729e7& class=&member_mention& data-hovercard=&p$b$2ce6f447cdcd6e9dfaf395b7e60729e7&&@纳米酱&/a&对我的诸多指导。&br&谢谢&a href=&//www.zhihu.com/people/b7d83d4b82ea95a6e492b& data-hash=&b7d83d4b82ea95a6e492b& class=&member_mention& data-hovercard=&p$b$b7d83d4b82ea95a6e492b&&@张海东&/a&为我指出的文献错误,已修改&br&&br&不请自来。&br&为什么首先做了dbn,我确实不清楚,但有一点可以肯定。因为DBM是一个真正的无向图模型,层间互有反馈。所以在训练的时候,计算起来真的非常非常慢……比较常用的方法就是沿用当时对玻尔兹曼机求解的变分分析,利用均场来求解。&br&DBN其实源自sbn,sigmod belief network,本质是个有向图,也就是说dbn其实是个生成模型。其实如果直接求解,dbn也复杂的很,可是Hinton在06年发表在Neural Computation上的A fast learning algorithm for deep belief nets.”这篇文章中提到了一种很取巧的方法,具体的细节不做过多阐述,因为确实很简介,就是简单的叠加RBM,逐层训练后来个最后的fine turn。方便快捷,而且效果也不错,现在经常用来做一些DNN和CNN的预训练,值得注意的是,hinton在imagenet上的比赛虽然是用的CNN模型,但是就是利用的DBN做的预训练。&br&再重点说下DBM,这是我比较喜欢的一个DL模型。&br&为什么喜欢,因为DBM才是真正的深度RBM模型!&br&dbn其实只是借助rbm的训练方法来做罢了。&br&RBM,作为一个概率神经网络,当然也可以理解成一个无向图模型,有一点我觉得很重要,那就是连接的无向性,也正是这个性质,才让模型符合了统计力学的各种理论,建立起美妙却虐人的RBM。但是DBN,无疑是一个向计算妥协了的折衷模型。&br&&figure&&img src=&https://pic1.zhimg.com/72f07f3c1cb75ae4a6dc4_b.png& data-rawwidth=&415& data-rawheight=&296& class=&content_image& width=&415&&&/figure&&br&可以看下DBN的模型结构,由于是有向图,前一层的分布并不依赖后一层。这就是为什么可以采取逐层训练了,因为h的分布不受v影响啊,确定了v的分布,h1的分布由h2来确定就好。这句可能有些难懂,放在后面细说。再来看下DBM的模型,和DBN最大的不同,就是DBM的低层的分布求解其实也依赖与高层的分布。简单的说,DBN的v层是依赖h1的分布,h1只依赖h2的分布,但是DBM的h1却同时依赖h2和v。&br&这有什么区别呢,其实如果从效果来看,DBM仅仅是比DBN的鲁棒性更好而已,但是计算代价却。。。不忍直视。&br&dbn是有向图,生成模型,虽然本身的训练复杂,但他的特性刚好可以用rbm来训练,相当于巧妙的结合了无向图与有向图,多有意思。所以hinton就在06年发了这么一篇吧。&br&DBM的推导都非常漂亮,但是一时半会儿也说不清楚,不过DBM真的是个很美的模型!虽然现在貌似hinton老爷子都不怎么搞DBM,完全由他的Ruslan Salakhutdinov弟子再搞。但是这种将统计力学和图模型还有神经网络完美结合的模型,想想就让人很兴奋呢!&br&其实回过头来看,dbn也是一个很好的模型啊,特别是sbn,在时序中效果不要那么好……&br&&br&&br&参考文献&br&&br&A fast learning algorithm for deep belief nets&br&Deep Boltzmann Machines
让大家见笑了……之前说错了,今天翻回来才发现。进行了较大改动。感谢对我的诸多指导。 谢谢为我指出的文献错误,已修改 不请自来。 为什么首先做了dbn,我确实不清楚,但有一点可以肯定。因为DBM是一个真正的无向图模型,层间互有反馈。所…
同楼上,推荐laptop+ubuntu或mac,直接ssh配有GPU的服务器。&br&大部分笔记本的独显是GTX 7xxm系列的,带m的性能要比台式款差不少,跑不了大型CNN。我自己10k+的Alienware14 / GTX760m亲测不行,而且机器太沉便携性差。&br&&br&但如果非要买一台的话,试一下Yann LeCun同款:Gigabyte P35w v2。下面是Yann大叔在facebook上打的广告:&br&&The new Gigabyte P35w v2 laptop looks fantastic: 20mm thick, barely more than 2kg, 15.6. screen (), and more importantly, an NVIDIA GTX 870M that can run most deep networks. &
同楼上,推荐laptop+ubuntu或mac,直接ssh配有GPU的服务器。 大部分笔记本的独显是GTX 7xxm系列的,带m的性能要比台式款差不少,跑不了大型CNN。我自己10k+的Alienware14 / GTX760m亲测不行,而且机器太沉便携性差。 但如果非要买一台的话,试一下Yann LeCun…
看了好多,觉得下面这个介绍才是我想要的以及能看明白的,转载自:&br&&a href=&//link.zhihu.com/?target=http%3A//www.cnblogs.com/biglucky/p/4223565.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&1.2CPU和GPU的设计区别&i class=&icon-external&&&/i&&/a&&br&&br&&p&CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。而GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。&/p&&p&  于是CPU和GPU就呈现出非常不同的架构(示意图):&/p&&figure&&img src=&https://pic2.zhimg.com/e34c18dc1f92bd16760dae1_b.jpg& data-rawwidth=&353& data-rawheight=&136& class=&content_image& width=&353&&&/figure&&p&  图片来自nVidia CUDA文档。其中绿色的是计算单元,橙红色的是存储单元,橙黄色的是控制单元。&/p&&p&GPU采用了数量众多的计算单元和超长的流水线,但只有非常简单的控制逻辑并省去了Cache。而CPU不仅被Cache占据了大量空间,而且还有有复杂的控制逻辑和诸多优化电路,相比之下计算能力只是CPU很小的一部分&/p&&figure&&img src=&https://pic2.zhimg.com/894e6d2fbe985bbb0dac5d5_b.png& data-rawwidth=&1017& data-rawheight=&487& class=&origin_image zh-lightbox-thumb& width=&1017& data-original=&https://pic2.zhimg.com/894e6d2fbe985bbb0dac5d5_r.png&&&/figure&&br&&p&  从上图可以看出:&/p&&p&Cache, local memory: CPU & GPU &/p&&p&Threads(线程数): GPU & CPU&/p&&p&Registers: GPU & CPU
多寄存器可以支持非常多的Thread,thread需要用到register,thread数目大,register也必须得跟着很大才行。&/p&&p&SIMD Unit(单指令多数据流,以同步方式,在同一时间内执行同一条指令): GPU & CPU。 &/p&&p&CPU 基于低延时的设计:&/p&&figure&&img src=&https://pic3.zhimg.com/7e4a25ee38ec4e194d3424edb000d526_b.png& data-rawwidth=&1190& data-rawheight=&499& class=&origin_image zh-lightbox-thumb& width=&1190& data-original=&https://pic3.zhimg.com/7e4a25ee38ec4e194d3424edb000d526_r.png&&&/figure&&br&&p&CPU有强大的ALU(算术运算单元),它可以在很少的时钟周期内完成算术计算。&/p&&p&当今的CPU可以达到64bit 双精度。执行双精度浮点源算的加法和乘法只需要1~3个时钟周期。&/p&&p&CPU的时钟周期的频率是非常高的,达到1.532~3gigahertz(千兆HZ, 10的9次方).&/p&&p&大的缓存也可以降低延时。保存很多的数据放在缓存里面,当需要访问的这些数据,只要在之前访问过的,如今直接在缓存里面取即可。&/p&&p&复杂的逻辑控制单元。当程序含有多个分支的时候,它通过提供分支预测的能力来降低延时。&/p&&p&数据转发。 当一些指令依赖前面的指令结果时,数据转发的逻辑控制单元决定这些指令在pipeline中的位置并且尽可能快的转发一个指令的结果给后续的指令。这些动作需要很多的对比电路单元和转发电路单元。 &/p&&figure&&img src=&https://pic3.zhimg.com/654c7ff0a711e8eb0c17bb2_b.png& data-rawwidth=&1215& data-rawheight=&503& class=&origin_image zh-lightbox-thumb& width=&1215& data-original=&https://pic3.zhimg.com/654c7ff0a711e8eb0c17bb2_r.png&&&/figure&&br&&p&GPU是基于大的吞吐量设计。&/p&&p&GPU的特点是有很多的ALU和很少的cache. 缓存的目的不是保存后面需要访问的数据的,这点和CPU不同,而是为thread提高服务的。如果有很多线程需要访问同一个相同的数据,缓存会合并这些访问,然后再去访问dram(因为需要访问的数据保存在dram中而不是cache里面),获取数据后cache会转发这个数据给对应的线程,这个时候是数据转发的角色。但是由于需要访问dram,自然会带来延时的问题。&/p&&p&GPU的控制单元(左边黄色区域块)可以把多个的访问合并成少的访问。&/p&&p&GPU的虽然有dram延时,却有非常多的ALU和非常多的thread. 为啦平衡内存延时的问题,我们可以中充分利用多的ALU的特性达到一个非常大的吞吐量的效果。尽可能多的分配多的Threads.通常来看GPU ALU会有非常重的pipeline就是因为这样。&/p&&p&所以与CPU擅长逻辑控制,串行的运算。和通用类型数据运算不同,GPU擅长的是大规模并发计算,这也正是密码破解等所需要的。所以GPU除了图像处理,也越来越多的参与到计算当中来。&/p&&p&GPU的工作大部分就是这样,计算量大,但没什么技术含量,而且要重复很多很多次。就像你有个工作需要算几亿次一百以内加减乘除一样,最好的办法就是雇上几十个小学生一起算,一人算一部分,反正这些计算也没什么技术含量,纯粹体力活而已。而CPU就像老教授,积分微分都会算,就是工资高,一个老教授资顶二十个小学生,你要是富士康你雇哪个?GPU就是这样,用很多简单的计算单元去完成大量的计算任务,纯粹的人海战术。这种策略基于一个前提,就是小学生A和小学生B的工作没有什么依赖性,是互相独立的。很多涉及到大量计算的问题基本都有这种特性,比如你说的破解密码,挖矿和很多图形学的计算。这些计算可以分解为多个相同的简单小任务,每个任务就可以分给一个小学生去做。但还有一些任务涉及到“流”的问题。比如你去相亲,双方看着顺眼才能继续发展。总不能你这边还没见面呢,那边找人把证都给领了。这种比较复杂的问题都是CPU来做的。&/p&&p&  总而言之,CPU和GPU因为最初用来处理的任务就不同,所以设计上有不小的区别。而某些任务和GPU最初用来解决的问题比较相似,所以用GPU来算了。GPU的运算速度取决于雇了多少小学生,CPU的运算速度取决于请了多么厉害的教授。教授处理复杂任务的能力是碾压小学生的,但是对于没那么复杂的任务,还是顶不住人多。当然现在的GPU也能做一些稍微复杂的工作了,相当于升级成初中生高中生的水平。但还需要CPU来把数据喂到嘴边才能开始干活,究竟还是靠CPU来管的。&/p&&p&&strong&什么类型的程序适合在GPU上运行?&/strong&&/p&&p&  (1)计算密集型的程序。所谓计算密集型(Compute-intensive)的程序,就是其大部分运行时间花在了寄存器运算上,寄存器的速度和处理器的速度相当,从寄存器读写数据几乎没有延时。可以做一下对比,读内存的延迟大概是几百个时钟周期;读硬盘的速度就不说了,即便是SSD, 也实在是太慢了。&/p&&p&  (2)易于并行的程序。GPU其实是一种SIMD(Single Instruction Multiple Data)架构, 他有成百上千个核,每一个核在同一时间最好能做同样的事情。&/p&
看了好多,觉得下面这个介绍才是我想要的以及能看明白的,转载自:
CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大…
&p&在这里我假设JIT和AOT都是纯粹的JIT和AOT,而没有【在AOT的时候偶尔来一下JIT】这样的不纯洁的事情。&/p&&br&&p&AOT是事先生成机器码,其实就跟C++这样的语言差不多。选择这么做通常都会意味着你损失了一个功能——譬如说&/p&&ol&&li&C#的【虚函数也可以是模板函数】功能啦;&/li&&li&【用反射就地组合成新模板类(你有List&&,有int,代码里面没出现过List&int&,你也可以new出来,C++怎么做都不行的)】功能啦;&/li&&li&【class Fuck&T&{public Fuck&Fuck&T&& Shit{}}(C++这么干编译器会傻逼啊哈哈哈)】功能啦;&/li&&/ol&&p&所有这些功能都要求你必须运行到那才产生机器码的。&/p&&br&&p&JIT还有一个好处就是做profiling based optimization方便。当然,这样就使得运行的时候会稍微慢一点点,不过这一点点是人类不可察觉的。&/p&&br&&p&所以,靠谱的做法大概还是,你上传你的app,服务器帮你在支持的平台每一个都AOT一次,顺便带个小runtime以供JIT,然后你下载的时候按需下载。&/p&
在这里我假设JIT和AOT都是纯粹的JIT和AOT,而没有【在AOT的时候偶尔来一下JIT】这样的不纯洁的事情。 AOT是事先生成机器码,其实就跟C++这样的语言差不多。选择这么做通常都会意味着你损失了一个功能——譬如说C#的【虚函数也可以是模板函数】功能啦;【用…
楼主的问题只能针对具体JVM实现来回答,在JVM规范里是没有规定的——具体实现用1:1(内核线程)、N:1(用户态线程)、M:N(混合)模型的任何一种都完全OK。Java并不暴露出不同线程模型的区别,上层应用是感知不到差异的(只是性能特性会不太一样…)&br&&br&Java SE最常用的JVM是Oracle/Sun研发的HotSpot VM。在这个JVM的较新版本所支持的所有平台上,它都是使用1:1线程模型的——除了Solaris之外,它是个特例。&br&&br&这是HotSpot VM在Solaris上所支持的线程模型:&a href=&//link.zhihu.com/?target=http%3A//www.oracle.com/technetwork/java/threads-140302.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Java(TM) and Solaris(TM) Threading&i class=&icon-external&&&/i&&/a&&br&&- 可以看到HotSpot VM在Solaris上支持M:N和1:1模型。当前默认是用1:1模型。&br&&br&前面的回答里大家提到的“肯定不是用户态线程,不然怎么利用多核”、“多线程优势何在”,这些问题在使用N:1、M:N模型的JVM实现上确实存在。&br&&br&我喜欢用的一个例子是Oracle/Sun的另一个JVM实现,用于Java ME CLDC的CLDC HotSpot Implementation(CLDC-HI)。它支持两种线程模型,默认使用N:1线程模型,所有Java线程都映射到一个内核线程上,是典型的用户态线程模型;它也可以使用一种特殊的混合模型,Java线程仍然全部映射到一个内核线程上,但当Java线程要执行一个阻塞调用时,CLDC-HI会为该调用单独开一个内核线程,并且调度执行其它Java线程,等到那个阻塞调用完成之后再重新调度之前的Java线程继续执行。&br&有权限访问到的同学可以去读读CLDC HotSpot Implementation Architecture Guide(百度文库有对应CLDC-HI 2.0的版本:&a href=&//link.zhihu.com/?target=http%3A//wenku.baidu.com/view/2a0c7fb069dc5022aaea00f3.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CLDC-Hotspot-Architecture_百度文库&i class=&icon-external&&&/i&&/a&),里面的第5章介绍了CLDC-HI的线程模型,下面引用部分内容过来:&br&&br&&blockquote&The system has two distinct threading models. &b&The simplest and preferred model supports LWTs (light weight threads). In this model, CLDC HotSpot Implementation implements all LWTs on a single native OS thread.&/b& LWTs are essentially co-routines created and scheduled by the virtual machine. This is transparent at the Java runtime environment level.&br&...&br&A special style of handling threading might be preferable in some ports. This style relies on the availability of native thread support in the target platform OS. It is called &b&hybrid threading&/b&, ...&/blockquote&然后在另一份文档,CLDC HotSpot Implementation Porting Guide的第4章里介绍了如何移植CLDC-HI的线程系统到别的平台。&a href=&//link.zhihu.com/?target=http%3A//elastos.org& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&elastos.org&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&有一份CLDC-HI 1.1.3版本的:&a href=&//link.zhihu.com/?target=http%3A//elastos.org/elorg_files/FreeBooks/java/thesis/CLDC-Hotspot-Port.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&elastos.org/elorg_files&/span&&span class=&invisible&&/FreeBooks/java/thesis/CLDC-Hotspot-Port.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&。同样摘抄一小段描述出来:&br&&blockquote&&b&Non-blocking scheduling&/b& - The native method de-schedules its lightweight&br&thread (LWT) until another part of the virtual machine determines that the native&br&method can be executed without blocking. Then the native method is reentered to&br&proceed with the given problematic call that is now guaranteed to be of&br&sufficiently short duration.&br&&b&Hybrid threading&/b& - The native method de-schedules its LWT after delegating the&br&task to an OS thread to execute the given blocking call. When this OS thread,&br&which is truly concurrent to the rest of the virtual machine, completes the call, it&br&causes the LWT to resume. The LWT then reenters the native method to fetch the&br&results of the blocking call.&br&...&br&If you port to another platform, it might be the case that only one of the styles can be&br&implemented. Non-blocking scheduling depends on the existence of functions that&br&can determine whether a subsequent call would block. Take for example the&br&select() function for BSD sockets that can be used to determine whether a socket&br&is ready for a non-blocking data transmission call. Hybrid threading requires that&br&several OS threads are available and that all the blocking OS calls that you want to&br&employ are reentrant.&/blockquote&&br&可见,使用用户态线程是会有潜在的并行瓶颈问题,但也有(一定程度的)解决办法。
楼主的问题只能针对具体JVM实现来回答,在JVM规范里是没有规定的——具体实现用1:1(内核线程)、N:1(用户态线程)、M:N(混合)模型的任何一种都完全OK。Java并不暴露出不同线程模型的区别,上层应用是感知不到差异的(只是性能特性会不太一样…) Java S…
编译技术大约分为两种,一种AOT,只线下(offline)就将源代码编译成目标机器码,这是普遍用在系统程序语言中;另一种是JIT,只及时的编译,但是大部分的JIT引擎,针对的是将IR(中间代码,如JavaByteCode) 在运行时, 有针对性的翻译成机器码。&br&&br&对于JIT我们必须认识到,JIT不是简单的讲字节码翻译成机器码。一个JIT引擎要想快,主要取决于:1. 通过搜集runtime信息,识别出程序的热点(2/8原则)2. 最重要的一点,根据信息实时优化技术的使用。相反,JIT并不仅仅是个字节码到机器码的直译机器。&br&&br&那么楼主疑问,为何不直接全部翻译成机器码了?要回答这个问题,必须要提到以下两个观点:1.JIT是重型优化,本身overhead很大. 2. 最重要的,现代JIT技术必须依赖runtime信息,但要得到runtime信息,程序必须执行.下面稍微解释一下.&br&&br&1. JIT,毫无疑问是重型优化技术,如果程序没有循环,并且只执行一次,那么你JIT它,估计只会让程序执行更慢,因为在用户看来,程序运行时间=程序实际的运行时间+JIT的时间.其实,如果你的程序非常简单,JVM是不会做任何的JIT的。&br&&br&2.据我所知,Orcale HotSpot是使用的tracing jit,这是当前非常热门的技术。JIT技术,大体上分为:1 Per-Method-A-Time,即每次JIT一个函数,函数是最小的JIT单元,2 Tracing JIT,即每次JIT一个热点流程,基本上你可以理解为你程序中的热循环。Tracing JIT需要程序先执行,然后再执行的过程中分析出哪个是潜在的热循环,在针对它进行JIT;而Per-Method-A-Time,则同样需要得到runtime信息,在针对热点方法(如一个方法被调用100次)进行JIT。以HotSpot为例,他要实施tracing jit,首先它得有个基本的(baseline) 解释器/虚拟机 或者是naive的机器码去执行程序,在执行过程中,JVM得搜集信息(比如记录循环的计数器)识别出热的循环/代码path,然后JVM还要记录下这个热循环所执行的所有字节码(叫做tracelet);接着JIT引擎才开始进行优化(基本就是转换成SSA,然后各种执行优化pass),最后生成的机器码再kick in,JVM再次执行到这个部分的时候,他就会调用相关的JIT的机器码了。当然了,Java是强类型语言,所以很多动态语言的类型check就省去了。&br&&br&如果JVM直接编译字节码到机器码,实际上它就不是JIT,它属于AOT。举个例子,据我所知,ActionScript是AOT编译的,后端貌似是LLVM,虽然它看起来像那种会JIT的“脚本”。&br&&br&最后在提个题外话,JIT vs AOT是个很古老的论战了,到底谁是最好的编译方法?我无能回答。在我看来:JIT是一个充满希望的方向,因为它可以搜集到程序在AOT编译时得不到的runtime数据,在优化时,有更多的上下文可以依靠,理论上应该有更好的优化特性;而AOT则因为在线下,所以本身的编译速度并不关键,所以他也,理论上,可以付诸实施发更为复杂的优化算法。但是,就目前而言,短期内AOT依然是胜利者,我们必须认识到一个问题,即使JIT可以搜集到宝贵的运行时信息,但是程序毕竟在运行,他不可能肆无忌惮的记录下大量的信息和数据,这样JIT本身就会成为程序运行时一个非常昂贵的开销,无论是内存还是CPU时间,再加上优化算法一个个的pass也有开销,所以JIT,虽然处在一个美好的地位,但是他依然很难完全的发挥它的优势。当然了,如果JIT有了更革命的突破,他依然是美好的明天吧!
编译技术大约分为两种,一种AOT,只线下(offline)就将源代码编译成目标机器码,这是普遍用在系统程序语言中;另一种是JIT,只及时的编译,但是大部分的JIT引擎,针对的是将IR(中间代码,如JavaByteCode) 在运行时, 有针对性的翻译成机器码。 对于JIT我们必…
不加限定语就说“Java性能已经达到甚至超过C++”纯属耍流氓 &_& 这种对Java性能的过分自信,作为参与过HotSpot VM和Zing VM的实现的俺来说也无法认同。&br&要是有人跑了benchmark然后说Java的性能比C++好,俺的第一反应也会是:真的么?得看看这benchmark到底测的是什么,有没有错误解读结果。&br&&br&反之亦然。不加限定语就说C++的性能完胜Java同样属于耍流氓,不过俺遇到这种论调通常都不会试图去争辩,因为对方多半不是有趣的目标听众…&br&&br&说到底,C++在比Java更底层的位置上,拥有更灵活的操纵接近底层的资源的能力,所以给充分时间做优化的话,无论如何也能比Java写的程序跑得快。所以一旦讨论向着这种不考虑开发时间的方向发展之后,通常就没啥可讨论的了,C++必胜。&br&&br&有趣的限定语之一就是应用场景。例如说磁盘或网络I/O为主的应用类型,如果用Java实现,并且如果正确使用了Java中此场景下zero-copy的技巧,跟一个同算法用C++实现的版本性能不会有多少差别的。&br&这就是为什么单纯用C++来重写一次Hadoop(而不改进其设计或算法)的话并不会有显著的性能提升——这样的重写并不会成就一个跟原装MapReduce相同水平的系统。&br&&br&有趣的限定语之二是microbenchmark。Benchmark可以用来测许多不同的方面,例如应用的启动速度、顶峰速度等。然而一个使用JIT编译或者自适应动态编译的JVM,其性能必然是慢慢提升的;而一个AOT编译的系统(例如C或C++,或者比较少见的JVM),它在代码执行的层面上一开始就已经在最终状态了,启动时就以接近顶峰速度来运行。在这种前提下用写C++的microbenchmark的方式去测Java的顶峰性能,那就是纯打压Java一侧的分数大杀器。&br&如果要在常见JVM上测Java的顶峰性能,通常需要正确的预热。使用专门用来写microbenchmark的框架,例如&a href=&//link.zhihu.com/?target=http%3A//openjdk.java.net/projects/code-tools/jmh/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&jmh&i class=&icon-external&&&/i&&/a&,可以有效地在进入测分阶段前正确预热。否则的话请选用一个做AOT编译的JVM。&br&&br&题主的原问题之一的:&br&&blockquote&而且教育版的Minecraft为什么要用C++重写呢?&/blockquote&我不知道教育版Minecraft是神马状况,但原版Minecraft可是写得很烂的Java。硬要说的话是Java代码的反面教材(即便它那么流行)。这个就算不用别的语言重写,它的Java版本也早该重写了(1s&br&&br&==============================================&br&&br&放个半相关的传送门吧:&a href=&https://www.zhihu.com/question//answer/& class=&internal&&LLVM相比于JVM,有哪些技术优势? - RednaxelaFX 的回答&/a&&br&&br&像C或者C++,在事先编译(AOT)时可以充分利用closed-world assumption来做优化,而且用户对编译时间的容忍程度通常比较高(特别是对最终的product build的编译时间容忍度更高),所以可以做很多相当耗时的优化,特别是耗时的interprocedural analysis。&br&&br&我所熟悉的JVM中,JIT编译最缺失的优化就是interprocedural analysis。JVM很可能会选择用非常受限的形式的interprocedural analysis来做优化,例如CHA(Class Hierarchy Analisys);又或者是借助大量的方法内联(method inlining)来达到部分interprocedural analysis的效果。&br&即便是上面的传送门举的例子,Zing JVM里基于LLVM写的新JIT编译器,还是只做非常有限的interprocedural analysis的。例如说如果我们可以有whole-program alias analysis的话就无敌了,但是没有…&br&&br&(有些特化的JVM会在AOT编译时做有趣的interprocedural analysis,例如Oracle Labs的Substrate VM。论文之一可参考 &a href=&//link.zhihu.com/?target=http%3A//dl.acm.org/authorize%3FN98614& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Safe and efficient hybrid memory management for Java&i class=&icon-external&&&/i&&/a& )&br&&br&==============================================&br&&br&不过反过来,有些C++程序员觉得新奇(其实C++编译器也已经做了很久或者渐渐开始流行起来)的优化,在高性能JVM上倒是稀松平常的事。&br&&ul&&li&一个是PGO,profile-guided optimization。常见的JVM会不断收集运行中的程序的type profile、branch profile、invocation/loop profile等,并将其应用到JIT优化中。再放个半相关的传送门:&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&JIT编译,动态编译与自适应动态编译 - 编程语言与高级语言虚拟机杂谈(仮) - 知乎专栏&/a&&br&&/li&&li&一个是LTO,link-time optimization。在常见JVM上运行的Java程序,本来就是做lazy/dynamic linking的,而等到JIT编译的时候正好dynamic linking已经做好了,所以可以完全利用上linking后的状态来做优化。这样,跨模块的优化(例如说跨模块的方法内联)就是稀松平常的事。&/li&&ul&&li&看看常见的C++环境中,跨越动态链接库的边界会不会做函数内联?这事情不是完全不能做,但是要做就得把一个优化器带在运行时库里动态去做,对很多C++程序员来说这是不可思议的(再次强调,这不是不能做,只是很多人不习惯这种做法)&/li&&/ul&&li&一个是虚函数内联,inlining of virtual method invocations。很多C++程序员会说C++的虚函数通过多态指针去调用的话无法内联,一说起虚函数调用就想到vtable。这个当然也是误解,其实C++编译器可以实现若干技巧来实现虚函数的内联,并非一定要通过vtable去调用。但在高性能JVM里如果不能高效地内联虚方法的话,性能就彻底完蛋了,所以不得不使用各种技巧来内联。再次放个半相关的传送门:&a href=&https://www.zhihu.com/question//answer/& class=&internal&&HotSpot VM有没有对invokeinterface指令的方法表搜索进行优化? - RednaxelaFX 的回答&/a&&/li&&ul&&li&送上介绍C++编译器通过CHA来做虚函数的去虚化(devirtualization)的论文:&a href=&//link.zhihu.com/?target=http%3A//web.cs.ucla.edu/%7Epalsberg/tba/papers/dean-grove-chambers-ecoop95.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis&i class=&icon-external&&&/i&&/a&, Jeffrey Dean, David Grove, Craig Chambers, ECOOP'95&/li&&/ul&&/ul&&br&对于我们做编译器优化的人来说,Java相比C++最爽(适合优化)的一点就是指针的类型安全:Java里,一个引用(底下由直接指针实现)声明是什么类型的,就可以相信它一定是什么类型的;而在C++的优化编译器里,指针类型通常被认为是不可信的,只有在非常高优化级别用尽一切可压榨的信息来优化时才会相信它。&br&这意味着,在Java里,下面的方法:&br&&div class=&highlight&&&pre&&code class=&language-java&&&span class=&kd&&static&/span& &span class=&kt&&int&/span& &span class=&nf&&foo&/span&&span class=&o&&(&/span&&span class=&kt&&int&/span&&span class=&o&&[]&/span& &span class=&n&&a&/span&&span class=&o&&,&/span& &span class=&kt&&byte&/span&&span class=&o&&[]&/span& &span class=&n&&b&/span&&span class=&o&&)&/span& &span class=&o&&{&/span&
&span class=&c1&&// ...&/span&
&span class=&o&&}&/span&
&/code&&/pre&&/div&可以直接通过类型信息就靠谱地得到a与b不会alias的结论,因为a与b的静态类型不兼容,运行时肯定不会指向同一对象。而相似的C或C++代码:&br&&div class=&highlight&&&pre&&code class=&language-cpp&&&span class=&kt&&int&/span& &span class=&nf&&foo&/span&&span class=&p&&(&/span&&span class=&kt&&int&/span&&span class=&o&&*&/span& &span class=&n&&a&/span&&span class=&p&&,&/span& &span class=&kt&&char&/span&&span class=&o&&*&/span& &span class=&n&&b&/span&&span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&c1&&// ...&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&则不能单纯通过类型信息而得到a与b一定不alias的结论。&br&&br&此外,Java的引用只可能引用对象的固定位置(例如说对象的起始位置),而不像C或C++的指针可以指向到对象的任意位置(例如任意指向到对象的内部)。所以通过一个Java引用去访问不同的offset,也足以确定这两个offset是不会alias的。&br&这就是说,在Java里,下面的方法:&br&&div class=&highlight&&&pre&&code class=&language-java&&&span class=&kd&&static&/span& &span class=&kt&&int&/span& &span class=&nf&&foo&/span&&span class=&o&&(&/span&&span class=&kt&&int&/span&&span class=&o&&[]&/span& &span class=&n&&a&/span&&span class=&o&&,&/span& &span class=&kt&&int&/span&&span class=&o&&[]&/span& &span class=&n&&b&/span&&span class=&o&&)&/span& &span class=&o&&{&/span&
&span class=&n&&a&/span&&span class=&o&&[&/span&&span class=&mi&&0&/span&&span class=&o&&]&/span& &span class=&o&&=&/span& &span class=&n&&b&/span&&span class=&o&&[&/span&&span class=&mi&&1&/span&&span class=&o&&];&/span&
&span class=&c1&&// ...&/span&
&span class=&o&&}&/span&
&/code&&/pre&&/div&虽然a和b的静态类型都是int[],无法通过类型信息来判断a与b不alias,但接下来访问a[0]与b[1]肯定不会alias。&br&而相似的C或C++代码:&br&&div class=&highlight&&&pre&&code class=&language-cpp&&&span class=&kt&&int&/span& &span class=&nf&&foo&/span&&span class=&p&&(&/span&&span class=&kt&&int&/span&&span class=&o&&*&/span& &span class=&n&&a&/span&&span class=&p&&,&/span& &span class=&kt&&int&/span&&span class=&o&&*&/span& &span class=&n&&b&/span&&span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&n&&a&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&n&&b&/span&&span class=&p&&[&/span&&span class=&mi&&1&/span&&span class=&p&&];&/span&
&span class=&c1&&// ...&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&不但a与b是否alias无法确定,a[0]与b[1]是否alias也无法确定。&br&&br&至于alias analysis对优化有多重要,相信同行们会会心一笑。在HotSpot VM的Server Compiler(C2)里,基于type + offset结合memory slicing做的alias analysis还是颇为有效的。&br&&br&==============================================&br&&br&关于GC嗯…放几个传送门:&br&&ul&&li&&a href=&https://www.zhihu.com/question//answer/& class=&internal&&为什么 Python 工程师很少像 Java 工程师那样讨论垃圾回收? - RednaxelaFX 的回答&/a&&br&&/li&&li&&a href=&https://www.zhihu.com/question//answer/& class=&internal&&Go1.6中的gc pause已经完全超越JVM了吗? - RednaxelaFX 的回答&/a&&br&&/li&&li&&a href=&https://www.zhihu.com/question//answer/& class=&internal&&Java 大内存应用(10G 以上)会不会出现严重的停顿? - RednaxelaFX 的回答&/a&&br&&/li&&li&&a href=&https://www.zhihu.com/question//answer/& class=&internal&&Azul Systems 是家什么样的公司? - RednaxelaFX 的回答&/a&&br&&/li&&li&&a href=&https://www.zhihu.com/question//answer/& class=&internal&&C++ 短期内在华尔街的买方和卖方还是唯一选择吗? - RednaxelaFX 的回答&/a&&br&&/li&&/ul&&br&==============================================&br&&br&有些关于Java性能比C++好的几种常见误解点,这里也想稍微讨论一下。&br&&br&0、用Java程序的性能跟GCC / Clang的-O0、-O1来比性能。&br&答:这不是自取其辱么。像HotSpot VM、IBM J9 VM里的JIT编译器,在其顶层编译的时候,默认自带的优化程度至少是跟GCC -O2在同一水平的——或者说那是目标。如果通过抑制对比的对方的优化程度来做比较,那有啥意思了。&br&&br&1、JVM通过JIT编译可以更好的利用CPU的特定指令,比C++事先编译(AOT)的模型好。&br&答:并不是。看情况。有很多情况会影响这种说法在现实中的有效性。&br&&br&其一是某个具体的JIT编译器到底有没有针对某些CPU的新指令做优化。如果没有,那说啥都是白说。而像GCC、LLVM这些主流编译器架构背后都有很多大厂支持,对新指令的跟进是非常快的——至少比HotSpot VM的JIT编译器对x86的新指令的跟进要快和全面。如果本机用的程序自己在本机上-march=native来编译,那便是对自己机器的CPU特性的最好利用。&br&而像Intel的icc所带的库,很多都是对各种不同的Intel CPU事先编译出了不同的版本,一股脑带在发布包里,到程序启动时检测CPU特性来选择对应最匹配的版本的库动态链接上,这样也可以充分利用CPU的特性。&br&&br&总之不要以为用了JIT编译器就比AOT编译器能更充分地使用CPU特性了…这没有必然的因果关系。&br&&br&2、JIT在运行时编译可以更好地利用profile-guided optimization。&br&答:也不一定。&br&看前面一个关于JIT和自适应动态编译的传送门,例如说CLR的JIT编译器就用不上PGO,因为它的编译时机太早了,还没来得及收集profile。&br&而对于AOT编译的模型,也可以通过training run收集profile来做offline PGO,同样可以得到PGO的好处。这种AOT编译利用PGO的模型,跟JIT在运行时收集profile并做PGO的模型相比,最大的好处是AOT编译是offline的,各种传统优化可以做得更彻底;而缺点是如果training program跟实际应用的profile匹配度不高,或者实际应用在运行时行为有phase shift,那这种offline的做法就无法很好的应对了。不过说真的,能高效应对phase shift的JIT系统也不多…&br&&br&==============================================&br&&br&最后纯娱乐一下,放个截图:&br&&figure&&img src=&https://pic3.zhimg.com/55bcfd32b8b5f7e8384b6_b.png& data-rawwidth=&934& data-rawheight=&1204& class=&origin_image zh-lightbox-thumb& width=&934& data-original=&https://pic3.zhimg.com/55bcfd32b8b5f7e8384b6_r.png&&&/figure&这是leetcode上的297。截图是我用C写的解的用时状况。&br&我自己是做JVM的JIT编译器的,我都无法理解为啥这题会有那么多Java submission的时间那么短。感觉肯定是哪里出错了(不是开玩笑。&br&&br&要是有机会的话得问问leetcode的人看他们到底是怎么跑Java的…&br&看评论区说不同语言的测试用例好像是不一样的。原来有这种事?——在leetcode做Java时间统计的 &a data-hash=&8912dafb406e4e1bcd3d72efe026869e& href=&//www.zhihu.com/people/8912dafb406e4e1bcd3d72efe026869e& class=&member_mention& data-hovercard=&p$b$8912dafb406e4e1bcd3d72efe026869e&&@Deep Reader&/a&大大的回答说所有语言的测试用例都是一样的,但是Java的时间统计剪掉了一些前后的开销。
不加限定语就说“Java性能已经达到甚至超过C++”纯属耍流氓 &_& 这种对Java性能的过分自信,作为参与过HotSpot VM和Zing VM的实现的俺来说也无法认同。 要是有人跑了benchmark然后说Java的性能比C++好,俺的第一反应也会是:真的么?得看看这benchmark到底…
&figure&&img data-rawwidth=&490& data-rawheight=&213& src=&https://pic2.zhimg.com/3c91d8bd7d6d452afab89_b.jpg& class=&origin_image zh-lightbox-thumb& width=&490& data-original=&https://pic2.zhimg.com/3c91d8bd7d6d452afab89_r.jpg&&&/figure&先上一张老生常谈的图吧,说起这个问题需要长篇大论解释CPU和GPU本身区别或者GPU浮点为什么比CPU高?&br&那么,先抛一个简单明了的答案:CPU和GPU本身设计方式和运算目的不同导致了这种差距,那么我来细说一下。&br&&br&CPU和GPU设计上大概有什么不同:&br&&br&1:CPU中大部分(大概70%)晶体管用来构建Cache还有一部分控制单元,负责逻辑算数的部分并不多;而GPU整个就是一个庞大的计算阵列(包括alu和shader填充),我们知道GPU大致分为3d setup和流计算两个部分,而GPGPU就是用流计算来做大量密集型运算,比如linpack这种求解大规模稠密线性方程组。GPU中负责逻辑算数的部分要远远大于CPU因此在逻辑运算上当然就比CPU强太多&br&&br&2:GPU对Cache的依赖比CPU小,因为GPU用的是高速度总线;其次GPU的数据具有高度对齐性以及不符合局部化假设、比CPU更深的pipeline执行还有一点就是很少把数据写回。&br&
但是CPU不同,它非常需要Cache,有无Cache的CPU差距可以是极大的。其实Cache是人类如今对于硅工艺的一种“妥协”——我们总是希望拥有一个存储器它的CPU比肩或者接近于CPU同时又可以在容量上做大。但目前硅工艺限制了这个“天马行空”的幻想,因此,人类不得已做出了Cache这个片上存储器,它的速度的确是最快的,位于存储器体系结构的最高层,但它也是容量最小的。它可以扩大,但是进步很小,至于原因其中大概是2点:1:Cache是构建于CPU内部,需要考虑面积;2:需要权衡利弊,比如l1不能无限做大是因为本身致力于为CPU提供一个快速的数据递交,而l1如果做大那么命中时间增加以及延迟开销的影响来说这就是非常大的弊端了。&br&&br&
为什么CPU需求Cache?上面说的已经透露了一些,CPU需要处理不同类型的数据更是需要存储器的配合来执行load/store指令,所以,我们通过在CPU内部构建一个Cache作为片上存储器配合DRAM、ROM整个存储器体系结构为配合CPU处理load/store指令;还有一点是CPU的总线速度非常落后。&br&&br&3:还有一点就是核心的不同。CPU的核心内部因为有大量Cache所以一个逻辑核心普遍是比GPU中的Stream Processors大的,GPU中的SP就是简单的核心但是CPU不同,在core的设计上CPU是比GPU复杂的多。&br&&br&CPU和GPU计算目的的不同:&br&&br&1:如上就可以看出来。CPU本身设计初衷适合串行,而GPU则是适合大规模并行。CPU所作的工作是极度复杂的,处理的指令之间有复杂的逻辑关系,比如Dependence还有branch Instruction等等,这些都是GPU做不来的。&br&&br&2:GPU需要做的工作在复杂度上远不如CPU,GPU需要处理的数据之间没有任何的Dependence,所以它们可以并行执行,比如Vertex和Pixel两种数据处理都运行独立数据产生独立结果因此可以达到高度并行。换句话来说,GPU因为设计问题天生适合大规模SIMT/SIMD运算方式。它就是一个针对向量计算进行高度并行并且以数据流作为处理单元的处理机这样在对数据流的处理上可以获得很高的效率。&br&&br&&br&如上是大致说出了GPU比CPU在alu计算上的关键所在,那么我前面说过了,GPU主要是两部分:一部分是3d setup;一部分是负责密集型流计算的。后者是属于可编程的,那么GPGPU正是利用OpenCL、CUDA这些专用非图形接口API让流计算的部分来解决非图形问题,比如流体模拟、爆炸等等这些适合大规模密集型运算的工作。&br&&br&&br&如上,在GPU通用计算上GPU比CPU强的原因无外乎就是:因为根本目的的不同产生了不同设计因而导致各自计算方向不同所以产生了这样的差距。&br&&br&&br&ps:唔~
手机码字倒是码了一个小时。。。手也累了,就大概写那么多了,真要说起来这个问题还可以写一长篇大论的,只是我太懒了~
而且现在,也有点饿了●﹏●
先上一张老生常谈的图吧,说起这个问题需要长篇大论解释CPU和GPU本身区别或者GPU浮点为什么比CPU高? 那么,先抛一个简单明了的答案:CPU和GPU本身设计方式和运算目的不同导致了这种差距,那么我来细说一下。 CPU和GPU设计上大概有什么不同: 1:CPU中大部…
&p&其实没有什么神秘的,核心的思想和专利都来自全美达 &a href=&//link.zhihu.com/?target=http%3A//en.wikipedia.org/wiki/Transmeta& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Transmeta&i class=&icon-external&&&/i&&/a& (&a href=&//link.zhihu.com/?target=http%3A//www.cnet.com/news/transmeta-licenses-low-power-tech-to-nvidia/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Transmeta licenses low-power tech to Nvidia&i class=&icon-external&&&/i&&/a&),是这一家伟大公司的宝贵遗产。详细的介绍可以参见此篇 Paper:&a href=&//link.zhihu.com/?target=http%3A//courses.cs.washington.edu/courses/cse548/08wi/papers/vm2.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&washington.edu 的页面&i class=&icon-external&&&/i&&/a&。&/p&&p&Denver 的主要改进(这儿只提公开的资料:&a href=&//link.zhihu.com/?target=http%3A//www.hotchips.org/wp-content/uploads/hc_archives/hc26/HC26-11-day1-epub/HC26.11-2-Mobile-Processors-epub/HC26.11.234-Denver-Darrell.Boggs-NVIDIA-rev4.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&hotchips.org 的页面&i class=&icon-external&&&/i&&/a&) 包括:1)巨大的 L1C Cache,2)更宽的架构(7发射),3)引入 HW Decoder。&/p&&p&说句题外话,全美达之所以失败,是因为他太超前了,而绝不是因为其技术上有任何问题,VLIW+DCO 比起 OoO 并没有任何劣势。&/p&&p&-----------------------------------&br& 更新&/p&&p&有人问既然 VLIW 的安腾和全美达都失败了,那为什么还要再次挑战这个看似毫无优势的设计方向呢?我的看法如下:&/p&&ol&&li&相较于 OoO,VLIW 的硬件更为简单,更多的面积可以用来设计更宽的架构和更大的缓存,或者干脆为 SoC 中的 GPU (对 NVIDIA 来说尤为重要)以及 Accelerator 换取更大的空间。&/li&&li&相较于 OoO,VLIW 在 Perf/Watt 上更有优势。(见表4:&a href=&//link.zhihu.com/?target=http%3A//www.lanl.gov/radiant/pubs/sss/sc2002-sss.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&lanl.gov/radiant/pubs/s&/span&&span class=&invisible&&ss/sc2002-sss.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&)&/li&&/ol&&p&换句话说, Denver 的架构几乎就是为了移动设备而生的。&/p&
其实没有什么神秘的,核心的思想和专利都来自全美达
(),是这一家伟大公司的宝贵遗产。详细的介绍可以参见此篇 Paper:。Denver 的主要改进(这儿只提公开的资料:
&ul&&li&前几天IBM这个新闻一出来大家都很感兴趣,可是似乎不少人对这个领域并不太了解,好多回答和评论并没有说在点子上。&br&&/li&&li&答主目前在一个主要研究Analog
mixed-signal IC的group,今年年初老板说他开始对neural
network的方向感兴趣,让新进来的同学调研学习这方面最新的研究成果。我当时觉得很奇怪,neural
network、deep
learning不是CS那边很火的一个方向么,硬件实现相关的话不也应该是做DSP、multi-core等的偏数字的group来研究么。于是好奇的我边听同学的调研报告,一边找了一些相关的资料来了解了一下。&br&&/li&&li&所以这份回答类似读书笔记+类综诉+八卦,分享一下目前了解到的大概,感兴趣想更深入了解的知友可以参考所附链接的各种reference。如有不对的地方请大家指正。&br&&/li&&/ul&&br&&p&&b&一、与传统计算机的区别&/b&&/p&&blockquote&&p&1946年美籍匈牙利科学家冯·诺依曼提出存储程序原理,把程序本身当作数据来对待。此后的半个多世纪以来,计算机的发展取得了巨大的进步,但“冯·诺依曼架构”中信息存储器和处理器的设计一直沿用至今,&b&连接存储器和处理器的信息传递通道仍然通过总线来实现&/b&。随着&b&处理的数据量海量地增长,总线有限的数据传输速率被称为“冯·诺依曼瓶颈”&/b&——尤其是移动互联网、社交网络、物联网、云计算、高通量测序等的兴起,使得‘冯·诺依曼瓶颈’日益突出,而计算机的自我纠错能力缺失的局限性也已成为发展障碍。&/p&&p&结构上的缺陷也导致功能上的局限。例如,从效率上看,计算机运算的&b&功耗较高&/b&——尽管人脑处理的信息量不比计算机少,但显然而功耗低得多。为此,学习更多层的神经网络,让计算机能够更好地模拟人脑功能,成为上世纪后期以来研究的热点。&/p&&p&在这些研究中,核心的研究是“冯·诺依曼架构”与“人脑架构”的本质结构区别——与计算机相比,人脑的信息存储和处理,通过突触这一基本单元来实现,因而没有明显的界限。正是人脑中的千万亿个突触的可塑性——各种因素和各种条件经过一定的时间作用后引起的神经变化(可变性、可修饰性等),使得人脑的记忆和学习功能得以实现。&/p&&ul&&li&&b&大脑有而计算机没有的三个特性&/b&:&b&低功耗&/b&(人脑的能耗仅约20瓦,而目前用来尝试模拟人脑的超级计算机需要消耗数兆瓦的能量);&b&容错性&/b&(坏掉一个晶体管就能毁掉一块微处理器,但是大脑的神经元每时每刻都在死亡);&b&还有不需为其编制程序&/b&(大脑在与外界互动的同时也会进行学习和改变,而不是遵循预设算法的固定路径和分支运行。)&br&&/li&&/ul&&/blockquote&&p&这段描述可以说是“电”脑的最终理想了吧。&/p&&p&注:最早的电脑也是模拟电路实现的,之后发展成现在的只有0、1的数字CPU。&/p&&blockquote&&p&今天的计算机用的都是所谓的冯诺依曼结构,在一个中央处理器和记忆芯片之间以线性计算序列来回传输数据。这种方式在处理数字和执行精确撰写的程序时非常好用,但在处理图片或声音并理解它们的意义时效果不佳。&/p&&p&有件事很说明问题:2012年,谷歌展示了它的人工智能软件在未被告知猫是什么东西的情况下,可以学会识别视频中的猫,而&b&完成这个任务用到了&/b&&b&1.6&/b&&b&万台处理器&/b&。&/p&&p&要继续改善这类处理器的性能,生产商得在其中配备更多更快的晶体管、硅存储缓存和数据通路,但所有这些组件产生的热量限制了芯片的运作速度,尤其在电力有限的移动设备中。这可能会阻碍人们开发出有效处理图片、声音和其他感官信息的设备,以及将其应用于面部识别、机器人,或者交通设备航运等任务中。&/p&&ul&&li&神经形态芯片尝试在硅片中模仿人脑以&b&大规模的平行方式处理信息&/b&:几十亿神经元和千万亿个突触对视觉和声音刺激物这类感官输入做出反应。&/li&&/ul&作为对图像、声音等内容的反应,这些神经元也会改变它们相互间连接的方式,我们把这个过程叫做学习。神经形态芯片纳入了受人脑启发的“神经网路”模式,因此能做同样的事。&br&&p&人工智能的顶尖思想家杰夫·霍金斯(Jeff
Hawkins)说,在传统处理器上用专门的软件尝试模拟人脑(谷歌在猫实验中所做的),以此作为不断提升的智能基础,这太过低效了。&/p&&p&霍金斯创造了掌上电脑(Palm
Pilot),后来又联合创办了Numenta公司,后者制造从人脑中获得启发的软件。&b&“你不可能只在软件中建造它,”他说到人工智能,“你必须在硅片中建造它。”&/b&&/p&&/blockquote&&p&现有的计算机计算,程序的执行是一行一行执行的,而神经网络计算机则有所不同。&/p&&blockquote&現行的人工智能程式,基本上都是將大大小小的各種知識寫成一句一句的陳述句,再灌進系統之中。當輸入問題進去智能程式時,它就會搜尋本身的資料庫,再選擇出最佳或最近解。2011年時,IBM 有名的 Watson 智能電腦,便是使用這樣的技術,在美國的電視益智節目中打敗的人類的最強衛冕者。&br&(神经网络计算机)以这种&b&异步信号发送&/b&(因没有能使其同步的中央时钟而得名)处理数据的速度比同步信号发送更快,以为&b&没有时间浪费在等待时钟发出信号上&/b&。异步信号发送&b&消耗的能量也更少&/b&,这样便满足了迈耶博士理想的计算机的第一个特点。如果有一个处理器坏了,&b&系统会从另一路线绕过它&/b&,这样便满足了迈耶博士理想的计算机的第二个特点。正是由于为异步信号发送编程并不容易,所以大多数计算机工程师都无视于此。然而其作为一种模仿大脑的方式堪称完美。&/blockquote&&p&&figure&&img src=&https://pic2.zhimg.com/24a45ee560e6f699361d_b.jpg& data-rawwidth=&749& data-rawheight=&423& class=&origin_image zh-lightbox-thumb& width=&749& data-original=&https://pic2.zhimg.com/24a45ee560e6f699361d_r.jpg&&&/figure&功耗方面:&/p&&blockquote&&p&硬件方面,近年来主要是通过对大型神经网络进行仿真,如
Google 的深度学习系统Google
Brain,微软的Adam等。但是这些网络需要大量传统计算机的集群。比方说 Google Brain
就采用了 &b&1000 台各带 16 核处理器的计算机&/b&,&b&这种架构尽管展现出了相当的能力,但是能耗依然巨大&/b&。而
IBM 则是在芯片上的模仿。4096
个内核,100 万个“神经元”、2.56 亿个“突触”集成在直径只有几厘米的方寸(是 2011 年原型大小的 1/16)之间,而且&b&能耗只有不到 70 毫瓦&/b&。&/p&&p&IBM 研究小组曾经利用做过 DARPA 的NeoVision2 Tower数据集做过演示。它能够实时识别出用 30 帧每秒的正常速度拍摄自斯坦福大学胡佛塔的十字路口视频中的人、自行车、公交车、卡车等,准确率达到了
80%。&b&相比之下,一台笔记本编程完成同样的任务用时要慢
100 倍,能耗却是
IBM 芯片的 1
万倍。&/b&&/p&&/blockquote&&figure&&img src=&https://pic4.zhimg.com/efca8200feded4f4777df7_b.jpg& data-rawwidth=&1203& data-rawheight=&676& class=&origin_image zh-lightbox-thumb& width=&1203& data-original=&https://pic4.zhimg.com/efca8200feded4f4777df7_r.jpg&&&/figure&&p&Ref: A
million spiking-neuron integrated circuit with a scalable communication network
and interface. Paul A.
Merolla et al. Science 345,
668 (2014); DOI: 10.1126/science.1254642&/p&&p&因为需要拥有极多数据的Database
来做training以及需要极强大的计算能力来做prediction,现有的一些Deep learning如Andrew Ng的Google Brain、Apple的Siri等都需要连接网络到云端的服务器。&/p&&br&&p&&b&二、争议:&/b&&/p&&blockquote&雖然深度學習已經被應用到尖端科學研究及日常生活當中,而 Google 已經實際搭載在核心的搜尋功能之中。但其他知名的人工智能實驗室,對於深度學習技術的反應並不一致。例如艾倫人工智慧中心的執行長 Oren Etzioni,就沒有考慮將深度學習納入當前開發中的人工智慧系統中。該機構目前的研究是以小學程度的科學知識為目標,希望能開發出光是看學校的教科書,就能夠輕鬆應付各類考試的智能程式。Oren Etzioni 以飛機為例,他表示,&b&最成功的飛機設計都不是來自於模仿鳥的結構,所以腦神經的類比並無法保證人工智能的實現,因此他們暫不考慮借用深度學習技術來開發這個系統。&/b&&br&&p&但是从短期来看,情况也许并没有那么乐观。&/p&&p&首先&b&芯片的编程仍然是个大问题&/b&。芯片的编程要考虑选择哪一个神经元来连接,以及神经元之间相互影响的程度。比方说,为了识别上述视频中的汽车,编程人员首先要对芯片的仿真版进行必要的设置,然后再传给实际的芯片。这种芯片需要颠覆以往传统的编程思想,尽管
IBM 去年已经发布了一套工具,但是目前编程仍非常困难,IBM
团队正在编制令该过程简单一点的开发库。(当然,如果我们回顾过去编程语言从汇编一路走来的历史,这一点也许不会成为问题。)&/p&&p&其次,在部分专业人士看来,这种芯片的&b&能力仍有待证实&/b&。&/p&&p&再者,真正的认知计算应该能从经验中学习,寻找关联,提出假设,记忆,并基于结果学习,&b&而&/b&&b&IBM &/b&&b&的演示里所有学习(training)都是在线下的冯诺依曼计算机上进行的&/b&。不过目前大多数的机器学习都是离线进行的,因为学习经常需要对算法进行调整,而
IBM 的硬件并不具备调整的灵活性,不擅长做这件事情。&/p&&/blockquote&&br&&p&&b&三、人造神经元工作原理及电路实现&/b&&/p&&p&&a href=&//link.zhihu.com/?target=http%3A//zh.wikipedia.org/zh-cn/%25E4%25BA%25BA%25E5%25B7%25A5%25E7%25A5%259E%25E7%25BB%258F%25E7%25BD%%25BB%259C& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&人工神经网络&i class=&icon-external&&&/i&&/a&&/p&&blockquote&人工神经网络(artificial neural network,缩写ANN),简称神经网络(neural network,缩写NN),是一种模仿生物神经网络的结构和功能的数学模型或计算模型。&br&神经网络是一种运算模型,由大量的节点(或称“神经元”,或“单元”)和之间相互联接构成。每个节点代表一种特定的输出函数,称为激励函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重(weight),这相当于人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。&/blockquote&&figure&&img src=&https://pic3.zhimg.com/e4cbd98e2c31de110f3fda_b.jpg& data-rawwidth=&721& data-rawheight=&506& class=&origin_image zh-lightbox-thumb& width=&721& data-original=&https://pic3.zhimg.com/e4cbd98e2c31de110f3fda_r.jpg&&&/figure&Ref:Wikipedia: &a href=&//link.zhihu.com/?target=http%3A//zh.wikipedia.org/zh-cn/%25E4%25BA%25BA%25E5%25B7%25A5%25E7%25A5%259E%25E7%25BB%258F%25E7%25BD%%25BB%259C& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&人工神经网络&i class=&icon-external&&&/i&&/a&&br&&b&电路原理&/b&&blockquote&神经递质的分泌反过来又是对动作电位刺激的反应。然而神经元在接收到这些神经递质信号中的一个后便不会再继续发出动作电位。当然,它们会逐渐累加至一个极限值。在神经元接受了一定数量的信号并超过极限值后----从根本上讲是一个模拟进程----然后它们会发出一个动作电位,并自行重置。Spikey的人造神经元也是这么做的,当它们每次受到激发时都会在电容中累积电荷,直至达到限值,电容再进行放电。&/blockquote&&p&具体电路结构和分析之后有机会的话再更新。&/p&&p&现阶段硬件的实现方式有数电(IBM、Qualcomm)、模电、数模混合(学界)、GPUs等等,还有各种不是基于硅半导体制程制作的神经元等的device方面的研究。&/p&&br&&p&&b&四、历史&/b&&/p&&p&&a href=&//link.zhihu.com/?target=http%3A//en.wikipedia.org/wiki/Neuromorphic_engineering& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Neuromorphic engineering&i class=&icon-external&&&/i&&/a&由老祖宗Carver
Mead提出&/p&&blockquote&卡福·米德是加州理工学院的一名工程师,被公认为神经形态计算机之父(当然还发明了“神经形态学”这个词)&br&&p&神经形态芯片的创意可以追溯到几十年前。加州理工大学的退休教授、集成电路设计的传奇人物卡弗·米德(Carver
Mead)在1990年发表的一篇论文中首次提出了这个名称。&/p&&p&这篇论文介绍了模拟芯片如何能够模仿脑部神经元和突触的电活动。所谓模拟芯片,其输出是变化的,就像真实世界中发生的现象,这和数字芯片二进制、非开即关的性质不同。&/p&&/blockquote&&ul&&li&Carver Mead是&b&超大规模集成电路(VLSI)之父&/b&、&b&定义了摩尔定律&/b&。&br&&/li&&/ul&&p&关于这个领域的著作 C. Mead, &b&Analog VLSI and Neural Systems&/b&.Boston, MA, USA: Addison-Wesley, 1989.&a href=&//link.zhihu.com/?target=http%3A//www.amazon.com/Analog-VLSI-Neural-Systems-Carver/dp/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Analog VLSI and Neural Systems: Carver Mead: 2: Amazon.com: Books&i class=&icon-external&&&/i&&/a&&/p&&p&&a href=&//link.zhihu.com/?target=http%3A//en.wikipedia.org/wiki/Carver_Mead& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Carver Mead&i class=&icon-external&&&/i&&/a&&a href=&//link.zhihu.com/?target=http%3A//www.cns.caltech.edu/people/faculty/mead.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CNS :: Carver Mead&i class=&icon-external&&&/i&&/a&
中文介绍&a href=&//link.zhihu.com/?target=http%3A//www.techcn.com.cn/index.php%3Fdoc-view-134697.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&卡弗?米德-半导体人物&i class=&icon-external&&&/i&&/a&&/p&&p&California Institute of Technology的Computation & Neural Systems group &a href=&//link.zhihu.com/?target=http%3A//www.cns.caltech.edu/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Computation & Neural Systems :: CALTECH&i class=&icon-external&&&/i&&/a&&/p&&ul&&li&此外&b&Jeff
Hawkins在TED&/b&&b&的演讲&/b&也值得一看&br&&/li&&/ul&&p&&a href=&//link.zhihu.com/?target=http%3A//www.ted.com/talks/jeff_hawkins_on_how_brain_science_will_change_computing%3Flanguage%3Den& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Jeff Hawkins: How brain science will change computing&i class=&icon-external&&&/i&&/a&&/p&&a class=&video-box& href=&//link.zhihu.com/?target=http%3A//www.tudou.com/programs/view/tq07cQoYxB4/& target=&_blank& data-video-id=&& data-video-playable=&& data-name=&TED演讲:Jeff Hawkins.大脑研究将改变计算机科学【高清中文字幕】& data-poster=&http://g3.tdimg.com/7f00e7fe5c8b3daaae237b/p_2.jpg& data-lens-id=&&&
&img class=&thumbnail& src=&http://g3.tdimg.com/7f00e7fe5c8b3daaae237b/p_2.jpg&&&span class=&content&&
&span class=&title&&TED演讲:Jeff Hawkins.大脑研究将改变计算机科学【高清中文字幕】&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&http://www.tudou.com/programs/view/tq07cQoYxB4/&/span&
&/a&&p&摘其中有意思的一段:&/p&&blockquote&后来这(大脑研究)成为我毕生的工作,我觉得我可以有所贡献,我尝试离开计算机行业而专注大脑研究。首先我去了MIT的人工智能研究院,我想,我也想设计和制作聪明的机器,但我的想法是先研究大脑怎么运作。而他们说,呃,你不需要这样做,我们只需要计算机编程。而我说,不,你应该先研究大脑。他们说,呃,你错了。而我说,不,你们错了。最后我没被录取。但我真的有点失望,那时候年轻,但我再尝试。几年后再加州的Berkley,这次我尝试去学习生物方面的研究。我开始攻读生物物理博士课程。我在学习大脑了,而我想学理论。而他们说,不,你不可以学大脑的理论,这是不可以的,你不会拿到研究经费,而作为研究生,没有经费是不可以的。我的天。&br&&/blockquote&&p&八卦:老师说neural
network这个方向每20年火一次,之前有很长一段时间的沉寂期,甚至因为理论的不完善一度被认为是江湖术士的小把戏,申请研究经费都需要改课题名称才能成功。(这段为小弟的道听途说,请大家看过就忘。后来看相关的资料发现,这段历史可能与2006年Geoffrey E. Hinton提出深度学习的概念这一革命性工作改变了之前的状况有关。)&/p&&br&&p&&b&五、针对IBM这次的工作:&/b&&/p&&p&关于 &a href=&//link.zhihu.com/?target=http%3A//en.wikipedia.org/wiki/SyNAPSE& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&SyNAPSE&i class=&icon-external&&&/i&&/a&&/p&&p&美国国防部先进研究项目局的研究项目,由两个大的group组成:IBM team和HRL Team。&/p&&p&Synapse在英文中是突触的意思,而SyNAPSE是Systems of Neuromorphic Adaptive Plastic Scalable
Electronics的简称。&/p&&p&&a href=&//link.zhihu.com/?target=http%3A//www.research.ibm.com/cognitive-computing/neurosynaptic-chips.shtml%23fbid%3Dnsbi9SLS2m_& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Cognitive computing: Neurosynaptic chips&i class=&icon-external&&&/i&&/a&&/p&&p&&a href=&//link.zhihu.com/?target=http%3A//venturebeat.com//ibm-cognitive-computing-chips/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&IBM produces first working chips modeled on the human brain&i class=&icon-external&&&/i&&/a&&/p&&blockquote&另一个SyNAPSE项目是由IBM阿尔马登实验室(位于圣何塞)的达尔门德拉·穆德哈负责。与四所美国大学(哥伦比亚大学,康奈尔大学,加州大学默塞德分校以及威斯康辛-麦迪逊大学)合作,穆德哈博士及其团队制造了一台神经形态学计算机的原型机,拥有256个“积分触发式”神经元,之所以这么叫是因为这些神经元将自己的输入累加(即积分)直至达到阈值,然后发出一个信号后再自行重置。它们在这一点上与Spikey中的神经元类似,但是电子方面的细节却有所不同,因为它们是由一个数字储存器而非许多电容来记录输入信号的。&/blockquote&&figure&&img src=&https://pic4.zhimg.com/f4b8c6bf034d6b9f840663_b.jpg& data-rawwidth=&1223& data-rawheight=&778& class=&origin_image zh-lightbox-thumb& width=&1223& data-original=&https://pic4.zhimg.com/f4b8c6bf034d6b9f840663_r.jpg&&&/figure&&p&Ref: A
million spiking-neuron integrated circuit with a scalable communication network
and interface. Paul A. Merolla et al. Science 345, 668 (2014); DOI:
10.1126/science.1254642&/p&&p&IBM 的网站上有一篇很好的报道供参考&a href=&//link.zhihu.com/?target=http%3A//www.research.ibm.com/cognitive-computing/neurosynaptic-chips.shtml%23fbid%3Dnsbi9SLS2m_& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Cognitive computing: Neurosynaptic chips&i class=&icon-external&&&/i&&/a&&/p&&p&中文的话36kr的这篇报道写得非常好 &a href=&//link.zhihu.com/?target=http%3A//www.36kr.com/p/214445.htm& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&36kr.com/p/214445.htm&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&br&&b&六、Reference&/b&&br&&p&以上引用部分的reference以及推荐几篇看到的很有价值的&b&干货资料&/b&:&/p&&ol&&li&The Economist有一篇长文非常详细 &a href=&//link.zhihu.com/?target=http%3A//www.economist.com/news/science-and-technology/-computers-will-help-people-understand-brains-better-and-understanding-brains& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Neuromorphic computing: The machine of a new soul&i class=&icon-external&&&/i&&/a&&br&&/li&&li&(译言的翻译版 译者:&a href=&//link.zhihu.com/?target=http%3A//user.yeeyan.org/u/418428& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&& gg1122&i class=&icon-external&&&/i&&/a&&a href=&//link.zhihu.com/?target=http%3A//article.yeeyan.org/view/039& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&译言网 | 计算机脱胎换骨&i class=&icon-external&&&/i&&/a&)&br&&/li&&li&生命科学研究快报 作者:于建荣 江洪波 &a href=&//link.zhihu.com/?target=http%3A//www.bio360.net/news/show/10019.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&神经形态芯片:仿生学的驱动力 --神经--新闻 --生物360 --中文生命科学界资讯站&i class=&icon-external&&&/i&&/a&&br&&/li&&li&36Kr 作者: boxi
&a href=&//link.zhihu.com/?target=http%3A//www.36kr.com/p/214445.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TrueNorth:IBM的百万神经元类人脑芯片&i class=&icon-external&&&/i&&/a&&br&&/li&&li&搜狐IT
&a href=&//link.zhihu.com/?target=http%3A//it.sohu.com/8983749.shtml& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&“人脑”芯片离我们有多远?&i class=&icon-external&&&/i&&/a&&br&&/li&&li&Nature &a href=&//link.zhihu.com/?target=http%3A//www.nature.com/news/computer-science-the-learning-machines-1.14481%23auth-1& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Nicola Jones&i class=&icon-external&&&/i&&/a&&a href=&//link.zhihu.com/?target=http%3A//www.nature.com/news/computer-science-the-learning-machines-1.& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Computer science: The learning machines : Nature News & Comment&i class=&icon-external&&&/i&&/a&&br&&/li&&li&(译文 曾郁蓁
&a href=&//link.zhihu.com/?target=http%3A//pansci.tw/archives/56816& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&深度學習──人工智能的現在與未來&i class=&icon-external&&&/i&&/a&)&br&&/li&&li&國立臺灣大學科學教育發展中心 特約寫手方程毅 &a href=&//link.zhihu.com/?target=http%3A//case.ntu.edu.tw/blog/%3Fp%3D18049& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【神經科學】漫談神經形態工程學&i class=&icon-external&&&/i&&/a&&br&&/li&&li&神经网络和人工脑&a href=&//link.zhihu.com/?target=http%3A//www.braincampaign.org/Common/Docs/Files/2766/chchap16.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&braincampaign.org/Commo&/span&&span class=&invisible&&n/Docs/Files/2766/chchap16.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&/li&&li&MITTechReview 罗伯特·霍夫(Robert D. Hof) &a href=&//link.zhihu.com/?target=http%3A//www.techreviewchina.com/home/article/detail/id/536.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&2014年全球十大突破技术:高通的神经形态芯片&i class=&icon-external&&&/i&&/a&&/li&&/ol&&p&&b&学术论文&/b&:14年的两篇&b&IEEE Press&/b&很好&/p&&p&[1]B. V. Benjamin, P. Gao, E. McQuinn, S. Choudhary, A. Chandrasekaran, J.-M. Bussat, R. Alvarez-Icaza, J. Arthur, P. Merolla, and K. Boahen, “Neurogrid: A mixed-analog-digital multichip system for large-scale neural simulations,” Proceedings of the IEEE, vol. 102 no. 5, pp. 699–716, May 2014.&/p&&p&[2]Furber, S.B.; Galluppi, F.; Temple, S.; Plana,
L.A The SpiNNaker Project.IEEE Proceedings, Vol:102, Iss:5 pp 652-665, May
2014. ISSN
&a href=&//link.zhihu.com/?target=http%3A//ieeexplore.ieee.org/xpl/articleDetails.jsp%3Farnumber%3D6750072& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&IEEE Xplore Abstract&i class=&icon-external&&&/i&&/a&&/p&&p&[3]以及IBM这次发表在Sceince上的这篇 Paul A. Merolla et al. A million spiking-neuron integrated circuit
with a scalable communication network and interface. Science 345, 668 (2014); DOI: 10.1126/science.1254642&a href=&//link.zhihu.com/?target=http%3A//www.sciencemag.org/content/345/.full& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Science Magazine: Sign In&i class=&icon-external&&&/i&&/a&&/p&&p&[4]S Menon, S Fok, A Neckar, O Khatib, and K Boahen, Controlling Articulated Robots in Task-Space with Spiking Silicon Neurons, IEEE International Conference on Biomedical Robotics and Biomechatronics (BioRob), IEEE Press, pp nn-mm, 2014.&/p&&p&&a href=&//link.zhihu.com/?target=http%3A//web.stanford.edu/group/brainsinsilicon/documents/Menon-BioRob.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&web.stanford.edu/group/&/span&&span class=&invisible&&brainsinsilicon/documents/Menon-BioRob.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&[5] Challenges for Brain Emulation: Why is Building
a Brain so Difficult?&/p&&p&&a href=&//link.zhihu.com/?target=http%3A//synapticlink.org/Brain%2520Emulation%2520Challenges.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&synapticlink.org/Brain%&/span&&span class=&invisible&&20Emulation%20Challenges.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&br&&p&&b&七、现有的部分业界学界神经形态芯片相关工作的介绍:&/b&&/p&&p&&b&产业界:&/b&&/p&&ul&&li&&b&IBM&/b&&br&&/li&&/ul&&figure&&img src=&https://pic1.zhimg.com/6bfa5a8b9c_b.jpg& data-rawwidth=&981& data-rawheight=&443& class=&origin_image zh-lightbox-thumb& width=&981& data-original=&https://pic1.zhimg.com/6bfa5a8b9c_r.jpg&&&/figure&&ul&&li&&b&高通 Zeroth&/b&&br&&/li&&/ul&&a href=&//link.zhihu.com/?target=https%3A//www.qualcomm.com/news/onq//introducing-qualcomm-zeroth-processors-brain-inspired-computing& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Introducing Qualcomm Zeroth Processors: Brain-Inspired Computing&i class=&icon-external&&&/i&&/a&&br&新闻介绍&a href=&//link.zhihu.com/?target=http%3A//www.technologyreview.com/featuredstory/526506/neuromorphic-chips/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Qualcomm’s Neuromorphic Chips Could Make Robots and Phones More Astute About the World&i class=&icon-external&&&/i&&/a&&br&中文&a href=&//link.zhihu.com/?target=http%3A//www.techreviewchina.com/home/article/detail/id/536.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&2014年全球十大突破技术:高通的神经形态芯片&i class=&icon-external&&&/i&&/a& (推荐)&figure&&img src=&https://pic2.zhimg.com/de0afe9aa99d78de66938d_b.jpg& data-rawwidth=&718& data-rawheight=&359& class=&origin_image zh-lightbox-thumb& width=&718& data-original=&https://pic2.zhimg.com/de0afe9aa99d78de66938d_r.jpg&&&/figure&&ul&&li&&b&Intel&/b&&br&&/li&&/ul&&blockquote&上个月(2012),英特尔宣布启动了一项模拟人类大脑活动的技术研究工作。现在,该公司的工程师在预印本网站上递交了一篇论文,透露了神经形态芯片设计,模拟大脑神经元行为。他们的设计基于两项技术:横向自旋阀(lateral
spin valves)和忆阻器。横向自旋阀是一种金属线连接的小型磁铁,能根据通过的电子自旋方向开关。忆阻器则是有记忆功能的非线性电阻器。英特尔工程师设计的芯片架构工作方式类似神经元,能复制出大脑处理能力。横向自旋阀工作的终端电压在毫伏内,远低于传统芯片,因此消耗的电力要少得多。&/blockquote&&p&&a href=&//link.zhihu.com/?target=http%3A//www.technologyreview.com/view/428235/intel-reveals-neuromorphic-chip-design/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Intel Reveals Neuromorphic Chip Design&i class=&icon-external&&&/i&&/a&&/p&&p&&a href=&//link.zhihu.com/?target=http%3A//hardware.solidot.org/article.pl%3Famp%26from%3Drss%26sid%3D12%252F06%252F19%252F0752228& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Solidot | 英特尔透露神经形态芯片设计&i class=&icon-external&&&/i&&/a&&/p&&ul&&li&&b&HRL Laboratories &/b&&/li&&/ul&&a href=&//link.zhihu.com/?target=http%3A//www.hrl.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&HRL Laboratories&i class=&icon-external&&&/i&&/a&&a href=&//link.zhihu.com/?target=http%3A//www.hrl.com/laboratories/cnes/cnes_neuromorphic.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&HRL Laboratories : Laboratories : CNES : Center for Neural & Emergent Systems&i class=&icon-external&&&/i&&/a&&ul&&li&&b&Audience&/b&&br&&/li&&/ul&&blockquote&Audience公司出于对神经系统的学习性和可塑性、容错、免编程、低能耗等特征进行了研究,研发出基于人的耳蜗而设计的神经形态芯片,可以模拟人耳抑制噪音,应用于智能手机。Audience公司也由此成为行业内领先的语音处理芯片公司。&br&&/blockquote&&a href=&//link.zhihu.com/?target=http%3A//www.audience.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Audience | Advanced Voice&i class=&icon-external&&&/i&&/a&&br&相关技术论文&a href=&//link.zhihu.com/?target=http%3A//www.audience.com/the-science/resources& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Resources&i class=&icon-external&&&/i&&/a&&br&&ul&&li&&b&Numenta&/b&&/li&&/ul&&a href=&//link.zhihu.com/?target=http%3A//www.numenta.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Numenta | New Era of Machine Intelligence&i class=&icon-external&&&/i&&/a&&a href=&//link.zhihu.com/?target=http%3A//numenta.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Numenta | NuPIC&i class=&icon-external&&&/i&&/a&&br&CLA White Paper: &a href=&//link.zhihu.com/?target=http%3A//numenta.org/cla-white-paper.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CLA White Paper&i class=&icon-external&&&/i&&/a&&a href=&//link.zhihu.com/?target=http%3A//numenta.org/resources/HTM_CorticalLearningAlgorithms_chn.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Chinese
Translation&i class=&icon-external&&&/i&&/a& - Yu Tianxiang&br&&ul&&li&&b&Braincorporation&/b&(有高通投资)&/li&&/ul&&a href=&//link.zhihu.com/?target=http%3A//www.braincorporation.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Brain Corporation&i class=&icon-external&&&/i&&/a&&br&&figure&&img src=&https://pic4.zhimg.com/f99eb56c0e5c38b0a343_b.jpg& data-rawwidth=&976& data-rawheight=&390& class=&origin_image zh-lightbox-thumb& width=&976& data-original=&https://pic4.zhimg.com/f99eb56c0e5c38b0a343_r.jpg&&&/figure&&p&&b&学术界:&/b&&/p&&ul&&li&&b&Standford&/b& 的Kwabena Boahen。&br&&/li&&/ul&&p&Boahen于1990年加入Mead在Caltech的实验室,现为stanford的Principal Investigator。&a href=&//link.zhihu.com/?target=http%3A//web.stanford.edu/group/brainsinsilicon/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Brains in Silicon&i class=&icon-external&&&/i&&/a&&/p&&p&Kwabena Boahen TED演讲(有字幕)&a href=&//link.zhihu.com/?target=http%3A//www.ted.com/talks/kwabena_boahen_on_a_computer_that_works_like_the_brain%3Flanguage%3Dzh-tw%23t-6033& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&卡貝納?博罕談論像人腦般運作的電腦&i class=&icon-external&&&/i&&/a&&/p&&p&&a href=&//link.zhihu.com/?target=http%3A//news.sciencenet.cn/htmlnews/999.shtm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&模拟人脑的神经形态计算方式渐成学界热点&i class=&icon-external&&&/i&&/a&&/p&&figure&&img src=&https://pic2.zhimg.com/adfe6495d6d_b.jpg& data-rawwidth=&829& data-rawheight=&704& class=&origin_image zh-lightbox-thumb& width=&829& data-original=&https://pic2.zhimg.com/adfe6495d6d_r.jpg&&&/figure&&ul&&li&&b&Universit?t Heidelberg&/b&的 Karlheinz Meier教授&br&&/li&&/ul&&p&&a href=&//link.zhihu.com/?target=https%3A//www.google.com.tw/url%3Fsa%3Dt%26rct%3Dj%26q%3D%26esrc%3Ds%26source%3Dweb%26cd%3D1%26cad%3Drja%26uact%3D8%26ved%3D0CB0QFjAA%26url%3Dhttp%253A%252F%252Fwww.kip.uni-heidelberg.de%252Fcms%252Fvision%252Fprojects%252Ffacets%252Fneuromorphic_hardware%252Fsingle_chip_system%252Fthe_spikey_chip%252F%26ei%3D5wrzU_D3Dszq8AWAhIHgDw%26usg%3DAFQjCNHtQ4vKUeYNREebKgLg_goE3MuZwA%26sig2%3DGqDHLtzC0B28wPYc2lkFMw& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VISION: The
&Spikey& Chip&i class=&icon-external&&&/i&&/a&&a href=&//link.zhihu.com/?target=https%3A//facets.kip.uni-heidelberg.de/public/media/download.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&FACETS Material&i class=&icon-external&&&/i&&/a&&/p&&figure&&img src=&https://pic3.zhimg.com/06ebcd89b04e6341114a_b.jpg& data-rawwidth=&748& data-rawheight=&276& class=&origin_image zh-lightbox-thumb& width=&748& data-original=&https://pic3.zhimg.com/06ebcd89b04e6341114a_r.jpg&&&/figure&&ul&&li&&b&Manchester&/b& 的SpiNNaker&br&&/li&&/ul&&p&&a href=&//link.zhihu.com/?target=http%3A//apt.cs.manchester.ac.uk/projects/SpiNNaker/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Research Groups: APT&i class=&icon-external&&&/i&&/a&&/p&&figure&&img src=&https://pic2.zhimg.com/f06

我要回帖

更多关于 cpu的主要功能是 的文章

 

随机推荐