写在前面:
- 本系列笔记主要以《计算机组成原理(唐朔飞)》为参考,大部分内容出于此书,笔者的工作主要是挑其重点展示,另外配合下方视频链接的教程展开思路,在笔记中一些比较难懂的地方加以自己的一点点理解(重点基本都会有标注,没有任何标注的难懂文字应该是笔者因为强迫症而加进来的,可选择性地忽略)。
一、指令周期概述
1、指令周期的基本概念
CPU每取出并执行一条指令所需的全部时间称为指令周期,也即CPU完成一条指令的时间,如下图所示。图中的取指阶段完成取指令和分析指令的操作,又称取指周期;执行阶段完成执行指令的操作,又称执行周期。在大多数情况下,CPU就是按“取指一执行-再取指-再执行…”的顺序自动工作的。
2、指令周期的长度
指令周期常常用若干机器周期来表示,机器周期又叫CPU周期,一个机器周期又包括若干个时钟周期(也称为节拍、T周日或CPU时钟周期,它是CPU操作的最基本单位)。
由于各种指令操作功能不同,因此各种指令的指令周期是不相同的。另外,每个指令周期内机器周期数可以不等,每个机器周期内的节拍数也可以不等。
3、具有间接寻址的指令周期
当遇到间接寻址的指令时,由于指令字中只给出操作数有效地址的地址,因此,为了取出操作数,需先访问一次存储器,取出有效地址,然后再访问存储器,取出操作数,这样,间接寻址的指令周期就包括取指周期、间址周期和执行周期3个阶段,其中间址周期用于取操作数的有效地址,因此间址周期介于取指周期和执行周期之间。
4、带有中断周期的指令周期
当CPU采用中断方式实现主机与I/O设备交换信息时,CPU在每条指令执行阶段结束前都要发中断查询信号,以检测是否有某个I/O设备提出中断请求,如果有请求,CPU则要进入中断响应阶段,又称中断周期,在此阶段,CPU必须将程序断点保存到存储器中,这样,一个完整的指令周期应包括取指、间址、执行和中断4个子周期。
5、指令周期流程
取指、间址、执行和中断4个周期都有CPU访存操作,只是访存的目的不同,取指周期是为了取指令,间址周期是为了取有效地址,执行周期是为了取操作数(当指令为访存指令时),中断周期是为了保存程序断点,这4个周期又可称为CPU的工作周期,为了区别它们,在CPU内可设置4个标志触发器。
二、指令周期的数据流
1、取值周期的数据流
PC中存放现行指令的地址,该地址送到MAR并送至地址总线,然后由控制部件CU向存储器发读命令,使对应MAR所指单元的内容(指令)经数据总线送至MDR,再送至IR,并且CU控制PC内容加1,形成下一条指令的地址。
2、间址周期的数据流
一旦取指周期结束,CU便检查IR中的内容,以确定其是否有间址操作,如果需要间址操作,则MDR中指示形式地址的右N位(记作Ad(MDR))将被送到MAR,又送至地址总线,此后CU向存储器发读命令,以获取有效地址并存至MDR。
3、执行周期的数据流
由于不同的指令在执行周期的操作不同,因此执行周期的数据流是多种多样的,可能涉及CPU内部寄存器间的数据传送、对存储器(或I/O)进行读写操作或对ALU的操作。
4、中断周期的数据流
CPU进入中断周期要完成一系列操作,其中PC当前的内容必须保存起来,以待执行完中断服务程序后可以准确返回到该程序的间断处。
由CU把用于保存程序断点的存储器特殊地址(如栈指针的内容)送往MAR,并送到地址总线上,然后由CU向存储器发写命令,并将PC的内容(程序断点)送到MDR,最终使程序断点经数据总线存入存储器。此外,CU还需将中断服务程序的入口地址送至PC,为下一个指令周期的取指周期做好准备。