CPU超线程/多核/多路技术

author:skate
time:2014/06/16

 

CPU超线程/多核/多路技术

 

1.cpu超线程技术
       在每个单位时间内,CPU只能处理一个线程(Thread)。除非有两个核心处理单元,否则要想在单位时间内处理超过一个的线程是不可能的。超线程HT(Hyper-Threading)技术是在单个核心处理单元中集成两个逻辑处理单元,也就是一个实体内核(共享的运算单元),两个逻辑内核(有各自独立的处理器状态),从而可以在单位时间内模拟双内核运作.可以提高40%的性能。

线程是程序执行的基本原子单位,一个进程可以由多个线程组成。在分布式程序设计中正确使用线程,能够很好地提高应用程序的性能及运行效率,其实现原理是将一个进程分成多个线程,然后让它们并发异步执行,从而提高运行效率。

所谓“并发执行”,在单核情形下并不是各线程同时执行(占有CPU),在任意时刻还是只能有一个线程占用CPU,只不过它们彼此轮换使用CPU相对频繁一些,感觉上似乎都在运行。

 

下面通过一个简单的例子来说明超线程的工作原理。

设一个进程要完成两个任务:任务1和任务2,并且任务1要经历A1B1C1三个步骤才能完成,任务2要经历A2B2C2三个步骤才能完成。

①如果两个任务同步执行的话,完成两个任务是这样执行的:

花费时间段:
 1     2     3     4     5     6
 A1 → B1 → C1 → A2 → B2 → C2
 

这样从A1到C2只能一个一个地执行,当A1执行时,CPU被占用,B1到C2的线程只能等待,甚至当它们彼此之间并不竞争同一个资源时,也要等待前面的线程执行完毕后才能执行。

②如果两个任务异步执行的话,完成两个任务是这样执行的:

花费时间段:
 1     2     3     4     5     6
 A1 → B1 → C1
 A2 → B2 → C2
 

这样,任务1和任务2就分成两个独立的执行对象,也就是说: A1B1C1和A2B2C2是并发执行的。当A1在执行某个运算时,A2线程可以去做其他的一些事情,比如访问磁盘等外部设备等。

对比①和②两种执行方式,完成所有任务,方式①需要6个时间段,而方式②只需要3个时间段,方式②所需时间是方式①的一半,所以方式②完成整个任务要快于方式①。


2.cpu多核技术
   多核(Multi-Core)是指在一片处理器中包含两个或两个以上的独立的内核,可以在单位时间内同时处理多个线程,如图。


cpu多核技术的开发源于这样的认识:在单核芯片中,仅仅提高芯片的速度会产生过多的热量,且无法带来所预期的性能改善。多核处理器是单片芯片,能够直接插入单一的处理器插槽中,但操作系统会利用所有相关的资源,将它的每个执行内核作为分立的逻辑处理器使用。通过在两个执行内核之间划分任务,多核处理器可以在特定的时钟周期内执行更多的任务。可以提高80%的性能。

 

3.如何选择cpu

多核、多路和超线程的选择;多核是由控制器控制并行的,多路是完全独立并行
自己的业务场景需要并发还是并行;多核对并行支持更好一点
业务场景是io密集型还cpu密集型;cpu密集型的cpu越多越好
自己的os和软件对线程和进程支持程度

比如mysql数据库软件是线程模型的,使用了很多全局锁mutex,如果cpu过多的话,那接受的过多的请求就会在mutex上产生争用和cpu大量spin,使系统的性能
反而下降。这样的话mysql就应该选择路数少一点的多核cpu,但总的逻辑cpu数不要太多,目前mysql5.6可以支持到48cpu。

 

 

 

------end------

 

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值