包含指令调度和取消控制的超级标量微处理器指令流水线的制作方法

文档序号:6408463阅读:302来源:国知局
专利名称:包含指令调度和取消控制的超级标量微处理器指令流水线的制作方法
技术领域
本发明涉及一般流水线化的超级标量微处理器。特别是本发明涉及正常处理中和异常处理后的流水线化超级标量微处理器的指令调度处理。
微处理器具有地址处理、执行和控制动作用的有限个单片供应元。即,在微处理器(在经济性和执行速度两方面)所花费用与供应元数量之间,存在一定的折衷条件。另外,微处理器的设计者在设计特定的供应元组合时,应考虑以最高的效率使用这些供应元,以便发挥最高的性能。
例如,在标量处理器的情况下,作为有意义的供应元的限制例子,可以举出从存储器取出只传送给ALU(运算器)芯片的有效性。该ALU根据数据操作,并供应输出,然后,从存储器传送其他操作数时,则应与执行其他运算对应。
由于ALU是关键部件,所以,可以很容易识别未处于暂停状态。另外,为了提高性能,在ALU之前加了流水线状的结构。即,利用流水线结构可以用尽可能高的速度处理操作数。由于不需要操作数等待,所以,可以提高性能。
但是,在流水线中含有非法数据的状态下,将发生各种问题。这种状态的一个例子是从状态转移产生的。即,流水线可能含有只与转移状态的一个可能性对应的数据,但有时数据是非法的。因此,异常或者陷阱这样的用语就是为了识别由该系统执行的异常处理要求而使用的。
为了处置这种异常情况,开发了各种对策,而新的对策又反复出现新的问题,现在仍继续看。但是,在这种继续进行的新的改良系统的开发中,本来的目的是最大限度地发挥性能。
超级标量微处理器也存在同样的问题,这些问题曾是庞大而复杂的问题。超级标量微处理器具有多功能单元,同一单元不仅执行指令,而且可以作为其他功能单元而执行其他动作。例如,标量处理器具有每一个流水线阶段有1个指令的流水线时,超级标量微处理器就具有每一个阶段可以有多个指令的流水线。
巨型计算机常常采用这种超级标量结构,这时,性能和费用的综合也是重要的问题。同时,由微处理器所具有的供应元发挥最大的计算能力是非常重要的。另外,在发挥最高性能的要点中包括可以迅速处理异常情况的高速而高效率的流水线。这时,用于使功能单元尽可能迅速对应的程序指令需要对处于忙碌状态的供应元进行高速分析。
本发明在具有多种执行能力的超级标量微处理器中提供具有高速且高效率流水线的装置和方法。本发明的流水线,在可利用的供应元流水线内可以迅速地适应于调度的指令。另外,在该流水线中发生的异常情况都可以在同一流水线级中用相同的方法高效率地处理。
按照本发明的一种形式,具有5阶段的超级标量整数流水线,流水线对数据进行取出、译码、地址处理、执行并且写入寄存器文件。这时,预译码器在取出阶段对指令进行预处理,确定供应元的竞争状态,给各指令附加包含特殊分类码的代码,改善指令的调度处理(分配发送处理)。
在译码阶段,按照供应元的记录板和其他供应元的关联状态,将整数指令按程序的顺序传送给功能单元。另外,在地址处理和执行阶段,浮点指令在重新格式化后供给的供应元代码顺序内循环,在4个指令同时写入的阶段,在与浮点单元对应的先进先出(FIFO)队列内循环。
按照本发明的其他形式,在指令执行错误、多种高速缓冲存储器位错误和转移预测错误等情况下的异常处理都在上述执行阶段确定。即,在超级标量流水线中,利用指令优先位,可以可靠地执行具有比异常因素优先性高的指令。另一方面,异常指令和优先性低的指令及其效果被抵消。此外,参照包括附图和权利要求范围在内的本说明书的其余部分,可以理解本发明的其他特征和优点。


图1是具有整数单元12和浮点单元14的超级标量微处理器单元(SMU)10的框图。
图2是表示SMU10的功能指令流程路径(流水线)的一种形式的框图。
图3表示SMU10流水线结构的5阶段整数流水线部分250的同时也是用于说明各阶段执行功能的框图。
图4是表示SMU10流水线结构的浮点流水线300与整数流水线250去耦的框图。
图5是表示包括整数流水线250、外部高速缓存流水线302和浮点流水线300的组合流水线350的框图。
图6是图2所示的调度单元202的详细框图。
图7是表示预译码处理后的重新格式化指令450的模板图。
图8是通过图6所示整数调度单元402的数据通路流程的框图。
图9是用来说明用于设定并确定供应元竞争的寄存器记录板480使用方法的概要图。
图10是基于极佳的实施例的取出和调度系统500的简化框图。
图11是示出在4个周期中图10所示指令排队的动作图。图12是表示重新格式化浮点操作指令550的模板和重新格式化处理后的重新格式化浮点存储器操作指令552的模板图。
图13是用于执行浮点装入(供给)操作的SMU10调度处理概要图。
图14是用于执行浮点存储操作的SMU10的调度处理概要图。
下面,参照附图按照以下内容的顺序说明本发明。
内容I.绪论II.流水线结构III.调度处理IV.流水线的再填充和异常处理V.结论I.绪论图1是具有整数单元12和浮点单元14的超级标量微处理器单元10的框图。在该极佳的实施例中,整数单元12和浮点单元14共同相互作用构成单一的微处理器,但是,这些功能在两种隔离的集成电路装置之间在物理上分割开来。微处理器单元10具有通过特征存储器单元18进行存取的全局外部高速缓冲存储器(GS)16。即,外部高速缓冲存储器16从对整数单元12和浮点单元14两方面利用的角度看,是全局的。
整数单元12具有多个功能单元。这些功能单元具有与整数寄存器文件52连接的整数处理执行单元50。另外,执行处理单元50具有2个整数运算逻辑单元(IALUs)和移位器及乘法—加法单元。该执行单元50根据从寄存器文件52接收的数据动作,再将结果写回去。
整数单元12将整数数据从单板数据高速缓冲存储器(DS)54装入寄存器文件52,将数据从寄存器文件52装入DS54,并通过浮点单元14存储到外部高速缓冲存储器内。地址发生器56向DS54供给虚拟地址,并使用寄存器文件52的数据产生地址。
存储在该DS54内的数据只是全有效存储器的一部分,整数单元12所需要的数据有时在DS54中也是无效的。这时,整数单元12对外部高速缓冲存储器16进行存取,并将所希望的数据供给DS54。为了对外部高速缓冲存储器16进行存取,整数单元12利用转换后备缓冲器(TLB)58将从地址生成器56供给的虚拟地址变换为物理地址。并且,TLB58将物理地址供给外部高速缓冲存储器16和特征存储器单元18。然后,外部高速缓冲存储器16用所希望的数据填充DS54。
整数单元12为了控制数据流和操作而使用指令。因此,整数单元12具有指令高速缓冲存储器(IS)70、转移预测高速缓冲存储器(BS)72、指令缓冲器74、调度单元80和浮动小数点指令排队缓冲器(FPQ)82,在超级标量微处理器单元10内按照适当的顺序进行指令的收集和向适当的供应元供给。
IS70存储并供应指令,一部分指令是转移指令,生成程序流程中的不连续点。BS72与IS70连接,存储与IS70中各转移指令对应的转移目标指针。指令缓冲器74另外还和IS70的输出连接,按照所希望的顺序装入IS70的指令。
调度单元80读取指令缓冲器74的指令,取出这些指令检查所需要的硬件供应元是否有效,并且,将指令供给微处理器单元10的适当功能单元。该调度单元80将传送给浮点单元14的预定的指令调度给浮点排队缓冲器82。调度单元80向执行单元50调度整数操作指令,向地址生成器56调度存储指令。
另外,浮点单元14具有浮点执行单元(FPXU)100、浮点寄存器文件(FREG)102、浮点装入排队缓冲器(LDQ)104和存储排队缓冲器106。FPXU100具有根据从FREG102读取的数据而动作的2个浮点执行单元,并将处理结果写回FREG102。
该FPU14由于不含有任何地址控制结构,所以,整数单元12从外部高速缓冲存储器16存取所需要的数据,并将这些数据装入LDQ104。然后,按FPU14的装入指令读取LDQ104的适当的数据,并将其写入FREG102。同样,存储信息通过STQ106从FREG102向外部高速缓冲存储器16传送。这时,FPU14的存储指令的作用应使数据向STQ106传送。这样,整数单元12便可控制数据向外部高速缓冲存储器16的存储。
这种SMU10的超级标量特性便对上述执行功能的复杂性是有意义的。但是,为了协同动作,存在有效的多个执行单元和地址生成单元,所以,在极佳的实施例中,SMU10具有多路径流水线结构。
例如,指令缓冲器74每一个周期从IS70中取出4个指令。因此,调度单元80在各周期内向地址生成单元56传送最多2个存储指令,向执行单元50传送最多2个整数操作指令,向FPQ82传送4个浮点指令。并且,在极佳的实施例中,按照连续操作模式使用该流水线。换言之,流水线不停止,使指令从流水线中的一个阶段向另一个阶段连续地前进。关于调度处理、流水线的控制和再填充的详细情况,后面叙述。
II.流水线结构图2是SMU10的功能指令流程路径(流水线)的一种形式的框图。在图2中,用和图1相同的参照序号所示的部分表示相同的成分。即,使用SMU10的系统在初始化之后,整数单元12将通过数据总线200从外部高速缓冲存储器16将一组适当的指令装入IS70。这些指令分别为32位宽度。整数单元12为了一次将4个指令装入IS70,数据总线200为12.8位的宽度。
调度单元202具有一定的预译码功能、指令缓冲器74、调度单元80、一定的浮点格式化功能以及FPQ82,这些都在图1中示出。因此,调度单元202通过数据总线204一次接收4个指令,各指令附加上18位后使程序处理变得容易,将这些指令排队后,进而按每一个周期顺序标上0~4个指令。这时,超过位的附加处理就成为预译码操作的一部分。
在这种指令的调度操作中,指令总是按顺序发送的。即,当上述调度单元202以任何理由(这些理由将在后面叙述)也不能发送任何特定的指令时,在指令流中位于其后面的指令在发送完其前面的所有指令之前不能发送。
因此,调度单元202构成为具有多个流水线,可以传送指令。在这些流水线中,包括存储流水线210、整数流水线212和浮点流水线214。存储流水线210和整数流水线212各具有2个独立的流水线,浮点、流水线214具有4个指令宽度,并具有与2个浮点动作和2个浮点存储操作相对应的宽度。
这样,调度单元202就通过存储流水线210将存储指令传送给地址发生器56,将整数动作指令传送给执行单元50,将浮点指令传送给FPU14。这时,调度单元202将一部分浮动存储指令传送给用于生成地址的存储流水线210和浮点流水线214。另外,调度单元202还将浮点比较指令和条件移动指令等一部分浮点指令传送给用于执行操作的整数流水线212和浮点流水线214。
除了根据图1说明的成分外,在图2中,还包括将DS54的输出与调度单元202连接的整数存储流水线222和在特征存储器单元18与外部高速缓冲存储器16之间连接的地址排队缓冲器224。整数存储流水线222在整数单元12向DS54进行存储操作之后,可以更新外部高速缓冲存储器16。这样,整数单元12便可使整数存储指令及其附带的数据在调度单元202内整体组合化。并且,在组合化之后整数单元12将指令和数据向浮点流水线214传送,并将对于外部高速缓冲存储器16的数据存储到FPU14内。
用于存储STQ106数据的适当地址通过地址排队缓冲器224由整数单元12供给。这时,使传送给FPU14的指令与LDQ104和地址排队缓冲器224的适当数据一致是调度单元202的一部分功能。
图3是SMU10的流水线结构的5阶段整数流水线250的部分,同时说明各阶段执行的功能。该整数流水线250的优点包括在指令的取出处理和执行处理之间具有短的等待时间、没有装入延迟时隙、存储后从属装入处理时供给同一周期数据及转移和延迟时隙在同一周期内可以同时执行的特性。另外,在极佳的实施例中,SMU10提供在精减指令系统计算机(RISC)中使用的处理器。该RISC结构将对这里记载的设计和实施的很多方面有影响。
在下面图3的说明中,也会涉及到在图1和图2中所示的成分。即,整数流水线250包括取出阶段252、译码阶段254、定址阶段256、执行阶段258和写回阶段260。在整数流水线250中,包含存储流水线210和整数指令流水线212。
取出阶段252具有整数单元12,通过数据总线200从外部高速缓冲存储器16向IS70供给指令。如前面所述,调度单元202具有一定的预译码功能。即,预译码器从IS70得到4个32位指令后,给各指令附加上18位,使调度处理变得容易。然后,预译码器将经过预译码处理的指令传送给指令缓冲器74。另外,在取出阶段252,还执行一定的转移预测动作。利用该取出阶段252的转移预测动作每隔4个字进行一次转移预测。
然后,译码阶段254对指令缓冲器74的指令进行存取后对其进行译码,并确定这些指令的种类。由于SMU10每一个周期最多可以处理4个指令,所以,确定用于识别各周期中指令相对顺序的机构是重要的。在该译码阶段,调度单元202必须将这些指令表示在记录板上,使有效功能与指令要求对应。并且,调度单元202只发送与有效功能对应的指令。在译码阶段,寄存器文件52根据存储指令进行存取,取出地址寄存器特定的信息。
另外,译码阶段254通过读取按所执行的下一个指令而动作的程序计数器,确定指令中的相对优先度。在发送指令时,调度单元202使指令的相对优先度附加在与各指令一起发送的控制字上。
这时,本发明的优点是当从指令缓冲器进行少于4个字的调度处理时,不需要按指令缓冲器中供给元代码顺序重新调整指令。
另外,定址阶段256使用地址生成器56产生装入地址和存储地址。
执行阶段258具有大多数作用功能。即,执行单元50进行所有的整数运算逻辑单元(IALU)的动作,在例外情况下执行乘法和除法运算(这些运算需要很多周期),这种1周期的乘法和除法运算操作在执行阶段中进行。即,执行单元50在执行阶段258中将数据从DS54向寄存器文件52供给。此外,整数单元12在执行阶段258中确定转移,执行TLB58的检查,并检测异常的状态。
写回阶段260接在执行阶段258后面,使SMU10的流水线的整数流水线250部分结束。这样,在执行阶段258中,通过使指令有效地结束,就可以向寄存器文件52任意进行所需要的写入操作。另外,由执行阶段258的异常检测操作和结果可以给能向寄存器文件52写入的时间附加条件。这时,向寄存器文件52的写入就是不可逆的。因此,整数单元12便正确地执行指令,并只可能在执行阶段258中检测出的任何种类异常状态下也不发生优先度更高的指令(即,在指令流中应优先其他的指令)时写入。下面,进行关于异常处理和确定的更详细的说明。
图4是表示SMU10的流水线结构中的浮点流水线300部分与整数流水线250分离的框图。图4的说明按图2的成分进行。如前面所述,整数单元12将地址控制信息供给外部高速缓冲存储器16,存取与浮点单元14对应的数据。这就意味着浮点装入和存储指令通过整数流水线250特别是存储流水线210到达TLB58,并在外部高速缓冲存储器16中生成所需数据的物理地址。从TLB58到外部高速缓冲存储器16和LDQ104的数据路径构成图4所示的外部高速缓冲存储器流水线302。该外部高速缓冲存储器流水线302在5周期内动作。在极佳的实施例中,为了改善带宽,外部高速缓冲存储器16交错存取结构。即,偶数地址配置在16a所示的第1存储空间内,奇数地址配置在第2存储空间16b内。另外,特征存储器18同样分割为偶数特征存储器18a和奇数存储器18b。
外部高速缓冲存储器流水线302通过将数据供给LDQ104,生成与FPU14对应的数据。这里,由于外部高速缓冲存储器16的交错存储功能,LDQ104也分割为偶数LDQ(LDQE)104a和奇数LDQ(LDQE)104b。另外,整数单元12具有地址组件304,组件的动作记载在1993年12月15日申请的题为《多个平行存取处理的交错结构存储系统的冲突解除法》的美国专利申请中。即,当要求在整数流水线250的同一侧流过的2个指令从流水线到达时地址组件304可改善交错存取式外部高速缓冲存储器302的性能。就是说,地址组件304保持指令的一部分,使优先性更高的指令前进,而在下一个周期可以供给所保持的指令。
整数流水线250执行所有的高位指令,并且在解除任何异常状态或相关状态之前不向FPQ82发送指令。但是,当有1个指令发送给FPQ82时,这些指令就都可以供给。因此,指令在写回阶段260之前不在FPQ82中排列。
另外,SMU10采用在1993年12月15日申请的题为《隔离电平高速缓冲存储器》的美国专利申请中记载的隔离电平高速缓冲存储器结构。使用5阶段的外部高速缓冲存储器302,在浮点指令的情况下,将发生问题,在简单的实施中,在浮点装入之后有可能妨碍发送与5周期(或者最多20个指令)对应的任何浮点指令。
FPU14与整数流水线250的隔离,隐含着外部高速缓冲存储器流水线302的5个周期。FPQ82作为先进先出(FIFO)队列缓冲器而实施。因此,使用浮点装入指令结果的浮点指令可以迅速地跟随在FPQ82的浮点装入指令之后。所以,调度单元202可无视外部高速缓冲存储器302的潜在性。此后,整数流水线250便迅速而自动地继续进行其他指令的动作。该装入指令通过存储流水线210向外部高速缓冲存储器流水线302前进,在5周期之后,将装入数据寄存在LDQ104内。然后,在装入数据在LDQ104中成为有效之前,浮点装入指令在FPQ82中等待,并在完成准备的时刻,向FPU14传送。另外,在装入数据供给FREG文件102之前,运算指令在FPQ82中浮点指令的后方等待。
FPU14的隔离导致对整数指令执行浮点指令顺序之外的指令操作。另外,由于不要求执行浮点指令和整数指令顺序内的指令,所以外部高速缓冲存储器流水线304的潜在性可以被整数流水线250隐去。
图5是包括整数流水线250、外部高速缓冲存储器流水线302和浮点流水线300的组合流水线350的流程图。该组合流水线350按照分别与取出阶段、译码阶段、定址阶段、执行阶段和写回阶段对应的F、D、A、E、W周期,识别整数流水线250的各阶段。另外,组合流水线350还包括表示用于供给FPQ82浮点指令的超过周期的S阶段。即,根据供应元的冲突和寄存器的从属性,在S阶段发生浮点的发送。
用G、H、I、J和K所示的阶段是外部高速缓冲存储器流水线302的一部分。另外,组合流水线350还包括出现用于将装入数据向LDQ104写入的周期的L阶段。
另外,由T、R、X、Y、Z、U和V所示的阶段确定浮点流水线300。其中,T阶段是T总线传送阶段,容许指令从包含整数单元12的集成电路组件到包含FPU14的集成电路组件所需要的通过时间。而且,容许与从整数单元12向特征存储器18和外部高速缓冲存储器16传送等纵贯SMU10的芯片结构相对应的全部周期。
R阶段在需要时读取FREG102。这时,FPU14具有4个阶段,即X阶段、Y阶段、Z阶段和U阶段。这些阶段共同执行浮点操作。有时也进行需要通过执行阶段X—Y的几个路径的复杂的操作,但是,结果要反复地确定。另外,V阶段在写入FREG文件102后结束浮点流水线300。从以上说明可知,浮点流水线300具有用于对2个浮点指令和2个浮点存储指令每1周期同时操作的供应元。
III.调度处理图6是图2所示调度单元202的详细框图。即,调度单元202具有预译码器400、指令缓冲器74、整数调度单元402、浮点指令格式化单元404、浮点调度单元406和FPQ82。其中,整数调度单元402、浮点格式化单元404和浮点调度单元406共同构成图1的调度单元80。
如前面所述,在取出阶段252中,预译码器400从IS70中一次读取4个指令。然后,预译码器400参照一般供应元的要求检查从IS70读取的指令,将它们重新格式化后变换为极适合于寄存器记录板处理和供应元联锁的格式化。在该时刻,分析指令,并根据供应元要求完成预备性的确定,进而为了抽出各指令包含的信息,在指令流中存在用于检索各个指令的更多的有效时间。然后,在译码阶段,为了执行这些功能的一部分,几乎不存在有效时间。
图7是在预译码处理之后重新格式化指令450时的模板。该重新格式化指令450包括指令区域452、寄存器指定区域454、有效性区域456和操作码分类区域458。指令区域452是32位宽度的原始指令。另外,寄存器指定区域454、有效性区域456和操作码分类区域458是预译码器附加的区域。
由于寄存器文件52中存在32个有效的寄存器,所以,它们各自可以分别利用5位区域进行识别。即,指定寄存器区域454是与指令区域452的指令对应的表现指定寄存器的5位区域。并且,在存在指定寄存器时,当SMU10中使用的指令组以32位构成各指令时寄存器可以配置在多个不同的位置。因此,将指定寄存器配置在预译码处理中,通过将其配置在已知的位置,便可大幅度地节约以后的时间。即,与重要的寄存器值对应地设定固定位置是指定寄存器区域454中的一个目的。
有效性区域456将预译码器可以从指令中抽出的多数特征进行编码。有效性区域456的各个位值促进译码阶段254的调度处理。在极佳的实施例中,有效性区域456包括多个8位的位置。即,这些位置分别与rd有效、指令有效、int/fp指令、int和fp指令、rs有效、rt有效、预测位和延迟位对应。
rd有效位作为用于表示指定寄存器区域454的5个位对指令是否有效的开关而起作用。另外,还有不具有指定寄存器的指令。但是,整数指令可以分别具有最多3个寄存器,即指定寄存器和2个供应元寄存器。这时,SMU10将第1供应元寄存器定为rs寄存器,将第2寄存器定为rt寄存器。另外,各指令也可以使用0个、1个或者2个供应元寄存器。有效性区域456的rs有效位表示指令是否使用rs寄存器。同样,有效性区域456的rt有效位表示指令是否使用rt寄存器。但是,在SMU10时的指令组中,由于rs和rt寄存器容易配置,所以,在预译码处理中不必抽出这些寄存器。即,可以在指令中多数位置出现的是指定寄存器。
另外,指令有效位表示指令对整数调度单元402是否有效。int/fp指令有效位表示后继的指令对调度单元402是否为浮点指令,int和fp有效位表示后继指令是否为浮点指令和整数指令。
另外,有效性位内的2个位即预测位和延迟位根据转移预测逻辑而使用。这些既不由预译码器400确定,也不由调度系统使用,所以,这里省略进一步的说明。
另外,5位的操作码分类区域458按照调度单元402必须使1个指令或多个指令的组应与其他指令分开处理的特定供应元要求或其他因素,将多个指令的组归纳为一体。下面的表I定义了在整数调度单元402中使用的操作码组。
表1Cat Opc 位模式 内容说明(43210)mvcfi 00101将控制寄存器从Copl移动到intmvfi00100将寄存器从Copl移动到intshift 00001移位mul 00011乘法运算mvhl00010从hi/loreg向移动fpcmp 10101Copl的比较ssnop 00110超级标量noop(空操作)movnz 00111条件移动bccdep 01011cc位相关的转移brbit 01001转移指令mvccdep 01010cc位相关的移动copost 11100Copl无效指令sc 01100条件存储ctcl11101将控制寄存器移动到Coplfpmbit 01111FP(浮点)装入/存储指令merge 01110向左装入/向右装入ldbit 11110装入指令在表I中,Cat Opc是与极佳的实施例对应选择的整数操作码的分类表。与Cat Opc对的位模式附加到由上述指令的操作码分类区域458中的特定分类所表示的指令上。位模式的标题下括弧内的数字分别表示位的位置序号,“0”表示低位的位序号,“4”表示高位的位序号。另外,在上述内容的说明中,涉及到协同处理器在极佳的实施例中的浮点单元。
假定上述OP代码的分类是为区别具有类似的供应元要求的指令而选择的,则存在着将共同的特征区分合并的操作码分类群。即,为了使用最少的附加位尽可能有效地进行预译码处理和其后的译码处理及调度处理,供应元的分配是意义的,并且分布在不同的操作码分类中的共同的特征具有类似的位模式。例如,最后6个操作码分类都表示存储器类型的指令,因此,设定位位置2和3。即,只有存储器类型指令OP代码分类设定位置2和3两个位。并且,调度单元402利用屏蔽位2和3迅速地确定存储器指令后便可知道这两个位置是否为“1”。同样,具有3种转移类型操作码分类即bccdep、br-bit和mvccdep,这些指令都具有与“010”一致的位位置2、3和4。
在保持着重要的相关性的不同操作码分类中,难以使用几种位充分地存储指令。但是,从成本和处理速度方面考虑,不希望不必要地增加附加到各指令上的多个位。
因此,在预译码处理之后。将预译码器400重新格式化并且将所处理的指令排列到指令缓冲器74中。从IS70中取出的4种指令总共是128位,指令缓冲器74存储的4种指令总共成为200位。即,利用从译码阶段254中的预译码处理得到的性能优点大幅度地补偿了对指令缓冲器74的超过存储的要求。
图8是通过图6所示的整数调度单元402的数据通路流程的框图。即,整数调度单元402具有5个交叉开关(多路转换器),交叉开关从指令缓冲器74(排队寄存器)接收指令。这些交叉开关包括2个整数动作交叉开关470、2个存储器交叉开关472和1个转移交叉开关474。
在供给调度单元402的4个指令内,整数交叉开关470选择开始的2个整数操作指令,并将其传送给整数流水线212。另外,在传送给整数流水线212的2个整数操作指令内,按照本发明的规格将优先度高的传送给称为左侧流水线的流水线。因此,交叉开关470将2个整数操作指令中优先度低的传送给整数流水线212的右侧整数流水线。
另外,存储器交叉开关472从指令缓冲器74传送来的4个指令中选择开始的2个存储器操作指令将其传送给存储器流水线210。这时,存储器交叉开关472将这2个存储器操作指令中优先度高的传送给左侧存储器流水线,将其他指令传送给右侧存储器流水线。
转移交叉开关474选择开始的转移指令将其传送给转移逻辑。图8所示的5种交叉开关都同时操作从指令缓冲器74平行地接收4种指令。这时,在从指令缓冲器74中接收的4种指令中,有可能存在多于或少于2个整数操作指令和多于或少于2个存储器动作指令以及多于或少于1个转移指令。因此,这些交叉开关在比适当的种类少的指令为有效时,就取出比各个最大值小的值。
SMU10是在各周期中可以执行4种指令的超级标量微处理器。但是,这些指令总是按顺序执行而传送的。因此,为了执行这种顺序的处理,在整数流水线250的各个阶段,特定阶段的各个指令具有相对优先度。即,表现这种相对优先度的2种优先度位附加到各指令上。
优先度利用跟随指令缓冲器74中附带的指令计数器在开始进行设定。该指令计数器从传送给调度单元402的4种指令中对优先度最高的指令继续附加指针。然后,随着调度单元402继续向流水线传送指令,指令计数器向指令缓冲器74的优先度最高的非调度指令附加指针。
在操作中,为了从4种指令中选择开始的2个整数操作指令,整数交叉开关与指令计数器的值对应地动作。为了迅速地找到整数指令,调度单元402找的既不是存储器指令也不是浮点指令,而是开始的2个有效指令。这时,各指令的有效性区域456的有效位和fp/int有效性位指示作为有效非浮点指令的指令。另外,为了确定这种指令是否为存储器指令,调度单元402将各指令的操作码分类区域中位模式的第2和第3位屏蔽。即,这两个位都不是“1”时,指令就不是存储器指令。并且将有效的非存储器且非浮点指令视为整数指令。
另一方面,存储器指令的选择是简单的。如上所述,调度单元402利用指令计数器、有效性区域456的有效位和操作码分类区域458的2和3位位置的屏蔽结果,可以迅速地确定开始的2个存储器指令。
用于供给转移逻辑的最高优先度的转移指令的选择,还和指令计数器、有效性区域456的有效位和位位置2、3及4的屏蔽与“010”的比较有关。并且,如果能恰好一致,则可将指令视为转移指令。传送给转移逻辑的指令也传送给另外一个流水线。
在译码阶段254中,特别是在存储器指令的情况下,定时是非常重要的。即,为了存取在下一个周期的地址生成中所用的信息,存储器指令尽可能迅速地发送给寄存器文件52是很重要的。因此,调度单元402是在确定供应元竞争之前将指令暴露给流水线。另外,与此相应地,调度单元402对各指令输出取消控制信号。即,该取消信号是对不应发送的指令输出的。并且,指令计数器只对有效发送的指令计数。换言之,在任意的译码处理周期中,由于某种理由指令不应全部发送时,调度单元402就对各发送指令发出取消信号。这时,指令计数器便停止计数。
调度单元402根据寄存器的记录板处理的结果(虽然是部分的)确定取消控制信号的状态。图9是用来简略说明用于设定并确定供应元竞争的寄存器记录板480使用方法的图。寄存器记录板480是为了防止寄存器文件52的寄存器不适当的存取而显示必要的比较的阵列。2个供应元寄存器的4种指令的各5个位值配置在阵列的最上部,整个阵列总共划有8条线。
调度单元402用来与排列在最上部的供应元寄存器对应值进行比较的各种寄存器的5个位值,配置在阵列的下部。这些阵列下部的寄存器包括4种指令的各指定寄存器区域454中的4个指定寄存器值。此外,寄存器记录板480也使用与在前一周期发送指令对应的指定寄存器的值。这些寄存器值分别标以ardil、ardir、ardml和ardmr的标号。这时,在前一周期发送的指令可以认为存在于定址阶段256。因此,ardil便意味着位于定址阶段的左侧整数流水线指令的指定寄存器。同样,ardir就是左侧整数流水线指定寄存器,ardml和ardmr分别是定址阶段的左侧和右侧存储器流水线的指令寄存器。
另外,也存在从FPU14取出数据并将其输送给寄存器文件52寄存器的移动指令。由于该处理需要时间,所以,用于接收数据的寄存器要进行记录板处理。在这些移动指令内,有属于任意时间的2个指令,mv0存储第1移动指令的指定寄存器,mv1存储第2移动指令的指定寄存器。
为了执行寄存器记录板480,存在有用于存储在4个或者小于4个当前译码周期中发送的指令所识别的供应元寄存器5个位值的8个寄存器。在各寄存器中,附有与各指令的有效性区域456对应的有效位。此外,还存在有用于保存识别4种发送指令、4个已发送指令和2个移动指令的指定寄存器5个位值的10个寄存器。保存指定寄存器信息的寄存器具有其附带的有效位(可从有效性区域456的rd有效位中采用)。
在图9中,在阵列的交点呈圆形时进行指定寄存器与供应元寄存器的比较。例如,为了知道与第1指令(rd0)对应的指定寄存器是否作为与指令2、3或4对应的供应元寄存器使用而进行比较。并且,在寄存器记录板480的情况下,可在各周期中进行5个位值的72种比较。调度单元一边延迟要求对其后的处于忙碌状态的供应元进行存取的指令,一边通过使优先度更高的指令能够使用寄存器来克服冲突。即,为了延迟这样发送的指令,调度单元402可发出与想要延迟的指令对应的取消信号。
另外,调度单元402在定址阶段256的整数流水线中对指令指定的寄存器进行记录板处理的理由之一,是通过使用定址用寄存器的装入,在下一周期中对向其后的寄存器的附加操作进行保护。由于寄存器保留从FPU14接收移动指令,FPU14便不必等待。即,这就是在操作结束之后功能单元不需要等待的SMU10的结构。
此外,为了确定应正确地发送哪个指令,调度单元402不仅使用寄存器记录板480的结果,而且还使用很多信息。即,克服供应元的冲突、可靠地按顺序发送指令是调度处理的目的之一。在整数单元12的情况下,对供应元的限制,包括1个乘法器、1个移位器、2个mvfti(使浮点寄存器按整数移动)对应的指定寄存器向mvfti对应的寄存器文件52进行非特殊的写入的端口及ccbit相关指令对应的处于忙碌状态的cc(状态码)位的有效性。例如,由于每一个周期只能发送1个移位指令,所以,4种指令群的第2移位指令必须等待到移位器成为有效时为止。
另外,调度单元402可以采用取消所有整数调度处理的多个状态。在这些状态下,包括转移预测错误或者异常状态之后的gflsh(队列排齐)、调试方式、浮点排队结束和存储流水线已处于不能处理存储动作的状态。
对于存储指令的情况,也有应解决的制约。即,在这些制约中,包括只与DS54对应的1个读取端口、对DS54的写入定时、只与整数对应的1个寄存器写入端口合并存储指令;为了保持整数的存储、mvift和mvcitf与指令共同相关的数据而要求FPQ82的整体存储;sc自动地前进;在FPU14中设定所有的cc位时,mvcitf自动地前进,并使cc位逻辑更简洁。
这些整数和存储器的制约可以限制调度单元402的指令调度处理,所以,在1个周期中,实际发送的指令要少于只根据寄存器记录板480的结果发送的指令。
图10是本发明的取出和调度系统500的简化框图。即,4个32位指令传送给排队缓冲器502。并且,供给的指令沿128位的分界线排列,送出的指令总是分别相邻。送入排队缓冲器502的指令由4字数组构成,从指令高速缓冲存储器(图中未示出)进入排队缓冲器502的最上部。调度单元504控制指令的发送,并具有调度寄存器506和选择电路508。另外,一群单板寄存器510将排队缓冲器502的输出与调度单元504连接。
调度单元506作为与译码器和寄存器文件连接之前的“指令寄存器”使用。调度单元506由单板寄存器510或者由排队缓冲器502的输出直接进行再循环或者再填充。另外,排队缓冲器502具有提供从指令高速缓冲存储器到调度寄存器直接通路的旁路(图中未示出)。
图11是表示图10所示的4周期的指令排队动作。即,在第1周期,排队缓冲器502、单板寄存器510和调度寄存器504使用按照以字符表示并下降的字母顺序执行的指令进行填充。并且,指令指针开始时指示指令“A”。
另外,在第1周期中,调度逻辑在潜在的第1行4个并行指令“A”~“D”中,确定可以同时执行的“A”和“B”。(例如,由于“C”可能从属于“A”,所以,不能发送。另外,由于系统是按照顺序进行发送的,所以,因“C”不能发送,故也不发送“D”。)然后,在第2周期中,调度逻辑的信号从单板寄存器510向调度寄存器504前进到“E”和“F”,并保持“C”和“D”。这样,指令计数器便将“C”指示为最高优先度指令,给出从“C”开始的“D”~“F”的优先性。并且,在第2周期中,在保持着“F”的状态下发送指令“C”~“E”。
然后,在第3周期中,指令“G”和“H”从单板寄存器510向调度寄存器504移动。但是,“I”从排队缓冲器502直接存取。这样,当从单板寄存器510取完所有的指令时,排队缓冲器502开始前进,取出附加的指令。这样的前进在第4周期之前不发生,但是,调度寄存器504从排队缓冲器502直接进行适当的填充。通过这种直接的接续,便可知道取出流水线与调度确定逻辑已分离。调度逻辑只需要操作供给各调度寄存器的选择器508。
此后,在第4周期中,排队缓冲器502的前进和调度寄存器504的填充同时进行,进行不调整后继位置的指令调度处理(供应元代码顺序的指令不再进行位置调整)。
现在,再根据图6进行如下说明。在译码阶段254的终点,2个整数指令传送给整数流水线,2个以下存储器指令传送给存储器流水线。这时,浮点指令在译码阶段254不实现记录板化或者不进行处理,只通过整数调度单元402进入浮点指令处理单元404。在定址阶段256,浮点指令为了进行浮点调度处理而适当地重新进行格式化。
图12是用于表现与重新格式化处理后的重新格式化的浮点操作指令550对应的模板和与重新格式化的浮点存储操作指令552对应的模板图。即,通过浮点指令的重新格式化,指令变为37位的宽度。
在执行阶段258,这些重新格式化的浮点指令按照供应元的顺序循环。然后,将包含与浮点指令有关的指令的4个字写入FPQ82。这时,浮点调度单元406和译码阶段254的调度处理一样,按照供应元的竞争和寄存器记录板控制fp(浮点)相关指令的发送。但是,这里,实际上只有一部分重新格式化的指令传送到连接整数单元12和FPU14的T总线上。而且,如图12所示,29位的重新格式化浮点动作指令550传送给T总线,另外,只有9位的重新格式化浮点存储指令552也传送给T总线。
表II给出了表示浮点操作码和操作码分类的附加4位值。这时,由于浮点调度(S周期或者FD阶段)的动作只需要4位特征,所以,只示出了较少的分类。这里,分类也强调不同供应元的要求。在表II中,示出了2种宽范围的子类,即浮点存储指令和浮点执行指令。这时,操作码的最高位表示子类。即,位位置3的“0”表示存储指令,“1”表示浮点执行指令。
浮点指令的调度逻辑的难点之一是实现浮点执行指令的记录板化。即,根据浮点执行指令的不同的OP代码,可以知道它们潜伏期间的差别。即,在long的“1000”位模式所示以下的表11操作码部分为完成指令将需要更多的周期。FPU14具有执行用的2个对称的流水线,但是,由于这些指令的不同的潜伏期间,记录板十分复杂。
表IIOP代码分类位类型内容说明(3210)fp load 0100fp存储指令fp store 0101fp存储指令int store 0001fp存储指令move from fpr 0010fp存储指令move from ctl 0011fp存储指令(control)move to fpr 0110fp存储指令move to ctl 0111fp存储指令long 1000fp执行指令reg copl 1010fp执行指令short ll00fp执行指令move 1101fp执行指令comp 1110fp执行指令reg copl x1011fp执行指令图13是用于执行浮点装入操作的SMU10调度处理的简图。即,单元12的寄存器文件的读取操作、地址生成和TLB查找功能包含在地址单元600内。另外,特征存储器存取和GS数据存取的外部高速缓冲存储器流水线功能包含在全局高速缓冲存储器(GS)存取单元602内。GS存取单元602将读取数据供给LDQ104和FPR102。此外,GS存取单元602在GS16的数据为有效时向LDQ104发出数组化信号。
整数单元12另外还具有装入数组计数器(LDQ计数器)604。LDQ计数器604根据表示GS特征存储器内瞬时干扰存在时间的GS存取单元602的增加信号而动作。另外,LDQ计数器604将输出传送给FP(浮点)调度单元406,输出采用3种状态,这就是0、1或≥2。
浮点装入指令在ISIU调度单元402中开始。整数调度单元402将该指令传送给整数流水线(定址单元600)和浮点流水线(FP调度单元406)。结果,定址单元600产生有效地址,并将其翻译为物理地址。另外,定址单元600将物理地址供给GS存取单元602。
另外,当GS存取单元602检测到GS特征位时,整数单元12就知道对应的数据是有效的,从而向LDQ计数器604发出增加信号,将其增加1。GS存取单元602在数据为有效时将数组信号传送给LDQ104,并将其写入LDQ104。
在上述的地址生成和数据存取周期中,FP调度单元406保持FPQ82的浮点装入指令。当LDQ计数器604显示出与浮点装入操作对应的数据在LDQ104中为有效时,FP调度单元406便通过T总线将该指令向FPU14发送。然后,FPU14读取LDQ104的数据,将其写入FPR102。
图14是表示用于执行浮点存储动作的SMU10调度处理的简略图。即,整数单元12具有寄存器文件52、地址生成器56、TLB58和含有DS特征/有效性数据的存储地址生成单元610。存储数据数组计数器(SDQ计数器)612(在物理上实施为与偶数地址对应的SDQ计数器[SDQE计数器612a]和与奇数地址对应的SDQ计数器[SDQO计数器612b]的2个计数器)确定与FPU14相关的STQ106状态。SDQ计数器根据FP调度单元406的增加信号增加这些存储值。然后,FP调度单元406从存储地址发生单元610接收信号,指示在哪个存储区中进行存储处理。
这时,浮点存储指令从IS整数调度单元402开始。即,调度单元402将浮点存储指令传送给地址生成单元610和FP调度单元406。然后,存储地址生成单元610接收浮点存储指令和某个地址供应元寄存器特定信息。另外,FP调度单元406接收数据供应元寄存器特定信息。
然后,存储地址生成单元610确定有效地址后,将其翻译为物理地址。DS54为了确保DS和GS之间的一贯性而具有进行检查的特征存储器和有效存储器(图中未示出)。并且,存储地址生成单元610将物理地址传送给GS特征存储器18,另外,将偶数/奇数存储区信号传送给FP调度单元406。
当GS特征存储器18中发生瞬时干扰时,存储地址就在存储地址单元224中进行排列。这时,外部高速缓冲存储器控制逻辑614检查适当的SDQ计数器612的状态,对于FPU14确定数据在STQ106中是否有效。
FP调度单元406根据正常的指令和供应元的从属性,在可以发送指令之前控制浮点存储指令的发送。另外,当接收到存储指令时,FPU14就读取FPR102的数据,并将其排列到STQ106内。这时,SDQ计数器612为了指示数据在STQ106内有效而增加。然后,当SDQ106的写入和地址排队缓冲器224的写入一致时,外部高速缓冲存储器控制逻辑614使数据离开队列,并传送给外部高速缓冲存储器16。
IV.流水线的再填充和异常处理上述流水线在该极佳的操作模式中,连续地根据取出、译码及执行的指令而操作。但是,能使流水线操作不连续的多数情况是在超级标量微处理器的操作中发生的。通常,在极佳的实施例中将这些情况称为异常状态,在该状态下,SMU10使流水线以特别的状态操作。
因此,将由SMU10采用的用于处理异常状态的方法论称为异常处理。并且,在极佳的实施例中,SMU10将该异常处理的概念作为例外扩展到通常未定义的状态和状况,提供一种可以与所有这些情况对应的普遍的系统。因此,SMU10的事实上与所有功能单元联系的异常处理逻辑将监视并控制异常处理。
即,SMU10不仅包括现有的整数单元具有的异常状态类型,而且还包括数据高速缓冲存储器错误的瞬时干扰、TLB的异常事态、浮点指令的异常状况、转移误预测、以及可识别的异常状况类型中异常处理的系统调用和响应。此外,SMU10还提供与这些异常事态对应的一般的异常处理方法。
但是,由于SMU10的超级标量特性,这种异常处理方法复杂。因此,在极佳的实施例中,SMU10在执行阶段258处理所有的异常事态。这时,由于向寄存器文件52的写入是不可逆的,所以,在写回阶段260之前必须进行异常状态的检测。另外,SMU10也在向FPQ82发送浮点指令之前,先于浮点指令确定与优先度高的指令相关的所有的异常状态。
另外,作为异常处理系统复杂性的其他主要原因,还可以举出在SMU10中使用了连续前进的流水线。即,SMU10的流水线不停止地使指令在各周期中前进。因此,由于流水线的速度、异常状态之后在执行阶段258期间检测出的少量的有效时间和大型芯片尺寸,通过停止向SMU10的所有部分发送指令来使流水线停止是不适用的。
对于整数指令的情况,异常处理使用高精度模型。另外,对于浮点指令的情况,通过将潜伏性高的外部高速缓冲存储器流水线302与整数流水线250分离,SMU10使用低精度的异常处理模型。
即,在高精度模型中,SMU10要求高精度地识别引起异常状态的指令。并且,SMU10在执行阶段258采用程序计数器,并使用附加在各指令上的优先度位识别引起异常状态的特定指令。这时,附加在各指令上的2种位优先码指示流水线中同一阶段的指令中的相对优先度。
另外,优先位还具有第2种功能。即,在发生异常状态时,SMU10容许比完成异常状态的指令优先度高的所有的指令,取消异常状态完成指令和优先度更低的指令。
即,通过不仅对异常指令而且对优先度低的指令按特征进行上述处理,可以防止向下一阶段前进以及存储位置的阶段变更,所以,在执行阶段258,必须消除这些取消指令的影响。
例如,与其他应取消的操作比较,作为更困难的特定操作,可以举出对DS54的存储。即,在对DS54的指令存储处理之后,在执行阶段258中,具有更高优先度的指令可能发生异常状态。这时,必须取消对DS54的存储操作。
为了说明这样的取消处理,下面对DS进一步作附加说明。即,DS54是存储伴有32字节配线的16KB数据的直接变换高速缓冲存储器。DS54具有特征存储器和有效性位存储器。这时,在DS54的各个字上附加1个有效位。DS54的有效位,已对隔离电平高速缓冲存储器进行了说明。即,SMU10对辅助消除DS存储,使用同一有效位。
SMU10在知道DS的特征存储器有无瞬时干扰以及重叠写入了什么之前,对DS54的数据区域总是进行存储处理。因此,当存在DS的特征错误时,异常处理逻辑就将该错误作为异常状态如上述进行处理。
另外,当优先度更高的指令发生异常状态时,即使DS特征存在瞬时干扰,异常处理逻辑也取消其存储。并且,为了修正DS写入,异常处理逻辑清除附加在存储的数据字上的有效位,并使数据变为无效。并且,在顺序外的存储之前,将数据存储到存储位置上已经没有什么问题。另外,由于用于从该位置读取的下一个动作发生DS错误,从而发生由外部高速缓冲存储器16在该位置的读取(发生异常状态)。因此,利用向该位置的下一次写入存储数据,可设定表示数据为有效的附加有效位。
另外,在一定的异常状态之后,调度单元202在2~3周期内高速处理整数流水线250。在进行该高速处理期间,上述异常处理逻辑也可以监视DS54发生了什么情况,并且,那时还可以进行必要的修正。
下面,说明不同种类的异常状态,并且说明用于处理那些指令的阶段。即,异常状态按照整数单元异常状态、TLB异常状态、FPU14执行单元异常状态、IS错误和DS特征错误的顺序进行处理。
整数单元的异常状态,通常在整数单元50中是以溢出的形态发生的。当检测到该例外事态时,SMU14便迅速地开始进行该例外处理。在其第1阶段,识别在执行阶段258的4个可能指令中是哪个指令引起异常状态的。该指令的识别处理在检测异常状态的功能单元根据附带的指令通知2位的优先码时,可以知道结果。这种通知是对异常处理逻辑进行的。
另外,当在执行阶段258存在多数指令时,也有可能2个以上的指令引起异常状态。这时,处理逻辑选择引起异常状态的优先度最高的指令作为异常指令,容许完成优先度比其更高的指令,并且,将异常指令和优先度比其低的指令全部取消。
为了取消指令,必须禁止指令对任意的存储位置形成不可逆变化。因此异常处理逻辑禁止按被取消的指令向寄存器文件的写入。另外,为了禁止这种指令对寄存器文件的写入,异常处理逻辑取消该指令的有效位(即,使该指令无效)。
并且,由于指令的有效位被取消,寄存器文件不必变更。有效位与在取出阶段附加在各指令上的有效区域的指令有效位不同。即,为了表示对SMU10各阶段的各指令的有效性(即,任意的特定级是否可以处理指令),该位是附加到指令上的1位码。由于流水线继续按各周期前进,所以,在下一阶段未选择的指令重叠地写入,并从流水线中消失。
异常处理逻辑不仅防止向整数寄存器文件的写入,而且防止异常指令和优先度比其低的指令向所有的FPQ82写入,同时防止向这些外部高速缓冲存储器流水线302的传送。此外,异常处理逻辑还将表示存在异常状态的信号传送给调度单元202。结果,调度单元202停止所有的指令发送,直至知道可以再次开始操作为止。
另外,在执行阶段258还具有附加的程序计数器,计数器通过使用所通知的优先码并将程序码序号附加到程序计数器上来确定与异常指令对应的程序码序号。与该异常指令对应的程序码序号就是异常程序计数器(EPC)。另外,EPC供给控制指令缓冲器74和指令高速缓冲存储器70的逻辑。结果,指令缓冲器74使该指令计数器进行计数,直至指示异常指令作为下一个指令为止。
在整数执行单元的异常状态的情况下,IS70为了处理异常状态从异常处理矢量取出指令。这样,从异常处理矢量取出指令并完成调度处理的准备时,调度单元202便再次开始调度处理,处理异常状态。并且,当完成异常处理时,就再次开始SMU10的“正常”操作。在某些种类异常状态下,处理伴随着异常指令再次开始,而在另外一些情况下,SMU10处理完全不同的指令组合。因此,整数执行单元指令的异常状态取消该指令和该指令之后的指令作用,并发送和执行异常处理矢量指令,进一步,通过再次开始操作而进行处理。
另外,异常处理逻辑可按同样方式处理TLB的异常状态。FLB的异常状态是在不能检查与由地址生成器56产生的有效地址对应的物理地址时发生的。虽然利用SMU10也可以确定物理地址,但是,该处理需要几个周期。因此,异常处理逻辑根据TLB的异常状态将引起TLB异常状态的指令识别为异常指令。然后,通过执行完成优先度比其高的指令来取消异常指令和优先度比其低的指令。
这时,EPC将关于引起TLB异常状态的指令的指示值通知给指令缓冲器74。结果,即使其本身没有任何错误,当发生TLB的异常状态时,也利用软件程序处理TLB的重新填充。然后,当完成再填充处理时,就从发生TLB的异常状态的位置再次开始程序执行。关于这一点,请参看1993年12月5日申请的题为《可变页面大小的转换后备缓冲器》的美国专利申请书。这时,指令计数器简单地指示引起TLB异常状态时的有关指令,并在检查之后向调度单元202发送。然后,指令计数器不移动,直至完成TLB的准备为止,调度单元202连续地发送指令。并且,当物理地址成为有效时,立即再次开始正常操作。
另外,异常处理逻辑还伴随1次的通知处理和整数单元执行的异常状态一样地处理浮点执行的异常状态。即,如上述所,SMU10在浮点指令的情况下采用低精度的异常模型。因此,当发生异常状态时,程序计数器不指示发生该异常状态的指令。因此,为了处理浮点指令的异常状态,异常处理逻辑通知程序计数器的当前值和异常状态的种类。
结果,所有的指令被取消,调度单元202便高速处理整数流水线250,IS70从错误处理矢量中取出适合于指令种类的指令。该错误处理程序必须供给缺少的关于发生浮点错误的确实指令信息。浮点的异常状态依赖于软件异常处理手段的特殊功能,但是,通常是结束执行程序,伴随错误码而终止。
另外,对于IS错误及DS错误的情况,虽然完全不会全都造成错误,但是,这些情况也利用和处理异常事态相同的方法即利用流水线高速地取出新的指令的方法进行处理。但是,对于IS错误,指令的取出保留到发现新的IS行为止,然后,再次开始指令的调度处理。另外,对于DS错误,在引起DS错误的指令时刻就迅速地再次开始指令的取出,但是,调度处理保留到发现新的DS行为止。
并且,本发明的优点是可以迅速地确定异常状态(在1周期以内),高精度地识别特定的异常指令,并且是利用可以完成更高优先度指令的系统功能。下面,讨论表III所示的流程。
表III指令顺序 指令 异常状态1 ADD NO2 ADD NO3 LOAD NO4 LOAD YES5 ADD ???6 ADD ???7 LOAD ???
这些指令是将优先度最高的排列到最上面。其中,调度单元202发送第1组4个指令。其中,在执行第4个指令的过程中,发生DS错误。这时,异常处理逻辑就认为完成了第1、2、3个指令。然后,在处理第4个指令的DS错误之后,调度单元不仅发送第4个指令而且发送第4、5、6、7个指令。并且,在DS异常状态之后,调度处理按照从新指令开始的顺序由指令缓冲器74中取出指令。
V.结论根据以上说明,本发明提供了超级标量微处理器的指令调度和简单而高效率的解决异常处理问题的方法。上述是对本发明的极佳的实施例的完整说明,但是,可以作各种变更、变形和使用等价的形式。例如,有关极佳的实施例的浮点协同处理器的使用的描述,本发明不只限于一种协同处理器。即,在本同业界中,如所周知,其他协同处理器也是有效的。例如,可以利用其他协同处理器专用的特定规格要点置换浮点的特定规格要点。因此,上述描述不限定本发明的范围。
如上所述,本发明可以提供超级标量微处理器的指令调度和简单而高效率的解决异常处理问题的方法。
权利要求
1.一种用于超级标量微处理器的指令调度方法,在指令取出阶段之后具有指令译码阶段,其特征在于包括预译码处理阶段和调度处理阶段,在前进到指令译码阶段之前将第1区域和第2区域附加到经过取出处理的指令上,在对经过取出处理的指令进行预译码处理的级,上述第1区域包含从经过取出处理的指令中抽出的供应元信息,上述第2区域包含以与经过取出处理过的指令类似形式的指令识别供应元类别的供应元分类区域;使上述经过取出处理的指令前进到用于生成译码指令的指令译码阶段后,对该指令进行调度处理;上述调度处理阶段使用上述第1区域和第2区域引导到处理经过译码处理指令的功能单元。
2.一种在同时周期地向具有多个通用寄存器的超级标量微处理器流水线译码阶段发送的第1指令与第2指令之间检查寄存器竞争的方法,其特征在于由如下各阶段构成,即,在译码阶段之前,通过从第1指令中抽出位于第1指令内第1相对位置的第1目的寄存器信息区域、并将上述第1目的寄存器信息区域附加到与第1指令相关的指定位置,对上述第1指令进行预译码处理的阶段;在上述译码阶段之前,通过从第2指令中抽出位于与上述第1相对位置不同的第2相对位置的第2目的寄存器信息区域、并将上述第2目的寄存器信息区域附加到与第2指令相关的上述指定位置,对上述第2指令进行预译码处理的阶段;在上述译码阶段,从上述第1指令中抽出第1供应元寄存器信息区域的阶段;在上述译码阶段,从上述第2指令中抽出第2供应元寄存器信息区域的阶段;将上述第1寄存器目的信息区域与上述第2供应元寄存器信息区域进行比较的阶段;将上述第2寄存器先目的信息区域与上述第1供应元寄存器信息区域进行比较的阶段。
3.一种包括指令取出阶段、接续该取出阶段的指令译码阶段和接续该指令译码阶段之后的阶段,对具有整数功能单元和浮点功能单元的超级标量多片式微处理器的整数指令和浮点指令进行调度处理的方法,其特征在于由如下各阶段构成,即,(a)对整数指令进行取出处理的阶段;(b)对浮点指令进行取出处理的阶段;(c)通过将含有第1值作为整数型的指令识别整数指令的信息的识别区域附加到上述整数指令上,在使整数指令前进到上述指令译码阶段之前对上述整数指令进行预译码处理的阶段;(d)通过将含有第2值作为浮点型的指令识别浮点指令的信息的识别区域附加到上述浮点指令上,在使浮点指令前进到上述指令译码阶段之前对浮点指令进行预译码处理的阶段;(e)在上述指令译码阶段只对整数型指令进行调度处理的阶段;(f)在上述之后的阶段对浮点型指令进行调度处理的阶段。
4.一种用于超级标量微处理器的异常处理方法,该超级标量微处理器具有按取出阶段、译码阶段、定址阶段、执行阶段和数据写入通用寄存器文件的寄存器写回阶段顺序的5级流水线,该异常处理方法的特征在于由如下各阶段构成,即,对为在上述执行阶段同时进行执行处理而向超级标量微处理器功能单元发送的多个指令中分别具有与多个指令内其他指令不同的附加执行优先级的上述多个指令同时进行调度处理的阶段;检测由执行上述执行阶段的上述多个指令中特定的一个指令而发生的异常条件的阶段;确定上述多个指令中的哪一个指令是上述特定的一个指令的阶段;确定附加在上述特定的一个指令的上述优先级的阶段;在包含禁止向寄存器写回阶段之通用寄存器文件写入上述特定的一个指令和附加优选级低于特定的一个指令的附加优先级的所有指令被取消期间,在上述多个指令内完成其附加优先级比在寄存器写回阶段之后所容许的向优先级更高指令的上述通用寄存器文件写入的附加优先级高的指令的阶段。
5.一种提供对微处理器的调度单元识别指令集内的指令的供应元要求的供应元识别特征的方法,其特征在于由如下阶段构成,即,(a)与相互排斥的微处理器的供应元分配限制有关的特定多个供应元分类的阶段;(b)将上述指令集内的各指令附加到上述多个供应元分类内的一个适当分类上的阶段;(c)识别分配共同调度特性的上述多个供应元分类内第1和第2供应元分类的供应元分类集合的阶段;(d)对上述多个供应元分类分别分配特殊的两个值的阶段;上述第1供应元分类和第2供应元分类的各两个值,分配识别供应元集合的屏蔽模式,只有上述供应元集合内的指令含有上述屏蔽模式。
全文摘要
在具有多种执行功能的超级标量微处理器中,提供具有高速、高效率的流水线的装置和方法。在经过取出处理的指令前进到指令译码阶段之前,通过将第1区域和第2区域附加到经过取出处理的指令上,对经过取出处理的指令进行预译码处理,第1区域包含从经过取出处理的指令中抽出的供应元信息,第2区域包含使用与经过取出处理的指令类似的指令识别供应元种类的供应元分类区域。然后对指令进行调度。
文档编号G06F9/30GK1119473SQ94191501
公开日1996年3月27日 申请日期1994年12月15日 优先权日1993年12月15日
发明者约瑟夫P·布拉特, 彼得·苏颜特, 钱达·S·乔希, 莫妮卡R·诺法尔, 保罗·罗德曼, 约瑟夫T·斯坎伦, 唐曼希 申请人:株式会社东芝, 硅图像有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1