CN1207527A - 微处理器 - Google Patents

微处理器 Download PDF

Info

Publication number
CN1207527A
CN1207527A CN98103188A CN98103188A CN1207527A CN 1207527 A CN1207527 A CN 1207527A CN 98103188 A CN98103188 A CN 98103188A CN 98103188 A CN98103188 A CN 98103188A CN 1207527 A CN1207527 A CN 1207527A
Authority
CN
China
Prior art keywords
instruction
register
microprocessor
interrupt
address
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
Application number
CN98103188A
Other languages
English (en)
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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Publication of CN1207527A publication Critical patent/CN1207527A/zh
Pending legal-status Critical Current

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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明公开了一种32位处理器。指令集的位长固定到16位。SLIL和SLIH指令使4Gb的地址空间限制到高2Mb并且执行一长寄存器转移指令。因此,与相关技术不同的是,一寄存器转移指令能够利用三条指令而不是五条指令而执行。

Description

微处理器
本发明涉及一种RISC(精减指令集计算机)型的微处理器。
RISC处理器具有允许计算量最小化的一组指令。RISC处理器的流水线处理允许所有指令以相同的短周期执行。一种32位RISC处理器的指令的位长固定为32位。因此,在这种RISC处理器中,指令的位长被固定并且指令被简化。对于寄存器间的操作,大多数指令能够在一个时钟周期内执行,因此其流水线处理能够容易地实现。
在常规32位RISC处理器中,指令的位长固定为32位。但是,32位固定长度的指令的代码效率不高。在一种具有可变长度指令的RISC处理器中,译码部分的负担变大。另外,对于可变长度指令,执行流水线处理需要长的时间。为解决这一问题,需要一种分支高速缓存。因此,电路规模变大。为解决这种问题,本发明的申请人已经提出了一种用于改进代码效率的具有16位固定长度指令的RISC处理器。
一种32位RISC处理器具有4兆字节的地址空间。在该RISC处理器中,当逻辑地址转换为物理地址时,为了映射地址至4兆字节的空间,提供了lp.x宏指令。一般地,lp.x宏指令通过将LPI指令分成四条指令而实现。因此,长型(32位)寄存器转移指令需要用于10字节的五条指令。
换句话说,通常,采用示于图17A、17B的LPI(加载立即位置)指令。该LPI指令由图17A所示的16位组成。在该LPI指令中,高六位表示操作码。接下来的两位BP表示示于图17B的位图的位置。当BP的值为“11”时,它表示最高位置(HH)。当BP的值为“10”时,它表示次高位置(HL)。当BP的值为“01”时,它表示第三高位置(LH)。当BP的值为“00”时,它表示最低位置(LL)。如图17A所示,接下来的八位表示由其立即值指定的操作数。因此,在长寄存器转移指令中,该LPI指令分成每条都由八位组成的四条指令。因此,长寄存器分支至少需要五条指令。
因此,本发明的目的是提供一种微处理器,该微处理器允许缩短寄存器转移指令,并且因而改进代码效率。
本发明是一种精减指令集微处理器,包括一指令译码器,用于将一指令处理的任务分成一些简单级并且通过流水线处理译码该任务;一算术逻辑单元,用于执行运算操作;一寄存器组,一高速乘法/除法单元,用于高速地执行乘法和除法;一中断控制器,用于执行中断处理;以及一指令集,用于将整个地址空间限制到一高端地址空间并执行长寄存器转移指令。
该高速乘法/除法单元独立于该算术逻辑单元执行乘法和除法。该寄存器组包括一专用控制寄存器组和一通用寄存器组。该通用寄存器组包括一累加器、一堆栈指针、和一中断堆栈指针。
该通用寄存器组还包括一些协处理器寄存器。这些协处理器寄存器包括一些用于允许改变一转移指令并借此以相同的操作码执行多个指令的寄存器和一些用于实现简单堆栈的寄存器。
整个地址空间是4Gb(兆字节)。该指令集的位长固定为16位。所限制的地址空间是2Mb。
因此,根据本发明,提供了允许将整个地址空间限制到一高端地址空间的SLIL和SLIH指令。利用SLIL和SLIH指令,该地址空间被限制到高2Mb,以便利用三条指令执行一长寄存器转移指令。
结合附图的描述,根据下面的最佳实施例的详细描述,本发明的目的、特性和优点将变得更加明白。
图1是一方框图,示出了根据本发明的一微处理器的内部结构;
图2是一方框图,用于说明根据本发明的微处理器的外部接口;
图3是一示意图,用于说明根据本发明的微处理器的一些通用寄存器;
图4是一示意图,用于说明根据本发明的微处理器的一些协处理器寄存器;
图5是一示意图,用于说明根据本发明的微处理器的协处理器的MCR;
图6是一示意图,用于说明根据本发明的微处理器的操作码映象;
图7是一示意图,用于说明根据本发明的微处理器的操作码映象;
图8是一示意图,用于说明根据本发明的微处理器的操作码映象;
图9是一示意图,用于说明根据本发明的微处理器的一存贮器空间;
图10是一示意图,用于说明根据本发明的微处理器的一些中断;
图11是一示意图,用于说明根据本发明的微处理器的一些中断;
图12是一示意图,用于说明根据本发明的微处理器的一些中断;
图13A、13B是用于说明根据本发明的微处理器的一命令的示意图;
图14A、14B是用于说明根据本发明的微处理器的一命令的示意图;
图15是一示意图,用于说明根据本发明的微处理器的一存贮器空间;
图16A、16B是用于说明根据本发明的微处理器的一命令的示意图;以及
图17A,17B是用于说明根据本发明的微处理器的一命令的示意图。
接下来,将根据下面的顺序描述本发明的一个实施例。
1、处理器概要
2、处理器结构
3、五级流水线
4、寄存器
5、地址空间
6、中断处理
7、单步功能
8、指令集
9、寄存器间转移指令
1、处理器概要
根据本发明的微处理器是一RISC(精减指令集计算机)型32位处理器。
在一RISC处理器中,指令集限制到最小数量的指令。所有的指令几乎在相同的时间周期内执行。在根据本发明的微处理器中,指令的位长固定为16位。提供了一种面向正交指令集的代码效率。在该正交指令集中,每条指令执行一非常基本的任务。每条正交指令不与其它的指令重叠。例如,该指令集包括立即指令、寄存器传送指令、算术指令、比较指令、逻辑指令、移位指令、交换/扩展指令、NOP指令、位处理指令、乘法/除法指令、存贮器传送指令、协处理器传送指令、以及转移指令。
在该RISC处理器中,当读一算术指令的源操作数并且写一计算结果时,一寄存器被用来代替存贮器。大多数指令在一个时钟周期中执行。因此,多个指令能够容易地流水线化。该RISC具有32个通用寄存器。
该微处理器执行五级流水线处理。对于一个ALU,该微处理器具有一个周期的滚筒式移位器。另外,该微处理器具有在一个周期中执行(16×16)乘法和在10(18)周期中执行(16(32)÷16(32))除法的一高速乘法/除法器。
除了采用RISC技术外,该微处理器还采用了CISC(复杂指令集计算机)和DSP(数字信号处理器)技术,从而显著地改进代码效率、位处理、乘法/除法运算、中断处理,等等。
由于该微处理器具有以下特点:
1)向量指令表,
2)中断堆栈指针,以及
3)用于存储除法指令结果的专用寄存器,因此,该微处理器高速而多级地执行中断处理。
利用所述向量指令表,当该微处理器接收一中断时,通过五级流水线而直接读取向量指令表。一转移指令被直接写入向量指令表。因此,该微处理器能够高速接收中断。另外,利用中断堆栈指针和返回指令,该微处理器能够接收多级中断。当该微处理器接收一中断时,只自动存储PC(程序计数器)。利用该返回指令,仅仅在堆栈指针处的PC被写回到内部PC。一长除法指令的结果被存入一专用寄存器,以便其它的中断能够被接收、其它的指令在一指令一时钟周期的基础上被执行。但是,在一延迟时间片期间,禁止中断。
该微处理器具有强大的调试支持功能,利用该调试支持功能,不需采用外部电路就能容易地实现一目标调试程序。该调试支持功能的特点是:
1)具有五级流水线的单步功能,
2)两个中断指令,
3)三个地址中断通道,
4)两个数据中断通道,以及
5)ICE(内部电路仿真程序)中断端(break terminal)。
利用CISC中的单步功能,该处理器能够容易地一步一步地执行程序。但是,在一延迟时间片中,下一指令产生一中断。利用两个具有不同向量地址的中断指令,当一中断指令被导入一RAM区中时,能够指定数量不受限定的断点。利用在五级流水线中执行的地址中断指针的三个通道,一中断指针能够指定到上述两个中断指令不使用的一ROM区。另外,利用在五级流水线中执行的数据中断指针的两个通道,一中断指针能够容易地指定到一内部RAM。利用ICE中断端,控制能够容易地以外部专送到ICE。另外,由用户定义的一协处理器能够连接到该微处理器。
2、处理器结构
图1示出了根据本发明的微处理器1的结构。在图1中,微处理器1连接到数据总线2、指令总线3和协处理器总线4。微处理器1具有终端组5,它包括一复位端、一时钟端、一外部中断(7:0)端、一NMI(非屏蔽中断)端、和一PMI(电源管理中断)端。
当一系统是具有微处理器1的结构时,如图2所示,微处理器1通过数据总线2和指令总线3连接到存贮控制器21。另外,微处理器1通过协处理器总线4连接到协处理器22。
参照图1,微处理器1包括指令译码器6、专用控制寄存器组7、中断控制器8、通用寄存器组9、旁路逻辑10、ALU(算术逻辑单元)11、乘法/除法计算部分12、以及地址计算部分13。
指令译码器6执行流水线处理。该流水线处理将一指令任务分成读取操作、ALU计算、存储器访问操作和回写操作等多个简单级。当一指令从一个级到另一个级时,下一个指令被放在空白级中。当指令逐级处理时,在一个指令完成之前,另一个指令能够被处理。如上所述,根据本发明的微处理器采用五级流水线。
专用控制寄存器组7具有十个32位寄存器。该专用控制寄存器组7用于状态功能、中断控制功能、和ICE支持功能。
中断控制器8执行中断处理。在该中断处理中,采用了一向量指令表和一中断堆栈指针。中断响应功能在一个周期(最小)至三个周期(最大)中完成。当接收一中断时,通过五级流水线而直接读取该中断向量指令表,一转移指令被写入该向量指令表。
通用寄存器组9具有32个32位寄存器(R0-R31)。寄存器R1是一个累加器(ACC)。寄存器R30是一堆栈指针(SP)。寄存器R31是一中断堆栈指针(ISP)。该ISP用作中断处理、异常处理、中断返回处理等等的堆栈指针。包括ACC、SP、ISP的通用寄存器R0至R31的初值未定义。
旁路逻辑10是用于执行五级流水线处理的逻辑。ALU11具有在一个周期中的滚筒式移位器。乘法/除法计算单元12具有在一个周期中的16×16位高速乘法器件和在10(18)个周期中的16(32)÷16(32)位高速除法器件。因此,由于除法通过这样的独立器件来实现,因此,在计算一除法的同时,另一指令能够被执行。该地址计算部分13包括一程序计数器(PC),一增量部分,以及一数据整直器。
3、五级流水线
微处理器1执行五级流水线处理。指令总线3、数据总线、和协处理器总线4都提供有独立的输入和输出。这些总线连接到外部高速缓存(缓冲器)和协处理器寄存器。
在流水线处理中,一指令的任务在读取指令操作级、ALU计算操作级、存贮器访问操作级、回写操作级中被处理。对于转移指令、加载指令、返回指令,存在三种类型的延迟时隙。例如,当一转移指令被译码和分析时,下一指令的地址被产生。这种情况称作转移延迟时隙。当一加载指令被执行时,加载数据在下一加载指令的ALU周期中出现在外部总线上。在一加载指令中,对于刚被前一指令加载的寄存器不能被访问。这种情况称作加载延迟时隙。当执行一返回指令时,从堆栈中获得的程序计数器(PC)的值不能用于流水线处理。这种情况称作返回时隙。
一转移指令具有一个延迟时隙。一加载指令具有一个延迟时隙,一返回指令具有三个时隙。
4、寄存器
4-1:通用寄存器
图3示出了通用寄存器的结构。如图3所示,根据本发明的微处理器具有32个通用寄存器R0-R32。由于指令按照正交性而构成,因此,除了特殊指令外,它们被用作计算寄存器,R1寄存器是一累加器(ACC),它被用作立即/位处理指令的一操作数。作为例外,寄存器R30是一堆栈指针(SP),它被用作调用指令和返回指令的堆栈指针。寄存器R31是一中断堆栈指针(ISP),它被用作中断处理、异常处理、中断返回处理的一堆栈指针。ACC、SP、ISP的初值未定义。
4-2、协处理器寄存器
图4示出了协处理器寄存器的结构。如图4所示,能够采用总共128个协处理器寄存器,它们是作为Cop0寄存器的G0-G31、C0-C31和作为Cop1寄存器的G0-G31、C0-C31。用于在协处理器寄存器和通用寄存器之间传送数据的指令已经被定义。
Cop0寄存器的G0-G31寄存器具有总共10个系统控制协处理器寄存器,剩下的寄存器为将来的应用保留。该系统控制处理器寄存器具有以下功能:
Gop0G0:SR(状态寄存器)
         存储-标志
Cop0G1:MCR(机器控制寄存器)
         控制-机器
Cop0G2:IBR(中断基址寄存器)
         设置中断向量基址地址。
Gop0G3:ICR(中断控制寄存器)
         控制一中断
Cop0G4:IMR0(中断模式寄存器0)
         控制外部中断模式0
Cop0G5:IMR1(中断模式寄存器1)
         控制外部中断模式1
Cop0G6:JBR(跳转基址寄存器)
         设置一特定跳转基址寄存器
Cop0G10:IBP0(中断断点0)
         设置一指令中断地址
Cop0G11:IBP1(中断断点1)
         设置一指令中断地址
Cop0G12:IBP2(中断断点2)
         设置一指令中断地址
Cop0寄存器的G1寄存器是MCR(机器控制寄存器)。利用MCR,通过改变一转移指令,相同的操作模式允许执行四条指令,
图5示出了Cop0寄存器的G1寄存器,G1寄存器是MCR。
MCR的位长是16位。最高有效位15是D32En。利用D32En,能够实现32位除法。当D32En为“0”时,禁止32位除法,当D32En为“1”时,允许32位除法。MCR的14、13、12位分别为SGS、BCS、JCS。SGS为段选择。BCS和JCS为代码选择,利用SGS,BCS、JCS,相同的操作代码允许执行四条指令。
位10是SSE,它是单步允许。当SSE为“0”时,单步功能禁止,当SSE为“1”时,单步功能允许。位11是DBSSE,它是调试中断单步允许。当DBSSE为“0”时,调试中断单步功能禁止。当DBSSE为“1”时,调试中断单步功能允许。5至3位是CKDMD,它表示CPU时钟的频率分割。
2位是AIDEn,它表示与一控制位对应的加载/存储指令的改变。当AIDEn为“1”时,执行一后增量加载/后减量存储操作。当AIDEn为“0”时,执行一正常加载/存储操作。
图6-8示出了操作代码的映象。在图6-8中,对于具有“*”的指令,根据转移指令的变化,相同操作代码允许执行多个指令。
Cop0寄存器的G3寄存器是ICR(中断控制寄存器)。ICR能够用作一简单堆栈。
图9示出了Cop0寄存器的G3寄存器。G3寄存器(ICR)的位15表示中断测试。当位15没有被置位时,产生只读模式。当位15被置位时,产生允许写模式。利用位15,能够执行一中断测试。
G3寄存器的位14是IICEN。位14表示使用的是一内部中断控制器,还是一外部中断控制器。
G3寄存器的位13是MNIP,它是一未决位。G3寄存器的位12-5是IntP(7:0),它们是中断未决位。
G3寄存器的位4、3、2、1分别是BPAIE、PAIE、OAIE、JOAIE、AIE,它们实现简单的堆栈。
BPAIE、PAIE、OAIE、JOAIE、AIE是四级中断允许堆栈。当执行一中断时,标志如下左移,并且“0”填入LSB(最低有效位)。
PAIE→BPAIE
OAIE→PAIE
JOAIE→OAIE
O→AIE
当执行RETI指令时,标志如下右移:
AIE←JOAIE
JOAIE←OAIE
OAIE←PAIE
PAIE←BPAIE
当处理一中断时,PC被自动存储。中断控制寄存器将由软件存储。但是,高至四级的多个中断,利用在位4-0的BPAIE、PAIE、OAIE、JOAIE和AIE,中断控制位被自动存储。
利用两个通道CH0和CH1,数据访问的中断采用下列的协处理器。
Cop1G4:DABR0(数据地址中断寄存器0)
        包括在执行的中断处的数据地址。
Cop1G5:WDBR0(写数据中断寄存器0)
        包括执行的中断的数据值
Cop1G6:WDMR0(等数据屏蔽寄存器0)
        控制屏蔽
Cop1G7:DBCR0(数据中断控制寄存器0)
        设置数据访问模式
Cop1G8:DBRR0(数据中断运行寄存器0)
        运行数据中断
Cop1G9:FMWR(闪速存贮器写寄存器)
        选择写一闪速存贮器
Cop1G10:DABR1(数据地址中断寄存器1)
        包括执行的中断的数据地址。
Cop1G11:DAMR1(数据地址屏蔽寄存器1)
        控制屏蔽
Cop1G12:WDBR1(写数据中断寄存器1)
        包括执行的中断的地址
Cop1G13:WDMR1(写数据屏蔽寄存器1)
        控制屏蔽
Cop1G14:DBCR1(数据中断控制寄存器1)
        设置数据访问模式
Cop1G15:DBRR1(数据中断运行寄存器1)
         运行数据中断
5、地址空间
图10示出了微处理器1的地址空间。微处理器1的地址空间是用于每个指令和数据的4Gb空间。微处理器1通过-64-字外部寄存器与外部协处理器交换数据和指令。
当检测到一外部复位时,控制转移到地址FFFF_FE60h并执行其中的指令。向量地址在两个字(四个字)的区间中指定。最开始的一个字是一转移指令。接下来的一个字是一延迟时隙。根据中断基址寄存器(IBR)(Cop2G2),一向量地址能够指定在256字节范围中的任意位置。指令/数据被映射到相同空间。利用常规加载指令,一个值能够从ROM空间中获得。
6、中断处理
图11示出了中断的优先级。在图11中,一SSTEP(单步)中断指定为最高优先级。按下来是PMI(电源管理中断)、NMI(非屏蔽中断),等等。有八个外部中断Exint0-Exint7。每个中断有一向量偏移地址。利用向量地址偏移,一向量地址如下获得。
向量地址={IBR[31:8],向量偏移地址}
IBR[31:8]是中断基址寄存器(IBR.(CopG2),它指定中断向量表的基址。当执行SYS CALL/BREAK/DEBREAK指令时,控制转移到其向量地址。转移指令直接写入向量指令表。当一中断被接收时,通过五级流水线直接读取向量指令表的向量地址。因此,在最少一个周期中的高速中断能够被执行。
当接收一中断时,ICR(Cop0G3)的AIE标志被禁止。一中断在不是中断禁止期的一个时钟周期中被接收。中断禁止期的例子是一返回延迟时隙和一转移延迟时隙。在一PMI中断期内,其它中断被禁止,直到一返回延迟时隙为止。在一NMI中断期间,仅仅接收PMI中断,直到一返回延迟时隙为止。当检测到一预定的变化点时,PMI中断和NMI中断被接收。当检测到一预定级时,其它的中断被接收。当一中断被接收时,一存储地址被指定,如图12所示。
对应于数据访问的中断的执行如下。
1)执行一对应于在数据读状态中的数据地址的比较结果的中断:
所执行的中断的数据地址写入DABRO(Cop1G4)。“1”和“0”被设置到DBCRO(Cop1G7)的MRD和MWR。一读方法(SB、SHW或SW)根据DBCRO的BE[3:0]选择。“1”被设置到DBRR0(Cop1G8)的RUN。
2)执行对应于在数据写状态中的数据地址的比较结果的中断:
所执行的中断的数据地址写入DABRO。“1”和“0”被设置到DBCRO的MWR和MRD。一写方法(LBU、LB、LHWU、LHW或LW)根据DBCRO的BE[3:0]选择。为了忽略数据比较条件,许多“0”屏蔽到WDMRO的所有位。“1”设置到DBRRO的RUN。
3)执行对应于在数据写状态中的数据的比较结果的中断:
所执行的中断的数据地址写入DABRO。“1”和“0”被设置到DBCRO的MWR和MRD。一写方法(LBU、LB、LHWU、LHW、或LW)根据DBCRO的BE[3:0]而选择。所执行的中断的数据值写入WDBRO。为了屏蔽一特定位,“0”被设置到WDMRO的相关位。“1”设置到DBRRO的RUN。
4)执行仅仅对应于在数据读/写状态中的数据地址的比较结果的中断:
所执行的中断的数据地址被写入DABRO。“1”被设置到DBCRO的MRD和MWR。读/写方法(SB/LBU/LB、SHW/LHWU/LHW,或SW/LW)根据DBCRO的BE[3:0]而选择。为了忽略数据比较条件,多个“0”屏蔽到WDMRO的所有位。“1”设置到DBRRO的RUN。
5)执行对应于在数据读状态的数据地址的比较结果和在数据写状态的数据的比较结果的中断:
所执行的中断的数据地址被写入DABRO。“1”被设置到DBCRO的MWR和MRD。读/写方法(SB/LBU/LB、SHW/LHWU/LHW,或SW/LW)根据DBCRO的BE[3:0]而选择。为了屏蔽一特定位,“0”被设置到WDMRO的相应位。“1”被设置到DBRRO的RUN。当中断在CHO和CH1上发生时,控制跳转到相同的向量地址。DBRRO的RUN表示在其上已经产生中断的通道。
7、单步功能
微处理器1具有单步功能,用于对每条指令进行异常处理。当MCR(Cop0G1)的DBSSE(调试中断单步允许位)被置位并且然后执行DBREAK指令时,控制进入一单步异常处理循环。此时,所有的中断被禁止执行。
单步异常处理例程以下列方式编程
1)用于单步功能的被执行的主程序的起始地址设置到中断堆栈指针(1SP(R31))。
2)置位MCR[10]的SSE标志。
3)当执行RETI指令时,控制通过三个时隙而转移到用于单步功能的被执行的主程序的所述地址。
4)当执行主程序的一个指令时,控制自动返回到所述单步异常处理例程。这时,清除MCR[10]的SSE标志。
5)然后,在该单步异常处理例程中,置位MC[10]的SSE标志并且执行RETI指令。于是,控制转移到用于单步功能的所执行的主程序的下一指令的地址。
除非控制退出单步异常处理例程,上述的处理被重复。为了退出单步处理例程,则在单步异常处理例程中使SSE标志无效。被执行的程序写入程序计数器,然后执行RETI指令。
8、指令集
微处理器1具有一面向代码效率的正交指令集。指令的位长固定为16位。操作码的位长固定为六位。在一寄存器间的指令中,五位指定给其操作数。由于有32个通用寄存器,因此,利用五位操作数,能够有效地定义代码。
该指令集中具有立即指令、寄存器传送指令、算术指令、比较指令、逻辑指令、移位指令、交换/扩展指令、NOP指令、位处理指令、乘法/除法指令、存贮器传送指令、协处理器传送指令、以及转移指令。
1)、立即指令
LPI:根据字节位置加载立即值至累加器。存储累加器的非指定字节的内容。
LI:根据所选择的字的字节加载立即值至累加器。
LSI,LSIU:加载立即值至一指定的通用寄存器。
SLIL,SLIH:根据字节位置加载立即值至累加器、存储累加器的非指定字节的内容。
2)、寄存器专送指令
MOV:在通用寄存器之间传送数据。
3)、算术指令
ADDSI、ADDSIU:立即加指令
ADD、ADDC:寄存器间加指令
ADDU:寄存器间无符号加指令
SUB、SUBB:寄存器间减指令
SUBU:寄存器间无符号减指令
4)比较指令
COMPI、COMPIU:立即比较指令
COMP:寄存器间比较指令,与SUB指令的功能相同,不返回结果至DEST1。
COMPU:寄存器间无符号比较指令,与SUBU指令的功能相同。不返回结果至DEST1。
5)逻辑指令
AND、OR、XOR、NOR:逻辑运算指令。
6)移位指令
SLLV,SRLV,SRAV间接移位指令。SLLV是寄存器间接逻辑左移指令。SRLV是寄存器间接逻辑右移指令。SRAV是寄存器间接算术右移指令。
SLL、SRL、SRA:立即移位指令。SLL是立即逻辑左移指令。SRA是立即逻辑右移指令。SRA是立即算术右移指令。
RR:执行包括进位位的右移操作,右移次数由立即数指定,存储移出位(在执行前的LSB)至进位位。MSB(最高有效位)存储进位位的值。
RL:执行包括进位位的左移操作。存储移出位(在执行前的MSB)至进位位。MSB存储进位位的值。
7)、交换/扩展指令
XCB:在SRC[15:8]和SRC1[7:0]之间交换指令。
EXU:零扩展指令,用于一低位字节。
EXS:符号扩展指令,用于一低位字节。
XCHW:在SRC[OPS:16]和SRC1[15:0]之间交换指令。
EXHZ:零扩展指令,用于一低位半字。
EXHZ:符号扩展指令,用于一低位半字。
8)、NOP指令
NOP:无操作。
9)、位处理指令
BS、BT、BTR、BTS、BTC:位处理指令
10)、乘法/除法指令
MULTU:用于SRC1[15:0]和SRC2[15:0]的无符号乘法指令
DIVU:用于SRC1和SRC2的无符号除法指令
MULT:用于SRC1[15:0]和SRC2[15:0]的乘法指令
DIV:用于SRC1和SRC2的除法指令。
MTHI:从一通用寄存器至-HI寄存器的传送指令
MILO:从一通用寄存器至-LO寄存器的传送指令
MFHI:从一HI寄存器至一通用寄存器的传送指令
MFHO:从一LO寄存器至一通用寄存器的传送指令
11)存贮器传送指令
SW、SHW、SB:存储数据至一由索引表示的存贮器空间的地址。
LW、LHW、LB:从一由索引表示的存贮器空间的地址加载数据。
LHWU,LBU:从一由索引表示的存贮的空间的地址加载数据。
12)协处理器传送指令
CTC1:从累加器至协处理器控制寄存器1专送指令
CFC1:从协处理器控制寄存器1至累加器传送指令
MTC0:从一通用寄存器至协处理器通用寄存器0传送指令
MTC1:从一通用寄存器至协处理器通用寄存器1传送指令
MFC0:从协处理器通用寄存器0至一通用寄存器传送指令
MFC1:从协处理器通用寄存器1至一通用寄存器传送指令
SWC0、SWC1:将来自一协处理器通用寄存器的指令存储到由一索引表示的存贮器空间的地址。
LWC0、LWC1:从一由索引表示的存贮器空间的地址加载指令至一协处理器通用寄存器。
13)转移指令
<1>程序计数器相关指令
RJ、RJAL:程序计数器相关转移指令。RJAL存储程序计数器的值至一由预减堆栈指针表示的地址,然后转移。一返回指令使控制返回到RJAL指令的下一指令。
RBEQ/RBZ,RBNE/RBNZ:条件PC相关转移指令
RBLE、RBGZ:条件程序计数器相关转移指令
RBLT、RBGT:条件程序计数器相关转移指令
RBLTAL、RBGEAL:条件程序计数器相关转移指令
RBBE、RBAE:条件程序计数器相关转移指令
RBBL、RBAB:条件程序计数器相关转移指令
RBBLAT、RBAEL:条件程序计数器相关转移指令
<2>、寄存器间接
JR、JLR:寄存器间接转移指令
JER/JZR、JNER/JNZR:条件寄存器间接转移指令
JLER、JGER:条件寄存器间接转移指令
JLTR、JGTR:条件寄存器间接转移指令
JLTALR,JGEALR:条件寄存器间接转移指令
JER/JZR、JNER/JNZR:条件寄存器间接转移指令。
JBER、JAER/JNCR:条件寄存器间接转移指令。
JBR/JCR、JAR:条件寄存器间接转移指令。
JBALAR、JAEAIR:条件寄存器间接转移指令。
<3>程序计数器段
J、JAL:程序计数器转移指令
BEQ/BZ、BNE/BNZ:条件程序计数器段转移指令
BLE、BGE:条件程序计数器段转移指令。
BLT、BGT:条件段转移指令。
BLTAC、BGEAC:条件程序计数器段转移指令,
BEQ/BZ、BNE/BNZ:条件程序计数器段转移指令。
BBE、BAE:条件程序计数器段转移指令。
BBL、BAB:条件程序计数器段转移指令。
BBLAL、BAEAC:条件程序计数器段转移指令。
<4>系统调用和返回指令
RET:用于跳转和链接语句。在存贮堆栈指针表示的地址存储器的值至程序计数器之后,后增量堆栈指针。RET指令使控制返回到转移指令的下一指令。
  SYSCALL、BREAK、DBREAK:软件中断(异常处理)指令。在存储程序计数器的值至一由预减量ISP(指令堆栈指针)表示的地址后,向左移位ICR的四级中断允许标志。RETI指令使控制返回到下一指令。
RETI:使控制从SYSCALL/BREAK/DBREAK指令的异常处理返回。在存储由ISP表示的一存储器的值至程序计数器后,后减ISP并且向右移位ICR的四级中断允许标志。RETI指令使控制返回到SYSCALL/BREAK/DBREAK指令的下一指令。
JIBIO:至{JBR[31211],段地址[9:0],0}的转移指令。
9、寄存器间转移指令
如上所述,根据本发明的微处理器的指令集包括SLIL(Small LoadImmediate Low)和SLIH(Small Lood Immediate High),这两个指令相应于字节位置加载一立即数的值至累加器。如图13A和14A所示,SLIL和SLIH指令的位长为16位。这些指令的高六位是操作码。接下来的十位是一立即数的数的操作数。SLIL和SLIH指令使立即数的值相应于字节位置存储到累加器。
如图13B所示,SLIL指令的0位固定为“0”。1-10位是十位的立即操作数。11-31位全为“0”。如图14B所示,SLIH指令的11-20位是十位的立即操作数。21-31位全为“1”。
如图15所示,32位RISC处理器具有4Gb的地址空间(0000_0000至FFFF_FFFF)。利用SLIL和SLIH指令,地址空间限制到高2Mb(FFE0_0000至FFFF_FFFF),并且一长转移指令利用三个指令而执行。
当控制转移到FFE4_5678h时,通常,采用下面五条指令。
          LPI LL,#78h
          LPI LH,#56h
          LPI HL,#E4h
          LPI HH,#FFh
          JR ACC(寄存器间转移指令)
另一方面,利用SLIL和SLIH指令,这样的操作能够利用下列三条指令执行。
          SLIL,#33Ch,
          SLIH,#08Ah
          JR ACC(寄存器间转移指令),
即,欲转移的立即地址用二进制形式表示如下。
      1111_1111_1110_0100_0101_0110_0111_1000
给出的SLIL指令的立即数33Ch由十位表示如下。
             11_0011_1100
而给出的SLIH指令的立即值08Ah由十位表示如下。
             00_1000_1010
因此,SLIL指令的33Ch的比特位置能够表示为图16A所示。另外,SLIH的08Ah的比特位置能够表示为图16B所示。因此,累加器的值变为:
        1111_1111_1110_0100_0101_0110_0111_1000。因此,控制能够被转移到FFE4_5678。
因此,利用SLIL和SLIH指令,地址空间被限制到高2Mb,并且一长寄存器转移指令利用三条指令而执行。为了代码兼容性,用于分配程序的代码空间至高2Mb(FFE00000h至FFFFFFFFh)的编译器选择被配置。
根据本发明,利用SLIL和SLIH指令,地址空间被限制到高2Mb并且利用三条指令执行长寄存器转移指令,由于常规的五条指令减为三条指令,因此改进了代码效率。在具有许多转移指令的程序中,其效能可提高约5%左右。
另外,根据本发明,寄存器组包括一些协处理器寄存器。该处理器寄存器包括允许改变一转移指令并且利用相同操作码执行多条指令的多个寄存器。因此,利用相同操作码,能够定义多个指令。而且,该协处理器寄存器包括实现简单堆栈的一些寄存器,利用该简单堆栈,能够自动存储中断控制位。
虽然本发明已经根据一最佳实施例示出和描述,但是应该明白,在不脱离本发明的精神和范围的情况下,本领域的技术人员可以在其形式和细节上作出前述的和其它各种改变、省略和增加。

Claims (12)

1、一种精减指令集微处理器,包括:
一指令译码器,用于将一指令处理的任务分成一些简单级并且通过流水线处理译码该任务;
一算术逻辑单元,用于执行运算操作;
一寄存器组;
一高速乘法/除法单元,用于高速地执行乘法和除法;
一中断控制器,用于执行中断处理;以及
一指令集,用于将整个地址空间限制到一高端地址空间并执行长寄存器转移指令。
2、如权利要求1所述的微处理器,其特征在于:所述高速乘法/除法单元独立于所述算术逻辑单元执行乘法和除法。
3、如权利要求1所述的微处理器,其特征在于:所述寄存器组包括一专用控制寄存器组和一通用寄存器组。
4、如权利要求3所述的微处理器,其特征在于:通用寄存器组包括一累加器。
5、如权利要求3所述的微处理器,其特征在于:通用寄存器组包括一堆栈指针。
6、如权利要求3所述的微处理器,其特征在于:通用寄存器组包括一中断堆栈指针。
7、如权利要求3所述的微处理器,其特征在于:通用寄存器组还包括一些协处理器寄存器。
8、如权利要求7所述的微处理器,其特征在于:协处理器寄存器包括一些用于允许改变一转移指令并借此以相同的操作码执行多个指令的寄存器。
9、如权利要求7所述的微处理器,其特征在于:协处理器包括一些用于实现简单堆栈的寄存器。
10、如权利要求1所述的微处理器,其特征在于:整个地址空间是4Gb。
11、如权利要求1所述的微处理器,其特征在于:所述指令集的位长固定为16位。
12、如权利要求1所述的微处理器,其特征在于:所限制的地址空间是2Mb。
CN98103188A 1997-06-20 1998-06-20 微处理器 Pending CN1207527A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP16435897 1997-06-20
JP164358/97 1997-06-20

Publications (1)

Publication Number Publication Date
CN1207527A true CN1207527A (zh) 1999-02-10

Family

ID=15791639

Family Applications (1)

Application Number Title Priority Date Filing Date
CN98103188A Pending CN1207527A (zh) 1997-06-20 1998-06-20 微处理器

Country Status (2)

Country Link
US (1) US6223275B1 (zh)
CN (1) CN1207527A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100407131C (zh) * 2004-04-19 2008-07-30 沖电气工业株式会社 运算处理装置
CN100492279C (zh) * 2006-07-27 2009-05-27 中国科学院计算技术研究所 对复杂指令译码生成微码的译码装置和方法
TWI570738B (zh) * 2013-03-29 2017-02-11 萬國商業機器公司 具有使用歷程記錄的主記憶體模組以及此主記憶體模組於電腦系統之應用

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6421744B1 (en) * 1999-10-25 2002-07-16 Motorola, Inc. Direct memory access controller and method therefor
KR100337149B1 (ko) * 2000-07-05 2002-05-18 권 기 홍 프로그램 테스트 및 디버깅이 용이한 중앙처리장치
JP2003162433A (ja) * 2001-11-27 2003-06-06 Fujitsu Ltd メモリシステム
GB2503471B (en) * 2012-06-27 2015-05-06 Nordic Semiconductor Asa Integrated-circuit radio
GB2521607B (en) 2013-12-23 2016-03-23 Nordic Semiconductor Asa Integrated-Circuit Radio

Family Cites Families (5)

* Cited by examiner, † Cited by third party
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
DE69231451T2 (de) * 1991-03-11 2001-05-10 Mips Technologies,Inc. Rückwärts kompatible Rechnerarchitektur mit erweiterten Wortbreiten und Adressraum
JP3904244B2 (ja) * 1993-09-17 2007-04-11 株式会社ルネサステクノロジ シングル・チップ・データ処理装置
US5420809A (en) * 1993-11-30 1995-05-30 Texas Instruments Incorporated Method of operating a data processing apparatus to compute correlation
US5764939A (en) * 1995-10-06 1998-06-09 Lsi Logic Corporation RISC processor having coprocessor for executing circular mask instruction

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100407131C (zh) * 2004-04-19 2008-07-30 沖电气工业株式会社 运算处理装置
CN100492279C (zh) * 2006-07-27 2009-05-27 中国科学院计算技术研究所 对复杂指令译码生成微码的译码装置和方法
TWI570738B (zh) * 2013-03-29 2017-02-11 萬國商業機器公司 具有使用歷程記錄的主記憶體模組以及此主記憶體模組於電腦系統之應用

Also Published As

Publication number Publication date
US6223275B1 (en) 2001-04-24

Similar Documents

Publication Publication Date Title
CN1194292C (zh) 具有改良的指令集体系结构的微处理器
CN1280714C (zh) 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器
CN1497435A (zh) 处理器
CN1191535C (zh) 处理数据的装置和方法
CN1178145C (zh) 高效执行特长指令字的处理器
CN1095116C (zh) 执行两种指令长度代码的处理机及其指令码输入装置
CN1153129C (zh) 用于处理器定制操作的设备
CN1302380C (zh) 处理器和编译器
CN1186718C (zh) 微控制器指令集
CN1482540A (zh) 编译程序、编译程序装置和编译方法
CN1226026A (zh) 数据处理装置
CN1472646A (zh) 适应性强具备最佳化功能的编译装置
CN1886744A (zh) 在可扩展的处理器架构中增加高级指令所用的方法和装置
CN1684058A (zh) 处理器
CN1656495A (zh) 标量/矢量处理器
CN1688966A (zh) 包括对准或者广播指令的多媒体协处理器控制机制
CN1303502A (zh) 循环寄存器文件
CN1399736A (zh) 用于处理器的转移指令
CN1467622A (zh) 处理器
CN1115631C (zh) 具有risc结构的八位微控制器
CN1279435C (zh) 数字信号处理器
CN1862486A (zh) 数字信号处理器
CN1207527A (zh) 微处理器
CN1114153C (zh) 支持程序编码长度减小的微处理器
CN1254740C (zh) 使用协处理器的数据处理

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication