CN1271523C - 具有扩展指令的中央处理器 - Google Patents
具有扩展指令的中央处理器 Download PDFInfo
- Publication number
- CN1271523C CN1271523C CN02130292.8A CN02130292A CN1271523C CN 1271523 C CN1271523 C CN 1271523C CN 02130292 A CN02130292 A CN 02130292A CN 1271523 C CN1271523 C CN 1271523C
- Authority
- CN
- China
- Prior art keywords
- instruction
- register
- operand
- extended
- stored
- 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.)
- Expired - Lifetime
Links
Images
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
一种具有扩展指令的中央处理器,包括:存储地址、偏移和改变立即数据的定字长指令。该中央处理器包括:通用寄存器、专用寄存器、由内部寄存器构成的寄存器文件、用于执行计算功能的功能块、用于存储指令的指令寄存器、用于向该指令寄存器产生/输出控制信号的控制块、及多个状态标志,其中专用寄存器可由程序员访问并包括:用于存储扩展数据的扩展数据字段或者具有扩展数据字段的扩展寄存器,其中该扩展数据字段作为一个单元和扩展标志,用于当执行存储扩展寄存器的扩展数据的指令时改变其状态,并且具有可由程序员访问的一位或多位,本发明能够克服现有技术中难以处理指令译码及异常情况等缺点。
Description
技术领域
本发明涉及一种带有定字长指令的中央处理器(CPU),用于改变存储地址、偏移及立即数据。
现有技术
从图5中可清楚看出,具有寄存器文件的传统中央处理器包括:GPR(通用寄存器),设置成适合这样一种架构,即方便使用者对其进行访问、和用于特殊目的的SPR(专用寄存器);指令寄存器4,用于锁存由存储器所修改的指令;译码/控制部分5,用于对锁存在指令寄存器4中的操作码和操作数进行译码,并根据指令产生预定的控制信号;操作部分6,用于处理在译码/控制部分5所译出的指令;存储器数据寄存器1,用于当向存储器写入数据或由存储器读取数据时进行锁存/缓冲数据;存储地址寄存器2,用于锁存/输出在程序计数器中计算的地址;及控制信号寄存器3,用于缓冲由外源输入的控制信号。
称作“机器语言”的中央外理器指令包括操作码和操作数,其中操作码以二进制位的排列表达,代表操作,而操作数通过操作码进行操作。
以ADD指令作为操作码及操作数的例子,‘A=B+C’是将‘B’和‘C’相加并将结果储存在‘A’中。这里,‘+’为代表操作的操作码,‘A’、‘B’和‘C’是作为操作对象的操作数。上述表达如果以机器语言表示可以是‘0001 0000 0001 0010’,其中‘0001’为表示‘+’的操作码,‘0000’,‘0001’及‘0010’为表示A,B及C的操作数。二进制数字的表达由于难于读取而经常使用十六进制数。在上述例子中十六进制数的表达变为‘0×1012’。在机器语言中,操作数包括寄存器,存储地址,偏移及立即数据。
在很多例子中,寄存器的数量限于32个。例如,若寄存器的数量为16,则其可以作为4位的操作数(2**4=16)表示。但是,在存储地址中,32位的中央处理器可以使用4G字节的存储器,它将需要32位地址来表示。因此,定义它的操作数长度变得更长。在偏移及立即数据中,操作数长度与存储器的情况相似,变得更长。若操作数长度变长,机器语言的长度也会更长。若机器语言的长度变得更长,则程序的大小增加且效率变差。
由于这些原因,每个中央处理器应具有能有效代表操作数的技术方法。用在IBM个人电脑中的80386具有多字节长度指令。例如,80386的机器语言指令‘MOVE’根据操作数长度定义如下:
MOV AL, 12→B012
MOV AX, 1234→B8 34 12
MOV EAX, 12345678→66B8 78 56 34 12
此外,MC68000具有类似于80386的多个16位长度指令。如上所述的可变长度指令具有能代表任何操作数长度的优点,但其缺点在于难以处理指令译码及异常情况等,这是因为机器语言的长度被改变了。具有可变长度指令的中央处理器被称为CISC(复杂指令集计算机)。
另一方面,在RISC(精简指令集计算机)中,机器语言的长度是固定的。例如,MIPS-R3000,SPARC,ARM-7等具有32位的定字长指令,由日立公司所制造的SH-3具有16位的定字长指令。由于机器语言的定字长的原因,这些定字长指令使得指令译码,异常处理及流水线的采用变得容易,以实现中央处理器的高性能。在存储器上,由于指令长度的固定,还伴随着对操作数长度的限制。
例如,MIPS-R3000具有32位容量的存储器。然而,中央处理器为32位,能够在机器语言中表达的偏移为16位,但立即常数的长度被限制为16位。因此,其变成程序编码困难及其性能降低的原因之一。
同时,‘MOVE’指令是将一个寄存器的内容拷贝至另一个寄存器的操作,其中寄存器的操作数具有5位长度,因为MIPS-R3000具有32个寄存器。假设用于代表‘MOVE’的操作码定义为6位,则定字长指令可以定义为16位指令。但是,为了使用定字长指令,16位代表指令作为32位指令表示。但32位定字长指令具有操作数长度受限制及具有不必要的冗长指令的缺点。
以TR-4101作为另一例子,TR-4101具有16位定字长指令和扩展一部份定字长指令及操作数的功能。例如,强制性从存储器中撷取数据的指令‘LOAD’包括表示‘LOAD’的操作码和表示寄存器撷取和储存的目标寄存器,指示操作数及存储器的位置的索引寄存器,以及代表离开该操作数及索引的偏移量的偏移操作数。为了在16位长度指令上代表这些操作码及各种操作数,TR-4101限制5位偏移。但是,5位的偏移不足以表示存储器位置。因此,TR-4101使用‘EXTEND’指令。
‘EXTEND’指令包含5位的操作码及11位的立即常数操作数。在此,该11位立即常数操作数根据‘EXTEND’指令的下一个指令加以解释。例如,当‘LOAD’为‘EXTEND’指令的下一指令时,‘EXTEND’指令的11位立即常数操作数及‘LOAD’指令的5位偏移彼此连结,以代表16位偏移。
TR-4101的指令扩展技术仅仅将偏移和立即常数扩展到16位而并未解决传统RISC中央处理器所具有的运算长度的限制。操作数可扩展指令使得依据‘EXTEND’指令的出现指出不同的操作数。与先前的‘EXTEND’指令连接在一起的指令作为一个指令。换句话说,其具有在指令‘EXTEND’的下一个异常处理得不到操作以及响应周边设备的要求不能即时处理的缺点。
因此,为了解决这些缺点及问题,本发明的目的是提供一种带有扩展指令的中央处理器,其可以取C1SC及RISC的优点,以代表所有长度的存储地址、偏移及立即数据,以简化使用固定指令的指令译码器,并使得异常处理容易,从而使得流水线及MMU(存储器管理单元)被简化。
本发明的另一目的是提供一种带有扩展指令的中央处理器,其能够返回到下一个处理扩展指令的例行程序,其中所发生的异常情况即使紧跟着扩展指令也会在及时执行异常处理程序之后再停止扩展指令的进程。
发明内容
为了完成这些目标,具有扩展指令的中央处理器包括:寄存器文件,即小规模的存储器单元的寄存器的集合,其中存取速度快;内部总线,连接寄存器文件以传送/接收信息;连接内部总线与外部总线的外部总线缓冲器;连接内部总线的功能块,用于执行计算功能;连接内部总线的指令寄存器,用于存储执行程序中的指令;连接指令寄存器的控制块,用于解释指令并产生/输出控制信号至寄存器文件、内部总线、外部总线缓冲器、功能块及指令寄存器;和一个或多个状态标志,用于表示功能块的计算结果状态、指令寄存器状态、控制块状态。其中寄存器文件包括一个或多个可访问的通用寄存器、一个或多个专用寄存器、以及一个或多个内部寄存器,其中通用寄存器用于将计算的源数据及计算结果储存在存储地址中,专用寄存器用于储存中央处理器操作所需的信息,内部寄存器用于存储在程序员无法访问的寄存器处中央处理器操作所需的特殊功能、计算的中间程序等;状态标志包括可为或不可为程序员所访问的状态标志,和用于储存存储地址的程序计数器,其中存储地址用于存储由专用寄存器所运行的程序;由程序计数器指出的程序地址输出到内部总线;输出到内部总线的程序地址经由外部总线缓冲器输出到储存有程序的外部存储器地址;指令由通过所述方法所指出的外部存储器读出并经由外部总线缓冲器传送到内部总线;储存在内部寄存器之一的指令寄存器中的指令在控制块中得到解释以产生控制信号,执行指令并改变相关状态标志,其中储存在指令寄存器中并且在控制块中得到解释的指令仅仅包含用于代表运算的操作码或者操作码及操作数字段,其中所述操作数字段具有一个或多个根据系统操作进行执行的操作数;操作码和操作数包含:一个或多个二进制位,其中操作数被解释/执行为代表存储地址的地址操作数、代表由存储在通用寄存器或专用寄存器中的存储地址的偏移操作数、代表用于计算或存储地址或控制的立即常数的立即常数操作数、或代表该寄存器的寄存器操作数,且进一步包含:只具有扩展数据字段的扩展寄存器,或具有作为一种单元的扩展数据字段的扩展寄存器,该单元可以将扩展数据储存到可访问的寄存器中,其中,包含用于代表存储扩展寄存器的扩展数据字段中的扩展数据及操作数内的立即常数的指令在控制块中得到解释,以存储扩展寄存器的扩展数据字段中的立即常数操作数,包括操作码和操作数字段的扩展指令将控制块的扩展指令中的操作数字段与存储在扩展寄存器的扩展数据字段中的扩展数据连接,以形成新的操作数字段并被解释/执行为具有新形成操作数字段的指令。
此外,包含操作码及操作数字段的修正指令将存储在扩展寄存器的扩展数据字段中的扩展数据与包含在修正指令中的操作数字段连接,以形成一新指令,使得该新形成的指令可以被解释和执行。
而且,依据本发明,具有扩展指令的中央处理器进一步包括:扩展标志,以表示扩展寄存器的扩展数据字段的状态,其是一种状态标志,包括一个或多个程序员可以访问的位,其中,包含用于代表存储扩展寄存器的扩展数据字段中的扩展数据及立即常数操作数的指令在控制块中得到解释,以存储扩展寄存器的扩展数据字段中的立即常数操作数,并且在控制块中执行以改变扩展标志的状态;包含操作码及操作数字段的可扩展指令依据扩展标志状态被解释/执行为具有唯一包含在控制块内可扩展指令中的操作数字段的指令,或者将包含在扩展指令中的操作数字段与存储在扩展寄存器的扩展数据字段中的扩展数据连接,以形成一新操作数字段,并且被解释为带有该新形成的可执行的操作数字段的指令,以在控制块中执行可扩展指令并改变扩展标志状态。
本发明包含具有扩展寄存器ER的中央处理器,用于代表扩展寄存器的状态,根据扩展寄存器的不同状态储存ER中数值的指令和强制解释操作数的指令。本发明能够实现一种带有定字长指令并且可改变存储地址、偏移和立即常数的长度的中央处理器。
附图的简要说明
下面将参照附图对本发明做详细说明,其中:
图1是说明根据本发明的中央处理器的结构图;
图2是说明中央处理器的流水线操作的结构图;
图3是说明通过流水线的时序图执行取指令和译码指令的结构图;
图4是说明扩展标志被设为状态标志的指令格式的结构图;
图5是说明现有技术的中央处理器的结构图;
发明的详细说明
图1是说明根据本发明的具有扩展指令的中央处理器的实施方式,其中该实施例采用32位的MCU架构。MCU能够扩展和缩小数据流和总线的宽度,并且其详细块能够以各种方法加以定义。但使用32位MCU的实施方式是为了简化说明的目的。
依据本发明的实施方式,具有扩展指令的32位中央处理器包括:寄存器文件80,32位总线、译码/控制部分50、运算逻辑语句单元60(此后称ALSU)、乘法器/除法器70及地址产生部分90,其中其指令包含16位并使用三阶流水线,且存储器结构包含四个彼此并联连接的8位存储器。
下面将对具有扩展指令的32位中央处理器的每一单元的基本功能及操作加以说明。
首先当系统系复位时,MCU从存储器中读取起始地址并将其储存在数据锁存部分10。然后,地址值储存到寄存器文件80中的程序计数器(PC)中。只要程序由以下周期依序运行,该值将依据存储器的配置加以增加。地址产生部分90指示该值并从存储器中读取使用者所要的程序。地址产生部分90选择与以下指令和数据存储地址相对应的单元,使用它们来顺序或非顺序运行程序,读取该地址处的指令并将其锁存在预指令寄存器20中顺序运行该程序,或者从存储器中取出必须数据并将其锁存在数据锁存部分10以执行适当运算。
事实上,若指令开始执行时,用于流水线的指令从预指令寄存器(PIR)20中撷取。预译码器30将该指令分为几大类型。这里,大类型则根据流水线的数值和用于决定运行哪个状态转换的执行方法将定义指令分为几种相似类型。随后,指令被锁存到指令寄存器(IR)40中。译码/控制部分50指示锁存值和来自预译码器30的输出并决定对应指令的状态转换,并根据每个状态产生控制信号。该控制信号操作32位的ALSU60及乘法器/除法器70并将其输出结果储存在寄存器文件80中。
在图4中说明了寄存器文件80的详细结构。寄存器文件80分为GPR(通用寄存器)和SPR(专用寄存器)。GPR是使用者可以容易存取的区域并包含十六个32位寄存器。相反,SPR是用于特殊目的的寄存器,包括:PC(程序计数器)、SP(用户/管理堆栈指针)、LR(连接寄存器)、ML/MH(乘法结果低/高寄存器)、SR(状态寄存器)等。这些寄存器中的LR,ML/MH及SR的功能如下:
LR(连接寄存器):当出现非顺序程序流向的分支时,如上所述程序计数器的值储存在存储器(堆栈区域)中。然后,在远端函数(distalfunction)的情况下,容易运行立即接回地址和调用远端函数的操作。考虑这些方面,当调用远端函数时,地址并未储存在存储器中。相反,连接寄存器用于其暂时储存器。当函数经由上述处理停止运行及地址值被取回时,由于不再对存储器进行读取,从而系统性能得到加强。
ML/MH(乘法结果低/高寄存器):在MCU中,有一乘法器及除法器。因此,这两个寄存器用于暂时储存其操作结果。
SR(状态寄存器):该寄存器用于储存如同在一般的MCU中的各种计算程序中的状态值,其为表示中央处理器的状态标志的集合。
依据本发明的具有扩展指令的中央处理器进一步包括:寄存器文件80中的扩展寄存器(ER)和表示指令扩展状态的扩展标志。在此实施方式中,扩展寄存器设置在SPR中,但其位置与程序员可访问的位置无关。用于表示扩展状态的标志与程序员可访问的位置也没有关系,但在此实施方式中其定位在SR中。
扩展寄存器(ER):扩展寄存器用于暂时储存偏移或立即数据值,并产生预定量的操作数。在此实施方式中,代表扩展寄存器的扩展标志包含在状态寄存器中。
ER的总长度根据中央处理器的字长改变并在16位的中央处理器中具有等于或少于16位的长度,一个等于或少于32位中央处理器中的32位及一个等于或少于64位中央处理器中的64位。在此,ER的32为长度是作为例子来解释的,但应注意的是其目的是为了便于说明而不是限定中央处理器的ER长度及字长。
ER应该具有超过程序员可以访问的1位长度的形状。中央处理器中的一些标志和寄存器包含不可被程序员所访问的位。在本发明的实施方式中,EF作为状态寄存器的一位来解释,应注意的是其目的是为了便于说明而不是限制EF的实施方式。此外,本发明的中央处理器在ER中储存数据并包括:表示扩展寄存器的使用与非使用的扩展标志(EF)和可以有效使用ER而不必使用EF的分离指令。在此实施方式中,给出了使用EF的例子。
本发明的中央处理器具有用于在ER中储存数据并同时将EF设为“1”的指令,为了便于解释,称其为‘LDERI’。此外,假设在32位中央处理器中使用16位的定字长指令,该指令‘LDERI’的操作数被定义为14位的立即常数,该指令语句如下:
LDERI #123
如果在执行指令之前EF为‘1’,算数偏移ER以左移14位的长度并将操作数部分的‘123’加到ER上。算术偏移是使用用于本发明的ER的一个例子。此外,还有一些方法,比如可以通过操作数的量从低效位填充,对于每个指令通过将操作数放置在固定位置来利用ER等。可以通过任一方法来使用ER,使得程序员能够以各种方式访问。如果在执行指令前EF为‘0’,中央处理器将扩展该指令的操作数部分‘123’以实现32位并将其存在ER中。在两例子中,EF设为‘1’。
指令‘LDERI’的操作数长度根据另一指令的定义加以决定,该指令在本发明中并未限制其长度。如果在给出的例子中立即常数作为指令‘LDERI’的操作数,则应注意的是可以使用不同类型的操作数,比如存储地址等。例如,可以使用PC相对定址。这表示本发明可以具有一个或多个用于向ER中加载数据的指令方法。
依据本发明的具有扩展指令的中央处理器具有现有技术的一般指令,其中,需要改变操作数的指令在根据EF的状态来解释操作数这方面具有不同点。例如,在具有16位定字长指令的32位中央处理器中,具有8位定字长的指令‘JMP’说明如下:
JMP 偏移
指令‘JMP’是用于改变程序顺序的指令,其执行相对于位于当前程序位置的下一条指令所偏移的其它位置的指令。跳动的偏移位置限于-128字节到+127字节的范围内,因为偏移长度指定为8位。
在此例子中,依据EF的状态,将偏移分2种情况解释。第一,如果‘EF’为‘0’,偏移长度作为8位解释。若‘EF’为‘1’,中央处理器将ER的值向左算术移位8位,然后加上这个表示在指令中的8位偏移以计算该偏移。因此,指令的操作数被扩展至具有32位偏移。在使用ER的多种方法中,该实施方式采用算术移位法来使用ER。
根据指令向左移动ER的距离不尽相同。在先前例子中,指令‘LDERI’移动14位,指令‘JMP’移动8位。
EF标志在指令‘LDERI’中变为‘1’,且在除了‘LDERI’指令外的所有指示EF寄存器的指令中为‘0’。但是,EF标志可以根据实施方法和不同的表示扩展指令状态的实施方面而具有不同值。
考虑另一例子,当‘LDERI’的操作数长度是在具有16位定字长指令的64位中央处理器中的12位时,假设程序的操作如下:
LDERI#opr1 :INSTRUCTION-1
LDERI#opr2 :INSTRUCTION-2
LDERI#opr3 :INSTRUCTION-3
LDERI#opr4 :INSTRUCTION-4
JMP Offset:INSTRUCTION-5
假设在执行‘INSTRUCTION-1’前EF为‘0’,ER通过‘INSTRUCTION-1’将值扩展至64位的‘opr1’,EF变为‘1’。因为EF在‘INSTRUCTION-1’中为‘1’并具有加入‘opr2’的值,ER将opr1向左算术移位12位。在ER利用法中,例如向左算术位移也是一例子。同时,若发生异常,则异常处理应事先执行,而不必执行‘INSTRUCTION-3’。
在具有依据本发明的具有扩展指令的中央处理器中,因为EF和ER是允许程序员访问的寄存器,其内容能够以将其储存在存储器的堆栈和缓冲器中的方式予以保留。在完成异常处理后,若储存在堆栈及存储器中的ER及EF被重新加载,可以适当执行‘INSTRUCTION-3’之后的下一指令。同时,即使在异常处理时发生了另一异常情况,ER和EF被依序储存和重新加载,以确保程序的正确执行。‘INSTRUCTION-5’的偏移长度是48位,导致由‘INSTRUCTION-1’至‘INSTRUCTION-4’的操作数彼此相加,其中‘INSTRUCTION-5’的8位偏移也被加入,从而得到56位的长度。
结果,具有依据本发明的扩展指令的中央处理器被认为所有指令具有固定长度且独立运行并且可以具有可变长度的操作数。
图4为根据带有扩展指令的中央处理器的实施方式说明寄存器文件架构和设定有扩展标志的指令格式。
如图所示,状态寄存器的每一位代表一预定状态。在此,应注意第19位是如上所述的扩展标志,其决定下一指令是采用较短值还是扩展值来作为偏移或立即值。当然,在状态寄存器中的一位的例子中,第19位用作标志,但其仅仅是一个实施例,可以通过各种方法在硬件中得以实质性的实施。
图2说明了用于该实施方式中的MCU的流水线如何操作的例子。如上所述,所使用的三阶流水线为撷取→译码→执行。这表示在每一周期内所取的被称为‘简单’的指令被撷取,译码和执行。LD/ST是从存储器读取/写入数据的指令,其另外需求一阶以上以取得有效地址。同时,中央处理器协助多重移位指令,而无需乘、除及管状移位装置,其中多重移位指令为不能在单一循环内完成执行的指令,其中典型流水线代表该指令。图3为流水线如何强行撷取、译码及执行指令的时序图。
至此,对本发明的一般运算流进行讨论。再者,下面将对依据本发明的32位中央处理器中的扩展指令的运行进行详细说明:
在执行一般指令时,无上述的扩展指令,当产生扩展指令时,MCU执行以下两运算。
首先,状态寄存器的第19位变为‘1’(在负逻辑中为‘0’)。若第19寄存器被设定为‘1’,则下一指令检测该标志。随后,若指令代表READ/WRITE的运算,则其运算强迫ER表示一偏移值,或者若指令为ALSU的内部操作时,则其操作以强迫ER表示一立即值。
第二,想要的偏移或立即值带入ER中,其中有两状态。第一状态中,初始使用扩展指令,或者已经使用了ER的值,即使扩展指令被事先发出,在第二状态中,未使用ER值,虽然扩展指令已经被事先执行。
为了解释它,假设扩展指令定义如下表。
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
IR[15:0]
& | & | * | * | * | * | * | * | * | * | * | * | * | * | * | * |
&:IR[15:14],操作码
*:IR[13:0],立即数
表1,扩展指令的一个实施例
在第一例子中,表示在表1中的14位由ER的13位到0位填充,其高效位由作为符号扩展立即数的最高效位填满。在第二例子中,因为14位已经预先填充在ER中,在向左移动14位以保留该值之后,立即数的14位填充在ER的13位至0位。算术移位作为例子使用。除了该方法,如上所述,27位至14位可以用于扩展来填满,其中13位至0位保持在其本身。经由上述处理,扩展指令的重复执行可以无限地扩展该偏移及立即值。
下面,将对可以发生在扩展指令后的指令的运算加以说明。
首先,来看在数据移位指令中的指令在由存储器读取数据或在存储器上写数据作为地址偏移是如何操作的,该指令为了便于说明将如表2所定义。
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
IR[15:0]
& | & | & | & | # | # | # | # | * | * | * | * | % | % | % | % |
&:IR[15:12],操作码(加载/存储)
#:IR[11:8],源/目标寄存器
*:IR[7:4],偏移数据
%:IR[3:0],索引寄存器
表2,32位的加载/存储指令的一个实施例
当执行指令时,在状态寄存器的第19位的扩展标志首先在译码/控制部分50得到指示。若标志值为‘0’(负逻辑时为‘1’),则有效地址代表将偏移与索引寄存器的值相加的值。在此,有一项目考虑了存储器的数据宽度,因为可以使用各种架构,例如这样的架构:四个8位存储器为了便于使用者使用而可以彼此并联连接,或者两个16位存储器可以彼此并联连接。如上所述,假设在实施例中四个8位存储器可以彼此并联连接。此时,当加入偏移时,必须向左移动偏移值两位。因此,低效的两位并无意义,因为现行予以执行的指令为32位加载/储存指令。但在标志值为‘1’(在负逻辑为‘0’)时,则表示扩展指令被随后执行,以移位将在ER处扩展的偏移。因此,有效地址将ER值向左移位四位,其中包含在该指令中的四位的低效两位向左移2位,以加入索引寄存器的值,然后获得有效地址。当然,将要向左移的ER的量根据定义可以改变,但在此为了指令的一贯性其定义为只移位4位。在此例子中,32位的加载/储存指令使得使用者可以访问地址直到索引寄存器+63。但是,若偏移超过63,使用扩展指令将超过15的值移入ER,且执行32位的加载/储存指令以使得使用者可访问所需的地址。其作为简单的算术表示法表示如下:
当E标志为‘0’;
EA←(零扩展IR[7:4]&“00”)+Rindex
当E标志为‘1’;
EA←(0<<4&IR[5:4]&“00”)+Rindex
再者,考虑当数据移位指令的立即数据值被立即加载时,指令将被定义为如表3所示。
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
IR[15:0]
& | & | & | & | # | # | # | # | * | * | * | * | * | * | * | * |
&:IR[15:12],操作码(加载立即数据)
#:IR[11:8],目标寄存器
*:IR[7:0],编码立即数据
表3,加载立即数据指令的例子
由表3可明显看出,例如,带符号7位的立即值,-256至+255可以通过该加载立即指令加载至目标寄存器中。但,若想要的立即值超出-256至+255的范围,则首先执行扩展指令以将所需的立即值至ER,然后,执行加载立即指令以取得想要的立即值。在此例子中,加载立即指令锁存到指令寄存器40中。当译码器/控制部分50产生一控制信号时,为了执行它,指示状态寄存器的第19位。若标志值为‘0’(负逻辑为‘1’),比如指令中的7位立即值,-256至+255,被加载到目标寄存器中并向左移位4位,然后指令的低效4位被填入到移位位置中以加载所需大小的立即值。当然,向左移位的ER量或填入其中的值可根据指令的定义而改变。若32位的立即值由定义的指令要求,则扩展指令被执行两次以移动高效24位进入ER。此后,执行加载立即指令以取得32位立即值。其作为简单的算术表示法表示如下:
当E标志为‘0’;
Rdst←带有符号的扩展IR[7:0]
当E标志为‘1’;
Rdst←ER<<4&IR[3:0]
第三,见ALU指令的实施例,指令将定义如以下的表4所示:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
IR[15:0]
& | & | & | & | & | & | & | & | # | # | # | # | * | * | * | * |
&:IR[15:8],操作码(ALU指令)
#:IR[7:4],目标寄存器
*:IR[3:0],若E=‘0’,源寄存器,除了它为立即寄存器
表4,ALU指令的一个实施例
一般而言,ALU指令的操作可分为以下几种类型:
①在两寄存器之间计算
②计算寄存器的值与立即值
③计算寄存器及存储器的内容
但在一般RISC架构中,除了加载/储存指令外,其余指令并不能由存储器存取。因此,在此所例示的架构中,ALU的计算依据一般RISC的特点而分为两种类型,如在表4中所示的代表一种指令。ALU指令被锁存在指令寄存器40中。当译码/控制部分50产生用于执行的控制信号时,指示状态寄存器的E标志。若E标志为‘0’(在正逻辑中)时,则指令表示在两寄存器间的计算。若E标志为‘1’,则指令表示一个寄存器的值与立即数据间的计算。在第一状况中,任选16个寄存器的一个通过从指令的第三位至最低位的4位的选择,以便执行具有目标寄存器(IR[7:4])的计算,从而将所得值记录在目标寄存器中。相反地,第二状况中,指定目标寄存器及ER寄存器,以将其内容与立即值相加。换句话说,当计算将要执行立即数据值时,首先执行扩展指令以向ER移位一个所需的量,然后,执行ALU指令。该例子将以简单的算术表示法表示如下:当E标志为‘0’时;
Rdst←Rdst+Rdst
当E标志为‘1’时;
Rdst←(ER<<4&IR[3:0])+Rdst
第四,注意分枝的例子,指令将被定义如表5所表示。15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
IR[15:0]
& | & | & | & | & | & | & | & | * | * | * | * | * | * | * | * |
&:IR[15:8],操作码(分支指令)
*:IR[7:0],偏移数据
表5,分支指令的实施例
其中可能有各种类型的分支指令,但使用如表5中所示实施例的程序计数器(PC)相关指令。该指令被锁存在指令寄存器40中。当译码/控制部分50产生用于执行的控制信号时,E标志同时被指向其中。若E标志为‘0’,则具有符号的8位加入到程序计数器中。例如程序计数器的分支范围可以是-512至+511。在此,数据长度为8位和范围为-512至+511的理由是为什么在实施例中所采用的架构使用16位指令和4个具有8位数据宽度且彼此并联连接的存储器。因此,因为最低效位为无意义,所以由在以‘0’填入最低效位,所以大致偏移值变成9位。相反地,若E标志为‘1’,则在程序计数器上的ER寄存器被表示加入偏移值中,以使得有效地址被分支。换句话说,若予以分支的地址超出-512至+511的范围,则首先执行扩展指令,以向ER移位所需的量,然后,执行分支指令以得到必要的偏移。该例子将以如下简单的算术表示加以说明:
当E标志为‘0’时,
EA←(具有符号IR[7:0]&‘0’)+PC
当E标志为‘1’时,
EA←(ER<<9&IR[7:0]&‘0’)+PC
到目前为止,在几个典型的指令中,扩展指令将通过一些实施例加以解释。虽然并未在此加以说明,但为偏移所需的指令或者用在相同上述方法中的扩展指令的立即值为可取,因此,并未限制扩展量。
现在看,当执行扩展指令是若发生异常则如何处理,问题的核心是在执行扩展指令时若发生异常,如何保持状态直到异常处理完成,及在异常处理后偏移或立即值如何回复。如上所述,本发明使用E标志和ER以解决以上这些问题。为了实施这些方法,ER被放置在SPR中并在状态寄存器的一位中被指定,以使用作为如第4图所示的E标志。当然,这是用于在各种方法中,实施这些解答目的的简单例子,以实施本发明的硬件。
依据本发明,多数MUC用于在堆栈区域储存一些元件,以防止程序流程在发生异常时进行异常处理前遗失。实施例的架构同时在堆栈区域储存程序计数器及状态寄存器的值。因此,当程序计数器及状态寄存器的值被取回时,本发明可以解决在被指示有关保持状态的E标志值中的问题,若在执行扩展指令时发生异常,及ER可以由软件取得,在异常处理以前将ER值移位至堆栈区域,然后,在异常处理之后,由堆栈区域取回ER值。
Claims (13)
1、一种中央处理器,包括:包含多个通用寄存器的寄存器文件、用于操作处理存储在所述寄存器文件中的数据的操作处理器、包含存储有操作码和操作数的操作数字段的通用指令、和用于对通用指令进行译码的指令译码器,由此产生控制信号和基于该控制信号的操作处理器的控制操作,该中央处理器包括:
扩展指令,其包含存储操作码和操作数的操作数字段;和
存储扩展数据的扩展寄存器;
其中所述指令译码器接收扩展指令的操作码,并且对接收的操作码进行译码,以此将存储在扩展指令的操作数字段中的操作数作为扩展数据存储到扩展寄存器中,以及在执行扩展指令之后执行通用指令期间,操作处理存储在通用指令的操作数字段中的操作数和存储在扩展寄存器中的扩展数据,以此使用该操作处理的结果作为执行通用指令的操作数。
2、权利要求1所述的中央处理器,其中存储在扩展寄存器中的扩展数据能够存储到存储器或通用寄存器中,以及存储在通用寄存器或存储器中的数据能够作为扩展数据存储到扩展寄存器中。
3、权利要求1所述的中央处理器,其中当两个或多个的扩展数据连续时,对通过先前执行的扩展指令存储在扩展寄存器中的扩展数据和存储在将要执行的扩展指令的操作数字段中的操作数进行操作处理,从而将作为扩展数据的操作处理数据的结果存储到扩展寄存器中。
4、权利要求1所述的中央处理器,其中,根据在执行通用指令期间存储在扩展寄存器中的扩展数据的值,使通用指令的操作数作为执行通用指令的操作数来使用,或者操作处理存储在扩展寄存器中的扩展数据和存储在通用指令的字段中的数据,从而将操作处理的结果作为执行通用指令的操作数来使用。
5、权利要求1所述的中央处理器,其中,根据在执行通用指令期间存储在扩展寄存器中的扩展数据的值,使存储在扩展指令的操作数字段中的操作数作为扩展数据在扩展寄存器中得到使用,或者对存储在扩展寄存器中的扩展数据和存储在扩展指令的操作数字段中的操作数进行操作处理,从而将操作处理结果存储到扩展寄存器中。
6、权利要求1所述的中央处理器,其中对存储在扩展寄存器中的扩展数据和存储在通用指令的操作数字段中的操作数进行操作处理,从而执行通用指令来产生用于执行通用指令的操作数,并将指示扩展寄存器为空的数据存储到扩展寄存器中。
7、一种中央处理器,包括:包含多个通用寄存器的寄存器文件、用于对存储在所述寄存器文件中的数据进行操作处理的操作处理器、包含存储操作码和操作数的操作数字段的通用指令、和指令译码器,用于对通用指令进行译码并由此产生控制信号和基于该控制信号产生操作处理器的控制操作,该中央处理器包括:
扩展指令,其包含存储操作码和操作数的操作数字段;和
存储扩展数据的扩展寄存器,可为程序员访问;和
通过扩展指令激活的扩展标志,
其中,根据扩展标志是激活还是未激活即该扩展标志的值,指令译码器对扩展指令的操作码进行译码,如果在第一扩展指令执行期间该扩展标志是未激活的,即该扩展标志的值=0,从而将存储在扩展指令的操作数字段中的操作数作为扩展数据存储到扩展寄存器中并激活扩展标志,以此来使用存储在通用指令的操作数字段中的操作数,或者如果在通用指令执行期间该扩展标志是激活的,即该扩展标志的值=1,通过对存储在扩展寄存器中的扩展数据和存储在通用指令的操作数字段中的操作数进行操作处理所获得的操作处理的结果作为用于执行通用指令的操作数来激活扩展标志。
8、权利要求7所述的中央处理器,其中存储在扩展寄存器中的扩展数据能够存储到存储器或通用寄存器中,并且存储在通用寄存器或存储器中的数据能够作为扩展数据存储到扩展寄存器中。
9、权利要求7所述的中央处理器,还包括能够改变扩展标志的指令,以此改变扩展标志的状态。
10、权利要求7所述的中央处理器,其中,根据扩展标志的状态,使存储在扩展指令的操作数字段中的操作数作为扩展数据存储到扩展寄存器中,或者对存储在扩展寄存器中的扩展数据和存储在扩展指令的操作数字段中的操作数进行操作处理,从而将操作处理的结果存储到扩展寄存器中。
11、一种中央处理器包括:
用于操作中央处理器的机器指令集;
一个或多个用在中央处理器中通讯的总线媒质;
至少连接一个或多个媒质中的一个媒质的扩展寄存器,该扩展寄存器存储扩展数据;
机器指令集中的扩展指令,该扩展指令包括扩展操作码和一个或多个操作字段,所述操作码指示中央处理器将扩展数据与机器指令集中的一部分通用指令相连接,从而形成扩展指令。
12、权利要求11所述的中央处理器,还包括:
指示扩展寄存器激活/未激活状态的扩展标志。
13、权利要求12所述的中央处理器,其中所述扩展标志是专用寄存器中的单一字节。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN02130292.8A CN1271523C (zh) | 2002-08-21 | 2002-08-21 | 具有扩展指令的中央处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN02130292.8A CN1271523C (zh) | 2002-08-21 | 2002-08-21 | 具有扩展指令的中央处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1477520A CN1477520A (zh) | 2004-02-25 |
CN1271523C true CN1271523C (zh) | 2006-08-23 |
Family
ID=34144445
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN02130292.8A Expired - Lifetime CN1271523C (zh) | 2002-08-21 | 2002-08-21 | 具有扩展指令的中央处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1271523C (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101639931B (zh) * | 2008-07-30 | 2012-05-02 | 瑞鼎科技股份有限公司 | 存储器及像素数据储存方法 |
US8635415B2 (en) * | 2009-09-30 | 2014-01-21 | Intel Corporation | Managing and implementing metadata in central processing unit using register extensions |
US9003170B2 (en) * | 2009-12-22 | 2015-04-07 | Intel Corporation | Bit range isolation instructions, methods, and apparatus |
US9507599B2 (en) * | 2013-07-22 | 2016-11-29 | Globalfoundries Inc. | Instruction set architecture with extensible register addressing |
US10620957B2 (en) | 2015-10-22 | 2020-04-14 | Texas Instruments Incorporated | Method for forming constant extensions in the same execute packet in a VLIW processor |
CN105677298B (zh) * | 2015-12-30 | 2018-03-27 | 李朝波 | 一种将计算机指令中立即数扩展的方法和装置 |
CN111061510B (zh) * | 2019-12-12 | 2021-01-05 | 湖南毂梁微电子有限公司 | 一种可扩展的asip结构平台及指令处理方法 |
CN114116005B (zh) * | 2021-11-29 | 2022-12-23 | 海飞科(南京)信息技术有限公司 | 基于aigpu架构的立即数数据存储方法 |
-
2002
- 2002-08-21 CN CN02130292.8A patent/CN1271523C/zh not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
CN1477520A (zh) | 2004-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112069459B (zh) | 用于稀疏-密集矩阵乘法的加速器 | |
CN113762490B (zh) | 使用列折叠和挤压的稀疏矩阵的矩阵乘法加速 | |
US9495153B2 (en) | Methods, apparatus, and instructions for converting vector data | |
CN101523443B (zh) | 图形处理单元中的可编程混合模式 | |
CN112711443B (zh) | 用于执行16位浮点向量点积指令的系统和方法 | |
US10007605B2 (en) | Hardware-based array compression | |
USRE40509E1 (en) | Methods and apparatus for abbreviated instruction sets adaptable to configurable processor architecture | |
US20070074007A1 (en) | Parameterizable clip instruction and method of performing a clip operation using the same | |
US20110047360A1 (en) | Processor | |
US6247116B1 (en) | Conversion from packed floating point data to packed 16-bit integer data in different architectural registers | |
CN101030192A (zh) | 管理处理器的寄存器的方法和系统 | |
CN101055644A (zh) | 绘图处理装置及其处理指令、数据和逻辑单元操作的方法 | |
CN1655118A (zh) | 处理器和编译器 | |
CN1271523C (zh) | 具有扩展指令的中央处理器 | |
CN1846193A (zh) | 用于并行数据转换的方法、设备及指令 | |
CN1806225A (zh) | 在具有多指令集的数据处理设备内的指令编码 | |
CN102591662B (zh) | 一种绘制皮肤图片的方法及装置 | |
CN1278931A (zh) | 特别适于译码数字音频信号的数字信号处理器 | |
WO2021120713A1 (zh) | 一种数据处理方法、解码电路及处理器 | |
CN1790310A (zh) | 用于单指令、多数据执行引擎标志寄存器的评估单元 | |
US8707013B2 (en) | On-demand predicate registers | |
CN1260546A (zh) | 在手持装置中存储和检索数据的方法及装置 | |
CN116097212A (zh) | 用于16比特浮点矩阵点积指令的装置、方法和系统 | |
US7003651B2 (en) | Program counter (PC) relative addressing mode with fast displacement | |
CN1826582A (zh) | 数据存取程序指令编码 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
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 | ||
CX01 | Expiry of patent term |
Granted publication date: 20060823 |
|
CX01 | Expiry of patent term |