一种VLIW处理器中重复程序的执行控制方法及装置与流程

文档序号:22544559发布日期:2020-10-17 02:10阅读:171来源:国知局
一种VLIW处理器中重复程序的执行控制方法及装置与流程

本发明涉及vliw(verylonginstructionword,超长指令字)处理器技术领域,尤其涉及一种vliw处理器中重复程序的执行控制方法及装置。



背景技术:

dsp(digitalsignalprocessor,数字信号处理器)是一种特别适合与数字信号处理运算的微处理器,其主要应用是实时快速的实现各种数字信号处理算法。自从数字信号处理器问世以来,由于它具有高速、灵活、可编程、低功耗和便于接口等特点,目前已广泛应用于以下几个方面:

·通用数字信号处理-自适应滤波,卷积,相关,数字滤波,希尔伯特变换等;

·语音信号处理-语音增强,语音识别,语音合成,语音编码,文字转换等;

·图形图像处理-三维动画,图像鉴别/增强/压缩/传输,模式识别,电子地图等;

·特殊应用数字信号处理-振动和噪声分析与处理,声纳和雷达信号处理,地震信号分析与处理等。

vliw体系结构的dsp的指令特点是将固定长度的指令字段封装成一个取指包,执行包是由同一拍需要同时执行的指令字段组成,长度不固定,一个取指包中可能只包含一个执行包,也可能包含多个执行包,一个执行包可能只包含一个功能部件的指令,也可能包含多个功能部件的指令。

vliw体系结构的dsp处理器的执行特点是需要对一些特定算法程序进行反复调用,重复执行其中的核心程序段,即代码中存在大量需要重复执行的程序段,其中最为典型的即为循环程序,甚至可能需要执行成千上万次。据统计在一些多媒体应用中消耗在重复程序段的执行时间可以占到总时间的70%以上。代码执行过程中存在大量需要重复执行的程序段对其执行效率带来了很大影响:一方面,会增加对指令存储的访问次数,而由于访存延迟的存在会极大的降低程序执行效率,对于嵌入式应用而言不仅增加了访存延迟,更增大了访存功耗;另一方面,程序反复执行需要频繁从指令缓存中取指译码,将取指包译码成执行包,而频繁对重复程序进行译码会造成不必要的功耗浪费,增大程序执行的功耗。

针对应用中存在的大量需要重复执行的程序段,目前通常都是在软件层面来提高指令的并行度,主要采用以下两种方式:一种是循环展开的方式,另一种是软件流水方式,其中循环展开方式是通过多次复制循环体,增加代码量来提高循环指令的并行度,软件流水方式则是通过并行执行不同循环迭代的指令来提高循环程序的执行速度。但是上述提高重复程序指令并行度的方式,重复执行的程序段仍然需要重新访存取指译码,导致依然会增加访存延迟对程序执行效率的影响,同时也会加大程序执行时的功耗,即仍然会存在执行效率低、访存延迟及功耗大等的问题。



技术实现要素:

本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种实现方法简单、成本及功耗低、访存延迟小以及重复程序执行效率高的vliw处理器中重复程序的执行控制方法及装置。

为解决上述技术问题,本发明提出的技术方案为:

一种vliw处理器中重复程序的执行控制方法,步骤包括:

s1.配置一个指令缓存;

s2.控制将需要重复执行的各重复程序的执行包信息按照执行顺序缓存至所述指令缓存中;对执行程序进行识别,当识别到各所述重复程序时,控制暂停存取指、译码,并将所述指令缓存中对应的执行包信息直接派发给功能部件。

进一步的,所述步骤s2中将所述执行包信息缓存至所述指令缓存包括:对指令派发站派发的指令进行识别,通过识别指令组合里的分支指令和分支目标指令以确定所述重复程序的起始位置和结束位置,当识别到出现所述分支目标指令时,启动所述指令缓存,将所述分支目标指令之间的所有执行包信息按照执行顺序缓存到所述指令缓存中。

进一步的,所述步骤s2中,当识别到再次出现所述分支目标指令时,停止缓存所述执行包信息,将当前的分支目标指令与所述指令缓存中的指令信息进行比对,如果相同则判定当前执行程序为所述重复程序,控制暂停存取指、译码,并将所述指令缓存中对应的执行包信息直接派发给功能部件,如果不同则控制作废所述指令缓存中缓存的信息以重新启动所述指令缓存进行下一次缓存。

进一步的,所述步骤s2中将所述执行包信息缓存至所述指令缓存中时,若缓存到分支指令,记录分支指令在所述指令缓存中的位置,将所述执行包信息派发给功能部件时,每次在派发所述分支指令时启动取指和译码,当所述分支目标指令到达指令派发站时,比对当前派发的执行包信息和所述指令缓存中指令信息以判断分支跳转时所述分支目标指令是否相同,如果相同则判定所述重复程序未执行达到所需次数,继续控制从所述指令缓存中派发指令,并控制暂停取指和译码,如果不同则判定所述重复程序已执行完且达到所需次数,控制所述指令缓存不再继续派发所述执行包信息。

进一步的,所述步骤s2中将所述执行包信息缓存至所述指令缓存中时,若所述指令缓存被全部充满还未识别到所述分支目标指令,控制将所述指令缓存中的指令信息作废并停止缓存,直至再次识别到所述分支目标指令再启动缓存。

进一步的,所述步骤s2中具体通过配置状态机控制所述指令缓存,所述状态机包括空闲状态、装载状态、等待状态以及派发状态,所述空闲状态时对指令派发站派发的指令进行识别,判断是否出现所述分支目标指令,所述装载状态时开始启动所述指令缓存,将需要派发到每个功能部件的执行包信息缓存到所述指令缓存中对应位置,当所述指令缓存完成一个重复程序的缓存后进入所述等待状态以比对当前派发的执行包和所述指令缓存中的执行包是否相同,所述派发状态时控制所述指令缓存开始向功能部件派发指令。

进一步的,所述状态机控制所述指令缓存时包括:

当检测到当前派发站派发的执行包是所述分支目标指令,控制将状态切换到所述装载状态以开始缓存指令;

当所述指令缓存充满时还未再次遇到所述分支目标指令时,控制将状态切换到所述空闲状态,同时作废所述指令缓存中已经缓存的指令;

当装载指令过程中再次遇到所述分支目标指令时,控制将状态切换到所述等待状态开始逐拍比对当前派发的执行包和所述指令缓存中的执行包是否相同;

当判断到指令站派发的执行包信息和所述指令缓存中的执行包信息不一致时,控制从所述等待状态直接切换到所述空闲状态;

当判断到从再次遇到所述分支目标指令时指令站派发的执行包信息和所述指令缓存中的执行包信息逐拍比对都一致时,控制将状态切换到所述派发状态进行指令派发;

当派发到所述分支指令时,重新启动取指,当所述分支目标指令再次到达且所述分支目标指令的指令包信息和所述指令缓存中的第一条指令信息不同时,控制将状态切换到所述空闲状态;

当装载指令时再次出现所述分支目标指令且所述分支目标指令的执行包信息和所述指令缓存中的指令信息不一致时则控制将状态重新切换到所述装载状态;

当派发到所述分支指令时,重新启动取指,当所述分支目标指令再次到达且所述分支目标指令的指令包信息和所述指令缓存中的第一条指令信息相同时,继续保持在所述派发状态。

进一步的,所述步骤s2中还包括配置缓存读写指针以及缓存计数器,每缓存一个所述执行包信息时,控制所述缓存读指针加一、所述缓存计数器加一,每派发一个所述执行包信息时,控制所述缓存读指针减一、所述缓存计数器减一。

进一步的,所述指令缓存具体配置为深度为x、位宽为n*y+pc的缓存,其中x是支持的重复程序包含的执行包长度,y是派发到功能部件的指令信息的位宽,n是功能单元的数量,pc是每个执行包的地址位宽;

所述步骤s2中缓存的所述执行包信息包括用于识别不同指令的指令域信息inst_field、用于存储辅助译码信息的辅助译码域信息aux_field和用于标识指令有效性的指令有效信息inst_active。

一种vliw处理器中重复程序的执行控制装置,包括:

指令缓存;

控制器,用于控制按执行顺序存储需要重复执行的各重复程序的执行包信息,以及对执行程序进行识别,当识别到各所述重复程序时,控制暂停存取指、译码,并将所述指令缓存中对应的执行包信息直接派发给功能部件。

与现有技术相比,本发明的优点在于:

1、本发明处理器中重复程序的执行控制方法及装置,考虑vliw处理器的多发射体系结构特性,通过配置一个指令缓存存储派发到功能部件的执行包,当判断出正在执行的程序需要重复执行时,将执行包信息存储到指令缓存中,执行重复程序时暂停访存取指译码,直接从指令缓存派发执行包到相应功能部件,能够省去指令访存和指令包译码过程,消除访存延迟对重复程序执行效率的影响,大大提高重复程序的执行效率,同时降低执行程序过程中指令译码时的功耗,从而能够适用于vliw处理器体系结构高效的执行重复程序,且重复程序执行的次数越多效果越好。

2、本发明处理器中重复程序的执行控制方法及装置,通过在指令派发过程中自动识别分支指令和分支目标指令,可以自动识别重复程序的起始位置及结束位置,同时通过判断每次分支跳转时分支目标指令是否相同来识别重复程序执行次数,能够在出现重复程序时自动控制指令缓存、指令派发的启停,实现重复程序执行的自动控制。

3、本发明处理器中重复程序的执行控制方法及装置,通过构建状态机来控制指令缓存的工作状态,可以高效的实现对重复程序执行的自动控制,使得在执行重复程序时暂停访存取指译码,直接从指令缓存派发执行包到相应功能部件而省去指令访存和指令包译码过程,进一步提高重复程序的执行效率、降低指令译码时的功耗。

附图说明

图1是本实施例vliw处理器中重复程序的执行控制方法的实现流程示意图。

图2本实施例中配置指令缓存的结构原理示意图。

图3是本实施例中指令缓存的具体结构示意图。

图4是本实施例中状态机的状态切换原理示意图。

图5是本发明具体应用实施例中指令缓存的工作原理示意图。

具体实施方式

以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。

如图1所示,本实施例vliw处理器中重复程序的执行控制方法的步骤包括:

s1.配置一个指令缓存;

s2.控制将需要重复执行的各重复程序的执行包信息按照执行顺序缓存至指令缓存中;对执行程序进行识别,当识别到各重复程序时,控制暂停存取指、译码,并将指令缓存中对应的执行包信息直接派发给功能部件。

本实施例考虑vliw处理器的多发射体系结构特性,通过配置一个指令缓存存储派发到功能部件的执行包,当判断出正在执行的程序需要重复执行时,将执行包信息存储到指令缓存中,执行重复程序时暂停访存取指译码,直接从指令缓存派发执行包到相应功能部件,能够省去指令访存和指令包译码过程,消除访存延迟对重复程序执行效率的影响,大大提高重复程序的执行效率,同时降低执行程序过程中指令译码时的功耗,从而能够适用于vliw处理器体系结构高效的执行重复程序,且重复程序执行的次数越多效果越好。

如图2所示,本实施例具体在指令派发站增设一个指令缓存来存储重复程序需要派发到功能部件的执行包信息,当执行重复程序时暂停访存取指译码直接从该指令缓存中派发执行包到功能部件。如图3所示,本实施例配置的指令缓存具体为一个深度为x、位宽为n*y+pc的缓存,x是支持的重复程序包含的执行包长度,y是派发到功能部件的指令信息的位宽,n是功能单元的数量,pc是每个执行包的地址位宽。

如图3所示,flu_1~flu_n为不同的功能部件,flu1_1、flu1_2为flu_1部件的不同指令,flu2_1、flu2_2为flu_2部件的不同指令,依次类推。当执行状态机处在非派发状态(dispatch)时(即当执行的不是重复程序时),选择正常取指译码的执行包pipe_inst进行派发;当状态机处在派发状态(dispatch)(即当执行的重复程序时),直接派发指令缓存中的执行包flu_inst。缓存的执行包信息具体包含用于识别不同指令的指令域信息inst_field、用于辅助译码的辅助译码域信息aux_field和用于标识指令有效性的指令有效信息inst_active。由于指令缓存的每一行都是一个执行包,执行包中可能包含多个部件的指令,也可能只包含某一个部件的指令,当只包含一个部件的指令时,一行中就只有该部件的指令信息是有效的,即inst_active为1,其他无效部件的inst_active为0,当指令缓存派发完毕或者需要作废指令时只需将inst_active置为0即可。

本实施例中,分支指令具体为用于跳转的指令,分支目标指令具体为分支指令将要跳转到的目的指令,分支指令位于重复指令序列的结束位置,分支目标指令位于重复指令序列的起始位置,由分支指令和分支目标指令配合使用以实现指令序列的重复执行。步骤s2中将执行包信息缓存至指令缓存包括:对指令派发站派发的指令进行识别,通过识别指令组合里的分支指令和分支目标指令以确定重复程序的起始位置和结束位置,当识别到出现分支目标指令时,启动指令缓存,将分支目标指令之间的所有执行包信息按照执行顺序缓存到指令缓存中。由分支指令、分支目标指令的位置可以获取重复程序的起始位置、结束位置,本实施例通过在指令派发过程中自动识别分支指令和分支目标指令,可以在出现重复程序时自动控制指令缓存、指令派发的启停,从而实现重复程序执行的自动控制。

本实施例步骤s2中,当识别到再次出现分支目标指令时,停止缓存执行包信息,将当前的分支目标指令与指令缓存中的指令信息进行比对,如果相同则判定当前执行程序为重复程序,控制暂停存取指、译码,并将指令缓存中对应的执行包信息直接派发给功能部件,如果不同则控制作废指令缓存中缓存的信息以重新启动指令缓存进行下一次缓存。即在指令派发过程中当识别到出现分支目标指令时,开始启动缓存分支目标指令对应的执行包信息,直至再次出现分支目标指令,若当拍分支目标指令与指令缓存中的指令信息相同,表明当前派发即为需要重复执行的程序段,停止缓存,暂停存取指、译码,直接派发执行包给功能部件以省去指令访存和指令包译码过程。

本实施例步骤s2中将执行包信息缓存至指令缓存中时,若缓存到分支指令,记录分支指令在指令缓存中的位置,将执行包信息派发给功能部件时,每次在派发分支指令时启动取指和译码,当分支目标指令到达指令派发站时,比对当前派发的执行包信息和指令缓存中指令信息以判断分支跳转时分支目标指令是否相同,如果相同则判定重复程序未执行达到所需次数,继续控制从指令缓存中派发指令,并控制暂停取指和译码,如果不同则判定重复程序已执行完且达到所需次数,控制指令缓存不再继续派发执行包信息。

上述具体当指令缓存派发分支指令时,访存取指恢复执行以恢复取指流水,判断分支目标指令是否和指令缓存中的一致,当指令信息一致时,表明重复程序要求执行的次数还未执行完,需要继续派发执行包;如果指令信息不一致时,则表明重复程序要求执行的次数已经执行完,此时不能再从指令缓存中继续派发执行包,同时由于取指流水已经在正常执行,在派发分支指令时取指译码的执行包信息和指令缓存中的指令包缓存信息一致,此时仍选择来自正常取指译码产生的执行包。上述通过识别分支指令、分支目标指令确定重复程序的起止位置,同时通过判断每次分支跳转时分支目标指令是否相同来识别重复程序执行次数,可以确保按照所需重复执行的次数准确执行重复程序,每次执行时直接派发执行包给功能部件而省去指令访存和指令包译码过程。

本实施例进一步步骤s2中将执行包信息缓存至指令缓存中时,若指令缓存被全部充满还未识别到分支目标指令,控制将指令缓存中的指令信息作废并停止缓存,直至再次识别到分支目标指令再启动缓存。

本实施例进一步的步骤s2中还包括配置缓存读写指针以及缓存计数器,每缓存一个执行包信息时,控制缓存读指针加一、缓存计数器加一,步骤s2中每派发一个执行包信息时,控制缓存读指针减一、缓存计数器减一,以通过设置缓存、计数器来控制指令缓存以及派发。

本实施例中,具体通过配置状态机控制指令缓存,状态机包括空闲状态idle、装载状态load、等待状态wait以及派发状态dispatch,空闲状态idle时对指令派发站派发的指令进行识别,判断是否出现分支目标指令,装载状态load时开始启动指令缓存,将需要派发到每个功能部件的执行包信息缓存到指令缓存中对应位置,当指令缓存完成一个重复程序的缓存后进入等待状态wait以比对当前派发的执行包和指令缓存中的执行包是否相同,派发状态wait时控制指令缓存开始向功能部件派发指令,各状态具体为:

空闲状态idle:复位后控制器状态机处于空闲状态,在该状态下会对派发站正在派发的信息进行识别,判断是否出现分支目标指令。

装载状态load:处在该状态时,指令缓存开始工作,将派发到每个功能部件的指令信息缓存到相应的缓存中。

等待状态wait:处在该状态时说明指令缓存已经完成一个重复程序的缓存,正在比对当前派发的执行包和缓存中的执行包是否相同。

派发状态dispatch:处在该状态时说明已经确认当前正在执行的程序是重复程序段,处在此状态时指令缓存开始向功能部件派发指令。

如图4所示,本实施例中状态机控制指令缓存时具体包括以下状态切换条件:

状态(1):当检测到当前派发站派发的执行包是分支目标指令,控制将状态切换到装载状态load以开始缓存指令;

状态(2):当装载指令时指令缓存充满时还未再次遇到分支目标指令时,控制将状态切换到空闲状态idle,同时作废指令缓存中已经缓存的指令,具体可通过已经缓存的指令的inst_active置为0来实现指令缓存作废;

状态(3):当装载指令过程中再次遇到分支目标指令时,控制将状态切换到等待状态wait,开始逐拍比对当前派发的执行包和指令缓存中的执行包是否相同;

状态(4):当判断到指令站派发的执行包信息和指令缓存中的执行包信息不一致时,控制从等待状态wait直接切换到空闲状态idle;

状态(5):当判断到从再次遇到分支目标指令时指令站派发的执行包信息和指令缓存中的执行包信息逐拍比对都一致时,控制将状态切换到派发状态dispatch进行指令派发;

状态(6):当派发到分支指令时,重新启动取指,当分支目标指令再次到达且分支目标指令的指令包信息和指令缓存中的第一条指令信息不同时,控制将状态切换到空闲状态idle;

状态(7):当装载指令时再次出现分支目标指令且分支目标指令的执行包信息和指令缓存中的指令信息不一致时则控制将状态重新切换到装载状态load;

状态(8):当派发到分支指令时,重新启动取指,当分支目标指令再次到达且分支目标指令的指令包信息和指令缓存中的第一条指令信息相同时,继续保持在派发状态dispatch。

通过按照上述状态机及状态切换控制指令缓存的工作状态,可以高效的实现对重复程序执行的自动控制,使得在执行重复程序时暂停访存取指译码,直接从指令缓存派发执行包到相应功能部件而省去指令访存和指令包译码过程,消除访存延迟对重复程序执行效率的影响,同时降低指令译码时的功耗,进一步提高重复程序的执行效率、降低程序执行功耗。

以下以在具体应用实施例中采用上述方法实现重复程序的执行控制为例对本发明进行进一步说明。

假设指令流中出现下述指令组合:

aa:

flu1_1||flu2_1||flu3_1||flun_1

flu1_2||flu2_2||flu3_2||flun_2

flu1_3||flu2_3||flu3_3||flun_3

flu2_4||flu3_4||flun_4

flu1_5||flu2_5||flu3_5||flun_5

flu1_6||flu2_6||flu3_6

flu1_7||flu2_7||flu3_7||flun_7(分支指令)

本实施例首先当检测到分支目标指令aa时,按照执行顺序依次将派发到功能部件的执行包信息存储到预先配置的指令缓存中,如图5所示;当再次遇到aa时判断当前派发的执行包和指令缓存中存储的执行包是否相同,若依次判断各执行包都相同,则此时暂停取指和译码,直接由指令缓存向功能部件派发执行包信息,其中当每次遇到分支指令(flun_7)时,恢复取指,判断分支目标指令是否相同,当分支目标指令相同时,说明重复程序要求执行的次数还未执行完,继续从指令缓存中派发执行包,当分支目标指令不相同时,说明重复程序要求执行的次数已经执行完,此时作废指令缓存中的指令信息,同时将状态机置为空闲状态idle。

本实施例vliw处理器中重复程序的执行控制装置,包括:

指令缓存;

控制器,用于将需要重复执行的各重复程序的执行包信息按照执行顺序缓存至指令缓存中,以及对执行程序进行识别,当识别到各所述重复程序时,控制暂停存取指、译码,并将指令缓存中对应的执行包信息直接派发给功能部件。

本实施例中,控制器具体对指令派发站派发的指令进行识别,通过识别指令组合里的分支指令和分支目标指令以确定所述重复程序的起始位置和结束位置,当识别到出现分支目标指令时,启动指令缓存,将分支目标指令之间的所有执行包信息按照执行顺序缓存到指令缓存中;当识别到再次出现分支目标指令时,停止缓存执行包信息,将当前的分支目标指令与指令缓存中的指令信息进行比对,如果相同则判定当前执行程序为重复程序,控制暂停存取指、译码,并将指令缓存中对应的执行包信息直接派发给功能部件,如果不同则控制作废指令缓存中缓存的信息以重新启动指令缓存进行下一次缓存。

本实施例中,控制器具体在将执行包信息缓存至指令缓存中时,若缓存到分支指令,记录分支指令在指令缓存中的位置,将执行包信息派发给功能部件时,每次在派发分支指令时启动取指和译码,当分支目标指令到达指令派发站时,比对当前派发的执行包信息和指令缓存中指令信息以判断分支跳转时分支目标指令是否相同,如果相同则判定重复程序未执行达到所需次数,继续控制从指令缓存中派发指令,并控制暂停取指和译码,如果不同则判定重复程序已执行完且达到所需次数,控制指令缓存不再继续派发执行包信息。

本实施例控制器与上述vliw处理器中重复程序的执行控制方法中步骤s2为一一对应,在此不再一一赘述。

如图2所示,本实施例上述控制装置具体配置在指令派发站,即在指令站配置一个指令缓存以及一个控制器,指令缓存用来存储派发到功能部件的执行包信息,由控制器识别指令组合里的分支指令和分支目标指令,判断出需要重复执行的程序段的起始位置和结束位置,以及通过判断每次分支跳转时分支目标指令是否相同来识别重复程序执行次数;当识别到重复程序段时,控制指令缓存直接派发执行包到功能部件,同时暂停取指流水。

上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1