CN102929579A - 一种效率提高的内存复制方法 - Google Patents

一种效率提高的内存复制方法 Download PDF

Info

Publication number
CN102929579A
CN102929579A CN2012103938768A CN201210393876A CN102929579A CN 102929579 A CN102929579 A CN 102929579A CN 2012103938768 A CN2012103938768 A CN 2012103938768A CN 201210393876 A CN201210393876 A CN 201210393876A CN 102929579 A CN102929579 A CN 102929579A
Authority
CN
China
Prior art keywords
count
tmp
internal memory
byte
copying
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.)
Pending
Application number
CN2012103938768A
Other languages
English (en)
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.)
Guodian Nanjing Automation Co Ltd
Original Assignee
Guodian Nanjing Automation 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 Guodian Nanjing Automation Co Ltd filed Critical Guodian Nanjing Automation Co Ltd
Priority to CN2012103938768A priority Critical patent/CN102929579A/zh
Publication of CN102929579A publication Critical patent/CN102929579A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

本发明公开了一种效率提高的内存复制方法:包括如下步骤:(1)判断count是否大于N,N>1;(2)若步骤(1)的判断为是,则按次序将连续的N个字节数据从s指针指向的地址复制到tmp指针指向的地址,count=count-N、s=s+N、tmp=tmp+N,返回步骤(1);(3)若步骤(1)的判断为否,则逐字节将数据从s指针指向的地址复制到tmp指针指向的地址。本发明提供的效率提高的内存复制方法,在复制大量数据块时,CPU平均复制每个字节所耗的时间大幅减少,同时不会频繁使用跳转指令,节省了CPU开销,提高了复制大块内存数据的效率。

Description

一种效率提高的内存复制方法
技术领域
本发明涉及一种计算机系统开发方法,尤其涉及一种效率提高的内存复制方法。
背景技术
内存复制函数(memcpy函数)是计算机系统开发过程中最常用、也是最重要的库函数之一,memcpy函数的实现与平台有关,一般都要尽可能提高该函数的性能,其效率直接影响到计算机系统的性能。
memcpy函数的原型是void*memcpy(void*dest,void*src,int count),该函数实现的功能是将以src指向地址为起始地址的连续count个字节数据复制到以dest指向地址为起始地址的空间内。
以下是memcpy函数实现的一种典型方法:
Figure BDA00002262344400011
由上可见,完成一个字节复制需要以下步骤:
(1)检查count是否为0,如果为0则函数返回,否则继续;
(2)把src指针指向的地址中的数据复制到tmp指针指向的地址;
(3)tmp指针加1;
(4)src指针加1;
(5)count减1;
(6)跳转到步骤(1)。
通过分析发现,CPU复制一个字节需要经过多个指令周期,尤其是在有跳转指令的情况下,CPU指令流水线被频繁打断,极大的降低了CPU执行效率。
上述方法是memcpy函数实现的最简单方法之一,实际应用中可以通过判断dest地址和src地址是否为2字节对齐或4字节对齐,CPU可以通过一条指令复制2个字节或4个字节,这种方法只能针对特殊情况,且效率提高并不明显。
发明内容
发明目的:为了克服现有技术中存在的不足,本发明提供一种效率提高的内存复制方法,使CPU进行大块内存复制操作时大幅提高效率。
技术方案:为实现上述目的,本发明采用的技术方案为:
一种效率提高的内存复制方法:包括如下步骤:
(1)判断count是否大于N,N>1;
(2)若步骤(1)的判断为是,则按次序将连续的N个字节数据从s指针指向的地址复制到tmp指针指向的地址,count=count-N、s=s+N、tmp=tmp+N,返回步骤(1);
(3)若步骤(1)的判断为否,则逐字节将数据从s指针指向的地址复制到tmp指针指向的地址。
优选的,N=16。
由上述步骤可见,CPU复制大于等于16个字节数据的时候,首先判断count是否大于16:若判断为是,则按次序将16个字节数据从s指针指向的地址复制到tmp指针指向的地址,最后将count减16、s加16,、tmp加16;若判断为否,则将小于等于16个字节数据按照通常的方法逐字节进行复制。
综上所述,在复制大量数据块时,CPU平均复制每个字节所耗的时间大幅减少,同时不会频繁使用跳转指令;经测试,复制少量字节的性能略有降低(几乎可以忽略,因为只执行了一个判断语句),而复制大块内存数据时效率可提高50%以上,节省了CPU开销,提高了复制大块内存数据的效率。
有益效果:本发明提供的效率提高的内存复制方法,在复制大量数据块时,CPU平均复制每个字节所耗的时间大幅减少,同时不会频繁使用跳转指令,节省了CPU开销,提高了复制大块内存数据的效率。
附图说明
图1为本发明方法的流程图。
具体实施方式
下面结合附图对本发明作更进一步的说明。
如图1所示为一种效率提高的内存复制方法:包括如下步骤:
(1)判断count是否大于16;
(2)若步骤(1)的判断为是,则按次序将连续的16个字节数据从s指针指向的地址复制到tmp指针指向的地址,count=count-16、s=s+16、tmp=tmp+16,返回步骤(1);
(3)若步骤(1)的判断为否,则逐字节将数据从s指针指向的地址复制到tmp指针指向的地址。
以下是根据上述方法给出的一种程序方案:
Figure BDA00002262344400031
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (2)

1.一种效率提高的内存复制方法:其特征在于:包括如下步骤:
(1)判断count是否大于N,N>1;
(2)若步骤(1)的判断为是,则按次序将连续的N个字节数据从s指针指向的地址复制到tmp指针指向的地址,count=count-N、s=s+N、tmp=tmp+N,返回步骤(1);
(3)若步骤(1)的判断为否,则逐字节将数据从s指针指向的地址复制到tmp指针指向的地址。
2.根据权利要求1所述的效率提高的内存复制方法:其特征在于:所述N=16。
CN2012103938768A 2012-10-16 2012-10-16 一种效率提高的内存复制方法 Pending CN102929579A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2012103938768A CN102929579A (zh) 2012-10-16 2012-10-16 一种效率提高的内存复制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2012103938768A CN102929579A (zh) 2012-10-16 2012-10-16 一种效率提高的内存复制方法

Publications (1)

Publication Number Publication Date
CN102929579A true CN102929579A (zh) 2013-02-13

Family

ID=47644393

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2012103938768A Pending CN102929579A (zh) 2012-10-16 2012-10-16 一种效率提高的内存复制方法

Country Status (1)

Country Link
CN (1) CN102929579A (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1922580A (zh) * 2003-12-30 2007-02-28 桑迪士克股份有限公司 具有阶段性编程失败处置的非易失性存储器和方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1922580A (zh) * 2003-12-30 2007-02-28 桑迪士克股份有限公司 具有阶段性编程失败处置的非易失性存储器和方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
KOUU: "比memcpy更快的内存拷贝", 《百度空间HTTP://HI.BAIDU.COM/_KOUU/ITEM/6167F38DB4F288C698255FD0》 *

Similar Documents

Publication Publication Date Title
MY154086A (en) Data processing apparatus and method
CN105975816B (zh) 移动终端下基于虚拟技术的代码保护方法及系统
US20110289357A1 (en) Information processing device
GB0614334D0 (en) Network monitoring
CN108028663B (zh) 对异构压缩加速器中的经压缩的流进行错误校验
US11016773B2 (en) Processor trace extensions to facilitate real-time security monitoring
TW200703009A (en) Microprocessor, microprocessor interface system and method of performing a half-width data transaction on a system bus
CN109690497B (zh) 用于通过输入参数来区分函数性能的系统和方法
CN103226499B (zh) 一种恢复内部存储器中的异常数据的方法及装置
TW201333694A (zh) 於即時指令追蹤紀錄中之除錯動作的選擇性紀錄技術
CN106201641B (zh) 函数的访存优化编译方法和装置
CN104778116A (zh) 一种多断点的软件调试装置和方法
Haque et al. Dew: A fast level 1 cache simulation approach for embedded processors with fifo replacement policy
CN102736013B (zh) 一种SoC芯片的空闲状态测试方法、系统及测试装置
WO2017112317A1 (en) Mode-specific endbranch for control flow termination
CN106372008A (zh) 一种数据缓存方法及装置
JP2019215847A (ja) バッファオーバーフローの低減
TWI729033B (zh) 控制轉移強制執行中的非追蹤控制轉移的方法及處理器
CN102541738B (zh) 加速多核cpu抗软错误测试的方法
CN102929579A (zh) 一种效率提高的内存复制方法
TW200741477A (en) Hybrid memory system for a microcontroller
US20120089970A1 (en) Apparatus and method for controlling loop schedule of a parallel program
US10628542B2 (en) Core-only system management interrupt
CN106095631B (zh) 一种基于有限状态机实现的多周期非流水线cpu动态调试方法
CN103810087A (zh) 测试应用程序性能的方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20130213

Assignee: NANJING GUODIAN NANZI RURAL POWER GRID AUTOMATION ENGINEERING CO., LTD.

Assignor: Nanjing Automation Co., Ltd., China Electronics Corp.

Contract record no.: 2013320000276

Denomination of invention: Internal memory copying method with improved efficiency

License type: Exclusive License

Record date: 20130401

LICC Enforcement, change and cancellation of record of contracts on the licence for exploitation of a patent or utility model
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20130213

EC01 Cancellation of recordation of patent licensing contract

Assignee: NANJING GUODIAN NANZI RURAL POWER GRID AUTOMATION ENGINEERING CO., LTD.

Assignor: Nanjing Automation Co., Ltd., China Electronics Corp.

Contract record no.: 2013320000276

Date of cancellation: 20181016

EC01 Cancellation of recordation of patent licensing contract