专利名称::微处理器及缩短分页表寻访时间的方法
技术领域:
:本发明是关于微处理器,特别是关于微处理器的预取(prefetch)数据的方法。
背景技术:
:现今许多微处理器具有使用虚拟存储器的能力,特别是能够运用一存储器分页机制(memorypagingmechanism)。本领域技术人员应能理解,操作系统在系统存储器中所建立的分页表(pagetables)是用来将虚拟地址转译成物理地址。根据《IA-32英特尔⑧架构软件开发者手册,第3A册系统程序设计导弓丨,第I篇,2006年6月》中所描述的x86架构处理器技术(该参考文献全文是以引用方式并入本文中),分页表可采取阶层方式(hierarchicalfashion)排列。具体说来,分页表包含多个分页表项目(pagetableentries;PTE),各个分页表项目储存一物理存储器分页的物理分页地址与物理存储器分页的属性。所谓的分页表寻访(tablewalk)是指提取一虚拟存储器分页地址并使用此虚拟存储器分页地址来寻访(traverse)分页表阶层,用以取得与此虚拟存储器分页地址对应的分页表项目以便将虚拟地址转译成物理地址。由于物理存储器存取的延迟时间相对较长,加上在分页表寻访过程中可能要对物理存储器进行多重存取,因此执行分页表寻访十分耗时。为了避免因执行分页表寻访而造成的时耗,处理器通常会包含一转译查询缓冲器(TranslationLookasideBuffer;TLB)用以储存虚拟地址及由虚拟地址转译成的物理地址。然而,转译查询缓冲器的大小有限,并且当转译查询缓冲器发生遗失(miss)时还是需要执行分页表寻访。因此,我们需要一种能够缩短分页表寻访的执行时间的方法。
发明内容本发明提供一种微处理器,包括一转译查询缓冲器;一第一载入请求信号,用以载入一分页表项目至该微处理器,其中该第一载入请求信号相应于该转译查询缓冲器之中的一虚拟地址发生遗失而产生;以及一预取单元,用以接收一第一快取线的一物理地址,其中该第一快取线包括被请求的该分页表项目,该预取单元更对应地产生一第二载入请求信号以预取一第二快取线至该微处理器,其中该第二快取线是该第一快取线的下一条快取线。本发明提供一种藉由具有转译查询缓冲器的微处理器缩短寻访时间的方法。该方法包括请求载入一分页表项目至一微处理器,以对应于一转译查询缓冲器之中的一虚拟地址的遗失;接收一第一快取线的一物理地址,并且该第一快取线包括被请求的该分页表项目;以及产生一载入信号以将一第二快取线预取至该微处理器,以对应于接收到该第一快取线的该物理地址,其中该第二快取线是该第一快取线的下一条快取线,并且该第一快取线包括被请求的该分页表项目。本发明提供另一种微处理器,包括一转译查询缓冲器;一第一载入请求信号,用以载入一分页表项目至该微处理器,其中该第一载入请求信号相应于该转译查询缓冲器之中的一虚拟地址发生遗失而产生;以及一预取单元,用以接收一第一快取线的一物理地址,其中该第一快取线包括被请求的该分页表项目,该预取单元更对应地产生一第二载入请求信号以预取一第二快取线至该微处理器,其中该第二快取线是该第一快取线的前一条快取线。本发明提供另一种藉由具有转译查询缓冲器的微处理器缩短寻访时间的方法。该方法包括请求载入一分页表项目至一微处理器,以对应于一转译查询缓冲器之中的一虚拟地址的遗失;接收一第一快取线的一物理地址,并且该第一快取线包括被请求的该分页表项目;以及产生一载入信号以将一第二快取线预取至该微处理器,以对应于接收到该第一快取线的该物理地址,其中该第二快取线是该第一快取线的前一条快取线,并且该第一快取线包括被请求的该分页表项目。本发明提供一种微处理器,包括高速缓存、载入单元以及预取单元。载入单元用以接收第一载入请求信号,第一载入请求信号用以显示第一载入请求信号正载入第一分页表项目。预取单元耦接至载入单元,预取单元用以从载入单元中接收第一快取线的物理地址,第一快取线包含第一载入请求信号所指定的第一分页表项目,预取单元还产生第一请求信号用以预取第二快取线至高速缓存,其中第二快取线为第一快取线之后的下一条快取线。本发明提供一种缩短分页表寻访时间的方法,适用于具有一高速缓存且支持分页虚拟存储器的一微处理器。上述方法包括检测一第一分页表项目的一第一载入请求信号。上述方法还包括根据检测第一载入请求信号的结果,预取一第二快取线至高速缓存,其中第二快取线为一第一快取线之后的下一条快取线,并且第一快取线包含第一载入请求信号所指定的第一分页表项目。本发明提供另一种微处理器,包括高速缓存、载入单元以及预取单元。载入单元用以接收第一载入请求信号,第一载入请求信号用以显示第一载入请求信号正载入第一分页表项目。预取单元耦接至载入单元,预取单元用以从载入单元中接收第一快取线的物理地址,第一快取线包含第一载入请求信号所指定的第一分页表项目,预取单元还产生第一请求信号用以预取第二快取线至高速缓存,其中第二快取线为第一快取线之前的上一条快取线。本发明提供另一种缩短分页表寻访时间的方法,适用于具有一高速缓存且支持分页虚拟存储器的一微处理器。上述方法包括检测一第一分页表项目的一第一载入请求信号。上述方法还包括根据检测第一载入请求信号的结果,预取一第二快取线至高速缓存,其中第二快取线为一第一快取线之前的上一条快取线,并且第一快取线包含第一载入请求信号所指定的第一分页表项目。为让本发明的上述和其它目的、特征、和优点能更明显易懂,下文特举出较佳实施例,并配合所附图式,作详细说明如下。图1为本发明实施例的微处理器的方块图2为图1中的微处理器的操作流程图。[主要组件标号说明]100微处理器;102指令快取;104指令转译器;106指令配送器;108载入单元;112数据快取;114总线接口单元;116转译查询缓冲器118分页表寻访引擎;122预取单元;124第一快取线;126第二快取线;128物理存储器;132虚拟地址;134遗失信号;136分页表项目载入请求信号;138确认信号;142预取请求信号;144物理地址。具体实施例方式请参考图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预取下一条快取线,并且此快取线可能包含分页表中的数个分页表项目。本发明虽以各种实施例揭露如上,然其仅为范例参考而非用以限定本发明的范围,任何本领域技术人员,在不脱离本发明的精神和范围内,当可做些许的更动与润饰。举例而言,可使用软件来实现本发明所述的装置与方法的功能、构造、模块、仿真、描述及/或测试。此目的可通过使用一般程序语言(例如C、C++)、硬件描述语言(包括Verilog或VHDL硬件描述语言等等)、或其它可用的程序来实现。该软件可被设置在任何计算机可用的媒体,例如半导体、磁盘、光盘(例如CD-ROM、DVD-ROM等等)中。本发明实施例中所述的装置与方法可被包括在一半导体智慧财产权核心(semiconductorintellectualpropertycore),例如以硬件描述语言(HDL)实现的微处理器核心中,并被转换为硬件型态的集成电路产品。此外,本发明所描述的装置与方法可通过结合硬件与软件的方式来实现。因此,本发明不应该被本文中的任一实施例所限定,而当视所附的权利要求范围与其等效物所界定者为准。特别是,本发明是实现于一般用途计算机的微处理器装置中。最后,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许更动与润饰,因此本发明的保护范围当视所附的权利要求范围所界定者为准。权利要求1.一种微处理器,包括一转译查询缓冲器;一第一载入请求信号,用以载入一分页表项目至该微处理器,其中该第一载入请求信号相应于该转译查询缓冲器之中的一虚拟地址发生遗失而产生;以及一预取单元,用以接收一第一快取线的一物理地址,其中该第一快取线包括被请求的该分页表项目,该预取单元更对应地产生一第二载入请求信号以预取一第二快取线至该微处理器,其中该第二快取线是该第一快取线的下一条快取线。2.如权利要求1所述的微处理器,其中该转译查询缓冲器之中的该虚拟地址发生遗失所相关的该第二快取线不位于该分页表项目之中。3.如权利要求1所述的微处理器,更包括一分页表寻访引擎,用以相应于该转译查询缓冲器之中的该虚拟地址发生遗失而执行一分页寻访,其中该分页寻访不存取所预取的该第二快取线的任一分页表项目。4.如权利要求1所述的微处理器,更包括一分页表寻访引擎,用以相应于该转译查询缓冲器之中的一第二虚拟地址发生遗失而执行一分页寻访,其中该第二虚拟地址是关于所预取的该第二快取线之中的一分页表项目,并且该分页表寻访引擎自该微处理器之中将一物理页面地址载入该转译查询缓冲器以执行该分页寻访,其中该一物理页面地址并非来自一系统存储器,并且该物理页面地址储存在发生遗失的该第二虚拟地址所相关的该分页表项目之中。5.如权利要求1所述的微处理器,其中用以载入该分页表项目的该第一载入请求信号是该微处理器相应于该转译查询缓冲器之中的该虚拟地址发生遗失而在内部所产生,而非该微处理器所执行的一程序的一载入请求信号,并且该预取单元是相应于该第一载入请求信号预取该第二快取线。6.如权利要求1所述的微处理器,更包括一第三载入请求信号,用以载入一分页表目录至该微处理器,其中该载入目录请求信号相应于该转译查询缓冲器之中的该虚拟地址发生遗失而产生;其中该预取单元更用以接收一第三快取线的一物理地址,并且该第三快取线包括被请求的该分页表目录;该预取单元更对应地产生一第四载入请求信号,以将一第四快取线预取至该微处理器,其中该第四快取线是该第三快取线的下一条快取线。7.一种藉由具有转译查询缓冲器的微处理器缩短寻访时间的方法,包括请求载入一分页表项目至一微处理器,以对应于一转译查询缓冲器之中的一虚拟地址的遗失;接收一第一快取线的一物理地址,并且该第一快取线包括被请求的该分页表项目;以及产生一载入信号以将一第二快取线预取至该微处理器,以对应于接收到该第一快取线的该物理地址,其中该第二快取线是该第一快取线的下一条快取线,并且该第一快取线包括被请求的该分页表项目。8.如权利要求7所述的方法,其中该转译查询缓冲器之中的该虚拟地址发生遗失所相关的该第二快取线不位于该分页表项目之中。9.如权利要求7所述的方法,更包括相应于该转译查询缓冲器之中的该虚拟地址发生遗失而执行一分页寻访,其中该分页寻访不存取所预取的该第二快取线的任一分页表项目。10.如权利要求7所述的方法,更包括相应于该转译查询缓冲器之中的一第二虚拟地址发生遗失而执行一分页寻访,其中该第二虚拟地址是关于所预取的该第二快取线之中的一分页表项目;其中执行该分页寻访的步骤包括自该微处理器之中将一物理页面地址载入至该转译查询缓冲器,并且该物理页面地址并非来自一系统存储器,并且该物理页面地址是储存在发生遗失的该第二虚拟地址所相关的该分页表项目之中。11.一种微处理器,包括一转译查询缓冲器;一第一载入请求信号,用以载入一分页表项目至该微处理器,其中该第一载入请求信号相应于该转译查询缓冲器之中的一虚拟地址发生遗失而产生;以及一预取单元,用以接收一第一快取线的一物理地址,其中该第一快取线包括被请求的该分页表项目,该预取单元更对应地产生一第二载入请求信号以预取一第二快取线至该微处理器,其中该第二快取线是该第一快取线的前一条快取线。12.如权利要求11所述的微处理器,其中该转译查询缓冲器之中的该虚拟地址发生遗失所相关的该第二快取线不位于该分页表项目之中。13.如权利要求11所述的微处理器,更包括一分页表寻访引擎,用以相应于该转译查询缓冲器之中的该虚拟地址发生遗失而执行一分页寻访,其中该分页寻访不存取所预取的该第二快取线的任一分页表项目。14.如权利要求11所述的微处理器,更包括一分页表寻访引擎,用以相应于该转译查询缓冲器之中的一第二虚拟地址发生遗失而执行一分页寻访,其中该第二虚拟地址是关于所预取的该第二快取线之中的一分页表项目,并且该分页表寻访引擎自该微处理器之中将一物理页面地址载入该转译查询缓冲器以执行该分页寻访,其中该一物理页面地址并非来自一系统存储器,并且该物理页面地址储存在发生遗失的该第二虚拟地址所相关的该分页表项目之中。15.如权利要求11所述的微处理器,其中用以载入该分页表项目的该第一载入请求信号是该微处理器相应于该转译查询缓冲器之中的该虚拟地址发生遗失而在内部所产生,而非该微处理器所执行的一程序的一载入请求信号,并且该预取单元是相应于该第一载入请求信号预取该第二快取线。16.如权利要求11所述的微处理器,更包括一第三载入请求信号,用以载入一分页表目录至该微处理器,其中该载入目录请求信号相应于该转译查询缓冲器之中的该虚拟地址发生遗失而产生;其中该预取单元更用以接收一第三快取线的一物理地址,并且该第三快取线包括被请求的该分页表目录;该预取单元更对应地产生一第四载入请求信号,以将一第四快取线预取至该微处理器,其中该第四快取线是该第三快取线的前一条快取线。17.一种藉由具有转译查询缓冲器的微处理器缩短寻访时间的方法,包括请求载入一分页表项目至一微处理器,以对应于一转译查询缓冲器之中的一虚拟地址的遗失;接收一第一快取线的一物理地址,并且该第一快取线包括被请求的该分页表项目;以及产生一载入信号以将一第二快取线预取至该微处理器,以对应于接收到该第一快取线的该物理地址,其中该第二快取线是该第一快取线的前一条快取线,并且该第一快取线包括被请求的该分页表项目。18.如权利要求17所述的方法,其中该转译查询缓冲器之中的该虚拟地址发生遗失所相关的该第二快取线不位于该分页表项目之中。19.如权利要求17所述的方法,更包括相应于该转译查询缓冲器之中的该虚拟地址发生遗失而执行一分页寻访,其中该分页寻访不存取所预取的该第二快取线的任一分页表项目。20.如权利要求17所述的方法,更包括相应于该转译查询缓冲器之中的一第二虚拟地址发生遗失而执行一分页寻访,其中该第二虚拟地址是关于所预取的该第二快取线之中的一分页表项目;其中执行该分页寻访的步骤包括自该微处理器之中将一物理页面地址载入至该转译查询缓冲器,并且该物理页面地址并非来自一系统存储器,并且该物理页面地址是储存在发生遗失的该第二虚拟地址所相关的该分页表项目之中。全文摘要本发明提供一种微处理器,包括一转译查询缓冲器;一第一载入请求信号,用以载入一分页表项目至该微处理器,其中该第一载入请求信号相应于该转译查询缓冲器之中的一虚拟地址发生遗失而产生;以及一预取单元,用以接收一第一快取线的一物理地址,其中该第一快取线包括被请求的该分页表项目,该预取单元更对应地产生一第二载入请求信号以预取一第二快取线至该微处理器,其中该第二快取线是该第一快取线的下一条快取线。文档编号G06F12/08GK102999440SQ20121046015公开日2013年3月27日申请日期2010年3月23日优先权日2009年3月30日发明者柯林.艾迪,罗德尼.E.虎克申请人:威盛电子股份有限公司