计算机系统内部处理指令的装置的制作方法

文档序号:6591974阅读:226来源:国知局
专利名称:计算机系统内部处理指令的装置的制作方法
技术领域
本发明涉及计算机系统,特别是计算机系统内部处理指令的装置。
背景技术
通常,在计算机内部,执行从指令存储器中取出指令,存储到缓冲器内,并向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[40]的值。STATE[42]用于决定各排队部分66A-D的缓冲器IBUF0-IBUF5的某一个将下一个指令供给寄存器22A-D,STATE[10]的功能是用作图1A-1C所示的指针26(模4计数器),表示接着调度哪个指令。F-INST寄存器90保持INST-CONSUME的值,表示每个周期内消费多少指令(即,不论有效的排队寄存器时钟的总合如何或有效无效,从调度寄存器18调度的指令数的总合)。该INST-CONSUME在后面与图8一起说明。该INST-CONSUME由加法器92与STATE[40]进行加法运算后,表示应调度的指令。STATE[42]每当装入调度寄存器18所使用的指令串排队前进时递增。STATE[40]更新后的值返回RDPTR寄存器86,进行装入,并通过通信路径98A、98B传送给排队器MUX(多路转换)选择电路98。如果令STATE[42]=“101”(=5),则指令缓冲器是满的,装置停止向由此以上的排队部分装入指令。
排队器MUX选择电路98根据STATE[42]和STATE[10]的值将后面的(按程序顺序)连续的指令传送给调度寄存器18。图3和表1对于STATE[10]的不同值给出了各排队部分66A-D的哪个缓冲器将后面的指令传送给对应的寄存器22A-D。
表1
STATE[10]Q0MXSEL Q1MXSEL Q2MXSEL Q3MXSEL0STATE[42] STATE[42]STATE[42]STATE[42]1STATE[42]-1 STATE[42]STATE[42]STATE[42]2STATE[42]-1 STATE[42]-1 STATE[42]STATE[42]3STATE[42]-1 STATE[42]-1 STATE[42]-1 STATE[42]因此,在STATE[10]=2时,如果STATE[42]=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[70])、指令高速缓冲器特征(tag[330]、对应的虚拟地址的高34位)、表示有效性的位(V)和表示指令的地址空间的区域字段(r[10])。
图7是指令流水线的取出(F)阶段。计数器116A和计数器116B构成将特征存储器部分34A和转移高速缓冲器114进行定址的主F阶段程序计数器。作为特征存储器部分34A的行的标志即计数器116的值(fpc[134])通过通信路径38A传送给特征存储器部分34A和增量电路138。增量电路138将计数器值加1,并通过通信路径144将增加后的值传送给多路转换器142A和多路转换器142B。多路转换器142A和多路转换器142B通过通信路径148从转移高速缓冲器114接收标志字段,通过通信路径160(如以下所示的那样)接收修正地址。通信路径160的值(pc-jam-bus[132])用于修正错误的转移预测及高速缓冲器错误和其他错误。多路转换器142B接收转移高速缓冲器写入地址(bcwdr[134])。用于更新转移高速缓冲器114的数据(be-wdata[141])通过通信路径168传送给寄存器164。多路转换器142A和142B选择适当的地址,分别传送给计数器116A和116B。
寄存器172用于存储表示计数器116A和116B是否按照由增量电路138增加后的值进行装入和计数器116A和116B是否从通信路径148和通信路径160进行装入的并行装入位(f-pld),寄存器176存储与转移高速缓冲器114入口的目的字段(通信路径148的bc[143]的位[43])对应的值(fpc[32])。寄存器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的开头四组信息的位[562]存储到寄存器200内,特征存储器部分34A的后续四组信息存储到DLTAG寄存器204内。如果有开头四组信息的转移高速缓冲器114入口的目的字段(fpc[32]),就传送给多路转换器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对偏移值的位[172]进行符号扩展。将26位的偏移值传送给通过通信路径292接收由AOFFSET寄存器272或转移目的加法器260计算的转移目的地址位[272]的多路转换器288。多路转换器288利用存储在AOFFSET寄存器272中的偏移值置换计算的转移目的地址的位[272]。
转移目的加法器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[470]、为了转移而通过通信路径388计算的转移目的地址、在指令高速缓冲器错误中用于保持EPC值而来自通信路径358的EPC值以及通过通信路径396更新的EPC值。所选择的值输出到通信路径430(PC-JAM-BUS[470]),该通信路径的位[132]如图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个指令,并可以顺利地进行指令的供给,从而可以提高执行速度。
另外,在取出指令的时刻进行转移的预测,通过立即取出转移目的指令,在执行转移指令之后便可准备转移目的指令,所以,因转移而引起的执行速度降低可以减小到最小。
权利要求
1.一种在计算机系统内部处理指令的装置,其特征在于具有指令存储器和转换存储器,指令存储器用于存储多个指令串;转移存储器用于在执行指令存储器的转移指令时存储多个包含用于预测由该转移指令指定的转移是否成功的信息的转移预测入口。
2.按权利要求1所述的装置的特征在于各转移预测入口包括转移目的字段,该转移目的字段表示含有转移成功时执行的转移目的指令的行所具有的转移目的地址。
3.按权利要求1所述的装置的特征在于各转移预测入口包括1位的转移预测字段,该1位的转移预测字段表示执行转移指令时由存储在指令存储器内的转移指令所示的转移是否成功。
4.按权利要求1所述的装置的特征在于各转移预测入口与指令存储器的1个行对应。
5.按权利要求4所述的装置的特征在于各转移预测入口包括转移目的字段,该转移目的字段表示含有转移成功时执行的转移目的指令的行所具有的转移目的地址。
6.按权利要求5所述的装置的特征在于各转移预测入口包括目的字段,该目的字段表示转移目的指令在由转移目的地址指示的行内位于何处。
7.按权利要求5所述的装置的特征在于各转移预测入口包括源字段,该源字段表示转移指令在与转移目的地址对应的行内位于何处。
8.按权利要求7所述的装置的特征在于还具有计数器、增量电路和计数器装入电路。计数器用于保持将指令存储器定址所使用的地址值;增量电路用于在正常操作时为了顺序将指令存储器内的行定址而使计数器的地址值递增;计数器装入电路用于在由指令存储器内的转移指令所指示的转移当以转移预测入口预测该转移指令执行成功时,将转移目的地址装入计数器。
9.按权利要求8所述的装置的特征在于还具有无效化电路,用于响应源字段,使由上述地址值定址的行内的指令无效。
10.按权利要求8所述的装置的特征在于还具有无效化电路,用于响应目的字段,使由上述地址值定址的行内的指令无效。
11.按权利要求8所述的装置的特征在于还具有无效化电路,用于响应源字段,使位于由上述地址值定址的行内的转移指令之后的指令无效;响应目的字段,使位于由上述地址值定址的行内的转移目的指令之前的指令无效。
全文摘要
计算机系统具有第1及第2指令存储电路,各指令存储电路存储用于并行输出的N个指令。与第1指令存储电路连接的指令调度电路调度存储在第1指令存储电路内的L个指令,这里,L等于或小于N。与第1及第2指令存储电路连接的指令装入电路在L个指令从第1指令存储电路内调度出之后并且别的指令还未从第1指令存储电路调度之前将L个指令从第2指令存储电路装入第1指令存储电路。
文档编号G06F9/32GK1492319SQ0214076
公开日2004年4月28日 申请日期1994年12月15日 优先权日1993年12月15日
发明者钱达·S·乔希, 保罗·罗德曼, 彼得·苏颜特, 莫尼卡·R·诺法尔, R 诺法尔, 罗德曼, 苏颜特, 钱达 S 乔希 申请人:硅图像有限公司, 株式会社东芝
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1