gsiarm64和gsi+amr64有什么区别

gsiarm64和gsi+amr64有什么区别,第1张

gsiarm64和gsi+amr64区别。

为了更广泛地向企业领域推进,需要引入64位构架,同时也需要在ARMv8架构中引入新的AArch64执行状态,AArch64不是一个单纯的32位ARM构架扩展,而是ARMv8内全新的构架,完全使用全新的A64指令集。

这些都源自于多年对现代构架设计的深入研究,更重要的是,AArch64作为一个分离出的执行状态,意味着一些未来的处理器可能不支持旧的AArch32执行状态。

 简介:

虽然最初的64位ARM处理器将会完全向后兼容,但我们大胆且前瞻性地将AArch64作为在ARMv8处理器中唯一的执行状态,我们在这些系统中将不支持32位执行状态,这将使许多有益的实现得到权衡,如默认情况下,使用一个较大的64K大小的页面,并会使得纯净的64位ARM服务器系统不受遗留代码的影响。

立即进行这种划分是很重要的,因为有可能在未来几年内将出现仅支持64位的服务器系统。没有必要在新的64位架构中去实现一个完整的32位流水线,这将会提高未来ARM服务器系统的能效。

这样回想起来,AArch64作为在Fedora ARM项目中被支持的ARM构架是一个很自然的过程,armv5tel,armv7hl,aarch64,新的架构被命名为,aarch64,这同ARM自己选择的主线命名方式保持一致,同时也考虑到了ARM架构名与ARM商标分开的期望。

姓名:周肇星;学号:22011110028;学院:通信工程学院

部分素材取自 https://zhuanlan.zhihu.com/p/195757767

【嵌牛导读】RDMA技术全称远程直接数据存取,就是为了解决网络传输中服务器端数据处理的延迟而产生的。RDMA通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,这样就不需要用到多少计算机的处理功能。它消除了外部存储器复制和上下文切换的开销,因而能解放内存带宽和CPU周期用于改进应用系统性能。本专题将针对RDMA技术进行介绍!

【嵌牛鼻子】计算机网络,高性能网络,RDMA

【嵌牛提问】读完本文,对RDMA技术的QP概念有所认识了吗?

【嵌牛正文】

InfiniBand specification R1.3, Chapter3, 3.2.1, Page 98【QP与相关元素的概念】

InfiniBand specification R1.3, Chapter3, 3.5.1, Page 108【QP与相关元素的概念】

InfiniBand specification R1.3, Chapter3, 3.5.10, Page 117【QPN、QP0、QP1的概述】

InfiniBand specification R1.3, Chapter3, 3.7.5.1, Page 137【SMI使用QP0】

InfiniBand specification R1.3, Chapter3, 3.7.5.2, Page 138【GSI使用QP1】

InfiniBand specification R1.3, Chapter3, 3.8, Page 139【QP包含SQ与RQ】

InfiniBand specification R1.3, Chapter3, 3.8, Page 139【通道适配器对WQE的处理与数据的收发】

InfiniBand specification R1.3, Chapter3, 3.9, Page 143【GSI模型具体描述】

InfiniBand specification R1.3, Chapter3, 3.9.4, Page 145【QP0限定为无连接的数据报服务类型

InfiniBand specification R1.3, Chapter3, 3.9.5, Page 147【QP1限定为无连接的数据报服务类型】

InfiniBand specification R1.3, Chapter3, 3.9.5.1, Page 147【允许QP1重定向的原因与机制】

根据IB协议中的描述,QP是硬件和软件之间的一个虚拟接口。QP由一个发送队列SQ与接收队列RQ组成,SQ与RQ均是队列结构,按顺序存储着软件给硬件下发的任务(WQE),WQE中包含从哪里取出多长的数据,并且发送给哪个目的地等等信息

通道适配器硬件接收到WQE后,读取WQE、并解析其中的命令,验证WQE的虚拟地址,将其转换为物理地址,并访问对应的数据。数据可通过一个或切分成多个数据包被传输出去,通道适配器为每个数据包添加一个传输头,如果目标位于其它子网上,则再添加上网络头部,随后添加本地路由头、并计算效验和

当数据到达目的节点时,验证校验和后,传输头指出了目标QP,通道适配器通过该QP的QP Context检查数据包是否来自正确的源端。对于SEND操作,QP从其接收队列中取出WQE,从中检索接收缓存区的虚拟地址、并转换成接收物理地址,将数据写入相应的位置,如果这不是消息的最后一个包,QP则在其QP Context中保存当前写的位置,并等待下一个包,然后继续写入缓存区,直至接收到最后一个包,然后该接收WQE退役,并向源端发送ACK确认

当发起者收到确认时,它会在CQ上创建一个CQE,并将WQE从发送队列中退出。一个QP可以在任何时候有多个未完成的消息,但接收端总是按照发送的顺序进行确认,因此WQE会按发送的顺序退役

对于可靠的服务类型,如果QP检测到一个或多个丢失的数据包,它会向发送者发送一条NAK消息指示其下一个预期的序列号。然后发起者可以从预期的数据包开始重新发送

每个QP间都是独立的,彼此通过PD隔离,因此一个QP可以被视为某个用户独占的一种资源,一个用户也可以同时使用多个QP

QP有很多种服务类型,包括RC、UD、RD和UC等,所有的源QP和目的QP必须为同一种类型才能进行数据交互

虽然IB协议将QP称为“虚拟接口”,但是它是有实体的:

QP Number简称为QPN,就是每个QP的编号。IB协议中规定用24个bit来表示QPN,即每个节点最大可以同时使用2^24个QP,每个节点都各自维护着QPN的集合,由通道适配器分配,相互之间是独立的,即QPN编号在各节点内唯一、不同的节点上可以存在编号相同的QP

编号为0的QP用于子网管理接口SMI(Subnet Management Interface),用于管理子网中的全部节点

子网管理器使用通过QP0发送、接收被称为子网管理报文SMP(Subnet Management Packet)的特殊类型的MAD(Management Datagram)报文(并仅发送接收SMP,其余数据无效)

并且QP0被永久配置为不可靠的数据报的服务类型

编号为1的QP用于通用服务接口GSI(General Service Interface)

GSI使用QP1进行初始通信,但允许对特定类的流量重定向到特权QP上,这是因为所有管理类数据包都进入同一队列,将导致瓶颈问题、线头阻塞现象,因此设计了重定向到其它QP的机制。当通道适配器接收到QP1上的GMP报文时,它可能会响应为一个指示新端口和QP的重定向响应,然后发起者将请求重新发送到新地址,并将该地址用于同一管理类的所有后续请求

并且QP1被永久配置为不可靠的数据报的服务类型,QP1上仅能收发MAD数据包

通用服务代理GSA(General Service Agents)是由许多管理服务代理组合而成,通用服务GA(General Service)使用称为通用管理报文GMP(General Service Packet)的报文,该报文是一种特殊的MAD报文

GSA中最出名的就是CM(Communication Management),是一种在通信双方节点正式建立连接之前用来交换必须信息的一种方式

QPC全称是Queue Pair Context,用于存储QP相关属性

QP在硬件上的实体只是一段存储空间而已,硬件除了知道这段空间的起始地址和大小之外一无所知,甚至连这个QP服务类型都不知道。还有很多其他的重要信息,比如某个QP中包含了若干个WQE,硬件怎么知道有多少个,当前应该处理第几个呢?

所以就需要软件通过操作系统提前申请好一大片连续的空间,即QPC来承载这些信息给硬件看。网卡及其配套的驱动程序提前约定好了QPC中都有哪些内容,这些内容分别占据多少空间,按照什么顺序存放。这样驱动和硬件就可以通过通过QPC这段空间来读写QP的状态等等信息

如上图所示,硬件其实只需要知道QPC的地址0x12350000就可以了,因为它可以解析QPC的内容,从而得知QP的位置,QP序号,QP大小等等信息。进而就能找到QP,知道应该取第几个WQE去处理。不同的厂商可能实现有些差异,但是大致的原理就是这样

四种操作都有配套的Verbs接口,类似于ibv_create_qp()这种形式,编写APP时直接调用就可以了

创建一个QP的软硬件资源,包含QP本身以及QPC。用户创建时会写传入一系列的初始化属性,包含该QP的服务类型,可以储存的WQE数量等信息

释放一个QP的全部软硬件资源,包含QP本身及QPC。销毁QP后,用户将无法通过QPN索引到这个QP

修改一个QP的某些属性,比如QP的状态,路径的MTU等等。这个修改过程既包括软件数据结构的修改,也包括对QPC的修改

查询一个QP当前的状态和一些属性,查询到的数据来源于驱动以及QPC的内容

在行为上都是软件向QP中填写一个WQE(对应用层来说叫WR),请求硬件执行一个动作。所以这两种行为都叫做“Post XXX Request”的形式,即下发XXX请求

Post Send本身不是指这个WQE的操作类型是Send,而是表示这个WQE属于通信发起方。这个流程中填写到QP中的WQE/WR可以是Send操作,RDMA Write操作以及RDMA Read操作等

用户需要提前准备好数据缓冲区、目的地址等信息,然后调用接口将WR传给驱动,驱动再把WQE填写到QP中

Post Recv的使用场景就相对比较少了,一般只在Send-Recv操作的接收端执行,接收端需要提前准备好接收数据的缓冲区,并将缓冲区地址等信息以WQE的形式告知硬件


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/471791.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-06
下一篇2023-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存