前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >【代码优化】信创迁移优化

【代码优化】信创迁移优化

作者头像
CodeDog
发布2024-09-27 12:45:38
发布2024-09-27 12:45:38
1290
举报

官网地址:https://tca.tencent.com/

官网介绍:https://cloud.tencent.com/product/tcap 官方开源:(点击最下方【阅读原文】可直达)https://github.com/Tencent/CodeAnalysis 国内镜像:https://git.code.tencent.com/Tencent_Open_Source/CodeAnalysis

背景介绍

近年来,在政策支持和市场需求的双重推动下,信创(ARM64)架构市场呈现出快速增长的趋势。越来越多的软件系统对于信创迁移有着迫切的需求。为此,TCA团队整理了从x86迁移到ARM64架构的通用优化点,并实现上线了《【C/C++】信创迁移优化》《【C/C++】强化信创迁移优化》规则包。

优化内容

  • CacheLine对齐 CPU在读取数据的时候,不是一个byte一个byte读取的,而是按照CacheLine为单位读取的。CPU标识Cache中的数据是否为有效数据不是以内存位宽为单位,而是以CacheLine为单位。但这个机制可能会因为高频访问的数据未按照CacheLine大小对齐而导致出现伪共享(false sharing)现象,进而使得CPU的Cache命中率变低,降低访问速度。 常见处理器,如Intel X86的icelake等,Cacheline大小多为64字节。而ARM64架构的就可能不一样,比如华为鲲鹏920处理器的Cacheline大小为128字节。所以在信创迁移的过程中需要将代码修改为跟目标架构CacheLine对齐,从而带来性能的提升
  • 关键ASM指令替换 x86和AMR64架构的ASM指令不是一一对应的,存在缺失或者有更优指令的情况,所以如果在迁移过程中针对这些差异进行ARM64适配的话,会大大提升软件系统在ARM64架构上的性能。比如可以使用crc32cb指令来加速CRC32计算。
  • 编译选项优化 编译选项优化是针对编译器的特定配置项进行调整,以获得更好的编译结果和目标代码的质量。同样,针对ARM64架构,可以通过调整编译选项来直接提升性能。比如-march=armv8-a 选项是用于指定GCC生成代码的目标CPU架构为ARMv8-A架构。当在ARM64机器上使用-march=armv8-a选项编译时,GCC将会针对这个目标CPU架构进行一些优化(比如使用SIMD指令集来实现单个指令中执行多个数据操作,从而提高代码的执行速度)。

启用规则包

分析方案 -> 代码检查 -> 【C/C++】信创迁移优化规则包/ 【C/C++】强化信创迁移优化规则包-> 启用/查看规则

注:【C/C++】强化信创迁移优化规则包由TCA独立工具支持,需申请授权免费使用,申请传送门:

《CLS使用文档》:https://github.com/Tencent/CodeAnalysis/blob/main/server/cls/README.md

温馨提示:【C/C++】强化信创迁移优化规则包仅在云官网上新,快来体验吧:https://tca.tencent.com/

云应用接入指引:https://tencent.github.io/CodeAnalysis/zh/quickStarted/enhanceDeploy.html#cls%E9%83%A8%E7%BD%B2

关注我们,

持续为您的代码助力!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-11-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云代码分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景介绍
  • 优化内容
  • 启用规则包
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档