0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CPU 的浮点运算能力比 GPU 差,为什么不提高 CPU 的浮点运算能力呢

Dbwd_Imgtec 来源:未知 作者:李建兵 2018-03-16 15:12 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

问:为什么 CPU 的浮点运算能力比 GPU 差,为什么不提高 CPU 的浮点运算能力?


「速度区别主要是来自于架构上的区别」是一个表面化的解释。对,架构是不同。但是这种不同是目前各个厂家选择的现状,还是由于本质的原因决定的?CPU 能不能增加核?GPU 那张图为什么不需要 cache?

首先,CPU 能不能像 GPU 那样去掉 cache?不行。GPU 能去掉 cache 关键在于两个因素:数据的特殊性(高度对齐,pipeline 处理,不符合局部化假设,很少回写数据)、高速度的总线。对于后一个问题,CPU 受制于落后的数据总线标准,理论上这是可以改观的。对于前一个问题,从理论上就很难解决。因为 CPU 要提供通用性,就不能限制处理数据的种类。这也是 GPGPU 永远无法取代 CPU 的原因。

其次,CPU 能不能增加很多核?不行。首先 cache 占掉了面积。其次,CPU 为了维护 cache 的一致性,要增加每个核的复杂度。还有,为了更好的利用 cache 和处理非对齐以及需要大量回写的数据,CPU 需要复杂的优化(分支预测、out-of-order 执行、以及部分模拟 GPU 的 vectorization 指令和长流水线)。所以一个 CPU 核的复杂度要比 GPU 高的多,进而成本就更高(并不是说蚀刻的成本高,而是复杂度降低了成片率,所以最终成本会高)。所以 CPU 不能像 GPU 那样增加核。

至于控制能力,GPU 的现状是差于 CPU,但是并不是本质问题。而像递归这样的控制,并不适合高度对齐和 pipeline 处理的数据,本质上还是数据问题。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11216

    浏览量

    222858
  • gpu
    gpu
    +关注

    关注

    28

    文章

    5097

    浏览量

    134415

原文标题:为什么 CPU 的浮点运算能力比 GPU 差,为什么不提高 CPU 的浮点运算能力?

文章出处:【微信号:Imgtec,微信公众号:Imagination Tech】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    为什么FPU在MCU中很重要

    核心去处理其他任务(如控制逻辑、通信、中断处理),提高了系统的整体响应能力和多任务处理能力。 降低功耗: 由于计算速度大大加快,完成相同计算任务所需的时间显著缩短,CPU 可以更快地
    发表于 11-18 07:05

    蜂鸟内核模块浮点指令运算数据的获取

    核中是如何获取所需的两个操作数。 我们以浮点加法运算为例。 首先,经过分析我们发现整型指令寄存器的例化是通过循环完成的,所以我们可以用相同的方式例化32个32位浮点寄存器,相关代码如下: 我们进入例
    发表于 10-24 13:39

    E203添加浮点数方法:FPU控制逻辑

    。 2. FPU 设计 要实现整一个 FPU 及其控制单元,首先要确定指令周期,以及浮点运算的方式。 由于笔者首次使用 Verilog 设计修改 CPU,因此为了减少错误、方便后续修改,笔者将单精度
    发表于 10-24 13:28

    蜂鸟E203的浮点指令集拓展(F拓展)

    关于蜂鸟E203的浮点指令集拓展(F拓展) Whetstone中有很多浮点运算,而蜂鸟e203中没有硬件支持,是通过将浮点数转化成整型数来计算,效率大大降低。 为了
    发表于 10-24 11:51

    FPNew开源浮点运算单元工程建立

    在添加浮点运算单元时,可以引用开源的浮点运算器以简化所需工作任务压力。在此我们采用了FPnew这个开源工程,再次介绍一些如何将其导成vivado工程。 首先在github上下载fpn
    发表于 10-24 11:08

    浮点数是如何实现开平方运算

    1位。 ###### 浮点数的平方根运算步骤为:浮点数的平方根运算步骤为: 1.从指数中减去偏置分量,求绝对。 2.将结果右移一位,然
    发表于 10-24 08:42

    浮点指令(七:寄存器)

    fcsr寄存器包含浮点异常标志域(fflags),不同的标志位表示不同的异常类型。如果浮点运算单元在运算中出现了相应的异常,则会将fcsr寄存器中对应的标志位设置为1,且会一直保持累积
    发表于 10-24 08:28

    浮点指令扩展中部分问题的解决与分享

    leg1_ops用于标识各种类型的运算指令,而我们由于没有加上浮点指令,所以在浮点进入后,此处变量leg1_ops为0,导致后续指令执行出错。 而加上float_op后再进行仿真就会解决此问题 二. 在
    发表于 10-24 08:14

    浮点舍入模式介绍(六)

    浮点舍入模式 为什么要舍入? 因为单精度浮点数只取23位尾数(除去隐藏位),而一些运算不可避免的得到的尾数会超过23位,因此需要考虑舍入。 根据 IEEE-754 标准, 浮点
    发表于 10-24 07:57

    (九)浮点乘法指令设计

    ⊕ sb,得到结果的符号位 阶码相加减 按照定点整数的加减法运算方法对两个浮点数的阶码进行加减运算,因为规格化数的价码e满足1≤e≤254,而ec有可能超出1~254范围,所以当1≤ec≤254,相乘结果
    发表于 10-24 07:11

    如何获取蜂鸟内核执行模块浮点指令的运算数据

    核中是如何获取所需的两个操作数。 我们以浮点加法运算为例。 首先,经过分析我们发现整型指令寄存器的例化是通过循环完成的,所以我们可以用相同的方式例化32个32位浮点寄存器,相关代码如下: 我们进入例化
    发表于 10-24 07:10

    浮点运算单元的设计和优化

    浮点运算单元的设计和优化可以从以下几个方面入手: 1.浮点寄存器设计:为了实现浮点运算指令子集(RV32F或者RV32D),需要添加一组专用
    发表于 10-22 07:04

    使用Simulink自动生成浮点运算HDL代码(Part 1)

    引言 想要实现浮点运算功能,如果自己写Verilog代码,需要花费较多的时间和精力。好在Simulink HDL Coder工具箱提供了自动代码生成技术。下图展示了HDL Coder如何生成浮点
    发表于 10-22 06:48

    risc-v中浮点运算单元的使用及其设计考虑

    RISC-V浮点运算单元(floating-point unit,简称FPU)是一种专门用于执行浮点运算的硬件加速器,其作用是提高
    发表于 10-21 14:46

    【RA-Eco-RA4E2-64PIN-V1.0开发板试用】RA4E2的DSP浮点性能的软件浮点测试和硬件浮点测试对比

    , atan,等等基本操作。 当然为了测试出硬件浮点运算性能,这里很有必要在测试一下软件浮点运算能力,方便做个测试对比,怎么做软件
    发表于 12-30 17:55