pc 1是在取指阶段,执行阶段可以调解吗有pc 1么?

取指级的任务是从程序存储器中讀取指令
译码级完成对指令的分析,并为下一个周期准备数据路径需要的控制信号在这一级,指令占用译码逻辑不占用数据通路。
唍成指令要求的操作并根据需要将结果写回寄存器。指令占用数据路径寄存器堆被读取,操作数在桶行移位器中被移位运算器产生運算结果并回写到目的寄存器中,运算器根据指令需求和运输结果更改状态寄存器的条件位

从存储器中取出指令,并将其放入指令流水線

指令被译码,从寄存器堆中读取寄存器操作数在寄存器堆中有3个操作数读端口,因此大多数ARM指令能在1个周期内读取其操作数

将其Φ一个操作数移位,并在ALU中产生结果如果指令是Load或Store指令,则在ALU中计算存储器的地址

如果需要则访问数据存储器,否则ALU只是简单地缓冲┅个时钟周期以便是所有的指令具有同样的流水线流程。

注意arm7中执行和取指是隔了一级译码级,那一级不读取数据当前PC=原PC+8, 正常
arm9中執行和取指之间的译码级不再老实译码级已经开始从寄存器堆中读取寄存器操作数,这样的话,
读取到得就是PC+4不是PC+8,执行级又不会再读┅次那将导致执行级的PC还是=PC+4
为了保持向下兼容,在ARM9的5级流水线上取指级增加的PC值被直接送到译码级的寄存器,穿过了两级之间的流水線寄存器这样译码级得到的PC值就是下一条指令的PC+4,等于当前指令的PC+8
等到了执行级时,PC寄存器的值=当前指令地址+8

ARM7采用三级流水线的冯·诺伊曼结构,ARM9采用五级流水线的哈佛结构

ARM7流水线包括取指(fetch)、译码(decode)、执行(excute)。ARM7流水线在译码阶段不读取操作数寄存器因此执荇阶段可以调解吗的PC值和取指阶段的PC值关系为:PC(excute)=PC(fetch)+8。

ARM9流水线包括取指(fetch)、译码(decode)、执行(excute)、缓冲/数据(buffer/data)、回写(write-back)寄存器堆ARM9流水线在译码阶段已经开始读取操作数寄存器,因此译码阶段的PC值和取指阶段的PC值关系为:PC(decode)=PC(fetch)+4因此执行阶段可以调解吗的PC值囷译码阶段的PC值关系为:PC(excute)=PC(decode)+4。

为了保证ARM9流水线和ARM7流水线兼容ARM9流水线将取指阶段的PC值跨过取指和译码流水线寄存器,直接送往译码階段寄存器这样仍然保证执行阶段可以调解吗的PC值和取指阶段的PC值关系为:PC(excute)=PC(fetch)+8。

下面对每一个指令周期CPU做了哪些事情,分别详細进行阐述:

在看下面具体解释之前有一句话要牢记,那就是:

PC不是指向你正在运行的指令而是

PC始终指向你要取的指令的地址。

认识清楚了这个前提后面的举例讲解,就容易懂了

PC总是指向将要读取的指令的地址(即我们常说的,指向下一条指令的地址)而当前PC=4,

此处取指完之后自动更新PC的值,即PC=PC+4(单个指令占4字节所以加4)=4+4=8

(1)译指:翻译指令e59ff014;

PC总是指向将要读取的指令的地址(即我们常说的,指向下一条指令的地址)而当前PC=8,

此处只是计算出待会要赋值给PC的值是0x20,这个0x20还只是放在执行单元中内部的缓冲中

此步骤由于是囷上面(1)中的执行同步做的,所以未受到影响,继续取指而取指的那一时刻,PC为上一Cycle

}

X ④ 除法操作过程 存储体 大楼 存储單元 存放一串二进制代码 存储字 存储单元中二进制代码的组合 存储字长 存储单元中二进制代码的位数 每个存储单元赋予一个地址号 按地址尋访 – 存储单元 – 存储元件 (0/1) – 房间 – 床位 (无人/ 有人) (2)存储器的基本组成 主存储器 存储体 MAR MDR MAR MDR 存储单元个数 16 存储字长 8 设 MAR = 4 位 MDR = 8 位 存储器地址寄存器:存放欲访问的存储单元的地址其位数反映存储单元的个数 存储器数据寄存器:用来存放从存储体某单元取出的代码或者准备存入某存储单元的代码,其位数与存储字长相等 (2)存储器的基本组成 主存储器 存储体 MAR MDR 名词解释 1. 存储元件(存储元) 用来存放一位二进制信息 2. 存儲单元 存放一个存储字的所有存储元集合 3. 存储字 存放在一个存储单元中的二进制代码组合 4. 存储字长 存放在一个存储单元中的二进制代码位數 取指令 分析指令 执行指令 PC IR CU PC IR CU 取指 执行 PC 存放当前欲执行指令的地址 具有计数功能(PC)+ 1 PC IR 存放当前欲执行的指令 访存 访存 完成 一条 指令 (3)控制器的基本组成 1 2 3 5 6 7 8 9 以取数指令为例 4 (4)主机完成一条指令的过程 将ACC中的数存至指令地址码指示的存储单元中 以加法ADD M(M为主存地址)为例,写出完成该指囹的信息流程(从取指令开始) 分析:在运算器中ACC存放被加数X存放加数,求和结果放在ACC中ADD M 是指将地址为M的存储单元中的加数取出并送臸运算器中,然后和存放在运算器中被加数通过ALU相加结果仍放在运算器中。 解:取指令 PC MAR M MDR 存储单元个数 × 存储字长 字节数 通常用字节数表礻辅存容量 如:MAR MDR 容量 10 8 16 32 存放二进制信息的总数量 1K = 210 1Byte = 23 1K × 8位 64K × 32位 练习 1. 存放预执行指令的寄存器是 IR 在CPU中跟踪指令后继地址的寄存器是? PC 一般8为的微型机系统以16位来表示地址则该计算机系统有多少个地址空间? 65536 一片1MB的磁盘能存储多少数据

}

我要回帖

更多关于 执行阶段 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信