CN117093269A - 检查并更新程序计数器数值的逻辑电路以及方法 - Google Patents

检查并更新程序计数器数值的逻辑电路以及方法 Download PDF

Info

Publication number
CN117093269A
CN117093269A CN202210509818.0A CN202210509818A CN117093269A CN 117093269 A CN117093269 A CN 117093269A CN 202210509818 A CN202210509818 A CN 202210509818A CN 117093269 A CN117093269 A CN 117093269A
Authority
CN
China
Prior art keywords
program counter
counter value
instruction
current
value
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.)
Pending
Application number
CN202210509818.0A
Other languages
English (en)
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.)
Realtek Semiconductor Corp
Original Assignee
Realtek Semiconductor 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 Realtek Semiconductor Corp filed Critical Realtek Semiconductor Corp
Priority to CN202210509818.0A priority Critical patent/CN117093269A/zh
Publication of CN117093269A publication Critical patent/CN117093269A/zh
Pending legal-status Critical Current

Links

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 or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/321Program or instruction counter, e.g. incrementing
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

本发明提供一种检查并更新程序计数器数值的逻辑电路以及方法。该逻辑电路可包含一检查电路以及一程序计数器数值决定电路。该检查电路可检查一目前程序计数器数值的连续性以及与一分支预测器相关的多个旗标,以产生一检查结果,其中该分支预测器是用来依据该目前程序计数器数值控制该多个旗标。该程序计数器数值决定电路可依据该检查结果自多个候选程序计数器数值选择其中一者以作为一后续程序计数器数值,其中该目前程序计数器数值是对应于一目前指令,以及该后续程序计数器数值是对应于在该目前指令之后的一后续指令。

Description

检查并更新程序计数器数值的逻辑电路以及方法
技术领域
本发明涉及在管线化架构中的分支预测,尤指一种在管线化架构中检查并更新程序计数器数值的逻辑电路以及方法。
背景技术
当中央处理单元(central processing unit,CPU)在常见的管线化(pipeline)架构中接收到分支(branch)指令时,若不进行任何分支预测,则需要等到该分支指令进入指令执行阶段时才能得知下一个指令是否需跳转至异于一预设序列指令的一分支目标指令,而管线化架构的操作效率也因此受限。为了提升管线化架构处理分支指令的效率,典型地会利用一分支预测器在指令获取(instruction fetch,IF)阶段就先预测在该分支指令的跳转目标指令,以容许跟随在该分支指令之后的跳转目标指令能提早进入管线化架构中。
在相关技术中,中央处理单元的静态随机存取内存可利用单错更正双错检测(Single-Error-Correction-Double-Error-Detection,SEC-DED)汉明码来实施错误更正码。然而,当该分支预测器的预测结果因为柔性错误而造成瞬时错误的出现,且这个瞬时错误(例如多位错误)无法以单错更正双错检测的方式来修正或检测时,就会导致中央处理单元无法正常操作。
因此,需要一种新颖的检查机制,以在不大幅增加额外成本的情况下对于指令执行的顺序进行检查,并且在检测到错误时能妥善地进行更正。
发明内容
本发明的目的在于提供一种在管线化(pipeline)架构中检查并更新程序计数器数值的逻辑电路以及方法,以在没有副作用或较不会带来副作用的情况下解决相关技术的问题。
本发明至少一实施例提供一种用来在管线化架构中检查并更新程序计数器(program counter)数值的逻辑电路。该逻辑电路可包含一检查电路以及一程序计数器数值决定电路,其中该程序计数器数值决定电路耦接至该检查电路。该检查电路可用来检查一目前程序计数器数值的连续性以及与一分支预测器相关的多个旗标,以产生一检查结果,其中该分支预测器是用来依据该目前程序计数器数值控制该多个旗标。该程序计数器数值决定电路可用来依据该检查结果自多个候选程序计数器数值选择其中一者以作为一后续程序计数器数值,其中该目前程序计数器数值是对应于一目前指令,以及该后续程序计数器数值是对应于在该目前指令之后的一后续指令。
本发明至少一实施例提供一种用来在管线化架构中检查并更新一程序计数器数值的方法,其中该方法是可应用于(applicable to)一逻辑电路。该方法可包含:利用该逻辑电路的一检查电路检查一目前程序计数器数值的连续性以及与一分支预测器相关的多个旗标,以产生一检查结果,其中该分支预测器是用来依据该目前程序计数器数值控制该多个旗标;以及利用该逻辑电路的一程序计数器数值决定电路依据该检查结果自多个候选程序计数器数值选择其中一者以作为一后续程序计数器数值。尤其,该目前程序计数器数值是对应于一目前指令,以及该后续程序计数器数值是对应于在该目前指令之后的一后续指令。
本发明的实施例提供的逻辑电路以及方法能在发生柔性错误时检测到程序计数器数值或旗标的异常,并且借由后续程序计数器数值的控制(例如通过重复执行相同的程序计数器数值对应的指令)来排除柔性错误造成的问题。相较于相关技术,本发明的实施例不会大幅地增加额外成本。因此,本发明能在没有副作用或较不会带来副作用的情况下解决相关技术的问题。
附图说明
图1为依据本发明一实施例的一设备在指令管线化的架构下操作的示意图。
图2为依据本发明一实施例的一程序计数器序列检查电路的示意图。
图3为依据本发明一实施例的一种用来在管线化架构中检查并更新一程序计数器数值的方法的工作流程的示意图。
图4为依据本发明一实施例的该方法的某些细节。
具体实施方式
图1为依据本发明一实施例的一设备10(例如中央处理单元)在指令管线化的架构下操作的示意图。在本实施例中,该指令管线化的架构可为五阶段管线,包含指令获取(instruction fetch,IF)阶段、指令译码(instruction decode,ID)阶段、指令执行阶段、内存存取阶段以及数据写回阶段,其中以上阶段在图中分别标示为「IF」、「ID」、「EX」、「MEM」以及「WB」以求简明,并且各阶段之间分别以对应的接口作区隔,其中这些接口分别标示「IF/ID」、「ID/EX」、「EX/MEM」以及「MEM/WB」以便于理解。
设备10可利用程序计数器(program counter,简称PC)指出目前中央处理单元的操作在其程序序列中的位置,其中不同的程序计数器数值可对应于不同的指令。如图1所示,设备10可包含一多任务器20(在图1标示为「MUX」)、一分支预测器50以及一逻辑电路诸如PC序列检查电路100。在指令获取阶段,分支预测器50可依据接收到的PC数值进行分支预测,例如判断该PC数值是否对应于一分支指令、预测该分支指令是否采取指令跳转、以及预测指令跳转的目标PC数值诸如PC数值PCPRED。举例来说,分支预测器50可包含一分支目标缓冲器(branch target buffer,BTB)以及一采取跳转预测电路,其中分支目标缓冲器(branch target buffer,BTB)可用静态随机存取内存(static random access memory,SRAM)来实施,但本发明不限于此。该分支目标缓冲器可储存分支指令的PC数值以及这个分支指令的分支目标(例如预测目标)以预测这个分支指令的分支跳转目标,而该采取跳转预测电路可用来预测这个分支指令是否采取指令跳转。另外,分支预测器50可将这些预测结果传送给PC序列检查电路100,以在内存存取阶段针对这些预测结果进行检查并据以产生一检查结果诸如旗标FLAGRERUN
在本实施例中,旗标FLAGRERUN是用来控制是否使某个PC数值对应的指令重新执行,例如通过将这个PC数值诸如PCRERUN传回指令获取阶段以使对应的指令重新执行。另外,PC数值PCSEQ可代表在分支预测器50的预设排序下的目前的PC数值的下个PC数值(例如目前的PC值加上固定的偏移(offset)值)。在本实施例中,多任务器20可从PC数值PCSEQ、PCPRED以及PCRERUN中选择其中一者以作为进入指令获取阶段的PC数值。例如,当旗标FLAGRERUN被抬起时(例如FLAGRERUN=1),多任务器20可选择PC数值PCRERUN作为进入指令获取阶段的PC数值,并且清空(flush)目前管线中的指令及数据以重新执行与PC数值PCRERUN对应的指令。又例如,当旗标FLAGRERUN未被抬起(例如FLAGRERUN=0)且分支预测器50的预测结果为采取指令跳转时,多任务器20可选择PC数值PCPRED作为进入指令获取阶段的PC数值。又例如,当旗标FLAGRERUN未被抬起(例如FLAGRERUN=0)且分支预测器50的预测结果为不采取指令跳转时,多任务器20可选择PC数值PCSEQ作为进入指令获取阶段的PC数值。
需注意的是,设备10可包含其他逻辑电路或运算模块(未显示于图中)以分别执行各个阶段的工作,然而这些逻辑电路或运算模块的实施为本领域熟知的技术,且并不实质影响本发明的实施,为简明起见在此不赘述。
图2为依据本发明一实施例的PC序列检查电路100的示意图。如图2所示,PC序列检查电路100可包含PC数值决定电路110以及PC数值检查电路120,其中PC数值决定电路110耦接至PC数值检查电路120。在本实施例中,PC数值检查电路120可用来检查一目前PC数值的连续性以及与分支预测器50相关的多个旗标诸如FLAGBRANCH以及FLAGBPTAKEN,以产生一检查结果诸如旗标FLAGRERUN,其中分支预测器50可依据该目前PC数值控制旗标FLAGBRANCH以及FLAGBPTAKEN。另外,PC数值决定电路120可用来依据该检查结果诸如旗标FLAGRERUN自多个候选PC数值选择其中一者以作为一后续PC数值。尤其,该目前PC数值可对应于一目前指令,以及该后续PC数值可对应于在该目前指令之后的一后续指令。
在本实施例中,PC数值决定电路110可包含一选择控制逻辑111、多任务器112(在图2标示为「MUX」)、一加法器113以及一缓冲器114(例如缓存器)。选择控制逻辑111可依据旗标FLAGRERUN、FLAGEXCEPTION、FLAGTAKENBRANCH以及FLAGPCVALID产生控制信号SELNEXTPC,以控制多任务器112自该多个候选PC数值选择其中一者以作为该后续PC数值,以及缓冲器114可在下个周期将该后续PC数值输出。需注意的是,在一目前周期中,位于缓冲器的输入端(例如多任务器112的输出端)的PC数值PCNEXT[1]可代表该后续PC数值在一目前周期的值,以及位于缓冲器的输出端的PC数值PCNEXT[0]可代表该后续PC数值在一先前周期的值。另外,加法器113可用来将PC数值PCCURRENT[1]与偏移值PCOFFSET相加以产生一序列PC数值(例如(PCCURRENT[1]+PCOFFSET)),其中偏移值PCOFFSET可依据指令的类型被设定为固定的数值诸如4、8、16等等,但本发明不限于此。
在本实施例中,PC数值检查电路120可包含一连续性检测逻辑诸如比较器121、一错误检测逻辑诸如与门122(在图2中标示为「AND」)、以及一或门123(在图2中标示为「OR」),其中或门123耦接至与门122以及比较器121。比较器121可用来依据PC数值PCCURRENT[1]以及PC数值PCNEXT[0]产生一连续性检测结果。由于PC数值PCNEXT[0]可代表PC数值决定电路110依据旗标FLAGRERUN、FLAGEXCEPTION、FLAGTAKENBRANCH以及FLAGPCVALID在该先前周期(例如该目前周期的前一个周期)的值决定的该后续PC数值(例如PC数值决定电路110期望或预测会在该目前周期接收到的PC数值),而PC数值PCCURRENT[1]则是该目前PC数值在该目前周期的值(例如PC序列检查电路100确实在该目前周期接收到的PC数值),因此该连续性检测结果可指出PC数值PCCURRENT[1]与PC数值PCNEXT[0]是否一致以供判断在管线化架构中的PC数值的连续性是否异常。例如,当该连续性检测结果指出PC数值PCCURRENT[1]与PC数值PCNEXT[0]一致时(例如该连续性检测结果显示为逻辑值「0」),表示在管线化架构中的PC数值的连续性正常。又例如,当该连续性检测结果指出PC数值PCCURRENT[1]与PC数值PCNEXT[0]不一致时(例如该连续性检测结果显示为逻辑值「1」),表示在管线化架构中的PC数值的连续性异常。
另外,旗标FLAGBRANCH可代表一分支指令旗标以指出该目前指令(例如与PC数值PCCURRENT[1]对应的指令)是否为分支指令,以及旗标FLAGBPTAKEN可代表一分支预测采取旗标以指出该目前指令(例如与PC数值PCCURRENT[1]对应的指令)是否采取指令跳转。在本实施例中,与门122可依据旗标FLAGBRANCH以及FLAGBPTAKEN产生一错误检测结果诸如旗标FLAGINVALID。需注意的是,与门122的用来接收旗标FLAGBRANCH的端子在图2中另外示出了一个圆圈以表示对旗标FLAGBRANCH进行反向运算。因此,当旗标FLAGBRANCH指出该目前指令不是分支指令(例如FLAGBRANCH=0)但旗标FLAGBPTAKEN却指出该目前指令采取跳转(例如FLAGBPTAKEN=1)时,与门122可将旗标FLAGINVALID抬起(例如FLAGINVALID=1)以指出分支预测器50的操作异常。在某些实施例中,当旗标FLAGINVALID被抬起时,PC序列检查电路100可废止(invalidate)在分支预测器50(例如其内的分支目标缓冲器)中与PC数值PCCURRENT[1]对应的条目,但本发明不限于此。
另外,或门123可对该连续性检测结果与该错误检测结果进行一逻辑或运算以产生该检查结果诸如旗标FLAGRERUN,其中当该连续性检测结果指出PC数值PCCURRENT[1]与PC数值PCNEXT[0]不一致或当旗标FLAGINVALID指出分支预测器50的操作异常时,旗标FLAGRERUN可被抬起(例如FLAGRERUN=1)。
在本实施例中,该多个候选PC数值可包含对应于旗标FLAGEXCEPTION的PC数值PCEXCEPTION、对应于旗标FLAGTAKENBRANCH的PC数值PCBRANCHTARGET、对应于旗标FLAGPCVALID的该序列PC数值(例如(PCCURRENT[1]+PCOFFSET))、以及对应于旗标PCRERUN的PC数值PCNEXT[0]。当旗标FLAGRERUN被抬起时,选择控制电路111可控制多任务器112选择PC数值PCNEXT[0]作为PC数值PCNEXT[1],并且输出为图1所示的PC数值PCRERUN以使与PC数值PCNEXT[0]对应的后续指令被重新执行。
当旗标FLAGRERUN未被抬起时,表示该目前PC数值的连续性以及该多个旗标(诸如FLAGBRANCH以及FLAGBPTAKEN)均未发生异常,而PC数值决定电路110可另依据多个事件旗标自该多个候选程序计数器数值选择其中一者以作为该后续PC数值。在本实施例中,该多个事件旗标可包含一例外事件旗标诸如旗标FLAGEXCEPTION、一分支采取跳转旗标诸如旗标FLAGTAKENBRANCH以及一PC有效旗标诸如旗标FLAGPCVALID。例如,PC数值决定电路110可依据旗标FLAGEXCEPTION决定是否选择PC数值PCEXCEPTION作为PC数值PCNEXT[1],其中当设备10的操作发生任何中断事件时,旗标FLAGEXCEPTION可被抬起,而PC数值PCEXCEPTION可代表设备10在遇到中断事件时预设会进行跳转的目标PC数值,以使设备10根据上述中断事件执行预设的后续指令,但本发明不限于此。又例如,当旗标FLAGEXCEPTION未被抬起时,PC数值决定电路110可依据旗标FLAGTAKENBRANCH决定是否选择PC数值PCBRANCHTAKEN作为PC数值PCNEXT[1],其中当分支预测器50判断PC数值PCNEXT[1]对应于分支指令且将采取指令跳转时,旗标FLAGTAKENBRANCH可被抬起,而PC数值PCBRANCHTAKEN可代表根据该分支指令采取跳转时的目标PC数值,但本发明不限于此。又例如,当旗标FLAGEXCEPTION及PCBRANCHTAKEN均未被抬起时,PC数值决定电路110可依据旗标FLAGPCVALID决定是否选择该序列PC数值(例如(PCCURRENT[1]+PCOFFSET))作为PC数值PCNEXT[1],其中当PC数值PCCURRENT[1]在经过指令译码阶段的处理后被确认是对应于有效指令(例如一般的序列指令)时,旗标FLAGPCVALID可被抬起,以使PC数值PCNEXT[1]被设为(PCCURRENT[1]+PCOFFSET),但本发明不限于此。
需注意的是,当某个PC数值被检测到其对应的旗标异常时(例如旗标FLAGINVALID被抬起时),PC序列检查电路100并非必须立即废止在分支预测器50(例如其内的分支目标缓冲器)中与这个PC数值对应的条目。例如,当分支预测器50因为柔性错误而使得与PC数值PCCURRENT[1]对应的旗标FLAGBRANCH及FLAGBPTAKEN发生瞬时的异常时,PC序列检查电路100可通过重新执行与PC数值PCCURRENT[1]对应的指令即可解决上述瞬时的异常。在某些实施例中,PC序列检查电路100可另包含一计数器以用来计算与PC数值PCCURRENT[1]对应的指令被重新执行的次数,以产生一计数结果,其中当该计数结果小于一预设阈值,PC序列检查电路100可使在分支预测器50(例如其内的分支目标缓冲器)中与PC数值PCCURRENT[1]对应的条目继续保持在有效的状态,而当该计数结果达到(或大于)该预设阈值时,PC序列检查电路100可废止在分支预测器50(例如其内的分支目标缓冲器)中与PC数值PCCURRENT[1]对应的条目,但本发明不限于此。
图3为依据本发明一实施例的一种用来在管线化架构中检查并更新一程序计数器数值的方法的工作流程的示意图,其中该方法是可应用于(applicable to)一逻辑电路诸如图2所示的PC序列检查电路100。需注意的是,一或多个步骤可在图3所示的工作流程中被新增、删除或修改。另外,只要不妨碍整体结果,这些步骤并非必须完全依照图3所示的顺序执行。
在步骤S310中,该逻辑电路可利用其内的一检查电路(例如PC数值检查电路120)检查一目前程序计数器数值的连续性以及与一分支预测器相关的多个旗标,以产生一检查结果,其中该分支预测器是用来依据该目前程序计数器数值控制该多个旗标。
在步骤S320中,该逻辑电路可利用其内的一程序计数器数值决定电路(例如PC数值决定电路110)依据该检查结果自多个候选程序计数器数值选择其中一者以作为一后续程序计数器数值,其中该目前程序计数器数值是对应于一目前指令,以及该后续程序计数器数值是对应于在该目前指令之后的一后续指令。
图4为依据本发明一实施例的该方法的某些细节,其中图4所示的工作流程可用图2所示的PC序列检查电路10来执行。需注意的是,一或多个步骤可在图4所示的工作流程中被新增、删除或修改。另外,只要不妨碍整体结果,这些步骤并非必须完全依照图4所示的顺序执行。
在步骤S400中,PC序列检查电路100可(例如通过确认旗标FLAGPCVALID)检查PC数值PCCURRENT[1]是否为有效的。在确认PC数值PCCURRENT[1]是有效的以后,流程开始,并且进入步骤S410。
在步骤S410中,PC序列检查电路100可检查旗标FLAGBPTAKEN被抬起而旗标FLAGBRANCH未被抬起的情况(在图4中标示为「FLAGBPTAKEN&!FLAGBRANCH」以求简明)是否成立。若此步骤的检查结果为「是」,流程进入步骤S420;若此步骤的检查结果为「否」,流程则进入步骤S430。
在步骤S420中,PC序列检查电路100可废止在分支预测器50(例如其内的分支目标缓冲器)中与PC数值PCCURRENT[1]对应的条目,接着清空管线中的指令及数据,并且选择PC数值PCNEXT[0]作为PC数值PCNEXT[1](在图4中标示为「废止分支目标缓冲器条目,清空管线,将PCNEXT[1]设为PCNEXT[0]」以求简明)。
在步骤S430中,PC序列检查电路100可检查PC数值PCCURRENT[1]与PC数值PCNEXT[0]是否一致(在图4中标示为「PCCURRENT[1]==PCNEXT[0]」以求简明)。若此步骤的检查结果为「是」,流程进入步骤S450;若此步骤的检查结果为「否」,流程则进入步骤S440。
在步骤S440中,PC序列检查电路100可清空管线中的指令及数据,并且选择PC数值PCNEXT[0]作为PC数值PCNEXT[1](在图4中标示为「清空管线,将PCNEXT[1]设为PCNEXT[0]」以求简明)。
在步骤S450中,PC序列检查电路100可检查PC数值PCCURRENT[1]是否对应于一分支指令(在图4中标示为「分支指令?」以求简明)。若此步骤的检查结果为「是」,流程进入步骤S470;若此步骤的检查结果为「否」,流程则进入步骤S460。
在步骤S460中,PC序列检查电路100可确认PC数值PCCURRENT[1]为一般指令,并且选择该序列PC数值(例如(PCCURRENT[1]+PCOFFSET))作为PC数值PCNEXT[1](在图4中标示为「将PCNEXT[1]设为PCCURRENT[1]+PCOFFSET」以求简明)。
在步骤S470中,PC序列检查电路100可确认对应于PC数值PCCURRENT[1]的分支指令是否采取跳转(在图4中标示为「分支采取跳转?」以求简明)。若此步骤的检查结果为「是」,流程进入步骤S480;若此步骤的检查结果为「否」,流程则进入步骤S460。
在步骤S480中,PC序列检查电路100可选择分支预测器50预测的目标PC数值诸如PCBRANCHTAKEN作为PC数值PCNEXT[1](在图4中标示为「将PCNEXT[1]设为分支目标」以求简明)。
在步骤S490中,程序计数器检查结束。
总结来说,本发明通过PC序列检查电路100在内存存取阶段对多个与分支预测器50相关的旗标以及PC数值的连续性进行检查,以决定如何更新后续PC数值。当检测到相关旗标或PC数值的连续性异常时,可通过对应的后续PC数值更新机制控制管线化架构重新执行异常的PC数值所对应的指令,借此解决柔性错误所造成的瞬时异常。相较于相关技术,本发明的实施例不会大幅增加额外成本。因此,本发明能在没有副作用或较不会带来副作用的情况下解决相关技术的问题。
以上所述仅为本发明的优选实施例,凡依本发明权利要求所做的均等变化与修饰,皆应属本发明的涵盖范围。
【符号说明】
10:设备
20:多任务器
50:分支预测器
100:程序计数器序列检查电路
110:PC数值决定电路
111:选择控制逻辑
112:多任务器
113:加法器
114:缓冲器
120:PC数值检查电路
121:比较器
122:与门
123:或门
FLAGEXCEPTION,FLAGTAKENBRANCH,FLAGPCVALID,FLAGRERUN:旗标
FLAGBRANCH,FLAGBPTAKEN,FLAGINVALID:旗标
PCEXCEPTION,PCBRANCHTARGET,PCCURRENT:程序计数器数值
PCNEXT[0],PCNEXT[1],PCRERUN,PCSEQ,PCPRED:程序计数器数值
PCOFFSET:偏移值
SELNEXTPC:控制信号
S310~S320,S410~S490:步骤。

Claims (10)

1.一种用来在管线化架构中检查并更新程序计数器数值的逻辑电路,包含:
一检查电路,用来检查一目前程序计数器数值的连续性以及与一分支预测器相关的多个旗标,以产生一检查结果,其中该分支预测器是用来依据该目前程序计数器数值控制该多个旗标;以及
一程序计数器数值决定电路,耦接至该检查电路,用来依据该检查结果自多个候选程序计数器数值选择其中一者以作为一后续程序计数器数值;
其中该目前程序计数器数值是对应于一目前指令,以及该后续程序计数器数值是对应于在该目前指令之后的一后续指令。
2.根据权利要求1所述的逻辑电路,其中该检查电路包含:
一连续性检测逻辑,用来依据该目前程序计数器数值以及该后续程序计数器数值产生一连续性检测结果;
一错误检测逻辑,用来依据该多个旗标产生一错误检测结果;以及
一或门,耦接至一比较器以及该错误检测逻辑,用来对该连续性检测结果与该错误检测结果进行一逻辑或运算以产生该检查结果。
3.根据权利要求2所述的逻辑电路,其中该连续性检测结果指出该目前程序计数器数值在一目前周期的值与该后续程序计数器数值在一先前周期的值是否一致。
4.根据权利要求2所述的逻辑电路,其中该多个旗标包含一分支指令旗标以及一分支预测采取旗标,该分支指令旗标指出该目前指令是否为分支指令,以及该分支预测采取旗标指出该目前指令是否采取指令跳转。
5.根据权利要求4所述的逻辑电路,其中当该分支指令旗标指出该目前指令不是分支指令且该分支预测采取旗标指出该目前指令采取指令跳转时,该错误检测结果指出该分支预测器的操作异常。
6.根据权利要求5所述的逻辑电路,其中当该错误检测结果指出该分支预测器的操作异常时,该逻辑电路废止在该分支预测器中与该目前程序计数器数值对应的条目。
7.根据权利要求1所述的逻辑电路,其中该多个候选程序计数器数值包含该后续程序计数器数值在一先前周期的值,以及当该检查结果指出该目前程序计数器数值的连续性或该多个旗标异常时,该程序计数器数值决定电路选择该后续程序计数器数值在该先前周期的值作为该后续程序计数器数值在一目前周期的值,以使与该后续程序计数器数值在该先前周期的值对应的后续指令被重新执行。
8.根据权利要求1所述的逻辑电路,其中当该检查结果指出该目前程序计数器数值的连续性以及该多个旗标均未发生异常,该程序计数器数值决定电路另依据多个事件旗标自该多个候选程序计数器数值选择其中一者以作为该后续程序计数器数值。
9.根据权利要求8所述的逻辑电路,其中该多个事件旗标包含一例外事件旗标、一分支采取跳转旗标以及一程序计数器有效旗标,以及该多个候选程序计数器数值包含与一例外事件跳转指令对应的一第一候选程序计数器数值、与一分支跳转目标指令对应的一第二候选程序计数器数值、以及与一预设序列指令对应的一第三候选程序计数器数值,其中该例外事件旗标、该分支采取跳转旗标以及该程序计数器有效旗标分别对应于该第一候选程序计数器数值、该第二候选程序计数器数值以及该第三候选程序计数器数值。
10.一种用来在管线化架构中检查并更新一程序计数器数值的方法,该方法是能应用于一逻辑电路,该方法包含:
利用该逻辑电路的一检查电路检查一目前程序计数器数值的连续性以及与一分支预测器相关的多个旗标,以产生一检查结果,其中该分支预测器是用来依据该目前程序计数器数值控制该多个旗标;以及
利用该逻辑电路的一程序计数器数值决定电路依据该检查结果自多个候选程序计数器数值选择其中一者以作为一后续程序计数器数值;
其中该目前程序计数器数值是对应于一目前指令,以及该后续程序计数器数值是对应于在该目前指令之后的一后续指令。
CN202210509818.0A 2022-05-11 2022-05-11 检查并更新程序计数器数值的逻辑电路以及方法 Pending CN117093269A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210509818.0A CN117093269A (zh) 2022-05-11 2022-05-11 检查并更新程序计数器数值的逻辑电路以及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210509818.0A CN117093269A (zh) 2022-05-11 2022-05-11 检查并更新程序计数器数值的逻辑电路以及方法

Publications (1)

Publication Number Publication Date
CN117093269A true CN117093269A (zh) 2023-11-21

Family

ID=88780883

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210509818.0A Pending CN117093269A (zh) 2022-05-11 2022-05-11 检查并更新程序计数器数值的逻辑电路以及方法

Country Status (1)

Country Link
CN (1) CN117093269A (zh)

Similar Documents

Publication Publication Date Title
US8095777B2 (en) Structure for predictive decoding
AU631874B2 (en) Paired instruction processor branch recovery mechanism
US20080276069A1 (en) Method and apparatus for predictive decoding
AU631875B2 (en) Paired instruction processor precise exception handling mechanism
US7237098B2 (en) Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
CN101819520B (zh) 管线式微处理器以及快速执行条件分支指令的方法
US6266765B1 (en) Computer architecture capable of execution of general purpose multiple instructions
TWI506550B (zh) 管線式微處理器、執行兩種條件分支指令的方法以及其電腦程式產品
US8082428B2 (en) Methods and system for resolving simultaneous predicted branch instructions
US9021240B2 (en) System and method for Controlling restarting of instruction fetching using speculative address computations
US7984279B2 (en) System and method for using a working global history register
CN101213522A (zh) 降低时钟同步双模冗余系统中的不可纠正错误率
US20020038418A1 (en) Computer system
TWI436274B (zh) 一種微處理器及其執行方法
JP2009528637A (ja) リンク・スタックを修復するための方法および装置
US7010676B2 (en) Last iteration loop branch prediction upon counter threshold and resolution upon counter one
CN117093269A (zh) 检查并更新程序计数器数值的逻辑电路以及方法
TWI806581B (zh) 用來在管線化架構中檢查並更新程式計數器數值的邏輯電路以及方法
US6421774B1 (en) Static branch predictor using opcode of instruction preceding conditional branch
US7519798B2 (en) Utilizing a branch predictor outcome to decide whether to fetch or not to fetch from a branch target buffer
CN113918225A (zh) 指令预测方法、指令数据处理装置、处理器以及存储介质
US8140951B2 (en) Method and system for instruction address parity comparison
US6745322B1 (en) Apparatus and method for conditionally flushing a pipeline upon a failure of a test condition

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination