CN1492319A - 计算机系统内部处理指令的装置 - Google Patents

计算机系统内部处理指令的装置 Download PDF

Info

Publication number
CN1492319A
CN1492319A CNA021407622A CN02140762A CN1492319A CN 1492319 A CN1492319 A CN 1492319A CN A021407622 A CNA021407622 A CN A021407622A CN 02140762 A CN02140762 A CN 02140762A CN 1492319 A CN1492319 A CN 1492319A
Authority
CN
China
Prior art keywords
instruction
transfer
register
transfer destination
circuit
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
CNA021407622A
Other languages
English (en)
Other versions
CN1267819C (zh
Inventor
钱达・S・乔希
钱达·S·乔希
罗德曼
保罗·罗德曼
苏颜特
彼得·苏颜特
・R・诺法尔
莫尼卡·R·诺法尔
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.)
Arm Overseas Finance Co ltd
Overpass Bridge Co ltd
Toshiba Corp
MIPS Tech LLC
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Publication of CN1492319A publication Critical patent/CN1492319A/zh
Application granted granted Critical
Publication of CN1267819C publication Critical patent/CN1267819C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime 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, 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • 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
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

Abstract

计算机系统具有第1及第2指令存储电路,各指令存储电路存储用于并行输出的N个指令。与第1指令存储电路连接的指令调度电路调度存储在第1指令存储电路内的L个指令,这里,L等于或小于N。与第1及第2指令存储电路连接的指令装入电路在L个指令从第1指令存储电路内调度出之后并且别的指令还未从第1指令存储电路调度之前将L个指令从第2指令存储电路装入第1指令存储电路。

Description

计算机系统内部处理指令的装置
本申请系申请日为1994年12月15日的中国专利申请No.94191180.2的分案申请。
技术领域
本发明涉及计算机系统,特别是计算机系统内部处理指令的装置。
背景技术
通常,在计算机内部,执行从指令存储器中取出指令,存储到缓冲器内,并向1个或多个中央处理装置(CPU)传送。图10A~图10C是1次最多可以执行4个指令的现有的系统。其中,各个指令按照程序的顺序标以字母。如图10A所示的那样,指令缓冲器10内含有多个指令串14A-C,各指令串包含4个指令。存储在指令缓冲器10内的指令为了执行它们,在分配发送(以下称为调度)之前,装入由4个寄存器构成的调度寄存器内。当4个指令从调度寄存器18同时被调度时,另外的4个指令从指令缓冲器10装入调度寄存器18内,继续进行处理。但是,由于资源的竞争及其他原因,有时不能同时调度4个指令。图10B是同时只调度2个指令的情况。在现有的计算机系统中,不论在何时,由于对可装入指令类型及代码配置的限制,在从指令缓冲器10再次将指令向调度寄存器18传送之前,系统必须等待到调度寄存器18成为全空状态。结果,在该例中,在下1个循环中最多只能调度2个指令(C、D),然后,调度寄存器18再行装入(4个指令E、F、G及H)。特别是几个新的指令(例如E、F)在调度先行的指令集(A、B)之后,如果考虑也可以将它们与留在调度寄存器内的指令(C、D)一起进行调度,则对这些新的指令向调度寄存器18装入的限制,将大大缩小该系统的功能。
对现有的计算机系统的其他限制,关系到把处理转到指令存储器后续指令以外的指令那样的转移指令的处理。通常,指令取出之后,按照具有多个阶段的流水线顺序进行处理。因此,通常在流水线内处于下一个序号的指令与转移指令接续。例如,当整个流水线的后面阶段满足转移条件时,便中止执行指令,转移指令的后续指令在流水线内部必须无效。并且,必须从指令存储器取出适当的指令,从流水线的开头开始进行处理。因此,从满足转移条件开始到开始执行适当的指令,需要一定的时间。
发明内容
本发明的目的旨在提供一种在计算机内部处理指令的装置,该装置不论刚刚调度的指令数和指令的类型及其配置如何,总是能够调度4个指令。
在本发明的一个实施例中,计算机系统具有第1和第2指令存储电路,各存储电路为了并行输出而存储着N个指令。与第1指令存储电路连接的指令调度电路调度第1指令存储电路存储的L个指令,这里,L等于或小于N。与第1和第2指令存储电路连接的指令装入电路在从第1指令存储电路调度了L个指令之后、以及进一步从第1指令存储电路调度别的指令之前,将L个指令从第2指令存储电路装入第1指令存储电路。
本发明的另一个目的在于提供一种在计算机系统内部处理指令的装置,该装置在取出指令的时刻进行转移的预测,通过立即取出转移目的指令,在执行转移指令之后准备转移目的指令。
在本发明的一个实施例中,指令存储器存储着多个指令串,转移存储器存储着多个转移预测入口。各转移预测入口含有执行指令存储器的转移指令时用于预测由该转移指令指定的转移是否成功的信息。各转移预测入口包括表示含有转移成功时执行的转移目的指令的行所具有的转移目的地址的转移目的字段、表示转移目的指令在由转移目的地址指示的行内位于何处的目的字段和表示转移指令在与转移目的地址对应的行内位于何处的源字段。计数器保持用于使指令存储器定址的地址值,增量电路用于在正常操作时为将指令存储器内的行顺序定址而增加计数器的地址值。当由指令存储器内的转移指令指示的转移由转移预测入口进行了该转移指令执行时成功的预测时,计数器加载电路就将转移目的地址装入计数器内。这样,在包含转移指令的行之后,便取出包含转移目的指令的行,并进行并行运行。无效化电路用于使位于转移指令之后并且包含该转移指令的行所包含的指令和位于转移目的指令之前并且包含该转移目的指令的行所包含的指令无效。
为了达到上述目的,本发明的在计算机系统内部处理指令的装置具有第1及第2指令存储电路、指令调度电路和指令装入电路。第1及第2指令存储电路用于分别存储可以并行输出的N个指令;指令调度电路与上述第1指令存储电路连接,用于调度上述第1指令存储电路存储的L个指令,并设L等于或小于上述N;指令装入电路与上述第1及第2指令存储电路连接,用于在L个指令从上述第1指令存储电路中调度出之后并且在别的指令从上述第1指令存储电路中调度出之前将L个指令从上述第2指令存储电路装入上述第1指令存储电路。
另外,本发明的在计算机系统内部处理指令的另一种装置具有指令存储电路、指令调度电路、指令排队电路和指令装入电路。指令存储电路用于存储可以并行输出的N个指令;指令调度电路与上述指令存储电路连接,用于调度上述指令存储电路存储的L个指令,并设L等于或小于N;指令排队器用于从指令存储器内存储N个指令的M个行;指令装入电路与上述指令存储电路和上述指令排队器连接,用于在L个指令从上述指令存储电路中调度出之后并且别的指令从上述指令存储电路中调度出之前将L个指令从上述指令排队器装入到上述指令存储电路。
另外,本发明的又一种在计算机系统内部处理指令的装置具有指令存储器和转移存储器。指令存储器用于存储多个指令串;转移存储器用于在执行指令存储器的转移指令时存储多个含有用于预测由该转移指令指定的转移是否成功的信息的转移预测入口。
按照本发明,不论刚刚调度的指令数和指令的类型及其配置如何,总是可以调度4个指令。
另外,在指令取出的时刻进行转移的预测,通过立即取出转移目的指令,在执行转移指令之后就准备转移目的指令。
附图说明
图1是本发明实施例的计算机系统中的取出和调度的框图。
图2是本发明的实施例用于进行取出和调度的装置的框图。
图3是表示图2所示的指令排队电路的动作的框图。
图4是本发明的另一个实施例用于进行取出和调度的装置的框图。
图5是本发明的实施例用于进行转移预测的装置的框图。
图6是表示图4所示的转移高速缓冲器入口的实施例的框图。
图7是本发明实施例的指令流水线取出(F)阶段的框图。
图8是本发明实施例的指令流水线译码(D)阶段和地址生成(AD)阶段的框图。
图9是本发明实施例的指令流水线执行(E)阶段和写(W)阶段的框图。
图10是现有的计算机系统的取出和调度的框图。
具体实施方式
图1A-D是本发明实施例的计算机系统的指令的取出和调度的框图。和图10A-D所示的例子一样,这里也假定开始调度2个指令(A、B)。但是,与图10A-D所示的例子不同的是如图1B所示的那样,调度出的2个指令立刻置换为后续的2个指令(E、F)。因此,在下一个时钟周期内,就可以调度4个指令。另外,为了表示按程序顺序接在先行调度的指令后面的指令位置,使用了指针26。这里,如果如图1C所示的那样在下一个时钟周期内调度3个指令时,适当的寄存器22A、22C、22D有效,由图1B的指针26所示的指令和2个后续指令一起开放。之后,调度寄存器18按照程序顺序利用后续的指令缓冲器10的3个指令进行装入。
这里,为了向调度寄存器18供给指令,应注意需要指令缓冲器的2个指令串。例如,如图1C所示的那样,指令串14C将指令(G、H)供给调度寄存器18,指令串14B将指令(I)供给调度寄存器18。如1个指令串有4个指令,则将包含应向调度寄存器18装入的下一个指令的指令串称为“开头四组”,将包含应完成传送处理、同时应向调度寄存器18装入的指令的下一个指令串称为“后续四组”。当开头的四组经传送处理成为空的时候,如图1D所示的那样,B串的内容更新。在图1D中,2个指令(F、G)调度后,另外2个指令(J、K)装入到该位置上。
图2是本发明实施例进行指令的取出和调度的装置30的框图。装置30包括指令高速缓冲器34,该缓冲存储器34具有由通信路径38的地址值所示的指令构成的多个指令串。在本实施例中,各指令串存储着4个32位指令,通过通信路径46将1个指令串的所有指令传送给预译码电路42。预译码电路将4个指令进行部分地译码,并通过通信路径54将该部分地译码后的4个指令传送给指令排队器50,通过排队旁路路径62向多路转换器58A-D调度。
指令排队器50包括按各指令串的各指令设置的4个排队部分66A-D。由于4个排队部分都具有相同的结构,所有,只示出了排队部分66A的内部。排队部分66A包括多个(例如6个)串联连接的指令缓冲器IBUF0-IBUF5。各指令缓冲器通过对应的多路转换输入路径70A-F与多路转换器68连接。多路转换器68响应通过信号线72A输入的信号,选择指令缓冲器IBUF0-IBUF5中的1个指令,通过通信路径74A将所选择的这条指令传送给调度多路转换器58A。存储在寄存器22A内的指令通过反馈通信路径7 6A传送给调度多路转换器58A的输入端。调度多路转换器58A响应通过Q0MXSEL信号线80输入的信号,从多路转换器68的输出、排队旁路62或反馈通信路径76A中选择1个指令,通过通信路径82A向寄存器22A传送。寄存器22A响应加在其上的时钟信号,装入接收的值,如果该指令可行,将进行调度。另外,时钟寄存器分别用各寄存器左侧的三角形表示。
排队部分66B-D分别响应通过信号线72B-D接收的信号,从这些串联连接的1个缓冲部分中选择指令,分别通过通信路径74B-C将所选择的指令向多路转换器58B-D调度。调度多路转换器58B-D将把根据通过Q1MXSEL-Q3MXSEL信号线接收的信号所选择的指令,通过通信路径82B-D分别传送给各寄存器22B-D。
装置30按照如下方式选择将哪个指令向调度寄存器18调度。开始,指令排队器50是空的,当从指令高速缓冲器34内取出1个指令串时,调度多路转换器58A-D就从排队旁路62中选择指令。并且,调度指令,并从指令高速缓冲器34中读出新的指令串。
通常,新的指令串在各时钟周期从指令高速缓冲器34读出。如果在每个时钟周期读出4个指令,则调度寄存器便总是从排队旁路路径62装入。但是,不论在何处,在各周期都可以调度到0~4个指令。因此,如果不是调度所有的指令,就可以根据该时刻所调度的指令数而从排队旁路路径62只装入寄存器22A-D中的某几个。因此,上次读出后剩下的指令串就分别从各排队部分66A-D的IBUF0装入,并从指令高速缓冲器34读出新的指令串。例如,在开始的周期内调度2个指令时,寄存器22A-B就按照排队旁路路径62的指令装入,相同的指令通过反馈通信路径76C-D装入寄存器22C-D,上次读出的指令装入排队部66A-D的IBUF0,新的指令串从指令高速缓冲器34读出。在下一个时钟周期内,只调度1个指令时,排队部66C的IBUF0的指令装入寄存器22C,相同的指令通过反馈通信路径76A、76B、76D再次装入寄存器22A、22B、22D,存储在排队部66A-D的各IBUF0内的指令串进入各排队部的IBUF1,上次读出的指令串装入排队部66A-D的IBUF0,新的指令串从指令高速缓冲器34读出。指令串在排队部66A-D内前进,直至缓冲器填满为止。此时,装置停止向以上的排队部分装入指令。利用这一方法将指令的预取出动作与调度动作分离。
为了控制指令排队缓冲器50的动作,RDPTR寄存器86保持I-STATE[4:0]的值。STATE[4:2]用于决定各排队部分66A-D的缓冲器IBUF0-IBUF5的某一个将下一个指令供给寄存器22A-D,STATE[1:0]的功能是用作图1A-1C所示的指针26(模4计数器),表示接着调度哪个指令。F-INST寄存器90保持INST-CONSUME的值,表示每个周期内消费多少指令(即,不论有效的排队寄存器时钟的总合如何或有效无效,从调度寄存器18调度的指令数的总合)。该INST-CONSUME在后面与图8一起说明。该INST-CONSUME由加法器92与STATE[4:0]进行加法运算后,表示应调度的指令。STATE[4:2]每当装入调度寄存器18所使用的指令串排队前进时递增。STATE[4:0]更新后的值返回RDPTR寄存器86,进行装入,并通过通信路径98A、98B传送给排队器MUX(多路转换)选择电路98。如果令STATE[4:2]=“101”(=5),则指令缓冲器是满的,装置停止向由此以上的排队部分装入指令。
排队器MUX选择电路98根据STATE[4:2]和STATE[1:0]的值将后面的(按程序顺序)连续的指令传送给调度寄存器18。图3和表1对于STATE[1:0]的不同值给出了各排队部分66A-D的哪个缓冲器将后面的指令传送给对应的寄存器22A-D。
                     表1
STATE[1:0]    Q0MXSEL Q1MXSEL Q2MXSEL Q3MXSEL
0    STATE[4:2]     STATE[4:2]    STATE[4:2]    STATE[4:2]
1    STATE[4:2]-1   STATE[4:2]    STATE[4:2]    STATE[4:2]
2    STATE[4:2]-1   STATE[4:2]-1  STATE[4:2]    STATE[4:2]
3    STATE[4:2]-1   STATE[4:2]-1  STATE[4:2]-1  STATE[4:2]
因此,在STATE[1:0]=2时,如果STATE[4:2]=3,则寄存器22C-22D给出开头的四组(IBUF3)的最后2个指令,寄存器22A-22B给出后续的四组(IBUF2)的开始的2个指令。
这里记载的用于指令取出和调度的装置,根据需要进行适当的修正,可以在很多环境下使用。例如,设整数、存储器、定点用的指令存储在指令高速缓冲器34内,则它们有可能包含在1个指令串内。如果有资源竞争问题,如对指令或指令的类型(例如定点指令)有数据依赖关系,则这些指令将向其他排队部分调度,因此,由于资源竞争及数据的依赖关系,便成为不停止其他指令的调度的待机状态。
图4是本发明的另一个实施例用于从图2的调度寄存器18进行想要预先调度的定点指令的取出和调度装置104的框图。一看便知装置104除了为处理从整数寄存器装入的定点寄存器的数据或整数存储数据而与指令一起存储数据外,和图2的装置30类似。
在上述装置中,在本发明的计算机系统中,也改良了指令的处理。因此,在指令取出的时刻预测转移,并立即取出预测的转移目的指令,在执行转移指令之后准备转移目的指令。图5是本发明用于转移预测的装置110的1个实施例的框图。转移高速缓冲器114用于预测存储在指令高速缓冲器34内的转移指令的结果。例如,指令高速缓冲器34是16KB的直接映射高速缓冲器,则如上述那样,每一个周期输出4个指令。在本实施例中,转移高速缓冲器114也是直接映射高速缓冲器,具有1K的入口(对于指令高速缓冲器34的4个指令,有1个入口)。指令高速缓冲器34和转移高速缓冲器114通过输入计数器116标志值(地址)的通信路径38,按照流水线的取出阶段进行并行存取。当然,根据需要指令高速缓冲器34和转移高速缓冲器114也可以按不同的地址进行存取。
图6是转移高速缓冲器114的采样入口120和转移预测的例子。入口120包括预测转移是否成立的有效性字段124(0表示不预测,1表示进行预测)、作为转移目的指令的指令高速缓冲器标志的标志字段128、表示包含该转移指令的指令串内应执行的最后指令位置的源字段(SRC)132和表示按照高速缓冲器标志取出的指令串内的转移目的指令位置的目的字段(DRC)134。
在本实施例中,各转移指令实际上由2个指令串构成。称为开头转移指令的开始指令,计算转移目的地和转移条件。称为延迟指令的下一个指令位于开头转移指令之后,实际上用于将程序的流向改变为转移目的指令。因此,源字段132如图6所示的那样,表示指令内的延迟指令位置。
计数器116的地址值传送给增量电路138。增量电路138使计数器的值增加4(因每个指令串有4个指令),并将增加后的值通过通信路径144传送给多路转换器142。转移高速缓冲器入口的标志字段128的值通过通信路径148传送给多路转换器142。有效性字段124的值用于控制多路转换器142的动作。因此,如果转移预测成立(V=1),则在下一个周期内,指令高速缓冲器34就按指示字段128的值进行存取。如果转移预测不成立(V=0),则指令高速缓冲器34按由增量电路138决定的下一个指令串进行存取。
源字段132的值通过“或”门电路150传送给有效性掩模148。如果进行转移预测,有效性掩模148就使位于该转移的延迟指令之后的指令串的所有指令无效。这是因为这些指令在进行转移时是不执行的。例如,如图6所示的那样,当延迟指令是指令串的第3个指令时,就使第4个指令无效。在下一个时钟周期中,(包括所有成为无效的指令的)指令串传送给指令高速缓冲器50和排队旁路路径62(图2),目的字段的值装入寄存器152,计数器116的值成为标志字段128的值,指令高速缓冲器34进行存取,取出包含预测过转移目的指令的指令串。寄存器152的目的字段通过“或”门电路150传送给有效性掩模148,使位于该指令串的转移目的指令之前的指令无效。例如,转移目的指令位于该指令串的第2个指令的位置时,有效性掩模148就使该指令串的开始的指令无效。该指令串传送给指令排队器50和排队旁路路径62。
在本实施例中,所有的转移预测高速缓冲器入口都用0对有效性字段124进行初始化(转移未进行预测)。当开始执行程序时,各转移指令的结果通过设定适当的标志值、源值和目的值,并使表示有效性的位为1,(如果需要)用于更新转移预测高速缓冲器入口。因此,转移预测便在此后进行。如果上次成立的转移此后不成立时,或者上次不成立的转移此后成立时,(如后面说明的那样)转移预测高速缓冲器入口就更新为上述的情况(并且,取出正确的指令)。
调度寄存器18保持存储在该处并位于转移预测过的延迟指令之后的超级标量指令,防止转移目的指令与现在的指令发生交错。并且,当2个转移指令保持在调度寄存器18内时,调度寄存器18就保持与第2个转移对应的超级标量指令,以使一次只执行1个转移指令。
图7~图9是表示本发明的指令流水线的要点的1个实施例的框图,示出了转移预测如何进行。这里,只要可能,作为参照序号都利用以前的序号。如所周知,调度寄存器18由指令存储器和特征存储器构成。指令存储器部分存储着指令串(行),特征存储器存储着与指令存储器的各指令串对应的虚拟地址特征(和控制信息)。这里,只示出了指令高速缓冲器34的特征存储器部分34A。特征存储器部分34A存储着应用特定ID字段(asid[7:0])、指令高速缓冲器特征(tag[33:0]、对应的虚拟地址的高34位)、表示有效性的位(V)和表示指令的地址空间的区域字段(r[1:0])。
图7是指令流水线的取出(F)阶段。计数器116A和计数器116B构成将特征存储器部分34A和转移高速缓冲器114进行定址的主F阶段程序计数器。作为特征存储器部分34A的行的标志即计数器116的值(fpc[13:4])通过通信路径38A传送给特征存储器部分34A和增量电路138。增量电路138将计数器值加1,并通过通信路径144将增加后的值传送给多路转换器142A和多路转换器142B。多路转换器142A和多路转换器142B通过通信路径148从转移高速缓冲器114接收标志字段,通过通信路径160(如以下所示的那样)接收修正地址。通信路径160的值(pc-jam-bus[13:2])用于修正错误的转移预测及高速缓冲器错误和其他错误。多路转换器142B接收转移高速缓冲器写入地址(bcwdr[13:4])。用于更新转移高速缓冲器114的数据(be-wdata[14:1])通过通信路径168传送给寄存器164。多路转换器142A和142B选择适当的地址,分别传送给计数器116A和116B。
寄存器172用于存储表示计数器116A和116B是否按照由增量电路138增加后的值进行装入和计数器116A和116B是否从通信路径148和通信路径160进行装入的并行装入位(f-pld),寄存器176存储与转移高速缓冲器114入口的目的字段(通信路径148的bc[14:3]的位[4:3])对应的值(fpc[3:2])。寄存器116A、172、176的值与特征存储器34A的输出组合后存储到排队寄存器TBUF0内。排队寄存器TBUF0是与指令排队缓冲器50的6个指令缓冲器IBUF0-IBUF5对应的6个寄存器(TBUF0-TBUF5)之一。各寄存器TBUF0-TBUF5在指令排队缓冲器50中,分别与选择开头四组及后续四组对应寄存器的多路转换器180和184连接。开头四组的特征存储器信息通过通信路径188传送给流水线的下一个阶段。并且,后续四组的特征存储器信息通过通信路径190传送给流水线的下一个阶段。
图8是指令流水线的译码(D)阶段和地址生成(AD)阶段。在D阶段,特征存储器部分34A的开头四组信息的位[56:2]存储到寄存器200内,特征存储器部分34A的后续四组信息存储到DLTAG寄存器204内。如果有开头四组信息的转移高速缓冲器114入口的目的字段(fpc[3:2]),就传送给多路转换器208。多路转换器208的另一输入与加法器214的输出通信路径210连接,加法器214包含按照通常顺序执行期间应调度的下一个指针值。多路转换器208选择目的值或者下一个指令值,并将选择的值传送给DLTAG寄存器200的输出通信路径216。通信路径216与多路转换器218的输入连接。
存储在DLTAG寄存器204内的后续四组特征存储器信息传送给多路转换器218,并通过通信路径224传送给比较电路220。多路转换器218选择与下一次应执行的开始的指令对应的特征信息,并将在该通信路径226上选择的信息输出到流水线A阶段的ATAG寄存器。调度寄存器指针值通过通信路径228传送给加法器214,特征存储器信息通过通信路径230传送给比较电路220,指令高速缓冲器的标志传送给比较电路234。
比较电路220将开头四组特征与后续四组特征进行比较。如果它们不一致,则开头四组指令和后续四组指令就是前后关系不同的指令,因此,这些指令就不应同时调度。当发生这种情况时,为了停止超级标量指令,将序号向通信路径238输出。
比较电路234将指令高速缓冲器标志与16进制值“FFF”进行比较,确定指令高速缓冲器的最后如何定址。如果是最后的地址,则希望在高速缓冲器行的最后停止超级标量指令,并按照其目的将信号输给通信路径242。
加法器214通过通信路径250接收表示调度的有效指令总合的值,该值用于增加在该时刻的调度寄存器指针值,在通信路径加法器214上生成更新的调度寄存器指针值。
在D阶段,表示消费的指令数(包括有效指令和无效指令)的值装入寄存器90(参见图2),如和图2一起说明的那样,该值用于控制指令排队器50的动作。
在A阶段,生成实际的转移地址。各转移指令由开头转移指令和与其接续的延迟指令构成,由于实际的转移在延迟指令之后进行,所以,转移目的地址必须对延迟指令进行计算。因此,与包含转移指令的行对应的特征信息存储到ATAG寄存器227内,表示行内的特征存储器相对位置的值由多路转换器250进行选择,并通过通信路径258存储到RELDLY寄存器254内。相对的延迟值通过通信路径264传送给转移目的加法器260。转移目的加法器260通过通信路径268接收ATAG寄存器227的值(行的开始的指令的地址),通过通信路径276接收AOFFSET寄存器272的偏移值。AOFFSET寄存器272通过通信路径280从转移指令接收26位的偏移值,(如果需要)在将偏移值输入转移目的加法器260之前,利用符号扩展电路284对偏移值的位[17:2]进行符号扩展。将26位的偏移值传送给通过通信路径292接收由AOFFSET寄存器272或转移目的加法器260计算的转移目的地址位[27:2]的多路转换器288。多路转换器288利用存储在AOFFSET寄存器272中的偏移值置换计算的转移目的地址的位[27:2]。
转移目的加法器260的输出传送给多路转换器289的1个输入端。多路转换器289的另一个输入端是通过与通用寄存器文件连接的通信路径296输入的JUMP(转移)或JUMP REGISTER(转移寄存器)指令的转移目的地址。因此,如果转移不是由JUMP或JUMP REGISTER指令发生的,则所选择的转移目的指令便成为(可能由多路转换器289修饰过的)转移目的加法器260的输出,这时,在适当的寄存器中所示的地址优先。
采取这种特定结构的转移目的地址计算电路的理由在于根据一般转移指令、JUMP或JUMP REGSTER指令这样的不同类型转移指令计算转移目的地址的方法。按照一般转移指令,是将相对的延迟寄存器值、ATAG寄存器值和偏移值相加后,生成转移目的地址。按照JUMP转移指令,是REL-DLY寄存器值和ATAG寄存器值相加后,将偏移值加到总合上。按照JUMP REGISTER转移指令,为了生成转移目的地址,使用通信路径296的寄存器值。
ATAG寄存器227和RELDLY寄存器254的值还传送给返回地址加法器300。返回地址加法器300在子程序执行中的转移时,用于计算返回地址。当子程序结束时,希望将其返回到调用指令之后的指令。因此,返回地址加法器300就在特征、标志和相对延迟之和上加上+1,生成调用子程序的转移指令的延迟时间段之后的指令地址。返回地址输出到通信路径304。
图9示出了流水线的执行(E)阶段和写(W)阶段。ATAG寄存器227的内容通过通信路径308传送给ETAG寄存器318,通过通信路径309传送给比较电路341。RELDLY寄存器254的内容通过通信路径312传送给E-REL-DLY寄存器322,返回地址加法器300计算的返回地址通过通信路径304传送给链路值(LNVAL)寄存器326。并且,多路转换器289选择的转移目的地址通过通信路径314传送给BR-TARG寄存器330。EPC寄存器334存储程序拟在E阶段执行的指令的实际地址,ASID寄存器存储表示在该指令中使用的数据是否可高速缓存的相关值和应执行指令的程序控制ASID。
(与取出的M对应的)存储在ETAG寄存器318内的ASID和特征与(与实际要执行的指令对应的)ASID寄存器338和EPC寄存器334的ASID和特征,由比较电路339进行比较,判断(根据程序)执行预测的实际指令是否为从指令高速缓冲器中取出的指令。如果数值不一致,就将指令高速缓冲器错误信号传送到通信路径340。
这时,ATAG寄存器227的值与包含预测的转移目的指令的行对应,TARG寄存器330的值与实际的转移目的地址对应。因此,通过通信路径309从ATAG寄存器227接收的标志字段和目的字段(预测的转移目的地址),由比较电路341与通过通信路径343从TARG寄存器330接收的计算转移目的地址进行比较,判断执行预测的实际转移指令是否为实际从指令高速缓冲器中取出的预测转移目的指令。如果数值不一致,就将转移高速缓冲器错误(转移预测错误)信号传送到通信路径345。
EPC寄存器334的值传送给流水线写阶段的WPC寄存器354,并通过通信路径358传送给多路转换器362的1个输入端。多路转换器362的另一输入端通过通信路径366接收WPC寄存器354的值(延迟1个周期的EPC寄存器334的原来值)。多路转换器362选择这些值中的1个值,将所选择的值传送给EPC加法器360的1个输入端。EPC加法器360在正常操作中具有更新EPC寄存器334的值的作用。EPC寄存器334的值按正常操作选择,WPC寄存器354的值按异常操作选择。
EPC加法器360的另一输入端与多路转换器366连接。向多路转换器366一边输入的是从调度寄存器18调度的有效的指令数,另一输入是异常调整值369(-1~+3)。在正常操作中,EPC寄存器334的值按从调度寄存器18中调度的有效指令数增加,并转向应执行EPC寄存器334值的下一个指令。当发生异常情况时(陷阱、指令高速缓冲器错误、其他情况),异常调整值就加到WPC寄存器354的值上,表示发生异常的指令。当在延迟指令中发生异常时,就使用-1的值。这是因为这时希望将指针转向此前的转移指令。哪个指令表示发生异常的值存储到EPC-COP寄存器370内。EPC-COP寄存器370通过多路转换器374按其现行值再次装入,直至发生其他的异常为止。TRAP-BASE寄存器376在发生异常时保持程序应移动的地址,并将该值传送给多路转换器377。向多路转换器377的其他输入是复位矢量值。选择这些值中的一个向通信路径379输出。
多路转换器380在从异常返回时,通过通信路径384接收EPC-COP寄存器370的值、在异常状态下的通信路径379的矢量地址vector-add[47:0]、为了转移而通过通信路径388计算的转移目的地址、在指令高速缓冲器错误中用于保持EPC值而来自通信路径358的EPC值以及通过通信路径396更新的EPC值。所选择的值输出到通信路径430(PC-JAM-BUS[47:0]),该通信路径的位[13:2]如图8所示的那样是供给F阶段的修正值,这样,便可将标志输送到指令高速缓冲器、特征存储器部34A和转移高速缓冲器114。
在正常操作中,更新的EPC值由多路转换器380进行选择,并装入EPC寄存器334。当发生转移高速缓冲器错误时,多路转换器380就选择计算的转移目的地址,并通过通信路径160将新的转移目的地址传送给转移高速缓冲器114(图8)。为了更新转移高速缓冲器114而使用的写入地址由转移高速缓冲器地址加法器400进行计算,该转移高速缓冲器地址加法器400将EPC寄存器334的值加到E-REL-DLY寄存器322的值上,在通信路径404上生成写入地址。应该注意到通信路径404的位值与延迟指令的位置对应,并作为转移预测高速缓冲器入口的源字段使用。通信路径168的其余的写入数据由计算的转移目的地址的位构成,该转移目的地址就是更新过的标志和目的字段入口。
以上是本发明的极佳的实施例,在本发明的主旨范围内,可以有各种变形。因此,本发明的范围应由权利要求的范围决定。
按照本发明,不论刚刚调度的指令数和指令的类型及其配置如何,总是可以准备好调度4个指令,并可以顺利地进行指令的供给,从而可以提高执行速度。
另外,在取出指令的时刻进行转移的预测,通过立即取出转移目的指令,在执行转移指令之后便可准备转移目的指令,所以,因转移而引起的执行速度降低可以减小到最小。

Claims (11)

1.一种在计算机系统内部处理指令的装置,其特征在于:具有指令存储器和转换存储器,指令存储器用于存储多个指令串;
转移存储器用于在执行指令存储器的转移指令时存储多个包含用于预测由该转移指令指定的转移是否成功的信息的转移预测入口。
2.按权利要求1所述的装置的特征在于:各转移预测入口包括转移目的字段,该转移目的字段表示含有转移成功时执行的转移目的指令的行所具有的转移目的地址。
3.按权利要求1所述的装置的特征在于:各转移预测入口包括1位的转移预测字段,该1位的转移预测字段表示执行转移指令时由存储在指令存储器内的转移指令所示的转移是否成功。
4.按权利要求1所述的装置的特征在于:各转移预测入口与指令存储器的1个行对应。
5.按权利要求4所述的装置的特征在于:各转移预测入口包括转移目的字段,该转移目的字段表示含有转移成功时执行的转移目的指令的行所具有的转移目的地址。
6.按权利要求5所述的装置的特征在于:各转移预测入口包括目的字段,该目的字段表示转移目的指令在由转移目的地址指示的行内位于何处。
7.按权利要求5所述的装置的特征在于:各转移预测入口包括源字段,该源字段表示转移指令在与转移目的地址对应的行内位于何处。
8.按权利要求7所述的装置的特征在于:还具有计数器、增量电路和计数器装入电路。计数器用于保持将指令存储器定址所使用的地址值;
增量电路用于在正常操作时为了顺序将指令存储器内的行定址而使计数器的地址值递增;
计数器装入电路用于在由指令存储器内的转移指令所指示的转移当以转移预测入口预测该转移指令执行成功时,将转移目的地址装入计数器。
9.按权利要求8所述的装置的特征在于:还具有无效化电路,用于响应源字段,使由上述地址值定址的行内的指令无效。
10.按权利要求8所述的装置的特征在于:还具有无效化电路,用于响应目的字段,使由上述地址值定址的行内的指令无效。
11.按权利要求8所述的装置的特征在于:还具有无效化电路,用于响应源字段,使位于由上述地址值定址的行内的转移指令之后的指令无效;响应目的字段,使位于由上述地址值定址的行内的转移目的指令之前的指令无效。
CNB021407622A 1993-12-15 1994-12-15 计算机系统内部处理指令的装置 Expired - Lifetime CN1267819C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/168,744 1993-12-15
US08/168,744 US5604909A (en) 1993-12-15 1993-12-15 Apparatus for processing instructions in a computing system

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN94191180A Division CN1104680C (zh) 1993-12-15 1994-12-15 计算机系统内部处理指令的装置

Publications (2)

Publication Number Publication Date
CN1492319A true CN1492319A (zh) 2004-04-28
CN1267819C CN1267819C (zh) 2006-08-02

Family

ID=22612755

Family Applications (2)

Application Number Title Priority Date Filing Date
CNB021407622A Expired - Lifetime CN1267819C (zh) 1993-12-15 1994-12-15 计算机系统内部处理指令的装置
CN94191180A Expired - Lifetime CN1104680C (zh) 1993-12-15 1994-12-15 计算机系统内部处理指令的装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN94191180A Expired - Lifetime CN1104680C (zh) 1993-12-15 1994-12-15 计算机系统内部处理指令的装置

Country Status (8)

Country Link
US (4) US5604909A (zh)
EP (2) EP0690373B1 (zh)
JP (1) JP2815237B2 (zh)
KR (1) KR100212204B1 (zh)
CN (2) CN1267819C (zh)
DE (1) DE69433621T2 (zh)
HK (1) HK1013153A1 (zh)
WO (1) WO1995016954A1 (zh)

Families Citing this family (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5734874A (en) * 1994-04-29 1998-03-31 Sun Microsystems, Inc. Central processing unit with integrated graphics functions
US5778250A (en) * 1994-05-23 1998-07-07 Cirrus Logic, Inc. Method and apparatus for dynamically adjusting the number of stages of a multiple stage pipeline
WO1996012231A1 (en) 1994-10-14 1996-04-25 Silicon Graphics, Inc. A translation buffer for detecting and preventing conflicting virtual addresses from being stored therein
WO1996012229A1 (en) 1994-10-14 1996-04-25 Silicon Graphics, Inc. Indexing and multiplexing of interleaved cache memory arrays
US5991869A (en) * 1995-04-12 1999-11-23 Advanced Micro Devices, Inc. Superscalar microprocessor including a high speed instruction alignment unit
GB9521977D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Cache memory
GB9521955D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Cache memory
GB9521980D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Branch target buffer
US6216213B1 (en) * 1996-06-07 2001-04-10 Motorola, Inc. Method and apparatus for compression, decompression, and execution of program code
WO1998002798A1 (en) * 1996-07-16 1998-01-22 Advanced Micro Devices, Inc. A superscalar microprocesser including a high speed instruction alignment unit
DE19630861A1 (de) * 1996-07-31 1998-02-05 Philips Patentverwaltung Datenverarbeitungseinrichtung mit einem Mikroprozessor und einer zusätzlichen Recheneinheit
US5859992A (en) * 1997-03-12 1999-01-12 Advanced Micro Devices, Inc. Instruction alignment using a dispatch list and a latch list
US6157999A (en) * 1997-06-03 2000-12-05 Motorola Inc. Data processing system having a synchronizing link stack and method thereof
US5935238A (en) * 1997-06-19 1999-08-10 Sun Microsystems, Inc. Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles
US5964869A (en) * 1997-06-19 1999-10-12 Sun Microsystems, Inc. Instruction fetch mechanism with simultaneous prediction of control-flow instructions
US6157988A (en) * 1997-08-01 2000-12-05 Micron Technology, Inc. Method and apparatus for high performance branching in pipelined microsystems
US6185676B1 (en) * 1997-09-30 2001-02-06 Intel Corporation Method and apparatus for performing early branch prediction in a microprocessor
US6243805B1 (en) * 1998-08-11 2001-06-05 Advanced Micro Devices, Inc. Programming paradigm and microprocessor architecture for exact branch targeting
US6289442B1 (en) * 1998-10-05 2001-09-11 Advanced Micro Devices, Inc. Circuit and method for tagging and invalidating speculatively executed instructions
US6442674B1 (en) * 1998-12-30 2002-08-27 Intel Corporation Method and system for bypassing a fill buffer located along a first instruction path
US6957327B1 (en) * 1998-12-31 2005-10-18 Stmicroelectronics, Inc. Block-based branch target buffer
US6185672B1 (en) * 1999-02-19 2001-02-06 Advanced Micro Devices, Inc. Method and apparatus for instruction queue compression
EP1050810A1 (en) * 1999-05-03 2000-11-08 STMicroelectronics SA A computer system comprising multiple functional units
US6647490B2 (en) 1999-10-14 2003-11-11 Advanced Micro Devices, Inc. Training line predictor for branch targets
JP2003511789A (ja) * 1999-10-14 2003-03-25 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 整列情報をキャッシュするための装置および方法
US6636959B1 (en) 1999-10-14 2003-10-21 Advanced Micro Devices, Inc. Predictor miss decoder updating line predictor storing instruction fetch address and alignment information upon instruction decode termination condition
US6546478B1 (en) 1999-10-14 2003-04-08 Advanced Micro Devices, Inc. Line predictor entry with location pointers and control information for corresponding instructions in a cache line
US6591361B1 (en) 1999-12-28 2003-07-08 International Business Machines Corporation Method and apparatus for converting data into different ordinal types
US7149883B1 (en) 2000-03-30 2006-12-12 Intel Corporation Method and apparatus selectively to advance a write pointer for a queue based on the indicated validity or invalidity of an instruction stored within the queue
US6701424B1 (en) * 2000-04-07 2004-03-02 Nintendo Co., Ltd. Method and apparatus for efficient loading and storing of vectors
US6857061B1 (en) 2000-04-07 2005-02-15 Nintendo Co., Ltd. Method and apparatus for obtaining a scalar value directly from a vector register
US6859862B1 (en) 2000-04-07 2005-02-22 Nintendo Co., Ltd. Method and apparatus for software management of on-chip cache
US6484228B2 (en) 2000-04-19 2002-11-19 Motorola, Inc. Method and apparatus for data compression and decompression for a data processor system
DE10043003A1 (de) * 2000-09-01 2002-03-14 Infineon Technologies Ag Programmgesteuerte Einheit
US7035998B1 (en) 2000-11-03 2006-04-25 Mips Technologies, Inc. Clustering stream and/or instruction queues for multi-streaming processors
US7139898B1 (en) 2000-11-03 2006-11-21 Mips Technologies, Inc. Fetch and dispatch disassociation apparatus for multistreaming processors
JP2002318687A (ja) * 2001-04-18 2002-10-31 Fujitsu Ltd 情報処理装置及び計算機システム
JP3851235B2 (ja) * 2002-06-28 2006-11-29 富士通株式会社 分岐予測装置および分岐予測方法
US7131017B2 (en) * 2002-08-16 2006-10-31 Carnegie Mellon University Programmable pipeline fabric having mechanism to terminate signal propagation
US6836833B1 (en) * 2002-10-22 2004-12-28 Mips Technologies, Inc. Apparatus and method for discovering a scratch pad memory configuration
CN1720494A (zh) * 2002-12-04 2006-01-11 皇家飞利浦电子股份有限公司 减少微处理器的功率消耗的寄存器堆选通方法
US20040111594A1 (en) * 2002-12-05 2004-06-10 International Business Machines Corporation Multithreading recycle and dispatch mechanism
JP3855270B2 (ja) * 2003-05-29 2006-12-06 ソニー株式会社 アンテナ実装方法
US7281120B2 (en) * 2004-03-26 2007-10-09 International Business Machines Corporation Apparatus and method for decreasing the latency between an instruction cache and a pipeline processor
US7363468B2 (en) * 2004-11-18 2008-04-22 International Business Machines Corporation Load address dependency mechanism system and method in a high frequency, low power processor system
US7426631B2 (en) * 2005-02-02 2008-09-16 International Business Machines Corporation Methods and systems for storing branch information in an address table of a processor
DE102005009083B4 (de) * 2005-02-28 2007-05-10 Infineon Technologies Ag Multithread-Prozessor mit einer Synchronisationseinheit und Verfahren zum Betreiben eines solchen
US20060229638A1 (en) * 2005-03-29 2006-10-12 Abrams Robert M Articulating retrieval device
US7461237B2 (en) * 2005-04-20 2008-12-02 Sun Microsystems, Inc. Method and apparatus for suppressing duplicative prefetches for branch target cache lines
US20070198812A1 (en) * 2005-09-27 2007-08-23 Ibm Corporation Method and apparatus for issuing instructions from an issue queue including a main issue queue array and an auxiliary issue queue array in an information handling system
US7350056B2 (en) * 2005-09-27 2008-03-25 International Business Machines Corporation Method and apparatus for issuing instructions from an issue queue in an information handling system
US7734901B2 (en) * 2005-10-31 2010-06-08 Mips Technologies, Inc. Processor core and method for managing program counter redirection in an out-of-order processor pipeline
US7711934B2 (en) * 2005-10-31 2010-05-04 Mips Technologies, Inc. Processor core and method for managing branch misprediction in an out-of-order processor pipeline
US20070204139A1 (en) 2006-02-28 2007-08-30 Mips Technologies, Inc. Compact linked-list-based multi-threaded instruction graduation buffer
US7721071B2 (en) * 2006-02-28 2010-05-18 Mips Technologies, Inc. System and method for propagating operand availability prediction bits with instructions through a pipeline in an out-of-order processor
US20080016326A1 (en) 2006-07-14 2008-01-17 Mips Technologies, Inc. Latest producer tracking in an out-of-order processor, and applications thereof
US7370178B1 (en) * 2006-07-14 2008-05-06 Mips Technologies, Inc. Method for latest producer tracking in an out-of-order processor, and applications thereof
US7650465B2 (en) 2006-08-18 2010-01-19 Mips Technologies, Inc. Micro tag array having way selection bits for reducing data cache access power
US7657708B2 (en) * 2006-08-18 2010-02-02 Mips Technologies, Inc. Methods for reducing data cache access power in a processor using way selection bits
US7647475B2 (en) * 2006-09-06 2010-01-12 Mips Technologies, Inc. System for synchronizing an in-order co-processor with an out-of-order processor using a co-processor interface store data queue
US8032734B2 (en) * 2006-09-06 2011-10-04 Mips Technologies, Inc. Coprocessor load data queue for interfacing an out-of-order execution unit with an in-order coprocessor
US20080082793A1 (en) * 2006-09-29 2008-04-03 Mips Technologies, Inc. Detection and prevention of write-after-write hazards, and applications thereof
US9946547B2 (en) * 2006-09-29 2018-04-17 Arm Finance Overseas Limited Load/store unit for a processor, and applications thereof
US7594079B2 (en) 2006-09-29 2009-09-22 Mips Technologies, Inc. Data cache virtual hint way prediction, 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
US7711935B2 (en) * 2007-04-30 2010-05-04 Netlogic Microsystems, Inc. Universal branch identifier for invalidation of speculative instructions
US8127115B2 (en) * 2009-04-03 2012-02-28 International Business Machines Corporation Group formation with multiple taken branches per group
US9354887B2 (en) * 2010-06-28 2016-05-31 International Business Machines Corporation Instruction buffer bypass of target instruction in response to partial flush
US9645866B2 (en) 2010-09-20 2017-05-09 Qualcomm Incorporated Inter-processor communication techniques in a multiple-processor computing platform
US9280398B2 (en) 2012-01-31 2016-03-08 International Business Machines Corporation Major branch instructions
US9229722B2 (en) 2012-01-31 2016-01-05 International Business Machines Corporation Major branch instructions with transactional memory
US9304932B2 (en) 2012-12-20 2016-04-05 Qualcomm Incorporated Instruction cache having a multi-bit way prediction mask
KR102077753B1 (ko) * 2013-10-25 2020-04-07 어드밴스드 마이크로 디바이시즈, 인코포레이티드 레벨 1 명령 캐시 및 분기 예측 유닛에서의 대역폭 증가
US10216520B2 (en) * 2014-10-06 2019-02-26 Via Technologies, Inc. Compressing instruction queue for a microprocessor
JP7004905B2 (ja) * 2018-03-26 2022-01-21 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN109101276B (zh) 2018-08-14 2020-05-05 阿里巴巴集团控股有限公司 在cpu中执行指令的方法

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS50152629A (zh) * 1974-05-27 1975-12-08
JPS5729153A (en) * 1980-07-29 1982-02-17 Fujitsu Ltd Control system for instruction processing order
JPS57152046A (en) * 1981-03-13 1982-09-20 Mitsubishi Electric Corp Instruction buffer controlling method
JPS58149548A (ja) * 1982-03-02 1983-09-05 Hitachi Ltd メモリ制御方式
JPS5991549A (ja) * 1982-11-17 1984-05-26 Nec Corp 命令バツフアへの命令語格納方式
EP0109655B1 (en) * 1982-11-17 1991-07-24 Nec Corporation Instruction prefetching device with prediction of a branch destination address
DE3305693A1 (de) * 1983-02-18 1984-08-30 Nixdorf Computer Ag Schaltungsanordnung zur zwischenspeicherung von befehlsworten
US4635194A (en) * 1983-05-02 1987-01-06 International Business Machines Corporation Instruction buffer bypass apparatus
AU553416B2 (en) * 1984-02-24 1986-07-17 Fujitsu Limited Pipeline processing
US4682284A (en) * 1984-12-06 1987-07-21 American Telephone & Telegraph Co., At&T Bell Lab. Queue administration method and apparatus
US4777587A (en) * 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses
IL81762A0 (en) * 1986-04-11 1987-10-20 Symbolics Inc Instruction prefetch unit
EP0312764A3 (en) * 1987-10-19 1991-04-10 International Business Machines Corporation A data processor having multiple execution units for processing plural classes of instructions in parallel
US5247628A (en) * 1987-11-30 1993-09-21 International Business Machines Corporation Parallel processor instruction dispatch apparatus with interrupt handler
JPH0769821B2 (ja) * 1988-03-04 1995-07-31 日本電気株式会社 情報処理装置におけるバイパスライン制御方式
JP2810068B2 (ja) * 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
JPH0778735B2 (ja) * 1988-12-05 1995-08-23 松下電器産業株式会社 キャッシュ装置と命令読出し装置
US5113515A (en) * 1989-02-03 1992-05-12 Digital Equipment Corporation Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer
EP0394624B1 (en) * 1989-04-24 1997-06-18 International Business Machines Corporation Multiple sequence processor system
CA2016068C (en) * 1989-05-24 2000-04-04 Robert W. Horst Multiple instruction issue computer architecture
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
JPH03139726A (ja) * 1989-10-26 1991-06-13 Hitachi Ltd 命令読出し制御方式
US5121502A (en) * 1989-12-20 1992-06-09 Hewlett-Packard Company System for selectively communicating instructions from memory locations simultaneously or from the same memory locations sequentially to plurality of processing
DE69030648T2 (de) * 1990-01-02 1997-11-13 Motorola Inc Verfahren zum sequentiellen Vorabruf von 1-Wort-, 2-Wort oder 3-Wort-Befehlen
US5185868A (en) * 1990-01-16 1993-02-09 Advanced Micro Devices, Inc. Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy
US5283873A (en) * 1990-06-29 1994-02-01 Digital Equipment Corporation Next line prediction apparatus for a pipelined computed system
EP0477598A2 (de) * 1990-09-26 1992-04-01 Siemens Aktiengesellschaft Befehlswerk für einen n Prozessorelemente aufweisenden Prozessor
US5299321A (en) * 1990-12-18 1994-03-29 Oki Electric Industry Co., Ltd. Parallel processing device to operate with parallel execute instructions
JP2877531B2 (ja) * 1991-02-04 1999-03-31 株式会社東芝 並列演算処理装置
JPH04275628A (ja) * 1991-03-01 1992-10-01 Mitsubishi Electric Corp 演算処理装置
DE4211222B4 (de) * 1991-04-05 2009-05-28 Kabushiki Kaisha Toshiba, Kawasaki Abzweigungs-Vorhersage-Vorrichtung und Abzweigungs-Vorhersage-Verfahren für einen Super-Skalar-Prozessor
JP2642529B2 (ja) * 1991-04-30 1997-08-20 株式会社東芝 並列プロセッサーの命令分配処理装置
JPH052484A (ja) * 1991-06-24 1993-01-08 Mitsubishi Electric Corp スーパースカラプロセツサ
CA2107046A1 (en) * 1993-01-08 1994-07-09 James Allan Kahle Method and system for increased instruction dispatch efficiency in superscalar processor system
US5367703A (en) * 1993-01-08 1994-11-22 International Business Machines Corporation Method and system for enhanced branch history prediction accuracy in a superscalar processor system
JP2744882B2 (ja) * 1993-01-15 1998-04-28 インターナショナル・ビジネス・マシーンズ・コーポレイション キューにより命令の実行を制御する装置及び方法
US5680564A (en) * 1995-05-26 1997-10-21 National Semiconductor Corporation Pipelined processor with two tier prefetch buffer structure and method with bypass
US5835746A (en) * 1997-04-21 1998-11-10 Motorola, Inc. Method and apparatus for fetching and issuing dual-word or multiple instructions in a data processing system
US6065110A (en) * 1998-02-09 2000-05-16 International Business Machines Corporation Method and apparatus for loading an instruction buffer of a processor capable of out-of-order instruction issue

Also Published As

Publication number Publication date
WO1995016954A1 (fr) 1995-06-22
EP1320031A3 (en) 2008-12-17
US20030033505A1 (en) 2003-02-13
EP0690373B1 (en) 2004-03-17
HK1013153A1 (en) 1999-08-13
EP0690373A1 (en) 1996-01-03
EP1320031A2 (en) 2003-06-18
US5954815A (en) 1999-09-21
US6247124B1 (en) 2001-06-12
US6691221B2 (en) 2004-02-10
DE69433621D1 (de) 2005-01-27
US5604909A (en) 1997-02-18
CN1104680C (zh) 2003-04-02
DE69433621T2 (de) 2005-05-12
KR100212204B1 (ko) 1999-08-02
EP0690373A4 (en) 1997-05-14
CN1267819C (zh) 2006-08-02
KR960701400A (ko) 1996-02-24
JP2815237B2 (ja) 1998-10-27
CN1117765A (zh) 1996-02-28

Similar Documents

Publication Publication Date Title
CN1267819C (zh) 计算机系统内部处理指令的装置
CN1053508C (zh) 超标量计算机
CN1138205C (zh) 以不同等待时间调度指令
US5185868A (en) Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy
US4891787A (en) Parallel processing system with processor array having SIMD/MIMD instruction processing
US5251306A (en) Apparatus for controlling execution of a program in a computing device
CN1045024C (zh) 在超标量处理机系统中提高指令调度效率的方法
US5418970A (en) Parallel processing system with processor array with processing elements addressing associated memories using host supplied address value and base register content
US4099229A (en) Variable architecture digital computer
US4873626A (en) Parallel processing system with processor array having memory system included in system memory
CN1294485C (zh) 相关性链处理器
US5165023A (en) Parallel processing system with processor array and network communications system for transmitting messages of variable length
US6829697B1 (en) Multiple logical interfaces to a shared coprocessor resource
CN1144934A (zh) 具有执行送数指令执行部件的数据处理器及其操作方法
US7366874B2 (en) Apparatus and method for dispatching very long instruction word having variable length
CN1161689C (zh) 在超标量处理器中处理装入指令的方法和电路
EP0762270B1 (en) Microprocessor with load/store operation to/from multiple registers
CN1890631A (zh) 于卷标边界自指令缓存至追踪缓存的转换
EP0735463A2 (en) Computer processor having a register file with reduced read and/or write port bandwidth
SE424114B (sv) Central processorenhet-anordning
EP0653703B1 (en) Temporary pipeline register file for a superpipelined superscalar processor
CA2071481A1 (en) Cluster architecture for a highly parallel scalar/vector multiprocessor system
CN1042863C (zh) 用于在超标量处理机系统中索引中间存储器缓冲区的指定的方法和系统
US5898882A (en) Method and system for enhanced instruction dispatch in a superscalar processor system utilizing independently accessed intermediate storage
CN87100507A (zh) 微处理器芯片上的堆栈式超高速缓冲存储器

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
ASS Succession or assignment of patent right

Owner name: ARM FINANCE OVERSEAS LTD.

Free format text: FORMER OWNER: BRIDGE DECK LLC

Effective date: 20150116

Owner name: BRIDGE DECK LLC

Free format text: FORMER OWNER: MIPS TECHNOLOGIES INC.

Effective date: 20150116

Owner name: MIPS TECHNOLOGIES INC.

Free format text: FORMER OWNER: KABUSHIKI KAISHA TOSHIBA

Effective date: 20150116

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150116

Address after: cambridge

Patentee after: ARM Overseas Finance Co.,Ltd.

Patentee after: Toshiba Corp.

Address before: American New Jersey

Patentee before: Overpass Bridge Co.,Ltd.

Patentee before: Toshiba Corp.

Effective date of registration: 20150116

Address after: American New Jersey

Patentee after: Overpass Bridge Co.,Ltd.

Patentee after: Toshiba Corp.

Address before: American California

Patentee before: MIPS Technologies, Inc.

Patentee before: Toshiba Corp.

Effective date of registration: 20150116

Address after: American California

Patentee after: MIPS Technologies, Inc.

Patentee after: Toshiba Corp.

Address before: American California

Patentee before: Silicon Graphics, Inc.

Patentee before: Toshiba Corp.

C17 Cessation of patent right
CX01 Expiry of patent term

Expiration termination date: 20141215

Granted publication date: 20060802