一种执行不同长度指令集的处理器及方法

文档序号:6362416阅读:175来源:国知局
专利名称:一种执行不同长度指令集的处理器及方法
技术领域
本发明是关于处理器的技术领域,尤指一种在电脑装置中执行不同长度指令集的处理器及方法。
背景技术
一般处理器具有一32比特/16比特的指令模式,并在此两种模式切换执行,以节省程序码储存所需的空间,于美国第USP5,758,115号专利案公告中,是以程序计数器(Program Counter,PC)中的T比特以决定该处理器具位于32比特或16比特指令模式,并利用分枝(Branch)指令来切换程序计数器中T比特的值,其指令模式切换如图1所示,当执行分枝(Branch)指令220时,是分枝至(Branch to)16比特指令储存的起始地址Badd(1)并执行16比特指令,该+1是用以切换该T比特以指示该处理器位于16比特指令模式,当执行分枝(Branch)指令240时,是分枝至(Branch to)32比特指令储存的地址Badd(2)并执行32比特指令,该+0是用以将该T比特改变为“0”,以指示该处理器位于32比特指令模式,采取此种切换方法有ARM及MIPS系列的处理器,然而采取此种切换方法的32比特指令及16比特指令需分别储存在不同的区块,32比特指令及16比特指令无法夹杂存放在同一区块,因此程序码储存空间无法获得最佳化,同时,此种切换方法并非只需一个分枝(Branch)指令即可完成,而是需要4-8个指令方可完成,如图2所示,其是由一ARM模式(32-bit模式)切换到Thumb模式(16-bit模式)再切换到ARM模式(32-bit模式)的组合语言程序码,最少需要二个32-bit指令及二个16-bit指令,亦即最少需要2*32+2*16=96bit储存空间,这些多出的指令是用来撷取目标地址到所指定的暂存器中,故此种切换方法不仅程序码储存空间无法获得最佳化,同时再进行切换时,亦增加所需的储存空间。
针对32比特指令及16比特指令无法夹杂储存在同一区块的问题,美国第USP6,209,079B1号专利案公告中,是以指令码中的最高比特(Most Significant Bit,MSB)比特以决定该处理器具位于32比特或16比特指令模式而解决32比特指令及16比特指令无法夹杂储存在同一区块的问题,如图3所示,若于32比特边界的MSB若为“1”,则该32比特代表一32比特指令,若于32比特边界的MSB若为“0”,则该32比特代表两个16比特指令,若16比特指令B的MSB若为“0”,则表示为两个循序执行的16比特指令,若16比特指令B的MSB若为“1”,则表示为两个平行执行的16比特指令,采取此种切换方法有M32R是列的处理器,采取此种切换方法的32比特指令及16比特指令则无需分别储存在不同的区块,而达到提高程序码密度(Code Density)的目的,然而采取此种切换方法时,执行分枝(branch)或跳跃(jump)指令时需小心处理,以免跳跃至一32比特指令的后半部份,由于该32比特指令的后半合份并非一可执行的指令,会产生不可预期的错误,因此跳跃地址需限制在字组边界(wordboundary)或32比特边界(32-bit boundary),对于分枝-链结(branch-and-link)及跳跃—链结(jump-and-link)指令的返回地址(returnaddress)亦需限制在字组边界(word boundary)或32比特边界(32-bit boundary),此种限制会增加使用上的不方便性,同时,此种切换方法需在处理器指令中利用1-bit来区分32比特指令及16比特指令,而无法支援16比特指令的立即值定址模式,因此,现有32比特/16比特的指令模式变换方法的设计仍有诸多缺点而有予以改进的必要。
发明人爰因于此,本于积极发明的精神,亟思一种可以解决上述问题的“执行不同长度指令集的处理器及其方法”,几经研究实验终至完成此项发明。

发明内容
本发明的目的是在提供一种执行不同长度指令集的的处理器及其方法,以避免现有技术因需将跳跃地址限制在字组边界或32比特边界所引起的复杂问题,同时,提高程序码密度。
依据本发明的一特色,是提出一种执行不同长度指令集的处理器,该等不同长度指令集至少包括一N比特指令集及一2N比特指令集(N为正整数),该N比特指令集的指令由一个N比特字组所组成,该2N比特指令集的指令由一个2N比特字组所组成,该2N比特指令集包含一2N至N指令集切换指令,该N比特指令集包含一N至2N指令集切换指令,该处理器包含一指令输入装置、一指令撷取装置、一指令解码装置、一指令执行装置及一指令集切换控制器,该指令输入装置包含一宽度为2N比特的存储空间以供储存复数个代表指令的2N比特字组,该指令撷取装置用以撷取该指令码输入装置的一2N比特字组,该指令解码装置是用以对该指令撷取装置所撷取的2N比特字组进行解码,该指令执行装置执行该解码后的N比特指令或2N比特指令,该指令集切换控制器是耦合至该指令撷取装置,以当撷取到2N至N指令集切换指令时,切换该指令解码装置及该指令执行装置执行于N比特模式,而当撷取到N至2N指令集切换指令时,切换该指令解码装置及该指令执行装置执行于2N比特模式,其中,于该N比特模式,该指令解码装置对该指令撷取装置所撷取的2N比特字组进行两个N比特指令解码,该指令执行装置执行该解码后的N比特指令,于该2N比特模式,该指令解码装置对该指令撷取装置所撷取的2N比特字组进行一个2N比特指令解码,该指令执行装置执行该解码后的2N比特指令。
依据本发明的另一特色,是提出一种于处理器中执行不同长度指令集的方法,该等不同长度指令集包括一N比特指令集及一2N比特指令集(N为正整数),该N比特指令集的指令由一个N比特字组所组成,该2N比特指令集的指令由一个2N比特字组所组成,该2N比特指令集包含一2N至N指令集切换指令,该N比特指令集包含一N至2N指令集切换指令,该方法包括(A)提供复数个代表指令的2N比特字组;(B)撷取该复数个2N比特字组中的一2N比特字组,以由一指令解码装置进行解码,并以一指令执行装置执行之;(C)当撷取到2N至N指令集切换指令时,切换该指令解码装置及该指令执行装置执行于N比特模式,以使该指令解码装置对所撷取的2N比特字组进行两个N比特指令解码,该指令执行装置执行该,解码后的N比特指令;以及(D)当撷取到N至2N指令集切换指令时,切换该指令解码装置及该指令执行装置执行。于2N比特模式,以使该指令解码装置对所撷取的2N比特字组进行一个2N比特指令解码,该指令执行装置执行该解码后的2N比特指令。
依据本发明的又一特色,是提出一种执行不同长度指令集的处理器,该等不同长度指令集是表示为2i*N比特指令集(0≤i≤M,N、M为正整数),该2i*N比特指令集的指令由一个2i*N比特字组所组成,该2i*N比特指令集包含至少一2i*N至2k*N指令集切换指令(0≤k≤M,k≠I),该处理器包含一指令输入装置、一指令撷取装置、一指令解码装置、一指令执行装置及一指令集切换控制器,该指令输入装置包含一宽度为2M*N比特的存储空间以供储存复数个代表指令的2M*N比特字组,该指令撷取装置用以撷取该指令码输入装置的一2M*N比特字组,该指令解码装置是用以对该指令撷取装置所撷取的2M*N比特字组进行解码,该指令执行装置是执行该解码后的N比特指令、2N比特指令…或2M*N比特指令;以及该指令集切换控制器是耦合至该指令撷取装置,以当撷取到该2i*N至2k*N指令集切换指令时,切换该指令解码装置及该指令执行装置执行于2k*N比特模式,其中,于该2k*N比特模式,该指令解码装置对该指令撷取装置所撷取的2M*N比特字组进行至少一个2k*N比特指令解码,该指令执行装置执行该解码后的2k*N比特指令。
依据本发明的再一特色,是提出一种于处理器中执行不同长度指令集的方法,该等不同长度指令集是表示为2i*N比特指令集(0≤i≤M,N、M为正整数),该2i*N比特指令集的指令由一个2i*N比特字组所组成,该2i*N比特指令集包含至少一2i*N至2k*N指令集切换指令(0≤k≤M,k≠I),该方法包括步骤(A)提供复数个代表指令的2M*N比特字组;(B)撷取该复数个2M*N比特字组中的一2M*N比特字组,以由一指令解码装置进行解码,并以一指令执行装置执行之;以及(C)当撷取到2i*N至2k*N指令集切换指令时,切换该指令解码装置及该指令执行装置执行于2k*N比特模式,以使该指令解码装置对所撷取的2M*N比特字组进行至少一个2k*N比特指令解码,该指令执行装置执行该解码后的2k*N比特指令。
由于本发明设计新颖,能提供产业上利用,且确有增进功效,故依法申请发明专利。


为进一步说明本发明的技术内容,以下结合实施例及附图详细说明如后,其中图1是现有指令模式切换的示意图。
图2是图1中现有指令模式切换的组合语言程序码。
图3是另一现有指令模式切换的指令结构示意图。
图4是本发明的一种执行不同长度指令集的处理器架构图。
图5是本发明的一种执行不同长度指令集的处理器执行时的示意图。
具体实施例方式
有关本发明的执行不同长度指令集的处理器的系统架构请参照图4所示,其包含一指令输入装置310、一指令撷取装置320、一指令解码装置330、一指令执行装置340及一指令集切换控制器350。该指令输入装置310用以输入处理器所要执行的指令,于本实施例中,处理器可执行的不同长度指令集包括一N比特指令集及一2N比特指令集(N为正整数),该N比特指令集的指令由一个N比特字组(Word)所组成,该2N比特指令集的指令由一个2N比特字组所组成,其中,该2N比特指令集包含一2N、至N指令集切换指令(instruction set switchinstruction-2N-N,ISSI-2N-N),该N比特指令集则包含一N至2N指令集切换指令(instruction set switch instruction-N-2N,ISSI-N-2N),于本实施例中,N值较佳为16。
该指令输入装置310是包含一宽度为2N=32比特的存储空间以供储存复数个代表指令的2N比特字组,而每一2N比特字组可代表两个N比特指令或一个2N比特指令。该指令撷取装置320用以撷取该指令输入装置310的一2N比特字组,该指令集切换控制器350则耦合至该指令撷取装置320,以当该指令撷取装置320撷取到的2N比特字组为一2N至N指令集切换指令(ISSI-2N-N)时,该指令集切换控制器350切换该指令解码装置330及该指令执行装置340执行于一N比特模式,于此N比特模式,表示撷取自指令输入装置310的2N比特字组是代表两个N比特指令,因此,该指令解码装置330对该指令撷取装置320所撷取的2N比特字组进行两个N比特指令解码,而该指令执行装置340则执行该解码后的N比特指令。
而当该指令撷取装置320撷取到的2N比特字组包含N至2N指令集切换指令时(ISSI-N-2N),该指令集切换控制器350切换该指令解码装置330及该指令执行装置340执行于一2N比特模式,于此2N比特模式,表示撷取白指令输入装置310的2N比特字组是代表一个2N比特指令,因此,该指令解码装置330对该指令撷取装置320所撷取的2N比特字组进行一个2N比特指令解码,该指令执行装置340执行该解码后的2N比特指令。
图5是显示一程序经过本发明的技术组译后所产生的机械码在存储器位置中的排列方式,其中,指令(1)因前一指令为32比特,故其位于存储器32比特边界,指令(4)亦位于存储器32位无边界,由于其下一个指令为32比特,可在组译时插置一为NOP的指令(5)。
当指令撷取装置320撷取指令(1)时,因该指令为一32至16指令集切换指令(ISSI-32-16),故指令集切换控制器350切换该指令解码装置330及该指令执行装置340执行于16比特模式,而当该指令撷取装置320撷取指令(2)时,因该指令为一16至32指令集切换指令(ISSI-16-32),故该扎令集切换控制器350将切换该指令解码装置330及该指令执行装置340执行于32比特模式。
于此范例中,使用本发明的技术进行一32比特模式至16比特模式及16比特模式至32比特模式切换的程序,其仅需用到一32至16指令集切换指令(ISSI-32-16)及一16至32指令集切换指令(ISSI-16-32),仅需指令(1)与指令(2),共需16+16=32比特,该程序最多亦仅需指令(3)、指令(4)与指令(5),共16+16+16=48比特以进行一32比特模式至16比特模式及16比特模式至32比特模式切换,相较ARM现有技术在模式转换时需96-192比特,节省许多储存空间。
又,该32至16指令集切换指令(ISSI-32-16)及该16至32指令集切换指令(ISSI-16-32)可为相同的指令,亦即均为一指令集切换指令(ISSI),当每次撷取到该指令集切换指令(ISSI)时,该指令集切换控制器350便切换该指令解码装置330及该指令执行装置340的执行模式,例如,当第一次撷取到该指令集切换指令(ISSI)时,该指令集切换控制器350切换该指令解码装置330及该指令执行装置340执行于16比特模式,当该指令撷取装置320再次撷取到该指令集切换指令(ISSI)时,该指令集切换控制器350切换该指令解码装置330及该指令执行装置340执行于32比特模式,如此可节省一个指令编码空间。
前述实施例是以处理器可执行N比特指令集及2N比特指令集等两种不同长度指令为例说明,然实际上,本发明亦可应用于可执行两种以上不同长度指令的处理器,例如,可将该等两种以上(假设M+1种)不同长度指令集表示为2i*N比特指令集(0≤i≤M,N、M为正整数),而该2i*N比特指令集的指令由一个2i*N比特字组所组成,且于该2i*比特指令集中,需提供至少一2i*N至2k*N指令集切换指令(0≤k≤M,k≠i),以供指令集切换控制器350将指令解码装置330及指令执行装置340由2i*N比特模式切换至2k*N比特模式,于此应用中,该指令输入装置310是包含宽度为2M*N比特的存储空间以供储存复数个代表指令的2M*N比特字组,该指令撷取装置320则撷取该指令输入装置310的一2M*N比特字组,该指令解码装置330对该指令撷取装置320所撷取的2M*N比特字组进行解码,该指令执行装置340则执行该解码后的2i*N比特指令,而该指令集切换控制器350则在该指令撷取装置320撷取到该2i*N至2M*N指令集切换指令时,切换该指令解码装置330及该指令执行装置340执行于2k*N比特模式,且于此2k*N比特模式,该指令解码装置330对该指令撷取装置320所撷取的2M*N比特字组进行至少一个2k*N比特指令解码,该指令执行装置340执行该解码后的2k*N比特指令。
举例而言,当M=2、N=16时,本发明的处理器可执行64/32/16比特指令集,并包含一32至16指令集切换指令(ISSI-32-16)、一16至32指令集切换指令(ISSI-16-32),一32至64指令集切换指令(ISSI-32-64)、一64至32指令集切换指令(ISSI-64-32)、一64至16指令集切换指令(ISSI-64-16)及一16至64指令集切换指令(ISSI-16-64)以进行各种模式的切换,该等指令集切换指令亦可均为相同的格式,并定义当每次撷取到该指令集切换指令(ISSI)时,该指令集切换控制器350便切换言亥指令解码装置330及该指令执行装置340的执行模式,亦可达成相同的功效。
由上述可知,由于使用本发明使用一32至16指令集切换指令(ISSI-32-16)及一16至32指令集切换指令(ISSI-16-32),可克服现有技术32比特指令及16比特指令无法夹杂存放在同一区块的问题,亦可节省执行模式切换时所需指令及其储存空间,因此获得程序码储存空间最佳化,同时,此种切换方法可克服现有技术对于分枝-链结(branch-and-link)及跳跃-链结(jump-and-link)指令的返回地址(returnaddress)需在字组边界(word boundary)或32比特边界(32-bitboundary)的限制,此种切换方法无需在处理器指令中利用1-bit来区分32比特指令及16比特指令,而可支援16比特指令的立即值定址模式。
综上所述,本发明无论就目的、手段及功效,均不同于现有技术的特征,实为一极具实用价值的发明。惟应注意的是,上述诸多实施例仅是为了便于说明而举例而已,本发明所主张的权利范围自应以申请专利范围所述为准,而非仅限于上述实施例。
权利要求
1.一种执行不同长度指令集的处理器,该等不同长度指令集至少包括一N比特指令集及一2N比特指令集,N为正整数,该N比特指令集的指令由一个N比特字组所组成,该2N比特指令集的指令由一个2N比特字组所组成,该2N比特指令集包含一2N至N指令集切换指令,该N比特指令集包含一N至2N指令集切换指令,其特征在于,该处理器包含一指令输入装置,其包含一宽度为2N比特的存储空间以供储存复数个代表指令的2N比特字组;一指令撷取装置,用以撷取该指令码输入装置的一2N比特字组;一指令解码装置,是用以对该指令撷取装置所撷取的2N比特字组进行解码;一指令执行装置,其执行该解码后的N比特指令或2N比特指令;以及一指令集切换控制器,是耦合至该指令撷取装置,以当撷取到2N至N指令集切换指令时,切换该指令解码装置及该指令执行装置执行于N比特模式,而当撷取到N至2N指令集切换指令时,切换该指令解码装置及该指令执行装置执行于2N比特模式,其中,于该N比特模式,该指令解码装置对该指令撷取装置所撷取的2N比特字组进行两个N比特指令解码,该指令执行装置执行该解码后的N比特指令,于该2N比特模式,该指令解码装置对该指令撷取装置所撷取的2N比特字组进行一个2N比特指令解码,该指令执行装置执行该解码后的2N比特指令。
2.如权利要求1所述的执行不同长度指令集的处理器,其特征在于,其中,该N值为16。
3.如权利要求1所述的执行不同长度指令集的处理器,其特征在于,其中,该2N至N指令集切换指令及该N至2N指令集切换指令为相同的指令,而当每次撷取到该指令时,该指令集切换控制器便切换该指令解码装置及该指令执行装置的执行模式。
4.一种于处理器中执行不同长度指令集的方法,该等不同长度指令集包括一N比特指令集及一2N比特指令集,N为正整数,该N比特指令集的指令由一个N比特字组所组成,该2N比特指令集的指令由一个2N比特宇组所组成,该2N比特指令集包含一2N至N指令集切换指令,该N比特指令集包含一N至2N指令集切换指令,其特征在于,该方法包括步骤(A)提供复数个代表指令的2N比特字组;(B)撷取该复数个2N比特字组中的一2N比特字组,以由一指令解码装置进行解码,并以一指令执行装置执行之;(C)当撷取到2N至N指令集切换指令时,切换该指令解码装置及该指令执行装置执行于N比特模式,以使该指令解码装置对所撷取的2N比特字组进行两个N比特指令解码,该指令执行装置执行该解码后的N比特指令;以及(D)当撷取到N至2N指令集切换指令时,切换该指令解码装置及该指令执行装置执行于2N比特模式,以使该指令解码装置对所撷取的2N比特字组进行一个2N比特指令解码,该指令执行装置执行该解码后的2N比特指令。
5.如权利要求4所述的于处理器中执行不同长度指令集的方法,其特征在于,其中,该N值为16。
6.如权利要求4所述的于处理器中执行不同长度指令集的方法,其特征在于,其中,该2N至N指令集切换指令及该N至2N指令集切换指令可为相同的指令,而当每次撷取到该指令时,该指令集切换控制器便切换该指令解码装置及该指令执行装置的执行模式。
7.一种执行不同长度指令集的处理器,该等不同长度指令集是表示为2i*N比特指令集,其中0≤i≤M,N、M为正整数,该2i*N比特指令集的指令由一个2i*N比特字组所组成,该2i*N比特指令集包含至少一2i*N至2k*N指令集切换指令,其中0≤k≤M,k≠i,其特征在于,该处理器包含一指令输入装置,其包含一宽度为2M*N比特的存储空间以供储存复数个代表指令的2M*N比特字组;一指令撷取装置,用以撷取该指令码输入装置的一2M*N比特字组;一指令解码装置,是用以对该指令撷取装置所撷取的2M*N比特字组进行解码;一指令执行装置,其执行该解码后的2i*N比特指令;以及一指令集切换控制器,是耦合至该指令撷取装置,以当撷取到该2i*N至2k*N指令集切换指令时,切换该指令解码装置及该指令执行装置执行于2k*N比特模式,其中,于该2k*N比特模式,该指令解码装置对该指令撷取装置所撷取的2M*N比特字组进行至少一个2k*N比特指令解码,该指令执行装置执行该解码后的2k*N比特指令。
8.如权利要求7所述的执行不同长度指令集的处理器,其特征在于,其中,该N值为16,该M值为2。
9.一种于处理器中执行不同长度指令集的方法,该等不同长度指令集是表示为2i*N比特指令集,其中0≤i≤M,N、M为正整数,该2i*N比特指令集的指令由一个2i*N比特字组所组成,该2i*N比特指令集包含至少一2i*N至2k*N指令集切换指令,其中0≤k≤M,k≠i,其特征在于,该方法包括步骤(A)提供复数个代表指令的2M*N比特字组;(B)撷取该复数个2M*N比特字组中的一2M*N比特字组,以由一指令解码装置进行解码,并以一指令执行装置执行之;以及(C)当撷取到2i*N至2k*N指令集切换指令时,切换该指令解码装置及该指令执行装置执行于2k*N比特模式,以使该指令解码装置对所撷取的2M*N比特字组进行至少一个2k*N比特指令解码,该指令执行装置执行该解码后的2k*N比特指令。
10.如权利要求9所述的于处理器中执行不同长度指令集的方法,其特征在于,值为16,该M值为2。
全文摘要
一种执行不同长度指令集的处理器及其方法,不同长度指令集包括一N比特指令集及一2N比特指令集,2N比特指令集包含一2N至N指令集切换指令,N比特指令集包含一N至2N指令集切换指令,当撷取到2N至N指令集切换指令时,切换处理器的指令解码装置及指令执行装置执行于N比特模式,而当撷取到N至2N指令集切换指令时,切换处理器执行于2N比特模式,其中于N比特模式,指令解码装置对指令撷取装置所撷取的2N比特字组进行两个N比特指令解码,指令执行装置执行解码后的N比特指令,于2N比特模式,指令解码装置对指令撷取装置所撷取的2N比特字组进行一个2N比特指令解码,指令执行装置执行该解码后的2N比特指令。
文档编号G06F9/40GK1570851SQ0313308
公开日2005年1月26日 申请日期2003年7月23日 优先权日2003年7月23日
发明者黄明权 申请人:凌阳科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1