【国产AI服务器】全国产PCIe 4.0/5.0 Switch GPU扩展解决方案,支持海光/飞腾/龙芯等平台

前言:

PCIE 协议中有很大篇幅在讲PCIE SWITCH。在实际电路应用中,我们也会遇到PCIE 端口数量不够,需要通过switch来扩展端口的案例。

目前市面上能支持PCIe Gen5的switch只有Broadcom和Microchip两家,其中Broadcom的PEX8900系列较早面市,支持PCIe Gen5的速率,支持base switch mode(fanout扩展模式)以及synthetic swith mode 。笔者用过broadcom家的PEX89144,PEX89104,在下文的实际应用章节,将重点介绍PEX89144的注意事项;对于Diodes的PI7C9X2G1616PR,和microchip的PM8536也会作简要分析。

作为硬件开发,在学习switch之前,需要通过PCIE协议来了解一些概念,举例一款博通的PEX8724,DMA,PCIE LANE / PORT ,传输的延迟Latency,NT功能等这些参数要了解后,才能对switch ic做出正确的选型和设计。

国产PCIe 4.0/5.0 Switch GPU扩展解决方案,支持海光/飞腾/龙芯等平台。深圳信迈提供全国产背板定制服务。

一,PCIE协议-switch相关知识点

在如何选型PCIe switch之前,需要先熟悉以下PCIe Base协议中关于switch的知识点讲解:

1,什么是switch:

协议定义 Switch: A defined System Element that connects two or more Ports to allow Packets to be routed from one Port to another. To configuration software, a Switch appears as a collection of virtual PCI-to-PCI Bridges.

Switch的概念:switch为一组虚拟PCI-to-PCI Bridges的集合,连接两个或多个Ports且允许数据包在不同Ports之间被路由转发。

图1

2,switch的应用模式:

  • Fanout扩展模式
  • Partition分区模式
  • NTB非透明桥

a, Fanout扩展模式最为简单,Fanout形式遵循树形结构,因为树形结构最简单,没有环路,不需要考虑复杂路由。图2即是fanout模式。

图2

b, Partition分区模式,分区功能相当于以太网Switch里的Vlan,相当于SAS Switch/Expander里的Zone两台或者多台机器,可以连接到同一片PCI-E Switch,在Switch做分区配置,将某些EP设备分配给某个服务器。这样可以做到统一管理,灵活分配。每台服务器的BIOS或者OS在枚举PCI-E总线时只会发现分配给它的虚拟桥、虚拟BUS、和EP。多个分区之间互不干扰。多台独立服务器连接到同一片Switch上,如果不做Partition,是会出现问题的,因为两个OS会分别枚举同一堆PCI-E总线内的角色,并为其分配访问地址,此时会出现冲突。

图3

c, NTB非透明桥,在有些特殊场景下,比如传统存储系统中的多个控制器,它们之间需要同步很多数据和控制信息,希望使用PCI-E链路直接通信。问题是,图中的两台服务器并不可以直接通信,因为必须身处两个不同的分区中。为了满足这个需求,出现了NTB技术。其基本原理是地址翻译,因为两个不同的系统(术语System Image,SI)各有各的地址空间,是重叠的。那么只要在PCI-E Switch内部将对应的数据包进行地址映射翻译,便可以实现双方通信。这种带有地址翻译的桥接技术叫做None Transparent Bridge,非透明桥。

下图4 两个分区中的上行端口配置为NTB,这样两个HOST就互相访问对方分区下的device。

图4

下图5解释了NTB下TLP的传播路径:

图5

3,PCIE link,PCIE port 和 PCIE lane三者的区别?

图6

  • Link的概念:两个Ports和他们之间所连接Lanes的集合。一个Link是在两个部件之间的一个双工通信通道。(协议定义:A Link represents a dual-simplex communications channel between two components. The fundamental PCI Express Link consists of two, low-voltage, differentially driven signal pairs: a Transmit pair and a Receive pair。)
  • Lanes是指PCIe总线中的物理通道,每个Lane由一对TX和RX的差分信号对组成。(协议定义:each Lane represents a set of differential signal pairs (one pair for transmission, one pair for reception )PCIe总线中的每个Lane都是一个单独的、全双工的通道,可以支持一定的数据传输速率。PCIe总线的版本号以及每个版本所支持的速率和Lane数目都是由Lane来定义的。例如,PCIe 3.0 x16就表示有16个Lanes,而每个Lane的数据传输速率则为8 GT/s。
  • Port:逻辑上看是位于部件和一个PCIE链路之间的接口; 物理上看,是同一个芯片上用来定义一个链路的一组发射器和接收器(协议定义:logically,an interface between a component and a PCIE link; Physically,a group of Transmitters and Receivers located on the same chip that define a link。)

总的来说:每个Port都包含多个Lanes,不同的PCIe总线传输速率和Lane数目决定了每个端口的总带宽。

4,Store-and-Forward Switching vs Cut-Through Switching

  • Store and Forward很好理解,即Switch接收整个报文,然后再处理,没有错误,再继续向目标端口发送。有错误,则按照ACK/NAK协议要求发送端重新发送。这种方式的优点是确保正确的报文才向egress port端口发送,保证了egress port的带宽不浪费。缺点显而易见,增加了报文在Switch中的延时。
  • 为了降低延时,Spec定义了另一种传输方式,称之为Cut-Through。跟以太网中的Cut-Through模式类似,Switch在收到报文头后,并不需要等完整的报文接收完成,就开始向目标端口转发报文。这种模式明显减低了报文在Switch中的延时,不过报文有错的话,会浪费egress port的带宽。总的来说,链路报文错误是少数情况,整体上看这种模式更加优越。

下图7,是博通PEX8733中关于cut through模式的解释:

图7

博通的PEX8733的cut through latency最大132ns.

图8

博通的PEX89144的cut through latency约115ns.

5,DMA (Direct Memory Access)

DMA指的是Direct Memory Access,即直接内存访问。在PCIe交换机中,DMA通常用于提高数据传输的效率,避免CPU参与每个数据传输操作。通过DMA,PCIe设备可以直接访问系统内存,从而实现高效的数据传输。具体实现方法:CPU设置DMA Descriptions来搬运数据,打开DMA引擎,然后在DMA engine搬运数据时可以自由地执行其他进程。DMA引擎还可以在可编程的间隔内中断CPU并提供进度状态。

microchip最新 GEN5 PCIe switch 最多能支持64 DMA channels:

下面以PEX8733来讲解DMA:

如下图9,说明了DMA操作序列为一个单一通道。在这个例子中,DMA engine搬运数据从主RAM到一个终端。CPU只在步骤1、2和6中使用;其余步骤由DMA引擎执行。

图9

6,Transparent and Non-Transparent Modes

在PCIe交换机中,NT Ports指的是Non-Transparent Ports(非透明端口)。这是一种PCIe交换机端口类型,与Transparent Ports(透明端口)相对应。

透明端口(Transparent Port)是一种将PCIe TLP(Transaction Layer Packets,事务层数据包)透明地传输到目标端口的端口类型。透明端口将TLP中的信息直接转发到目标设备,目标设备无需知道中间存在的透明端口。

相比之下,非透明端口则会拦截TLP并在本地进行处理。这些端口通常被用于实现一些高级功能,例如PCIe交换机之间的互联,以及错误管理和诊断。在处理TLP时,非透明端口会检查TLP的头部,并根据需要进行修改或分析。

NT Ports通常与SR-IOV(Single Root I/O Virtualization,单根I/O虚拟化)和MR-IOV(Multi Root I/O Virtualization,多根I/O虚拟化)相关。这些技术允许将物理设备虚拟化为多个虚拟设备,并将其分配给不同的虚拟机。非透明端口可以提供对SR-IOV和MR-IOV所需的硬件功能的支持。

7,AER (Advanced Error Reporting)

AER :高级错误报告,是PCIE异常信息处理机制,用于报告PCIe 错误信息。

图10

8,PCIE lane reversal and polarity inversion。

PCIE lane翻转,以及PCIe差分信号正负极性反转。下图是broacom PEX89144的PCIe特性支持:

9,PCI power management spec

PCIe总线的电源管理包括两方面的内容:

  • 一是基于软件控制的PCI-PM电源管理机制,这部分与PCI总线兼容;
  • 二是基于硬件控制的ASPM电源管理机制, 不需要Host端软件口控制,PCIe链路自主管理。

注: ASPM= Active State Power Management

10,cut through latency

11,base mode:PEX 8733 acts as a standard PCI Express switch, supporting one Host hierarchy (equivalent to Conventional PCI mode).

11, 什么是P2P?

P2P:peer to peer communication;P2P是PCIe设备之间直接传输数据,而不需要使用HOST RAM作为临时存储。

<think>首先,用户的问题是关于在Linux系统中查看硬件平台是否是鲲鹏、海光飞腾龙芯的命令。用户提供了几个引用,我需要参考这些引用来给出准确的答案。 回顾用户提供的引用: - 引用[3]:直接提到了查看CPU信息的命令,如查看CPU型号、核数等。 - 命令包括:`cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c` 用于查看CPU信息(型号),以及查看处理器个数、CPU核数等。 - 引用[2]:讨论了银河麒麟服务器操作系统支持多种硬件平台,包括飞腾、鲲鹏、龙芯海光等。 - 其他引用如[1]、[4]、[5]可能不直接相关,但可以用于上下文理解。 用户的核心问题是:查找命令来识别硬件平台是否是鲲鹏、海光飞腾龙芯。这些平台涉及不同的CPU架构,如ARM、x86等。 在Linux系统中,查看CPU信息的标准方式是使用文件如`/proc/cpuinfo`或命令如`lscpu`。具体到识别特定CPU型号: - `/proc/cpuinfo`文件包含详细的CPU信息,包括型号名称。 - 我们可以通过grep命令来搜索特定关键词来识别平台。 从引用[3]中: - `cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c`:这用于提取CPU型号名称。 - 其他命令如查看CPU核数等不直接相关。 为了识别特定平台: - 鲲鹏(Kunpeng):这是华为的基于ARM架构的CPU。 - 海光(Hygon):这是基于x86架构的CPU。 - 飞腾(Phytium):这是基于ARM架构的CPU。 - 龙芯(Loongson):这是基于MIPS或LoongArch架构的CPU。 所以,命令应该提取CPU模型字符串,然后用户可以根据输出判断平台。 可能的命令: - 使用`lscpu`命令:更简洁地显示CPU信息,包括架构和模型名称。 - 使用`uname -m`:显示机器硬件名称,如x86_64或aarch64,但不指定具体型号。 - 最佳方式是`cat /proc/cpuinfo | grep "model name"`或类似,然后查看输出。 从引用[3]的建议: - `cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c`:这应该显示CPU模型名称。 用户需要区分具体平台,所以命令的输出可能类似: - 对于鲲鹏:可能显示"Huawei Kunpeng"或类似字样。 - 对于海光:可能显示"Hygon XXX"。 - 对于飞腾:可能显示"Phytium XXX"。 - 对于龙芯:可能显示"Loongson XXX"。 在实际系统中,输出可能因系统配置而异,但命令可以提取出模型名称。 另外,引用[3]有其他命令: - `cat /proc/cpuinfo| grep "cpu cores"| uniq`:查看CPU核数。 - `cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l`:查看CPU个数。 但这些不直接帮助识别型号。 我应该提供一个通用的命令,让用户运行后根据输出判断。 结构化回答: - 先解释方法。 - 给出命令。 - 解释如何解读输出。 - 参考引用。 用户指令要求: - 使用中文回答。 - 结构清晰。 - 生成相关问题。 - 添加引用标识。 回答结构: 1. 简要介绍识别方法。 2. 给出具体命令。 3. 解释输出可能表示的平台4. 基于引用添加标识。 5. 结束生成相关问题。 命令建议: - 使用`cat /proc/cpuinfo | grep -i "model name"` 或类似命令。 - 使用`lscpu`命令。 从引用[3]提取:`cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c` 这应该足够。 输出解读: - 如果输出包含"Kunpeng",则是鲲鹏。 - 包含"Phytium",则是飞腾。 - 包含"Loongson",则是龙芯。 - 包含"Hygon",则是海光。 - 否则,可能是其他架构如Intel或AMD。 生成相关问题: - 基于主题,如其他系统信息命令、特定平台配置等。 引用标识: - 末尾添加,如[^3]。 完整回答。 </think>### Linux系统中查看硬件平台是否为鲲鹏、海光飞腾龙芯的命令 在Linux系统中,查看硬件平台的CPU类型(如鲲鹏、海光飞腾龙芯)可以通过分析CPU信息来实现。标准方法是使用`/proc/cpuinfo`文件中的模型名称(model name),通过命令行工具提取关键信息。以下步骤详细说明命令和解读方法,基于引用[3]中提供的命令示例。 #### 1. **推荐命令** 在终端中运行以下命令提取CPU模型名称: ```bash cat /proc/cpuinfo | grep "model name" | cut -f2 -d: | uniq ``` 或者,使用更简洁的版本(引用[3]): ```bash cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c ``` 此命令会: - 读取`/proc/cpuinfo`文件(包含CPU详细信息)。 - 使用`grep`过滤出包含"name"的行(通常是"model name")。 - 用`cut`提取冒号后的部分(即CPU型号字符串)。 - 用`uniq`或`uniq -c`去重并显示唯一输出(避免重复显示多个核心)。 #### 2. **解读输出** 运行命令后,观察输出字符串来识别平台: - **鲲鹏(Kunpeng)**:输出通常包含"Kunpeng"或"Huawei"字样(例如:"Kunpeng 920"),表明是华为ARM架构CPU[^3]。 - **海光(Hygon)**:输出可能包含"Hygon"或特定型号如"Hygon C86"(基于x86架构),常用于国产服务器[^3]。 - **飞腾(Phytium)**:输出通常包含"Phytium"或"FT-"前缀(例如:"Phytium FT-2000"),是ARM架构CPU[^2][^3]。 - **龙芯(Loongson)**:输出可能包含"Loongson"或"Loongarch"字样(例如:"Loongson-3A5000"),是基于MIPS或LoongArch架构的国产CPU[^2][^3]。 - **其他情况**:如果不匹配以上关键词,输出可能显示"Intel"、"AMD"或其他品牌,表明非国产平台。 **示例输出判断**: - 如果输出为:`Kunpeng 920` → 平台为鲲鹏。 - 如果输出为:`Loongson-3A5000` → 平台龙芯。 - 如果输出为:`Hygon C86 7280` → 平台海光。 - 如果输出为:`Phytium FT-2500` → 平台飞腾。 #### 3. **补充说明** - **为什么使用此命令?** `/proc/cpuinfo`是Linux内核提供的虚拟文件,直接反映了CPU硬件信息。命令基于引用[3]的建议,可靠且兼容大多数Linux发行版(包括银河麒麟、统信UOS等国产系统)。 - **备选命令**: - 使用`lscpu`命令查看摘要信息:运行`lscpu | grep "Model name"`,输出更简洁但可能缺少详细型号。 - 对于ARM平台(鲲鹏/飞腾),可运行`uname -m`检查硬件架构:输出`aarch64`可能表示ARM平台(需配合型号确认)。 - **注意事项**: - 命令需要root或普通用户权限(无需sudo)。 - 输出可能因系统版本或CPU型号差异而略有不同,建议结合多个命令交叉验证。 - 在国产系统如银河麒麟或统信UOS中,这些命令同样适用,因为这些操作系统已优化支持鲲鹏、飞腾国产CPU[^2][^5]。 通过运行以上命令,您可以快速判断硬件平台类型。如有疑问,请参考系统文档或硬件规格。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值