多核 vs 多线程:合适的才是最好的

【作者】杨碧玲

 

多核与多线程都是提升处理器处理性能的重要手段,如今多核处理器随处可见,多线程处理器似乎鲜有提及,其实多线程并不是一个新鲜的概念,在很多地方也有广泛的应用。到底多核处理器与多线程处理两者之间有何差异?各有什么优势?哪种技术更能满足未来需求的发展?

 

 

 

随着应用需求变得越来越复杂,对处理器计算能力的要求也大大提高,作为提升处理器计算能力的一种重要技术,多核架构在处理器中应用得越来越普遍,从台式机到平板电脑、智能手机等便携设备,到处都可以看到多核处理器的身影。如今双核处理器已成为市场主流,而四核、八核甚至更多核产品的开发也正在进行中,一方面国内外主流的半导体公司都争先恐后地推出自己的多核处理器产品,另一方面处理器也在往核数越来越多的方向发展。


在多核技术被炒得火热的背后,同为提升处理器计算能力方法的多线程技术却似乎不被人关注。实际上在现实中,多线程处理器的应用早于多核,早在十年前,英特尔就推出了超线程(即双线程)技术,通过利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少CPU的闲置时间和提高CPU的运行效率。随着芯片设计技术的进步,目前市场上也出现了多种先进的多线程架构处理器。


那么这两种技术有什么不同,对于下游系统厂商来说应该如何选择?未来哪一种技术会成为主导,以及会有怎样的发展趋势呢?

 

 

技术与性能比较


既然同为提升处理器性能的技术手段,它们之间又有什么差异?简单地说,多核处理器是集成了多个处理器核心,其可同时执行的任务数是单核处理器的数倍,从而提高处理器的并行性能,而多线程处理器是在单核中加入并行执行架构以发挥核的最大效能来提高处理性能。从芯片设计的角度来看,多线程处理器在设计时需要对内核的微架构进行调整,开发难度比多核处理器要困难,因为多核只是需要处理核与核之间的关联,而多线程需要对核的内部架构进行调整。


深圳中微电科技有限公司首席技术官梅思行从资源共享方面指出两者的差别,“多核处理器与多线程处理器的主要区别在于:多核的硬件资源是独立而且不可以共享的,而多线程处理器在同一核内的线程之间可以进行资源的共享。”梅思行说道,“其实多线程技术在GPU上用得是非常多的,它的好处在于一是资源共享,二是延迟屏蔽。”正是因为有这两个突出的优点,多线程处理器在执行效率上有很大的优势。


MIPS中国区市场总监费浙平也认为多线程技术效率更高,另外多线程处理器也比多核更节省功耗。他指出,对于多核处理器每多增加一个核,功耗除了会相应增加一倍外,再加上额外的开销,总功耗就会有2倍以上的增加,但性能却没有成倍的增加,所以也可以说多核处理器是以功耗的增加来换取性能的提升。而多线程处理器因为在硬件面积上相比单线程处理器并不是成倍的增加,所以功耗也不是成倍增加。


不过ARM中国区总经理吴雄昂却不认同多核处理器效率低的观点,他认为多核与多线程技术都是利用应用的平行性,但在绝大部分的应用处理上多核处理器更有效率,因此才得到主流操作系统与软件的支持。而多线程技术只有在一些特定的实时数据处理任务上比较有效率, 如大量的平行包处理,但这类应用也需要多核。他举例道:“多核就好比是两辆车,任务好比是人,一人一车去不同的地方;多线程好比是拼车,因为要去较远的不同地方,效率反而不好。”因此他认为多线程在手机、PC等应用上没有优势,甚至很多高端应用上多线程其他开销反而会降低了性能。


尽管两种技术看上去截然不同,但芯原微电子中国业务和技术支持高级总监汪洋却认为,实际上多核技术也是一种多线程技术,只是在空间上静态划分了主要的硬件处理资源。多线程技术是在开发指令级并行性的基础上进一步开发线程级并行性,最大限度地利用处理器内部执行资源并具有最大的灵活性,但单核多线程处理器设计实现难度也最大。相对多线程架构来说,多核架构比较灵活,不管是“同构多核”还是“异构多核”,可在设计验证简化和应用适应性等多方面进行调整和折中,但其资源利用率相对多线程来说比较低。


既然两者都是通过采用并行计算的方式来提升处理器性能的,那么多核处理器相对单核处理器、多线程相对单线程性能的提升是怎样的关系,在功耗、成本方面又有什么影响?汪洋表示,不能简单地说双核就会有一倍的提高,四核就会有三倍的提高,实际的提升还要取决于所承载的应用以及多核架构下所采用的片上通信技术、存储器共享技术、操作系统调度和软件开发等因素,多核处理器相对于单核处理器的优势是显而易见的。在成本上,由于多个核都集成在同一个芯片内,可以共享资源并提高核间通信效率,而单核处理器为了达到同样的性能,必然要通过提高指令级并行度和时钟频率来提高处理性能,这将增加单核处理器的设计验证成本,并且频率提升也将带来功耗的增加。另外,多核处理器的工作频率和工作电压可以比单核处理器低,再结合动态管理各个核心处理器功耗的方法,其在功耗控制上会更有优势。


“在日常多任务应用使用性能上双核可比单核提高1.8~1.9倍,而在功耗上增加远低于2倍。这是因为我们日常应用有很多平行性的多任务,比如听音乐同时上网,或收发电子邮件等,这时多核非常有效。因为同时对应不同的任务时,每个核可以降频或关闭,因此功耗在同等处理能力上更低。”吴雄昂说道。为了进一步降低多核处理器的功耗,ARM去年底还推出了异构大小核(big.LITTLE)双A15/A7产品,让手机、平板电脑等在普通应用时只开A7,在大型应用时转开A15,这样在保持低功耗的同时具有PC级别的高处理能力。


一位业内人士也表示,增加一个内核其成本相对芯片总成本来说不算增加很多,因为芯片的成本涉及到封装、授权费、晶圆制造等等。如果芯片成本是十多美元的话,增加一个核产生的成本小于1美元。


可以这么说,多核处理器是以硬件规模增加换取性能的提高,那么多线程呢?费浙平指出,单核双线程处理器相对单核单线程来说,硬件复杂度仅增加20%~30%,而性能提升的多少于应用和软件的支持,在最差的情况下,可能会完全没有提升;而在最好的情况下,性能可以提升80%左右。“多线程和多核处理器相同的地方就是,性能的提升都需要软件的配合,主要是操作系统的支持,若操作系统是支持并行处理的话,那么就能支持多核或者多线程。性能的提升不是常数,取决于并行量的大小。”费浙平说道。


如果对由多个单线程独享内核组成的多核处理器与一个多线程内核进行比较,各自又有什么优势?汪洋认为,多核处理器的设计难度和周期要占优,功耗控制也更为灵活,并且深亚微米工艺下线延时大于门延时对其负面影响相对小些,其基本处理器单元的时钟频率容易做得更快;而多线程处理器优势是资源利用率较高,同时兼顾了指令并行度和线程并行度。


“多核处理器的优势在于性能的稳定性和核内设计的简单性,而多线程处理器的优势在于功耗、成本和伸缩性。”梅思行说道,这里的伸缩性指的是核的可扩展性。虽然单核多线程相对单核单线程来说开发难度大,但是从整体来看,多线程处理器的核扩展能力要优于多核处理器。“例如拿我们的单核四线程MVP与一个四核处理器来比较,我们的单核里面就包含了四个线程,对操作系统来说相当于SMP的四核;而对于四核处理器需要处理四个核之间的关系,复杂度会大大提高。”他说道。

 

 

对系统开发人员来说开发难度一致


由于多线程处理器在硬件架构上复杂度大于多核处理器,那么对于整机系统开发厂商来说,是不是基于多线程处理器的开发难度会大于多核呢?其实不然。费浙平指出,对系统开发人员来说,基于两种不同技术的开发难度都是一样的,他们都不需要关心底层处理器是多核还是多线程的,只要操作系统支持并行处理,那么在该操作系统上进行的开发并没有什么差别,唯一不同的地方可能就只是总线接口的不同而已。“其实也正是因为操作系统或软件大型化、复杂化以及对并行处理的支持,多核、多线程等技术才有了用武之地。就像在消费电子领域,Android 4.0的出现为推动多核技术发展起了非常大的作用。”他说道。


不过,在要求操作系统支持并行处理的同时,整体系统的软硬件开发人员也需要适应这种多线程处理器或多核处理器的开发要求。对于板级硬件工程师来说,以前单核处理器通过加大主频来提高性能,随之而来的是功耗和散热的问题,而采用并行计算技术所带来的散热问题将减轻,硬件设计难度会降低。但是对于软件工程师来说,需要学习新的编程模式以实现多线程、多任务调度,通过创立多线程、并行调试和各个线程或内核间性能调度优化等方式,更好地控制和安排处理器资源并提高程序效率。所以,并行编程和调试对软件厂商的挑战是存在的。尽可能地充分利用那些多线程编程的开发工具,可在一定程度上帮助开发人员设计出高效并可靠的多线程处理程序。


梅思行也表示:“我们的硬件设计已经完全做到让操作系统把多线程看成是SMP多核,只需要操作系统有处理多核的机制就同样能处理多线程。对系统开发人员来说,根本就不用关心处理器到底是多核还是多线程。至于选择哪种技术更为合适,如果是对成本和功耗比较敏感的话,多线程处理器则是最优的选择。”


至于系统开发人员是该选择多核还是多线程处理器,费浙平认为,主要看其关注的点,如果着重在主频和绝对性能的提高,则多核优于多线程,如果着重在效率和功耗方面,则多线程优于多核。

 

 

多核+多线程:满足未来发展需求


由于多核与多线程处理器都是采用并行技算技术,在数据并发量大以及数据实时处理的应用上如云计算、服务器系统、高速率无线互联网应用等都是非常有效的。特别在服务器系统中,一般也都是多核与多线程结合使用。


而在消费电子领域,由于ARM的推动,多核处理器已经深入人心,而多线程技术却似乎还没有用武之地。对于智能手机等消费类电子产品来说,因为目前其并行计算量并不大,双核或者说四核处理器已经完全够用,那么是不是就没有必要去发展多线程技术?因为毕竟多线程技术只有在网络服务器等并发量相当大的设备中才会用得到。不过随着移动设备中3D地图、3D视频等多媒体应用越来越普遍,对CPU和GPU的计算能力提出非常大的要求。如果只是单纯通过提高CPU核数或GPU线程数来提高性能的话,这样编程的复杂度将会非常高,功耗也会很大。梅思行表示,利用多核加多线程技术便能很好地解决这个问题。“我们的MVP多线程处理器是通过充分利用多核CPU和通用GPU这两大处理器技术的相似点而研发出来的,与之前一些多线程处理器最大的不同是MVP的多线程可动态地用于CPU和GPU,而其他多线程只能是为CPU使用。”梅思行说道,“其实多线程技术非常适合在对CPU和GPU都有高要求的场合使用,而未来移动终端、云终端中对计算能力要求越来越高的应用,必将推动着多核多线程处理器的发展。”


其实无论在网络或服务器领域还是在消费产品领域,对性能提升的要求是无止境的。而要满足这种快速增长的需求是远非单单靠增加处理器核数所能及的。首先,多核处理器中核数并不是越多越好,过多的内核将会引入更多的延迟,并降低整体时钟频率,而过度复杂的核间通信机制和总线传输管理也会影响多核系统性能。尤其在内核超过一定数量后,软件可编程性问题也将更为突出;再者考虑到功耗及成本,核数也不能无限制增加。


“多核与多线程技术不是完全对立的,而是某种程度上相辅相成的。”汪洋说道,“多核技术也可在其集成的单核处理器上采用多线程技术来提高单核资源利用率,从而弥补多核架构资源利用率低的缺点。”据透露,芯原也在规划多线程处理器的开发,除了开发针对高性能、多需求的应用场景的多核解决方案,为提高基本单核的处理能力,芯原也将在核中加入多线程技术。


“在消费电子领域,除多核技术外,多线程技术也是非常有必要的。因为多线程处理器在功耗和效率方面优于多核处理器。我们知道功耗的减少对便携消费电子产品来说是非常重要的。”费浙平说道,“从性能、成本、功耗等各方面综合考虑,我觉得未来发展应该是两者同时共存和结合使用,即多核多线程将会是未来处理器发展的最佳方式。”
 

 

(本文原文刊载于《集成电路应用》杂志2012年第6期,转载请注明出处。)

阅读更多

没有更多推荐了,返回首页