读CSAPP,增进了对并发与并行的理解,总结如下

并发:是一个通用概念,指一个同时有多个活动的系统。

并行:利用各种并发的机制使系统运行得更快。

从不同的计算机系统抽象层次上,并行可以有以下几重实现:

1 线程级并行

引入线程,可以在一个进程内执行多个控制流。单处理器的并发是通过共享时间模拟出来的。

多核处理器,多个CPU集成到一个芯片上,每个核有自己的L1、L2高速缓存,而共享更高层次的缓存。

超线程处理器,每个CPU内部,执行多个控制流。实现的机制是CPU的某些硬件有多个备份,如程序计数器和寄存器文件,其他硬件部分只有一份(浮点数算术运算单元等)。

2 指令及并行

超标量:在流水线中,每个指令被分解为不同的步骤,将处理器硬件组织成一系列的阶段,每个阶段执行一个步骤。这些阶段可以并行操作,执行不同指令的不同部分。

超标量操作可以达到接近于一个时钟周期执行一条指令的速度。现代处理器一般都支持超标量。

3 单指令多数据(SIMD)并行

一些现代处理器拥有特殊的硬件,通过一条指令可以并行计算多份数据。

比如较新的Intel和AMD处理器可以并行对8对float进行加法运算;这种SIMD指令多是为了提高处理图像、视频等数据的处理速度。