glibc中的memory实现很特别么?
想问下memory拷贝比普通的拷贝快是什么原因?
记得现代的INTEL处理器,可以最大每次传输128byte(具体忘了多少了)。是不是memory采用这种指令?
《C专家编程》里说 memory拷贝采用了特殊的处理来防止 cache miss-hit。到底是啥原因使memory拷贝比普通的拷贝快?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
应该是会根据不同的体系,得到 data cache的大小,并利用预取部件,尽可能从cache中获取数据。
这个纯粹胡扯,至少在ARMv7中,memcpy时越用Pre-load指令就越慢,这个预取指令用不得
C库中ARM下memcpy的实现是利用了super scalar和out of order,拷贝前一cache line时,直接ldr下一cache line的开头字节所对应的地址,以达到prefetch的目的
见 《代码优化-有效利用内存》一书。毛子卡巴斯基写的。