php
接下来开始怼吧
评论里诸多反驳言论都是HDL是否属于“编程语言”。首先,我觉得大家的看法可以更具有包容性,如果实在不支持HDL作为一种编程语言的存在,那就当我抖个机灵耍个小聪明。更重要的是,希望我的答案之前不了解hdl的朋友起到科普作用。(原答案往后翻)
我认为verilog HDL的编写是具有很多编程语言属性的,它同样可以作为编程语言去开发产品。下面这个demo是本人三年前用纯verilog写的,在FPGA上运行:
https://www.zhihu.com/video/1104065469400629248大家看了这个demo以后会发现,原来java python c能做的verilog也能做,只是耗时长短的问题。只要一个FPGA工程师够闲,完全可以用FPGA搭一个网站。
这个demo我当时花了四周做出来,约2000行代码。我后来用python tkinter花两个小时写了一模一样的,只用89行代码。为什么我用verilog花了4个星期,因为连VGA时序都要设置!你知道rgb像素分别用几个bit从哪根针管输出都要自己设置的痛苦吗?!
ok,到这里verilog难应该很少人不赞同了。但你有没有想过,一门这么难的语言,它是靠什么生存的?没点性能优势还混毛线?!
在你认同在你认同HDL是编程语言之后,你继续往下看:
编程语言运行的本质其实就是处理二进制流,以这个机制为基本思想,那么评价一门编程语言性能的指标就是处理二进制流的能力。当然,这个能力并不是单一的,也与硬件载体有关。那么,我们不定量地去讨论几种编程语言的强弱。如果说性能强的几种编程语言里,verilog绝对榜上有名。
我为什么这么自信地说,因为要求强实时性的地方都少不了verilog的身影。通信网络,军工领域,视频编解码等等。
intel在2015年以167亿美金收购了FPGA厂商Altera(这是intel史上最大的收购案)。就性能而言,cpu有点玩不动,你用汇编语言也玩不动,因为CPU这个载体就不行,CPU的性能是随着摩尔定律在发展,很显然摩尔定律带不动了。能打破后摩尔定律魔咒的解决方案只有“异构”,什么是异构?异构可以是,什么是异构?异构可以是cpu+fpga模式,在一个程序里,有非常需要性能的部分,这部分丢给fgpa去做,其他部分用cpu去做。那么当PC完全走向异构的时候,难道还是只有以CPU载体的语言真的就是正统的“编程语言”吗?
下面是一个FPGA视频转码的商业应用案例,黄色光纤连接的就是Gidel公司做的基于FPGA转码的设备。在不要求帧率的情况下,可以用ffmpeg软件(基于C/C++)转码,但需要实时性高帧率时就只有硬转码才能撸得动了。
FPGA视频转码 https://www.zhihu.com/video/1119971797851852800——————
原答案如下:
Verilog/VHDL(以下简称verilog,手动眼斜)
原因如下:
1,跳过操作系统,对底层电路进行编程;
2,为什么它是编程语言。因为它可以在现场可编程逻辑阵列上运行,没人规定一定要在CPU上跑的才叫编程语言吧。
------
说说Verilog为什么快:
基于冯诺依曼结构的编程语言需要先编译成机器语言之后,run起来需要流式取指译码然后执行,指令之间也是流式进行。而且一条指令可能需要几个或者几十个CPU时钟周期。哪怕是最贴近底层的汇编语言,也没办法避免单指令多周期的时间刚需,也无法避免这些时钟周期还可以流水线叠加。
而verilog如果设计得好,在不太care硬件资源的前提下,任何指令甚至具有一定功能的程序,都可以在一个时钟周期内完成。(可以理解为电路具有无限并行能力)
可以举个例子,比如写个if-else分支。在cpu上会用跳转的方式来完成,比较判断跳转,说三个时钟周期算少。而在verilog上呢,直接编译成一个mux,一个周期搞定。在多分支的情况下,多个mux叠加,verilog的优势会越来越大。
verilog的缺点也是很明显,开发起来比汇编都痛苦(别问我是怎么知道的)。很多软件工程师不了解verilog也是有原因的。举个例子,都知道很多算法(挖矿,NN等)在GPU上跑得比CPU快很多,原因之一就是GPU上很多矩阵运算都用专用电路加速了(这部分专用计算电路就是由硬件描述语言verilog之类完成后再固化的)。所以,性能最强的编程语言,我投verilog一票。
--------
关于评论里若干争论的回复:
1.硬件描述语言,不等于脱离了编程语言的范畴。可编程逻辑电路是早于CPU问世的,“编程”这个词最初就是对电路进行编程。详情可查wiki。所以,Verilog才是最正的“编程”血统。
2. 编程语言没有说只局限于冯氏结构,在权威媒体TIOBE(https://www.tiobe.com/tiobe-index)对编程语言活跃度进行排名的时候,Verilog和VHDL都榜上有名,最新排名大于50名。我怕大家不肯点击这个链接,于是我去截图,如下图所示
这说明权威媒体也认同这是编程语言。对于编程语言的界定,我想各路神仙不必在我这里指点江山。
3. 认为Verilog只是在画电路图的同学,其实还是没太深度了解Verilog的。现在的Verilog等硬件描述语言,发展成类c语言了,可以用c语言里面的很多元件(if-else,for循环,case等等),并不是纯粹画数电图的思路去编程。
我也不知道为什么花这么多时间去解释,我可能是闲的。下面各路神仙还请甭在我这里展示您的上帝视角,这个帖子就到这儿了。我还要花时间忙自己的事呢,就不再回复了。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有