单周期指令-Read.pptVIP

  • 100
  • 0
  • 约2.43千字
  • 约 64页
  • 2019-04-01 发布于天津
  • 举报
单周期指令-Read.ppt

C6000 流水线 赵翠芳 本次课程内容 为什么使用流水线? C6000流水线各级介绍 取指包 代码通过流水线过程举例 串联、部分并行和完全并行代码通过流水线的过程举例 流水线性能考虑 为什么使用流水线 微处理器结构复杂性换取速度提高。 指令分成子指令操作,不同部件来完成,对于每个部件而言,每隔1个时钟周期就可进入1条新指令。同一时间,多条指令交迭在不同部件来处理。 流水线 非流水与流水的CPU 流水线基本描述 流水线基本描述 每一级均包含几个节拍(phase) 所有指令取指级有4个节拍; 所有指令译码级有2个节拍; 执行级对不同类型的指令节拍数目不同。 流水线基本描述 流水线操作以CPU周期为单位。 1个流水线节拍=1个CPU时钟周期。 随着节拍,代码流经C6000内部流水线的各个部件。 程序取指(PF-级) 程序取指(PF)分为4个节拍: PG:程序地址产生 PS:程序地址发送 PW:程序访问等待 PR:程序接收 程序取指级 译码(D—级) 译码分成2个节拍: DP:确定指令到功能单元路线(指令分配) DC:指令在功能单元译码 流水线译码级 流水线执行级(E-级) 根据定点和浮点流水线分不同的节拍 定点:执行级5个节拍(E1~E5) 浮点:执行级10个节拍(E1~E10) 根完成不同类型指令所需节拍数目不同 C6000指令类型和执行周期 C62/C64所有指令仅需要1个周期执行,但有些指令的结果被延迟。(C67有功能单元等待时间) 执行(E—级) 单周期指令 E1节拍中所有的操作都能运行完毕。 读取操作数 运算 结果存储 乘法指令 16bit*16bit乘法指令 E1:读取操作数,乘法运算开始 E2:乘法运算结束,保存结果 LD指令 E1:计算数据存储目的地址 E2:地址发送至数据存储器 E3:读相应地址的存储器 E4:读取数据达CPU核边界 E5:读取数据加载寄存器 跳转指令 尽管跳转指令在一个执行节拍即能完成。 但在分支代码真正开始执行前会有5个时钟周期的延迟间隙。 指令类型和延迟间隙(delay slots) C62/C64总流水线节拍 E2-E6结果延迟节拍 C67,E1~E10 取指包 代码通过流水线过程举例 点积代码 程序取指开始 程序取指结束 指令分配 指令译码 执行(E1) MVK完成,LD→E1 指令类型和延迟间隙(delay slots) 第二个LD进入E1 MPY到达E1 ADD到达E1 MPY /ADD指令完成 使ADD延迟执行 ADD进入E1 NOP与延迟间隙 添加NOP 使用多周期NOP 代码性能 串行代码 串行执行 部分并行代码 部分并行执行 部分并行执行(第一执行包进入DC) 部分并行执行(第二执行包进入E1) 完全并行代码 完全并行执行 完全并行执行 记住: B: 5个延迟间隙 LD: 4个延迟间隙 MPY: 1个延迟间隙 C64: .M单元的非乘法指令 1个延迟间隙 .M单元的扩展乘法指令 3个延迟间隙 流水线性能考虑 一个取指包有多个执行包时的流水线 多周期NOP对流水线运行的影响 访问存储器对流水线运行的影响 一个取指包仅有一个执行包时的流水线 一个取指包中有多个执行包时的流水线操作 一个取指包中有多个执行包时的流水线操作 多周期NOP对流水线运行的影响 NOP是不使用功能单元的空操作 空操作的周期数由该指令选择的操作数决定 如果NOP和其他指令并行使用,将给其他指令加入额外的延迟间隙 多周期NOP对流水线运行的影响 例:单周期NOP与其他代码在一个EP中 多周期NOP对流水线运行的影响 例:多周期NOP与其他代码在一个EP中 产生除它的执行包内部指令操作之外的空操作 多周期NOP对流水线运行的影响 跳转指令可以影响多周期NOP的执行 当一个跳转指令延迟间隙结束时,多周期NOP指令不管是否结束,这时跳转都将废弃多周期NOP 访问存储器对流水线运行的影响 C6000片内为哈佛结构 有独立的程序存储空间和数据存储空间 程序读取和数据读取在流水线中有相同操作 均是有不同的节拍完成 访问存储器对流水线运行的影响 数据加载的LD指令和取指分配比较 访问存储器对流水线运行的影响 存储器阻塞:当存储器没有准备好对CPU的访问请求进行响应时,会发生存储器阻塞 程序存储器访问:发生在PW阶段 数据存储器访问:发生在E3阶段 访问存储器对流水线允许的影响 大部分的C6201/C6701系列DSP片内存储器的组织形式为交叉存储方案 分为若干存储体(bank) 4个bank的交叉存储器 LDB

文档评论(0)

1亿VIP精品文档

相关文档