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