CN112527706B - 一种服务器cpu适配pcie板卡的方法 - Google Patents
一种服务器cpu适配pcie板卡的方法 Download PDFInfo
- Publication number
- CN112527706B CN112527706B CN202011399497.0A CN202011399497A CN112527706B CN 112527706 B CN112527706 B CN 112527706B CN 202011399497 A CN202011399497 A CN 202011399497A CN 112527706 B CN112527706 B CN 112527706B
- Authority
- CN
- China
- Prior art keywords
- pcie
- board card
- pcie board
- server cpu
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种服务器CPU受PCIE MSIX中断数目限制而无法适配PCIE板卡的解决方法,包括重构PCIE驱动的中断处理部分,减少PCIE板卡的MSIX中断申请数目;重新编译PCIE驱动,生成相应的PCIE驱动模块;服务器CPU载入PCIE驱动模块生成PCIE驱动,利用生成的PCIE驱动初始化PCIE板卡;利用PCIE板卡测试程序测试安装服务器CPU上的PCIE板卡,得到PCIE板卡测试程序与PCIE板卡通信的最终结果,完成服务器CPU与PCIE板卡的适配。本发明提供的服务器CPU受PCIE MSIX中断数目限制而无法适配PCIE板卡的解决方法,实现PCIE板卡与服务器CPU的完全适配。
Description
技术领域
本申请属于服务器适配技术领域,具体涉及一种服务器CPU受PCIE MSIX中断数目限制而无法适配PCIE板卡的解决方法。
背景技术
人工智能是引领新一轮科技革命和产业变革的战略技术。当前市面上人工智能系统大多数用的是X86服务器+英伟达GPU来实现。然而人工智能系统中存在的问题是部分CPU服务器由于本身硬件和驱动软件的设计问题,无法适配一些PCIE AI加速卡;而PCIE AI加速卡产商本身也没有适配这部分CPU服务器的方案。
MSI(Message Signaled Interrupts)是PCI2.2中提出来的一种新的中断形式,后续有MSIX扩展。MSI以及MSIX中断形式带来的最主要的好处就是脱离了传统interruptspin的约束,中断数目得到了很大的扩展。MISX理论上支持2048个中断数目。但是目前部分CPU服务器由于本身硬件和驱动软件的设计问题,无法达到最大数目的支持。导致一些对PCIE MSIX中断数目需求大的板卡无法在服务器上正常使用。
服务器和板卡无法适配的问题影响人工智能的发展,面对严峻形势,市场急需用一套国产化设备,来实现自主可控的人工智能方案。本申请填补了这方面的空白,解决由于PCIE MSIX中断数目不匹配引起的无法适配的问题。
发明内容
本申请的目的在于提供一种服务器CPU适配PCIE板卡的方法,实现PCIE板卡与服务器CPU的完全适配。
为实现上述目的,本申请所采取的技术方案为:
一种服务器CPU适配PCIE板卡的方法,所述服务器CPU适配PCIE板卡的方法,包括:
步骤1、重构PCIE驱动的中断处理部分,减少所述PCIE板卡的MSIX中断申请数目;
步骤2、重新编译所述PCIE驱动,生成相应的PCIE驱动模块;
步骤3、所述服务器CPU载入所述PCIE驱动模块生成PCIE驱动,利用生成的PCIE驱动初始化PCIE板卡;
步骤4、利用PCIE板卡测试程序测试安装服务器CPU上的PCIE板卡,得到PCIE板卡测试程序与PCIE板卡通信的最终结果,完成服务器CPU与PCIE板卡的适配。
作为优选,所述重构PCIE驱动的中断处理部分,减少所述PCIE板卡的MSIX中断申请数目,包括:
步骤1.1、去除PCIE驱动的中断处理部分中DEBUG信息的中断;
步骤1.2、采用共享中断原理,合并消息机制中的相似功能中断。
作为优选,所述服务器CPU增加共享中断处理函数,所述共享中断处理函数接收到合并有相似功能中断的消息时,先读取该消息的信息头部,识别信息头部中带有的消息类别ID,判断消息中各相似功能中断的消息来源。
作为优选,所述PCIE板卡初始化后,服务器通过lspci查看PCIE板卡的设备信息。
作为优选,所述PCIE板卡缩减后的中断数目在服务器CPU的最大PCIE MSIX中断数目之内。
本申请提供的服务器CPU适配PCIE板卡的方法,通过修改PCIE板卡侧的驱动代码降低板卡对MSIX中断数目的需求,使中断数目在服务器CPU能够提供的数目范围内,从而达到PCIE板卡在服务器上完全适配;并且本申请提供的解决方法,对PCIE板卡的影响小,修改过程简单,仍能保证PCIE板卡的正常运行。
附图说明
图1为本申请提供的PCIE板卡的一种实施例中断原理流程图;
图2为实施例1中的服务器CPU适配PCIE板卡的方法的流程图以及原有无法适配情况下的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是在于限制本申请。
其中一个实施例中,一种服务器CPU适配PCIE板卡的方法。如图1所示,PCIE板卡的中断原理为:PCIE设备(例如PCIE板卡)产生一条memeory写操作,通过PCIE总线往服务器CPU的CPU中断触发寄存器里写一条数据。
在实际应用中,目前部分CPU服务器PCIE由于仅仅支持256个MSIX中断,而目前一些PCIE板卡原生驱动代码需要464个,所以两者无法进行适配。
而本实施例提供的解决方法可解决目前的适配问题,以降低服务器CPU与PCIE板卡的匹配限制,保证两者的正常运行。
本实施例的服务器CPU适配PCIE板卡的方法,包括一下步骤:
步骤1、重构PCIE驱动的中断处理部分,减少所述PCIE板卡的MSIX中断申请数目。
本实施例中以pci_enable_msix_range(struct pci_dev*dev,struct msix_entry*entries,int minvec,int maxvec)为例说明中断处理部分,其参数minvec、maxvec范围必须在服务器CPU PCIE MSIX最大中断数目之内。
重构PCIE驱动的中断处理部分实现过程简单,且重构可靠性高,在一实施例中,提供的具体重构操作包括:
步骤1.1、去除PCIE驱动的中断处理部分中DEBUG信息的中断。
步骤1.2、采用共享中断原理,合并消息机制中的相似功能中断。
采用以下两种操作,可有效减少PCIE板卡的中断数目,并且保证PCIE板卡的正常运行。由于合并相似功能中断后,一个消息可能包括多个中断,而针对不同的中断需具有不同的响应,故通过PCIE板卡发过来的信息头部来区分消息,而不是纯粹用中断来区分消息来源,具体为:
服务器CPU增加共享中断处理函数,共享中断处理函数接收到合并有相似功能中断的消息时,先读取该消息的信息头部,识别信息头部中带有的消息类别ID,判断消息中各相似功能中断的消息来源。
步骤2、重新编译所述PCIE驱动,生成相应的PCIE驱动模块。本实施例提供的一种重新编译的命令如下:
make ARCH=sw_64CROSS_COMPILE=sw_64sw6-sunway-linux-gunu-KERNEL_DIR=/usr/src/linux
步骤3、服务器CPU载入所述PCIE驱动模块生成PCIE驱动,利用生成的PCIE驱动初始化PCIE板卡。为了保证板卡信息的准确性,在PCIE板卡初始化后,服务器可以通过lspci查看PCIE板卡的设备信息,当然也可以通过其他方式进行查看。
需要说明的是,lspci应理解为一个用来显示系统中所有PCI总线设备或连接到该总线上的所有设备的工具。
步骤4、利用PCIE板卡测试程序测试安装服务器CPU上的PCIE板卡,得到PCIE板卡测试程序与PCIE板卡通信的最终结果,完成服务器CPU与PCIE板卡的适配。
最后采用测试程序验证服务器CPU与PCIE板卡是否匹配,保证后续的正常使用,在一实施例中,采用测试程序测试后,在result_files目录下,生成最终结果文件:davinci_ILSVRC2012_val_000XXXXX.txt,该文件里包含测试程序和PCIE板卡通信的最终结果信息。
需要说明的是,PCIE板卡测试程序不作为本申请的改进重点,采用现有的测试程序,不再进行赘述。
为了便于对本实施例的服务器CPU适配PCIE板卡的方法的理解,通过以下实施例进一步说明。
实施例1
本实施例以申威服务器CPU无法适配A PCIE AI加速卡来进一步详细说明。
本实施例中设定A PCIE AI加速卡采用4颗海思Ascend 310AI处理器,是标准的PCIE HHHL卡。若厂家在linux操作系统下只适配过X86 CPU和其自己生产的ARM CPU,并未涉及其它所有CPU适配。
若A PCIE驱动代码中MSIX的中断数目需要464个,而申威服务器CPU由于MSIX中断数目最多只支持256个,所以无法适配A PCIE AI加速卡。本实施例的解决方法通过修改APCIE驱动代码,使得MSIX降到少于256个,从而在申威服务器CPU中断能力范围内,保证能够完全的适配A PCIE AI加速卡。
如图2所示,本实施例提供解决方法具体实施步骤如下:
步骤1、采用的A PCIE AI加速卡软件包是A_ubuntu.x86_1.0.8.zip,按照手册说明在x86 PC机ubuntu系统上,安装A PCIE AI加速卡软件包。
步骤2、在步骤1的基础上,找到位于source目录下PCIE驱动部分代码,修改dev_core,dev_inc,dev_plat目录下,对应的MSIX中断相关部分的代码。分析代码,首先去掉DEBUG信息的中断,由于A PCIE AI驱动代码通过宏DEVDRV_MSI_X_MIN_VECTORS可以修改中断数目,根据代码分析,数字越大的MSIX中断号使用权重越小,可以通过修改宏DEVDRV_MSI_X_MIN_VECTORS来减少中断数目。
合并传递消息部分的MSIX中断部分,把DEVDRV_MSG_MSIX部分的中断进行合并,通过共享中断方法,使用同一个MSIX中断。并添加新的共享中断处理函数devdrv_msg_share_int,来处理共享中断的处理,通过读取消息头部中断消息ID来判断中断源。
通过以上处理可以精简MSIX中断申请数目到180个。达到申威服务器最大的256个MSIX中断之内。
步骤3、在步骤2的基础上,修改A PCIE AI加速卡代码工程的Makefile,用申威提供的交叉编译器替换原有的x86平台编译器,重新编译工程代码。最终在out/release_images目录生成相应的驱动模块:drv_devmng_host.ko、drv_pcie_hdc_host.ko、drv_pcie_host.ko、drv_pcie_vnic_host.ko、drv_pcie_seclib_host.ko。
步骤4、在申威服务器上搭建A PCIE AI加速卡运行的环境,包括一些脚本的配置,把相应的库和驱动模块拷贝到申威服务器上。
步骤5、在申威服务器上PCIE卡槽上插入A PCIE AI加速卡,利用驱动模块生成PCIE驱动,初始化A PCIE AI加速卡,并生成以下初始化成功打印:
device 0/1/2/3ready
devdrv_heart_beat_init succ,deivce run with heart beat.
***receive device ready info***
***ts fw load succeed,set device ready work***
以上打印消息表明A PCIE AI加速卡此时已经在申威服务器上正常工作。
在更改驱动代码前,申威服务器无法正常初始化A PCIE AI加速卡,在申威服务器上PCIE卡槽上插入A PCIE AI加速卡后,驱动运行出现以下错:
sw_arch_setup_msix_irqs
there is no available bit in int_stat for pcie msi interrupt.cpu_dest=1,host=0
[drv_pcie][devdrv_init_interrupt_normal 353]vector_num-28
[drv_pcie][devdrv_init_interrupt_normal 353]devdrv_device_drvier:vector_num-28error。
通过本实施例的处理后,申威服务器能够正常初始化A PCIE AI加速卡,并且APCIE AI加速卡MSIX中断已经全部申请到。
步骤6、在以上所有步骤基础上,在步骤1中已经安装A PCIE AI加速卡软件包的X86 ubuntu系统的PC上,用resnet18测试程序源码,使用申威交叉编译器编译后,载入申威服务器运行,成功运行后,在result_files目录下,生成最终结果文件:davinci_ILSVRC2012_val_000XXXXX.txt,该文件里包含测试程序和PCIE板卡通信的最终结果信息。
本实施例的服务器CPU适配PCIE板卡的方法,通过修改PCIE板卡侧的驱动代码降低板卡对MSIX中断数目的需求,使中断数目在服务器CPU能够提供的数目范围内,从而达到PCIE板卡在服务器上完全适配;并且本申请提供的解决方法,对PCIE板卡的影响小,修改过程简单,仍能保证PCIE板卡的正常运行。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (4)
1.一种服务器CPU适配PCIE板卡的方法,其特征在于,所述服务器CPU适配PCIE板卡的方法,包括:
步骤1、重构PCIE驱动的中断处理部分,减少所述PCIE板卡的MSIX中断申请数目,所述PCIE板卡缩减后的中断数目在服务器CPU的最大PCIE MSIX中断数目之内;
步骤2、重新编译所述PCIE驱动,生成相应的PCIE驱动模块;
步骤3、所述服务器CPU载入所述PCIE驱动模块生成PCIE驱动,利用生成的PCIE驱动初始化PCIE板卡;
步骤4、利用PCIE板卡测试程序测试安装服务器CPU上的PCIE板卡,得到PCIE板卡测试程序与PCIE板卡通信的最终结果,完成服务器CPU与PCIE板卡的适配。
2.如权利要求1所述的服务器CPU适配PCIE板卡的方法,其特征在于,所述重构PCIE驱动的中断处理部分,减少所述PCIE板卡的MSIX中断申请数目,包括:
步骤1.1、去除PCIE驱动的中断处理部分中DEBUG信息的中断;
步骤1.2、采用共享中断原理,合并消息机制中的相似功能中断。
3.如权利要求2所述的服务器CPU适配PCIE板卡的方法,其特征在于,所述服务器CPU增加共享中断处理函数,所述共享中断处理函数接收到合并有相似功能中断的消息时,先读取该消息的信息头部,识别信息头部中带有的消息类别ID,判断消息中各相似功能中断的消息来源。
4.如权利要求1所述的服务器CPU适配PCIE板卡的方法,其特征在于,所述PCIE板卡初始化后,服务器通过lspci查看PCIE板卡的设备信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011399497.0A CN112527706B (zh) | 2020-12-02 | 2020-12-02 | 一种服务器cpu适配pcie板卡的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011399497.0A CN112527706B (zh) | 2020-12-02 | 2020-12-02 | 一种服务器cpu适配pcie板卡的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112527706A CN112527706A (zh) | 2021-03-19 |
CN112527706B true CN112527706B (zh) | 2022-04-22 |
Family
ID=74998265
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011399497.0A Active CN112527706B (zh) | 2020-12-02 | 2020-12-02 | 一种服务器cpu适配pcie板卡的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112527706B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7325084B1 (en) * | 2006-01-03 | 2008-01-29 | Emc Corporation | Messages signaling interrupt (MSI) processing system |
CN103761129A (zh) * | 2014-01-13 | 2014-04-30 | 中南大学 | 一种在Bootloader层实现SDIO接口驱动的方法 |
CN106708536A (zh) * | 2017-01-12 | 2017-05-24 | 南京大学 | 一种中断驱动系统程序生成和分析方法 |
CN111949329A (zh) * | 2020-08-07 | 2020-11-17 | 苏州浪潮智能科技有限公司 | 基于x86架构的AI芯片任务处理方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020055921A1 (en) * | 2018-09-10 | 2020-03-19 | GigaIO Networks, Inc. | Methods and apparatus for high-speed data bus connection and fabric management |
-
2020
- 2020-12-02 CN CN202011399497.0A patent/CN112527706B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7325084B1 (en) * | 2006-01-03 | 2008-01-29 | Emc Corporation | Messages signaling interrupt (MSI) processing system |
CN103761129A (zh) * | 2014-01-13 | 2014-04-30 | 中南大学 | 一种在Bootloader层实现SDIO接口驱动的方法 |
CN106708536A (zh) * | 2017-01-12 | 2017-05-24 | 南京大学 | 一种中断驱动系统程序生成和分析方法 |
CN111949329A (zh) * | 2020-08-07 | 2020-11-17 | 苏州浪潮智能科技有限公司 | 基于x86架构的AI芯片任务处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112527706A (zh) | 2021-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Talebi et al. | Charm: Facilitating dynamic analysis of device drivers of mobile systems | |
US8566644B1 (en) | System and method for debugging a target computer using SMBus | |
US5579509A (en) | Apparatus and method for verifying compatibility of system components | |
US20040143814A1 (en) | Run-time verification of annotated software code | |
US10049029B1 (en) | Networked multi-interface host debugger | |
US20230297348A1 (en) | Method for operating second system application on first system, terminal device and storage medium | |
CN113868174B (zh) | 验证平台搭建方法、装置及存储介质 | |
CN115408371A (zh) | 一种redis数据库动态冗余部署方法和装置 | |
CN112527706B (zh) | 一种服务器cpu适配pcie板卡的方法 | |
CN116881929B (zh) | 安全防护方法、装置、电子设备以及基板控制器芯片 | |
CN111427617A (zh) | 数据处理方法、装置及设备 | |
WO2014000299A1 (zh) | 串口重定向处理方法、设备和系统 | |
CN116225541B (zh) | 一种带内cpu与带外管理bmc通信的方法及通信系统 | |
CN111443994A (zh) | 一种模拟智能卡驱动程序、信息交互系统及其工作方法 | |
US7788725B2 (en) | Method and system for probing FCode in problem state memory | |
CN115878267A (zh) | 对固件系统的仿真装置、方法、存储介质及电子设备 | |
US11763913B2 (en) | Automated testing of functionality of multiple NVRAM cards | |
CN111176735B (zh) | 一种心电图机启动加速方法 | |
CN117408060B (zh) | 整车模型仿真性能优化方法、存储介质和电子设备 | |
CN117408061B (zh) | 整车模型仿真性能优化系统及计算机装置 | |
KR102699488B1 (ko) | 통합형 데이터 통신 및 링크 제어 시스템, pc 처리 장치 및 이의 제어 방법 | |
CN118427147B (zh) | 基于eSPI的服务器主板的安全启动方法及相关设备 | |
CN117971583B (zh) | 一种存储颗粒的测试方法、系统、电子设备及存储介质 | |
US20220066911A1 (en) | Virtual machine for developing and testing target code for hardware designs | |
CN115756997A (zh) | 一种提升SoC或ASIC混合验证的数据传输速率的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |