CN113407240A - 一种C64x+ DSP软件流水循环缓冲机制的模拟方法 - Google Patents
一种C64x+ DSP软件流水循环缓冲机制的模拟方法 Download PDFInfo
- 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
Links
- 230000007246 mechanism Effects 0.000 title claims abstract description 18
- 238000000034 method Methods 0.000 title claims abstract description 18
- 238000004088 simulation Methods 0.000 title claims abstract description 14
- 230000003139 buffering effect Effects 0.000 claims abstract description 40
- 230000015654 memory Effects 0.000 claims abstract description 23
- 238000012545 processing Methods 0.000 claims abstract description 6
- 239000000203 mixture Substances 0.000 claims description 8
- 230000007704 transition Effects 0.000 claims description 7
- 230000000694 effects Effects 0.000 claims description 6
- 230000006870 function Effects 0.000 claims description 6
- 230000003993 interaction Effects 0.000 claims description 4
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 abstract description 3
- 125000004122 cyclic group Chemical group 0.000 description 6
- 238000011161 development Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000007420 reactivation Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000001994 activation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
- G06F9/381—Loop buffering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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软件流水循环缓冲机制的模拟方法。
背景技术
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)指令屏蔽或指令属于循环缓冲相关指令时执行;其它指令装载进入指令缓冲器相应位置中并置为无效。
进一步地,所述循环缓冲状态和阶段对应操作组合序列如下所示:
*cond A表示(循环重载时指明上一个循环epilog_lb阶段是否结束)last_spl==1(未结束),cond B表示loadcounts<dynlen或一个branch指令生效
*drain2、fetch2表示对循环重载前一个循环的操作
进一步地,所述状态机的状态和阶段转换具体为:
*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循环缓冲状态和阶段对应操作组合序列
*cond A表示last_spl==1,即循环重载时上一个循环epilog_lb阶段未结束,cond B表示loadcounts<dynlen或一个branch指令生效,(if X)Y表示满足A条件时执行Y操作。
*drain2、fetch2表示对循环重载前一个循环的操作
进一步地,所述状态机的状态和阶段转换具体为:
表2循环缓冲状态、阶段的判断和转换表
*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)指令屏蔽或指令属于循环缓冲相关指令时执行;其它指令装载进入指令缓冲器相应位置中并置为无效。
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状态。
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)
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 | 微芯片技术股份有限公司 | 用于循环缓冲器的自主硬件管理的设备和方法 |
-
2021
- 2021-07-07 CN CN202110765360.0A patent/CN113407240B/zh not_active Expired - Fee Related
Patent Citations (6)
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)
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 |