pcie学习

device number: PCIE设备在它的primary interface(upstream port)只有一个device number, 而一个device number可以有1~8个function.

 

pcie地址空间与存储器空间的区别。

pcie设备之间或者与处理器或主存储器进行数据传输时,使用的都是pcie地址空间,pcie host主桥将负责pcie地址空间与存储器空间的转换。

 

Posted总线事务指PCI主设备向PCI目标设备进行数据传递时,当数据到达PCI桥后,即由PCI桥接管来自上游总线的总线事务,并将其转发到下游总线。采用这种数据传送方式,在数据还没有到达最终的目的地之前,PCI总线就可以结束当前总线事务,从而在一定程度上解决了PCI总线的拥塞。

Non-Posted总线事务是指PCI主设备向PCI目标设备进行数据传递时,数据必须到达最终目的地之后,才能结束当前总线事务的一种数据传递方式。

Non-posted需要等待completion。一般read request是Non-posted,而write request是posted。

Posted Request包括:memory-write request,message request.

Non-Posted Request包括:Configuration read request, I/O read request, memory read request, configuration write request, I/O write request, atomicOp request。

 

其中HOST主桥或者PCI桥使用Type 00h配置请求,访问与HOST主桥或者PCI桥直接相连的PCI Agent设备或者PCI桥;而HOST主桥或者PCI桥使用Type 01h配置请求,需要至少穿越一个PCI桥,访问没有与其直接相连的PCI Agent设备或者PCI桥。

 

BAR的设置

PCIE一般有BAR0~5六个基地址寄存器,BAR可以用来指定一个地址空间。

BAR寄存器的最低位为0表明是memory space,为1表明是IO space.

PCIE BAR分为RC BAR和DEVICE BAR。

 

D0~D3

D0状态分为D0-uninitialized和D0-active状态。Reset结束之后,link建立之后,device即处在D0-uninitialized状态,然后进行enumeration,enumeration结束后就进入D0-active状态。

D1(optional):Fucntion只能发送PME message,且只能接收message和configuration TLP。

D2(optional):Fucntion只能发送PME message,且只能接收message和configuration TLP。

D3(required):分D3-cold和D3-hot,在D3-hot,如果PMCSR的No_Soft_Reset位置为1,表明function context在D3-hot能被保持住,从D3-hot跳转至D0时,不用重新做enumeration,否则,会跳转至D0-uninitialized状态,需要重新初始化。如果Link状态跳转到了L2/L3,则不管No_Soft_Reset是否为1,function都会被reset掉。D3-hot能接收Configuration和message TLP。当main power被remove后,function会进到D3-cold。

 

Correctable/Uncorrectable error:

Correctable Error是指可以通过Hardware来纠正的的error,不需要software来干预,例如LCRC Error。

Uncorrectable Error分为Fatal和Non-Fatal,Fatal Error需要复位component。Non-Fatal Error可能不需要reset。

ECRC Error是non-fatal uncorrectable error.

Error reporting有3种方式:1、completion status;2、in-band error message;3、Error Forwarding (data poisoning)。

支持AER的会发ERR message,不支持的不会发。

 

LTR的作用:

LTR可以提高platform power efficiency. 当各个device报告自己的LTR后,Host会根据各LTR大小来集中处理request,从而达到提高效率的作用。

 

Snoop/No-snoop request:snoop request针对cache操作。

 

ECRC是end-end检测,而LCRC是port-port检测。LCRC error会引发link layer retry. 而ECRC error是否需要重发由系统软件决定。针对ECRC Error的Non-posted requestion, 会返回UR状态的completion。

Data poinson(EP=1) 只用于带data payload的TLP。

Trasmitter会备份已发送的TLP,只有当收到对端传回的postive ack,才会将所备份的TLP删除。如果在规定时间内没有收到postive ack,或者收到了negative ack,transmitter将重发该TLP。replay_num是一个2bit的计数器,如果replay_num从'b11变为'b00,data link layer将会触发一个physical layer 的link-retrain。当完成re-training之后,将会re-sent TLP.收到ACK后,该计数器才会复位。

DLLP的种类有TLP ACK/NAK,power management,flow control information。

Flow Control Credit主要针对Data Payload.

Data Link Layer通过sequence number和LCRC来确保TLP的发送,当没有收到对端的ACK,将重新发送retry buffer中保存的TLP,如果重发也不成功,则公职Physical Layer retrain Link,通过LTSSM Recovery。

Scramber的作用是打乱数据,减少重复出现的比特流造成电流集中,从而降低EMI效应。

8B/10B的主要作用是在比特流中创建足够的1->0、0->1跳变,从而使接收端的PLL能够还原出接收时钟。

 

address routing: memory read/write atomicOp request can using either 64bit/32bit address routing, I/O read/write request can use 32bit address routing.

ID routing: is used with Configuration request, ID Routed Messages, completions.

implicit routing: is used only with Message request.

 

completion timeout机制:

所有的需要completion的request都有completion timeout机制,除了configuration request.

completion timeout limit由Device Control 2寄存器中的Completion Timeout Value设置。

TLP digest指的是TLP中的ECRC,当TD=1,表明该TLP包含ECRC,否则没有ECRC。

peer-to-peer传输是指PCIE devices之间直接进行的传输。

RC发送Memory Read request时,TLP中需要有address, TLP type, requester ID,和length。address用来寻找completer,而requester ID则是被completer用来返回CPLD。

为什么会有4KB boundary?可能跟PC系统内存采用4KB页面有关。

+-300ppm的意思是允许每1666个clock偏移一个clock.

CPLD通过requester_ID来寻址。当requester发出多个outstanding request之后,且CPLD存在out-of-order情况,怎样判断收到的CPLD跟哪个request相对应呢?答案是,发送outstanding request时,由于没有收到CPLD,tag值会递增,从而每个request都会有一个不同的tag,然后CPLD也会存在tag,这样就可以根据tag来匹配request。而且CPLD中带有8bit的low_address,也可以用来辅助匹配request。

 

对于PCIE2.0,包的构成是:

STP+TLP+END或者STP+TLP+EDB

SDP+DLLP+END

转载于:https://www.cnblogs.com/lybinger/p/5276568.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值