CN104969203B - 利用反射内存实现一致性 - Google Patents
利用反射内存实现一致性 Download PDFInfo
- Publication number
- CN104969203B CN104969203B CN201380071993.5A CN201380071993A CN104969203B CN 104969203 B CN104969203 B CN 104969203B CN 201380071993 A CN201380071993 A CN 201380071993A CN 104969203 B CN104969203 B CN 104969203B
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- changed
- equipment
- reflective
- 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
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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0837—Cache consistency protocols with software control, e.g. non-cacheable data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/28—Using a specific disk cache architecture
- G06F2212/281—Single cache
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
技术领域
本发明涉及计算机技术,特别涉及一种利用反射内存实现一致性的方法和装置。
背景技术
现代计算设备执行越来越复杂的软件应用程序。为减少复杂软件应用程序的执行时间,一些计算设备可以并行执行多个操作。例如,计算设备可以同时执行两个操作。在一些实施例中,两个计算设备可以通过在这两个计算设备之间发送和接收数据来并行执行多个操作。
发明内容
有鉴于此,本发明提供了一种用于更新第一存储器设备的反射内存区域中的数据的方法,包括:
接收要从缓存设备向所述第一存储器设备刷新数据的指示;
检测与所述数据对应的存储器地址位于所述第一存储器设备的所述反射内存区域内;
通过刷新操作,从所述缓存设备向所述第一存储器设备发送数据;
确定由所述第一存储器设备接收的所述数据是被修改的数据;以及
向第二计算系统中的第二存储器设备发送所述被修改的数据。
较佳的,其中通过刷新操作从所述缓存向所述第一存储器设备发送数据包括:从所述缓存中移除所述数据。
较佳的,其中所述刷新操作使所述缓存设备从所述缓存设备中的缓存行向所述第一存储器设备发送数据。
较佳的,其中所述第二计算系统接收所述被修改的数据,并且将所述被修改的数据映射到所述第二存储器设备中的地址范围中。
较佳的,所述的方法包括:从所述缓存设备向所述反射内存发送一组数据。
较佳的,所述的方法包括:向第二计算系统发送多个被修改的数据块。
较佳的,其中所述第二计算系统响应于接收到被修改的数据而从第二缓存设备向所述第二存储器设备发送数据。
本发明还提供了一种用于更新第一存储器设备的反射内存区域中的数据的系统,包括:
所述第一存储器设备的反射内存区域,用于存储数据;
缓存设备,用于存储来自所述反射内存区域的数据的副本;
处理器,用于:
针对被请求的数据,检测缓存缺失;
确定所述被请求的数据存储在所述第一存储器设备的所述反射内存区域中;
从所述反射内存向所述缓存设备发送所述被请求的数据的副本;
响应于刷新操作而从所述缓存设备接收数据;
确定从所述缓存设备接收的所述数据是被修改的数据;以及
向第二计算系统中的第二存储器设备发送所述被修改的数据。
较佳的,其中所述处理器用于调度要执行的所述刷新操作。
较佳的,其中所述处理器用于创建所述被修改的数据的副本,并且向所述第一存储器设备的所述反射内存区域发送所述被修改的数据的副本。
较佳的,其中所述刷新操作使所述缓存设备从所述缓存设备中的缓存行向所述第一存储器设备发送数据。
较佳的,其中所述缓存设备包括存储器指示比特,所述存储器指示比特指示所述缓存中的数据已经被修改。
本发明还提供了一种非暂时性计算机可读介质,包括多个指令,所述多个指令响应于在计算设备上被执行而使所述计算设备:
接收要从缓存设备向第一存储器设备刷新数据的指示;
检测与所述数据对应的存储器地址位于所述第一存储器设备的反射内存区域内;
通过刷新操作,从所述缓存设备向所述第一存储器设备发送数据;
确定由所述第一存储器设备接收的所述数据是被修改的数据;以及
向第二计算系统中的第二存储器设备发送所述被修改的数据。
较佳的,其中所述第二计算系统接收所述被修改的数据,并且将所述被修改的数据映射到所述第二存储器设备中的地址范围内。
较佳的,其中所述指令使所述计算机设备向第二计算系统发送多个被修改的数据块。
附图图示
在下面的具体实施方式中并参照附图描述特定示例,其中:
图1是可以在具有反射内存的计算设备中实现一致性的示例计算系统的框图;
图2是图示用于在具有反射内存的计算设备中实现一致性的方法的示例的过程流程图;
图3是用于响应于缓存缺失而在具有反射内存的计算设备中实现一致性的方法的示例的过程流程图;
图4是图示如何能够在具有反射内存的计算设备中实现一致性的示例的框图;以及
图5是图示可以在具有反射内存的计算设备中实现一致性的有形非暂时性计算机可读介质的示例的框图。
具体实施方式
根据本文描述的主题的实施例,具有反射内存的计算设备可以实现一致性。本文提到的反射内存包括共享存储器系统中通过多个分离的存储器控制器或数据管理模块来维护共同的一组数据的存储器设备的任何适合部分。例如,反射内存可以将数据存储在计算系统的非易失性存储器中,同时还将该数据的副本存储在第二计算系统的存储器设备中。在将数据的多个复本存储在计算系统内或多个计算系统内的各个存储器设备中时,本文描述的技术维持一致性。本文提到的一致性包括:检测对共享存储器系统中共同的一组数据的修改,并且基于该修改,更新该共同的一组数据的副本。例如,可以将与存储器地址关联的数据从存储器设备拷贝到缓存设备中。如果处理器修改缓存设备中的该数据,则存储器设备中的该数据可以是旧的或过时的。本文描述的技术可以在包括反射内存的计算设备中使能一致性。
在一些实施例中,本文描述的技术能够实现一致性,而不从缓存设备向存储器设备发送未被修改的数据。例如,处理器可以访问缓存设备中的一些数据值,以便读取这些数据值,这不修改这些数据值。处理器还可以因为写操作而访问数据值,这可能修改这些数据值。在一些实施例中,未被修改的数据值可以保留在缓存设备中,而将被修改的数据值拷贝至存储器设备。
图1是可以在具有反射内存的计算设备中实现一致性的计算系统100的示例的框图。计算系统100可以包括例如计算机服务器、移动电话、便携式计算机、台式计算机或平板计算机等。计算系统100可以包括适于执行存储的指令的处理器102。处理器102可以是单核处理器、多核处理器、计算集群或任意数量的其它合适配置。
处理器12可以通过系统总线104(例如,AMBA、PCIHyper串行ATA等等)连接至输入/输出(I/O)设备接口106,输入/输出(I/O)设备接口106适于将计算系统100连接至一个或多个I/O设备108。I/O设备108可以包括例如键盘及指点设备,其中指点设备可以包括触摸板或触摸屏等等。I/O设备108可以是计算系统100的内置组件,或可以是外部地连接至计算系统100的设备。
处理器102还可以通过系统总线104链接至显示设备接口110,显示设备接口110适于将计算系统100连接至显示设备112。显示设备112可以包括属于计算系统100的内置组件的显示屏。显示设备112还可以包括与计算系统100外部地连接的计算机监视器、电视或投影仪等等。此外,处理器102还可以通过系统总线104链接至网络接口卡(NIC)114。NIC 114可以适于通过系统总线104将计算系统100连接至网络(未示出)。网络(未示出)可以是广域网(WAN)、局域网(LAN)或互联网等等。
处理器102还可以通过系统总线104链接至存储器设备106。在一些实施例中,存储器设备116可以包括随机存取存储器(例如,SRAM、DRAM、eDRAM、EDO RAM、DDR RAM、PRAM等等)、只读存储器(例如,掩模ROM(Mask ROM)、EPROM、EEPROM等等)、非易失性存储器或任何其它合适的存储器系统。在一个示例中,存储器设备116可以包括任意合适数量的存储器地址,每个存储器地址对应于任意合适数量的数据值。在一些实施例中,频繁访问的数据值的副本可以存储在缓存118中。在一些实施例中,处理器102可以在从存储器设备116中请求数据以前从缓存118请求数据,以供操作。在一个示例中,缓存118可以存储比存储器设备116更少的数据值,但缓存118可以比存储器设备116能够向处理器102提供存储的数据更快地,向处理器102提供存储的数据。
在一些实施例中,来自存储器设备116的数据可以被反射在第二计算系统122的第二存储器设备120中。本文提到的术语“反射”包括第一计算系统产生或写数据,并且在第二计算系统上的分离的存储器设备中维持所述数据的本地一致副本。例如,存储器设备116中的存储器地址可以对应于被修改为新值的数据值。为提供存储器设备116和第二存储器设备120中的一致性,该数据的新值从存储器设备116被发送或“被反射”至第二存储器设备120。第二存储器设备120与第二计算机系统122关联,第二计算机系统122可以在第二计算机系统122的操作中使用来自存储器设备116的新数据值。本文提到的“消耗数据”包括在读操作中使用数据,但不在写操作中使用数据。
在一些实施例中,处理器102可以通过系统总线104链接至数据管理模块124。数据管理模块124可以维护在存储器设备116、缓存118和第二存储器设备120中存储的数据之间的一致性。在一个实施例中,数据管理模块124可以通过任意合适的结构126(例如,PCI串行ATA等等)向第二存储器设备120和第二计算系统122的第二数据管理模块128发送数据。第二数据管理模块128可以维护在第二计算系统122的第二存储器设备120中存储的数据的一致性。
在一个实施例中,数据管理模块124可以通过将缓存118中被修改的数据拷贝至存储器设备116中来维护所存储的数据的一致性。将被修改的数据从缓存118拷贝至存储器设备116在本文中还被称为“刷新(flush)”数据。在一些实施例中,当数据管理模块124将数据从缓存118刷新至存储器设备116的反射内存范围时,数据管理模块124可以向第二存储器设备120发送该被修改的数据。通过维护在第二存储器设备120中存储的数据的一致性,第二数据管理模块128可以确保在第二计算设备122中执行的操作将使用从存储器设备116中经配置的反射内存区域转发的被修改的数据。在一些实施例中,第二数据管理模块128可以接收该被修改的数据,并且将该被修改的数据映射到第二存储器设备120中的地址范围中。
应理解,图1的框图的目的不在于表示计算系统100包括图1中示出的所有组件。相反,计算系统100可以包括更少或更多图1中未示出的组件(例如,附加存储器设备、视频卡、附加网络接口等等)。此外,数据管理模块124的任何功能可以部分地或整体在分离的硬件中实现。例如,该功能可以利用专用集成电路实现、在存储器设备116中实现或在外设设备上的协处理器中实现等等。
图2是图示用于在具有反射内存的计算设备中实现一致性的方法的示例的过程流程图。该方法200可以利用像图1的计算系统100那样的计算设备实现。
在框202中,数据管理模块124接收将刷新缓存设备的缓存行的指示。如上面讨论的,缓存设备存储任意合适数量的数据缓存行,每个缓存行包含一些数据,例如16字节、32字节、64字节或128字节的数据。本文中提到的‘刷新缓存行’包括将被修改的缓存行从缓存设备发送至存储器设备。刷新缓存行还包括从缓存设备中删除未被修改的缓存行。下面结合图4更详细地讨论缓存行。在一些实施例中,数据管理模块124可以从操作系统或应用程序等接收指示。该指示可以是指导数据管理模块124指导缓存设备向存储器设备发送被修改的数据的任何适合操作或数据。
在框204中,数据管理模块124生成刷新操作,该刷新操作使缓存设备将该缓存设备的缓存行中的数据发送至存储器设备。在一些实施例中,数据管理模块124可以使用来自软件、操作系统或硬件组件的指示来生成刷新操作。例如,数据管理模块124可以检测将从缓存设备向存储器设备刷新缓存行的指示。
在框206中,数据管理模块124确定从缓存设备刷新的缓存行中的数据是否是给存储器设备的反射内存区域以及该数据是否已被修改。如上面讨论的,反射内存区域可以包括存储器设备中可以与至少一个附加存储器设备实现一致性的任意合适部分。例如,如果在第一存储器设备的指定反射区域中修改数据,则可以向第二存储器设备发送或反射被修改的数据的副本,第二存储器设备将该数据的副本存储在第一反射内存设备中。在一些实施例中,数据管理模块124可以确定存储器中的一组存储器范围要被反射在任意适合数量的附加存储器设备中。
可以响应于框204中框出的由数据管理模块124生成的刷新操作,而刷新缓存设备中的数据,或缓存设备可以独立地选择刷新缓存行。在一些实施例中,数据管理模块124可以将与该数据对应的存储器地址与存储器设备的反射内存区域中的存储器地址范围相比较。例如,如果处理器执行涉及该缓存中存储的数据的写操作,则可以将缓存中的存储器地址链接至被修改的数据。在一些实施例中,处理器可以修改缓存中存储的数据,并且使用MESI协议跟踪到该数据已经被修改。例如,缓存可以包括比特,该比特指示缓存行被修改或是独占的。如果缓存行是独占的,则在该缓存行中存储的数据值匹配存储器中存储的数据值。在一些实施例中,独占的缓存行可能成为被修改的缓存行。例如,当处理器对在独占的缓存行中存储的数据执行写操作时,该数据可能被修改并且该缓存行可能成为被修改的缓存行。在缓存中存储的被修改的数据将不具有与在存储器中存储的数据一样的值。
如果数据管理模块124确定将缓存行中的数据从缓存设备刷新至存储器设备的反射内存区域且该数据已被修改,则过程流程在框208中继续。如果数据管理模块124确定不将缓存行中的数据从缓存设备刷新至存储器设备的反射内存区域或者该数据未被修改,则过程流程在框210中结束。
在框208中,数据管理模块124向第二计算系统中的第二存储器设备发送被修改的数据。例如,数据管理模块124可以从包括反射内存的一个存储器设备(本文还被称为反射内存设备)向第二反射内存设备发送该被修改的数据。在一些实施例中,第二反射内存设备可以位于第二计算设备中。在一个示例中,第二计算设备可以包括数据管理模块,该数据管理模块可以向第二计算设备中诸如非易失性存储器、易失性存储器或缓存等等之类的各个存储器设备拷贝被修改的数据值。在一个实施例中,数据管理模块124可以向存储来自反射内存的数据的任意合适数量的存储器设备发送被修改的数据。数据管理模块124还可以将多个被修改的数据值一起发送给与反射内存关联的附加存储器设备。在一些实施例中,第二计算系统可以响应于接收到被修改的数据,而向第二计算设备的第二存储器设备刷新第二计算系统的缓存设备中的数据。过程流程在框210中结束。
图2的过程流程图的目的不在于表示要以任何特定的顺序执行方法200的操作,或者在每个情况中都要包括方法200的所有操作。例如,数据管理模块124可以不生成使缓存行向存储器设备发送被修改的数据的刷新操作。相反,数据管理模块124可以检测处理器已执行向存储器设备刷新可能被修改的数据的刷新操作。此外,根据特定应用,任意多个附加步骤可以包括在方法200内。例如,数据管理模块124还可以检测从缓存中移除的缓存行。响应于检测到被移除的缓存行,数据管理模块124可以将被移除的缓存行中的数据与存储器设备的反射内存区域相比较,并且从反射区域向第二计算系统中的第二存储器设备发送被修改的数据。
图3是用于响应于缓存缺失而在具有反射内存的计算设备中实现一致性的方法的示例的过程流程图。本文中提到的缓存缺失包括在处理器确定被请求的数据未存储在缓存设备中之后,处理器从存储器设备请求数据。方法300可以用计算设备实现,如图1的计算系统100。
在框302处,数据管理模块124可以检测缓存缺失。在一些实施例中,缓存缺失导致处理器访问存储器设备中的数据。例如,处理器可以访问存储器设备中处于共享状态或独占状态的数据。在共享状态下,处理器可能不能修改存储器设备中的数据,如在只读模式下。在独占状态中,处理器可能能够使用写操作来修改存储器设备中的数据。
在框304处,数据管理模块124确定由处理器访问的数据的存储器地址是否对应于该存储器设备的反射内存区域。此外,在一些实施例中,数据管理模块124确定是否在独占状态下或修改状态下将被访问的数据提供给缓存设备。如上面讨论的,反射内存可以包括存储器设备中可以与至少一个附加存储器设备维护一致性的任意合适部分。例如,如果第一存储器设备的指定反射区域中的数据被修改,则可以向也存储该数据的第二存储器设备发送或反射被修改的数据的副本。在一些实施例中,数据管理模块124可以确定存储器中的一组存储器范围要被反射在任意合适数量的附加存储器设备中。如果数据管理模块124确定由处理器访问的数据的存储器地址对应于存储器设备的反射内存区域且已经在独占状态下或修改状态下将被访问的数据提供给缓存设备,则过程流程在框306中继续。如果数据管理模块124确定由处理器访问的数据的存储器地址未对应于存储器设备的反射内存区域或未在独占状态或修改状态下将被访问的数据提供给缓存,则过程流程在框308中结束。
在框306处,数据管理模块124在延迟之后调度被访问的缓存行的刷新。被访问的缓存行的刷新可以包括从缓存设备的被访问的缓存行向存储器设备发送数据。在框310处,数据管理模块124向缓存设备发送刷新操作。刷新操作可以指示缓存设备将向存储器设备发送缓存行。
在框312处,数据管理模块124确定是否将被刷新的缓存行中的数据写至存储器设备。在一些实施例中,如果已修改来自被刷新的缓存行的数据,则将来自被刷新的缓存行的数据写至存储器设备。例如,处理器可以执行修改缓存设备的任何缓存行中的数据的写操作。由缓存行存储的被修改的数据可以与存储器设备中存储的数据不同。因此,用来自缓存的被修改的数据替换存储器设备中的数据可以更新存储器设备中的数据。如果将被刷新的缓存行写至存储器设备,则过程流程在框314处继续。如果未将被刷新的缓存行写至存储器设备,则过程流程在框308处结束。
在框314处,数据管理模块124确定缓存行中的数据被从缓存设备刷新至存储器设备的反射内存区域且该数据已被修改。由于缓存行在框306中被调度,所以该缓存行可能已经被刷新。在一些实施例中,该缓存行还可以由缓存设备118独立地刷新。在一些实施例中,处理器可以修改在缓存中存储的数据并且指示该数据已使用MESI协议被修改。例如,缓存可以包括比特,该比特指示缓存行被修改或是独占的。在缓存中存储的被修改的数据将不具有与存储器中存储的该数据相同的值。
在框316处,数据管理模块124从存储器设备的反射区域向第二计算系统的第二存储器设备发送被修改的数据。例如,数据管理模块124可以从包括反射内存的一个存储器设备(本文中也被称为反射内存设备)向第二反射内存设备发送该被修改的数据。在一些实施例中,第二反射内存设备可以位于第二计算设备中。在一个示例中,第二计算设备可以包括数据管理模块,该数据管理模块可以向第二计算设备中诸如非易失性存储器、易失性存储器或缓存等等之类的各个存储器设备拷贝被修改的数据值。在一个实施例中,数据管理模块124可以向存储来自反射内存的数据的任意合适数量的存储器设备发送被修改的数据。数据管理模块124还可以将多个被修改的数据值一起发送给与反射内存关联的附加存储器设备。在一些实施例中,第二计算设备可以响应于接收到被修改的数据,而将第二计算系统的缓存设备中的数据刷新至第二计算设备的第二存储器设备。过程流程在框308处结束。
图3的过程流程图的目的不在于表示要以任何特定的顺序执行方法300的操作,或者在每个情况中都要包括方法300的所有操作。例如,如果在数据管理模块124向缓存设备发送刷新操作之前处理器移除缓存行,则数据管理模块124可以不向缓存设备发送刷新操作。此外,根据具体应用,在方法300内可以包括任意数量的附加步骤。
图4是图示如何能够在具有反射内存的计算设备中实现一致性的示例的框图。在一些实施例中,计算设备400可以包括存储器设备402、数据管理模块124以及缓存404。存储器设备402可以存储与任意合适数量的存储器地址关联的任意合适量的数据406。在一些实施例中,存储器设备402的一部分可以用作反射内存408。如上面讨论的,反射内存408可以包括在要被反射到附加存储器设备中的存储器地址中保持的数据。例如,在反射内存408中存储的数据的副本可以被存储在与存储器设备402位于相同计算设备中或者位于分离的计算设备中的附加存储器设备中。在一些实施例中,可以周期性地修改存储器设备402中用于反射内存408的部分,以存储将被反射的不同量的数据。
在一些实施例中,缓存404可以将数据存储在缓存行410中。每个缓存行410可以保持与存储器地址关联的数据。在一个实施例中,缓存行410可以包括存储器指示比特412,存储器指示比特412指示缓存行410中的数据是否已被修改。例如,处理器414可以使用来自缓存行410的数据来执行写操作,该写操作可以用被修改的值替换缓存行410中的现有数据值。处理器414还可以将存储器指示比特412从‘独占的’修改为‘被修改’,以指示缓存行410中的数据已被修改。
在一些实施例中,数据管理模块124可以检测来自软件应用程序的写操作,该写操作指示要从缓存设备404向存储器设备402刷新的存储器地址的范围。例如,可以向数据管理模块124中的控制寄存器发送该写操作。在一些实施例中,控制寄存器可以指示将从缓存设备404向存储器设备402刷新的任意合适数量的存储器地址。数据管理模块124还可以生成用于从任意合适数量的缓存设备中移除数据的操作。例如,数据管理模块124可以从缓存设备404向存储器设备402刷新预定的存储器地址范围内的存储器地址。
可替代地,数据管理模块124可以利用来自存储器接口(例如,存储器控制器)的预定信息,来向存储器设备402刷新缓存行410。在一些实施例中,该预定信息可以包括来自过滤器缓存的信息(本文还被称为RTAG)、或被提议用于内存映射存储架构的描述符字段中的信息。在一些示例中,数据管理模块124可以使用该预定信息来确定多个缓存行410包括来自存储器设备402中反射内存408的数据。数据管理模块124还可以在从缓存行410向与反射内存408关联的附加的存储器设备转发该数据之前,从缓存行410向存储器设备402中的反射内存408刷新该数据。
应理解,图4的框图的目的不在于表示计算系统400将包括图4中示出的所有组件。相反,计算系统400可以包括更少的组件或图4中未图示的附加组件(例如,附加存储器设备、接口等)。此外,数据管理模块124的功能中的任何功能可以部分地或全部地在硬件或处理器414中实现。例如,该功能可以用专用集成电路实现,在处理器414中实现的逻辑中实现、在位于存储设备内的模块中实现,或在外设设备上的协处理器中实现,等等。
图5是显示可以在具有反射内存的计算设备中实现一致性的有形非暂时性计算机可读介质500的框图。该有形非暂时性计算机可读介质500可以由处理器502通过计算机总线504访问。此外,该有形非暂时性计算机可读介质500可以包括用于指导处理器502执行当前的方法的步骤的计算机可以执行指令。
本文讨论的各个软件组件可以存储在有形非暂时性计算机可读介质500上,如图5中所示。例如,数据管理模块506可以适于指导处理器502在具有反射内存的计算设备中实现一致性。在一些实施例中,数据管理模块506可以确定缓存中的数据已经被修改,并且通过用被改的数据值替换现有数据值来更新反射内存。数据管理模块506还可以向附加存储器设备发送被修改的数据值。应理解,基于具体应用,图5中未示出的任意多个附加软件组件可以包括在有形非暂时性计算机可读介质500内。
本发明的示例可以发生各种修改和产生替换形式,且仅是为了图示目的而示出的。此外,应理解,本技术的目的不在于局限于本文公开的特定示例。实际上,所附权利要求的范围被认为包括对于与所公开的主题相关的领域的技术人员而言显而易见的所有替换、修改和等价。
Claims (15)
1.一种用于更新第一存储器设备的反射内存区域中的数据的方法,包括:
接收要从缓存设备向所述第一存储器设备刷新数据的指示;
检测与所述数据对应的存储器地址位于所述第一存储器设备的所述反射内存区域内;
通过刷新操作,从所述缓存设备向所述第一存储器设备发送数据;
确定由所述第一存储器设备接收的所述数据是被修改的数据;以及
向第二计算系统中的第二存储器设备发送所述被修改的数据。
2.根据权利要求1所述的方法,其中通过刷新操作从所述缓存向所述第一存储器设备发送数据包括:从所述缓存中移除所述数据。
3.根据权利要求1所述的方法,其中所述刷新操作使所述缓存设备从所述缓存设备中的缓存行向所述第一存储器设备发送数据。
4.根据权利要求1所述的方法,其中所述第二计算系统接收所述被修改的数据,并且将所述被修改的数据映射到所述第二存储器设备中的地址范围中。
5.根据权利要求1所述的方法,包括:从所述缓存设备向所述反射内存发送一组数据。
6.根据权利要求1所述的方法,包括:向第二计算系统发送多个被修改的数据块。
7.根据权利要求1所述的方法,其中所述第二计算系统响应于接收到被修改的数据而从第二缓存设备向所述第二存储器设备发送数据。
8.一种用于更新第一存储器设备的反射内存区域中的数据的系统,包括:
所述第一存储器设备的反射内存区域,用于存储数据;
缓存设备,用于存储来自所述反射内存区域的数据的副本;
处理器,用于:
针对被请求的数据,检测缓存缺失;
确定所述被请求的数据存储在所述第一存储器设备的所述反射内存区域中;
从所述反射内存向所述缓存设备发送所述被请求的数据的副本;
响应于刷新操作而从所述缓存设备接收数据;
确定从所述缓存设备接收的所述数据是被修改的数据;以及
向第二计算系统中的第二存储器设备发送所述被修改的数据。
9.根据权利要求8所述的系统,其中所述处理器用于调度要执行的所述刷新操作。
10.根据权利要求8所述的系统,其中所述处理器用于创建所述被修改的数据的副本,并且向所述第一存储器设备的所述反射内存区域发送所述被修改的数据的副本。
11.根据权利要求8所述的系统,其中所述刷新操作使所述缓存设备从所述缓存设备中的缓存行向所述第一存储器设备发送数据。
12.根据权利要求8所述的系统,其中所述缓存设备包括存储器指示比特,所述存储器指示比特指示所述缓存中的数据已经被修改。
13.一种非暂时性计算机可读介质,包括多个指令,所述多个指令响应于在计算设备上被执行而使所述计算设备:
接收要从缓存设备向第一存储器设备刷新数据的指示;
检测与所述数据对应的存储器地址位于所述第一存储器设备的反射内存区域内;
通过刷新操作,从所述缓存设备向所述第一存储器设备发送数据;
确定由所述第一存储器设备接收的所述数据是被修改的数据;以及
向第二计算系统中的第二存储器设备发送所述被修改的数据。
14.根据权利要求13所述的计算机可读介质,其中所述第二计算系统接收所述被修改的数据,并且将所述被修改的数据映射到所述第二存储器设备中的地址范围内。
15.根据权利要求13所述的计算机可读介质,其中所述指令使所述计算机设备向第二计算系统发送多个被修改的数据块。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/034442 WO2014158173A1 (en) | 2013-03-28 | 2013-03-28 | Implementing coherency with reflective memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104969203A CN104969203A (zh) | 2015-10-07 |
CN104969203B true CN104969203B (zh) | 2017-08-15 |
Family
ID=51624955
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380071993.5A Active CN104969203B (zh) | 2013-03-28 | 2013-03-28 | 利用反射内存实现一致性 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9575898B2 (zh) |
EP (1) | EP2979192B1 (zh) |
JP (1) | JP2016508650A (zh) |
KR (1) | KR20150136045A (zh) |
CN (1) | CN104969203B (zh) |
TW (1) | TWI506537B (zh) |
WO (1) | WO2014158173A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107340441B (zh) * | 2017-06-07 | 2019-07-05 | 同济大学 | 一种燃料电池汽车动力总成集成测试系统 |
CN116846863B (zh) * | 2023-08-30 | 2023-11-10 | 东方空间技术(山东)有限公司 | 一种光纤反射内存网内存映射方法、装置及计算设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201214115A (en) * | 2010-06-30 | 2012-04-01 | Sandisk Technologies Inc | Garbage collection of memory blocks using volatile memory |
TW201248627A (en) * | 2011-05-25 | 2012-12-01 | Samsung Electronics Co Ltd | Method of refreshing a memory device, refresh address generator and memory device |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5926830A (en) * | 1996-10-07 | 1999-07-20 | International Business Machines Corporation | Data processing system and method for maintaining coherency between high and low level caches using inclusive states |
US7000078B1 (en) * | 1999-10-01 | 2006-02-14 | Stmicroelectronics Ltd. | System and method for maintaining cache coherency in a shared memory system |
US7089391B2 (en) | 2000-04-14 | 2006-08-08 | Quickshift, Inc. | Managing a codec engine for memory compression/decompression operations using a data movement engine |
US20030110233A1 (en) | 2001-12-10 | 2003-06-12 | Vmic | Reflective memory system and method capable of dynamically sizing data packets |
JP2004038422A (ja) | 2002-07-02 | 2004-02-05 | Matsushita Electric Ind Co Ltd | 半導体装置 |
US6795850B2 (en) * | 2002-12-13 | 2004-09-21 | Sun Microsystems, Inc. | System and method for sharing memory among multiple storage device controllers |
US6941396B1 (en) | 2003-02-19 | 2005-09-06 | Istor Networks, Inc. | Storage controller redundancy using bi-directional reflective memory channel |
US7469321B2 (en) * | 2003-06-25 | 2008-12-23 | International Business Machines Corporation | Software process migration between coherency regions without cache purges |
US7657667B2 (en) * | 2004-03-25 | 2010-02-02 | International Business Machines Corporation | Method to provide cache management commands for a DMA controller |
DE602004025556D1 (de) | 2004-06-08 | 2010-04-01 | Freescale Semiconductor Inc | Aufrechterhaltung der Cachespeicherkoherenz zum direkten Zugriff (DMA), Abschluss einer Aufgabe, zur Synchronisierung |
US20080320253A1 (en) * | 2007-06-19 | 2008-12-25 | Andrew Tomlin | Memory device with circuitry for writing data of an atomic transaction |
JP2009104300A (ja) | 2007-10-22 | 2009-05-14 | Denso Corp | データ処理装置及びプログラム |
US8762652B2 (en) * | 2008-04-30 | 2014-06-24 | Freescale Semiconductor, Inc. | Cache coherency protocol in a data processing system |
JP2011008674A (ja) * | 2009-06-29 | 2011-01-13 | Nec Commun Syst Ltd | 二重化情報処理システム及び同期化方法 |
WO2011098118A1 (en) | 2010-02-09 | 2011-08-18 | Telefonaktiebolaget Lm Ericsson (Publ) | Data storage method |
US20110296095A1 (en) | 2010-05-25 | 2011-12-01 | Mediatek Inc. | Data movement engine and memory control methods thereof |
US8856456B2 (en) | 2011-06-09 | 2014-10-07 | Apple Inc. | Systems, methods, and devices for cache block coherence |
KR101695845B1 (ko) * | 2012-09-20 | 2017-01-12 | 한국전자통신연구원 | 캐시 일관성 유지 장치 및 방법, 이를 이용하는 멀티프로세서 장치 |
-
2013
- 2013-03-28 WO PCT/US2013/034442 patent/WO2014158173A1/en active Application Filing
- 2013-03-28 JP JP2015560157A patent/JP2016508650A/ja active Pending
- 2013-03-28 US US14/763,943 patent/US9575898B2/en active Active
- 2013-03-28 CN CN201380071993.5A patent/CN104969203B/zh active Active
- 2013-03-28 EP EP13879778.2A patent/EP2979192B1/en active Active
- 2013-03-28 KR KR1020157020797A patent/KR20150136045A/ko not_active Application Discontinuation
-
2014
- 2014-02-19 TW TW103105494A patent/TWI506537B/zh not_active IP Right Cessation
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201214115A (en) * | 2010-06-30 | 2012-04-01 | Sandisk Technologies Inc | Garbage collection of memory blocks using volatile memory |
TW201248627A (en) * | 2011-05-25 | 2012-12-01 | Samsung Electronics Co Ltd | Method of refreshing a memory device, refresh address generator and memory device |
Also Published As
Publication number | Publication date |
---|---|
WO2014158173A1 (en) | 2014-10-02 |
US9575898B2 (en) | 2017-02-21 |
TWI506537B (zh) | 2015-11-01 |
EP2979192A4 (en) | 2016-11-16 |
JP2016508650A (ja) | 2016-03-22 |
TW201447749A (zh) | 2014-12-16 |
US20160026576A1 (en) | 2016-01-28 |
EP2979192A1 (en) | 2016-02-03 |
EP2979192B1 (en) | 2018-05-30 |
KR20150136045A (ko) | 2015-12-04 |
CN104969203A (zh) | 2015-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12007907B2 (en) | Victim cache with write miss merging | |
US9218286B2 (en) | System cache with partial write valid states | |
JP5536658B2 (ja) | バッファメモリ装置、メモリシステム及びデータ転送方法 | |
JP2018504694A (ja) | 仮想アドレスを使用してアクセスされるキャッシュ | |
US9135177B2 (en) | Scheme to escalate requests with address conflicts | |
JP5868213B2 (ja) | キャッシュ制御装置、及びキャッシュ制御方法 | |
US20110167223A1 (en) | Buffer memory device, memory system, and data reading method | |
JP2014115851A (ja) | データ処理装置及びその制御方法 | |
US20230057633A1 (en) | Systems, methods, and apparatus for transferring data between interconnected devices | |
EP2562652B1 (en) | System and method for locking data in a cache memory | |
US11036639B2 (en) | Cache apparatus and method that facilitates a reduction in energy consumption through use of first and second data arrays | |
CN104969203B (zh) | 利用反射内存实现一致性 | |
US10713165B2 (en) | Adaptive computer cache architecture | |
US20150067246A1 (en) | Coherence processing employing black box duplicate tags | |
US9454482B2 (en) | Duplicate tag structure employing single-port tag RAM and dual-port state RAM | |
JPWO2010098152A1 (ja) | キャッシュメモリシステムおよびキャッシュメモリ制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20160920 Address after: American Texas Applicant after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP Address before: American Texas Applicant before: Hewlett-Packard Development Company, Limited Liability Partnership |
|
GR01 | Patent grant | ||
GR01 | Patent grant |