CN108228485A - 存储器管理 - Google Patents

存储器管理 Download PDF

Info

Publication number
CN108228485A
CN108228485A CN201711296148.4A CN201711296148A CN108228485A CN 108228485 A CN108228485 A CN 108228485A CN 201711296148 A CN201711296148 A CN 201711296148A CN 108228485 A CN108228485 A CN 108228485A
Authority
CN
China
Prior art keywords
address
translation
circuit
input store
data
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
Application number
CN201711296148.4A
Other languages
English (en)
Other versions
CN108228485B (zh
Inventor
杰森·帕克
安德鲁·布鲁克菲尔德·斯维尼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
Advanced Risc Machines Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN108228485A publication Critical patent/CN108228485A/zh
Application granted granted Critical
Publication of CN108228485B publication Critical patent/CN108228485B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/681Multi-level TLB, e.g. microTLB and main TLB
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB miss handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Abstract

本发明涉及存储器管理。一种装置包括:输入电路,用于接收定义输入存储器地址空间内的输入存储器地址的转译请求;以及地址转译电路,包括:许可电路,用于针对输入存储器地址空间的一组相应区域中的每一个,参考从地址转译表填充的并且存储在许可数据存储中的许可数据,来检测是否许可该输入存储器地址的存储器访问,在该许可数据存储中存在针对每个区域的专用条目,使得输入存储器地址映射到单个相应的条目;以及输出电路,用于响应于该转译请求而提供输出存储器地址,其中当许可电路指示允许针对包括所述输入存储器地址的输入存储器地址空间的区域进行访问时,该输出电路被配置为提供输出存储器地址作为该输入存储器地址的预定函数。

Description

存储器管理
技术领域
本公开涉及存储器管理。
背景技术
数据处理装置可以向每个运行程序或外部设备提供对于由虚拟存储器地址定义的虚拟地址空间的访问。每个程序或设备都会看到自身虚拟地址空间,该虚拟地址空间包含由该程序或设备使用的指令和数据。在其他既有优点中,使用虚拟寻址允许操作系统通过禁止一个程序访问或破坏由另一程序使用的信息来控制存储器访问。
当需要访问虚拟存储器地址时,首先需要将虚拟存储器地址转译为物理存储器地址,使得可以从物理存储器或物理存储器缓存中获取所需的信息或将所需的信息写入物理存储器或物理存储器缓存。
被称为转译后备缓存器(TLB)的缓存可以用作地址转译过程的一部分。TLB存储虚拟存储器地址和物理存储器地址之间最近或常用的转译。因此,作为地址转译过程的第一步,可以查询TLB以检测TLB是否已经包含所需的地址转译。如果不是,则可以使用更多涉及的转译过程,例如涉及查询保存有地址转译信息的所谓的页表,其通常导致TLB被填充所需的转译。
在一些情况下使用多阶段转译。在示例中,使用两层转译。由执行程序或诸如图形处理单元(GPU)之类的其他系统模块所需的虚拟地址(VA)通过第一转译阶段被转译为中间物理地址(IPA)。IPA通过第二转译阶段被转译为物理地址(PA)。使用多阶段转译的一个原因是出于在多个操作系统(OS)可能被使用在运行在相同处理器上的相应“虚拟机”上时处理信息的安全性。一个特定的OS被用于VA到IPA的转译,但仅管理程序(监控虚拟机运行的软件)或其他监控过程将对阶段2(IPA到PA)转译进行监控。
发明内容
在示例布置中,提供了一种装置,包括:
输入电路,用于接收定义输入存储器地址空间内的输入存储器地址的转译请求;以及
地址转译电路,包括:
许可电路,用于针对输入存储器地址空间的一组相应区域中的每一个区域,参考从地址转译表填充的并且存储在许可数据存储中的许可数据,来检测是否许可输入存储器地址的存储器访问,在许可数据存储中存在用于每个区域的专用条目,使得输入存储器地址映射到单个相应的条目;以及
输出电路,用于响应于转译请求提供输出存储器地址,其中当所述许可电路指示允许对于包括输入存储器地址的输入存储器地址空间的区域进行访问时,输出电路被配置为提供该输出存储器地址作为该输入存储器地址的预定函数。
在另一示例布置中,提供了一种方法,包括:
接收定义输入存储器地址空间内的输入存储器地址的转译请求;
针对输入存储器地址空间的一组相应区域中的每一个,参考从地址转译表填充的并且存储在许可数据存储中的许可数据,来检测是否许可该输入存储器地址的存储器访问,在许可数据存储中存在用于每个区域的专用条目,使得输入存储器地址映射到单个相应的条目;以及
响应于转译请求提供输出存储器地址,其中,当该许可电路指示允许对于包括输入存储器地址的输入存储器地址空间的区域进行访问时,该输出电路被配置为提供输出存储器地址作为输入存储器地址的预定函数。
本技术的其他方面和特征由所附权利要求限定。
附图说明
本技术将参考附图中所示的实施例仅通过示例的方式进一步描述,其中:
图1示意性地示出了数据处理装置;
图2示意性地示出了数据处理装置;
图3-图5示意性地示出了地址转译装置的示例;
图6是示出图3的装置的操作的示意性流程图;
图7是示出图4的装置的操作的示意性流程图;
图8是示出图5的装置的操作的示意性流程图;
图9示意性地示出了页表;
图10是示出了页表移动的示意性流程图;
图11示意性地示出了数据处理装置;
图12是示出了图11的装置的操作的示意性流程图;
图13示意性地示出了数据处理装置;
图14是示出了填充页表和许可信息的示意性流程图;
图15是示出了对页表的改变的处理的示意性流程图;
图16示意性地示出了地址转译装置;
图17和18示意性地示出了示例数据结构;
图19示意性地示出了相干数据处理装置;并且
图20和21是示出了方法的示意流程图。
具体实施方式
在参考附图讨论实施例之前,提供了实施例的以下描述。
示例实施例提供了一种装置,包括:
输入电路,用于接收定义输入存储器地址空间内的输入存储器地址的转译请求;以及
地址转译电路,包括:
许可电路,用于针对输入存储器地址空间的一组相应区域中的每一个,参考从地址转译表填充的并且存储在许可数据存储中的许可数据,来检测是否许可该输入存储器地址的存储器访问,在许可数据存储中存在用于每个区域的专用条目,使得输入存储器地址映射到单个相应的条目;以及
输出电路,用于响应于转译请求提供输出存储器地址,其中,当许可电路指示允许对于包括输入存储器地址的输入存储器地址空间的区域进行访问时,输出电路被配置为提供输出存储器地址作为该输入存储器地址的预定函数。
示例的实施例可以提供存储器管理(诸如地址转译)的函数性方面以及存储器保护的方面,并且在示例中,这些功能可以在输入地址域(诸如虚拟地址域)中被提供。通过使用在条目和区域之间的映射来存储关于存储器地址的区域或块的许可数据,以及通过使用用于地址转译的预定函数,可以使用潜在紧凑量的存储将这些函数提供在输入(例如虚拟)地址域中,该存储潜在地能够物理地位于发起转译请求的设备附近。
尽管许可数据可以涉及可用的输入存储器地址空间的子集,但是在示例中,所述许可电路被配置为存储针对输入存储器地址空间的一组连续区域的许可数据,使得输入存储器地址空间的每个可能的输入存储器地址在一个相应区域内。
在许可电路不提供与存储器地址有关的许可数据的情况下,可以使用更高层的地址转译。在示例中,该装置包括:第二转译电路,用于生成输入存储器地址到输出存储器地址的转译;其中,当所述许可电路未指示许可对于包括输入存储器地址的输入存储器地址空间的区域进行访问时,输出电路被配置为提供由第二转译电路生成的转译。在示例中,第二转译电路被配置为参考地址转译表来执行地址转译。在示例中,第二转译电路包括:转译后备缓存器,用于存储关于在输入存储器地址空间中的输入存储器地址的子集的转译;以及电路,用于访问地址转译表以获得转译后备缓存器未存储的转译的输入存储器地址的转译。
在示例中,地址转译表包括两个或更多页表层的分层结构,在分层结构中更高层的页表对于具有与页表层相关联的块大小的输入存储器地址的块指示:下一层中的一组或两组或更多页表中的相应一个;亦或适用于输入存储器地址的块的地址映射。方便地,在示例中,这些区域具有等于与除了页表层的分层结构中的最低页表层之外的页表层之一相关联的块大小的区域大小。
用于方便地更新许可电路的示例技术是:当第二转译电路生成输入存储器地址到输出存储器地址的转译时,许可电路被配置为根据所生成的转译来存储针对输入存储器地址空间的该区域的许可数据,假设该转译满足包括以下各项的一组标准:转译在输入存储器地址空间的区域中的一整个区域是有效的;并且转译使得输出存储器地址通过预定函数与区域内的输入存储器地址相关联。可选地,该组标准还可以包括:转译授予访问许可,其对应于可以由许可电路存储的访问许可。
示例的布置提供监控处理器,用于控制地址转译表的存储,并根据地址转译表将许可数据写入许可电路。
在示例中,所述输入存储器地址是物理地址和虚拟存储器地址中的一个,并且输出存储器地址是物理存储器地址。
尽管可以使用各种函数,但是在示例中,预定函数为使得输出存储器地址等于输入存储器地址。然而,在其他示例中,可以提供预定函数的选择,其中:
许可电路被配置为存储标识预定函数的数据。
示例的布置还涉及数据处理装置,其包括:
根据物理存储器地址可访问的一个或多个存储器;
一个或多个数据处理节点,用于从由数据处理节点生成的虚拟存储器地址生成对物理存储器地址的转译请求,以访问所述一个或多个存储器;以及
包括如上所定义装置的地址转译装置,用于将来自数据处理节点的虚拟地址转译为物理地址,以访问一个或多个存储器。
在示例中(例如,其中预定函数表示相等的示例),一个或多个数据处理节点具有各自相关联的缓存存储设备;数据处理装置包括相干控制电路;并且一个或多个存储器和缓存存储设备被配置为在相干控制电路的控制下操作以存储可由数据处理节点中的每一个数据处理节点可访问的数据的一个或多个副本,使得由一个处理元件写入相干存储器电路中的存储器地址的数据与由另一个处理元件从该相干存储器电路中的存储器地址读取的数据相一致。相干控制电路可以被配置为使用数据被存储在一个或多个存储器中的物理存储器地址,关于由该缓存存储设备保持的数据与缓存存储设备进行通信。这种布置允许相干技术与上面讨论的地址转译技术一起使用。
另一示例的实施例提供了一种方法,包括:
接收定义输入存储器地址空间内的输入存储器地址的转译请求;
针对输入存储器地址空间的一组相应区域中的每一个,参考从地址转译表填充的并且存储在许可数据存储中的许可数据,来检测是否允许针对输入存储器地址进行存储器访问,在许可数据存储中存在用于每个区域的专用条目,使得输入存储器地址映射到单个相应的条目;以及
响应于转译请求提供输出存储器地址,其中,当许可电路指示许可对于包括输入存储器地址的输入存储器地址空间的区域的访问时,输出电路被配置为提供输出存储器地址作为输入存储器地址的预定函数。
现参考附图,图1示意性地示出了包括处理器核心(“CPU”或中央处理单元)10、诸如图形处理单元(GPU)或显示处理器之类的媒体处理器20、以及存储器30,以上各项通过互连40连接到彼此。CPU 10和媒体处理器20是数据处理节点的示例。将会理解,图1的布置是用于本讨论的目的的简化示例,并且其他节点、存储器(诸如,缓存存储器)、外部设备或其他设备或电路可以被包括在数据处理装置中。
现在将讨论管理对于存储器30的访问的两个方面。(将在下面参考图19讨论第三数据相干)。这些是地址转译的使用和存储器保护的使用。为了清楚起见,在图1中未明确示出这种布置,但是下面将详细讨论包括这些功能方面的示例。
关于地址转译,如上所述,每个正在运行的程序或外部设备可以被提供有对由虚拟存储器地址定义的虚拟地址空间的访问,使得每个程序或设备看到自己的虚拟地址空间,其包含供该程序或设备使用的指令和数据。当需要访问虚拟存储器地址时,首先需要将虚拟存储器地址转译为物理存储器地址,使得可以从物理存储器或物理存储器缓存中获取所需的信息或写入所需的信息到物理存储器或物理存储器缓存。
尽管可以使用从虚拟地址到物理地址的单个阶段转译,但在一些情况下使用多阶段转译。在一些示例中,使用两层转译。由诸如图形处理单元(GPU)的执行程序或其他系统模块所需的虚拟地址(VA)通过第一转译阶段被转译为中间物理地址(IPA)。IPA通过第二转译阶段被转译为物理地址(PA)。
地址转译可以用于在每个数据处理节点或者其他连接的设备处发起的到存储器30的访问。
另一个方面是存储器保护。存储器保护可用于监督对于存储器地址空间的部分的访问。例如,存储器保护单元(MPU)可以被布置在互连40和存储器30之间。MPU将比较对应于每个存储器访问事务的存储器地址,并且在一些示例中,指示事务起源方面的标识符(ID)(例如,指示与发布事务的程序或设备相关联的信任等级)以检测是否授予针对将发生的存储器访问事务的许可。
这种类型的MPU(布置在互连和存储器之间)提供在物理地址域中的所谓的从侧(slave side)存储器保护,因为从互连40的角度来看,数据处理节点10、20被认为是主设备(至少关于存储器访问事务的发起方面),并且从互连40的角度来看,存储器被认为是从侧设备。
以下讨论的示例布置可以提供作为其功能的一部分的主侧(master side)存储器保护。
图2示意性地示出了数据处理装置。在一些方面,这类似于图1的高级别图中所示的装置,但是该图还示出了关于地址转译和存储器保护的其他功能。
图2的装置包括CPU 200、GPU 210、显示处理器220、互连230和存储器240。GPU 210和显示处理器220是如以上参考图1所讨论的媒体处理器的示例。
可以体现为一个或多个物理存储器设备的存储器240,可以存储各种类型的数据,包括例如用于由CPU、GPU或显示处理器执行的程序代码以及诸如视频数据的媒体数据。示例的情况是预先准备的视频节目将由GPU和/或显示处理器重播的情况。此处,存储的视频数据有各种限制。一个约束是安全性,其中存储的视频数据可能受版权和数字版权管理(DRM)系统的保护,以避免数据的非法复制。另一个约束是需要实时或至少快速和准时地访问视频数据,从而避免中断视频内容的实时重放和显示。另一约束可以是数据量可能非常大,特别是如果显示高清晰度素材的情况下。
考虑到安全性,受保护内容的性质可以是适用第二阶段的转译(操作系统无法控制的)。但是,存储器保护也是保护这些内容的适当手段。但是如上所述,数据量可以是即使数据保持在虚拟地址空间中的连续范围的虚拟地址处,这也可能通过地址转移处理而被映射到物理地址空间中的不连续的区域,这仅由于在设备的正常操作期间物理存储器的大的连续区域可能是不可用的。上面讨论的MPU在关于物理地址空间的从侧(存储器)上运行。因此,因为潜在的大量的不连续的物理地址区域,所以使用这样的MPU来为用于存储视频数据的物理地址空间的大而不连续的区域提供保护,可能是有问题的。先前提出的解决方案是在系统启动时预留或“开辟”物理存储器区域,这意味着操作系统从一开始的操作就具有较少的内存。
本示例可以在图2的互连系统的主侧提供存储器保护和地址转译功能。
在图2中,地址转译由形成CPU 200的功能的一部分的存储器管理单元(MMU)205执行以及由分别关于GPU和显示处理器进行操作的MMU 250、260执行。
MMU 250、260中的每一个均包括许可电路,其可以另外被称为保护缓存(P$)252、262。下面将详细讨论许可电路的操作。许可电路布置可以提供关于地址转译和主侧存储器保护的功能。
图3-5示意性地图示了由MMU 250或MMU 260体现的类型的地址转译装置的示例。在每种情况下,装置的输入是从其请求转译的相应数据处理节点(在该示例中为GPU或显示处理器)接收的输入存储器地址。设备的输出是输出地址,该输出地址作为输入地址的转译版本,假定针对所请求的存储器访问的许可是可用的。
图3中示意性地示出了第一示例。
图3的布置包括许可电路300,在示例中,许可电路可以是相对小的存储器,其存储与提供给装置的输入地址的地址空间内的地址的块相关的许可信息。即使在大的存储器空间系统中,下面将讨论的特征也可以允许许可电路所需的存储器存储量相对小,使得在一些示例中,存储器可以被本地实现到正在执行地址转译的数据处理节点。这可以避免需要参考主存储器240用于地址转译,并提供潜在更快的操作。
例如,为了许可电路的操作的目的,可用存储器空间可以被划分成(例如)2MB的块。这意味着如果为每个这样的块提供许可电路中的一个条目,则在例如8GB存储器空间的情况下需要4096个条目。在示例中,为每个条目提供两个数据位,这意味着在示例的8GB存储器空间系统中许可电路300的大小可以是8192位。这个通用大小的存储器可以足够小,以便对访问它的设备本地地实现。
在示例中,整个可用存储器空间被映射到许可电路300中的相应条目。该映射使得可用存储器空间出于这些目的被划分成(例如)诸如2MB的特定大小的块,并且每个块映射到许可电路300中的单独的相应条目。以这种方式,对于输入存储器地址空间的每个块或区域,存在由许可电路存储的数据中的专用条目。这提供这样的示例,其中许可电路被配置为存储针对输入存储器地址空间的一组连续区域的许可数据,使得输入存储器地址空间的每个可能的输入存储器地址位于相应的一个区域内。
应当注意,许可电路中数据的存储不需要跨越输入存储器地址的整个可能的地址空间。许可电路的操作可以被限制到该存储器地址空间的子集,但是以这种预定的方式:对于与其有关的地址空间的每个块,仍然存在存储在许可电路300中的数据中的专用条目。以这种方式,许可电路的操作不同于例如转译后备缓存器(TLB),在该转译后备缓存器中,必须使用标签或类似指示来标注存储在TLB中的数据,以指示存储的数据涉及哪个存储器地址。在许可电路300中,跨越输入存储器地址空间,为每个相应的块提供条目,使得这些条目专用于那些地址的块。
在操作中,输入电路310接收输入地址并将该地址映射到许可电路300中的特定条目。
在该示例中,许可电路条目指示诸如读取许可和写入许可的许可(如上所述,读取和写入许可可以由两位来表示)。例如,许可电路条目不指示在页表(将在以下讨论页表)情况下的映射,而是使用预定映射。输出电路320检测与当前输入地址有关的许可电路300的内容,假定访问由存储在当前地址的许可电路中的数据(事实上,为包含当前地址的整个块)提供,输出电路320生成输出地址作为输入地址的预定映射,并将其作为输出信号与许可指示一起被提供。
预定的映射可以简单地如:
输入地址=输出地址
或者在其他示例中,可以在两个地址之间施加预定的偏移,使得例如:
输出地址=输入地址+偏移
通过使用预定映射,许可电路不必以TLB将存储映射信息的方式来存储映射信息本身。并且,这可以提供许可电路的紧凑且快速的操作。
图6的示意流程图中示出了与图3的布置有关的这些操作。
在步骤600中,输入电路310接收包括输入地址的存储器访问事务。在步骤610,在许可电路中查看输入地址,以及在步骤620处检测是否已经获得许可电路中的命中。这里,术语“命中”可以指检测输入地址是否关于由许可电路覆盖的区域或块,但是,在其中整个可用输入存储器空间被许可电路覆盖的示例布置中,在步骤620确定“命中”可以是检测在包含该输入地址的块处是否由许可电路提供了用于存储器访问的访问许可。因此,在该示例中,许可电路要么不存储许可(不是命中)要么存储当检测到“命中”时诸如只读、只写、或者读/写之类的某些许可。
如果没有检测到命中,则控制进行到步骤630,在该步骤630处要么返回故障状态,要么如下面参考其他示例实施例所讨论的,在其他地方执行对地址转译的搜索。
然而,如果检测到命中,则控制转到步骤640,在该步骤640处,输出电路320将预定的转译函数(其可以如上所述是相等的)应用于输入地址,并且在步骤650中,将转译的地址与许可指示一起输出。
图4示意性地示出了地址转译装置的另一示例。在许多方面,该操作方式类似于图3所示的方式,两种布置所共有的描述将不再重复。图3和图4的布置之间的区别在于:标识符(ID)作为输入事务的一部分的使用,以及存储在许可电路中的根据ID可选择的多个版本的数据的使用。
ID可以至少部分指示地址转译事务的出处,并且在一些示例中可以通过指示与产生该事务的软件相关联的信任级别来实现。输入地址空间中的不同许可可以与不同信任级别相关联。因此,根据与当前事务相关联的输入ID来选择在许可电路中被排序的许可数据的版本。
尽管许可电路数据的精确布局与当前的讨论不相关,但是其可以被考虑以表示由许可电路存储的许可数据阵列的多个版本。这些被示意性地示出为图4中的许可电路的多个实例400。输入电路410检测输入地址和ID两者,并使用ID选择或启用与该ID相关的一个版本的许可电路数据。在许可电路数据的该实例中的被存储的许可数据被传送到如前所述操作的输出电路420,除了可选地,它可以提供该ID作为附加输出。
图7是示出图4的装置的操作的示意性流程图。此处,许多操作与图6中示出的操作类似或相同,并且将不再进行详细描述。在步骤700,接收事务,并且在步骤710处输入电路基于与接收到的事务相关联的ID来选择存储在许可电路400中的许可数据的实例。使用选定的许可电路实例,该过程之后遵循与图6所示相同的过程,步骤720、730、740、750对应于图6中的相应步骤610、620、630、640。在步骤760,转译的地址可选地与ID值一起被输出。
图5示意性地示出了地址转译装置的另一示例。这使用许可电路的多个实例500和由输入电路510使用的ID,来选择那些实例中的一个。然而,还提供了转译后备缓存器(TLB)530,其可选地与能够例如通过页表移动的地址转译的MMU 540相关联。输出电路520提供输出转译地址。TLB和/或MMU提供了第二转译电路的示例,该第二转译电路用于生成输入存储器地址到输出存储器地址的转译;其中,当许可电路未指示许可对于包括输入存储器地址的输入存储器地址空间的区域进行访问时,该输出电路被配置为提供由第二转译电路生成的转译。例如,第二转译电路可以被配置为参考地址转译表来执行地址转译。在示例中,第二转译电路包括:转译后备缓存器(530),用于存储关于输入存储器地址空间中的输入存储器地址的子集的转译;以及电路(540),用于访问地址转译表以获得其转译未被转译后备缓存器存储的输入存储器地址的转译。
图8的流程图中示意性地示出了图5的装置的操作。
在步骤800,接收输入事务,并且在步骤810,针对存储在许可电路500中的数据执行查找。这可以包括在上面讨论的选择步骤710(如图5的示例中所示),其存在许可电路和相关的许可数据的多个示例。
在步骤820做出是否在许可电路数据中发生命中的检测。如果已经发生命中,则控制进行到步骤825(等同于上述步骤750),在该步骤825处应用预定函数,然后进行到步骤895,在该处转译被返回。
如果在步骤820没有发生命中,则不是立即生成故障状态,而是在TLB 530中查找输入地址以检测是否在TLB 530中缓存了用于该输入地址的转译。在步骤840处为是,在步骤895处返回该转译。如果没有在TLB中的命中,并且假定MMU 540被表示为可访问或以其他方式可访问,则在步骤850处指示MMU 540执行页表移动。如果MMU 540不可用或未被提供,则在步骤840的“否”输出处,可以生成故障。
步骤860,检测页表移动的结果是否引起了有效的转译。如果否,则在步骤870处返回故障。如果是,则控制进行到步骤880。
在步骤880,做出转译是否是用于在许可电路中的存储的有效转译类型的检测。也就是说,进行一个或多个以下的检测:
●它是否涉及由许可电路使用的块大小的块?
●它是否涉及由许可电路提供的数据字段可表示的许可?
●由考虑的转译表示的输入地址和输出地址之间的映射是否对应于与许可电路关联的预定函数可表示的映射的类型?
如果转译是用于许可电路的存储的有效类型,则在步骤885处,根据新获得的转译更新许可电路,并且控制进行到步骤895以返回转译。然而,如果转译不是可以由许可电路有效表示的类型,则在步骤890利用新获得的转译来更新TLB,并且在步骤895返回该转译。
因此,在步骤880的测试和以下步骤提供了以下示例:当所述第二转译电路生成输入存储器地址到输出存储器地址的转译时,许可电路被配置为根据所生成的转译来存储输入存储器地址空间的该区域的许可数据,假设转译满足包括以下各项的一组标准:转译是在输入存储器地址空间的区域中的一整个区域是有效的;并且转译为通过预定函数使得输出存储器地址与区域内的输入存储器地址相关。该组标准还可以包括:转译授予访问许可,该访问许可对应于可以被许可电路存储的访问许可。
图2包括图3到图5中任何一个的布置,因此提供了一种装置的示例,该装置包括:
输入电路(310,410,510),用于接收定义输入存储器地址空间内的输入存储器地址的转译请求;以及
地址转译电路包括:
许可电路(300,400,500),用于针对输入存储器地址空间的一组相应区域中的每一个区域,参考从地址转译表填充的并且存储在许可数据存储中的许可数据,来检测是否许可输入存储器地址的存储器访问,在许可数据存储中存在用于每个区域的专用条目,使得输入存储器地址映射到单个相应的条目;以及
输出电路(320,420,520),用于响应于转译请求提供输出存储器地址,其中,当许可电路指示许可对于包括输入存储器地址的输入存储器地址空间的区域的访问时,输出电路被配置为提供输出存储器地址作为该输入存储器地址的预定函数。
预定函数可以使得输出存储器地址等于所述输入存储器地址。输入存储器地址可以是物理地址和虚拟存储器地址中的一个,并且输出存储器地址可以是物理存储器地址。
图9示意性地示出了阶段1页表移动(PTW)过程的示例,并且图10是示出了PTW过程的示意性流程图。
所示的示例涉及大的(高达256TB)的存储空间。如果使用较小的存储空间,则可以如所示的从该过程中省略一个或多个较低编号的“级别”。
在这个示例中,需要转译的VA 921形成为48位值。在PTW过程的不同阶段使用VA921的不同部分。
为了获得页表分层结构中的第一条目,在“层0表”910中,在步骤1000(图10)获得存储在基址寄存器900(图9)中的基地址。在步骤1010,VA 921的第一部分912(在这个示例中为9个最高有效位)乘以表中每个条目表示的大小并作为偏移加到基地址,以提供表格910中条目的IPA 914。但是为了访问条目914,需要指示条目914在物理存储器中的位置的PA。因此,在步骤1020,页表条目的IPA 914被提供给阶段2转译过程以转译为相应的PA。当接收到相应的PA时,在步骤1030,在物理存储器或层2缓存中(如果相关页被缓存)查找相关页表条目。
本领域技术人员将会理解,地址(例如,至少一些示例中由操作系统设置的由基址寄存器和表所保持的地址)可能需要阶段2转译自身。适用于这些地址的阶段2过程用于获取PA来查找表条目。为了清楚起见,图9中没有示出阶段2的过程。
在步骤1040,检测页表分层中是否已到达最后一层,最后一层可能是分层结构中的层3,但是分层结构中更高层的页表条目可以指示整个存储块的转译,而不是仅指示分层结构中下一页表条目的基址。如果出现这种情况,PTW过程被认为是完整的,并且(用于步骤1040的目的)该层被视为“最后一层”。例如,如果绘制的层2表指示了这种转译,则该转译将应用于2MB的存储器地址块,并且步骤1040将检测到这是“最后一层”。
如果步骤1040的结果是否定的,则控制进行到步骤1050,在该步骤1050中,检索到的页表条目被用作分层结构中下一表格的基址。因此,对应于IPA 914的页表条目向层级中的下一层的表(“层1表”)920提供基址。控制返回到步骤1010。
在步骤1010的第二次迭代中,VA 921的另一部分922(VA 921的下一9位[38:30])形成从表格920的基址的偏移以提供表格920中的条目924的IPA。再次,这个IPA遵从阶段2转译以提供PA,该PA可以被查找以获得“层2表”930的基址,其继而(通过相同的处理)提供“层3表”940的基址。
当关于由表940中的IPA 944定义的页表条目执行步骤1030和1040时,步骤1040的检测的答案为“是”。由IPA 944指示的页表条目提供与物理存储器页相关的页地址和访问许可。VA 921的剩余部分952,即最低有效位的12位[11:0],在由IPA 944的页表条目定义的存储器页内提供页偏移,尽管在示例系统中其将信息存储为连续四个字节(例如32位)部分,但部分[11:2]可以向适当的32位字的地址提供所需的偏移。因此,VA921的最低有效位部分与最终页表条目(在这种情况下,来自“层3表”940)的组合(在步骤1060)提供(在步骤1070)IPA 950作为VA 921的转译。注意,此处描述的PTW过程返回关于阶段1地址转译执行的PTW的IPA,并且返回关于阶段2地址转译执行的PTW的PA。
还要注意,关于图3至8讨论的技术可以仅用于阶段1转译、仅用于阶段2转译、和/或用于阶段1和阶段2转译的组合。
因此,图9提供了其中地址转译表包括两个或更多页表层的分层结构的示例,在该分层结构中更高层的页表对于具有与页表层相关联的块大小的输入存储器地址的块指示:下一层中的一组或两组或更多页表中的相应的一个页表;或适用于输入存储器地址块的地址映射。该区域(许可数据由许可电路存储)的区域大小(诸如2MB)可以等于与除页表层的分层结构中的最低页表层之外的页表层之一相关联的块大小。
图11示意性地示出了使用不同的地址转译的布置的数据处理装置。此处,CPU1100、GPU 1110和显示处理器1120形成连接到互连1130的数据处理节点的示例,存储器1140也连接到该互连1130。
GPU和显示处理器的地址转译分别由TBU(转译缓存器单元)1115、1125执行,每个TBU均包括TLB。包括许可电路1155的实例的单独的转译控制单元(TCU)1155连接到互连1130。
图12是示出图11的装置的操作的示意性流程图。
在步骤1200,TBU 1115、1125分别从GPU或显示处理器接收事务。在步骤1210,TBU在其自身的TLB中查找输入地址。如果存在命中(在步骤1220),指示转译被缓存在TBU-TLB中,则控制进行到步骤1270,在该步骤1270处转译被返回。
如果在步骤1220没有命中,则控制进行到步骤1230,在该处转译被视为到TCU的事务。TCU根据图6-图8的流程图中的任何一个进行操作,但是在该示例中,它遵循图8的流程图(参考图5的电路),使得在其许可电路内进行检查,然后在自己的TLB中检查,随后检查页表移动以建立转译。它返回有效转译或故障状态。
在步骤1240,做出是否从TCU接收到有效转译的检查。如果否,则在步骤1250处返回故障状态。如果是,则在步骤1260中以转译更新TBU-TLB,并且在步骤1270返回转译。
现在将参考图13-15进一步讨论许可电路中许可数据的填充。
图13是上面讨论的数据处理装置的简化表示,其中CPU 1300运行程序代码以实现监控处理器1305,以控制地址转译表的存储并根据地址转译表将许可数据写入许可电路。该监控处理器将页表(如上讨论)写入存储器1340。直的虚线示出了这种数据传输,但是在物理上,如正常情况经由互连1330来处理数据。
监控处理器还将初始许可数据写入许可电路,其中,许可数据从页表数据导出。
参考上面对PTW过程的讨论,指出页表可以提供用于存储器地址块的转译,在示例中,该块可以大于系统的最小粒度块。换言之,除分层结构的最低层以外的页表层可以指示适用于特定块大小的转译,而不是分层结构中下一层页表的基址。在图9的示例中,层2表条目可以指示适用于2MB存储器地址块的地址转译。
监控处理器导出页表,并根据为由许可电路使用的大小的块提供地址转译和许可的页表条目(如上所述),导出将被存储在许可电路中适当位置(对于该地址范围)的数据。如果对于特定的存储器区域,页表定义了较小粒度的地址转译,则可以将用于这些区域的许可电路中的相关条目设置为“无许可”,强制通过不同于许可电路的机制(例如,经由步骤820的“否”结果)来获得转译。
如以上所讨论的,用于填充和/或更新许可电路数据的另一路线是在操作期间,例如图8中的步骤1885所表示的,该路线由示意性的虚线箭头1350示出。
图14是示出页表填充和许可信息的示意性流程图。这可以例如在设备启用时或启用间隙或启用之后的时刻进行。
在步骤1400中,监控处理器1305导出页表。
然后,控制经过两个步骤1410、1430。
在步骤1410,从页表数据导出许可数据,并且在步骤1420将其存储到许可电路存储器。
步骤1430涉及将页表存储在存储器1340中。
图15是示出对页表的改变的处理的示意性流程图。
在步骤1500,监控处理器1305发起对一个或多个页表的改变。
在步骤1510,监控处理器向TLB和/或关于页表变化所涉及的转译的许可电路条目发出无效信号。
在步骤1520,监控处理器可以使用图14的方法根据新建立的页表可选地重填许可电路条目。
图16示意性地示出了类似于图3-5中所示的地址转译装置,并根据由输入电路1610接收的ID使用许可电路数据的多个实例1600。在该示例中,许可电路被配置为存储标识预定函数的数据。
图16和前面描述的布置之间的区别在于,(在该情况中由输出电路1620的电路1630实现的在输入地址和输出地址之间的)预定函数可以在两个或更多个这样的预定函数之间进行选择。选择被提供给函数电路1630,并且由该电路实现适当函数。
参考表现与许可电路存储设备相关联的示例数据结构的图17和18来描述可以存储和实现预定函数的方式的示例。
图17提供了定义了在数据字段1700中将由函数电路1630应用的函数的数据存储,以及许可数据阵列1710的单个实例,该许可数据阵列是对于输入地址空间的每个块的一组许可数据。对于许可电路的每个实例可以重复该布置,使得可以以这种方式为许可电路的每个实例选择不同的预定函数。
作为替代,每个块(或可替代地,尽管在该示例中未示出,一组块)的每个数据字段1800可以包括用于映射该块和与该块相关联的许可的适当函数。
如上所述,示例函数包括相等和增加偏移。
图19示意性地示出了包括CPU 1900、GPU 1910、其他外围设备1920、互连1930以及主存储器1940的数据处理电路的另一示例。这提供了数据处理装置的示例,该数据处理装置包括:根据物理存储器地址可访问的一个或多个存储器;一个或多个数据处理节点,用于生成从由数据处理节点生成的虚拟存储器地址到物理存储器地址的转译请求,以访问所述一个或多个存储器;以及地址转译装置,包括如上描述的装置,以将虚拟地址从数据处理节点转译为物理地址,以访问所述一个或多个存储器。
在示例实施例中,互连电路1930可以是所谓的缓存相干互连电路的示例,包括或可连接到相干控制器1935。此处,术语“相干”是指维护整个系统中存储的相同数据的多个副本之间的正确关系。例如,可以通过数据处理节点之一(诸如CPU或GPU)将数据存储在缓存存储设备1905、1915中。其他数据处理节点可以具有其各自的缓存1915、1905,该缓存1915、1905可以取决于处理操作的性质来存储同样保存在缓存存储器1905、1915中的一个或多个数据副本。因此,在这些示例中,一个或多个数据处理节点具有各自相关联的缓存存储设备;该数据处理装置包括相干控制电路;并且一个或多个存储器和缓存存储设备被配置为在相干控制电路的控制下操作,以存储可由数据处理节点中的每一个访问的数据的一个或多个副本,使得由一个处理元件写入相干存储器电路中的存储器地址的数据与由另一处理元件从该相干存储器电路中的存储器地址所读取的数据相一致。
在由一个节点对这种信息进行数据处理访问的情况下,需要确保访问节点正在访问所存储的信息的最新版本,并且如果对所存储的信息进行了任何改变,那么其他版本本身被正确地修改或其他版本被删除或无效。一般而言,缓存存储器1905、1915和相干控制器1935提供相干存储器电路,其存储由每个处理元件(例如,经由互连电路1930连接的每个处理元件)可访问的数据的一个或多个副本,使得由一个处理元件写入相干存储器电路中的存储器地址的数据与由另一处理元件从该相干存储器电路中的存储器地址所读取的数据相一致。
因此与缓存相干函数相关的逻辑的作用是确保在发生数据处理事务之前,如果待访问的数据项的版本已过期(由于对同一数据项的另一个副本进行了修改),则首先更新待访问的副本。类似地,如果数据处理事务涉及修改数据项,则缓存相干逻辑避免与数据项的其他现有副本冲突。实现这一点的技术可以包括(例如)所谓的“探听过滤器”的使用。
术语“探听过滤器”是有历史的,并且在此处被用来指构成具有相关联的“目录”的相干控制器1935的一部分的控制设备,目录中存储有指示哪些数据存储在哪个缓存中的信息,探听过滤器本身至少有助于处理对缓存信息的数据访问,以提供缓存相干函数。
例如,具有如上讨论的目录和指示当前为相干控制布置的一部分(或者被视为在相干系统中或在相干域中)的这些缓存存储器的寄存器的探听过滤器形成了与互连电路1930相关联的相干控制器1935的一部分。
探听过滤器处理至少一部分过程,在该过程中,当数据处理节点1900、1910中任何一个打算访问或修改存储在缓存存储器中作为缓存行的数据时,该节点获得这样做的许可。作为该过程的一部分,探听过滤器检查是否有任何其他缓存存储器具有待修改的该行的副本。如果在其他缓存存储器中存在其他副本,那么这些副本需要被清除并使其无效。如果这些副本本身包含对于该行中存储的数据的修改,则在至少某些情况下,相干控制器1935(或者探听过滤器本身)指示缓存存储器将该行写回到主存储器。这提供了相干控制电路的示例,该相干控制电路被配置为通过使用数据被存储在一个或多个存储器中的物理存储器地址,关于由缓存存储设备保持的数据与所述缓存存储设备进行通信。这是通过在本示例中用于地址转译的预定函数为相等的特征而成为可能的。
在节点对存储在缓存存储器中的数据进行读取访问的情况下,重要的是,请求读取的节点1900、1910访问了缓存数据的最新正确版本。相干控制器1935监控该过程,使得如果另一个缓存具有所需数据的最近修改版本,则另一缓存写回修改版本和/或转发修改版本的副本以用于在当前请求节点的缓存。
因此,包括探听过滤器的相干控制器1935提供缓存相干控制器的示例,该缓存相干控制器被配置为,当目录指示缓存存储器中的另一个正在缓存该存储器地址时,在这些缓存存储器之间协调由缓存存储器之一对存储器地址的访问。探听过滤器存储或提供诸如上述目录的目录,对于由相干缓存结构中可连接的一组一个或多个缓存存储器中的一个或多个所缓存的地址,指示缓存存储器中的哪一个正在缓存那些存储器地址。
在图19中,CPU和GPU被称为“完全相干”,而其他外围设备被称为“I/O相干”(其中I/O是“输入/输出”的缩写)。不同之处在于,CPU和GPU至少保留了其自身的一些数据项的相干缓存存储,而其他外部设备则没有。因此,其他(I/O相干)外设在数据读取或写入操作期间具有相干性要求,而完全相干的CPU和GPU具有与其自身的至少一些数据项的缓存副本相关的相干性要求。
现在考虑刚刚描述的相干性技术与存储器地址转译(无论是上面参考图2至18所讨论的类型,还是更一般地)的交互。
由相干控制器1935进行的查询(诸如,探听)作为其操作的一部分来维持整个系统的相干性,涉及物理地寻址的存储器。然而,CPU和GPU根据虚拟存储器地址进行操作。一般来说,地址转译被提供用于发起于主设备(例如CPU或GPU)的事务,而不是用于指向完全相干的主设备的事务(诸如,探听)。尽管整个地址转译结构可以被复制以便在“其他”方向上工作,但这可能导致硬件或处理需求的增加。
在下面的讨论中,考虑了四种类型的数据处理事务:
(a)非缓存分配事务,诸如非相干性读取或写入、非缓存读取或写入、或者I/O相干性读取或写入。在这种类型的事务中,CPU或GPU缓存的内容不被读取或改变;
(b)缓存分配事务,例如,从存储器的相干性读取或者获取无效操作(诸如,进行无效操作或清理无效操作)。在这种类型的事务中,CPU或GPU缓存(在本示例中)的内容可能发生变化;
(c)可缓存的相干写入,即从一个相干的缓存写入存储器;以及
(d)针对完全相干的主设备的探听操作。
这些事务类型在示例安排中被处理如下:
(a)这种类型的事务是正常的使用地址转译来处理的,也就是说MMU等(或者包括如上讨论的许可电路的布置)可以用于地址转译;
(b)此处,在本示例中,使用如上讨论的许可电路,其中如上所讨论的预定函数是输入地址等于输出地址(如果使用多个阶段,则在所有转译阶段中)。相等函数的使用意味着转译在任何方向都是有效的。完全读取/写入许可由示例布置中的许可电路给出。
(c)注意到这些事务仅在系统已经成功执行了类型(b)事务时才有可能,这种类型的事务总是被允许的。
(d)这些事务总是被允许的。在(b)的讨论中使用相等函数的约束意味着由探听电路提供的地址将是用于对适当缓存进行探听操作的适用地址。
图20是示出了包括以下方法的示意性流程图:
(在步骤2000)接收定义输入存储器地址空间内的输入存储器地址的转译请求;
(在步骤2010)针对输入存储器地址空间的一组相应区域中的每一个区域,参考从地址转译表填充的并且存储在许可数据存储中的许可数据,来检测是否许可针对该输入存储器地址的存储器访问,在该许可数据存储中存在用于每个区域的专用条目,使得该输入存储器地址映射到单个相应的条目;
(在步骤2020)响应于转译请求提供输出存储器地址,其中,当许可电路指示许可对于包括该输入存储器地址的输入存储器地址空间的区域进行访问时,该输出电路被配置为提供输出存储器地址作为输入存储器地址的预定函数。
图21是示出包括以下各项的数据处理系统的操作方法的示意流程图:响应于根据物理存储器地址的访问的一个或多个存储器;用于根据虚拟存储器地址访问一个或多个存储器的一个或多个数据处理节点,该一个或多个数据处理节点具有各自相关联的缓存存储设备;该方法包括:
(在步骤2100)相干地存储由每个数据处理节点可访问的数据的一个或多个副本,使得相干地写入到存储器地址的数据与从另一个处理元件的存储器地址相干地读取的数据相一致;
(步骤2110)将数据处理节点生成的虚拟存储器地址转译为相同的物理存储器地址以访问一个或多个存储器;以及
(在步骤2120)相干控制器,使用数据存储在一个或多个存储器中时所用的物理存储器地址与缓存存储设备关于该缓存存储设备保存的数据进行通信。
在本申请中,词语“被配置为...”用于表示装置的元件具有能够执行所定义的操作的配置。在这种情况下,“配置”是指硬件或软件互连的布置或方式。例如,该装置可以具有提供所定义操作的专用硬件,或者处理器或其他处理设备(诸如,如上所述的处理元件)可以被编程为执行该功能。“被配置为”并不意味着装置元件需要以任何方式改变以提供所定义的操作。
尽管已经参考附图详细描述了本技术的说明性实施例,但是应该理解,本技术不限于那些明确的实施例,本领域技术人员可以在不偏离由所附权利要求书限定的本技术的范围和精神的情况下对其中进行各种改变、添加和修改。例如,在不脱离本技术的范围的情况下,可以做出从属权利要求的特征可以与独立权利要求的特征的各种组合。

Claims (19)

1.一种装置,包括:
输入电路,用于接收定义输入存储器地址空间内的输入存储器地址的转译请求;以及
地址转译电路,包括:
许可电路,用于针对所述输入存储器地址空间的一组相应区域中的每一个区域,参考从地址转译表填充的并且存储在许可数据存储中的许可数据,来检测是否许可所述输入存储器地址的存储器访问,在所述许可数据存储中存在用于所述每个区域的专用条目,使得所述输入存储器地址映射到单个相应的条目;以及
输出电路,用于响应于所述转译请求提供输出存储器地址,其中,当所述许可电路指示许可对于包括所述输入存储器地址的输入存储器地址空间的区域进行访问时,所述输出电路被配置为提供所述输出存储器地址作为所述输入存储器地址的预定函数。
2.根据权利要求1所述的装置,其中,所述许可电路被配置为存储所述输入存储器地址空间的一组连续区域的许可数据,使得所述输入存储器地址空间的每个可能的输入存储器地址在所述区域中的相应一个区域内。
3.根据权利要求1所述的装置,包括:
第二转译电路,用于生成输入存储器地址到输出存储器地址的转译;
其中,当所述许可电路未指示许可对于包括所述输入存储器地址的输入存储器地址空间的区域进行访问时,所述输出电路被配置为提供由所述第二转译电路生成的转译。
4.根据权利要求3所述的装置,其中,所述第二转译电路被配置为参考所述地址转译表来执行地址转译。
5.根据权利要求4所述的装置,其中,所述第二转译电路包括:
转译后备缓存器,用于存储关于所述输入存储器地址空间中的输入存储器地址的子集的转译;以及
电路,用于访问所述地址转译表以获得当转译未被所述转译后备缓存器存储时输入存储器地址的转译。
6.根据权利要求5所述的装置,其中,所述地址转译表包括两个或更多个页表层的分层结构,其中,更高层中的页表对于具有与所述页表层相关联的块大小的输入存储器地址的块指示以下内容:
下一层中的一组或两组或更多页表中的相应的一个页表;或
适用于该输入存储器地址的块的地址映射。
7.根据权利要求6所述的装置,其中:
所述区域的区域大小等于与除了页表层的分层结构中的最低页表层之外的页表层中的一层相关联的块大小。
8.根据权利要求3所述的装置,其中:
当所述第二转译电路生成输入存储器地址到输出存储器地址的转译时,所述许可电路被配置为根据所生成的转译来存储所述输入存储器地址空间的该区域的许可数据,假设所述转译满足包括以下各项的一组标准:
所述转译在所述输入存储器地址空间的区域的一整个区域中是有效的;以及
所述转译使得所述输出存储器地址通过所述预定函数与所述区域内的输入存储器地址相关。
9.根据权利要求8所述的装置,其中,所述一组标准包括:
所述转译授予访问许可,该访问许可对应于可以由所述许可电路存储的访问许可。
10.根据权利要求1所述的装置,包括:
监控处理器,用于控制所述地址转译表的存储并且根据所述地址转译表将许可数据写入所述许可电路。
11.根据权利要求1所述的装置,其中,所述输入存储器地址是物理地址和虚拟存储器地址中的一个,并且所述输出存储器地址是物理存储器地址。
12.根据权利要求1所述的装置,其中,所述预定函数使得所述输出存储器地址等于所述输入存储器地址。
13.根据权利要求1所述的装置,其中:
所述许可电路被配置为存储标识所述预定函数的数据。
14.一种数据处理装置,包括:
根据物理存储器地址可访问的一个或多个存储器;
一个或多个数据处理节点,用于从由所述数据处理节点生成的虚拟存储器地址生成到物理存储器地址的转译请求,以访问所述一个或多个存储器;以及
地址转译装置,包括根据权利要求1所述的装置,用于将来自数据处理节点的虚拟地址转译为物理地址,以访问所述一个或多个存储器。
15.一种数据处理装置,包括:
根据物理存储器地址可访问的一个或多个存储器;
一个或多个数据处理节点,用于从由所述数据处理节点生成的虚拟存储器地址生成到物理存储器地址的转译请求,以访问所述一个或多个存储器;以及
地址转译装置,包括根据权利要求12所述的装置,用于将来自数据处理节点的虚拟地址转译为物理地址,以访问所述一个或多个存储器。
16.根据权利要求14所述的数据处理装置,其中:
所述一个或多个数据处理节点具有相应的关联的缓存存储设备;
所述数据处理装置包括相干控制电路;以及
所述一个或多个存储器和所述缓存存储设备被配置为在所述相干控制电路的控制下进行操作,以存储可由所述数据处理节点中的每一个访问的数据的一个或多个副本,使得由一个处理元件写入所述相干存储器电路中的存储器地址的数据与由另一处理元件从所述相干存储器电路中的存储器地址中读取的数据相一致。
17.根据权利要求16所述的数据处理装置,其中:
所述相干控制电路被配置为通过使用该数据被存储在所述一个或多个存储器中的物理存储器地址,关于由所述缓存存储设备保持的数据与所述缓存存储设备进行通信。
18.根据权利要求17所述的数据处理装置,其中,所述地址转译装置被配置为允许缓存分配从所述一个或多个存储器的读取操作和对所述一个或多个存储器的可缓存相干写入。
19.一种方法,包括:
接收定义输入存储器地址空间内的输入存储器地址的转译请求;
针对所述输入存储器地址空间的一组相应区域中的每一个区域,参考从地址转译表填充的并且存储在许可数据存储中的许可数据,来检测是否许可所述输入存储器地址的存储器访问,在所述许可数据存储中存在用于所述区域的每一区域的专用条目,使得所述输入存储器地址映射到单个相应的条目;以及
响应于所述转译请求提供输出存储器地址,其中,当所述许可电路指示允许对于包括所述输入存储器地址的输入存储器地址空间的区域进行访问时,所述输出电路被配置为提供所述输出存储器地址作为所述输入存储器地址的预定函数。
CN201711296148.4A 2016-12-09 2017-12-08 存储器管理 Active CN108228485B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1620954.6 2016-12-09
GB1620954.6A GB2557588B (en) 2016-12-09 2016-12-09 Memory management

Publications (2)

Publication Number Publication Date
CN108228485A true CN108228485A (zh) 2018-06-29
CN108228485B CN108228485B (zh) 2023-07-25

Family

ID=58221949

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711296148.4A Active CN108228485B (zh) 2016-12-09 2017-12-08 存储器管理

Country Status (3)

Country Link
US (1) US10733111B2 (zh)
CN (1) CN108228485B (zh)
GB (1) GB2557588B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109032963A (zh) * 2017-06-12 2018-12-18 Arm有限公司 访问控制

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10445001B2 (en) * 2017-01-10 2019-10-15 Winbond Electronics Corporation Memory control scheme for flash memory devices
US10528478B2 (en) * 2017-05-30 2020-01-07 Ati Technologies Ulc Page table management for differing virtual and physical address page alignment
GB2575877B (en) * 2018-07-27 2021-06-09 Advanced Risc Mach Ltd Memory protection unit using memory protection table stored in memory system
US10949357B2 (en) * 2019-01-24 2021-03-16 Texas Instruments Incorporated Real time input/output address translation for virtualized systems
GB2593487B (en) * 2020-03-24 2022-05-04 Advanced Risc Mach Ltd Apparatus and method

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5627987A (en) * 1991-11-29 1997-05-06 Kabushiki Kaisha Toshiba Memory management and protection system for virtual memory in computer system
CN101213526A (zh) * 2005-06-29 2008-07-02 高通股份有限公司 阻止针对存储器中同一页的多次转译后备缓冲器存取
CN103778072A (zh) * 2012-10-25 2014-05-07 辉达公司 多线程处理单元中的高效存储器虚拟化
US20150356029A1 (en) * 2013-02-05 2015-12-10 Arm Limited Handling memory access operations in a data processing apparatus
CN106021131A (zh) * 2015-03-24 2016-10-12 Arm 有限公司 存储器管理

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5390310A (en) * 1991-09-30 1995-02-14 Apple Computer, Inc. Memory management unit having cross-domain control
US8645666B2 (en) * 2006-12-28 2014-02-04 Intel Corporation Means to share translation lookaside buffer (TLB) entries between different contexts
JP6584823B2 (ja) * 2014-06-20 2019-10-02 株式会社東芝 メモリ管理装置、プログラム、及び方法
US9639477B2 (en) * 2015-09-10 2017-05-02 Oracle International Corporation Memory corruption prevention system
US20180067866A1 (en) * 2016-09-08 2018-03-08 Intel Corporation Translate on virtual machine entry

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5627987A (en) * 1991-11-29 1997-05-06 Kabushiki Kaisha Toshiba Memory management and protection system for virtual memory in computer system
CN101213526A (zh) * 2005-06-29 2008-07-02 高通股份有限公司 阻止针对存储器中同一页的多次转译后备缓冲器存取
CN103778072A (zh) * 2012-10-25 2014-05-07 辉达公司 多线程处理单元中的高效存储器虚拟化
US20150356029A1 (en) * 2013-02-05 2015-12-10 Arm Limited Handling memory access operations in a data processing apparatus
CN106021131A (zh) * 2015-03-24 2016-10-12 Arm 有限公司 存储器管理

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109032963A (zh) * 2017-06-12 2018-12-18 Arm有限公司 访问控制
CN109032963B (zh) * 2017-06-12 2023-09-05 Arm有限公司 访问控制

Also Published As

Publication number Publication date
CN108228485B (zh) 2023-07-25
US20180165218A1 (en) 2018-06-14
US10733111B2 (en) 2020-08-04
GB2557588B (en) 2019-11-13
GB2557588A (en) 2018-06-27
GB201620954D0 (en) 2017-01-25

Similar Documents

Publication Publication Date Title
CN108228485A (zh) 存储器管理
US7500065B2 (en) Data processing system and method for efficient L3 cache directory management
US7650479B2 (en) Maintaining cache coherency for secure and non-secure data access requests
CN109564522A (zh) 控制对计算装置的存储器中的页的访问
US7305522B2 (en) Victim cache using direct intervention
US7305523B2 (en) Cache memory direct intervention
TWI393005B (zh) 用於在具有多重一致性定義域之資料處理系統中處置清空操作之資料處理系統、快取系統以及方法
US7769957B2 (en) Preventing writeback race in multiple core processors
CN104487940B (zh) 本地清除控制
CN108154054A (zh) 过滤一致性协议事务
US20100325374A1 (en) Dynamically configuring memory interleaving for locality and performance isolation
CN103229152B (zh) 高速缓存一致性控制方法、系统和程序
TW409205B (en) Method for maintaining multi-level cache coherency in a processor with non-inclusive caches and processor implementing the same
JP2010097558A (ja) 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法
WO2006005963A1 (en) Memory management system
US11734440B2 (en) Memory access transaction with security check indication
US11720495B2 (en) Multi-level cache security
US20170153975A1 (en) Apparatus and method for handling atomic update operations
CN106227674B (zh) 缓存一致性控制器及方法
WO2020243051A1 (en) Cache size change
CN106021131A (zh) 存储器管理
TW201447748A (zh) 處理裝置
US20110082981A1 (en) Multiprocessing circuit with cache circuits that allow writing to not previously loaded cache lines
US6314500B1 (en) Selective routing of data in a multi-level memory architecture based on source identification information
CN109032963A (zh) 访问控制

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant