|
双核与超线程有何异同?
说到这里,大家一定会想起已经出现了2年多的Intel超线程技术。通过超线程技术,一颗物理处理器可以模拟出两颗逻辑处理器,在运行为多线程优化设计的软件时可以获得明显的性能提升。这样的技术和双核相比有哪些不同?要回答这个问题,我们首先要弄清楚线程和进程的关系。
线程(Thread)是操作系统从处理器接受时间片的基本单元,它代表着代码执行的流程。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。从逻辑角度来看,多线程的意义在于一个应用程序中有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,也不会为每个线程分配和管理独立的资源。
进程(Process)是装入内存,且准备执行的程序。该程序运行在独立的虚拟地址空间内,且包含代码、数据及进程可看到和使用的操作系统资源(例如文件和管道)。进程包含一个或者多个运行在其上下文环境内的线程。虽然每个进程启动时只有一个线程,但在程序运行过程中可创建多个独立执行的线程。
总的来说,线程与进程的最大区别就是系统资源的占用方式,多个不同线程共享相同的系统资源,而多个不同进程则拥有各自独立的系统资源。超线程技术所针对的就是线程一级的部分。由于Pentium 4处理器具备超常的处理流水线级数(Prescott内核高达31级,而Pentium-M和Athlon 64仅为12级),使得多个线程并发运行成为可能,在系统资源有限的情况下,通过多线程并发运行共享系统资源来提高应用程序的运行效率。或者说,超线程技术所虚拟出来的两颗逻辑处理器,在运算时是共享系统资源的。在某些时候,超线程技术会带来些许的负面影响,造成部分程序的运行效率下降,这是因为某些软件并没有采用多线程优化的编程方式,处理器执行调度时不但无法取得并发运行的效率提升,还要为此付出额外的时间去判断和安排。
Intel将超线程技术作为从单核向双核转变道路中的中间步骤,并且积极鼓励软件开发人员进行这种基于线程的编程优化,并取得了明显的成就。AMD则认为超线程技术是一种过渡产物,最终会被双核所取代,将来也会不复存在。
双核则主要针对的是多进程的应用。双核处理器具备两个独立的物理核心,每个核心都可以拥有独立的一二级缓存、寄存器、运算单元,并且具备响应应用程序请求的协作调度控制能力,可以使两个独立进程(应用程序)互不干扰地运行,而不出现明显的性能下降。
|