【PCI-E通道是个什么东西?他是干啥的?】

https://zhuanlan.zhihu.com/p/62426408

前言:

经常接触台式机的同学肯定绕不开PCI-E这个名词,因为这是台式机里最重要的接口/通道之一,就算是笔记本,也有很多地方会提到,就好比你加固态硬盘的时候,查阅资料的时候你应该会发现有的M.2接口走的就是PCI-E X4通道,很多的雷电3接口也会提到这个是半速的,还是满血满速的,雷电3接口走的也是PCI-E通道。所以这个通道在电脑DIY里非常重要,如果你想学电脑硬件,这个通道是必须要认识的,但是很多人并不懂这个通道是个什么东西,到底是干什么的,这个文章我们来详细解读一下。

正文部分:

【总线的概念】

在电脑里,不同的设备要想交互数据,就必须要经过一定的通道,就好像现实当中,两个城市要交换货物,就必须要修路,这里的路就和计算机里的总线概念一样,总线就是计算机里,用于走数据的“路”,CPU核心和cache缓存交互数据的时候,使用的就是内部总线,这个总线只在CPU内交互数据,但是CPU不可能就自己在那空算数吧,他总要和其他设备交互数据,就需要用到外部总线了,CPU会通过外部总线和其他的设备比如硬盘,网卡,声卡,USB设备沟通,我们这个文章想要介绍的PCI-E就是外部总线的一种。

【PCI-E的前身】

早些年那时候电脑还没有标准化,各种配件的接口和协议都不统一,声卡用着声卡的接口,网卡用着网卡的接口,显卡用着显卡的接口,大家都不统一,不同品牌不同厂商的接口又都不一样,不统一带来的问题就是不方便拓展,你用着A家的主板,那你就只能买A家接口的显卡声卡和网卡。所以为了解决这种不统一,业内当时统一了一个规格,这就是最早的ISA接口,下图中红色圈中这个黑色的长槽就是ISA了,ISA诞生于距今十分遥远的1981年,它作为IBM PC/XT电脑的系统总线首次出现,由于PC/XT在相当长一段时间内都曾经是PC领域的统治者,所以这个接口也沿用了很久

不过,ISA的弱点也是显而易见的,作为最初的数据总线,ISA的传输速率很快便成了周边设备性能提升的瓶颈,它还有CPU占用率高以及占用硬件中断资源等其他问题,所以渐渐的也就无法再满足高速发展的外围设备的需求了,因此业界开始了对ISA总线的放弃以及对替代品的寻找。这位继任者,便是几乎陪伴了一代人的PCI,下图中白色的长槽就是了。(此段位引用)

PCI相对于ISA不仅提高了带宽速度,还做到了即插即用,所谓即插即用,是指当板卡插入系统时,系统会自动对板卡所需资源进行分配,如基地址、中断号等,并自动寻找相应的驱动程序。而不象旧的ISA板卡,需要进行复杂的手动配置,大幅简化的操作使得这个接口迅速普及而且统治了很长一段时间的个人电脑。(此段位引用)

但是随着时间的推移,PCI接口的弊端也逐渐暴露出来,带宽也逐渐跟不上需求了,所以业内又开始寻找新的接口替代,这就是我们当代见得最多的PCI-E

PCI-E的全名叫PCI Express,简称PCI-E,官方简称PCIe,他是计算机内部的一种高速总线。

【PCI-E有什么用】

由于ISA和PCI年代太过久远了,我们就不多介绍了,大家有兴趣的可以去维基百科或者百度百科找找相关资料和信息,我们着重介绍一下PCI-E。

PCI-E既是通道,也是接口,当他以接口形式存在的时候,就是我们主板上那长长的槽。

目前的声卡和网卡都是主板集成了,不需要我们额外再插,所以PCI-E接口目前最大的作用就是插显卡,除了显卡还有无线网卡,万兆有线网卡这些高带宽设备,除了这些PCI-E接口也可以转接成很多接口,比如USB3.0,Type-c,雷电3,又或者U.2,M.2。

PCIe所能承受的带宽一般以版本和长度来区分,目前的PCIe版本是3.0,X1长度所能承受的带宽大约是986MB/S,我们可以理解为就是1GB/S,X2长度就是2GB/S,X4长度就是4GB/S,那X16长度就是16GB/S

而我们台式机主板上看到的最长的那个槽,就是X16的槽,所能承载的带宽就是16GB/S,而在长槽之间我们还能看见很短的槽,那就是PCIe X1,能承受1GB/S的带宽。

几乎任何长度的PCIE设备只需要X1就可以运行,你可以把X16的显卡插在X1槽中(尾部非闭合),你也可以把X1的设备插在X16槽中,这都是可以运行的,只是可能会带宽不足或者浪费带宽了

很多人看到这里就要说了,PCI-E这个接口好像就台式机有啊,和笔记本好像没有什么关系吧,为什么你文章开头说笔记本也要研究PCI-E呢,上面我们介绍的是PCI-E以接口形式存在,而这里就要介绍另一个情况,当PCI-E以通道形式存在了

【PCI-E以通道形式存在】

传统的SATA3接口固态硬盘采用的是AHCI协议,比如金士顿A400,三星860EVO,intel545S使用的都是SATA3接口,这种接口速率上限的理论值是750MB/S,但是实际上就只有600MB/S左右,所以这种固态硬盘速度大家可以看到都不超过600MB/S,这就是被SATA3这个接口的带宽限制了。

而为了摆脱限制,我们只能考虑换接口,PCI-E速率不是很快么,我们就用PCI-E好了,但是PCI-E体积太大怎么办,那么我们就缩小体积换个样子,这就是M.2接口,M.2接口你可以理解为他就是PCI-E接口,只是换了个形状而已。

所以这个时候,接口就是M.2,PCI-E在这里的作用就是扮演传输数据的通道了,而不是直接以接口存在。除了M.2包括雷电3这样的接口,都是利用PCI-E通道传输速率的,所以这就有了满血M.2/雷电3,还有残血M.2/雷电3这个说法了,满血的就是X4带宽,残血的就是X2带宽。比如小米笔记本PRO 15.6这款笔记本,第一个M.2就是X4的带宽,而第二个只有X2的带宽,所以你给米PRO装固态,第二个固态是怎么也不可能跑到2GB/S以上的顺序速度的。

那这里很多朋友就会发现了,我们目前使用的i3 i5 i7的民用平台,都只有X16条PCI-E,所以要么是1X16,或者2X8或者1X8+2X4,但是我的主板上有两个M.2接口,像技嘉和华擎上面甚至有3个M.2,而大家都知道一张显卡就需要用掉X16的槽,那这是否意味着我要是插满这些M.2之后,我的显卡就会自动降低到X8甚至是X4呢?

所以这里又要引出一个话题,那就是直连PCI-E和绕道PCI-E和南桥芯片组

【直连PCI-E和绕道PCI-E与南桥芯片组】

电脑里有很多的设备要和CPU通讯,比如内存,显卡,键盘鼠标,声卡网卡,如果这些设备全接到CPU上,对于CPU的设计难度,还有台式机的模块化难度是非常高的,光主板布线的难度相对于现在都是指数的提升,如果有兴趣研究PCB的,大家可以看一下CPU底座到内存那块,走了多少密密麻麻的线

图文无关

所以我们不可能让所有的设备都去找CPU通讯,那我们就给CPU安排一个下手,显卡和内存由于对于延迟和带宽要求很高,还是由CPU来直接通讯,但是键盘鼠标,声卡网卡这些,就让这个下属去管,然后这个下属再给CPU汇报数据。这个用来交互数据的下属,就是主板南桥芯片组,芯片组除了提供相应的主板特性外,最重要的就是作为外部设备的交互中转站。

芯片组的作用很像我们用的分线器,就是把一个接口分成很多小接口,其实他就是电脑主板的内部分线器,他将CPU发送给他的总线分给下属设备。

但是很多人就想到了,目前家用CPU的PCI-E只有16条,那那些M.2是谁提供的PCI-E通道呢?我装了下图是我从intel官网找到的Z390总线结构图

在左上角我们可以看到,直连CPU的PCI-E只有16条,要么是1X16,要么是2X8,要么是1X8+2X4,但是在芯片组左边我们可以看到Up to 24X PCI-E 3.0这个字样,也就是说,Z390芯片组下是可以挂载最大24条走南桥的PCI-E。

所以这就可以解释为什么目前主板上有2个甚至3个M.2的情况下,你的显卡依旧是PCI-E X16,就是因为这些PCI-E并不是intel说的那16条直连PCI-E,而是走南桥绕道的PCI-E。

所以这就可以解释另外一个问题,为什么M.2,雷电3,还有U.2的带宽上限目前最高都是PCI-E X4呢?因为CPU和芯片组之间通过DMI3.0总线连接,这个总线速度只有PCIEX4的水平也就是4GB/S,所以雷电3,M.2,U.2目前都无法突破X4带宽,就是被这个DMI牙签总线限制了。

但是木头龙的例子就非常好,一个能停100辆车的停车场不用吧出入口修成100个车道宽,因为他们不太可能一块进出,所以只需要留出入两个车道就可以,挂在在南桥下面的设备不太可能大家一块输出数据,所以纵使目前DMI3.0只能提供X4的带宽,也足以满足我们的需求了。


全文完,感谢您的耐心观看!!!

如果您觉得我的文章写得不错就点一波关注吧,您的关注是对我最大的支持!!!

在关注专栏的同时不要忘记关注我本人哦,非常感谢您的支持!!!

【转帖】【PCI-E通道是个什么东西?他是干啥的?】的更多相关文章

  1. 【Unity Shaders】Using Textures for Effects —— 实现Photoshop的色阶效果

    本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...

  2. [知乎]鲲鹏920对比intel8180

    作者:韩朴宇链接:https://www.zhihu.com/question/308298687/answer/568737742来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  3. [转] [腾讯游戏学院] Roguelike到底是什么?

    如果你是一位资深游戏玩家,那么最近你肯定在哪里看到过 Roguelike 这个词.Roguelike 这个古老的游戏类型现在又变得很潮流,其中各种要素都在不断的被新游戏借鉴.作为一名就是比你有更多空余 ...

  4. Intel主板芯片组

    写这个的初衷还是由于linux内核本身就是硬件的抽象,如果你对硬件的相关发展,机制以及架构不了解,实际你也是看不懂linux内核代码以及看不懂linux很多命令输出的结果的,如果你看内核代码就会发现内 ...

  5. linux脚本编程(shell)浅介 (转载)

    linux脚本(shell)编程 啊,昨天上网看到一篇讲 linux/unix shell 的文章,想想自己最后写这东西也是一年前的事了,想想都快忘光了. 还是整理一下,做一次回顾,以后说不定还用得上 ...

  6. 【redis】06Redis的高级应用之事务处理、持久化操作、pub_sub、虚拟内存

    上节课详细讲解了redis数据库的常用命令,以及redis数据库高级应用当中的, 安全性,跟咱们的主从复制, 这节课呢,咱们继续来讲咱们的高级应用, 首先来看一下咱们的事务处理, 事务处理 我前面说过 ...

  7. 几个RTP的开源实现

    玩了两天rtp协议,基本把rtsp/rtcp/rtp/rtmp/srtp/strcp/mms,几个协议的区别和概念弄明白了. 这里记录一下. rtsp:类似用户界面操作,和Http比较类似,提供播放, ...

  8. PipedInputStream/PipedOutputStream原理

    PipedInputStream类与PipedOutputStream类用于在应用程序中创建管道通信.一个PipedInputStream实例对象必须和一个PipedOutputStream实例对象进 ...

  9. 这是一位拿到BAT大厂offer应届生的年终总结,那么你的呢?

    壹 关于求职 2018年初,我还在北京后厂村的马路上被风吹得瑟瑟发抖. 那时我刚刚结束了半年的实习时光,开始考虑年后是否要继续实习.一开始我也在纠结实习转正和秋招之间如何权衡,但是在经历了春招以后,我 ...

随机推荐

  1. Oracle,regexp_replace函数,replace函数

    replace函数(不知支持正则表达式)语法: replace(原字段,“原字段旧内容“,“原字段新内容“,) select replace(原字段,'原字段旧内容','原字段新内容') from T ...

  2. 在Android Studio中找不到AppCompatActivity解决方案

    在创建新的.java文件时,要导入父类中的 AppCompatActivity,报错,无法找到这个父类. 解决方案:   1.先找到“project structure”,然后app--Depende ...

  3. Java SpringBoot使用126邮箱发送html内容邮件,带附件

    package mail.demo; import org.junit.Test; import org.junit.runner.RunWith; import org.springframewor ...

  4. 编译器错误 CS0540

    编译项目报错:包含类型不实现接口,CS0540 原因:试图在非派生自接口的类中实现接口成员. 解决方案: 删除接口成员的实现,或将接口添加到类的基类列表. 下面的两个示例生成 CS0540: 一. / ...

  5. 在应用中显示的图片很多情况不满足业务需求,我们需要动态根据图片的宽高进行缩放或加载中显示的缺省图片,这是我没就需要监听图片加载完成回调,来看看微信小程序怎么实现图片加载完成回调。

    <swiper-item> <image src="{{item.image}}" class="slide-image" mode=&quo ...

  6. kafka集群搭建(图文并用)

    将安装包上传服务器并解压 scp kafka_2.11-1.0.0.tgz username@{ip}:~/. mkdir /usr/local/kafka mv kafka_2.11-1.0.0.t ...

  7. Kali Linux硬盘扩容

    传送门--->http://www.kali.org.cn/thread-27079-1-1.html.kali虚拟机扩容

  8. ubuntu之路——day10.1 ML的整体策略——正交化

    orthogonalization 正交化的概念就是指,将你可以调整的参数设置在不同的正交的维度上,调整其中一个参数,不会或几乎不会影响其他维度上的参数变化,这样在机器学习项目中,可以让你更容易更快速 ...

  9. 深度学习面试题21:批量归一化(Batch Normalization,BN)

    目录 BN的由来 BN的作用 BN的操作阶段 BN的操作流程 BN可以防止梯度消失吗 为什么归一化后还要放缩和平移 BN在GoogLeNet中的应用 参考资料 BN的由来 BN是由Google于201 ...

  10. python window窗口

    from Tkinter import * root=Tk() root.title('我是root窗口!') L=Label(root,text='我属于root') L.pack() f=Topl ...