以下是参考2009年出版的书比较的,不要忘了时代在进步哦
1、线程
CPU
一个核心通常在一个时刻只能运行一个线程指令,CPU的多线程机制通过操作系统提供的API实现,是一种软件粗粒度多线程。当一个线程中断,或者等待某种资源时,操作系统就保存当前线程的上下文,并装载另外一个线程的上下文。所以,切换线程的代价十分昂贵。通常要数百个时钟周期。
超线程可以将核心虚拟成多个核心,但每个虚拟核心在一个时刻也只能运行一个线程。
GPU
轻量级线程,零开销线程切换,因此,当线程因为访问片外存储器或同步指令开始等待时,可以即时切换到另外一个处于就绪态的线程,用计算来隐藏延迟。所以当计算密度比较高时,延迟就可以被隐藏。
2、核心
CPU
2-8核心,每个核心3-6执行流水线,高指令并行技术,如:超标量超深流水线,乱序执行,预测执行,以及大容量缓存,SSE、3Dnow!一类数据级并行技术。
GPU
1-30个流多处理器,每个流多处理器包含8个1D流处理器的SIMD处理器。多流处理器间粗粒度任务级或数据并行,流多处理器内细粒度数据并行。
3、外部存储器
GT200的显存带宽:140GB/s 是同期CPU的内存带宽五倍
4、缓存
CPU
用于减小访存延迟和节约带宽,在多线程环境下会发生失效反应:每次线程上下文切换后,需要重新建立缓存上下文,一次缓存失效的代价是几十到上百个时钟周期。
同时为了实现缓存与内存中数据的一致性,还需要复杂的逻辑进行控制。
GPU
没有复杂的缓存体系和替换机制,缓存是只读的,没有缓存一致性问题,缓存主要用于过滤对存储器控制器的请求,减少对显存的访问。所以缓存的主要功能是节约显存带宽,而不是减小访存延迟。
总结:GPU适合用于高密度数据运算,CPU擅长复杂逻辑和事物处理等串行计算。
参考书籍:《GPU 高性能运算之CUDA》中国水利水电出版社