论文部分内容阅读
从英特尔最早提供超线程微处理器开始,我们已经目睹了Sun的酷线程以及如今的多线程微处理器。那么,线程究竟是什么?对于业界,对于计算领域,多线程究竟意味着什么?
对于微处理器来说,不仅多核,多线程也可能是其未来的发展方向之一。
日前,Sun公司发布了该公司最新的商用微处理器UltraSPARC T2。这款产品拥有8个内核,每个内核包含8个线程,由于每个线程都能运行自己的操作系统,因此该处理器在单芯片上提供了一个巨大的64路系统。对于这一产品,业界和用户均给予了高度关注。
“怪兽”现身
Sun公司声称,UltraSPARC T2是世界上最快的通用微处理器,每个内核能够执行8个线程,整个8核芯片能够执行64个线程。UltraSPARC T2采用65nm制造工艺,功耗80W。市场观察人士认为,UltraSPARC T2处理器搭建的服务器将会在VoIP、IPTV和Web2.0等领域有广泛的应用。另外,该处理器的成功发售也会带动Sun公司Solaris操作系统和Java语言的推广。据悉,Sun公司会在2008年下半年可以推出16核心的UltraSPARC T2处理器,届时将可以使之性能翻倍。
就目前而言,UltraSPARC T2拥有8核、每核8个线程。也就是说,同时间最多可以有64个进程在处理,当某一个进程工作完成后,如果后面没有其他的工作,就可以自动将排于其他线程位置的待处理工作进行转移,以维持平行线程的整体利用效率,从而更快地完成工作。在这点上,UltraSPARC T2与IBM POWER5颇有共同之处。
加州伯克利大学计算机科学客座教授Dave Patterson指出,“我们正处于计算科学的历史转折点上,从连续性处理转向多核、多线程设计。”他认为,UltraSPARC T2是业界第一款将多个系统的主要功能,包括虚拟化、信号处理、网络连接、安全特性、浮点单元和加速内存访存等诸多特性都集于一身的微处理器。
正因为将所有的功能单元都集成在一块硅芯片上,因此UltraSPARC T2在降低成本的同时,还提高了微处理器的性能、可靠性和功效,使之成为从网络设备到高性能计算或存储器件等多种应用的上佳选择。
作为一种通用型处理器,UltraSPARC T2为具有海量线程特性的开源操作系统Solaris和其他实时操作系统都提供了支持,因此也被认为将会帮助众多的开发人员寻觅到新的市场,为生产力的再提高开辟新的途径。
英特尔、AMD不断由双核向多核演进,加之Sun、IBM持续研发多核产品,在开启了多核多线程时代的同时,却又引发出新的问题,即软件授权问题。
在双核、多线程的系统环境下,虽然多线程也能起到加速作用,但是由于线程的加速效果不如CPU核心那样明显,因此一般不会出现由于线程数导致的软件授权问题。然而,在面对UltraSPARC T2这样的“怪物级”微处理器时,由于其每个线程都能运行自己的操作系统,因此情况可能会发生一些变化。然而究竟会出现什么样的变化,现在仍不得而知。
前景看好
从历史发展的经验来看,某个硬件体系的成功与否,其实往往不单单取决于硬件本身。对于微处理器来说,要达到多线程技术,操作系统的设计和架构是决定性的因素。
Sun在多线程技术方面的核心就是Solaris操作系统。据有关资料显示,Sun公司Solaris的新版本最多可以支持256个核心,而最多线程数更可以达到2048个。Sun的多线程技术与方法,始于Solaris 10操作系统,它将每个线程视为一个虚拟的CPU,这样就极大地提升了IT效率,并且使得能耗得到了有效的降低。业界一般都认为,Sun公司的Solaris从第9版到第10版时有了很大的突破,其中最重要的原因之一就是多线程技术。
目前,用户的各种应用运行在Solaris的环境平台上,也能够很好地得到多线程技术的支持。同时,一些专家认为,UltraSPARC T2二进制的设计,使它能够兼容用户原有的软硬件系统,全面保护用户的投资。
在目前业内疾呼“环保绿色”的大环境下,UltraSPARC T2也为环保人士交口称颂:Sun将其酷线程芯片多线程技术扩展到每线程功耗低于2瓦的UltraSPARC T2处理器,仅相当于同类产品功耗的1/10到1/30,从而为绿色计算树立了良好的榜样,并且将低功耗与双倍的内核数量、16倍的线程数量、4倍的吞吐量完美地结合在一起。这样的好处是,UltraSPARC T2将为系统制造商和广大用户节省大量的资金,而它的设计方式也可能会为竞争对手效仿,从而在业界掀起多核多线程的新浪潮。
另外,还有人在担心多线程下原有的应用程序是否会出现运行效率低下的问题。其实,现在的Java和.Net程序越来越多,这两种程序本身就原生支持多线程执行,因此它们会在多线程的系统下运行得更好。早期的C 则是采用变通方式(用API提供多线程能力,并在撰写程序时呼叫API)支持多线程执行,不过现在纯粹采用C 编写程序的情况越来越少,因此这一点不足为虑。
链接:什么是线程?
一般来说,人们把正在计算机中执行的程序叫做“进程”(Process),而不将其称为程序(Program)。所谓“线程”(Thread),则是“进程”中某个单一顺序的控制流。自从20世纪90年代以来,多数操作系统的设计都采用了多线程的概念,譬如Windows 95、Windows NT等PC系统和Macintosh上的操作系统,它们均是将线程视为基本执行单位。不过,普通的用户对此往往并不知情。
从奔腾4处理器开始,英特尔的超线程技术(Hyper-Threading,简称“HT”)让人们终于注意到了“线程”。超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高了CPU的运行效率。
为什么要这样做呢?我们知道,虽然由于技术和生产工艺的进步,单线程芯片早就能够达到每秒钟处理成千上万条指令的能力,但是在任一时刻,单线程芯片只能够对其中的一条指令进行操作。而超线程技术则可以使芯片同时进行多线程处理,使芯片性能得到提升。
不过,虽然采用超线程技术能同时执行两个线程,但它并不像两个真正的CPU那样,每个CPU都具有独立的资源。这就意味着,如果两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续。因此超线程的性能并不等于两颗CPU的性能。
需要注意的是,超线程并不完全等同于多线程,尽管它具备了多线程处理的能力,而且它只能在Windows XP以上的系统中发挥作用。一些业界分析人士认为,英特尔的超线程技术在微处理器的发展历史中,确实发挥了里程碑式的作用,不过它并不完美,至少在某些方面仍有所欠缺。
线程具有就绪、阻塞和运行三种基本状态。
在多处理器的系统里,不同线程可以同时在不同的处理器上运行,甚至当它们属于同一个进程时也是如此。大多数支持多处理器的操作系统都提供编程接口,从而让进程可以控制自己的线程与各处理器之间的关联度。
有时候,线程也被称作轻量级进程。就像进程一样,线程在程序中是独立的、并发的执行路径,每个线程都有属于它自己的堆栈、程序计数器和局部变量。然而,与分隔的进程相比,进程中的线程之间的隔离程度要小一些,它们共享内存、文件句柄和其他每个进程应有的状态。
进程可以支持多个线程,它们看似同时执行,但互相之间并不同步。一个进程中的多个线程共享相同的内存地址空间,这就意味着它们可以访问相同的变量和对象,而且它们从同一堆栈中分配对象。尽管这可以让线程之间共享信息变得更加容易,但是用户必须加以小心,确保它们不会妨碍同一进程里的其他线程。(剑鸣)
对于微处理器来说,不仅多核,多线程也可能是其未来的发展方向之一。
日前,Sun公司发布了该公司最新的商用微处理器UltraSPARC T2。这款产品拥有8个内核,每个内核包含8个线程,由于每个线程都能运行自己的操作系统,因此该处理器在单芯片上提供了一个巨大的64路系统。对于这一产品,业界和用户均给予了高度关注。
“怪兽”现身
Sun公司声称,UltraSPARC T2是世界上最快的通用微处理器,每个内核能够执行8个线程,整个8核芯片能够执行64个线程。UltraSPARC T2采用65nm制造工艺,功耗80W。市场观察人士认为,UltraSPARC T2处理器搭建的服务器将会在VoIP、IPTV和Web2.0等领域有广泛的应用。另外,该处理器的成功发售也会带动Sun公司Solaris操作系统和Java语言的推广。据悉,Sun公司会在2008年下半年可以推出16核心的UltraSPARC T2处理器,届时将可以使之性能翻倍。
就目前而言,UltraSPARC T2拥有8核、每核8个线程。也就是说,同时间最多可以有64个进程在处理,当某一个进程工作完成后,如果后面没有其他的工作,就可以自动将排于其他线程位置的待处理工作进行转移,以维持平行线程的整体利用效率,从而更快地完成工作。在这点上,UltraSPARC T2与IBM POWER5颇有共同之处。
加州伯克利大学计算机科学客座教授Dave Patterson指出,“我们正处于计算科学的历史转折点上,从连续性处理转向多核、多线程设计。”他认为,UltraSPARC T2是业界第一款将多个系统的主要功能,包括虚拟化、信号处理、网络连接、安全特性、浮点单元和加速内存访存等诸多特性都集于一身的微处理器。
正因为将所有的功能单元都集成在一块硅芯片上,因此UltraSPARC T2在降低成本的同时,还提高了微处理器的性能、可靠性和功效,使之成为从网络设备到高性能计算或存储器件等多种应用的上佳选择。
作为一种通用型处理器,UltraSPARC T2为具有海量线程特性的开源操作系统Solaris和其他实时操作系统都提供了支持,因此也被认为将会帮助众多的开发人员寻觅到新的市场,为生产力的再提高开辟新的途径。
英特尔、AMD不断由双核向多核演进,加之Sun、IBM持续研发多核产品,在开启了多核多线程时代的同时,却又引发出新的问题,即软件授权问题。
在双核、多线程的系统环境下,虽然多线程也能起到加速作用,但是由于线程的加速效果不如CPU核心那样明显,因此一般不会出现由于线程数导致的软件授权问题。然而,在面对UltraSPARC T2这样的“怪物级”微处理器时,由于其每个线程都能运行自己的操作系统,因此情况可能会发生一些变化。然而究竟会出现什么样的变化,现在仍不得而知。
前景看好
从历史发展的经验来看,某个硬件体系的成功与否,其实往往不单单取决于硬件本身。对于微处理器来说,要达到多线程技术,操作系统的设计和架构是决定性的因素。
Sun在多线程技术方面的核心就是Solaris操作系统。据有关资料显示,Sun公司Solaris的新版本最多可以支持256个核心,而最多线程数更可以达到2048个。Sun的多线程技术与方法,始于Solaris 10操作系统,它将每个线程视为一个虚拟的CPU,这样就极大地提升了IT效率,并且使得能耗得到了有效的降低。业界一般都认为,Sun公司的Solaris从第9版到第10版时有了很大的突破,其中最重要的原因之一就是多线程技术。
目前,用户的各种应用运行在Solaris的环境平台上,也能够很好地得到多线程技术的支持。同时,一些专家认为,UltraSPARC T2二进制的设计,使它能够兼容用户原有的软硬件系统,全面保护用户的投资。
在目前业内疾呼“环保绿色”的大环境下,UltraSPARC T2也为环保人士交口称颂:Sun将其酷线程芯片多线程技术扩展到每线程功耗低于2瓦的UltraSPARC T2处理器,仅相当于同类产品功耗的1/10到1/30,从而为绿色计算树立了良好的榜样,并且将低功耗与双倍的内核数量、16倍的线程数量、4倍的吞吐量完美地结合在一起。这样的好处是,UltraSPARC T2将为系统制造商和广大用户节省大量的资金,而它的设计方式也可能会为竞争对手效仿,从而在业界掀起多核多线程的新浪潮。
另外,还有人在担心多线程下原有的应用程序是否会出现运行效率低下的问题。其实,现在的Java和.Net程序越来越多,这两种程序本身就原生支持多线程执行,因此它们会在多线程的系统下运行得更好。早期的C 则是采用变通方式(用API提供多线程能力,并在撰写程序时呼叫API)支持多线程执行,不过现在纯粹采用C 编写程序的情况越来越少,因此这一点不足为虑。
链接:什么是线程?
一般来说,人们把正在计算机中执行的程序叫做“进程”(Process),而不将其称为程序(Program)。所谓“线程”(Thread),则是“进程”中某个单一顺序的控制流。自从20世纪90年代以来,多数操作系统的设计都采用了多线程的概念,譬如Windows 95、Windows NT等PC系统和Macintosh上的操作系统,它们均是将线程视为基本执行单位。不过,普通的用户对此往往并不知情。
从奔腾4处理器开始,英特尔的超线程技术(Hyper-Threading,简称“HT”)让人们终于注意到了“线程”。超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高了CPU的运行效率。
为什么要这样做呢?我们知道,虽然由于技术和生产工艺的进步,单线程芯片早就能够达到每秒钟处理成千上万条指令的能力,但是在任一时刻,单线程芯片只能够对其中的一条指令进行操作。而超线程技术则可以使芯片同时进行多线程处理,使芯片性能得到提升。
不过,虽然采用超线程技术能同时执行两个线程,但它并不像两个真正的CPU那样,每个CPU都具有独立的资源。这就意味着,如果两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续。因此超线程的性能并不等于两颗CPU的性能。
需要注意的是,超线程并不完全等同于多线程,尽管它具备了多线程处理的能力,而且它只能在Windows XP以上的系统中发挥作用。一些业界分析人士认为,英特尔的超线程技术在微处理器的发展历史中,确实发挥了里程碑式的作用,不过它并不完美,至少在某些方面仍有所欠缺。
线程具有就绪、阻塞和运行三种基本状态。
在多处理器的系统里,不同线程可以同时在不同的处理器上运行,甚至当它们属于同一个进程时也是如此。大多数支持多处理器的操作系统都提供编程接口,从而让进程可以控制自己的线程与各处理器之间的关联度。
有时候,线程也被称作轻量级进程。就像进程一样,线程在程序中是独立的、并发的执行路径,每个线程都有属于它自己的堆栈、程序计数器和局部变量。然而,与分隔的进程相比,进程中的线程之间的隔离程度要小一些,它们共享内存、文件句柄和其他每个进程应有的状态。
进程可以支持多个线程,它们看似同时执行,但互相之间并不同步。一个进程中的多个线程共享相同的内存地址空间,这就意味着它们可以访问相同的变量和对象,而且它们从同一堆栈中分配对象。尽管这可以让线程之间共享信息变得更加容易,但是用户必须加以小心,确保它们不会妨碍同一进程里的其他线程。(剑鸣)