CN114896179B - 内存页的拷贝方法、装置、计算设备及可读存储介质 - Google Patents

内存页的拷贝方法、装置、计算设备及可读存储介质 Download PDF

Info

Publication number
CN114896179B
CN114896179B CN202210812351.7A CN202210812351A CN114896179B CN 114896179 B CN114896179 B CN 114896179B CN 202210812351 A CN202210812351 A CN 202210812351A CN 114896179 B CN114896179 B CN 114896179B
Authority
CN
China
Prior art keywords
register
data
address stored
writing
cache line
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
CN202210812351.7A
Other languages
English (en)
Other versions
CN114896179A (zh
Inventor
刘冬华
孟杰
卢彦
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.)
Uniontech Software Technology Co Ltd
Original Assignee
Uniontech Software Technology Co Ltd
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 Uniontech Software Technology Co Ltd filed Critical Uniontech Software Technology Co Ltd
Priority to CN202210812351.7A priority Critical patent/CN114896179B/zh
Publication of CN114896179A publication Critical patent/CN114896179A/zh
Application granted granted Critical
Publication of CN114896179B publication Critical patent/CN114896179B/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
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/543User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

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

Abstract

本发明涉及计算机技术领域,公开了一种内存页的拷贝方法、装置、计算设备及可读存储介质,方法包括:将内存页的目的地址存储至第一寄存器,将内存页的源地址存储至第二寄存器;从第二寄存器存储的地址中读取预定大小的第一数据写入第三寄存器或第三寄存器及其后连续的至少一个寄存器;从第二寄存器存储的地址中读取第三数据,写入至第四寄存器及其后连续的至少一个寄存器;将第三寄存器或第三寄存器及其后连续的至少一个寄存器以及第四寄存器及其后连续的至少一个寄存器中的数据写入至第一寄存器存储的地址;将第一寄存器和第二寄存器存储的地址减去缓存行大小。本发明的技术方案可提升内存页拷贝的速度。

Description

内存页的拷贝方法、装置、计算设备及可读存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种内存页的拷贝方法、装置、计算设备及可读存储介质。
背景技术
内存页的拷贝通常是指操作系统(例如:Linux)内核运行时将某一个物理内存页上的数据复制到另一个物理内存页上。在Linux内核中经常发生内存页的拷贝,例如:当父进程通过fork函数创建一个子进程,这时父进程和子进程共享大部分物理内存,如果父进程或子进程对这部分共享内存进行写操作,Linux内核将会发生缺页异常(Page Fault),通过调用内存页拷贝函数将要进行写操作的共享内存进行复制以实现内存隔离。
现有的拷贝内核内存页的方案,在内核的内存页拷贝函数中引入其他的指令,例如prfm指令、SIMD指令,以提升拷贝内核内存页的速度。而引入这些指令会产生一些指令引入风险,且引入SIMD指令在很多场景下(例如:中断处理)是受到限制的,为避免受限通过设置条件判断的方式在不受限时使用SIMD指令,受限时使用原有的算法,导致增加了代码的复杂性和不可靠性。
为此,亟需一种内存页的拷贝方案,以解决现有技术方案中存在的问题。
发明内容
为此,本发明提供一种内存页的拷贝方法、装置、计算设备及可读存储介质,以解决或至少缓解上面存在的问题。
根据本发明的第一个方面,提供了一种内存页的拷贝方法,在计算设备中执行,计算设备包括中央处理器和内存,中央处理器包括缓存和多个寄存器,方法包括:将内存页的目的地址存储至第一寄存器中,将内存页的源地址存储至第二寄存器中;从第二寄存器存储的地址中读取预定大小的第一数据并写入第三寄存器或第三寄存器及其后连续的至少一个寄存器中,以便第一数据所对应的缓存行大小的第二数据从第二寄存器存储的地址同步至缓存中;从第二寄存器存储的地址中读取第三数据,并写入至第四寄存器及其后连续的至少一个寄存器中,第三数据为第二数据中除去第一数据之外的其余数据;将第三寄存器或第三寄存器及其后连续的至少一个寄存器以及第四寄存器及其后连续的至少一个寄存器中的数据写入至第一寄存器存储的地址中;将第一寄存器和第二寄存器存储的地址的值减去缓存行大小的值;重复执行自从第二寄存器存储的地址中读取预定大小的第一数据并写入第三寄存器或第三寄存器及其后连续的至少一个寄存器的步骤到将所述第一寄存器和所述第二寄存器存储的地址的值减去所述缓存行大小的值的步骤,直到满足预定条件。
可选地,在根据本发明的内存页的拷贝方法中,第二寄存器与第三寄存器相邻,将第三寄存器或第三寄存器及其后连续的至少一个寄存器以及第四寄存器及其后连续的至少一个寄存器中的数据写入至第一寄存器存储的地址中,包括:将第三寄存器或第三寄存器及其后连续的至少一个寄存器中的数据转移至第五寄存器或第五寄存器及其后连续的至少一个寄存器中;将第五寄存器或第五寄存器及其后连续的至少一个寄存器以及第四寄存器及其后连续的至少一个寄存器中的数据写入至第一寄存器存储的地址中。可选地,在根据本发明的内存页的拷贝方法中,预定条件为内存页中的数据全部拷贝完成。
可选地,在根据本发明的内存页的拷贝方法中,还包括:将内存页的大小和缓存行大小之差作为用于指示循环次数的值,并存储至第六寄存器中;将第六寄存器存储的数据减少缓存行大小;其中,预定条件为用于指示循环次数的值小于或等于零。
可选地,在根据本发明的内存页的拷贝方法中,还包括:将缓存行大小作为用于指示循环次数的值,并存储至第六寄存器中;将第六寄存器存储的数据增加缓存行大小;其中,预定条件为用于指示循环次数的值大于或等于内存页的大小。
可选地,在根据本发明的内存页的拷贝方法中,还包括:如果第二寄存器存储的地址中还存在剩余数据,则将剩余数据写入第三寄存器及其后连续的至少一个寄存器中;将写入至第三寄存器及其后连续的至少一个寄存器中的剩余数据写入至第一寄存器存储的地址中。
根据本发明的第二个方面,提供了一种内存页的拷贝装置,包括:地址存储模块,适于将内存页的目的地址存储至第一寄存器中,将内存页的源地址存储至第二寄存器中;数据读写模块,适于从第二寄存器存储的地址中读取预定大小的第一数据并写入第三寄存器或第三寄存器及其后连续的至少一个寄存器中,以便第一数据所对应的缓存行大小的第二数据从第二寄存器存储的地址同步至缓存中,还适于从第二寄存器存储的地址中读取第三数据,并写入至第四寄存器及其后连续的至少一个寄存器中,第三数据为第二数据中除去第一数据之外的其余数据,还适于将第三寄存器或第三寄存器及其后连续的至少一个寄存器以及第四寄存器及其后连续的至少一个寄存器中的数据写入至第一寄存器存储的地址中;地址更新模块,适于将第一寄存器和第二寄存器存储的地址的值减去缓存行大小的值;重复执行模块,适于重复执行从第二寄存器存储的地址中读取预定大小的第一数据并写入第三寄存器或第三寄存器及其后连续的至少一个寄存器中、从第二寄存器存储的地址中读取第三数据,并写入至第四寄存器及其后连续的至少一个寄存器中、将第三寄存器或第三寄存器及其后连续的至少一个寄存器以及第四寄存器及其后连续的至少一个寄存器中的数据写入至第一寄存器存储的地址中、以及将第一寄存器和第二寄存器存储的地址的值减去缓存行大小的值的步骤,直到满足预定条件。可选地,在根据本发明的内存页的拷贝装置中,数据读写模块还适于:将第三寄存器或第三寄存器及其后连续的至少一个寄存器中的数据转移至第五寄存器或第五寄存器及其后连续的至少一个寄存器中;将第五寄存器或第五寄存器及其后连续的至少一个寄存器以及第四寄存器及其后连续的至少一个寄存器中的数据写入至第一寄存器存储的地址中。
根据本发明的第三个方面,提供一种计算设备,包括:至少一个处理器;存储器,存储有程序指令,其中,程序指令被配置为适于由上述至少一个处理器执行,程序指令包括用于执行如上所述的方法的指令。
根据本发明的第四个方面,提供一种存储有程序指令的可读存储介质,当该程序指令被计算设备读取并执行时,使得该计算设备执行如上所述的方法。
根据本发明的技术方案,充分利用了缓存一致性的特点,通过从第二寄存器存储的地址中读取预定大小的第一数据并写入第三寄存器或第三寄存器及其后连续的至少一个寄存器中,实现了将第一数据所对应的缓存行大小的第二数据从第二寄存器存储的地址同步至缓存中。从第二寄存器存储的地址中读取第三数据时,所读取的第三数据都可以在缓存中命中,提升了内存页拷贝的速度和效率。通过将第三寄存器或第三寄存器及其后连续的至少一个寄存器以及第四寄存器及其后连续的至少一个寄存器中的数据写入至第一寄存器存储的地址中,实现内存页中一个缓存行大小的数据完成拷贝,通过重复本发明的内存页的拷贝方法,实现了内存页中数据的全部拷贝。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的计算设备100的物理组件的框图;
图2示出了根据本发明一个实施例的运行拷贝内存页的函数的示意图;
图3示出了根据本发明一个实施例的内存页的拷贝方法300的流程图;
图4示出了根据本发明另一个实施例的内存页的拷贝方法400的流程示意图;
图5示出了根据本发明一个实施例的内存页的拷贝装置500。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的计算设备100的物理组件(即,硬件)的框图。在基本配置中,计算设备100包括至少一个处理单元102和系统存储器104。根据一个方面,取决于计算设备的配置和类型,处理单元102可以实现为处理器。系统存储器104包括但不限于易失性存储(例如,随机存取存储器)、非易失性存储(例如,只读存储器)、闪速存储器、或者这样的存储器的任何组合。根据一个方面,系统存储器104中包括操作系统105和程序模块106,程序模块106中包括本发明的内存页的拷贝装置120。
根据一个方面,操作系统105例如适合于控制计算设备100的操作。此外,示例结合图形库、其他操作系统、或任何其他应用程序而被实践,并且不限于任何特定的应用或系统。在图1中通过在虚线108内的那些组件示出了该基本配置。根据一个方面,计算设备100具有额外的特征或功能。例如,根据一个方面,计算设备100包括额外的数据存储设备(可移动的和/或不可移动的),例如磁盘、光盘、或者磁带。这样额外的存储在图1中是由可移动存储设备109和不可移动存储设备110示出的。
如在上文中所陈述的,根据一个方面,在系统存储器104中存储有程序模块106。根据一个方面,程序模块106可以包括一个或多个应用程序,本发明不限制应用程序的类型,例如应用程序可以包括:电子邮件和联系人应用程序、文字处理应用程序、电子表格应用程序、数据库应用程序、幻灯片展示应用程序、绘画或计算机辅助应用程序、网络浏览器应用程序等。
根据一个方面,可以在包括分立电子元件的电路、包含逻辑门的封装或集成的电子芯片、利用微处理器的电路、或者在包含电子元件或微处理器的单个芯片上实践示例。例如,可以经由其中在图1中所示出的每个或许多组件可以集成在单个集成电路上的片上系统(SOC)来实践示例。根据一个方面,这样的SOC设备可以包括一个或多个处理单元、图形单元、通信单元、系统虚拟化单元、以及各种应用功能,其全部作为单个集成电路而被集成(或“烧”)到芯片基底上。当经由SOC进行操作时,可以经由在单个集成电路(芯片)上与计算设备100的其他组件集成的专用逻辑来对在本文中所描述的功能进行操作。还可以使用能够执行逻辑操作(例如AND、OR和NOT)的其他技术来实践本发明的实施例,所述其他技术包括但不限于机械、光学、流体、和量子技术。另外,可以在通用计算机内或在任何其他任何电路或系统中实践本发明的实施例。
根据一个方面,计算设备100还可以具有一个或多个输入设备112,例如键盘、鼠标、笔、语音输入设备、触摸输入设备等。还可以包括输出设备114,例如显示器、扬声器、打印机等。前述设备是示例并且也可以使用其他设备。计算设备100可以包括允许与其他计算设备118进行通信的一个或多个通信连接116。合适的通信连接116的示例包括但不限于:RF发射机、接收机和/或收发机电路;通用串行总线(USB)、并行和/或串行端口。
如在本文中所使用的术语计算机可读介质包括计算机存储介质。计算机存储介质可以包括以任何用于存储信息(例如,计算机可读指示、数据结构、或程序模块)的方法或技术来实现的易失性的和非易失性的、可移动的和不可移动的介质。系统存储器104、可移动存储设备109、和不可移动存储设备110都是计算机存储介质的示例(即,存储器存储)。计算机存储介质可以包括随机存取存储器(RAM) 、只读存储器(ROM)、电可擦只读存储器(EEPROM)、闪速存储器或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光存储、盒式磁带、磁带、磁盘存储器或其他磁存储设备、或者可用于存储信息并且可以由计算机设备100访问的任何其他制品。根据一个方面,任何这样的计算机存储介质都可以是计算设备100的一部分。计算机存储介质不包括载波或其他经传播的数据信号。
根据一个方面,通信介质是由计算机可读指令、数据结构、程序模块、或者经调制的数据信号(例如,载波或其他传输机制)中的其他数据实施的,并且包括任何信息传递介质。根据一个方面,术语“经调制的数据信号”描述了具有一个或多个特征集或者以将信息编码在信号中的方式改变的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声学、射频(RF)、红外线的、以及其他无线介质之类的无线介质。
在本发明的一个实施例中,计算设备100包括一个或多个处理器、以及存储有程序指令的一个或多个可读存储介质。当程序指令被配置为由一个或多个处理器执行时,使得计算设备执行本发明实施例中的内存页的拷贝方法。
计算设备的内核中通常具有拷贝内存页的函数(copy_page函数),copy_page函数是内核中的基本模块,该函数在很多场景下会被调用,属于常驻在内存中的内核代码段。由于该函数的代码很少,该代码通常会被读入到指令高速缓存(icache)中运行,因此取指访存所花费的时间基本可以忽略。图2示出了根据本发明一个实施例的运行拷贝内存页的函数的示意图。如图2所示,copy_page函数所要操作的对象包括源物理内存页和目的物理内存页,两者均在内存中,源物理内存页的地址即内存页的源地址,目的物理内存页的地址即内存页的目的地址。中央处理器中的算数逻辑单元负责算数运算和逻辑运算。对内存页的读写可以通过指令读写到寄存器,由缓存一致性保证内存和缓存的一致性,中央处理器会优先访问缓存。对内存页的读写也可以不经过缓存由指令直接访问(如stnp内存写指令),但其性能大大低于利用缓存一致性(如stp内存写指令)实现内存页的拷贝。因此,本发明提出一种充分利用缓存一致性的特性来提升内存页拷贝的速度和性能的方案。
图3示出了根据本发明一个实施例的内存页的拷贝方法300的流程图。方法300在计算设备(如前述计算设备100)中执行,计算设备中包括中央处理器和内存,中央处理器中包括缓存和多个寄存器。
如图3所示,在310中,将内存页的目的地址存储至第一寄存器中,将内存页的源地址存储至第二寄存器中。
根据本发明的一个实施例,对内核的copy_page函数的工作流程进行改进,创建一个拷贝内存页的函数,该函数接收两个输入参数,一个参数是内存页的目的地址,存储在第一寄存器中,另一个参数是内存页的源地址,存储在第二寄存器中。可选地,第一寄存器为x0寄存器,第二寄存器为x1寄存器。可选地,第一寄存器为x1寄存器,第二寄存器为x0寄存器。
在320中,从第二寄存器存储的地址中读取预定大小的第一数据并写入第三寄存器或所述第三寄存器及其后连续的至少一个寄存器中,以便第一数据所对应的缓存行大小的第二数据从第二寄存器存储的地址同步至缓存中。
缓存行大小(Cache line size)通常为2的整数次幂个连续字节,一般为32-256个字节,缓存行大小也可能存在其他大小,本发明对缓存行大小不做具体限制,常见的缓存行大小为64个字节,本发明以缓存行大小为64个字节为例对本发明的技术方案予以说明。不同的CPU中寄存器的性能也不同,预定大小的选择可根据其寄存器能存储的数据大小确定。预定大小可以是一个或多个寄存器可存储的数据量,且不超过一个缓存行大小。例如:预定大小可以是两个寄存器可存储的数据量。可选地,缓存行大小可以是64个字节,预定大小可以是16个字节。
根据本发明的实施例,在内存页的拷贝过程中,每次拷贝一个缓存行大小的数据,循环多次,直到将内存页的内容全部拷贝完成。在循环开始时,预先从x1寄存器存储的地址中读取第一个数据到第三寄存器或所述第三寄存器及其后连续的至少一个寄存器。其中,第二寄存器与第三寄存器相邻,或第一寄存器与第三寄存器相邻。可选地,第三寄存器为x2寄存器。第三寄存器及其后连续的至少一个寄存器可以包括多种情况,例如第三寄存器及其后连续的一个寄存器可以是x2寄存器和x3寄存器,第三寄存器及其后连续的两个寄存器可以是x2寄存器、x3寄存器和x4寄存器,第三寄存器及其后连续的三个寄存器可以是x2寄存器、x3寄存器、x4寄存器和x5寄存器,以此类推。如果第一寄存器为x0寄存器,第二寄存器为x1寄存器,则第二寄存器与第三寄存器相邻。如果第一寄存器为x1寄存器,第二寄存器为x0寄存器,则第一寄存器与第三寄存器相邻。在循环前,预先读取预定大小的数据到x2寄存器或x2寄存器及其后连续的至少一个寄存器中,这样可以充分利用缓存一致性的特点。一个缓存行通常引用内存中的一块地址,在读取预定大小的第一数据的时候,第一数据的地址对应的一个缓存行大小的第二数据都将读取到缓存中,这样在循环中,大多数的从内存读的数据都会命中缓存,可大幅降低内存总线的访问时间,提升内存页的拷贝速度。
在330中,从第二寄存器存储的地址中读取第三数据,并写入至第四寄存器及其后连续的至少一个寄存器中。其中,第三数据为第二数据中除去第一数据之外的其余数据。第二数据为一个缓存行大小的数据。
根据本发明的实施例,如果第一数据写入到了x2寄存器,则第四寄存器及其后连续的至少一个寄存器可以为x3寄存器至x9寄存器,具体包括x3寄存器、x4寄存器、x5寄存器、x6寄存器、x7寄存器、x8寄存器、x9寄存器。如果第一数据写入到了x2寄存器和x3寄存器,则第四寄存器及其后连续的至少一个寄存器可以为x4寄存器至x9寄存器,具体包括x4寄存器、x5寄存器、x6寄存器、x7寄存器、x8寄存器、x9寄存器。如果第一数据写入到了x2寄存器、x3寄存器和x4寄存器,则第四寄存器及其后连续的至少一个寄存器可以为x5寄存器至x9寄存器,具体包括x5寄存器、x6寄存器、x7寄存器、x8寄存器、x9寄存器,以此类推。
在320中,已经将当前要读取的缓存行中的预定大小的第一数据写入到了第三寄存器或第三寄存器及其后连续的至少一个寄存器中,在330中,则读取当前缓存行中其余的数据,写入到第四寄存器及其后连续的至少一个寄存器中。由于在将第一数据写入到第三寄存器或第三寄存器及其后连续的至少一个寄存器时,因为缓存一致性,第二数据即当前缓存行的数据已经全部同步到了缓存中,这时再读取第二数据中其余数据时,这些数据已经在缓存中存在了,因此都会在缓存中命中。从第二寄存器存储的地址中读取第三数据,由于第三数据均可在缓存中命中,第三数据实际是从缓存中读取到的,大幅减少内存总线的访问花费的时间,提升内存页的拷贝效率。
在340中,将第三寄存器或第三寄存器及其后连续的至少一个寄存器以及第四寄存器及其后连续的至少一个寄存器中的数据写入至第一寄存器存储的地址中。
根据本发明的实施例,将第三寄存器或第三寄存器及其后连续的至少一个寄存器中的数据转移至第五寄存器或第五寄存器及其后连续的至少一个寄存器中。然后,将第五寄存器或第五寄存器及其后连续的至少一个寄存器以及第四寄存器及其后连续的至少一个寄存器中的数据写入至第一寄存器存储的地址中。可选地,第五寄存器可以为x10寄存器。以第三寄存器及其后连续的至少一个寄存器为x2寄存器和x3寄存器,第五寄存器及其后连续的至少一个寄存器为x10寄存器和x11寄存器为例,将x2寄存器和x3寄存器中的数据通过x10寄存器和x11寄存器进行数据过渡,可以使指令流水线工作时紧邻的指令没有依赖,实现并行执行,进一步提升内存页拷贝的速度和效率。其中,将x2寄存器和x3寄存器中的数据转移到x10寄存器和x11寄存器上的步骤,由于是发生在CPU内部的寄存器之间拷贝,所花费的时间极短,基本可以忽略不计。
在350中,将第一寄存器和第二寄存器存储的地址的值分别减去缓存行大小的值。
根据本发明的实施例,将x0寄存器和x1寄存器存储的地址均自减一个缓存行大小,使得下一个循环从下一个缓存行大小的数据开始读取。
根据本发明的一个实施例,将内存页的大小和缓存行大小之差作为用于指示循环次数的值,并存储至第六寄存器中。可选地,第六寄存器可以为x18寄存器,也可以是其他寄存器。在350中,将第一寄存器和第二寄存器存储的地址减去缓存行大小,将第六寄存器存储的数据也减少缓存行大小。
根据本发明的另一个实施例,将缓存行大小作为用于指示循环次数的值,并存储至第六寄存器中。可选地,第六寄存器可以为x18寄存器,也可以是其他寄存器。在350中,将第一寄存器和第二寄存器存储的地址减去缓存行大小,将第六寄存器存储的数据增加缓存行大小。
在360中,重复执行320、330、340、350中的步骤,直到满足预定条件。
具体地,重复执行从第二寄存器存储的地址中读取预定大小的第一数据并写入第三寄存器或第三寄存器及其后连续的至少一个寄存器中,以便第一数据所对应的缓存行大小的第二数据从第二寄存器存储的地址同步至缓存中、从第二寄存器存储的地址中读取第三数据,并写入至第四寄存器及其后连续的至少一个寄存器中,第三数据为第二数据中除去第一数据之外的其余数据、将第三寄存器或第三寄存器及其后连续的至少一个寄存器以及第四寄存器及其后连续的至少一个寄存器中的数据写入至第一寄存器存储的地址中以及将第一寄存器和第二寄存器存储的地址的值减去缓存行大小的值的步骤,直到满足预定条件。
根据本发明的实施例,预定条件为内存页中的数据全部拷贝完成。
根据本发明的一个实施例,如果将内存页的大小和缓存行大小之差作为用于指示循环次数的值存储在第六寄存器中,则预定条件可以是用于指示循环次数的值小于或等于零。
根据本发明的另一个实施例,如果将缓存行大小作为用于指示循环次数的值存储在第六寄存器中,则预定条件可以是用于指示循环次数的值大于或等于内存页的大小。
可选地,在满足预定条件后,如果第二寄存器存储的地址中还存在剩余数据未进行拷贝,则将剩余数据写入第三寄存器及其后连续的至少一个寄存器中。将写入至第三寄存器及其后连续的至少一个寄存器中的剩余数据写入至第一寄存器存储的地址中。具体地,对剩余数据的处理,与对每个缓存行大小的数据的处理类似,从第二寄存器存储的地址中读取预定大小的第一数据并写入第三寄存器或第三寄存器及其后连续的至少一个寄存器中,以便第一数据所对应的缓存行大小的第二数据从第二寄存器存储的地址同步至缓存中。再将第三寄存器或第三寄存器及其后连续的至少一个寄存器中的数据转移至第五寄存器或第五寄存器及其后连续的至少一个寄存器中。在从剩余数据中读取预定大小的第一数据写入第三寄存器或第三寄存器及其后连续的至少一个寄存器后,如果还存在数据未拷贝,则读取未拷贝的数据并写入第四寄存器及其后连续的至少一个寄存器中,然后将第三寄存器或第三寄存器及其后连续的至少一个寄存器以及第四寄存器及其后连续的至少一个寄存器中的数据写入至第一寄存器存储的地址中。
为了更清楚地对本发明的内存页的拷贝方法进行说明,下面结合一个具体的实施例对本发明的内存页的拷贝方法进行说明。图4示出了根据本发明另一个实施例的内存页的拷贝方法400的流程示意图。如图4所示,在410中,将内存页的大小和缓存行大小之差存储在x18寄存器中。将内存页的目的地址存储在x0寄存器中,将内存页的源地址存储在x1寄存器中。
在420中,从内存页的x1寄存器对应的地址中读取16字节的数据,并写入到x2寄存器和x3寄存器中。
在430中,判断x18寄存器存储的数据是否大于零。
在440中,将x2寄存器中存储的数据赋给x10寄存器,将x3寄存器中存储的数据赋给x11寄存器,然后将x10寄存器和x11寄存器中的数据写入到内存页的x0寄存器对应的地址。从x1寄存器对应的地址中读取一个缓存行大小的数据,将其中写入过x2寄存器和x3寄存器的16个字节以外的数据写入到x4-x9寄存器中。
在450中,将x18寄存器存储的数据减去一个缓存行大小,将x0寄存器和x1寄存器中存储的地址后移一个缓存行大小。随后,返回430,直到x18寄存器存储的数据不满足大于零的条件,进入460。
在460中,如果循环执行结束内存页还有剩余数据未拷贝,则从x1寄存器读取剩余数据,写入x2-x9寄存器中,再将所写入的寄存器中的数据写入到x0寄存器对应的地址中。
本发明还提出了一种内存页的拷贝装置,图5示出了根据本发明一个实施例的内存页的拷贝装置500。如图5所示,装置500包括地址存储模块510、数据读写模块520、地址更新模块530、以及重复执行模块540。可选地,装置500还包括循环指示模块550。
地址存储模块510,适于将内存页的目的地址存储至第一寄存器中,将内存页的源地址存储至第二寄存器中。
数据读写模块520,适于从第二寄存器存储的地址中读取预定大小的第一数据并写入第三寄存器或第三寄存器及其后连续的至少一个寄存器中,以便第一数据所对应的缓存行大小的第二数据从第二寄存器存储的地址同步至缓存中,还适于从第二寄存器存储的地址中读取第三数据,并写入至第四寄存器及其后连续的至少一个寄存器中,第三数据为第二数据中除去第一数据之外的其余数据,还适于将第三寄存器或第三寄存器及其后连续的至少一个寄存器以及第四寄存器及其后连续的至少一个寄存器中的数据写入至第一寄存器存储的地址中。
地址更新模块530,适于将第一寄存器和第二寄存器存储的地址的值减去缓存行大小的值。
重复执行模块540,适于重复执行从第二寄存器存储的地址中读取预定大小的第一数据并写入第三寄存器或第三寄存器及其后连续的至少一个寄存器中、从第二寄存器存储的地址中读取第三数据,并写入至第四寄存器及其后连续的至少一个寄存器中、将第三寄存器或第三寄存器及其后连续的至少一个寄存器以及第四寄存器及其后连续的至少一个寄存器中的数据写入至第一寄存器存储的地址中、以及将第一寄存器和第二寄存器存储的地址的值减去缓存行大小的值的步骤,直到满足预定条件。其中,预定条件为内存页中的数据全部拷贝完成、用于指示循环次数的值小于或等于零、或用于指示循环次数的值大于或等于内存页的大小。
循环指示模块550,适于将内存页的大小和缓存行大小之差作为用于指示循环次数的值,并存储至第六寄存器中,将第六寄存器存储的数据减少缓存行大小;还适于将缓存行大小作为用于指示循环次数的值,并存储至第六寄存器中,将第六寄存器存储的数据增加缓存行大小。
需要说明的,关于地址存储模块510、数据读写模块520、地址更新模块530、重复执行模块540、以及循环指示模块550的工作原理及流程与内存页的拷贝方法300相似,具体可以参考前述对内存页的拷贝方法300中的描述,在此不做赘述。
根据本发明的技术方案,充分利用了缓存一致性的特点,通过从第二寄存器存储的地址中读取预定大小的第一数据并写入第三寄存器或第三寄存器及其后连续的至少一个寄存器中,实现了将第一数据所对应的缓存行大小的第二数据从第二寄存器存储的地址同步至缓存中。从第二寄存器存储的地址中读取第三数据时,所读取的第三数据都可以在缓存中命中,提升了内存页拷贝的速度和效率。通过将第三寄存器或第三寄存器及其后连续的至少一个寄存器以及第四寄存器及其后连续的至少一个寄存器中的数据写入至第一寄存器存储的地址中,实现内存页中一个缓存行大小的数据完成拷贝,通过重复本发明的内存页的拷贝方法,实现了内存页中数据的全部拷贝。
进一步地,本发明的技术方案将第三寄存器或第三寄存器及其后连续的至少一个寄存器中的数据转移至第五寄存器或第五寄存器及其后连续的至少一个寄存器中进行了过渡之后再写入相应的地址,在对内存进行读写时均使用不同的寄存器,判断循环次数也使用数据读写所使用的寄存器以外的其他的寄存器,使得相邻指令之间不存在依赖,大幅提升指令流水线的效率,提升内存页拷贝的速度和效率。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,移动终端一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的内存页的拷贝方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。

Claims (10)

1.一种内存页的拷贝方法,在计算设备中执行,所述计算设备包括中央处理器和内存,所述中央处理器包括缓存和多个寄存器,所述方法包括:
将所述内存页的目的地址存储至第一寄存器中,将所述内存页的源地址存储至第二寄存器中;
从所述第二寄存器存储的地址中读取预定大小的第一数据并写入第三寄存器或所述第三寄存器及其后连续的至少一个寄存器中,以便所述第一数据所对应的缓存行大小的第二数据从所述第二寄存器存储的地址同步至所述缓存中;
从所述第二寄存器存储的地址中读取第三数据,并写入至第四寄存器及其后连续的至少一个寄存器中,所述第三数据为所述第二数据中除去所述第一数据之外的其余数据;
将所述第三寄存器或所述第三寄存器及其后连续的至少一个寄存器以及所述第四寄存器及其后连续的至少一个寄存器中的数据写入至所述第一寄存器存储的地址中;
将所述第一寄存器和所述第二寄存器存储的地址的值减去所述缓存行大小的值;
重复执行自从所述第二寄存器存储的地址中读取预定大小的第一数据并写入第三寄存器或所述第三寄存器及其后连续的至少一个寄存器中的步骤到将所述第一寄存器和所述第二寄存器存储的地址的值减去所述缓存行大小的值的步骤,直到满足预定条件。
2.根据权利要求1所述的方法,其中,所述第二寄存器与所述第三寄存器相邻,所述将所述第三寄存器或所述第三寄存器及其后连续的至少一个寄存器以及所述第四寄存器及其后连续的至少一个寄存器中的数据写入至所述第一寄存器存储的地址中,包括:
将所述第三寄存器或所述第三寄存器及其后连续的至少一个寄存器中的数据转移至第五寄存器或所述第五寄存器及其后连续的至少一个寄存器中;
将所述第五寄存器或所述第五寄存器及其后连续的至少一个寄存器以及所述第四寄存器及其后连续的至少一个寄存器中的数据写入至所述第一寄存器存储的地址中。
3.根据权利要求1或2所述的方法,其中,所述预定条件为所述内存页中的数据全部拷贝完成。
4.根据权利要求1或2所述的方法,还包括:
将所述内存页的大小和所述缓存行大小之差作为用于指示循环次数的值,并存储至第六寄存器中;
将所述第六寄存器存储的数据减少所述缓存行大小;
其中,所述预定条件为所述用于指示循环次数的值小于或等于零。
5.根据权利要求1或2所述的方法,还包括:
将所述缓存行大小作为用于指示循环次数的值,并存储至第六寄存器中;
将所述第六寄存器存储的数据增加所述缓存行大小;
其中,所述预定条件为所述用于指示循环次数的值大于或等于所述内存页的大小。
6.根据权利要求1或2所述的方法,还包括:
如果所述第二寄存器存储的地址中还存在剩余数据,则将所述剩余数据写入所述第三寄存器及其后连续的至少一个寄存器中;
将写入至第三寄存器及其后连续的至少一个寄存器中的剩余数据写入至所述第一寄存器存储的地址中。
7.一种内存页的拷贝装置,包括:
地址存储模块,适于将所述内存页的目的地址存储至第一寄存器中,将所述内存页的源地址存储至第二寄存器中;
数据读写模块,适于从所述第二寄存器存储的地址中读取预定大小的第一数据并写入第三寄存器或所述第三寄存器及其后连续的至少一个寄存器中,以便所述第一数据所对应的缓存行大小的第二数据从所述第二寄存器存储的地址同步至缓存中,还适于从所述第二寄存器存储的地址中读取第三数据,并写入至第四寄存器及其后连续的至少一个寄存器中,第三数据为所述第二数据中除去所述第一数据之外的其余数据,还适于将所述第三寄存器或所述第三寄存器及其后连续的至少一个寄存器以及所述第四寄存器及其后连续的至少一个寄存器中的数据写入至所述第一寄存器存储的地址中;
地址更新模块,适于将所述第一寄存器和所述第二寄存器存储的地址的值减去所述缓存行大小的值;
重复执行模块,适于重复执行从所述第二寄存器存储的地址中读取预定大小的第一数据并写入第三寄存器或所述第三寄存器及其后连续的至少一个寄存器中、从所述第二寄存器存储的地址中读取第三数据,并写入至第四寄存器及其后连续的至少一个寄存器中、将所述第三寄存器或所述第三寄存器及其后连续的至少一个寄存器以及所述第四寄存器及其后连续的至少一个寄存器中的数据写入至所述第一寄存器存储的地址中、以及将所述第一寄存器和所述第二寄存器存储的地址的值减去所述缓存行大小的值的步骤,直到满足预定条件。
8.根据权利要求7所述的装置,其中,所述数据读写模块还适于:将所述第三寄存器或所述第三寄存器及其后连续的至少一个寄存器中的数据转移至第五寄存器或所述第五寄存器及其后连续的至少一个寄存器中;将所述第五寄存器或所述第五寄存器及其后连续的至少一个寄存器以及所述第四寄存器及其后连续的至少一个寄存器中的数据写入至所述第一寄存器存储的地址中。
9.一种计算设备,包括:
至少一个处理器;以及
存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求1至6中任一项所述方法的指令。
10.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1至6中任一项所述方法。
CN202210812351.7A 2022-07-12 2022-07-12 内存页的拷贝方法、装置、计算设备及可读存储介质 Active CN114896179B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210812351.7A CN114896179B (zh) 2022-07-12 2022-07-12 内存页的拷贝方法、装置、计算设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210812351.7A CN114896179B (zh) 2022-07-12 2022-07-12 内存页的拷贝方法、装置、计算设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN114896179A CN114896179A (zh) 2022-08-12
CN114896179B true CN114896179B (zh) 2022-09-27

Family

ID=82729333

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210812351.7A Active CN114896179B (zh) 2022-07-12 2022-07-12 内存页的拷贝方法、装置、计算设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN114896179B (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8166213B2 (en) * 2007-11-21 2012-04-24 Microchip Technology Incorporated Controller with indirect accessible memory
US10387151B2 (en) * 2007-12-31 2019-08-20 Intel Corporation Processor and method for tracking progress of gathering/scattering data element pairs in different cache memory banks
CN113377684B (zh) * 2020-03-09 2024-03-08 瑞昱半导体股份有限公司 数据写入系统与方法
CN112100093B (zh) * 2020-08-18 2023-11-21 海光信息技术股份有限公司 保持多处理器共享内存数据一致性的方法和多处理器系统

Also Published As

Publication number Publication date
CN114896179A (zh) 2022-08-12

Similar Documents

Publication Publication Date Title
US6061783A (en) Method and apparatus for manipulation of bit fields directly in a memory source
JP2018504666A (ja) 多次元アレイから要素の多次元ブロックをプリフェッチするためのハードウェア装置および方法
CN112559051A (zh) 使用脉动阵列和融合操作的深度学习实现方式
US10261796B2 (en) Processor and method for executing in-memory copy instructions indicating on-chip or off-chip memory
CN101410812B (zh) 用于迁移受到输入/输出设备访问的数据的方法和设备
TWI808869B (zh) 硬體處理器及處理器
US10168957B2 (en) Directed placemat of data in memory
CN113254073B (zh) 数据处理方法及装置
US9513923B2 (en) System and method for context migration across CPU threads
US9058301B2 (en) Efficient transfer of matrices for matrix based operations
US9489173B2 (en) Resizable and relocatable queue
CN114003289A (zh) 一种应用程序运行方法、计算设备及存储介质
CN114896179B (zh) 内存页的拷贝方法、装置、计算设备及可读存储介质
US8990741B2 (en) Circuit design support device, circuit design support method and program
WO2023093260A1 (zh) 指令处理装置、方法、计算机设备及存储介质
CN115269199A (zh) 数据处理方法、装置、电子设备及计算机可读存储介质
US20220171622A1 (en) Multi-dimension dma controller and computer system including the same
US11842200B2 (en) Multi-modal gather operation
CN114237708A (zh) 一种多处理器的指令执行方法、计算设备及存储介质
CN115061954B (zh) 一种缺页中断处理方法、计算设备及存储介质
JP2014238832A (ja) 少なくとも1つの処理パイプラインにおけるオペランド生成
US11972261B2 (en) Hardware device for enforcing atomicity for memory operations
US20050251795A1 (en) Method, system, and program for optimizing code
CN114879987A (zh) 一种内核升级和使用方法、计算设备及存储介质
CN114003284A (zh) 一种基于读写锁的指令执行方法、计算设备及存储介质

Legal Events

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