首页 > 编程知识 正文

c++进阶心法 pdf(java程序设计读书心得)

时间:2023-05-04 03:20:10 阅读:73846 作者:4474

1、流水线的工作原理

典型的流水线设计,通过合理切断在原来的一个时钟周期内完成的大组合逻辑,分为多个时钟周期来完成,该部分逻辑执行的时钟频率明显提高,特别是在关键路径的情况下,如果采用流水线设计,则系统设计

为什么这么说,是因为缩短了关键路径的长度。 (结合Tsu和Thold的公式理解时,减少关键路径会减少Tdelay的大小。 )

2、经典的五级流水线

图为来自https://www.rvmcu.com/campus.html大学计划课程资源PPT

经典五级流水线由取值、解读、执行、回写、访问保存五个步骤组成。

3、流水线深度是否越深越好?

不同的管线深度有优缺点,需要根据不同的应用场景进行合理选择。 追求性能的话,级数可以更多; 如果追求面积和耗电量,级数可以少一点。

管线深度的正意义:管线的层数越多,管线切割得越细,存储在各级管线内容中的硬件逻辑就越少。 两级发射机之间的硬件逻辑越少,就意味着可以在更高的时钟频率下执行。 可以参考计算时钟的最高时钟频率。 因此,现代处理器流水线的深度主要被处理器追求高频的指标所驱动。 主频越高,意味着管线吞吐量越高,性能越高,这意味着管线深度越深。 (eg )高端Cortex-A系列由于有10多段流水线,最多可工作到2GHZ的主频。 英特尔的x86处理器在几十个流水线深度将主频提高到3-4GHz的高度)

流水线的负面含义: (1)各级流水线由寄存器组成,因此更多的流水线级数消耗更多的寄存器,消耗更多的面积开销。

)2)由于各阶段的管线需要握手,管线末级的反压信号串至最前级可能引起严重的时序问题,解决这种反压时序问题需要使用较高级的技巧。

)3)管道冲刷pipeline Flush )在管道取指令阶段,由于不知道条件跳变的结果是跳变还是不跳变,只能预测,到了管道末端,实际运算中该分支是否真的应该跳变如果发现真正的结果与以前预测的结果不匹配,则意味着预测失败,必须放弃所有预期的错误指令。 恢复正确的指示流程叫做管道清洗。 虽然可以使用分支预测器尽量准确前期的分支预测,但不能确保万无一失。 管线越深,就意味着更多错误的命令流程被提前采取,浪费和损失越严重。4、流水线和状态机的关系

处理器需要流水线吗?

答案不一定。 例如,8051核(8位单片机)微体系结构采用类似于状态机的方式,而不是流水线。 从功能上讲,处理器可以不用流水线,以状态机的方式实现,但这种方法性能较差,在现代处理器设计中很少见。

分析:

管线的本质:

)流水线不仅局限于处理器的设计,在ASIC电路的实现中被广泛采用。 管线本质上可以理解为以面积改变性能、以空间改变时间的手段。 例如,以五级流水线为例,由于添加了五组寄存器,每个流水线级数内部有各自的组合逻辑数据路径,彼此没有复用资源,因此面积开销大。 但可根据流水段数同时不同,达到流水效果,优化了时机,提高了性能,提高了吞吐量。

)流水线的另一种策略是状态机,状态机的“反转”是流水线,广泛用于所有ASIC电路。 状态机本质上可以理解为以性能改变面积,以时间改变空间。

)3)管线与状态机的关系还有“展开”和“折叠”两种说法。

状态机和流水线本质上都是电路设计时性能和面积的取舍。 假设在状态机而不是流水线上进行,则完成一个指令的所有操作需要多个时钟周期,每个时钟周期都需要状态机的一个状态(状态分别为指、解码、执行、访问、书写) 使用状态机可以节省流水线的寄存器开销,并对逻辑数据路径进行复用和组合,因此面积开销相对较小。 但是,每个指令需要五个周期才能完成,吞吐量和性能都很差。

5、流水线中的反压

(1)取消握手

)2)加入乒乓缓存

)3)加入前向旁路缓存

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。