CN101467128A - 处理器和指令控制方法 - Google Patents

处理器和指令控制方法 Download PDF

Info

Publication number
CN101467128A
CN101467128A CNA2007800222240A CN200780022224A CN101467128A CN 101467128 A CN101467128 A CN 101467128A CN A2007800222240 A CNA2007800222240 A CN A2007800222240A CN 200780022224 A CN200780022224 A CN 200780022224A CN 101467128 A CN101467128 A CN 101467128A
Authority
CN
China
Prior art keywords
word
instruction
bit field
information
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
Application number
CNA2007800222240A
Other languages
English (en)
Other versions
CN101467128B (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Publication of CN101467128A publication Critical patent/CN101467128A/zh
Application granted granted Critical
Publication of CN101467128B publication Critical patent/CN101467128B/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/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • 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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30156Special purpose encoding of instructions, e.g. Gray coding
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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, look ahead

Abstract

初始第一指令字(I1)至初始第三指令字(I3)由比特字段(L11)和比特字段(L12)至比特字段(L31)和比特字段(L32)所构成。信息字(IW)是通过集中一部分属于同一周期中所执行的多个指令字的比特字段而构成,所述比特字段组是初始第一指令字(I1)的比特字段(L12)至初始第三指令字(I3)的比特字段(L32)。处理器(100)的指令译码器(103)通过分析信息字(IW)并将比特字段(L11)至比特字段(L31)与比特字段(L12)至比特字段(L32)相联合而恢复初始第一指令字(I1)至初始第三指令字(I3)的结构。这能够在不降低指令执行性能的情况下减小存储器的消耗量。

Description

处理器和指令控制方法
相关技术的交叉引用
本申请基于2006年6月15日提交的日本专利申请No.2006-166077要求优先权,该专利申请的公开内容在此以引用的形式全文并入。
技术领域
本发明涉及一种处理器和指令控制方法,更具体地涉及一种在不降低指令执行性能的情况下能减少存储器消耗量的处理器和指令控制方法。
背景技术
可编程处理器在每个周期中从程序存储器提取并执行一个或多个指令字,在该可编程处理器中,为了改善宝贵的程序存储器资源的使用,通常需要使用固定的指令字长。通常,取决于处理器的操作目的(operation designation)的内容,各指令在所需要的比特数(bit count)X上有所不同。
通常,处理器操作能被最有效地以指令字长X=A+B×C+D+E[比特]来指示,其中A[比特]是操作码的比特数,B[比特]是表达操作数中所指定的寄存器的数量所需的比特数,C是需要被指定的寄存器数,D[比特]是对指令的操作进行修改的标记的比特数,而E[比特]是即值字段(immediate field)的比特数。例如考虑二元操作和一元操作。前者在C方面比后者大1,由此通常在用于各指令或各指令类型的最佳字长X方面不同。
假定只有一种类型的固定指令字长Y可用。因此,在该情况下,如果对于给定的指令而X<Y,则在指令字中产生间隔(space),而该间隔在正常情况下是不必要的,从而导致降低的程序存储器的使用。另外,如果对于给定的指令而X>Y,则必须减少指令的比特数以便使X与Y匹配。这使用于处理器的指令的操作目的效率降低。在这种情况下,例如,日本专利特开No.8-95783(参考文献1)公开了可变字长的可编程处理器,其设置有预定的基本字长并同时使用是基本字长整数倍的多种指令字长。
在该情况下,能进行指令集设计,以使得将双倍字长分配给消耗较大比特数的指令,而将基本字长分配给除了上述指令以外的指令。因此,该技术在一定程度上改善了程序存储器的使用,并且在不削弱固定指令字长的优点的情况下,通过增加各指令设计中的自由度而促进实现高性能的处理器,即,在程序存储器空间中不产生空隙(gap)。
另外,例如,日本专利特开No.5-150979(参考文献2)公开了一种用于VLIW处理器的技术,其考虑到各个指令对于即值字段长度的需求之间的较大差异,不是增加字长类型的数量,而是具有专用的指令以指定即值字段的扩展。
发明内容
本发明要解决的问题
根据参考文献1中所公开的相关技术,当指令字长设定为预定基本字长Y的整数倍n×Y(n=1、2、…)时,每个指令或每种类型的指令的最佳字长X不可避免地与基本字长的给定整数倍不同,从而导致以下的问题。
即,如果小于x的字长n×Y中的一个最接近X的字长i×Y被选择为给定类型的指令的字长,则X的比特数被减少x-(i×Y)比特,与X和i×Y之间的差值相对应。这使处理器的操作目的效率降低(即降低指令执行性能)。
如果大于x的字长n×Y中的一个最接近X的字长j×Y被选择为上述指令的字长,则存储区的额外部分被(j×Y)-x比特无用地消耗掉。这降低了程序存储器的使用(即增加了存储器的消耗量)。
根据参考文献2中公开的另一相关技术,即使只有即值字段能被同一周期中的另一字的专用指令所扩展,该技术仍是参考文献1中的可变字长类型技术的一种,其具有两种类型的指令字长,即单倍字长和双倍字长。因此,该技术还是具有上述问题。
本发明的目的是提供一种处理器和指令控制方法,其在不降低指令执行性能的情况下减少存储器的消耗量,而这正是现有技术中的问题。
问题的解决方案
本发明的一种处理器,其特征在于,在执行的时候,分解信息字以及将每个指令字恢复成初始结构(arrangement),其中该信息字包括一组属于同一周期中所执行的多个指令字的某些比特字段。
本发明的一种指令控制方法,其特征在于,包括在执行的时候使处理器分解信息字以及将每个指令字恢复成初始结构的步骤,其中该信息字包括一组属于同一周期中所执行的多个指令字的某些比特字段。
本发明的效果
本发明具有在不降低指令执行性能的情况下能减少存储器的消耗量的效果。
这是因为处理器被配置为在执行的时候、分解信息字以及将每个指令字恢复成初始结构,其中该信息字包括一组属于同一周期中所执行的多个指令字的某些比特字段。
附图说明
图1是示出本发明的第一示例性实施例的结构的框图;
图2是示出本发明的第二示例性实施例的结构的框图;
图3是示出图2中的指令译码器的结构的框图;
图4是示出图3中的指令字恢复单元的结构的框图;
图5是用于说明初始指令字的格式的视图;
图6A至6C是分别用于说明信息字的格式的实例的视图;
图7是用于说明本发明的第二示例性实施例的操作的视图;
图8是用于说明本发明的第三示例性实施例的操作的视图;
图9是示出指令字恢复单元的操作的流程图;和
图10是将指令字恢复单元的一部分的设置示出为本发明的第二示例性实施例的具体实例的框图。
具体实施方式
接下来将参考附图详细地描述本发明的第一示例性实施例。图1是示出本发明的第一示例性实施例的结构的框图。参考图1,本发明的第一示例性实施例的处理器100包括指令译码器103,其分解信息字,并再现每个指令字的初始结构,所述信息字包括一组属于同一周期(例如在相同的管道阶段(pipeline stage))中所执行的多个指令字的某些比特字段。
初始第一指令字I1包括比特字段L11和比特字段L12。初始第二指令字I2包括比特字段L21和比特字段L22。初始第三指令字I3包括比特字段L31和比特字段L32。
信息字IW包括属于初始第一指令字I1的比特字段L12、属于初始第二指令字I2的比特字段L22、和属于初始第三指令字I3的比特字段L32。
指令译码器103在同一周期中接收作为第一指令字的比特字段L11、作为第二指令字的比特字段L21、作为第三指令字的比特字段L31、和信息字IW。通过分别从初始第一字I1至第三指令字I3中去除形成信息字IW的比特字段L12至L32,而获得被输入到指令译码器103的第一字L11至第三指令字L31,该第一字L11至第三指令字L31也被称作部分指令字。
然后指令译码器103将信息字IW分解成比特字段L12、比特字段L22、和比特字段L32。
指令译码器103通过合并比特字段L11与比特字段L12来恢复初始第一指令字I1的结构。指令译码器103还通过合并比特字段L21与比特字段L22来恢复初始第二指令字I2的结构。指令译码器103进一步通过合并比特字段L31与比特字段L32来恢复初始第三指令字I3的结构。
在上述结构中,在信息字IW中包含的比特字段L12至L32不是必须存在于初始第一指令字I1至初始第三指令字I3的末尾。比特字段L12至L32可存在于开始或末尾或取决于指令类型的预定位置。因此,在恢复中,比特字段L12至L32被插入在开始或末尾或取决于指令类型的预定位置处。
尽管已说明了三个指令字的情形,但本发明的第一示例性实施例能应用于n(n是二或二以上的整数)个指令字。
本发明的第一示例性实施例被配置为分解信息字并再现每个指令字的初始结构,所述信息字包括一组属于同一周期中所执行的多个指令字的某些比特字段,从而在不降低指令执行性能的情况下减少存储器的消耗量。
接下来将参考附图详细地描述本发明的第二示例性实施例。本发明的第二示例性实施例的处理器在同一周期中能执行最多三个指令,并且还能执行具有三种类型的指令字长的指令(确切地说,初始指令)。图2是示出本发明的第二示例性实施例的结构的框图。
参考图2,本发明的第二示例性实施例的处理器100包括指令通道(instruction path)101、指令供给单元102、指令译码器103、指令通道104、控制信息通道105、控制信息通道106、控制信息通道107、执行单元108、执行单元109、和执行单元110。
指令供给单元102例如是存储指令字和信息字的指令缓冲器,并且其在同一周期中经由指令通道104最多向指令译码器103输出三个指令字和信息字。例如,指令供给单元102检查每个字的信息字标识符。如果在同一周期中存在一个或两个要执行的指令字,并且信息字(在未示出的存储器中)跟随其后(follow),则指令供给单元102使信息字移位至该一个或两个指令字的末尾,并且在指令字与信息字之间插入NOP指令(无操作指令)。然后指令供给单元102输出结果。
如果在同一周期中执行的最大指令数量为n(n是一或一以上的整数),并且一个信息字跟随着n个指令字,则指令供给单元102将信息字设置在n个指令字的末尾,并输出结果。如果信息字跟随着m个指令字(m是一或一以上的整数),该m个指令字在数量上少于n个指令字,则指令供给单元102紧跟m个指令字而插入n—m个NOP指令。
指令译码器103恢复初始指令字,并基于恢复结果经由控制信息通道105至107向执行单元108至110输出与各指令对应的控制信息的片段(piece)。控制信息例如是指定操作数之间的操作的信息。执行单元108至110基于控制信息在同一周期中执行指令。
图3是示出图2中的指令译码器103的结构的框图。参考图3,指令译码器103包括指令字恢复单元200、与执行单元108对应的单独指令译码单元201、与执行单元109对应的单独指令译码单元202、和与执行单元110对应的单独指令译码单元203。
图4是示出图3中的指令字恢复单元200的结构的框图。参考图4,指令字恢复单元200包括分解单元210和合并单元211。分解单元210将信息字分解成多个比特字段。合并单元211通过合并多个指令字(通过从指令字的初始结构中去除形成信息字的部分的比特字段而获得)和对应的由分解单元210分解的比特字段,而将每个指令字恢复成初始结构。
图5是用于说明初始指令字的格式的视图。参考图5,初始指令字300包括Y[比特]的基本字段BF和扩展字段EF,该扩展字段EF的长度由指令类型所确定。基本字段BF包括1[比特]的信息字标识符303、Q[比特]的操作码304(指示指令类型的操作码)、和Y-Q-1[比特]的操作数。扩展字段EF包括由指令类型M、N、或O所确定的A[比特]、B[比特]、或C[比特]的额外操作数(excess operand)。
扩展字段EF还能包括由指令类型M、N、或O等所确定的E0[比特]、E1[比特]、或E2[比特]的即值操作数(immediate operand)。因此,如果要使用即值操作数,则取决于指令类型M、N、或O,初始指令字的字长为Y+A+E0[比特]、Y+B+E1[比特]、或Y+C+E2[比特]。如果不使用即值操作数,则取决于指令类型M、N、或O,初始指令字的字长为Y+A[比特]、Y+B[比特]、或Y+C[比特]。
Y[比特]的初始指令字300的基本字段BF的部分被隔离为指令字301。扩展字段EF的部分被包含在信息字302中。信息字302包括1[比特]的信息字标识符303和自由比特字段(在与初始指令字300同一周期中执行的多个指令字的扩展字段EF的组合)FF。
应指出的是,例如,能够由操作数指定比特字段中预定的操作数的比特模式来指定每个指令是否使用即值操作数。也就是说,指令系统能够被实现为使得当操作数的一种比特模式是特定的比特模式、例如全1(all 1s)的模式时,其表示指令不使用寄存器数目指定(registernumber designation),而使用即值操作数。执行使用即值操作数的指令,以使得在自指令字(self-instruction word)中使用即值操作数。
接下来将参考附图描述信息字302的格式。图6A是用于说明信息字302的格式的实例的视图,该信息字302是一个字并且只包括额外操作数,而不包括任何即值操作数。图6B和6C分别是用于说明信息字302和305的格式的实例的视图,在所述信息字302和305中使用额外操作数和即值操作数。
参考图6A,信息字302包括与指令类型O、N、和M相对应的C[比特]、B[比特]、和A[比特]的右对准(right-aligned)的额外操作数。应指出的是,根据要从指令供给单元102输出的指令字的顺序能确定额外操作数的顺序。图6A例证了这种情况,其中指令码被顺次排列,以使得首先设置与类型M对应的代码(在左侧),其次设置与类型N对应的代码(在中间),而最后设置与类型O对应的代码(在右侧)。相同的方式适用于稍后要描述的图6B和6C所示的情形。
参考图6B,信息字302和信息字305包括与指令类型O对应的C[比特]的额外操作数、与指令类型O对应的E2[比特]的即值操作数、与指令类型N对应的B[比特]的额外操作数、与指令类型N对应的E1[比特]的即值操作数、与指令类型M对应的A[比特]的额外操作数、和与指令类型M对应的E1[比特]的即值操作数,它们均为右对准的。
在该情况下,给定的一个初始指令的额外操作数或即值操作数能被分成部分,并且该部分能被包括在信息字302和信息字305中。
参考图6C,信息字302包括与指令类型O、N、和M对应的C[比特]、B[比特]、和A[比特]的右对准的额外操作数。信息字305包括与指令类型O、N、和M对应的E2[比特]、E1[比特]、和E0[比特]的即值操作数。以上所述为举例,并且能够使用其它的格式。
接下来将参考附图描述本发明的第二示例性实施例的操作。本发明的第二示例性实施例例证了在同一周期中执行不使用即值数据的三个或多于三个的指令的指令系统。为简单起见,下文例证了Y总是大于A、B、和C三个的总数的情形。下文涉及图6A所示的信息字。
图7是用于说明本发明的第二示例性实施例的操作的视图。参考图7,指令供给单元102经由指令通道104在同一周期中输出类型M的指令字400、类型N的指令字401、类型O的指令字402、和信息字403,它们每个都具有固定字长Y。为简单起见,下文例证了信息字403被设置在最后、即在指令字400至402的右侧的情形。
当收到指令字400至402和信息字403时,指令译码器103的指令字恢复单元200从每个字的信息字标识符303来确定每个字是信息字还是指令字。
如果每个字是信息字,则指令字恢复单元200将自由比特字段FF的内容用于每个初始指令字的恢复。如果每个字是指令字,则指令字恢复单元200从操作码304来辨别指令的类型。然后,指令字恢复单元200按要求从存在于同一周期中的信息字403的自由比特字段FF提取具有与指令类型相对应的比特数的额外操作数,并向指令字的合适当部分(图7中的末尾)添加额外操作数,从而恢复初始指令字。
也就是说,指令字恢复单元200将三种类型M、N、和O的指令字400、401、和402分别恢复成字长Y+A[比特]、Y+B[比特]、和Y+C[比特]的初始指令字405、406、和407。然后,指令字恢复单元200将恢复的初始指令字405、406、和407分别输出到单独指令译码单元201、202、和203。
单独指令译码单元201至203分别解码初始指令字405至407,并经由控制信息通道105至107向执行单元108至110输出用于执行相应指令的控制信息的片段。
本发明的第二示例性实施例被配置为分解信息字,并再现每个指令字的初始结构,其中该信息字包括一组属于同一周期中所执行的多个指令字的额外操作数,从而在不降低处理器100的操作指定效率的情况下改善存储器的使用和减少存储器的消耗量。
接下来将参考附图详细地描述本发明的第三示例性实施例。不同于本发明的第二示例性实施例,本发明的第三示例性实施例的处理器100使用两个信息字和一个即值操作数。本发明的第三示例性实施例的结构与图2和3所示的第二示例性实施例的结构相同。本发明的第三示例性实施例在同一周期中执行三个或三个以上使用即值数据的指令。
接下来将参考附图描述本发明的第三示例性实施例的操作。为简单起见,下文例证了Y总是大于A、B、C、E0、E1、和E2中任何三个的总数、且小于它们中任何四个的总数的情形。下文涉及图6B所示的信息字。
图8是用于说明本发明的第三示例性实施例的操作的视图。参考图8,指令供给单元102经由指令通道104输出类型M的指令字500、类型N的指令字501、类型O的指令字502、信息字503、和信息字504,它们每个都具有固定字长Y。为简单起见,下文例证了信息字503和信息字504被排列在末尾,即指令字500至502右侧的情形。
当收到指令字500至502、信息字503、和信息字504时,指令译码器103的指令字恢复单元200从每个字的信息字标识符303来确定每个字是信息字还是指令字。
如果每个字是信息字,则指令字恢复单元200将自由比特字段FF的内容用于每个指令字的恢复。如果每个字是指令字,则指令字恢复单元200从它的操作码304来辨别指令的类型。然后,指令字恢复单元200按要求从存在于同一周期中的信息字503和504的自由比特字段FF提取额外操作数和即值操作数,该额外操作数和即值操作数所对应的比特数与指令的类型相对应,并且指令字恢复单元200将操作数插入在指令字的适当位置(图7中的末尾),从而恢复初始指令字。
也就是说,指令字恢复单元200将三种类型M、N、和O的指令字500、501、和502分别恢复成字长Y+A+E0[比特]、Y+B+E1[比特]、和Y+C+E2[比特]的初始指令字505、506、和507。然后,指令字恢复单元200将恢复的初始指令字505、506、和507分别输出到单独指令译码单元201、202、和203。
单独指令译码单元201至203分别解码初始指令字505至507,并经由控制信息通道105至107向执行单元108至110输出用于执行相应指令的的控制信息的片段。
接下来将更详细地描述本发明的第三示例性实施例的操作。下文例证了这种情况,其中类型M、N、和O的指令总是需要信息字,一个或多个信息字总是存在于每个周期中。
例如,如果一个或多个信息字被设置在每个周期中所执行的字组800的末尾(右侧),则信息字还能被用于为指令划界,以表示它们是否是要在同一周期中执行的指令。因此,当在同一周期中要执行少于三个指令字时,在指令字中不需要单独地提供任何表示在周期中所执行的指令数的专用比特字段。因此,下文例证了信息字总是被设置在每个周期中所执行的指令组的末尾处的情形。
图9是示出指令字恢复单元200的操作的流程图。参考图9,指令译码器103的指令字恢复单元200在同一周期中接收字组800(图9中的步骤S1)。字组800包括在同一周期中执行的指令字,以及信息字的需要数量。假定字组800具有Y[比特]×5[字]。为简单起见,假定Y为常数。
指令字恢复单元200将设置在字组800末尾处的第五字(即信息字)设定为当前字(步骤S2)。然后,指令字恢复单元200在步骤S3至S6中对当前字进行处理。
指令字恢复单元200在步骤S7和S8中进行处理以更新当前字,并在步骤S3至S6中对每个前面的字顺次地进行处理。
在通过信息字标识符303辨别出当前字是信息字时(步骤S3中的是),指令字恢复单元200进行准备,以将当前字的自由比特字段FF用于对后续指令字的处理。也就是说,如果当前字是第一信息字,则指令字恢复单元200将当前自由比特字段位置设定至自由比特字段FF的末尾。如果当前字不是第一信息字,则指令字恢复单元200将信息字的自由比特字段FF添加在现有自由比特字段FF之前的位置(步骤S10)。
在辨别出当前字不是信息字时(步骤S3中的否),指令字恢复单元200将指令字的类型辨别为当前字(步骤S4、S5、或S6)。指令字恢复单元200从当前自由比特字段位置提取具有与指令类型相对应的比特长度的比特字段(额外操作数或即值操作数),并将比特字段添加至指令字(当前字)的末尾,从而将指令字(当前字)恢复成初始字长的初始指令字。指令字恢复单元200通过使当前自由比特字段位置向前移动所提取比特字段的比特长度而更新当前自由比特字段位置(步骤S11、S12、或S13)。通过该操作,指令字恢复单元200恢复每个初始指令字的指令字长。
本发明的第三示例性实施例被配置为分解信息字,并再现每个指令字的初始结构,其中该信息字包括一组属于同一周期中所执行的多个指令字的额外操作数和即值操作数,从而在不使处理器100的操作指定效率降低的情况下改善存储器的使用并减少存储器的消耗量。
接下来将描述本发明的第一、第二、或第三示例性实施例的具体实例。根据该具体实例的微处理器执行包括二元指令(类型M)、一元指令(类型N)、和不明确地采取操作数的空指令(类型O)的指令系统。根据具体实例的微处理器在同一周期中总是执行三个指令。
信息字标识符的比特数S为1[比特]。操作码的比特数OP是7[比特]。在操作数中指定的寄存器的数量是32。指定每个寄存器的用于寄存器指定的比特数REG是5[比特]。以下例证了这种情况,其中用于二元指令、一元指令、和空指令的指定寄存器数分别为三个(两个源和一个目的)、二个(一个源和一个目的)、和一个(一个目的),并且即值字段所需的比特数IMM为1至16。
在不使用即值操作数的情况下,二元指令(类型M)、一元指令(类型N)、和空指令(类型O)的最佳指令字长分别为S+OP+REG×3=1+7+5×3=23[比特],S+OP+REG×2=1+7+5×2=18[比特],和S+OP+REG×1=1+7+5×1=13[比特]。
在使用即值操作数的情况下,二元指令(类型M)、一元指令(类型N)、和空指令(类型O)的最佳指令字长分别为S+OP+REG×3+IMM=1+7+5×3+16=39[比特]、S+OP+REG×2+IMM=1+7+5×2+16=34[比特]、和S+OP+REG×1+IMM=1+7+5×1+16=29[比特]。
在处理器性能很重要的情况下,当要通过利用单指令字长的通用技术(也称为相关技术1)确定指令字长时,指令字长被设定为与最长的二元指令的最佳字长相一致的固定字长39[比特]。在处理器性能很重要的情况下,当通过利用基于可变字长方案的相关技术(也称为相关技术2;例如参见“参考文献1”)来确定指令字长时,其中该可变字长方案使用两种类型的字长,即基本字长和双倍字长,此时指令字长是两种类型的字长,即基本字长29[比特]和双倍字长58[比特]。
与此相比,假定在本发明的具体实例中,固定字长Y=18[比特]。在该情况下,如果不使用即值操作数(对应于图7),则其满足将二元指令(如上所述,具有23[比特]的类型M)的额外操作数的比特数A、一元指令(如上所述,具有18[比特]的类型N)的额外操作数的比特数B、和空指令(如上所述,具有13[比特]的类型O)的额外操作数的比特数C分别设定成A=23-18=5[比特]、B=18-18=0[比特]、和C=0[比特](因为18>13)。当涉及即值操作数时(对应于图8),其满足将E0、E1、和E2设定成16[比特]的最大值,并且设定A、B、和C。
在与三种类型的指令、即M、N、和O相关的所有可能的指令发布模式(instruction issuance pattern)中,A、B、和C的任意三个值的总数的最大值是A+A+A=5+5+5=15[比特]。由于该最大值15[比特]小于固定字长Y-1=18-1=17[比特],所以如果要发布不使用即值操作数的指令,则其满足在每个周期中总是只发布与一个字对应的信息字。
接下来考虑利用即值操作数的指令和不用即值操作数的指令共同存在(即图7和图8中的状态共同存在)的情形。表1示出在上述类型的指令共同存在的情况下的指令发布模式与能被用作第一信息字中即值操作数的比特的数目之间的关系。
表1
 
指令发布模式(所有组合) 能被用作第一信息字中即值操作数的比特的数目                
3个二元指令 18-1-5×3=2[比特]
2个二元指令和1个一元指令 18-1-5×2=7[比特]
1个二元指令、1个一元指令、和1个空指令              18-1-5=12[比特]
2个一元指令和1个空指令 18-1=17[比特]
2个一元指令和1个二元指令 18-1=17[比特]
1个一元指令和2个空指令 18-1=17[比特]
3个一元指令 18-1=17[比特]
3个空指令 18-1=17[比特]
如果上述类型的指令共同存在,则不总是需要第二信息字。这是因为,取决于指令发布模式,未使用的自由比特字段FF作为第一信息字中的额外操作数而存在,并且能被被用作即值操作数,如表1所示。
也就是说,如果这样的未使用的自由比特字段FF落入指令所需要的即值操作数的比特数内,则不需要为周期添加任何新的信息字。如上所述,在该具体的实例中,即使存在利用在同一周期中执行的即值操作数的指令,也不总是需要增加信息字的数量。
该具体实例和使用单一指令字长的上述相关技术1和使用可变字长、即两种类型的字长的上述相关技术2之间的详细比较揭示了具体实例的以下效果。
相关技术1在每个周期中总是需要39×3=117[比特]。相关技术2需要87[比特](具有较短字长的三个指令字的情形:29×3)至174[比特](具有较长字长的三个指令字的情形=58×3)。根据利用固定字长18[比特]的该具体实例,在三个指令在同一周期中同时使用一个16[比特]有效数字的即值操作数的罕见情况下,消耗18×(3+4)=126[比特]。
在该情况下,上述值“4”计算如下。一个指令字的额外操作数具有4[比特]。即值操作数的最大值是16[比特]。因此,信息字总体上需要(4+16)×3=63[比特]。由于3<(63/17)<4,所以在一个周期中需要的最大值是四个信息字。
大部分情况需要总共四个或五个字,包括三个指令字和一个或两个信息字,即大约18×4=72[比特]至18×5=90[比特]。
因此,该具体实例与相关技术1相比较能平均减少大约(117-72)/117=38[%]至(117-90)/117=22[%]的程序存储器消耗量。在相关技术2中,如果在每个周期中所需的平均比特数是87[比特]和174[比特]的平均数130[比特],则该具体实例与相关技术相比较能平均减少大约(130-72)/130=45[%]至(130-90)/130=30[%]的程序存储器消耗量。
接下来将参考附图描述第二示例性实施例的具体实例的结构。图10是示出根据本发明第二示例性实施例的具体实例的指令字恢复单元200的一部分的结构的框图。参考图10,指令字恢复单元200包括译码器610、译码器611、译码器612、选择信号630、选择信号631、选择信号632、选择电路620、选择电路621、和选择电路622。
译码器612解码第三指令字602的操作码,并输出用于选择第三指令字602的额外操作数的选择信号632。译码器611解码第二指令字601和第三指令字602的操作码,并输出用于选择第二指令字601的额外操作数的选择信号631。译码器610解码第一指令字600、第二指令字601、和第三指令字602的操作码,并输出用于选择第一指令字600的额外操作数的选择信号630。
例如,如果第三指令是类型M、N、和O,则译码器612输出选择信号632,以便从信息字603的末尾选择A[比特]、B[比特]、和C[比特]。例如,如果第三和第二指令分别是类型O和类型N,则译码器611输出选择信号631,以便从一个位置选择B[比特],该位置是从信息字603的末尾向前移C[比特]。例如,如果第三、第二、和第一指令分别是类型O、类型N、和类型M,则译码器610输出选择信号630,以便从一个位置选择A[比特],该位置是从信息字603的末尾向前移B+C[比特]。
选择电路620(18路)(18ways),、选择电路621(9路)、和选择电路622(3路)根据选择信号630、选择信号631、和选择信号632分别选择和输出第一指令字600、第二指令字601、和第三指令字602的额外操作数。
尽管未示出,但处理器100可具有微程序控制方案的结构。也就是说,处理器100根据指令控制程序而操作,以实现各功能单元:如上所述的指令供给单元102、指令译码器103、和执行单元108至110。在被记录于诸如光盘或磁盘的机器可读记录介质上时可提供该指令控制程序。
当在同一周期中要执行n个指令时,需要第一译码器、…、第i个译码器、…、第n个译码器、和第一选择电路、…、第i个选择电路、…、第n个选择电路。第i个译码器接收第i个指令、第(i+1)个指令、…、第n个指令的操作码,并输出用于对与第i个指令字对应的额外操作数或即值操作数进行选择的第i个选择信号。因此第i个选择电路根据第i个选择信号从信息字中相应的位置选择与第i个指令相对应的额外操作数或即值操作数。
18路选择电路62等的延迟时间长。如果执行时间没有落入一个周期内,则可通过增加管道阶段(pipeline stage)的数量来实现该具体实例。
作为另一具体实例,本发明可与作为相关技术2的可变字长指令方案相结合而执行。在该情况下,由于能够将信息字的字长设定为基本字长或整数倍的另一准备字长(prepared word length),所以能进一步减少程序存储器消耗量。
参考图9,在利用两种类型的字长、最小字长为Z[比特]的可变字长方案的情况下,在每个周期中只有信息字的字长Y变成Z[比特]或2Z[比特]。在该情况下,需要增加信息字标识符303的比特数或在指令字或信息字中单独添加用于指示字长的比特字段。
如上所述,上述示例性实施例的处理器100包括分解信息字并恢复每个指令字的初始结构的指令译码器103,其中所述信息字包括一组属于同一周期中所执行的多个指令字的某些比特字段。更具体地说,指令译码器103从信息字中提取比特字段,并将这些比特字段插入在相应指令字的预定比特位置,从而恢复相应的指令字。更详细地,指令译码器103从信息字中提取比特字段,并将这些比特字段插入在相应指令字的开始或末尾处,或取决于相应字的操作码的预定位置处,从而恢复相应的指令字。
另外,处理器100包括在同一周期中输出多个指令字和一个信息字的指令供给单元102、解码恢复后的相应指令字并输出用于执行每个指令字的控制信息的指令译码器103、和基于控制信息执行每个指令的一个或多个执行单元108至110。
如果在同一周期中执行的指令的最大数量是n,并且信息字跟随在n个指令字之后,则指令供给单元102将信息字设置在n个指令的末尾并输出结果。如果信息字跟随在m个指令字之后,该m个指令字小于n个指令字,则指令供给单元102可紧接n个指令字插入n-m个NOP指令。
在该情况下,作为信息字镶入的一些比特字段可以是长度由指令字的类型所决定的额外操作数或即值操作数。在该情况下,指令译码器103可包括第i个译码器610至612,该译码器610至612接收第i个指令、第(i+1)个指令、…、和第n个指令的操作码,并输出用于对与第i个指令字相对应的额外操作数或即值操作数进行选择的第i个选择信号,指令译码器103还包括第i个选择电路620至622,该选择电路620至622根据第i个选择信号从信息字中的相应位置选择与第i个指令相对应的额外操作数或即值操作数。
尽管已参考附图详细地描述了本发明的示例性实施例和具体实例,但要使用的具体结构并不局限于上述示例性实施例和具体实例。本发明包括属于本发明的精神和范围之内的设计上的改变等等。
工业适用性
本发明能适用于实现高性能的处理器,例如VLIW(超长指令字)类型的处理器,其能在保持性能的同时减少由程序存储器所消耗的比特数量,并且能在单个周期中发布多个指令。

Claims (21)

1.一种处理器,其特征在于,在执行的时候分解信息字,并将每个指令字恢复成初始结构,其中该信息字包括一组属于在同一周期中所执行的多个指令字的一些比特字段。
2.根据权利要求1所述的处理器,其特征在于包括指令译码器,该指令译码器在执行的时候分解信息字,并将每个指令字恢复成初始结构。
3.根据权利要求2所述的处理器,其特征在于所述指令译码器包括指令字恢复单元,所述指令字恢复单元从信息字中提取比特字段,并通过将所述比特字段插入在相应指令字中的预定比特位置而恢复相应的指令字。
4.根据权利要求2所述的处理器,其特征在于所述指令译码器包括指令字恢复单元,所述指令字恢复单元从信息字中提取比特字段,并通过将所述比特字段插入在相应指令字的开始和末尾、以及取决于相应字的操作码而确定的预定位置中的任何一个而恢复相应的指令字。
5.根据权利要求2所述的处理器,其特征在于还包括:
指令供给单元,其在同一周期中向所述指令译码器输出信息字和多个部分指令字,所述多个部分指令字是通过从相应指令字的初始结构中去除形成信息字的部分的比特字段而获得的;以及,
至少一个执行单元,其基于控制信息而执行指令,
其中,所述指令译码器包括单独指令译码单元,所述单独指令译码单元解码相应的恢复后的指令字,并向所述相应的执行单元输出用于执行相应指令字的控制信息的片段。
6.根据权利要求5所述的处理器,其特征在于,当在同一周期中执行的指令的最大数量是不小于1的整数n并且信息字跟随在n个部分指令字之后时,所述指令供给单元在根据所述部分指令字的顺序而将相应的比特字段设置在所述n个部分指令字的末尾处之后输出信息字,以及,当信息字跟随在在数量上等于整数m的部分指令字之后并且其中m比n小但是不小于1时,所述指令供给单元在根据所述部分指令字的顺序而将n-m个NOP指令设置在所述m个部分指令字的末尾处并且将相应的比特字段设置在所述NOP指令的末尾处之后输出信息字。
7.根据权利要求1所述的处理器,其特征在于,形成信息字的比特字段包括长度由指令字的类型所确定的额外操作数和即值操作数中的至少一个。
8.根据权利要求6所述的处理器,其特征在于,形成信息字的比特字段包括长度由指令字的类型所确定的额外操作数和即值操作数中的至少一个。
9.根据权利要求8所述的处理器,其特征在于所述指令译码器包括:
第i个译码器,当i是不小于1且不大于n的整数时,其接收第i个部分指令字至第n个部分指令字的操作码,并且基于每个部分指令字的类型而生成和输出第i个选择信号,所述第i个选择信号用于选择与第i个部分指令字对应的额外操作数和即值操作数中的一个,以及,
第i个选择电路,其根据从所述第i个译码器输出的第i个选择信号来从与信息字对应的位置处选择与第i个部分指令字对应的额外操作数和即值操作数中的一个。
10.根据权利要求1所述的处理器,其特征在于包括:
分解单元,其将信息字分解成多个比特字段,以及,
合并单元,其通过将部分指令字与由所述分解单元分解的对应比特字段相合并而将每个指令字恢复成初始结构,其中所述部分指令字是通过从每个指令字的初始结构中去除形成信息字的部分的比特字段而获得的。
11.一种指令控制方法,其特征在于包括以下步骤:
使处理器在执行的时候分解信息字,以及将每个指令字恢复成初始结构,其中所述信息字包括一组属于在同一周期中所执行的多个指令字的一些比特字段。
12.根据权利要求11所述的指令控制方法,其特征在于所述恢复步骤包括以下步骤:
使处理器的指令译码器进行分解和恢复。
13.根据权利要求12所述的指令控制方法,其特征在于所述恢复步骤包括以下步骤:
使指令译码器从信息字中提取比特字段,并通过将所述比特字段插入在相应指令字中的预定比特位置处而恢复所述相应的指令字。
14.根据权利要求12所述的指令控制方法,其特征在于所述恢复步骤包括以下步骤:
使指令译码器从信息字中提取比特字段,并通过将所述比特字段插入在相应指令字的开始和末尾、以及取决于相应字的操作码而确定的预定位置中的任何一个从而恢复所述相应的指令字。
15.根据权利要求12所述的指令控制方法,其特征在于还包括以下步骤:
使处理器的指令供给单元在同一周期中向所述指令译码器输出信息字和多个部分指令字,所述多个部分指令字是通过从相应指令字的初始结构中去除形成信息字的部分的比特字段而获得的,
使指令译码器来解码每个恢复后的指令字,并向处理器的至少一个执行单元输出用于执行每个指令字的控制信息,以及,
使执行单元基于所述控制信息而执行指令。
16.根据权利要求11所述的指令控制方法,其特征在于所述恢复步骤包括以下步骤:
将信息字分解成多个比特字段,以及,
将部分指令字与通过分解而获得的对应比特字段相合并,所述部分指令字是通过从每个指令字的初始结构中去除形成信息字的部分的比特字段而获得的。
17.一种程序,用于使处理器执行分解信息字和将每个指令字恢复成初始结构的步骤,该信息字包括一组属于在同一周期中所执行的多个指令字的一些比特字段。
18.根据权利要求17所述的程序,作为恢复步骤,该程序使处理器执行以下步骤:
从信息字中提取比特字段,并通过将所述比特字段插入在相应指令字中的预定比特位置处从而恢复相应的指令字。
19.根据权利要求17所述的程序,作为恢复步骤,该程序使处理器执行以下步骤:
从信息字中提取比特字段,并通过将所述比特字段插入在相应指令字的开始和末尾、以及取决于相应字的操作码而确定的预定位置中的任何一个从而恢复相应的指令字。
20.根据权利要求17所述的程序,其还使处理器执行以下步骤:
在同一周期中输出信息字和多个部分指令字,所述多个部分指令字是通过从相应指令字的初始结构中去除形成信息字的部分的比特字段而获得的,
解码每个恢复后的指令字,并产生用于执行每个指令字的的控制信息,以及,
基于产生的控制信息而执行指令。
21.根据权利要求17所述的程序,作为恢复步骤,该程序使处理器执行以下步骤:
将信息字分解成多个比特字段,以及,
将部分指令字与通过分解而获得的对应比特字段相合并,其中所述部分指令字是通过从每个指令字的初始结构中去除形成信息字的部分的比特字段而获得的。
CN2007800222240A 2006-06-15 2007-06-15 处理器和指令控制方法 Expired - Fee Related CN101467128B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2006166077 2006-06-15
JP166077/2006 2006-06-15
PCT/JP2007/062118 WO2007145319A1 (ja) 2006-06-15 2007-06-15 プロセッサ、および、命令制御方法

Publications (2)

Publication Number Publication Date
CN101467128A true CN101467128A (zh) 2009-06-24
CN101467128B CN101467128B (zh) 2012-09-26

Family

ID=38831832

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007800222240A Expired - Fee Related CN101467128B (zh) 2006-06-15 2007-06-15 处理器和指令控制方法

Country Status (6)

Country Link
US (1) US8131978B2 (zh)
EP (1) EP2028590A4 (zh)
JP (1) JP5168143B2 (zh)
KR (1) KR20090009981A (zh)
CN (1) CN101467128B (zh)
WO (1) WO2007145319A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106293628A (zh) * 2015-06-27 2017-01-04 英特尔公司 用于改进状态依赖计算的性能的系统、方法及装置
CN106445466A (zh) * 2015-08-13 2017-02-22 深圳市中兴微电子技术有限公司 超长指令字指令集的指令处理方法及装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5967582B2 (ja) * 2012-06-04 2016-08-10 パナソニックIpマネジメント株式会社 ディスク装置
CN108256645B (zh) * 2018-01-19 2021-02-26 上海兆芯集成电路有限公司 数据位宽可调适的处理器

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3004108B2 (ja) 1991-11-27 2000-01-31 株式会社東芝 情報処理装置
JPH0895783A (ja) 1994-09-20 1996-04-12 Nec Corp 可変語長型マイクロコンピュータ
JPH09265397A (ja) * 1996-03-29 1997-10-07 Hitachi Ltd Vliw命令用プロセッサ
US5787302A (en) 1996-05-15 1998-07-28 Philips Electronic North America Corporation Software for producing instructions in a compressed format for a VLIW processor
US5870576A (en) 1996-12-16 1999-02-09 Hewlett-Packard Company Method and apparatus for storing and expanding variable-length program instructions upon detection of a miss condition within an instruction cache containing pointers to compressed instructions for wide instruction word processor architectures
JP3790607B2 (ja) * 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
JP3327818B2 (ja) * 1997-08-29 2002-09-24 松下電器産業株式会社 プログラム変換装置及び記録媒体
EP1046100A1 (en) * 1998-08-06 2000-10-25 Trimedia Technologies, Inc. Data processor and method of processing data
EP0992892B1 (en) 1998-10-06 2015-12-02 Texas Instruments Inc. Compound memory access instructions
US20030023960A1 (en) * 2001-07-25 2003-01-30 Shoab Khan Microprocessor instruction format using combination opcodes and destination prefixes
US7002595B2 (en) * 2002-10-04 2006-02-21 Broadcom Corporation Processing of color graphics data
JP4283131B2 (ja) 2004-02-12 2009-06-24 パナソニック株式会社 プロセッサ及びコンパイル方法
JP4424184B2 (ja) 2004-12-08 2010-03-03 株式会社ニコン 撮像装置
JP2009026106A (ja) * 2007-07-20 2009-02-05 Oki Electric Ind Co Ltd 命令コード圧縮方法と命令フェッチ回路

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106293628A (zh) * 2015-06-27 2017-01-04 英特尔公司 用于改进状态依赖计算的性能的系统、方法及装置
CN106445466A (zh) * 2015-08-13 2017-02-22 深圳市中兴微电子技术有限公司 超长指令字指令集的指令处理方法及装置
CN106445466B (zh) * 2015-08-13 2019-07-09 深圳市中兴微电子技术有限公司 超长指令字指令集的指令处理方法及装置

Also Published As

Publication number Publication date
JP5168143B2 (ja) 2013-03-21
JPWO2007145319A1 (ja) 2009-11-12
EP2028590A4 (en) 2009-07-08
CN101467128B (zh) 2012-09-26
KR20090009981A (ko) 2009-01-23
WO2007145319A1 (ja) 2007-12-21
EP2028590A1 (en) 2009-02-25
US20100161944A1 (en) 2010-06-24
US8131978B2 (en) 2012-03-06

Similar Documents

Publication Publication Date Title
US5333280A (en) Parallel pipelined instruction processing system for very long instruction word
US6230257B1 (en) Method and apparatus for staggering execution of a single packed data instruction using the same circuit
KR100284789B1 (ko) N-지로 분기를 갖는 슈퍼스칼라 또는 초장 명령어 워드컴퓨터에서 다음 명령어를 선택하는 방법 및 장치
CN101097512B (zh) 用于实施混洗和移位操作的方法、设备和系统
US20080270750A1 (en) Instruction-parallel processor with zero-performance-overhead operand copy
CN101689107A (zh) 用于将条件指令扩展为无条件指令与选择指令的方法和系统
US8429380B2 (en) Disabling redundant subfunctional units receiving same input value and outputting same output value for the disabled units in SIMD processor
US20140317388A1 (en) Apparatus and method for supporting multi-modes of processor
CN101467128B (zh) 处理器和指令控制方法
JP3449186B2 (ja) パイプラインバイパス機能を有するデータ処理装置
JP2001034471A (ja) Vliw方式プロセッサ
JP2004234038A (ja) 低電力動作制御装置、およびプログラム最適化装置
US20030120897A1 (en) Multiple function unit processor using distributed variable length instruction words
TW201712534A (zh) 關於包括指令組的大小之指令組的資訊解碼
CN102855120B (zh) 超长指令字vliw的处理器和处理方法
US20060155957A1 (en) Encoding method for very long instruction word (VLIW) DSP processor and decoding method thereof
CN108345534B (zh) 生成和处理跟踪流的装置和方法
CN101361039A (zh) 处理器
JPH10214188A (ja) プロセッサの命令供給方法及び装置
CN112214242A (zh) 一种risc-v指令压缩方法、系统及计算机可读介质
US7865706B2 (en) Information processing method and instruction generating method
CN112947999B (zh) 一种精简指令集计算机指令功能扩展的方法及装置
JP3915019B2 (ja) Vliwプロセッサ、プログラム生成装置、および記録媒体
KR960016401B1 (ko) 레지스터 페이지 포인터를 이용한 레지스터 페이지간의 페이지 선택회로
CN117827284A (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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120926

Termination date: 20160615