您的位置:首页 > 其它

PCIe学习笔记分享

2016-12-02 15:57 204 查看



目录[+]


                                                                                                                   


1、概述

    本总结随着DM8168中PCIe的学习,以及PCIe原理的学习而添加,都是一些零碎的知识点,有部分个人理解,将来温故知新用。

链接地址链接地址链接地址链接地址《PCI
Express 体系结构导读》,《PCI EXpress系统体系结构标准教材》DM8168相关文档,网上搜集资料。


2、DM8168的PCIe总线

欠奉。


3、RC(Root Complex)

    RC的主要功能与PCI总线中的HOST主桥类似,但是在HOST主桥的基础上增加了许多功能,RC可以理解为一个PCIe总线控制器,在X86处理器的体系结构中,RC并不仅仅管理PCIe设备的数据访问,而且还包含访问控制、错误处理和虚拟化技术等一系列内容<P100,《PCI Express 体系结构导读》>。


4、关键的参考时钟REFCLK+/-,100Mhz

    PCIe设备需要使用REFCLK+,REFCLK作为本地参考时钟,其时钟频率固定为100Mhz,在DM8168系统中,需要提供两个100Mhz时钟,一个给DM8168用于检测PCIe并且同步PCIe设备,一个给PCIe插槽用于EP的本地参考时钟,两个时钟必须同源,以保证PCIe挂载设备与系统同步。


5、WAKE#,JTAG,PRSNT1#,PRSNT2#,SMCLK#,SMDAT#

WAKE#: 当PCIe设备进入休眠需要唤醒时,PCIe设备通过WAKE#信号使处理器重新为PCIe设备供电,达到唤醒目的。

 

JTAG: 常见调试接口,在PCIe接口中由TRST#,TCK, TDK, TDO和TMS信号组成。

 

PRSNT1#,PRSNT2#: 与PCIe设备热插拔有关的一组信号。DM816x设备不支持热插拔。

SMCLK#,SMDAT#:P105~106《导读》

 

链接地址链接地址P105~106《导读》


6、PCIe总线层次结构

    PCIe总线采用串行的连接方式,并使用数据包(Packet)进行数据传输,在数据包的接收和发送过程中,需要经过多个层次,包括事务层,数据链路层和物理层三层。类似网络传输的OSI七层模型。

   PCIe为互联设备提供高速,高性能,点对点,双—单工,差分信号链路。数据从一组信号线发送,在另一组信号线上接收。


7、PCIe设备的复位方式

   PCIe总线规定了两大类的复位方式,一种是传统的复位方式(Conventional Reset),另一种是FLR(Function-Level Reset)方式。

    传统的复位方式有Cord,Warm和Hot Reset三种方式。cordReset方式就是PCIe上电时系统通过PERST#脚进行复位,类似9650外围芯片的阻容复位,我理解是一种硬复位。而warm Reset类似于看门狗,在系统上电运行后,通过看门狗等方式对PCIe进行的复位,应该属于PCIe设备全局复位,复位后PCIe设备重新启动运行。Hot Reset复位,是使用软件对PCIe设备进行复位,如系统软件对Bridge Control Register某位置1,该桥片对PCIe设备进行复位。

    FLR方式,即Function-LevelReset方式,这个方式与上述传统复位有什么区别,举个例子:当PCIe网卡的某个功能模块“与网络部分相关”的逻辑需要复位,而传统方式(cold,warm,hot reset)不能做到局部复位,而FLR方式就是一种局部复位。DM8168不支持FLR方式。17.1.3sprugx8b.pdf


8、北桥芯片

    北桥芯片   它主要负责CPU与内存之间的数据交换,并控制AGP、PCI数据在其内部的传输,是主板性能的主要决定因素。随着芯片的集成度越来越高,它也集成了不少其它功能。如:由于Althon64内部整合了内存控制器;nVidia在其NF3 250、NF4等芯片组中,去掉了南桥,而在北桥中则加入千兆网络、串口硬盘控制等功能。现在主流的北桥芯征的牌子有VIA、NVIDIA及SIS等。  当然这些芯片的好坏并不是由主板生产厂家所决定的,但是主板生产商采取什么样的芯片生产却是直接决定了主板的性能。如:同样是采用VIA的芯片,性能上则有KT600>KT400A>KT333>KT266A等。目前主流的
AMD平台上,可选的芯片组有:KT600、NF2、K8T800、NF3等;对于INTEL平台,则有915、865PE、PT880、845PE、 848P等。


9、南桥芯片

    南桥芯片主要是负责I/O接口等一些外设接口的控制、IDE设备的控制及附加功能等等。常见的有VIA的8235、8237等;INTEL的有CH4、CH5、CH6等;nVIDIA的MCP、MCP-T、MCP RAID等。在这部分上,名牌主板与一般的主板并没有很大的差异,但是名牌主板凭着其出色的做工,还是成为不少人的首选。而不排除一部分质量稍差的主板为了在竞争中取得生存,可能会采用功能更强的南桥以求在功能上取胜。


10、FSB(Front Side BUS)前端总线

    FSB只指CPU与北桥芯片之间的数据传输总线,又称前端总线。  对于P4来说,FSB频率=CPU外频*4。  这个参数指的就是前端总线的频率,它是处理器与主板交换数据的通道北桥芯片负责联系内存、显卡等数据吞吐量最大的部件,并和南桥芯片连接。CPU就是通过前端总线(FSB)连接到北桥芯片,进而通过北桥芯片和内存、显卡交换数据。前端总线是CPU和外界交换数据的最主要通道,因此前端总线的数据传输能力对计算机整体性能作用很大,如果没足够快的前端总线,再强的CPU也不能明显提高计算机整体速度。数据传输最大带宽取决于所有同时传输的数据的宽度和传输频率,即数据带宽=(总线频率×数据位宽)÷8。目前PC机上所能达到的前端总线频率有266MHz、333MHz、400MHz、533MHz、800MHz几种,前端总线频率越大,代表着CPU与北桥芯片之间的数据传输能力越大,更能充分发挥出CPU的功能。


11、Switch

    由于PCIe总线使用端到端的连接方式,一条PCIe链路只能连接一个设备。当一个PCIe链路需要挂接多个EP时,需要使用Switch进行扩展。一个标准的Switch具有一个上游端口和多个下游端口。上游端口与RC或者其他Switch的下游端口相连,而下游端口可以与EP、PCIe-to-PCI桥或者下游Switch的上游端口相连。Switch是一种链路扩展的方式。


12、VC和端口仲裁


13、PCIe-to-PCI/PCI-X桥片

    PCIe-to-PCI桥片:将PCIe总线转换为PCI总线,以实现PCIe设备与PCI设备的互联,理解为转换器。

    同理PCIe-to-PCI-X桥片。


14、TLP(Transaction Layer Packet)

  TLP称为事务层数据报文,当处理器或者其他PCIe设备访问PCIe设备时,所传送的数据报文首先通过事务层被封装为一个或者多个TLP,之后才能通过PCIe总线的各个层次发送出去。TLP的概念类似于TCP/IP协议中的UDP包,或者TCP包等。具体结构看(p155~p156《PCI Express体系结构导读》)


15、TLP的路由

    TLP的路由是指TLP通过Switch或者PCIe桥片时采用那条路径,最终到达EP或者RC的方法。PCIe总线一共定义了三种路由方法,分别是基于地址(Address)的路由,基于ID的路由和隐式路由(Implicit)方式。


16、PCI Express Capability, PCI Express Extended Capabillities, PowerManagement Capability

   这部分内容在sprugx8b.pdf17.4.8~17.4.11中有关于DM81xx的PCIe相关寄存器配置,其寄存器具体定义参见《PCI Express体系结构导读》4.3节,p123~p133。


17、Max_Payload_Size参数

   链接地址 Max_Payload_Size参数决定了一个TLP报文可能使用的最大有效负载,PCIe总线规定Max_Payload_Size的最大值为4096B,但是许多PCIe设备不一定能够支持这么大的负载。在实际应用中,一个PCIe设备的支持的Max_Payload_Size参数通常是128B,256B或者512B。

    还有一个参数Max_Payload_Size_Supported,表示PCIe设备中允许使用的Max_Payload_size参数。通常是两端的PCIe设备进行协商,确定实际使用值。P128《导读》。


18、LTSSM状态机

P218《导读》,sprugx8b.pdf17.4.3节也有提到。


19、MSI,MSI-X,Legacy中断机制          

    区别于使用INTx引脚提交的中断请求,MSI和MSI-X中断机制使用存储器写请求的TLP向处理器提交中断请求,也就是说这种中断的方法是嵌在TLP报文中的。不同的处理器对PCIe设备发出的MSI报文的解释并不相同。但是PCIe设备在提交MSI中断请求时,都是向MSI/MSI-X Capability结构中的Message Address的地址写Message Data数据,从而组成一个存储器写TLP,向处理器提交中断请求。

    有些PCIe设备还支持Legacy中断方式,比如DM8168,这种中断方式是通过发送Assert_INTx和Deassert_INTx消息报文进行中断请求,即虚拟中断线(INTx)的方式。在PCIe体系结构中,仍然存在许多PCI设备,而这些设备通过PCIe桥连接到PCIe总线中,这些设备可能并不支持MSI/MSI-X中断机制,因此必须使用INTx信号进行中断请求。

P263《导读》


20、BAR


21、type 0, type 1


22、PERST#, PWRGD#

    该信号为全局复位信号,由处理器系统提供,处理器系统需要为PCIe插槽和PCIe设备提供该复位信号。PCIe设备使用该信号复位内部逻辑,当该信号有效时,PCIe设备将进行复位操作。PCIe总线的Cold Reset和Warm Reset这两种复位方式的实现与该信号有关。P103《导读》

   


23、inbound, outbound

    这个见于pcie设备和系统内存互访问时,outbound是指CPU到设备方向;inbound指Device--> RC(CPU端)方向。从这个概念上说,设备(device)都是外部的,没有内部设备之说。CPU读写RC 端的寄存器时,还是属于片上系统的范围,所以既不是inbound 也不是outbound。

    简单的说,如果CPU读写PCI BAR 的总线地址,就是outbound,如果设备读写CPU端的主存,就是inbound。

http://www.aiuxian.com/article/p-400260.html


24、Lane Reversal, Polarity Inversion

    PCIe总线规定,PCIe链路两端的设备所使用的Lane可以错序进行连接,PCIe总线规范该功能为“LaneReversal”。在相同的Lane上,差分信号的极性也可以错序连接,PCIe总线规范将该功能称为“Polarity Inversion”。


25、PCI 枚举

    所谓枚举,就是从Host/PCI桥开始进行探测和扫描,逐个“枚举”连接在第一条PCI总线上的所有设备并记录在案。如果其中的某个设备是PCI-PCI桥,则又进一步再探测和扫描连在这个桥上的次级PCI总线。就这样递归下去,直到穷尽系统中的所有PCI设备。其结果,是在内存中建立起一棵代表着这些PCI总线和设备的PCI树。每个PCI设备(包括PCI桥设备)都由一个pci_dev结构体来表示,而每条PCI总线则由pci_bus结构来表示。

链接地址


26、PCIE 插槽图

序号
B面
功能
A面
功能
01
+12v
+12v电压
PRSNT1#
热拨插存在检测
02
+12v
+12v电压
+12v
+12v电压
03
RSVD
保留针脚
+12v
+12v电压
04
GND

GND

05
SMCLK
系统管理总线时钟
JTAG2
测试时钟、JTAG接口输出时钟
06
SMDAT
系统管理总线数据
JTAG3
测试数据输出
07
GND

JTAG4
测试模式选择
08
+3.3v
+3.3.v电压
JTAG5
测试模式选择
09
JTAG1
测试复位,JTAG接口复位时钟
+3.3v
+3.3.v电压
10
3.3vaux
3.3v辅助电源
+3.3v
+3.3.v电压
11
WAKE#
链接激活信号
PERST#
PCIe复位信号
12
RSVD
保留针脚
GND

13
GND

REFCLK+
差分信号对的参考时钟
14
PETp0
0号信道发送
REFCLK-
15
PETn0
GND

16
GND

PERp0
0号信道接收
17
PRSNT2#
热拨插存在检测
PERn0
18
GND

GND

参考:链接地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: