CN114303135A - 促进基于处理器的设备中的页表条目(pte)维护 - Google Patents
促进基于处理器的设备中的页表条目(pte)维护 Download PDFInfo
- Publication number
- CN114303135A CN114303135A CN202080061397.9A CN202080061397A CN114303135A CN 114303135 A CN114303135 A CN 114303135A CN 202080061397 A CN202080061397 A CN 202080061397A CN 114303135 A CN114303135 A CN 114303135A
- Authority
- CN
- China
- Prior art keywords
- coherency
- pte
- particle
- local cache
- copy
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012423 maintenance Methods 0.000 title claims abstract description 13
- 239000002245 particle Substances 0.000 claims abstract description 124
- 239000008187 granular material Substances 0.000 claims abstract description 114
- 238000012545 processing Methods 0.000 claims abstract description 31
- 230000015654 memory Effects 0.000 claims description 75
- 230000004044 response Effects 0.000 claims description 39
- 238000000034 method Methods 0.000 claims description 26
- 230000001427 coherent effect Effects 0.000 claims description 9
- 230000007704 transition Effects 0.000 description 25
- 238000010586 diagram Methods 0.000 description 17
- 239000003795 chemical substances by application Substances 0.000 description 12
- 238000013519 translation Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000002401 inhibitory effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30079—Pipeline control instructions, e.g. multicycle NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/682—Multiprocessor TLB consistency
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
公开了促进基于处理器的设备中的页表条目(PTE)维护。在这方面,基于处理器的设备包括处理元件(PE),处理元件(PE)被配置为支持两种新的一致性状态:遍历器可读(W)和已修改的遍历器可访问(MW)。W一致性状态指示由硬件表遍历器(HTW)对对应的一致性颗粒的读取访问被许可,但是由非HTW代理进行的所有写入操作和所有读取操作被禁止。MW一致性状态指示一致性颗粒的仅对HTW可见的、被缓存的副本可能存在于其他高速缓存中。在一些实施例中,每个PE还被配置为支持用于修改PTE的SP‑PTE字段的特殊页表条目(SP‑PTE)字段存储指令,以向PE的本地高速缓存指示:对应的一致性颗粒应该转变为MW状态,并且向远程本地高速缓存指示:一致性颗粒的副本应该更新它们的一致性状态。
Description
技术领域
本公开的技术涉及基于处理器的设备中的页表,并且更具体地,涉及用于更高效地更新页表的页表条目的机制。
背景技术
页表是被现代基于处理器的设备用来提供虚拟存储器功能性的数据结构。页表提供存储虚拟存储器地址与对应的物理存储器地址(即系统存储器中的存储器位置的地址)之间的映射的页表条目(PTE)。当基于处理器的设备需要将虚拟存储器地址转换为物理存储器地址时,基于处理器的设备使用硬件表遍历器(HTW)(hardware table walker)访问页表以定位与虚拟存储器地址相关联的页表条目,并且然后从页表条目读取对应的物理存储器地址。HTW或软件最近访问过的PTE也可以由基于处理器的设备高速缓存在转换后备缓冲器(TLB)中,以供后续重用,而无需重复转换过程。通过使用页表来实现虚拟存储器功能性,基于处理器的设备使得软件进程能够访问在彼此隔离、并且合计地可以概念性地比可用物理存储器大的安全存储器空间。
每个PTE包括由硬件使用的字段,作为非限制性示例,诸如表示指向其他页表的指针的位、许可位、存储器属性等。PTE内的其他字段(在本文中被称为“特定PTE(SP-PTE)字段”)仅由软件使用,并且作为非限制性示例,可以包括用于跟踪页面计数和/或页面年龄、管理页面表更新等的位。因此,由基于处理器的设备对页表的维护和管理可能涉及读取和写入不被HTW使用的和/或与虚拟到物理地址转换无关的SP-PTE字段。
只要特定PTE的本地副本存在于基于处理器的设备的TLB中,HTW就会忽略对SP-PTE字段的修改,并且根据需要继续访问PTE。但是,如果TLB太小而无法持有PTE的工作集,则可能会出现性能问题。虽然对SP-PTE字段的更新对HTW是透明的,但是当软件修改SP-PTE字段时,被持有在本地高速缓存中的PTE可能会从本地高速缓存被无效。因此,如果TLB中不存在虚拟到物理地址转换所需的PTE,并且由于对SP-PTE字段的修改,高速缓存已使其PTE副本无效,则基于处理器的设备必须执行存储器读取操作以从系统存储器获取PTE的副本。在包括多个处理单元(PE)的基于处理器的设备中,这种性能问题可能会加剧,这些处理单元(PE)都试图访问在其本地高速缓存内包含PTE的相同一致性颗粒(即,维持一致性的最小存储器块,对应于高速缓存线)。
因此,期望一种用于维护PTE同时避免过度高速缓存争用的更高效的机制。
发明内容
本文公开的示例性实施例包括促进基于处理器的设备中的页表条目(PTE)维护。在一个示例性实施例中,基于处理器的设备包括多个处理元件(PE),每个处理元件被配置为支持两种新的一致性状态:遍历器可读(W)和已修改的遍历器可访问(MW)。W一致性状态指示对应的一致性颗粒针对由硬件表遍历器(HTW)读取的目的而言是一致的,但是针对其他目的而言不被认为是一致的。因此,硬件表遍历器(HTW)对具有W一致性状态的一致性颗粒的读取访问被许可,但是非HTW代理对一致性颗粒的所有写入操作和所有读取操作被禁止。MW一致性状态指示一致性颗粒的、仅对HTW可见的被缓存的副本(即,具有一致性状态W)可能存在于其他高速缓存中。此外,MW一致性状态指示,当一致性颗粒稍后从PE的本地高速缓存被驱逐时,持有对应的一致性颗粒的PE负责更新系统存储器。在一些实施例中,每个PE可以被配置为支持使用特殊页表条目(SP-PTE)字段存储指令以用于修改PTE的SP-PTE字段,并且向PE的本地高速缓存指示:对应的一致性颗粒应该转变为MW状态,并且向远程本地高速缓存指示:对应的一致性颗粒的副本应该更新它们的一致性状态。在这样的实施例中,MW一致性状态指示PE被允许执行SP-PTE字段存储指令以更新SP-PTE字段而无需做出附加的总线请求。
在一些实施例中,SP-PTE字段存储指令可以是定制存储指令,或者可以是定制比较-交换指令。一些实施例可以规定,SP-PTE字段存储指令是常规存储器存储指令,其针对与页表相关联的地址范围并且仅修改SP-PTE字段。在这样的实施例中,基于处理器的设备可以自动检测常规存储器存储指令并将其作为SP-PTE字段存储指令来处置,如本文所述。一些实施例还可以规定,每个PE还被配置为支持新的总线请求,包括:rd_e_w(独占读取,遍历器)总线请求,该请求指示SP-PTE字段正在被更新并且PE未持有对应的一致性颗粒;rd_x_w(针对任何的读取,遍历器)总线请求,其指示PE正在代表HTW执行读取,并且如果需要,则可以接受处于W一致性状态的对应的一致性颗粒的副本;和prex_w(提升为独占,遍历器)总线请求,其指示PE具有对应的一致性颗粒的共享副本并希望管理SP-PTE字段。
在另一个示例性实施例中,提供了一种基于处理器的设备。基于处理器的设备包括经由互连总线彼此可通信耦合的多个PE。每个PE包括执行流水线、系统存储器和本地高速缓存,该流水线包括解码阶段(stage)和执行阶段、该系统存储器包括页表。多个PE中的第一PE被配置为使用执行流水线的解码阶段来解码特殊页表条目(SP-PTE)字段存储指令。第一PE还被配置为使用执行流水线的执行阶段来执行SP-PTE字段存储指令,以修改PTE的SP-PTE字段,该PTE被缓存在第一PE的本地高速缓存中的与该PTE对应的一致性颗粒中。多个PE中的第二PE被配置为经由互连总线接收来自第一PE的针对一致性颗粒的总线请求。第二PE还被配置为将一致性颗粒的在第二PE的本地高速缓存中的副本的一致性状态更新为遍历器可读(W)的一致性状态,以指示该一致性颗粒的副本只能由第二PE的硬件表遍历器(HTW)读取。
在另一个示例性实施例中,提供了一种用于促进PTE维护的方法。该方法包括使用基于处理器的设备的多个PE的第一处理元件(PE)的执行流水线的解码阶段来解码特殊页表条目(SP-PTE)字段存储指令。该方法还包括执行SP-PTE字段存储指令以修改基于处理器的设备的系统存储器中的页表的PTE的SP-PTE字段,其中PTE被缓存在第一PE的本地高速缓存中的与PTE对应的一致性颗粒中。该方法还包括由多个PE中的第二PE经由互连总线接收来自第一PE的针对一致性颗粒的总线请求。该方法另外包括由第二PE将一致性颗粒的在第二PE的本地高速缓存中的副本的一致性状态更新为遍历器可读(W)的一致性状态,以指示一致性颗粒的副本只能由第二PE的硬件表遍历器(HTW)读取。
在另一个示例性实施例中,提供了一种非瞬态计算机可读介质。该计算机可读介质在其上存储有计算机可执行指令,该指令在由处理器执行时使处理器:对特殊页表条目(SP-PTE)字段存储指令进行解码。计算机可执行指令还使处理器:执行SP-PTE字段存储指令以修改系统存储器中的页表的PTE的SP-PTE字段,其中PTE被缓存在多个PE中的第一PE的本地高速缓存中的与该PTE对应的一致性颗粒中。计算机可执行指令还使处理器:由多个PE中的第二PE经由互连总线接收来自第一PE的针对一致性颗粒的总线请求。计算机可执行指令另外使处理器:由第二PE将一致性颗粒的在第二PE的本地高速缓存中的副本的一致性状态更新为遍历器可读(W)的一致性状态,以指示一致性颗粒的副本只能由第二PE的硬件表遍历器(HTW)读取。
在阅读以下结合附图对优选实施例的详细描述之后,本领域技术人员将了解本公开的范围并实现其附加实施例。
附图说明
被并入并形成本说明书一部分的附图图示了本公开的若干实施例,并且与描述一起用于解释本公开的原理。
图1是示例性基于处理器的设备的示意图,该设备包括被配置为促进页表条目(PTE)维护的多个处理元件(PE);
图2是图示了由图1的基于处理器的设备的第一PE应用的示例性逻辑的流程图,用于执行特殊PTE(SP-PTE)字段存储指令并更新目标一致性颗粒的一致性状态;
图3是图示了由图1的基于处理器的设备的第二PE应用的示例性逻辑的流程图,用于响应嗅探总线请求并更新目标一致性颗粒的共享副本的一致性状态;
图4是图示了由图1的基于处理器的设备的第二PE应用的示例性逻辑的流程图,用于由第二PE的硬件表遍历器(HTW)对目标一致性颗粒的共享副本执行读取操作;
图5是图示了响应于图1的基于处理器的设备的第一PE执行SP-PTE字段存储指令的针对一致性颗粒的一致性状态转变的图;
图6是图示了响应于图1的基于处理器的设备的第一PE执行常规存储器存储操作的针对一致性颗粒的一致性状态转变的图解;
图7是图示了响应于图1的基于处理器的设备的第二PE的HTW执行读取操作的针对一致性颗粒的本地副本的一致性状态转换的图解;
图8是图示了响应于图1的基于处理器的设备的第二PE的非HTW代理的读取操作的针对一致性颗粒的本地副本的一致性状态转变的图解;
图9A和图9B是图示了图1的基于处理器的设备的第一PE的示例性操作的流程图,用于使用遍历器可读(W)一致性状态以及在一些实施例中使用已修改的遍历器可访问(MW)一致性状态来促进PTE维护;
图10是图示了图1的基于处理器的设备的第一PE的进一步的示例性操作的流程图,用于发布总线命令以确定作为SP-PTE字段存储指令的目标的一致性颗粒的共享副本是否存在于其他PE中;
图11是图示了图1的基于处理器的设备的第二PE的进一步的示例性操作的流程图,用于允许对具有W的一致性状态的一致性颗粒的共享副本的HTW读取;
图12是图示了图1的基于处理器的设备的第二PE的进一步的示例性操作的流程图,用于禁止由非HTW代理进行的读取;以及
图13是被配置为促进PTE维护的示例性基于处理器的设备(诸如图1的基于处理器的设备)的框图。
具体实施方式
本文公开的示例性实施例包括促进基于处理器的设备中的页表条目(PTE)维护。在一个示例性实施例中,基于处理器的设备包括多个处理元件(PE),每个处理元件被配置为支持两种新的一致性状态:遍历器可读(W)和已修改的遍历器可访问(MW)。W一致性状态指示对应的一致性颗粒针对由硬件表遍历器(HTW)读取的目的而言是一致的,但是针对其他目的而言不被认为是一致的。因此,硬件表遍历器(HTW)对具有W一致性状态的一致性颗粒的读取访问被许可,但是非HTW代理对一致性颗粒的所有写入操作和所有读取操作被禁止。MW一致性状态指示一致性颗粒的、仅对HTW可见的被缓存的副本(即,具有一致性状态W)可能存在于其他高速缓存中。此外,MW一致性状态指示:当一致性颗粒稍后从PE的本地高速缓存中被驱逐时,持有对应的一致性颗粒的PE负责更新系统存储器。在一些实施例中,每个PE可以被配置为支持使用特殊页表条目(SP-PTE)字段存储指令以用于修改PTE的SP-PTE字段,并向PE的本地高速缓存指示:对应的一致性颗粒应该转变为MW状态,并且向远程本地高速缓存指示:对应的一致性颗粒的副本应该更新它们的一致性状态。在这样的实施例中,MW一致性状态指示PE被允许执行SP-PTE字段存储指令以更新SP-PTE字段而无需做出附加的总线请求。
在这方面,图1图示了示例性的基于处理器的设备100,其提供多个PE 102(0)-102(P)以用于并发处理可执行指令。PE 102(0)-102(P)中的每个PE可以包括具有一个或多个处理器核的中央处理单元(CPU),或者可以包括个体处理器核,该个体处理器核包括逻辑执行单元和相关联的高速缓存和功能单元。在图1的示例中,PE 102(0)-102(P)经由互连总线104可通信地耦合,处理器间通信(诸如作为非限制性示例的嗅探请求和嗅探响应)通过互连总线104进行通信。在一些实施例中,互连总线104可以包括为了清楚起见而未在图1中示出的附加的组成元件(例如,作为非限制性示例的总线控制器电路和/或仲裁电路)。PE 102(0)-102(P)还经由互连总线104可通信地耦合到系统存储器106和共享高速缓存108。
图1的系统存储器106存储包含PTE 112(0)-112(T)的页表110。PTE 112(0)-112(T)中的每个PTE表示虚拟存储器地址到系统存储器106中的物理存储器地址的映射,并且可以被用于虚拟到物理地址的转换。PTE 112(0)-112(T)包括仅由软件使用的对应的SP-PTE字段114(0)-114(T),并且作为非限制性示例,可以包括用于跟踪页面计数和/或页面年龄、管理页表更新等的位。应当理解,在一些实施例中,PTE 112(0)-112(T)可以包括图1中未示出的附加字段,并且还应当理解,根据一些实施例,页表110可以是包括多个页表的多级页表。图1的每个PE 102(0)-102(P)还包括对应的HTW 116(0)-116(P),其体现了用于搜索页表110以定位执行虚拟到物理地址转换所需的多个PTE 112(0)-112(T)中的PTE的逻辑。HTW 116(0)-116(P)包括对应的转换后备缓冲器(TLB)118(0)-118(P),用于高速缓存最近被访问的PTE 112(0)-112(T)。
图1的PE 102(0)-102(P)还包括对应的执行流水线120(0)-120(P),执行流水线120(0)-120(P)被配置为执行包括计算机可执行指令的对应指令流。在图1的示例中,执行流水线120(0)-120(P)分别包括用于取回用于执行的指令的取指阶段122(0)-122(P),用于将被取指的指令转换为用于指令执行的控制信号的解码阶段124(0)-124(P),以及用于实际地执行指令执行的执行阶段126(0)-126(P)。应当理解,PE 102(0)-102(P)的一些实施例可以包括比图1的示例中所图示的那些更少或更多的阶段。
图1的PE 102(0)-102(P)还包括对应的本地高速缓存128(0)-128(P),每个本地高速缓存128(0)-128(P)存储相应的多个一致性颗粒130(0)-130(C)、130’(0)-130’(C)(在图1中每个都被标为“COGRAN”)。一致性颗粒130(0)-130(C)、130’(0)-130’(C)表示针对其维护一致性的最小存储器块,并且也可以被称为“高速缓存行130(0)-130(C)、130’(0)-130’(C)。”如图1中所见,一致性颗粒130(0)、130’(0)各自具有对应的一致性状态132、132’(在图1中每个都被标为“CS”),用于指示相应的一致性颗粒130(0),130’(0)的一致性状态。尽管图1中未示出,但是应当理解,每个一致性颗粒130(0)-130(C)、130’(0)-130’(C)包括在功能性上与一致性状态132、132’对应的一致性状态。
一致性颗粒130(0)-130(C)、130’(0)-130’(C)被配置为持有先前被取指的数据的副本,包括例如与多个PTE 112(0)-112(T)中的PTE对应的一致性颗粒。因此,例如,如果在TLB 118(0)中未找到HTW 116(0)执行虚拟到物理地址转换所需的PTE,则HTW 116(0)可以接下来尝试在从系统存储器106取指PTE之前,从本地高速缓存128(0)的一致性颗粒130(0)-130(C)中的一个一致性颗粒取回PTE。在一些实施例中,本地高速缓存128(0)-128(P)和共享高速缓存108可以表示高速缓存层次结构中的不同级别。例如,这样的实施例中的本地高速缓存128(0)-128(P)可以表示2级(L2)高速缓存,而共享高速缓存108可以表示3级(L3)高速缓存。
图1的基于处理器的设备100可以涵盖以下中的任何一种:已知的数字逻辑元件、半导体电路、处理核心和/或存储器结构等,以及其组合。本文描述的实施例不限于任何特定的元件布置,并且所公开的技术可以很容易扩展到半导体插座或封装上的各种结构和布局。应当理解,基于处理器的设备100的一些实施例可以包括除了图1中所图示的那些元件之外的元件。例如,PE 102(0)-102(P)还可以包括用于本地高速缓存128(0)-128(P)中的每个本地高速缓存的高速缓存控制器电路,和/或附加的存储器设备、高速缓存和/或控制器电路。
如上面所指出的,只要HTW 116(0)-116(P)中的一个HTW所需的特定PTE 112(0)-112(T)的本地副本存在于对应的TLB 118(0)-118(P)中,HTW 116(0)-116(P)就会忽略对PTE 112(0)-112(T)的SP-PTE字段114(0)-114(T)的修改,并且PTE 112(0)-112(T)根据需要继续被访问。但是,如果TLB 118(0)-118(P)太小而无法持有PTE的工作集,则可能会出现性能问题。虽然对SP-PTE字段114(0)-114(T)的更新对HTW 116(0)-116(P)是透明的,但是当软件修改SP-PTE字段114(0)-114(T)时,在本地高速缓存128(0)-128(P)中被持有的PTE可能会从本地高速缓存128(0)-128(P)被无效。因此,如果TLB 118(0)-118(P)中的TLB中不存在虚拟到物理地址转换所需的PTE 112(0)-112(T)中的一个PTE,并且由于对SP-PTE字段114(0)-114(T)的修改,对应的本地高速缓存128(0)-128(P)已经使其PTE 112(0)-112(T)的副本无效,则对应的HTW 116(0)-116(P)必须执行存储器读取操作以从系统存储器106获取PTE 112(0)-112(T)的副本。在包括多个PE 102(0)-102(P)的基于处理器的设备中,这种性能问题可能会加剧,这些PE 102(0)-102(P)都试图访问其本地高速缓存128(0)-128(P)内包含PTE 112(0)-112(T)的相同一致性颗粒(例如,一致性颗粒130(0)和130’(0))。
在这方面,PE 102(0)-102(P)各自被配置为支持两种新的一致性状态:遍历器可读(W)和已修改的遍历器可访问(MW)。W一致性状态指示HTW 116(0)-116对对应的一致性颗粒(例如,一致性颗粒130(0)-130(C)、130’(0)-130’(C))的读取访问(P)被许可,但是非HTW代理(诸如PE 102(P)的非HTW代理134)对一致性颗粒的所有写入操作和所有读取操作被禁止。MW一致性状态指示一致性颗粒的、仅对HTW 116(0)-116(P)可见的被缓存的副本(即,具有W的一致性状态)存在于其他本地高速缓存128(0)-128中(P)。此外,MW一致性状态指示,当一致性颗粒稍后从PE的本地高速缓存中被驱逐时,持有对应的一致性颗粒的PE负责更新系统存储器。每个PE 102(0)-102(P)还被配置为支持使用SP-PTE字段存储指令136以用于修改PTE 112(0)-112(T)的SP-PTE字段114(0)-114(T),并向对应的本地高速缓存128(0)-128(P)指示:对应的一致性颗粒(例如,对应的一致性颗粒130(0)-130(C)、130’(0)-130’(C)中的一个一致性颗粒)应该转变为MW一致性状态,并且向远程本地高速缓存128(0)-128(P)指示:对应的一致性颗粒130(0)-130(C)、130’(0)-130’(C)的副本应该更新它们的一致性状态(例如,一致性状态132、132’)。在一些实施例中,SP-PTE字段存储指令136可以是定制存储指令或定制比较交换指令,或者可以是针对与页表110相关联的地址范围、并且仅修改SP-PTE字段(诸如SP-PTE字段114(0)-114(T))的常规存储器存储指令。在后一种情况下,对应的PE 102(0)-102(P)的硬件可以确定常规存储器存储指令仅修改页表110的PTE的SP-PTE字段,并且作为响应可以处理常规存储器存储指令,如本文所述。
在示例性操作中,PE 102(0)(“第一PE 102(0)”)的执行流水线120(0)的解码阶段124(0)解码SP-PTE字段存储指令136,SP-PTE字段存储指令136然后由执行流水线120(0)的执行阶段126(0)执行以修改PTE的SP-PTE字段(例如,PTE 112(0)的SP-PTE字段114(0))。在一些实施例中,第一PE 102(0)将与PTE 112(0)对应的一致性颗粒的一致性状态(例如,本地高速缓存128(0)中的一致性颗粒130(0)的一致性状态132)更新为一致性状态MW。这指示一致性颗粒130(0)的、仅对HTW 116(0)-116(P)可见的被缓存的副本存在于本地高速缓存128(0)-128(P)中的一个或多个本地高速缓存中。
在一些实施例中,响应于第一PE 102(0)确定本地高速缓存128(0)中的与PTE 112(0)对应的一致性颗粒130(0)由其他PE 102(0)-102(P)的一个或多个本地高速缓存128(0)-128(P)(例如,PE 102(P)的本地高速缓存128(P))共享,一致性状态132可以被更新为MW。例如,如果一致性颗粒130(0)的一致性状态132处于共享已修改(O)、最近共享(R)或共享清洁(S)中的一致性状态,则PE 102(0)可以经由互连总线104传输prex_w(提升为独占,遍历器)总线请求138以指示第一PE 102(0)具有一致性颗粒130(0)的共享副本并且寻求(seek)管理PTE 112(0)的SP-PTE字段114(0)。然后,第一PE 102(0)可以基于对prex_w总线请求138的响应140(“PREX_W RESP”)来确定一致性颗粒130(0)是否由另一个本地高速缓存128(0)-116(P)共享。类似地,如果一致性颗粒130(0)的一致性状态132处于遍历器可读(W)或无效(I)的一致性状态,则PE 102(0)可以经由互连总线104传输rd_e_w(独占读取,遍历器)总线请求142,以指示第一PE 102(0)正在更新PTE 112(0)的SP-PTE字段114(0)并且未持有一致性颗粒130(0)的一致性副本。然后,第一PE 102(0)可以基于对rd_e_w总线请求142的响应144(“RD_E_W RESP”)来确定一致性颗粒130(0)是否由另一个本地高速缓存128(0)-128(P)共享。
在一些实施例中,一致性颗粒130(0)-130(C)、130’(0)-130’(C)还包括HTW安装指示符,诸如HTW安装指示符146和146’(在图1中被标为“HTWII”)。HTW安装指示符146、146’指示对应的一致性颗粒130(0)、130’(0)是否是作为HTW请求的结果而被安装在相应的本地高速缓存128(0)-128(P)中的。在这样的实施例中,第一PE 102(0)可以响应于确定HTW安装指示符146被设置并且SP-PTE字段存储指令136是仅修改PTE 112(0)的SP-PTE字段114(0)的常规存储器存储指令而更新一致性颗粒130(0)的一致性状态132。
第二PE 102(P)在接收到来自第一PE 102(0)的总线请求(例如,prex_w总线请求138或rd_e_w总线请求142)后,可以传输响应(例如,响应140或者响应144),该响应指示一致性颗粒的副本(即,一致性颗粒130’(0)或“副本130’(0)”)被缓存在本地高速缓存128(P)中。第二PE 102(P)然后将副本130’(0)的一致性状态132’更新为一致性状态W以指示副本130’(0)只能由第二PE 102(P)的HTW 116(P)读取。
随后,第二PE 102(P)可以确定HTW 116(P)正在寻求读取副本130’(0),并且还可以确定副本130’(0)具有一致性状态W。然后第二PE 102(P)可以允许HTW 116(P)读取副本130’(0)。然而,如果第二PE 102(P)确定非HTW代理正在寻求读取副本130’(0)(或者任何代理(HTW或非HTW)正在寻求写入副本130’(0))并且副本130’(0)具有一致性状态W,则第二PE102(P)将使本地高速缓存128(P)中的副本130’(0)无效,并将读取副本的请求130’(0)处理为本地高速缓存128(P)上的高速缓存未命中。
图2示出了根据一些实施例的流程图200,该流程图图示了由诸如图1的基于处理器的设备100的第一PE 102(0)的PE应用的示例性逻辑,用于执行SP-PTE字段存储指令以及更新一致性颗粒的一致性状态。如图2中所见,PE执行对一致性颗粒130(0)的SP-PTE字段存储指令(框202)。PE的本地高速缓存然后确定一致性颗粒的一致性状态是否是独占清洁(E)或已修改(M)(框204)。如果是,则PE可以断定无一致性颗粒的共享副本存在(框206)。PE还可以断定不需要总线请求(框208)。因此,一致性颗粒转变为下一个一致性状态MW或M(框210)。一致性颗粒是转变为一致性状态MW还是M可以取决于基于处理器的设备100的特定实现。例如,在一些实施例中,基于处理器的设备100可以选择将一致性颗粒的一致性状态转变为M,以使得对一致性颗粒的非SP-PTE字段的任何后续修改将不需要总线请求来将一致性状态改变回M以完成对非SP-PTE字段的写入。其他一些实施例可以选择总是转变为一致性状态MW。
如果PE的本地高速缓存在决策框204处确定一致性颗粒的一致性状态不是E或M,则本地高速缓存接下来确定一致性颗粒的一致性状态是否是MW(框212)。如果是,则PE可以断定没有具有一致性状态O、R或S的一致性颗粒的副本存在(框214)。PE还可以断定不需要总线请求(框216)。因此,一致性颗粒转变为下一个一致性状态MW(框218)。
如果在决策框212处确定一致性颗粒的一致性状态不是MW,则本地高速缓存确定一致性颗粒的一致性状态是否是O、R或S(框220)。如果是,则PE断定一致性颗粒的一致性状态应被升级到MW(框222)。因此,PE向任何其他PE发送prex_w总线请求以指示第一PE具有一致性颗粒的共享副本并且寻求管理对HTW不可见的SP-PTE字段(框224)。一旦响应被接收到,PE就确定该响应是否指示一致性颗粒是共享的(框226)。如果是,则一致性颗粒转变为一致性状态MW(框228)。否则,一致性颗粒转变为一致性状态M(框230)。
如果本地高速缓存在决策框220处确定一致性颗粒的一致性状态不是O、R或S,则本地高速缓存接下来确定一致性状态是否是W或I(框232)。如果是,则PE可以断定必须获取一致性颗粒的具有一致性状态MW的副本(框234)。因此,PE向任何其他PE发送rd_e_w总线请求,以指示PE正在更新对HTW不可见的SP-PTE字段并且未持有一致性颗粒的一致性副本(框236)。然后处理如上所述在框226处恢复。注意,本地高速缓存在决策框232处确定一致性颗粒的一致性状态不是W或I的场景是在经由的有效一致性状态是M、MW、E、O、R、S、W和I的实施例中绝不应该发生的非法场景(框238)。注意,一些实施例可以包括与本文描述的那些一致性状态不同、更多或更少的一致性状态。
为了图示由诸如图1的基于处理器的设备100的第二PE 102(P)的PE应用的示例性逻辑,图3提供了流程图300,该示例性逻辑用于响应总线请求以及更新SP-PTE字段存储指令已经在其上操作的一致性颗粒的共享副本的一致性状态。在一些实施例中,PE接收针对一致性颗粒的rd_e_w总线请求(框302)。PE的本地高速缓存然后确定一致性颗粒的一致性状态是否是M或MW(框304)。如果是,则PE将更新存储器的责任转交给新的主控(master)(框306)。PE在其嗅探响应中指示:一致性颗粒被共享(框308)。PE还将一致性颗粒的一致性状态改变为W(框310)。如果本地高速缓存在决策框304处确定一致性颗粒的一致性状态不是M或MW,则本地高速缓存接下来确定一致性颗粒的一致性状态是否是E(框312)。如果是,则处理在框308处继续,如上面所讨论的。如果一致性状态不是E,则处理在框314处恢复。
本地高速缓存接下来确定一致性颗粒的一致性状态是否是R、S或W(框314)。如果是,则处理在框308处继续,如上面所讨论的。如果本地高速缓存在决策框314处确定一致性状态不是R、S或W,则本地高速缓存确定一致性颗粒的一致性状态是否是O(框316)。如果是,则PE将更新存储器的职责转交给新的主控(框318)。处理然后在框308处继续,如上面所讨论的。如果本地高速缓存在决策框316处确定一致性颗粒的一致性状态不是O,则本地高速缓存接下来确定一致性颗粒的一致性状态是否是I(框320)。如果是,则处理以常规方式继续(框322)。注意,本地高速缓存在决策框320处确定一致性颗粒的一致性状态不是I的场景是在仅有的有效一致性状态是M、MW、E、O、R、S、W和I的实施例中绝不应该发生的非法场景(框324)。注意,一些实施例可以包括与本文描述的那些一致性状态不同、更多或更少的一致性状态。
在一些实施例中,PE可以接收针对一致性颗粒的prex_w总线请求(框326)。如果是,则处理在框314处继续,如上面所讨论的。
图4示出了流程图400,其图示了由诸如图1的基于处理器的设备100的第二PE 102(P)的PE应用的示例性逻辑,该示例性逻辑用于由HTW对一致性颗粒的共享副本执行读取操作。如图4中所见,PE执行针对一致性颗粒的HTW存储器读取访问操作(框402)。PE的本地高速缓存然后确定一致性颗粒的一致性状态是否是E、M、MW、O、R、S或W(框404)。如果是,则PE利用来自本地高速缓存的数据来满足HTW读取(框406)。也没有对一致性颗粒的一致性状态的改变(框408)。
如果本地高速缓存在决策框404处确定一致性颗粒的一致性状态不是E、M、MW、O、R、S或W,则本地高速缓存接下来确定一致性颗粒的一致性状态是否是I(框410)。如果是,则PE发送rd_x_w(针对任何的读取,遍历器)总线请求,其指示PE正在代表HTW执行读取操作,并且如果需要,则可以接受处于W一致性状态的一致性颗粒(框412)。基于对rd_x_w总线请求的响应,PE确定一致性颗粒是否将被获取为具有一致性状态W(框414)。如果是,则PE将一致性颗粒的一致性状态设置为W(框416)。如果不是,则PE遵循常规规则以将一致性颗粒的一致性状态设置为E、M、O、R或S中的一个一致性状态(框418)。注意,本地高速缓存在决策框410处确定一致性颗粒的一致性状态不是I的场景是绝不应该发生的非法场景(框420)。
图5是图示了响应于图1的基于处理器的设备100的第一PE 102(0)执行SP-PTE字段存储指令136的针对一致性颗粒(诸如一致性颗粒130(0))的示例性一致性状态转变的图解500。如图5中所见,如果一致性颗粒130(0)的一致性状态132处于初始状态MW,则不发送总线请求,并且一致性颗粒130(0)的一致性状态132转变为MW,如箭头502所指示。如果一致性颗粒130(0)的一致性状态132处于初始状态M或E,则不发送总线请求,并且一致性颗粒130(0)的一致性状态132转变为MW或M,如箭头504、505、506和507所指示。如上文关于图2所讨论的,一致性颗粒130(0)是转变为一致性状态MW还是M可以取决于基于处理器的设备100的具体实现。
如果一致性颗粒130(0)的一致性状态132处于初始状态O、R或S,则第一PE 102(0)向多个PE 102(0)-102(P)中的其他PE发送prex_w总线请求以指示第一PE 102(0)具有一致性颗粒130(0)的共享副本并且寻求管理对HTW 116(0)-116(P)不可见的SP-PTE字段。如果对prex_w总线请求的响应指示一致性颗粒130(0)的共享副本由多个PE 102(0)-102(P)中的其他PE持有,则一致性状态132转变为MW,如箭头508、510和512所指示。否则,一致性状态132转变为M,如箭头514、516和518所指示。
最后,如果一致性颗粒130(0)的一致性状态132处于初始状态W或I,则第一PE 102(0)向多个PE 102(0)-102(P)中的其他PE发送rd_e_w总线请求以指示第一PE 102(0)正在更新对HTW 116(0)-116(P)不可见的SP-PTE字段并且未持有一致性颗粒130(0)。如果对rd_e_w总线请求的响应指示一致性颗粒130(0)的共享副本由多个PE 102(0)-102(P)中的其他PE持有,则一致性状态132转变为MW,如箭头520和522所指示。否则,一致性状态132转变为M,如箭头524和526所指示。
为了图示响应于图1的基于处理器的设备100的第一PE 102(0)执行常规存储器存储操作的针对一致性颗粒(诸如图1的一致性颗粒130(0))的一致性状态转变,图6提供了图解600。如果一致性颗粒130(0)的一致性状态132处于初始状态MW,则第一PE 102(0)向多个PE 102(0)-102(P)中的其他PE发送prex(提升为独占)总线请求以指示第一PE 102(0)具有一致性颗粒130(0)的共享副本。一致性状态132然后转变为M,如箭头602所指示。如果一致性颗粒130(0)的一致性状态132处于初始状态M或E,则不发送总线请求,并且一致性状态132转变为M,如箭头604和606所指示。
如果一致性颗粒130(0)的一致性状态132处于初始状态O、R或S,则第一PE 102(0)向多个PE中的其他PE发送prex总线请求102(0)-102(P)以指示第一PE 102(0)具有一致性颗粒130(0)的共享副本。一致性状态132然后转变为M,如箭头608、610和612所指示。最后,如果一致性颗粒130(0)的一致性状态132处于初始状态W或I,则第一PE 102(0)发送rd_e(独占读取)总线请求以指示第一PE 102(0)未持有一致性颗粒130(0)的一致性副本。一致性状态132然后转变为M,如箭头614和616所指示。
图7示出了图示响应于图1的基于处理器的设备100的第一PE 102(0)的HTW 116(0)执行读取操作的针对一致性颗粒(诸如图1的一致性颗粒130(0))的一致性状态转变的图解700。在图7的示例中,如果一致性颗粒130(0)的一致性状态132处于初始状态MW、M、E、O、R、S或W,则不发送总线请求并且一致性状态132保持相同,如箭头702、704、706、708、710、712和714所指示。如果一致性颗粒130(0)的一致性状态132处于初始状态I,则第一PE 102(0)发送rd_x_w总线请求,并且一致性状态132适当地转变为M、E、O、R、S或W,如箭头716所指示。
图8提供了图示响应于非HTW代理(诸如图1的基于处理器的设备的第二PE 102(P)的非HTW代理134)的读取操作的针对一致性颗粒的一致性状态转变的图解800。如图8中所见,如果一致性颗粒130’(0)的一致性状态132’处于初始状态MW、M、E、O、R或S,则不发送总线请求并且一致性状态132’保持不变,如箭头802、804、806、808、810和812所指示。如果一致性颗粒130’(0)的一致性状态132’处于初始状态W或I,则发送rd_x总线请求,并且一致性状态132’适当地转变为M、E、O、R或S,如箭头814和816所指示。
为了图示图1的基于处理器的设备100的第一PE 102(0)的用于促进使用MW一致性状态的PTE维护的示例性操作,图9A和图9B提供了流程图900。为了清楚起见,在描述图9A和图9B时参考了图1的元件。在一些实施例中,图9A中的操作开始于多个PE 102(0)-102(P)中的第一PE 102(0)将与PTE 112(0)对应的一致性颗粒130(0)安装到第一PE 102(0)的本地高速缓存128(0)(框902)。第一PE 102(0)然后可以设置用于一致性颗粒130(0)的HTW安装指示符146以指示一致性颗粒130(0)是否作为HTW请求的结果而被安装(框904)。基于处理器的设备100的多个PE 102(0)-102(P)中的第一PE 102(0)的执行流水线120(0)的解码阶段124(0)接下来解码SP-PTE字段存储指令136(框906)。第一PE 102(0)然后使用执行流水线120(0)的执行阶段126(0)来执行SP-PTE字段存储指令136以修改基于处理器的设备100的系统存储器106中的页表110的PTE 112(0)的SP-PTE字段114(0),其中PTE 112(0)被缓存在与第一PE 102(0)的本地高速缓存128(0)中的PTE 112(0)对应的一致性颗粒130(0)中(框908)。
第二PE 102(P)经由互连总线104接收来自第一PE 102(0)的针对一致性颗粒130(0)的总线请求(作为非限制性示例,诸如prex_w总线请求138或rd_e_w总线请求142)(框910)。在一些实施例中,第二PE 102(P)经由互连总线104向第一PE 102(0)传输对总线请求的响应(例如,作为非限制性示例,响应140或响应144)以指示一致性颗粒130(0)的副本130’(0)被缓存在第二PE 102(P)的本地高速缓存128(P)中(框912)。然后处理在图9B的框914处继续。
现在参考图9B,第二PE 102(P)接下来将一致性颗粒130(0)的在第二PE 102(P)的本地高速缓存128(P)中的副本130’(0)的一致性状态132’更新为一致性状态W,以指示一致性颗粒130(0)的副本130’(0)只能由第二PE 102(P)的HTW(诸如HTW 116(P))读取(框914)。在一些实施例中,第一PE 102(0)可以确定第一PE 102(0)的本地高速缓存128(0)中的与PTE 112(0)对应的一致性颗粒130(0)是否由多个PE 102(0)-102(P)中的一个或多个其他PE 102(1)-102(P)的一个或多个本地高速缓存128(1)-128(P)共享(框916)。如果一致性颗粒130(0)不由一个或多个本地高速缓存128(1)-128(P)共享,则处理以常规方式继续(框918)。然而,如果第一PE 102(0)在决策框910处确定一致性颗粒130(0)由一个或多个本地高速缓存128(1)-128(P)共享(或第一PE 102(0)不执行决策框916的操作的实施例),则第一PE 102(0)将第一PE(102(0))的本地高速缓存128(0)中的与PTE 112(0)对应的一致性颗粒130(0)的一致性状态132更新为一致性状态MW,以指示仅对HTW可见的一致性颗粒130(0)的被缓存的副本可能存在于多个PE 102(0)-102(P)中的对应的一个或多个其他PE 102(1)-102(P)的一个或多个本地高速缓存128(1)-128(P)中(框920)。在一些实施例中,响应于确定针对一致性颗粒130(0)的HTW安装指示符146被设置并且SP-PTE字段存储指令136是仅修改PTE 112(0)的SP-PTE字段114(0)的常规存储器存储指令,用于将一致性状态132更新为一致性状态MW的框914的操作被执行(框922)。
图10提供根据一些实施例的流程图1000,其图示了图1的基于处理器的设备100的第一PE 102(0)的进一步的示例性操作,该示例性操作用于发送总线命令以确定作为SP-PTE字段存储指令136的目标的一致性颗粒130(0)的共享副本是否存在于其他PE 102(1)-102(P)中(并且因此,其他PE 102(1)-102(P)需要将它们的共享副本设置为一致性状态W)。为清楚起见,在描述图10时参考了图1的元件。在图10中,操作开始于第一PE 102(0)确定第一PE 102(0)的本地高速缓存128(0)中的与PTE 112(0)对应的一致性颗粒130(0)的一致性状态132(框1002)。如果第一PE 102(0)在决策框1002处确定第一PE 102(0)的本地高速缓存128(0)中的与PTE 112(0)对应的一致性颗粒130(0)处于一致性状态O、R或S,则第一PE102(0)经由基于处理器的设备100的互连总线104传输prex_w总线请求138,该prex_w总线请求138指示第一PE 102(0)具有一致性颗粒130(0)的共享副本130’(0)并寻求管理PTE112(0)的SP-PTE字段114(0)(框1004)。然而,如果第一PE 102(0)在决策框1002处确定第一PE 102(0)的本地高速缓存128(0)中的与PTE 112(0)对应的一致性颗粒130(0)处于一致性状态W或I,则第一PE 102(0)传输rd_e_w总线请求142,该rd_e_w总线请求142指示第一PE102(0)正在更新PTE 112(0)的SP-PTE字段114(0)并且未持有一致性颗粒130(0)的一致性副本130’(0)(框1006)。在由框1004和1006表示的场景中,如上文关于图9A的框910所描述的,由第二PE 102(P)接收的总线请求可以分别包括prex_w总线请求128或rd_e_w总线请求142。
图11提供根据一些实施例的流程图1100,其图示了图1的基于处理器的设备100的第二PE 102(P)的进一步的示例性操作,该示例性操作用于允许对一致性颗粒130’(0)的具有一致性状态W的共享副本130’(0)的HTW读取。为清楚起见,在描述图11时参考了图1的元件。在图11中,操作开始于第二PE 102(P)的本地高速缓存128(P)确定第二PE 102(P)的HTW116(P)寻求读取一致性颗粒130(0)的副本130’(0)(框1102)。第二PE 102(P)的本地高速缓存128(P)接下来确定一致性颗粒130(0)的副本130’(0)具有一致性状态W(框1104)。响应于确定一致性颗粒130(0)的副本130’(0)具有一致性状态W,第二PE 102(P)的本地高速缓存128(P)允许HTW 116(P)读取一致性颗粒130(0)的副本130’(0)(框1106)。
为了图示图1的基于处理器的设备的第二PE的进一步的示例性操作,图12提供了流程图1200,该示例性操作用于禁止非HTW代理对一致性颗粒130(0)的具有一致性状态W的共享副本130’(0)的读取。为了清楚起见,在描述图12时参考了图1的元件。图12中的操作开始于第二PE 102(P)的本地高速缓存128(P)确定第二PE 102(P)的非HTW代理134寻求读取一致性颗粒130(0)的副本130’(0)(框1202)。第二PE 102(P)的本地高速缓存128(P)确定一致性颗粒130(0)的副本130’(0)具有一致性状态W(框1204)。响应于确定一致性颗粒130(0)的副本130’(0)具有一致性状态W,本地高速缓存128(P)执行一系列操作(框1206)。本地高速缓存128(P)使一致性颗粒130(0)的副本130’(0)无效(框1208)。本地高速缓存128(P)然后将读取一致性颗粒130(0)的副本130’(0)的请求处理为高速缓存未命中(框1210)。应当理解,在一些实施例中,本地高速缓存128(P)还禁止对一致性颗粒130(0)的具有一致性状态W的副本130’(0)的所有存储器存储操作。
图13是提供促进的PTE维护的示例性基于处理器的设备(诸如图1的基于处理器的设备100)1300的框图。基于处理器的设备1300可以是包括在诸如印刷电路板(PCB)的电子板卡、服务器、个人计算机、台式计算机、膝上型计算机、个人数字助理(PDA)、计算板、移动设备或任何其他设备中,并且可以表示例如服务器或用户的计算机中的一个或多个电路。在该示例中,基于处理器的设备1300包括处理器1302。处理器1302表示一个或多个通用处理电路,诸如微处理器、中央处理单元等,并且可以对应于图1的PE 102(0)-102(P)。处理器1302被配置为执行指令中的处理逻辑,以用于执行本文讨论的操作和步骤。在该示例中,处理器1302包括用于指令的临时快速访问存储器存储的指令高速缓存1304和指令处理电路1310。通过系统总线1306从诸如从系统存储器1308的存储器被取指或预取指的指令被存储在指令高速缓存1304中。指令处理电路1310被配置为处理被取指到指令高速缓存1304中的指令并处理指令以供执行。
处理器1302和系统存储器1308耦合到系统总线1306(对应于图1的互连总线104)并且可以互连被包括在基于处理器的设备1300中的外围设备。众所周知,处理器1302通过在系统总线1306上交换地址、控制和数据信息来与这些其他设备通信。例如,处理器1302可以将总线事务请求传送给作为外围设备示例的系统存储器1308中的存储器控制器1312。尽管图13中未图示,但是可以提供多个系统总线1306,其中每个系统总线构成不同的结构。在该示例中,存储器控制器1312被配置为向系统存储器1308中的存储器阵列1314提供存储器访问请求。存储器阵列1314包括用于存储数据的存储位单元阵列。作为非限制性示例,系统存储器1308可以是只读存储器(ROM)、闪存、动态随机存取存储器(DRAM),诸如同步DRAM(SDRAM)等,以及静态存储器(例如,闪存、静态随机存取存储器(SRAM)等)。
其他设备可以连接到系统总线1306。如图13中所图示,例如,这些设备可以包括系统存储器1308、一个或多个输入设备1316、一个或多个输出设备1318、调制解调器1324和一个或多个显示控制器1320。(多个)输入设备1316可以包括任何类型的输入设备,包括但不限于输入键、开关、语音处理器等。(多个)输出设备1318可以包括任何类型的输出设备,包括但不限于音频、视频、其他视觉指示器等。调制解调器1324可以是被配置为允许去往和来自网络1326的数据交换的任何设备。网络1326可以是任何类型的网络,包括但不限于有线或无线网络、专用或公共网络、局域网(LAN)、无线局域网(WLAN)、广域网(WAN)、BLUETOOTHTM网络和互联网。调制解调器1324可以被配置为支持所需的任何类型的通信协议。处理器1302还可以被配置为通过系统总线1306访问(多个)显示控制器1320以控制被发送给一个或多个显示器1322的信息。(多个)显示器1322可以包括任何类型的显示器,包括但不限于阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器等。
图13中的基于处理器的设备1300可以包括一组指令1328,该一组指令1328可以利用基于到达的显式消费者命名模型而被编码,以由处理器1302针对根据指令所期望的任何应用来执行。指令1328可以被存储在系统存储器1308、处理器1302和/或指令高速缓存1304中,作为非瞬态计算机可读介质1330的示例。指令1328在它们的执行期间也可以完全或至少部分地驻留在系统存储器储器1308内和/或在处理器1302内。指令1328还可以经由调制解调器1324在网络1326上被传输或被接收,使得网络1326包括计算机可读介质1330。
虽然计算机可读介质1330在示例性实施例中被示为单个介质,但是术语“计算机可读介质”应当被理解为包括存储一组或多组指令1328的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。术语“计算机可读介质”还应当被理解为包括能够存储、编码或携带一组指令以供处理设备执行并且使处理设备执行本文公开的实施例的方法中的任何一种或多种方法的任何介质。因此,术语“计算机可读介质”应当被理解为包括但不限于固态存储器、光介质和磁介质。
本文公开的实施例包括各种步骤。本文公开的实施例的步骤可以由硬件组件形成,或者可以以来机器可执行指令来体现,机器可执行指令可以被用来使编程有指令的通用或专用处理器执行这些步骤。备选地,可以通过硬件和软件的组合来执行这些步骤。
本文公开的实施例可以作为计算机程序产品或软件而被提供,计算机程序产品或软件可以包括其上存储有指令的机器可读介质(或计算机可读介质),指令可以被用来对计算机系统(或其他电子设备)进行编程以执行根据本文公开的实施例的过程。机器可读介质包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制。例如,机器可读介质包括:机器可读存储介质(例如,ROM、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、闪存设备等)等等。
除非另有明确说明并且从前面的讨论中明显,否则应当了解,在整个描述中,利用诸如“处理”、“计算”、“确定”、“显示”等术语的讨论是指计算机系统或类似电子计算设备的动作和过程,该动作和过程操纵被表示为计算机系统的寄存器内的物理(电子)量的数据和存储器并将其变换为类似地表示为计算机系统存储器或寄存器或其他此类信息存储、传输或显示设备内的物理量的其他数据。
本文提出的算法和显示与任何特定的计算机或其他装置没有内在关联。各种系统可以与根据本文的教导的程序一起使用,或者可以证明构造更专业的设备来执行所需的方法步骤是方便的。各种这样的系统所需的结构将从上面的描述中显现。此外,本文描述的实施例没有参考任何特定的编程语言来描述。应当了解,可以使用多种编程语言来实现本文描述的实施例的教导。
本领域技术人员将进一步了解,结合本文公开的实施例描述的各种说明性逻辑块、模块、电路和算法可以被实现为电子硬件、被存储在存储器中或另一计算机可读的指令介质中并由处理器或其他处理设备、或者两者的组合来执行。作为示例,本文描述的分布式天线系统的组件可以被用于任何电路、硬件组件、集成电路(IC)或IC芯片中。本文公开的存储器可以是任何类型和大小的存储器,并且可以被配置为存储所需的任何类型的信息。为了清楚地说明这种可互换性,各种说明性组件、块、模块、电路和步骤已经在上面大体上根据它们的功能性进行了描述。如何实现这种功能性取决于特定应用、设计选择和/或施加在整个系统上的设计约束。熟练的技术人员可以针对每个特定应用而以不同的方式实现所描述的功能性,但是这样的实现决策不应被解释为导致偏离本实施例的范围。
结合本文公开的实施例所描述的各种说明性逻辑块、模块和电路可以用被设计来执行本文所述的功能的处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件、分立门或晶体管逻辑、分立硬件组件或其任何组合来实现或执行。此外,控制器可以是处理器。处理器可以是微处理器,但在备选方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可以被实现为计算设备的组合(例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器与DSP核结合,或任何其他这样的配置)。
本文公开的实施例可以以硬件和指令来体现,指令被存储在硬件中并且可以驻留在例如RAM、闪存、ROM、电可编程ROM(EPROM)、电可擦可编程ROM(EEPROM)、寄存器、硬盘、可移动磁盘、CD-ROM或本领域已知的任何其他形式的计算机可读介质中。示例性存储介质耦合到处理器,以使得处理器可以从存储介质读取信息和将信息写入到存储介质。在备选方案中,存储介质可以集成到处理器中。处理器和存储介质可以驻留在ASIC中。ASIC可以驻留在远程站中。在备选方案中,处理器和存储介质可以作为分立组件而驻留在远程站、基站或服务器中。
还应注意,在本文中的任何示例性实施例中描述的操作步骤被描述以提供示例和讨论。所描述的操作可以以除了所图示的顺序之外的许多不同顺序来执行。此外,在单个操作步骤中描述的操作实际上可以在多个不同步骤中执行。此外,可以组合示例性实施例中讨论的一个或多个操作步骤。本领域技术人员还将理解,可以使用多种技术和科技中的任何一种来表示信息和信号。例如,在以上整个描述中可以作为参考的数据、指令、命令、信息、信号、位、符号和芯片可以由电压、电流、电磁波、磁场或粒子、光场或粒子或其任意组合来表示。
除非另有明确说明,否则本文所阐述的任何方法绝不旨在被解释为要求其步骤以特定顺序来执行。因此,如果方法权利要求实际上并未陈述其步骤所遵循的顺序,或者在权利要求或描述中没有另外具体陈述这些步骤将被限制为特定顺序,则绝不意味着推断任何特定的顺序。
对本领域技术人员明显的是,在不背离本发明的精神或范围的情况下可以进行各种修改和变型。由于本领域技术人员可以想到结合本发明的精神和实质的所公开的实施例的修改、组合、子组合和变型,因此本发明应被解释为包括在所附权利要求及其等效体的范围内的所有内容。
Claims (15)
1.一种基于处理器的设备,包括经由互连总线彼此通信耦合的多个处理元件(PE),每个PE包括:
执行流水线,包括解码阶段和执行阶段;
系统存储器,包括页表;以及
本地高速缓存;
所述多个PE中的第一PE被配置为:
使用所述执行流水线的所述解码阶段来解码特殊页表条目(SP-PTE)字段存储指令;以及
使用所述执行流水线的所述执行阶段来执行所述SP-PTE字段存储指令,以修改PTE的SP-PTE字段,所述PTE被缓存在所述第一PE的所述本地高速缓存中的与所述PTE对应的一致性颗粒中;以及
所述多个PE中的第二PE被配置为:
经由所述互连总线接收来自所述第一PE的针对所述一致性颗粒的总线请求;以及
将所述一致性课题的在所述第二PE的所述本地高速缓存中的副本的一致性状态更新为遍历器可读(W)的一致性状态,以指示所述一致性颗粒的所述副本只能由所述第二PE的硬件表遍历器(HTW)读取。
2.根据权利要求1所述的基于处理器的设备,其中所述多个PE中的所述第二PE还被配置为:
由所述第二PE的所述本地高速缓存确定所述第二PE的所述HTW寻求读取所述一致性颗粒的所述副本;
由所述第二PE的所述本地高速缓存确定所述一致性颗粒的所述副本具有一致性状态W;以及
响应于确定所述一致性颗粒的所述副本具有一致性状态W,由所述第二PE的所述本地高速缓存允许所述HTW读取所述一致性颗粒的所述副本。
3.根据权利要求1所述的基于处理器的设备,其中所述多个PE中的所述第二PE还被配置为:
由所述第二PE的所述本地高速缓存确定所述第二PE的非HTW代理寻求读取所述一致性颗粒的所述副本;
由所述第二PE的所述本地高速缓存确定所述一致性颗粒的所述副本具有一致性状态W;以及
响应于确定所述一致性颗粒的所述副本具有一致性状态W:
由所述第二PE的所述本地高速缓存使所述一致性颗粒的所述副本无效;以及
将读取所述一致性颗粒的所述副本的所述请求处理为高速缓存未命中。
4.根据权利要求1所述的基于处理器的设备,其中所述第一PE还被配置为将所述第一PE的所述本地高速缓存中的与所述PTE对应的所述一致性颗粒的一致性状态更新为已修改的遍历器可访问(MW)的一致性状态,其中所述一致性状态MW指示所述一致性颗粒的、仅对HTW可见的被缓存的副本可能存在于所述多个PE中的对应的一个或多个其他PE的一个或多个本地高速缓存中。
5.根据权利要求1所述的基于处理器的设备,其中所述第一PE还被配置为:
确定与所述第一PE的所述本地高速缓存中的与所述PTE对应的所述一致性颗粒处于以下一致性状态:共享已修改(O)、最近共享(R)或共享清洁(S);以及
响应于确定所述第一PE的所述本地高速缓存中的与所述PTE对应的所述一致性颗粒处于一致性状态O、R或S,经由所述互连总线传输prex_w总线请求,所述prex_w总线请求指示所述第一PE具有所述一致性颗粒的共享副本并且寻求管理所述PTE的所述SP-PTE字段;
其中所述总线请求包括所述prex_w总线请求。
6.根据权利要求1所述的基于处理器的设备,其中所述第一PE还被配置为:
确定所述第一PE的所述本地高速缓存中的与所述PTE对应的所述一致性颗粒处于遍历器可读(W)或无效(I)的一致性状态;以及
响应于确定所述第一PE的所述本地高速缓存中的与所述PTE对应的所述一致性颗粒处于一致性状态W或I,传输rd_e_w总线请求,所述rd_e_w总线请求指示所述第一PE正在更新所述PTE的所述SP-PTE字段并且未持有所述一致性颗粒的一致性副本;
其中所述总线请求包括所述rd_e_w总线请求。
7.根据权利要求4所述的基于处理器的设备,其中所述第一PE还被配置为:
将与所述PTE对应的所述一致性颗粒安装到所述第一PE的所述本地高速缓存中;以及
设置针对所述一致性颗粒的HTW安装指示符,以指示所述一致性颗粒是否是作为HTW请求的结果而被安装的;
其中将所述第一PE的所述本地高速缓存中的所述PTE对应的所述一致性颗粒的所述一致性状态更新为一致性状态MW是响应于确定:针对所述一致性颗粒的所述HTW安装指示符被设置、并且所述SP-PTE字段存储指令是只修改所述PTE的所述SP-PTE字段的常规存储器存储指令。
8.根据权利要求1所述的基于处理器的设备,其中所述SP-PTE字段存储指令是以下中的一项:定制存储指令、定制比较/执行指令、以及针对与所述页表相关联的地址范围并且仅修改PTE的SP-PTE字段的常规存储器存储指令。
9.一种用于促进页表条目(PTE)维护的方法,包括:
使用基于处理器的设备的多个处理元件(PE)中的第一PE的执行流水线的解码阶段来解码特殊页表条目(SP-PTE)字段存储指令;
执行所述SP-PTE字段存储指令以修改所述基于处理器的设备的系统存储器中的页表的PTE的SP-PTE字段,其中所述PTE被缓存在所述多个PE中的第一PE的本地高速缓存中的与所述PTE对应的一致性颗粒中;
由所述多个PE中的第二PE经由互连总线接收来自所述第一PE的针对所述一致性颗粒的总线请求;以及
由所述一致性颗粒在所述第二PE将所述第二PE的所述本地高速缓存中的副本的一致性状态更新为遍历器可读(W)的一致性状态,以指示所述一致性颗粒的所述副本只能由所述第二PE的硬件表遍历器(HTW)读取。
10.根据权利要求9所述的方法,还包括:
由所述第二PE的所述本地高速缓存确定所述第二PE的所述HTW寻求读取所述一致性颗粒的所述副本;
由所述第二PE的所述本地高速缓存确定所述一致性颗粒的所述副本具有一致性状态W;以及
响应于确定所述一致性颗粒的所述副本具有一致性状态W,由所述第二PE的所述本地高速缓存允许所述HTW读取所述一致性颗粒的所述副本。
11.根据权利要求9所述的方法,还包括:
由所述第二PE的所述本地高速缓存确定所述第二PE的非HTW代理寻求读取所述一致性颗粒的所述副本;
由所述第二PE的所述本地高速缓存确定所述一致性颗粒的所述副本具有一致性状态W;以及
响应于确定所述一致性颗粒的所述副本具有一致性状态W:
由所述第二PE的所述本地高速缓存使所述一致性颗粒的所述副本无效;以及
将读取所述一致性颗粒的所述副本的所述请求处理为高速缓存未命中。
12.根据权利要求9所述的方法,其中还包括由所述多个PE中的所述第一PE将所述第一PE的所述本地高速缓存中的与所述PTE对应的所述一致性颗粒的一致性状态更新为已修改的遍历器可访问(MW)的一致性状态,以指示所述一致性颗粒的、仅对硬件表遍历器(HTW)可见的被缓存的所述副本可能存在于所述多个PE中的对应的一个或多个其他PE的一个或多个本地高速缓存中。
13.根据权利要求9所述的方法,还包括:
由所述第一PE确定与所述第一PE的所述本地高速缓存中的与所述PTE对应的所述一致性颗粒处于以下一致性状态:共享已修改(O)、最近共享(R)或共享清洁(S);以及
响应于确定所述第一PE的所述本地高速缓存中的与所述PTE对应的所述一致性颗粒处于一致性状态O、R或S,经由所述互连总线传输prex_w总线请求,所述prex_w总线请求指示所述第一PE具有所述一致性颗粒的共享副本并且寻求管理所述PTE的所述SP-PTE字段;
其中所述总线请求包括所述prex_w总线请求。
14.根据权利要求9所述的方法,还包括:
由所述第一PE确定所述第一PE的所述本地高速缓存中的与所述PTE对应的所述一致性颗粒处于遍历器可读(W)或无效(I)的一致性状态;以及
响应于确定所述第一PE的所述本地高速缓存中的与所述PTE对应的所述一致性颗粒处于一致性状态W或I,传输rd_e_w总线请求,所述rd_e_w总线请求指示所述第一PE正在更新所述PTE的所述SP-PTE字段并且未持有所述一致性颗粒的一致性副本;
其中所述总线请求包括所述rd_e_w总线请求。
15.根据权利要求12所述的方法,还包括:
由所述多个PE中的所述第一PE将与所述PTE对应的所述一致性颗粒安装到所述第一PE的所述本地高速缓存中;以及
设置针对所述一致性颗粒的HTW安装指示符,以指示所述一致性颗粒是否是作为HTW请求的结果而被安装的;
其中将所述第一PE的所述本地高速缓存中的与所述PTE对应的所述一致性颗粒的所述一致性状态更新为一致性状态MW是响应于响应于确定:针对所述一致性颗粒的所述HTW安装指示符被设置、并且所述SP-PTE字段存储指令是仅修改所述PTE的所述SP-PTE字段的常规存储器存储指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/558,789 | 2019-09-03 | ||
US16/558,789 US10896135B1 (en) | 2019-09-03 | 2019-09-03 | Facilitating page table entry (PTE) maintenance in processor-based devices |
PCT/US2020/037997 WO2021045817A1 (en) | 2019-09-03 | 2020-06-17 | Facilitating page table entry (pte) maintenance in processor-based devices |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114303135A true CN114303135A (zh) | 2022-04-08 |
Family
ID=71950825
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080061397.9A Pending CN114303135A (zh) | 2019-09-03 | 2020-06-17 | 促进基于处理器的设备中的页表条目(pte)维护 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10896135B1 (zh) |
EP (1) | EP4026007A1 (zh) |
KR (1) | KR20220058542A (zh) |
CN (1) | CN114303135A (zh) |
WO (1) | WO2021045817A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11677754B2 (en) * | 2019-12-09 | 2023-06-13 | Daniel Chien | Access control systems and methods |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6553460B1 (en) | 1999-10-01 | 2003-04-22 | Hitachi, Ltd. | Microprocessor having improved memory management unit and cache memory |
US6658539B2 (en) * | 2001-10-16 | 2003-12-02 | International Business Machines Corporation | Super-coherent data mechanisms for shared caches in a multiprocessing system |
US7802058B1 (en) * | 2003-04-30 | 2010-09-21 | Silicon Graphics International | Method for performing cache coherency in a computer system |
US9213651B2 (en) * | 2009-06-16 | 2015-12-15 | Vmware, Inc. | Synchronizing a translation lookaside buffer with page tables |
US8996812B2 (en) | 2009-06-19 | 2015-03-31 | International Business Machines Corporation | Write-back coherency data cache for resolving read/write conflicts |
US10120802B2 (en) * | 2015-09-23 | 2018-11-06 | International Business Machines Corporation | Transactional memory coherence control |
US10019377B2 (en) * | 2016-05-23 | 2018-07-10 | Advanced Micro Devices, Inc. | Managing cache coherence using information in a page table |
WO2018059655A1 (en) * | 2016-09-30 | 2018-04-05 | Intel Corporation | Method and apparatus for smart store operations with conditional ownership requests |
US10684957B2 (en) * | 2018-08-23 | 2020-06-16 | Advanced Micro Devices, Inc. | Apparatus and method for neighborhood-aware virtual to physical address translations |
-
2019
- 2019-09-03 US US16/558,789 patent/US10896135B1/en active Active
-
2020
- 2020-06-17 WO PCT/US2020/037997 patent/WO2021045817A1/en unknown
- 2020-06-17 EP EP20751816.8A patent/EP4026007A1/en active Pending
- 2020-06-17 KR KR1020227006719A patent/KR20220058542A/ko unknown
- 2020-06-17 CN CN202080061397.9A patent/CN114303135A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2021045817A1 (en) | 2021-03-11 |
US10896135B1 (en) | 2021-01-19 |
EP4026007A1 (en) | 2022-07-13 |
KR20220058542A (ko) | 2022-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9218286B2 (en) | System cache with partial write valid states | |
US7360032B2 (en) | Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of modified memory blocks | |
US10592424B2 (en) | Range-based memory system | |
US20070022256A1 (en) | Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of shared memory blocks | |
US9043554B2 (en) | Cache policies for uncacheable memory requests | |
US8364904B2 (en) | Horizontal cache persistence in a multi-compute node, symmetric multiprocessing computer | |
US20090006668A1 (en) | Performing direct data transactions with a cache memory | |
US20140089600A1 (en) | System cache with data pending state | |
US9229866B2 (en) | Delaying cache data array updates | |
US10877890B2 (en) | Providing dead-block prediction for determining whether to cache data in cache devices | |
WO2023055486A1 (en) | Re-reference interval prediction (rrip) with pseudo-lru supplemental age information | |
US9311251B2 (en) | System cache with sticky allocation | |
EP2901287B1 (en) | System cache with sticky removal engine | |
US11372757B2 (en) | Tracking repeated reads to guide dynamic selection of cache coherence protocols in processor-based devices | |
US10896135B1 (en) | Facilitating page table entry (PTE) maintenance in processor-based devices | |
JP2022545848A (ja) | 投機的データ要求が非投機的になるまでの、投機的データ要求に応答したプロセッサベースのシステム内の非投機的キャッシュメモリにおけるキャッシュ状態更新の延期 | |
US11138114B2 (en) | Providing dynamic selection of cache coherence protocols in processor-based devices | |
CN117940909A (zh) | 基于处理器的设备中的追踪存储器块存取频率 | |
US20140136785A1 (en) | Enhanced cache coordination in a multilevel cache | |
EP3991049B1 (en) | Performing atomic store-and-invalidate operations in processor-based devices | |
EP4070188A1 (en) | Providing express memory obsolescence in processor-based devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |