并发和并行的区别_并行在计算机系统多个抽象层次上的运用

3aa394b7f6e54021675e901b2a1dd80b.png

在数字计算机的整个发展历程中,有两个需求是驱动进步的持续动力:

  • 计算得更多
  • 计算得更快

当处理器能够同时做更多事情时,这两个因素都会改进。

并发(Concurrency)是一个通用的概念,指一个同时具有多个活动的系统,而并行(Parallelism)指的是用并发来使一个系统运行得更快。并行可以在计算机系统的多个抽象层次上运用。

并发和并行的区别

1、线程级并发

构建在进程这个抽象上,能够设计出同时有多个程序执行的系统,这就导致了并发。使用线程,能够在一个进程中执行多个控制流。自20世纪60年代出现时间共享,计算机系统中就开始有了对并发执行的支持。传统意义上,这种并发执行只是模拟出来的,通过使一台计算机在它正在执行的进程间快速切换来实现的,就好比一个杂耍艺人保持多个球在空中飞舞一样。这种并发形式允许多个用户同时与系统交互。如当许多人要从一个Web服务器获取页面时。在以前,即使处理器必须在多个任务间切换,大多数实际的计算也都是由一个处理器来完成的。这种配置称为单处理器系统。

d5d689250869484e9871ecc4a8063aba.png

当构建一个由单操作系统内核控制的多处理器组成的系统时,就得到一个多处理器系统。

多核处理器是将多个CPU集成到一个集成电路芯片上。下图是一个典型多核处理器的组织结构,其中微处理器芯片有4个CPU核,每个核都有自己的L1和L2高速缓存,其中的L1高速缓存分为两个部分:一个保存最近取到的指令,另一个存放数据。这些核共享更高层次的高速缓存,以及到主存的接口。

485ddce2a079632616333d68674163e3.png

超线程,也称为同时多线程(simultaneous multi-threading),是一项允许一个CPU执行多个控制流的技术。它涉及CPU某些硬件有多个备份,如程序计数器和寄存器文件,而其他的硬件部分只有一份,如执行浮点算术运算的单元。常规的处理器需要大约20000个时钟周期做不同线程间的转换,而超线程的处理器可以在单个周期的基础上决定要执行哪一个线程。这使得CPU能够更好地利用它的处理资源。比如假设一个线程必须等到某些数据被装载到高速缓存中,那CPU就可以继续去执行另一个线程。如Intel Core i7处理器可以让每个核执行两个线程,所以一个4核的系统实际上可以并行地执行8个线程。

多处理器的使用可以从两方面提高系统性能。首先它减少了在执行多个任务时模拟并发的需要,其次它可以使应用程序运行得更快。当然这必须要求程序是以多线程方式来书写的,这些线程可以并行地高效执行。

2、指令级并发

在较低的抽象层次上,现代处理器可以同时执行多条指令的属性称为指令级并行。早期的微处理器需要多个(3~10个)时钟周期来执行一条指令。而现代处理器可以保持每个时钟周期2~4天指令的执行速率。其实每条指令从开始到结束需要长得多的时间,大约20个或者更多周期,但是处理器使用了非常多的聪明技巧来同时处理多达100条指令。

如果处理器可以达到比一个周期一条指令更快的执行速率,就称之为超标量(super-scalar)处理器。现代处理器都支持超标量操作。

8a5fa407b7059066d004152520e2fab1.png

3、单指令多数据并行

在最低层次上,许多现代处理器拥有特殊的硬件,允许一条指令产生多个可以并行执行的操作,这种方式称为单指令多数据,即SIMD并行。

提供这些SIMD指令多是为了提高处理影像、声音和视频数据应用的执行速度。虽然有些编译器会试图从C程序中自动抽取SIMD并行性,但是更可靠的方法是用编译器支持的特殊的向量数据类型来写程序,如GCC就支持向量数据类型。

14cefdd57319c99da617a3ed7442c86c.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值