多核与多处理器
多核()
多核处理器就是指单个 CPU 中有多个可执行单元。
如下图所示,单个 CPU 中有两套可执行单元。
多处理器()
多处理器系统则是一个拥有多个 CPU 的系统。每个 CPU 中也可能有多个核。
如下图所示,一个系统中拥有
个处理器,即
个CPU。
并发与并行
并发()
并发执行的定义是,多个程序在一段重叠的时间段中开始、运行与结束,但这些程序并没有在任何一个时刻同时在执行。如下图的左半部分图片所示,同一时刻只有一个程序在执行。
因此我们常听到的 "两个任务或两个程序" 并发执行这样的说法,并不意味着这两个程序在某个时刻同时执行。
并行()
并行执行,则意味着在同一个时刻,存在两个以上任务在同时运行。如下图的右半部分所示,同一时刻有多个任务在同时执行。
其实可以把并行理解为平行,避免与并发概念发生混淆。
这里需要注意,并发执行的关键点在于多个程序在一段时间内
同时执行,但并行执行的关键点在于多个任务在同一时刻点
同时执行。
接下来我们再仔细探讨一下并发与并行之间更深刻的关系。
并行,但不并发
如果一个系统仅支持平行,不支持并发,则意味着必须执行完程序
才能执行程序
,但执行程序
时,其中的各个子任务可以在同一时刻同时执行。
并发,但不并行
并发但不并行,则意味着执行程序
时,可以突然中断执行程序
转去执行程序
,执行完程序
后再去执行
。
并发且并发
并发且并行意味着执行程序
和
时不仅可以互相打断,还可以在同一时刻同时执行程序
和
。
超线程技术
超线程技术概念
- 超线程技术(
)是公司提出的一种提高 CPU 性能的技术,可将一个物理 CPU 当作两个逻辑 CPU 使用,同时执行多个线程,从而提高效率。
- 超线程处理器内部的两个逻辑处理器共享一组处理器执行单元,运算能力提高 30%。
- 超线程技术可将处理器内部的闲置资源利用起来,当并行执行两个线程时,负责处理第二个线程的逻辑处理器,仅使用运行第一个线程的处理器不使用的资源。
超线程技术执行单线程
执行单个线程时,超线程技术的效果反而下降。
因为打开超线程后,处理器内部缓存被划分为几个区域,互相共享内部资源,单个子系统性能反而下降。
为了更好地说明超线程技术的特性,我们将双核处理器与支持超线程技术的单核处理器进行对比。
双核处理器概念
双核处理器是在一个处理器芯片上集成了两个 “物理的” 运算核心。
超线程单核处理器与双核处理器的区别
- 开启了超线程技术的单核处理器与双核处理器在操作系统中都被识别为两个处理器,二者的区别在于,前者是两个 “逻辑” 处理器,后者是两个 “物理” 处理器。
- 超线程的逻辑处理器并没有独立的执行单元、整数单元、寄存器甚至缓存,它们在运行时仍需要共用执行单元、缓存和总线接口。
- 执行多线程时,超线程的两个处理器交替工作,当争用某资源时,一个线程必须暂停并让出资源。
参考资料
- multicore-and-multiprocessor
- concurrency-and-parallelism-1
- concurrency-and-parallelism-2
- Hyper-threading-1
- Hyper-threading-2