1、C6000体系结构与汇编语言之三-流水线流水线非流水与流水的CPU流水线基本级描述程序取指(PF-级)程序取指(PF)分为4个节拍:PG:程序地址产生 PS:程序地址发送 PW:程序访问等待 PR:程序接收译码(D级)n译码分成2个节拍:DP:确定指令到功能单元路线(指令分配)DC:指令在功能单元译码C6000指令类型和执行周期 C62/C64所有指令仅需要1个周期执行,但有些指令的结果被延迟。(C67有功能单元等待时间)执行(E级)执行节拍描述E1完成单周期指令E2完成乘法指令E3E4E5数据读入寄存器E6跳转发生取指令(LD)执行节拍n虽然取指令只需一个周期执行操作(E1),但结果延迟4个
2、周期C62/C64总流水线节拍 E2-E6结果延迟节拍C67,E1E10取指包取指包代码通过流水线过程举例点积代码程序取指开始程序取指结束指令分配指令译码执行(E1)MVK完成,LDE1指令类型和延迟间隙(delay slots)类型 描述 延迟间隙 ISC 单周期指令 0 IMPY 乘法指令 1 LD 取指令 4 B 跳转指令 5 第二个LD进入E1MPY到达E1ADD到达E1MPY/ADD指令完成使ADD延迟执行ADD进入E1NOP与延迟间隙类型描述延迟间隙NOP数ISC单周期指令00IMPY乘法指令11LD取指令44B跳转指令55添加NOP使用多周期NOP代码性能642 周期3410ns(200MHz)30 周期150ns(200MHz)内核循环:第一个 LD 1 第二个 LD 5 MPY 2 ADD/SUB 2 B 6 总周期数:16*40=640+2=642优化后一个综合的例子B2记住:n B:5个延迟间隙n LD:4个延迟间隙n MPY:1个延迟间隙nC64:.M单元的非乘法指令 1个延迟间隙.M单元的扩展乘法指令 3个延迟间隙