CN102473138A - 具有用于页面错误处理的闪存的扩展主存储器层次结构 - Google Patents

具有用于页面错误处理的闪存的扩展主存储器层次结构 Download PDF

Info

Publication number
CN102473138A
CN102473138A CN2010800359419A CN201080035941A CN102473138A CN 102473138 A CN102473138 A CN 102473138A CN 2010800359419 A CN2010800359419 A CN 2010800359419A CN 201080035941 A CN201080035941 A CN 201080035941A CN 102473138 A CN102473138 A CN 102473138A
Authority
CN
China
Prior art keywords
page
ram
flash memory
memory
stored
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
CN2010800359419A
Other languages
English (en)
Other versions
CN102473138B (zh
Inventor
S·卡皮尔
R·C·赫瑟林顿
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.)
Oracle America Inc
Original Assignee
Oracle America Inc
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 Oracle America Inc filed Critical Oracle America Inc
Publication of CN102473138A publication Critical patent/CN102473138A/zh
Application granted granted Critical
Publication of CN102473138B publication Critical patent/CN102473138B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

公开了带有主存储器层次结构中的闪存的计算机系统。在一个实施例中,该计算机系统包括至少一个处理器、耦合到该至少一个处理器的存储器管理单元,以及耦合到该存储器管理单元的随机访问存储器(RAM)。该计算机系统还可包括耦合到该存储器管理单元的闪存,其中,该计算机系统被配置成在操作期间至少将多个页面的子集存储在所述闪存中。响应于页面错误,所述存储器管理单元可以在不调用I/O驱动程序的情况下确定与所述页面错误相关联的被请求的页面是否存储在所述闪存中,并进一步被配置成,如果所述页面存储在所述闪存中,则将所述页面传输到RAM中。

Description

具有用于页面错误处理的闪存的扩展主存储器层次结构
技术领域
本发明涉及计算机系统,更具体而言,涉及计算机系统中的存储器组织。
背景技术
由于计算机系统中的存储空间是有限的而对存储空间的需求是无限的,因此,可以使用各种技术来扩展给定计算机系统中的主存储器的视尺寸(apparent size)。一个这样的技术是使用虚拟存储器,其中,主存储器可以利用磁盘上的存储空间来增大。此外,某些虚拟存储器方案可以使用被称为“页面”的覆盖,其中,可以将地址空间分区为相等大小的块。在计算机系统的操作期间,根据需要,这些块可以在磁盘存储系统和主存储器之间交换。某些虚拟存储器方案还可使用段,其中,地址空间的块被分区为不同大小的块。
在使用虚拟存储器的计算机系统中,可能需要将虚拟存储器地址映射到物理存储器地址。当作出对访问的请求时,请求可以按虚拟存储器地址发出。然后,可以将虚拟存储器地址转换成物理地址,以便确定存储了被请求的信息的物理位置。可以通过使用页面表或者转换存储器缓冲器(TSB)来跟踪在虚拟地址和物理地址之间提供映射(即,地址转换)的信息。页面表或TSB可以是存储在主存储器中的包括虚拟到物理地址转换的数据结构。
被称为转换后援缓冲器(TLB)的更高级别的缓存也可以被用来存储虚拟到物理地址转换。当处理器和存储器请求一起发出虚拟地址时,可以检索TLB以确定相关联的地址转换是否存储在其中。如果地址转换存储在TLB中,被称为“TLB命中”(并且,所请求的数据没有存储在缓存中),则处理器可以从由地址转换所指示的物理地址访问数据。如果地址转换没有存储在TLB中(“TLB丢失”),那么,处理器可以访问页面表或主存储器中的TSB,并搜索该转换。
如果对页面表或TSB的搜索找到有效地址转换(指示相对应的页面驻留在主存储器中),则处理器可以重复存储器请求,访问所指示的物理地址处的数据。另一方面,如果对页面表或TSB的搜索没有找到有效地址(指示页面不驻留在主存储器中),则可以生成被称为页面错误的异常。响应于页面错误,可以将包含所请求的数据的页面从磁盘存储器加载到主存储器中(并且,还可将所请求的数据加载到驻留在主存储器和处理器的执行核之间的至少一个缓存中)。从磁盘存储系统访问虚拟存储器页面可包括断言对处理器的中断以及调用I/O驱动程序软件,以便访问磁盘存储系统,更一般而言,计算机系统的I/O层次结构。在页面已经从磁盘存储系统加载到主存储器之后,处理器可以重复请求,作为重复的请求的结果,至少从主存储器访问数据(如果不从较高级别的缓存访问的话)。
因此,由页面错误所产生的丢失损失(miss penalty)可能具有比在没有页面错误发生的情况下从存储器(或较高级别的缓存)访问数据大得多的延迟。近年来,固态驱动器(SSD)用于缩小与丢失损失相关联的一些延迟。SSD可以使用闪存或可能比典型的磁盘存储器快得多的其它类型的存储器。可以将SSD置于I/O层次结构中,在发生页面错误之后,可以调用用于访问SSD的驱动程序软件。然而,由于SSD访问可以比磁盘存储器更快,因此,可以缩小由页面错误所产生的丢失损失。
发明内容
公开了一种计算机系统。在一个实施例中,该计算机系统包括至少一个处理器、耦合到该至少一个处理器的存储器管理单元、以及耦合到该存储器管理单元的随机访问存储器(RAM)。该计算机系统还可包括耦合到该存储器管理单元的闪存,其中,该计算机系统被配置成在操作期间至少将多个页面的子集存储在所述闪存中。响应于页面错误,所述存储器管理单元可以在不调用I/O驱动程序的情况下确定与所述页面错误相关联的被请求的页面是否存储在所述闪存中,并进一步被配置成,如果所述页面存储在所述闪存中,则将所述页面传输到RAM中。
还预期用于操作计算机系统的方法。在一个实施例中,该方法包括启动存储器请求以便访问数据并确定包含数据的页面是否存储在耦合到存储器管理单元的随机访问存储器(RAM)中的处理器。如果包含所请求的数据的页面存储在RAM中,则可以将所请求的数据提供到处理器。如果包含所请求的数据的页面没有存储在RAM中,则可在不调用I/O驱动程序的情况下(以及在某些情况下,在不生成中断的情况下)就包含数据的页面是否存储在闪存中作出判断。如果该页面存储在闪存中,则可以将所述页面传输到RAM并可以重复请求。
一般而言,其中闪存被合并到主存储器层次结构中的系统以及对该系统进行操作的方法也是可以预期的。闪存可以与可以被用来实现I/O层次结构中的固态盘(SSD)(或I/O层次结构中的任何设备)的闪存分开。对于具有多个页面的虚拟地址空间,页面中的某些页面(如果不是全部的话)可以存储在闪存中,根据需要,某些页面存储在主存储器中。当包含由处理器或执行核被请求的数据的页面没有存储在主存储器中从而导致页面错误时,存储器管理单元可以通过从闪存中检索特定页面来作出响应,无需调用I/O驱动程序来从存储器访问页面,此外,也无需生成对处理器或执行核的中断。由于存储器管理单元可以在不调用访问I/O层次结构中的存储器的I/O驱动程序的情况下或在不生成中断的情况下处理页面错误,因此,可以显著降低与页面错误相关联的性能损失,即使系统使用SSD而不是传统的硬盘驱动器。
附图说明
在阅读下列详细描述并参考附图之后,本发明的其它方面将变得显而易见,其中:
图1是示出计算机系统的一个实施例的分页(paging)方案的图示;
图2是计算机系统的一个实施例的框图;
图3是计算机系统的另一个实施例的框图;
图4是示出地址转换数据结构的一个实施例中的条目的图示;
图5是存储器管理单元的一个实施例的框图;
图6是多处理器计算机系统的一个实施例的框图;
图7是片上系统的一个实施例的框图;以及
图8是用于处理计算机系统中的页面错误的方法的一个实施例的流程图。
尽管本发明可以具有各种修改和替代形式,但是,此处将通过图中的示例显示特定实施例,并进行详细描述。然而,应了解,图和详细描述不打算将本发明限于所公开的特定形式,相反地,可以涵盖如所附权利要求所定义的本发明的精神和范围内的所有修改、等效内容和替代方案。
具体实施方式
作为注释,对如此处所使用的术语“数据”的引用旨在包括任何类型的二进制信息。例如,数据可以引用在指令的执行中被用作操作数的数据,从指令的执行所生成的结果数据,和/或指令本身。术语“数据”还可包含用于指示其它类型的二进制信息的属性的各种类型的标记、比特等等。一般而言,如此处所使用的术语“数据”可以是指可以在计算机或其它类型的数字系统中被存储、传输或被操作的任何类型的二进制信息。
现在转向图1,示出计算机系统的一个实施例的分页方案的图示。在所示出的实施例中,用于增大主存储器4的虚拟地址空间2被示为具有多个页面,即,页面0-页面15。虚拟地址空间2的页面数目可以在一个实施例与另一个实施例之间不同,并可以只受包含虚拟地址空间的存储器的大小限制。此外,在一个实施例中的虚拟地址空间2中的页面的大小还可与另一个实施例的不同。示例性页面大小可包括(但不仅限于)1024个字节、2048字节、4096字节等等的页面。一般而言,给定页面的大小可以是合适作为给定实施例中的页面大小的任何选择数量的字节。用于存储虚拟地址空间的页面的存储器可以是硬盘存储设备、固态盘(SSD)存储设备,或其它合适的存储设备。
在对计算机系统的操作过程中,各种页面可以换进换出主存储器4。由于主存储器4具有比其中存储了虚拟地址空间2的存储设备更少的存储容量,这可能是需要的。当对于其中实现了存储器4的计算机系统的操作需要来自给定页面的数据时,该页面可以被移到主存储器4中,替换可以被从主存储器4中清除的另一个页面。主存储器4的大小在一个实施例与另一个实施例之间不同,如此,这里所示出的实施例(被示为存储4个页面)应该被视为示例性的。
在所示出的实施例中,闪存存储器3位于虚拟地址空间2和主存储器4之间。闪存存储器3可以是主存储器层次结构的一部分,该层次结构还包括主存储器4,还可以进一步与I/O层次结构分开,该I/O层次结构包括其中包含了虚拟地址空间2的存储设备。如图1的实施例所示,闪存存储器3也可以被用来存储页面。在某些实施例中,闪存存储器3可以被用来存储虚拟地址空间2的页面的子集。然而,其中闪存存储器3有足够的存储容量以存储虚拟地址空间2的所有页面的实施例也是可以的,并且是可以预期的。由于闪存存储器3存储页面,因此,页面错误(即,当与存储器请求相关联的页面不存储在主存储器4中时)可能导致被请求的页面从闪存3而不是虚拟地址空间2被访问。例如,如果所示出的实施例中的页面4与存储器请求相关联,则它可以从闪存存储器3(代替从其中包含了虚拟地址空间2的存储设备)交换到主存储器4中。
如将在下文中更详细地解释的,响应于页面错误而从闪存存储器3访问页面可能显著降低与此相关联的性能损失。由于所示出的实施例中的闪存存储器3是主存储器层次结构的一部分而不是I/O层次结构的一部分(可能如硬盘驱动器或SSD),因此,传输与存储器请求相关联的页面的时间量可以显著降低。
现有技术的计算机系统可以通过在磁盘存储设备和主存储器之间交换页面来处理页面错误。这可能又需要处理器服务于要被调用的中断和I/O驱动程序,以便允许对磁盘存储设备进行访问。然而,由于所示出的实施例中的闪存存储器3是主存储器层次结构的一部分而不是I/O层次结构的一部分,因此,对它的访问可以在不会生成中断或导致I/O驱动程序被调用的情况下执行(如访问I/O层次结构中的磁盘存储器可能需要的)。如此,可以处理某些(如果不是全部的话)页面错误,而不生成中断和/或调用I/O驱动程序,如访问I/O层次结构中的存储设备可能需要的。这样的配置可以显著降低与页面错误相关联的性能损失,而又可以增强计算机系统性能。
图2是计算机系统的一个实施例的框图。在所示出的实施例中,计算机系统20包括耦合到主存储器层次结构和I/O层次结构的处理器21。此实施例中的主存储器层次结构包括存储器管理单元(MMU)24、随机访问存储器(RAM)26以及闪存25。此实施例中的I/O层次结构包括I/O控制器22和存储单元23。RAM 26可以是可以用于主存储器的任何类型的RAM,包括但不仅限于DRAM(动态RAM)、DDR RAM(双倍数据速率RAM)、SRAM(静态RAM)等等。
处理器21可以是多个不同的处理器体系结构中的一个。这些处理器体系结构包括但不仅限于SPARC、Power体系结构、X86、Alpha等等。在某些实施例中,处理器21可以是单核处理器,而在其它实施例中,处理器21可以是多核处理器。在多核实施例中,处理器21可以是对称多核处理器或不对称多核处理器。
在所示出的实施例中,处理器21包括用于存储地址转换的高速缓冲存储器,转换后援缓冲器(TLB)27。TLB 27可以存储若干个不同的条目,这些条目提供(虚拟地址空间的)虚拟地址和物理地址(在此实施例中,主存储器或RAM 26中的实际物理地址)之间的映射。响应于存储器访问请求,可以搜索TLB 27,以查找对应于被请求的数据的虚拟到物理地址转换信息。如果在TLB 27中找到了相对应的转换信息,并且数据没有被缓存,则可以从RAM 26中的所指示的物理地址来访问数据。如果没有找到相对应的地址转换信息,但是,随后从RAM 26访问了数据,则可以将对应于数据的地址转换信息加载到TLB 27中。
在所示出的实施例中,处理器21包括缓存层次结构29,该层次结构29可包括一个或多个缓存存储器。这样的缓存存储器可以被用来存储频繁地被访问的数据和/或指令,以便增强处理器21的性能。缓存的层次结构可包括高级别L1缓存、在层次结构上比L1缓存低一些的L2缓存等等。一般而言,较高级别的缓存可以比较低级别的缓存提供更快的访问,虽然较高级别的缓存还可小于较低级别的缓存。在某些实施例中,处理器21还可包括L0缓存,该L0缓存可以比L1缓存小一些,更快一些(而L1缓存又可以比L2缓存小一些,更快一些,依次类推)。各种级别的缓存可包括指令缓存(用于存储指令的缓存存储器)、数据缓存(用于存储数据(例如,操作数)的缓存存储器)、以及可以存储数据和指令两者的统一缓存。例如,在一个实施例中,处理器21可包括L1缓存(其是统一缓存)以及单独用于数据和指令的L2缓存。
当处理器21的执行核断言对数据的请求时,可以搜索各种级别的缓存层次结构29,以查找被请求的数据。在某些实施例中,可以彼此同时地搜索缓存层次结构29的各种缓存存储器。如果在缓存层次结构29中的高速缓冲存储器的其中一个级别中找到被请求的数据,那么,可以将数据提供到执行核,而不访问主存储器。还可响应于存储器请求来搜索TLB 27。可以与搜索缓存层次结构的各种缓存存储器同时执行对TLB 27的搜索。可另选地,可以响应于确定所请求的数据没有被存储在缓存中,在对缓存层次结构29的缓存存储器的搜索之后执行对TLB 27的搜索。如果所请求的数据没有被存储在缓存层次结构29的缓存中,但是,在TLB 27中找到了对应于所请求的数据的地址转换信息,则处理器21可以使用地址转换信息来访问RAM 26,以定位数据。然后,可以将数据提供到发出请求的执行核,还可将数据加载到缓存层次结构29的一个或多个缓存存储器。
在所示出的实施例中,MMU 24被配置成执行涉及闪存25和RAM 26的各种控制功能。这些控制功能可包括(但不仅限于)控制处理器21和闪存25或RAM 26之间的数据的流。MMU 24还可控制闪存25和RAM 26之间的数据的迁移,并执行其它功能,包括涉及对页面错误的处理的那些功能,如下面将更详细地讨论的。在此实施例中,MMU 24还耦合到I/O控制器22,以启用DMA(直接存储器访问)功能。
RAM 26可以被用作计算机系统20的主存储器。更具体而言,RAM 26可以提供用于与正在被处理器21的一个或多个执行核执行的程序相关联的数据的通用存储器。这样的程序可包括操作系统软件、应用程序,及可能对计算机系统20的用户不可见的其它程序。存储在RAM 26中的数据可以被组织成页面,如上文参考图1所讨论的。
RAM 26也可以被用来存储地址转换数据结构(ATDS)28。在一个实施例中,ATDS 28可以是转换存储器缓冲器(TSB)。TSB可以是存储地址转换的连续数据结构,并被以与直接映射缓存类似的方式来组织。此外,当被实现为TSB时,ATDS 28可以充当到TLB 27的第二级别的缓存。在另一实施例中,ATDS 28可以是页面表。页面表可以是类似于TSB的数据结构,即,其可以存储被存储在RAM 26中的页面的地址转换信息。页面表还可存储关于在给定时间不驻留在存储器中的页面的信息。
如果处理器21的执行核断言对未存储在缓存层次结构29中的缓存中并且不与存储在TLB 27中的条目相关联的数据的请求,则可以访问ATDS 28,以确定所请求的数据是否存储在RAM 26中,如果是,存储在哪里(即,在什么地址)。更具体而言,可以访问ATDS 28,以确定包含数据的页面是否驻留在存储器中。附加信息(例如,偏移信息)可以被用来确定存储了所请求的数据的页面内的位置(从而确定存储器中的物理地址)。在确定此位置之后,所请求的数据可以被转发到处理器21的发出请求的执行单元,还可存储在缓存层次结构29的一个或多个缓存中。
闪存25也可以被用来存储页面。在所示出的实施例中,闪存25的存储容量可以大于RAM 26的存储容量。因此,闪存25可以被用来存储在某一时间驻留在RAM 26中的所有页面的副本,以及未驻留在RAM 26中的若干个页面。在某些情况下,如果闪存25具有足够的存储容量,则它可以存储计算机系统20的虚拟地址空间的所有页面。在其它实施例中,闪存25可以至少存储虚拟地址空间的多个页面的子集。
由于闪存25可以被用来存储存储器的页面,因此,在页面错误的情况下,它可以被MMU 24访问。当由处理器21的执行核启动的对数据的请求没有在缓存层次结构29的任何缓存存储器中找到数据或在RAM 26中找到包含数据的页面时,可能会发生页面错误。如果发生页面错误并且包含所请求的数据的页面位于闪存25中,则MMU24可以将页面从闪存25加载到RAM 26中。在必要时,MMU 24还可从RAM 26中清除另一个页面,以便为包含所请求的数据的页面释放必要的存储空间。如此,与在主存储器层次结构中不包括闪存的计算机系统不同,可以在不断言中断或调用I/O驱动程序的情况下处理页面错误(在此实施例中,由MMU 24处理),以便访问包含所请求的数据的页面,如从存储器(如存储单元23)检索页面可能需要的。因此,在不需要对存储单元23访问的情况下MMU 24从闪存25将包含所请求的数据的页面加载到RAM 26的能力可以显著降低可以与页面错误相关联的性能损失。
如上文所指示的,计算机系统20包括I/O层次结构,该I/O层次结构又可以包括I/O控制器22和存储单元23。在所示出的实施例中,I/O控制器22可以是在处理器21和一个或多个外围总线之间提供接口的设备。至少一个外围总线221可以被用来将存储单元23耦合到I/O控制器22。外围总线221可以是若干种不同类型的总线中的一种,包括ATA(高级技术附件)总线、SATA(串行ATA)总线、通用串行总线(USB)、IEEE 1394(即“火线”)总线、或任何其它合适的类型的总线。在各实施例中,I/O控制器22可以被配置成为这些类型的总线中的某些或全部提供接口,如此,可以被用来为可以耦合到这些总线的各种外围设备提供接口。此外,I/O控制器22还可为这里没有明确或隐含提及的其它总线提供接口,如此,为可以附接到这样的总线的外围设备也提供接口。
存储单元23可以是若干种不同类型的存储设备中的一种。在一个实施例中,存储单元23可以是硬盘驱动器。在另一实施例中,存储单元23可以是包括闪存的SSD。存储单元23还可以RAID(廉价驱动器冗余阵列)配置来实现。一般而言,存储单元23可以是可以被用来为计算机系统20提供大容量存储器的任何类型的存储单元,包括计算机系统20不操作和/或不被接通电源的时间。
在所示出的实施例中,对存储在存储单元23中的数据的访问可能需要对驱动程序软件的调用。由于页面错误对存储单元23中存储的数据的访问还可与中断相关联。因此,如果发生页面错误,并且在闪存25或者RAM 26中没有找到包含所请求的数据的页面,那么,可以向处理器21断言中断,并可以调用I/O驱动程序,以便允许页面能够被从存储单元23加载。如此处所使用的,术语“I/O驱动程序”可以是指可以被用来通过I/O接口来访问耦合到I/O总线的设备的任何类型的驱动程序软件或类似的软件例程。就延迟而言,断言中断和调用I/O驱动程序在对页面错误的处理中会添加大量的开销。然而,可以通过将页面存储在闪存25,为至少某些页面错误清除此性能损失,这可以使得MMU 24能够对页面错误进行处理,如上文所讨论的。
在所示出的实施例中,计算机系统20还包括服务处理器62,该服务处理器62可以执行不直接涉及由处理器21对数据的处理和指令的执行的各种功能。下面将提供关于这些功能中的某些功能的附加细节。
图3是计算机系统的另一个实施例的框图。在此特定实施例中,计算机系统30使用包括集成的存储器控制器集线器或北桥芯片33和I/O控制器集线器,或南桥芯片32的系统体系结构。在所示出的实施例中,北桥芯片33直接耦合到处理器21,而南桥芯片32通过北桥芯片33耦合到处理器21。在此特定实施例中,主存储器层次结构包括北桥芯片33(该北桥芯片33包括MMU 24)、闪存25和RAM 26。此实施例中的I/O层次结构包括南桥芯片32和存储单元23。
如上文所指示的,此实施例中的北桥芯片33包括存储器管理单元24,如此,可以提供与如上文参考图2所示出的实施例所讨论的相同存储器控制功能。虽然没有明确示出,但是,北桥芯片33还可耦合到视频卡或其它类型的视频处理单元,如此,可以提供显示器到处理器21的接口。南桥芯片32可以提供类似于上文参考图2所讨论的I/O控制器22的功能的功能。此外,南桥芯片32还可以为若干种不同类型的外围总线提供总线接口,包括(但不仅限于)还可耦合到图2的I/O控制器22的上文所讨论的总线中的任何一种。
在所示出的实施例中,可以以类似于上文所讨论的方式的方式来处理页面错误。如果包含所请求的数据的页面没有被存储在RAM 26中(从而可能生成页面错误),则MMU 24可以从闪存25中加载页面,如果它被存储在其中的话。如果确定包含所请求的数据的页面没有被存储在闪存25中,则可以从存储单元23加载页面。类似于上面的实施例,从存储单元23检索数据可能需要断言中断并调用驱动程序软件,以便彼此进行通信。因此,将页面存储在闪存25中可以通过避免对于至少某些页面错误访问存储单元23的必要性来增强计算机系统30的性能。
现在转向图4,示出了地址转换数据结构的一个实施例的条目的图。如上文所指示的,上文所讨论的计算机系统20和30中的RAM 26可以在操作过程中存储ATDS 28。如进一步指示的,ATDS 28可以是具有提供涉及虚拟地址空间的页面的信息的多个条目的页面表或TSB。在所示出的实施例中,ATDS条目40(下面简称“条目40”)是ATDS 28的一个实施例的示例性条目,并可包括关于给定页面的各个方面的各种信息的多个不同的字段。
在所示出的实施例中,字段41、42以及43中的每一个提供关于相对应的页面的存储位置的信息。字段41(“M”)可以指示相对应的页面是否驻留在主存储器中(动态RAM,例如,诸如RAM 26)。当置位时(例如,逻辑1),字段41可以指示相对应的页面驻留在主存储器中。每当给定页面被从闪存或从存储单元(例如,从存储单元23)加载到主存储器时,都可以置位该页面的字段41(例如,从逻辑0切换到逻辑1)。当从主存储器中清空给定页面时,字段41可以复位(例如,从逻辑1切换到逻辑0)。
字段42(“F”)可以指示相对应的页面是否驻留在闪存中(例如,闪存25)。当置位时,字段42可以指示对应于存储器的页面驻留在闪存中。每当从诸如存储单元23之类的存储单元加载相对应的页面时,可以置位字段42(例如,从逻辑0切换到逻辑1)。每当从闪存中清除相对应的页面时,字段42可以复位(例如,从逻辑1切换到逻辑0)。由于从存储单元加载的页面可以被写入到主存储器和闪存两者中,因此,字段41和42中的比特都可以同时处于置位状态(例如,两个逻辑1)。
字段43(“I”)当置位时(例如,逻辑1)可以指示相对应的页面不驻留在主存储器或闪存中。在某些实施例中,可以去除字段43,由于还可基于字段41和42来提供其中提供的信息(例如,如果两个字段都没有被置位,那么,相对应的页面不驻留在闪存或主存储器中)。每当从主存储器和闪存两者中清除页面时,可以置位存储在字段43中的比特(在包括此字段的实施例中)。更具体而言,当相对应的页面被加载到主存储器中,闪存中,或两者中时,字段42都可以被复位(即,从逻辑1切换到逻辑0)。每当相对应的页面已经从主存储器和闪存两者中清除,从而不再驻留在任何一个中时,都可以置位字段42(例如,从逻辑0切换到逻辑1)。在一个实施例中,当处理器21请求数据并且在对应于包含数据的页面的条目40中字段43处于置位状态(或者字段41和42两者都处于复位状态)时,可以断言中断,从而导致对I/O驱动程序的调用,以便可以从存储单元23中读取页面。
当处理器21请求数据时,如果数据没有被缓存在缓存层次结构内,则MMU 24可以在RAM 26中搜索ATDS 28,以确定包含所请求的数据的页面是否被存储在存储器中。在此特定实施例中,MMU 24可以按虚拟地址进行搜索,因为处理器21可以提供对应于所请求的数据的虚拟地址信息。在一个实施例中,此实施例中的虚拟地址字段,字段44,可以只包括虚拟地址的一部分。例如,由于此实施例中的条目40对应于存储器的页面,因此,字段44可只包括一定数量的对页面内的所有虚拟地址共用的最高有效位。
如果找到对应于页面的条目40,则MMU 24可以检查字段41、42以及43。如果置位了字段41中的比特,则MMU 24可以从字段45读取物理地址。物理地址可以指示RAM 26中的相连地址空间的页面相对应的条目40所在的第一地址。除提供虚拟地址信息之外,处理器21还可在断言对数据的请求时向MMU 24提供偏移信息。可以将偏移信息与存储在字段45中的物理地址信息相结合,以生成与请求相关联的数据字的完整的物理地址。在生成所请求的数据字的物理地址之后,MMU 24可以从RAM 26访问数据,并将它提供到处理器21。
应该注意,此处所讨论的虚拟和物理地址字段(分别是字段44和45)是示例性的,如此,以上的讨论没有限制。各种用于映射和转换虚拟和物理地址的方案都是可以并且是可预期的。因此,条目40的可能的实施例的变化旨在包含任何合适的地址转换方案,以便提供将虚拟地址映射到相对应的物理地址的信息。
如果由MMU 24确定字段41没有置位(从而指示数据没有被存储在RAM 26中,如此,页面错误),可以检查字段42,以确定对应于条目40的页面是否被存储在闪存25中。如果置位了字段42,指示包含所请求的数据的页面被存储在闪存25中,则MMU 24可以定位闪存25中的页面,并将它加载到RAM 26中。MMU 24还可向处理器21提供发生了页面错误的指示。另外,MMU 24还可向处理器21提供指示包含所请求的数据的页面加载到RAM 26中的过程已经完成。在某些实施例中,MMU 24可以从页面中检索所请求的数据,并将它提供到处理器21,以便它可以被加载到缓存层次结构29的一个或多个缓存存储器中。
在MMU 24从闪存25加载页面之后,处理器21可以重复请求。然后,所请求的数据可以被从缓存存储器(如果数据被加载到缓存中的话)或者从RAM 26(如果数据没有被加载到缓存中的话)提供到处理器21的执行核。
值得注意的是,字段41和42两者都可以同时处于置位状态,因为存储在闪存25中的页面还可被存储在RAM 26中。因此,MMU 24可以被配置成在字段41被置位的情况下忽略字段42的内容,因为此字段当置位时指示,包含所请求的数据的页面已经在RAM 26中,如此,不需要被从闪存25加载。
在所示出的实施例中,当字段41或者42的比特都没有被置位时,条目40确定页面不驻留在RAM 26或闪存25中。在某些实施例中,MMU可以通过检查字段43来进行此判断,当相对应的页面不驻留在RAM 26或者闪存25中时可以置位字段43中的比特。可以在不使用字段43的情况下实现条目40的其它实施例,因为字段41和42可以提供足够的关于对应于条目的页面是否存储在RAM 26和/或闪存25中的信息。如果MMU 24确定字段41或42中的比特都没有被置位,则可以访问页面,并且可以从存储单元23将页面加载到RAM 26和闪存25中。如上文所指示的,从存储单元23访问页面可能需要断言对处理器21的中断,并调用I/O驱动程序软件,以便通过外围总线221来访问存储单元23。
在各实施例中,条目40可包括信息的一个或多个附加的字段(这里被示为单个字段,“其它”字段46)。这样的附加信息可包括(但不仅限于)与页面相关联的处理器ID,指示页面内任何数据是否被缓存的字段,指示页面被加载到RAM 26时的信息,指示对相对应的页面中所包含的一个或多个数据字的最近访问的信息等等。
在某些实施例中,存储在由字段46所表示的一个或多个字段中的信息可以被用来确定在必要时可以清除哪些页面以释放存储器空间,以将另一个页面加载到RAM 26中。例如,如果条目40中的这样的信息指示包含在其中的相对应的页面或数据与关键系统过程相关联,则该页面可以被保留在RAM 26中,而在必要时可以清除与非关键过程相关联的页面以释放存储器空间。在另一示例中,如果这样的信息指示相对于其它页面中的数据最近没有访问给定页面内的数据,则如果另一个页面需要存储器空间的话,该页面可以是从RAM 26中被清除的候选。一般而言,各种信息可以被存储在由字段46所表示的字段中。可另选地,在条目40中没有提供这样的额外的字段的实施例也是可以并且是可预期的。
存储在由字段46所表示的一个或多个字段中的信息也可以被用来指示页面是否是“脏的”,即,在被从存储单元加载之后已经修改的页面。例如,包括指示主存储器中的相对应的页面是否是脏的字段,以及指示闪存中的相对应的页面的字段是否脏的实施例也是可以并且是可预期的。此信息也可以被用来确定从主存储器中或从闪存中清除某些页面。例如,如果需要腾出空间以将新页面写入到主存储器中,则可以从主存储器中清除脏页面,并将其写回闪存中,如果空间准许的话。类似地,如果在闪存中需要存储空间,则可以从其中清除脏页面,并将其写回到磁盘存储器中。在某些情况下,如果没有空间将脏页面从主存储器写回到闪存中(例如,当可以从闪存中清除的所有页面都是脏的时),则可以将脏页面从主存储器写入到磁盘存储器中(带有某些中间缓冲是可以的)。如此,在各实施例中,MMU 24可以访问条目40中的指示相对应的页面是否被存储在主存储器中并且是否是脏的,和/或是否存储在闪存中并且是否是脏的字段,并可以使用此信息来确定页面是否要清除的候选,以便为另一个页面腾出空间。
图5是存储器管理单元的一个实施例的框图。在所示出的实施例中,MMU 24包括主机接口52,该主机接口52可以耦合到I/O控制器(例如,图2的I/O控制器22)、处理器(例如,图2的处理器21)以及服务处理器(例如,图2的服务处理器62)。主机接口52可以提供用于从这些设备往返于MMU 24的通信的路由。带有MMU 24的各种功能单元还可耦合到主机接口单元52。在此实施例中,这些功能单元包括RAM控制器54、闪存控制器55、磨损级别表56、闪存缓存57,以及迁移缓冲器59。在MMU 24的其它实施例中,可以以不同的配置来实现这些各种功能单元。此外,由MMU 24所提供的功能在除这里所示出的实施例以外的实施例中可以不同。
此实施例中的RAM控制器54可以耦合到主存储器(例如,图2的RAM 26),并可以提供与读和写操作而访问存储器相关联的若干个不同的功能。在写入操作期间,数据可以通过RAM控制器54传达到RAM 26。类似地,在读操作期间,数据可以通过RAM控制器54从RAM 26传输。RAM控制器54还可被配置成断言读写RAM 26的操作可能需要的各种控制信号(例如,允许读出、允许写入、行地址选通、列地址选通)。
在所示出的实施例中,RAM控制器54可以被配置成访问RAM26,以便搜索ATDS 28的条目40。响应于由MMU 24从处理器21接收到的对数据的请求,RAM控制器54可以搜索ATDS 28的条目40,以查找对应于包含所请求的数据的页面的条目。在一个实施例中,当断言存储器请求时,处理器21可以提供虚拟地址信息。RAM控制器54可以接收此虚拟地址信息,并可以基于其来对ATDS 28执行搜索。在某些情况下,ATDS 28可包括其中实现了ATDS 28的计算机系统所使用的整个虚拟地址空间的每一个页面的条目。
一旦在ATDS 28中找到了对应于包含所请求的数据的页面的条目,RAM控制器54就可以确定相对应的页面所驻留的位置。RAM控制器54可以通过检查条目40的字段41、42以及43中的一个或多个来进行这样的判断。在一个实施例中,RAM控制器54可以首先读取字段41,该字段41可以被用来指示包含所请求的数据的页面是否驻留在RAM 26中。如果字段41中的比特指示页面驻留在RAM 26中,则RAM控制器54可以通过定位页面内的所请求的一个或多个数据字以及通过向处理器21提供一个或多个数据字来作出响应。在某些实施例中,在从MMU 24接收到数据之后,处理器21可以将一个或多个数据字存储在缓存层次结构29中的一个或多个缓存存储器中。
如果没有置位字段41中的比特,则RAM控制器54可以检查字段43。如果置位了字段42中的比特,指示相对应的页面位于闪存25中,则RAM控制器54可以向闪存控制器55提供指示或命令,以便导致从闪存25中检索页面,以便加载到RAM 26中。
如上文参考图4所讨论的,字段43可以指示,当置位了其中的比特时,对应于条目40的页面不驻留在RAM 26或者闪存25中。如上文进一步指示的,一些实施例可以省去字段43,相反使用字段41和42来确定包含所请求的数据的页面没有存储在RAM 26或闪存25中。因此,如果RAM控制器54确定相对应的页面不驻留在RAM 26或闪存25中,则可以向处理器21、I/O控制器22或者两者提供指示。所提供的指示可以调用中断,从而导致处理器21开始执行中断例程。处理器21还可以通过使I/O驱动程序被调用来进一步作出响应。在调用中断和I/O驱动程序之后,被请求的页面可以通过RAM控制器54从存储设备23加载到RAM 26中,并通过闪存控制器55加载到闪存25中。
在某些实施例中,RAM控制器54可以被配置成并行地读取条目40的字段41、42以及43,这可以提供关于相对应的页面可以存储在哪里的更快的判断。在其它实施例中,这些字段可以被以各种序列读取(例如,可以首先读取字段41,接下来是字段42)。此外,如上文所指示的,字段43不一定存在于所有实施例中。
在其中处理器21包括TLB(例如,图2的TLB 27)的实施例中,可能不需要搜索ATDS 28中的条目。在这样的实施例中,对存储器请求的断言可以导致对TLB 27的搜索。如果在TLB 27中找到了相对应的地址转换信息(即,TLB命中),则可以向RAM控制器54提供信息,以便允许相对应的页面被定位,而无需访问ATDS 28。在一个实施例中,TLB 27中的命中可以导致RAM控制器54接收到物理地址信息,以允许相对应的页面在存储器中定位,以及附加的寻址信息(例如,偏移),以便允许所请求的数据字被定位,并提供到处理器21。在其它实施例中,可以将物理和虚拟地址信息两者都提供到RAM控制器54。例如,可以在这样的实施例中使用虚拟地址信息,以便允许RAM控制器54验证物理地址是正确的。
如果RAM控制器54确定包含所请求的数据的页面没有存储在RAM 26中(即,页面错误)而是存储在闪存25中,则它可以将信息提供到闪存控制器55。闪存控制器55可以通过在闪存25中定位被请求的页面,并提供该页面以由RAM控制器55加载到RAM 26中,来对接收到此指示作出响应。在此特定实施例中,MMU 24包括迁移缓冲器59,该迁移缓冲器可以提供在RAM 26、闪存25和存储单元23之间传输的页面的临时存储。所示出的实施例中的迁移缓冲器59是在RAM 26和闪存25之间分层次的缓冲存储器,并可以使用任何合适的存储技术(DRAM、SRAM等等)来实现。作为替代方案,一些实施例可包括MMU 24外部的,并在RAM 26和闪存25之间分层次的快速的RAM缓冲器。在任一种情况下,迁移缓冲器59(或者替换的RAM缓冲器)可以是被用来存储从RAM 26丢失的页面的后备存储。这样的页面可包括将响应于页面错误被加载到RAM 26中的页面,和/或将从RAM 26和/或闪存25中清除的页面。
在图5中所示出的实施例中,闪存控制器55可以首先将被请求的页面(例如,触发页面错误的页面)加载到迁移缓冲器59中。在完成将被请求的页面的加载到迁移缓冲器59之后,闪存控制器55还可将该事件的指示提供到RAM控制器54。可另选地,在某些实施例中,闪存控制器55可以将被请求的页面直接提供到RAM控制器54,然后,该RAM控制器54可以将页面加载到RAM 26中。在某些实施例中,迁移缓冲器59可以使用可以允许相对快速地写入和读取的若干种不同类型的RAM技术中的一种来实现。
其中直接加载(页面被从闪存控制器55直接提供到RAM控制器54)和缓冲加载(页面首先被提供到迁移缓冲器59,随后提供到RAM控制器54)也是可以和预期的实施例也是可以和预期的。在这样的实施例中,RAM控制器54和闪存控制器55可以执行彼此握手的操作,以确定对于页面加载的给定实例执行哪一种类型的加载。
一般而言,迁移缓冲器59(或者替换的RAM缓冲器)可以被用来临时存储将要换入换出RAM 26的页面。如上文所指示的,从闪存25加载到RAM 26的页面可以临时存储在迁移缓冲器59中。类似地,RAM控制器54还可将要从RAM 26中清除的页面存储在迁移缓冲器59中。当缓冲正在被清除的页面时,RAM控制器54可以将页面存储到迁移缓冲器59中,当页面的存储完成时,向闪存控制器55提供指示。然后,闪存控制器55可以从迁移缓冲器59中检索页面,并将它加载到闪存25中。
将从RAM 26中清除的页面写回到闪存25可以确保页面包括直到它被从RAM 26中清除之前发生的任何更改/更新。在需要时,这样的经修改的页面还可被写回存储单元23,虽然这样的写入不必干扰对RAM 26或闪存25的其它访问。涉及页面在RAM 26、闪存25,以及存储单元23之间的传输的这些各种操作中的每一种操作都可以通过可以由迁移缓冲器59所提供的临时存储来帮助。例如,如果当RAM控制器54正在从RAM 26中清除页面时闪存控制器55正忙,则它可以将页面加载到迁移缓冲器59中,并继续其它操作而不是必须等待闪存控制器55变得可用于接收页面。
闪存控制器55还可被配置成从闪存25中清除页面,并可以开始将这样的页面写回到存储单元23。由于在某些实施例中闪存25可能不足以存储虚拟地址空间的所有页面,因此,闪存控制器54可以被配置成确定何时应该从闪存25中清除页面,以腾出空间,以便将其它页面存储在其中。闪存控制器54可以基于各种因素,如最近最少访问的那些(即,最近最少使用的),最近最少加载的,或用于确定何时可以从闪存25中清除页面的任何其它合适的因素,来就哪些页面(如果有的话)要从闪存中清除作出判断。
闪存控制器55还可被配置成防止某些特定页面被从闪存25中清除。例如,闪存25可以被用来存储包含闪存25的计算机系统的引导映像。因此,闪存控制器55可以防止这些页面被从闪存25中清除,以便有更快的引导。存储涉及系统关键过程的指令和数据的页面还可被闪存控制器55防止从闪存25中清除。然而,虽然可以防止某些页面被从闪存25中清除,但是,闪存控制器55可以被配置成允许这些页面根据需要而更新。例如,如果操作系统更新改变与引导映像相关联的页面,则闪存控制器55可以通过将整个页面替换为已更新的版本或通过替换已更新的数据使此页面被更新。
在所示出的实施例中,MMU 24(例如,通过RAM控制器54)还可确定存储在RAM 26或闪存25中的页面是否是脏的。这样的就给定页面是否是脏的判断还可作为在考虑哪些页面要被清除以便为要加载的新页面腾出空间时的考虑因素。例如,考虑其中页面错误需要从RAM 26中清除页面以便可以从存储单元23中加载另一个页面的情况。MMU 24可以确定在发生页面错误时存储在RAM 26中的任何页面是否是脏的。如果MMU 24确定在发生页面错误时RAM 26中的一个或多个页面是脏的,并且需要腾出空间以存储触发页面错误的页面,那么,MMU 24可以通过从RAM 26中清除脏页面来腾出必要的空间。当在RAM 26中存在多个脏页面时,MMU 24可以使用附加信息来确定要从其中清除哪些脏页面。例如,MMU 24可以确定存储在RAM 26中的多个脏页面中的哪些是最近最少使用的。因此,MMU 24可以通过选择清空若干个脏页面中的脏的并且最近最少使用的(即,最近最少访问的)页面来腾出RAM 26中的空间。当从RAM 26中清空给定页面时,MMU 24还可访问ATDS 28,并复位“M”字段(例如,图4中的字段41),以便指示页面不再驻留在主存储器中。
存储的页面是否是脏的确定也可以被用作确定何时要从闪存25中清除页面的条件。当发生页面错误时,可能需要在闪存25中腾出空间。更具体而言,可能需要腾出空间,以便触发页面错误的页面可以被加载到闪存25中以及RAM 26中。在某些实施例中,当从RAM 26清空页面时(还可由于页面错误而发生),可以将该页面写回闪存25。如果这些情况中的任何一种需要按顺序腾出空间,则MMU 24(通过闪存控制器55)可以确定存储在闪存25中的哪些(如果有的话)页面是脏的。如果存储在闪存25中的一个或多个页面是脏的,则MMU24可以选定这些页面中的一个页面以从闪存25中清除,以便为存储另一个页面腾出空间。如果存储在闪存25中的一个以上的页面是脏的,则MMU 24可以使用附加条件来确定要清除哪些脏页面。例如,MMU 24可以使用如上文关于RAM 26所讨论的相同条件,即,从多个脏页面中选择最近最少使用的页面从闪存25中清除。然后,MMU24可以从闪存25中清除此页面,而将页面写回到存储单元23。当从闪存25中清除页面时,MMU 24还可访问ATDS 28中的相对应的条目40,复位“F”字段(图4中的字段42),以指示页面不再驻留在闪存25中。如果相对应的条目40还包括“I”字段(图4中的字段43),并且页面没有存储在RAM 26中,MMU 24还可置位“I”字段(指示该条目引用一个无效页面,即,不存储在RAM 26或者闪存25中的页面)。如果字段40还包括指示相对应的页面是否脏的字段,则在页面已经被写回存储单元23之后MMU 24可以复位此字段。
在上文所讨论的实施例中,将脏页面写回到存储单元23可以是事件驱动的过程。即,在上文所讨论的实施例中,响应于页面错误或可能需要腾出闪存25和/或RAM 26内的存储空间的其它事件,可以将脏页面写回到存储单元23。然而,在某些实施例中,将脏页面从闪存25(或从RAM 26)写回到存储单元23可以周期性地执行。即,即使存储在闪存25或RAM 26中的脏页面不与页面错误相关联(没有被清除或将要清除),可以周期性地将页面的副本写回到存储单元23,以便确保RAM 26、闪存25以及存储单元23之间的一致性。每当将脏页面写回到存储单元23并且在闪存25和存储单元23(以及RAM 26,如果页面也存储在其中的话)之间实现了一致性时,条目40中的任何脏比特或指示可以被复位,以指示页面不再是脏的。各实施例还可组合事件驱动的将脏页面写回到存储单元23以及周期性地将脏页面写回到存储单元23。
在所示出的实施例中,MMU 24包括磨损级别表56,该磨损级别表56可以被用来存储关于页面被存储在闪存25中的哪里的历史信息。由于闪存单元可能没有无限的寿命,因此,可能需要确保如此选择的存储位置,以便跨整个闪存25的单元的磨损相对均匀地磨损。在计算机系统的各实施例中(例如,分别是图2和3的计算机系统20和30),服务处理器62可以被配置成基于存储在磨损表56上的信息来确定闪存25中的可以存储页面的位置。闪存控制器55可以被配置成每当向闪存25写入页面时都更新磨损级别表56。服务处理器62可以访问磨损级别表以确定闪存25中的可以写入页面的下一个位置,并可以将此信息提供到闪存控制器55。以此方式,闪存25的磨损可以相对均匀地分布。其中闪存25是以闪存技术实现的实施例也是可以并且是可预期的,该技术允许足够数量的写入,以至于可能不需要使用磨损级别表56或实现任何磨损级别例程。可以通过闪存技术的进步,使得这样的实施例成为可能,闪存技术可以允许有越来越多的数量的写入周期。
在某些实施例中,上文所讨论的与磨损级别表56相关联的功能可以由主机处理器(例如,图2的处理器21)连同只读存储器(ROM)来执行。ROM可以是各种类型的ROM,如EEPROM(电可擦只读存储器),并可以存储诸如存储在磨损级别表56中的信息之类的信息。当确定在闪存25中的什么位置要存储新页面(即,从耦合到I/O总线的存储单元加载的页面)时,主机处理器可以访问ROM。一般而言,在所示出的实施例中由服务处理器62执行的任何功能,在其它实施例中,还可由主机处理器21(可以通过其它组件(例如,如前所述的ROM)来增大)来执行。
MMU 24还可包括闪存缓存57,该闪存缓存57可以被用来缓存对页面的处理所涉及的某些信息。在一个实施例中,闪存缓存57可以被用来存储最近从闪存25中清除的页面。在另一实施例中,闪存缓存57可以被配置成存储来自被请求的页面的数据,或其它信息。一般而言,闪存缓存57可以被用来缓存可以对涉及闪存控制器55的操作有用的任何信息。
现在转向图6,示出了多处理器计算机系统的一个实施例的框图。在所示出的实施例中,计算机系统60包括四个处理器21,每一个处理器21耦合到相对应的MMU 24。每一个MMU 24耦合到闪存25和RAM 26的相对应的实例。计算机系统60还包括共享的I/O控制器22、共享磁盘存储单元23以及共享服务处理器62。
计算机系统60可以被配置成以类似于上文对于图2和3的计算机系统20和30所描述的方式的方式来处理页面错误。更具体而言,每一个闪存25都可以被用来存储可以响应于页面错误而被加载到RAM 26中的页面,无需导致中断,调用I/O驱动程序,或从磁盘存储器23来访问页面。
在某些实施例中,RAM 26和闪存25的每一个实例相对于它们的相对应的MMU 24和处理器21是专用(private)的(即,不可被其它的处理器21和MMU 24访问)。在其它实施例中,每一个RAM26和闪存25可以被共享,如此,可被任何一个处理器21或MMU 24访问。一些实施例还可使用每一个RAM 26和每一个闪存25的一部分被共享而一部分是专用的方案。
在所示出的实施例中,如上文所描述的,服务处理器62可以提供涉及闪存中的每一个中的磨损级别的功能。此外,服务处理器62还可以执行协调各种处理器21、MMU 24等等之间的通信所需的其它功能。
图7是片上系统的一个实施例的框图。所示出的实施例中的片上系统(SOC)70包括耦合到MMU 24的执行核72。在所示出的实施例中,SOC 70还包括RAM 26和闪存25。在某些实施例中,SOC 70还可包括用于耦合到附加的RAM和附加的闪存(未示出)的接口以提供外加存储器容量。
在所示出的实施例中,SOC 70还包括可以耦合到存储单元(片外)的I/O控制器22。SOC 70可以被配置成以类似于上文所描述的各种计算机系统的方式来处理页面错误。更具体而言,SOC 70可以通过从闪存25(如果可用)来访问页面,来处理页面错误,而无需调用中断或I/O驱动程序。此外,在所示出的实施例中,只有在页面不驻留在闪存25或者RAM 26的情况下才从片外存储单元访问页面。
在所示出的实施例中,SOC 70还可包括服务处理器单元62。服务处理器单元可以执行包括上文关于闪存25的磨损级别所讨论的那些功能的功能。
尽管上文描述了计算机系统和片上系统的各实施例,但是,应该注意,本公开不限于这些实施例。本公开可以适用于其中如上文所讨论的那样执行页面错误处理的任何系统,其中闪存可以被包括在主存储器层次结构中的任何系统,其中为处理这样的页面错误可以避免中断和对I/O驱动程序的调用的任何系统。
现在转向图8,示出了用于处理计算机系统中的页面错误的一个实施例的流程图。在所示出的实施例中,方法80从存储器请求开始(框802)。存储器请求可以是访问可被处理器的执行核所使用的数据的访问的请求(例如,操作数的数据、指令或其它类型的信息)。
响应于对请求的断言,可以搜索缓存层次结构的一个或多个缓存。例如,处理器可以搜索L1缓存以查找数据,接下来是搜索L2缓存等等。如果所请求的数据位于缓存中的一个中(框804,是),那么,可以将所请求的数据提供到执行核(框816)。在某些情况下,还可将数据写入到较高级别的缓存中,如果在较低级别的缓存中找到数据的话。例如,如果响应于对数据的请求对L1和L2的搜索在L2缓存中找到数据,则可以将数据写入到L1缓存中,连同满足请求。
如果在缓存层次结构的任何缓存中没有找到数据(框804,否),那么,可以就包含所请求的数据的页面是否存储在主存储器中进行判断(框806)。主存储器可以是随机访问存储器,诸如如上文所讨论的RAM 26。确定包含所请求的数据的页面是否驻留在主存储器中可包括访问诸如页面表或TSB之类的数据结构,该数据结构可以包含条目(例如,诸如上文所讨论的条目40),每一个条目对应于虚拟地址空间的页面。这些条目可以分别包括指示相对应的页面是否驻留在主存储器中的信息。如果条目中的信息指示包含所请求的数据的页面存储在存储器中(框808,是),那么,可以将数据提供到处理器(并由此,提供到其中的执行单元),并且数据还可被缓存(框816)。
如果对应于包含所请求的数据的页面的条目指示页面不驻留在存储器中(808,否),则发生页面错误,并且MMU(例如,如上文所讨论的MMU 24)可以确定页面是否驻留在闪存(框810)中。在一个实施例中,这种判断可以通过读取数据结构中的用于确定页面是否驻留在主存储器中的相同条目来作出。例如,如上文在图4的讨论中所指示的,条目可包括指示特定页面是否驻留在RAM、闪存或两者都不驻留的字段。因此,MMU可以检查对应于页面的条目,以确定页面是否处于闪存中。
如果确定页面位于闪存中(框812,是),则可以将页面传输到主存储器(框814)。在页面的传输完成之后,可以向处理器发送指示,并可以重复存储器请求(通过返回到框802)。由于页面已经被加载到主存储器中,可以执行对存储器请求的重复,而不会生成另一个页面错误。在某些实施例中,还可与提供页面向主存储器的传输完成的指示的同时向处理器传达请求。如此,当重复请求时,可以从缓存而不是从主存储器访问所请求的数据。
由于在此处所描述的各实施例中闪存处于主存储器层次结构中(如此,不是包括,例如,磁盘存储器的I/O层次结构的一部分),因此,可以实现当页面驻留在闪存中时对页面错误的处理,而无需断言中断或调用I/O驱动程序。可能需要在主存储器层次结构中不包括闪存的计算机系统来断言处理器中断并调用I/O驱动程序,以便从存储单元访问导致错误的页面,从而处理页面错误。
如果MMU确定被请求的页面不驻留在闪存中(框812,否),那么,可能需要从存储单元(例如,在上文所讨论的实施例中,存储单元23)对页面的访问。响应于确定页面不存储在闪存中,可以断言中断(框818)。响应于接收到中断,处理器可以调用I/O驱动程序(框820),这可能是与耦合到I/O总线的存储单元进行通信所必需的。如上文所指示的,耦合到I/O总线的存储单元可以是磁盘存储单元,SSD(可以使用闪存),或可以提供大容量存储的任何其它类型的合适的设备。在通过I/O总线与存储单元建立通信之后,页面可以被从存储单元传输到闪存和主存储器(框822)。当传输完成时,可以向处理器发送指示,并可以重复请求(框802)。在某些情况下,可以与将所请求的数据写入到缓存的同时发送指示,从而允许通过访问缓存来满足请求的重试。如果数据没有被缓存,则请求的重试可能导致从主存储器访问数据。
如上文所指示的,当断言中断并调用I/O驱动程序以允许通过I/O总线与这样的存储单元进行通信时,可能会产生严重的性能损失。如上文所描述的,由从存储单元对页面的访问所产生的延迟可以比由从主存储器层次结构中的闪存对页面的访问所产生的延迟大一个或多个量级。因此,提供主存储器层次结构中的闪存并在其中存储虚拟地址空间的页面可以显著降低从至少某些页面错误所产生的性能损失。一般而言,实现较大的闪存的存储容量可以降低访问磁盘存储器所需的页面错误的数目。在某些实施例中,如果闪存具有足够的存储整个虚拟地址空间的容量,则可以通过访问主存储器层次结构中的闪存来处理所有页面错误。
除提供处理页面错误的能力而无需访问I/O层次结构中的存储单元之外,实现主存储器层次结构中的闪存还可允许主存储器占用空间缩小。当主存储器是使用DRAM实现的时,它可以消耗大量的电能,还可生成大量的热量。然而,在常规计算机系统中,尽管如此,可能需要使用大量的DRAM来实现主存储器,以便避免由页面错误所产生的性能损失。然而,如上文所描述的使用主存储器层次结构中的闪存可以允许对页面错误的处理以与常规计算机系统相比低得多的性能损失来执行。由于通过从主存储器层次结构中的闪存(而不是从耦合到I/O总线的存储单元)来访问页面可以更快地处理页面错误,因此,DRAM的量可以减少,而不会造成性能的显著降低。此外,减少系统中的DRAM的量还可减少其功率消耗和发热。
虽然上文所讨论的各实施例使用了包括分页的虚拟寻址方案,但是,基于分段虚拟地址空间而执行类似的功能的实施例也是可以并且是可预期的。因此,上文所讨论的系统和方法的变化可以被解释为包含分页式存储器系统以及分段式存储器系统。
虽然是参考特定实施例来描述本发明的,但是,可以理解,实施例是说明性的,本发明范围不如此受限制。对所描述的实施例的任何变化、修改、添加以及改善都是可能的。这些变化、修改、添加以及改善可以在如随后的权利要求书所详述的本发明的范围内。

Claims (20)

1.一种计算机系统,包括:
至少一个处理器;
耦合到所述至少一个处理器的存储器管理单元;
耦合到所述存储器管理单元的随机访问存储器(RAM);以及
耦合到所述存储器管理单元的闪存,其中,所述计算机系统被配置成在操作期间至少将多个页面的子集存储在所述闪存中;
其中,响应于页面错误,所述存储器管理单元被配置成在不调用I/O驱动程序的情况下确定与所述页面错误相关联的被请求的页面是否存储在所述闪存中,并进一步被配置成,如果所述页面存储在所述闪存中,则将所述页面传输到RAM中。
2.如权利要求1所述的计算机系统,其中,所述计算机系统被配置成将数据结构存储在所述RAM中,所述数据结构包括多个页面中的哪些页面存储在所述RAM中的指示。
3.如权利要求2所述的计算机系统,其中,所述数据结构包括与所述多个页面中的每一个页面相对应的条目,其中,在每一个条目中,第一比特用于指示所述多个页面中的相对应的页面是否存储在所述RAM中,而第二比特用于指示所述多个页面中的所述相对应的页面是否存储在所述闪存中。
4.如权利要求2所述的计算机系统,其中,所述数据结构包括,对于所述多个页面的所述子集的每一个页面,指示存储在所述RAM中的页面的物理地址和存储在所述RAM中的所述页面的虚拟地址之间的映射的地址转换信息。
5.如权利要求4所述的计算机系统,其中,所述处理器包括被配置成存储地址转换信息的转换后援缓冲器(TLB),并且其中,所述计算机系统被配置成,在TLB丢失之后,将相对应的地址转换信息从所述数据结构加载到TLB中。
6.如权利要求1所述的计算机系统,其中,所述计算机系统进一步被配置成:如果所述被请求的页面没有存储在所述RAM或所述闪存中,则调用I/O驱动程序,并从存储驱动器访问所述页面。
7.如权利要求5所述的计算机系统,其中,所述存储驱动器耦合到I/O总线。
8.如权利要求1所述的计算机系统,其中,所述计算机系统包括耦合到所述存储器管理单元的服务处理器,其中,所述服务处理器被配置成确定所述闪存中的用于存储所述子集中的每一个页面的位置。
9.如权利要求7所述的计算机系统,其中,所述服务处理器被配置成基于页面以前存储在所述闪存中的位置的历史来确定所述闪存中的用于存储页面的位置。
10.如权利要求1所述的计算机系统,其中,所述计算机系统包括:
多个处理器;
多个存储器管理单元,其中,所述多个存储器管理单元中的每一个耦合到所述多个处理器中的相对应的处理器,并进一步耦合到所述多个存储器管理单元中的至少一个其它存储器管理单元;
多个RAM排,其中,所述多个存储器管理单元中的每一个耦合到所述多个RAM排中的一个或多个相对应的RAM排;以及
多个闪存排,其中,所述多个存储器管理单元中的每一个耦合到所述多个闪存排中的一个或多个相对应的闪存排。
11.一种方法,包括:
处理器启动存储器请求以便访问数据;
确定包含所述数据的页面是否存储在耦合到存储器管理单元的随机访问存储器(RAM)中;
如果包含所述数据的所述页面存储在RAM中,则将所述数据提供到所述处理器;
如果包含所述数据的所述页面没有存储在RAM中,则在不调用I/O驱动程序的情况下,确定包含所述数据的所述页面是否存储在耦合到所述存储器管理单元的闪存中;以及
如果包含所述数据的所述页面存储在闪存中,则将所述页面传输到RAM并重复所述存储器请求。
12.如权利要求11所述的方法,其中,还包括访问存储在RAM中的数据结构,以确定包含所述数据的所述页面是否存储在RAM中。
13.如权利要求12所述的方法,其中,对于包括包含所述数据的所述页面的多个页面中的每一个页面,所述数据结构包括第一比特和第二比特,所述第一比特用于指示所述多个页面中的给定页面是否存储在所述RAM中,而所述第二比特用于指示所述多个页面中的所述给定页面是否存储在所述闪存中。
14.如权利要求13所述的方法,其中,对于所述多个页面的所述子集中的每一个页面,所述数据结构包括指示存储在所述RAM中的页面的物理地址和存储在所述RAM中的所述页面的虚拟地址之间的映射的地址转换信息,其中,所述多个页面的所述子集存储在RAM中。
15.如权利要求14所述的方法,还包括响应于所述存储器请求,访问所述处理器中的转换后援缓冲器(TLB),其中,所述TLB被配置成存储地址转换信息,其中,所述访问TLB包括确定与所述存储器请求相关联的地址转换信息是否存储在所述TLB中,并且其中,所述方法包括,如果所述地址转换信息没有存储在所述TLB中,则将所述地址转换信息从所述数据结构传输到所述TLB中。
16.如权利要求11所述的方法,还包括响应于确定所述被请求的页面没有存储在所述RAM或所述闪存中,调用I/O驱动程序并从耦合到I/O总线的存储驱动器访问包含所述数据的所述页面。
17.如权利要求11所述的方法,还包括基于页面以前存储在所述闪存中的位置的历史来确定所述闪存中的用于存储页面的位置。
18.一种系统,包括:
执行核,被配置成生成存储器请求;
存储器管理单元,耦合到所述执行核;
I/O控制器,耦合到所述执行核;以及
随机访问存储器(RAM),耦合到所述存储器管理单元;
闪存,耦合到所述存储器管理单元,其中,所述系统被配置成在操作期间至少将多个页面的子集存储在所述闪存中;
其中,所述存储器管理单元被配置成,响应于页面错误,在不生成中断的情况下,确定与所述页面错误相关联的被请求的页面是否存储在所述闪存中,并进一步被配置成,如果所述页面存储在所述闪存中,则将所述页面传输到RAM。
19.如权利要求18所述的系统,其中,所述系统被配置成将数据结构存储在所述RAM中,所述数据结构包括多个页面中的哪些页面存储在所述RAM中的指示,其中,所述数据结构包括针对所述多个页面中的每一个页面的条目,其中,在每一个条目中,第一比特用于指示所述多个页面中的相对应的页面是否存储在所述RAM中,而第二比特用于指示所述多个页面中的所述相对应的页面是否存储在所述闪存中。
20.如权利要求18所述的系统,其中,所述系统还包括耦合到所述存储器管理单元的服务处理器单元,其中,所述服务处理器单元被配置成确定所述闪存中的用于存储所述子集中的每一个页面的位置,并且其中,所述服务处理器单元被配置成基于页面以前存储在所述闪存中的位置的历史来确定所述闪存中的用于存储页面的位置。
CN201080035941.9A 2009-06-29 2010-06-28 具有用于页面错误处理的闪存的扩展主存储器层次结构 Active CN102473138B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/493,779 2009-06-29
US12/493,779 US9208084B2 (en) 2009-06-29 2009-06-29 Extended main memory hierarchy having flash memory for page fault handling
PCT/US2010/040263 WO2011008507A1 (en) 2009-06-29 2010-06-28 Extended main memory hierarchy having flash memory for page fault handling

Publications (2)

Publication Number Publication Date
CN102473138A true CN102473138A (zh) 2012-05-23
CN102473138B CN102473138B (zh) 2016-08-10

Family

ID=42829005

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080035941.9A Active CN102473138B (zh) 2009-06-29 2010-06-28 具有用于页面错误处理的闪存的扩展主存储器层次结构

Country Status (4)

Country Link
US (1) US9208084B2 (zh)
EP (1) EP2449471A1 (zh)
CN (1) CN102473138B (zh)
WO (1) WO2011008507A1 (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102929588A (zh) * 2012-09-28 2013-02-13 无锡江南计算技术研究所 众核处理器虚实地址转换方法
CN105095094A (zh) * 2014-05-06 2015-11-25 华为技术有限公司 内存管理方法和设备
CN105556487A (zh) * 2013-09-24 2016-05-04 高通股份有限公司 对页驻留的条件性页错误控制
CN105723722A (zh) * 2013-09-24 2016-06-29 爱立信股份有限公司 通过自适应比特率流播的高效网络个人录像机操纵的记录设备和方法
CN106445725A (zh) * 2016-09-20 2017-02-22 华中科技大学 一种闪存错误模式的测试方法和系统
CN106502821A (zh) * 2016-10-26 2017-03-15 武汉迅存科技有限公司 一种获取闪存对偶页错误相关性的方法和系统
CN108139979A (zh) * 2015-10-08 2018-06-08 华为技术有限公司 数据处理装置和操作数据处理装置的方法
CN108268382A (zh) * 2015-03-27 2018-07-10 英特尔公司 两级存储器全行写入
CN109791523A (zh) * 2016-09-22 2019-05-21 谷歌有限责任公司 支持巨页的内存管理
CN112380150A (zh) * 2020-11-12 2021-02-19 上海壁仞智能科技有限公司 计算装置以及用于加载或更新数据的方法
CN113742115A (zh) * 2020-05-29 2021-12-03 成均馆大学校产学协力团 用于通过处理器处理页面错误的方法

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101671334B1 (ko) * 2010-07-27 2016-11-02 삼성전자주식회사 메모리 장치와 이의 데이터 제어방법
US10133676B2 (en) * 2010-07-28 2018-11-20 Rambus Inc. Cache memory that supports tagless addressing
KR101166803B1 (ko) * 2010-12-31 2012-07-26 세종대학교산학협력단 비휘발성 메모리 및 휘발성 메모리를 포함하는 메모리 시스템 및 그 시스템을 이용한 처리 방법
US8423740B2 (en) * 2011-02-01 2013-04-16 Wind River Systems, Inc. System and method for fast boot from non-volatile memory
EP3364304B1 (en) 2011-09-30 2022-06-15 INTEL Corporation Memory channel that supports near memory and far memory access
US9317429B2 (en) 2011-09-30 2016-04-19 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy over common memory channels
CN103946811B (zh) 2011-09-30 2017-08-11 英特尔公司 用于实现具有不同操作模式的多级存储器分级结构的设备和方法
WO2013048497A1 (en) 2011-09-30 2013-04-04 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy
US9201810B2 (en) 2012-01-26 2015-12-01 Microsoft Technology Licensing, Llc Memory page eviction priority in mobile computing devices
US9524248B2 (en) * 2012-07-18 2016-12-20 Micron Technology, Inc. Memory management for a hierarchical memory system
US20140082313A1 (en) * 2012-09-14 2014-03-20 International Business Machines Corporation Storage class memory evacuation
US9582287B2 (en) 2012-09-27 2017-02-28 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
US9069658B2 (en) * 2012-12-10 2015-06-30 Google Inc. Using a virtual to physical map for direct user space communication with a data storage device
US9606935B2 (en) * 2013-03-15 2017-03-28 Intel Corporation Method and apparatus for preventing non-temporal entries from polluting small structures using a transient buffer
US10324642B2 (en) * 2013-06-07 2019-06-18 Sanmina Corporation Peripheral component interconnect express (PCIe) solid state drive (SSD) accelerator
US10140212B2 (en) 2013-09-30 2018-11-27 Vmware, Inc. Consistent and efficient mirroring of nonvolatile memory state in virtualized environments by remote mirroring memory addresses of nonvolatile memory to which cached lines of the nonvolatile memory have been flushed
US10223026B2 (en) * 2013-09-30 2019-03-05 Vmware, Inc. Consistent and efficient mirroring of nonvolatile memory state in virtualized environments where dirty bit of page table entries in non-volatile memory are not cleared until pages in non-volatile memory are remotely mirrored
US10025722B2 (en) * 2015-10-28 2018-07-17 International Business Machines Corporation Efficient translation reloads for page faults with host accelerator directly accessing process address space without setting up DMA with driver and kernel by process inheriting hardware context from the host accelerator
US10102370B2 (en) * 2015-12-21 2018-10-16 Intel Corporation Techniques to enable scalable cryptographically protected memory using on-chip memory
US10847196B2 (en) 2016-10-31 2020-11-24 Rambus Inc. Hybrid memory module
CN111433749B (zh) 2017-10-12 2023-12-08 拉姆伯斯公司 具有dram高速缓存的非易失性物理存储器
US11169736B2 (en) * 2018-09-25 2021-11-09 Western Digital Technologies, Inc. Data storage device equipped to reduce page faults in host device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070106853A1 (en) * 2005-11-07 2007-05-10 International Business Machines Corporation Multistage virtual memory paging system
US20080052463A1 (en) * 2006-08-25 2008-02-28 Nagabhushan Chitlur Method and apparatus to implement cache-coherent network interfaces
WO2009048707A1 (en) * 2007-10-12 2009-04-16 Rambus Inc. Managing flash memory in computer systems
US20090313416A1 (en) * 2008-06-16 2009-12-17 George Wayne Nation Computer main memory incorporating volatile and non-volatile memory

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5899994A (en) * 1997-06-26 1999-05-04 Sun Microsystems, Inc. Flexible translation storage buffers for virtual address translation
US6418516B1 (en) * 1999-07-30 2002-07-09 International Business Machines Corporation Method and system for managing speculative requests in a multi-level memory hierarchy
US7103718B2 (en) * 2002-09-03 2006-09-05 Hewlett-Packard Development Company, L.P. Non-volatile memory module for use in a computer system
US7269708B2 (en) * 2004-04-20 2007-09-11 Rambus Inc. Memory controller for non-homogenous memory system
KR100678913B1 (ko) * 2005-10-25 2007-02-06 삼성전자주식회사 가상 메모리 시스템에서 페이지 폴트를 줄이는 장치 및방법
US8135900B2 (en) * 2007-03-28 2012-03-13 Kabushiki Kaisha Toshiba Integrated memory management and memory management method

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070106853A1 (en) * 2005-11-07 2007-05-10 International Business Machines Corporation Multistage virtual memory paging system
US20080052463A1 (en) * 2006-08-25 2008-02-28 Nagabhushan Chitlur Method and apparatus to implement cache-coherent network interfaces
WO2009048707A1 (en) * 2007-10-12 2009-04-16 Rambus Inc. Managing flash memory in computer systems
US20090313416A1 (en) * 2008-06-16 2009-12-17 George Wayne Nation Computer main memory incorporating volatile and non-volatile memory

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102929588B (zh) * 2012-09-28 2015-04-08 无锡江南计算技术研究所 众核处理器虚实地址转换方法
CN102929588A (zh) * 2012-09-28 2013-02-13 无锡江南计算技术研究所 众核处理器虚实地址转换方法
CN105556487B (zh) * 2013-09-24 2019-04-02 高通股份有限公司 对页驻留的条件性页错误控制
CN105723722B (zh) * 2013-09-24 2019-05-14 爱立信股份有限公司 通过自适应比特率流播的高效网络个人录像机操纵的记录设备和方法
CN105556487A (zh) * 2013-09-24 2016-05-04 高通股份有限公司 对页驻留的条件性页错误控制
CN105723722A (zh) * 2013-09-24 2016-06-29 爱立信股份有限公司 通过自适应比特率流播的高效网络个人录像机操纵的记录设备和方法
CN105095094B (zh) * 2014-05-06 2018-11-30 华为技术有限公司 内存管理方法和设备
US10552337B2 (en) 2014-05-06 2020-02-04 Huawei Technologies Co., Ltd. Memory management and device
CN105095094A (zh) * 2014-05-06 2015-11-25 华为技术有限公司 内存管理方法和设备
CN108268382A (zh) * 2015-03-27 2018-07-10 英特尔公司 两级存储器全行写入
CN108139979A (zh) * 2015-10-08 2018-06-08 华为技术有限公司 数据处理装置和操作数据处理装置的方法
US10970227B2 (en) 2015-10-08 2021-04-06 Huawei Technologies Co., Ltd. Data processing apparatus for handling page fault using predefind bit patterns and a method thereof
CN108139979B (zh) * 2015-10-08 2021-01-12 华为技术有限公司 数据处理装置和操作数据处理装置的方法
CN106445725A (zh) * 2016-09-20 2017-02-22 华中科技大学 一种闪存错误模式的测试方法和系统
CN109791523A (zh) * 2016-09-22 2019-05-21 谷歌有限责任公司 支持巨页的内存管理
CN109791523B (zh) * 2016-09-22 2023-07-14 谷歌有限责任公司 支持巨页的内存管理
CN106502821A (zh) * 2016-10-26 2017-03-15 武汉迅存科技有限公司 一种获取闪存对偶页错误相关性的方法和系统
CN113742115A (zh) * 2020-05-29 2021-12-03 成均馆大学校产学协力团 用于通过处理器处理页面错误的方法
CN113742115B (zh) * 2020-05-29 2024-03-12 成均馆大学校产学协力团 用于通过处理器处理页面错误的方法
CN112380150A (zh) * 2020-11-12 2021-02-19 上海壁仞智能科技有限公司 计算装置以及用于加载或更新数据的方法

Also Published As

Publication number Publication date
US9208084B2 (en) 2015-12-08
US20100332727A1 (en) 2010-12-30
CN102473138B (zh) 2016-08-10
EP2449471A1 (en) 2012-05-09
WO2011008507A1 (en) 2011-01-20

Similar Documents

Publication Publication Date Title
CN102473138A (zh) 具有用于页面错误处理的闪存的扩展主存储器层次结构
US11914508B2 (en) Memory controller supporting nonvolatile physical memory
US8938601B2 (en) Hybrid memory system having a volatile memory with cache and method of managing the same
US4985829A (en) Cache hierarchy design for use in a memory management unit
US8451281B2 (en) Shared virtual memory between a host and discrete graphics device in a computing system
US8443144B2 (en) Storage device reducing a memory management load and computing system using the storage device
US7739477B2 (en) Multiple page size address translation incorporating page size prediction
TWI526829B (zh) 電腦系統、用於存取儲存裝置之方法及電腦可讀儲存媒體
US5751990A (en) Abridged virtual address cache directory
US5956751A (en) Computer memory management system using physical segmentation space allocation
JP2008542948A (ja) コンフィギュラブルトランスレーションルックアサイドバッファを備えたマイクロプロセッサ
KR930022222A (ko) 캐시가 일관된 다중 처리기 컴퓨터 시스템에서 다중 미결동작을 제공하기 위한 장치 및 그 방법
CN102483719A (zh) 基于块的非透明高速缓存
US5737751A (en) Cache memory management system having reduced reloads to a second level cache for enhanced memory performance in a data processing system
US10949356B2 (en) Fast page fault handling process implemented on persistent memory
JP2021034052A (ja) 異種メモリを有するメモリシステム、これを含むコンピュータシステム及びそのデータ管理方法
US5809526A (en) Data processing system and method for selective invalidation of outdated lines in a second level memory in response to a memory request initiated by a store operation
US5893147A (en) Method and apparatus for distinguishing system memory data from alternative memory data in a shared cache memory
US5293622A (en) Computer system with input/output cache
US6249845B1 (en) Method for supporting cache control instructions within a coherency granule
CN113448882A (zh) 用于多级存储器的高效的管理的装置和方法
JPH0580018B2 (zh)
EP0170525B1 (en) Cache hierarchy design for use in a memory management unit
KR20190019157A (ko) 캐시 엔트리에서 메모리 액세스 요청의 펜던시를 식별하기 위한 시스템 및 방법
US6496904B1 (en) Method and apparatus for efficient tracking of bus coherency by using a single coherency tag bank

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant