CN110869916B - 用于两层写时复制的方法和装置 - Google Patents
用于两层写时复制的方法和装置 Download PDFInfo
- Publication number
- CN110869916B CN110869916B CN201880046462.3A CN201880046462A CN110869916B CN 110869916 B CN110869916 B CN 110869916B CN 201880046462 A CN201880046462 A CN 201880046462A CN 110869916 B CN110869916 B CN 110869916B
- Authority
- CN
- China
- Prior art keywords
- virtual memory
- address range
- range
- address
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 84
- 238000005192 partition Methods 0.000 claims abstract description 116
- 238000013507 mapping Methods 0.000 claims abstract description 74
- 238000012545 processing Methods 0.000 claims abstract description 69
- 239000000872 buffer Substances 0.000 claims abstract description 46
- 230000004044 response Effects 0.000 claims abstract description 8
- 238000013519 translation Methods 0.000 claims description 82
- 238000003860 storage Methods 0.000 claims description 19
- 238000013468 resource allocation Methods 0.000 claims description 4
- 230000014616 translation Effects 0.000 description 65
- 230000008569 process Effects 0.000 description 25
- 230000007246 mechanism Effects 0.000 description 12
- 238000013459 approach Methods 0.000 description 11
- 230000010076 replication Effects 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 7
- 230000009471 action Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000001404 mediated effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000002730 additional effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000001152 differential interference contrast microscopy Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
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/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/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
- G06F12/1054—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
-
- 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/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/651—Multi-level translation tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/656—Address space sharing
-
- 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/657—Virtual address space 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
提供一种***、装置和方法,其中虚拟存储器地址范围和该范围的副本被映射到数据处理***中的相同第一***地址范围,直到虚拟存储器地址范围中的地址或其副本被写入为止。通用***地址范围包括多个分区。响应于对通用地址范围的分区中的地址的写入请求,生成第二***地址范围。第二***地址范围被映射到与第一***地址范围相同的物理地址,除了包含待写入的地址的分区以及其在第二***地址范围中的相应分区被映射到不同的物理地址之外。第一层映射数据可以被存储在范围表缓冲器中,并且在生成第二***地址范围时被更新。
Description
关于联邦资助研究或开发的声明
本发明是在DOE授予的快进2合同(fast forward 2contract)下,由美国政府支持而完成的。美国政府对本发明享有某些权利。
技术领域
本公开涉及对数据处理***中的存储器的控制。
背景技术
一种数据处理装置可以包括一个或多个处理核心。处理器核心或在其上执行的程序被布置为根据虚拟存储器地址来处理数据。例如,每个处理器核心可以根据相应虚拟存储器地址空间中的虚拟存储器地址来处理数据,例如在操作***或所谓的管理程序的控制下,该管理程序将虚拟存储器地址空间分配给由不同的处理器核心执行的进程,这部分地作为一种用于避免与一个处理器核心相关联的进程意外或恶意地访问适合于由另一个处理器核心执行的进程的数据的技术。
当需要访问虚拟存储器地址时,首先必须将虚拟存储器地址转换为物理存储器地址,以便可以从物理存储器或物理存储器缓存中获得所需信息或者将所需信息写入物理存储器或物理存储器缓存。称为转换后备缓冲器(TLB)的缓存可以用作地址转换过程的部分。TLB在固定大小的逐页基础上存储虚拟和物理存储器地址之间的最近或常用的转换。因此,作为地址转换过程的第一步,可以咨询TLB以检测TLB是否已经包含所需地址转换。如果不包含,则可以使用更复杂的转换过程,例如,涉及咨询保存地址转换信息的所谓的页面表,通常导致TLB被填充有所需转换。这种方法的缺点是操作***被用来将数据从一个虚拟存储器地址空间复制到另一个虚拟存储器地址空间,这减慢了操作。另一个缺点是诸如存储器和存储装置之类的数据资源没有得到有效利用。例如,即使不修改数据,也可以存储数据的两个物理副本。在这种情况下,需要额外的资源来实际地复制数据。
一种用于提高效率的方法是“写时复制(copy-on-write)”机制。在这种方法中,数据的物理复制被推迟,直到数据被写入或修改。在此之前,数据是共享的。但是,由于该机制是由操作***来执行的,因此该方法仍然不是高效的。
附图说明
图1示出了根据本公开的实施例的数据处理***中的存储器的逻辑布置。
图2示出了根据本公开的实施例的在范围中的数据已被修改以及数据的物理副本已被制作之后的存储器的另一逻辑布置。
图3是根据本公开的实施例的数据处理装置的框图。
图4是根据本公开的实施例的数据处理***的另一框图。
图5是根据本公开的实施例的数据处理***的又一框图。
图6是根据本公开的实施例的用于在数据处理***中执行复制操作的方法的流程图。
图7示出了根据本公开的实施例的两层写时复制机制中的范围表条目。
图8是根据本公开的实施例的用于在数据处理***中执行写入操作的方法的流程图。
具体实施方式
虽然本发明容许有许多不同形式的实施例,但是在附图中示出了并且将在此详细描述特定实施例,同时应当理解,本公开将被认为是本发明的原理的示例,并不旨在将本发明限制于所示出和描述的特定实施例。在以下描述中,相同的附图标记可用于描述附图的若干视图中的相同、相似或相应的部分。
在本文中,诸如第一和第二、顶部和底部等之类的关系术语可以仅用于将一个实体或动作与另一实体或动作区分开,而不必要求或暗示这种实体或动作之间的任何实际的这种关系或顺序。术语“包含”、“包括”、“含有”、“由…组成”、“具有”、“拥有”或其任何其它变型,旨在涵盖非排他性包含,使得包括一系列元素的工艺、方法、物品或装置不仅包括那些元素,而且可以包括未明确列出的或对于该工艺、方法、物品或装置固有的其他元素。在没有更多限制的情况下,以“包括…一个”开头的元素并不排除在组成该元素的工艺、方法、物品或装置中存在额外的相同元素。
在整个文档中,对“一个实施例”、“某些实施例”、“实施例”,“(一个或多个)实现方式”、“(一个或多个)方面”或类似术语的引用是指结合实施例描述的特定特征、结构或特性被包括在本公开的至少一个实施例中。因此,在本说明书中的各个地方出现的这些短语不一定都指相同的实施例。此外,可以在一个或多个实施例中以任何合适的方式组合特定特征、结构或特性,而没有限制。
如本文所使用的术语“或”将被解释为包括性的或者是指任何一个或任何组合。因此,“A、B或C”是指“以下各项中的任何一项:A;B;C;A和B;A和C;B和C;A、B和C”。仅当元素、功能、步骤或动作的组合以某种方式固有地相互排斥时,才会出现该定义的例外。同样,语法连接词旨在表达连接的从句、句子、单词等的任何和所有析取和连接的组合,除非另有说明或从上下文中清楚可见。因此,术语“或”通常应被理解为是指“和/或”等等。
本文中提及的所有文件均通过引用以其整体并入本文。对单数形式的项目的引用应被理解为包括复数形式的项目,反之亦然,除非另有明确说明或从文本中清楚可见。
当带有数值时,词语“约”、“大约”、“基本上”等应被解释为指示偏离,如本领域普通技术人员将理解的,为了预期目的令人满意地操作。值和/或数值的范围在本文中仅作为示例提供,并且不构成对所描述的实施例的范围的限制。本文提供的任何和所有示例或示例性语言(“例如”、“诸如”等)的使用仅旨在更好地阐明实施例,而不对实施例的范围构成限制。说明书中的语言不应被解释为指示任何未要求保护的元素对于实施例的实践是必要的。
为了图示的简单和清楚,在附图中可以重复参考标号以指示相应或相似的元件。阐述了许多细节以提供对本文描述的实施例的理解。可以在没有这些细节的情况下实践实施例。在其他实例中,没有详细描述公知的方法、过程和组件,以避免模糊所描述的实施例。该描述不应被认为是对本文描述的实施例的范围的限制。
在下面的描述中,应理解,诸如“第一”、“第二”、“顶部”、“底部”、“上”、“下”、“上方”、“下方”等之类的术语是方便的用语,并不应被解释为限制性术语。同样,术语装置和设备在本文中可以互换地使用。
本公开的一个方面涉及一种用于数据处理***中的存储器管理的***和装置。在一些实施例中,虚拟存储器地址范围和该范围的副本被映射到数据处理***中的相同第一***地址范围,直到虚拟存储器地址范围中的地址或其副本被写入为止。通用***地址范围包括多个分区。响应于对通用地址范围的分区中的地址的写入请求,生成第二***地址范围。第二***地址范围被映射到与第一***地址范围相同的物理地址,除了包含待写入的地址的分区以及其在第二***地址范围中的相应分区被映射到不同的物理地址之外。用于将虚拟存储器地址转换为***地址的第一层映射数据可以被存储在范围表缓冲器中,并且在生成第二***地址范围时该第一层映射数据被更新。用于将***地址转换为数据资源中的物理地址的第二层映射数据可以被存储在***到物理转换缓存中,当共享的数据被修改时该第二层映射数据被更新。因此,为数据处理***提供两层写时复制机制。
图1示出了根据本公开的实施例的数据处理***中的存储器100的逻辑布置。存储器布置包括虚拟存储器地址空间102。尽管在图1中示出了单个虚拟存储器地址空间102,但是每个程序或设备都看到其自己的虚拟存储器地址空间(其包含供该程序或设备使用的指令和数据)。编程线程可以共享相同的虚拟存储器地址空间。虚拟存储器寻址的使用允许通过禁止一个程序访问或破坏另一程序使用的信息来控制存储器访问。存储器布置100还包括***地址空间104。***地址空间允许访问数据处理***(例如,存储器、存储装置、硬件加速器和网络接口控制器)中的可寻址单元。***地址空间可以包含物理(存储器备份(backed))地址和虚拟存储器地址二者。例如,存储器布置100还包括物理地址空间106,该物理地址空间106包含数据资源(例如,存储器设备或存储设备)中的物理地址。数据资源108、110和112在图1中示出,但是数据处理***可以具有任何数量的数据资源。
根据本公开的实施例,一个或多个虚拟存储器地址空间在图1中被划分为地址范围,例如地址范围114(范围A)。例如,每个范围可以由两个参数(例如,开始和结束地址,开始地址和范围(长度),或从参考地址的偏移量)定义。
根据本公开的实施例,虚拟存储器地址空间中的每个范围被映射到***地址空间中的相应范围。例如,虚拟存储器地址范围114被映射到***地址范围116。每个***地址范围还被划分为多个分区。在图1所示的示例中,***地址范围116具有被表示为D1、D2、D3和D4的四个分区。在续篇中,假设每个分区对应于存储器或存储装置的页面,但是在不脱离本公开的情况下,可以使用其他大小的分区。该映射被称为第一层映射,并且可以例如使用范围表缓冲器来记录和实现。
***地址范围的每个分区都被映射到数据资源中的页面。例如,分区D1被映射到数据资源108中的页面P1,分区D4被映射到数据资源110中的页面P6等。该映射被称为第二层映射,并且可以例如在***到物理转换缓存中记录和实现。
当进程或线程请求虚拟存储器地址范围114的副本时,创建新的虚拟存储器地址范围118(范围B)。原始虚拟存储器地址范围114被称为“父”虚拟存储器地址范围,而新的虚拟存储器地址范围118被称为“子”存储器地址范围。子范围可以在相同的虚拟存储器空间102中或在不同的虚拟存储器空间中。由于没有数据在任何物理数据资源中移动,因此该操作被称为虚拟复制。子虚拟存储器地址范围118被映射到与父虚拟存储器地址范围114相同的***地址范围116。但是,为子范围生成新的映射(从虚拟存储器地址到***地址)。这将在下面更详细地讨论。
只要在范围114或范围118内没有数据被修改,操作就可以继续。因此,实际数据的复制被推迟。但是,如果范围114或118中的数据被修改(例如,通过写入命令),则由于无法再共享数据,因此必须制作修改后数据的物理副本。
图2示出了在范围中的数据已被修改以及数据的物理副本已被制作之后的存储器100。在所示的示例中,假定针对子虚拟存储器地址范围118中的地址发出了写入请求,并且该地址被映射到***地址范围的分区D2。在写入之后,父范围114和子范围118不能共享分区D2,因此执行两层复制。首先,在***地址空间104中制作***地址范围116的副本202,并且更新从虚拟存储器地址范围118到***地址范围的相关映射。复制的***地址范围202具有被表示为D1'、D2'、D3'和D4'的四个分区,它们对应于***地址范围116中的分区D1、D2、D3和D4。在写入(到分区D2或D2')之后,与分区D2相关联的数据和与分区D2'相关联的数据必须被存储在不同的页面中。在该示例中,D2仍被存储在数据资源108的页面P2中,而复制的范围202中的分区D2'中的数据将被存储在数据资源112中的页面P7中。生成新的映射204以指示***地址范围202如何被映射到物理地址。可选地,分区D2'中的数据仍可以被存储在数据资源108的页面P2中,而原始范围116中的分区D2中的数据被存储在数据资源112中的页面P7中,因为计算设备不需要知道第二层映射。
以这种方式,仅需要物理存储的单个附加页面,而不是用于完整复制的范围202的存储。
这种方法的优点在于推迟了数据的复制,直到数据被实际地修改(并且可以一起避免未来的访问是“只读的”)。另一个优点在于,只复制***地址范围的修改后的分区,而不是整个范围,从而使资源使用最小化。该方法被称为“两层、写时复制”机制,因为两个分离的映射被维护和更新(那些映射是由范围表内的范围定义的虚拟到***地址映射和存储器节点控制器内的分离的***地址到物理页面映射),并且在写入操作被请求之前不复制物理数据。
根据本公开的其他方面,提供了用于维护和更新从虚拟存储器地址空间到***地址空间的映射以及从***地址空间到物理地址空间的映射的机制。在一个实施例中,机制分别由第一存储器地址转换装置和第二存储器地址转换装置提供。第一地址转换装置可由使用一个或多个虚拟存储器地址空间的一个或多个计算设备访问,并且被配置为将第一虚拟存储器地址范围中的虚拟存储器地址转换为第一***地址范围中的***地址。第二存储器地址转换装置包括:数据资源分配电路,用于分配一个或多个数据资源的资源;以及***到物理地址转换器,诸如缓存,被配置为将第一***地址范围中的***地址转换为一个或多个数据资源的数据资源的物理地址空间中的物理地址。数据处理***响应于对第一(父)虚拟存储器地址范围(图1中的114)中的给定虚拟存储器地址的复制请求,来生成第二(子)虚拟存储器地址范围(图1中的118)。在复制请求之后,但在虚拟存储器地址的父范围或子范围中的写入操作之前,第一地址转换装置被配置为将虚拟存储器地址的父范围和子范围两者转换为相同的***地址范围,116。
再次参考图2,在虚拟拷复制之后,父***地址范围116包括父分区D1…D4,并且子***地址范围202包括相应的子分区D1'...D4'。在对第一父分区中的***地址的写入操作之后,第二存储器地址转换装置被配置为对数据资源中的空间进行分配以用于存储第一父分区中的数据的副本或要被写入的数据,对***到物理地址转换缓存进行更新以包括子***地址范围,并且对***到物理地址转换器缓存进行更新以将第一父分区或相应的第二子分区映射到数据资源中的经分配的空间。***到物理地址转换器缓存被更新以将子分区映射到与父分区相同的物理地址,除了第一父分区和相应的子分区被映射到不同的物理地址之外。
根据本公开的某些实施例,使用范围表来维护从虚拟存储器地址空间到***地址空间的映射。
根据本公开的某些实施例,从***地址空间到物理地址空间的映射由存储器节点控制器来维护,如在申请号为15/650,008的共同未决专利申请中所公开的,该专利申请通过引用以其整体合并于此。
图3是根据本公开的实施例的数据处理装置的示意图。参考图3,数据处理装置包括多个处理器核心300、310。在图3的示例中,示出了两个这样的处理器核心,但是(如虚线框312示意性示出的)可以提供更多的处理器核心。可选地,***可以仅包括一个处理器核心。
处理器核心被布置为根据虚拟存储器地址来处理数据。例如,每个处理器核心可以根据相应虚拟存储器地址空间中的虚拟存储器地址来处理数据,例如在操作***或所谓的管理程序的控制下,其将虚拟存储器地址空间分配给由不同处理器核心执行的进程,部分地作为一种用于避免与一个处理器核心相关联的进程意外或恶意地访问适合于由另一个处理器核心执行的进程的数据的技术。
第一层存储器地址转换
提供一种存储器地址转换装置,以在虚拟存储器地址空间中的虚拟存储器地址与***地址之间转换。
***地址是来自第一层转换的“输出”存储器地址。***地址可以表示物理地址;即,物理存储器设备或其它可寻址单元可以被物理地寻址的地址。可选地,***地址可以表示在用于访问物理存储器设备或其它可寻址单元之前需要地址转换的其他阶段的地址。从地址转换技术的观点来看,这些选项是等效的。也就是说,地址转换技术以虚拟存储器地址开始并且产生***地址。对***地址的地址转换的另一阶段由存储器控制器节点360和370来提供。
在图3中,从虚拟存储器地址到***(输出)地址的地址转换由所谓的范围表缓冲器(RTB)305、315来执行。这执行了虚拟存储器地址空间中的虚拟存储器地址与***(输出)地址空间中的***地址之间的地址转换。每个处理器核心具有相应的范围表缓冲器。然而,例如,可以使用其它地址转换技术(从虚拟地址到***(输出)地址),例如转换后备缓冲器(TLB)。
提供旁路逻辑308、318以在地址转换使得虚拟存储器地址等于相应***地址时选择性地旁路RTB 305、315。旁路电路或逻辑可由控制信号309、319控制,这将在下面讨论。当旁路逻辑被使能时,RTB 305、315不执行任何转换,或忽略由RTB 305、315执行的转换并且由旁路路由304、314提供虚拟存储器地址以用作输出存储器地址。
在该示例中,处理器核心300、310被实现或制造在集成电路衬底上,并且可以在同一集成电路衬底上提供这两者(或者在多于两个处理器核心的情况下,提供所有的这些处理器核心)。这些器件在图3中被称为“片上”。
在片上还提供了缓存和/或***缓存存储器330,以便为下面要讨论的存储器***所保存的数据子集(例如,最近访问的子集和/或推测性地取出的子集)提供临时存储。如图3所示,处理器核心300和310共享公共缓存/***缓存330。然而,在其他示例中,可以提供多于一个缓存,并且以虚线示出了另一缓存340以示出这种布置。又一实施例根本不使用任何缓存。
缓存/***缓存330(340)根据RTB 305、315生成的***(输出)存储器地址来进行操作。
虚线350指示片上器件和片外器件之间的逻辑边界,尽管将理解的是,这仅仅是一个示例,并且图3中所示的任何模块在相同集成电路上或作为不同电路的实现对于***设计者来说是个问题。因此,图3表示在一个实施例中可以如何实现片上和片外组件的分离的示意性示例。在另一实施例中,组件可以被实现为单个芯片。图3中所示的一些或所有模块可以使用通过封装器件中的***器连在一起的多个芯片来实现。
存储器节点控制器
例如,提供了片外的一个或多个存储器节点控制器360、370,其进而访问一个或多个相应的物理设备380、390,例如随机存取存储器(DRAM)、相变存储器(PCM)、高带宽存储器(HBM)或基于块的存储设备,例如固态驱动器(SSD)。假定物理设备380、390在物理地址空间中操作,则存储器节点控制器360、370的功能可以包括:(a)如果需要进一步的转换阶段,则将***(输出)存储器地址转换为物理存储器地址(或例如通过诸如串行高级技术附件(SATA)协议等之类的适当协议将***(输出)存储器地址转换为块地址),以及(b)管理需要访问物理设备380、390中的哪一个以实现所需的存储器访问操作。
上述转换操作(a)是第二层地址转换,并且可以使用下面讨论的技术或者通过已知的存储器地址转换技术来执行。用于管理应当访问物理设备380、390中的哪一个的管理操作(b)可以使用例如存储在存储器节点控制器360、370中的一个或多个存储器节点控制器处的表或目录来执行,以指示物理设备之间的物理地址空间的划分,并且继而指示存储器节点控制器。
在图3的示例中,提供了两个存储器节点控制器。***地址空间在两个存储器节点控制器之间被划分。如果存储器节点控制器中的一个存储器节点控制器(例如,存储器节点控制器360)接收到与由另一个存储器节点控制器(例如,存储器节点控制器370)处理的地址有关的存储器访问事务的请求,则第一存储器节点控制器360可以经由数据连接365与另一个存储器节点控制器370通信,传递与该事务有关的***地址,并且请求由第二存储器节点控制器370执行该事务。
图3中所示的实施例包括一个或多个存储器节点控制器(MNC)。MNC提供专用硬件机制来收集和使用元数据,包括诸如重用距离之类的性能统计。元数据被用于在可用技术中提供存储器页面的更好放置。
如上所述,MNC至少将数据处理***的***地址空间的分区映射到物理设备存储器空间。例如,MNC提供从***地址空间到资源(例如,DRAM设备、块设备、远程直接存储器存取(RDMA)装置或位于硬件加速器上的存储器)中的物理空间的映射功能。RDMA装置可以是用于远程存储器存取的任何存储器或存储设备。MNC提供用于写入到***地址、维持存储器结构上的页面级所有权、经由元数据跟踪将页面最佳地放置在存储器中以及将数据前馈到快速片上存储器的功能性。MNC以硬件实现,并且可以是具有附加功能的集成电路的一部分。例如,MNC可以从网表或硬件描述语言(HDL)表示中合成。
根据某些实施例,MNC提供诸如存储装置、存储器或网络接口控制器(NIC)之类的资源到单个***地址空间中的单个抽象。
根据某些实施例,MNC提供一种将MNC页面级处的存储器视为在多个MNC之间“可共享的”的手段。
根据某些实施例,MNC提供写时复制装置的第二层。
根据某些实施例,MNC提供一种用于执行单个复制操作的有效装置。这可以被提供给例如加速器设备的所有级别,并且可以经由网络接口控制器(NIC)来提供。
根据某些实施例,MNC是遵循存储器服务器模型配置的存储器结构的一部分,其中存储器结构服务来自数据处理***的各种本地或远程计算设备的存储器请求。
图4是根据本公开的实施例的数据处理***400的框图。数据处理***400包括第一存储器节点控制器(MNC 0)360,以及可选地,一个或多个第二存储器节点控制器(例如,MCN 1 370)。MNC 360包括耦合到多个其它功能块的控制逻辑404。***400被配置为网络,其中MNC 360和370提供对计算设备(例如,408和410)进行互连的网络节点。计算设备可以是处理核心、处理核心的集群、硬件加速器或消费数据的其他设备。
设备接口406使得MNC 360能够与多个计算设备408和410以及诸如硬件加速器之类的其他设备交互。计算设备可以是片上或片外的。***400被配置为网络,其中MNC 360和370为对计算设备(例如,408和410)进行互连的网络节点提供存储器资源。在一个实施例中,设备接口406符合“***组件互连表达”(PCIe)标准。PCIe是用于互连计算机中的内部设备的非专有标准。例如,设备接口406可以包括PCIe根联合体,其使得能够与多个计算机元件或虚拟化PCIe设备连接。当使用多个MNC节点时,节点是PCIe标准中的“多根”。然而,MNC还可以支持用于客户操作***的单根虚拟化以实现后向兼容性。MNC网络上的设备经由虚拟化硬件调解的PCI设备树来识别。
IO控制器
MNC 360还包括IO控制器(IOC)412。IOC 412是使得能够连接到片外组件的通用互连或总线。这可以是具有使得能够响应或传输命令的协议的定制物理层。例如,命令可以是指令集架构(ISA)级存储器指令。例如,IOC 412可以在诸如PCIe-v4结构之类的标准结构下操作。根据MNC和整个***所需的特性,可以使用其他物理层。IOC 412使得能够与其他MNC设备进行通信。
存储器控制器
MNC 360还包括存储器/存储组件,例如使得能够与存储器设备416进行耦合的存储器控制器414(例如,一个或多个DRAM控制器)、用于与块设备420进行耦合的块设备控制器418(例如,诸如SATA控制器)。每个设备被映射到可以由MNC本身或操作***进一步虚拟化的存储器的物理范围。
附加IO控制器422使得能够连接到设备(例如,网络接口控制器424)。
在图4所示的实施例中,MNC 360还包括加速器物理存储器426、快速本地存储器432(例如,诸如组合的DRAM/NV3-D集成存储器),其用作用于数据重新布置、存储器中的计算以及用于NIC和RDMA事务的本地缓冲器。
MNC 360还包括数据资源分配电路434,用于分配一个或多个数据资源(例如,416、420,或经由NIC 424可访问的网络设备)的资源。
物理设备配置设置(PDSC)存储器
配置数据被存储在物理设备配置设置(PDSC)存储器428中。例如,加速器物理存储器426通过***地址空间的映射可以被存储在PDCS存储器428中。物理设备配置信息经由固件接口、板上非易失性存储器(例如,SPI闪存或等效物)、小型持久可移除存储装置(例如,存储卡)或者可以传输用于物理映射配置和其他配置(例如,信道和中断分配)的信息的任何其他方法被提供给MNC。诸如SATA、PCIe、SSD、DRAM等之类的物理设备从虚拟***地址范围映射到物理设备范围。
在一个实施例中,PDSC存储器存储向MNC告知关于网络上存在的设备的信息,这使得设备能够从指定到它们的操作***和文件***中的存储器空间虚拟地彼此“映射”。
与存储设备相关的信息稍有不同,并且向MNC告知附接了什么设备、它们的特性以及它们将被分配什么总线通道或信道。此外,对于PCIe加速器,可能需要提供其他配置数据以及该加速器设备的***地址映射,以便其可以被映射到主机操作***的***地址空间中以进行虚拟化。
总之,在PDSC存储器中的配置信息向MNC提供了其需要来启动外部设备并且将诸如加速器、计算设备和网络接口控制器之类的设备映射到***地址空间中以使能虚拟化的信息。该信息可以补充或替换内核中的传统设备配置。
在启动时,通过握手可以容易地发现其它存储器节点控制器,但是也可以在配置信息内直接指定它们。
除了配置信息之外,可以使用其他设备的自发现。例如,从块设备汲取的电流(例如,通过SATA连接器)可以指示设备并且自动地触发设备识别过程。
***到物理转换(STP)缓存结构
存储器节点控制器包括地址转换电路。在图4所示的实施例中,地址转换电路包括***到物理转换(STP))缓存结构430,其保存将***地址映射到各种设备上的物理页面的转换结构。这种结构的示例性实现方式是具有驻留在静态随机存取存储器(SRAM)中的最频繁使用的N个转换的稀疏散列映射,其中溢出移动到由MNC存储器控制器414通过STP缓存分配的DRAM。在一些实施例中,STP缓存中的SRAM可以足够大以存储大多数地址转换。在一个实施例中,从***地址到物理地址的转换可以经由散列映射来执行,并且在一些散列映射实现方式中,可以在单个时钟周期边缘上执行。
缓存
缓存330和340可以是网络边缘附近的数据缓存,以便于去往和来自MNC 360的数据传输。这些被称为数据传递缓存(DDC)并且可以位于片上。在MNC 360内,存储器被分为表示特定存储器容量(例如,4K区域)的页面,其可以被放置在任何类型的物理设备上。将较大范围分为较小页面使得能够改进存储器技术布置,并且提供元数据收集的上限,因为数据仅需要保持在页面粒度。元数据使得存储器节点控制器360能够将物理页面置于最优存储器/存储技术(基于某种成本函数)上,并且另外使用“前馈”方法来将页面置于片上缓存。在前馈方法中,MNC将对于核心和应用来说最优的数据页面(以某一粒度)(即,基于带宽需求、重用距离等)馈送到核心上正好需要该数据页面的高带宽/低延迟存储器。
在MNC内,存在可以在硬件中用来存储分页信息的多个数据结构。在一个实施例中,使用稀疏散列映射结构,其例如可以被实现为树结构。在对没有物理备份的页面进行写入操作时,在由优化功能(作为示例,可能首先在DRAM中)选择的存储器类别中创建备份,然而,它可以容易地在非易失性介质中创建新的脏页面。在读取操作时,发生类似的事情。可以在逐页的基础上执行操作,其中页面是以某一粒度(例如,4K)的范围的子集。以此方式,提供范围转换,并且在最有效的存储器技术上将页面条带化/放置。每个页面可以由MNC放置在存储器网络中的任何地方,而核心不必进行任何改变或采取任何动作。
由于数据可以在计算机设备之间共享,因此一致性协议可以被用于防止对包含过时数据的存储器页面的访问。为此,可以使用有限的目录结构来存储数据页面的状态。
在启动时或在重新协商过程期间,每个MNC被分配完整***地址空间的分区。分区的示例***地址范围可以是:(base_address+0)→
(base_address+n)。该分区在MNC之后被进一步细分为物理地址(或者在NIC的情况下为网络地址)。MNC控制对其后面的能够存储数据的所有资源的访问,并将***地址空间映射到这些资源中的物理或网络地址。文件***和联网功能也可以被映射到该地址空间上。具有板上存储器的加速器也被映射到该地址空间中,并且可以通过接口从它们的虚拟存储器地址空间访问,而不需要知道***地址空间。
在处理器核心上开始,使用范围转换缓冲器(RTB)或转换后备缓冲器(TLB)将请求中的虚拟存储器地址转换为***地址空间中的地址。然后,将该请求发送到存储器节点控制器。
在第一实施例中,在MNC之间划分存储器空间,使得在引导之后存在固定的静态映射。这种方法具有对于路由计算是快速的优点,并且总是去往正确的节点。然而,这种方法对于片上路由或对于优化存储器放置可能不是最佳的。固定计算是次优的一个原因在于它增加了片上存储器流量,否则其可以被用于核心到核心(或线程到线程)通信。另一个原因在于,对于每个存储器请求,支持具有N个核心的片上集群局部性所需的开销是log2(N)。请求将被标记以指示它们的起源,并且然后被发送到MNC。例如,当简单性比开销更重要时,可以使用该方法。
在另一实施例中,假设每K个MNC将具有N个核心,并且这N个核心将被集群,而不是处于完全连接的网格中。在这种方法中,路由路径是从集群通过一个或多个缓存(包括任何DDC),并且然后到与该集群相关联的片外互连控制器。例如,该互连可以利用PCIe或其它物理层。MNC的每一个都被分配了***地址空间的静态分区。这可以在引导配置或***重置之后完成,以便于存储装置/存储器的热添加/移除/交换。在MNC处,***地址分区被进一步细分为页面,所述页面被零分配(用于初始分配)或指向某一设备上的物理存储器。这种路由路径的优点在于请求的起源隐含在流量源中。例如,已知哪个核心集群隐式地创建流量,而没有进一步的信息或元数据。否则,对于每个存储器请求,捕获和记录发起核心将需要至少足够的位来编码节点内的集群的数目。使用位置信息,MNC网络可以在网络内迁移页面(其使用***地址来索引),或者如果计算模式保证了页面,则将页面从***地址范围的所有者中检出。
软件意识促进了对该基础设施的有效使用。假定***地址空间在N个MNC之间被分割,并且这些MNC基于例如物理位置被连接到计算设备,则任务可以被调度,使得它们在连接到对已经分配的***和物理存储器进行控制的MNC的计算设备上执行,或者至少在连接到附近的MNC的计算设备上执行。这确保了低延迟通信。
图5是根据本公开的实施例的数据处理***500的框图。数据处理***500包括在虚拟存储器空间504中操作的核心或计算设备502。在所示的实施例中,***地址空间被分为三个分区R1、R2和R3。***500还包括与***存储器分区508(R1)相关联的MNC 506、与***存储器分区512(R2)相关联的MNC 510、以及与***存储器分区516(R3)相关联的MNC514。MNC 506控制对存储器资源518的访问,在该示例中,存储器资源518存储具有物理地址P1、P2、P3和P4的页面520。MNC 506将分区R1中的***地址转换为存储器资源518中的物理地址。类似地,MNC 510控制对存储器资源522的访问,在该示例中,存储器资源522存储具有物理地址P5、P6、P7和P8的页面524。MNC 510将分区R2中的***地址转换为存储器资源522中的物理地址。MNC 514控制对存储器资源526的访问,在该示例中,存储器资源526存储具有物理地址P9、P10、P11和P12的页面528。MNC 514将分区R3中的***地址转换为存储器资源526中的物理地址。以此方式,64K地址空间被分为四个16K范围,并且每个16K范围被分为在物理资源之间分配的四个4K页面。
当核心502发出对空间504中的虚拟存储器地址处的数据进行访问的请求时,虚拟存储器地址被转换为范围表缓冲器530中的***地址。如果在本地缓存中没有找到该地址,则将***地址传递到耦合到核心502的MNC。在该示例中,将***地址传递给MNC-1(510)。MNC-1(510)确定***地址是否在分区R2中。如果是,则522的相应存储器资源与该存储器资源中的物理地址一起被标识,并且该物理地址处的数据被访问。存储器写入访问可以通过链路532被确认。从存储器资源读取的数据通过链路532被返回。
如果***地址不在分区R2中,则控制分区的MNC被标识,并且请求被转发到所标识的MNC,在所标识的MNC处请求被服务。对请求的任何响应经由链路532被返回到核心502。
在某些实施例中,MNC内的***地址和物理地址之间的转换是使用存储在***到物理转换(STP)缓存(例如,图4中的430)中的数据结构来进行的。数据结构可以是使用页面条目的掩码散列查找的表。例如,可以通过***地址与页面大小之间的逻辑“与”运算将页面号计算为二的幂。RTP缓存中的示例页面条目可以包含表1中所示的信息。
表1
在一个实施例中,使用三个指针来支持写时复制,一个指针指向作为当前干净物理副本的条目(报头),一个指针是父,并且一个指针是子。这使得更新过程能够被优化。其它变化对于本领域技术人员将是显而易见的。
可以通过使用伙伴存储器分配方案或例如可由稀疏树表示的其它方案来有效地处理存储器分配。例如,可以通过向OS发信号以找到包含***地址的处理线程,并且然后改变***地址范围来实现***地址范围的压缩(重新排序)。这个过程可能是耗时的。然而,对于大的***地址空间(例如,64位),这不太可能发生,除非当前***变得非常大。可选地,另一间接层可以在***层与物理层之间,使得可以在不中断任何***地址的情况下压缩或混洗(shuffled)空间。
页面信息被存储在存储器中。在硬件的最简单实现方式中,条目被用于每个页面。例如,如果单个MNC被分配100TB地址分区,并且如果页面大小被选择为2MB,则即使设备完全满,该表也将适合小的64MBSRAM结构。如果要存储其它元数据,则需要额外的空间。然而,在一个实施例中,通过将空页面压缩到零页面范围中来减小表的大小。
可以在虚拟存储器***中实现写时复制(CoW)机制,以减少***中的重复数据的量。在来自存储器范围(被称为父)的副本上,现在复制的范围(被称为子)仍然指向父使用的***地址(物理备份或不物理备份),如上面关于图1所讨论的。对于CoW的第一层,为CoW复制的唯一事物是描述范围本身的元数据,其中偏移量被修改。该动作可以在硬件中执行或者经由***软件层来调解。在以下描述的实施例中,假设该动作是硬件调解的,尽管操作***可以执行一些附加动作,诸如检查对正在执行的程序的用户限制。复制的范围仍然指向父范围存储器,然而,其被映射到新进程的虚拟存储器地址空间中。这意味着复制的范围映射到相同的***地址,并且能够根据需要从父范围别名化存储器,直到发生写入为止。这导致更好的缓存利用和更有效的存储器利用。
图6是根据本公开的实施例的用于在数据处理***中执行复制操作的方法600的流程图。在开始框602之后,在框604处由设备发出在虚拟存储器地址处复制存储器的指令。在设备的范围表(父范围表)中查找地址。如果该表指示不允许在该地址处复制数据,如判定框606的否定分支所示,则在框608处输入故障条件。如果允许复制,如判定框606的积极分支所示,在框610处,将包括要复制的虚拟存储器地址的地址范围的元数据作为新条目写入子范围表中。子范围表可以是父范围表本身或另一范围表,例如另一设备的范围表。在复制之后,在框612处,在父范围表和子范围表两者中的条目中设置CoW状态指示符(如图7所示,在下面讨论),以指示该地址范围是CoW操作的一部分,并且数据当前处于共享状态。在续篇中,CoW状态指示符被称为单个CoW状态位,但也可以使用其他指示符。地址范围可以具有任何大小,并且可以非常大,但是以某一粒度。在框614处,修改子范围表中的元数据以指示虚拟存储器地址的新范围。例如,虚拟存储器地址范围可以由基地址和范围或起始地址和结束地址指示。在框616处,如果必要的话,修改子范围表中的元数据以指示新的虚拟存储器地址范围对应于与原始虚拟存储器地址范围相同的***地址范围。因此,原始(父)和复制的(子)虚拟存储器地址两者都对应于相同的***范围和相同的物理存储器位置,因此该过程被称为虚拟复制。如终止框618所示,虚拟复制现在完成了。注意,操作的顺序可以改变,并且可以将多个操作组合为单个操作。还应注意,尚未更新物理存储器。
第一存储器转换装置可以包括至少一个范围表缓冲器,以将转换数据存储在一个或多个条目中。存储在条目中的数据指示地址范围边界值、虚拟存储器地址范围中的虚拟存储器地址与***地址空间中的相应***地址之间的转换以及写时复制状态,所述地址范围边界值定义虚拟存储器地址空间中的相应虚拟存储器地址边界之间的虚拟存储器地址范围。
图7示出了根据本公开的实施例的两层写时复制机制中的范围表条目。父范围表条目700示出了在不同时间处父范围表A中的单个范围表条目的内容。在所示实施例中,父范围表条目700中的地址范围边界值包括虚拟存储器地址基址值702(VA_BASE)和虚拟地址范围704(VA_EXTENT)。这些指示从VA_BASE到VA_BASE+VA_EXTENT的地址范围。字段706包含偏移量,当该偏移量被添加到虚拟存储器地址时,指示与该虚拟存储器地址相对应的***地址。因此,偏移值被用于将虚拟存储器地址转换为***地址。范围表条目700还包括权限字段708,其可以包含存储器访问权限,CoW字段710或其他管理数据(例如,指向***地址空间中的父和子CoW范围的前向指针和后向指针,作为用于定位父和子范围或关键位以进行错误保护的优化,数据还可以指示没有写入的范围,其在读取时返回零,而无需通过RTB来访问存储器***)。
在进行任何复制之前,子范围表(表A-副本)中的相应条目712为空。该条目包含字段714、716、718、720和722,它们分别与父范围表A中的条目的字段702、704、706、708和710对应。
当发出复制指令时,在复制步骤1处将父条目700复制到子条目712中。在复制步骤2处,将CoW字段设置在条目700的字段710中以及条目712中的字段722中,以指示在两个虚拟存储器地址范围之间共享相应数据。在字段710和722中将其表示为“C”。在复制步骤3处,将新的虚拟地址基址(新的VA_BASE)写入条目712中的字段714,并且将新的偏移量写入字段718。新的虚拟地址基址和新的偏移量是相关的,使得新的虚拟地址范围映射到与之前相同的***地址范围,因此在原始虚拟地址范围和新的虚拟地址范围之间共享数据。
共享状态条件可被设置,直到被对父虚拟存储器地址范围或子虚拟存储器地址范围的写入中断。当发生这种情况时,进行写入的范围启动硬件驱动的克隆操作(通过存储器风暴接口)。该克隆操作获取基址***地址和范围(所有对硬件可用)并返回新的***地址和范围。在数据由设备使用子范围写入的情况下,字段718中的偏移值被更新以反映新的***范围,如图7中的写入步骤1所示。如果使用父范围表将数据写入设备,则将更新字段706,而不是字段718。
在写入步骤2中,在写入之后,父范围和子范围的CoW状态指示符都被修改为指示非CoW,即未共享相应数据(在一个实施例中,范围条目可以经由指针被链接在范围的管理数据中,以快速地识别所指向的CoW范围的父和子(如果存在的话))。任何其他CoW行为都在存储器节点控制器(MNC)本身内部被透明地处理。
在第一层写时复制中,生成新的***范围。在第二层写时复制中,生成从***到物理地址的新映射,但是实际上仅复制了写入的物理页面。其余页面仍映射到父范围的物理页面(直到它们也被写入为止)。如上所述,将每个***范围细分为物理页面,这些物理页面的元数据(例如实际位置、空/已分配等)在有效的数据结构中表示。例如,数据结构可以是B树或其他自平衡搜索树。一旦接收到复制操作,就设置一组新的页面,以便它们最初指向父范围的页面。一旦接收到(对真实地址的)写入,就计算其落入的页面(例如,使用散列),并且检查该页面以查看其是否具有设置的CoW状态位(在映射物理页面的硬件数据结构内,再次例如B树)。如果设置了CoW状态位,则写入被缓冲,然后新的物理页面被分配(在一种可用的存储器技术上,例如DRAM/NV/SSD等),并且该页面被复制。一旦被复制,则经缓冲的写入被提交到复制的页面。可选地,可以复制页面的元数据。
对存储器的读取访问通常比写入访问更频繁。因此,在核心本身上保持初始步骤(例如,通过复制范围表条目并且设置位)显著地加速了复制或克隆操作的关键路径。将存储器的实际物理复制移动到存储器结构使得OS和核心能够继续计算,将慢写入操作移动离开关键路径。这种机制的另一个显著优点在于其使得加速器能够使用相同的CoW机制。这对于现有***是不可能的。加速器可以具有传递给它的克隆的存储器范围,并且显然地,存储器结构可以利用CoW的第二级来写入与父范围不同的页面,从而减少复制开销和数据移动。
图8是用于在数据处理***中处理写入操作的方法800的流程图。
在开始框802处对虚拟存储器地址的写入指令之后,在范围表中查找该地址以确定是否设置了相应条目中的CoW状态位。如果未设置CoW状态位,如判定框804的否定分支所示,则不共享存储器,因此在框806处向存储器***发出写入指令,并且该过程在框808处终止。然而,如果CoW状态位被设置在范围表条目中,如判定框804的积极分支所示,在框810处,向与包含要写入的***地址的范围相关联的存储器节点控制器(MNC)发出复制请求。在框812处,MNC创建新的***范围并且更新其***到物理转换表以将新的***范围映射到物理地址。MNC还分配新的物理存储装置,并将包含要写入的地址的分区或页面复制到所分配的存储装置。在框814处,在发出写入请求的设备的范围表中更新偏移量和虚拟存储器地址基址,并且清除CoW状态位。在框816处,使用范围表中的新的偏移量将要写入的虚拟存储器地址转换为***地址。最后,在框806处,向存储器***发出相应的写入指令。
在MNC内,计算写入所指向的页面,然后该页面被分配新的物理存储器并被复制。例如,该操作可以在片外的存储器控制器级别处执行,并且可以利用技术中复制技术(例如,缓冲器-缓冲器复制和SSD中复制)。一旦被复制,写入就将提交到新页面。所有其他页面仍指向父页面,因为它们“干净”且与父页面完全相同。以这种方式,假定主处理核心没有直接参与,第二层写时复制提供与标准写时复制***相同的性能或比标准写时复制***更好的性能。至此,两层“快速”写时复制过程完成,并且该过程在框808处终止。
如本文中所呈现的本公开的各种实施例和示例应被理解为是对本公开的说明而不是对本公开的限制,并且不限制本公开的范围。
在所附的独立和从属权利要求中陈述了本公开的其他特定和优选方面。从属权利要求的特征可以与独立权利要求的特征适当地进行组合,并且可以与除了在权利要求中明确阐述的那些组合之外的组合进行组合。
数据处理***的组件可以在集成电路中实现。该电路可以被定义为硬件描述语言(HDL)指令的指令集,其可以被存储在例如非瞬态计算机可读介质中。可以经由计算机可读介质或经由诸如有线或无线网络之类的其他手段来分发指令。该指令可以被用于控制集成电路的制造或设计,并且可以与其他指令相结合。
尽管本文已经参考附图详细描述了本发明的说明性实施例,但是应当理解,本发明不限于那些精确的实施例,并且在不背离由所附权利要求限定的本发明的范围和精神的情况下,本领域的技术人员可以在其中进行各种改变和修改。
将会认识到,上述设备、***和方法是通过示例而非限制的方式提出的。在没有相反的明确指示的情况下,可以在不脱离本公开的范围的情况下,修改、补充、省略和/或重新排序所公开的步骤。对于本领域的普通技术人员来说,许多变化、增加、省略和其他修改将是显而易见的。此外,除非明确要求或从上下文中清楚得知特定顺序,否则以上描述和附图中的方法步骤的顺序或表示不旨在要求执行所述步骤的这种顺序。
除非明确地提供了不同的含义或从上下文中清楚得知,否则本文描述的实现方式的方法步骤旨在包括与以下权利要求的专利性相一致的、使得这些方法步骤得以执行的任何合适的方法。
还应当理解,上述方法是通过示例的方式提供的。在没有相反的明确指示的情况下,在不脱离本公开的范围的情况下,可以修改、补充、省略和/或重新排序所公开的步骤。
将理解的是,上述方法和***是通过示例而非限制性的方式提出的。对于本领域的普通技术人员来说,许多变化、增加、省略和其他修改将是显而易见的。此外,除非明确要求或从上下文中清楚得知特定顺序,否则以上描述和附图中的方法步骤的顺序或表示不旨在要求执行所述步骤的这种顺序。因此,尽管已经示出和描述了特定的实施例,但是对于本领域技术人员将显而易见的是,在不脱离本公开的范围的情况下,可以在其中进行形式和细节上的各种改变和修改,并且旨在形成由所附权利要求限定的本公开的一部分,所附权利要求应在法律允许的最广泛意义上进行解释。
本文已经详细描述的各种代表性实施例已经通过示例的方式而非限制性的方式给出。本领域技术人员将理解的是,可以对所描述的实施例的形式和细节进行各种改变,从而导致等同的实施例仍在所附权利要求的范围之内。
因此,在以下编号的项目中列出了所公开的实施例的一些特征:
1.一种数据处理***,包括:第一存储器地址转换装置,能够由一个或多个计算设备访问并且被配置为将第一虚拟存储器地址范围中的一个或多个虚拟存储器地址转换为第一***地址范围中的一个或多个***地址;以及第二存储器地址转换装置,包括:数据资源分配电路,用于分配一个或多个数据资源;以及***到物理地址转换器,被配置为将第一***地址范围中的一个或多个***地址转换为一个或多个数据资源的数据资源的物理地址空间中的物理地址,其中,数据处理***响应于对第一虚拟存储器地址范围中的虚拟存储器地址的复制请求,来生成第二虚拟存储器地址范围,并且其中,在复制请求之后并且在第一虚拟存储器地址范围或第二虚拟存储器地址范围中的写入操作之前,第一地址转换装置被配置为将第一虚拟存储器地址范围和第二虚拟存储器地址范围两者转换为第一***地址范围。
2.根据项目1所述的数据处理***,其中,第一***地址范围包括第一多个分区,并且其中,在对第一多个分区的第一分区中的***地址的写入操作之后,第二存储器地址转换装置被配置为:对一个或多个数据资源的数据资源中的空间进行分配;将与第一分区相关联的数据复制到经分配的空间;对***到物理地址转换器进行更新以包括第二***地址范围,其中,第二***地址范围包括与第一多个分区相对应的第二多个分区并且包括与第一分区相对应的第二分区;对***到物理地址转换器进行更新以将第一分区或第二分区映射到数据资源中的经分配的空间;以及对***到物理地址转换器进行更新以将第二多个分区映射到与第一多个分区相同的物理地址,除了第一分区和相应的第二分区被映射到不同的物理地址之外。
3.根据项目2所述的数据处理***,其中,第一多个分区包括物理存储器页面。
4.根据项目2所述的数据处理***,其中,第一多个分区包括来自块存储设备的存储器块。
5.根据项目1所述的数据处理***,其中,第一存储器转换装置包括至少一个范围表缓冲器,用于将转换数据存储在一个或多个条目中,其中,存储在条目中的数据指示:地址范围边界值,其定义虚拟存储器地址空间中的各个虚拟存储器地址边界之间的虚拟存储器地址范围;虚拟存储器地址范围中的虚拟存储器地址与***地址空间中的相应***地址之间的转换;以及写时复制状态。
6.根据项目5所述的数据处理***,其中,转换由虚拟存储器地址和相应***地址之间的地址偏移量来指示。
7.根据项目5所述的数据处理***,其中,生成第二虚拟存储器地址范围包括:对至少一个范围表缓冲器的范围表缓冲器中的第一条目进行检测,对于第一条目,由第一条目的转换数据定义的虚拟存储器地址范围包括复制请求的给定虚拟存储器地址;将第二条目写入至少一个范围表缓冲器的范围表缓冲器,第二条目指示定义第二虚拟存储器地址范围的新地址范围边界值,并且第二条目指示第二虚拟存储器地址范围中的虚拟存储器地址与第一***地址范围中的相应***地址之间的新转换;以及对第一条目和第二条目中的写时复制(CoW)状态指示符进行更新以指示共享的第一***地址范围。
8.根据项目7所述的数据处理***,其中,第一条目和第二条目被存储在相同的范围表缓冲器中。
9.根据项目7所述的数据处理***,其中,第一条目和第二条目被存储在不同的范围表缓冲器中。
10.一种非暂态计算机可读介质,包括表示根据项目1的数据处理***的硬件描述语言的指令。
11.一种非暂态计算机可读介质,包括表示根据项目1的数据处理***的网表。
12.一种用于在数据处理***中执行两层写时复制操作的方法,方法包括:分配第一映射,第一映射在计算设备的虚拟存储器地址空间中的第一虚拟存储器地址范围与第一***地址范围之间进行映射,其中,第一***地址范围包括多个分区;分配第二映射,第二映射在第一***地址范围与一个或多个数据资源中的第一物理地址之间进行映射;在接收到对第一虚拟存储器地址范围中的虚拟存储器地址的复制请求时:在第二虚拟存储器地址范围与第一***地址范围之间分配第三映射;在接收到将数据写入第一***地址范围中的第一***地址的请求时:确定多个分区中包含第一***地址的第一分区;对一个或多个数据资源中的空间进行分配以存储与所确定的第一分区相关联的数据的副本;将与所确定的第一分区相关联的数据复制到经分配的空间;在第二***地址范围与一个或多个数据资源中的第一物理地址之间分配第四映射,其中,第二***地址范围包括与第一分区相对应的第二分区;当写入请求与第一虚拟存储器地址范围中的虚拟存储器地址相关联时:对第一映射进行更新以将第一虚拟存储器地址范围映射到第二***地址范围;以及对第二映射进行更新以将第一分区映射到一个或多个数据资源中的经分配的空间;当写入请求与第二虚拟存储器地址范围中的虚拟存储器地址相关联时:对第三映射进行更新以将第二虚拟存储器地址范围映射到第二***地址范围;以及对第四映射进行更新以将第二分区映射到一个或多个数据资源中的经分配的空间;将待写入的数据的虚拟地址转换为第二***地址;以及将待写入的数据写入到第二***地址。
13.根据项目12所述的方法,其中,指示第一虚拟存储器地址范围与第一***地址范围之间的第一映射的转换数据被存储在范围表缓冲器的第一条目中,并且指示第二虚拟存储器地址范围与第一***地址范围之间的第二映射的转换数据被存储在范围表缓冲器的第二条目中,方法还包括:在接收到对第一虚拟存储器地址范围中的虚拟存储器地址的复制请求时,在第一条目和第二条目中的每一个中设置写时复制(CoW)状态指示符以指示共享的***地址范围。
14.根据项目12所述的方法,其中,指示第一虚拟存储器地址范围与第一***地址范围之间的第一映射的转换数据被存储在范围表缓冲器的第一条目中,并且指示第二虚拟存储器地址范围与第一***地址范围之间的第二映射的转换数据被存储在范围表缓冲器的第二条目中,方法还包括:在将数据写入到一个或多个数据资源中的经分配的空间时,清除第一条目和第二条目中的写时复制位以指示***地址范围不被共享。
15.根据项目12所述的方法,其中,指示第一虚拟存储器地址范围与第一***地址范围之间的第一映射的转换数据被存储在范围表缓冲器的第一条目中,其中,存储在条目中的数据指示:定义第一虚拟存储器地址范围的地址范围边界值;第一虚拟存储器地址范围中的虚拟存储器地址与第一***地址范围中的相应***地址之间的偏移量;以及写时复制状态,其指示第一虚拟存储器地址范围中的数据是否与第二虚拟存储器地址范围共享,其中,在第二虚拟存储器地址范围与第一***地址范围之间分配第三映射,包括:将第一条目复制到第二条目;以及更新至少一个范围边界值和偏移量,以使第二虚拟存储器地址范围中的虚拟存储器地址映射到第一***地址范围。
16.根据项目12所述的方法,还包括:通过与数据处理***的计算设备相关联的范围表缓冲器,将第一虚拟存储器地址范围中的虚拟存储器地址映射到第一***地址范围中的***地址。
17.根据项目12所述的方法,还包括:通过***到物理地址转换器,将第一***地址范围中的***地址映射到一个或多个数据资源中的第一物理地址。
18.一种用于在数据处理***中执行写入操作的方法,所述方法包括:响应于向虚拟存储器地址范围中的第一虚拟存储器地址写入数据的请求;在范围表缓冲器中定位与虚拟存储器地址范围相关联的条目;当所定位的条目中的写时复制(CoW)状态指示符指示虚拟存储器地址范围不被共享时:使用从虚拟存储器地址范围中的虚拟存储器地址到***地址的第一映射,将第一虚拟存储器地址转换为第一***地址范围中的第一***地址,其中,第一映射使用条目中的转换数据;以及向数据处理***的存储器***发出针对第一***地址的写入指令;以及当所定位的条目中的写时复制状态指示符指示虚拟存储器地址范围被共享时:从存储器***请求对第一映射的更新,以提供将虚拟存储器地址范围中的虚拟存储器地址映射到第二***地址范围中的***地址的第二映射;在范围表缓冲器中创建第二条目,第二条目包括描述第二映射的转换数据;使用第二映射将第一虚拟存储器地址转换为第二***地址;以及向数据处理***的存储器***发出针对第二***地址的写入指令。
19.根据项目18所述的方法,还包括:在向数据处理***的存储器***发出针对第二***地址的写入指令之后,更新写时复制状态指示符,以指示虚拟存储器地址范围不被共享。
20.根据项目18所述的方法,还包括:响应于对第一映射的更新的请求,存储器***生成从第二***地址范围到一个或多个数据资源中的物理地址的映射。
21.根据项目20所述的方法,其中,第二***地址范围包括多个分区,并且其中,生成从第二***地址范围到一个或多个数据资源中的物理地址的映射包括:在一个或多个数据资源中分配空间;将第二***地址范围的分区映射到与第一***地址范围的相应分区相同的物理地址,除了包含第二***地址的分区之外;将包含第二***地址的分区映射到一个或多个数据资源中的经分配的空间;以及将与包含第二***地址的分区相关联的数据复制到经分配的空间。
Claims (21)
1.一种数据处理***,包括:
第一存储器地址转换装置,能够由一个或多个计算设备访问并且被配置为将第一虚拟存储器地址范围中的一个或多个虚拟存储器地址转换为第一***地址范围中的一个或多个***地址;以及
第二存储器地址转换装置,包括:
数据资源分配电路,用于分配一个或多个数据资源;以及
***到物理地址转换器,被配置为将所述第一***地址范围中的一个或多个***地址转换为所述一个或多个数据资源的数据资源的物理地址空间中的物理地址,
其中,所述数据处理***响应于对所述第一虚拟存储器地址范围中的虚拟存储器地址的复制请求,来生成与所述第一虚拟存储器地址范围分离的第二虚拟存储器地址范围,并且
其中,在所述复制请求之后并且在所述第一虚拟存储器地址范围或所述第二虚拟存储器地址范围中的写入操作之前,所述第一存储器地址转换装置被配置为将所述第一虚拟存储器地址范围和所述第二虚拟存储器地址范围两者转换为所述第一***地址范围。
2.根据权利要求1所述的数据处理***,其中,所述第一***地址范围包括第一多个分区,并且其中,在对所述第一多个分区的第一分区中的***地址的写入操作之后,所述第二存储器地址转换装置被配置为:
对所述一个或多个数据资源的数据资源中的空间进行分配;
将与所述第一分区相关联的数据复制到经分配的空间;
对所述***到物理地址转换器进行更新以包括第二***地址范围,其中,所述第二***地址范围包括与所述第一多个分区相对应的第二多个分区并且包括与所述第一分区相对应的第二分区;
对所述***到物理地址转换器进行更新以将所述第一分区或所述第二分区映射到所述数据资源中的所述经分配的空间;以及
对所述***到物理地址转换器进行更新以将所述第二多个分区映射到与所述第一多个分区相同的物理地址,除了所述第一分区和相应的第二分区被映射到不同的物理地址之外。
3.根据权利要求2所述的数据处理***,其中,所述第一多个分区包括物理存储器页面。
4.根据权利要求2所述的数据处理***,其中,所述第一多个分区包括来自块存储设备的存储器块。
5.根据权利要求1所述的数据处理***,其中,所述第一存储器地址转换装置包括至少一个范围表缓冲器,用于将转换数据存储在一个或多个条目中,其中,存储在条目中的数据指示:
地址范围边界值,定义虚拟存储器地址空间中的各个虚拟存储器地址边界之间的虚拟存储器地址范围;
所述虚拟存储器地址范围中的虚拟存储器地址与***地址空间中的相应***地址之间的转换;以及
写时复制状态。
6.根据权利要求5所述的数据处理***,其中,所述转换由虚拟存储器地址和相应***地址之间的地址偏移量来指示。
7.根据权利要求5所述的数据处理***,其中,生成所述第二虚拟存储器地址范围包括:
对所述至少一个范围表缓冲器的范围表缓冲器中的第一条目进行检测,对于所述第一条目,由所述第一条目的转换数据定义的所述虚拟存储器地址范围包括所述复制请求的给定虚拟存储器地址;
将第二条目写入所述至少一个范围表缓冲器的范围表缓冲器,所述第二条目指示定义所述第二虚拟存储器地址范围的新地址范围边界值,并且所述第二条目指示所述第二虚拟存储器地址范围中的虚拟存储器地址与第一***地址范围中的相应***地址之间的新转换;以及
对所述第一条目和所述第二条目中的写时复制(CoW)状态指示符进行更新以指示共享的第一***地址范围。
8.根据权利要求7所述的数据处理***,其中,所述第一条目和所述第二条目被存储在相同的范围表缓冲器中。
9.根据权利要求7所述的数据处理***,其中,所述第一条目和所述第二条目被存储在不同的范围表缓冲器中。
10.一种非暂态计算机可读介质,包括表示根据权利要求1所述的数据处理***的硬件描述语言的指令。
11.一种非暂态计算机可读介质,包括表示根据权利要求1所述的数据处理***的网表。
12.一种用于在数据处理***中执行两层写时复制操作的方法,所述方法包括:
分配第一映射,所述第一映射在计算设备的虚拟存储器地址空间中的第一虚拟存储器地址范围与第一***地址范围之间进行映射,其中,所述第一***地址范围包括多个分区;
分配第二映射,所述第二映射在所述第一***地址范围与一个或多个数据资源中的第一物理地址之间进行映射;
在接收到对所述第一虚拟存储器地址范围中的虚拟存储器地址的复制请求时:在第二虚拟存储器地址范围与所述第一***地址范围之间分配第三映射;
在接收到将数据写入所述第一***地址范围中的第一***地址的请求时:
确定所述多个分区中包含所述第一***地址的第一分区;
对所述一个或多个数据资源中的空间进行分配以存储与所确定的第一分区相关联的数据的副本;
将与所述所确定的第一分区相关联的数据复制到经分配的空间;
在第二***地址范围与所述一个或多个数据资源中的所述第一物理地址之间分配第四映射,其中,所述第二***地址范围包括与所述第一分区相对应的第二分区;
当所述写入请求与所述第一虚拟存储器地址范围中的虚拟存储器地址相关联时:
对所述第一映射进行更新以将所述第一虚拟存储器地址范围映射到所述第二***地址范围;以及
对所述第二映射进行更新以将所述第一分区映射到所述一个或多个数据资源中的所述经分配的空间;
当所述写入请求与所述第二虚拟存储器地址范围中的虚拟存储器地址相关联时:
对所述第三映射进行更新以将所述第二虚拟存储器地址范围映射到所述第二***地址范围;以及
对所述第四映射进行更新以将所述第二分区映射到所述一个或多个数据资源中的所述经分配的空间;
将待写入的所述数据的虚拟地址转换为第二***地址;以及
将待写入的所述数据写入到所述第二***地址。
13.根据权利要求12所述的方法,其中,指示所述第一虚拟存储器地址范围与所述第一***地址范围之间的所述第一映射的转换数据被存储在范围表缓冲器的第一条目中,并且指示所述第二虚拟存储器地址范围与所述第一***地址范围之间的所述第二映射的转换数据被存储在范围表缓冲器的第二条目中,所述方法还包括:
在接收到对所述第一虚拟存储器地址范围中的虚拟存储器地址的复制请求时,在所述第一条目和所述第二条目中的每一个中设置写时复制(CoW)状态指示符以指示共享的***地址范围。
14.根据权利要求12所述的方法,其中,指示所述第一虚拟存储器地址范围与所述第一***地址范围之间的所述第一映射的转换数据被存储在范围表缓冲器的第一条目中,并且指示所述第二虚拟存储器地址范围与所述第一***地址范围之间的所述第二映射的转换数据被存储在范围表缓冲器的第二条目中,所述方法还包括:
在将所述数据写入到所述一个或多个数据资源中的所述经分配的空间时,清除所述第一条目和所述第二条目中的写时复制位以指示***地址范围不被共享。
15.根据权利要求12所述的方法,其中,指示所述第一虚拟存储器地址范围与所述第一***地址范围之间的所述第一映射的转换数据被存储在范围表缓冲器的第一条目中,其中,存储在条目中的数据指示:
地址范围边界值,定义所述第一虚拟存储器地址范围;
所述第一虚拟存储器地址范围中的虚拟存储器地址与所述第一***地址范围中的相应***地址之间的偏移量;以及
写时复制状态,指示所述第一虚拟存储器地址范围中的数据是否与第二虚拟存储器地址范围共享,
其中,在所述第二虚拟存储器地址范围与所述第一***地址范围之间分配所述第三映射包括:
将所述第一条目复制到第二条目;以及
更新至少一个范围边界值和所述偏移量,以使所述第二虚拟存储器地址范围中的虚拟存储器地址映射到第一***地址范围。
16.根据权利要求12所述的方法,还包括:通过与所述数据处理***的计算设备相关联的范围表缓冲器,将所述第一虚拟存储器地址范围中的虚拟存储器地址映射到所述第一***地址范围中的***地址。
17.根据权利要求12所述的方法,还包括:通过***到物理地址转换器,将所述第一***地址范围中的***地址映射到所述一个或多个数据资源中的第一物理地址。
18.一种用于在数据处理***中执行写入操作的方法,所述方法包括:
响应于向虚拟存储器地址范围中的第一虚拟存储器地址写入数据的请求:
在范围表缓冲器中定位与所述虚拟存储器地址范围相关联的条目;
当所定位的条目中的写时复制(CoW)状态指示符指示所述虚拟存储器地址范围不被共享时:
使用从所述虚拟存储器地址范围中的虚拟存储器地址到***地址的第一映射,将所述第一虚拟存储器地址转换为第一***地址范围中的第一***地址,其中,所述第一映射使用所述条目中的转换数据;以及
向所述数据处理***的存储器***发出针对所述第一***地址的写入指令;以及
当所述所定位的条目中的写时复制状态指示符指示所述虚拟存储器地址范围被共享时:
从所述存储器***请求对所述第一映射的更新,以提供将所述虚拟存储器地址范围中的虚拟存储器地址映射到第二***地址范围中的***地址的第二映射;
在范围表缓冲器中创建第二条目,所述第二条目包括描述所述第二映射的转换数据;
使用所述第二映射将所述第一虚拟存储器地址转换为第二***地址;以及
向所述数据处理***的所述存储器***发出针对所述第二***地址的写入指令。
19.根据权利要求18所述的方法,还包括:在向所述数据处理***的所述存储器***发出针对所述第二***地址的写入指令之后,更新所述写时复制状态指示符,以指示所述虚拟存储器地址范围不被共享。
20.根据权利要求18所述的方法,还包括:
响应于对所述第一映射的更新的请求,所述存储器***生成从所述第二***地址范围到一个或多个数据资源中的物理地址的映射。
21.根据权利要求20所述的方法,其中,所述第二***地址范围包括多个分区,并且其中,生成从所述第二***地址范围到所述一个或多个数据资源中的物理地址的所述映射包括:
在所述一个或多个数据资源中分配空间;
将所述第二***地址范围的所述分区映射到与所述第一***地址范围的相应分区相同的物理地址,除了包含所述第二***地址的分区之外;
将包含所述第二***地址的所述分区映射到所述一个或多个数据资源中的经分配的空间;以及
将与包含所述第二***地址的所述分区相关联的数据复制到所述经分配的空间。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/649,930 | 2017-07-14 | ||
US15/649,930 US10565126B2 (en) | 2017-07-14 | 2017-07-14 | Method and apparatus for two-layer copy-on-write |
PCT/GB2018/051901 WO2019012253A1 (en) | 2017-07-14 | 2018-07-05 | METHOD AND APPARATUS FOR COPYING ON DOUBLE LAYER WRITING |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110869916A CN110869916A (zh) | 2020-03-06 |
CN110869916B true CN110869916B (zh) | 2023-10-24 |
Family
ID=62948264
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880046462.3A Active CN110869916B (zh) | 2017-07-14 | 2018-07-05 | 用于两层写时复制的方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10565126B2 (zh) |
CN (1) | CN110869916B (zh) |
WO (1) | WO2019012253A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019117979A (ja) * | 2017-12-26 | 2019-07-18 | ファナック株式会社 | 制御装置 |
US20190286327A1 (en) * | 2018-03-15 | 2019-09-19 | Apple Inc. | Memory Objects |
US10725690B2 (en) * | 2018-05-18 | 2020-07-28 | Intel Corporation | Non-volatile memory cloning with hardware copy-on-write support |
US10649909B2 (en) * | 2018-06-14 | 2020-05-12 | Western Digital Technologies, Inc. | Logical block addressing range collision crawler |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104040518A (zh) * | 2011-11-30 | 2014-09-10 | 超威半导体公司 | 高效存储器和资源管理 |
Family Cites Families (127)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5576447A (en) | 1978-12-01 | 1980-06-09 | Fujitsu Ltd | Address control system for software simulation |
JPS6184754A (ja) | 1984-10-03 | 1986-04-30 | Hitachi Ltd | 拡張アドレス変換装置 |
GB2234613B (en) | 1989-08-03 | 1993-07-07 | Sun Microsystems Inc | Method and apparatus for switching context of state elements in a microprocessor |
GB2251102B (en) | 1990-12-21 | 1995-03-15 | Sun Microsystems Inc | Translation lookaside buffer |
US5577231A (en) | 1994-12-06 | 1996-11-19 | International Business Machines Corporation | Storage access authorization controls in a computer system using dynamic translation of large addresses |
US5752275A (en) | 1995-03-31 | 1998-05-12 | Intel Corporation | Translation look-aside buffer including a single page size translation unit |
US5867649A (en) | 1996-01-23 | 1999-02-02 | Multitude Corporation | Dance/multitude concurrent computation |
US6349355B1 (en) * | 1997-02-06 | 2002-02-19 | Microsoft Corporation | Sharing executable modules between user and kernel threads |
GB2325061B (en) | 1997-04-30 | 2001-06-06 | Advanced Risc Mach Ltd | Memory access protection |
US6075938A (en) * | 1997-06-10 | 2000-06-13 | The Board Of Trustees Of The Leland Stanford Junior University | Virtual machine monitors for scalable multiprocessors |
US6345241B1 (en) | 1999-02-19 | 2002-02-05 | International Business Machines Corporation | Method and apparatus for simulation of data in a virtual environment using a queued direct input-output device |
US6704873B1 (en) | 1999-07-30 | 2004-03-09 | Accenture Llp | Secure gateway interconnection in an e-commerce based environment |
US6715145B1 (en) | 1999-08-31 | 2004-03-30 | Accenture Llp | Processing pipeline in a base services pattern environment |
US6633963B1 (en) | 2000-03-31 | 2003-10-14 | Intel Corporation | Controlling access to multiple memory zones in an isolated execution environment |
US6822959B2 (en) | 2000-07-31 | 2004-11-23 | Mindspeed Technologies, Inc. | Enhancing performance by pre-fetching and caching data directly in a communication processor's register set |
US7222150B1 (en) | 2000-08-15 | 2007-05-22 | Ikadega, Inc. | Network server card and method for handling requests received via a network interface |
US6789156B1 (en) * | 2001-05-22 | 2004-09-07 | Vmware, Inc. | Content-based, transparent sharing of memory units |
US7181594B2 (en) | 2002-01-25 | 2007-02-20 | Intel Corporation | Context pipelines |
US6731288B2 (en) | 2002-03-01 | 2004-05-04 | 3Dlabs Inc., Ltd. | Graphics engine with isochronous context switching |
US7437724B2 (en) | 2002-04-03 | 2008-10-14 | Intel Corporation | Registers for data transfers |
US6895491B2 (en) | 2002-09-26 | 2005-05-17 | Hewlett-Packard Development Company, L.P. | Memory addressing for a virtual machine implementation on a computer processor supporting virtual hash-page-table searching |
US7073042B2 (en) | 2002-12-12 | 2006-07-04 | Intel Corporation | Reclaiming existing fields in address translation data structures to extend control over memory accesses |
US6911983B2 (en) * | 2003-03-12 | 2005-06-28 | Nvidia Corporation | Double-buffering of pixel data using copy-on-write semantics |
US7039756B2 (en) | 2003-04-28 | 2006-05-02 | Lsi Logic Corporation | Method for use of ternary CAM to implement software programmable cache policies |
GB0315504D0 (en) | 2003-07-02 | 2003-08-06 | Advanced Risc Mach Ltd | Coherent multi-processing system |
US7321965B2 (en) | 2003-08-28 | 2008-01-22 | Mips Technologies, Inc. | Integrated mechanism for suspension and deallocation of computational threads of execution in a processor |
DE60311462T2 (de) | 2003-09-19 | 2008-01-03 | Sun Microsystems, Inc., Santa Clara | Verfahren und Vorrichtung zur Protokollverarbeitung in Computersystemen unter Verwendung der Übersetzung von Speicheradressen |
US20050138515A1 (en) * | 2003-11-05 | 2005-06-23 | Hyduke Stanley M. | Method and apparatus for co-verification of digital designs |
US7536591B2 (en) * | 2003-11-17 | 2009-05-19 | Virginia Tech Intellectual Properties, Inc. | Transparent checkpointing and process migration in a distributed system |
US7725460B2 (en) | 2003-12-08 | 2010-05-25 | Ebay Inc. | Method and system for a transparent application of multiple queries across multiple data sources |
US7343603B1 (en) | 2003-12-22 | 2008-03-11 | Sun Microsystems, Inc. | System and method for performing incremental initialization of a master runtime system process |
US7668165B2 (en) | 2004-03-31 | 2010-02-23 | Intel Corporation | Hardware-based multi-threading for packet processing |
US7373466B1 (en) | 2004-04-07 | 2008-05-13 | Advanced Micro Devices, Inc. | Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer |
US20060253894A1 (en) | 2004-04-30 | 2006-11-09 | Peter Bookman | Mobility device platform |
US20050273571A1 (en) | 2004-06-02 | 2005-12-08 | Lyon Thomas L | Distributed virtual multiprocessor |
US7225300B1 (en) | 2004-09-15 | 2007-05-29 | Azul Systems, Inc | Duplicate snoop tags partitioned across multiple processor/cache chips in a multi-processor system |
US7512769B1 (en) | 2004-10-06 | 2009-03-31 | Hewlett-Packard Development Company, L.P. | Process migration |
US8667249B2 (en) | 2004-12-22 | 2014-03-04 | Intel Corporation | Systems and methods exchanging data between processors through concurrent shared memory |
US7389402B2 (en) | 2005-06-07 | 2008-06-17 | Advanced Micro Devices, Inc. | Microprocessor including a configurable translation lookaside buffer |
US7444540B2 (en) | 2005-06-21 | 2008-10-28 | Hewlett-Packard Development Company, L.P. | Memory mirroring apparatus and method |
US9274974B1 (en) * | 2005-10-21 | 2016-03-01 | Vmware, Inc. | Isolating data within a computer system using private shadow mappings |
US7653789B2 (en) | 2006-02-01 | 2010-01-26 | Sun Microsystems, Inc. | Multiprocessor system that supports both coherent and non-coherent memory accesses |
US7366847B2 (en) | 2006-02-06 | 2008-04-29 | Azul Systems, Inc. | Distributed cache coherence at scalable requestor filter pipes that accumulate invalidation acknowledgements from other requestor filter pipes using ordering messages from central snoop tag |
US7506095B2 (en) * | 2006-04-04 | 2009-03-17 | International Business Machines Corporation | System and method for providing execute-in-place functionality |
US7472253B1 (en) * | 2006-09-22 | 2008-12-30 | Sun Microsystems, Inc. | System and method for managing table lookaside buffer performance |
US7533358B2 (en) * | 2006-10-12 | 2009-05-12 | Cadence Design Systems, Inc. | Integrated sizing, layout, and extractor tool for circuit design |
US7840765B2 (en) * | 2006-10-31 | 2010-11-23 | Hewlett-Packard Development Company, L.P. | RDMA copy-on-write |
US20080270653A1 (en) | 2007-04-26 | 2008-10-30 | Balle Susanne M | Intelligent resource management in multiprocessor computer systems |
US8763115B2 (en) * | 2007-08-08 | 2014-06-24 | Vmware, Inc. | Impeding progress of malicious guest software |
US20090089537A1 (en) * | 2007-09-28 | 2009-04-02 | Sun Microsystems, Inc. | Apparatus and method for memory address translation across multiple nodes |
US20090113111A1 (en) * | 2007-10-30 | 2009-04-30 | Vmware, Inc. | Secure identification of execution contexts |
US9740637B2 (en) * | 2007-10-30 | 2017-08-22 | Vmware, Inc. | Cryptographic multi-shadowing with integrity verification |
US8966219B2 (en) * | 2007-10-30 | 2015-02-24 | International Business Machines Corporation | Address translation through an intermediate address space |
US8549254B2 (en) | 2007-12-31 | 2013-10-01 | Intel Corporation | Using a translation lookaside buffer in a multiple stage memory address translation structure to manage protected microcontexts |
US8677098B2 (en) | 2008-01-11 | 2014-03-18 | International Business Machines Corporation | Dynamic address translation with fetch protection |
US8176279B2 (en) * | 2008-02-25 | 2012-05-08 | International Business Machines Corporation | Managing use of storage by multiple pageable guests of a computing environment |
US8001283B2 (en) | 2008-03-12 | 2011-08-16 | Mips Technologies, Inc. | Efficient, scalable and high performance mechanism for handling IO requests |
WO2010097847A1 (ja) | 2009-02-24 | 2010-09-02 | パナソニック株式会社 | プロセッサ装置、マルチスレッドプロセッサ装置 |
US8386745B2 (en) | 2009-07-24 | 2013-02-26 | Advanced Micro Devices, Inc. | I/O memory management unit including multilevel address translation for I/O and computation offload |
US8549249B1 (en) | 2009-09-21 | 2013-10-01 | Tilera Corporation | Supporting secondary atomic operations using primary atomic operations |
US20110103391A1 (en) | 2009-10-30 | 2011-05-05 | Smooth-Stone, Inc. C/O Barry Evans | System and method for high-performance, low-power data center interconnect fabric |
US20110113410A1 (en) | 2009-11-05 | 2011-05-12 | Loen Larry W | Apparatus and Method for Simplified Microparallel Computation |
US20110145542A1 (en) | 2009-12-15 | 2011-06-16 | Qualcomm Incorporated | Apparatuses, Systems, and Methods for Reducing Translation Lookaside Buffer (TLB) Lookups |
US9081501B2 (en) | 2010-01-08 | 2015-07-14 | International Business Machines Corporation | Multi-petascale highly efficient parallel supercomputer |
US8296538B2 (en) | 2010-02-17 | 2012-10-23 | Arm Limited | Storing secure mode page table data in secure and non-secure regions of memory |
US8694755B1 (en) | 2010-03-17 | 2014-04-08 | Ambarella, Inc. | Virtual memory management for real-time embedded devices |
US8656397B2 (en) | 2010-03-30 | 2014-02-18 | Red Hat Israel, Ltd. | Migrating groups of threads across NUMA nodes based on remote page access frequency |
US9104544B1 (en) * | 2010-05-28 | 2015-08-11 | Bromium, Inc. | Mitigating eviction by maintaining mapping tables |
JP5488697B2 (ja) | 2010-08-30 | 2014-05-14 | 富士通株式会社 | マルチコアプロセッサシステム、同期制御方法、および同期制御プログラム |
EP2662771A4 (en) | 2011-01-07 | 2014-05-21 | Fujitsu Ltd | PLANNING PROCESS AND MULTI-CORE PROCESSOR SYSTEM |
US20120324148A1 (en) | 2011-06-19 | 2012-12-20 | Paul Roger Stonelake | System and method of protecting metadata from nand flash failures |
US9152570B2 (en) * | 2012-02-27 | 2015-10-06 | Vmware, Inc. | System and method for supporting finer-grained copy-on-write page sizes |
FR2989489B1 (fr) | 2012-04-16 | 2015-11-27 | Commissariat Energie Atomique | Systeme et procede de gestion d'une coherence de caches dans un reseau de processeurs munis de memoires caches. |
US9081706B2 (en) | 2012-05-10 | 2015-07-14 | Oracle International Corporation | Using a shared last-level TLB to reduce address-translation latency |
US9116793B2 (en) * | 2012-06-12 | 2015-08-25 | International Business Machines Corporation | Maintaining versions of data in solid state memory |
US9003163B2 (en) | 2012-06-12 | 2015-04-07 | Oracle International Corporation | Combining a remote TLB lookup and a subsequent cache miss into a single coherence operation |
US9330013B2 (en) | 2012-06-28 | 2016-05-03 | Industrial Technology Research Institute | Method of cloning data in a memory for a virtual machine, product of computer programs and computer system therewith |
US9235529B2 (en) * | 2012-08-02 | 2016-01-12 | Oracle International Corporation | Using broadcast-based TLB sharing to reduce address-translation latency in a shared-memory system with optical interconnect |
US9348757B2 (en) * | 2012-10-08 | 2016-05-24 | International Business Machines Corporation | System supporting multiple partitions with differing translation formats |
US8984255B2 (en) | 2012-12-21 | 2015-03-17 | Advanced Micro Devices, Inc. | Processing device with address translation probing and methods |
US9158704B2 (en) | 2013-01-24 | 2015-10-13 | Wisconsin Alumni Research Foundation | Virtual memory management system with reduced latency |
US9250901B2 (en) | 2013-03-12 | 2016-02-02 | Intel Corporation | Execution context swap between heterogeneous functional hardware units |
US9135183B2 (en) | 2013-03-13 | 2015-09-15 | Samsung Electronics Co., Ltd. | Multi-threaded memory management |
US9304920B2 (en) | 2013-05-23 | 2016-04-05 | Avago Technologies General Ip (Singapore) Pte. Ltd. | System and method for providing cache-aware lightweight producer consumer queues |
WO2014209394A1 (en) | 2013-06-28 | 2014-12-31 | Hewlett-Packard Development Company, L.P. | Fault tolerance for persistent main memory |
US9639476B2 (en) | 2013-09-26 | 2017-05-02 | Cavium, Inc. | Merged TLB structure for multiple sequential address translations |
US9645941B2 (en) | 2013-09-26 | 2017-05-09 | Cavium, Inc. | Collapsed address translation with multiple page sizes |
US9208103B2 (en) | 2013-09-26 | 2015-12-08 | Cavium, Inc. | Translation bypass in multi-stage address translation |
US9268694B2 (en) | 2013-09-26 | 2016-02-23 | Cavium, Inc. | Maintenance of cache and tags in a translation lookaside buffer |
US10242042B2 (en) * | 2013-10-31 | 2019-03-26 | Hewlett Packard Enterprise Development Lp | Copy-on-write update-triggered consistency |
CN104794123B (zh) | 2014-01-20 | 2018-07-27 | 阿里巴巴集团控股有限公司 | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 |
US9471226B2 (en) * | 2014-02-28 | 2016-10-18 | Red Hat Israel, Ltd. | Reverse copy on write for better cache utilization |
US9411644B2 (en) | 2014-03-07 | 2016-08-09 | Cavium, Inc. | Method and system for work scheduling in a multi-chip system |
US9436395B2 (en) * | 2014-03-14 | 2016-09-06 | Advanced Micro Devices, Inc. | Mechanisms to save user/kernel copy for cross device communications |
US10380183B2 (en) | 2014-04-03 | 2019-08-13 | International Business Machines Corporation | Building and querying hash tables on processors |
US9690714B1 (en) | 2014-04-07 | 2017-06-27 | Google Inc. | Multiple page-size translation lookaside buffer |
US9317443B2 (en) | 2014-04-17 | 2016-04-19 | International Business Machines Corporation | Managing translations across multiple contexts using a TLB with entries directed to multiple privilege levels and to multiple types of address spaces |
EP3140749B1 (en) | 2014-05-08 | 2021-01-13 | Micron Technology, INC. | In-memory lightweight coherency |
US9996386B2 (en) | 2014-07-23 | 2018-06-12 | Intel Corporation | Mid-thread pre-emption with software assisted context switch |
GB2528842B (en) | 2014-07-29 | 2021-06-02 | Advanced Risc Mach Ltd | A data processing apparatus, and a method of handling address translation within a data processing apparatus |
US9990289B2 (en) | 2014-09-19 | 2018-06-05 | Advanced Micro Devices, Inc. | System and method for repurposing dead cache blocks |
US9928094B2 (en) | 2014-11-25 | 2018-03-27 | Microsoft Technology Licensing, Llc | Hardware accelerated virtual context switching |
WO2016118607A1 (en) * | 2015-01-20 | 2016-07-28 | Ultrata Llc | Distributed index for fault tolerant object memory fabric |
US9582312B1 (en) | 2015-02-04 | 2017-02-28 | Amazon Technologies, Inc. | Execution context trace for asynchronous tasks |
US9940287B2 (en) | 2015-03-27 | 2018-04-10 | Intel Corporation | Pooled memory address translation |
US20160283259A1 (en) | 2015-03-28 | 2016-09-29 | Mcafee, Inc. | Management of agentless virtual machines via security virtual appliance |
MA41915A (fr) | 2015-04-07 | 2018-02-13 | Benjamin Gittins | Unités de requête de transfert de mémoire programmable |
US9886210B2 (en) * | 2015-06-09 | 2018-02-06 | Ultrata, Llc | Infinite memory fabric hardware implementation with router |
US10114958B2 (en) | 2015-06-16 | 2018-10-30 | Microsoft Technology Licensing, Llc | Protected regions |
KR102473665B1 (ko) * | 2015-07-28 | 2022-12-02 | 삼성전자주식회사 | 스토리지 디바이스 및 스토리지 가상화 시스템 |
JP2017037370A (ja) | 2015-08-06 | 2017-02-16 | 富士通株式会社 | 計算機、プロセス制御方法およびプロセス制御プログラム |
GB2543745B (en) | 2015-10-15 | 2018-07-04 | Advanced Risc Mach Ltd | An apparatus and method for operating a virtually indexed physically tagged cache |
US9785373B2 (en) * | 2015-11-25 | 2017-10-10 | International Business Machines Corporation | Optimizing fine grained context addressability in highly dimensional environments using TCAM hybrid memory and storage architectures |
US9886398B2 (en) * | 2015-12-01 | 2018-02-06 | International Business Machines Corporation | Implicit sharing in storage management |
US20170161194A1 (en) | 2015-12-02 | 2017-06-08 | Advanced Micro Devices, Inc. | Page-based prefetching triggered by tlb activity |
US10037227B2 (en) | 2015-12-17 | 2018-07-31 | Intel Corporation | Systems, methods and devices for work placement on processor cores |
US9792210B2 (en) | 2015-12-22 | 2017-10-17 | Advanced Micro Devices, Inc. | Region probe filter for distributed memory system |
GB2547242B (en) | 2016-02-11 | 2018-05-23 | Advanced Risc Mach Ltd | Graphics processing |
US10185731B2 (en) | 2016-03-31 | 2019-01-22 | Arm Limited | Indexing entries of a storage structure shared between multiple threads |
US10061712B2 (en) * | 2016-05-10 | 2018-08-28 | Oracle International Corporation | Virtual memory page mapping overlays |
US10241924B2 (en) | 2016-07-18 | 2019-03-26 | International Business Machines Corporation | Reducing over-purging of structures associated with address translation using an array of tags |
US9836402B1 (en) * | 2016-07-22 | 2017-12-05 | Red Hat, Inc. | Guest ordering of host file system writes |
US9886449B1 (en) * | 2016-07-22 | 2018-02-06 | Red Hat, Inc. | Delayed allocation for data object creation |
US9785557B1 (en) | 2016-10-25 | 2017-10-10 | International Business Machines Corporation | Translation entry invalidation in a multithreaded data processing system |
US10552212B2 (en) | 2016-11-28 | 2020-02-04 | Arm Limited | Data processing |
US10671426B2 (en) | 2016-11-28 | 2020-06-02 | Arm Limited | Data processing |
US10423446B2 (en) | 2016-11-28 | 2019-09-24 | Arm Limited | Data processing |
-
2017
- 2017-07-14 US US15/649,930 patent/US10565126B2/en active Active
-
2018
- 2018-07-05 WO PCT/GB2018/051901 patent/WO2019012253A1/en active Application Filing
- 2018-07-05 CN CN201880046462.3A patent/CN110869916B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104040518A (zh) * | 2011-11-30 | 2014-09-10 | 超威半导体公司 | 高效存储器和资源管理 |
Non-Patent Citations (2)
Title |
---|
Jayneel Gandhi,et al.RANGE TRANSLATIONS FOR FAST VIRTUAL MEMORY.《IEEE Computer Society》.2016,正文第118-126页. * |
赵亚辉. ARM平台上实现Linux内核虚拟机技术研究.《中国优秀硕士学位论文全文数据库》.2012,I137-15. * |
Also Published As
Publication number | Publication date |
---|---|
CN110869916A (zh) | 2020-03-06 |
US10565126B2 (en) | 2020-02-18 |
WO2019012253A1 (en) | 2019-01-17 |
US20190018790A1 (en) | 2019-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110869913B (zh) | 用于数据处理网络的存储器*** | |
CN110892387B (zh) | 存储器节点控制器 | |
KR101944876B1 (ko) | 파일 액세스 방법 및 장치 및 스토리지 디바이스 | |
CN110892381B (zh) | 用于在数据处理***中进行快速上下文克隆的方法和装置 | |
CN110869916B (zh) | 用于两层写时复制的方法和装置 | |
KR101457825B1 (ko) | 마이크로 페이지 테이블을 구현하기 위한 장치, 방법, 및 시스템 | |
US10733110B1 (en) | Collecting statistics for persistent memory | |
EP2895958B1 (en) | Address mapping | |
US20080235477A1 (en) | Coherent data mover | |
CN109154907B (zh) | 在输入-输出存储器管理单元中使用多个存储器元件来执行虚拟地址到物理地址转译 | |
TW201729105A (zh) | 混合模式存取固態硬碟驅動器之方法及裝置 | |
EP2472412B1 (en) | Explicitly regioned memory organization in a network element | |
US20130227219A1 (en) | Processor, information processing apparatus, and arithmetic method | |
JP2019057151A (ja) | メモリシステムおよび制御方法 | |
US20170228164A1 (en) | User-level instruction for memory locality determination | |
WO2014120226A1 (en) | Mapping mechanism for large shared address spaces | |
WO2019127135A1 (zh) | 文件页表管理技术 | |
KR20180041037A (ko) | 멀티 코어 솔리드 스테이트 드라이브의 공유 분산 메모리 관리 방법 | |
CN113010452A (zh) | 一种高效且支持QoS的虚拟内存架构 | |
KR20210043001A (ko) | 하이브리드 메모리 시스템 인터페이스 | |
CN114041126A (zh) | 用于直接内存访问的方法及*** | |
JP2022121655A (ja) | メモリシステムおよび制御方法 | |
JP2023021450A (ja) | メモリシステム | |
CN117093132A (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 |