PCIe Switch高级功能及应用_pcie switch芯片-程序员宅基地

PCI-E Switch芯片,估计不少人已经听说过这个东西了。但是估计多数人对其基本功能知之甚少。PCI-E Switch作为最先进的生产力,已经被广泛应用在了传统存储系统,以及少量品牌/型号的服务器平台。 笔者作为拥有全球最领先PCI-E Switch产品的PMC-Sierra公司的系统架构师,想在这里为大家普及一下PCI-E Switch的基本知识。 背景介绍PCI-E大家都了解,主板上有PCI-E槽,里面的金手指就是一堆信号线,其直接被连接到了CPU内部的PCI-E控制器上。然而,当前的Intel平台CPU每颗最大支持40个通道(Lane),一般来讲万兆网卡使用8个通道即可,高端显卡需要x16通道因为在3D运算时需要的吞吐量巨大(笔者的PC使用了老主板来配了块GTX980显卡,只能运行在x8模式上,但是3D性能基本没什么变化,证明x8基本已经足够)。一般的存储卡也使用x8,但是后端12Gb/s SAS存储卡(HBA卡、Raid卡)普遍过渡到了x16。 但是,对于一些高端产品来讲,尤其是那些传统存储系统,每颗CPU提供x40个通道就显得不够用了。传统存储系统的一个特殊要求就是后端和前端HBA数量比较大,所以CPU自带的通道数量无法满足。另外,传统存储控制器之间需要做各种数据交换和同步,一般也是用PCI-E,这又增加了对通道数量的消耗。 对于一般的高端服务器,普遍都是双路、四路配置,双路下提供x80通道,理论上可连接10个x8的PCI-E设备,去掉一些用于管理、内部嵌入式PCI-E设备的通道占用之后,连接8个设备不在话下,可以覆盖几乎所有应用场景。 但是, 随着用户对融合、统一、效率、空间、能耗要求的不断提升,近年来出现了不少高密度模块化服务器平台,或者说,开放式刀片。这类服务器平台对PCI-E方面产生了一些特殊需求,比如Partition和MR-IOV。下面,笔者就详细展开介绍这些知识。 基本功能1.FanoutFanout(扩展、扩开、散开的意思)是PCI-E switch的基本功能,或者说,PCI-E标准体系一开始就是应对通道数量不够用才设计了PCI-E Switch这个角色。

在PCI-E之前的一代标准是PCI-X,那时候并没有Switch的概念,Fanout采用的是桥接的形式,形成一个树形结构,如上图中间所示。 Switch的概念是在PCI-E时代引入的,其相对于桥最大的一个本质区别就是同一个Bus内部的多个角色之间采用的是Switch交换而不是Bus。PCI-X时代真的是使用共享Bus传递数据,这就意味着仲裁,意味着低效率。然而,PCI-E保留了PCI-X体系的基本概念,比如依然沿用“Bus”这个词,以及“桥/Bridge”这个词,但是这两个角色都成为了虚拟角色。一个Switch相当于一个虚拟桥+虚拟Bus的集合体,每个虚拟桥(VB)之下只能连接一个端点设备(也就是最终设备/卡,End Point/EP)或者级联另外一个Switch,而不能连接到一个Bus,因为物理Bus已经没了。这种Fanout形式依然必须遵循树形结构,因为树形结构最简单,没有环路,不需要考虑复杂路由。 2.Partition分区功能相当于以太网Switch里的Vlan,相当于SAS Switch/Expander里的Zone。

如上图所示,两台或者多台机器,可以连接到同一片PCI-E Switch,在Switch做分区配置,将某些EP设备分配给某个服务器。这样可以做到统一管理,灵活分配。每台服务器的BIOS或者OS在枚举PCI-E总线时只会发现分配给它的虚拟桥、虚拟BUS、和EP。多个分区之间互不干扰。 多台独立服务器连接到同一片Switch上,如果不做Partition,是会出现问题的,因为两个OS会分别枚举同一堆PCI-E总线内的角色,并为其分配访问地址,此时会出现冲突。 3.NTB有些特殊场景下,比如传统存储系统中的多个控制器,它们之间需要同步很多数据和控制信息,希望使用PCI-E链路直接通信。问题是,图中的两台服务器并不可以直接通信,因为必须身处两个不同的分区中。为了满足这个需求,出现了NTB技术。其基本原理是地址翻译,因为两个不同的系统(术语System Image,SI)各有各的地址空间,是重叠的。那么只要 在PCI-E Switch内部将对应的数据包进行地址映射翻译,便可以实现双方通信。这种带有地址翻译的桥接技术叫做None Transparent Bridge,非透明桥。

基本功能1.Dynamic Partition上文中的分区配置必须是静态配置,必须在BIOS启动之前,也就是CPU加电之前,对PCI-E Switch进行分区配置,可以使用BMC做配置。分区配置好之后,在系统运行期间,不能够动态改变。这就意味着,某个PCI-E卡如果被分配到了服务器A,则其不能在不影响服务器A和B的运行前提下,被动态重新分配到服务器B。 PMC-Sierra公司Switchtec旗下的PCI-E Switch产品则支持动态分配。具体的实现手段笔者就不能透露了。不过,对于内行开发者来讲,这些都不是问题,问题是对应的芯片内部的架构是否足够灵活可配置,这是限制高级功能设计的关键。 2.Fabric上文中说过,不管是PCI-X还是PCI-E体系标准内,只支持树形拓扑。树形拓扑的问题在于,路径过长,整个网络的直径太大。另外,无法实现冗余,一旦某个链路故障,链路后方的分支全部无法访问。 于是, 支持Fabric成了一个非常复杂的高级功能。这个场景目前还很少有人使用,对于整机架服务器比如天蝎等,其对这项功能兴趣则比较大。然而,目前这个技术的实现还非常初级不完善,也没有形成标准。

3.IOVSR-IOV,不少人都听说过,但却不知道里面具体的门道,Single Root IO Virtualization里的Root是什么意思?Single Root又何解?还有Multi Root IOV,这又是什么鬼? SR-IOV,是指把插在一台服务器上的一块PCI-E卡虚拟成多块虚拟卡,给运行在这台服务器上的多个虚拟机用,每个虚拟机都识别到一个PCI-E卡,但是VM并不知道这个卡是虚拟出来的。如果不虚拟成多块卡,多个VM怎么共享这个设备?答,必须通过Hypervisor提供的服务来使用该设备。Hypervisor会在VM内安装一个驱动程序,这个驱动会虚拟一个并不存在的设备,比如 “XXX牌以太网卡”,这个驱动会真的与OS协议栈挂接上,从而接收上层下发的数据包。但是这个驱动收到数据包之后,由于根本不存在实际的网卡,这个驱动其实是将这个包发送给了Hypervisor,或者有些虚拟机实现是使用一个domain 0特权VM来负责与真实硬件打交道,那么这个驱动会将数据发送给这个特权VM,Guest VM与特权VM之间通过进程间通信来传递数据,Hypervisor或者特权VM收到数据之后,再通过真实的驱动,比如“Intel xxx Ethernet card”将数据包发送给真实网卡。 这么一转发,就慢了,因为内存拷贝的代价比较高,吞吐量要求如果很大的话,这种方式就不行了。于是,SR-IOV出马解决了这个问题。SR-IOV需要直接在PCI-E卡的硬件里虚拟出多个子设备。如何做到? 首先,支持SR-IOV的PCI-E卡,需要向系统申请成倍的地址空间,想虚拟出几个设备,就需要按照SR-IOV的规范格式来声明相比原先几倍的地址空间。这个地址空间会在内核或者BIOS枚举PCI-E设备的时候被获取到,系统会将为该设备申请的地址空间段的基地址写入设备寄存器。比如某网卡虚拟出8个虚拟网卡来,然后由内核PCI-E管理模块向系统申报8个PCI-E设备。随后就是由Hypervisor将对应的设备映射给对应的VM,VM中加载对应的Host Driver。Hypervisor还需要执行地址翻译,或者硬件辅助的地址翻译。 只要PCI-E设备自身支持SR-IOV,PCI-E Switch不需要做任何额外处理即可原生支持。但是 MR-IOV则必须在PCI-E switch上做额外处理才可以支持。原因还是因为多个独立系统之间是互不沟通的,如果都尝试对PCI-E总线进行配置会冲突。PCI-E Switch针对MR-IOV的支持基本手段,还是靠增加一层地址映射管理来实现。 Dell PowerEdge FX2平台对PCI-E Switch的应用Dell PowerEdge FX2是一款2U多节点服务器平台框架,其采用一个2U的Chassis机箱,最大可以容纳: 2个1U Server Sled或者1个1U Server Sled+2个1U半宽存储Sled或者1个1U半宽Server Sled+3个1U半宽存储Sled或者4个1U半宽Server Sled或者2个1U半宽Server Sled+2个1U半宽存储Sled或者3个1U半宽Server Sled+1个1U半宽存储Sled或者8个1U四分之一宽Server Sled 多种灵活组合都可实现。如下图所示。

机箱背面有8个PCI-E槽位。

这8个PCI-E槽位可以被灵活的分配给机箱正面的各种组合的Server Sled。这就得益于PCI-E Switch以及Partition功能的使用。笔者画了一张示意图来向大家介绍一下其内部的导向路径。如下图所示,1/2号槽位所连接的端口与服务器Sled1所连接的端口处于红色分区之内,3/4槽位与服务器Sled2处于黄色分区。而5/6/7/8槽位、存储Sled、服务器Seld3则同处于蓝色分区内。意味着,服务器Sled3会识别到5/6/7/8槽位上的PCI-E卡(如有),同时识别到存储Sled上的RAID卡。

基于Web的配置界面,通过连接到BMC,可以对整个FX2平台所囊括的所有Sled进行全局配置,包括分配对应的PCI-E槽位,也就是底层的对PCI-E Switch的分区操作。

通过对PCI-E Switch分区功能的灵活运用,Dell PowerEdge FX2平台可以实现后面8个PCI-E设备的灵活分配,从而更好的适配日益灵活的应用场景和业务需求。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_21792169/article/details/107388988

智能推荐

leetcode 172. 阶乘后的零-程序员宅基地

文章浏览阅读63次。题目给定一个整数 n,返回 n! 结果尾数中零的数量。解题思路每个0都是由2 * 5得来的,相当于要求n!分解成质因子后2 * 5的数目,由于n中2的数目肯定是要大于5的数目,所以我们只需要求出n!中5的数目。C++代码class Solution {public: int trailingZeroes(int n) { ...

Day15-【Java SE进阶】IO流(一):File、IO流概述、File文件对象的创建、字节输入输出流FileInputStream FileoutputStream、释放资源。_outputstream释放-程序员宅基地

文章浏览阅读992次,点赞27次,收藏15次。UTF-8是Unicode字符集的一种编码方案,采取可变长编码方案,共分四个长度区:1个字节,2个字节,3个字节,4个字节。文件字节输入流:每次读取多个字节到字节数组中去,返回读取的字节数量,读取完毕会返回-1。注意1:字符编码时使用的字符集,和解码时使用的字符集必须一致,否则会出现乱码。定义一个与文件一样大的字节数组,一次性读取完文件的全部字节。UTF-8字符集:汉字占3个字节,英文、数字占1个字节。GBK字符集:汉字占2个字节,英文、数字占1个字节。GBK规定:汉字的第一个字节的第一位必须是1。_outputstream释放

jeecgboot重新登录_jeecg 登录自动退出-程序员宅基地

文章浏览阅读1.8k次,点赞3次,收藏3次。解决jeecgboot每次登录进去都会弹出请重新登录问题,在utils文件下找到request.js文件注释这段代码即可_jeecg 登录自动退出

数据中心供配电系统负荷计算实例分析-程序员宅基地

文章浏览阅读3.4k次。我国目前普遍采用需要系数法和二项式系数法确定用电设备的负荷,其中需要系数法是国际上普遍采用的确定计算负荷的方法,最为简便;而二项式系数法在确定设备台数较少且各台设备容量差..._数据中心用电负荷统计变压器

HTML5期末大作业:网页制作代码 网站设计——人电影网站(5页) HTML+CSS+JavaScript 学生DW网页设计作业成品 dreamweaver作业静态HTML网页设计模板_网页设计成品百度网盘-程序员宅基地

文章浏览阅读7k次,点赞4次,收藏46次。HTML5期末大作业:网页制作代码 网站设计——人电影网站(5页) HTML+CSS+JavaScript 学生DW网页设计作业成品 dreamweaver作业静态HTML网页设计模板常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 明星、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 军事、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他 等网页设计题目, A+水平作业_网页设计成品百度网盘

【Jailhouse 文章】Look Mum, no VM Exits_jailhouse sr-iov-程序员宅基地

文章浏览阅读392次。jailhouse 文章翻译,Look Mum, no VM Exits!_jailhouse sr-iov

随便推点

chatgpt赋能python:Python怎么删除文件中的某一行_python 删除文件特定几行-程序员宅基地

文章浏览阅读751次。本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。AI职场汇报智能办公文案写作效率提升教程 专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。_python 删除文件特定几行

Java过滤特殊字符的正则表达式_java正则表达式过滤特殊字符-程序员宅基地

文章浏览阅读2.1k次。【代码】Java过滤特殊字符的正则表达式。_java正则表达式过滤特殊字符

CSS中设置背景的7个属性及简写background注意点_background设置背景图片-程序员宅基地

文章浏览阅读5.7k次,点赞4次,收藏17次。css中背景的设置至关重要,也是一个难点,因为属性众多,对应的属性值也比较多,这里详细的列举了背景相关的7个属性及对应的属性值,并附上演示代码,后期要用的话,可以随时查看,那我们坐稳开车了······1: background-color 设置背景颜色2:background-image来设置背景图片- 语法:background-image:url(相对路径);-可以同时为一个元素指定背景颜色和背景图片,这样背景颜色将会作为背景图片的底色,一般情况下设置背景..._background设置背景图片

Win10 安装系统跳过创建用户,直接启用 Administrator_windows10msoobe进程-程序员宅基地

文章浏览阅读2.6k次,点赞2次,收藏8次。Win10 安装系统跳过创建用户,直接启用 Administrator_windows10msoobe进程

PyCharm2021安装教程-程序员宅基地

文章浏览阅读10w+次,点赞653次,收藏3k次。Windows安装pycharm教程新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入下载安装PyCharm1、进入官网PyCharm的下载地址:http://www.jetbrains.com/pycharm/downl_pycharm2021

《跨境电商——速卖通搜索排名规则解析与SEO技术》一一1.1 初识速卖通的搜索引擎...-程序员宅基地

文章浏览阅读835次。本节书摘来自异步社区出版社《跨境电商——速卖通搜索排名规则解析与SEO技术》一书中的第1章,第1.1节,作者: 冯晓宁,更多章节内容可以访问云栖社区“异步社区”公众号查看。1.1 初识速卖通的搜索引擎1.1.1 初识速卖通搜索作为速卖通卖家都应该知道,速卖通经常被视为“国际版的淘宝”。那么请想一下,普通消费者在淘宝网上购买商品的时候,他的行为应该..._跨境电商 速卖通搜索排名规则解析与seo技术 pdf

推荐文章

热门文章

相关标签