全新Linux教程-驱动大全-PCI和PCIe子系统-P4从软件的角度看pcie硬件结构

server/2024/10/19 23:49:14/

注释:了解pcie的硬件接口,lanes,link,串行,并行,包结构

1、PCIe硬件接口引脚

通过差分信号TX+ TX-和RX+ RX-信号发生接收数据。这4条信号称为一个lane。每个方向两条线来传输。在1个lane里面有发送和接收两个方向。两个PCIE设备之间称为1个link。下图是pcie硬件结构引脚电路示意图。回顾之前的pci接口引脚电路图,发现具有的引脚明显比较多,有AD0-AD31等。随着时钟频率的增加,并行引脚会引入很多问题,因此引入串行引脚的设计方式。

PCIE接口的引脚是并行的。PCIe的是串行的。每个方向的数据使用2条差分信号来传输,发送接收两个方向就需要4条线,这被称为1个lane。

一般PCIe设备的接口,可以有多个lane。

  • 两个PCIe设备之间一个link。
  • 一个link中有1对或者多对发送接收引脚,其中每对引脚称为一个lane
  • 一个lane:有发送、接收两个方向,每个方向用2条查分信号线,所以1个lane有4条线
  • 一个link最多可以有32lane。

PCI和PCIe进行传输的时候对比,由于PCI上可以通过AD总线发送地址和,而在PCIE上需要使用串行将多个信息组成包的形式发送出去。对于CPU一侧编程来说,不需要关心是PCI或者pcie,电信号的发送都是有RC来处理。

2、从软件角度理解硬件接口

2.1 PCI/PCIe地址空间转换

CPU发出的地址会经过桥转换成PCIe空间的地址。在PCI中地址和数据通过并行发送给设备,现在pcie中通过串行信号线发送。此时信号线上包括地址和数据。如何区分呢?相当于组报文的形式规则。

2.2 PCIe上如何传输地址、数据

既然PCIE是串行的,那只能在包里传输地址和数据了。

  • 需要定义包的格式:类型(Mem R/W) + 地址 + 数据
  • 包怎么传递给对方、怎么确保不出错?有重传机制、有检验码
  • 包怎么通过差分线传送出去?

PCIe总线的层次结构和数据包:

  • 事务层Trasaction layer:传输的是TLP(transaction layer packet)。一般只有头部+原始数据+CRC组成。头部又包括读类型,读地址等等。
  • 数据链路层:传输的是DLLP(data link layer packet)。一般是在TLP上加头(序列号)加尾(CRC校验)得到。
  • 物理层(physical layer):传输的是物理包。一般是在DLLP上加头加尾得到。

3、PCIe系统硬件框图

先对比了之前学习的PCI设备, PCI上桥可以挂多个设备,但是在PCIe中,只能挂1个pcie设备。

在PCIe系统里,是点对点传输的:

  • 一条PCIe总线只能接一个PCIe设备(相当于Root Complex内部有多个P2P的桥-他们也有自己的BDF,也可以理解为一个设备)
  • 要接多个PCIe设备,必须使用Switch进行扩展
  • PCIe设备的配置流程和PCI设备的基本相似:先去配置每个设备的地址访问,也就是向他的寄存器中写明需要占用多大的空间,后面CPU发出的地址设备就能判断是否属于自己的地址,然后做出反馈。


http://www.ppmy.cn/server/3837.html

相关文章

JS走马灯小功能制作

HTML代码&#xff1a; <div id"contain"><div id"content"> 作文&#xff0c;怎样才能写好&#xff1f;作文&#xff0c;好于勤读&#xff0c;作文&#xff0c;优于真情。作文一词&#xff0c;汇于欲要看究竟&#xff0c;处处细留心。作文于此…

【力扣 | 分享】高频 SQL 50 题(基础版)

题单 查询可回收且低脂的产品寻找用户推荐人大的国家文章浏览 I无效的推文 连接使用唯一标识码替换员工ID产品销售分析 I进店却未进行过交易的顾客上升的温度每台机器的进程平均运行时间员工奖金学生们参加各科测试的次数至少有5名直接下属的经理确认率有趣的电影平均售价项目员…

OpenCV基本图像处理操作(五)——图像数据操作

数据读取 cv2.IMREAD_COLOR&#xff1a;彩色图像cv2.IMREAD_GRAYSCALE&#xff1a;灰度图像 import cv2 #opencv读取的格式是BGR import matplotlib.pyplot as plt import numpy as np %matplotlib inline imgcv2.imread(cat.jpg)数据显示 #图像的显示,也可以创建多个窗口 c…

设置表格高度后,数值改变但实际不变

1.选中表格 2.点击“开始”——>“段落设置”的选项启动按钮&#xff0c;设置为单倍行距 3.可以看到&#xff0c;表格的行高被调小了。

每日三个JAVA经典面试题(四十一)

1.解释锁的粒度对性能的影响。 锁的粒度指的是在并发编程中对共享资源进行保护时&#xff0c;所采用的锁的大小或范围。锁的粒度可以分为粗粒度锁和细粒度锁两种。 粗粒度锁&#xff1a;粗粒度锁指的是对整个数据结构或整个资源进行加锁。当一个线程需要访问共享资源时&#x…

kkFileView基于pdf.js实现多词高亮

参考文档&#xff1a; 1.文件文档在线预览转换解决方案和应用 2.kkfileview预览pdf格式文件&#xff0c;实现多关键词高亮和定位_kkfileview高亮方案-CSDN博客 3.PDF.js实现搜索多个不同的关键词高亮显示效果 最终效果&#xff1a; 需求描述&#xff1a; 预览文件时&#xff0…

WPS的JS宏如何实现全文件路径字符串中截取文件名(excel)

从全文件路径的字符串中&#xff0c;截取文件名称&#xff0c;例如&#xff1a; 全文件路径字符串为&#xff1a;C:\Windows\System32\drivers\acpi1.sys 需要截取文件名&#xff1a;acpi1.sys 方法如下&#xff1a; 1、简单的方式&#xff1a;把全文件路径字符串拷贝&…

武汉星起航:引领跨境电商新潮流,一站式孵化助力卖家轻松出海

武汉星起航电子商务有限公司&#xff0c;作为跨境电商领域的领军者&#xff0c;始终秉持“走出去”的战略理念&#xff0c;依托自营店铺的丰富经验和对跨境电商资源的深度整合&#xff0c;成功打造了一站式卖家孵化体系。这一体系集开店策划、运营教学、资源服务于一体&#xf…