
线程属于程序的概念范畴,为了让程序能同时做很多事情,实现很多功能,比如浏览器既要能下载程序,又要能播放视频,同时我们还喜欢随时暂停视频播放、下载。
简单说,要让程序能同时做很多事。为此,现在的程序在设计时都被分成了多个线程(Thread),一个线程完成一个功能,上面说到的浏览器一般有三个线程,可以完成三个功能:下载程序、播放视频、用户界面。处理器执行这些程序时,在 *** 作系统的指挥下,会隔一段时间切换到新的线程,减少用户等待。由于处理器运行速度很快,线程切换的时间很短,因此我们常常感觉不到线程切换时的停滞感。
上图中直升机的螺旋桨旋转够快时,我们看到的是一个盘面,而不是几片桨叶;处理器运行速度很快时,我们也感觉不到线程切换的停滞感,体验到的是丝滑般流畅。但这种多线程的执行是通过软件也就是 *** 作系统来实现的,如果不经过 *** 作系统下命令(调度),让处理器自己来完成这个工作,速度会更快,效率也会更高,于是硬件多线程诞生了。
硬件多线程里的代表性技术是同时多线程(即Simultaneous
Multi
Threading,简称SMT),工作原理是处理器同时发射多个线程的指令,这些指令可以并行乱序执行。上面的话听起来有点晦涩,我打个比方:硬件同时多线程技术(SMT)相当于快递分拣站一位身手灵活的小哥哥(CPU),可以一次抓取三四个包裹,然后快速将包裹分发给柜台前的张三、李四、王五等用户。
如果是软件多线程的话,需要快递分拣站经理站在小哥哥(CPU)旁边,告诉小哥哥该怎么做:抓三四个包裹,分给张三,分给李四,分给王五,每一步都需要下命令,小哥哥不能自主做决定,虽然能同时分发几个包裹,但效率明显没有硬件同时多线程高。
单线程更容易理解,张三李四王五在快递站外排队,小哥哥(CPU)发完张三的包裹,张三领着包裹出门后,李四才能进来领,王五依此类推。Intel(英特尔)也有SMT技术,一个内核可以同时出理两个线程,模拟两个内核工作。模拟出的这两个内核被英特尔称为逻辑处理器。我手头用着的笔电CPU为i5-5200U,有两个内核,利用SMT技术,可以模拟出4个逻辑处理器,即可以同时处理4个线程。
在市场宣传上,英特尔为自己的SMT技术取了个很拽的品牌名字“超线程”(Hyper
Thread),这是一种市场推广方法。在手机显示屏领域也有类似 *** 作,三星电子生产的AMOLED屏幕,品牌名叫“SuperAMOLED”,它不是一种新的显示屏,而是一种品牌叫法。
我们要知道,硬件同时多线程技术是为了压榨处理器的潜能,还是离不开通过提升处理器的频率来提高执行速度,但频率一高,处理器的功耗也会上升。既然处理器频率不能无限提高,那么提升性能的方法就只剩下增加内核的数量了。
这个思路并不复杂,单核是单打独斗,讲究单兵高素质,属于个人英雄主义,多核拼的是人多力量大,单兵素质稍低,但合起来性能也很可观,打的是人民战争。现在的内核数量,在消费端CPU,一般是4到6个,而在服务器CPU上,内核数量可以轻松超过20个。
那么,内核和处理器有什么关系呢?完整的处理器包含了内核、缓存、内存控制器、I/O(输入输出控制)等部件,可见,内核是处理器的一个“零部件”,处理器则是一个完整的产品,两者关系可以简单看作发动机和汽车的关系。
最后,说一个规律性的现象,同一架构下,内核数多的处理器,最高频率往往不高,内核数少的处理器,频率往往较高,这是为什么?欢迎在评论区留言。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)