CPU 超线程、多核

五种英特尔消费级CPU,说它们是消费级是为了和企业级处理器Xeon(志强)区分:多线程

- 赛扬是双核,不支持超线程 - 入门玩家架构

- 奔腾是双核,不支持超线程 - 中低端玩家线程

- i3是双核,支持超线程 - 中端玩家队列

- i5是4核,不支持超线程 - 中高端玩家内存

- i7是4核,支持超线程 - 高端玩家it

 

而志强的一些低端CPU,普通玩家也能够用,好比入门

- E3是4核,支持超线程 - 高端玩家thread

 

CPU架构效率

要谈超线程和多核,就不得不谈CPU的架构和逻辑。无关的技术细节太多,这里略去。咱们重点谈一下CPU中两个相关的模块:硬件

1)Processing Unit(运算处理单元),简称PU

2)Architectual State(架构状态单元),简称AS

PU通常就是执行运算,好比算数运算加减乘除。AS执行一些逻辑和调度方面的操做,好比控制内存访问等。

单核CPU(先从简单的谈起)

通常一块传统意义的CPU上会有一个PU、一个AS。

比喻一个小饭馆(单核CPU),夫妻老婆店,老板兼大厨厨房炒菜,老板娘兼服务员点单。这不,来了一个客人,首先,走到老板娘的收银台前,看菜单准备点单。差很少5分钟后,客人点完了一份盖浇饭。老板娘抄好了单,递给了在后厨的老公。老公开始炒菜。在这个例子中,老板娘能够理解成AS,老板/大厨能够理解称PU(干实事的)。

多核CPU

这里说的多核,是多个物理核,好比i3的双核,i5的4核。这中架构下,每个物理核都有一个PU和一个AS。因此。对于i3来讲,就有总共两个PU,两个AS。对于i5来讲,就有总过4个PU,4个AS。

 

比喻上面小饭馆的列子,对于五、6个客人可能还能忙的过来。但设想一会儿来他个16个客人,这队估计要排到街上了。若是再告诉你,每10分种就有16个新客人过来点单。。。完了。生意估计是作不下去了 - 老板、老板娘忙到死。

这时,咱们就须要一个更大的单位食堂(多核CPU)。有4个服务生、4个大厨。4个服务生同时点单,4个大厨同时开炒(1号服务生专给一号大厨下单,二号服务神生专给二号大厨下单。。。以此类推)。这样相比小饭馆一个老板娘、一个客人队列,这里成了4个队列,效率顿时比小饭馆提升4倍。16个客人,平均分配成4个队列,每一个队列就只有4个客人了,状况是否是好了不少?

 

这个应该仍是比较容易理解的。

超线程技术(HT)

重头戏来了,超线程是个啥玩意。他是咱们平时说的多线程吗?

超线程(HT)并非咱们通常说的多线程。咱们通常说的多线程(multi-threading)是指程序方面的,简单的说就是‘软’的,代码级别的。而超线程通常指的是硬件架构方面的,是‘硬’的:经过调整AS而模拟出来的‘逻辑核’

简单的说吧,超线程就是一个物理核里面,有两个AS,一个PU。两个AS共享一个PU。为何这么作,看下面的例子:

 

比喻:刚刚那个单位食堂,4个服务生,4个大厨,4个队列。会不会效率问题?

有!

 

设想每一个客人都有看单选单的时候,你能保证每一个客人都看两眼就下单?有的客人不免会磨磨蹭蹭,问东问西,一个菜点它个15分钟。而设想大厨平均炒一个菜只要10分种。那剩下的那5分钟呢?大厨在厨房闲着没事干,喝茶看报纸。时间全被客人-服务生点菜这个环节给浪费掉了。

 

那有没有解决方法?我想你们应该都能猜出来了 

--- 增长服务生

 

这时候,咱们给每一个大厨多增长一个服务生,从一个服务生变成了两个服务生(AS),服务生1A和服务生1B开两个队列,同时给一个大厨(PU)下单。这样,当出现服务生1A的客人15分钟单子都没有下完的状况下,1B的客人单子颇有可能3分钟下好送给大厨开炒了(PU),这样大厨就不会站在厨房傻等1A客人的订单。这样,最大限度地榨干大厨的劳动力 (大厨估计要骂娘了),而对于CPU来讲,最大限度的提升了CPU的使用率,减小了CPU的(IDLE)空闲时间。有的时候,真不能怪大厨(PU)不卖力,而是你服务生(AS)叫单太墨迹。

 

在下图中,橙色和蓝色代表大厨(PU/CPU)是在工做的,白色格子代表大厨(PU)是空闲的。A图是单核没有没有用超线程,B图双核没有超线程,图C是单核启用了超线程。能够清晰地看到,从单核增长到双核(在没有超线程的状况下),CPU使用率并无增长。而用了超线程后,总体CPU使用率提升了,虽然只是一个核。

相关文章
相关标签/搜索