发明名称 双呼叫/返回堆叠分支预测系统
摘要 一种分支预测装置,其使用双呼叫/返回堆叠(dual call/rerurn stacks)以预测微处理器中之返回位址。该装置包含一第一呼叫/返回堆叠,在解码一指令以便知道其是否实际为返回指令之前,基于一指令快取记忆体提取位址之一分支目标位址快取记忆体(BTAC)中之一返回指令命中,而提供一假想返回位址。该假想返回位址在管线初期即提供,而微处理器便假想地分支至该假想返回位址。稍后于管线中,在该指令被解码且确认其为返回指令后,一第二呼叫/返回堆叠提供一非假想返回位址。一比较器比较该假想返回位址与非假想返回位址,若两个位址不相吻合,则微处理器便分支至非假想返回位址。
申请公布号 TW530261 申请公布日期 2003.05.01
申请号 TW090132651 申请日期 2001.12.28
申请人 智慧第一公司 发明人 葛兰 亨利;汤玛斯 麦当劳
分类号 G06F9/30 主分类号 G06F9/30
代理机构 代理人 何文渊 台北市信义区松德路一七一号二楼
主权项 1.一种用于一处理器中之装置,用以假想地执行一返回指令,该装置包含:一第一呼叫∕返回堆叠,提供一第一返回位址;一第二呼叫∕返回堆叠,提供一第二返回位址;一比较器,耦接至该第一与第二呼叫∕返回堆叠,用以比较该第一与第二返回位址;一控制逻辑,耦接至该比较器,用以控制该处理器分支至该第一返回位址,若比较器显示该第一与第二返回位址不相吻合,则该控制逻辑接着控制处理器分支至该第二返回位址。2.如申请专利范围第1项所述之装置,其中该第二呼叫∕返回堆叠被组态为提供该第二返回位址,以回应指令解码逻辑解码一返回指令。3.如申请专利范围第2项所述之装置,其中该第一呼叫∕返回堆叠在解码该返回指令前假想地提供该第一返回位址。4.如申请专利范围第3项所述之装置,其中该第一呼叫∕返回堆叠回应一提取位址而假想地提供该第一返回位址,该提取位址选取一指令快取记忆体之一快取线。5.如申请专利范围第4项所述之装置,其中该第一呼叫∕返回堆叠回应该提取位址而假想地提供该第一返回位址,不论该返回指令是否存在于该快取线中。6.如申请专利范围第1项所述之装置,更包含:一分支目标位址快取记忆体(BTAC),耦接至该第一呼叫∕返回堆叠,快取复数个指示,以指出所对应之复数个该处理器先前所执行的指令是否为返回指令。7.如申请专利范围第6项所述之装置,其中该第一呼叫∕返回堆垒系回应该BTAC提供该复数个指示之一而提供该第一返回位址,其中该BTAC所提供之指示指出该对应之指令为返回指令。8.如申请专利范围第7项所述之装置,其中该BTAC所提供之指示系回应一指令快取记忆体提取位址而提供。9.如申请专利范围第6项所述之装置,其中该BTAC更组态为快取复数个该处理器先前所执行的呼叫指令所对应之复数个长度。10.如申请专利范围第9项所述之装置,其中该第一返回位址包含一指令快取记忆体提取位址与该BTAC所提供该复数个长度之一的总和。11.如申请专利范围第10项所述之装置,其中该BTAC更组态为在一指令快取线内,快取该复数个呼叫指令所对应之复数个位元组位移量(byte offset),该复数个位元组位移量系位于该提取位址所选取之一指令快取线中。12.如申请专利范围第11项所述之装置,其中该指令快取线系由该提取位址所选取。13.如申请专利范围第12项所述之装置,其中该第一返回位址包含该指令快取记忆体提取位址、该BTAC所提供之长度与该复数个位元组位移量之一的总和。14.一种预测返回指令的目标位址之微处理器,包含:一指令快取记忆体,用以提供由一提取位址所选取之一指令位元组线,该提取位址提供在一位址滙流排上;一分支目标位址快取记忆体(BTAC),耦接至该位址滙流排,用以快取复数个先前已被执行返回指令(return instructions)之复数个指示(indications),且不论是否有一返回指令存在于该指令位元组线中,该假想BTAC皆回应该提取位址而提供该复数个指示之一至一假想呼叫∕返回堆叠;该假想呼叫∕返回堆叠耦接至假想BTAC,用以提供一假想返回位址至一位址选择逻辑,以回应该所提供指示指出有其中一该复数个先前执行的返回指令可能存在于该指令位元组线中;以及该位址选择逻辑组态为选取该假想返回位址作为一接续的提取位址,以送至指令快取记忆体。15.如申请专利范围第14项所述之微处理器,更包含:位址产生逻辑,耦接至该假想呼叫∕返回堆叠,计算该假想返回位址,以将其推入该假想呼叫∕返回堆叠。16.如申请专利范围第15项所述之微处理器,其中该假想BTAC组态为快取复数个先前执行的呼叫指令之复数个指示,该假想BTAC回应该提取位址而提供其中一该复数个先前执行的呼叫指令之其中一该复数个指示。17.如申请专利范围第16项所述之微处理器,其中该位址产生逻辑系回应该BTAC所提供其中一该复数个先前执行的呼叫指令之指示而计算该假想返回位址。18.如申请专利范围第14项所述之微处理器,其中该复数个先前执行的返回指令是x86 RET指令。19.一种预测返回指令的目标位址之微处理器,包含:一指令快取记忆体,产生一提取位址所选取之一指令位元组线,该提取位址从一位址滙流排接收;位址选择逻辑,耦接至该位址滙流排,选取该提取位址,并提供该提取位址于该位址滙流排上;一分支目标位址快取记忆体(BTAC),耦接至该位址滙流排,快取复数个先前已被执行返回指令之复数个指示,并回应该提取位址而提供该复数个指示之一;一第一呼叫∕返回堆叠,耦接至该BTAC,因应该所提供指示而提供一第一返回位址至该位址选择逻辑;一解码逻辑,耦接至该指令快取记忆体,用以解码该指令位元组线;以及一第二呼叫∕返回堆叠,耦接至该解码逻辑,因应解码逻辑显示一返回指令存在于该指令位元组线而提供一第二返回位址至该位址选择逻辑。20.如申请专利范围第19项所述之微处理器,其中该第一呼叫∕返回堆叠在解码逻辑解码该指令位元组线前提供该第一返回位址。21.如申请专利范围第19项所述之微处理器,其中该BTAC所提供之指示系回应该提取位址而提供,不论是否有一返回指令存在于该指令位元组线中。22.如申请专利范围第19项所述之微处理器,其中第一呼叫∕返回堆叠提供该第一返回位址,以回应该BTAC所提供之指示指出该返回指令可能存在于该指令位元组线中。23.如申请专利范围第19项所述之微处理器,更包含:控制逻辑,耦接至BTAC,组态为控制该位址选择逻辑以在一第一周期选取该第一返回位址。24.如申请专利范围第23项所述之微处理器,更包含:一比较器,耦接至该第一与第二呼叫∕返回堆叠,用以比较该第一与第二返回位址。25.如申请专利范围第24项所述之微处理器,其中该控制逻辑更组态为若该比较器指出该第一与第二返回位址不相吻合,则在控制该位址选择逻辑选取第一返回位址之后,控制该位址选择逻辑选取第二返回位址。26.如申请专利范围第19项所述之微处理器,其中该第二呼叫∕返回堆叠在该第一呼叫∕返回堆叠提供第一返回位址之后提供第二返回位址。27.一种使一微处理器假想分支至一返回指令之一目标位址的方法,包含:由一第一呼叫∕返回堆叠产生一第一目标位址;分支至该第一目标位址;在分支至该第一目标位址后,由一第二呼叫∕返回堆叠产生一第二目标位址;比较该第一与第二目标位址;以及若该第一与第二目标位址不相吻合,则分支至该第二目标位址。28.如申请专利范围第27项所述之方法,其中该分支至第一目标位址的动作包含选取该第一目标位址以及提供该第一目标位址至微处理器中一指令快取记忆体作为一提取位址。29.如申请专利范围第28项所述之方法,其中该产生第一目标位址的动作包含第一呼叫∕返回堆叠回应被送至该指令快取记忆体之一先前提取位址而产生该第一目标位址。30.如申请专利范围第29项所述之方法,其中该产生第一目标位址的动作被执行,不论一返回指令是否存在于该提取位址所选取之一指令快取线中。31.如申请专利范围第29项所述之方法,更包含:解码存在于一指令位元组线中之一返回指令,该指令位元组线由该提取位址从指令快取记忆体选取,其中该解码存在于该指令位元组线中之该返回指令的动作在该分支至第一目标位址的动作之后执行。32.如申请专利范围第31项所述之方法,其中该产生第二目标位址的动作包含第二呼叫∕返回堆叠回应该解码存在于该指令位元组线中之该返回指令的动作而产生该第二目标位址。33.如申请专利范围第27项所述之方法,其中该产生第一目标位址的动作包含从第一呼叫∕返回堆叠取出该第一目标位址。34.如申请专利范围第33项所述之方法,更包含:在从第一呼叫∕返回堆叠取出该第一目标位址之前,将该第一目标位址推入第一呼叫∕返回堆叠。35.如申请专利范围第34项所述之方法,更包含:在该推入动作之前计算该第一目标位址。36.如申请专利范围第35项所述之方法,其中该计算第一目标位址的动作包含加上一先前快取的呼叫指令之一快取长度,以及一提取位址选取可能包含该先前执行的呼叫指令之一指令快取线。37.如申请专利范围第36项所述之方法,其中该产生第一目标位址的动作包含加上该提取位址、该快取长度以及在该指令快取线内该呼叫指令之一快取位移量。38.如申请专利范围第34项所述之方法,其中该推入动作系回应一指令快取记忆体提取位址而执行。39.一种用以预测返回指令的目标位址之微处理器,包含:一指令快取记忆体,因应从一位址滙流排所接收之一提取位址而提供一指令快取线(line of instructions);一多工器,具复数个输入,组态为选取该复数个输入之一,以于该位址滙流排上提供作为该提取位址至该指令快取记忆体;一假想分支目标位址快取记忆体(speculative BTAC),耦接至该位址滙流排,以指出一返回指令之假想存在于该指令快取线中;一假想呼叫∕返回堆叠,耦接至该假想BTAC,因应该假想BTAC显示该返回指令的假想存在而提供一假想返回位址至该复数个多工器输入之一第一输入;一解码逻辑,组态为接收及解码该指令快取线;一非假想呼叫∕返回堆叠,耦接至该解码逻辑,因应该解码逻辑显示该返回指令实际地存在于该指令快取线中,而提供一非假想返回位址至该复数个多工器输入之一第二输入;以及一比较器,耦接至该假想与非假想呼叫∕返回堆叠,以比较该假想与非假想返回位址;其中该多工器于一第一状况选取该假想返回位址,以及若该比较器显示该假想与非假想返回位址不相吻合,则于该第一状况后之一第二状况选取该非假想返回位址。图式简单说明:图一 系为Pentium II/III处理器先前技术之相关部分方块图。图二 系为Athlon处理器先前技术之相关部分方块图。图三 系依本发明绘示之管线化微处理器之方块图。图四 系依本发明绘示图三处理器之假想分支预测装置。图五 系图四之指令快取记忆体之方块图。图六 系依本发明绘示图四分支目标位址快取记忆体(BTAC)之方块图。图七 系依本发明绘示图四BTAC之图六项目之格式的方块图。图八 系依本发明绘示之图四假想分支预测装置之运作的流程图。图九 系依本发明绘示之图四假想分支预测装置使用图八步骤之一运作范例之方块图。图十 系依本发明绘示之图四假想分支预测装置侦测与更正错误的假想分支预测之运作流程图。图十一 系依本发明列举之程式码片段及一表格,为说明图十假想分支预测错误之侦测与更正之一范例。图十二 系依本发明绘示之图四分支预测装置包含一混合假想分支方向预测装置(hybrid speculativebranch direction predictor)之另一具体实施例的方块图。图十三 系为图四之双呼叫∕返回堆叠(dual call/return stacks)之运作流程图。图十四 系为说明图四之分支预测装置选择性地以非假想分支预测来覆盖(override)假想分支预测,藉以改进本发明之分支预测准确度之运作流程图。图十五 系依本发明绘示之用以进行图四BTAC中目标位址置换工作之装置的方块图。图十六 系依本发明绘示图十五装置之一运作方法的流程图。图十七 系依本发明之另一具体实施例绘示图十五装置之一运作方式的流程图。图十八 系依本发明之另一具体实施例绘示之用以进行图四BTAC中目标位址置换动作之装置方块图。图十九 系依本发明之另一具体实施例绘示之用以进行图四BTAC中目标位址置换动作之装置方块图。
地址 美国