深圳做网站 信科便宜,中国网站建设网页设计,营销网站建设价格,建筑工程技术培训了解处理器内部硬件架构#xff0c;有助于理解软件运行原理#xff0c;因为这两者本身相辅相成#xff0c;相互依存。就像枪和狙击手#xff0c;枪的操作和外形设计都是要根据人体工学#xff0c;让人不仅操作容易#xff0c;而且携带也要轻便#xff0c;做到能随时射出…了解处理器内部硬件架构有助于理解软件运行原理因为这两者本身相辅相成相互依存。就像枪和狙击手枪的操作和外形设计都是要根据人体工学让人不仅操作容易而且携带也要轻便做到能随时射出子弹击中目标枪赋予了人的使命。反过来狙击手要根据枪的操作和外形设计找到发挥其最大命中率的方法做到人枪合一人赋予了枪的生命.
记得2002年末我在中关村攒了台电脑当时的最新的桌面cpu是奔4-2.4b我一咬牙就买它了当时可花了兄弟我1600块呢话说当时一个月只挣1500块。其中2.4是指cpu的主频是2.4G。您看对于cpu的选择我当时只关注主频根本不关注其它参数其实主要是不懂其它参数哈哈。后来才懂了cpu中另一个非常重要的技术这就是流水线。
说到流水线也许您脑子中马上联想到工厂里一个穿着蓝色工作服的工人站在像传送带一样的工作台前紧张而有节奏的工作。也许您会问你怎么知道我是这么想的哎……电视里都这么演的……没错这就是流水线。可是这个例子毕竟太遥远并不是所有同学都在工厂里做过流水线工人咱们还是拿生活中的例子说事。
大伙儿都有租房子的经历吗如果没有也没关系重点不是租房子我要说的是像我等北漂一族为了充分利用房子里狭小的空间肯定用锤子往墙上砸过钉子您懂的可以挂东西嘛^_^。
从宏观上看砸钉子可以分两个步骤
取钉子砸钉子
假设每一步都占用1秒钉钉子这两个步骤下来是2秒如果顺序执行这两个步骤一分钟可以砸30个钉子。过程如表 以上是以串行顺次的方式来砸钉子不过这种串行的效率实在有限如果改为并行的方式砸钉子效率必然大大提高。
生活中处处是并行的例子最为典型的并行系统就是咱们的身体。比如心脏在为身体泵血的时候肺同时在保持呼吸为身体供氧小肠也同时在蠕动为人体汲取养分。这些器官的活动都是并行的并不是在心脏跳动完之后小肠再蠕动它们的工作是彼此独立无关联的。人体内部的器官虽然是在并行工作但他们做为一个整体——人却同一时间只能做好一件事所以一心不能二用。
如果以“并行”的方式也就是同时砸钉子那得多增加人手才行一个人同时只能做一件事并且要么拿钉子要么砸钉子。下面给砸钉子的工作增加个人手专门给取钉子这样一个人取钉子另一个人专门来砸钉子取钉子和砸钉子的工作重叠进行过程如表: 上面的并行我加了引号因为它并不是真正的并行这是在重叠执行。重叠的意思是说在同一时间内同时完成两个钉子的部分工序拿第2秒来说第一行的“砸钉子”是砸的第一个钉子第二行的“取钉子”取的是第二个钉子做的并不都是第一个钉子的工序。真正的并行是两个人自己取自己的钉子然后自己砸自己的钉子各干各的。而我们的例子中取钉子的人只会取钉子砸钉子的人也只会砸钉子。
增加了一个人手之后除第1秒外每一秒都有“砸钉子”的动作所以第一分钟内可以砸入59根钉子在第二分钟以后每分钟能砸60个。
以上表4-13的过程便是一个流水线的执行过程由于砸钉子分为两个步骤所以以上流水线称为二级流水线。
这种情况在cpu中也是一样的指令执行单元EU是执行指令的唯一部件一次只能执行一个指令单核cpu的情况下只有一个指令处于执行中。cpu中的各部分也是同时只能做一件事但它们就像身体器官一样也是在并行工作相当于多个“人手”。cpu的指令执行过程分为取指令、译码、执行三个步骤。每个步骤都是独立执行的cpu可以可以一边执行指令一边取指令一边译码。cpu中的时序不是秒对cpu来说秒就是天文数字。它的时序是时钟周期。按照这三个步骤其三级流水线如表 以上在第2周期后都有指令在执行这是最基本的流水线啦。为了更好的理解以后的分支预测在此提醒一下大伙儿虽然在一个时钟周期内cpu同时干了三件事但一定要清楚这三件事不属于同一个指令是三个指令重叠在一起了这和砸钉子的流水线是一样的道理。同时完成的是当前指令的第三步、下一条指令的第二步第三条指令的第一步。cpu中每条指令必须经过取指、译码、执行三步才算完成。
cpu是按照程序中指令顺序来填充流水线的也就是说按照程序计数器PC(x86中是cs:ip)中的值来装载流水线当前指令和下一条指令在空间上是挨着的。如果当前执行的指令是jmp下一条指令已经被送上流水线译码了第三条指令已经被送上流水线取指啦。仔细想想看其实这个流水线没用了因为cpu早已经跳到别处去执行了第二、三条指令用不上了所以cpu在遇到无条件转移指令jmp时会清空流水线