`
473687880
  • 浏览: 535624 次
文章分类
社区版块
存档分类
最新评论

内核分支优化宏likely与unlikely 与 __read_mostly

 
阅读更多

1.likely && unlikely

分支声明

对于条件选择语句,gcc内建了一条指令用于优化,在一个条件经常出现,或者该条件很少出现的时候,编译器可以根据这条指令对条件分支选择进行优化。内核把这条指令封装成了宏,比如likely()和unlikely(),这样使用起来比较方便。
例如,下面是一个条件选择语句:
if (foo) {
/* .. */
}
如果想要把这个选择标记成绝少发生的分支:
/* 我们认为foo绝大多数时间都会为0.. */
if (unlikely(foo)) {
/* .. */
}
相反,如果我们想把一个分支标记为通常为真的选择:
/* 我们认为foo通常都不会为0 */
if(likely(foo)) {
/* .. */

}

需要注意的是:likely与unlikely并没有改变程序逻辑,仅仅是对分支预测提供一定的依据。


2.__read_mostly

__read_mostly是内核链接时使用的, 与体系结构的cache机制密切相关. 在linux kernel里定义在x86, ia64, powerpc, parisc, s390, sh, sparc 体系结构的 asm/cache.h中:


#define __read_mostly __attribute__((__section__(".data.read_mostly")))


从定义的字面意思可以理解为将需要经常读取的数据链接进内核的 .data.read_mostly段. 在x86, ia64, powerpc, parisc, s390, sh, sparc 的链接脚本里(arch/xxx/kernel/vmlinux.lds.S)有关于 .data.read_mostly的定义, 就是指定 .data.read_mostly段的数据在内核加载时放到CPU的cache中. 在那些没有cache的体系结构上, __read_mostly被定义为空, 即:


#define __read_mostly



分享到:
评论

相关推荐

    linux内核中的likely和unlikely.pdf

    likely() 和 unlikely() 宏是 Linux 内核中定义的两个宏,用于提供编译器的分支预测信息,以优化代码。它们使用了 GCC 的内建函数 __builtin_expect,提供了一个简单的方式来告诉编译器如何优化代码。

    FAQ gnu C likely unlikely

    在GNU C语言编程中,`likely()` 和 `unlikely()` 是两个宏定义,它们提供了编译器优化时的分支预测信息,用于指导编译器进行更有效的代码优化。在Linux内核代码中,这两个宏被广泛使用,特别是在条件语句中,比如在...

    unlikely:gcc 分支预测宏

    总的来说,`likely()`和`unlikely()`宏是GCC提供的一种手段,帮助开发者与编译器进行更紧密的合作,以优化代码的分支预测。然而,它们并非万能解决方案,正确使用需要对程序的行为有深入理解,并且应以实际性能测试...

    72759848AI_lovebit.rar_kennedy_likely79h_officeabh_swarm_微粒群算法

    粒子群优化(Particle Swarm Optimization, PSO),又称微粒群算法,是由J. Kennedy和R. C. Eberhart等于1995年开发的一种演化计算技术,来源于对一个简化社会模型的

    Linux Ftrace

    - **分支预测统计**:通过监控 likely/unlikely 分支预测的命中率,可以优化代码以提高执行效率。 2. **使用 Ftrace** - **安装支持 Ftrace 的内核**:确保你的Linux内核版本高于2.6.28,并且在编译内核时启用 ...

    可重定义RISC-V处理器核f32c.zip

    可配置选项包括:C_arch RISC-V或MIPS ISAC_big_endian总线端C_mult_enable合成乘法单位C_branch_likely支持分支延迟时隙取消C_sign_extend支持符号扩展指令C_movn_movz支持条件移动指令C_ll_sc支持原子读 - 修改 - ...

    Simple TCP.rar_-baijiahao_likely8dt_peace6y8_simpletcp_添加simple

    这个文件可能是由用户“baijiahao”分享,并被其他用户如“likely8dt”和“peace6y8”标注,可能是为了讨论或者交流关于TCP/IP通信的基础知识。"添加simple"可能意味着这个压缩包包含了一个简化版的TCP实现,用于...

    netmap原理与接口介绍(附带)1

    - **likely() 和 unlikely()**:这两个宏是编译器优化的工具,用于指导编译器进行分支预测,提高执行效率。 - **nmreq**:用于配置Netmap接口的请求结构体。 - **netmap_if**,**netmap_ring** 和 **netmap_slot*...

    ncp爬虫4_爬虫python_农产品_农产品爬虫_python_likely781_源码

    在本项目中,我们主要探讨的是使用Python编程语言构建一个网络爬虫,目的是抓取与农产品相关的数据,并对其进行处理和分析。"ncp爬虫4"这个标题暗示这是一个系列项目的第四部分,可能涵盖了一些进阶的爬虫技术或特定...

    计算机组织与结构:LEC07_转移猜测.ppt

    MIPS还提供了likely和non-likely分支,帮助优化器更好地预测分支行为。 在实际应用中,不同类型的程序对转移指令的使用频率有所不同。例如,SPEC CPU2000基准测试套件中的各种程序,如编译器、压缩工具和模拟器,...

    uclinux中断流程

    在内核启动的第二个阶段`setup_arch`函数中,与体系结构相关的初始化工作被执行。对于UCLinux而言,这一步骤至关重要,因为它涉及到中断入口设置以及中断向量表的初始化。 1. **中断入口设置**: - 在`start_...

    internet_download_manager_6.38.7.zip

    《Delphi 10.4 控件:深入理解与应用》 在软件开发领域,Delphi 作为一款高效且强大的集成开发环境(IDE),一直深受程序员喜爱。它以其高效的Object Pascal编程语言和丰富的VCL(Visual Component Library)控件库...

    Data Structures & Algorithms Interview Questions You'll Most Likely Be epub

    Data Structures & Algorithms Interview Questions You'll Most Likely Be Asked 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书

    uclinux-2008r1到vdsp5(bf561)的移植记录_v0.1

    - **__KERNEL__**:定义了特定于内核编译的宏,用于控制编译行为。 - **GCC版本号**:文档中提到了使用的GCC版本,这对于编译环境的兼容性和稳定性至关重要。 #### 11. `cmdline_init` - **功能**:初始化命令行...

    Metode PSO Adam Gilang-055.rar_#pso_PSO_adam optimization_likely

    heres of code for optimization. the method that i use is partical swarm of optimization

    强者恒强:x86高性能编程笺注之分支

    优化分支的策略还包括使用编译器指令如`likely()`和`unlikely()`来指导编译器优化分支预期。此外,减少分支、使用无分支编程技术(Branch-less programming)以及多线程和锁的管理,都是提升性能的有效手段。例如,...

    新课标2021高考英语一轮复习课时作业194_4Bodylanguage新人教版必修4

    8. **可能有(be likely to have)**:在句子"If you often compliment yourself, or in other words, overlook your strengths, you are likely ________ (have) high self-esteem."中,"be likely to"后面接动词原形...

    会宁一中高二英语期末试卷及答案精选.doc

    f writing the text is most likely to ______ . A. encourage people to improve their lifestyle choices B. inform readers about the impact of air pollution on heart health C. promote awareness of the ...

    2017年江苏省专转本专转本英语复习资料[参照].pdf

    9. A new situation is likely to ______ when the school leaving age is raised to 16. arise 表示“出现,产生”,与situation搭配。答案是B. arise。 10. Be quiet! It's rude to ______ people when they are...

Global site tag (gtag.js) - Google Analytics