流水线操作技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第十一讲流水线操作技术
一、流水线操作
二、延迟分支转移的流水线图
三、条件招待指令的流水线图:
四、双寻址存储器的流水线冲突
五、流水线的冲突问题
指令字、单字指令、双字指令、多字指令:
指令字:表征指令的二进制代码,由操作码和操作数组成
单字指令:由16位二进制代码表示的指令(1个字)
双字指令:由32位二进制代码表示的指令(2个字)
多字指令:由n*16位二进制代码表示的指令(n个字)
说明:
1)执行一条单字指令至少需要1个指令周期(6个机器周期)
2)执行一条双字至少指令需要2个指令周期
3)程序执行时只能依次取出一个指令字,不能同时取出两个指令字
1)一般在一条指令中操作码占8位,其余为操作数位
2)若操作数不超过8位则为单字指令,否则为双字指令或多字指令3)立即数寻址为单字(立即数为3、5、8位),双字(9、16位)4)绝对地址寻址为双字指令
5)累加器寻址为单字(*ARx)或双字(#lk)指令
6)直接寻址为单字指令
7)间接寻址为单字指令
9)存储器映象寄存器寻址为单字指令
10)堆栈寻址为单字指令
双操作数间接寻址的指令格式:单字指令
机器周期、指令周期、
1个机器周期
1个指令周期
基于流水线的存储器访问:
二、延迟分支转移的流水线图:
取出要转移的
地址完成转移
知道要转移得到转移的地址将要转移的地址加载PAB
执行转移只需2个周期
实现转移
浪费2个周期
开始执行转移
实际使用4个周期
1)被冲洗掉的两个单周期指令并不占用转移后指令的执行阶段,它们刚好是在各级错开的。
2)在6级流水线中执行双字分支转移转移指令必须要4个机器(即4个指令周期)周期才能完成,在满流水线中执行相当于只占用2个指令周期(机器周期),另外2个周期可用于完成两条单周期指令或一条双周期指令的执行。
3)采用延迟分支转移指令可利用转移指令后的两个周期,即在延迟分支转移指令后安排两条单周期或一条双周期指令,该指令不能是分支或重
复指令。
4)具有延迟操作功能的指令有:
BD FBD BACCD FBACCD BANZD CALLD CALLD FCALLD FCALLD RETD FRETD RETED FRETED RETFD FRETD CCD RCD
例3-9 在完成R=(x+y)*z操作后转移至next r的程序段有两种编写方式:
利用普通分支转移指令B
LD @ x , A
ADD @ y , A
STL A , @ s
LD @ s , T
MPY @ z , A
STL A , @ R
B next
共8个指令字,10个指令周期利用延迟分支转移指令BD LD @ x , A
ADD @ y , A
STL A , @ s
LD @ s , T
BD next
MPY @ z , A
STL A , @ R
共8个指令字,8个指令周期
利用普通分支转移指令B LD @ x , A ADD @ y , A
STL A , @ s
LD @ s , T MPY @ z , A
STL A , @ R
B next
共8个指令字,10个指令周期LD @ x , A
ADD @ y , A
STL A , @ s
LD @ s , T
MPY @ z , A
STL A , @ R
B next
完成转移
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
LD @ x , A
ADD @ y , A
STL A , @ s
LD @ s , T
MPY @ z , A
STL A , @ R
BD next
完成转移
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
利用延迟分支转移指令BD LD @ x , A ADD @ y , A STL A , @ s LD @ s , T BD next MPY @ z , A STL A , @ R 共8个指令字,8个指令周期
三、条件招待指令的流水线图:
条件招待指令:XC n , cond [ , cond , [ ,cond ]]
求解条件决定后面
指令是否执行
1)条件执行指令是一条单字单周期指令,比条件跳转指令快。
2)条件在XC指令进入执行阶段的前两个周期已经求解出来,如果在这之后到执行前改变条件(如发生中断),将会造成无法预期的结果,所以要尽国避免在XC指令执行前两个周
期改变所规定的条件。
四、双寻址存储器的流水线冲突:
1。C54x片内的双寻址存储器(DARAM)分成若干独立的存储器块,允许CPU在单个周期内对其进行两次访问,包括三种情况:
1)在单周期内允许同时访问DARAM的不同块,不会带来时序上的冲突;
2)当流水线中的一条指令访问某一存储器块时,允许流水线中处于同一级的另一条指令访问另一存储器块,不会带来时序上的冲突;
3)允许处于流水线不同级上的两条指令同时访问同一个存储器块,不会带来时序上的冲突。