This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

在计算指令周期时(Delay_Slot),其是否包括了功能单元的延时时间(Function Uint Latency)?

例如,对于FMPYDP指令,在手册上给出的是:

Instruction Type 4-cycle
Delay Slots 3
Functional Unit Latency 1

这样理解:功能单元的延时时间(Function Uint Latency)是不包括在指令周期时(Delay_Slot)中的。因而总的执行时间是:4 cycles

 

而对于指令:MPYDP,在手册上给出的是:

Instruction Type MPYDP
Delay Slots 9
Functional Unit Latency 4

这个感觉是:在计算指令周期时(Delay_Slot),好像是包括了功能单元的延时时间(Function Uint Latency),不然该指令执行延时也太长了。

  • 这两者的概念是不一样的,Delay Slots是指输出寄存器的值要等几个cycle才能被使用,Functional Unit Latency是指该指令执行要连续地占用几个周期的功能单元,在这几个周期内该单元不能执行其他指令。

  • CHIP Smarter即将发布的智能汇编开发工具DSPer中,指令的这些信息都会直观地在代码中显示,如图:

     

  • CHIP Smarter:

        DSPer是你开发的?什么时候可以用?与CCS相比有什么突出的功能?

     

        静候佳音!

  • 这儿有两个问题:

    (1)总的指令周期数:应为二者之和;

    (2)Delay Slots是可以通过pipeline来消化,进而提高DSP的执行速度,而Function Unit Latnecy不等于1时,不能通过pipeline进行流水,因而该功能单元不能被其它指令占用;

    上面两观点对不对?

  • 已搞明白:

    在“sprugh7:TMS320C66x DSP CPU and Instruction Set.pdf”手册中,对每条指令均给出了Delay_Slot的性能指标,其所代表的含意是指:当功能功能单元读取源数据之后,到该指令结果可以被读取所需的周期数。这儿需要注意的是:可能只是部分结果可以读取。因而指令全部结果数据可用可能较Delay_Slot要大。

    一般情况下,可以通过流水的方式来提高指令的执行性能,但情况也不完全是这样。因而还有一个性能指标是:functional unit latency,其物理含意是需经这么多的指令周期,功能单元才能接收新的数据进行处理。因而,当该数值为1时,则整个功能单元均可以实现流水作业。

    Delay_Slot数据中已包含functional unit latency数目。

    C66X对于新的浮点指令具有functional unit latency=1的功能,但也保留了之前不为1的相同功能,以保证C66X与C674X,C64X器件在指令上的兼容。

    • FMPYDP取代MPYDP指令
    • FADDSP/FSUBSP取代ADDSP/SUBSP指令
    • FADDDP/FADDDP 取代ADDDP/SUBDP指令

    对于指令的延时与功能单元的延时在该手册的83页的“3.4 Delay Slots”已讲的很情况,可以参考该节。

  • 请问下:

    当我计算一条指令的运行周期时:是否要加上Functional Unit Latency和Delay_Slot的周期?????