CN108153683B - 用于在存储器中的地址范围之间传输数据的装置和方法 - Google Patents
用于在存储器中的地址范围之间传输数据的装置和方法 Download PDFInfo
- Publication number
- CN108153683B CN108153683B CN201711192553.1A CN201711192553A CN108153683B CN 108153683 B CN108153683 B CN 108153683B CN 201711192553 A CN201711192553 A CN 201711192553A CN 108153683 B CN108153683 B CN 108153683B
- Authority
- CN
- China
- Prior art keywords
- data
- address
- memory
- transfer
- address range
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0617—Improving the reliability of storage systems in relation to availability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/0623—Address space extension for memory modules
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- 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/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching 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/10—Address translation
-
- 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/1009—Address translation using page tables, e.g. page table structures
-
- 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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/1016—Performance improvement
- G06F2212/1024—Latency reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Bus Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供了用于在存储器中的地址范围之间传输数据的装置和方法。装置包括数据传输控制器,其响应于由装置从处理元件接收到的数据传输请求,来执行传输操作以将数据从存储器中的至少一个源地址范围传输到存储器中的至少一个目的地地址范围。然后,重定向控制器被安排为:在传输操作被执行时,拦截指定目标地址范围内的目标地址的访问请求,并且执行存储器重定向操作,以使得访问请求被处理而无需等待传输操作完成。通过这样的方法,该装置可以有效地向访问请求的来源隐瞒正在进行传输操作的事实,因而传输操作可以被安排为在后台发生,并且以对在已经发出访问请求的来源上执行的软件透明的方式发生。
Description
技术领域
本技术涉及用于在存储器中的地址范围之间传输数据的装置和方法。
背景技术
在数据处理***内,可能出现希望在存储器中的不同物理位置之间移动数据块的情况。例如,存储器***通常将被安排为一系列页面,并且可能希望将数据从一个页面迁移到另一个页面,以将多个较小的页面合并成一个更大的页面等等。
通常,在***内的处理器上运行的操作***可以用来管理存储器中不同物理位置之间的数据传输。然而,在这种软件控制下传输数据的过程可能需要很长时间。这不仅消耗了大量的处理器资源,而且还需要在这段时间内采取措施,以确保试图对正在经受传输操作的数据的任何访问都不会引起数据不一致。通常这可能要求阻止写访问,直到传输操作完成。
而且,当在操作***控制下执行这样的数据迁移任务时,该过程通常需要多个存储器管理操作,由于执行这些存储器管理操作花费了时间,这也可能引起性能问题。
因此需要提供一种改进的机制来处理在存储器中的地址范围之间对数据的传输。
发明内容
在第一示例配置中,提供了一种装置,该装置包括:数据传输控制器,用于响应于由装置从处理元件接收到的数据传输请求,来执行传输操作以将数据从存储器中的至少一个源地址范围传输到存储器中的至少一个目的地地址范围;以及重定向控制器,用于在传输操作正被执行时,拦截指定目标地址范围内的目标地址的访问请求,并且执行存储器重定向操作,以使得所述访问请求被处理而无需等待传输操作完成。
在进一步的示例配置中,提供了一种***,包括:多个处理元件;耦合到所述多个处理元件并用于控制所述多个处理元件对存储器的访问的互连;该互连具有由根据第一示例配置的装置形成的传输引擎,用于代表处理元件之一执行传输操作,以便将数据从至少一个源地址范围传输到至少一个目的地地址范围,同时使得由多个处理元件发出的关于正在经受传输操作的数据的访问请求能够在传输操作正被执行时继续被处理。
在又一示例配置中,提供了一种在存储器中的地址范围之间传输数据的方法,包括:响应于从处理元件接收到的数据传输请求,采用数据传输控制器来执行传输操作以将数据从存储器中的至少一个源地址范围传输到存储器中的至少一个目的地地址范围;并且在传输操作正被执行时,拦截指定目标地址范围内的目标地址的访问请求,并且执行存储器重定向操作,以使得所述访问请求被处理而无需等待传输操作完成。
在又一示例配置中,提供了一种装置,包括:数据传输控制装置,用于响应于由装置从处理元件接收到的数据传输请求,执行传输操作以将数据从存储器中的至少一个源地址范围传输到存储器中的至少一个目的地地址范围;以及重定向控制装置,用于在传输操作正被执行时,拦截指定目标地址范围内的目标地址的访问请求,并且用于执行存储器重定向操作,以使得所述访问请求被处理而无需等待传输操作完成。
附图说明
将参考附图中所示的本技术的实施例、仅通过示例的方式进一步描述本技术,其中:
图1是根据一个实施例的***的框图;
图2是更详细地示出根据一个实施例的图1的数据传输引擎的框图;
图3示意性地示出根据一个实施例的可以保留在图2的控制寄存器内的信息;
图4A和图4B是示出根据一个实施例的在图1的***内执行的、以便将数据从存储器中的至少一个源地址范围传输到存储器中的至少一个目的地地址范围的步骤的流程图;
图5A、图5B和图5C是示出可用于实现图4B的步骤245的三种不同机制的流程图;
图6A至图6C示意性地示出了一个实施例的数据传输引擎(在这些图中被称为复制引擎)的使用,其中两个源地址范围被合并成单个更大的目的地地址范围;
图7示意性地示出了根据一个实施例的如何可以将存储器地址空间内的保留的地址范围的与数据传输引擎相关联;以及
图8示出了根据替代实施例的***,其中使用了非统一存储器访问(NUMA)配置,并且提供了多个数据传输引擎来管理数据传输操作。
具体实施方式
在参考附图讨论实施例之前,提供以下对实施例的描述。
在一个示例实施例中,提供了一种装置,其包括数据传输控制器和重定向控制器。数据传输控制器响应于由装置从处理元件接收到的数据传输请求,来执行传输操作以将数据从存储器中的至少一个源地址范围传输到存储器中的至少一个目的地地址范围。(一个或多个)源地址范围和(一个或多个)目标地址范围可以以各种方式指定,但是在一个实施例中作为从处理元件接收到的数据传输请求内的信息来提供。
然后,重定向控制器被安排为:在传输操作正被执行时,拦截指定目标地址范围内的目标地址的访问请求,并且执行存储器重定向操作,以使得访问请求被处理而无需等待传输操作完成。
通过这样的方法,某些访问请求可以由上述实施例的装置拦截,并且经受存储器重定向操作,以便即使传输操作尚未完成,也可以使得这些访问请求被处理。因此,该装置实际上可以向这种访问请求的来源隐瞒正在进行传输操作的事实。从访问请求的来源的角度来看,传输操作发生在后台,并且可以被安排为对在来源上执行的软件是透明的。当传输操作正在进行时,由这种源发出的指定目标地址范围内的地址的访问请求不被阻塞,从而显著提高性能。
目标地址范围可以以各种方式指定,但是在一个实施例中,使用该装置的***被组织成使得在发生传输操作时,发出关于正在经受那个传输操作的数据的任何访问请求将指定在目标地址范围内的目标地址,并且相应地将被重定向控制器拦截并经受存储器重定向操作。
在一个实施例中,该装置还包括设置控制器,该设置控制器被安排为接收数据传输请求,并且发出控制信号,该控制信号使得在传输操作正被执行时发出的、并且涉及由传输操作传输的数据的访问请求将目标地址范围内的地址指定为目标地址。控制信号可以采取多种形式。例如,设置控制器本身可以直接更新用于确定访问请求的地址的地址转换结构,例如存储器中的页面表,以使得在传输操作被执行时发出的、并且涉及由传输操作传输的数据的访问请求将目标地址范围内的地址指定为目标地址。在***内可向存储器的相关部分发出访问请求的各种处理元件采用用于缓冲由这些处理元件使用的地址转换数据的相关地址转换存储装置(例如转换后备缓冲器(TLB))时,设置控制器还可以发出控制信号以使得那些地址转换存储装置的相关部分被无效,这例如将确保在下一次发出涉及相关地址范围的访问时更新的页面表作为替代被引用。
在替代实施例中,设置控制器本身可以不承担这样的任务,而是控制信号可以采取确认信号的形式,该确认信号被返回给发出数据传输请求的处理元件,处理元件被安排为响应于确认信号执行上述任务。因此,例如,处理元件可以更新存储器中的页面表,使得针对正在被传输的数据发出的后续访问请求将映射到目标地址范围内的地址,并且可以另外将其自身地址转换存储器中的相关条目无效,并向***中的其它处理元件广播信号,以确保它们也将其本地地址转换存储装置的相关部分无效。
目标地址范围可以采取多种形式。它可以例如被安排为是所述至少一个源地址范围,而在另一个实施例中,其可以被安排为是所述至少一个目的地地址范围。作为另一替代方案,目标地址范围可以是与装置相关联的专用地址范围。在目标地址范围是至少一个目的地地址范围的情况下,则由设置控制器发出的控制信号将使得相关的地址转换结构在传输操作被执行之前被更新,使得在传输操作正被执行时发出的、并且涉及被传输的数据的任何访问请求将指向目标地址范围内的地址,并且在此基础上将被重定向控制器拦截。如果可替代地,目标地址范围被选择为是所述至少一个源地址范围,则在传输操作开始之前可以不更新相关的地址转换结构,以使得在传输操作发生时发出的任何访问请求将被发到源地址范围内的地址,并相应地被重定向控制器拦截。一旦传输操作已经完成,则存储器管理结构可以被更新,以便随后对相关数据的访问将指向目的地地址范围内的地址。
在使用与装置相关联的专用地址范围的示例中,在传输操作发生之前,相关的地址转换结构将被更新,使得关于被传输的数据的、在传输操作发生时发出的任何访问请求将被发到装置的专用地址范围内的地址。在这样的安排中,可以安排重定向控制器将只接收指定该专用地址范围内的地址的访问请求,因此不需要确定是否需要拦***问请求。具体来说,重定向控制器在传输操作正被执行时接收到的任何访问请求将被视为被拦截的,并因此经受存储器重定向操作。一旦传输操作完成,则地址转换结构可以再次被更新,使得关于相关数据的任何后续访问将指向目标地址范围内的地址。
存储器重定向操作可以由重定向控制器执行的方式有多种。在第一示例实施例中,重定向控制器被安排为执行所述存储器重定向操作,使得:当所拦截的访问请求是读访问请求时,目标地址被映射到所述至少一个源地址范围内的对应源地址以使得从所述对应源地址执行读操作;当所拦截的访问请求是写访问请求时,目标地址被映射到所述至少一个源地址范围内的对应源地址和所述至少一个目的地地址范围内的对应目的地地址,以使得对对应源地址和对应目的地地址都执行写操作。这种方法确保在至少一个目的地地址范围内创建的数据的原始版本和复制版本保持同步,但是重复写操作。然而,如果所讨论的地址范围没有被大量使用,则这种方法的开销可能会很低,因此在传输操作正被执行期间这种写访问请求的发生将是低的。
在可替换的实施例中,所述数据传输控制器被安排为维护传输操作的进度记录,并且重定向控制器被安排为执行存储器重定向操作,使得:当所拦截的访问请求的目标地址与其数据尚未被传输操作传输的地址相关时,目标地址被映射到相应的源地址,以使得对该相应的源地址执行访问;并且当所拦截的访问请求的目标地址与其数据已经通过传输操作传输的地址相关时,目标地址被映射到相应的目的地地址,以使得对相应的目的地地址执行访问。这样的方法需要重定向控制器监视由数据传输控制器维护的关于传输操作进行的进度的信息,以便决定如何处理所拦截的访问请求,但是避免了以下要求:在所拦截的访问请求是写请求时复制写操作。通常,对于源地址范围内的地址顺序地执行传输操作,因此识别已经传输的数据和尚未传输的数据所需的状态信息相对较小。
在又一个替代实施例中,数据传输控制器可以被安排为维护传输操作的进度的记录,并且重定向控制器被安排为执行存储器重定向操作,使得:当被拦截的访问请求的目标地址与其数据尚未通过传输操作传输的地址相关时,数据传输控制器被安排为在处理所拦截的访问请求之前发起对包括与目标地址相关联的数据的数据块的传输;当被拦截的访问请求的目标地址与其数据已经通过传输操作传输的地址相关时,目标地址被映射到是对应源地址和对应目的地地址之一的地址,以使得对该对应地址执行访问。
在一个实施例中,当所拦截的访问请求的目标地址与其数据已经通过传输操作传输的地址相关时,目标地址被映射到对应的目的地地址,因为假定最新的版本将被维护在目的地地址范围内。然而,在一个替代实施例中,可以采用写时复制机制,其中当执行写操作时,将源地址处的原始数据复制到目的地地址,然后对源地址处的数据执行写。在这种情况下,当所拦截的访问请求的目标地址与其数据已经通过传输操作传输的地址相关时,将目标地址映射到相应的源地址是适当的。对于下面的讨论,将假定根据上面讨论的第一个选项将目标地址映射到目标地址。
在开始传输包括与目标地址相关联的数据的数据块之后,当所拦截的访问请求与尚未传输的数据有关时,可以有多种方式来处理所拦截的访问请求。例如,在一个实施例中,访问请求可以暂时停止,同时该数据块被传输,然后更新进度记录以标识数据已经被传输,然后通过将目标地址映射到相应的目的地地址来处理访问请求。然而,通过将访问请求的处理与数据块的传输有效地合并,可以提高性能。例如,数据块的传输将涉及数据传输控制器从相关源地址范围读数据块,然后将该数据写出到相关的目的地地址范围。在访问请求是读访问请求的情况下,一旦数据已经被读取,则访问请求所需的数据可以直接从所读取的数据块获得,并返回以处理访问请求。类似地,如果访问请求是写访问请求,那么一旦数据块已经被读取,则由写访问请求指定的写数据可以被合并到所读取的数据中,然后合并的合并数据被写出到目的地地址范围,由此在执行将数据块从相关的源地址范围传输到相关的目的地地址范围期间处理写访问请求。
在一个实施例中,该装置还可以包括控制存储装置,用于存储用于控制数据传输控制器执行传输操作的控制信息,控制存储装置存储关于所述至少一个源地址范围的指示、关于所述至少一个目的地地址范围的指示、以及标识传输操作的进度的进度指示数据。如果需要,还可以保留其它信息。例如,可以使用控制数据来指示当从源地址范围读数据时应该使用的特定类型的读访问请求(如稍后将更详细讨论的,这可以通过使源范围中的数据的缓存副本无效来改善缓存利用率),或者可以使用有效标志等来指示其内容涉及尚未完成的传输操作的条目。在完成传输操作后,可以清除相关的有效标志,以指示该条目可以被重新用于后续的数据传输请求。
如前所述,在一些实施例中,目标地址范围可以是所述至少一个源地址范围或所述至少一个目标地址范围。在一个实施例中,重定向控制器可以被安排为在传输操作正在进行时接收正被发送到存储器的所有访问请求,并且确定应该拦截哪些访问请求,而在其它实施例中,重定向控制器可以仅接收该请求的子集,互连确定重定向控制器将接收哪个子集。在一个实施例中,重定向控制器可以被安排为在传输操作正被执行时,参考控制存储装置以确定接收到的访问请求是否将被拦截并因此经受存储器重定向操作。具体而言,通过这种方式,重定向控制器可以检测访问请求所指定的地址何时落入至少一个目的地地址范围(当至少一个目的地地址范围被用作目标地址范围时)、或者至少一个源地址范围(当至少一个源地址范围被用作目标地址范围时)内,并且相应地可以检测哪些访问请求需要被拦截。
在目标地址范围是与装置相关联的专用地址范围的情况下,则不需要这样的检查,因为重定向控制器可以被安排为使得它接收的唯一的访问请求是指定与装置的专用地址范围相关联的地址的访问请求,并且将对所有这样的接收的访问请求执行存储器重定向操作。然后可以在执行存储器重定向操作期间参考控制存储装置,以便根据所采用的存储器重定向技术来确定如何重定向访问请求。
在一个实施例中,处理元件被安排为实现虚拟地址到对应物理地址的地址转换,并且访问地址转换存储装置以存储用于将虚拟地址转换为所述存储器的页面内的物理地址的地址转换数据,所述地址转换数据是从存储在所述存储器内的页面表中的描述符信息中导出的,并且发出数据传输请求以便将数据从至少一个源页面传输到所述存储器内的至少一个目的地页面。将数据从一个或多个源页面迁移到存储器内的一个或多个目标页面可以由于实现虚拟寻址的***内的各种原因而发生。例如,可能希望将物理存储器中的多个不连续的页面迁移到物理存储器的可合并以形成更大、连续的物理页面(在此将被称为聚集操作)的区域。或者,可能希望将较大的页面分割成多个较小的页面(在此称为分散操作)。数据迁移还可以由于其它原因而执行,例如ECC(错误校正码)触发的数据迁移、非统一存储器访问(NUMA)***中的数据迁移等。
在使用虚拟寻址的这样的实施例中,希望在传输操作正在被执行时采取步骤主动地控制存储器内的页面表的内容,并使地址转换存储装置中的某些条目无效以确保那些更新的页面表在传输操作正在进行时被引用用于随后的访问请求。例如,在其中目标地址范围被选择为包括所述至少一个目的地地址范围的一个实施例中,设置控制器可以被安排为在数据传输控制器执行所述传输操作之前,发出控制信号以使得所述存储器内的页面表被更新,使得被转换成所述至少一个源地址范围内的物理地址的虚拟地址将被转换成所述至少一个目的地地址范围内的物理地址,设置控制器还发出控制信号,以在地址转换存储装置内使得为要经受传输操作的数据提供地址转换数据的任何条目无效。
通过采取这样的步骤,可以确保地址转换存储装置中的过时信息不被用于针对正在经受传输操作的数据发出的后续访问请求,而是将参考更新的页面表,由此任何这样的访问请求将指定在至少一个目的地地址范围内的地址,并且因此将被重定向控制器拦截。
如前所述,在一个实施例中,设置控制器可以发出控制信号以便直接更新页面表和/或直接使地址转换存储装置中的相关条目无效。然而,在替代实施例中,由设置控制器发出的控制信号可以采取确认信号的形式,该确认信号被返回到发出数据传输请求的处理元件,该处理元件响应于这样的确认信号来执行对存储器中的页面表的必要的更新,并使其地址转换存储装置中的相关条目无效。在提供可以访问存储器的多个处理元件的***中,该处理元件还可以向其它处理元件广播信号,使它们也使其本地地址转换存储装置中的相关条目无效。
虽然单独的控制信号可以由设置控制器发出以引起页面表的更新并且使地址转换存储装置内的相关条目无效,但是在一个实施例中,可以发出单个控制信号来使得两个步骤都被执行。
如前所述,在一个或多个源地址范围用于目标地址的替代实施例中,可以推迟页面表的更新和相关地址转换存储装置条目的无效,直到传输操作完成之后。
与先前操作***控制的物理存储器中的数据迁移相比,上述实施例可以提供显著的性能优点。具体地,在上述实施例中,至少一个目的地地址范围或至少一个源地址范围被用作目标地址范围,地址转换存储装置(例如可以是转换后备缓冲器(TLB))内的相关条目的无效仅需要在数据传输过程的执行期间发生一次。相比之下,当采用已知的操作***控制方法时,存储器中的页面表最初将被更新,只是将源地址范围的访问权改变为只读,而不改变地址映射,并且同时TLB结构内的地址的相关范围将被无效以确保更新的页面表信息被引用。这种方法将确保在软件控制下在进行数据传输操作时发出的任何写访问将被阻止。在完成传输操作时,页面表将再次被更新,这次指向目标地址范围,并且移除只读限制,并且这将要求TLB结构内的地址的相关范围被无效以确保引用了新的更新的页面表内容。
TLB无效可能会导致严重的性能问题。例如,***中通常会有多个处理元件,并且通过使用适当的广播操作,需要针对每个这样的处理元件执行TLB无效。此外,每个需要使用该范围的处理元件都必须执行新的页面表遍历过程以发现新的转换,并且页面表遍历显着增加了针对TLB中错过的存储器访问的延迟,因为它们需要多个相关页面在访问请求可以被服务之前需要被序列化的表存储器访问。因此,通过减少在这样的页面迁移操作期间所需的TLB无效的数量,可以实现显著的性能益处。
在一个实施例中,在完成传输操作时,防止重定向控制器拦截指定目标地址范围内的目标地址的后续访问请求。在至少一个目的地地址范围被用作目标地址范围的上述实施例中,将注意到,在这一点上不需要进一步的步骤,因为页面表已经被更新以指向正确的地址范围,并且因此一旦重定向控制器的拦截机制被禁止,访问将自然地被引导到物理存储器内的正确位置。
在许多***中,处理元件具有用于缓存在存储器中访问的数据的关联缓存结构,并且采用缓存一致性协议来确保缓存数据与存储在存储器中的数据之间的一致性。然后可以在传输操作的执行期间关于由数据传输控制器发出的访问请求采用缓存一致性协议,以便确保由数据传输控制器访问由所述访问请求指定的最新版本的数据。
上述数据迁移操作可能导致缓存存储装置的低效使用,因为它可能导致相同的数据针对源地址范围和目标地址范围这二者都被缓存。然而,在一个实施例中,数据传输控制器可以被安排为在数据传输操作正在进行的同时释放这样的缓存结构内的空间。具体地说,数据传输控制器可以被安排为:当在执行传输操作期间发出读访问请求以便读取所述至少一个源地址范围内的数据时,使用指定类型的读访问请求,该指定类型的读访问请求使得该数据的任何缓存副本在应用缓存一致性协议期间无效。
在一个特定实施例中,指定类型的读访问请求是读独占访问请求。当发出这样的读独占访问请求时,***内的缓存一致性电路将执行关于相关缓存结构的一致性操作,以便识别数据的最新版本(如果任何缓存结构具有比存储器中的版本更新的数据版本),并将该版本的数据返回给数据传输控制器。此外,缓存一致性协议将要求任何缓存的副本无效,因此这样的过程将自然释放已经在源地址缓存数据副本的任何缓存结构内的空间。
该过程在其中提供多个处理元件(多个处理元件各自具有其自己关联的一个或多个缓存结构)的***中是特别有益的,因为通过利用缓存一致性协议规则,这些缓存结构中的多个可以使它们已经关于源地址范围缓存的数据的任何副本无效,因此在缓存利用方面提供了显著的好处。
由数据传输控制器执行的传输操作可以采取多种形式,但是在一个实施例中被用来执行以下类型的数据传输中的一种:将来自多个源地址范围的数据集合到单个目的地地址范围;将来自单个源地址范围的数据分散到多个目的地地址范围;或将数据从源地址范围传输到相同大小的目标地址范围。
此外,传输操作可以包括移动操作或复制操作。根据复制操作,将数据从至少一个源地址范围复制到至少一个目的地地址范围,但是源地址范围处的数据也被保持为有效。根据移动操作,将数据从至少一个源地址范围传输到至少一个目的地地址范围,并且使至少一个源地址范围处的数据无效(例如,如果需要的话,通过发出单独的擦除命令)。
在一个实施例中,上述装置可以用在***的互连内。特别地,可以提供一种***,其包括:多个处理元件;以及互连,耦合到所述多个处理元件并用于控制所述多个处理元件对存储器的访问;该互连具有由根据上述实施例的装置形成的传输引擎,所述传输引擎用于代表处理元件之一执行传输操作,以便将数据从至少一个源地址范围传输到至少一个目的地地址范围,同时使得由多个处理元件发出的关于正在经受传输操作的数据的访问请求能够在传输操作正被执行时继续被处理。
因此,传输引擎在互连内提供硬件机制,处理元件可以将数据传输请求卸载到该互连上,该传输引擎能够以对在处理元件处执行的软件透明的方式在后台执行所需的传输操作。特别地,由任何处理元件发出的关于经受传输操作的数据的后续访问请求仍然可以被处理,而不用等待传输操作完成,通过由传输引擎的重定向控制器拦截这样的访问请求、并且执行关联的存储器重定向操作来处理这些访问请求。
当以上述方式在互连内使用传输引擎时,也可以将传输引擎安排为响应于其它输入信号来控制传输操作的执行。例如,互连将具有一定的最大带宽,并且在传输引擎执行传输操作时将会有其它业务通过互连路由。传输操作的执行要求传输引擎发出各种读和写访问请求,以便从存储器读数据并将数据写回到存储器,这可能影响其它进程可用的带宽。然而,在一个实施例中,传输引擎可以被安排成响应于互连内的带宽利用率的指示来节制传输操作的执行。因此,在繁忙时段或者执行延迟敏感操作的时段期间,传输引擎可以被安排为节制传输操作的执行,从而减少带宽的使用,从而腾出带宽以用于其它处理。由于传输操作是作为后台任务来执行的,并且不需要后续的访问请求被阻塞,所以当以这种方式进行节制时执行传输操作所花费的时间的增加不会成为问题。因此,所描述的技术提供了显著增强的灵活性,因为传输操作可以作为后台任务来执行,这是考虑到***内正在执行的其它进程的要求,并且特别是考虑到这样的进程所需要的互连内的带宽。
在一个实施例中,可以采用NUMA类型的***,其中多个单独的存储器均与互连相关联。相应地,在这种安排中的***还可以包括:另一互连,该另一互连连接到所述互连并且用于控制所述多个处理元件对另一存储器的访问,另一互连具有由前述权利要求中任一项所述的装置形成的另一传输引擎,另一传输引擎用于代表处理元件之一执行传输操作,以便将数据从至少一个源地址范围传输到至少一个目的地地址范围,同时使得由多个处理元件发出的关于正在经受传输操作的数据的访问请求在传输操作正被执行时继续被处理。
因此,在这样的实施例中,传输引擎将被提供在每个互连内,并因此与每个存储器相关联。
有多种方式可以控制单独的转换引擎来执行所需的转换操作。在一个实施例中,传输引擎被用于在至少一个目的地地址范围在所述存储器内时处理传输操作,并且另一传输引擎被用于在至少一个目的地地址范围在所述存储器内时处理传输操作。
因此,在这样的实施例中,与包含至少一个目的地地址范围的存储器相关联的传输引擎被用于管理传输操作。即使在至少一个源地址范围在不同存储器内的情况下,该传输引擎也可以通过其与其它一个或多个互连的连接来执行传输操作。
现在将参考附图描述特定实施例。
图1是根据一个实施例的包含数据传输引擎35的***的框图。该***包括经由互连30与存储器40耦合的多个处理元件10、20。尽管为了简化示出了两个处理元件,但是应该理解,在任何特定实施例中,可以有不同数量的处理元件耦合到互连。
所示的处理元件采用虚拟寻址方案,并且这样的虚拟地址将被转换成存储器40内的物理地址,使得当处理元件发出访问请求以寻求访问存储器中的位置时,被转发到互连30的该访问请求指定要访问的存储器内的位置的物理地址。以标准方式,存储器40可以被组织成多个页面,并且可以在存储器内提供页面表45,其包含用于识别虚拟地址应该如何被转换成相应的物理地址的描述符。每个处理元件10、20可以具有相关联的转换旁视缓冲器(TLB)15、25,其中可以缓冲从页面表45导出的地址转换数据以提高虚拟到物理地址转换的速度。特别是,在TLB中没有命中的虚拟地址被发出时,需要对存储器40中的页面表45执行页面表遍历处理,以便依次遍历多个页面表,以建立该虚拟地址所需的地址转换数据。一旦确定了地址转换数据,就可以将其缓存在本地TLB中。
缓冲在TLB中的地址转换数据通常不仅识别虚拟地址如何转换为物理地址,而且还识别任何相关联的许可属性,诸如位置是否是可读的和可写的、是否是只读的、是否是可缓存的等等。
在正常操作期间,一个或多个处理元件可以决定寻求将数据从存储器中的一个或多个页面传输到存储器中的一个或多个其它页面是适当的,该处理在本文中通常被称为数据迁移。例如,将多个较小的页面合并成较大的页面(在此将被称为聚集操作)可能被认为是合适的,或者相反在一些情况下,可以认为将较大的页面划分成多个较小的页面是合适的(这里被称为分散操作)。或者,可能希望将数据从一个页面移动到另一个页面。
根据这里将更详细讨论的实施例,数据传输引擎35被提供在互连30内以管理这样的数据迁移操作。特别地,数据传输引擎35被安排为响应由处理元件10、20中的一个发出的数据传输请求来代表该处理元件处理所需的传输操作,使得处理元件自由地继续其操作。此外,数据传输引擎包括重定向控制器,该重定向控制器被安排为:当传输操作正被执行时,拦截由处理元件10、20发出的某些访问请求,特别是关于经受传输操作的数据的访问请求。对于这样的访问请求,数据传输引擎执行存储器重定向操作,使得访问请求能够被处理,而不用等待传输操作完成。相应地,这样的访问请求可以与传输操作的执行异步地处理,因此不需要阻止任何这样的访问请求。这可以引起显著的性能改进。此外,与在受处理元件之一内的操作***控制的软件中管理数据传输过程的先前已知方法相比,数据传输引擎30所使用的机制减少了在执行传输操作期间TLB 15、25中的条目需要被无效的次数。
所描述的实施例的技术可以被使用而不管处理元件是否具有关联的缓存结构。然而,如图1所示,处理元件10、20可以分别具有一个或多个关联的缓存结构50、55,用于缓存保存在存储器40中的数据以提高性能。通常在这种情况下将提供缓存一致性控制电路60,以确保在存储器中的数据与可以保存在缓存50、55内的各种副本之间保持一致性。具体地,当指定存储器40内的物理地址的访问请求是从处理元件之一发出的时,缓存一致性控制电路60可以确定缓存结构50、55中的任何一个是否可以保存与该物理地址相关联的数据的副本,并且在该情况下,该缓存一致性控制电路60内的监听电路用于向相关缓存发出监听请求,以便识别数据是否存在。通过这种方法,可以确保访问最新版本的数据。取决于所采用的一致性协议,当确定与监听请求所指定的地址相关联的数据被保持在缓存内时,经受监听操作的缓存可以将数据返回到缓存一致性控制电路60,和/或可以使得任何此类数据的副本将在缓存内无效。除了取决于所使用的一致性协议的这些动作之外,它们也可以取决于由处理元件10、20发出的访问请求的类型。
在一个实施例中,如稍后将讨论的,当数据传输引擎35正在执行传输操作以将数据块从一个或多个源页面移动到存储器40内的一个或多个目的地页面时,其将发出一系列读访问请求和写访问请求,以便读取要移动的所需数据,然后将该数据写到目的地页面。由数据传输引擎35发出的访问请求将由缓存一致性控制电路60以与由处理元件10、20发出的访问请求相同的方式来检查。通过使用特定形式的读访问请求,这可以确保在缓存50、55中与源地址范围相关联的正被移动的数据的任何缓存副本都被无效,从而释放缓存内的资源。可以理解的是,一旦传输操作已经被执行,数据将驻留在具有相关联的目的地地址范围的目的地页面中,因此不会使用与源地址范围相关联的任何缓存副本。因此,通过在数据传输过程中使这些副本无效,这可以提供用于从缓存50、55去除冗余数据的非常有效的机制。
图2是根据一个实施例的更详细地示出图1的数据传输引擎35的框图。提供设置控制器100,其被安排为接收来自处理元件10、20的数据传输请求。在接收到数据传输请求时,设置控制器在控制寄存器105内填充特定信息,该信息提供关于将其从传输数据的一个或多个源地址范围、以及数据将被传输到的一个或更多个目的地地址范围的细节。通常,(一个或更多个)源地址范围和(一个或更多个)目的地地址范围将由处理元件发送的传输请求指定,并且该信息从请求中提取并填充在一个或多个控制寄存器内。还可以指定附加信息,例如,标识传输是否应该实现副本(其中在数据已经被移动之后,数据在源地址区域内仍保持有效)或者移动(其中在数据已经被传输之后,源地址区域内的数据无效)。传输请求还可以指定某些其它信息,例如是否应该使用前述的特定形式的读访问请求以帮助清除来自缓存的冗余信息。
一旦在控制寄存器105中填充了相关信息,设置控制器就可以向处理元件发出确认信号,该确认信号是可以从设置控制器发出的控制信号的一个示例形式。具体地,在一个实施例中,处理元件响应于接收到确认信号来执行更新相关页面表45的步骤,从而确保在数据传输引擎35正在执行传输操作的同时,相关的虚拟地址范围内的任何虚拟地址将被映射到特定目标地址范围内的目标地址,然后将被数据传输引擎拦截。在一个特定示例实施例中,处理元件可以被安排成修改适当的页面表,使得这样的虚拟地址将被映射到一个或多个目的地地址范围内的地址,而不是继续被映射到一个或多个源地址范围内的地址。如稍后将更详细地讨论的,数据传输引擎内的重定向控制器115然后可以拦截在执行数据传输操作时发送到一个或多个目的地地址范围内的地址的任何访问请求,并且对此类访问请求执行存储器重定向操作。
除了更新页面表之外,处理元件还可以使其本地TLB内的任何相关条目(即为虚拟地址的相关范围提供地址转换数据的条目无效),并且还通常将消息广播到其它处理元件,以使得他们也使其本地TLB中的这些条目无效。通过无效TLB中的相关内容,这确保了如果访问请求是由任何使用相关的虚拟地址范围内的虚拟地址的那些处理元件发出的,则在TLB将不会检测到命中,并且将使得采用页面表遍历过程,结果,更新页面表45中提供的新映射将被取回,并用于将虚拟地址转换为物理地址。如果需要的话,那么新的地址转换数据可以在TLB内被缓冲。
作为向处理元件使用这种确认信号以使得处理元件进行页面表更新处理和TLB无效处理的替代方案,设置控制器可以直接向存储器发出控制信号以更新页面表45,并且还可以发出一个或多个控制信号以使得处理元件10、20的TLB中的相关条目无效。
一旦采取了这样的步骤,就可以启动数据传输引擎35内的数据传输控制器110,以使用保存在控制寄存器中的信息来确定从中读数据的源地址以及数据然后应该被写到的目的地地址,并开始执行传输操作,以便在存储器40内执行所需的数据迁移。重定向控制器115通常将同时被启动,使得在数据传输控制器110正在执行传输操作的时间段期间,重定向控制器115监视由任何处理元件10、20发出的访问请求,以便检测那些访问请求指定目标地址范围内的地址的情况。根据先前的在发生传输操作之前更新页面表以确保相关虚拟地址映射到一个或多个目的地地址范围内的物理地址的示例,重定向控制器可以监视指定一个或多个目的地地址范围内的物理地址的访问请求,并且在检测到这样的访问请求时将拦截该访问请求并执行存储器重定向操作。存储器重定向操作将在后面详细讨论,但是目的是确保在传输操作正在进行的同时处理访问请求,同时确保数据保持一致。
如图2所示,重定向控制器115将因此响应于它所拦截的读或写地址而产生重定向的读或写地址。一些重定向的读或写地址实际上可以是与接收到的地址相同的地址,例如在某些情况下,对于所拦截的访问请求,可以决定重定向的地址可以保持与访问请求的指定地址相同。
重定向的地址被转发到加载和存储队列120,并且相关的读或写数据也通过加载和存储队列被路由,如图2所示。也如图2所示,数据路径不需要被重定向控制器115拦截。
有多种方法可以处理不被重定向控制器拦截的访问请求。在一些实施例中,这样的访问请求甚至不会被重定向控制器检查,因为互连不将这样的访问请求路由到数据传输引擎。可选地,在一些实施例中,重定向控制器可以检查每个访问请求,但是对于确定不需要被拦截的任何访问请求,可以将访问请求安排为绕过加载和存储队列120,因为这样的访问请求将不与作为数据传输引擎的数据传输操作的对象的地址范围冲突。在后一种情况下,可以提供一组单独的端口,然后重定向控制器可以向其传输已经确定不需要被拦截的任何访问请求。
在图2所示的实施例中,加载和存储队列120在重定向控制器115和数据传输控制器110之间共享。因此,数据传输控制器将向加载和存储队列110发出一系列读和写地址以便使所需的数据从源地址被读取,然后写到所需的写地址。如图2所示,加载和存储队列120可以维护一个或多个缓冲器125,其中在执行传输操作期间从存储器读取的数据可以在其被写回到存储器之前临时缓冲。因此,数据本身不需要被返回到数据传输控制器170,而是与各种读和写请求进行的进度有关的进度信息可以被转发回到数据传输控制器,其在一个实施例中还填充控制寄存器105内的信息以指示正在进行的进度。对于某些类型的存储器重定向操作,在决定如何重定向所拦截的访问请求的接收到的物理地址时,重定向控制器115可以参考控制寄存器内的进度信息。
通过将加载和存储队列结构120用于由重定向控制器选择性地修改的访问请求以及在执行传输操作时由数据传输控制器发出的访问请求,可以在加载和存储队列内检测和寻址任何潜在竞争状态。有多种方式可以将加载和存储队列结构120安排为检测和解决这种竞争状况。例如,在一个实施例中,数据传输控制器110可以被安排为:在发出对源地址的读请求之前,预留到加载和存储队列结构120的条目中的目的地地址的占位符写请求(没有任何数据)。该条目可以用于延迟冲突的访问,直到传输操作完成。数据传输控制器然后可以更新控制寄存器105内的进度状态,并发出对源地址的读访问请求。一旦读响应从存储器到达,数据传输控制器就可以发出真正的写请求,其更新之前保留的占位符请求。此时,加载和存储队列结构120可以将写请求转发到存储器。通过采用这样的序列,这确保了与在加载和存储队列中的占位符写条目中指定的地址重叠的任何重定向的读或写请求都被延迟,直到在读数据已经从存储器中获得后将条目提升为“真实的”写。
这样的方法也可以在处理访问请求的方式中提供一些效率益处。举例来说,如果向目的地地址范围内的地址发出写访问请求,并且重定向控制器确定将该写传播到目的地地址是合适的,但是这与执行关于目的地地址的传输的数据传输控制器重叠,则一旦确定所需的数据已经从源地址被读取但尚未被写到存储器中,来自访问请求的新的写数据可被合并到缓冲器125中的写数据,使得更新后的写数据被输出到存储器。
图3示出根据一个实施例的控制寄存器105内的信息的示例安排。根据该实施例,可以提供多个时隙150,每个时隙包括多个字段。第一字段155用于识别源范围,而字段160然后用于识别对应的目的地范围。可以可选地提供字段165以识别正在关于该源和目的地范围执行的数据传输的当前状态,同时如果需要也可以提供标志字段170以存储附加信息。作为这样的标志信息的一个示例,可以设置标志以识别与数据传输相关联的读访问请求是否应该作为读独占请求发出,以便使缓存结构50、55内与源地址范围相关联的任何缓存副本无效。最后,可以提供有效标志175,其可以被设置为识别该时隙是否包含尚未完成的有效数据传输的信息。
在一个实施例中,每个时隙被安排为容纳关于特定尺寸的连续地址范围的信息,例如最小可能的页面尺寸。通过以这种方式安排时隙,这可以在确定访问请求是否指定在有效时隙的范围内的地址时简化由重定向控制器115使用的地址比较器逻辑。然而,在替代实施例中,重新配置与每个时隙相关联的地址范围的大小是可能的,在该实例中全局大小字段可以在全局状态信息180内提供以识别大小信息。
因此,纯粹作为说明,如果执行聚集数据迁移操作以将最小页面大小的两个页面合并成一个更大的目的地页面,则可以传播两个单独的时隙,第一个覆盖第一源页面的源地址范围,并且第二个覆盖第二个源页面的源地址范围。与较大的目的地页面相关联的目的地地址范围然后将被分成两个子范围,第一子范围被存储在第一时隙内,并且第二子范围被存储在第二时隙内。
如果需要,还可以提供附加的全局状态180。例如,当设置控制器100确定数据传输控制器可以开始执行传输操作时,可以设置全局状态标志。特别是,如前所述,在传输开始之前需要完成某些设置步骤。除了设置控制寄存器的内容之外,在设置全局状态标志以允许数据传输控制器110开始传输操作之前,设置控制器还可以等待来自处理元件的关于已经执行了任何相关的页面表更新和任何TLB无效的确认。如果需要,还可以为重定向控制器115提供类似的重定向启用标志。通常,重定向控制器将被启用,使得它在数据传输控制器正在主动处理传输操作时执行针对所发出的访问请求的任何所需的重定向,但是也可能需要在传输操作开始之前或传输操作完成之后,这取决于重定向控制器在确定要拦截哪些访问请求时使用的目标地址范围。例如,在重定向控制器已经被设置成拦截目的地地址范围内的地址的情况下,在一个实施例中重定向将在更新页面表之前被启用,并且随后开始传输操作。相反,当重定向控制器已经被设置为拦截源地址范围内的地址时,在一个实施例中,重定向控制器将保持启用,直到传输操作完成并且页面表已经被更新。
作为在全局状态180内提供单独的重定向启用标志的替代方案,有效标志175可以例如用于确定何时启用重定向控制器。在这种情况下,在有待执行的复制操作时,总是启用重定向。
图4A和4B提供了示出根据一个实施例的图1的***的操作的流程图,以便实现存储器40内的数据传输。在步骤200,数据传输引擎35确定是否有新的传输请求已经收到。当已经接收到新的传输请求时,则在步骤205,控制寄存器105被填充源和目标地址范围以及任何其它相关信息,如前所述。
在一个实施例中,数据传输引擎可以被安排为使得在另一传输请求已经在待处理中时它将不会接受新的传输请求。在一个实施例中,***软件将被安排为确保传输操作被串行化以避免这种情况出现,但是在替代实施例中,数据传输引擎可以被安排为在另一传输请求是待处理的时不接受在其输入端处呈现的传输请求。
一旦已经填充了控制寄存器,则在步骤210,设置控制器向做出请求的处理元件发回确认信号。在步骤215,做出请求的处理元件然后更新页面表45,使得相关的虚拟地址映射到(一个或多个)目的地地址范围而不是(一个或多个)源地址范围。特别地,在这个实施例中,假定目标地址范围被选择为目的地地址范围,并且它是指定将由重定向控制器拦截的目的地地址范围内的地址的访问请求。然而,在其它实施例中,如前所述,目标地址范围可以是源地址范围,在该事件中,在执行传输操作之前,页面表将不被更新,而是在执行传输操作之后被更新。
在一些实施例中,数据传输引擎可以关于正在执行的迁移的类型来确定要使用的目标地址范围。例如,对于多个不连续的源地址范围被合并成连续的较大目的地地址范围的聚集操作,使用连续的目的地地址范围作为目标地址范围可能是有利的,如通过使用一个连续的范围,这使得被重定向控制器使用的地址匹配电路能够更简单地确定访问请求是否应该被拦截。相反,如果正在执行分散操作以将数据从连续的源地址范围分散到多个不连续的目的地地址范围,则可能优选的是将单个连续的源地址范围用作目标地址范围。
返回到图4A,在步骤220,处理元件使其对于相关虚拟地址具有的任何TLB条目无效,并且还将消息广播到其它处理元件以使得它们也这么做。同样,这假定目标地址范围被用作目标地址范围。在一个或多个源地址范围被用作目标地址范围的实施例中,在执行传输操作之前TLB条目不会被无效,而是在传输操作完成之后将被无效。
在步骤215和220之后,处理进行到步骤225,其中数据传输控制器被启动,以开始将数据从源地址传输到目的地地址。
然后如图4B所示,在步骤230确定传输操作是否完成,并且在传输操作没有完成时,过程进行到步骤235,在步骤235确定重定向控制器115是否已经接收到新的访问请求。该过程在步骤230和235循环,直到传输操作完成或接收到访问请求。
当接收到访问请求时,重定向控制器然后在步骤240确定由访问请求指定的物理地址是否落入在控制寄存器内标识的目标地址范围内。如果不是,则访问请求仅在步骤250以通常的方式传播到存储器***40。
然而,如果物理地址确实落入控制寄存器中的目的地地址范围内,则重定向控制器115在步骤245处应用存储器重定向操作,以便确定要传播的适当的一个或多个物理地址。如稍后将参照图5A讨论的,根据存储器重定向操作的一个实施例,当接收到写访问请求时,存储器重定向操作可以使得对源地址和对应的目的地地址二者执行写,有效地使得在处理进行到步骤250之前,在步骤245处创建两个访问请求。
在步骤250中将一个或多个访问请求传播到加载和存储队列120之后,过程返回到步骤230。
一旦在步骤230确定传输操作完成,则过程进行到步骤255,在步骤255中控制存储装置中的相关的一个或多个时隙被无效,并且随后禁止任何进一步的重定向。通过关闭重定向控制器115的重定向功能,这意味着向目的地地址范围内的地址发出的任何后续访问请求将直接访问存储器中的正确地址。不需要进一步的动作,因为在步骤215中页面表先前已经被更新以识别在数据传输已经完成之后要使用的正确的映射。
在步骤245执行的存储器重定向操作可以以各种方式来实现。图5A示出了一个示例实施例。在步骤300,确定访问请求是否是读请求,并且如果访问请求提供的指定地址被映射到源地址范围内的相应源地址,之后,过程进行到图4B的步骤250。
然而,如果访问请求不是读访问请求,即它是写访问请求,则过程前进到步骤310,在步骤310中,存储器重定向操作的应用使得有效地创建两个访问请求。一个访问请求具有被映射到源地址的指定地址,而另一个访问请求使用由在步骤235接收到的访问请求所指定的目的地地址。这因此确保对旧地址和新地址都发生写操作,并因此确保原始版本和副本保持同步。虽然它重复写操作,但是如果在数据传输操作被执行期间,作为数据传输操作的对象的源和目的地范围没有被大量使用,则该方法的开销可能很低。在步骤310之后,该过程然后进行到图4B的步骤250。
图5B示出了用于在图4B的步骤245处执行存储器重定向操作的替代实施例。在步骤320,由重定向控制器115确定访问请求的指定地址处的数据是否已经被传输。如之前所讨论的,在一个实施例中,该确定可以由重定向控制器115参照控制寄存器105的内容并且例如通过查看相关时隙内的当前状态字段165来进行。如果指定的地址已经被传输,则过程进行到步骤330,其中指定的地址被映射到目的地地址。在图4A和4B描述的实施例中,指定的地址已经是目的地地址,因此在步骤330,目的地地址仅被保留为在步骤250传播的访问请求的地址。
然而,如果指定的地址尚未被传输,则在进行到步骤250之前,在步骤325将指定的地址映射到源地址。因此,根据该实施例,重定向控制器将到尚未被复制的位置的访问转发到源位置,并且将到已经被复制的位置的访问转发到目的地位置。假定数据传输操作是相对于地址范围内的地址顺序执行的,只需要少量的状态来跟踪哪些位置已被复制,以及哪些没有被复制。
图5C示出了用于在图4B的步骤245处实现存储器重定向操作的又一个替代实施例。在步骤340,确定指定的地址是否已被复制,如果是,则过程进行到步骤345,其等同于前面讨论的图5B的步骤330。过程然后进行到图5C的步骤350的步骤250。
然而,如果指定地址尚未被复制,则在步骤355,重定向控制器115联系数据传输控制器110以发起对包括与访问请求的指定地址相关联的数据的数据块的传输。所传输的数据块的大小可以根据实现而变化,但是在一个实施例中是缓存行大小的数据块,并且数据传输引擎在控制寄存器105内维护复制的缓存行大小的数据块的位图以标识哪些块已被复制,哪些尚未被复制。
该过程然后进行到步骤360,在步骤360访问请求在步骤250被处理。访问请求可以以各种方式被处理。例如,在一个实施例中,访问请求可以暂时停止,直到在步骤355启动的数据块的传输已经完成,并且复制的缓存行大小的块的位图已经被更新。此时,访问请求可以通过执行与步骤345等同的步骤来处理,以便将访问请求传播到目的地地址。
然而,在替代实施例中,通过有效地将访问请求的处理与块传输处理合并可以实现进一步的效率节省。例如,在发生读访问请求的情况下,一旦数据传输控制器110已经将必要的数据读回到加载和存储队列120的缓冲器125,则可以使用缓冲器内的内容来服务读访问请求而不需要向存储器发出单独的读访问请求。类似地,如果访问请求是写访问请求,则一旦数据已被数据传输控制器110读入缓冲器125,则来自写访问请求的新写数据可以在缓冲器中的数据被写出到目标存储器位置之前被合并到该数据块中,以便完成数据块的传输。
图6A至6C示意性地示出了图4A和4B的过程的示例实现,其中两个较小的源页面a1、a2、400、405被合并到物理存储器内的较大的目的地页面b 410。条目415、420示意性地示出了使得虚拟到物理地址转换映射到各个源地址区域400、405的页面表内的相关描述符信息。如图6A所示,相邻条目415、420示出了两个源区域400、405具有相邻的虚拟地址范围,并且数据传输操作的目的是将不连续的物理页面400、405重新映射到连续的物理地址范围410中。复制引擎由块430示意性地示出,并且条目435、440表示存储在控制寄存器105内的两个时隙内的控制信息,每个时隙识别源地址范围中的一个和目的地地址范围的对应部分。
因此,在控制寄存器信息已经被保存之后,复制引擎知道源范围400、405和目的地范围410。此时,数据传输控制器110和重定向控制器115的功能可以被启动以开始数据传输操作和重定向控制。如图6B所示,并且如之前参考图4A的步骤215所讨论的,页面表将被更新以创建新的条目445,其将放大的连续范围的虚拟地址映射到目的地地址范围410内的相应物理地址。如先前参考图4A的步骤220所述,相关的TLB条目也将被无效,使得随后在数据传输操作正被执行时发出的、并且与正在传输的数据有关的任何访问请求将使得执行页面表遍历处理,以便获得封装在条目445所表示的页面表的描述符内的地址转换数据。
如线450所示,发出的指定目的地地址范围410内目的地地址的任何访问请求将被复制引擎430拦截。然后复制引擎将使用之前讨论的图5A至5C的任何方法来执行存储器重定向操作,以便确定访问哪些物理地址。同时,复制过程将由复制引擎执行,如箭头460所示。在一个实施例中,读独占访问用于关于源地址范围执行的读操作,然后写访问被用于将结果存储到新的目的地地址范围410。使用读独占访问使与旧源地址范围相关联的数据的缓存副本无效,并因此有效地释放缓存空间。
如图6C所示,一旦复制操作完成,复制引擎内的映射被撕下,使控制寄存器中的相关控制信息无效。这将阻止对发送到目标地址范围内的目标地址的访问请求的任何进一步拦截。相反,这样的访问请求只是以正常的方式路由到目的地地址范围,这是考虑到页面表已经包含提供该映射的正确信息。
在图6A至6C的示例中,假定目的地地址范围在复制过程期间被用作目标地址范围,因此它是复制过程期间由复制引擎拦截的目标地址范围内的地址。如之前所讨论的,在替代实施例中,(一个或多个)源地址范围可以替代地被用作目标地址范围,在这种情况下页面表将不被更新,并且TLB条目将不被无效,直到在复制过程已经完成之后。
在又一替代实施例中,如前所述,专用地址范围可以与复制引擎430相关联,并且该过程在图7中示意性地示出,同样针对其中两个源地址范围400、405被合并为存储器地址空间内的目的地地址范围410的示例。如图7所示,专用地址范围470与复制引擎相关联,并且不用于任何其它目的。根据该实施例,当在复制操作开始之前更新页面表时,它们如图7中的步骤1480所示改变映射,使得相关的虚拟地址映射到专用地址范围470而不是源地址范围400、405。否则,过程如图6A和6B所示继续进行,其中针对地址范围470的任何访问被重定向控制器拦截并映射到源地址范围400、405或目的地地址范围,这取决于之前参照图5A至5C讨论的标准。在复制操作完成时,页面表再次被更新以便改变虚拟地址的映射,使得它们现在映射到目的地地址范围410而不是专用地址范围470,如步骤490所示。
虽然参考图1描述的实施例示出了统一的存储器存取(UMA)***,但是这些技术也可以应用于非均匀存储器存取(NUMA)***,图8中示出了其中的一个示例。在此例如,NUMA***具有两个NUMA节点500、510,为了说明起见,其中的每一个都被假定为具有与图1中所示的类似的结构。每个NUMA节点500、510具有其自己的相关联的存储器505、515,其耦合到对应的互连520、525。根据所描述的实施例,每个互连具有其自己的数据传输引擎530、535,并且两个互连520、525经由路径540连接。在这样的配置中,NUMA节点500、510中的任一个内的处理元件可以被安排为访问单独的存储器505、515中的任一个中的数据。
当数据传输请求由处理元件之一发出时,数据传输引擎530、535中的一个将负责执行该数据传输并相应地设置其控制寄存器。在一个实施例中,在复制过程期间使用目的地地址范围作为目标地址范围的情况下,与包含目的地地址范围的存储器相关联的数据传输引擎将通常被配置为处理数据传输过程。然而,在数据传输过程期间使用源地址范围作为目标地址范围的实施例中,将与包含源地址范围的存储器相关联的数据传输引擎安排为负责处理数据传输操作可能是适当的。如果在前面参考图7讨论的实施例被使用,其中专用存储器地址范围与每个数据传输引擎相关联,则数据传输引擎中的任一个可以被配置为处理任何特定的数据传输过程,而不管哪个存储器包含源地址区域和哪个存储器包含目的地地址区域。
从以上描述的实施例中,将会看到,这样的实施例提供了可用于处理物理存储器中的数据迁移操作的硬件机制。所采用的硬件机制使得数据传输操作能够针对试图访问受影响的地址区域的任何访问请求异步地进行,避免需要阻止任何这样的访问,并因此改善性能。与在使用处理元件的操作***的软件控制下执行这种页面迁移的已知***相比,所提出的机制还可以减少在数据传输过程期间所需的TLB无效的数量。此外,所提出的技术还可以通过确保在数据传输过程期间缓存中不再需要的信息被无效来提高缓存利用率。
在本申请中,词语“被配置为...”用于表示装置的元件具有能够执行所定义的操作的配置。在这种情况下,“配置”是指硬件或软件互连的安排或方式。例如,该装置可以具有提供所定义的操作的专用硬件,或者处理器或其它处理装置可以被编程为执行该功能。“被配置为”并不意味着装置元件需要以任何方式改变以提供定义的操作。
虽然已经参考附图详细描述了本发明的说明性实施例,但是应该理解,本发明不限于这些精确的实施例,并且可以由本领域技术人员在其中进行各种改变,添加和修改在不背离由所附权利要求限定的本发明的范围和精神的情况下,例如,从属权利要求的特征的各种组合可以与独立权利要求的特征一起进行而不背离本发明的范围。
Claims (20)
1.一种装置,包括:
数据传输控制器,用于响应于由所述装置从处理元件接收到的数据传输请求,而执行将数据从存储器中的至少一个源地址范围传输到所述存储器中的至少一个目的地地址范围的传输操作;以及
重定向控制器,用于在所述传输操作正被执行时,拦截指定目标地址范围内的物理目标地址的访问请求,并且执行存储器重定向操作,以将所述物理目标地址重定向到所述至少一个源地址范围内的物理地址和所述至少一个目的地地址范围内的物理地址中的至少一者,这取决于所述访问请求;
其中:
所述处理元件被安排为实现虚拟地址到对应物理地址的地址转换,并且访问地址转换存储装置以存储用于将虚拟地址转换为所述存储器内的物理地址的地址转换数据,所述地址转换数据是从存储在所述存储器内的页面表中的描述符信息中导出的;
所述目标地址范围包括所述至少一个目的地地址范围;并且
所述装置还包括设置控制器,被安排为:在所述数据传输控制器执行所述传输操作之前,发出控制信号以使得所述存储器内的所述页面表被更新,使得被转换为所述至少一个源地址范围内的物理地址的虚拟地址将被转换为所述至少一个目的地地址范围内的物理地址,所述设置控制器还发出控制信号,以在所述地址转换存储装置内使得为要经受所述传输操作的所述数据提供地址转换数据的任何条目无效,由此在所述传输操作正被执行时发出的、并且与由所述传输操作传输的所述数据相关的访问请求将所述目的地地址范围内的地址指定为所述物理目标地址,并因此将经受所述存储器重定向操作。
2.如权利要求1所述的装置,其中,所述重定向控制器被安排为执行所述存储器重定向操作,以使得:
当所拦截的访问请求是读访问请求时,所述目标地址被映射到所述至少一个源地址范围内的对应源地址,以使得从所述对应源地址执行读操作;以及
当所拦截的访问请求是写访问请求时,所述目标地址被映射到所述至少一个源地址范围内的对应源地址和所述至少一个目的地地址范围内的对应目的地地址,以使得对所述对应源地址和所述对应目的地地址都执行写操作。
3.如权利要求1所述的装置,其中,所述数据传输控制器被安排为维护所述传输操作的进度的记录,并且所述重定向控制器被安排为执行所述存储器重定向操作,以使得:
当所拦截的访问请求的所述目标地址与其数据尚未通过所述传输操作传输的地址相关时,所述目标地址被映射到对应源地址,以使得对该源地址执行访问;以及
当所拦截的访问请求的所述目标地址与其数据已经通过所述传输操作传输的地址相关时,所述目标地址被映射到对应目的地地址,以使得对该对应目的地地址执行访问。
4.如权利要求1所述的装置,其中,所述数据传输控制器被安排为维护所述传输操作的进度的记录,并且所述重定向控制器被安排为执行所述存储器重定向操作,以使得:
当所拦截的访问请求的所述目标地址与其数据尚未通过传输操作传输的地址相关时,所述数据传输控制器被安排为:在处理所拦截的访问请求之前,发起对包括与所述目标地址相关联的数据的数据块的传输;以及
当所拦截的访问请求的所述目标地址与其数据已经通过传输操作传输的地址相关时,所述目标地址被映射到是对应源地址和对应目的地地址之一的对应地址,以使得对该对应地址执行访问。
5.如权利要求1所述的装置,还包括:
控制存储装置,用于存储用于控制所述数据传输控制器对所述传输操作的执行的控制信息,所述控制存储装置存储关于所述至少一个源地址范围的指示、关于所述至少一个目的地地址范围的指示、以及标识传输操作的进度的进度指示数据。
6.如权利要求5所述的装置,其中:
所述重定向控制器被安排为:在所述传输操作正被执行时,参考所述控制存储装置以确定接收到的访问请求是否要被拦截并因此经受所述存储器重定向操作。
7.如权利要求1所述的装置,其中发出所述数据传输请求以便将数据从至少一个源页面传输到所述存储器内的至少一个目的地页面。
8.如权利要求7所述的装置,其中,所述装置被安排为耦合到访问所述存储器的多个处理元件,每个处理元件具有相关联的地址转换存储装置,并且所述设置控制器被安排为发出控制信号,以在为每个地址转换存储装置内使得为要经受所述传输操作的所述数据提供地址转换数据的任何条目无效。
9.如权利要求7所述的装置,其中,在完成所述传输操作时,阻止所述重定向控制器拦截指定所述目标地址范围内的目标地址的后续访问请求。
10.如权利要求1所述的装置,其中,所述处理元件访问用于缓存在所述存储器中访问的数据的至少一个缓存结构,缓存一致性协议被用于确保缓存的数据与存储在所述存储器中的数据之间的一致性,并且缓存一致性协议被用于与在所述传输操作的执行期间由所述数据传输控制器发出的访问请求有关,以便确保由所述数据传输控制器访问由所述访问请求指定的最新版本的数据。
11.如权利要求10所述的装置,其中,所述数据传输控制器被安排为:当在所述传输操作的执行期间发出读访问请求以便读取所述至少一个源地址范围内的所述数据时,使用指定类型的读访问请求,其使得该数据的任何缓存副本在应用所述缓存一致性协议期间无效。
12.如权利要求11所述的装置,其中,所述装置被安排为耦合到多个处理元件,每个处理元件各自访问至少一个相关联的缓存结构,并且所述数据传输控制器被安排为使用所述指定类型的读访问请求,以使得所述多个处理元件中的任一个的相关联的缓存结构中的所述数据的缓存副本在应用所述缓存一致性协议期间无效。
13.如权利要求11所述的装置,其中,所述指定类型的读访问请求是读独占访问请求。
14.如权利要求1所述的装置,其中,所述传输操作被用于执行下述类型的数据传输之一:
将来自多个源地址范围的数据集合到单个目的地地址范围;
将来自单个源地址范围的数据分散到多个目的地地址范围;或者
将数据从源地址范围传输到相同大小的目的地地址范围。
15.如权利要求1所述的装置,其中,所述传输操作包括移动操作和复制操作中的一个。
16.一种***,包括:
多个处理元件;以及
互连,所述互连耦合到所述多个处理元件并用于控制所述多个处理元件对存储器的访问;
所述互连具有由前述权利要求中任一项所述的装置形成的传输引擎。
17.如权利要求16所述的***,其中,所述传输引擎响应于关于所述互连内的带宽利用率的指示而节制所述传输操作的执行。
18.如权利要求16所述的***,包括:
另一互连,所述另一互连连接到所述互连并且用于控制由所述多个处理元件对另一存储器的访问,所述另一互连具有另一传输引擎,所述另一传输引擎用于代表所述处理元件之一执行传输操作,以使得将数据从至少一个源地址范围传输到至少一个目的地地址范围,同时使得由所述多个处理元件发出的关于正在经受所述传输操作的所述数据的访问请求能够在所述传输操作正被执行时继续被处理。
19.如权利要求18所述的***,其中,所述传输引擎被用于在所述至少一个目的地地址范围在所述存储器内时处理所述传输操作,并且所述另一传输引擎被用于在所述至少一个目的地地址范围在所述另一存储器内时处理所述传输操作。
20.一种在存储器中的地址范围之间传输数据的方法,包括:
响应于从处理元件接收到的数据传输请求,采用数据传输控制器执行传输操作,以将数据从存储器中的至少一个源地址范围传输到存储器中的至少一个目的地地址范围;以及
在所述传输操作被执行时,拦截指定目标地址范围内的物理目标地址的访问请求,并且执行存储器重定向操作,以将所述物理目标地址重定向到所述至少一个源地址范围内的物理地址和所述至少一个目的地地址范围内的物理地址中的至少一者,这取决于所述访问请求;
其中:
所述处理元件被安排为实现虚拟地址到对应物理地址的地址转换,并且访问地址转换存储装置以存储用于将虚拟地址转换为所述存储器内的物理地址的地址转换数据,所述地址转换数据是从存储在所述存储器内的页面表中的描述符信息中导出的;
所述目标地址范围包括所述至少一个目的地地址范围;并且
所述方法还包括:在所述数据传输控制器执行所述传输操作之前,执行设置控制操作以使得所述存储器内的所述页面表被更新,使得被转换为所述至少一个源地址范围内的物理地址的虚拟地址将被转换为所述至少一个目的地地址范围内的物理地址,并且在所述地址转换存储装置内使得为要经受所述传输操作的所述数据提供地址转换数据的任何条目无效,由此在所述传输操作正被执行时发出的、并且与由所述传输操作传输的所述数据相关的访问请求将所述目的地地址范围内的地址指定为所述物理目标地址,并因此将经受所述存储器重定向操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GR20160100612 | 2016-12-02 | ||
GR20160100612 | 2016-12-02 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108153683A CN108153683A (zh) | 2018-06-12 |
CN108153683B true CN108153683B (zh) | 2023-06-16 |
Family
ID=58463772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711192553.1A Active CN108153683B (zh) | 2016-12-02 | 2017-11-24 | 用于在存储器中的地址范围之间传输数据的装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10712965B2 (zh) |
KR (1) | KR102552816B1 (zh) |
CN (1) | CN108153683B (zh) |
GB (1) | GB2557366B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10942725B2 (en) * | 2018-07-30 | 2021-03-09 | Ford Global Technologies, Llc | Over the air Ecu update |
US10782918B2 (en) * | 2018-09-06 | 2020-09-22 | Advanced Micro Devices, Inc. | Near-memory data-dependent gather and packing |
US11023397B2 (en) * | 2019-03-25 | 2021-06-01 | Alibaba Group Holding Limited | System and method for monitoring per virtual machine I/O |
US11079958B2 (en) * | 2019-04-12 | 2021-08-03 | Intel Corporation | Apparatus, system and method for offloading data transfer operations between source and destination storage devices to a hardware accelerator |
CN112306372B (zh) * | 2019-07-31 | 2024-07-05 | 伊姆西Ip控股有限责任公司 | 用于处理数据的方法、设备和程序产品 |
CN112540938A (zh) * | 2019-09-20 | 2021-03-23 | 阿里巴巴集团控股有限公司 | 处理器核、处理器、装置和方法 |
US11269773B2 (en) | 2019-10-08 | 2022-03-08 | Arm Limited | Exclusivity in circuitry having a home node providing coherency control |
DE102019134353A1 (de) * | 2019-12-13 | 2021-06-17 | Beckhoff Automation Gmbh | Verfahren zur Datenmigration eines Zeigerelements im Zuge einer Datenmigration eines Programmzustands eines Steuerprogramms eines Automatisierungssystems |
US11449244B2 (en) * | 2020-08-11 | 2022-09-20 | Silicon Motion, Inc. | Method and apparatus for performing access management of memory device in host performance booster architecture with aid of device side table information |
CN112181871B (zh) * | 2020-09-28 | 2022-10-28 | 中国人民解放军国防科技大学 | 处理器与内存间写阻塞式通信控制方法、部件、设备及介质 |
CN112380148B (zh) * | 2020-11-30 | 2022-10-25 | 海光信息技术股份有限公司 | 数据传输方法和数据传输装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6654830B1 (en) * | 1999-03-25 | 2003-11-25 | Dell Products L.P. | Method and system for managing data migration for a storage system |
US6959370B2 (en) * | 2003-01-03 | 2005-10-25 | Hewlett-Packard Development Company, L.P. | System and method for migrating data between memories |
JP4500057B2 (ja) * | 2004-01-13 | 2010-07-14 | 株式会社日立製作所 | データ移行方法 |
US9569349B2 (en) | 2008-12-19 | 2017-02-14 | Ati Technologies Ulc | Method and apparatus for reallocating memory content |
US8122213B2 (en) * | 2009-05-05 | 2012-02-21 | Dell Products L.P. | System and method for migration of data |
CN102073462B (zh) * | 2010-11-29 | 2013-04-17 | 华为技术有限公司 | 虚拟存储迁移方法、***和虚拟机监控器 |
US8565545B1 (en) * | 2011-04-07 | 2013-10-22 | Symantec Corporation | Systems and methods for restoring images |
US8601220B1 (en) * | 2011-04-29 | 2013-12-03 | Netapp, Inc. | Transparent data migration in a storage system environment |
US9354907B1 (en) * | 2012-10-26 | 2016-05-31 | Veritas Technologies Llc | Optimized restore of virtual machine and virtual disk data |
CN105706063A (zh) * | 2013-12-12 | 2016-06-22 | 英特尔公司 | 用于检测竞争条件的技术 |
-
2017
- 2017-01-06 GB GB1700214.8A patent/GB2557366B/en active Active
- 2017-11-08 US US15/806,580 patent/US10712965B2/en active Active
- 2017-11-21 KR KR1020170155311A patent/KR102552816B1/ko active IP Right Grant
- 2017-11-24 CN CN201711192553.1A patent/CN108153683B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
US10712965B2 (en) | 2020-07-14 |
GB2557366A (en) | 2018-06-20 |
KR102552816B1 (ko) | 2023-07-07 |
KR20180063820A (ko) | 2018-06-12 |
GB2557366B (en) | 2020-10-28 |
CN108153683A (zh) | 2018-06-12 |
GB201700214D0 (en) | 2017-02-22 |
US20180157437A1 (en) | 2018-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108153683B (zh) | 用于在存储器中的地址范围之间传输数据的装置和方法 | |
US10891228B2 (en) | Cache line states identifying memory cache | |
US8250254B2 (en) | Offloading input/output (I/O) virtualization operations to a processor | |
US7657710B2 (en) | Cache coherence protocol with write-only permission | |
US6088769A (en) | Multiprocessor cache coherence directed by combined local and global tables | |
US20080235477A1 (en) | Coherent data mover | |
US20110055515A1 (en) | Reducing broadcasts in multiprocessors | |
US8700863B2 (en) | Computer system having a cache memory and control method of the same | |
US20020053004A1 (en) | Asynchronous cache coherence architecture in a shared memory multiprocessor with point-to-point links | |
US9208088B2 (en) | Shared virtual memory management apparatus for providing cache-coherence | |
US20130227219A1 (en) | Processor, information processing apparatus, and arithmetic method | |
US20140006716A1 (en) | Data control using last accessor information | |
JP2021519456A (ja) | キャッシュ・メモリ動作の調整 | |
US7024520B2 (en) | System and method enabling efficient cache line reuse in a computer system | |
KR101858597B1 (ko) | 프로세싱 인 메모리 시스템의 연산할 작업, 연산할 데이터 및 연산 결과 데이터 전달 방법 및 프로세싱 인 메모리 시스템 | |
US9223799B1 (en) | Lightweight metadata sharing protocol for location transparent file access | |
US7725660B2 (en) | Directory for multi-node coherent bus | |
US20120210070A1 (en) | Non-blocking data move design | |
US11841800B2 (en) | Apparatus and method for handling stash requests | |
JP3626609B2 (ja) | マルチプロセッサシステム | |
US11635968B2 (en) | Using idle caches as a backing store for boot code | |
US20230418758A1 (en) | Tag processing for external caches | |
JP6565729B2 (ja) | 演算処理装置、制御装置、情報処理装置及び情報処理装置の制御方法 | |
JPWO2007110898A1 (ja) | マルチプロセッサシステムおよびマルチプロセッサシステムの動作方法 | |
JP3782178B2 (ja) | 情報処理装置 |
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 |