选择性预取物理接续快取线至包含被载入分页表的快取线的制作方法

文档序号:11807785阅读:186来源:国知局
本发明涉及微处理器,特别涉及微处理器的预取(prefetch)数据的方法。
背景技术
::现今许多微处理器具有使用虚拟存储器的能力,特别是能够运用一存储器分页机制(memorypagingmechanism)。本领域技术人员应能理解,操作系统在系统存储器中所建立的分页表(pagetables)用来将虚拟地址转译成物理地址。根据《IA-32架构软件开发者手册,第3A册:系统程序设计导引,第1篇,2006年6月》中所描述的x86架构处理器技术(该参考文献全文以引用方式并入本文中),分页表可采取阶层方式(hierarchicalfashion)排列。具体说来,分页表包含多个分页表项目(pagetableentries;PTE),各个分页表项目存储一物理存储器分页的物理分页地址与物理存储器分页的属性。所谓的分页表寻访(tablewalk)是指提取一虚拟存储器分页地址并使用此虚拟存储器分页地址来寻访(traverse)分页表阶层,用以取得与此虚拟存储器分页地址对应的分页表项目以便将虚拟地址转译成物理地址。由于物理存储器存取的延迟时间相对较长,加上在分页表寻访过程中可能要对物理存储器进行多重存取,因此执行分页表寻访十分耗时。为了避免因执行分页表寻访而造成的时耗,处理器通常会包含一转译查询缓冲器(TranslationLookasideBuffer;TLB)用以存储虚拟地址及由虚拟地址转译成的物理地址。然而,转译查询缓冲器的大小有限,并且当转译查询缓冲器发生遗失(miss)时还是需要执行分页表寻访。因此,我们需要一种能够缩短分页表寻访的执行时间的方法。技术实现要素:在一实施例中,本发明提供一种微处理器,包括一转译查询缓冲器、第一要求、硬件逻辑以及第二要求。第一要求载入一分页表项目至微处理器,以响应未在转译查询缓冲器找到一虚拟地址,被要求的分页表项目被包含于一分页表,分页表包括多个快取线,该等快取线包括一第一快取线,第一快取线包括被要求的分页表项目。硬件逻辑决定物理接续第一快取线的一第二快取线是否在分页表之外。第二要求预取第二快取线至微处理器,第二要求至少基于硬件逻辑所作的决定而被选择性产生。在另一实施例中,本发明提供一种方法,包括产生一第一要求以载入一分页表项目至一微处理器,以响应未在微处理器之一转译查询缓冲器找到一虚拟地址,被要求的分页表项目被包含于一分页表,分页表包括多个快取线,该等快取线包括一第一快取线,第一快取线包括被要求的分页表项目;决定物理接续第一快取线的一第二快取线是否在分页表之外;以及至少基于决定而选择性产生一第二要求以预取第二快取线至微处理器。在另一实施例中,本发明提供一种被编码于至少一非暂态(non-transitory)计算机用介质且使用于运算装置的计算机程序产品,计算机程序产品包括内建于介质的计算机用程序代码,用以确认一微处理器。计算机用程序代码包括一第一程序代码,用以确认一转译查询缓冲器;一第二程序代码,用以确认一第一要求以载入一分页表项目至一微处理器,以响应未在微处理器的一转译查询缓冲器找到一虚拟地址,被要求的分页表项目被包含于一分页表,分页表包括多个快取线,该等快取线包括一第一快取线,第一快取线包括被要求的分页表项目;一第三程序代码,用以确认一硬件逻辑,硬件逻辑决定物理接续第一快取线的一第二快取线是否在分页表之外;以及一第四程序代码,用以确认一第二要求以预取第二快取线至微处理器,第二要求至少基于决定而被选择性产生。为让本发明的上述和其他目的、特征、和优点能更明显易懂,下文特举出优选实施例,并配合附图,作详细说明如下。附图说明图1为本发明实施例的微处理器的方块图;图2为图1中的微处理器的操作流程图;图3为本发明实施例的微处理器的方块图;图4为图3中的微处理器的操作流程图;图5为分页表寻访引擎形成分页表项目物理地址的方块图;图6为分页表寻访引擎形成分页表项目物理地址的方块图;图7至图10为决定第二快取线是否在分页表之外的实施例的方块图;图11至图13为依据其他实施例的微处理器的方块图。【符号说明】100~微处理器;102~指令快取;104~指令转译器;106~指令配送器;108~载入单元;112~数据快取;114~总线接口单元;116~转译查询缓冲器;118~分页表寻访引擎;122~预取单元;124~第一快取线;126~第二快取线;128~物理存储器;132~虚拟地址;134~遗失信号;136~分页表项目载入请求信号;138~确认信号;142~预取请求信号;144~物理地址;396~最后标志;396~分页表项目物理地址;502~分页表项目地址;504~快取线索引;506~分页表地址;508~分页表。具体实施方式为让本发明的目的、特征和优点能更明显易懂,下文特举出本发明的具体实施例,并配合附图,作详细说明如下。目的在于说明本发明的精神而非用以限定本发明的保护范围,应理解下列实施例可经由软件、硬件、固件、或上述任意组合来实现。请参考图1,图1为本发明实施例的微处理器100的方块图,此微处理器100为一管线式微处理器(pipelinedmicroprocessor)。微处理器100包括一指令快取102用以提供多个指令至一指令转译器104,并且指令转译器104将所接收的指令转译并将转译后的指令提供至一指令配送器(instructiondispatcher)106。指令配送器106将指令提供至一载入单元108,其中上述指令可包括存储器存取指令(例如载入指令或存储指令)。载入单元108将一存储器存取指令所指定的虚拟地址132提供至一转译查询缓冲器116,并且转译查询缓冲器116对虚拟地址132进行查找(lookup)。若虚拟地址132有出现在转译查询缓冲器116中,则转译查询缓冲器116将虚拟地址132转译后的物理地址144传送回载入单元108。若虚拟地址132未出现在转译查询缓冲器116中,则转译查询缓冲器116产生一遗失信号(misssignal)134并传送至一分页表寻访引擎(tablewalkengine)118。分页表寻访引擎118耦接至载入单元108以及转译查询缓冲器116。如图1所示,预取单元122与数据快取112也耦接至载入单元108,并且总线接口单元114耦接至数据快取112。总线接口单元114将微处理器100耦接至一处理器总线,上述处理器总线耦接至具有微处理器100的计算机系统中的物理存储器128。具体说来,物理存储器128存储多个分页表,其中一分页表包括位于物理地址P的一第一快取线124以及位于物理地址P+64的一第二快取线126,并且第一快取线124与第二快取线126分别存储八个分页表项目。在本实施例中一条快取线的大小为64字节(bytes),并且一个分页表项目的大小为8字节,因此每条快取线可存储八个分页表项目。请参考图2,图2为图1中的微处理器100的操作流程图,用以说明如何预取下一条快取线,其中此快取线与一载入至载入单元的分页表项目有关。流程从步骤202开始。在步骤202中,当虚拟地址132未出现在转译查询缓冲器116中,转译查询缓冲器116产生一遗失信号134并传送至分页表寻访引擎118。分页表寻访引擎118在接收遗失信号134后即执行分页表寻访以便取得遗失在转译查询缓冲器116中的虚拟地址132所转译成的物理地址。分页表寻访引擎118藉由产生一分页表项目载入请求信号(PTEloadrequest)136来执行分页表寻访动作,其中分页表寻访引擎118将分页表项目载入请求信号136传送至载入单元108,用以载入执行地址转译所需的分页表项目。流程前进至步骤204。在步骤204中,载入单元108检测分页表项目载入请求信号136并且载入位于物理存储器128中的分页表项目。此外,载入单元108通过一确认信号138告知预取单元122已经查见(seen)分页表项目载入请求信号136,并且将第一快取线124的物理地址提供至转译查询缓冲器116,在图1的实施例中,该物理地址为P,其中此第一快取线124具有载入单元108所载入的分页表项目。流程前进至步骤206。在步骤206中,预取单元122产生一预取请求信号142并传送至载入单元108。预取请求信号142命令载入单元108将位于物理地址P+64的第二快取线126预取至数据快取112。换句话说,载入单元108将位于第一快取线124(具有载入至载入单元108的分页表项目)之后的下一条快取线(第二快取线126)预取至数据快取112。流程前进至步骤208。在步骤208中,载入单元108根据预取请求信号142将下一条快取线(第二快取线126)预取至数据快取112。然而在某些情况下,微处理器100中的载入单元108并不会执行载入第二快取线126的动作。举例而言,上述情况可为一功能性需求(functionalrequirement)情况,例如快取线落在一非快取存储器区(non-cacheablememoryregion)。上述情况也可为微处理器100要执行非推测性配置(non-speculativeallocations)。若载入单元108决定载入来自物理存储器128中的第二快取线126,则载入单元108命令总线接口单元114执行此载入动作。流程结束于步骤208。虽然本发明实施例描述预取下一条快取线,但在其他实施例中,预取单元122会产生一请求信号用以命令载入单元108预取上一条快取线,或者是命令载入单元108预取下一条与上一条快取线。此实施例适用于程序在存储器分页中以另一方向行进的情况。此外,虽然本发明实施例描述预取具有分页表项目的下一条快取线,但在其他实施例中,预取单元122会产生一请求信号用以命令载入单元108预取具有其他层级(level)的分页信息阶层的下一条快取线,例如分页描述符项目(PageDescriptorEntries;PDE)。值得注意的是,虽然使用此方法的某些程序的存取样本(accesspattern)是有助益的,但由于将大量物理存储器设置于单一分页描述符项目下方的情况不常见,并且程序寻访存储器的速度会变得很慢,因此上述方法不但效率不彰也会带来风险。此外,在其他实施例中,预取单元122会产生一请求信号用以命令载入单元108预取具有另一分页表阶层(不同于上述分页描述符项目/分页表项目阶层)的下一条快取线。如前文所述,预取单元122会产生一请求信号用以命令载入单元108预取下一条快取线至具有需要完成分页表寻访的分页表项目的快取线。假设各个分页表的大小为4千字节(KB),各个分页表项目的大小为8字节,并且各条快取线的大小为64字节,所以一个分页表中会具有64条分别具有八个分页表项目的快取线。因此,在步骤208中所预取的下一条快取线中具有分页表中紧邻的(next)八个分页表项目的可能性相当高,特别是在操作系统将分页表配置为物理连续分页表的情况下。在使用小型分页(通常为4千字节)的情况下,程序在最后会存取存储器的八个分页中的其中几个,而这些所存取的分页有很大的可能性超过在步骤202中转译查询缓冲器116所存取的分页。在另一实施例中可将额外的逻辑电路加入至预取单元122与载入单元108,使得预取单元122产生一请求信号用以命令载入单元108预取八个分页表项目,此举会大大地减少执行一分页表寻访用以将八个存储器分页存储至转译查询缓冲器116所需的时钟周期,其中这八个存储器分页的物理地址存储在八个分页表项目中。具体说来,当分页表寻访引擎118必须执行分页表寻访(包括载入位于第二快取线126的八个分页表项目中的任意一个)时,这些所载入的分页表项目将会位于数据快取112中(除非它们依序从数据快取112中移除),此举会缩短读取物理存储器128用以取得分页表项目所需的延迟时间。已知预取机制用以检测程序存储器存取的存储器存取样本(pattern)(即载入指令与存储指令)。若预取器所检测到的程序藉由一样本来存取存储器,则预取器会预期之后载入指令或存储指令的地址,并且从此地址执行预取动作。若程序依序地存取存储器,则预取器通常会根据载入指令或存储指令的虚拟地址来预取下一条快取线。在一操作系统执行分页表寻访的处理器架构中,以载入指令或存储指令为基础的预取器(programload/store-basedprefetcher)会在载入分页表项目之后预取下一条快取线。然而,在以硬件方式执行分页表寻访而不是软件进行载入指令或存储指令的处理器中,以载入指令或存储指令为基础的预取器并不会触发(triggeroff)分页表项目的载入动作(因为这不是一个载入指令),也因此不会在载入分页表项目之后预取下一条快取线。相反地,在本发明的以硬件方式执行分页表寻访的处理器中,预取单元122可触发一非编程的分页表项目载入动作,也就是藉由分页表寻访引擎118所触发的物理存储器存取动作。因此,不同于以载入指令或存储指令为基础的机制,本发明的预取单元122会命令载入单元108预取下一条快取线,并且此快取线可能包含分页表中的数个分页表项目。选择性预取图1与图2所述的分页表项目预取机制具有降低分页表寻访时间的优点。如上所述,很有可能下一条被预取的物理快取线包含分页表中的接下来几个分页表项目。当操作系统将分页表设置为物理上依序相邻时,可能性会特别高。上述做法的优点在于,因为有相当高的机率程序可能存取至少一些存储器之中超出虚拟存取当前页面的接下来数个页面而导致转译查询缓冲器的遗失。然而,如果操作系统没有将分页表设置为物理上依序相邻、或者至少并非当中的一些,则预取下一条快取线可能导致从快取存储器阶层(hierarchy)逐出(evict)比已预取快取线更好用的快取线。以下的实施例关于此,并且改善快取效率。词汇分页表项目(pagetableentry,PTE)存储物理存储器的物理页面地址以及物理存储器页面的属性。分页表项目包含于微处理器的存储器分页机制的分页表。分页表项目的物理存储器地址本质上对应为一个分页表项目的尺寸。在一些实施例中分页表项目为4字节(bytes),在其他实例中分页表项目为8字节,但其他实施例亦被考虑而运用在本发明中。分页表(pagetable)是一组物理上连续的分页表项目。分页表的物理记忆地址本质上对应于地址边界,而地址边界为分页表的尺寸。在一实施例中,举例而言,分页表为4K字节,并且分页表包括1024个4位的分页表项目、或是512个8位的分页表项目。然而,其他实施例考虑了不同尺寸的分页表。分页表中的每个分页表项目具有索引,该索引决定自要被转译的虚拟地址的一部分位。举例而言,在4K字节分页表与4字节分页表项目的情况中,虚拟地址的位21:12标定分页表项目的项目至分页表。在另一个实施例中,在4K字节分页表与8字节分页表项目的情况中,虚拟地址的位20:12标定分页表项目的项目至分页表。分页表包括了多个快取线,其物理地址本质上对应至一快取线的尺寸。在一实施例中,快取线的尺寸为64字节,但其他实施例亦被考虑而运用在本发明中。因为快取线大于分页表项目,每一快取线包括多个分页表项目。分页表所包括的每一个快取线具有索引,该索引决定自要被转译的虚拟地址的一部分位。举例而言,在4K字节分页表与64字节分页表项目的情况中,虚拟地址的位21:16标定分页表之中的快取线的索引。分页表的最后快取线是具有分页表所包含的快取线中最大索引的快取线。举例而言,在4K字节分页表与64字节快取线与4字节分页表项目的情况中,分页表的最后快取线的索引(虚拟地址的位21:16)为0x3F(或是二进位111111)。在另一个实施例中,在4K字节分页表与64字节快取线与8字节分页表项目的情况中,分页表的最后快取线的索引(虚拟地址的位20:15)为0x3F(或是二进位111111)。现在参考图3所显示的微处理器100的示意图。图3的微处理器100在许多方面类似于图1的微处理器100。若未特别标示,则相似标号的元件是类似的。图1与图3的差异在于修正了载入单元308、分页表寻访引擎318、以及分页表项目载入要求336(因此,上述修正相较于图1具有不同的标号)。详细而言,PTE载入要求336包括除了被要求的分页表项目地址398(位于物理地址P、快取线之中)之外的最后标志(flag)396。此外,分页表寻访引擎318接着决定包含分页表项目的快取线是否为包含分页表项目并且填写最后标志396的分页表的最后快取线。最后,载入单元308检查最后标志396以决定是否提供快取线的物理地址138至预取单元122。图4至图8将描述更多细节。现在参考图4所示的操作图3的微处理器100的流程图。流程图始于步骤402。在步骤402中,当未在转译查询缓冲器116中找到虚拟地址132时,转译查询缓冲器116产生遗失信号134至分页表寻访引擎318,分页表寻访引擎318对应执行分页表寻访以得到转译查询缓冲器116中未找到的虚拟地址132的物理地址转译。分页表寻访包括分页表寻访引擎318以决定需要执行地址转译的分页表项目的物理地址。分页表寻访可包括存取微处理器100的分页机制的其他结构,以决定分页表项目的物理地址。举例而言,在x86架构的实施例中,分页表依据微处理器100是在32位、PAE或IA-32e页面模式,以寻访包括存取PML4项目(PML4E)、PDPT项目(PDPTE)、和/或页面名册项目(pagedirectoryentry,PDE)。这些结构中的全部或部分可在具有分页机制的微处理器100的快取结构中被快取,例如PML4快取、PDPTE快取或PDE快取,或是在包括数据快取112的微处理器100的快取存储器的各种位阶之中。其他实施例包括具有虚拟记忆能力的其他处理器架构、以及在其记忆分页机制实施分页表寻访和其他分业架构的其他处理器架构,例如SPARC架构、ARM架构、PowerPC架构、以及其他已知的处理器架构,也可运用于本发明中。流程进行到步骤404。在步骤404,分页表寻访引擎318决定包括步骤402的分页表项目的快取线(第一快取线)是否为包括该分页表项目的分页表中的最后快取线。这表示第二快取线物理上接续第一快取线(亦即,第二快取线具有相等于第一快取线的物理地址以快取线尺寸而递增的物理地址)。较好的情况是,分页表寻访引擎318检测步骤402中转译查询缓冲器116未找到的虚拟地址132的预定位来做决定。步骤404的操作细节将于图5、6描述。流程进行到决定步骤406。在判断步骤406中,如果步骤404的决定为真,流程进行到步骤408;否则,流程进行到步骤412。在判断408中,分页表寻访引擎318设定步骤414所产生要求336的最后标志396为真。流程进行到步骤414。在步骤412中,分页表寻访引擎318设定步骤414所产生要求336的最后标志396为假。流程进行到步骤414。在步骤414中,分页表寻访引擎318产生要求336以载入分页表项目并且传送要求336至载入单元308,上述分页表项目的物理地址决定于步骤402。要求336包括步骤408或步骤412所产生的最后标志396的数值。当随后得到分页表项目时,分页表寻访引擎318使用该分页表项目以转译虚拟地址132,并以虚拟地址132转译的物理地址更新转译查询缓冲器116来完成分页表寻访。流程进行到决定步骤416。在判断步骤416中,载入单元308判断最后标志396是否为真。如果是,则流程进行到步骤418;否则,流程进行到步骤422。在步骤418,载入单元308并未提供第一快取线的物理地址138至预取单元122,然后流程结束。在步骤422,载入单元308提供第一快取线的物理地址138至预取单元122。流程进行到步骤424。在步骤424,预取单元122以快取线的尺寸(例如64字节)递增第一快取线138的物理地址,并且传送要求142至载入单元308以在递增地址预取第二快取线。流程进行到步骤426。在步骤426,载入单元308使用预取要求142作为指示,藉以预取第二快取线到微处理器100。流程结束于步骤426。现在参考图5所示的方块图用以说明分页表寻访引擎318所形成的分页表项目地址502。分页表项目地址502为物理地址。在图5所述的产生分页表项目地址502的实施例中,分页表项目的尺寸为4字节,分页表为4K字节。图5也显示分页表项目地址502的位,并且分页表项目地址502构成包括该分页表项目的分页表项目的分页表508所包含的快取线的索引504。分页表项目地址401由微处理器100架构所形成。分页表寻访引擎318从虚拟地址132以及分页表地址506形成分页表项目地址502。换句话说,PDE包括指向分页表508的指针(pointer),亦即如图所示的分页表508基底的物理存储器地址。一般而言,分页表地址506取得自页面名册项目(PDE),然而在一些分页模式中(例如,只有一阶的分页结构),分页表项目地址502可以直接得自微处理器100的寄存器(例如x86架构中的CR3寄存器)。在图5所示的实施例中,因为分页表项目为4字节并且以4字节为准,较低的两个位的数值被填入0。虚拟地址132的位[21:12]成为分页表项目地址502的位[11:2],而分页表地址506的位[N:12]则形成分页表项目地址502的位[N:12],其中N为分页表地址506与分页表项目地址502的最重要位(例如32位物理地址中的31位,36位物理地址中的35位,40位物理地址中的39位)。分页表项目地址502指向分页表508中的分页表项目,如图所示,其为分页表项目的物理记忆地址。在图5的实施例中,分页表项目地址502指向16个分页表项目的快取线中的分页表项目13。如图所示,快取线索引504是分页表项目地址502的位[11:6],对应到虚拟地址132的位[21:16]。因此,快取线索引504可决定自虚拟地址132或已形成的分页表项目地址502(亦即,藉由图11的实施例的载入单元1108)。在图5的实施例中,快取线的快取线索引504包含被分页表项目地址502所指向的分页表项目,并且快取线索引504的数值为0x3C。如上所述,因为分页表508包含64条快取线(亦即在快取线为64字节以及分页表为4K字节的实施例中),最大的快取线索引504为0x3F。现在参考图6所示的方块图用以说明分页表寻访引擎318所形成的分页表项目地址502。在一实施例中,分页表项目为8字节(不是图5所示的4字节)。图6与图5相似,除了以下所述之外。首先,由于在实施例中分页表项目为8字节并且以8字节为准,较低的3个位的数值被填入0(而非图5所示的较低的2个位)。再者,虚拟地址132的位[20:12]成为分页表项目地址502的位[11:3](而非图5所示的虚拟地址132的位[21:12]成为分页表项目地址502的位[11:2])。在图6所示的实施例中,分页表项目地址502指向8个分页表项目的快取线中的分页表项目5(而非指向图5所示的16个分页表项目的快取线)。如上所述,快取线索引504为分页表项目地址502的位[11:6],对应至图6实施例的虚拟地址132的位[20:15](而非图5的位[21:16])。在图5的实施例中,快取线的快取线索引504包含被分页表项目地址502所指向的分页表项目,并且快取线索引504的数值为0x04。现在参考图7,其方块图显示了决定第二快取线(亦即物理上接续快取线(第一快取线)的快取线并且包含因应于转译查询缓冲器未找到的要求的分页表项目)是否在分页表508之外的第一实施例,例如藉由图4的步骤404的分页表寻访引擎318。上述决定藉由检视第一快取线的快取线索引504,并且比较其是否相等于最大快取线索引504的数值(例如0x3F),亦即分页表508所包含的最后快取线的快取线索引504。详细而言,如果第一快取线是分页表508所包含的最后快取线(亦即在分页表508的最后),则物理上接续的快取线(第二快取线)在分页表508之外。如果第一快取线的快取线索引504相等于最大的快取线索引数值,此决定为真,亦即第二快取线在分页表508之外。否则,此决定为假。在图7的实施例中,虚拟地址132具有数值0x12345678。结果,0x34为虚拟地址132的位[21:16],其为分页表项目地址502的位[11:6],并且其为第一快取线索引504。因此,由于第一快取线索引504的数值0x34小于最高快取线索引504的数值0x3F,此决定为假,并且最后标志396被设定为假。如上所述,第二快取线被包含在分页表508,而不在分页表508之外。现在参考图8,其方块图显示了决定第二快取线是否在所述分页表508之外的第二实施例。图8类似于图7,除了虚拟地址132的数值不同之外。在图8的实施例中,虚拟地址132具有数值0x123F5678。结果,0x34为虚拟地址132的位[21:16],其为分页表项目地址502的位[11:6],并且其为第一快取线索引504。因此,由于第一快取线索引504的数值0x3F相等于最高快取线索引504的数值0x3F,此决定为真,并且最后标志396被设定为真。如上所述,第二快取线在分页表508之外,而不是被包含在分页表508。结果,第二快取线可能也可能未包括分页表项目的快取线。即使包含,也可能不包括分页表的分页表项目,上述分页表是被分页结构中的下一个PDE所指向的下一个分页表。因此,此处所描述的实施例选择性地预取第二快取线,其优点在于降低对上述微处理器100的快取阶层架构的污染(pollution)。现在参考图9,其方块图显示了形成决定的第三实施例。图9类似于图7,除了在图9的实施例中采用了8字节的分页表项目,因此每一条快取线只有包括8个分页表项目。如同图7所示,上述决定藉由检视第一快取线的快取线索引504,并且比较其是否相等于最大快取线索引504的数值(例如0x3F),亦即分页表508所包含的最后快取线的快取线索引504。然而在图9中,形成决定是藉由检视虚拟地址132的位[20:15](而非图7中的虚拟地址132的位[21:16]),其在两种情况中为分页表项目地址502的位[11:6]。在图9的实施例中,虚拟地址132具有数值0x12345678。因此,0x28为虚拟地址132的位[20:15],其为分页表项目地址502的位[11:6],并且其为第一快取线索引504。因此,由于第一快取线索引504的数值0x28小于最高快取线索引504的数值0x3F,此决定为假,并且最后标志396被设定为假。如上所述,第二快取线被包含在分页表508,而不在分页表508之外。现在参考图10,其方块图显示了决定第二快取线是否在所述分页表508之外的第四实施例。图10类似于图9,除了虚拟地址132的数值不同之外。在图10的实施例中,虚拟地址132具有数值0x123FD678。于是,0x3F为虚拟地址132的位[20:15],其为分页表项目地址502的位[11:6],并且其为第一快取线索引504。因此,由于第一快取线索引504的数值0x3F相等于最高快取线索引504的数值0x3F,此决定为真,并且最后标志396被设定为真。如上所述,第二快取线在分页表508之外,而不是被包含在分页表508。结果,此处所描述的实施例选择性地预取第二快取线,其优点在于降低对上述微处理器100的快取阶层架构的污染。应该理解的是,虽然图7至图10描述了关于图4的步骤404的实施例的决定的形成(亦即藉由分页表寻访引擎318并设定最后标志396),上述决定也可藉由微处理器100的其他单元来形成(例如,藉由图11实施例的载入单元1108),以及在一些实施例中不使用最后标志396(亦即图11至图13的实施例)。较好的情况是,由硬件逻辑来形成决定,例如在相关单元中的组合逻辑,其中相关单元例如分页表寻访引擎318/1218/1318、或是比较虚拟地址132的适当位的载入单元1108、或是具有预定最高快取线索引数值的分页表项目地址502。现在参考图11,其方块图显示了另一种实施方式的微处理器100。图11的微处理器100在许多方面类似图1的微处理器100。除非特别标示,相似标号的元件是类似的。图11与图1的差异在于修改了载入单元1108。图11的载入单元1108被修改为包括用以决定第二快取线是否在分页表508之外的硬件逻辑。因此,在图11的实施例中,分页表项目载入要求136并未包含最后标志396。图11的微处理器100的操作方式类似于图4所述,除了分页表寻访引擎118并未做决定(例如步骤404),而是由载入单元1108做决定(类似于步骤416的决定,在步骤414所述的分页表寻访引擎118传送分页表项目要求136之后),并且如果决定为真,则不提供第一快取线的物理地址138至快取单元122。现在参考图12,其方块图显示了另一种实施方式的微处理器100。图12的微处理器100在许多方面类似图11的微处理器100。除非特别标示,相似标号的元件是类似的。图12与图11的差异在于修改了分页表寻访引擎1218、载入单元1208以及预取单元1222。图12的载入单元1208被修改为不提供第一快取线的物理地址138至预取单元122。如果决定为假,分页表寻访引擎1218形成决定并且产生与直接提供第一快取线的物理地址1238至预取单元1222。图12的微处理器100的操作方式类似于图4所述,除了如果步骤406中的决定为真,流程进行到步骤418(不执行第二快取线的预取)。如果决定为假,流程进行到步骤414,然后直接到修改后的步骤422,分页表寻访引擎1218提供第一快取线的物理地址1238至预取单元1222。现在参考图13,其方块图显示了另一种实施方式的微处理器100。图13的微处理器100在许多方面类似图12的微处理器100。除非特别标示,相似标号的元件是类似的。图13与图12的差异在于修改了分页表寻访引擎1318、以及预取单元1322。图13的分页表寻访引擎1318递增第一快取线的物理地址以产生第二快取线的物理地址1338(而非由预取单元1322来执行),并且如果决定为假时将它提供至预取单元1322。图13微处理器100的操作方式类似于图4所述,除了如果步骤406中的决定为真,流程进行到步骤418(不执行第二快取线的预取)。如果决定为假,流程进行到步骤414,然后直接到修改后的步骤422,分页表寻访引擎1218提供第一快取线的物理地址1338至预取单元1222。然后在修改后的步骤424,预取单元1322不需要执行递增,而只要在其送往载入单元1208的要求142中,使用已接收的第二快取线的物理地址1338。在另一个实施例中(未显示),载入单元自分页表寻访引擎接收分页表项目载入要求,计算第二快取线的物理地址,以及产生用于第二快取线的预取要求。在此实施例中,预取单元可以是不存在的。虽然实施例已说明存储器分页机制所使用的x86架构处理器的通用词汇,应当理解上述实施例包括其他处理器架构,其包括虚拟存储器能力并且在记忆页面机制中使用分页表,例如SPARC架构、ARM架构、PowerPC架构、以及其他已知的处理器架构。再者,虽然实施例已经描述第二快取线为下一条物理接续的快取线,并且藉由决定第一快取线是否在分页表的最后来决定第二快取线是否在分页表之外,其他实施例也可为第二快取线是上一条物理接续的快取线,并且藉由决定第一快取线是否在分页表的开始来加以决定,其包含了通过多个存储器页面在其他方向执行程序。本发明虽以各种实施例公开如上,然其仅为范例参考而非用以限定本发明的范围,本领域技术人员,在不脱离本发明的精神和范围内,当可做些许的更动与润饰。举例而言,可使用软件来实现本发明所述的装置与方法的功能、构造、模块、模拟、描述和/或测试。此目的可通过使用一般程序语言(例如C、C++)、硬件描述语言(包括Verilog或VHDL硬件描述语言等等)、或其他可用的程序来实现。该软件可被设置在任何计算机可用的介质,例如半导体、磁碟、光盘(例如CD-ROM、DVD-ROM等等)中。本发明实施例中所述的装置与方法可被包括在一半导体知识产权内核(semiconductorintellectualpropertycore),例如以硬件描述语言(HDL)实现的微处理器内核中,并被转换为硬件形态的集成电路产品。此外,本发明所描述的装置与方法可通过结合硬件与软件的方式来实现。因此,本发明不应该被本文中的任一实施例所限定,而当视所附的权利要求书与其等效物所界定者为准。特别是,本发明实现于一般用途计算机的微处理器装置中。最后,本领域技术人员在不脱离本发明的精神和范围内,当可作些许更动与润饰,因此本发明的保护范围当视所附权利要求书界定范围为准。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1