CN113407240A - 一种C64x+ DSP软件流水循环缓冲机制的模拟方法 - Google Patents

一种C64x+ DSP软件流水循环缓冲机制的模拟方法 Download PDF

Info

Publication number
CN113407240A
CN113407240A CN202110765360.0A CN202110765360A CN113407240A CN 113407240 A CN113407240 A CN 113407240A CN 202110765360 A CN202110765360 A CN 202110765360A CN 113407240 A CN113407240 A CN 113407240A
Authority
CN
China
Prior art keywords
loop
stage
state
buffer
instructions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202110765360.0A
Other languages
English (en)
Other versions
CN113407240B (zh
Inventor
潘皓
蔡铭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN202110765360.0A priority Critical patent/CN113407240B/zh
Publication of CN113407240A publication Critical patent/CN113407240A/zh
Application granted granted Critical
Publication of CN113407240B publication Critical patent/CN113407240B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

本发明公开了一种C64x+DSP软件流水循环缓冲机制的模拟方法,该方法将软件流水循环缓冲的执行过程进行了抽象,将其设计为一个具有不同状态、阶段的二层状态机。首先,通过控制信息进行状态机的状态、阶段判断;然后,根据状态机的状态、阶段,选取并执行循环缓冲操作的序列组合,以实现循环缓冲运行时程序存储器和循环缓冲器的实际操作。最后,更新控制信息和状态机的状态、阶段,判断和处理普通流水线和中断的重启。本发明能够完成对于C64x+DSP软件流水循环缓冲机制的高效模拟,具有较好的应用前景。

Description

一种C64x+ DSP软件流水循环缓冲机制的模拟方法
技术领域
本发明属于体系结构模拟领域,尤其涉及一种C64x+ DSP软件流水循环缓冲机制的模拟方法。
背景技术
DSP是为数字信号处理任务而专门设计的微处理器芯片,其程序开发通常采用交叉编译的开发模式,然而这种开发流程既需要硬件设备,又难以获取足够的调试信息反馈。为了实现如动态调试、故障注入等DSP程序开发所需的重要功能,帮助程序进行功能调试、算法优化和性能评估,需要开发对应DSP芯片的软件模拟器。
TMS320C64x+(简称C64x+)系列DSP是TI(德州仪器公司)研发的基于VelociTI体系结构的高性能DSP,在国内广泛应用于国防和航空航天中。由于数字信号处理算法通常需要对一系列数据样本循环执行大量数学运算,其循环可通过软件流水调度提高4.2倍运行性能。相比于其它VLIW DSP芯片,C64x+ DSP针对软件流水循环首次引入了循环缓冲机制,以优化软件流水循环的代码和执行。循环缓冲机制的引入可使生成的软件流水代码大小平均降低17.4%,程序存储器功耗平均降低2.6倍,但是其引入增加了以循环缓冲器为核心的硬件结构、一组控制循环运行的指令,以及循环缓冲在不同情况下运行流程的细致约定,使其成为C64x+模拟器实现过程中最精细而复杂的部分。因此,正确且高性能的软件流水循环缓冲机制是C64x+ DSP模拟器实现的瓶颈和关键。
发明内容
本发明的目的在于针对C64x+软件流水循环缓冲机制的模拟复杂性,提供了一种C64x+ DSP软件流水循环缓冲机制的模拟方法。
本发明的目的是通过以下技术方案来实现的:一种C64x+ DSP软件流水循环缓冲机制的模拟方法,包括以下步骤:
(1)通过循环缓冲控制信息进行状态机的状态、阶段判断。
(2)根据步骤(1)得到的状态机的状态、阶段,选取并执行循环缓冲操作的序列组合,以实现循环缓冲运行时程序存储器和循环缓冲器的实际操作。
(3)根据步骤(2)执行的结果更新循环缓冲时序信息,依据更新后的所有循环控制信息进行状态机的状态、阶段转换,并进行循环跳出判断。
(4)根据步骤(3)中所得的循环控制信息,判断和处理普通流水线和中断的重启。
重复执行上述步骤,直至结束。其中,所述循环缓冲控制信息包括:
循环缓冲状态信息:循环缓冲状态信息记录循环缓冲的状态、阶段以及中断请求和屏蔽信息。循环缓冲完成判断信息:包括循环终止条件类别和ILC寄存器可用标识。
循环缓冲时序信息:包括软件流水阶段信息及其相应的周期信息。
用于取指的信息:包括指令屏蔽信息、流水线启停标识和排空阶段到流水线重启所需的周期数。
所述状态机的状态包括:
初始终止initial_termination状态:软件流水循环缓冲由SPLOOP指令激活且SPLOOP指令执行时ILC寄存器可用标识为0的情况下,为initial_termination状态。
正常normal状态:软件流水循环缓冲在非中断返回时由SPLOOP(D/W)三种指令的执行而激活,并至少循环迭代一次时,为normal状态。
重载reload状态:软件流水循环缓冲由SPMASKR或SPKERNELR指令的执行而激活,并且满足重装载条件时,为reload状态。
中断后after_interruption状态:软件流水循环缓冲由中断返回而重新激活时,为after_interruption状态。
空闲idle状态:软件流水循环缓冲未激活或循环已跳出时,为idle状态。
所述状态机的阶段包括:
prolog_lb阶段:包括软件流水循环组成阶段中的prolog阶段和kernel阶段的第一个stage。kernel_lb阶段:包括软件流水循环组成阶段中除第一个stage之外的kernel阶段,循环的状态在进入该阶段时都会转换回normal状态。
epilog_lb阶段:包括软件流水循环组成阶段中epilog阶段加上一个stage,以及在到达stage边缘前装载的空操作周期。
early_exit_lb阶段:所述early_exit_lb阶段发生在循环由于迭代次数不够而在达到kernel_lb阶段前ILC已递减为0的情况下,此时prolog_lb阶段转换为early_exit_lb阶段。
进一步地,所述循环缓冲操作包括:
pipeline操作:从程序存储器中取指并执行。
load操作:从程序存储器中取指,当指令与SPLOOP(D/W)指令并行、指令被SPMASK(R)指令屏蔽或指令属于NOP、循环缓冲相关指令时,指令只执行;其它指令装载进入循环缓冲器相应位置中,置为有效并执行。
fetch操作:从循环缓冲器中取出LBC对应cycle的指令,当指令有效时执行。
drain操作:将循环缓冲器中draincounts对应cycle对应stage的指令置为无效。所述LBC记录目前处于该stage的第几个周期,所述draincounts记录循环drain操作共执行的周期数。当循环重载发生时,如果重载后的循环进入early_exit_lb阶段,此时可能发生前、后两个循环都需要进行drain操作,此时前一个循环使用第二对LBC和loadcounts来指示信息。
reload操作:将循环缓冲器中loadcounts对应cycle对应stage的指令置为有效。所述loadcounts记录循环load操作共执行的周期数。
initial_load操作:专属于initial_termination状态的操作,从程序存储器中取指,当指令与SPLOOP(D/W)指令并行、指令被SPMASK(R)指令屏蔽或指令属于循环缓冲相关指令时执行;其它指令装载进入指令缓冲器相应位置中并置为无效。
进一步地,所述循环缓冲状态和阶段对应操作组合序列如下所示:
Figure BDA0003151276660000031
*cond A表示(循环重载时指明上一个循环epilog_lb阶段是否结束)last_spl==1(未结束),cond B表示loadcounts<dynlen或一个branch指令生效
*drain2、fetch2表示对循环重载前一个循环的操作
进一步地,所述状态机的状态和阶段转换具体为:
Figure BDA0003151276660000032
Figure BDA0003151276660000041
*n/r/a为normal/reload/after_interruption缩写
*initial_t为initial_termination缩写,after_itr为after_interruption缩写
*Judge_spl_terminal()函数判断循环是否完成
进一步地,所述步骤4中,普通流水线的重启条件具体如下:
SPLOOP(D)循环完成epilog_lb阶段后跳出,此时循环缓冲变为idle状态,普通流水线重启。
SPLOOPW循环在循环终止条件满足时,循环缓冲直接变为idle状态,普通流水线重启。
SPLOOP(D)循环进入epilog_lb阶段,在执行了SPKERNEL(R)指令中fstg/fcyc字段所指示的周期后,普通流水线重启与循环缓冲并行。
非reload状态下的循环,若循环激活时有分支指令生效,则循环缓冲直接变为idle状态,普通流水线重启。
中断被处理导致循环缓冲进入epilog_lb阶段,并完成排空后跳出。此时循环缓冲变为idle状态,普通流水线重启。
进一步地,所述步骤4中,循环缓冲激活时,在满足以下所有条件下可以处理未决中断,然后循环缓冲进入epilog_lb阶段:
LBC寄存器值为0且不满足循环终止的条件;
循环处于kernel_lb阶段,且循环不处于reload状态。
循环至少运行了4个周期。
ILC≥ceil(dynlen÷interation_interval),确保中断返回后的循环不会进入early_exit_lb状态。
本发明的有益效果是:本发明能够对64x+ DSP软件流水循环缓冲机制进行CPU周期精确的模拟,模拟速度为官方模拟器的3.3倍。
附图说明
图1是本发明的循环缓冲模拟模块框架图。
具体实施方式
一种C64x+ DSP软件流水循环缓冲机制的模拟方法,如图1所示,包括以下步骤:
(1)通过循环缓冲控制信息进行状态机的状态、阶段判断。
(2)根据步骤(1)得到的状态机的状态、阶段,选取并执行循环缓冲操作的序列组合,以实现循环缓冲运行时程序存储器和循环缓冲器的实际操作。
(3)根据步骤(2)执行的结果更新循环缓冲的时序信息,依据更新后的所有循环控制信息进行状态机的状态、阶段转换,并进行循环跳出判断。
(4)根据步骤(3)中所得的循环控制信息,判断和处理普通流水线和中断的重启。
重复执行上述步骤,直至结束。
进一步地,所述循环缓冲控制信息具体为:
循环缓冲状态信息:循环缓冲状态信息记录循环缓冲的状态、阶段以及中断请求和屏蔽信息。循环缓冲完成判断信息:包括循环终止条件类别和ILC寄存器可用标识(用于标记ILC寄存器是否可以使用)。其中,循环终止条件类别包括SPLOOP(D/W)三种指令不同的终止条件,利用terminal_cond进行记录,取值1-3分别对应SPLOOP(D/W)不同的终止条件。
循环缓冲时序信息:包括软件流水阶段信息及其相应的周期信息。其中,软件流水阶段信息具体是指处于循环缓冲阶段的第几个stage,如处于prolog_lb阶段的第几个stage。周期信息是指处于软件流水阶段信息的第几个周期以及每个stage具有的周期数目即:处于该stage的第几个周期LBC、循环缓冲操作、load操作共执行的周期数loadcounts和drain操作共执行的周期数draincounts。
用于取指的信息:包括指令屏蔽信息、流水线启停标识和排空阶段到流水线重启所需的周期数。
进一步地,所述状态机的状态具体为:
(1)initial_termination状态:软件流水循环缓冲由SPLOOP指令激活且SPLOOP指令执行时ILC为0(不可用)的情况下,称其为initial_termination(初始终止)状态。在这种循环缓冲状态下,循环初始化指令应得到执行,循环体中的指令虽然作为NOP指令(空指令,会带来一个周期的停顿)执行,但是会装载到循环缓冲器中并置为无效。
(2)normal状态:软件流水循环缓冲在非中断返回时由SPLOOP(D/W)三种指令的执行而激活,并至少循环迭代一次时,称其为normal(正常)状态。该状态下程序存储器将取指的循环体指令装载到循环缓冲器中,同时程序存储器取指的循环初始化指令与循环缓冲器中所取指令并行。之后,循环缓冲在核心阶段循环,然后排空。
(3)reload状态:软件流水循环缓冲由SPMASKR或SPKERNELR指令的执行而激活,并且满足重装载条件时,称其为reload(重载)状态。在这种状态下,一个已经执行过的软件流水循环重新执行,循环缓冲器中的指令重新变得有效。循环体中的指令只从循环缓冲器中取指,外循环和内循环的初始化指令从程序存储器中取指并和循环体中的指令并行执行。
(4)after_interruption状态:软件流水循环缓冲由中断返回而重新激活时,称其为after_interruption(中断后)状态。这种状态下,被中断的软件流水循环重新执行。硬件机制的中断返回是重新从循环启动指令执行,但在模拟器中可通过重载进行模拟。其和reload状态的不同是没有初始化阶段,不会从程序存储器中取指。
(5)idle状态:软件流水循环缓冲未激活或循环已跳出时,称其为idle(空闲)状态。此时普通流水线正常执行,不需要使用循环缓冲模块。
进一步地,所述状态机的阶段具体为:
(1)prolog_lb阶段:这个阶段包括软件流水循环组成阶段中的prolog阶段和kernel阶段的第一个stage,其在循环中的作用是增加循环缓冲器中的有效指令。增加的有效指令在normal状态下是来自于程序存储器的装载,在reload状态和after_interruption状态是来自于循环缓冲器中指令的重新激活。在该阶段,程序存储器可能与循环缓冲器并行取指和执行。
(2)kernel_lb阶段:这个阶段包括软件流水循环组成阶段中除第一个stage之外的kernel阶段,循环的状态在进入该阶段时都会转换回normal状态。在这个阶段循环缓冲状态不变,模拟器只执行循环缓冲器中取出的有效指令。
(3)epilog_lb阶段:这个阶段包括软件流水循环组成阶段中epilog阶段加上一个stage,以及在到达stage边缘前装载的空操作周期。由于循环重载的存在,这个阶段也可能重叠重载循环的prolog_lb阶段的部分或全部。在该阶段,循环缓冲器中的指令在相应周期被置为无效。当排空完成但没有到达stage边缘时,继续执行空操作,直到stage边缘时把循环缓冲状态转换为空闲。在排空过程中,程序存储器可能会重启,然后与循环缓冲器并行取指和执行;也可能会发生循环重载,之后循环缓冲器中指令的重新激活与排空同时进行。
(4)early_exit_lb阶段:这个阶段发生在循环由于迭代次数不够而在达到kernel_lb阶段前ILC已递减为0的情况下,此时prolog_lb阶段转换为early_exit_lb阶段。该阶段循环缓冲器的装载和排空同时进行,因此程序存储器可能与循环缓冲器并行取指和执行。
进一步地,所述循环缓冲操作具体为:
(1)pipeline操作:从程序存储器中取指并执行。为了易于实现,循环重载时的普通流水线的取指、执行操作交由循环缓冲操作执行。
(2)load操作:从程序存储器中取指,当指令与SPLOOP(D/W)指令并行、指令被SPMASK(R)指令屏蔽或指令属于NOP、循环缓冲相关指令时,指令只执行;其它指令装载进入循环缓冲器相应位置中,置为有效并执行。
(3)fetch操作:从循环缓冲器中取出对应cycle(在LBC中存储)的指令,当指令有效时执行。
(4)drain操作:将循环缓冲器中对应cycle对应stage(在draincounts中存储)的指令置为无效。当循环重载发生时,如果重载后的循环进入early_exit_lb阶段,此时可能发生前、后两个循环都需要进行drain操作,此时前一个循环使用第二对LBC和loadcounts来指示信息。
(5)reload操作:将循环缓冲器中对应cycle对应stage(在loadcounts中存储)的指令置为有效。
(6)initial_load操作:专属于initial_termination状态的操作,从程序存储器中取指,当指令与SPLOOP(D/W)指令并行、指令被SPMASK(R)指令屏蔽或指令属于循环缓冲相关指令时执行;其它指令装载进入循环缓冲器相应位置中并置为无效。
进一步地,所述循环缓冲状态和阶段对应操作组合序列具体为:
表1循环缓冲状态和阶段对应操作组合序列
Figure BDA0003151276660000071
*cond A表示last_spl==1,即循环重载时上一个循环epilog_lb阶段未结束,cond B表示loadcounts<dynlen或一个branch指令生效,(if X)Y表示满足A条件时执行Y操作。
*drain2、fetch2表示对循环重载前一个循环的操作
进一步地,所述状态机的状态和阶段转换具体为:
表2循环缓冲状态、阶段的判断和转换表
Figure BDA0003151276660000072
Figure BDA0003151276660000081
*n/r/a为normal/reload/after_interruption缩写
*initial_t为initial_termination缩写,after_itr为after_interruption缩写
*Judge_spl_terminal()函数判断循环是否完成
其中,&&表示逻辑与,||表示逻辑或。LoopBuffer.active_nums为循环缓冲激活次数
进一步地,所述步骤(4)中普通流水线和中断的重启条件具体为:
普通流水线在下列条件下重启:
·SPLOOP(D)循环完成epilog_lb阶段后跳出,此时循环缓冲变为idle状态,普通流水线重启。
·SPLOOPW循环在循环终止条件满足时,由于不需要epilog_lb阶段,循环缓冲直接变为idle状态,普通流水线重启。
·SPLOOP(D)循环进入epilog_lb阶段,在执行了SPKERNEL(R)指令中fstg/fcyc字段所指示的周期后,普通流水线重启与循环缓冲并行。
·非reload状态下的循环,若循环激活时有分支指令生效,则循环缓冲直接变为idle状态,普通流水线重启。
·中断被处理导致循环缓冲进入epilog_lb阶段,并完成排空后跳出。此时循环缓冲变为idle状态,普通流水线重启。
循环缓冲激活时,在满足以下所有条件下可以处理未决中断,然后循环缓冲进入epilog_lb阶段:
·LBC寄存器值为0且不满足循环终止的条件,否则循环应进入epilog_lb阶段正常排空后跳出。
·循环处于kernel_lb阶段,且循环不处于reload状态。
·循环至少运行了4个周期。
·ILC≥ceil(dynlen÷interation_interval),确保中断返回后的循环不会进入early_exit_lb状态。其中,interation_interval表示每个stage具有的cycle数目,ceil表示向上取整。
显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其他不同形式的变化或变动。这里无需也无法把所有的实施方式予以穷举。而由此所引申出的显而易见的变化或变动仍处于本发明的保护范围。

Claims (6)

1.一种C64x+DSP软件流水循环缓冲机制的模拟方法,其特征在于,包括以下步骤:
(1)通过循环缓冲控制信息进行状态机的状态、阶段判断。
(2)根据步骤(1)得到的状态机的状态、阶段,选取并执行循环缓冲操作的序列组合,以实现循环缓冲运行时程序存储器和循环缓冲器的实际操作。
(3)根据步骤(2)执行的结果更新循环缓冲时序信息,依据更新后的所有循环控制信息进行状态机的状态、阶段转换,并进行循环跳出判断。
(4)根据步骤(3)中所得的循环控制信息,判断和处理普通流水线和中断的重启。
重复执行上述步骤直至结束,其中,所述循环缓冲控制信息包括:
循环缓冲状态信息:循环缓冲状态信息记录循环缓冲的状态、阶段以及中断请求和屏蔽信息。
循环缓冲完成判断信息:包括循环终止条件类别和ILC寄存器可用标识。
循环缓冲时序信息:包括软件流水阶段信息及其相应的周期信息。
用于取指的信息:包括指令屏蔽信息、流水线启停标识和排空阶段到流水线重启所需的周期数。
所述状态机的状态包括:
初始终止initial_termination状态:软件流水循环缓冲由SPLOOP指令激活且SPLOOP指令执行时ILC寄存器可用标识为0的情况下,为initial_termination状态。
正常normal状态:软件流水循环缓冲在非中断返回时由SPLOOP(D/W)三种指令的执行而激活,并至少循环迭代一次时,为normal状态。
重载reload状态:软件流水循环缓冲由SPMASKR或SPKERNELR指令的执行而激活,并且满足重装载条件时,为reload状态。
中断后after_interruption状态:软件流水循环缓冲由中断返回而重新激活时,为after_interruption状态。
空闲idle状态:软件流水循环缓冲未激活或循环已跳出时,为idle状态。
所述状态机的阶段包括:
prolog_lb阶段:包括软件流水循环组成阶段中的prolog阶段和kernel阶段的第一个stage。
kernel_lb阶段:包括软件流水循环组成阶段中除第一个stage之外的kernel阶段,循环的状态在进入该阶段时都会转换回normal状态。
epilog_lb阶段:包括软件流水循环组成阶段中epilog阶段加上一个stage,以及在到达stage边缘前装载的空操作周期。
early_exit_lb阶段:所述early_exit_lb阶段发生在循环由于迭代次数不够而在达到kernel_lb阶段前ILC已递减为0的情况下,此时prolog_lb阶段转换为early_exit_lb阶段。
2.根据权利要求1所述C64x+DSP软件流水循环缓冲机制的模拟方法,其特征在于,所述循环缓冲操作包括:
pipeline操作:从程序存储器中取指并执行。
load操作:从程序存储器中取指,当指令与SPLOOP(D/W)指令并行、指令被SPMASK(R)指令屏蔽或指令属于NOP、循环缓冲相关指令时,指令只执行;其它指令装载进入循环缓冲器相应位置中,置为有效并执行。
fetch操作:从循环缓冲器中取出LBC对应cycle的指令,当指令有效时执行。
drain操作:将循环缓冲器中draincounts对应cycle对应stage的指令置为无效。所述LBC记录目前处于该stage的第几个周期,所述draincounts记录循环drain操作共执行的周期数。当循环重载发生时,如果重载后的循环进入early_exit_lb阶段,此时可能发生前、后两个循环都需要进行drain操作,此时前一个循环使用第二对LBC和loadcounts来指示信息。
reload操作:将循环缓冲器中loadcounts对应cycle对应stage的指令置为有效。所述loadcounts记录循环load操作共执行的周期数。
initial_load操作:专属于initial_termination状态的操作,从程序存储器中取指,当指令与SPLOOP(D/W)指令并行、指令被SPMASK(R)指令屏蔽或指令属于循环缓冲相关指令时执行;其它指令装载进入指令缓冲器相应位置中并置为无效。
3.根据权利要求2所述C64x+DSP软件流水循环缓冲机制的模拟方法,其特征在于,所述循环缓冲状态和阶段对应操作组合序列如下所示:
Figure FDA0003151276650000021
其中,cond A表示last_spl==1,即循环重载时上一个循环epilog_lb阶段未结束,cond B表示loadcounts<循环缓冲装载或排空阶段长度dynlen或一个branch指令生效。drain2、fetch2表示对循环重载前一个循环的操作。
4.根据权利要求1所述C64x+DSP软件流水循环缓冲机制的模拟方法,其特征在于,所述状态机的状态和阶段转换如下所示:
Figure FDA0003151276650000031
其中,n/r/a分别表示normal/reload/after_interruption,initial_t表示initial_termination,after_itr表示after_interruption;Judge_spl_terminal()函数判断循环是否完成,terminal_cond表示循环终止条件,terminal_cond==3对应于满足SPLOOPW循环终止条件,terminal_cond!=3对应于不满足SPLOOPW循环终止条件。
5.根据权利要求1所述C64x+DSP软件流水循环缓冲机制的模拟方法,其特征在于,所述步骤4中,普通流水线的重启条件具体如下:
SPLOOP(D)循环完成epilog_lb阶段后跳出,此时循环缓冲变为idle状态,普通流水线重启。
SPLOOPW循环在循环终止条件满足时,循环缓冲直接变为idle状态,普通流水线重启。
SPLOOP(D)循环进入epilog_lb阶段,在执行了SPKERNEL(R)指令中fstg/fcyc字段所指示的周期后,普通流水线重启与循环缓冲并行。
非reload状态下的循环,若循环激活时有分支指令生效,则循环缓冲直接变为idle状态,普通流水线重启。
中断被处理导致循环缓冲进入epilog_lb阶段,并完成排空后跳出。此时循环缓冲变为idle状态,普通流水线重启。
6.根据权利要求1所述C64x+DSP软件流水循环缓冲机制的模拟方法,其特征在于,所述步骤4中,循环缓冲激活时,在满足以下所有条件下可以处理未决中断,然后循环缓冲进入epilog_lb阶段:
LBC寄存器值为0且不满足循环终止的条件;
循环处于kernel_lb阶段,且循环不处于reload状态。
循环至少运行了4个周期。
ILC≥ceil(dynlen÷interation_interval),确保中断返回后的循环不会进入early_exit_lb状态。
CN202110765360.0A 2021-07-07 2021-07-07 一种C64x+ DSP软件流水循环缓冲机制的模拟方法 Expired - Fee Related CN113407240B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110765360.0A CN113407240B (zh) 2021-07-07 2021-07-07 一种C64x+ DSP软件流水循环缓冲机制的模拟方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110765360.0A CN113407240B (zh) 2021-07-07 2021-07-07 一种C64x+ DSP软件流水循环缓冲机制的模拟方法

Publications (2)

Publication Number Publication Date
CN113407240A true CN113407240A (zh) 2021-09-17
CN113407240B CN113407240B (zh) 2022-09-09

Family

ID=77685501

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110765360.0A Expired - Fee Related CN113407240B (zh) 2021-07-07 2021-07-07 一种C64x+ DSP软件流水循环缓冲机制的模拟方法

Country Status (1)

Country Link
CN (1) CN113407240B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1329302A (zh) * 2000-05-31 2002-01-02 德克萨斯仪器股份有限公司 流水线微处理器的循环高速缓冲存储器及高速缓存控制器
US6832306B1 (en) * 1999-10-25 2004-12-14 Intel Corporation Method and apparatus for a unified RISC/DSP pipeline controller for both reduced instruction set computer (RISC) control instructions and digital signal processing (DSP) instructions
US20090198389A1 (en) * 2005-10-07 2009-08-06 Guenther Kirchhof-Falter Method for Controlling/Regulating At Least One Task
CN103218205A (zh) * 2013-03-26 2013-07-24 中国科学院声学研究所 一种循环缓冲装置以及循环缓冲方法
CN106933652A (zh) * 2017-03-16 2017-07-07 浙江大学 一种基于延迟槽补偿的dsp流水线模拟方法
CN110462599A (zh) * 2017-02-13 2019-11-15 微芯片技术股份有限公司 用于循环缓冲器的自主硬件管理的设备和方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6832306B1 (en) * 1999-10-25 2004-12-14 Intel Corporation Method and apparatus for a unified RISC/DSP pipeline controller for both reduced instruction set computer (RISC) control instructions and digital signal processing (DSP) instructions
CN1329302A (zh) * 2000-05-31 2002-01-02 德克萨斯仪器股份有限公司 流水线微处理器的循环高速缓冲存储器及高速缓存控制器
US20090198389A1 (en) * 2005-10-07 2009-08-06 Guenther Kirchhof-Falter Method for Controlling/Regulating At Least One Task
CN103218205A (zh) * 2013-03-26 2013-07-24 中国科学院声学研究所 一种循环缓冲装置以及循环缓冲方法
CN110462599A (zh) * 2017-02-13 2019-11-15 微芯片技术股份有限公司 用于循环缓冲器的自主硬件管理的设备和方法
CN106933652A (zh) * 2017-03-16 2017-07-07 浙江大学 一种基于延迟槽补偿的dsp流水线模拟方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
TEXAS INSTRUMENTS: "TMS320C64x/C64x+ DSP CPU and Instruction Set Reference Guide", 《TEXAS INSTRUMENTS》 *
方志红: "TMS320C6X的SPLOOP技术", 《雷达科学与技术》 *

Also Published As

Publication number Publication date
CN113407240B (zh) 2022-09-09

Similar Documents

Publication Publication Date Title
US5590294A (en) Method and apparatus for retarting pipeline processing
US8589664B2 (en) Program flow control
JP2002007141A (ja) パイプライン化マイクロプロセッサ用ループ・キャッシュ・メモリとキャッシュ制御器
US5724566A (en) Pipelined data processing including interrupts
US20030120882A1 (en) Apparatus and method for exiting from a software pipeline loop procedure in a digital signal processor
US20230084523A1 (en) Data Processing Method and Device, and Storage Medium
KR100210205B1 (ko) 스톨캐쉬를 제공하기 위한 장치 및 방법
US6826522B1 (en) Methods and apparatus for improved efficiency in pipeline simulation and emulation
JP3787329B2 (ja) ハードウェア・ループ
US20030120900A1 (en) Apparatus and method for a software pipeline loop procedure in a digital signal processor
US20030154469A1 (en) Apparatus and method for improved execution of a software pipeline loop procedure in a digital signal processor
US6748523B1 (en) Hardware loops
US20030120905A1 (en) Apparatus and method for executing a nested loop program with a software pipeline loop procedure in a digital signal processor
CN112988238A (zh) 一种基于可扩展指令集cpu内核的扩展运算装置及方法
CN113407240B (zh) 一种C64x+ DSP软件流水循环缓冲机制的模拟方法
US6766444B1 (en) Hardware loops
EP0279953B1 (en) Computer system having mixed macrocode and microcode instruction execution
US20030120899A1 (en) Apparatus and method for processing an interrupt in a software pipeline loop procedure in a digital signal processor
JP3146058B2 (ja) 並列処理型プロセッサシステムおよび並列処理型プロセッサシステムの制御方法
US20070294519A1 (en) Localized Control Caching Resulting In Power Efficient Control Logic
KR102379886B1 (ko) 벡터 명령 처리
US20030182511A1 (en) Apparatus and method for resolving an instruction conflict in a software pipeline nested loop procedure in a digital signal processor
JPH0384632A (ja) データ処理装置
JP2001014161A (ja) プログラマブルコントローラ
JP2003140910A (ja) Vliwプロセッサにおけるバイナリトランスレーション方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20220909

CF01 Termination of patent right due to non-payment of annual fee