存储器地址转换的制作方法

文档序号:18257348发布日期:2019-07-24 10:22阅读:340来源:国知局
存储器地址转换的制作方法

本公开涉及存储器地址转换。



背景技术:

诸如管理单元(MMU)之类的存储器地址转换装置试图将虚拟存储器地址转换为物理存储器地址。

数据处理装置通常为每个运行程序提供对由虚拟存储器地址定义的虚拟地址空间的访问。每个程序查看自己的虚拟地址空间,其中包含由该程序使用的指令和数据。在其他已建立的优势中,对虚拟寻址的使用允许操作系统通过禁止一个程序访问或破坏由另一程序使用的信息来控制存储器访问。

当需要访问虚拟存储器地址时,首先需要将虚拟存储器地址转换为物理存储器地址,使得可以从物理存储器或物理存储器缓存中获取所需的信息或者可以将所需的信息写入物理存储器或物理存储器缓存。

有时称为转换后备缓冲器(TLB)的缓存可以用作地址转换过程的一部分。TLB存储虚拟和物理存储器地址之间的最近或通常使用的转换。因此,作为地址转换过程的第一步,咨询TLB以检测TLB是否已经包含所需的地址转换。如果否,则可以使用更复杂的转换过程(通常使得TLB填充有所需的转换),例如,涉及咨询所谓的页面表,其保持地址转换信息。

在某些情况下使用多级MMU。在这种布置中,实际上使用了两个转换级。执行程序或诸如图形处理单元(GPU)之类的其他系统模块所需的虚拟地址(VA)由第一MMU级转换为中间物理地址(IPA)。IPA由第二MMU级转换为物理地址(PA)。使用多级转换的一个原因是为了多个操作系统(OS)可能在同一处理器上运行的各个“虚拟机”上使用时的信息处理的安全性。特定OS被暴露于VA到IPA转换,而仅管理程序(监视虚拟机的运行的软件)监督第2级(IPA到PA)转换。



技术实现要素:

在示例布置中,提供了一种存储器地址转换装置,包括:

页面表访问电路,用于访问页面表数据以检索转换数据,该转换数据定义了初始存储器地址空间中的初始存储器地址与输出地址空间中的相应输出存储器地址之间的地址转换;

转换数据缓冲器,用于针对虚拟地址空间的子集存储转换数据的一个或多个实例;以及

控制电路,响应于要转换的输入初始存储器地址,请求从转换数据缓冲器检索输入用于该初始存储器地址的转换数据,并且在完成对针对从转换数据缓冲器进行的检索的请求的处理之前,发起通过页面表访问电路进行对用于该输入初始存储器地址的转换数据的检索。

在另一示例布置中,提供了一种存储器地址转换装置,包括:

页面表访问装置,用于访问页面表数据以检索转换数据,该转换数据定义了初始存储器地址空间中的初始存储器地址与输出地址空间中的相应输出存储器地址之间的地址转换;

转换数据缓冲装置,用于针对虚拟地址空间的子集存储转换数据的一个或多个实例;以及

控制装置,响应于要转换的输入初始存储器地址,请求从转换数据缓冲器检索用于该输入初始存储器地址的转换数据,并且在完成对针对从转换数据缓冲器进行的检索的请求的处理之前,发起通过页面表访问电路进行对用于该输入初始存储器地址的转换数据的检索。

在另一示例布置中,提供了一种方法,包括:

访问页面表数据以检索转换数据,该转换数据定义了初始存储器地址空间中的初始存储器地址与输出地址空间中的相应输出存储器地址之间的地址转换;

针对虚拟地址空间的子集存储转换数据的一个或多个实例;以及

响应于要转换的输入初始存储器地址,请求从转换数据缓冲器检索用于该输入初始存储器地址的转换数据;以及

在完成对针对从转换数据缓冲器进行的检索的请求的处理之前,发起通过页面表访问电路进行对用于该输入初始存储器地址的转换数据的检索。

本技术的其他各个方面和特征由所附权利要求限定。

附图说明

仅通过举例的方式,将参考如附图中所示的实施例来进一步描述本技术,在附图中:

图1示出了根据一些实施例的装置;

图2示出了根据一些实施例的装置;

图3A和图3B共同示出了根据一些实施例的CPU如何分发不同的请求;

图4示出了根据一些实施例的维护操作;

图5示出了处理重叠请求的过程;

图6示出了根据一些实施例的接收新的维护操作的过程;

图7示出了根据一些实施例的维护操作的组合;

图8示出了根据一些实施例的填充队列的使用;

图9以流程图的形式示出了根据一些实施例的针对填充队列进行咨询的过程;

图10A示出了根据一些实施例的执行填充操作和维护操作的第一过程;

图10B示出了根据一些实施例的执行填充操作和维护操作的第二过程;

图11示出了根据一些实施例的在维护操作期间执行访问请求的过程;

图12示出了根据一些实施例的示例装置;

图13示出了根据一些实施例的缓存内的路(way)的重新分配;

图14示出了根据一些实施例可以如何使用指针将单个存储器分配给多个目的;

图15示出了根据一些实施例的动态地重新分配数据和地址转换的示例方法;

图16示出了根据一些实施例的对不同分配策略的使用如何改变缓存路的分发;

图17A示出了根据一些实施例如何转发对TLB处的地址的请求;

图17B示出了根据一些实施例的并行地发布对地址的请求;

图17C示出了根据一些实施例的在其中执行地址的转换使得提供转换地址并提取数据的过程;

图18示出了示出根据一些实施例的处理传入请求的方法的流程图;

图19示意性地示出了数据处理装置;

图20示意性地示出了地址转换电路和DRAM中的转换数据的存储装置;

图21和图22是示意时序图;

图23是示出方法的示意流程图;

图24示意性地示出了地址转换电路;

图25示意性地示出了DRAM;

图26示意性地示出了图25的DRAM中的数据存储装置;

图27示意性地示出了键值对;

图28示意性地示出了哈希生成器;

图29示意性地示出了写入电路;以及

图30和图31是示出各个方法的示意流程图。

具体实施方式

本描述涉及许多可能正交的技术,它们可以以任何组合一起来使用。图1示出了示例装置100,其中,同时使用了下面将讨论的所有技术。该装置包括多个处理器105a、105b...,每个处理器具有专用的转换后备缓冲器110a、110b...,用于输入地址到输出空间中的输出地址的转换。每个处理器能够经由一个或多个输入端口135将维护操作、查找操作、和填充操作发送到互连125。这些操作中的每一个操作涉及与互连125相关联的地址存储装置155(其可以用作转换数据缓冲器)。查找操作包括输入或初始地址,针对该输入或初始地址来提供输出空间中的输出地址。填充操作用于提供此类转换。同时,维护队列145存储维护操作,维护操作由维护电路150在地址存储装置155上异步执行,使得处理器110a不需要等待执行维护操作。地址存储装置155可以采用用以访问另外的TLB的电路的形式,因为转换数据可能实际上被存储在存储器115中,并且这种电路还可以访问存储器115来进行所谓的页面表遍历以填充地址存储装置。互连125经由一个或多个输出端口140提供到主存储器115的连接。主存储器经由控制器120来控制。从主存储器115读取或将要写入主存储器115的数据可以被存储在与互连125相关联的缓存160中。通过提供缓存,与请求被发送出互连125并且由存储器控制器120处理的情况相比,处理器105a、105b...可以更快地从存储器115访问数据。来自缓存160的存储可以被“偷取(stolen)”(暂时地或以其他方式重新分配)以供地址存储装置155使用,使得可用于存储地址转换的存储量可增加超过地址存储装置本身155的容量。对所偷取的存储的管理,以及对维护队列145、地址存储装置155、和缓存160的操作由控制电路130来处理。控制电路可以控制页面表遍历和TLB访问的时序,以便对于来自TLB 110a的特定转换请求,可以在完成TLB查找之前发起页面表遍历。控制器120和控制电路130可以协作以监督存储器115中的存储并以键值(key value)对的形式从存储器115检索转换数据,使得在一些示例中,多个这样的对可以被存储在存储器115的(可以由存储器115的行缓冲器(未示出)访问的)存储器单元的单个行中。注意,主存储器115和缓存160本身可以通过使用DRAM来实现。

异步维护

图2示出了根据一些实施例的装置200的示例。该装置包括一组输入端口210,其向控制电路240提供查找操作和维护操作(统称为“请求”)。具有输入地址的查找操作(查找请求)被传递到可以例如采用转换后备缓冲器(TLB)的形式的查找电路230。在一些实施例中,TLB可以经由DRAM来提供。维护操作(维护请求)被传递到维护队列220。这样的装置200可以用于在存储系统中提供异步维护并作为装置200的示例被提供,该装置200包括:输入端口210,用于从请求者接收下列各项中的任一项:包括输入地址的查找操作,以及维护操作;维护队列电路220,用于存储至少一个维护操作的维护队列;以及地址存储装置230,用于存储输入地址和输出地址空间中的输出地址之间的转换,其中,响应于接收到输入地址,输出地址根据维护队列来提供;并且响应于存储维护操作,维护队列电路使得确认被发送到请求者。

在这样的实施例中,请求者可以采用诸如中央处理单元(CPU)之类的处理器的形式。经由装置200的输入端口210,请求者能够发布包括输入地址的查找操作。请求者以可以经由输入端口210发布维护请求。例如,维护操作可以针对地址存储装置230中的条目的维护,该地址存储装置230存储输入地址和输出地址空间中的输出地址之间的转换。输出地址空间中的输出地址可以采用物理地址(PA)或中间物理地址(IPA)的形式。例如,IPA可用于在虚拟地址(VA)和物理地址(PA)之间进行部分转换。

两个进一步的操作使得装置200能够异步地执行维护操作。首先,响应于接收到维护操作,维护操作被存储,并且维护队列电路220使得确认被发送回请求者。该确认被立即发送(例如,无需等待维护操作完成)。因此,请求者不会被停顿或阻塞,直到执行维护操作。然而,由于维护操作没有立即执行,因此地址存储装置230必须禁止提供陈旧数据。换句话说,装置200必须继续表现得好像已经执行了维护操作。

其次,响应于接收到输入地址(即要转换的地址),相应的输出地址根据由维护队列电路220维护的队列来提供。再次,必须防止返回如果已经执行了列队的维护操作就不会返回的数据。下面参考图3A和图3B更详细地讨论这些过程中的每一个过程。

图2中的电路还提供了下列各项的示例:控制电路240,响应于接收到输入地址,扫描维护队列来检查与输入地址的冲突,其中,根据维护队列来如下提供输出地址:若存在冲突则返回未命中,在其他情况下提供输出地址。

当在输入端口210处提供的输入地址涉及将由维护队列220中保持的维护操作影响的地址时,可能发生冲突。换句话说,如果维护队列220中所保持的维护操作已经被执行,则针对输入地址的一个不同结果将被存储在查找电路230中。由于发生这种冲突,并且为了防止返回陈旧数据,响应于输入地址而提供TLB未命中。这将进而导致页面遍历过程开始,在此期间检索正确的输出地址。如果不存在冲突,则可以提供输出地址。

图2还示出了使得从维护队列执行所选择的维护操作的维护电路250的示例。维护电路250可以通过多种方式来选择维护操作并使得从由维护列电路220维护的队列执行所选择的维护操作。在一些实施例中,维护电路250选择在查找电路230空闲(unengaged)时执行维护操作。例如,如果存在在输入端口210处没有接收到输入地址的时间段,则维护电路250可以利用该停机时间以便使得执行一个或多个维护操作。在一些实施例中,维护电路250可以连续地使得从维护队列220中选择并执行维护操作,直到没有剩余的维护操作。在一些实施例中,如果距维护操作被添加到维护队列220已经过了一段时间或者当维护队列220已满时,则调度维护操作使之被执行。队列选择的其他技术对于技术人员是将已知的。

图2还示出了用于基于一个或多个条件来组合维护队列中的多个条目的组合电路260的示例。参考图7更详细地讨论了这样的过程。

图3A和图3B共同示出了处理包括输入地址的传入查找操作的过程。如前所述,根据维护队列来提供输出地址空间(例如,物理地址空间或部分/中间地址空间)中的相应输出地址。同时来讨论图3A和图3B。

该过程在步骤300处开始,其中,接收例如从虚拟地址到物理地址的查找操作。查找操作发生自请求者,例如,向查找电路230进行发送的CPU 310。查找操作可以采用TLB查找的形式。在步骤320处,查找电路230访问并查找维护队列220。然后,在步骤330处,确定在维护队列220中是否存在与TLB查找的冲突。如果从维护队列220到查找电路230的结果指示存在这样的冲突,则在步骤340处,查找电路230发布TLB未命中。这导致页面遍历发生,在一些实施例中,页面遍历由CPU 310或称为页面表遍历器的特殊电路来发起,以便检索物理地址。然而,如果在步骤330处,由维护队列220向查找电路230发布的结果指示不存在冲突,则在步骤350处,确定是否存在标签匹配。在检查是否存在冲突的同时,在步骤360中,在TLB 230处执行查找,并且然后在步骤350中,对相关条目进行标签的检查。标签匹配过程确定在查找电路230中,在给定输入地址的情况下是否存在相应的输出地址。在实践中,这通常通过将输入地址的一部分(称为标签)与查找电路230中的条目匹配来进行。如果未找到这样的标签,则过程前进到步骤340,在该步骤中,TLB未命中被发布回CPU 310或页面遍历器电路。替代地,如果找到匹配的标签,则在步骤370处,将相应的输出地址提供回CPU 310。如图3A中所示,当CPU 310发布维护操作时,其被发送到维护队列220。在其他情况下,例如,当查找电路230空闲时,维护队列220可以选择要执行的维护操作。然后对由查找电路230存储的一组转换执行该维护操作。注意,响应于CPU 310发布维护操作,维护队列220发送确认。因此,CPU 310不需要因为发布维护操作并等待执行该维护操作而阻塞或停顿(stall)。相反,维护操作可以列队,并然后在方便的时间执行。因此,这些附图提供了一种方法的示例,该方法包括:从请求者接收300下列各项中的任一项:包括输入地址的查找操作,以及维护操作;存储至少一个维护操作的维护队列220;以及存储输入地址和输出地址空间中的输出地址之间的转换,其中,响应于接收到输入地址,根据维护队列330来提供输出地址;并且响应于存储维护操作,使得向请求者发送确认。

图4示出了根据一些实施例的维护操作。具体地,图4示出了其中维护操作访问地址存储装置230中的多个转换的示例。图4还示出了其中维护操作按顺序访问地址存储装置230中的转换的示例以及其中地址存储装置被适配为存储器映射型的示例;并且维护操作使用非暂时访问(non-temporal accesses)来访问地址存储装置230中的转换。

非暂时访问是这样的访问:作为该访问的结果,不在缓存中安装新条目。例如,作为非暂时访问的结果,在最后一级缓存(LLC)中不存储条目。这样的动作避免了由于维护操作而将不必要的数据添加到缓存。这是因为存在这样的假设:该数据在不久的将来将不会被再次使用并因此不应将其他有用的数据驱逐(并且不应被缓存)。在一些实施例中,不是使用非暂时访问,而是使用常规访问,并且被添加到缓存的任何所得的条目被赋予高替换优先级,使得该条目更容易被替换。

图4示出了其中维护操作是无效操作的示例。在一些实施例中,无效操作使得表中的一个或多个条目的有效标志改变(例如,被清除)以指示该条目不再可用。因此,这些条目可以根据需要而由其他条目替换。在一些其他实施例中,无效操作可能使得条目被完全删除。

图4还示出了一个示例,其中,无效操作基于下列各项中的一项或多项而使得地址存储装置230中的一个或多个转换无效:虚拟地址、一系列虚拟地址、地址空间标识符、虚拟机标识符、中间物理地址和物理地址。因此,无效可以使用这些参数中的一个或多个(任何组合)以指示应当受到无效的那些条目。在一些实施例中,可以另外地(或替代地)使用其他参数。

在该特定示例中,无效操作使得其中地址空间标识符(ASID)或虚拟机标识符(VMID)为1的条目无效。这通过扫描地址存储装置中的每个条目、针对等于1的任何条目检查ASID和VMID的值来实现。在找到这样的条目的情况下,清除该条目的有效标志以指示该条目不再有效。在图4的示例中,这通过将有效标志设置为零(无效)来实现。应理解,无效操作可以基于其他字段来执行。注意,字段不必位于表本身中,而是可以通过另一表、寄存器或标志与表中的条目相关联。地址空间标识符和虚拟机标识符都是用于将表的条目分成组的技术。具体地,虚拟机标识符(VMID)可以用于标识属于具有多个虚拟机的系统中的特定虚拟机实例的条目。类似地,地址空间可以被分段为多个部分,每个部分具有其自己的标识符。甚至可以组合这些技术,使得每个虚拟机可以根据该虚拟机而将其可用存储器分成多个不同的段。例如,每个地址空间都可以被分配给在特定虚拟机实例上运行的不同应用。以这种方式,地址存储装置230中的每个条目可以与特定目的相关联。因此,例如当在特定虚拟机上运行的特定应用终止时,可以针对与该特定应用相关联的所有地址执行无效操作。类似地,如果该虚拟机例如被终止,则可以仅基于虚拟机标识符来进行无效操作。

从以上段落可以理解,维护操作可能是耗时的。因此,通过使用参考图2、图3A和图3B所描述的装置200,可以异步地执行维护,使得在执行维护操作时不需要阻塞或停顿诸如CPU之类的请求者。这在在其上执行维护操作的存储装置特别大时尤其重要。由于不立即执行维护操作,因此有必要解决查找和队列维护操作之间可能发生的冲突。这可以通过测试这种冲突来实现,并且在检测到冲突的情况下,使得检索原始数据(例如,通过发布使得执行页面遍历的TLB未命中)。以这种方式,可以维护并在适当时执行维护操作的队列。

通过同时执行多个维护操作来提高异步维护效率

图4示出了这样的例子,其中,所选择的维护操作包括扫描至少一些地址存储装置230并响应于满足条件而执行动作;在扫描期间,维护电路250响应于满足进一步的条件而执行进一步的动作;并且进一步的动作和进一步的条件对应于将从维护队列执行的进一步的维护操作。

在该特定示例中,可以认为存在用于使ASID为1的条目无效的第一维护操作。可以存在对VMID为1的条目执行无效的第二维护操作。不是对查找电路230中的每个条目执行第一扫描来查找ASID为1的条目,然后对查找电路230中的每个条目执行第二扫描来查找VMID为1的条目。而是可以执行单个扫描,检查每个条目以确定该条目的ASID或VMID的值是否为1。以这种方式,仅需要对查找电路230的条目的单个扫描,并且这可以用于减少维护操作的开销。因此,可以更高效地执行多个维护操作。应理解,动作和进一步的动作可以是相同的。类似地,条件和进一步条件也可以是相同的。

通过识别ASID或VMID的再次使用来提高异步维护效率

图5示出了这样的示例,其中,响应于与存储装置230中的下述条目有关的输入地址,装置200被适配为优先处理重叠维护操作:该条目具有与维护队列中的重叠维护操作的重叠。

当特定应用程序或虚拟机结束时,具有与该应用相关联的ASID值或与该虚拟机相关联的VMID值的TLB条目必须被无效。如果开始接收到对同一ASID/VMID的请求,则意味着必须用新条目来填充TLB。然而,这不能在执行维护操作发生。因此,当查找操作(例如,转换请求)与这样的维护操作重叠时,可能期望提升该维护操作的级别。

图5示出了与图3B中呈现的流程图相类似的流程图,该流程图已针对该改进进行了调整。该过程如关于图3B所描述的来进行。然而,在步骤330处,如果检测到维护冲突,则在步骤500处,确定发生冲突的维护操作是否是针对特定ASID或VMID的无效。如果否,则该过程如前所述前进到步骤340,其中,发布TLB未命中。否则,在步骤510处,提高维护操作优先级。这使得维护操作被更快地执行。在一些实施例中,维护操作的优先级被提高到最高等级,使得它是要执行的下一维护操作。该过程然后前进到步骤340,其中,执行TLB未命中,从而导致页面遍历。

通过响应完整维护队列来提高异步维护效率

图6中的流程图涉及这样的示例,其中,响应于在维护队列已满时接收到维护操作,维护电路被适配为执行所选择的维护操作。具体地,图6涉及其中选择是基于维护队列中将花费最少时间来执行的维护操作的示例。

在一些情况下,当维护操作队列220已经满时可以接收维护操作。在这种情况下,请求者可以被阻塞或停顿,直到队列220中的空间可用为止。对此进行处理的一种方法是维护电路250立即执行维护队列220中保持的维护操作之一,例如,在一些实施例中,维护电路250从维护队列220中选择要执行的最快维护操作并立即执行该操作。例如,如图6所示,在步骤600处,接收维护操作。在步骤610处,确定维护队列220是否已满。如果否,则过程前进到步骤670,其中,将新的维护操作添加到队列。否则,在步骤620处,开始循环,其中,获取维护队列220内保持的维护操作的下一维护操作。在步骤630处,确定该维护操作是否比迄今已确定的最快维护操作更快。默认情况下,如果尚未检查维护操作,则这将是真实的。在任何情况下,如果满足该条件,则在步骤640处,将正在检查的当前维护操作设置为当前最快操作。如果在步骤630处所检查的当前维护操作不是更快,则该过程前进到步骤650,然后该过程直接前进到步骤650。在步骤650处,确定是否还有更多维护操作要从维护队列220检查。如果是,则过程返回到步骤620,其中,获取下一维护操作。否则,在步骤660处,执行当前最快操作。然后在步骤670将在步骤600中接收到的新接收的维护操作添加到维护队列220。

通过组合维护操作来提高异步维护效率

图7示出了组合电路260的示例,其基于一个或多个条件来组合维护队列中的多个条目。例如,在一些实施例中,组合电路260组合地址存储装置230中的相邻地址。例如,与地址相邻的同一ASID和VMID相关的条目。以这种方式,可以通过用与地址范围有关的单个条目替换与相邻地址相关的多个条目来压缩维护操作的队列。

在一些实施例中,一个或多个条件包括:(i)可以合并重叠或相邻的VA/IPA区域;(ii)如果VA属于ASID,则VA的无效归入ASID的重叠无效;(iii)如果IPA属于VMID,则IPA的无效归入VMID的重叠无效;以及(iv)如果ASID属于VMID,则ASID的无效归入VMID的无效。这些条件基于VA具有相关联的ASID、ASID具有相关联的VMID以及IPA具有相关联的VMID的关系。

考虑图7的示例,队列最初具有五个操作。前两个操作可以被合并为单个操作,因为它们与同一ASID(1)和同一VMID(1)相关,并且地址相邻(0x1121与0x1122相邻)。条件(i)因此适用。因此,这些操作可以由单个无效操作替换,其用于使得其中ASID为1并且VMID为1的范围0x1121到0x1122内的地址无效。同样地,初始维护操作队列的后两个操作也用于同一ASID(2)和VMID(1),并且还涉及相邻地址(0x009D与0x009E相邻)。因此,可以对它们进行压缩以便产生使得ASID为2并且VMID为1的范围0x009D至0x009E无效的单个维护操作。因此,经压缩的维护队列具有三个条目。在该示例中,每个维护操作都与优先级相关联。在该示例中,新条目的优先级等于被组合的维护操作的最高优先级。以这种方式,维护操作不会由于与其他操作进行组合而降低优先级。在其他实施例中,可以在构成新操作的所有操作之间平均优先级。应理解,其他选项是可用的并且是技术人员已知的。

因此,可以看出,可以压缩维护队列220,从而允许将进一步的维护操作添加到维护队列220,而不必停顿或阻塞请求者。压缩过程不会导致任何维护操作丢失。组合过程仅将条目合并在一起。

通过使用填充队列来提高异步维护效率

图8示出了填充队列电路800的示例,将用于新转换的至少一个填充操作存储在地址存储装置230中,其中,输入端口210适配于接收填充操作;并且响应于填充操作具有与维护队列中的重叠维护操作的至少一些重叠,填充队列电路800存储填充操作,并且如果填充操作完全重叠维护操作,则从维护队列中移除维护操作,否则增加重叠维护操作的优先级。

当要将新条目添加到地址存储装置230时,例如当发生页面表遍历时,可能存在与未决维护操作的冲突。可能发生这种情况的一个示例是,维护操作被指示执行根据特定ASID的无效,然后是将填充特定映射的填充。在另一示例中,可以在相似的时间发布根据特定VA的无效和针对同一VA的填充。在这种情况下,可以丢弃无效,并且可以直接填充条目。

通过提供可存储填充操作的填充队列800,可以延迟填充操作,直到冲突的维护操作被处理为止。为了使得冲突的维护操作更快地得到解决,可以提高冲突(即重叠)的维护操作的优先级。如图8所示,当接收到填充操作时,它最初被发送到填充队列800。在查找电路230采用TLB的形式的情况下,填充队列800本身可以采用较小TLB的形式。这里,与维护队列进行协商以确定操作是否可以直接前进到查找电路230或者操作是否必须保持在填充队列800。关于图9更详细地示出了进行该确定的过程。一旦冲突的维护操作已经完成,则任何与该维护操作冲突的条目就从填充队列800被提升到查找电路230。类似地,进入维护队列220的维护操作咨询填充队列800以便确保现有的填充操作受到维护操作的影响。在一些实施例中,维护操作可能无法进行,直到已经执行填充操作为止。类似地,当提供输入地址作为查找操作的一部分时,可以针对填充队列800以及查找电路230来进行检查。

图9示出了从填充队列800(例如,维护队列220)发生的咨询过程的示例。在步骤900处,接收填充操作。在步骤910处,咨询维护队列220。在步骤920处,确定维护队列中的任何条目与填充操作之间是否存在重叠。例如,可以确定任何维护操作是否可能影响已经接收的填充操作。如果不存在这样的重叠,则在步骤930处执行填充操作。这使得查找电路230的一个或多个条目被更新。然后,该过程返回到步骤900。替代地,如果检测到重叠,则在步骤940处,将填充操作添加到填充队列800并且提高冲突维护操作的优先级。同样,该过程返回到步骤900。

该过程在图10A中示出,其中,执行维护操作,然后执行填充操作。在该示例中,假设维护操作不会导致地址存储装置230中的任何条目受到影响。然而,在执行维护操作之后,随后执行的填充操作导致添加以粗体显示的新条目。

因此,图10A示出了这样的示例,其中,响应于重叠维护操作完成(例如,作为被扫描的条目的一部分),在地址存储装置230上执行填充操作。作为替代,图10B示出了其中在执行维护操作时在地址存储装置230上执行填充操作的示例。具体地,维护操作扫描地址存储装置230的条目。在对填充操作将使得插入新条目处的位置执行维护操作之后,执行填充操作,从而插入新条目。然后可以对剩余的条目执行剩余的维护操作。以这种方式,维护操作不会影响填充操作,因为填充操作在维护操作影响填充操作将发生处的条目之后发生。该方法受益于局部性的原理,因为多个操作同时在存储装置中的同一空间上执行。这可以避免需要重新扫描地址存储装置230的每个条目以便定位将执行填充操作的条目。

通过允许请求中间维护来提高异步维护效率

图11提供了这样的例子,其中,所选择的维护操作包括扫描至少一些地址存储装置230并响应于满足条件而执行动作;并且响应于接收到与输入地址有关的填充操作,当输入地址与已经针对所选择的维护操作扫描的地址存储装置230的一部分相对应时,执行填充操作。

因此,在执行维护操作的同时,可以响应于输入的输入地址而同时允许提供输出地址。具体地,已经经历了维护操作的地址存储装置230的部分可以被认为是可访问的,而地址存储装置230的剩余部分被认为是不可访问的。以这种方式,如果输入地址涉及已经针对所选择的正在进行的维护操作而扫描的地址存储装置230的条目,则可以提供相应的输出地址。替代地,如果输入地址涉及未针对所选择的维护操作而扫描的地址存储装置230的部分,或者如果输入地址与地址存储装置230中的任何条目无关,则未命中被提供回请求者。因此,不需要完成维护操作以便提供转换。因此,不是提供未命中,而是可以提供转换的结果。提供计数器1000以便跟踪针对其已经执行了维护操作的地址存储装置230中的点。可以使用比较器以便确定地址存储装置230的将受查找操作或者填充操作影响的部分是否已经由维护操作扫描。

因此,图2和图11还提供了一种装置的示例,包括:存储电路230,用于存储多个条目,其中,存储电路230被适配为通过扫描多个条目中的至少一些条目来针对所选择的条目执行搜索;参考电路1000,用于存储指示,该指示指明存储电路230的一部分,该部分作为搜索的部分仍将被搜索;以及处理电路240,用于响应于多个条目中的一个条目不在存储电路230的下述部分中,执行将影响多个条目中的该条目的操作,所述部分是由参考电路所指明的、存储电路230的作为搜索的部分仍将被搜索的部分。在这种情况下,计数器1000指向仍待扫描的存储电路230的部分,该部分在搜索期间被更新。注意,在一些实施例中,即使从开始处,仅可能条目的子集是搜索过程的一部分。例如,在存储电路230利用散列表的情况下,已经大致确定了条目位于何处,仅搜索条目的子集以便找到匹配条目。以这种方式,例如,即使在执行搜索时,也可以将条目插入存储电路。

偷取存储装置

图12示出了根据一些实施例的装置1200,其中,处理器元件1220向输入端口1210提供输入地址。输入地址被提供给转换后备缓冲器(TLB)1230,其存储输入地址和输出空间中的输出地址之间的转换。输出地址端口1240允许输出输出地址(或输出地址的进一步转换)以便访问该地址处的存储器1290。同时,处理器元件1220能够经由输入数据端口1250接收数据。在一些实施例中(例如图12所示的实施例),输入数据端口是从存储器1290到装置1200,使得当访问存储器1290时,存储器1290中该位置处的数据被提供回装置。该数据可以被存储在例如由DRAM支持的缓存1260中。最后,存在输出数据的输出数据端口1270。在一些实施例中,例如图12所示的实施例,提供数据输出端口以使得装置1200能够将数据输出回处理器元件。控制电路1280用于控制TLB 1230和缓存1260。此外,尽管缓存1260用于存储数据,但它也用于存储一些转换。以这种方式,TLB 1230从缓存1260“偷取”存储空间以存储转换,例如,当TLB 1230无法存储转换时。注意,输入数据端口1250和输出数据端口没有义务按照以它们的方式被布置。例如,可以从处理器元件1220接收数据并输出到存储器1290。实际上,由于从存储器1290读取数据并将数据写入存储器1290,因此可以在两个方向上接收和输出数据。此外,各种端口1210、1240、1250、1270可以被组合-通过将输入端口1210、1250组合在一起并且将输出端口1240、1270组合在一起,或者通过将处理器端口1210、1270组合在一起并且将存储器端口1240、1250组合在一起,或者甚至将所有四个端口1210、1240、1250、1270组合在一起。

因此,图12提供了一种装置1200的示例,包括:输入地址端口1210,用于从处理器电路1220接收输入地址;地址存储装置1230,用于存储输入地址和输出地址空间中的输出地址之间的转换;输出地址端口1240,用于输出输出地址;输入数据端口1250,用以接收数据;数据存储装置1260,用于将数据存储在多个位置之一中;输出数据端口1270,用于输出存储在数据存储装置1260中的数据;以及控制电路1280,用于使得数据存储装置1260存储输入地址和输出地址之间的转换,其中,控制电路被适配为发布信号以使得响应于输入地址不存在于地址存储装置和数据存储装置而发生页面遍历。

以这种方式,即使可用于转换的空间量可能增加,地址存储装置1230本身的大小也保持不变。因此,在地址存储装置1230中查找转换所花费的时间不需要显著改变。具体地,如果已知转换被存储在TLB 1230中,则需要很少或不需要额外的访问时间。这可以通过使用例如预测器来实现,该预测器用于推测将在何处找到转换。如果位置未知,则可以并行访问TLB 1230和缓存1260,以便同时在地址存储装置1230和数据存储装置1260二者中查找转换。同样,这可以极大地限制所需的任何增加的查找时间。

类似地,电路尺寸不需要由于这种变化而显著增加。具体地,由于地址存储装置1230的大小保持不变,并且由于转换被存储在数据存储装置1260中,否则可能预期存在于这样的电路上,因此被“偷取”以便存储转换的存储装置无需添加额外的硬件。因此,装置1200的整个电路空间不需要增加。因此,可以在不需要增加电路空间的情况下实现性能改进。注意,图12还提供了其中数据存储装置1260和地址存储装置1230是单独的存储器的示例。具体地,转换后备缓冲器(TLB)1230和数据缓存1260是数据电路上的单独的器件。在一些实施例中,这些器件中的每一个可以具有它们自己的单独的控制电路,替代它们的控制电路1280,或者也具有它们的控制电路1280。然而,数据存储装置和地址存储装置不需要是单独的存储器。具体地,在一些实施例中,地址存储装置1230和数据存储装置1260可以是同一存储器,从而联合存储器的同一区域用于多个目的。

图13示出了这样的示例,其中,多个位置采用n路组关联存储器的形式;并且控制电路1280被适配为使得数据存储装置1260将转换存储在n路的一个或多个重新调整的路中。在组关联存储器中,存在可以存储一段数据的多个位置。每个这样的位置被称为“路”。例如,这可能是由于组关联存储器中的存储装置的量显著小于要存储的数据集。通过以存在多个路的方式设计存储器,可以增加存储器的灵活性。例如,可以对地址执行散列以确定应被存储到哪个位置。在希望将多段数据存储在同一位置的情况下,则提供多个“路”以便多段数据可以被存储在同一散列值中。在一个极端,存储器被“直接映射”,在这种情况下,只有一个位置可以存储数据。在另一方面,存储器是完全关联的,其中数据可以存储在任何地方。在图13的示例中,n是5,因此存储器是5路关联的。因此,对于给定的一段数据,存在五个不同的位置可以存储该数据。每个路还包括11个索引(通常称为集合),允许将11段不同的数据存储在每个路中。在图13的情况下,两个路(阴影)已被重新调整,使得它们可以由转换后备缓冲器TLB 1230使用。通常将被存储在这些经重新调整的路之一中的数据替代地被分配给其他路之一。

使得数据存储装置被重新调整的另一方法是通过使用地址。图14示出了这样的示例,其中,多个位置采用n路组关联存储器的形式;并且控制电路1280被适配为使得数据存储装置1260将转换存储在存储器的一个或多个经重新调整的组1410中。在该示例中,区域指针1400指向标记由地址存储装置1230存储的转换,以及由数据存储装置1260存储的数据之间的边界的地址。在该示例中,边界被示为移动的,因为数据存储装置1260内的集合被重新调整用于存储转换。因此,当输入(和输出)地址由处理器电路提供时,为了创建新的转换,可以将转换存储在该经重新调整的区域中。应理解,当集合被重新调整时,用于索引到数据存储装置1260中的散列函数必须适配,使得它不再指代未重新调整的集合。同时,数据存储装置1260的剩余集合1420可用于存储数据。可以例如通过集合索引来引用该边界。以这种方式,图14示出了其中数据存储装置1260和地址存储装置1230是同一存储器内的不同区域的示例。因此,图14还提供了指示由地址存储装置1410使用的区域与由数据存储装置1420使用的区域之间的边界的区域指针1400的示例。出于本说明书的其余部分的目的,尽管术语“地址存储装置”和“数据存储装置”将被使用,但这不应被解释为需要单独的存储器。此外,尽管下面的示例可以指代路、存储位置或地址,但技术人员将理解,对重新调整路或重新调整集合的使用是可互换的技术。因此,图14示出了包括下列各项的方法:从处理器电路接收输入地址;将输入地址和输出地址空间中的输出地址之间的转换存储在地址存储装置1230中;接收数据;将数据存储在数据存储装置1260中;使得使数据存储装置1260存储输入地址和输出地址之间的转换;并且响应于地址存储装置和数据存储装置中不存在输入地址,发布信号以使得页面遍历发生。

使用策略偷取存储装置

图15示出了根据一些实施例的策略的示例。具体地,图15示出了这样的示例,其中,策略针对多个位置中的每一个位置指示用于存储转换(相比于数据)的偏好。该策略以流程图1500的形式示出。在步骤1510处,接收新的转换。在步骤1520处,基于转换确定存储位置w。这可以基于执行散列运算来计算,例如,对作为转换的主题的输入地址或输出地址执行模数运算。在步骤1530处,确定当前地址未命中率是否大于存储位置w 1560的值x。在图15的示例中,w的x值是1000个中的5个。因此,在这种情况下,如果对于由处理器电路1220执行的每1000条指令,地址未命中率大于5,则过程前进到步骤1540,其中,存储转换(例如,在数据存储装置1260中)。如果否,则在步骤1550处,确定数据未命中率是否大于存储位置w 1570的值y。在这种情况下,该值被设置为1000个中的30个。因此,如果对于由处理器电路1220执行的每1000个指令,数据存储装置未命中率大于30,则过程前进到步骤1540,其中,将转换存储在数据存储装置1260中。替代地,过程前进到步骤1555,其中,确定地址存储装置访问率是否大于存储位置w 1580的值z。在这种情况下,该值被设置为4个中的3个。因此,如果地址存储装置的访问率大于由处理器电路1220执行的4个指令中的3个指令,则处理前进到步骤1540,其中,将转换存储在数据存储装置1260中。替代地,处理返回到1510。换句话说,不存储转换。在该示例中,转换由于满足三个条件中的任何一个而被存储在数据存储装置中。第一条件是地址未命中率大于第一变量x。在该示例中,x的值被给出为由处理器电路1220执行的每1000个指令的5个指令。然而在另一系统中,该值可以是例如所执行的每1000个指令10个未命中。高地址存储装置未命中率可以指示系统中发生的低效率。因此,当地址存储未命中率达到某一点时,更希望存储转换以便提高系统的效率。为了存储转换而可以满足的第二条件是数据未命中率高于变量y。在该示例中,存储位置w的变量y等于所执行的每1000个指令中的30个指令。然而,在另一系统中,这可能等于每1000个指令40个未命中。关于数据存储装置的大量未命中表明正在执行的指令中存在较差数据局部性。因此,通过替代地存储转换,可以更好地使用通常用于存储数据的空间。因此,当数据存储速率达到某一点时,可能更希望存储转换。为了存储转换而可以满足的第三条件是地址存储装置访问率高于变量z。在该示例中,存储位置w的变量z等于所执行的每4个指令中的3个指令。大访问率指示可能存在对存储设备之一的争用,因此可能希望通过替代地将数据存储在数据存储装置中来扩展工作负载。

图15还示出了其中替换策略可动态配置的示例。具体地,w的x、y和z的值分别存储在寄存器1560、1270和1580中。以这种方式,可以改变存储位置w的用于存储转换而不是数据的偏好。当然可以理解,还可以设置x、y和z的全局值,这对于所有存储位置都是有效的。图15还提供了这样的示例,其中,控制电路1280被适配为使得数据存储装置1260根据至少一个第一条件来存储输入地址和输出地址之间的转换。具体地,图15示出了其中第一条件来自包括下列各项的列表的示例:地址存储装置1230的未命中率、地址存储装置1230的命中率、地址存储装置1230的访问率、数据存储装置1260的未命中率、数据存储装置1260的命中率、以及数据存储装置1260的访问率。

应理解,在一些其他实施例中,步骤1530、1550和1555处的条件可以通过测试小于预定义常数的值来反转。在步骤1530和1550处的测试的情况下,测试可以针对大于而不是小于预定义常数的值。此外,在步骤1555处的测试的情况下,访问率可以考虑数据存储装置的访问率。还可以替代地或者也考虑其他度量。例如,可以使用的另一度量是多个时钟周期中的未命中、命中或访问的数量。

图16提供了这样的示例,其中,控制电路1280被适配为使得入地址和输出地址之间的转换被存储在数据存储装置1260的一部分中。在该示例中,数据存储装置1260是缓存。具体地,数据存储装置1260是5路关联缓存,每个路包括11个存储位置。存储转换的数据存储装置1260的部分以灰色显示。具体地,应注意,路的数目对于每个存储位置都不同。例如,第一存储位置1650仅具有被分配用于存储转换的单个路,如由第一指示符1600所指定的,其在转换被考虑存储在该位置1650处时考虑数据存储装置未命中率和地址存储装置未命中率。第二存储位置1660具有被分配用于存储转换的四个路,如由第二指示符1610所指定的,其在转换被考虑存储在该位置1660处时也考虑数据存储装置未命中率和地址存储装置未命中率。以这种方式,图16是其中该部分的尺寸取决于至少一个第二条件的示例。具体地,图16示出了其中第二条件来自包括下列各项的列表的示例:地址存储装置1230的未命中率、地址存储装置1230的命中率、地址存储装置1230的访问率、数据存储装置1260的未命中率、数据存储装置1260的命中率和数据存储装置1260的访问率。应理解,由于数据存储装置未命中率和地址存储装置未命中率随时间变化,因此不同的存储位置可能最终具有被分配用于转换的不同数量的存储装置。这提供了灵活性,使得如果在未命中率高的时间发生大量转换,则可以为这些转换提供存储装置,而不管它们将被放置在存储器中何处。

偷取存储装置访问进程

图17A示出了响应于地址存储装置1230中的输入地址的未命中,向数据存储装置1260发送读取请求以进行转换的示例。具体地,在TLB 1230处从处理电路1220接收请求。该请求包括需要相应输出地址的输入地址。如果在TLB 1230处发现这种转换,则发生“命中”,并且输出地址被转发回处理电路1220。如果否,则发生“未命中”,并且请求被转发到缓存1260,其在一些实施例中是最后一级缓存(LLC)。这里,针对输入地址搜索被“偷取”以供由TLB 1230使用的缓存1260的部分。如果发生“命中”,则将所请求的输出地址转发回处理电路1220。否则,发生“未命中”,并且由于缓存1260是LLC,这导致执行页面遍历。注意,在其中TLB 1230和缓存1260是单个存储器的示例中,转发可以在同一电路内本地发生。然而,在这种情况下,仍可以执行两次搜索-一次在由TLB 1230使用的第一存储位置上并且一次在主要由缓存1260使用的辅助位置上。替代地,可以执行单次搜索。在这些示例的每一个示例中,如果一次或多次搜索失败,则处理电路1220执行页面遍历。

图17B示出了这样的示例,其中,读取请求与所发布的页面遍历请求被并行地发送到数据存储装置1260。因此,响应于在TLB 1230处发生的未命中,请求将被转发到缓存1260,并且处理电路1220将同时发布页面遍历请求以获得相关联的输出地址。以这种方式,如果需要页面遍历,则它不会被缓存1260的附加搜索延迟。这是因为当在缓存1260中找到所请求的输出地址时,与正在搜索的缓存1260同时执行页面遍历,或者通过执行页面遍历,它被立即返回到处理电路1220。

图17C示出了这样的示例,其中,响应于基于输入地址确定输出地址,装置1200被适配为提取存储在与输出地址相关联的数据存储装置1260中的数据。当TLB 1230接收到请求时,如果发生命中,则相应的输出地址被转发回处理电路1220。此时,TLB 1230向缓存1260做出数据请求。如果在缓存1260处发生命中,则数据被返回到处理电路1220。如果在TLB 1230处存在针对所请求的输入地址的未命中,则该请求被转发到缓存1260。此时,如果存在命中,则输出地址被转发回处理电路1220,并且在缓存1260内部进行数据请求。此后,如果存在针对数据请求的命中,则数据被转发回处理电路1220。因此,不需要将地址转发回处理器电路1220以便由处理电路1220做出后续数据访问请求。相反,可以将数据与地址一起返回,而不必涉及处理电路1220。这节省了转发地址的时间,处理电路1220发布数据请求,并且数据请求被转发回缓存1260。因此,可以更快地检索数据。技术人员将理解,以传统方式处理未命中。

图18示出了流程图1800,其示出了根据一些实施例的处理传入请求的方法。实现存储装置的偷取的一种方法是创建不对应于后备存储装置的一系列PA空间(例如,通过伪IO设备或特殊读取请求来告知缓存控制器尝试读取地址,并且如果读取无法完成则返回指示失败的信号)。例如,该机制可以是控制电路1280的一部分或TLB 1230或缓存1260的控制器的一部分。这使得可以将可缓存的物理地址空间的区域标记为适合于存储地址转换。然而,由于范围不被支持(unbacked),因此它实际上并不将转换存储在后备存储装置(例如DRAM)中。以这种方式,可以使得缓存来“缓存”相信被存储在存储器中但未被存储的转换。如果作为请求的一部分所提供的地址落在预定义范围内,则该请求是针对转换的请求。虽然通常情况下,对不在LLC中的可缓存数据的请求将导致从存储器中提取数据,但在PA空间的范围不对应于后备存储的情况下不能进行这样的操作,因为,如上所述,此范围实际上不受存储器支持。因此,当检测到这样的请求时,它不能直接从存储器中提取数据。相反,它发布使得页面遍历发生的信号(例如,发送到控制电路1280)。在一些实施例中,这使得从存储器加载页面转换,并且从那些页面转换确定所期望的地址转换。

因此,流程图1800在步骤1810处开始,其中,接收请求。请求可以针对地址转换或者可以针对数据。因此,请求将包含需要数据或转换的地址。在步骤1820处,执行查找。查找尝试在如前所述的地址存储装置1230和数据存储装置1260中的一个或多个中完成请求。如果在步骤1830处找到所需信息,则过程返回到步骤1810,其中,接收下一请求。替代地,过程前进到步骤1840,其中,确定请求是否落在预定义范围内。如果是,则在步骤1850处,发布使得页面遍历发生的信号。替代地,在步骤1860处,从存储器加载数据。在任一情况下,该过程然后返回到步骤1810。在该示例中,假设预定义范围是不对应于后备存储的地址空间。然而,在其他实施例中,步骤1840可以测试地址是否落在预定义范围之外,并且预定义地址范围可以由对应于后备存储的地址空间来定义。

因此,流程图1800示出了一种装置的行为,其中,当地址存储装置1230和数据存储装置1260中不存在转换时,响应于针对该转换的请求,控制电路1280被适配为发布信号以使得页面遍历发生。

TLB查找和页面表遍历的时序

图19示意性地示出了数据处理装置的另一示例,包括:一个或多个处理元件(PE)1900、互连电路1910、动态随机存取存储器(DRAM)1920和DRAM控制器1930。这提供了数据处理装置的示例,包括:存储器1920,根据物理存储器地址可访问;一个或多个处理元件1900,用于生成用于访问存储器的虚拟存储器地址;以及存储器地址转换装置1915,用于提供由一个或多个处理元件生成的初始存储器地址到被提供给存储器的物理存储器地址的转换。在一些示例中,诸如页面属性、读取、写入和执行许可之类的属性也可以作为转换过程的一部分来获得并且被提供有输出存储器地址。在示例布置中,一个或多个处理元件1900各自包括相应的转换后备缓冲器1905,以存储由该处理元件生成的初始存储器地址到被提供给存储器的物理存储器地址的一组转换;转换后备缓冲器被配置为从存储器地址转换装置请求转换后备缓冲器未存储的转换。

图19的布置单独或组合地适用于参考图20至图31所讨论的各种技术。

处理元件1900中的每一个可以访问DRAM 1920中的存储器位置。原则上,该访问可以直接通过实际(物理)存储器地址。然而,为了提供不同处理元件(或者在一些情况下在处理元件1900上运行的不同操作系统)的存储器访问之间的划分和一定程度的安全性,处理元件1900通过所谓的虚拟或初始存储器地址来指代存储器地址。这些需要转换成输出或物理存储器地址以访问DRAM 1920中的实际(物理)存储器位置。

可以通过与每个处理元件相关联的所谓的转换后备缓冲器(TLB)1905来执行第一级转换。TLB 1905存储或缓冲在虚拟存储器地址和物理存储器地址之间最近使用的转换,使得提供给TLB 1905的虚拟存储器地址被转换为物理存储器地址,该物理存储器地址然后形成对DRAM 1920的存储器访问的一部分。然而,TLB具有有限的大小并且不能存储可由处理元件1900调用的每个可能的存储器地址转换。在TLB 1905中不存在所需的转换的情况下,TLB指例如形成互连电路1910的一部分的转换装置1915。转换装置将在下面将被详细描述,并且进行操作以提供或以其他方式获得所需的转换并将其传递回TLB 1905,其中,它可用于将虚拟存储器地址转换为物理存储器地址。

因此,图19提供了一种数据处理装置的示例,包括:

存储器1920,根据物理存储器地址可访问;

一个或多个处理元件1900,用于生成用于访问存储器的虚拟存储器地址;以及

存储器地址转换装置1915,用于将由一个或多个处理元件生成的虚拟存储器地址转换为被提供给存储器的物理存储器地址。

图20更详细地示出了转换装置的操作。

转换装置1915维持所谓的DRAM支持的TLB。也就是说,转换装置1915在DRAM 1920中维持类似于TLB 1905的缓冲器,但通常相当大,包含转换数据(示意性地示出为DRAM 1920的保留或阴影部分1921)。在DRAM 1920中维持这样的缓冲器允许缓冲器相对较大,因为相对于处理元件1900通常在片外的DRAM容量通常远大于被提供给本地TLB 190的典型片上静态RAM(SRAM)存储装置。

因此,获得TLB 1905所请求的所需转换的第一尝试是转换装置1915咨询DRAM支持的TLB数据。

然而,DRAM支持的TLB也具有有限大小,虽然比本地TLB 1905更大。在DRAM支持的TLB中没有找到用于特定转换的数据的情况下,可以执行所谓的页面表遍历过程。这涉及咨询也存储在DRAM中的所谓的页面表的层级,它们一起提供所有当前允许的存储器地址转换的确定集合。

转换装置1915包括控制电路2000以控制DRAM支持的访问电路2010和页面表遍历访问电路2020。这两者都通过DRAM控制器1930咨询DRAM 1920的相应部分,以在从其可以导出转换的DRAM支持的TLB访问电路2010或页面表数据的情况下、在页面表遍历器访问电路2020的情况下获得转换数据的实例。控制电路2000因此响应于将被转换的输入初始存储器地址,来请求从转换数据缓冲器检索用于输入初始存储器地址的转换数据,并且在完成对从转换数据缓冲器检索的请求的处理之前,发起通过页面表访问电路检索用于输入初始存储器地址的转换数据。

页面表遍历访问电路2020被布置为访问页面表数据以检索定义初始存储器地址空间中的初始存储器地址与输出地址空间中的相应输出存储器地址之间的地址转换的转换数据。DRAM支持的TLB是用于针对虚拟地址空间的子集存储转换数据的一个或多个实例的转换数据缓冲器的示例。

作为其操作的一部分,DRAM支持的TLB访问电路2010向控制电路2000提供“有效”信号2015。控制电路2000提供控制,并且在一些情况下,向DRAM支持的TLB访问电路和页面表遍历访问电路2020提供取消(或至少取消发起)信号2005。这提供了一个示例,其中,转换数据缓冲器被配置为通过提供包括给定转换数据或指示给定转换数据当前未被转换数据缓冲器保持的数据的响应,来响应对检索给定转换数据的请求。

下面将讨论对这些信号的使用的示例。

示例布置提供了相对于先前提出的布置的电路2010、2020的操作的时序的变体。为了将这些置于上下文中,图21是示出先前提出的TLB和转换装置的操作的示意性时序图。

图21中的四条水平线分别示意性地示出了本地TLB 1905、DRAM支持的TLB访问电路2010、页面表遍历访问电路2020和DRAM 1920的操作。时间如所示出的从左到右流动。

通过在本地TLB 1905中找不到所需的转换来促使对DRAM支持的TLB的访问,使得本地TLB 1905(在阶段2100处)从转换装置1915请求转换。在先前提出的布置中,这使得DRAM支持的TLB访问电路2010访问(在阶段2105处)DRAM以查找是否存在所需的转换数据。来自DRAM 1920的响应被显示为阶段2110。如果存在“命中”,也就是说在DRAM支持的TLB中找到所需的转换数据实例,则该转换数据被返回到本地TLB,作为阶段2115并且该过程终止。如果否,则DRAM支持的TLB访问电路向控制电路2000指示所请求的转换数据的实例不可用(通过不设置“有效”信号,或通过将其设置为指示“无效”的状态),使得控制电路2000然后向页面表遍历访问电路2020发布请求2120,以进行页面表遍历以获得所需的转换。使用已建立的技术,页面表遍历涉及多个连续的存储器访问2125,以便访问所需的页面表的层级以获得转换。结果是在阶段2130处提供的所需的转换,最终在阶段2135处被发送到本地TLB 1905并且该过程终止。

如阶段2160所示,但不形成图21的时间关键路径的一部分,当输入初始存储器地址的转换数据当前未被转换数据缓冲器保持时,控制电路被配置为将从页面表访问电路接收的输入初始存储器地址的转换数据存储在DRAM中的转换数据缓冲器中。

因为在先前提出的示例中,不发起页面表遍历,直到DRAM支持的TLB查找失败或未命中为止,在最坏的情况下,本地TLB 1905在2100处的初始请求与本地TLB 1905接收所请求的转换数据之间可能存在长延迟2150。

相反,图22示意性地示出了根据本公开的示例的示例布置,其中,控制电路被配置为请求从DRAM支持的TLB检索所需的转换数据的实例,并且在完成对从DRAM支持的TLB中检索的请求的处理之前,发起通过页面表遍历访问电路2010检索同一转换数据。

在一些示例中,控制电路可以基本上同时发起两个过程。

因此,参考图22,在本地TLB 1905的请求2100之后,控制电路2000发起DRAM支持的TLB查找2200,并且基本上同时或者至少在完成该TLB查找之前,发起页面表遍历访问电路2020的页面表遍历2205。因此,两个过程同时进行。在需要页面表访问的情况下,这可以通过比等待直到转换数据缓冲器访问失败“提前”发起页面表访问来节省延迟。

可选的页面表访问的提前终止

然而,如果存在DRAM支持的TLB访问电路2010的命中,则可选地可以终止页面表遍历(在阶段2210处示意性地示出)。这不是必需的并且实际上可以允许页面表遍历完成,在这种情况下,所有将发生的是也将从页面表中检索同一转换数据。然而,通过在TLB命中的情况下在2210处终止页面表遍历,可以潜在地实现省电(与页面表遍历的其余部分不再发生有关)。

在DRAM支持的TLB命中的情况下,后续过程类似于图21,并且在2215处将所需的转换数据的实例提供给本地TLB。

然而,如果在DRAM支持的TLB中存在未命中,则页面表遍历在2220处继续,直到在阶段2225处将从页面表遍历导出的所需转换提供给本地TLB 1905。在这种情况下,提供转换的总体延迟或时间段被示出为2232,并且通过例如在DRAM支持的TLB查找开始时或者至少在DRAM支持的TLB查找完成之前提前开始页面表遍历,在图21所示的布置上存在被示意性地示出为时间段2230的时间节省。

同样,如阶段2260所示,但不形成图22的时间关键路径的一部分,当输入初始存储器地址的转换数据当前未被转换数据缓冲器保持时,控制电路被配置为将从页面表访问电路接收的输入初始存储器地址的转换数据存储在DRAM中的转换数据缓冲器中。

图23是示出适合于上述讨论的方法的示意流程图。

在步骤2300处,访问页面表数据以检索定义初始存储器地址空间中的初始存储器地址与输出地址空间中的相应输出存储器地址之间的地址转换的转换数据。

这里,请注意,初始存储器地址空间可以是虚拟存储器地址空间,并且输出存储器地址空间可以是物理存储器地址空间。然而,在一些其他布置中,在一些情况下使用所谓的中间物理地址以便从各个操作系统隐藏转换过程或至少转换过程的全部范围,使得IPA到PA转换由所谓的管理程序执行。与此处讨论的原理相同的原理可以涉及下列各项中的任何一项:VA到PA转换;VA到IPA转换;和/或IPA到PA转换。

因此,设想了各种实施例,可以使用这些技术来实现所有或任何这些实施例,其中:

初始存储器地址空间是虚拟存储器地址空间并且输出存储器地址空间是物理存储器地址空间;或者

初始存储器地址空间是中间物理存储器地址空间并且输出存储器地址空间是物理存储器地址空间;或者

初始存储器地址空间是虚拟存储器地址空间并且输出存储器地址空间是中间物理存储器地址空间。

在多阶段转换布置中,这些技术可以用于一个或多个转换阶段。

参考回图23,在步骤2310处,对于初始存储器地址空间的子集,转换数据的一个或多个实例被存储在诸如DRAM支持的TLB之类的转换数据缓冲器中。

在步骤2320处,响应于要转换的输入初始存储器地址,例如从本地TLB 1905接收的输入初始存储器地址,请求转换数据以从诸如DRAM支持的TLB之类的转换数据缓冲器中检索。

然后,在步骤2330处,在完成对从转换数据缓冲器检索的请求的处理之前,发起通过页面表访问电路(例如上面讨论的电路2020)检索输入(所需)初始存储器地址的转换数据。

实际上,如果在步骤2340处,从DRAM支持的TLB成功检索到所需数据,则如上所述可选的步骤2350响应于从诸如DRAM支持的TLB之类的转换数据缓冲器中检索到输入初始存储器地址的转换数据,可以涉及发起取消从页面表检索输入初始存储器地址的转换数据。在一些情况下,这可以通过避免页面表访问的至少一部分来节省功率。

否则,在没有从DRAM支持的TLB成功检索到数据的情况下,在步骤2360处由页面表遍历机制获得所需的转换数据,并且可以将其存储在支持DRAM的TLB中。

步骤2320、2330在图23中被串行示出,但在一些示例中(为了在可能需要页面表访问的情况下提供潜在改进的总延迟节省),控制电路可以被配置为基本上与请求从转换数据缓冲器检索输入初始存储器地址的转换数据同时,发起通过页面表访问电路检索输入初始存储器地址的转换数据。换句话说,步骤2320、2330可以基本上同时发生。原则上,步骤2330甚至可以作为两个步骤中的第一个来发起。然而,示例实施例的最宽泛方面仅设想在完成转换数据缓冲器查找之前开始页面表访问,这仍然可以实现延迟节省。

预测的推导

现在转到图24,在一些示例中,控制电路2000被配置为推导对转换数据缓冲器当前是否保持输入初始存储器地址的预测。下面将讨论可以推导和利用该预测的方式。

一般而言,如果提供对所需转换是否可能由DRAM支持的TLB保持的预测,则可以延迟或避免页面表查找。在其他示例中,如果提供了可能需要页面表访问的预测,则可以避免或延迟DRAM支持的TLB查找。这些实例中的任何一个都可以节省功率。然而,如果预测是错误的,则它们可以通过将系统的总延迟返回到类似于图21的延迟来引入延迟惩罚。换句话说,当预测指示输入初始存储器地址当前由转换数据缓冲器保持的至少第一阈值似然(likelihood)时,控制电路被配置为推迟发起通过页面表访问电路检索输入初始存储器地址的转换数据,直到从转换数据缓冲器接收到响应。在其他示例中,当预测指示小于输入初始存储器地址当前由转换数据缓冲器保持的第二阈值似然时,控制电路被配置为针对不多于将转换的输入初始存储器地址实例的子集来请求从转换数据缓冲器检索输入初始存储器地址的转换数据。

如前所述,控制电路2000控制缓冲器查找电路2010和页面表遍历访问电路2020来访问由DRAM 1920保持的数据。缓冲器查找电路2010向控制电路2000提供可用性信号2015以显示DRAM支持的TLB查找是否成功。在示例布置中,还将可用性信号(在图24中)提供给形成计数器电路2400的一个或多个计数器。计数器电路2400被布置为在转换数据缓冲器的响应中检测针对其可用性信号指示响应包括所请求的转换数据的响应的实例,以及包括指示所请求的转换数据当前未由转换数据缓冲器保持的数据(例如否定可用性指示2015)的响应的实例的相对数目。

因此,控制电路可以包括计数器电路,用于在转换数据缓冲器的响应中检测包括所请求的转换数据的响应的实例,以及包括指示所请求的转换数据当前未由转换数据缓冲器保持的数据的响应的实例的相对数目。

在一些示例中,计数器电路2400包括这样的电路,该电路响应于转换数据缓冲器提供所请求的转换数据(正可用性信号2015),而在一个极性中改变计数值(例如递增),并且响应于转换数据缓冲器未保持该数据(也就是说,缓冲器查找电路2010提供诸如负可用性指示2015之类的数据,指示所请求的转换数据当前未被转换数据缓冲器保持),而在另一极性中改变计数值(例如递减)的电路。在每种情况下都可以使用相对极性中的任何一个,并且增量和减量可以彼此不同并且不需要是+/-1。换句话说,递增的幅值不必与递减的幅值相同。

比较器2410将计数值与第一和第二阈值THR1和THR2进行比较。在一些示例中,计数器可以是饱和计数器,使得计数值被约束为不超过计数上限或不低于诸如0之类的计数下限。

计数器电路2400可以包括一个计数器,或者在其他示例中可以包括多个计数器,以检测一类或多类存储器地址事务的相对数目,使得预测可以更好地与当前事务的分类相匹配。示例类别的列表可以包括从包括下列各项的列表中选择的一个或多个:

·指示请求转换的虚拟机的类别(如例如由形成转换请求的一部分的虚拟机标识符所指示的);

·指示多个初始地址空间中的初始地址空间的类别(如例如由形成转换请求的一部分的地址空间标识符所指示的);

·指示请求转换的处理器的程序计数器的类别(如例如由形成转换请求的一部分的程序计数器值所指示的);以及

·指示针对其请求转换的初始地址的类别。

阈值THR 1、THR 2之一可以是指示第一阈值似然(例如上阈值)的值。当预测或计数值至少指示第一阈值似然时,这进而指示输入初始存储器地址当前由转换数据缓冲器保持的似然,控制电路2000被配置为推迟通过页面表遍历访问电路2020检索针对该输入初始存储器地址的转换数据,直到从转换数据缓冲器接收到响应。因此,使用此阈值,操作可以返回到图21中示意性示出的情况。在预测正确的情况下,这节省了图22的操作的功率。在预测错误的情况下,延迟不需要比图21的延迟更严重。该预测至少基于针对DRAM支持的TLB已经满足的最近转换请求的计数数目(一般地或全局地,或者针对多个计数器所涵盖的一个或多个类别的特定值)发生的上阈值。

表示输入初始存储器地址当前由转换数据缓冲器保持的较低似然的第二阈值似然由较低计数值表示,并且-其中,计数或相关计数小于第二阈值-这使得控制电路针对不多于将转换的输入初始存储器地址实例的子集来请求从转换数据缓冲器检索输入初始存储器地址的转换数据。在一些示例中,这可以根本不是实例,但这可能导致难以检测由DRAM支持的TLB所保持的数据的增加的计数或增加的似然,假设似然由成功的TLB查找的计数确定。换句话说,如果当计数降至低于下限阈值时不再使用DRAM支持的TLB,则这可能导致DRAM支持的TLB保持所需转换的似然再也不会增加的情况。为了解决该潜在问题,可选地,另一计数器2420,在模N的基础上从1到N重复地对转换数据访问的实例进行计数,其中,N是大于1的整数,可以通过信号2430覆盖来自比较器2420的似然信息(例如,每当它达到N时),以强制由查找电路2010进行DRAM支持的TLB查找(例如,作为同一操作的一部分来重置预测机制重置)。换句话说,子集可以是将转换的输入初始存储器地址的N个实例中的1个,其中,N是大于1的整数。

因此,如上所述对第二阈值的使用提供了一种布置的示例,其中,当预测指示小于输入初始存储器地址当前由转换数据缓冲器保持的第二阈值似然时,控制电路被配置为不要求从转换数据缓冲器检索输入初始存储器地址的转换数据。

DRAM中的存储装置

图25示意性地示出了图19的DRAM 1920的示例布置的各方面,提供了用于提供存储位置的阵列的动态随机存取存储器的示例。

DRAM 1920包括按照行和列布置的存储位置2505的阵列2500、行缓冲器2510、列多路复用器2515和行解码器2520。对于DRAM,每个存储位置2505包括一组位单元,每个位单元包括电容器,其可以选择性地充电或放电以表示与由相应的存储位置2505表示的总体值的一个位相应的1或0。

对DRAM 1920的访问分两个阶段执行。首先,发布指定行地址2525的激活命令。行解码器2520激活相应的行2535,以将存储在相应行的每个存储位置2505中的信息带入行缓冲器2510。其次,列地址2530伴随实际的读取/写入命令,其控制列多路复用器2515来选择与活动行内的指定列相对应的行缓冲器2510的条目,并输出从该条目读取的信息作为读取数据,或者基于写入命令所提供的写入数据更新该条目中的数据。对于写入操作,对行缓冲器2510的写入也可以被传播回相应的存储位置2505。在使用关闭行缓冲器2510和活动行2535之间的连接的预充电命令来关闭行之前,可以在同一活动行内执行多个读取/写入操作,确保活动行2535的存储位置已经被更新以反映对行缓冲器2510的任何写入,并重置准备用于将被选为活动行的另一行的行缓冲器2510。

因此,这里描述的示例DRAM支持的转换数据缓冲器包括访问电路(诸如行解码器)以访问所选择的行并将信息从所选择的行传送到行缓冲器。在示例布置中,动态随机存取存储器被配置为读取各自少于一行的条目的数据突发中的数据,并且发送与键值相对应的行缓冲器的一部分。通常,在示例布置中,DRAM被配置为在数据突发中传送数据,并且仅传送与所提供的键相对应的行缓冲器的部分。注意,术语“突发”描述了DRAM如何通信而不是如何从数据阵列读取数据。此技术可用于在匹配键之后输出所需的数据。

图26示意性地示出了用于从图25的存储器检索转换数据的技术的操作,特别是从行缓冲器2510,其在该上下文中已经加载了从图25的存储器的活动行2535检索的数据,并且包括多个条目以存储来自存储器阵列的行的相应部分的信息。

键值2600至少取决于要转换的虚拟存储器地址。行缓冲器包含多组键值数据,例如组2610。行缓冲器中的每个键值K1、K2、K3、K4与相应的值条目V1、V2、V3、V4相关联。通过使用与所存储的键值K1...K4相同的根据虚拟存储器地址来导出新的键值2600,比较电路2620可以将键值2600与存储在行缓冲器2510的至少一个键条目K1...K4中的信息进行比较,每个键条目具有相关联的值条目V1...V4,用于至少存储相对应的输出存储器地址的表示。以这种方式,比较电路2620可以标识至少一个键条目中的哪一个键条目(如果有的话)是存储与键值2600匹配的信息的匹配键条目。

电路2634将四个比较电路2620的输出2632组合成控制输出电路2630的操作的格式,输出电路2630在比较输出2632的控制下输出值条目V1...V4中的一个来作为输出值2640,以便在存在匹配键条目时,至少输出与匹配键条目相关联的值条目中的输出存储器地址的表示。

值条目提供所需的转换,如下面参考图27所讨论的。

因此,图26结合图19、20和25提供了存储器地址转换装置1915的示例,包括:页面表访问电路2020,用于访问页面表以检索定义初始存储器地址空间中的初始存储器地址以及输出地址空间中的相应输出存储器地址之间的地址转换的转换数据;转换数据缓冲器2010、1920,用于针对初始地址空间的子集存储转换数据的一个或多个实例;转换数据缓冲器包括:按照行和列布置的存储位置2505的阵列;行缓冲器2510,包括多个条目2610,每个条目存储来自阵列的行的相应部分的信息;以及比较电路2620,响应于至少取决于初始存储器地址的键值2600,将键值与存储在行缓冲器的至少一个键条目K1-K4中的每一个键条目中的信息进行比较,每个键条目具有用于至少存储相对应的输出存储器地址的表示的相关联值条目,并且标识至少一个键条目中的哪一个键条目(如果有的话)是存储与键值匹配的信息的匹配键条目;以及输出电路2630,用于在存在匹配键条目时,至少输出与匹配键条目K1-K4相关联的值条目V1-V4中的输出存储器地址的表示。

示例实施例可以提供一种高效机制,用于使用单个存储器访问来访问DRAM支持的转换数据缓冲器中的转换数据,使得可能作为单个存储器访问来访问所需的行(例如,其可以通过散列初始存储器地址或根据初始存储器地址的一部分来访问),并且然后将该行的内容与取决于初始存储器地址的键值进行比较,以检测该行是否包含所需的转换。这可以潜在地减少检索转换的延迟和存储器流量,因为对DRAM的存储器访问可能相对较慢,因此仅需要一个这样的访问是有利的。通过为存储在存储器行中的转换数据提供键值布置,可以将多个转换存储在由单个散列(或其他依赖性)初始存储器地址访问的行中,这可以提高DRAM支持的转换数据缓冲器的存储效率。具体地,使用对初始存储器地址的至少一部分的散列或其他依懒性可以允许存储器行被高效地保留以用于初始存储器地址。在示例布置中,DRAM行的索引是散列(或部分)(VFN、VMID、ASID),并且对于键也是如此。DRAM行和键的组合应是特定元组(VFN、VMID、ASID)的唯一组合。散列值的示例允许相对于初始存储器地址的存储器行的分布被随机化(或伪随机化)。如果存储器行已满(因为可能其他初始存储器地址也指向那里)并且需要存储新的转换(例如,当转换数据缓冲区当前未保持输入虚拟存储器地址的转换数据时,使得控制电路被配置为将从页面表访问电路接收到的输入虚拟存储器地址的转换数据存储在转换数据缓冲器中),则响应于检测器电路检测到所选择的行不具有足够的未使用的容量来存储转换数据(例如,使用与读取操作中相同的散列/依赖性来选择行),牺牲者删除电路可用于选择所选择的行中的键条目和相关联的值条目以进行重写(例如,基于存储在行本身或在存储器控制器的控制之下的不同存储器或存储器区域中的信息的替换策略),从而提供所选择的行中的未使用的键和值条目。示例选择标准可以包括从包括下列各项的列表中选择的一项或多项:最近最少访问的键值和匹配条目;键值和匹配条目的随机或伪随机选择;非最近访问的键值和匹配条目;以及所选择的行的先进先出选择。

在示例布置中,键值可以取决于从包括下列各项的列表中选择的一项或多项:指示请求转换的虚拟机的数据;指示多个虚拟地址空间中的初始地址空间的数据;以及指示针对其请求转换的初始地址的数据。因此,使用这些技术,键值可以定义由相关联的值提供的所需转换。

图27示意性地示出了键值对,其中,键包括定义初始存储器地址的虚拟机标识符(VMID)、地址空间标识符(ASID)、虚拟帧号(VFN)的至少一部分至少与帧的分辨率或页面大小的串联,并且该值在该示例中包括定义输出地址的物理帧号至少与帧的分辨率或页面大小的串联,并且在这些示例中还包括定义与转换相关联的读取/写入/执行或其他示例权限等的一个或多个属性。因此,在示例实施例中,键值取决于从包括下列各项的列表中选择的一项或多项:指示请求转换的虚拟机的数据;指示多个虚拟地址空间中的虚拟地址空间的数据;以及指示针对其需要转换的虚拟地址的数据。

这些字段的示例数据大小如下:

因此,每个键值对占据(例如)16个字节,允许将四个这样的对存储在示例64字节存储器行中。

在选择存储器位置的阵列的行方面,可以使用所谓的散列生成器2800(图28),使得转换数据缓冲器包括行选择电路,用于根据初始存储器地址的一部分来选择阵列的行;以及访问电路(2520,图25),用于访问所选择的行并将信息从所选择的行传送到行缓冲器2510。在给出的特定示例中,行选择电路包括散列生成器,例如,被配置为从表示虚拟存储器地址的至少一部分的输入数据2810生成散列值以便根据散列值来选择行的散列生成器2800。如上所述,在示例布置中,DRAM行的索引是散列(或部分)(VFN、VMID、ASID),并且对于键也是如此。DRAM行和键的组合应是特定元组(VFN、VMID、ASID)的唯一组合。

图29示意性地示出了将数据写入存储器阵列以提供DRAM支持的转换数据缓冲器的电路。写入过程发生在例如由图23的步骤2360所表示的情况下,其中,当输入虚拟存储器地址的转换数据当前未由转换数据缓冲器保持时,控制电路被配置为将从页面表访问电路接收的输入虚拟存储器地址的转换数据存储在转换数据缓冲器中。在使用这里描述键-值结构的情况下,图29的布置参与该写入。图29的电路包括行选择器2900,其使用图28的布置来选择行并根据初始存储器地址或其至少一部分来填充行地址2525。这提供了一个示例,其中,为了将转换数据存储在转换数据缓冲器中,行选择电路被配置为根据转换数据的该实例的初始存储器地址的至少该部分来选择阵列的行。

所选择的行被移动到行缓冲器2510以进行处理。检测器2920检测所选择的行中的所有(键,条目)是否都被占用,并且如果是,则牺牲者选择和删除电路2930使用牺牲者选择过程来选择当前条目中的一个条目进行删除,例如,删除最旧的当前条目。存储电路2940将新的(键,值)对写入行缓冲器2510,并然后将行缓冲器复制回存储器阵列,如上所述。

因此,示例布置提供了用于将转换数据存储在所选择的行中的写入电路2920、2930、2940的示例,写入电路包括:检测器电路2920,用于检测所选择的行是否具有未使用的键条目和值条目以存储转换数据;牺牲者删除电路2930,响应于检测器电路检测到所选择的行不具有足够的未使用的容量来存储转换数据,选择所选择的行中的键条目和相关值条目以进行重写,从而提供所选择的行中的未使用的键和值条目;以及存储电路2940,用于将转换数据存储到所选择的行中的未使用的键和值条目。在示例中,牺牲者删除电路被配置为根据从包括下列各项的列表中选择的一个或多个牺牲者选择标准来选择键条目和相关联的值条目:最近访问的键值和匹配条目。牺牲者删除电路可以主动删除键值和匹配条目以便提供可用的空白空间,或者可以简单地控制所选数据的新数据的重写。

该过程由图30的示意性流程图表示,其中,在步骤3000处,根据用于转换的初始或虚拟存储器地址的至少一部分来选择行。在步骤3010处,将该行的内容加载到行缓冲器2510。如果在步骤3020处存在可用于所选择的行中的键值对的空白空间,则控制转到步骤3040。否则,在步骤3030处,选择(牺牲者的)键值对进行删除并删除。然后,在步骤3040处,将新条目写入行中可用的空白空间,并且在步骤3050处,将该行写回存储器。注意,根据DRAM控制器的策略可以延迟该写回。然而,它将在未来的某个时刻被写回存储阵列。

图31是表示摘要方法的示意流程图,包括:

访问(在步骤3100处)页面表以检索定义初始存储器地址空间中的初始存储器地址与输出地址空间中的相应输出存储器地址之间的地址转换的转换数据;

针对初始地址空间的子集,将转换数据的一个或多个实例存储(在步骤3110处)在具有按照行和列布置的存储位置的阵列的转换数据缓冲器中;

缓冲(在步骤3120处)多个条目,每个条目存储来自阵列的行的相应部分的信息;以及

比较(在步骤3130处),响应于至少取决于初始存储器地址的键值,将键值与存储在行缓冲器的至少一个键条目(例如,至少两个键条目)中的每一个键条目中的信息进行比较,每个键条目具有相关联的值条目,用于至少存储相对应的输出存储器地址的表示。

如果作为步骤3130处的比较结果,该行不包含所请求的转换,则控制转到步骤3140,设置“有效”信号以指示“不可用”由控制器2000设置。否则,该方法如下继续:

标识(在步骤3150处)至少一个键条目中的哪一个键条目(如果有的话)是存储与键值匹配的信息的匹配键条目;以及

当存在匹配键条目时,至少输出(在步骤3160处)与匹配键条目相关联的值条目中的输出存储器地址的表示。

在本申请中,词语“被配置为......”用于表示装置的元件具有能够执行所定义的操作的配置。在这种情况下,“配置”是指硬件或软件的互连的布置或方式。例如,装置可以具有提供所定义的操作的专用硬件,或者处理器或其他处理设备可以被编程为执行功能。“被配置为”并不意味着装置元件需要进行任何方式的改变以提供所定义的操作。

虽然已经参考附图详细描述了本发明的说明性实施例,但是应该理解,本发明不限于这些精确的实施例,并且可以由本领域的技术人员在不脱离由所附权利要求限定的本发明的范围和精神的情况下,进行各种改变、添加和修改。例如,在不脱离本发明的范围的情况下,从属权利要求的特征可以与独立权利要求的特征进行各种组合。

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