[architecture]-DBG、DMB、DSB 和 ISB指令介绍

article/2025/9/23 13:34:20

快速链接:
.
👉👉👉 个人博客笔记导读目录(全部) 👈👈👈

  • 付费专栏-付费课程 【购买须知】:
  • 【精选】ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈

在这里插入图片描述

1、DBG、DMB、DSB 和 ISB指令介绍

调试指令、数据内存屏障指令、数据同步屏障指令和指令同步屏障指令。

语法

  • DBG{cond} {#option}
  • DMB{cond} {option}
  • DSB{cond} {option}
  • ISB{cond} {option}


    cond : 是一个可选的条件代码(请参阅条件执行)。
    option : 对提示操作的可选限制。
    说明:如果指令未实现,则与 NOP 效果相同
  • (1)、DBG : 调试提示可向调试系统及其相关系统发送提示。
  • (2)、DMB :数据内存屏障可作为内存屏障使用。 它可确保会先检测到程序中位于 DMB 指令前的所有显式内存访问指令,然后再检测到程序中位于 DMB 指令后的显式内存访问指令。它不影响其他指令在处理器上的执行顺序

option 的允许值为:SY, 完整的系统DMB 操作。 这是缺省情况,可以省略

举个例子: 如下的操作,确保dmb之前的内存访问已经完成了,即数据读到了x1、x2、x3、x21,然后后面的inval_dcache_aera会使用这些参数。
在这里插入图片描述

  • (3)、DSB : 数据同步屏障是一种特殊类型的内存屏障。 只有当此指令执行完毕后,才会执行程序中位于此指令后的指令。 当满足以下条件时,此指令才会完成:
    位于此指令前的所有显式内存访问均完成。
    位于此指令前的所有缓存、跳转预测和 TLB 维护操作全部完成

允许的值为:
SY : 完整的系统 DSB 操作。 这是缺省情况,可以省略。
UN : 只可完成于统一点的DSB 操作。
ST : 存储完成后才可执行的DSB 操作。
UNST : 只有当存储完成后才可执行的DSB 操作,并且只会完成于统一点

  • (4)、ISB : 指令同步屏障可刷新处理器中的管道,因此可确保在 ISB 指令完成后,才从高速缓存或内存中提取位于该指令后的其他所有指令这可确保提取时间晚于 ISB 指令的指令能够检测到 ISB 指令执行前就已经执行的上下文更改操作的执行效果,例如更改ASID 或已完成的 TLB 维护操作,跳转预测维护操作以及对 CP15 寄存器所做的所有更改。
    此外,ISB 指令可确保程序中位于其后的所有跳转指令总会被写入跳转预测逻辑,其写入上下文可确保 ISB 指令后的指令均可检测到这些跳转指令。这是指令流能够正确执行的前提条件。
    举个例子:如果上述代码中1和2处的之类,同时从icache中取的,那么2处位置sp的值感测不到1处对sp的修改。那么有了isb之类后,保证1处操作完成之后,再进行2处取指令,这样就不会乱了。
    在这里插入图片描述

2、Linux Kernel中的smp_mb()、smp_rmb()、smp_wmb()、mb()、wmb()、rmb()

smp_mb()、smp_rmb()、smp_wmb()在底层调用的都是dmb

#define __smp_mb()	dmb(ish)
#define __smp_rmb()	dmb(ishld)
#define __smp_wmb()	dmb(ishst)#ifndef smp_mb
#define smp_mb()	__smp_mb()
#endif#ifndef smp_rmb
#define smp_rmb()	__smp_rmb()
#endif#ifndef smp_wmb
#define smp_wmb()	__smp_wmb()
#endif

mb()、wmb()、rmb()在底层调用的也都是dmb

#define mb()		asm volatile("dmb ish" ::: "memory")
#define wmb()		asm volatile("dmb ishst" ::: "memory")
#define rmb()		asm volatile("dmb ishld" ::: "memory")

问:smp_mb()、smp_rmb()、smp_wmb() 和 mb()、wmb()、rmb()到底有什么区别吗



http://chatgpt.dhexx.cn/article/bAngGEwS.shtml

相关文章

WMB在项目中的应用

提纲: 1、 WebSphere Message Broker Introduction a) ESB Overview b) Message Broker Overview c) Message Broker Performance Report 2、 ESB Project Sharing 内容: 1、 Message Broker是建立在MQ基础之上的。【说明消息中间件对于MB是何等的重…

【HTML/CSS】简单登录注册表单制作

实现效果&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthde…

登录注册弹出框html,jQuery实现弹出窗口中切换登录与注册表单

当点击页面中的登录或注册按钮时,将会弹出一个模态窗口,就是一个弹出层,我们可以在弹出层上轻松的切换登录与注册表单,极大的方便用户,不需要关闭层再去点击转向其他操作,在很多网站上已经广泛应用。 本文结合实例,通过使用jQuery以及CSS3和HTML5技术实现这一效果。 HTM…

html5漂亮的登录与注册界面设计,漂亮的网页登陆/注册表单设计

漂亮的网页登陆/注册表单设计 7月 4, 2012 评论 Sponsor 网页设计中登陆和注册表单是非常常用的&#xff0c;而且使用率也非常高&#xff0c;一个表单的设计其实也不是简单的事情&#xff0c;你要考虑很多用户体验&#xff0c;有的喜欢把注册和登陆都放在一个页面&#xff0c;有…

3.6 用正则表达式验证注册表单页面

用正则表达式验证注册表单页面 制作一张注册页&#xff0c;页面自行设计&#xff0c;页面元素命名自行设置&#xff0c;需要验证如下信息&#xff1a; 用户名&#xff1a;&#xff08;允许2-4个汉字&#xff09; 电话&#xff1a;&#xff08;开头3或4位,”-”号隔开&#xff…

制作一个注册表单页面

制作一个表单注册页面 在Dreamweaver中创建一个.html文件&#xff0c;添加一个11行2列的表格&#xff0c;左侧的内容是手动输入&#xff08;第一行也手动输入&#xff09;&#xff0c;右侧的内容是用代码来写的&#xff08;最后一行也是用代码来写&#xff09;&#xff08;用…

Html+CSS实现简单的注册表单

目录 预览 教程如下 首先新建一个HTML文件 接下来,我们在body标签的内部编写网页的主题内容 新建一个CSS文件 label: input: .submit_btn: CSS 居中显示: 这就结束啦!! 完整代码 html: css: 这次和大家分享一个用html语言实现的一个简单的注册表单,豪华升级版在文…

js实现注册表单验证

js实现注册表单验证 验证用户名必须为&#xff1a;要求6-20位&#xff0c;只能有大小写字母和数字&#xff0c;并且大小写字母和数字都要有 var name_re/[0-9a-zA-Z]{3,8}/; var pwd_re/^\S{6,20}$/; <!DOCTYPE html> <html> <head><meta charset"…

A.2 实验2:注册表单和登录表单

A.2 实验2&#xff1a;注册表单和登录表单 A.2.1目的与要求A.2.2 实验内容 本实验初步创建用于学生注册的模块文件registration.php和用于登录的模块文件login.php。这两个模块文件都保存于教务选课系统项目xk中的“源文件”结点。 本实验主要完成注册表单和登录表单外观的设计…

HTML注册表单的页面制作

效果1&#xff1a;效果2&#xff1a; 效果1&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><tit…

【HTML | CSS | JS】耗时一下午,整理出了一个精美的响应式登陆注册表单(附源码)

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后…

html的练习之用户注册表单

这是最终效果图&#xff0c;具体实现代码在下面&#xff0c;一些注意点在代码里有注释&#xff0c;对是新手学习html基础比较友好。 本人刚接触前端学习&#xff0c;这里当作作业的练习&#xff0c;不足之处&#xff0c;欢迎交流&#xff0c;共同进步&#xff01; <!DOCTYPE…

Java Web注册表单编写

编写注册表单 1.要做下列的这样一个表单信息&#xff1a; 2.方法主体里面添加表单 < form action“提交地址” method“post”> 表单内容&#xff08;包括按钮&#xff0c;输入框&#xff0c;选择框等&#xff09;< /form> 我们可以看到在测试中的结果&#xff…

003_用户注册表单【HTML-form表单】

文章目录 一、HTML-form表单1、用户注册表单2、用户注册表单 - 小升级3、HTML5表单新特性① 新的input type 一、HTML-form表单 1、用户注册表单 <html><head><meta charset"UTF-8"><title>HTML用户注册表单</title></head>&l…

javascript实现较全功能注册表单

今天笔者仿照京东注册表单&#xff0c;进行设计了一个表单案例&#xff0c;在这个案例中&#xff0c;可以完成常见表单注册的绝大部分功能&#xff0c;比如表单注册信息的验证&#xff0c;校验用户名&#xff0c;校验密码强弱&#xff0c;注册信息的追踪。这其中用到了正则表达…

HTML5实现注册表单

注册表单代码 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>注册账号</title></head><body><form action"getSend.php" method"GET"><fieldset><legend>注册…

JQuery用户注册表单验证

使用jquery编写代码实现用户注册表单的验证功能&#xff1a; 用户名、密码、确认密码和手机号不能为空密码长度在8~20位之间&#xff0c;密码至少由数字、字母或下划线其中两种组成确认密码必须和密码一致手机号应该是11位&#xff0c;并且是合法的手机号段验证码随机生成&…

jQuery简单的注册表单

注册表单的实现思想及步骤 明确自己需要收集的注册信息并在Html上写出表单的布局在js上进行数据接收和验证&#xff0c;向服务器发起注册请求&#xff0c;处理请求返回的数据。 代码实现 html代码 <form><div><span>用户名&#xff1a;</span><…

Web实现:简单的注册表单

Web实现&#xff1a;简单的注册表单。 结果图如下&#xff1a; HTML部分代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, i…

【HTML】-- 用户注册表单

【HTML】-- 用户注册表单 使用html标签做一个简单的注册表单&#xff0c;下面是一些常用的标签。 button标签&#xff1a;普通按钮&#xff0c;功能代码自定义。 submit&#xff1a;“确定” &#xff0c;提交到后台。 reset&#xff1a;“取消” &#xff0c;让表单控件原内容…