CN104603761A - 对于页漏失处理程序的并行控制 - Google Patents
对于页漏失处理程序的并行控制 Download PDFInfo
- Publication number
- CN104603761A CN104603761A CN201380043260.0A CN201380043260A CN104603761A CN 104603761 A CN104603761 A CN 104603761A CN 201380043260 A CN201380043260 A CN 201380043260A CN 104603761 A CN104603761 A CN 104603761A
- Authority
- CN
- China
- Prior art keywords
- walker
- page
- processor
- caching
- physical address
- 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.)
- Granted
Links
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
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/651—Multi-level translation tables
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/655—Same page detection
-
- 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/681—Multi-level TLB, e.g. microTLB and main TLB
-
- 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/684—TLB miss handling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在一个实施例中,页漏失处理程序包括分页缓存和接收第一线性地址部分并从分页结构获取物理地址的对应的部分的第一步行器,与第一步行器并行地操作的第二步行器,以及响应于第一线性地址部分匹配被第二步行器访问的并行分页结构的对应的线性地址部分,防止第一步行器将获取的物理地址部分存储到分页缓存的逻辑。描述并要求保护其他实施例。
Description
背景技术
在现代的计算机系统中,处理器对各种数据执行指令。可以从系统存储器中获取指令和数据。为访问系统存储器,使用物理地址。然而,软件不直接提供物理地址供处理器使用。相反,处理器的硬件用于将从软件接收到的线性地址转换为物理地址。
在某些处理器中,可以有基于处理器的结构以存储频繁地使用的或最近使用的转换以减少延迟。然而,有所谓的漏失是不可避免的,其中:在处理器中不存在被请求的线性地址和对应的物理地址之间的转换。相应地,对系统管理执行页面步行过程,以获取转换,如此,提供合适的物理地址。尽管存在这样的机制,但是,页面步行过程相对来说费时,如此,增大了存储器访问的延迟。
附图简述
图1是根据本发明的一实施例的页漏失处理程序的框图。
图2是根据本发明的一实施例的用于执行页面行走的方法的流程图。
图3是根据本发明的一个实施例的由页漏失处理程序执行的线性地址转换。
图4是根据本发明的一个实施例的处理器核的框图。
图5是根据本发明的一个实施例的处理器核的框图。
图6是根据本发明另一实施例的多域处理器的框图。
图7是包括多个核的处理器的一个实施例的框图。
图8是根据本发明一实施例的系统的框图。
详细描述
在各实施例中,提供了允许页漏失处理程序(PMH)的多个步行器(walker)并行地执行一组分页结构各自的步行以获取从线性地址到物理地址的转换的技术。此外,实施例可以提供一种逻辑,如果一个并行步行器处于访问至少部分地重叠正在由并行步行器中的另一个转换的线性地址的线性地址的信息的过程中,则该逻辑防止并行步行器中的一个或多个将条目存储在用于特定转换的分页缓存中。换言之,此处所描述的缓存写入禁用用于确保在给定分页缓存中不存在具有相同数据的多个路。尽管此处所描述的各实施例在页漏失处理程序本身内提供这样的逻辑,但是,可以理解,本发明的范围在这方面不受限制,在其他实施例中,在实现此处所描述的并行步行器保护时,可以使用其他硬件、软件和/或固件。
根据本发明的一个实施例的处理器可以根据多个分页模式中的一个配置。无论如何,在每一种模式下,处理器用于使用分层分页结构,将线性地址转换为对应于系统存储器中的一位置的物理地址。在各实施例中,当处理器中不存在转换时,例如,在转换后援缓冲器内,处理器的PMH可以执行获取转换的过程。一般而言,PMH使用线性地址的上部部分来标识分页结构条目的系列。这些条目中的最后一个标识线性地址被转换到的区域的物理地址(叫做页帧)。线性地址的下部部分(叫做页面偏移)标识线性地址转换到的该区域内的特定地址。每一个分页结构条目都包含物理地址,该物理地址是另一分页结构的地址或页帧的地址。在第一种情况下,条目引用其他分页结构;在后一种情况下,条目映射到页面。
第一分页结构位于存储在诸如CR3寄存器之类的配置寄存器中的物理地址处。使用下列迭代过程,转换线性地址。线性地址的一部分(最初,最上面的比特)用于获取分页结构中的一个条目(最初,使用存储在CR3寄存器中的值定位的那一个)。如果该条目引用另一分页结构,则过程继续该分页结构,以及下面的刚刚使用的线性地址的另一部分。如果相反条目映射到一页面,则过程完成。在此情况下,条目中的物理地址是页帧的物理地址,线性地址的剩余的下部部分是页帧内的页面偏移。
现在参见图1,所示出的是根据本发明的一实施例的页漏失处理程序的框图。页漏失处理程序可以位于处理器的存储器执行单元(MEU)内。当在诸如转换后援缓冲器(TLB)之类的处理器的另一结构中不存在从线性地址到物理地址的转换时,此处理程序可以被用来执行从线性地址到物理地址的转换。
如图1所示,PMH 10可以包括多个构成组件,并可以被配置成接收传入的线性地址(LA)和线程标识符(线程ID),以及额外的请求信息,这些请求信息可以包括,例如,有关与转换相关联的微操作(uop)的特定信息。此信息可以包括操作码、重新排序缓冲标识符、请求类型(例如,加载、存储,或预取),以及指出uop是要被隐退的下一操作的隐退标志。注意,响应于TLB或存储转换信息的其他缓存结构中的漏失,可以接收此传入的信息。如此,当到位于系统存储器中的物理地址的转换由于某种原因对处理器不可用时,处理器逻辑可以向PMH发送线性地址(或至少其经过转换的部分),以及线程ID,该线程ID对应于与对对应于线性地址的存储器访问请求相关联的线程的标识符。
仍参考图1,PMH 10包括各种结构。可以看出,可以存在多个步行器,即,步行器201-20n(一般地,步行器20)。在不同的实施例中,步行器的数量有变化。在某些实现中,可以存在两个步行器,而在其他实现中,可以存在更大数量的步行器。步行器可以并行地执行以对于不同的传入的线性地址执行页面行走。在某些实施例中,可以存在输入缓冲器(在图1中为便于说明,未示出),以当步行器不可用时存储传入的线性地址和线程ID。
也如图1所示出的,并行步行器逻辑30可以耦合到步行器20。一般而言,并行步行器逻辑30可以操作,以控制由步行器执行的页面步行,以确保正在被执行的多个并行页面步行不会导致相同数据存储在缓存结构的不同条目中,因为这可以会导致逻辑和/或电气问题。下面将进一步描述关于并行步行器逻辑30的进一步的细节。
仍参考图1,可以存在多个分页缓存401-40n。注意,取决于处理器的分页模式和配置,这样的缓存的数量可能会变化。也在其他实施例中,这些分页缓存可能不存在,或在某些操作模式下,可以不使用这些分页缓存。一般而言,每一个分页缓存都被配置成存储若干个条目,每一个分页缓存都与存储器中的不同的分页结构相关联,以如此允许更快速的转换操作。
在PMH中还存在额外的结构。具体地,如图1的实施例所示,可以使用共享控制逻辑70来控制PMH的操作,包括由步行器执行的页面步行。还可以存在除分页缓存之外的其他存储。在所示出的实现中,存在一个或多个控制寄存器50。在一个实施例中,这些寄存器可以包括CR3寄存器,该CR3寄存器存储表示存储器中的开始分页结构的地址,步行将在该开始分页结构处开始。还可以存在其他控制或配置寄存器,诸如CR0、CR4,扩展的特征启用寄存器长模式寻址寄存器(EFER-LMA)、扩展的页面表指针(EPTP)寄存器,等等。还可以存在其他存储器,包括状态存储。在所示出的实施例中,可以存在多个状态寄存器60,一个或多个与给定分页缓存相关联。在一个实施例中,这些状态存储可以存储关于缓存的某些信息。更进一步,这些缓存可以包括用于每一个步行器的字段(基于每个缓存地),以存储指出特定步行器是否被允许将来自分页结构的被访问的信息存储到对应的分页缓存中的指示符,如下文所描述的。注意,虽然被示为物理地(并且逻辑地)分离的结构,但是,可以理解,每一个步行器都可以构成各种硬件,诸如寄存器、控制逻辑等等。
PMH 10可以耦合到包括各种分页结构的系统存储器。取决于由处理器实现的分页模式,这样的结构的数量和大小会变化。下面将进一步描述关于代表性的分页结构层次结构的进一步的细节。当通过页面步行执行完整的转换时,可以从PMH输出物理地址(PA)和对应的属性及与物理地址相关联的其他状态信息。作为一个这样的示例,可以向TLB提供此输出信息,用于存储在TLB的一个条目中,以提供线性地址-物理地址转换,以便被处理器更快地访问。尽管在图1的实施例以这样高级别地表示,然而要理解本发明的范围不限于此方面。
现参照图2,示出了根据本发明的实施例的用于执行页面行走的方法的流程图。如图2所示,方法200可以在步行器的初始化过程中由诸如并行步行器逻辑之类的控制逻辑执行,以便访问,以从存储器系统的分页结构获取物理地址的一个或多个部分。即,在允许步行器开始页面步行过程以获取物理地址之前,该方法可以,例如,由PMH的并行步行器逻辑执行。可以看出,方法200可以在框210中通过从一个或多个其他步行器接收输入数据来开始。根据这里的讨论,假设步行器W是正在被初始化以执行页面步行的当前步行器,而步行器W'是可能在或可能不在并行地执行页面步行的过程中的一个或多个其他步行器。如图2的实施例所示,对于每一个其他步行器接收到的输入数据可以包括:步行器的状态(例如,当前它是否正在执行步行,以及其他信息);当步行器活跃时,页面步行线性地址(例如,线性地址的对应于诸如线性地址比特47:21之类的各种分页结构的至少某些部分);以及其他步行器正在为其执行查询访问的线程的线程标识符。
仍参考图2,接下来控制进入菱形220,在那里,可以判断是否剩下任何分页缓存(PC)有待由当前页面步行器检查。如上文所描述的,在页漏失处理程序或其他存储器子系统位置可以存在各种分页缓存。如果没有剩下这样的结构有待检查,则方法200可以结束。否则,控制进入框230,在那里,可以设置与当前分页缓存相关联的状态指示符,以指出由步行器获取的物理地址有资格替换当前分页缓存中的条目。在一个实施例中,此状态指示符可以存储在与诸如状态寄存器等物理缓存相关联的状态存储器中。作为一个示例,每一个分页缓存都可以包括具有多个字段的替换资格状态寄存器,每一个字段与对应的步行器相关联,以指出给定步行器是否可以对分页缓存中的条目执行替换。当然,此替换指示符的其他位置是可能的,诸如在步行器本身的状态寄存器的字段内。
仍参考图2,控制接下来进入菱形240,以判断任何其他步行器W'是否活跃(例如,在执行步行的过程中)。如果不,则方法200可以以状态指示符设置为此替换资格条件来结束,以便当步行器利用来自分页结构等等的数据返回时,该信息可以被存储在给定分页缓存的一路中。
否则,如果另一步行器活跃,则控制接下来进入菱形250,在那里,可以判断此活跃的步行器是否正在与步行器W行走相同线性地址标记和线程标识符。在一个实施例中,此判断可以基于线性地址的比特47:21。然而,在其他实施例中,可以使用此线性地址段的不同部分。如果其他步行器正在步行不同的标记(或不同的线程标识符),则不会发生进一步的动作,相应地,控制回到菱形240。
否则,如果判断这两个步行器正在步行相同标记和线程标识符的分页结构,则控制进入框260。在那里,在对于该分页缓存的分析下,步行器的状态指示符可以复位为零,如此,指出,步行器的访问查询的结果没有资格存储到分页缓存中。这是如此,因为两个步行器正在寻求相同转换。如此,为避免具有相同信息的分页缓存的多个路,导致潜在的分页缓存查询具有对于单一标记和线程标识符的多次命中的情况,此状态可以设置为0。可以看出,控制接下来回到菱形220,在那里,可以对于另一个分页缓存,执行分析,如果存在的话。尽管在图2的实施例以这样高级别地表示,然而要理解本发明的范围不限于此方面。
当线性地址被访问时,处理器确定它转换到的物理地址,以及访问是否应该被允许。首先,处理器的查询逻辑可以访问TLB以确定对于线性地址的页编号,何时存在TLB条目,如果是,它可以使用物理地址、访问权限及来自该条目的其他属性。如果逻辑没有发现相关TLB条目,则可以向PMH发送访问请求信息、线性地址(或它的至少经过转换的部分)以及线程ID。PMH又可以使用线性地址的上比特来从合适的分页缓存(如果存在的话)中选择一个条目,如此,通过跳过一个或多个填充的负载,缩短页面行走的长度。如果不,则可以执行全页面步行。
现在参考图3,所示是可以由根据本发明的一个实施例的页漏失处理程序执行的线性地址转换,容纳了64比特地址转换。如图3所示,可以使用线性地址295来寻址存储器270中的页面。如图所示,线性地址295包括若干个字段以索引四级分页结构以访问存储器270中的物理地址。偏移字段(比特0-11)用于寻址存储器270的一个页面内的物理地址。页面表条目(PTE)(比特12-20)寻址页面表(PT)275中的页面表条目。页面目录条目(PDE)(比特21-29)寻址页面目录(PD)280中的页面目录条目。页面目录指针(PDP)(比特30-38)寻址页面目录指针表(PDPT)285中的页面目录指针条目。最后,页面映射4级(PML4)指针(比特39-47)寻址PML4290中的PML4条目。可以使用存储在CR3寄存器50中的指针来访问PML4290的基。如此,可以使用64比特线性地址来实现四级分页结构以访问物理地址。当然,在不同的实施例中,可以使用不同的分页模式。
作为PMH中的转换过程,可以首先访问PDE缓存。在一个实施例中,PDE缓存可以包括由27比特值引用的条目,用于其比特47:21具有该值的线性地址。PDE缓存条目包含用于将相关线性地址转换为来自PDE的物理地址(页面表的地址)的来自PML4E、PDPT以及PDE的信息。另外,PDE缓存还可以进一步存储各种属性及其他信息。然后,PMH可以使用匹配条目来完成转换过程(位于PTE,等等中),好像它遍历了对应于PDE缓存条目的存储器中的分页结构。
如果PMH没有发现相关PDE缓存条目,则它可以使用线性地址的比特47:30来从PDPT缓存中选择一个条目。然后,它可以使用该条目来完成转换过程(位于PDE等等中),好像它遍历了PDPT和对应于PDPT缓存条目的PML4。在一个实施例中,每一个PDPT缓存条目都由18比特值引用,并用于其比特47:30具有该值的线性地址。该条目包含来自PML4E和PDPT的用于转换线性地址的信息,即,来自PDPT的物理地址(页面目录的地址),以及各种状态和属性信息。
如果PMH没有发现相关PDE缓存条目或相关PDPT缓存条目,则它可以使用线性地址的比特47:39来从PML4缓存中选择一个条目。在一个实施例中,每一个PML4缓存条目都由9比特值引用,并用于其比特47:39具有该值的线性地址。该条目包含来自PML4E的用于转换线性地址的信息,即,来自PML4的物理地址(页面目录指针表的地址),以及某些状态和属性信息。然后,PMH可以使用该条目来完成转换过程(位于PDPTE等等中),好像它遍历了对应的PML4。。如果PMH没有发现线性地址的任何分页缓存条目,则它可以初始化步行器以使用线性地址来遍历系统存储器中的整个分页结构层次结构。
在一个实施例中,当PMH启动步行器以执行页面步行时,对存储器层次结构中的分页结构的访问可以通过填充的加载操作,而并非通过常规加载微操作。如此,在返回这些填充的加载操作的信息时,如果步行器的状态指示符指出这样的存储被允许,数据可以存储在合适的分页缓存中。
如此,假设所有分页缓存中的漏失,步行器可以通过向PML4分页结构发出填充的加载来开始。在返回时,此信息和PML4条目可以被存储到PML4缓存,另外,此信息和PML4条目还可用于访问页面目录指针表分页结构。在返回时,该信息和PDP条目可以被存储在PDP缓存中,并进一步用于发出页面目录分页结构(PDE)的填充的负载。在返回时,该信息和PDP条目可以被存储在PDP缓存中,并进一步用于向页面表分页结构发出填充的负载。最后,在该信息的返回时,物理地址比特47:12可用于访问存储器中的被请求的页面,该被请求的页面在该页面中的符合线性地址的偏移处的位置(即,LA比特11:0)包括被请求的信息。
如此,在各实施例中,例如,在步行器启动时,可以作出步行器是否被允许填充分页缓存,而同时避免多路填充(在多个潜在的途径命中)的判断。在各实施例中,可以在页面步行开始时为每一个分页缓存计算此填充资格。在页面步行本身过程中,此资格值然后可以用于判断是否允许缓存填充发生。在一个实施例中,此资格可以被授予对于给定地址开始页面行走的第一步行器。如此,如果两个步行器正在步行带有相同PDE标记的地址,则首先启动步行的步行器是用于编档(filing)PDE缓存的有资格的步行器。此外,通过此技术,还可以避免执行查询替换的额外的延迟和逻辑。即,可以在数据返回时直接写入分页缓存,而不会让逻辑在替换之前执行对缓存的读取以判断要写入的数据不存在。
注意,在将获取的转换信息缓存在PMH的分页缓存中,以及持续页面步行和向TLB或其他处理器结构提供完整的转换之间没有关系。即,甚至在由于并行步行器而使被访问的信息的缓存被禁用的情况下,被访问的信息仍用于执行由步行器执行的转换。
现在参考表1,所示是根据本发明的一个实施例的用于缓存填充资格分析的伪代码。
表1
1.在步行器W的页面步行开始时:
对于每个分页缓存PC:
2.在分页缓存的填充加载返回时:
IF("WPC替换资格"=="0"):{不填充PC缓存}
Else:{填充缓存}
如此,作为示例,假设存在两个步行器W0和W1。假设W0开始页面步行。并行性逻辑可以执行下列判断,例如,如在上文的表1中阐述的:
1.在页面步行开始时:
a.设置"W0PDE替换资格"=1.
b.IF(W1正在步行)且(W0LA[47:21]==W1LA[47:21])且(W0线程==W1线程),设置"W0PDE替换资格"=0.
2.在PDE填充加载返回时:
a.If("W0PDE替换资格"==0),不填充PDE缓存.
Else,填充PDE缓存.
各实施例可在许多不同的系统中实现。例如,实施例可在诸如多核处理器之类的处理器中实现。现在参照图4,图5示出了根据本发明一个实施例的处理器核的框图。如图4所示,处理器核300可以是多核处理器中的一个核,并且被示为多级流水线化的无序处理器。在图4中利用相对简化的视图示出处理器核300,以示出与根据本发明的实施例的并行页面步行器结合使用的多个特征。
如图4所示,核300包括前端单元310,前端单元310可用于获取将被执行的指令并将这些指令准备好以供以后在处理器中使用。例如,前端单元310可包括获取单元301、指令缓存303和指令解码器305。在某些实现中,前端单元310可进一步包括跟踪缓存、微码存储以及微操作存储。获取单元301可(例如,从存储器或指令缓存303)获取宏指令并将它们馈送至指令解码器305以将它们解码为原语,即用于通过处理器执行的微操作。
无序(OOO)引擎315耦合在前端单元310与执行单元320之间,无序引擎315可用于接收微指令并将它们准备好以供执行。更具体地,OOO引擎315可包括多个缓冲器,用于对微指令流重新排序并分配执行所需的各种资源,以及例如通过使用该引擎的重命名逻辑来提供逻辑寄存器到各个寄存器组(诸如寄存器组330和扩展寄存器组335)内的存储位置上的重命名。寄存器组330可包括用于整数和浮点操作的单独的寄存器组。扩展寄存器组335可提供向量尺寸单元的存储,例如,每寄存器256或512位。
在执行单元320中可存在多种资源,包括例如多种整数、浮点和单指令多数据(SIMD)逻辑单元等其它专门硬件。例如,此类执行单元可包括一个或多个算术逻辑单元(ALU)322。当然,还可存在诸如乘法累加单元之类的其他执行单元等等。结果可以被提供给隐退逻辑,该隐退逻辑可以实现在处理器的存储器子系统360内。例如包括执行单元和前端逻辑的各个处理器结构可以耦合到存储器子系统360。该存储器子系统可提供处理器结构与存储器层次的其他部分(例如芯片上或芯片外的缓存和系统存储器)之间的接口。如所看见那样,各子系统具有各个组件,包括存储器排序缓冲器(MOB)340。更具体地,MOB 340可包括各种阵列和逻辑以接收与被执行的指令相关联的信息。然后,通过MOB 340检查该信息以确定指令是否可以有效隐退并且结果数据是否被提交至处理器的架构状态,或阻止指令的正常隐退的一个或多个异常是否发生。当然,MOB 340可处理与隐退相关联的其他操作。
如图4所示,MOB 340耦合至缓存350,在一个实施例中,该缓存350可以是低级缓存(例如L1缓存)。存储器子系统360还可包括集成存储器控制器370以提供与系统存储器(在图4中为了说明方便而未示出)的通信。存储器子系统360还可包括存储器执行单元375,该存储器执行单元375处理各种操作,以发起存储器请求并且处理数据从存储器的返回。例如,如图4的实施例所示,MEU 375可以包括页漏失处理程序376,以当发生TLB漏失时获取从LA到PA的转换。在各实施例中,此PMH可以包括如此处所描述的多个页面步行器和并行步行器逻辑。还可以存在MEU活锁断路器(LLB)377,以及在各种存储器请求之间仲裁的仲裁器379。进一步,虽然未示出,但应理解MEU中可存在诸如缓冲器、调度器等等之类的其他结构。
从存储器子系统360,可发生与更高级缓存、系统存储器等等的数据通信。虽然在图4的实施例中用高级框图示出,但应理解本发明的范围不限于此方面。例如,虽然图4的实现方式是参照无序机、比如所谓的x86指令集架构(ISA)的无序机的,但本发明的范围在此方面不受限制。即,其他实施例可在以下处理器中实现:顺序处理器;诸如基于ARM的处理器之类的精简指令集计算(RISC)处理器;或具有另一类型ISA的处理器,该另一类型的ISA可经由仿真引擎和相关联的逻辑电路来仿真不同ISA的指令和操作。
即,在其他实施例中,处理器架构可包括仿真特征,使得处理器可执行称为源ISA的第一ISA的指令,其中该架构是根据第二ISA的,该第二ISA被称为目标ISA。一般而言,包括OS和应用程序的软件被编译至源ISA,而硬件实现针对给定硬件实现方式而特别设计的具有特殊性能和/或能源效率特征的目标ISA。
现在参照图5,其中示出了根据本发明一实施例的处理器的框图。如图5所示,处理器400可以是多核处理器,包括在核域410中的多个核410a-410n。在一个实施例中,每个这样的核都可以是独立功率域并可被配置成在独立电压和/或频率下工作,并当存在可用净空时进入超频模式,或可以作为单独的域,均匀地控制核。另外,每一个核都还可以包括具有如此处所描述的多个页面步行器和并行控制逻辑的存储器执行单元。如在图5中进一步示出的那样,一个或多个图形处理单元(GPU)4120-412n可以存在于图形域412中。这些独立图形引擎中的每一个都还可以被配置成在独立电压和/或频率操作,或可以作为单个域来一起控制它们。这些各个计算元件可经由互连415耦合到系统代理或非核420,非核420包括各个组件。如所见那样,非核420可包括共享的缓存存储器430,它可以是最末级缓存。另外,非核还可以包括集成的存储器控制器440、各种接口450和功率控制单元455,以控制处理器的组件的功率消耗。
进一步参见图5,处理器400可经由例如存储器总线与系统存储器460通信。另外,通过接口450可对诸如外围设备、海量存储器等多种芯片外组件作出连接。虽然在图5的实施例中示出具有该特定实现,但本发明的范围不限于此方面。
现在参照图6,其中示出了根据本发明另一实施例的多域处理器的框图。如图6的实施例所示,处理器500包括多个域。具体地说,核域510可包括多个核5100–510n,图形域520可包括一个或多个图形引擎,并且可进一步存在系统代理域550。在各实施例中,系统代理域550可在所有时间保持加电以应对功率控制事件和功率管理,以使这些域510和520可被控制以动态地进入和退出低功率状态。另外,这些域可以至少部分地基于根据本发明的一个实施例确定的功率偏向值,在它们之间动态地共享功率预算。每个域510、520可工作在不同电压和/或功率下。
注意,尽管仅示出了三个域,然而要理解本发明的范围不限于这个方面并且其它实施例中可存在附加的域。例如,可存在多核域,其每一个包括至少一个核。如此,可以实现对可以以给定的频率执行的处理器核的量的更精细粒度的控制。
一般而言,除诸如具有多个页面步行器和并行控制逻辑的存储器执行单元之类的各种执行单元和另外的处理元件之外,每一个核510都还可以包括低级别缓存。进而,各核可彼此耦合并耦合至由末级缓存(LLC)5400–540n的多个单元形成的共享缓存存储器。在各实施例中,LLC 540可在核和图形引擎以及多种媒体处理电路之中共享。可以看出,环形互连530因此将各个核耦合在一起,并且提供各个核、图形域520和系统代理电路系统550之间的互连。
在图6的实施例中,系统代理域550可以包括显示控制器552,其可以提供对相关联的显示器的控制和接口。可进一步看出,系统代理域550可以包括功率控制单元555。
如图6中进一步所见的,处理器500可进一步包括集成的存储器控制器(IMC)570,它可向例如动态随机存取存储器(DRAM)之类的系统存储器提供接口。可存在多个接口5800–580n以允许处理器和其它电路之间的互连。例如,在一个实施例中,可提供至少一个直接媒体接口(DMI)接口以及一个或多个高速外设组件互连(PCI ExpressTM(PCIeTM))接口。再进一步,为了提供诸如附加处理器或其它电路的其它代理之间的通信,根据快速通道互连(QPI)协议的一个或多个接口也可被提供。虽然在图6的实施例中以此高级别示出的,但是,可以理解,本发明的范围在这方面不受限制。
参考图7,示出了包括多个核的处理器的实施例。处理器1100包括任何处理器或处理器件,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持式处理器、应用处理器、协同处理器、片上系统(SOC)、或用于执行代码的其它器件。在一个实施例中,处理器1100包括至少两个核——核1101和1102,它们可包括非对称核或对称核(所示实施例)。然而,处理器1100可包括可以是对称的或非对称的任何数量的处理元件。
在一个实施例中,处理元件指的是用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、进程单元、上下文、上下文单元、逻辑处理器、硬件线程、核、和/或能保持处理器的诸如执行状态或架构状态之类的状态的任何其它元件。换言之,在一个实施例中,处理元件指的是能够与诸如软件线程、操作系统、应用、或其它代码之类的代码独立地相关联的任何硬件。物理处理器通常指的是集成电路,其可能包括任意数量的诸如核或硬件线程之类的其它处理元件。
核通常指的是位于集成电路上的能够维持独立架构状态的逻辑,其中每个独立维持的架构状态与至少某些专用执行资源相关联。与核相反,硬件线程通常指的是位于集成电路上的能维持独立架构状态的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。可以看出,当某些资源是共享的而其它资源是架构状态专用时,硬件线程与核的术语之间的界线交叠。核和硬件线程常常被操作系统视为单个逻辑处理器,其中,操作系统能够各个地在每一个逻辑处理器上调度操作。
如图7所示的物理处理器1100包括两个核——核1101和1102。在此,核1101和1102被视为对称核,即这些核具有相同的配置、功能单元和/或逻辑。在另一个实施例中,核1101包括无序处理器核,而核1102包括有序处理器核。然而,核1101和1102可从任何类型的核中单独地选择,诸如原生核、受软件管理的核、适于执行原生指令集架构(ISA)的核、适于执行转换ISA的核、协同设计的核或其它已知核。不过,为进一步讨论,以下将进一步详细描述在核1101中示出的功能单元,因为核1102中的单元以类似方式操作。
如所描绘的,核1101包括两个硬件线程1101a以及1101b,它们也可以被称为硬件线程槽1101a以及1101b。因此,在一个实施例中,诸如操作系统之类的软件实体潜在地将处理器1100视为四个独立的处理器,即能够并发地执行四个软件线程的四个逻辑处理器或处理元件。如上所述,第一线程与架构状态寄存器1101a相关联,第二线程与架构状态寄存器1101b相关联,第三线程可与架构状态寄存器1102a相关联,并且第四线程可与架构状态寄存器1102b相关联。在此,架构状态寄存器(1101a、1101b、1102a和1102b)中的每一个可被称为处理元件、线程槽或线程单元,如上所述。如图所示,架构状态寄存器1101a在架构状态寄存器1101b中复制,如此,单个架构状态/上下文能够为逻辑处理器1101a和逻辑处理器1101b存储。在核1101中,其他较小资源,诸如分配器和重新命名块1130中的指令指针和重新命名逻辑也可以为线程1101a和1101b复制。诸如重排序/隐退单元1135中的重排序缓冲器、ILTB1120、加载/存储缓冲器,以及队列之类的某些资源可以通过分区来共享。诸如通用内部寄存器、页表基本寄存器、低级数据缓存和数据TLB 1115、执行单元1140、以及无序单元1135的部分之类的其它资源潜在地被完全共享。
处理器1100通常包括其它资源,这些其它资源可被完全共享、通过分区共享、或由处理元件专用/专用于处理元件。在图7中,示出了具有处理器的说明性的逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可包括或省略这些功能单元中的任一个,并包括未描绘出的任何其它已知的功能单元、逻辑或固件。如图所示,核1101包括简化的、代表性的无序(OOO)处理器核。但是,在不同实施例中可利用有序处理器。OOO核包括用于预测要被执行/进行的分支的分支目标缓冲器1120以及用于存储指令的地址转换条目的指令转换缓冲器(I-TLB)1120。
核1101进一步包括耦合至获取单元1120以用于解码所取出的元素的解码模块1125。在一个实施例中,取出逻辑包括分别与线程槽1101a、1101b相关联的单独定序器。通常,核1101与第一ISA相关联,该第一ISA定义/指定能在处理器1100上执行的指令。是第一ISA的一部分的机器代码指令常常包括引用/指定要被执行的指令或操作的指令的一部分(被称为操作码)。解码逻辑1125包括由这些指令的操作码来识别这些指令并在流水线上传递所解码的指令以进行如第一ISA所定义的处理的电路。例如,在一个实施例中,解码器1125包括被设计成或适于识别诸如事务性指令之类的特定指令的逻辑。作为解码器1125识别的结果,架构或核1101采取特定的、预定的动作以执行与适当指令相关联的任务。重要的是应注意,本申请中描述的任务、块、操作和方法中的任一个可响应于单个或多个指令来执行;它们中的一些可以是新的或旧的指令。
在一个示例中,分配器和重命名器块1130包括用于预留资源的分配器,诸如用于存储指令处理结果的寄存器组。然而,线程1101a和1101b潜在地能够进行无序执行,其中分配器和重命名器块1130还保留其它资源(诸如用于跟踪指令结果的重排序缓冲器)。单元1130还可包括寄存器重命名器,用于将程序/指令引用寄存器重命名为处理器1100内部的其它寄存器。重排序/隐退单元1135包括诸如上述的重排序缓冲器、加载缓冲器和存储缓冲器之类的组件,以支持无序执行的指令的无序执行和稍后的有序隐退。
在一个实施例中,调度器和执行单元块1140包括调度器单元,用于在执行单元上调度指令/操作。例如,在具有可用的浮点执行单元的执行单元的端口上调度浮点指令。还包括与执行单元相关联的寄存器组,用于存储信息指令处理结果。示例性的执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元以及其它已知的执行单元。
较低级的数据缓存和数据转换缓冲器(D-TLB)1150耦合至执行单元1140。数据缓存用于存储最近使用/操作的元素(诸如数据操作数),这些元素在存储器一致性状态下潜在地被保持。D-TLB用于存储最近的虚拟/线性至物理地址转换。作为特定示例,处理器可包括页表结构,用于将物理存储器分解成多个虚拟页。
在此,核1101和1102共享对较高级或进一步远离的缓存1110的访问,较高级或进一步远离的缓存用于缓存最近取出的元素。注意,较高级或进一步指的是缓存级增加或进一步远离执行单元。在一个实施例中,较高级缓存1110是最后级数据缓存——处理器1100上的存储器层次中的最后级缓存,诸如第二或第三级数据缓存。然而,较高级缓存1110不限于此,因为它可与指令缓存相关联或包括指令缓存。替代地,跟踪缓存——一种类型的指令缓存——可耦合在解码器1125之后,用于存储最近解码的跟踪。
在所描绘的配置中,根据本发明的一个实施例,处理器1100还包括总线接口模块1105和可以执行功率共享控制的功率控制器1160。历史上,控制器1170被包括在处理器1100外部的计算系统中。在该场景中,总线接口1105与处理器1100外部的设备通信,处理器1100外部的设备诸如系统存储器1175、芯片组(通常包括存储器控制器中枢以连接到存储器1175以及I/O控制器中枢以连接到外围设备)、存储器控制器中枢、北桥、或其它集成电路。并且在该场景中,总线1105可包括任何已知的互连,诸如多点总线、点对点互连、串行互连、并行总线、一致性(例如缓存一致性)总线、分层协议架构、差分总线以及GTL总线。
存储器1175可专属于处理器1100或与系统中的其它器件共享。存储器1175的类型的常见示例包括DRAM、SRAM、非易失性存储器(NV存储器)以及其它已知的存储设备。注意,器件1180可包括耦合到存储器控制器中枢的图形加速器、处理器或卡,耦合到I/O控制器中枢的数据存储,无线收发器,闪存器件,音频控制器,网络控制器,或其它已知器件。
然而,注意,在所描绘的实施例中,控制器1170被示为处理器1100的一部分。最近,随着更多的逻辑和器件被集成在单个管芯上(如SOC),这些器件中的每一个可被合并在处理器1100上。例如,在一个实施例中,存储器控制器中枢1170与处理器1100处于同一封装和/或管芯上。在此,核的一部分(核上部分,on-core portion)包括与诸如存储器1175和/或图形器件1180之类的其它器件进行接口的一个或多个控制器1170。包括用于与此类器件进行接口的控制器和互连的该配置通常被称为核上(或非核(un-core)配置)。作为示例,总线接口1105包括环形互连,环形互连具有用于与存储器1175进行接口的存储器控制器以及用于与图形处理器1180进行接口的图形控制器。然而,在SOC环境中,诸如网络接口、协同处理器、存储器1175、图形处理器1180以及任何其它已知计算机器件/接口之类的甚至更多的器件可被集成到单个管芯或集成电路上,以提供具有高功能性和低功耗的小外形规格。
实施例可在许多不同的系统类型中实现。现在参照图8,其中示出了根据本发明一实施例的系统的框图。如图8所示,多处理器系统600是点对点互连系统,并包括通过点对点互连650而耦合的第一处理器670和第二处理器680。如图8所示,处理器670和680中的每一个都可以是多核处理器,包括第一和第二处理器核(即,处理器核674a和674b以及处理器核684a和684b),虽然潜在地更多核可以存在于处理器中。处理器中的每一个都可包括多个步行器和控制逻辑以防止并行步行器将相同信息存储在分页缓存的不同的条目中。
仍参考图8,第一处理器670还包括存储器控制器中枢(MCH)672和点对点(P-P)接口676和678。类似地,第二处理器680包括MCH 682和P-P接口686和688。如图8所示,MCH 672和682将处理器耦合到相应的存储器,即,存储器632和存储器634,它们可以是本地连接到相应的处理器的系统存储器(例如,DRAM)的一部分。第一处理器670和第二处理器680可分别经由P-P互连652和654耦合至芯片组690。如图8中所示,芯片组690包括P-P接口694和698。
此外,芯片组690包括用于通过P-P互连639将芯片组690与高性能图形引擎638进行耦合的接口692。芯片组690又可以通过接口696耦合到第一总线616。如图8所示,各种输入/输出(I/O)设备614以及总线桥接器618可以耦合到第一总线616,总线桥接器618将第一总线616耦合到第二总线620。在一个实施例中,各种设备可耦合到第二总线620,包括例如键盘/鼠标622、通信设备626以及数据存储单元628,如可包括代码630的盘驱动器或其他大容量存储设备。进一步地,音频I/O 624可以耦合到第二总线620。各实施例可以被合并到其他类型的系统中,包括诸如智能蜂窝电话、UltrabookTM、平板计算机、上网本等等之类的移动设备。
实施例可以代码的形式实现,而且可存储在其上存储有可用于对系统编程以执行这些指令的非临时存储介质上。存储介质可包括但不限于:包括软盘、光盘、固态驱动器(SSD)、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)以及磁光盘的任何类型的磁盘;诸如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦写可编程只读存储器(EPROM)、闪存、电可擦写可编程只读存储器(EEPROM)之类的半导体器件;磁卡或光卡,或适合于存储电子指令的任何其他类型的介质。
尽管是参考数量有限的实施例来描述本发明的,但是,那些精通本技术的人将从其中理解很多修改和变体。所附权利要求旨在覆盖落入本发明的真实精神和范围中的所有这些修改和变化。
Claims (15)
1.一种处理器,包括:
执行指令的至少一个执行单元;以及
页漏失处理装置,所述页漏失处理装置包括多个分页缓存,以及接收第一线性地址的至少一部分并从存储在系统存储器中的一个或多个分页结构获取物理地址的对应的部分的第一walker,与所述第一步行器并行地操作的第二步行器,以及用于响应于所述第一线性地址部分匹配所述第二步行器访问的并行分页结构的对应的线性地址部分,防止所述第一步行器将所述获得的物理地址部分存储在所述分页缓存中的一个中的并行步行器装置。
2.如权利要求1所述的处理器,其特征在于,所述并行步行器装置用于允许由所述第二步行器获取的物理地址部分存储在所述分页缓存中的一个中。
3.如权利要求2所述的处理器,其特征在于,当与所述第一线性地址相关联的线程标识符不匹配与所述第二步行器访问的所述并行分页结构的所述对应的线性地址部分的相关联的线程标识符时,所述并行步行器装置用于允许所述第一步行器将所述获取的物理地址部分存储在所述分页缓存中的一个中。
4.如权利要求1或2所述的处理器,其特征在于,当与所述第一线性地址相关联的线程标识符匹配与所述第二步行器访问的所述并行分页结构的所述对应的线性地址部分相关联的线程标识符时,所述并行步行器装置用于防止所述第一步行器将所述获取的物理地址部分存储在所述分页缓存中的一个中。
5.如权利要求1,2或3所述的处理器,其特征在于,所述页漏失处理装置包括与第一分页缓存相关联的状态寄存器,所述状态寄存器包括多个字段,每一个字段都指出对应的步行器是否被允许将获取的物理地址部分存储在所述第一分页缓存中。
6.如权利要求6所述的处理器,其特征在于,当所述第一线性地址部分不匹配任何并行分页结构访问的线性地址部分时,所述并行步行器装置用于设置所述状态寄存器的第一字段以指出所述第一步行器被允许存储所述获取的物理地址部分。
7.如权利要求7所述的处理器,其特征在于,当所述第一字段被设置时,所述第一步行器将直接把所述获取的物理地址部分存储在所述第一分页缓存中,当所述第一字段未设置时,阻止所述第一步行器将所述获取的物理地址部分存储在所述第一分页缓存中。
8.如权利要求1所述的处理器,其特征在于,所述第一步行器将使用所述第一线性地址部分的第一段和控制寄存器的值,来访问第一分页结构,并且基于与所述第一步行器相关联的状态寄存器的第一字段的状态,将来自所述第一分页结构的第一访问的条目存储在第一分页缓存中。
9.如权利要求11所述的处理器,其特征在于,所述第一步行器将使用所述第一访问的条目和所述第一线性地址部分的第二段,来访问第二分页结构,并且基于与所述第一步行器相关联的所述状态寄存器的第二字段的状态,将来自所述第二分页结构的第二访问的条目存储在第二分页缓存中。
10.如权利要求1,2或3所述的方法,其特征在于,所述并行步行器装置将设置寄存器的多个字段,每一个字段都指出所述多个步行器的对应的步行器是否被允许将获取的物理地址部分存储在第一分页缓存中。
11.一种方法,包括:
初始化处理器的页漏失处理程序的第一步行器,以执行页面行走,以确定线性地址的物理地址;以及
设置与所述第一步行器相关联的第一状态指示符,以指出:如果所述页漏失处理程序的另一个步行器不对于所述线性地址并行地执行页面行走,则所述第一步行器被允许将获取的物理地址的一部分存储在第一分页缓存的一个条目中,否则,设置所述第一状态指示符以指出:所述第一步行器不被允许存储所述获取的物理地址部分。
12.如权利要求13所述的方法,其特征在于,进一步包括,响应于所述处理器的转换后援缓冲器(TLB)中的漏失,初始化所述第一步行器。
13.如权利要求13或14所述的方法,其特征在于,进一步包括,使用所述线性地址的第一部分,判断在页面目录条目缓存中是否存在条目,如果是,则使用所述条目和所述线性地址的第二部分,访问耦合到所述处理器的系统存储器中的页面表。
14.如权利要求15所述的方法,其特征在于,进一步包括,使用所述条目,来自所述页面表的条目以及所述线性地址的第三部分,生成物理地址,并将所述物理地址提供到所述TLB,用于存储在由所述线性地址指出的所述TLB的条目中。
15.如权利要求16所述的方法,其特征在于,进一步包括,使用所述物理地址,访问所述系统存储器的页面。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/613,777 US9069690B2 (en) | 2012-09-13 | 2012-09-13 | Concurrent page table walker control for TLB miss handling |
US13/613,777 | 2012-09-13 | ||
PCT/US2013/048594 WO2014042747A1 (en) | 2012-09-13 | 2013-06-28 | Concurrent control for a page miss handler |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104603761A true CN104603761A (zh) | 2015-05-06 |
CN104603761B CN104603761B (zh) | 2018-06-08 |
Family
ID=50234584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380043260.0A Expired - Fee Related CN104603761B (zh) | 2012-09-13 | 2013-06-28 | 对于页漏失处理程序的并行控制 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9069690B2 (zh) |
CN (1) | CN104603761B (zh) |
GB (1) | GB2518785B (zh) |
WO (1) | WO2014042747A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108572785A (zh) * | 2017-03-08 | 2018-09-25 | 北京兆易创新科技股份有限公司 | 一种nand-flash存储器读操作方法及装置 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016534431A (ja) * | 2013-10-25 | 2016-11-04 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated | ロード/記憶ユニット及びデータキャッシュの順序付け及びバンド幅の向上 |
US9734083B2 (en) | 2014-03-31 | 2017-08-15 | International Business Machines Corporation | Separate memory address translations for instruction fetches and data accesses |
US9824021B2 (en) | 2014-03-31 | 2017-11-21 | International Business Machines Corporation | Address translation structures to provide separate translations for instruction fetches and data accesses |
US9715449B2 (en) * | 2014-03-31 | 2017-07-25 | International Business Machines Corporation | Hierarchical translation structures providing separate translations for instruction fetches and data accesses |
US9858201B2 (en) * | 2015-02-20 | 2018-01-02 | Qualcomm Incorporated | Selective translation lookaside buffer search and page fault |
US10007619B2 (en) | 2015-05-29 | 2018-06-26 | Qualcomm Incorporated | Multi-threaded translation and transaction re-ordering for memory management units |
US10152421B2 (en) * | 2015-11-23 | 2018-12-11 | Intel Corporation | Instruction and logic for cache control operations |
US10324857B2 (en) * | 2017-01-26 | 2019-06-18 | Intel Corporation | Linear memory address transformation and management |
US10127159B1 (en) | 2017-07-13 | 2018-11-13 | International Business Machines Corporation | Link consistency in a hierarchical TLB with concurrent table walks |
US11144473B2 (en) * | 2018-06-13 | 2021-10-12 | Advanced Micro Devices, Inc. | Quality of service for input/output memory management unit |
US10649688B1 (en) * | 2018-11-01 | 2020-05-12 | Intel Corporation | Precise longitudinal monitoring of memory operations |
US11822486B2 (en) * | 2020-06-27 | 2023-11-21 | Intel Corporation | Pipelined out of order page miss handler |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070005933A1 (en) * | 2005-06-29 | 2007-01-04 | Kopec Brian J | Preventing multiple translation lookaside buffer accesses for a same page in memory |
US7552255B1 (en) * | 2003-07-30 | 2009-06-23 | Intel Corporation | Dynamically partitioning pipeline resources |
US20110022818A1 (en) * | 2009-07-24 | 2011-01-27 | Kegel Andrew G | Iommu using two-level address translation for i/o and computation offload devices on a peripheral interconnect |
US20110138149A1 (en) * | 2009-12-09 | 2011-06-09 | Sun Microsystems, Inc. | Preventing duplicate entries in a non-blocking tlb structure that supports multiple page sizes |
CN102239478A (zh) * | 2011-04-19 | 2011-11-09 | 华为技术有限公司 | 数据访问处理方法和设备 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5680565A (en) * | 1993-12-30 | 1997-10-21 | Intel Corporation | Method and apparatus for performing page table walks in a microprocessor capable of processing speculative instructions |
US5613083A (en) | 1994-09-30 | 1997-03-18 | Intel Corporation | Translation lookaside buffer that is non-blocking in response to a miss for use within a microprocessor capable of processing speculative instructions |
US6741258B1 (en) * | 2000-01-04 | 2004-05-25 | Advanced Micro Devices, Inc. | Distributed translation look-aside buffers for graphics address remapping table |
EP1215581A1 (en) | 2000-12-15 | 2002-06-19 | Texas Instruments Incorporated | Cache memory access system and method |
US6775747B2 (en) | 2002-01-03 | 2004-08-10 | Intel Corporation | System and method for performing page table walks on speculative software prefetch operations |
US7383403B1 (en) | 2004-06-30 | 2008-06-03 | Sun Microsystems, Inc. | Concurrent bypass to instruction buffers in a fine grain multithreaded processor |
US9009445B2 (en) * | 2011-10-20 | 2015-04-14 | Apple Inc. | Memory management unit speculative hardware table walk scheme |
US20130326143A1 (en) * | 2012-06-01 | 2013-12-05 | Broadcom Corporation | Caching Frequently Used Addresses of a Page Table Walk |
-
2012
- 2012-09-13 US US13/613,777 patent/US9069690B2/en not_active Expired - Fee Related
-
2013
- 2013-06-28 GB GB1500437.7A patent/GB2518785B/en not_active Expired - Fee Related
- 2013-06-28 WO PCT/US2013/048594 patent/WO2014042747A1/en active Application Filing
- 2013-06-28 CN CN201380043260.0A patent/CN104603761B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7552255B1 (en) * | 2003-07-30 | 2009-06-23 | Intel Corporation | Dynamically partitioning pipeline resources |
US20070005933A1 (en) * | 2005-06-29 | 2007-01-04 | Kopec Brian J | Preventing multiple translation lookaside buffer accesses for a same page in memory |
US20110022818A1 (en) * | 2009-07-24 | 2011-01-27 | Kegel Andrew G | Iommu using two-level address translation for i/o and computation offload devices on a peripheral interconnect |
US20110138149A1 (en) * | 2009-12-09 | 2011-06-09 | Sun Microsystems, Inc. | Preventing duplicate entries in a non-blocking tlb structure that supports multiple page sizes |
CN102239478A (zh) * | 2011-04-19 | 2011-11-09 | 华为技术有限公司 | 数据访问处理方法和设备 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108572785A (zh) * | 2017-03-08 | 2018-09-25 | 北京兆易创新科技股份有限公司 | 一种nand-flash存储器读操作方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
GB201500437D0 (en) | 2015-02-25 |
CN104603761B (zh) | 2018-06-08 |
WO2014042747A1 (en) | 2014-03-20 |
GB2518785A (en) | 2015-04-01 |
GB2518785B (en) | 2020-09-16 |
US9069690B2 (en) | 2015-06-30 |
US20140075123A1 (en) | 2014-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104603761A (zh) | 对于页漏失处理程序的并行控制 | |
US10831376B2 (en) | Flash-based accelerator and computing device including the same | |
CN102023932B (zh) | 为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持 | |
US10409603B2 (en) | Processors, methods, systems, and instructions to check and store indications of whether memory addresses are in persistent memory | |
US7827390B2 (en) | Microprocessor with private microcode RAM | |
US10037228B2 (en) | Efficient memory virtualization in multi-threaded processing units | |
US10310973B2 (en) | Efficient memory virtualization in multi-threaded processing units | |
US9959409B2 (en) | Processors, methods, systems, and instructions to change addresses of pages of secure enclaves | |
CN104583959B (zh) | 处理访问请求的处理器和系统以及执行访问请求的方法 | |
CN104813278A (zh) | 对二进制转换的自修改代码以及交叉修改代码的处理 | |
US10169091B2 (en) | Efficient memory virtualization in multi-threaded processing units | |
CN109558168A (zh) | 低等待时间加速器 | |
CN111752867A (zh) | 共享加速器存储器系统和方法 | |
CN105453030B (zh) | 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 | |
CN104756090A (zh) | 提供扩展的缓存替换状态信息 | |
US9645942B2 (en) | Method for pinning data in large cache in multi-level memory system | |
CN111400986B (zh) | 一种集成电路计算设备及计算处理系统 | |
US20180095892A1 (en) | Processors, methods, systems, and instructions to determine page group identifiers, and optionally page group metadata, associated with logical memory addresses | |
US20140173203A1 (en) | Block Memory Engine | |
US20040225840A1 (en) | Apparatus and method to provide multithreaded computer processing | |
CN103729306A (zh) | 经由地址范围检查的多cpu块无效操作绕过 | |
BR102020019649A2 (pt) | aparelho e método para agendar adaptativamente o trabalho em recursos de processamento heterogêneo | |
WO2017172220A1 (en) | Method, system, and apparatus for a coherency task list to minimize cache snooping between cpu and fpga | |
CN115481053A (zh) | 对共享存储器区域的独立地受控的dma和cpu访问 | |
US20230393849A1 (en) | Method and apparatus to expedite system services using processing-in-memory (pim) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180608 Termination date: 20210628 |