1、cpu的基本结构:
cpu的基本部分由运算器,cache(缓存)和控制器 三大部分组成。一般情况下为了处理异常情况和特殊请求,还必须有中断系统;
cpu要完成取指令操作,必须要有存储器来存放当前指令的地址;要分析指令,必须要有存放当前指令的寄存器和对指令译码的部件;要执行指令,必须要有一个能发出各种命令序列的控制部件CU;要完成算数运算和逻辑运算,必须要有存放操作数的寄存器和进行运算的ALU;为了处理特殊情况还应该有中断系统。
因此cpu一般可由寄存器,控制单元(control unit),算术逻辑单元(arithmetic logic unit ),中断系统四个基本的部分组成。
控制器:
由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成,它是发布命令的“决策机构”,即完成协调和指挥整个计算机系统的操作。它的主要功能有: (1)从内存中取出一条指令,并指出下一条指令在内存中的位置;(2) 对指令进行译码或测试,并产生相应的操作控制信号,以便启动规定的动作;
运算器:
由算术逻辑单元(ALU)(这个ALU核心部件是加法器,加减乘除都是由加法器完成的)、累加寄存器、数据缓冲寄存器和状态条件寄存器组成,它是数据加工处理部件。相对控制器而言,运算器接受控制器的命令而进行动作 ,即运算器所进行的全部操作都是由控制器发出的控制信号来指挥的,所以它是执行部件。 运算器有两个主要功能: (1)执行所有的算术运算; (2)执行所有的逻辑运算,并进行逻辑测试,如零值测试或两个值的比较。
2、数据通路的功能和基本结构:
数据通路是cpu中算数逻辑单元(alu),控制单元(cu),寄存器之间的链接线路。
先介绍几个名词:
寄存器:用来暂时保存运算和控制过程中的中间结果,最终结果,还有控制,状态信息等,分为通用寄存器(general register)和专用寄存器(specialregister)。
数据寄存器(data register DR):用来暂时存放由内存读出的整理或者数据字,当向主存写入指令或者数据字时,也暂时存放在数据寄存器中。
(1)作为CPU和内存、外部设备之间信息传送的中转站;
(2)补偿CPU和内存、外围设备之间在操作速度上的差别;
(3)在单累加器结构的运算器中,数据缓冲寄存器还可兼作为操作数寄存器。
指令寄存器(instruction register IR):用来存放从存储器中取出的指令,以便在指令执行过程中,控制完成一条指令的全部功能。
程序计数器(program counter PC):又称指令计数器,用来存放正在执行或者下一条将要执行的指令的地址。既可以通过程序计数器+1形成下一条指令的地址,也可能由转移类指令形成转移地址送到程序计数器,作为下一条指令地址。
为了保证程序能够连续地执行下去,CPU必须具有某些手段来确定下一条指令的地址。而程序计数器正是起到这种作用,所以通常又称为指令计数器。在程序开始执行前,必须将它的起始地址,即程序的一条指令所在的内存单元地址送入PC,因此PC的内容即是从内存提取的第一条指令的地址。当执行指令时,CPU将自动修改PC的内容,以便使其保持的总是将要执行的下一条指令的地址。由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单的对PC加1。
但是,当遇到转移指令如JMP指令时,那么后继指令的地址(即PC的内容)必须从指令的地址段取得。在这种情况下,下一条从内存取出的指令将由转移指令来规定,而不是像通常一样按顺序来取得。因此程序计数器的结构应当是具有寄存信息和计数两种功能的结构。
地址寄存器(address register AR):用来保存当前cpu所访问的主存单元的地址,由于主存和cpu之间存在速度上的差别,所以必须要有地址寄存器来保存地址信息,直到主存的读写操作完成。
程序状态寄存器(program status register PWR):用来存放程序状态字,是用于反应cpu内部状态以及用于控制cpu某些部件的行为而专门设置的。
累加寄存器(AU):ALU的工作区。
累加寄存器AC通常简称为累加器,它是一个通用寄存器。其功能是:当运算器的算术逻辑单元ALU)执行算术或逻辑运算时,为ALU提供一个工作区。累加寄存器暂时存放ALU运算的结果信息。显然,运算器中至少要有一个累加寄存器。
目前CPU中的累加寄存器,多达16个,32个,甚至更多。当使用多个累加器时,就变成通用寄存器堆结构,其中任何一个可存放源操作数,也可存放结果操作数。在这种情况下,需要在指令格式中对寄存器号加以编址。
状态条件寄存器(pSW):保存各种条件码。
状态条件寄存器保存由算术指令和逻辑指令运行或测试的结果建立的各种条件码内容,如运算结果进位标志(C),运算结果溢出标志(V),运算结果为零标 志(Z),运算结果为负标志(N)等等。这些标志位通常分别由 1位触发器保存。
除此之外,状态条件寄存器还保存中断和系统工作状态等信息,以便使CPU和系统能及时了解机器运行状态和程序运行状态。因此,状态条件寄存器是一个由各种状态条件标志拼凑而成的寄存器。
控制单元:控制单元中除了包含上面介绍的 程序计数器,指令寄存器还包括指令译码器(instruction decoder)用来对指令寄存器中的操作码进行分析解释,产生相应的控制信号。时序控制信号形成部件(sequence shaping unit SSU)
总线:cpu内部通过片内总线进行信息交换,cpu和计算机内的其他部件,如存储器,io设备,通过计算机内部总线连接。
3、指令执行过程:一条指令的执行分为3个阶段:取指令阶段、分析指令阶段,执行指令阶段。
取指令阶段:
此阶段是最复杂,最值得研究的阶段。下面我们按步骤一步一步的来看:
1) 将程序计数器(PC)中的内容传送至存储器地址寄存器(MAR),并传送地址总线(AB)
2) 由控制单元(CU)经控制总线(CB)向存储器发读命令
3) 从主存中取出的命令通过数据总线(DB)送到存储器数据寄存器(MDR)
4) 将MDR的内容送至指令寄存器(IR)中。
5) 将程序计数器PC的内容增加,为取下一条指令做好准备。
分析指令阶段:
取出指令后,指令译码器(instruction decoder ID)可以识别和区分出不同的指令类型。此时计算机进入分析取数阶段。
执行指令阶段:
完成指令规定的各种操作,形成稳定的运算结果。