5-第5次课-C54x的流水线_第1页
5-第5次课-C54x的流水线_第2页
5-第5次课-C54x的流水线_第3页
5-第5次课-C54x的流水线_第4页
5-第5次课-C54x的流水线_第5页
已阅读5页,还剩43页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章TMS320C54x的硬件结构一、流水线操作

流水线操作是指各条指令以机器周期为单位,相差一个时间周期而连续并行工作的情况。

操作原理:将指令分成几个子操作,每个子操作由不同的操作阶段完成。每隔一个机器周期,每个操作阶段可以进入一条新指令。在同一个机器周期内,在不同的操作阶段可以处理多条指令,相当于并行执行了多条指令。

2024/9/291DSP原理及应用第2章TMS320C54x的硬件结构1.流水线操作的概念

’C54x的流水线操作是由6个操作阶段或操作周期组成。在任何一个机器周期内,可以有1~6条不同的指令在同时工作,每条指令可在不同的周期内工作在不同的操作阶段。

2024/9/292DSP原理及应用第2章TMS320C54x的硬件结构1.流水线操作的概念

六个操作阶段:①预取指P;

②取指F;

③译码D;

④寻址A;

读数R;

执行X。

流水线结构:预取指P取指F译码D寻址A读数R执行X将PC中的内容加载PAB将读取到的指令字加载PB将PB的内容加载IR对IR的内容译码若需要,数据1读地址加载DAB若需要,数据2读地址加载CAB修正辅助寄存器和堆栈指针数据1加载DB数据2加载CB若需要,数据3写地址加载EAB执行指令写数据加载EB2024/9/293DSP原理及应用第2章TMS320C54x的硬件结构1.流水线操作的概念

各操作阶段的功能:预取指P:

F:

D:

在T1机器周期内,CPU将PC中的内容加载到程序地址总线PAB,找到指令代码的存储单元。

在T2机器周期内,CPU从选中的程序存储单元中,读取指令代码加载到程序总线PB。在T3机器周期内,CPU将PB中的指令代码加载到指令译码器IR进行译码,产生执行指令所需要的一系列控制信号。2024/9/294DSP原理及应用第2章TMS320C54x的硬件结构各操作阶段的功能:寻址A:

读数R:

执行X:

在T4周期内,CPU将数据1或数据2的读地址或同时将两个读地址分别加载到数据地址总线DAB和CAB中,并对辅助寄存器或堆栈指针进行修正。CPU在T5周期内,将读出的数据1和数据2分别加载到数据总线DB和CB中。若是并行操作指令,可同时将数据3的写地址加载到数据地址总线EAB中。在T6机器周期内,CPU根据操作码的要求执行指令,并将写数据3通过EB总线写入指定的存储单元中。

2024/9/295DSP原理及应用第2章TMS320C54x的硬件结构’C54x存储器操作的各种情况:①执行读单操作数指令

例如:LD*AR1,A;单周期指令,读单操作数

通过DB读出数据读地址加载DAB通过IR

指令译码通过PB读取指令加载PAB执行/写数读数R寻址A译码D取指F预取指P2024/9/296DSP原理及应用第2章TMS320C54x的硬件结构’C54x存储器操作的各种情况:②执行读双操作数指令

例如:MAC*AR2+,*AR3,A;单周期指令,

读双操作数

通过DB和CB读出数据读地址加载DAB和CAB通过IR

指令译码通过PB读取指令加载PAB执行/写数读数R寻址A译码D取指F预取指P2024/9/297DSP原理及应用第2章TMS320C54x的硬件结构’C54x存储器操作的各种情况:③执行写单操作数指令

例如:STH

A,*AR1;单周期指令,

写单操作数写地址加载EAB数据写至EB通过IR指令译码通过PB读取指令加载PAB执行/写数读数R寻址A译码D取指F预取指P2024/9/298DSP原理及应用第2章TMS320C54x的硬件结构’C54x存储器操作的各种情况:④执行写双操作数指令

例如:DST

A,*AR1;双周期指令,

写两个操作数

写地址1加载EAB数据1写至EB通过IR指令译码通过PB读取指令加载PAB执行/写数读数R寻址A译码D取指F预取指P写地址2加载EAB数据2写至EB执行/写数读数R寻址A译码D取指F预取指P2024/9/299DSP原理及应用第2章TMS320C54x的硬件结构’C54x存储器操作的各种情况:⑤执行读单操作数和写单操作数指令

例如:ST

A,*AR2;单周期并行加载存储指令,

||LD*AR3,B读单操作数和写单操作数

执行/写数读数R寻址A译码D取指F预取指PDB读数据写地址加载EAB读地址加载DAB通过IR指令译码通过PB读取指令加载PAB数据写至EB2024/9/2910DSP原理及应用第2章TMS320C54x的硬件结构’C54x存储器操作的各种情况:注意:

①预取指P、取指F和译码D操作都相同,但寻址A、读数R和执行X等操作随指令的不同而不同;

②若指令含有读操作,则读操作的寻址和读数分别发生在A和R级;

③若指令含有写操作,则写操作的寻址和写数分别发生在R和X级;④若是多字节指令,则数据的寻址需要若干个机器周期才能完成。

2024/9/2911DSP原理及应用第2章TMS320C54x的硬件结构2.7.2流水线操作2.分支转移的流水线操作

根据是否使用加延时的指令,分支转移的流水线操作可分为两种工作类型:

无延迟分支转移

延迟分支转移

2024/9/2912DSP原理及应用第2章TMS320C54x的硬件结构2.分支转移的流水线操作

(1)无延迟分支转移

地址指令注释

a1,a2

Bb1;四机器周期,两字的无延迟分支转移指令

a3i3;任意单周期,单字指令

a4i4;任意单周期,单字指令

……

b1j1a1,a2

Bb1

a3i3

a4i4……

b1j1T1PT2FT3DT4AT5RT6XT7T8T9T10BPAB=a1PB=BIR=BBPFDARXb1PAB=a2PB=b1IR=b1b1PFDARX流水线刷新

PAB=a3PB=i3PFDARX流水线刷新

PAB=a4PB=i4PFDARXj1PAB=b1PB=j1IR=j1j1T1:将分支转移地址a1加载PABT2:①对指令代码B取指

②a2加载PABT3:①对B指令译码

②取转移地址b1

③a3加载PABT4:①对b1译码

②对i3指令取指T5:①对i4译码

②转移地址b1加载PABT6:①执行指令B

②对j1指令进行取指T7:进行转移操作

对j1指令进行译码T8:i3指令进入执行阶段,但不执行T9:i4指令进入执行阶段,但不执行T10:执行j1指令执行B指令执行j1指令需四周期T6、T7:执行转移T8:不执行i3指令T9:不执行i4指令T10:执行j1指令四周期

分支转移指令B需要四个周期2024/9/2913DSP原理及应用第2章TMS320C54x的硬件结构2.分支转移的流水线操作

(1)延迟分支转移

地址指令注释

a1,a2

BDb1;四机器周期,两字的延迟分支转移指令

a3i3

;任意单周期,单字指令

a4i4

;任意单周期,单字指令……

b1j1

a1,a2

BDb1a3i3a4i4……b1j1T1PT2FT3DT4AT5RT6XT7T8T9T10BPAB=a1PB=BDIR=BDBDPFDARXb1PAB=a2PB=b1IR=b1b1PFDARXi3PAB=a3PB=i3i3

PFDARXi4PAB=a4PB=i4i4PFDARXj1PAB=b1PB=j1IR=j1j1T6和T7:执行延迟分支转移,需2个周期。T8和T9:执行i3和i4指令,需2个周期。

a1,a2

BDb1a3i3a4i4……b1j1四周期

T8:执行i3指令

T9:执行i4指令

对于延迟分支转移指令BD,允许紧随其后的2条单字单周期的指令执行完毕。2024/9/2914DSP原理及应用第2章TMS320C54x的硬件结构

【例2.7.1】

分别用分支转移指令B和BD编写程序如下,试分析各程序所需要的周期。

利用B指令编程

LD

@x,A

ADD

@y,A

STL

A,@s

LD

@s,T

MPY

@z,A

STL

A,@r

B

next;单字单周期;单字单周期;单字单周期;单字单周期;单字单周期;单字单周期;双字四周期6周期——4周期8字10周期

利用BD指令编程LD

@x,AADD

@y,ASTL

A,@sLD

@s,TBD

nextMPY

@z,ASTL

A,@r;单字单周期;单字单周期;单字单周期;单字单周期;双字双周期;单字单周期;单字单周期4周期2周期2周期8字8周期2024/9/2915DSP原理及应用第2章TMS320C54x的硬件结构2.分支转移的流水线操作

对于具有延迟功能的指令,合理地安排前后指令的顺序,可以节省机器周期。

指令说

明字数周期指令说

明字数周期BD无条件分支转移22FBD无条件远程分支转移22BACCD按累加器规定的地址转移14FCALLD无条件远程调用子程序22BANZD当辅助寄存器为0时转移22FRETD远程返回14BCD条件分支转移23FRETED开中断,从远程中断返回14CALAD按累加器规定的地址调用子程序14RCD条件返回13CALLD无条件调用子程序22RETD返回13CCD有条件调用子程序23RETED开中断,从中断返回13FBACCD按累加器规定的地址远程分支转移14RETFD开中断,从中断快速返回11FCALAD按累加器规定地址远程调用子程序14RPTBD块重复指令22具有延迟操作功能的指令

注意:延迟操作指令后面只有1~2个字的空隙,其后的指令不能使用其他分支指令或重复指令。而在CALLD或RETD的空隙不能使用PUSH和POP指令。

2024/9/2916DSP原理及应用第2章TMS320C54x的硬件结构3.条件执行的流水线操作

条件执行指令:XCn,cond[,cond[,cond]]功能:若满足条件cond,则执行下面n条指令,否则执行n条NOP操作。过程:①先判断给定条件cond是否满足;

②若满足,则连续执行紧随其后的n条指令;若不满足,则连续执行n条NOP操作。

2024/9/2917DSP原理及应用第2章TMS320C54x的硬件结构3.条件执行的流水线操作

例如:采用条件执行指令的程序如下:

a1i1

;任意单周期,单字指令

a2i2

;任意单周期,单字指令a3XCn,cond

;单周期,单字指令

a4i4

;任意单周期,单字指令

a5i5

;任意单周期,单字指令T3:XC指令地址a3加载PAB;T4:对XC指令进行取值;T6:XC指令寻址级,求解XC指令的条件。若条件满足,则i4和i5指令进入译码级并执行;若不满足,则不对i4和i5指令译码,执行NOP。

在T6周期,i1和i2指令还没执行完毕,执行结果不会对XC指令的条件判断产生影响。

XRADFPi4的条件执行PB=i4PAB=a4i4或NOPRT10AXT9i5的条件执行PB=i5PAB=a5i5或NOPXDFP判断condIR=XCPB=XCPAB=a3XCRADFPi1IR=i1PB=i1PAB=a1i1T8T7T6XT5RT4AT3DT2FT1Pi2IR=i2PB=i2PAB=a2i2XRADFPIR=i4PB=i5如果XC指令的判断条件由指令i1和i2的结果给出,则会得出错误的判断。

注意:①决定XC指令判断条件的指令应放在i1指令之前;

②在条件执行指令前屏蔽所有可能产生的中断或其他改变指令规定条件的运算。

2024/9/2918DSP原理及应用第2章TMS320C54x的硬件结构4.存储器的流水线操作

内部存储器双寻址存储器DARAM单寻址存储器读写存储器SARAM只读存储器ROM

存储器的流水线操作:

①双寻址存储器的流水线操作

单寻址存储器的流水线操作

2024/9/2919DSP原理及应用第2章TMS320C54x的硬件结构①双寻址存储器的流水线操作

DARAM分成若干个独立的存储器块,CPU可以在单个周期内对其访问2次。

’C5402DARAM0000~07FF0800~0FFF1000~17FF1800~1FFF2000~27FF2800~2FFF3000~37FF3800~3FFF0000~007F0080~07FF0800~0FFF1000~17FF1800~1FFF2000~27FF2800~2FFF3000~37FF3800~3FFF’C5402程序存储器0000007F00803FFF4000FFFF内部DARAM’C5402数据存储器0000007F00803FFF4000FFFF内部DARAM2024/9/2920DSP原理及应用第2章TMS320C54x的硬件结构①双寻址存储器的流水线操作

DARAM分成若干个独立的存储器块,CPU可以在单个周期内对其访问2次。

①在单个周期内允许同时访问不同的DARAM块;

②CPU同时处理两条指令访问不同的存储块;

③处于流水线不同阶段的两条指令,可以同时访问同一个存储块。

2024/9/2921DSP原理及应用第2章TMS320C54x的硬件结构①双寻址存储器的流水线操作

DARAM分成若干个独立的存储器块,CPU可以在单个周期内对其访问2次。

两次访问分别发生在机器周期的前半周期和后半周期,不会发生时序冲突。

利用PAB/PB取指——前半周期利用DAB/DB读第一操作数——前半周期利用CAB/CB读第二操作数——后半周期利用EAB/EB写操作数——后半周期2024/9/2922DSP原理及应用第2章TMS320C54x的硬件结构DARAM的半周期寻址图①取指令操作

预取指P取指F译码D寻址A读数R执行E读PB

在T2的前半周期,利用PB线进行读指令操作。②读单操作数操作

预取指P取指F译码D寻址A读数R执行E读DB

在T5的前半周期,利用DB线进行读存储器操作。2024/9/2923DSP原理及应用第2章TMS320C54x的硬件结构DARAM的半周期寻址图③读双操作数操作

预取指P取指F译码D寻址A读数R执行E读DB读CB

T5的前半周期,利用DB线读第一操作数;

T5的后半周期,利用CB线读第二操作数。④写单操作数操作

预取指P取指F译码D寻址A读数R执行E写EB在T6的后半周期,利用EB线写操作数。2024/9/2924DSP原理及应用第2章TMS320C54x的硬件结构DARAM的半周期寻址图⑤写双操作指令

预取指P取指F译码D寻址A读数R执行E写EB预取指P取指F译码D寻址A读数R执行E写EB

T6的后半周期,利用EB线写第一操作数。

T7的后半周期,利用EB线写第二操作数。⑥读单操作数和写单操作数操作

预取指P取指F译码D寻址A读数R执行E读DB写EB

T5的前半周期,利用DB线读操作数。在T6的后半周期,利用EB线写操作数。2024/9/2925DSP原理及应用第2章TMS320C54x的硬件结构①双寻址存储器的流水线操作CPU访问DARAM会发生流水冲突的情况:

①同时从同一存储块中取指令和读操作数;

②同时对同一存储块进行写操作和读第二操作数。

当发生流水冲突时,CPU可通过写操作延迟一个周期,或通过插入一个空操作来解决流水线冲突。2024/9/2926DSP原理及应用第2章TMS320C54x的硬件结构

例如:当执行下列程序发生时序冲突时,CPU能对取指自动延迟一个周期。

LD*AR2+,A;AR2指向相同的DARAM块

i2

;假定i2指令不访问DARAM

i3;假定i3指令不访问DARAM

i4PFDARELD*AR2+,A读DBPFDAREi2读PBPFDAREi3读PBPFDAREi4读PB第1条指令读操作数i4指令取指操作发生时序冲突

LD*AR2+,Ai2

i3i42024/9/2927DSP原理及应用第2章TMS320C54x的硬件结构PFDARELD*AR2+,A读DBPFDAREi2读PBPFDAREi3读PBPFDAREi4读PB

LD*AR2+,Ai2

i3i4PFDARE空操作PFDAREi4读PB2024/9/2928DSP原理及应用第2章TMS320C54x的硬件结构②单寻址存储器的流水线操作单寻址存储器:CPU在单个周期内对每个存储器块访问一次。分为:①单寻址读/写存储器SARAM;

②单寻址只读存储器ROM。2024/9/2929DSP原理及应用第2章TMS320C54x的硬件结构

单寻址存储器可分成若干存储器块。’C549数据存储器0000005F存储器映象寄存器0060007F暂存器SPRAM00801FFF片内DARAM20007FFF片内SARAM8000BFFF外部存储器C000FEFF片内ROMFF00FFFF保留外部存储器片内SARAM’C549SARAM2000~3FFF4000~5FFF6000~7FFF’C549SARAM2000~3FFF4000~5FFF6000~7FFF片内ROM’C549ROMC000~CFFFD000~DFFFE000~EFFFF000~FFFF’C549程序存储器0000005F0060007F00801FFF20007FFF8000BFFFC000FEFFFF00FFFF片内SARAM片内ROM2024/9/2930DSP原理及应用第2章TMS320C54x的硬件结构②单寻址存储器的流水线操作无时序冲突的操作:

CPU同时寻址不同的存储器块;

■CPU同时处理两条指令访问不同的存储器块。有时序冲突的操作:

CPU同时访问两次同一个存储器块。解决办法:

将第二次寻址操作自动延迟到下一个周期。2024/9/2931DSP原理及应用第2章TMS320C54x的硬件结构5.流水线的等待周期

’C54x的流水线结构,允许多条指令同时利用CPU的内部资源。由于CPU的资源有限,当多于一个流水线上的指令同时访问同一资源时,可能产生时序冲突。

解决的办法:

①由CPU通过延时自动解决;

②通过程序解决,如重新安排指令或插入空操作指令。2024/9/2932DSP原理及应用第2章TMS320C54x的硬件结构5.流水线的等待周期(1)流水线冲突产生流水线冲突的硬件资源:

①辅助寄存器(AR0~AR7);

②重复块长度寄存器(BK);

③堆栈指针(SP);

④暂存器(T);

⑤工作方式状态寄存器(PMST);

⑥状态寄存器(ST0和ST1);

⑦块重复计数器(BRC);

⑧存储器映像累加器(A和B)。2024/9/2933DSP原理及应用第2章TMS320C54x的硬件结构流水线冲突情况:’C54x系统程序C语言程序不产生冲突汇编语言程序存储器映象寄存器MMR写操作CALU运算不会产生冲突早安排写操作不产生冲突其它MMR写操作需用等待周期表12342024/9/2934DSP原理及应用第2章TMS320C54x的硬件结构流水线冲突情况:①若采用C语言编写源程序,经编译后生成的代码不会产生流水线冲突;②若采用汇编语言编写源程序,使用算术运算操作不会产生流水线冲突;③若采用汇编语言编写源程序,初始化时对MMR寄存器进行设置,不会发生流水线冲突;④通常流水线冲突发生在对MMR寄存器的写操作,可用等待周期表加以解决。2024/9/2935DSP原理及应用第2章TMS320C54x的硬件结构【例2.7.2】分析下列指令的流水线冲突。

STLMA,AR1wLD

*AR1,BN

A→AR1对AR1进行间接寻址

问题:第1条指令中的AR1数据还没有准备好,第二条指令就已经开始对AR1进行寻址读操作。解决办法:采用保护性指令STM。

STM为双字指令,占用两条流水线。STM#1k,AR1w#1kLD

*AR1,BN无等待周期2024/9/2936DSP原理及应用第2章TMS320C54x的硬件结构【例2.7.3】分析下列指令的流水线冲突。STLMA,AR0wSTM

#10,AR1w#kLD*AR1,BN

在T6后半周期,第一条指令和第二条指令发生时序冲突。

冲突’C54x内部可自动地将STM指令的写操作延迟一个周期,缓解时序冲突。

w

在执行第三条指令时,AR1的内容还没有准备好,出现新的冲突。

解决的办法:在STLM指令后插入一条NOP指令或任何一条与程序无关的单字指令。

NOPNOPSTM

#10,AR1w#kLD*AR1,BN2024/9/2937DSP原理及应用第2章TMS320C54x的硬件结构5.流水线的等待周期(2)等待周期表

当指令对MMR、ST0、ST1和PMST等硬件资源进行写操作时,有可能造成流水线冲突。解决的办法:是在写操作指令的后面,插入若干条

NOP指令。

例如:

STLMA,AR1wLD

*AR1,BN

NLD

*AR1,BNOPNOPN2024/9/2938DSP原理及应用第2章TMS320C54x的硬件结构(2)等待周期表

等待周期表给出了对映像寄存器以及控制字段进行写操作的各种指令所需插入的等待周期数。

为了避免流水冲突,可以根据等待周期表来选择插入的NOP指令的数量。

2024/9/2939DSP原理及应用第2章TMS320C54x的硬件结构流水线操作等待周期表

控制范围0周期

1周期

2周期3周期TSTM#lk,TMVDKSmem,TLDSmem,TLDSmem,T||ST所有其他存储操作,包括EXPASM

LD#k5,ASMLDSmem,ASM

所有其他存储操作

DPCPL=0LD#k9,DPLDSmem,DPSTM#lk,ST0ST#lk,ST0所有其他存储操作SXMC16FRCTOVM所有存储操作包括SSXM和RSXM2024/9/2940DSP原理及应用第2章TMS320C54x的硬件结构流水线操作等待周期表

控制范围0周期

1周期

2周期3周期A或B

修正累加器后,读MMR

RPTB[D]之前BRC

STM#lk,BRCST#lk,BRCMVDKSmem,BRCMVMDMMR,BRC所有其他存储操作

SRCCD(循环)

DROM

STMSTMVDKMVMD

所有其他存储操作2024/9/2941DSP原理及应用第2章TMS320C54x的硬件结构流水线操作等待周期表

控制范围3周期

5周期

6周期OVLYIPTRMP/MC

STMSTMVDKMVMD

所有其他存储操作

BRAF

RSBX

CPL

RSBXSSBX2024/9/2942DSP原理及应用第2章TMS320C54x的硬件结构流水线操作等待周期表

控制范围0周期

1周期

2周期3周期

ARx

STMSTMVDKMVMMMVMD

POPMPOPD

其他MV的

STLMSTHSTL

所有其他存储操作

BK

STMS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论