基于PCIe的智能处理系统研究

引言

人工智能是集合众多方向的综合性学科,在诸多应用领域均取得了显著成果。随着航空领域人工智能技术研究的不断深入,面向开放式机载智能交互场景,人工智能的应用可解决诸多问题。例如智能感知、辅助决策等,可利用人工智能算法对多源传感器捕获的海量信息进行快速处理,仅将处理后的感知结果反馈给飞行员,从而降低飞行员的任务负荷;利用人工智能算法开展航路规划、应激决策等多种智能辅助任务,帮助飞行员做出最优决策。基于飞行决策的及时性、实时性要求,大带宽、高性能和高效率特性已经成为智能处理模块的高速数据传输总线的基本要求。

PCIe是第三代高性能串行互联高速总线,它具有传输速度快、节点独享带宽、可灵活扩展等诸多优点,同时支持PCIe协议交换芯片多端口的特性使其在数据传输上打破了以往单一的传输方式,将多个具有PCIe接口的设备相互连接,即实现网状的拓扑结构,使得各挂载的设备可以自由通信。

本文介绍了一种智能处理系统及其硬件设计,该设计以PCIe为主要通信总线,连接处理板卡、智能板卡、FC板卡,PCIe交换芯片作为通信的桥梁,能够可靠地执行各主从设备间数据互通工作,稳定高效地完成信息收发、通用处理、智能运算等工作,已在航空领域得到了验证及应用。

1 PCIe总线介绍

PCIe总线是目前主流的高速数据传输总线,采用由Intel于1997年提出的第3代I/o互联标准,是一种已得到广泛应用的成熟总线技术。

PCIe由分层的体系结构组成,由下至上依次为物理层(Physical Layer,PHY)、数据链路层(Data Link Layer,DL)、事务层(Transaction Layer,TL)。PCIe总线通过数据包传送的形式实现数据收发。TLP(Transaction Layer Packet)的包头用于区分事务种类及确定当前TLP的路由信息等一系列信息。传输过程中的信息都需以该数据包的格式进行封装,但其中只有TLP头与有效数据载荷是由用户层进行添加的,其余内容由数据链路层以及PCIe物理层额外添加至TLP上。PCIe统一的TLP传输模式保证了数据传输的稳定性和完整性。

PCIe总线采用差分LVDS串行方式进行数据传输,由两对LVDS差分信号线完成一条链路的接收和发送。

PCIe通信采用点—点的传输技术,能够为系统内设备安排独立的通道,充分保障通信带宽,提高传输速率。

同时,PCIe通信可以实现设备的并行工作,数据通道可以根据具体需要配置成×1、×2、×4等线宽,具备很好的灵活性,满足不同设备不同线宽的通信要求。

2系统结构

智能处理模块应用于航空领域的方向可分为感知类智能算法和决策类智能算法,模块主要根据具体软硬件需求开展智能处理工作。基于上述两类应用,智能处理模块可提供神经网络类算法的专用智能处理能力、多线程并行运行的通用处理能力、数据传输能力等基础能力,支撑两类算法的应用要求。

智能处理模块提供通信节点、通用计算节点和智能计算节点。通信节点由FPGA和光电器件组成,负责模块和整机中其他模块之间的通信互联;通用计算节点由多核CPU组成,完成复杂通用计算任务;智能计算节点由大规模FPGA组成,提供足够的计算能力及存储容量,能够满足智能计算处理能力要求。智能处理模块架构如图1所示。

模块内部采用PCIe网络交换结构,各关键节点均连接在PCIe交换网络上,通过PCIe交换网络进行模块间的数据通信。典型应用数据处理流程如下:数据经通信板卡处理后,由PCIe将数据发送给智能板卡的处理内核,处理内核进行响应和资源管理,并将数据转发给智能板卡的逻辑资源进行智能计算,计算结果返回给通用处理器芯片进行处理,最后结果经通信板卡发出。

3硬件设计

智能处理模块主要由智能、处理、通信三个板卡组成。智能板卡包括两个智能处理器+FPGA,主要实现深度神经网络加速处理以及通信板卡的配置和管理;处理板卡设计两个CPU处理器,主要实现复杂通用计算任务;设计一个PCIe交换芯片,用于模块内部各节点之间高速通信;通信板卡采用FPGA实现通信逻辑,实现对外通信。

智能处理模块的内部通信主要由PCIe总线完成,通过PCIe交换电路实现专用智能节点挂接通信节点,以及智能计算节点和通用计算节点之间互联。PCIe交换功能电路可采用PEX8748芯片实现,PEX8748是一个12端口、48线PCI Express 3.0的总线交换机,单通道最高可支持8.0 GT/s的通信速率。

PEX8748可实现多种配置模式,能够根据具体需求自由设置为上下行模式及多种端口组合,如图2所示。

PEX8748会检测STRAP-TESTMODE0[0:2]来确定运行模式,其中[0,0,0]为BASE MODE,具体设置为BASEMODE,即一主多从的模式;PEX含有3个station,每个station含16lane,由STRAP-STN[0:2]-PORTCFG[0:1]进行端口数目与宽度配置。

智能处理模块中PEX8748配置多个4X通道,用于连接通用处理节点、智能计算节点和通信节点,如图3所示。

其中智能计算节点接PEX8748的RC上行端口,另一个智能计算节点、通用处理节点和通信节点接PEX8748的EP下行端口。通用计算节点和智能计算节点接口线速率配置为5 Gb/s,通信节点线速率配置为2.5 Gb/s。

4系统测试

在实际应用中,重点测试系统内部的6个PCIe节点的通信功能,对各个节点之间是否能够传输及传输的正确性进行验证。

具体测试方法为:

1)测试设备向CPU发送“PCIe配置测试”指令,随后测试设备接收各节点发送的PCIe链路状态及线宽寄存器结果,各寄存器参数读取与预期一致,说明节点配置正常。

2)CPU通过PCIe接口将数据发送至另一个CPU的BAR空间,然后从BAR空间中将数据读回,对比发送数据和读回数据是否一致,如一致则测试通过。

3)CPU针对通用计算节点及智能计算节点“PCIe接收通信测试”指令,进行PCIe的Direct IO包的读写测试,在1 s时间内连续进行读访问,测试PCIe的读访问带宽,并将带宽发送给测试设备判断读访问带宽是否合格。

4)CPU针对通用计算节点及智能计算节点“PCIe接收通信测试”指令,进行PCIe的Direct IO包的读写测试,在1 s时间内连续进行写访问,测试PCIe的写访问带宽,并将带宽发送给测试设备判断写访问带宽是否合格。

5结束语

本文提出了一种基于PCIe接口的智能处理系统,该系统基于CPU十FPGA的异构融合结构设计,通用处理节点基于高性能多核CPU设计,提供两个通用处理节点和两个智能处理节点,并通过对外通信接口实现外部交互。系统通过PCIe交换电路完成内部数据通信,通用计算节点和智能计算节点接口线速率配置为5 Gb/s。该系统为应用于航空领域的人工智能系统,可实现飞行过程中的智能感知、辅助决策等任务。

文中对该智能处理系统的整体架构进行了详细描述,介绍了系统中PCIe总线的工作模式及其内部信号的数据流,并从硬件角度阐述了系统核心电路的设计思路,重点分析了PCIe总线的使用及其优越性。

该架构适用于高性能和高效率的智能处理系统,已成功应用于某机载智能处理模块,对相关领域应用具有一定的参考价值和借鉴意义。

PCIe插槽的光纤网卡推荐

家用光纤网卡:连接未来的高速通道

在这个数字化飞速发展的时代,一个稳定且高速的网络连接已经成为每个家庭必不可少的一部分。今天,我想向大家推荐一款来自我们家的光纤网卡——intel X520,它不仅具备卓越的性能,更以其用户友好的设计,成为家庭网络的理想选择。

高效的性能

ADOPintel X520光纤网卡支持最新的网络标准,能够提供高达10Gbps的传输速度,让高清视频流、大型文件下载和在线游戏变得更加流畅。它采用了先进的芯片组和高质量的光模块,确保了信号的稳定传输和最小的延迟。

易于安装

我们深知,复杂的安装过程会让很多用户望而却步。因此,ADOPintel X520光纤网卡设计了简便的安装流程。即使是没有技术背景的用户,也能够轻松地将网卡安装到主板上的PCIe插槽,并快速开始使用。

兼容性强

无论您的家庭网络环境如何,ADOPintel X520光纤网卡都能够提供兼容性支持。它不仅适用于多种类型的光纤网络,还能够与多数现代主板上的PCIe插槽无缝对接。

性价比高

我们相信,高质量的产品并不意味着高昂的价格。ADOPintel X520光纤网卡以其合理的价格和卓越的性能,提供了非常高的性价比。它是家庭网络升级的理想选择,也是对未来投资的明智决策。

结语

选择ADOPintel X520光纤网卡,意味着选择了一个高速、稳定、易于使用且价格合理的网络解决方案。它将为您的家庭网络带来前所未有的体验,让您在享受数字化生活的同时,也能感受到技术带来的便捷。

 前沿驱动创新,光学创造未来,ADOP与您精彩前行!🚀

 ADOP - 前沿光学科技有限公司

 

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

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

相关文章

Go语言异常处理方式

Go 语言没有传统的异常处理机制,如 Java、C 或 Python 中的 try-catch 语句。取而代之,Go 采用了基于返回错误值和 panic/recover 机制的混合模式来进行错误处理。以下是 Go 语言中处理异常(或称错误)的两种主要方式: …

【8086汇编】汇编语言基础入门

文章目录 一、汇编简介1. 汇编语言的组成2. CPU、寄存器、内存3. CPU对存储器的读写4. 拓展5. 检测6. 解析 二、寄存器1. mov、add命令2. 物理地址3. CS:IP 装段地址和偏移地址3.1 如何改变CS:IP的值 4. 数据段DS:[address]4.1 前置知识:字与字节4.2 DS:[address] 5…

[EFI]Z420电脑 Hackintosh 黑苹果efi引导文件

硬件型号驱动情况主板 Hewlett Packard Z420 Workstation处理器Intel Xeon E5-1650v2已驱动内存8GB 2133MHz DDR4 * 2已驱动硬盘闪迪 1T M.2 NVMe SSD已驱动显卡RX 480已驱动声卡ALC已驱动网卡Intel Ethernet Connection I219-V无线网卡蓝牙博通 BCM94360Z4 已驱动 支持系统版本…

整数在内存中的存储和内存操作函数

目录 整数在内存中的存储1. 整数在内存中的存储2. 大小端字节序和字节序判断2.1 什么是大小端?2.2 为什么有大小端 3. 练习3.1 请简述大端字节序和小端字节序的概念,设计⼀个小程序来判断当前机器的字节序。(10分)-百度笔试题3.2 练习23.3 练…

每日三道面试题之 Java并发编程 (三)

1.什么是上下文切换? 在Java线程知识中,上下文切换是指操作系统在多任务环境下,为了实现多任务的并行执行,需要在运行一个任务(如一个线程或进程)时切换到另一个任务运行的过程。上下文切换是多任务操作系统的核心特…

java:特殊文件(properties,xml)和日志

特殊文件 txt(文本文件) txt文件是一种纯文本文件,用于存储文本信息 优缺点:txt文件简单易用,可以使用任何文本编辑器打开和编辑,但不支持数据类型和结构,所有信息均用纯文本形式保存 适合简单的配置信息存储 properties文件 properties文件是一种键值对文件,用于存储配置…

从零自制docker-10-【cgroup进行容器资源限制】

文章目录 目的导入包的相关公开原则当前进程的挂载信息deferfor scanner.Scan()判断字符串包含新建的cgroup的默认文件cpu相关配置对应到ubuntu 22.04版本的cpu相关配置top注意查看你可使用的cpu注意坑启动后的top查看显示进程使用的cpu序号代码结果 目的 启动容器时通过-mem、…

《每天十分钟》-红宝书第4版-对象、类与面向对象编程(七)

类 之前的几个继承模式,只使用 ECMAScript 5 的特性来模拟类似于类(class-like)的行为。不难看出,各种策略都有自己的问题,也有相应的妥协,而且代码又丑又长。 为了解决这些问题,ECMAScript 6 …

JAVA集合(学习)

1.Java集合框架体系图 集合框架Collection单列集合List 有序,可重复Vector 数组结构,线程安全ArrayList 数组结构,非线程安全LinkedList 链表结构,非线程安全Set 无序,唯一HashSet 哈希表结构LinkedHashSet 哈希表…

Spring Bean作用域

Sping中bean的scope的值可以是singleton、prototype、request、session、global session。默认情况下是singleton。只有在web容器中才能使用request、session、global session。 singleton:单例模式,spring容器中有且仅有一个对象,init方法在创建容器时仅执行一次。关闭容器…

简单几步启用Ubuntu root用户密码登录

Ubuntu默认登录用户为ubuntu,且禁用了root用户使用密码方式登录。 若要开起root用户登录,只需要以下几步: 1.使用ubuntu用户登录Linux服务器。 2.使用sudo修改root用户密码。 sudo passwd root 输入新设置的root用户密码,此时…

Mac下Homebrew更新国内源brew update卡死(完美解决)

先更新下brew 有时brew版本太旧也会有问题 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 再更新国内源 #更新Homebrew cd "$(brew --repo)" git remote set-url origin https://mirrors.ustc…

jvisualVM分析jvm内存使用快照dump

服务发生内存溢出,就需要查看服务器上Java服务的jvm堆内存使用情况,可以使用dump命令生成dump文件,然后下载到本地,然后使用jvisualVM工具打开,即可实现可视化分析。 生成dump文件常用的两种方式: 第一种…

6-138 大整数相加

本题要求实现一个函数,实现大整数相加运算。大整数按每4位保存在整数数组中,如果大整数位数不是4的倍数,则将保证低位都按4位一存。如“123456789”保存为1,2345,6789。 函数接口定义: int convert(char a[],int x[]); int add(int x[],int len1,int y[],int len2,int …

[react] useState的一些小细节

1.无限循环 因为setState修改是异步的,加上会触发函数重新渲染, 如果代码长这样 一秒再修改,然后重新触发setTImeout, 然后再触发,重复触发循环 如果这样呢 还是会,因为你执行又会重新渲染 2.异步修改数据 为什么修改多次还是跟不上呢? 函数传参解决 因为是异步修改 ,所以…

代码随想录算法训练营第三十六天| 435. 无重叠区间、 763.划分字母区间、56. 合并区间

435 题目: 给定一个区间的集合 intervals ,其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。 题目链接:435. 无重叠区间 - 力扣(LeetCode) 思路: …

Nacos 入门篇---服务端如何处理客户端的服务注册请求?(三)

一、引言 ok呀,上个章节我们讲了Nacos客户端的服务自动注册,今天我们来看看服务端接收到了客户端的服务注册请求,服务端都做了哪些事情~ 二、目录 目录 一、引言 二、目录 三、回顾上节内容: 四、Nacos 服务代码入…

工作流引擎项目解析(二)

流程变量设置于获取 Activiti--流程变量_runtimeservice.setvariable-CSDN博客 Process Variables | docs.camunda.org 设置 启动时设置任务完成时设置runtimeService.setvars…()taskservice.setvars…() ProcessEngine processEngine ProcessEngines.getDefaultProcessEn…

python项目练习——24、线旅游预订系统

用户管理功能: 用户注册:用户可以填写用户名和密码进行注册。用户登录:注册过的用户可以使用用户名和密码登录系统。用户资料管理:用户可以查看和编辑自己的个人资料。旅游产品管理功能: 产品列表展示:展示可预订的旅游产品列表。产品搜索:用户可以根据关键字、目的地、…

Nginx 基础应用实战 04 在公网配置配置HTTPS

Nginx 基础应用实战 04 在公网配置配置HTTPS Nginx配置 server {listen 443 ssl;server_name aa.abc.com;ssl_certificate /data/cert/server.crt;ssl_certificate_key /data/cert/server.key;}免费签名 https://freessl.cn 阿里云 腾讯云 Nginx配置 serve…