当前位置: 首页 > news >正文

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

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:
在这里插入图片描述

相关文章:

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

1. CPU vs GPU 大家可以简单的将CPU理解为学识渊博的教授,什么都精通;而GPU则是一堆小学生,只会简单的算数运算。可即使教授再神通广大,也不能一秒钟内计算出500次加减法。因此,对简单重复的计算来说,单单一…...

PIC18 DataRAM 笔记

1.疑似最糟糕的英文技术文档段落 Since up to 16 registers may share the same low-order address, the user must always be careful to ensure that the proper bank is selected before performing a data read or write. For example, writing what should be program dat…...

【FFMPEG】AVFilter使用流程

流程图 核心类 AVFilterGraph ⽤于统合这整个滤波过程的结构体 AVFilter 滤波器,滤波器的实现是通过AVFilter以及位于其下的结构体/函数来维护的 AVFilterContext ⼀个滤波器实例,即使是同⼀个滤波器,但是在进⾏实际的滤波时,也…...

爬虫入门06——了解cookie和session

爬虫入门06——了解cookie和session (1)什么是cookie,有什么作用 http请求是无状态的请求协议,不会记住用户的状态和信息,也不清楚你在这之前访问过什么而当网站需要记录用户是否登录时,就需要在用户登录…...

Ubuntu 的移动梦醒了

老实讲,移动版 Ubuntu 在手机、平板上的发展自始至终可能都没有达到过 Canonical 的期望,既然如此,不再勉为其难地坚持下去,或许才是更加明智的做法。 时至今日,官方显然也意识到了这一点,在早些时候发布的…...

RabbitMQ的集群

新建一个虚拟机,重新安装一个RabbitMQ,不会安装的可以看下面的连接: 在Linux中安装RabbitMQ_流殇꧂的博客-CSDN博客 1.修改/etc/hosts映射文件,两台虚拟机都需要修改 vim /etc/hosts 127.0.0.1 node1 localhost.localdomain localhost4 localhost4.localdomain4 ::1 node1 loca…...

超长上下文处理:基于Transformer上下文处理常见方法梳理

原文链接:芝士AI吃鱼 目前已经采用多种方法来增加Transformer的上下文长度,主要侧重于缓解注意力计算的二次复杂度。 例如,Transformer-XL通过缓存先前的上下文,并允许随着层数的增加线性扩展上下文。Longformer采用了一种注意力…...

ChatGPT爆火 但生成式AI并非全新产物

以ChatGPT、Midjourney 为代表的 AIGC 产品横空出世,在全球掀起新一轮的 AI 技术变革新浪潮。近二十年来,我们见证了从「机器学习」算法到「深度学习」,再到「基础模型」的发展。随着数据量大规模膨胀,可扩展的算力,再…...

深度学习循环神经网络

循环神经网络(Recurrent Neural Network,RNN)是一种广泛应用于序列数据、自然语言处理等领域的神经网络。与传统的前馈神经网络不同,循环神经网络的输入不仅取决于当前输入,还取决于之前的状态。这使得循环神经网络可以…...

如何规范的设计数据库表

前言对于后端开发同学来说,访问数据库,是代码中必不可少的一个环节。系统中收集到用户的核心数据,为了安全性,我们一般会存储到数据库,比如:mysql,oracle等。后端开发的日常工作,需要…...

【CSS】跳动文字

文章目录 效果展示代码实现 效果展示 代码实现 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>一颗不甘坠落的流星</title></head><style type"text/css">/* 遮罩盒子样式 */#mask {/* 设…...

arm海思启动udev的错误

近日在配置HI3531D的文件时发现错误 random: udevd: uninitialized urandom read (16 bytes read) random: udevd: uninitialized urandom read (16 bytes read)udev 是一个为你的计算机提供设备事件的 Linux 子系统。通俗来讲就是&#xff0c;当你的计算机上插入了像网卡、外…...

网络协议与攻击模拟-15-DNS协议

DNS 协议 1、了解域名结构 2、 DNS 查询过程 3、在 Windows server 上部署 DNS 4、分析流量 实施 DNS 欺骗 再分析 一、 DNS 1、概念 ● DNS ( domain name system &#xff09;域名系统&#xff0c;作为将域名的 IP 地址的相互映射关系存放在一个分布式的数据库&#xff0…...

ChatGPT将改变教育,而不是摧毁它

01 学校和大学的反应迅速而果断 就在 OpenAI 于 2022 年 11月下旬发布ChatGPT 的几天后&#xff0c;该聊天机器人被广泛谴责为一种免费的论文写作、应试工具&#xff0c;它很容易在作业中作弊。 美国第二大学区洛杉矶联合大学立即阻止了OpenAI网站从其学校网络访问。其他人很…...

springboot在线考试

在线考试系统的开发运用java技术&#xff0c;MIS的总体思想&#xff0c;以及MYSQL等技术的支持下共同完成了该系统的开发&#xff0c;实现了在线考试管理的信息化&#xff0c;使用户体验到更优秀的在线考试管理&#xff0c;管理员管理操作将更加方便&#xff0c;实现目标....

C国演义 [第三章]

第三章 组合分析步骤递归函数的返回值和参数递归结束的条件单层逻辑 组合总和 III 组合 力扣链接 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;n 4, k 2 输出&#xff1…...

数字化时代,企业的数据指标体系

在社会节奏越来越快&#xff0c;处理的信息量越来越大的今天&#xff0c;传统的经营管理模式已经适应不了当下的环境。而由经验、情感组成的业务调整以及决策能力不再能正确指导企业走在正确的方向上&#xff0c;所以数据就成为了企业新的业务优化调整和支撑企业高层管理进行决…...

三分钟了解 RocketMQ消息队列

文章目录 基本概念详细介绍主题&#xff08;Topic&#xff09;消息类型&#xff08;MessageType&#xff09;消息队列&#xff08;MessageQueue&#xff09;消息&#xff08;Message&#xff09;消息视图&#xff08;MessageView&#xff09;消息标签&#xff08;MessageTag&am…...

golang redis第三方库github.com/go-redis/redis/v8实践

Redis基本数据类型代码示例# 这里示例使用 go-redis v8 &#xff0c;不过 go-redis latest 是 v9 安装v8&#xff1a;go get github.com/go-redis/redis/v8 Redis 5 种基本数据类型&#xff1a; string 字符串类型&#xff1b;list列表类型&#xff1b;hash哈希表类型&#…...

校园网WiFi IPv6免流上网

ipv6的介绍 IPv6是国际协议的最新版本&#xff0c;用它来取代IPv4主要是为了解决IPv4网络地址枯竭的问题&#xff0c;也在其他很多方面对IPv4有所改进&#xff0c;比如网络的速度和安全性。 IPv4是一个32位的地址&#xff0c;随着用户的增加在2011年国家报道说IPv4的网络地址即…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...