【全球热闻】比memcpy还要快的内存拷贝,了解一下?
2023-04-03 17:35:47 来源:博客园

本文来自博客园,作者:T-BARBARIANS,转载请注明原文链接:https://www.cnblogs.com/t-bar/p/17262147.html谢谢!

前言


(资料图片仅供参考)

朋友们有想过居然还有比memcpy更快的内存拷贝吗?

讲道理,在这之前我没想到过,我也一直觉得memcpy就是最快的内存拷贝方法了。

也不知道老板最近是咋了,天天开会都强调:“我们最近的目标就一个字:性能优化!”

一顿操作猛如虎,也没提高5%。感觉自己实在是黔驴技穷,江郎才尽,想到又要被老板骂立马滚蛋,心里就很不是滋味。

所谓车到山前必有路,船到桥头自然直。嘿,有一天我刚好注意到我们的业务代码里有大量的memcpy,正一筹莫展之时,突然灵光一现,脑海里闪过一个想法:memcpy还可以优化吗?

我想说,正是这个想法又让我可以在老板面前暂时苟且偷生一段时间,实在是不得不佩服自己!

一、SIMD技术简介

这一小节介绍的内容跟小节标题很契合,就是介绍一下SIMD(Single Instruction Multiple Data,单指令多数据),啥意思呢,就是一条指令并发处理多条数据。形象一点讲就是老板在桌上放了很多钱让你拿,有同学喜欢一张一张的拿,还说我喜欢这种慢慢富有的感觉;SIMD就是,老子一把拿,我踏马喜欢暴富!没错,它就是可以提升memcpy性能的关键核心技术。引用大佬画的一张图:

图1

Scalar Operation就是指的SISD(Single Instruction Single Data,单指令单数据),这种方式完成上图所有C[i]的计算需要串行执行八次,因为每个时间点,CPU的一条指令只能执行一份数据。

SIMD,就是一次运算就可以得到上述SISD的多次运算结果,即一条指令可以并发执行多份数据,因此SIMD也称为向量化计算。

到底是什么奇技淫巧使得SIMD具有并发执行多份数据的能力呢?

其实就是CPU增加了专门用于向量化计算的向量寄存器,这些寄存器跟普通的寄存器不太一样,它们的位宽都比较大,比如有128bit,256bit,甚至512bit,也就是说这些寄存器可以分别一次存储16byte,32byte,64byte的数据。比如上图的加法运算,SISD一条指令只能完成一次两个8byte数据的加法运算。但是SIMD,一条指令就可以完成a[0:7] + b[0:7] = c[0:7],两组数据的加法运算。

CPU除了增加向量寄存器,还为向量寄存器配套了专门的指令集,比如Intel的MMX,SSE(MMX的升级版),AVX(SSE的升级版)指令集。CPU运算时,识别到指令集命令,就会采用指令集对应的SIMD计算方法完成并发运算。Intel指令集查询链接:http://kntan.top/#!=undefined

二、memcpy_fast方法

带着memcpy是否还可以继续优化的疑问,一通搜索,真找到了采用SIMD技术的memcpy方法:memcpy_fast,链接:https://github.com/skywind3000/FastMemcpy

分析了一下源码实现

(1)SSE指令集实现的fast拷贝

1、使用_mm_loadu_si128指令,从src + 0的位置取走128bit,即16字节,然后依次类推,src + 1,...,直至src + 7,一共取走16byte * 8=128byte,取出的内容分别储存到向量寄存器c0,c1,...,c7;

2、使用_mm_prefetch实现数据预取,提前把数据从内存加载到cache,保证CPU对数据的快速读取;

3、使用_mm_store_si128指令,将c0,c1,...,c7寄存器的内容分别存储至目的地址dst+ 0,dst + 1,...,dst + 7的八个位置。

利用指令集、向量寄存器、数据预取技术实现了每次16byte的并发,128byte的批次拷贝。

图2

(2)AVX指令集实现的fast拷贝

与SSE指令集实现内存拷贝逻辑一致。

1、由AVX指令集的_mm256_loadu_si256,实现每次256byte的数据加载;

2、由AVX指令集的_mm256_storeu_si256,实现每次256byte数据的存储。

可以预料,当然是寄存器位宽越大,性能会越好,也就是从理论上说使用AVX指令集会比SSE指令集更快。

图3

、memcpy VS memcpy_fast

我们一起来看看memcpy与使用了SIMD技术的memcpy_fast的性能对比吧。

直接将memcpy_fast源码下载后编译即可,链接:https://github.com/skywind3000/FastMemcpy

SSE指令集编译命令:gcc -O3 -msse2 FastMemcpy.c -o FastMemcpy

AVX指令集编译命令:gcc -O3 -mavx FastMemcpy_Avx.c -o FastMemcpy_Avx

(1)SSE指令集下性能结果对比

绿色框里,即内存拷贝在1MB以下时,特别是拷贝长度在(1024~1048576)bytes时,拷贝性能有显著提升。但是靠拷贝长度超过1MB时,memcpy_fast居然比memcpy更慢了,发生了什么?

图4

继续查阅源码,发现在大于2MB时,与2MB长度以下的拷贝相比,采用了不同的SIMD拷贝指令。即在拷贝长度小于等于 cachesize = 0x200000 时,使用 _mm_store_si128进行数据存储;在大于0x200000 时,使用_mm_stream_si128进行数据存储。

图5

我把大长度数据拷贝由_mm_stream_si128替换为中等长度数据拷贝指令_mm_store_si128后,memcpy_fast无论是中等长度,还是大长度的数据拷贝性能都比memcpy要好。

图6  (2)AVX指令集下性能结果对比

同样,将AVX大长度数据拷贝也进行优化,将指令_mm256_stream_si256替换为_mm256_storeu_si256,AVX指令集的性能测试结果如下图7所示。

简单总结为两点:

1、图6和图7进行了充分说明,相同长度的数据拷贝,AVX确实比SSE性能更高;

2、拷贝长度在(512 ~ 8388608)bytes,memcpy_fast都比memcpy要提升一倍不止,有的长度,内存拷贝性能甚至提升了4倍!

图7

四、结语

这种内存拷贝的性能提升,有什么好处呢?

想到一个场景,比如生产环境的网关设备(FW,VPN等等),内存拷贝的性能提升可以降低网关设备的流量处理时延,提升网络质量,从而进一步提高用户使用体验。

把这份优化思路给老板做了汇报,老板扬起嘴角笑了笑并说道:“对你来说,饼可能不香了!”

技术是不断实践积累的,在此分享出来与大家一起共勉!

如果文章对你有些许帮助,还请各位技术爱好者登录点赞呀,非常感谢!

本文来自博客园,作者:T-BARBARIANS,转载请注明原文链接:https://www.cnblogs.com/t-bar/p/17262147.html谢谢!

【全球热闻】比memcpy还要快的内存拷贝,了解一下?

2023-04-03

全球视讯!儿子转学上不了学,逼着父母离婚!这缺德政策什么时候能停了呢?

2023-04-03

焦点播报:飞利浦85英寸大屏游戏电视8598系列,尽情享受理想生活!

2023-04-03

速看:宜章一中学生在湖南省“三独”比赛中获得独奏组一等奖

2023-04-03

环球新动态:2022年生肖猴女运势详解,属猴女2022年的事业贵人是谁

2023-04-03

全球热消息:10年老软件,我的三上老师有救了......

2023-04-03

每日看点!榨汁机怎么用来榨水果 榨汁机怎么用

2023-04-03

环球快消息!能辉转债网上中签多少个?123185什么时候上市的?

2023-04-03

环球热讯:4月4日公仆接待日 有问题请拨热线

2023-04-03

【当前热闻】东方今年实施10件为民办实事事项

2023-04-03

【全球快播报】仕净科技:3月31日融资买入1626.06万元,融资融券余额2.54亿元

2023-04-03

世界今日讯!“沈五条”又来了,“政策不给力”?

2023-04-03

全球快消息!淄博烧烤火爆出圈 除了公交专线,高铁“烧烤专列”也来了!

2023-04-03

【焦点热闻】国安达(300902)3月31日主力资金净卖出1593.70万元

2023-04-03

世界最新:科教观察丨实验教学,都有了吗

2023-04-03

当前讯息:云尼

2023-04-03

环球速看:5月8日丹东最新疫情消息通知

2023-04-01

【世界新视野】拥抱新机遇,“亚洲力量”赋能全球经济发展

2023-04-01

世界新消息丨透视140家券商2022年经营业绩:总营收超3949亿元 头部券商优势明显

2023-04-01

焦点热文:一季度IPO总结:港A主板新规大变革;“万元大肉签”频现

2023-04-01

要闻:蓝牙耳机怎么连接电脑win8_蓝牙耳机怎么连接电脑win10

2023-04-01

世界快讯:空气炸锅烤雪鱼排多长时间 鳕鱼排用空气炸锅炸多久

2023-03-31

天天热头条丨为什么国产1.5T的SUV,被叫小马拉大车?这种说法对吗?

2023-03-31

【快播报】如何判断香菇变质 香菇怎么判断是不是坏了

2023-03-31

实时焦点:短短9年时间 贾跃亭的FF 91真量产了 它还有“钱途”吗?

2023-03-31

【速看料】百达星系品牌升级,酒店行业首个会员体系IP“球仔”正式发布

2023-03-31

天天快讯:《奋进吧少年》深圳站新闻发布会隆重举行

2023-03-31

环球看点!大宗交易:惠城环保成交454.14万元,折价17.15%(03-31)

2023-03-31

天天要闻:“王炸”工具登陆VT Markets 交易从此与众不同

2023-03-31

全球热推荐:全新梅赛德斯-奔驰GLC长轴距版开启预售

2023-03-31

【快播报】和讯个股快报:2023年03月31日 顺控发展(003039)14:39分,股价快速拉升

2023-03-31

全球微速讯:皮萨罗专访:对多特决定德甲归属,拜仁能淘汰曼城

2023-03-31

天天亮点!农业银行传世之宝金条价格今天多少一克(2023年03月31日)

2023-03-31

当前报道:交钱后消失了,现联系不到人,退我学费!

2023-03-31

世界球精选!张嘉倪聊《人生之路》黄亚萍:为自己而活才是生命的意义

2023-03-31

环球热文:dhc洗面奶怎么样 dhc洗面奶好用吗

2023-03-31

热讯:亚朵:去年归母净利润9809.9万元,在营酒店数增长25%

2023-03-31

天天热文:lcd显示屏_lcd显示屏

2023-03-31

焦点热讯:记者:拜仁今夏引援重点是中锋,目标有凯恩、奥斯梅恩、穆阿尼

2023-03-31

焦点报道:鲁尼:希望拉什福德打破我的曼联队史进球纪录,他有...

2023-03-31

天天百事通!全省森林草原防灭火警示日丨森林草原防火进入“常态化”,四川是咋干的?

2023-03-30

当前讯息:完美天才生存冒险官网在哪下载 最新官方下载安装地址

2023-03-30

每日快讯!克鲁尔KRULL品牌介绍_克鲁尔饮水机

2023-03-30

当前关注:“美国给富人的补贴,远超对穷人的补助”

2023-03-30

天天热头条丨《人生之路》吻戏太多被投诉,尺度大儿童不宜,网友怒骂很荒唐

2023-03-30

全球关注:2023丑马一号T9电音节演出嘉宾名单

2023-03-30

全球新资讯:机票燃油附加费2023年以来第二次下调

2023-03-30

信息:眼神的形容词形式_眼神的形容词

2023-03-30

环球微动态丨劳模风采·2015年全国劳模 | 徐宝军:用10微米雕琢沈阳工业荣光

2023-03-30

世界新消息丨研发新口味 满足新需求

2023-03-30

全球讯息:碧桂园2022年度收入4303.71亿元 股东应占核心净利润26.1亿元

2023-03-30

焦点播报:5岁自闭症男童孤身在车流中奔跑,南昌暖心辅警“百米速度”冲了进去……

2023-03-30

全球今日讯!海南自贸港博鳌乐城先行区以政策创新加快生物医药融合发展

2023-03-30

环球资讯:中国贸促会报告:中国在国际专利体系中申请量最多

2023-03-30

全球今日报丨来人民公园,看郁樱缤纷!

2023-03-30

世界焦点!水利部批准发布2项水利行业标准

2023-03-30

当前热点-中超中甲联赛均缩减至16支队

2023-03-30

环球简讯:航天彩虹(002389)2022年年报简析:营收净利润双双增长

2023-03-30

全球微动态丨唐山学院教务管理系统_唐山师范教务系统

2023-03-30

每日聚焦:中信建投再遭监管点名!本月曾因投行业务违规被责令改正

2023-03-29

微头条丨内敛的读音_内敛

2023-03-29

当前观点:清明节将至,武汉轨道公安日均投入1200余名警力守护安全出行

2023-03-29

世界快资讯丨湖南省人民医院集团再添2家医院

2023-03-29

当前动态:曾场均27.8分,如今32岁就没球打!5年流浪7支球队,伤病毁了他啊

2023-03-29

天天微速讯:惠普新款 OMEN Transcend 16 轻薄游戏本宣传视频发布

2023-03-29

天天快播:帕罗西汀能否和舍曲林同时服用_帕罗西汀服用初期症状

2023-03-29

每日关注!2027届美本RD放榜:卡内基梅隆/西北/南加/北卡教堂山/WashU/莱斯

2023-03-29

动态:《我的勇者》2023礼包码大全分享

2023-03-29

天天视点!康菲石油公司正在押注阿拉斯加的大型石油项目

2023-03-29

环球微资讯!人为谁活着的歇后语_人为谁活着

2023-03-29

每日播报!白宫:美决定停止同俄罗斯交换有关核武器的数据

2023-03-29

世界快报:报告:2022年中国成为世界最大的茶叶市场

2023-03-29

【焦点热闻】英飞拓3月29日盘中跌幅达5%

2023-03-29

观热点:中国中免:3月28日融券卖出2.36万股,融资融券余额53.09亿元

2023-03-29

【独家】国药一致:融资净买入1809.71万元,融资余额1.28亿元(03-28)

2023-03-29

视点!月饼能保存多久?

2023-03-29

全球新资讯:如何写保证书最好_如何写保证书

2023-03-29

全球速读:北京丰台区有陌生人抢孩子?警方:已查获嫌疑人

2023-03-28

每日热门:让企业办事不出园区!302项事项进驻天开高教科创园

2023-03-28

全球快报:以汽车压铸为抓手,肇庆加速布局新能源汽车产业

2023-03-28

世界微速讯:新研究强调了南极洲斯维茨冰川冰损失的被忽视的加速剂

2023-03-28

热文:“谷堕大盗”最新样本分析

2023-03-28

焦点速读:聪明的女人完毕婚外情的最好分手方法!

2023-03-28

环球看点!高速服务区买东西被骗1500

2023-03-28

精彩看点:锦旗背后的暖心故事,他们用心守护着每一位旅客

2023-03-28

精彩看点:2022年度全国十大考古新发现公布

2023-03-28

环球讯息:破解县域电商货源不优难题

2023-03-28

【聚看点】新势力们的“风陵渡”:蔚来“向下”、理想向上、小鹏迷茫

2023-03-28

当前滚动:巨人网络推出人工智能手游形象 推进人工智能生成内容技术应用

2023-03-28

天天亮点!和达科技:3月27日融资买入219.77万元,融资融券余额1834.14万元

2023-03-28

当前动态:孙莉否认多多染金发,回应读错字造黄谣等事,黄磊透露女儿很痛苦

2023-03-28

【新要闻】不求事事完美只求问心无愧的个性签名(不求事事完美但求事事顺心)

2023-03-28

当前快报:少女的诱惑

2023-03-28

【全球快播报】中铁工业:去年归母净利润约18.7亿元 同比增长0.6%

2023-03-27

全球播报:万城控股(02892)发布年度业绩 股东应占溢利6920万元 同比减少58.4%

2023-03-27

世界观察:90后郑驹接棒陷遗产争夺,百亿杉杉系“渡劫”

2023-03-27

【当前独家】真实体验分享:OPPO Find X6 Pro续航正常旗舰水平,一天使用没问题

2023-03-27

世界实时:厦门集美区市场监管局开展食品安全快速检测工作

2023-03-27

全球快资讯:【武汉成交日报】03月25日新房成交687套;涨价房源290套

2023-03-27

天天消息!光环新网:公司的数据中心可为人工智能生成内容所需的算力网络提供必需的基础设施服务

2023-03-27