从零学习 InfiniBand-network架构(八) —— IB协议中的原子操作

news2024/9/25 9:31:27

从零学习 InfiniBand-network架构(八) —— IB协议中的原子操作


🔈声明:
😃博主主页:王_嘻嘻的CSDN主页
🔑未经作者允许,禁止转载
🚩本专题部分内容源于《InfiniBand-network architecture》,侵权必删

   本章将介绍IB协议中传输请求中的原子操作,并解释原子操作存在的意义以及IB协议中原子操作的具体类型与流程


什么是原子操作

  原子(atomic),在信息领域中指的就是不可分割的操作,不会因为线程调度被打断的操作。在IB协议中,原子操作指:如果一个处理器必须对特定的内存区域(例如,一个数据结构)执行一系列的两次或两次以上的访问,需确保在该处理器的一系列访问完成之前没有其他处理器访问同一内存。

  通过这种方式,原子操作的任务已经为自己保留了资源,然后可以启动一系列数据结构访问,而不必担心另一个任务成功访问该数据结构。


原子操作的意义

  假设系统中不存在原子操作:

  • 任务A在处理器A上运行,任务B在处理器B上运行;
  • 任务A必须访问共享数据结构;
  • 处理器A启动并完成一次内存读取,检查目标内存的状态,并标记该空间其它任务不可用;
  • 任务A然后执行存储指令将更新的信号量放回内存中;
  • 同时,运行在处理器B上的任务也希望访问该空间,但它可能在处理器a之前获得对信号量位置的访问权;
  • 此时,任务A和任务B现在都认为数据结构只属于它们,数据将进入无法预测的状态;

  出现上述问题将导致整个系统陷入糟糕的状态,这不是设计人员希望看到的。


  如果处理器A能够执行内存读、值测试和寄存器中的设置,以及作为原子的、不可分割的操作的内存写,并确保在原子系列访问(在本例中,是内存读和内存写)完成之前没有其他实体访问同一内存区域,那么这种情况是可以避免的。


IB协议中原子操作的类型与流程

  为了解决上述问题,IB协议提供了两种原子操作:

  • fetch and add的原子操作
  • Compare and Swap If Equal的原子操作(同Java中的CAS)

  原子操作由请求和Ack包组成,一个由请求方QP的SQ逻辑发出的原子请求包和一个由响应方QP的RQ逻辑返回的原子确认包,但是这两个数据包都不包含数据有效负载字段。操作所需的数据项在报文的AtomicETH字段中携带,AtomicETH字段包含:

  • 虚拟内存地址(VA);
  • 远程访问键(R_Key);
  • 添加数据(在Fetch和Add操作的情况下),或比较数据和交换数据(在比较和交换如果相等操作的情况下);

  IB协议规定了在接收到原子请求包时,响应端QP的RQ将其发布到特定于设备的队列中,(由硬件,而不是软件来执行),在内存读写之间的时间间隔内,CA必须阻止同一CA上的其他QP访问同一位置

以fetch and add操作为例,具体流程如下图:

  1. 从响应端内存中可被8整除的虚拟地址开始的内存中读取64-bits值;
  2. 使用请求包的AtomicETH字段中提供的64位add Data字段执行无符号添加;
  3. 将结果写回相同的虚拟地址;

在这里插入图片描述

Compare and Swap操作与fetch and add操作类似,在此就不再详细描述。




搜索关注我的公众号【IC墨鱼仔】,获取我的更多IC干货分享!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/31933.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring入门

一、Spring简介 1、Spring概述 官网地址:https://spring.io/ Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用Spring 框架来创建性能好、易于测试、可重用的代码。 Spring 框架是一个开源的 Java 平台&#xf…

STM32F407输入捕获应用--PWM 输入模式测量脉冲频率与宽度

STM32F407输入捕获应用--PWM 输入模式测量脉冲频率与宽度一、测量脉宽或者频率二、PWM 输入模式三、软件实现3.1、硬件准备3.2代码3.4 验证输入捕获一般应用在两个方面,一个方面是脉冲跳变沿时间测量,另一方面是 PWM 输入测量。一、测量脉宽或者频率 1.测…

Dockerfile(容器与镜像 自定义nginx tomcat 镜像优化)

Dockerfile精讲一、容器与容器镜像之间的关系二、容器镜像分类三、容器镜像获取的方法四、容器镜像获取方法演示4.1 在DockerHub直接下载4.2 把操作系统中文件系统打包为容器镜像4.2.1 安装一个最化的操作系统4.2.2 把操作系统中文件系统进行打包4.2.3 把打包后文件加载至本地文…

连续信号与系统的频域分析之傅里叶级数

信号的傅里叶级数一、正交函数集二、三角形式傅里叶级数三、指数形式的傅里叶级数1. 定义2. 系数确定3. 典型信号的傅里叶级数4. 周期信号的功率谱在LTI系统的时域分析中,输入信号被分解成冲激信号或阶跃信号的叠加(积分),然后利用…

LeetCode刷题2:链表篇

提示:本篇共7道力扣题目供大家食用,时间自行把控~ 算法刷题系列笔记 LeetCode刷题1:数组篇 文章目录算法刷题系列笔记作者有话说一、链表知识1.1 什么是链表?1.2 链表的类型1.3 链表操作二、经典题目2.1 Leetcode203.移除链表元素2.2 Leet…

vue-jest vue3

1. 使用vite搭建测试项目: vue create test-vue-jest 选择单元测试:Unit Testing--->jest 2. 配置 jest.config.js module.exports {transform: {"^.\\.vue$": "vue-jest",},preset: vue/cli-plugin-unit-jest/presets/types…

【关于几个问题的思考】

项目如何部署在服务器上面的 此文章以springboot 项目为例: 1.需要申请一台服务器,安装Linux操作系统 2.在服务器安装jdk ,不需要安装Tomcat,springboot 项目内嵌 Tomcat;安装项目的依赖项:如mysql redis等 3.此处利用…

Oracle SQL执行计划操作(9)——位图相关操作

​​​​​​9. 位图相关操作 该类操作基于位图数据(例如:位图索引的位图数据)进行位操作,或将其他结构数据转成位图数据以利用位操作。根据不同的具体SQL语句及其他相关因素,如下各操作可能会出现于相关SQL语句的执行计划。 1)BITMAP AND 对两个位图索引进行“与”(…

【CLS数据淘金第四期】网络流日志-云联网日志分析

导语 云联网(Cloud Connect Network,CCN)云联网覆盖全球 20 地域,提供云上私有网络间(VPC)、VPC 与本地数据中心间(IDC)内网互联的服务,具备全网多点互联、路由自学习、…

Hypermesh三维网格划分技能,以汽车发动机连杆结构为例

作者:米条老师,仿真秀专栏作者 Hypermesh三维单元的划分功能还是非常的丰富和灵活的,通常掌握主要的几个命令基本就能够满足大部分的网格划分工作。首先我们先了解一下在hypermesh中实现三维网格划分的基本步骤: 几何部件分组及…

finereport开发者需要关注的问题

版本问题 如果使用高版本开发,则无法在低版本的设计使用与发布, 所以第一件事情就是要把设计器的版本弄好。 请使用v10.0.0(本地版本需要与当前的中台版本一致),目前官方已没有直接下载到v10.0.0完整包的地址了,例如:下图为当前的…

大佬指明方向!使用微服务的最佳实践以及如何避免采用微服务架构可能带来的复杂性陷阱

什么是微服务 微服务应用是与单体应用区分开来的. 当一个单体项目随着业务的发展会越来越膨胀,变得更加难维护,从一开始仅需一两个人到需要两三个团队,多个团队维护同一个项目无疑是一场灾难,沟通成本大大增加,技术协同也会十分困难. 举个例子,我在上一家公司维护过一个后台项…

IP地址虚拟网络与虚拟机网络配置

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 IP地址虚拟网络与虚拟机网络配置1. IP地址与子网划分☞IP地址☞特殊IP地址☞IP地址申请☞子网掩码☞子…

spider

大家好 我是Yhen 今天给大家分享一下 如何爬取卡塔尔世界杯球员榜 数据来源:百度体育 https://tiyu.baidu.com/match/%E4%B8%96%E7%95%8C%E6%9D%AF/tab/%E7%90%83%E5%91%98%E6%A6%9C/current/0 文章目录一.需求分析二.思路分析三.代码实战四.源码获取一.需求分析…

强强联合 加速科技“牵手”清华大学达成深度战略合作

近日,清华大学集成电路学院成功采购了加速科技ST2500系列高性能数模混合测试机(浙江省首台套装备)。加速科技“牵手”清华大学,共同推进集成电路自主技术的创新升级,就集成电路学科教学科研、人才培养展开深度合作。 清…

Java Spring后处理器

Java Spring后处理器 在Spring框架中,交给Spring管理的类信息都会被Spring底层自动加载被封装成对应的BeanDefinition对象存储在beanDefinitionMap的Map集合中去,那么除了直接将类信息配置的方式外,还有别的方式可以对想要交给Spring管理的类…

matlab在管理学中的应用简matlab基础【二】

1、MATLAB语言概述 1.1 MATLAB语言的发展 matlab语言是由美国的Clever Moler博士于1980年开发的 MATLAB Matrix Laboratory 它将一个优秀软件的易用性与可靠性、通用性与专业性 、一般目的的应用与高深的科学技术应用有机的结合 MATLAB是一种直译式的高级语言,比…

【安装Ubuntu18.04遇到的问题】未找到WIFI适配器

大家好,我是小政。好久没有更新文章,近期开始陆续分享一些研究生阶段正在学习的知识和遇到的一些问题。 联想拯救者Y9000P关于安装Ubuntu未找到WIFI适配器的解决方法1.Ubuntu18.042.网卡信息3.解决方法(1)用手机USB连接电脑提供网…

如何判断对象是否该被回收(引用计数法、可达性分析算法)

👨‍💻个人主页: 才疏学浅的木子 🙇‍♂️ 本人也在学习阶段如若发现问题,请告知非常感谢 🙇‍♂️ 📒 本文来自专栏: JVM 🌈 算法类型:Hot100题 &#x1f30…

计算机的应用领域

文章目录计算机的应用领域1、商业2、银行业3、保险行业4、教育行业5、市场营销6、卫生保健7、工程设计8、军事9、通讯10、政府计算机的应用领域 本节,我将带领您了解计算机在各个领域的应用。 1、商业 计算机的功能丰富,极高的计算能力,计…