CN106021131B - 存储器管理 - Google Patents
存储器管理 Download PDFInfo
- Publication number
- CN106021131B CN106021131B CN201610154207.3A CN201610154207A CN106021131B CN 106021131 B CN106021131 B CN 106021131B CN 201610154207 A CN201610154207 A CN 201610154207A CN 106021131 B CN106021131 B CN 106021131B
- Authority
- CN
- China
- Prior art keywords
- address
- memory address
- mmu
- intermediate memory
- translation
- 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.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 492
- 230000004044 response Effects 0.000 claims abstract description 78
- 238000000034 method Methods 0.000 claims abstract description 41
- 238000013519 translation Methods 0.000 claims description 207
- 239000000872 buffer Substances 0.000 claims description 32
- 230000005540 biological transmission Effects 0.000 claims description 5
- 230000014616 translation Effects 0.000 description 182
- 230000000875 corresponding effect Effects 0.000 description 76
- 238000007726 management method Methods 0.000 description 25
- 208000000785 Invasive Pulmonary Aspergillosis Diseases 0.000 description 22
- 238000012545 processing Methods 0.000 description 19
- 230000008569 process Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000012360 testing method Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization 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/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- 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]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- 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/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/507—Control mechanisms for virtual memory, cache or TLB using speculative control
-
- 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/68—Details of translation look-aside buffer [TLB]
- G06F2212/681—Multi-level TLB, e.g. microTLB and main TLB
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
本公开涉及存储器管理的方法和装置。多阶存储器管理单元(MMU)包括:第一MMU阶,将输入虚拟存储器地址转译为对应的中间存储器地址,该第一MMU阶生成包括该对应的中间存储器地址的中间存储器地址集合;第二MMU阶,将第一MMU阶提供的中间存储器地址转译为物理存储器地址,该第二MMU阶响应于从第一MMU阶接收的中间存储器地址提供包括对应于从第一MMU阶接收的中间存储器地址的物理存储器地址的物理存储器地址集合;第一MMU阶向第二MMU阶提供的中间存储器地址不同于下述中间存储器地址:第二MMU阶将为这些中间存储器地址提供物理存储器地址以作为对集合中的一个其他中间存储器地址进行转译的响应。
Description
技术领域
本公开涉及存储器管理。
背景技术
存储器管理单元(MMU)致力于将虚拟存储器地址转译为物理存储器地址。
数据处理装置通常向每一个运行的程序提供对虚拟存储器地址所定义的虚拟地址空间的访问。每一个程序看到自己的虚拟地址空间,其包含由该程序所使用的指令和数据。除了其他已经确立的优势以外,对虚拟地址的使用允许操作系统通过阻止一个程序访问或误用另一程序所使用的信息来控制存储器地址。
当需要访问虚拟存储器地址时,首先有必要将虚拟存储器地址转译为物理存储器地址,从而所需信息可以从物理存储器或物理存储器缓存获取或被写入其中。
被称作转译后备缓冲器(TLB)的缓存可以被用作地址转译处理的一部分。TLB存储虚拟和物理存储器地址之间最近或最常使用的转译。所以,作为地址转译处理中的第一步,TLB被查询以检测TLB是否已经包含了所需的地址转译。如果没有,则可以使用更加复杂的转译处理,例如涉及查询所谓的页表(页表保存有地址转译信息),这通常导致向TLB填入所需的转译。
在一些情况下使用多阶MMU。在这种布置下,实际上使用的是两层转译。执行的程序或诸如图形处理单元(GPU)之类的其他系统模块所需的虚拟地址(VA)被第一MMU阶转译为中间物理地址(IPA)。IPA被第二MMU阶转译为物理地址(PA)。使用多阶转译的一个原因是为了在同一处理器上运行的各个“虚拟机”上可能使用多个操作系统(OS)的情况下的信息处理安全。特定OS被曝露于VA到IPA转译,而仅超级监督者(hypervisor)(监督虚拟机运行的软件)具有对第2阶(IPA到PA)转译的监督权。
发明内容
在示例性布置中,提供了多阶存储器管理单元(MMU),包括:
第一MMU阶,该第一MMU阶被配置为将输入虚拟存储器地址转译为对应的中间存储器地址,第一MMU阶生成包括该对应的中间存储器地址的两个或更多个中间存储器地址的集合;以及
第二MMU阶,该第二MMU阶被配置为将第一MMU阶提供的中间存储器地址转译为物理存储器地址,第二MMU阶响应于从第一MMU阶接收到中间存储器地址,提供包括对应于从第一MMU阶接收的中间存储器地址的物理存储器地址的两个或更多个物理存储器地址的集合;
第一MMU阶被配置为向第二MMU阶提供集合中不同于下述任意中间存储器地址的中间存储器地址以用于转译:第二MMU阶将为该中间存储器地址提供物理存储器地址以作为对该集合中的其他中间存储器地址中的一个中间存储器地址进行转译的响应。
在另一示例性布置中,提供了多阶存储器管理单元(MMU),包括:
第一MMU阶,该第一MMU阶被配置为将输入虚拟存储器地址转译为中间存储器地址;
第二MMU阶,该第二MMU阶被配置为将第一MMU阶提供的中间存储器地址转译为物理存储器地址;以及
与第一MMU阶相关联的地址转译缓存,该地址转译缓存被配置为存储针对虚拟存储器地址的集合的地址转译信息,包括:
定义从虚拟存储器地址到相应的映射地址的转译的信息,该映射地址是中间存储器地址或物理存储器地址;以及
标志信息,该标志信息向虚拟存储器地址的集合中的每一个虚拟存储器地址指示对应于虚拟存储器地址的映射地址是中间存储器地址还是物理存储器地址。
在另一示例性布置中,提供了多阶存储器管理单元(MMU),包括:
用于将输入虚拟存储器地址转译为对应的中间存储器地址的第一MMU转译装置,第一MMU转译装置生成包括该对应的中间存储器地址的两个或更多个中间存储器地址的集合;以及
用于将第一MMU转译装置提供的中间存储器地址转译为物理存储器地址的第二MMU转译装置,第二MMU转译装置响应于从第一MMU转译装置接收到中间存储器地址,提供包括对应于从第一MMU转译装置所接收的中间存储器地址的物理存储器地址的两个或更多个物理存储器地址的集合;其中第一MMU转译装置被配置为向第二MMU转译装置提供集合中不同于下述任意中间存储器地址的中间存储器地址以用于转译:第二MMU转译装置将为该中间存储器地址提供物理存储器地址以作为对该集合中的其他中间存储器地址中的一个中间存储器地址进行转译的响应。
在另一示例性布置中,提供了多阶存储器管理单元(MMU),包括:
用于将输入虚拟存储器地址转译为中间存储器地址的第一MMU转译装置;
用于将第一MMU转译装置提供的中间存储器地址转译为物理存储器地址的第二MMU转译装置;以及
与第一MMU转译装置相关联的用于缓存针对虚拟存储器地址的集合的地址转译信息的装置,该第一转译信息包括:
定义从虚拟存储器地址到相应的映射地址的地址转译的信息,该映射地址是中间存储器地址或物理存储器地址;以及
标志信息,该标志信息向虚拟存储器地址的集合中的每一个虚拟存储器地址指示对应于虚拟存储器地址的映射地址是中间存储器地址还是物理存储器地址。
在另一示例性布置中,提供了一种多阶存储器管理单元(MMU)的操作方法,该方法包括:
在第一MMU阶处将输入虚拟存储器地址转译为对应的中间存储器地址,该转译步骤生成包括该对应的中间存储器地址的两个或更多个中间存储器地址的集合;以及
在第二MMU阶处将第一MMU阶提供的中间存储器地址转译为物理存储器地址,包括,该第二MMU阶响应于从第一MMU阶接收的中间存储器地址,提供包括对应于从第一MMU阶接收的中间存储器地址的物理存储器地址的两个或更多个物理存储器地址的集合;以及
第一MMU阶向第二MMU阶提供集合中不同于下述任意中间存储器地址的中间存储器地址以用于转译:第二MMU阶将为该中间存储器地址提供物理存储器地址以作为对该集合中的其他中间存储器地址中的一个中间存储器地址进行转译的响应。
在另一示例性布置中,提供了一种多阶存储器管理单元(MMU)的操作方法,该方法包括:
在第一MMU阶处将输入虚拟存储器地址转译为中间存储器地址;
在第二MMU阶处将第一MMU阶提供的中间存储器地址转译为物理存储器地址;以及
与第一MMU阶相关联,并且针对虚拟存储器地址的集合缓存物理转译信息,该物理转译信息包括:
定义从虚拟存储器地址到相应的映射地址的地址转译的信息,该映射地址是中间存储器地址或物理存储器地址;以及
标志信息,该标志信息向虚拟存储器地址的集合中的每一个虚拟存储器地址指示对应于该虚拟存储器地址的映射地址是中间存储器地址还是物理存储器地址。
本技术的其他各个方面和特征由所附权利要求进行定义。
附图说明
本技术将仅通过示例的方式并参考附图中所示出的实施例被进一步描述,其中:
图1是存储器管理布置的示意图;
图2示意性地示出对微型转译后备缓冲器(μTLB)的使用;
图3是示出μTLB的操作的示意性流程图;
图4示意性地示出存储器管理单元(MMU);
图5示意性地示出页表查询(page table walk,PTW)处理;
图6是示出PTW处理的示意性流程图;
图7示意性地示出MMU;
图8示意性地示出MMU的一部分和缓存存储器之间的数据流;
图9示意性地示出在第2阶地址转译处的数据流;
图10示意性地示出MMU的一部分;
图11是示出MMU的操作的示意性流程图;
图12和13示意性地示出MMU的数据缓冲器中的数据存储;以及
图14是示出MMU的操作的示意性流程图。
具体实施方式
在参考附图讨论实施例之前,提供了以下对实施例的描述。
示例性实施例提供了一种多阶存储器管理单元(MMU),包括:
第一MMU阶,被配置为将输入虚拟存储器地址转译为对应的中间存储器地址,该第一MMU阶生成由两个或更多个中间存储器地址组成的集合,该集合包括该对应的中间存储器地址;以及
第二MMU阶,被配置为将第一MMU阶提供的中间存储器地址转译为物理存储器地址,第二MMU阶响应于从第一MMU阶接收的中间存储器地址,提供由两个或更多个物理存储器地址组成的集合,该集合包括对应于从第一MMU阶接收的中间存储器地址的物理存储器地址;
第一MMU阶被配置为向第二MMU阶提供该集合中的中间存储器地址以用于转译,该中间存储器地址不同于该集合中如下所述的任意中间存储器地址:第二MMU阶将为所述中间存储器地址提供物理存储器地址以作为对该集合中的其他中间存储器地址中的一个中间存储器地址进行转译的响应。
在此示例性布置中,所提供的技术用于通过简洁地重新使用响应于其他2阶MMU转译而返回的数据来检测(并且避免不得不进行)MMU中的某些类型的2阶转译。在一些示例中,这种布置可以在MMU处提供提高的数据吞吐量,并且可以降低花费在从MMU提供响应的处理时间和/或降低MMU用以提供这种响应的功率消耗。
在示例性实施例中,存储器管理单元包括缓冲器,缓冲器被配置为存储从第二MMU阶接收的由两个或更多个物理存储器地址组成的该集合中的至少那些物理存储器地址,这些物理存储器地址对应于由两个或更多个中间存储器地址组成的该集合中的中间存储器地址。
在示例性实施例中,第一MMU阶被配置为参照页表来转译输入虚拟存储器地址;并且由两个或更多个(例如,8个)中间存储器地址组成的集合包括:对应于输入虚拟存储器地址的中间存储器地址;以及如下一个或多个其他中间存储器地址:这些地址表示页表中与保存该对应的中间存储器地址的条目相邻的条目(例如,在同一缓存线中的那些条目)。在示例性实施例中,由两个或更多个(例如,4个)物理存储器地址组成的集合包括:与被提供给第二MMU阶的中间存储器地址对应的物理存储器地址;以及与如下所述的中间存储器地址对应的一个或多个其他物理存储器地址:在中间存储器地址空间中,所述的中间存储器地址与提供给第二MMU阶的中间存储器地址是邻近的。
作为检测中间存储器地址是否需要2阶转译的测试的示例,控制逻辑可以被配置为对第一MMU阶向第二MMU阶传输用于转译的中间存储器地址进行控制,并且该控制逻辑可以被配置为检测由两个或更多个中间存储器地址组成的集合中的两个或更多个中间存储器地址是否在中间存储器地址空间中的中间存储器地址彼此之间的阈值间隔内。
在示例性实施例中,作为本文提出的过程的结果,中间存储器地址的仅一部分被传递用于2阶转译,从而控制逻辑被配置为对向第二MMU阶提供由两个或更多个中间存储器地址组成的集合中的一个或多个中间存储器地址进行控制,以便获得与由该两个或更多个中间存储器地址组成的集合中的每一个中间存储器地址相对应的物理存储器地址。
在示例性实施例中,为了避免对于实际上并不与被请求转译的虚拟地址相对应的中间存储器地址生成错误响应,对于由两个或更多个中间存储器地址组成的集合中除了与输入虚拟存储器地址相对应的中间存储器地址之外的或者不同于该中间存储器地址的任意一个中间存储器地址来说,控制逻辑被配置为对该中间存储器地址向所述第二MMU阶的传输进行控制以采用投机转译(speculative translation)模式进行转译,从而在对该中间存储器地址的转译失败的情况下不生成错误消息。
在一些示例中,被提供给第二MMU阶的这一个或多个中间存储器地址至少包括对应于输入虚拟存储器地址的中间存储器地址。然而,在其他示例中,在对输入虚拟存储器地址的转译是由响应于另一中间存储器地址返回的物理地址的集合提供的情况下,被供给至第二MMU阶的这一个或多个中间存储器地址可以省略对应于该输入虚拟存储器地址的中间存储器地址。
尽管可以使用其他类型的转译,但在示例性实施例中,第一MMU阶被配置为访问页表(page table)层级,从而在该层级中的较高页表提供用于第二MMU阶进行地址转译的信息以指向该层级中的下一较低页表。例如,层级中的最低页表可以提供包括对应的中间存储器地址的、由两个或更多个中间存储器地址组成的集合。
为了提供对处理周期和/或功率的进一步可能的节省,在示例性实施例中,存储器管理单元包括与第一MMU阶相关联的地址转译缓存,地址转译缓存被配置为针对虚拟存储器地址的集合存储地址转译信息,这些地址转译信息包括:定义从虚拟存储器地址到相应的映射地址的地址转译的信息,该映射地址是中间存储器地址或物理存储器地址;以及标志信息,该标志信息向虚拟存储器地址的集合中的每一个虚拟存储器地址指示对应于该虚拟存储器地址的映射地址是中间存储器地址还是物理存储器地址。通过这种方式,VA到PA转译可以被缓存在MMU处以便更快速地供给至请求TLB。
使用这种技术的示例性实施例提供了一种多阶存储器管理单元(MMU),包括:
第一MMU阶被配置为将输入虚拟存储器地址转译为对应的中间存储器地址;
第二MMU阶被配置为将第一MMU阶提供的中间存储器地址转译为物理存储器地址;以及
与第一MMU阶相关联的地址转译缓存,该地址转译缓存被配置为存储针对虚拟存储器地址的集合的地址转译信息,这些地址转译信息包括:
定义从虚拟存储器地址到相应的映射地址的地址转译的信息,该映射地址是中间存储器地址或物理存储器地址;以及
标志信息,该标志信息向虚拟存储器地址的集合中的每一个虚拟存储器地址指示对应于该虚拟存储器地址的映射地址是中间存储器地址还是物理存储器地址。
另一示例性实施例提供了一种多阶存储器管理单元(MMU)的操作方法,该方法包括:
在第一MMU阶处将输入虚拟存储器地址转译为对应的中间存储器地址,该转译步骤生成包括对应的中间存储器地址的两个或更多个中间存储器地址的集合;
在第MMU阶处将第一MMU阶提供的中间存储器地址转译为物理存储器地址,包括:响应于从第一MMU阶接收的中间存储器地址,提供包括对应于从第一MMU阶接收的中间存储器地址的物理存储器地址的两个或更多个物理存储器地址的集合;以及
第一MMU阶向第MMU阶提供该集合中不同于下述任意中间存储器地址的中间存储器地址以用于转译:作为对集合中的其他中间存储器地址中的一个中间存储器地址进行转译的响应,该第二MMU阶将为该中间存储器地址提供物理存储器地址。
另一示例性实施例提供了一种多阶存储器管理单元(MMU)的操作方法,该方法包括:
在第一MMU阶处将输入虚拟存储器地址转译为中间存储器地址;
在第二MMU阶处将第一MMU阶提供的中间存储器地址转译为物理存储器地址;以及
关联于第一MMU阶并且针对虚拟存储器地址的集合缓存地址转译信息,这些地址转译信息包括:
定义从虚拟存储器地址到相应的映射地址的地址转译的信息,该映射地址是中间存储器地址或物理存储器地址;以及
标志信息,该标志信息向虚拟存储器地址的集合中的每一个虚拟存储器地址指示对应于该虚拟存储器地址的映射地址是中间存储器地址还是物理存储器地址。
现在参考附图,图1是在图形处理器单元(GPU)的上下文中的存储器管理单元的示意图,但是本申请中涉及存储器管理和地址转译的技术普遍适用于通用数据处理。存储器管理单元(MMU)10经由MMU异步交换网络(ASN)桥20被连接至ASN 30。GPU 40和2级缓存存储器50的元件也被连接至ASN。从而ASN用于将信息传递至和传递自连接到该ASN的每一个单元或模块。
结合本文所述的技术,在GPU的上下文中,数据的吞吐量非常重要,或许(在至少一些示例中)比延迟还要重要。本技术可以在至少一些实例中提供提高的吞吐量。
所示出的GPU 40的示例性模块包括一个或多个光影(shader)核心60、分层图块器(hierarchical tiler)70、作业管理器80和性能监视器块90,其中每一个光影核心60包括总线接口模块62和加载-存储缓存模块64。总地来说,这些模块根据已经确立的GPU操作的原则来操作,并且将不再阐述它们的内部操作的更加具体的细节,除非与当前的讨论有关。
GPU的每一个模块与相应的微型转译后备缓冲器(μTLB)100相关联。在模块的操作期间,存在访问系统存储器的惯常需求。出于GPU的这些模块内的内部处理的目的,存储器地址被表示为虚拟地址(VA)。为了进行对系统存储器的真正的访问,VA需要被转译成物理地址(PA),系统存储器在电的层次上通过PA被寻址。这种转译由每一个μTLB来执行,从而与特定模块有关的地址转译由与该模块相关联的μTLB来执行。通过这种方式,地址转译在一定程度上被分布在系统各处。参考图2和图3将进一步讨论μTLB的操作。
μTLB通过各自的μTLB ASN桥110被连接到ASN 30。在一些情况下,这是通过进一步的复用级120实现的,而在其他情况下,这些模块中的两个模块可以经由复用器130被连接到单个μTLB 100。
2级缓存50为主系统存储器(图1中未示出)的所选内容提供本地的并且在某种程度上通常更快的存储区域。主系统存储器的最近或频繁被访问的部分或主系统存储器的被预期在不久的将来需要的部分(诸如与最近访问的部分邻近的部分)被复制在2级缓存50中,从而当需要时,这些部分能够被快速访问。如果所需的部分当前没有被保存在2级缓存20中,那么当请求访问该部分时,从主系统存储器提取该部分。在这些方面,2级缓存50根据已经确立的与这种缓存存储器相关的原则进行操作,并且将不对其操作的细节进行描述,除非与当前的讨论有关。应当注意的是2级缓存存储器50的内容被根据它们的物理地址进行访问。
MMU 10是两阶MMU(作为多阶MMU的示例),其包括1阶MMU12和2阶MMU 14。执行程序或其他系统模块(诸如GPU 40)所需的虚拟地址(VA)被1阶MMU转译为中间物理地址(IPA)。IPA被2阶MMU转译为物理地址(PA)。如前面提到的,使用多阶转译的一个原因是为了在同一处理器上运行的各个“虚拟机”上可能使用多个操作系统(OS)的情况下的信息处理安全。特定OS被暴露给VA到IPA转译,然而只有超级监督者(hypervisor)(监督虚拟机运行的软件)具有对2阶(IPA到PA)转译的监督权。
需要MMU 10的一个主要原因在于它处理当前没有被本地存储在相应的μTLB中的地址转译。下面将参考图2对这种执行方式进行进一步的讨论。当处理这些事项时,MMU 10经由ASN接收来自μTLB的请求140,并且同样经由ASN向μTLB返回响应150。可选地,MMU 10还可以经由JCB(作业控制总线)接口160与作业管理器80交互。
下面将参考图7-10对MMU 10的内部操作进行更加详细地讨论。
图2示意性地示出对微型转译后备缓冲器(μTLB)100的使用。对于图2,出于图示清晰的目的,省略了与μTLB和MMU 10之间的数据通信有关的其他项目。
作为μTLB 100与之相关联的模块或其他布置的操作的一部分,μTLB 100接收与所需的存储器访问有关的VA 102。这当然可以是读或写存储器访问;对于当前讨论来说,进行的是哪种类型的存储器访问并不重要。同样参考图3(其是示出μTLB的操作的示意性流程图),向μTLB 100供应VA 102形成了针对对应的PA 104的请求(如图3中的步骤200所示)。
TLB包含对VA和PA之间的转译的缓存或存储。μTLB存储特定VA到PA转译的标准可以根据用于μTLB的操作的已知技术来建立。被缓存的转译可以包括最近使用的转译、频繁使用的转译和/或预期在不久之后将需要的转译(诸如与最近被访问的VA附近的VA有关的转译)。总的来说,情况是μTLB包含所有可能的VA到PA的转译的的集合的子集的缓存,因而在需要特定的VA到PA的转译时,可能发现该转译已经被保存在μTLB处的缓存中,也可能没有发现。
因此,在下一步骤210中,μTLB检测所需的转译当前是否确实被该μTLB缓存。如果回答为是,则控制进行至下面将要讨论的步骤240。如果回答为否,则控制进行至步骤220,其中μTLB 100向MMU 10发送请求,该请求包括所需的VA到PA转译。MMU 10导出所需的VA到PA转译(使用下面将要讨论的技术)并且至少将对应于VA 222的PA 232发送回μTLB 100,在步骤230中PA 232被存储于此。
最后,在步骤240中,μTLB 100应用存储在该μTLB 100处的转译以提供输出PA104。
因此可以看到在参考图1描述的分布式系统(其中使用了多个μTLB)中,VA到PA的转译在适当的μTLB 100处实现。MMU 10提供转译信息以存储在μTLB 100处,但是即使在获取所需的转译时涉及到MMU 10,实际的转译仍然发生在μTLB 100处。类似的原理也可以应用在具有仅一个TLB的非分布式系统中。
现在将参考图4对MMU 10的操作的方面进行描述,图4提供了多阶存储器管理单元(MMU)的示例,其中输入虚拟存储器地址通过对应的中间存储器地址被转译为物理存储器地址,存储器管理单元包括:第一MMU阶,该第一MMU阶例如被配置为参照页表将输入虚拟存储器地址转译为对应的中间存储器地址,该页表提供由两个或更多个中间存储器地址组成的集合,该集合包括该对应的中间存储器地址;以及第二MMU阶,该第二MMU阶被配置为将第一MMU阶提供的中间存储器地址转译为物理存储器地址,第二MMU阶响应于从第一MMU阶接收的中间存储器地址,提供由两个或更多个物理存储器地址组成的集合,该集合包括对应于从第一MMU阶接收的中间存储器地址的物理存储器地址。这些布置从而提供了这样一些示例:第一MMU阶被配置为将输入虚拟存储器地址转译为对应的中间存储器地址,第一MMU阶生成包括对应的中间存储器地址的两个或更多个中间存储器地址的集合;第二MMU阶被配置为将第一MMU阶提供的中间存储器地址转译为物理存储器地址,第二MMU阶响应于从第一MMU阶接收的中间存储器地址,提供包括对应于从第一MMU阶接收的中间存储器地址的物理存储器地址的两个或更多个物理存储器地址的集合。
当如此处所讨论的进行操作时,图4的布置提供了存储器管理单元的操作方法的特征的示例。
在图4中,μTLB 100以与上面所述的图2相同的方式被示出。然而,MMU 10的操作被分成1阶和2阶操作。
1阶MMU 12负责将VA 222转译为中间物理地址(IPA)250。2阶MMU 14负责将IPA250转译为PA 260。作为转译处理的一部分,1阶MMU 12和2阶MMU 14可能需要访问被存储在物理存储器中(例如,在2级缓存50中)的所谓的页表。
1阶MMU包括它自身的TLB 270。TLB 270提供与1阶MMU相关的地址转译272的缓存或缓冲器。考虑到1阶MMU的任务是将到来的VA转译为IPA,TLB 270可以存储VA到IPA转译,从而如果在TLB 270中存储有到来的VA 222到对应的IPA的转译,则避免了对1阶转译处理的完整操作的需要,并且所缓冲的IPA 274可以被直接提供给2阶MMU作为IPA 250。
然而,TLB 270提供进一步的信息,并且具体来说,被缓存在TLB270处的地址转译272实际上可以提供被缓存的VA到PA转译。为了指示被缓存在TLB 270处的地址转译272的性质,针对每一个被缓存的地址转译272提供标志276,以指示被缓存的地址转译272涉及的是VA到IPA转译还是VA到PA转译。如果对于到来的VA 222来说存在被缓存的地址转译272,其中标志276指示被缓存的地址转译是VA到PA转译,则TLB 270简单地提供所缓存的PA作为要被返回至μTLB 100的PA 232,并且(针对该特定转译请求的)MMU操作完成。
现在假设TLB 270未包含针对到来VA222的被缓存的转译(无论是VA到IPA还是VA到PA)。在这种情况下,VA 222被传递至1阶转译单元280。该1阶转译单元280例如在所谓的页表查询(PTW)处理中查询所谓的页表,以导出VA到IPA转译。PTW处理的示例将在下面进行讨论。页表被保存在物理存储器(例如,2级缓存50或主系统存储器)中,并且被布置为页表层级,以使该层级中的一个页表提供指向层级中的下一页表中的位置的信息,直到到达最后的页表。但是,对于1阶转译来说,页表的内容被提供为IPA而不是PA,从而在每次作为1阶转译处理的一部分而访问页表时,在对层级中的下一页表进行访问所需的物理地址可以被获得前,需要被作为页表内容而返回的IPA的2阶转译。
从而,1阶TLB 270提供了与第一MMU阶相关联的地址转译缓存的示例,该地址转译缓存配被配置为针对虚拟存储器地址的集合存储地址转译信息,该地址转译信息包括:定义从虚拟存储器地址到相应的映射地址的地址转译的信息,该映射地址是中间存储器地址或物理存储器地址;以及标志信息,该标志信息向虚拟存储器地址的集合中的每一个虚拟存储器地址指示对应于该虚拟存储器地址的映射地址是中间存储器地址还是物理存储器地址。
图5示意性地示出1阶页表查询(PTW)处理的示例,并且图6是示出PTW处理的示意性流程图。
在此示例中,需要转译的VA 222被形成为48位值。在PTW处理的不同阶处使用VA222的不同部分。
为了获得页表层级中的第一条目,在步骤400(图6),在“0级表”310中获取被存储在基地址寄存器300(图5)中的基地址。在步骤410,VA 222的第一部分312(9个最高有效位)被添加到基地址作为偏移量,从而提供表310中的条目IPA 314。但是为了访问条目314,需要指示条目314在物理存储器中的位置的PA。因此,在步骤420处,页表条目的IPA314被供给到2阶转译处理以用于转译为对应的PA。当接收到对应的PA时,在步骤430中,在物理存储器或2级缓存50(如果该相关页表被缓存)中查询相关的页表条目。
在步骤440处,针对是否已经到达页表层级中的“3级”进行检测。如果没有到达,在这种情况下,控制进行至步骤450,其中被检索的页表条目被用作层级中的下一个表的基地址。因此,对应于IPA 314的页表条目向层级中的下一级表(即“1级表”320)提供基地址。控制返回至步骤410。
在步骤410的第二次迭代中,VA 222的另一部分322(VA 222中接下来的9位[38:30])形成对于表320的基地址的偏移量,以便于提供表320中的条目324的IPA。再一次,该IPA经历2阶转译以提供PA,该PA能够被查询以获得“2级表”330的基地址,进而(通过相同的处理)提供“3级表”340的基地址。
当针对表340中的IPA 344定义的页表条目执行步骤430和440时,对于步骤440处的检测的回答为“是”。IPA 344所指示的页表条目提供与物理存储器页有关的页地址和访问许可。VA 222的其余部分352,也就是12位最低有效位[11:0]提供IPA 344处的页表条目定义的存储器页内的页偏移量,不过在将信息以连续的四字节(例如32位)部分的形式存储的示例性系统中,也可以由[11:2]这部分向适当的32位字的地址提供所需的偏移量。因此,VA 222的最低有效位部分和最后页表条目(在此例中,来自“3级表340”)的组合(在步骤460处)提供(在步骤470处)IPA250作为VA 222的转译。应当注意的是如本文所述的PTW处理针对1阶MMU执行的PTW返回IPA,并且针对2阶MMU执行的PTW返回PA。
在示例性实施例(包括下文将讨论的一些实施例)中,第一MMU阶被配置为访问页表层级,以使层级中的较高页表提供用于第二MMU阶进行地址转译的信息,以指向层级中的下一较低页表,并且层级中的最低页表提供包括对应的中间存储器地址的两个或更多个中间存储器地址的集合。
图7示意性地示出MMU 10的更多细节。
请求管理器缓冲器500接收来自μTLB的请求、将其缓冲并且以适当的顺序提供给1阶MMU 12用于处理。请求502相继从请求管理器缓冲器被传递至1阶MMU 12。
如上面所讨论的,1阶MMU可以利用来自其自身缓存的PA进行应答,在这种情况下,PA响应510被提供作为响应,输出回做出请求的μTLB。然而,如果1阶MMU用IPA 512进行应答,则该IPA 512被传递到响应处理器520,该响应处理器520与2阶MMU交互以获得对应于该IPA的PA,进而该PA被传递回发出请求的μTLB以作为PA响应。
作为1阶MMU和2阶MMU的操作的一部分,PTW处理被执行。在1阶MMU的情形中,如上面所讨论的,每一个PTW步骤涉及该步骤所获取的IPA的2阶转译,以便于检索相应的页表条目。在PTW阶处,IPA532(表示对于页表条目的读取地址)需要被转译为对应的PA。PTWμTLB530提供与PTW操作相关的IPA到PA转译的缓存。如果所需的转译被保存在PTWμTLB 530中,则PTWμTLB输出对应的PA 534。如果没有保存,则PTWμTLB 530向2阶MMU 14做出转译请求,并且当接收到响应时缓存该响应并且基于被缓存的响应提供经转译的PA 534。
PTW PA 534被传递至到ASN的接口540,并且经由ASN到2级缓存50(或者主系统存储器),在其中根据PA 534读取页表数据536。
页表数据536被传递到PTW定序器550。下面将提供该模块的操作的细节。PTW定序器550从1阶MMU接收转译请求的细节并且与1阶MMU通信以返回TLB条目552(所请求的转译或其他转译)。PTW定序器550还与2阶MMU通信以获得和处理IPA到PA转译。
在2阶处,PTW处理被类似地使用,但是此处针对每一页表条目生成的地址为PA。
图8示意性地示出MMU的一部分和缓存存储器之间的数据流。
具体来说,图8涉及针对最末阶(3级表)PTW处理的1阶MMU和2级缓存存储器(或者在缓存未命中的情况下,为主存储器52)之间的通信。应当注意的是1阶MMU 12对物理存储器的引用是经由从IPA到PA的2阶转译实现的,但是出于清晰示图的目的该转译未在图8中示出。然而,应当假设从1阶MMU发送的存储器地址信息534是采用已经被PTWμTLB 530转译的PA的形式。
来自2级缓存50的、对于1阶MMU 12的数据访问的响应实际上是8个响应构成的群组或“串组(burst)”600。其原因在于2级缓存50将信息存储为8个值的所谓缓存线,其对应于8个连续的存储器地址。每当对2级缓存50做出单个存储器访问时,则假设缓存命中发生,在包含所需存储器地址的缓存线中的所有8个值被返回作为读取数据536。应当注意的是MMU常规地获取针对这8个值中的所有8个值的转译。
由8个响应构成的群组600可以被称为“串组”,这是因为在一些布置中,8个响应被相继返回,也就是说,在(例如)8个连续时钟周期期间一个接着一个返回。然而,应当认识到在其他实施例中,8个响应可以被同时返回,或者以子群组返回(例如,2个子群组,其中每个子群组包含4个响应)等等。类似地,应当认识到群组600可以包括比8个响应更多或更少的响应(例如,群组600可以包括4个响应)。群组600的大小可以取决于单条缓存线的范围或取决于与2级缓存50的内部组织有关的其他因素。
在图5的PTW布置中的0级、1级和2级表访问的情况中,响应的群组600中的仅一个响应是相关的,这是因为只需要到该PTW层级中的下一个表的一个指示器。在这些情况中,响应的群组600中的相关的一个响应是由用于访问该缓存线的PA的最低有效位标识的。例如,如果每一个缓存线包括8个32位的数据值,则响应的群组或串组600包括8个数据值,响应的群组或串组600具有的全部位除了地址为[4:2]的位之外都是相同的,并且来自该群组或串组600内的所需数据值该地址位[4:2]标识(注意,地址位[1:0]在32位字长系统中是无关的)。其他响应表示被存储在页表的邻近条目中的数据。应当注意的是同一缓存线中的条目被看作邻近条目的集合的示例。
所以总的来说,2级缓存50响应于1阶MMU的单个存储器访问,提供表示由两个或更多个中间存储器地址组成的集合的响应数据,该集合包括对应于输入虚拟存储器地址的中间存储器地址;并提供一个或多个其他中间存储器地址,这些地址表示在页表中与保存该对应的中间存储器地址的条目邻近的条目。
但是在图5的PTW处理中的3级表处,情况略有不同,其中8个响应的群组600中的其他响应实际上可能是相关的并且有用的。可能是如此,也可能不是这样;在页表中简单地邻近并非意味着这些页表条目是相关的,然而这些条目实际上可能是相关的。这种情况将在下面进行详细讨论。
图9示意性地示出2阶地址转译处的数据流。
被标记为PTW控制610的块示意性地表示PTWμTLB 530和PTW定序器550的操作,它们中的每一个可以将IPA提供给2阶MMU 14以用于转译为PA,并且接收回作为响应的相关PA。因此,PTW控制块610是与第一MMU阶相关联的控制逻辑的示例,并且控制从第一MMU阶向第二MMU阶提供IPA。因此,第一MMU阶可以被称为被配置为以特定方式向第二MMU阶提供IPA,也就是说,如PTW控制610所控制的。对于操作的方法,第一MMU阶向第二MMU阶提供一个或多个IPA的步骤涉及按照PTW控制610的控制提供一个或多个IPA。
实际上,2阶MMU对于对单个IPA的转译的请求提供多于一个响应。2阶MMU提供由两个或更多个物理存储器地址组成的集合,该集合包括对应于被提供给该2阶MMU的中间存储器地址的物理存储器地址;还提供一个或多个其他物理存储器地址,这些地址对应于在中间存储器地址空间中与被提供给2阶MMU的中间存储器地址邻近的中间存储器地址。
换句话说,对于与特定IPA相关的2阶转译请求,2阶MMU不仅返回对该IPA的PA转译,还返回对邻近IPA的其他PA转译。在当前示例中,2阶MMU返回由4个转译的PA构成的群组或串组620,其包括所需的PA以及与所请求的IPA邻近的IPA有关的其他三个PA。
对应于所需IPA的PA可以是群组620中的四个PA中的任意一个。在该群组中,这是由所需IPA的最低有效位标识的。所以,在包括四个PA的群组或串组620的示例中,所有四个PA对应于四个相应的IPA,它们共享除了中间物理地址的位[3:2]之外的所有位(如前所述,假设在32位字系统中位[1:0]不相关)。IPA的位[3:2]指示对应于每一个相应的IPA的是群组或串组620中的四个响应中的哪一个响应。
图10示意性地示出MMU的一部分。具体来说,图10示意性地示出PTW定序器550的更多细节。
PTW定序器550包括:主PTE缓冲器700、转译请求驱动器710、响应处理单元720、预处理器730、初始PTE信息缓冲器740和PTE调度单元750。
主PTE缓冲器700例如采用下面参考图12和/或13所述的格式存储转译信息。IPA从主PTE缓冲器700经由转译请求驱动器720被提供至2阶MMU。由4个PA组成的群组的串组响应从2阶MMU 14经由响应处理单元720返回值主PTE缓冲器700,其中它们在被PTE调度单元750调度至1阶MMU 12之前被存储。
预处理器控制从主PTE缓冲器700向2阶MMU供应IPA以及将标志信息(下面将进行讨论)和转译PA向主PTE缓存器700写入。作为操作的一部分,预处理器730参考与正在处理的PTW请求有关的信息,该信息被存储在初始PTE信息缓冲器740中。
下面将提供对PTW定序器550的各种组件的操作的更加详细的描述。如下面所讨论的,PTW定序器550提供控制逻辑的示例,该控制逻辑与第一MMU阶相关联,并被配置为控制中间存储器地址到第二MMU阶的传输(或提供)以用于转译,控制逻辑被配置为响应于由两个或更多个中间存储器地址组成的集合中的一个中间存储器地址,检测第二MMU阶是否将提供与该两个或更多个中间存储器地址的集合中的另一中间存储器地址相对应的物理存储器地址;并且如果是,则控制第一MMU阶执行以下操作:(i)不向第二MMU阶提供该另一中间存储器地址以用于转译;以及(ii)将第二MMU阶提供的两个或更多个物理存储器地址的集合中的一个物理存储器地址与该中间存储器地址相关联。因此,在实施例中,第一MMU阶被配置为向第二MMU阶提供该集合中的中间存储器地址以用于转译,这些中间存储器地址不同于该集合中的任何如下所述的中间存储器地址:对于所述的中间存储器地址,第二MMU阶将提供物理存储器地址作为对于对该集合中的其他中间存储器地址中的一个中间存储器地址进行转译的响应。
图11是示出针对3级表PTW操作的MMU操作的示意性流程图,作为如上文所提到的存储器管理单元的操作方法的特征的示例。
在步骤800中,PTW定序器550在1阶PTW处理期间从2级缓存50接收由8个值组成的串组响应。
在步骤810中,PTW定序器550(例如,PTW定序器的预处理器730)检测8个值的串组响应之间的相关性。这样做的目的是检测串组响应中的8个IPA中的哪一个IPA可能实际上不需要单独的2阶转译操作,其根据在于:对应于一个或多个IPA的PA可能实际上作为串组响应的一部分被返回,该响应是2阶MMU响应于针对IPA到PA转译的另一请求而做出的。这种处理将在下面被详细讨论。
在步骤820处,所有8个IPA被存储在主PTE缓冲器700中,并且考虑到在步骤810中所检测的相关性,在步骤830中PTW定序器550(具体来说,预处理器730)标记需要2阶转译的那些IPA(也就是说,那些IPA要从1阶MMU被提供至2阶MMU)。通过这种方式,主PTE缓冲器700提供了这样的缓冲器的示例:其被配置为至少存储从第二MMU阶接收的两个或更多个物理存储器地址的集合中的下述物理存储器地址:这些物理存储器地址对应于两个或更多个中间存储器地址的该集合中的中间存储器地址。
在不需要转译的这些IPA之中,对于对应于1阶MMU做出的初始请求和/或在IPA的阈值地址间隔(在IPA地址空间中)内的另一IPA请求的IPA,在步骤840处发起2阶转译。对于被标记用于转译但不对应于初始请求的另一IPA,在步骤850处发起所谓的投机2阶转译。除了在转译失败的情况下,投机转译不生成错误代码以外,投机转译在大多数方面类似于非投机转译。因此,在示例性实施例中,对于两个或更多个中间存储器地址的集合中的不同于对应于输入虚拟存储器地址的任何一个存储器地址来说,控制逻辑被配置为控制中间存储器地址到第二MMU阶的传输以用于投机转译模式下的转译,从而在中间存储器地址的转译失败的情况下不生成错误消息。
在步骤860处,转译响应被存储在主PTE缓冲器700中。应当注意的是来自2阶MMU的响应是由4个响应组成的串组,不仅表示所请求的IPA,还表示具有邻近中间存储器地址的IPA。在步骤810处已经检测到相关性的实例中,这些其他响应中的一个或多个响应可以与在主PTE缓冲器700中等待转译的IPA相关。在这种情况下,对应于主PTE缓冲器700中的一个或多个IPA的PA可以被存储为与该IPA有关的PA转译。这样,通过检测是否有任何PA转译将作为与其他IPA转译请求有关的串组响应的一部分而被获得并且重新使用这些附加的PA转译以填入主PTE缓冲器700,主PTE缓冲器700中的8个IPA所需的8个PA转译可以被填入少于8个2阶转译请求中。因此,步骤860包括这样的步骤:针对未被提供给第二MMU阶用于转译的非标记的IPA,将第二MMU阶提供的两个或更多个PA的集合中的一个PA与该IPA关联起来。
如果还有更多被标记的IPA需要转译(在步骤870处),则控制返回至步骤840、850。否则,主PTE缓冲器700中的所有8个IPA现在具有对应的PA,并且在步骤880中8个PA被返回到1阶MMU作为串组响应。最后,在步骤890处,PA被缓存在1阶TLB 270处。
图12和13示意性地示出MMU的数据缓冲器(具体来说,主PTE缓冲器700)中的数据存储。
在图12中,8个IPA 900(对应于来自1阶PTW操作的3级表处的2级缓存50的串组响应)以及在图11的步骤810、830处导出的相应的标志被存储。标志910指示各个IPA 900是否需要转译。在图11中的步骤860处响应于来自2阶MMU的串组响应,对应的PA 920被填入。
在图13中,单个存储位置930被提供用于各个IPA,以便响应于针对IPA获取的转译而利用对应的PA值覆盖IPA。标志940可以类似于图12中的标志910进行操作,指示对于每一IPA是否需要转译操作。
图14是示出MMU的操作的示意性流程图,作为上面提到的存储器管理单元的操作方法的特征的示例。在此示例中,来自2级缓存50(到1阶MMU)的由8个响应组成的串组被获取以作为一段时间内(例如,8个连续时钟周期)的连续响应。所以在此示例中,8个响应的串组中的每一IPA被依次考虑。
在步骤1000处,8个IPA的串组中的第一IPA被接收,并且在步骤1010处,其被标记用于2阶转译。然后处理其余7个IPA。在步骤1020处获取下一个IPA。在步骤1030处进行下述检测:在步骤1020处获取的IPA是否在当前串组中的先前标记的IPA的范围内,使得针对在1020处获取的IPA的PA转译已经通过先前标记的IPA的2阶转译而获得。这里所应用的测试是:IPA的除了12个最低有效位之外的所有位是否与先前标记的IPA的相应位相同。对于除了12个最高有效位之外的所有位(也就是说,对位[47:12]的对比)的测试指示该IPA是否和与先前标记的IPA相同的存储器页(在IPA地址域中)有关。因此,该测试是这样一个示例:控制逻辑被配置用于控制第一MMU阶向第二MMU阶的中间存储器地址传输以用于转译,该控制逻辑被配置为检测两个或更多个中间存储器地址的集合中的两个或更多个中间存储器地址是否在中间存储器地址空间中的中间存储器地址彼此之间的阈值间隔内。
在一些实施例中,从第一MMU阶向第二MMU阶提供的一个或多个IPA至少包括对应于初始请求(也就是说,初始输入VA)的IPA。
此测试可以针对所考虑的当前群组中的所有此前标记的IPA被执行,也可以(例如)仅针对最近标记的IPA来执行。
如果回答为否,则在步骤1040处,步骤1020处获得的IPA被标记用于2阶转译。如果回答为是,则控制进行至步骤1050,其中,或者不设置标志,或者(取决于标志所使用的语法)设置标志以指示2阶转译不应当发生。控制进行至步骤1060。
在步骤1060处,针对在步骤1020处获取的IPA是当前8个IPA的串组响应中的第四个IPA还是第八个IPA进行检测。如果在步骤1020处获取的IPA既不是第四个IPA也不是第八个IPA,则控制返回至步骤1020以获得另一IPA。如果IPA是第八个IPA,则串组响应已经被完全处理并且处理结束。如果IPA是第四个IPA,则控制返回至步骤1000。
标记的IPA被发送用于2阶转译,以向第二MMU阶提供两个或更多个中间存储器地址的集合中的一个或多个中间存储器地址,从而获取对应于该两个或更多个中间存储器地址的集合中的每一个中间存储器地址的物理存储器地址。响应于被发送用于2阶转译的IPA而从2阶MMU接收的串组响应提供了充分的信息(由于上文提到的相关度测试)来填入主PTE缓冲器700的所有八个条目中。
在本申请中,词语“被配置为…”被用于表示装置的元件具有能够执行所定义的操作的配置。在此上下文中,“配置”表示硬件或软件的互连布置或方式。例如,装置可以具有提供所定义的操作的专用硬件,或处理器或其他处理设备可以被编程为执行功能。“被配置为”并非暗示装置元件需要以任何方式被改变以便于提供所定义的操作。
尽管本文已经结合附图详细描述了本技术的示例性实施例,但是应当理解的是本技术不限于这些具体的实施例,并且在不背离所附权利要求所定义的技术的范围和精神的情况下本领域的技术人员可以在此实现各种改变、添加和修改。例如,在不背离本技术的范围的情况下,从属权利要求的特征可以和独立权利要求的特征产生各种组合。
Claims (16)
1.一种多阶存储器管理单元MMU,包括:
第一MMU阶,该第一MMU阶被配置为将输入虚拟存储器地址转译为对应的中间存储器地址,所述第一MMU阶生成包括所述对应的中间存储器地址的、由两个或更多个中间存储器地址组成的集合;以及
第二MMU阶,该第二MMU阶被配置为将所述第一MMU阶提供的中间存储器地址转译为物理存储器地址,所述第二MMU阶响应于从所述第一MMU阶接收的中间存储器地址,提供包括对应于从所述第一MMU阶接收的中间存储器地址的所述物理存储器地址的、由两个或更多个物理存储器地址组成的集合;
所述第一MMU阶被配置为向所述第二MMU阶提供所述由两个或更多个中间存储器地址组成的集合中不同于下述任意中间存储器地址的中间存储器地址以用于转译:所述第二MMU阶将为所述中间存储器地址提供物理存储器地址以作为对所述由两个或更多个中间存储器地址组成的集合中的其他中间存储器地址中的一个中间存储器地址进行转译的响应。
2.如权利要求1所述的存储器管理单元,还包括:
缓冲器,该缓冲器被配置为至少存储从所述第二MMU阶接收的由两个或更多个物理存储器地址组成的集合中的下述物理存储器地址:这些物理存储器地址对应于所述由两个或更多个中间存储器地址组成的集合中的中间存储器地址。
3.如权利要求1所述的存储器管理单元,其中:
所述第一MMU阶被配置为根据页表转译输入虚拟存储器地址;
并且其中,所述由两个或更多个中间存储器地址组成的集合包括:
对应于所述输入虚拟存储器地址的中间存储器地址;以及
表示在所述页表中与保存所述对应的中间存储器地址的条目邻近的条目的一个或多个其他中间存储器地址。
4.如权利要求1所述的存储器管理单元,其中所述由两个或更多个物理存储器地址组成的集合包括:
对应于提供给所述第二MMU阶的中间存储器地址的物理存储器地址;以及
对应于在中间存储器地址空间中与提供给所述第二MMU阶的所述中间存储器地址邻近的中间存储器地址的一个或多个其他物理存储器地址。
5.如权利要求1所述的存储器管理单元,包括控制逻辑,该控制逻辑被配置为控制所述第一MMU阶到第二MMU阶的、用于转译的中间存储器地址的传输,并且被配置为检测所述由两个或更多个中间存储器地址组成的集合中的两个或更多个中间存储器地址是否在所述中间存储器地址空间中的中间存储器地址彼此之间的阈值间隔内。
6.如权利要求5所述的存储器管理单元,其中所述控制逻辑被配置为将所述由两个或更多个中间存储器地址组成的集合中的一个或多个中间存储器地址提供给所述第二MMU阶,以获得对应于所述由两个或更多个中间存储器地址组成的集合中的每一个中间存储器地址的物理存储器地址。
7.如权利要求6所述的存储器管理单元,其中,对于所述由两个或更多个中间存储器地址组成的集合中的、除了对应于所述输入虚拟存储器地址的中间存储器地址之外的任何一个中间存储器地址,所述控制逻辑被配置为控制该中间存储器地址到所述第二MMU阶的传输以采用投机转译模式进行转译,使得在对该中间存储器地址的转译失败的情况下不生成错误消息。
8.如权利要求6所述的存储器管理单元,其中被提供给所述第二MMU阶的所述一个或多个中间存储器地址至少包括对应于所述输入虚拟存储器地址的中间存储器地址。
9.如权利要求1所述的存储器管理单元,其中:
所述第一MMU阶被配置为访问页表层级,使得在该层级中的较高页表提供用于所述第二MMU阶进行地址转译的信息以指向所述层级中的下一较低页表。
10.如权利要求9所述的存储器管理单元,其中:
所述层级中的最低页表提供包括所述对应的中间存储器地址的、由两个或更多个中间存储器地址组成的集合。
11.如权利要求1所述的存储器管理单元,包括与所述第一MMU阶相关联的地址转译缓存,所述地址转译缓存被配置为存储针对虚拟存储器地址的集合的地址转译信息,所述地址转译信息包括:
定义从虚拟存储器地址到相应的映射地址的地址转译的信息,所述映射地址是中间存储器地址或物理存储器地址;以及
标志信息,该标志信息向所述虚拟存储器地址的集合中的每一个虚拟存储器地址指示对应于该虚拟存储器地址的映射地址是中间存储器地址还是物理存储器地址。
12.一种多阶存储器管理单元MMU,包括:
第一MMU阶,该第一MMU阶被配置为将输入虚拟存储器地址转译为中间存储器地址;
第二MMU阶,该第二MMU阶被配置为将所述第一MMU阶提供的中间存储器地址转译为物理存储器地址;以及
与所述第一MMU阶相关联的地址转译缓存,所述地址转译缓存被配置为存储针对虚拟存储器地址的集合的地址转译信息,所述地址转译信息包括:
定义从虚拟存储器地址到相应的映射地址的地址转译的信息,所述映射地址是中间存储器地址或物理存储器地址;以及
标志信息,该标志信息向所述虚拟存储器地址的集合中的每一个虚拟存储器地址指示对应于该虚拟存储器地址的映射地址是中间存储器地址还是物理存储器地址,
其中,所述多阶MMU被配置为在所述地址转译缓存中存储中间存储器地址和指示所存储的地址是需要转译为物理存储器地址的中间存储器地址的标志信息,并且响应于获取到对于该中间存储器地址的转译,用对应的物理存储器地址覆盖该中间存储器地址,并且将所述标志信息设置为指示所存储的地址是物理存储器地址。
13.如权利要求12所述的存储器管理单元,其中:
所述第一MMU阶被配置为访问页表层级,使得所述层级中的较高页表提供用于所述第二MMU阶进行地址转译的信息以指向所述层级中的下一较低页表。
14.如权利要求13所述的存储器管理单元,其中:
所述层级中的最低页表定义对应于所述输入虚拟存储器地址的中间存储器地址;以及
所述地址转译缓存被配置为存储关于所述层级中的最低页表的地址转译信息。
15.一种多阶存储器管理单元MMU的操作方法,所述方法包括:
在第一MMU阶处将输入虚拟存储器地址转译为对应的中间存储器地址,该转译步骤生成包括所述对应的中间存储器地址的、由两个或更多个中间存储器地址组成的集合;
在第二MMU阶处将所述第一MMU阶提供的中间存储器地址转译为物理存储器地址,包括:响应于从所述第一MMU阶接收的中间存储器地址,提供包括对应于从所述第一MMU阶接收的中间存储器地址的所述物理存储器地址的、由两个或更多个物理存储器地址组成的集合;以及
所述第一MMU阶向所述第二MMU阶提供所述由两个或更多个中间存储器地址组成的集合中不同于下述任意中间存储器地址的中间存储器地址以用于转译:所述第二MMU阶将为所述中间存储器地址提供物理存储器地址以作为对所述由两个或更多个中间存储器地址组成的集合中的其他中间存储器地址中的一个中间存储器地址进行转译的响应。
16.一种多阶存储器管理单元MMU的操作方法,所述方法包括:
在第一MMU阶处将输入虚拟存储器地址转译为中间存储器地址;
在第二MMU阶处将所述第一MMU阶提供的中间存储器地址转译为物理存储器地址;以及
关联于所述第一MMU阶并且针对虚拟存储器地址的集合缓存地址转译信息,所述地址转译信息包括:
定义从虚拟存储器地址到相应的映射地址的地址转译的信息,所述映射地址是中间存储器地址或物理存储器地址;以及
标志信息,该标志信息向所述虚拟存储器地址的集合中的每一个虚拟存储器地址指示对应于该虚拟存储器地址的映射地址是中间存储器地址还是物理存储器地址,
其中,所述多阶MMU被配置为缓存中间存储器地址和指示所存储的地址是需要转译为物理存储器地址的中间存储器地址的标志信息,并且响应于获取到对于该中间存储器地址的转译,用对应的物理存储器地址覆盖该中间存储器地址,并且将所述标志信息设置为指示所存储的地址是物理存储器地址。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1504971.1 | 2015-03-24 | ||
GB1504971.1A GB2536880B (en) | 2015-03-24 | 2015-03-24 | Memory management |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106021131A CN106021131A (zh) | 2016-10-12 |
CN106021131B true CN106021131B (zh) | 2021-06-15 |
Family
ID=53052319
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610154207.3A Active CN106021131B (zh) | 2015-03-24 | 2016-03-17 | 存储器管理 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9996474B2 (zh) |
CN (1) | CN106021131B (zh) |
GB (1) | GB2536880B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018041204A (ja) * | 2016-09-06 | 2018-03-15 | 東芝メモリ株式会社 | メモリ装置及び情報処理システム |
GB2557588B (en) * | 2016-12-09 | 2019-11-13 | Advanced Risc Mach Ltd | Memory management |
US10402340B2 (en) | 2017-02-21 | 2019-09-03 | Micron Technology, Inc. | Memory array page table walk |
US10120813B2 (en) * | 2017-03-08 | 2018-11-06 | Arm Limited | Address translation |
TW201931136A (zh) * | 2018-01-08 | 2019-08-01 | 晨星半導體股份有限公司 | 硬體控制方法與硬體控制系統 |
EP3792800A1 (en) | 2019-09-12 | 2021-03-17 | Nxp B.V. | Managing equally sized virtual memory regions and physical memory regions in an electronic device |
US11507518B2 (en) * | 2020-05-08 | 2022-11-22 | Micron Technology, Inc. | Logical-to-physical mapping using a flag to indicate whether a mapping entry points to [[for]] sequentially stored data |
US20240289281A1 (en) * | 2023-02-28 | 2024-08-29 | IntelliProp, Inc. | System for Memory Resident Data Movement Offload and Associated Methods |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1926616A (zh) * | 2004-01-19 | 2007-03-07 | 特科2000国际有限公司 | 使用存储器地址映射表的便携式数据存储设备 |
CN101520753A (zh) * | 2008-02-29 | 2009-09-02 | Arm有限公司 | 数据处理设备和控制虚拟机对安全存储器的访问的方法 |
CN103810111A (zh) * | 2012-11-08 | 2014-05-21 | 国际商业机器公司 | 有源存储器件中的地址生成的方法及其处理元件 |
CN104067246A (zh) * | 2012-01-10 | 2014-09-24 | 高通股份有限公司 | 通过物理地址进行的非分配存储器存取 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH079632B2 (ja) * | 1991-06-18 | 1995-02-01 | インターナショナル・ビジネス・マシーンズ・コーポレイション | アドレス変換装置および方法 |
SG45399A1 (en) * | 1994-01-12 | 1998-01-16 | Sun Microsystems Inc | Logically addressable physical memory for a virtual memory computer system that support multiple page sizes |
US6681311B2 (en) * | 2001-07-18 | 2004-01-20 | Ip-First, Llc | Translation lookaside buffer that caches memory type information |
GB0226875D0 (en) * | 2002-11-18 | 2002-12-24 | Advanced Risc Mach Ltd | Control of access to a memory by a device |
US8140820B2 (en) * | 2008-05-21 | 2012-03-20 | Arm Limited | Data processing apparatus and method for handling address translation for access requests issued by processing circuitry |
US8700862B2 (en) * | 2008-12-03 | 2014-04-15 | Nvidia Corporation | Compression status bit cache and backing store |
US20130013889A1 (en) * | 2011-07-06 | 2013-01-10 | Jaikumar Devaraj | Memory management unit using stream identifiers |
US10114756B2 (en) * | 2013-03-14 | 2018-10-30 | Qualcomm Incorporated | Externally programmable memory management unit |
EP2849071A1 (en) * | 2013-09-16 | 2015-03-18 | ST-Ericsson SA | Pre-fetch in a multi-stage memory management system |
EP2874066B1 (en) * | 2013-11-15 | 2020-07-15 | STMicroelectronics International N.V. | Method in a memory management unit and a memory management unit, for managing address translations in two stages |
GR20130100707A (el) * | 2013-12-23 | 2015-07-31 | Arm Limited, | Μεταφραση διευθυνσης σε μια συσκευη επεξεργασιας δεδομενων |
US10114760B2 (en) * | 2014-01-14 | 2018-10-30 | Nvidia Corporation | Method and system for implementing multi-stage translation of virtual addresses |
-
2015
- 2015-03-24 GB GB1504971.1A patent/GB2536880B/en active Active
-
2016
- 2016-03-17 CN CN201610154207.3A patent/CN106021131B/zh active Active
- 2016-03-22 US US15/076,764 patent/US9996474B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1926616A (zh) * | 2004-01-19 | 2007-03-07 | 特科2000国际有限公司 | 使用存储器地址映射表的便携式数据存储设备 |
CN101520753A (zh) * | 2008-02-29 | 2009-09-02 | Arm有限公司 | 数据处理设备和控制虚拟机对安全存储器的访问的方法 |
CN104067246A (zh) * | 2012-01-10 | 2014-09-24 | 高通股份有限公司 | 通过物理地址进行的非分配存储器存取 |
CN103810111A (zh) * | 2012-11-08 | 2014-05-21 | 国际商业机器公司 | 有源存储器件中的地址生成的方法及其处理元件 |
Non-Patent Citations (1)
Title |
---|
"ARM MMU中虚拟地址到物理地址转换的研究";王宏宇;《中国电力教育》;20081220;第343-344页 * |
Also Published As
Publication number | Publication date |
---|---|
GB2536880A (en) | 2016-10-05 |
GB2536880B (en) | 2021-07-28 |
CN106021131A (zh) | 2016-10-12 |
GB201504971D0 (en) | 2015-05-06 |
US20160283396A1 (en) | 2016-09-29 |
US9996474B2 (en) | 2018-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106021131B (zh) | 存储器管理 | |
US10802987B2 (en) | Computer processor employing cache memory storing backless cache lines | |
JP6696987B2 (ja) | 仮想アドレスを使用してアクセスされるキャッシュ | |
US8151085B2 (en) | Method for address translation in virtual machines | |
CN104346294B (zh) | 基于多级缓存的数据读/写方法、装置和计算机系统 | |
US8417915B2 (en) | Alias management within a virtually indexed and physically tagged cache memory | |
US9779028B1 (en) | Managing translation invalidation | |
US10191853B2 (en) | Apparatus and method for maintaining address translation data within an address translation cache | |
US10255195B2 (en) | Apparatus and method for performing address translation | |
US20130013889A1 (en) | Memory management unit using stream identifiers | |
JP2018504694A5 (zh) | ||
US20210089470A1 (en) | Address translation methods and systems | |
US11907301B2 (en) | Binary search procedure for control table stored in memory system | |
TWI641947B (zh) | 用於管理位址轉換和快取記憶體儲存的方法及裝置 | |
KR960001945B1 (ko) | 우선변환참조버퍼에서 적중수를 증가시키기 위한 장치 | |
US20140040563A1 (en) | Shared virtual memory management apparatus for providing cache-coherence | |
TW201633145A (zh) | 管理用於記憶體頁面的重用資訊 | |
CN114328295A (zh) | 存储管理装置、处理器、相关装置和相关方法 | |
TW201635147A (zh) | 管理位址獨立的頁面屬性 | |
CN114063934A (zh) | 数据更新装置、方法及电子设备 | |
US9483412B2 (en) | Method and apparatus for reformatting page table entries for cache storage | |
US20240070071A1 (en) | Context information translation cache | |
CN115061955A (zh) | 处理器、电子设备、地址翻译方法以及缓存页表项方法 | |
CN115098410A (zh) | 处理器、用于处理器的数据处理方法及电子设备 | |
US11194718B2 (en) | Instruction cache coherence |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |