jsp购物网站开发 论文,海口澄迈县建设局网站,logo设计编辑器,google搜索引擎入口2022#x1f525;博客主页#xff1a;PannLZ 文章目录 PCIe TLP结构PCIe配置空间和地址空间 PCIe TLP结构 TLP 主要由3个部分组成#xff1a; Header 、 数据(可选#xff0c;取决于具体的TLP 类 型 ) 和 ECRC (End to End CRC, 可选)。TLP 都始于发送端的事务层#xff0c;终…
博客主页PannLZ 文章目录 PCIe TLP结构PCIe配置空间和地址空间 PCIe TLP结构 TLP 主要由3个部分组成 Header 、 数据(可选取决于具体的TLP 类 型 ) 和 ECRC (End to End CRC, 可选)。TLP 都始于发送端的事务层终于接收端的事务层。
每个 TLP 都有一个 Header 。 事务层根据上层请求内容生成 TLP Header 。Header 包括 发送者的相关信息、目标地址(该 TLP 要发给谁)、TLP 类型(诸如前面提到的内存读、内 存写)、数据长度(如果有数据的话)等。
ECRC 域为之前的 Header 和数据(如果有的话)生成一个CRC, 在接收端根据收到的 TLP 重新生成 Header 和数据(如果有的话)的CRC, 与收到的 CRC 比较 一样则说明数据 在传输过程中没有出错否则就有错。
TLP Header的公共部分各项内容:
Fmt : Format, 表明该 TLP是否带有数据Header 是 3 DW 还是4 DW。Type : TLP 类型包括内存读、内存写、配置读、配置写、消息和响应等。 口 R : Reserved, 等于0。TC: Traffic Class,TLP也分三六九等优先级高的先得到服务。TC : 3 bit 说明可以 分为07这8个等级TC 默认是0,数字越大优先级越高。Attr : Attribute, 属性前后共三个位。TH : TLP Processing Hints(处理提示)。TD : TLP Digest,之前说 ECRC可选如果这位被设置则说明该 TLP包含 ECRC, 接收端应该做 CRC校验。EP: “有毒”的数据应远离。AT : Address Type,地址种类。长度 Payload 数据长度10位最大为1024,单位为DW, 所以 TLP最大数据长 度是4 KB。该长度总是为DW 的整数倍如果TLP 的数据不是 DW的整数倍(不是 4 B 的整数倍),则需要用到 Last DW BE和 1st DW BE这两个域。
TLP 格式和类型域编码:
TLPFm t域Type域说 明Memory Read Request(内存读请求)0003 DW,不带数据 0014 DW,不带数据00000内存读不带数据其Header大小为 3 D W 或 4 D WMemory Write Request(内存写请求)0103 DW,带数据 0114 DW,带数据00000内存写带数据其Header大小为 3 D W 或 4 D WConfiguration Type 0 Read Request (Type 0配置读请求)0003 DW,不带数据0.0100读终端的配置不带数据Header 总是为3 DWConfiguration Type 0 Write Request (Type 0配置写请求)0103 DW,带数据00100写终端的配置带数据Header总 是为3 DWConfiguration Type 1 Read Request (Type 1配置读请求)0003 DW,不带数据00101读交换机的配置不带数据Header 总是为3 DWConfiguration Type 1 Write Request (Type 1配置写请求)0103 DW,带数据00101写交换机的配置带数据Header 总是为3 DWMessage Request(消息请求)0014 DW,不带数据1 0rrr消息的Header总是为4 DWMessage Request with Data(带数据 的消息请求)0114 DW,带数据1 0rrr消息的Header总是为4 DWCompletion(响应)0003 DW,不带数据01010响应的Header总是为3 DWCompletion with Data(带数据的晌应)0103 DW,带数据01010响应的Header总是为3 DW
PCIe配置空间和地址空间
每个 PCIe 设备都有这样一段空间主机软件可以通过读取它获得该设备的一些信息 也可以通过它来配置该设备。这段空间被称为PCIe 的配置空间。
PCI 或者 PCI-X 时代就有配置空间的概念当时整个配置空间就是一系列寄存器的集合由两部分组成64 B的 Header 和192 B的 Capability(能力)数据结构。进入PCIe时代PCIe能耐更大192 B不足以罗列它的绝活。为了保持后向兼容又 不把绝活落下把整个配置空间由256 B 扩展成4 KB, 前面256 B 保持不 变。
配置空间的Header中很重要的是BAR(Base Address Register, 基址寄存器)。终端配置 (Type 0) 最多有6个BAR, 交换机 (Type 1) 只有2个。
CPU 如果想访问某个设备的空间让RC 去办。例如如果CPU 想读 PCIe设备的数据先让RC 通过TLP 把数据从PCle 设备读到主机内存然后CPU 从主机 内存读数据如果CPU 要往PCle 设备写数据则先把数据在内存中准备好然后让RC 通 过TLP 将其写人PCle 设备。
具体实现就是上电的时候系统把 PCle 设备开放的空间(系统软件可见)映射到内存 地址空间CPU 要访问该PCIe 设备空间只 需访问对应的内存地址空间。RC 检查该内 存地址如果发现该内存地址是某个PCle 设 备空间的映射就会触发其产生TLP 去访问 对应的PCle 设备从而实现读或者写PCIe 设备.
设备出厂时 这些空间的大小和属性都写在配置BAR 寄存器里面。上电后系统软件读取这些BAR, 并 分配对应的系统内存地址空间然后把相应的内存基地址写回BAR 。 (BAR 的地址其实是 PCI 总线域的地址 CPU 访问的是内存地址。CPU 访问PCle 设备时需要把总线域地址转 换成内存地址。) 上电时系统软件首先会读取 PCle设备的BAR 0, 得到数据,然后系统软 件往该BAR 0中写入全1,BAR 寄存器有些位是只读的是PCIe设备在出厂前就固定好的写全1进去如果值保持不变就说明这些位是厂家固化好的。这些固化好的位提供了这块内部空间的一些信息。
XXXX XXXXXXXX XXXX XXXX000000000000
低4位用于表明该存储空间的一些属性比 如是/O 映射还是内存映射
一个PCIe 设备可能有若干个内部空间需要开放 出来系统软件依次读取 BAR 1 、BAR 2 , 直到BAR 5, 完成所有内部空间的映射。 一个PCIe 设备 可能具有多个功能比如硬盘功能、网卡功能 等每个功能对应一个配置空间。 在整个 PCle 系统中只要知道了总线序号、设备序号和功能序号就能找到唯 一的功能。寻址基本单元是功能它的ID 由总线、设备、功能(BDF) 组成。
这节详细的推荐看书《深入浅出SSD固态存储核心技术、原理与实战第2版》。