马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
1.
ARM的3级流水线介绍 到ARM7为止,ARM处理器使用的简单3级流水线分别为: 取指级。取指级完成程序存储器中指令的读取,并放入指令流水线中。 译码级。对指令进行译码,为下一个周期准备数据路径需要的控制信号。这一级指令“占有”译码逻辑,而不“占有”数据路径。 执行级。指令“占有”数据路径,寄存器堆被读取,操作数在桶式移位器中被移位,ALU产生相应的运算结果并回到目的寄存器,ALU结果根据指令需要更改状态寄存器的条件位。 在任意时刻,可能有3种不同的指令占用着3级中的一级,因此流水线正常的条件是在任意时刻,每一级中的硬件必须能够独立操作,而不能2级或多级占用同义硬件资源。 当处理器执行简单的数据处理指令时,流水线使得每个时钟周期能完成一条指令。一条指令用3个周期来完成,因此有3个周期的执行时间,但吞吐率是每个周期一条指令。 当执行多周期指令时,指令的执行流程不规则,图中表示了一组单周期指令ADD,而在第一个ADD指令的后面出现一个数据存储指令STR。访问主存储器的周期用浅阴影表示,因此看到在每一个周期中都使用了存储器。同样,在每一个周期中都使用了数据路径,这涉及带所有执行周期、地址计算和数据传送。译码逻辑总是产生数据路径在下一个周期使用的控制信号,因此除译码周期外,在STR地址计算中也产生数据传送所需的控制信号。 这样,在这个指令序列中,处理器的所有部件在每个时钟周期中都要执行相应的操作。对于ARM7,不可能同时占用冯诺曼存储器机构的端口,因此确定了不可能同时访问数据存储器和程序存储器。存储器时一个限制因素,造成了ARM流水线中断。
ARM3级流水线下PC的行为 在3级流水线的执行过程中,当通过R15寄存器直接访问PC时,必须考虑此时流水线执行过程的真实情况。 流水线处理器的执行使得程序计数器PC必须在当前指令之前计数。对于图所示的3级ARM,可以看到,在以当前PC+4取得指令(在图中取得指令2时,当前的PC+4送到PC,当前的PC相对于第一条PC为PC+4,即PC+8)PC值都要增加,因此在第一条指令执行周期的开始即execute1时,得到PC+8,第二条指令执行周期的开始即execute2时(也就是第三条指令3取指时),得到PC+12.
凌阳教育,专注嵌入式人才培养13年,完善的培养方案,强大的师资,合理的课程安排,成功从小白蜕变为嵌入式工程师。想了解凌阳教育,或者获得更多嵌入式学习资料的免费下载,请点击www.sunplusedu.com访问凌阳教育官网 |