PCI、PCIE、NVME;ATA、SATA、AHCI及M.2接口简单辨别
PCIe总线概述
随着现代处理器技术的发展,在互连领域中,使用高速差分总线替代并行总线是大势所趋。与单端并行信号相比,高速差分信号可以使用更高的时钟频率,从而使用更少的信号线,完成之前需要许多单端并行数据信号才能达到的总线带宽。
PCI总线使用并行总线结构,在同一条总线上的所有外部设备共享总线带宽,而PCIe总线使用了高速差分总线,并采用端到端的连接方式,在每一条PCIe链路中只能连接两个设备。这使得PCIe与PCI总线采用的拓扑结构有所不同。PCIe总线除了在连接方式上与PCI总线不同之外,还使用了一些在网络通信中使用的技术,如支持多种数据路由方式,基于多通路的数据传递方式,和基于报文的数据传送方式,并充分考虑了在数据传送中出现服务质量QoS (Quality of Service)问题。
PCIe总线的基础知识 与PCI总线不同,PCIe总线使用端到端的连接方式,在一条PCIe链路的两端只能各连接一个设备,这两个设备互为是数据发送端和数据接收端。PCIe总线除了总线链路外,还具有多个层次,发送端发送数据时将通过这些层次,而接收端接收数据时也使用这些层次。PCIe总线使用的层次结构与网络协议栈较为类似。
PCIe链路使用“端到端的数据传送方式”,发送端和接收端中都含有TX(发送逻辑)和RX(接收逻辑),其结构如图41所示。
由上图所示,在PCIe总线的物理链路的一个数据通路(Lane)中,由两组差分信号,共4根信号线组成。其中发送端的TX部件与接收端的RX部件使用一组差分信号连接,该链路也被称为发送端的发送链路,也是接收端的接收链路;而发送端的RX部件与接收端的TX部件使用另一组差分信号连接,该链路也被称为发送端的接收链路,也是接收端的发送链路。一个PCIe链路可以由多个Lane组成。
高速差分信号电气规范要求其发送端串接一个电容,以进行AC耦合。该电容也被称为AC耦合电容。PCIe链路使用差分信号进行数据传送,一个差分信号由D+和D-两根信号组成,信号接收端通过比较这两个信号的差值,判断发送端发送的是逻辑“1”还是逻辑“0”。
与单端信号相比,差分信号抗干扰的能力更强,因为差分信号在布线时要求“等长”、“等宽”、“贴近”,而且在同层。因部干扰噪声将被“同值”而且“”加载到D+和D-两根信号上,其差值在理想情况下为0,对信号的逻辑值产生的影响较小。差分信号可以使用更高的总线频率。
使用差分信号能有效抑制电磁干扰EMI(Electro Magic Interference)。由于差分信号D+与D-距离很近而且信号幅值相等、极性相反。这两根线与地线间耦合电磁场的幅值相等,将相互抵消,差分信号对外界的电磁干扰较小。差分信号的缺点也是显而易见的,一是差分信号使用两根信号传送一位数据;二是差分信号的布线相对严格一些。
PCIe链路可以由多条Lane组成,目前PCIe链路可以支持1、2、4、8、12、16和32个Lane,即×1、×2、×4、×8、×12、×16和×32宽度的PCIe链路。每一个Lane上使用的总线频率与PCIe总线使用的版本相关。
第1个PCIe总线规范为V1.0,之后依次为V1.0a,V1.1,V2.0和V2.1。目前PCIe总线的最新规范为V2.1,而V3.0正在开发过程中,预计在2010年发布。不同的PCIe总线规范所定义的总线频率和链路编码方式并不相同,如表41所示。
表41 PCIe总线规范与总线频率和编码的关系
如上表所示,不同的PCIe总线规范使用的总线频率并不相同,其使用的数据编码方式也不相同。PCIe总线V1.x和V2.0规范在物理层中使用8/10b编码,即在PCIe链路上的10 bit中含有8 bit的有效数据;而V3.0规范使用128/130b编码方式,即在PCIe链路上的130 bit中含有128 bit的有效数据。
由上表所示,V3.0规范使用的总线频率虽然只有4GHz,其有效带宽是V2.x的两倍。下文将以V2.x规范为例,说明不同宽度PCIe链路所能提供的峰值带宽,如表42所示。
表42 PCIe总线的峰值带宽
由上表所示,×32的PCIe链路可以提供160GT/s的链路带宽,远高于PCI/PCI-X总线所能提供的峰值带宽。而即将推出的PCIe V3.0规范使用4GHz的总线频率,将进一步提高PCIe链路的峰值带宽。
在PCIe总线中,使用GT(Gigatransfer)计算PCIe链路的峰值带宽。GT是在PCIe链路上传递的峰值带宽,其计算公式为总线频率×数据位宽×2。
在PCIe总线中,影响有效带宽的因素有很多,因而其有效带宽较难计算。尽管如此,PCIe总线提供的有效带宽还是远高于PCI总线。PCIe总线也有其弱点,其中最突出的问题是传送延时。
PCIe链路使用串行方式进行数据传送,在芯片内部,数据总线仍然是并行的,PCIe链路接口需要进行串并转换,这种串并转换将产生较大的延时。除此之外PCIe总线的数据报文需要经过事务层、数据链路层和物理层,这些数据报文在穿越这些层次时,也将带来延时。
在基于PCIe总线的设备中,×1的PCIe链路最为常见,而×12的PCIe链路极少出现,×4和×8的PCIe设备也不多见。Intel通常在ICH中集成了多个×1的PCIe链路用来连接低速外设,而在MCH中集成了一个×16的PCIe链路用于连接显卡控制器。而PoerPC处理器通常能够支持×8、×4、×2和×1的PCIe链路。
PCIe总线物理链路间的数据传送使用基于时钟的同步传送机制,在物理链路上并没有时钟线,PCIe总线的接收端含有时钟恢复模块CDR(Clock Data Recovery),CDR将从接收报文中提取接收时钟,从而进行同步数据传递。
值得注意的是,在一个PCIe设备中除了需要从报文中提取时钟外,还使用了REFCLK+和REFCLK-信号对作为本地参考时钟,这个信号对的描述见下文。
1.4 数据链路的扩展 PCIe链路使用端到端的数据传送方式。在一条PCIe链路中,这两个端口是完全对等的,分别连接发送与接收设备,而且一个PCIe链路的一端只能连接一个发送设备或者接收设备。PCIe链路必须使用Sitch扩展PCIe链路后,才能连接多个设备。使用Sitch进行链路扩展的实例如图45所示。
在PCIe总线中,Sitch[2]是一个特殊的设备,该设备由1个上游端口和2~n个下游端口组成。PCIe总线规定,在一个Sitch中可以与RC直接或者间接相连[3]的端口为上游端口,在PCIe总线中,RC的位置一般在上方,这也是上游端口这个称呼的由来。在Sitch中除了上游端口外,其他所有端口都被称为下游端口。下游端口一般与EP相连,或者连接下一级Sitch继续扩展PCIe链路。其中与上游端口相连的PCIe链路被称为上游链路,与下游端口相连的PCIe链路被称为下游链路。
上游链路和下游链路是一个相对的概念。如上图所示,Sitch与EP2连接的PCIe链路,对于EP2而言是上游链路,而对Sitch而言是下游链路。
在上图所示的Sitch中含有3个端口,其中一个是上游端口(Upstream Port),而其他两个为下游端口(Donstream Port)。其中上游端口与RC或者其他Sitch的下游端口相连,而下游端口与EP或者其他Sitch的上游端口相连。
在Sitch中,还有两个与端口相关的概念,分别是Egress端口和Ingress端口。这两个端口与通过Sitch的数据流向有关。其中Egress端口指发送端口,即数据离开Sitch使用的端口;Ingress端口指接收端口即数据进入Sitch使用的端口。
Egress端口和Ingress端口与上下游端口没有对应关系。在Sitch中,上下游端口可以作为Egress端口,也可以作为Ingress端口。如图45所示,RC对EP3的内部寄存器进行写操作时,Sitch的上游端口为Ingress端口,而下游端口为Egress端口;当EP3对主存储器进行DMA写操作时,该Sitch的上游端口为Egress端口,而下游端口为Ingress端口。
PCIe总线还规定了一种特殊的Sitch连接方式,即Crosslink连接模式。支持这种模式的Sitch,其上游端口可以与其他Sitch的上游端口连接,其下游端口可以与其他Sitch的下游端口连接。
PCIe总线提供CrossLink连接模式的主要目的是为了解决不同处理器系统之间的互连,如图46所示。使用CrossLink连接模式时,虽然从物理结构上看,一个Sitch的上/下游端口与另一个Sitch的上/下游端口直接相连,这个PCIe链路经过训练后,仍然是一个端口作为上游端口,而另一个作为下游端口。
处理器系统1与处理器系统2间的数据交换可以通过Crosslink进行。当处理器系统1(2)访问的PCI总线域的地址空间或者Requester ID不在处理器系统1(2)内时,这些数据将被Crosslink端口接收,并传递到对端处理器系统中。Crosslink对端接口的P2P桥将接收来自另一个处理器域的数据请求,并将其转换为本处理器域的数据请求。
使用Crosslink方式连接两个拓扑结构完全相同的处理器系统时,仍然有不足之处。假设图46中的处理器系统1和2的RC使用的ID号都为0,而主存储器都是从0x0000-0000开始编址时。当处理器1读取EP2的某段PCI总线空间时,EP2将使用ID路由方式,将完成报文传送给ID号为0的PCI设备,此时是处理器2的RC而不是处理器1的RC收到EP2的数据。因为处理器1和2的RC使用的ID号都为0,EP2不能区分这两个RC。
由上所述,使用Crosslink方式并不能完全解决两个处理器系统的互连问题,在有些Sitch中支持非透明桥结构。这种结构与PCI总线非透明桥的实现机制类似,本章对此不做进一步说明。
PCIE可通过数据链路扩展为X2、X4、X8、X16等。PCI是并行的,PCI后期越来越不能适应高速发展的数据传输需求,PCI-X和AGP走了两条略有不同的路径,PCI-x不断提高时钟频率,而AGP通过在一个时钟周期内传输多次数据来提速。随着频率的提高,PCI并行传输遇到了干扰的问题高速传输的时候,并行的连线直接干扰异常严重,而且随着频率的提高,干扰(EMI)越来越不可跨越。衍生出PCIE串行。
PCIe和PCI最大的改变是由并行改为串行,通过使用差分信号传输(differential transmission),如图
相同内容通过一正一反镜像传输,干扰可以很快被发现和纠正,从而可以将传输频率大幅提升。加上PCI原来基本是半双工的(地址/数据线太多,不得不复用线路),而串行可以全双工。综合下来,如果如果我们从频率提高下来得到的收益大于一次传输多个bit的收益,这个选择就是合理的。我们做个简单的计算:
PCI传输: 33MHz x 4B = 133MB/s
PCIe 1.0 x1: 2.5GHz x 1b = 250MB/s
速度快了一倍!我们还得到了的好处,例如布线简单,线路可以加长(甚至变成线缆连出机箱!),多个lane还可以整合成为更高带宽的线路等等。
PCIe还在很多方面和PCI有很大不同
1. PCI是总线结构,而PCIe是点对点结构。一个典型的PCIe系统框图如下
一个典型的结构是一个root port和一个endpoint直接组成一个点对点连接对,而Sitch可以连接几个endpoint。一个root port和一个endpoint对就需要一个单独的PCI bus。而PCI是在同一个总线上的设备共享同一个bus number。过去主板上的PCI插槽都公用一个PCI bus,而现在的PCIe插槽却连在芯片组不同的root port上。
2. PCIe的连线是由不同的lane来连接的,这些lane可以合在一起提供更高的带宽。譬如两个1lane可以合成2lane的连接,写作x2。两个x2可以变成x4,最大直到x16,往往给带宽需求最大的显卡使用。
3. PCI配置空间从256B扩展为4k,提供了PCIe memory map访问方式,我们在软件部分会详细介绍。
4.PCIe提供了很多特殊功能,如Complete Timeout(CTO),MaxPayload等等几十个特性,而且还在随着PCIe版本的进化不断增加中,对电源管理也提出了单独的State(L0/L0s/L1等等)。这些请参见PCIe 3.0 spec,本文不再详述。
5. 其他VC的内容,和固件理解无关,本文不再提及。INT到MSI的部分会在将来介绍PC中断系统时详细讲解。
PCIe 1.0和2.0采用了8b/10b编码方式,这意味着每个字节(8b)都用10bit传输,这就是为什么2.5GHz和5GHz时钟,每时钟1b数据,结果不是312.5MB/s和625MB/s而是250MB/s和500MB/s。PCIe 3.0和4.0采用128b/130b编码,减小了浪费(overhead),所以才能在8GHz时钟下带宽达到1000MB/s(而不是800MB/s)。即将于今年发布的PCIe 4.0还会将频率提高一倍,达到16GHz,带宽达到2GB/s每Lane。
NVME则是 基于PCIE的传输协议,PCIE相当于硬件接口协议。
1. SATA接口常见的SATA接口的SSD盘如下图所示,包括电源接口和数据接口。
1.1 SATA数据接口定义1.2 电源接口定义
三路电源是为了兼容机械硬盘(HDD),12V是给主轴马达磁头臂供电的,3.3V很多机械盘也用不上,5V是给电路供电的。
现在常见的固态硬盘一般使用的都是+5V电源。
SATA也是差分串行传输的,ATA是并行传输的,SATA也叫做serialATA即串行ATA。
AHCI也相当于适用于SATA的传输协议。
PCIE和SATA有自己的插槽形硬件接口,但现在都普遍用M.2接口,兼容PCIE和SATA,M.2接口一般金手指结构,金手指一般指内存条的金黄色导电触片。
PCIe和SATA是两种不同的接口标准,二者的本质的区别是通信架构的不同,PCIe属于全双工模式,而SATA是半双工模式。
简单的来说,全双工模式允许数据双向传输,而半双工模式只允许数据单向传输。全双工模式传输的优势就是传输速度快,延迟低。
从系统架构上来说,PCIe比SATA要简单。PCIe SSD硬盘在直接连在CPU上,不过,准确的来说,是CPU的小蜜,Root Complex。CPU作为系统的大脑,事务繁忙,日理万机。RC端帮助CPU处理与设备之间的交互。
SATA接口协议已经发展到第三代,最大理论速度是600MB/s. SATA接口上层对接的系统控制接口属于AHCI。我们平时用的SATA SSD用的一般是SATA3, 实际测试速度在550MB/s左右,这比普通机械硬盘100MB/s左右的读写速度,要快数倍了。
PCIe是一种高速差分信号总线,已经发展的到了第四代,PCIe4.0单向带宽速度可以达到1GB/s。PCIe支持1,2,4,8,16个总线宽度,消费级SSD采用最大的是PCIe 3.0 x4, 也就说,PCIe 3.0 x4的SSD最大理论速度可以达到4GB/s. 据我所看到的,目前SSD厂商能做到的最大的实际测试速度是3.5GB/s. 这个速度比SATA的500MB/s速度要快了7倍。
,与SATA接口对接系统接口AHCI不同,PCIe接口上层对接的系统接口标准是NVMe。NVMe与AHCI相比,具有很多的优势。延迟低,最大支持64K队列,命令执行更简单等等。这些优势存在让PCIe是如鱼得水。带NVMe的带领下,PCIe SSD拥有的更快的速度,更低的延迟。
http://t.csdn./68jgf
http://t.csdn./hDfjl
http://t.csdn./ujyrL
扫盲SATA、mSATA、PCIe和M.2——SSD硬盘的接口 - 百度文库 (baidu.)
为什么PCI-e比SATA快这么多? (baidu.)
空调维修
- 海信电视维修站 海信电视维修站点
- 格兰仕空调售后电话 格兰仕空调维修售后服务电
- 家电售后服务 家电售后服务流程
- 华扬太阳能维修 华扬太阳能维修收费标准表
- 三菱电机空调维修 三菱电机空调维修费用高吗
- 美的燃气灶维修 美的燃气灶维修收费标准明细
- 科龙空调售后服务 科龙空调售后服务网点
- 华帝热水器维修 华帝热水器维修常见故障
- 康泉热水器维修 康泉热水器维修故障
- 华凌冰箱维修电话 华凌冰箱维修点电话
- 海尔维修站 海尔维修站点地址在哪里
- 北京海信空调维修 北京海信空调售后服务
- 科龙空调维修 科龙空调维修故障
- 皇明太阳能售后 皇明太阳能售后维修点
- 海信冰箱售后服务 海信冰箱售后服务热线电话
- 海尔热水器服务热线