码迷,mamicode.com
首页 > 其他好文 > 详细

你不知道的 CPU 原理

时间:2014-11-13 16:41:56      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:cpu   流水线   微指令   机器周期   主频   

       CPU 是一台计算机核心且异常复杂的部件,当我们操作电脑,它以极快的速度执行着我们预设的每一条指令,但往往一些即使是作为程序员的专业人员也对其知之甚少,了解它的一些基本术语和基本执行步骤将会接近与 CPU 之间的距离。

        1.      时钟周期

我们通常看到的 CPU 主频。时钟脉冲由晶振发出,一般用来作同步信号使用,例如在脉冲的上沿控制器发给执行部件一些微命令,也就是在各管脚加上电压,在脉冲持续时间中,这些微命令被执行,然后将结果输出到相应的管线上,稳定后,在脉冲下沿就可以去读取相应的状态了,像这样有条不紊地进行下去。

        2.      指令,微指令,微操作

指令:机器指令,对应唯一机器码。

微指令:机器指令被读入指令寄存器(IR)后经过指令译码器(ID),根据不同的操作码和操作数会得到很多微指令,微指令可在一个时钟周期内完成。

微操作:一个微操作可能包含一个或多个微操作,它们在同一个时钟周期内完成。

        3.      机器周期,CPU 周期

机器周期,一般也叫CPU周期。在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段(如,取指令、存储器读、存储器写等),每一阶段完成一项工作(称为一个基本操作)。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。

例如,一个取指周期就是一个机器周期,就包含 4个时钟,每个时钟周期内就会完成取指的一个微指令(包含一个或多个微操作);

        4.      其它

CPU 包括控制器和运算器。

指令译码器是控制器中重要的一部分。

        5.      指令执行的流程

IR(指令寄存器) ID(指令译码器) MAR(存储器地址寄存器) MDR(存储器数据寄存器)

PC(程序计数器) ALU(算术逻辑单元)

取指阶段:第一个机器周期 M1。主要完成将指令读取到 IR中。

微指令1:(T1)(微操作)指令地址送 MAR;

微指令2:(T2)(微操作)Read Memory;

微指令3:(T3)(微操作)指令送 MDR;

                        (微操作) 调整 PC;

微指令4:(T4)(微操作) MDR 里面取到的指令头 IR;

    译码阶段:第二个机器周期 M2。主要完成由 IR 中的指令送到 ID 中,ID 根据指令(包括操作码和地址码)反译出相应的操作送往操作控制器中,操作控制器产生一系列控制信号到不同的执行单元。

    执行阶段:第三个机器周期 M3。主要根据产生的控制信号完成不同的执行操作。

              如送住 ALU ,进行算术运算,移位操作,跳转操作等。与周期 M1 类似。

 

        以上就是一个指令在你的 CPU 中真正被运行的情况,但是时代变了,当一个指令取完时,进入译码阶段,那么取指令的单元就闲置了,为了增加效率,引入了流水线的概念。

        通过精心设计,把整个代码执行过程分为不同的阶段,每个阶段由独立的电路实现,然后在每个阶段中间加入流水线寄存器,例如经典的五级流水线:

        IF (IF/ID reg) ID (ID/EX reg) EX (EX/MEM reg) MEM (MEM/WBreg) WB

        括号里面为流水线寄存器,并且取设置一个时钟周期来同步每步的操作,那么就要使这个时钟周期内,每一步都能完成,即选择其中最耗时的一步的周期来设时钟周期,当一个时钟周期结束时,读取流水线寄存器的值,就可以作为下一步的输出了。那么理论情况下,当流水线完全运行起来,每一个时钟周期就会有一个指令执行完毕。那么时钟周期就不像没有流水线那样同步的是微指令了,而是同步的是流水线的每一个级。当时钟周期确定,一个 CPU 的主频就确定了,不难看出,当每一级时间相差大时,由于短板效应,每一级并没有充分利用,这时就应该拆分耗时较长的级,使每一级平均,那么每一级的耗时将缩短,主频就提高了,就也就是为什么 P4 拥有 31 级流水线,且拥有较高主频的原因。但流水线级增加也会导致流水线冲突,当冲突发生时,有时需要等待或清空流水线,反而会使效率降低,这也就是为什么现在处理器流水线级低,主频也降低,反而效率高的原因。

你不知道的 CPU 原理

标签:cpu   流水线   微指令   机器周期   主频   

原文地址:http://blog.csdn.net/henzox/article/details/41080169

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!