....... 一上来就是省略号还真是抱歉啊,可是我现在的心情就如同省略号一样,说不出来。 就在刚才,我即将打完这篇文章的时候,Firefox崩溃了!近一个小时的心血,就这样付之东流。看着显示器的我,不知道该说些什么。 “怎么了?死人了吗?”老爸看我趴在电脑桌前不断叹息的我禁不住问。 “没有,就是写的东西没了。”我头也不抬的说,活像一个丧家之犬。 “那没死人,就不是什么大事,再写一遍就行了” 就是因为我老爸的这句话,我才决定重新写完这篇文章,即使内心有着不悦,悔恨。
这篇文章是CPU工作原理的番外篇,实用主义为上,这就是这篇文章的核心,当然还是把本篇看完比较好,即使技术含量不高,但是基础的东西还是要理解的。 工作原理完结已经有一段时间了,我也写了一篇番外,给大家说了说多核心的时代。其实主篇中有很多地方都进行了省略,就是为了把重要的东西单独拿出来说,这样把任务分散化,逐个击破,往往会达到很好的效果,拿破仑兄就经常这么干。
记得前几天有个朋友问我写“工作原理”到底有啥想法。我很明确的告诉他,装X。不过单单以这个为目的的话,自己是不是略显幼稚和单纯了?“工作原理”我尽量把它通俗化,简单化,力图让人们更容易接受这些,但是有些东西自己只得抽象化,学术化,不得不承认我真的没什么技术,却闲来无事发这种教程帖子。但是,但是,只要有别人的支持,真的对大家有什么启发,我还是会坚持下去,即使我是那么笨拙而不通情理。 我们要煮面条,煮水要五分钟,切菜要五分钟,而面煮熟又要两分钟,问最少多长时间才能把面煮好。我想很多朋友都知道,因为煮水可以和切菜一起进行,那么总共就需要5+2=7分钟。而如果按照原来的步骤,先煮水,再切菜,最后下锅煮熟,需要5+5+2,共12分钟。而我们聪明的人类只需要7分钟而已! 其实这里面就运用到了计算机的流水线知识,因为煮水和切菜两个任务是独立的,所以我们可以对两个人物进行流水处理,在GPU中也叫并行。这样在发射完煮水指令后,再立刻发射切菜指令,这样就可以节省n-1个周期,其中n是指的“5分钟”的处理时间对于计算机来说所需要的周期数。 这个道理很好理解,就好象我们走在路上会唱歌,会注视建筑物一样。 在车上的漫长时间应该如何度过呢?我想不同的人会有不同的方法。有的朋友会拿出自己喜欢的书来看,或是小说,或是杂志。也有不少朋友会带着MP3,听自己喜欢的歌曲,同样也有人们会喜欢在漫长的路途中冥想,在繁杂的世界中寻找一片宁静,思考,回顾过去的自己,做一个“旁观者”。这些看上去似乎都是消遣的方法,毕竟这段漫长没有被浪费,都让我们一点点度过了。不过,在车上看书可是会影响视力的,而且还会一定影响我们的平衡中枢,至呕。那听歌应该就没事情吧?呵呵,车上往往都是吵杂的,我们会因为听不清楚歌词而升高音量。人们在看待一项事物的事物经常会有一种片面者的心态,因为一项事物强于另一项,而仅仅注视强者,同情弱者。可弱的一项并非是弱,只是相比之下而言。所以往往我们提升了音量后自己不觉的响,而实际上音乐的分贝量已经远远超过正常的值了,对我们的耳朵损伤极大。那这样看来,冥想还算做一个不错的方法。 其实把这个搬到计算机上来也很方便,人们为了提高处理效率,而引入了流水线。但是因为指令之间的相关性,跳转,所以我们不得不引入调度器和分支预测器来中和这种负效应。这些附属物往往占用大量晶体管,从而影响了制程,功耗,稳定性,可靠性等等。这样就可以引出流水线加速比这个概念来了。简单的来说就是引入流水线带来的性能提升减去因为解决冲突所支出的开销性能再比上没有引入流水线的性能。这个比例经常用来评价一款处理器的设计,十分实用。但是作为一种“相对比率”,有时候也会有误人子弟的情况。 “计算机其实就是一堆开关,用过开和关来达到储存数据和计算的效果”相信搜索过CPU工作原理的朋友都会查到这个资料。可是单纯的开关,如果没有人类的智慧,那仅仅只是开关而已。计算机中的很多东西,都可以找到现实中所对应的影子,流水线就是很好的例子。其实应该说任何一门学科都会有与现实的映射吧,生活在现实的我们及时再怎么努力,创作,都无法脱离这个世界,被制约在一定范围内啊。 最后说一句,以后写东西要随时保存...... |