Hi,很久不见,我是CPU一号车间的阿Q,不认识个人话,能够看看:完了!CPU一味求快出事儿了!编程
真的是很久不见了,人类有个说法叫天上一天,地上一年,而在咱们的世界里,人类一天,咱们不知要过多少年~~跨域
在我所在的CPU这座工厂里,时间的概念有些不太同样。工厂大门外的中央广场上挂着一个大大的钟表,整个计算机世界里的居民可以掐着时间过日子全都仰仗它,大家人类把它叫作晶振。缓存
这个钟表每隔66000000分之一秒就会报一次时,比人类的钟表不知道快到哪里去了。网络
早些年仍是够用的,不过随着咱们CPU工厂生产效率的不断提高,咱们屡次向晶振提出提高报时的精度,想让他报时报的的更快一些,不过都被拒绝了。给咱们的理由是内存那家伙联合主板上其余单位带头反对,说他们受条件限制,没办法像咱们这么快。编程语言
靠人不如靠己,为此,我们工厂专门设立了一个叫倍频器
的部门进一步把这个报时细分,达到了3600000000分之1秒,做为咱们工厂内部工做做息的时钟周期
,这数字实在是太长了,人类为了好记,取了一个叫主频
的名字,表示1秒钟报时的次数,就是3.6GHz。操作系统
一不当心扯远了,此次想给你们说一件事儿······线程
咱们这座工厂的任务就是不断的执行人类编写的程序指令,咱厂里有8个车间,你们开足了马力,就能同时执行8个线程,那速度那叫一个快。3d
但是厂里的老板仍是嫌咱们不够快,那天竟然告诉咱们要每一个车间执行两个线程,实现八核十六线程
,是要把咱们的劳动力压榨到极致!咱们都满肚子怨言······code
事情的原由是这样的~~blog
有一次,咱们一号车间的四人组趁着工做的空当,又斗起了地主,忽然领导过来视察。
“大家怎么又在玩?是工做量不饱和吗?”,见咱们几个闲着,领导一下就不高兴了。
我赶忙上前解释到:“很差意思领导,我们刚刚执行了一条指令,须要内存中的一块数据,恰好又不在缓存中,因此找内存那家伙要数据去了,这不您也知道那家伙向来很慢,咱们闲着也是闲着因此就稍微放松了一下······”
听了个人话领导一下皱起了眉头,“还给我狡辩,厂里如今不是用上了乱序执行
技术吗?有这闲功夫大家能够先执行后面的指令啊”
“这咱们固然知道,这不您看,咱们把后面那几条指令也都处理了,如今遇到了一条无法提早执行的指令才停下来的”
领导看了一下问到:“为啥那条不能提早执行?”
“那是一个加法指令,加数依赖于如今正在处理的指令的运算结果呢,因此内存那家伙不来消息,咱们只能搁置着了”,我继续解释到。
领导听完,一脸不高兴的离开了。
过了几天,领导又来到我们一号车间来了,也不知道怎么回事,这明明有八个车间,领导怎么老爱往咱们这边跑。
不过这一次,咱们没有斗地主,正在辛辛苦苦的工做着。
当时,我正在执行一个浮点数运算,领导过来一看,拍了拍个人肩膀说到:“哟,阿Q,忙着呐,这是在作什么啊?”
我笑着说到:“领导好,我刚刚用浮点数运算电路单元作了一个浮点数乘法,正在等待计算结果呢”
领导点了点头,往周边巡视一圈,指着一堆设备问到:“这一堆是什么?”
“哦,那是整数运算电路单元,这条指令用不到它”
领导再次点了点头,如有所思的离开了。
又过了几天,厂里召开了一次会议,八个车间都派了表明参会。
会上,领导发话了:“前段时间我到各个车间视察,发现如今我们厂里资源浪费的状况很严重!”
二号车间的虎子一听就坐不住了,“领导,我们你们伙工做都挺卖力的,哪里有浪费啊?”
领导瞥了一眼,继续说到:“一方面,厂里的计算资源——电路设备得不到充分利用,另外一方面,又由于内存读取缓慢、指令依赖等方面的缘由,浪费你们太多时间花在等待上”
八号车间的表明向来爱拍马屁,接着领导的话问到:“领导是有什么指示?咱们八号车间绝对支持!”
“咱们几个管理层通过讨论,决定让大家一个车间由如今执行一个线程,变成执行两个线程!”
领导这话一出,会场窃窃私语此起彼伏。虎子偏头小声对我说到:“这资本家改不了剥削的本色,这压榨的也太狠了!”
领导咳嗽了几声,会场再次安静了下来。
我起身问到:“领导,这我们一个车间怎么能执行两个线程呢,每一个车间的寄存器
只有一套,这用起来岂不是要乱掉?”
“这个你不用担忧,咱们会给每一个车间配两套寄存器!”
五号车间的表明一据说到:“要再也不给咱们添点人手吧,这样效率确定提高快!”
领导一听笑着说到:“还添人手?要不要再给大家添点运算设备?那我不如再增长几个车间,还开这会干吗?此次会议的主题就是如何让咱们现有的资源获得最大程度的利用,减小浪费现象!”
会场一度陷入了尴尬又紧张的氛围。
仍是虎子打破了安静,“领导,这两个线程的工做该怎么开展,咱们心底没有数啊!”
领导满意的笑了一下:“这才是大家该问的问题嘛!每一个车间回去从新分配一下工做,划分为两套班子,各自维护一套寄存器,对外宣称大家是两个不一样的物理核心
,但各车间的缓存和计算资源仍是只有一套。大家内部协调好,在执行代码指令的时候,充分利用等待的时间执行另外一个线程的指令,这样也不用担忧指令依赖的问题。”
你们一边听一边作着笔记。
“还有,若是遇到资源闲置的状况,也能够同时执行两个线程的指令。好比一个线程是执行整数运算指令,一个线程是执行浮点数运算指令,就能够一块儿来,让工厂的计算资源充分用起来,别闲置。”
看咱们都认真的记着笔记,领导露出了满意的笑容,“都记好了吧,咱们给这项革命性的技术取了个特别酷的名字,叫超线程技术!”
散会后,你们都纷纷抱怨,把你们逼得这么紧,之后上班看来是无法摸鱼了,这日子真是愈来愈难过了。
不过,抱怨归抱怨,你们仍是得按照新规来执行。
很快,厂里就落地了这项技术,我们一个车间摇身一变,变成了俩,我们原来八核八线程的CPU一下变成了八核十六线程。操做系统那帮人都被咱们给骗了,还觉得我们是十六核的CPU呢!
不过毕竟计算资源仍是只有一份,遇到两个线程都要使用一样的计算单元时,仍是得要排队,还要花时间在两个线程以前的协调工做上,因此总体工做效率的根本没有2倍,绝大多数时候能提高个20%-30%就不错了。
不只如此,车间改造后,增长了新的逻辑电路单元,咱这CPU工厂的功耗也更大了,工厂门口那座巨大的风扇也得加大马力给咱们降温了。
厂子里对这项技术的反对声音开始不绝于耳。
不事后来发生了一件事,让人们不得不关闭这项技术。听闻这个消息,咱们都乐开了花,看来又能够继续摸鱼了······
每当有网络数据包到来,网卡那家伙就经过中断告诉咱们CPU去处理。
可咱明明有8个车间,它非得一个劲的只给咱们车间发中断,搞得咱们都无法好好工做。
终于,我忍不住了······
预知后事如何,请关注后续精彩······
说明:
超线程技术出现时间其实早于多核技术。本故事仅为叙述方便,不表明两者真实的发展顺序。