打印

C54x DSP的流水线操作以及优化指南

[复制链接]
3006|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
biechedan|  楼主 | 2015-1-26 23:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
流水线操作是指各个指令以机器周期为单位,相差一个时间周期、连续并行发生的一系列总线操作,对于多总线的Harvard结构有可能使用同一条指令,在不同的机器周期内占用不同的总线资源;也可以不同指令在同一机器周期内占用不同的总线资源。基于C54x DSP的处理器平台,其流水线的特点会在具体的开发过程中可以利用来做优化。
1.'C54xx的六级流水指令




相关帖子

沙发
biechedan|  楼主 | 2015-1-26 23:42 | 只看该作者
Prefetch 预取指:用PC中的内容加载PAB

Fetch 取指:用读到的指令 字加载PB

Decode译码: 用PB的内容加载IR,对IR的内容译码

Access寻址: 用数据1读地址,加载DAB;用数据2读地址,加载CAB;修正辅助寄存器和堆栈指针

Read读数:读数据1,加载DB;读数据2,加载CB;如果需要,将数据3写地址加载EAB

eXecute/write执行:执行指令;用写数据加载EB

'C54x流水线中所涉及的硬件

使用特权

评论回复
板凳
biechedan|  楼主 | 2015-1-26 23:43 | 只看该作者

使用特权

评论回复
地板
biechedan|  楼主 | 2015-1-26 23:43 | 只看该作者
当结果回存到存储器时,"Write"被分成2个阶段:
# 产生写地址(占用R Phase)
#写结果(占用X Phase)
'C54xx流水线中存储器存取操作


使用特权

评论回复
5
biechedan|  楼主 | 2015-1-26 23:43 | 只看该作者
DARAM的半周期寻址:对DARAM,一般读在前半周,写在后半周


使用特权

评论回复
6
biechedan|  楼主 | 2015-1-26 23:44 | 只看该作者
2、延时分支转移在流水线上的操作
延时分支转移 (B b1)流水线图


使用特权

评论回复
7
biechedan|  楼主 | 2015-1-26 23:44 | 只看该作者
3、流水线的冲突
1)流水线冲突的原因及解决:
2)流水线冲突情况分析:
3)可能引发冲突的相关的硬件资源 (Phase≌Affected Phase)


使用特权

评论回复
8
biechedan|  楼主 | 2015-1-26 23:44 | 只看该作者
例: ORM #20, PMST ; OVLY=1 (2w, 2c)


使用特权

评论回复
9
biechedan|  楼主 | 2015-1-26 23:45 | 只看该作者
4)情况3,提前安排写操作
# 对MMR及有关的状态寄存器状态位都是在初始化时设置的,在整个运行期间不发生变化;
# 通常写入和读出之间差6个周期以上,可以避免冲突;
# 推荐常用指令:(这些指令可以把流水线冲突减到最小)


使用特权

评论回复
10
biechedan|  楼主 | 2015-1-26 23:45 | 只看该作者
5)情况4分析:

# 通常是在对MMR、ST0、ST1、PMST进行连续操作时会导致流水线的冲突;

# 解决方法:

① 采用保护性指令:这些指令在对MMR写操作时提前1 cycle(即在Read Phase) 写入,因为一旦常数被译码,立即写入;

◎ 对MMR的写操作引起的冲突;

◎ 对双字或三字指令都提供隐含的保护周期;

使用特权

评论回复
11
biechedan|  楼主 | 2015-1-26 23:45 | 只看该作者
保护性指令列表
Protected Instructions Name
Pipeline Phase

STM #K, MMR
Read
2w/2c
POPM MMR
Read
1w/1c
MVDK Smem, dmad
Read
2w/2c
MVDD Xmem, Ymem
Read
1w/1c
MVMM MMR(src), MMR(dst)
Write
1w/1c
ST #K, Smem
Read
2w/2c
POPD Smem
Read
1w/1c
MVMD MMR, Smem
Read
2w/2c


使用特权

评论回复
12
biechedan|  楼主 | 2015-1-26 23:46 | 只看该作者
②应用等待周期表
# 等待周期表,给出了对MMR以及控制字段进行写操作时的各种指令所需插入的等待周期数;
下图给出对MMRs标准写操作所需的最大等待周期数


使用特权

评论回复
13
biechedan|  楼主 | 2015-1-26 23:46 | 只看该作者
4、Notes注意点

# 利用在线帮助正确使用指令,尽量避免流水线的冲突;

# 应用CCS编译时的流水线冲突提示:

Project →Build Option →Compiler → Diagnostics

Warn on Pipeline Conflicts

使用特权

评论回复
14
zhangjin_comeon| | 2015-1-27 23:00 | 只看该作者
绝对好资料

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

294

主题

7936

帖子

12

粉丝