首页 > 编程知识 正文

在DSP中什么是流水线技术,嵌入式流水线技术

时间:2023-05-03 11:47:36 阅读:109522 作者:4076

参考书籍: 《计算机体系结构:量化研究方法》

基本概念吞吐量:单位时间内可完成的指令数(常用单位GIPS,每秒千兆位);

延迟:从头到尾执行一个指令所需的时间(常用单位ps )。

吞吐量和延迟互为倒数。 延迟必须以ns为单位。

关键点RISC处理器的经典五级流水线是重叠执行多条指令的实现技术。 一个指令的执行需要多个操作,流水线技术充分利用了这些操作之间的并行性。

在管线中下移一个指令所用的时间是处理器周期(通常一个时钟周期)。 由于所有阶段同时进行,所以处理器周期的长度取决于最慢的管线所需的时间。

流水线可以缩短每个命令的平均执行时间,降低CPI (执行一个命令所需的时钟周期数)。

RISC体系结构具有几个重要属性,可以大大简化实现流水线的方式。

所有的数据操作都是对寄存器内数据的操作; 只有加载(从存储器向寄存器传输数据)和存储(从寄存器向存储器传输数据)的操作影响内存的命令格式数量很少,所有命令通常大小相同。 大多数RISC体系结构(如MIPS )通常包含三种类型的指令: ALU指令、加载和存储指令以及分支和跳转指令。

在RISC命令集中,每个命令最多需要五个时钟周期。

指令读取周期(IF )指令解码周期/寄存器读取周期(ID )执行周期/有效地址周期(EX )存储器访问周期(MEM )回写周期(WB ) )。

为了避免不同流水级别的指令相互干扰,在连续流水级别之间引入流水线寄存器时,在一个流水级别上获得的所有结果将在时钟周期的末尾存储在寄存器中,并在下一个时钟周期中用作下一级的输入。

流水线化虽然可以提高CPU指令的吞吐量,但不会缩短单一指令的执行时间。 相反,由于流水线控制会产生开销,因此通常每个指令的执行时间也会稍长。

流水化加速比 = 非流水化指令平均执行时间 流水化指令平均执行时间

流水线冒险阻止指令流中的下一条指令在自己指定的时钟周期内执行,从而降低流水线化获得的理想加速比。

结构风险:在级联执行模式下,如果硬件不能同时支持所有可能的指令组合,则会发生资源冲突,从而导致结构风险。 数据风险:由于管线中指令的重叠,指令之间存在优先级,如果一个指令依赖于以前指令的结果,则可能会导致数据风险。冒险控制:如果分支指令或其他更改程序计数器的指令流水化,则用于冒险控制传输传输是硬件技术,重要的是意识到,如果它可以导致数据的风险,那么下一命令在前面的命令实际生成结果之前不会被实际使用。 上一个命令将运算结果输入流水线寄存器,如果可以从这里移动到下一个命令需要的地方,就可以避免停顿的发生。

来自EX/MEM和MEM/WB流水线寄存器的ALU结果总是被反馈到ALU的输入端; 如果传输硬件检测到上一个ALU操作对当前ALU操作的源寄存器执行了写入操作,则控制逻辑将选择传输结果作为ALU输入,而不是选择从寄存器堆读取值。 需要传输的结果可能不仅来自上一个命令,还来自两个周期前启动的命令。

需要停顿的数据风险并不能绕过所有潜在的数据风险来处理。 例如,使用加载指令结果生成的数据风险无法通过简单的硬件排除,因为在MEM周期结束之前无法获得数据。

为了保持正确,加载指令需要一种称为“流水线联锁”的执行模式。 通常,管线联锁会检测到风险,并在风险被清除之前停止管线,直到源命令生成数据为止,等待要使用某个数据的命令。

延迟分支在五阶段流水线中引起一个周期的停顿。 延迟分支是处理这个问题的编译时机制。

延迟分支的执行周期为分支指令——依次被后续指令——选中时的分支目标。 其中,后续指令位于分支延迟槽中,无论是否选择分支都被执行。

编译器的任务是启用和使用后续指令,因此需要使用几种优化方法。

在延迟插槽中加载分支之前,最好先加载不相关的命令。 填写充分分支的目标命令(一般需要复制),用于循环分支; 必须输入未选择的命令,以确保程序正确运行。 延迟分支调度的极限是对在延迟时隙中可放置的指令有限制。 为了增加编译器充分分支延迟时隙的能力,处理器可以释放分支。 当分支动作与预期一致时,分支延迟槽内的指令会像正常的延迟分支一样执行,反之则转移到空操作。

动态分支预测中最简单的分支预测机制是分支预测缓冲器,是基于分支指令地址的地位部分来索引的小型存储器。

分支预测缓冲区包含指示最近是否选择了分支的位。 该机制是最简单的缓冲区形式,如果分支延迟过长,可用于缩短分支延迟。

在采用这样的缓冲器的情况下,实际上不知道预测是否正确。 该预测是提示,假设它是正确的,开始向预测方向提取。 如果该提示最终错误,请反转预测位并保存。

缓冲区的性能取决于关注的分支的预测频率和该预测匹配时的精度这两点。

这种1比特预测机制存在性能弱点。 即使始终选择了某个分支,但在未选择时,

我们也可能得到两次错误预测,因为错误预测会导致该预测位反转。

为了弥补这一弱点,我们经常使用2位预测机制:预测必须连续错过两次之后才会进行修改。

许多分支被选中和不被选中的概率并非均等,而是严重偏向其中一种状态,对于此类分支,2位预测器的错误预测率经常1位预测器。

对于一个n位计数器,其取值介于0到2n-1之间:当计数器大于或等于其最大值的一半时,分支被预测为选中,否则预测为未选中。对n位预测器的研究已经证明,2位预测器的效果几乎与n位预测器相同,所以大多数系统都采用2位分支预测器,而不是更具一般性的n位预测器。

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