到底有多牛,别的最牛芯片架构师一般给的都是浮点运算能力

一种高性能浮点DSP芯片TMS320C6713及其最小系统的设计_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
一种高性能浮点DSP芯片TMS320C6713及其最小系统的设计
&&一种高性能浮点DSP芯片TMS320C6713及其最小系统的设计
阅读已结束,下载本文需要
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩1页未读,
定制HR最喜欢的简历
你可能喜欢为什么当年gt200架构的gpu的浮点及通行运算能力比4核还强10倍【cpu吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:352,122贴子:
为什么当年gt200架构的gpu的浮点及通行运算能力比4核还强10倍收藏
。。这不是很不合理吗 ,那为什么cpu………
517通信狂欢节,英特尔cpu e5200,好礼不停!买阿里宝卡送天猫精灵,更有全年底价百兆宽带!517通信狂欢节,智能你的生活.
所以你超频CPU或者换一个比较好的CPU,而显卡弱的话,玩游戏还是翔,,,换个显卡或者超频显卡游戏就立竿见影,,,浮点运算能力肯定比CPU强得多,但通用性就大不如CPU了,CPU为了增强通用运算,前段的分支预测,乱序执行能力,流水线控制,指令解码,发射,缓存等等占有绝大部分芯片面积和晶体管,而真正的整数和浮点执行单元只有很小一部分,,GPU就不一样了,控制单元面积较小,大部分被执行单元占据,因为GPU的数据多为顶点,像素,纹理等等比较单一,,GT200只有1.1Tflops左右单精度浮点运算能力,并不高,7970ge都有4.5Tflops了
GPU只能参与一些特定的计算,这些计算CPU可以做,但效率低。通用计算说白了就是一个数据转换的过程,将GPU不能处理的数据转换成可以处理的数据,GPU处理后在转换成CPU善于处理的数据。你想啊,GT200有240个流处理器可以参与特定的计算,因为是核心/流处理器分频,所以每个周期每个流处理器还不止计算一次。而你的4核CPU只有4个核心,算上超线程而已只是特定情况下最多能当8个用。你想单就计算能力而言二者相差多少,但F1跑的再快它也不能当货车用。
Tahiti比GT200还高几倍你怎么不说————I used to be an adventurer like you. Then I took an arrow in the knee.
不能这么比,CPU完成复杂的运算,控制各个部件协同工作,显卡仅仅一些简单的任务,主要是保证速度,CPU复杂得多,晶体管不是只用来进行浮点运算,很早以前只是从CPU拿出几根线作显示用,后来显示太复杂出现了专门的显示芯片,也就是集成显卡,再后来又出现独立显卡,现在随着制作工艺提升,又出现核心显卡,在走一个总-分-总的路线。,都是随着应用的需要改变的,
回复 jitre :CPU是专为通用运算而设计的,有完整的乱序执行,分支预测能力,,简单的说GPU通过顶点shader的运算来构建3D画面骨架,顶点其实就是空间坐标(XYZW四个通道),而GPU的顶点着色器也是针对这四个通道设计的,也就是所谓4D矢量ALU,顶点数据精度要求很高,范围也很大,是无法用整数来表示的,而且一般用FP32精度也就是单精度浮点数来表示,自然也是就是单精度浮点运算,,顶点着色器建模后经过光栅化引擎转化为像素,通过像素渲染管线来计算像素颜色,纹理单元负责将纹理材质通过计算放到相应位置形成物体的表面,,,这个过程是有像素着色器通过计算来确定像素颜色和透明度(RGBA四个通道),像素着色器可以不需要太高的浮点精度,就算把32bit降低为16bit你也看不出太大区别,,,所以手机上的Mali400的像素着色器只支持FP16精度,,tegra2/3/4的像素着色器只支持FP20精度等等,,当然桌面级别显卡现在都是支持FP32精度的流处理器,也提供了了更高精度的双精度浮点运算,,,传统GPU所处理的数据全为浮点数,只是精度各不相同,要让传统的GPU进行通用运算就必须将数据转化为GPU能处理器的数据这对编译器要求极高,且难度很大,,,,CPU的浮点运算单元FPU不过几十Gflops运算速度,就算几个核心并行运算也不过一百多点Gflops,你要用CPU来进行顶点渲染和像素渲染简直是叫他去完成不可能完成的任务,当然现在NVIDIA引入了可读写的缓存,引入线程仲裁机制通过挂起线程来实现部分乱序执行,AMD也引入了ACE异步执行单元,来对任务优化排序,也是实现了部分乱序执行,,GPU未来发展方向肯定是GPGPU(用GPU进行通用运算),,,GPU更加擅长并行运算,且有数量庞大的ALU运算单元
:通用运算哪里是浮点运算,,CPU就算通用的处理器,GPU是专业处理器,GPU在进行数据关键性很高,数据复杂的处理时就会非常低效,比如if(a&b) c=f(a)else c=f(b)这种分支程序时,必须知道a和b的值才能继续运算,给c赋值,GPU只有等到a和b的值才能继续往下运算,CPU的分支预测,可以预测一个值带入运行,,当然NVIDIA的TLP遇到此种情况会切换到其他线程运算,等a和b有值时切换回来继续运算,所以NVIDIA的这种架构渲染是比较灵活的,效率较好,以前的GPU可没有所谓的TLP(线程级并行)GPU的庞大的ALU运算单元肯定是GPU庞大浮点运算基础,,目前AMD和NVIDIA的流处理器都包涵一个ALU,这个ALU一个周期可以进行浮点的乘加运算,算2个FLOPS,,,CPU的ALU较GPU少的多,大部分为控制单元,i四核7的浮点运算能力也没有超过100Gflops,而GT610显卡就有155.5Gflops运算能力,GPU和CPU一样也有整数运算单元,NVIDIA的一个CUDA单元,其实就相当于一颗小的CPU运算核心总的说来CPU适合程序复杂,关键度高的串行运算,GPU适合大量数据关键度不高,且较简单一的并行运算,,,这只是俺的个人观点,最近准备向CUDA学习,目前主攻C语言中,就了解点点皮毛其实下图的Intel奔腾4也反应了CPU的运算单元实在太小了,完全无法和CPU比
登录百度帐号CPU浮点运算与整点运算分别决定其什么方面性能? - 知乎175被浏览<strong class="NumberBoard-itemValue" title="4分享邀请回答629 条评论分享收藏感谢收起510 条评论分享收藏感谢收起写回答请问下什么是GPU的浮点运算能力?主要干什么的?_百度知道
请问下什么是GPU的浮点运算能力?主要干什么的?
我有更好的答案
GPU主要是进行是进行图形渲染的 有人说GPU的性能达到CPU的40倍这个说法是很不全面的 如果光说GPU在并行和密集浮点运算上达到CPU40倍性能这个或许可行(个人认为没有这么夸张,最好的GPU能达到最好的CPU的10倍就很令人吃惊的了,况且现在CPU出现了多核,这使CPU的运算大大提高了,而GPGPU貌似还限于单核),但在全运算上这么说就很没根据了 其实把GPU当作普通处理器使用依然有着不小的难度,其中最要命的恐怕就是GPU是被专门设计来处理图形,因此它的编程语言架构和编程环境都难通用。GPU运行非图形程序时,往往需要依靠极其复杂的算法和较为曲折的流程,GPU的强大运算潜力很多时候就在这样的迂回过程中被一点点耗尽。 除此以外,由于没有统一的API和驱动支持,GPU程序的开发者不得不针对每个GPU架构开发对应的软件版本,使得把GPU当作普通处理器项目的推进难度倍增。
(如果你不是专门搞这行的话)这好像需要专业显卡才能更好的输出,一般显卡的浮点运算能力的确强大,从输出的情况上看也不给力啊,玩游戏上是看不出来的,有兴趣的话下个BOINC客户端,用自己的显卡给BOINC等做做科学分布式计算,给世界做点贡献
GPU计算能力强主要是因为他的大部分电路都是进行算术计算的单元,实际上加法器乘法器这些都是相对较小的电路,即使做很多这种运算单元,都不会占用太多芯片的面积。而且由于GPU的其他部件占得面积小,它也可以有更多的寄存器和缓存来存储数据。CPU之所以那么慢,一方面是因为有大量的处理其他程序如分支循环之类的单元,并且由于cpu处理要求有一定的灵活性,那么cpu的算术逻辑单元的结构也要复杂很多。简单的说,就为了提高分支指令的处理速度,cpu的很多部件都用于做分支预测,以及在分支预测错误的时候,修正和恢复算术逻辑单元的结果。这些都大大的增加了器件的复杂度。另外,实际上现在的CPU的设计上也在向GPU学习,就是增加并行计算的,没有那么多控制结构的浮点运算单元。例如intel的sse指令集,到目前可以实现同时进行4个浮点运算,而且增加了很多寄存器 另外,想学习GPU计算的话,去下载一个CUDA的SDK,里面有很详细的说明文档
为您推荐:
其他类似问题
您可能关注的内容
浮点运算的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。参考之前的两篇博文《》《》
跟这篇博文的主题都有关系,这篇博文整理这方面的知识比较清楚,也便于应用。
=====================================================================
名字解释:ABI,application binary interface (ABI),应用程序二进制接口。编译版本问题:& GCC 4.0 为分界线& 4.0版本以下,由于采用OABI接口,其对浮点的支持不太好& 4.0版本以上,采用了新的EABI接口,其对软浮点和硬浮点的支持都比较好。考虑在4.0版本以下时,其支持的ARM内核大多数没有硬浮点,所以可以分析资料比较少,现在重点关注4.0版本以上。以下所述都是针对4.0版本以上的。编译器相关的参数:& -mfloat-abi=soft&&& 使用这个参数时,其将调用软浮点库(softfloat lib)来支持对浮点的运算,GCC编译器已经有这个库了,一般在libgcc里面。这时根本不会使用任何浮点指令,而是采用常用的指令来模拟浮点运算。但使用的ARM芯片不支持硬浮点时,可以考虑使用这个参数。在使用这个参数时,连接时一般会出现下面的提示:&& undefined reference to `__aeabi_fdiv'& 或者类似的提示,主要因为一般情况下连接器没有去主动寻找软浮点库,这时使用将libgcc库加入即可。& -mfloat-abi=softfp& -mfloat-abi=hard& 这两个参数都用来产生硬浮点指令,至于产生哪里类型的硬浮点指令,需要由-mfpu=xxx参数来指令。这两个参数不同的地方是:&&&&&&&& -mfloat-abi=softfp生成的代码采用兼容软浮点调用接口(即使用-mfloat-abi=soft时的调用接口),这样带来的好处是:兼容性和灵活性。库可以采用-mfloat-abi=soft编译,而关键的应用程序可以采用-mfloat-abi=softfp来编译。特别是在库由第三方发布的情况下。&&&&&&&& -mfloat-abi=hard生成的代码采用硬浮点(FPU)调用接口。这样要求所有库和应用程序必须采用这同一个参数来编译,否则连接时会出现接口不兼容错误。&&&&& -mfpu=vfp& -mfpu=fpa& ...& 前面已经讲述了,-mfpu参数就是用来指定要产生哪种硬浮点指令。常见的有vfp,fpa等。编译器使用时要注意的地方:& 1.确认编译器默认是使用哪种参数来处理浮点操作的。写一个简单的浮点数程序:& #include &stdio.h&&int main(void){&&& double d1 = 10.3;&&& double d2 = 2.0;&&&&&&& double dret = d1/d2;&&& dret++;&&&&&&& printf("result :%f",dret);&&&&&&& return 0;}&&&&&&然后使用&&&&& arm-linux-gcc -c main.c -o main.o&&& 再使用&&&&& arm-linux-objdump -d main.o&&&& 然后观察产生的指令,从而确定默认使用的是软浮点还是硬浮点。(确认的过程,看个人。晃一眼,里面如果有不熟悉指令,那可能就是硬浮点指令了)&2.确认编译器所带的库使用哪种参数来编译的。&3.确认所使用的芯片是否支持硬浮点,如果支持,是哪种类型的浮点指令。如果1,2与使用的芯片相冲突,这时就要考虑另寻编译器了。这三点确认以后,我们在写自己的应用程序时,就会知道该怎样使用这些参数了。Linux相关问题:&这里涉及两个问题:1.使用的ARM芯片不支持硬浮点&&&&&&&&&&&&&&&&&& 2.使用的ARM芯片支持硬浮点问题1:使用的ARM芯片不支持硬浮点&& 在配置ARM Linux内核时,应该都会看到这样的配置:&&& menu "Floating point emulation"&&& comment "At least one emulation must be selected"&&& config FPE_NWFPE&&&&&&& ...&&& 这个是用来配置在内核里面模拟浮点处理器。& 这个配置有什么作用呢?估计很少有人能够知道。其实它是这样的:&& 当使用的ARM芯片不支持硬浮点,而又采用了-mfpu=fpa -mfloat-abi=softfp/hard来编译应用程序。现在应该知道,采用这样的参数是要参数fpa硬浮点指令。但是使用的ARM芯片不支持硬浮点,这时这个配置就其作用了。因为使用了fpa硬浮点指令,但使用的ARM芯片不支持硬浮点,这样当程序运行到fpa硬浮点指令,会出现指令异常,便会陷入到内核里,这时这个模拟浮点处理器就来模拟这些浮点指令。现在应该清楚了,其作用了吧。但是现在有了更好的办法,前面已经讲过了,采用-mfloat-abi=soft参数来编译应用程序,这样效率会快得多。想想从用户态切换到内核态,以及由此产生的cache和TLB表的损失。所以可以考虑将这个配置抛弃了。问题2:使用的ARM芯片支持硬浮点一般ARM芯片支持硬浮点,都是采用协处理器方式的。与ARM内核本身一样,协处理器也有自己的寄存器。这样当多个进程同时涉及浮点运算时,会怎样?所以Linux内核为了支持硬浮点,也要做一些工作的。内核配置:&& config VFP&&& bool "VFP-format floating point maths"&&& depends on CPU_V6 || CPU_ARM926T || CPU_V7 || CPU_FEROCEON如果使用的ARM芯片支持硬浮点,同时在应用程序里面使用了硬浮点,那么内核可能需要做一些工作。。上面这个配置是针对vfp硬浮点处理器的;如果是其他硬浮点处理,需要参考相关的资料,来确认要做哪些功能。如果可以确保所有时候,可以确保只有一个进程使用硬浮点处理器,那可以不需要考虑对硬浮点相关寄存器的保存和切换,问题是可以确认吗?对于浮点运算,针对ARM芯片应该尽量避免。如果无法避免,那就需要综合考虑到底使用哪种方式?如何去操作?性能如何?都需要考虑,去实验测试是最好的。
阅读(...) 评论()

我要回帖

更多关于 中国最牛芯片上市公司 的文章

 

随机推荐