SSD PCIe接口综述
发布时间:2024年01月04日
-
SSD 的接口当前以PCIe为主,因为其速度远快于SATA接口。
-
PCIe 特征
- 已经从PCIe1.0发展到了6.0, 其中3.0的双向带宽:单通道(Lane)为2GB/s, 32通道为64GB/s
- 全双工模式,发送和接收通道可以同时工作(SATA为半双工模式)
- PCIe是串行总线,因此速度快于PCI
- 物理层使用128/130编码(即传输128位有效数据外加2为校验数据,也有8b/10b编码方式),传输比率增大
- 可以通过增加通道数扩展带宽,提升速度。但成本和空间占用以及能耗也会随之增加。
- PCI采用总线型拓扑结构,PCIe采用树型拓扑结构,实现点到点(Endpoint to Endpoint)的通信方式
- 交换机扩展了PCIe的端口,并完成数据上下游的转发,每个设备独享通道带宽。
- 每个PCIe设备和交换机都需要实现PCIe的3层结构功能
-
PCIe 分层结构,共分为3层,由上之下依次为:事务层(Transaction Layer),数据链路层(Data Link Layer)和物理层(Physical Layer),下层为上层服务。数据以数据包(Packet)形式传输,每层都有固定格式。数据由事务层生成,发送端向下逐层包装,接收端将数据接收后进行校验,校验错误则通知重传,校验正确则逐层解开包装,向上层传递。
- 事务层:创建(发送)或者解析(接收)TLP(Transaction Layer Packet)、流量控制、QoS、事务排序等。
- 数据链路层:创建(发送)或者解析(接收)DLLP(Data Link Layer Packet)、ACK/NAK协议(链路层检错和纠错)、流控、电源管理等。
- 物理层:处理所有数据包中数据的物理传输,发送端将数据分发到各个Lane中进行传输,接收端将各个Lane上的数据进行汇总,并进行加扰,去扰,8/10或128/130编码解码等工作。
-
PCIe TLP数据。事务层可以产生4种不同的TLP请求:
- 内存(Memory),用于访问内存空间
- I/O,用于访问I/O空间,主要为了兼容以前的旧设备,后续会逐渐取消
- 配置(Configuration),用于访问配置空间,并非常态,一般只发生在上电枚举和配置阶段
- 消息(Message),终端消息,错误消息等内容,非主流,只有在中断或有错误的情况下发送消息
- TLP分为Non-posted 和Posted两种,前者是需要对方响应的,后者不需要对方响应。内存写和消息不需要响应,其他都需要响应。
- 一个TLP最多携带4KB有效数据。
-
TLP数据结构: Header+data+ECRC
- TLP的header分类:内存,配置,消息,响应
- 每个PCIe设备都有唯一的ID,包括RC,交换机和终端
-
PCIe 配置空间
- 每个PCIe设备可能具有多个功能,比如硬盘功能,网卡功能等,因此至少有一个配置空间:通过读取该空间数据,可以获取该设备的基本信息,也可以通过该空间来配置该设备。
- 配置空间是协议规定好的,地址和内容是有定义的。
- 配置空间就是一系列寄存器的集合。64B 的Header和192B 的Capability数据结构 + 3840B 扩展配置空间(合计4KB)
- 一个PCIe系统,可以最多有256条总线,每个总线上最多可以挂32个设备,每个设备最多可以实现8个功能,每个功能对应4KB的配置空间。
-
PCIe共有3种路由方式:
- 基于地址(Memory Address)的路由
- 基于设备ID(BDF)的路由
- 隐式(Implicit)路由
文章来源:https://blog.csdn.net/lanseliuxing/article/details/135388642
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:chenni525@qq.com进行投诉反馈,一经查实,立即删除!