CN1959630A - 微处理器 - Google Patents
微处理器 Download PDFInfo
- Publication number
- CN1959630A CN1959630A CNA2006101528585A CN200610152858A CN1959630A CN 1959630 A CN1959630 A CN 1959630A CN A2006101528585 A CNA2006101528585 A CN A2006101528585A CN 200610152858 A CN200610152858 A CN 200610152858A CN 1959630 A CN1959630 A CN 1959630A
- Authority
- CN
- China
- Prior art keywords
- instruction
- data
- register
- length
- data length
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
- G06F9/30152—Determining start or end of instruction; determining instruction length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
Abstract
本发明公开了一种解释指令的微处理器,其中同一指令代码可解释为分别具有不同数据长度的独立指令,在解码单元中提供有存储数据长度选择-使用信息的数据长度存储电路。将指示向通用寄存器中存储的指令,如向寄存器R1存储8位数值的指令,提前设置为第一类型指令。将没有明确地指定数据长度的指令,即处理目标为存储在所述通用寄存器中的各种长度的数据的指令,提前设置为第二类型指令。当解码第一类型指令时,所述解码单元按照该第一类型指令而更新数据长度选择-使用信息。当解码第二类型指令时,所述解码单元通过参照该数据长度选择-使用信息而指定该数据长度并基于该指定的数据长度而解码该第二类型指令。
Description
技术领域
本发明涉及一种微处理器,更具体地涉及一种指令解释方法。
技术描述
传统的微处理器通常具有可解释指令集,其包括分别对应于多个字长的指令代码。
字长为指令的处理目标数据的长度,并根据每个指令代码进行设置。
以用来将两个不同寄存器的各自数据相加并将该结果存储至某一寄存器的专门处理为例,根据该数据是否处理为1字节数据、2字节数据或4字节数据而使用不同的指令代码。
然而,当使用表示具有有限数量位的指令的固定长度指令格式时,无论处理内容在一定程度上是否相同,人们不期望必须对于处理目标数据的各种长度提供多条指令(即具有分别不同的位序列的指令)。这是因为对于处理目标数据的不同长度提供多个指令代码会防止各种指令包括在指令集中,也就是各种类型的指令包括在指令集中。
在公开号为2004-206214的日本专利申请中公开了一种关于解决该问题的技术。使用该技术,提前设置指令存取的数据存储器中数据长度和地址范围之间的关系。当微处理器解释(解码)指令时,即使对于相同的指令代码,其基于地址转换数据长度从而在数据存储器中进行存取。
由于相同的指令代码可解释为独立的指令,各指令分别指向不同的数据长度,因此利用前文所述的微处理器,不需要提供用于识别指令代码中数据长度的位域。
发明内容
本发明的目的在于以不同于公开号为2004-206214的日本专利申请中公开的技术而提供一种微处理器,其能够将相同的指令代码解释为独立的指令,各指令分别指向不同的数据长度。
为了实现所述目的,本发明的微处理器连续读取指令并解释和执行每个读取的指令,其包括:存储单元,用于存储表示处理目标数据长度的数据长度选择-使用信息;解码单元,用于相对指令连续地执行指令解释处理从而根据所述指令而对每个指令指定将要执行的指令执行处理的内容;以及执行单元,用于相对每个指令根据作为用于指令的指令执行处理的结果的所述内容而进行指令执行处理,其中当指令解释处理的目标为第一类型指令的任意之一时,解码单元根据该第一类型指令更新存储的数据长度选择-使用信息,当指令解释处理的目标为第二类型指令的任意之一时,解码单元根据存储的数据长度选择-使用信息而选择第二类型指令的处理目标数据的长度,并根据该所选择的长度执行指令解释处理。
此处,作为实例,存储单元为存储数据长度选择-使用信息的存储电路,也就是说,该存储电路为数据长度存储电路。解码单元为例如:指令解码器、第一类型指令对应电路和第二类型指令对应电路。此处,指令解码器执行解码所需的各种控制。如果为解码目标的指令代码为第一类型指令,则第一类型指令对应电路具有根据第一类型指令更新数据长度存储电路的内容的功能。如果为解码目标的指令代码为第二类型指令,则第二类型指令对应电路具有参照数据长度存储电路的内容而指定该数据长度为对应于第二类型指令的指令代码的处理目标,并将该数据长度传给指令解码器。而且,例如作为电路的接口单元的执行单元包括(i)算术运算单元,其为用于参照存储在通用寄存器中的数据或存储在数据存储器中的数据进行诸如加法和乘法的不同类型计算的电路,以及(ii)总线,并具有在通用寄存器、算术运算单元、数据存储器等之间控制数据传输的功能。
利用所述结构,当解码为第二类型指令的指令时,根据当先前第一类型指令被解码时更新的数据长度选择-使用信息,本发明的微处理器指定第二类型指令的指令代码处理目标的数据长度,并基于该指定的数据长度而执行第二类型指令的解码。这使将相同的指令代码解释为多个指令即用于处理的分别不同长度的目标数据成为可能,并消除了提供用来明显地识别第二类型指令的指令代码中数据长度的位字段的需要。当使用固定的位长度格式时,该结构位包括在指令集中的多个指令提供了更多空间。
注意第一类型指令可包括具有用于识别指令代码中数据长度的位字段的指令。该指令的例子包括用于将一字节(8位)的数据从存储器传送到寄存器的指令,以及用于将两字节(16位)的数据从存储器传送到寄存器中的指令。
另外,本发明的微处理器不是在指令执行阶段,而是在执行指令解释处理时执行更新和参照数据长度选择-使用信息。因此,即使采用其中每个指令读取(获取)、指令解释(解码)和执行为独立流水线信息的流水线结构,当第一类型指令后直接接着第二类型指令时,根据第一类型指令更新的数据长度选择-使用信息可用在第二类型指令的解码阶段中。
此处,第一类型指令可包括数据存储指令,其指示将第一长度的数据存储给存储器,以及数据存储指令,其指示将第二长度的数据存储给寄存器,并且当指令解释处理的目标为数据存储指令之一时,解码单元可更新存储的长度选择-使用信息从而表示属于作为目标的数据存储指令之一的第一长度和第二长度之一。
使用所述结构,当解码不同类型的指令用于将数据存储到寄存器时,例如用于读取存储在具体位置的特定数量字节中的数据并将该读取的数据存储到寄存器的指令,数据长度选择-使用信息的存储内容基于解码指令,更具体地基于根据解码指令在寄存器中设置的数据长度而与解码并行确定并更新。也就是说,除了作为指令用于将一般数据存储到寄存器外,第一类型指令还具有更新数据长度选择-使用信息的功能。因此,根据由微处理器解释和执行的程序,消除了对包含其主要目的是更新数据长度选择-使用信息的存储内容的具体指令或其它的需要。
另外,当本地观察时,构造一般程序从而直接或稍微在将数据存储到寄存器中的指令后,执行其用于运算、传送或其它的处理目标为存储在寄存器中的数据的指令。因此,如果对于运算目标数据的数据长度为可选择的指令适当地提前设置为第二类型指令,这基本上可使第二类型指令的数据长度正确地选择。也就是说,这消除了对由微处理器支持的指令集中作为运算目标的各数据长度的独立指令的需要。
注意作为例外,在以数据长度未正确地选择的方式构成的程序情况下,诸如程序中存在将要处理的数据长度复杂混合的情况,这可通过例如提供特定的指令用于更新数据长度选择-使用信息的存储内容而进行处理。这样,通过使由微处理器支持的指令集中第二类型指令的数量大于该指令集中特定指令的数量,可减少用于更新数据长度选择-使用信息的存储内容所需的指令。当使用固定的位长度格式时,这给将包括在指令集中的多个指令留下更多空间。
此处,第一类型指令可包括(i)指示在寄存器中设置n位数值的指令,(ii)指示在寄存器中设置2n位数值的指令,(iii)指示将n位数值从存储器传送到寄存器的指令,以及(iv)指示将2n位数据从存储器传送到寄存器的指令,并且当指令解释处理的目标为指示在寄存器中设置n位数值的指令时,解码单元可更新存储的数据长度选择-使用信息以表示n位,当指令解释处理的目标为指示在寄存器中设置2n位数值的指令时,解码单元可更新存储的数据长度选择-使用信息以表示2n位,当指令解释处理的目标为指示将n位数据从存储器传送到寄存器的指令时,解码单元可更新存储的数据长度选择-使用信息以表示n位,并且当指令解释处理的目标为指示将2n位数据从存储器传送到寄存器的指令时,解码单元可更新存储的数据长度选择-使用信息以表示2n位。
以具体的指令为例,程序中先前的指令为用于设置由寄存器中操作数设定的中间数值,或用于将数据从存储器传送到寄存器,并且用于运算、传送或其它的处理目标假定为在寄存器中一长度的数据,该长度于由先前指令设置的大小相同。用所述结构,诸如所述的具体指令的指令可设置为第二类型指令,其没有明显地设置处理数据的长度。这消除了对由微处理器支持的指令集中各运算目标数据长度提供独立指令的需要。
此处,至少一个指令可为乘法指令,其包括在第一类型指令和第二类型指令中,并且当指令解释处理的目标为乘法指令时,解码单元可根据存储的数据长度选择-使用信息而选择乘法指令中的处理目标数据的长度从而根据所选的长度执行指令解释处理并更新存储数据长度选择-使用信息以表示预定数值。
由于微处理器已经被解码,假定数据长度选择-使用信息表示为一字节的数据长度为例,例如,用于将一字节数据存储到寄存器的指令。假定微处理器解码乘法指令,该指令指示一特定寄存器的内容与另一寄存器的内容相乘。此处,输入到每个寄存器中的数据被认为具有一字节的长度,但是两个一字节数据的乘积结果表示为两个字节。所述微处理器能够处理这种情况,使能将要处理两个字节长度数据的第二类型指令,该第二类型指令在乘法指令之后并且其处理目标为乘法指令的乘积结果。
此处,数据长度选择-使用信息可选择性地表示多个长度中的一个,并且每次解码单元执行用于第一类型指令中任意之一的指令解释处理时,该解码单元可更新数据长度选择-使用信息从而以多个长度的预定循环表示多个长度中的下一个。
每次在微处理器解码作为第一类型指令、NOP指令时,该结构例如能够使由数据长度选择-使用信息所表示的数据长度以诸如1字节、2字节、4字节、1字节、2字节、4字节、1字节的形式循环转换,其中NOP指令为表示没有具体指令将要执行的传统NOP指令。因此,数据长度选择-使用信息可通过例如在程序中的必要位置插入必要数量的NOP指令而进行更新以表示不定长度。这消除了对提供多条指令用于设置数据长度选择-使用信息以表示指令集中的具体数值的需要。注意第一类型指令为传统的NOP指令为不必需的。
此处,微处理器还可包括多个寄存器,其能根据指令指定为处理目标数据的存储位置,其中存储单元存储多段分别对应于多个寄存器的数据长度选择-使用信息,第一类型指令为指示将某一长度的数据存储到某一寄存器中的指令,第二类型指令为相对存储在某一寄存器中,并具有某一长度的处理目标数据的数据而指示进行运算处理的指令,并且当指令解释处理的目标为第一类型指令时,解码单元更新对应于寄存器的数据长度选择-使用信息,其中由第一类型指令指示将数据存储到该寄存器,并且当指令解释处理的目标为第二类型指令时,解码单元根据数据长度选择-使用信息,其对应于由第二类型指令指定的用来存储处理目标数据的寄存器,选择第二类型指令的处理目标数据的长度,并指定用于第二类型指令的指令执行处理内容从而相对所选的处理目标数据的长度数值而进行运算处理。
根据所述结构,数据长度存储在微处理器的每个寄存器中,该寄存器用于存储作为运算、转换等处理目标的数据。这些数据长度由第一类型指令更新,并当第二类型指令解码时接着被参照。因此,当执行的程序为诸如操作不同长度的数据的程序时,该结构是有效的。作为实例,假定以下的指令在程序中以所述的顺序设置:用于在第一寄存器中存储一字节的中间数值数据的指令(一字节数值存储指令),用于在第二寄存器中存储两个字节的中间数值数据的指令(两字节数值存储指令),指向第一寄存器的内容用于诸如运算处理的指令,指向第二寄存器的内容用于诸如运算的处理指令。不管是否没有明显地指定数据长度,但这些四个指令中的后两个指令被解码为指向第一寄存器的内容用于处理作为一字节数值的指令以及指向第二寄存器的内容用于处理作为两个字节数值的指令。
此处,微处理器还可包括多个寄存器,其能根据指令指定为处理目标数据的存储位置,其中存储单元还存储分别对应于多个寄存器的多段有效信息,每段有效信息表明是否将数据长度选择-使用信息在指令解释处理中确定为有效或无效,第一类型指令为指示将某一长度的数据存储到某一寄存器中的指令,第二类型指令为参照如存储在某一寄存器中并具有某一长度的处理目标数据的数据而指示进行运算处理的指令,并且当指令解释处理的目标为第一类型指令时,除了依照第一类型指令更新数据长度选择-使用信息外,为了表示有效,解码单元更新对应于寄存器的有效信息,该寄存器中存储的数据由第一类型指令指示,当指令解释处理的目标为第三类型指令时,为了表示无效,根据该第三指令,解码单元更新对应于某一寄存器的有效信息,并且当指令解释处理的目标为第二类型指令时,(a)(i)如果对应于由第二类型指令指定的寄存器的有效信息作为存储处理目标数据表示有效时,解码单元根据数据长度选择-使用信息而选择处理目标数据的长度,(ii)如果对应于由第二类型指令指定的寄存器的有效信息作为存储处理目标数据表示无效时,解码单元选择预定的长度作为处理目标数据的长度,以及(b)解码单元为第二类型指令指定指令执行处理的内容从而相对所选的处理目标数据的长度数值而进行运算处理。
当微处理器执行程序时,例如操作一字节数据作为处理目标时,数据长度选择-使用信息基本上表示数据长度为一字节。然而,假定该程序包括不仅一部分用于在通用寄存器之一中存储一字节的数据,而且包括一部分用于在该通用寄存器中存储例如4字节存储器地址数值。如果将诸如对于利用通用寄存器存储存储器地址的指令设置为第三类型指令,则微处理器能解码从而参照由第三类型指令指定的通用寄存器,而不需参照数据长度选择-使用信息设置数据长度。因此,微处理器也适合用于程序的执行,该程序利用交替用于存储预定数据长度和存储存储器地址的特定寄存器。
附图说明
通过结合说明本发明具体实施方式的附图的以下说明,将使本发明的这些和其它目的、优点及特征变得更加明显。
在附图中:
图1所示为本发明第一实施方式的微处理器100的结构图;
图2所示为数据长度存储电路119的存储内容;
图3所示为由微处理器100可解码指令的指令格式;
图4所示为第一类型指令的实例,其为对应电路112的第一类型指令的处理目标;
图5所示为第二类型指令的实例,其为对应电路113的第二类型指令的处理目标;
图6所示为描述微处理器100的操作流程图;
图7所示为描述由解码单元110执行的指令解释处理流程图;
图8所示为由微处理器100解释的程序实例;
图9所示为基于指令解码在数据长度选择-使用信息中的转变;
图10所示为本发明第二实施方式的微处理器200的结构图;
图11所示为数据长度存储电路219的存储内容;以及
图12所示为描述由变型微处理器的解码单元执行的指令解释处理流程图。
具体实施方式
1.第一实施方式
以下描述本发明第一实施方式的微处理器100。
1-1.结构
图1所示为本发明第一实施方式的微处理器100的结构图。
微处理器100为集成电路,其获取、解码并执行属于具有固定长度指令格式的指令集的指令代码。如图1所示,微处理器100由解码单元110、通用寄存器120、算术运算单元130、指令存储器140、数据存储器150和接口单元160组成。
通用寄存器120为用于临时存储数据的数据存储电路,该数据为计算、转换等的处理目标或处理结果。更具体地,通用寄存器120为8个寄存器的集合(寄存器R0到寄存器R7),其中各寄存器能够存储32位数据。
算术运算单元130为实现多种运算的电路,诸如用存储在通用寄存器120中的数据或存储在数据存储器150中的数据作为处理目标的加法和乘法。
指令存储器140为用于存储指令流的存储器,该指令流组成执行目标的程序。
数据存储器150为可擦写存储器,当执行指令时数据可从该数据存储器150进行读出或者写入。
包括总线的接口单元160为具有控制数据在数据存储器150和通用寄存器120之间以及在数据存储器150和算术运算单元130之间传送的功能的电路,该接口单元160还具有控制指令代码从指令存储器140传送到解码单元110的功能。
解码单元110具有基于连续从指令存储器140中读取的各指令代码确定如何控制算术运算单元130和接口单元160以参照指令代码进行操作的功能,并将控制信号传输给接口单元160以实现控制。也就是说,解码单元110为具有解码指令功能的电路。如图1所示,解码单元110具有指令解码器111、第一类型指令对应电路112、第二类型指令对应电路113和数据长度存储电路119。
指令解码器111为执行解码指令所需的各种控制的电路。
数据长度存储电路119为存储电路,其存储数据长度选择-使用信息,该信息表示作为计算、数据传送或其它的处理目标的数据长度。
第一类型指令对应电路112为具有当作为解码目标的指令代码为第一类型指令时按照该第一类型指令的内容更新数据长度存储电路119内容的功能的电路。注意以下将给出第一类型指令的详细描述。
第二类型指令对应电路113为具有当作为解码目标的指令代码为第二类型指令时参照数据长度存储电路119的内容而指定数据长度,该数据长度为对应于第二类型指令的指令代码的处理目标,并将该指定的数据长度传送到指令解码器111从而使指令解码器111按照所述数据长度进行解码。注意以下将给出第二类型指令的详细描述。
1-2.数据
以下描述用在微处理器100中使用的数据长度选择-使用信息和各种指令。
1-2-1.数据长度选择-使用信息
图2所示为数据长度存储电路119的存储内容。
如图2所示,数据长度存储电路119存储数据长度选择-使用信息,其每个信息为两位并对应于不同的通用寄存器120其中之一。具体地,数据长度存储电路119存储有总共16位信息,其由对应于寄存器R0的数据长度选择-使用信息到对应于寄存器R7的数据长度选择-使用信息组成。
两位长度选择-使用信息中的数值含义如下:两位长度的00b(“b”表示二进制表示)表示8位的数据长度(1字节),01b表示16位的数据长度(2字节),而10b表示32位的数据长度(4字节)。
1-2-2.指令格式
图3所示为由微处理器100可解码指令的指令格式。
如图3所示,指令由用于识别指令代码的16位操作码字段10和根据指令代码设置为从0位到32位预定大小的操作数据字段20组成。
操作码字段10由8位主字段11(主)、2为子字段12(子)、3位源寄存器字段12(源)和3位目标寄存器字段14(目标)组成。主字段11用于识别基本指令类型,子字段12用于识别详细指令类型或数据长度,而源寄存器字段13和目标寄存器字段14分别将通用寄存器120之一指定为处理目标。
1-2-3第一类型指令
图4所示为作为第一类型指令对应电路112的处理目标的第一类型指令实施例。
以下采用助记码描述图4所示的各第一类型指令的含义以及该第一类型指令对应电路112如何响应于各指令而更新数据长度选择-使用信息。
(a)move指令“mov(d32),Rn”为指示在数据存储器150中将位于32位(4字节)操作数据字段中指定的存储器地址所表示的位置处的8位数据传输给由目标寄存器字段表示的寄存器R0到R7其中之一的指令。当该mov指令是解码目标时,第一类型指令对应电路112将对应于在mov指令的目标寄存器字段中指定的通用寄存器的数据长度选择-使用信息更新为表示8位的值(00b)。
(b)move指令“mov(d32):16,Rn”为指示在数据存储器150中将位于32位操作数据字段中指定的存储器地址所表示的位置处的16位数据传输给目标寄存器字段所表示的寄存器R0到R7其中之一的指令。当该mov指令是解码目标时,第一类型指令对应电路112将对应于在mov指令的目标寄存器字段中指定的通用寄存器的数据长度选择-使用信息更新为表示16位的值(01b)。根据操作字段的内容,该mov指令和上述mov指令“mov(d32),Rn”之间的区别仅在于用于识别数据长度的子字段(sub)内容。
(c)move指令“mov imm8,Rn”为指示将8位操作数据字段表示的中间值存储到目标寄存器字段所表示的寄存器R0到R7其中之一的指令。当该mov指令是解码目标时,第一类型指令对应电路112将对应于在mov指令的目标寄存器字段中的通用寄存器的数据长度选择-使用信息更新为表示8位的值(00b)。
(d)move指令“mov imm16,Rn”为指示将16位操作数据字段表示的中间值存储到目标寄存器段所表示的寄存器R0到R7其中之一的指令。当该mov指令是解码目标时,第一类型指令对应电路112将对应于在mov指令的目标寄存器字段中指定的通用寄存器的数据长度选择-使用信息更新为表示16位的值(01b)。根据操作字段的内容,该mov指令和上述mov指令“mov imm8,Rn”之间的区别仅在于用于识别数据长度的子字段(sub)内容。
(e)ext指令“ext Rn”为指示将目标寄存器字段所表示的寄存器R0到R7其中之一的内容从8位扩展到16位的指令。当该ext指令是解码目标时,第一类型指令对应电路112将对应于位于ext指令的目标寄存器字段中指定的通用寄存器的数据长度选择-是用信息更新为表示16位的值(01b)。
(f)move指令“mov Rn,Rm”为指示将源寄存器字段所表示的寄存器R0到R7其中之一的内容传输给目标寄存器字段所表示的寄存器R0到R7其中之一的指令。当该mov指令是解码目标时,第一类型指令对应电路112更新对应于位于mov指令的目标寄存器字段中指定的通用寄存器的数据长度选择-使用信息的内容,使得他们与对应于位于mov指令的源寄存器字段中指定的通用寄存器的数据长度选择-使用信息内容相同。
(g)mul指令“mul Rn,Rm”为指示源寄存器字段所表示的寄存器R0到R7其中之一的内容与目标寄存器字段所表示的寄存器R0到R7其中之一的内容进行乘积运算的指令,并在mul指令的目标寄存器字段所表示的通用寄存器中存储作为该乘积运算结果的积。当该mul指令是解码目标时,第一类型指令对应电路112更新对应于位于mul指令的目标寄存器字段中指定的通用寄存器的数据长度选择-使用信息的内容,从而显示一数据长度,该数据长度是对应于在mul指令的目标寄存器字段中指定的通用寄存器的数据长度选择-使用信息的内容所表示的数据长度的两倍。
由于第一类型指令是具有指定通用寄存器中存储的数据长度的功能的指令,诸如在通用寄存器中存储具体长度的中间数据的指令和将具体长度的数据从数据存储器传输给通用寄存器的指令,该第一类型指令包括除了图4所示的指令以外的其他指令。该第一类型指令对应电路112相对于各所述第一类型指令根据预定算法更新数据长度选择-使用信息。
1-2-4第二类型指令
图5所示为通过第二类型指令对应电路113处理的第二类型指令代码。
以下采用助记码描述图5所示的各第二类型指令的含义,以及该第二类型指令对应电路113如何响应于各个指令而确定数据长度选择-使用信息。
(a)move指令“mov Rn,(d32,Rm)”为指示将存储在源寄存器字段所表示的寄存器R0到R7其中之一中存储的未指定长度数据传输给数据存储器150中存储器地址所示的位置,该地址为(i)位于32位(4字节)操作数据字段中指定的存储器地址值和(ii)存储在目标寄存器字段所表示的寄存器R0到R7其中之一中的值的和。当该mov指令是解码目标时,第二类型指令对应电路113参照对应于在mov指令的目标寄存器字段中指定的通用寄存器的数据长度选择-使用信息,并通过选择该数据长度选择-使用信息所表示的数据长度,指定该未指定的数据长度。注意将通过第二类型指令对应电路113指定的数据长度转移给指令解码器111,并且该指令解码器111基于作为传输数据长度的指令执行目标而执行与指令执行相关的控制。
(b)move指令“mov Rn,Rm”为除如前所述的第一类型指令以外的第二类型指令。当该mov指令是解码目标时,第二类型指令对应电路113通过选择对应于由mov指令中的源寄存器字段指定的通用寄存器的数据长度选择-使用信息所表示的数据长度而指定存储在mov指令指定的通用寄存器中的数据长度。
(c)add指令“add Rn,Rm”为指示对源寄存器字段所表示的寄存器R0到R7其中之一的内容和目标寄存器字段所表示的寄存器R0到R7其中之一的内容进行求和运算的指令,并在add指令的目标寄存器字段所表示的通用寄存器中存储作为求和运算结果的和。当该add指令是解码目标时,第二类型指令对应电路113通过选择对应于由add指令中的源寄存器字段指定的通用寄存器的数据长度选择-使用信息所表示的数据长度而指定由add指令指定的通用寄存器中存储的数据长度。
(d)sub指令“sub Rn,Rm”是指示从源寄存器字段所表示的寄存器R0到R7其中之一的内容中减去目标寄存器字段所表示的寄存器R0到R7其中之一的内容的指令,并将作为减法运算结果的差值存储到sub指令的目标寄存器字段所表示的通用寄存器中。当该sub指令是解码目标时,第二类型指令对应电路113通过选择对应于由sub指令中的源寄存器字段指定的通用寄存器的数据长度选择-使用信息所表示的数据长度,指定存储在由sub指令指定的通用寄存器中的数据的长度。
根据操作码字段的内容,该sub指令仅在用于识别详细指令类型的子字段(sub)内容方面与上面提到的add指令存在区别。在本实施例中,由于add指令和sub指令不指定数据长度,并且不必采用子字段(sub)识别数据长度,该子字段(sub)用于识别详细的指令类型。这表明通过这种方法,在指令集中可以包括大量指令。
(e)mul指令“mul Rn,Rm”为除如前所述的第一类型指令以外的第二类型指令。当该mul指令是解码目标时,第二类型指令对应电路113通过选择对应于由mul指令中的源寄存器指定的通用寄存器的数据长度选择-使用信息所表示的数据长度指定存储在由mul指令指定的通用寄存器中的数据长度。注意在解码mul指令时,指令解码器111基于乘法运算结果的数据长度是通过第二类型指令对应电路113指定的长度两倍的假设而执行与指令执行相关的控制。
第二类型指令为其本身不指定作为处理目标的数据长度的指令。除图5所示的实施例以外还存在其他第二类型指令,并且该第二类型指令对应电路113根据关于各所述第二类型指令的预定算法而确定数据长度选择-使用信息。
1-3操作
以下描述通过具有所述结构的微处理器100所进行的操作。
图6所示为通过微处理器100进行操作的流程图。
如图6所示,微处理器100执行如下步骤:用于从指令存储器140中读取指令并通过解码单元110获取该读取的指令的指令读取处理(步骤S1),通过解码单元110进行的指令解释处理(步骤S2),对于算术运算单元130和接口单元160进行指令执行的指令执行处理(步骤S3)。在由于诸如提供时钟停止导致停止指令以前,微处理器100重复执行所述步骤S1到S3。
图7所示为通过解码单元110执行的指令解释处理的流程图。
解码单元110执行控制以使从指令存储器140读取的指令通过指令解码器111解码,从而为执行指令做好准备(步骤S11)。如果指令为第二类型指令(步骤S12),该解码单元110使第二类型对应电路113开始工作。注意在步骤S11阶段的解码过程中,并没有对于未指定数据长度的指令执行与数据长度相关的控制。
第二类型指令对应电路113参照对应于在指令中指定的具体通用寄存器的数据长度选择-使用信息(步骤S13),以前面所述的方式指定数据长度(步骤S14),并将该数据长度传输给指令解码器111。如果所传输的数据长度为8位,该指令解码器111将该指令视为处理目标为8位数据的指令进一步解码该指令(步骤S15)。如果所传输的数据长度为16位,该指令解码器111将该指令视为处理目标为16位数据的指令进一步解码该指令(步骤S16)。如果所传输的数据长度为32位,该指令解码器111进一步将该指令视为处理目标为32位数据的指令进一步解码该指令(步骤S17)。
接下来,如果指令为第一类型指令(步骤S18),该指令解码器111使第一类型对应电路112开始工作。并且第一类型对应电路112以前面所述的方式更新对应于通过该指令所指定的具体通用寄存器的数据长度选择-使用信息(步骤S19)。
注意如果从指令存储器140读取的指令不是第二类型指令,则解码单元111不执行步骤S13到S17,并且如果该读取的指令不是第一类型指令,则解码单元不执行步骤S19。
以下参照图8和图9描述通过解码单元110用于指定数据长度的操作,其中所述数据为没有指定数据长度的指令的处理目标。
图8所示为通过微处理器100解释的程序。
图9所示为基于指令解码的数据长度选择-使用信息的转换图。图9示出了在t1、t2、t3等时刻对应于通用寄存器的数据长度选择-使用信息,其中t1、t2、t3等时刻为图8的解码指令1、指令2、指令3等完成以后直接对应的时刻点。
(a)首先,当解码单元110解码指令1时,由于指令1是指示将8位中间值aah(“h”表示十六进制数据)存储到寄存器R0中的指令,通过第一类型指令对应电路112将对应于寄存器R0的数据长度选择-使用信息更新为00b(“b”表示二进制数据),从而显示8位数据长度(见图9的时刻t1)。
(b)然后,解码单元110解码指令2,该指令2指示将数据长度未指定的寄存器R0的内容传输给寄存器R2。这里,由于对应于寄存器R0的数据长度选择-使用信息显示为8位,因此通过第二类型对应电路113将数据长度指定为8位,并且将指令2解码为将寄存器R0中的8位数据传输给寄存器R2的指令。而且,拷贝对应于寄存器R0的数据长度选择-使用信息的内容作为对应于寄存器R2的数据长度选择-使用信息的内容。因此,对应于寄存器R2的数据长度选择-使用信息变为00b(见图9中的t2)。
(c)接下来,解码单元110解码指令3,该指令3用于指示寄存器R0中未指定数据长度的内容与R2中的内容进行乘积运算,并将乘积运算的积存储到寄存器R2中。这里,由于对应于寄存器R0的数据长度选择-使用信息表示为8位,因此该第二类型指令对应电路113将数据长度指定为8位,并将指令3解码为对于寄存器R0和寄存器R2中的8位数据执行乘积运算作为计算目标的指令。而且,将对应于寄存器R2的数据长度选择-使用信息更新位表示16位的值01b,其为8位的两倍(见图9中的t3)。
(d)当解码单元110已经对指示将寄存器R2的未指定数据长度内容传输给数据存储器150的指令4进行解码的时候,解码单元110解码指令5。指令5指示将来自数据存储器150的16位数据传输给R1。这里,通过第一类型指令对应电路112将对应于寄存器R1的数据长度选择-使用信息更新为表示16位的值01b(见图9的t5)。
(e)随后,解码单元110解码指令6,其中该指令6为与寄存器R0相关的ext指令。这里,通过第一类型指令对应电路112将对应于寄存器R0的数据长度选择-使用信息更新为表示16位的值01b(见图9的t6)。
(f)然后,解码单元110解码指示对寄存器R0的未指定数据长度内容与寄存器R1的内容加和的指令7。这里,基于由01b所表示的16位数据长度执行该加和运算,其中第二类型指令对应电路113通过参照对应于寄存器R0的数据长度选择-使用信息而确定所述16位数据长度。
连续通过解码单元110解码指令8以及随后指令。
2.第二实施方式
以下描述本发明第二实施方式的微处理器200。
2-1概述
第二实施方式的微处理器200为经过部分变型的第一实施方式中的微处理器100。如上所述,第一实施方式中的微处理器100存储数据长度选择-使用信息,该处理器100的其中多段对应于数据长度存储电路119中的多个通用寄存器并用于指定与具有未指定数据长度的指令相关的数据长度。与此相对,第二实施方式中的微处理器200仅在数据长度存储电路219中与有效信息一起存储单独段数据长度选择-使用信息。有效信息的段分别对应于多个通用寄存器120,并且每段显示参照数据长度选择-使用信息是否有效。微处理器200结合一段数据长度选择-使用信息和多段有效信息而指定与没有指定数据长度的指令相关的数据长度。
由于第二实施方式的微处理器200没有用于各通用寄存器的各个数据长度选择-使用信息,因此其尤其适用于执行诸如整个程序或者大部分程序基本仅处理8位或者16位数据的程序。
2-2结构
图10为本发明第二实施方式微处理器200的结构示图。
微处理器200与微处理器100的不同之处在于已经对解码单元110进行了变型。如图10所示,微处理器200具有解码单元210、通用寄存器120、算术运算单元130、指令存储器140、数据存储器150和接口单元160。注意这里省略了对在第一实施方式中描述过的元件进行说明。
解码单元210具有基于连续从指令存储器140读取的指令代码而确定根据该指令代码使算术运算单元130和接口单元160开始工作的控制内容,并且向接口单元160发送控制信号以执行控制的功能。换句话说,解码单元110是具有解码指令功能的电路。如图10所示,解码单元210具有指令解码器211、第一类型指令对应电路212、第二类型指令对应电路213、第三类型指令对应电路214和数据长度存储电路219。
指令解码器211为执行解码所需各种控制的电路。
数据长度存储电路219是用来存储单段数据长度选择-使用信息和多段有效信息的存储电路。该单段数据长度选择-使用信息表示作为计算、数据传输等处理目标的数据长度。多段有效信息分别对应于多个通用寄存器120。图11所示为数据长度存储电路219的存储内容。如图11所示,在这些1位的多段有效信息中,值0b表示有效,值1b表示无效。
第一类型指令对应电路212是具有如下功能的电路,即当作为解码目标的指令代码为第一类型指令时(见图4),可以根据第一类型指令的内容更新数据长度存储电路219的内容。
第一实施方式的第一类型指令对应电路112根据第一类型指令更新对应于通过第一类型指令指定的通用寄存器的数据长度选择-使用信息。与此相对,第二实施方式的第一类型指令对应电路212设定对应于由第一类型指令指定的通用寄存器的有效信息段以显示有效,并且然后根据第一类型指令更新数据长度选择-使用信息。执行该更新的步骤而与将有效信息的哪一段设定为有效无关。
第二类型指令对应电路213是具有如下功能的电路,即当作为解码目标的指令代码为第二类型指令时(见图5),参照数据长度存储电路219的内容指定作为处理目标的数据长度,其中该处理目标对应于第二类型指令的指令代码,并将该指定的数据长度传输给指令解码器211从而根据该数据长度使指令解码器211进行解码。
第二类型指令对应电路213和第二类型指令对应电路113的不同点如下。如这里所述,响应于第二类型的指令,第一实施方式的第二类型指令对应电路113参照对应于假设要存储处理目标的通用寄存器的数据长度选择-使用信息,并选择性指定该第二类型指令的处理目标数据的长度。相反,第二类型指令对应电路213首先参照对应于假设要存储处理目标数据的通用寄存器的有效信息段,然后,只有该有效信息段表示参照该数据长度选择-使用信息有效时,才参照单段数据长度选择-时用信息以选择性指定第二类型指令的处理目标数据的长度。
第三类型指令对应电路214具有当作为解码目标的指令代码是第三类型指令时更新存储在数据长度存储电路219中的有效信息的功能。第三类型指令为具有某功能的指令,其中该功能为采用通用寄存器存储内容作为表示对应于数据存储器150的存储器地址的值,第三类型指令的实施例为用于在寄存器R1中存储某个存储器地址的指令。响应于第三类型指令,第三类型指令对应电路214将对应于由第三类型指令指定的通用寄存器的有效信息段更新为存储存储器地址值的位置,使得有效信息段指示无效。
2-3操作
以下描述通过具有所述结构的微处理器200的操作。
微处理器200以与微处理器100相同的方式执行图6所示的操作,不同之处在于解码单元210执行不同于图7所示内容的指令解释处理。
(a)首先,指令解码器211解码从指令存储器140读取的指令。
(b)然后,解码单元210判断该指令是否是第二类型指令。当该指令为第二类型指令时,并且只有在对应于由第二类型指令指定的通用寄存器的有效信息段表示有效的情况下,其中该通用寄存器为存储处理目标数据的位置,第二类型指令对应电路213才将通过数据长度选择-使用信息显示的数据长度指定为处理目标数据的长度,并将该数据长度转移给指令解码器211。收到该数据长度后,指令解码器211根据该收到的数据长度进一步解码该指令。注意如果对应于通用寄存器的有效信息显示参考数据长度选择-使用信息是无效的,择第二类型指令对应电路213将预定长度指定为处理目标数据的长度,并且将指定的数据长度转移给指令解码器211。该预定长度为用于指定存储器地址所需的长度,一实施例为32位。
(c)然后,解码单元210判断该解码指令是否为第一类型指令,并且如果该解码指令为第一类型指令,第一类型指令对应电路212根据第一类型指令更新数据长度选择-使用信息,然后更新对应于通过第一类型指令指定的通用寄存器的有效信息段以显示其有效。
(d)接下来,解码单元210判断该解码指令是否为第三类型指令,并且如果该解码指令为第三类型指令,第三类型对应电路214更新对应于通过第三类型指令指定的通用寄存器的有效信息段以显示其有效。
解码单元210重复所述步骤(a)到(d)从而对于每个指令执行所述步骤。
3.第三实施方式
以下描述了本发明第三实施方式的微处理器。
3-1概述
第三实施方式的微处理器300为经过部分修改的第二实施方式中的微处理器200。如上所述,第二实施方式的微处理器200在数据长度存储电路中存储单段数据长度选择-使用信息以及对应于通用寄存器120的多段有效信息,根据第一类型和第三类型指令更新数据长度保持电路219的内容,并采用数据长度保持电路219的内容指定第二类型指令的处理目标数据的长度。与此相对,第三实施方式的微处理器在数据长度存储电路中存储单段数据长度选择-使用信息,但不存储有效信息。第三实施方式的微处理器对于第一类型和第三类型指令执行非特定处理,但是在每次解码NOP指令时,更新用于指定第二类型指令的处理目标数据长度的数据长度选择-使用信息段,使得数据长度选择-使用信息段循环显示8位、16位、32位、8位、16位、32位、8位等数据长度。
3-2结构
第三实施方式的微处理器(以下称之为“变型微处理器”)一定程度上共用第二实施方式的微处理器200(见图10)的结构元件,但是与微处理器200的不同之处在于省略了第三类型指令对应电路,替代第一类型指令对应电路而提供了NOP指令对应电路,并且数据长度存储电路的存储内容是单个数据长度选择-使用信息段。注意在解码NOP指令时该指令解码器使能NOP指令对应电路开始工作,并且NOP指令对应电路周期性更新数据长度选择-使用信息的内容。
3-3操作
以下描述通过变型微处理器进行的操作。
变型微处理器以与微处理器200相同的方式执行图6所示的操作,不同之处在于对指令解释处理进行了如下修改。注意在启动用于解释程序的指令解释处理之前,解码单元将数据长度选择-使用信息设定为表示诸如8位的预定数据长度的初始值。
图12所示为通过变型微处理器的解码单元执行的指令解释处理。
为了准备执行指令,该解码单元对于指令解码器执行控制从而解码从指令存储器140读取的指令(步骤S31)。如果该指令为第二类型指令(步骤S32),该解码单元使该第二类型指令对应电路开始工作。注意在步骤S31阶段的解码过程中,对于没有指定数据长度的指令不执行与数据长度相关的控制。
第二类型指令对应电路参照数据长度选择-使用信息(步骤S33),指定该数据长度(步骤S34),并将该数据长度传输给指令解码器。如果传输的数据是8位,该指令解码器进一步将该指令解码为处理目标为8位数据的指令(步骤S35)。如果所传输的数据长度为16位,该指令解码器进一步将该指令解码为处理目标为16位数据的指令(步骤S36)。如果所传输的数据长度为32位,该指令解码器进一步将该指令解码为处理目标为32位数据的指令(步骤S37)。
如果读取的指令不是第二类型指令而是NOP指令(步骤S38),该指令解码器使NOP指令对应电路开始工作,并且如果数据长度选择-使用信息显示8位,NOP指令对应电路更新数据长度选择-使用信息以显示16位(步骤S40和S41)。另一方面,如果数据长度选择-使用信息显示16位,则NOP指令对应电路更新数据长度选择-使用信息以显示32位(步骤S40和S42)。而且,如果数据长度选择-使用信息显示32位,则NOP指令对应电路更新数据长度选择-使用信息以显示8位(步骤S40和S43)。
4.补充说明
本发明的微处理器并不限于所述的第一到第三实施方式。以下是本发明微处理的可能修改实施例。
(1)在每个所述的实施方式中,微处理器指定一数据长度,该数据长度反映与存储在8个通用寄存器(寄存器R0到R7)中的数据相关的数据长度选择-使用信息。但是,微处理器中通用寄存器的数量不限于8个。而且,该微处理器可以具有采用数据长度选择-使用信息仅对于某些通用寄存器指定存储数据的长度的结构。
此外,尽管在所述实施方式中通用寄存器均具有可以存储32位数据的大小,但是寄存器不限于32位,例如其可以是16位寄存器或者64位寄存器。可以根据寄存器的大小表达数据长度选择-使用信息,具体地,根据与各种计算和数据传输的处理目标相关的可能数据长度而表达数据长度选择-使用信息。例如,如果仅有可能的数据长度是8位和16位,则要充分配置数据长度选择-使用信息从而可以识别两种长度。
(2)可以构造微处理器以使其在低功耗下执行控制。具体地,当解码单元解码指令时,在确定解码指令的处理目标数据的长度之后,可以控制该微处理器使得电路仅执行到进行指定长度的数据计算处理或者数据传输处理所需的程度。例如,构造该微处理器使得当指定可以存储32位数据的通用寄存器正在存储8位长度的数据时,该微处理器节省通用寄存器中其余24位数据保持或者输入/输出所需的能量。
(3)在第一到第三实施方式所述的每个微处理器可以具有流水线结构,其中指令读取(获取)、指令解释(解码)和执行均为分离的流水线级。
(4)在第一实施方式中,给出了一个在解码mul指令时更新数据长度选择-使用信息以使其显示加倍数据长度的实施例,然而,该实施例也可以有如下替代实施方式。假设解码用于对寄存器R0和寄存器R1的内容进行乘积运算并在寄存器R1中存储该结果的mul指令。这里,可以更新对应于寄存器R1的数据长度选择-使用信息从而重新显示对应于寄存器R0的数据长度选择-使用信息所示的各数据长度和对应于寄存器R1的数据长度选择-使用信息所示的各数据长度(例如,在更新前有数据长度选择-使用信息所示的数据长度)的和。除了mul指令以外,可以将计算目标数据长度和计算结果数据长度不同的其他指令设定为第一类型指令,并且可以根据所述第一类型指令通过第一类型指令对应电路而更新数据长度选择-使用信息。这些指令包括除法指令和位操作指令。
包含在第一类型指令中的可以是指示将一个数据长度存储到寄存器中的数据存储指令,以及指示将另一数据长度存储到该寄存器中的指令。该指令的实施例包括:指示在通用寄存器中存储8位中间数据的mov指令,指示在通用寄存器中存储16位中间数据的mov指令,指示将存储器中的8位数据存储到通用寄存器的mov指令,以及指示将存储器中的16位数据存储到通用寄存器的mov指令。这里,应该构造第一类型指令对应电路以根据该指令执行处理操作。
(5)在第二实施方式中,所述第三类型指令为用于指示在通用寄存器中存储32位(4个字节)存储器地址值的指令。但是,该存储器地址值不限于32位,可以是16位。如果存储器地址值是16位,则应该构造第三类型指令对应电路以根据该第三类型指令将数据长度选择-使用信息更新为表示16位的值。
(6)在第三实施方式中,给出了NOP指令的实施例,该NOP指令通常包含在指令集中作为用于指示非具体控制处理的指令,其具有周期性更新数据长度选择-使用信息的功能。但是,该指令集可以包括明确指示将数据长度选择-使用信息更新为表示具体数据长度的数值的各种具体指令。该具体指令的实施例为:指示更新数据长度选择-使用信息以显示8位的具体指令,指示更新数据长度选择-使用信息以显示16位的具体指令,指示更新数据长度选择-使用信息以显示32位的具体指令。这里,可以构造该微处理器以根据具体指令更新数据长度选择-使用信息。注意可以将NOP指令设定为第一类型指令,并且如上所述该第一类型指令对应电路可以根据NOP指令周期性更新数据长度选择-使用信息。
还可以构造第一和第二实施方式中的解码单元以根据在第三实施方式中所示的NOP指令更新数据长度选择-使用信息,或者根据具体指令明确更新数据长度选择-使用信息以显示具体数据长度。
而且,如果例如数据长度选择-使用信息表示8位并且要在第三实施方式中更新为显示32位,则可以创建使微处理器在该程序部分连续执行两个NOP指令的程序。以这种方式,可以构造微处理器从而使得即使指令是具体指令而非NOP指令,也可以通过以预定设定方式排列具体指令更新数据长度选择-使用信息以显示具体值。
尽管已经参照附图通过实施例对本发明进行了全面描述,但是应该注意熟悉本领域的技术人员可以对本发明进行各种变化和改进。因此除非这些变化已经脱离的本发明的范围,否则其应该解释为包含在本发明的范围之内。
Claims (7)
1.一种微处理器,其连续读取指令并解释和执行每读取的指令,包括:
存储单元,用于存储表示处理目标数据长度的数据长度选择-使用信息;
解码单元,用于相对所述指令连续执行指令解释处理从而按照所述指令对每个指令指定进行指令解释处理的内容;以及
执行单元,用于相对每个指令并且按照对于该指令指定为指令执行处理结果的内容而进行指令执行处理,其中,
当所述指令解释处理的目标为第一类型指令的任意之一时,所述解码单元按照所述第一类型指令而更新所存储的数据长度选择-使用信息,以及
当所述指令解释处理的目标为第二类型指令的任意之一时,所述解码单元按照所存储的数据长度选择-使用信息而选择所述第二类指令的处理目标数据的长度,并按照该选择的长度执行所述指令解释处理。
2.根据权利要求1所述的微处理器,其特征在于,
所述第一类型指令包括数据存储指令,其指示将第一长度的数据存储到寄存器,以及数据存储指令,其指示将第二长度的数据存储到寄存器,以及
当所述指令解释处理的目标为所述数据存储指令之一时,所述解码单元更新所述存储的长度选择-使用信息从而表示属于为所述目标的数据存储指令之一的所述第一长度和第二长度其中之一。
3.根据权利要求1所述的微处理器,其特征在于,
所述第一类型指令包括(i)指示在寄存器中设置n位数值的指令,(ii)指示在寄存器中设置2n位数值的指令,(iii)指示将n位数据从存储器传送到寄存器的指令,以及(iv)指示将2n位数据从存储器传送到寄存器的指令,以及
当所述指令解释处理的目标为指示在寄存器中设置n位数值的指令时,所述解码单元更新所述存储的数据长度选择-使用信息以表示n位,
当所述指令解释处理的目标为指示在寄存器中设置2n位数值的指令时,所述解码单元更新所述存储的数据长度选择-使用信息以表示2n位,
当所述指令解释处理的目标为指示将n位数据从存储器传送到寄存器的指令时,所述解码单元更新所述存储的数据长度选择-使用信息以表示n位,以及
当所述指令解释处理的目标为指示将2n位数据从存储器传送到寄存器的指令时,所述解码单元更新所述存储的数据长度选择-使用信息以表示2n位。
4.根据权利要求1所述的微处理器,其特征在于,
所述指令的至少其中之一为乘法指令,其包括在所述第一类型指令和第二类型指令中,以及
当所述指令解释处理的目标为乘法指令时,所述解码单元按照所述存储的数据长度选择-使用信息选择所述乘法指令的处理目标数据长度从而根据所述选择的长度执行所述指令解释处理,并更新所述存储的数据长度选择-使用信息以表示预定的数值。
5.根据权利要求1所述的微处理器,其特征在于,
所述数据长度选择-使用信息选择性地表示多个长度其中之一,并且
每次所述解码单元执行对所述第一类型指令任意之一的所述指令解释处理时,该解码单元更新所述数据长度选择-使用信息从而以多个长度的预定循环顺序表示该多个长度中的下一个。
6.根据权利要求1所述的微处理器,其特征在于,还包括多个寄存器,其能够通过指令指定为处理目标的存储位置,
其中所述存储单元存储多段数据长度选择-使用信息,其分别对应于多个寄存器,
所述第一类型指令为指示将某一长度的数据存储到某一所述寄存器的指令,
所述第二类型指令为参照存储在某一寄存器中并具有某一长度的作为处理目标数据的数据而执行运算处理的指令,以及
当所述指令解释处理的目标为第一类型指令时,所述解码单元更新对应于所述寄存器的数据长度选择-使用信息,其中根据所述第一类指令指示将数据存储在所述寄存器中,以及
当所述指令解释处理的目标为所述第二类型指令时,所述解码单元按照对应于所述寄存器的数据长度选择-使用信息段而选择所述第二类指令的处理目标数据的长度,其中该寄存器由第二类型指令指定为存储该处理目标数据,并且指定用于第二类型指令的指令执行处理内容从而相对所述处理目标数据的选择的长度值而进行所述运算处理。
7.根据权利要求1所述的微处理器,其特征在于,还包括多个寄存器,其能根据指令指定为处理目标数据的存储位置,
其中所述存储单元还包括多段分别对应于所述多个寄存器的有效信息,每段有效信息表示在指令解释处理中是否将所述数据长度选择-使用信息表示为有效或无效,
所述第一类型指令为将某一长度的数据存储到某一所述寄存器的指令,
所述第二类指令为相对存储在某一所述寄存器中并具有某一长度的作为所述处理目标数据的数据而指示进行运算处理的指令,以及
当所述指令解释处理的目标为所述第一类型指令时,除了按照所述第一类型指令更新所述数据长度使用-选择信息外,为了表示有效,所述解码单元更新对应于所述寄存器的有效信息段,其中通过所述第一类指令指示将所述数据存储在所述寄存器中,
当所述指令解释处理的目标为第三类型指令时,为了表示无效,所述解码单元按照第三类型指令而更新对应于某一所述寄存器的有效信息段,以及
当所述指令解释处理的目标为第二类型指令时,
(a)(i)如果对应于由所述第二类型指令指定为存储处理目标数据的所述寄存器的有效信息段表示有效,则所述解码单元按照所述数据长度选择-使用信息而选择所述处理目标数据的长度,(ii)如果对应于由所述第二类型指令指定为存储处理目标数据的所述寄存器的所述有效信息段表示无效,则所述解码单元选择预定的长度作为所述处理目标数据的长度,以及
(b)所述解码单元指定用于所述第二类型指令的所述指令执行处理内容,从而相对于所选择的处理目标数据的长度值而进行运算处理。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005317158A JP2007122626A (ja) | 2005-10-31 | 2005-10-31 | マイクロプロセッサ |
JP2005317158 | 2005-10-31 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1959630A true CN1959630A (zh) | 2007-05-09 |
Family
ID=37997980
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006101528585A Pending CN1959630A (zh) | 2005-10-31 | 2006-10-20 | 微处理器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20070101101A1 (zh) |
JP (1) | JP2007122626A (zh) |
CN (1) | CN1959630A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101763244B (zh) * | 2010-01-21 | 2013-09-18 | 龙芯中科技术有限公司 | 存储器与寄存器之间的数据传输装置和方法 |
CN104216842A (zh) * | 2013-06-05 | 2014-12-17 | 上海华虹宏力半导体制造有限公司 | 寄存器组与存储器数据双向传输结构及数据双向传输方法 |
CN110995285A (zh) * | 2019-12-27 | 2020-04-10 | 成都达安众科技有限公司 | 一种uhf rfid分步式指令解码方法及芯片 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008062768A1 (fr) * | 2006-11-21 | 2008-05-29 | Nec Corporation | Système de génération de code d'opération de commande |
CN103455280B (zh) | 2012-05-31 | 2016-12-14 | 国际商业机器公司 | 用于执行存储器复制的方法和系统 |
US9513920B2 (en) * | 2014-05-29 | 2016-12-06 | Mill Computing, Inc. | Computer processor employing split-stream encoding |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4530050A (en) * | 1981-08-26 | 1985-07-16 | Hitachi, Ltd. | Central processing unit for executing instructions of variable length having end information for operand specifiers |
JP2617974B2 (ja) * | 1988-03-08 | 1997-06-11 | 富士通株式会社 | データ処理装置 |
DE69231011T2 (de) * | 1991-02-08 | 2000-09-28 | Fujitsu Ltd | Cachespeicher zur Verarbeitung von Befehlsdaten und Datenprozessor mit demselben |
US5371864A (en) * | 1992-04-09 | 1994-12-06 | International Business Machines Corporation | Apparatus for concurrent multiple instruction decode in variable length instruction set computer |
JP2832899B2 (ja) * | 1993-05-31 | 1998-12-09 | 松下電器産業株式会社 | データ処理装置およびデータ処理方法 |
US5542059A (en) * | 1994-01-11 | 1996-07-30 | Exponential Technology, Inc. | Dual instruction set processor having a pipeline with a pipestage functional unit that is relocatable in time and sequence order |
JP3451595B2 (ja) * | 1995-06-07 | 2003-09-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ |
US5809272A (en) * | 1995-11-29 | 1998-09-15 | Exponential Technology Inc. | Early instruction-length pre-decode of variable-length instructions in a superscalar processor |
US5740392A (en) * | 1995-12-27 | 1998-04-14 | Intel Corporation | Method and apparatus for fast decoding of 00H and OFH mapped instructions |
US5935237A (en) * | 1996-05-30 | 1999-08-10 | Nec Corporation | Microprocessor capable of carrying out different data length instructions |
US6170050B1 (en) * | 1998-04-22 | 2001-01-02 | Sun Microsystems, Inc. | Length decoder for variable length data |
US6292845B1 (en) * | 1998-08-26 | 2001-09-18 | Infineon Technologies North America Corp. | Processing unit having independent execution units for parallel execution of instructions of different category with instructions having specific bits indicating instruction size and category respectively |
EP1050796A1 (en) * | 1999-05-03 | 2000-11-08 | STMicroelectronics S.A. | A decode unit and method of decoding |
JP3805578B2 (ja) * | 1999-09-14 | 2006-08-02 | 松下電器産業株式会社 | プロセッサ |
US7353368B2 (en) * | 2000-02-15 | 2008-04-01 | Intel Corporation | Method and apparatus for achieving architectural correctness in a multi-mode processor providing floating-point support |
JP4203979B2 (ja) * | 2000-08-02 | 2009-01-07 | 富士通株式会社 | パケット処理装置 |
GB2367651B (en) * | 2000-10-05 | 2004-12-29 | Advanced Risc Mach Ltd | Hardware instruction translation within a processor pipeline |
US20060174089A1 (en) * | 2005-02-01 | 2006-08-03 | International Business Machines Corporation | Method and apparatus for embedding wide instruction words in a fixed-length instruction set architecture |
-
2005
- 2005-10-31 JP JP2005317158A patent/JP2007122626A/ja not_active Withdrawn
-
2006
- 2006-10-20 CN CNA2006101528585A patent/CN1959630A/zh active Pending
- 2006-10-23 US US11/584,515 patent/US20070101101A1/en not_active Abandoned
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101763244B (zh) * | 2010-01-21 | 2013-09-18 | 龙芯中科技术有限公司 | 存储器与寄存器之间的数据传输装置和方法 |
CN104216842A (zh) * | 2013-06-05 | 2014-12-17 | 上海华虹宏力半导体制造有限公司 | 寄存器组与存储器数据双向传输结构及数据双向传输方法 |
CN104216842B (zh) * | 2013-06-05 | 2017-06-06 | 上海华虹宏力半导体制造有限公司 | 寄存器组与存储器数据双向传输结构及数据双向传输方法 |
CN110995285A (zh) * | 2019-12-27 | 2020-04-10 | 成都达安众科技有限公司 | 一种uhf rfid分步式指令解码方法及芯片 |
Also Published As
Publication number | Publication date |
---|---|
US20070101101A1 (en) | 2007-05-03 |
JP2007122626A (ja) | 2007-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1129843C (zh) | 使用组合的数据处理器系统和指令系统 | |
CN1174313C (zh) | 多指令集的数据处理 | |
CN101030192A (zh) | 管理处理器的寄存器的方法和系统 | |
CN1121014C (zh) | 具有risc结构的八位微控制器 | |
CN100339824C (zh) | 高效执行特长指令字的处理器和方法 | |
CN1168216C (zh) | 文档管理设备,数据压缩方法和数据解压缩方法 | |
CN1959630A (zh) | 微处理器 | |
CN100338570C (zh) | 用于数据的并行右移位合并的方法和装置 | |
CN1302380C (zh) | 处理器和编译器 | |
CN1577257A (zh) | 具有取整和移位的单指令多数据整数高位乘法 | |
US6408382B1 (en) | Methods and apparatus for abbreviated instruction sets adaptable to configurable processor architecture | |
CN1655118A (zh) | 处理器和编译器 | |
CN1783054A (zh) | 处理器 | |
CN1181528A (zh) | 二进制程序转换设备,转换方法和程序记录媒体 | |
CN1613058A (zh) | 配有jit编译器的虚拟计算机,操作所述计算机的方法以及包括所述虚拟计算机的终端设备 | |
CN101051301A (zh) | 用于操作计算机处理器阵列的方法和装置 | |
CN1440528A (zh) | 寄存器中堆栈操作数的存储 | |
CN1278226C (zh) | 模拟装置、模拟方法 | |
CN1758213A (zh) | 带有共享内容的异构型并行多线程处理器(hpmt) | |
CN1666174A (zh) | 处理器的地址生成单元 | |
CN1035190A (zh) | 基于操作数长度和对位的微码转移 | |
CN1278931A (zh) | 特别适于译码数字音频信号的数字信号处理器 | |
CN1286005C (zh) | 微处理器 | |
CN1734415A (zh) | 分枝预测装置及分枝预测方法 | |
CN1300395A (zh) | 处理器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |