微处理器的数据预先撷取器及方法

文档序号:6605457阅读:155来源:国知局

专利名称::微处理器的数据预先撷取器及方法
技术领域
:本发明涉及微处理器领域,特别是关于微处理器领域中的预先撷取机制。
背景技术
:微处理器的数据预先撷取(prefetching)概念为大众所知悉的概念。简明地说,微处理器可从连续的存储器地址检测出程序流并预先撷取该程序流。然而,程序流并非都是位于连续的存储器位置,数据之间通常会跳过一固定数据量。该固定数据量的固定距离通常称之为「步幅」(stride),程序即在这步幅当中载入数据。微处理器的步幅检测(stride-detecting)预先撷取机制也是大众所知悉的技术。传统步幅检测预先撷取机制主要是依据单步幅间距,但是本发明人观察到一些重要程序以规律方式存取数据,而非依据单步幅间距。因此,传统的步幅检测预先撷取机制是无法精确地预测这些程序的载入地址
发明内容本发明实施例的特征之一在于提供一种数据预撷取器。数据预先撷取器包含一表单,具有多个栏位,用以维护载入运算的历史记录。每一栏位存储标签与相应的下一步幅,标签包含相连的第一步幅与第二步幅。下一步幅包含第一步幅。第一步幅由第二快取线地址减去第一快取线地址取所得到。第二步幅由第三快取线地址减去第二快取线地址所得至IJ。第一、第二与第三快取线地址分别包含快取线的存储器地址,其分别由第一、第二与第三先前载入运算所指示。数据预先撷取器还包含一控制逻辑电路,耦接至表单。通过将新载入的快取线地址减去前一快取线地址以计算得到目前步幅。查询表单内相连的前一步幅与目前步幅。在预先撷取快取线地址预先撷取快取线。预先撷取快取线地址为新载入的快取线地址和表单内连续的前一步幅与目前步幅所命中的下一步幅的和。新载入的快取线地址包含新载入运算所指示的快取线的存储器地址。前一快取线地址包含新载入运算的前一载入运算所指示的快取线的存储器地址。前一步幅由前二快取线地址减去前一快取线地址所得到。前二快取线地址包含新载入运算的前二载入运算所指示的快取线的存储器地址。本发明的另一特征在于提供于微处理预先撷取数据的方法。该方法包含根据载入运算的历史记录以维护一表单的栏位。每一栏位存储一标签与相应的下一步幅。标签包含相连的第一步幅与第二步幅。下一步幅包含第一步幅。第一步幅由第二快取线地址减去第一快取线地址取所得到。第二步幅由第三快取线地址减去第二快取线地址所得到。第一、第二与第三快取线地址分别包含快取线的存储器地址,其分别由第一、第二与第三先前载入运算所指示。该方法还包含将新载入的快取线地址减去前一快取线地址以计算得到目前步幅。新载入的快取线地址包含新载入运算所指示的快取线的存储器地址。前一快取线地址包含新载入运算的前一载入运算所指示的快取线的存储器地址。该方法还包含查询表单内相连的前一步幅与目前步幅。前一步幅由前二快取线地址减去前一快取线地址所得到。前二快取线地址包含新载入运算的前二载入运算所指示的快取线的存储器地址。该方法还包含于一预先撷取快取线地址预先撷取一快取线。预先撷取快取线地址为新载入的快取线地址和表单内连续的前一步幅与目前步幅所命中的下一步幅的和。图1显示本发明的微处理器的方块图。图2显示图1的数据预先撷取引擎的方块图。图3显示本发明图2的流量硬件设置的方块图。图4a和图4b显示本发明图2的数据预先撷取引擎的操作流程图。图5的表单显示本发明图2的数据预先撷取引擎的操作。主要元件符号说明100微处理器102指令撷取级104指令解码级106运算元撷取级108执行级112结果写回/指令引退级114存储器子系统122快取存储器124数据预先撷取引擎126载入单元128存储单元130总线接口202流量硬件设置204流量基本地址206控制逻辑电路208载入地址212设置选择信号216最终步幅预测218预先撷取地址222加法器224多工器228步幅预测302表单304流量基本地址寄存器306前一快取线地址寄存器308目前快取线地址寄存器312前一步幅寄存器314目前步幅寄存器316载入计数器322前一步幅子区域324目前步幅子区域326下一步幅区域332命中信号402-436步骤500表单具体实施例方式本实施例提供一种步幅预测的二阶表单,当程序以规则的方式而非依据单步幅间距执行数据存取时,可增进微处理器载入预测的精确度。请参考图1,其显示本发明的微处理器100的方块图。微处理器100包含指令撷取级102、指令解码级104、运算元撷取级106、执行级108与结果写回/指令引退级112。前述的每级也可包含多级。在一实施例中,微处理器100可为超纯量乱序执行(superscalarout-of-order)/有序的引退(in-orderretirement)微处理器。微处理器100亦包含总线接口130,用以将微处理100连接至外部总线以存取系统存储器与外围装置。微处理器100也包含存储器子系统114,其包含一或多个快取存储器122、数据预先撷取引擎124、载入单元126与存储单元128。请参考图2,其显示图1的数据预先撷取引擎124的方块图。数据预先撷取引擎124包含多个流量硬件设置202,其耦接至控制逻辑电路206。流量硬件设置202接收由微处理器其他元件产生的载入运算所指定的载入地址208。在一实施例中,载入地址208为36位实体地址,流量或存储器区域的容量为4KB(字节)的页,而快取线(cacheline)的容量为64字节。因此,位[35:12]表示页数,位[11:6]表示页当中的快取线,而位[5:0]表示于快取线中的偏移量。另外,流量基本地址(streambaseaddress,SBA)304(如图3所示)对应于实体地址的位[35:12],而前一快取线地址(previouscachelineaddress,PCLA)306、目前快取线地址(currentcachelineaddress,CCLA)308、前一步幅(previousstride,PS)312与目前步幅(currentstride,CS)314(如图3所示)皆对应至实体地址的位[11:6]。然而,在其他实施例中,根据实际的考虑,可使用容量异于4KB页大小的流量或存储器区块(例如2MB页或是根据微码(microcode)定义的存储器类型范围寄存器(memorytyperangeregister,MTRR)或禾呈序关联表(programassociatetable,PAT)所定义的随机区域),且可使用不同容量的快取线。每个流量硬件设置202提供流量基本地址204至控制逻辑电路206。控制逻辑电路206将流量基本地址204与载入地址208作比较,以产生设置选择信号(S)212的值,用以指出流量基本地址204与载入地址208相互匹配的流量硬件设置202。设置选择信号212提供给多工器224,且多工器224从每个流量硬件设置202接收步幅预测228(如图3所示)。根据设置选择信号212选择其中一个步幅预测228,作为最终步幅预测216。加法器222将最终步幅预测216加上载入地址208以产生预先撷取地址218。请参考图3,其显示本发明图2的一个流量硬件设置202的方块图。流量硬件设置202包含流量基本地址寄存器304、前一快取线地址寄存器306、目前快取线地址寄存器308、前一步幅寄存器312、目前步幅寄存器314、载入计数器316与表单302。表单302为内容可定址存储器(content-addressablememory,CAM)。表单302的每个栏位包含标签区域与数据区域。标签区域为相连的前一步幅322子区域与目前步幅324子区域。数据区域为下一步幅(nextstride,NS)326区域。当流量硬件设置202准备完成,便可进行步幅预测,其会查询表单302中相连的前一步幅322与目前步幅324。如果找到匹配的有效(valid)标签,则会输出真值的命中信号332;反之,则输出假值。如果为命中,则表单302输出匹配栏位中下一步幅326区域的值作为步幅预测228。请参考图4a和图4b,其显示本发明图2的数据撷取引擎124的操作流程图。此流程图起始于方块402。在方块402,数据预先撷取引擎124接收载入运算所指定的载入地址208,如图2所示。接着,流程进入决定方块404。在决定方块404,控制逻辑电路206的比较器将载入地址208的位[3512与流量基本地址204(其由每个流量硬件设置202的流量基本地址寄存器304所提供)作比较。如果匹配,则表示流量硬件设置202已被分配至载入地址208所指的流量(如存储器区域,例如页数),接着继续执行方块406;否则,执行方块408。在方块406,控制逻辑电路206发出匹配流量硬件设置202的索引(信号S),用以预测该存储器区域的下一载入运算的步幅。另外,控制逻辑电路206递增已配置的流量硬件设置202的载入计数器316的值。接着,执行方块412。在方块408,控制逻辑电路206配置一个流量硬件设置202(于一实施例中,分配最近最少使用(least-recently-used)者),并发出新配置的流量硬件设置202的索引(信号S),以预测存储器区域的下一载入运算的步幅。另外,控制逻辑电路206清除新配置的流量硬件设置202的载入计数器316。接着,进入方块412。在方块412,流量硬件设置202以目前快取线地址寄存器308的值载入至前一快取线地址寄存器306。接着,执行方块414。在方块414,流量硬件设置202将载入地址208载入至目前快取线地址寄存器308。接着,执行决定方块416。在决定方块416,流量硬件设置202决定载入计数器316的值是否为1,亦即,是否为流量硬件设置202于该存储器区域的第二次载入运算。(方块416与422可让数据预先撷取引擎124最佳化,进而可使用较少载入运算以精确的预测步幅。在此方法中,程序由相同的步幅(例如3,3,3)进行载入。然而,在其他实施例则可以不使用此方法)。如果载入计数器306的值等于1,则执行方块422;否则,执行方块418。在方块418,流量硬件设置202以目前步幅寄存器314的值载入至前一步幅寄存器312;且以目前快取线地址寄存器308与前一快取线地址寄存器306间的差值载入至目前步幅寄存器314。接着,执行方块424。在方块422,流量硬件设置202以目前快取线地址寄存器308与前一快取线地址寄存器306间的差值载入至目前步幅寄存器314以及前一步幅寄存器312。接着,执行方块424。在方块424,流量硬件设置202查询表单302中相连的前一步幅寄存器312与目前步幅寄存器314的值。接着,执行判断方块426。在判断方块426,控制逻辑电路206检查命中信号332,以决定方块424中所作的查询是否有出现命中。如果是,则执行方块428;否则,执行方块432。在方块428,流量硬件设置202将方块426中表单302所命中的下一步幅区域326的值输出作为步幅预测228。此流程即结束于方块428。在方块432,流量硬件设置202于表单302中分配新栏位。在一实施例中,以先进先出(firstinfirstout,FIFO)的次序配置表单302内的栏位。接着,执行方块434。在方块434,流量硬件设置202以相连的前一步幅寄存器312值与目前步幅寄存器314值载入至新分配栏位的标签区域(亦即,前一步幅区域322与目前步幅区域324)。接着,执行方块436。在方块436,流量硬件设置202以前一步幅寄存器312的值填入新分配栏位的数据区域(亦即,下一步幅区域326)。此流程即结束于方块436。请参考图5的表单500,其显示本发明图2的数据预先撷取器124对于一例示载入运算序列的操作。表单500中的每一列依次标示下一输入的载入地址208(仅显示快取线数量,亦即位[11:6],而不是整个载入地址208)。在此例子中,由载入地址208所标示的快取线数依次为00,01,04,05与08,其具01,03,01,03等二阶步幅图样(two-levelstridepattern)0本发明能够预测载入存取的多阶步幅图样。当流量硬件设置202对于载入地址208执行操作之后,表单500的每一列显示出前一快取线地址寄存器306、目前快取线地址寄存器308、前一步幅寄存器312、目前步幅寄存器314与表单302的内容。表单500的每一列还显示出命中信号322与步幅预测228的值。为简化说明起见,图5所示的序列系假设所有载入地址208为相同的存储器区域,因而选择相同的流量硬件设置202。表单500的第一列指示流量硬件设置202的初始值。前一快取线地址寄存器306、目前快取线地址寄存器308、前一步幅寄存器312与目前步幅寄存器314皆全部初始为0,且表单302的栏位全部设为无效。表单500第二列所指示的载入地址208的值为00。执行方块408的步骤,以分配新的流量硬件设置202;且执行方块412、414与418的步骤,用以将前一快取线地址寄存器306、目前快取线地址寄存器308、前一步幅寄存器312与目前步幅寄存器314的值分别更新为0。由在此为第一次由存储器区域载入,因此,方块424所执行的查询结果为未命中。由存储器区第一次载入时,表单302不会进行更新,因为缺少前一快取线地址寄存器306的值以计算目前步幅。表单500第三列所指示的载入地址208的值为01。执行方块412、414与422的步骤,以分别更新前一快取线地址寄存器306、目前快取线地址寄存器308、前一步幅寄存器312与目前步幅寄存器314的值为00、01、00与01。在方块424查询Wl:01]的结果为未命中。此外,流量硬件设置202执行方块432、434与436的步骤,以分配表单302中的栏位,并分别填入01、01与01至前一步幅区域322、目前步幅区域324与下一步幅区域326。表单500第四列所指示的载入地址208的值为04。执行方块412、414与418的步骤,以分别更新前一快取线地址寄存器306、目前快取线地址寄存器308、前一步幅寄存器312与目前步幅寄存器314的值为01、04、01与03。在方块424查询Wl03]的结果为未命中。此外,流量硬件设置202执行方块432、434与436的步骤,以分配表单302中的栏位,并分别填入01、03与01至前一步幅区域322、目前步幅区域324与下一步幅区域326。表单500第五列所指示的载入地址208的值为05。执行方块412、414与418的步骤,以分别更新前一快取线地址寄存器306、目前快取线地址寄存器308、前一步幅寄存器312与目前步幅寄存器314的值为04、05、03与01。在方块424查询W301]的结果为未命中。此外,流量硬件设置202执行方块432、434与436的步骤,以分配表单302中的栏位,并分别填入03、01与03至前一步幅区域322、目前步幅区域324与下一步幅区域326。表单500第六列所指示的载入地址208的值为08。执行方块412、414与418的步骤,以分别更新前一快取线地址寄存器306、目前快取线地址寄存器308、前一步幅寄存器312与目前步幅寄存器314的值为05、08、01与03。在方块424查询Wl03]的结果为命中,因为其与表单302的第二栏位相匹配。因此,流量硬件设置202执行方块428的步骤,将命中的表单302栏位的下一步幅区域326的值(在此例子为01)予以输出,以作为步幅预测值228。藉此,数据预先撷取引擎124将有助于预先撷取由预先撷取地址218所指定的快取线,且该预先撷取地址218等于载入地址208加上最终步幅预测216(在此例子为01)。此种预先撷取机制可通过减少或避免预先撷取快取线的载入时间,因而节省许多时间。在其他实施例中,可根据匹配表单302的栏位所指示的图表,藉表单302的命中检测以触发多个快取线的预先撷取机制。例如,在图5的第六列的命中检测,不但触发步幅01的快取线预先撷取,而且也依次触发步幅03、01与03等的快取线预先撷取。快取线预先撷取触发的数量可依据图1的快取存储器122的不同容量,与流量硬件设置202和表单320的容量或是其他因素而改变。虽然前述实施例于历史表单中仅维护及比较二个步幅,然而,在其他实施例中,也可维护及比较更多的步幅,以适用于更为复杂的程序存取模式。对于上述公开的各种实施例,本领域技术人员应可知悉该实施例是作为例示而非限制。本领域技术人员应可明了在不脱离本发明的精神下,可作形式与细节的变化。例如,可使用软件以实施所公开装置及方法的功能、制造、建模、模拟、描述和/或测试。可使用一般的程序语言(如C、C++语言)、硬件描述语言(HDL,其包含VerilogHDL、VHDL等)或其他适当的程序语言。该软件可置于任何已知的计算机可存储介质,例如半导体、磁带或光盘(例如⑶-ROM、DVD-ROM等)。所公开的装置与方法可为半导体智慧财产核心(IPcore),例如微处理器核心(例如以HDL描述),并于制造集成电路时将其转换为硬件。此外,所公开的装置与方法也可以硬件、软件组合方式来实施。因此,本发明并不受限于本说明书内的任何例示性实施例,而应仅由下述的申请专利范围来界定。更明确地说,本发明可由微处理装置来实施,其可用于一般计算机中。本领域技术人员所公开概念及实施例作为基础所作的修改仍应属于权利要求书所界定的范围。9权利要求一种微处理器的数据预先撷取器,包含一表单,具有多个栏位,用以维护载入运算的历史记录,每一该栏位存储一标签与一相应的下一步幅,其中该标签包含相连的一第一步幅与一第二步幅,其中该下一步幅包含该第一步幅,其中该第一步幅由一第二快取线地址减去一第一快取线地址取所得到,其中该第二步幅由一第三快取线地址减去一第二快取线地址所得到,其中该第一、第二与第三快取线地址分别包含一快取线的存储器地址,其分别由第一、第二与第三先前载入运算所指示;及一控制逻辑电路,耦接至该表单,通过将一新载入的快取线地址减去一前一快取线地址以计算得到一目前步幅;查询该表单内相连的前一步幅与该目前步幅;于一预先撷取快取线地址预先撷取一快取线,该预先撷取快取线地址为该新载入的快取线地址和该表单内连续的该前一步幅与该目前步幅所命中的该下一步幅的和;其中该新载入的快取线地址包含一新载入运算所指示的一快取线的一存储器地址,其中该前一快取线地址包含该新载入运算的一前一载入运算所指示的一快取线的一存储器地址,其中该前一步幅由一前二快取线地址减去该前一快取线地址所得到,其中该前二快取线地址包含该新载入运算的一前二载入运算所指示的一快取线的一存储器地址。2.如权利要求1所述微处理器的数据预先撷取器,如果该表单内相连的该前一步幅与该目前步幅未命中,则该控制逻辑电路分配该表单内的一栏位,以相连的该前一步幅与该目前步幅填入该分配表单栏位的标签,以及以该前一步幅填入该分配表单栏位的该下一步幅。3.如权利要求1所述微处理器的数据预先撷取器,还包含多个表单,用以维护相应于多个存储器区域的载入运算之一历史记录;当该新载入地址所指示的该快取线被决定不存在于该多个表单相应的存储器区域时,该控制逻辑电路则分配该多个表单其中之一;当该多个表单之一被决定已分配于存储器区域且该存储器区域涵盖该新载入地址所指示的快取线时,该控制逻辑电路则使用该分配表单以执行查询。4.如权利要求1所述微处理器的数据预先撷取器,还包含一计数器,当有新的载入运算则递增;当该计数器的值于递增后为1时,则该控制逻辑电路以新载入快取线地址减去前一快取线地址以计算得到该前一步幅,而非以该前二快取线地址减去前一快取线地址;当初次使用该表单时,该控制逻辑电路清除该计数器使其为零。5.如权利要求1所述微处理器的数据预先撷取器,其中该控制逻辑电路还包含在一快取线地址预先撷取一第二快取线,其中该快取线地址由预先撷取快取线地址和该表单栏位的目前步幅的和所得到。6.如权利要求1所述微处理器的数据预先撷取器,其中该标签还包含一第三步幅,其由一第四快取线地址减去该第三快取线地址所得到,其中该第四快取线地址包含一快取线的存储器地址,其由暂时领先该第三载入运算的第四载入运算所指示,其中该控制逻辑电路用以查询该表单中相连的一前二步幅、该前一步幅与该目前步幅,其中该前二步幅由一前三快取线地址减去该前二快取线地址所得到,其中该一前三快取线地址由该新载入运算之一前三载入运算所指示。7.—种微处理器的数据预先撷取方法,包含根据载入运算的历史记录以维护一表单的栏位,每一该栏位存储一标签与一相应的下一步幅,其中该标签包含相连的一第一步幅与一第二步幅,其中该下一步幅包含该第一步幅,其中该第一步幅由一第二快取线地址减去一第一快取线地址所得到,其中该第二步幅由一第三快取线地址减去一第二快取线地址所得到,其中该第一、第二与第三快取线地址分别包含一快取线的存储器地址,其分别由第一、第二与第三先前载入运算所指示;将一新载入的快取线地址减去一前一快取线地址以计算得到一目前步幅;其中该新载入的快取线地址包含一新载入运算所指示的一快取线的一存储器地址,其中该前一快取线地址包含该新载入运算的一前一载入运算所指示的一快取线的一存储器地址;查询该表单内相连的前一步幅与该目前步幅,其中该前一步幅由一前二快取线地址减去该前一快取线地址所得到,其中该前二快取线地址包含该新载入运算的一前二载入运算所指示的一快取线的一存储器地址;及在一预先撷取快取线地址预先撷取一快取线,该预先撷取快取线地址为该新载入的快取线地址和该表单内连续的该前一步幅与该目前步幅所命中的该下一步幅的和。8.如权利要求7所述微处理器的数据预先撷取方法,还包含如果该表单内相连的该前一步幅与该目前步幅未命中,则分配该表单内的一栏位;以相连的该前一步幅与该目前步幅填入该分配表单栏位的标签;及以该前一步幅填入该分配表单栏位的该下一步幅。9.如权利要求7所述微处理器的数据预先撷取方法,其中该微处理器包含多个表单,用以维护相应于多个存储器区域的载入运算的一历史记录,该方法还包含当该新载入地址所指示的该快取线被决定不存在于该多个表单相应的存储器区域时,则分配该多个表单其中之一;及当该多个表单之一被决定已分配于存储器区域且该存储器区域涵盖该新载入地址所指示的快取线时,则使用该分配表单以执行查询。10.如权利要求7所述微处理器的数据预先撷取方法,还包含当有新的载入运算则递增一计数器;当该计数器的值于递增后为1时,则以新载入快取线地址减去前一快取线地址以计算得到该前一步幅,而非以该前二快取线地址减去前一快取线地址;及当初次使用该表单时,清除该计数器使其为零。11.如权利要求7所述微处理器的数据预先撷取方法,还包含于一快取线地址预先撷取一第二快取线,其中该快取线地址由预先撷取快取线地址和该表单栏位的目前步幅的和所得到。12.如权利要求7所述微处理器的数据预先撷取方法,其中该标签还包含一第三步幅,其由一第四快取线地址减去该第三快取线地址所得到,其中该第四快取线地址包含一快取线的存储器地址,其由暂时领先该第三载入运算的第四载入运算所指示,其中该控制逻辑电路用以查询该表单中相连之一前二步幅、该前一步幅与该目前步幅,其中该前二步幅由一前三快取线地址减去该前二快取线地址所得到,其中该前三快取线地址由该新载入运算的一前三载入运算所指示。全文摘要微处理器的数据预先撷取器及方法,该数据预先撷取器,包含表单栏位,用以维护载入运算的历史记录。每一栏位存储一标签与相应的下一步幅。标签包含相连的第一步幅与第二步幅。下一步幅包含第一步幅。第一步幅由第二快取线地址减去第一快取线地址取所得到。第二步幅由第三快取线地址减去第二快取线地址所得到。第一、第二与第三快取线地址分别包含一快取线的存储器地址,其分别由第一、第二与第三先前载入运算所指示。控制逻辑电路通过将新载入的快取线地址减去前一快取线地址以计算得到目前步幅;查询表单内相连的前一步幅与目前步幅;使用表单栏位中命中的下一步幅以预先撷取快取线。文档编号G06F9/32GK101887360SQ20101022015公开日2010年11月17日申请日期2010年6月25日优先权日2009年7月10日发明者约翰·M·吉尔,罗德尼·E·虎克,艾伯特·J·娄坡申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1