【PCIE体系结构二】计算机内部总线 |
您所在的位置:网站首页 › pcie接口长短不一样 › 【PCIE体系结构二】计算机内部总线 |
👉个人主页:highman110 👉作者简介:一名硬件工程师,持续学习,不断记录,保持思考,输出干货内容 参考文章: 深入PCI与PCIe之一:硬件篇 - 知乎 (zhihu.com)、计算机体系结构基础(第3版)-胡伟武等-微信读书 (qq.com) 目录 总线 片内总线 内存总线 系统总线 设备总线 PCIE总线的发展历程 总线上一章节讲述了计算机硬件模块的构成,这些模块是通过各类“总线”连接的,也包括我们本文的重点PCIE总线。本小节介绍一下总线的基础知识。 总线的分类这个不多说,大家看图,接下来针对总线在计算机系统中的物理位置分类一一介绍。 片内总线一个SoC芯片中,集成了很多IP模块,这些IP可能来自不同的厂家,为了使这些IP能够兼容应用,所以必然会定义一个芯片内模块互联的接口总线规范。目前业界公开的主流片上互连总线是ARM公司的AMBA系列总线。高级微控制器总线架构(Advanced Microcontroller Bus Architecture,简称AMBA)系列总线包括AXI、AHB、ASB、APB等总线。这里的内容很多,不是本文的重点,后续学习计算机体系结构的时候再重点研究。 内存总线从计算机硬件结构的发展变化了解到,当下的CPU或SOC都集成了内存控制器,内存模组和处理器通过内存总线连接。内存总线规范是由JEDEC(Joint Electron Device Engineering Council)组织制定的,它包含了一般总线的三个层级:机械层、电气层和协议层。这里的内容也很多,不是本文的重点,后续学习内存的时候再重点研究。 系统总线系统总线通常用于处理器与桥片的连接,同时也作为多处理器间的连接以构成多路系统。英特尔处理器所广泛采用的QPI(Quick Path Interconnect)接口及在QPI之前的FSB(Front Side Bus),还有AMD处理器所广泛采用的HT(HyperTransport)接口都属于系统总线。系统总线是处理器与其他芯片进行数据交换的主要通道,系统总线的数据传输能力对计算机整体性能影响很大。如果没有足够带宽的系统总线,计算机系统的外设访问速度会明显受限,类似于显示、存储、网络等设备的交互都会受到影响。随着计算机系统技术的不断进步,微处理器与其他芯片间的数据传输性能成为制约系统性能进一步提升的一个重要因素。为了提升片间传输性能,系统总线渐渐由并行总线发展为高速串行总线。也有的处理器通过PCIE与IO套片(或者叫南桥)连接,这里的PCIE按照位置划分就是系统总线。 设备总线设备总线用于计算机系统中与IO设备的连接,也可以称为局部总线,设备总线是系统总线的延伸,用来连接外部设备。 PCI(Peripheral Component Interconnect)总线是一种对计算机体系结构连接影响深远并广泛应用的设备总线。PCIE(PCI Express)可以被看作PCI总线的升级版本,兼容PCI软件架构。PCIE总线被广泛地用作连接设备的通用总线,在现有计算机系统中已经基本取代了PCI的位置。从本章第2小节可以看到PCIE总线的位置,一般和SATA、USB、显示等设备接口位于同样层次,用于扩展外部设备,比如可以在PCIE插槽上插网卡、显卡、固态硬盘等,也可以通过接口转换芯片将PCIE扩展成其他接口。 那PCI怎么出来的?为什么要用PCIE替代PCI呢?处理器工艺、主频不断提升,IO交互的数据量越来越大,比如说网口的速率越来越高、硬盘的容量越来越大、显示的分辨率越来越高等等,这就需要配备速率更快、带宽更高的设备总线。 在PCI总线规范定义之前,计算机依次使用了8位的XT总线、16位的ISA总线、32位的EISA总线、VESA总线、MCA总线等局部总线。在1992年6月22日,intel发布了PCI 1.0规范,随后几年PCI总线快速获得了各大厂家的认可,迅速统一了当时并存的各种局部总线(对显卡来说,PCI的带宽不够,此时替代VESA总线的是AGP总线),从此后的较长一段时间PCI总线在计算机体系结构中一直占据着重要地位,大多数设备都是直接或间接通过PCI总线与处理器连接。 从PCI到PCIE很好理解,因为并行的PCI总线带宽上不去了,于是在2001年,非营利组织PCI-SIG召集了英特尔、AMD、博通、IBM、微软等厂商提出了PCIe(Peripheral Component Interconnect Express)新总线标准,变成了高速串行总线。当下的计算机系统里PCIE是主流,PCI用的比较少了。 关于计算机中局部总线的发展变化具体情况可以参考此文:深入PCI与PCIe之一:硬件篇 - 知乎 (zhihu.com) PCIE总线的发展历程如下图,PCIe 从2003年的1.0版本开始到2022年的6.0经历了数次更新,速度从2.5GT/s提升到了64GT/s(下面这张图是2022年以前的,没有更新)。 PCIE从1.0到6.0,几乎每一代物理线路传输速率都是翻倍增长,注意这里的传输速率单位为GT/S,也就是Giga transation per second (千兆传输/秒),每一秒内传输的次数,重点在于描述物理层通信协议的速率属性,和链路吞吐量不是相等关系。吞吐量单位一般为GB/s或Gb/s,表示每秒可以传输的原始数据比特数,吞吐量=传输速率*编码方案,比如PCIe 2.0协议的每一条Lane支持 5GT/s * 8 / 10=4 Gbps=500 MB/s的吞吐量。详细的速率变化如下表: PCIE版本 PCS编码 Raw bit传输速率 吞吐量 X1 X4 X8 X16 1.0 8b/10b 2.5GT/s 250MB/s 1GB/s 2GB/s 4GB/s 2.0 8b/10b 5GT/s 500MB/s 2GB/s 4GB/s 8GB/s 3.0 128b/130b 8GT/s 984.6MB/s 3.938GB/s 7.877GB/s 15.754GB/s 4.0 128b/130b 16GT/s 1.969MB/s 7.877GB/s 15.754GB/s 31.508GB/s 5.0 128b/130b 32GT/s 3.9MB/s 15.8GB/s 31.5GB/s 63GB/s 6.0 1b/1b 64GT/s 8GB/s 32GB/s 64GB/s 128GB/s 这里需要再说明一下PCIE 6.0的吞吐量计算方式。我们以前在《以太网硬件》系列文章提到过以太网的编码,分为介质无关编码和介质相关的编码(或者说是调制),文章链接:(2条消息) 【以太网硬件四】以太网信道编码方式有哪些?_以太网编码方式_highman110的博客-CSDN博客 PCIE中也类似,上表中列的pcs编码为介质无关编码,是在信号往外发之前在芯片内部的编码,pcs层编码完成后得到了上表中描述的raw bit数据,顾名思义raw bit就是未加工的数据bit,这些数据在发送到外面的介质上传输时还需要经过一次介质相关的调制,比如1.0到5.0的NRZ,把芯片内部代表数据流bit0和bit1调制到外部走线所要求的对应电平,这种调制不会改变信号的传输速率,一个bit对应一个电平码元。而到了PCIE 6.0就不同了,为了使吞吐量翻倍,raw bit数据速率达到了64GT/s,如果还用NRZ这种方式,外部走线传输速率也用64GT/s,频率过高带来的插损过大,无法进行可靠的传输。所以采用了PAM4的编码方式,把原来的数据流通过4电平码元进行传输,一个码元可以表示2bit的数据,所以外部走线的波特率可以保持和PCIE 5.0一样,为32GBd,大大降低了插损的要求。关于NRZ与PAM4的区别,大家可查阅下其他文章。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |