CPU和GPU 有什么差别
原文链接:https://www.cnblogs.com/biglucky/p/4223565.html
CPU:基于低延时的设计
GPU:基于大吞吐量的设计
二者差别 Cache, local memory: CPU > GPU
Threads(线程数): GPU > CPU
Registers: GPU > CPU
多寄存器可以支持非常多的Thread,thread需要用到register,thread数目大,register也必须得跟着很大才行。
SIMD Unit(单指令多数据流,以同步方式,在同一时间内执行同一条指令): GPU > CPU。
相关概念
动态随机存取存储器:dram( Dynamic Random Access Memory)最为常见的系统内存。
DRAM 只能将数据zd保持很短的时间。为了保持数据,
DRAM使用电容存储,所以必须内隔一段时间刷新(refresh)一次,
如果存储单元没有被刷新,存储的信息就会容丢失。 (关机就会丢失数据)
# 线程:thread
计算机中执行的程序叫做"进程"(Process) ,所谓"线程"(Thread),是"进程"中某个单一顺序的控制流。
线程是进程中的实体,一个进程可以拥有多个线程(也可以只拥有一个线程),一个线程必须有一个父进程。
线程不拥有系统资源,只有运行必须的一些数据结构;它与父进程的其它线程共享该进程所拥有的全部资源。
线程可以创建和撤消线程,从而实现程序的并发执行。一般,线程具有就绪、阻塞和运行三种基本状态
高速缓存:cache 简称缓存
原始意义是指访问速度比一般随机存取存储器(RAM)快的一种RAM,
通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术。
提供“缓存”的目的是为了让数据访问的速度适应CPU的处理速度,
其基于的原理是内存中“程序执行与数据访问的局域性行为”,
即一定程序执行时间和空间内,被访问的代码集中于一部分。
为了充分发挥缓存的作用,不仅依靠“暂存刚刚访问过的数据”,还要使用硬件实现的指令预测与数据预取技术——
尽可能把将要使用的数据预先从内存中取到缓存里。
算术逻辑单元 ALU Arithmetic Logic Unit
计算密集型 Compute-intensive
单指令多数据 SIMD(Single Instruction Multiple Data)
GPU 适用于什么类型的程序
01 计算密集型
02 易于并行的程序