具有实时动态可变指令集的计算机转让专利

申请号 : CN200680031849.9

文献号 : CN101253480B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 任珍赫

申请人 : 明达尔半导体有限公司

摘要 :

计算机在实时执行期间允许指令集的动态改变。该计算机包括CPU(中央处理单元),该CPU具有用于从存储器中取出指令的指令取出单元,用于生成与指令取出单元取出的指令相对应的预定控制代码的指令解码单元,和由控制代码操作的运算逻辑单元。指令解码单元包括:基本指令解码单元,其用于生成对应于基本指令集的控制代码;和动态指令解码单元,其用于生成与对应于基本指令集的指令的控制代码不同的另一个控制代码,或者生成对应于不存在于基本指令集中的指令的控制代码。存储在动态指令解码单元的指令或者相应的代码在实时执行期间可改变。

权利要求 :

1.一种包括CPU(中央处理单元)的计算机,其中所述CPU具有指令取出单元,其用于从存储器中取出指令;指令解码单元,用于生成与指令取出单元所取出的指令相对应的预定控制代码;和运算逻辑单元,其由控制代码操作,其中所述指令解码单元包括:

基本指令解码单元,其用于生成对应于基本指令集的控制代码;和

动态指令解码单元,其用于生成与对应于基本指令集的指令的控制代码不同的另一个控制代码,或者生成对应于不存在于基本指令集中的指令的控制代码,其中存储在动态指令解码单元中的指令或者相应的控制代码在实时执行期间可改变。

2.如权利要求1所述的计算机,其中动态指令解码单元由CAM(内容可寻址存储器)组成。

3.如权利要求2所述的计算机,其中组成所述动态指令解码单元的CAM包括:存储器装置阵列,其用于存储改变后的指令集;比较器,其用于将输入的指令代码与存储在所述存储器装置阵列中的所述改变后的指令集进行比较;和代码寄存器,其用于存储在比较结果匹配的情况下要被输出的控制代码。

4.如权利要求1至3中任意一项所述的计算机,其中从所述指令取出单元取出的指令代码和CPU中包括运算逻辑单元在内的每个模块的状态信息一起被输入至基本指令解码单元和动态指令解码单元。

5.如权利要求4所述的计算机,其中组成所述动态指令解码单元的CAM进一步包括选择寄存器,所述选择寄存器用于为了进行比较而选择输入指令代码和状态信息的特定位。

说明书 :

具有实时动态可变指令集的计算机

技术领域

[0001] 本发明涉及计算机的指令集,更具体地,本发明涉及具有允许以最佳存储器容量展示最佳指令执行能力的指令集的计算机的指令集结构。

背景技术

[0002] 一般地,计算机以如下方式执行给定程序,即CPU(中央处理单元)读取并且解码被翻译成机器语言并且被存储在主存储器中的一个或者多个指令,随后生成被提供给诸如运算逻辑单元之类的相应硬连线逻辑的相应控制代码以操作硬连线逻辑。
[0003] 在此,一个指令由是由OP代码和一个或者多个操作数组成的,并且根据操作数的数目指令被分成0-操作数指令、1-操作数指令、和2,3-操作数指令。Java处理器是采用0-操作数指令的示例,DSP(数字信号处理器)是采用1-操作数指令的示例,而大部分通用计算机采用2,3-操作数指令。
[0004] 同时,根据指令集的构建方式,大部分计算机可被分成具有简单且数量较少的指令集的RISC(精简指令集计算机)和具有尽可能直接地对应于高级编程语言的大量指令集的CISC(复杂指令集计算机)。由于指令集采用不同的方法来有效地处理特定任务(即,程序),所以根据指令集提出了各种计算机。也就是说,当计算机处理特定任务时,一般需要三种资源:存储器、CPU和用于该任务的时间,因此计算机有必要根据每个特定任务为优化资源利用而采取不同的方式。在此,指令集已经有了许多改变,从而已经开发出了具有不同规范的各种计算机。
[0005] 同样,用于解码指令并生成(多个)控制代码的方法被分成三种类型。第一种类型是微编码方法,通过这种方法,根据事先存储在CPU的ROM(只读存储器)中的内容,指令被翻译成一系列控制代码。在第二种类型中,通过用PLA(可编程逻辑阵列)代替ROM进行控制代码的翻译来生成并行控制代码,相对于微编码方法而言这样可以降低程序总的执行时间。此外,第三种类型就是通过软件的方式将指令翻译成控制代码,其中提供小型微处理器并且通过在该小型微处理器上运行的翻译软件将指令实时地进行翻译以生成控制代码。如果采用软件方式,那么增强了灵活性但是要比硬件方式需要更多的时间来进行翻译。
[0006] 然而,有时候,大部分计算机会处理不适合于被它们处理的指令集的任务,而不是仅仅处理适合于它们自己的指令集的任务(程序)。因此,提出了具有两种指令集并且利用用于各个指令集的两个解码器生成控制代码的多指令处理器,和用于通过软件或者转换器将未处理的指令集转换成处理过的指令集的指令并且随后生成控制代码的处理器(参见韩国专利NO.315739,韩国专利NO.327777,韩国特许公开专利公开NO.2001-53241,韩国专利NO.270947,等等)。然而,由于实际上要求两个指令解码器(ROM或PLA),这些方法会造成低效率和高成本。此外,在利用软件的情况下,用于解码指令的时间如上所述至少成倍地增加。此外,这些方法不能进行诸如改变仅仅一些要求的指令的含义(或者生成不同于原始控制代码的控制代码)或者限制执行之类的各种修改。
[0007] 同时,还提出了一种EISC(扩展指令集计算机),其利用扩展寄存器和扩展标志按要求增加了操作数的长度。然而,这种EISC仅仅相对于同一OP代码改变了操作数的长度,所以它不能被认为是指令集的真正改变。
[0008] 因此,仍然存在对被构建成能够以较低成本和较高速度在实时执行中校正或者改变指令集的计算机的需要,例如改变一些要求的指令的含义或者添加指令。

发明内容

[0009] 技术问题
[0010] 本发明被设计成符合以上要求,因此本发明的目的就是提供具有动态可变指令集的计算机,其能实时地改变指令集。
[0011] 技术方案
[0012] 为了实现以上目的,本发明提供了一种指令解码单元,其包括用于解码基本指令的基本指令解码单元,和用于解码在实时执行期间动态地改变的指令、并且生成对应于动态地改变的指令的(多个)控制代码的动态解码单元。
[0013] 也就是说,根据本发明的计算机包括CPU(中央处理单元),所述CPU具有用于从存储器中取出指令的指令取出单元,用于生成与指令取出单元所取出的指令相对应的预定控制代码的指令解码单元,和由所述控制代码操作的运算逻辑单元,并且所述指令解码单元包括:基本指令解码单元,其用于生成对应于基本指令集的控制代码;和动态指令解码单元,其用于生成与对应于所述基本指令集的指令的所述控制代码不同的另一个控制代码,或者生成对应于不存在于所述基本指令集中的指令的控制代码,其中存储在所述动态指令解码单元中的指令或者相应的代码在实时执行期间可改变。
[0014] 在此,由于动态指令解码单元在实时执行期间允许改变并且确保了高速操作,所以动态指令解码单元优选地是由CAM(内容可寻址存储器)组成的。
[0015] 更详细地,组成所述动态指令解码单元的CAM包括用于存储改变的指令集的存储器装置阵列,用于将输入的指令代码与存储在所述存储器装置阵列中的改变后的指令集进行比较的比较器,和用于存储在比较结果匹配的情况下要被输出的控制代码的代码寄存器。
[0016] 此外,优选地,从所述指令取出单元取出的指令和所述CPU中的每个模块(包括所述运算逻辑单元)的状态信息一起被输入至所述基本指令解码单元和所述动态指令解码单元。同样,组成所述动态指令解码单元的CAM进一步包括选择寄存器,所述选择寄存器用于为了进行比较而选择所述输入指令代码和所述状态信息的特定位。

附图说明

[0017] 本发明的其它目的和方面将通过参考附图对以下对实施例的描述变得明显,其中:
[0018] 图1是示意性地示出了根据本发明实施例的计算机的CPU中的指令解码单元的框图;
[0019] 图2是示出了图1所示的指令解码单元的动态指令解码单元的详细框图;和[0020] 图3是示出了图2所示的动态指令解码单元的每个CAM(内容可寻址存储器)的框图。

具体实施方式

[0021] 下文中将参考附图对本发明的优选实施例进行详细描述。在描述之前,应该理解的是,在说明书和所附权利要求中使用的术语不应该被解释为限制于一般意思和字典上的意思,而是应该在发明人被允许按最适合说明的方式定义术语的原则的基础上根据对应于本发明技术方面的意思和想法来解释。因此,在此提出的描述仅仅是用于说明的优选示例,而不是用于限制本发明的范围,所以应该理解的是,在不脱离本发明精神和范围的情况下可以做出其它等价物或者修改。
[0022] 图1是示出了根据本发明实施例的计算机的CPU中的指令解码单元的框图。
[0023] 参见图1,根据实施例的计算机的指令解码单元100包括基本指令解码单元10,动态指令解码单元20,和多路复用器30。基本指令解码单元10对包括在基本指令集中的指令进行解码并且随后将对应于它们的控制代码输出,并且它通常是由ROM或PLA组成。动态指令解码单元20对包括在根据本发明的动态指令集中的指令进行解码并且随后将对应于它们的控制代码输出,并且在本实施例中它是由CAM组成。此外,多路复用器30根据选择信号SELECT有选择地将作为各个指令解码单元10和20的指令解码结果输出的控制代码输出。
[0024] 同时,参见图1,就本实施例中布置了两个并行的指令解码单元而言,本实施例的指令解码单元看起来类似于具有两个指令集的传统计算机。但是,本实施例的动态指令解码单元20不是用于固定的一个指令集的解码单元,而是用于相对于基本指令集补充地添加的或者改变的指令的解码单元,所以具有本实施例的指令解码单元100的处理器完全不同于传统多指令集处理器。此外,由于它自己解码指令并且随后与基本指令解码单元10并行地输出控制代码,所以本实施例的动态指令解码单元20完全不同于用于将一个指令集转换成另一个指令集的转换器(不管它是硬件还是软件)。此外,在此,本实施例的动态指令解码单元20不同于用于暂时地存储传统EISC的扩展操作数和指示了操作数被扩展了的扩展标志的扩展寄存器。
[0025] 图2是示出了图1所示的动态指令解码单元20的详细框图。参见图2,本实施例的动态指令解码单元20包括N个并行的CAM单元211、212、…、21N,和选择器23。对于一个或者多个动态指令代码,每个CAM单元21i存储它的指令集和对应于它们的控制代码,并且在控制代码与要输入的指令对应的选择信号SELECT 1、SELECT 2、…、SELECT N匹配的情况下输出对应的控制代码。选择器是一种多路复用器,其根据从多个CAM单元21i输出的选择信号,有选择地将从存储了匹配的动态指令的CAM单元输出的控制代码输出。
[0026] 同时,基本指令解码单元10具有与通常具有一个指令解码单元的计算机中的指令解码单元相同的结构,所以在此不再详细描述。
[0027] 图3是示出了图2所示的每个CAM单元21i的框图。在此,例如,每个CAM单元21i被图解成存储一个指令代码和对应的控制代码。参见图3,除了它额外地具有存储了与CAM单元的每个指令对应的控制代码的代码寄存器21i9之外,组成本实施例的动态指令解码单元的CAM单元21i基本上具有与通用CAM相同的结构。
[0028] 具体地说,每个CAM单元21i包括存储器装置21i5,其用于存储动态地改变了的指令;自变量寄存器21i1,其用于暂时地存储输入指令代码和状态信息,这将在后面予以详细描述;选择寄存器21i3,其用于从输入指令代码和状态信息中提取要比较的部分;比较器21i7,其用于将输入指令代码和状态信息中被选择的部分与存储在存储器装置21i5中的动态地改变了的指令进行比较从而确定它们之间的一致性;和代码寄存器21i9,其用于存储对应于存储在存储器装置21i5中的动态地改变了的指令的控制代码。同时,比较器21i7的位元(bit-unit)结构,或者所谓的匹配逻辑(matching logic),和存储器装置21i5具有与通用CAM相同的结构,所以在此不对它们进行详细描述。
[0029] 现在将通过参考图1至3对根据本实施例如上所述构建的指令解码代码100的操作予以详细描述。
[0030] 首先,指令取出单元(未示出)在取出周期从主存储器(未示出)中读取一个或者多个指令代码,并且随后将指令代码输入至指令解码代码100。指令代码是由OP代码和0或者至少一个操作数组成。同时,指示包括运算逻辑单元(未示出)的CPU的每个模块的当前状态的状态信息这时被一起输入至指令解码代码100。获取的指令代码和状态信息一起被并行地输入至基本指令解码单元10和动态指令解码单元20。因此,不需要传统转换器执行的独立转换处理。
[0031] 于是,在指令解码周期,基本指令解码单元10和动态指令解码单元20并行地同时对指令代码和状态信息进行解码,随后输出对应的控制代码。具体地说,由ROM或PLA组成的基本指令解码单元10根据通用指令解码方法对指令进行解码,并且随后输出控制代码,所以在此对此不再详细描述。
[0032] 但是,在本发明中,在输入动态地改变的指令代码时,对应于代码的指令可能并不存在于基本指令解码单元10中,以及,虽然存在对应的指令,但是不同于初始控制代码的改变的控制代码应该是指令解码代码100的最终输出。因此,作为动态指令解码单元20的输出的改变的控制代码应该具有优先级。也就是说,在动态指令解码单元20利用输入指令代码和状态信息对指令进行解码并且随后发现存在对应的指令的情况下,动态指令解码单元20将启动的选择信号SELECT与对应的改变的控制代码一起输出。此外,多路复用器30将从动态指令解码单元20输出的控制代码,输出为与动态指令解码单元20的启动的选择信号SELECT相关的而与基本指令解码单元10的输出无关的指令解码单元100的输出。同时,如果不存在作为动态指令解码单元20的解码结果的匹配的指令代码和状态信息,动态指令解码单元20输出启动的选择信号而不输出控制代码,并且将从基本指令解码单元10输出的控制代码输出为指令解码单元100的输出。
[0033] 下面将详细描述动态指令解码单元20的指令解码处理。
[0034] 首先,输入至动态指令解码单元20的每个CAM单元21i的指令代码和状态信息被暂时地存储在自变量寄存器21i1中,并且要被比较的部分被选择寄存器21i3提取出来。也就是说,选择寄存器21i3是具有与自变量寄存器21i1相同尺寸的寄存器。在指令代码和状态信息中,选择寄存器21i3将用于比较的位设置为1,并且还将不用于比较的位(或者选择寄存器并不关心的位)设置为0,于是从指令代码和状态信息中提取出希望的部分。这时,如果指令本身是不存在于基本指令集的附加的指令,那么用于比较的部分可能是OP代码;在指令本身是相同的但是特定执行应该根据系统中的状态信息改变的情况下,用于比较的部分可能是诸如异常或中断信息之类的状态信息;或者是操作码或者操作数的一部分;或者状态信息的一部分。此外,有时候,它可能是整个指令代码和状态信息,并且这种情况实质上等同于选择寄存器21i3不存在的情况。
[0035] 同时,存储器装置21i5中已经存储了用于基本指令集的改变的指令代码和状态信息,并且比较器(或者匹配逻辑)21i7将其与选择寄存器21i3所选择的输入指令代码和状态信息进行比较。如果它们在比较中匹配,那么选择信号SELECT被输出,并且代码寄存器21i9中存储的控制代码被同时输出。
[0036] 根据以上处理,对应于就基本指令集而言改变的指令的控制代码被输出,并且CPU中的诸如运算逻辑单元(未示出)之类的每个模块根据控制指令被操作,从而改变了的指令被执行。
[0037] 现在对实时动态地改变指令进行说明。如上所述,存储器装置21i5中存储了改变的指令,并且对应的控制代码被存储在代码寄存器21i9中。这时,为了实时动态地改变指令集,需要在实时执行期间访问存储器装置21i5和代码寄存器21i9并且更新其内容。为此,允许将希望的数据输入至存储器装置21i5和代码寄存器21i9的特定指令被包括在基本指令集中,随后利用该特定指令在被解释(或编译)成机器语言的程序代码中作出必须的改变。在此,编译器(即软件)负责利用高级语言将程序翻译成机器语言并且还在其中插入要求的特定指令,这并不是本发明的主要部分所以在此不再详细描述。
[0038] 允许基本指令集改变的特定指令可由特定OP代码和内容将被改变的操作数组成。此外,基本指令解码单元10的ROM或者PLA存储了对应于该特定指令的控制代码。这个控制代码启动存储器装置21i5的写信号WRITE_MM,其在启动代码寄存器21i9的写信号WRITE_CR的同时将特定指令的操作数内容输入至存储器装置21i5的数据输入INPUT_MM,并且将希望的(或者改变的)控制代码输入至代码寄存器21i9的数据输入INPUT_CR。因此,利用作为基本指令的特定指令来实时动态地改变指令集是可能的。
[0039] 同时,选择寄存器21i3的内容,即用于提取要在输入指令代码和状态信息之间进行比较的部分的选择码,可同样以类似于存储器装置21i5和代码寄存器21i9的方式被动态地改变。也就是说,选择寄存器21i3的内容可以在实时执行期间通过启动选择寄存器21i3的写信号WRITE_MR并且将希望的选择码输入至数据输入INPUT_MR来动态地改变。
[0040] 如上所述,根据本发明的实施例,可以通过在实时执行期间动态地改变指令集来优化程序代码的大小和执行时间。但是本发明并不限于以上实施例,相反,在本发明的原理和精神范围内可以做出各种变型。
[0041] 例如,先前的实施例的选择器23的多路复用器30可被简单的OR门代替;并且选择寄存器21i3可被排除,于是指令代码和状态信息被整个地与存储在存储器装置21i5的内容进行比较。此外,在先前的实施例中,动态指令解码单元20被说明和解释成包括N个并行的CAM单元211、212、…、21N,但是它同样可以仅仅包括一个CAM单元。
[0042] 因此,本发明要求保护的权利应该被解释成包括在所附权利要求的等效范围内作出的改变和变型。
[0043] 工业实用性
[0044] 根据上面描述的本发明,可以通过实时动态地改变指令集同时优化程序代码的大小和执行时间。也就是说,由于基本指令集的一部分在实时执行过程中被动态地执行,所以可以根据要完成的任务(或程序)的性质以比具有两个指令集的处理器或者指令集之间的转换器更低的成本来优化程序代码的大小和执行时间。此外,由于一个指令代码可被动态地完全改变,所以本发明具有比仅仅扩展了操作数长度的EISC更加多样和灵活的改变。
[0045] 此外,根据本发明,可以在工作现场立刻增加要求的功能,所以本发明可以有效地用于校正错误和改进功能。