PCIe学习笔记分享

来源:互联网 发布:listview怎么添加数据 编辑:程序博客网 时间:2024/05/02 02:24

                                                                                                                   

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://blog.csdn.net/JuanA1/article/details/6695939

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结构来表示。

http://blog.csdn.net/linuxdrivers/article/details/5849698

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

参考:http://wenku.baidu.com/view/8252090bbb68a98271fefab5.html

1 0
原创粉丝点击