pcie总线连接两台电脑_PCIe总线的逻辑结构

PCIe其实是一组规范计算机硬件之间相互通信的协议标准,总线这个词是从英文BUS翻译过来的,你也可以以“公交车”类比,计算机硬件之间内部通信的消息,也需要这样的公共交通工具去运输,计算机内部硬件通信的运输规则我们就需要PCIe这样的协议来规范。

PCIe的逻辑结构图图片来自 :《深入浅出SSD》

PCIe的通信架构是一个树形,树根是root complex,下面可以直接挂设备,比如内存、显卡,也可以通过一个Switch,共享某些PCIe端口的带宽,分出更多的PCIe端口,也可以通过PCIe Bridge去做转接,去对接原来PCI标准下的相关设备。

带宽分配

这个结构如果拿你的家庭局域网组网来做类比的话,你家的root complex可能就是那个你家庭宽带入口的那个光猫。你的光猫可能是电信给你家装宽带的时候就布置了,它自带一些网口和WiFi,你可以直接连入设备,你也可以加一个路由器进行扩展,同时从路由器接入你的设备,甚至是路由器之后再接一个路由器,都是可以的。

PCIe也是类似的结构,从CPU出发,自身有很多原生的PCIe口出来,但设备众多,对带宽的需求也会不一样,所以会有很多共享PCIe端口的设备,也会有很多最好要独占端口的设备。

每个PCIe通道是有速度上限的,根据PCIe的版本会有所不同。来自WiKi 百科

就如同光猫、路由器的端口一样,有百兆的网口,有千兆的网口,网口下连接的设备是共享该网口下的带宽的,而总的带宽又受限于你家的入口带宽。

对于带宽要求高的,比如显卡,我们就会尽量让它直连CPU,不通过中间商层层代理,这样有更低的时延和更大的独占带宽,会显著提升我们的游戏体验。至于外置显卡的操作是否可行,也可以通过计算中间到底损失了多少带宽来判断。如果你的中间通路不会成为阻碍你显卡发挥的绊脚石,那么外接也不是不可以。

路由

内部设备之间的通信其实和计算机之间的通信是有很多类似的地方的,路由就是其中类似的基础。路由,就是我怎么找到你的问题,一个设备怎么找到另外一个设备。

在IP网络中,你的计算机可能是靠IP地址去找到远在他乡的服务器,同样在PCIe中,我们也需要一个类似IP的一组数据,它可能是地址,也可能是一串ID,总之它唯一地标识出了设备在内部的位置,通过这组数据就能找到那个唯一的它。

我就介绍最简单的一种,通过BUS+DEV+FUNC这样的ID组合的形式来找到一个设备。

CPU下的一条总线可能会挂很多个设备(多个DEV),同时也可以分出更多的总线(多条BUS),然后一个设备可能会实现多个功能(多个FUNC)

通过BUS+DEV+FUNC,就可以确定设备是在哪一个总线下面,总线下的第几个设备,调用了该设备的什么功能,从而去找到这个设备。

对相关内容想要了解更多的,可以参见这本书《深入浅出SSD》

你可能感兴趣的:(pcie总线连接两台电脑)