蜗窝科技

DMB DSB ISB以及SMP CPU 乱序

forion · · 阅读 33000 · 2014年8月存档

不知道大家对DMB DSB ISB以及SMP CPU 乱序,有没有认识。我想在这个讨论贴上面来跟大家讨论一下。

标签:SMP内存屏障DSBDMBISB

继续讨论

新讨论请用 GitHub 账号在下方发言——评论会保存在本仓库的 Discussions 里,与站点同寿; 再下方的「历史评论」是原站的只读存档。

评论(11 条,只读存档)

以下为原站的历史评论(只读存档);继续讨论请用上方的评论区。

  • linuxer

    ARMV7提供了三条指令 Data Memory Barrier(DMB) Data Synchronization Barrier(DSB) Instruction Synchronization Barrier(ISB) 原来ARMV6是通过cp15寄存器操作的。 对于这些memory barrier相关的内容,原来有些印象,不过从来没有很系统的整理过。forion,你要不要帮忙整理一下。呵呵~~~ 乱序执行(out-of-orderexecution)这个就是真的没有概念了,应该是和CPU设计相关的
  • forion

    • forion

      @forion:一共有3篇文章,老外写的东西还是系统一些,而且深入准确一些。
    • linuxer

      @forion:不错的文章。不过,真正理解这些概念可能需要深入理解CPU的设计。Forion,看你对底层软件非常感兴趣,是不是你做的工作和硬件相关?有没有兴趣设计一款简单的CPU?我们网站的项目还是空的,有机会大家可以考虑一些有趣的项目来做一做,玩一玩
      • forion

        @linuxer:之所以提到这几个,是因为之前遇到一个问题,debug了两个月,发现是android上面SMP的宏没有开,因为那个bug,所以对这几条指令还有SMP有一定的了解。我的工作是IC CHIP driver,所以会跟硬件或者ASIC打交道。如果有时间可以啊,不过加班比较严重,很可能有没有稳定的充裕的时间。不知道你要做个什么呢?我对cpu的架构也是很有兴趣了解的。
        • linuxer

          @forion:如果做通用意义的CPU core,我想那一定是玩玩而已,短时间内,不可能有突破(超越ARM或者X86),如果要做可能只能在一些特别的专业市场发掘需求。 我有考虑做一个小的RF模块,一定要非常小。在这样的条件下,如果有一个FPGA,可以集成我们这个小的RF模块的功能,例如USB device、一个简单的CPU,高速ADC,这样的FPGA加上RF模拟前端的电路是否有可能组成一个size非常小的RF模块呢? Size小而且功耗极低的RF模块应该有可能有一些现实的意义 但是,对于软件工程师而言,做这样的项目有点异想天开吧!我有时候太理想化......
    • 阿布

      @forion:请问能结合点实际例子指点下DMB和DSB的使用吗?他们的应用场景有什么区别?如果在使用DSB的场景下使用了DMB,会出现什么情况?执行乱序除了是由多核cache 一致性引起的?还有别的地方也会造成执行乱序吗?我的理解是DMB避免了cache一致性造成的执行乱序,那么DSB在DMB的基础上到底为了应对什么情况?
      • 阿布

        @阿布:在 real memory space 和io memory space交换数据时,由于io 设备可能对指令存在强依赖的关系(比如必须先给io 设备的时钟寄存器初始化,才能使能该io 设备的控制寄存器的使能bit),这种情况下需要使用dsb 指令去保证到达io设备的指令顺序是符合预期的(dsb 指令等待在此之前的io指令已经执行完毕:指令已经发送到了io设备总线上)。在只针对real memory space的数据交换场景(比如从ram addr0 迁移到 addr1、或者对ram addr0 数据的读写)里dmb 指令完全可以保证数据和程序流结果是符合预期的,即使存在延后执行,应该也不会违反预期逻辑的吧
        • 阿布

          @阿布:内核中io.h里使用dsb 定义了 io barriers。内核源码里的其他地方也有使用dsb 的,但有些地方的使用感觉有些不太好,比如android7.1 内核(msm-3.18)里 app_setting.c 75行中的mb(),其实完全可以使用smp_mb(),对吗?
  • xxxxxxx

    赞~
  • 阿布

    我一直不理解DMB 和DSB的应用场景,如果在使用DSB的场景下使用了DMB,会出现什么情况?请问能指点一下吗