[转]老男孩读PCIe之二:PCIe拓扑结构

来源: http://www.ssdfans.com/?p=3692 

 

"计算机网络的拓扑结构是引用拓扑学中研究与大小、形状无关的点、线关系的方法,把网络中的计算机和通信设备抽象为一个点,把传输介质抽象为一条线,由点和线组成的几何图形就是计算机网络的拓扑结构。"

计算机网络的最主要的拓扑结构有总线型拓扑、环形拓扑、树形拓扑、星形拓扑、混合型拓扑以及网状拓扑。

PCI采用的是总线型拓扑结构,一条PCI总线上挂着若干个PCI终端设备或者PCI桥设备,大家共享该条PCI总线,哪个人想说话,必须获得总线使用权,然后才能发言。下面是一个基于PCI的传统计算机系统:

 
图2.1

北桥下面的那根PCI总线,挂载了以太网设备、SCSI设备、南桥以及其他设备,他们共享那条总线,某个设备只有获得总线使用权才能进行数据传输。

而PCIe则采用树形拓扑结构,一个简单而又典型的PCIe拓扑结构如下:

 
图2.2

整个PCIe拓扑结构是一个树形结构,Root Complex(RC)是树的根。RC为CPU代言,与整个计算机系统其它部分通讯,比如CPU通过它访问内存,通过它访问PCIe系统中的设备。

CPU像皇上一样高高在上,而RC好比皇上身边当红的太监,皇上想叫下面的人做点事情,通过太监传达;下面的人也是通过太监,向皇上反应一些情况。不过,这个太监不寻常,它是有根(root)的。

RC的内部实现很复杂,PCIe Spec也没有规定RC该做什么,还是不该做什么。我们也不需要知道那么多,只需清楚:它一般实现了一条内部PCIe总线(BUS 0),以及通过若干个PCIe bridge,扩展出一些PCIe Port,如下图所示:

 
图2.3

PCIe Endpoint,就是PCIe终端设备,比如PCIe SSD,PCIe网卡等等,而Legacy Endpoint,接口是PCIe,但是内部的行为却和传统的PCI或者PCI-x一样(比如支持IO空间)。这些Endpoint可以直接连在RC上,也可以通过Switch连到PCIe总线上。Switch用于扩展链路,提供更多的端口用以连接Endpoint。拿USB打比方,我们计算机主板上提供的USB口有限,如果你要连接很多USB设备,比如无线网卡、无线鼠标、USB摄像头、USB打印机、U盘等等,这时候不够用,怎么办?我会去找马云,向它买个USB HUB,下面这个就不错:

 
图2.4

Switch扩展了PCIe端口,靠近RC的那个端口,我们叫上游端口(upstream port),而分出来的其他端口,我们叫下游端口(downstream port)。一个Switch只有一个上游端口,可以扩展出若干个下游端口。下游端口可以直接连接Endpoint,也可以连接Switch,扩展出更多的PCIe端口。

 
图2.5

对每个Switch来说,它下面的Endpoint或者Switch,都是归他管的:上游下来的数据,它需要甄别数据是传给它下面哪个设备,然后进行转发;下面设备向RC传数据,也要通过Switch代为转发的。因此,Switch的作用就是扩展PCIe端口,并为挂在它上面的设备(endpoint 或者switch)提供路由和转发服务。

每个Switch内部,也是有一根内部PCIe总线的,然后通过若干个Bridge,扩展出若干个下游端口,如下图所示:

 
图2.6

最后小结一下:

PCIe采用的是树形拓扑结构,RC是树的根,或者主干,它为CPU代言,与PCIe系统其它部分通讯,一般为通讯的发起者;Switch是树枝,树枝上有叶子(Endpoint),也可节外生枝,Switch上连Switch,归根结底,是为了连接更多的Endpoint。 Switch为它下面的Endpoint或Switch提供路由转发服务; Endpoint是树叶,诸如SSD,网卡,显卡等等,实现某些特定功能(function)。我们还看到有所谓的Bridge,用以将PCIe总线转换成PCI总线,或者反过来,不是我们要讲的重点,忽略之。PCIe与采用总线共享式通讯方式的PCI不同,PCIe采用点到点(Endpoint to Endpoint)通讯方式,每个设备独享通道带宽,速度和效率都比PCI好。

最后,以一个实际的计算机系统例子结束本文:

 
图2.7

转载于:https://www.cnblogs.com/tubujia/p/11363627.html

老男孩读 pcie 做过单片机的人可能知道,有些寄存器只要一读,数据就会清掉,因此,对这样的空间,是不能预读的,因为预读会改变原来的值),这些都是PCIe设备在出厂前都设置好的,提供给系统软件的信息。一个PCIe设备,可能有若干个内部空间(属性可能不一样,比如有些可预读,有些不可预读)需要映射到内存空间,设备出厂时,这些空间的大小和属性都写在Configuration BAR寄存器里面,然后上电后,系统软件读取这些BAR,分别为其分配对应的系统内存空间,并把相应的内存基地址写回到BAR。从而最终完成了该PCIe空间的映射。 阅读详情

相关推荐

老男孩讲PCIE

PCIE总线规范,PCIE协议详解,读写时序,基本概念、总体特征

pcie 详解

老男孩读PCIe之一:从PCIe速度说起 从今天开始,老男孩要开始讲PCIe了。对我来说,这是个很大的挑战:首先,我自己本身,对PCIe并没有做到胸有成竹,我的PCIe知识也只是停留在理论阶段,我并没有实际做过任何有关PCIe的东西;其次,我要把PCIe讲得深入浅出,让读者轻易接受,我觉得很难,根本原因就是我还没有做到胸有PCIe;最后,我的文章都会通过ssdfans公众号推出(还没有关注的同学,赶快关注),很多读者都是PCIe高手,班门弄斧,我深感压力。但尽管如此,我还是决定出发,我自己努力学习,尽我最

yingqiangli的专栏 8万+

RseQC实战指南:从安装到RNA-Seq数据质控全流程解析

本文提供了一份详尽的RseQC实战指南,涵盖从安装配置到RNA-Seq数据质控的全流程。文章重点解析了RseQC作为专业质控工具的核心价值,手把手指导如何通过Conda或pip完成安装,并深入讲解了bam_stat.py、geneBody_coverage.py等关键模块的使用方法与结果解读技巧,帮助用户有效评估RNA完整性、文库构建质量及链特异性,确保下游分析的可靠性。

weixin_29200741的博客 198

老男孩读PCIe介绍系列

目录1 老男孩读PCIe之一:从PCIe速度说起2 老男孩读PCIe之二:PCIe拓扑结构3 老男孩读PCIe之三:PCIe分层结构4 老男孩读PCIe之四:TLP类型5 老男孩读PCIe之五:TLP结构5.1 Memory TLP5.2 Configuration TLP5.3 Message TLP5.4 Completion TLP6 老男孩读PCIe之六:配置和地址空间7 老男孩读PCIe之七:TLP的路由7.1 地址路由7.2 ID路由7.3 隐式路由从今天开始,老男孩要开始讲PCIe了。对我来说

百里杨的博客 3571

【网格生成】Gmsh快速入门教程 --1.图形化界面使用

初探 Gmsh软件的主界面如下图所示。通过点击菜单“File” -> "Open"可选择打开已经存在的几何模型或网格文件,初次使用可选择tutorial目录下的t1.geo文件。打开后效果如图所示,t1.geo描述的是一个长方体。 接下来依次尝试左侧菜单栏的功能:Geometry(几何)、Mesh(求解器)。Solver模块需依赖外置求解器,不在本文介绍范围内。 Geometry 该菜单下是与几何相关的功能,如新增一个点/面、体,移动一个体等,具体功能很多可以在后续使用中逐渐尝试学习。本文仅介绍几个

DJ_xiaoming的博客 1万+

AutoDock Vina 对接计算(大批量)

AutoDock Vina是一种用于计算生物分子之间相互作用的计算工具,主要用于蛋白质和小分子(通常是潜在药物分子)之间的对接研究。它可以用于虚拟筛选、药物设计和生物分子结合位点的预测等多个应用领域。

MurphyStar的博客 1万+

【PCIe 5.0 - 2】PCIe结构

PCIe结构是点到点链路连接各个组件 - 下图显示了示例结构。此图说明了称为Hierarchy结构的单个结构实例 - 由Root Complex (RC)、多个Endpoints(I/O 设备)、一个Switch和一个PCIe to PCI/PCI-X Bridge组成,这些都通过PCIe Links互连。

BGONE的博客 2098

AI驱动的iOS逆向工程自动化:14阶段工作流与Ghidra集成实践

逆向工程是软件安全分析的核心技术,通过反汇编、调试等手段解析程序内部逻辑与数据流。其原理在于将编译后的二进制代码还原为可理解的逻辑结构,从而发现潜在漏洞或理解软件行为。在移动安全领域,iOS逆向工程具有重要技术价值,能够用于安全审计、漏洞挖掘与恶意软件分析。传统iOS逆向依赖ipsw、class-dump、Frida等工具链组合,存在学习曲线陡峭与流程碎片化问题。本文介绍的ios-reverse-skills项目创新性地将14阶段逆向工程方法论封装为AI可调用的标准化脚本集,通过Ghidra脚本实现Swif

weixin_27268733的博客 430

老男孩读PCIe之二:PCIe拓扑结构

来源: http://www.ssdfans.com/?p=3692    "计算机网络的拓扑结构是引用拓扑学中研究与大小、形状无关的点、线关系的方法,把网络中的计算机和通信设备抽象为一个点,把传输介质抽象为一条线,由点和线组成的几何图形就是计算机网络的拓扑结构。" 计算机网络的最主要的拓扑结构有总线型拓扑、环形拓扑、树形拓扑、星形拓扑、混合型拓扑以及网状拓扑。 PC...

kunkliu的博客 2257

阿里云大模型ACP认证模拟考试(一)

摘要:在阿里云大模型高级工程师 ACP 认证暂无真题题库的现状下,模拟题具有重要意义。其依照真实考试设计,涵盖题型、题量与分值分布,助力考生熟悉考试框架,合理分配答题时间精力,提升效率。同时,模拟题紧扣官方课程,能帮助考生精准定位知识盲点,如大模型架构原理和通义千问应用实践等重点内容,以便针对性完善知识体系。此外,通过练习模拟题,考生可掌握不同题型的解题思维与技巧,快速洞察复杂题目本质,提高答题准确率。

davidkorhenn的博客 4736

用urdf给自己的ROS小车编写模型

3.3 使用urdf编写自己的ROS小车模型 3.3.1 常见的ROS小车结构有哪些? 下面就是常见的ROS小车,相信在大家的脑海里已经有了自己小车的样子,下面我和大家一起使用urdf对ros小车建模。 这里只对urdf进行简单介绍,然后就带大家使用urdf最基础的标签,建立机器人的urdf机器人模型。关于更多细节,请参看官网:http://wiki.ros.org/urdf/Tutorials 3.3.2 什么是urdf?建模的原因? 什么是urdf? URDF(Unified Robot Descri

「小白学移动机器人」一个专注分享移动机器人相关知识的公众号! 1万+

[转]老男孩读pcie

转自 http://www.ssdfans.com/blog/2017/08/03/%E8%80%81%E7%94%B7%E5%AD%A9%E8%AF%BBpcie%E4%B9%8B%E4%B8%80%EF%BC%9A%E4%BB%8Epcie%E9%80%9F%E5%BA%A6%E8%AF%B4%E8%B5%B7/ 老男孩读PCIe之一:从PCIe速度说起 从今天开始,老男孩要开...

weixin_30436101的博客 597

WPF用户控件间属性传递的艺术

本文详细介绍了WPF中父控件向子控件传递属性的方法。针对常见的绑定失效问题,重点讲解了使用RelativeSource绑定技术,通过指定AncestorType确保正确访问父控件属性。文章通过实例演示了从ParentModel传递属性到ChildUserControl依赖属性的完整实现过程,包括模型定义、XAML结构设计和代码实现。这种方法有效解决了数据上下文混淆问题,为WPF开发中的控件交互提供了可靠解决方案,有助于提升应用的灵活性和可维护性。

2501_90323865的博客 56

读PCIe介绍系列

https://blog.youkuaiyun.com/BjarneCpp/article/details/112433384?spm=1001.2014.3001.5502

jingjiankai5228的博客 6746

《UDS协议从入门到精通》系列——图解0x27:安全访问

什么是安全访问服务?应用场景和基本原理是什么?全网最直观详细的图解UDS-0x27:安全访问服务!!

车载系统攻城狮 7227

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

老男孩读PCIe之六:配置和地址空间

老男孩读PCIe之六:配置和地址空间 Posted on2017年8月3日bySSD Fans 原创内容,转载请注明: [http://www.ssdfans.com]谢谢! 每个PCIe设备,有这么一段空间,Host软件可以读取它获得该设备的一些信息,也可以通过它来配置该设备,这段空间就叫做PCIe的配置空间。不同于每个设备的其它空间,PCIe设备的配置空间是协议规定好的,哪个...

zxtwzl的博客 1792

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

[转载]老男孩读PCIe之七:TLP的路由

来源:http://www.ssdfans.com/?p=3720 一个TLP,是怎样经历千山万水,最后顺利抵达目的地呢? 今天就以上图的简单拓扑结构为例,讨论一个TLP是怎样从发起者到达接收者,即TLP路由问题。 PCIe共有三种路由方式:基于地址(Address)路由,基于设备ID(Bus number + Device number + Function Numb...

ddk43521的博客 582

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

老男孩读PCIe之四:TLP类型

来源: http://www.ssdfans.com/?p=3704Host与PCIe设备之间,或者PCIe设备与设备之间,数据传输都是以Packet形式进行的。事务层根据上层(软件层或者应用层)请求(Request)的类型、目的地址和其它相关属性,把这些请求打包,产生TLP,也就是Transaction Layer Packet。然后这些TLP往下,经历数据链路层,物理层,最终到达目标设备。根据软件层的不同请求,事务层产生四种不同的TLP请求: 1. Memory 2. IO 3. Configurati

kunkliu的博客 2461

FPGA系列之吃透PCIE(1)一些概念性介绍

XDMA是啥

u012798746的博客 2万+

【PCIE】PCIE笔记摘录

PCIE笔记摘录 > 以下内容非原创,主要是摘录 老男孩读pcie和网上的其他文章,仅限学习,不用于任何商业用途。 PCIE接口电气的耦合方式 高速差分信号电气规范要求其发送端串接一个电容,以进行AC耦合。 ================= PCIE总线的缺点 Pcie的内部实际上还是以64bit/128bit的并行数据传输的,时钟为125M/250M。只不过在物理层转成了高速串口。 但是PCIe总线也有其弱点,其中最突出的问题是传送延时。PCIe链路使用串行方式进行数据传送,然而在芯片内

qq_41186941的博客 1950

PCIe优秀博客汇总

以下内容均转载自其他创作者。

limc00的博客 403

PCIe扫盲——PCIe总线事务层入门(二)

转:http://blog.chinaaet.com/justlxy/p/5100053248 前面的文章介绍了TLP的几种类型以及TLP的包结构。这篇文章来详细地聊一聊Non-Posted Transaction(包括Ordinary Read、Locked Read和IO/Configuration Writes)与Posted Writes(包括Memory Writes和Message Writes)。

zsmcdut的博客 812

PCIe学习笔记(一)-------1.2 PCIe总线简介

1,PCIe概览 PCIe是第三代外围设备总线,英文缩写为PCIe或者PCI Express。PCIe是点对点,全双工的差分传输信号总线。点对点互连表示链路上的电气负载有限,从而使发送和接收频率可扩展到更高。PCIe目前成熟的版本有GEN1,GEN2,GEN3,GEN4和GEN5,每一代相较上一代传输速率和传输带宽都有了很大幅度的提升。PCIe每个Function的配置空间从PCI的256B扩展到了4KB,但前64B(PCI Header)配置寄存器仍然是相同的。 差分信号对:PCIe采用差分对来串行传

llxxyy507的博客 2万+

【PCIE体系结构三】PCIE的硬件拓扑结构和逻辑层次结构

简述PCI、PCIE的硬件拓扑结构和PCIE的逻辑层次结构

highman110的博客 6031

28-硬件设计-PCIE转千兆网

硬件设计-PCIE转千兆网

weixin_44479192的博客 2784
上一篇: [转]老男孩读PCIe之一:从PCIe速度说起
下一篇: [转]老男孩读PCIe之三:PCIe分层结构
ddk43521
博客等级 码龄12年 26粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值