用于存储器管理单元的多线程转换及事务重新排序的制作方法

文档序号:13741910阅读:208来源:国知局
用于存储器管理单元的多线程转换及事务重新排序的制作方法

根据35u.s.c.§119的优先权主张

本专利申请案主张2015年5月29日申请的题为“用于存储器管理单元的多线程转换及事务重新排序(multi-threadedtranslationandtransactionre-orderingformemorymanagementunits)”的第62/168,712号临时申请案的优先权,且所述临时申请案让与给本受让人且特此以引用的方式明确地并入本文中。

所揭示的方面涉及存储器管理单元(mmu),且更特定来说,例示性方面涉及经配置以并行地处置多个转换的多线程mmu。



背景技术:

存储器管理单元(mmu)经配置以针对处理器或外围装置(通常被称作上游客户端或装置)执行地址转换(及其它存储器管理功能)。举例来说,mmu可包括如此项技术中已知的用以执行虚拟到物理存储器地址转换的转换后备缓冲器(tlb)。

参看图1,常规mmu104从上游客户端装置102接收客户端输入事务116(例如,对读取或写入地址的请求),且如果在mmu104中存在针对客户端输入事务116的转换,那么mmu104执行地址转换。使用地址转换信息将客户端输入事务请求116中的地址转换成用于客户端输出事务120的地址。

图1中更详细地展示mmu104。mmu104可包含转换高速缓冲存储器108,其存储先前完成(或部分完成)的转换的结果。通过使用转换表查核器(ttw)114执行被称作“转换表查核行程”的过程而解析无法使用存储于转换高速缓冲存储器108中的信息来转换的客户端输入事务116。使用对应于特定客户端输入事务116的特定条目(展示为ttw0112)以针对转换请求执行转换表查核行程。在一些情况下,可经由总线120将转换表查核行程请求从总线124发送到系统存储器106,其中,响应122可包含从系统存储器106(上游装置)接收且用于填充转换高速缓冲存储器108的对应转换信息。在一些情况下,可在总线120上发送客户端输出事务,其中,响应122可涉及客户端输出事务且被发送到上游客户端装置102。

因为众多客户端输入事务116可在可以上述方式获得服务之前被接收,所以客户端输入事务116在可存取转换高速缓冲存储器108之前被放置于事务队列110中。串列地使事务队列110的顶部处的客户端输入事务116存取转换高速缓冲存储器108。如果在转换高速缓冲存储器108中未发现针对事务队列110的顶部处的客户端输入事务116的转换,那么强制事务队列110中的所有其它事务等待,直到使用ttw114及对系统存储器106的存取从转换表查核行程过程获得事务队列110的顶部处的客户端输入事务116的转换结果为止。在获得针对事务队列110的顶部处的客户端输入事务116的转换的时间期间,mmu104停止,且因此mmu104的性能降级。

因此,此项技术中需要克服包括一次仅能够服务一个转换表查核行程的单个转换表查核器(例如,ttw114)及一次仅能够处理一个事务的事务队列(例如,事务队列110)的常规mmu的前述缺陷。



技术实现要素:

例示性方面涉及在多线程存储器管理单元(mmu)中执行地址转换的系统及方法。两个或多于两个地址转换请求可由多线程mmu接收且被并行地处理以在地址转换存在于多线程mmu的转换高速缓冲存储器中的情况下检索地址转换或针对在转换高速缓冲存储器中未命中的地址转换请求并行地执行转换表查核行程。

例示性多线程mmu可经配置以并行地执行多个客户端请求的转换及事务重新排序。因此,可针对由例示性多线程mmu接收的多个客户端输入事务执行同时多线程转换。例示性多线程mmu还经配置以执行允许新近转换的事务略过正在等待转换的较旧事务的事务重新排序(例如,从而避免常规mmu中的仅服务事务队列的顶部处的事务的限制)。

在一些方面中,例示性多线程mmu经配置以执行转换请求的“预筛选”,以便避免重复对经提供以辅助并行转换多个线程的多个转换表查核器的请求。在一些方面中,还执行转换结果的“后筛选”,以便避免重复转换高速缓冲存储器填入。在其它方面中,使用例示性技术以通过减少针对多个请求的转换表存取中的重复或冗余来减少转换表查核行程的带宽消耗。

因此,例示性方面是针对一种设备,其包括经配置以从一或多个上游装置接收两个或多于两个地址转换请求的多线程存储器管理单元(mmu)。所述多线程mmu经进一步配置以并行地处理所述两个或多于两个地址转换请求中的至少两个,以获得系统存储器的对应经转换地址。

另一例示性方面是针对一种执行地址转换的方法,所述方法包括:接收两个或多于两个地址转换请求,及在多线程存储器管理单元(mmu)中针对所述两个或多于两个地址转换请求并行地执行两个或多于两个地址转换,以获得系统存储器的对应经转换地址。

另一例示性方面是针对一种设备,其包括:用于接收两个或多于两个地址转换请求的装置;及用于针对所述两个或多于两个地址转换请求并行地执行两个或多于两个地址转换以获得用于存储的装置的对应经转换地址的装置。

另一例示性方面是针对一种非暂时性计算机可读存储媒体,其包括代码,所述代码在由处理器执行时,致使所述处理器针对地址转换执行操作,其中所述非暂时性计算机可读存储媒体包括:用于接收两个或多于两个地址转换请求的代码;及用于针对所述两个或多于两个地址转换请求并行地执行两个或多于两个地址转换以获得系统存储器的对应经转换地址的代码。

附图说明

呈现附图以辅助描述本发明的方面,且提供所述附图仅仅为了说明所述方面而非对其加以限制。

图1说明包括常规mmu的系统。

图2说明包括多线程mmu的例示性系统。

图3a到3b说明图2的多线程mmu的主级调度器。

图4a到4b说明图2的多线程mmu的次级调度器。

图5说明包括多线程mmu的另一例示性系统。

图6到7说明与转换表存取筛选器相关的方面。

图8到9说明使用转换表存取筛选器的方法的流程图。

图10为使用多线程mmu处理转换请求的方法的流程图。

图11说明可有利地使用本发明的方面的例示性无线装置。

具体实施方式

本发明的方面揭示于以下描述及针对本发明的特定方面的相关图式中。可在不脱离本发明的范围的情况下设计出替代性方面。另外,将不详细描述或将省略本发明的熟知元件以免混淆本发明的相关细节。

词语“例示性”在本文中用以意谓“充当实例、例子或说明”。本文中描述为“例示性”的任何方面未必被解释为比其它方面更佳或更有利。同样地,术语“本发明的方面”并不要求本发明的所有方面都包含所论述的特征、优点或操作模式。

本文中所使用的术语仅是出于描述特定方面的目的,且并不意欲限制本发明的方面。如本文中所使用,除非上下文另有清晰指示,否则单数形式“一”及“所述”还意欲包含复数形式。将进一步理解,术语“包括”或“包含”在本文中使用时指定所陈述的特征、整体、步骤、操作、元件及/或组件的存在,但不排除一或多个其它特征、整体、步骤、操作、元件、组件及/或其群组的存在或添加。

此外,依据由(例如)计算装置的元件执行的动作的序列描述了许多方面。将认识到,本文中所描述的各种动作可由特定电路(例如,专用集成电路(asic))、由正由一或多个处理器执行的程序指令或由两个的组合来执行。另外,可认为本文中所描述的这些动作序列完全体现于任何形式的计算机可读存储媒体内,所述计算机可读存储媒体中已存储有一组对应计算机指令,所述计算机指令在被执行时将致使相关联处理器执行本文中所描述的功能性。因此,本发明的各种方面可以数个不同形式体现,预期所有形式均在所主张标的物的范围内。另外,对于本文所描述的方面中的每一者,任何这些方面的对应形式可在本文中被描述为(例如)“经配置以执行所描述动作的逻辑”。

本发明的例示性方面涉及经配置以并行地执行两个或多于两个客户端请求的转换及事务重新排序的多线程mmu。因此,可针对由例示性多线程mmu接收的多个客户端输入事务执行同时多线程转换。例示性多线程mmu还可执行允许转换请求的新近接收事务略过正在等待转换的较旧事务的事务重新排序。

在一些方面中,例示性多线程mmu可执行转换请求的“预筛选”,以便避免重复对经提供以辅助并行地转换多个线程的多个转换表查核器的请求。在一些方面中,还可执行转换结果的“后筛选”,以避免重复转换高速缓冲存储器填入。在其它方面中,可使用例示性技术以通过减少针对多个请求的转换表存取中的重复或冗余来减少转换表查核行程的带宽消耗。

现参看图2,说明处理系统200,其包括被配置为根据例示性方面的多线程mmu的mmu204。一般来说,mmu204可从下游装置202接收客户端输入事务216。如本文中所使用,术语“事务”可包含对读取/写入系统存储器206的请求,且在一些情况下,还包含对所述请求的响应。举例来说,客户端输入事务216可包含对读取/写入系统存储器206的请求,或将地址转换成系统存储器206的指定地址的地址转换请求。下游装置202可不为单个装置,但可包括包含任何通用或专用处理器的一或多个上游装置,所述处理器例如通用处理单元(gpu)、中央处理单元(cpu)、数字信号处理器(dsp)等。此外,在一些情况下,下游装置202还可包括能够并行地处理两个或多于两个处理线程的多线程处理器。因而,一或多个上游装置202可经配置以产生对系统存储器206的地址的地址转换请求,其中所述地址转换请求可由mmu204作为客户端输入事务216接收。

为了支持多线程转换(即,同时处理多个事务)及事务重新排序,例示性方面是针对可包含一或多个多线程调度器的多线程mmu。如图2中所展示,mmu204包含两个调度器:主级调度器210(可为多线程的)及次级调度器220(也可为多线程的),将在以下部分中详细描述所述调度器。

主级调度器210接收客户端输入事务216,且按可相同或不同于接收客户端输入事务216的次序来调度转换请求。在从转换高速缓冲存储器208接收任一个或多个转换结果211之前,主级调度器210可将多个转换请求209发出到转换高速缓冲存储器208以供转换。在此意义上,主级调度器210可使多个转换请求同时操作。因此,主级调度器210可在本发明中被称为“多线程”。主级调度器210可按可相同或不同于接收客户端输入事务216的次序将客户端输出事务242发送(一旦其已由转换高速缓冲存储器208转换)到系统存储器206。因此,主级调度器210可经配置以无序地将两个或多于两个转换请求发出到转换高速缓冲存储器208。

次级调度器220接收转换请求230(例如,其从主级调度器210被发送到转换高速缓冲存储器208,但在转换高速缓冲存储器208中未命中),或从预取引擎222接收转换请求228。预取引擎222可为单独处理模块,其经配置以在产生对事务的需求之前预取事务(例如,如果在程序中辨识到回路,那么可已知将存在遵循预定型样的重复请求,且因此,可事先提取未来请求以便避免可在产生对请求的需求之后提取请求时引发的任何潜时)。次级调度器220可按相同或不同于接收转换请求228、230的次序发出转换请求236。在接收任一个或多个转换结果238、240之前,次级调度器220也可发出多个转换请求236。在此意义上,次级调度器220也可使多个转换请求同时操作,且因此在本发明中的一些方面中也被称为“多线程”。

在一个方面中,次级调度器220经配置以通过将请求236发送到转换表查核器(ttw)214而针对在转换高速缓冲存储器208中未命中的请求230或来自预取引擎222的请求228(或“预取地址转换请求”)调度转换表查核行程(按相同或不同于接收的次序)。就此来说,次级调度器220包含预筛选器224及后筛选器226,其功能将在下文简要介绍且在稍后部分中解释。

无关或冗余请求236有可能被提供到ttw214。预筛选器224经配置以减少提供到ttw214的无关或冗余请求236。另一方面,后筛选器226经配置以减少无关或冗余转换高速缓冲存储器填入或转换结果238、240。

也如自图2所观测到的,ttw214包括两个或多于两个独立转换表查核器(ttw0到ttwn-1,分别表示为ttw212a到212n)。ttw212a到ttw212n可独立且同时操作以针对多个请求236并行地执行转换表查核行程。因此,ttw214也可在本发明中被称为“多线程”。

现参看图3a,说明主级调度器210的展开图。如所展示,主级调度器210可包含在本文中被称为主级调度器槽的一或多个调度器条目。在图3a中,展示n个主级调度器槽0到n-1,且其被表示为槽304a到304n。以下参看图3b展示且进一步详细描述槽304a到304n。先前所描述的客户端输入事务216也展示为到主级调度器210的输入。由主级调度器210接收的每一客户端输入事务216可包含地址信息,但有可能针对一些客户端输入事务216不执行地址转换。也展示由主级调度器210接收的对应于由主级调度器210发出的转换请求209的转换结果211。主级调度器210将针对请求或指定了地址转换的所有客户端输入事务216的转换请求209发送到转换高速缓冲存储器208,转换请求209可从转换高速缓冲存储器208被传送到次级调度器220(在转换高速缓冲存储器208中存在未命中的情况下)。主级调度器210将客户端输出事务242输出到存储器206,其中输出事务242对应于已由mmu204处理的客户端输入事务216。因此,输出事务242对应于已被转换的客户端输入事务216或不请求或执行地址转换的客户端输入事务216。

现结合参看图3a到3b,在主级调度器210接收一或多个客户端输入事务216时,主级调度器210经配置以并行地存储一或多个客户端输入事务216且对一或多个客户端输入事务216操作。就此来说,在处理对应地址转换请求时,每一客户端输入事务216存储于一或多个槽304a到304n的对应槽中,(例如)直到接收到针对转换请求的响应且随后从主级调度器210移除对应客户端输入事务216为止。在确定将不执行转换的情况下,则对应转换请求的处理也将被视为已完成,且将从主级调度器210移除对应客户端输入事务216。槽304a到304n(例如,对应于图3b中具体说明的槽0到7)可以可编程方式分配(例如,基于代理程序的某些分类分配到不同代理程序)或可以固定方式分配以对应于上游客户端装置202的特定代理程序。

举例来说,上游客户端装置202可由一或多个代理程序(例如,代理程序a、b等)组成,其中一或多个请求的群组可对应于代理程序。代理程序可按群组或类别来分类。每一分类可基于每一群组/类别的代理程序可发出到主级调度器210的转换请求的量的最小及最大限制。如图3b中所见,可保留一些槽以用于特定代理程序(例如,用于代理程序a的槽0及1,用于代理程序b的槽2及3),且一些槽(例如,槽4到7)可供用于所有代理程序。在以下条件为真时,上游客户端装置202的特定代理程序可使其转换请求由主级调度器210处理:(1)代理程序具有可用于发出到mmu204的客户端输入事务216(例如,转换请求);(2)主级调度器210具有足够的空闲且可用槽304a到304n,以用于满足对应于所有代理程序的槽304a到304n的最小分配;及(3)主级调度器210当前服务的槽304a到304n的数目少于对于所述代理程序允许的槽304a到304n的最大数目。

为了推行或实施以上条件,在主级调度器210中提供仲裁单元302。在客户端上游装置202的多个代理程序同时满足以上三个条件的情况下,仲裁单元302经配置以实施仲裁原则以确定主级调度器210首先接受哪一代理程序的客户端输入事务216。就此来说,可由仲裁单元302实施若干类型的仲裁原则,例如,循环或固定优先级(例如,首先服务最旧的客户端输入事务216)、可编程优先级(例如,来自代理程序a的请求可经编程以具有比来自代理程序b的请求更高的优先级)或此项技术中已知的任何其它基于优先级的仲裁原则。

在经过仲裁单元302之后,经确定为适于由主级调度器210处理的客户端输入事务216被排入队列或放置于可用或空槽304a到304n中。尽管未明确地展示,但槽304a到304n中的每一者还可具有与其相关联的状态,其中槽的状态包括针对被存储于槽中的客户端输入事务216的地址转换的状态。以下状态可与本发明中的调度器的槽相关联,但其并非穷尽性的列表,且变化/添加是可能的:(1)“等待转换高速缓冲存储器查找”(例如,在待调度转换请求209且执行地址转换时);(2)“转换进行中”(例如,在转换请求209已被调度且正等待转换结果211时);(3)“由于将不执行转换而等待存储器存取”(例如,在客户端输出事务242不指定待执行转换但针对存储器存取调度转换时;(4)“转换已完成”(例如,在已接收对应转换结果211时,此时,转换被认为已完成且事务作为客户端输出事务242被调度用于存储器存取)。

因此,放置有客户端输入事务216的槽的状态被更新为以下各项中的一个:“等待转换高速缓冲存储器查找”(在待执行地址转换的情况下)或“由于将不执行转换而等待存储器存取”(在将不执行地址转换的情况下)。

由主级调度器210以上述方式接收且存储于槽304a到304n中的一个中的每一客户端输入事务216最终由mmu204处理。如果客户端输入事务216被表示为针对其将执行转换的事务,那么使用调度算法调度对应转换请求。在此时,将理解,次级调度器220也具有类似于主级调度器210的槽304a到304n的槽,且将在以下部分中进一步详细解释次级调度器220的槽。关于调度转换请求,如果次级调度器220中有未经分配或空槽可用且主级调度器210的一或多个槽304a到304n保持状态被设定成“等待转换高速缓冲存储器查找”的客户端输入事务216,那么将针对客户端输入事务216的转换请求发出到转换高速缓冲存储器208或次级调度器220。

在槽304a到304n中的多个客户端输入事务216的状态被设定为“等待转换高速缓冲存储器查找”的情况下,被描绘为主级调度器210的存储器转换调度308的块经配置以通过调度算法在各自被存储于槽304a到304n中的一个中的多个客户端输入事务216间仲裁。调度算法可包含仲裁算法,例如循环或固定优先级(例如,首先调度的最旧客户端输入事务216)、可编程优先级(例如,基于代理程序的优先级,或与客户端输入事务216相关联的基于优先级的传讯)或此项技术中已知的其它合适的基于优先级的选择机制。

当选择将客户端输入事务216作为转换请求209发出到转换高速缓冲存储器208时,客户端输入事务216的对应槽304a到304n被更新为“转换进行中”。转换高速缓冲存储器208接收一或多个转换请求209,且执行高速缓冲存储器查找以检查转换高速缓冲存储器208是否包括对应转换。如果在转换高速缓冲存储器208中存在一或多个命中(hit),即,如果在转换高速缓冲存储器208中存在针对特定转换请求209(在本发明中还被称作“命中地址转换请求”)的对应转换,那么随后转换高速缓冲存储器208将转换结果211转递到主级调度器210,且特定转换请求209被发送自的对应槽的状态被更新为“转换已完成”。另一方面,如果存在一或多个未命中,且在转换高速缓冲存储器208中不存在针对一或多个转换请求209(在本发明中还被称作“未命中地址转换请求”)的对应转换,那么存取次级调度器220以将对应一或多个转换请求236调度到转换表查核器(ttw)214(见图2)的ttw212a到212n中的一或多个。当从ttw214接收转换结果238/240时,转换结果被转递到主级调度器210(经由转换结果232/234转递到转换高速缓冲存储器208且紧接着经由转换结果211转递到主级调度器)。

当转换高速缓冲存储器208或次级调度器220经由ttw214完成针对特定转换请求209的转换且转换结果211传回到主级调度器210时,主级调度器210通过执行以下动作来处理转换结果211:(1)将转换结果211存储于供发出转换请求209的对应槽304a到304n中;及(2)将对应槽304a到304n的状态标记为“转换已完成”。在多个转换结果211同时可用的情况下,主级调度器210经配置以选择应首先接收哪一转换结果211以供处理。就此来说,ttw214经配置以基于算法(例如,循环或固定优先级(首先处理最旧的转换结果211)、可编程优先级或此项技术中已知的其它基于优先级的选择机制)在转换结果211间仲裁。

因此,主级调度器210可无次序地(ooo)接收转换结果211,转换结果211可使用上文所论述的仲裁方案来处理。对于状态指示处理“已完成”的所有槽304a到304n(包含未请求/执行转换的槽),使用调度算法来确定将哪一已完成事务242发出到系统存储器206。就此来说,调度算法经设计以确保遵循排序规则,且槽304a到304n中将产生排序危险的任何客户端输入事务216不适于被调度到系统存储器206。在下文部分中解释用以避免危险的例示性重新排序规则。调度算法可经设计以选择被确定为适于发出到系统存储器206的最高优先级输出事务242。输出事务242的优先级可与每一客户端输入事务216或为与发出客户端输入事务216的代理程序(也被称作客户端下游装置202的“主控器”)的类型相关联的优先级(例如,基于服务质量(qos)度量)相关联。将输出事务242发出到系统存储器206进一步涉及从主级调度器210移除对应客户端输入事务216,即,从对应客户端输入事务216的对应槽304a到304n解除分配所述对应客户端输入事务216。

现将描述用于避免重新排序危险的可适用重新排序规则。如果系统存储器206为弱有序存储器,为了避免重新排序危险,那么主级调度器210经配置以确保(1)重新排序任何两个输出事务242不应产生写后读(raw)危险;(2)重新排序任何两个输出事务242不应产生写后写(waw)危险;及(3)重新排序任何两个输出事务242不应产生读后写(war)危险,raw、waw及war危险在此项技术中已知。

另一方面,如果系统存储器206为强有序或严格有序存储器,为了避免重新排序危险,那么主级调度器210经配置以确保重新排序任何两个输出事务242不应产生严格排序危险。如果两个输出事务242源自由同一代理程序产生的客户端输入事务216且两个输出事务242被指定用于严格排序,那么输出事务242无法被重新排序。

在一些情况下,以下额外重新排序规则也可适用。就此来说,主级调度器必须确保重新排序不产生以下危险:(1)重新排序任何两个输出事务242不应产生按次序(in-order)危险。如果两个输出事务242源自由同一代理程序产生的客户端输入事务216且代理程序仅能够按与发出两个输出事务242相同的次序接收响应244,那么代理程序被认为“指定按次序响应”,且在不实施响应重新排序缓冲器(如此项技术中已知)的情况下,两个输出事务242(都被标记为“按次序”)无法被重新排序。如果实施响应重新排序缓冲器,那么上文所提及的两个输出事务242可被重新排序,且响应重新排序缓冲器经配置以重建构初始次序,使得“指定按次序响应”代理程序按预期次序接收回响应244。

现参看图4a到4b,将详细解释次级调度器220。返回参看图2,在分别从预取引擎222或转换高速缓冲存储器208接收转换请求228/230时,次级调度器也经配置以并行地存储一或多个(例如,m个)转换请求228/230且对一或多个转换请求228/230操作。类似于主级调度器210的槽304a到304n,由次级调度器220接收的转换请求228/230被存储于展示为槽0到m-1且表示为槽404a到404m的m个次级调度器槽中的一或多个中,直到从ttw214接收到转换结果238/240为止。

槽404a到404m可基于代理程序(其发起客户端输入事务216(如先前所论述))的不同分类以可编程或固定方式分配到代理程序。同样,每一分类可基于可从每一群组/类别的代理程序发出到次级调度器220的转换请求的量的最小/最大限制。在满足以下条件时,代理程序适于使其转换请求228/230由次级调度器220处理:(1)代理程序具有可用的转换请求228/230;(2)次级调度器220具有足够的可用槽404a到404m以满足对所有代理程序的最小槽分配;及(3)次级调度器220当前服务的槽404a到404m的数目少于对于请求代理程序允许的槽404a到404m的最大数目。由此,从图4b所见,可保留一些槽以用于某些代理程序(例如,用于代理程序a的槽0及1,用于代理程序b的槽2及3),且一些槽(例如,槽4到7)可供用于所有代理程序。

在多个代理程序同时满足以上条件的情况下,仲裁块402经配置以实施仲裁原则以确定首先处理哪一转换请求228/230。仲裁原则可为循环或固定优先级(例如,首先处理最旧转换请求228/230)、可编程优先级(例如,来自客户端输入事务216的转换请求230的优先级高于来自预取引擎222的转换请求228)或此项技术中已知的其它基于优先级的仲裁原则。

在接收转换请求228/230且由仲裁块402选择转换请求228/230后,转换请求228/230即刻被指派给对应槽404a到404m,且槽(未图示)的状态被标记为“等待转换”(在转换请求228/230不适于预筛选的情况下,如将在下文部分中参考图2的预筛选块224而论述)或“等待x”(在转换请求228/230适于预筛选的情况下,且其中x对应于先前转换请求236的槽)。

被接收且存储于槽404a到404m中的每一转换请求228/230最终被发出到ttw214的ttw212a到212n中的一个(每一ttw212a到212n经配置以一次服务一个转换表查核行程)。如果未经分配的ttw212a到212n可用于接收转换请求228/230且一或多个槽404a到404m保持状态为“等待转换”的转换请求228/230,那么转换请求228/230被发出到ttw212a到212n。

在被存储于槽404a到404m中的一个以上转换请求228/230具有状态“等待转换”的情况下,调度块406经配置以基于调度算法(例如,循环或固定优先级(例如,首先调度最旧转换请求228/230)、可编程优先级(例如,基于发起转换请求228/230的代理程序的优先级)或此项技术中已知的其它基于优先级的选择机制)在其间仲裁。

当转换请求228/230经调度以被发出到ttw212a至212n中的一者时,保持转换请求228/230的槽404a到404m的状态被更新为“转换进行中”。对应ttw212a到212n将执行以下动作中的一或多个以处理转换请求228/230:(1)咨询次级转换高速缓冲存储器(未图示);(2)执行转换表查核行程以完成转换;(3)将来自ttw212a到212n的结果传回到能够存储完整或部分转换的转换高速缓冲存储器(例如,转换高速缓冲存储器208);或(4)将来自ttw212a到212n的结果传回到次级调度器220。

当次级调度器220从ttw212a到212n接收转换结果238/240时,次级调度器220在槽404a到404m中处理转换结果238/240且将对应槽标记为“转换完成”。在同时传回一个以上转换结果238/240的情况下,ttw214(例如)基于算法(例如,循环或固定优先级(例如,首先处理最旧转换结果238/240)、可编程优先级(例如,基于发起转换请求228/230的代理程序的优先级)或此项技术中已知的其它基于优先级的选择机制)而选择首先处理哪一结果。

以以下方式传回或从队列移除由次级调度器接收的转换结果238/240。选择状态被标记为“转换完成”的槽404a到404m,且其中所含的转换结果238/240(经由转换高速缓冲存储器208)传回到主级调度器210。对于包括对应于预取请求(转换请求228)的转换结果238/240的槽404a到404n,不采取进一步动作,因为不针对预取请求产生输出事务242,且因此槽404a到404m可被解除分配(释放)。

如果准备同时传回一个以上转换结果238/240,那么来自状态为“转换完成”的所有槽404a到404m的转换结果238/240可经由仲裁过程来发送。仲裁过程可包含循环或固定优先级(例如,首先传回最旧转换结果238/240)、可编程优先级(例如,基于发起对应转换请求230的代理程序的优先级)或此项技术中已知的其它基于优先级的选择机制。一旦转换结果238/240传回到发起转换请求230的代理程序,对应槽404a到404m即被解除分配(释放)。

如上文所提及,两个或多于两个ttw212a到212n可同时操作。每一ttw212a到212n可执行必要的转换高速缓冲存储器查找及存储器存取(转换表查核行程)以转换针对所接收转换请求236的地址。每一ttw212a到212n可发出高速缓冲存储器填入请求且将转换结果238/240转递到次级调度器220。次级调度器220可仲裁转换结果238/240且任选地将其转递到适当目的地。

返回参看图2,现将进一步详细解释预筛选块224。次级调度器220经配置以执行预筛选,使得并行地转换多个转换请求236的过程中所牵涉的冗余被最小化。从以上论述可见,转换多个转换请求236(即,未命中地址转换请求)的过程包含针对转换表查核行程的存储器存取(例如,存取到系统存储器206)、转换高速缓冲存储器查找、分配用以处理转换请求236的资源(例如,ttw212a到212n)等。

举例来说,当多个转换请求236请求针对给定地址空间的相同转换区组(granule)大小(例如,4kb区组大小,其可为例示性mmu204的最小转换区组大小)的转换时,预筛选块224经配置以筛选出、遏止(suppress)或避免重复除减少的数目个(例如,一个)以外的所有类似未命中地址转换请求,且将多个转换请求236中的所述减少的数目个(例如,一个)转换请求中的仅一个转递到ttw212a到212n以供处理。预筛选块224可接着将所述一个转换或“初始”转换的转换结果238/240用于一或多个后续转换请求236。为了确定哪些请求类似,预筛选块224检查在次级调度器220处分别从预取引擎222或主级调度器210接收的转换请求228/230(其在转换高速缓冲存储器208中未命中)。确定与转换请求230有关的地址(及用以识别操作环境/地址空间的其它信息)且将其与当前正由次级调度器220服务的所有其它转换请求236(即,在其对应槽404a到404m中的状态为“转换进行中”或“等待转换”)的地址相比。如果输入地址属于相同转换区组(例如,相同4kb块),且识别操作环境/地址空间的所有其它信息相同,那么发现匹配或类似请求。

如果发现匹配,那么包括新近接收的转换请求236的槽404a到404m的状态被标记为“等待x”而非“等待转换”,其中x为包括匹配转换请求236的槽404a到404m。当ttw212a到212n传回槽x的转换结果238/240时,通过转换结果238/240更新状态为“等待x”的槽404a到404m,且其状态被更新为“转换完成”。在替代方面中,可推迟针对“等待x”槽的转换高速缓冲存储器查找(或通过ttw212a到212n的处理)直到已更新针对槽x的转换结果238/240为止,而非更新状态为“等待x”的槽404a到404m。

在一些方面中,预筛选块224可实施基于“窗”的处理。在基于窗的处理中,当ttw212a到212n处理转换请求236时,除了提取针对所存取地址空间的最小转换区组的表或页面映射以外,也提取邻近表或页面映射的经对准窗。如果同时转换请求236请求针对由此窗覆盖的地址的转换,那么预筛选块224可经配置以确保仅执行一次转换表查核行程,且每一后续转换请求236等待将在转换结果238/240上传回的表或页面映射的窗。

在一些其它方面中,可使用最小转换区组大小(例如,4kb转换块)的未命中下未命中(miss-under-miss)预筛选。未命中下未命中预筛选在许多方面上类似于上文所描述的基于窗的处理。值得注意的是,未命中下未命中处理的差异如下。如果针对初始及后续转换请求236的地址属于同一经对准窗(例如,最小转换区组的倍数,例如4kb,而非受限于4kb的最小转换区组窗大小),那么后续转换请求236(例如,在将由mmu204执行虚拟到物理地址转换的情况下,针对从ttw212a到212n传回的虚拟地址)被视为相同或与初始转换请求236匹配。

再次参看图2,现将进一步详细解释后筛选块226。由于多线程ttw214可同时处理多个转换,因此可能的是同时转换结果238/240可将冗余/重复信息填入转换高速缓冲存储器208。可由后筛选块226使用未命中下未命中后筛选以便消除(或最小化)写入到转换高速缓冲存储器208的重复信息的量。后筛选块226可从一或多个ttw212a到212n接收一或多个转换结果238/240,且如果一或多个转换结果238/240中的两个或多于两个为类似转换结果,那么仅将类似转换结果中的一个转递到转换高速缓冲存储器208,同时遏止其余类似转换结果。

因此,在后筛选的一个方面中,后筛选块226经配置以在填入转换高速缓冲存储器208之前探测或查找转换高速缓冲存储器208,以便确保重复信息不会填入转换高速缓冲存储器208中。然而,转换高速缓冲存储器208查找的带宽(其可能被用于处理来自(例如)主级调度器210的其它转换请求209)可受由后筛选块226执行的查找影响。举例来说,当在次级调度器220处接收到来自ttw212a到212n的转换高速缓冲存储器填入请求(例如,转换结果238/240)时,后筛选块226可探测转换高速缓冲存储器208以检查对应于转换结果238/240的转换是否已存在于转换高速缓冲存储器208中。如果探测传回匹配,那么后筛选块226可舍弃从ttw212a到212n接收的转换结果238/240。否则,后筛选块226可允许转换高速缓冲存储器208被转换结果238/240填入。

在后筛选的另一方面中,可维持近期填入的转换结果238/240的单独高速缓冲存储器(未图示)。此单独高速缓冲存储器在本文中被称作“近期填入高速缓冲存储器”,其保持近期填入的转换结果238/240。可在新的转换结果232/234被最终填入转换高速缓冲存储器208中之前咨询近期填入高速缓冲存储器以检查重复转换结果238。近期填入高速缓冲存储器可小于转换高速缓冲存储器208,例如,近期填入高速缓冲存储器的条目的数目可与可由ttw212a到212n同时处理的转换请求236的数目成比例。虽然在以此方式使用近期填入高速缓冲存储器时仍有可能在转换高速缓冲存储器208中填入重复信息,但对转换高速缓冲存储器208查找的带宽影响极小或无影响,此是由于未执行额外的转换高速缓冲存储器探测。

在将近期填入高速缓冲存储器用于后筛选的一个方面中,当在后筛选块226处接收到未经筛选的转换结果(例如,尚未经后筛选的转换结果238)时,咨询或探测近期填入高速缓冲存储器。如果探测传回针对特定转换结果238的匹配,那么后筛选块226可舍弃匹配转换结果238且防止匹配转换结果238填入转换高速缓冲存储器208(此是由于在本文中假定如果响应于近期发出的转换请求236而接收到匹配转换结果238,那么匹配转换结果238仍驻留于转换高速缓冲存储器208中的可能性很高)。如果探测不产生匹配,那么后筛选块226发出转换结果238以填入转换高速缓冲存储器208以及近期填入高速缓冲存储器。

在一些方面中,可以以下方式配置基于近期填入高速缓冲存储器的后筛选。当由次级调度器220接收未经筛选的转换结果(例如,转换结果238)时,检查次级调度器220的每一槽404a到404m以查看是否存在与转换结果238的匹配。如先前所描述,槽404a到404m可包括转换请求230(例如,虚拟地址)及与转换请求230相关联的上下文信息。对于与具有未决转换请求的槽404a到404m中的任一者中的未决转换请求230匹配的转换结果238,包括匹配转换请求230的槽404a到404m的状态被标记为“转换高速缓冲存储器填入舍弃”。如果后续转换结果238也匹配状态为“转换高速缓冲存储器填入舍弃”的槽的转换请求230,那么此后续转换结果238被确定为重复,且由后筛选块226舍弃,而非允许后续(重复)转换结果238填入转换高速缓冲存储器208。将不舍弃对应于被存储于状态不被标记为“转换高速缓冲存储器填入舍弃”的任何槽404a到404m中的转换请求230的转换结果238,而是允许其填入转换高速缓冲存储器208(例如,经由图2中所展示的转换高速缓冲存储器填入(经筛选)结果232)。确定转换结果238是否对应于或匹配被存储于槽404a到404m中的任一者中的转换请求230可涉及此项技术中已知的用以匹配地址栏位及上下文信息(例如,虚拟机识别符、地址空间识别符等)的任何匹配/查找机制,且可类似于搜寻转换高速缓冲存储器208的过程。

现参看图5,展示例示性多线程mmu的替代实施。图5说明包括mmu504的处理系统500。处理系统500在许多方面上类似于图2的处理系统200,且因此已维持相同参考数字以表示这些两种处理系统的类似特征。集中于处理系统200与500之间的显著差异而不重复类似特征,从图5可见,mmu504用单个主调度器510来代替mmu204的主级调度器210及次级调度器220,主调度器510经配置以执行主级调度器210及次级调度器220两者的功能。mmu504也具有用以执行被发送到转换高速缓冲存储器208的转换请求509的预筛选的预筛选块524。在转换结果238/240被填入转换高速缓冲存储器208中之前,后筛选块526执行对转换结果238/240之后筛选功能。预取引擎222直接将请求528(或本发明中的“预取地址转换请求”)发送到主调度器510,也可由预筛选块524将预筛选应用于请求528。转换结果511(来自转换高速缓冲存储器208或来自由ttw214(包括针对在转换高速缓冲存储器208中未命中的转换请求536的ttw212a到212n)提供的转换结果238/240)被直接提供到主调度器510。mmu504的其余过程及功能类似于mmu204,且因此将在本文中避免对这些过程及功能的进一步详细论述。

现参看图6,将描述涉及减少对转换表的存取的方面。由于例示性多线程mmu(例如,204/504)可同时执行多个转换表查核行程,因此如果用于这些同时转换表查核行程的状态机不协调,那么状态机(例如,ttw212a到212n)可重复工作且共同地将转换表存储器请求多于一次地发出到同一转换表地址。因此,一些方面涉及消除重复/冗余存储器存取,从而相对应地减少对转换表查核器的存取及多线程mmu的存取带宽。就此来说,图6展示先前所描述的ttw214的ttw212a到212n,且另外,转换表存取筛选器602经配置以通过减少/消除重复转换表查核行程请求/存取而减少转换表查核行程带宽。

转换表存取筛选器602可被配置或放置于ttw212a到212n与存储器206之间。图6中还展示转换表存取筛选器602的分解图。转换表存取筛选器602包括经配置以保持对ttw214的未完成请求的未完成ttw请求状态块606。提供对应于ttw212a到212n的对应寄存器或存储装置612a到612n以保持与特定ttw212a到212n有关的未完成请求。在一些方面中也可提供任选的转换结果高速缓冲存储器608,以存储转换表查核行程的一些转换结果(即,存储器206的经转换地址)。转换表存取筛选器602可使用未完成ttw请求状态606及寄存器612a到612n且视情况使用转换结果高速缓冲存储器608来侦测对存储器206的重复/冗余存取且减少或消除重复/冗余存取,同时仅允许对存储器206的唯一存取。

将参看图7描述例示性多线程mmu(204/504)中的转换表存取筛选器602的影响。与两个分开的表查核器(例如,ttw212a到212b)相关联的两个表查核行程序列被描绘为图7中的查核行程a及查核行程b。在实例中,ttw212a到212b可使用同一转换表同时针对同一地址空间中的地址“a”及地址“b”执行转换表查核行程。如果地址“a”及地址“b”驻留于不同转换区组(例如,虚拟存储器的4kb块)中但属于存储器的同一块(例如,虚拟存储器的2mb块),那么可看到ttw212a到212b具有针对地址“a”及地址“b”的转换表查核行程的共同元件。此共同性导致对表或页面l1702a及l2702b中的相同转换表条目的重复存储器存取,如所展示。表704说明在不筛选的情况下(例如,在不使用转换表存取筛选器602的情况下)针对与地址“a”及“b”有关的表查核行程的存储器存取的列表,且表706说明在筛选的情况下(例如,在使用转换表存取筛选器602的情况下)针对与地址“a”及“b”有关的表查核行程的存储器存取的列表。将表704与706比较,可看到存在于表704中的重复转换表存取(“在针对地址“b”的表查核行程中部署的ttw212b的步骤1(l1)及步骤2(l2))在表706中被消除。因此,当在例示性方面中部署转换表存取筛选器602时,存取的数目减少,此导致带宽减少。

现参看图8,说明涉及用于遏止对转换表的无关/冗余存取的算法或流程图的方法800。可选择性地启用方法800。当启用方法800时,对于针对ttw212a到212n中的任一个接收的每一新的转换请求236,方法800可用于遏止对存储器206的无关/冗余存取。所述启用可为对例如所有类型的对mmu204的存取的全域启用,或个别启用可应用于特定转换表存取类型。转换表存取类型的一些实例包含阶段1,层级1到3,及阶段2,层级1到3。

进一步详细考虑方法800,在块802中,方法800可以(例如)每一新的转换请求236开始。在块804中,确定是否(例如)启用转换表存取筛选器602。如果其被启用(“是”路径),那么方法800进行到块806,在块806中确定是否针对特定请求类型启用转换表存取筛选器602。如果在块804中确定不启用转换表存取筛选器602,那么方法800进行到块810。类似地,在块806中,如果确定不针对特定请求类型启用转换表存取筛选器602,那么方法800进行到块810。

如果在块806中确定针对特定请求类型启用转换表存取筛选器602,那么方法800进行到块808,在块808中检查是否已存在将满足新的转换表请求的未完成重叠转换表存取(例如,来自图6的未完成ttw请求状态块606或寄存器612a到612n)。如果在块808中确定为“否”,那么方法800进行到块810。在块810中,执行转换表存取(例如,从ttw214到存储器206)以便满足在块802处到达的新的转换请求236。在块808中,如果确定为“是”,则方法800进行到块812,在块812中针对转换请求236遏止新的转换表请求(例如,使用转换表存取筛选器602)。方法800随后进行到块814以等待重叠转换表存取完成,以便使用其结果来满足新的转换请求236。从块814及810,方法800进行到块820,在块820中,方法800完成或结束。

在一些方面中,块820可包括存储从块810获得的页面表数据,以满足新的转换请求236,所述页面表数据将存储于转换结果高速缓冲存储器608中。然而,在一些其它方面中,可在决定将页面表数据存储于转换结果高速缓冲存储器608中之前执行额外筛选步骤。举例来说,在块810之后,方法800可涉及可在存储页面表数据之前执行的额外筛选步骤。下文将参看图9解释所述额外筛选步骤。

图9说明涉及用于遏止对转换表(例如,ttw214)的无关/冗余存取的算法或流程图的另一例示性方法900。块802、804、806及810类似于上文所描述的方法800的块,且因此将不再描述。以块902开始,如果块806中的确定为“是”,那么到达块902,其中在块902中,查找任选的转换结果高速缓冲存储器608。如果在转换结果高速缓冲存储器608中发现针对转换请求236的经请求转换表数据,那么在块904中,方法900进行到块906。在块906中,遏止针对转换请求236的新的转换表请求且使用来自转换结果高速缓冲存储器608的数据来服务转换请求236,且从此处,方法900进行到块914,在块914中,方法900完成或结束。

另一方面,如果在转换结果高速缓冲存储器608中未发现针对转换请求236的转换数据,那么在块904中,方法900进行到块810,从块810执行块908到912中的额外步骤。在块908中,再次确定是否启用转换表存取筛选器602,且如果是否,那么方法900在块914中结束。如果启用转换表存取筛选器602,那么在块910中确定是否针对转换请求236的特定转换表请求类型启用转换表存取筛选器602,且如果否,那么方法900在块914中结束。如果在块910中确定针对转换请求236的特定转换表请求类型启用转换表存取筛选器602,那么在块912中,将针对转换请求236的页面表数据存储于转换结果高速缓冲存储器608中,且方法900在块914中结束。

在一些例示性方面中,由于本地高速缓冲存储器(例如,转换结果高速缓冲存储器608)可保持转换表数据,因此在对由例示性mmu接收的无效化命令(例如,tlb无效化命令,如此项技术中已知)作出响应时应注意。当由mmu204接收到任何tlb无效化命令时,(例如)整个转换结果高速缓冲存储器608的内容被视为无效。因此,当前未完成的对存储器206的所有转换表存取被加上旗标,使得在其结果传回时,不将其填充于转换结果高速缓冲存储器608中。在一些情况下,转换结果高速缓冲存储器608中的所有条目被相对应地无效化。在此类情况下,整个转换结果高速缓冲存储器608在收到任何此类mmu无效化命令时被无效化,此是由于可物理地对转换结果高速缓冲存储器608加标签。在本发明的范围内可实施其它类似无效化过程,如所属领域的技术人员将理解。

将了解,方面包含用于执行本文中所揭示的过程、功能及/或算法的各种方法。举例来说,图10说明执行地址转换的方法1000。方法1000包括:接收两个或多于两个地址转换请求(例如,来自上游客户端装置202的客户端输入事务216);及在多线程存储器管理单元(例如,mmu204)中针对两个或多于两个地址转换请求并行地执行两个或多于两个地址转换,以获得系统存储器(例如,存储器206)的对应经转换地址。

在一些方面中,方法1000可包含:将两个或多于两个地址转换请求存储于至少一个调度器中(例如,主级调度器210的槽304a到304n中);及将两个或多于两个地址转换请求(例如,209)发送到多线程mmu中的转换高速缓冲存储器(例如,转换高速缓冲存储器208)。在一些方面中,至少一个调度器(例如,主级调度器210)可按相同或不同于由至少一个调度器接收两个或多于两个地址转换请求的次序的次序将两个或多于两个地址转换请求发出到转换高速缓冲存储器。在一些方面中,方法1000也可包含在转换高速缓冲存储器中存在针对地址转换请求的命中的情况下,从转换高速缓冲存储器接收针对两个或多于两个地址转换请求中的地址转换请求的转换(例如,转换结果211),或将在转换高速缓冲存储器中未命中的地址转换请求(例如,230)转递到转换表查核器(例如,经由次级调度器220转递到ttw214)。可由两个或多于两个转换表查核器(例如,212a到212n)针对两个或多于两个地址转换请求并行地执行两个或多于两个转换表查核行程。

在一些方面中,方法1000可包含在将在转换高速缓冲存储器中未命中的地址转换请求转递到转换表查核器之前预筛选地址转换请求(例如,在预筛选块224中)以避免将地址转换请求重复转递到转换表查核器。在一些方面中,方法1000也可包含后筛选从转换表查核器获得的转换结果(例如,在后筛选块226中)以避免重复填入到转换高速缓冲存储器。在一些方面中,方法1000也可包含通过减少对系统存储器的存取的重复或冗余(例如,通过在如上文所描述的方法800或900中使用转换表存取筛选器602)来减少由转换表查核器执行的转换表查核行程的带宽消耗。

现参看图11,描绘根据例示性方面而被配置的无线装置的框图,且所述无线装置通常表示为1100。无线装置1100包含图2的处理系统200的某些方面,如下文将解释。特定说明上游客户端装置202,其也可为耦合到多线程mmu204及系统存储器206的处理器(例如,数字信号处理器(dsp)、中央处理单元(cpu)等)。除了经由mmu204连接到存储器206以外,在一些情况下从处理器202直接连接到存储器206也为可能的。

图11还展示耦合到处理器202及显示器1128的显示控制器1126。编码器/解码器(codec)1134(例如,音讯及/或语音codec)可耦合到处理器202。也说明例如无线控制器1140(其可包含调制解调器)的其它组件。扬声器1136及麦克风1138可耦合到codec1134。图11也指示可耦合到无线天线1142的无线控制器1140。在一个特定方面中,处理器202、显示控制器1126、mmu204、存储器206、codec1134及无线控制器1140包括于系统200中,系统200可被集成或封装为系统级封装或系统单芯片装置。

在一个特定方面中,输入装置1130及电力供应器1144耦合到系统单芯片装置200。此外,在一个特定方面中,如在图11中说明,显示器1128、输入装置1130、扬声器1136、麦克风1138、无线天线1142及电力供应器1144在系统单芯片装置200外部。然而,显示器1128、输入装置1130、扬声器1136、麦克风1138、无线天线1142及电力供应器1144中的每一者可耦合到系统单芯片装置200的组件,例如接口或控制器。

应注意,尽管图11描绘无线通信装置,但处理器202、mmu204及存储器206也可集成到机顶盒、音乐播放器、视频播放器、娱乐单元、导航装置、个人数字助理(pda)、固定位置数据单元、计算机、便携式计算机、平板计算机、移动电话或其它类似装置中。

所属领域的技术人员将了解,可使用多种不同技艺及技术中的任一者来表示信息及信号。举例来说,可由电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合表示可贯穿以上描述参考的数据、指令、命令、信息、信号、位元、符号及码片。

此外,所属领域的技术人员将了解,结合本文中所揭示的方面而描述的各种说明性逻辑块、模块、电路及算法步骤可实施为电子硬件、计算机软件或两个的组合。为了清晰说明硬件与软件的此互换性,各种说明性组件、块、模块、电路及步骤已在上文大体在其功能性方面加以描述。此功能性被实施为硬件抑或软件取决于特定应用及强加于整个系统的设计约束。所属领域的技术人员可针对每一特定应用以变化方式实施所描述功能性,但这些实施决策不应被解译为导致脱离本发明的范围。

结合本文中所揭示的方面而描述的方法、序列及/或算法可直接在硬件中、在由处理器执行的软件模块中或在两个的组合中体现。软件模块可驻留于ram存储器、快闪存储器、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、装卸式磁盘、cd-rom,或此项技术中已知的任何其它形式的存储媒体中。例示性存储媒体耦合到处理器,使得处理器可从存储媒体读取信息且将信息写入到存储媒体。在替代方案中,存储媒体可与处理器成一体式。

因此,本发明的方面可包含体现用于管理/调度多线程处理器的线程的方法的计算机可读媒体。因此,本发明不限于所说明的实例,且用于执行本文中所描述的功能性的任何装置包含于本发明的方面中。

虽然前述揭示内容展示本发明的说明性方面,但应注意,在不脱离如由所附权利要求书所界定的本发明的范围的情况下,可在本文中作出各种改变及修改。无需按任何特定次序执行根据本文中所描述的本发明的方面的方法权利要求项的功能、步骤及/或动作。此外,尽管可以单数形式描述或主张本发明的要素,但除非明确陈述限于单数形式,否则还预期到复数形式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1