首页 理论教育计算机导论:CPU工作原理

计算机导论:CPU工作原理

【摘要】:我们以3.1.2节的二进制数求和问题sum=x+y=5+7的机器指令程序为例来讨论CPU的工作原理。在程序执行状态下,CPU根据程序计数器中的数值,从内存单元0000000001中取出第一条机器指令,传送给指令寄存器。CPU的工作过程就是如图3-5所示的周而复始的取指令、分析指令和执行指令的过程。CPU处理转移指令的方法是把转移指令的操作数部分的数值赋予程序计数器,从而使CPU取到的下一条指令是非顺序的。

从程序执行的角度看,CPU是保证机器指令形式的程序执行的部件。我们以3.1.2节的二进制数求和问题sum=x+y=5+7的机器指令程序为例来讨论CPU的工作原理。

当计算机开机后,操作人员通过某种方式告知计算机要执行哪个程序,计算机中把这样的告知称作命令(命令不同于机器指令)。计算机接到命令,例如要执行二进制数求和问题程序的命令后,将把该程序在内存中存放的首地址值(本例为内存地址0000000001)赋予CPU的程序计数器,然后进入程序执行状态。在程序执行状态下,CPU根据程序计数器中的数值(0000000001),从内存单元0000000001中取出第一条机器指令(0001 00 0000100000),传送给指令寄存器。操作码译码部件分析指令寄存器的操作码(得知执行从地址100000中取数值置于寄存器A),控制器按照操作码译码部件分析得出的操作要求,控制各个部件协调一致地完成:从内存地址100000中取出数值(101)置于寄存器A中。

第一条指令执行完后,程序计数器自动加2,形成程序的第二条机器指令在内存中的存放地址(0000000011)。CPU 根据程序计数器中的数值(0000000011),从内存单元0000000011中取出第二条机器指令(0011 00 0000100001),传送给指令寄存器。操作码译码部件分析指令寄存器的操作码(得知执行寄存器A的数值加内存单元100001的数值,和存于寄存器A),控制器按照操作码译码部件分析得出的操作要求,控制各个部件协调一致地完成:把寄存器A的数值(101)与内存地址100001中取出的数值(111)相加,其和存于寄存器A中。

第二条指令执行完后,程序计数器自动加2,形成程序的第三条机器指令在内存中的存放地址(0000000101)。CPU 根据程序计数器中的数值(0000000101),从内存单元0000000101中取出第三条机器指令(0010 00 0000100010),传送给指令寄存器。操作码译码部件分析指令寄存器的操作码(得知执行把寄存器A中的数值存于内存单元100010中),控制器按照操作码译码部件分析得出的操作要求,控制各个部件协调一致地完成:把寄存器A中的数值(1100)存于内存单元100010中。

第三条指令执行完后,程序计数器自动加2,形成程序的第四条机器指令在内存中的存放地址(0000000111)。CPU 根据程序计数器中的数值(0000000111),从内存单元0000000111中取出第四条机器指令(0000 00 0000000000),传送给指令寄存器。操作码译码部件分析指令寄存器的操作码(结束程序的执行),控制器按照操作码译码部件分析得出的操作要求,控制各个部件协调一致地完成:结束程序的执行,从而结束CPU周而复始的机器指令执行过程。(www.chuimin.cn)

CPU的工作过程就是如图3-5所示的周而复始的取指令、分析指令和执行指令的过程。这样的过程是从用户给出的运行程序的命令开始,直到遇到结束程序执行指令为止。

图3-5 CPU的工作过程

对于简单的程序,如上述的二进制数求和问题程序,CPU每次的取指令的地址都是在上次程序计数器数值的基础上加1得到的,我们说程序这样的执行方式为顺序执行方式。但有时程序的执行过程需要转移到某个非顺序的内存单元去,例如3.1.1节的二进制数相乘问题算法,此时需要利用转移指令。CPU处理转移指令的方法是把转移指令的操作数部分的数值赋予程序计数器,从而使CPU取到的下一条指令是非顺序的。