我们想要了解微机的结构,自然要先大概了解微机是什么、微机的发展史、微机的的特点。首先微型计算机是由大规模集成电路组成的、体积较小的电子计算机,它发展有三个阶段分别是——微机诞生前的阶段、微机阶段、网络阶段,其特点是体积小、质量轻、功耗低、可靠性高、使用环境要求低、结构简单、性能价格比高等。微机按照结构可分为:单片机、单板机、多芯片机、多板机,按照CPU芯片可以分为286机、386机、486机、Pentium机。而微机由微处理器或中央处理单元(CPU)、存储器、输入\输出接口电路和系统总线构成。而其中最主要的就是CPU ,特别是CPU执行指令的过程尤为重要,接下来就让我用一串0/1汇编代码来展示CPU内的运行流程:
.....
1000H XORAX, AX;
1002H LOOP: ADDAX, [2000H]
1004H MOV BX, [2002H]
1006H MOV[BX], AX
1008H JMPLOOP
.......
2000H:0007H
2002H:2004H
2004H:
假如在计算机内的某个时候,CPU执行到地址为1000H指令,即PC (8086中的程序计数器是IP)的值为1000H
1、执行1000H处的指令
此时,CPU的程序计数器(PC)的值是1000H,开始执行新的一条指令时,CPU首先将程序计数器内存放的程序地址经过CPU的内部总线地址寄存器AR(此时pc已经自动加2),AR将1000H地址经过外部地址总线送存储器,经过地址译码器选中1000H号单元,被选中的1000H和1001H两个单元的数据,在控制总线的读写控制信号的控制下,将其内存放的指令XOR AX,AX的二进制编码送经由外部数据总线送往数据寄存器DR(取指令阶段),然后·将数据寄存器DR中暂存的指令经过内部总线送往指令寄存器IR,指令寄存器收到指令码以后,将它锁存起来(在整个指令执行期间,指令码都不允许改变),然后,指令译码器将指令码译码,在时序信号的作用下,通过操作控制部件PLA产生操作控制信号,执行指令的功能。将数据寄存器DR中暂存的指令经过内部总线送往指令寄存器IR,指令寄存器收到指令码以后,将它锁存起来(在整个指令执行期间,指令码都不允许改变),然后,指令译码器将指令码译码,在时序信号的作用下,通过操作控制部件PLA产生操作控制信号,执行指令的功能。
2、执行1002H处的指令
当上一条指令执行完毕以后,CPU开始下一个指令周期的执行。首先,依然是取指令,将指令计数器中的地址1002H取出(PC+2),经过地址寄存器AR送往存储器,选中1002H和1003H两个存储单元(字节),得到指令ADDAX,[2000H]的二进制指令编码,将它通过外部数据总线送往数据寄存器DR,因为是取指,故而将AR中的内容,经过内部数据总线送到指令锁存器IR,经过指令译码器译码,再通过操作控制部件PLA产生操作控制信号(可以简化表示为:PC=>AR=)ABus=)Memery=) DBus=)DR=)IR,PC+2)。因为本条指令的功能是将2000H地址处的内容取出(汇编指令中的中括号表示是地址的含义),与累加寄存器的内容相加,并将结果存放到累加寄存器中。因此需要从指令中获取操作数的地址2000H,经过内部总线,将它送往地址寄存器AR,在经过外部地址总线选中2000H和2001H号单元,将此处存放的数据0007H经过数据总线送到数据寄存器DR至此,至此,指令的取数阶段完成。经过取指和取数阶段后,在操作控制部件的控制下,进行运算处理,将数据寄存器DR的内容0007H送到ALU算术逻辑部件的一个输入端,将累加寄存器的数据送到ALU(用于存放运算结果,不过对于程序员他是透明的)算术逻辑部件的另一个输入端,完成加法运算后,再将运算的结果回送指令的目的操作数——累加寄存器,指令的运算阶段完成。
3、执行1004H处的指令
上一条指令执行完毕以后,PC将它的内容(下一条要执行的指令地址)1004H送入地址寄存器AR,在经历了:PC=>AR=)ABus => Memery => DBus => DR => IR,PC+2的取指阶段以后,经过指令译码器分析,产生指令执行的动作序列信号,将从指令码中获取的地址2002H送到地址寄存器AR,经过AR=>ABus=) Memery =)DBus=> DR,将地址2002H和2003H中存放的地址值2004H取出,经过内部总线将2004H传送给数据寄存器BX。
4、执行1006H处的指令
上一条指令执行完毕以后,PC将它的内容(下一条要执行的指令地址)1006H送入地址寄存器AR,在经历了:PC=>AR=)ABus=)Memery=) DBus=)DR=)IR, PC+2的取指阶段以后,经过指令译码器分析,产生指令执行的动作序列信号,指令MOV [BX].AX的功能是将AX累加器中的内容送到以BX的寄存器内容为地址的存储器中,即所谓的寄存器间接寻址方式。将BX寄存器的地址值,经由AR=>ABus=》 Memery,选中存储器地址2004H和2005H单元这将经历一个机器周期。将累加器的内容,此时是0007H经由内部总线,数据寄存器DR,外部数据总线,传给存储器2004H和2005H单元。这个过程也将经历一个机器周期(此次指令包括了三个机器周期)。
5、执行1006H处的指令
上一条指令执行完毕以后,PC将它的内容(下一条要执行的指令地址)1006H送入地址寄存器AR,在经历了:PC=) AR=)ABus => Memery => DBus => DR =>IR,PC+2在取指阶段以后,经过指令译码器分析,产生指令执行的动作序列信号。指令JMPLOOP的功能是将程序无条件跳转到标号为LOOP的地址处执行,也即是将指令计数器PC的值更改为LOOP处的地址,从程序中我们可以看出,这个LOOP的地址值标在1002H处。因此,指令执行的动作信号是将从指令中得到的地址值LOOP(1002H),经过内部总线直接送给指令计数器PC,将PC的值修改为1002H,下一条指令将从1002H处开始执行。如果将PC计数器的加2操作称为指令码寻址的顺序寻址方式,本条指令则实现了指令码寻址的跳跃寻址方式,其他的跳跃寻址指令还包括有条件转移指令(高级语言中IF语句的功能承载),中断指令等。
至此,CPU中执行指令完结。