通俗易懂讲解CPU、GPU、FPGA的特点

news2024/11/18 3:45:37

1. CPU vs GPU

  大家可以简单的将CPU理解为学识渊博的教授,什么都精通;而GPU则是一堆小学生,只会简单的算数运算。可即使教授再神通广大,也不能一秒钟内计算出500次加减法。因此,对简单重复的计算来说,单单一个教授敌不过数量众多的小学生。在进行简单的算数运算这件事上,500个小学生(并发)可以轻而易举打败教授。
在这里插入图片描述
  可以看到,CPU和GPU的最大不同在于架构。CPU适用于广泛的应用场景(学识渊博),可以执行任意程序;而GPU则专为多任务而生,并发能力强。
  具体来讲,就是多核,一般的CPU有2核、4核、8核等;而GPU则可能会有成百上千核
在这里插入图片描述
  GPU构造与CPU相似,包含控制单元(control unit)、算术逻辑单元(ALU)、快取(cache)及动态随机存取记忆体(DRAM)等元件。差别在于,GPU的控制单元、ALU及快取设计较为简易,且数量较多,导致GPU擅于处理大量简单的工作(例如渲染图像)
  可以看到,CPU内部cache以及控制部分占据了很大一部分片上面积,因此计算单元占比很少。GPU只有很简单的控制单元,剩下的大部分都被计算单元占据,因此CPU的核数有限,而GPU则轻松堆出上千核。只不过CPU中每个核的能力好比教授,而GPU的每个核的能力好比一个小学生。
  为什么GPU需要这么多核心?
  想一想计算机上的一张图是怎么表示的?无非就是屏幕上的一个个像素:
在这里插入图片描述
  我们需要为每个像素进行计算,而且是相同的运算,就好比刚才例子中的小学生计算计加法一样。
  对于屏幕来说一般会有上百万个像素,如果我们要串行的为每一个像素进行运算效率就太低了。因此可以让GPU中的每一个核心去为相应的像素进行计算。由于GPU中有很多核心,因此并行计算可以大幅提高速度。除了GPU的核心数比较多之外,GPU的工作方式也比较奇怪。
  GPU的工作方式:
  对于CPU来说,不同的核心可以执行不同的机器指令,coreA在运行word线程的同时coreB上可以运行浏览器线程,这就是所谓的多指令多数据,MIMD(Multiple Instruction, Multiple Data)
  而GPU则不同,GPU上的这些核心必须整齐划一的运行相同的机器指令,只是可以操作不同的数据,这就好比这些小学生在某个时刻必须都进行加法计算,不同的地方在于有的小学生可能需要计算1+1,有的要计算2+6等等,变化的地方仅在于操作数,这就是所谓的单指令多数据,SIMD(Single Instruction, Multiple Data)
  因此,我们可以看到GPU的工作方式和CPU是截然不同的。
  除了这种工作方式之外,GPU的指令集还非常简单,不像CPU这种复杂的处理器。如果你去看CPU的编程手册就会发现CPU负责的事情非常多,如中断处理、内存管理、IO等。这些对于GPU来说都是不存在的,可以看到GPU的定位非常简单,就是纯计算,GPU绝不是用来取代CPU的,CPU只是把一些GPU非常擅长的事情交给它,GPU仅仅是用来分担CPU工作的配角。

  GPU擅长什么?
  比较适合GPU的计算场景是这样的:计算简单、重复计算,因此如果你的计算场景和这里的图像渲染相似那么使用GPU就很合理了。因此对于图形图像计算、天气预报以及神经网络等都适用于GPU
  难倒CPU的问题,就是当它被交付大量的琐碎工作,虽然它能够处理,却会浪费太多宝贵时间;大材小用,就像米其林主厨被派去夜市炸鸡排,耽搁了高档餐厅的业务。相较下,GPU的控制单元与ALU设计简单、快取空间较小,拥有大量核心数及比较高的吞吐量,适合快速处理简单的运算,而GPU除了渲染图像之外,GPU在需要密集资料运算的领域也崭露头角,比如在大数据分析、机器学习、AI人工智慧发展等方面,GPU已成为推动电脑科学向前迈进的重要功臣。

2. FPGA

  FPGA是什么呢?
  FPGA(Field Programmable Gate Array),即现场可编程门阵列,它可以通过硬件描述语言(Verilog或VHDL)描述一个电路设计,通过配套的EDA工具综合与布局,并烧录至 FPGA来实现设计需要
  目前所有的FPGA或eFPGA都包含大量的可编程逻辑单元和可编程布线单元。逻辑单元可以实现一小部分数字逻辑,而布线则连接这些逻辑单元来组成更大的数字电路。
在这里插入图片描述

  FPGA的基本原理:按照门电路的组合逻辑和时序逻辑,利用查找表(Look-Up-Table,简称LUT),实现快速的数据计算。
  可编程逻辑单元:
  数字电路可以细分为组合逻辑和时序逻辑。 FPGA中实现组合逻辑的部分就是查找表(LUT),时许逻辑则依靠寄存器。若干个LUT和寄存器相互连接则构成了一个逻辑簇。不同的FPGA公司所定义的逻辑簇的结构也是不同的。 逻辑簇结构有2大好处,第一逻辑簇中的互联速度要快,可以提高FPGA速度; 第二, 逻辑簇的应用可以简化排版布线的复杂度,缩短综合时间。
在这里插入图片描述

  可编程布线单元:
  与定制电路不同, FPGA的布线资源都是预制好的, 因此预制的布线资源能够连接绝大多数的逻辑单元(簇)。 对于用户设计好的项目,通过控制一系列的开关来满足特定单元间的互联。 这也就使得布线资源占据了FPGA的绝大部分面积, 而且复杂的布线网络中控制开关过多的话会大大降低FPGA的运行频率。如果减少布线资源, 则会加大EDA软件算法的难度,而且会导致电路布局布线失败。
  因此如何设计逻辑簇和与之配合的布线资源,使其达到速度和面积的均衡,而且还要考虑到EDA软件算法的难度,执行时间以及内存占用, 这是每个FPGA厂商的核心中的核心

CPU的难点是其硬件结构,软件指令集则不是厂家的主要难点。 而FPGA的硬件结构原理并不是主要技术壁垒,但是其EDA软件的核心算法则是每个公司的长期积累的成果

在这里插入图片描述

  CPU vs GPU vs FPGA:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/692218.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

畅聊职场之:作为程序员,不可不知道的银行IT岗位,收藏备选。

程序员向往的银行IT岗 1、引言2、国有商业银行2.1 中国农业银行2.2 中国邮政银行2.3 中国工商银行2.4 中国银行2.5 中国建设银行2.6 中国交通银行 3、股份制商业银行3.1 招商银行3.2 浙商银行3.3 浦发银行3.4 平安银行3.5 渤海银行3.6 中国民生银行3.7 中信银行3.8 中国光大银行…

60 KVM Skylark虚拟机混部-安装和配置

文章目录 60 KVM Skylark虚拟机混部-安装和配置60.1 安装Skylark60.1.1 硬件要求60.1.2 软件要求60.1.3 安装方法 60.2 配置Skylark60.2.1 日志60.2.2 功耗干扰控制60.2.3 LLC/MB干扰控制 60 KVM Skylark虚拟机混部-安装和配置 60.1 安装Skylark 60.1.1 硬件要求 处理器架构…

教你手把手使用 MyBatis 框架

目录 MyBatis 是什么? 配置 MyBatis 开发环境 方法一:创建项目时添加依赖 方法二:创建项目后添加依赖 配置连接字符串 配置 MyBatis 中的 XML 路径 业务代码 添加实体类 添加 Service 添加 Controller 增加,删除和修改…

Spring Boot 中的 @Configuration 注解

Spring Boot 中的 Configuration 注解 在 Spring Boot 中,我们经常使用注解来简化代码,提高效率。其中,Configuration 注解是一个非常重要的注解,它用于声明一个类作为 Spring 应用程序上下文的配置类。 在本文中,我…

CentOS-8 - AppStream 错误:为 repo ‘AppStream‘ 下载元数据失败

刚安装的 CentOS8 系统执行yum命令报错 CentOS-8 - AppStream 为 repo AppStream 下载元数据失败 错误:为 repo AppStream 下载元数据失败 原因:系统默认的yum源的问题…

MySQL MHA 单主架构 主从切换 高可用

MHA (Master High AvailabilityManager and tools for MySQL) 目前在MySQL高可用方面是一个相对成熟的解决方案,它是由日本人youshimaton采用Perl语言编写的一个脚本管理工具。目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群必须最少有3台数…

基于java+swing+mysql选课管理系统V2.0

基于javaswingmysql选课管理系统V2.0 一、系统介绍二、功能展示1.项目骨架2.项目内容3.登陆4.注册界面5、主界面6、添加选课8、修改选课 四、其它1.其他系统实现五.获取源码 一、系统介绍 项目类型:Java SE项目(GUI图形界面) 项目名称&…

深入浅出设计模式 - 桥接模式

博主介绍: ✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家✌ Java知识图谱点击链接:体系化学习Java(Java面试专题) 💕💕 感兴趣的同学可以收…

68、基于51单片机语音识别控制小车行走系统设计(程序+原理图+PCB源文件+参考论文+开题报告+任务书+元器件清单等)

摘 要 随着电子工业的发展,具有语音控制功能的小车越来越受到人们的青睐,在人们的日常消费生活中起着不可忽视的作用。目前,声控技术已在很多领域得到使用。 本文对语音控制功能的小车概况做了阐述。在硬件设计方面,本论文以凌阳…

【Java高级语法】(二十)数学运算类:全面讲解Java数学计算的高级类库,BigDecimal、Math、Random、DecimalFormat...~

Java高级语法详解之数学运算类 1️⃣ 概念🔍 数学运算类汇总 2️⃣ 优势和缺点3️⃣ 使用3.1 各数学计算支持类使用案例3.2 Math类解析3.3 BigDecimal类解析3.4 Random类解析3.5 DecimalFormat类解析 4️⃣ 应用场景5️⃣ 使用技巧🌾 总结📑 …

ssm校园防疫管理系统-计算机毕设 附源码80315

ssm校园防疫管理系统 摘 要 2019年12月19号中国武汉发生第一例新冠病毒的到来,大家都在听从政府的号召在居家隔离,不管是在城市还是在乡镇、农村,这引起我的注目,设计一套大学ssm校园防疫管理系统,疫情防疫需要大家共同…

配置了git config --global credential.helper store后,还是弹出输入密码框

使用http协议拉取代码时,每次pull/push都会弹出账号密码框,可以使用git的配置credential.helper来保存每次输入的账号密码到硬盘上,命令git config --global credential.helper store,store表示存到硬盘中,但是按照这样操作后git pull还是弹出密码框,通过git config --list发现…

ESP32(MicroPython) WS2812 RGB流水灯 新版

ESP32(MicroPython) RGB流水灯 新版 本程序相比上一个程序,改用了24灯的环形WS2812模块,数据引脚改用13脚。增加了把相应颜色重复2次(即前半部分和后半部分的灯颜色排列相同)和4次的模式,模式增…

关于element-ui form表单必填项已经选入值并回填了,但是还会报错必填提示

哈喽 大家好啊 今天用el-form表单的时候 发现明明已经选入值并回填了 发现还是会触发必填报错 如图所示: 因为我这里是点击后右边是一个select选项帮助 然后点击确认后回填 经过发现,是因为rule表单触发校验规则 receiverName: [{ required: true, t…

HiveSQL之datediff、date_add、date_sub详解及注意坑点

文章目录 datediff介绍:示例1:正常情况示例2:负值情况注意:使用场景示例总结 date_add介绍: date_sub介绍: 注意: datediff 介绍: datediff语法: datediff(string enddate,string …

2023上半年Java高频面试题库总结(600+java面试真题含答案解析)

不知什么时候起,互联网行业掀起一股寒冬之风,到处都给人一种岌岌可危的寒颤之感,总觉得是要见不到明日的太阳一般,细细想来,最近的行业内的各种状况确实让不少人有此担忧。 从我认识的好几个程序员口中了解到&#xff…

8.0、Java_IO流 - 如何利用缓冲区提高读写效率 ?

8.0、Java_IO流 - 如何利用缓冲区提高读写效率 ? 简单介绍: FileInputStream 通过字节的方式读取文件,适合读取所有类型的文件(图像、视频、文本文件等);Java 也提供了 FileReader 字符流 专门读取文本文件…

linux系统之lvm方式挂载磁盘

目录 一、简介二、创建LVM三、删除 一、简介 LVM:逻辑卷管理(Logical Volume Manager) 它是Linux环境下对磁盘分区进行管理的一种机制。LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。它由ibm公司提出。目的:在原始设…

简单认识Nginx配置块location及rewrite

文章目录 一、location配置块1、分类2、location 常用的匹配规则3、location 优先级:4.location 匹配流程5、location实际使用规则1、直接匹配网站根目录首页2、处理静态文件请求3、通用规则 二、rewrite配置块1、简介2、rewrite跳转实现3、rewrite 执行顺序4.rewri…

数据结构——归并排序和计数排序的介绍

文章目录 归并排序归并排序的思想单趟排序的实现归并排序实现非递归版本的实现特性总结 计数排序计数排序的思想计数排序的实现特性总结 归并排序 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治(Divide and…