CN105359114B - 用于在寻址方案之间进行迁移的方法和系统 - Google Patents

用于在寻址方案之间进行迁移的方法和系统 Download PDF

Info

Publication number
CN105359114B
CN105359114B CN201580001179.5A CN201580001179A CN105359114B CN 105359114 B CN105359114 B CN 105359114B CN 201580001179 A CN201580001179 A CN 201580001179A CN 105359114 B CN105359114 B CN 105359114B
Authority
CN
China
Prior art keywords
address
boundary line
request
memory
cou
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
Application number
CN201580001179.5A
Other languages
English (en)
Other versions
CN105359114A (zh
Inventor
A·瓦西德萨法
C·W·M·陈
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 International Corp
Original Assignee
Oracle International Corp
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 International Corp filed Critical Oracle International Corp
Publication of CN105359114A publication Critical patent/CN105359114A/zh
Application granted granted Critical
Publication of CN105359114B publication Critical patent/CN105359114B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2069Management of state, configuration or failover
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing

Abstract

一种用于在寻址方案之间进行存储器迁移的方法,包括:接收访问第一存储器地址的第一请求和访问第二存储器地址的第二请求;比较第一存储器地址和第二存储器地址与引用界线地址并且分开迁移后的地址与未迁移的地址的界线指针;响应于第一存储器地址在界线地址的未迁移侧,用指示第一寻址方案的第一标签标记第一请求;响应于第二存储器地址在界线地址的已迁移侧,用指示第二寻址方案的第二标签标记第二请求;以及将第一请求发送到第一存储器控制器单元(MCU)并且将第二请求发送到第二MCU。

Description

用于在寻址方案之间进行迁移的方法和系统
对相关申请的交叉引用
本申请援引35U.S.C.§119(e)要求于2014年3月31日提交的美国临时专利申请序列No.61/973,107的优先权。相应地,美国临时专利申请序列No.61/973,10的全部内容通过引用被结合于此。
背景技术
在计算当中,在访问请求中指定的存储器地址经历映射操作,以确定对应的存储器位置。程序生成的地址需要经历映射过程,以识别保持数据的具体硬件部件。映射的一个例子是识别具体的双列直插存储器模块(DIMM)、具体的秩(rank)、具体的库(bank)、具体的行等等。这种映射通常根据系统如何被建立而变化,并且依赖于诸如哪些槽填充有动态随机存取存储器(DRAM)硬件并且哪种类型的DRAM硬件在每个被填充的槽中存在之类的配置信息。系统配置信息一般被认为是静态的,并且DRAM配置中的任何改变都需要重新启动。如果映射操作需要改变,则典型的方法需要系统重新启动或者全部存储器流量暂停。这种方法对用户有不利的影响。无论如何,修改映射操作有时候仍然是必要的。
发明内容
总体上,在一方面,本发明涉及用于从第一寻址方案到第二寻址方案的存储器迁移的方法。该方法包括:由相关性排序单元(COU)接收访问第一存储器地址的第一请求和访问第二存储器地址的第二请求;由COU利用引用界线地址并且分开已迁移的地址与未迁移的界线指针来比较第一存储器地址和第二存储器地址;响应于第一存储器地址在界线地址的未迁移侧,由COU用指示第一寻址方案的第一标签标记第一请求;响应于第二存储器地址在界线地址的已迁移侧,由COU用指示第二寻址方案的第二标签标记第二请求;以及由COU将第一请求发送到第一存储器控制器单元(MCU)并且将第二请求发送到第二MCU,其中第一MCU响应于第一标签而根据第一寻址方案解释第一存储器地址,并且其中第二MCU响应于第二标签而根据第二寻址方案解释第二存储器地址。
总体上,在一方面,本发明涉及用于从第一寻址方案到第二寻址方案的存储器迁移的系统。该系统包括:用户应用,被配置为:发出访问第一存储器地址的第一请求;并且发出访问第二存储器地址的第二请求;相关性排序单元(COU),包括引用界线地址的界线指针并且被配置为:比较第一存储器地址和第二存储器地址与界线地址,其中界线地址分开已迁移的地址与未迁移的地址;响应于第一存储器地址在界线地址的未迁移侧而在第一请求上放置指示第一寻址方案的第一标签;并且响应于第二存储器地址在界线地址的已迁移侧而在第二请求上放置指示第二寻址方案的第二标签;以及第一存储器控制器(MC),其连接到COU并且被配置为响应于第一标签而根据第一寻址方案解释第一请求;及第二MC,其连接到COU并且被配置为响应于第二标签而根据第二寻址方案解释第二请求。
总体上,在一方面,本发明涉及用于从第一寻址方案到第二寻址方案的存储器迁移的系统。该系统包括:用户应用,被配置为:发出访问第一存储器地址的第一请求;并且发出访问第二存储器地址的第二请求;相关性排序单元(COU),被配置为:修改界线指针,以引用界线地址;比较第一存储器地址和第二存储器地址与界线地址,其中界线地址分开已迁移的地址与未迁移的地址;响应于第一存储器地址在界线地址的未迁移侧而在第一请求上放置指示第一寻址方案的第一标签;并且响应于第二存储器地址在界线地址的已迁移侧而在第二请求上放置指示第二寻址方案的第二标签;擦洗器,连接到COU并且被配置为:响应于界线指针被修改而建立时间窗口;响应于该时间窗口到期而发出指向界线地址的读请求;响应于该读请求而接收值;以及发出包括该值并指向界线地址的写请求;第一存储器控制器(MC),其连接到COU并且被配置为响应于第一标签而根据第一寻址方案解释第一请求;及第二MC,其连接到COU并且被配置为响应于第二标签而根据第二寻址方案解释第二请求。
本发明的其它方面将根据以下描述和所附权利要求变得清晰。
附图说明
图1示出了根据本发明的一个或多个实施例的系统。
图2-4示出了根据本发明的一个或多个实施例的流程图。
图5示出了根据本发明的一个或多个实施例的计算机系统。
具体实施方式
现在将参考附图详细地描述本发明的具体实施例。为了一致性,各个附图中相同的元素用相同的附图标记表示。
在以下对本发明实施例的详细描述中,阐述了众多具体细节,以便提供对本发明的更透彻理解。但是,对本领域普通技术人员将清楚的是,本发明没有这些具体细节也可以被实践。在其它情况下,众所周知的特征没有详细描述,以避免不必要地使描述复杂化。
总体上,本发明的实施例涉及用于存在实时存储器流量时的存储器地址的动态重映射的方法和系统。硬件具有被编程在其中的两种映射方案。首先,所有存储器都利用被表示为“旧的”第一映射方案被访问,并且最终所有存储器都需要利用被表示为“新的”第二映射方案被访问。迁移是借助于被称为“界线”的硬件寄存器来进行的。界线寄存器包含对照所有存储器流量进行比较的存储器地址。大于界线的地址和小于界线的地址被区别对待。一组被认为是“未迁移的”,这意味着它们必须利用旧方案进行映射;而另一组被认为是“已迁移的”,这意味着它们必须利用新方案进行映射。访问请求中的地址与引用界线地址的界线指针进行比较,其中界线地址分开已迁移的地址与未迁移的地址。如果地址落入已迁移的地址内,则访问请求被标记为已迁移的并且被发出,用于根据新寻址方案进行解释。换句话说,访问请求利用指示新寻址方案的标签进行标记。如果地址落入未迁移的地址内,则访问请求被标记为未迁移的并且因此根据旧寻址方案进行解释。换句话说,访问请求利用指示旧寻址方案的标签进行标记。对界线地址的写请求触发对界线指针的更新。
具体而言,本发明的实施例涉及与对存储器模块的访问请求相关的寻址方案的选择。另外,本发明的实施例涉及对存储器模块中的地址的访问请求(例如,只读访问请求、只写访问请求、读/写访问请求)的动态存储器迁移。
图1示出了根据本发明的一个或多个实施例的系统。如图1中所示,系统包括处理器(102)、一个或多个缓冲区芯片(例如,缓冲区芯片A(108A)、缓冲区芯片B(108B)、缓冲区芯片C(108C)、缓冲区芯片D(108D))以及一个或多个存储器模块(MM)(例如,MM A(112A)、MMB(112B)、MM C(112C)、MM D(112D)、MM E(112E)、MM F(112F)、MM G(112G)、MM H(112H)、MMI(112I)、MM J(112J)、MM K(112K)、MM L(112L)、MM M(112M)、MM N(112N)、MM O(112O)、MMP(112P))。每个部件在下面描述。
在本发明的一个或多个实施例中,每个MM(112A-112P)是包括用于存储内容(例如,数据值、高速缓存行等等)的多个位置的集成电路。这些位置当中的每一个是利用地址被引用的。用户应用生成存储器读和写,并且这种用户生成的地址由硬件利用在启动时被设置的配置信息被映射到具体的MM位置。每个MM可以是双列直插存储器模块(DIMM)。也可以使用其它类型的存储器。
在本发明的一个或多个实施例中,处理器(102)包括一个或多个存储器控制器单元(MCU)(例如,存储器控制器单元A(106A)、存储器控制器单元B(106B)、存储器控制器单元C(106C)、存储器控制器单元D(106D))。MCU(106A-106D)包括解释指定的地址并识别在对应于所指定的地址的适当MM的对应条目/位置所必需的电路。换句话说,MCU(106A-106D)执行将地址映射到MMS内的位置的映射操作。映射操作可以被称为寻址方案。
在本发明的一个或多个实施例中,MCU经由一个或多个链路(例如,链路A(110A)、链路B(110B)、链路C(110C)、链路D(110D))操作地连接到一个或多个缓冲区芯片(例如,缓冲区芯片A(108A)、缓冲区芯片B(108B)、缓冲区芯片C(108C)、缓冲区芯片D(108D))。在本发明的一个或多个实施例中,缓冲区芯片随后经由一个或多个通道(例如,通道A(114A)、通道B(114B)、通道C(114C)、通道D(114D)、通道E(114E)、通道F(114F)、通道G(114G)、通道H(114H))连接到一组两个MM。作为替代,在本发明的一个或多个实施例中,MCU可以直接连接到MM。
在本发明的一个或多个实施例中,MCU(106A-106D)能够执行不同类型的映射操作。换句话说,MCU(106A-106D)被配置为处理多于一种类型的寻址方案。由MCU接收的访问请求可以指示要使用的寻址方案的类型(下面将讨论)。例如,标签可以被用来指示寻址方案的类型。如果附连到访问请求的标签指示第一寻址方案,则MCU可以根据第一寻址方案解释访问请求中的地址。如果附连到访问请求的标签指示第二寻址方案,则MCU可以根据与第一寻址方案不同的第二寻址方案解释访问请求中的地址。例如,第一寻址方案可以是16路交织映射,而第二寻址方案可以是15路交织映射。许多其它寻址方案也是可能的。
在本发明的一个或多个实施例中,可能变得有必要重定位MM中的内容。例如,如果MM被预测要失效,或者已经失效但失效的本质仍然允许经由纠错码(ECC)对数据进行纠正,则MM中的内容可能需要被重定位到一个或多个操作的MM中的新位置。假定存在一组引用需要被重定位的存储器位置的地址。在重定位之后,新的寻址方案可以被应用到这组地址。换句话说,可能有必要从第一(旧)寻址方案迁移到第二(新)寻址方案。但是,由于重定位不是瞬间的,因此寻址方案之间的迁移也不是瞬间的。在迁移/重定位期间,第一寻址方案仍应用到引用尚未被重定位的位置的地址(“未迁移的地址”)。相比之下,第二寻址方案被应用到引用已经重定位的位置的地址(“已迁移的地址”)。
在本发明的一个或多个实施例中,处理器(102)包括相关性排序单元(COU)(104)。COU(104)是处理器(102)内能看到所有(或大多数)存储器流量的硬件单元。COU(104)包括界线指针。界线指针在迁移过程中被使用。具体而言,界线指针引用在引用处于重定位过程中的位置的地址集合中的界线地址。界线地址有效地将该地址集合分区(即,分开、分组)成已迁移的地址和未迁移的地址。例如,在被界线指针引用的地址“之上”的每个地址可以被认为是已迁移的地址。类似地,在被界线指针引用的地址“之下”的每个地址可以被认为是未迁移的地址。界线地址本身可以被认为是未迁移的地址。
在一个或多个实施例中,COU(104)具有接收针对MM中任何存储器位置的访问请求的功能。这些请求可以源自在处理器(102)上执行的用户应用(116)。访问请求可以对应于只读访问请求、只写访问请求、读/写访问请求,或者操纵或检查MM中的数据的任何请求。另外,COU(104)具有比较访问请求中的地址与界线指针以确定应当被用来将地址映射到存储器位置的寻址方案的功能。例如,如果访问请求中的地址落入已迁移的地址内,则第二寻址方案应当被用来解释该地址。作为另一个例子,如果该访问请求中的地址落入未迁移的地址内,则第一寻址方案应当被用来解释该地址。更进一步,COU(104)包括标记访问请求以指示用于解释的适当寻址方案的功能。
在本发明的一个或多个实施例中,当访问请求是只写或读/写请求并且在访问请求中指定的存储器地址是界线地址时,COU(104)包括更新界线指针以引用下一个未迁移的存储器地址的功能。重定位是通过匹配界线地址的写请求以及该写请求中的内容到由第二寻址方案识别的存储器位置的后续写入而发生的。受益于该详细描述的本领域技术人员将认识到,更新界线指针可以包括增大或减小界线指针。
受益于本详细描述的本领域技术人员将认识到,正常的存储器流量会自动造成界线指针移动。但是,存在很少被写入的存储器区域。为了保证迁移在可预测的时间量内完成,有必要具有帮助界线指针前进的擦洗器(scrubber)功能,该功能在后台运行直到迁移完成。擦洗器功能检测到界线地址未移动已有预定的时间窗口,然后生成匹配界线地址的写访问。擦洗器功能可以被实现为硬件状态机,或者委托给软件应用(例如,擦洗器应用(114))。在本发明的一个或多个实施例中,擦洗器应用(114)在处理器(102)上执行。如果界线指针更新在预定时间窗口内未发生,则擦洗器应用(114)包括创建匹配界线地址的写访问的功能,从而迫使界线指针更新,并且因此迫使迁移继续。擦洗器应用可以独立于发出访问请求的用户应用。当界线指针被更新为引用新界线地址时,擦洗器应用启动定时器或时间窗口。如果界线指针继续引用相同的界线地址预定的时间窗口(例如,5毫秒、10秒、3个周期等等),则擦洗器被触发,以发出对存储在界线地址中的内容(即,数据值)的读请求,然后发出带有该数据值的、针对界线地址的写请求。如以上所讨论的,这将迫使COU(104)更新界线指针,以引用新界线地址。
虽然图1示出了16个MM,但是在不背离本发明的情况下,2N个MM或任何数量的MM都可以被使用。另外,虽然图1示出了部件的配置,但是在不背离本发明范围的情况下,可以使用其它配置。例如,各种部件可以被组合,以创建单个部件。作为另一个例子,由单个部件执行的功能可以由两个或更多个部件执行。
图2示出了根据本发明的一个或多个实施例的流程图。图2中的一个或多个步骤可以由图1中的一个或多个部件(例如,COU(104)、擦洗器应用(114)等等)执行。虽然这个流程图中的各个步骤依次被给出并进行描述,但是普通技术人员将认识到,这些步骤当中的一些或全部可以以不同的次序被执行、可以被组合或省略,并且这些步骤当中的一些或全部可以被并行执行。此外,这些步骤可以被主动或动地执行。例如,根据本发明的一个或多个实施例,一些步骤可以利用轮询来执行或者可以被中断驱动。作为例子,根据本发明的一个或多个实施例,确定步骤可以不需要处理器处理指令,除非接收到表示那种条件存在的中断。作为另一个例子,根据本发明的一个或多个实施例,确定步骤可以通过执行测试来执行,诸如检查数据值来测试该值是否与被测试的条件一致。
最初,对存储器地址的访问请求由COU接收(步骤202)。访问请求可以由例如用户应用、硬件处理发出,不管迁移还没有开始、已完成或者正在进行中。访问请求可以是读请求、写请求或者读/写请求。访问请求在不同寻址方案之间的迁移期间被接收。
在步骤204中,确定在访问请求中指定的存储器地址是否在界线地址的已迁移侧。换句话说,存储器地址与引用界线地址的界线指针进行比较。如以上所讨论的,界线地址有效地将地址集合分区(即,分开、分组)为已迁移的地址与未迁移的地址。当确定存储器地址落入已迁移的地址内时,过程前进到步骤208,在那里,请求被标记为根据新的寻址方案进行解释。然后,加标签的地址请求被发送到MCU。
在步骤210中,存储器地址由MCU基于标签的类型进行解释(即,标签是指示旧寻址方案还是新寻址方案)。如以上所讨论的,MCU被配置为处理多于一种类型的寻址方案,并且寻址方案实质上是识别对应于所指定地址的适当MM中的对应条目/位置的映射操作。期望的寻址方案由标签的类型指示。例如,直接从步骤204到达的访问请求可以根据第一寻址方案来解释,因为没有标签附连/附加到该访问请求。此外或者作为替代,经由步骤208到达的访问请求可以根据第二寻址方案来解释,因为有标签附连/附加到该访问请求。
在步骤212中,确定在访问请求中指定的存储器地址是否匹配界线地址。换句话说,存储器地址与引用界线地址的界线指针进行比较,并且确定这两个地址是否相同。当确定这两个地址不同时,过程前进到步骤214,在那里,请求被标记为根据旧寻址方案进行解释。然后,加标签的地址请求被发送到MCU以用于在步骤210进行解释。但是,当确定这两个地址相同时,过程前进到下面参考图3讨论的子过程。
图3示出了根据本发明的一个或多个实施例的流程图。图3中的一个或多个步骤可以由图1中的一个或多个部件(例如,COU(104)、擦洗器应用(114)等等)执行。虽然这个流程图中的各个步骤依次被给出并进行描述,但是普通技术人员将认识到,这些步骤当中的一些或全部可以以不同的次序被执行、可以被组合或省略,并且这些步骤当中的一些或全部可以被并行执行。
首先,确定请求是否是写入(步骤302)。当确定请求不是写请求(即,请求是读取)时,请求被标记为指示旧寻址方案(步骤310)。具体而言,该读请求被标记为指示旧寻址方案,因为在该请求中指定的存储器地址匹配界线地址,并且存储在界线地址处的内容还没有被迁移到由新存储器方案寻址的新存储器位置。在步骤312中,具有附连/附加标签的读请求被发送到MCU,并且由于该标签,由MCU根据旧寻址方案来解释。当确定该请求是写请求时,过程前进到步骤304。
在步骤304中,写请求被标记为指示新寻址方案。具体而言,写请求被标记,因为在该请求中指定的存储器地址匹配界线地址并且写请求不尝试读取存储在界线地址处的内容。
在步骤306中,匹配界线地址、具有附连/附加标签的写请求被发送到MCU,并且由于该标签,由MCU根据新寻址方案来解释。如以上所讨论的,寻址方案是识别对应于所指定地址的适当MM中对应的条目/位置的映射操作。写请求中的数据可以被写入到通过映射操作识别出的条目/位置。还如以上所讨论的,重定位是通过对界线地址的写请求而发生的。
在步骤308中,根据本发明的一个或多个实施例,界线指针被更新。换句话说,界线指针增大或减小,以引用下一个未迁移的地址。
图4示出了根据本发明的一个或多个实施例的流程图。图4中的一个或多个步骤可以由图1中的一个或多个部件(例如,COU(104)、擦洗器应用(114)等等)执行。虽然这个流程图中的各个步骤依次被给出并进行描述,但是普通技术人员将认识到,这些步骤当中的一些或全部可以以不同的次序被执行、可以被组合或省略,并且这些步骤当中的一些或全部可以被并行执行。
最初,擦洗器应用建立时间窗口(步骤402)。时间窗口是响应于界线指针被更新而建立的。时间窗口可以是任何持续时间(例如,5毫秒、10秒、3个周期等等)。
在步骤404中,由擦洗器应用确定时间窗口是否已到期。如果时间窗口还没有到期,则过程返回到步骤404。但是,如果时间窗口已到期,则过程前进到步骤406。
在步骤406中,由擦洗器应用确定是否在时间窗口期间接收到对界线地址的写请求。当确定在时间窗口期间接收到对界线地址的写请求并且因此界线指针最近已被更新过时,图4中所绘出的过程可以结束。作为替代,当确定在时间窗口期间未接收到对界线地址的写请求并且因此界线指针从该时间窗口被建立开始尚未被更新时,过程前进到步骤408。
在一个或多个实施例中,步骤404和步骤406可以被合并。在这样的实施例中,对界线地址的写请求一旦到达,时间窗口就迅速被终止,并且过程前进到步骤408。
在步骤408中,擦洗器应用发出对界线地址的读请求。该读请求将由COU接收并且对界线地址的读请求将不被标记。因此,界线地址将根据第一(旧)寻址方案被解释,并且界线指针将不被更新。
在步骤410中,擦洗器应用响应于读请求而接收存储在对应于界线地址的存储器位置中的值。
在步骤412中,擦洗器应用发出包括数据值(即,在步骤410中接收到的数据值)的、对界线地址的写请求。该写请求将由COU接收,并且对界线地址的写请求将被标记。因此,界线地址将根据第二(新)寻址方案来解释。而且,该数据值将被存储在由第二寻址方案识别出的存储器位置中。换句话说,这个写请求使重定位过程递增地前进。
在步骤414中,界线指针被更新。具体而言,界线指针被增大(或减小),以引用地址集合中的下一个未迁移的地址。界线指针的这种变化作为COU响应于写请求的正常操作的一部分而自动发生。擦洗器应用不能直接访问界线指针并且不能简单地将界线指针设置为任意值。
本发明的一个或多个实施例可以具有以下优点:在不同的寻址方案之间迁移而无需重新启动或暂停存储器流量的能力;利用界线指针将地址分区为已迁移地址和未迁移地址的能力;通过在访问请求上放置指示旧寻址方案或新寻址方案的标签来选择寻址方案的能力;利用擦洗器应用迫使界线指针更新的能力;等等。
本发明的实施例可以在几乎任何类型的计算系统上实现,与所使用的平台无关。例如,计算系统可以是一个或多个移动设备(例如,膝上型计算机、智能电话、个人数字助理、平板计算机或其它移动设备)、台式计算机、服务器、服务器机箱中的刀片或者包括至少最小处理能力、存储器以及(一个或多个)输入和输出设备以执行本发明的一个或多个实施例的任何其它类型的一个或多个计算设备。例如,如图5中所示,计算系统(500)可以包括一个或多个计算机处理器(502)、关联的存储器(504)(例如,随机存取存储器(RAM)、高速缓存存储器、闪存存储器等等)、一个或多个存储设备(506)(例如,硬盘、诸如紧凑盘(CD)驱动或数字多功能盘(DVD)驱动的光盘驱动、闪存记忆棒等等),以及众多其它元件和功能。(一个或多个)计算机处理器(502)可以是用于处理指令的集成电路。例如,(一个或多个)计算机处理器可以是处理器的一个或多个核或微核。计算系统(500)还可以包括一个或多个输入设备(510),诸如触摸屏、键盘、鼠标、麦克风、触摸板、电子笔或任何其它类型的输入设备。另外,计算系统(500)可以包括一个或多个输出设备(508),诸如屏幕(例如,液晶显示器(LCD)、等离子体显示器、触摸屏、阴极射线管(CRT)监视器、投影仪或其它显示设备)、打印机、外部储存器或任何其它输出设备。一个或多个输出设备可以与(一个或多个)输入设备相同或不同。计算系统(500)可以经由网络接口连接(未示出)连接到网络(514)(例如,局域网(LAN)、诸如互联网的广域网(WAN)、移动网络或任何其它类型的网络)。(一个或多个)输入和输出设备可以本地或远程(例如,经由网络(512))连接到(一个或多个)计算机处理器(502)、存储器(504)和(一个或多个)存储设备(506)。存在许多不同类型的计算系统,并且以上提到的(一个或多个)输入和输出设备可以采取其它形式。
执行本发明实施例的、计算机可读程序代码形式的软件指令可以全部或部分地、暂时或永久地存储在非瞬时计算机可读介质上,诸如CD、DVD、存储设备、盘、带、闪存存储器、物理存储器或任何其它计算机可读存储介质。具体而言,软件指令可以对应于计算机可读程序代码,当其被(一个或多个)处理器执行时,被配置为执行本发明的实施例。
另外,以上提到的计算系统(500)的一个或多个元件可以位于远程位置处并且经网络(514)连接到其它元件。另外,本发明的实施方式可以在具有多个节点的分布式系统上实现,其中本发明的每个部分可以位于分布式系统内的不同节点上。在本发明的一种实施例中,节点对应于不同的计算设备。作为替代,节点可以对应于具有关联的物理存储器的计算机处理器。节点可以作为替代地对应于具有共享存储器和/或资源的计算机处理器或计算机处理器的微核。
虽然本发明已经关于有限数量的实施例进行了描述,但是受益于本公开内容的本领域技术人员将认识到,可以设计出不背离如本文公开的本发明的范围的其它实施例。因此,本发明的范围应当只由所附权利要求来限定。

Claims (20)

1.一种用于从第一寻址方案到第二寻址方案的迁移的方法,包括:
由相关性排序单元COU接收访问第一存储器地址的第一请求和访问第二存储器地址的第二请求;
由所述COU将第一存储器地址和第二存储器地址与界线指针进行比较,所述界线指针引用界线地址并将已迁移的地址与未迁移的地址分开;
响应于第一存储器地址在界线地址的未迁移侧,由所述COU用指示第一寻址方案的第一标签来对第一请求进行标记;
响应于第二存储器地址在界线地址的已迁移侧,由所述COU用指示第二寻址方案的第二标签来对第二请求进行标记;及
由所述COU将第一请求发送到第一存储器控制器单元MCU并且将第二请求发送到第二MCU,
其中第一MCU响应于第一标签而根据第一寻址方案解释第一存储器地址,及
其中第二MCU响应于第二标签而根据第二寻址方案解释第二存储器地址。
2.如权利要求1所述的方法,还包括:
接收对界线地址进行写访问的第三请求;
利用第二标签对第三请求进行标记;
在对第三请求进行标记之后,由所述COU发送第三请求以用于解释;及
响应于第三请求而增大界线指针,以引用新的界线地址,
其中已迁移的地址低于所述新的界线地址。
3.如权利要求2所述的方法,还包括:
由所述COU从擦洗器应用接收指向界线地址的读请求,
其中第一请求、第二请求和第三请求来自用户应用;
响应于所述读请求而将存储在界线地址的值发送到所述擦洗器应用;
由所述COU从擦洗器应用接收包括所述值并且指向界线地址的写请求;
由所述COU利用第二标签来对所述写请求进行标记;
发送所述写请求以用于解释;及
响应于所述写请求而增大界线指针,以引用新的界线地址,
其中已迁移的地址低于所述新的界线地址。
4.如权利要求3所述的方法,还包括:
在从所述擦洗器应用接收指向界线地址的所述读请求之前,增大界线指针,以引用界线地址;
响应于增大界线指针以引用界线地址而触发时间窗口;及
由擦洗器应用响应于所述时间窗口的到期而发出所述读请求,
其中所述COU在所述时间窗口内没有接收到访问界线地址的请求。
5.如权利要求1所述的方法,其中:
存储器迁移是由多个交织的存储器模块当中的存储器模块的失效而触发的;及
所述多个交织的存储器模块具有2N的基数。
6.如权利要求5所述的方法,其中N等于4。
7.如权利要求5所述的方法,其中增大界线指针包括将由界线指针引用的界线地址加2N
8.如权利要求5所述的方法,还包括:
生成引用所述存储器模块中的条目的地址的数据结构,
其中增大界线指针包括将界线指针前进一到所述数据结构中的下一个地址。
9.如权利要求5所述的方法,其中所述存储器模块是DIMM。
10.如权利要求1所述的方法,其中第一寻址方案是16路交织映射,并且其中第二寻址方案是15路交织映射。
11.一种用于从第一寻址方案到第二寻址方案的迁移的系统,该系统包括:
用户应用,被配置为:
发出访问第一存储器地址的第一请求;及
发出访问第二存储器地址的第二请求;
相关性排序单元COU,包括引用界线地址的界线指针并且被配置为:
比较第一存储器地址和第二存储器地址与界线地址,其中界线地址分开已迁移的地址与未迁移的地址;
响应于第一存储器地址在界线地址的未迁移侧而在第一请求上放置指示第一寻址方案的第一标签;及
响应于第二存储器地址在界线地址的已迁移侧而在第二请求上放置指示第二寻址方案的第二标签;及
第一存储器控制器MC,连接到所述COU并且被配置为响应于第一标签而根据第一寻址方案解释第一请求;及
第二MC,连接到所述COU并且被配置为响应于第二标签而根据第二寻址方案解释第二请求。
12.如权利要求11所述的系统,还包括:
擦洗器,连接到所述COU并且被配置为:
发出指向界线地址的读请求;
响应于所述读请求而接收值;及
发出包括所述值并且指向界线地址的写请求,
其中所述COU还被配置为:
利用第二标签来对所述写请求进行标记;
发送所述写请求以用于解释;及
响应于所述写请求而增大界线指针,以引用新的界线地址,
其中已迁移的地址低于所述新的界线地址。
13.如权利要求12所述的系统,其中:
擦洗器包括定时器;
所述定时器响应于界线指针增大而建立时间窗口;
响应于所述时间窗口的到期,所述读请求被擦洗器发出;及
在所述时间窗口内所述COU没有接收到访问界线地址的请求。
14.如权利要求11所述的系统,还包括:
多个交织的存储器模块,具有2N的基数,
其中存储器迁移是由所述多个交织的存储器模块当中的存储器模块的失效而触发的。
15.如权利要求14所述的系统,其中N等于4。
16.如权利要求14所述的系统,其中所述存储器模块是DIMM。
17.如权利要求14所述的系统,其中所述COU还包括:
引用所述存储器模块中的条目的地址的数据结构,
其中增大界线指针包括将界线指针前进一到所述数据结构中的下一个地址。
18.如权利要求11所述的系统,其中第一寻址方案是16路交织映射,并且其中第二寻址方案是15路交织映射。
19.一种用于从第一寻址方案到第二寻址方案的迁移的系统,该系统包括:
用户应用,被配置为:
发出访问第一存储器地址的第一请求;及
发出访问第二存储器地址的第二请求;
相关性排序单元COU,被配置为:
修改界线指针,以引用界线地址;
比较第一存储器地址和第二存储器地址与界线地址,其中界线地址分开已迁移的地址与未迁移的地址;
响应于第一存储器地址在界线地址的未迁移侧而在第一请求上放置指示第一寻址方案的第一标签;及
响应于第二存储器地址在界线地址的已迁移侧而在第二请求上放置指示第二寻址方案的第二标签;
擦洗器,连接到所述COU并且被配置为:
响应于界线指针被修改而建立时间窗口;
响应于所述时间窗口的到期而发出指向界线地址的读请求;
响应于所述读请求而接收值;及
发出包括所述值并指向界线地址的写请求;
第一存储器控制器MC,连接到所述COU并且被配置为响应于第一标签而根据第一寻址方案解释第一请求;及
第二MC,连接到所述COU并且被配置为响应于第二标签而根据第二寻址方案解释第二请求。
20.如权利要求19所述的系统,其中:
已迁移的地址在界线地址之上;
修改界线指针包括减小界线指针;及
从第一寻址方案到第二寻址方案的迁移是由多个交织的存储器模块中的存储器模块的失效而触发的。
CN201580001179.5A 2014-03-31 2015-03-31 用于在寻址方案之间进行迁移的方法和系统 Active CN105359114B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201461973107P 2014-03-31 2014-03-31
US61/973,107 2014-03-31
PCT/US2015/023641 WO2015153645A1 (en) 2014-03-31 2015-03-31 Memory migration in presence of live memory traffic

Publications (2)

Publication Number Publication Date
CN105359114A CN105359114A (zh) 2016-02-24
CN105359114B true CN105359114B (zh) 2018-09-18

Family

ID=53039585

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580001179.5A Active CN105359114B (zh) 2014-03-31 2015-03-31 用于在寻址方案之间进行迁移的方法和系统

Country Status (4)

Country Link
US (2) US9569322B2 (zh)
EP (1) EP3033680B1 (zh)
CN (1) CN105359114B (zh)
WO (1) WO2015153645A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170161203A1 (en) * 2015-12-03 2017-06-08 Intel Corporation Increased memory capacity
US10168942B2 (en) * 2016-09-01 2019-01-01 Vmware, Inc. Automatically removing dependency on slow disks in a distributed storage system
US11726979B2 (en) 2016-09-13 2023-08-15 Oracle International Corporation Determining a chronological order of transactions executed in relation to an object stored in a storage system
US10860534B2 (en) 2016-10-27 2020-12-08 Oracle International Corporation Executing a conditional command on an object stored in a storage system
US10275177B2 (en) * 2016-10-31 2019-04-30 Oracle International Corporation Data layout schemas for seamless data migration
US11216370B2 (en) * 2018-02-20 2022-01-04 Medtronic, Inc. Methods and devices that utilize hardware to move blocks of operating parameter data from memory to a register set
CA3115202A1 (en) * 2018-12-05 2020-06-11 Landmark Graphics Corporation Application of the ensemble kalman filter to dynamic history matching in wellbore production
US11307631B2 (en) * 2019-05-29 2022-04-19 Advanced Micro Devices, Inc. Dynamic voltage frequency scaling based on active memory barriers

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003071419A2 (en) * 2001-12-10 2003-08-28 Incipient, Inc. Fast path for performing data operations

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7173929B1 (en) * 2001-12-10 2007-02-06 Incipient, Inc. Fast path for performing data operations
US7158990B1 (en) * 2002-05-31 2007-01-02 Oracle International Corporation Methods and apparatus for data conversion
DE602004008240T2 (de) * 2004-06-14 2008-05-15 Stmicroelectronics S.R.L., Agrate Brianza Verfahren zum Verwalten von defekten Speicherblöcken in einem nicht-flüchtigen Speicher und nicht-flüchtiger Speicher zur Ausführung des Verfahrens
US8417961B2 (en) * 2010-03-16 2013-04-09 Oracle International Corporation Apparatus and method for implementing instruction support for performing a cyclic redundancy check (CRC)
US8527559B2 (en) * 2010-04-23 2013-09-03 Clausal Computing Oy Garbage collector with concurrent flipping without read barrier and without verifying copying
US8201024B2 (en) * 2010-05-17 2012-06-12 Microsoft Corporation Managing memory faults
US9003149B2 (en) 2011-05-26 2015-04-07 International Business Machines Corporation Transparent file system migration to a new physical location
US9032244B2 (en) * 2012-11-16 2015-05-12 Microsoft Technology Licensing, Llc Memory segment remapping to address fragmentation
US9092152B1 (en) * 2013-03-14 2015-07-28 Datadirect Networks, Inc. Data storage system employing a distributed compute engine memory controller with embedded logic and arithmetic functionality and method for data migration between high-performance computing architectures and data storage devices using the same
US9298389B2 (en) * 2013-10-28 2016-03-29 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Operating a memory management controller
US9136014B2 (en) * 2013-12-23 2015-09-15 Storart Technology Co. Ltd. Method for replacing the address of some bad bytes of the data area and the spare area to good address of bytes in non-volatile storage system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003071419A2 (en) * 2001-12-10 2003-08-28 Incipient, Inc. Fast path for performing data operations

Also Published As

Publication number Publication date
US9569322B2 (en) 2017-02-14
US20150278109A1 (en) 2015-10-01
US20150278053A1 (en) 2015-10-01
US9645903B2 (en) 2017-05-09
CN105359114A (zh) 2016-02-24
WO2015153645A1 (en) 2015-10-08
EP3033680B1 (en) 2020-09-02
EP3033680A1 (en) 2016-06-22

Similar Documents

Publication Publication Date Title
CN105359114B (zh) 用于在寻址方案之间进行迁移的方法和系统
US11550819B2 (en) Synchronization cache seeding
CN102081574B (zh) 用于加快系统的唤醒时间的方法和系统
US20150100744A1 (en) Methods and apparatuses for requesting ready status information from a memory
CN103782282B (zh) 具有用于虚拟化输入/输出的处理器局部一致性的计算机系统
KR101703403B1 (ko) 감소된 지연을 갖는 원격 직접 메모리 액세스
CN109101342B (zh) 分布式作业协调控制方法、装置、计算机设备及存储介质
CN113127177B (zh) 处理装置及分布式处理系统
US10572434B2 (en) Intelligent certificate discovery in physical and virtualized networks
CN109447253B (zh) 显存分配的方法、装置、计算设备及计算机存储介质
US20200081654A1 (en) Command processing method and storage controller using the same
US9553761B2 (en) Dynamic server to server configuration and initialization
JP5307151B2 (ja) リンクに基づくシステムにおけるシステムルーティング情報の変更
TW201447750A (zh) 合併記憶體存取請求之技術
CN106354435B (zh) Raid初始化的方法及装置
US20210064356A1 (en) Automatic probabilistic upgrade of tenant devices
US9490988B2 (en) Continuous information transfer with reduced latency
CN104951244B (zh) 用于存取数据的方法和设备
JP2020194521A (ja) 仮想マシンを起動させるための方法、装置、デバイス及び媒体
CN112860595B (zh) Pci设备或pcie设备、数据存取方法及相关组件
CN113031863B (zh) Ssd命令相关性管理方法、装置、计算机设备及存储介质
US11231881B2 (en) Raid data storage device multi-step command coordination system
JP2020113256A (ja) メモリシステム及びデータ処理システム
US8799616B2 (en) Method and system for preferred CPU binding on virtual partitions
EP3716062A1 (en) Method and system of generating microservices for cloud computing systems

Legal Events

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