PCIE相关问题收集(持续更新)

1.PCIE中link_up和link_down是什么?

A:link_up:将DUT和VIP连接正确后,没有问题的话链路应该可以link training到双方所能支持到的最高速率,并且LTSSM(链路训练和状态机)状态机处于L0状态。也可以观测DUT link up成功的指示信号(如果有的话)。

link_down:1).主机进行hotreset操作同时rc会发送present信号给ep,此时PCIe总线两端均恢复为初始状态走ltssm建立link。

2).主机设置linkdisable寄存器置位,导致rc发送linkdown信号给ep设备,ep收到linkdown信号,产生复位行为进入初始状态,当主机侧设置linkenable置位时,PCIe总线两端开始建立link, linkenable不置位则不建立link。

2.DLLP(数据链路层包)和TLP(事务层)之间的关系

  以寄快递为例,我们说过寄快递时,想真正发到目的地的是TLP,而DLLP相当于快递员为了保证自己工作的有效性而做的快递工作者之间传递的消息。快递员上门收到你的快递并打包好之后,因为他一个小区收了120个快递,等他回到公司和货车交接时,如果仅仅是把快递(TLP)放到车上运走,那么如何保证货物完整和安全呢?如果货车司机说车上只有115件,那缺了的5件是哪5件?司机也可能拒绝装车,因为车上还能装200KG,快递员却收了350KG的货物。

  所以快递工作者之间需要沟通,比如司机要定时给快递更新自己的剩余吨位信息;比如快递送到货车时要写个收据来确认收发件完成等等。当然快递工作者之间的这种沟通,寄件人和收件人(Transaction Layer)本身是不需要知道的。

3.PCIe LCRC 和 ECRC是什么?他们的区别是什么?

ECRC:end  to end crc 端到端数据循环冗余校验

LCRC:link crc 链路数据循环冗余校验

 4.non-posted NPT(非转发)事务和posted PT(转发)事务

Non-posted(非转发)事务和-posted(转发)事务都是PCIE TLP(事务层包)类型。Non-posted TLP有返回TLP,而posted事务没有返回。记忆技巧:非转发事务非要返回。

memread、IO和cfg属于非转发事务。非转发事务按照分割事务的方法处理,请求者发情TLP请求给接受者,然后,接受者返回完成TLP给请求者,通知请求者说明自己已经接受到了请求TLP。例如存取读和IO读,在返回TLP中都包含所读数据。

memwr和massage属于转发事务。转发事务不需要返回TLP来确定事务是否完成。那么凭什么保证转发TLP正确传输呢,其实是通过数据链路层的Nak DLLP的和ACK DLLP来保证转发TLP正确的从发送到传输到接收端的。

5.PCIe 包头信息中Sequence Number是什么?有什么作用?

  DL 层在发生 TLP 前会给每一个 TLP 添加一个序列号,即 Sequence Number。

  接收端 DL 层在检查完 LCRC 后对 Sequence Number 进行检查,判断接收到的序列号是否与期望值一致,以此判断是否有丢包。出现丢包的话,依据 Sequence Number 发送 NAK 请求重传丢掉的包。短时间内收到 Sequence Number 相同的重复包不视为错误处理。 

6.PCIE log 文件/包头中requester ID 和 tag 是啥?有啥作用?

1)请求者标识符 RequesterID[15∶0] 用来标识事务的请求者,以便对应的完成能够返回。在 RequesterID[15∶0]中,位 [15∶8]为总线号;位[7∶3]为设备号;位[2∶0]为功能号。

2)标签 Tag[7∶0] 这个字段用来标识由请求者发出的诸挂起请求,随着非转发请求的发出,为其顺序分 配标签号,相应的完成返回时带有与原请求包相同的标签号,以便与一个挂起的请求挂上 钩。本字段默认情况下只使用位[4∶0],同时可以有32个挂起事务;如果设备控制寄存 器中的 ExtendedTag位置1,则启用全部8位,可达256个标签(参见17.1.3节)。 对于存储器写 请 求,由于是转发事务,无 完 成 返 回,故不分配标签号,此 字 段 应 该 为0。

7.什么是PCIE枚举过程?有啥讲究?

每当系统加电时,配置软件需要扫描 PCIExpress线路结构,以了解其拓扑结构,称 为枚举 过 程。在 枚 举 之 前,配置软件根据规定只知道 HostPCI桥 在 根 复 合 体 中,以 及 HostPCI桥的次级总线为总线0。配置软件从搜索总线0上设备0中的功能0开始,沿 纵向、按分支,探查发现所有的桥、桥下总线、总线上的设备及设备内的功能,按序将它们 编号,并填充桥的原级、次级和下属总线号寄存器。在一条 PCIExpress链路上仅挂一个 设备,总是视为设备0。

8.什么是4KB边界,为啥要有防止4K越界的约束?

Requests must not specify an Address/Length combination which causes a Memory Space access to cross a 4-KB boundary.就是说在pcie使用DMA机制时,基地址的[11:0]+len(单位byte)不能大于12‘hfff(等价于addr[11:2]+len(dw)<1024),否则读取会出问题(经实际测试,当基地址的[11:0]+len>=16‘h1000时,应答帧有时有,有时没有)。比如基地址为xxxxxxffc,长度为20DW,这就不行了。要不就分成两次读取,要不地址申请时地址加长度在4K范围内。

原因:因为PC的内存管理是分页面的(page),一个page一般是4KB。所以加这个限制的话便于页面存储和管理。PCI-33M/66M也有这个限制。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值