1、BIT/TIa1第二讲 流水线介绍BIT/TIa2学习内容 描述C62xx流水线操作 定义:取指包、执行包、延迟间隙 观察串联、部分串联和并行代码流过流水线情况 比较VeiociTI和标准VLIWBIT/TIa3题目一、为什么使用流水线?二、C62xx流水线各级介绍三、取指包四、代码通过流水线的过程举例五、串行、部分并行和完全并行代码通过 流水线的过程举例六、VelociTI与标准VLIWBIT/TIa4一、为什么使用流水线?BIT/TIa5非流水与流水的CPUBIT/TIa6二、C62xx流水线各级介绍BIT/TIa7流水线基本级描述流水线级描述程序取指(PF)产生程序取指地址读操作码译码(
2、D)确定操作码到功能单元路线指令译码执行(E)执行指令BIT/TIa8程序取指(PF-级)程序取指(PF)分为4个节拍:PG:程序地址产生 PS:程序地址发送 PW:程序访问等待 PR:程序接收BIT/TIa9译码(D级)译码分成2个节拍:DP:确定指令到功能单元路线(指令分配)DC:指令在功能单元译码BIT/TIa10C62xx指令类型和执行周期 C62xx所有指令仅需要1个周期执行,但有些指令的结果被延迟。类型描述数目延迟ISC单周期指令340IMPY乘法指令61LD取指令14B跳转指令45BIT/TIa11执行(E级)执行节拍描述E1完成单周期指令E2完成乘法指令E3E4E5数据读入寄存
3、器E6跳转发生BIT/TIa12取指令(LD)执行节拍 虽然取指令只需一个周期执行操作(E1),但结果延迟4个周期BIT/TIa13C62xx总流水线节拍 E2-E6结果延迟节拍BIT/TIa14三、取指包BIT/TIa15取指包BIT/TIa16C62xx系统方框图 256-bit片内程序数据总线BIT/TIa17四、代码通过流水线过程举例BIT/TIa18点积代码BIT/TIa19程序取指开始BIT/TIa20程序取指结束BIT/TIa21指令分配BIT/TIa22指令译码BIT/TIa23执行(E1)BIT/TIa24MVK完成,LDE1BIT/TIa25指令类型和延迟间隙(delay
4、slots)类型描述数目延迟间隙ISC单周期指令340IMPY乘法指令61LD取指令14B跳转指令45BIT/TIa26第二个LD进入E1BIT/TIa27MPY到达E1BIT/TIa28ADD到达E1BIT/TIa29MPY/ADD指令完成BIT/TIa30使ADD延迟执行BIT/TIa31ADD进入E1BIT/TIa32NOP与延迟间隙类型描述延迟间隙NOP数ISC单周期指令00IMPY乘法指令11LD取指令44B跳转指令55BIT/TIa33添加NOPBIT/TIa34使用多周期NOPBIT/TIa35代码性能642 周期3410ns(200MHz)30 周期150ns(200MHz)内
5、核循环:第一个 LD 1 第二个 LD 5 MPY 2 ADD/SUB 2 B 6 总周期数:16*40=640+2=642优化后BIT/TIa36五、串行、部分并行和完全并行代码通过流水线的过程举例BIT/TIa37串行代码BIT/TIa38串行执行BIT/TIa39部分并行代码BIT/TIa40部分并行执行BIT/TIa41部分并行执行(第一执行包进入DC)BIT/TIa42部分并行执行(第一执行包进入E1)BIT/TIa43部分并行执行(第二执行包进入E1)BIT/TIa44完全并行代码BIT/TIa45完全并行执行BIT/TIa46完全并行执行BIT/TIa47记住:B:5个延迟间隙 LD:4个延迟间隙 MPY:1个延迟间隙BIT/TIa48六、VelociTI与标准VLIWBIT/TIa49VelociTI与标准VLIWBIT/TIa50BIT/TIa51VelociTI与标准VLIW比较 VelociTI 可减小代码尺寸达到8:1 较少的程序取指 较少的功耗 较低的存储器成本BIT/TIa52VelociTI的EP/FP编排 执行包不能超出取指包边界 汇编器在编排执行包时,对于不够8条指令的取指包,用NOP填充。BIT/TIa53总结 C62xx流水线操作 取指包、执行包、延迟间隙 串行、部分并行和完全并行代码通过流水线 VelociTI结构