1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DSP第07讲

DSP技术及应用 教学课件 DSP技术及应用 第七讲 流水线 流水线 授课内容: 1.流水线操作 2.延迟分支转移 3.条件执行 4.双寻址存储器与流水线 5.单寻址存储器与流水线 6.流水线等待周期 流水线: 流水线操作 1.流水线操作 在执行指令时,DSP芯片广泛采用了多级流水线机制。流水线可以减少指令执行时间,增强 DSP 的处理能力。 流水线处理的原理是 : 将指令分为几个子操作 , 每个子操作由不同的 单元完成。这样 , 每隔 1 个时钟周期 , 每个单元就可以进入一条新指令。因此在同一个时钟 周期内 , 在不同的单元可以处理多条指令 , 相当于并行执行了多条指令。 流水线: 流水线操作 TMS320C54x 芯片采用了 6 级流水线的工作方式 , 即一条指令分为预取指、取指、译码、访问、读数和执行 6 个阶段。 每个阶段的任务如下: 预取指 : 将下一条指令的地址放在程序地址总线 (PAB) 上。 取指 : 从程序总线 (PB) 上取出指令字并放入指令寄存器 (IR) 。 译码 : 将 IR 中的指令译码 , 确定要访问存储器的类型以及数据地址产生单元(DAGEN) 和 CPU 的控制时序。 流水线: 流水线操作 寻址:DAGEN 在数据地址总线 (DAB) 输出要读的操作数的地址。如果还有第二 个操作数 , 在另一个数据地址总线 CAB 上输出相应的地址。然后更新间接寻址模 式下的辅助寄存器 (ARx) 和堆核指针 (SP) 。 读数:从数据总线 DB 和 CB 上读取操作数 , 完成操作数的读时序。同时 , 操作数的写时序开始。如果需要写数据 , 则写数据的地址放在数据写地址总线 (EAB) 上。 对存储器映射寄存器而言 , 数据是从存储器中读取 , 写数据时通过 DB 写入选择的存储器映射寄存器。 执行 : 在这个阶段完成指令的执行 , 并将数据放在数据写总线 (EB) 上完成操作数的写时序。 流水线: 流水线操作 流水线操作可用下图表示 流水线: 流水线操作 由于流水线操作中 , 各个阶段的单元可以同时独立工作 , 这样指令执行能够完全重叠。对于C54xDSP来说,在每个指令周期内 ,6 条不同的指令处于激活状态 , 每条指令处于不同的阶段。 如果流水线的深度为 n 级 , 则 DSP 在最大吞吐量时的运行速度为无流水线的 n 倍。 流水线: 流水线操作 以无条件转移语句为例说明流水线的工作情况。 流水线的工作过程所示。其中在左边标注每一行代表何种指令、操作数或者清洗流水线;顶部的数字代表单指令周期;每个方格代表流水线在不同阶段的相关动作。阴影部分代表完成无条件转移指令所必需的取数和流水线清洗等动作。 流水线: 流水线操作 流水线: 流水线操作 执行上面指令段 , 流水线需要分为以下 10 个周期执行。 周期 1: 转移指令的地址装入 PAB。 周期 2、3: 取出转移指令的两个指令字。 周期 4、5: 取出 i3、i4 指令。注意 : 尽管 i3、i4 指令位于转移指令之后 , 它们仍然会被C54x 取出 , 但是流水线不会使其进入译码阶段。当转移指令的第二个字译码以后 ,PAB 将 装入新值。 流水线: 流水线操作 周期 6、7: 转移指令的两个指令字进入执行阶段 , 同时在周期 6 中将从地址 b1中取出指令字j1。 周期8、9:由于i3、i4指令不执行,因此这两个周期均用在分支指令上。所以分支指令需要4个周期(周期6~9)才能执行完成。 周期10:执行j1指令。 流水线:延迟分支转移 2.延迟分支转移 从上述分支转移指令的流水线图可以看出, 实际上流水执行分支转移指令只需要2个周期,即周期6和7。但是 , 在周期 4 和 5 时它还未被执行 , 不可能到 b1 地址去取指 , 只能无效地在周期8、9对 i3 和 i4 指令取指 , 这样一来总共花了 4 个周期。 为了把浪费掉的2个周期利用起来,可以采用延迟分支转移操作。 流水线:延迟分支转移 ‘C54x的延迟分支转移指令允许紧跟在指令后面的 2 条单字、单周期指令 i3 和 i4 执行完毕。这样 , 只有周期 6 和 7 花在延迟分支转移指令上 , 而周期8和9花费在后续的2条单周期指令上,从而使延迟分支转移指令变成一条2周期指令。 其流水线如下图所示。 流水线:延迟分支转移 2.延迟分支转移 流水线:延迟分支转移 利用普通分支转移指令 B LD @x,A ADD @y,A STL A,@s LD @s,T MPY@z,A STL A,@r B next ( 共 8 个字 ,10 个 T) 利用延迟分

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档