CN101017431A - 可减少管线延迟的处理器、管线与指令处理方法 - Google Patents

可减少管线延迟的处理器、管线与指令处理方法 Download PDF

Info

Publication number
CN101017431A
CN101017431A CN 200710084950 CN200710084950A CN101017431A CN 101017431 A CN101017431 A CN 101017431A CN 200710084950 CN200710084950 CN 200710084950 CN 200710084950 A CN200710084950 A CN 200710084950A CN 101017431 A CN101017431 A CN 101017431A
Authority
CN
China
Prior art keywords
instruction
stage
decoding
processor
pipeline
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
CN 200710084950
Other languages
English (en)
Other versions
CN100527075C (zh
Inventor
季诺·朱瑟弗维克
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.)
Via Technologies Inc
Original Assignee
Via Technologies Inc
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 Via Technologies Inc filed Critical Via Technologies Inc
Publication of CN101017431A publication Critical patent/CN101017431A/zh
Application granted granted Critical
Publication of CN100527075C publication Critical patent/CN100527075C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Advance Control (AREA)

Abstract

一种处理器管线的指令处理系统及方法,用以减少延迟(stall)数量。在一实施例中,处理器管线包含一撷取阶段,用以撷取指令并于处理器管线中进行处理;一译码阶段,用以对撷取来的指令进行译码;及一执行阶段,用以执行译码完的指令,其中该译码阶段于执行指令译码之前,可将指令储存于一暂时缓冲器。藉此方式,当执行阶段检测到由于处理器管线的操作模式变更导致的错误(error)发生时,译码阶段即对撷取阶段进行延迟。上述的错误可能导致现行操作模式的一个或多个寄存器,于新操作模式中被判定为无法存取。

Description

可减少管线延迟的处理器、管线与指令处理方法
技术领域
本发明披露一种处理器管线(pipeline)的系统以及方法,特别是一种可减少处理器管线的延迟(stall)的系统与方法,以提高处理器效能。
背景技术
图1为传统处理电路10的方块图,其可整合至例如手持式电子装置或计算机内。处理电路10包含一处理器12、存储器14与一些输入/输出(I/O)装置16,且彼此间通过一总线接口18来联系沟通。由于处理器12的效能与操作速率会影响处理电路10整个系统的电能消耗以及操作功能,因此电路设计者需要投入大量时间来改善处理器12的速率与效能,以消除造成效率不佳的肇因,特别是缺乏效率的处理器管线。
图2显示传统处理器12的处理器管线20的方块图。于此图示中,管线20具有五个阶段,包含一撷取阶段(fetchs tage)22、一译码阶段(decodestage)24、一执行阶段(execute stage)26、一存储器存取阶段(memoryaccess stage)28与一写回阶段(write-back stage)30。处理器管线20的结构可允许五个指令同时执行,而运作方法近似于装配线(assembly line)。例如,当撷取阶段22撷取一指令时,译码阶段24则是对先前撷取的指令进行译码。处理器管线20的每一阶段皆可对一指令执行该阶段预期达成的工作,接着将指令传送至下一阶段,再自前一阶段接收另一指令,依此类推。藉此方式,这些阶段得以对多个指令执行的不同功能,使得管线20整体上可同时执行多个指令;相对于每次仅操作单一指令的处理器而言,此种处理器管线具有更大的时间效益。此外,处理器管线20可包含各种适当的阶段数量。有些处理器仅具有简单的四阶段管线构造,而有些处理器则可能具有多达二十个阶段的管线结构。一般而言,处理器管线主要包含至少以下阶段:一撷取阶段、一译码阶段、一执行阶段、一存储器存取阶段与一写回阶段,或是这些主要阶段的变化型态。
从电路设计的另一角度来看,处理器管线20具有操作“模式”。操作模式一般包含一标准模式以及一些中断模式(或标准模式以外的例外模式)。处理器可于一般的状态下使用标准模式,但也可根据程序代码的指令或基于处理器的状态,而切换至其它的例外模式。
再者,根据所选择的模式,处理器管线20于处理期间使用一些可供存取的“寄存器”以储存数据、指令与/或地址。有些寄存器的使用不必考虑操作模式,但有些寄存器则为特定的操作模式所保留使用。由于寄存器的使用系根据不同的操作模式,因此当模式变更时,某一模式所使用的寄存器就可能变成无法使用。例如,译码阶段24可能译码到一用于变更模式的指令,但其仅能检测出模式会发生变更,而不能得知变更后的新模式为何。译码阶段24将译码后的模式变更指令传递至执行阶段26,再经执行阶段26执行该指令,才真正的有效地变更至新模式。执行阶段26会送出一“exec_mode”讯号(用以表示新模式)至译码阶段24,以使这两个阶段进入同一模式,且使用相同的寄存器。然而,于此情况下仍有一时钟周期的时间,译码阶段24尚使用旧模式处理接续的新指令,而未与执行阶段26同步进入新模式。如果新指令所使用的寄存器在前一模式中无法存取(或相反的情形),则发生模式错误。因此,电路设计者必须放置额外的逻辑电路与/或硬件于处理器管线20中,以避免发生模式错误。一般的作法是在管线中产生一延迟状态(stall condition),直到模式变更指令已于执行阶段进行处理,且其它阶段(从译码阶段至执行阶段)也已得知新模式。
然而,并非所有的模式变更皆会使用到不同的寄存器。亦极有可能于模式变更时,并不需要使用到无法存取的寄存器。另外,还有可能于模式变更时,不需要使用到新的寄存器。由于传统的处理器管线一检测到模式变更,即会产生管线延迟,因此常造成处理器管线许多不必要延迟。为解决上述的缺点,亟需提供一种于模式变更时,可以检测是否需要使用到无法存取的寄存器。藉由加入可检测模式错误的检测电路,则可以减少不必要的延迟。
发明内容
本发明披露一种适用于处理器管线,以减少管线中非必要延迟的系统及方法。于本发明的处理器管线的一实施例中,其包含一撷取阶段、一译码阶段以及一执行阶段。撷取阶段系用以撷取将于处理器管线中进行处理的指令;译码阶段用以对撷取来的指令进行译码;执行阶段则用以执行译码后的指令。其中该译码阶段在对指令进行译码之前,将指令储存于一暂时缓冲器。
处理器管线可包含一译码阶段,当执行阶段检测到因处理器管线的操作模式变更所导致的错误(error)发生时,译码阶段即对撷取阶段进行延迟。当现行操作模式的一个或多个寄存器于新操作模式中被判定为无法存取时,则执行阶段即检测其为错误。
于本发明的另一实施例,披露了一种包含处理器管线的处理器,该处理器管线包含至少一译码阶段及一执行阶段。处理器还包含一储存模块,连通于译码阶段,用以暂时储存指令。在此实施例中,译码阶段将一第一指令储存于储存模块,且对第一指令进行译码。而处理器管线即使在操作模式改变被检测到时,仍可无延迟地处理多个指令。
本发明的又一实施例披露了一种可减少管线延迟的处理器管线的指令处理方法,其可包含译码一处理器管线的操作模式变更指令;以及储存至少一个接续于模式变更指令之后的指令。此外,此方法还包含检测操作模式变更指令是否造成一模式变更错误(mode change error),延迟译码接续于于模式变更指令之后的至少一指令。然而,当检测到模式变更错误时,本发明方法还包含延迟一译码阶段之前的先前阶段;以及对至少一个已储存的指令进行译码。
下面的实施方式的详细说明及相关附图可使本领域的技术人员更为了解本发明系统、方法、特征及其优点,其属于本发明说明书的一部份并受到权利要求的保护。
附图说明
图1显示传统处理系统的方块图。
图2显示传统处理系统的管线方块图。
图3显示能防止模式变更错误的9个阶段处理器管线的具体实施例方块图。
图4A-4D显示流经图3处理器管线的指令流程。
图5显示具有9个阶段处理器管线的实施例方块图。
图6显示图5的解码阶段的实施例方块图。
图7显示图5的执行阶段的实施例方块图。
图8A-8D显示图5的处理器管线的指令流程,在此例示中模式改变未造成模式错误。
图9A-9F显示图5的处理器管线的指令流程,在此例示中模式改变造成了模式错误。
附图符号说明
10处理电路
12处理器
14存储器
16输入/输出(I/O)装置
18总线接口
20处理器管线
22撷取阶段
24解码阶段
26执行阶段
28存储器存取阶段
30写回阶段
32处理器管线
34指令地址产生阶段
36指令撷取阶段
38指令撷取队列阶段
40解码阶段
42寄存器数据存取阶段
44执行阶段
46第一数据存取阶段
48第二数据存取阶段
50除役阶段
60处理器管线
62指令地址产生阶段
64指令撷取阶段
66指令撷取队列阶段
68解码阶段
70寄存器数据存取阶段
72执行阶段
74第一数据存取阶段
76第二数据存取阶段
78除役阶段
80缓冲器
86通讯线路
88通讯线路
90指令转换模块
92控制模块
94译码模块
96执行模块
98模式处理模块
100模式/寄存器表
具体实施方式
图3显示处理器管线32的一实施例的方块图,其包含有9个阶段。图3所示的管线32的阶段包含一“指令地址产生”(instruction addressgeneration,IAG)阶段34、一“指令撷取”(instruction fetch,IF)阶段36、一“指令撷取队列”(instruction fetch queue,IFQ)阶段38、一“解码”(decode,DEC)阶段40、一“寄存器数据存取”(register fileaccess,RFA)阶段42、一“执行”(execute,EXE)阶段44、一“第一数据存取”dataaccess 1,DA1)阶段46、一“第二数据存取”(data access 2,DA2)阶段48与一“除役”(retirement,RTR)阶段50。然而,该处理器管线32也可包含更多或更少的阶段。再者,各阶段名称与功能可以随着需求不同而改变。本发明主要是关于处理器管线中的译码阶段以及执行阶段(例如译码阶段40以及执行阶段44),亦可以应用于其它具备译码阶段以及执行阶段(或其它类似功能阶段)的处理器管线的实施例,或依据本发明的精神所为的变形与修改。
有些精简指令集计算机(reduced instruction set computer,RISC)处理器使用不同模式以管理标准模式的例外(exception)操作。例如,当一指令呼叫中断时,处理器停止正规程序的运作以服务该中断,其操作模式则自一标准操作模式切换至中断模式。在中断模式期间,该处理器将正规程序的下一个地址储存于一“连结”(link)寄存器,当中断处理完成时,处理器会回到该地址。使用者模式(如标准操作模式)以及用以服务此中断的中断模式所共享的寄存器可储存于存储器内,其起始位置是由一“堆栈(Stack)寄存器”所决定。其它的例外处理模式也可使用相同的程序。根据此种作法,每个例外处理模式需用到两个专用的寄存器以完成返回先前的标准操作模式。
于起始阶段34、36及38之后,一指令进入译码(DEC)阶段40、寄存器数据存取(RFA)阶段42、执行(EXE)阶段44、第一数据存取(DA1)阶段46、第二数据存取(DA2)阶段48与除役(RTR)阶段50,这些阶段可以存取一些寄存器(未显示)。于一实施例中,管线32可以存取三十二个寄存器,举例而言,其中十六个寄存器可被指定为一般用途寄存器,至于其它的十六个寄存器则使用于处理器的不同操作模式期间。寄存器群组的使用是依据处理器管线32的操作模式而决定。于此实施例中,操作模式包含一“使用者(user)”模式、“系统(system)”模式、“管理者”(supervisor,SVC)模式、“放弃”(abort,ABT)模式、“未定义”(undefined,UND)模式、“中断请求”(interrupt request,IRQ)模式与“快速中断请求”(fast interruptrequest,FIQ)模式等。使用者模式为一般的标准操作模式,中断请求模式则为标准中断模式。此外,根据特殊的处理器设计,也可以使用其它型式的模式(例如各种的中断模式)。
处理器可指定寄存器(例如R0-R15)同时使用于使用者模式与系统模式。由于使用者模式以及系统模式共享相同的寄存器,因此在这两种模式中作切换并不会变更寄存器的可存取性。于“例外”模式时(例如管理者(SVC)模式、放弃(ABT)模式、未定义(UND)模式、中断请求(IRQ)模式),尽管大部份的寄存器(例如R0-R12以及R15)可以共享,然而其中一部份的寄存器却无法使用。虽然于使用者模式以及系统模式时可共享R13与R14,然而于管理者(SVC)模式时,是存取额外的R13_svc与R14_svc寄存器。于其它实施例中还有类似的情形,例如放弃(ABT)模式可存取R13_abt与R14_abt寄存器、未定义(UND)模式可存取R13_und与R14_und寄存器、中断请求(IRQ)模式可存取R13_irq与R14_irq寄存器。就此观点而言,十六个寄存器当中仅有两个与使用者模式或系统模式不同,其它的十四个寄存器则不受模式变更的影响。
至于快速中断请求模式(FIQ),则使用稍微不同的方式。快速中断请求模式除了可与所有模式共享存取R0-R7与R15之外,也存取额外的R8_fiq至R14_fiq寄存器,而非R8至R14。寄存器R13_fiq与R14_fiq的使用类似于其它例外处理模式的方式。另外,五个额外的寄存器R8_fiq至R12_fiq则特别用于快速中断请求模式中,以于进行不需要自外部存储器读写的快速数据存取时,节省使用者模式寄存器,以提供更快的中断服务。同样的,上述所提到的R13与R14寄存器也可当作连结与堆栈寄存器使用。
如上面所提到,进入管线32的指令可能为变更模式的指令。在此情况下,当执行阶段44决定一新模式时,译码阶段40与寄存器数据存取阶段42正在使用的某些寄存器很可能于新模式中无法使用。例如,若管线32正处于使用者模式,且寄存器R13包含有效的信息,此时若有一指令进入管线32而使得模式变更(例如变更为管理者模式,其使用的寄存器群组不包含寄存器R13),则会产生模式错误。在此例子中,当模式变更为新模式后,寄存器R13无法被存取。如前所述,传统作法系使用延迟来解决上述问题,但是却因此而阻挡了新指令的进入,一直等到译码阶段及执行阶段进入相同的模式为止。在此情况下,因使用的寄存器不同而导致的错误,其发生的机率非常小。
再次参阅图3,执行阶段44会送出“执行模式(exe_mode)”讯号至译码阶段40,以指示执行阶段44的模式为何。当译码阶段40检测到变更模式的指令后,会传送一“延迟”(stall)讯号至指令地址产生(IAG)阶段、指令撷取(IF)阶段、与指令撷取队列(IFQ)阶段,使这些阶段暂时等待,直到模式变更指令自译码阶段40进入执行阶段44以决定该新模式。在本发明不同的实施例中,上述的原理可应用于不同阶段架构的系统。例如,译码阶段40可传送延迟讯号至译码阶段40前面的任一或全部阶段。
图4A-4D显示流经图3的处理器管线32的指令流程。该些指令分别标示为n、n+1、n+2,等等。在此例中,指令n已到达管线32的末端除役(RTR)阶段50,而新指令n+8由指令地址产生(IAG)阶段34所接收。于图4A中,当一模式变更指令,例如指令n+5由译码阶段40所接收,译码阶段40会检测是否有模式错误产生。如果有的话,译码阶段40会传送一延迟讯号至先前的阶段(如指令地址产生阶段、指令撷取1阶段与指令撷取队列阶段),使得这些阶段于下个时钟周期产生延迟(如图4B所示)。因此,指令n+8、n+7与n+6仍分别停留在指令地址产生阶段34、指令撷取1阶段36与指令撷取队列阶段38中。同时,译码阶段40产生一“无执行”(no operation,nop)讯号,用以传递于管线32中。此种无执行(nop)讯号又称为管线的气泡(bubble),其并未携带任何有效指令,因此会被管线32后面各阶段舍弃或忽略。
于图4C,解码阶段40于第二周期再次延迟先前的阶段,并产生另一无执行讯号。另外,执行阶段44接收n+5指令以检测新模式并执行变更。之后,执行阶段44传送执行模式(exe_mode)讯号至译码阶段40以指示新模式。此时,译码阶段40将其本身设定为执行模式讯号所指示的模式。接着,移除延迟讯号(如图4D所示),而前面各阶段则持续处理更多的指令。由此例可得知,管线因嵌入二个无执行讯号而使得处理器延迟或减速。延迟周期的数目取决于从译码阶段40至执行阶段44其间的阶段数目(包括译码阶段40以及介于译码阶段40及执行阶段44之间的任一中间阶段)。在此例子中,由于译码阶段40至执行阶段44之间的阶段数目为二,所以管线总共延迟两个时钟周期。藉由图3的实施例可知,当检测到模式变更时即嵌入延迟的方式,可有效地降低因寄存器无法存取所造成的模式错误机率。
图5显示另一实施例的处理器管线60的方块图,其可用以减少延迟数量。于此实施例中,处理器管线60包含一指令地址产生(IAG)阶段62、一指令撷取(IF)阶段64、一指令撷取队列(IFQ)阶段66、一解码(DEC)阶段68、一寄存器数据存取(RFA)阶段70、一执行(EXE)阶段72、一第一数据存取(DA1)阶段74、一第二数据存取(DA2)阶段76及一除役(RTR)阶段78,与图3实施例的阶段结构相似。不过,译码阶段68及执行阶段72包含额外电路和/或逻辑电路(将于下面详述),用以减少管线60的延迟数目。此外,该处理器管线60与图3不同之处还包含一缓冲器80,用以储存译码阶段68的部份指令。缓冲器80可设置为一先进先出(first-in first-out,FIFO)储存组件。另外,缓冲器80可储存两个64位的项目(entry),于每一个项目中,32位用以储存指令,另外的32位则用以储存地址信息。于其它实施例中,缓冲器80可储存的项目数目决定于译码阶段至执行阶段的阶段数目(包括译码阶段以及任一中间阶段)。
译码阶段68可传送指令并储存于缓冲器80中。于此实施例中,由于缓冲器80只能储存两个指令,当第三个指令写入至缓冲器80时,没有用途的最旧一笔指令会被最新的指令所取代。依此种方式,缓冲器80可于需要时提供最新两个指令。另一种作法是,译码阶段68只有在碰到变更模式指令之后,才会储存复制两个指令(假设译码阶段至执行阶段之间具有两阶段)。于本实施例中,由于指令n+5为模式变更指令,因此指令n+6与n+7被存入缓冲器80中。
译码阶段68可藉由通讯线路82传送”延迟”讯号至指令地址产生(IAG)阶段62、指令撷取(IF)阶段64以及指令撷取队列(IFQ)阶段66。执行阶段72可藉由通讯线路84传送“模式清除”(mode_flush)讯号至译码(DEC)阶段68以及寄存器数据存取(RFA)阶段70。执行阶段72还可藉由通讯线路86传送“执行模式(exe_mode)”讯号,及藉由通讯线路88传送“模式错误(mode_error)”讯号至译码阶段68。
于操作时,处理器管线60可以检测到模式的变更。管线60也能检测到模式改变是否会导致模式改变错误(mode change error),例如于旧模式所使用的寄存器,于新模式中无法存取。若未检测到模式变更错误,则处理器管线60不会中断或延迟指令流程,允许指令正常的执行。若检测到模式变更错误,则处理器管线60会延迟指令流程,并嵌入无执行讯号。因此,相较于先前作法,处理器管线60于检测到模式变更时并不会自动的延迟,仅有在检测到模式变更错误时才会进行延迟。
处理器管线60自译码阶段68储存指令到缓冲器80,并继续进行一般的流程。译码阶段68可将每个指令储存至缓冲器80,或者仅储存接续在模式变更指令之后的指令,直到译码阶段及执行阶段的模式相同为止。若执行阶段72检测到因模式变更所产生的错误,则执行阶段72随即传送模式错误(mode_error)讯号至译码阶段68,以示意模式错误的产生。根据模式错误讯号,译码阶段68延迟先前阶段。另外,执行阶段72传送模式清除(mode_flush)讯号至译码阶段68及寄存器数据存取阶段70,用以清除这些阶段的内容,并嵌入无执行讯号。之所以要进行清除功能,是因为管线60于检测到模式变更后,仍然会继续进行并无延迟。另一个原因是,执行阶段可判断译码阶段68及寄存器数据存取阶段70是否根据旧模式的无效处理指令来持续进行。当模式变更指令进入执行阶段72并开始执行之后,缓冲器80于无执行讯号之后,提供其所储存的指令给译码阶段68,使这些储存的指令得以根据新模式及相对应寄存器,得到适当的执行。藉由此系统,当错误发生时,会有相同数量的无执行讯号被嵌入。然而如前所述,当模式发生变更但未检测到模式错误时,则指令的执行是不需要加入延迟与无执行讯号的。因此,不会有无谓的延迟(或气泡)被嵌入管线60中。
图6显示图5的解码阶段68的实施例方块图。在本实施例中,译码阶段68包含一指令转换模块90、一控制模块92及一译码模块94。指令转换模块90自先前阶段(例如指令撷取队列阶段66)接收指令,并自缓冲器80进行读写。指令转换模块90所包含的逻辑电路可选择在管线60无延迟发生时,自指令撷取队列阶段66接收指令;若管线60有延迟发生时,则至缓冲器80撷取指令。指令转换模块90随即将所选择的指令送至译码模块94。译码模块94可提供标准译码功能以译码现阶段的指令。另外,当检测到变更模式指令时,译码模块94会传送讯号至控制模块92,以指示模式的变更,并且将模式变更指令的相关讯息传送至下一阶段(例如寄存器数据存取阶段70)。
控制模块92藉由通讯线路86与88自执行阶段72接收讯号,以及自译码模块94接收一讯号以指示模式变更指令的检测。当控制模块92自译码模块94接收到模式变更的指示后,控制模块92将示意指令转换模块90储存接续的下两个指令于缓冲器80中。上述的功能为选择性的,亦即,指令转换模块90可自行将每个指令储存于缓冲器80中。不管使用哪一种方式,当这些指令需要使用时,缓冲器80将储存至少两个来自译码阶段68的指令。在本实施例中,控制模块92还包含逻辑或电路用以检测执行阶段72所判定的模式,如执行模式讯号所示,是否与译码模块94的现阶段模式相同。如前所述,缓冲器80可根据译码阶段至执行阶段间的阶段数目(包含译码阶段以及任何中间阶段),储存较多或较少的项目。
当接收到来自执行阶段72的模式错误(mode_error)讯号,指示已产生模式错误时,控制模块92命令译码模块94以无执行(nop)讯号取代目前指令,以传送至下一阶段。当先前阶段被延迟时,控制模块92还进一步命令指令转换模块90在下两个周期自缓冲器80选择或读取指令,以传送至译码模块94。藉此,事先储存的指令即可依据新检测到的模式交由译码模块94来处理。当指令自缓冲器80中读取时,控制模块92命令指令转换模块90自缓冲器80选择讯号,并且传送延迟讯号给译码阶段之前的各阶段。
图7显示图5的执行阶段72的实施例方块图。在本实施例中,执行阶段72包含一执行模块96、一模式处理模块98及一模式/寄存器表100。执行模块96用以提供标准执行功能,以执行现阶段指令,并将执行过的指令传送至下一阶段(例如第一数据存取阶段74),已执行的指令同时也被传送至模式处理模块98。若该指令为模式改变指令,则模式处理模块98即会据以反应。模式处理模块98储存先前时钟周期的模式,并将新模式与先前模式作比较。此外,模式处理模块98可使用窗体(例如模式/寄存器表100)以及与译码阶段68、寄存器数据存取阶段70目前所使用寄存器相关的讯息,来判断此模式改变是否可能造成模式错误,此模式错误系基于寄存器的可存取性的变更所造成的冲突。模式/寄存器表100包含各个模式以及每一模式下寄存器的可存取性之间的关连性。若模式处理模块98判定可能因模式变更而产生错误,则随即传送模式错误(mode_error)讯号至译码阶段68。此外,若有模式错误时,模式处理模块98传送模式清除(mode_flush)讯号至译码阶段到执行阶段之间的各阶段,用以清除这些阶段的指令。于此例中,由于被清除的信息系基于模式改变不会造成寄存器存取性冲突的假设,被清除的阶段会嵌入无执行讯号。如上述图6所述,译码阶段68接收模式错误讯号以及模式清除讯号以处理错误状态。关于模式错误期间所进行的处理将于图9中加以详述。
图8A-8D显示图5的处理器管线60的指令流程,在此实施例中模式改变未造成模式错误。于图8A中,译码阶段68检测到指令n+5,其欲变更管线60的操作模式。图8B显示于下一个时钟周期中,译码阶段68自指令撷取队列阶段66接收指令n+6,并将此指令储存于缓冲器80。此时,该译码阶段68未延迟先前阶段,而是如常处理指令n+6。于图8C中,译码阶段68储存指令n+7于缓冲器80。在此时钟周期内,执行阶段72检测模式改变是否会造成一个或多个寄存器无法存取的模式错误。于图8的实施例中,执行阶段72判定模式变更并未造成模式错误,因此允许指令通过管线而不需延迟(图8D)。
值得注意的是,管线60基本上是假设模式变更并不会造成模式错误,因而流程可以持续进行而不需加入延迟。由于大多数的寄存器于某一模式下的使用方式与在另一模式时是相同的,因此当发生模式变更时很可能不会发生错误或冲突。然而,为了以防万一,管线60仍然将指令储存于缓冲器80中,避免当上述假设错误,模式变更造成模式错误。即使检测到模式错误时,管线60可回复指令,并以先前的解决方法使用相同数量的延迟。关于自缓冲器80回复指令将详述于图9A-9F。
图9A-9F显示图5的处理器管线60的指令流程,在此实施例中模式改变造成了模式错误,亦即管线60的操作模式变更时,会造成部份现行的寄存器无法存取。图9A类似于图8A,译码阶段68接收到模式变更指令n+5。图9B类似于图8B,该缓冲器80储存来自译码阶段68的指令n+6,且指令流程持续无须延迟。于图9C中,缓冲器80储存指令n+7,且执行阶段72检测到因模式变更所造成的错误。于此实施例中,执行阶段72藉由通讯线路88传送模式错误(mode_error)讯号以指示有错误发生。针对此指示,管线60即进入一回复(recovery)状态,用以将译码阶段68及寄存器数据存取阶段70因寄存器新旧模式冲突而不当处理的指令予以回复。
当执行阶段72检测到模式变更指令n+5自一模式变更到另一模式而造成错误时,执行阶段72提供讯号至先前阶段以回复管线60。执行阶段72使用模式清除(mode-flush)讯号来清除译码(DEC)阶段以及寄存器数据存取(RFA)阶段中的指令。由于指令n+7以及n+6已在这些阶段中根据不正确的模式作了处理,因此模式清除(mode-flush)讯号指示译码阶段与寄存器数据存取阶段进行指令清除,并以无执行(nop)讯号来取代这些指令。执行阶段72也藉由通讯线路88传送模式错误(mode_error)讯号至译码阶段68。此讯号命令译码阶段68于下一个时钟周期时对先前阶段进行延迟(第9D图)。
于图9D中,解码阶段68延迟先前阶段,并且自缓冲器80接收指令n+6,而非从指令撷取队列阶段66接收新指令。据此可知,缓冲器80用以提供两个周期前所储存的指令n+6(根据先进先出原则),接着译码阶段68处理指令n+6,而前一周期的译码(DEC)阶段、寄存器数据存取(RFA)阶段的无执行(nop)讯号则往下传送。于图9E中,解码阶段同样地延迟先前阶段,并自缓冲器80中接收指令n+7。此时,管线60已经回复,且指令n+6以及n+7也根据新模式来进行正确的处理。于图9F中,该管线继续进行一般的运作,且移除了延迟讯号,以使指令地址产生(IAG)阶段、指令撷取(IF)阶段及指令撷取队列(IFQ)阶段得以处理新指令。
以上所述仅为本发明的实施例而已。其它未脱离发明所揭示的原则所完成的等效改变或修饰,均应包含在本发明的权利要求的范围内。

Claims (15)

1.一种可减少延迟的处理器管线,包含:
一撷取阶段,用以撷取将于该处理器管线中进行处理的多个指令;
一译码阶段,用以译码所述指令;以及
一执行阶段,用以执行译码后的所述指令;
其中该译码阶段于译码所述指令之前,将所述指令储存于一暂时缓冲器,该执行阶段检测到因为该处理器管线的操作模式变更,使现行操作模式所使用的至少一个寄存器于新操作模式中被判定为无法存取而导致的一错误发生时,该译码阶段对该撷取阶段进行延迟。
2.如权利要求1所述的处理器管线,还包含多个位于该译码阶段前面的先前阶段,其中该执行阶段检测到该错误时,该译码阶段延迟所述先前阶段。
3.如权利要求1所述的处理器管线,其中该执行阶段检测到因该处理器管线的操作模式变更而导致的该错误时,指示该译码阶段产生一“无执行”讯号。
4.如权利要求3所述的处理器管线,还包含至少一个位于该译码阶段与该执行阶段之间的中间阶段,其中该执行阶段检测到该错误时,指示该译码阶段与该执行阶段之间的该中间阶段产生一无执行讯号。
5.如权利要求1所述的处理器管线,其中该解码阶段对撷取自该撷取阶段或该暂时缓冲器的该指令进行译码。
6.如权利要求5所述的处理器管线,其中该解码阶段的所述先前阶段被延迟时,则该译码阶段自该暂时缓冲器接收该指令。
7.如权利要求1所述的处理器管线,其中该操作模式变更指令未导致该错误产生时,则该处理器管线不作延迟继续处理。
8.一种可减少管线延迟的处理器,包含:
一处理器管线,包含至少一译码阶段与一执行阶段;以及
一储存装置,连通于该译码阶段,用以暂时储存至少一指令;
其中该译码阶段将一第一指令储存于该储存装置,且对该第一指令进行译码,该处理器管线检测到操作模式改变时,仍可无延迟地处理多个指令。
9.如权利要求8所述的处理器,其中该处理器管线于操作模式改变未造成一寄存器于新模式下无法存取时,无延迟地处理指令。
10.如权利要求8所述的处理器,其中该解码阶段包含:
一转换装置,用以转换指令;
一译码装置,用以对指令进行译码;以及
一控制模块;
其中该转换装置选择自该译码阶段的先前阶段或者自该储存装置接收指令以传送该至译码装置。
11.如权利要求8所述的处理器,其中该执行阶段包含:
一执行装置,用以执行指令;
一处理装置,用以处理操作模式的状态;以及
一寄存器装置,用以储存与操作模式和寄存器组之间关连性相关的讯息。
12.一种可减少管线延迟的指令处理方法,包含:
译码一操作模式变更指令;
储存接续于该操作模式变更指令之后的至少一个指令;以及
检测该操作模式变更指令是否造成一模式变更错误;
其中未检测到该模式变更错误时,忽略已储存的该指令,且无延迟地继续译码指令。
13.如权利要求12所述的指令处理方法,还包含延迟译码接续于该操作模式变更指令之后的至少一指令。
14.如权利要求12所述的指令处理方法,还包含检测到该模式变更错误时:
延迟一解码阶段之前的一先前阶段;以及
对已储存的该指令进行译码。
15.如权利要求14所述的指令处理方法,其中该译码阶段之前的该先前阶段被延迟的周期数量相同于该译码阶段至一执行阶段之间的阶段数量。
CNB2007100849507A 2006-07-18 2007-02-16 可减少管线延迟的处理器、管线与指令处理方法 Active CN100527075C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US80762006P 2006-07-18 2006-07-18
US60/807,620 2006-07-18
US11/462,469 2006-08-04

Publications (2)

Publication Number Publication Date
CN101017431A true CN101017431A (zh) 2007-08-15
CN100527075C CN100527075C (zh) 2009-08-12

Family

ID=38726468

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007100849507A Active CN100527075C (zh) 2006-07-18 2007-02-16 可减少管线延迟的处理器、管线与指令处理方法

Country Status (1)

Country Link
CN (1) CN100527075C (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108037951A (zh) * 2017-12-27 2018-05-15 山东师范大学 一种dtp处理器的中断快速切换方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108037951A (zh) * 2017-12-27 2018-05-15 山东师范大学 一种dtp处理器的中断快速切换方法及装置
CN108037951B (zh) * 2017-12-27 2020-11-20 山东师范大学 一种dtp处理器的中断快速切换方法及装置

Also Published As

Publication number Publication date
CN100527075C (zh) 2009-08-12

Similar Documents

Publication Publication Date Title
CN100590655C (zh) 指令解析器以及图形处理单元及其方法
US8380966B2 (en) Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging
US5546593A (en) Multistream instruction processor able to reduce interlocks by having a wait state for an instruction stream
CN100361073C (zh) 多线程流水线指令解码器的方法和设备
CN1307536C (zh) 将一个处理器与一个协处理器相接口的方法和装置
US6694425B1 (en) Selective flush of shared and other pipeline stages in a multithread processor
US6865663B2 (en) Control processor dynamically loading shadow instruction register associated with memory entry of coprocessor in flexible coupling mode
CN102460377B (zh) 数据处理设备及方法
CN1916961B (zh) 可中断图形处理单元及其控制方法
CN100435172C (zh) 可中断图形处理单元处理多个程序的方法和图形处理单元
CN101681191B (zh) 在电能转换期间的数字信号处理器调试
JP5273982B2 (ja) データ処理システム内のレジスタリネーミング
TWI244038B (en) Apparatus and method for managing a processor pipeline in response to exceptions
CN101901132B (zh) 微处理器以及相关储存方法
US6301654B1 (en) System and method for permitting out-of-order execution of load and store instructions
WO2012106719A1 (en) Processor with a coprocessor having early access to not-yet issued instructions
CN100416496C (zh) 更新指令错误状态寄存器
US20050228972A1 (en) Completion table configured to track a larger number of outstanding instructions
CN100527075C (zh) 可减少管线延迟的处理器、管线与指令处理方法
US20080126743A1 (en) Reducing Stalls in a Processor Pipeline
KR100267410B1 (ko) 정보 처리 장치 및 이의 인터럽트 신호 발생 방법
US7305586B2 (en) Accessing and manipulating microprocessor state
CN100392601C (zh) 于电脑系统中装置间转移控制权及由待机切换至运作的方法
US7124288B2 (en) Programmable unit with a stack buffer storage device configurable into discrete shadow storage elements accessible by a plurality of command execution units
CN117539544B (zh) 基于risc-v指令集的中断控制架构及控制方法

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