- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
11DSP技术第十一讲流水线操作技术
* 第十一讲 流水线操作技术 一、流水线操作 二、延迟分支转移的流水线图 三、条件招待指令的流水线图: 四、双寻址存储器的流水线冲突 五、流水线的冲突问题 一、流水线操作: 1)C54x采用6级流水线,可同时处理6条指令的6个不同阶段2)一条k级流水线能在k+(n-1)个机器周期内处理n条指令,非流水线处理n条指令需kn个机器周期。 X(执行) R(读数) A(寻址) D(译码) F(取指) P(预取指) 预取指级:用PC的内容加载PAB(1个机器周期) 取指级: 用读取到的指令字加载PB(1个机器周期) 译码级: PB上的内容加载指令寄存器(IR),并对IR内的指令进行译码,产生招待指令所需的一系列控制信号(1个机器周期) 寻址级: 根据译码结果,在需要的情况下将数据1读地址加载DAB、将数据2读地址加载CAB,修正辅助寄存器和堆栈指针(1个机器周期) 读数级: 将读数据1加载DB、读数据2加载CB,如果需要,用数据3读地址加载EAB,以便在流水线的最后一级将数据送到数据存储空间(1 个机器周期) 执行级: 招待指令,或用写数据加载EB(1个机器周期) 指令字、单字指令、双字指令、多字指令: 指令字:表征指令的二进制代码,由操作码和操作数组成 单字指令:由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
文档评论(0)