CN111443949B - 一种飞腾服务器平台下的内核内存页拷贝加速方法 - Google Patents
一种飞腾服务器平台下的内核内存页拷贝加速方法 Download PDFInfo
- Publication number
- CN111443949B CN111443949B CN202010216435.5A CN202010216435A CN111443949B CN 111443949 B CN111443949 B CN 111443949B CN 202010216435 A CN202010216435 A CN 202010216435A CN 111443949 B CN111443949 B CN 111443949B
- Authority
- CN
- China
- Prior art keywords
- copy
- function
- page
- memory page
- kernel
- 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
- 238000000034 method Methods 0.000 title claims abstract description 20
- 230000006870 function Effects 0.000 claims abstract description 63
- 229910052754 neon Inorganic materials 0.000 claims abstract description 20
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 claims abstract description 20
- 230000001133 acceleration Effects 0.000 claims abstract description 13
- 125000004122 cyclic group Chemical group 0.000 claims abstract description 4
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及一种飞腾服务器平台下的内核内存页拷贝加速方法,包括:在飞腾操作系统内核中增加基于SIMD向量指令的内存页拷贝函数;内存页拷贝函数接收两个输入参数;开始循环拷贝操作后,通过飞腾处理器prfm指令的数据预读取功能从源内存地址依据cache line大小预读取128字节数据到处理器缓存中;将内核的copy_page函数重新命名,并接收两个输入参数,第一个参数为目的内存页地址,标记为dest,第二个参数为源内存页地址,标记为src,以对内核中现有调用接口的透明替换;如copy_page函数执行完毕,内核内存页拷贝结束。本发明利用NEON指令提升FT2000+平台上内存页拷贝的速度,降低处理器资源消耗,提升系统综合性能。
Description
技术领域
本发明涉及飞腾服务器平台技术,特别涉及一种飞腾服务器平台下的内核内存页拷贝加速方法。
背景技术
内核内存页拷贝是操作系统运行时将某一个物理内存页上的所有数据复制到另外一个物理内存页上,其在操作系统运行时被广泛调用。比如在创建新进程时,父子进程之间会存在共享内存,如果父进程或子进程对共享内存进行写操作,操作系统则会调用内存页拷贝算法将要写的共享内存复制一份以免影响其他进程的正常运行,是操作系统中运行时重要的算法。在基于FT2000+国产处理器的服务器平台上的通用内存页拷贝算法是首先使用处理器的数据加载指令将16个字节的源内存页数据加载到寄存器中,然后再使用数据保存指令将寄存器中的数据保存到目的内存页中,通过不断循环直至完成整个内存页的数据拷贝。
由于FT2000+处理器上的一对数据加载和数据保存指令一次最多只能拷贝16个字节的数据,因此需要多轮循环才能完成内存页的数据拷贝,而且数据的拷贝操作需要消耗处理器资源,在进行内存页拷贝时会占用大量的处理器资源,极大影响内存页拷贝速度。
发明内容
本发明的目的在于提供一种飞腾服务器平台下的内核内存页拷贝加速方法,用于解决上述现有技术的问题。
本发明一种飞腾服务器平台下的内核内存页拷贝加速方法,其中,包括:在飞腾操作系统内核中增加基于SIMD向量指令的内存页拷贝函数;内存页拷贝函数接收两个输入参数,第一个参数为目的内存页地址,标记为dest,第二个参数为原内存页地址,标记为src;内存页拷贝函数在函数入口处首先将源内存页地址加上物理内存页大小计算出内存页拷贝结束地址,记为end;开始循环拷贝操作后,通过飞腾处理器prfm指令的数据预读取功能从源内存地址依据cache line大小预读取128字节数据到处理器缓存中;将内核的copy_page函数重新命名,并接收两个输入参数,第一个参数为目的内存页地址,标记为dest,第二个参数为源内存页地址,标记为src,以对内核中现有调用接口的透明替换;如copy_page函数执行完毕,内核内存页拷贝结束。
根据本发明的飞腾服务器平台下的内核内存页拷贝加速方法的一实施例,其中,在每次循环中拷贝128字节,使用neon ld4指令将src源内存页的128字节数据加载到neon的向量寄存器中,通过neon st4指令将neon向量寄存器中的数据保存到dest目的内存页中,再将dest和src地址增加128,如果src地址与end地址相等则结束拷贝操作,否则继续下一轮拷贝。
根据本发明的飞腾服务器平台下的内核内存页拷贝加速方法的一实施例,其中,进一步包括:将内核原有copy_page函数重命名为copy_page_slow(dest,src);并重新定义一新copy_page函数,新copy_page函数入口处利用in_interrupt函数检查新copy_page函数是否处于中断执行环境;如果in_interrupt函数返回值为真,则表示新copy_page函数处于中断执行环境中,此时执行基于处理器单指令单数据流的copy_page_slow(dest,src)函数;如果in_interrupt函数返回值为假,则表示新copy_page函数不在中断执行环境中,执行基于NEON协处理器单指令多数据流的copy_page_fast(dest,src)函数。
根据本发明的飞腾服务器平台下的内核内存页拷贝加速方法的一实施例,其中,在飞腾平台上对非中断执行环境进行内存页拷贝优化。
本发明主要是利用NEON指令提升FT2000+平台上内存页拷贝的速度,降低处理器资源消耗,提升系统综合性能。
附图说明
图1所示为本发明的内存页拷贝处理流程图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
图1所示为本发明的内存页拷贝处理流程图,参考图1所示,本发明的内存页拷贝处理流程包括以下步骤:
步骤1:在飞腾操作系统内核中增加基于SIMD向量指令的内存页拷贝函数copy_page_fast函数。该copy_page_fast函数利用飞腾NEON协处理单元的单指令多数据流处理能力进行并行化的数据拷贝操作,使用一条指令完成64个字节数据的同时拷贝,相对于基于处理器单指令单数据流的copy_page函数一条指令只能完成16个字节数据的同时拷贝,从而提升拷贝速度。copy_page_fast函数与内核原有copy_page保持一致,函数接收两个输入参数,第一个参数为目的内存页地址,标记为dest,第二个参数为原内存页地址,标记为src。copy_page_fast函数在函数入口处首先将源内存页地址加上物理内存页大小计算出内存页拷贝结束地址,记为end。开始循环拷贝操作,首先利用飞腾处理器prfm指令的数据预读取功能从源内存地址依据cache line大小预读取128字节数据到处理器缓存中,既能加速数据读取,又可以防止cache line溢出。然后在每次循环中拷贝128字节,最大化利用处理器的数据缓存能力。具体使用neon ld4指令将src源内存页的128字节数据加载到neon的向量寄存器中,再通过neon st4指令将neon向量寄存器中的数据保存到dest目的内存页中,然后再将dest和src地址增加128,如果src地址与end地址相等则结束拷贝操作,否则继续下一轮拷贝。
步骤2:将内核原有copy_page函数重命名为copy_page_slow,保留参数格式不变。函数接收两个输入参数,第一个参数为目的内存页地址,标记为dest,第二个参数为源内存页地址,标记为src;
步骤3:在飞腾操作系统内核中定义新的copy_page函数,函数参数与copy_page_slow保持一致,从而实现对内核中现有调用接口的透明替换;
步骤4:在copy_page函数入口处利用in_interrupt检查copy_page函数是否处于中断执行环境;飞腾处理器在中断环境下使用NEON协处理单元时,由于协处单元进行向量寄存器保存及恢复操作会导致内存页拷贝性能下降,因此在飞腾平台上只针对非中断执行环境进行内存页拷贝优化;
步骤5:如果in_interrupt函数返回值为真,则表示copy_page函数处于中断执行环境中,此时执行基于处理器单指令单数据流的copy_page_slow(dest,src)函数;
步骤6:如果in_interrupt函数返回值为假,则表示copy_page函数不在中断执行环境中,此时执行基于NEON协处理器单指令多数据流的copy_page_fast(dest,src)函数;
步骤7:copy_page函数执行完毕,内核内存页拷贝结束。
本发明使用协处理单元的单指令多数据流实现并行化的内存页拷贝操作,并将内核是否处于中断执行环境作为内核内存页拷贝加速的条件,从而避免了在中断环境下由于NEON向量寄存器切换导致的内存页拷贝性能下降;其次,加速算法利用处理器数据预取功能,每一轮内存页拷贝128字节数据,在减少内存页拷贝加速算法循环次数的同时充分发挥数据缓存命中率,将内存页拷贝加速算法的效率最大化。
与现有技术相比,本发明提出的技术方法通过使用FT2000+处理器的NEON指令显著提升内存页拷贝速度,使得飞腾平台系统综合性能大幅增加,而且本加速方法对应用透明,不影响现有应用程序的运行。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (3)
1.一种飞腾服务器平台下的内核内存页拷贝加速方法,其特征在于,包括:
在飞腾操作系统内核中增加基于SIMD向量指令的内存页拷贝函数;内存页拷贝函数接收两个输入参数,第一个参数为目的内存页地址,标记为dest,第二个参数为原内存页地址,标记为src;内存页拷贝函数在函数入口处首先将源内存页地址加上物理内存页大小计算出内存页拷贝结束地址,记为end;开始循环拷贝操作后,通过飞腾处理器prfm指令的数据预读取功能从源内存地址依据cache line大小预读取128字节数据到处理器缓存中;
将内核的copy_page函数重新命名,并接收两个输入参数,第一个参数为目的内存页地址,标记为dest,第二个参数为源内存页地址,标记为src,以对内核中现有调用接口的透明替换;如copy_page函数执行完毕,内核内存页拷贝结束;
进一步包括:
将内核原有copy_page函数重命名为copy_page_slow(dest,src);
并重新定义一新copy_page函数,新copy_page函数入口处利用in_interrupt函数检查新copy_page函数是否处于中断执行环境;
如果in_interrupt函数返回值为真,则表示新copy_page函数处于中断执行环境中,此时执行基于处理器单指令单数据流的copy_page_slow(dest,src)函数;
如果in_interrupt函数返回值为假,则表示新copy_page函数不在中断执行环境中,执行基于NEON协处理器单指令多数据流的copy_page_fast(dest,src)函数。
2.如权利要求1所述的飞腾服务器平台下的内核内存页拷贝加速方法,其特征在于,在每次循环中拷贝128字节,使用neon ld4指令将src源内存页的128字节数据加载到neon的向量寄存器中,通过neon st4指令将neon向量寄存器中的数据保存到dest目的内存页中,再将dest和src地址增加128,如果src地址与end地址相等则结束拷贝操作,否则继续下一轮拷贝。
3.如权利要求1所述的飞腾服务器平台下的内核内存页拷贝加速方法,其特征在于,在飞腾平台上对非中断执行环境进行内存页拷贝优化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010216435.5A CN111443949B (zh) | 2020-03-25 | 2020-03-25 | 一种飞腾服务器平台下的内核内存页拷贝加速方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010216435.5A CN111443949B (zh) | 2020-03-25 | 2020-03-25 | 一种飞腾服务器平台下的内核内存页拷贝加速方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111443949A CN111443949A (zh) | 2020-07-24 |
CN111443949B true CN111443949B (zh) | 2024-02-02 |
Family
ID=71654533
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010216435.5A Active CN111443949B (zh) | 2020-03-25 | 2020-03-25 | 一种飞腾服务器平台下的内核内存页拷贝加速方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111443949B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112905389A (zh) * | 2021-03-25 | 2021-06-04 | 北京计算机技术及应用研究所 | 一种飞腾服务器平台下开机恢复和关机保存的方法 |
CN117435532B (zh) * | 2023-12-22 | 2024-03-22 | 西安芯云半导体技术有限公司 | 基于视频硬件加速接口的拷贝方法、装置及存储介质 |
CN117724822B (zh) * | 2024-02-05 | 2024-05-24 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105224865A (zh) * | 2014-06-27 | 2016-01-06 | 英特尔公司 | 用于在安全飞地页高速缓存中进行中断和恢复分页的指令和逻辑 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8578129B2 (en) * | 2011-12-14 | 2013-11-05 | Advanced Micro Devices, Inc. | Infrastructure support for accelerated processing device memory paging without operating system integration |
-
2020
- 2020-03-25 CN CN202010216435.5A patent/CN111443949B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105224865A (zh) * | 2014-06-27 | 2016-01-06 | 英特尔公司 | 用于在安全飞地页高速缓存中进行中断和恢复分页的指令和逻辑 |
Non-Patent Citations (6)
Title |
---|
国产飞腾1500A处理器的显存管理优化;孙立明;吴庆波;;计算机技术与发展(第05期);全文 * |
基于SSE指令的大内存快速拷贝;钱昌松,刘志刚,刘代志;计算机应用研究(第02期);全文 * |
基于龙芯SIMD技术的H.264视频解码优化;顾丽红;王锐;陈华才;吴少刚;;计算机工程与设计(第12期);全文 * |
孙立明 ; 吴庆波 ; .国产飞腾1500A处理器的显存管理优化.计算机技术与发展.(第05期),全文. * |
钱昌松,刘志刚,刘代志.基于SSE指令的大内存快速拷贝.计算机应用研究.2005,(第02期),全文. * |
顾丽红 ; 王锐 ; 陈华才 ; 吴少刚 ; .基于龙芯SIMD技术的H.264视频解码优化.计算机工程与设计.2017,(第12期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111443949A (zh) | 2020-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111443949B (zh) | 一种飞腾服务器平台下的内核内存页拷贝加速方法 | |
US6456891B1 (en) | System and method for transparent handling of extended register states | |
EP2542973B1 (en) | Gpu support for garbage collection | |
US10261796B2 (en) | Processor and method for executing in-memory copy instructions indicating on-chip or off-chip memory | |
US8035648B1 (en) | Runahead execution for graphics processing units | |
US20090024807A1 (en) | Memory controller and method for optimized read/modify/write performance | |
US20030154349A1 (en) | Program-directed cache prefetching for media processors | |
US20180157531A1 (en) | Technologies for dynamic acceleration of general-purpose code using hardware accelerators | |
US9513886B2 (en) | Heap data management for limited local memory(LLM) multi-core processors | |
US20050055536A1 (en) | Compiler instructions for vector transfer unit | |
US20090300293A1 (en) | Dynamically Partitionable Cache | |
US8239866B2 (en) | Reduction of memory latencies using fine grained parallelism and FIFO data structures | |
US20130159679A1 (en) | Providing Hint Register Storage For A Processor | |
CN104978284A (zh) | 处理器子程序高速缓冲存储器 | |
US20230084523A1 (en) | Data Processing Method and Device, and Storage Medium | |
CN115640047B (zh) | 指令操作方法及装置、电子装置及存储介质 | |
CN111026444A (zh) | 一种gpu并行阵列simt指令处理模型 | |
CN110554887A (zh) | 间接存储器提取器 | |
US7877565B1 (en) | Constant versioning for multi-threaded processing | |
CN112632089B (zh) | 面向异构众核处理器的并行离散更新方法 | |
CN101216755A (zh) | Risc处理器及其浮点寄存器的非对齐访存方法 | |
CN112395000B (zh) | 一种数据预加载方法和指令处理装置 | |
CN112559389A (zh) | 存储控制装置、处理装置、计算机系统和存储控制方法 | |
US6625720B1 (en) | System for posting vector synchronization instructions to vector instruction queue to separate vector instructions from different application programs | |
CN111522600B (zh) | 一种在dsp上的异构计算框架构建方法及系统 |
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 |