处理器和使处理器进行工作的方法

文档序号:10612733阅读:281来源:国知局
处理器和使处理器进行工作的方法【专利摘要】本发明涉及一种处理器和使处理器进行工作的方法。处理器包括转译后备缓冲器(TLB)、指令转译器和存储器子系统。TLB对虚拟向物理的地址转译进行高速缓存。指令转译器包括处理器的微指令集,其包含单个无效页指令。该无效页指令在由处理器执行的情况下,使处理器进行伪转译处理,其中在该伪转译处理中,将虚拟地址提交至TLB以识别该TLB中与虚拟地址匹配的匹配条目。存储器子系统使TLB中的匹配条目无效。TLB可以包括数据TLB和指令TLB。存储器子系统可以包括表查找引擎,其中该表查找引擎进行伪表查找以使TLB以及一个或多个分页高速缓存器中的条目无效。无效页指令可以指定仅被表示为本地的条目的无效。【专利说明】处理器和使处理器进行工作的方法
技术领域
[0001]本发明通常涉及处理器所进行的页无效,并且更特别地涉及具有用于使匹配的转译后备缓冲器和分页高速缓存器条目无效的单个无效页指令的处理器。【
背景技术
】[0002]现代处理器支持虚拟存储器性能。虚拟存储器系统将程序所使用的虚拟(还称为"线性")地址映射到或转译成硬件所使用的物理地址以对系统存储器进行寻址。虚拟存储器提供对程序隐藏物理存储器的存储分片状态并且便于进行程序重定位的优点。虚拟存储器由此允许程序看到比对该程序可用的实际物理存储器大的存储器地址空间。这些优点在利用多个程序或进程来支持处理器的分时的现代系统中特别有益。[0003]在处理器上执行的操作系统(0S)通过在页式虚拟存储器系统中创建并维持系统存储器页表(还称为转译表)来实现虚拟存储器系统。页表将虚拟地址映射到连接至处理器的系统存储器的物理地址。页表可以采用表的层级体系的形式,其中这些表中的一些表将虚拟地址映射到中间表地址。在程序使用虚拟地址访问存储器时,按连续顺序访问页表以实现虚拟地址向其物理地址的转译,这通常被称为页表查找或"表查找(tablewalk)"。表查找涉及外部系统存储器的多次访问,并且往往可能是导致处理器性能下降的耗时处理。[0004]处理器可以包括至少一个转译后备缓冲器(TLBhTLB是处理器的对虚拟向物理的地址转译进行高速缓存以大大降低需要表查找的可能性的硬件结构。TLB将要转译的虚拟地址与TLB中的先前存储的虚拟地址进行比较,并且如果虚拟地址在TLB中命中(例如,在发现虚拟地址匹配的情况下),则TLB提供相应的物理地址。相比于访问系统存储器中的页表以进行表查找所需要的时间,从TLB中取得物理地址所消耗的时间少得多。[0005]处理器还可以支持对页表中的一个或多个页表的信息进行高速缓存的一个或多个分页高速缓存器。例如,2015年1月的Intel?64andIA_32ArchitecturesSoftwareDeveloper'sManual,Volume3C:SystemProgrammingGuide(这里称为"]ntel?systemprogrammingguide")中的第四章描述了IA-32e分页模式,其全部内容通过引用包含于此以用于所有的目的和用途。IA-32e分页模式包括均位于系统存储器中的4级页映射表(PML4)、页目录指针表(PDPT)、页目录(PD)和页表(PT)。处理器可以针对各页表包括单独的分页高速缓存器。分页高速缓存器中的命中(hit)使得能够绕过系统存储器中的一个或多个页表,以减少系统存储器访问的次数。这样,在分页高速缓存器内存在命中的情况下,可以大大加速表查找处理。[0006]使TLB条目和/或分页高速缓存器条目无效是经常期望或甚至需要的。如果处理器尝试使用被标记为有效的无效转译,则可能发生导致不适当操作的错误。"Intel?systemprogrammingguide"中的第二章描述意图针对指定页使TLB条目无效的x86指令集架构(ISA)指令"INVLPG"。传统的x86处理器通过执行无效页微码例程来对INVLPG指令作出应答。传统的无效页微码例程以每次一个的方式手动访问并搜索各TLB和分页高速缓存器条目,并且使任何匹配的条目无效。传统的微码无效例程是消耗宝贵的处理器时间和资源的复杂操作。【
发明内容】[0007]根据一个实施例的处理器包括转译后备缓冲器(TLB)、指令转译器和存储器子系统。TLB对虚拟向物理的地址转译进行高速缓存。指令转译器包括处理器的微架构,其包含单个无效页指令的微指令集。该无效页指令在由处理器连同所指定的虚拟地址一起执行的情况下,使处理器进行伪转译处理,其中在该伪转译处理中,将虚拟地址提交至TLB以识别该TLB中的与虚拟地址匹配的匹配条目。存储器子系统使TLB中的匹配条目无效。[0008]TLB可以包括数据TLB和指令TLB,其中在这两者中均使匹配条目无效。可以将探测请求提交至指令TLB,其中该探测请求用以识别匹配条目。可以使用命中存储器等来暂时存储匹配条目。存储器子系统可以包括表查找引擎,其中该表查找引擎进行伪表查找,并且使匹配条目无效。处理器可以包括至少一个分页高速缓存器,其中表查找引擎还使各分页高速缓存器内的匹配条目无效。[0009]条目可以表示本地页或全局页。单个无效页指令可以具有仅使本地页无效的类型。在这种情况下,存储器子系统和/或表查找引擎仅使被表示或识别为本地的匹配条目无效。[0010]根据一个实施例的一种使处理器进行工作的方法,包括以下步骤:在所述处理器的微架构的微指令集中定义单个无效页指令;将虚拟向物理的地址转译存储在所述处理器的转译后备缓冲器(TLB)内;指定虚拟地址;在执行所述单个无效页指令时,使所述处理器进行伪转译处理,其中所述伪转译处理包括将所述虚拟地址提交至所述TLB;所述TLB响应于所述伪转译处理来识别与所述虚拟地址匹配的匹配条目;以及在所述伪转译处理期间,仅使所述TLB中的被识别为匹配条目的条目无效。[0011]所述方法可以包括定义单个无效本地页指令,并且仅使所述TLB中的被识别为本地条目的匹配条目无效。所述方法可以包括将所述匹配条目存储在命中存储器中。所述方法可以包括将探测请求连同所述虚拟地址一起发送至指令TLB。所述方法可以包括利用所述指令TLB将所述匹配条目存储在命中存储器中。所述方法可以包括将表查找推入到表查找引擎,并且利用所述表查找引擎进行伪表查找,其中所述伪表查找将所述虚拟地址提交至所述TLB,并且使所述TLB内的匹配条目无效。[0012]所述方法可以包括:将表查找推入到表查找引擎;利用所述表查找引擎进行伪表查找,其中所述伪表查找将所述虚拟地址提交至分页高速缓存器;所述分页高速缓存器响应于所述伪表查找来识别所述分页高速缓存器内的与所述虚拟地址匹配的匹配条目;以及利用所述表查找引擎使所述分页高速缓存器内的匹配条目无效。所述方法可以包括利用所述分页高速缓存器将所述匹配条目存储在命中存储器中。所述方法可以包括定义单个无效本地页指令,并且利用所述表查找引擎仅使所述分页高速缓存器内的被识别为本地条目的匹配条目无效。【附图说明】[0013]图1是根据本发明的一个实施例所实现的包含单个无效页(INVLPGC)指令的处理器的框图;[0014]图2是示出根据一个实施例的可用于":lntel.?systemprogrammingguide"所描述的IA-32e分页模式的图1的处理器的页表和相应的分页高速缓存器的简化框图;[0015]图3是示出图1处理器的iTLB和dTLB两者的TLB条目、并且示出图1处理器的分页高速缓存器结构的PC条目的图;[0016]图4是示出图1处理器在执行INVLPGC指令以使图1处理器的iTLB、dTLB和分页高速缓存器结构的条目无效下的操作的流程图;以及[0017]图5是更详细地示出图4的伪转译处理的操作的流程图。【具体实施方式】[0018]如这里所述的处理器包括替换复杂的传统无效页微码例程的单个无效页指令(或微指令或微操作)。处理器包括包含处理器微架构的微指令集的指令转译器,其中微指令集包括新的无效页指令。以与标准的加载或存储指令相同的方式,将新的无效页(INVLPGC)指令和相应的虚拟地址发出到处理器的存储器子系统的流水线结构中。正常指令所使用的正常转译处理被INVLPGC指令所用的伪转译处理替代。除了不访问系统存储器外,伪转译处理与正常转译处理大致相同。伪转译处理使用地址转译所采用的TLB结构和高速缓存结构的正常搜索功能以识别匹配的条目,然后存储这些匹配的条目。然后,使这些匹配的条目被无效以完成INVLPGC指令。[0019]图1是根据本发明的一个实施例所实现的包括单个无效页(INVLPGC)指令108的处理器100的框图。处理器100包括指令高速缓存器102、指令转译器104、执行单元112、架构寄存器114、存储器子系统116、高速缓冲存储器118(包括一个或多个高速缓冲存储器)和总线接口单元120。总线接口单元120使处理器100连接至外部系统存储器122。指令转译器104可以包括微码单元106,其包含如这里进一步所述的INVLPGC指令108。其它功能单元(未示出)可以包括分支预测器、重排序单元、重排序缓冲器、保留站、指令调度器和数据预取单元等其它可能的功能单元。[0020]在一个实施例中,微处理器100具有不按程序顺序发出指令以供执行的乱序执行微架构。在一个实施例中,微处理器100具有能够针对各时钟周期向执行单元112发出多个指令以供执行的超标量微架构。在一个实施例中,微处理器100大致符合X86指令集架构(ISA)。然而,应当理解,本发明已考虑到其它的ISA故不限于X86ISA。[0021]指令高速缓存器102对从系统存储器122所提取的架构指令进行高速缓存。处理器100还包括指令转译后备缓冲器(iTLB)126,其中该iTLB126与用于对从系统存储器122所提取的指令的地址转译进行高速缓存的指令高速缓存器102连接,因此iTLB126可减少对系统存储器122提取指令的访问。在一个实施例中,指令转译器104将从指令高速缓存器102所提取的架构指令(可被称为"宏指令")转译成处理器100的微架构的微指令集中的微指令。执行单元112执行这些微指令,以进行该组架构指令所期望的功能。如这里所述的INVLPGC指令108可以是处理器100的微指令集中所包括的微指令。然而,通常而言,微指令一般在这里可以简称为"指令"。INVLPGC指令108是进行针对X86INVLPG宏指令所预期进行的复杂页无效功能的单个微指令。[0022]执行单元112从架构寄存器114(或者从未示出的重排序缓冲器或转发总线)接收源操作数。将操作数从系统存储器122经由存储器子系统116载入寄存器114。存储器子系统116从高速缓冲存储器118进行数据的写入和读取。可以利用根据高速缓冲存储器层级体系所组织的多个高速缓存器(例如,1级(L1)数据高速缓存器、2级(L2)高速缓存器、3级(L3)高速缓存器等)来实现高速缓冲存储器118。如果针对高速缓冲存储器118的最后一级高速缓存器发生高速缓存未命中,则从总线接口单元120发出请求给系统存储器122以提取高速缓存器所需的数据或指令高速缓存行。[0023]包括至少一个数据转译后备缓冲器(dTLB)与存储器子系统116连接。如这里进一步所述,dTLB128基于页大小可被实现为单个高速缓存器或采用层级形式的多个高速缓存器。dTLB128对虚拟地址向物理地址的转译进行高速缓存,以降低需要表查找的可能性。dTLB128将存储器子系统116所提供的虚拟地址与dTLB128中所存储的先前存储的虚拟地址进行比较。在正常操作期间,如果所提供的虚拟地址与所存储的任何虚拟地址匹配,则发生"命中"并且dTLB128提供相应的物理地址以避免需要表查找。否则,dTLB128中的"未命中(miss)"引起进行表查找以从系统存储器122中取得物理地址。与进行表查找以从系统存储器122中取得物理地址相比,从dTLB128中取得物理地址明显更快。[0024]存储器子系统116包括表查找(TW)引擎124,其中该TW引擎124在dTLB128中不存在匹配的情况下,进行地址转译表查找以生成虚拟向物理的地址转译。在正常地址转译操作期间,TW引擎124访问系统存储器122中的页表(例如,参见图2)以进行各表查找,从而生成虚拟向物理的地址转译,其中该地址转译随后被载入dTLB128。页表可以包括对页进行映射的表(例如,X86ISA页表)、或者参考转译表层级体系中的其它转译表(例如,X86ISA页目录、页目录指针表、PML4表)的表。[0025]处理器100在对一个或多个页表的转译信息进行高速缓存的分页高速缓存器结构130中包括至少一个分页高速缓存器。在表查找的正常操作期间,TW引擎124将虚拟地址提供至分页高速缓存器结构130中的分页高速缓存器以搜索匹配的条目。在分页高速缓存器结构130中发生匹配的情况下,从分页高速缓存器结构130中取得转译信息以避免访问页表中的一个或多个页表,从而减少系统存储器122访问。减少系统存储器122访问通过加速表查找处理提高了性能。[0026]微码单元106可以包括:微码存储器(例如,只读存储器或R0M),其被配置为存储微码或微码例程;以及微定序器(未示出),用于从微码存储器提取微码的指令。在一个实施例中,微码指令是微指令;在另一实施例中,将微码指令转译成微指令。微码实现一些架构指令,诸如特别复杂的架构指令等。微码可以包括用于进行处理器1〇〇的各种功能的微码例程等。在例示结构中,微指令包括单个INVLPGC指令108,其中该INVLPGC指令108用来使iTLB126、dTLB128和分页高速缓存器结构130内的匹配条目无效。INVLPGC指令108指定虚拟地址,并且使iTLB126、dTLB128和分页高速缓存器结构130内的与所指定的虚拟地址匹配的任何条目无效。[0027]在一个实施例中,iTLB126和dTLB128的大小和/或结构相关于所指定的页大小。例如在页大小被指定为4千字节(KB)的情况下,dTLB128可被配置为单个TLB或者多个TLB的层级体系。在层级结构中,dTLB128可以包括相对较小且较快的第一级(L1)TLB和与L1TLB相比更大但稍慢的第二级(L2)TLB。在一个实施例中,还可以设置中间溢出高速缓存器(例如,L1.5),并且L1.5从逻辑上可以位于L1TLB和L2TLB之间。iTLB126可以与L1TLB相同地配置,其中iTLB126以及dTLB128的L1TLB根据所实现的替换算法各自将被新条目替换的"丢弃者"发送到溢出TLB(在提供的情况下)中,并且/或者然后发送到L2TLB中。在指定诸如2兆字节(MB)页、4MB页、1千兆字节(GB)页等的其它页大小的情况下,iTLB126和dTLB128各自可以基于所指定的页大小被配置为单独的更大TLB结构。当然,在期望的情况下,可以针对更大的页大小来定义层级体系TLB结构。[0028]如这里进一步所述,分页高速缓存器结构130包括针对使用中的特定地址转译方案或分页模式所定义的一个或多个页表的单独分页高速缓存器。在例示结构中,设置有用于存储来自iTLB126、dTLB128和分页高速缓存器结构130的命中信息的命中存储器132。在其它结构中,命中存储器132可以分配在位于分开的搜索功能处或该搜索功能附近的本地存储器中。[0029]在说明INVLPGC指令108的寻址操作之前,先简要地说明正常操作期间的地址转译的处理。将微指令和相应虚拟地址提供至存储器子系统116以用于访问系统存储器122。微指令例如可以是用以将数据加载到利用虚拟地址所指示的页的存储器位置中的加载(LD)指令、或者用以从该存储器位置取得数据的存储(ST)指令。如前面所述,处理器100使用页式虚拟存储器系统进行工作,其中页式虚拟存储器系统不是直接使用虚拟地址来访问存储器页。首先使用地址转译将虚拟地址转换成相应的物理地址可作为替代方式。[0030]根据简化的地址转译处理,存储器子系统116首先将虚拟地址提供至dTLB128,其中dTLB128将所提供的虚拟地址与dTLB128中的所存储的条目的虚拟地址进行比较。在命中的情况下(在发现虚拟地址匹配的情况下),取得所存储的相应物理地址并将该物理地址提供回至存储器子系统116,并且地址转译完成。在未命中的情况下(在dTLB128中没有发现匹配的条目),将表查找"推入"到TW引擎124中,其中TW引擎124进行表查找处理以取得物理地址。一旦表查找处理完成,TW引擎124利用新的地址转译更新dTLB128。还可以利用新的地址转译来更新分页高速缓存器结构130。[0031]在正常表查找处理期间,TW引擎124按连续顺序访问系统存储器122中的页表以取得物理地址。TW引擎124还可以访问分页高速缓存器结构130中的一个或多个分页高速缓存器。如果在分页高速缓存器结构130中发生命中,则取得相应的地址信息并且使用该地址信息以绕过页表中的一个或多个页表从而加速表查找处理。如果表查找在分页高速缓存器结构130中未命中,则进行完整表查找以访问物理地址,并且利用新的地址转译信息更新分页高速缓存器结构130。[0032]可以对地址转译处理进行一定程度的修改以提高性能并且满足所指定的时序标准,例如可以提早推入表查找而不用等待dTLB128搜索完成。如果在推入了表查找之后在dTLB128中发生命中,则终止(在已发起的情况下)或者取消(在队列中且尚未开始的情况下)表查找。在一个实施例中,例如,可以同时发起dTLB128搜索和表查找。在另一实施例中,诸如在利用多个TLB的层级体系实现dTLB128的情况下等,首先将虚拟地址应用于dTLB128的L1TLB(和溢出TLB(在提供的情况下)),并且在未命中的情况下,随后在将虚拟地址提供至dTLB128的L2高速缓存器的同时推入表查找。在L2TLB中发生命中的情况下,终止或取消表查找。在其它情况下,表查找完成以确定物理地址。[0033]由于各种原因,可能需要使dTLB128和/或分页高速缓存器结构130中的条目无效。如前面所述,可以发出X86INVLPG宏指令以使针对虚拟地址所指定的页的TLB条目无效。然而,X86INVLPG指令是以软件或代码的形式设置在系统存储器122中并且经由指令高速缓存器102所发出的宏指令。在传统的处理器结构中,INVLPG宏指令被俘获(trapped)至微码106的微码无效例程。传统的微码无效例程以每次一个的方式手动访问并搜索dTLB128的各条目,并且使任何匹配条目无效。因此,传统的微码无效例程是消耗宝贵的处理器时间和资源的复杂操作。[0034]然而,传统的微码无效例程没有在分页高速缓存器结构130中进行搜索,反而使分页高速缓存器结构130整体被刷新或无效,结果导致潜在有价值的转译信息丢失。[0035]如这里进一步所述,INVLPGC指令108是无论dTLB128的多个页大小和层级体系为何,都实行与传统的复杂页无效任务相同的功能的单个微指令。存储器子系统116以与正常微指令相同的方式对INVLPGC指令108作出应答,从而提供地址转译所用的虚拟地址。然而,代替正常转译处理,存储器子系统116进行"伪"转译处理。根据伪转译处理,将虚拟地址提供至dTLB128以采用与正常地址转译搜索大致相同的方式进行地址转译搜索。然而,dTLB128中的命中并不使搜索终止,而是将所命中的任一个或多个条目的位置存储在命中存储器132中。[0036]伪转译处理还利用虚拟地址向iTLB126发送探测,其中iTLB126搜索任何匹配条目。iTLB126中的任何命中也存储在命中存储器132中。然而,iTLB126中的未命中不导致向系统存储器122的访问。作为代替,根据伪转译处理,响应于探测功能的搜索在该搜索完成之后简单地终止。这样,利用iTLB126的正常搜索功能以在不访问系统存储器122的情况下寻找匹配条目,并且将任何匹配条目存储在命中存储器132中。[0037]此外,无论在dTLB128中是否存在命中,都使用所提供的虚拟地址将伪表查找推入到TW引擎124中。"伪"表查找意味着除不访问系统存储器122外,以与正常表查找大致相同的方式进行表查找搜索功能。同样的,无论在dTLB128中是否存在命中,都响应于INVLPGC指令108而发起伪表查找处理,并且直到搜索完成为止才终止或取消该伪表查找处理。除不访问系统存储器122中的页表外,TW引擎124以与正常表查找大致相同的方式进行伪表查找。特别地,TW引擎124将虚拟地址提供至分页高速缓存器结构130内的各个个别分页高速缓存器以搜索其内的条目。以与dTLB128相同的方式,任何命中不终止搜索处理,并且将任一个或多个匹配条目的位置存储在命中存储器132中。这样,dTLB128和分页高速缓存器结构130的正常搜索功能用于在无需访问系统存储器122的情况下寻找匹配条目,并且将任何匹配条目存储在命中存储器132中。[0038]针对iTLB126、dTLB128和/或分页高速缓存器结构130中的任一个,尽管从理论上在任何给定时间应至多仅一个条目匹配,但在各个高速缓存器结构内可能有一个以上匹配的条目。例如,软件程序可能不适当地修改了页映射。即使这种修改被视为"非法的",它们仍然是有可能发生的。此外,可能未适当地刷新或无效现有条目,使得随着时间的经过,在给定的TLB或分页高速缓存器中存在多个匹配条目。任何和所有这些匹配条目均被发现并被存储在命中存储器132中。[0039]一旦响应于INVLPGC指令108针对iTLB126、dTLB128和分页高速缓存器结构130完成了搜索处理,使iTLB126中、dTLB128的各个别TLB中、和分页高速缓存器结构130的各个个别分页高速缓存器中的在命中存储器132中被列出的各匹配条目无效。[0040]图2是示出可用于"Intelilisystemprogrammingguide"中所描述的IA_32e分页模式的、根据一个实施例的处理器100的页表和相应的分页高速缓存器的简化框图。尽管ΙΑ-32e分页模式是为了例示的目的而示出的,但INVLPGC指令108等同地适用于使任何其它分页模式所使用的分页高速缓存器无效。如图所示,TW引擎124经由总线接口单元120与系统存储器122连接,与分页高速缓存器结构130连接,并且与命中存储器132连接。根据IA-32e分页模式,处理器100将4级页映射表(PML4)202、页目录指针表(PDPT)204、页目录(PD)206和页表(PT)208存储在系统存储器122中。应当理解,页表202、204、206和208(202~208)是针对IA-32e分页模式所特有的,本领域普通技术人员可以针对不同的分页模式定义替代的页表。分页高速缓存器结构130可以针对各个页表202~208包括单独的分页高速缓冲器。然而,已确定了针对页表PML4202和页表ΡΤ208的分页高速缓存器可能无法提供明显的时序优势。[0041]在例示结构中,分页高速缓存器结构130包括roPT高速缓存器210和ro高速缓存器212JDPT高速缓存器210中的命中使得TW引擎124能够绕过针对PML4页表202和PDPT页表204的系统存储器122访问,而是直接访问页表206。特别地,PDPT高速缓存器210将所提供的直至下一个页表ro206的虚拟地址的高位部分与roPT高速缓存器210中所存储的虚拟地址的相应高位部分进行比较。在发生命中的情况下,PDPT高速缓存器210取得指向作为ro页表206的下一个页表的相应物理地址。这样,绕过了页表202和204。[0042]以相同的方式,ro高速缓存器212的各条目存储直至PT页表208的虚拟地址的相应高位部分,使得ro高速缓存器212内的命中将提供可用于直接访问PT页高速缓存器208的物理地址。这样,PD高速缓存器212内的命中使得TW引擎124能够绕过针对PML4页表202、Η)ΡΤ页表204和Η)页表206的系统存储器122访问,而是直接访问下一个页表即PT页表208。[0043]应当理解,分页高速缓存器结构130的任何分页高速缓存器中的命中,可通过减少系统存储器122访问的次数来加速表查找处理。在伪表查找期间,分页高速缓存器结构130寻找这些匹配条目中的任一个或多个匹配条目,并且将条目位置存储在命中存储器132中。然而,伪表查找不会访问系统存储器132。[0044]图3是示出针对iTLB126和dTLB128这两者的TLB条目302、以及分页高速缓存器结构130的PC条目304的图。TLB条目302表示针对iTLB126和dTLB128这两者的条目,但可以包括不同的字段并且字段大小可能改变。条目302和304各自包括多个字段,其中各字段包括用于保持相应值的相应条目的一个或多个位。TLB条目302包括存储虚拟页地址VPADDR306的字段、存储相应的物理页地址(PPADDR)308的另一字段和存储有效(V)值310的另一字段。它们可以包括其它字段,但由于这些其它字段对于本发明的全面完整理解而言并非是必需的,因此没有示出这些其它字段。例如,条目302和304各自可以包含相应页的属性的状态位。可以将VPADDR306和PPADDR308统称为TLB条目302的地址转译。"页"地址包括适合定义信息的页的相应地址的高位。作为示例,如果完整地址包括48个位[47:0]并且页大小是5KB,则页地址VPADDR306和PPADDR308各自包括高36位[47:12],其中省略了最低的12个位。页地址的位数根据完整地址的大小和页大小而改变。V值310确定TLB条目302是否有效,并且可以包括一个或多个位。[0045]PC条目304与TLB条目302相同,并且在相似字段中包括相似值。PC条目304包括存储虚拟高速缓存器地址VCADDR312的字段、存储相应的物理高速缓存器地址(PCADDR)314的另一字段和存储有效(V)值316的另一字段。同样,它们可以包括其它字段,但由于这些其它字段对于本发明的全面完整理解而言并非是必需的,因此没有示出这些其它字段。在该上下文中,"高速缓存器"地址包括用于指向页表202~208中的下一个页表的相应地址的高位,以绕过先前的页表。高速缓存器地址的大小不仅与完整地址的大小相关,而且还与条目存在的特定分页高速缓存器相关。PDPT高速缓存器210的各条目包括适合指向下一个PD页表206的各地址的所有高位,从而绕过PML3页表202和PDPT页表204JD高速缓存器212的各条目包括适合指向下一个PT页表208的各地址的所有高位,从而绕过PML3页表202、Η)ΡΤ页表204和页表206。例如,假定48位地址,即针对Η)ΡΤ高速缓存器210的PC条目304的高速缓存器地址VCADDR312和PCADDR314可以包括用于指向页表206的高18位[47:30],并且针对PC高速缓存器212的PC条目304的高速缓存器地址VCADDR312和PCADDR314可以包括用于指向PT页表208的高27位[47:21]J值316判断PC条目304是否有效,并且可以包括一个或多个位。[0046]图4是示出处理器100在处理用于使iTLB126、dTLB128和分页高速缓存器结构130的条目无效的INVLPGC指令108时的操作的流程图。在第一个方块402中,响应于架构INVLPG宏指令或者响应于表示应使给定的页条目无效的任何其它指令或操作而从微码106发出INVLPGC指令108。INVLPGC指令108指定页转译的虚拟地址以供无效。在下一方块404中,使用所提供的虚拟地址来进行伪转译处理以使iTLB126、dTLB128和分页高速缓存器结构130中的一个或多个匹配条目无效,并且将任何命中位置存储在命中存储器132中。这里进一步说明伪转译处理。在下一方块406中,使iTLB126、dTLB128(和其内的各TLB)以及分页高速缓存器结构130(和其内的各分页高速缓存器)中的匹配条目无效。这可以通过清除匹配条目的有效值310或316来进行。在下一方块408中,完成INVLPGC指令108。[0047]方块404所示的将匹配条目存储在命中存储器132中和方块406所示的使匹配条目无效的实际处理与特定处理器结构相关。尽管命中存储器132被示出位于中央位置,但存储器132可分布为本地存储器位置作替代方案。此外,进行无效的实体可以是存储器子系统116内所设置的单独逻辑方块或电路,或者可以由TW引擎124以及iTLB126的电路系统来进行。[0048]在一个实施例中,例如,TW引擎124被配置为在正常表查找操作完成时更新dTLB128。此外,在正常操作期间,TW引擎124以本地方式存储要更新的位置以及用于根据替换策略进行TLB替换的其它信息。在一个实施例中,dTLB128是组关联高速缓存器,并且dTLB128的各组包括诸如最少最近使用(LRU)或伪LRU信息等的替换信息,并且存储器子系统122选择替换信息所表示的编索引后的组的条目以供替换。对于伪转译处理,TW引擎124可以将一个或多个命中位置存储在TW引擎124内的作为命中存储器132的一部分的本地存储器中。代替根据正常表查找处理替换dTLB128内的条目,通过诸如清除相应的有效值310等来使匹配位置无效。[0049]在如图1所示的一个实施例中,根据伪转译处理将包括相应的虚拟地址的SNOOP(探测)请求发送至iTLB126,并且iTLB126搜索到一个或多个位置并将这一个或多个位置存储在命中存储器132中。iTLB126还可以将命中存储在作为命中存储器132的分布部分的本地存储器中。iTLB126中的未命中会终止SNOOP请求,并且不访问系统存储器122。此外,将无效(INV)请求发送至iTLB126,从而使所存储的各个命中无效。如果在命中存储器132中不存在匹配条目,则INV请求也简单地终止。[0050]在一个实施例中,因INVLPGC指令108在每当执行该指令时发生页无效,所以该指令是自串行化的。可以在TW引擎124中等待直到INVLPGC指令108不再是推测性的为止,然后进行无效。然而,不应以推测方式执行INVLPGC指令108。在正常表查找处理中,针对dTLB128的更新引起从TW引擎124正常退出。在一个实施例中,由于针对伪表查找处理没有利用新的值更新dTLB128,因此可以触发假页故障以从TW引擎124顺利地退出。假页故障的触发是针对实现方式所特有的便利终止机制。其它的替代结构可用替代方法从TW引擎124退出。[0051]图5是更详细地示出块404的伪转译处理的操作的流程图。在被调用的情况下,操作进入方块502,其中在该方块502中,使用所提供的虚拟地址来发起伪转译搜索处理。然后,操作进入针对iTLB126的方块504、针对dTLB128的方块510和/或针对分页高速缓存器结构130的方块520。在一个实施例中,可以并行地发起和/或大致并行地进行这些伪转译搜索处理中的任一个或多个。可选地,可以按任何期望的顺序顺次发起各单独处理。可选地,以牺牲性能为代价可以串行地或顺次进行这些单独的处理。[0052]在方块504中,使用虚拟地址来进行iTLB126的探测。在下一方块506中,询问在iTLB126中是否存在任何命中。如果存在任何命中,则操作进入方块508,其中在该方块508中,将任何命中位置存储在命中存储器132中。在将命中存储在命中存储器132中之后、或者在iTLB126中不存在命中的情况下,iTLB126搜索完成。如前面所述,可以通过向iTLB126发送SNOOP请求来发起探测,并且iTLB126在其条目中搜索与所提供的虚拟地址的任何匹配。[0053]在方块510中,将虚拟地址应用于dTLB128的第一个或下一个TLB,其中该第一个TLB是第一次迭代所用的TLB并且下一个TLB是各后续迭代所用的TLB。此外,相关于分页模式,"第一个或下一个"TLB可能是唯一TLBdTLB128搜索虚拟地址相同的匹配条目,并且在方块514中将如在方块512中所判断出的任何命中的位置存储到命中存储器132中。在存储了任何命中之后或者在不存在命中的情况下,操作进入方块516,其中在该方块516中,询问是否存在其它TLB。如果不存在其它TLB,则针对dTLB128的操作完成。否则,诸如针对层级结构等,操作返回至方块510以将虚拟地址应用于下一个TLB,并且针对dTLB128内的各TLB重复进行操作。[0054]在方块520中,将伪表查找连同虚拟地址一起推入到TW引擎124中。在伪表查找处理期间,在方块522中将虚拟地址应用于分页高速缓存器结构130内的"下一个"分页高速缓存器,其中该"下一个"分页高速缓存器可能是第一次迭代所用的第一个分页高速缓存器(并且可能是相关于分页模式的唯一分页高速缓存器)。分页高速缓存器在方块524中判断是否存在任何命中,并且如果存在任何命中,则在方块526中将这些命中存储到命中存储器132中。在存储了任何命中之后或者在不存在命中的情况下,操作进入方块528,其中在该方块528中,询问是否存在其它分页高速缓存器。如果不存在其它分页高速缓存器,则针对分页高速缓存器结构130的操作完成。否则,操作返回至方块522以将虚拟地址应用于下一个分页高速缓存器。针对分页高速缓存器结构130内的各分页高速缓存器重复进行操作。[0055]可以与将SNOOP请求发送至iTLB结构126同时将虚拟地址应用于dTLB128中的第一个TLB,以同时在iTLB结构126和TLB结构128中进行搜索。同时还可以将表查找推入到TW引擎124中,其中还可以与TLB并行地在分页高速缓存器结构130中进行搜索。可选地,根据针对层级结构的正常操作,在推入表查找之前,可以将虚拟地址应用于第一个L1TLB,并且可能应用于溢出TLB(在提供的情况下)。然后,对TW引擎124进行推入以搜索诸如L2TLB等的其它TLB,同时还发起表查找处理以在分页高速缓存器结构130中进行搜索。添加流程线521以例示TW引擎124发起对dTLB128内更大TLB的搜索的处理。[0056]如前面所述,传统的微码无效例程被刷新或无效,结果导致潜在有价值的转译信息丢失。然而,如这里所述的伪转译处理提供了仅使分页高速缓存器结构130中的匹配条目被无效,而不是使分页高速缓存器结构130的整体无效的明显优势。然而,该差异可能产生与传统的x86处理器的兼容性问题。在另一实施例中,INVLPGC指令108使分页高速缓存器结构130整体无效以确保与传统的x8处理器的兼容操作。在又一实施例中,可以在INVLPGC指令108之后发出单独的清除指令,以明确使分页高速缓存器结构130整体无效,从而确保兼容操作。[0057]在一个实施例中,INVLPGC指令108使包括匹配的本地有效条目和全局有效条目这两者的各匹配条目无效。页可以被标记或加标签为本地页或全局页。本地页是仅一个进程特有的,而全局页可以由多个进程使用。INVLPGC指令108可以具有包括第一变形和第二变形的多个变形,其中该第一变形使本地和全局的匹配条目这两者无效,而该第二变形仅使匹配的本地条目无效(其中,匹配的全局条目没有被无效)。对于第二变形,存储器子系统116和/或TW引擎124进一步被配置为仅使没有设置全局有效(例如,至少一个全局位)的匹配条目无效。方块406包括确认全局值、并且仅使没有表示为全局页的匹配条目无效的功能。[0058]尽管针对X86ISA说明了实施例,但单个无效页指令或相似形式还可以用在诸如ARM、MIPS或SunISA等的其它ISA中。如这里所述的单个无效页指令可以用在支持虚拟化方案的任何ISA中。相关计算机领域的技术人员还明白,可以在没有背离本发明的范围的情况下对本发明进行形式和细节方面的各种变化。这里所述的设备和方法的实施例可以包括在诸如微处理器核等的半导体知识产权核中(例如,体现或指定在HDL中),并且在生产集成电路时转变成硬件。因而,本发明不应受到这里所述的任何典型实施例所限制,而是应当仅根据所附权利要求书及其等同物来限定。具体地,可以在可用于通用计算机中的微处理器装置内实现本发明。最后,本领域技术人员应当理解,在没有背离如所附权利要求书所定义的本发明的范围的情况下,这些技术人员可以容易地使用所公开的概念和具体实施例作为用于设计或修改用于执行本发明的相同目的的其它结构的基础。【主权项】1.一种处理器,包括:转译后备缓冲器即TLB,用于对虚拟向物理的地址转译进行高速缓存;指令转译器,其包含所述处理器的微架构的微指令集,其中所述微指令集包括单个无效页指令,所述无效页指令在由所述处理器连同所指定的虚拟地址一起执行的情况下,使所述处理器进行伪转译处理,其中在所述伪转译处理中,将所述虚拟地址提交至所述TLB以在所述TLB中识别与所述虚拟地址匹配的匹配条目;以及存储器子系统,用于使所述TLB中的匹配条目无效。2.根据权利要求1所述的处理器,其中,还包括命中存储器,其中所述TLB将所述匹配条目的位置存储到所述命中存储器中。3.根据权利要求1所述的处理器,其中,所述TLB包括指令TLB,以及所述存储器子系统根据所述伪转译处理来将探测请求与所述虚拟地址一同提交至所述指令TLB,其中所述探测请求用以识别所述指令TLB内的与所述虚拟地址匹配的匹配条目。4.根据权利要求3所述的处理器,其中,所述存储器子系统还将无效请求提交至所述指令TLB,所述无效请求使得所述指令TLB使所述匹配条目无效。5.根据权利要求3所述的处理器,其中,还包括命中存储器,其中所述指令TLB将所述指令TLB中的匹配条目的位置存储到所述命中存储器中。6.根据权利要求1所述的处理器,其中,所述存储器子系统包括表查找引擎,所述伪转译处理使所述处理器将伪表查找推入到所述表查找引擎中,所述表查找引擎将所述虚拟地址提交至所述TLB以识别所述匹配条目,以及所述表查找引擎使所述TLB内的所述匹配条目无效。7.根据权利要求1所述的处理器,其中,还包括:至少一个分页高速缓存器,其中,所述存储器子系统还包括表查找引擎,所述伪转译处理使所述存储器子系统将伪表查找推入到所述表查找引擎中,所述表查找引擎将所述虚拟地址提交至所述至少一个分页高速缓存器以识别匹配条目,以及所述表查找引擎使所述至少一个分页高速缓存器内的匹配条目无效。8.根据权利要求7所述的处理器,其中,所述单个无效页指令表示仅本地条目的无效,以及所述表查找引擎仅使所述匹配条目中的未表示为全局条目的匹配条目无效。9.根据权利要求1所述的处理器,其中,所述单个无效页指令表示仅本地条目的无效,以及所述存储器子系统仅使所述匹配条目中的表示为本地条目的匹配条目无效。10.根据权利要求1所述的处理器,其中,还包括:命中存储器;以及分页高速缓存器,用于存储页表的地址转译;所述TLB包括数据TLB和指令TLB,所述存储器子系统包括表查找引擎,其中,响应于所述单个无效页指令,所述存储器子系统将所述虚拟地址提交至所述数据TLB,所述数据TLB将第一匹配条目存储在所述命中存储器内,以及所述存储器子系统使所述数据TLB中的列出在所述命中存储器内的所述第一匹配条目无效;所述存储器子系统将探测请求发送至所述指令TLB,所述指令TLB将第二匹配条目存储在所述命中存储器内,以及所述存储器子系统将无效请求发送至所述指令TLB,所述指令TLB使所述指令TLB中的列出在所述命中存储器内的所述第二匹配条目无效;以及所述存储器子系统将伪表查找推入到所述表查找引擎中,所述表查找引擎通过将所述虚拟地址提交至所述分页高速缓存器来进行所述伪表查找,所述分页高速缓存器将第三匹配条目存储在所述命中存储器内,以及所述表查找引擎还通过使所述分页高速缓存器中的列出在所述命中存储器内的所述第三匹配条目无效,来进行所述伪表查找。11.一种使处理器进行工作的方法,包括以下步骤:在所述处理器的微架构的微指令集中定义单个无效页指令;将虚拟向物理的地址转译存储在所述处理器的转译后备缓冲器内,转译后备缓冲器即TLB;指定虚拟地址;在执行所述单个无效页指令时,使所述处理器进行伪转译处理,其中所述伪转译处理包括将所述虚拟地址提交至所述TLB;所述TLB响应于所述伪转译处理来识别与所述虚拟地址匹配的匹配条目;以及在所述伪转译处理期间,仅使所述TLB中的被识别为匹配条目的条目无效。12.根据权利要求11所述的方法,其中,定义单个无效页指令的步骤包括定义单个无效本地页指令,以及无效的步骤包括仅使所述TLB中的被识别为本地条目的匹配条目无效。13.根据权利要求11所述的方法,其中,还包括以下步骤:将所述匹配条目存储在命中存储器中。14.根据权利要求11所述的方法,其中,将所述虚拟地址提交至所述TLB的步骤包括:将探测请求连同所述虚拟地址一起发送至指令TLB。15.根据权利要求14所述的方法,其中,还包括以下步骤:利用所述指令TLB将匹配条目存储在命中存储器中。16.根据权利要求14所述的方法,其中,还包括以下步骤:将无效请求发送至所述指令TLB,以使所述指令TLB中的匹配条目无效。17.根据权利要求11所述的方法,其中,还包括以下步骤:将表查找推入到表查找引擎;以及利用所述表查找引擎进行伪表查找,其中所述伪表查找将所述虚拟地址提交至所述TLB并且使所述TLB内的匹配条目无效。18.根据权利要求11所述的方法,其中,还包括以下步骤:将表查找推入到表查找引擎;利用所述表查找引擎进行伪表查找,其中所述伪表查找将所述虚拟地址提交至分页高速缓存器;所述分页高速缓存器响应于所述伪表查找来识别所述分页高速缓存器内的与所述虚拟地址匹配的匹配条目;以及利用所述表查找引擎使所述分页高速缓存器内的匹配条目无效。19.根据权利要求18所述的方法,其中,还包括以下步骤:利用所述分页高速缓存器将所述匹配条目存储在命中存储器中。20.根据权利要求18所述的方法,其中,定义单个无效页指令的步骤包括定义单个无效本地页指令,以及利用所述表查找引擎进行无效的步骤包括利用所述表查找引擎仅使所述分页高速缓存器内的被识别为本地条目的匹配条目无效。【文档编号】G06F12/0882GK105975405SQ201610328850【公开日】2016年9月28日【申请日】2016年5月17日【发明人】柯林·艾迪【申请人】上海兆芯集成电路有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1