多核与多线程技术的区别到底在哪里? 服务器存储频道
Posted on 八月 16rd, 2007 由 admin
热门问答:
推荐阅读
| · 英特尔在华宣多核新制程量产速度超对手 服务器存储频道 |
| 摘要: 3月20日,英特尔在北京举行了多核处理器应用论坛暨服务器用户大会。本次论坛的规模和参与者范围之广令人吃惊,其中,不仅包括英特尔的合作伙伴戴尔、惠普、ibm、曙光,浪潮、联想、宝德、sgi、微软、天健、用友等软硬件合作伙伴,而且包括多家独立软件开发商、行业专家、媒体,乃至尝鲜的多核用户。二月二,龙抬头。选择这一个日子召开多核应用论坛,英特尔好似是有意为之。其去年发布的多核处理器也像春风一样,虽有些凉意,但已让人们感受到“春”的气息。...... |
| · [视频]3dsmax nurbs曲面建模:整列点编辑 |
| 摘要:点这里查阅不断更新的教程合集 与单纯的图文教程相比,生动活泼的视频多媒体教程更容易吸引大家的注意,让学习过程更加轻松有趣。 这里推出的是金鹰多媒体制作组精心制作的一系列从入门基础到高级应用的3dsmax7.0视频教程,和我们一起轻松愉快地进入精彩神奇的三维设计界吧! 本节我们用图、文、动画、音频结合的flash视频教程向大家介绍3dsmax7.0nurbs曲面建模中的“整列点编...... |
正文
毫无疑问的,“多核”、“多线程”此二词已快成为当今处理器架构设计中的两大显学,如同历史战国时代以“儒”、“墨”两大派的显学,只不过当年两大治世思想学派是争得你死我亡,而多核、多线程则是相互兼容并蓄,今日几乎任何处理器都朝同时具有多核多线程的路线发展迈进。
毫无疑问的,“多核”、“多线程”此二词已快成为当今处理器架构设计中的两大显学,如同历史战国时代以“儒”、“墨”两大派的显学,只不过当年两大治世思想学派是争得你死我亡,而多核、多线程则是相互兼容并蓄,今日几乎任何处理器都朝同时具有多核多线程的路线发展迈进。
虽然两词到处可见,但可有人知此二者的实际差异?在执行设计时又是以何者为重?到底是该多核优先还是多线程提前?关于此似乎大家都想进一步了解,本文以下试图对此进行个中差异的解说,并尽可能在不涉及实际复杂细节的情形下,让各位对两者的机制观念与差别性有所理解。
行程早于线程
若依据信息技术的发展历程,在软件程序执行时的再细分、再切割的小型化单位上,先是有行程(process),之后才有线程(thread),线程的单位比行程更小,一个行程内可以有多个线程,在一个行程下的各线程,都是共享同一个行程所建立的内存寻址资源及内存管理机制,包括执行权阶、内存空间、堆栈位置等,除此之外各个线程自身仅拥有少许因为执行之需的变量自属性,其余都依据与遵行行程所设立的规定。
相对的,程序与程序之间所用的就是不同的内存设定,包括分页、分段等起始地址的不同,执行权阶的不同,堆栈深度的不同等,一颗处理器若执行了a行程后要改去执行b行程,对此必须进行内存管理组态的搬迁、变更,而这个搬迁若是在处理器内还好,若是在高速缓存甚至是系统主存储器时,此种切换、转移程序对执行效能的损伤就非常大,因为完成搬迁、切换程序的相同时间,处理器早就可以执行数十到上千个指令。
两种路线的加速思维
所以,想避免此种切换的效率损耗,可以从两种角度去思考,第一种思考就是扩大到整体运算系统的层面来解决,在一部计算机内设计、配置更多颗的处理器,然后由同一个操作系统同时掌控及管理多颗处理器,并将要执行的程序的各个程序,一个程序喂(也称:发派)给一颗处理器去执行,如此多颗同时执行,每颗处理器执行一个程序,如此就可以加快整体的执行效率。
当然!这种加速方式必须有一个先决条件,即是操作系统在编译时就必须能管控、发挥及运用多行程技术,倘若以单行程的系统组态来编译,那么操作系统就无法管控服务器内一颗以上的处理器,如此就不用去谈论由操作系统负责让应用程序的程序进行同时的多颗同时性的执行派送。
即便操作系统支持多程序,而应用程序若依旧只支持单程序,那情形一样是白搭,操作系统无法对单行程程序再行拆分,依然是只喂入单一颗处理器上去执行,无从加速。
同时用多颗处理器来执行,且每颗处理器执行一个行程,这是一种加速法,另一种加速法则是:尽量不进行内存管理组态的切换,避免切换的效能折损,线程正是在此概念下所出现的产物。
不过,线程也要程序的搭配才能发挥,线程的概念出现与落实已是“c++看消、java看长”的阶段,所以c++只能通过api呼用的方式来支持与使用多线程,如此必须改写过往的程序才行,改写成有呼用到支持多线程的api才行。相对的,较c++晚问世的java则是原生支持多线程,不用改写也能发挥及运用多线程的特性及其加速效益。
有了线程后,执行的分割、切割更加细腻,线程机制不仅在多颗处理器的系统内可以加速,在单颗处理器内也一样能获得好处,在多颗处理器的系统上每颗处理器不仅可以单独执行一个程序,当然也可以单独执行一个线程,而在单处理器系统上因为省去内存管理组态的搬迁,所以一样可以加速,很明显的,线程使执行的发派、分配更加细腻与灵活化。


讨论区