CN1479892A - 多周期指令 - Google Patents

多周期指令 Download PDF

Info

Publication number
CN1479892A
CN1479892A CNA01820175XA CN01820175A CN1479892A CN 1479892 A CN1479892 A CN 1479892A CN A01820175X A CNA01820175X A CN A01820175XA CN 01820175 A CN01820175 A CN 01820175A CN 1479892 A CN1479892 A CN 1479892A
Authority
CN
China
Prior art keywords
instruction
produce
pressed
state
instructions
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
CNA01820175XA
Other languages
English (en)
Other versions
CN1308815C (zh
Inventor
C・P・罗思
C·P·罗思
辛格
R·P·辛格
奥弗坎普
G·A·奥弗坎普
Original Assignee
Analog Devices Inc
Intel 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 Analog Devices Inc, Intel Corp filed Critical Analog Devices Inc
Publication of CN1479892A publication Critical patent/CN1479892A/zh
Application granted granted Critical
Publication of CN1308815C publication Critical patent/CN1308815C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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 or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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
    • 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/30134Register stacks; shift 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)

Abstract

在一个实施例中描述了流水线处理器,它包括具有多个阶段的执行流水线和适应于确认停顿信号以便在执行流水线的一个阶段中停顿该多周期指令的多周期指令(MCI)控制器。该MCI控制器适应于在多周期指令被停顿时产生多条指令到流水线的后续阶段。

Description

多周期指令
背景
本发明涉及在可编程处理器内执行多周期指令。
如计算机或数字信号处理系统中的微处理器那样的可编程处理器能支持一个或多个“多周期指令”,其中单条机器指令指导处理器完成多个操作。例如,典型的多周期指令是Load Multiple指令,其中处理器响应单条机器指令完成一系列加载操作。另一个例子是“Push-Pop Multiple”指令,它指导处理器将多个寄存器压入堆栈或从中弹出。因为多周期指令将多个操作包装成单条机器指令,它们通常减少程序的大小并改善可编程处理器的操作有效性。
附图说明
图1是示出按本发明的流水线化的可编程处理器的例子的方框图。
图2是示出按本发明的实施例的示例性执行流水线的原理图。
图3示出将多个寄存器存入堆栈的示例性状态图。
图4示出将多个寄存器弹出堆栈的示例性状态图。
图5示出执行Link指令的示例性状态图。
图6示出执行Unlink指令的示例性状态图。
图7是示出停顿(Stall)控制器的示例性实施例的原理图。
图8是停顿生成器的时序图。
图9是产生对多周期指令的停顿信号的示例性线路的原理图。
图10和11是示例性地址生成线路的原理图。
描述
图1是示出支持一系列多周期机器指令的可编程处理器2的方框图。处理器2包括执行流水线4和控制单元6。控制单元6按照系统时钟控制通过流水线的指令流和数据流。在处理指令期间,控制单元6能指导流水线的各种组件解码指令并正确地完成对应的操作,包括如将结果写回到存储器。
指令能加载到流水线4的第一阶段并经过后续的阶段处理。每一阶段通常与其他阶段同时处理。数据按照系统时钟信号在流水线的各阶段之间通过。指令的结果以快速的顺序出现在流水线4的终点。
如下详述,处理器2支持若干多周期指令。为响应多周期指令,停顿控制器8能通过确认停顿信号9停顿一个或多个流水线4的阶段,以防止流水线4取出或解码另外指令。在停顿一部分流水线4之后,多周期指令(MCI)控制器5能确认MCI信号7并指导流水线4完成由当前多周期指令确定的附加操作。
图2示出按本发明的示例性流水线4。例如,流水线4能具有5个阶段:指令取出(IF),指令解码(DEC),地址计算(AC),执行(EX),和写回(WB)。指令能在第一阶段(IF)由取指令单元11从如主存储器或指令缓存器那样的存储设备取出,并在第二阶段(DEC)由指令解码单元12解码。在下一时钟周期,结果经过第三阶段(AC),在那里数据地址生成器13计算任何存储器地址来完成该操作。
在执行阶段(EX),执行单元5完成指令的操作,如加或乘两个数。执行单元能包含用于完成操作的特定硬件,如一个或多个算术逻辑单元(ALU),浮点单元(FPU)和循环移位器。各种数据能应用于执行单元15,如由数据地址生成器13产生的地址,从存储器取出的数据或从数据寄存器14取出的数据。在最后阶段(WB),结果被写回到数据存储器或数据寄存器14。
多周期指令其表现如从流水线4的解码阶段产生的在若干时钟周期执行的多条指令。当MCI执行时,它在流水线的解码阶段保持停顿,而在MCI控制器5的控制下,向流水线4往下发送多个“子指令”。MCI控制器5按一系列内部状态机操作以便指导指令解码单元12在MCI执行期间分派若干操作在一系列时钟周期内完成。
停顿控制器8能通过确认停顿信号停顿流水线4的一个或多个周期,以防止流水线4取出和解码另外的指令。具体说来,流水线4的阶段包括如阶段寄存器19那样的存储线路,用于存储当前阶段的结果。阶段寄存器通常按照系统时钟锁存结果。阶段寄存器19接收停顿信号9,它控制阶段寄存器19是否所存从以前阶段得到的结果。以此方式,停顿控制器8能停顿流水线4的一个或多个阶段以响应多周期指令。
由处理器支持的多周期指令的例子包括Push Pop Multiple机器指令,Link指令和Unlink指令。Push Pop Multiple指令指导处理器2压入1到N个数据寄存器和/或指针寄存器,或从中弹出。Push Pop Multiple在等于要访问的寄存器目的时钟周期数中保持停顿在解码阶段。下面说明了压入多个机器指令的例子:
[--sp]=(r7-r4,p5-p0)
在此例中,单条机器指令指导处理器2压入4个数据寄存器(r4到r7)和6个指针寄存器(p0到p5)。通常,单条机器指令能指定零个或多个数据寄存器和零个或多个指针寄存器,只要指定至少一个寄存器即可。
图3示出在MCI控制器5内用于将多个寄存器压入堆栈的状态机的示例性状态图30。如下所述,MCI控制器5响应压入多个指令按照状态图30操作,以便压入一个或多个寄存器。在按状态30操作时,MCI控制器5能确认一个或多个MCI信号7,包括指导解码器12产生用于分派一个数据寄存器的压入操作的流水线控制信号的PUSH_DREG信号,和指导解码器12产生用于分派一个指针寄存器的压入操作流水线控制信号的PUSH_PREG信号。此外,MCI控制器5能确认D_REG_PRESELECT信号,它初始化一个计数器,其计数指出压入哪个数据寄存器;或能确认P_REG_PRESELECT信号,它初始化一个计数器,其计数指出压入哪个指针寄存器。MCI控制器5也可确认MCI_PRESTALL信号,它指导停顿控制器5在下个时钟周期停顿流水线4。
下面的表综合了引起在MCI控制器5中PUSH MULTIPLE状态机从一个状态向另一状态迁移的条件,以及被确认的相应输入信号,其中D是指出要压入的数据寄存器的指令位,P是指出要压入的指针寄存器的指令位,DR是指出要压入的起始数据寄存器的指令字段,PR是指出要压入的起始指针寄存器的指令字段,D_TAG表示被压入的当前数据寄存器,P_TAG表示被压入的当前指针寄存器,DMAX表示在可用的数据寄存器范围内最大的数据寄存器,PMAX表示在可用的指针寄存器范围内最大的指针寄存器:
    路径 条件   输出
    34A 不压入多条指令   无
    34B D&!P&DR=DMAX   插入PUSH_DREG
    34C !D&P&PR=PMAX   插入PUSH_PREG
    34D D&!P&DR=DMAX-1   插入PUSH_DREG插入D_REG_PRESELECT
    34E   插入PUSH_DREG
    34F !D&P&PR=PMAX-1   插入PUSH_PREG插入P_REG_PRESELECT
    34F′ D&P&DR=DMAX&PR=PMAX   插入PUSH_DREG
    34G   插入PUSH_PREG
    34H D&!P&DR<DMAX-1   插入PUSH_DREG插入D_REG_PRESELECT插入MCI_PRESTALL
    34H′ D&P&DR<DMAX   插入PUSH_DREG插入D_REG_PRESELECT插入MCI_PRESTALL
    34I ((!P&D_TAG<DMAX-1)   插入PUSH_DREG
(P&D_TAG<DMAX))   插入D_REG_PRESELECT插入MCI_PRESTALL
    34J !D&P&PR<PMAX-1   插入PUSH_PREG插入P_REG_PRESELECT插入MCI_PRESTALL
    34J′ D&P&DR=DMAX&PR<PMAX   插入PUSH_DREG插入D_REG_PRESELECT插入MCI_PRESTALL
    34K PR=PMAX-1   插入PUSH_PREG插入P_REG_PRESELECT
    34L P&D_TAG=DMAX&P_TAG<PMAX   插入PUSH_DREG插入D_REG_PRESELECT插入MCI_PRESTALL
    34M P&D_TAG=DMAX&P_TAG=PMAX   插入PUSH_DREG插入D_REG_PRESELECT
    34N P_TAG<PMAX-1   插入PUSH_PREG插入P_REG_PRESELECT插入MCI_PRESTALL
    34O D_TAG=DMAX-1&!P   插入PUSH_DREG插入D_REG_PRESELECT
                           表1
最初,MCI控制器5在WAIT状态开始,直到由取单元11取出指令并由解码单元12解码。若指令不是PUSH POP MULTIPLE指令,MCI控制器5如路径34A所示返回到WAIT状态。
若指令是PUSH POP MULTIPLE指令,但只命令处理器2压入单个数据寄存器,状态确认PUSH_DREG信号并经过路径34B返回到WAIT状态。若指令是PUSHPOP MULTIPLE,它命令处理器2压入单个指针寄存器,状态机确认PUSH_PREG信号并经过路径34C返回到WAIT状态。
若指令规定压入两个数据寄存器或两个指针寄存器,状态机分别改变状态到状态32A或状态32C。状态机经路径34D或34F迁移到这些状态,并在迁移到32A时确认PUSH_DREG信号,或在迁移到32C时确认PUSH_PREG信号。此外,在沿路径34D迁移时,状态机确认D_REG_PRESELECT信号,它初始化指出压入哪个数据寄存器的计数器。类似地,在沿路径34F迁移时,状态机确认P_REG_PRESELECT信号,它初始化指出压入哪个指针寄存器的计数器。
状态机从状态32A经路径34E返回到WAIT状态。在此迁移期间,MCI控制器5再次确认PUSH_DREG并不确认D_REG_PRESELECT,使得解码单元23分派另外数据寄存器的压入操作。类似地,状态机从状态32C经路径34G返回到WAIT状态。在此迁移其间,MCI控制器5确认PUSH_PREG并不确认P_REG_PRESELECT,引起执行单元15压入另外的指针寄存器。
对需要指令解码单元12分派三个或更多数据寄存器压入操作的PUSH POPMULTIPLE指令,状态机从WAIT状态经路径34H迁移到状态32B。在迁移其间,MCI控制器8确认PUSH_DREG信号并确认D_REG_PRESELECT,引起执行单元15压入第一数据寄存器。此外,MCI控制器5确认MCI_PRESTALL信号,引起停顿控制器8在下一时钟周期停顿流水线4的一个或多个阶段。例如,在一个实施例中,停顿控制器8确认STALL_DEC,停顿流水线4的解码阶段。一旦在状态32B中,MCI控制器5继续压入数据寄存器,直到两个寄存器保持要被压入。例如,若指令要求压入6个数据寄存器,MCI控制器5往复路径34I三次,每次压入一个数据寄存器,直到当前要被压入的数据寄存器等于最大可用的数据寄存器(DMAX)减一。即当两个数据寄存器保持要被压入为止。
在往复路径34I时,MCI控制器5确认PUSH_DREG信号,D_REG_PRESELECT信号和MCI_PRESTALL信号。当两个数据寄存器保持要被压入时,MCI控制器5经路径340迁移到状态32A,同时压入一个余下的数据寄存器。在此迁移期间,MCI控制器5不确认MCI_PRESTALL。在MCI控制器5往复路径34E并压入余下的数据寄存器之后的一个时钟周期,指令解码器12接收新的指令。
类似地,对需要指令解码单元12分派三个或多个指针寄存器压入操作的PUSH POP MULTIPLE指令,状态机从WAIT状态经路径34J迁移到状态32D。在迁移期间,MCI控制器确认PUSH_PREG信号并确认P_REG_PRESELECT,引起执行单元15压入第一指针寄存器。此外,MCI控制器5确认MCI_PRESTALL信号,引起停顿控制器8停顿流水线4的一个或多个阶段。在状态32D,MCI控制器5通过往复路径34N压入指针寄存器,直到两个指针寄存器保持要被压入。在往复路径34N时,MCI控制器5确认PUSH_DREG信号,D_REG_PRESELECT信号和MCI_PRESTALL信号。一旦两个数据寄存器保持被压入,MCI控制器5经路径34K迁移到状态32C,同时压入一个指针寄存器。在此迁移期间,MCI控制器5不确认MCI_PRESTALL。以此方式,流水线4在MCI控制器5经路径34G迁移到WAIT状态并压入余下的指针寄存器后的下一时钟周期上重新继续操作。
除了上述功能,PUSH POP MULTIPLE指令能指定多个数据寄存器和多个指针寄存器。通常,状态机30设计成首先压入数据寄存器,随后是指针寄存器,虽然本发明不限于此。
对于指定压入单个数据寄存器和单个指针寄存器的PUSH MULTIPLE指令,MCI控制器5经路径34F’迁移到状态32C,并确认PUSH_DREG信号以压入数据寄存器。接着,MCI控制器5经路径34G迁移回到WAIT状态并压入指针寄存器。
对指定压入一个数据寄存器和多个指针寄存器的PUSH MULTIPLE,MCI控制器5经路径34J’迁移到状态32D,并确认PUSH_DREG信号,D_REG_PRESELECT信号和MCI_PRESTALL信号以压入数据寄存器。接着,MCI控制器5通过往复路径34N压入除二个指针寄存器外的所有指针寄存器,通过往复路径34K压入一个指针寄存器并通过往复路径34G压入最后指针寄存器并返回WAIT状态。
最后,对指定压入多个数据寄存器及至少一个指针寄存器的PUSH POPMULTIPLE指令,MCI控制器5经路径34H’迁移到状态32B,并确认PUSH_DREG信号,D_REG_PRESELECT信号和MCI_PRESTALL信号以压入第一个数据寄存器。接着,MCI控制器5通过往复34I’压入除一个数据寄存器外的所有数据寄存器。若该指令指定压入单个指针寄存器,MCI控制器5通过往复路径34M压入最后的数据寄存器并通过往复路径34G压入单个指令寄存器。否则,MCI控制器5通过往复路径34L压入最后的数据寄存器并通过往复路径34N压入多个指针寄存器,若必要34N在34K和34G之前。
图4示出在MCI控制器5中状态机的示例性状态图40,用于从堆栈弹出多个寄存器。MCI控制器5按照状态图40操作,以响应PUSH POP MULTIPLE指令,它指定一个或多个寄存器从存储器中堆栈弹出。在按状态图40操作时,MCI控制器5能确认一个或多个MCI信号7,它包括指导流水线4弹出一个数据寄存器的POP_DREG信号,和指导流水线4弹出一个指针寄存器的POP_PREG信号。此外,MCI控制器5能确认初始化指出弹出哪个数据寄存器的计数器的D_REG_PRESELECT信号,或初始化指出弹出哪个指针寄存器的计数器的P_REG_PRESELECT信号。MCI控制器5还能确认MCI_PRESTALL信号,以在下一时钟周期停顿流水线4。
下表综合了引起MCI控制器5在状态图40的状态之间迁移的条件和被确认的对应输出,其中D是指出要弹出一个数据寄存器的指令位,P是指出要弹出一个指针寄存器的指令位,DR是指出从堆栈弹出的最后数据寄存器的指令字段,PR是指出从堆栈弹出的最后指针寄存器的指令字段,D_TAG表示弹出的当前数据寄存器,P_TAG表示弹出的当前指针寄存器,DMAX表示在可用的数据寄存器范围内的最大数据寄存器,PMAX表示在可用的指针寄存器范围内的最大指针寄存器:
    路径 条件   输出
    44A 不压入多条指令   无
    44B P&!D&PR=PMAX   插入POP_PREG
    44C !P&D&DR=DMAX   插入POP_DREG
    44D P&!D&PR=PMAX-1   插入POP_PREG插入P_REG_PRESELECT
    44E   插入POP_PREG
    44F !P&D&DR=DMAX-1   插入POP_DREG插入D_REG_PRESELECT
    44F′ D&P&DR=DMAX&PR=PMAX   插入POP_PREG
    44G   插入POP_DREG
    44H P&!D&PR<PMAX-1   插入POP_PREG插入P_REG_PRESELECT插入MCI_PRESTALL
    44H′ D&P&PR<PMAX   插入POP_PREG
  插入P_REG_PRESELECT插入MCI_PRESTALL
    44I ((!D&P_TAG>PR+1)(D&P_TAG>PR))   插入POP_PREG插入P_REG_PRESELECT插入MCI_PRESTALL
    44J !P&D&DR<DMAX-1   插入POP_DREG插入D_REG_PRESELECT插入MCI_PRESTALL
    44J′ D&P&PR=PMAX&DR<DMAX   插入POP_PREG插入P_REG_PRESELECT插入MCI_PRESTALL
    44K D_TAG=DR+1   插入POP_DREG插入D_REG_PRESELECT
    44L D&P_TAG=PR&DR<DMAX   插入POP_PREG插入P_REG_PRESELECT插入MCI_PRESTALL
    44M D&P_TAG=PR&DR=DMAX   插入POP_PREG插入P_REG_PRESELECT
    44N D_TAG>DR+1   插入POP_DREG插入D_REG_PRESELECT插入MCI_PRESTALL
    44O P_TAG=PR+1&!D   插入POP_PREG插入P_REG_PRESELECT
                           表2
最初,MCI控制器5在WAIT状态开始,直到由取指令单元11取出指令并由解码单元12解码。若指令不是PUSH POP MULTIPLE指令,MCI控制器5如路径44A所示返回到WAIT状态。
若指令是PUSH POP MULTIPLE指令,它指导处理器2弹出单个指针寄存器而无数据寄存器,则MCI控制器5确认POP_DREG信号并经路径44B返回到WAIT状态。若指令是POP MULTIPLE命令并命令处理器2弹出单个数据寄存器,则MCI控制器5确认POP_DREG信号并经路径44C返回到WAIT状态。
若该指令指定弹出两个指针寄存器或数据寄存器,MCI控制器5分别经路径44D或44F改变状态到状态42A或状态42C。MCI控制器5确认POP_PREG信号同时迁移到状态42A,或确认POP_DREG信号同时迁移到状态42C。此外,在沿路径44D迁移时,MCI控制器5确认初始化计数器的P_REG_PRESELECT信号,其计数指出弹出哪个指针寄存器。类似地,在沿路径44F迁移时,MCI控制器5确认初始化计数器的D_REG_PRESELECT信号,其计数指出弹出哪个数据寄存器。
在弹出两个指针寄存器的第一个之后,MCI控制器5从状态42A经路径44E返回到WAIT状态。在此迁移期间,MCI控制器5再次确认POP_PREG并不确认P_REG_PRESELECT,引起执行单元15弹出另外指针寄存器。类似地,在弹出两个数据寄存器的第一个之后,MCI控制器5从状态42C经路径44G返回到WAIT状态。在此迁移期间,MCI控制器5确认POP_DREG并不确认D_REG_PRESELECT,引起执行单元15弹出另外数据寄存器。
对于需要指令解码单元12分派三个或更多指针寄存器的弹出操作的POPMULTIPLE指令,MCI控制器5从WAIT状态经路径44H迁移到状态42B。在迁移期间,MCI控制器8确认POP_PREG信号并确认P_REG_PRESELECT,引起执行单元15弹出第一个指针寄存器。此外,MCI控制器5确认MCI_PRESTALL信号,引起停顿控制器8在下一时钟周期停顿流水线的一个或多个阶段。一旦在状态42B,MCI控制器5继续弹出指针寄存器,直到只有两个指针寄存器保持要被弹出。例如,若指令要求压入6个指针寄存器,MCI控制器5往复路径44I三次,每次弹出一个指针寄存器,直到要弹出的当前指针寄存器等于最大可用指针寄存器(PMAX)减一,即到只有两个寄存器保持要被弹出时。
在往复路径44I时,MCI控制器5确认POP_PREG信号,P_REG_PRESELECT信号和MCI_PRESTALL信号。当两个指针寄存器保持要弹出时,MCI控制器经路径440迁移到状态42A,同时弹出一个余下的指针寄存器。在此迁移期间,MCI控制器5不确认MCI_PRESTALL。指令解码器12在MCI控制器5往复路径44E并弹出余下的指针寄存器之后的周期接收新的指令。
类似地,对需要指令解码单元12分派三个或更多数字寄存器弹出操作而没有指针寄存器弹出操作的PUSH POP MULTIPLE指令,MCI控制器5从WAIT状态经路径44J迁移到状态42D。在迁移期间,MCI控制器8确认POP_DREG信号并确认D_REG_PRESELECT,引起执行单元15弹出第一指针寄存器。此外,MCI控制器5确认MCI_PRESTALL信号,引起停顿控制器8停顿流水线4的一个或多个阶段。在状态42D,MCI控制器5通过往复路径44N弹出数据寄存器,直到两个数据寄存器保持要被弹出。在往复路径44N的同时,MCI控制器5确认POP_DREG信号,D_REG_PRESELECT信号和MCI_PRESTALL信号。一旦两个数据寄存器保持要被弹出,MCI控制器5经路径44K迁移到状态42C,同时弹出一个数据寄存器。在此迁移期间,MCI控制器5不确认MCI_PRESTALL。然后,MCI控制器5经路径44G迁移到WAIT状态,并弹出余下的数据寄存器。
除上述功能以外,PUSH POP MULTIPLE指令能指定弹出多个数据寄存器和多个指针寄存器。通常,状态机30设计成首先弹出指针寄存器,随后是数据寄存器,虽然本发明不限于这样。
对指定弹出单个指针寄存器和单个数据寄存器的PUSH POP MULTIPLE指令,MCI控制器5经路径44F’迁移到状态44C,并确认POP_PREG信号以弹出指针寄存器。接着,MCI控制器5经路径44G迁移回到WAIT状态,确认POP_DREG信号并弹出数据寄存器。
对指定弹出一个指针寄存器和多个数据寄存器的PUSH POP MULTIPLE指令,MCI控制器5经路径44J’迁移到状态42D并确认POP_PREG信号,P_REG_PRESELECT信号和MCI_PRESTALL信号以弹出指针寄存器。接着,MCI控制器5通过往复路径44N弹出除两个数据寄存器外的所有数据寄存器,通过往复路径44K弹出一个数据寄存器,并弹出最后的数据寄存器,并通过往复路径44G返回到WAIT状态。
最后,对指定弹出多个指针寄存器和至少一个数据寄存器的POP MULTIPLE指令,MCI控制器5经路径44H’迁移到状态42B,并确认POP_PREG信号和P_REG_PRESELECT信号以弹出第一指针寄存器。接着,MCI控制器5通过往复路径44I弹出除一个指针寄存器的所有指针寄存器。若指令指定弹出单个数据寄存器,MCI控制器5通过往复路径44M弹出最后的指针寄存器,并通过往复路径44G弹出单个数据寄存器。否则,MCI控制器5通过往复路径44L弹出最后指针寄存器,并通过往复路径44N弹出多个数据寄存器,若需要,在路径44N后跟随44K和44G。
指导流水线处理器2按本发明完成多重操作的另外的指令例子是Link指令和Unlink指令。Link指令通常在调用子程序时使用,并引起流水线处理器4在堆栈上压入子程序的返回地址,在堆栈上压入帧指针,将堆栈指针移到帧指针并根据由该指令指定的子程序的帧大小更新堆栈指针。Unlink指令在退出子程序时使用,引起流水线处理器2从堆栈还原返回地址,还原堆栈指针并从堆栈还原帧指针。
下面例子说明了Link和Unlink指令:
Link1234;
Unlink;
图5示出在MCI控制器5中为完成Link命令的操作的状态机的示例性状态图50。在按状态图50操作时,MCI控制器5能确认一个或多个MCI信号7,指导流水线4完成相应的操作。此外,MCI控制器5能确认MCI PRESTALL信号以停顿线线4。
下面表综合了输出信号,它们在MCI控制器5通过状态机50迁移时被确认。
    路径  输出信号
    54A  无
    54B  PUSH_RTS,MCI_PRESTALL
    54C  PUSH_FP,MCI_PRESTALL
    54D  MOVE_SP_TO_FP
    54E  UPDATE_SP
               表3
若现在的指令不是Link命令,则状态机指导MCI控制器5经路径54A返回到WAIT状态。若指令是Link指令,MCI控制器5经路径54B迁移到状态52B并确认PUSH_RTS信号,引起解码单元12分派在堆栈上压入返回地址的操作。此外,MCI控制器5确认MCI_PRESTALL以便在下一时钟周期停顿流水线4。
接着,MCI控制器5经路径54C迁移到状态52C,确认PUSH_FP,引起解码单元12分派在堆栈上压入帧指针寄存器的操作,并确认MCI_PRESTALL以便在下一时钟周期停顿流水线4。然后MCI控制器5经路径54D迁移到状态52D,并确认MOVE_SP_TO_FP,引起指令解码器12分派将堆栈指针寄存器的内容移到帧指针寄存器。最后,MCI控制器5经路径54E迁移到WAIT状态,并确认UPDATE_SP,引起指令解码器12分派如由指令指定的从堆栈指针减去帧大小的操作。
图6示出在MCI控制器5中为完成Unlink命令的操作状态机的示例性状态图。下表综合了MCI控制器5在通过状态机60迁移时确认的输出信号:
    路径     输出信号
    64A     无
    64B     LOAD_RTS,MCI_PRESTALL
    64C     LOAD_SP
    64D     UPDATE_FP
                表4
若现在的指令不是Unlink命令,则状态机60指导MCI控制器5经路径64A返回到WAIT状态。若指令是Unlink指令,MCI控制器5经路径64B迁移到状态62B,并确认LOAD_RTS信号,引起指令解码单元12确认控制信号,它引起从堆栈取出返回地址,如:RETS=[FP+4]。此外,MCI控制器5确认MCI_PRESTALL,以便在下一时钟周期停顿流水线4。
接着,MCI控制器5经路径64C迁移到62C并确认LOAD_SP,引起指令解码单元12确认控制信号,它引起如下设置堆栈指针:SP=FP+8。
最后,MCI控制器5经路径64D迁移回到WAIT状态,并确认UPDATE_FD,引起指令解码单元12确认控制信号,它引起从堆栈加载帧指针,如:FP=[FP]。
图7是示出停顿控制器8的一部分的示例性实施例的原理图。停顿控制器8能接收若干输入信号,如STALL_CONDITION_1到STALL_CONDITION_8,它们可以在检测到相应停顿条件时被确认。这些输入信号仅是为了示例性目的;例如停顿控制器8可接收任何数目不同的停顿信号用于流水线4的各个阶段。
响应输入停顿条件信号,停顿控制器8能产生停顿信号9来停顿流水线4。停顿控制器8能产生多个停顿信号9,它们对应于流水线4的各个阶段。例如,当STALL_CONDITION_1或STALL_CONDITION_2被确认,且处理器2不在复位状态时,停顿控制器8能确认STALL_WB输出信号,导致流水线4的WB阶段的停顿。值得注意,STALL_WB输出信号用于产生对流水线4的较早阶段的停顿输出信号,如STALL_EX输出信号。更具体说,当STALL_CONDITION_3,STALL_CONDITION_4或STALL_WB被确认且处理器2不在复位状态,停顿控制器8确认STALL_EX输出信号。以此方式,在WB阶段的停顿强制在WX阶段的停顿。停顿控制器8类似地根据单独的危险条件产生STALL_AC和STALL_DEC信号,并在流水线4的较后阶段停顿。
当引起解码阶段停顿的条件出现时,停顿控制器8确认STALL_DEC_MCI信号,它引起MCI控制器停顿。更具体说,当STALL_DEC_MCI被确认时,MCI控制器5不从其当前位置迁移。
停顿控制器8的停顿定时线路72从MCI控制器5接收MCI_PRESTALL信号,并作为响应确认MCI_STALL信号。或门70接收由停顿定时线路72提供的MCI_STALL线路并确认STALL_DEC信号,从而停顿解码阶段和流水线4的较早阶段。
图8是时序图,说明了停顿控制器8能得益于在流水线4的解码阶段检测MCI指令,以增加流水线4的性能。在一个实施例中,在流水线4的IF阶段的预解码器在早于解码阶段一个阶段解码MCI指令。若MCI指令被预解码,预解码器确认MCI_PREDECODE信号。在MCI指令移到解码阶段的下一时钟周期时,MCI_STALL_1ST_CYCLE信号被确认,它是MCI_PREDECODE信号的反转(floppedVersion)。停顿控制器5根据MCI_STALL_FIRST_CYCLE信号和MCI_STALL_REMATNDER信号的逻辑或提供MCI_STALL信号。MCI_STALL_REMAINDER信号是MCI_PRESTALL的反转,后者如上所述由MCI控制器5的状态逻辑控制。
图9是用于根据从预解码器接收的MCI_PREDECODER信号和从MCI控制器5接收的MCI_PRESTALL信号产生MCI_STALL的示例性停顿时序线路72的原理图。在MCI指令处于解码阶段的第一周期期间,在MCI指令处于解码阶段的第一周期期间,在MCI_PREDECODE的反转被确认且没有当前的MCI被执行时,OR门92确认MCI_STALL。对需要多个一个停顿周期的MCI指令,停顿时序线路72根据从MCI控制器5接收的MCI_PRESTALL信号产很其余的停顿周期。
图10是用于产生表示当前要压入或弹出的数据寄存器的数据寄存器值(D_TAG)的示例性数据寄存器地址生成线路100的原理图。D_TAG能包括多个数据线,如三根数据线,它们能表示数据寄存器的范围。
对压入操作,线路100从起始数据寄存器向上计数到最大数据寄存器。对弹出操作,线路100通过寄存器的范围向下计数到最后的数据寄存器。更具体说,在第一周期,多路复用器102在最大数据寄存器(DMAX)或从指令字段(DR)的起始数据寄存器(如数据寄存器5)之间,根据PPM_SELECT是否对压入操作确认并对弹出操作不确认而选择。
由MCI控制器5提供的D_REG_PRESELECT输出信号使多路复用器104在MCI指令的第一周期选择多路复用器102的输出,在余下周期选择存储线路108的输出。多路复用器104的输出D_TAG根据PPM_SELECT由加法器106增量或减量,并反馈到存储线路108。输出信号D_TAG馈给流水线4的指令解码单元12用于压入或弹出寄存器并作为输出馈回给MCI控制器5的状态控制逻辑。
图11是示例性指针寄存器地址生成线路110的原理图,用于输出表示要压入或弹出的当前指针寄存器的指针寄存器值(P_TAG)。类似于图10的线路100,线路110对弹出操作递减计数通过寄存器的范围,而对压入操作从起始指针寄存器递增计数。
已描述了本发明的各个实施例。例如,已描述了流水线处理器,它包括提供输出复位信号到执行流水线的至少一个阶段的复位单元。该复位单元处理如硬复件,软复件和模拟复位那样的复位请求,作为具有指定优先级的复位事件。
该处理器能在各种系统中实现,包括通用计算系统,数字信号处理系统,膝上计算机,个人数字助理(PDA)和移动电话。在那样的系统中,处理器能连接如闪存设备或静态随机存储器(SRAM)那样的存储器设备,它们存储操作系统或其它软件应用。这些和其它实施例是在下列权利要求的范围之中。

Claims (40)

1、一种方法,其特征在于,包括:
在流水线处理器中接收多周期指令;
在流水线处理器的流水线的一个阶段中停顿该多周期指令;
在多周期指令停顿对产生多个指令到流水线的后续阶段。
2、如权利要求1的方法,其特征在于,还包括在解码多周期指令前检测停顿条件。
3、如权利要求2的方法,其特征在于,检测停顿条件包括:
判定所接收的指令是否包括多周期指令;
判定由多周期指令指定的若干寄存器。
4、如权利要求1的方法,其特征在于,还包括:
在完成多周期指令前的至少两个周期不确认预停顿信号;和
在完成多周期指令前的至少一个周期不确认停顿信号。
5、如权利要求1的方法,其特征在于,停顿MCI包括在流水线的解码阶段停顿MCI。
6、如权利要求1的方法,其特征在于,产生多条指令包括当多周期指令停顿时产生同一指令若干次。
7、如权利要求6的方法,其特征在于,产生同一指令若干次包括产生一条压入指令。
8、如权利要求1的方法,其特征在于,产生多条指令包括当多周期指令停顿时产生若干不同的指令。
9、如权利要求8的方法,其特征在于,产生若干不同的指令包括产生指令在堆栈上压入子程序的返回地址,在堆栈上压入帧指针,将堆栈指针送到帧指针,并根据子程序的帧大小更新该堆栈指针。
10、如权利要求1的方法,其特征在于,产生多条指令包括按照状态机产生指令。
11、如权利要求1的方法,其特征在于,停顿多周期指令包括当该多周期指令指定弹出和压入多个寄存器的至少一个时确认停顿信号。
12、一种方法,其特征在于,包括
接收指导流水线处理器从堆栈弹出一个或多个寄存器的多周期指令;
在流水线处理器的流水线中的一个阶段中停顿该多周期指令;
按状态机产生多条指令到流水线中的后续阶段。
13、如权利要求12的方法,其特征在于,当该多周期指令弹出两个寄存器时,产生多条指令包括:
从第一状态迁移到第二状态并产生第一弹出指令;和
从第二状态迁移回到第一状态并产生第二弹出指令。
14、如权利要求12的方法,其特征在于,当该多周期指令指定从堆栈弹出三个或更多寄存器时,产生多条指令包括:
从第一状态迁移到第二状态并产生第一弹出指令;
产生若干弹出指令,直到两个寄存器保持要被弹出;
从第二状态迁移到第三状态并产生另外指令弹出倒数第二个寄存器;和
从第三状态迁移回到第一状态并产生弹出指令来弹出最后的寄存器。
15、如权利要求12的方法,其特征在于,当多周期指令指定从堆栈弹出多个数据寄存器和多个指针寄存器时,产生多条指令包括:
从第一状态迁移到第二状态并发出第一指令来弹出一个指针寄存器;
产生若干弹出指令直到一个指针寄存器保持要被弹出;
从第二状态迁移到第三状态并产生另外弹出指令来弹出最后的指针寄存器;
产生若干弹出指令直到两个数据寄存器保持要被弹出;
从第三状态迁移到第四状态并产生弹出指令来弹出倒数第二个数据寄存器;和
从第四状态迁移回到第一状态并产生弹出指令来弹出最后的数据寄存器。
16、如权利要求12的方法,其特征在于,停顿多周期指令包括在该多周期指令指定弹出多个寄存器时确认停顿信号。
17、一种方法,其特征在于,包括
接收指导流水线处理器在堆栈上压入一个或多个寄存器的多周期指令;
在流水线处理器的流水线中的一个阶段中停顿该多周期指令;和
按状态机产生多条压入指令到流水线的后续阶段。
18、如权利要求17的方法,其特征在于,在多周期指令指定压入两个寄存器时,产生多条指令包括:
从第一状态迁移到第二状态并产生第一压入指令;和
从第二状态迁移回到第一状态并产生第二压入指令。
19、如权利要求17的方法,其特征在于,在多周期指令指定在堆栈上压入两个或更多寄存器时,产生多条指令包括:
从第一状态迁移到第二状态并产生第一压入指令;
产生若干压入指令直到两个寄存器保持要被压入;
从第二状态迁移到第三状态并产生另外压入指令来压入倒数第二个寄存器;和
从第三状态迁移回到第一状态并产生压入指令来压入最后的寄存器。
20、如权利要求17的方法,其特征在于,当该多周期指令指定在堆栈上压入多个数据寄存器和多个指针寄存器时,产生多条指令包括:
从第一状态迁移到第二状态并产生第一指令来压入一个数据寄存器;
产生若干压入指令直到一个数据寄存器保持要被压入;
从第二状态迁移到第三状态并产生另外压入指令来压入最后的数据寄存器;
产生若干压入指令,直到两个指针寄存器保持要被压入;
从第三状态迁移到第四状态并产生压入指令来压入倒数第二个指针寄存器;和
从第四状态迁移回到第一状态并产生压指令来压入最后的指针寄存器。
21、如权利要求17的方法,其特征在于,停顿多周期指令包括在多周期指令指定压入多个寄存器时确认停顿信号。
22、一种装置,其特征在于,包括:
具有多个阶段的执行流水线;和
适应于确认停顿信号,以停顿进入执行流水线的一个阶段的多周期指令的多周期指令(MCI)控制器,其中当多周期指令停顿时,MCI控制器产生多条指令到流水线的后续阶段。
23、如权利要求22的装置,其特征在于,还包括停顿控制器,它从MCI控制器接收MCI控制器停顿信号并产生多个停顿信号来停顿保持MCI指令的阶段和流水线中的以前阶段。
24、如权利要求22的装置,其特征在于,MCI控制器适应于当多周期指令停顿时产生同一指令若干次。
25、如权利要求22的装置,其特征在于,MCI扩展器适应于产生多条指令,指导流水线压入多个寄存器。
26、如权利要求22的装置,其特征在于,MCI控制器适应于当多周期指令停顿时产生若干不同的指令。
27、如权利要求22的装置,其特征在于,MCI控制器适应于产生指令在堆栈上压入子程序的返回地址,在堆栈上压入帧指针,传送堆栈指针到帧指针并根据子程序的帧大小更新堆栈指针。
28、如权利要求22的装置,其特征在于,MCI控制器在多周期指令指定弹出或压入多个寄存器时确认停顿信号。
29、一种系统,其特征在于,包括:
闪存设备;和
连接到该闪存设备的处理器,其中该处理器包括具有多个极端的执行流水线和适应于确认停顿信号以在执行流水线的一个阶段中停顿多周期指令的多周期指令(MCI)控制器;其中该MCI控制器适应于在多周期指令停顿时产生多条指令到流水线的后续阶段。
30、如权利要求29的系统,其特征在于,该处理器还包括停顿控制器,它从MCI控制器接收MCI控制器停顿信号并产生多个停顿信号来停顿保持MCI指令的阶段及流水线中的以前阶段。
31、如权利要求29的系统,其特征在于,MCI控制器适应于在多周期指令被停顿时产生同一指令若干次。
32、如权利要求29的系统,其特征在于,MCI控制器适应于在多周期指令被停顿时产生若干不同的指令。
33、如权利要求29的系统,其特征在于,MCI控制器在多周期指令指定弹出和压入多个寄存器至少一个时确认停顿信号。
34、一种方法,其特征在于,包括:
接收Link机器指令;
在流水线处理器的流水线中的一个阶段中停顿多周期指令;和
通过按状态机产生多条指令到流水线中的后续阶段,执行该Link指令。
35、如权利要求34的方法,其特征在于,产生多条指令包括:
从第一状态迁移到第二状态并产生一指令在堆栈上压入返回地址;
从第二状态迁移到第三状态并产生一指令在堆栈上压入帧指针;
从第三状态迁移到第四状态并产生一指令将堆栈指针传送到帧指针;和
从第四状态迁移回到第一状态并产生一指令,根据由多周期机器指令的帧大小更新堆栈指针。
36、一种方法,其特征在于,包括:
接收unlink机器指令;
在流水线处理器的流水线中的一个阶段中停顿该多周期指令;和
通过按状态机产生多条指令到流水线中的后续阶段,执行unlink指令。
37、如权利要求36的方法,其特征在于,产生多条指令包括:
从第一状态迁移到第二状态并产生指令从堆栈复原返回地址;
从第二状态迁移到第三状态并产生指令复原堆栈指针;和
从第三状态迁移回到第一状态并产生指令从堆栈复原帧指针。
38、一种装置,其特征在于,包括:
控制在流水线处理器中产生多个子操作,以响应多周期机器指令的状态机逻辑;和
适应于产生在子操作执行期间使用的寄存器地址的地址生成单元。
39、如权利要求38的装置,其特征在于,地址生成单元包括增量或减量当前寄存器地址的计数器。
40、如权利要求38的装置,其特征在于,地址生成单元包括存储当前寄存器地址的时钟脉冲驱动的存储线路。
CNB01820175XA 2000-12-06 2001-12-06 多周期指令 Expired - Fee Related CN1308815C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/731,523 2000-12-06
US09/731,523 US7472259B2 (en) 2000-12-06 2000-12-06 Multi-cycle instructions

Publications (2)

Publication Number Publication Date
CN1479892A true CN1479892A (zh) 2004-03-03
CN1308815C CN1308815C (zh) 2007-04-04

Family

ID=24939880

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB01820175XA Expired - Fee Related CN1308815C (zh) 2000-12-06 2001-12-06 多周期指令

Country Status (6)

Country Link
US (1) US7472259B2 (zh)
JP (1) JP3737083B2 (zh)
KR (1) KR100571328B1 (zh)
CN (1) CN1308815C (zh)
TW (1) TW586073B (zh)
WO (1) WO2002046920A2 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103324512A (zh) * 2012-02-09 2013-09-25 阿尔特拉公司 准备可编程设备的方法、布线开关以及机器可读存储介质
CN107770090A (zh) * 2017-10-20 2018-03-06 深圳市楠菲微电子有限公司 用于控制流水线中寄存器的方法和装置

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3886870B2 (ja) 2002-09-06 2007-02-28 株式会社ルネサステクノロジ データ処理装置
US7000233B2 (en) * 2003-04-21 2006-02-14 International Business Machines Corporation Simultaneous multithread processor with result data delay path to adjust pipeline length for input to respective thread
US7330988B2 (en) * 2004-06-30 2008-02-12 Sun Microsystems, Inc. Method and apparatus for power throttling in a multi-thread processor
US20060224864A1 (en) * 2005-03-31 2006-10-05 Dement Jonathan J System and method for handling multi-cycle non-pipelined instruction sequencing
US20060282821A1 (en) * 2005-06-10 2006-12-14 Renno Erik K Efficient subprogram return in microprocessors
US20080082793A1 (en) * 2006-09-29 2008-04-03 Mips Technologies, Inc. Detection and prevention of write-after-write hazards, and applications thereof
US8078846B2 (en) * 2006-09-29 2011-12-13 Mips Technologies, Inc. Conditional move instruction formed into one decoded instruction to be graduated and another decoded instruction to be invalidated
US7594079B2 (en) 2006-09-29 2009-09-22 Mips Technologies, Inc. Data cache virtual hint way prediction, and applications thereof
US9946547B2 (en) 2006-09-29 2018-04-17 Arm Finance Overseas Limited Load/store unit for a processor, and applications thereof
US20090089564A1 (en) * 2006-12-06 2009-04-02 Brickell Ernie F Protecting a Branch Instruction from Side Channel Vulnerabilities
TW201123732A (en) * 2009-12-31 2011-07-01 Ind Tech Res Inst Processing devices

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4493029A (en) * 1982-05-14 1985-01-08 At&T Bell Laboratories Microprocessor with PLA adapted to implement subroutines
JPS62226231A (ja) * 1986-03-27 1987-10-05 Toshiba Corp プロセツサ
JPS62226234A (ja) * 1986-03-28 1987-10-05 Toshiba Corp スタツクポインタ制御回路
US5185870A (en) * 1987-04-10 1993-02-09 Tandem Computers, Inc, System to determine if modification of first macroinstruction to execute in fewer clock cycles
US5005118A (en) * 1987-04-10 1991-04-02 Tandem Computers Incorporated Method and apparatus for modifying micro-instructions using a macro-instruction pipeline
US5127103A (en) * 1987-10-14 1992-06-30 North American Philips Corporation Real-time tracing of dynamic local data in high level languages in the presence of process context switches
JPH02190930A (ja) * 1988-12-29 1990-07-26 Internatl Business Mach Corp <Ibm> ソフトウエア命令実行装置
JPH02197924A (ja) 1989-01-27 1990-08-06 Matsushita Electric Ind Co Ltd 中央演算処理装置
US5142635A (en) * 1989-04-07 1992-08-25 Intel Corporation Method and circuitry for performing multiple stack operations in succession in a pipelined digital computer
US5253308A (en) * 1989-06-21 1993-10-12 Amber Engineering, Inc. Massively parallel digital image data processor using pixel-mapped input/output and relative indexed addressing
US5193167A (en) * 1990-06-29 1993-03-09 Digital Equipment Corporation Ensuring data integrity by locked-load and conditional-store operations in a multiprocessor system
JP2847974B2 (ja) * 1991-01-21 1999-01-20 三菱電機株式会社 データ処理装置
JPH05127894A (ja) 1991-10-30 1993-05-25 Oki Electric Ind Co Ltd 命令実行方式
JPH06161778A (ja) 1992-11-26 1994-06-10 Fujitsu Ltd マルチフロー命令制御方法及び命令処理装置
JPH1091443A (ja) 1996-05-22 1998-04-10 Seiko Epson Corp 情報処理回路、マイクロコンピュータ及び電子機器
US5923862A (en) 1997-01-28 1999-07-13 Samsung Electronics Co., Ltd. Processor that decodes a multi-cycle instruction into single-cycle micro-instructions and schedules execution of the micro-instructions
US5893121A (en) * 1997-04-23 1999-04-06 Sun Microsystems, Inc. System and method for swapping blocks of tagged stack entries between a tagged stack cache and an untagged main memory storage
US5848423A (en) * 1997-04-23 1998-12-08 Sun Microsystems, Inc. Garbage collection system and method for locating root set pointers in method activation records
US6076159A (en) 1997-09-12 2000-06-13 Siemens Aktiengesellschaft Execution of a loop instructing in a loop pipeline after detection of a first occurrence of the loop instruction in an integer pipeline
FR2770659A1 (fr) * 1997-10-31 1999-05-07 Sgs Thomson Microelectronics Processeur de traitement perfectionne
US6349383B1 (en) * 1998-09-10 2002-02-19 Ip-First, L.L.C. System for combining adjacent push/pop stack program instructions into single double push/pop stack microinstuction for execution
CN1100292C (zh) * 1998-10-12 2003-01-29 北京多思科技工业园股份有限公司 指令控制替换方法及其装置
US6209082B1 (en) * 1998-11-17 2001-03-27 Ip First, L.L.C. Apparatus and method for optimizing execution of push all/pop all instructions

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103324512A (zh) * 2012-02-09 2013-09-25 阿尔特拉公司 准备可编程设备的方法、布线开关以及机器可读存储介质
CN103324512B (zh) * 2012-02-09 2018-04-06 阿尔特拉公司 准备可编程设备的方法、布线开关以及机器可读存储介质
US10366189B2 (en) 2012-02-09 2019-07-30 Altera Corporation Configuring a programmable device using high-level language
CN107770090A (zh) * 2017-10-20 2018-03-06 深圳市楠菲微电子有限公司 用于控制流水线中寄存器的方法和装置
CN107770090B (zh) * 2017-10-20 2020-05-01 深圳市楠菲微电子有限公司 用于控制流水线中寄存器的方法和装置

Also Published As

Publication number Publication date
JP2004515857A (ja) 2004-05-27
TW586073B (en) 2004-05-01
WO2002046920A2 (en) 2002-06-13
KR20030057571A (ko) 2003-07-04
JP3737083B2 (ja) 2006-01-18
US7472259B2 (en) 2008-12-30
US20020103991A1 (en) 2002-08-01
KR100571328B1 (ko) 2006-04-17
CN1308815C (zh) 2007-04-04
WO2002046920A3 (en) 2003-05-08

Similar Documents

Publication Publication Date Title
CN1308815C (zh) 多周期指令
EP2140347B1 (en) Processing long-latency instructions in a pipelined processor
US8935515B2 (en) Method and apparatus for vector execution on a scalar machine
CN1149489C (zh) 提供流水线存储器控制器的设备
US7836276B2 (en) System and method for processing thread groups in a SIMD architecture
CN1252605C (zh) 重排多个数据存取指令的方法与装置
TWI503744B (zh) 用於封裝迴圈中多個反覆之裝置、處理器及方法
CN101957744B (zh) 一种用于微处理器的硬件多线程控制方法及其装置
CN1595390A (zh) 执行部分宽度压缩数据指令
CN101034470A (zh) 指令解析器以及图形处理单元及其方法
US20060206693A1 (en) Method and apparatus to execute an instruction with a semi-fast operation in a staggered ALU
CN1542609A (zh) 处理器及处理管线中例外反应的装置与方法
CN1825276A (zh) 多线程管道中的可编程延迟分派
KR101077425B1 (ko) 효율적 인터럽트 리턴 어드레스 저장 메커니즘
US20050102659A1 (en) Methods and apparatus for setting up hardware loops in a deeply pipelined processor
CN1257450C (zh) 节省资源的硬件环路
CN1355900A (zh) 用于处理器流水线分段法及再装配的方法以及装置
CN1791856A (zh) 用于指令对准的方法和设备
CN1860436A (zh) 用于处理指令循环的方法和系统
US6345355B1 (en) Method and apparatus for distributing commands to a plurality of circuit blocks
CN111722876A (zh) 利用超标量流水线执行程序的方法、装置、系统及介质
CN102289363A (zh) 控制数据流的方法以及计算机系统
CN1331043C (zh) 在移动微处理器中支持mmx指令的方法及扩展的微处理器
CN1177138A (zh) 程序执行方法和程序执行装置
JPH09223009A (ja) データ処理装置と方法

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
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20081226

Address after: Massachusetts, USA

Patentee after: ANALOG DEVICES, Inc.

Address before: California, USA

Co-patentee before: ANALOG DEVICES, Inc.

Patentee before: INTEL Corp.

ASS Succession or assignment of patent right

Owner name: ANALOG DEVICES, INC.

Free format text: FORMER OWNER: INTEL CORP

Effective date: 20081226

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070404

Termination date: 20201206

CF01 Termination of patent right due to non-payment of annual fee