指令周期 | 您所在的位置:网站首页 › 时钟周期指令周期cpu周期 › 指令周期 |
指令周期的基本概念 指令周期:CPU从主存中每取出并执行一条指令所需的全部时间。 指令周期常常用若干个机器周期来表示,机器周期又叫CPU周期。 一个机器周期又包含若干个时钟周期(也称为节拍、T周期或CPU时钟周期,它是CPU操作的最基本单位)。 每个指令周期内机器周期数可以不等,每个机器周期内的节拍数也可以不等。 指令周期流程 (1)程序计数器PC中装入第一条指令地址101; (2)PC的内容被放到指令总线ABUS(I)上,对指令进行译码,并启动读命令; (3)从101号地址读出的MOV指令通过指令总线IBUS装入指令寄存器IR; (4)程序计数器PC内容+1,变成102,为取下一条指令做好准备; (5)指令寄存器中的操作码OP被译码; (6)CPU识别出是MOV指令。至此,取指周期结束。 执行周期(1)操作控制器OC送出控制信号到通用寄存器,选择R1(10)作为源寄存器,选择R0作目标寄存器。 (2)OC送出控制信号到ALU,指定ALU做传送操作; (3)OC送出控制信号,打开ALU输出三态门,将ALU输出送到数据总线DBUS上。注意,任何时候DBUS上只能有一个数据; (4)OC送出控制信号,将DBUS上的数据打入到数据缓冲寄存器DR(10); (5)OC送出控制信号,将DR中的数据10打入到目标寄存器R0,R0的内容由00变为10。 三条总线:ABUS(指令地址总线)、IBUS(指令总线)、DBUS(数据总线) 执行周期中的每一个操作都由操作控制器OC送出控制信号来执行。 LAD指令的指令周期LAD 指令是 RS 型指令,它先从指令存储器取出指令,然后从数据存储器 6 号单元取 出数据 100 装入通用寄存器 R1,原来 R1 中存放的数据 10 被更换成 100。由于一次访问指存,一次访问数存,LAD 指令的指令周期需要 3 个 CPU 周期。 (1)程序计数器PC中装入第一条指令地址102; (2)PC的内容被放到指令总线ABUS(I)上,对指令进行译码,并启动读命令; (3)从102号地址读出的LAD指令通过指令总线IBUS装入指令寄存器IR; (4)程序计数器PC内容+1,变成103,为取下一条指令做好准备; (5)指令寄存器中的操作码OP被译码; (6)CPU识别出是LAD指令。至此,取指周期结束。 执行周期(1)操作控制器OC发出控制命令打开IR输出三态门,将指令中的直接地址码6放到数据总线DBUS上; (2)OC发出操作命令,将地址码6装入数存地址寄存器AR; (3)OC发出读命令,将数存6号单元中的数100读出到DBUS上; (4)OC发出命令,将DBUS上的数据100装入缓冲寄存器DR; (5)OC发出命令,将DR中的数100装入通用寄存器R1,原来R1中的数10被冲掉。至此,LAD指令执行周期结束。 注意,数据总线DBUS上分时进行了地址传送和数据传送,所以需要2个CPU周期。 RS型指令有三个CPU周期,一次访问指存,一次访问数存,还有一次执行; 取指周期都一样,具体差别在执行周期上。 ADD指令的指令周期ADD 指令是 RR 型指令,在运算器中用两个寄存器 R1 和 R2的数据进行加法运算。指 令周期只需两个 CPU 周期,其中一个是取指周期,另一个是执行周期。 取指周期(1)程序计数器PC中装入第一条指令地址103; (2)PC的内容被放到指令总线ABUS(I)上,对指令进行译码,并启动读命令; (3)从103号地址读出的LAD指令通过指令总线IBUS装入指令寄存器IR; (4)程序计数器PC内容+1,变成104,为取下一条指令做好准备; (5)指令寄存器中的操作码OP被译码; (6)CPU识别出是ADD指令。至此,取指周期结束。 执行周期(1)操作控制器OC送出控制命令到通用寄存器,选择R1做源寄存器,R2做目标寄存器; (2)OC送出控制命令到ALU,指定ALU做R1(100)和R2(20)的加法操作; (3)OC送出控制命令,打开ALU输出三态门,运算结果120放到DBUS上; (4)OC送出控制命令,将DBUS上数据打入缓冲寄存器DR;ALU产生的进位信号保存在状态字寄存器PSWR中; (5)OC送出控制命令,将DR(120)装入R2,R2中原来的内容20被冲掉。至此,ADD指令执行周期结束。 STO指令的指令周期STO 指令是 RS 型指令,它先访问指存取出 STO 指令,然后按(R3)=30 地址访问数存, 将(R2)=120 写入到 30 号单元。由于一次访问指存,一次访问数存,因此指令周期需 3 个 CPU 周期,其中执行周期为 2 个 CPU 周期。 (1)程序计数器PC中装入第一条指令地址104; (2)PC的内容被放到指令总线ABUS(I)上,对指令进行译码,并启动读命令; (3)从104号地址读出的LAD指令通过指令总线IBUS装入指令寄存器IR; (4)程序计数器PC内容+1,变成105,为取下一条指令做好准备; (5)指令寄存器中的操作码OP被译码; (6)CPU识别出是STO指令。至此,取指周期结束。 执行周期(1)操作控制器OC送出操作命令到通用寄存器,选择(R3)=30做数据存储器的地址单元; (2)OC发出操作命令,打开通用寄存器输出三态门(不经过ALU以节省时间),将地址30放到DBUS上; (3)OC发出操作命令,将地址30打入AR,并进行数存地址译码; (4)OC发出操作命令到通用寄存器,选择(R2)=120,作为数存的写入数据; (5)OC发出操作指令,打开通用寄存器输出三态门,将数据120放到DBUS上; (6)OC发出操作命令,将数据120写入数存30单元,它原先的数据40被冲掉。至此,STO指令执行周期结束。 注意,DBUS是单总线结构,先送地址(30),后送数据(120),必须分时传送。 总结MOV指令 和 ADD指令 都是RR指令;类型相同,执行周期过程也相同 操作流程: 到通用寄存器中找到目标寄存器和源寄存器地址 告诉ALU它要做什么运算(加法还是传送) 将处理好的数据通过ALU三态门输出到DBUS总线上 将数据打入到DR(数据缓冲寄存器) 将数据覆盖掉目标寄存器中原有的数据 结束 LAD指令和STO指令都是RS指令,之所以相较于RR多了一个周期,是因为要访问cache。 LAD指令操作流程: 打开IR(指令寄存器)输出三态门,将直接地址打入到DBUS总线。 将数据打入到AR(数据地址寄存器)中去。 找到数存直接地址(6)对应的那个寄存器,将里面的数(100)放入到DBUS总线上。 打入到DR(数据缓冲寄存器)。 覆盖掉通用寄存器R1原有的数据。 结束。 STO指令操作流程: 打开IR输出三态门,将R3传送到DBUS上面 将R3打入到通用寄存器中,取出里面的数据 打开通用寄存器三态门,将数据打入到DBUS总线上 传入到AR,找到30对应的那个寄存器 打开IR输出三态门,将R2传送到DBUS上面 将R2打入到通用寄存器中,取出里面的数据 打开通用寄存器三态门,将数据打入到DBUS上 传入AR,将数据写入30对应寄存器中,原有的数据(40)被覆盖了 结束。 |
CopyRight 2018-2019 实验室设备网 版权所有 |