分析多核与多线程技术的根本区别

什么是多核技术?多内核是指在一枚处理器中集成两个或多个完整的计算引擎(内核)。多核技术的开发源于工程师们认识到,仅仅提高单核芯片的速度会产生过多热量且无法带来相应的性能改善,先前的">处理器产品就是如此。他们认识到,在先前产品中以那种速率,处理器产生的热量很快会超过太阳表面。即便是没有热量问题,其性价比也令人难以接受,速度稍快的处理器价格要高很多。
  英特尔工程师们开发了多核芯片,使之满足“横向扩展”(而非“纵向扩充”)方法,从而提高性能。该架构实现了“分治法”战略。

  通过划分任务,线程应用能够充分利用多个执行内核,并可在特定的时间内执行更多任务。多核处理器是单枚芯片(也称为“硅核”),能够直接插入单一的处理器插槽中,但操作系统会利用所有相关的资源,将它的每个执行内核作为分立的逻辑处理器。通过在两个执行内核之间划分任务,多核处理器可在特定的时钟周期内执行更多任务。

  多核架构能够使目前的软件更出色地运行,并创建一个促进未来的软件编写更趋完善的架构。尽管认真的软件厂商还在探索全新的软件并发处理模式,但是,随着向多核处理器的移植,现有软件无需被修改就可支持多核平台。操作系统专为充分利用多个处理器而设计,且无需修改就可运行。为了充分利用多核技术,应用开发人员需要在程序设计中融入更多思路,但设计流程与目前对称多处理 (SMP) 系统的设计流程相同,并且现有的单线程应用也将继续运行。

  现在,得益于线程技术的应用在多核处理器上运行时将显示出卓越的性能可扩充性。此类软件包括多媒体应用(内容创建、编辑,以及本地和数据流回放)、工程和其他技术计算应用以及诸如应用服务器和数据库等中间层与后层服务器应用。多核技术能够使服务器并行处理任务,而在以前,这可能需要使用多个处理器,多核系统更易于扩充,并且能够在更纤巧的外形中融入更强大的处理性能,这种外形所用的功耗更低、计算功耗产生的热量更少。多核技术 是处理器发展的必然近20年来,推动微处理器性能不断提高的因素主要有两个:半导体工艺技术的飞速进步和体系结构的不断发展。半导体工艺技术的每一次进步都为微处理器体系结构的研究提出了新的问题,开辟了新的领域;体系结构的进展又在半导体工艺技术发展的基础上进一步提高了微处理器的性能。这两个因素是相互影响,相互促进的。一般说来, 工艺和电路技术的发展使得处理器性能提高约20倍,体系结构的发展使得处理器性能提高约4倍,编译技术的发展使得处理器性能提高约1.4倍。但是今天,这种规律性的东西却很难维持。多核的出现是技术发展和应用需求的必然产物。

毫无疑问的,“多核”、“多线程”此二词已快成为当今处理器架构设计中的两大显学,如同历史战国时代以“儒”、“墨”两大派的显学,只不过当年两大治世思想学派是争得你死我亡,而多核、多线程则是相互兼容并蓄,今日几乎任何处理器都朝同时具有多核多线程的路线发展迈进。

  虽然两词到处可见,但可有人知此二者的实际差异?在执行设计时又是以何者为重?到底是该多核优先还是多线程提前?关于此似乎大家都想进一步了解,本文以下试图对此进行个中差异的解说,并尽可能在不涉及实际复杂细节的情形下,让各位对两者的机制观念与差别性有所理解。

  行程早于线程

  若依据信息技术的发展历程,在软件程序执行时的再细分、再切割的小型化单位上,先是有行程(Process),之后才有线程(Thread),线程的单位比行程更小,一个行程内可以有多个线程,在一个行程下的各线程,都是共享同一个行程所建立的内存寻址资源及内存管理机制,包括执行权阶、内存空间、堆栈位置等,除此之外各个线程自身仅拥有少许因为执行之需的变量自属性,其余都依据与遵行行程所设立的规定。

  相对的,程序与程序之间所用的就是不同的内存设定,包括分页、分段等起始地址的不同,执行权阶的不同,堆栈深度的不同等,一颗处理器若执行了A行程后要改去执行B行程,对此必须进行内存管理组态的搬迁、变更,而这个搬迁若是在处理器内还好,若是在高速缓存甚至是系统主存储器时,此种切换、转移程序对执行效能的损伤就非常大,因为完成搬迁、切换程序的相同时间,处理器早就可以执行数十到上千个指令。

  两种路线的加速思维

  所以,想避免此种切换的效率损耗,可以从两种角度去思考,第一种思考就是扩大到整体运算系统的层面来解决,在一部计算机内设计、配置更多颗的处理器,然后由同一个操作系统同时掌控及管理多颗处理器,并将要执行的程序的各个程序,一个程序喂(也称:发派)给一颗处理器去执行,如此多颗同时执行,每颗处理器执行一个程序,如此就可以加快整体的执行效率。

  当然!这种加速方式必须有一个先决条件,即是操作系统在编译时就必须能管控、发挥及运用多行程技术,倘若以单行程的系统组态来编译,那么操作系统就无法管控服务器内一颗以上的处理器,如此就不用去谈论由操作系统负责让应用程序的程序进行同时的多颗同时性的执行派送。

  即便操作系统支持多程序,而应用程序若依旧只支持单程序,那情形一样是白搭,操作系统无法对单行程程序再行拆分,依然是只喂入单一颗处理器上去执行,无从加速。

  同时用多颗处理器来执行,且每颗处理器执行一个行程,这是一种加速法,另一种加速法则是:尽量不进行内存管理组态的切换,避免切换的效能折损,线程正是在此概念下所出现的产物。

  不过,线程也要程序的搭配才能发挥,线程的概念出现与落实已是“C++看消、Java看长”的阶段,所以C++只能通过API呼用的方式来支持与使用多线程,如此必须改写过往的程序才行,改写成有呼用到支持多线程的API才行。相对的,较C++晚问世的Java则是原生支持多线程,不用改写也能发挥及运用多线程的特性及其加速效益。

  有了线程后,执行的分割、切割更加细腻,线程机制不仅在多颗处理器的系统内可以加速,在单颗处理器内也一样能获得好处,在多颗处理器的系统上每颗处理器不仅可以单独执行一个程序,当然也可以单独执行一个线程,而在单处理器系统上因为省去内存管理组态的搬迁,所以一样可以加速,很明显的,线程使执行的发派、分配更加细腻与灵活化。

时间: 2024-12-10 05:36:21

分析多核与多线程技术的根本区别的相关文章

Windows 7采用英特尔多核和多线程 PC运行更快捷

英特尔公司是全球最大的半导体芯片制造商,它成立于1968年,具有41年产品创新和市场领导的历史.1971年,英特尔推出了全球第一个微处理器.这一举措不仅改变了公司的未来,而且对整个工业产生了深远的影响.微处理器所带来的计算机和互联网革命,改变了整个世界. 英特尔( 美国芯片巨头)对外合作关系部门经理约亚金·里亚里亚斯(Joakim Lialias)上周三晚在微软官方博客网站中撰文称,目前英特尔正同微软密切配合,使微软Windows 7操作系统今后在基于英特尔多核处理器的PC机上运行时,能够利用英

读书感受 - 软件工程师 - C#线程参考手册(多线程技术分析)

      这几天,花了些时间,浏览了下<C#线程参考手册>,对初学者比较有用...       该书可以在我CSDN下载频道获得,请购买原书支持正版(http://lzhdim.download.csdn.net/).       几年前买过一本Intel的工程师写的<多核程序设计技术>一书,本来想开个专题来对多核程序的设计做介绍的,由于时间问题,该专题改为"并行程序设计"了,但该书的重要内容却没有记录下来,比较遗憾,后续有时间再补吧.(现在叫并行程序的比较多

多核时代多线程编程(一)基本策略

1.1问题分析 1.2分工原则 1.2.1确定线程数 1.2.2确定任务的数量 1.3共享可变性 1.4小结 1.5参考资料 大家对并发(concurrency).多线程(Multi-Threading)程序设计肯定不陌生,因为在当今多核CPU时代到处可见,从底层的操作系统(OS)到上层的应用程序,从服务端到客户端,从低级语言到高级程序语言.从分布式集群到大数据处理等等,都可以看到并发程序的身影.可以这样说,只要有计算机软件的地方,就会存在并发程序.大家肯定知道,为何到处都有并发程序?就是因为它

ARM计划增加多线程技术以提高处理器性能

ARM计划为处理器增加多线程技术,以提高处理器性能. ARMhttp://www.aliyun.com/zixun/aggregation/17728.html">架构处理器被广泛应用在智能手机中,ARM计划涉足新领域,例如服务器.网络和通信.ARM本月公布的Cortex-A15处理器内核不支持多线程技术.多线程技术可以在一个处理器内核上运行多个线程,提高应用运行的性能.英特尔的笔记本和台式机处理器,以及IBM和Sun的处理器都支持多线程技术. 市场研究公司J. Gold Associat

使用.NET多线程技术显示实时股票信息

多线程|显示 本文的内容是学习如何使用多线程技术建立应用程序,使应用程序在执行时间和资源密集型后台事务的时候,用户界面(UI)仍然保持活动状态. 多线程技术(multithreading)是编程中最强大的概念之一.使用多线程技术,你可以把复杂的事务拆分到彼此独立执行的多个线程之中.良好的多线程应用程序是自然地同步的,类似于Web服务调用.在默认情况下,Web服务调用属于阻塞(blocking)调用--即调用者(caller)的代码停止执行,直到Web服务返回结果为止.但是由于Web服务调用通常很

运用多线程技术实现文件的快速搜索

从一名初学者到如今一名熟练的VC程序员,得益于VC知识库的帮助,一直想着该如何回报.现撰此文,一来略表心意,二来和VC爱好者交流. 操作系统一般都提供了文件搜索的功能,但采用的是顺序搜索,搜索效率很底.而且按此法编程十分烦琐,在目录层次很多时,往往不好处理.本文采用多线程技术实现文件的快速搜索,代码量很少,执行效率极高. 其基本思想其实很简单,就是找到一个目录就开辟一个线程,文件的话当然在线程内就处理了.这样实现了同步搜索,速度当然快起来了. 本文程序运行效果图 以下介绍VC具体实现: 一. 搜

多线程技术在Delphi数据库编程中的应用

引言 在传统上,并发多任务的实现采用的是在操作系统级运行多个进程,由操作系统按照一定的策略(优先级.循环等),调度各个进程的执行,以最大限度的利用计算机的各种资源.在这种实现方法中最基本的调度单位是操作系统级上的进程.由于各个进程拥有自己独立的运行环境(寄存器和地址空间等).进程与进程之间的耦合关系差,并发性粒度过于粗糙,并发实现也不太容易.所以,除非特殊需要,一般的应用设计都不采用这种技术. 为了克服这些问题,近年来逐步发展了并发多线程的程序设计技术.从并发Ada.并发C等各种并发多任务的程序

软件-求大神帮忙分析一下我的技术出路 该怎么走

问题描述 求大神帮忙分析一下我的技术出路 该怎么走 个人情况:非计算机专业大专毕业5年 25岁 断断续续自学1年JAVA(学习路线和培训机构差不多) 最近找到5家小公司都没干成(原因主要是自己平时学习不认真 基础不好 觉得难以胜任工作就自离了 其实更多的是心态问题 畏惧工作 因为这些小公司如果一周内被辞退的没工资的 感觉基本没人带单打独斗 工资一开始2000也不满意 我的简历是实话实说自学的 正规公司不要我 要我的都是2-3个开发人员的小公司 抱着试试我的态度 我发现包装简历虽然是说假话 但是也

背景建模技术(二):BgsLibrary的框架、背景建模的37种算法性能分析、背景建模技术的挑战

背景建模技术(二):BgsLibrary的框架.背景建模的37种算法性能分析.背景建模技术的挑战 1.基于MFC的BgsLibrary软件下载 下载地址:http://download.csdn.net/detail/frd2009041510/8691475 该软件平台中包含了37种背景建模算法,可以显示输入视频/图像.基于背景建模得到的前景和背景建模得到的背景图像,还可以显示出每种算法的计算复杂度等等.并且,测试的可以是视频.图片序列以及摄像头输入视频.其界面如下图所示: 2.BgsLibr