CN1410886A - 指令流水线中实现访存精确例外的处理方法 - Google Patents
指令流水线中实现访存精确例外的处理方法 Download PDFInfo
- Publication number
- CN1410886A CN1410886A CN 01141497 CN01141497A CN1410886A CN 1410886 A CN1410886 A CN 1410886A CN 01141497 CN01141497 CN 01141497 CN 01141497 A CN01141497 A CN 01141497A CN 1410886 A CN1410886 A CN 1410886A
- Authority
- CN
- China
- Prior art keywords
- exception
- instruction
- queue
- logic
- signal
- 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
Links
Landscapes
- Advance Control (AREA)
Abstract
一种指令流水线中实现访存精确例外的处理方法,包括步骤:当确认存数指令前面的指令不会发生例外后;操作队列向访存队列发出允许存储的有效信号;访存队列在存数信号有效时执行。在本发明基于的流水线中,和其它大部分处理器一样,指令有序发射,有序结束,所有改变寄存器值的指令都在结束阶段结束。这种流水线结构自然地保证了精确的寄存器现场,从而实现了除访存指令(能改变存储器现场的指令)的所有精确例外。而在实现访存精确例外时,本发明的处理器中,采用了一种新型的机制使得处理器的设计结构简单,在降低硬件复杂度的同时提高处理器的性能。
Description
技术领域
本发明涉及微处理器体系结构,特别涉及微处理器中实现访存精确例外的处理方法。
背景技术
本发明是在“基于操作队列复用的指令流水线技术”基础上提出来的,本发明的使用也是基于类似的流水线结构。该流水线结构由取指部件,译码部件,操作队列,定点及浮点寄存器堆,及多个功能部件组成。指令流水过程是,指令译码部件按指令在程序中出现的先后次序把指令译码并送到操作队列,操作队列按次序根据指令的操作类型把指令发射到相应功能部件的保留站。保留站中的指令由功能部件运算后,把结果送到结果总线并写回到操作队列。指令进出操作队列(即发射和结束(COMMIT)过程)都是有序的,但在操作队列期间(即执行过程)是无序的。
例外是指改变指令原来的执行流,它是处理器设计中最难处理的部分之一。
本发明所述的例外主要包括两个方面:一是来自处理器内部的例外,例如除数为0,算术溢出等;另一是来自处理器外部的例外(又称为中断),例如键盘请求中断等,见John L.nenessy,David A.Patterson,ComputerOrganization & Design:The Hardware/Software Interface,机械工业出版社(英文版第2版),pp.410-411。
精确例外是处理例外的一种方法,是指在乱序执行的情况下,当一条指令发生例外时的例外现场(包括寄存器现场和存储器现场)与在顺序执行环境下指令发生例外的现场一样,即在处理该例外时,例外之前的指令已全部完成,例外之后的指令可以重新执行,并不影响原来指令流的正确执行。在重新执行例外后的指令时,要把例外后的指令已经执行的结果全部去掉。精确例外不是按照例外发生的次序来处理的,而是根据发生例外的指令次序来处理的。而访存精确例外在本发明中是指在指令流水线中出现例外情况下,进行例外处理时保持正确的存储器现场的例外处理办法,见John L.nenessy,David A.Patterson,ComputerArchitecture A Quantitative Approach,机械工业出版社,(英文版第2版),pp.183。
当前很多高性能的处理器都采用了虚存管理存储系统和流水线技术,同时由于IEEE浮点标准的制定这就使得处理器必须采用精确例外。不采用精确例外会给当代的处理器带来严重的后果。比如,在使用了流水线技术的处理器中执行下列指令:ADD R1,1000(R1);R1=R1+1000 LWR1,0X0000FFFF;把内存地址0X0000FFFF的数存入寄存器R1假设执行第一条指令时出现定点溢出例外,该例外将出现在流水线的执行阶段;而执行第二条指令时出现取指例外,该例外出现在流水线的取指阶段。因为在流水线中取指阶段先于执行阶段,这样就有可能导致第二条指令的例外先于第一条指令的例外出现。如果不是精确例外处理,我们将先处理第二条指令的例外。但是根据指令原本的执行次序,我们应该按照指令执行次序来处理指令出现的例外,即先应处理第一条指令的例外,否则就会给程序执行带来错误结果。
发明内容
本发明的目的是为处理器流水线结构提供一种新型的访存精确例外处理方法,使得处理器结构简单,性能提高。
为实现上述目的,一种指令流水线中实现访存精确例外的处理方法,包括步骤:
当确认存数指令前面的指令不会发生例外后;
操作队列向访存队列发出允许存储的有效信号;
访存队列在存数信号有效时执行。
在本发明基于的流水线中,和其它大部分处理器一样,指令有序发射,有序结束,所有改变寄存器值的指令都在结束阶段结束。这种流水线结构自然地保证了精确的寄存器现场,从而实现了除访存指令(能改变存储器现场的指令)的所有精确例外。而在实现访存精确例外时,本发明的处理器中,采用了一种新型的机制使得处理器的设计结构简单,在降低硬件复杂度的同时提高处理器的性能。
附图说明
图1是访存精确流水线图。
图2是允许存数信号产生的流程图。
为了进一步说明本发明,我们将简单介绍本发明的处理器的例外处理方法,特别讲述访存精确例外处理的实现。
本发明的例外处理是指令流水线的内在组成部分,流水线的每一个阶段都有可能产生例外。本发明处理例外的原则是:
(1)把例外融入到流水线中,在设计寄存器和数据通路时,针对大多数指令都有正常结果和例外结果,把正常结果和例外结果统一处理。
(2)当流水线的某个阶段产生例外时,把它按优先级记录到操作队列中,当指令结束时再做统一处理。因此,在本发明所基于的流水线中,例外处理可以分成两个阶段:第一阶段为记录例外阶段,当一条指令在执行过程中引起例外时,不立即进行例外处理,而是把例外原因等保存在相应指令的操作队列中。第二阶段为例外处理阶段,当发生例外的指令成为操作队列中的第一条指令时,进行例外处理,把发生例外的信息发送到有关模块(PC,控制寄存器等)。
本发明处理例外的逻辑由三部分组成:
一是分布在各功能部件的例外产生逻辑,各个功能部件在取指、译码或执行指令过程中如果碰到异常情况,就产生相应例外信号。
二是操作队列的例外排队逻辑,操作队列接收例外信号作为输入,对它们进行编码并与相应的指令保存在一起,待该指令commit时把是否例外以及例外原因送到各有关部件。
三是分布在各寄存器等处的例外处理逻辑,包括根据例外原因置相应控制寄存器、通用寄存器、以及PC的值等。
存数指令作为一种向存储器存数的特殊指令,该类指令的精确例外处理一直是计算机系统结构的难点之一,因为访存操作不是在结束阶段而是在执行阶段进行的,而多个操作在执行阶段是乱序的。前面指令发生例外时,后面的存数操作可能已经修改了CACHE或内存单元的内容。这种情况的发生主要是存数作为一种改变存储器状态的指令没有严格按照指令结束的次序改变处理器的现场。
其它机器在处理存数指令时则是严格按照指令的次序把数存入存储器,即存数是在流水过程中的结束阶段把数真正存入存储器,改变存储器单元的内容。比如在PowerPC603处理器中,存数指令先进入访存指令队列,然后当存数指令运行时,存数指令计算出存数指令的虚地址,同时进行存数检查包括虚地址检查等;当检查通过后,即处理器允许存数操作进行时,则把该指令放入一个临时缓冲,在该缓冲中,该存数指令等待结束,当存数指令接到指令队列发出的结束信号时,则把数据存入存储器,见Brad Burgess,Nasr Ullah,Peter Van Overen,and DeeneOgdenk,The PowerPC 603 Microprocessor,COMMUNICATION OF THE ACM,Vol.37,No.6,June,1994。
而在本发明的处理器中,存数操作提前到流水线的执行阶段进行,而不必等到结束阶段。解决这个问题的原则是,当可以确认存数指令前面的指令不会发生例外后,就允许存数指令执行元。这样就可以保证指令的精确例外。结合本发明之前申请的专利“基于操作队列复用的指令流水线技术”,实现本发明的流水线示意图如图1。
在本发明的处理器设计中,通过对CPU有可能发生例外的分析,可以看出只有在如下可恢复例外情况下,其后面的存数操作可能已经破坏了现场。●由访存操作(包括LOAD/STORE指令)引起的例外;●Trap例外,在本发明的处理器中,trap例外由ALU部件产生;●定点溢出例外ov,由ADD或SUB指令产生;●浮点例外fpe,由浮点操作产生。
其中,由访存引起的例外与存数操作是顺序执行的。因此,当存数操作在访存队列中时,只要保证操作队列中在该操作之前不会有未写回的定点ADD,定点SUB,TRAP以及浮点操作,就可以开始执行该存数操作。当然,如果操作队列中在该存数操作之前的操作中已经发生了例外,也应该停止执行该存数操作。具体做法是,首先保证访存队列中的访存操作是有序执行的,后面的访存操作不能越过前面的访存操作执行;其次,当访存队列要进行存数操作时,把当前正在执行操作的qid信号(该信号是确定该存数操作在所有正在执行指令中的位置)送回到操作队列,操作队列根据该qid通过比较,判断操作队列中在该项之前是否有会引起例外的指令尚未写回,同时返回给访存队列一个允许存数信号,只有在存数信号有效时,存数操作才能进行(其它操作不受影响)。允许存数信号具体实现如流程图2所示,例如qid为7,则译码后的向量组是[1111111];而第一条指令的位置是3,则译码后的向量组是[0001111]。两个向量组与后的结果是[0001111],那我们只要检查位置是4,5,6,7的指令是否会产生破坏现场的情况。
比较其他处理器和本发明的处理器的存数操作,我们显然可以看出本发明的存数操作处理有以下优点:
(1)降低了硬件复杂:在本发明的处理器中,我们对存数和取数操作统一处理,不需要另外的硬件来分别执行存数和取数流水操作。同时,本发明的处理器不需要多余的硬件如PowerPC603中的缓存来保存等待COMMMIT的存数指令。
(2)减小访存的总线宽度:在其它处理器中首先要检查存数操作是否能进行,然后在等到结束的阶段才能把数据存入存储器。因为检查存数操作是否能进行必须占用一定的总线宽度,如果不加大总线宽度将影响其它访存操作的执行。
(3)提高处理器的性能:尽快地结束存数指令对该指令后面的LOAD指令有好处。因为这样就能在不增加硬件复杂度的情况下,尽快地为LOAD指令提供有效的数据,从而能让流水线中无效的等待指令减少,提高处理器的性能。
Claims (6)
1.一种指令流水线中实现访存精确例外的处理方法,包括步骤:
当确认存数指令前面的指令不会发生例外后;
操作队列向访存队列发出允许存储的有效信号;
访存队列在存数信号有效时执行。
2.按权利要求1所述的方法,其特征在于包括步骤:
把例外融入到流水线中,正常结果和例外结果统一处理;
当流水线的某个阶段产生例外时,把它按优先级记录到操作队列;当指令结束时再做统一处理。
3.按权利要求1所述的方法,其特征在于还包括例外处理的逻辑:
分布在各功能部件的例外产生逻辑;
操作队列的例外排队逻辑,
分布在各寄存器等处的例外处理逻辑。
4.按权利要求3所述的方法,其特征在于所述的例外产生逻辑包括:各个功能部件在取指、译码或执行指令过程中如果碰到异常情况,就产生相应例外信号。
5.按权利要求3所述的方法,其特征在于所述的所述的例外排队逻辑包括:操作队列接收例外信号作为输入,对它们进行编码并与相应的指令保存在一起,待该指令结束时把是否例外以及例外原因送到各有关部件。
6.按权利要求3所述的方法,其特征在于所述的例外处理逻辑包括根据例外原因置相应控制寄存器、通用寄存器、以及PC的值等。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB011414979A CN100447737C (zh) | 2001-09-27 | 2001-09-27 | 指令流水线中实现访存精确例外的处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB011414979A CN100447737C (zh) | 2001-09-27 | 2001-09-27 | 指令流水线中实现访存精确例外的处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1410886A true CN1410886A (zh) | 2003-04-16 |
CN100447737C CN100447737C (zh) | 2008-12-31 |
Family
ID=4676220
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB011414979A Expired - Lifetime CN100447737C (zh) | 2001-09-27 | 2001-09-27 | 指令流水线中实现访存精确例外的处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100447737C (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100385391C (zh) * | 2006-05-25 | 2008-04-30 | 西北工业大学 | 嵌入式实时精确异常机制的硬件实现方法 |
CN100405324C (zh) * | 2006-05-12 | 2008-07-23 | 中国科学院计算技术研究所 | 在微处理器用户态随机验证中实现核心态程序验证的方法 |
CN103268145A (zh) * | 2013-03-06 | 2013-08-28 | 上海云间半导体科技有限公司 | 用于保存访存指令的虚拟地址的方法 |
CN104750460A (zh) * | 2007-08-14 | 2015-07-01 | 英特尔公司 | 超线程微处理器中经线程优先级提供服务质量 |
US10503550B2 (en) | 2017-09-30 | 2019-12-10 | Intel Corporation | Dynamic performance biasing in a processor |
CN114356420A (zh) * | 2021-12-28 | 2022-04-15 | 海光信息技术股份有限公司 | 指令流水线的处理方法及装置、电子装置及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5226126A (en) * | 1989-02-24 | 1993-07-06 | Nexgen Microsystems | Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags |
JP2925818B2 (ja) * | 1991-04-05 | 1999-07-28 | 株式会社東芝 | 並列処理制御装置 |
US5884062A (en) * | 1996-08-30 | 1999-03-16 | Texas Instruments Incorporated | Microprocessor with pipeline status integrity logic for handling multiple stage writeback exceptions |
US6088788A (en) * | 1996-12-27 | 2000-07-11 | International Business Machines Corporation | Background completion of instruction and associated fetch request in a multithread processor |
US6128722A (en) * | 1998-02-13 | 2000-10-03 | International Business Machines Corporation | Data processing system having an apparatus for exception tracking during out-of-order operation and method therefor |
-
2001
- 2001-09-27 CN CNB011414979A patent/CN100447737C/zh not_active Expired - Lifetime
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100405324C (zh) * | 2006-05-12 | 2008-07-23 | 中国科学院计算技术研究所 | 在微处理器用户态随机验证中实现核心态程序验证的方法 |
CN100385391C (zh) * | 2006-05-25 | 2008-04-30 | 西北工业大学 | 嵌入式实时精确异常机制的硬件实现方法 |
CN104750460A (zh) * | 2007-08-14 | 2015-07-01 | 英特尔公司 | 超线程微处理器中经线程优先级提供服务质量 |
CN104750460B (zh) * | 2007-08-14 | 2018-09-28 | 英特尔公司 | 超线程微处理器中经线程优先级提供服务质量 |
CN103268145A (zh) * | 2013-03-06 | 2013-08-28 | 上海云间半导体科技有限公司 | 用于保存访存指令的虚拟地址的方法 |
CN103268145B (zh) * | 2013-03-06 | 2016-08-17 | 上海云间半导体科技有限公司 | 用于保存访存指令的虚拟地址的方法 |
US10503550B2 (en) | 2017-09-30 | 2019-12-10 | Intel Corporation | Dynamic performance biasing in a processor |
CN114356420A (zh) * | 2021-12-28 | 2022-04-15 | 海光信息技术股份有限公司 | 指令流水线的处理方法及装置、电子装置及存储介质 |
CN114356420B (zh) * | 2021-12-28 | 2023-02-17 | 海光信息技术股份有限公司 | 指令流水线的处理方法及装置、电子装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN100447737C (zh) | 2008-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3548132B2 (ja) | マルチスレッド・プロセッサ内でのパイプライン・ステージのフラッシュ方法および装置 | |
US8230144B1 (en) | High speed multi-threaded reduced instruction set computer (RISC) processor | |
US8544022B2 (en) | Transactional memory preemption mechanism | |
JP2786574B2 (ja) | コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置 | |
JP2518616B2 (ja) | 分岐方法 | |
US8688963B2 (en) | Checkpoint allocation in a speculative processor | |
CN1177275C (zh) | 减少处理器中写入通信量的方法和系统 | |
US5701430A (en) | Cross-cache-line compounding algorithm for scism processors | |
US20090138681A1 (en) | Synchronization of parallel processes | |
US6301655B1 (en) | Exception processing in asynchronous processor | |
JP2004118862A (ja) | レジスタ・ファイルのバックアップ方法 | |
KR20060002031A (ko) | 명령들을 스케줄링 및 실행하는 방법 | |
US6032244A (en) | Multiple issue static speculative instruction scheduling with path tag and precise interrupt handling | |
CN1226700A (zh) | 高性能推测性未对齐加载操作 | |
US7395418B1 (en) | Using a transactional execution mechanism to free up processor resources used by a busy-waiting thread | |
US7363477B2 (en) | Method and apparatus to reduce misprediction penalty by exploiting exact convergence | |
JP2001229022A (ja) | コンピュータ処理システムにおけるスタック・リファレンスのリネーム方法およびそのプログラム記憶装置 | |
US5974522A (en) | Machine for processing interrupted out-of-order instructions | |
Jeong et al. | CASINO core microarchitecture: Generating out-of-order schedules using cascaded in-order scheduling windows | |
CN100447737C (zh) | 指令流水线中实现访存精确例外的处理方法 | |
JP3207124B2 (ja) | カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置 | |
JP2005504390A (ja) | ジャバハードウェアアクセラレータ用の投機的実行 | |
JP3683439B2 (ja) | 分岐予測を抑止する情報処理装置および方法 | |
US10255071B2 (en) | Method and apparatus for managing a speculative transaction in a processing unit | |
JPH08234981A (ja) | 非プログラム順序実行スーパスカラ・マルチプロセッサにおける効率的確定一貫性サポート機構 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
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 | ||
CX01 | Expiry of patent term |
Granted publication date: 20081231 |
|
CX01 | Expiry of patent term |