并发和并行的概念与应用
一句话说并发的目的:我们想让计算机做的更多,运行的更快。
前言
如果你对以下概念存有疑惑,那么你很适合读这篇总结性文章:
- 并发、并行
- 处理器、CPU、核
- 线程级并发、指令级并行、单指令&多指令并行
整理的可能不够详细,若想进一步了解,请参考CSAPP3.0 P17-P19。
概念
驱动数字计算机进步的两个需求是想要计算机做得更多、想让计算机运行的更快,相关的两个术语便是并行和并发。(这两个术语有好几种说法,不过是一个代称而已,理解真正的意思就好了。)
线程级并发
构建在进程的抽象上。
处理器分类
单处理器
多处理器
多处理器包含多核处理器和超线程处理器。
随着多核处理器和超线程的出现,使得多处理器变得常见。
0x01 多核处理器
“核”正是指的CPU。
0x02 超线程处理器
0x03 Intel Core i7 的四核八线程指什么?
指令级并行
构建在较低的抽象层次上。
现代处理器可以同时执行多条指令的属性称为指令级并行。
- 1978年Intel8086,需要多个(通常是3~10个)时钟周期来执行一条指令。
- 现代处理器可以达到每个时钟周期处理2~4条指令,但每个指令周转时间需要20个时钟周期或更长。主要是因为处理器使用了一些技巧可以同时处理多达100条指令。
单指令、多数据并行
构建在最低层次上。
许多现代处理器拥有特殊的硬件,允许一条指令产生多个可以并行的操作,这种方式称为单指令、多数据,即SIMD并行(Single Instruction Multiple Data)
- 例如,较新的几代Intel和AMD处理器都具有并行地对8位点精度浮点数(C语言的float)做加法的指令
总结
本篇文章用于回顾(retrospect)和总结,避免遗忘。