CN102855120A - 超长指令字vliw的处理器和处理方法 - Google Patents
超长指令字vliw的处理器和处理方法 Download PDFInfo
- Publication number
- CN102855120A CN102855120A CN2012103432506A CN201210343250A CN102855120A CN 102855120 A CN102855120 A CN 102855120A CN 2012103432506 A CN2012103432506 A CN 2012103432506A CN 201210343250 A CN201210343250 A CN 201210343250A CN 102855120 A CN102855120 A CN 102855120A
- Authority
- CN
- China
- Prior art keywords
- instruction
- order register
- group
- parallel
- zone bit
- 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
Images
Abstract
本发明公开一种超长指令字VLIW的处理器和处理方法,主要为了提供一种取指简便,运行周期短的超长指令字VLIW的处理器和处理方法。本发明超长指令字VLIW的处理器,将对指令进行分组判断进入不同的指令处理通路硬件结构指令选择模块设置在指令寄存器之前,减少了执行装置之前的逻辑电路;配合在指令进入指令寄存器前就通过判断指令的组别信息,把指令存储到相应的指令寄存器装置中存储,分别执行各个指令寄存器中的指令的处理方法,缩短了指令的运行周期。本发明通过将本次并行的指令存放在不同的指令寄存器,简化了后期指令执行过程的复杂度,提高了处理器的频率。
Description
技术领域
本发明涉及一种超长指令字VLIW的处理器和处理方法。
背景技术
VLIW:(Very Long Instruction Word,超长指令字)一种非常长的指令组合,它把许多条指令连在一起,同时执行,增加了运算的速度,提高并行度。在VLIW结构中有并行指令条数固定的结构,即每次并行执行的指令条数是固定的;也有并行指令条数可变的结构,即每次并行执行的指令条数是灵活可变的。
专利:03818755.8中介绍了一种超长指令字VLIW的架构。这种架构中指令的存储是按照指令条数不变的VLIW来存储的,每个存储单元都存储了可并行指令条数的最大值,需要用NOP(空操作)指令来填充程序存储器的空间,其程序存储器消耗和并行指令条数固定的VLIW结构是相同的。在取指令时,通过特殊的程序存储器组织方式和指令首部来判断是否需要读取相应的程序,根据指令首部判断当前的指令是否为NOP,如果为NOP则不进行取指令操作,反之则取指令并指令。这样做需要增加不必要的程序存储器,并且增加了取指令时的判断逻辑。
专利:US 5,774,737公开了一种并行指令条数可变VLIW的处理器,添加了一个指令字长寄存器用来指示当前并行的指令的条数,通过当前指令中VLIW指令字长重写指令来更新这个寄存器。这样的架构增加了写指令字长寄存器的过程,增加了取指令时的复杂度。
论文:Architecture Design of Variable lengths Instructions Expansion for VLIW中提出了一种并行指令条数固定的VLIW架构,每次并行的指令条数是固定的,但其单条指令的长度是可变的16bits或32bits,这样的架构需要在指令发射时添加必要的逻辑来判断出当前单条指令的比特数,增加了指令发射的复杂性。
发明内容
针对上述问题,本发明提供一种每次并行运行的指令条数是可变的取指令和发射指令方便,运行周期短,硬件结构简单超长指令字VLIW的处理器和处理方法。
为达到上述目的,本发明超长指令字VLIW的处理器,包括电连接的程序存储器、取指发射装置、指令寄存器装置和执行装置,其中,
所述程序存储器,用于存放指令,包括多个并行排列的存储单元,所述指令连续存放在所述程序存储器内;其中,所述的各指令中包含有用于区分本指令是否为本次并行运行的最后一条指令的条数标志位和用于确定本指令所属指令组的组别标志位;
所述取指发射装置,用于从程序存储器中提取指令,依据指令的条数标志位确定本次需要并行运行的指令,依据指令的组别标志位将本次需要并行运行的指令输入指令寄存器装置的不同指令寄存器中分别存放,没有指令输入的指令寄存器置空;
所述指令寄存器装置,包括与指令组别相同数量的指令寄存器,每个指令寄存器对应一组指令组,且每个指令寄存器用于存放与其对应的指令组中的指令;
所述执行装置,包括与所述指令寄存器一一对应的指令处理通路,所述指令处理通路用于执行相对应指令寄存器中的指令。
进一步地,所述取指发射装置,包括电连接的指令顺序拼接模块、并行指令条数判断模块、指令选择模块以及指令缓存模块,其中:
所述指令顺序拼接模块,用于提取程序存储器中的指令,将提取的指令和指令缓存模块中的指令按所述的指令在程序存储器中的存储顺序进行排序,并依据本次并行运行的指令条数输出本次并行指令至指令选择模块;
所述并行指令条数判断模块,用于读取经所述指令顺序拼接模块排序后的每个并行指令中的条数标志位,判断该指令是否为本次并行指令中的最后一条,并将本次并行运行指令条数输出至指令顺序拼接模块和指令选择模块;
指令选择模块,用于接收指令顺序拼接单元发送来本次并行运行的指令、以及并行条数判断模块发送的并行指令条数,读取本次并行运行指令的组别标志位判断出每条指令应该放到哪个指令寄存器,并将各指令输入相对应的各指令寄存器中存放,并且置空没有指令输入的指令寄存器;
指令缓存模块,用于存储在指令的一个运行周期内没有发射的指令。
进一步地,所述取指发射装置还包括指令跳转模块,用于在指令顺序拼接模块提取指令前,输出指示指令跳转位置的指示指令,令存放在指令缓存模块中指令无效,并且所述指令顺序拼接模块依据所述指示指令提取指令跳转位置以后的指令。
特别地,所述程序存储器的每个存储单元分配有存储与所述指令组别数量相等条数的指令。
进一步地,所述指令寄存器装置包括的指令寄存器的数量根据处理器的应用删减或者增加。
为达到上述目的,本发明超长指令字VLIW的处理方法,包括步骤:
S1将指令连续存放在程序存储器内,其中,所述的各指令中包含有用于区分本指令是否为本次并行运行的最后一条指令的条数标志位和用于确定本指令所属指令组的组别标志位;
S2从程序存储器中提取指令,依据指令的条数标志位确定本次需要并行运行的指令,依据指令的组别标志位将本次需要并行运行的指令输入指令寄存器装置的不同指令寄存器中分别存放,没有指令输入的指令寄存器置空;
S3执行所述指令寄存器中的指令。
进一步地,在指令并行运行的一个运行周期内,步骤S2具体步骤包括:
S11按程序存储器的地址提取指令,并提取在上一个指令运行周期没有发射的指令;
S12将本次提取的指令和上一指令运行周期没有发射的指令,按所述的指令在程序存储器内存储的先后顺序进行排序;
S13读取按指令运行顺序排序后指令的条数标志位,根据每条指令中的条数标志位判断出本次并行运行的最后一条指令的位置,确定本次并行运行的指令的条数;
S14读取每个指令的组别标志位,将本次并行运行的各指令输入相对应的各指令寄存器中存放,本次运行周期没有发射的指令输入指令缓存模块存放,且其他未有指令输入的指令寄存器置空。
进一步地,在并行指令的一个运行周期内,步骤S2具体步骤包括:
S21在提取指令之前接收跳转指令,依据跳转指令按跳转后的位置提取指令,上一指令运行周期没有发射的指令无效;
S22将步骤S21提取的指令按所述的指令在程序存储器内存储的先后顺序进行排序,读取提取的各指令的条数标志位,
若提取的指令中,存在某一指令的条数标志位表示该指令为本次并行运行的最后一条的指令时,确定本次并行指令的条数,跳转到步骤S23;
若提取的指令中,不存在某一指令的条数标志位表示该指令为本次并行运行的最后一条的指令时,跳转到步骤S24;
S23通过读取本次并行运行的指令的组别标志位,依据本次并行运行的指令的组别标志位,将本次并行运行的各指令输入相对应的各指令寄存器中存放,其他本次运行周期没有发射的指令输入指令缓存模块存放,且其他未有指令输入的指令寄存器置空;
S24所有指令存储器置空,提取的指令输入指令缓存模块存放。
特别地,在所述程序存储器的每个存储地址中存储与指令组别数量相等条数的指令。
进一步地,所述指令的分组组别个数是根据处理指令的具体应用确定的。
本发明超长指令字VLIW的处理器和处理方法:
1、现有的并行指令处理方法在由指令寄存器装置进入执行装置执行之前要先经过指令选择模块对指令进行分组选择分别进入执行装置中与各条所述的并行指令相互对应的指令处理通路中执行,实现此方法的处理器在指令寄存器以后有较多的逻辑电路,一个指令寄存器后面驱动的指令译码电路为全部指令集的译码电路,指令运行过程比较复杂逻辑运算时间长。
2、本发明改变了原有指令寄存器的结构,经现有处理器中设置在执行装置之前的对指令进行选择进入不同的指令处理通路执行的指令选择模块设置在取指发射装置内,并且该处理器的指令寄存器装置包括与指令的分组组别相同数量的指令寄存器,每个指令寄存器对应一组包括相同组别标志位的指令组,且每个指令寄存器用于存放与其对应的一组指令组中的指令,同时,在执行装置中设置与所述指令寄存器一一对应的指令处理通路,用于处理相对应指令寄存器中的指令,使得一个指令寄存器后面驱动的指令译码电路仅为该组指令的译码电路,而不是全部指令集的译码电路,从而减少了指令寄存器的输出选择逻辑,降低了指令寄存器的输出,减少了指令寄存器的读端口,方便了面积的优化和后端的布局布线,方便后续的指令执行,提高了并行指令的运行速度。
3、本发明通过在每条指令中设置1或2bit的条数标志位以及组别标志位,通过指令自身来指示该指令是否为需要并行运行的最后一条指令确定本次并行指令的条数以及该指令的组别,上述步骤均发生在指令进入指令寄存器装置之前;指令的条数以及组别的判断均通过指令寄存器装置之前的取指发射装置执行,具体地,并行指令条数判断模块来读取指令中条数标志位,以确定本次并行运行的指令的条数,在处理器上避免了指令字长寄存器或其他指示并行运行指令条数的硬件结构的使用,在处理方法上省去了更新指令字长寄存器的操作,通过指令选择模块读取指令中的组别标志位确定指令的组别,简化了指令运行过程。
4、本发明指令存储器中的每个存储单元分配有存储与所述指令组别数量相等条数的指令,指令在程序存储器中的存储方法是每个存储地址存储的指令条数与指令的组别数量相等,连续存储,此程序存储器结构及存储方法读取程序存储器的一个地址单元就读取了可并行运行指令条数的最大值相等条数的指令,减少了读取程序存储器的次数,节省了指令的读取时间,同时连续存储即不存在空指令的存储,可以避免空指令的判断的步骤,以及为实现该步骤的硬件结构,简化了取指的过程。
5、每个单条指令的长度是相等的,省去了对指令长度判断的操作,减少了判断指令字长硬件的使用,简化了取指指发射装置的硬件结构。
附图说明
图1是本发明超长指令字VLIW的处理器的实施例的架构示意图;
图2是本发明超长指令字VLIW的处理器和方法的实施例中的处理器的结构示意图;
图3是本发明超长指令字VLIW的处理器和处理方法的实施例的存储器装置存储指令结构示意图;
图4是本发明超长指令字VLIW的处理器和处理方法的实施例的正常发射方式发射的过程图;
图5是本发明超长指令字VLIW的处理器和处理方法的实施例的跳转发射方式发射的过程图。
图6是本发明超长指令字VLIW的处理器和处理方法的实施例的指令寄存器的选择模块的数据过程图。
图7是本发明超长指令字VLIW的处理器和处理方法的实施例的指令跳转的示意图;
图8是本发明超长指令字VLIW的处理器和处理方法的实施例的指令跳转的示意图;
图9是本发明超长指令字VLIW的处理器和处理方法的实施例的指令跳转的示意图;
图10是本发明超长指令字VLIW的处理器和处理方法的实施例的指令跳转的示意图;
图11是本发明超长指令字VLIW的处理器取指发射方法的实施例的流程图。
具体实施方式
下面结合说明书附图对本发明做进一步的描述。
如图1所示,本发明超长指令字VLIW的处理器和处理方法,以同时执行n条指令,n>=1。所述的处理器的构架包括:程序存储器、取指发射装置、指令寄存装置和执行装置。本发明超长指令字VLIW的处理方法处理数据的过程是:待并行指令数据存储在指令存储器装置中,由取指发射装置将指令从指令存储器装置中取出放到指令寄存器装置中,执行装置执行从指令寄存器装置中读取指令数据,并完成执行过程。指令寄存器装置直接和执行装置相连,在把指令存到指令寄存器装置时就已经做出了选择,将每个指令处理通路能处理的指令放到与其对应的指令寄存器中去。
在通常情况下,指令寄存器装置之后的指令处理通路的运算单元比较多,组合逻辑延时比较长,在指令寄存器装置之后,如果还有除指令处理通路外的其他逻辑电路,会进一步增加组合逻辑延时,造成处理器频率和处理能力的降低,本发明将指令分组选择电路指令选择模块放到指令寄存器装置之前,可以减少指令寄存器装置之后的组合逻辑延时,进而可以提高处理器的设计频率和处理能力。
如图2所示,本发明超长指令字VLIW的处理器的结构包括电连接的程序存储器、取指发射装置、指令寄存器装置和执行装置,其中,
所述程序存储器,用于存放指令,包括多个并行排列的存储单元,所述指令连续存放在所述程序存储器内;其中,所述的各指令中包含有用于区分本指令是否为本次并行运行的最后一条指令的条数标志位和用于确定本指令所属指令组的组别标志位;
所述取指发射装置,用于从程序存储器中提取指令,依据指令的条数标志位确定本次需要并行运行的指令,依据指令的组别标志位将本次需要并行运行的指令输入指令寄存器装置的不同指令寄存器中分别存放,没有指令输入的指令寄存器置空;
所述指令寄存器装置,包括与指令组别相同数量的指令寄存器,每个指令寄存器对应一组指令组,且每个指令寄存器用于存放与其对应的指令组中的指令;
所述执行装置,包括与所述指令寄存器一一对应的指令处理通路,所述指令处理通路用于执行相对应指令寄存器中的指令。
本发明超长指令字VLIV的处理器通过以下实施例进行具体介绍:
实施例一:
一、本实施例超长指令字VLIW的处理器的程序存储器的具体介绍:
如图3所示,本实施例超长指令字VLIW的处理器的程序存储器的每个存储地址可以存储与指令组数量相等条数的指令的结构,将指令分为四个不同的组别,则程序存储器的每个地址单元存储的指令条数为四条,即指令1,指令2,指令3,指令4这四条指令组合在一起放入程序存储器的地址0中,指令5,指令6,指令7,指令8这四条指令组合在一起放入程序存储器地址2中,依次类推,指令i,指令i+1,指令i+2,指令i+3,4条指令组合在一起放入程序存储器的地址n中。
二、本实施例超长指令字VLIW的处理器的取指发射装置的具体介绍:
如图4和图6所示,本实施例所述的取指发射装置,包括电连接的指令顺序拼接模块、并行指令条数判断模块、指令选择模块以及指令缓存模块,其中:
所述指令顺序拼接模块,用于提取程序存储器中的指令,将提取的指令和指令缓存模块中的指令按所述的指令在程序存储器中的存储顺序进行排序,并依据本次并行运行的指令条数输出本次并行指令至指令选择模块;
所述并行指令条数判断模块,用于读取经所述指令顺序拼接模块排序后的每个并行指令中的条数标志位,判断该指令是否为本次并行指令中的最后一条,并将本次并行运行指令条数输出至指令顺序拼接模块和指令选择模块;
指令选择模块,用于接收指令顺序拼接单元发送来本次并行运行的指令、以及并行条数判断模块发送的并行指令条数,读取本次并行运行指令的组别标志位判断出每条指令应该放到哪个指令寄存器,并将各指令输入相对应的各指令寄存器中存放,并且置空没有指令输入的指令寄存器;
指令缓存模块,用于存储在指令的一个运行周期内没有发射的指令。
三、本发明超长指令字VLIW的处理器的指令寄存器装置的具体介绍:
本实施例中的指令寄存器装置,包括四个指令寄存器,指令寄存器0用于存储A组指令,指令寄存器0的存储范围不超过A组指令包含的指令范围;指令寄存器1用于存储B组指令,指令寄存器1的存储范围不超过B组指令包含的指令范围;指令寄存器2用于存储C组指令,指令寄存器2的存储范围不超过C组指令包含的指令范围;指令寄存器3用于存储D组指令,指令寄存器3的存储范围不超过D组指令包含的指令范围。
四、本发明超长指令字VLIW的处理器的执行装置的具体介绍:
本实施例中的执行装置,包括4个与所述指令寄存器一一对应指令处理通路,本实施例中,指令处理通路0对应指令寄存器0,仅用于执行存放在指令寄存器0中的A组指令,指令处理通路1对应指令寄存器1,仅用于执行存放在指令寄存器1中的B组指令,指令处理通路2对应指令寄存器2,仅用于执行存放在指令寄存器2中的C组指令,指令处理通路3对应指令寄存器3,仅用于执行存放在指令寄存器3中的D组指令。
实施例二:
如图5和图6所示,本实施例超长指令字VLIW处理器的装置结构和实施例一中的装置结构基本相同,仅是在所述的取指发射装置中增加了指令跳转模块,其中所述的指令跳转模块,用于在指令顺序拼接模块提取指令前,输出指示指令跳转位置的指示指令,令存放在指令缓存模块中指令无效,并且所述指令顺序拼接模块依据所述指示指令提取指令跳转位置以后的指令。
上述各实施例随着指令的组别的数量的不同对程序存储器每个存储单元的最大存储容量做相应的改变,以使所述程序存储器的每个存储单元分配有存储与所述指令组别数量相等条数的指令。指令寄存器装置的指令存储器的数量与指令的组别个数相等。
本发明超长指令字VLIW的处理方法通过以下一、二、三、四,几个方面进行的具体介绍:
一、实施例中所述的超长指令字VLIW的处理方法,将并行指令进行分组,需要并行运行的指令分属不同的组别。对于不同的指令并行运行目的,会有不同的分组规则,如:为了提高执行速度会将指令分为更多的组别,方便并行执行,或者为了提高资源的利用率会将指令分为更少的组别。
为了方便说明实施例,将指令划分为了四个组别,即A组指令,B组指令,C组指令和D组指令,如图11所示,并行指令的处理方法包括步骤:
S1将指令连续存放在程序存储器内,所述的各指令中包含有用于区分本指令是否为本次并行运行的最后一条指令的条数标志位;
S2从程序存储器中提取指令,确定本次并行运行的指令,将本次并行运行的指令输入指令寄存器装置的不同的指令寄存器中分别存放,每个指令寄存器对应一组指令组,且每个指令寄存器中存放与其对应的指令组的指令,没有指令输入的指令寄存器置空;
S3执行所述指令寄存器中的指令。
实施例中指令的组别标志位通过在指令中设置标志位进行识别,每个指令通过两个标志位来区分指令所属的组别,指令的两个标志位为00时,指令是A组指令;指令的两个标志位为01时,指令是B组指令;指令的两个标志位为10时;指令是C组指令,指令的两个标志位为11时,指令是D组指令。
二、为了更好的说明实施例所述的并行指令的处理方法的几点说明:
说明1:实施例中每个运行周期并行运行的指令条数,通过处理器的硬件设备指令条数判断模块读取指令的标志位来确定并行运行的指令的条数,指令的标志位在每条指令中占用指令的1个bit,若该标志位上的数字是0表示该指令是本次并行指令的最后一条;若该标志位上的数字为1表示该指令不是本次并行指令的最后一条。
说明2:指令i-指令i+3,这四条指令是从程序存储器的一个地址中一次读出来的,指令i-指令i+3这四条指令是有先后顺序的,按照字节地址,指令i排在最前,指令i+3排在最后。指令缓存模块用来存放上一个指令运行周期没有发射出去的指令。
说明3:在指令条数判断模块在读取本次并行运行的指令的条数之前,先要进过指令顺序拼接模块对指令进行排序,实施例中指令顺序拼接模块输出结果对应关系如下,其中“-”表示“结果为”的意思,这里的第n(n=1、2、3、4)条指令指的是指令的顺序关系,这里的顺序是指其字节地址的先后。
说明4:对于步骤S2的具体实施方式在处理器中有三种情况,三种方式分别是:
第1种,指令在每个运行周期均以不发生跳转按照运行顺序的发射方式,由取指发射装置取出发射至相对应的指令寄存器装置中存放;
第2种,指令在每个运行周期均发生跳转的发射方式,由取指发射装置取出发射至相对应的指令寄存器装置中存放;
第3种,指令以不发生跳转和发生跳转先后进行的发射方式,由取指发射装置中发射至指令寄存器装置中。
三、下面就在一个运行周期内,步骤S2中的指令发射到指令寄存器装置中的两种发射方式,即指令不发生跳转的正常发射方式和指令发生跳转的跳转发射方式通过以下1、2,两部分进行整体的说明:
1、指令不发生跳转的正常发射方式通过以下(1)、(2)两点进行具体说明:
(1)确定本次并行运行指令条数和将指令输出的过程的具体说明:
如果当前并行的指令条数是1个,即在第一个时钟周期将指令1发射出去,在第二个时钟周期时发射指令时,就要判断指令2、指令3、指令4和指令5的关系,继续根据标志位来判断需要在第二个周期发射出去的指令,因为第二个时钟周期发送的指令条数不固定。
如果当前并行的指令条数是2,即在第一个时钟周期将指令1和指令2发射出去,在第二个时钟周期时发射指令时,就要判断指令3、指令4、指令5和指令6的关系,继续根据标志位来判断需要在第二个周期发射出去的指令。
如果当前并行的指令条数是3,即在第一个时钟周期将指令1、指令2和指令3发射出去,在第二个时钟周期时发射指令时,就要判断指令4、指令5、指令6和指令7的关系,继续根据标志位来判断需要在第二个周期发射出去的指令。
如果当前并行的指令条数是4,即在第一个时钟周期将指令1、指令2、指令3和指令4发射出去,在第二个时钟周期时发射指令时,就要判断指令5、指令6、指令7和指令8的关系,继续根据标志位来判断需要在第二个周期发射出去的指令。
如图4所示,指令i-指令i+3,这四条指令是从程序存储器的一个地址中一次读出来的,可见图3的程序存储器结构,指令i-指令i+3这四条指令是有先后顺序的,按照字节地址,指令i排在最前,指令i+3排在最后。指令缓存模块用来存放上次指令发射时没有发射出去的指令。当前读出的四条指令和指令缓存模块中的指令通过指令顺序拼接模块,将指令进行排序,并通过硬件插入空操作NOP。这四条指令和指令缓存模块中的指令一起通过指令顺序拼接模块。顺序拼接模块输出Inst0-Inst3。
指令顺序拼接模块输出结果对应关系如下,其中“-”表示“结果为”的意思,这里的第n(n=1、2、3、4)条指令指的是指令的顺序关系,这里的顺序是指其字节地址的先后。
当前并行指令条数为1
Inst0-第1条指令;Inst1-NOP;Inst2-NOP;Inst3-NOP;
Inst0可以是ABCD四组中的任意一组。
未发射的指令需要写入指令缓存模块。
当前并行指令条数为2
Inst0-第1条指令;Inst1-第2条指令;Inst2-NOP;Inst3-NOP;
Inst0,Inst1属于不同的分组,可以是ABCD四组中的任意两组。
未发射的指令需要写入指令缓存模块。
当前并行指令条数为3
Inst0-第1条指令;Inst1-第2条指令;Inst2-第3条指令;Inst3-NOP;
Inst0,Inst1,Inst2属于不同的分组,可以是ABCD四组中的任意三组。
未发射的指令需要写入指令缓存模块。
当前并行指令条数为4
Inst0-第1条指令;Inst1-第2条指令;Inst2-第3条指令;Inst3-第4条指令;
Inst0,Inst1,Inst2,Inst3属于不同的分组,可以是ABCD任何组合方式。
无未发射指令。
(2)根据本次并行运行指令条数和将指令组别标志位输入相应的指令寄存器中存放过程的具体说明:
对Inst0-Inst3的结果进行选择,根据当前并行指令的条数和Inst0-Inst3中的指令属于哪个分组(ABCD组),来将指令放到如图2所示的四个指令寄存器中去。如图6所示,指令选择的结构图,通过当前并行的指令条数和指令的分组情况来确定指令寄存器i(i=1、2、3或4)中的内容,具体到每个指令寄存器会有细微差别,但四个指令寄存器的指令选择都是相同的结构。当前并行运行的指令,不能是同一组中的指令,但可以是ABCD四组指令中,任意1组、2组、3组或者4组的组合。指令选择模块按照如下方式进行选择。
指令寄存器0
指令寄存器0中需要存放A组指令。
当前并行的指令为1
Inst0为A组的指令时,指令寄存器0存放Inst0;否则指令寄存器0存放空操作NOP
当前并行的指令为2
Inst0或者Inst1为A组指令时,指令寄存器0存放Inst0或Inst1;如果Inst0和Inst1都不是A组指令,指令寄存器0存放空操作NOP。
当前并行的指令为3
Inst0、Inst1或者Inst2为A组指令时,指令寄存器0存放Inst0、Inst1或者Inst2;如果Inst0、Inst1和Inst3都不是A组指令,指令寄存器0存放空操作NOP。
当前并行的指令为4
此时Inst0-Inst3,四条指令中肯定有一条是A组指令,指令寄存器0中存放该条属于A组的指令。
指令寄存器1
指令寄存器1中需要存放B组指令。
当前并行的指令为1
Inst0为B组的指令时,指令寄存器1存放Inst0;否则指令寄存器1存放空操作NOP
当前并行的指令为2
Inst0或者Inst1为B组指令时,指令寄存器1存放Inst0或Inst1;如果Inst0和Inst1都不是B组指令,指令寄存器1存放空操作NOP。
当前并行的指令为3
Inst0、Inst1或者Inst2为B组指令时,指令寄存器1存放Inst0、Inst1或者Inst2;如果Inst0、Inst1和Inst3都不是B组指令,指令寄存器1存放空操作NOP。
当前并行的指令为4
此时Inst0-Inst3,四条指令中肯定有一条是B组指令,指令寄存器1中存放该条属于B组的指令。
指令寄存器2
指令寄存器2中需要存放C组指令。
当前并行的指令为1
Inst0为C组的指令时,指令寄存器2存放Inst0;否则指令寄存器2存放空操作NOP
当前并行的指令为2
Inst0或者Inst1为C组指令时,指令寄存器2存放Inst0或Inst1;如果Inst0和Inst1都不是C组指令,指令寄存器2存放空操作NOP。
当前并行的指令为3
Inst0、Inst1或者Inst2为C组指令时,指令寄存器2存放Inst0、Inst1或者Inst2;如果Inst0、Inst1和Inst3都不是C组指令,指令寄存器2存放空操作NOP。
当前并行的指令为4
此时Inst0-Inst3,四条指令中肯定有一条是C组指令,指令寄存器2中存放该条属于C组的指令。
指令寄存器3
指令寄存器3中需要存放D组指令。
当前并行的指令为1
Inst0为D组的指令时,指令寄存器3存放Inst0;否则指令寄存器3存放空操作NOP
当前并行的指令为2
Inst0或者Inst1为D组指令时,指令寄存器3存放Inst0或Inst1;如果Inst0和Inst1都不是D组指令,指令寄存器3存放空操作NOP。
当前并行的指令为3
Inst0、Inst1或者Inst2为D组指令时,指令寄存器3存放Inst0、Inst1或者Inst2;如果Inst0、Inst1和Inst3都不是D组指令,指令寄存器3存放空操作NOP。
当前并行的指令为4
此时Inst0-Inst3,四条指令中肯定有一条是D组指令,指令寄存器3中存放该条属于D组的指令。
2、指令发生跳转的跳转发射方式通过以下(1)、(2)两点进行具体说明:
(1)确定本次并行运行指令条数和将指令输出的过程的具体说明:
指令存在跳转发射的不同点在于指令顺序拼接模块,如图5所示,当处理跳转需要在图4中的指令顺序拼接模块添加相应的跳转相关的信号即可。这些信号包括用于指示跳转发生标志和跳转位置信号。程序存储器地址i中可存放四条指令,用来指示新指令具体在哪个位置的就是跳转位置。此外这时的并行指令条数需要从新的指令位置开始判断。
跳转到指令1的位置,要判断指令1、指令2、指令3和指令4的关系,继续根据标志位来判断接下来需要发射的指令的条数。
跳转到指令2的位置,要判断指令2、指令3、指令4和指令5的关系,继续根据标志位来判断接下来需要发射的指令的条数。
跳转到指令3的位置,要判断指令3、指令4、指令5和指令6的关系,继续根据标志位来判断接下来需要发射的指令的条数。
跳转到指令4的位置,要判断指令4、指令5、指令6和指令7的关系,继续根据标志位来判断接下来需要发射的指令的条数。
如图7所示,跳转位置为指令i
当前并行指令条数为1
Inst0-指令i;Inst1-NOP;Inst2-NOP;Inst3-NOP;
Inst0可以是ABCD四组中的任意一组。
指令i+1,指令i+2,指令i+3写入指令缓存模块。
当前并行指令条数为2
Inst0-指令i;Inst1-指令i+1;Inst2-NOP;Inst3-NOP;
Inst0,Inst1属于不同的分组,可以是ABCD四组中的任意两组。
指令i+2,指令i+3写入指令缓存模块。
当前并行指令条数为3
Inst0-指令i;Inst1-指令i+1;Inst2-指令i+2;Inst3-NOP;Inst0,Inst1,Inst2属于不同的分组,可以是ABCD四组中的任意三组。
指令i+3写入指令缓存模块。
当前并行指令条数为4
Inst0-指令i;Inst1-指令i+1;Inst2-指令i+2;Inst3-指令i+3;Inst0,Inst1,Inst2,Inst3属于不同的分组,可以是ABCD任何组合方式。
无指令写入指令缓存模块。
如图8所示,跳转位置为指令i+1
当前并行指令条数为1
Inst0-指令i+1;Inst1-NOP;Inst2-NOP;Inst3-NOP;
Inst0可以是ABCD四组中的任意一组。
指令i+2,指令i+3写入指令缓存模块。
当前并行指令条数为2
Inst0-指令i+1;Inst1-指令i+2;Inst2-NOP;Inst3-NOP;
Inst0,Inst1属于不同的分组,可以是ABCD四组中的任意两组。
指令i+3写入指令缓存模块。
当前并行指令条数为3
Inst0-指令i+1;Inst1-指令i+2;Inst2-指令i+3;Inst3-NOP;
Inst0,Inst1,Inst2属于不同的分组,可以是ABCD四组中的任意三组。
无指令写入指令缓存模块。
当前并行指令条数为4
Inst0-NOP;Inst1-NOP;Inst2-NOP;Inst3-NOP;
指令i+1,指令i+2,指令i+3写入指令缓存模块。
如图9所示,跳转位置为指令i+2
当前并行指令条数为1
Inst0-指令i+2;Inst1-NOP;Inst2-NOP;Inst3-NOP;
Inst0可以是ABCD四组中的任意一组。
指令i+3写入指令缓存模块。
当前并行指令条数为2
Inst0-指令i+2;Inst1-指令i+3;Inst2-NOP;Inst3-NOP;
Inst0,Inst1属于不同的分组,可以是ABCD四组中的任意两组。
无指令写入指令缓存模块。
当前并行指令条数为3或4(具体要根据接下来的程序存储模块中的指令确定)
Inst0-NOP;Inst1-NOP;Inst2-NOP;Inst3-NOP;
此时将指令寄存器中输入空指令,等待指令取指发射装置读取下一个地址的指令,开始新一周期的取指发射,此种情况符合上述的本次并行的指令存储在两个存储地中的情况。
指令i+2,指令i+3写入指令缓存模块。
如图10所示,跳转位置为指令i+3
当前并行指令条数为1
Inst0-指令i+3;Inst1-NOP;Inst2-NOP;Inst3-NOP;
Inst0可以是ABCD四组中的任意一组。
无指令写入指令缓存模块。
当前并行指令条数为2、3或4(具体要根据接下来的程序存储模块中的指令确定)
Inst0-NOP;Inst1-NOP;Inst2-NOP;Inst3-NOP;
指令i+3写入指令缓存模块;
此时将寄存等待指令取指发射装置读取下一个地址的指令,开始新一周期的取指发射,此种情况符合上述的本次并行的指令存储在两个存储地中的情况。
(2)根据本次并行运行指令条数和将指令组别标志位输入相应的指令寄存器中存放过程的具体说明:
指令发生跳转发射到指令寄存器装置和指令正常发射到指令寄存器装置中的根据组别标志位输入不同的指令寄存器中存放的过程如上述正常发射的情况相同,只是可能存在四个指令寄存器同时输入空指令的情况。
四、以下是本发明超长指令字VLIW的处理方法,分别对应上述说明4中,对于步骤S2的具体实施方式在处理器中有三种发射方式的几个具体实施例:
1、对应第1种发射情况,相对应的通过上述处理器的实施例的实施例一的装置实现,超长指令字VLIW的处理方法的实施例如下:
实施例1:
本次并行的指令条数为1条,下一个周期运行的指令条数为2条:
如图4所示,取指发射装置由指令地址0中取出指令1,指令2,指令3和指令4共4个指令,根据标志位来判断本次并运行指令的条数,本次并行运行的指令为1条,即在第一个时钟周期将指令1发射出去,即Inst0-指令1;Inst1-NOP;Inst2-NOP;Inst3-NOP;本实施例中Inst0分属A组指令,将Inst0输入指令寄存器0中,指令寄存器1、指令寄存器2、指令寄存器3中均输入空指令。将未发射的指令2,指令3和指令4输入缓存模块中进行存放。
在第二个时钟周期时发射指令时,取指发射装置由指令地址1中取出指令5,指令6,指令7和指令8共4个指令,就要对存在缓存寄存模块中的指令2、指令3、指令4和指令5进行排序,继续根据标志位来判断需要在第二个周期发射出去的指令,本次并行运行的指令为2条,即在第二个时钟周期将指令2、指令3、发射出去,即Inst0-指令2;Inst1-指令3、;Inst2-NOP;Inst3-NOP;本实施例中Inst0分属A组指令、Inst0分属B组指令,将Inst0输入指令寄存器0中、Inst1输入指令寄存器1中,指令寄存器2、指令寄存器3中均输入空指令。将未发射的指令4,指令5和指令6、指令7输入缓存模块中进行存放。
实施例2:
本次并行的指令条数为3条,下一个周期运行的指令条数为4条:
如图4所示,取指发射装置由指令地址0中取出指令1,指令2,指令3和指令4共4个指令,根据标志位来判断本次并运行指令的条数,本次并行运行的指令为3条,即在第一个时钟周期将指令1、指令2、指令3发射出去,即Inst0-指令1;Inst1-指令2;Inst2-指令3;Inst3-NOP;本实施例中Inst0分属A组指令,Inst1分属B组指令,Inst2分属C组指令,将Inst0输入指令寄存器0中,Inst1输入指令寄存器1中,Inst2输入指令寄存器2中,指令寄存器3中输入空指令。将未发射的指令4输入缓存模块中进行存放。
在第二个时钟周期时发射指令时,取指发射装置由指令地址1中取出指令5,指令6,指令7和指令8共4个指令,就要对存在缓存寄存模块中的指令4、和指令5、指令6和指令7进行排序,继续根据标志位来判断需要在第二个周期发射出去的指令,本次并行运行的指令为4条,即在第二个时钟周期将指令4、指令5、指令6、指令7发射出去,即Inst0-指令4;Inst1-指令5、Inst2-指令6Inst3-指令7;本实施例中Inst0分属A组指令、Inst1分属B组指令、Inst2分属C组指令、Inst3分属D组指令,将Inst0输入指令寄存器0中、Inst1输入指令寄存器1中、Inst2输入指令寄存器2中、Inst3输入指令寄存器3中,指令8输入缓存模块中进行存放。
2、对应第2种发射情况,相对应的通过上述处理器的实施例的实施例二的装置实现,超长指令字VLIW的处理方法的实施例如下:
实施例1:
运行周期并行的指令条数为1条,指令跳转到指令1的位置。
如图5所示,取指发射装置由指令地址0中取出指令1,指令2,指令3和指令4共4个指令,指令跳转到指令1的位置,根据标志位来判断本次并运行指令的条数,本次并行运行的指令为1条,即在第一个时钟周期将指令1发射出去,即Inst0-指令1;Inst1-NOP;Inst2-NOP;Inst3-NOP;本实施例中Inst0分属A组指令,将Inst0输入指令寄存器0中,指令寄存器1中输入空指令、指令寄存器2中输入空指、令指令寄存器3中输入空指令。将未发射的指令2、指令3、指令4输入缓存模块中进行存放。
实施例2:
运行周期运行的指令条数无法由本次读取的指令判断,指令跳转到指令7的位置,并行条数大于2:
取指发射装置由指令地址2中取出指令5,指令6,指令7和指令8共4个指令,指令跳转到指令7的位置,指令7、指令和指令8进行排序,继续根据标志位来判断需要在第二个周期发射出去的指令,由于当前并行指令条数大于2,接下来要发射的指令还没有读取,Inst0-NOP、Inst1-NOP、Inst2-NOP、Inst3-NOP;指令寄存器0中输入空指、令指令寄存器1中输入空指令、指令寄存器2中输入空指、令指令寄存器3中输入空指令。将未发射的指令7、指令8输入缓存模块中进行存放,指令5,指令6为跳转之前的指令,应该丢掉。
3、对应第3种发射情况,相对应的通过上述处理器的实施例的实施例二的装置实现,超长指令字VLIW的处理方法的实施例如下:
实施例1:
第一个运行周期正常发射并行的指令条数为1条,下一个周期运行的指令跳转发射,跳转位置为,指令6的位置,并行指令条数为3条:
如图4所示,取指发射装置由指令地址0中取出指令1,指令2,指令3和指令4共4个指令,根据标志位来判断本次并运行指令的条数,本次并行运行的指令为1条,即在第一个时钟周期将指令1发射出去,即Inst0-指令;Inst1-NOP;Inst2-NOP;Inst3-NOP;本实施例中Inst0分属A组指令,将Inst0输入指令寄存器0中,指令寄存器1、指令寄存器2、指令寄存器3中均输入空指令。将未发射的指令2,指令3和指令4输入缓存模块中进行存放。
如图5所示,在第二个时钟周期时发射指令时,取指发射装置由指令地址1中取出指令5,指令6,指令7和指令8共4个指令,指令跳转到指令6的位置,指令6、指令7、指令和指令8进行排序,继续根据标志位来判断需要在第二个周期发射出去的指令,由于指令8的标志位上的值为0,即第二个周期运行的指令条数为3条,即在第二个时钟周期将指令6、指令7、指令8发射出去,即Inst0-指令6;Inst1-指令7;Inst2-指令8;Inst3-NOP;本实施例中Inst0分属A组指令,Inst1分属B组指令,Inst2分属C组指令,将Inst0输入指令寄存器0中,Inst1输入指令寄存器1中,Inst2输入指令寄存器2中,指令寄存器3中输入空指令。未发射的指令5,为跳转前的指令,应该丢弃。
实施例2:
第一个运行周期跳转发射并行的指令条数为2条,跳转位置为指令3的位置,下一个周期运行的指令正常发射,并行指令条数为4条:
如图5所示,取指发射装置由指令地址0中取出指令1,指令2,指令3和指令4共4个指令,指令跳转到指令3的位置,指令3、指令4、进行排序,继续根据标志位来判断需要在第一个周期发射出去的指令,本次并行运行的指令为2条,即在第一个时钟周期将指令3、指令4发射出去,即Inst0-指令3;Inst1-指令4;Inst2-NOP;Inst3-NOP;本实施例中Inst0分属A组指令、Inst1分属B组指令,将Inst0输入指令寄存器0中,Inst1输入指令寄存器1中、指令寄存器2、指令寄存器3中均输入空指令。未发射的指令1和指令2,为跳转前的指令,应该丢弃。
如图4所示,在第二个时钟周期时发射指令时,取指发射装置由指令地址1中取出指令5,指令6,指令7和指令8共4个指令,就要对存在缓存寄存模块中的指令5、指令6、指令7和指令8进行排序,继续根据标志位来判断需要在第二个周期发射出去的指令,本次并行运行的指令为4条,即在第二个时钟周期将指令5、指令6、指令7、指令8、发射出去,即Inst0-指令5;Inst1-指令6、Inst2-指令7、Inst3-指令8;本实施例中Inst0分属A组指令、Inst0分属B组指令,Inst0分属C组指令,Inst0分属D组指令,将Inst0输入指令寄存器0中、Inst1输入指令寄存器1中,Inst2输入指令寄存器2中、Inst3输入指令寄存器3中。
上述各实施例中的指令的字节数固定省去了对指令长度判断的操作,使取指发射装置取指过程中复杂度降低。在指令中添加了一个标志位来指示该指令是否是本次并行指令的最后一条指令,以确定本次并行指令的条数,在读取指令的时候就对其进行判断,节省了运行时间。
每条指令中的标志位可以为1个bit即可,例如标志位上的数字是0时,表示该指令是本次并行运行的最后一条指令,本次并行运行的指令为这条指令以及这条指令以前的指令;如果标志位上的数字是1时,表示该指令不是本次并行运行的最后一条指令,本次并行运行的指令还包括其后的一些指令。
对本发明超长指令字VLIW的处理器和处理方法的其他说明:
本发明中所有的指令是连续存储的,不需要插入空操作NOP,每个存储器地址存储的指令个数为可并行执行的指令条数的最大值。本次并行运行的指令组成指令包,该指令包中的指令可以存储在存储器的同一个存储地址,也可以存储在连续的两个地址中,但需要并行的指令应该连续存放,不论其是否在同一个地址。此结构的好处是减少读取程序存储器的次数,读取一次程序存储器,就可以包括所有并行个数。对于不能一次发射的指令,可以暂存在寄存器中。
以与上述实施例中所述的将指令分为四个组别为例进行说明,如果当前需要并行的指令为4条,并行的指令存储在地址0中,则这四条指令会存储在指令1,指令2,指令3,指令4的位置中;如果是当前需要并行的指令为3条则存储在指令1,指令2,指令3的位置中;如果是当前需要并行的指令为2条则存储在指令1,指令2的位置中;如果当前需要并行的指令为1条会存储在指令1的位置中。并行指令存储在地址1、2、3......n中亦然。
如果本次需要并行的指令存储在地址0和地址1中,当需要并行的指令条数为4,则指令存储的所有组合包括:指令2、指令3、指令4、指令5,或者为指令3、指令4、指令5、指令6;或者为指令4、指令5、指令6、指令7,3种组合方式;当需要并行的指令条数为3,则指令存储的所有组合包括:指令3、指令4、指令5或者为指令4指令5、指令6,2种组合方式;当需要并行的指令条数为2条,则指令存储的组合只能为指令4、指令5。如果本次并行的指令存储在其他两个连续的地址中亦然。
本处理器的硬件结构决定了并行的指令必须分属不同的分组,但指令的某个分组可以存储在程序存储器的任意位置,不会影响指令并行性。
如图3所示,具体到本实施例中,程序存储器地址0中存放的4条指令,可以是任意的并行条数和分组的组合,
如果当前并行的指令条数为4:
指令1-A组,指令2-B组,指令3-C组,指令4-D组;
指令1-B组,指令2-A组,指令3-C组,指令4-D组;......最多4!种组合。
如果当前并行的指令条数为3条:
指令1-A组,指令2-B组,指令3-C组;
指令1-B组,指令2-A组,指令3-C组;......最多有4!种组合。
如果当前并行的指令条数为2条:
指令1-A组,指令2-B组;
指令1-B组,指令2-A组;......最多有12种组合。
如果当前并行的指令条数为1条:
指令1-A组;
指令1-B组;......最多有4种组合。
本发明超长指令字VLIW的处理方法通过超长指令字VLIW的处理器实现,处理器中指令寄存器装置直接和执行装置相连,在把指令存到指令寄存器装置时就已经做出了选择,将每个指令处理通路能处理的指令放到与其对应的指令寄存器中去。
在通常情况下,指令寄存器装置之后的指令处理通路的运算单元比较多,组合逻辑延时比较长,在指令寄存器装置之后,如果还有除指令处理通路外的其他逻辑电路,会进一步增加组合逻辑延时,造成处理器频率和处理能力的降低。将指令分组选择电路放到指令寄存器装置之前,可以减少指令寄存器装置之后的组合逻辑延时,进而可以提高处理器的设计频率和处理能力。
上述关于处理器的实施例和处理器的方法的实施例中的指令的分组还可以是其他的例如5、6、7等,同时图2中的指令寄存器的个数也应发生相应的变化,本发明的超长指令字VLIW的处理器。取指发射装置通过地址访问程序存储器,从程序存储器中取得数据,并将需要并行的指令分发到指令寄存器装置中去,有执行装置读取寄存器完成整个数据处理过程。本发明未具体处理器的流水线级数,实际设计中可根据需要进行改进。
以上,仅为本发明的较佳实施例,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求所界定的保护范围为准。
Claims (10)
1.一种超长指令字VLIW的处理器,包括电连接的程序存储器、取指发射装置、指令寄存器装置和执行装置,其特征在于:其中,
所述程序存储器,用于存放指令,包括多个并行排列的存储单元,所述指令连续存放在所述程序存储器内;其中,所述的各指令中包含有用于区分本指令是否为本次并行运行的最后一条指令的条数标志位和用于确定本指令所属指令组的组别标志位;
所述取指发射装置,用于从程序存储器中提取指令,依据指令的条数标志位确定本次需要并行运行的指令,依据指令的组别标志位将本次需要并行运行的指令输入指令寄存器装置的不同指令寄存器中分别存放,没有指令输入的指令寄存器置空;
所述指令寄存器装置,包括与指令组别相同数量的指令寄存器,每个指令寄存器对应一组指令组,且每个指令寄存器用于存放与其对应的指令组中的指令;
所述执行装置,包括与所述指令寄存器一一对应的指令处理通路,所述指令处理通路用于执行相对应指令寄存器中的指令。
2.根据权利要求1所述的超长指令字VLIW的处理器,其特征在于:所述取指发射装置,包括电连接的指令顺序拼接模块、并行指令条数判断模块、指令选择模块以及指令缓存模块,其中:
所述指令顺序拼接模块,用于提取程序存储器中的指令,将提取的指令和指令缓存模块中的指令按所述的指令在程序存储器中的存储顺序进行排序,并依据本次并行运行的指令条数输出本次并行指令至指令选择模块;
所述并行指令条数判断模块,用于读取经所述指令顺序拼接模块排序后的每个并行指令中的条数标志位,判断该指令是否为本次并行指令中的最后一条,并将本次并行运行指令条数输出至指令顺序拼接模块和指令选择模块;
指令选择模块,用于接收指令顺序拼接单元发送来本次并行运行的指令、以及并行条数判断模块发送的并行指令条数,读取本次并行运行指令的组别标志位判断出每条指令应该放到哪个指令寄存器,并将各指令输入相对应的各指令寄存器中存放,并且置空没有指令输入的指令寄存器;
指令缓存模块,用于存储在指令的一个运行周期内没有发射的指令。
3.根据权利要求2所述的超长指令字VLIW的处理器,其特征在于:所述取指发射装置还包括指令跳转模块,用于在指令顺序拼接模块提取指令前,输出指示指令跳转位置的指示指令,令存放在指令缓存模块中指令无效,并且所述指令顺序拼接模块依据所述指示指令提取指令跳转位置以后的指令。
4.根据权利要求1至3任一所述的超长指令字VLIW的处理器,其特征在于:所述程序存储器的每个存储单元分配有存储与所述指令组别数量相等条数的指令。
5.根据权利要求1所述的超长指令字VLIW的处理器,其特征在于:所述指令寄存器装置包括的指令寄存器的数量根据处理器的应用删减或者增加。
6.一种超长指令字VLIW的处理方法,其特征在于,包括步骤:
S1将指令连续存放在程序存储器内,其中,所述的各指令中包含有用于区分本指令是否为本次并行运行的最后一条指令的条数标志位和用于确定本指令所属指令组的组别标志位;
S2从程序存储器中提取指令,依据指令的条数标志位确定本次需要并行运行的指令,依据指令的组别标志位将本次需要并行运行的指令输入指令寄存器装置的不同指令寄存器中分别存放,没有指令输入的指令寄存器置空;
S3执行所述指令寄存器中的指令。
7.根据权利要求1所述的超长指令字VLIW的处理方法,其特征在于,在指令并行运行的一个运行周期内,步骤S2具体步骤包括:
S11按程序存储器的地址提取指令,并提取在上一个指令运行周期没有发射的指令;
S12将本次提取的指令和上一指令运行周期没有发射的指令,按所述的指令在程序存储器内存储的先后顺序进行排序;
S13读取按指令运行顺序排序后指令的条数标志位,根据每条指令中的条数标志位判断出本次并行运行的最后一条指令的位置,确定本次并行运行的指令的条数;
S14读取每个指令的组别标志位,将本次并行运行的各指令输入相对应的各指令寄存器中存放,本次运行周期没有发射的指令输入指令缓存模块存放,且其他未有指令输入的指令寄存器置空。
8.根据权利要求1所述的超长指令字VLIW的处理方法,其特征在于,在并行指令的一个运行周期内,步骤S2具体步骤包括:
S21在提取指令之前接收跳转指令,依据跳转指令按跳转后的位置提取指令,上一指令运行周期没有发射的指令无效;
S22将步骤S21提取的指令按所述的指令在程序存储器内存储的先后顺序进行排序,读取提取的各指令的条数标志位,
若提取的指令中,存在某一指令的条数标志位表示该指令为本次并行运行的最后一条的指令时,确定本次并行指令的条数,跳转到步骤S23;
若提取的指令中,不存在某一指令的条数标志位表示该指令为本次并行运行的最后一条的指令时,跳转到步骤S24;
S23通过读取本次并行运行的指令的组别标志位,依据本次并行运行的指令的组别标志位,将本次并行运行的各指令输入相对应的各指令寄存器中存放,其他本次运行周期没有发射的指令输入指令缓存模块存放,且其他未有指令输入的指令寄存器置空;
S24所有指令存储器置空,提取的指令输入指令缓存模块存放。
9.根据权利要求6至9任一所述的超长指令字VLIW的处理方法,其特征在于:在所述程序存储器的每个存储地址中存储与指令组别数量相等条数的指令。
10.根据权利要求6所述的超长指令字VLIW的处理方法,其特征在于:所述指令的分组组别个数是根据处理指令的具体应用确定的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210343250.6A CN102855120B (zh) | 2012-09-14 | 2012-09-14 | 超长指令字vliw的处理器和处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210343250.6A CN102855120B (zh) | 2012-09-14 | 2012-09-14 | 超长指令字vliw的处理器和处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102855120A true CN102855120A (zh) | 2013-01-02 |
CN102855120B CN102855120B (zh) | 2014-11-26 |
Family
ID=47401735
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210343250.6A Active CN102855120B (zh) | 2012-09-14 | 2012-09-14 | 超长指令字vliw的处理器和处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102855120B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103235715A (zh) * | 2013-03-27 | 2013-08-07 | 青岛中星微电子有限公司 | 一种片上系统SoC命令处理的方法、装置及芯片 |
CN103425498A (zh) * | 2013-08-20 | 2013-12-04 | 复旦大学 | 一种低功耗的长指令字指令存储器及其优化功耗的方法 |
WO2017024798A1 (zh) * | 2015-08-13 | 2017-02-16 | 深圳市中兴微电子技术有限公司 | 超长指令字指令集的指令处理方法及装置 |
CN106662996A (zh) * | 2014-05-22 | 2017-05-10 | 卡尔雷公司 | Vliw型指令束结构和适用于处理该指令束的处理器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0768602A2 (en) * | 1995-10-13 | 1997-04-16 | Matsushita Electric Industrial Co., Ltd. | Variable word length VLIW-instruction processor |
CN1675618A (zh) * | 2002-08-05 | 2005-09-28 | 皇家飞利浦电子股份有限公司 | 用于处理vliw指令的处理器和方法 |
CN101727435A (zh) * | 2008-10-28 | 2010-06-09 | 北京芯慧同用微电子技术有限责任公司 | 一种超长指令字处理器 |
-
2012
- 2012-09-14 CN CN201210343250.6A patent/CN102855120B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0768602A2 (en) * | 1995-10-13 | 1997-04-16 | Matsushita Electric Industrial Co., Ltd. | Variable word length VLIW-instruction processor |
CN1675618A (zh) * | 2002-08-05 | 2005-09-28 | 皇家飞利浦电子股份有限公司 | 用于处理vliw指令的处理器和方法 |
CN101727435A (zh) * | 2008-10-28 | 2010-06-09 | 北京芯慧同用微电子技术有限责任公司 | 一种超长指令字处理器 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103235715A (zh) * | 2013-03-27 | 2013-08-07 | 青岛中星微电子有限公司 | 一种片上系统SoC命令处理的方法、装置及芯片 |
CN103235715B (zh) * | 2013-03-27 | 2016-08-03 | 青岛中星微电子有限公司 | 一种片上系统SoC命令处理的方法、装置及芯片 |
CN103425498A (zh) * | 2013-08-20 | 2013-12-04 | 复旦大学 | 一种低功耗的长指令字指令存储器及其优化功耗的方法 |
CN103425498B (zh) * | 2013-08-20 | 2018-07-24 | 复旦大学 | 一种低功耗的长指令字指令存储器及其优化功耗的方法 |
CN106662996A (zh) * | 2014-05-22 | 2017-05-10 | 卡尔雷公司 | Vliw型指令束结构和适用于处理该指令束的处理器 |
WO2017024798A1 (zh) * | 2015-08-13 | 2017-02-16 | 深圳市中兴微电子技术有限公司 | 超长指令字指令集的指令处理方法及装置 |
CN106445466A (zh) * | 2015-08-13 | 2017-02-22 | 深圳市中兴微电子技术有限公司 | 超长指令字指令集的指令处理方法及装置 |
CN106445466B (zh) * | 2015-08-13 | 2019-07-09 | 深圳市中兴微电子技术有限公司 | 超长指令字指令集的指令处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102855120B (zh) | 2014-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103250131B (zh) | 包括用于早期远分支预测的影子缓存的单周期多分支预测 | |
KR100731371B1 (ko) | 구성가능 기능 유닛을 포함하는 프로세서를 사용해서 컴퓨터 프로그램을 실행하는 방법, 프로세서 및 컴퓨터 판독가능 기록 매체 | |
CN1809810B (zh) | 指令控制数据处理设备 | |
CN103473171A (zh) | 一种基于函数调用路径的覆盖率动态跟踪方法及装置 | |
CN102855120B (zh) | 超长指令字vliw的处理器和处理方法 | |
JP2004157593A (ja) | 多ポート統合キャッシュ | |
US10185699B2 (en) | Reconfigurable data interface unit for compute systems | |
EP0823085A2 (en) | Method and apparatus for improved branch prediction accuracy in a superscaler microprocessor | |
CN101794214A (zh) | 使用多块物理寄存器映射表的寄存器重命名系统及其方法 | |
CN104778025B (zh) | 基于随机访问存储器的先入先出存储器的电路结构 | |
CN103513958B (zh) | 高性能指令缓存系统和方法 | |
CN104731719A (zh) | 一种缓存系统和方法 | |
CN103176914B (zh) | 一种低缺失率、低缺失惩罚的缓存方法和装置 | |
CN107851017A (zh) | 用于在存储器与存储在寄存器组中的一个或多个数据元素向量之间传输多个数据结构的设备和方法 | |
Roy et al. | Algorithmic techniques for solving graph problems on the automata processor | |
CN100573500C (zh) | 基于Avalon总线的流处理器IP核 | |
CN110503179A (zh) | 计算方法以及相关产品 | |
CN100444107C (zh) | 优化的处理器和指令对准 | |
CN114297097B (zh) | 一种众核可定义分布式共享存储结构 | |
CN101251793A (zh) | 信息处理设备 | |
CN103309981A (zh) | 一种具有高存储效率的adc数据组织系统及其方法 | |
CN102508802A (zh) | 基于并行随机存储器的数据写入、读取方法、装置及系统 | |
CN104035825B (zh) | 跳转源列表处理方法、装置及编译器 | |
CN101467128B (zh) | 处理器和指令控制方法 | |
CN101819608B (zh) | 一种微处理器指令级随机验证中加速取指的装置和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 100098 Beijing Haidian District North Fourth Ring West Road No. 9, 18th Floor 1811 Patentee after: Beijing Zhongke Polytron Technologies Inc Address before: 100190, room seven, floor 6, scientific research complex, No. 734 South Road, Zhongguancun Academy of Sciences, Beijing, Haidian District Patentee before: Beijing Zhongke Jingshang Technology Co., Ltd. |
|
CP03 | Change of name, title or address |